From 7f4b2da130421f9de44ae79b20f289d51859032d Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 12 Nov 2024 15:01:27 -0800 Subject: [PATCH 001/104] Update antlr gramma --- .../stream/PgsqlKafkaProxyFactory.java | 4 +- .../binding-pgsql/gen/PostgreSqlLexer.interp | 2086 +++++++ .../binding-pgsql/gen/PostgreSqlLexer.java | 5269 +++++++++++++++++ .../binding-pgsql/gen/PostgreSqlLexer.tokens | 1322 +++++ .../binding/pgsql/parser/PostgreSqlLexer.g4 | 6 +- .../binding/pgsql/parser/PostgreSqlParser.g4 | 25 +- .../pgsql/parser/gen/PostgreSqlLexer.interp | 2086 +++++++ .../pgsql/parser/gen/PostgreSqlLexer.tokens | 1322 +++++ .../binding/pgsql/parser/PgsqlParser.java | 40 +- ...java => SqlAlterZStreamTopicListener.java} | 8 +- ....java => SqlAlterZTableTopicListener.java} | 4 +- .../parser/listener/SqlCommandListener.java | 16 +- ...ner.java => SqlCreateZStreamListener.java} | 8 +- ...java => SqlCreateZTableTopicListener.java} | 4 +- ...tener.java => SqlCreateZViewListener.java} | 8 +- .../binding/pgsql/parser/PgsqlParserTest.java | 148 +- .../stream/RisingwaveProxyFactory.java | 10 +- pom.xml | 3 +- 18 files changed, 12235 insertions(+), 134 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 create mode 100644 incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.interp create mode 100644 incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.tokens rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/{SqlAlterStreamTopicListener.java => SqlAlterZStreamTopicListener.java} (93%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/{SqlAlterTableTopicListener.java => SqlAlterZTableTopicListener.java} (96%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/{SqlCreateStreamListener.java => SqlCreateZStreamListener.java} (90%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/{SqlCreateTableTopicListener.java => SqlCreateZTableTopicListener.java} (96%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/{SqlCreateMaterializedViewListener.java => SqlCreateZViewListener.java} (87%) 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 16d8ed2b25..aeb9ea030c 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 @@ -1335,7 +1335,7 @@ private void decodeCreateTopicCommand( } else if (server.commandsProcessed == 0) { - final Table createTopic = parser.parseCreateTable(statement); + final Table createTopic = parser.parseCreateZTable(statement); final String topic = createTopic.name(); topics.clear(); @@ -1385,7 +1385,7 @@ private void decodeAlterTopicCommand( long authorization, String statement) { - final Alter alter = parser.parseAlterTable(statement); + final Alter alter = parser.parseAlterZTable(statement); final String topic = alter.name(); topics.clear(); diff --git a/incubator/binding-pgsql/gen/PostgreSqlLexer.interp b/incubator/binding-pgsql/gen/PostgreSqlLexer.interp new file mode 100644 index 0000000000..09c286606c --- /dev/null +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.interp @@ -0,0 +1,2086 @@ +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' +'ZSTREAM' +'ZTABLE' +'ZVIEW' +'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 +ZSTREAM +ZTABLE +ZVIEW +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 +ZSTREAM +ZTABLE +ZVIEW +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, 683, 6826, 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, 2, 697, 7, 697, 2, 698, 7, 698, 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, 1469, 8, 27, 11, 27, 12, 27, 1470, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1477, 8, 28, 11, 28, 12, 28, 1478, 1, 28, 1, 28, 1, 28, 3, 28, 1484, 8, 28, 1, 28, 1, 28, 4, 28, 1488, 8, 28, 11, 28, 12, 28, 1489, 1, 28, 3, 28, 1493, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1502, 8, 29, 10, 29, 12, 29, 1505, 9, 29, 1, 29, 1, 29, 3, 29, 1509, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1514, 8, 29, 11, 29, 12, 29, 1515, 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, 99, 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, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 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, 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, 113, 1, 113, 1, 113, 1, 113, 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, 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, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 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, 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, 129, 1, 129, 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, 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, 132, 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, 134, 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, 137, 1, 137, 1, 137, 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, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 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, 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, 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, 147, 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, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 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, 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, 154, 1, 154, 1, 154, 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, 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, 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, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 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, 162, 1, 162, 1, 162, 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, 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, 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, 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, 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, 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, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 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, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 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, 184, 1, 184, 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, 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, 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, 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, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 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, 194, 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, 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, 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, 201, 1, 201, 1, 201, 1, 202, 1, 202, 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, 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, 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, 208, 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, 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, 212, 1, 212, 1, 212, 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, 215, 1, 215, 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, 218, 1, 219, 1, 219, 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, 221, 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, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 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, 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, 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, 231, 1, 231, 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, 232, 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, 235, 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, 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, 238, 1, 238, 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, 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, 242, 1, 242, 1, 242, 1, 242, 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, 245, 1, 245, 1, 245, 1, 245, 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, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 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, 253, 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, 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, 258, 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, 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, 261, 1, 261, 1, 262, 1, 262, 1, 262, 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, 264, 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, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 270, 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, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 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, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 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, 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, 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, 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, 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, 289, 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, 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, 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, 294, 1, 295, 1, 295, 1, 295, 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, 296, 1, 296, 1, 296, 1, 296, 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, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 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, 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, 303, 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, 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, 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, 309, 1, 310, 1, 310, 1, 310, 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, 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, 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, 315, 1, 315, 1, 316, 1, 316, 1, 316, 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, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 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, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 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, 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, 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, 329, 1, 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 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, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 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, 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, 339, 1, 339, 1, 339, 1, 339, 1, 339, 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, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 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, 344, 1, 345, 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, 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, 350, 1, 350, 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, 351, 1, 351, 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, 353, 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, 356, 1, 356, 1, 356, 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, 358, 1, 358, 1, 358, 1, 358, 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, 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, 363, 1, 363, 1, 363, 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, 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, 366, 1, 366, 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, 367, 1, 367, 1, 367, 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, 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, 372, 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, 373, 1, 373, 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, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 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, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 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, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 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, 389, 1, 389, 1, 389, 1, 389, 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, 392, 1, 392, 1, 392, 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, 393, 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, 396, 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, 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, 402, 1, 402, 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, 405, 1, 405, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 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, 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, 411, 1, 411, 1, 411, 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, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, 414, 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, 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, 419, 1, 419, 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, 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, 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, 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, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 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, 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, 429, 1, 429, 1, 429, 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, 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, 433, 1, 434, 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, 435, 1, 435, 1, 435, 1, 435, 1, 436, 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, 438, 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, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 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, 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, 444, 1, 444, 1, 444, 1, 445, 1, 445, 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, 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, 449, 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, 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, 453, 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, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 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, 458, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 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, 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, 463, 1, 463, 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, 464, 1, 464, 1, 464, 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, 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, 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, 470, 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, 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, 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, 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, 480, 1, 480, 1, 480, 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, 483, 1, 483, 1, 483, 1, 484, 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, 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, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 490, 1, 490, 1, 490, 1, 490, 1, 491, 1, 491, 1, 491, 1, 491, 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, 495, 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, 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, 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, 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, 501, 1, 501, 1, 501, 1, 501, 1, 501, 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, 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, 504, 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, 505, 1, 505, 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, 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, 510, 1, 511, 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, 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, 515, 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, 517, 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, 518, 1, 518, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 520, 1, 520, 1, 520, 1, 520, 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, 523, 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, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 525, 1, 525, 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, 528, 1, 528, 1, 528, 1, 528, 1, 529, 1, 529, 1, 529, 1, 529, 1, 529, 1, 530, 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, 532, 1, 532, 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, 535, 1, 535, 1, 535, 1, 535, 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, 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, 541, 1, 541, 1, 542, 1, 542, 1, 542, 1, 542, 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, 545, 1, 545, 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, 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, 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, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 554, 1, 554, 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, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 562, 1, 562, 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, 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, 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, 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, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 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, 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, 581, 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, 583, 1, 583, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 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, 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, 589, 1, 589, 1, 589, 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, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 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, 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, 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, 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, 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, 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, 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, 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, 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, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 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, 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, 609, 1, 609, 1, 609, 1, 609, 1, 609, 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, 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, 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, 614, 1, 614, 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, 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, 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, 619, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 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, 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, 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, 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, 628, 1, 628, 1, 628, 1, 628, 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, 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, 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, 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, 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, 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, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 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, 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, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 643, 1, 643, 5, 643, 6358, 8, 643, 10, 643, 12, 643, 6361, 9, 643, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 3, 644, 6369, 8, 644, 1, 645, 1, 645, 3, 645, 6373, 8, 645, 1, 646, 1, 646, 3, 646, 6377, 8, 646, 1, 647, 1, 647, 1, 647, 1, 648, 1, 648, 1, 648, 1, 648, 5, 648, 6386, 8, 648, 10, 648, 12, 648, 6389, 9, 648, 1, 649, 1, 649, 1, 649, 1, 650, 1, 650, 1, 650, 1, 650, 5, 650, 6398, 8, 650, 10, 650, 12, 650, 6401, 9, 650, 1, 651, 1, 651, 1, 651, 1, 651, 1, 652, 1, 652, 1, 652, 1, 652, 1, 653, 1, 653, 1, 653, 1, 653, 1, 654, 1, 654, 1, 654, 1, 654, 1, 655, 1, 655, 1, 655, 1, 656, 1, 656, 1, 656, 1, 656, 5, 656, 6426, 8, 656, 10, 656, 12, 656, 6429, 9, 656, 1, 657, 1, 657, 1, 657, 1, 657, 1, 657, 1, 657, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 1, 659, 1, 659, 1, 660, 1, 660, 3, 660, 6446, 8, 660, 1, 660, 1, 660, 1, 660, 1, 660, 1, 660, 1, 661, 1, 661, 5, 661, 6455, 8, 661, 10, 661, 12, 661, 6458, 9, 661, 1, 662, 1, 662, 1, 662, 1, 663, 1, 663, 1, 663, 5, 663, 6466, 8, 663, 10, 663, 12, 663, 6469, 9, 663, 1, 664, 1, 664, 1, 664, 1, 665, 1, 665, 1, 665, 1, 666, 1, 666, 1, 666, 1, 667, 1, 667, 1, 667, 5, 667, 6483, 8, 667, 10, 667, 12, 667, 6486, 9, 667, 1, 668, 1, 668, 1, 668, 1, 669, 1, 669, 1, 669, 1, 670, 1, 670, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 672, 1, 672, 1, 672, 3, 672, 6505, 8, 672, 1, 672, 1, 672, 3, 672, 6509, 8, 672, 1, 672, 3, 672, 6512, 8, 672, 1, 672, 1, 672, 1, 672, 1, 672, 3, 672, 6518, 8, 672, 1, 672, 3, 672, 6521, 8, 672, 1, 672, 1, 672, 1, 672, 3, 672, 6526, 8, 672, 1, 672, 1, 672, 3, 672, 6530, 8, 672, 1, 673, 4, 673, 6533, 8, 673, 11, 673, 12, 673, 6534, 1, 674, 1, 674, 1, 674, 5, 674, 6540, 8, 674, 10, 674, 12, 674, 6543, 9, 674, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 5, 675, 6553, 8, 675, 10, 675, 12, 675, 6556, 9, 675, 1, 675, 1, 675, 1, 676, 4, 676, 6561, 8, 676, 11, 676, 12, 676, 6562, 1, 676, 1, 676, 1, 677, 1, 677, 3, 677, 6569, 8, 677, 1, 677, 3, 677, 6572, 8, 677, 1, 677, 1, 677, 1, 678, 1, 678, 1, 678, 1, 678, 5, 678, 6580, 8, 678, 10, 678, 12, 678, 6583, 9, 678, 1, 678, 1, 678, 1, 679, 1, 679, 1, 679, 1, 679, 5, 679, 6591, 8, 679, 10, 679, 12, 679, 6594, 9, 679, 1, 679, 1, 679, 1, 679, 4, 679, 6599, 8, 679, 11, 679, 12, 679, 6600, 1, 679, 1, 679, 4, 679, 6605, 8, 679, 11, 679, 12, 679, 6606, 1, 679, 5, 679, 6610, 8, 679, 10, 679, 12, 679, 6613, 9, 679, 1, 679, 5, 679, 6616, 8, 679, 10, 679, 12, 679, 6619, 9, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 680, 1, 680, 1, 680, 1, 680, 5, 680, 6630, 8, 680, 10, 680, 12, 680, 6633, 9, 680, 1, 680, 1, 680, 1, 680, 4, 680, 6638, 8, 680, 11, 680, 12, 680, 6639, 1, 680, 1, 680, 4, 680, 6644, 8, 680, 11, 680, 12, 680, 6645, 1, 680, 3, 680, 6649, 8, 680, 5, 680, 6651, 8, 680, 10, 680, 12, 680, 6654, 9, 680, 1, 680, 4, 680, 6657, 8, 680, 11, 680, 12, 680, 6658, 1, 680, 4, 680, 6662, 8, 680, 11, 680, 12, 680, 6663, 1, 680, 5, 680, 6667, 8, 680, 10, 680, 12, 680, 6670, 9, 680, 1, 680, 3, 680, 6673, 8, 680, 1, 680, 1, 680, 1, 681, 1, 681, 1, 681, 1, 681, 5, 681, 6681, 8, 681, 10, 681, 12, 681, 6684, 9, 681, 1, 681, 5, 681, 6687, 8, 681, 10, 681, 12, 681, 6690, 9, 681, 1, 681, 1, 681, 5, 681, 6694, 8, 681, 10, 681, 12, 681, 6697, 9, 681, 3, 681, 6699, 8, 681, 1, 682, 1, 682, 1, 682, 1, 683, 1, 683, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 685, 1, 685, 3, 685, 6713, 8, 685, 1, 685, 1, 685, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 3, 686, 6737, 8, 686, 1, 686, 5, 686, 6740, 8, 686, 10, 686, 12, 686, 6743, 9, 686, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 688, 1, 688, 3, 688, 6752, 8, 688, 1, 688, 1, 688, 1, 689, 1, 689, 1, 689, 1, 689, 1, 689, 5, 689, 6761, 8, 689, 10, 689, 12, 689, 6764, 9, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 691, 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, 1, 695, 1, 695, 1, 695, 1, 695, 1, 696, 1, 696, 1, 696, 1, 696, 1, 696, 1, 697, 4, 697, 6803, 8, 697, 11, 697, 12, 697, 6804, 1, 697, 1, 697, 5, 697, 6809, 8, 697, 10, 697, 12, 697, 6812, 9, 697, 3, 697, 6814, 8, 697, 1, 698, 1, 698, 3, 698, 6818, 8, 698, 1, 698, 1, 698, 1, 698, 1, 698, 1, 698, 1, 698, 1, 698, 0, 0, 699, 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, 639, 1291, 640, 1293, 0, 1295, 0, 1297, 0, 1299, 641, 1301, 642, 1303, 643, 1305, 644, 1307, 645, 1309, 646, 1311, 647, 1313, 648, 1315, 649, 1317, 650, 1319, 0, 1321, 651, 1323, 652, 1325, 653, 1327, 0, 1329, 654, 1331, 655, 1333, 656, 1335, 657, 1337, 658, 1339, 659, 1341, 660, 1343, 661, 1345, 662, 1347, 663, 1349, 664, 1351, 0, 1353, 665, 1355, 666, 1357, 667, 1359, 668, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 673, 1371, 674, 1373, 675, 1375, 676, 1377, 0, 1379, 677, 1381, 678, 1383, 0, 1385, 0, 1387, 0, 1389, 679, 1391, 0, 1393, 0, 1395, 683, 1397, 680, 1399, 681, 1401, 682, 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, 87, 87, 119, 119, 2, 0, 81, 81, 113, 113, 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, 6898, 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, 1289, 1, 0, 0, 0, 0, 1291, 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, 1323, 1, 0, 0, 0, 0, 1325, 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, 1347, 1, 0, 0, 0, 0, 1349, 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, 0, 1369, 1, 0, 0, 0, 0, 1371, 1, 0, 0, 0, 1, 1373, 1, 0, 0, 0, 1, 1375, 1, 0, 0, 0, 1, 1379, 1, 0, 0, 0, 1, 1381, 1, 0, 0, 0, 2, 1385, 1, 0, 0, 0, 2, 1387, 1, 0, 0, 0, 2, 1389, 1, 0, 0, 0, 3, 1391, 1, 0, 0, 0, 3, 1393, 1, 0, 0, 0, 3, 1395, 1, 0, 0, 0, 3, 1397, 1, 0, 0, 0, 4, 1399, 1, 0, 0, 0, 4, 1401, 1, 0, 0, 0, 5, 1403, 1, 0, 0, 0, 7, 1405, 1, 0, 0, 0, 9, 1407, 1, 0, 0, 0, 11, 1409, 1, 0, 0, 0, 13, 1411, 1, 0, 0, 0, 15, 1413, 1, 0, 0, 0, 17, 1415, 1, 0, 0, 0, 19, 1417, 1, 0, 0, 0, 21, 1419, 1, 0, 0, 0, 23, 1421, 1, 0, 0, 0, 25, 1423, 1, 0, 0, 0, 27, 1425, 1, 0, 0, 0, 29, 1427, 1, 0, 0, 0, 31, 1429, 1, 0, 0, 0, 33, 1431, 1, 0, 0, 0, 35, 1433, 1, 0, 0, 0, 37, 1435, 1, 0, 0, 0, 39, 1437, 1, 0, 0, 0, 41, 1440, 1, 0, 0, 0, 43, 1443, 1, 0, 0, 0, 45, 1446, 1, 0, 0, 0, 47, 1449, 1, 0, 0, 0, 49, 1452, 1, 0, 0, 0, 51, 1455, 1, 0, 0, 0, 53, 1458, 1, 0, 0, 0, 55, 1461, 1, 0, 0, 0, 57, 1464, 1, 0, 0, 0, 59, 1466, 1, 0, 0, 0, 61, 1492, 1, 0, 0, 0, 63, 1503, 1, 0, 0, 0, 65, 1519, 1, 0, 0, 0, 67, 1521, 1, 0, 0, 0, 69, 1523, 1, 0, 0, 0, 71, 1525, 1, 0, 0, 0, 73, 1529, 1, 0, 0, 0, 75, 1537, 1, 0, 0, 0, 77, 1545, 1, 0, 0, 0, 79, 1549, 1, 0, 0, 0, 81, 1553, 1, 0, 0, 0, 83, 1559, 1, 0, 0, 0, 85, 1562, 1, 0, 0, 0, 87, 1566, 1, 0, 0, 0, 89, 1577, 1, 0, 0, 0, 91, 1582, 1, 0, 0, 0, 93, 1587, 1, 0, 0, 0, 95, 1592, 1, 0, 0, 0, 97, 1598, 1, 0, 0, 0, 99, 1606, 1, 0, 0, 0, 101, 1613, 1, 0, 0, 0, 103, 1624, 1, 0, 0, 0, 105, 1631, 1, 0, 0, 0, 107, 1647, 1, 0, 0, 0, 109, 1660, 1, 0, 0, 0, 111, 1673, 1, 0, 0, 0, 113, 1686, 1, 0, 0, 0, 115, 1704, 1, 0, 0, 0, 117, 1717, 1, 0, 0, 0, 119, 1725, 1, 0, 0, 0, 121, 1736, 1, 0, 0, 0, 123, 1741, 1, 0, 0, 0, 125, 1750, 1, 0, 0, 0, 127, 1753, 1, 0, 0, 0, 129, 1758, 1, 0, 0, 0, 131, 1765, 1, 0, 0, 0, 133, 1771, 1, 0, 0, 0, 135, 1777, 1, 0, 0, 0, 137, 1781, 1, 0, 0, 0, 139, 1789, 1, 0, 0, 0, 141, 1794, 1, 0, 0, 0, 143, 1800, 1, 0, 0, 0, 145, 1806, 1, 0, 0, 0, 147, 1813, 1, 0, 0, 0, 149, 1816, 1, 0, 0, 0, 151, 1826, 1, 0, 0, 0, 153, 1836, 1, 0, 0, 0, 155, 1841, 1, 0, 0, 0, 157, 1849, 1, 0, 0, 0, 159, 1857, 1, 0, 0, 0, 161, 1863, 1, 0, 0, 0, 163, 1873, 1, 0, 0, 0, 165, 1888, 1, 0, 0, 0, 167, 1892, 1, 0, 0, 0, 169, 1897, 1, 0, 0, 0, 171, 1904, 1, 0, 0, 0, 173, 1907, 1, 0, 0, 0, 175, 1912, 1, 0, 0, 0, 177, 1915, 1, 0, 0, 0, 179, 1921, 1, 0, 0, 0, 181, 1929, 1, 0, 0, 0, 183, 1937, 1, 0, 0, 0, 185, 1948, 1, 0, 0, 0, 187, 1958, 1, 0, 0, 0, 189, 1965, 1, 0, 0, 0, 191, 1978, 1, 0, 0, 0, 193, 1983, 1, 0, 0, 0, 195, 1993, 1, 0, 0, 0, 197, 1999, 1, 0, 0, 0, 199, 2004, 1, 0, 0, 0, 201, 2007, 1, 0, 0, 0, 203, 2013, 1, 0, 0, 0, 205, 2021, 1, 0, 0, 0, 207, 2028, 1, 0, 0, 0, 209, 2034, 1, 0, 0, 0, 211, 2043, 1, 0, 0, 0, 213, 2048, 1, 0, 0, 0, 215, 2054, 1, 0, 0, 0, 217, 2061, 1, 0, 0, 0, 219, 2066, 1, 0, 0, 0, 221, 2072, 1, 0, 0, 0, 223, 2081, 1, 0, 0, 0, 225, 2086, 1, 0, 0, 0, 227, 2092, 1, 0, 0, 0, 229, 2099, 1, 0, 0, 0, 231, 2104, 1, 0, 0, 0, 233, 2118, 1, 0, 0, 0, 235, 2125, 1, 0, 0, 0, 237, 2135, 1, 0, 0, 0, 239, 2148, 1, 0, 0, 0, 241, 2154, 1, 0, 0, 0, 243, 2169, 1, 0, 0, 0, 245, 2176, 1, 0, 0, 0, 247, 2181, 1, 0, 0, 0, 249, 2187, 1, 0, 0, 0, 251, 2193, 1, 0, 0, 0, 253, 2196, 1, 0, 0, 0, 255, 2203, 1, 0, 0, 0, 257, 2208, 1, 0, 0, 0, 259, 2213, 1, 0, 0, 0, 261, 2218, 1, 0, 0, 0, 263, 2226, 1, 0, 0, 0, 265, 2234, 1, 0, 0, 0, 267, 2240, 1, 0, 0, 0, 269, 2245, 1, 0, 0, 0, 271, 2254, 1, 0, 0, 0, 273, 2260, 1, 0, 0, 0, 275, 2268, 1, 0, 0, 0, 277, 2276, 1, 0, 0, 0, 279, 2282, 1, 0, 0, 0, 281, 2291, 1, 0, 0, 0, 283, 2298, 1, 0, 0, 0, 285, 2305, 1, 0, 0, 0, 287, 2309, 1, 0, 0, 0, 289, 2315, 1, 0, 0, 0, 291, 2321, 1, 0, 0, 0, 293, 2331, 1, 0, 0, 0, 295, 2336, 1, 0, 0, 0, 297, 2342, 1, 0, 0, 0, 299, 2349, 1, 0, 0, 0, 301, 2359, 1, 0, 0, 0, 303, 2370, 1, 0, 0, 0, 305, 2373, 1, 0, 0, 0, 307, 2383, 1, 0, 0, 0, 309, 2392, 1, 0, 0, 0, 311, 2399, 1, 0, 0, 0, 313, 2405, 1, 0, 0, 0, 315, 2408, 1, 0, 0, 0, 317, 2414, 1, 0, 0, 0, 319, 2421, 1, 0, 0, 0, 321, 2429, 1, 0, 0, 0, 323, 2438, 1, 0, 0, 0, 325, 2446, 1, 0, 0, 0, 327, 2452, 1, 0, 0, 0, 329, 2468, 1, 0, 0, 0, 331, 2479, 1, 0, 0, 0, 333, 2485, 1, 0, 0, 0, 335, 2491, 1, 0, 0, 0, 337, 2499, 1, 0, 0, 0, 339, 2507, 1, 0, 0, 0, 341, 2516, 1, 0, 0, 0, 343, 2523, 1, 0, 0, 0, 345, 2533, 1, 0, 0, 0, 347, 2547, 1, 0, 0, 0, 349, 2558, 1, 0, 0, 0, 351, 2570, 1, 0, 0, 0, 353, 2578, 1, 0, 0, 0, 355, 2587, 1, 0, 0, 0, 357, 2598, 1, 0, 0, 0, 359, 2603, 1, 0, 0, 0, 361, 2608, 1, 0, 0, 0, 363, 2612, 1, 0, 0, 0, 365, 2619, 1, 0, 0, 0, 367, 2625, 1, 0, 0, 0, 369, 2630, 1, 0, 0, 0, 371, 2639, 1, 0, 0, 0, 373, 2643, 1, 0, 0, 0, 375, 2654, 1, 0, 0, 0, 377, 2662, 1, 0, 0, 0, 379, 2671, 1, 0, 0, 0, 381, 2680, 1, 0, 0, 0, 383, 2688, 1, 0, 0, 0, 385, 2695, 1, 0, 0, 0, 387, 2705, 1, 0, 0, 0, 389, 2716, 1, 0, 0, 0, 391, 2727, 1, 0, 0, 0, 393, 2735, 1, 0, 0, 0, 395, 2743, 1, 0, 0, 0, 397, 2752, 1, 0, 0, 0, 399, 2759, 1, 0, 0, 0, 401, 2766, 1, 0, 0, 0, 403, 2771, 1, 0, 0, 0, 405, 2776, 1, 0, 0, 0, 407, 2783, 1, 0, 0, 0, 409, 2792, 1, 0, 0, 0, 411, 2802, 1, 0, 0, 0, 413, 2807, 1, 0, 0, 0, 415, 2814, 1, 0, 0, 0, 417, 2820, 1, 0, 0, 0, 419, 2828, 1, 0, 0, 0, 421, 2838, 1, 0, 0, 0, 423, 2848, 1, 0, 0, 0, 425, 2856, 1, 0, 0, 0, 427, 2864, 1, 0, 0, 0, 429, 2874, 1, 0, 0, 0, 431, 2883, 1, 0, 0, 0, 433, 2890, 1, 0, 0, 0, 435, 2896, 1, 0, 0, 0, 437, 2906, 1, 0, 0, 0, 439, 2912, 1, 0, 0, 0, 441, 2920, 1, 0, 0, 0, 443, 2929, 1, 0, 0, 0, 445, 2939, 1, 0, 0, 0, 447, 2946, 1, 0, 0, 0, 449, 2954, 1, 0, 0, 0, 451, 2962, 1, 0, 0, 0, 453, 2969, 1, 0, 0, 0, 455, 2974, 1, 0, 0, 0, 457, 2979, 1, 0, 0, 0, 459, 2988, 1, 0, 0, 0, 461, 2991, 1, 0, 0, 0, 463, 3001, 1, 0, 0, 0, 465, 3011, 1, 0, 0, 0, 467, 3020, 1, 0, 0, 0, 469, 3030, 1, 0, 0, 0, 471, 3040, 1, 0, 0, 0, 473, 3046, 1, 0, 0, 0, 475, 3054, 1, 0, 0, 0, 477, 3062, 1, 0, 0, 0, 479, 3071, 1, 0, 0, 0, 481, 3078, 1, 0, 0, 0, 483, 3090, 1, 0, 0, 0, 485, 3097, 1, 0, 0, 0, 487, 3105, 1, 0, 0, 0, 489, 3113, 1, 0, 0, 0, 491, 3123, 1, 0, 0, 0, 493, 3127, 1, 0, 0, 0, 495, 3133, 1, 0, 0, 0, 497, 3142, 1, 0, 0, 0, 499, 3148, 1, 0, 0, 0, 501, 3153, 1, 0, 0, 0, 503, 3163, 1, 0, 0, 0, 505, 3169, 1, 0, 0, 0, 507, 3176, 1, 0, 0, 0, 509, 3181, 1, 0, 0, 0, 511, 3187, 1, 0, 0, 0, 513, 3196, 1, 0, 0, 0, 515, 3201, 1, 0, 0, 0, 517, 3209, 1, 0, 0, 0, 519, 3215, 1, 0, 0, 0, 521, 3223, 1, 0, 0, 0, 523, 3236, 1, 0, 0, 0, 525, 3245, 1, 0, 0, 0, 527, 3251, 1, 0, 0, 0, 529, 3258, 1, 0, 0, 0, 531, 3267, 1, 0, 0, 0, 533, 3272, 1, 0, 0, 0, 535, 3278, 1, 0, 0, 0, 537, 3283, 1, 0, 0, 0, 539, 3288, 1, 0, 0, 0, 541, 3294, 1, 0, 0, 0, 543, 3299, 1, 0, 0, 0, 545, 3302, 1, 0, 0, 0, 547, 3310, 1, 0, 0, 0, 549, 3317, 1, 0, 0, 0, 551, 3324, 1, 0, 0, 0, 553, 3330, 1, 0, 0, 0, 555, 3337, 1, 0, 0, 0, 557, 3340, 1, 0, 0, 0, 559, 3344, 1, 0, 0, 0, 561, 3349, 1, 0, 0, 0, 563, 3358, 1, 0, 0, 0, 565, 3365, 1, 0, 0, 0, 567, 3373, 1, 0, 0, 0, 569, 3379, 1, 0, 0, 0, 571, 3385, 1, 0, 0, 0, 573, 3392, 1, 0, 0, 0, 575, 3400, 1, 0, 0, 0, 577, 3410, 1, 0, 0, 0, 579, 3418, 1, 0, 0, 0, 581, 3427, 1, 0, 0, 0, 583, 3433, 1, 0, 0, 0, 585, 3443, 1, 0, 0, 0, 587, 3451, 1, 0, 0, 0, 589, 3460, 1, 0, 0, 0, 591, 3469, 1, 0, 0, 0, 593, 3475, 1, 0, 0, 0, 595, 3486, 1, 0, 0, 0, 597, 3497, 1, 0, 0, 0, 599, 3507, 1, 0, 0, 0, 601, 3515, 1, 0, 0, 0, 603, 3521, 1, 0, 0, 0, 605, 3527, 1, 0, 0, 0, 607, 3532, 1, 0, 0, 0, 609, 3541, 1, 0, 0, 0, 611, 3549, 1, 0, 0, 0, 613, 3559, 1, 0, 0, 0, 615, 3563, 1, 0, 0, 0, 617, 3571, 1, 0, 0, 0, 619, 3579, 1, 0, 0, 0, 621, 3588, 1, 0, 0, 0, 623, 3596, 1, 0, 0, 0, 625, 3603, 1, 0, 0, 0, 627, 3614, 1, 0, 0, 0, 629, 3622, 1, 0, 0, 0, 631, 3630, 1, 0, 0, 0, 633, 3636, 1, 0, 0, 0, 635, 3644, 1, 0, 0, 0, 637, 3653, 1, 0, 0, 0, 639, 3661, 1, 0, 0, 0, 641, 3668, 1, 0, 0, 0, 643, 3673, 1, 0, 0, 0, 645, 3682, 1, 0, 0, 0, 647, 3687, 1, 0, 0, 0, 649, 3692, 1, 0, 0, 0, 651, 3702, 1, 0, 0, 0, 653, 3709, 1, 0, 0, 0, 655, 3716, 1, 0, 0, 0, 657, 3723, 1, 0, 0, 0, 659, 3730, 1, 0, 0, 0, 661, 3739, 1, 0, 0, 0, 663, 3748, 1, 0, 0, 0, 665, 3758, 1, 0, 0, 0, 667, 3771, 1, 0, 0, 0, 669, 3778, 1, 0, 0, 0, 671, 3786, 1, 0, 0, 0, 673, 3790, 1, 0, 0, 0, 675, 3796, 1, 0, 0, 0, 677, 3801, 1, 0, 0, 0, 679, 3808, 1, 0, 0, 0, 681, 3817, 1, 0, 0, 0, 683, 3824, 1, 0, 0, 0, 685, 3835, 1, 0, 0, 0, 687, 3841, 1, 0, 0, 0, 689, 3851, 1, 0, 0, 0, 691, 3862, 1, 0, 0, 0, 693, 3868, 1, 0, 0, 0, 695, 3875, 1, 0, 0, 0, 697, 3883, 1, 0, 0, 0, 699, 3890, 1, 0, 0, 0, 701, 3896, 1, 0, 0, 0, 703, 3902, 1, 0, 0, 0, 705, 3909, 1, 0, 0, 0, 707, 3916, 1, 0, 0, 0, 709, 3927, 1, 0, 0, 0, 711, 3932, 1, 0, 0, 0, 713, 3941, 1, 0, 0, 0, 715, 3951, 1, 0, 0, 0, 717, 3956, 1, 0, 0, 0, 719, 3968, 1, 0, 0, 0, 721, 3976, 1, 0, 0, 0, 723, 3985, 1, 0, 0, 0, 725, 3993, 1, 0, 0, 0, 727, 3998, 1, 0, 0, 0, 729, 4004, 1, 0, 0, 0, 731, 4014, 1, 0, 0, 0, 733, 4026, 1, 0, 0, 0, 735, 4038, 1, 0, 0, 0, 737, 4046, 1, 0, 0, 0, 739, 4055, 1, 0, 0, 0, 741, 4064, 1, 0, 0, 0, 743, 4070, 1, 0, 0, 0, 745, 4077, 1, 0, 0, 0, 747, 4084, 1, 0, 0, 0, 749, 4090, 1, 0, 0, 0, 751, 4099, 1, 0, 0, 0, 753, 4109, 1, 0, 0, 0, 755, 4117, 1, 0, 0, 0, 757, 4125, 1, 0, 0, 0, 759, 4130, 1, 0, 0, 0, 761, 4139, 1, 0, 0, 0, 763, 4150, 1, 0, 0, 0, 765, 4158, 1, 0, 0, 0, 767, 4163, 1, 0, 0, 0, 769, 4171, 1, 0, 0, 0, 771, 4177, 1, 0, 0, 0, 773, 4181, 1, 0, 0, 0, 775, 4186, 1, 0, 0, 0, 777, 4190, 1, 0, 0, 0, 779, 4195, 1, 0, 0, 0, 781, 4203, 1, 0, 0, 0, 783, 4210, 1, 0, 0, 0, 785, 4214, 1, 0, 0, 0, 787, 4222, 1, 0, 0, 0, 789, 4227, 1, 0, 0, 0, 791, 4237, 1, 0, 0, 0, 793, 4246, 1, 0, 0, 0, 795, 4250, 1, 0, 0, 0, 797, 4258, 1, 0, 0, 0, 799, 4265, 1, 0, 0, 0, 801, 4273, 1, 0, 0, 0, 803, 4279, 1, 0, 0, 0, 805, 4288, 1, 0, 0, 0, 807, 4294, 1, 0, 0, 0, 809, 4298, 1, 0, 0, 0, 811, 4306, 1, 0, 0, 0, 813, 4315, 1, 0, 0, 0, 815, 4321, 1, 0, 0, 0, 817, 4330, 1, 0, 0, 0, 819, 4336, 1, 0, 0, 0, 821, 4341, 1, 0, 0, 0, 823, 4348, 1, 0, 0, 0, 825, 4356, 1, 0, 0, 0, 827, 4364, 1, 0, 0, 0, 829, 4373, 1, 0, 0, 0, 831, 4383, 1, 0, 0, 0, 833, 4388, 1, 0, 0, 0, 835, 4392, 1, 0, 0, 0, 837, 4398, 1, 0, 0, 0, 839, 4407, 1, 0, 0, 0, 841, 4417, 1, 0, 0, 0, 843, 4422, 1, 0, 0, 0, 845, 4432, 1, 0, 0, 0, 847, 4438, 1, 0, 0, 0, 849, 4443, 1, 0, 0, 0, 851, 4450, 1, 0, 0, 0, 853, 4458, 1, 0, 0, 0, 855, 4472, 1, 0, 0, 0, 857, 4483, 1, 0, 0, 0, 859, 4490, 1, 0, 0, 0, 861, 4509, 1, 0, 0, 0, 863, 4537, 1, 0, 0, 0, 865, 4564, 1, 0, 0, 0, 867, 4570, 1, 0, 0, 0, 869, 4583, 1, 0, 0, 0, 871, 4593, 1, 0, 0, 0, 873, 4604, 1, 0, 0, 0, 875, 4614, 1, 0, 0, 0, 877, 4624, 1, 0, 0, 0, 879, 4633, 1, 0, 0, 0, 881, 4639, 1, 0, 0, 0, 883, 4647, 1, 0, 0, 0, 885, 4660, 1, 0, 0, 0, 887, 4665, 1, 0, 0, 0, 889, 4673, 1, 0, 0, 0, 891, 4680, 1, 0, 0, 0, 893, 4687, 1, 0, 0, 0, 895, 4698, 1, 0, 0, 0, 897, 4708, 1, 0, 0, 0, 899, 4715, 1, 0, 0, 0, 901, 4722, 1, 0, 0, 0, 903, 4730, 1, 0, 0, 0, 905, 4738, 1, 0, 0, 0, 907, 4748, 1, 0, 0, 0, 909, 4755, 1, 0, 0, 0, 911, 4762, 1, 0, 0, 0, 913, 4769, 1, 0, 0, 0, 915, 4781, 1, 0, 0, 0, 917, 4785, 1, 0, 0, 0, 919, 4789, 1, 0, 0, 0, 921, 4795, 1, 0, 0, 0, 923, 4808, 1, 0, 0, 0, 925, 4820, 1, 0, 0, 0, 927, 4824, 1, 0, 0, 0, 929, 4828, 1, 0, 0, 0, 931, 4837, 1, 0, 0, 0, 933, 4845, 1, 0, 0, 0, 935, 4856, 1, 0, 0, 0, 937, 4862, 1, 0, 0, 0, 939, 4870, 1, 0, 0, 0, 941, 4879, 1, 0, 0, 0, 943, 4883, 1, 0, 0, 0, 945, 4891, 1, 0, 0, 0, 947, 4902, 1, 0, 0, 0, 949, 4911, 1, 0, 0, 0, 951, 4916, 1, 0, 0, 0, 953, 4923, 1, 0, 0, 0, 955, 4928, 1, 0, 0, 0, 957, 4935, 1, 0, 0, 0, 959, 4940, 1, 0, 0, 0, 961, 4949, 1, 0, 0, 0, 963, 4954, 1, 0, 0, 0, 965, 4966, 1, 0, 0, 0, 967, 4977, 1, 0, 0, 0, 969, 4986, 1, 0, 0, 0, 971, 4994, 1, 0, 0, 0, 973, 5008, 1, 0, 0, 0, 975, 5016, 1, 0, 0, 0, 977, 5027, 1, 0, 0, 0, 979, 5034, 1, 0, 0, 0, 981, 5041, 1, 0, 0, 0, 983, 5048, 1, 0, 0, 0, 985, 5055, 1, 0, 0, 0, 987, 5059, 1, 0, 0, 0, 989, 5063, 1, 0, 0, 0, 991, 5068, 1, 0, 0, 0, 993, 5073, 1, 0, 0, 0, 995, 5081, 1, 0, 0, 0, 997, 5087, 1, 0, 0, 0, 999, 5097, 1, 0, 0, 0, 1001, 5102, 1, 0, 0, 0, 1003, 5122, 1, 0, 0, 0, 1005, 5140, 1, 0, 0, 0, 1007, 5146, 1, 0, 0, 0, 1009, 5159, 1, 0, 0, 0, 1011, 5170, 1, 0, 0, 0, 1013, 5176, 1, 0, 0, 0, 1015, 5185, 1, 0, 0, 0, 1017, 5193, 1, 0, 0, 0, 1019, 5197, 1, 0, 0, 0, 1021, 5209, 1, 0, 0, 0, 1023, 5217, 1, 0, 0, 0, 1025, 5223, 1, 0, 0, 0, 1027, 5229, 1, 0, 0, 0, 1029, 5237, 1, 0, 0, 0, 1031, 5245, 1, 0, 0, 0, 1033, 5251, 1, 0, 0, 0, 1035, 5256, 1, 0, 0, 0, 1037, 5263, 1, 0, 0, 0, 1039, 5269, 1, 0, 0, 0, 1041, 5275, 1, 0, 0, 0, 1043, 5284, 1, 0, 0, 0, 1045, 5290, 1, 0, 0, 0, 1047, 5294, 1, 0, 0, 0, 1049, 5299, 1, 0, 0, 0, 1051, 5306, 1, 0, 0, 0, 1053, 5314, 1, 0, 0, 0, 1055, 5324, 1, 0, 0, 0, 1057, 5331, 1, 0, 0, 0, 1059, 5336, 1, 0, 0, 0, 1061, 5341, 1, 0, 0, 0, 1063, 5345, 1, 0, 0, 0, 1065, 5350, 1, 0, 0, 0, 1067, 5355, 1, 0, 0, 0, 1069, 5363, 1, 0, 0, 0, 1071, 5371, 1, 0, 0, 0, 1073, 5375, 1, 0, 0, 0, 1075, 5379, 1, 0, 0, 0, 1077, 5389, 1, 0, 0, 0, 1079, 5395, 1, 0, 0, 0, 1081, 5399, 1, 0, 0, 0, 1083, 5403, 1, 0, 0, 0, 1085, 5406, 1, 0, 0, 0, 1087, 5412, 1, 0, 0, 0, 1089, 5422, 1, 0, 0, 0, 1091, 5426, 1, 0, 0, 0, 1093, 5429, 1, 0, 0, 0, 1095, 5435, 1, 0, 0, 0, 1097, 5443, 1, 0, 0, 0, 1099, 5449, 1, 0, 0, 0, 1101, 5455, 1, 0, 0, 0, 1103, 5460, 1, 0, 0, 0, 1105, 5465, 1, 0, 0, 0, 1107, 5476, 1, 0, 0, 0, 1109, 5482, 1, 0, 0, 0, 1111, 5495, 1, 0, 0, 0, 1113, 5502, 1, 0, 0, 0, 1115, 5510, 1, 0, 0, 0, 1117, 5515, 1, 0, 0, 0, 1119, 5521, 1, 0, 0, 0, 1121, 5526, 1, 0, 0, 0, 1123, 5532, 1, 0, 0, 0, 1125, 5537, 1, 0, 0, 0, 1127, 5543, 1, 0, 0, 0, 1129, 5549, 1, 0, 0, 0, 1131, 5556, 1, 0, 0, 0, 1133, 5560, 1, 0, 0, 0, 1135, 5565, 1, 0, 0, 0, 1137, 5569, 1, 0, 0, 0, 1139, 5574, 1, 0, 0, 0, 1141, 5578, 1, 0, 0, 0, 1143, 5583, 1, 0, 0, 0, 1145, 5587, 1, 0, 0, 0, 1147, 5592, 1, 0, 0, 0, 1149, 5597, 1, 0, 0, 0, 1151, 5602, 1, 0, 0, 0, 1153, 5607, 1, 0, 0, 0, 1155, 5613, 1, 0, 0, 0, 1157, 5619, 1, 0, 0, 0, 1159, 5625, 1, 0, 0, 0, 1161, 5636, 1, 0, 0, 0, 1163, 5648, 1, 0, 0, 0, 1165, 5665, 1, 0, 0, 0, 1167, 5671, 1, 0, 0, 0, 1169, 5684, 1, 0, 0, 0, 1171, 5690, 1, 0, 0, 0, 1173, 5696, 1, 0, 0, 0, 1175, 5702, 1, 0, 0, 0, 1177, 5706, 1, 0, 0, 0, 1179, 5713, 1, 0, 0, 0, 1181, 5723, 1, 0, 0, 0, 1183, 5730, 1, 0, 0, 0, 1185, 5738, 1, 0, 0, 0, 1187, 5745, 1, 0, 0, 0, 1189, 5750, 1, 0, 0, 0, 1191, 5756, 1, 0, 0, 0, 1193, 5760, 1, 0, 0, 0, 1195, 5772, 1, 0, 0, 0, 1197, 5791, 1, 0, 0, 0, 1199, 5803, 1, 0, 0, 0, 1201, 5817, 1, 0, 0, 0, 1203, 5832, 1, 0, 0, 0, 1205, 5845, 1, 0, 0, 0, 1207, 5858, 1, 0, 0, 0, 1209, 5870, 1, 0, 0, 0, 1211, 5883, 1, 0, 0, 0, 1213, 5898, 1, 0, 0, 0, 1215, 5913, 1, 0, 0, 0, 1217, 5935, 1, 0, 0, 0, 1219, 5957, 1, 0, 0, 0, 1221, 5971, 1, 0, 0, 0, 1223, 5978, 1, 0, 0, 0, 1225, 5983, 1, 0, 0, 0, 1227, 5989, 1, 0, 0, 0, 1229, 6000, 1, 0, 0, 0, 1231, 6012, 1, 0, 0, 0, 1233, 6028, 1, 0, 0, 0, 1235, 6044, 1, 0, 0, 0, 1237, 6051, 1, 0, 0, 0, 1239, 6058, 1, 0, 0, 0, 1241, 6067, 1, 0, 0, 0, 1243, 6074, 1, 0, 0, 0, 1245, 6084, 1, 0, 0, 0, 1247, 6091, 1, 0, 0, 0, 1249, 6095, 1, 0, 0, 0, 1251, 6111, 1, 0, 0, 0, 1253, 6120, 1, 0, 0, 0, 1255, 6130, 1, 0, 0, 0, 1257, 6141, 1, 0, 0, 0, 1259, 6150, 1, 0, 0, 0, 1261, 6163, 1, 0, 0, 0, 1263, 6177, 1, 0, 0, 0, 1265, 6194, 1, 0, 0, 0, 1267, 6204, 1, 0, 0, 0, 1269, 6218, 1, 0, 0, 0, 1271, 6228, 1, 0, 0, 0, 1273, 6243, 1, 0, 0, 0, 1275, 6260, 1, 0, 0, 0, 1277, 6264, 1, 0, 0, 0, 1279, 6284, 1, 0, 0, 0, 1281, 6294, 1, 0, 0, 0, 1283, 6316, 1, 0, 0, 0, 1285, 6329, 1, 0, 0, 0, 1287, 6337, 1, 0, 0, 0, 1289, 6345, 1, 0, 0, 0, 1291, 6355, 1, 0, 0, 0, 1293, 6368, 1, 0, 0, 0, 1295, 6372, 1, 0, 0, 0, 1297, 6376, 1, 0, 0, 0, 1299, 6378, 1, 0, 0, 0, 1301, 6381, 1, 0, 0, 0, 1303, 6390, 1, 0, 0, 0, 1305, 6393, 1, 0, 0, 0, 1307, 6402, 1, 0, 0, 0, 1309, 6406, 1, 0, 0, 0, 1311, 6410, 1, 0, 0, 0, 1313, 6414, 1, 0, 0, 0, 1315, 6418, 1, 0, 0, 0, 1317, 6421, 1, 0, 0, 0, 1319, 6430, 1, 0, 0, 0, 1321, 6436, 1, 0, 0, 0, 1323, 6439, 1, 0, 0, 0, 1325, 6443, 1, 0, 0, 0, 1327, 6452, 1, 0, 0, 0, 1329, 6459, 1, 0, 0, 0, 1331, 6462, 1, 0, 0, 0, 1333, 6470, 1, 0, 0, 0, 1335, 6473, 1, 0, 0, 0, 1337, 6476, 1, 0, 0, 0, 1339, 6479, 1, 0, 0, 0, 1341, 6487, 1, 0, 0, 0, 1343, 6490, 1, 0, 0, 0, 1345, 6493, 1, 0, 0, 0, 1347, 6495, 1, 0, 0, 0, 1349, 6529, 1, 0, 0, 0, 1351, 6532, 1, 0, 0, 0, 1353, 6536, 1, 0, 0, 0, 1355, 6544, 1, 0, 0, 0, 1357, 6560, 1, 0, 0, 0, 1359, 6571, 1, 0, 0, 0, 1361, 6575, 1, 0, 0, 0, 1363, 6586, 1, 0, 0, 0, 1365, 6625, 1, 0, 0, 0, 1367, 6676, 1, 0, 0, 0, 1369, 6700, 1, 0, 0, 0, 1371, 6703, 1, 0, 0, 0, 1373, 6705, 1, 0, 0, 0, 1375, 6710, 1, 0, 0, 0, 1377, 6741, 1, 0, 0, 0, 1379, 6744, 1, 0, 0, 0, 1381, 6749, 1, 0, 0, 0, 1383, 6762, 1, 0, 0, 0, 1385, 6765, 1, 0, 0, 0, 1387, 6770, 1, 0, 0, 0, 1389, 6776, 1, 0, 0, 0, 1391, 6781, 1, 0, 0, 0, 1393, 6786, 1, 0, 0, 0, 1395, 6791, 1, 0, 0, 0, 1397, 6796, 1, 0, 0, 0, 1399, 6813, 1, 0, 0, 0, 1401, 6815, 1, 0, 0, 0, 1403, 1404, 5, 36, 0, 0, 1404, 6, 1, 0, 0, 0, 1405, 1406, 5, 40, 0, 0, 1406, 8, 1, 0, 0, 0, 1407, 1408, 5, 41, 0, 0, 1408, 10, 1, 0, 0, 0, 1409, 1410, 5, 91, 0, 0, 1410, 12, 1, 0, 0, 0, 1411, 1412, 5, 93, 0, 0, 1412, 14, 1, 0, 0, 0, 1413, 1414, 5, 44, 0, 0, 1414, 16, 1, 0, 0, 0, 1415, 1416, 5, 59, 0, 0, 1416, 18, 1, 0, 0, 0, 1417, 1418, 5, 58, 0, 0, 1418, 20, 1, 0, 0, 0, 1419, 1420, 5, 42, 0, 0, 1420, 22, 1, 0, 0, 0, 1421, 1422, 5, 61, 0, 0, 1422, 24, 1, 0, 0, 0, 1423, 1424, 5, 46, 0, 0, 1424, 26, 1, 0, 0, 0, 1425, 1426, 5, 43, 0, 0, 1426, 28, 1, 0, 0, 0, 1427, 1428, 5, 45, 0, 0, 1428, 30, 1, 0, 0, 0, 1429, 1430, 5, 47, 0, 0, 1430, 32, 1, 0, 0, 0, 1431, 1432, 5, 94, 0, 0, 1432, 34, 1, 0, 0, 0, 1433, 1434, 5, 60, 0, 0, 1434, 36, 1, 0, 0, 0, 1435, 1436, 5, 62, 0, 0, 1436, 38, 1, 0, 0, 0, 1437, 1438, 5, 60, 0, 0, 1438, 1439, 5, 60, 0, 0, 1439, 40, 1, 0, 0, 0, 1440, 1441, 5, 62, 0, 0, 1441, 1442, 5, 62, 0, 0, 1442, 42, 1, 0, 0, 0, 1443, 1444, 5, 58, 0, 0, 1444, 1445, 5, 61, 0, 0, 1445, 44, 1, 0, 0, 0, 1446, 1447, 5, 60, 0, 0, 1447, 1448, 5, 61, 0, 0, 1448, 46, 1, 0, 0, 0, 1449, 1450, 5, 61, 0, 0, 1450, 1451, 5, 62, 0, 0, 1451, 48, 1, 0, 0, 0, 1452, 1453, 5, 62, 0, 0, 1453, 1454, 5, 61, 0, 0, 1454, 50, 1, 0, 0, 0, 1455, 1456, 5, 46, 0, 0, 1456, 1457, 5, 46, 0, 0, 1457, 52, 1, 0, 0, 0, 1458, 1459, 5, 60, 0, 0, 1459, 1460, 5, 62, 0, 0, 1460, 54, 1, 0, 0, 0, 1461, 1462, 5, 58, 0, 0, 1462, 1463, 5, 58, 0, 0, 1463, 56, 1, 0, 0, 0, 1464, 1465, 5, 37, 0, 0, 1465, 58, 1, 0, 0, 0, 1466, 1468, 5, 36, 0, 0, 1467, 1469, 7, 0, 0, 0, 1468, 1467, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1468, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 60, 1, 0, 0, 0, 1472, 1488, 3, 65, 30, 0, 1473, 1477, 5, 43, 0, 0, 1474, 1475, 5, 45, 0, 0, 1475, 1477, 4, 28, 0, 0, 1476, 1473, 1, 0, 0, 0, 1476, 1474, 1, 0, 0, 0, 1477, 1478, 1, 0, 0, 0, 1478, 1476, 1, 0, 0, 0, 1478, 1479, 1, 0, 0, 0, 1479, 1483, 1, 0, 0, 0, 1480, 1484, 3, 65, 30, 0, 1481, 1482, 5, 47, 0, 0, 1482, 1484, 4, 28, 1, 0, 1483, 1480, 1, 0, 0, 0, 1483, 1481, 1, 0, 0, 0, 1484, 1488, 1, 0, 0, 0, 1485, 1486, 5, 47, 0, 0, 1486, 1488, 4, 28, 2, 0, 1487, 1472, 1, 0, 0, 0, 1487, 1476, 1, 0, 0, 0, 1487, 1485, 1, 0, 0, 0, 1488, 1489, 1, 0, 0, 0, 1489, 1487, 1, 0, 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1493, 1, 0, 0, 0, 1491, 1493, 7, 1, 0, 0, 1492, 1487, 1, 0, 0, 0, 1492, 1491, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 1495, 6, 28, 0, 0, 1495, 62, 1, 0, 0, 0, 1496, 1502, 3, 67, 31, 0, 1497, 1498, 5, 45, 0, 0, 1498, 1502, 4, 29, 3, 0, 1499, 1500, 5, 47, 0, 0, 1500, 1502, 4, 29, 4, 0, 1501, 1496, 1, 0, 0, 0, 1501, 1497, 1, 0, 0, 0, 1501, 1499, 1, 0, 0, 0, 1502, 1505, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1506, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1508, 3, 69, 32, 0, 1507, 1509, 3, 61, 28, 0, 1508, 1507, 1, 0, 0, 0, 1508, 1509, 1, 0, 0, 0, 1509, 1513, 1, 0, 0, 0, 1510, 1514, 5, 43, 0, 0, 1511, 1512, 5, 45, 0, 0, 1512, 1514, 4, 29, 5, 0, 1513, 1510, 1, 0, 0, 0, 1513, 1511, 1, 0, 0, 0, 1514, 1515, 1, 0, 0, 0, 1515, 1513, 1, 0, 0, 0, 1515, 1516, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1518, 6, 29, 1, 0, 1518, 64, 1, 0, 0, 0, 1519, 1520, 7, 2, 0, 0, 1520, 66, 1, 0, 0, 0, 1521, 1522, 7, 3, 0, 0, 1522, 68, 1, 0, 0, 0, 1523, 1524, 7, 4, 0, 0, 1524, 70, 1, 0, 0, 0, 1525, 1526, 7, 5, 0, 0, 1526, 1527, 7, 6, 0, 0, 1527, 1528, 7, 6, 0, 0, 1528, 72, 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, 9, 0, 0, 1535, 1536, 7, 10, 0, 0, 1536, 74, 1, 0, 0, 0, 1537, 1538, 7, 5, 0, 0, 1538, 1539, 7, 7, 0, 0, 1539, 1540, 7, 5, 0, 0, 1540, 1541, 7, 6, 0, 0, 1541, 1542, 7, 8, 0, 0, 1542, 1543, 7, 11, 0, 0, 1543, 1544, 7, 10, 0, 0, 1544, 76, 1, 0, 0, 0, 1545, 1546, 7, 5, 0, 0, 1546, 1547, 7, 7, 0, 0, 1547, 1548, 7, 12, 0, 0, 1548, 78, 1, 0, 0, 0, 1549, 1550, 7, 5, 0, 0, 1550, 1551, 7, 7, 0, 0, 1551, 1552, 7, 8, 0, 0, 1552, 80, 1, 0, 0, 0, 1553, 1554, 7, 5, 0, 0, 1554, 1555, 7, 13, 0, 0, 1555, 1556, 7, 13, 0, 0, 1556, 1557, 7, 5, 0, 0, 1557, 1558, 7, 8, 0, 0, 1558, 82, 1, 0, 0, 0, 1559, 1560, 7, 5, 0, 0, 1560, 1561, 7, 9, 0, 0, 1561, 84, 1, 0, 0, 0, 1562, 1563, 7, 5, 0, 0, 1563, 1564, 7, 9, 0, 0, 1564, 1565, 7, 14, 0, 0, 1565, 86, 1, 0, 0, 0, 1566, 1567, 7, 5, 0, 0, 1567, 1568, 7, 9, 0, 0, 1568, 1569, 7, 8, 0, 0, 1569, 1570, 7, 15, 0, 0, 1570, 1571, 7, 15, 0, 0, 1571, 1572, 7, 10, 0, 0, 1572, 1573, 7, 16, 0, 0, 1573, 1574, 7, 13, 0, 0, 1574, 1575, 7, 17, 0, 0, 1575, 1576, 7, 14, 0, 0, 1576, 88, 1, 0, 0, 0, 1577, 1578, 7, 18, 0, 0, 1578, 1579, 7, 19, 0, 0, 1579, 1580, 7, 16, 0, 0, 1580, 1581, 7, 20, 0, 0, 1581, 90, 1, 0, 0, 0, 1582, 1583, 7, 14, 0, 0, 1583, 1584, 7, 5, 0, 0, 1584, 1585, 7, 9, 0, 0, 1585, 1586, 7, 10, 0, 0, 1586, 92, 1, 0, 0, 0, 1587, 1588, 7, 14, 0, 0, 1588, 1589, 7, 5, 0, 0, 1589, 1590, 7, 9, 0, 0, 1590, 1591, 7, 16, 0, 0, 1591, 94, 1, 0, 0, 0, 1592, 1593, 7, 14, 0, 0, 1593, 1594, 7, 20, 0, 0, 1594, 1595, 7, 10, 0, 0, 1595, 1596, 7, 14, 0, 0, 1596, 1597, 7, 21, 0, 0, 1597, 96, 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, 6, 0, 0, 1602, 1603, 7, 5, 0, 0, 1603, 1604, 7, 16, 0, 0, 1604, 1605, 7, 10, 0, 0, 1605, 98, 1, 0, 0, 0, 1606, 1607, 7, 14, 0, 0, 1607, 1608, 7, 19, 0, 0, 1608, 1609, 7, 6, 0, 0, 1609, 1610, 7, 22, 0, 0, 1610, 1611, 7, 15, 0, 0, 1611, 1612, 7, 7, 0, 0, 1612, 100, 1, 0, 0, 0, 1613, 1614, 7, 14, 0, 0, 1614, 1615, 7, 19, 0, 0, 1615, 1616, 7, 7, 0, 0, 1616, 1617, 7, 9, 0, 0, 1617, 1618, 7, 16, 0, 0, 1618, 1619, 7, 13, 0, 0, 1619, 1620, 7, 5, 0, 0, 1620, 1621, 7, 17, 0, 0, 1621, 1622, 7, 7, 0, 0, 1622, 1623, 7, 16, 0, 0, 1623, 102, 1, 0, 0, 0, 1624, 1625, 7, 14, 0, 0, 1625, 1626, 7, 13, 0, 0, 1626, 1627, 7, 10, 0, 0, 1627, 1628, 7, 5, 0, 0, 1628, 1629, 7, 16, 0, 0, 1629, 1630, 7, 10, 0, 0, 1630, 104, 1, 0, 0, 0, 1631, 1632, 7, 14, 0, 0, 1632, 1633, 7, 22, 0, 0, 1633, 1634, 7, 13, 0, 0, 1634, 1635, 7, 13, 0, 0, 1635, 1636, 7, 10, 0, 0, 1636, 1637, 7, 7, 0, 0, 1637, 1638, 7, 16, 0, 0, 1638, 1639, 5, 95, 0, 0, 1639, 1640, 7, 14, 0, 0, 1640, 1641, 7, 5, 0, 0, 1641, 1642, 7, 16, 0, 0, 1642, 1643, 7, 5, 0, 0, 1643, 1644, 7, 6, 0, 0, 1644, 1645, 7, 19, 0, 0, 1645, 1646, 7, 23, 0, 0, 1646, 106, 1, 0, 0, 0, 1647, 1648, 7, 14, 0, 0, 1648, 1649, 7, 22, 0, 0, 1649, 1650, 7, 13, 0, 0, 1650, 1651, 7, 13, 0, 0, 1651, 1652, 7, 10, 0, 0, 1652, 1653, 7, 7, 0, 0, 1653, 1654, 7, 16, 0, 0, 1654, 1655, 5, 95, 0, 0, 1655, 1656, 7, 12, 0, 0, 1656, 1657, 7, 5, 0, 0, 1657, 1658, 7, 16, 0, 0, 1658, 1659, 7, 10, 0, 0, 1659, 108, 1, 0, 0, 0, 1660, 1661, 7, 14, 0, 0, 1661, 1662, 7, 22, 0, 0, 1662, 1663, 7, 13, 0, 0, 1663, 1664, 7, 13, 0, 0, 1664, 1665, 7, 10, 0, 0, 1665, 1666, 7, 7, 0, 0, 1666, 1667, 7, 16, 0, 0, 1667, 1668, 5, 95, 0, 0, 1668, 1669, 7, 13, 0, 0, 1669, 1670, 7, 19, 0, 0, 1670, 1671, 7, 6, 0, 0, 1671, 1672, 7, 10, 0, 0, 1672, 110, 1, 0, 0, 0, 1673, 1674, 7, 14, 0, 0, 1674, 1675, 7, 22, 0, 0, 1675, 1676, 7, 13, 0, 0, 1676, 1677, 7, 13, 0, 0, 1677, 1678, 7, 10, 0, 0, 1678, 1679, 7, 7, 0, 0, 1679, 1680, 7, 16, 0, 0, 1680, 1681, 5, 95, 0, 0, 1681, 1682, 7, 16, 0, 0, 1682, 1683, 7, 17, 0, 0, 1683, 1684, 7, 15, 0, 0, 1684, 1685, 7, 10, 0, 0, 1685, 112, 1, 0, 0, 0, 1686, 1687, 7, 14, 0, 0, 1687, 1688, 7, 22, 0, 0, 1688, 1689, 7, 13, 0, 0, 1689, 1690, 7, 13, 0, 0, 1690, 1691, 7, 10, 0, 0, 1691, 1692, 7, 7, 0, 0, 1692, 1693, 7, 16, 0, 0, 1693, 1694, 5, 95, 0, 0, 1694, 1695, 7, 16, 0, 0, 1695, 1696, 7, 17, 0, 0, 1696, 1697, 7, 15, 0, 0, 1697, 1698, 7, 10, 0, 0, 1698, 1699, 7, 9, 0, 0, 1699, 1700, 7, 16, 0, 0, 1700, 1701, 7, 5, 0, 0, 1701, 1702, 7, 15, 0, 0, 1702, 1703, 7, 24, 0, 0, 1703, 114, 1, 0, 0, 0, 1704, 1705, 7, 14, 0, 0, 1705, 1706, 7, 22, 0, 0, 1706, 1707, 7, 13, 0, 0, 1707, 1708, 7, 13, 0, 0, 1708, 1709, 7, 10, 0, 0, 1709, 1710, 7, 7, 0, 0, 1710, 1711, 7, 16, 0, 0, 1711, 1712, 5, 95, 0, 0, 1712, 1713, 7, 22, 0, 0, 1713, 1714, 7, 9, 0, 0, 1714, 1715, 7, 10, 0, 0, 1715, 1716, 7, 13, 0, 0, 1716, 116, 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, 5, 0, 0, 1721, 1722, 7, 22, 0, 0, 1722, 1723, 7, 6, 0, 0, 1723, 1724, 7, 16, 0, 0, 1724, 118, 1, 0, 0, 0, 1725, 1726, 7, 12, 0, 0, 1726, 1727, 7, 10, 0, 0, 1727, 1728, 7, 25, 0, 0, 1728, 1729, 7, 10, 0, 0, 1729, 1730, 7, 13, 0, 0, 1730, 1731, 7, 13, 0, 0, 1731, 1732, 7, 5, 0, 0, 1732, 1733, 7, 18, 0, 0, 1733, 1734, 7, 6, 0, 0, 1734, 1735, 7, 10, 0, 0, 1735, 120, 1, 0, 0, 0, 1736, 1737, 7, 12, 0, 0, 1737, 1738, 7, 10, 0, 0, 1738, 1739, 7, 9, 0, 0, 1739, 1740, 7, 14, 0, 0, 1740, 122, 1, 0, 0, 0, 1741, 1742, 7, 12, 0, 0, 1742, 1743, 7, 17, 0, 0, 1743, 1744, 7, 9, 0, 0, 1744, 1745, 7, 16, 0, 0, 1745, 1746, 7, 17, 0, 0, 1746, 1747, 7, 7, 0, 0, 1747, 1748, 7, 14, 0, 0, 1748, 1749, 7, 16, 0, 0, 1749, 124, 1, 0, 0, 0, 1750, 1751, 7, 12, 0, 0, 1751, 1752, 7, 19, 0, 0, 1752, 126, 1, 0, 0, 0, 1753, 1754, 7, 10, 0, 0, 1754, 1755, 7, 6, 0, 0, 1755, 1756, 7, 9, 0, 0, 1756, 1757, 7, 10, 0, 0, 1757, 128, 1, 0, 0, 0, 1758, 1759, 7, 10, 0, 0, 1759, 1760, 7, 26, 0, 0, 1760, 1761, 7, 14, 0, 0, 1761, 1762, 7, 10, 0, 0, 1762, 1763, 7, 24, 0, 0, 1763, 1764, 7, 16, 0, 0, 1764, 130, 1, 0, 0, 0, 1765, 1766, 7, 25, 0, 0, 1766, 1767, 7, 5, 0, 0, 1767, 1768, 7, 6, 0, 0, 1768, 1769, 7, 9, 0, 0, 1769, 1770, 7, 10, 0, 0, 1770, 132, 1, 0, 0, 0, 1771, 1772, 7, 25, 0, 0, 1772, 1773, 7, 10, 0, 0, 1773, 1774, 7, 16, 0, 0, 1774, 1775, 7, 14, 0, 0, 1775, 1776, 7, 20, 0, 0, 1776, 134, 1, 0, 0, 0, 1777, 1778, 7, 25, 0, 0, 1778, 1779, 7, 19, 0, 0, 1779, 1780, 7, 13, 0, 0, 1780, 136, 1, 0, 0, 0, 1781, 1782, 7, 25, 0, 0, 1782, 1783, 7, 19, 0, 0, 1783, 1784, 7, 13, 0, 0, 1784, 1785, 7, 10, 0, 0, 1785, 1786, 7, 17, 0, 0, 1786, 1787, 7, 23, 0, 0, 1787, 1788, 7, 7, 0, 0, 1788, 138, 1, 0, 0, 0, 1789, 1790, 7, 25, 0, 0, 1790, 1791, 7, 13, 0, 0, 1791, 1792, 7, 19, 0, 0, 1792, 1793, 7, 15, 0, 0, 1793, 140, 1, 0, 0, 0, 1794, 1795, 7, 23, 0, 0, 1795, 1796, 7, 13, 0, 0, 1796, 1797, 7, 5, 0, 0, 1797, 1798, 7, 7, 0, 0, 1798, 1799, 7, 16, 0, 0, 1799, 142, 1, 0, 0, 0, 1800, 1801, 7, 23, 0, 0, 1801, 1802, 7, 13, 0, 0, 1802, 1803, 7, 19, 0, 0, 1803, 1804, 7, 22, 0, 0, 1804, 1805, 7, 24, 0, 0, 1805, 144, 1, 0, 0, 0, 1806, 1807, 7, 20, 0, 0, 1807, 1808, 7, 5, 0, 0, 1808, 1809, 7, 27, 0, 0, 1809, 1810, 7, 17, 0, 0, 1810, 1811, 7, 7, 0, 0, 1811, 1812, 7, 23, 0, 0, 1812, 146, 1, 0, 0, 0, 1813, 1814, 7, 17, 0, 0, 1814, 1815, 7, 7, 0, 0, 1815, 148, 1, 0, 0, 0, 1816, 1817, 7, 17, 0, 0, 1817, 1818, 7, 7, 0, 0, 1818, 1819, 7, 17, 0, 0, 1819, 1820, 7, 16, 0, 0, 1820, 1821, 7, 17, 0, 0, 1821, 1822, 7, 5, 0, 0, 1822, 1823, 7, 6, 0, 0, 1823, 1824, 7, 6, 0, 0, 1824, 1825, 7, 8, 0, 0, 1825, 150, 1, 0, 0, 0, 1826, 1827, 7, 17, 0, 0, 1827, 1828, 7, 7, 0, 0, 1828, 1829, 7, 16, 0, 0, 1829, 1830, 7, 10, 0, 0, 1830, 1831, 7, 13, 0, 0, 1831, 1832, 7, 9, 0, 0, 1832, 1833, 7, 10, 0, 0, 1833, 1834, 7, 14, 0, 0, 1834, 1835, 7, 16, 0, 0, 1835, 152, 1, 0, 0, 0, 1836, 1837, 7, 17, 0, 0, 1837, 1838, 7, 7, 0, 0, 1838, 1839, 7, 16, 0, 0, 1839, 1840, 7, 19, 0, 0, 1840, 154, 1, 0, 0, 0, 1841, 1842, 7, 6, 0, 0, 1842, 1843, 7, 5, 0, 0, 1843, 1844, 7, 16, 0, 0, 1844, 1845, 7, 10, 0, 0, 1845, 1846, 7, 13, 0, 0, 1846, 1847, 7, 5, 0, 0, 1847, 1848, 7, 6, 0, 0, 1848, 156, 1, 0, 0, 0, 1849, 1850, 7, 6, 0, 0, 1850, 1851, 7, 10, 0, 0, 1851, 1852, 7, 5, 0, 0, 1852, 1853, 7, 12, 0, 0, 1853, 1854, 7, 17, 0, 0, 1854, 1855, 7, 7, 0, 0, 1855, 1856, 7, 23, 0, 0, 1856, 158, 1, 0, 0, 0, 1857, 1858, 7, 6, 0, 0, 1858, 1859, 7, 17, 0, 0, 1859, 1860, 7, 15, 0, 0, 1860, 1861, 7, 17, 0, 0, 1861, 1862, 7, 16, 0, 0, 1862, 160, 1, 0, 0, 0, 1863, 1864, 7, 6, 0, 0, 1864, 1865, 7, 19, 0, 0, 1865, 1866, 7, 14, 0, 0, 1866, 1867, 7, 5, 0, 0, 1867, 1868, 7, 6, 0, 0, 1868, 1869, 7, 16, 0, 0, 1869, 1870, 7, 17, 0, 0, 1870, 1871, 7, 15, 0, 0, 1871, 1872, 7, 10, 0, 0, 1872, 162, 1, 0, 0, 0, 1873, 1874, 7, 6, 0, 0, 1874, 1875, 7, 19, 0, 0, 1875, 1876, 7, 14, 0, 0, 1876, 1877, 7, 5, 0, 0, 1877, 1878, 7, 6, 0, 0, 1878, 1879, 7, 16, 0, 0, 1879, 1880, 7, 17, 0, 0, 1880, 1881, 7, 15, 0, 0, 1881, 1882, 7, 10, 0, 0, 1882, 1883, 7, 9, 0, 0, 1883, 1884, 7, 16, 0, 0, 1884, 1885, 7, 5, 0, 0, 1885, 1886, 7, 15, 0, 0, 1886, 1887, 7, 24, 0, 0, 1887, 164, 1, 0, 0, 0, 1888, 1889, 7, 7, 0, 0, 1889, 1890, 7, 19, 0, 0, 1890, 1891, 7, 16, 0, 0, 1891, 166, 1, 0, 0, 0, 1892, 1893, 7, 7, 0, 0, 1893, 1894, 7, 22, 0, 0, 1894, 1895, 7, 6, 0, 0, 1895, 1896, 7, 6, 0, 0, 1896, 168, 1, 0, 0, 0, 1897, 1898, 7, 19, 0, 0, 1898, 1899, 7, 25, 0, 0, 1899, 1900, 7, 25, 0, 0, 1900, 1901, 7, 9, 0, 0, 1901, 1902, 7, 10, 0, 0, 1902, 1903, 7, 16, 0, 0, 1903, 170, 1, 0, 0, 0, 1904, 1905, 7, 19, 0, 0, 1905, 1906, 7, 7, 0, 0, 1906, 172, 1, 0, 0, 0, 1907, 1908, 7, 19, 0, 0, 1908, 1909, 7, 7, 0, 0, 1909, 1910, 7, 6, 0, 0, 1910, 1911, 7, 8, 0, 0, 1911, 174, 1, 0, 0, 0, 1912, 1913, 7, 19, 0, 0, 1913, 1914, 7, 13, 0, 0, 1914, 176, 1, 0, 0, 0, 1915, 1916, 7, 19, 0, 0, 1916, 1917, 7, 13, 0, 0, 1917, 1918, 7, 12, 0, 0, 1918, 1919, 7, 10, 0, 0, 1919, 1920, 7, 13, 0, 0, 1920, 178, 1, 0, 0, 0, 1921, 1922, 7, 24, 0, 0, 1922, 1923, 7, 6, 0, 0, 1923, 1924, 7, 5, 0, 0, 1924, 1925, 7, 14, 0, 0, 1925, 1926, 7, 17, 0, 0, 1926, 1927, 7, 7, 0, 0, 1927, 1928, 7, 23, 0, 0, 1928, 180, 1, 0, 0, 0, 1929, 1930, 7, 24, 0, 0, 1930, 1931, 7, 13, 0, 0, 1931, 1932, 7, 17, 0, 0, 1932, 1933, 7, 15, 0, 0, 1933, 1934, 7, 5, 0, 0, 1934, 1935, 7, 13, 0, 0, 1935, 1936, 7, 8, 0, 0, 1936, 182, 1, 0, 0, 0, 1937, 1938, 7, 13, 0, 0, 1938, 1939, 7, 10, 0, 0, 1939, 1940, 7, 25, 0, 0, 1940, 1941, 7, 10, 0, 0, 1941, 1942, 7, 13, 0, 0, 1942, 1943, 7, 10, 0, 0, 1943, 1944, 7, 7, 0, 0, 1944, 1945, 7, 14, 0, 0, 1945, 1946, 7, 10, 0, 0, 1946, 1947, 7, 9, 0, 0, 1947, 184, 1, 0, 0, 0, 1948, 1949, 7, 13, 0, 0, 1949, 1950, 7, 10, 0, 0, 1950, 1951, 7, 16, 0, 0, 1951, 1952, 7, 22, 0, 0, 1952, 1953, 7, 13, 0, 0, 1953, 1954, 7, 7, 0, 0, 1954, 1955, 7, 17, 0, 0, 1955, 1956, 7, 7, 0, 0, 1956, 1957, 7, 23, 0, 0, 1957, 186, 1, 0, 0, 0, 1958, 1959, 7, 9, 0, 0, 1959, 1960, 7, 10, 0, 0, 1960, 1961, 7, 6, 0, 0, 1961, 1962, 7, 10, 0, 0, 1962, 1963, 7, 14, 0, 0, 1963, 1964, 7, 16, 0, 0, 1964, 188, 1, 0, 0, 0, 1965, 1966, 7, 9, 0, 0, 1966, 1967, 7, 10, 0, 0, 1967, 1968, 7, 9, 0, 0, 1968, 1969, 7, 9, 0, 0, 1969, 1970, 7, 17, 0, 0, 1970, 1971, 7, 19, 0, 0, 1971, 1972, 7, 7, 0, 0, 1972, 1973, 5, 95, 0, 0, 1973, 1974, 7, 22, 0, 0, 1974, 1975, 7, 9, 0, 0, 1975, 1976, 7, 10, 0, 0, 1976, 1977, 7, 13, 0, 0, 1977, 190, 1, 0, 0, 0, 1978, 1979, 7, 9, 0, 0, 1979, 1980, 7, 19, 0, 0, 1980, 1981, 7, 15, 0, 0, 1981, 1982, 7, 10, 0, 0, 1982, 192, 1, 0, 0, 0, 1983, 1984, 7, 9, 0, 0, 1984, 1985, 7, 8, 0, 0, 1985, 1986, 7, 15, 0, 0, 1986, 1987, 7, 15, 0, 0, 1987, 1988, 7, 10, 0, 0, 1988, 1989, 7, 16, 0, 0, 1989, 1990, 7, 13, 0, 0, 1990, 1991, 7, 17, 0, 0, 1991, 1992, 7, 14, 0, 0, 1992, 194, 1, 0, 0, 0, 1993, 1994, 7, 16, 0, 0, 1994, 1995, 7, 5, 0, 0, 1995, 1996, 7, 18, 0, 0, 1996, 1997, 7, 6, 0, 0, 1997, 1998, 7, 10, 0, 0, 1998, 196, 1, 0, 0, 0, 1999, 2000, 7, 16, 0, 0, 2000, 2001, 7, 20, 0, 0, 2001, 2002, 7, 10, 0, 0, 2002, 2003, 7, 7, 0, 0, 2003, 198, 1, 0, 0, 0, 2004, 2005, 7, 16, 0, 0, 2005, 2006, 7, 19, 0, 0, 2006, 200, 1, 0, 0, 0, 2007, 2008, 7, 16, 0, 0, 2008, 2009, 7, 19, 0, 0, 2009, 2010, 7, 24, 0, 0, 2010, 2011, 7, 17, 0, 0, 2011, 2012, 7, 14, 0, 0, 2012, 202, 1, 0, 0, 0, 2013, 2014, 7, 11, 0, 0, 2014, 2015, 7, 9, 0, 0, 2015, 2016, 7, 16, 0, 0, 2016, 2017, 7, 13, 0, 0, 2017, 2018, 7, 10, 0, 0, 2018, 2019, 7, 5, 0, 0, 2019, 2020, 7, 15, 0, 0, 2020, 204, 1, 0, 0, 0, 2021, 2022, 7, 11, 0, 0, 2022, 2023, 7, 16, 0, 0, 2023, 2024, 7, 5, 0, 0, 2024, 2025, 7, 18, 0, 0, 2025, 2026, 7, 6, 0, 0, 2026, 2027, 7, 10, 0, 0, 2027, 206, 1, 0, 0, 0, 2028, 2029, 7, 11, 0, 0, 2029, 2030, 7, 27, 0, 0, 2030, 2031, 7, 17, 0, 0, 2031, 2032, 7, 10, 0, 0, 2032, 2033, 7, 28, 0, 0, 2033, 208, 1, 0, 0, 0, 2034, 2035, 7, 16, 0, 0, 2035, 2036, 7, 13, 0, 0, 2036, 2037, 7, 5, 0, 0, 2037, 2038, 7, 17, 0, 0, 2038, 2039, 7, 6, 0, 0, 2039, 2040, 7, 17, 0, 0, 2040, 2041, 7, 7, 0, 0, 2041, 2042, 7, 23, 0, 0, 2042, 210, 1, 0, 0, 0, 2043, 2044, 7, 16, 0, 0, 2044, 2045, 7, 13, 0, 0, 2045, 2046, 7, 22, 0, 0, 2046, 2047, 7, 10, 0, 0, 2047, 212, 1, 0, 0, 0, 2048, 2049, 7, 22, 0, 0, 2049, 2050, 7, 7, 0, 0, 2050, 2051, 7, 17, 0, 0, 2051, 2052, 7, 19, 0, 0, 2052, 2053, 7, 7, 0, 0, 2053, 214, 1, 0, 0, 0, 2054, 2055, 7, 22, 0, 0, 2055, 2056, 7, 7, 0, 0, 2056, 2057, 7, 17, 0, 0, 2057, 2058, 7, 29, 0, 0, 2058, 2059, 7, 22, 0, 0, 2059, 2060, 7, 10, 0, 0, 2060, 216, 1, 0, 0, 0, 2061, 2062, 7, 22, 0, 0, 2062, 2063, 7, 9, 0, 0, 2063, 2064, 7, 10, 0, 0, 2064, 2065, 7, 13, 0, 0, 2065, 218, 1, 0, 0, 0, 2066, 2067, 7, 22, 0, 0, 2067, 2068, 7, 9, 0, 0, 2068, 2069, 7, 17, 0, 0, 2069, 2070, 7, 7, 0, 0, 2070, 2071, 7, 23, 0, 0, 2071, 220, 1, 0, 0, 0, 2072, 2073, 7, 27, 0, 0, 2073, 2074, 7, 5, 0, 0, 2074, 2075, 7, 13, 0, 0, 2075, 2076, 7, 17, 0, 0, 2076, 2077, 7, 5, 0, 0, 2077, 2078, 7, 12, 0, 0, 2078, 2079, 7, 17, 0, 0, 2079, 2080, 7, 14, 0, 0, 2080, 222, 1, 0, 0, 0, 2081, 2082, 7, 28, 0, 0, 2082, 2083, 7, 20, 0, 0, 2083, 2084, 7, 10, 0, 0, 2084, 2085, 7, 7, 0, 0, 2085, 224, 1, 0, 0, 0, 2086, 2087, 7, 28, 0, 0, 2087, 2088, 7, 20, 0, 0, 2088, 2089, 7, 10, 0, 0, 2089, 2090, 7, 13, 0, 0, 2090, 2091, 7, 10, 0, 0, 2091, 226, 1, 0, 0, 0, 2092, 2093, 7, 28, 0, 0, 2093, 2094, 7, 17, 0, 0, 2094, 2095, 7, 7, 0, 0, 2095, 2096, 7, 12, 0, 0, 2096, 2097, 7, 19, 0, 0, 2097, 2098, 7, 28, 0, 0, 2098, 228, 1, 0, 0, 0, 2099, 2100, 7, 28, 0, 0, 2100, 2101, 7, 17, 0, 0, 2101, 2102, 7, 16, 0, 0, 2102, 2103, 7, 20, 0, 0, 2103, 230, 1, 0, 0, 0, 2104, 2105, 7, 5, 0, 0, 2105, 2106, 7, 22, 0, 0, 2106, 2107, 7, 16, 0, 0, 2107, 2108, 7, 20, 0, 0, 2108, 2109, 7, 19, 0, 0, 2109, 2110, 7, 13, 0, 0, 2110, 2111, 7, 17, 0, 0, 2111, 2112, 7, 11, 0, 0, 2112, 2113, 7, 5, 0, 0, 2113, 2114, 7, 16, 0, 0, 2114, 2115, 7, 17, 0, 0, 2115, 2116, 7, 19, 0, 0, 2116, 2117, 7, 7, 0, 0, 2117, 232, 1, 0, 0, 0, 2118, 2119, 7, 18, 0, 0, 2119, 2120, 7, 17, 0, 0, 2120, 2121, 7, 7, 0, 0, 2121, 2122, 7, 5, 0, 0, 2122, 2123, 7, 13, 0, 0, 2123, 2124, 7, 8, 0, 0, 2124, 234, 1, 0, 0, 0, 2125, 2126, 7, 14, 0, 0, 2126, 2127, 7, 19, 0, 0, 2127, 2128, 7, 6, 0, 0, 2128, 2129, 7, 6, 0, 0, 2129, 2130, 7, 5, 0, 0, 2130, 2131, 7, 16, 0, 0, 2131, 2132, 7, 17, 0, 0, 2132, 2133, 7, 19, 0, 0, 2133, 2134, 7, 7, 0, 0, 2134, 236, 1, 0, 0, 0, 2135, 2136, 7, 14, 0, 0, 2136, 2137, 7, 19, 0, 0, 2137, 2138, 7, 7, 0, 0, 2138, 2139, 7, 14, 0, 0, 2139, 2140, 7, 22, 0, 0, 2140, 2141, 7, 13, 0, 0, 2141, 2142, 7, 13, 0, 0, 2142, 2143, 7, 10, 0, 0, 2143, 2144, 7, 7, 0, 0, 2144, 2145, 7, 16, 0, 0, 2145, 2146, 7, 6, 0, 0, 2146, 2147, 7, 8, 0, 0, 2147, 238, 1, 0, 0, 0, 2148, 2149, 7, 14, 0, 0, 2149, 2150, 7, 13, 0, 0, 2150, 2151, 7, 19, 0, 0, 2151, 2152, 7, 9, 0, 0, 2152, 2153, 7, 9, 0, 0, 2153, 240, 1, 0, 0, 0, 2154, 2155, 7, 14, 0, 0, 2155, 2156, 7, 22, 0, 0, 2156, 2157, 7, 13, 0, 0, 2157, 2158, 7, 13, 0, 0, 2158, 2159, 7, 10, 0, 0, 2159, 2160, 7, 7, 0, 0, 2160, 2161, 7, 16, 0, 0, 2161, 2162, 5, 95, 0, 0, 2162, 2163, 7, 9, 0, 0, 2163, 2164, 7, 14, 0, 0, 2164, 2165, 7, 20, 0, 0, 2165, 2166, 7, 10, 0, 0, 2166, 2167, 7, 15, 0, 0, 2167, 2168, 7, 5, 0, 0, 2168, 242, 1, 0, 0, 0, 2169, 2170, 7, 25, 0, 0, 2170, 2171, 7, 13, 0, 0, 2171, 2172, 7, 10, 0, 0, 2172, 2173, 7, 10, 0, 0, 2173, 2174, 7, 11, 0, 0, 2174, 2175, 7, 10, 0, 0, 2175, 244, 1, 0, 0, 0, 2176, 2177, 7, 25, 0, 0, 2177, 2178, 7, 22, 0, 0, 2178, 2179, 7, 6, 0, 0, 2179, 2180, 7, 6, 0, 0, 2180, 246, 1, 0, 0, 0, 2181, 2182, 7, 17, 0, 0, 2182, 2183, 7, 6, 0, 0, 2183, 2184, 7, 17, 0, 0, 2184, 2185, 7, 21, 0, 0, 2185, 2186, 7, 10, 0, 0, 2186, 248, 1, 0, 0, 0, 2187, 2188, 7, 17, 0, 0, 2188, 2189, 7, 7, 0, 0, 2189, 2190, 7, 7, 0, 0, 2190, 2191, 7, 10, 0, 0, 2191, 2192, 7, 13, 0, 0, 2192, 250, 1, 0, 0, 0, 2193, 2194, 7, 17, 0, 0, 2194, 2195, 7, 9, 0, 0, 2195, 252, 1, 0, 0, 0, 2196, 2197, 7, 17, 0, 0, 2197, 2198, 7, 9, 0, 0, 2198, 2199, 7, 7, 0, 0, 2199, 2200, 7, 22, 0, 0, 2200, 2201, 7, 6, 0, 0, 2201, 2202, 7, 6, 0, 0, 2202, 254, 1, 0, 0, 0, 2203, 2204, 7, 30, 0, 0, 2204, 2205, 7, 19, 0, 0, 2205, 2206, 7, 17, 0, 0, 2206, 2207, 7, 7, 0, 0, 2207, 256, 1, 0, 0, 0, 2208, 2209, 7, 6, 0, 0, 2209, 2210, 7, 10, 0, 0, 2210, 2211, 7, 25, 0, 0, 2211, 2212, 7, 16, 0, 0, 2212, 258, 1, 0, 0, 0, 2213, 2214, 7, 6, 0, 0, 2214, 2215, 7, 17, 0, 0, 2215, 2216, 7, 21, 0, 0, 2216, 2217, 7, 10, 0, 0, 2217, 260, 1, 0, 0, 0, 2218, 2219, 7, 7, 0, 0, 2219, 2220, 7, 5, 0, 0, 2220, 2221, 7, 16, 0, 0, 2221, 2222, 7, 22, 0, 0, 2222, 2223, 7, 13, 0, 0, 2223, 2224, 7, 5, 0, 0, 2224, 2225, 7, 6, 0, 0, 2225, 262, 1, 0, 0, 0, 2226, 2227, 7, 7, 0, 0, 2227, 2228, 7, 19, 0, 0, 2228, 2229, 7, 16, 0, 0, 2229, 2230, 7, 7, 0, 0, 2230, 2231, 7, 22, 0, 0, 2231, 2232, 7, 6, 0, 0, 2232, 2233, 7, 6, 0, 0, 2233, 264, 1, 0, 0, 0, 2234, 2235, 7, 19, 0, 0, 2235, 2236, 7, 22, 0, 0, 2236, 2237, 7, 16, 0, 0, 2237, 2238, 7, 10, 0, 0, 2238, 2239, 7, 13, 0, 0, 2239, 266, 1, 0, 0, 0, 2240, 2241, 7, 19, 0, 0, 2241, 2242, 7, 27, 0, 0, 2242, 2243, 7, 10, 0, 0, 2243, 2244, 7, 13, 0, 0, 2244, 268, 1, 0, 0, 0, 2245, 2246, 7, 19, 0, 0, 2246, 2247, 7, 27, 0, 0, 2247, 2248, 7, 10, 0, 0, 2248, 2249, 7, 13, 0, 0, 2249, 2250, 7, 6, 0, 0, 2250, 2251, 7, 5, 0, 0, 2251, 2252, 7, 24, 0, 0, 2252, 2253, 7, 9, 0, 0, 2253, 270, 1, 0, 0, 0, 2254, 2255, 7, 13, 0, 0, 2255, 2256, 7, 17, 0, 0, 2256, 2257, 7, 23, 0, 0, 2257, 2258, 7, 20, 0, 0, 2258, 2259, 7, 16, 0, 0, 2259, 272, 1, 0, 0, 0, 2260, 2261, 7, 9, 0, 0, 2261, 2262, 7, 17, 0, 0, 2262, 2263, 7, 15, 0, 0, 2263, 2264, 7, 17, 0, 0, 2264, 2265, 7, 6, 0, 0, 2265, 2266, 7, 5, 0, 0, 2266, 2267, 7, 13, 0, 0, 2267, 274, 1, 0, 0, 0, 2268, 2269, 7, 27, 0, 0, 2269, 2270, 7, 10, 0, 0, 2270, 2271, 7, 13, 0, 0, 2271, 2272, 7, 18, 0, 0, 2272, 2273, 7, 19, 0, 0, 2273, 2274, 7, 9, 0, 0, 2274, 2275, 7, 10, 0, 0, 2275, 276, 1, 0, 0, 0, 2276, 2277, 7, 5, 0, 0, 2277, 2278, 7, 18, 0, 0, 2278, 2279, 7, 19, 0, 0, 2279, 2280, 7, 13, 0, 0, 2280, 2281, 7, 16, 0, 0, 2281, 278, 1, 0, 0, 0, 2282, 2283, 7, 5, 0, 0, 2283, 2284, 7, 18, 0, 0, 2284, 2285, 7, 9, 0, 0, 2285, 2286, 7, 19, 0, 0, 2286, 2287, 7, 6, 0, 0, 2287, 2288, 7, 22, 0, 0, 2288, 2289, 7, 16, 0, 0, 2289, 2290, 7, 10, 0, 0, 2290, 280, 1, 0, 0, 0, 2291, 2292, 7, 5, 0, 0, 2292, 2293, 7, 14, 0, 0, 2293, 2294, 7, 14, 0, 0, 2294, 2295, 7, 10, 0, 0, 2295, 2296, 7, 9, 0, 0, 2296, 2297, 7, 9, 0, 0, 2297, 282, 1, 0, 0, 0, 2298, 2299, 7, 5, 0, 0, 2299, 2300, 7, 14, 0, 0, 2300, 2301, 7, 16, 0, 0, 2301, 2302, 7, 17, 0, 0, 2302, 2303, 7, 19, 0, 0, 2303, 2304, 7, 7, 0, 0, 2304, 284, 1, 0, 0, 0, 2305, 2306, 7, 5, 0, 0, 2306, 2307, 7, 12, 0, 0, 2307, 2308, 7, 12, 0, 0, 2308, 286, 1, 0, 0, 0, 2309, 2310, 7, 5, 0, 0, 2310, 2311, 7, 12, 0, 0, 2311, 2312, 7, 15, 0, 0, 2312, 2313, 7, 17, 0, 0, 2313, 2314, 7, 7, 0, 0, 2314, 288, 1, 0, 0, 0, 2315, 2316, 7, 5, 0, 0, 2316, 2317, 7, 25, 0, 0, 2317, 2318, 7, 16, 0, 0, 2318, 2319, 7, 10, 0, 0, 2319, 2320, 7, 13, 0, 0, 2320, 290, 1, 0, 0, 0, 2321, 2322, 7, 5, 0, 0, 2322, 2323, 7, 23, 0, 0, 2323, 2324, 7, 23, 0, 0, 2324, 2325, 7, 13, 0, 0, 2325, 2326, 7, 10, 0, 0, 2326, 2327, 7, 23, 0, 0, 2327, 2328, 7, 5, 0, 0, 2328, 2329, 7, 16, 0, 0, 2329, 2330, 7, 10, 0, 0, 2330, 292, 1, 0, 0, 0, 2331, 2332, 7, 5, 0, 0, 2332, 2333, 7, 6, 0, 0, 2333, 2334, 7, 9, 0, 0, 2334, 2335, 7, 19, 0, 0, 2335, 294, 1, 0, 0, 0, 2336, 2337, 7, 5, 0, 0, 2337, 2338, 7, 6, 0, 0, 2338, 2339, 7, 16, 0, 0, 2339, 2340, 7, 10, 0, 0, 2340, 2341, 7, 13, 0, 0, 2341, 296, 1, 0, 0, 0, 2342, 2343, 7, 5, 0, 0, 2343, 2344, 7, 6, 0, 0, 2344, 2345, 7, 28, 0, 0, 2345, 2346, 7, 5, 0, 0, 2346, 2347, 7, 8, 0, 0, 2347, 2348, 7, 9, 0, 0, 2348, 298, 1, 0, 0, 0, 2349, 2350, 7, 5, 0, 0, 2350, 2351, 7, 9, 0, 0, 2351, 2352, 7, 9, 0, 0, 2352, 2353, 7, 10, 0, 0, 2353, 2354, 7, 13, 0, 0, 2354, 2355, 7, 16, 0, 0, 2355, 2356, 7, 17, 0, 0, 2356, 2357, 7, 19, 0, 0, 2357, 2358, 7, 7, 0, 0, 2358, 300, 1, 0, 0, 0, 2359, 2360, 7, 5, 0, 0, 2360, 2361, 7, 9, 0, 0, 2361, 2362, 7, 9, 0, 0, 2362, 2363, 7, 17, 0, 0, 2363, 2364, 7, 23, 0, 0, 2364, 2365, 7, 7, 0, 0, 2365, 2366, 7, 15, 0, 0, 2366, 2367, 7, 10, 0, 0, 2367, 2368, 7, 7, 0, 0, 2368, 2369, 7, 16, 0, 0, 2369, 302, 1, 0, 0, 0, 2370, 2371, 7, 5, 0, 0, 2371, 2372, 7, 16, 0, 0, 2372, 304, 1, 0, 0, 0, 2373, 2374, 7, 5, 0, 0, 2374, 2375, 7, 16, 0, 0, 2375, 2376, 7, 16, 0, 0, 2376, 2377, 7, 13, 0, 0, 2377, 2378, 7, 17, 0, 0, 2378, 2379, 7, 18, 0, 0, 2379, 2380, 7, 22, 0, 0, 2380, 2381, 7, 16, 0, 0, 2381, 2382, 7, 10, 0, 0, 2382, 306, 1, 0, 0, 0, 2383, 2384, 7, 18, 0, 0, 2384, 2385, 7, 5, 0, 0, 2385, 2386, 7, 14, 0, 0, 2386, 2387, 7, 21, 0, 0, 2387, 2388, 7, 28, 0, 0, 2388, 2389, 7, 5, 0, 0, 2389, 2390, 7, 13, 0, 0, 2390, 2391, 7, 12, 0, 0, 2391, 308, 1, 0, 0, 0, 2392, 2393, 7, 18, 0, 0, 2393, 2394, 7, 10, 0, 0, 2394, 2395, 7, 25, 0, 0, 2395, 2396, 7, 19, 0, 0, 2396, 2397, 7, 13, 0, 0, 2397, 2398, 7, 10, 0, 0, 2398, 310, 1, 0, 0, 0, 2399, 2400, 7, 18, 0, 0, 2400, 2401, 7, 10, 0, 0, 2401, 2402, 7, 23, 0, 0, 2402, 2403, 7, 17, 0, 0, 2403, 2404, 7, 7, 0, 0, 2404, 312, 1, 0, 0, 0, 2405, 2406, 7, 18, 0, 0, 2406, 2407, 7, 8, 0, 0, 2407, 314, 1, 0, 0, 0, 2408, 2409, 7, 14, 0, 0, 2409, 2410, 7, 5, 0, 0, 2410, 2411, 7, 14, 0, 0, 2411, 2412, 7, 20, 0, 0, 2412, 2413, 7, 10, 0, 0, 2413, 316, 1, 0, 0, 0, 2414, 2415, 7, 14, 0, 0, 2415, 2416, 7, 5, 0, 0, 2416, 2417, 7, 6, 0, 0, 2417, 2418, 7, 6, 0, 0, 2418, 2419, 7, 10, 0, 0, 2419, 2420, 7, 12, 0, 0, 2420, 318, 1, 0, 0, 0, 2421, 2422, 7, 14, 0, 0, 2422, 2423, 7, 5, 0, 0, 2423, 2424, 7, 9, 0, 0, 2424, 2425, 7, 14, 0, 0, 2425, 2426, 7, 5, 0, 0, 2426, 2427, 7, 12, 0, 0, 2427, 2428, 7, 10, 0, 0, 2428, 320, 1, 0, 0, 0, 2429, 2430, 7, 14, 0, 0, 2430, 2431, 7, 5, 0, 0, 2431, 2432, 7, 9, 0, 0, 2432, 2433, 7, 14, 0, 0, 2433, 2434, 7, 5, 0, 0, 2434, 2435, 7, 12, 0, 0, 2435, 2436, 7, 10, 0, 0, 2436, 2437, 7, 12, 0, 0, 2437, 322, 1, 0, 0, 0, 2438, 2439, 7, 14, 0, 0, 2439, 2440, 7, 5, 0, 0, 2440, 2441, 7, 16, 0, 0, 2441, 2442, 7, 5, 0, 0, 2442, 2443, 7, 6, 0, 0, 2443, 2444, 7, 19, 0, 0, 2444, 2445, 7, 23, 0, 0, 2445, 324, 1, 0, 0, 0, 2446, 2447, 7, 14, 0, 0, 2447, 2448, 7, 20, 0, 0, 2448, 2449, 7, 5, 0, 0, 2449, 2450, 7, 17, 0, 0, 2450, 2451, 7, 7, 0, 0, 2451, 326, 1, 0, 0, 0, 2452, 2453, 7, 14, 0, 0, 2453, 2454, 7, 20, 0, 0, 2454, 2455, 7, 5, 0, 0, 2455, 2456, 7, 13, 0, 0, 2456, 2457, 7, 5, 0, 0, 2457, 2458, 7, 14, 0, 0, 2458, 2459, 7, 16, 0, 0, 2459, 2460, 7, 10, 0, 0, 2460, 2461, 7, 13, 0, 0, 2461, 2462, 7, 17, 0, 0, 2462, 2463, 7, 9, 0, 0, 2463, 2464, 7, 16, 0, 0, 2464, 2465, 7, 17, 0, 0, 2465, 2466, 7, 14, 0, 0, 2466, 2467, 7, 9, 0, 0, 2467, 328, 1, 0, 0, 0, 2468, 2469, 7, 14, 0, 0, 2469, 2470, 7, 20, 0, 0, 2470, 2471, 7, 10, 0, 0, 2471, 2472, 7, 14, 0, 0, 2472, 2473, 7, 21, 0, 0, 2473, 2474, 7, 24, 0, 0, 2474, 2475, 7, 19, 0, 0, 2475, 2476, 7, 17, 0, 0, 2476, 2477, 7, 7, 0, 0, 2477, 2478, 7, 16, 0, 0, 2478, 330, 1, 0, 0, 0, 2479, 2480, 7, 14, 0, 0, 2480, 2481, 7, 6, 0, 0, 2481, 2482, 7, 5, 0, 0, 2482, 2483, 7, 9, 0, 0, 2483, 2484, 7, 9, 0, 0, 2484, 332, 1, 0, 0, 0, 2485, 2486, 7, 14, 0, 0, 2486, 2487, 7, 6, 0, 0, 2487, 2488, 7, 19, 0, 0, 2488, 2489, 7, 9, 0, 0, 2489, 2490, 7, 10, 0, 0, 2490, 334, 1, 0, 0, 0, 2491, 2492, 7, 14, 0, 0, 2492, 2493, 7, 6, 0, 0, 2493, 2494, 7, 22, 0, 0, 2494, 2495, 7, 9, 0, 0, 2495, 2496, 7, 16, 0, 0, 2496, 2497, 7, 10, 0, 0, 2497, 2498, 7, 13, 0, 0, 2498, 336, 1, 0, 0, 0, 2499, 2500, 7, 14, 0, 0, 2500, 2501, 7, 19, 0, 0, 2501, 2502, 7, 15, 0, 0, 2502, 2503, 7, 15, 0, 0, 2503, 2504, 7, 10, 0, 0, 2504, 2505, 7, 7, 0, 0, 2505, 2506, 7, 16, 0, 0, 2506, 338, 1, 0, 0, 0, 2507, 2508, 7, 14, 0, 0, 2508, 2509, 7, 19, 0, 0, 2509, 2510, 7, 15, 0, 0, 2510, 2511, 7, 15, 0, 0, 2511, 2512, 7, 10, 0, 0, 2512, 2513, 7, 7, 0, 0, 2513, 2514, 7, 16, 0, 0, 2514, 2515, 7, 9, 0, 0, 2515, 340, 1, 0, 0, 0, 2516, 2517, 7, 14, 0, 0, 2517, 2518, 7, 19, 0, 0, 2518, 2519, 7, 15, 0, 0, 2519, 2520, 7, 15, 0, 0, 2520, 2521, 7, 17, 0, 0, 2521, 2522, 7, 16, 0, 0, 2522, 342, 1, 0, 0, 0, 2523, 2524, 7, 14, 0, 0, 2524, 2525, 7, 19, 0, 0, 2525, 2526, 7, 15, 0, 0, 2526, 2527, 7, 15, 0, 0, 2527, 2528, 7, 17, 0, 0, 2528, 2529, 7, 16, 0, 0, 2529, 2530, 7, 16, 0, 0, 2530, 2531, 7, 10, 0, 0, 2531, 2532, 7, 12, 0, 0, 2532, 344, 1, 0, 0, 0, 2533, 2534, 7, 14, 0, 0, 2534, 2535, 7, 19, 0, 0, 2535, 2536, 7, 7, 0, 0, 2536, 2537, 7, 25, 0, 0, 2537, 2538, 7, 17, 0, 0, 2538, 2539, 7, 23, 0, 0, 2539, 2540, 7, 22, 0, 0, 2540, 2541, 7, 13, 0, 0, 2541, 2542, 7, 5, 0, 0, 2542, 2543, 7, 16, 0, 0, 2543, 2544, 7, 17, 0, 0, 2544, 2545, 7, 19, 0, 0, 2545, 2546, 7, 7, 0, 0, 2546, 346, 1, 0, 0, 0, 2547, 2548, 7, 14, 0, 0, 2548, 2549, 7, 19, 0, 0, 2549, 2550, 7, 7, 0, 0, 2550, 2551, 7, 7, 0, 0, 2551, 2552, 7, 10, 0, 0, 2552, 2553, 7, 14, 0, 0, 2553, 2554, 7, 16, 0, 0, 2554, 2555, 7, 17, 0, 0, 2555, 2556, 7, 19, 0, 0, 2556, 2557, 7, 7, 0, 0, 2557, 348, 1, 0, 0, 0, 2558, 2559, 7, 14, 0, 0, 2559, 2560, 7, 19, 0, 0, 2560, 2561, 7, 7, 0, 0, 2561, 2562, 7, 9, 0, 0, 2562, 2563, 7, 16, 0, 0, 2563, 2564, 7, 13, 0, 0, 2564, 2565, 7, 5, 0, 0, 2565, 2566, 7, 17, 0, 0, 2566, 2567, 7, 7, 0, 0, 2567, 2568, 7, 16, 0, 0, 2568, 2569, 7, 9, 0, 0, 2569, 350, 1, 0, 0, 0, 2570, 2571, 7, 14, 0, 0, 2571, 2572, 7, 19, 0, 0, 2572, 2573, 7, 7, 0, 0, 2573, 2574, 7, 16, 0, 0, 2574, 2575, 7, 10, 0, 0, 2575, 2576, 7, 7, 0, 0, 2576, 2577, 7, 16, 0, 0, 2577, 352, 1, 0, 0, 0, 2578, 2579, 7, 14, 0, 0, 2579, 2580, 7, 19, 0, 0, 2580, 2581, 7, 7, 0, 0, 2581, 2582, 7, 16, 0, 0, 2582, 2583, 7, 17, 0, 0, 2583, 2584, 7, 7, 0, 0, 2584, 2585, 7, 22, 0, 0, 2585, 2586, 7, 10, 0, 0, 2586, 354, 1, 0, 0, 0, 2587, 2588, 7, 14, 0, 0, 2588, 2589, 7, 19, 0, 0, 2589, 2590, 7, 7, 0, 0, 2590, 2591, 7, 27, 0, 0, 2591, 2592, 7, 10, 0, 0, 2592, 2593, 7, 13, 0, 0, 2593, 2594, 7, 9, 0, 0, 2594, 2595, 7, 17, 0, 0, 2595, 2596, 7, 19, 0, 0, 2596, 2597, 7, 7, 0, 0, 2597, 356, 1, 0, 0, 0, 2598, 2599, 7, 14, 0, 0, 2599, 2600, 7, 19, 0, 0, 2600, 2601, 7, 24, 0, 0, 2601, 2602, 7, 8, 0, 0, 2602, 358, 1, 0, 0, 0, 2603, 2604, 7, 14, 0, 0, 2604, 2605, 7, 19, 0, 0, 2605, 2606, 7, 9, 0, 0, 2606, 2607, 7, 16, 0, 0, 2607, 360, 1, 0, 0, 0, 2608, 2609, 7, 14, 0, 0, 2609, 2610, 7, 9, 0, 0, 2610, 2611, 7, 27, 0, 0, 2611, 362, 1, 0, 0, 0, 2612, 2613, 7, 14, 0, 0, 2613, 2614, 7, 22, 0, 0, 2614, 2615, 7, 13, 0, 0, 2615, 2616, 7, 9, 0, 0, 2616, 2617, 7, 19, 0, 0, 2617, 2618, 7, 13, 0, 0, 2618, 364, 1, 0, 0, 0, 2619, 2620, 7, 14, 0, 0, 2620, 2621, 7, 8, 0, 0, 2621, 2622, 7, 14, 0, 0, 2622, 2623, 7, 6, 0, 0, 2623, 2624, 7, 10, 0, 0, 2624, 366, 1, 0, 0, 0, 2625, 2626, 7, 12, 0, 0, 2626, 2627, 7, 5, 0, 0, 2627, 2628, 7, 16, 0, 0, 2628, 2629, 7, 5, 0, 0, 2629, 368, 1, 0, 0, 0, 2630, 2631, 7, 12, 0, 0, 2631, 2632, 7, 5, 0, 0, 2632, 2633, 7, 16, 0, 0, 2633, 2634, 7, 5, 0, 0, 2634, 2635, 7, 18, 0, 0, 2635, 2636, 7, 5, 0, 0, 2636, 2637, 7, 9, 0, 0, 2637, 2638, 7, 10, 0, 0, 2638, 370, 1, 0, 0, 0, 2639, 2640, 7, 12, 0, 0, 2640, 2641, 7, 5, 0, 0, 2641, 2642, 7, 8, 0, 0, 2642, 372, 1, 0, 0, 0, 2643, 2644, 7, 12, 0, 0, 2644, 2645, 7, 10, 0, 0, 2645, 2646, 7, 5, 0, 0, 2646, 2647, 7, 6, 0, 0, 2647, 2648, 7, 6, 0, 0, 2648, 2649, 7, 19, 0, 0, 2649, 2650, 7, 14, 0, 0, 2650, 2651, 7, 5, 0, 0, 2651, 2652, 7, 16, 0, 0, 2652, 2653, 7, 10, 0, 0, 2653, 374, 1, 0, 0, 0, 2654, 2655, 7, 12, 0, 0, 2655, 2656, 7, 10, 0, 0, 2656, 2657, 7, 14, 0, 0, 2657, 2658, 7, 6, 0, 0, 2658, 2659, 7, 5, 0, 0, 2659, 2660, 7, 13, 0, 0, 2660, 2661, 7, 10, 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, 5, 0, 0, 2666, 2667, 7, 22, 0, 0, 2667, 2668, 7, 6, 0, 0, 2668, 2669, 7, 16, 0, 0, 2669, 2670, 7, 9, 0, 0, 2670, 378, 1, 0, 0, 0, 2671, 2672, 7, 12, 0, 0, 2672, 2673, 7, 10, 0, 0, 2673, 2674, 7, 25, 0, 0, 2674, 2675, 7, 10, 0, 0, 2675, 2676, 7, 13, 0, 0, 2676, 2677, 7, 13, 0, 0, 2677, 2678, 7, 10, 0, 0, 2678, 2679, 7, 12, 0, 0, 2679, 380, 1, 0, 0, 0, 2680, 2681, 7, 12, 0, 0, 2681, 2682, 7, 10, 0, 0, 2682, 2683, 7, 25, 0, 0, 2683, 2684, 7, 17, 0, 0, 2684, 2685, 7, 7, 0, 0, 2685, 2686, 7, 10, 0, 0, 2686, 2687, 7, 13, 0, 0, 2687, 382, 1, 0, 0, 0, 2688, 2689, 7, 12, 0, 0, 2689, 2690, 7, 10, 0, 0, 2690, 2691, 7, 6, 0, 0, 2691, 2692, 7, 10, 0, 0, 2692, 2693, 7, 16, 0, 0, 2693, 2694, 7, 10, 0, 0, 2694, 384, 1, 0, 0, 0, 2695, 2696, 7, 12, 0, 0, 2696, 2697, 7, 10, 0, 0, 2697, 2698, 7, 6, 0, 0, 2698, 2699, 7, 17, 0, 0, 2699, 2700, 7, 15, 0, 0, 2700, 2701, 7, 17, 0, 0, 2701, 2702, 7, 16, 0, 0, 2702, 2703, 7, 10, 0, 0, 2703, 2704, 7, 13, 0, 0, 2704, 386, 1, 0, 0, 0, 2705, 2706, 7, 12, 0, 0, 2706, 2707, 7, 10, 0, 0, 2707, 2708, 7, 6, 0, 0, 2708, 2709, 7, 17, 0, 0, 2709, 2710, 7, 15, 0, 0, 2710, 2711, 7, 17, 0, 0, 2711, 2712, 7, 16, 0, 0, 2712, 2713, 7, 10, 0, 0, 2713, 2714, 7, 13, 0, 0, 2714, 2715, 7, 9, 0, 0, 2715, 388, 1, 0, 0, 0, 2716, 2717, 7, 12, 0, 0, 2717, 2718, 7, 17, 0, 0, 2718, 2719, 7, 14, 0, 0, 2719, 2720, 7, 16, 0, 0, 2720, 2721, 7, 17, 0, 0, 2721, 2722, 7, 19, 0, 0, 2722, 2723, 7, 7, 0, 0, 2723, 2724, 7, 5, 0, 0, 2724, 2725, 7, 13, 0, 0, 2725, 2726, 7, 8, 0, 0, 2726, 390, 1, 0, 0, 0, 2727, 2728, 7, 12, 0, 0, 2728, 2729, 7, 17, 0, 0, 2729, 2730, 7, 9, 0, 0, 2730, 2731, 7, 5, 0, 0, 2731, 2732, 7, 18, 0, 0, 2732, 2733, 7, 6, 0, 0, 2733, 2734, 7, 10, 0, 0, 2734, 392, 1, 0, 0, 0, 2735, 2736, 7, 12, 0, 0, 2736, 2737, 7, 17, 0, 0, 2737, 2738, 7, 9, 0, 0, 2738, 2739, 7, 14, 0, 0, 2739, 2740, 7, 5, 0, 0, 2740, 2741, 7, 13, 0, 0, 2741, 2742, 7, 12, 0, 0, 2742, 394, 1, 0, 0, 0, 2743, 2744, 7, 12, 0, 0, 2744, 2745, 7, 19, 0, 0, 2745, 2746, 7, 14, 0, 0, 2746, 2747, 7, 22, 0, 0, 2747, 2748, 7, 15, 0, 0, 2748, 2749, 7, 10, 0, 0, 2749, 2750, 7, 7, 0, 0, 2750, 2751, 7, 16, 0, 0, 2751, 396, 1, 0, 0, 0, 2752, 2753, 7, 12, 0, 0, 2753, 2754, 7, 19, 0, 0, 2754, 2755, 7, 15, 0, 0, 2755, 2756, 7, 5, 0, 0, 2756, 2757, 7, 17, 0, 0, 2757, 2758, 7, 7, 0, 0, 2758, 398, 1, 0, 0, 0, 2759, 2760, 7, 12, 0, 0, 2760, 2761, 7, 19, 0, 0, 2761, 2762, 7, 22, 0, 0, 2762, 2763, 7, 18, 0, 0, 2763, 2764, 7, 6, 0, 0, 2764, 2765, 7, 10, 0, 0, 2765, 400, 1, 0, 0, 0, 2766, 2767, 7, 12, 0, 0, 2767, 2768, 7, 13, 0, 0, 2768, 2769, 7, 19, 0, 0, 2769, 2770, 7, 24, 0, 0, 2770, 402, 1, 0, 0, 0, 2771, 2772, 7, 10, 0, 0, 2772, 2773, 7, 5, 0, 0, 2773, 2774, 7, 14, 0, 0, 2774, 2775, 7, 20, 0, 0, 2775, 404, 1, 0, 0, 0, 2776, 2777, 7, 10, 0, 0, 2777, 2778, 7, 7, 0, 0, 2778, 2779, 7, 5, 0, 0, 2779, 2780, 7, 18, 0, 0, 2780, 2781, 7, 6, 0, 0, 2781, 2782, 7, 10, 0, 0, 2782, 406, 1, 0, 0, 0, 2783, 2784, 7, 10, 0, 0, 2784, 2785, 7, 7, 0, 0, 2785, 2786, 7, 14, 0, 0, 2786, 2787, 7, 19, 0, 0, 2787, 2788, 7, 12, 0, 0, 2788, 2789, 7, 17, 0, 0, 2789, 2790, 7, 7, 0, 0, 2790, 2791, 7, 23, 0, 0, 2791, 408, 1, 0, 0, 0, 2792, 2793, 7, 10, 0, 0, 2793, 2794, 7, 7, 0, 0, 2794, 2795, 7, 14, 0, 0, 2795, 2796, 7, 13, 0, 0, 2796, 2797, 7, 8, 0, 0, 2797, 2798, 7, 24, 0, 0, 2798, 2799, 7, 16, 0, 0, 2799, 2800, 7, 10, 0, 0, 2800, 2801, 7, 12, 0, 0, 2801, 410, 1, 0, 0, 0, 2802, 2803, 7, 10, 0, 0, 2803, 2804, 7, 7, 0, 0, 2804, 2805, 7, 22, 0, 0, 2805, 2806, 7, 15, 0, 0, 2806, 412, 1, 0, 0, 0, 2807, 2808, 7, 10, 0, 0, 2808, 2809, 7, 9, 0, 0, 2809, 2810, 7, 14, 0, 0, 2810, 2811, 7, 5, 0, 0, 2811, 2812, 7, 24, 0, 0, 2812, 2813, 7, 10, 0, 0, 2813, 414, 1, 0, 0, 0, 2814, 2815, 7, 10, 0, 0, 2815, 2816, 7, 27, 0, 0, 2816, 2817, 7, 10, 0, 0, 2817, 2818, 7, 7, 0, 0, 2818, 2819, 7, 16, 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, 12, 0, 0, 2826, 2827, 7, 10, 0, 0, 2827, 418, 1, 0, 0, 0, 2828, 2829, 7, 10, 0, 0, 2829, 2830, 7, 26, 0, 0, 2830, 2831, 7, 14, 0, 0, 2831, 2832, 7, 6, 0, 0, 2832, 2833, 7, 22, 0, 0, 2833, 2834, 7, 12, 0, 0, 2834, 2835, 7, 17, 0, 0, 2835, 2836, 7, 7, 0, 0, 2836, 2837, 7, 23, 0, 0, 2837, 420, 1, 0, 0, 0, 2838, 2839, 7, 10, 0, 0, 2839, 2840, 7, 26, 0, 0, 2840, 2841, 7, 14, 0, 0, 2841, 2842, 7, 6, 0, 0, 2842, 2843, 7, 22, 0, 0, 2843, 2844, 7, 9, 0, 0, 2844, 2845, 7, 17, 0, 0, 2845, 2846, 7, 27, 0, 0, 2846, 2847, 7, 10, 0, 0, 2847, 422, 1, 0, 0, 0, 2848, 2849, 7, 10, 0, 0, 2849, 2850, 7, 26, 0, 0, 2850, 2851, 7, 10, 0, 0, 2851, 2852, 7, 14, 0, 0, 2852, 2853, 7, 22, 0, 0, 2853, 2854, 7, 16, 0, 0, 2854, 2855, 7, 10, 0, 0, 2855, 424, 1, 0, 0, 0, 2856, 2857, 7, 10, 0, 0, 2857, 2858, 7, 26, 0, 0, 2858, 2859, 7, 24, 0, 0, 2859, 2860, 7, 6, 0, 0, 2860, 2861, 7, 5, 0, 0, 2861, 2862, 7, 17, 0, 0, 2862, 2863, 7, 7, 0, 0, 2863, 426, 1, 0, 0, 0, 2864, 2865, 7, 10, 0, 0, 2865, 2866, 7, 26, 0, 0, 2866, 2867, 7, 16, 0, 0, 2867, 2868, 7, 10, 0, 0, 2868, 2869, 7, 7, 0, 0, 2869, 2870, 7, 9, 0, 0, 2870, 2871, 7, 17, 0, 0, 2871, 2872, 7, 19, 0, 0, 2872, 2873, 7, 7, 0, 0, 2873, 428, 1, 0, 0, 0, 2874, 2875, 7, 10, 0, 0, 2875, 2876, 7, 26, 0, 0, 2876, 2877, 7, 16, 0, 0, 2877, 2878, 7, 10, 0, 0, 2878, 2879, 7, 13, 0, 0, 2879, 2880, 7, 7, 0, 0, 2880, 2881, 7, 5, 0, 0, 2881, 2882, 7, 6, 0, 0, 2882, 430, 1, 0, 0, 0, 2883, 2884, 7, 25, 0, 0, 2884, 2885, 7, 5, 0, 0, 2885, 2886, 7, 15, 0, 0, 2886, 2887, 7, 17, 0, 0, 2887, 2888, 7, 6, 0, 0, 2888, 2889, 7, 8, 0, 0, 2889, 432, 1, 0, 0, 0, 2890, 2891, 7, 25, 0, 0, 2891, 2892, 7, 17, 0, 0, 2892, 2893, 7, 13, 0, 0, 2893, 2894, 7, 9, 0, 0, 2894, 2895, 7, 16, 0, 0, 2895, 434, 1, 0, 0, 0, 2896, 2897, 7, 25, 0, 0, 2897, 2898, 7, 19, 0, 0, 2898, 2899, 7, 6, 0, 0, 2899, 2900, 7, 6, 0, 0, 2900, 2901, 7, 19, 0, 0, 2901, 2902, 7, 28, 0, 0, 2902, 2903, 7, 17, 0, 0, 2903, 2904, 7, 7, 0, 0, 2904, 2905, 7, 23, 0, 0, 2905, 436, 1, 0, 0, 0, 2906, 2907, 7, 25, 0, 0, 2907, 2908, 7, 19, 0, 0, 2908, 2909, 7, 13, 0, 0, 2909, 2910, 7, 14, 0, 0, 2910, 2911, 7, 10, 0, 0, 2911, 438, 1, 0, 0, 0, 2912, 2913, 7, 25, 0, 0, 2913, 2914, 7, 19, 0, 0, 2914, 2915, 7, 13, 0, 0, 2915, 2916, 7, 28, 0, 0, 2916, 2917, 7, 5, 0, 0, 2917, 2918, 7, 13, 0, 0, 2918, 2919, 7, 12, 0, 0, 2919, 440, 1, 0, 0, 0, 2920, 2921, 7, 25, 0, 0, 2921, 2922, 7, 22, 0, 0, 2922, 2923, 7, 7, 0, 0, 2923, 2924, 7, 14, 0, 0, 2924, 2925, 7, 16, 0, 0, 2925, 2926, 7, 17, 0, 0, 2926, 2927, 7, 19, 0, 0, 2927, 2928, 7, 7, 0, 0, 2928, 442, 1, 0, 0, 0, 2929, 2930, 7, 25, 0, 0, 2930, 2931, 7, 22, 0, 0, 2931, 2932, 7, 7, 0, 0, 2932, 2933, 7, 14, 0, 0, 2933, 2934, 7, 16, 0, 0, 2934, 2935, 7, 17, 0, 0, 2935, 2936, 7, 19, 0, 0, 2936, 2937, 7, 7, 0, 0, 2937, 2938, 7, 9, 0, 0, 2938, 444, 1, 0, 0, 0, 2939, 2940, 7, 23, 0, 0, 2940, 2941, 7, 6, 0, 0, 2941, 2942, 7, 19, 0, 0, 2942, 2943, 7, 18, 0, 0, 2943, 2944, 7, 5, 0, 0, 2944, 2945, 7, 6, 0, 0, 2945, 446, 1, 0, 0, 0, 2946, 2947, 7, 23, 0, 0, 2947, 2948, 7, 13, 0, 0, 2948, 2949, 7, 5, 0, 0, 2949, 2950, 7, 7, 0, 0, 2950, 2951, 7, 16, 0, 0, 2951, 2952, 7, 10, 0, 0, 2952, 2953, 7, 12, 0, 0, 2953, 448, 1, 0, 0, 0, 2954, 2955, 7, 20, 0, 0, 2955, 2956, 7, 5, 0, 0, 2956, 2957, 7, 7, 0, 0, 2957, 2958, 7, 12, 0, 0, 2958, 2959, 7, 6, 0, 0, 2959, 2960, 7, 10, 0, 0, 2960, 2961, 7, 13, 0, 0, 2961, 450, 1, 0, 0, 0, 2962, 2963, 7, 20, 0, 0, 2963, 2964, 7, 10, 0, 0, 2964, 2965, 7, 5, 0, 0, 2965, 2966, 7, 12, 0, 0, 2966, 2967, 7, 10, 0, 0, 2967, 2968, 7, 13, 0, 0, 2968, 452, 1, 0, 0, 0, 2969, 2970, 7, 20, 0, 0, 2970, 2971, 7, 19, 0, 0, 2971, 2972, 7, 6, 0, 0, 2972, 2973, 7, 12, 0, 0, 2973, 454, 1, 0, 0, 0, 2974, 2975, 7, 20, 0, 0, 2975, 2976, 7, 19, 0, 0, 2976, 2977, 7, 22, 0, 0, 2977, 2978, 7, 13, 0, 0, 2978, 456, 1, 0, 0, 0, 2979, 2980, 7, 17, 0, 0, 2980, 2981, 7, 12, 0, 0, 2981, 2982, 7, 10, 0, 0, 2982, 2983, 7, 7, 0, 0, 2983, 2984, 7, 16, 0, 0, 2984, 2985, 7, 17, 0, 0, 2985, 2986, 7, 16, 0, 0, 2986, 2987, 7, 8, 0, 0, 2987, 458, 1, 0, 0, 0, 2988, 2989, 7, 17, 0, 0, 2989, 2990, 7, 25, 0, 0, 2990, 460, 1, 0, 0, 0, 2991, 2992, 7, 17, 0, 0, 2992, 2993, 7, 15, 0, 0, 2993, 2994, 7, 15, 0, 0, 2994, 2995, 7, 10, 0, 0, 2995, 2996, 7, 12, 0, 0, 2996, 2997, 7, 17, 0, 0, 2997, 2998, 7, 5, 0, 0, 2998, 2999, 7, 16, 0, 0, 2999, 3000, 7, 10, 0, 0, 3000, 462, 1, 0, 0, 0, 3001, 3002, 7, 17, 0, 0, 3002, 3003, 7, 15, 0, 0, 3003, 3004, 7, 15, 0, 0, 3004, 3005, 7, 22, 0, 0, 3005, 3006, 7, 16, 0, 0, 3006, 3007, 7, 5, 0, 0, 3007, 3008, 7, 18, 0, 0, 3008, 3009, 7, 6, 0, 0, 3009, 3010, 7, 10, 0, 0, 3010, 464, 1, 0, 0, 0, 3011, 3012, 7, 17, 0, 0, 3012, 3013, 7, 15, 0, 0, 3013, 3014, 7, 24, 0, 0, 3014, 3015, 7, 6, 0, 0, 3015, 3016, 7, 17, 0, 0, 3016, 3017, 7, 14, 0, 0, 3017, 3018, 7, 17, 0, 0, 3018, 3019, 7, 16, 0, 0, 3019, 466, 1, 0, 0, 0, 3020, 3021, 7, 17, 0, 0, 3021, 3022, 7, 7, 0, 0, 3022, 3023, 7, 14, 0, 0, 3023, 3024, 7, 6, 0, 0, 3024, 3025, 7, 22, 0, 0, 3025, 3026, 7, 12, 0, 0, 3026, 3027, 7, 17, 0, 0, 3027, 3028, 7, 7, 0, 0, 3028, 3029, 7, 23, 0, 0, 3029, 468, 1, 0, 0, 0, 3030, 3031, 7, 17, 0, 0, 3031, 3032, 7, 7, 0, 0, 3032, 3033, 7, 14, 0, 0, 3033, 3034, 7, 13, 0, 0, 3034, 3035, 7, 10, 0, 0, 3035, 3036, 7, 15, 0, 0, 3036, 3037, 7, 10, 0, 0, 3037, 3038, 7, 7, 0, 0, 3038, 3039, 7, 16, 0, 0, 3039, 470, 1, 0, 0, 0, 3040, 3041, 7, 17, 0, 0, 3041, 3042, 7, 7, 0, 0, 3042, 3043, 7, 12, 0, 0, 3043, 3044, 7, 10, 0, 0, 3044, 3045, 7, 26, 0, 0, 3045, 472, 1, 0, 0, 0, 3046, 3047, 7, 17, 0, 0, 3047, 3048, 7, 7, 0, 0, 3048, 3049, 7, 12, 0, 0, 3049, 3050, 7, 10, 0, 0, 3050, 3051, 7, 26, 0, 0, 3051, 3052, 7, 10, 0, 0, 3052, 3053, 7, 9, 0, 0, 3053, 474, 1, 0, 0, 0, 3054, 3055, 7, 17, 0, 0, 3055, 3056, 7, 7, 0, 0, 3056, 3057, 7, 20, 0, 0, 3057, 3058, 7, 10, 0, 0, 3058, 3059, 7, 13, 0, 0, 3059, 3060, 7, 17, 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, 20, 0, 0, 3065, 3066, 7, 10, 0, 0, 3066, 3067, 7, 13, 0, 0, 3067, 3068, 7, 17, 0, 0, 3068, 3069, 7, 16, 0, 0, 3069, 3070, 7, 9, 0, 0, 3070, 478, 1, 0, 0, 0, 3071, 3072, 7, 17, 0, 0, 3072, 3073, 7, 7, 0, 0, 3073, 3074, 7, 6, 0, 0, 3074, 3075, 7, 17, 0, 0, 3075, 3076, 7, 7, 0, 0, 3076, 3077, 7, 10, 0, 0, 3077, 480, 1, 0, 0, 0, 3078, 3079, 7, 17, 0, 0, 3079, 3080, 7, 7, 0, 0, 3080, 3081, 7, 9, 0, 0, 3081, 3082, 7, 10, 0, 0, 3082, 3083, 7, 7, 0, 0, 3083, 3084, 7, 9, 0, 0, 3084, 3085, 7, 17, 0, 0, 3085, 3086, 7, 16, 0, 0, 3086, 3087, 7, 17, 0, 0, 3087, 3088, 7, 27, 0, 0, 3088, 3089, 7, 10, 0, 0, 3089, 482, 1, 0, 0, 0, 3090, 3091, 7, 17, 0, 0, 3091, 3092, 7, 7, 0, 0, 3092, 3093, 7, 9, 0, 0, 3093, 3094, 7, 10, 0, 0, 3094, 3095, 7, 13, 0, 0, 3095, 3096, 7, 16, 0, 0, 3096, 484, 1, 0, 0, 0, 3097, 3098, 7, 17, 0, 0, 3098, 3099, 7, 7, 0, 0, 3099, 3100, 7, 9, 0, 0, 3100, 3101, 7, 16, 0, 0, 3101, 3102, 7, 10, 0, 0, 3102, 3103, 7, 5, 0, 0, 3103, 3104, 7, 12, 0, 0, 3104, 486, 1, 0, 0, 0, 3105, 3106, 7, 17, 0, 0, 3106, 3107, 7, 7, 0, 0, 3107, 3108, 7, 27, 0, 0, 3108, 3109, 7, 19, 0, 0, 3109, 3110, 7, 21, 0, 0, 3110, 3111, 7, 10, 0, 0, 3111, 3112, 7, 13, 0, 0, 3112, 488, 1, 0, 0, 0, 3113, 3114, 7, 17, 0, 0, 3114, 3115, 7, 9, 0, 0, 3115, 3116, 7, 19, 0, 0, 3116, 3117, 7, 6, 0, 0, 3117, 3118, 7, 5, 0, 0, 3118, 3119, 7, 16, 0, 0, 3119, 3120, 7, 17, 0, 0, 3120, 3121, 7, 19, 0, 0, 3121, 3122, 7, 7, 0, 0, 3122, 490, 1, 0, 0, 0, 3123, 3124, 7, 21, 0, 0, 3124, 3125, 7, 10, 0, 0, 3125, 3126, 7, 8, 0, 0, 3126, 492, 1, 0, 0, 0, 3127, 3128, 7, 6, 0, 0, 3128, 3129, 7, 5, 0, 0, 3129, 3130, 7, 18, 0, 0, 3130, 3131, 7, 10, 0, 0, 3131, 3132, 7, 6, 0, 0, 3132, 494, 1, 0, 0, 0, 3133, 3134, 7, 6, 0, 0, 3134, 3135, 7, 5, 0, 0, 3135, 3136, 7, 7, 0, 0, 3136, 3137, 7, 23, 0, 0, 3137, 3138, 7, 22, 0, 0, 3138, 3139, 7, 5, 0, 0, 3139, 3140, 7, 23, 0, 0, 3140, 3141, 7, 10, 0, 0, 3141, 496, 1, 0, 0, 0, 3142, 3143, 7, 6, 0, 0, 3143, 3144, 7, 5, 0, 0, 3144, 3145, 7, 13, 0, 0, 3145, 3146, 7, 23, 0, 0, 3146, 3147, 7, 10, 0, 0, 3147, 498, 1, 0, 0, 0, 3148, 3149, 7, 6, 0, 0, 3149, 3150, 7, 5, 0, 0, 3150, 3151, 7, 9, 0, 0, 3151, 3152, 7, 16, 0, 0, 3152, 500, 1, 0, 0, 0, 3153, 3154, 7, 6, 0, 0, 3154, 3155, 7, 10, 0, 0, 3155, 3156, 7, 5, 0, 0, 3156, 3157, 7, 21, 0, 0, 3157, 3158, 7, 24, 0, 0, 3158, 3159, 7, 13, 0, 0, 3159, 3160, 7, 19, 0, 0, 3160, 3161, 7, 19, 0, 0, 3161, 3162, 7, 25, 0, 0, 3162, 502, 1, 0, 0, 0, 3163, 3164, 7, 6, 0, 0, 3164, 3165, 7, 10, 0, 0, 3165, 3166, 7, 27, 0, 0, 3166, 3167, 7, 10, 0, 0, 3167, 3168, 7, 6, 0, 0, 3168, 504, 1, 0, 0, 0, 3169, 3170, 7, 6, 0, 0, 3170, 3171, 7, 17, 0, 0, 3171, 3172, 7, 9, 0, 0, 3172, 3173, 7, 16, 0, 0, 3173, 3174, 7, 10, 0, 0, 3174, 3175, 7, 7, 0, 0, 3175, 506, 1, 0, 0, 0, 3176, 3177, 7, 6, 0, 0, 3177, 3178, 7, 19, 0, 0, 3178, 3179, 7, 5, 0, 0, 3179, 3180, 7, 12, 0, 0, 3180, 508, 1, 0, 0, 0, 3181, 3182, 7, 6, 0, 0, 3182, 3183, 7, 19, 0, 0, 3183, 3184, 7, 14, 0, 0, 3184, 3185, 7, 5, 0, 0, 3185, 3186, 7, 6, 0, 0, 3186, 510, 1, 0, 0, 0, 3187, 3188, 7, 6, 0, 0, 3188, 3189, 7, 19, 0, 0, 3189, 3190, 7, 14, 0, 0, 3190, 3191, 7, 5, 0, 0, 3191, 3192, 7, 16, 0, 0, 3192, 3193, 7, 17, 0, 0, 3193, 3194, 7, 19, 0, 0, 3194, 3195, 7, 7, 0, 0, 3195, 512, 1, 0, 0, 0, 3196, 3197, 7, 6, 0, 0, 3197, 3198, 7, 19, 0, 0, 3198, 3199, 7, 14, 0, 0, 3199, 3200, 7, 21, 0, 0, 3200, 514, 1, 0, 0, 0, 3201, 3202, 7, 15, 0, 0, 3202, 3203, 7, 5, 0, 0, 3203, 3204, 7, 24, 0, 0, 3204, 3205, 7, 24, 0, 0, 3205, 3206, 7, 17, 0, 0, 3206, 3207, 7, 7, 0, 0, 3207, 3208, 7, 23, 0, 0, 3208, 516, 1, 0, 0, 0, 3209, 3210, 7, 15, 0, 0, 3210, 3211, 7, 5, 0, 0, 3211, 3212, 7, 16, 0, 0, 3212, 3213, 7, 14, 0, 0, 3213, 3214, 7, 20, 0, 0, 3214, 518, 1, 0, 0, 0, 3215, 3216, 7, 15, 0, 0, 3216, 3217, 7, 5, 0, 0, 3217, 3218, 7, 16, 0, 0, 3218, 3219, 7, 14, 0, 0, 3219, 3220, 7, 20, 0, 0, 3220, 3221, 7, 10, 0, 0, 3221, 3222, 7, 12, 0, 0, 3222, 520, 1, 0, 0, 0, 3223, 3224, 7, 15, 0, 0, 3224, 3225, 7, 5, 0, 0, 3225, 3226, 7, 16, 0, 0, 3226, 3227, 7, 10, 0, 0, 3227, 3228, 7, 13, 0, 0, 3228, 3229, 7, 17, 0, 0, 3229, 3230, 7, 5, 0, 0, 3230, 3231, 7, 6, 0, 0, 3231, 3232, 7, 17, 0, 0, 3232, 3233, 7, 11, 0, 0, 3233, 3234, 7, 10, 0, 0, 3234, 3235, 7, 12, 0, 0, 3235, 522, 1, 0, 0, 0, 3236, 3237, 7, 15, 0, 0, 3237, 3238, 7, 5, 0, 0, 3238, 3239, 7, 26, 0, 0, 3239, 3240, 7, 27, 0, 0, 3240, 3241, 7, 5, 0, 0, 3241, 3242, 7, 6, 0, 0, 3242, 3243, 7, 22, 0, 0, 3243, 3244, 7, 10, 0, 0, 3244, 524, 1, 0, 0, 0, 3245, 3246, 7, 15, 0, 0, 3246, 3247, 7, 10, 0, 0, 3247, 3248, 7, 13, 0, 0, 3248, 3249, 7, 23, 0, 0, 3249, 3250, 7, 10, 0, 0, 3250, 526, 1, 0, 0, 0, 3251, 3252, 7, 15, 0, 0, 3252, 3253, 7, 17, 0, 0, 3253, 3254, 7, 7, 0, 0, 3254, 3255, 7, 22, 0, 0, 3255, 3256, 7, 16, 0, 0, 3256, 3257, 7, 10, 0, 0, 3257, 528, 1, 0, 0, 0, 3258, 3259, 7, 15, 0, 0, 3259, 3260, 7, 17, 0, 0, 3260, 3261, 7, 7, 0, 0, 3261, 3262, 7, 27, 0, 0, 3262, 3263, 7, 5, 0, 0, 3263, 3264, 7, 6, 0, 0, 3264, 3265, 7, 22, 0, 0, 3265, 3266, 7, 10, 0, 0, 3266, 530, 1, 0, 0, 0, 3267, 3268, 7, 15, 0, 0, 3268, 3269, 7, 19, 0, 0, 3269, 3270, 7, 12, 0, 0, 3270, 3271, 7, 10, 0, 0, 3271, 532, 1, 0, 0, 0, 3272, 3273, 7, 15, 0, 0, 3273, 3274, 7, 19, 0, 0, 3274, 3275, 7, 7, 0, 0, 3275, 3276, 7, 16, 0, 0, 3276, 3277, 7, 20, 0, 0, 3277, 534, 1, 0, 0, 0, 3278, 3279, 7, 15, 0, 0, 3279, 3280, 7, 19, 0, 0, 3280, 3281, 7, 27, 0, 0, 3281, 3282, 7, 10, 0, 0, 3282, 536, 1, 0, 0, 0, 3283, 3284, 7, 7, 0, 0, 3284, 3285, 7, 5, 0, 0, 3285, 3286, 7, 15, 0, 0, 3286, 3287, 7, 10, 0, 0, 3287, 538, 1, 0, 0, 0, 3288, 3289, 7, 7, 0, 0, 3289, 3290, 7, 5, 0, 0, 3290, 3291, 7, 15, 0, 0, 3291, 3292, 7, 10, 0, 0, 3292, 3293, 7, 9, 0, 0, 3293, 540, 1, 0, 0, 0, 3294, 3295, 7, 7, 0, 0, 3295, 3296, 7, 10, 0, 0, 3296, 3297, 7, 26, 0, 0, 3297, 3298, 7, 16, 0, 0, 3298, 542, 1, 0, 0, 0, 3299, 3300, 7, 7, 0, 0, 3300, 3301, 7, 19, 0, 0, 3301, 544, 1, 0, 0, 0, 3302, 3303, 7, 7, 0, 0, 3303, 3304, 7, 19, 0, 0, 3304, 3305, 7, 16, 0, 0, 3305, 3306, 7, 20, 0, 0, 3306, 3307, 7, 17, 0, 0, 3307, 3308, 7, 7, 0, 0, 3308, 3309, 7, 23, 0, 0, 3309, 546, 1, 0, 0, 0, 3310, 3311, 7, 7, 0, 0, 3311, 3312, 7, 19, 0, 0, 3312, 3313, 7, 16, 0, 0, 3313, 3314, 7, 17, 0, 0, 3314, 3315, 7, 25, 0, 0, 3315, 3316, 7, 8, 0, 0, 3316, 548, 1, 0, 0, 0, 3317, 3318, 7, 7, 0, 0, 3318, 3319, 7, 19, 0, 0, 3319, 3320, 7, 28, 0, 0, 3320, 3321, 7, 5, 0, 0, 3321, 3322, 7, 17, 0, 0, 3322, 3323, 7, 16, 0, 0, 3323, 550, 1, 0, 0, 0, 3324, 3325, 7, 7, 0, 0, 3325, 3326, 7, 22, 0, 0, 3326, 3327, 7, 6, 0, 0, 3327, 3328, 7, 6, 0, 0, 3328, 3329, 7, 9, 0, 0, 3329, 552, 1, 0, 0, 0, 3330, 3331, 7, 19, 0, 0, 3331, 3332, 7, 18, 0, 0, 3332, 3333, 7, 30, 0, 0, 3333, 3334, 7, 10, 0, 0, 3334, 3335, 7, 14, 0, 0, 3335, 3336, 7, 16, 0, 0, 3336, 554, 1, 0, 0, 0, 3337, 3338, 7, 19, 0, 0, 3338, 3339, 7, 25, 0, 0, 3339, 556, 1, 0, 0, 0, 3340, 3341, 7, 19, 0, 0, 3341, 3342, 7, 25, 0, 0, 3342, 3343, 7, 25, 0, 0, 3343, 558, 1, 0, 0, 0, 3344, 3345, 7, 19, 0, 0, 3345, 3346, 7, 17, 0, 0, 3346, 3347, 7, 12, 0, 0, 3347, 3348, 7, 9, 0, 0, 3348, 560, 1, 0, 0, 0, 3349, 3350, 7, 19, 0, 0, 3350, 3351, 7, 24, 0, 0, 3351, 3352, 7, 10, 0, 0, 3352, 3353, 7, 13, 0, 0, 3353, 3354, 7, 5, 0, 0, 3354, 3355, 7, 16, 0, 0, 3355, 3356, 7, 19, 0, 0, 3356, 3357, 7, 13, 0, 0, 3357, 562, 1, 0, 0, 0, 3358, 3359, 7, 19, 0, 0, 3359, 3360, 7, 24, 0, 0, 3360, 3361, 7, 16, 0, 0, 3361, 3362, 7, 17, 0, 0, 3362, 3363, 7, 19, 0, 0, 3363, 3364, 7, 7, 0, 0, 3364, 564, 1, 0, 0, 0, 3365, 3366, 7, 19, 0, 0, 3366, 3367, 7, 24, 0, 0, 3367, 3368, 7, 16, 0, 0, 3368, 3369, 7, 17, 0, 0, 3369, 3370, 7, 19, 0, 0, 3370, 3371, 7, 7, 0, 0, 3371, 3372, 7, 9, 0, 0, 3372, 566, 1, 0, 0, 0, 3373, 3374, 7, 19, 0, 0, 3374, 3375, 7, 28, 0, 0, 3375, 3376, 7, 7, 0, 0, 3376, 3377, 7, 10, 0, 0, 3377, 3378, 7, 12, 0, 0, 3378, 568, 1, 0, 0, 0, 3379, 3380, 7, 19, 0, 0, 3380, 3381, 7, 28, 0, 0, 3381, 3382, 7, 7, 0, 0, 3382, 3383, 7, 10, 0, 0, 3383, 3384, 7, 13, 0, 0, 3384, 570, 1, 0, 0, 0, 3385, 3386, 7, 24, 0, 0, 3386, 3387, 7, 5, 0, 0, 3387, 3388, 7, 13, 0, 0, 3388, 3389, 7, 9, 0, 0, 3389, 3390, 7, 10, 0, 0, 3390, 3391, 7, 13, 0, 0, 3391, 572, 1, 0, 0, 0, 3392, 3393, 7, 24, 0, 0, 3393, 3394, 7, 5, 0, 0, 3394, 3395, 7, 13, 0, 0, 3395, 3396, 7, 16, 0, 0, 3396, 3397, 7, 17, 0, 0, 3397, 3398, 7, 5, 0, 0, 3398, 3399, 7, 6, 0, 0, 3399, 574, 1, 0, 0, 0, 3400, 3401, 7, 24, 0, 0, 3401, 3402, 7, 5, 0, 0, 3402, 3403, 7, 13, 0, 0, 3403, 3404, 7, 16, 0, 0, 3404, 3405, 7, 17, 0, 0, 3405, 3406, 7, 16, 0, 0, 3406, 3407, 7, 17, 0, 0, 3407, 3408, 7, 19, 0, 0, 3408, 3409, 7, 7, 0, 0, 3409, 576, 1, 0, 0, 0, 3410, 3411, 7, 24, 0, 0, 3411, 3412, 7, 5, 0, 0, 3412, 3413, 7, 9, 0, 0, 3413, 3414, 7, 9, 0, 0, 3414, 3415, 7, 17, 0, 0, 3415, 3416, 7, 7, 0, 0, 3416, 3417, 7, 23, 0, 0, 3417, 578, 1, 0, 0, 0, 3418, 3419, 7, 24, 0, 0, 3419, 3420, 7, 5, 0, 0, 3420, 3421, 7, 9, 0, 0, 3421, 3422, 7, 9, 0, 0, 3422, 3423, 7, 28, 0, 0, 3423, 3424, 7, 19, 0, 0, 3424, 3425, 7, 13, 0, 0, 3425, 3426, 7, 12, 0, 0, 3426, 580, 1, 0, 0, 0, 3427, 3428, 7, 24, 0, 0, 3428, 3429, 7, 6, 0, 0, 3429, 3430, 7, 5, 0, 0, 3430, 3431, 7, 7, 0, 0, 3431, 3432, 7, 9, 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, 14, 0, 0, 3437, 3438, 7, 10, 0, 0, 3438, 3439, 7, 12, 0, 0, 3439, 3440, 7, 17, 0, 0, 3440, 3441, 7, 7, 0, 0, 3441, 3442, 7, 23, 0, 0, 3442, 584, 1, 0, 0, 0, 3443, 3444, 7, 24, 0, 0, 3444, 3445, 7, 13, 0, 0, 3445, 3446, 7, 10, 0, 0, 3446, 3447, 7, 24, 0, 0, 3447, 3448, 7, 5, 0, 0, 3448, 3449, 7, 13, 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, 10, 0, 0, 3454, 3455, 7, 24, 0, 0, 3455, 3456, 7, 5, 0, 0, 3456, 3457, 7, 13, 0, 0, 3457, 3458, 7, 10, 0, 0, 3458, 3459, 7, 12, 0, 0, 3459, 588, 1, 0, 0, 0, 3460, 3461, 7, 24, 0, 0, 3461, 3462, 7, 13, 0, 0, 3462, 3463, 7, 10, 0, 0, 3463, 3464, 7, 9, 0, 0, 3464, 3465, 7, 10, 0, 0, 3465, 3466, 7, 13, 0, 0, 3466, 3467, 7, 27, 0, 0, 3467, 3468, 7, 10, 0, 0, 3468, 590, 1, 0, 0, 0, 3469, 3470, 7, 24, 0, 0, 3470, 3471, 7, 13, 0, 0, 3471, 3472, 7, 17, 0, 0, 3472, 3473, 7, 19, 0, 0, 3473, 3474, 7, 13, 0, 0, 3474, 592, 1, 0, 0, 0, 3475, 3476, 7, 24, 0, 0, 3476, 3477, 7, 13, 0, 0, 3477, 3478, 7, 17, 0, 0, 3478, 3479, 7, 27, 0, 0, 3479, 3480, 7, 17, 0, 0, 3480, 3481, 7, 6, 0, 0, 3481, 3482, 7, 10, 0, 0, 3482, 3483, 7, 23, 0, 0, 3483, 3484, 7, 10, 0, 0, 3484, 3485, 7, 9, 0, 0, 3485, 594, 1, 0, 0, 0, 3486, 3487, 7, 24, 0, 0, 3487, 3488, 7, 13, 0, 0, 3488, 3489, 7, 19, 0, 0, 3489, 3490, 7, 14, 0, 0, 3490, 3491, 7, 10, 0, 0, 3491, 3492, 7, 12, 0, 0, 3492, 3493, 7, 22, 0, 0, 3493, 3494, 7, 13, 0, 0, 3494, 3495, 7, 5, 0, 0, 3495, 3496, 7, 6, 0, 0, 3496, 596, 1, 0, 0, 0, 3497, 3498, 7, 24, 0, 0, 3498, 3499, 7, 13, 0, 0, 3499, 3500, 7, 19, 0, 0, 3500, 3501, 7, 14, 0, 0, 3501, 3502, 7, 10, 0, 0, 3502, 3503, 7, 12, 0, 0, 3503, 3504, 7, 22, 0, 0, 3504, 3505, 7, 13, 0, 0, 3505, 3506, 7, 10, 0, 0, 3506, 598, 1, 0, 0, 0, 3507, 3508, 7, 24, 0, 0, 3508, 3509, 7, 13, 0, 0, 3509, 3510, 7, 19, 0, 0, 3510, 3511, 7, 23, 0, 0, 3511, 3512, 7, 13, 0, 0, 3512, 3513, 7, 5, 0, 0, 3513, 3514, 7, 15, 0, 0, 3514, 600, 1, 0, 0, 0, 3515, 3516, 7, 29, 0, 0, 3516, 3517, 7, 22, 0, 0, 3517, 3518, 7, 19, 0, 0, 3518, 3519, 7, 16, 0, 0, 3519, 3520, 7, 10, 0, 0, 3520, 602, 1, 0, 0, 0, 3521, 3522, 7, 13, 0, 0, 3522, 3523, 7, 5, 0, 0, 3523, 3524, 7, 7, 0, 0, 3524, 3525, 7, 23, 0, 0, 3525, 3526, 7, 10, 0, 0, 3526, 604, 1, 0, 0, 0, 3527, 3528, 7, 13, 0, 0, 3528, 3529, 7, 10, 0, 0, 3529, 3530, 7, 5, 0, 0, 3530, 3531, 7, 12, 0, 0, 3531, 606, 1, 0, 0, 0, 3532, 3533, 7, 13, 0, 0, 3533, 3534, 7, 10, 0, 0, 3534, 3535, 7, 5, 0, 0, 3535, 3536, 7, 9, 0, 0, 3536, 3537, 7, 9, 0, 0, 3537, 3538, 7, 17, 0, 0, 3538, 3539, 7, 23, 0, 0, 3539, 3540, 7, 7, 0, 0, 3540, 608, 1, 0, 0, 0, 3541, 3542, 7, 13, 0, 0, 3542, 3543, 7, 10, 0, 0, 3543, 3544, 7, 14, 0, 0, 3544, 3545, 7, 20, 0, 0, 3545, 3546, 7, 10, 0, 0, 3546, 3547, 7, 14, 0, 0, 3547, 3548, 7, 21, 0, 0, 3548, 610, 1, 0, 0, 0, 3549, 3550, 7, 13, 0, 0, 3550, 3551, 7, 10, 0, 0, 3551, 3552, 7, 14, 0, 0, 3552, 3553, 7, 22, 0, 0, 3553, 3554, 7, 13, 0, 0, 3554, 3555, 7, 9, 0, 0, 3555, 3556, 7, 17, 0, 0, 3556, 3557, 7, 27, 0, 0, 3557, 3558, 7, 10, 0, 0, 3558, 612, 1, 0, 0, 0, 3559, 3560, 7, 13, 0, 0, 3560, 3561, 7, 10, 0, 0, 3561, 3562, 7, 25, 0, 0, 3562, 614, 1, 0, 0, 0, 3563, 3564, 7, 13, 0, 0, 3564, 3565, 7, 10, 0, 0, 3565, 3566, 7, 25, 0, 0, 3566, 3567, 7, 13, 0, 0, 3567, 3568, 7, 10, 0, 0, 3568, 3569, 7, 9, 0, 0, 3569, 3570, 7, 20, 0, 0, 3570, 616, 1, 0, 0, 0, 3571, 3572, 7, 13, 0, 0, 3572, 3573, 7, 10, 0, 0, 3573, 3574, 7, 17, 0, 0, 3574, 3575, 7, 7, 0, 0, 3575, 3576, 7, 12, 0, 0, 3576, 3577, 7, 10, 0, 0, 3577, 3578, 7, 26, 0, 0, 3578, 618, 1, 0, 0, 0, 3579, 3580, 7, 13, 0, 0, 3580, 3581, 7, 10, 0, 0, 3581, 3582, 7, 6, 0, 0, 3582, 3583, 7, 5, 0, 0, 3583, 3584, 7, 16, 0, 0, 3584, 3585, 7, 17, 0, 0, 3585, 3586, 7, 27, 0, 0, 3586, 3587, 7, 10, 0, 0, 3587, 620, 1, 0, 0, 0, 3588, 3589, 7, 13, 0, 0, 3589, 3590, 7, 10, 0, 0, 3590, 3591, 7, 6, 0, 0, 3591, 3592, 7, 10, 0, 0, 3592, 3593, 7, 5, 0, 0, 3593, 3594, 7, 9, 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, 7, 0, 0, 3599, 3600, 7, 5, 0, 0, 3600, 3601, 7, 15, 0, 0, 3601, 3602, 7, 10, 0, 0, 3602, 624, 1, 0, 0, 0, 3603, 3604, 7, 13, 0, 0, 3604, 3605, 7, 10, 0, 0, 3605, 3606, 7, 24, 0, 0, 3606, 3607, 7, 10, 0, 0, 3607, 3608, 7, 5, 0, 0, 3608, 3609, 7, 16, 0, 0, 3609, 3610, 7, 5, 0, 0, 3610, 3611, 7, 18, 0, 0, 3611, 3612, 7, 6, 0, 0, 3612, 3613, 7, 10, 0, 0, 3613, 626, 1, 0, 0, 0, 3614, 3615, 7, 13, 0, 0, 3615, 3616, 7, 10, 0, 0, 3616, 3617, 7, 24, 0, 0, 3617, 3618, 7, 6, 0, 0, 3618, 3619, 7, 5, 0, 0, 3619, 3620, 7, 14, 0, 0, 3620, 3621, 7, 10, 0, 0, 3621, 628, 1, 0, 0, 0, 3622, 3623, 7, 13, 0, 0, 3623, 3624, 7, 10, 0, 0, 3624, 3625, 7, 24, 0, 0, 3625, 3626, 7, 6, 0, 0, 3626, 3627, 7, 17, 0, 0, 3627, 3628, 7, 14, 0, 0, 3628, 3629, 7, 5, 0, 0, 3629, 630, 1, 0, 0, 0, 3630, 3631, 7, 13, 0, 0, 3631, 3632, 7, 10, 0, 0, 3632, 3633, 7, 9, 0, 0, 3633, 3634, 7, 10, 0, 0, 3634, 3635, 7, 16, 0, 0, 3635, 632, 1, 0, 0, 0, 3636, 3637, 7, 13, 0, 0, 3637, 3638, 7, 10, 0, 0, 3638, 3639, 7, 9, 0, 0, 3639, 3640, 7, 16, 0, 0, 3640, 3641, 7, 5, 0, 0, 3641, 3642, 7, 13, 0, 0, 3642, 3643, 7, 16, 0, 0, 3643, 634, 1, 0, 0, 0, 3644, 3645, 7, 13, 0, 0, 3645, 3646, 7, 10, 0, 0, 3646, 3647, 7, 9, 0, 0, 3647, 3648, 7, 16, 0, 0, 3648, 3649, 7, 13, 0, 0, 3649, 3650, 7, 17, 0, 0, 3650, 3651, 7, 14, 0, 0, 3651, 3652, 7, 16, 0, 0, 3652, 636, 1, 0, 0, 0, 3653, 3654, 7, 13, 0, 0, 3654, 3655, 7, 10, 0, 0, 3655, 3656, 7, 16, 0, 0, 3656, 3657, 7, 22, 0, 0, 3657, 3658, 7, 13, 0, 0, 3658, 3659, 7, 7, 0, 0, 3659, 3660, 7, 9, 0, 0, 3660, 638, 1, 0, 0, 0, 3661, 3662, 7, 13, 0, 0, 3662, 3663, 7, 10, 0, 0, 3663, 3664, 7, 27, 0, 0, 3664, 3665, 7, 19, 0, 0, 3665, 3666, 7, 21, 0, 0, 3666, 3667, 7, 10, 0, 0, 3667, 640, 1, 0, 0, 0, 3668, 3669, 7, 13, 0, 0, 3669, 3670, 7, 19, 0, 0, 3670, 3671, 7, 6, 0, 0, 3671, 3672, 7, 10, 0, 0, 3672, 642, 1, 0, 0, 0, 3673, 3674, 7, 13, 0, 0, 3674, 3675, 7, 19, 0, 0, 3675, 3676, 7, 6, 0, 0, 3676, 3677, 7, 6, 0, 0, 3677, 3678, 7, 18, 0, 0, 3678, 3679, 7, 5, 0, 0, 3679, 3680, 7, 14, 0, 0, 3680, 3681, 7, 21, 0, 0, 3681, 644, 1, 0, 0, 0, 3682, 3683, 7, 13, 0, 0, 3683, 3684, 7, 19, 0, 0, 3684, 3685, 7, 28, 0, 0, 3685, 3686, 7, 9, 0, 0, 3686, 646, 1, 0, 0, 0, 3687, 3688, 7, 13, 0, 0, 3688, 3689, 7, 22, 0, 0, 3689, 3690, 7, 6, 0, 0, 3690, 3691, 7, 10, 0, 0, 3691, 648, 1, 0, 0, 0, 3692, 3693, 7, 9, 0, 0, 3693, 3694, 7, 5, 0, 0, 3694, 3695, 7, 27, 0, 0, 3695, 3696, 7, 10, 0, 0, 3696, 3697, 7, 24, 0, 0, 3697, 3698, 7, 19, 0, 0, 3698, 3699, 7, 17, 0, 0, 3699, 3700, 7, 7, 0, 0, 3700, 3701, 7, 16, 0, 0, 3701, 650, 1, 0, 0, 0, 3702, 3703, 7, 9, 0, 0, 3703, 3704, 7, 14, 0, 0, 3704, 3705, 7, 20, 0, 0, 3705, 3706, 7, 10, 0, 0, 3706, 3707, 7, 15, 0, 0, 3707, 3708, 7, 5, 0, 0, 3708, 652, 1, 0, 0, 0, 3709, 3710, 7, 9, 0, 0, 3710, 3711, 7, 14, 0, 0, 3711, 3712, 7, 13, 0, 0, 3712, 3713, 7, 19, 0, 0, 3713, 3714, 7, 6, 0, 0, 3714, 3715, 7, 6, 0, 0, 3715, 654, 1, 0, 0, 0, 3716, 3717, 7, 9, 0, 0, 3717, 3718, 7, 10, 0, 0, 3718, 3719, 7, 5, 0, 0, 3719, 3720, 7, 13, 0, 0, 3720, 3721, 7, 14, 0, 0, 3721, 3722, 7, 20, 0, 0, 3722, 656, 1, 0, 0, 0, 3723, 3724, 7, 9, 0, 0, 3724, 3725, 7, 10, 0, 0, 3725, 3726, 7, 14, 0, 0, 3726, 3727, 7, 19, 0, 0, 3727, 3728, 7, 7, 0, 0, 3728, 3729, 7, 12, 0, 0, 3729, 658, 1, 0, 0, 0, 3730, 3731, 7, 9, 0, 0, 3731, 3732, 7, 10, 0, 0, 3732, 3733, 7, 14, 0, 0, 3733, 3734, 7, 22, 0, 0, 3734, 3735, 7, 13, 0, 0, 3735, 3736, 7, 17, 0, 0, 3736, 3737, 7, 16, 0, 0, 3737, 3738, 7, 8, 0, 0, 3738, 660, 1, 0, 0, 0, 3739, 3740, 7, 9, 0, 0, 3740, 3741, 7, 10, 0, 0, 3741, 3742, 7, 29, 0, 0, 3742, 3743, 7, 22, 0, 0, 3743, 3744, 7, 10, 0, 0, 3744, 3745, 7, 7, 0, 0, 3745, 3746, 7, 14, 0, 0, 3746, 3747, 7, 10, 0, 0, 3747, 662, 1, 0, 0, 0, 3748, 3749, 7, 9, 0, 0, 3749, 3750, 7, 10, 0, 0, 3750, 3751, 7, 29, 0, 0, 3751, 3752, 7, 22, 0, 0, 3752, 3753, 7, 10, 0, 0, 3753, 3754, 7, 7, 0, 0, 3754, 3755, 7, 14, 0, 0, 3755, 3756, 7, 10, 0, 0, 3756, 3757, 7, 9, 0, 0, 3757, 664, 1, 0, 0, 0, 3758, 3759, 7, 9, 0, 0, 3759, 3760, 7, 10, 0, 0, 3760, 3761, 7, 13, 0, 0, 3761, 3762, 7, 17, 0, 0, 3762, 3763, 7, 5, 0, 0, 3763, 3764, 7, 6, 0, 0, 3764, 3765, 7, 17, 0, 0, 3765, 3766, 7, 11, 0, 0, 3766, 3767, 7, 5, 0, 0, 3767, 3768, 7, 18, 0, 0, 3768, 3769, 7, 6, 0, 0, 3769, 3770, 7, 10, 0, 0, 3770, 666, 1, 0, 0, 0, 3771, 3772, 7, 9, 0, 0, 3772, 3773, 7, 10, 0, 0, 3773, 3774, 7, 13, 0, 0, 3774, 3775, 7, 27, 0, 0, 3775, 3776, 7, 10, 0, 0, 3776, 3777, 7, 13, 0, 0, 3777, 668, 1, 0, 0, 0, 3778, 3779, 7, 9, 0, 0, 3779, 3780, 7, 10, 0, 0, 3780, 3781, 7, 9, 0, 0, 3781, 3782, 7, 9, 0, 0, 3782, 3783, 7, 17, 0, 0, 3783, 3784, 7, 19, 0, 0, 3784, 3785, 7, 7, 0, 0, 3785, 670, 1, 0, 0, 0, 3786, 3787, 7, 9, 0, 0, 3787, 3788, 7, 10, 0, 0, 3788, 3789, 7, 16, 0, 0, 3789, 672, 1, 0, 0, 0, 3790, 3791, 7, 9, 0, 0, 3791, 3792, 7, 20, 0, 0, 3792, 3793, 7, 5, 0, 0, 3793, 3794, 7, 13, 0, 0, 3794, 3795, 7, 10, 0, 0, 3795, 674, 1, 0, 0, 0, 3796, 3797, 7, 9, 0, 0, 3797, 3798, 7, 20, 0, 0, 3798, 3799, 7, 19, 0, 0, 3799, 3800, 7, 28, 0, 0, 3800, 676, 1, 0, 0, 0, 3801, 3802, 7, 9, 0, 0, 3802, 3803, 7, 17, 0, 0, 3803, 3804, 7, 15, 0, 0, 3804, 3805, 7, 24, 0, 0, 3805, 3806, 7, 6, 0, 0, 3806, 3807, 7, 10, 0, 0, 3807, 678, 1, 0, 0, 0, 3808, 3809, 7, 9, 0, 0, 3809, 3810, 7, 7, 0, 0, 3810, 3811, 7, 5, 0, 0, 3811, 3812, 7, 24, 0, 0, 3812, 3813, 7, 9, 0, 0, 3813, 3814, 7, 20, 0, 0, 3814, 3815, 7, 19, 0, 0, 3815, 3816, 7, 16, 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, 18, 0, 0, 3821, 3822, 7, 6, 0, 0, 3822, 3823, 7, 10, 0, 0, 3823, 682, 1, 0, 0, 0, 3824, 3825, 7, 9, 0, 0, 3825, 3826, 7, 16, 0, 0, 3826, 3827, 7, 5, 0, 0, 3827, 3828, 7, 7, 0, 0, 3828, 3829, 7, 12, 0, 0, 3829, 3830, 7, 5, 0, 0, 3830, 3831, 7, 6, 0, 0, 3831, 3832, 7, 19, 0, 0, 3832, 3833, 7, 7, 0, 0, 3833, 3834, 7, 10, 0, 0, 3834, 684, 1, 0, 0, 0, 3835, 3836, 7, 9, 0, 0, 3836, 3837, 7, 16, 0, 0, 3837, 3838, 7, 5, 0, 0, 3838, 3839, 7, 13, 0, 0, 3839, 3840, 7, 16, 0, 0, 3840, 686, 1, 0, 0, 0, 3841, 3842, 7, 9, 0, 0, 3842, 3843, 7, 16, 0, 0, 3843, 3844, 7, 5, 0, 0, 3844, 3845, 7, 16, 0, 0, 3845, 3846, 7, 10, 0, 0, 3846, 3847, 7, 15, 0, 0, 3847, 3848, 7, 10, 0, 0, 3848, 3849, 7, 7, 0, 0, 3849, 3850, 7, 16, 0, 0, 3850, 688, 1, 0, 0, 0, 3851, 3852, 7, 9, 0, 0, 3852, 3853, 7, 16, 0, 0, 3853, 3854, 7, 5, 0, 0, 3854, 3855, 7, 16, 0, 0, 3855, 3856, 7, 17, 0, 0, 3856, 3857, 7, 9, 0, 0, 3857, 3858, 7, 16, 0, 0, 3858, 3859, 7, 17, 0, 0, 3859, 3860, 7, 14, 0, 0, 3860, 3861, 7, 9, 0, 0, 3861, 690, 1, 0, 0, 0, 3862, 3863, 7, 9, 0, 0, 3863, 3864, 7, 16, 0, 0, 3864, 3865, 7, 12, 0, 0, 3865, 3866, 7, 17, 0, 0, 3866, 3867, 7, 7, 0, 0, 3867, 692, 1, 0, 0, 0, 3868, 3869, 7, 9, 0, 0, 3869, 3870, 7, 16, 0, 0, 3870, 3871, 7, 12, 0, 0, 3871, 3872, 7, 19, 0, 0, 3872, 3873, 7, 22, 0, 0, 3873, 3874, 7, 16, 0, 0, 3874, 694, 1, 0, 0, 0, 3875, 3876, 7, 9, 0, 0, 3876, 3877, 7, 16, 0, 0, 3877, 3878, 7, 19, 0, 0, 3878, 3879, 7, 13, 0, 0, 3879, 3880, 7, 5, 0, 0, 3880, 3881, 7, 23, 0, 0, 3881, 3882, 7, 10, 0, 0, 3882, 696, 1, 0, 0, 0, 3883, 3884, 7, 9, 0, 0, 3884, 3885, 7, 16, 0, 0, 3885, 3886, 7, 13, 0, 0, 3886, 3887, 7, 17, 0, 0, 3887, 3888, 7, 14, 0, 0, 3888, 3889, 7, 16, 0, 0, 3889, 698, 1, 0, 0, 0, 3890, 3891, 7, 9, 0, 0, 3891, 3892, 7, 16, 0, 0, 3892, 3893, 7, 13, 0, 0, 3893, 3894, 7, 17, 0, 0, 3894, 3895, 7, 24, 0, 0, 3895, 700, 1, 0, 0, 0, 3896, 3897, 7, 9, 0, 0, 3897, 3898, 7, 8, 0, 0, 3898, 3899, 7, 9, 0, 0, 3899, 3900, 7, 17, 0, 0, 3900, 3901, 7, 12, 0, 0, 3901, 702, 1, 0, 0, 0, 3902, 3903, 7, 9, 0, 0, 3903, 3904, 7, 8, 0, 0, 3904, 3905, 7, 9, 0, 0, 3905, 3906, 7, 16, 0, 0, 3906, 3907, 7, 10, 0, 0, 3907, 3908, 7, 15, 0, 0, 3908, 704, 1, 0, 0, 0, 3909, 3910, 7, 16, 0, 0, 3910, 3911, 7, 5, 0, 0, 3911, 3912, 7, 18, 0, 0, 3912, 3913, 7, 6, 0, 0, 3913, 3914, 7, 10, 0, 0, 3914, 3915, 7, 9, 0, 0, 3915, 706, 1, 0, 0, 0, 3916, 3917, 7, 16, 0, 0, 3917, 3918, 7, 5, 0, 0, 3918, 3919, 7, 18, 0, 0, 3919, 3920, 7, 6, 0, 0, 3920, 3921, 7, 10, 0, 0, 3921, 3922, 7, 9, 0, 0, 3922, 3923, 7, 24, 0, 0, 3923, 3924, 7, 5, 0, 0, 3924, 3925, 7, 14, 0, 0, 3925, 3926, 7, 10, 0, 0, 3926, 708, 1, 0, 0, 0, 3927, 3928, 7, 16, 0, 0, 3928, 3929, 7, 10, 0, 0, 3929, 3930, 7, 15, 0, 0, 3930, 3931, 7, 24, 0, 0, 3931, 710, 1, 0, 0, 0, 3932, 3933, 7, 16, 0, 0, 3933, 3934, 7, 10, 0, 0, 3934, 3935, 7, 15, 0, 0, 3935, 3936, 7, 24, 0, 0, 3936, 3937, 7, 6, 0, 0, 3937, 3938, 7, 5, 0, 0, 3938, 3939, 7, 16, 0, 0, 3939, 3940, 7, 10, 0, 0, 3940, 712, 1, 0, 0, 0, 3941, 3942, 7, 16, 0, 0, 3942, 3943, 7, 10, 0, 0, 3943, 3944, 7, 15, 0, 0, 3944, 3945, 7, 24, 0, 0, 3945, 3946, 7, 19, 0, 0, 3946, 3947, 7, 13, 0, 0, 3947, 3948, 7, 5, 0, 0, 3948, 3949, 7, 13, 0, 0, 3949, 3950, 7, 8, 0, 0, 3950, 714, 1, 0, 0, 0, 3951, 3952, 7, 16, 0, 0, 3952, 3953, 7, 10, 0, 0, 3953, 3954, 7, 26, 0, 0, 3954, 3955, 7, 16, 0, 0, 3955, 716, 1, 0, 0, 0, 3956, 3957, 7, 16, 0, 0, 3957, 3958, 7, 13, 0, 0, 3958, 3959, 7, 5, 0, 0, 3959, 3960, 7, 7, 0, 0, 3960, 3961, 7, 9, 0, 0, 3961, 3962, 7, 5, 0, 0, 3962, 3963, 7, 14, 0, 0, 3963, 3964, 7, 16, 0, 0, 3964, 3965, 7, 17, 0, 0, 3965, 3966, 7, 19, 0, 0, 3966, 3967, 7, 7, 0, 0, 3967, 718, 1, 0, 0, 0, 3968, 3969, 7, 16, 0, 0, 3969, 3970, 7, 13, 0, 0, 3970, 3971, 7, 17, 0, 0, 3971, 3972, 7, 23, 0, 0, 3972, 3973, 7, 23, 0, 0, 3973, 3974, 7, 10, 0, 0, 3974, 3975, 7, 13, 0, 0, 3975, 720, 1, 0, 0, 0, 3976, 3977, 7, 16, 0, 0, 3977, 3978, 7, 13, 0, 0, 3978, 3979, 7, 22, 0, 0, 3979, 3980, 7, 7, 0, 0, 3980, 3981, 7, 14, 0, 0, 3981, 3982, 7, 5, 0, 0, 3982, 3983, 7, 16, 0, 0, 3983, 3984, 7, 10, 0, 0, 3984, 722, 1, 0, 0, 0, 3985, 3986, 7, 16, 0, 0, 3986, 3987, 7, 13, 0, 0, 3987, 3988, 7, 22, 0, 0, 3988, 3989, 7, 9, 0, 0, 3989, 3990, 7, 16, 0, 0, 3990, 3991, 7, 10, 0, 0, 3991, 3992, 7, 12, 0, 0, 3992, 724, 1, 0, 0, 0, 3993, 3994, 7, 16, 0, 0, 3994, 3995, 7, 8, 0, 0, 3995, 3996, 7, 24, 0, 0, 3996, 3997, 7, 10, 0, 0, 3997, 726, 1, 0, 0, 0, 3998, 3999, 7, 16, 0, 0, 3999, 4000, 7, 8, 0, 0, 4000, 4001, 7, 24, 0, 0, 4001, 4002, 7, 10, 0, 0, 4002, 4003, 7, 9, 0, 0, 4003, 728, 1, 0, 0, 0, 4004, 4005, 7, 22, 0, 0, 4005, 4006, 7, 7, 0, 0, 4006, 4007, 7, 18, 0, 0, 4007, 4008, 7, 19, 0, 0, 4008, 4009, 7, 22, 0, 0, 4009, 4010, 7, 7, 0, 0, 4010, 4011, 7, 12, 0, 0, 4011, 4012, 7, 10, 0, 0, 4012, 4013, 7, 12, 0, 0, 4013, 730, 1, 0, 0, 0, 4014, 4015, 7, 22, 0, 0, 4015, 4016, 7, 7, 0, 0, 4016, 4017, 7, 14, 0, 0, 4017, 4018, 7, 19, 0, 0, 4018, 4019, 7, 15, 0, 0, 4019, 4020, 7, 15, 0, 0, 4020, 4021, 7, 17, 0, 0, 4021, 4022, 7, 16, 0, 0, 4022, 4023, 7, 16, 0, 0, 4023, 4024, 7, 10, 0, 0, 4024, 4025, 7, 12, 0, 0, 4025, 732, 1, 0, 0, 0, 4026, 4027, 7, 22, 0, 0, 4027, 4028, 7, 7, 0, 0, 4028, 4029, 7, 10, 0, 0, 4029, 4030, 7, 7, 0, 0, 4030, 4031, 7, 14, 0, 0, 4031, 4032, 7, 13, 0, 0, 4032, 4033, 7, 8, 0, 0, 4033, 4034, 7, 24, 0, 0, 4034, 4035, 7, 16, 0, 0, 4035, 4036, 7, 10, 0, 0, 4036, 4037, 7, 12, 0, 0, 4037, 734, 1, 0, 0, 0, 4038, 4039, 7, 22, 0, 0, 4039, 4040, 7, 7, 0, 0, 4040, 4041, 7, 21, 0, 0, 4041, 4042, 7, 7, 0, 0, 4042, 4043, 7, 19, 0, 0, 4043, 4044, 7, 28, 0, 0, 4044, 4045, 7, 7, 0, 0, 4045, 736, 1, 0, 0, 0, 4046, 4047, 7, 22, 0, 0, 4047, 4048, 7, 7, 0, 0, 4048, 4049, 7, 6, 0, 0, 4049, 4050, 7, 17, 0, 0, 4050, 4051, 7, 9, 0, 0, 4051, 4052, 7, 16, 0, 0, 4052, 4053, 7, 10, 0, 0, 4053, 4054, 7, 7, 0, 0, 4054, 738, 1, 0, 0, 0, 4055, 4056, 7, 22, 0, 0, 4056, 4057, 7, 7, 0, 0, 4057, 4058, 7, 6, 0, 0, 4058, 4059, 7, 19, 0, 0, 4059, 4060, 7, 23, 0, 0, 4060, 4061, 7, 23, 0, 0, 4061, 4062, 7, 10, 0, 0, 4062, 4063, 7, 12, 0, 0, 4063, 740, 1, 0, 0, 0, 4064, 4065, 7, 22, 0, 0, 4065, 4066, 7, 7, 0, 0, 4066, 4067, 7, 16, 0, 0, 4067, 4068, 7, 17, 0, 0, 4068, 4069, 7, 6, 0, 0, 4069, 742, 1, 0, 0, 0, 4070, 4071, 7, 22, 0, 0, 4071, 4072, 7, 24, 0, 0, 4072, 4073, 7, 12, 0, 0, 4073, 4074, 7, 5, 0, 0, 4074, 4075, 7, 16, 0, 0, 4075, 4076, 7, 10, 0, 0, 4076, 744, 1, 0, 0, 0, 4077, 4078, 7, 27, 0, 0, 4078, 4079, 7, 5, 0, 0, 4079, 4080, 7, 14, 0, 0, 4080, 4081, 7, 22, 0, 0, 4081, 4082, 7, 22, 0, 0, 4082, 4083, 7, 15, 0, 0, 4083, 746, 1, 0, 0, 0, 4084, 4085, 7, 27, 0, 0, 4085, 4086, 7, 5, 0, 0, 4086, 4087, 7, 6, 0, 0, 4087, 4088, 7, 17, 0, 0, 4088, 4089, 7, 12, 0, 0, 4089, 748, 1, 0, 0, 0, 4090, 4091, 7, 27, 0, 0, 4091, 4092, 7, 5, 0, 0, 4092, 4093, 7, 6, 0, 0, 4093, 4094, 7, 17, 0, 0, 4094, 4095, 7, 12, 0, 0, 4095, 4096, 7, 5, 0, 0, 4096, 4097, 7, 16, 0, 0, 4097, 4098, 7, 10, 0, 0, 4098, 750, 1, 0, 0, 0, 4099, 4100, 7, 27, 0, 0, 4100, 4101, 7, 5, 0, 0, 4101, 4102, 7, 6, 0, 0, 4102, 4103, 7, 17, 0, 0, 4103, 4104, 7, 12, 0, 0, 4104, 4105, 7, 5, 0, 0, 4105, 4106, 7, 16, 0, 0, 4106, 4107, 7, 19, 0, 0, 4107, 4108, 7, 13, 0, 0, 4108, 752, 1, 0, 0, 0, 4109, 4110, 7, 27, 0, 0, 4110, 4111, 7, 5, 0, 0, 4111, 4112, 7, 13, 0, 0, 4112, 4113, 7, 8, 0, 0, 4113, 4114, 7, 17, 0, 0, 4114, 4115, 7, 7, 0, 0, 4115, 4116, 7, 23, 0, 0, 4116, 754, 1, 0, 0, 0, 4117, 4118, 7, 27, 0, 0, 4118, 4119, 7, 10, 0, 0, 4119, 4120, 7, 13, 0, 0, 4120, 4121, 7, 9, 0, 0, 4121, 4122, 7, 17, 0, 0, 4122, 4123, 7, 19, 0, 0, 4123, 4124, 7, 7, 0, 0, 4124, 756, 1, 0, 0, 0, 4125, 4126, 7, 27, 0, 0, 4126, 4127, 7, 17, 0, 0, 4127, 4128, 7, 10, 0, 0, 4128, 4129, 7, 28, 0, 0, 4129, 758, 1, 0, 0, 0, 4130, 4131, 7, 27, 0, 0, 4131, 4132, 7, 19, 0, 0, 4132, 4133, 7, 6, 0, 0, 4133, 4134, 7, 5, 0, 0, 4134, 4135, 7, 16, 0, 0, 4135, 4136, 7, 17, 0, 0, 4136, 4137, 7, 6, 0, 0, 4137, 4138, 7, 10, 0, 0, 4138, 760, 1, 0, 0, 0, 4139, 4140, 7, 28, 0, 0, 4140, 4141, 7, 20, 0, 0, 4141, 4142, 7, 17, 0, 0, 4142, 4143, 7, 16, 0, 0, 4143, 4144, 7, 10, 0, 0, 4144, 4145, 7, 9, 0, 0, 4145, 4146, 7, 24, 0, 0, 4146, 4147, 7, 5, 0, 0, 4147, 4148, 7, 14, 0, 0, 4148, 4149, 7, 10, 0, 0, 4149, 762, 1, 0, 0, 0, 4150, 4151, 7, 28, 0, 0, 4151, 4152, 7, 17, 0, 0, 4152, 4153, 7, 16, 0, 0, 4153, 4154, 7, 20, 0, 0, 4154, 4155, 7, 19, 0, 0, 4155, 4156, 7, 22, 0, 0, 4156, 4157, 7, 16, 0, 0, 4157, 764, 1, 0, 0, 0, 4158, 4159, 7, 28, 0, 0, 4159, 4160, 7, 19, 0, 0, 4160, 4161, 7, 13, 0, 0, 4161, 4162, 7, 21, 0, 0, 4162, 766, 1, 0, 0, 0, 4163, 4164, 7, 28, 0, 0, 4164, 4165, 7, 13, 0, 0, 4165, 4166, 7, 5, 0, 0, 4166, 4167, 7, 24, 0, 0, 4167, 4168, 7, 24, 0, 0, 4168, 4169, 7, 10, 0, 0, 4169, 4170, 7, 13, 0, 0, 4170, 768, 1, 0, 0, 0, 4171, 4172, 7, 28, 0, 0, 4172, 4173, 7, 13, 0, 0, 4173, 4174, 7, 17, 0, 0, 4174, 4175, 7, 16, 0, 0, 4175, 4176, 7, 10, 0, 0, 4176, 770, 1, 0, 0, 0, 4177, 4178, 7, 26, 0, 0, 4178, 4179, 7, 15, 0, 0, 4179, 4180, 7, 6, 0, 0, 4180, 772, 1, 0, 0, 0, 4181, 4182, 7, 8, 0, 0, 4182, 4183, 7, 10, 0, 0, 4183, 4184, 7, 5, 0, 0, 4184, 4185, 7, 13, 0, 0, 4185, 774, 1, 0, 0, 0, 4186, 4187, 7, 8, 0, 0, 4187, 4188, 7, 10, 0, 0, 4188, 4189, 7, 9, 0, 0, 4189, 776, 1, 0, 0, 0, 4190, 4191, 7, 11, 0, 0, 4191, 4192, 7, 19, 0, 0, 4192, 4193, 7, 7, 0, 0, 4193, 4194, 7, 10, 0, 0, 4194, 778, 1, 0, 0, 0, 4195, 4196, 7, 18, 0, 0, 4196, 4197, 7, 10, 0, 0, 4197, 4198, 7, 16, 0, 0, 4198, 4199, 7, 28, 0, 0, 4199, 4200, 7, 10, 0, 0, 4200, 4201, 7, 10, 0, 0, 4201, 4202, 7, 7, 0, 0, 4202, 780, 1, 0, 0, 0, 4203, 4204, 7, 18, 0, 0, 4204, 4205, 7, 17, 0, 0, 4205, 4206, 7, 23, 0, 0, 4206, 4207, 7, 17, 0, 0, 4207, 4208, 7, 7, 0, 0, 4208, 4209, 7, 16, 0, 0, 4209, 782, 1, 0, 0, 0, 4210, 4211, 7, 18, 0, 0, 4211, 4212, 7, 17, 0, 0, 4212, 4213, 7, 16, 0, 0, 4213, 784, 1, 0, 0, 0, 4214, 4215, 7, 18, 0, 0, 4215, 4216, 7, 19, 0, 0, 4216, 4217, 7, 19, 0, 0, 4217, 4218, 7, 6, 0, 0, 4218, 4219, 7, 10, 0, 0, 4219, 4220, 7, 5, 0, 0, 4220, 4221, 7, 7, 0, 0, 4221, 786, 1, 0, 0, 0, 4222, 4223, 7, 14, 0, 0, 4223, 4224, 7, 20, 0, 0, 4224, 4225, 7, 5, 0, 0, 4225, 4226, 7, 13, 0, 0, 4226, 788, 1, 0, 0, 0, 4227, 4228, 7, 14, 0, 0, 4228, 4229, 7, 20, 0, 0, 4229, 4230, 7, 5, 0, 0, 4230, 4231, 7, 13, 0, 0, 4231, 4232, 7, 5, 0, 0, 4232, 4233, 7, 14, 0, 0, 4233, 4234, 7, 16, 0, 0, 4234, 4235, 7, 10, 0, 0, 4235, 4236, 7, 13, 0, 0, 4236, 790, 1, 0, 0, 0, 4237, 4238, 7, 14, 0, 0, 4238, 4239, 7, 19, 0, 0, 4239, 4240, 7, 5, 0, 0, 4240, 4241, 7, 6, 0, 0, 4241, 4242, 7, 10, 0, 0, 4242, 4243, 7, 9, 0, 0, 4243, 4244, 7, 14, 0, 0, 4244, 4245, 7, 10, 0, 0, 4245, 792, 1, 0, 0, 0, 4246, 4247, 7, 12, 0, 0, 4247, 4248, 7, 10, 0, 0, 4248, 4249, 7, 14, 0, 0, 4249, 794, 1, 0, 0, 0, 4250, 4251, 7, 12, 0, 0, 4251, 4252, 7, 10, 0, 0, 4252, 4253, 7, 14, 0, 0, 4253, 4254, 7, 17, 0, 0, 4254, 4255, 7, 15, 0, 0, 4255, 4256, 7, 5, 0, 0, 4256, 4257, 7, 6, 0, 0, 4257, 796, 1, 0, 0, 0, 4258, 4259, 7, 10, 0, 0, 4259, 4260, 7, 26, 0, 0, 4260, 4261, 7, 17, 0, 0, 4261, 4262, 7, 9, 0, 0, 4262, 4263, 7, 16, 0, 0, 4263, 4264, 7, 9, 0, 0, 4264, 798, 1, 0, 0, 0, 4265, 4266, 7, 10, 0, 0, 4266, 4267, 7, 26, 0, 0, 4267, 4268, 7, 16, 0, 0, 4268, 4269, 7, 13, 0, 0, 4269, 4270, 7, 5, 0, 0, 4270, 4271, 7, 14, 0, 0, 4271, 4272, 7, 16, 0, 0, 4272, 800, 1, 0, 0, 0, 4273, 4274, 7, 25, 0, 0, 4274, 4275, 7, 6, 0, 0, 4275, 4276, 7, 19, 0, 0, 4276, 4277, 7, 5, 0, 0, 4277, 4278, 7, 16, 0, 0, 4278, 802, 1, 0, 0, 0, 4279, 4280, 7, 23, 0, 0, 4280, 4281, 7, 13, 0, 0, 4281, 4282, 7, 10, 0, 0, 4282, 4283, 7, 5, 0, 0, 4283, 4284, 7, 16, 0, 0, 4284, 4285, 7, 10, 0, 0, 4285, 4286, 7, 9, 0, 0, 4286, 4287, 7, 16, 0, 0, 4287, 804, 1, 0, 0, 0, 4288, 4289, 7, 17, 0, 0, 4289, 4290, 7, 7, 0, 0, 4290, 4291, 7, 19, 0, 0, 4291, 4292, 7, 22, 0, 0, 4292, 4293, 7, 16, 0, 0, 4293, 806, 1, 0, 0, 0, 4294, 4295, 7, 17, 0, 0, 4295, 4296, 7, 7, 0, 0, 4296, 4297, 7, 16, 0, 0, 4297, 808, 1, 0, 0, 0, 4298, 4299, 7, 17, 0, 0, 4299, 4300, 7, 7, 0, 0, 4300, 4301, 7, 16, 0, 0, 4301, 4302, 7, 10, 0, 0, 4302, 4303, 7, 23, 0, 0, 4303, 4304, 7, 10, 0, 0, 4304, 4305, 7, 13, 0, 0, 4305, 810, 1, 0, 0, 0, 4306, 4307, 7, 17, 0, 0, 4307, 4308, 7, 7, 0, 0, 4308, 4309, 7, 16, 0, 0, 4309, 4310, 7, 10, 0, 0, 4310, 4311, 7, 13, 0, 0, 4311, 4312, 7, 27, 0, 0, 4312, 4313, 7, 5, 0, 0, 4313, 4314, 7, 6, 0, 0, 4314, 812, 1, 0, 0, 0, 4315, 4316, 7, 6, 0, 0, 4316, 4317, 7, 10, 0, 0, 4317, 4318, 7, 5, 0, 0, 4318, 4319, 7, 9, 0, 0, 4319, 4320, 7, 16, 0, 0, 4320, 814, 1, 0, 0, 0, 4321, 4322, 7, 7, 0, 0, 4322, 4323, 7, 5, 0, 0, 4323, 4324, 7, 16, 0, 0, 4324, 4325, 7, 17, 0, 0, 4325, 4326, 7, 19, 0, 0, 4326, 4327, 7, 7, 0, 0, 4327, 4328, 7, 5, 0, 0, 4328, 4329, 7, 6, 0, 0, 4329, 816, 1, 0, 0, 0, 4330, 4331, 7, 7, 0, 0, 4331, 4332, 7, 14, 0, 0, 4332, 4333, 7, 20, 0, 0, 4333, 4334, 7, 5, 0, 0, 4334, 4335, 7, 13, 0, 0, 4335, 818, 1, 0, 0, 0, 4336, 4337, 7, 7, 0, 0, 4337, 4338, 7, 19, 0, 0, 4338, 4339, 7, 7, 0, 0, 4339, 4340, 7, 10, 0, 0, 4340, 820, 1, 0, 0, 0, 4341, 4342, 7, 7, 0, 0, 4342, 4343, 7, 22, 0, 0, 4343, 4344, 7, 6, 0, 0, 4344, 4345, 7, 6, 0, 0, 4345, 4346, 7, 17, 0, 0, 4346, 4347, 7, 25, 0, 0, 4347, 822, 1, 0, 0, 0, 4348, 4349, 7, 7, 0, 0, 4349, 4350, 7, 22, 0, 0, 4350, 4351, 7, 15, 0, 0, 4351, 4352, 7, 10, 0, 0, 4352, 4353, 7, 13, 0, 0, 4353, 4354, 7, 17, 0, 0, 4354, 4355, 7, 14, 0, 0, 4355, 824, 1, 0, 0, 0, 4356, 4357, 7, 19, 0, 0, 4357, 4358, 7, 27, 0, 0, 4358, 4359, 7, 10, 0, 0, 4359, 4360, 7, 13, 0, 0, 4360, 4361, 7, 6, 0, 0, 4361, 4362, 7, 5, 0, 0, 4362, 4363, 7, 8, 0, 0, 4363, 826, 1, 0, 0, 0, 4364, 4365, 7, 24, 0, 0, 4365, 4366, 7, 19, 0, 0, 4366, 4367, 7, 9, 0, 0, 4367, 4368, 7, 17, 0, 0, 4368, 4369, 7, 16, 0, 0, 4369, 4370, 7, 17, 0, 0, 4370, 4371, 7, 19, 0, 0, 4371, 4372, 7, 7, 0, 0, 4372, 828, 1, 0, 0, 0, 4373, 4374, 7, 24, 0, 0, 4374, 4375, 7, 13, 0, 0, 4375, 4376, 7, 10, 0, 0, 4376, 4377, 7, 14, 0, 0, 4377, 4378, 7, 17, 0, 0, 4378, 4379, 7, 9, 0, 0, 4379, 4380, 7, 17, 0, 0, 4380, 4381, 7, 19, 0, 0, 4381, 4382, 7, 7, 0, 0, 4382, 830, 1, 0, 0, 0, 4383, 4384, 7, 13, 0, 0, 4384, 4385, 7, 10, 0, 0, 4385, 4386, 7, 5, 0, 0, 4386, 4387, 7, 6, 0, 0, 4387, 832, 1, 0, 0, 0, 4388, 4389, 7, 13, 0, 0, 4389, 4390, 7, 19, 0, 0, 4390, 4391, 7, 28, 0, 0, 4391, 834, 1, 0, 0, 0, 4392, 4393, 7, 9, 0, 0, 4393, 4394, 7, 10, 0, 0, 4394, 4395, 7, 16, 0, 0, 4395, 4396, 7, 19, 0, 0, 4396, 4397, 7, 25, 0, 0, 4397, 836, 1, 0, 0, 0, 4398, 4399, 7, 9, 0, 0, 4399, 4400, 7, 15, 0, 0, 4400, 4401, 7, 5, 0, 0, 4401, 4402, 7, 6, 0, 0, 4402, 4403, 7, 6, 0, 0, 4403, 4404, 7, 17, 0, 0, 4404, 4405, 7, 7, 0, 0, 4405, 4406, 7, 16, 0, 0, 4406, 838, 1, 0, 0, 0, 4407, 4408, 7, 9, 0, 0, 4408, 4409, 7, 22, 0, 0, 4409, 4410, 7, 18, 0, 0, 4410, 4411, 7, 9, 0, 0, 4411, 4412, 7, 16, 0, 0, 4412, 4413, 7, 13, 0, 0, 4413, 4414, 7, 17, 0, 0, 4414, 4415, 7, 7, 0, 0, 4415, 4416, 7, 23, 0, 0, 4416, 840, 1, 0, 0, 0, 4417, 4418, 7, 16, 0, 0, 4418, 4419, 7, 17, 0, 0, 4419, 4420, 7, 15, 0, 0, 4420, 4421, 7, 10, 0, 0, 4421, 842, 1, 0, 0, 0, 4422, 4423, 7, 16, 0, 0, 4423, 4424, 7, 17, 0, 0, 4424, 4425, 7, 15, 0, 0, 4425, 4426, 7, 10, 0, 0, 4426, 4427, 7, 9, 0, 0, 4427, 4428, 7, 16, 0, 0, 4428, 4429, 7, 5, 0, 0, 4429, 4430, 7, 15, 0, 0, 4430, 4431, 7, 24, 0, 0, 4431, 844, 1, 0, 0, 0, 4432, 4433, 7, 16, 0, 0, 4433, 4434, 7, 13, 0, 0, 4434, 4435, 7, 10, 0, 0, 4435, 4436, 7, 5, 0, 0, 4436, 4437, 7, 16, 0, 0, 4437, 846, 1, 0, 0, 0, 4438, 4439, 7, 16, 0, 0, 4439, 4440, 7, 13, 0, 0, 4440, 4441, 7, 17, 0, 0, 4441, 4442, 7, 15, 0, 0, 4442, 848, 1, 0, 0, 0, 4443, 4444, 7, 27, 0, 0, 4444, 4445, 7, 5, 0, 0, 4445, 4446, 7, 6, 0, 0, 4446, 4447, 7, 22, 0, 0, 4447, 4448, 7, 10, 0, 0, 4448, 4449, 7, 9, 0, 0, 4449, 850, 1, 0, 0, 0, 4450, 4451, 7, 27, 0, 0, 4451, 4452, 7, 5, 0, 0, 4452, 4453, 7, 13, 0, 0, 4453, 4454, 7, 14, 0, 0, 4454, 4455, 7, 20, 0, 0, 4455, 4456, 7, 5, 0, 0, 4456, 4457, 7, 13, 0, 0, 4457, 852, 1, 0, 0, 0, 4458, 4459, 7, 26, 0, 0, 4459, 4460, 7, 15, 0, 0, 4460, 4461, 7, 6, 0, 0, 4461, 4462, 7, 5, 0, 0, 4462, 4463, 7, 16, 0, 0, 4463, 4464, 7, 16, 0, 0, 4464, 4465, 7, 13, 0, 0, 4465, 4466, 7, 17, 0, 0, 4466, 4467, 7, 18, 0, 0, 4467, 4468, 7, 22, 0, 0, 4468, 4469, 7, 16, 0, 0, 4469, 4470, 7, 10, 0, 0, 4470, 4471, 7, 9, 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, 7, 14, 0, 0, 4476, 4477, 7, 19, 0, 0, 4477, 4478, 7, 15, 0, 0, 4478, 4479, 7, 15, 0, 0, 4479, 4480, 7, 10, 0, 0, 4480, 4481, 7, 7, 0, 0, 4481, 4482, 7, 16, 0, 0, 4482, 856, 1, 0, 0, 0, 4483, 4484, 7, 26, 0, 0, 4484, 4485, 7, 15, 0, 0, 4485, 4486, 7, 6, 0, 0, 4486, 4487, 7, 5, 0, 0, 4487, 4488, 7, 23, 0, 0, 4488, 4489, 7, 23, 0, 0, 4489, 858, 1, 0, 0, 0, 4490, 4491, 7, 26, 0, 0, 4491, 4492, 7, 15, 0, 0, 4492, 4493, 7, 6, 0, 0, 4493, 4494, 5, 95, 0, 0, 4494, 4495, 7, 17, 0, 0, 4495, 4496, 7, 9, 0, 0, 4496, 4497, 5, 95, 0, 0, 4497, 4498, 7, 28, 0, 0, 4498, 4499, 7, 10, 0, 0, 4499, 4500, 7, 6, 0, 0, 4500, 4501, 7, 6, 0, 0, 4501, 4502, 5, 95, 0, 0, 4502, 4503, 7, 25, 0, 0, 4503, 4504, 7, 19, 0, 0, 4504, 4505, 7, 13, 0, 0, 4505, 4506, 7, 15, 0, 0, 4506, 4507, 7, 10, 0, 0, 4507, 4508, 7, 12, 0, 0, 4508, 860, 1, 0, 0, 0, 4509, 4510, 7, 26, 0, 0, 4510, 4511, 7, 15, 0, 0, 4511, 4512, 7, 6, 0, 0, 4512, 4513, 5, 95, 0, 0, 4513, 4514, 7, 17, 0, 0, 4514, 4515, 7, 9, 0, 0, 4515, 4516, 5, 95, 0, 0, 4516, 4517, 7, 28, 0, 0, 4517, 4518, 7, 10, 0, 0, 4518, 4519, 7, 6, 0, 0, 4519, 4520, 7, 6, 0, 0, 4520, 4521, 5, 95, 0, 0, 4521, 4522, 7, 25, 0, 0, 4522, 4523, 7, 19, 0, 0, 4523, 4524, 7, 13, 0, 0, 4524, 4525, 7, 15, 0, 0, 4525, 4526, 7, 10, 0, 0, 4526, 4527, 7, 12, 0, 0, 4527, 4528, 5, 95, 0, 0, 4528, 4529, 7, 12, 0, 0, 4529, 4530, 7, 19, 0, 0, 4530, 4531, 7, 14, 0, 0, 4531, 4532, 7, 22, 0, 0, 4532, 4533, 7, 15, 0, 0, 4533, 4534, 7, 10, 0, 0, 4534, 4535, 7, 7, 0, 0, 4535, 4536, 7, 16, 0, 0, 4536, 862, 1, 0, 0, 0, 4537, 4538, 7, 26, 0, 0, 4538, 4539, 7, 15, 0, 0, 4539, 4540, 7, 6, 0, 0, 4540, 4541, 5, 95, 0, 0, 4541, 4542, 7, 17, 0, 0, 4542, 4543, 7, 9, 0, 0, 4543, 4544, 5, 95, 0, 0, 4544, 4545, 7, 28, 0, 0, 4545, 4546, 7, 10, 0, 0, 4546, 4547, 7, 6, 0, 0, 4547, 4548, 7, 6, 0, 0, 4548, 4549, 5, 95, 0, 0, 4549, 4550, 7, 25, 0, 0, 4550, 4551, 7, 19, 0, 0, 4551, 4552, 7, 13, 0, 0, 4552, 4553, 7, 15, 0, 0, 4553, 4554, 7, 10, 0, 0, 4554, 4555, 7, 12, 0, 0, 4555, 4556, 5, 95, 0, 0, 4556, 4557, 7, 14, 0, 0, 4557, 4558, 7, 19, 0, 0, 4558, 4559, 7, 7, 0, 0, 4559, 4560, 7, 16, 0, 0, 4560, 4561, 7, 10, 0, 0, 4561, 4562, 7, 7, 0, 0, 4562, 4563, 7, 16, 0, 0, 4563, 864, 1, 0, 0, 0, 4564, 4565, 7, 26, 0, 0, 4565, 4566, 7, 24, 0, 0, 4566, 4567, 7, 5, 0, 0, 4567, 4568, 7, 16, 0, 0, 4568, 4569, 7, 20, 0, 0, 4569, 866, 1, 0, 0, 0, 4570, 4571, 7, 26, 0, 0, 4571, 4572, 7, 24, 0, 0, 4572, 4573, 7, 5, 0, 0, 4573, 4574, 7, 16, 0, 0, 4574, 4575, 7, 20, 0, 0, 4575, 4576, 5, 95, 0, 0, 4576, 4577, 7, 10, 0, 0, 4577, 4578, 7, 26, 0, 0, 4578, 4579, 7, 17, 0, 0, 4579, 4580, 7, 9, 0, 0, 4580, 4581, 7, 16, 0, 0, 4581, 4582, 7, 9, 0, 0, 4582, 868, 1, 0, 0, 0, 4583, 4584, 7, 26, 0, 0, 4584, 4585, 7, 15, 0, 0, 4585, 4586, 7, 6, 0, 0, 4586, 4587, 7, 14, 0, 0, 4587, 4588, 7, 19, 0, 0, 4588, 4589, 7, 7, 0, 0, 4589, 4590, 7, 14, 0, 0, 4590, 4591, 7, 5, 0, 0, 4591, 4592, 7, 16, 0, 0, 4592, 870, 1, 0, 0, 0, 4593, 4594, 7, 26, 0, 0, 4594, 4595, 7, 15, 0, 0, 4595, 4596, 7, 6, 0, 0, 4596, 4597, 7, 10, 0, 0, 4597, 4598, 7, 6, 0, 0, 4598, 4599, 7, 10, 0, 0, 4599, 4600, 7, 15, 0, 0, 4600, 4601, 7, 10, 0, 0, 4601, 4602, 7, 7, 0, 0, 4602, 4603, 7, 16, 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, 10, 0, 0, 4608, 4609, 7, 26, 0, 0, 4609, 4610, 7, 17, 0, 0, 4610, 4611, 7, 9, 0, 0, 4611, 4612, 7, 16, 0, 0, 4612, 4613, 7, 9, 0, 0, 4613, 874, 1, 0, 0, 0, 4614, 4615, 7, 26, 0, 0, 4615, 4616, 7, 15, 0, 0, 4616, 4617, 7, 6, 0, 0, 4617, 4618, 7, 25, 0, 0, 4618, 4619, 7, 19, 0, 0, 4619, 4620, 7, 13, 0, 0, 4620, 4621, 7, 10, 0, 0, 4621, 4622, 7, 9, 0, 0, 4622, 4623, 7, 16, 0, 0, 4623, 876, 1, 0, 0, 0, 4624, 4625, 7, 26, 0, 0, 4625, 4626, 7, 15, 0, 0, 4626, 4627, 7, 6, 0, 0, 4627, 4628, 7, 24, 0, 0, 4628, 4629, 7, 5, 0, 0, 4629, 4630, 7, 13, 0, 0, 4630, 4631, 7, 9, 0, 0, 4631, 4632, 7, 10, 0, 0, 4632, 878, 1, 0, 0, 0, 4633, 4634, 7, 26, 0, 0, 4634, 4635, 7, 15, 0, 0, 4635, 4636, 7, 6, 0, 0, 4636, 4637, 7, 24, 0, 0, 4637, 4638, 7, 17, 0, 0, 4638, 880, 1, 0, 0, 0, 4639, 4640, 7, 26, 0, 0, 4640, 4641, 7, 15, 0, 0, 4641, 4642, 7, 6, 0, 0, 4642, 4643, 7, 13, 0, 0, 4643, 4644, 7, 19, 0, 0, 4644, 4645, 7, 19, 0, 0, 4645, 4646, 7, 16, 0, 0, 4646, 882, 1, 0, 0, 0, 4647, 4648, 7, 26, 0, 0, 4648, 4649, 7, 15, 0, 0, 4649, 4650, 7, 6, 0, 0, 4650, 4651, 7, 9, 0, 0, 4651, 4652, 7, 10, 0, 0, 4652, 4653, 7, 13, 0, 0, 4653, 4654, 7, 17, 0, 0, 4654, 4655, 7, 5, 0, 0, 4655, 4656, 7, 6, 0, 0, 4656, 4657, 7, 17, 0, 0, 4657, 4658, 7, 11, 0, 0, 4658, 4659, 7, 10, 0, 0, 4659, 884, 1, 0, 0, 0, 4660, 4661, 7, 14, 0, 0, 4661, 4662, 7, 5, 0, 0, 4662, 4663, 7, 6, 0, 0, 4663, 4664, 7, 6, 0, 0, 4664, 886, 1, 0, 0, 0, 4665, 4666, 7, 14, 0, 0, 4666, 4667, 7, 22, 0, 0, 4667, 4668, 7, 13, 0, 0, 4668, 4669, 7, 13, 0, 0, 4669, 4670, 7, 10, 0, 0, 4670, 4671, 7, 7, 0, 0, 4671, 4672, 7, 16, 0, 0, 4672, 888, 1, 0, 0, 0, 4673, 4674, 7, 5, 0, 0, 4674, 4675, 7, 16, 0, 0, 4675, 4676, 7, 16, 0, 0, 4676, 4677, 7, 5, 0, 0, 4677, 4678, 7, 14, 0, 0, 4678, 4679, 7, 20, 0, 0, 4679, 890, 1, 0, 0, 0, 4680, 4681, 7, 12, 0, 0, 4681, 4682, 7, 10, 0, 0, 4682, 4683, 7, 16, 0, 0, 4683, 4684, 7, 5, 0, 0, 4684, 4685, 7, 14, 0, 0, 4685, 4686, 7, 20, 0, 0, 4686, 892, 1, 0, 0, 0, 4687, 4688, 7, 10, 0, 0, 4688, 4689, 7, 26, 0, 0, 4689, 4690, 7, 24, 0, 0, 4690, 4691, 7, 13, 0, 0, 4691, 4692, 7, 10, 0, 0, 4692, 4693, 7, 9, 0, 0, 4693, 4694, 7, 9, 0, 0, 4694, 4695, 7, 17, 0, 0, 4695, 4696, 7, 19, 0, 0, 4696, 4697, 7, 7, 0, 0, 4697, 894, 1, 0, 0, 0, 4698, 4699, 7, 23, 0, 0, 4699, 4700, 7, 10, 0, 0, 4700, 4701, 7, 7, 0, 0, 4701, 4702, 7, 10, 0, 0, 4702, 4703, 7, 13, 0, 0, 4703, 4704, 7, 5, 0, 0, 4704, 4705, 7, 16, 0, 0, 4705, 4706, 7, 10, 0, 0, 4706, 4707, 7, 12, 0, 0, 4707, 896, 1, 0, 0, 0, 4708, 4709, 7, 6, 0, 0, 4709, 4710, 7, 19, 0, 0, 4710, 4711, 7, 23, 0, 0, 4711, 4712, 7, 23, 0, 0, 4712, 4713, 7, 10, 0, 0, 4713, 4714, 7, 12, 0, 0, 4714, 898, 1, 0, 0, 0, 4715, 4716, 7, 9, 0, 0, 4716, 4717, 7, 16, 0, 0, 4717, 4718, 7, 19, 0, 0, 4718, 4719, 7, 13, 0, 0, 4719, 4720, 7, 10, 0, 0, 4720, 4721, 7, 12, 0, 0, 4721, 900, 1, 0, 0, 0, 4722, 4723, 7, 17, 0, 0, 4723, 4724, 7, 7, 0, 0, 4724, 4725, 7, 14, 0, 0, 4725, 4726, 7, 6, 0, 0, 4726, 4727, 7, 22, 0, 0, 4727, 4728, 7, 12, 0, 0, 4728, 4729, 7, 10, 0, 0, 4729, 902, 1, 0, 0, 0, 4730, 4731, 7, 13, 0, 0, 4731, 4732, 7, 19, 0, 0, 4732, 4733, 7, 22, 0, 0, 4733, 4734, 7, 16, 0, 0, 4734, 4735, 7, 17, 0, 0, 4735, 4736, 7, 7, 0, 0, 4736, 4737, 7, 10, 0, 0, 4737, 904, 1, 0, 0, 0, 4738, 4739, 7, 16, 0, 0, 4739, 4740, 7, 13, 0, 0, 4740, 4741, 7, 5, 0, 0, 4741, 4742, 7, 7, 0, 0, 4742, 4743, 7, 9, 0, 0, 4743, 4744, 7, 25, 0, 0, 4744, 4745, 7, 19, 0, 0, 4745, 4746, 7, 13, 0, 0, 4746, 4747, 7, 15, 0, 0, 4747, 906, 1, 0, 0, 0, 4748, 4749, 7, 17, 0, 0, 4749, 4750, 7, 15, 0, 0, 4750, 4751, 7, 24, 0, 0, 4751, 4752, 7, 19, 0, 0, 4752, 4753, 7, 13, 0, 0, 4753, 4754, 7, 16, 0, 0, 4754, 908, 1, 0, 0, 0, 4755, 4756, 7, 24, 0, 0, 4756, 4757, 7, 19, 0, 0, 4757, 4758, 7, 6, 0, 0, 4758, 4759, 7, 17, 0, 0, 4759, 4760, 7, 14, 0, 0, 4760, 4761, 7, 8, 0, 0, 4761, 910, 1, 0, 0, 0, 4762, 4763, 7, 15, 0, 0, 4763, 4764, 7, 10, 0, 0, 4764, 4765, 7, 16, 0, 0, 4765, 4766, 7, 20, 0, 0, 4766, 4767, 7, 19, 0, 0, 4767, 4768, 7, 12, 0, 0, 4768, 912, 1, 0, 0, 0, 4769, 4770, 7, 13, 0, 0, 4770, 4771, 7, 10, 0, 0, 4771, 4772, 7, 25, 0, 0, 4772, 4773, 7, 10, 0, 0, 4773, 4774, 7, 13, 0, 0, 4774, 4775, 7, 10, 0, 0, 4775, 4776, 7, 7, 0, 0, 4776, 4777, 7, 14, 0, 0, 4777, 4778, 7, 17, 0, 0, 4778, 4779, 7, 7, 0, 0, 4779, 4780, 7, 23, 0, 0, 4780, 914, 1, 0, 0, 0, 4781, 4782, 7, 7, 0, 0, 4782, 4783, 7, 10, 0, 0, 4783, 4784, 7, 28, 0, 0, 4784, 916, 1, 0, 0, 0, 4785, 4786, 7, 19, 0, 0, 4786, 4787, 7, 6, 0, 0, 4787, 4788, 7, 12, 0, 0, 4788, 918, 1, 0, 0, 0, 4789, 4790, 7, 27, 0, 0, 4790, 4791, 7, 5, 0, 0, 4791, 4792, 7, 6, 0, 0, 4792, 4793, 7, 22, 0, 0, 4793, 4794, 7, 10, 0, 0, 4794, 920, 1, 0, 0, 0, 4795, 4796, 7, 9, 0, 0, 4796, 4797, 7, 22, 0, 0, 4797, 4798, 7, 18, 0, 0, 4798, 4799, 7, 9, 0, 0, 4799, 4800, 7, 14, 0, 0, 4800, 4801, 7, 13, 0, 0, 4801, 4802, 7, 17, 0, 0, 4802, 4803, 7, 24, 0, 0, 4803, 4804, 7, 16, 0, 0, 4804, 4805, 7, 17, 0, 0, 4805, 4806, 7, 19, 0, 0, 4806, 4807, 7, 7, 0, 0, 4807, 922, 1, 0, 0, 0, 4808, 4809, 7, 24, 0, 0, 4809, 4810, 7, 22, 0, 0, 4810, 4811, 7, 18, 0, 0, 4811, 4812, 7, 6, 0, 0, 4812, 4813, 7, 17, 0, 0, 4813, 4814, 7, 14, 0, 0, 4814, 4815, 7, 5, 0, 0, 4815, 4816, 7, 16, 0, 0, 4816, 4817, 7, 17, 0, 0, 4817, 4818, 7, 19, 0, 0, 4818, 4819, 7, 7, 0, 0, 4819, 924, 1, 0, 0, 0, 4820, 4821, 7, 19, 0, 0, 4821, 4822, 7, 22, 0, 0, 4822, 4823, 7, 16, 0, 0, 4823, 926, 1, 0, 0, 0, 4824, 4825, 7, 10, 0, 0, 4825, 4826, 7, 7, 0, 0, 4826, 4827, 7, 12, 0, 0, 4827, 928, 1, 0, 0, 0, 4828, 4829, 7, 13, 0, 0, 4829, 4830, 7, 19, 0, 0, 4830, 4831, 7, 22, 0, 0, 4831, 4832, 7, 16, 0, 0, 4832, 4833, 7, 17, 0, 0, 4833, 4834, 7, 7, 0, 0, 4834, 4835, 7, 10, 0, 0, 4835, 4836, 7, 9, 0, 0, 4836, 930, 1, 0, 0, 0, 4837, 4838, 7, 9, 0, 0, 4838, 4839, 7, 14, 0, 0, 4839, 4840, 7, 20, 0, 0, 4840, 4841, 7, 10, 0, 0, 4841, 4842, 7, 15, 0, 0, 4842, 4843, 7, 5, 0, 0, 4843, 4844, 7, 9, 0, 0, 4844, 932, 1, 0, 0, 0, 4845, 4846, 7, 24, 0, 0, 4846, 4847, 7, 13, 0, 0, 4847, 4848, 7, 19, 0, 0, 4848, 4849, 7, 14, 0, 0, 4849, 4850, 7, 10, 0, 0, 4850, 4851, 7, 12, 0, 0, 4851, 4852, 7, 22, 0, 0, 4852, 4853, 7, 13, 0, 0, 4853, 4854, 7, 10, 0, 0, 4854, 4855, 7, 9, 0, 0, 4855, 934, 1, 0, 0, 0, 4856, 4857, 7, 17, 0, 0, 4857, 4858, 7, 7, 0, 0, 4858, 4859, 7, 24, 0, 0, 4859, 4860, 7, 22, 0, 0, 4860, 4861, 7, 16, 0, 0, 4861, 936, 1, 0, 0, 0, 4862, 4863, 7, 9, 0, 0, 4863, 4864, 7, 22, 0, 0, 4864, 4865, 7, 24, 0, 0, 4865, 4866, 7, 24, 0, 0, 4866, 4867, 7, 19, 0, 0, 4867, 4868, 7, 13, 0, 0, 4868, 4869, 7, 16, 0, 0, 4869, 938, 1, 0, 0, 0, 4870, 4871, 7, 24, 0, 0, 4871, 4872, 7, 5, 0, 0, 4872, 4873, 7, 13, 0, 0, 4873, 4874, 7, 5, 0, 0, 4874, 4875, 7, 6, 0, 0, 4875, 4876, 7, 6, 0, 0, 4876, 4877, 7, 10, 0, 0, 4877, 4878, 7, 6, 0, 0, 4878, 940, 1, 0, 0, 0, 4879, 4880, 7, 9, 0, 0, 4880, 4881, 7, 29, 0, 0, 4881, 4882, 7, 6, 0, 0, 4882, 942, 1, 0, 0, 0, 4883, 4884, 7, 12, 0, 0, 4884, 4885, 7, 10, 0, 0, 4885, 4886, 7, 24, 0, 0, 4886, 4887, 7, 10, 0, 0, 4887, 4888, 7, 7, 0, 0, 4888, 4889, 7, 12, 0, 0, 4889, 4890, 7, 9, 0, 0, 4890, 944, 1, 0, 0, 0, 4891, 4892, 7, 19, 0, 0, 4892, 4893, 7, 27, 0, 0, 4893, 4894, 7, 10, 0, 0, 4894, 4895, 7, 13, 0, 0, 4895, 4896, 7, 13, 0, 0, 4896, 4897, 7, 17, 0, 0, 4897, 4898, 7, 12, 0, 0, 4898, 4899, 7, 17, 0, 0, 4899, 4900, 7, 7, 0, 0, 4900, 4901, 7, 23, 0, 0, 4901, 946, 1, 0, 0, 0, 4902, 4903, 7, 14, 0, 0, 4903, 4904, 7, 19, 0, 0, 4904, 4905, 7, 7, 0, 0, 4905, 4906, 7, 25, 0, 0, 4906, 4907, 7, 6, 0, 0, 4907, 4908, 7, 17, 0, 0, 4908, 4909, 7, 14, 0, 0, 4909, 4910, 7, 16, 0, 0, 4910, 948, 1, 0, 0, 0, 4911, 4912, 7, 9, 0, 0, 4912, 4913, 7, 21, 0, 0, 4913, 4914, 7, 17, 0, 0, 4914, 4915, 7, 24, 0, 0, 4915, 950, 1, 0, 0, 0, 4916, 4917, 7, 6, 0, 0, 4917, 4918, 7, 19, 0, 0, 4918, 4919, 7, 14, 0, 0, 4919, 4920, 7, 21, 0, 0, 4920, 4921, 7, 10, 0, 0, 4921, 4922, 7, 12, 0, 0, 4922, 952, 1, 0, 0, 0, 4923, 4924, 7, 16, 0, 0, 4924, 4925, 7, 17, 0, 0, 4925, 4926, 7, 10, 0, 0, 4926, 4927, 7, 9, 0, 0, 4927, 954, 1, 0, 0, 0, 4928, 4929, 7, 13, 0, 0, 4929, 4930, 7, 19, 0, 0, 4930, 4931, 7, 6, 0, 0, 4931, 4932, 7, 6, 0, 0, 4932, 4933, 7, 22, 0, 0, 4933, 4934, 7, 24, 0, 0, 4934, 956, 1, 0, 0, 0, 4935, 4936, 7, 14, 0, 0, 4936, 4937, 7, 22, 0, 0, 4937, 4938, 7, 18, 0, 0, 4938, 4939, 7, 10, 0, 0, 4939, 958, 1, 0, 0, 0, 4940, 4941, 7, 23, 0, 0, 4941, 4942, 7, 13, 0, 0, 4942, 4943, 7, 19, 0, 0, 4943, 4944, 7, 22, 0, 0, 4944, 4945, 7, 24, 0, 0, 4945, 4946, 7, 17, 0, 0, 4946, 4947, 7, 7, 0, 0, 4947, 4948, 7, 23, 0, 0, 4948, 960, 1, 0, 0, 0, 4949, 4950, 7, 9, 0, 0, 4950, 4951, 7, 10, 0, 0, 4951, 4952, 7, 16, 0, 0, 4952, 4953, 7, 9, 0, 0, 4953, 962, 1, 0, 0, 0, 4954, 4955, 7, 16, 0, 0, 4955, 4956, 7, 5, 0, 0, 4956, 4957, 7, 18, 0, 0, 4957, 4958, 7, 6, 0, 0, 4958, 4959, 7, 10, 0, 0, 4959, 4960, 7, 9, 0, 0, 4960, 4961, 7, 5, 0, 0, 4961, 4962, 7, 15, 0, 0, 4962, 4963, 7, 24, 0, 0, 4963, 4964, 7, 6, 0, 0, 4964, 4965, 7, 10, 0, 0, 4965, 964, 1, 0, 0, 0, 4966, 4967, 7, 19, 0, 0, 4967, 4968, 7, 13, 0, 0, 4968, 4969, 7, 12, 0, 0, 4969, 4970, 7, 17, 0, 0, 4970, 4971, 7, 7, 0, 0, 4971, 4972, 7, 5, 0, 0, 4972, 4973, 7, 6, 0, 0, 4973, 4974, 7, 17, 0, 0, 4974, 4975, 7, 16, 0, 0, 4975, 4976, 7, 8, 0, 0, 4976, 966, 1, 0, 0, 0, 4977, 4978, 7, 26, 0, 0, 4978, 4979, 7, 15, 0, 0, 4979, 4980, 7, 6, 0, 0, 4980, 4981, 7, 16, 0, 0, 4981, 4982, 7, 5, 0, 0, 4982, 4983, 7, 18, 0, 0, 4983, 4984, 7, 6, 0, 0, 4984, 4985, 7, 10, 0, 0, 4985, 968, 1, 0, 0, 0, 4986, 4987, 7, 14, 0, 0, 4987, 4988, 7, 19, 0, 0, 4988, 4989, 7, 6, 0, 0, 4989, 4990, 7, 22, 0, 0, 4990, 4991, 7, 15, 0, 0, 4991, 4992, 7, 7, 0, 0, 4992, 4993, 7, 9, 0, 0, 4993, 970, 1, 0, 0, 0, 4994, 4995, 7, 26, 0, 0, 4995, 4996, 7, 15, 0, 0, 4996, 4997, 7, 6, 0, 0, 4997, 4998, 7, 7, 0, 0, 4998, 4999, 7, 5, 0, 0, 4999, 5000, 7, 15, 0, 0, 5000, 5001, 7, 10, 0, 0, 5001, 5002, 7, 9, 0, 0, 5002, 5003, 7, 24, 0, 0, 5003, 5004, 7, 5, 0, 0, 5004, 5005, 7, 14, 0, 0, 5005, 5006, 7, 10, 0, 0, 5006, 5007, 7, 9, 0, 0, 5007, 972, 1, 0, 0, 0, 5008, 5009, 7, 13, 0, 0, 5009, 5010, 7, 19, 0, 0, 5010, 5011, 7, 28, 0, 0, 5011, 5012, 7, 16, 0, 0, 5012, 5013, 7, 8, 0, 0, 5013, 5014, 7, 24, 0, 0, 5014, 5015, 7, 10, 0, 0, 5015, 974, 1, 0, 0, 0, 5016, 5017, 7, 7, 0, 0, 5017, 5018, 7, 19, 0, 0, 5018, 5019, 7, 13, 0, 0, 5019, 5020, 7, 15, 0, 0, 5020, 5021, 7, 5, 0, 0, 5021, 5022, 7, 6, 0, 0, 5022, 5023, 7, 17, 0, 0, 5023, 5024, 7, 11, 0, 0, 5024, 5025, 7, 10, 0, 0, 5025, 5026, 7, 12, 0, 0, 5026, 976, 1, 0, 0, 0, 5027, 5028, 7, 28, 0, 0, 5028, 5029, 7, 17, 0, 0, 5029, 5030, 7, 16, 0, 0, 5030, 5031, 7, 20, 0, 0, 5031, 5032, 7, 17, 0, 0, 5032, 5033, 7, 7, 0, 0, 5033, 978, 1, 0, 0, 0, 5034, 5035, 7, 25, 0, 0, 5035, 5036, 7, 17, 0, 0, 5036, 5037, 7, 6, 0, 0, 5037, 5038, 7, 16, 0, 0, 5038, 5039, 7, 10, 0, 0, 5039, 5040, 7, 13, 0, 0, 5040, 980, 1, 0, 0, 0, 5041, 5042, 7, 23, 0, 0, 5042, 5043, 7, 13, 0, 0, 5043, 5044, 7, 19, 0, 0, 5044, 5045, 7, 22, 0, 0, 5045, 5046, 7, 24, 0, 0, 5046, 5047, 7, 9, 0, 0, 5047, 982, 1, 0, 0, 0, 5048, 5049, 7, 19, 0, 0, 5049, 5050, 7, 16, 0, 0, 5050, 5051, 7, 20, 0, 0, 5051, 5052, 7, 10, 0, 0, 5052, 5053, 7, 13, 0, 0, 5053, 5054, 7, 9, 0, 0, 5054, 984, 1, 0, 0, 0, 5055, 5056, 7, 7, 0, 0, 5056, 5057, 7, 25, 0, 0, 5057, 5058, 7, 14, 0, 0, 5058, 986, 1, 0, 0, 0, 5059, 5060, 7, 7, 0, 0, 5060, 5061, 7, 25, 0, 0, 5061, 5062, 7, 12, 0, 0, 5062, 988, 1, 0, 0, 0, 5063, 5064, 7, 7, 0, 0, 5064, 5065, 7, 25, 0, 0, 5065, 5066, 7, 21, 0, 0, 5066, 5067, 7, 14, 0, 0, 5067, 990, 1, 0, 0, 0, 5068, 5069, 7, 7, 0, 0, 5069, 5070, 7, 25, 0, 0, 5070, 5071, 7, 21, 0, 0, 5071, 5072, 7, 12, 0, 0, 5072, 992, 1, 0, 0, 0, 5073, 5074, 7, 22, 0, 0, 5074, 5075, 7, 10, 0, 0, 5075, 5076, 7, 9, 0, 0, 5076, 5077, 7, 14, 0, 0, 5077, 5078, 7, 5, 0, 0, 5078, 5079, 7, 24, 0, 0, 5079, 5080, 7, 10, 0, 0, 5080, 994, 1, 0, 0, 0, 5081, 5082, 7, 27, 0, 0, 5082, 5083, 7, 17, 0, 0, 5083, 5084, 7, 10, 0, 0, 5084, 5085, 7, 28, 0, 0, 5085, 5086, 7, 9, 0, 0, 5086, 996, 1, 0, 0, 0, 5087, 5088, 7, 7, 0, 0, 5088, 5089, 7, 19, 0, 0, 5089, 5090, 7, 13, 0, 0, 5090, 5091, 7, 15, 0, 0, 5091, 5092, 7, 5, 0, 0, 5092, 5093, 7, 6, 0, 0, 5093, 5094, 7, 17, 0, 0, 5094, 5095, 7, 11, 0, 0, 5095, 5096, 7, 10, 0, 0, 5096, 998, 1, 0, 0, 0, 5097, 5098, 7, 12, 0, 0, 5098, 5099, 7, 22, 0, 0, 5099, 5100, 7, 15, 0, 0, 5100, 5101, 7, 24, 0, 0, 5101, 1000, 1, 0, 0, 0, 5102, 5103, 7, 24, 0, 0, 5103, 5104, 7, 13, 0, 0, 5104, 5105, 7, 17, 0, 0, 5105, 5106, 7, 7, 0, 0, 5106, 5107, 7, 16, 0, 0, 5107, 5108, 5, 95, 0, 0, 5108, 5109, 7, 9, 0, 0, 5109, 5110, 7, 16, 0, 0, 5110, 5111, 7, 13, 0, 0, 5111, 5112, 7, 17, 0, 0, 5112, 5113, 7, 14, 0, 0, 5113, 5114, 7, 16, 0, 0, 5114, 5115, 5, 95, 0, 0, 5115, 5116, 7, 24, 0, 0, 5116, 5117, 7, 5, 0, 0, 5117, 5118, 7, 13, 0, 0, 5118, 5119, 7, 5, 0, 0, 5119, 5120, 7, 15, 0, 0, 5120, 5121, 7, 9, 0, 0, 5121, 1002, 1, 0, 0, 0, 5122, 5123, 7, 27, 0, 0, 5123, 5124, 7, 5, 0, 0, 5124, 5125, 7, 13, 0, 0, 5125, 5126, 7, 17, 0, 0, 5126, 5127, 7, 5, 0, 0, 5127, 5128, 7, 18, 0, 0, 5128, 5129, 7, 6, 0, 0, 5129, 5130, 7, 10, 0, 0, 5130, 5131, 5, 95, 0, 0, 5131, 5132, 7, 14, 0, 0, 5132, 5133, 7, 19, 0, 0, 5133, 5134, 7, 7, 0, 0, 5134, 5135, 7, 25, 0, 0, 5135, 5136, 7, 6, 0, 0, 5136, 5137, 7, 17, 0, 0, 5137, 5138, 7, 14, 0, 0, 5138, 5139, 7, 16, 0, 0, 5139, 1004, 1, 0, 0, 0, 5140, 5141, 7, 10, 0, 0, 5141, 5142, 7, 13, 0, 0, 5142, 5143, 7, 13, 0, 0, 5143, 5144, 7, 19, 0, 0, 5144, 5145, 7, 13, 0, 0, 5145, 1006, 1, 0, 0, 0, 5146, 5147, 7, 22, 0, 0, 5147, 5148, 7, 9, 0, 0, 5148, 5149, 7, 10, 0, 0, 5149, 5150, 5, 95, 0, 0, 5150, 5151, 7, 27, 0, 0, 5151, 5152, 7, 5, 0, 0, 5152, 5153, 7, 13, 0, 0, 5153, 5154, 7, 17, 0, 0, 5154, 5155, 7, 5, 0, 0, 5155, 5156, 7, 18, 0, 0, 5156, 5157, 7, 6, 0, 0, 5157, 5158, 7, 10, 0, 0, 5158, 1008, 1, 0, 0, 0, 5159, 5160, 7, 22, 0, 0, 5160, 5161, 7, 9, 0, 0, 5161, 5162, 7, 10, 0, 0, 5162, 5163, 5, 95, 0, 0, 5163, 5164, 7, 14, 0, 0, 5164, 5165, 7, 19, 0, 0, 5165, 5166, 7, 6, 0, 0, 5166, 5167, 7, 22, 0, 0, 5167, 5168, 7, 15, 0, 0, 5168, 5169, 7, 7, 0, 0, 5169, 1010, 1, 0, 0, 0, 5170, 5171, 7, 5, 0, 0, 5171, 5172, 7, 6, 0, 0, 5172, 5173, 7, 17, 0, 0, 5173, 5174, 7, 5, 0, 0, 5174, 5175, 7, 9, 0, 0, 5175, 1012, 1, 0, 0, 0, 5176, 5177, 7, 14, 0, 0, 5177, 5178, 7, 19, 0, 0, 5178, 5179, 7, 7, 0, 0, 5179, 5180, 7, 9, 0, 0, 5180, 5181, 7, 16, 0, 0, 5181, 5182, 7, 5, 0, 0, 5182, 5183, 7, 7, 0, 0, 5183, 5184, 7, 16, 0, 0, 5184, 1014, 1, 0, 0, 0, 5185, 5186, 7, 24, 0, 0, 5186, 5187, 7, 10, 0, 0, 5187, 5188, 7, 13, 0, 0, 5188, 5189, 7, 25, 0, 0, 5189, 5190, 7, 19, 0, 0, 5190, 5191, 7, 13, 0, 0, 5191, 5192, 7, 15, 0, 0, 5192, 1016, 1, 0, 0, 0, 5193, 5194, 7, 23, 0, 0, 5194, 5195, 7, 10, 0, 0, 5195, 5196, 7, 16, 0, 0, 5196, 1018, 1, 0, 0, 0, 5197, 5198, 7, 12, 0, 0, 5198, 5199, 7, 17, 0, 0, 5199, 5200, 7, 5, 0, 0, 5200, 5201, 7, 23, 0, 0, 5201, 5202, 7, 7, 0, 0, 5202, 5203, 7, 19, 0, 0, 5203, 5204, 7, 9, 0, 0, 5204, 5205, 7, 16, 0, 0, 5205, 5206, 7, 17, 0, 0, 5206, 5207, 7, 14, 0, 0, 5207, 5208, 7, 9, 0, 0, 5208, 1020, 1, 0, 0, 0, 5209, 5210, 7, 9, 0, 0, 5210, 5211, 7, 16, 0, 0, 5211, 5212, 7, 5, 0, 0, 5212, 5213, 7, 14, 0, 0, 5213, 5214, 7, 21, 0, 0, 5214, 5215, 7, 10, 0, 0, 5215, 5216, 7, 12, 0, 0, 5216, 1022, 1, 0, 0, 0, 5217, 5218, 7, 10, 0, 0, 5218, 5219, 7, 6, 0, 0, 5219, 5220, 7, 9, 0, 0, 5220, 5221, 7, 17, 0, 0, 5221, 5222, 7, 25, 0, 0, 5222, 1024, 1, 0, 0, 0, 5223, 5224, 7, 28, 0, 0, 5224, 5225, 7, 20, 0, 0, 5225, 5226, 7, 17, 0, 0, 5226, 5227, 7, 6, 0, 0, 5227, 5228, 7, 10, 0, 0, 5228, 1026, 1, 0, 0, 0, 5229, 5230, 7, 13, 0, 0, 5230, 5231, 7, 10, 0, 0, 5231, 5232, 7, 27, 0, 0, 5232, 5233, 7, 10, 0, 0, 5233, 5234, 7, 13, 0, 0, 5234, 5235, 7, 9, 0, 0, 5235, 5236, 7, 10, 0, 0, 5236, 1028, 1, 0, 0, 0, 5237, 5238, 7, 25, 0, 0, 5238, 5239, 7, 19, 0, 0, 5239, 5240, 7, 13, 0, 0, 5240, 5241, 7, 10, 0, 0, 5241, 5242, 7, 5, 0, 0, 5242, 5243, 7, 14, 0, 0, 5243, 5244, 7, 20, 0, 0, 5244, 1030, 1, 0, 0, 0, 5245, 5246, 7, 9, 0, 0, 5246, 5247, 7, 6, 0, 0, 5247, 5248, 7, 17, 0, 0, 5248, 5249, 7, 14, 0, 0, 5249, 5250, 7, 10, 0, 0, 5250, 1032, 1, 0, 0, 0, 5251, 5252, 7, 10, 0, 0, 5252, 5253, 7, 26, 0, 0, 5253, 5254, 7, 17, 0, 0, 5254, 5255, 7, 16, 0, 0, 5255, 1034, 1, 0, 0, 0, 5256, 5257, 7, 13, 0, 0, 5257, 5258, 7, 10, 0, 0, 5258, 5259, 7, 16, 0, 0, 5259, 5260, 7, 22, 0, 0, 5260, 5261, 7, 13, 0, 0, 5261, 5262, 7, 7, 0, 0, 5262, 1036, 1, 0, 0, 0, 5263, 5264, 7, 29, 0, 0, 5264, 5265, 7, 22, 0, 0, 5265, 5266, 7, 10, 0, 0, 5266, 5267, 7, 13, 0, 0, 5267, 5268, 7, 8, 0, 0, 5268, 1038, 1, 0, 0, 0, 5269, 5270, 7, 13, 0, 0, 5270, 5271, 7, 5, 0, 0, 5271, 5272, 7, 17, 0, 0, 5272, 5273, 7, 9, 0, 0, 5273, 5274, 7, 10, 0, 0, 5274, 1040, 1, 0, 0, 0, 5275, 5276, 7, 9, 0, 0, 5276, 5277, 7, 29, 0, 0, 5277, 5278, 7, 6, 0, 0, 5278, 5279, 7, 9, 0, 0, 5279, 5280, 7, 16, 0, 0, 5280, 5281, 7, 5, 0, 0, 5281, 5282, 7, 16, 0, 0, 5282, 5283, 7, 10, 0, 0, 5283, 1042, 1, 0, 0, 0, 5284, 5285, 7, 12, 0, 0, 5285, 5286, 7, 10, 0, 0, 5286, 5287, 7, 18, 0, 0, 5287, 5288, 7, 22, 0, 0, 5288, 5289, 7, 23, 0, 0, 5289, 1044, 1, 0, 0, 0, 5290, 5291, 7, 6, 0, 0, 5291, 5292, 7, 19, 0, 0, 5292, 5293, 7, 23, 0, 0, 5293, 1046, 1, 0, 0, 0, 5294, 5295, 7, 17, 0, 0, 5295, 5296, 7, 7, 0, 0, 5296, 5297, 7, 25, 0, 0, 5297, 5298, 7, 19, 0, 0, 5298, 1048, 1, 0, 0, 0, 5299, 5300, 7, 7, 0, 0, 5300, 5301, 7, 19, 0, 0, 5301, 5302, 7, 16, 0, 0, 5302, 5303, 7, 17, 0, 0, 5303, 5304, 7, 14, 0, 0, 5304, 5305, 7, 10, 0, 0, 5305, 1050, 1, 0, 0, 0, 5306, 5307, 7, 28, 0, 0, 5307, 5308, 7, 5, 0, 0, 5308, 5309, 7, 13, 0, 0, 5309, 5310, 7, 7, 0, 0, 5310, 5311, 7, 17, 0, 0, 5311, 5312, 7, 7, 0, 0, 5312, 5313, 7, 23, 0, 0, 5313, 1052, 1, 0, 0, 0, 5314, 5315, 7, 10, 0, 0, 5315, 5316, 7, 26, 0, 0, 5316, 5317, 7, 14, 0, 0, 5317, 5318, 7, 10, 0, 0, 5318, 5319, 7, 24, 0, 0, 5319, 5320, 7, 16, 0, 0, 5320, 5321, 7, 17, 0, 0, 5321, 5322, 7, 19, 0, 0, 5322, 5323, 7, 7, 0, 0, 5323, 1054, 1, 0, 0, 0, 5324, 5325, 7, 5, 0, 0, 5325, 5326, 7, 9, 0, 0, 5326, 5327, 7, 9, 0, 0, 5327, 5328, 7, 10, 0, 0, 5328, 5329, 7, 13, 0, 0, 5329, 5330, 7, 16, 0, 0, 5330, 1056, 1, 0, 0, 0, 5331, 5332, 7, 6, 0, 0, 5332, 5333, 7, 19, 0, 0, 5333, 5334, 7, 19, 0, 0, 5334, 5335, 7, 24, 0, 0, 5335, 1058, 1, 0, 0, 0, 5336, 5337, 7, 19, 0, 0, 5337, 5338, 7, 24, 0, 0, 5338, 5339, 7, 10, 0, 0, 5339, 5340, 7, 7, 0, 0, 5340, 1060, 1, 0, 0, 0, 5341, 5342, 7, 5, 0, 0, 5342, 5343, 7, 18, 0, 0, 5343, 5344, 7, 9, 0, 0, 5344, 1062, 1, 0, 0, 0, 5345, 5346, 7, 14, 0, 0, 5346, 5347, 7, 18, 0, 0, 5347, 5348, 7, 13, 0, 0, 5348, 5349, 7, 16, 0, 0, 5349, 1064, 1, 0, 0, 0, 5350, 5351, 7, 14, 0, 0, 5351, 5352, 7, 10, 0, 0, 5352, 5353, 7, 17, 0, 0, 5353, 5354, 7, 6, 0, 0, 5354, 1066, 1, 0, 0, 0, 5355, 5356, 7, 14, 0, 0, 5356, 5357, 7, 10, 0, 0, 5357, 5358, 7, 17, 0, 0, 5358, 5359, 7, 6, 0, 0, 5359, 5360, 7, 17, 0, 0, 5360, 5361, 7, 7, 0, 0, 5361, 5362, 7, 23, 0, 0, 5362, 1068, 1, 0, 0, 0, 5363, 5364, 7, 12, 0, 0, 5364, 5365, 7, 10, 0, 0, 5365, 5366, 7, 23, 0, 0, 5366, 5367, 7, 13, 0, 0, 5367, 5368, 7, 10, 0, 0, 5368, 5369, 7, 10, 0, 0, 5369, 5370, 7, 9, 0, 0, 5370, 1070, 1, 0, 0, 0, 5371, 5372, 7, 12, 0, 0, 5372, 5373, 7, 17, 0, 0, 5373, 5374, 7, 27, 0, 0, 5374, 1072, 1, 0, 0, 0, 5375, 5376, 7, 10, 0, 0, 5376, 5377, 7, 26, 0, 0, 5377, 5378, 7, 24, 0, 0, 5378, 1074, 1, 0, 0, 0, 5379, 5380, 7, 25, 0, 0, 5380, 5381, 7, 5, 0, 0, 5381, 5382, 7, 14, 0, 0, 5382, 5383, 7, 16, 0, 0, 5383, 5384, 7, 19, 0, 0, 5384, 5385, 7, 13, 0, 0, 5385, 5386, 7, 17, 0, 0, 5386, 5387, 7, 5, 0, 0, 5387, 5388, 7, 6, 0, 0, 5388, 1076, 1, 0, 0, 0, 5389, 5390, 7, 25, 0, 0, 5390, 5391, 7, 6, 0, 0, 5391, 5392, 7, 19, 0, 0, 5392, 5393, 7, 19, 0, 0, 5393, 5394, 7, 13, 0, 0, 5394, 1078, 1, 0, 0, 0, 5395, 5396, 7, 23, 0, 0, 5396, 5397, 7, 14, 0, 0, 5397, 5398, 7, 12, 0, 0, 5398, 1080, 1, 0, 0, 0, 5399, 5400, 7, 6, 0, 0, 5400, 5401, 7, 14, 0, 0, 5401, 5402, 7, 15, 0, 0, 5402, 1082, 1, 0, 0, 0, 5403, 5404, 7, 6, 0, 0, 5404, 5405, 7, 7, 0, 0, 5405, 1084, 1, 0, 0, 0, 5406, 5407, 7, 6, 0, 0, 5407, 5408, 7, 19, 0, 0, 5408, 5409, 7, 23, 0, 0, 5409, 5410, 5, 49, 0, 0, 5410, 5411, 5, 48, 0, 0, 5411, 1086, 1, 0, 0, 0, 5412, 5413, 7, 15, 0, 0, 5413, 5414, 7, 17, 0, 0, 5414, 5415, 7, 7, 0, 0, 5415, 5416, 5, 95, 0, 0, 5416, 5417, 7, 9, 0, 0, 5417, 5418, 7, 14, 0, 0, 5418, 5419, 7, 5, 0, 0, 5419, 5420, 7, 6, 0, 0, 5420, 5421, 7, 10, 0, 0, 5421, 1088, 1, 0, 0, 0, 5422, 5423, 7, 15, 0, 0, 5423, 5424, 7, 19, 0, 0, 5424, 5425, 7, 12, 0, 0, 5425, 1090, 1, 0, 0, 0, 5426, 5427, 7, 24, 0, 0, 5427, 5428, 7, 17, 0, 0, 5428, 1092, 1, 0, 0, 0, 5429, 5430, 7, 24, 0, 0, 5430, 5431, 7, 19, 0, 0, 5431, 5432, 7, 28, 0, 0, 5432, 5433, 7, 10, 0, 0, 5433, 5434, 7, 13, 0, 0, 5434, 1094, 1, 0, 0, 0, 5435, 5436, 7, 13, 0, 0, 5436, 5437, 7, 5, 0, 0, 5437, 5438, 7, 12, 0, 0, 5438, 5439, 7, 17, 0, 0, 5439, 5440, 7, 5, 0, 0, 5440, 5441, 7, 7, 0, 0, 5441, 5442, 7, 9, 0, 0, 5442, 1096, 1, 0, 0, 0, 5443, 5444, 7, 13, 0, 0, 5444, 5445, 7, 19, 0, 0, 5445, 5446, 7, 22, 0, 0, 5446, 5447, 7, 7, 0, 0, 5447, 5448, 7, 12, 0, 0, 5448, 1098, 1, 0, 0, 0, 5449, 5450, 7, 9, 0, 0, 5450, 5451, 7, 14, 0, 0, 5451, 5452, 7, 5, 0, 0, 5452, 5453, 7, 6, 0, 0, 5453, 5454, 7, 10, 0, 0, 5454, 1100, 1, 0, 0, 0, 5455, 5456, 7, 9, 0, 0, 5456, 5457, 7, 17, 0, 0, 5457, 5458, 7, 23, 0, 0, 5458, 5459, 7, 7, 0, 0, 5459, 1102, 1, 0, 0, 0, 5460, 5461, 7, 9, 0, 0, 5461, 5462, 7, 29, 0, 0, 5462, 5463, 7, 13, 0, 0, 5463, 5464, 7, 16, 0, 0, 5464, 1104, 1, 0, 0, 0, 5465, 5466, 7, 16, 0, 0, 5466, 5467, 7, 13, 0, 0, 5467, 5468, 7, 17, 0, 0, 5468, 5469, 7, 15, 0, 0, 5469, 5470, 5, 95, 0, 0, 5470, 5471, 7, 9, 0, 0, 5471, 5472, 7, 14, 0, 0, 5472, 5473, 7, 5, 0, 0, 5473, 5474, 7, 6, 0, 0, 5474, 5475, 7, 10, 0, 0, 5475, 1106, 1, 0, 0, 0, 5476, 5477, 7, 16, 0, 0, 5477, 5478, 7, 13, 0, 0, 5478, 5479, 7, 22, 0, 0, 5479, 5480, 7, 7, 0, 0, 5480, 5481, 7, 14, 0, 0, 5481, 1108, 1, 0, 0, 0, 5482, 5483, 7, 28, 0, 0, 5483, 5484, 7, 17, 0, 0, 5484, 5485, 7, 12, 0, 0, 5485, 5486, 7, 16, 0, 0, 5486, 5487, 7, 20, 0, 0, 5487, 5488, 5, 95, 0, 0, 5488, 5489, 7, 18, 0, 0, 5489, 5490, 7, 22, 0, 0, 5490, 5491, 7, 14, 0, 0, 5491, 5492, 7, 21, 0, 0, 5492, 5493, 7, 10, 0, 0, 5493, 5494, 7, 16, 0, 0, 5494, 1110, 1, 0, 0, 0, 5495, 5496, 7, 13, 0, 0, 5496, 5497, 7, 5, 0, 0, 5497, 5498, 7, 7, 0, 0, 5498, 5499, 7, 12, 0, 0, 5499, 5500, 7, 19, 0, 0, 5500, 5501, 7, 15, 0, 0, 5501, 1112, 1, 0, 0, 0, 5502, 5503, 7, 9, 0, 0, 5503, 5504, 7, 10, 0, 0, 5504, 5505, 7, 16, 0, 0, 5505, 5506, 7, 9, 0, 0, 5506, 5507, 7, 10, 0, 0, 5507, 5508, 7, 10, 0, 0, 5508, 5509, 7, 12, 0, 0, 5509, 1114, 1, 0, 0, 0, 5510, 5511, 7, 5, 0, 0, 5511, 5512, 7, 14, 0, 0, 5512, 5513, 7, 19, 0, 0, 5513, 5514, 7, 9, 0, 0, 5514, 1116, 1, 0, 0, 0, 5515, 5516, 7, 5, 0, 0, 5516, 5517, 7, 14, 0, 0, 5517, 5518, 7, 19, 0, 0, 5518, 5519, 7, 9, 0, 0, 5519, 5520, 7, 12, 0, 0, 5520, 1118, 1, 0, 0, 0, 5521, 5522, 7, 5, 0, 0, 5522, 5523, 7, 9, 0, 0, 5523, 5524, 7, 17, 0, 0, 5524, 5525, 7, 7, 0, 0, 5525, 1120, 1, 0, 0, 0, 5526, 5527, 7, 5, 0, 0, 5527, 5528, 7, 9, 0, 0, 5528, 5529, 7, 17, 0, 0, 5529, 5530, 7, 7, 0, 0, 5530, 5531, 7, 12, 0, 0, 5531, 1122, 1, 0, 0, 0, 5532, 5533, 7, 5, 0, 0, 5533, 5534, 7, 16, 0, 0, 5534, 5535, 7, 5, 0, 0, 5535, 5536, 7, 7, 0, 0, 5536, 1124, 1, 0, 0, 0, 5537, 5538, 7, 5, 0, 0, 5538, 5539, 7, 16, 0, 0, 5539, 5540, 7, 5, 0, 0, 5540, 5541, 7, 7, 0, 0, 5541, 5542, 7, 12, 0, 0, 5542, 1126, 1, 0, 0, 0, 5543, 5544, 7, 5, 0, 0, 5544, 5545, 7, 16, 0, 0, 5545, 5546, 7, 5, 0, 0, 5546, 5547, 7, 7, 0, 0, 5547, 5548, 5, 50, 0, 0, 5548, 1128, 1, 0, 0, 0, 5549, 5550, 7, 5, 0, 0, 5550, 5551, 7, 16, 0, 0, 5551, 5552, 7, 5, 0, 0, 5552, 5553, 7, 7, 0, 0, 5553, 5554, 5, 50, 0, 0, 5554, 5555, 7, 12, 0, 0, 5555, 1130, 1, 0, 0, 0, 5556, 5557, 7, 14, 0, 0, 5557, 5558, 7, 19, 0, 0, 5558, 5559, 7, 9, 0, 0, 5559, 1132, 1, 0, 0, 0, 5560, 5561, 7, 14, 0, 0, 5561, 5562, 7, 19, 0, 0, 5562, 5563, 7, 9, 0, 0, 5563, 5564, 7, 12, 0, 0, 5564, 1134, 1, 0, 0, 0, 5565, 5566, 7, 14, 0, 0, 5566, 5567, 7, 19, 0, 0, 5567, 5568, 7, 16, 0, 0, 5568, 1136, 1, 0, 0, 0, 5569, 5570, 7, 14, 0, 0, 5570, 5571, 7, 19, 0, 0, 5571, 5572, 7, 16, 0, 0, 5572, 5573, 7, 12, 0, 0, 5573, 1138, 1, 0, 0, 0, 5574, 5575, 7, 9, 0, 0, 5575, 5576, 7, 17, 0, 0, 5576, 5577, 7, 7, 0, 0, 5577, 1140, 1, 0, 0, 0, 5578, 5579, 7, 9, 0, 0, 5579, 5580, 7, 17, 0, 0, 5580, 5581, 7, 7, 0, 0, 5581, 5582, 7, 12, 0, 0, 5582, 1142, 1, 0, 0, 0, 5583, 5584, 7, 16, 0, 0, 5584, 5585, 7, 5, 0, 0, 5585, 5586, 7, 7, 0, 0, 5586, 1144, 1, 0, 0, 0, 5587, 5588, 7, 16, 0, 0, 5588, 5589, 7, 5, 0, 0, 5589, 5590, 7, 7, 0, 0, 5590, 5591, 7, 12, 0, 0, 5591, 1146, 1, 0, 0, 0, 5592, 5593, 7, 9, 0, 0, 5593, 5594, 7, 17, 0, 0, 5594, 5595, 7, 7, 0, 0, 5595, 5596, 7, 20, 0, 0, 5596, 1148, 1, 0, 0, 0, 5597, 5598, 7, 14, 0, 0, 5598, 5599, 7, 19, 0, 0, 5599, 5600, 7, 9, 0, 0, 5600, 5601, 7, 20, 0, 0, 5601, 1150, 1, 0, 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, 1152, 1, 0, 0, 0, 5607, 5608, 7, 5, 0, 0, 5608, 5609, 7, 9, 0, 0, 5609, 5610, 7, 17, 0, 0, 5610, 5611, 7, 7, 0, 0, 5611, 5612, 7, 20, 0, 0, 5612, 1154, 1, 0, 0, 0, 5613, 5614, 7, 5, 0, 0, 5614, 5615, 7, 14, 0, 0, 5615, 5616, 7, 19, 0, 0, 5616, 5617, 7, 9, 0, 0, 5617, 5618, 7, 20, 0, 0, 5618, 1156, 1, 0, 0, 0, 5619, 5620, 7, 5, 0, 0, 5620, 5621, 7, 16, 0, 0, 5621, 5622, 7, 5, 0, 0, 5622, 5623, 7, 7, 0, 0, 5623, 5624, 7, 20, 0, 0, 5624, 1158, 1, 0, 0, 0, 5625, 5626, 7, 18, 0, 0, 5626, 5627, 7, 17, 0, 0, 5627, 5628, 7, 16, 0, 0, 5628, 5629, 5, 95, 0, 0, 5629, 5630, 7, 6, 0, 0, 5630, 5631, 7, 10, 0, 0, 5631, 5632, 7, 7, 0, 0, 5632, 5633, 7, 23, 0, 0, 5633, 5634, 7, 16, 0, 0, 5634, 5635, 7, 20, 0, 0, 5635, 1160, 1, 0, 0, 0, 5636, 5637, 7, 14, 0, 0, 5637, 5638, 7, 20, 0, 0, 5638, 5639, 7, 5, 0, 0, 5639, 5640, 7, 13, 0, 0, 5640, 5641, 5, 95, 0, 0, 5641, 5642, 7, 6, 0, 0, 5642, 5643, 7, 10, 0, 0, 5643, 5644, 7, 7, 0, 0, 5644, 5645, 7, 23, 0, 0, 5645, 5646, 7, 16, 0, 0, 5646, 5647, 7, 20, 0, 0, 5647, 1162, 1, 0, 0, 0, 5648, 5649, 7, 14, 0, 0, 5649, 5650, 7, 20, 0, 0, 5650, 5651, 7, 5, 0, 0, 5651, 5652, 7, 13, 0, 0, 5652, 5653, 7, 5, 0, 0, 5653, 5654, 7, 14, 0, 0, 5654, 5655, 7, 16, 0, 0, 5655, 5656, 7, 10, 0, 0, 5656, 5657, 7, 13, 0, 0, 5657, 5658, 5, 95, 0, 0, 5658, 5659, 7, 6, 0, 0, 5659, 5660, 7, 10, 0, 0, 5660, 5661, 7, 7, 0, 0, 5661, 5662, 7, 23, 0, 0, 5662, 5663, 7, 16, 0, 0, 5663, 5664, 7, 20, 0, 0, 5664, 1164, 1, 0, 0, 0, 5665, 5666, 7, 6, 0, 0, 5666, 5667, 7, 19, 0, 0, 5667, 5668, 7, 28, 0, 0, 5668, 5669, 7, 10, 0, 0, 5669, 5670, 7, 13, 0, 0, 5670, 1166, 1, 0, 0, 0, 5671, 5672, 7, 19, 0, 0, 5672, 5673, 7, 14, 0, 0, 5673, 5674, 7, 16, 0, 0, 5674, 5675, 7, 10, 0, 0, 5675, 5676, 7, 16, 0, 0, 5676, 5677, 5, 95, 0, 0, 5677, 5678, 7, 6, 0, 0, 5678, 5679, 7, 10, 0, 0, 5679, 5680, 7, 7, 0, 0, 5680, 5681, 7, 23, 0, 0, 5681, 5682, 7, 16, 0, 0, 5682, 5683, 7, 20, 0, 0, 5683, 1168, 1, 0, 0, 0, 5684, 5685, 7, 22, 0, 0, 5685, 5686, 7, 24, 0, 0, 5686, 5687, 7, 24, 0, 0, 5687, 5688, 7, 10, 0, 0, 5688, 5689, 7, 13, 0, 0, 5689, 1170, 1, 0, 0, 0, 5690, 5691, 7, 5, 0, 0, 5691, 5692, 7, 9, 0, 0, 5692, 5693, 7, 14, 0, 0, 5693, 5694, 7, 17, 0, 0, 5694, 5695, 7, 17, 0, 0, 5695, 1172, 1, 0, 0, 0, 5696, 5697, 7, 18, 0, 0, 5697, 5698, 7, 16, 0, 0, 5698, 5699, 7, 13, 0, 0, 5699, 5700, 7, 17, 0, 0, 5700, 5701, 7, 15, 0, 0, 5701, 1174, 1, 0, 0, 0, 5702, 5703, 7, 14, 0, 0, 5703, 5704, 7, 20, 0, 0, 5704, 5705, 7, 13, 0, 0, 5705, 1176, 1, 0, 0, 0, 5706, 5707, 7, 14, 0, 0, 5707, 5708, 7, 19, 0, 0, 5708, 5709, 7, 7, 0, 0, 5709, 5710, 7, 14, 0, 0, 5710, 5711, 7, 5, 0, 0, 5711, 5712, 7, 16, 0, 0, 5712, 1178, 1, 0, 0, 0, 5713, 5714, 7, 14, 0, 0, 5714, 5715, 7, 19, 0, 0, 5715, 5716, 7, 7, 0, 0, 5716, 5717, 7, 14, 0, 0, 5717, 5718, 7, 5, 0, 0, 5718, 5719, 7, 16, 0, 0, 5719, 5720, 5, 95, 0, 0, 5720, 5721, 7, 28, 0, 0, 5721, 5722, 7, 9, 0, 0, 5722, 1180, 1, 0, 0, 0, 5723, 5724, 7, 25, 0, 0, 5724, 5725, 7, 19, 0, 0, 5725, 5726, 7, 13, 0, 0, 5726, 5727, 7, 15, 0, 0, 5727, 5728, 7, 5, 0, 0, 5728, 5729, 7, 16, 0, 0, 5729, 1182, 1, 0, 0, 0, 5730, 5731, 7, 17, 0, 0, 5731, 5732, 7, 7, 0, 0, 5732, 5733, 7, 17, 0, 0, 5733, 5734, 7, 16, 0, 0, 5734, 5735, 7, 14, 0, 0, 5735, 5736, 7, 5, 0, 0, 5736, 5737, 7, 24, 0, 0, 5737, 1184, 1, 0, 0, 0, 5738, 5739, 7, 6, 0, 0, 5739, 5740, 7, 10, 0, 0, 5740, 5741, 7, 7, 0, 0, 5741, 5742, 7, 23, 0, 0, 5742, 5743, 7, 16, 0, 0, 5743, 5744, 7, 20, 0, 0, 5744, 1186, 1, 0, 0, 0, 5745, 5746, 7, 6, 0, 0, 5746, 5747, 7, 24, 0, 0, 5747, 5748, 7, 5, 0, 0, 5748, 5749, 7, 12, 0, 0, 5749, 1188, 1, 0, 0, 0, 5750, 5751, 7, 6, 0, 0, 5751, 5752, 7, 16, 0, 0, 5752, 5753, 7, 13, 0, 0, 5753, 5754, 7, 17, 0, 0, 5754, 5755, 7, 15, 0, 0, 5755, 1190, 1, 0, 0, 0, 5756, 5757, 7, 15, 0, 0, 5757, 5758, 7, 12, 0, 0, 5758, 5759, 5, 53, 0, 0, 5759, 1192, 1, 0, 0, 0, 5760, 5761, 7, 24, 0, 0, 5761, 5762, 7, 5, 0, 0, 5762, 5763, 7, 13, 0, 0, 5763, 5764, 7, 9, 0, 0, 5764, 5765, 7, 10, 0, 0, 5765, 5766, 5, 95, 0, 0, 5766, 5767, 7, 17, 0, 0, 5767, 5768, 7, 12, 0, 0, 5768, 5769, 7, 10, 0, 0, 5769, 5770, 7, 7, 0, 0, 5770, 5771, 7, 16, 0, 0, 5771, 1194, 1, 0, 0, 0, 5772, 5773, 7, 24, 0, 0, 5773, 5774, 7, 23, 0, 0, 5774, 5775, 5, 95, 0, 0, 5775, 5776, 7, 14, 0, 0, 5776, 5777, 7, 6, 0, 0, 5777, 5778, 7, 17, 0, 0, 5778, 5779, 7, 10, 0, 0, 5779, 5780, 7, 7, 0, 0, 5780, 5781, 7, 16, 0, 0, 5781, 5782, 5, 95, 0, 0, 5782, 5783, 7, 10, 0, 0, 5783, 5784, 7, 7, 0, 0, 5784, 5785, 7, 14, 0, 0, 5785, 5786, 7, 19, 0, 0, 5786, 5787, 7, 12, 0, 0, 5787, 5788, 7, 17, 0, 0, 5788, 5789, 7, 7, 0, 0, 5789, 5790, 7, 23, 0, 0, 5790, 1196, 1, 0, 0, 0, 5791, 5792, 7, 29, 0, 0, 5792, 5793, 7, 22, 0, 0, 5793, 5794, 7, 19, 0, 0, 5794, 5795, 7, 16, 0, 0, 5795, 5796, 7, 10, 0, 0, 5796, 5797, 5, 95, 0, 0, 5797, 5798, 7, 17, 0, 0, 5798, 5799, 7, 12, 0, 0, 5799, 5800, 7, 10, 0, 0, 5800, 5801, 7, 7, 0, 0, 5801, 5802, 7, 16, 0, 0, 5802, 1198, 1, 0, 0, 0, 5803, 5804, 7, 29, 0, 0, 5804, 5805, 7, 22, 0, 0, 5805, 5806, 7, 19, 0, 0, 5806, 5807, 7, 16, 0, 0, 5807, 5808, 7, 10, 0, 0, 5808, 5809, 5, 95, 0, 0, 5809, 5810, 7, 6, 0, 0, 5810, 5811, 7, 17, 0, 0, 5811, 5812, 7, 16, 0, 0, 5812, 5813, 7, 10, 0, 0, 5813, 5814, 7, 13, 0, 0, 5814, 5815, 7, 5, 0, 0, 5815, 5816, 7, 6, 0, 0, 5816, 1200, 1, 0, 0, 0, 5817, 5818, 7, 29, 0, 0, 5818, 5819, 7, 22, 0, 0, 5819, 5820, 7, 19, 0, 0, 5820, 5821, 7, 16, 0, 0, 5821, 5822, 7, 10, 0, 0, 5822, 5823, 5, 95, 0, 0, 5823, 5824, 7, 7, 0, 0, 5824, 5825, 7, 22, 0, 0, 5825, 5826, 7, 6, 0, 0, 5826, 5827, 7, 6, 0, 0, 5827, 5828, 7, 5, 0, 0, 5828, 5829, 7, 18, 0, 0, 5829, 5830, 7, 6, 0, 0, 5830, 5831, 7, 10, 0, 0, 5831, 1202, 1, 0, 0, 0, 5832, 5833, 7, 13, 0, 0, 5833, 5834, 7, 10, 0, 0, 5834, 5835, 7, 23, 0, 0, 5835, 5836, 7, 10, 0, 0, 5836, 5837, 7, 26, 0, 0, 5837, 5838, 7, 24, 0, 0, 5838, 5839, 5, 95, 0, 0, 5839, 5840, 7, 14, 0, 0, 5840, 5841, 7, 19, 0, 0, 5841, 5842, 7, 22, 0, 0, 5842, 5843, 7, 7, 0, 0, 5843, 5844, 7, 16, 0, 0, 5844, 1204, 1, 0, 0, 0, 5845, 5846, 7, 13, 0, 0, 5846, 5847, 7, 10, 0, 0, 5847, 5848, 7, 23, 0, 0, 5848, 5849, 7, 10, 0, 0, 5849, 5850, 7, 26, 0, 0, 5850, 5851, 7, 24, 0, 0, 5851, 5852, 5, 95, 0, 0, 5852, 5853, 7, 17, 0, 0, 5853, 5854, 7, 7, 0, 0, 5854, 5855, 7, 9, 0, 0, 5855, 5856, 7, 16, 0, 0, 5856, 5857, 7, 13, 0, 0, 5857, 1206, 1, 0, 0, 0, 5858, 5859, 7, 13, 0, 0, 5859, 5860, 7, 10, 0, 0, 5860, 5861, 7, 23, 0, 0, 5861, 5862, 7, 10, 0, 0, 5862, 5863, 7, 26, 0, 0, 5863, 5864, 7, 24, 0, 0, 5864, 5865, 5, 95, 0, 0, 5865, 5866, 7, 6, 0, 0, 5866, 5867, 7, 17, 0, 0, 5867, 5868, 7, 21, 0, 0, 5868, 5869, 7, 10, 0, 0, 5869, 1208, 1, 0, 0, 0, 5870, 5871, 7, 13, 0, 0, 5871, 5872, 7, 10, 0, 0, 5872, 5873, 7, 23, 0, 0, 5873, 5874, 7, 10, 0, 0, 5874, 5875, 7, 26, 0, 0, 5875, 5876, 7, 24, 0, 0, 5876, 5877, 5, 95, 0, 0, 5877, 5878, 7, 15, 0, 0, 5878, 5879, 7, 5, 0, 0, 5879, 5880, 7, 16, 0, 0, 5880, 5881, 7, 14, 0, 0, 5881, 5882, 7, 20, 0, 0, 5882, 1210, 1, 0, 0, 0, 5883, 5884, 7, 13, 0, 0, 5884, 5885, 7, 10, 0, 0, 5885, 5886, 7, 23, 0, 0, 5886, 5887, 7, 10, 0, 0, 5887, 5888, 7, 26, 0, 0, 5888, 5889, 7, 24, 0, 0, 5889, 5890, 5, 95, 0, 0, 5890, 5891, 7, 15, 0, 0, 5891, 5892, 7, 5, 0, 0, 5892, 5893, 7, 16, 0, 0, 5893, 5894, 7, 14, 0, 0, 5894, 5895, 7, 20, 0, 0, 5895, 5896, 7, 10, 0, 0, 5896, 5897, 7, 9, 0, 0, 5897, 1212, 1, 0, 0, 0, 5898, 5899, 7, 13, 0, 0, 5899, 5900, 7, 10, 0, 0, 5900, 5901, 7, 23, 0, 0, 5901, 5902, 7, 10, 0, 0, 5902, 5903, 7, 26, 0, 0, 5903, 5904, 7, 24, 0, 0, 5904, 5905, 5, 95, 0, 0, 5905, 5906, 7, 13, 0, 0, 5906, 5907, 7, 10, 0, 0, 5907, 5908, 7, 24, 0, 0, 5908, 5909, 7, 6, 0, 0, 5909, 5910, 7, 5, 0, 0, 5910, 5911, 7, 14, 0, 0, 5911, 5912, 7, 10, 0, 0, 5912, 1214, 1, 0, 0, 0, 5913, 5914, 7, 13, 0, 0, 5914, 5915, 7, 10, 0, 0, 5915, 5916, 7, 23, 0, 0, 5916, 5917, 7, 10, 0, 0, 5917, 5918, 7, 26, 0, 0, 5918, 5919, 7, 24, 0, 0, 5919, 5920, 5, 95, 0, 0, 5920, 5921, 7, 9, 0, 0, 5921, 5922, 7, 24, 0, 0, 5922, 5923, 7, 6, 0, 0, 5923, 5924, 7, 17, 0, 0, 5924, 5925, 7, 16, 0, 0, 5925, 5926, 5, 95, 0, 0, 5926, 5927, 7, 16, 0, 0, 5927, 5928, 7, 19, 0, 0, 5928, 5929, 5, 95, 0, 0, 5929, 5930, 7, 5, 0, 0, 5930, 5931, 7, 13, 0, 0, 5931, 5932, 7, 13, 0, 0, 5932, 5933, 7, 5, 0, 0, 5933, 5934, 7, 8, 0, 0, 5934, 1216, 1, 0, 0, 0, 5935, 5936, 7, 13, 0, 0, 5936, 5937, 7, 10, 0, 0, 5937, 5938, 7, 23, 0, 0, 5938, 5939, 7, 10, 0, 0, 5939, 5940, 7, 26, 0, 0, 5940, 5941, 7, 24, 0, 0, 5941, 5942, 5, 95, 0, 0, 5942, 5943, 7, 9, 0, 0, 5943, 5944, 7, 24, 0, 0, 5944, 5945, 7, 6, 0, 0, 5945, 5946, 7, 17, 0, 0, 5946, 5947, 7, 16, 0, 0, 5947, 5948, 5, 95, 0, 0, 5948, 5949, 7, 16, 0, 0, 5949, 5950, 7, 19, 0, 0, 5950, 5951, 5, 95, 0, 0, 5951, 5952, 7, 16, 0, 0, 5952, 5953, 7, 5, 0, 0, 5953, 5954, 7, 18, 0, 0, 5954, 5955, 7, 6, 0, 0, 5955, 5956, 7, 10, 0, 0, 5956, 1218, 1, 0, 0, 0, 5957, 5958, 7, 13, 0, 0, 5958, 5959, 7, 10, 0, 0, 5959, 5960, 7, 23, 0, 0, 5960, 5961, 7, 10, 0, 0, 5961, 5962, 7, 26, 0, 0, 5962, 5963, 7, 24, 0, 0, 5963, 5964, 5, 95, 0, 0, 5964, 5965, 7, 9, 0, 0, 5965, 5966, 7, 22, 0, 0, 5966, 5967, 7, 18, 0, 0, 5967, 5968, 7, 9, 0, 0, 5968, 5969, 7, 16, 0, 0, 5969, 5970, 7, 13, 0, 0, 5970, 1220, 1, 0, 0, 0, 5971, 5972, 7, 13, 0, 0, 5972, 5973, 7, 10, 0, 0, 5973, 5974, 7, 24, 0, 0, 5974, 5975, 7, 10, 0, 0, 5975, 5976, 7, 5, 0, 0, 5976, 5977, 7, 16, 0, 0, 5977, 1222, 1, 0, 0, 0, 5978, 5979, 7, 13, 0, 0, 5979, 5980, 7, 24, 0, 0, 5980, 5981, 7, 5, 0, 0, 5981, 5982, 7, 12, 0, 0, 5982, 1224, 1, 0, 0, 0, 5983, 5984, 7, 13, 0, 0, 5984, 5985, 7, 16, 0, 0, 5985, 5986, 7, 13, 0, 0, 5986, 5987, 7, 17, 0, 0, 5987, 5988, 7, 15, 0, 0, 5988, 1226, 1, 0, 0, 0, 5989, 5990, 7, 9, 0, 0, 5990, 5991, 7, 24, 0, 0, 5991, 5992, 7, 6, 0, 0, 5992, 5993, 7, 17, 0, 0, 5993, 5994, 7, 16, 0, 0, 5994, 5995, 5, 95, 0, 0, 5995, 5996, 7, 24, 0, 0, 5996, 5997, 7, 5, 0, 0, 5997, 5998, 7, 13, 0, 0, 5998, 5999, 7, 16, 0, 0, 5999, 1228, 1, 0, 0, 0, 6000, 6001, 7, 9, 0, 0, 6001, 6002, 7, 16, 0, 0, 6002, 6003, 7, 5, 0, 0, 6003, 6004, 7, 13, 0, 0, 6004, 6005, 7, 16, 0, 0, 6005, 6006, 7, 9, 0, 0, 6006, 6007, 5, 95, 0, 0, 6007, 6008, 7, 28, 0, 0, 6008, 6009, 7, 17, 0, 0, 6009, 6010, 7, 16, 0, 0, 6010, 6011, 7, 20, 0, 0, 6011, 1230, 1, 0, 0, 0, 6012, 6013, 7, 9, 0, 0, 6013, 6014, 7, 16, 0, 0, 6014, 6015, 7, 13, 0, 0, 6015, 6016, 7, 17, 0, 0, 6016, 6017, 7, 7, 0, 0, 6017, 6018, 7, 23, 0, 0, 6018, 6019, 5, 95, 0, 0, 6019, 6020, 7, 16, 0, 0, 6020, 6021, 7, 19, 0, 0, 6021, 6022, 5, 95, 0, 0, 6022, 6023, 7, 5, 0, 0, 6023, 6024, 7, 13, 0, 0, 6024, 6025, 7, 13, 0, 0, 6025, 6026, 7, 5, 0, 0, 6026, 6027, 7, 8, 0, 0, 6027, 1232, 1, 0, 0, 0, 6028, 6029, 7, 9, 0, 0, 6029, 6030, 7, 16, 0, 0, 6030, 6031, 7, 13, 0, 0, 6031, 6032, 7, 17, 0, 0, 6032, 6033, 7, 7, 0, 0, 6033, 6034, 7, 23, 0, 0, 6034, 6035, 5, 95, 0, 0, 6035, 6036, 7, 16, 0, 0, 6036, 6037, 7, 19, 0, 0, 6037, 6038, 5, 95, 0, 0, 6038, 6039, 7, 16, 0, 0, 6039, 6040, 7, 5, 0, 0, 6040, 6041, 7, 18, 0, 0, 6041, 6042, 7, 6, 0, 0, 6042, 6043, 7, 10, 0, 0, 6043, 1234, 1, 0, 0, 0, 6044, 6045, 7, 9, 0, 0, 6045, 6046, 7, 16, 0, 0, 6046, 6047, 7, 13, 0, 0, 6047, 6048, 7, 24, 0, 0, 6048, 6049, 7, 19, 0, 0, 6049, 6050, 7, 9, 0, 0, 6050, 1236, 1, 0, 0, 0, 6051, 6052, 7, 9, 0, 0, 6052, 6053, 7, 22, 0, 0, 6053, 6054, 7, 18, 0, 0, 6054, 6055, 7, 9, 0, 0, 6055, 6056, 7, 16, 0, 0, 6056, 6057, 7, 13, 0, 0, 6057, 1238, 1, 0, 0, 0, 6058, 6059, 7, 16, 0, 0, 6059, 6060, 7, 19, 0, 0, 6060, 6061, 5, 95, 0, 0, 6061, 6062, 7, 5, 0, 0, 6062, 6063, 7, 9, 0, 0, 6063, 6064, 7, 14, 0, 0, 6064, 6065, 7, 17, 0, 0, 6065, 6066, 7, 17, 0, 0, 6066, 1240, 1, 0, 0, 0, 6067, 6068, 7, 16, 0, 0, 6068, 6069, 7, 19, 0, 0, 6069, 6070, 5, 95, 0, 0, 6070, 6071, 7, 20, 0, 0, 6071, 6072, 7, 10, 0, 0, 6072, 6073, 7, 26, 0, 0, 6073, 1242, 1, 0, 0, 0, 6074, 6075, 7, 16, 0, 0, 6075, 6076, 7, 13, 0, 0, 6076, 6077, 7, 5, 0, 0, 6077, 6078, 7, 7, 0, 0, 6078, 6079, 7, 9, 0, 0, 6079, 6080, 7, 6, 0, 0, 6080, 6081, 7, 5, 0, 0, 6081, 6082, 7, 16, 0, 0, 6082, 6083, 7, 10, 0, 0, 6083, 1244, 1, 0, 0, 0, 6084, 6085, 7, 22, 0, 0, 6085, 6086, 7, 7, 0, 0, 6086, 6087, 7, 17, 0, 0, 6087, 6088, 7, 9, 0, 0, 6088, 6089, 7, 16, 0, 0, 6089, 6090, 7, 13, 0, 0, 6090, 1246, 1, 0, 0, 0, 6091, 6092, 7, 5, 0, 0, 6092, 6093, 7, 23, 0, 0, 6093, 6094, 7, 10, 0, 0, 6094, 1248, 1, 0, 0, 0, 6095, 6096, 7, 14, 0, 0, 6096, 6097, 7, 6, 0, 0, 6097, 6098, 7, 19, 0, 0, 6098, 6099, 7, 14, 0, 0, 6099, 6100, 7, 21, 0, 0, 6100, 6101, 5, 95, 0, 0, 6101, 6102, 7, 16, 0, 0, 6102, 6103, 7, 17, 0, 0, 6103, 6104, 7, 15, 0, 0, 6104, 6105, 7, 10, 0, 0, 6105, 6106, 7, 9, 0, 0, 6106, 6107, 7, 16, 0, 0, 6107, 6108, 7, 5, 0, 0, 6108, 6109, 7, 15, 0, 0, 6109, 6110, 7, 24, 0, 0, 6110, 1250, 1, 0, 0, 0, 6111, 6112, 7, 12, 0, 0, 6112, 6113, 7, 5, 0, 0, 6113, 6114, 7, 16, 0, 0, 6114, 6115, 7, 10, 0, 0, 6115, 6116, 5, 95, 0, 0, 6116, 6117, 7, 18, 0, 0, 6117, 6118, 7, 17, 0, 0, 6118, 6119, 7, 7, 0, 0, 6119, 1252, 1, 0, 0, 0, 6120, 6121, 7, 12, 0, 0, 6121, 6122, 7, 5, 0, 0, 6122, 6123, 7, 16, 0, 0, 6123, 6124, 7, 10, 0, 0, 6124, 6125, 5, 95, 0, 0, 6125, 6126, 7, 24, 0, 0, 6126, 6127, 7, 5, 0, 0, 6127, 6128, 7, 13, 0, 0, 6128, 6129, 7, 16, 0, 0, 6129, 1254, 1, 0, 0, 0, 6130, 6131, 7, 12, 0, 0, 6131, 6132, 7, 5, 0, 0, 6132, 6133, 7, 16, 0, 0, 6133, 6134, 7, 10, 0, 0, 6134, 6135, 5, 95, 0, 0, 6135, 6136, 7, 16, 0, 0, 6136, 6137, 7, 13, 0, 0, 6137, 6138, 7, 22, 0, 0, 6138, 6139, 7, 7, 0, 0, 6139, 6140, 7, 14, 0, 0, 6140, 1256, 1, 0, 0, 0, 6141, 6142, 7, 17, 0, 0, 6142, 6143, 7, 9, 0, 0, 6143, 6144, 7, 25, 0, 0, 6144, 6145, 7, 17, 0, 0, 6145, 6146, 7, 7, 0, 0, 6146, 6147, 7, 17, 0, 0, 6147, 6148, 7, 16, 0, 0, 6148, 6149, 7, 10, 0, 0, 6149, 1258, 1, 0, 0, 0, 6150, 6151, 7, 30, 0, 0, 6151, 6152, 7, 22, 0, 0, 6152, 6153, 7, 9, 0, 0, 6153, 6154, 7, 16, 0, 0, 6154, 6155, 7, 17, 0, 0, 6155, 6156, 7, 25, 0, 0, 6156, 6157, 7, 8, 0, 0, 6157, 6158, 5, 95, 0, 0, 6158, 6159, 7, 12, 0, 0, 6159, 6160, 7, 5, 0, 0, 6160, 6161, 7, 8, 0, 0, 6161, 6162, 7, 9, 0, 0, 6162, 1260, 1, 0, 0, 0, 6163, 6164, 7, 30, 0, 0, 6164, 6165, 7, 22, 0, 0, 6165, 6166, 7, 9, 0, 0, 6166, 6167, 7, 16, 0, 0, 6167, 6168, 7, 17, 0, 0, 6168, 6169, 7, 25, 0, 0, 6169, 6170, 7, 8, 0, 0, 6170, 6171, 5, 95, 0, 0, 6171, 6172, 7, 20, 0, 0, 6172, 6173, 7, 19, 0, 0, 6173, 6174, 7, 22, 0, 0, 6174, 6175, 7, 13, 0, 0, 6175, 6176, 7, 9, 0, 0, 6176, 1262, 1, 0, 0, 0, 6177, 6178, 7, 30, 0, 0, 6178, 6179, 7, 22, 0, 0, 6179, 6180, 7, 9, 0, 0, 6180, 6181, 7, 16, 0, 0, 6181, 6182, 7, 17, 0, 0, 6182, 6183, 7, 25, 0, 0, 6183, 6184, 7, 8, 0, 0, 6184, 6185, 5, 95, 0, 0, 6185, 6186, 7, 17, 0, 0, 6186, 6187, 7, 7, 0, 0, 6187, 6188, 7, 16, 0, 0, 6188, 6189, 7, 10, 0, 0, 6189, 6190, 7, 13, 0, 0, 6190, 6191, 7, 27, 0, 0, 6191, 6192, 7, 5, 0, 0, 6192, 6193, 7, 6, 0, 0, 6193, 1264, 1, 0, 0, 0, 6194, 6195, 7, 15, 0, 0, 6195, 6196, 7, 5, 0, 0, 6196, 6197, 7, 21, 0, 0, 6197, 6198, 7, 10, 0, 0, 6198, 6199, 5, 95, 0, 0, 6199, 6200, 7, 12, 0, 0, 6200, 6201, 7, 5, 0, 0, 6201, 6202, 7, 16, 0, 0, 6202, 6203, 7, 10, 0, 0, 6203, 1266, 1, 0, 0, 0, 6204, 6205, 7, 15, 0, 0, 6205, 6206, 7, 5, 0, 0, 6206, 6207, 7, 21, 0, 0, 6207, 6208, 7, 10, 0, 0, 6208, 6209, 5, 95, 0, 0, 6209, 6210, 7, 17, 0, 0, 6210, 6211, 7, 7, 0, 0, 6211, 6212, 7, 16, 0, 0, 6212, 6213, 7, 10, 0, 0, 6213, 6214, 7, 13, 0, 0, 6214, 6215, 7, 27, 0, 0, 6215, 6216, 7, 5, 0, 0, 6216, 6217, 7, 6, 0, 0, 6217, 1268, 1, 0, 0, 0, 6218, 6219, 7, 15, 0, 0, 6219, 6220, 7, 5, 0, 0, 6220, 6221, 7, 21, 0, 0, 6221, 6222, 7, 10, 0, 0, 6222, 6223, 5, 95, 0, 0, 6223, 6224, 7, 16, 0, 0, 6224, 6225, 7, 17, 0, 0, 6225, 6226, 7, 15, 0, 0, 6226, 6227, 7, 10, 0, 0, 6227, 1270, 1, 0, 0, 0, 6228, 6229, 7, 15, 0, 0, 6229, 6230, 7, 5, 0, 0, 6230, 6231, 7, 21, 0, 0, 6231, 6232, 7, 10, 0, 0, 6232, 6233, 5, 95, 0, 0, 6233, 6234, 7, 16, 0, 0, 6234, 6235, 7, 17, 0, 0, 6235, 6236, 7, 15, 0, 0, 6236, 6237, 7, 10, 0, 0, 6237, 6238, 7, 9, 0, 0, 6238, 6239, 7, 16, 0, 0, 6239, 6240, 7, 5, 0, 0, 6240, 6241, 7, 15, 0, 0, 6241, 6242, 7, 24, 0, 0, 6242, 1272, 1, 0, 0, 0, 6243, 6244, 7, 15, 0, 0, 6244, 6245, 7, 5, 0, 0, 6245, 6246, 7, 21, 0, 0, 6246, 6247, 7, 10, 0, 0, 6247, 6248, 5, 95, 0, 0, 6248, 6249, 7, 16, 0, 0, 6249, 6250, 7, 17, 0, 0, 6250, 6251, 7, 15, 0, 0, 6251, 6252, 7, 10, 0, 0, 6252, 6253, 7, 9, 0, 0, 6253, 6254, 7, 16, 0, 0, 6254, 6255, 7, 5, 0, 0, 6255, 6256, 7, 15, 0, 0, 6256, 6257, 7, 24, 0, 0, 6257, 6258, 7, 16, 0, 0, 6258, 6259, 7, 11, 0, 0, 6259, 1274, 1, 0, 0, 0, 6260, 6261, 7, 7, 0, 0, 6261, 6262, 7, 19, 0, 0, 6262, 6263, 7, 28, 0, 0, 6263, 1276, 1, 0, 0, 0, 6264, 6265, 7, 9, 0, 0, 6265, 6266, 7, 16, 0, 0, 6266, 6267, 7, 5, 0, 0, 6267, 6268, 7, 16, 0, 0, 6268, 6269, 7, 10, 0, 0, 6269, 6270, 7, 15, 0, 0, 6270, 6271, 7, 10, 0, 0, 6271, 6272, 7, 7, 0, 0, 6272, 6273, 7, 16, 0, 0, 6273, 6274, 5, 95, 0, 0, 6274, 6275, 7, 16, 0, 0, 6275, 6276, 7, 17, 0, 0, 6276, 6277, 7, 15, 0, 0, 6277, 6278, 7, 10, 0, 0, 6278, 6279, 7, 9, 0, 0, 6279, 6280, 7, 16, 0, 0, 6280, 6281, 7, 5, 0, 0, 6281, 6282, 7, 15, 0, 0, 6282, 6283, 7, 24, 0, 0, 6283, 1278, 1, 0, 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, 19, 0, 0, 6289, 6290, 7, 25, 0, 0, 6290, 6291, 7, 12, 0, 0, 6291, 6292, 7, 5, 0, 0, 6292, 6293, 7, 8, 0, 0, 6293, 1280, 1, 0, 0, 0, 6294, 6295, 7, 16, 0, 0, 6295, 6296, 7, 13, 0, 0, 6296, 6297, 7, 5, 0, 0, 6297, 6298, 7, 7, 0, 0, 6298, 6299, 7, 9, 0, 0, 6299, 6300, 7, 5, 0, 0, 6300, 6301, 7, 14, 0, 0, 6301, 6302, 7, 16, 0, 0, 6302, 6303, 7, 17, 0, 0, 6303, 6304, 7, 19, 0, 0, 6304, 6305, 7, 7, 0, 0, 6305, 6306, 5, 95, 0, 0, 6306, 6307, 7, 16, 0, 0, 6307, 6308, 7, 17, 0, 0, 6308, 6309, 7, 15, 0, 0, 6309, 6310, 7, 10, 0, 0, 6310, 6311, 7, 9, 0, 0, 6311, 6312, 7, 16, 0, 0, 6312, 6313, 7, 5, 0, 0, 6313, 6314, 7, 15, 0, 0, 6314, 6315, 7, 24, 0, 0, 6315, 1282, 1, 0, 0, 0, 6316, 6317, 7, 16, 0, 0, 6317, 6318, 7, 19, 0, 0, 6318, 6319, 5, 95, 0, 0, 6319, 6320, 7, 16, 0, 0, 6320, 6321, 7, 17, 0, 0, 6321, 6322, 7, 15, 0, 0, 6322, 6323, 7, 10, 0, 0, 6323, 6324, 7, 9, 0, 0, 6324, 6325, 7, 16, 0, 0, 6325, 6326, 7, 5, 0, 0, 6326, 6327, 7, 15, 0, 0, 6327, 6328, 7, 24, 0, 0, 6328, 1284, 1, 0, 0, 0, 6329, 6330, 7, 16, 0, 0, 6330, 6331, 7, 19, 0, 0, 6331, 6332, 5, 95, 0, 0, 6332, 6333, 7, 14, 0, 0, 6333, 6334, 7, 20, 0, 0, 6334, 6335, 7, 5, 0, 0, 6335, 6336, 7, 13, 0, 0, 6336, 1286, 1, 0, 0, 0, 6337, 6338, 7, 16, 0, 0, 6338, 6339, 7, 19, 0, 0, 6339, 6340, 5, 95, 0, 0, 6340, 6341, 7, 12, 0, 0, 6341, 6342, 7, 5, 0, 0, 6342, 6343, 7, 16, 0, 0, 6343, 6344, 7, 10, 0, 0, 6344, 1288, 1, 0, 0, 0, 6345, 6346, 7, 16, 0, 0, 6346, 6347, 7, 19, 0, 0, 6347, 6348, 5, 95, 0, 0, 6348, 6349, 7, 7, 0, 0, 6349, 6350, 7, 22, 0, 0, 6350, 6351, 7, 15, 0, 0, 6351, 6352, 7, 18, 0, 0, 6352, 6353, 7, 10, 0, 0, 6353, 6354, 7, 13, 0, 0, 6354, 1290, 1, 0, 0, 0, 6355, 6359, 3, 1293, 644, 0, 6356, 6358, 3, 1295, 645, 0, 6357, 6356, 1, 0, 0, 0, 6358, 6361, 1, 0, 0, 0, 6359, 6357, 1, 0, 0, 0, 6359, 6360, 1, 0, 0, 0, 6360, 1292, 1, 0, 0, 0, 6361, 6359, 1, 0, 0, 0, 6362, 6369, 7, 31, 0, 0, 6363, 6364, 7, 32, 0, 0, 6364, 6369, 4, 644, 6, 0, 6365, 6366, 7, 33, 0, 0, 6366, 6367, 7, 34, 0, 0, 6367, 6369, 4, 644, 7, 0, 6368, 6362, 1, 0, 0, 0, 6368, 6363, 1, 0, 0, 0, 6368, 6365, 1, 0, 0, 0, 6369, 1294, 1, 0, 0, 0, 6370, 6373, 3, 1297, 646, 0, 6371, 6373, 5, 36, 0, 0, 6372, 6370, 1, 0, 0, 0, 6372, 6371, 1, 0, 0, 0, 6373, 1296, 1, 0, 0, 0, 6374, 6377, 3, 1293, 644, 0, 6375, 6377, 7, 0, 0, 0, 6376, 6374, 1, 0, 0, 0, 6376, 6375, 1, 0, 0, 0, 6377, 1298, 1, 0, 0, 0, 6378, 6379, 3, 1301, 648, 0, 6379, 6380, 5, 34, 0, 0, 6380, 1300, 1, 0, 0, 0, 6381, 6387, 5, 34, 0, 0, 6382, 6383, 5, 34, 0, 0, 6383, 6386, 5, 34, 0, 0, 6384, 6386, 8, 35, 0, 0, 6385, 6382, 1, 0, 0, 0, 6385, 6384, 1, 0, 0, 0, 6386, 6389, 1, 0, 0, 0, 6387, 6385, 1, 0, 0, 0, 6387, 6388, 1, 0, 0, 0, 6388, 1302, 1, 0, 0, 0, 6389, 6387, 1, 0, 0, 0, 6390, 6391, 3, 1305, 650, 0, 6391, 6392, 5, 34, 0, 0, 6392, 1304, 1, 0, 0, 0, 6393, 6399, 5, 34, 0, 0, 6394, 6395, 5, 34, 0, 0, 6395, 6398, 5, 34, 0, 0, 6396, 6398, 8, 36, 0, 0, 6397, 6394, 1, 0, 0, 0, 6397, 6396, 1, 0, 0, 0, 6398, 6401, 1, 0, 0, 0, 6399, 6397, 1, 0, 0, 0, 6399, 6400, 1, 0, 0, 0, 6400, 1306, 1, 0, 0, 0, 6401, 6399, 1, 0, 0, 0, 6402, 6403, 7, 22, 0, 0, 6403, 6404, 5, 38, 0, 0, 6404, 6405, 3, 1299, 647, 0, 6405, 1308, 1, 0, 0, 0, 6406, 6407, 7, 22, 0, 0, 6407, 6408, 5, 38, 0, 0, 6408, 6409, 3, 1301, 648, 0, 6409, 1310, 1, 0, 0, 0, 6410, 6411, 7, 22, 0, 0, 6411, 6412, 5, 38, 0, 0, 6412, 6413, 3, 1303, 649, 0, 6413, 1312, 1, 0, 0, 0, 6414, 6415, 7, 22, 0, 0, 6415, 6416, 5, 38, 0, 0, 6416, 6417, 3, 1305, 650, 0, 6417, 1314, 1, 0, 0, 0, 6418, 6419, 3, 1317, 656, 0, 6419, 6420, 5, 39, 0, 0, 6420, 1316, 1, 0, 0, 0, 6421, 6427, 5, 39, 0, 0, 6422, 6423, 5, 39, 0, 0, 6423, 6426, 5, 39, 0, 0, 6424, 6426, 8, 37, 0, 0, 6425, 6422, 1, 0, 0, 0, 6425, 6424, 1, 0, 0, 0, 6426, 6429, 1, 0, 0, 0, 6427, 6425, 1, 0, 0, 0, 6427, 6428, 1, 0, 0, 0, 6428, 1318, 1, 0, 0, 0, 6429, 6427, 1, 0, 0, 0, 6430, 6431, 7, 10, 0, 0, 6431, 6432, 5, 39, 0, 0, 6432, 6433, 1, 0, 0, 0, 6433, 6434, 6, 657, 2, 0, 6434, 6435, 6, 657, 3, 0, 6435, 1320, 1, 0, 0, 0, 6436, 6437, 3, 1323, 659, 0, 6437, 6438, 5, 39, 0, 0, 6438, 1322, 1, 0, 0, 0, 6439, 6440, 7, 22, 0, 0, 6440, 6441, 5, 38, 0, 0, 6441, 6442, 3, 1317, 656, 0, 6442, 1324, 1, 0, 0, 0, 6443, 6445, 5, 36, 0, 0, 6444, 6446, 3, 1327, 661, 0, 6445, 6444, 1, 0, 0, 0, 6445, 6446, 1, 0, 0, 0, 6446, 6447, 1, 0, 0, 0, 6447, 6448, 5, 36, 0, 0, 6448, 6449, 6, 660, 4, 0, 6449, 6450, 1, 0, 0, 0, 6450, 6451, 6, 660, 5, 0, 6451, 1326, 1, 0, 0, 0, 6452, 6456, 3, 1293, 644, 0, 6453, 6455, 3, 1297, 646, 0, 6454, 6453, 1, 0, 0, 0, 6455, 6458, 1, 0, 0, 0, 6456, 6454, 1, 0, 0, 0, 6456, 6457, 1, 0, 0, 0, 6457, 1328, 1, 0, 0, 0, 6458, 6456, 1, 0, 0, 0, 6459, 6460, 3, 1331, 663, 0, 6460, 6461, 5, 39, 0, 0, 6461, 1330, 1, 0, 0, 0, 6462, 6463, 7, 18, 0, 0, 6463, 6467, 5, 39, 0, 0, 6464, 6466, 7, 38, 0, 0, 6465, 6464, 1, 0, 0, 0, 6466, 6469, 1, 0, 0, 0, 6467, 6465, 1, 0, 0, 0, 6467, 6468, 1, 0, 0, 0, 6468, 1332, 1, 0, 0, 0, 6469, 6467, 1, 0, 0, 0, 6470, 6471, 3, 1335, 665, 0, 6471, 6472, 5, 39, 0, 0, 6472, 1334, 1, 0, 0, 0, 6473, 6474, 7, 18, 0, 0, 6474, 6475, 3, 1317, 656, 0, 6475, 1336, 1, 0, 0, 0, 6476, 6477, 3, 1339, 667, 0, 6477, 6478, 5, 39, 0, 0, 6478, 1338, 1, 0, 0, 0, 6479, 6480, 7, 26, 0, 0, 6480, 6484, 5, 39, 0, 0, 6481, 6483, 7, 39, 0, 0, 6482, 6481, 1, 0, 0, 0, 6483, 6486, 1, 0, 0, 0, 6484, 6482, 1, 0, 0, 0, 6484, 6485, 1, 0, 0, 0, 6485, 1340, 1, 0, 0, 0, 6486, 6484, 1, 0, 0, 0, 6487, 6488, 3, 1343, 669, 0, 6488, 6489, 5, 39, 0, 0, 6489, 1342, 1, 0, 0, 0, 6490, 6491, 7, 26, 0, 0, 6491, 6492, 3, 1317, 656, 0, 6492, 1344, 1, 0, 0, 0, 6493, 6494, 3, 1351, 673, 0, 6494, 1346, 1, 0, 0, 0, 6495, 6496, 3, 1351, 673, 0, 6496, 6497, 5, 46, 0, 0, 6497, 6498, 5, 46, 0, 0, 6498, 6499, 1, 0, 0, 0, 6499, 6500, 6, 671, 6, 0, 6500, 1348, 1, 0, 0, 0, 6501, 6502, 3, 1351, 673, 0, 6502, 6504, 5, 46, 0, 0, 6503, 6505, 3, 1351, 673, 0, 6504, 6503, 1, 0, 0, 0, 6504, 6505, 1, 0, 0, 0, 6505, 6511, 1, 0, 0, 0, 6506, 6508, 7, 10, 0, 0, 6507, 6509, 7, 1, 0, 0, 6508, 6507, 1, 0, 0, 0, 6508, 6509, 1, 0, 0, 0, 6509, 6510, 1, 0, 0, 0, 6510, 6512, 3, 1351, 673, 0, 6511, 6506, 1, 0, 0, 0, 6511, 6512, 1, 0, 0, 0, 6512, 6530, 1, 0, 0, 0, 6513, 6514, 5, 46, 0, 0, 6514, 6520, 3, 1351, 673, 0, 6515, 6517, 7, 10, 0, 0, 6516, 6518, 7, 1, 0, 0, 6517, 6516, 1, 0, 0, 0, 6517, 6518, 1, 0, 0, 0, 6518, 6519, 1, 0, 0, 0, 6519, 6521, 3, 1351, 673, 0, 6520, 6515, 1, 0, 0, 0, 6520, 6521, 1, 0, 0, 0, 6521, 6530, 1, 0, 0, 0, 6522, 6523, 3, 1351, 673, 0, 6523, 6525, 7, 10, 0, 0, 6524, 6526, 7, 1, 0, 0, 6525, 6524, 1, 0, 0, 0, 6525, 6526, 1, 0, 0, 0, 6526, 6527, 1, 0, 0, 0, 6527, 6528, 3, 1351, 673, 0, 6528, 6530, 1, 0, 0, 0, 6529, 6501, 1, 0, 0, 0, 6529, 6513, 1, 0, 0, 0, 6529, 6522, 1, 0, 0, 0, 6530, 1350, 1, 0, 0, 0, 6531, 6533, 7, 0, 0, 0, 6532, 6531, 1, 0, 0, 0, 6533, 6534, 1, 0, 0, 0, 6534, 6532, 1, 0, 0, 0, 6534, 6535, 1, 0, 0, 0, 6535, 1352, 1, 0, 0, 0, 6536, 6537, 5, 58, 0, 0, 6537, 6541, 7, 40, 0, 0, 6538, 6540, 7, 41, 0, 0, 6539, 6538, 1, 0, 0, 0, 6540, 6543, 1, 0, 0, 0, 6541, 6539, 1, 0, 0, 0, 6541, 6542, 1, 0, 0, 0, 6542, 1354, 1, 0, 0, 0, 6543, 6541, 1, 0, 0, 0, 6544, 6545, 5, 58, 0, 0, 6545, 6546, 5, 34, 0, 0, 6546, 6554, 1, 0, 0, 0, 6547, 6548, 5, 92, 0, 0, 6548, 6553, 9, 0, 0, 0, 6549, 6550, 5, 34, 0, 0, 6550, 6553, 5, 34, 0, 0, 6551, 6553, 8, 42, 0, 0, 6552, 6547, 1, 0, 0, 0, 6552, 6549, 1, 0, 0, 0, 6552, 6551, 1, 0, 0, 0, 6553, 6556, 1, 0, 0, 0, 6554, 6552, 1, 0, 0, 0, 6554, 6555, 1, 0, 0, 0, 6555, 6557, 1, 0, 0, 0, 6556, 6554, 1, 0, 0, 0, 6557, 6558, 5, 34, 0, 0, 6558, 1356, 1, 0, 0, 0, 6559, 6561, 7, 43, 0, 0, 6560, 6559, 1, 0, 0, 0, 6561, 6562, 1, 0, 0, 0, 6562, 6560, 1, 0, 0, 0, 6562, 6563, 1, 0, 0, 0, 6563, 6564, 1, 0, 0, 0, 6564, 6565, 6, 676, 7, 0, 6565, 1358, 1, 0, 0, 0, 6566, 6568, 5, 13, 0, 0, 6567, 6569, 5, 10, 0, 0, 6568, 6567, 1, 0, 0, 0, 6568, 6569, 1, 0, 0, 0, 6569, 6572, 1, 0, 0, 0, 6570, 6572, 5, 10, 0, 0, 6571, 6566, 1, 0, 0, 0, 6571, 6570, 1, 0, 0, 0, 6572, 6573, 1, 0, 0, 0, 6573, 6574, 6, 677, 7, 0, 6574, 1360, 1, 0, 0, 0, 6575, 6576, 5, 45, 0, 0, 6576, 6577, 5, 45, 0, 0, 6577, 6581, 1, 0, 0, 0, 6578, 6580, 8, 44, 0, 0, 6579, 6578, 1, 0, 0, 0, 6580, 6583, 1, 0, 0, 0, 6581, 6579, 1, 0, 0, 0, 6581, 6582, 1, 0, 0, 0, 6582, 6584, 1, 0, 0, 0, 6583, 6581, 1, 0, 0, 0, 6584, 6585, 6, 678, 7, 0, 6585, 1362, 1, 0, 0, 0, 6586, 6587, 5, 47, 0, 0, 6587, 6588, 5, 42, 0, 0, 6588, 6611, 1, 0, 0, 0, 6589, 6591, 5, 47, 0, 0, 6590, 6589, 1, 0, 0, 0, 6591, 6594, 1, 0, 0, 0, 6592, 6590, 1, 0, 0, 0, 6592, 6593, 1, 0, 0, 0, 6593, 6595, 1, 0, 0, 0, 6594, 6592, 1, 0, 0, 0, 6595, 6610, 3, 1363, 679, 0, 6596, 6610, 8, 45, 0, 0, 6597, 6599, 5, 47, 0, 0, 6598, 6597, 1, 0, 0, 0, 6599, 6600, 1, 0, 0, 0, 6600, 6598, 1, 0, 0, 0, 6600, 6601, 1, 0, 0, 0, 6601, 6602, 1, 0, 0, 0, 6602, 6610, 8, 45, 0, 0, 6603, 6605, 5, 42, 0, 0, 6604, 6603, 1, 0, 0, 0, 6605, 6606, 1, 0, 0, 0, 6606, 6604, 1, 0, 0, 0, 6606, 6607, 1, 0, 0, 0, 6607, 6608, 1, 0, 0, 0, 6608, 6610, 8, 45, 0, 0, 6609, 6592, 1, 0, 0, 0, 6609, 6596, 1, 0, 0, 0, 6609, 6598, 1, 0, 0, 0, 6609, 6604, 1, 0, 0, 0, 6610, 6613, 1, 0, 0, 0, 6611, 6609, 1, 0, 0, 0, 6611, 6612, 1, 0, 0, 0, 6612, 6617, 1, 0, 0, 0, 6613, 6611, 1, 0, 0, 0, 6614, 6616, 5, 42, 0, 0, 6615, 6614, 1, 0, 0, 0, 6616, 6619, 1, 0, 0, 0, 6617, 6615, 1, 0, 0, 0, 6617, 6618, 1, 0, 0, 0, 6618, 6620, 1, 0, 0, 0, 6619, 6617, 1, 0, 0, 0, 6620, 6621, 5, 42, 0, 0, 6621, 6622, 5, 47, 0, 0, 6622, 6623, 1, 0, 0, 0, 6623, 6624, 6, 679, 7, 0, 6624, 1364, 1, 0, 0, 0, 6625, 6626, 5, 47, 0, 0, 6626, 6627, 5, 42, 0, 0, 6627, 6652, 1, 0, 0, 0, 6628, 6630, 5, 47, 0, 0, 6629, 6628, 1, 0, 0, 0, 6630, 6633, 1, 0, 0, 0, 6631, 6629, 1, 0, 0, 0, 6631, 6632, 1, 0, 0, 0, 6632, 6634, 1, 0, 0, 0, 6633, 6631, 1, 0, 0, 0, 6634, 6651, 3, 1363, 679, 0, 6635, 6651, 8, 45, 0, 0, 6636, 6638, 5, 47, 0, 0, 6637, 6636, 1, 0, 0, 0, 6638, 6639, 1, 0, 0, 0, 6639, 6637, 1, 0, 0, 0, 6639, 6640, 1, 0, 0, 0, 6640, 6641, 1, 0, 0, 0, 6641, 6649, 8, 45, 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, 6647, 1, 0, 0, 0, 6647, 6649, 8, 45, 0, 0, 6648, 6637, 1, 0, 0, 0, 6648, 6643, 1, 0, 0, 0, 6649, 6651, 1, 0, 0, 0, 6650, 6631, 1, 0, 0, 0, 6650, 6635, 1, 0, 0, 0, 6650, 6648, 1, 0, 0, 0, 6651, 6654, 1, 0, 0, 0, 6652, 6650, 1, 0, 0, 0, 6652, 6653, 1, 0, 0, 0, 6653, 6672, 1, 0, 0, 0, 6654, 6652, 1, 0, 0, 0, 6655, 6657, 5, 47, 0, 0, 6656, 6655, 1, 0, 0, 0, 6657, 6658, 1, 0, 0, 0, 6658, 6656, 1, 0, 0, 0, 6658, 6659, 1, 0, 0, 0, 6659, 6673, 1, 0, 0, 0, 6660, 6662, 5, 42, 0, 0, 6661, 6660, 1, 0, 0, 0, 6662, 6663, 1, 0, 0, 0, 6663, 6661, 1, 0, 0, 0, 6663, 6664, 1, 0, 0, 0, 6664, 6673, 1, 0, 0, 0, 6665, 6667, 5, 47, 0, 0, 6666, 6665, 1, 0, 0, 0, 6667, 6670, 1, 0, 0, 0, 6668, 6666, 1, 0, 0, 0, 6668, 6669, 1, 0, 0, 0, 6669, 6671, 1, 0, 0, 0, 6670, 6668, 1, 0, 0, 0, 6671, 6673, 3, 1365, 680, 0, 6672, 6656, 1, 0, 0, 0, 6672, 6661, 1, 0, 0, 0, 6672, 6668, 1, 0, 0, 0, 6672, 6673, 1, 0, 0, 0, 6673, 6674, 1, 0, 0, 0, 6674, 6675, 6, 680, 8, 0, 6675, 1366, 1, 0, 0, 0, 6676, 6688, 5, 92, 0, 0, 6677, 6687, 8, 46, 0, 0, 6678, 6682, 5, 34, 0, 0, 6679, 6681, 8, 47, 0, 0, 6680, 6679, 1, 0, 0, 0, 6681, 6684, 1, 0, 0, 0, 6682, 6680, 1, 0, 0, 0, 6682, 6683, 1, 0, 0, 0, 6683, 6685, 1, 0, 0, 0, 6684, 6682, 1, 0, 0, 0, 6685, 6687, 5, 34, 0, 0, 6686, 6677, 1, 0, 0, 0, 6686, 6678, 1, 0, 0, 0, 6687, 6690, 1, 0, 0, 0, 6688, 6686, 1, 0, 0, 0, 6688, 6689, 1, 0, 0, 0, 6689, 6698, 1, 0, 0, 0, 6690, 6688, 1, 0, 0, 0, 6691, 6695, 5, 34, 0, 0, 6692, 6694, 8, 47, 0, 0, 6693, 6692, 1, 0, 0, 0, 6694, 6697, 1, 0, 0, 0, 6695, 6693, 1, 0, 0, 0, 6695, 6696, 1, 0, 0, 0, 6696, 6699, 1, 0, 0, 0, 6697, 6695, 1, 0, 0, 0, 6698, 6691, 1, 0, 0, 0, 6698, 6699, 1, 0, 0, 0, 6699, 1368, 1, 0, 0, 0, 6700, 6701, 5, 92, 0, 0, 6701, 6702, 5, 92, 0, 0, 6702, 1370, 1, 0, 0, 0, 6703, 6704, 9, 0, 0, 0, 6704, 1372, 1, 0, 0, 0, 6705, 6706, 3, 1377, 686, 0, 6706, 6707, 5, 39, 0, 0, 6707, 6708, 1, 0, 0, 0, 6708, 6709, 6, 684, 9, 0, 6709, 1374, 1, 0, 0, 0, 6710, 6712, 3, 1377, 686, 0, 6711, 6713, 5, 92, 0, 0, 6712, 6711, 1, 0, 0, 0, 6712, 6713, 1, 0, 0, 0, 6713, 6714, 1, 0, 0, 0, 6714, 6715, 5, 0, 0, 1, 6715, 1376, 1, 0, 0, 0, 6716, 6717, 5, 39, 0, 0, 6717, 6740, 5, 39, 0, 0, 6718, 6736, 5, 92, 0, 0, 6719, 6720, 5, 120, 0, 0, 6720, 6737, 7, 39, 0, 0, 6721, 6722, 5, 117, 0, 0, 6722, 6723, 7, 39, 0, 0, 6723, 6724, 7, 39, 0, 0, 6724, 6725, 7, 39, 0, 0, 6725, 6737, 7, 39, 0, 0, 6726, 6727, 5, 85, 0, 0, 6727, 6728, 7, 39, 0, 0, 6728, 6729, 7, 39, 0, 0, 6729, 6730, 7, 39, 0, 0, 6730, 6731, 7, 39, 0, 0, 6731, 6732, 7, 39, 0, 0, 6732, 6733, 7, 39, 0, 0, 6733, 6734, 7, 39, 0, 0, 6734, 6737, 7, 39, 0, 0, 6735, 6737, 8, 48, 0, 0, 6736, 6719, 1, 0, 0, 0, 6736, 6721, 1, 0, 0, 0, 6736, 6726, 1, 0, 0, 0, 6736, 6735, 1, 0, 0, 0, 6737, 6740, 1, 0, 0, 0, 6738, 6740, 8, 49, 0, 0, 6739, 6716, 1, 0, 0, 0, 6739, 6718, 1, 0, 0, 0, 6739, 6738, 1, 0, 0, 0, 6740, 6743, 1, 0, 0, 0, 6741, 6739, 1, 0, 0, 0, 6741, 6742, 1, 0, 0, 0, 6742, 1378, 1, 0, 0, 0, 6743, 6741, 1, 0, 0, 0, 6744, 6745, 3, 1383, 689, 0, 6745, 6746, 5, 39, 0, 0, 6746, 6747, 1, 0, 0, 0, 6747, 6748, 6, 687, 9, 0, 6748, 1380, 1, 0, 0, 0, 6749, 6751, 3, 1383, 689, 0, 6750, 6752, 5, 92, 0, 0, 6751, 6750, 1, 0, 0, 0, 6751, 6752, 1, 0, 0, 0, 6752, 6753, 1, 0, 0, 0, 6753, 6754, 5, 0, 0, 1, 6754, 1382, 1, 0, 0, 0, 6755, 6756, 5, 39, 0, 0, 6756, 6761, 5, 39, 0, 0, 6757, 6758, 5, 92, 0, 0, 6758, 6761, 9, 0, 0, 0, 6759, 6761, 8, 49, 0, 0, 6760, 6755, 1, 0, 0, 0, 6760, 6757, 1, 0, 0, 0, 6760, 6759, 1, 0, 0, 0, 6761, 6764, 1, 0, 0, 0, 6762, 6760, 1, 0, 0, 0, 6762, 6763, 1, 0, 0, 0, 6763, 1384, 1, 0, 0, 0, 6764, 6762, 1, 0, 0, 0, 6765, 6766, 3, 1357, 676, 0, 6766, 6767, 1, 0, 0, 0, 6767, 6768, 6, 690, 10, 0, 6768, 6769, 6, 690, 7, 0, 6769, 1386, 1, 0, 0, 0, 6770, 6771, 3, 1359, 677, 0, 6771, 6772, 1, 0, 0, 0, 6772, 6773, 6, 691, 11, 0, 6773, 6774, 6, 691, 7, 0, 6774, 6775, 6, 691, 12, 0, 6775, 1388, 1, 0, 0, 0, 6776, 6777, 6, 692, 13, 0, 6777, 6778, 1, 0, 0, 0, 6778, 6779, 6, 692, 14, 0, 6779, 6780, 6, 692, 15, 0, 6780, 1390, 1, 0, 0, 0, 6781, 6782, 3, 1357, 676, 0, 6782, 6783, 1, 0, 0, 0, 6783, 6784, 6, 693, 10, 0, 6784, 6785, 6, 693, 7, 0, 6785, 1392, 1, 0, 0, 0, 6786, 6787, 3, 1359, 677, 0, 6787, 6788, 1, 0, 0, 0, 6788, 6789, 6, 694, 11, 0, 6789, 6790, 6, 694, 7, 0, 6790, 1394, 1, 0, 0, 0, 6791, 6792, 5, 39, 0, 0, 6792, 6793, 1, 0, 0, 0, 6793, 6794, 6, 695, 2, 0, 6794, 6795, 6, 695, 16, 0, 6795, 1396, 1, 0, 0, 0, 6796, 6797, 6, 696, 17, 0, 6797, 6798, 1, 0, 0, 0, 6798, 6799, 6, 696, 14, 0, 6799, 6800, 6, 696, 15, 0, 6800, 1398, 1, 0, 0, 0, 6801, 6803, 8, 50, 0, 0, 6802, 6801, 1, 0, 0, 0, 6803, 6804, 1, 0, 0, 0, 6804, 6802, 1, 0, 0, 0, 6804, 6805, 1, 0, 0, 0, 6805, 6814, 1, 0, 0, 0, 6806, 6810, 5, 36, 0, 0, 6807, 6809, 8, 50, 0, 0, 6808, 6807, 1, 0, 0, 0, 6809, 6812, 1, 0, 0, 0, 6810, 6808, 1, 0, 0, 0, 6810, 6811, 1, 0, 0, 0, 6811, 6814, 1, 0, 0, 0, 6812, 6810, 1, 0, 0, 0, 6813, 6802, 1, 0, 0, 0, 6813, 6806, 1, 0, 0, 0, 6814, 1400, 1, 0, 0, 0, 6815, 6817, 5, 36, 0, 0, 6816, 6818, 3, 1327, 661, 0, 6817, 6816, 1, 0, 0, 0, 6817, 6818, 1, 0, 0, 0, 6818, 6819, 1, 0, 0, 0, 6819, 6820, 5, 36, 0, 0, 6820, 6821, 1, 0, 0, 0, 6821, 6822, 4, 698, 8, 0, 6822, 6823, 6, 698, 18, 0, 6823, 6824, 1, 0, 0, 0, 6824, 6825, 6, 698, 15, 0, 6825, 1402, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1470, 1476, 1478, 1483, 1487, 1489, 1492, 1501, 1503, 1508, 1513, 1515, 6359, 6368, 6372, 6376, 6385, 6387, 6397, 6399, 6425, 6427, 6445, 6456, 6467, 6484, 6504, 6508, 6511, 6517, 6520, 6525, 6529, 6534, 6541, 6552, 6554, 6562, 6568, 6571, 6581, 6592, 6600, 6606, 6609, 6611, 6617, 6631, 6639, 6645, 6648, 6650, 6652, 6658, 6663, 6668, 6672, 6682, 6686, 6688, 6695, 6698, 6712, 6736, 6739, 6741, 6751, 6760, 6762, 6804, 6810, 6813, 6817, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 660, 1, 5, 4, 0, 1, 671, 2, 0, 1, 0, 1, 680, 3, 2, 2, 0, 7, 667, 0, 7, 668, 0, 2, 3, 0, 1, 692, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 696, 5, 1, 698, 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..60f54ac9e7 --- /dev/null +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.java @@ -0,0 +1,5269 @@ +// 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.2 + + +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.2", 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, ZSTREAM=96, ZTABLE=97, + ZVIEW=98, TRAILING=99, TRUE_P=100, UNION=101, UNIQUE=102, USER=103, USING=104, + VARIADIC=105, WHEN=106, WHERE=107, WINDOW=108, WITH=109, AUTHORIZATION=110, + BINARY=111, COLLATION=112, CONCURRENTLY=113, CROSS=114, CURRENT_SCHEMA=115, + FREEZE=116, FULL=117, ILIKE=118, INNER_P=119, IS=120, ISNULL=121, JOIN=122, + LEFT=123, LIKE=124, NATURAL=125, NOTNULL=126, OUTER_P=127, OVER=128, OVERLAPS=129, + RIGHT=130, SIMILAR=131, VERBOSE=132, ABORT_P=133, ABSOLUTE_P=134, ACCESS=135, + ACTION=136, ADD_P=137, ADMIN=138, AFTER=139, AGGREGATE=140, ALSO=141, + ALTER=142, ALWAYS=143, ASSERTION=144, ASSIGNMENT=145, AT=146, ATTRIBUTE=147, + BACKWARD=148, BEFORE=149, BEGIN_P=150, BY=151, CACHE=152, CALLED=153, + CASCADE=154, CASCADED=155, CATALOG=156, CHAIN=157, CHARACTERISTICS=158, + CHECKPOINT=159, CLASS=160, CLOSE=161, CLUSTER=162, COMMENT=163, COMMENTS=164, + COMMIT=165, COMMITTED=166, CONFIGURATION=167, CONNECTION=168, CONSTRAINTS=169, + CONTENT_P=170, CONTINUE_P=171, CONVERSION_P=172, COPY=173, COST=174, CSV=175, + CURSOR=176, CYCLE=177, DATA_P=178, DATABASE=179, DAY_P=180, DEALLOCATE=181, + DECLARE=182, DEFAULTS=183, DEFERRED=184, DEFINER=185, DELETE_P=186, DELIMITER=187, + DELIMITERS=188, DICTIONARY=189, DISABLE_P=190, DISCARD=191, DOCUMENT_P=192, + DOMAIN_P=193, DOUBLE_P=194, DROP=195, EACH=196, ENABLE_P=197, ENCODING=198, + ENCRYPTED=199, ENUM_P=200, ESCAPE=201, EVENT=202, EXCLUDE=203, EXCLUDING=204, + EXCLUSIVE=205, EXECUTE=206, EXPLAIN=207, EXTENSION=208, EXTERNAL=209, + FAMILY=210, FIRST_P=211, FOLLOWING=212, FORCE=213, FORWARD=214, FUNCTION=215, + FUNCTIONS=216, GLOBAL=217, GRANTED=218, HANDLER=219, HEADER_P=220, HOLD=221, + HOUR_P=222, IDENTITY_P=223, IF_P=224, IMMEDIATE=225, IMMUTABLE=226, IMPLICIT_P=227, + INCLUDING=228, INCREMENT=229, INDEX=230, INDEXES=231, INHERIT=232, INHERITS=233, + INLINE_P=234, INSENSITIVE=235, INSERT=236, INSTEAD=237, INVOKER=238, ISOLATION=239, + KEY=240, LABEL=241, LANGUAGE=242, LARGE_P=243, LAST_P=244, LEAKPROOF=245, + LEVEL=246, LISTEN=247, LOAD=248, LOCAL=249, LOCATION=250, LOCK_P=251, + MAPPING=252, MATCH=253, MATCHED=254, MATERIALIZED=255, MAXVALUE=256, MERGE=257, + MINUTE_P=258, MINVALUE=259, MODE=260, MONTH_P=261, MOVE=262, NAME_P=263, + NAMES=264, NEXT=265, NO=266, NOTHING=267, NOTIFY=268, NOWAIT=269, NULLS_P=270, + OBJECT_P=271, OF=272, OFF=273, OIDS=274, OPERATOR=275, OPTION=276, OPTIONS=277, + OWNED=278, OWNER=279, PARSER=280, PARTIAL=281, PARTITION=282, PASSING=283, + PASSWORD=284, PLANS=285, PRECEDING=286, PREPARE=287, PREPARED=288, PRESERVE=289, + PRIOR=290, PRIVILEGES=291, PROCEDURAL=292, PROCEDURE=293, PROGRAM=294, + QUOTE=295, RANGE=296, READ=297, REASSIGN=298, RECHECK=299, RECURSIVE=300, + REF=301, REFRESH=302, REINDEX=303, RELATIVE_P=304, RELEASE=305, RENAME=306, + REPEATABLE=307, REPLACE=308, REPLICA=309, RESET=310, RESTART=311, RESTRICT=312, + RETURNS=313, REVOKE=314, ROLE=315, ROLLBACK=316, ROWS=317, RULE=318, SAVEPOINT=319, + SCHEMA=320, SCROLL=321, SEARCH=322, SECOND_P=323, SECURITY=324, SEQUENCE=325, + SEQUENCES=326, SERIALIZABLE=327, SERVER=328, SESSION=329, SET=330, SHARE=331, + SHOW=332, SIMPLE=333, SNAPSHOT=334, STABLE=335, STANDALONE_P=336, START=337, + STATEMENT=338, STATISTICS=339, STDIN=340, STDOUT=341, STORAGE=342, STRICT_P=343, + STRIP_P=344, SYSID=345, SYSTEM_P=346, TABLES=347, TABLESPACE=348, TEMP=349, + TEMPLATE=350, TEMPORARY=351, TEXT_P=352, TRANSACTION=353, TRIGGER=354, + TRUNCATE=355, TRUSTED=356, TYPE_P=357, TYPES_P=358, UNBOUNDED=359, UNCOMMITTED=360, + UNENCRYPTED=361, UNKNOWN=362, UNLISTEN=363, UNLOGGED=364, UNTIL=365, UPDATE=366, + VACUUM=367, VALID=368, VALIDATE=369, VALIDATOR=370, VARYING=371, VERSION_P=372, + VIEW=373, VOLATILE=374, WHITESPACE_P=375, WITHOUT=376, WORK=377, WRAPPER=378, + WRITE=379, XML_P=380, YEAR_P=381, YES_P=382, ZONE=383, BETWEEN=384, BIGINT=385, + BIT=386, BOOLEAN_P=387, CHAR_P=388, CHARACTER=389, COALESCE=390, DEC=391, + DECIMAL_P=392, EXISTS=393, EXTRACT=394, FLOAT_P=395, GREATEST=396, INOUT=397, + INT_P=398, INTEGER=399, INTERVAL=400, LEAST=401, NATIONAL=402, NCHAR=403, + NONE=404, NULLIF=405, NUMERIC=406, OVERLAY=407, POSITION=408, PRECISION=409, + REAL=410, ROW=411, SETOF=412, SMALLINT=413, SUBSTRING=414, TIME=415, TIMESTAMP=416, + TREAT=417, TRIM=418, VALUES=419, VARCHAR=420, XMLATTRIBUTES=421, XMLCOMMENT=422, + XMLAGG=423, XML_IS_WELL_FORMED=424, XML_IS_WELL_FORMED_DOCUMENT=425, XML_IS_WELL_FORMED_CONTENT=426, + XPATH=427, XPATH_EXISTS=428, XMLCONCAT=429, XMLELEMENT=430, XMLEXISTS=431, + XMLFOREST=432, XMLPARSE=433, XMLPI=434, XMLROOT=435, XMLSERIALIZE=436, + CALL=437, CURRENT_P=438, ATTACH=439, DETACH=440, EXPRESSION=441, GENERATED=442, + LOGGED=443, STORED=444, INCLUDE=445, ROUTINE=446, TRANSFORM=447, IMPORT_P=448, + POLICY=449, METHOD=450, REFERENCING=451, NEW=452, OLD=453, VALUE_P=454, + SUBSCRIPTION=455, PUBLICATION=456, OUT_P=457, END_P=458, ROUTINES=459, + SCHEMAS=460, PROCEDURES=461, INPUT_P=462, SUPPORT=463, PARALLEL=464, SQL_P=465, + DEPENDS=466, OVERRIDING=467, CONFLICT=468, SKIP_P=469, LOCKED=470, TIES=471, + ROLLUP=472, CUBE=473, GROUPING=474, SETS=475, TABLESAMPLE=476, ORDINALITY=477, + XMLTABLE=478, COLUMNS=479, XMLNAMESPACES=480, ROWTYPE=481, NORMALIZED=482, + WITHIN=483, FILTER=484, GROUPS=485, OTHERS=486, NFC=487, NFD=488, NFKC=489, + NFKD=490, UESCAPE=491, VIEWS=492, NORMALIZE=493, DUMP=494, PRINT_STRICT_PARAMS=495, + VARIABLE_CONFLICT=496, ERROR=497, USE_VARIABLE=498, USE_COLUMN=499, ALIAS=500, + CONSTANT=501, PERFORM=502, GET=503, DIAGNOSTICS=504, STACKED=505, ELSIF=506, + WHILE=507, REVERSE=508, FOREACH=509, SLICE=510, EXIT=511, RETURN=512, + QUERY=513, RAISE=514, SQLSTATE=515, DEBUG=516, LOG=517, INFO=518, NOTICE=519, + WARNING=520, EXCEPTION=521, ASSERT=522, LOOP=523, OPEN=524, ABS=525, CBRT=526, + CEIL=527, CEILING=528, DEGREES=529, DIV=530, EXP=531, FACTORIAL=532, FLOOR=533, + GCD=534, LCM=535, LN=536, LOG10=537, MIN_SCALE=538, MOD=539, PI=540, POWER=541, + RADIANS=542, ROUND=543, SCALE=544, SIGN=545, SQRT=546, TRIM_SCALE=547, + TRUNC=548, WIDTH_BUCKET=549, RANDOM=550, SETSEED=551, ACOS=552, ACOSD=553, + ASIN=554, ASIND=555, ATAN=556, ATAND=557, ATAN2=558, ATAN2D=559, COS=560, + COSD=561, COT=562, COTD=563, SIN=564, SIND=565, TAN=566, TAND=567, SINH=568, + COSH=569, TANH=570, ASINH=571, ACOSH=572, ATANH=573, BIT_LENGTH=574, CHAR_LENGTH=575, + CHARACTER_LENGTH=576, LOWER=577, OCTET_LENGTH=578, UPPER=579, ASCII=580, + BTRIM=581, CHR=582, CONCAT=583, CONCAT_WS=584, FORMAT=585, INITCAP=586, + LENGTH=587, LPAD=588, LTRIM=589, MD5=590, PARSE_IDENT=591, PG_CLIENT_ENCODING=592, + QUOTE_IDENT=593, QUOTE_LITERAL=594, QUOTE_NULLABLE=595, REGEXP_COUNT=596, + REGEXP_INSTR=597, REGEXP_LIKE=598, REGEXP_MATCH=599, REGEXP_MATCHES=600, + REGEXP_REPLACE=601, REGEXP_SPLIT_TO_ARRAY=602, REGEXP_SPLIT_TO_TABLE=603, + REGEXP_SUBSTR=604, REPEAT=605, RPAD=606, RTRIM=607, SPLIT_PART=608, STARTS_WITH=609, + STRING_TO_ARRAY=610, STRING_TO_TABLE=611, STRPOS=612, SUBSTR=613, TO_ASCII=614, + TO_HEX=615, TRANSLATE=616, UNISTR=617, AGE=618, CLOCK_TIMESTAMP=619, DATE_BIN=620, + DATE_PART=621, DATE_TRUNC=622, ISFINITE=623, JUSTIFY_DAYS=624, JUSTIFY_HOURS=625, + JUSTIFY_INTERVAL=626, MAKE_DATE=627, MAKE_INTERVAL=628, MAKE_TIME=629, + MAKE_TIMESTAMP=630, MAKE_TIMESTAMPTZ=631, NOW=632, STATEMENT_TIMESTAMP=633, + TIMEOFDAY=634, TRANSACTION_TIMESTAMP=635, TO_TIMESTAMP=636, TO_CHAR=637, + TO_DATE=638, TO_NUMBER=639, Identifier=640, QuotedIdentifier=641, UnterminatedQuotedIdentifier=642, + InvalidQuotedIdentifier=643, InvalidUnterminatedQuotedIdentifier=644, + UnicodeQuotedIdentifier=645, UnterminatedUnicodeQuotedIdentifier=646, + InvalidUnicodeQuotedIdentifier=647, InvalidUnterminatedUnicodeQuotedIdentifier=648, + StringConstant=649, UnterminatedStringConstant=650, UnicodeEscapeStringConstant=651, + UnterminatedUnicodeEscapeStringConstant=652, BeginDollarStringConstant=653, + BinaryStringConstant=654, UnterminatedBinaryStringConstant=655, InvalidBinaryStringConstant=656, + InvalidUnterminatedBinaryStringConstant=657, HexadecimalStringConstant=658, + UnterminatedHexadecimalStringConstant=659, InvalidHexadecimalStringConstant=660, + InvalidUnterminatedHexadecimalStringConstant=661, Integral=662, NumericFail=663, + Numeric=664, PLSQLVARIABLENAME=665, PLSQLIDENTIFIER=666, Whitespace=667, + Newline=668, LineComment=669, BlockComment=670, UnterminatedBlockComment=671, + MetaCommand=672, EndMetaCommand=673, ErrorCharacter=674, EscapeStringConstant=675, + UnterminatedEscapeStringConstant=676, InvalidEscapeStringConstant=677, + InvalidUnterminatedEscapeStringConstant=678, AfterEscapeStringConstantMode_NotContinued=679, + AfterEscapeStringConstantWithNewlineMode_NotContinued=680, DollarText=681, + EndDollarStringConstant=682, AfterEscapeStringConstantWithNewlineMode_Continued=683; + 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", "ZSTREAM", "ZTABLE", "ZVIEW", "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'", "'ZSTREAM'", + "'ZTABLE'", "'ZVIEW'", "'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", "ZSTREAM", "ZTABLE", "ZVIEW", "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 660: + BeginDollarStringConstant_action((RuleContext)_localctx, actionIndex); + break; + case 671: + NumericFail_action((RuleContext)_localctx, actionIndex); + break; + case 680: + UnterminatedBlockComment_action((RuleContext)_localctx, actionIndex); + break; + case 692: + AfterEscapeStringConstantMode_NotContinued_action((RuleContext)_localctx, actionIndex); + break; + case 696: + AfterEscapeStringConstantWithNewlineMode_NotContinued_action((RuleContext)_localctx, actionIndex); + break; + case 698: + 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 644: + return IdentifierStartChar_sempred((RuleContext)_localctx, predIndex); + case 698: + 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\u02ab\u1aaa\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\u0002\u02b9\u0007\u02b9"+ + "\u0002\u02ba\u0007\u02ba\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\u05bd\b\u001b\u000b"+ + "\u001b\f\u001b\u05be\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0004"+ + "\u001c\u05c5\b\u001c\u000b\u001c\f\u001c\u05c6\u0001\u001c\u0001\u001c"+ + "\u0001\u001c\u0003\u001c\u05cc\b\u001c\u0001\u001c\u0001\u001c\u0004\u001c"+ + "\u05d0\b\u001c\u000b\u001c\f\u001c\u05d1\u0001\u001c\u0003\u001c\u05d5"+ + "\b\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001"+ + "\u001d\u0001\u001d\u0005\u001d\u05de\b\u001d\n\u001d\f\u001d\u05e1\t\u001d"+ + "\u0001\u001d\u0001\u001d\u0003\u001d\u05e5\b\u001d\u0001\u001d\u0001\u001d"+ + "\u0001\u001d\u0004\u001d\u05ea\b\u001d\u000b\u001d\f\u001d\u05eb\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\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001"+ + "d\u0001d\u0001d\u0001d\u0001d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001"+ + "e\u0001e\u0001e\u0001f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001"+ + "f\u0001f\u0001g\u0001g\u0001g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001"+ + "h\u0001h\u0001h\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001"+ + "j\u0001j\u0001j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+ + "k\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001"+ + "m\u0001m\u0001m\u0001m\u0001m\u0001n\u0001n\u0001n\u0001n\u0001n\u0001"+ + "n\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001p\u0001p\u0001"+ + "p\u0001p\u0001p\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001"+ + "q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001"+ + "r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001"+ + "s\u0001s\u0001s\u0001s\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001"+ + "t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001"+ + "u\u0001u\u0001u\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001"+ + "v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001w\u0001w\u0001"+ + "w\u0001w\u0001w\u0001w\u0001w\u0001x\u0001x\u0001x\u0001x\u0001x\u0001"+ + "y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001z\u0001z\u0001z\u0001z\u0001"+ + "z\u0001z\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\u0081\u0001\u0081\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\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\u0084\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\u0086\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\u0089\u0001\u0089\u0001"+ + "\u0089\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\u008a\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001"+ + "\u008b\u0001\u008b\u0001\u008b\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\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\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\u0093\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\u0094\u0001\u0094\u0001"+ + "\u0094\u0001\u0094\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0096\u0001"+ + "\u0096\u0001\u0096\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\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\u009a\u0001\u009a\u0001\u009a\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\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\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"+ + "\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001"+ + "\u00a1\u0001\u00a1\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"+ + "\u00a2\u0001\u00a2\u0001\u00a2\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\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\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\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\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\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"+ + "\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001"+ + "\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00af\u0001\u00af\u0001\u00af\u0001"+ + "\u00af\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\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001"+ + "\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b3\u0001\u00b3\u0001"+ + "\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b4\u0001"+ + "\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\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\u00b8\u0001"+ + "\u00b8\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"+ + "\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"+ + "\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\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\u00bf\u0001\u00bf\u0001\u00bf\u0001"+ + "\u00c0\u0001\u00c0\u0001\u00c0\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\u00c2\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\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\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\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00ca\u0001\u00ca\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\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\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\u00d0\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\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\u00d4\u0001\u00d4\u0001\u00d4\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\u00d7\u0001\u00d7\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\u00da\u0001\u00db\u0001\u00db\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\u00dd\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\u00de\u0001\u00de\u0001\u00de\u0001"+ + "\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001"+ + "\u00df\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\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\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\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\u00e7\u0001\u00e7\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\u00e8\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\u00eb\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\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"+ + "\u00ee\u0001\u00ee\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\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\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\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\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\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\u00f8\u0001"+ + "\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001"+ + "\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0001"+ + "\u00fa\u0001\u00fa\u0001\u00fa\u0001\u00fa\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\u00fd\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\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\u0102\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\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"+ + "\u0105\u0001\u0105\u0001\u0106\u0001\u0106\u0001\u0106\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\u0108\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\u010b\u0001"+ + "\u010b\u0001\u010b\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001"+ + "\u010c\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010e\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"+ + "\u010f\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0001"+ + "\u0110\u0001\u0110\u0001\u0111\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\u0113\u0001\u0113\u0001\u0113\u0001"+ + "\u0114\u0001\u0114\u0001\u0114\u0001\u0114\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\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\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\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\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\u0121\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\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\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\u0126\u0001\u0127\u0001\u0127\u0001\u0127\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\u0128\u0001\u0128\u0001\u0128\u0001\u0128\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\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001"+ + "\u012b\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\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\u012f\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\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\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\u0135\u0001\u0136\u0001"+ + "\u0136\u0001\u0136\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"+ + "\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\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\u013b\u0001"+ + "\u013b\u0001\u013c\u0001\u013c\u0001\u013c\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\u013e\u0001\u013e\u0001"+ + "\u013e\u0001\u013e\u0001\u013e\u0001\u013f\u0001\u013f\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\u0141\u0001"+ + "\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0142\u0001\u0142\u0001"+ + "\u0142\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\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\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\u0149\u0001\u0149\u0001\u0149\u0001\u014a\u0001\u014a\u0001"+ + "\u014a\u0001\u014a\u0001\u014a\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\u014b\u0001\u014b\u0001\u014b\u0001"+ + "\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001"+ + "\u014c\u0001\u014c\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001"+ + "\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\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\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\u0153\u0001\u0153\u0001"+ + "\u0153\u0001\u0153\u0001\u0153\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\u0155\u0001"+ + "\u0155\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156\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"+ + "\u0158\u0001\u0159\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\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\u015e\u0001"+ + "\u015e\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\u015f\u0001\u015f\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"+ + "\u0161\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\u0164\u0001\u0164\u0001"+ + "\u0164\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\u0166\u0001"+ + "\u0166\u0001\u0166\u0001\u0166\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\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\u016b\u0001\u016b\u0001\u016b\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\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\u016e\u0001\u016e\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\u016f\u0001\u016f\u0001\u016f\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\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"+ + "\u0174\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\u0175\u0001"+ + "\u0175\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"+ + "\u0179\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001"+ + "\u017a\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\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001"+ + "\u017d\u0001\u017d\u0001\u017d\u0001\u017e\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\u0182\u0001\u0182\u0001"+ + "\u0182\u0001\u0182\u0001\u0182\u0001\u0183\u0001\u0183\u0001\u0183\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"+ + "\u0185\u0001\u0185\u0001\u0185\u0001\u0185\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\u0188\u0001"+ + "\u0188\u0001\u0188\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\u0189\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"+ + "\u018c\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\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\u0192\u0001\u0192\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\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001"+ + "\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\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"+ + "\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\u019b\u0001\u019b\u0001"+ + "\u019b\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\u019c\u0001\u019d\u0001"+ + "\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019e\u0001\u019e\u0001"+ + "\u019e\u0001\u019e\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\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\u01a3\u0001\u01a3\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"+ + "\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\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\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\u01ac\u0001"+ + "\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+ + "\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+ + "\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\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\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\u01ad\u0001\u01ad\u0001\u01ad\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\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\u01b1\u0001\u01b2\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\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001"+ + "\u01b4\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\u01b6\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"+ + "\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\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\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\u01bc\u0001"+ + "\u01bc\u0001\u01bc\u0001\u01bd\u0001\u01bd\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\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\u01c1\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\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"+ + "\u01c5\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\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c8\u0001"+ + "\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c9\u0001\u01c9\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"+ + "\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01cb\u0001\u01cb\u0001"+ + "\u01cb\u0001\u01cb\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\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\u01cf\u0001\u01cf\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\u01d0\u0001\u01d0\u0001\u01d0\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"+ + "\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\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\u01d6\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\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\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"+ + "\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\u01e0\u0001\u01e0\u0001\u01e0\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\u01e3\u0001\u01e3\u0001\u01e3\u0001"+ + "\u01e4\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\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\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e9\u0001\u01e9\u0001"+ + "\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01ea\u0001"+ + "\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001"+ + "\u01eb\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\u01ef\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\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\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"+ + "\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"+ + "\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\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\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"+ + "\u01f8\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\u01f9\u0001\u01f9\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\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\u01fe\u0001\u01ff\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\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\u0203\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\u0205\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\u0206\u0001\u0206\u0001"+ + "\u0207\u0001\u0207\u0001\u0207\u0001\u0207\u0001\u0207\u0001\u0207\u0001"+ + "\u0208\u0001\u0208\u0001\u0208\u0001\u0208\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\u020b\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\u020c\u0001"+ + "\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020d\u0001\u020d\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\u0210\u0001\u0210\u0001\u0210\u0001"+ + "\u0210\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0211\u0001"+ + "\u0212\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\u0214\u0001\u0214\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\u0217\u0001\u0217\u0001\u0217\u0001\u0217\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\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\u021d\u0001\u021d\u0001"+ + "\u021e\u0001\u021e\u0001\u021e\u0001\u021e\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\u0221\u0001\u0221\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\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"+ + "\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\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001"+ + "\u0228\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u0229\u0001"+ + "\u0229\u0001\u0229\u0001\u022a\u0001\u022a\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\u0230\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0230\u0001"+ + "\u0230\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001"+ + "\u0231\u0001\u0232\u0001\u0232\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\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"+ + "\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\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\u0242\u0001\u0242\u0001"+ + "\u0242\u0001\u0242\u0001\u0242\u0001\u0242\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\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\u0245\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\u0247\u0001\u0247\u0001\u0248\u0001\u0248\u0001"+ + "\u0248\u0001\u0248\u0001\u0248\u0001\u0248\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\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\u024d\u0001\u024d\u0001\u024d\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\u0250\u0001\u0250\u0001"+ + "\u0250\u0001\u0250\u0001\u0250\u0001\u0250\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\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\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\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"+ + "\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\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\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\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\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\u025e\u0001\u025e\u0001"+ + "\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\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"+ + "\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\u0261\u0001\u0261\u0001"+ + "\u0261\u0001\u0261\u0001\u0261\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\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\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\u0266\u0001\u0266\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\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\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\u026b\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001"+ + "\u026c\u0001\u026c\u0001\u026c\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\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\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\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\u0274\u0001\u0274\u0001\u0274\u0001"+ + "\u0274\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\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\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"+ + "\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\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\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\u027e\u0001\u027e\u0001"+ + "\u027e\u0001\u027e\u0001\u027e\u0001\u027e\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\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\u0281\u0001\u0281\u0001\u0281\u0001"+ + "\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0282\u0001"+ + "\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ + "\u0282\u0001\u0282\u0001\u0282\u0001\u0283\u0001\u0283\u0005\u0283\u18d6"+ + "\b\u0283\n\u0283\f\u0283\u18d9\t\u0283\u0001\u0284\u0001\u0284\u0001\u0284"+ + "\u0001\u0284\u0001\u0284\u0001\u0284\u0003\u0284\u18e1\b\u0284\u0001\u0285"+ + "\u0001\u0285\u0003\u0285\u18e5\b\u0285\u0001\u0286\u0001\u0286\u0003\u0286"+ + "\u18e9\b\u0286\u0001\u0287\u0001\u0287\u0001\u0287\u0001\u0288\u0001\u0288"+ + "\u0001\u0288\u0001\u0288\u0005\u0288\u18f2\b\u0288\n\u0288\f\u0288\u18f5"+ + "\t\u0288\u0001\u0289\u0001\u0289\u0001\u0289\u0001\u028a\u0001\u028a\u0001"+ + "\u028a\u0001\u028a\u0005\u028a\u18fe\b\u028a\n\u028a\f\u028a\u1901\t\u028a"+ + "\u0001\u028b\u0001\u028b\u0001\u028b\u0001\u028b\u0001\u028c\u0001\u028c"+ + "\u0001\u028c\u0001\u028c\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028d"+ + "\u0001\u028e\u0001\u028e\u0001\u028e\u0001\u028e\u0001\u028f\u0001\u028f"+ + "\u0001\u028f\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0005\u0290"+ + "\u191a\b\u0290\n\u0290\f\u0290\u191d\t\u0290\u0001\u0291\u0001\u0291\u0001"+ + "\u0291\u0001\u0291\u0001\u0291\u0001\u0291\u0001\u0292\u0001\u0292\u0001"+ + "\u0292\u0001\u0293\u0001\u0293\u0001\u0293\u0001\u0293\u0001\u0294\u0001"+ + "\u0294\u0003\u0294\u192e\b\u0294\u0001\u0294\u0001\u0294\u0001\u0294\u0001"+ + "\u0294\u0001\u0294\u0001\u0295\u0001\u0295\u0005\u0295\u1937\b\u0295\n"+ + "\u0295\f\u0295\u193a\t\u0295\u0001\u0296\u0001\u0296\u0001\u0296\u0001"+ + "\u0297\u0001\u0297\u0001\u0297\u0005\u0297\u1942\b\u0297\n\u0297\f\u0297"+ + "\u1945\t\u0297\u0001\u0298\u0001\u0298\u0001\u0298\u0001\u0299\u0001\u0299"+ + "\u0001\u0299\u0001\u029a\u0001\u029a\u0001\u029a\u0001\u029b\u0001\u029b"+ + "\u0001\u029b\u0005\u029b\u1953\b\u029b\n\u029b\f\u029b\u1956\t\u029b\u0001"+ + "\u029c\u0001\u029c\u0001\u029c\u0001\u029d\u0001\u029d\u0001\u029d\u0001"+ + "\u029e\u0001\u029e\u0001\u029f\u0001\u029f\u0001\u029f\u0001\u029f\u0001"+ + "\u029f\u0001\u029f\u0001\u02a0\u0001\u02a0\u0001\u02a0\u0003\u02a0\u1969"+ + "\b\u02a0\u0001\u02a0\u0001\u02a0\u0003\u02a0\u196d\b\u02a0\u0001\u02a0"+ + "\u0003\u02a0\u1970\b\u02a0\u0001\u02a0\u0001\u02a0\u0001\u02a0\u0001\u02a0"+ + "\u0003\u02a0\u1976\b\u02a0\u0001\u02a0\u0003\u02a0\u1979\b\u02a0\u0001"+ + "\u02a0\u0001\u02a0\u0001\u02a0\u0003\u02a0\u197e\b\u02a0\u0001\u02a0\u0001"+ + "\u02a0\u0003\u02a0\u1982\b\u02a0\u0001\u02a1\u0004\u02a1\u1985\b\u02a1"+ + "\u000b\u02a1\f\u02a1\u1986\u0001\u02a2\u0001\u02a2\u0001\u02a2\u0005\u02a2"+ + "\u198c\b\u02a2\n\u02a2\f\u02a2\u198f\t\u02a2\u0001\u02a3\u0001\u02a3\u0001"+ + "\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0005"+ + "\u02a3\u1999\b\u02a3\n\u02a3\f\u02a3\u199c\t\u02a3\u0001\u02a3\u0001\u02a3"+ + "\u0001\u02a4\u0004\u02a4\u19a1\b\u02a4\u000b\u02a4\f\u02a4\u19a2\u0001"+ + "\u02a4\u0001\u02a4\u0001\u02a5\u0001\u02a5\u0003\u02a5\u19a9\b\u02a5\u0001"+ + "\u02a5\u0003\u02a5\u19ac\b\u02a5\u0001\u02a5\u0001\u02a5\u0001\u02a6\u0001"+ + "\u02a6\u0001\u02a6\u0001\u02a6\u0005\u02a6\u19b4\b\u02a6\n\u02a6\f\u02a6"+ + "\u19b7\t\u02a6\u0001\u02a6\u0001\u02a6\u0001\u02a7\u0001\u02a7\u0001\u02a7"+ + "\u0001\u02a7\u0005\u02a7\u19bf\b\u02a7\n\u02a7\f\u02a7\u19c2\t\u02a7\u0001"+ + "\u02a7\u0001\u02a7\u0001\u02a7\u0004\u02a7\u19c7\b\u02a7\u000b\u02a7\f"+ + "\u02a7\u19c8\u0001\u02a7\u0001\u02a7\u0004\u02a7\u19cd\b\u02a7\u000b\u02a7"+ + "\f\u02a7\u19ce\u0001\u02a7\u0005\u02a7\u19d2\b\u02a7\n\u02a7\f\u02a7\u19d5"+ + "\t\u02a7\u0001\u02a7\u0005\u02a7\u19d8\b\u02a7\n\u02a7\f\u02a7\u19db\t"+ + "\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001"+ + "\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0005\u02a8\u19e6\b\u02a8\n"+ + "\u02a8\f\u02a8\u19e9\t\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0004"+ + "\u02a8\u19ee\b\u02a8\u000b\u02a8\f\u02a8\u19ef\u0001\u02a8\u0001\u02a8"+ + "\u0004\u02a8\u19f4\b\u02a8\u000b\u02a8\f\u02a8\u19f5\u0001\u02a8\u0003"+ + "\u02a8\u19f9\b\u02a8\u0005\u02a8\u19fb\b\u02a8\n\u02a8\f\u02a8\u19fe\t"+ + "\u02a8\u0001\u02a8\u0004\u02a8\u1a01\b\u02a8\u000b\u02a8\f\u02a8\u1a02"+ + "\u0001\u02a8\u0004\u02a8\u1a06\b\u02a8\u000b\u02a8\f\u02a8\u1a07\u0001"+ + "\u02a8\u0005\u02a8\u1a0b\b\u02a8\n\u02a8\f\u02a8\u1a0e\t\u02a8\u0001\u02a8"+ + "\u0003\u02a8\u1a11\b\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a9\u0001\u02a9"+ + "\u0001\u02a9\u0001\u02a9\u0005\u02a9\u1a19\b\u02a9\n\u02a9\f\u02a9\u1a1c"+ + "\t\u02a9\u0001\u02a9\u0005\u02a9\u1a1f\b\u02a9\n\u02a9\f\u02a9\u1a22\t"+ + "\u02a9\u0001\u02a9\u0001\u02a9\u0005\u02a9\u1a26\b\u02a9\n\u02a9\f\u02a9"+ + "\u1a29\t\u02a9\u0003\u02a9\u1a2b\b\u02a9\u0001\u02aa\u0001\u02aa\u0001"+ + "\u02aa\u0001\u02ab\u0001\u02ab\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001"+ + "\u02ac\u0001\u02ac\u0001\u02ad\u0001\u02ad\u0003\u02ad\u1a39\b\u02ad\u0001"+ + "\u02ad\u0001\u02ad\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001"+ + "\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001"+ + "\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001"+ + "\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0003\u02ae\u1a51\b\u02ae\u0001"+ + "\u02ae\u0005\u02ae\u1a54\b\u02ae\n\u02ae\f\u02ae\u1a57\t\u02ae\u0001\u02af"+ + "\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02b0\u0001\u02b0"+ + "\u0003\u02b0\u1a60\b\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b1\u0001\u02b1"+ + "\u0001\u02b1\u0001\u02b1\u0001\u02b1\u0005\u02b1\u1a69\b\u02b1\n\u02b1"+ + "\f\u02b1\u1a6c\t\u02b1\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2"+ + "\u0001\u02b2\u0001\u02b3\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\u0001\u02b7"+ + "\u0001\u02b7\u0001\u02b7\u0001\u02b7\u0001\u02b8\u0001\u02b8\u0001\u02b8"+ + "\u0001\u02b8\u0001\u02b8\u0001\u02b9\u0004\u02b9\u1a93\b\u02b9\u000b\u02b9"+ + "\f\u02b9\u1a94\u0001\u02b9\u0001\u02b9\u0005\u02b9\u1a99\b\u02b9\n\u02b9"+ + "\f\u02b9\u1a9c\t\u02b9\u0003\u02b9\u1a9e\b\u02b9\u0001\u02ba\u0001\u02ba"+ + "\u0003\u02ba\u1aa2\b\u02ba\u0001\u02ba\u0001\u02ba\u0001\u02ba\u0001\u02ba"+ + "\u0001\u02ba\u0001\u02ba\u0001\u02ba\u0000\u0000\u02bb\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/\u00161\u00173\u00185\u00197\u001a9\u001b"+ + ";\u001c=\u001d?\u0000A\u0000C\u0000E\u0000G\u001eI\u001fK M!O\"Q#S$U%"+ + "W&Y\'[(])_*a+c,e-g.i/k0m1o2q3s4u5w6y7{8}9\u007f:\u0081;\u0083<\u0085="+ + "\u0087>\u0089?\u008b@\u008dA\u008fB\u0091C\u0093D\u0095E\u0097F\u0099"+ + "G\u009bH\u009dI\u009fJ\u00a1K\u00a3L\u00a5M\u00a7N\u00a9O\u00abP\u00ad"+ + "Q\u00afR\u00b1S\u00b3T\u00b5U\u00b7V\u00b9W\u00bbX\u00bdY\u00bfZ\u00c1"+ + "[\u00c3\\\u00c5]\u00c7^\u00c9_\u00cb`\u00cda\u00cfb\u00d1c\u00d3d\u00d5"+ + "e\u00d7f\u00d9g\u00dbh\u00ddi\u00dfj\u00e1k\u00e3l\u00e5m\u00e7n\u00e9"+ + "o\u00ebp\u00edq\u00efr\u00f1s\u00f3t\u00f5u\u00f7v\u00f9w\u00fbx\u00fd"+ + "y\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\u027f"+ + "\u050b\u0280\u050d\u0000\u050f\u0000\u0511\u0000\u0513\u0281\u0515\u0282"+ + "\u0517\u0283\u0519\u0284\u051b\u0285\u051d\u0286\u051f\u0287\u0521\u0288"+ + "\u0523\u0289\u0525\u028a\u0527\u0000\u0529\u028b\u052b\u028c\u052d\u028d"+ + "\u052f\u0000\u0531\u028e\u0533\u028f\u0535\u0290\u0537\u0291\u0539\u0292"+ + "\u053b\u0293\u053d\u0294\u053f\u0295\u0541\u0296\u0543\u0297\u0545\u0298"+ + "\u0547\u0000\u0549\u0299\u054b\u029a\u054d\u029b\u054f\u029c\u0551\u029d"+ + "\u0553\u029e\u0555\u029f\u0557\u02a0\u0559\u02a1\u055b\u02a2\u055d\u02a3"+ + "\u055f\u02a4\u0561\u0000\u0563\u02a5\u0565\u02a6\u0567\u0000\u0569\u0000"+ + "\u056b\u0000\u056d\u02a7\u056f\u0000\u0571\u0000\u0573\u02ab\u0575\u02a8"+ + "\u0577\u02a9\u0579\u02aa\u0005\u0000\u0001\u0002\u0003\u00043\u0001\u0000"+ + "09\u0002\u0000++--\t\u0000!!##%&**<@^^``||~~\u0002\u0000*+<>\b\u0000!"+ + "!##%&?@^^``||~~\u0002\u0000AAaa\u0002\u0000LLll\u0002\u0000NNnn\u0002"+ + "\u0000YYyy\u0002\u0000SSss\u0002\u0000EEee\u0002\u0000ZZzz\u0002\u0000"+ + "DDdd\u0002\u0000RRrr\u0002\u0000CCcc\u0002\u0000MMmm\u0002\u0000TTtt\u0002"+ + "\u0000IIii\u0002\u0000BBbb\u0002\u0000OOoo\u0002\u0000HHhh\u0002\u0000"+ + "KKkk\u0002\u0000UUuu\u0002\u0000GGgg\u0002\u0000PPpp\u0002\u0000FFff\u0002"+ + "\u0000XXxx\u0002\u0000VVvv\u0002\u0000WWww\u0002\u0000QQqq\u0002\u0000"+ + "JJjj\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\u0000"+ + "01\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$$\u1af2\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\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"+ + "\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\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"+ + "\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\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\u0509\u0001\u0000"+ + "\u0000\u0000\u0000\u050b\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\u052b\u0001\u0000"+ + "\u0000\u0000\u0000\u052d\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\u0543\u0001\u0000\u0000\u0000\u0000\u0545\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\u0000\u0559\u0001\u0000\u0000\u0000\u0000\u055b\u0001\u0000"+ + "\u0000\u0000\u0001\u055d\u0001\u0000\u0000\u0000\u0001\u055f\u0001\u0000"+ + "\u0000\u0000\u0001\u0563\u0001\u0000\u0000\u0000\u0001\u0565\u0001\u0000"+ + "\u0000\u0000\u0002\u0569\u0001\u0000\u0000\u0000\u0002\u056b\u0001\u0000"+ + "\u0000\u0000\u0002\u056d\u0001\u0000\u0000\u0000\u0003\u056f\u0001\u0000"+ + "\u0000\u0000\u0003\u0571\u0001\u0000\u0000\u0000\u0003\u0573\u0001\u0000"+ + "\u0000\u0000\u0003\u0575\u0001\u0000\u0000\u0000\u0004\u0577\u0001\u0000"+ + "\u0000\u0000\u0004\u0579\u0001\u0000\u0000\u0000\u0005\u057b\u0001\u0000"+ + "\u0000\u0000\u0007\u057d\u0001\u0000\u0000\u0000\t\u057f\u0001\u0000\u0000"+ + "\u0000\u000b\u0581\u0001\u0000\u0000\u0000\r\u0583\u0001\u0000\u0000\u0000"+ + "\u000f\u0585\u0001\u0000\u0000\u0000\u0011\u0587\u0001\u0000\u0000\u0000"+ + "\u0013\u0589\u0001\u0000\u0000\u0000\u0015\u058b\u0001\u0000\u0000\u0000"+ + "\u0017\u058d\u0001\u0000\u0000\u0000\u0019\u058f\u0001\u0000\u0000\u0000"+ + "\u001b\u0591\u0001\u0000\u0000\u0000\u001d\u0593\u0001\u0000\u0000\u0000"+ + "\u001f\u0595\u0001\u0000\u0000\u0000!\u0597\u0001\u0000\u0000\u0000#\u0599"+ + "\u0001\u0000\u0000\u0000%\u059b\u0001\u0000\u0000\u0000\'\u059d\u0001"+ + "\u0000\u0000\u0000)\u05a0\u0001\u0000\u0000\u0000+\u05a3\u0001\u0000\u0000"+ + "\u0000-\u05a6\u0001\u0000\u0000\u0000/\u05a9\u0001\u0000\u0000\u00001"+ + "\u05ac\u0001\u0000\u0000\u00003\u05af\u0001\u0000\u0000\u00005\u05b2\u0001"+ + "\u0000\u0000\u00007\u05b5\u0001\u0000\u0000\u00009\u05b8\u0001\u0000\u0000"+ + "\u0000;\u05ba\u0001\u0000\u0000\u0000=\u05d4\u0001\u0000\u0000\u0000?"+ + "\u05df\u0001\u0000\u0000\u0000A\u05ef\u0001\u0000\u0000\u0000C\u05f1\u0001"+ + "\u0000\u0000\u0000E\u05f3\u0001\u0000\u0000\u0000G\u05f5\u0001\u0000\u0000"+ + "\u0000I\u05f9\u0001\u0000\u0000\u0000K\u0601\u0001\u0000\u0000\u0000M"+ + "\u0609\u0001\u0000\u0000\u0000O\u060d\u0001\u0000\u0000\u0000Q\u0611\u0001"+ + "\u0000\u0000\u0000S\u0617\u0001\u0000\u0000\u0000U\u061a\u0001\u0000\u0000"+ + "\u0000W\u061e\u0001\u0000\u0000\u0000Y\u0629\u0001\u0000\u0000\u0000["+ + "\u062e\u0001\u0000\u0000\u0000]\u0633\u0001\u0000\u0000\u0000_\u0638\u0001"+ + "\u0000\u0000\u0000a\u063e\u0001\u0000\u0000\u0000c\u0646\u0001\u0000\u0000"+ + "\u0000e\u064d\u0001\u0000\u0000\u0000g\u0658\u0001\u0000\u0000\u0000i"+ + "\u065f\u0001\u0000\u0000\u0000k\u066f\u0001\u0000\u0000\u0000m\u067c\u0001"+ + "\u0000\u0000\u0000o\u0689\u0001\u0000\u0000\u0000q\u0696\u0001\u0000\u0000"+ + "\u0000s\u06a8\u0001\u0000\u0000\u0000u\u06b5\u0001\u0000\u0000\u0000w"+ + "\u06bd\u0001\u0000\u0000\u0000y\u06c8\u0001\u0000\u0000\u0000{\u06cd\u0001"+ + "\u0000\u0000\u0000}\u06d6\u0001\u0000\u0000\u0000\u007f\u06d9\u0001\u0000"+ + "\u0000\u0000\u0081\u06de\u0001\u0000\u0000\u0000\u0083\u06e5\u0001\u0000"+ + "\u0000\u0000\u0085\u06eb\u0001\u0000\u0000\u0000\u0087\u06f1\u0001\u0000"+ + "\u0000\u0000\u0089\u06f5\u0001\u0000\u0000\u0000\u008b\u06fd\u0001\u0000"+ + "\u0000\u0000\u008d\u0702\u0001\u0000\u0000\u0000\u008f\u0708\u0001\u0000"+ + "\u0000\u0000\u0091\u070e\u0001\u0000\u0000\u0000\u0093\u0715\u0001\u0000"+ + "\u0000\u0000\u0095\u0718\u0001\u0000\u0000\u0000\u0097\u0722\u0001\u0000"+ + "\u0000\u0000\u0099\u072c\u0001\u0000\u0000\u0000\u009b\u0731\u0001\u0000"+ + "\u0000\u0000\u009d\u0739\u0001\u0000\u0000\u0000\u009f\u0741\u0001\u0000"+ + "\u0000\u0000\u00a1\u0747\u0001\u0000\u0000\u0000\u00a3\u0751\u0001\u0000"+ + "\u0000\u0000\u00a5\u0760\u0001\u0000\u0000\u0000\u00a7\u0764\u0001\u0000"+ + "\u0000\u0000\u00a9\u0769\u0001\u0000\u0000\u0000\u00ab\u0770\u0001\u0000"+ + "\u0000\u0000\u00ad\u0773\u0001\u0000\u0000\u0000\u00af\u0778\u0001\u0000"+ + "\u0000\u0000\u00b1\u077b\u0001\u0000\u0000\u0000\u00b3\u0781\u0001\u0000"+ + "\u0000\u0000\u00b5\u0789\u0001\u0000\u0000\u0000\u00b7\u0791\u0001\u0000"+ + "\u0000\u0000\u00b9\u079c\u0001\u0000\u0000\u0000\u00bb\u07a6\u0001\u0000"+ + "\u0000\u0000\u00bd\u07ad\u0001\u0000\u0000\u0000\u00bf\u07ba\u0001\u0000"+ + "\u0000\u0000\u00c1\u07bf\u0001\u0000\u0000\u0000\u00c3\u07c9\u0001\u0000"+ + "\u0000\u0000\u00c5\u07cf\u0001\u0000\u0000\u0000\u00c7\u07d4\u0001\u0000"+ + "\u0000\u0000\u00c9\u07d7\u0001\u0000\u0000\u0000\u00cb\u07dd\u0001\u0000"+ + "\u0000\u0000\u00cd\u07e5\u0001\u0000\u0000\u0000\u00cf\u07ec\u0001\u0000"+ + "\u0000\u0000\u00d1\u07f2\u0001\u0000\u0000\u0000\u00d3\u07fb\u0001\u0000"+ + "\u0000\u0000\u00d5\u0800\u0001\u0000\u0000\u0000\u00d7\u0806\u0001\u0000"+ + "\u0000\u0000\u00d9\u080d\u0001\u0000\u0000\u0000\u00db\u0812\u0001\u0000"+ + "\u0000\u0000\u00dd\u0818\u0001\u0000\u0000\u0000\u00df\u0821\u0001\u0000"+ + "\u0000\u0000\u00e1\u0826\u0001\u0000\u0000\u0000\u00e3\u082c\u0001\u0000"+ + "\u0000\u0000\u00e5\u0833\u0001\u0000\u0000\u0000\u00e7\u0838\u0001\u0000"+ + "\u0000\u0000\u00e9\u0846\u0001\u0000\u0000\u0000\u00eb\u084d\u0001\u0000"+ + "\u0000\u0000\u00ed\u0857\u0001\u0000\u0000\u0000\u00ef\u0864\u0001\u0000"+ + "\u0000\u0000\u00f1\u086a\u0001\u0000\u0000\u0000\u00f3\u0879\u0001\u0000"+ + "\u0000\u0000\u00f5\u0880\u0001\u0000\u0000\u0000\u00f7\u0885\u0001\u0000"+ + "\u0000\u0000\u00f9\u088b\u0001\u0000\u0000\u0000\u00fb\u0891\u0001\u0000"+ + "\u0000\u0000\u00fd\u0894\u0001\u0000\u0000\u0000\u00ff\u089b\u0001\u0000"+ + "\u0000\u0000\u0101\u08a0\u0001\u0000\u0000\u0000\u0103\u08a5\u0001\u0000"+ + "\u0000\u0000\u0105\u08aa\u0001\u0000\u0000\u0000\u0107\u08b2\u0001\u0000"+ + "\u0000\u0000\u0109\u08ba\u0001\u0000\u0000\u0000\u010b\u08c0\u0001\u0000"+ + "\u0000\u0000\u010d\u08c5\u0001\u0000\u0000\u0000\u010f\u08ce\u0001\u0000"+ + "\u0000\u0000\u0111\u08d4\u0001\u0000\u0000\u0000\u0113\u08dc\u0001\u0000"+ + "\u0000\u0000\u0115\u08e4\u0001\u0000\u0000\u0000\u0117\u08ea\u0001\u0000"+ + "\u0000\u0000\u0119\u08f3\u0001\u0000\u0000\u0000\u011b\u08fa\u0001\u0000"+ + "\u0000\u0000\u011d\u0901\u0001\u0000\u0000\u0000\u011f\u0905\u0001\u0000"+ + "\u0000\u0000\u0121\u090b\u0001\u0000\u0000\u0000\u0123\u0911\u0001\u0000"+ + "\u0000\u0000\u0125\u091b\u0001\u0000\u0000\u0000\u0127\u0920\u0001\u0000"+ + "\u0000\u0000\u0129\u0926\u0001\u0000\u0000\u0000\u012b\u092d\u0001\u0000"+ + "\u0000\u0000\u012d\u0937\u0001\u0000\u0000\u0000\u012f\u0942\u0001\u0000"+ + "\u0000\u0000\u0131\u0945\u0001\u0000\u0000\u0000\u0133\u094f\u0001\u0000"+ + "\u0000\u0000\u0135\u0958\u0001\u0000\u0000\u0000\u0137\u095f\u0001\u0000"+ + "\u0000\u0000\u0139\u0965\u0001\u0000\u0000\u0000\u013b\u0968\u0001\u0000"+ + "\u0000\u0000\u013d\u096e\u0001\u0000\u0000\u0000\u013f\u0975\u0001\u0000"+ + "\u0000\u0000\u0141\u097d\u0001\u0000\u0000\u0000\u0143\u0986\u0001\u0000"+ + "\u0000\u0000\u0145\u098e\u0001\u0000\u0000\u0000\u0147\u0994\u0001\u0000"+ + "\u0000\u0000\u0149\u09a4\u0001\u0000\u0000\u0000\u014b\u09af\u0001\u0000"+ + "\u0000\u0000\u014d\u09b5\u0001\u0000\u0000\u0000\u014f\u09bb\u0001\u0000"+ + "\u0000\u0000\u0151\u09c3\u0001\u0000\u0000\u0000\u0153\u09cb\u0001\u0000"+ + "\u0000\u0000\u0155\u09d4\u0001\u0000\u0000\u0000\u0157\u09db\u0001\u0000"+ + "\u0000\u0000\u0159\u09e5\u0001\u0000\u0000\u0000\u015b\u09f3\u0001\u0000"+ + "\u0000\u0000\u015d\u09fe\u0001\u0000\u0000\u0000\u015f\u0a0a\u0001\u0000"+ + "\u0000\u0000\u0161\u0a12\u0001\u0000\u0000\u0000\u0163\u0a1b\u0001\u0000"+ + "\u0000\u0000\u0165\u0a26\u0001\u0000\u0000\u0000\u0167\u0a2b\u0001\u0000"+ + "\u0000\u0000\u0169\u0a30\u0001\u0000\u0000\u0000\u016b\u0a34\u0001\u0000"+ + "\u0000\u0000\u016d\u0a3b\u0001\u0000\u0000\u0000\u016f\u0a41\u0001\u0000"+ + "\u0000\u0000\u0171\u0a46\u0001\u0000\u0000\u0000\u0173\u0a4f\u0001\u0000"+ + "\u0000\u0000\u0175\u0a53\u0001\u0000\u0000\u0000\u0177\u0a5e\u0001\u0000"+ + "\u0000\u0000\u0179\u0a66\u0001\u0000\u0000\u0000\u017b\u0a6f\u0001\u0000"+ + "\u0000\u0000\u017d\u0a78\u0001\u0000\u0000\u0000\u017f\u0a80\u0001\u0000"+ + "\u0000\u0000\u0181\u0a87\u0001\u0000\u0000\u0000\u0183\u0a91\u0001\u0000"+ + "\u0000\u0000\u0185\u0a9c\u0001\u0000\u0000\u0000\u0187\u0aa7\u0001\u0000"+ + "\u0000\u0000\u0189\u0aaf\u0001\u0000\u0000\u0000\u018b\u0ab7\u0001\u0000"+ + "\u0000\u0000\u018d\u0ac0\u0001\u0000\u0000\u0000\u018f\u0ac7\u0001\u0000"+ + "\u0000\u0000\u0191\u0ace\u0001\u0000\u0000\u0000\u0193\u0ad3\u0001\u0000"+ + "\u0000\u0000\u0195\u0ad8\u0001\u0000\u0000\u0000\u0197\u0adf\u0001\u0000"+ + "\u0000\u0000\u0199\u0ae8\u0001\u0000\u0000\u0000\u019b\u0af2\u0001\u0000"+ + "\u0000\u0000\u019d\u0af7\u0001\u0000\u0000\u0000\u019f\u0afe\u0001\u0000"+ + "\u0000\u0000\u01a1\u0b04\u0001\u0000\u0000\u0000\u01a3\u0b0c\u0001\u0000"+ + "\u0000\u0000\u01a5\u0b16\u0001\u0000\u0000\u0000\u01a7\u0b20\u0001\u0000"+ + "\u0000\u0000\u01a9\u0b28\u0001\u0000\u0000\u0000\u01ab\u0b30\u0001\u0000"+ + "\u0000\u0000\u01ad\u0b3a\u0001\u0000\u0000\u0000\u01af\u0b43\u0001\u0000"+ + "\u0000\u0000\u01b1\u0b4a\u0001\u0000\u0000\u0000\u01b3\u0b50\u0001\u0000"+ + "\u0000\u0000\u01b5\u0b5a\u0001\u0000\u0000\u0000\u01b7\u0b60\u0001\u0000"+ + "\u0000\u0000\u01b9\u0b68\u0001\u0000\u0000\u0000\u01bb\u0b71\u0001\u0000"+ + "\u0000\u0000\u01bd\u0b7b\u0001\u0000\u0000\u0000\u01bf\u0b82\u0001\u0000"+ + "\u0000\u0000\u01c1\u0b8a\u0001\u0000\u0000\u0000\u01c3\u0b92\u0001\u0000"+ + "\u0000\u0000\u01c5\u0b99\u0001\u0000\u0000\u0000\u01c7\u0b9e\u0001\u0000"+ + "\u0000\u0000\u01c9\u0ba3\u0001\u0000\u0000\u0000\u01cb\u0bac\u0001\u0000"+ + "\u0000\u0000\u01cd\u0baf\u0001\u0000\u0000\u0000\u01cf\u0bb9\u0001\u0000"+ + "\u0000\u0000\u01d1\u0bc3\u0001\u0000\u0000\u0000\u01d3\u0bcc\u0001\u0000"+ + "\u0000\u0000\u01d5\u0bd6\u0001\u0000\u0000\u0000\u01d7\u0be0\u0001\u0000"+ + "\u0000\u0000\u01d9\u0be6\u0001\u0000\u0000\u0000\u01db\u0bee\u0001\u0000"+ + "\u0000\u0000\u01dd\u0bf6\u0001\u0000\u0000\u0000\u01df\u0bff\u0001\u0000"+ + "\u0000\u0000\u01e1\u0c06\u0001\u0000\u0000\u0000\u01e3\u0c12\u0001\u0000"+ + "\u0000\u0000\u01e5\u0c19\u0001\u0000\u0000\u0000\u01e7\u0c21\u0001\u0000"+ + "\u0000\u0000\u01e9\u0c29\u0001\u0000\u0000\u0000\u01eb\u0c33\u0001\u0000"+ + "\u0000\u0000\u01ed\u0c37\u0001\u0000\u0000\u0000\u01ef\u0c3d\u0001\u0000"+ + "\u0000\u0000\u01f1\u0c46\u0001\u0000\u0000\u0000\u01f3\u0c4c\u0001\u0000"+ + "\u0000\u0000\u01f5\u0c51\u0001\u0000\u0000\u0000\u01f7\u0c5b\u0001\u0000"+ + "\u0000\u0000\u01f9\u0c61\u0001\u0000\u0000\u0000\u01fb\u0c68\u0001\u0000"+ + "\u0000\u0000\u01fd\u0c6d\u0001\u0000\u0000\u0000\u01ff\u0c73\u0001\u0000"+ + "\u0000\u0000\u0201\u0c7c\u0001\u0000\u0000\u0000\u0203\u0c81\u0001\u0000"+ + "\u0000\u0000\u0205\u0c89\u0001\u0000\u0000\u0000\u0207\u0c8f\u0001\u0000"+ + "\u0000\u0000\u0209\u0c97\u0001\u0000\u0000\u0000\u020b\u0ca4\u0001\u0000"+ + "\u0000\u0000\u020d\u0cad\u0001\u0000\u0000\u0000\u020f\u0cb3\u0001\u0000"+ + "\u0000\u0000\u0211\u0cba\u0001\u0000\u0000\u0000\u0213\u0cc3\u0001\u0000"+ + "\u0000\u0000\u0215\u0cc8\u0001\u0000\u0000\u0000\u0217\u0cce\u0001\u0000"+ + "\u0000\u0000\u0219\u0cd3\u0001\u0000\u0000\u0000\u021b\u0cd8\u0001\u0000"+ + "\u0000\u0000\u021d\u0cde\u0001\u0000\u0000\u0000\u021f\u0ce3\u0001\u0000"+ + "\u0000\u0000\u0221\u0ce6\u0001\u0000\u0000\u0000\u0223\u0cee\u0001\u0000"+ + "\u0000\u0000\u0225\u0cf5\u0001\u0000\u0000\u0000\u0227\u0cfc\u0001\u0000"+ + "\u0000\u0000\u0229\u0d02\u0001\u0000\u0000\u0000\u022b\u0d09\u0001\u0000"+ + "\u0000\u0000\u022d\u0d0c\u0001\u0000\u0000\u0000\u022f\u0d10\u0001\u0000"+ + "\u0000\u0000\u0231\u0d15\u0001\u0000\u0000\u0000\u0233\u0d1e\u0001\u0000"+ + "\u0000\u0000\u0235\u0d25\u0001\u0000\u0000\u0000\u0237\u0d2d\u0001\u0000"+ + "\u0000\u0000\u0239\u0d33\u0001\u0000\u0000\u0000\u023b\u0d39\u0001\u0000"+ + "\u0000\u0000\u023d\u0d40\u0001\u0000\u0000\u0000\u023f\u0d48\u0001\u0000"+ + "\u0000\u0000\u0241\u0d52\u0001\u0000\u0000\u0000\u0243\u0d5a\u0001\u0000"+ + "\u0000\u0000\u0245\u0d63\u0001\u0000\u0000\u0000\u0247\u0d69\u0001\u0000"+ + "\u0000\u0000\u0249\u0d73\u0001\u0000\u0000\u0000\u024b\u0d7b\u0001\u0000"+ + "\u0000\u0000\u024d\u0d84\u0001\u0000\u0000\u0000\u024f\u0d8d\u0001\u0000"+ + "\u0000\u0000\u0251\u0d93\u0001\u0000\u0000\u0000\u0253\u0d9e\u0001\u0000"+ + "\u0000\u0000\u0255\u0da9\u0001\u0000\u0000\u0000\u0257\u0db3\u0001\u0000"+ + "\u0000\u0000\u0259\u0dbb\u0001\u0000\u0000\u0000\u025b\u0dc1\u0001\u0000"+ + "\u0000\u0000\u025d\u0dc7\u0001\u0000\u0000\u0000\u025f\u0dcc\u0001\u0000"+ + "\u0000\u0000\u0261\u0dd5\u0001\u0000\u0000\u0000\u0263\u0ddd\u0001\u0000"+ + "\u0000\u0000\u0265\u0de7\u0001\u0000\u0000\u0000\u0267\u0deb\u0001\u0000"+ + "\u0000\u0000\u0269\u0df3\u0001\u0000\u0000\u0000\u026b\u0dfb\u0001\u0000"+ + "\u0000\u0000\u026d\u0e04\u0001\u0000\u0000\u0000\u026f\u0e0c\u0001\u0000"+ + "\u0000\u0000\u0271\u0e13\u0001\u0000\u0000\u0000\u0273\u0e1e\u0001\u0000"+ + "\u0000\u0000\u0275\u0e26\u0001\u0000\u0000\u0000\u0277\u0e2e\u0001\u0000"+ + "\u0000\u0000\u0279\u0e34\u0001\u0000\u0000\u0000\u027b\u0e3c\u0001\u0000"+ + "\u0000\u0000\u027d\u0e45\u0001\u0000\u0000\u0000\u027f\u0e4d\u0001\u0000"+ + "\u0000\u0000\u0281\u0e54\u0001\u0000\u0000\u0000\u0283\u0e59\u0001\u0000"+ + "\u0000\u0000\u0285\u0e62\u0001\u0000\u0000\u0000\u0287\u0e67\u0001\u0000"+ + "\u0000\u0000\u0289\u0e6c\u0001\u0000\u0000\u0000\u028b\u0e76\u0001\u0000"+ + "\u0000\u0000\u028d\u0e7d\u0001\u0000\u0000\u0000\u028f\u0e84\u0001\u0000"+ + "\u0000\u0000\u0291\u0e8b\u0001\u0000\u0000\u0000\u0293\u0e92\u0001\u0000"+ + "\u0000\u0000\u0295\u0e9b\u0001\u0000\u0000\u0000\u0297\u0ea4\u0001\u0000"+ + "\u0000\u0000\u0299\u0eae\u0001\u0000\u0000\u0000\u029b\u0ebb\u0001\u0000"+ + "\u0000\u0000\u029d\u0ec2\u0001\u0000\u0000\u0000\u029f\u0eca\u0001\u0000"+ + "\u0000\u0000\u02a1\u0ece\u0001\u0000\u0000\u0000\u02a3\u0ed4\u0001\u0000"+ + "\u0000\u0000\u02a5\u0ed9\u0001\u0000\u0000\u0000\u02a7\u0ee0\u0001\u0000"+ + "\u0000\u0000\u02a9\u0ee9\u0001\u0000\u0000\u0000\u02ab\u0ef0\u0001\u0000"+ + "\u0000\u0000\u02ad\u0efb\u0001\u0000\u0000\u0000\u02af\u0f01\u0001\u0000"+ + "\u0000\u0000\u02b1\u0f0b\u0001\u0000\u0000\u0000\u02b3\u0f16\u0001\u0000"+ + "\u0000\u0000\u02b5\u0f1c\u0001\u0000\u0000\u0000\u02b7\u0f23\u0001\u0000"+ + "\u0000\u0000\u02b9\u0f2b\u0001\u0000\u0000\u0000\u02bb\u0f32\u0001\u0000"+ + "\u0000\u0000\u02bd\u0f38\u0001\u0000\u0000\u0000\u02bf\u0f3e\u0001\u0000"+ + "\u0000\u0000\u02c1\u0f45\u0001\u0000\u0000\u0000\u02c3\u0f4c\u0001\u0000"+ + "\u0000\u0000\u02c5\u0f57\u0001\u0000\u0000\u0000\u02c7\u0f5c\u0001\u0000"+ + "\u0000\u0000\u02c9\u0f65\u0001\u0000\u0000\u0000\u02cb\u0f6f\u0001\u0000"+ + "\u0000\u0000\u02cd\u0f74\u0001\u0000\u0000\u0000\u02cf\u0f80\u0001\u0000"+ + "\u0000\u0000\u02d1\u0f88\u0001\u0000\u0000\u0000\u02d3\u0f91\u0001\u0000"+ + "\u0000\u0000\u02d5\u0f99\u0001\u0000\u0000\u0000\u02d7\u0f9e\u0001\u0000"+ + "\u0000\u0000\u02d9\u0fa4\u0001\u0000\u0000\u0000\u02db\u0fae\u0001\u0000"+ + "\u0000\u0000\u02dd\u0fba\u0001\u0000"; + private static final String _serializedATNSegment1 = + "\u0000\u0000\u02df\u0fc6\u0001\u0000\u0000\u0000\u02e1\u0fce\u0001\u0000"+ + "\u0000\u0000\u02e3\u0fd7\u0001\u0000\u0000\u0000\u02e5\u0fe0\u0001\u0000"+ + "\u0000\u0000\u02e7\u0fe6\u0001\u0000\u0000\u0000\u02e9\u0fed\u0001\u0000"+ + "\u0000\u0000\u02eb\u0ff4\u0001\u0000\u0000\u0000\u02ed\u0ffa\u0001\u0000"+ + "\u0000\u0000\u02ef\u1003\u0001\u0000\u0000\u0000\u02f1\u100d\u0001\u0000"+ + "\u0000\u0000\u02f3\u1015\u0001\u0000\u0000\u0000\u02f5\u101d\u0001\u0000"+ + "\u0000\u0000\u02f7\u1022\u0001\u0000\u0000\u0000\u02f9\u102b\u0001\u0000"+ + "\u0000\u0000\u02fb\u1036\u0001\u0000\u0000\u0000\u02fd\u103e\u0001\u0000"+ + "\u0000\u0000\u02ff\u1043\u0001\u0000\u0000\u0000\u0301\u104b\u0001\u0000"+ + "\u0000\u0000\u0303\u1051\u0001\u0000\u0000\u0000\u0305\u1055\u0001\u0000"+ + "\u0000\u0000\u0307\u105a\u0001\u0000\u0000\u0000\u0309\u105e\u0001\u0000"+ + "\u0000\u0000\u030b\u1063\u0001\u0000\u0000\u0000\u030d\u106b\u0001\u0000"+ + "\u0000\u0000\u030f\u1072\u0001\u0000\u0000\u0000\u0311\u1076\u0001\u0000"+ + "\u0000\u0000\u0313\u107e\u0001\u0000\u0000\u0000\u0315\u1083\u0001\u0000"+ + "\u0000\u0000\u0317\u108d\u0001\u0000\u0000\u0000\u0319\u1096\u0001\u0000"+ + "\u0000\u0000\u031b\u109a\u0001\u0000\u0000\u0000\u031d\u10a2\u0001\u0000"+ + "\u0000\u0000\u031f\u10a9\u0001\u0000\u0000\u0000\u0321\u10b1\u0001\u0000"+ + "\u0000\u0000\u0323\u10b7\u0001\u0000\u0000\u0000\u0325\u10c0\u0001\u0000"+ + "\u0000\u0000\u0327\u10c6\u0001\u0000\u0000\u0000\u0329\u10ca\u0001\u0000"+ + "\u0000\u0000\u032b\u10d2\u0001\u0000\u0000\u0000\u032d\u10db\u0001\u0000"+ + "\u0000\u0000\u032f\u10e1\u0001\u0000\u0000\u0000\u0331\u10ea\u0001\u0000"+ + "\u0000\u0000\u0333\u10f0\u0001\u0000\u0000\u0000\u0335\u10f5\u0001\u0000"+ + "\u0000\u0000\u0337\u10fc\u0001\u0000\u0000\u0000\u0339\u1104\u0001\u0000"+ + "\u0000\u0000\u033b\u110c\u0001\u0000\u0000\u0000\u033d\u1115\u0001\u0000"+ + "\u0000\u0000\u033f\u111f\u0001\u0000\u0000\u0000\u0341\u1124\u0001\u0000"+ + "\u0000\u0000\u0343\u1128\u0001\u0000\u0000\u0000\u0345\u112e\u0001\u0000"+ + "\u0000\u0000\u0347\u1137\u0001\u0000\u0000\u0000\u0349\u1141\u0001\u0000"+ + "\u0000\u0000\u034b\u1146\u0001\u0000\u0000\u0000\u034d\u1150\u0001\u0000"+ + "\u0000\u0000\u034f\u1156\u0001\u0000\u0000\u0000\u0351\u115b\u0001\u0000"+ + "\u0000\u0000\u0353\u1162\u0001\u0000\u0000\u0000\u0355\u116a\u0001\u0000"+ + "\u0000\u0000\u0357\u1178\u0001\u0000\u0000\u0000\u0359\u1183\u0001\u0000"+ + "\u0000\u0000\u035b\u118a\u0001\u0000\u0000\u0000\u035d\u119d\u0001\u0000"+ + "\u0000\u0000\u035f\u11b9\u0001\u0000\u0000\u0000\u0361\u11d4\u0001\u0000"+ + "\u0000\u0000\u0363\u11da\u0001\u0000\u0000\u0000\u0365\u11e7\u0001\u0000"+ + "\u0000\u0000\u0367\u11f1\u0001\u0000\u0000\u0000\u0369\u11fc\u0001\u0000"+ + "\u0000\u0000\u036b\u1206\u0001\u0000\u0000\u0000\u036d\u1210\u0001\u0000"+ + "\u0000\u0000\u036f\u1219\u0001\u0000\u0000\u0000\u0371\u121f\u0001\u0000"+ + "\u0000\u0000\u0373\u1227\u0001\u0000\u0000\u0000\u0375\u1234\u0001\u0000"+ + "\u0000\u0000\u0377\u1239\u0001\u0000\u0000\u0000\u0379\u1241\u0001\u0000"+ + "\u0000\u0000\u037b\u1248\u0001\u0000\u0000\u0000\u037d\u124f\u0001\u0000"+ + "\u0000\u0000\u037f\u125a\u0001\u0000\u0000\u0000\u0381\u1264\u0001\u0000"+ + "\u0000\u0000\u0383\u126b\u0001\u0000\u0000\u0000\u0385\u1272\u0001\u0000"+ + "\u0000\u0000\u0387\u127a\u0001\u0000\u0000\u0000\u0389\u1282\u0001\u0000"+ + "\u0000\u0000\u038b\u128c\u0001\u0000\u0000\u0000\u038d\u1293\u0001\u0000"+ + "\u0000\u0000\u038f\u129a\u0001\u0000\u0000\u0000\u0391\u12a1\u0001\u0000"+ + "\u0000\u0000\u0393\u12ad\u0001\u0000\u0000\u0000\u0395\u12b1\u0001\u0000"+ + "\u0000\u0000\u0397\u12b5\u0001\u0000\u0000\u0000\u0399\u12bb\u0001\u0000"+ + "\u0000\u0000\u039b\u12c8\u0001\u0000\u0000\u0000\u039d\u12d4\u0001\u0000"+ + "\u0000\u0000\u039f\u12d8\u0001\u0000\u0000\u0000\u03a1\u12dc\u0001\u0000"+ + "\u0000\u0000\u03a3\u12e5\u0001\u0000\u0000\u0000\u03a5\u12ed\u0001\u0000"+ + "\u0000\u0000\u03a7\u12f8\u0001\u0000\u0000\u0000\u03a9\u12fe\u0001\u0000"+ + "\u0000\u0000\u03ab\u1306\u0001\u0000\u0000\u0000\u03ad\u130f\u0001\u0000"+ + "\u0000\u0000\u03af\u1313\u0001\u0000\u0000\u0000\u03b1\u131b\u0001\u0000"+ + "\u0000\u0000\u03b3\u1326\u0001\u0000\u0000\u0000\u03b5\u132f\u0001\u0000"+ + "\u0000\u0000\u03b7\u1334\u0001\u0000\u0000\u0000\u03b9\u133b\u0001\u0000"+ + "\u0000\u0000\u03bb\u1340\u0001\u0000\u0000\u0000\u03bd\u1347\u0001\u0000"+ + "\u0000\u0000\u03bf\u134c\u0001\u0000\u0000\u0000\u03c1\u1355\u0001\u0000"+ + "\u0000\u0000\u03c3\u135a\u0001\u0000\u0000\u0000\u03c5\u1366\u0001\u0000"+ + "\u0000\u0000\u03c7\u1371\u0001\u0000\u0000\u0000\u03c9\u137a\u0001\u0000"+ + "\u0000\u0000\u03cb\u1382\u0001\u0000\u0000\u0000\u03cd\u1390\u0001\u0000"+ + "\u0000\u0000\u03cf\u1398\u0001\u0000\u0000\u0000\u03d1\u13a3\u0001\u0000"+ + "\u0000\u0000\u03d3\u13aa\u0001\u0000\u0000\u0000\u03d5\u13b1\u0001\u0000"+ + "\u0000\u0000\u03d7\u13b8\u0001\u0000\u0000\u0000\u03d9\u13bf\u0001\u0000"+ + "\u0000\u0000\u03db\u13c3\u0001\u0000\u0000\u0000\u03dd\u13c7\u0001\u0000"+ + "\u0000\u0000\u03df\u13cc\u0001\u0000\u0000\u0000\u03e1\u13d1\u0001\u0000"+ + "\u0000\u0000\u03e3\u13d9\u0001\u0000\u0000\u0000\u03e5\u13df\u0001\u0000"+ + "\u0000\u0000\u03e7\u13e9\u0001\u0000\u0000\u0000\u03e9\u13ee\u0001\u0000"+ + "\u0000\u0000\u03eb\u1402\u0001\u0000\u0000\u0000\u03ed\u1414\u0001\u0000"+ + "\u0000\u0000\u03ef\u141a\u0001\u0000\u0000\u0000\u03f1\u1427\u0001\u0000"+ + "\u0000\u0000\u03f3\u1432\u0001\u0000\u0000\u0000\u03f5\u1438\u0001\u0000"+ + "\u0000\u0000\u03f7\u1441\u0001\u0000\u0000\u0000\u03f9\u1449\u0001\u0000"+ + "\u0000\u0000\u03fb\u144d\u0001\u0000\u0000\u0000\u03fd\u1459\u0001\u0000"+ + "\u0000\u0000\u03ff\u1461\u0001\u0000\u0000\u0000\u0401\u1467\u0001\u0000"+ + "\u0000\u0000\u0403\u146d\u0001\u0000\u0000\u0000\u0405\u1475\u0001\u0000"+ + "\u0000\u0000\u0407\u147d\u0001\u0000\u0000\u0000\u0409\u1483\u0001\u0000"+ + "\u0000\u0000\u040b\u1488\u0001\u0000\u0000\u0000\u040d\u148f\u0001\u0000"+ + "\u0000\u0000\u040f\u1495\u0001\u0000\u0000\u0000\u0411\u149b\u0001\u0000"+ + "\u0000\u0000\u0413\u14a4\u0001\u0000\u0000\u0000\u0415\u14aa\u0001\u0000"+ + "\u0000\u0000\u0417\u14ae\u0001\u0000\u0000\u0000\u0419\u14b3\u0001\u0000"+ + "\u0000\u0000\u041b\u14ba\u0001\u0000\u0000\u0000\u041d\u14c2\u0001\u0000"+ + "\u0000\u0000\u041f\u14cc\u0001\u0000\u0000\u0000\u0421\u14d3\u0001\u0000"+ + "\u0000\u0000\u0423\u14d8\u0001\u0000\u0000\u0000\u0425\u14dd\u0001\u0000"+ + "\u0000\u0000\u0427\u14e1\u0001\u0000\u0000\u0000\u0429\u14e6\u0001\u0000"+ + "\u0000\u0000\u042b\u14eb\u0001\u0000\u0000\u0000\u042d\u14f3\u0001\u0000"+ + "\u0000\u0000\u042f\u14fb\u0001\u0000\u0000\u0000\u0431\u14ff\u0001\u0000"+ + "\u0000\u0000\u0433\u1503\u0001\u0000\u0000\u0000\u0435\u150d\u0001\u0000"+ + "\u0000\u0000\u0437\u1513\u0001\u0000\u0000\u0000\u0439\u1517\u0001\u0000"+ + "\u0000\u0000\u043b\u151b\u0001\u0000\u0000\u0000\u043d\u151e\u0001\u0000"+ + "\u0000\u0000\u043f\u1524\u0001\u0000\u0000\u0000\u0441\u152e\u0001\u0000"+ + "\u0000\u0000\u0443\u1532\u0001\u0000\u0000\u0000\u0445\u1535\u0001\u0000"+ + "\u0000\u0000\u0447\u153b\u0001\u0000\u0000\u0000\u0449\u1543\u0001\u0000"+ + "\u0000\u0000\u044b\u1549\u0001\u0000\u0000\u0000\u044d\u154f\u0001\u0000"+ + "\u0000\u0000\u044f\u1554\u0001\u0000\u0000\u0000\u0451\u1559\u0001\u0000"+ + "\u0000\u0000\u0453\u1564\u0001\u0000\u0000\u0000\u0455\u156a\u0001\u0000"+ + "\u0000\u0000\u0457\u1577\u0001\u0000\u0000\u0000\u0459\u157e\u0001\u0000"+ + "\u0000\u0000\u045b\u1586\u0001\u0000\u0000\u0000\u045d\u158b\u0001\u0000"+ + "\u0000\u0000\u045f\u1591\u0001\u0000\u0000\u0000\u0461\u1596\u0001\u0000"+ + "\u0000\u0000\u0463\u159c\u0001\u0000\u0000\u0000\u0465\u15a1\u0001\u0000"+ + "\u0000\u0000\u0467\u15a7\u0001\u0000\u0000\u0000\u0469\u15ad\u0001\u0000"+ + "\u0000\u0000\u046b\u15b4\u0001\u0000\u0000\u0000\u046d\u15b8\u0001\u0000"+ + "\u0000\u0000\u046f\u15bd\u0001\u0000\u0000\u0000\u0471\u15c1\u0001\u0000"+ + "\u0000\u0000\u0473\u15c6\u0001\u0000\u0000\u0000\u0475\u15ca\u0001\u0000"+ + "\u0000\u0000\u0477\u15cf\u0001\u0000\u0000\u0000\u0479\u15d3\u0001\u0000"+ + "\u0000\u0000\u047b\u15d8\u0001\u0000\u0000\u0000\u047d\u15dd\u0001\u0000"+ + "\u0000\u0000\u047f\u15e2\u0001\u0000\u0000\u0000\u0481\u15e7\u0001\u0000"+ + "\u0000\u0000\u0483\u15ed\u0001\u0000\u0000\u0000\u0485\u15f3\u0001\u0000"+ + "\u0000\u0000\u0487\u15f9\u0001\u0000\u0000\u0000\u0489\u1604\u0001\u0000"+ + "\u0000\u0000\u048b\u1610\u0001\u0000\u0000\u0000\u048d\u1621\u0001\u0000"+ + "\u0000\u0000\u048f\u1627\u0001\u0000\u0000\u0000\u0491\u1634\u0001\u0000"+ + "\u0000\u0000\u0493\u163a\u0001\u0000\u0000\u0000\u0495\u1640\u0001\u0000"+ + "\u0000\u0000\u0497\u1646\u0001\u0000\u0000\u0000\u0499\u164a\u0001\u0000"+ + "\u0000\u0000\u049b\u1651\u0001\u0000\u0000\u0000\u049d\u165b\u0001\u0000"+ + "\u0000\u0000\u049f\u1662\u0001\u0000\u0000\u0000\u04a1\u166a\u0001\u0000"+ + "\u0000\u0000\u04a3\u1671\u0001\u0000\u0000\u0000\u04a5\u1676\u0001\u0000"+ + "\u0000\u0000\u04a7\u167c\u0001\u0000\u0000\u0000\u04a9\u1680\u0001\u0000"+ + "\u0000\u0000\u04ab\u168c\u0001\u0000\u0000\u0000\u04ad\u169f\u0001\u0000"+ + "\u0000\u0000\u04af\u16ab\u0001\u0000\u0000\u0000\u04b1\u16b9\u0001\u0000"+ + "\u0000\u0000\u04b3\u16c8\u0001\u0000\u0000\u0000\u04b5\u16d5\u0001\u0000"+ + "\u0000\u0000\u04b7\u16e2\u0001\u0000\u0000\u0000\u04b9\u16ee\u0001\u0000"+ + "\u0000\u0000\u04bb\u16fb\u0001\u0000\u0000\u0000\u04bd\u170a\u0001\u0000"+ + "\u0000\u0000\u04bf\u1719\u0001\u0000\u0000\u0000\u04c1\u172f\u0001\u0000"+ + "\u0000\u0000\u04c3\u1745\u0001\u0000\u0000\u0000\u04c5\u1753\u0001\u0000"+ + "\u0000\u0000\u04c7\u175a\u0001\u0000\u0000\u0000\u04c9\u175f\u0001\u0000"+ + "\u0000\u0000\u04cb\u1765\u0001\u0000\u0000\u0000\u04cd\u1770\u0001\u0000"+ + "\u0000\u0000\u04cf\u177c\u0001\u0000\u0000\u0000\u04d1\u178c\u0001\u0000"+ + "\u0000\u0000\u04d3\u179c\u0001\u0000\u0000\u0000\u04d5\u17a3\u0001\u0000"+ + "\u0000\u0000\u04d7\u17aa\u0001\u0000\u0000\u0000\u04d9\u17b3\u0001\u0000"+ + "\u0000\u0000\u04db\u17ba\u0001\u0000\u0000\u0000\u04dd\u17c4\u0001\u0000"+ + "\u0000\u0000\u04df\u17cb\u0001\u0000\u0000\u0000\u04e1\u17cf\u0001\u0000"+ + "\u0000\u0000\u04e3\u17df\u0001\u0000\u0000\u0000\u04e5\u17e8\u0001\u0000"+ + "\u0000\u0000\u04e7\u17f2\u0001\u0000\u0000\u0000\u04e9\u17fd\u0001\u0000"+ + "\u0000\u0000\u04eb\u1806\u0001\u0000\u0000\u0000\u04ed\u1813\u0001\u0000"+ + "\u0000\u0000\u04ef\u1821\u0001\u0000\u0000\u0000\u04f1\u1832\u0001\u0000"+ + "\u0000\u0000\u04f3\u183c\u0001\u0000\u0000\u0000\u04f5\u184a\u0001\u0000"+ + "\u0000\u0000\u04f7\u1854\u0001\u0000\u0000\u0000\u04f9\u1863\u0001\u0000"+ + "\u0000\u0000\u04fb\u1874\u0001\u0000\u0000\u0000\u04fd\u1878\u0001\u0000"+ + "\u0000\u0000\u04ff\u188c\u0001\u0000\u0000\u0000\u0501\u1896\u0001\u0000"+ + "\u0000\u0000\u0503\u18ac\u0001\u0000\u0000\u0000\u0505\u18b9\u0001\u0000"+ + "\u0000\u0000\u0507\u18c1\u0001\u0000\u0000\u0000\u0509\u18c9\u0001\u0000"+ + "\u0000\u0000\u050b\u18d3\u0001\u0000\u0000\u0000\u050d\u18e0\u0001\u0000"+ + "\u0000\u0000\u050f\u18e4\u0001\u0000\u0000\u0000\u0511\u18e8\u0001\u0000"+ + "\u0000\u0000\u0513\u18ea\u0001\u0000\u0000\u0000\u0515\u18ed\u0001\u0000"+ + "\u0000\u0000\u0517\u18f6\u0001\u0000\u0000\u0000\u0519\u18f9\u0001\u0000"+ + "\u0000\u0000\u051b\u1902\u0001\u0000\u0000\u0000\u051d\u1906\u0001\u0000"+ + "\u0000\u0000\u051f\u190a\u0001\u0000\u0000\u0000\u0521\u190e\u0001\u0000"+ + "\u0000\u0000\u0523\u1912\u0001\u0000\u0000\u0000\u0525\u1915\u0001\u0000"+ + "\u0000\u0000\u0527\u191e\u0001\u0000\u0000\u0000\u0529\u1924\u0001\u0000"+ + "\u0000\u0000\u052b\u1927\u0001\u0000\u0000\u0000\u052d\u192b\u0001\u0000"+ + "\u0000\u0000\u052f\u1934\u0001\u0000\u0000\u0000\u0531\u193b\u0001\u0000"+ + "\u0000\u0000\u0533\u193e\u0001\u0000\u0000\u0000\u0535\u1946\u0001\u0000"+ + "\u0000\u0000\u0537\u1949\u0001\u0000\u0000\u0000\u0539\u194c\u0001\u0000"+ + "\u0000\u0000\u053b\u194f\u0001\u0000\u0000\u0000\u053d\u1957\u0001\u0000"+ + "\u0000\u0000\u053f\u195a\u0001\u0000\u0000\u0000\u0541\u195d\u0001\u0000"+ + "\u0000\u0000\u0543\u195f\u0001\u0000\u0000\u0000\u0545\u1981\u0001\u0000"+ + "\u0000\u0000\u0547\u1984\u0001\u0000\u0000\u0000\u0549\u1988\u0001\u0000"+ + "\u0000\u0000\u054b\u1990\u0001\u0000\u0000\u0000\u054d\u19a0\u0001\u0000"+ + "\u0000\u0000\u054f\u19ab\u0001\u0000\u0000\u0000\u0551\u19af\u0001\u0000"+ + "\u0000\u0000\u0553\u19ba\u0001\u0000\u0000\u0000\u0555\u19e1\u0001\u0000"+ + "\u0000\u0000\u0557\u1a14\u0001\u0000\u0000\u0000\u0559\u1a2c\u0001\u0000"+ + "\u0000\u0000\u055b\u1a2f\u0001\u0000\u0000\u0000\u055d\u1a31\u0001\u0000"+ + "\u0000\u0000\u055f\u1a36\u0001\u0000\u0000\u0000\u0561\u1a55\u0001\u0000"+ + "\u0000\u0000\u0563\u1a58\u0001\u0000\u0000\u0000\u0565\u1a5d\u0001\u0000"+ + "\u0000\u0000\u0567\u1a6a\u0001\u0000\u0000\u0000\u0569\u1a6d\u0001\u0000"+ + "\u0000\u0000\u056b\u1a72\u0001\u0000\u0000\u0000\u056d\u1a78\u0001\u0000"+ + "\u0000\u0000\u056f\u1a7d\u0001\u0000\u0000\u0000\u0571\u1a82\u0001\u0000"+ + "\u0000\u0000\u0573\u1a87\u0001\u0000\u0000\u0000\u0575\u1a8c\u0001\u0000"+ + "\u0000\u0000\u0577\u1a9d\u0001\u0000\u0000\u0000\u0579\u1a9f\u0001\u0000"+ + "\u0000\u0000\u057b\u057c\u0005$\u0000\u0000\u057c\u0006\u0001\u0000\u0000"+ + "\u0000\u057d\u057e\u0005(\u0000\u0000\u057e\b\u0001\u0000\u0000\u0000"+ + "\u057f\u0580\u0005)\u0000\u0000\u0580\n\u0001\u0000\u0000\u0000\u0581"+ + "\u0582\u0005[\u0000\u0000\u0582\f\u0001\u0000\u0000\u0000\u0583\u0584"+ + "\u0005]\u0000\u0000\u0584\u000e\u0001\u0000\u0000\u0000\u0585\u0586\u0005"+ + ",\u0000\u0000\u0586\u0010\u0001\u0000\u0000\u0000\u0587\u0588\u0005;\u0000"+ + "\u0000\u0588\u0012\u0001\u0000\u0000\u0000\u0589\u058a\u0005:\u0000\u0000"+ + "\u058a\u0014\u0001\u0000\u0000\u0000\u058b\u058c\u0005*\u0000\u0000\u058c"+ + "\u0016\u0001\u0000\u0000\u0000\u058d\u058e\u0005=\u0000\u0000\u058e\u0018"+ + "\u0001\u0000\u0000\u0000\u058f\u0590\u0005.\u0000\u0000\u0590\u001a\u0001"+ + "\u0000\u0000\u0000\u0591\u0592\u0005+\u0000\u0000\u0592\u001c\u0001\u0000"+ + "\u0000\u0000\u0593\u0594\u0005-\u0000\u0000\u0594\u001e\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$\u0001\u0000\u0000\u0000\u059b\u059c\u0005>"+ + "\u0000\u0000\u059c&\u0001\u0000\u0000\u0000\u059d\u059e\u0005<\u0000\u0000"+ + "\u059e\u059f\u0005<\u0000\u0000\u059f(\u0001\u0000\u0000\u0000\u05a0\u05a1"+ + "\u0005>\u0000\u0000\u05a1\u05a2\u0005>\u0000\u0000\u05a2*\u0001\u0000"+ + "\u0000\u0000\u05a3\u05a4\u0005:\u0000\u0000\u05a4\u05a5\u0005=\u0000\u0000"+ + "\u05a5,\u0001\u0000\u0000\u0000\u05a6\u05a7\u0005<\u0000\u0000\u05a7\u05a8"+ + "\u0005=\u0000\u0000\u05a8.\u0001\u0000\u0000\u0000\u05a9\u05aa\u0005="+ + "\u0000\u0000\u05aa\u05ab\u0005>\u0000\u0000\u05ab0\u0001\u0000\u0000\u0000"+ + "\u05ac\u05ad\u0005>\u0000\u0000\u05ad\u05ae\u0005=\u0000\u0000\u05ae2"+ + "\u0001\u0000\u0000\u0000\u05af\u05b0\u0005.\u0000\u0000\u05b0\u05b1\u0005"+ + ".\u0000\u0000\u05b14\u0001\u0000\u0000\u0000\u05b2\u05b3\u0005<\u0000"+ + "\u0000\u05b3\u05b4\u0005>\u0000\u0000\u05b46\u0001\u0000\u0000\u0000\u05b5"+ + "\u05b6\u0005:\u0000\u0000\u05b6\u05b7\u0005:\u0000\u0000\u05b78\u0001"+ + "\u0000\u0000\u0000\u05b8\u05b9\u0005%\u0000\u0000\u05b9:\u0001\u0000\u0000"+ + "\u0000\u05ba\u05bc\u0005$\u0000\u0000\u05bb\u05bd\u0007\u0000\u0000\u0000"+ + "\u05bc\u05bb\u0001\u0000\u0000\u0000\u05bd\u05be\u0001\u0000\u0000\u0000"+ + "\u05be\u05bc\u0001\u0000\u0000\u0000\u05be\u05bf\u0001\u0000\u0000\u0000"+ + "\u05bf<\u0001\u0000\u0000\u0000\u05c0\u05d0\u0003A\u001e\u0000\u05c1\u05c5"+ + "\u0005+\u0000\u0000\u05c2\u05c3\u0005-\u0000\u0000\u05c3\u05c5\u0004\u001c"+ + "\u0000\u0000\u05c4\u05c1\u0001\u0000\u0000\u0000\u05c4\u05c2\u0001\u0000"+ + "\u0000\u0000\u05c5\u05c6\u0001\u0000\u0000\u0000\u05c6\u05c4\u0001\u0000"+ + "\u0000\u0000\u05c6\u05c7\u0001\u0000\u0000\u0000\u05c7\u05cb\u0001\u0000"+ + "\u0000\u0000\u05c8\u05cc\u0003A\u001e\u0000\u05c9\u05ca\u0005/\u0000\u0000"+ + "\u05ca\u05cc\u0004\u001c\u0001\u0000\u05cb\u05c8\u0001\u0000\u0000\u0000"+ + "\u05cb\u05c9\u0001\u0000\u0000\u0000\u05cc\u05d0\u0001\u0000\u0000\u0000"+ + "\u05cd\u05ce\u0005/\u0000\u0000\u05ce\u05d0\u0004\u001c\u0002\u0000\u05cf"+ + "\u05c0\u0001\u0000\u0000\u0000\u05cf\u05c4\u0001\u0000\u0000\u0000\u05cf"+ + "\u05cd\u0001\u0000\u0000\u0000\u05d0\u05d1\u0001\u0000\u0000\u0000\u05d1"+ + "\u05cf\u0001\u0000\u0000\u0000\u05d1\u05d2\u0001\u0000\u0000\u0000\u05d2"+ + "\u05d5\u0001\u0000\u0000\u0000\u05d3\u05d5\u0007\u0001\u0000\u0000\u05d4"+ + "\u05cf\u0001\u0000\u0000\u0000\u05d4\u05d3\u0001\u0000\u0000\u0000\u05d5"+ + "\u05d6\u0001\u0000\u0000\u0000\u05d6\u05d7\u0006\u001c\u0000\u0000\u05d7"+ + ">\u0001\u0000\u0000\u0000\u05d8\u05de\u0003C\u001f\u0000\u05d9\u05da\u0005"+ + "-\u0000\u0000\u05da\u05de\u0004\u001d\u0003\u0000\u05db\u05dc\u0005/\u0000"+ + "\u0000\u05dc\u05de\u0004\u001d\u0004\u0000\u05dd\u05d8\u0001\u0000\u0000"+ + "\u0000\u05dd\u05d9\u0001\u0000\u0000\u0000\u05dd\u05db\u0001\u0000\u0000"+ + "\u0000\u05de\u05e1\u0001\u0000\u0000\u0000\u05df\u05dd\u0001\u0000\u0000"+ + "\u0000\u05df\u05e0\u0001\u0000\u0000\u0000\u05e0\u05e2\u0001\u0000\u0000"+ + "\u0000\u05e1\u05df\u0001\u0000\u0000\u0000\u05e2\u05e4\u0003E \u0000\u05e3"+ + "\u05e5\u0003=\u001c\u0000\u05e4\u05e3\u0001\u0000\u0000\u0000\u05e4\u05e5"+ + "\u0001\u0000\u0000\u0000\u05e5\u05e9\u0001\u0000\u0000\u0000\u05e6\u05ea"+ + "\u0005+\u0000\u0000\u05e7\u05e8\u0005-\u0000\u0000\u05e8\u05ea\u0004\u001d"+ + "\u0005\u0000\u05e9\u05e6\u0001\u0000\u0000\u0000\u05e9\u05e7\u0001\u0000"+ + "\u0000\u0000\u05ea\u05eb\u0001\u0000\u0000\u0000\u05eb\u05e9\u0001\u0000"+ + "\u0000\u0000\u05eb\u05ec\u0001\u0000\u0000\u0000\u05ec\u05ed\u0001\u0000"+ + "\u0000\u0000\u05ed\u05ee\u0006\u001d\u0001\u0000\u05ee@\u0001\u0000\u0000"+ + "\u0000\u05ef\u05f0\u0007\u0002\u0000\u0000\u05f0B\u0001\u0000\u0000\u0000"+ + "\u05f1\u05f2\u0007\u0003\u0000\u0000\u05f2D\u0001\u0000\u0000\u0000\u05f3"+ + "\u05f4\u0007\u0004\u0000\u0000\u05f4F\u0001\u0000\u0000\u0000\u05f5\u05f6"+ + "\u0007\u0005\u0000\u0000\u05f6\u05f7\u0007\u0006\u0000\u0000\u05f7\u05f8"+ + "\u0007\u0006\u0000\u0000\u05f8H\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\t\u0000\u0000\u05ff\u0600\u0007\n\u0000"+ + "\u0000\u0600J\u0001\u0000\u0000\u0000\u0601\u0602\u0007\u0005\u0000\u0000"+ + "\u0602\u0603\u0007\u0007\u0000\u0000\u0603\u0604\u0007\u0005\u0000\u0000"+ + "\u0604\u0605\u0007\u0006\u0000\u0000\u0605\u0606\u0007\b\u0000\u0000\u0606"+ + "\u0607\u0007\u000b\u0000\u0000\u0607\u0608\u0007\n\u0000\u0000\u0608L"+ + "\u0001\u0000\u0000\u0000\u0609\u060a\u0007\u0005\u0000\u0000\u060a\u060b"+ + "\u0007\u0007\u0000\u0000\u060b\u060c\u0007\f\u0000\u0000\u060cN\u0001"+ + "\u0000\u0000\u0000\u060d\u060e\u0007\u0005\u0000\u0000\u060e\u060f\u0007"+ + "\u0007\u0000\u0000\u060f\u0610\u0007\b\u0000\u0000\u0610P\u0001\u0000"+ + "\u0000\u0000\u0611\u0612\u0007\u0005\u0000\u0000\u0612\u0613\u0007\r\u0000"+ + "\u0000\u0613\u0614\u0007\r\u0000\u0000\u0614\u0615\u0007\u0005\u0000\u0000"+ + "\u0615\u0616\u0007\b\u0000\u0000\u0616R\u0001\u0000\u0000\u0000\u0617"+ + "\u0618\u0007\u0005\u0000\u0000\u0618\u0619\u0007\t\u0000\u0000\u0619T"+ + "\u0001\u0000\u0000\u0000\u061a\u061b\u0007\u0005\u0000\u0000\u061b\u061c"+ + "\u0007\t\u0000\u0000\u061c\u061d\u0007\u000e\u0000\u0000\u061dV\u0001"+ + "\u0000\u0000\u0000\u061e\u061f\u0007\u0005\u0000\u0000\u061f\u0620\u0007"+ + "\t\u0000\u0000\u0620\u0621\u0007\b\u0000\u0000\u0621\u0622\u0007\u000f"+ + "\u0000\u0000\u0622\u0623\u0007\u000f\u0000\u0000\u0623\u0624\u0007\n\u0000"+ + "\u0000\u0624\u0625\u0007\u0010\u0000\u0000\u0625\u0626\u0007\r\u0000\u0000"+ + "\u0626\u0627\u0007\u0011\u0000\u0000\u0627\u0628\u0007\u000e\u0000\u0000"+ + "\u0628X\u0001\u0000\u0000\u0000\u0629\u062a\u0007\u0012\u0000\u0000\u062a"+ + "\u062b\u0007\u0013\u0000\u0000\u062b\u062c\u0007\u0010\u0000\u0000\u062c"+ + "\u062d\u0007\u0014\u0000\u0000\u062dZ\u0001\u0000\u0000\u0000\u062e\u062f"+ + "\u0007\u000e\u0000\u0000\u062f\u0630\u0007\u0005\u0000\u0000\u0630\u0631"+ + "\u0007\t\u0000\u0000\u0631\u0632\u0007\n\u0000\u0000\u0632\\\u0001\u0000"+ + "\u0000\u0000\u0633\u0634\u0007\u000e\u0000\u0000\u0634\u0635\u0007\u0005"+ + "\u0000\u0000\u0635\u0636\u0007\t\u0000\u0000\u0636\u0637\u0007\u0010\u0000"+ + "\u0000\u0637^\u0001\u0000\u0000\u0000\u0638\u0639\u0007\u000e\u0000\u0000"+ + "\u0639\u063a\u0007\u0014\u0000\u0000\u063a\u063b\u0007\n\u0000\u0000\u063b"+ + "\u063c\u0007\u000e\u0000\u0000\u063c\u063d\u0007\u0015\u0000\u0000\u063d"+ + "`\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\u0006\u0000\u0000\u0642\u0643\u0007\u0005\u0000\u0000\u0643\u0644"+ + "\u0007\u0010\u0000\u0000\u0644\u0645\u0007\n\u0000\u0000\u0645b\u0001"+ + "\u0000\u0000\u0000\u0646\u0647\u0007\u000e\u0000\u0000\u0647\u0648\u0007"+ + "\u0013\u0000\u0000\u0648\u0649\u0007\u0006\u0000\u0000\u0649\u064a\u0007"+ + "\u0016\u0000\u0000\u064a\u064b\u0007\u000f\u0000\u0000\u064b\u064c\u0007"+ + "\u0007\u0000\u0000\u064cd\u0001\u0000\u0000\u0000\u064d\u064e\u0007\u000e"+ + "\u0000\u0000\u064e\u064f\u0007\u0013\u0000\u0000\u064f\u0650\u0007\u0007"+ + "\u0000\u0000\u0650\u0651\u0007\t\u0000\u0000\u0651\u0652\u0007\u0010\u0000"+ + "\u0000\u0652\u0653\u0007\r\u0000\u0000\u0653\u0654\u0007\u0005\u0000\u0000"+ + "\u0654\u0655\u0007\u0011\u0000\u0000\u0655\u0656\u0007\u0007\u0000\u0000"+ + "\u0656\u0657\u0007\u0010\u0000\u0000\u0657f\u0001\u0000\u0000\u0000\u0658"+ + "\u0659\u0007\u000e\u0000\u0000\u0659\u065a\u0007\r\u0000\u0000\u065a\u065b"+ + "\u0007\n\u0000\u0000\u065b\u065c\u0007\u0005\u0000\u0000\u065c\u065d\u0007"+ + "\u0010\u0000\u0000\u065d\u065e\u0007\n\u0000\u0000\u065eh\u0001\u0000"+ + "\u0000\u0000\u065f\u0660\u0007\u000e\u0000\u0000\u0660\u0661\u0007\u0016"+ + "\u0000\u0000\u0661\u0662\u0007\r\u0000\u0000\u0662\u0663\u0007\r\u0000"+ + "\u0000\u0663\u0664\u0007\n\u0000\u0000\u0664\u0665\u0007\u0007\u0000\u0000"+ + "\u0665\u0666\u0007\u0010\u0000\u0000\u0666\u0667\u0005_\u0000\u0000\u0667"+ + "\u0668\u0007\u000e\u0000\u0000\u0668\u0669\u0007\u0005\u0000\u0000\u0669"+ + "\u066a\u0007\u0010\u0000\u0000\u066a\u066b\u0007\u0005\u0000\u0000\u066b"+ + "\u066c\u0007\u0006\u0000\u0000\u066c\u066d\u0007\u0013\u0000\u0000\u066d"+ + "\u066e\u0007\u0017\u0000\u0000\u066ej\u0001\u0000\u0000\u0000\u066f\u0670"+ + "\u0007\u000e\u0000\u0000\u0670\u0671\u0007\u0016\u0000\u0000\u0671\u0672"+ + "\u0007\r\u0000\u0000\u0672\u0673\u0007\r\u0000\u0000\u0673\u0674\u0007"+ + "\n\u0000\u0000\u0674\u0675\u0007\u0007\u0000\u0000\u0675\u0676\u0007\u0010"+ + "\u0000\u0000\u0676\u0677\u0005_\u0000\u0000\u0677\u0678\u0007\f\u0000"+ + "\u0000\u0678\u0679\u0007\u0005\u0000\u0000\u0679\u067a\u0007\u0010\u0000"+ + "\u0000\u067a\u067b\u0007\n\u0000\u0000\u067bl\u0001\u0000\u0000\u0000"+ + "\u067c\u067d\u0007\u000e\u0000\u0000\u067d\u067e\u0007\u0016\u0000\u0000"+ + "\u067e\u067f\u0007\r\u0000\u0000\u067f\u0680\u0007\r\u0000\u0000\u0680"+ + "\u0681\u0007\n\u0000\u0000\u0681\u0682\u0007\u0007\u0000\u0000\u0682\u0683"+ + "\u0007\u0010\u0000\u0000\u0683\u0684\u0005_\u0000\u0000\u0684\u0685\u0007"+ + "\r\u0000\u0000\u0685\u0686\u0007\u0013\u0000\u0000\u0686\u0687\u0007\u0006"+ + "\u0000\u0000\u0687\u0688\u0007\n\u0000\u0000\u0688n\u0001\u0000\u0000"+ + "\u0000\u0689\u068a\u0007\u000e\u0000\u0000\u068a\u068b\u0007\u0016\u0000"+ + "\u0000\u068b\u068c\u0007\r\u0000\u0000\u068c\u068d\u0007\r\u0000\u0000"+ + "\u068d\u068e\u0007\n\u0000\u0000\u068e\u068f\u0007\u0007\u0000\u0000\u068f"+ + "\u0690\u0007\u0010\u0000\u0000\u0690\u0691\u0005_\u0000\u0000\u0691\u0692"+ + "\u0007\u0010\u0000\u0000\u0692\u0693\u0007\u0011\u0000\u0000\u0693\u0694"+ + "\u0007\u000f\u0000\u0000\u0694\u0695\u0007\n\u0000\u0000\u0695p\u0001"+ + "\u0000\u0000\u0000\u0696\u0697\u0007\u000e\u0000\u0000\u0697\u0698\u0007"+ + "\u0016\u0000\u0000\u0698\u0699\u0007\r\u0000\u0000\u0699\u069a\u0007\r"+ + "\u0000\u0000\u069a\u069b\u0007\n\u0000\u0000\u069b\u069c\u0007\u0007\u0000"+ + "\u0000\u069c\u069d\u0007\u0010\u0000\u0000\u069d\u069e\u0005_\u0000\u0000"+ + "\u069e\u069f\u0007\u0010\u0000\u0000\u069f\u06a0\u0007\u0011\u0000\u0000"+ + "\u06a0\u06a1\u0007\u000f\u0000\u0000\u06a1\u06a2\u0007\n\u0000\u0000\u06a2"+ + "\u06a3\u0007\t\u0000\u0000\u06a3\u06a4\u0007\u0010\u0000\u0000\u06a4\u06a5"+ + "\u0007\u0005\u0000\u0000\u06a5\u06a6\u0007\u000f\u0000\u0000\u06a6\u06a7"+ + "\u0007\u0018\u0000\u0000\u06a7r\u0001\u0000\u0000\u0000\u06a8\u06a9\u0007"+ + "\u000e\u0000\u0000\u06a9\u06aa\u0007\u0016\u0000\u0000\u06aa\u06ab\u0007"+ + "\r\u0000\u0000\u06ab\u06ac\u0007\r\u0000\u0000\u06ac\u06ad\u0007\n\u0000"+ + "\u0000\u06ad\u06ae\u0007\u0007\u0000\u0000\u06ae\u06af\u0007\u0010\u0000"+ + "\u0000\u06af\u06b0\u0005_\u0000\u0000\u06b0\u06b1\u0007\u0016\u0000\u0000"+ + "\u06b1\u06b2\u0007\t\u0000\u0000\u06b2\u06b3\u0007\n\u0000\u0000\u06b3"+ + "\u06b4\u0007\r\u0000\u0000\u06b4t\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\u0005\u0000\u0000\u06b9\u06ba\u0007"+ + "\u0016\u0000\u0000\u06ba\u06bb\u0007\u0006\u0000\u0000\u06bb\u06bc\u0007"+ + "\u0010\u0000\u0000\u06bcv\u0001\u0000\u0000\u0000\u06bd\u06be\u0007\f"+ + "\u0000\u0000\u06be\u06bf\u0007\n\u0000\u0000\u06bf\u06c0\u0007\u0019\u0000"+ + "\u0000\u06c0\u06c1\u0007\n\u0000\u0000\u06c1\u06c2\u0007\r\u0000\u0000"+ + "\u06c2\u06c3\u0007\r\u0000\u0000\u06c3\u06c4\u0007\u0005\u0000\u0000\u06c4"+ + "\u06c5\u0007\u0012\u0000\u0000\u06c5\u06c6\u0007\u0006\u0000\u0000\u06c6"+ + "\u06c7\u0007\n\u0000\u0000\u06c7x\u0001\u0000\u0000\u0000\u06c8\u06c9"+ + "\u0007\f\u0000\u0000\u06c9\u06ca\u0007\n\u0000\u0000\u06ca\u06cb\u0007"+ + "\t\u0000\u0000\u06cb\u06cc\u0007\u000e\u0000\u0000\u06ccz\u0001\u0000"+ + "\u0000\u0000\u06cd\u06ce\u0007\f\u0000\u0000\u06ce\u06cf\u0007\u0011\u0000"+ + "\u0000\u06cf\u06d0\u0007\t\u0000\u0000\u06d0\u06d1\u0007\u0010\u0000\u0000"+ + "\u06d1\u06d2\u0007\u0011\u0000\u0000\u06d2\u06d3\u0007\u0007\u0000\u0000"+ + "\u06d3\u06d4\u0007\u000e\u0000\u0000\u06d4\u06d5\u0007\u0010\u0000\u0000"+ + "\u06d5|\u0001\u0000\u0000\u0000\u06d6\u06d7\u0007\f\u0000\u0000\u06d7"+ + "\u06d8\u0007\u0013\u0000\u0000\u06d8~\u0001\u0000\u0000\u0000\u06d9\u06da"+ + "\u0007\n\u0000\u0000\u06da\u06db\u0007\u0006\u0000\u0000\u06db\u06dc\u0007"+ + "\t\u0000\u0000\u06dc\u06dd\u0007\n\u0000\u0000\u06dd\u0080\u0001\u0000"+ + "\u0000\u0000\u06de\u06df\u0007\n\u0000\u0000\u06df\u06e0\u0007\u001a\u0000"+ + "\u0000\u06e0\u06e1\u0007\u000e\u0000\u0000\u06e1\u06e2\u0007\n\u0000\u0000"+ + "\u06e2\u06e3\u0007\u0018\u0000\u0000\u06e3\u06e4\u0007\u0010\u0000\u0000"+ + "\u06e4\u0082\u0001\u0000\u0000\u0000\u06e5\u06e6\u0007\u0019\u0000\u0000"+ + "\u06e6\u06e7\u0007\u0005\u0000\u0000\u06e7\u06e8\u0007\u0006\u0000\u0000"+ + "\u06e8\u06e9\u0007\t\u0000\u0000\u06e9\u06ea\u0007\n\u0000\u0000\u06ea"+ + "\u0084\u0001\u0000\u0000\u0000\u06eb\u06ec\u0007\u0019\u0000\u0000\u06ec"+ + "\u06ed\u0007\n\u0000\u0000\u06ed\u06ee\u0007\u0010\u0000\u0000\u06ee\u06ef"+ + "\u0007\u000e\u0000\u0000\u06ef\u06f0\u0007\u0014\u0000\u0000\u06f0\u0086"+ + "\u0001\u0000\u0000\u0000\u06f1\u06f2\u0007\u0019\u0000\u0000\u06f2\u06f3"+ + "\u0007\u0013\u0000\u0000\u06f3\u06f4\u0007\r\u0000\u0000\u06f4\u0088\u0001"+ + "\u0000\u0000\u0000\u06f5\u06f6\u0007\u0019\u0000\u0000\u06f6\u06f7\u0007"+ + "\u0013\u0000\u0000\u06f7\u06f8\u0007\r\u0000\u0000\u06f8\u06f9\u0007\n"+ + "\u0000\u0000\u06f9\u06fa\u0007\u0011\u0000\u0000\u06fa\u06fb\u0007\u0017"+ + "\u0000\u0000\u06fb\u06fc\u0007\u0007\u0000\u0000\u06fc\u008a\u0001\u0000"+ + "\u0000\u0000\u06fd\u06fe\u0007\u0019\u0000\u0000\u06fe\u06ff\u0007\r\u0000"+ + "\u0000\u06ff\u0700\u0007\u0013\u0000\u0000\u0700\u0701\u0007\u000f\u0000"+ + "\u0000\u0701\u008c\u0001\u0000\u0000\u0000\u0702\u0703\u0007\u0017\u0000"+ + "\u0000\u0703\u0704\u0007\r\u0000\u0000\u0704\u0705\u0007\u0005\u0000\u0000"+ + "\u0705\u0706\u0007\u0007\u0000\u0000\u0706\u0707\u0007\u0010\u0000\u0000"+ + "\u0707\u008e\u0001\u0000\u0000\u0000\u0708\u0709\u0007\u0017\u0000\u0000"+ + "\u0709\u070a\u0007\r\u0000\u0000\u070a\u070b\u0007\u0013\u0000\u0000\u070b"+ + "\u070c\u0007\u0016\u0000\u0000\u070c\u070d\u0007\u0018\u0000\u0000\u070d"+ + "\u0090\u0001\u0000\u0000\u0000\u070e\u070f\u0007\u0014\u0000\u0000\u070f"+ + "\u0710\u0007\u0005\u0000\u0000\u0710\u0711\u0007\u001b\u0000\u0000\u0711"+ + "\u0712\u0007\u0011\u0000\u0000\u0712\u0713\u0007\u0007\u0000\u0000\u0713"+ + "\u0714\u0007\u0017\u0000\u0000\u0714\u0092\u0001\u0000\u0000\u0000\u0715"+ + "\u0716\u0007\u0011\u0000\u0000\u0716\u0717\u0007\u0007\u0000\u0000\u0717"+ + "\u0094\u0001\u0000\u0000\u0000\u0718\u0719\u0007\u0011\u0000\u0000\u0719"+ + "\u071a\u0007\u0007\u0000\u0000\u071a\u071b\u0007\u0011\u0000\u0000\u071b"+ + "\u071c\u0007\u0010\u0000\u0000\u071c\u071d\u0007\u0011\u0000\u0000\u071d"+ + "\u071e\u0007\u0005\u0000\u0000\u071e\u071f\u0007\u0006\u0000\u0000\u071f"+ + "\u0720\u0007\u0006\u0000\u0000\u0720\u0721\u0007\b\u0000\u0000\u0721\u0096"+ + "\u0001\u0000\u0000\u0000\u0722\u0723\u0007\u0011\u0000\u0000\u0723\u0724"+ + "\u0007\u0007\u0000\u0000\u0724\u0725\u0007\u0010\u0000\u0000\u0725\u0726"+ + "\u0007\n\u0000\u0000\u0726\u0727\u0007\r\u0000\u0000\u0727\u0728\u0007"+ + "\t\u0000\u0000\u0728\u0729\u0007\n\u0000\u0000\u0729\u072a\u0007\u000e"+ + "\u0000\u0000\u072a\u072b\u0007\u0010\u0000\u0000\u072b\u0098\u0001\u0000"+ + "\u0000\u0000\u072c\u072d\u0007\u0011\u0000\u0000\u072d\u072e\u0007\u0007"+ + "\u0000\u0000\u072e\u072f\u0007\u0010\u0000\u0000\u072f\u0730\u0007\u0013"+ + "\u0000\u0000\u0730\u009a\u0001\u0000\u0000\u0000\u0731\u0732\u0007\u0006"+ + "\u0000\u0000\u0732\u0733\u0007\u0005\u0000\u0000\u0733\u0734\u0007\u0010"+ + "\u0000\u0000\u0734\u0735\u0007\n\u0000\u0000\u0735\u0736\u0007\r\u0000"+ + "\u0000\u0736\u0737\u0007\u0005\u0000\u0000\u0737\u0738\u0007\u0006\u0000"+ + "\u0000\u0738\u009c\u0001\u0000\u0000\u0000\u0739\u073a\u0007\u0006\u0000"+ + "\u0000\u073a\u073b\u0007\n\u0000\u0000\u073b\u073c\u0007\u0005\u0000\u0000"+ + "\u073c\u073d\u0007\f\u0000\u0000\u073d\u073e\u0007\u0011\u0000\u0000\u073e"+ + "\u073f\u0007\u0007\u0000\u0000\u073f\u0740\u0007\u0017\u0000\u0000\u0740"+ + "\u009e\u0001\u0000\u0000\u0000\u0741\u0742\u0007\u0006\u0000\u0000\u0742"+ + "\u0743\u0007\u0011\u0000\u0000\u0743\u0744\u0007\u000f\u0000\u0000\u0744"+ + "\u0745\u0007\u0011\u0000\u0000\u0745\u0746\u0007\u0010\u0000\u0000\u0746"+ + "\u00a0\u0001\u0000\u0000\u0000\u0747\u0748\u0007\u0006\u0000\u0000\u0748"+ + "\u0749\u0007\u0013\u0000\u0000\u0749\u074a\u0007\u000e\u0000\u0000\u074a"+ + "\u074b\u0007\u0005\u0000\u0000\u074b\u074c\u0007\u0006\u0000\u0000\u074c"+ + "\u074d\u0007\u0010\u0000\u0000\u074d\u074e\u0007\u0011\u0000\u0000\u074e"+ + "\u074f\u0007\u000f\u0000\u0000\u074f\u0750\u0007\n\u0000\u0000\u0750\u00a2"+ + "\u0001\u0000\u0000\u0000\u0751\u0752\u0007\u0006\u0000\u0000\u0752\u0753"+ + "\u0007\u0013\u0000\u0000\u0753\u0754\u0007\u000e\u0000\u0000\u0754\u0755"+ + "\u0007\u0005\u0000\u0000\u0755\u0756\u0007\u0006\u0000\u0000\u0756\u0757"+ + "\u0007\u0010\u0000\u0000\u0757\u0758\u0007\u0011\u0000\u0000\u0758\u0759"+ + "\u0007\u000f\u0000\u0000\u0759\u075a\u0007\n\u0000\u0000\u075a\u075b\u0007"+ + "\t\u0000\u0000\u075b\u075c\u0007\u0010\u0000\u0000\u075c\u075d\u0007\u0005"+ + "\u0000\u0000\u075d\u075e\u0007\u000f\u0000\u0000\u075e\u075f\u0007\u0018"+ + "\u0000\u0000\u075f\u00a4\u0001\u0000\u0000\u0000\u0760\u0761\u0007\u0007"+ + "\u0000\u0000\u0761\u0762\u0007\u0013\u0000\u0000\u0762\u0763\u0007\u0010"+ + "\u0000\u0000\u0763\u00a6\u0001\u0000\u0000\u0000\u0764\u0765\u0007\u0007"+ + "\u0000\u0000\u0765\u0766\u0007\u0016\u0000\u0000\u0766\u0767\u0007\u0006"+ + "\u0000\u0000\u0767\u0768\u0007\u0006\u0000\u0000\u0768\u00a8\u0001\u0000"+ + "\u0000\u0000\u0769\u076a\u0007\u0013\u0000\u0000\u076a\u076b\u0007\u0019"+ + "\u0000\u0000\u076b\u076c\u0007\u0019\u0000\u0000\u076c\u076d\u0007\t\u0000"+ + "\u0000\u076d\u076e\u0007\n\u0000\u0000\u076e\u076f\u0007\u0010\u0000\u0000"+ + "\u076f\u00aa\u0001\u0000\u0000\u0000\u0770\u0771\u0007\u0013\u0000\u0000"+ + "\u0771\u0772\u0007\u0007\u0000\u0000\u0772\u00ac\u0001\u0000\u0000\u0000"+ + "\u0773\u0774\u0007\u0013\u0000\u0000\u0774\u0775\u0007\u0007\u0000\u0000"+ + "\u0775\u0776\u0007\u0006\u0000\u0000\u0776\u0777\u0007\b\u0000\u0000\u0777"+ + "\u00ae\u0001\u0000\u0000\u0000\u0778\u0779\u0007\u0013\u0000\u0000\u0779"+ + "\u077a\u0007\r\u0000\u0000\u077a\u00b0\u0001\u0000\u0000\u0000\u077b\u077c"+ + "\u0007\u0013\u0000\u0000\u077c\u077d\u0007\r\u0000\u0000\u077d\u077e\u0007"+ + "\f\u0000\u0000\u077e\u077f\u0007\n\u0000\u0000\u077f\u0780\u0007\r\u0000"+ + "\u0000\u0780\u00b2\u0001\u0000\u0000\u0000\u0781\u0782\u0007\u0018\u0000"+ + "\u0000\u0782\u0783\u0007\u0006\u0000\u0000\u0783\u0784\u0007\u0005\u0000"+ + "\u0000\u0784\u0785\u0007\u000e\u0000\u0000\u0785\u0786\u0007\u0011\u0000"+ + "\u0000\u0786\u0787\u0007\u0007\u0000\u0000\u0787\u0788\u0007\u0017\u0000"+ + "\u0000\u0788\u00b4\u0001\u0000\u0000\u0000\u0789\u078a\u0007\u0018\u0000"+ + "\u0000\u078a\u078b\u0007\r\u0000\u0000\u078b\u078c\u0007\u0011\u0000\u0000"+ + "\u078c\u078d\u0007\u000f\u0000\u0000\u078d\u078e\u0007\u0005\u0000\u0000"+ + "\u078e\u078f\u0007\r\u0000\u0000\u078f\u0790\u0007\b\u0000\u0000\u0790"+ + "\u00b6\u0001\u0000\u0000\u0000\u0791\u0792\u0007\r\u0000\u0000\u0792\u0793"+ + "\u0007\n\u0000\u0000\u0793\u0794\u0007\u0019\u0000\u0000\u0794\u0795\u0007"+ + "\n\u0000\u0000\u0795\u0796\u0007\r\u0000\u0000\u0796\u0797\u0007\n\u0000"+ + "\u0000\u0797\u0798\u0007\u0007\u0000\u0000\u0798\u0799\u0007\u000e\u0000"+ + "\u0000\u0799\u079a\u0007\n\u0000\u0000\u079a\u079b\u0007\t\u0000\u0000"+ + "\u079b\u00b8\u0001\u0000\u0000\u0000\u079c\u079d\u0007\r\u0000\u0000\u079d"+ + "\u079e\u0007\n\u0000\u0000\u079e\u079f\u0007\u0010\u0000\u0000\u079f\u07a0"+ + "\u0007\u0016\u0000\u0000\u07a0\u07a1\u0007\r\u0000\u0000\u07a1\u07a2\u0007"+ + "\u0007\u0000\u0000\u07a2\u07a3\u0007\u0011\u0000\u0000\u07a3\u07a4\u0007"+ + "\u0007\u0000\u0000\u07a4\u07a5\u0007\u0017\u0000\u0000\u07a5\u00ba\u0001"+ + "\u0000\u0000\u0000\u07a6\u07a7\u0007\t\u0000\u0000\u07a7\u07a8\u0007\n"+ + "\u0000\u0000\u07a8\u07a9\u0007\u0006\u0000\u0000\u07a9\u07aa\u0007\n\u0000"+ + "\u0000\u07aa\u07ab\u0007\u000e\u0000\u0000\u07ab\u07ac\u0007\u0010\u0000"+ + "\u0000\u07ac\u00bc\u0001\u0000\u0000\u0000\u07ad\u07ae\u0007\t\u0000\u0000"+ + "\u07ae\u07af\u0007\n\u0000\u0000\u07af\u07b0\u0007\t\u0000\u0000\u07b0"+ + "\u07b1\u0007\t\u0000\u0000\u07b1\u07b2\u0007\u0011\u0000\u0000\u07b2\u07b3"+ + "\u0007\u0013\u0000\u0000\u07b3\u07b4\u0007\u0007\u0000\u0000\u07b4\u07b5"+ + "\u0005_\u0000\u0000\u07b5\u07b6\u0007\u0016\u0000\u0000\u07b6\u07b7\u0007"+ + "\t\u0000\u0000\u07b7\u07b8\u0007\n\u0000\u0000\u07b8\u07b9\u0007\r\u0000"+ + "\u0000\u07b9\u00be\u0001\u0000\u0000\u0000\u07ba\u07bb\u0007\t\u0000\u0000"+ + "\u07bb\u07bc\u0007\u0013\u0000\u0000\u07bc\u07bd\u0007\u000f\u0000\u0000"+ + "\u07bd\u07be\u0007\n\u0000\u0000\u07be\u00c0\u0001\u0000\u0000\u0000\u07bf"+ + "\u07c0\u0007\t\u0000\u0000\u07c0\u07c1\u0007\b\u0000\u0000\u07c1\u07c2"+ + "\u0007\u000f\u0000\u0000\u07c2\u07c3\u0007\u000f\u0000\u0000\u07c3\u07c4"+ + "\u0007\n\u0000\u0000\u07c4\u07c5\u0007\u0010\u0000\u0000\u07c5\u07c6\u0007"+ + "\r\u0000\u0000\u07c6\u07c7\u0007\u0011\u0000\u0000\u07c7\u07c8\u0007\u000e"+ + "\u0000\u0000\u07c8\u00c2\u0001\u0000\u0000\u0000\u07c9\u07ca\u0007\u0010"+ + "\u0000\u0000\u07ca\u07cb\u0007\u0005\u0000\u0000\u07cb\u07cc\u0007\u0012"+ + "\u0000\u0000\u07cc\u07cd\u0007\u0006\u0000\u0000\u07cd\u07ce\u0007\n\u0000"+ + "\u0000\u07ce\u00c4\u0001\u0000\u0000\u0000\u07cf\u07d0\u0007\u0010\u0000"+ + "\u0000\u07d0\u07d1\u0007\u0014\u0000\u0000\u07d1\u07d2\u0007\n\u0000\u0000"+ + "\u07d2\u07d3\u0007\u0007\u0000\u0000\u07d3\u00c6\u0001\u0000\u0000\u0000"+ + "\u07d4\u07d5\u0007\u0010\u0000\u0000\u07d5\u07d6\u0007\u0013\u0000\u0000"+ + "\u07d6\u00c8\u0001\u0000\u0000\u0000\u07d7\u07d8\u0007\u0010\u0000\u0000"+ + "\u07d8\u07d9\u0007\u0013\u0000\u0000\u07d9\u07da\u0007\u0018\u0000\u0000"+ + "\u07da\u07db\u0007\u0011\u0000\u0000\u07db\u07dc\u0007\u000e\u0000\u0000"+ + "\u07dc\u00ca\u0001\u0000\u0000\u0000\u07dd\u07de\u0007\u000b\u0000\u0000"+ + "\u07de\u07df\u0007\t\u0000\u0000\u07df\u07e0\u0007\u0010\u0000\u0000\u07e0"+ + "\u07e1\u0007\r\u0000\u0000\u07e1\u07e2\u0007\n\u0000\u0000\u07e2\u07e3"+ + "\u0007\u0005\u0000\u0000\u07e3\u07e4\u0007\u000f\u0000\u0000\u07e4\u00cc"+ + "\u0001\u0000\u0000\u0000\u07e5\u07e6\u0007\u000b\u0000\u0000\u07e6\u07e7"+ + "\u0007\u0010\u0000\u0000\u07e7\u07e8\u0007\u0005\u0000\u0000\u07e8\u07e9"+ + "\u0007\u0012\u0000\u0000\u07e9\u07ea\u0007\u0006\u0000\u0000\u07ea\u07eb"+ + "\u0007\n\u0000\u0000\u07eb\u00ce\u0001\u0000\u0000\u0000\u07ec\u07ed\u0007"+ + "\u000b\u0000\u0000\u07ed\u07ee\u0007\u001b\u0000\u0000\u07ee\u07ef\u0007"+ + "\u0011\u0000\u0000\u07ef\u07f0\u0007\n\u0000\u0000\u07f0\u07f1\u0007\u001c"+ + "\u0000\u0000\u07f1\u00d0\u0001\u0000\u0000\u0000\u07f2\u07f3\u0007\u0010"+ + "\u0000\u0000\u07f3\u07f4\u0007\r\u0000\u0000\u07f4\u07f5\u0007\u0005\u0000"+ + "\u0000\u07f5\u07f6\u0007\u0011\u0000\u0000\u07f6\u07f7\u0007\u0006\u0000"+ + "\u0000\u07f7\u07f8\u0007\u0011\u0000\u0000\u07f8\u07f9\u0007\u0007\u0000"+ + "\u0000\u07f9\u07fa\u0007\u0017\u0000\u0000\u07fa\u00d2\u0001\u0000\u0000"+ + "\u0000\u07fb\u07fc\u0007\u0010\u0000\u0000\u07fc\u07fd\u0007\r\u0000\u0000"+ + "\u07fd\u07fe\u0007\u0016\u0000\u0000\u07fe\u07ff\u0007\n\u0000\u0000\u07ff"+ + "\u00d4\u0001\u0000\u0000\u0000\u0800\u0801\u0007\u0016\u0000\u0000\u0801"+ + "\u0802\u0007\u0007\u0000\u0000\u0802\u0803\u0007\u0011\u0000\u0000\u0803"+ + "\u0804\u0007\u0013\u0000\u0000\u0804\u0805\u0007\u0007\u0000\u0000\u0805"+ + "\u00d6\u0001\u0000\u0000\u0000\u0806\u0807\u0007\u0016\u0000\u0000\u0807"+ + "\u0808\u0007\u0007\u0000\u0000\u0808\u0809\u0007\u0011\u0000\u0000\u0809"+ + "\u080a\u0007\u001d\u0000\u0000\u080a\u080b\u0007\u0016\u0000\u0000\u080b"+ + "\u080c\u0007\n\u0000\u0000\u080c\u00d8\u0001\u0000\u0000\u0000\u080d\u080e"+ + "\u0007\u0016\u0000\u0000\u080e\u080f\u0007\t\u0000\u0000\u080f\u0810\u0007"+ + "\n\u0000\u0000\u0810\u0811\u0007\r\u0000\u0000\u0811\u00da\u0001\u0000"+ + "\u0000\u0000\u0812\u0813\u0007\u0016\u0000\u0000\u0813\u0814\u0007\t\u0000"+ + "\u0000\u0814\u0815\u0007\u0011\u0000\u0000\u0815\u0816\u0007\u0007\u0000"+ + "\u0000\u0816\u0817\u0007\u0017\u0000\u0000\u0817\u00dc\u0001\u0000\u0000"+ + "\u0000\u0818\u0819\u0007\u001b\u0000\u0000\u0819\u081a\u0007\u0005\u0000"+ + "\u0000\u081a\u081b\u0007\r\u0000\u0000\u081b\u081c\u0007\u0011\u0000\u0000"+ + "\u081c\u081d\u0007\u0005\u0000\u0000\u081d\u081e\u0007\f\u0000\u0000\u081e"+ + "\u081f\u0007\u0011\u0000\u0000\u081f\u0820\u0007\u000e\u0000\u0000\u0820"+ + "\u00de\u0001\u0000\u0000\u0000\u0821\u0822\u0007\u001c\u0000\u0000\u0822"+ + "\u0823\u0007\u0014\u0000\u0000\u0823\u0824\u0007\n\u0000\u0000\u0824\u0825"+ + "\u0007\u0007\u0000\u0000\u0825\u00e0\u0001\u0000\u0000\u0000\u0826\u0827"+ + "\u0007\u001c\u0000\u0000\u0827\u0828\u0007\u0014\u0000\u0000\u0828\u0829"+ + "\u0007\n\u0000\u0000\u0829\u082a\u0007\r\u0000\u0000\u082a\u082b\u0007"+ + "\n\u0000\u0000\u082b\u00e2\u0001\u0000\u0000\u0000\u082c\u082d\u0007\u001c"+ + "\u0000\u0000\u082d\u082e\u0007\u0011\u0000\u0000\u082e\u082f\u0007\u0007"+ + "\u0000\u0000\u082f\u0830\u0007\f\u0000\u0000\u0830\u0831\u0007\u0013\u0000"+ + "\u0000\u0831\u0832\u0007\u001c\u0000\u0000\u0832\u00e4\u0001\u0000\u0000"+ + "\u0000\u0833\u0834\u0007\u001c\u0000\u0000\u0834\u0835\u0007\u0011\u0000"+ + "\u0000\u0835\u0836\u0007\u0010\u0000\u0000\u0836\u0837\u0007\u0014\u0000"+ + "\u0000\u0837\u00e6\u0001\u0000\u0000\u0000\u0838\u0839\u0007\u0005\u0000"+ + "\u0000\u0839\u083a\u0007\u0016\u0000\u0000\u083a\u083b\u0007\u0010\u0000"+ + "\u0000\u083b\u083c\u0007\u0014\u0000\u0000\u083c\u083d\u0007\u0013\u0000"+ + "\u0000\u083d\u083e\u0007\r\u0000\u0000\u083e\u083f\u0007\u0011\u0000\u0000"+ + "\u083f\u0840\u0007\u000b\u0000\u0000\u0840\u0841\u0007\u0005\u0000\u0000"+ + "\u0841\u0842\u0007\u0010\u0000\u0000\u0842\u0843\u0007\u0011\u0000\u0000"+ + "\u0843\u0844\u0007\u0013\u0000\u0000\u0844\u0845\u0007\u0007\u0000\u0000"+ + "\u0845\u00e8\u0001\u0000\u0000\u0000\u0846\u0847\u0007\u0012\u0000\u0000"+ + "\u0847\u0848\u0007\u0011\u0000\u0000\u0848\u0849\u0007\u0007\u0000\u0000"+ + "\u0849\u084a\u0007\u0005\u0000\u0000\u084a\u084b\u0007\r\u0000\u0000\u084b"+ + "\u084c\u0007\b\u0000\u0000\u084c\u00ea\u0001\u0000\u0000\u0000\u084d\u084e"+ + "\u0007\u000e\u0000\u0000\u084e\u084f\u0007\u0013\u0000\u0000\u084f\u0850"+ + "\u0007\u0006\u0000\u0000\u0850\u0851\u0007\u0006\u0000\u0000\u0851\u0852"+ + "\u0007\u0005\u0000\u0000\u0852\u0853\u0007\u0010\u0000\u0000\u0853\u0854"+ + "\u0007\u0011\u0000\u0000\u0854\u0855\u0007\u0013\u0000\u0000\u0855\u0856"+ + "\u0007\u0007\u0000\u0000\u0856\u00ec\u0001\u0000\u0000\u0000\u0857\u0858"+ + "\u0007\u000e\u0000\u0000\u0858\u0859\u0007\u0013\u0000\u0000\u0859\u085a"+ + "\u0007\u0007\u0000\u0000\u085a\u085b\u0007\u000e\u0000\u0000\u085b\u085c"+ + "\u0007\u0016\u0000\u0000\u085c\u085d\u0007\r\u0000\u0000\u085d\u085e\u0007"+ + "\r\u0000\u0000\u085e\u085f\u0007\n\u0000\u0000\u085f\u0860\u0007\u0007"+ + "\u0000\u0000\u0860\u0861\u0007\u0010\u0000\u0000\u0861\u0862\u0007\u0006"+ + "\u0000\u0000\u0862\u0863\u0007\b\u0000\u0000\u0863\u00ee\u0001\u0000\u0000"+ + "\u0000\u0864\u0865\u0007\u000e\u0000\u0000\u0865\u0866\u0007\r\u0000\u0000"+ + "\u0866\u0867\u0007\u0013\u0000\u0000\u0867\u0868\u0007\t\u0000\u0000\u0868"+ + "\u0869\u0007\t\u0000\u0000\u0869\u00f0\u0001\u0000\u0000\u0000\u086a\u086b"+ + "\u0007\u000e\u0000\u0000\u086b\u086c\u0007\u0016\u0000\u0000\u086c\u086d"+ + "\u0007\r\u0000\u0000\u086d\u086e\u0007\r\u0000\u0000\u086e\u086f\u0007"+ + "\n\u0000\u0000\u086f\u0870\u0007\u0007\u0000\u0000\u0870\u0871\u0007\u0010"+ + "\u0000\u0000\u0871\u0872\u0005_\u0000\u0000\u0872\u0873\u0007\t\u0000"+ + "\u0000\u0873\u0874\u0007\u000e\u0000\u0000\u0874\u0875\u0007\u0014\u0000"+ + "\u0000\u0875\u0876\u0007\n\u0000\u0000\u0876\u0877\u0007\u000f\u0000\u0000"+ + "\u0877\u0878\u0007\u0005\u0000\u0000\u0878\u00f2\u0001\u0000\u0000\u0000"+ + "\u0879\u087a\u0007\u0019\u0000\u0000\u087a\u087b\u0007\r\u0000\u0000\u087b"+ + "\u087c\u0007\n\u0000\u0000\u087c\u087d\u0007\n\u0000\u0000\u087d\u087e"+ + "\u0007\u000b\u0000\u0000\u087e\u087f\u0007\n\u0000\u0000\u087f\u00f4\u0001"+ + "\u0000\u0000\u0000\u0880\u0881\u0007\u0019\u0000\u0000\u0881\u0882\u0007"+ + "\u0016\u0000\u0000\u0882\u0883\u0007\u0006\u0000\u0000\u0883\u0884\u0007"+ + "\u0006\u0000\u0000\u0884\u00f6\u0001\u0000\u0000\u0000\u0885\u0886\u0007"+ + "\u0011\u0000\u0000\u0886\u0887\u0007\u0006\u0000\u0000\u0887\u0888\u0007"+ + "\u0011\u0000\u0000\u0888\u0889\u0007\u0015\u0000\u0000\u0889\u088a\u0007"+ + "\n\u0000\u0000\u088a\u00f8\u0001\u0000\u0000\u0000\u088b\u088c\u0007\u0011"+ + "\u0000\u0000\u088c\u088d\u0007\u0007\u0000\u0000\u088d\u088e\u0007\u0007"+ + "\u0000\u0000\u088e\u088f\u0007\n\u0000\u0000\u088f\u0890\u0007\r\u0000"+ + "\u0000\u0890\u00fa\u0001\u0000\u0000\u0000\u0891\u0892\u0007\u0011\u0000"+ + "\u0000\u0892\u0893\u0007\t\u0000\u0000\u0893\u00fc\u0001\u0000\u0000\u0000"+ + "\u0894\u0895\u0007\u0011\u0000\u0000\u0895\u0896\u0007\t\u0000\u0000\u0896"+ + "\u0897\u0007\u0007\u0000\u0000\u0897\u0898\u0007\u0016\u0000\u0000\u0898"+ + "\u0899\u0007\u0006\u0000\u0000\u0899\u089a\u0007\u0006\u0000\u0000\u089a"+ + "\u00fe\u0001\u0000\u0000\u0000\u089b\u089c\u0007\u001e\u0000\u0000\u089c"+ + "\u089d\u0007\u0013\u0000\u0000\u089d\u089e\u0007\u0011\u0000\u0000\u089e"+ + "\u089f\u0007\u0007\u0000\u0000\u089f\u0100\u0001\u0000\u0000\u0000\u08a0"+ + "\u08a1\u0007\u0006\u0000\u0000\u08a1\u08a2\u0007\n\u0000\u0000\u08a2\u08a3"+ + "\u0007\u0019\u0000\u0000\u08a3\u08a4\u0007\u0010\u0000\u0000\u08a4\u0102"+ + "\u0001\u0000\u0000\u0000\u08a5\u08a6\u0007\u0006\u0000\u0000\u08a6\u08a7"+ + "\u0007\u0011\u0000\u0000\u08a7\u08a8\u0007\u0015\u0000\u0000\u08a8\u08a9"+ + "\u0007\n\u0000\u0000\u08a9\u0104\u0001\u0000\u0000\u0000\u08aa\u08ab\u0007"+ + "\u0007\u0000\u0000\u08ab\u08ac\u0007\u0005\u0000\u0000\u08ac\u08ad\u0007"+ + "\u0010\u0000\u0000\u08ad\u08ae\u0007\u0016\u0000\u0000\u08ae\u08af\u0007"+ + "\r\u0000\u0000\u08af\u08b0\u0007\u0005\u0000\u0000\u08b0\u08b1\u0007\u0006"+ + "\u0000\u0000\u08b1\u0106\u0001\u0000\u0000\u0000\u08b2\u08b3\u0007\u0007"+ + "\u0000\u0000\u08b3\u08b4\u0007\u0013\u0000\u0000\u08b4\u08b5\u0007\u0010"+ + "\u0000\u0000\u08b5\u08b6\u0007\u0007\u0000\u0000\u08b6\u08b7\u0007\u0016"+ + "\u0000\u0000\u08b7\u08b8\u0007\u0006\u0000\u0000\u08b8\u08b9\u0007\u0006"+ + "\u0000\u0000\u08b9\u0108\u0001\u0000\u0000\u0000\u08ba\u08bb\u0007\u0013"+ + "\u0000\u0000\u08bb\u08bc\u0007\u0016\u0000\u0000\u08bc\u08bd\u0007\u0010"+ + "\u0000\u0000\u08bd\u08be\u0007\n\u0000\u0000\u08be\u08bf\u0007\r\u0000"+ + "\u0000\u08bf\u010a\u0001\u0000\u0000\u0000\u08c0\u08c1\u0007\u0013\u0000"+ + "\u0000\u08c1\u08c2\u0007\u001b\u0000\u0000\u08c2\u08c3\u0007\n\u0000\u0000"+ + "\u08c3\u08c4\u0007\r\u0000\u0000\u08c4\u010c\u0001\u0000\u0000\u0000\u08c5"+ + "\u08c6\u0007\u0013\u0000\u0000\u08c6\u08c7\u0007\u001b\u0000\u0000\u08c7"+ + "\u08c8\u0007\n\u0000\u0000\u08c8\u08c9\u0007\r\u0000\u0000\u08c9\u08ca"+ + "\u0007\u0006\u0000\u0000\u08ca\u08cb\u0007\u0005\u0000\u0000\u08cb\u08cc"+ + "\u0007\u0018\u0000\u0000\u08cc\u08cd\u0007\t\u0000\u0000\u08cd\u010e\u0001"+ + "\u0000\u0000\u0000\u08ce\u08cf\u0007\r\u0000\u0000\u08cf\u08d0\u0007\u0011"+ + "\u0000\u0000\u08d0\u08d1\u0007\u0017\u0000\u0000\u08d1\u08d2\u0007\u0014"+ + "\u0000\u0000\u08d2\u08d3\u0007\u0010\u0000\u0000\u08d3\u0110\u0001\u0000"+ + "\u0000\u0000\u08d4\u08d5\u0007\t\u0000\u0000\u08d5\u08d6\u0007\u0011\u0000"+ + "\u0000\u08d6\u08d7\u0007\u000f\u0000\u0000\u08d7\u08d8\u0007\u0011\u0000"+ + "\u0000\u08d8\u08d9\u0007\u0006\u0000\u0000\u08d9\u08da\u0007\u0005\u0000"+ + "\u0000\u08da\u08db\u0007\r\u0000\u0000\u08db\u0112\u0001\u0000\u0000\u0000"+ + "\u08dc\u08dd\u0007\u001b\u0000\u0000\u08dd\u08de\u0007\n\u0000\u0000\u08de"+ + "\u08df\u0007\r\u0000\u0000\u08df\u08e0\u0007\u0012\u0000\u0000\u08e0\u08e1"+ + "\u0007\u0013\u0000\u0000\u08e1\u08e2\u0007\t\u0000\u0000\u08e2\u08e3\u0007"+ + "\n\u0000\u0000\u08e3\u0114\u0001\u0000\u0000\u0000\u08e4\u08e5\u0007\u0005"+ + "\u0000\u0000\u08e5\u08e6\u0007\u0012\u0000\u0000\u08e6\u08e7\u0007\u0013"+ + "\u0000\u0000\u08e7\u08e8\u0007\r\u0000\u0000\u08e8\u08e9\u0007\u0010\u0000"+ + "\u0000\u08e9\u0116\u0001\u0000\u0000\u0000\u08ea\u08eb\u0007\u0005\u0000"+ + "\u0000\u08eb\u08ec\u0007\u0012\u0000\u0000\u08ec\u08ed\u0007\t\u0000\u0000"+ + "\u08ed\u08ee\u0007\u0013\u0000\u0000\u08ee\u08ef\u0007\u0006\u0000\u0000"+ + "\u08ef\u08f0\u0007\u0016\u0000\u0000\u08f0\u08f1\u0007\u0010\u0000\u0000"+ + "\u08f1\u08f2\u0007\n\u0000\u0000\u08f2\u0118\u0001\u0000\u0000\u0000\u08f3"+ + "\u08f4\u0007\u0005\u0000\u0000\u08f4\u08f5\u0007\u000e\u0000\u0000\u08f5"+ + "\u08f6\u0007\u000e\u0000\u0000\u08f6\u08f7\u0007\n\u0000\u0000\u08f7\u08f8"+ + "\u0007\t\u0000\u0000\u08f8\u08f9\u0007\t\u0000\u0000\u08f9\u011a\u0001"+ + "\u0000\u0000\u0000\u08fa\u08fb\u0007\u0005\u0000\u0000\u08fb\u08fc\u0007"+ + "\u000e\u0000\u0000\u08fc\u08fd\u0007\u0010\u0000\u0000\u08fd\u08fe\u0007"+ + "\u0011\u0000\u0000\u08fe\u08ff\u0007\u0013\u0000\u0000\u08ff\u0900\u0007"+ + "\u0007\u0000\u0000\u0900\u011c\u0001\u0000\u0000\u0000\u0901\u0902\u0007"+ + "\u0005\u0000\u0000\u0902\u0903\u0007\f\u0000\u0000\u0903\u0904\u0007\f"+ + "\u0000\u0000\u0904\u011e\u0001\u0000\u0000\u0000\u0905\u0906\u0007\u0005"+ + "\u0000\u0000\u0906\u0907\u0007\f\u0000\u0000\u0907\u0908\u0007\u000f\u0000"+ + "\u0000\u0908\u0909\u0007\u0011\u0000\u0000\u0909\u090a\u0007\u0007\u0000"+ + "\u0000\u090a\u0120\u0001\u0000\u0000\u0000\u090b\u090c\u0007\u0005\u0000"+ + "\u0000\u090c\u090d\u0007\u0019\u0000\u0000\u090d\u090e\u0007\u0010\u0000"+ + "\u0000\u090e\u090f\u0007\n\u0000\u0000\u090f\u0910\u0007\r\u0000\u0000"+ + "\u0910\u0122\u0001\u0000\u0000\u0000\u0911\u0912\u0007\u0005\u0000\u0000"+ + "\u0912\u0913\u0007\u0017\u0000\u0000\u0913\u0914\u0007\u0017\u0000\u0000"+ + "\u0914\u0915\u0007\r\u0000\u0000\u0915\u0916\u0007\n\u0000\u0000\u0916"+ + "\u0917\u0007\u0017\u0000\u0000\u0917\u0918\u0007\u0005\u0000\u0000\u0918"+ + "\u0919\u0007\u0010\u0000\u0000\u0919\u091a\u0007\n\u0000\u0000\u091a\u0124"+ + "\u0001\u0000\u0000\u0000\u091b\u091c\u0007\u0005\u0000\u0000\u091c\u091d"+ + "\u0007\u0006\u0000\u0000\u091d\u091e\u0007\t\u0000\u0000\u091e\u091f\u0007"+ + "\u0013\u0000\u0000\u091f\u0126\u0001\u0000\u0000\u0000\u0920\u0921\u0007"+ + "\u0005\u0000\u0000\u0921\u0922\u0007\u0006\u0000\u0000\u0922\u0923\u0007"+ + "\u0010\u0000\u0000\u0923\u0924\u0007\n\u0000\u0000\u0924\u0925\u0007\r"+ + "\u0000\u0000\u0925\u0128\u0001\u0000\u0000\u0000\u0926\u0927\u0007\u0005"+ + "\u0000\u0000\u0927\u0928\u0007\u0006\u0000\u0000\u0928\u0929\u0007\u001c"+ + "\u0000\u0000\u0929\u092a\u0007\u0005\u0000\u0000\u092a\u092b\u0007\b\u0000"+ + "\u0000\u092b\u092c\u0007\t\u0000\u0000\u092c\u012a\u0001\u0000\u0000\u0000"+ + "\u092d\u092e\u0007\u0005\u0000\u0000\u092e\u092f\u0007\t\u0000\u0000\u092f"+ + "\u0930\u0007\t\u0000\u0000\u0930\u0931\u0007\n\u0000\u0000\u0931\u0932"+ + "\u0007\r\u0000\u0000\u0932\u0933\u0007\u0010\u0000\u0000\u0933\u0934\u0007"+ + "\u0011\u0000\u0000\u0934\u0935\u0007\u0013\u0000\u0000\u0935\u0936\u0007"+ + "\u0007\u0000\u0000\u0936\u012c\u0001\u0000\u0000\u0000\u0937\u0938\u0007"+ + "\u0005\u0000\u0000\u0938\u0939\u0007\t\u0000\u0000\u0939\u093a\u0007\t"+ + "\u0000\u0000\u093a\u093b\u0007\u0011\u0000\u0000\u093b\u093c\u0007\u0017"+ + "\u0000\u0000\u093c\u093d\u0007\u0007\u0000\u0000\u093d\u093e\u0007\u000f"+ + "\u0000\u0000\u093e\u093f\u0007\n\u0000\u0000\u093f\u0940\u0007\u0007\u0000"+ + "\u0000\u0940\u0941\u0007\u0010\u0000\u0000\u0941\u012e\u0001\u0000\u0000"+ + "\u0000\u0942\u0943\u0007\u0005\u0000\u0000\u0943\u0944\u0007\u0010\u0000"+ + "\u0000\u0944\u0130\u0001\u0000\u0000\u0000\u0945\u0946\u0007\u0005\u0000"+ + "\u0000\u0946\u0947\u0007\u0010\u0000\u0000\u0947\u0948\u0007\u0010\u0000"+ + "\u0000\u0948\u0949\u0007\r\u0000\u0000\u0949\u094a\u0007\u0011\u0000\u0000"+ + "\u094a\u094b\u0007\u0012\u0000\u0000\u094b\u094c\u0007\u0016\u0000\u0000"+ + "\u094c\u094d\u0007\u0010\u0000\u0000\u094d\u094e\u0007\n\u0000\u0000\u094e"+ + "\u0132\u0001\u0000\u0000\u0000\u094f\u0950\u0007\u0012\u0000\u0000\u0950"+ + "\u0951\u0007\u0005\u0000\u0000\u0951\u0952\u0007\u000e\u0000\u0000\u0952"+ + "\u0953\u0007\u0015\u0000\u0000\u0953\u0954\u0007\u001c\u0000\u0000\u0954"+ + "\u0955\u0007\u0005\u0000\u0000\u0955\u0956\u0007\r\u0000\u0000\u0956\u0957"+ + "\u0007\f\u0000\u0000\u0957\u0134\u0001\u0000\u0000\u0000\u0958\u0959\u0007"+ + "\u0012\u0000\u0000\u0959\u095a\u0007\n\u0000\u0000\u095a\u095b\u0007\u0019"+ + "\u0000\u0000\u095b\u095c\u0007\u0013\u0000\u0000\u095c\u095d\u0007\r\u0000"+ + "\u0000\u095d\u095e\u0007\n\u0000\u0000\u095e\u0136\u0001\u0000\u0000\u0000"+ + "\u095f\u0960\u0007\u0012\u0000\u0000\u0960\u0961\u0007\n\u0000\u0000\u0961"+ + "\u0962\u0007\u0017\u0000\u0000\u0962\u0963\u0007\u0011\u0000\u0000\u0963"+ + "\u0964\u0007\u0007\u0000\u0000\u0964\u0138\u0001\u0000\u0000\u0000\u0965"+ + "\u0966\u0007\u0012\u0000\u0000\u0966\u0967\u0007\b\u0000\u0000\u0967\u013a"+ + "\u0001\u0000\u0000\u0000\u0968\u0969\u0007\u000e\u0000\u0000\u0969\u096a"+ + "\u0007\u0005\u0000\u0000\u096a\u096b\u0007\u000e\u0000\u0000\u096b\u096c"+ + "\u0007\u0014\u0000\u0000\u096c\u096d\u0007\n\u0000\u0000\u096d\u013c\u0001"+ + "\u0000\u0000\u0000\u096e\u096f\u0007\u000e\u0000\u0000\u096f\u0970\u0007"+ + "\u0005\u0000\u0000\u0970\u0971\u0007\u0006\u0000\u0000\u0971\u0972\u0007"+ + "\u0006\u0000\u0000\u0972\u0973\u0007\n\u0000\u0000\u0973\u0974\u0007\f"+ + "\u0000\u0000\u0974\u013e\u0001\u0000\u0000\u0000\u0975\u0976\u0007\u000e"+ + "\u0000\u0000\u0976\u0977\u0007\u0005\u0000\u0000\u0977\u0978\u0007\t\u0000"+ + "\u0000\u0978\u0979\u0007\u000e\u0000\u0000\u0979\u097a\u0007\u0005\u0000"+ + "\u0000\u097a\u097b\u0007\f\u0000\u0000\u097b\u097c\u0007\n\u0000\u0000"+ + "\u097c\u0140\u0001\u0000\u0000\u0000\u097d\u097e\u0007\u000e\u0000\u0000"+ + "\u097e\u097f\u0007\u0005\u0000\u0000\u097f\u0980\u0007\t\u0000\u0000\u0980"+ + "\u0981\u0007\u000e\u0000\u0000\u0981\u0982\u0007\u0005\u0000\u0000\u0982"+ + "\u0983\u0007\f\u0000\u0000\u0983\u0984\u0007\n\u0000\u0000\u0984\u0985"+ + "\u0007\f\u0000\u0000\u0985\u0142\u0001\u0000\u0000\u0000\u0986\u0987\u0007"+ + "\u000e\u0000\u0000\u0987\u0988\u0007\u0005\u0000\u0000\u0988\u0989\u0007"+ + "\u0010\u0000\u0000\u0989\u098a\u0007\u0005\u0000\u0000\u098a\u098b\u0007"+ + "\u0006\u0000\u0000\u098b\u098c\u0007\u0013\u0000\u0000\u098c\u098d\u0007"+ + "\u0017\u0000\u0000\u098d\u0144\u0001\u0000\u0000\u0000\u098e\u098f\u0007"+ + "\u000e\u0000\u0000\u098f\u0990\u0007\u0014\u0000\u0000\u0990\u0991\u0007"+ + "\u0005\u0000\u0000\u0991\u0992\u0007\u0011\u0000\u0000\u0992\u0993\u0007"+ + "\u0007\u0000\u0000\u0993\u0146\u0001\u0000\u0000\u0000\u0994\u0995\u0007"+ + "\u000e\u0000\u0000\u0995\u0996\u0007\u0014\u0000\u0000\u0996\u0997\u0007"+ + "\u0005\u0000\u0000\u0997\u0998\u0007\r\u0000\u0000\u0998\u0999\u0007\u0005"+ + "\u0000\u0000\u0999\u099a\u0007\u000e\u0000\u0000\u099a\u099b\u0007\u0010"+ + "\u0000\u0000\u099b\u099c\u0007\n\u0000\u0000\u099c\u099d\u0007\r\u0000"+ + "\u0000\u099d\u099e\u0007\u0011\u0000\u0000\u099e\u099f\u0007\t\u0000\u0000"+ + "\u099f\u09a0\u0007\u0010\u0000\u0000\u09a0\u09a1\u0007\u0011\u0000\u0000"+ + "\u09a1\u09a2\u0007\u000e\u0000\u0000\u09a2\u09a3\u0007\t\u0000\u0000\u09a3"+ + "\u0148\u0001\u0000\u0000\u0000\u09a4\u09a5\u0007\u000e\u0000\u0000\u09a5"+ + "\u09a6\u0007\u0014\u0000\u0000\u09a6\u09a7\u0007\n\u0000\u0000\u09a7\u09a8"+ + "\u0007\u000e\u0000\u0000\u09a8\u09a9\u0007\u0015\u0000\u0000\u09a9\u09aa"+ + "\u0007\u0018\u0000\u0000\u09aa\u09ab\u0007\u0013\u0000\u0000\u09ab\u09ac"+ + "\u0007\u0011\u0000\u0000\u09ac\u09ad\u0007\u0007\u0000\u0000\u09ad\u09ae"+ + "\u0007\u0010\u0000\u0000\u09ae\u014a\u0001\u0000\u0000\u0000\u09af\u09b0"+ + "\u0007\u000e\u0000\u0000\u09b0\u09b1\u0007\u0006\u0000\u0000\u09b1\u09b2"+ + "\u0007\u0005\u0000\u0000\u09b2\u09b3\u0007\t\u0000\u0000\u09b3\u09b4\u0007"+ + "\t\u0000\u0000\u09b4\u014c\u0001\u0000\u0000\u0000\u09b5\u09b6\u0007\u000e"+ + "\u0000\u0000\u09b6\u09b7\u0007\u0006\u0000\u0000\u09b7\u09b8\u0007\u0013"+ + "\u0000\u0000\u09b8\u09b9\u0007\t\u0000\u0000\u09b9\u09ba\u0007\n\u0000"+ + "\u0000\u09ba\u014e\u0001\u0000\u0000\u0000\u09bb\u09bc\u0007\u000e\u0000"+ + "\u0000\u09bc\u09bd\u0007\u0006\u0000\u0000\u09bd\u09be\u0007\u0016\u0000"+ + "\u0000\u09be\u09bf\u0007\t\u0000\u0000\u09bf\u09c0\u0007\u0010\u0000\u0000"+ + "\u09c0\u09c1\u0007\n\u0000\u0000\u09c1\u09c2\u0007\r\u0000\u0000\u09c2"+ + "\u0150\u0001\u0000\u0000\u0000\u09c3\u09c4\u0007\u000e\u0000\u0000\u09c4"+ + "\u09c5\u0007\u0013\u0000\u0000\u09c5\u09c6\u0007\u000f\u0000\u0000\u09c6"+ + "\u09c7\u0007\u000f\u0000\u0000\u09c7\u09c8\u0007\n\u0000\u0000\u09c8\u09c9"+ + "\u0007\u0007\u0000\u0000\u09c9\u09ca\u0007\u0010\u0000\u0000\u09ca\u0152"+ + "\u0001\u0000\u0000\u0000\u09cb\u09cc\u0007\u000e\u0000\u0000\u09cc\u09cd"+ + "\u0007\u0013\u0000\u0000\u09cd\u09ce\u0007\u000f\u0000\u0000\u09ce\u09cf"+ + "\u0007\u000f\u0000\u0000\u09cf\u09d0\u0007\n\u0000\u0000\u09d0\u09d1\u0007"+ + "\u0007\u0000\u0000\u09d1\u09d2\u0007\u0010\u0000\u0000\u09d2\u09d3\u0007"+ + "\t\u0000\u0000\u09d3\u0154\u0001\u0000\u0000\u0000\u09d4\u09d5\u0007\u000e"+ + "\u0000\u0000\u09d5\u09d6\u0007\u0013\u0000\u0000\u09d6\u09d7\u0007\u000f"+ + "\u0000\u0000\u09d7\u09d8\u0007\u000f\u0000\u0000\u09d8\u09d9\u0007\u0011"+ + "\u0000\u0000\u09d9\u09da\u0007\u0010\u0000\u0000\u09da\u0156\u0001\u0000"+ + "\u0000\u0000\u09db\u09dc\u0007\u000e\u0000\u0000\u09dc\u09dd\u0007\u0013"+ + "\u0000\u0000\u09dd\u09de\u0007\u000f\u0000\u0000\u09de\u09df\u0007\u000f"+ + "\u0000\u0000\u09df\u09e0\u0007\u0011\u0000\u0000\u09e0\u09e1\u0007\u0010"+ + "\u0000\u0000\u09e1\u09e2\u0007\u0010\u0000\u0000\u09e2\u09e3\u0007\n\u0000"+ + "\u0000\u09e3\u09e4\u0007\f\u0000\u0000\u09e4\u0158\u0001\u0000\u0000\u0000"+ + "\u09e5\u09e6\u0007\u000e\u0000\u0000\u09e6\u09e7\u0007\u0013\u0000\u0000"+ + "\u09e7\u09e8\u0007\u0007\u0000\u0000\u09e8\u09e9\u0007\u0019\u0000\u0000"+ + "\u09e9\u09ea\u0007\u0011\u0000\u0000\u09ea\u09eb\u0007\u0017\u0000\u0000"+ + "\u09eb\u09ec\u0007\u0016\u0000\u0000\u09ec\u09ed\u0007\r\u0000\u0000\u09ed"+ + "\u09ee\u0007\u0005\u0000\u0000\u09ee\u09ef\u0007\u0010\u0000\u0000\u09ef"+ + "\u09f0\u0007\u0011\u0000\u0000\u09f0\u09f1\u0007\u0013\u0000\u0000\u09f1"+ + "\u09f2\u0007\u0007\u0000\u0000\u09f2\u015a\u0001\u0000\u0000\u0000\u09f3"+ + "\u09f4\u0007\u000e\u0000\u0000\u09f4\u09f5\u0007\u0013\u0000\u0000\u09f5"+ + "\u09f6\u0007\u0007\u0000\u0000\u09f6\u09f7\u0007\u0007\u0000\u0000\u09f7"+ + "\u09f8\u0007\n\u0000\u0000\u09f8\u09f9\u0007\u000e\u0000\u0000\u09f9\u09fa"+ + "\u0007\u0010\u0000\u0000\u09fa\u09fb\u0007\u0011\u0000\u0000\u09fb\u09fc"+ + "\u0007\u0013\u0000\u0000\u09fc\u09fd\u0007\u0007\u0000\u0000\u09fd\u015c"+ + "\u0001\u0000\u0000\u0000\u09fe\u09ff\u0007\u000e\u0000\u0000\u09ff\u0a00"+ + "\u0007\u0013\u0000\u0000\u0a00\u0a01\u0007\u0007\u0000\u0000\u0a01\u0a02"+ + "\u0007\t\u0000\u0000\u0a02\u0a03\u0007\u0010\u0000\u0000\u0a03\u0a04\u0007"+ + "\r\u0000\u0000\u0a04\u0a05\u0007\u0005\u0000\u0000\u0a05\u0a06\u0007\u0011"+ + "\u0000\u0000\u0a06\u0a07\u0007\u0007\u0000\u0000\u0a07\u0a08\u0007\u0010"+ + "\u0000\u0000\u0a08\u0a09\u0007\t\u0000\u0000\u0a09\u015e\u0001\u0000\u0000"+ + "\u0000\u0a0a\u0a0b\u0007\u000e\u0000\u0000\u0a0b\u0a0c\u0007\u0013\u0000"+ + "\u0000\u0a0c\u0a0d\u0007\u0007\u0000\u0000\u0a0d\u0a0e\u0007\u0010\u0000"+ + "\u0000\u0a0e\u0a0f\u0007\n\u0000\u0000\u0a0f\u0a10\u0007\u0007\u0000\u0000"+ + "\u0a10\u0a11\u0007\u0010\u0000\u0000\u0a11\u0160\u0001\u0000\u0000\u0000"+ + "\u0a12\u0a13\u0007\u000e\u0000\u0000\u0a13\u0a14\u0007\u0013\u0000\u0000"+ + "\u0a14\u0a15\u0007\u0007\u0000\u0000\u0a15\u0a16\u0007\u0010\u0000\u0000"+ + "\u0a16\u0a17\u0007\u0011\u0000\u0000\u0a17\u0a18\u0007\u0007\u0000\u0000"+ + "\u0a18\u0a19\u0007\u0016\u0000\u0000\u0a19\u0a1a\u0007\n\u0000\u0000\u0a1a"+ + "\u0162\u0001\u0000\u0000\u0000\u0a1b\u0a1c\u0007\u000e\u0000\u0000\u0a1c"+ + "\u0a1d\u0007\u0013\u0000\u0000\u0a1d\u0a1e\u0007\u0007\u0000\u0000\u0a1e"+ + "\u0a1f\u0007\u001b\u0000\u0000\u0a1f\u0a20\u0007\n\u0000\u0000\u0a20\u0a21"+ + "\u0007\r\u0000\u0000\u0a21\u0a22\u0007\t\u0000\u0000\u0a22\u0a23\u0007"+ + "\u0011\u0000\u0000\u0a23\u0a24\u0007\u0013\u0000\u0000\u0a24\u0a25\u0007"+ + "\u0007\u0000\u0000\u0a25\u0164\u0001\u0000\u0000\u0000\u0a26\u0a27\u0007"+ + "\u000e\u0000\u0000\u0a27\u0a28\u0007\u0013\u0000\u0000\u0a28\u0a29\u0007"+ + "\u0018\u0000\u0000\u0a29\u0a2a\u0007\b\u0000\u0000\u0a2a\u0166\u0001\u0000"+ + "\u0000\u0000\u0a2b\u0a2c\u0007\u000e\u0000\u0000\u0a2c\u0a2d\u0007\u0013"+ + "\u0000\u0000\u0a2d\u0a2e\u0007\t\u0000\u0000\u0a2e\u0a2f\u0007\u0010\u0000"+ + "\u0000\u0a2f\u0168\u0001\u0000\u0000\u0000\u0a30\u0a31\u0007\u000e\u0000"+ + "\u0000\u0a31\u0a32\u0007\t\u0000\u0000\u0a32\u0a33\u0007\u001b\u0000\u0000"+ + "\u0a33\u016a\u0001\u0000\u0000\u0000\u0a34\u0a35\u0007\u000e\u0000\u0000"+ + "\u0a35\u0a36\u0007\u0016\u0000\u0000\u0a36\u0a37\u0007\r\u0000\u0000\u0a37"+ + "\u0a38\u0007\t\u0000\u0000\u0a38\u0a39\u0007\u0013\u0000\u0000\u0a39\u0a3a"+ + "\u0007\r\u0000\u0000\u0a3a\u016c\u0001\u0000\u0000\u0000\u0a3b\u0a3c\u0007"+ + "\u000e\u0000\u0000\u0a3c\u0a3d\u0007\b\u0000\u0000\u0a3d\u0a3e\u0007\u000e"+ + "\u0000\u0000\u0a3e\u0a3f\u0007\u0006\u0000\u0000\u0a3f\u0a40\u0007\n\u0000"+ + "\u0000\u0a40\u016e\u0001\u0000\u0000\u0000\u0a41\u0a42\u0007\f\u0000\u0000"+ + "\u0a42\u0a43\u0007\u0005\u0000\u0000\u0a43\u0a44\u0007\u0010\u0000\u0000"+ + "\u0a44\u0a45\u0007\u0005\u0000\u0000\u0a45\u0170\u0001\u0000\u0000\u0000"+ + "\u0a46\u0a47\u0007\f\u0000\u0000\u0a47\u0a48\u0007\u0005\u0000\u0000\u0a48"+ + "\u0a49\u0007\u0010\u0000\u0000\u0a49\u0a4a\u0007\u0005\u0000\u0000\u0a4a"+ + "\u0a4b\u0007\u0012\u0000\u0000\u0a4b\u0a4c\u0007\u0005\u0000\u0000\u0a4c"+ + "\u0a4d\u0007\t\u0000\u0000\u0a4d\u0a4e\u0007\n\u0000\u0000\u0a4e\u0172"+ + "\u0001\u0000\u0000\u0000\u0a4f\u0a50\u0007\f\u0000\u0000\u0a50\u0a51\u0007"+ + "\u0005\u0000\u0000\u0a51\u0a52\u0007\b\u0000\u0000\u0a52\u0174\u0001\u0000"+ + "\u0000\u0000\u0a53\u0a54\u0007\f\u0000\u0000\u0a54\u0a55\u0007\n\u0000"+ + "\u0000\u0a55\u0a56\u0007\u0005\u0000\u0000\u0a56\u0a57\u0007\u0006\u0000"+ + "\u0000\u0a57\u0a58\u0007\u0006\u0000\u0000\u0a58\u0a59\u0007\u0013\u0000"+ + "\u0000\u0a59\u0a5a\u0007\u000e\u0000\u0000\u0a5a\u0a5b\u0007\u0005\u0000"+ + "\u0000\u0a5b\u0a5c\u0007\u0010\u0000\u0000\u0a5c\u0a5d\u0007\n\u0000\u0000"+ + "\u0a5d\u0176\u0001\u0000\u0000\u0000\u0a5e\u0a5f\u0007\f\u0000\u0000\u0a5f"+ + "\u0a60\u0007\n\u0000\u0000\u0a60\u0a61\u0007\u000e\u0000\u0000\u0a61\u0a62"+ + "\u0007\u0006\u0000\u0000\u0a62\u0a63\u0007\u0005\u0000\u0000\u0a63\u0a64"+ + "\u0007\r\u0000\u0000\u0a64\u0a65\u0007\n\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\u0005"+ + "\u0000\u0000\u0a6a\u0a6b\u0007\u0016\u0000\u0000\u0a6b\u0a6c\u0007\u0006"+ + "\u0000\u0000\u0a6c\u0a6d\u0007\u0010\u0000\u0000\u0a6d\u0a6e\u0007\t\u0000"+ + "\u0000\u0a6e\u017a\u0001\u0000\u0000\u0000\u0a6f\u0a70\u0007\f\u0000\u0000"+ + "\u0a70\u0a71\u0007\n\u0000\u0000\u0a71\u0a72\u0007\u0019\u0000\u0000\u0a72"+ + "\u0a73\u0007\n\u0000\u0000\u0a73\u0a74\u0007\r\u0000\u0000\u0a74\u0a75"+ + "\u0007\r\u0000\u0000\u0a75\u0a76\u0007\n\u0000\u0000\u0a76\u0a77\u0007"+ + "\f\u0000\u0000\u0a77\u017c\u0001\u0000\u0000\u0000\u0a78\u0a79\u0007\f"+ + "\u0000\u0000\u0a79\u0a7a\u0007\n\u0000\u0000\u0a7a\u0a7b\u0007\u0019\u0000"+ + "\u0000\u0a7b\u0a7c\u0007\u0011\u0000\u0000\u0a7c\u0a7d\u0007\u0007\u0000"+ + "\u0000\u0a7d\u0a7e\u0007\n\u0000\u0000\u0a7e\u0a7f\u0007\r\u0000\u0000"+ + "\u0a7f\u017e\u0001\u0000\u0000\u0000\u0a80\u0a81\u0007\f\u0000\u0000\u0a81"+ + "\u0a82\u0007\n\u0000\u0000\u0a82\u0a83\u0007\u0006\u0000\u0000\u0a83\u0a84"+ + "\u0007\n\u0000\u0000\u0a84\u0a85\u0007\u0010\u0000\u0000\u0a85\u0a86\u0007"+ + "\n\u0000\u0000\u0a86\u0180\u0001\u0000\u0000\u0000\u0a87\u0a88\u0007\f"+ + "\u0000\u0000\u0a88\u0a89\u0007\n\u0000\u0000\u0a89\u0a8a\u0007\u0006\u0000"+ + "\u0000\u0a8a\u0a8b\u0007\u0011\u0000\u0000\u0a8b\u0a8c\u0007\u000f\u0000"+ + "\u0000\u0a8c\u0a8d\u0007\u0011\u0000\u0000\u0a8d\u0a8e\u0007\u0010\u0000"+ + "\u0000\u0a8e\u0a8f\u0007\n\u0000\u0000\u0a8f\u0a90\u0007\r\u0000\u0000"+ + "\u0a90\u0182\u0001\u0000\u0000\u0000\u0a91\u0a92\u0007\f\u0000\u0000\u0a92"+ + "\u0a93\u0007\n\u0000\u0000\u0a93\u0a94\u0007\u0006\u0000\u0000\u0a94\u0a95"+ + "\u0007\u0011\u0000\u0000\u0a95\u0a96\u0007\u000f\u0000\u0000\u0a96\u0a97"+ + "\u0007\u0011\u0000\u0000\u0a97\u0a98\u0007\u0010\u0000\u0000\u0a98\u0a99"+ + "\u0007\n\u0000\u0000\u0a99\u0a9a\u0007\r\u0000\u0000\u0a9a\u0a9b\u0007"+ + "\t\u0000\u0000\u0a9b\u0184\u0001\u0000\u0000\u0000\u0a9c\u0a9d\u0007\f"+ + "\u0000\u0000\u0a9d\u0a9e\u0007\u0011\u0000\u0000\u0a9e\u0a9f\u0007\u000e"+ + "\u0000\u0000\u0a9f\u0aa0\u0007\u0010\u0000\u0000\u0aa0\u0aa1\u0007\u0011"+ + "\u0000\u0000\u0aa1\u0aa2\u0007\u0013\u0000\u0000\u0aa2\u0aa3\u0007\u0007"+ + "\u0000\u0000\u0aa3\u0aa4\u0007\u0005\u0000\u0000\u0aa4\u0aa5\u0007\r\u0000"+ + "\u0000\u0aa5\u0aa6\u0007\b\u0000\u0000\u0aa6\u0186\u0001\u0000\u0000\u0000"+ + "\u0aa7\u0aa8\u0007\f\u0000\u0000\u0aa8\u0aa9\u0007\u0011\u0000\u0000\u0aa9"+ + "\u0aaa\u0007\t\u0000\u0000\u0aaa\u0aab\u0007\u0005\u0000\u0000\u0aab\u0aac"+ + "\u0007\u0012\u0000\u0000\u0aac\u0aad\u0007\u0006\u0000\u0000\u0aad\u0aae"+ + "\u0007\n\u0000\u0000\u0aae\u0188\u0001\u0000\u0000\u0000\u0aaf\u0ab0\u0007"+ + "\f\u0000\u0000\u0ab0\u0ab1\u0007\u0011\u0000\u0000\u0ab1\u0ab2\u0007\t"+ + "\u0000\u0000\u0ab2\u0ab3\u0007\u000e\u0000\u0000\u0ab3\u0ab4\u0007\u0005"+ + "\u0000\u0000\u0ab4\u0ab5\u0007\r\u0000\u0000\u0ab5\u0ab6\u0007\f\u0000"+ + "\u0000\u0ab6\u018a\u0001\u0000\u0000\u0000\u0ab7\u0ab8\u0007\f\u0000\u0000"+ + "\u0ab8\u0ab9\u0007\u0013\u0000\u0000\u0ab9\u0aba\u0007\u000e\u0000\u0000"+ + "\u0aba\u0abb\u0007\u0016\u0000\u0000\u0abb\u0abc\u0007\u000f\u0000\u0000"+ + "\u0abc\u0abd\u0007\n\u0000\u0000\u0abd\u0abe\u0007\u0007\u0000\u0000\u0abe"+ + "\u0abf\u0007\u0010\u0000\u0000\u0abf\u018c\u0001\u0000\u0000\u0000\u0ac0"+ + "\u0ac1\u0007\f\u0000\u0000\u0ac1\u0ac2\u0007\u0013\u0000\u0000\u0ac2\u0ac3"+ + "\u0007\u000f\u0000\u0000\u0ac3\u0ac4\u0007\u0005\u0000\u0000\u0ac4\u0ac5"+ + "\u0007\u0011\u0000\u0000\u0ac5\u0ac6\u0007\u0007\u0000\u0000\u0ac6\u018e"+ + "\u0001\u0000\u0000\u0000\u0ac7\u0ac8\u0007\f\u0000\u0000\u0ac8\u0ac9\u0007"+ + "\u0013\u0000\u0000\u0ac9\u0aca\u0007\u0016\u0000\u0000\u0aca\u0acb\u0007"+ + "\u0012\u0000\u0000\u0acb\u0acc\u0007\u0006\u0000\u0000\u0acc\u0acd\u0007"+ + "\n\u0000\u0000\u0acd\u0190\u0001\u0000\u0000\u0000\u0ace\u0acf\u0007\f"+ + "\u0000\u0000\u0acf\u0ad0\u0007\r\u0000\u0000\u0ad0\u0ad1\u0007\u0013\u0000"+ + "\u0000\u0ad1\u0ad2\u0007\u0018\u0000\u0000\u0ad2\u0192\u0001\u0000\u0000"+ + "\u0000\u0ad3\u0ad4\u0007\n\u0000\u0000\u0ad4\u0ad5\u0007\u0005\u0000\u0000"+ + "\u0ad5\u0ad6\u0007\u000e\u0000\u0000\u0ad6\u0ad7\u0007\u0014\u0000\u0000"+ + "\u0ad7\u0194\u0001\u0000\u0000\u0000\u0ad8\u0ad9\u0007\n\u0000\u0000\u0ad9"+ + "\u0ada\u0007\u0007\u0000\u0000\u0ada\u0adb\u0007\u0005\u0000\u0000\u0adb"+ + "\u0adc\u0007\u0012\u0000\u0000\u0adc\u0add\u0007\u0006\u0000\u0000\u0add"+ + "\u0ade\u0007\n\u0000\u0000\u0ade\u0196\u0001\u0000\u0000\u0000\u0adf\u0ae0"+ + "\u0007\n\u0000\u0000\u0ae0\u0ae1\u0007\u0007\u0000\u0000\u0ae1\u0ae2\u0007"+ + "\u000e\u0000\u0000\u0ae2\u0ae3\u0007\u0013\u0000\u0000\u0ae3\u0ae4\u0007"+ + "\f\u0000\u0000\u0ae4\u0ae5\u0007\u0011\u0000\u0000\u0ae5\u0ae6\u0007\u0007"+ + "\u0000\u0000\u0ae6\u0ae7\u0007\u0017\u0000\u0000\u0ae7\u0198\u0001\u0000"+ + "\u0000\u0000\u0ae8\u0ae9\u0007\n\u0000\u0000\u0ae9\u0aea\u0007\u0007\u0000"+ + "\u0000\u0aea\u0aeb\u0007\u000e\u0000\u0000\u0aeb\u0aec\u0007\r\u0000\u0000"+ + "\u0aec\u0aed\u0007\b\u0000\u0000\u0aed\u0aee\u0007\u0018\u0000\u0000\u0aee"+ + "\u0aef\u0007\u0010\u0000\u0000\u0aef\u0af0\u0007\n\u0000\u0000\u0af0\u0af1"+ + "\u0007\f\u0000\u0000\u0af1\u019a\u0001\u0000\u0000\u0000\u0af2\u0af3\u0007"+ + "\n\u0000\u0000\u0af3\u0af4\u0007\u0007\u0000\u0000\u0af4\u0af5\u0007\u0016"+ + "\u0000\u0000\u0af5\u0af6\u0007\u000f\u0000\u0000\u0af6\u019c\u0001\u0000"+ + "\u0000\u0000\u0af7\u0af8\u0007\n\u0000\u0000\u0af8\u0af9\u0007\t\u0000"+ + "\u0000\u0af9\u0afa\u0007\u000e\u0000\u0000\u0afa\u0afb\u0007\u0005\u0000"+ + "\u0000\u0afb\u0afc\u0007\u0018\u0000\u0000\u0afc\u0afd\u0007\n\u0000\u0000"+ + "\u0afd\u019e\u0001\u0000\u0000\u0000\u0afe\u0aff\u0007\n\u0000\u0000\u0aff"+ + "\u0b00\u0007\u001b\u0000\u0000\u0b00\u0b01\u0007\n\u0000\u0000\u0b01\u0b02"+ + "\u0007\u0007\u0000\u0000\u0b02\u0b03\u0007\u0010\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"+ + "\f\u0000\u0000\u0b0a\u0b0b\u0007\n\u0000\u0000\u0b0b\u01a2\u0001\u0000"+ + "\u0000\u0000\u0b0c\u0b0d\u0007\n\u0000\u0000\u0b0d\u0b0e\u0007\u001a\u0000"+ + "\u0000\u0b0e\u0b0f\u0007\u000e\u0000\u0000\u0b0f\u0b10\u0007\u0006\u0000"+ + "\u0000\u0b10\u0b11\u0007\u0016\u0000\u0000\u0b11\u0b12\u0007\f\u0000\u0000"+ + "\u0b12\u0b13\u0007\u0011\u0000\u0000\u0b13\u0b14\u0007\u0007\u0000\u0000"+ + "\u0b14\u0b15\u0007\u0017\u0000\u0000\u0b15\u01a4\u0001\u0000\u0000\u0000"+ + "\u0b16\u0b17\u0007\n\u0000\u0000\u0b17\u0b18\u0007\u001a\u0000\u0000\u0b18"+ + "\u0b19\u0007\u000e\u0000\u0000\u0b19\u0b1a\u0007\u0006\u0000\u0000\u0b1a"+ + "\u0b1b\u0007\u0016\u0000\u0000\u0b1b\u0b1c\u0007\t\u0000\u0000\u0b1c\u0b1d"+ + "\u0007\u0011\u0000\u0000\u0b1d\u0b1e\u0007\u001b\u0000\u0000\u0b1e\u0b1f"+ + "\u0007\n\u0000\u0000\u0b1f\u01a6\u0001\u0000\u0000\u0000\u0b20\u0b21\u0007"+ + "\n\u0000\u0000\u0b21\u0b22\u0007\u001a\u0000\u0000\u0b22\u0b23\u0007\n"+ + "\u0000\u0000\u0b23\u0b24\u0007\u000e\u0000\u0000\u0b24\u0b25\u0007\u0016"+ + "\u0000\u0000\u0b25\u0b26\u0007\u0010\u0000\u0000\u0b26\u0b27\u0007\n\u0000"+ + "\u0000\u0b27\u01a8\u0001\u0000\u0000\u0000\u0b28\u0b29\u0007\n\u0000\u0000"+ + "\u0b29\u0b2a\u0007\u001a\u0000\u0000\u0b2a\u0b2b\u0007\u0018\u0000\u0000"+ + "\u0b2b\u0b2c\u0007\u0006\u0000\u0000\u0b2c\u0b2d\u0007\u0005\u0000\u0000"+ + "\u0b2d\u0b2e\u0007\u0011\u0000\u0000\u0b2e\u0b2f\u0007\u0007\u0000\u0000"+ + "\u0b2f\u01aa\u0001\u0000\u0000\u0000\u0b30\u0b31\u0007\n\u0000\u0000\u0b31"+ + "\u0b32\u0007\u001a\u0000\u0000\u0b32\u0b33\u0007\u0010\u0000\u0000\u0b33"+ + "\u0b34\u0007\n\u0000\u0000\u0b34\u0b35\u0007\u0007\u0000\u0000\u0b35\u0b36"+ + "\u0007\t\u0000\u0000\u0b36\u0b37\u0007\u0011\u0000\u0000\u0b37\u0b38\u0007"+ + "\u0013\u0000\u0000\u0b38\u0b39\u0007\u0007\u0000\u0000\u0b39\u01ac\u0001"+ + "\u0000\u0000\u0000\u0b3a\u0b3b\u0007\n\u0000\u0000\u0b3b\u0b3c\u0007\u001a"+ + "\u0000\u0000\u0b3c\u0b3d\u0007\u0010\u0000\u0000\u0b3d\u0b3e\u0007\n\u0000"+ + "\u0000\u0b3e\u0b3f\u0007\r\u0000\u0000\u0b3f\u0b40\u0007\u0007\u0000\u0000"+ + "\u0b40\u0b41\u0007\u0005\u0000\u0000\u0b41\u0b42\u0007\u0006\u0000\u0000"+ + "\u0b42\u01ae\u0001\u0000\u0000\u0000\u0b43\u0b44\u0007\u0019\u0000\u0000"+ + "\u0b44\u0b45\u0007\u0005\u0000\u0000\u0b45\u0b46\u0007\u000f\u0000\u0000"+ + "\u0b46\u0b47\u0007\u0011\u0000\u0000\u0b47\u0b48\u0007\u0006\u0000\u0000"+ + "\u0b48\u0b49\u0007\b\u0000\u0000\u0b49\u01b0\u0001\u0000\u0000\u0000\u0b4a"+ + "\u0b4b\u0007\u0019\u0000\u0000\u0b4b\u0b4c\u0007\u0011\u0000\u0000\u0b4c"+ + "\u0b4d\u0007\r\u0000\u0000\u0b4d\u0b4e\u0007\t\u0000\u0000\u0b4e\u0b4f"+ + "\u0007\u0010\u0000\u0000\u0b4f\u01b2\u0001\u0000\u0000\u0000\u0b50\u0b51"+ + "\u0007\u0019\u0000\u0000\u0b51\u0b52\u0007\u0013\u0000\u0000\u0b52\u0b53"+ + "\u0007\u0006\u0000\u0000\u0b53\u0b54\u0007\u0006\u0000\u0000\u0b54\u0b55"+ + "\u0007\u0013\u0000\u0000\u0b55\u0b56\u0007\u001c\u0000\u0000\u0b56\u0b57"+ + "\u0007\u0011\u0000\u0000\u0b57\u0b58\u0007\u0007\u0000\u0000\u0b58\u0b59"+ + "\u0007\u0017\u0000\u0000\u0b59\u01b4\u0001\u0000\u0000\u0000\u0b5a\u0b5b"+ + "\u0007\u0019\u0000\u0000\u0b5b\u0b5c\u0007\u0013\u0000\u0000\u0b5c\u0b5d"+ + "\u0007\r\u0000\u0000\u0b5d\u0b5e\u0007\u000e\u0000\u0000\u0b5e\u0b5f\u0007"+ + "\n\u0000\u0000\u0b5f\u01b6\u0001\u0000\u0000\u0000\u0b60\u0b61\u0007\u0019"+ + "\u0000\u0000\u0b61\u0b62\u0007\u0013\u0000\u0000\u0b62\u0b63\u0007\r\u0000"+ + "\u0000\u0b63\u0b64\u0007\u001c\u0000\u0000\u0b64\u0b65\u0007\u0005\u0000"+ + "\u0000\u0b65\u0b66\u0007\r\u0000\u0000\u0b66\u0b67\u0007\f\u0000\u0000"+ + "\u0b67\u01b8\u0001\u0000\u0000\u0000\u0b68\u0b69\u0007\u0019\u0000\u0000"+ + "\u0b69\u0b6a\u0007\u0016\u0000\u0000\u0b6a\u0b6b\u0007\u0007\u0000\u0000"+ + "\u0b6b\u0b6c\u0007\u000e\u0000\u0000\u0b6c\u0b6d\u0007\u0010\u0000\u0000"+ + "\u0b6d\u0b6e\u0007\u0011\u0000\u0000\u0b6e\u0b6f\u0007\u0013\u0000\u0000"+ + "\u0b6f\u0b70\u0007\u0007\u0000\u0000\u0b70\u01ba\u0001\u0000\u0000\u0000"+ + "\u0b71\u0b72\u0007\u0019\u0000\u0000\u0b72\u0b73\u0007\u0016\u0000\u0000"+ + "\u0b73\u0b74\u0007\u0007\u0000\u0000\u0b74\u0b75\u0007\u000e\u0000\u0000"+ + "\u0b75\u0b76\u0007\u0010\u0000\u0000\u0b76\u0b77\u0007\u0011\u0000\u0000"+ + "\u0b77\u0b78\u0007\u0013\u0000\u0000\u0b78\u0b79\u0007\u0007\u0000\u0000"+ + "\u0b79\u0b7a\u0007\t\u0000\u0000\u0b7a\u01bc\u0001\u0000\u0000\u0000\u0b7b"+ + "\u0b7c\u0007\u0017\u0000\u0000\u0b7c\u0b7d\u0007\u0006\u0000\u0000\u0b7d"+ + "\u0b7e\u0007\u0013\u0000\u0000\u0b7e\u0b7f\u0007\u0012\u0000\u0000\u0b7f"+ + "\u0b80\u0007\u0005\u0000\u0000\u0b80\u0b81\u0007\u0006\u0000\u0000\u0b81"+ + "\u01be\u0001\u0000\u0000\u0000\u0b82\u0b83\u0007\u0017\u0000\u0000\u0b83"+ + "\u0b84\u0007\r\u0000\u0000\u0b84\u0b85\u0007\u0005\u0000\u0000\u0b85\u0b86"+ + "\u0007\u0007\u0000\u0000\u0b86\u0b87\u0007\u0010\u0000\u0000\u0b87\u0b88"+ + "\u0007\n\u0000\u0000\u0b88\u0b89\u0007\f\u0000\u0000\u0b89\u01c0\u0001"+ + "\u0000\u0000\u0000\u0b8a\u0b8b\u0007\u0014\u0000\u0000\u0b8b\u0b8c\u0007"+ + "\u0005\u0000\u0000\u0b8c\u0b8d\u0007\u0007\u0000\u0000\u0b8d\u0b8e\u0007"+ + "\f\u0000\u0000\u0b8e\u0b8f\u0007\u0006\u0000\u0000\u0b8f\u0b90\u0007\n"+ + "\u0000\u0000\u0b90\u0b91\u0007\r\u0000\u0000\u0b91\u01c2\u0001\u0000\u0000"+ + "\u0000\u0b92\u0b93\u0007\u0014\u0000\u0000\u0b93\u0b94\u0007\n\u0000\u0000"+ + "\u0b94\u0b95\u0007\u0005\u0000\u0000\u0b95\u0b96\u0007\f\u0000\u0000\u0b96"+ + "\u0b97\u0007\n\u0000\u0000\u0b97\u0b98\u0007\r\u0000\u0000\u0b98\u01c4"+ + "\u0001\u0000\u0000\u0000\u0b99\u0b9a\u0007\u0014\u0000\u0000\u0b9a\u0b9b"+ + "\u0007\u0013\u0000\u0000\u0b9b\u0b9c\u0007\u0006\u0000\u0000\u0b9c\u0b9d"+ + "\u0007\f\u0000\u0000\u0b9d\u01c6\u0001\u0000\u0000\u0000\u0b9e\u0b9f\u0007"+ + "\u0014\u0000\u0000\u0b9f\u0ba0\u0007\u0013\u0000\u0000\u0ba0\u0ba1\u0007"+ + "\u0016\u0000\u0000\u0ba1\u0ba2\u0007\r\u0000\u0000\u0ba2\u01c8\u0001\u0000"+ + "\u0000\u0000\u0ba3\u0ba4\u0007\u0011\u0000\u0000\u0ba4\u0ba5\u0007\f\u0000"+ + "\u0000\u0ba5\u0ba6\u0007\n\u0000\u0000\u0ba6\u0ba7\u0007\u0007\u0000\u0000"+ + "\u0ba7\u0ba8\u0007\u0010\u0000\u0000\u0ba8\u0ba9\u0007\u0011\u0000\u0000"+ + "\u0ba9\u0baa\u0007\u0010\u0000\u0000\u0baa\u0bab\u0007\b\u0000\u0000\u0bab"+ + "\u01ca\u0001\u0000\u0000\u0000\u0bac\u0bad\u0007\u0011\u0000\u0000\u0bad"+ + "\u0bae\u0007\u0019\u0000\u0000\u0bae\u01cc\u0001\u0000\u0000\u0000\u0baf"+ + "\u0bb0\u0007\u0011\u0000\u0000\u0bb0\u0bb1\u0007\u000f\u0000\u0000\u0bb1"+ + "\u0bb2\u0007\u000f\u0000\u0000\u0bb2\u0bb3\u0007\n\u0000\u0000\u0bb3\u0bb4"+ + "\u0007\f\u0000\u0000\u0bb4\u0bb5\u0007\u0011\u0000\u0000\u0bb5\u0bb6\u0007"+ + "\u0005\u0000\u0000\u0bb6\u0bb7\u0007\u0010\u0000\u0000\u0bb7\u0bb8\u0007"+ + "\n\u0000\u0000\u0bb8\u01ce\u0001\u0000\u0000\u0000\u0bb9\u0bba\u0007\u0011"+ + "\u0000\u0000\u0bba\u0bbb\u0007\u000f\u0000\u0000\u0bbb\u0bbc\u0007\u000f"+ + "\u0000\u0000\u0bbc\u0bbd\u0007\u0016\u0000\u0000\u0bbd\u0bbe\u0007\u0010"+ + "\u0000\u0000\u0bbe\u0bbf\u0007\u0005\u0000\u0000\u0bbf\u0bc0\u0007\u0012"+ + "\u0000\u0000\u0bc0\u0bc1\u0007\u0006\u0000\u0000\u0bc1\u0bc2\u0007\n\u0000"+ + "\u0000\u0bc2\u01d0\u0001\u0000\u0000\u0000\u0bc3\u0bc4\u0007\u0011\u0000"+ + "\u0000\u0bc4\u0bc5\u0007\u000f\u0000\u0000\u0bc5\u0bc6\u0007\u0018\u0000"+ + "\u0000\u0bc6\u0bc7\u0007\u0006\u0000\u0000\u0bc7\u0bc8\u0007\u0011\u0000"+ + "\u0000\u0bc8\u0bc9\u0007\u000e\u0000\u0000\u0bc9\u0bca\u0007\u0011\u0000"+ + "\u0000\u0bca\u0bcb\u0007\u0010\u0000\u0000\u0bcb\u01d2\u0001\u0000\u0000"+ + "\u0000\u0bcc\u0bcd\u0007\u0011\u0000\u0000\u0bcd\u0bce\u0007\u0007\u0000"+ + "\u0000\u0bce\u0bcf\u0007\u000e\u0000\u0000\u0bcf\u0bd0\u0007\u0006\u0000"+ + "\u0000\u0bd0\u0bd1\u0007\u0016\u0000\u0000\u0bd1\u0bd2\u0007\f\u0000\u0000"+ + "\u0bd2\u0bd3\u0007\u0011\u0000\u0000\u0bd3\u0bd4\u0007\u0007\u0000\u0000"+ + "\u0bd4\u0bd5\u0007\u0017\u0000\u0000\u0bd5\u01d4\u0001\u0000\u0000\u0000"+ + "\u0bd6\u0bd7\u0007\u0011\u0000\u0000\u0bd7\u0bd8\u0007\u0007\u0000\u0000"+ + "\u0bd8\u0bd9\u0007\u000e\u0000\u0000\u0bd9\u0bda\u0007\r\u0000\u0000\u0bda"+ + "\u0bdb\u0007\n\u0000\u0000\u0bdb\u0bdc\u0007\u000f\u0000\u0000\u0bdc\u0bdd"+ + "\u0007\n\u0000\u0000\u0bdd\u0bde\u0007\u0007\u0000\u0000\u0bde\u0bdf\u0007"+ + "\u0010\u0000\u0000\u0bdf\u01d6\u0001\u0000\u0000\u0000\u0be0\u0be1\u0007"+ + "\u0011\u0000\u0000\u0be1\u0be2\u0007\u0007\u0000\u0000\u0be2\u0be3\u0007"+ + "\f\u0000\u0000\u0be3\u0be4\u0007\n\u0000\u0000\u0be4\u0be5\u0007\u001a"+ + "\u0000\u0000\u0be5\u01d8\u0001\u0000\u0000\u0000\u0be6\u0be7\u0007\u0011"+ + "\u0000\u0000\u0be7\u0be8\u0007\u0007\u0000\u0000\u0be8\u0be9\u0007\f\u0000"+ + "\u0000\u0be9\u0bea\u0007\n\u0000\u0000\u0bea\u0beb\u0007\u001a\u0000\u0000"+ + "\u0beb\u0bec\u0007\n\u0000\u0000\u0bec\u0bed\u0007\t\u0000\u0000\u0bed"+ + "\u01da\u0001\u0000\u0000\u0000\u0bee\u0bef\u0007\u0011\u0000\u0000\u0bef"+ + "\u0bf0\u0007\u0007\u0000\u0000\u0bf0\u0bf1\u0007\u0014\u0000\u0000\u0bf1"+ + "\u0bf2\u0007\n\u0000\u0000\u0bf2\u0bf3\u0007\r\u0000\u0000\u0bf3\u0bf4"+ + "\u0007\u0011\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\u0014\u0000\u0000\u0bf9\u0bfa"+ + "\u0007\n\u0000\u0000\u0bfa\u0bfb\u0007\r\u0000\u0000\u0bfb\u0bfc\u0007"+ + "\u0011\u0000\u0000\u0bfc\u0bfd\u0007\u0010\u0000\u0000\u0bfd\u0bfe\u0007"+ + "\t\u0000\u0000\u0bfe\u01de\u0001\u0000\u0000\u0000\u0bff\u0c00\u0007\u0011"+ + "\u0000\u0000\u0c00\u0c01\u0007\u0007\u0000\u0000\u0c01\u0c02\u0007\u0006"+ + "\u0000\u0000\u0c02\u0c03\u0007\u0011\u0000\u0000\u0c03\u0c04\u0007\u0007"+ + "\u0000\u0000\u0c04\u0c05\u0007\n\u0000\u0000\u0c05\u01e0\u0001\u0000\u0000"+ + "\u0000\u0c06\u0c07\u0007\u0011\u0000\u0000\u0c07\u0c08\u0007\u0007\u0000"+ + "\u0000\u0c08\u0c09\u0007\t\u0000\u0000\u0c09\u0c0a\u0007\n\u0000\u0000"+ + "\u0c0a\u0c0b\u0007\u0007\u0000\u0000\u0c0b\u0c0c\u0007\t\u0000\u0000\u0c0c"+ + "\u0c0d\u0007\u0011\u0000\u0000\u0c0d\u0c0e\u0007\u0010\u0000\u0000\u0c0e"+ + "\u0c0f\u0007\u0011\u0000\u0000\u0c0f\u0c10\u0007\u001b\u0000\u0000\u0c10"+ + "\u0c11\u0007\n\u0000\u0000\u0c11\u01e2\u0001\u0000\u0000\u0000\u0c12\u0c13"+ + "\u0007\u0011\u0000\u0000\u0c13\u0c14\u0007\u0007\u0000\u0000\u0c14\u0c15"+ + "\u0007\t\u0000\u0000\u0c15\u0c16\u0007\n\u0000\u0000\u0c16\u0c17\u0007"+ + "\r\u0000\u0000\u0c17\u0c18\u0007\u0010\u0000\u0000\u0c18\u01e4\u0001\u0000"+ + "\u0000\u0000\u0c19\u0c1a\u0007\u0011\u0000\u0000\u0c1a\u0c1b\u0007\u0007"+ + "\u0000\u0000\u0c1b\u0c1c\u0007\t\u0000\u0000\u0c1c\u0c1d\u0007\u0010\u0000"+ + "\u0000\u0c1d\u0c1e\u0007\n\u0000\u0000\u0c1e\u0c1f\u0007\u0005\u0000\u0000"+ + "\u0c1f\u0c20\u0007\f\u0000\u0000\u0c20\u01e6\u0001\u0000\u0000\u0000\u0c21"+ + "\u0c22\u0007\u0011\u0000\u0000\u0c22\u0c23\u0007\u0007\u0000\u0000\u0c23"+ + "\u0c24\u0007\u001b\u0000\u0000\u0c24\u0c25\u0007\u0013\u0000\u0000\u0c25"+ + "\u0c26\u0007\u0015\u0000\u0000\u0c26\u0c27\u0007\n\u0000\u0000\u0c27\u0c28"+ + "\u0007\r\u0000\u0000\u0c28\u01e8\u0001\u0000\u0000\u0000\u0c29\u0c2a\u0007"+ + "\u0011\u0000\u0000\u0c2a\u0c2b\u0007\t\u0000\u0000\u0c2b\u0c2c\u0007\u0013"+ + "\u0000\u0000\u0c2c\u0c2d\u0007\u0006\u0000\u0000\u0c2d\u0c2e\u0007\u0005"+ + "\u0000\u0000\u0c2e\u0c2f\u0007\u0010\u0000\u0000\u0c2f\u0c30\u0007\u0011"+ + "\u0000\u0000\u0c30\u0c31\u0007\u0013\u0000\u0000\u0c31\u0c32\u0007\u0007"+ + "\u0000\u0000\u0c32\u01ea\u0001\u0000\u0000\u0000\u0c33\u0c34\u0007\u0015"+ + "\u0000\u0000\u0c34\u0c35\u0007\n\u0000\u0000\u0c35\u0c36\u0007\b\u0000"+ + "\u0000\u0c36\u01ec\u0001\u0000\u0000\u0000\u0c37\u0c38\u0007\u0006\u0000"+ + "\u0000\u0c38\u0c39\u0007\u0005\u0000\u0000\u0c39\u0c3a\u0007\u0012\u0000"+ + "\u0000\u0c3a\u0c3b\u0007\n\u0000\u0000\u0c3b\u0c3c\u0007\u0006\u0000\u0000"+ + "\u0c3c\u01ee\u0001\u0000\u0000\u0000\u0c3d\u0c3e\u0007\u0006\u0000\u0000"+ + "\u0c3e\u0c3f\u0007\u0005\u0000\u0000\u0c3f\u0c40\u0007\u0007\u0000\u0000"+ + "\u0c40\u0c41\u0007\u0017\u0000\u0000\u0c41\u0c42\u0007\u0016\u0000\u0000"+ + "\u0c42\u0c43\u0007\u0005\u0000\u0000\u0c43\u0c44\u0007\u0017\u0000\u0000"+ + "\u0c44\u0c45\u0007\n\u0000\u0000\u0c45\u01f0\u0001\u0000\u0000\u0000\u0c46"+ + "\u0c47\u0007\u0006\u0000\u0000\u0c47\u0c48\u0007\u0005\u0000\u0000\u0c48"+ + "\u0c49\u0007\r\u0000\u0000\u0c49\u0c4a\u0007\u0017\u0000\u0000\u0c4a\u0c4b"+ + "\u0007\n\u0000\u0000\u0c4b\u01f2\u0001\u0000\u0000\u0000\u0c4c\u0c4d\u0007"+ + "\u0006\u0000\u0000\u0c4d\u0c4e\u0007\u0005\u0000\u0000\u0c4e\u0c4f\u0007"+ + "\t\u0000\u0000\u0c4f\u0c50\u0007\u0010\u0000\u0000\u0c50\u01f4\u0001\u0000"+ + "\u0000\u0000\u0c51\u0c52\u0007\u0006\u0000\u0000\u0c52\u0c53\u0007\n\u0000"+ + "\u0000\u0c53\u0c54\u0007\u0005\u0000\u0000\u0c54\u0c55\u0007\u0015\u0000"+ + "\u0000\u0c55\u0c56\u0007\u0018\u0000\u0000\u0c56\u0c57\u0007\r\u0000\u0000"+ + "\u0c57\u0c58\u0007\u0013\u0000\u0000\u0c58\u0c59\u0007\u0013\u0000\u0000"+ + "\u0c59\u0c5a\u0007\u0019\u0000\u0000\u0c5a\u01f6\u0001\u0000\u0000\u0000"+ + "\u0c5b\u0c5c\u0007\u0006\u0000\u0000\u0c5c\u0c5d\u0007\n\u0000\u0000\u0c5d"+ + "\u0c5e\u0007\u001b\u0000\u0000\u0c5e\u0c5f\u0007\n\u0000\u0000\u0c5f\u0c60"+ + "\u0007\u0006\u0000\u0000\u0c60\u01f8\u0001\u0000\u0000\u0000\u0c61\u0c62"+ + "\u0007\u0006\u0000\u0000\u0c62\u0c63\u0007\u0011\u0000\u0000\u0c63\u0c64"+ + "\u0007\t\u0000\u0000\u0c64\u0c65\u0007\u0010\u0000\u0000\u0c65\u0c66\u0007"+ + "\n\u0000\u0000\u0c66\u0c67\u0007\u0007\u0000\u0000\u0c67\u01fa\u0001\u0000"+ + "\u0000\u0000\u0c68\u0c69\u0007\u0006\u0000\u0000\u0c69\u0c6a\u0007\u0013"+ + "\u0000\u0000\u0c6a\u0c6b\u0007\u0005\u0000\u0000\u0c6b\u0c6c\u0007\f\u0000"+ + "\u0000\u0c6c\u01fc\u0001\u0000\u0000\u0000\u0c6d\u0c6e\u0007\u0006\u0000"+ + "\u0000\u0c6e\u0c6f\u0007\u0013\u0000\u0000\u0c6f\u0c70\u0007\u000e\u0000"+ + "\u0000\u0c70\u0c71\u0007\u0005\u0000\u0000\u0c71\u0c72\u0007\u0006\u0000"+ + "\u0000\u0c72\u01fe\u0001\u0000\u0000\u0000\u0c73\u0c74\u0007\u0006\u0000"+ + "\u0000\u0c74\u0c75\u0007\u0013\u0000\u0000\u0c75\u0c76\u0007\u000e\u0000"+ + "\u0000\u0c76\u0c77\u0007\u0005\u0000\u0000\u0c77\u0c78\u0007\u0010\u0000"+ + "\u0000\u0c78\u0c79\u0007\u0011\u0000\u0000\u0c79\u0c7a\u0007\u0013\u0000"+ + "\u0000\u0c7a\u0c7b\u0007\u0007\u0000\u0000\u0c7b\u0200\u0001\u0000\u0000"+ + "\u0000\u0c7c\u0c7d\u0007\u0006\u0000\u0000\u0c7d\u0c7e\u0007\u0013\u0000"+ + "\u0000\u0c7e\u0c7f\u0007\u000e\u0000\u0000\u0c7f\u0c80\u0007\u0015\u0000"+ + "\u0000\u0c80\u0202\u0001\u0000\u0000\u0000\u0c81\u0c82\u0007\u000f\u0000"+ + "\u0000\u0c82\u0c83\u0007\u0005\u0000\u0000\u0c83\u0c84\u0007\u0018\u0000"+ + "\u0000\u0c84\u0c85\u0007\u0018\u0000\u0000\u0c85\u0c86\u0007\u0011\u0000"+ + "\u0000\u0c86\u0c87\u0007\u0007\u0000\u0000\u0c87\u0c88\u0007\u0017\u0000"+ + "\u0000\u0c88\u0204\u0001\u0000\u0000\u0000\u0c89\u0c8a\u0007\u000f\u0000"+ + "\u0000\u0c8a\u0c8b\u0007\u0005\u0000\u0000\u0c8b\u0c8c\u0007\u0010\u0000"+ + "\u0000\u0c8c\u0c8d\u0007\u000e\u0000\u0000\u0c8d\u0c8e\u0007\u0014\u0000"+ + "\u0000\u0c8e\u0206\u0001\u0000\u0000\u0000\u0c8f\u0c90\u0007\u000f\u0000"+ + "\u0000\u0c90\u0c91\u0007\u0005\u0000\u0000\u0c91\u0c92\u0007\u0010\u0000"+ + "\u0000\u0c92\u0c93\u0007\u000e\u0000\u0000\u0c93\u0c94\u0007\u0014\u0000"+ + "\u0000\u0c94\u0c95\u0007\n\u0000\u0000\u0c95\u0c96\u0007\f\u0000\u0000"+ + "\u0c96\u0208\u0001\u0000\u0000\u0000\u0c97\u0c98\u0007\u000f\u0000\u0000"+ + "\u0c98\u0c99\u0007\u0005\u0000\u0000\u0c99\u0c9a\u0007\u0010\u0000\u0000"+ + "\u0c9a\u0c9b\u0007\n\u0000\u0000\u0c9b\u0c9c\u0007\r\u0000\u0000\u0c9c"+ + "\u0c9d\u0007\u0011\u0000\u0000\u0c9d\u0c9e\u0007\u0005\u0000\u0000\u0c9e"+ + "\u0c9f\u0007\u0006\u0000\u0000\u0c9f\u0ca0\u0007\u0011\u0000\u0000\u0ca0"+ + "\u0ca1\u0007\u000b\u0000\u0000\u0ca1\u0ca2\u0007\n\u0000\u0000\u0ca2\u0ca3"+ + "\u0007\f\u0000\u0000\u0ca3\u020a\u0001\u0000\u0000\u0000\u0ca4\u0ca5\u0007"+ + "\u000f\u0000\u0000\u0ca5\u0ca6\u0007\u0005\u0000\u0000\u0ca6\u0ca7\u0007"+ + "\u001a\u0000\u0000\u0ca7\u0ca8\u0007\u001b\u0000\u0000\u0ca8\u0ca9\u0007"+ + "\u0005\u0000\u0000\u0ca9\u0caa\u0007\u0006\u0000\u0000\u0caa\u0cab\u0007"+ + "\u0016\u0000\u0000\u0cab\u0cac\u0007\n\u0000\u0000\u0cac\u020c\u0001\u0000"+ + "\u0000\u0000\u0cad\u0cae\u0007\u000f\u0000\u0000\u0cae\u0caf\u0007\n\u0000"+ + "\u0000\u0caf\u0cb0\u0007\r\u0000\u0000\u0cb0\u0cb1\u0007\u0017\u0000\u0000"+ + "\u0cb1\u0cb2\u0007\n\u0000\u0000\u0cb2\u020e\u0001\u0000\u0000\u0000\u0cb3"+ + "\u0cb4\u0007\u000f\u0000\u0000\u0cb4\u0cb5\u0007\u0011\u0000\u0000\u0cb5"+ + "\u0cb6\u0007\u0007\u0000\u0000\u0cb6\u0cb7\u0007\u0016\u0000\u0000\u0cb7"+ + "\u0cb8\u0007\u0010\u0000\u0000\u0cb8\u0cb9\u0007\n\u0000\u0000\u0cb9\u0210"+ + "\u0001\u0000\u0000\u0000\u0cba\u0cbb\u0007\u000f\u0000\u0000\u0cbb\u0cbc"+ + "\u0007\u0011\u0000\u0000\u0cbc\u0cbd\u0007\u0007\u0000\u0000\u0cbd\u0cbe"+ + "\u0007\u001b\u0000\u0000\u0cbe\u0cbf\u0007\u0005\u0000\u0000\u0cbf\u0cc0"+ + "\u0007\u0006\u0000\u0000\u0cc0\u0cc1\u0007\u0016\u0000\u0000\u0cc1\u0cc2"+ + "\u0007\n\u0000\u0000\u0cc2\u0212\u0001\u0000\u0000\u0000\u0cc3\u0cc4\u0007"+ + "\u000f\u0000\u0000\u0cc4\u0cc5\u0007\u0013\u0000\u0000\u0cc5\u0cc6\u0007"+ + "\f\u0000\u0000\u0cc6\u0cc7\u0007\n\u0000\u0000\u0cc7\u0214\u0001\u0000"+ + "\u0000\u0000\u0cc8\u0cc9\u0007\u000f\u0000\u0000\u0cc9\u0cca\u0007\u0013"+ + "\u0000\u0000\u0cca\u0ccb\u0007\u0007\u0000\u0000\u0ccb\u0ccc\u0007\u0010"+ + "\u0000\u0000\u0ccc\u0ccd\u0007\u0014\u0000\u0000\u0ccd\u0216\u0001\u0000"+ + "\u0000\u0000\u0cce\u0ccf\u0007\u000f\u0000\u0000\u0ccf\u0cd0\u0007\u0013"+ + "\u0000\u0000\u0cd0\u0cd1\u0007\u001b\u0000\u0000\u0cd1\u0cd2\u0007\n\u0000"+ + "\u0000\u0cd2\u0218\u0001\u0000\u0000\u0000\u0cd3\u0cd4\u0007\u0007\u0000"+ + "\u0000\u0cd4\u0cd5\u0007\u0005\u0000\u0000\u0cd5\u0cd6\u0007\u000f\u0000"+ + "\u0000\u0cd6\u0cd7\u0007\n\u0000\u0000\u0cd7\u021a\u0001\u0000\u0000\u0000"+ + "\u0cd8\u0cd9\u0007\u0007\u0000\u0000\u0cd9\u0cda\u0007\u0005\u0000\u0000"+ + "\u0cda\u0cdb\u0007\u000f\u0000\u0000\u0cdb\u0cdc\u0007\n\u0000\u0000\u0cdc"+ + "\u0cdd\u0007\t\u0000\u0000\u0cdd\u021c\u0001\u0000\u0000\u0000\u0cde\u0cdf"+ + "\u0007\u0007\u0000\u0000\u0cdf\u0ce0\u0007\n\u0000\u0000\u0ce0\u0ce1\u0007"+ + "\u001a\u0000\u0000\u0ce1\u0ce2\u0007\u0010\u0000\u0000\u0ce2\u021e\u0001"+ + "\u0000\u0000\u0000\u0ce3\u0ce4\u0007\u0007\u0000\u0000\u0ce4\u0ce5\u0007"+ + "\u0013\u0000\u0000\u0ce5\u0220\u0001\u0000\u0000\u0000\u0ce6\u0ce7\u0007"+ + "\u0007\u0000\u0000\u0ce7\u0ce8\u0007\u0013\u0000\u0000\u0ce8\u0ce9\u0007"+ + "\u0010\u0000\u0000\u0ce9\u0cea\u0007\u0014\u0000\u0000\u0cea\u0ceb\u0007"+ + "\u0011\u0000\u0000\u0ceb\u0cec\u0007\u0007\u0000\u0000\u0cec\u0ced\u0007"+ + "\u0017\u0000\u0000\u0ced\u0222\u0001\u0000\u0000\u0000\u0cee\u0cef\u0007"+ + "\u0007\u0000\u0000\u0cef\u0cf0\u0007\u0013\u0000\u0000\u0cf0\u0cf1\u0007"+ + "\u0010\u0000\u0000\u0cf1\u0cf2\u0007\u0011\u0000\u0000\u0cf2\u0cf3\u0007"+ + "\u0019\u0000\u0000\u0cf3\u0cf4\u0007\b\u0000\u0000\u0cf4\u0224\u0001\u0000"+ + "\u0000\u0000\u0cf5\u0cf6\u0007\u0007\u0000\u0000\u0cf6\u0cf7\u0007\u0013"+ + "\u0000\u0000\u0cf7\u0cf8\u0007\u001c\u0000\u0000\u0cf8\u0cf9\u0007\u0005"+ + "\u0000\u0000\u0cf9\u0cfa\u0007\u0011\u0000\u0000\u0cfa\u0cfb\u0007\u0010"+ + "\u0000\u0000\u0cfb\u0226\u0001\u0000\u0000\u0000\u0cfc\u0cfd\u0007\u0007"+ + "\u0000\u0000\u0cfd\u0cfe\u0007\u0016\u0000\u0000\u0cfe\u0cff\u0007\u0006"+ + "\u0000\u0000\u0cff\u0d00\u0007\u0006\u0000\u0000\u0d00\u0d01\u0007\t\u0000"+ + "\u0000\u0d01\u0228\u0001\u0000\u0000\u0000\u0d02\u0d03\u0007\u0013\u0000"+ + "\u0000\u0d03\u0d04\u0007\u0012\u0000\u0000\u0d04\u0d05\u0007\u001e\u0000"+ + "\u0000\u0d05\u0d06\u0007\n\u0000\u0000\u0d06\u0d07\u0007\u000e\u0000\u0000"+ + "\u0d07\u0d08\u0007\u0010\u0000\u0000\u0d08\u022a\u0001\u0000\u0000\u0000"+ + "\u0d09\u0d0a\u0007\u0013\u0000\u0000\u0d0a\u0d0b\u0007\u0019\u0000\u0000"+ + "\u0d0b\u022c\u0001\u0000\u0000\u0000\u0d0c\u0d0d\u0007\u0013\u0000\u0000"+ + "\u0d0d\u0d0e\u0007\u0019\u0000\u0000\u0d0e\u0d0f\u0007\u0019\u0000\u0000"+ + "\u0d0f\u022e\u0001\u0000\u0000\u0000\u0d10\u0d11\u0007\u0013\u0000\u0000"+ + "\u0d11\u0d12\u0007\u0011\u0000\u0000\u0d12\u0d13\u0007\f\u0000\u0000\u0d13"+ + "\u0d14\u0007\t\u0000\u0000\u0d14\u0230\u0001\u0000\u0000\u0000\u0d15\u0d16"+ + "\u0007\u0013\u0000\u0000\u0d16\u0d17\u0007\u0018\u0000\u0000\u0d17\u0d18"+ + "\u0007\n\u0000\u0000\u0d18\u0d19\u0007\r\u0000\u0000\u0d19\u0d1a\u0007"+ + "\u0005\u0000\u0000\u0d1a\u0d1b\u0007\u0010\u0000\u0000\u0d1b\u0d1c\u0007"+ + "\u0013\u0000\u0000\u0d1c\u0d1d\u0007\r\u0000\u0000\u0d1d\u0232\u0001\u0000"+ + "\u0000\u0000\u0d1e\u0d1f\u0007\u0013\u0000\u0000\u0d1f\u0d20\u0007\u0018"+ + "\u0000\u0000\u0d20\u0d21\u0007\u0010\u0000\u0000\u0d21\u0d22\u0007\u0011"+ + "\u0000\u0000\u0d22\u0d23\u0007\u0013\u0000\u0000\u0d23\u0d24\u0007\u0007"+ + "\u0000\u0000\u0d24\u0234\u0001\u0000\u0000\u0000\u0d25\u0d26\u0007\u0013"+ + "\u0000\u0000\u0d26\u0d27\u0007\u0018\u0000\u0000\u0d27\u0d28\u0007\u0010"+ + "\u0000\u0000\u0d28\u0d29\u0007\u0011\u0000\u0000\u0d29\u0d2a\u0007\u0013"+ + "\u0000\u0000\u0d2a\u0d2b\u0007\u0007\u0000\u0000\u0d2b\u0d2c\u0007\t\u0000"+ + "\u0000\u0d2c\u0236\u0001\u0000\u0000\u0000\u0d2d\u0d2e\u0007\u0013\u0000"+ + "\u0000\u0d2e\u0d2f\u0007\u001c\u0000\u0000\u0d2f\u0d30\u0007\u0007\u0000"+ + "\u0000\u0d30\u0d31\u0007\n\u0000\u0000\u0d31\u0d32\u0007\f\u0000\u0000"+ + "\u0d32\u0238\u0001\u0000\u0000\u0000\u0d33\u0d34\u0007\u0013\u0000\u0000"+ + "\u0d34\u0d35\u0007\u001c\u0000\u0000\u0d35\u0d36\u0007\u0007\u0000\u0000"+ + "\u0d36\u0d37\u0007\n\u0000\u0000\u0d37\u0d38\u0007\r\u0000\u0000\u0d38"+ + "\u023a\u0001\u0000\u0000\u0000\u0d39\u0d3a\u0007\u0018\u0000\u0000\u0d3a"+ + "\u0d3b\u0007\u0005\u0000\u0000\u0d3b\u0d3c\u0007\r\u0000\u0000\u0d3c\u0d3d"+ + "\u0007\t\u0000\u0000\u0d3d\u0d3e\u0007\n\u0000\u0000\u0d3e\u0d3f\u0007"+ + "\r\u0000\u0000\u0d3f\u023c\u0001\u0000\u0000\u0000\u0d40\u0d41\u0007\u0018"+ + "\u0000\u0000\u0d41\u0d42\u0007\u0005\u0000\u0000\u0d42\u0d43\u0007\r\u0000"+ + "\u0000\u0d43\u0d44\u0007\u0010\u0000\u0000\u0d44\u0d45\u0007\u0011\u0000"+ + "\u0000\u0d45\u0d46\u0007\u0005\u0000\u0000\u0d46\u0d47\u0007\u0006\u0000"+ + "\u0000\u0d47\u023e\u0001\u0000\u0000\u0000\u0d48\u0d49\u0007\u0018\u0000"+ + "\u0000\u0d49\u0d4a\u0007\u0005\u0000\u0000\u0d4a\u0d4b\u0007\r\u0000\u0000"+ + "\u0d4b\u0d4c\u0007\u0010\u0000\u0000\u0d4c\u0d4d\u0007\u0011\u0000\u0000"+ + "\u0d4d\u0d4e\u0007\u0010\u0000\u0000\u0d4e\u0d4f\u0007\u0011\u0000\u0000"+ + "\u0d4f\u0d50\u0007\u0013\u0000\u0000\u0d50\u0d51\u0007\u0007\u0000\u0000"+ + "\u0d51\u0240\u0001\u0000\u0000\u0000\u0d52\u0d53\u0007\u0018\u0000\u0000"+ + "\u0d53\u0d54\u0007\u0005\u0000\u0000\u0d54\u0d55\u0007\t\u0000\u0000\u0d55"+ + "\u0d56\u0007\t\u0000\u0000\u0d56\u0d57\u0007\u0011\u0000\u0000\u0d57\u0d58"+ + "\u0007\u0007\u0000\u0000\u0d58\u0d59\u0007\u0017\u0000\u0000\u0d59\u0242"+ + "\u0001\u0000\u0000\u0000\u0d5a\u0d5b\u0007\u0018\u0000\u0000\u0d5b\u0d5c"+ + "\u0007\u0005\u0000\u0000\u0d5c\u0d5d\u0007\t\u0000\u0000\u0d5d\u0d5e\u0007"+ + "\t\u0000\u0000\u0d5e\u0d5f\u0007\u001c\u0000\u0000\u0d5f\u0d60\u0007\u0013"+ + "\u0000\u0000\u0d60\u0d61\u0007\r\u0000\u0000\u0d61\u0d62\u0007\f\u0000"+ + "\u0000\u0d62\u0244\u0001\u0000\u0000\u0000\u0d63\u0d64\u0007\u0018\u0000"+ + "\u0000\u0d64\u0d65\u0007\u0006\u0000\u0000\u0d65\u0d66\u0007\u0005\u0000"+ + "\u0000\u0d66\u0d67\u0007\u0007\u0000\u0000\u0d67\u0d68\u0007\t\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\u000e\u0000\u0000\u0d6d\u0d6e\u0007\n\u0000\u0000\u0d6e\u0d6f"+ + "\u0007\f\u0000\u0000\u0d6f\u0d70\u0007\u0011\u0000\u0000\u0d70\u0d71\u0007"+ + "\u0007\u0000\u0000\u0d71\u0d72\u0007\u0017\u0000\u0000\u0d72\u0248\u0001"+ + "\u0000\u0000\u0000\u0d73\u0d74\u0007\u0018\u0000\u0000\u0d74\u0d75\u0007"+ + "\r\u0000\u0000\u0d75\u0d76\u0007\n\u0000\u0000\u0d76\u0d77\u0007\u0018"+ + "\u0000\u0000\u0d77\u0d78\u0007\u0005\u0000\u0000\u0d78\u0d79\u0007\r\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\n\u0000\u0000\u0d7e\u0d7f\u0007\u0018\u0000\u0000\u0d7f\u0d80"+ + "\u0007\u0005\u0000\u0000\u0d80\u0d81\u0007\r\u0000\u0000\u0d81\u0d82\u0007"+ + "\n\u0000\u0000\u0d82\u0d83\u0007\f\u0000\u0000\u0d83\u024c\u0001\u0000"+ + "\u0000\u0000\u0d84\u0d85\u0007\u0018\u0000\u0000\u0d85\u0d86\u0007\r\u0000"+ + "\u0000\u0d86\u0d87\u0007\n\u0000\u0000\u0d87\u0d88\u0007\t\u0000\u0000"+ + "\u0d88\u0d89\u0007\n\u0000\u0000\u0d89\u0d8a\u0007\r\u0000\u0000\u0d8a"+ + "\u0d8b\u0007\u001b\u0000\u0000\u0d8b\u0d8c\u0007\n\u0000\u0000\u0d8c\u024e"+ + "\u0001\u0000\u0000\u0000\u0d8d\u0d8e\u0007\u0018\u0000\u0000\u0d8e\u0d8f"+ + "\u0007\r\u0000\u0000\u0d8f\u0d90\u0007\u0011\u0000\u0000\u0d90\u0d91\u0007"+ + "\u0013\u0000\u0000\u0d91\u0d92\u0007\r\u0000\u0000\u0d92\u0250\u0001\u0000"+ + "\u0000\u0000\u0d93\u0d94\u0007\u0018\u0000\u0000\u0d94\u0d95\u0007\r\u0000"+ + "\u0000\u0d95\u0d96\u0007\u0011\u0000\u0000\u0d96\u0d97\u0007\u001b\u0000"+ + "\u0000\u0d97\u0d98\u0007\u0011\u0000\u0000\u0d98\u0d99\u0007\u0006\u0000"+ + "\u0000\u0d99\u0d9a\u0007\n\u0000\u0000\u0d9a\u0d9b\u0007\u0017\u0000\u0000"+ + "\u0d9b\u0d9c\u0007\n\u0000\u0000\u0d9c\u0d9d\u0007\t\u0000\u0000\u0d9d"+ + "\u0252\u0001\u0000\u0000\u0000\u0d9e\u0d9f\u0007\u0018\u0000\u0000\u0d9f"+ + "\u0da0\u0007\r\u0000\u0000\u0da0\u0da1\u0007\u0013\u0000\u0000\u0da1\u0da2"+ + "\u0007\u000e\u0000\u0000\u0da2\u0da3\u0007\n\u0000\u0000\u0da3\u0da4\u0007"+ + "\f\u0000\u0000\u0da4\u0da5\u0007\u0016\u0000\u0000\u0da5\u0da6\u0007\r"+ + "\u0000\u0000\u0da6\u0da7\u0007\u0005\u0000\u0000\u0da7\u0da8\u0007\u0006"+ + "\u0000\u0000\u0da8\u0254\u0001\u0000\u0000\u0000\u0da9\u0daa\u0007\u0018"+ + "\u0000\u0000\u0daa\u0dab\u0007\r\u0000\u0000\u0dab\u0dac\u0007\u0013\u0000"+ + "\u0000\u0dac\u0dad\u0007\u000e\u0000\u0000\u0dad\u0dae\u0007\n\u0000\u0000"+ + "\u0dae\u0daf\u0007\f\u0000\u0000\u0daf\u0db0\u0007\u0016\u0000\u0000\u0db0"+ + "\u0db1\u0007\r\u0000\u0000\u0db1\u0db2\u0007\n\u0000\u0000\u0db2\u0256"+ + "\u0001\u0000\u0000\u0000\u0db3\u0db4\u0007\u0018\u0000\u0000\u0db4\u0db5"+ + "\u0007\r\u0000\u0000\u0db5\u0db6\u0007\u0013\u0000\u0000\u0db6\u0db7\u0007"+ + "\u0017\u0000\u0000\u0db7\u0db8\u0007\r\u0000\u0000\u0db8\u0db9\u0007\u0005"+ + "\u0000\u0000\u0db9\u0dba\u0007\u000f\u0000\u0000\u0dba\u0258\u0001\u0000"+ + "\u0000\u0000\u0dbb\u0dbc\u0007\u001d\u0000\u0000\u0dbc\u0dbd\u0007\u0016"+ + "\u0000\u0000\u0dbd\u0dbe\u0007\u0013\u0000\u0000\u0dbe\u0dbf\u0007\u0010"+ + "\u0000\u0000\u0dbf\u0dc0\u0007\n\u0000\u0000\u0dc0\u025a\u0001\u0000\u0000"+ + "\u0000\u0dc1\u0dc2\u0007\r\u0000\u0000\u0dc2\u0dc3\u0007\u0005\u0000\u0000"+ + "\u0dc3\u0dc4\u0007\u0007\u0000\u0000\u0dc4\u0dc5\u0007\u0017\u0000\u0000"+ + "\u0dc5\u0dc6\u0007\n\u0000\u0000\u0dc6\u025c\u0001\u0000\u0000\u0000\u0dc7"+ + "\u0dc8\u0007\r\u0000\u0000\u0dc8\u0dc9\u0007\n\u0000\u0000\u0dc9\u0dca"+ + "\u0007\u0005\u0000\u0000\u0dca\u0dcb\u0007\f\u0000\u0000\u0dcb\u025e\u0001"+ + "\u0000\u0000\u0000\u0dcc\u0dcd\u0007\r\u0000\u0000\u0dcd\u0dce\u0007\n"+ + "\u0000\u0000\u0dce\u0dcf\u0007\u0005\u0000\u0000\u0dcf\u0dd0\u0007\t\u0000"+ + "\u0000\u0dd0\u0dd1\u0007\t\u0000\u0000\u0dd1\u0dd2\u0007\u0011\u0000\u0000"+ + "\u0dd2\u0dd3\u0007\u0017\u0000\u0000\u0dd3\u0dd4\u0007\u0007\u0000\u0000"+ + "\u0dd4\u0260\u0001\u0000\u0000\u0000\u0dd5\u0dd6\u0007\r\u0000\u0000\u0dd6"+ + "\u0dd7\u0007\n\u0000\u0000\u0dd7\u0dd8\u0007\u000e\u0000\u0000\u0dd8\u0dd9"+ + "\u0007\u0014\u0000\u0000\u0dd9\u0dda\u0007\n\u0000\u0000\u0dda\u0ddb\u0007"+ + "\u000e\u0000\u0000\u0ddb\u0ddc\u0007\u0015\u0000\u0000\u0ddc\u0262\u0001"+ + "\u0000\u0000\u0000\u0ddd\u0dde\u0007\r\u0000\u0000\u0dde\u0ddf\u0007\n"+ + "\u0000\u0000\u0ddf\u0de0\u0007\u000e\u0000\u0000\u0de0\u0de1\u0007\u0016"+ + "\u0000\u0000\u0de1\u0de2\u0007\r\u0000\u0000\u0de2\u0de3\u0007\t\u0000"+ + "\u0000\u0de3\u0de4\u0007\u0011\u0000\u0000\u0de4\u0de5\u0007\u001b\u0000"+ + "\u0000\u0de5\u0de6\u0007\n\u0000\u0000\u0de6\u0264\u0001\u0000\u0000\u0000"+ + "\u0de7\u0de8\u0007\r\u0000\u0000\u0de8\u0de9\u0007\n\u0000\u0000\u0de9"+ + "\u0dea\u0007\u0019\u0000\u0000\u0dea\u0266\u0001\u0000\u0000\u0000\u0deb"+ + "\u0dec\u0007\r\u0000\u0000\u0dec\u0ded\u0007\n\u0000\u0000\u0ded\u0dee"+ + "\u0007\u0019\u0000\u0000\u0dee\u0def\u0007\r\u0000\u0000\u0def\u0df0\u0007"+ + "\n\u0000\u0000\u0df0\u0df1\u0007\t\u0000\u0000\u0df1\u0df2\u0007\u0014"+ + "\u0000\u0000\u0df2\u0268\u0001\u0000\u0000\u0000\u0df3\u0df4\u0007\r\u0000"+ + "\u0000\u0df4\u0df5\u0007\n\u0000\u0000\u0df5\u0df6\u0007\u0011\u0000\u0000"+ + "\u0df6\u0df7\u0007\u0007\u0000\u0000\u0df7\u0df8\u0007\f\u0000\u0000\u0df8"+ + "\u0df9\u0007\n\u0000\u0000\u0df9\u0dfa\u0007\u001a\u0000\u0000\u0dfa\u026a"+ + "\u0001\u0000\u0000\u0000\u0dfb\u0dfc\u0007\r\u0000\u0000\u0dfc\u0dfd\u0007"+ + "\n\u0000\u0000\u0dfd\u0dfe\u0007\u0006\u0000\u0000\u0dfe\u0dff\u0007\u0005"+ + "\u0000\u0000\u0dff\u0e00\u0007\u0010\u0000\u0000\u0e00\u0e01\u0007\u0011"+ + "\u0000\u0000\u0e01\u0e02\u0007\u001b\u0000\u0000\u0e02\u0e03\u0007\n\u0000"+ + "\u0000\u0e03\u026c\u0001\u0000\u0000\u0000\u0e04\u0e05\u0007\r\u0000\u0000"+ + "\u0e05\u0e06\u0007\n\u0000\u0000\u0e06\u0e07\u0007\u0006\u0000\u0000\u0e07"+ + "\u0e08\u0007\n\u0000\u0000\u0e08\u0e09\u0007\u0005\u0000\u0000\u0e09\u0e0a"+ + "\u0007\t\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\u0007\u0000\u0000\u0e0f\u0e10\u0007\u0005"+ + "\u0000\u0000\u0e10\u0e11\u0007\u000f\u0000\u0000\u0e11\u0e12\u0007\n\u0000"+ + "\u0000\u0e12\u0270\u0001\u0000\u0000\u0000\u0e13\u0e14\u0007\r\u0000\u0000"+ + "\u0e14\u0e15\u0007\n\u0000\u0000\u0e15\u0e16\u0007\u0018\u0000\u0000\u0e16"+ + "\u0e17\u0007\n\u0000\u0000\u0e17\u0e18\u0007\u0005\u0000\u0000\u0e18\u0e19"+ + "\u0007\u0010\u0000\u0000\u0e19\u0e1a\u0007\u0005\u0000\u0000\u0e1a\u0e1b"+ + "\u0007\u0012\u0000\u0000\u0e1b\u0e1c\u0007\u0006\u0000\u0000\u0e1c\u0e1d"+ + "\u0007\n\u0000\u0000\u0e1d\u0272\u0001\u0000\u0000\u0000\u0e1e\u0e1f\u0007"+ + "\r\u0000\u0000\u0e1f\u0e20\u0007\n\u0000\u0000\u0e20\u0e21\u0007\u0018"+ + "\u0000\u0000\u0e21\u0e22\u0007\u0006\u0000\u0000\u0e22\u0e23\u0007\u0005"+ + "\u0000\u0000\u0e23\u0e24\u0007\u000e\u0000\u0000\u0e24\u0e25\u0007\n\u0000"+ + "\u0000\u0e25\u0274\u0001\u0000\u0000\u0000\u0e26\u0e27\u0007\r\u0000\u0000"+ + "\u0e27\u0e28\u0007\n\u0000\u0000\u0e28\u0e29\u0007\u0018\u0000\u0000\u0e29"+ + "\u0e2a\u0007\u0006\u0000\u0000\u0e2a\u0e2b\u0007\u0011\u0000\u0000\u0e2b"+ + "\u0e2c\u0007\u000e\u0000\u0000\u0e2c\u0e2d\u0007\u0005\u0000\u0000\u0e2d"+ + "\u0276\u0001\u0000\u0000\u0000\u0e2e\u0e2f\u0007\r\u0000\u0000\u0e2f\u0e30"+ + "\u0007\n\u0000\u0000\u0e30\u0e31\u0007\t\u0000\u0000\u0e31\u0e32\u0007"+ + "\n\u0000\u0000\u0e32\u0e33\u0007\u0010\u0000\u0000\u0e33\u0278\u0001\u0000"+ + "\u0000\u0000\u0e34\u0e35\u0007\r\u0000\u0000\u0e35\u0e36\u0007\n\u0000"+ + "\u0000\u0e36\u0e37\u0007\t\u0000\u0000\u0e37\u0e38\u0007\u0010\u0000\u0000"+ + "\u0e38\u0e39\u0007\u0005\u0000\u0000\u0e39\u0e3a\u0007\r\u0000\u0000\u0e3a"+ + "\u0e3b\u0007\u0010\u0000\u0000\u0e3b\u027a\u0001\u0000\u0000\u0000\u0e3c"+ + "\u0e3d\u0007\r\u0000\u0000\u0e3d\u0e3e\u0007\n\u0000\u0000\u0e3e\u0e3f"+ + "\u0007\t\u0000\u0000\u0e3f\u0e40\u0007\u0010\u0000\u0000\u0e40\u0e41\u0007"+ + "\r\u0000\u0000\u0e41\u0e42\u0007\u0011\u0000\u0000\u0e42\u0e43\u0007\u000e"+ + "\u0000\u0000\u0e43\u0e44\u0007\u0010\u0000\u0000\u0e44\u027c\u0001\u0000"+ + "\u0000\u0000\u0e45\u0e46\u0007\r\u0000\u0000\u0e46\u0e47\u0007\n\u0000"+ + "\u0000\u0e47\u0e48\u0007\u0010\u0000\u0000\u0e48\u0e49\u0007\u0016\u0000"+ + "\u0000\u0e49\u0e4a\u0007\r\u0000\u0000\u0e4a\u0e4b\u0007\u0007\u0000\u0000"+ + "\u0e4b\u0e4c\u0007\t\u0000\u0000\u0e4c\u027e\u0001\u0000\u0000\u0000\u0e4d"+ + "\u0e4e\u0007\r\u0000\u0000\u0e4e\u0e4f\u0007\n\u0000\u0000\u0e4f\u0e50"+ + "\u0007\u001b\u0000\u0000\u0e50\u0e51\u0007\u0013\u0000\u0000\u0e51\u0e52"+ + "\u0007\u0015\u0000\u0000\u0e52\u0e53\u0007\n\u0000\u0000\u0e53\u0280\u0001"+ + "\u0000\u0000\u0000\u0e54\u0e55\u0007\r\u0000\u0000\u0e55\u0e56\u0007\u0013"+ + "\u0000\u0000\u0e56\u0e57\u0007\u0006\u0000\u0000\u0e57\u0e58\u0007\n\u0000"+ + "\u0000\u0e58\u0282\u0001\u0000\u0000\u0000\u0e59\u0e5a\u0007\r\u0000\u0000"+ + "\u0e5a\u0e5b\u0007\u0013\u0000\u0000\u0e5b\u0e5c\u0007\u0006\u0000\u0000"+ + "\u0e5c\u0e5d\u0007\u0006\u0000\u0000\u0e5d\u0e5e\u0007\u0012\u0000\u0000"+ + "\u0e5e\u0e5f\u0007\u0005\u0000\u0000\u0e5f\u0e60\u0007\u000e\u0000\u0000"+ + "\u0e60\u0e61\u0007\u0015\u0000\u0000\u0e61\u0284\u0001\u0000\u0000\u0000"+ + "\u0e62\u0e63\u0007\r\u0000\u0000\u0e63\u0e64\u0007\u0013\u0000\u0000\u0e64"+ + "\u0e65\u0007\u001c\u0000\u0000\u0e65\u0e66\u0007\t\u0000\u0000\u0e66\u0286"+ + "\u0001\u0000\u0000\u0000\u0e67\u0e68\u0007\r\u0000\u0000\u0e68\u0e69\u0007"+ + "\u0016\u0000\u0000\u0e69\u0e6a\u0007\u0006\u0000\u0000\u0e6a\u0e6b\u0007"+ + "\n\u0000\u0000\u0e6b\u0288\u0001\u0000\u0000\u0000\u0e6c\u0e6d\u0007\t"+ + "\u0000\u0000\u0e6d\u0e6e\u0007\u0005\u0000\u0000\u0e6e\u0e6f\u0007\u001b"+ + "\u0000\u0000\u0e6f\u0e70\u0007\n\u0000\u0000\u0e70\u0e71\u0007\u0018\u0000"+ + "\u0000\u0e71\u0e72\u0007\u0013\u0000\u0000\u0e72\u0e73\u0007\u0011\u0000"+ + "\u0000\u0e73\u0e74\u0007\u0007\u0000\u0000\u0e74\u0e75\u0007\u0010\u0000"+ + "\u0000\u0e75\u028a\u0001\u0000\u0000\u0000\u0e76\u0e77\u0007\t\u0000\u0000"+ + "\u0e77\u0e78\u0007\u000e\u0000\u0000\u0e78\u0e79\u0007\u0014\u0000\u0000"+ + "\u0e79\u0e7a\u0007\n\u0000\u0000\u0e7a\u0e7b\u0007\u000f\u0000\u0000\u0e7b"+ + "\u0e7c\u0007\u0005\u0000\u0000\u0e7c\u028c\u0001\u0000\u0000\u0000\u0e7d"+ + "\u0e7e\u0007\t\u0000\u0000\u0e7e\u0e7f\u0007\u000e\u0000\u0000\u0e7f\u0e80"+ + "\u0007\r\u0000\u0000\u0e80\u0e81\u0007\u0013\u0000\u0000\u0e81\u0e82\u0007"+ + "\u0006\u0000\u0000\u0e82\u0e83\u0007\u0006\u0000\u0000\u0e83\u028e\u0001"+ + "\u0000\u0000\u0000\u0e84\u0e85\u0007\t\u0000\u0000\u0e85\u0e86\u0007\n"+ + "\u0000\u0000\u0e86\u0e87\u0007\u0005\u0000\u0000\u0e87\u0e88\u0007\r\u0000"+ + "\u0000\u0e88\u0e89\u0007\u000e\u0000\u0000\u0e89\u0e8a\u0007\u0014\u0000"+ + "\u0000\u0e8a\u0290\u0001\u0000\u0000\u0000\u0e8b\u0e8c\u0007\t\u0000\u0000"+ + "\u0e8c\u0e8d\u0007\n\u0000\u0000\u0e8d\u0e8e\u0007\u000e\u0000\u0000\u0e8e"+ + "\u0e8f\u0007\u0013\u0000\u0000\u0e8f\u0e90\u0007\u0007\u0000\u0000\u0e90"+ + "\u0e91\u0007\f\u0000\u0000\u0e91\u0292\u0001\u0000\u0000\u0000\u0e92\u0e93"+ + "\u0007\t\u0000\u0000\u0e93\u0e94\u0007\n\u0000\u0000\u0e94\u0e95\u0007"+ + "\u000e\u0000\u0000\u0e95\u0e96\u0007\u0016\u0000\u0000\u0e96\u0e97\u0007"+ + "\r\u0000\u0000\u0e97\u0e98\u0007\u0011\u0000\u0000\u0e98\u0e99\u0007\u0010"+ + "\u0000\u0000\u0e99\u0e9a\u0007\b\u0000\u0000\u0e9a\u0294\u0001\u0000\u0000"+ + "\u0000\u0e9b\u0e9c\u0007\t\u0000\u0000\u0e9c\u0e9d\u0007\n\u0000\u0000"+ + "\u0e9d\u0e9e\u0007\u001d\u0000\u0000\u0e9e\u0e9f\u0007\u0016\u0000\u0000"+ + "\u0e9f\u0ea0\u0007\n\u0000\u0000\u0ea0\u0ea1\u0007\u0007\u0000\u0000\u0ea1"+ + "\u0ea2\u0007\u000e\u0000\u0000\u0ea2\u0ea3\u0007\n\u0000\u0000\u0ea3\u0296"+ + "\u0001\u0000\u0000\u0000\u0ea4\u0ea5\u0007\t\u0000\u0000\u0ea5\u0ea6\u0007"+ + "\n\u0000\u0000\u0ea6\u0ea7\u0007\u001d\u0000\u0000\u0ea7\u0ea8\u0007\u0016"+ + "\u0000\u0000\u0ea8\u0ea9\u0007\n\u0000\u0000\u0ea9\u0eaa\u0007\u0007\u0000"+ + "\u0000\u0eaa\u0eab\u0007\u000e\u0000\u0000\u0eab\u0eac\u0007\n\u0000\u0000"+ + "\u0eac\u0ead\u0007\t\u0000\u0000\u0ead\u0298\u0001\u0000\u0000\u0000\u0eae"+ + "\u0eaf\u0007\t\u0000\u0000\u0eaf\u0eb0\u0007\n\u0000\u0000\u0eb0\u0eb1"+ + "\u0007\r\u0000\u0000\u0eb1\u0eb2\u0007\u0011\u0000\u0000\u0eb2\u0eb3\u0007"+ + "\u0005\u0000\u0000\u0eb3\u0eb4\u0007\u0006\u0000\u0000\u0eb4\u0eb5\u0007"+ + "\u0011\u0000\u0000\u0eb5\u0eb6\u0007\u000b\u0000\u0000\u0eb6\u0eb7\u0007"+ + "\u0005\u0000\u0000\u0eb7\u0eb8\u0007\u0012\u0000\u0000\u0eb8\u0eb9\u0007"+ + "\u0006\u0000\u0000\u0eb9\u0eba\u0007\n\u0000\u0000\u0eba\u029a\u0001\u0000"+ + "\u0000\u0000\u0ebb\u0ebc\u0007\t\u0000\u0000\u0ebc\u0ebd\u0007\n\u0000"+ + "\u0000\u0ebd\u0ebe\u0007\r\u0000\u0000\u0ebe\u0ebf\u0007\u001b\u0000\u0000"+ + "\u0ebf\u0ec0\u0007\n\u0000\u0000\u0ec0\u0ec1\u0007\r\u0000\u0000\u0ec1"+ + "\u029c\u0001\u0000\u0000\u0000\u0ec2\u0ec3\u0007\t\u0000\u0000\u0ec3\u0ec4"+ + "\u0007\n\u0000\u0000\u0ec4\u0ec5\u0007\t\u0000\u0000\u0ec5\u0ec6\u0007"+ + "\t\u0000\u0000\u0ec6\u0ec7\u0007\u0011\u0000\u0000\u0ec7\u0ec8\u0007\u0013"+ + "\u0000\u0000\u0ec8\u0ec9\u0007\u0007\u0000\u0000\u0ec9\u029e\u0001\u0000"+ + "\u0000\u0000\u0eca\u0ecb\u0007\t\u0000\u0000\u0ecb\u0ecc\u0007\n\u0000"+ + "\u0000\u0ecc\u0ecd\u0007\u0010\u0000\u0000\u0ecd\u02a0\u0001\u0000\u0000"+ + "\u0000\u0ece\u0ecf\u0007\t\u0000\u0000\u0ecf\u0ed0\u0007\u0014\u0000\u0000"+ + "\u0ed0\u0ed1\u0007\u0005\u0000\u0000\u0ed1\u0ed2\u0007\r\u0000\u0000\u0ed2"+ + "\u0ed3\u0007\n\u0000\u0000\u0ed3\u02a2\u0001\u0000\u0000\u0000\u0ed4\u0ed5"+ + "\u0007\t\u0000\u0000\u0ed5\u0ed6\u0007\u0014\u0000\u0000\u0ed6\u0ed7\u0007"+ + "\u0013\u0000\u0000\u0ed7\u0ed8\u0007\u001c\u0000\u0000\u0ed8\u02a4\u0001"+ + "\u0000\u0000\u0000\u0ed9\u0eda\u0007\t\u0000\u0000\u0eda\u0edb\u0007\u0011"+ + "\u0000\u0000\u0edb\u0edc\u0007\u000f\u0000\u0000\u0edc\u0edd\u0007\u0018"+ + "\u0000\u0000\u0edd\u0ede\u0007\u0006\u0000\u0000\u0ede\u0edf\u0007\n\u0000"+ + "\u0000\u0edf\u02a6\u0001\u0000\u0000\u0000\u0ee0\u0ee1\u0007\t\u0000\u0000"+ + "\u0ee1\u0ee2\u0007\u0007\u0000\u0000\u0ee2\u0ee3\u0007\u0005\u0000\u0000"+ + "\u0ee3\u0ee4\u0007\u0018\u0000\u0000\u0ee4\u0ee5\u0007\t\u0000\u0000\u0ee5"+ + "\u0ee6\u0007\u0014\u0000\u0000\u0ee6\u0ee7\u0007\u0013\u0000\u0000\u0ee7"+ + "\u0ee8\u0007\u0010\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\u0012\u0000\u0000\u0eed\u0eee"+ + "\u0007\u0006\u0000\u0000\u0eee\u0eef\u0007\n\u0000\u0000\u0eef\u02aa\u0001"+ + "\u0000\u0000\u0000\u0ef0\u0ef1\u0007\t\u0000\u0000\u0ef1\u0ef2\u0007\u0010"+ + "\u0000\u0000\u0ef2\u0ef3\u0007\u0005\u0000\u0000\u0ef3\u0ef4\u0007\u0007"+ + "\u0000\u0000\u0ef4\u0ef5\u0007\f\u0000\u0000\u0ef5\u0ef6\u0007\u0005\u0000"+ + "\u0000\u0ef6\u0ef7\u0007\u0006\u0000\u0000\u0ef7\u0ef8\u0007\u0013\u0000"+ + "\u0000\u0ef8\u0ef9\u0007\u0007\u0000\u0000\u0ef9\u0efa\u0007\n\u0000\u0000"+ + "\u0efa\u02ac\u0001\u0000\u0000\u0000\u0efb\u0efc\u0007\t\u0000\u0000\u0efc"+ + "\u0efd\u0007\u0010\u0000\u0000\u0efd\u0efe\u0007\u0005\u0000\u0000\u0efe"+ + "\u0eff\u0007\r\u0000\u0000\u0eff\u0f00\u0007\u0010\u0000\u0000\u0f00\u02ae"+ + "\u0001\u0000\u0000\u0000\u0f01\u0f02\u0007\t\u0000\u0000\u0f02\u0f03\u0007"+ + "\u0010\u0000\u0000\u0f03\u0f04\u0007\u0005\u0000\u0000\u0f04\u0f05\u0007"+ + "\u0010\u0000\u0000\u0f05\u0f06\u0007\n\u0000\u0000\u0f06\u0f07\u0007\u000f"+ + "\u0000\u0000\u0f07\u0f08\u0007\n\u0000\u0000\u0f08\u0f09\u0007\u0007\u0000"+ + "\u0000\u0f09\u0f0a\u0007\u0010\u0000\u0000\u0f0a\u02b0\u0001\u0000\u0000"+ + "\u0000\u0f0b\u0f0c\u0007\t\u0000\u0000\u0f0c\u0f0d\u0007\u0010\u0000\u0000"+ + "\u0f0d\u0f0e\u0007\u0005\u0000\u0000\u0f0e\u0f0f\u0007\u0010\u0000\u0000"+ + "\u0f0f\u0f10\u0007\u0011\u0000\u0000\u0f10\u0f11\u0007\t\u0000\u0000\u0f11"+ + "\u0f12\u0007\u0010\u0000\u0000\u0f12\u0f13\u0007\u0011\u0000\u0000\u0f13"+ + "\u0f14\u0007\u000e\u0000\u0000\u0f14\u0f15\u0007\t\u0000\u0000\u0f15\u02b2"+ + "\u0001\u0000\u0000\u0000\u0f16\u0f17\u0007\t\u0000\u0000\u0f17\u0f18\u0007"+ + "\u0010\u0000\u0000\u0f18\u0f19\u0007\f\u0000\u0000\u0f19\u0f1a\u0007\u0011"+ + "\u0000\u0000\u0f1a\u0f1b\u0007\u0007\u0000\u0000\u0f1b\u02b4\u0001\u0000"+ + "\u0000\u0000\u0f1c\u0f1d\u0007\t\u0000\u0000\u0f1d\u0f1e\u0007\u0010\u0000"+ + "\u0000\u0f1e\u0f1f\u0007\f\u0000\u0000\u0f1f\u0f20\u0007\u0013\u0000\u0000"+ + "\u0f20\u0f21\u0007\u0016\u0000\u0000\u0f21\u0f22\u0007\u0010\u0000\u0000"+ + "\u0f22\u02b6\u0001\u0000\u0000\u0000\u0f23\u0f24\u0007\t\u0000\u0000\u0f24"+ + "\u0f25\u0007\u0010\u0000\u0000\u0f25\u0f26\u0007\u0013\u0000\u0000\u0f26"+ + "\u0f27\u0007\r\u0000\u0000\u0f27\u0f28\u0007\u0005\u0000\u0000\u0f28\u0f29"+ + "\u0007\u0017\u0000\u0000\u0f29\u0f2a\u0007\n\u0000\u0000\u0f2a\u02b8\u0001"+ + "\u0000\u0000\u0000\u0f2b\u0f2c\u0007\t\u0000\u0000\u0f2c\u0f2d\u0007\u0010"+ + "\u0000\u0000\u0f2d\u0f2e\u0007\r\u0000\u0000\u0f2e\u0f2f\u0007\u0011\u0000"+ + "\u0000\u0f2f\u0f30\u0007\u000e\u0000\u0000\u0f30\u0f31\u0007\u0010\u0000"+ + "\u0000\u0f31\u02ba\u0001\u0000\u0000\u0000\u0f32\u0f33\u0007\t\u0000\u0000"+ + "\u0f33\u0f34\u0007\u0010\u0000\u0000\u0f34\u0f35\u0007\r\u0000\u0000\u0f35"+ + "\u0f36\u0007\u0011\u0000\u0000\u0f36\u0f37\u0007\u0018\u0000\u0000\u0f37"+ + "\u02bc\u0001\u0000\u0000\u0000\u0f38\u0f39\u0007\t\u0000\u0000\u0f39\u0f3a"+ + "\u0007\b\u0000\u0000\u0f3a\u0f3b\u0007\t\u0000\u0000\u0f3b\u0f3c\u0007"+ + "\u0011\u0000\u0000\u0f3c\u0f3d\u0007\f\u0000\u0000\u0f3d\u02be\u0001\u0000"+ + "\u0000\u0000\u0f3e\u0f3f\u0007\t\u0000\u0000\u0f3f\u0f40\u0007\b\u0000"+ + "\u0000\u0f40\u0f41\u0007\t\u0000\u0000\u0f41\u0f42\u0007\u0010\u0000\u0000"+ + "\u0f42\u0f43\u0007\n\u0000\u0000\u0f43\u0f44\u0007\u000f\u0000\u0000\u0f44"+ + "\u02c0\u0001\u0000\u0000\u0000\u0f45\u0f46\u0007\u0010\u0000\u0000\u0f46"+ + "\u0f47\u0007\u0005\u0000\u0000\u0f47\u0f48\u0007\u0012\u0000\u0000\u0f48"+ + "\u0f49\u0007\u0006\u0000\u0000\u0f49\u0f4a\u0007\n\u0000\u0000\u0f4a\u0f4b"+ + "\u0007\t\u0000\u0000\u0f4b\u02c2\u0001\u0000\u0000\u0000\u0f4c\u0f4d\u0007"+ + "\u0010\u0000\u0000\u0f4d\u0f4e\u0007\u0005\u0000\u0000\u0f4e\u0f4f\u0007"+ + "\u0012\u0000\u0000\u0f4f\u0f50\u0007\u0006\u0000\u0000\u0f50\u0f51\u0007"+ + "\n\u0000\u0000\u0f51\u0f52\u0007\t\u0000\u0000\u0f52\u0f53\u0007\u0018"+ + "\u0000\u0000\u0f53\u0f54\u0007\u0005\u0000\u0000\u0f54\u0f55\u0007\u000e"+ + "\u0000\u0000\u0f55\u0f56\u0007\n\u0000\u0000\u0f56\u02c4\u0001\u0000\u0000"+ + "\u0000\u0f57\u0f58\u0007\u0010\u0000\u0000\u0f58\u0f59\u0007\n\u0000\u0000"+ + "\u0f59\u0f5a\u0007\u000f\u0000\u0000\u0f5a\u0f5b\u0007\u0018\u0000\u0000"+ + "\u0f5b\u02c6\u0001\u0000\u0000\u0000\u0f5c\u0f5d\u0007\u0010\u0000\u0000"+ + "\u0f5d\u0f5e\u0007\n\u0000\u0000\u0f5e\u0f5f\u0007\u000f\u0000\u0000\u0f5f"+ + "\u0f60\u0007\u0018\u0000\u0000\u0f60\u0f61\u0007\u0006\u0000\u0000\u0f61"+ + "\u0f62\u0007\u0005\u0000\u0000\u0f62\u0f63\u0007\u0010\u0000\u0000\u0f63"+ + "\u0f64\u0007\n\u0000\u0000\u0f64\u02c8\u0001\u0000\u0000\u0000\u0f65\u0f66"+ + "\u0007\u0010\u0000\u0000\u0f66\u0f67\u0007\n\u0000\u0000\u0f67\u0f68\u0007"+ + "\u000f\u0000\u0000\u0f68\u0f69\u0007\u0018\u0000\u0000\u0f69\u0f6a\u0007"+ + "\u0013\u0000\u0000\u0f6a\u0f6b\u0007\r\u0000\u0000\u0f6b\u0f6c\u0007\u0005"+ + "\u0000\u0000\u0f6c\u0f6d\u0007\r\u0000\u0000\u0f6d\u0f6e\u0007\b\u0000"+ + "\u0000\u0f6e\u02ca\u0001\u0000\u0000\u0000\u0f6f\u0f70\u0007\u0010\u0000"+ + "\u0000\u0f70\u0f71\u0007\n\u0000\u0000\u0f71\u0f72\u0007\u001a\u0000\u0000"+ + "\u0f72\u0f73\u0007\u0010\u0000\u0000\u0f73\u02cc\u0001\u0000\u0000\u0000"+ + "\u0f74\u0f75\u0007\u0010\u0000\u0000\u0f75\u0f76\u0007\r\u0000\u0000\u0f76"+ + "\u0f77\u0007\u0005\u0000\u0000\u0f77\u0f78\u0007\u0007\u0000\u0000\u0f78"+ + "\u0f79\u0007\t\u0000\u0000\u0f79\u0f7a\u0007\u0005\u0000\u0000\u0f7a\u0f7b"+ + "\u0007\u000e\u0000\u0000\u0f7b\u0f7c\u0007\u0010\u0000\u0000\u0f7c\u0f7d"+ + "\u0007\u0011\u0000\u0000\u0f7d\u0f7e\u0007\u0013\u0000\u0000\u0f7e\u0f7f"+ + "\u0007\u0007\u0000\u0000\u0f7f\u02ce\u0001\u0000\u0000\u0000\u0f80\u0f81"+ + "\u0007\u0010\u0000\u0000\u0f81\u0f82\u0007\r\u0000\u0000\u0f82\u0f83\u0007"+ + "\u0011\u0000\u0000\u0f83\u0f84\u0007\u0017\u0000\u0000\u0f84\u0f85\u0007"+ + "\u0017\u0000\u0000\u0f85\u0f86\u0007\n\u0000\u0000\u0f86\u0f87\u0007\r"+ + "\u0000\u0000\u0f87\u02d0\u0001\u0000\u0000\u0000\u0f88\u0f89\u0007\u0010"+ + "\u0000\u0000\u0f89\u0f8a\u0007\r\u0000\u0000\u0f8a\u0f8b\u0007\u0016\u0000"+ + "\u0000\u0f8b\u0f8c\u0007\u0007\u0000\u0000\u0f8c\u0f8d\u0007\u000e\u0000"+ + "\u0000\u0f8d\u0f8e\u0007\u0005\u0000\u0000\u0f8e\u0f8f\u0007\u0010\u0000"+ + "\u0000\u0f8f\u0f90\u0007\n\u0000\u0000\u0f90\u02d2\u0001\u0000\u0000\u0000"+ + "\u0f91\u0f92\u0007\u0010\u0000\u0000\u0f92\u0f93\u0007\r\u0000\u0000\u0f93"+ + "\u0f94\u0007\u0016\u0000\u0000\u0f94\u0f95\u0007\t\u0000\u0000\u0f95\u0f96"+ + "\u0007\u0010\u0000\u0000\u0f96\u0f97\u0007\n\u0000\u0000\u0f97\u0f98\u0007"+ + "\f\u0000\u0000\u0f98\u02d4\u0001\u0000\u0000\u0000\u0f99\u0f9a\u0007\u0010"+ + "\u0000\u0000\u0f9a\u0f9b\u0007\b\u0000\u0000\u0f9b\u0f9c\u0007\u0018\u0000"+ + "\u0000\u0f9c\u0f9d\u0007\n\u0000\u0000\u0f9d\u02d6\u0001\u0000\u0000\u0000"+ + "\u0f9e\u0f9f\u0007\u0010\u0000\u0000\u0f9f\u0fa0\u0007\b\u0000\u0000\u0fa0"+ + "\u0fa1\u0007\u0018\u0000\u0000\u0fa1\u0fa2\u0007\n\u0000\u0000\u0fa2\u0fa3"+ + "\u0007\t\u0000\u0000\u0fa3\u02d8\u0001\u0000\u0000\u0000\u0fa4\u0fa5\u0007"+ + "\u0016\u0000\u0000\u0fa5\u0fa6\u0007\u0007\u0000\u0000\u0fa6\u0fa7\u0007"+ + "\u0012\u0000\u0000\u0fa7\u0fa8\u0007\u0013\u0000\u0000\u0fa8\u0fa9\u0007"+ + "\u0016\u0000\u0000\u0fa9\u0faa\u0007\u0007\u0000\u0000\u0faa\u0fab\u0007"+ + "\f\u0000\u0000\u0fab\u0fac\u0007\n\u0000\u0000\u0fac\u0fad\u0007\f\u0000"+ + "\u0000\u0fad\u02da\u0001\u0000\u0000\u0000\u0fae\u0faf\u0007\u0016\u0000"+ + "\u0000\u0faf\u0fb0\u0007\u0007\u0000\u0000\u0fb0\u0fb1\u0007\u000e\u0000"+ + "\u0000\u0fb1\u0fb2\u0007\u0013\u0000\u0000\u0fb2\u0fb3\u0007\u000f\u0000"+ + "\u0000\u0fb3\u0fb4\u0007\u000f\u0000\u0000\u0fb4\u0fb5\u0007\u0011\u0000"+ + "\u0000\u0fb5\u0fb6\u0007\u0010\u0000\u0000\u0fb6\u0fb7\u0007\u0010\u0000"+ + "\u0000\u0fb7\u0fb8\u0007\n\u0000\u0000\u0fb8\u0fb9\u0007\f\u0000\u0000"+ + "\u0fb9\u02dc\u0001\u0000\u0000\u0000\u0fba\u0fbb\u0007\u0016\u0000\u0000"+ + "\u0fbb\u0fbc\u0007\u0007\u0000\u0000\u0fbc\u0fbd\u0007\n\u0000\u0000\u0fbd"+ + "\u0fbe\u0007\u0007\u0000\u0000\u0fbe\u0fbf\u0007\u000e\u0000\u0000\u0fbf"+ + "\u0fc0\u0007\r\u0000\u0000\u0fc0\u0fc1\u0007\b\u0000\u0000\u0fc1\u0fc2"+ + "\u0007\u0018\u0000\u0000\u0fc2\u0fc3\u0007\u0010\u0000\u0000\u0fc3\u0fc4"+ + "\u0007\n\u0000\u0000\u0fc4\u0fc5\u0007\f\u0000\u0000\u0fc5\u02de\u0001"+ + "\u0000\u0000\u0000\u0fc6\u0fc7\u0007\u0016\u0000\u0000\u0fc7\u0fc8\u0007"+ + "\u0007\u0000\u0000\u0fc8\u0fc9\u0007\u0015\u0000\u0000\u0fc9\u0fca\u0007"+ + "\u0007\u0000\u0000\u0fca\u0fcb\u0007\u0013\u0000\u0000\u0fcb\u0fcc\u0007"+ + "\u001c\u0000\u0000\u0fcc\u0fcd\u0007\u0007\u0000\u0000\u0fcd\u02e0\u0001"+ + "\u0000\u0000\u0000\u0fce\u0fcf\u0007\u0016\u0000\u0000\u0fcf\u0fd0\u0007"+ + "\u0007\u0000\u0000\u0fd0\u0fd1\u0007\u0006\u0000\u0000\u0fd1\u0fd2\u0007"+ + "\u0011\u0000\u0000\u0fd2\u0fd3\u0007\t\u0000\u0000\u0fd3\u0fd4\u0007\u0010"+ + "\u0000\u0000\u0fd4\u0fd5\u0007\n\u0000\u0000\u0fd5\u0fd6\u0007\u0007\u0000"+ + "\u0000\u0fd6\u02e2\u0001\u0000\u0000\u0000\u0fd7\u0fd8\u0007\u0016\u0000"+ + "\u0000\u0fd8\u0fd9\u0007\u0007\u0000\u0000\u0fd9\u0fda\u0007\u0006\u0000"+ + "\u0000\u0fda\u0fdb\u0007\u0013\u0000\u0000\u0fdb\u0fdc\u0007\u0017\u0000"+ + "\u0000\u0fdc\u0fdd\u0007\u0017\u0000\u0000\u0fdd\u0fde\u0007\n\u0000\u0000"+ + "\u0fde\u0fdf\u0007\f\u0000\u0000\u0fdf\u02e4\u0001\u0000\u0000\u0000\u0fe0"+ + "\u0fe1\u0007\u0016\u0000\u0000\u0fe1\u0fe2\u0007\u0007\u0000\u0000\u0fe2"+ + "\u0fe3\u0007\u0010\u0000\u0000\u0fe3\u0fe4\u0007\u0011\u0000\u0000\u0fe4"+ + "\u0fe5\u0007\u0006\u0000\u0000\u0fe5\u02e6\u0001\u0000\u0000\u0000\u0fe6"+ + "\u0fe7\u0007\u0016\u0000\u0000\u0fe7\u0fe8\u0007\u0018\u0000\u0000\u0fe8"+ + "\u0fe9\u0007\f\u0000\u0000\u0fe9\u0fea\u0007\u0005\u0000\u0000\u0fea\u0feb"+ + "\u0007\u0010\u0000\u0000\u0feb\u0fec\u0007\n\u0000\u0000\u0fec\u02e8\u0001"+ + "\u0000\u0000\u0000\u0fed\u0fee\u0007\u001b\u0000\u0000\u0fee\u0fef\u0007"+ + "\u0005\u0000\u0000\u0fef\u0ff0\u0007\u000e\u0000\u0000\u0ff0\u0ff1\u0007"+ + "\u0016\u0000\u0000\u0ff1\u0ff2\u0007\u0016\u0000\u0000\u0ff2\u0ff3\u0007"+ + "\u000f\u0000\u0000\u0ff3\u02ea\u0001\u0000\u0000\u0000\u0ff4\u0ff5\u0007"+ + "\u001b\u0000\u0000\u0ff5\u0ff6\u0007\u0005\u0000\u0000\u0ff6\u0ff7\u0007"+ + "\u0006\u0000\u0000\u0ff7\u0ff8\u0007\u0011\u0000\u0000\u0ff8\u0ff9\u0007"+ + "\f\u0000\u0000\u0ff9\u02ec\u0001\u0000\u0000\u0000\u0ffa\u0ffb\u0007\u001b"+ + "\u0000\u0000\u0ffb\u0ffc\u0007\u0005\u0000\u0000\u0ffc\u0ffd\u0007\u0006"+ + "\u0000\u0000\u0ffd\u0ffe\u0007\u0011\u0000\u0000\u0ffe\u0fff\u0007\f\u0000"+ + "\u0000\u0fff\u1000\u0007\u0005\u0000\u0000\u1000\u1001\u0007\u0010\u0000"+ + "\u0000\u1001\u1002\u0007\n\u0000\u0000\u1002\u02ee\u0001\u0000\u0000\u0000"+ + "\u1003\u1004\u0007\u001b\u0000\u0000\u1004\u1005\u0007\u0005\u0000\u0000"+ + "\u1005\u1006\u0007\u0006\u0000\u0000\u1006\u1007\u0007\u0011\u0000\u0000"+ + "\u1007\u1008\u0007\f\u0000\u0000\u1008\u1009\u0007\u0005\u0000\u0000\u1009"+ + "\u100a\u0007\u0010\u0000\u0000\u100a\u100b\u0007\u0013\u0000\u0000\u100b"+ + "\u100c\u0007\r\u0000\u0000\u100c\u02f0\u0001\u0000\u0000\u0000\u100d\u100e"+ + "\u0007\u001b\u0000\u0000\u100e\u100f\u0007\u0005\u0000\u0000\u100f\u1010"+ + "\u0007\r\u0000\u0000\u1010\u1011\u0007\b\u0000\u0000\u1011\u1012\u0007"+ + "\u0011\u0000\u0000\u1012\u1013\u0007\u0007\u0000\u0000\u1013\u1014\u0007"+ + "\u0017\u0000\u0000\u1014\u02f2\u0001\u0000\u0000\u0000\u1015\u1016\u0007"+ + "\u001b\u0000\u0000\u1016\u1017\u0007\n\u0000\u0000\u1017\u1018\u0007\r"+ + "\u0000\u0000\u1018\u1019\u0007\t\u0000\u0000\u1019\u101a\u0007\u0011\u0000"+ + "\u0000\u101a\u101b\u0007\u0013\u0000\u0000\u101b\u101c\u0007\u0007\u0000"+ + "\u0000\u101c\u02f4\u0001\u0000\u0000\u0000\u101d\u101e\u0007\u001b\u0000"+ + "\u0000\u101e\u101f\u0007\u0011\u0000\u0000\u101f\u1020\u0007\n\u0000\u0000"+ + "\u1020\u1021\u0007\u001c\u0000\u0000\u1021\u02f6\u0001\u0000\u0000\u0000"+ + "\u1022\u1023\u0007\u001b\u0000\u0000\u1023\u1024\u0007\u0013\u0000\u0000"+ + "\u1024\u1025\u0007\u0006\u0000\u0000\u1025\u1026\u0007\u0005\u0000\u0000"+ + "\u1026\u1027\u0007\u0010\u0000\u0000\u1027\u1028\u0007\u0011\u0000\u0000"+ + "\u1028\u1029\u0007\u0006\u0000\u0000\u1029\u102a\u0007\n\u0000\u0000\u102a"+ + "\u02f8\u0001\u0000\u0000\u0000\u102b\u102c\u0007\u001c\u0000\u0000\u102c"+ + "\u102d\u0007\u0014\u0000\u0000\u102d\u102e\u0007\u0011\u0000\u0000\u102e"+ + "\u102f\u0007\u0010\u0000\u0000\u102f\u1030\u0007\n\u0000\u0000\u1030\u1031"+ + "\u0007\t\u0000\u0000\u1031\u1032\u0007\u0018\u0000\u0000\u1032\u1033\u0007"+ + "\u0005\u0000\u0000\u1033\u1034\u0007\u000e\u0000\u0000\u1034\u1035\u0007"+ + "\n\u0000\u0000\u1035\u02fa\u0001\u0000\u0000\u0000\u1036\u1037\u0007\u001c"+ + "\u0000\u0000\u1037\u1038\u0007\u0011\u0000\u0000\u1038\u1039\u0007\u0010"+ + "\u0000\u0000\u1039\u103a\u0007\u0014\u0000\u0000\u103a\u103b\u0007\u0013"+ + "\u0000\u0000\u103b\u103c\u0007\u0016\u0000\u0000\u103c\u103d\u0007\u0010"+ + "\u0000\u0000\u103d\u02fc\u0001\u0000\u0000\u0000\u103e\u103f\u0007\u001c"+ + "\u0000\u0000\u103f\u1040\u0007\u0013\u0000\u0000\u1040\u1041\u0007\r\u0000"+ + "\u0000\u1041\u1042\u0007\u0015\u0000\u0000\u1042\u02fe\u0001\u0000\u0000"+ + "\u0000\u1043\u1044\u0007\u001c\u0000\u0000\u1044\u1045\u0007\r\u0000\u0000"+ + "\u1045\u1046\u0007\u0005\u0000\u0000\u1046\u1047\u0007\u0018\u0000\u0000"+ + "\u1047\u1048\u0007\u0018\u0000\u0000\u1048\u1049\u0007\n\u0000\u0000\u1049"+ + "\u104a\u0007\r\u0000\u0000\u104a\u0300\u0001\u0000\u0000\u0000\u104b\u104c"+ + "\u0007\u001c\u0000\u0000\u104c\u104d\u0007\r\u0000\u0000\u104d\u104e\u0007"+ + "\u0011\u0000\u0000\u104e\u104f\u0007\u0010\u0000\u0000\u104f\u1050\u0007"+ + "\n\u0000\u0000\u1050\u0302\u0001\u0000\u0000\u0000\u1051\u1052\u0007\u001a"+ + "\u0000\u0000\u1052\u1053\u0007\u000f\u0000\u0000\u1053\u1054\u0007\u0006"+ + "\u0000\u0000\u1054\u0304\u0001\u0000\u0000\u0000\u1055\u1056\u0007\b\u0000"+ + "\u0000\u1056\u1057\u0007\n\u0000\u0000\u1057\u1058\u0007\u0005\u0000\u0000"+ + "\u1058\u1059\u0007\r\u0000\u0000\u1059\u0306\u0001\u0000\u0000\u0000\u105a"+ + "\u105b\u0007\b\u0000\u0000\u105b\u105c\u0007\n\u0000\u0000\u105c\u105d"+ + "\u0007\t\u0000\u0000\u105d\u0308\u0001\u0000\u0000\u0000\u105e\u105f\u0007"+ + "\u000b\u0000\u0000\u105f\u1060\u0007\u0013\u0000\u0000\u1060\u1061\u0007"+ + "\u0007\u0000\u0000\u1061\u1062\u0007\n\u0000\u0000\u1062\u030a\u0001\u0000"+ + "\u0000\u0000\u1063\u1064\u0007\u0012\u0000\u0000\u1064\u1065\u0007\n\u0000"+ + "\u0000\u1065\u1066\u0007\u0010\u0000\u0000\u1066\u1067\u0007\u001c\u0000"+ + "\u0000\u1067\u1068\u0007\n\u0000\u0000\u1068\u1069\u0007\n\u0000\u0000"+ + "\u1069\u106a\u0007\u0007\u0000\u0000\u106a\u030c\u0001\u0000\u0000\u0000"+ + "\u106b\u106c\u0007\u0012\u0000\u0000\u106c\u106d\u0007\u0011\u0000\u0000"+ + "\u106d\u106e\u0007\u0017\u0000\u0000\u106e\u106f\u0007\u0011\u0000\u0000"+ + "\u106f\u1070\u0007\u0007\u0000\u0000\u1070\u1071\u0007\u0010\u0000\u0000"+ + "\u1071\u030e\u0001\u0000\u0000\u0000\u1072\u1073\u0007\u0012\u0000\u0000"+ + "\u1073\u1074\u0007\u0011\u0000\u0000\u1074\u1075\u0007\u0010\u0000\u0000"+ + "\u1075\u0310\u0001\u0000\u0000\u0000\u1076\u1077\u0007\u0012\u0000\u0000"+ + "\u1077\u1078\u0007\u0013\u0000\u0000\u1078\u1079\u0007\u0013\u0000\u0000"+ + "\u1079\u107a\u0007\u0006\u0000\u0000\u107a\u107b\u0007\n\u0000\u0000\u107b"+ + "\u107c\u0007\u0005\u0000\u0000\u107c\u107d\u0007\u0007\u0000\u0000\u107d"+ + "\u0312\u0001\u0000\u0000\u0000\u107e\u107f\u0007\u000e\u0000\u0000\u107f"+ + "\u1080\u0007\u0014\u0000\u0000\u1080\u1081\u0007\u0005\u0000\u0000\u1081"+ + "\u1082\u0007\r\u0000\u0000\u1082\u0314\u0001\u0000\u0000\u0000\u1083\u1084"+ + "\u0007\u000e\u0000\u0000\u1084\u1085\u0007\u0014\u0000\u0000\u1085\u1086"+ + "\u0007\u0005\u0000\u0000\u1086\u1087\u0007\r\u0000\u0000\u1087\u1088\u0007"+ + "\u0005\u0000\u0000\u1088\u1089\u0007\u000e\u0000\u0000\u1089\u108a\u0007"+ + "\u0010\u0000\u0000\u108a\u108b\u0007\n\u0000\u0000\u108b\u108c\u0007\r"+ + "\u0000\u0000\u108c\u0316\u0001\u0000\u0000\u0000\u108d\u108e\u0007\u000e"+ + "\u0000\u0000\u108e\u108f\u0007\u0013\u0000\u0000\u108f\u1090\u0007\u0005"+ + "\u0000\u0000\u1090\u1091\u0007\u0006\u0000\u0000\u1091\u1092\u0007\n\u0000"+ + "\u0000\u1092\u1093\u0007\t\u0000\u0000\u1093\u1094\u0007\u000e\u0000\u0000"+ + "\u1094\u1095\u0007\n\u0000\u0000\u1095\u0318\u0001\u0000\u0000\u0000\u1096"+ + "\u1097\u0007\f\u0000\u0000\u1097\u1098\u0007\n\u0000\u0000\u1098\u1099"+ + "\u0007\u000e\u0000\u0000\u1099\u031a\u0001\u0000\u0000\u0000\u109a\u109b"+ + "\u0007\f\u0000\u0000\u109b\u109c\u0007\n\u0000\u0000\u109c\u109d\u0007"+ + "\u000e\u0000\u0000\u109d\u109e\u0007\u0011\u0000\u0000\u109e\u109f\u0007"+ + "\u000f\u0000\u0000\u109f\u10a0\u0007\u0005\u0000\u0000\u10a0\u10a1\u0007"+ + "\u0006\u0000\u0000\u10a1\u031c\u0001\u0000\u0000\u0000\u10a2\u10a3\u0007"+ + "\n\u0000\u0000\u10a3\u10a4\u0007\u001a\u0000\u0000\u10a4\u10a5\u0007\u0011"+ + "\u0000\u0000\u10a5\u10a6\u0007\t\u0000\u0000\u10a6\u10a7\u0007\u0010\u0000"+ + "\u0000\u10a7\u10a8\u0007\t\u0000\u0000\u10a8\u031e\u0001\u0000\u0000\u0000"+ + "\u10a9\u10aa\u0007\n\u0000\u0000\u10aa\u10ab\u0007\u001a\u0000\u0000\u10ab"+ + "\u10ac\u0007\u0010\u0000\u0000\u10ac\u10ad\u0007\r\u0000\u0000\u10ad\u10ae"+ + "\u0007\u0005\u0000\u0000\u10ae\u10af\u0007\u000e\u0000\u0000\u10af\u10b0"+ + "\u0007\u0010\u0000\u0000\u10b0\u0320\u0001\u0000\u0000\u0000\u10b1\u10b2"+ + "\u0007\u0019\u0000\u0000\u10b2\u10b3\u0007\u0006\u0000\u0000\u10b3\u10b4"+ + "\u0007\u0013\u0000\u0000\u10b4\u10b5\u0007\u0005\u0000\u0000\u10b5\u10b6"+ + "\u0007\u0010\u0000\u0000\u10b6\u0322\u0001\u0000\u0000\u0000\u10b7\u10b8"+ + "\u0007\u0017\u0000\u0000\u10b8\u10b9\u0007\r\u0000\u0000\u10b9\u10ba\u0007"+ + "\n\u0000\u0000\u10ba\u10bb\u0007\u0005\u0000\u0000\u10bb\u10bc\u0007\u0010"+ + "\u0000\u0000\u10bc\u10bd\u0007\n\u0000\u0000\u10bd\u10be\u0007\t\u0000"+ + "\u0000\u10be\u10bf\u0007\u0010\u0000\u0000\u10bf\u0324\u0001\u0000\u0000"+ + "\u0000\u10c0\u10c1\u0007\u0011\u0000\u0000\u10c1\u10c2\u0007\u0007\u0000"+ + "\u0000\u10c2\u10c3\u0007\u0013\u0000\u0000\u10c3\u10c4\u0007\u0016\u0000"+ + "\u0000\u10c4\u10c5\u0007\u0010\u0000\u0000\u10c5\u0326\u0001\u0000\u0000"+ + "\u0000\u10c6\u10c7\u0007\u0011\u0000\u0000\u10c7\u10c8\u0007\u0007\u0000"+ + "\u0000\u10c8\u10c9\u0007\u0010\u0000\u0000\u10c9\u0328\u0001\u0000\u0000"+ + "\u0000\u10ca\u10cb\u0007\u0011\u0000\u0000\u10cb\u10cc\u0007\u0007\u0000"+ + "\u0000\u10cc\u10cd\u0007\u0010\u0000\u0000\u10cd\u10ce\u0007\n\u0000\u0000"+ + "\u10ce\u10cf\u0007\u0017\u0000\u0000\u10cf\u10d0\u0007\n\u0000\u0000\u10d0"+ + "\u10d1\u0007\r\u0000\u0000\u10d1\u032a\u0001\u0000\u0000\u0000\u10d2\u10d3"+ + "\u0007\u0011\u0000\u0000\u10d3\u10d4\u0007\u0007\u0000\u0000\u10d4\u10d5"+ + "\u0007\u0010\u0000\u0000\u10d5\u10d6\u0007\n\u0000\u0000\u10d6\u10d7\u0007"+ + "\r\u0000\u0000\u10d7\u10d8\u0007\u001b\u0000\u0000\u10d8\u10d9\u0007\u0005"+ + "\u0000\u0000\u10d9\u10da\u0007\u0006\u0000\u0000\u10da\u032c\u0001\u0000"+ + "\u0000\u0000\u10db\u10dc\u0007\u0006\u0000\u0000\u10dc\u10dd\u0007\n\u0000"+ + "\u0000\u10dd\u10de\u0007\u0005\u0000\u0000\u10de\u10df\u0007\t\u0000\u0000"+ + "\u10df\u10e0\u0007\u0010\u0000\u0000\u10e0\u032e\u0001\u0000\u0000\u0000"+ + "\u10e1\u10e2\u0007\u0007\u0000\u0000\u10e2\u10e3\u0007\u0005\u0000\u0000"+ + "\u10e3\u10e4\u0007\u0010\u0000\u0000\u10e4\u10e5\u0007\u0011\u0000\u0000"+ + "\u10e5\u10e6\u0007\u0013\u0000\u0000\u10e6\u10e7\u0007\u0007\u0000\u0000"+ + "\u10e7\u10e8\u0007\u0005\u0000\u0000\u10e8\u10e9\u0007\u0006\u0000\u0000"+ + "\u10e9\u0330\u0001\u0000\u0000\u0000\u10ea\u10eb\u0007\u0007\u0000\u0000"+ + "\u10eb\u10ec\u0007\u000e\u0000\u0000\u10ec\u10ed\u0007\u0014\u0000\u0000"+ + "\u10ed\u10ee\u0007\u0005\u0000\u0000\u10ee\u10ef\u0007\r\u0000\u0000\u10ef"+ + "\u0332\u0001\u0000\u0000\u0000\u10f0\u10f1\u0007\u0007\u0000\u0000\u10f1"+ + "\u10f2\u0007\u0013\u0000\u0000\u10f2\u10f3\u0007\u0007\u0000\u0000\u10f3"+ + "\u10f4\u0007\n\u0000\u0000\u10f4\u0334\u0001\u0000\u0000\u0000\u10f5\u10f6"+ + "\u0007\u0007\u0000\u0000\u10f6\u10f7\u0007\u0016\u0000\u0000\u10f7\u10f8"+ + "\u0007\u0006\u0000\u0000\u10f8\u10f9\u0007\u0006\u0000\u0000\u10f9\u10fa"+ + "\u0007\u0011\u0000\u0000\u10fa\u10fb\u0007\u0019\u0000\u0000\u10fb\u0336"+ + "\u0001\u0000\u0000\u0000\u10fc\u10fd\u0007\u0007\u0000\u0000\u10fd\u10fe"+ + "\u0007\u0016\u0000\u0000\u10fe\u10ff\u0007\u000f\u0000\u0000\u10ff\u1100"+ + "\u0007\n\u0000\u0000\u1100\u1101\u0007\r\u0000\u0000\u1101\u1102\u0007"+ + "\u0011\u0000\u0000\u1102\u1103\u0007\u000e\u0000\u0000\u1103\u0338\u0001"+ + "\u0000\u0000\u0000\u1104\u1105\u0007\u0013\u0000\u0000\u1105\u1106\u0007"+ + "\u001b\u0000\u0000\u1106\u1107\u0007\n\u0000\u0000\u1107\u1108\u0007\r"+ + "\u0000\u0000\u1108\u1109\u0007\u0006\u0000\u0000\u1109\u110a\u0007\u0005"+ + "\u0000\u0000\u110a\u110b\u0007\b\u0000\u0000\u110b\u033a\u0001\u0000\u0000"+ + "\u0000\u110c\u110d\u0007\u0018\u0000\u0000\u110d\u110e\u0007\u0013\u0000"+ + "\u0000\u110e\u110f\u0007\t\u0000\u0000\u110f\u1110\u0007\u0011\u0000\u0000"+ + "\u1110\u1111\u0007\u0010\u0000\u0000\u1111\u1112\u0007\u0011\u0000\u0000"+ + "\u1112\u1113\u0007\u0013\u0000\u0000\u1113\u1114\u0007\u0007\u0000\u0000"+ + "\u1114\u033c\u0001\u0000\u0000\u0000\u1115\u1116\u0007\u0018\u0000\u0000"+ + "\u1116\u1117\u0007\r\u0000\u0000\u1117\u1118\u0007\n\u0000\u0000\u1118"+ + "\u1119\u0007\u000e\u0000\u0000\u1119\u111a\u0007\u0011\u0000\u0000\u111a"+ + "\u111b\u0007\t\u0000\u0000\u111b\u111c\u0007\u0011\u0000\u0000\u111c\u111d"+ + "\u0007\u0013\u0000\u0000\u111d\u111e\u0007\u0007\u0000\u0000\u111e\u033e"+ + "\u0001\u0000\u0000\u0000\u111f\u1120\u0007\r\u0000\u0000\u1120\u1121\u0007"+ + "\n\u0000\u0000\u1121\u1122\u0007\u0005\u0000\u0000\u1122\u1123\u0007\u0006"+ + "\u0000\u0000\u1123\u0340\u0001\u0000\u0000\u0000\u1124\u1125\u0007\r\u0000"+ + "\u0000\u1125\u1126\u0007\u0013\u0000\u0000\u1126\u1127\u0007\u001c\u0000"+ + "\u0000\u1127\u0342\u0001\u0000\u0000\u0000\u1128\u1129\u0007\t\u0000\u0000"+ + "\u1129\u112a\u0007\n\u0000\u0000\u112a\u112b\u0007\u0010\u0000\u0000\u112b"+ + "\u112c\u0007\u0013\u0000\u0000\u112c\u112d\u0007\u0019\u0000\u0000\u112d"+ + "\u0344\u0001\u0000\u0000\u0000\u112e\u112f\u0007\t\u0000\u0000\u112f\u1130"+ + "\u0007\u000f\u0000\u0000\u1130\u1131\u0007\u0005\u0000\u0000\u1131\u1132"+ + "\u0007\u0006\u0000\u0000\u1132\u1133\u0007\u0006\u0000\u0000\u1133\u1134"+ + "\u0007\u0011\u0000\u0000\u1134\u1135\u0007\u0007\u0000\u0000\u1135\u1136"+ + "\u0007\u0010\u0000\u0000\u1136\u0346\u0001\u0000\u0000\u0000\u1137\u1138"+ + "\u0007\t\u0000\u0000\u1138\u1139\u0007\u0016\u0000\u0000\u1139\u113a\u0007"+ + "\u0012\u0000\u0000\u113a\u113b\u0007\t\u0000\u0000\u113b\u113c\u0007\u0010"+ + "\u0000\u0000\u113c\u113d\u0007\r\u0000\u0000\u113d\u113e\u0007\u0011\u0000"+ + "\u0000\u113e\u113f\u0007\u0007\u0000\u0000\u113f\u1140\u0007\u0017\u0000"+ + "\u0000\u1140\u0348\u0001\u0000\u0000\u0000\u1141\u1142\u0007\u0010\u0000"+ + "\u0000\u1142\u1143\u0007\u0011\u0000\u0000\u1143\u1144\u0007\u000f\u0000"+ + "\u0000\u1144\u1145\u0007\n\u0000\u0000\u1145\u034a\u0001\u0000\u0000\u0000"+ + "\u1146\u1147\u0007\u0010\u0000\u0000\u1147\u1148\u0007\u0011\u0000\u0000"+ + "\u1148\u1149\u0007\u000f\u0000\u0000\u1149\u114a\u0007\n\u0000\u0000\u114a"+ + "\u114b\u0007\t\u0000\u0000\u114b\u114c\u0007\u0010\u0000\u0000\u114c\u114d"+ + "\u0007\u0005\u0000\u0000\u114d\u114e\u0007\u000f\u0000\u0000\u114e\u114f"+ + "\u0007\u0018\u0000\u0000\u114f\u034c\u0001\u0000\u0000\u0000\u1150\u1151"+ + "\u0007\u0010\u0000\u0000\u1151\u1152\u0007\r\u0000\u0000\u1152\u1153\u0007"+ + "\n\u0000\u0000\u1153\u1154\u0007\u0005\u0000\u0000\u1154\u1155\u0007\u0010"+ + "\u0000\u0000\u1155\u034e\u0001\u0000\u0000\u0000\u1156\u1157\u0007\u0010"+ + "\u0000\u0000\u1157\u1158\u0007\r\u0000\u0000\u1158\u1159\u0007\u0011\u0000"+ + "\u0000\u1159\u115a\u0007\u000f\u0000\u0000\u115a\u0350\u0001\u0000\u0000"+ + "\u0000\u115b\u115c\u0007\u001b\u0000\u0000\u115c\u115d\u0007\u0005\u0000"+ + "\u0000\u115d\u115e\u0007\u0006\u0000\u0000\u115e\u115f\u0007\u0016\u0000"+ + "\u0000\u115f\u1160\u0007\n\u0000\u0000\u1160\u1161\u0007\t\u0000\u0000"+ + "\u1161\u0352\u0001\u0000\u0000\u0000\u1162\u1163\u0007\u001b\u0000\u0000"+ + "\u1163\u1164\u0007\u0005\u0000\u0000\u1164\u1165\u0007\r\u0000\u0000\u1165"+ + "\u1166\u0007\u000e\u0000\u0000\u1166\u1167\u0007\u0014\u0000\u0000\u1167"+ + "\u1168\u0007\u0005\u0000\u0000\u1168\u1169\u0007\r\u0000\u0000\u1169\u0354"+ + "\u0001\u0000\u0000\u0000\u116a\u116b\u0007\u001a\u0000\u0000\u116b\u116c"+ + "\u0007\u000f\u0000\u0000\u116c\u116d\u0007\u0006\u0000\u0000\u116d\u116e"+ + "\u0007\u0005\u0000\u0000\u116e\u116f\u0007\u0010\u0000\u0000\u116f\u1170"+ + "\u0007\u0010\u0000\u0000\u1170\u1171\u0007\r\u0000\u0000\u1171\u1172\u0007"+ + "\u0011\u0000\u0000\u1172\u1173\u0007\u0012\u0000\u0000\u1173\u1174\u0007"+ + "\u0016\u0000\u0000\u1174\u1175\u0007\u0010\u0000\u0000\u1175\u1176\u0007"+ + "\n\u0000\u0000\u1176\u1177\u0007\t\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\u0007\u000e"+ + "\u0000\u0000\u117c\u117d\u0007\u0013\u0000\u0000\u117d\u117e\u0007\u000f"+ + "\u0000\u0000\u117e\u117f\u0007\u000f\u0000\u0000\u117f\u1180\u0007\n\u0000"+ + "\u0000\u1180\u1181\u0007\u0007\u0000\u0000\u1181\u1182\u0007\u0010\u0000"+ + "\u0000\u1182\u0358\u0001\u0000\u0000\u0000\u1183\u1184\u0007\u001a\u0000"+ + "\u0000\u1184\u1185\u0007\u000f\u0000\u0000\u1185\u1186\u0007\u0006\u0000"+ + "\u0000\u1186\u1187\u0007\u0005\u0000\u0000\u1187\u1188\u0007\u0017\u0000"+ + "\u0000\u1188\u1189\u0007\u0017\u0000\u0000\u1189\u035a\u0001\u0000\u0000"+ + "\u0000\u118a\u118b\u0007\u001a\u0000\u0000\u118b\u118c\u0007\u000f\u0000"+ + "\u0000\u118c\u118d\u0007\u0006\u0000\u0000\u118d\u118e\u0005_\u0000\u0000"+ + "\u118e\u118f\u0007\u0011\u0000\u0000\u118f\u1190\u0007\t\u0000\u0000\u1190"+ + "\u1191\u0005_\u0000\u0000\u1191\u1192\u0007\u001c\u0000\u0000\u1192\u1193"+ + "\u0007\n\u0000\u0000\u1193\u1194\u0007\u0006\u0000\u0000\u1194\u1195\u0007"+ + "\u0006\u0000\u0000\u1195\u1196\u0005_\u0000\u0000\u1196\u1197\u0007\u0019"+ + "\u0000\u0000\u1197\u1198\u0007\u0013\u0000\u0000\u1198\u1199\u0007\r\u0000"+ + "\u0000\u1199\u119a\u0007\u000f\u0000\u0000\u119a\u119b\u0007\n\u0000\u0000"+ + "\u119b\u119c\u0007\f\u0000\u0000\u119c\u035c\u0001\u0000\u0000\u0000\u119d"+ + "\u119e\u0007\u001a\u0000\u0000\u119e\u119f\u0007\u000f\u0000\u0000\u119f"+ + "\u11a0\u0007\u0006\u0000\u0000\u11a0\u11a1\u0005_\u0000\u0000\u11a1\u11a2"+ + "\u0007\u0011\u0000\u0000\u11a2\u11a3\u0007\t\u0000\u0000\u11a3\u11a4\u0005"+ + "_\u0000\u0000\u11a4\u11a5\u0007\u001c\u0000\u0000\u11a5\u11a6\u0007\n"+ + "\u0000\u0000\u11a6\u11a7\u0007\u0006\u0000\u0000\u11a7\u11a8\u0007\u0006"+ + "\u0000\u0000\u11a8\u11a9\u0005_\u0000\u0000\u11a9\u11aa\u0007\u0019\u0000"+ + "\u0000\u11aa\u11ab\u0007\u0013\u0000\u0000\u11ab\u11ac\u0007\r\u0000\u0000"+ + "\u11ac\u11ad\u0007\u000f\u0000\u0000\u11ad\u11ae\u0007\n\u0000\u0000\u11ae"+ + "\u11af\u0007\f\u0000\u0000\u11af\u11b0\u0005_\u0000\u0000\u11b0\u11b1"+ + "\u0007\f\u0000\u0000\u11b1\u11b2\u0007\u0013\u0000\u0000\u11b2\u11b3\u0007"+ + "\u000e\u0000\u0000\u11b3\u11b4\u0007\u0016\u0000\u0000\u11b4\u11b5\u0007"+ + "\u000f\u0000\u0000\u11b5\u11b6\u0007\n\u0000\u0000\u11b6\u11b7\u0007\u0007"+ + "\u0000\u0000\u11b7\u11b8\u0007\u0010\u0000\u0000\u11b8\u035e\u0001\u0000"+ + "\u0000\u0000\u11b9\u11ba\u0007\u001a\u0000\u0000\u11ba\u11bb\u0007\u000f"+ + "\u0000\u0000\u11bb\u11bc\u0007\u0006\u0000\u0000\u11bc\u11bd\u0005_\u0000"+ + "\u0000\u11bd\u11be\u0007\u0011\u0000\u0000\u11be\u11bf\u0007\t\u0000\u0000"+ + "\u11bf\u11c0\u0005_\u0000\u0000\u11c0\u11c1\u0007\u001c\u0000\u0000\u11c1"+ + "\u11c2\u0007\n\u0000\u0000\u11c2\u11c3\u0007\u0006\u0000\u0000\u11c3\u11c4"+ + "\u0007\u0006\u0000\u0000\u11c4\u11c5\u0005_\u0000\u0000\u11c5\u11c6\u0007"+ + "\u0019\u0000\u0000\u11c6\u11c7\u0007\u0013\u0000\u0000\u11c7\u11c8\u0007"+ + "\r\u0000\u0000\u11c8\u11c9\u0007\u000f\u0000\u0000\u11c9\u11ca\u0007\n"+ + "\u0000\u0000\u11ca\u11cb\u0007\f\u0000\u0000\u11cb\u11cc\u0005_\u0000"+ + "\u0000\u11cc\u11cd\u0007\u000e\u0000\u0000\u11cd\u11ce\u0007\u0013\u0000"+ + "\u0000\u11ce\u11cf\u0007\u0007\u0000\u0000\u11cf\u11d0\u0007\u0010\u0000"+ + "\u0000\u11d0\u11d1\u0007\n\u0000\u0000\u11d1\u11d2\u0007\u0007\u0000\u0000"+ + "\u11d2\u11d3\u0007\u0010\u0000\u0000\u11d3\u0360\u0001\u0000\u0000\u0000"+ + "\u11d4\u11d5\u0007\u001a\u0000\u0000\u11d5\u11d6\u0007\u0018\u0000\u0000"+ + "\u11d6\u11d7\u0007\u0005\u0000\u0000\u11d7\u11d8\u0007\u0010\u0000\u0000"+ + "\u11d8\u11d9\u0007\u0014\u0000\u0000\u11d9\u0362\u0001\u0000\u0000\u0000"+ + "\u11da\u11db\u0007\u001a\u0000\u0000\u11db\u11dc\u0007\u0018\u0000\u0000"+ + "\u11dc\u11dd\u0007\u0005\u0000\u0000\u11dd\u11de\u0007\u0010\u0000\u0000"+ + "\u11de\u11df\u0007\u0014\u0000\u0000\u11df\u11e0\u0005_\u0000\u0000\u11e0"+ + "\u11e1\u0007\n\u0000\u0000\u11e1\u11e2\u0007\u001a\u0000\u0000\u11e2\u11e3"+ + "\u0007\u0011\u0000\u0000\u11e3\u11e4\u0007\t\u0000\u0000\u11e4\u11e5\u0007"+ + "\u0010\u0000\u0000\u11e5\u11e6\u0007\t\u0000\u0000\u11e6\u0364\u0001\u0000"+ + "\u0000\u0000\u11e7\u11e8\u0007\u001a\u0000\u0000\u11e8\u11e9\u0007\u000f"+ + "\u0000\u0000\u11e9\u11ea\u0007\u0006\u0000\u0000\u11ea\u11eb\u0007\u000e"+ + "\u0000\u0000\u11eb\u11ec\u0007\u0013\u0000\u0000\u11ec\u11ed\u0007\u0007"+ + "\u0000\u0000\u11ed\u11ee\u0007\u000e\u0000\u0000\u11ee\u11ef\u0007\u0005"+ + "\u0000\u0000\u11ef\u11f0\u0007\u0010\u0000\u0000\u11f0\u0366\u0001\u0000"+ + "\u0000\u0000\u11f1\u11f2\u0007\u001a\u0000\u0000\u11f2\u11f3\u0007\u000f"+ + "\u0000\u0000\u11f3\u11f4\u0007\u0006\u0000\u0000\u11f4\u11f5\u0007\n\u0000"+ + "\u0000\u11f5\u11f6\u0007\u0006\u0000\u0000\u11f6\u11f7\u0007\n\u0000\u0000"+ + "\u11f7\u11f8\u0007\u000f\u0000\u0000\u11f8\u11f9\u0007\n\u0000\u0000\u11f9"+ + "\u11fa\u0007\u0007\u0000\u0000\u11fa\u11fb\u0007\u0010\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\n\u0000\u0000\u1200\u1201\u0007\u001a\u0000\u0000\u1201\u1202"+ + "\u0007\u0011\u0000\u0000\u1202\u1203\u0007\t\u0000\u0000\u1203\u1204\u0007"+ + "\u0010\u0000\u0000\u1204\u1205\u0007\t\u0000\u0000\u1205\u036a\u0001\u0000"+ + "\u0000\u0000\u1206\u1207\u0007\u001a\u0000\u0000\u1207\u1208\u0007\u000f"+ + "\u0000\u0000\u1208\u1209\u0007\u0006\u0000\u0000\u1209\u120a\u0007\u0019"+ + "\u0000\u0000\u120a\u120b\u0007\u0013\u0000\u0000\u120b\u120c\u0007\r\u0000"+ + "\u0000\u120c\u120d\u0007\n\u0000\u0000\u120d\u120e\u0007\t\u0000\u0000"+ + "\u120e\u120f\u0007\u0010\u0000\u0000\u120f\u036c\u0001\u0000\u0000\u0000"+ + "\u1210\u1211\u0007\u001a\u0000\u0000\u1211\u1212\u0007\u000f\u0000\u0000"+ + "\u1212\u1213\u0007\u0006\u0000\u0000\u1213\u1214\u0007\u0018\u0000\u0000"+ + "\u1214\u1215\u0007\u0005\u0000\u0000\u1215\u1216\u0007\r\u0000\u0000\u1216"+ + "\u1217\u0007\t\u0000\u0000\u1217\u1218\u0007\n\u0000\u0000\u1218\u036e"+ + "\u0001\u0000\u0000\u0000\u1219\u121a\u0007\u001a\u0000\u0000\u121a\u121b"+ + "\u0007\u000f\u0000\u0000\u121b\u121c\u0007\u0006\u0000\u0000\u121c\u121d"+ + "\u0007\u0018\u0000\u0000\u121d\u121e\u0007\u0011\u0000\u0000\u121e\u0370"+ + "\u0001\u0000\u0000\u0000\u121f\u1220\u0007\u001a\u0000\u0000\u1220\u1221"+ + "\u0007\u000f\u0000\u0000\u1221\u1222\u0007\u0006\u0000\u0000\u1222\u1223"+ + "\u0007\r\u0000\u0000\u1223\u1224\u0007\u0013\u0000\u0000\u1224\u1225\u0007"+ + "\u0013\u0000\u0000\u1225\u1226\u0007\u0010\u0000\u0000\u1226\u0372\u0001"+ + "\u0000\u0000\u0000\u1227\u1228\u0007\u001a\u0000\u0000\u1228\u1229\u0007"+ + "\u000f\u0000\u0000\u1229\u122a\u0007\u0006\u0000\u0000\u122a\u122b\u0007"+ + "\t\u0000\u0000\u122b\u122c\u0007\n\u0000\u0000\u122c\u122d\u0007\r\u0000"+ + "\u0000\u122d\u122e\u0007\u0011\u0000\u0000\u122e\u122f\u0007\u0005\u0000"+ + "\u0000\u122f\u1230\u0007\u0006\u0000\u0000\u1230\u1231\u0007\u0011\u0000"+ + "\u0000\u1231\u1232\u0007\u000b\u0000\u0000\u1232\u1233\u0007\n\u0000\u0000"+ + "\u1233\u0374\u0001\u0000\u0000\u0000\u1234\u1235\u0007\u000e\u0000\u0000"+ + "\u1235\u1236\u0007\u0005\u0000\u0000\u1236\u1237\u0007\u0006\u0000\u0000"+ + "\u1237\u1238\u0007\u0006\u0000\u0000\u1238\u0376\u0001\u0000\u0000\u0000"+ + "\u1239\u123a\u0007\u000e\u0000\u0000\u123a\u123b\u0007\u0016\u0000\u0000"+ + "\u123b\u123c\u0007\r\u0000\u0000\u123c\u123d\u0007\r\u0000\u0000\u123d"+ + "\u123e\u0007\n\u0000\u0000\u123e\u123f\u0007\u0007\u0000\u0000\u123f\u1240"+ + "\u0007\u0010\u0000\u0000\u1240\u0378\u0001\u0000\u0000\u0000\u1241\u1242"+ + "\u0007\u0005\u0000\u0000\u1242\u1243\u0007\u0010\u0000\u0000\u1243\u1244"+ + "\u0007\u0010\u0000\u0000\u1244\u1245\u0007\u0005\u0000\u0000\u1245\u1246"+ + "\u0007\u000e\u0000\u0000\u1246\u1247\u0007\u0014\u0000\u0000\u1247\u037a"+ + "\u0001\u0000\u0000\u0000\u1248\u1249\u0007\f\u0000\u0000\u1249\u124a\u0007"+ + "\n\u0000\u0000\u124a\u124b\u0007\u0010\u0000\u0000\u124b\u124c\u0007\u0005"+ + "\u0000\u0000\u124c\u124d\u0007\u000e\u0000\u0000\u124d\u124e\u0007\u0014"+ + "\u0000\u0000\u124e\u037c\u0001\u0000\u0000\u0000\u124f\u1250\u0007\n\u0000"+ + "\u0000\u1250\u1251\u0007\u001a\u0000\u0000\u1251\u1252\u0007\u0018\u0000"+ + "\u0000\u1252\u1253\u0007\r\u0000\u0000\u1253\u1254\u0007\n\u0000\u0000"+ + "\u1254\u1255\u0007\t\u0000\u0000\u1255\u1256\u0007\t\u0000\u0000\u1256"+ + "\u1257\u0007\u0011\u0000\u0000\u1257\u1258\u0007"; + private static final String _serializedATNSegment2 = + "\u0013\u0000\u0000\u1258\u1259\u0007\u0007\u0000\u0000\u1259\u037e\u0001"+ + "\u0000\u0000\u0000\u125a\u125b\u0007\u0017\u0000\u0000\u125b\u125c\u0007"+ + "\n\u0000\u0000\u125c\u125d\u0007\u0007\u0000\u0000\u125d\u125e\u0007\n"+ + "\u0000\u0000\u125e\u125f\u0007\r\u0000\u0000\u125f\u1260\u0007\u0005\u0000"+ + "\u0000\u1260\u1261\u0007\u0010\u0000\u0000\u1261\u1262\u0007\n\u0000\u0000"+ + "\u1262\u1263\u0007\f\u0000\u0000\u1263\u0380\u0001\u0000\u0000\u0000\u1264"+ + "\u1265\u0007\u0006\u0000\u0000\u1265\u1266\u0007\u0013\u0000\u0000\u1266"+ + "\u1267\u0007\u0017\u0000\u0000\u1267\u1268\u0007\u0017\u0000\u0000\u1268"+ + "\u1269\u0007\n\u0000\u0000\u1269\u126a\u0007\f\u0000\u0000\u126a\u0382"+ + "\u0001\u0000\u0000\u0000\u126b\u126c\u0007\t\u0000\u0000\u126c\u126d\u0007"+ + "\u0010\u0000\u0000\u126d\u126e\u0007\u0013\u0000\u0000\u126e\u126f\u0007"+ + "\r\u0000\u0000\u126f\u1270\u0007\n\u0000\u0000\u1270\u1271\u0007\f\u0000"+ + "\u0000\u1271\u0384\u0001\u0000\u0000\u0000\u1272\u1273\u0007\u0011\u0000"+ + "\u0000\u1273\u1274\u0007\u0007\u0000\u0000\u1274\u1275\u0007\u000e\u0000"+ + "\u0000\u1275\u1276\u0007\u0006\u0000\u0000\u1276\u1277\u0007\u0016\u0000"+ + "\u0000\u1277\u1278\u0007\f\u0000\u0000\u1278\u1279\u0007\n\u0000\u0000"+ + "\u1279\u0386\u0001\u0000\u0000\u0000\u127a\u127b\u0007\r\u0000\u0000\u127b"+ + "\u127c\u0007\u0013\u0000\u0000\u127c\u127d\u0007\u0016\u0000\u0000\u127d"+ + "\u127e\u0007\u0010\u0000\u0000\u127e\u127f\u0007\u0011\u0000\u0000\u127f"+ + "\u1280\u0007\u0007\u0000\u0000\u1280\u1281\u0007\n\u0000\u0000\u1281\u0388"+ + "\u0001\u0000\u0000\u0000\u1282\u1283\u0007\u0010\u0000\u0000\u1283\u1284"+ + "\u0007\r\u0000\u0000\u1284\u1285\u0007\u0005\u0000\u0000\u1285\u1286\u0007"+ + "\u0007\u0000\u0000\u1286\u1287\u0007\t\u0000\u0000\u1287\u1288\u0007\u0019"+ + "\u0000\u0000\u1288\u1289\u0007\u0013\u0000\u0000\u1289\u128a\u0007\r\u0000"+ + "\u0000\u128a\u128b\u0007\u000f\u0000\u0000\u128b\u038a\u0001\u0000\u0000"+ + "\u0000\u128c\u128d\u0007\u0011\u0000\u0000\u128d\u128e\u0007\u000f\u0000"+ + "\u0000\u128e\u128f\u0007\u0018\u0000\u0000\u128f\u1290\u0007\u0013\u0000"+ + "\u0000\u1290\u1291\u0007\r\u0000\u0000\u1291\u1292\u0007\u0010\u0000\u0000"+ + "\u1292\u038c\u0001\u0000\u0000\u0000\u1293\u1294\u0007\u0018\u0000\u0000"+ + "\u1294\u1295\u0007\u0013\u0000\u0000\u1295\u1296\u0007\u0006\u0000\u0000"+ + "\u1296\u1297\u0007\u0011\u0000\u0000\u1297\u1298\u0007\u000e\u0000\u0000"+ + "\u1298\u1299\u0007\b\u0000\u0000\u1299\u038e\u0001\u0000\u0000\u0000\u129a"+ + "\u129b\u0007\u000f\u0000\u0000\u129b\u129c\u0007\n\u0000\u0000\u129c\u129d"+ + "\u0007\u0010\u0000\u0000\u129d\u129e\u0007\u0014\u0000\u0000\u129e\u129f"+ + "\u0007\u0013\u0000\u0000\u129f\u12a0\u0007\f\u0000\u0000\u12a0\u0390\u0001"+ + "\u0000\u0000\u0000\u12a1\u12a2\u0007\r\u0000\u0000\u12a2\u12a3\u0007\n"+ + "\u0000\u0000\u12a3\u12a4\u0007\u0019\u0000\u0000\u12a4\u12a5\u0007\n\u0000"+ + "\u0000\u12a5\u12a6\u0007\r\u0000\u0000\u12a6\u12a7\u0007\n\u0000\u0000"+ + "\u12a7\u12a8\u0007\u0007\u0000\u0000\u12a8\u12a9\u0007\u000e\u0000\u0000"+ + "\u12a9\u12aa\u0007\u0011\u0000\u0000\u12aa\u12ab\u0007\u0007\u0000\u0000"+ + "\u12ab\u12ac\u0007\u0017\u0000\u0000\u12ac\u0392\u0001\u0000\u0000\u0000"+ + "\u12ad\u12ae\u0007\u0007\u0000\u0000\u12ae\u12af\u0007\n\u0000\u0000\u12af"+ + "\u12b0\u0007\u001c\u0000\u0000\u12b0\u0394\u0001\u0000\u0000\u0000\u12b1"+ + "\u12b2\u0007\u0013\u0000\u0000\u12b2\u12b3\u0007\u0006\u0000\u0000\u12b3"+ + "\u12b4\u0007\f\u0000\u0000\u12b4\u0396\u0001\u0000\u0000\u0000\u12b5\u12b6"+ + "\u0007\u001b\u0000\u0000\u12b6\u12b7\u0007\u0005\u0000\u0000\u12b7\u12b8"+ + "\u0007\u0006\u0000\u0000\u12b8\u12b9\u0007\u0016\u0000\u0000\u12b9\u12ba"+ + "\u0007\n\u0000\u0000\u12ba\u0398\u0001\u0000\u0000\u0000\u12bb\u12bc\u0007"+ + "\t\u0000\u0000\u12bc\u12bd\u0007\u0016\u0000\u0000\u12bd\u12be\u0007\u0012"+ + "\u0000\u0000\u12be\u12bf\u0007\t\u0000\u0000\u12bf\u12c0\u0007\u000e\u0000"+ + "\u0000\u12c0\u12c1\u0007\r\u0000\u0000\u12c1\u12c2\u0007\u0011\u0000\u0000"+ + "\u12c2\u12c3\u0007\u0018\u0000\u0000\u12c3\u12c4\u0007\u0010\u0000\u0000"+ + "\u12c4\u12c5\u0007\u0011\u0000\u0000\u12c5\u12c6\u0007\u0013\u0000\u0000"+ + "\u12c6\u12c7\u0007\u0007\u0000\u0000\u12c7\u039a\u0001\u0000\u0000\u0000"+ + "\u12c8\u12c9\u0007\u0018\u0000\u0000\u12c9\u12ca\u0007\u0016\u0000\u0000"+ + "\u12ca\u12cb\u0007\u0012\u0000\u0000\u12cb\u12cc\u0007\u0006\u0000\u0000"+ + "\u12cc\u12cd\u0007\u0011\u0000\u0000\u12cd\u12ce\u0007\u000e\u0000\u0000"+ + "\u12ce\u12cf\u0007\u0005\u0000\u0000\u12cf\u12d0\u0007\u0010\u0000\u0000"+ + "\u12d0\u12d1\u0007\u0011\u0000\u0000\u12d1\u12d2\u0007\u0013\u0000\u0000"+ + "\u12d2\u12d3\u0007\u0007\u0000\u0000\u12d3\u039c\u0001\u0000\u0000\u0000"+ + "\u12d4\u12d5\u0007\u0013\u0000\u0000\u12d5\u12d6\u0007\u0016\u0000\u0000"+ + "\u12d6\u12d7\u0007\u0010\u0000\u0000\u12d7\u039e\u0001\u0000\u0000\u0000"+ + "\u12d8\u12d9\u0007\n\u0000\u0000\u12d9\u12da\u0007\u0007\u0000\u0000\u12da"+ + "\u12db\u0007\f\u0000\u0000\u12db\u03a0\u0001\u0000\u0000\u0000\u12dc\u12dd"+ + "\u0007\r\u0000\u0000\u12dd\u12de\u0007\u0013\u0000\u0000\u12de\u12df\u0007"+ + "\u0016\u0000\u0000\u12df\u12e0\u0007\u0010\u0000\u0000\u12e0\u12e1\u0007"+ + "\u0011\u0000\u0000\u12e1\u12e2\u0007\u0007\u0000\u0000\u12e2\u12e3\u0007"+ + "\n\u0000\u0000\u12e3\u12e4\u0007\t\u0000\u0000\u12e4\u03a2\u0001\u0000"+ + "\u0000\u0000\u12e5\u12e6\u0007\t\u0000\u0000\u12e6\u12e7\u0007\u000e\u0000"+ + "\u0000\u12e7\u12e8\u0007\u0014\u0000\u0000\u12e8\u12e9\u0007\n\u0000\u0000"+ + "\u12e9\u12ea\u0007\u000f\u0000\u0000\u12ea\u12eb\u0007\u0005\u0000\u0000"+ + "\u12eb\u12ec\u0007\t\u0000\u0000\u12ec\u03a4\u0001\u0000\u0000\u0000\u12ed"+ + "\u12ee\u0007\u0018\u0000\u0000\u12ee\u12ef\u0007\r\u0000\u0000\u12ef\u12f0"+ + "\u0007\u0013\u0000\u0000\u12f0\u12f1\u0007\u000e\u0000\u0000\u12f1\u12f2"+ + "\u0007\n\u0000\u0000\u12f2\u12f3\u0007\f\u0000\u0000\u12f3\u12f4\u0007"+ + "\u0016\u0000\u0000\u12f4\u12f5\u0007\r\u0000\u0000\u12f5\u12f6\u0007\n"+ + "\u0000\u0000\u12f6\u12f7\u0007\t\u0000\u0000\u12f7\u03a6\u0001\u0000\u0000"+ + "\u0000\u12f8\u12f9\u0007\u0011\u0000\u0000\u12f9\u12fa\u0007\u0007\u0000"+ + "\u0000\u12fa\u12fb\u0007\u0018\u0000\u0000\u12fb\u12fc\u0007\u0016\u0000"+ + "\u0000\u12fc\u12fd\u0007\u0010\u0000\u0000\u12fd\u03a8\u0001\u0000\u0000"+ + "\u0000\u12fe\u12ff\u0007\t\u0000\u0000\u12ff\u1300\u0007\u0016\u0000\u0000"+ + "\u1300\u1301\u0007\u0018\u0000\u0000\u1301\u1302\u0007\u0018\u0000\u0000"+ + "\u1302\u1303\u0007\u0013\u0000\u0000\u1303\u1304\u0007\r\u0000\u0000\u1304"+ + "\u1305\u0007\u0010\u0000\u0000\u1305\u03aa\u0001\u0000\u0000\u0000\u1306"+ + "\u1307\u0007\u0018\u0000\u0000\u1307\u1308\u0007\u0005\u0000\u0000\u1308"+ + "\u1309\u0007\r\u0000\u0000\u1309\u130a\u0007\u0005\u0000\u0000\u130a\u130b"+ + "\u0007\u0006\u0000\u0000\u130b\u130c\u0007\u0006\u0000\u0000\u130c\u130d"+ + "\u0007\n\u0000\u0000\u130d\u130e\u0007\u0006\u0000\u0000\u130e\u03ac\u0001"+ + "\u0000\u0000\u0000\u130f\u1310\u0007\t\u0000\u0000\u1310\u1311\u0007\u001d"+ + "\u0000\u0000\u1311\u1312\u0007\u0006\u0000\u0000\u1312\u03ae\u0001\u0000"+ + "\u0000\u0000\u1313\u1314\u0007\f\u0000\u0000\u1314\u1315\u0007\n\u0000"+ + "\u0000\u1315\u1316\u0007\u0018\u0000\u0000\u1316\u1317\u0007\n\u0000\u0000"+ + "\u1317\u1318\u0007\u0007\u0000\u0000\u1318\u1319\u0007\f\u0000\u0000\u1319"+ + "\u131a\u0007\t\u0000\u0000\u131a\u03b0\u0001\u0000\u0000\u0000\u131b\u131c"+ + "\u0007\u0013\u0000\u0000\u131c\u131d\u0007\u001b\u0000\u0000\u131d\u131e"+ + "\u0007\n\u0000\u0000\u131e\u131f\u0007\r\u0000\u0000\u131f\u1320\u0007"+ + "\r\u0000\u0000\u1320\u1321\u0007\u0011\u0000\u0000\u1321\u1322\u0007\f"+ + "\u0000\u0000\u1322\u1323\u0007\u0011\u0000\u0000\u1323\u1324\u0007\u0007"+ + "\u0000\u0000\u1324\u1325\u0007\u0017\u0000\u0000\u1325\u03b2\u0001\u0000"+ + "\u0000\u0000\u1326\u1327\u0007\u000e\u0000\u0000\u1327\u1328\u0007\u0013"+ + "\u0000\u0000\u1328\u1329\u0007\u0007\u0000\u0000\u1329\u132a\u0007\u0019"+ + "\u0000\u0000\u132a\u132b\u0007\u0006\u0000\u0000\u132b\u132c\u0007\u0011"+ + "\u0000\u0000\u132c\u132d\u0007\u000e\u0000\u0000\u132d\u132e\u0007\u0010"+ + "\u0000\u0000\u132e\u03b4\u0001\u0000\u0000\u0000\u132f\u1330\u0007\t\u0000"+ + "\u0000\u1330\u1331\u0007\u0015\u0000\u0000\u1331\u1332\u0007\u0011\u0000"+ + "\u0000\u1332\u1333\u0007\u0018\u0000\u0000\u1333\u03b6\u0001\u0000\u0000"+ + "\u0000\u1334\u1335\u0007\u0006\u0000\u0000\u1335\u1336\u0007\u0013\u0000"+ + "\u0000\u1336\u1337\u0007\u000e\u0000\u0000\u1337\u1338\u0007\u0015\u0000"+ + "\u0000\u1338\u1339\u0007\n\u0000\u0000\u1339\u133a\u0007\f\u0000\u0000"+ + "\u133a\u03b8\u0001\u0000\u0000\u0000\u133b\u133c\u0007\u0010\u0000\u0000"+ + "\u133c\u133d\u0007\u0011\u0000\u0000\u133d\u133e\u0007\n\u0000\u0000\u133e"+ + "\u133f\u0007\t\u0000\u0000\u133f\u03ba\u0001\u0000\u0000\u0000\u1340\u1341"+ + "\u0007\r\u0000\u0000\u1341\u1342\u0007\u0013\u0000\u0000\u1342\u1343\u0007"+ + "\u0006\u0000\u0000\u1343\u1344\u0007\u0006\u0000\u0000\u1344\u1345\u0007"+ + "\u0016\u0000\u0000\u1345\u1346\u0007\u0018\u0000\u0000\u1346\u03bc\u0001"+ + "\u0000\u0000\u0000\u1347\u1348\u0007\u000e\u0000\u0000\u1348\u1349\u0007"+ + "\u0016\u0000\u0000\u1349\u134a\u0007\u0012\u0000\u0000\u134a\u134b\u0007"+ + "\n\u0000\u0000\u134b\u03be\u0001\u0000\u0000\u0000\u134c\u134d\u0007\u0017"+ + "\u0000\u0000\u134d\u134e\u0007\r\u0000\u0000\u134e\u134f\u0007\u0013\u0000"+ + "\u0000\u134f\u1350\u0007\u0016\u0000\u0000\u1350\u1351\u0007\u0018\u0000"+ + "\u0000\u1351\u1352\u0007\u0011\u0000\u0000\u1352\u1353\u0007\u0007\u0000"+ + "\u0000\u1353\u1354\u0007\u0017\u0000\u0000\u1354\u03c0\u0001\u0000\u0000"+ + "\u0000\u1355\u1356\u0007\t\u0000\u0000\u1356\u1357\u0007\n\u0000\u0000"+ + "\u1357\u1358\u0007\u0010\u0000\u0000\u1358\u1359\u0007\t\u0000\u0000\u1359"+ + "\u03c2\u0001\u0000\u0000\u0000\u135a\u135b\u0007\u0010\u0000\u0000\u135b"+ + "\u135c\u0007\u0005\u0000\u0000\u135c\u135d\u0007\u0012\u0000\u0000\u135d"+ + "\u135e\u0007\u0006\u0000\u0000\u135e\u135f\u0007\n\u0000\u0000\u135f\u1360"+ + "\u0007\t\u0000\u0000\u1360\u1361\u0007\u0005\u0000\u0000\u1361\u1362\u0007"+ + "\u000f\u0000\u0000\u1362\u1363\u0007\u0018\u0000\u0000\u1363\u1364\u0007"+ + "\u0006\u0000\u0000\u1364\u1365\u0007\n\u0000\u0000\u1365\u03c4\u0001\u0000"+ + "\u0000\u0000\u1366\u1367\u0007\u0013\u0000\u0000\u1367\u1368\u0007\r\u0000"+ + "\u0000\u1368\u1369\u0007\f\u0000\u0000\u1369\u136a\u0007\u0011\u0000\u0000"+ + "\u136a\u136b\u0007\u0007\u0000\u0000\u136b\u136c\u0007\u0005\u0000\u0000"+ + "\u136c\u136d\u0007\u0006\u0000\u0000\u136d\u136e\u0007\u0011\u0000\u0000"+ + "\u136e\u136f\u0007\u0010\u0000\u0000\u136f\u1370\u0007\b\u0000\u0000\u1370"+ + "\u03c6\u0001\u0000\u0000\u0000\u1371\u1372\u0007\u001a\u0000\u0000\u1372"+ + "\u1373\u0007\u000f\u0000\u0000\u1373\u1374\u0007\u0006\u0000\u0000\u1374"+ + "\u1375\u0007\u0010\u0000\u0000\u1375\u1376\u0007\u0005\u0000\u0000\u1376"+ + "\u1377\u0007\u0012\u0000\u0000\u1377\u1378\u0007\u0006\u0000\u0000\u1378"+ + "\u1379\u0007\n\u0000\u0000\u1379\u03c8\u0001\u0000\u0000\u0000\u137a\u137b"+ + "\u0007\u000e\u0000\u0000\u137b\u137c\u0007\u0013\u0000\u0000\u137c\u137d"+ + "\u0007\u0006\u0000\u0000\u137d\u137e\u0007\u0016\u0000\u0000\u137e\u137f"+ + "\u0007\u000f\u0000\u0000\u137f\u1380\u0007\u0007\u0000\u0000\u1380\u1381"+ + "\u0007\t\u0000\u0000\u1381\u03ca\u0001\u0000\u0000\u0000\u1382\u1383\u0007"+ + "\u001a\u0000\u0000\u1383\u1384\u0007\u000f\u0000\u0000\u1384\u1385\u0007"+ + "\u0006\u0000\u0000\u1385\u1386\u0007\u0007\u0000\u0000\u1386\u1387\u0007"+ + "\u0005\u0000\u0000\u1387\u1388\u0007\u000f\u0000\u0000\u1388\u1389\u0007"+ + "\n\u0000\u0000\u1389\u138a\u0007\t\u0000\u0000\u138a\u138b\u0007\u0018"+ + "\u0000\u0000\u138b\u138c\u0007\u0005\u0000\u0000\u138c\u138d\u0007\u000e"+ + "\u0000\u0000\u138d\u138e\u0007\n\u0000\u0000\u138e\u138f\u0007\t\u0000"+ + "\u0000\u138f\u03cc\u0001\u0000\u0000\u0000\u1390\u1391\u0007\r\u0000\u0000"+ + "\u1391\u1392\u0007\u0013\u0000\u0000\u1392\u1393\u0007\u001c\u0000\u0000"+ + "\u1393\u1394\u0007\u0010\u0000\u0000\u1394\u1395\u0007\b\u0000\u0000\u1395"+ + "\u1396\u0007\u0018\u0000\u0000\u1396\u1397\u0007\n\u0000\u0000\u1397\u03ce"+ + "\u0001\u0000\u0000\u0000\u1398\u1399\u0007\u0007\u0000\u0000\u1399\u139a"+ + "\u0007\u0013\u0000\u0000\u139a\u139b\u0007\r\u0000\u0000\u139b\u139c\u0007"+ + "\u000f\u0000\u0000\u139c\u139d\u0007\u0005\u0000\u0000\u139d\u139e\u0007"+ + "\u0006\u0000\u0000\u139e\u139f\u0007\u0011\u0000\u0000\u139f\u13a0\u0007"+ + "\u000b\u0000\u0000\u13a0\u13a1\u0007\n\u0000\u0000\u13a1\u13a2\u0007\f"+ + "\u0000\u0000\u13a2\u03d0\u0001\u0000\u0000\u0000\u13a3\u13a4\u0007\u001c"+ + "\u0000\u0000\u13a4\u13a5\u0007\u0011\u0000\u0000\u13a5\u13a6\u0007\u0010"+ + "\u0000\u0000\u13a6\u13a7\u0007\u0014\u0000\u0000\u13a7\u13a8\u0007\u0011"+ + "\u0000\u0000\u13a8\u13a9\u0007\u0007\u0000\u0000\u13a9\u03d2\u0001\u0000"+ + "\u0000\u0000\u13aa\u13ab\u0007\u0019\u0000\u0000\u13ab\u13ac\u0007\u0011"+ + "\u0000\u0000\u13ac\u13ad\u0007\u0006\u0000\u0000\u13ad\u13ae\u0007\u0010"+ + "\u0000\u0000\u13ae\u13af\u0007\n\u0000\u0000\u13af\u13b0\u0007\r\u0000"+ + "\u0000\u13b0\u03d4\u0001\u0000\u0000\u0000\u13b1\u13b2\u0007\u0017\u0000"+ + "\u0000\u13b2\u13b3\u0007\r\u0000\u0000\u13b3\u13b4\u0007\u0013\u0000\u0000"+ + "\u13b4\u13b5\u0007\u0016\u0000\u0000\u13b5\u13b6\u0007\u0018\u0000\u0000"+ + "\u13b6\u13b7\u0007\t\u0000\u0000\u13b7\u03d6\u0001\u0000\u0000\u0000\u13b8"+ + "\u13b9\u0007\u0013\u0000\u0000\u13b9\u13ba\u0007\u0010\u0000\u0000\u13ba"+ + "\u13bb\u0007\u0014\u0000\u0000\u13bb\u13bc\u0007\n\u0000\u0000\u13bc\u13bd"+ + "\u0007\r\u0000\u0000\u13bd\u13be\u0007\t\u0000\u0000\u13be\u03d8\u0001"+ + "\u0000\u0000\u0000\u13bf\u13c0\u0007\u0007\u0000\u0000\u13c0\u13c1\u0007"+ + "\u0019\u0000\u0000\u13c1\u13c2\u0007\u000e\u0000\u0000\u13c2\u03da\u0001"+ + "\u0000\u0000\u0000\u13c3\u13c4\u0007\u0007\u0000\u0000\u13c4\u13c5\u0007"+ + "\u0019\u0000\u0000\u13c5\u13c6\u0007\f\u0000\u0000\u13c6\u03dc\u0001\u0000"+ + "\u0000\u0000\u13c7\u13c8\u0007\u0007\u0000\u0000\u13c8\u13c9\u0007\u0019"+ + "\u0000\u0000\u13c9\u13ca\u0007\u0015\u0000\u0000\u13ca\u13cb\u0007\u000e"+ + "\u0000\u0000\u13cb\u03de\u0001\u0000\u0000\u0000\u13cc\u13cd\u0007\u0007"+ + "\u0000\u0000\u13cd\u13ce\u0007\u0019\u0000\u0000\u13ce\u13cf\u0007\u0015"+ + "\u0000\u0000\u13cf\u13d0\u0007\f\u0000\u0000\u13d0\u03e0\u0001\u0000\u0000"+ + "\u0000\u13d1\u13d2\u0007\u0016\u0000\u0000\u13d2\u13d3\u0007\n\u0000\u0000"+ + "\u13d3\u13d4\u0007\t\u0000\u0000\u13d4\u13d5\u0007\u000e\u0000\u0000\u13d5"+ + "\u13d6\u0007\u0005\u0000\u0000\u13d6\u13d7\u0007\u0018\u0000\u0000\u13d7"+ + "\u13d8\u0007\n\u0000\u0000\u13d8\u03e2\u0001\u0000\u0000\u0000\u13d9\u13da"+ + "\u0007\u001b\u0000\u0000\u13da\u13db\u0007\u0011\u0000\u0000\u13db\u13dc"+ + "\u0007\n\u0000\u0000\u13dc\u13dd\u0007\u001c\u0000\u0000\u13dd\u13de\u0007"+ + "\t\u0000\u0000\u13de\u03e4\u0001\u0000\u0000\u0000\u13df\u13e0\u0007\u0007"+ + "\u0000\u0000\u13e0\u13e1\u0007\u0013\u0000\u0000\u13e1\u13e2\u0007\r\u0000"+ + "\u0000\u13e2\u13e3\u0007\u000f\u0000\u0000\u13e3\u13e4\u0007\u0005\u0000"+ + "\u0000\u13e4\u13e5\u0007\u0006\u0000\u0000\u13e5\u13e6\u0007\u0011\u0000"+ + "\u0000\u13e6\u13e7\u0007\u000b\u0000\u0000\u13e7\u13e8\u0007\n\u0000\u0000"+ + "\u13e8\u03e6\u0001\u0000\u0000\u0000\u13e9\u13ea\u0007\f\u0000\u0000\u13ea"+ + "\u13eb\u0007\u0016\u0000\u0000\u13eb\u13ec\u0007\u000f\u0000\u0000\u13ec"+ + "\u13ed\u0007\u0018\u0000\u0000\u13ed\u03e8\u0001\u0000\u0000\u0000\u13ee"+ + "\u13ef\u0007\u0018\u0000\u0000\u13ef\u13f0\u0007\r\u0000\u0000\u13f0\u13f1"+ + "\u0007\u0011\u0000\u0000\u13f1\u13f2\u0007\u0007\u0000\u0000\u13f2\u13f3"+ + "\u0007\u0010\u0000\u0000\u13f3\u13f4\u0005_\u0000\u0000\u13f4\u13f5\u0007"+ + "\t\u0000\u0000\u13f5\u13f6\u0007\u0010\u0000\u0000\u13f6\u13f7\u0007\r"+ + "\u0000\u0000\u13f7\u13f8\u0007\u0011\u0000\u0000\u13f8\u13f9\u0007\u000e"+ + "\u0000\u0000\u13f9\u13fa\u0007\u0010\u0000\u0000\u13fa\u13fb\u0005_\u0000"+ + "\u0000\u13fb\u13fc\u0007\u0018\u0000\u0000\u13fc\u13fd\u0007\u0005\u0000"+ + "\u0000\u13fd\u13fe\u0007\r\u0000\u0000\u13fe\u13ff\u0007\u0005\u0000\u0000"+ + "\u13ff\u1400\u0007\u000f\u0000\u0000\u1400\u1401\u0007\t\u0000\u0000\u1401"+ + "\u03ea\u0001\u0000\u0000\u0000\u1402\u1403\u0007\u001b\u0000\u0000\u1403"+ + "\u1404\u0007\u0005\u0000\u0000\u1404\u1405\u0007\r\u0000\u0000\u1405\u1406"+ + "\u0007\u0011\u0000\u0000\u1406\u1407\u0007\u0005\u0000\u0000\u1407\u1408"+ + "\u0007\u0012\u0000\u0000\u1408\u1409\u0007\u0006\u0000\u0000\u1409\u140a"+ + "\u0007\n\u0000\u0000\u140a\u140b\u0005_\u0000\u0000\u140b\u140c\u0007"+ + "\u000e\u0000\u0000\u140c\u140d\u0007\u0013\u0000\u0000\u140d\u140e\u0007"+ + "\u0007\u0000\u0000\u140e\u140f\u0007\u0019\u0000\u0000\u140f\u1410\u0007"+ + "\u0006\u0000\u0000\u1410\u1411\u0007\u0011\u0000\u0000\u1411\u1412\u0007"+ + "\u000e\u0000\u0000\u1412\u1413\u0007\u0010\u0000\u0000\u1413\u03ec\u0001"+ + "\u0000\u0000\u0000\u1414\u1415\u0007\n\u0000\u0000\u1415\u1416\u0007\r"+ + "\u0000\u0000\u1416\u1417\u0007\r\u0000\u0000\u1417\u1418\u0007\u0013\u0000"+ + "\u0000\u1418\u1419\u0007\r\u0000\u0000\u1419\u03ee\u0001\u0000\u0000\u0000"+ + "\u141a\u141b\u0007\u0016\u0000\u0000\u141b\u141c\u0007\t\u0000\u0000\u141c"+ + "\u141d\u0007\n\u0000\u0000\u141d\u141e\u0005_\u0000\u0000\u141e\u141f"+ + "\u0007\u001b\u0000\u0000\u141f\u1420\u0007\u0005\u0000\u0000\u1420\u1421"+ + "\u0007\r\u0000\u0000\u1421\u1422\u0007\u0011\u0000\u0000\u1422\u1423\u0007"+ + "\u0005\u0000\u0000\u1423\u1424\u0007\u0012\u0000\u0000\u1424\u1425\u0007"+ + "\u0006\u0000\u0000\u1425\u1426\u0007\n\u0000\u0000\u1426\u03f0\u0001\u0000"+ + "\u0000\u0000\u1427\u1428\u0007\u0016\u0000\u0000\u1428\u1429\u0007\t\u0000"+ + "\u0000\u1429\u142a\u0007\n\u0000\u0000\u142a\u142b\u0005_\u0000\u0000"+ + "\u142b\u142c\u0007\u000e\u0000\u0000\u142c\u142d\u0007\u0013\u0000\u0000"+ + "\u142d\u142e\u0007\u0006\u0000\u0000\u142e\u142f\u0007\u0016\u0000\u0000"+ + "\u142f\u1430\u0007\u000f\u0000\u0000\u1430\u1431\u0007\u0007\u0000\u0000"+ + "\u1431\u03f2\u0001\u0000\u0000\u0000\u1432\u1433\u0007\u0005\u0000\u0000"+ + "\u1433\u1434\u0007\u0006\u0000\u0000\u1434\u1435\u0007\u0011\u0000\u0000"+ + "\u1435\u1436\u0007\u0005\u0000\u0000\u1436\u1437\u0007\t\u0000\u0000\u1437"+ + "\u03f4\u0001\u0000\u0000\u0000\u1438\u1439\u0007\u000e\u0000\u0000\u1439"+ + "\u143a\u0007\u0013\u0000\u0000\u143a\u143b\u0007\u0007\u0000\u0000\u143b"+ + "\u143c\u0007\t\u0000\u0000\u143c\u143d\u0007\u0010\u0000\u0000\u143d\u143e"+ + "\u0007\u0005\u0000\u0000\u143e\u143f\u0007\u0007\u0000\u0000\u143f\u1440"+ + "\u0007\u0010\u0000\u0000\u1440\u03f6\u0001\u0000\u0000\u0000\u1441\u1442"+ + "\u0007\u0018\u0000\u0000\u1442\u1443\u0007\n\u0000\u0000\u1443\u1444\u0007"+ + "\r\u0000\u0000\u1444\u1445\u0007\u0019\u0000\u0000\u1445\u1446\u0007\u0013"+ + "\u0000\u0000\u1446\u1447\u0007\r\u0000\u0000\u1447\u1448\u0007\u000f\u0000"+ + "\u0000\u1448\u03f8\u0001\u0000\u0000\u0000\u1449\u144a\u0007\u0017\u0000"+ + "\u0000\u144a\u144b\u0007\n\u0000\u0000\u144b\u144c\u0007\u0010\u0000\u0000"+ + "\u144c\u03fa\u0001\u0000\u0000\u0000\u144d\u144e\u0007\f\u0000\u0000\u144e"+ + "\u144f\u0007\u0011\u0000\u0000\u144f\u1450\u0007\u0005\u0000\u0000\u1450"+ + "\u1451\u0007\u0017\u0000\u0000\u1451\u1452\u0007\u0007\u0000\u0000\u1452"+ + "\u1453\u0007\u0013\u0000\u0000\u1453\u1454\u0007\t\u0000\u0000\u1454\u1455"+ + "\u0007\u0010\u0000\u0000\u1455\u1456\u0007\u0011\u0000\u0000\u1456\u1457"+ + "\u0007\u000e\u0000\u0000\u1457\u1458\u0007\t\u0000\u0000\u1458\u03fc\u0001"+ + "\u0000\u0000\u0000\u1459\u145a\u0007\t\u0000\u0000\u145a\u145b\u0007\u0010"+ + "\u0000\u0000\u145b\u145c\u0007\u0005\u0000\u0000\u145c\u145d\u0007\u000e"+ + "\u0000\u0000\u145d\u145e\u0007\u0015\u0000\u0000\u145e\u145f\u0007\n\u0000"+ + "\u0000\u145f\u1460\u0007\f\u0000\u0000\u1460\u03fe\u0001\u0000\u0000\u0000"+ + "\u1461\u1462\u0007\n\u0000\u0000\u1462\u1463\u0007\u0006\u0000\u0000\u1463"+ + "\u1464\u0007\t\u0000\u0000\u1464\u1465\u0007\u0011\u0000\u0000\u1465\u1466"+ + "\u0007\u0019\u0000\u0000\u1466\u0400\u0001\u0000\u0000\u0000\u1467\u1468"+ + "\u0007\u001c\u0000\u0000\u1468\u1469\u0007\u0014\u0000\u0000\u1469\u146a"+ + "\u0007\u0011\u0000\u0000\u146a\u146b\u0007\u0006\u0000\u0000\u146b\u146c"+ + "\u0007\n\u0000\u0000\u146c\u0402\u0001\u0000\u0000\u0000\u146d\u146e\u0007"+ + "\r\u0000\u0000\u146e\u146f\u0007\n\u0000\u0000\u146f\u1470\u0007\u001b"+ + "\u0000\u0000\u1470\u1471\u0007\n\u0000\u0000\u1471\u1472\u0007\r\u0000"+ + "\u0000\u1472\u1473\u0007\t\u0000\u0000\u1473\u1474\u0007\n\u0000\u0000"+ + "\u1474\u0404\u0001\u0000\u0000\u0000\u1475\u1476\u0007\u0019\u0000\u0000"+ + "\u1476\u1477\u0007\u0013\u0000\u0000\u1477\u1478\u0007\r\u0000\u0000\u1478"+ + "\u1479\u0007\n\u0000\u0000\u1479\u147a\u0007\u0005\u0000\u0000\u147a\u147b"+ + "\u0007\u000e\u0000\u0000\u147b\u147c\u0007\u0014\u0000\u0000\u147c\u0406"+ + "\u0001\u0000\u0000\u0000\u147d\u147e\u0007\t\u0000\u0000\u147e\u147f\u0007"+ + "\u0006\u0000\u0000\u147f\u1480\u0007\u0011\u0000\u0000\u1480\u1481\u0007"+ + "\u000e\u0000\u0000\u1481\u1482\u0007\n\u0000\u0000\u1482\u0408\u0001\u0000"+ + "\u0000\u0000\u1483\u1484\u0007\n\u0000\u0000\u1484\u1485\u0007\u001a\u0000"+ + "\u0000\u1485\u1486\u0007\u0011\u0000\u0000\u1486\u1487\u0007\u0010\u0000"+ + "\u0000\u1487\u040a\u0001\u0000\u0000\u0000\u1488\u1489\u0007\r\u0000\u0000"+ + "\u1489\u148a\u0007\n\u0000\u0000\u148a\u148b\u0007\u0010\u0000\u0000\u148b"+ + "\u148c\u0007\u0016\u0000\u0000\u148c\u148d\u0007\r\u0000\u0000\u148d\u148e"+ + "\u0007\u0007\u0000\u0000\u148e\u040c\u0001\u0000\u0000\u0000\u148f\u1490"+ + "\u0007\u001d\u0000\u0000\u1490\u1491\u0007\u0016\u0000\u0000\u1491\u1492"+ + "\u0007\n\u0000\u0000\u1492\u1493\u0007\r\u0000\u0000\u1493\u1494\u0007"+ + "\b\u0000\u0000\u1494\u040e\u0001\u0000\u0000\u0000\u1495\u1496\u0007\r"+ + "\u0000\u0000\u1496\u1497\u0007\u0005\u0000\u0000\u1497\u1498\u0007\u0011"+ + "\u0000\u0000\u1498\u1499\u0007\t\u0000\u0000\u1499\u149a\u0007\n\u0000"+ + "\u0000\u149a\u0410\u0001\u0000\u0000\u0000\u149b\u149c\u0007\t\u0000\u0000"+ + "\u149c\u149d\u0007\u001d\u0000\u0000\u149d\u149e\u0007\u0006\u0000\u0000"+ + "\u149e\u149f\u0007\t\u0000\u0000\u149f\u14a0\u0007\u0010\u0000\u0000\u14a0"+ + "\u14a1\u0007\u0005\u0000\u0000\u14a1\u14a2\u0007\u0010\u0000\u0000\u14a2"+ + "\u14a3\u0007\n\u0000\u0000\u14a3\u0412\u0001\u0000\u0000\u0000\u14a4\u14a5"+ + "\u0007\f\u0000\u0000\u14a5\u14a6\u0007\n\u0000\u0000\u14a6\u14a7\u0007"+ + "\u0012\u0000\u0000\u14a7\u14a8\u0007\u0016\u0000\u0000\u14a8\u14a9\u0007"+ + "\u0017\u0000\u0000\u14a9\u0414\u0001\u0000\u0000\u0000\u14aa\u14ab\u0007"+ + "\u0006\u0000\u0000\u14ab\u14ac\u0007\u0013\u0000\u0000\u14ac\u14ad\u0007"+ + "\u0017\u0000\u0000\u14ad\u0416\u0001\u0000\u0000\u0000\u14ae\u14af\u0007"+ + "\u0011\u0000\u0000\u14af\u14b0\u0007\u0007\u0000\u0000\u14b0\u14b1\u0007"+ + "\u0019\u0000\u0000\u14b1\u14b2\u0007\u0013\u0000\u0000\u14b2\u0418\u0001"+ + "\u0000\u0000\u0000\u14b3\u14b4\u0007\u0007\u0000\u0000\u14b4\u14b5\u0007"+ + "\u0013\u0000\u0000\u14b5\u14b6\u0007\u0010\u0000\u0000\u14b6\u14b7\u0007"+ + "\u0011\u0000\u0000\u14b7\u14b8\u0007\u000e\u0000\u0000\u14b8\u14b9\u0007"+ + "\n\u0000\u0000\u14b9\u041a\u0001\u0000\u0000\u0000\u14ba\u14bb\u0007\u001c"+ + "\u0000\u0000\u14bb\u14bc\u0007\u0005\u0000\u0000\u14bc\u14bd\u0007\r\u0000"+ + "\u0000\u14bd\u14be\u0007\u0007\u0000\u0000\u14be\u14bf\u0007\u0011\u0000"+ + "\u0000\u14bf\u14c0\u0007\u0007\u0000\u0000\u14c0\u14c1\u0007\u0017\u0000"+ + "\u0000\u14c1\u041c\u0001\u0000\u0000\u0000\u14c2\u14c3\u0007\n\u0000\u0000"+ + "\u14c3\u14c4\u0007\u001a\u0000\u0000\u14c4\u14c5\u0007\u000e\u0000\u0000"+ + "\u14c5\u14c6\u0007\n\u0000\u0000\u14c6\u14c7\u0007\u0018\u0000\u0000\u14c7"+ + "\u14c8\u0007\u0010\u0000\u0000\u14c8\u14c9\u0007\u0011\u0000\u0000\u14c9"+ + "\u14ca\u0007\u0013\u0000\u0000\u14ca\u14cb\u0007\u0007\u0000\u0000\u14cb"+ + "\u041e\u0001\u0000\u0000\u0000\u14cc\u14cd\u0007\u0005\u0000\u0000\u14cd"+ + "\u14ce\u0007\t\u0000\u0000\u14ce\u14cf\u0007\t\u0000\u0000\u14cf\u14d0"+ + "\u0007\n\u0000\u0000\u14d0\u14d1\u0007\r\u0000\u0000\u14d1\u14d2\u0007"+ + "\u0010\u0000\u0000\u14d2\u0420\u0001\u0000\u0000\u0000\u14d3\u14d4\u0007"+ + "\u0006\u0000\u0000\u14d4\u14d5\u0007\u0013\u0000\u0000\u14d5\u14d6\u0007"+ + "\u0013\u0000\u0000\u14d6\u14d7\u0007\u0018\u0000\u0000\u14d7\u0422\u0001"+ + "\u0000\u0000\u0000\u14d8\u14d9\u0007\u0013\u0000\u0000\u14d9\u14da\u0007"+ + "\u0018\u0000\u0000\u14da\u14db\u0007\n\u0000\u0000\u14db\u14dc\u0007\u0007"+ + "\u0000\u0000\u14dc\u0424\u0001\u0000\u0000\u0000\u14dd\u14de\u0007\u0005"+ + "\u0000\u0000\u14de\u14df\u0007\u0012\u0000\u0000\u14df\u14e0\u0007\t\u0000"+ + "\u0000\u14e0\u0426\u0001\u0000\u0000\u0000\u14e1\u14e2\u0007\u000e\u0000"+ + "\u0000\u14e2\u14e3\u0007\u0012\u0000\u0000\u14e3\u14e4\u0007\r\u0000\u0000"+ + "\u14e4\u14e5\u0007\u0010\u0000\u0000\u14e5\u0428\u0001\u0000\u0000\u0000"+ + "\u14e6\u14e7\u0007\u000e\u0000\u0000\u14e7\u14e8\u0007\n\u0000\u0000\u14e8"+ + "\u14e9\u0007\u0011\u0000\u0000\u14e9\u14ea\u0007\u0006\u0000\u0000\u14ea"+ + "\u042a\u0001\u0000\u0000\u0000\u14eb\u14ec\u0007\u000e\u0000\u0000\u14ec"+ + "\u14ed\u0007\n\u0000\u0000\u14ed\u14ee\u0007\u0011\u0000\u0000\u14ee\u14ef"+ + "\u0007\u0006\u0000\u0000\u14ef\u14f0\u0007\u0011\u0000\u0000\u14f0\u14f1"+ + "\u0007\u0007\u0000\u0000\u14f1\u14f2\u0007\u0017\u0000\u0000\u14f2\u042c"+ + "\u0001\u0000\u0000\u0000\u14f3\u14f4\u0007\f\u0000\u0000\u14f4\u14f5\u0007"+ + "\n\u0000\u0000\u14f5\u14f6\u0007\u0017\u0000\u0000\u14f6\u14f7\u0007\r"+ + "\u0000\u0000\u14f7\u14f8\u0007\n\u0000\u0000\u14f8\u14f9\u0007\n\u0000"+ + "\u0000\u14f9\u14fa\u0007\t\u0000\u0000\u14fa\u042e\u0001\u0000\u0000\u0000"+ + "\u14fb\u14fc\u0007\f\u0000\u0000\u14fc\u14fd\u0007\u0011\u0000\u0000\u14fd"+ + "\u14fe\u0007\u001b\u0000\u0000\u14fe\u0430\u0001\u0000\u0000\u0000\u14ff"+ + "\u1500\u0007\n\u0000\u0000\u1500\u1501\u0007\u001a\u0000\u0000\u1501\u1502"+ + "\u0007\u0018\u0000\u0000\u1502\u0432\u0001\u0000\u0000\u0000\u1503\u1504"+ + "\u0007\u0019\u0000\u0000\u1504\u1505\u0007\u0005\u0000\u0000\u1505\u1506"+ + "\u0007\u000e\u0000\u0000\u1506\u1507\u0007\u0010\u0000\u0000\u1507\u1508"+ + "\u0007\u0013\u0000\u0000\u1508\u1509\u0007\r\u0000\u0000\u1509\u150a\u0007"+ + "\u0011\u0000\u0000\u150a\u150b\u0007\u0005\u0000\u0000\u150b\u150c\u0007"+ + "\u0006\u0000\u0000\u150c\u0434\u0001\u0000\u0000\u0000\u150d\u150e\u0007"+ + "\u0019\u0000\u0000\u150e\u150f\u0007\u0006\u0000\u0000\u150f\u1510\u0007"+ + "\u0013\u0000\u0000\u1510\u1511\u0007\u0013\u0000\u0000\u1511\u1512\u0007"+ + "\r\u0000\u0000\u1512\u0436\u0001\u0000\u0000\u0000\u1513\u1514\u0007\u0017"+ + "\u0000\u0000\u1514\u1515\u0007\u000e\u0000\u0000\u1515\u1516\u0007\f\u0000"+ + "\u0000\u1516\u0438\u0001\u0000\u0000\u0000\u1517\u1518\u0007\u0006\u0000"+ + "\u0000\u1518\u1519\u0007\u000e\u0000\u0000\u1519\u151a\u0007\u000f\u0000"+ + "\u0000\u151a\u043a\u0001\u0000\u0000\u0000\u151b\u151c\u0007\u0006\u0000"+ + "\u0000\u151c\u151d\u0007\u0007\u0000\u0000\u151d\u043c\u0001\u0000\u0000"+ + "\u0000\u151e\u151f\u0007\u0006\u0000\u0000\u151f\u1520\u0007\u0013\u0000"+ + "\u0000\u1520\u1521\u0007\u0017\u0000\u0000\u1521\u1522\u00051\u0000\u0000"+ + "\u1522\u1523\u00050\u0000\u0000\u1523\u043e\u0001\u0000\u0000\u0000\u1524"+ + "\u1525\u0007\u000f\u0000\u0000\u1525\u1526\u0007\u0011\u0000\u0000\u1526"+ + "\u1527\u0007\u0007\u0000\u0000\u1527\u1528\u0005_\u0000\u0000\u1528\u1529"+ + "\u0007\t\u0000\u0000\u1529\u152a\u0007\u000e\u0000\u0000\u152a\u152b\u0007"+ + "\u0005\u0000\u0000\u152b\u152c\u0007\u0006\u0000\u0000\u152c\u152d\u0007"+ + "\n\u0000\u0000\u152d\u0440\u0001\u0000\u0000\u0000\u152e\u152f\u0007\u000f"+ + "\u0000\u0000\u152f\u1530\u0007\u0013\u0000\u0000\u1530\u1531\u0007\f\u0000"+ + "\u0000\u1531\u0442\u0001\u0000\u0000\u0000\u1532\u1533\u0007\u0018\u0000"+ + "\u0000\u1533\u1534\u0007\u0011\u0000\u0000\u1534\u0444\u0001\u0000\u0000"+ + "\u0000\u1535\u1536\u0007\u0018\u0000\u0000\u1536\u1537\u0007\u0013\u0000"+ + "\u0000\u1537\u1538\u0007\u001c\u0000\u0000\u1538\u1539\u0007\n\u0000\u0000"+ + "\u1539\u153a\u0007\r\u0000\u0000\u153a\u0446\u0001\u0000\u0000\u0000\u153b"+ + "\u153c\u0007\r\u0000\u0000\u153c\u153d\u0007\u0005\u0000\u0000\u153d\u153e"+ + "\u0007\f\u0000\u0000\u153e\u153f\u0007\u0011\u0000\u0000\u153f\u1540\u0007"+ + "\u0005\u0000\u0000\u1540\u1541\u0007\u0007\u0000\u0000\u1541\u1542\u0007"+ + "\t\u0000\u0000\u1542\u0448\u0001\u0000\u0000\u0000\u1543\u1544\u0007\r"+ + "\u0000\u0000\u1544\u1545\u0007\u0013\u0000\u0000\u1545\u1546\u0007\u0016"+ + "\u0000\u0000\u1546\u1547\u0007\u0007\u0000\u0000\u1547\u1548\u0007\f\u0000"+ + "\u0000\u1548\u044a\u0001\u0000\u0000\u0000\u1549\u154a\u0007\t\u0000\u0000"+ + "\u154a\u154b\u0007\u000e\u0000\u0000\u154b\u154c\u0007\u0005\u0000\u0000"+ + "\u154c\u154d\u0007\u0006\u0000\u0000\u154d\u154e\u0007\n\u0000\u0000\u154e"+ + "\u044c\u0001\u0000\u0000\u0000\u154f\u1550\u0007\t\u0000\u0000\u1550\u1551"+ + "\u0007\u0011\u0000\u0000\u1551\u1552\u0007\u0017\u0000\u0000\u1552\u1553"+ + "\u0007\u0007\u0000\u0000\u1553\u044e\u0001\u0000\u0000\u0000\u1554\u1555"+ + "\u0007\t\u0000\u0000\u1555\u1556\u0007\u001d\u0000\u0000\u1556\u1557\u0007"+ + "\r\u0000\u0000\u1557\u1558\u0007\u0010\u0000\u0000\u1558\u0450\u0001\u0000"+ + "\u0000\u0000\u1559\u155a\u0007\u0010\u0000\u0000\u155a\u155b\u0007\r\u0000"+ + "\u0000\u155b\u155c\u0007\u0011\u0000\u0000\u155c\u155d\u0007\u000f\u0000"+ + "\u0000\u155d\u155e\u0005_\u0000\u0000\u155e\u155f\u0007\t\u0000\u0000"+ + "\u155f\u1560\u0007\u000e\u0000\u0000\u1560\u1561\u0007\u0005\u0000\u0000"+ + "\u1561\u1562\u0007\u0006\u0000\u0000\u1562\u1563\u0007\n\u0000\u0000\u1563"+ + "\u0452\u0001\u0000\u0000\u0000\u1564\u1565\u0007\u0010\u0000\u0000\u1565"+ + "\u1566\u0007\r\u0000\u0000\u1566\u1567\u0007\u0016\u0000\u0000\u1567\u1568"+ + "\u0007\u0007\u0000\u0000\u1568\u1569\u0007\u000e\u0000\u0000\u1569\u0454"+ + "\u0001\u0000\u0000\u0000\u156a\u156b\u0007\u001c\u0000\u0000\u156b\u156c"+ + "\u0007\u0011\u0000\u0000\u156c\u156d\u0007\f\u0000\u0000\u156d\u156e\u0007"+ + "\u0010\u0000\u0000\u156e\u156f\u0007\u0014\u0000\u0000\u156f\u1570\u0005"+ + "_\u0000\u0000\u1570\u1571\u0007\u0012\u0000\u0000\u1571\u1572\u0007\u0016"+ + "\u0000\u0000\u1572\u1573\u0007\u000e\u0000\u0000\u1573\u1574\u0007\u0015"+ + "\u0000\u0000\u1574\u1575\u0007\n\u0000\u0000\u1575\u1576\u0007\u0010\u0000"+ + "\u0000\u1576\u0456\u0001\u0000\u0000\u0000\u1577\u1578\u0007\r\u0000\u0000"+ + "\u1578\u1579\u0007\u0005\u0000\u0000\u1579\u157a\u0007\u0007\u0000\u0000"+ + "\u157a\u157b\u0007\f\u0000\u0000\u157b\u157c\u0007\u0013\u0000\u0000\u157c"+ + "\u157d\u0007\u000f\u0000\u0000\u157d\u0458\u0001\u0000\u0000\u0000\u157e"+ + "\u157f\u0007\t\u0000\u0000\u157f\u1580\u0007\n\u0000\u0000\u1580\u1581"+ + "\u0007\u0010\u0000\u0000\u1581\u1582\u0007\t\u0000\u0000\u1582\u1583\u0007"+ + "\n\u0000\u0000\u1583\u1584\u0007\n\u0000\u0000\u1584\u1585\u0007\f\u0000"+ + "\u0000\u1585\u045a\u0001\u0000\u0000\u0000\u1586\u1587\u0007\u0005\u0000"+ + "\u0000\u1587\u1588\u0007\u000e\u0000\u0000\u1588\u1589\u0007\u0013\u0000"+ + "\u0000\u1589\u158a\u0007\t\u0000\u0000\u158a\u045c\u0001\u0000\u0000\u0000"+ + "\u158b\u158c\u0007\u0005\u0000\u0000\u158c\u158d\u0007\u000e\u0000\u0000"+ + "\u158d\u158e\u0007\u0013\u0000\u0000\u158e\u158f\u0007\t\u0000\u0000\u158f"+ + "\u1590\u0007\f\u0000\u0000\u1590\u045e\u0001\u0000\u0000\u0000\u1591\u1592"+ + "\u0007\u0005\u0000\u0000\u1592\u1593\u0007\t\u0000\u0000\u1593\u1594\u0007"+ + "\u0011\u0000\u0000\u1594\u1595\u0007\u0007\u0000\u0000\u1595\u0460\u0001"+ + "\u0000\u0000\u0000\u1596\u1597\u0007\u0005\u0000\u0000\u1597\u1598\u0007"+ + "\t\u0000\u0000\u1598\u1599\u0007\u0011\u0000\u0000\u1599\u159a\u0007\u0007"+ + "\u0000\u0000\u159a\u159b\u0007\f\u0000\u0000\u159b\u0462\u0001\u0000\u0000"+ + "\u0000\u159c\u159d\u0007\u0005\u0000\u0000\u159d\u159e\u0007\u0010\u0000"+ + "\u0000\u159e\u159f\u0007\u0005\u0000\u0000\u159f\u15a0\u0007\u0007\u0000"+ + "\u0000\u15a0\u0464\u0001\u0000\u0000\u0000\u15a1\u15a2\u0007\u0005\u0000"+ + "\u0000\u15a2\u15a3\u0007\u0010\u0000\u0000\u15a3\u15a4\u0007\u0005\u0000"+ + "\u0000\u15a4\u15a5\u0007\u0007\u0000\u0000\u15a5\u15a6\u0007\f\u0000\u0000"+ + "\u15a6\u0466\u0001\u0000\u0000\u0000\u15a7\u15a8\u0007\u0005\u0000\u0000"+ + "\u15a8\u15a9\u0007\u0010\u0000\u0000\u15a9\u15aa\u0007\u0005\u0000\u0000"+ + "\u15aa\u15ab\u0007\u0007\u0000\u0000\u15ab\u15ac\u00052\u0000\u0000\u15ac"+ + "\u0468\u0001\u0000\u0000\u0000\u15ad\u15ae\u0007\u0005\u0000\u0000\u15ae"+ + "\u15af\u0007\u0010\u0000\u0000\u15af\u15b0\u0007\u0005\u0000\u0000\u15b0"+ + "\u15b1\u0007\u0007\u0000\u0000\u15b1\u15b2\u00052\u0000\u0000\u15b2\u15b3"+ + "\u0007\f\u0000\u0000\u15b3\u046a\u0001\u0000\u0000\u0000\u15b4\u15b5\u0007"+ + "\u000e\u0000\u0000\u15b5\u15b6\u0007\u0013\u0000\u0000\u15b6\u15b7\u0007"+ + "\t\u0000\u0000\u15b7\u046c\u0001\u0000\u0000\u0000\u15b8\u15b9\u0007\u000e"+ + "\u0000\u0000\u15b9\u15ba\u0007\u0013\u0000\u0000\u15ba\u15bb\u0007\t\u0000"+ + "\u0000\u15bb\u15bc\u0007\f\u0000\u0000\u15bc\u046e\u0001\u0000\u0000\u0000"+ + "\u15bd\u15be\u0007\u000e\u0000\u0000\u15be\u15bf\u0007\u0013\u0000\u0000"+ + "\u15bf\u15c0\u0007\u0010\u0000\u0000\u15c0\u0470\u0001\u0000\u0000\u0000"+ + "\u15c1\u15c2\u0007\u000e\u0000\u0000\u15c2\u15c3\u0007\u0013\u0000\u0000"+ + "\u15c3\u15c4\u0007\u0010\u0000\u0000\u15c4\u15c5\u0007\f\u0000\u0000\u15c5"+ + "\u0472\u0001\u0000\u0000\u0000\u15c6\u15c7\u0007\t\u0000\u0000\u15c7\u15c8"+ + "\u0007\u0011\u0000\u0000\u15c8\u15c9\u0007\u0007\u0000\u0000\u15c9\u0474"+ + "\u0001\u0000\u0000\u0000\u15ca\u15cb\u0007\t\u0000\u0000\u15cb\u15cc\u0007"+ + "\u0011\u0000\u0000\u15cc\u15cd\u0007\u0007\u0000\u0000\u15cd\u15ce\u0007"+ + "\f\u0000\u0000\u15ce\u0476\u0001\u0000\u0000\u0000\u15cf\u15d0\u0007\u0010"+ + "\u0000\u0000\u15d0\u15d1\u0007\u0005\u0000\u0000\u15d1\u15d2\u0007\u0007"+ + "\u0000\u0000\u15d2\u0478\u0001\u0000\u0000\u0000\u15d3\u15d4\u0007\u0010"+ + "\u0000\u0000\u15d4\u15d5\u0007\u0005\u0000\u0000\u15d5\u15d6\u0007\u0007"+ + "\u0000\u0000\u15d6\u15d7\u0007\f\u0000\u0000\u15d7\u047a\u0001\u0000\u0000"+ + "\u0000\u15d8\u15d9\u0007\t\u0000\u0000\u15d9\u15da\u0007\u0011\u0000\u0000"+ + "\u15da\u15db\u0007\u0007\u0000\u0000\u15db\u15dc\u0007\u0014\u0000\u0000"+ + "\u15dc\u047c\u0001\u0000\u0000\u0000\u15dd\u15de\u0007\u000e\u0000\u0000"+ + "\u15de\u15df\u0007\u0013\u0000\u0000\u15df\u15e0\u0007\t\u0000\u0000\u15e0"+ + "\u15e1\u0007\u0014\u0000\u0000\u15e1\u047e\u0001\u0000\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"+ + "\u0480\u0001\u0000\u0000\u0000\u15e7\u15e8\u0007\u0005\u0000\u0000\u15e8"+ + "\u15e9\u0007\t\u0000\u0000\u15e9\u15ea\u0007\u0011\u0000\u0000\u15ea\u15eb"+ + "\u0007\u0007\u0000\u0000\u15eb\u15ec\u0007\u0014\u0000\u0000\u15ec\u0482"+ + "\u0001\u0000\u0000\u0000\u15ed\u15ee\u0007\u0005\u0000\u0000\u15ee\u15ef"+ + "\u0007\u000e\u0000\u0000\u15ef\u15f0\u0007\u0013\u0000\u0000\u15f0\u15f1"+ + "\u0007\t\u0000\u0000\u15f1\u15f2\u0007\u0014\u0000\u0000\u15f2\u0484\u0001"+ + "\u0000\u0000\u0000\u15f3\u15f4\u0007\u0005\u0000\u0000\u15f4\u15f5\u0007"+ + "\u0010\u0000\u0000\u15f5\u15f6\u0007\u0005\u0000\u0000\u15f6\u15f7\u0007"+ + "\u0007\u0000\u0000\u15f7\u15f8\u0007\u0014\u0000\u0000\u15f8\u0486\u0001"+ + "\u0000\u0000\u0000\u15f9\u15fa\u0007\u0012\u0000\u0000\u15fa\u15fb\u0007"+ + "\u0011\u0000\u0000\u15fb\u15fc\u0007\u0010\u0000\u0000\u15fc\u15fd\u0005"+ + "_\u0000\u0000\u15fd\u15fe\u0007\u0006\u0000\u0000\u15fe\u15ff\u0007\n"+ + "\u0000\u0000\u15ff\u1600\u0007\u0007\u0000\u0000\u1600\u1601\u0007\u0017"+ + "\u0000\u0000\u1601\u1602\u0007\u0010\u0000\u0000\u1602\u1603\u0007\u0014"+ + "\u0000\u0000\u1603\u0488\u0001\u0000\u0000\u0000\u1604\u1605\u0007\u000e"+ + "\u0000\u0000\u1605\u1606\u0007\u0014\u0000\u0000\u1606\u1607\u0007\u0005"+ + "\u0000\u0000\u1607\u1608\u0007\r\u0000\u0000\u1608\u1609\u0005_\u0000"+ + "\u0000\u1609\u160a\u0007\u0006\u0000\u0000\u160a\u160b\u0007\n\u0000\u0000"+ + "\u160b\u160c\u0007\u0007\u0000\u0000\u160c\u160d\u0007\u0017\u0000\u0000"+ + "\u160d\u160e\u0007\u0010\u0000\u0000\u160e\u160f\u0007\u0014\u0000\u0000"+ + "\u160f\u048a\u0001\u0000\u0000\u0000\u1610\u1611\u0007\u000e\u0000\u0000"+ + "\u1611\u1612\u0007\u0014\u0000\u0000\u1612\u1613\u0007\u0005\u0000\u0000"+ + "\u1613\u1614\u0007\r\u0000\u0000\u1614\u1615\u0007\u0005\u0000\u0000\u1615"+ + "\u1616\u0007\u000e\u0000\u0000\u1616\u1617\u0007\u0010\u0000\u0000\u1617"+ + "\u1618\u0007\n\u0000\u0000\u1618\u1619\u0007\r\u0000\u0000\u1619\u161a"+ + "\u0005_\u0000\u0000\u161a\u161b\u0007\u0006\u0000\u0000\u161b\u161c\u0007"+ + "\n\u0000\u0000\u161c\u161d\u0007\u0007\u0000\u0000\u161d\u161e\u0007\u0017"+ + "\u0000\u0000\u161e\u161f\u0007\u0010\u0000\u0000\u161f\u1620\u0007\u0014"+ + "\u0000\u0000\u1620\u048c\u0001\u0000\u0000\u0000\u1621\u1622\u0007\u0006"+ + "\u0000\u0000\u1622\u1623\u0007\u0013\u0000\u0000\u1623\u1624\u0007\u001c"+ + "\u0000\u0000\u1624\u1625\u0007\n\u0000\u0000\u1625\u1626\u0007\r\u0000"+ + "\u0000\u1626\u048e\u0001\u0000\u0000\u0000\u1627\u1628\u0007\u0013\u0000"+ + "\u0000\u1628\u1629\u0007\u000e\u0000\u0000\u1629\u162a\u0007\u0010\u0000"+ + "\u0000\u162a\u162b\u0007\n\u0000\u0000\u162b\u162c\u0007\u0010\u0000\u0000"+ + "\u162c\u162d\u0005_\u0000\u0000\u162d\u162e\u0007\u0006\u0000\u0000\u162e"+ + "\u162f\u0007\n\u0000\u0000\u162f\u1630\u0007\u0007\u0000\u0000\u1630\u1631"+ + "\u0007\u0017\u0000\u0000\u1631\u1632\u0007\u0010\u0000\u0000\u1632\u1633"+ + "\u0007\u0014\u0000\u0000\u1633\u0490\u0001\u0000\u0000\u0000\u1634\u1635"+ + "\u0007\u0016\u0000\u0000\u1635\u1636\u0007\u0018\u0000\u0000\u1636\u1637"+ + "\u0007\u0018\u0000\u0000\u1637\u1638\u0007\n\u0000\u0000\u1638\u1639\u0007"+ + "\r\u0000\u0000\u1639\u0492\u0001\u0000\u0000\u0000\u163a\u163b\u0007\u0005"+ + "\u0000\u0000\u163b\u163c\u0007\t\u0000\u0000\u163c\u163d\u0007\u000e\u0000"+ + "\u0000\u163d\u163e\u0007\u0011\u0000\u0000\u163e\u163f\u0007\u0011\u0000"+ + "\u0000\u163f\u0494\u0001\u0000\u0000\u0000\u1640\u1641\u0007\u0012\u0000"+ + "\u0000\u1641\u1642\u0007\u0010\u0000\u0000\u1642\u1643\u0007\r\u0000\u0000"+ + "\u1643\u1644\u0007\u0011\u0000\u0000\u1644\u1645\u0007\u000f\u0000\u0000"+ + "\u1645\u0496\u0001\u0000\u0000\u0000\u1646\u1647\u0007\u000e\u0000\u0000"+ + "\u1647\u1648\u0007\u0014\u0000\u0000\u1648\u1649\u0007\r\u0000\u0000\u1649"+ + "\u0498\u0001\u0000\u0000\u0000\u164a\u164b\u0007\u000e\u0000\u0000\u164b"+ + "\u164c\u0007\u0013\u0000\u0000\u164c\u164d\u0007\u0007\u0000\u0000\u164d"+ + "\u164e\u0007\u000e\u0000\u0000\u164e\u164f\u0007\u0005\u0000\u0000\u164f"+ + "\u1650\u0007\u0010\u0000\u0000\u1650\u049a\u0001\u0000\u0000\u0000\u1651"+ + "\u1652\u0007\u000e\u0000\u0000\u1652\u1653\u0007\u0013\u0000\u0000\u1653"+ + "\u1654\u0007\u0007\u0000\u0000\u1654\u1655\u0007\u000e\u0000\u0000\u1655"+ + "\u1656\u0007\u0005\u0000\u0000\u1656\u1657\u0007\u0010\u0000\u0000\u1657"+ + "\u1658\u0005_\u0000\u0000\u1658\u1659\u0007\u001c\u0000\u0000\u1659\u165a"+ + "\u0007\t\u0000\u0000\u165a\u049c\u0001\u0000\u0000\u0000\u165b\u165c\u0007"+ + "\u0019\u0000\u0000\u165c\u165d\u0007\u0013\u0000\u0000\u165d\u165e\u0007"+ + "\r\u0000\u0000\u165e\u165f\u0007\u000f\u0000\u0000\u165f\u1660\u0007\u0005"+ + "\u0000\u0000\u1660\u1661\u0007\u0010\u0000\u0000\u1661\u049e\u0001\u0000"+ + "\u0000\u0000\u1662\u1663\u0007\u0011\u0000\u0000\u1663\u1664\u0007\u0007"+ + "\u0000\u0000\u1664\u1665\u0007\u0011\u0000\u0000\u1665\u1666\u0007\u0010"+ + "\u0000\u0000\u1666\u1667\u0007\u000e\u0000\u0000\u1667\u1668\u0007\u0005"+ + "\u0000\u0000\u1668\u1669\u0007\u0018\u0000\u0000\u1669\u04a0\u0001\u0000"+ + "\u0000\u0000\u166a\u166b\u0007\u0006\u0000\u0000\u166b\u166c\u0007\n\u0000"+ + "\u0000\u166c\u166d\u0007\u0007\u0000\u0000\u166d\u166e\u0007\u0017\u0000"+ + "\u0000\u166e\u166f\u0007\u0010\u0000\u0000\u166f\u1670\u0007\u0014\u0000"+ + "\u0000\u1670\u04a2\u0001\u0000\u0000\u0000\u1671\u1672\u0007\u0006\u0000"+ + "\u0000\u1672\u1673\u0007\u0018\u0000\u0000\u1673\u1674\u0007\u0005\u0000"+ + "\u0000\u1674\u1675\u0007\f\u0000\u0000\u1675\u04a4\u0001\u0000\u0000\u0000"+ + "\u1676\u1677\u0007\u0006\u0000\u0000\u1677\u1678\u0007\u0010\u0000\u0000"+ + "\u1678\u1679\u0007\r\u0000\u0000\u1679\u167a\u0007\u0011\u0000\u0000\u167a"+ + "\u167b\u0007\u000f\u0000\u0000\u167b\u04a6\u0001\u0000\u0000\u0000\u167c"+ + "\u167d\u0007\u000f\u0000\u0000\u167d\u167e\u0007\f\u0000\u0000\u167e\u167f"+ + "\u00055\u0000\u0000\u167f\u04a8\u0001\u0000\u0000\u0000\u1680\u1681\u0007"+ + "\u0018\u0000\u0000\u1681\u1682\u0007\u0005\u0000\u0000\u1682\u1683\u0007"+ + "\r\u0000\u0000\u1683\u1684\u0007\t\u0000\u0000\u1684\u1685\u0007\n\u0000"+ + "\u0000\u1685\u1686\u0005_\u0000\u0000\u1686\u1687\u0007\u0011\u0000\u0000"+ + "\u1687\u1688\u0007\f\u0000\u0000\u1688\u1689\u0007\n\u0000\u0000\u1689"+ + "\u168a\u0007\u0007\u0000\u0000\u168a\u168b\u0007\u0010\u0000\u0000\u168b"+ + "\u04aa\u0001\u0000\u0000\u0000\u168c\u168d\u0007\u0018\u0000\u0000\u168d"+ + "\u168e\u0007\u0017\u0000\u0000\u168e\u168f\u0005_\u0000\u0000\u168f\u1690"+ + "\u0007\u000e\u0000\u0000\u1690\u1691\u0007\u0006\u0000\u0000\u1691\u1692"+ + "\u0007\u0011\u0000\u0000\u1692\u1693\u0007\n\u0000\u0000\u1693\u1694\u0007"+ + "\u0007\u0000\u0000\u1694\u1695\u0007\u0010\u0000\u0000\u1695\u1696\u0005"+ + "_\u0000\u0000\u1696\u1697\u0007\n\u0000\u0000\u1697\u1698\u0007\u0007"+ + "\u0000\u0000\u1698\u1699\u0007\u000e\u0000\u0000\u1699\u169a\u0007\u0013"+ + "\u0000\u0000\u169a\u169b\u0007\f\u0000\u0000\u169b\u169c\u0007\u0011\u0000"+ + "\u0000\u169c\u169d\u0007\u0007\u0000\u0000\u169d\u169e\u0007\u0017\u0000"+ + "\u0000\u169e\u04ac\u0001\u0000\u0000\u0000\u169f\u16a0\u0007\u001d\u0000"+ + "\u0000\u16a0\u16a1\u0007\u0016\u0000\u0000\u16a1\u16a2\u0007\u0013\u0000"+ + "\u0000\u16a2\u16a3\u0007\u0010\u0000\u0000\u16a3\u16a4\u0007\n\u0000\u0000"+ + "\u16a4\u16a5\u0005_\u0000\u0000\u16a5\u16a6\u0007\u0011\u0000\u0000\u16a6"+ + "\u16a7\u0007\f\u0000\u0000\u16a7\u16a8\u0007\n\u0000\u0000\u16a8\u16a9"+ + "\u0007\u0007\u0000\u0000\u16a9\u16aa\u0007\u0010\u0000\u0000\u16aa\u04ae"+ + "\u0001\u0000\u0000\u0000\u16ab\u16ac\u0007\u001d\u0000\u0000\u16ac\u16ad"+ + "\u0007\u0016\u0000\u0000\u16ad\u16ae\u0007\u0013\u0000\u0000\u16ae\u16af"+ + "\u0007\u0010\u0000\u0000\u16af\u16b0\u0007\n\u0000\u0000\u16b0\u16b1\u0005"+ + "_\u0000\u0000\u16b1\u16b2\u0007\u0006\u0000\u0000\u16b2\u16b3\u0007\u0011"+ + "\u0000\u0000\u16b3\u16b4\u0007\u0010\u0000\u0000\u16b4\u16b5\u0007\n\u0000"+ + "\u0000\u16b5\u16b6\u0007\r\u0000\u0000\u16b6\u16b7\u0007\u0005\u0000\u0000"+ + "\u16b7\u16b8\u0007\u0006\u0000\u0000\u16b8\u04b0\u0001\u0000\u0000\u0000"+ + "\u16b9\u16ba\u0007\u001d\u0000\u0000\u16ba\u16bb\u0007\u0016\u0000\u0000"+ + "\u16bb\u16bc\u0007\u0013\u0000\u0000\u16bc\u16bd\u0007\u0010\u0000\u0000"+ + "\u16bd\u16be\u0007\n\u0000\u0000\u16be\u16bf\u0005_\u0000\u0000\u16bf"+ + "\u16c0\u0007\u0007\u0000\u0000\u16c0\u16c1\u0007\u0016\u0000\u0000\u16c1"+ + "\u16c2\u0007\u0006\u0000\u0000\u16c2\u16c3\u0007\u0006\u0000\u0000\u16c3"+ + "\u16c4\u0007\u0005\u0000\u0000\u16c4\u16c5\u0007\u0012\u0000\u0000\u16c5"+ + "\u16c6\u0007\u0006\u0000\u0000\u16c6\u16c7\u0007\n\u0000\u0000\u16c7\u04b2"+ + "\u0001\u0000\u0000\u0000\u16c8\u16c9\u0007\r\u0000\u0000\u16c9\u16ca\u0007"+ + "\n\u0000\u0000\u16ca\u16cb\u0007\u0017\u0000\u0000\u16cb\u16cc\u0007\n"+ + "\u0000\u0000\u16cc\u16cd\u0007\u001a\u0000\u0000\u16cd\u16ce\u0007\u0018"+ + "\u0000\u0000\u16ce\u16cf\u0005_\u0000\u0000\u16cf\u16d0\u0007\u000e\u0000"+ + "\u0000\u16d0\u16d1\u0007\u0013\u0000\u0000\u16d1\u16d2\u0007\u0016\u0000"+ + "\u0000\u16d2\u16d3\u0007\u0007\u0000\u0000\u16d3\u16d4\u0007\u0010\u0000"+ + "\u0000\u16d4\u04b4\u0001\u0000\u0000\u0000\u16d5\u16d6\u0007\r\u0000\u0000"+ + "\u16d6\u16d7\u0007\n\u0000\u0000\u16d7\u16d8\u0007\u0017\u0000\u0000\u16d8"+ + "\u16d9\u0007\n\u0000\u0000\u16d9\u16da\u0007\u001a\u0000\u0000\u16da\u16db"+ + "\u0007\u0018\u0000\u0000\u16db\u16dc\u0005_\u0000\u0000\u16dc\u16dd\u0007"+ + "\u0011\u0000\u0000\u16dd\u16de\u0007\u0007\u0000\u0000\u16de\u16df\u0007"+ + "\t\u0000\u0000\u16df\u16e0\u0007\u0010\u0000\u0000\u16e0\u16e1\u0007\r"+ + "\u0000\u0000\u16e1\u04b6\u0001\u0000\u0000\u0000\u16e2\u16e3\u0007\r\u0000"+ + "\u0000\u16e3\u16e4\u0007\n\u0000\u0000\u16e4\u16e5\u0007\u0017\u0000\u0000"+ + "\u16e5\u16e6\u0007\n\u0000\u0000\u16e6\u16e7\u0007\u001a\u0000\u0000\u16e7"+ + "\u16e8\u0007\u0018\u0000\u0000\u16e8\u16e9\u0005_\u0000\u0000\u16e9\u16ea"+ + "\u0007\u0006\u0000\u0000\u16ea\u16eb\u0007\u0011\u0000\u0000\u16eb\u16ec"+ + "\u0007\u0015\u0000\u0000\u16ec\u16ed\u0007\n\u0000\u0000\u16ed\u04b8\u0001"+ + "\u0000\u0000\u0000\u16ee\u16ef\u0007\r\u0000\u0000\u16ef\u16f0\u0007\n"+ + "\u0000\u0000\u16f0\u16f1\u0007\u0017\u0000\u0000\u16f1\u16f2\u0007\n\u0000"+ + "\u0000\u16f2\u16f3\u0007\u001a\u0000\u0000\u16f3\u16f4\u0007\u0018\u0000"+ + "\u0000\u16f4\u16f5\u0005_\u0000\u0000\u16f5\u16f6\u0007\u000f\u0000\u0000"+ + "\u16f6\u16f7\u0007\u0005\u0000\u0000\u16f7\u16f8\u0007\u0010\u0000\u0000"+ + "\u16f8\u16f9\u0007\u000e\u0000\u0000\u16f9\u16fa\u0007\u0014\u0000\u0000"+ + "\u16fa\u04ba\u0001\u0000\u0000\u0000\u16fb\u16fc\u0007\r\u0000\u0000\u16fc"+ + "\u16fd\u0007\n\u0000\u0000\u16fd\u16fe\u0007\u0017\u0000\u0000\u16fe\u16ff"+ + "\u0007\n\u0000\u0000\u16ff\u1700\u0007\u001a\u0000\u0000\u1700\u1701\u0007"+ + "\u0018\u0000\u0000\u1701\u1702\u0005_\u0000\u0000\u1702\u1703\u0007\u000f"+ + "\u0000\u0000\u1703\u1704\u0007\u0005\u0000\u0000\u1704\u1705\u0007\u0010"+ + "\u0000\u0000\u1705\u1706\u0007\u000e\u0000\u0000\u1706\u1707\u0007\u0014"+ + "\u0000\u0000\u1707\u1708\u0007\n\u0000\u0000\u1708\u1709\u0007\t\u0000"+ + "\u0000\u1709\u04bc\u0001\u0000\u0000\u0000\u170a\u170b\u0007\r\u0000\u0000"+ + "\u170b\u170c\u0007\n\u0000\u0000\u170c\u170d\u0007\u0017\u0000\u0000\u170d"+ + "\u170e\u0007\n\u0000\u0000\u170e\u170f\u0007\u001a\u0000\u0000\u170f\u1710"+ + "\u0007\u0018\u0000\u0000\u1710\u1711\u0005_\u0000\u0000\u1711\u1712\u0007"+ + "\r\u0000\u0000\u1712\u1713\u0007\n\u0000\u0000\u1713\u1714\u0007\u0018"+ + "\u0000\u0000\u1714\u1715\u0007\u0006\u0000\u0000\u1715\u1716\u0007\u0005"+ + "\u0000\u0000\u1716\u1717\u0007\u000e\u0000\u0000\u1717\u1718\u0007\n\u0000"+ + "\u0000\u1718\u04be\u0001\u0000\u0000\u0000\u1719\u171a\u0007\r\u0000\u0000"+ + "\u171a\u171b\u0007\n\u0000\u0000\u171b\u171c\u0007\u0017\u0000\u0000\u171c"+ + "\u171d\u0007\n\u0000\u0000\u171d\u171e\u0007\u001a\u0000\u0000\u171e\u171f"+ + "\u0007\u0018\u0000\u0000\u171f\u1720\u0005_\u0000\u0000\u1720\u1721\u0007"+ + "\t\u0000\u0000\u1721\u1722\u0007\u0018\u0000\u0000\u1722\u1723\u0007\u0006"+ + "\u0000\u0000\u1723\u1724\u0007\u0011\u0000\u0000\u1724\u1725\u0007\u0010"+ + "\u0000\u0000\u1725\u1726\u0005_\u0000\u0000\u1726\u1727\u0007\u0010\u0000"+ + "\u0000\u1727\u1728\u0007\u0013\u0000\u0000\u1728\u1729\u0005_\u0000\u0000"+ + "\u1729\u172a\u0007\u0005\u0000\u0000\u172a\u172b\u0007\r\u0000\u0000\u172b"+ + "\u172c\u0007\r\u0000\u0000\u172c\u172d\u0007\u0005\u0000\u0000\u172d\u172e"+ + "\u0007\b\u0000\u0000\u172e\u04c0\u0001\u0000\u0000\u0000\u172f\u1730\u0007"+ + "\r\u0000\u0000\u1730\u1731\u0007\n\u0000\u0000\u1731\u1732\u0007\u0017"+ + "\u0000\u0000\u1732\u1733\u0007\n\u0000\u0000\u1733\u1734\u0007\u001a\u0000"+ + "\u0000\u1734\u1735\u0007\u0018\u0000\u0000\u1735\u1736\u0005_\u0000\u0000"+ + "\u1736\u1737\u0007\t\u0000\u0000\u1737\u1738\u0007\u0018\u0000\u0000\u1738"+ + "\u1739\u0007\u0006\u0000\u0000\u1739\u173a\u0007\u0011\u0000\u0000\u173a"+ + "\u173b\u0007\u0010\u0000\u0000\u173b\u173c\u0005_\u0000\u0000\u173c\u173d"+ + "\u0007\u0010\u0000\u0000\u173d\u173e\u0007\u0013\u0000\u0000\u173e\u173f"+ + "\u0005_\u0000\u0000\u173f\u1740\u0007\u0010\u0000\u0000\u1740\u1741\u0007"+ + "\u0005\u0000\u0000\u1741\u1742\u0007\u0012\u0000\u0000\u1742\u1743\u0007"+ + "\u0006\u0000\u0000\u1743\u1744\u0007\n\u0000\u0000\u1744\u04c2\u0001\u0000"+ + "\u0000\u0000\u1745\u1746\u0007\r\u0000\u0000\u1746\u1747\u0007\n\u0000"+ + "\u0000\u1747\u1748\u0007\u0017\u0000\u0000\u1748\u1749\u0007\n\u0000\u0000"+ + "\u1749\u174a\u0007\u001a\u0000\u0000\u174a\u174b\u0007\u0018\u0000\u0000"+ + "\u174b\u174c\u0005_\u0000\u0000\u174c\u174d\u0007\t\u0000\u0000\u174d"+ + "\u174e\u0007\u0016\u0000\u0000\u174e\u174f\u0007\u0012\u0000\u0000\u174f"+ + "\u1750\u0007\t\u0000\u0000\u1750\u1751\u0007\u0010\u0000\u0000\u1751\u1752"+ + "\u0007\r\u0000\u0000\u1752\u04c4\u0001\u0000\u0000\u0000\u1753\u1754\u0007"+ + "\r\u0000\u0000\u1754\u1755\u0007\n\u0000\u0000\u1755\u1756\u0007\u0018"+ + "\u0000\u0000\u1756\u1757\u0007\n\u0000\u0000\u1757\u1758\u0007\u0005\u0000"+ + "\u0000\u1758\u1759\u0007\u0010\u0000\u0000\u1759\u04c6\u0001\u0000\u0000"+ + "\u0000\u175a\u175b\u0007\r\u0000\u0000\u175b\u175c\u0007\u0018\u0000\u0000"+ + "\u175c\u175d\u0007\u0005\u0000\u0000\u175d\u175e\u0007\f\u0000\u0000\u175e"+ + "\u04c8\u0001\u0000\u0000\u0000\u175f\u1760\u0007\r\u0000\u0000\u1760\u1761"+ + "\u0007\u0010\u0000\u0000\u1761\u1762\u0007\r\u0000\u0000\u1762\u1763\u0007"+ + "\u0011\u0000\u0000\u1763\u1764\u0007\u000f\u0000\u0000\u1764\u04ca\u0001"+ + "\u0000\u0000\u0000\u1765\u1766\u0007\t\u0000\u0000\u1766\u1767\u0007\u0018"+ + "\u0000\u0000\u1767\u1768\u0007\u0006\u0000\u0000\u1768\u1769\u0007\u0011"+ + "\u0000\u0000\u1769\u176a\u0007\u0010\u0000\u0000\u176a\u176b\u0005_\u0000"+ + "\u0000\u176b\u176c\u0007\u0018\u0000\u0000\u176c\u176d\u0007\u0005\u0000"+ + "\u0000\u176d\u176e\u0007\r\u0000\u0000\u176e\u176f\u0007\u0010\u0000\u0000"+ + "\u176f\u04cc\u0001\u0000\u0000\u0000\u1770\u1771\u0007\t\u0000\u0000\u1771"+ + "\u1772\u0007\u0010\u0000\u0000\u1772\u1773\u0007\u0005\u0000\u0000\u1773"+ + "\u1774\u0007\r\u0000\u0000\u1774\u1775\u0007\u0010\u0000\u0000\u1775\u1776"+ + "\u0007\t\u0000\u0000\u1776\u1777\u0005_\u0000\u0000\u1777\u1778\u0007"+ + "\u001c\u0000\u0000\u1778\u1779\u0007\u0011\u0000\u0000\u1779\u177a\u0007"+ + "\u0010\u0000\u0000\u177a\u177b\u0007\u0014\u0000\u0000\u177b\u04ce\u0001"+ + "\u0000\u0000\u0000\u177c\u177d\u0007\t\u0000\u0000\u177d\u177e\u0007\u0010"+ + "\u0000\u0000\u177e\u177f\u0007\r\u0000\u0000\u177f\u1780\u0007\u0011\u0000"+ + "\u0000\u1780\u1781\u0007\u0007\u0000\u0000\u1781\u1782\u0007\u0017\u0000"+ + "\u0000\u1782\u1783\u0005_\u0000\u0000\u1783\u1784\u0007\u0010\u0000\u0000"+ + "\u1784\u1785\u0007\u0013\u0000\u0000\u1785\u1786\u0005_\u0000\u0000\u1786"+ + "\u1787\u0007\u0005\u0000\u0000\u1787\u1788\u0007\r\u0000\u0000\u1788\u1789"+ + "\u0007\r\u0000\u0000\u1789\u178a\u0007\u0005\u0000\u0000\u178a\u178b\u0007"+ + "\b\u0000\u0000\u178b\u04d0\u0001\u0000\u0000\u0000\u178c\u178d\u0007\t"+ + "\u0000\u0000\u178d\u178e\u0007\u0010\u0000\u0000\u178e\u178f\u0007\r\u0000"+ + "\u0000\u178f\u1790\u0007\u0011\u0000\u0000\u1790\u1791\u0007\u0007\u0000"+ + "\u0000\u1791\u1792\u0007\u0017\u0000\u0000\u1792\u1793\u0005_\u0000\u0000"+ + "\u1793\u1794\u0007\u0010\u0000\u0000\u1794\u1795\u0007\u0013\u0000\u0000"+ + "\u1795\u1796\u0005_\u0000\u0000\u1796\u1797\u0007\u0010\u0000\u0000\u1797"+ + "\u1798\u0007\u0005\u0000\u0000\u1798\u1799\u0007\u0012\u0000\u0000\u1799"+ + "\u179a\u0007\u0006\u0000\u0000\u179a\u179b\u0007\n\u0000\u0000\u179b\u04d2"+ + "\u0001\u0000\u0000\u0000\u179c\u179d\u0007\t\u0000\u0000\u179d\u179e\u0007"+ + "\u0010\u0000\u0000\u179e\u179f\u0007\r\u0000\u0000\u179f\u17a0\u0007\u0018"+ + "\u0000\u0000\u17a0\u17a1\u0007\u0013\u0000\u0000\u17a1\u17a2\u0007\t\u0000"+ + "\u0000\u17a2\u04d4\u0001\u0000\u0000\u0000\u17a3\u17a4\u0007\t\u0000\u0000"+ + "\u17a4\u17a5\u0007\u0016\u0000\u0000\u17a5\u17a6\u0007\u0012\u0000\u0000"+ + "\u17a6\u17a7\u0007\t\u0000\u0000\u17a7\u17a8\u0007\u0010\u0000\u0000\u17a8"+ + "\u17a9\u0007\r\u0000\u0000\u17a9\u04d6\u0001\u0000\u0000\u0000\u17aa\u17ab"+ + "\u0007\u0010\u0000\u0000\u17ab\u17ac\u0007\u0013\u0000\u0000\u17ac\u17ad"+ + "\u0005_\u0000\u0000\u17ad\u17ae\u0007\u0005\u0000\u0000\u17ae\u17af\u0007"+ + "\t\u0000\u0000\u17af\u17b0\u0007\u000e\u0000\u0000\u17b0\u17b1\u0007\u0011"+ + "\u0000\u0000\u17b1\u17b2\u0007\u0011\u0000\u0000\u17b2\u04d8\u0001\u0000"+ + "\u0000\u0000\u17b3\u17b4\u0007\u0010\u0000\u0000\u17b4\u17b5\u0007\u0013"+ + "\u0000\u0000\u17b5\u17b6\u0005_\u0000\u0000\u17b6\u17b7\u0007\u0014\u0000"+ + "\u0000\u17b7\u17b8\u0007\n\u0000\u0000\u17b8\u17b9\u0007\u001a\u0000\u0000"+ + "\u17b9\u04da\u0001\u0000\u0000\u0000\u17ba\u17bb\u0007\u0010\u0000\u0000"+ + "\u17bb\u17bc\u0007\r\u0000\u0000\u17bc\u17bd\u0007\u0005\u0000\u0000\u17bd"+ + "\u17be\u0007\u0007\u0000\u0000\u17be\u17bf\u0007\t\u0000\u0000\u17bf\u17c0"+ + "\u0007\u0006\u0000\u0000\u17c0\u17c1\u0007\u0005\u0000\u0000\u17c1\u17c2"+ + "\u0007\u0010\u0000\u0000\u17c2\u17c3\u0007\n\u0000\u0000\u17c3\u04dc\u0001"+ + "\u0000\u0000\u0000\u17c4\u17c5\u0007\u0016\u0000\u0000\u17c5\u17c6\u0007"+ + "\u0007\u0000\u0000\u17c6\u17c7\u0007\u0011\u0000\u0000\u17c7\u17c8\u0007"+ + "\t\u0000\u0000\u17c8\u17c9\u0007\u0010\u0000\u0000\u17c9\u17ca\u0007\r"+ + "\u0000\u0000\u17ca\u04de\u0001\u0000\u0000\u0000\u17cb\u17cc\u0007\u0005"+ + "\u0000\u0000\u17cc\u17cd\u0007\u0017\u0000\u0000\u17cd\u17ce\u0007\n\u0000"+ + "\u0000\u17ce\u04e0\u0001\u0000\u0000\u0000\u17cf\u17d0\u0007\u000e\u0000"+ + "\u0000\u17d0\u17d1\u0007\u0006\u0000\u0000\u17d1\u17d2\u0007\u0013\u0000"+ + "\u0000\u17d2\u17d3\u0007\u000e\u0000\u0000\u17d3\u17d4\u0007\u0015\u0000"+ + "\u0000\u17d4\u17d5\u0005_\u0000\u0000\u17d5\u17d6\u0007\u0010\u0000\u0000"+ + "\u17d6\u17d7\u0007\u0011\u0000\u0000\u17d7\u17d8\u0007\u000f\u0000\u0000"+ + "\u17d8\u17d9\u0007\n\u0000\u0000\u17d9\u17da\u0007\t\u0000\u0000\u17da"+ + "\u17db\u0007\u0010\u0000\u0000\u17db\u17dc\u0007\u0005\u0000\u0000\u17dc"+ + "\u17dd\u0007\u000f\u0000\u0000\u17dd\u17de\u0007\u0018\u0000\u0000\u17de"+ + "\u04e2\u0001\u0000\u0000\u0000\u17df\u17e0\u0007\f\u0000\u0000\u17e0\u17e1"+ + "\u0007\u0005\u0000\u0000\u17e1\u17e2\u0007\u0010\u0000\u0000\u17e2\u17e3"+ + "\u0007\n\u0000\u0000\u17e3\u17e4\u0005_\u0000\u0000\u17e4\u17e5\u0007"+ + "\u0012\u0000\u0000\u17e5\u17e6\u0007\u0011\u0000\u0000\u17e6\u17e7\u0007"+ + "\u0007\u0000\u0000\u17e7\u04e4\u0001\u0000\u0000\u0000\u17e8\u17e9\u0007"+ + "\f\u0000\u0000\u17e9\u17ea\u0007\u0005\u0000\u0000\u17ea\u17eb\u0007\u0010"+ + "\u0000\u0000\u17eb\u17ec\u0007\n\u0000\u0000\u17ec\u17ed\u0005_\u0000"+ + "\u0000\u17ed\u17ee\u0007\u0018\u0000\u0000\u17ee\u17ef\u0007\u0005\u0000"+ + "\u0000\u17ef\u17f0\u0007\r\u0000\u0000\u17f0\u17f1\u0007\u0010\u0000\u0000"+ + "\u17f1\u04e6\u0001\u0000\u0000\u0000\u17f2\u17f3\u0007\f\u0000\u0000\u17f3"+ + "\u17f4\u0007\u0005\u0000\u0000\u17f4\u17f5\u0007\u0010\u0000\u0000\u17f5"+ + "\u17f6\u0007\n\u0000\u0000\u17f6\u17f7\u0005_\u0000\u0000\u17f7\u17f8"+ + "\u0007\u0010\u0000\u0000\u17f8\u17f9\u0007\r\u0000\u0000\u17f9\u17fa\u0007"+ + "\u0016\u0000\u0000\u17fa\u17fb\u0007\u0007\u0000\u0000\u17fb\u17fc\u0007"+ + "\u000e\u0000\u0000\u17fc\u04e8\u0001\u0000\u0000\u0000\u17fd\u17fe\u0007"+ + "\u0011\u0000\u0000\u17fe\u17ff\u0007\t\u0000\u0000\u17ff\u1800\u0007\u0019"+ + "\u0000\u0000\u1800\u1801\u0007\u0011\u0000\u0000\u1801\u1802\u0007\u0007"+ + "\u0000\u0000\u1802\u1803\u0007\u0011\u0000\u0000\u1803\u1804\u0007\u0010"+ + "\u0000\u0000\u1804\u1805\u0007\n\u0000\u0000\u1805\u04ea\u0001\u0000\u0000"+ + "\u0000\u1806\u1807\u0007\u001e\u0000\u0000\u1807\u1808\u0007\u0016\u0000"+ + "\u0000\u1808\u1809\u0007\t\u0000\u0000\u1809\u180a\u0007\u0010\u0000\u0000"+ + "\u180a\u180b\u0007\u0011\u0000\u0000\u180b\u180c\u0007\u0019\u0000\u0000"+ + "\u180c\u180d\u0007\b\u0000\u0000\u180d\u180e\u0005_\u0000\u0000\u180e"+ + "\u180f\u0007\f\u0000\u0000\u180f\u1810\u0007\u0005\u0000\u0000\u1810\u1811"+ + "\u0007\b\u0000\u0000\u1811\u1812\u0007\t\u0000\u0000\u1812\u04ec\u0001"+ + "\u0000\u0000\u0000\u1813\u1814\u0007\u001e\u0000\u0000\u1814\u1815\u0007"+ + "\u0016\u0000\u0000\u1815\u1816\u0007\t\u0000\u0000\u1816\u1817\u0007\u0010"+ + "\u0000\u0000\u1817\u1818\u0007\u0011\u0000\u0000\u1818\u1819\u0007\u0019"+ + "\u0000\u0000\u1819\u181a\u0007\b\u0000\u0000\u181a\u181b\u0005_\u0000"+ + "\u0000\u181b\u181c\u0007\u0014\u0000\u0000\u181c\u181d\u0007\u0013\u0000"+ + "\u0000\u181d\u181e\u0007\u0016\u0000\u0000\u181e\u181f\u0007\r\u0000\u0000"+ + "\u181f\u1820\u0007\t\u0000\u0000\u1820\u04ee\u0001\u0000\u0000\u0000\u1821"+ + "\u1822\u0007\u001e\u0000\u0000\u1822\u1823\u0007\u0016\u0000\u0000\u1823"+ + "\u1824\u0007\t\u0000\u0000\u1824\u1825\u0007\u0010\u0000\u0000\u1825\u1826"+ + "\u0007\u0011\u0000\u0000\u1826\u1827\u0007\u0019\u0000\u0000\u1827\u1828"+ + "\u0007\b\u0000\u0000\u1828\u1829\u0005_\u0000\u0000\u1829\u182a\u0007"+ + "\u0011\u0000\u0000\u182a\u182b\u0007\u0007\u0000\u0000\u182b\u182c\u0007"+ + "\u0010\u0000\u0000\u182c\u182d\u0007\n\u0000\u0000\u182d\u182e\u0007\r"+ + "\u0000\u0000\u182e\u182f\u0007\u001b\u0000\u0000\u182f\u1830\u0007\u0005"+ + "\u0000\u0000\u1830\u1831\u0007\u0006\u0000\u0000\u1831\u04f0\u0001\u0000"+ + "\u0000\u0000\u1832\u1833\u0007\u000f\u0000\u0000\u1833\u1834\u0007\u0005"+ + "\u0000\u0000\u1834\u1835\u0007\u0015\u0000\u0000\u1835\u1836\u0007\n\u0000"+ + "\u0000\u1836\u1837\u0005_\u0000\u0000\u1837\u1838\u0007\f\u0000\u0000"+ + "\u1838\u1839\u0007\u0005\u0000\u0000\u1839\u183a\u0007\u0010\u0000\u0000"+ + "\u183a\u183b\u0007\n\u0000\u0000\u183b\u04f2\u0001\u0000\u0000\u0000\u183c"+ + "\u183d\u0007\u000f\u0000\u0000\u183d\u183e\u0007\u0005\u0000\u0000\u183e"+ + "\u183f\u0007\u0015\u0000\u0000\u183f\u1840\u0007\n\u0000\u0000\u1840\u1841"+ + "\u0005_\u0000\u0000\u1841\u1842\u0007\u0011\u0000\u0000\u1842\u1843\u0007"+ + "\u0007\u0000\u0000\u1843\u1844\u0007\u0010\u0000\u0000\u1844\u1845\u0007"+ + "\n\u0000\u0000\u1845\u1846\u0007\r\u0000\u0000\u1846\u1847\u0007\u001b"+ + "\u0000\u0000\u1847\u1848\u0007\u0005\u0000\u0000\u1848\u1849\u0007\u0006"+ + "\u0000\u0000\u1849\u04f4\u0001\u0000\u0000\u0000\u184a\u184b\u0007\u000f"+ + "\u0000\u0000\u184b\u184c\u0007\u0005\u0000\u0000\u184c\u184d\u0007\u0015"+ + "\u0000\u0000\u184d\u184e\u0007\n\u0000\u0000\u184e\u184f\u0005_\u0000"+ + "\u0000\u184f\u1850\u0007\u0010\u0000\u0000\u1850\u1851\u0007\u0011\u0000"+ + "\u0000\u1851\u1852\u0007\u000f\u0000\u0000\u1852\u1853\u0007\n\u0000\u0000"+ + "\u1853\u04f6\u0001\u0000\u0000\u0000\u1854\u1855\u0007\u000f\u0000\u0000"+ + "\u1855\u1856\u0007\u0005\u0000\u0000\u1856\u1857\u0007\u0015\u0000\u0000"+ + "\u1857\u1858\u0007\n\u0000\u0000\u1858\u1859\u0005_\u0000\u0000\u1859"+ + "\u185a\u0007\u0010\u0000\u0000\u185a\u185b\u0007\u0011\u0000\u0000\u185b"+ + "\u185c\u0007\u000f\u0000\u0000\u185c\u185d\u0007\n\u0000\u0000\u185d\u185e"+ + "\u0007\t\u0000\u0000\u185e\u185f\u0007\u0010\u0000\u0000\u185f\u1860\u0007"+ + "\u0005\u0000\u0000\u1860\u1861\u0007\u000f\u0000\u0000\u1861\u1862\u0007"+ + "\u0018\u0000\u0000\u1862\u04f8\u0001\u0000\u0000\u0000\u1863\u1864\u0007"+ + "\u000f\u0000\u0000\u1864\u1865\u0007\u0005\u0000\u0000\u1865\u1866\u0007"+ + "\u0015\u0000\u0000\u1866\u1867\u0007\n\u0000\u0000\u1867\u1868\u0005_"+ + "\u0000\u0000\u1868\u1869\u0007\u0010\u0000\u0000\u1869\u186a\u0007\u0011"+ + "\u0000\u0000\u186a\u186b\u0007\u000f\u0000\u0000\u186b\u186c\u0007\n\u0000"+ + "\u0000\u186c\u186d\u0007\t\u0000\u0000\u186d\u186e\u0007\u0010\u0000\u0000"+ + "\u186e\u186f\u0007\u0005\u0000\u0000\u186f\u1870\u0007\u000f\u0000\u0000"+ + "\u1870\u1871\u0007\u0018\u0000\u0000\u1871\u1872\u0007\u0010\u0000\u0000"+ + "\u1872\u1873\u0007\u000b\u0000\u0000\u1873\u04fa\u0001\u0000\u0000\u0000"+ + "\u1874\u1875\u0007\u0007\u0000\u0000\u1875\u1876\u0007\u0013\u0000\u0000"+ + "\u1876\u1877\u0007\u001c\u0000\u0000\u1877\u04fc\u0001\u0000\u0000\u0000"+ + "\u1878\u1879\u0007\t\u0000\u0000\u1879\u187a\u0007\u0010\u0000\u0000\u187a"+ + "\u187b\u0007\u0005\u0000\u0000\u187b\u187c\u0007\u0010\u0000\u0000\u187c"+ + "\u187d\u0007\n\u0000\u0000\u187d\u187e\u0007\u000f\u0000\u0000\u187e\u187f"+ + "\u0007\n\u0000\u0000\u187f\u1880\u0007\u0007\u0000\u0000\u1880\u1881\u0007"+ + "\u0010\u0000\u0000\u1881\u1882\u0005_\u0000\u0000\u1882\u1883\u0007\u0010"+ + "\u0000\u0000\u1883\u1884\u0007\u0011\u0000\u0000\u1884\u1885\u0007\u000f"+ + "\u0000\u0000\u1885\u1886\u0007\n\u0000\u0000\u1886\u1887\u0007\t\u0000"+ + "\u0000\u1887\u1888\u0007\u0010\u0000\u0000\u1888\u1889\u0007\u0005\u0000"+ + "\u0000\u1889\u188a\u0007\u000f\u0000\u0000\u188a\u188b\u0007\u0018\u0000"+ + "\u0000\u188b\u04fe\u0001\u0000\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\u0013\u0000\u0000"+ + "\u1891\u1892\u0007\u0019\u0000\u0000\u1892\u1893\u0007\f\u0000\u0000\u1893"+ + "\u1894\u0007\u0005\u0000\u0000\u1894\u1895\u0007\b\u0000\u0000\u1895\u0500"+ + "\u0001\u0000\u0000\u0000\u1896\u1897\u0007\u0010\u0000\u0000\u1897\u1898"+ + "\u0007\r\u0000\u0000\u1898\u1899\u0007\u0005\u0000\u0000\u1899\u189a\u0007"+ + "\u0007\u0000\u0000\u189a\u189b\u0007\t\u0000\u0000\u189b\u189c\u0007\u0005"+ + "\u0000\u0000\u189c\u189d\u0007\u000e\u0000\u0000\u189d\u189e\u0007\u0010"+ + "\u0000\u0000\u189e\u189f\u0007\u0011\u0000\u0000\u189f\u18a0\u0007\u0013"+ + "\u0000\u0000\u18a0\u18a1\u0007\u0007\u0000\u0000\u18a1\u18a2\u0005_\u0000"+ + "\u0000\u18a2\u18a3\u0007\u0010\u0000\u0000\u18a3\u18a4\u0007\u0011\u0000"+ + "\u0000\u18a4\u18a5\u0007\u000f\u0000\u0000\u18a5\u18a6\u0007\n\u0000\u0000"+ + "\u18a6\u18a7\u0007\t\u0000\u0000\u18a7\u18a8\u0007\u0010\u0000\u0000\u18a8"+ + "\u18a9\u0007\u0005\u0000\u0000\u18a9\u18aa\u0007\u000f\u0000\u0000\u18aa"+ + "\u18ab\u0007\u0018\u0000\u0000\u18ab\u0502\u0001\u0000\u0000\u0000\u18ac"+ + "\u18ad\u0007\u0010\u0000\u0000\u18ad\u18ae\u0007\u0013\u0000\u0000\u18ae"+ + "\u18af\u0005_\u0000\u0000\u18af\u18b0\u0007\u0010\u0000\u0000\u18b0\u18b1"+ + "\u0007\u0011\u0000\u0000\u18b1\u18b2\u0007\u000f\u0000\u0000\u18b2\u18b3"+ + "\u0007\n\u0000\u0000\u18b3\u18b4\u0007\t\u0000\u0000\u18b4\u18b5\u0007"+ + "\u0010\u0000\u0000\u18b5\u18b6\u0007\u0005\u0000\u0000\u18b6\u18b7\u0007"+ + "\u000f\u0000\u0000\u18b7\u18b8\u0007\u0018\u0000\u0000\u18b8\u0504\u0001"+ + "\u0000\u0000\u0000\u18b9\u18ba\u0007\u0010\u0000\u0000\u18ba\u18bb\u0007"+ + "\u0013\u0000\u0000\u18bb\u18bc\u0005_\u0000\u0000\u18bc\u18bd\u0007\u000e"+ + "\u0000\u0000\u18bd\u18be\u0007\u0014\u0000\u0000\u18be\u18bf\u0007\u0005"+ + "\u0000\u0000\u18bf\u18c0\u0007\r\u0000\u0000\u18c0\u0506\u0001\u0000\u0000"+ + "\u0000\u18c1\u18c2\u0007\u0010\u0000\u0000\u18c2\u18c3\u0007\u0013\u0000"+ + "\u0000\u18c3\u18c4\u0005_\u0000\u0000\u18c4\u18c5\u0007\f\u0000\u0000"+ + "\u18c5\u18c6\u0007\u0005\u0000\u0000\u18c6\u18c7\u0007\u0010\u0000\u0000"+ + "\u18c7\u18c8\u0007\n\u0000\u0000\u18c8\u0508\u0001\u0000\u0000\u0000\u18c9"+ + "\u18ca\u0007\u0010\u0000\u0000\u18ca\u18cb\u0007\u0013\u0000\u0000\u18cb"+ + "\u18cc\u0005_\u0000\u0000\u18cc\u18cd\u0007\u0007\u0000\u0000\u18cd\u18ce"+ + "\u0007\u0016\u0000\u0000\u18ce\u18cf\u0007\u000f\u0000\u0000\u18cf\u18d0"+ + "\u0007\u0012\u0000\u0000\u18d0\u18d1\u0007\n\u0000\u0000\u18d1\u18d2\u0007"+ + "\r\u0000\u0000\u18d2\u050a\u0001\u0000\u0000\u0000\u18d3\u18d7\u0003\u050d"+ + "\u0284\u0000\u18d4\u18d6\u0003\u050f\u0285\u0000\u18d5\u18d4\u0001\u0000"+ + "\u0000\u0000\u18d6\u18d9\u0001\u0000\u0000\u0000\u18d7\u18d5\u0001\u0000"+ + "\u0000\u0000\u18d7\u18d8\u0001\u0000\u0000\u0000\u18d8\u050c\u0001\u0000"+ + "\u0000\u0000\u18d9\u18d7\u0001\u0000\u0000\u0000\u18da\u18e1\u0007\u001f"+ + "\u0000\u0000\u18db\u18dc\u0007 \u0000\u0000\u18dc\u18e1\u0004\u0284\u0006"+ + "\u0000\u18dd\u18de\u0007!\u0000\u0000\u18de\u18df\u0007\"\u0000\u0000"+ + "\u18df\u18e1\u0004\u0284\u0007\u0000\u18e0\u18da\u0001\u0000\u0000\u0000"+ + "\u18e0\u18db\u0001\u0000\u0000\u0000\u18e0\u18dd\u0001\u0000\u0000\u0000"+ + "\u18e1\u050e\u0001\u0000\u0000\u0000\u18e2\u18e5\u0003\u0511\u0286\u0000"+ + "\u18e3\u18e5\u0005$\u0000\u0000\u18e4\u18e2\u0001\u0000\u0000\u0000\u18e4"+ + "\u18e3\u0001\u0000\u0000\u0000\u18e5\u0510\u0001\u0000\u0000\u0000\u18e6"+ + "\u18e9\u0003\u050d\u0284\u0000\u18e7\u18e9\u0007\u0000\u0000\u0000\u18e8"+ + "\u18e6\u0001\u0000\u0000\u0000\u18e8\u18e7\u0001\u0000\u0000\u0000\u18e9"+ + "\u0512\u0001\u0000\u0000\u0000\u18ea\u18eb\u0003\u0515\u0288\u0000\u18eb"+ + "\u18ec\u0005\"\u0000\u0000\u18ec\u0514\u0001\u0000\u0000\u0000\u18ed\u18f3"+ + "\u0005\"\u0000\u0000\u18ee\u18ef\u0005\"\u0000\u0000\u18ef\u18f2\u0005"+ + "\"\u0000\u0000\u18f0\u18f2\b#\u0000\u0000\u18f1\u18ee\u0001\u0000\u0000"+ + "\u0000\u18f1\u18f0\u0001\u0000\u0000\u0000\u18f2\u18f5\u0001\u0000\u0000"+ + "\u0000\u18f3\u18f1\u0001\u0000\u0000\u0000\u18f3\u18f4\u0001\u0000\u0000"+ + "\u0000\u18f4\u0516\u0001\u0000\u0000\u0000\u18f5\u18f3\u0001\u0000\u0000"+ + "\u0000\u18f6\u18f7\u0003\u0519\u028a\u0000\u18f7\u18f8\u0005\"\u0000\u0000"+ + "\u18f8\u0518\u0001\u0000\u0000\u0000\u18f9\u18ff\u0005\"\u0000\u0000\u18fa"+ + "\u18fb\u0005\"\u0000\u0000\u18fb\u18fe\u0005\"\u0000\u0000\u18fc\u18fe"+ + "\b$\u0000\u0000\u18fd\u18fa\u0001\u0000\u0000\u0000\u18fd\u18fc\u0001"+ + "\u0000\u0000\u0000\u18fe\u1901\u0001\u0000\u0000\u0000\u18ff\u18fd\u0001"+ + "\u0000\u0000\u0000\u18ff\u1900\u0001\u0000\u0000\u0000\u1900\u051a\u0001"+ + "\u0000\u0000\u0000\u1901\u18ff\u0001\u0000\u0000\u0000\u1902\u1903\u0007"+ + "\u0016\u0000\u0000\u1903\u1904\u0005&\u0000\u0000\u1904\u1905\u0003\u0513"+ + "\u0287\u0000\u1905\u051c\u0001\u0000\u0000\u0000\u1906\u1907\u0007\u0016"+ + "\u0000\u0000\u1907\u1908\u0005&\u0000\u0000\u1908\u1909\u0003\u0515\u0288"+ + "\u0000\u1909\u051e\u0001\u0000\u0000\u0000\u190a\u190b\u0007\u0016\u0000"+ + "\u0000\u190b\u190c\u0005&\u0000\u0000\u190c\u190d\u0003\u0517\u0289\u0000"+ + "\u190d\u0520\u0001\u0000\u0000\u0000\u190e\u190f\u0007\u0016\u0000\u0000"+ + "\u190f\u1910\u0005&\u0000\u0000\u1910\u1911\u0003\u0519\u028a\u0000\u1911"+ + "\u0522\u0001\u0000\u0000\u0000\u1912\u1913\u0003\u0525\u0290\u0000\u1913"+ + "\u1914\u0005\'\u0000\u0000\u1914\u0524\u0001\u0000\u0000\u0000\u1915\u191b"+ + "\u0005\'\u0000\u0000\u1916\u1917\u0005\'\u0000\u0000\u1917\u191a\u0005"+ + "\'\u0000\u0000\u1918\u191a\b%\u0000\u0000\u1919\u1916\u0001\u0000\u0000"+ + "\u0000\u1919\u1918\u0001\u0000\u0000\u0000\u191a\u191d\u0001\u0000\u0000"+ + "\u0000\u191b\u1919\u0001\u0000\u0000\u0000\u191b\u191c\u0001\u0000\u0000"+ + "\u0000\u191c\u0526\u0001\u0000\u0000\u0000\u191d\u191b\u0001\u0000\u0000"+ + "\u0000\u191e\u191f\u0007\n\u0000\u0000\u191f\u1920\u0005\'\u0000\u0000"+ + "\u1920\u1921\u0001\u0000\u0000\u0000\u1921\u1922\u0006\u0291\u0002\u0000"+ + "\u1922\u1923\u0006\u0291\u0003\u0000\u1923\u0528\u0001\u0000\u0000\u0000"+ + "\u1924\u1925\u0003\u052b\u0293\u0000\u1925\u1926\u0005\'\u0000\u0000\u1926"+ + "\u052a\u0001\u0000\u0000\u0000\u1927\u1928\u0007\u0016\u0000\u0000\u1928"+ + "\u1929\u0005&\u0000\u0000\u1929\u192a\u0003\u0525\u0290\u0000\u192a\u052c"+ + "\u0001\u0000\u0000\u0000\u192b\u192d\u0005$\u0000\u0000\u192c\u192e\u0003"+ + "\u052f\u0295\u0000\u192d\u192c\u0001\u0000\u0000\u0000\u192d\u192e\u0001"+ + "\u0000\u0000\u0000\u192e\u192f\u0001\u0000\u0000\u0000\u192f\u1930\u0005"+ + "$\u0000\u0000\u1930\u1931\u0006\u0294\u0004\u0000\u1931\u1932\u0001\u0000"+ + "\u0000\u0000\u1932\u1933\u0006\u0294\u0005\u0000\u1933\u052e\u0001\u0000"+ + "\u0000\u0000\u1934\u1938\u0003\u050d\u0284\u0000\u1935\u1937\u0003\u0511"+ + "\u0286\u0000\u1936\u1935\u0001\u0000\u0000\u0000\u1937\u193a\u0001\u0000"+ + "\u0000\u0000\u1938\u1936\u0001\u0000\u0000\u0000\u1938\u1939\u0001\u0000"+ + "\u0000\u0000\u1939\u0530\u0001\u0000\u0000\u0000\u193a\u1938\u0001\u0000"+ + "\u0000\u0000\u193b\u193c\u0003\u0533\u0297\u0000\u193c\u193d\u0005\'\u0000"+ + "\u0000\u193d\u0532\u0001\u0000\u0000\u0000\u193e\u193f\u0007\u0012\u0000"+ + "\u0000\u193f\u1943\u0005\'\u0000\u0000\u1940\u1942\u0007&\u0000\u0000"+ + "\u1941\u1940\u0001\u0000\u0000\u0000\u1942\u1945\u0001\u0000\u0000\u0000"+ + "\u1943\u1941\u0001\u0000\u0000\u0000\u1943\u1944\u0001\u0000\u0000\u0000"+ + "\u1944\u0534\u0001\u0000\u0000\u0000\u1945\u1943\u0001\u0000\u0000\u0000"+ + "\u1946\u1947\u0003\u0537\u0299\u0000\u1947\u1948\u0005\'\u0000\u0000\u1948"+ + "\u0536\u0001\u0000\u0000\u0000\u1949\u194a\u0007\u0012\u0000\u0000\u194a"+ + "\u194b\u0003\u0525\u0290\u0000\u194b\u0538\u0001\u0000\u0000\u0000\u194c"+ + "\u194d\u0003\u053b\u029b\u0000\u194d\u194e\u0005\'\u0000\u0000\u194e\u053a"+ + "\u0001\u0000\u0000\u0000\u194f\u1950\u0007\u001a\u0000\u0000\u1950\u1954"+ + "\u0005\'\u0000\u0000\u1951\u1953\u0007\'\u0000\u0000\u1952\u1951\u0001"+ + "\u0000\u0000\u0000\u1953\u1956\u0001\u0000\u0000\u0000\u1954\u1952\u0001"+ + "\u0000\u0000\u0000\u1954\u1955\u0001\u0000\u0000\u0000\u1955\u053c\u0001"+ + "\u0000\u0000\u0000\u1956\u1954\u0001\u0000\u0000\u0000\u1957\u1958\u0003"+ + "\u053f\u029d\u0000\u1958\u1959\u0005\'\u0000\u0000\u1959\u053e\u0001\u0000"+ + "\u0000\u0000\u195a\u195b\u0007\u001a\u0000\u0000\u195b\u195c\u0003\u0525"+ + "\u0290\u0000\u195c\u0540\u0001\u0000\u0000\u0000\u195d\u195e\u0003\u0547"+ + "\u02a1\u0000\u195e\u0542\u0001\u0000\u0000\u0000\u195f\u1960\u0003\u0547"+ + "\u02a1\u0000\u1960\u1961\u0005.\u0000\u0000\u1961\u1962\u0005.\u0000\u0000"+ + "\u1962\u1963\u0001\u0000\u0000\u0000\u1963\u1964\u0006\u029f\u0006\u0000"+ + "\u1964\u0544\u0001\u0000\u0000\u0000\u1965\u1966\u0003\u0547\u02a1\u0000"+ + "\u1966\u1968\u0005.\u0000\u0000\u1967\u1969\u0003\u0547\u02a1\u0000\u1968"+ + "\u1967\u0001\u0000\u0000\u0000\u1968\u1969\u0001\u0000\u0000\u0000\u1969"+ + "\u196f\u0001\u0000\u0000\u0000\u196a\u196c\u0007\n\u0000\u0000\u196b\u196d"+ + "\u0007\u0001\u0000\u0000\u196c\u196b\u0001\u0000\u0000\u0000\u196c\u196d"+ + "\u0001\u0000\u0000\u0000\u196d\u196e\u0001\u0000\u0000\u0000\u196e\u1970"+ + "\u0003\u0547\u02a1\u0000\u196f\u196a\u0001\u0000\u0000\u0000\u196f\u1970"+ + "\u0001\u0000\u0000\u0000\u1970\u1982\u0001\u0000\u0000\u0000\u1971\u1972"+ + "\u0005.\u0000\u0000\u1972\u1978\u0003\u0547\u02a1\u0000\u1973\u1975\u0007"+ + "\n\u0000\u0000\u1974\u1976\u0007\u0001\u0000\u0000\u1975\u1974\u0001\u0000"+ + "\u0000\u0000\u1975\u1976\u0001\u0000\u0000\u0000\u1976\u1977\u0001\u0000"+ + "\u0000\u0000\u1977\u1979\u0003\u0547\u02a1\u0000\u1978\u1973\u0001\u0000"+ + "\u0000\u0000\u1978\u1979\u0001\u0000\u0000\u0000\u1979\u1982\u0001\u0000"+ + "\u0000\u0000\u197a\u197b\u0003\u0547\u02a1\u0000\u197b\u197d\u0007\n\u0000"+ + "\u0000\u197c\u197e\u0007\u0001\u0000\u0000\u197d\u197c\u0001\u0000\u0000"+ + "\u0000\u197d\u197e\u0001\u0000\u0000\u0000\u197e\u197f\u0001\u0000\u0000"+ + "\u0000\u197f\u1980\u0003\u0547\u02a1\u0000\u1980\u1982\u0001\u0000\u0000"+ + "\u0000\u1981\u1965\u0001\u0000\u0000\u0000\u1981\u1971\u0001\u0000\u0000"+ + "\u0000\u1981\u197a\u0001\u0000\u0000\u0000\u1982\u0546\u0001\u0000\u0000"+ + "\u0000\u1983\u1985\u0007\u0000\u0000\u0000\u1984\u1983\u0001\u0000\u0000"+ + "\u0000\u1985\u1986\u0001\u0000\u0000\u0000\u1986\u1984\u0001\u0000\u0000"+ + "\u0000\u1986\u1987\u0001\u0000\u0000\u0000\u1987\u0548\u0001\u0000\u0000"+ + "\u0000\u1988\u1989\u0005:\u0000\u0000\u1989\u198d\u0007(\u0000\u0000\u198a"+ + "\u198c\u0007)\u0000\u0000\u198b\u198a\u0001\u0000\u0000\u0000\u198c\u198f"+ + "\u0001\u0000\u0000\u0000\u198d\u198b\u0001\u0000\u0000\u0000\u198d\u198e"+ + "\u0001\u0000\u0000\u0000\u198e\u054a\u0001\u0000\u0000\u0000\u198f\u198d"+ + "\u0001\u0000\u0000\u0000\u1990\u1991\u0005:\u0000\u0000\u1991\u1992\u0005"+ + "\"\u0000\u0000\u1992\u199a\u0001\u0000\u0000\u0000\u1993\u1994\u0005\\"+ + "\u0000\u0000\u1994\u1999\t\u0000\u0000\u0000\u1995\u1996\u0005\"\u0000"+ + "\u0000\u1996\u1999\u0005\"\u0000\u0000\u1997\u1999\b*\u0000\u0000\u1998"+ + "\u1993\u0001\u0000\u0000\u0000\u1998\u1995\u0001\u0000\u0000\u0000\u1998"+ + "\u1997\u0001\u0000\u0000\u0000\u1999\u199c\u0001\u0000\u0000\u0000\u199a"+ + "\u1998\u0001\u0000\u0000\u0000\u199a\u199b\u0001\u0000\u0000\u0000\u199b"+ + "\u199d\u0001\u0000\u0000\u0000\u199c\u199a\u0001\u0000\u0000\u0000\u199d"+ + "\u199e\u0005\"\u0000\u0000\u199e\u054c\u0001\u0000\u0000\u0000\u199f\u19a1"+ + "\u0007+\u0000\u0000\u19a0\u199f\u0001\u0000\u0000\u0000\u19a1\u19a2\u0001"+ + "\u0000\u0000\u0000\u19a2\u19a0\u0001\u0000\u0000\u0000\u19a2\u19a3\u0001"+ + "\u0000\u0000\u0000\u19a3\u19a4\u0001\u0000\u0000\u0000\u19a4\u19a5\u0006"+ + "\u02a4\u0007\u0000\u19a5\u054e\u0001\u0000\u0000\u0000\u19a6\u19a8\u0005"+ + "\r\u0000\u0000\u19a7\u19a9\u0005\n\u0000\u0000\u19a8\u19a7\u0001\u0000"+ + "\u0000\u0000\u19a8\u19a9\u0001\u0000\u0000\u0000\u19a9\u19ac\u0001\u0000"+ + "\u0000\u0000\u19aa\u19ac\u0005\n\u0000\u0000\u19ab\u19a6\u0001\u0000\u0000"+ + "\u0000\u19ab\u19aa\u0001\u0000\u0000\u0000\u19ac\u19ad\u0001\u0000\u0000"+ + "\u0000\u19ad\u19ae\u0006\u02a5\u0007\u0000\u19ae\u0550\u0001\u0000\u0000"+ + "\u0000\u19af\u19b0\u0005-\u0000\u0000\u19b0\u19b1\u0005-\u0000\u0000\u19b1"+ + "\u19b5\u0001\u0000\u0000\u0000\u19b2\u19b4\b,\u0000\u0000\u19b3\u19b2"+ + "\u0001\u0000\u0000\u0000\u19b4\u19b7\u0001\u0000\u0000\u0000\u19b5\u19b3"+ + "\u0001\u0000\u0000\u0000\u19b5\u19b6\u0001\u0000\u0000\u0000\u19b6\u19b8"+ + "\u0001\u0000\u0000\u0000\u19b7\u19b5\u0001\u0000\u0000\u0000\u19b8\u19b9"+ + "\u0006\u02a6\u0007\u0000\u19b9\u0552\u0001\u0000\u0000\u0000\u19ba\u19bb"+ + "\u0005/\u0000\u0000\u19bb\u19bc\u0005*\u0000\u0000\u19bc\u19d3\u0001\u0000"+ + "\u0000\u0000\u19bd\u19bf\u0005/\u0000\u0000\u19be\u19bd\u0001\u0000\u0000"+ + "\u0000\u19bf\u19c2\u0001\u0000\u0000\u0000\u19c0\u19be\u0001\u0000\u0000"+ + "\u0000\u19c0\u19c1\u0001\u0000\u0000\u0000\u19c1\u19c3\u0001\u0000\u0000"+ + "\u0000\u19c2\u19c0\u0001\u0000\u0000\u0000\u19c3\u19d2\u0003\u0553\u02a7"+ + "\u0000\u19c4\u19d2\b-\u0000\u0000\u19c5\u19c7\u0005/\u0000\u0000\u19c6"+ + "\u19c5\u0001\u0000\u0000\u0000\u19c7\u19c8\u0001\u0000\u0000\u0000\u19c8"+ + "\u19c6\u0001\u0000\u0000\u0000\u19c8\u19c9\u0001\u0000\u0000\u0000\u19c9"+ + "\u19ca\u0001\u0000\u0000\u0000\u19ca\u19d2\b-\u0000\u0000\u19cb\u19cd"+ + "\u0005*\u0000\u0000\u19cc\u19cb\u0001\u0000\u0000\u0000\u19cd\u19ce\u0001"+ + "\u0000\u0000\u0000\u19ce\u19cc\u0001\u0000\u0000\u0000\u19ce\u19cf\u0001"+ + "\u0000\u0000\u0000\u19cf\u19d0\u0001\u0000\u0000\u0000\u19d0\u19d2\b-"+ + "\u0000\u0000\u19d1\u19c0\u0001\u0000\u0000\u0000\u19d1\u19c4\u0001\u0000"+ + "\u0000\u0000\u19d1\u19c6\u0001\u0000\u0000\u0000\u19d1\u19cc\u0001\u0000"+ + "\u0000\u0000\u19d2\u19d5\u0001\u0000\u0000\u0000\u19d3\u19d1\u0001\u0000"+ + "\u0000\u0000\u19d3\u19d4\u0001\u0000\u0000\u0000\u19d4\u19d9\u0001\u0000"+ + "\u0000\u0000\u19d5\u19d3\u0001\u0000\u0000\u0000\u19d6\u19d8\u0005*\u0000"+ + "\u0000\u19d7\u19d6\u0001\u0000\u0000\u0000\u19d8\u19db\u0001\u0000\u0000"+ + "\u0000\u19d9\u19d7\u0001\u0000\u0000\u0000\u19d9\u19da\u0001\u0000\u0000"+ + "\u0000\u19da\u19dc\u0001\u0000\u0000\u0000\u19db\u19d9\u0001\u0000\u0000"+ + "\u0000\u19dc\u19dd\u0005*\u0000\u0000\u19dd\u19de\u0005/\u0000\u0000\u19de"+ + "\u19df\u0001\u0000\u0000\u0000\u19df\u19e0\u0006\u02a7\u0007\u0000\u19e0"+ + "\u0554\u0001\u0000\u0000\u0000\u19e1\u19e2\u0005/\u0000\u0000\u19e2\u19e3"+ + "\u0005*\u0000\u0000\u19e3\u19fc\u0001\u0000\u0000\u0000\u19e4\u19e6\u0005"+ + "/\u0000\u0000\u19e5\u19e4\u0001\u0000\u0000\u0000\u19e6\u19e9\u0001\u0000"+ + "\u0000\u0000\u19e7\u19e5\u0001\u0000\u0000\u0000\u19e7\u19e8\u0001\u0000"+ + "\u0000\u0000\u19e8\u19ea\u0001\u0000\u0000\u0000\u19e9\u19e7\u0001\u0000"+ + "\u0000\u0000\u19ea\u19fb\u0003\u0553\u02a7\u0000\u19eb\u19fb\b-\u0000"+ + "\u0000\u19ec\u19ee\u0005/\u0000\u0000\u19ed\u19ec\u0001\u0000\u0000\u0000"+ + "\u19ee\u19ef\u0001\u0000\u0000\u0000\u19ef\u19ed\u0001\u0000\u0000\u0000"+ + "\u19ef\u19f0\u0001\u0000\u0000\u0000\u19f0\u19f1\u0001\u0000\u0000\u0000"+ + "\u19f1\u19f9\b-\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\u19f7"+ + "\u0001\u0000\u0000\u0000\u19f7\u19f9\b-\u0000\u0000\u19f8\u19ed\u0001"+ + "\u0000\u0000\u0000\u19f8\u19f3\u0001\u0000\u0000\u0000\u19f9\u19fb\u0001"+ + "\u0000\u0000\u0000\u19fa\u19e7\u0001\u0000\u0000\u0000\u19fa\u19eb\u0001"+ + "\u0000\u0000\u0000\u19fa\u19f8\u0001\u0000\u0000\u0000\u19fb\u19fe\u0001"+ + "\u0000\u0000\u0000\u19fc\u19fa\u0001\u0000\u0000\u0000\u19fc\u19fd\u0001"+ + "\u0000\u0000\u0000\u19fd\u1a10\u0001\u0000\u0000\u0000\u19fe\u19fc\u0001"+ + "\u0000\u0000\u0000\u19ff\u1a01\u0005/\u0000\u0000\u1a00\u19ff\u0001\u0000"+ + "\u0000\u0000\u1a01\u1a02\u0001\u0000\u0000\u0000\u1a02\u1a00\u0001\u0000"+ + "\u0000\u0000\u1a02\u1a03\u0001\u0000\u0000\u0000\u1a03\u1a11\u0001\u0000"+ + "\u0000\u0000\u1a04\u1a06\u0005*\u0000\u0000\u1a05\u1a04\u0001\u0000\u0000"+ + "\u0000\u1a06\u1a07\u0001\u0000\u0000\u0000\u1a07\u1a05\u0001\u0000\u0000"+ + "\u0000\u1a07\u1a08\u0001\u0000\u0000\u0000\u1a08\u1a11\u0001\u0000\u0000"+ + "\u0000\u1a09\u1a0b\u0005/\u0000\u0000\u1a0a\u1a09\u0001\u0000\u0000\u0000"+ + "\u1a0b\u1a0e\u0001\u0000\u0000\u0000\u1a0c\u1a0a\u0001\u0000\u0000\u0000"+ + "\u1a0c\u1a0d\u0001\u0000\u0000\u0000\u1a0d\u1a0f\u0001\u0000\u0000\u0000"+ + "\u1a0e\u1a0c\u0001\u0000\u0000\u0000\u1a0f\u1a11\u0003\u0555\u02a8\u0000"+ + "\u1a10\u1a00\u0001\u0000\u0000\u0000\u1a10\u1a05\u0001\u0000\u0000\u0000"+ + "\u1a10\u1a0c\u0001\u0000\u0000\u0000\u1a10\u1a11\u0001\u0000\u0000\u0000"+ + "\u1a11\u1a12\u0001\u0000\u0000\u0000\u1a12\u1a13\u0006\u02a8\b\u0000\u1a13"+ + "\u0556\u0001\u0000\u0000\u0000\u1a14\u1a20\u0005\\\u0000\u0000\u1a15\u1a1f"+ + "\b.\u0000\u0000\u1a16\u1a1a\u0005\"\u0000\u0000\u1a17\u1a19\b/\u0000\u0000"+ + "\u1a18\u1a17\u0001\u0000\u0000\u0000\u1a19\u1a1c\u0001\u0000\u0000\u0000"+ + "\u1a1a\u1a18\u0001\u0000\u0000\u0000\u1a1a\u1a1b\u0001\u0000\u0000\u0000"+ + "\u1a1b\u1a1d\u0001\u0000\u0000\u0000\u1a1c\u1a1a\u0001\u0000\u0000\u0000"+ + "\u1a1d\u1a1f\u0005\"\u0000\u0000\u1a1e\u1a15\u0001\u0000\u0000\u0000\u1a1e"+ + "\u1a16\u0001\u0000\u0000\u0000\u1a1f\u1a22\u0001\u0000\u0000\u0000\u1a20"+ + "\u1a1e\u0001\u0000\u0000\u0000\u1a20\u1a21\u0001\u0000\u0000\u0000\u1a21"+ + "\u1a2a\u0001\u0000\u0000\u0000\u1a22\u1a20\u0001\u0000\u0000\u0000\u1a23"+ + "\u1a27\u0005\"\u0000\u0000\u1a24\u1a26\b/\u0000\u0000\u1a25\u1a24\u0001"+ + "\u0000\u0000\u0000\u1a26\u1a29\u0001\u0000\u0000\u0000\u1a27\u1a25\u0001"+ + "\u0000\u0000\u0000\u1a27\u1a28\u0001\u0000\u0000\u0000\u1a28\u1a2b\u0001"+ + "\u0000\u0000\u0000\u1a29\u1a27\u0001\u0000\u0000\u0000\u1a2a\u1a23\u0001"+ + "\u0000\u0000\u0000\u1a2a\u1a2b\u0001\u0000\u0000\u0000\u1a2b\u0558\u0001"+ + "\u0000\u0000\u0000\u1a2c\u1a2d\u0005\\\u0000\u0000\u1a2d\u1a2e\u0005\\"+ + "\u0000\u0000\u1a2e\u055a\u0001\u0000\u0000\u0000\u1a2f\u1a30\t\u0000\u0000"+ + "\u0000\u1a30\u055c\u0001\u0000\u0000\u0000\u1a31\u1a32\u0003\u0561\u02ae"+ + "\u0000\u1a32\u1a33\u0005\'\u0000\u0000\u1a33\u1a34\u0001\u0000\u0000\u0000"+ + "\u1a34\u1a35\u0006\u02ac\t\u0000\u1a35\u055e\u0001\u0000\u0000\u0000\u1a36"+ + "\u1a38\u0003\u0561\u02ae\u0000\u1a37\u1a39\u0005\\\u0000\u0000\u1a38\u1a37"+ + "\u0001\u0000\u0000\u0000\u1a38\u1a39\u0001\u0000\u0000\u0000\u1a39\u1a3a"+ + "\u0001\u0000\u0000\u0000\u1a3a\u1a3b\u0005\u0000\u0000\u0001\u1a3b\u0560"+ + "\u0001\u0000\u0000\u0000\u1a3c\u1a3d\u0005\'\u0000\u0000\u1a3d\u1a54\u0005"+ + "\'\u0000\u0000\u1a3e\u1a50\u0005\\\u0000\u0000\u1a3f\u1a40\u0005x\u0000"+ + "\u0000\u1a40\u1a51\u0007\'\u0000\u0000\u1a41\u1a42\u0005u\u0000\u0000"+ + "\u1a42\u1a43\u0007\'\u0000\u0000\u1a43\u1a44\u0007\'\u0000\u0000\u1a44"+ + "\u1a45\u0007\'\u0000\u0000\u1a45\u1a51\u0007\'\u0000\u0000\u1a46\u1a47"+ + "\u0005U\u0000\u0000\u1a47\u1a48\u0007\'\u0000\u0000\u1a48\u1a49\u0007"+ + "\'\u0000\u0000\u1a49\u1a4a\u0007\'\u0000\u0000\u1a4a\u1a4b\u0007\'\u0000"+ + "\u0000\u1a4b\u1a4c\u0007\'\u0000\u0000\u1a4c\u1a4d\u0007\'\u0000\u0000"+ + "\u1a4d\u1a4e\u0007\'\u0000\u0000\u1a4e\u1a51\u0007\'\u0000\u0000\u1a4f"+ + "\u1a51\b0\u0000\u0000\u1a50\u1a3f\u0001\u0000\u0000\u0000\u1a50\u1a41"+ + "\u0001\u0000\u0000\u0000\u1a50\u1a46\u0001\u0000\u0000\u0000\u1a50\u1a4f"+ + "\u0001\u0000\u0000\u0000\u1a51\u1a54\u0001\u0000\u0000\u0000\u1a52\u1a54"+ + "\b1\u0000\u0000\u1a53\u1a3c\u0001\u0000\u0000\u0000\u1a53\u1a3e\u0001"+ + "\u0000\u0000\u0000\u1a53\u1a52\u0001\u0000\u0000\u0000\u1a54\u1a57\u0001"+ + "\u0000\u0000\u0000\u1a55\u1a53\u0001\u0000\u0000\u0000\u1a55\u1a56\u0001"+ + "\u0000\u0000\u0000\u1a56\u0562\u0001\u0000\u0000\u0000\u1a57\u1a55\u0001"+ + "\u0000\u0000\u0000\u1a58\u1a59\u0003\u0567\u02b1\u0000\u1a59\u1a5a\u0005"+ + "\'\u0000\u0000\u1a5a\u1a5b\u0001\u0000\u0000\u0000\u1a5b\u1a5c\u0006\u02af"+ + "\t\u0000\u1a5c\u0564\u0001\u0000\u0000\u0000\u1a5d\u1a5f\u0003\u0567\u02b1"+ + "\u0000\u1a5e\u1a60\u0005\\\u0000\u0000\u1a5f\u1a5e\u0001\u0000\u0000\u0000"+ + "\u1a5f\u1a60\u0001\u0000\u0000\u0000\u1a60\u1a61\u0001\u0000\u0000\u0000"+ + "\u1a61\u1a62\u0005\u0000\u0000\u0001\u1a62\u0566\u0001\u0000\u0000\u0000"+ + "\u1a63\u1a64\u0005\'\u0000\u0000\u1a64\u1a69\u0005\'\u0000\u0000\u1a65"+ + "\u1a66\u0005\\\u0000\u0000\u1a66\u1a69\t\u0000\u0000\u0000\u1a67\u1a69"+ + "\b1\u0000\u0000\u1a68\u1a63\u0001\u0000\u0000\u0000\u1a68\u1a65\u0001"+ + "\u0000\u0000\u0000\u1a68\u1a67\u0001\u0000\u0000\u0000\u1a69\u1a6c\u0001"+ + "\u0000\u0000\u0000\u1a6a\u1a68\u0001\u0000\u0000\u0000\u1a6a\u1a6b\u0001"+ + "\u0000\u0000\u0000\u1a6b\u0568\u0001\u0000\u0000\u0000\u1a6c\u1a6a\u0001"+ + "\u0000\u0000\u0000\u1a6d\u1a6e\u0003\u054d\u02a4\u0000\u1a6e\u1a6f\u0001"+ + "\u0000\u0000\u0000\u1a6f\u1a70\u0006\u02b2\n\u0000\u1a70\u1a71\u0006\u02b2"+ + "\u0007\u0000\u1a71\u056a\u0001\u0000\u0000\u0000\u1a72\u1a73\u0003\u054f"+ + "\u02a5\u0000\u1a73\u1a74\u0001\u0000\u0000\u0000\u1a74\u1a75\u0006\u02b3"+ + "\u000b\u0000\u1a75\u1a76\u0006\u02b3\u0007\u0000\u1a76\u1a77\u0006\u02b3"+ + "\f\u0000\u1a77\u056c\u0001\u0000\u0000\u0000\u1a78\u1a79\u0006\u02b4\r"+ + "\u0000\u1a79\u1a7a\u0001\u0000\u0000\u0000\u1a7a\u1a7b\u0006\u02b4\u000e"+ + "\u0000\u1a7b\u1a7c\u0006\u02b4\u000f\u0000\u1a7c\u056e\u0001\u0000\u0000"+ + "\u0000\u1a7d\u1a7e\u0003\u054d\u02a4\u0000\u1a7e\u1a7f\u0001\u0000\u0000"+ + "\u0000\u1a7f\u1a80\u0006\u02b5\n\u0000\u1a80\u1a81\u0006\u02b5\u0007\u0000"+ + "\u1a81\u0570\u0001\u0000\u0000\u0000\u1a82\u1a83\u0003\u054f\u02a5\u0000"+ + "\u1a83\u1a84\u0001\u0000\u0000\u0000\u1a84\u1a85\u0006\u02b6\u000b\u0000"+ + "\u1a85\u1a86\u0006\u02b6\u0007\u0000\u1a86\u0572\u0001\u0000\u0000\u0000"+ + "\u1a87\u1a88\u0005\'\u0000\u0000\u1a88\u1a89\u0001\u0000\u0000\u0000\u1a89"+ + "\u1a8a\u0006\u02b7\u0002\u0000\u1a8a\u1a8b\u0006\u02b7\u0010\u0000\u1a8b"+ + "\u0574\u0001\u0000\u0000\u0000\u1a8c\u1a8d\u0006\u02b8\u0011\u0000\u1a8d"+ + "\u1a8e\u0001\u0000\u0000\u0000\u1a8e\u1a8f\u0006\u02b8\u000e\u0000\u1a8f"+ + "\u1a90\u0006\u02b8\u000f\u0000\u1a90\u0576\u0001\u0000\u0000\u0000\u1a91"+ + "\u1a93\b2\u0000\u0000\u1a92\u1a91\u0001\u0000\u0000\u0000\u1a93\u1a94"+ + "\u0001\u0000\u0000\u0000\u1a94\u1a92\u0001\u0000\u0000\u0000\u1a94\u1a95"+ + "\u0001\u0000\u0000\u0000\u1a95\u1a9e\u0001\u0000\u0000\u0000\u1a96\u1a9a"+ + "\u0005$\u0000\u0000\u1a97\u1a99\b2\u0000\u0000\u1a98\u1a97\u0001\u0000"+ + "\u0000\u0000\u1a99\u1a9c\u0001\u0000\u0000\u0000\u1a9a\u1a98\u0001\u0000"+ + "\u0000\u0000\u1a9a\u1a9b\u0001\u0000\u0000\u0000\u1a9b\u1a9e\u0001\u0000"+ + "\u0000\u0000\u1a9c\u1a9a\u0001\u0000\u0000\u0000\u1a9d\u1a92\u0001\u0000"+ + "\u0000\u0000\u1a9d\u1a96\u0001\u0000\u0000\u0000\u1a9e\u0578\u0001\u0000"+ + "\u0000\u0000\u1a9f\u1aa1\u0005$\u0000\u0000\u1aa0\u1aa2\u0003\u052f\u0295"+ + "\u0000\u1aa1\u1aa0\u0001\u0000\u0000\u0000\u1aa1\u1aa2\u0001\u0000\u0000"+ + "\u0000\u1aa2\u1aa3\u0001\u0000\u0000\u0000\u1aa3\u1aa4\u0005$\u0000\u0000"+ + "\u1aa4\u1aa5\u0001\u0000\u0000\u0000\u1aa5\u1aa6\u0004\u02ba\b\u0000\u1aa6"+ + "\u1aa7\u0006\u02ba\u0012\u0000\u1aa7\u1aa8\u0001\u0000\u0000\u0000\u1aa8"+ + "\u1aa9\u0006\u02ba\u000f\u0000\u1aa9\u057a\u0001\u0000\u0000\u0000N\u0000"+ + "\u0001\u0002\u0003\u0004\u05be\u05c4\u05c6\u05cb\u05cf\u05d1\u05d4\u05dd"+ + "\u05df\u05e4\u05e9\u05eb\u18d7\u18e0\u18e4\u18e8\u18f1\u18f3\u18fd\u18ff"+ + "\u1919\u191b\u192d\u1938\u1943\u1954\u1968\u196c\u196f\u1975\u1978\u197d"+ + "\u1981\u1986\u198d\u1998\u199a\u19a2\u19a8\u19ab\u19b5\u19c0\u19c8\u19ce"+ + "\u19d1\u19d3\u19d9\u19e7\u19ef\u19f5\u19f8\u19fa\u19fc\u1a02\u1a07\u1a0c"+ + "\u1a10\u1a1a\u1a1e\u1a20\u1a27\u1a2a\u1a38\u1a50\u1a53\u1a55\u1a5f\u1a68"+ + "\u1a6a\u1a94\u1a9a\u1a9d\u1aa1\u0013\u0001\u001c\u0000\u0007\u001d\u0000"+ + "\u0003\u0000\u0000\u0005\u0001\u0000\u0001\u0294\u0001\u0005\u0004\u0000"+ + "\u0001\u029f\u0002\u0000\u0001\u0000\u0001\u02a8\u0003\u0002\u0002\u0000"+ + "\u0007\u029b\u0000\u0007\u029c\u0000\u0002\u0003\u0000\u0001\u02b4\u0004"+ + "\u0006\u0000\u0000\u0004\u0000\u0000\u0002\u0001\u0000\u0001\u02b8\u0005"+ + "\u0001\u02ba\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..f4fcecb0e8 --- /dev/null +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens @@ -0,0 +1,1322 @@ +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 +ZSTREAM=96 +ZTABLE=97 +ZVIEW=98 +TRAILING=99 +TRUE_P=100 +UNION=101 +UNIQUE=102 +USER=103 +USING=104 +VARIADIC=105 +WHEN=106 +WHERE=107 +WINDOW=108 +WITH=109 +AUTHORIZATION=110 +BINARY=111 +COLLATION=112 +CONCURRENTLY=113 +CROSS=114 +CURRENT_SCHEMA=115 +FREEZE=116 +FULL=117 +ILIKE=118 +INNER_P=119 +IS=120 +ISNULL=121 +JOIN=122 +LEFT=123 +LIKE=124 +NATURAL=125 +NOTNULL=126 +OUTER_P=127 +OVER=128 +OVERLAPS=129 +RIGHT=130 +SIMILAR=131 +VERBOSE=132 +ABORT_P=133 +ABSOLUTE_P=134 +ACCESS=135 +ACTION=136 +ADD_P=137 +ADMIN=138 +AFTER=139 +AGGREGATE=140 +ALSO=141 +ALTER=142 +ALWAYS=143 +ASSERTION=144 +ASSIGNMENT=145 +AT=146 +ATTRIBUTE=147 +BACKWARD=148 +BEFORE=149 +BEGIN_P=150 +BY=151 +CACHE=152 +CALLED=153 +CASCADE=154 +CASCADED=155 +CATALOG=156 +CHAIN=157 +CHARACTERISTICS=158 +CHECKPOINT=159 +CLASS=160 +CLOSE=161 +CLUSTER=162 +COMMENT=163 +COMMENTS=164 +COMMIT=165 +COMMITTED=166 +CONFIGURATION=167 +CONNECTION=168 +CONSTRAINTS=169 +CONTENT_P=170 +CONTINUE_P=171 +CONVERSION_P=172 +COPY=173 +COST=174 +CSV=175 +CURSOR=176 +CYCLE=177 +DATA_P=178 +DATABASE=179 +DAY_P=180 +DEALLOCATE=181 +DECLARE=182 +DEFAULTS=183 +DEFERRED=184 +DEFINER=185 +DELETE_P=186 +DELIMITER=187 +DELIMITERS=188 +DICTIONARY=189 +DISABLE_P=190 +DISCARD=191 +DOCUMENT_P=192 +DOMAIN_P=193 +DOUBLE_P=194 +DROP=195 +EACH=196 +ENABLE_P=197 +ENCODING=198 +ENCRYPTED=199 +ENUM_P=200 +ESCAPE=201 +EVENT=202 +EXCLUDE=203 +EXCLUDING=204 +EXCLUSIVE=205 +EXECUTE=206 +EXPLAIN=207 +EXTENSION=208 +EXTERNAL=209 +FAMILY=210 +FIRST_P=211 +FOLLOWING=212 +FORCE=213 +FORWARD=214 +FUNCTION=215 +FUNCTIONS=216 +GLOBAL=217 +GRANTED=218 +HANDLER=219 +HEADER_P=220 +HOLD=221 +HOUR_P=222 +IDENTITY_P=223 +IF_P=224 +IMMEDIATE=225 +IMMUTABLE=226 +IMPLICIT_P=227 +INCLUDING=228 +INCREMENT=229 +INDEX=230 +INDEXES=231 +INHERIT=232 +INHERITS=233 +INLINE_P=234 +INSENSITIVE=235 +INSERT=236 +INSTEAD=237 +INVOKER=238 +ISOLATION=239 +KEY=240 +LABEL=241 +LANGUAGE=242 +LARGE_P=243 +LAST_P=244 +LEAKPROOF=245 +LEVEL=246 +LISTEN=247 +LOAD=248 +LOCAL=249 +LOCATION=250 +LOCK_P=251 +MAPPING=252 +MATCH=253 +MATCHED=254 +MATERIALIZED=255 +MAXVALUE=256 +MERGE=257 +MINUTE_P=258 +MINVALUE=259 +MODE=260 +MONTH_P=261 +MOVE=262 +NAME_P=263 +NAMES=264 +NEXT=265 +NO=266 +NOTHING=267 +NOTIFY=268 +NOWAIT=269 +NULLS_P=270 +OBJECT_P=271 +OF=272 +OFF=273 +OIDS=274 +OPERATOR=275 +OPTION=276 +OPTIONS=277 +OWNED=278 +OWNER=279 +PARSER=280 +PARTIAL=281 +PARTITION=282 +PASSING=283 +PASSWORD=284 +PLANS=285 +PRECEDING=286 +PREPARE=287 +PREPARED=288 +PRESERVE=289 +PRIOR=290 +PRIVILEGES=291 +PROCEDURAL=292 +PROCEDURE=293 +PROGRAM=294 +QUOTE=295 +RANGE=296 +READ=297 +REASSIGN=298 +RECHECK=299 +RECURSIVE=300 +REF=301 +REFRESH=302 +REINDEX=303 +RELATIVE_P=304 +RELEASE=305 +RENAME=306 +REPEATABLE=307 +REPLACE=308 +REPLICA=309 +RESET=310 +RESTART=311 +RESTRICT=312 +RETURNS=313 +REVOKE=314 +ROLE=315 +ROLLBACK=316 +ROWS=317 +RULE=318 +SAVEPOINT=319 +SCHEMA=320 +SCROLL=321 +SEARCH=322 +SECOND_P=323 +SECURITY=324 +SEQUENCE=325 +SEQUENCES=326 +SERIALIZABLE=327 +SERVER=328 +SESSION=329 +SET=330 +SHARE=331 +SHOW=332 +SIMPLE=333 +SNAPSHOT=334 +STABLE=335 +STANDALONE_P=336 +START=337 +STATEMENT=338 +STATISTICS=339 +STDIN=340 +STDOUT=341 +STORAGE=342 +STRICT_P=343 +STRIP_P=344 +SYSID=345 +SYSTEM_P=346 +TABLES=347 +TABLESPACE=348 +TEMP=349 +TEMPLATE=350 +TEMPORARY=351 +TEXT_P=352 +TRANSACTION=353 +TRIGGER=354 +TRUNCATE=355 +TRUSTED=356 +TYPE_P=357 +TYPES_P=358 +UNBOUNDED=359 +UNCOMMITTED=360 +UNENCRYPTED=361 +UNKNOWN=362 +UNLISTEN=363 +UNLOGGED=364 +UNTIL=365 +UPDATE=366 +VACUUM=367 +VALID=368 +VALIDATE=369 +VALIDATOR=370 +VARYING=371 +VERSION_P=372 +VIEW=373 +VOLATILE=374 +WHITESPACE_P=375 +WITHOUT=376 +WORK=377 +WRAPPER=378 +WRITE=379 +XML_P=380 +YEAR_P=381 +YES_P=382 +ZONE=383 +BETWEEN=384 +BIGINT=385 +BIT=386 +BOOLEAN_P=387 +CHAR_P=388 +CHARACTER=389 +COALESCE=390 +DEC=391 +DECIMAL_P=392 +EXISTS=393 +EXTRACT=394 +FLOAT_P=395 +GREATEST=396 +INOUT=397 +INT_P=398 +INTEGER=399 +INTERVAL=400 +LEAST=401 +NATIONAL=402 +NCHAR=403 +NONE=404 +NULLIF=405 +NUMERIC=406 +OVERLAY=407 +POSITION=408 +PRECISION=409 +REAL=410 +ROW=411 +SETOF=412 +SMALLINT=413 +SUBSTRING=414 +TIME=415 +TIMESTAMP=416 +TREAT=417 +TRIM=418 +VALUES=419 +VARCHAR=420 +XMLATTRIBUTES=421 +XMLCOMMENT=422 +XMLAGG=423 +XML_IS_WELL_FORMED=424 +XML_IS_WELL_FORMED_DOCUMENT=425 +XML_IS_WELL_FORMED_CONTENT=426 +XPATH=427 +XPATH_EXISTS=428 +XMLCONCAT=429 +XMLELEMENT=430 +XMLEXISTS=431 +XMLFOREST=432 +XMLPARSE=433 +XMLPI=434 +XMLROOT=435 +XMLSERIALIZE=436 +CALL=437 +CURRENT_P=438 +ATTACH=439 +DETACH=440 +EXPRESSION=441 +GENERATED=442 +LOGGED=443 +STORED=444 +INCLUDE=445 +ROUTINE=446 +TRANSFORM=447 +IMPORT_P=448 +POLICY=449 +METHOD=450 +REFERENCING=451 +NEW=452 +OLD=453 +VALUE_P=454 +SUBSCRIPTION=455 +PUBLICATION=456 +OUT_P=457 +END_P=458 +ROUTINES=459 +SCHEMAS=460 +PROCEDURES=461 +INPUT_P=462 +SUPPORT=463 +PARALLEL=464 +SQL_P=465 +DEPENDS=466 +OVERRIDING=467 +CONFLICT=468 +SKIP_P=469 +LOCKED=470 +TIES=471 +ROLLUP=472 +CUBE=473 +GROUPING=474 +SETS=475 +TABLESAMPLE=476 +ORDINALITY=477 +XMLTABLE=478 +COLUMNS=479 +XMLNAMESPACES=480 +ROWTYPE=481 +NORMALIZED=482 +WITHIN=483 +FILTER=484 +GROUPS=485 +OTHERS=486 +NFC=487 +NFD=488 +NFKC=489 +NFKD=490 +UESCAPE=491 +VIEWS=492 +NORMALIZE=493 +DUMP=494 +PRINT_STRICT_PARAMS=495 +VARIABLE_CONFLICT=496 +ERROR=497 +USE_VARIABLE=498 +USE_COLUMN=499 +ALIAS=500 +CONSTANT=501 +PERFORM=502 +GET=503 +DIAGNOSTICS=504 +STACKED=505 +ELSIF=506 +WHILE=507 +REVERSE=508 +FOREACH=509 +SLICE=510 +EXIT=511 +RETURN=512 +QUERY=513 +RAISE=514 +SQLSTATE=515 +DEBUG=516 +LOG=517 +INFO=518 +NOTICE=519 +WARNING=520 +EXCEPTION=521 +ASSERT=522 +LOOP=523 +OPEN=524 +ABS=525 +CBRT=526 +CEIL=527 +CEILING=528 +DEGREES=529 +DIV=530 +EXP=531 +FACTORIAL=532 +FLOOR=533 +GCD=534 +LCM=535 +LN=536 +LOG10=537 +MIN_SCALE=538 +MOD=539 +PI=540 +POWER=541 +RADIANS=542 +ROUND=543 +SCALE=544 +SIGN=545 +SQRT=546 +TRIM_SCALE=547 +TRUNC=548 +WIDTH_BUCKET=549 +RANDOM=550 +SETSEED=551 +ACOS=552 +ACOSD=553 +ASIN=554 +ASIND=555 +ATAN=556 +ATAND=557 +ATAN2=558 +ATAN2D=559 +COS=560 +COSD=561 +COT=562 +COTD=563 +SIN=564 +SIND=565 +TAN=566 +TAND=567 +SINH=568 +COSH=569 +TANH=570 +ASINH=571 +ACOSH=572 +ATANH=573 +BIT_LENGTH=574 +CHAR_LENGTH=575 +CHARACTER_LENGTH=576 +LOWER=577 +OCTET_LENGTH=578 +UPPER=579 +ASCII=580 +BTRIM=581 +CHR=582 +CONCAT=583 +CONCAT_WS=584 +FORMAT=585 +INITCAP=586 +LENGTH=587 +LPAD=588 +LTRIM=589 +MD5=590 +PARSE_IDENT=591 +PG_CLIENT_ENCODING=592 +QUOTE_IDENT=593 +QUOTE_LITERAL=594 +QUOTE_NULLABLE=595 +REGEXP_COUNT=596 +REGEXP_INSTR=597 +REGEXP_LIKE=598 +REGEXP_MATCH=599 +REGEXP_MATCHES=600 +REGEXP_REPLACE=601 +REGEXP_SPLIT_TO_ARRAY=602 +REGEXP_SPLIT_TO_TABLE=603 +REGEXP_SUBSTR=604 +REPEAT=605 +RPAD=606 +RTRIM=607 +SPLIT_PART=608 +STARTS_WITH=609 +STRING_TO_ARRAY=610 +STRING_TO_TABLE=611 +STRPOS=612 +SUBSTR=613 +TO_ASCII=614 +TO_HEX=615 +TRANSLATE=616 +UNISTR=617 +AGE=618 +CLOCK_TIMESTAMP=619 +DATE_BIN=620 +DATE_PART=621 +DATE_TRUNC=622 +ISFINITE=623 +JUSTIFY_DAYS=624 +JUSTIFY_HOURS=625 +JUSTIFY_INTERVAL=626 +MAKE_DATE=627 +MAKE_INTERVAL=628 +MAKE_TIME=629 +MAKE_TIMESTAMP=630 +MAKE_TIMESTAMPTZ=631 +NOW=632 +STATEMENT_TIMESTAMP=633 +TIMEOFDAY=634 +TRANSACTION_TIMESTAMP=635 +TO_TIMESTAMP=636 +TO_CHAR=637 +TO_DATE=638 +TO_NUMBER=639 +Identifier=640 +QuotedIdentifier=641 +UnterminatedQuotedIdentifier=642 +InvalidQuotedIdentifier=643 +InvalidUnterminatedQuotedIdentifier=644 +UnicodeQuotedIdentifier=645 +UnterminatedUnicodeQuotedIdentifier=646 +InvalidUnicodeQuotedIdentifier=647 +InvalidUnterminatedUnicodeQuotedIdentifier=648 +StringConstant=649 +UnterminatedStringConstant=650 +UnicodeEscapeStringConstant=651 +UnterminatedUnicodeEscapeStringConstant=652 +BeginDollarStringConstant=653 +BinaryStringConstant=654 +UnterminatedBinaryStringConstant=655 +InvalidBinaryStringConstant=656 +InvalidUnterminatedBinaryStringConstant=657 +HexadecimalStringConstant=658 +UnterminatedHexadecimalStringConstant=659 +InvalidHexadecimalStringConstant=660 +InvalidUnterminatedHexadecimalStringConstant=661 +Integral=662 +NumericFail=663 +Numeric=664 +PLSQLVARIABLENAME=665 +PLSQLIDENTIFIER=666 +Whitespace=667 +Newline=668 +LineComment=669 +BlockComment=670 +UnterminatedBlockComment=671 +MetaCommand=672 +EndMetaCommand=673 +ErrorCharacter=674 +EscapeStringConstant=675 +UnterminatedEscapeStringConstant=676 +InvalidEscapeStringConstant=677 +InvalidUnterminatedEscapeStringConstant=678 +AfterEscapeStringConstantMode_NotContinued=679 +AfterEscapeStringConstantWithNewlineMode_NotContinued=680 +DollarText=681 +EndDollarStringConstant=682 +AfterEscapeStringConstantWithNewlineMode_Continued=683 +'$'=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 +'ZSTREAM'=96 +'ZTABLE'=97 +'ZVIEW'=98 +'TRAILING'=99 +'TRUE'=100 +'UNION'=101 +'UNIQUE'=102 +'USER'=103 +'USING'=104 +'VARIADIC'=105 +'WHEN'=106 +'WHERE'=107 +'WINDOW'=108 +'WITH'=109 +'AUTHORIZATION'=110 +'BINARY'=111 +'COLLATION'=112 +'CONCURRENTLY'=113 +'CROSS'=114 +'CURRENT_SCHEMA'=115 +'FREEZE'=116 +'FULL'=117 +'ILIKE'=118 +'INNER'=119 +'IS'=120 +'ISNULL'=121 +'JOIN'=122 +'LEFT'=123 +'LIKE'=124 +'NATURAL'=125 +'NOTNULL'=126 +'OUTER'=127 +'OVER'=128 +'OVERLAPS'=129 +'RIGHT'=130 +'SIMILAR'=131 +'VERBOSE'=132 +'ABORT'=133 +'ABSOLUTE'=134 +'ACCESS'=135 +'ACTION'=136 +'ADD'=137 +'ADMIN'=138 +'AFTER'=139 +'AGGREGATE'=140 +'ALSO'=141 +'ALTER'=142 +'ALWAYS'=143 +'ASSERTION'=144 +'ASSIGNMENT'=145 +'AT'=146 +'ATTRIBUTE'=147 +'BACKWARD'=148 +'BEFORE'=149 +'BEGIN'=150 +'BY'=151 +'CACHE'=152 +'CALLED'=153 +'CASCADE'=154 +'CASCADED'=155 +'CATALOG'=156 +'CHAIN'=157 +'CHARACTERISTICS'=158 +'CHECKPOINT'=159 +'CLASS'=160 +'CLOSE'=161 +'CLUSTER'=162 +'COMMENT'=163 +'COMMENTS'=164 +'COMMIT'=165 +'COMMITTED'=166 +'CONFIGURATION'=167 +'CONNECTION'=168 +'CONSTRAINTS'=169 +'CONTENT'=170 +'CONTINUE'=171 +'CONVERSION'=172 +'COPY'=173 +'COST'=174 +'CSV'=175 +'CURSOR'=176 +'CYCLE'=177 +'DATA'=178 +'DATABASE'=179 +'DAY'=180 +'DEALLOCATE'=181 +'DECLARE'=182 +'DEFAULTS'=183 +'DEFERRED'=184 +'DEFINER'=185 +'DELETE'=186 +'DELIMITER'=187 +'DELIMITERS'=188 +'DICTIONARY'=189 +'DISABLE'=190 +'DISCARD'=191 +'DOCUMENT'=192 +'DOMAIN'=193 +'DOUBLE'=194 +'DROP'=195 +'EACH'=196 +'ENABLE'=197 +'ENCODING'=198 +'ENCRYPTED'=199 +'ENUM'=200 +'ESCAPE'=201 +'EVENT'=202 +'EXCLUDE'=203 +'EXCLUDING'=204 +'EXCLUSIVE'=205 +'EXECUTE'=206 +'EXPLAIN'=207 +'EXTENSION'=208 +'EXTERNAL'=209 +'FAMILY'=210 +'FIRST'=211 +'FOLLOWING'=212 +'FORCE'=213 +'FORWARD'=214 +'FUNCTION'=215 +'FUNCTIONS'=216 +'GLOBAL'=217 +'GRANTED'=218 +'HANDLER'=219 +'HEADER'=220 +'HOLD'=221 +'HOUR'=222 +'IDENTITY'=223 +'IF'=224 +'IMMEDIATE'=225 +'IMMUTABLE'=226 +'IMPLICIT'=227 +'INCLUDING'=228 +'INCREMENT'=229 +'INDEX'=230 +'INDEXES'=231 +'INHERIT'=232 +'INHERITS'=233 +'INLINE'=234 +'INSENSITIVE'=235 +'INSERT'=236 +'INSTEAD'=237 +'INVOKER'=238 +'ISOLATION'=239 +'KEY'=240 +'LABEL'=241 +'LANGUAGE'=242 +'LARGE'=243 +'LAST'=244 +'LEAKPROOF'=245 +'LEVEL'=246 +'LISTEN'=247 +'LOAD'=248 +'LOCAL'=249 +'LOCATION'=250 +'LOCK'=251 +'MAPPING'=252 +'MATCH'=253 +'MATCHED'=254 +'MATERIALIZED'=255 +'MAXVALUE'=256 +'MERGE'=257 +'MINUTE'=258 +'MINVALUE'=259 +'MODE'=260 +'MONTH'=261 +'MOVE'=262 +'NAME'=263 +'NAMES'=264 +'NEXT'=265 +'NO'=266 +'NOTHING'=267 +'NOTIFY'=268 +'NOWAIT'=269 +'NULLS'=270 +'OBJECT'=271 +'OF'=272 +'OFF'=273 +'OIDS'=274 +'OPERATOR'=275 +'OPTION'=276 +'OPTIONS'=277 +'OWNED'=278 +'OWNER'=279 +'PARSER'=280 +'PARTIAL'=281 +'PARTITION'=282 +'PASSING'=283 +'PASSWORD'=284 +'PLANS'=285 +'PRECEDING'=286 +'PREPARE'=287 +'PREPARED'=288 +'PRESERVE'=289 +'PRIOR'=290 +'PRIVILEGES'=291 +'PROCEDURAL'=292 +'PROCEDURE'=293 +'PROGRAM'=294 +'QUOTE'=295 +'RANGE'=296 +'READ'=297 +'REASSIGN'=298 +'RECHECK'=299 +'RECURSIVE'=300 +'REF'=301 +'REFRESH'=302 +'REINDEX'=303 +'RELATIVE'=304 +'RELEASE'=305 +'RENAME'=306 +'REPEATABLE'=307 +'REPLACE'=308 +'REPLICA'=309 +'RESET'=310 +'RESTART'=311 +'RESTRICT'=312 +'RETURNS'=313 +'REVOKE'=314 +'ROLE'=315 +'ROLLBACK'=316 +'ROWS'=317 +'RULE'=318 +'SAVEPOINT'=319 +'SCHEMA'=320 +'SCROLL'=321 +'SEARCH'=322 +'SECOND'=323 +'SECURITY'=324 +'SEQUENCE'=325 +'SEQUENCES'=326 +'SERIALIZABLE'=327 +'SERVER'=328 +'SESSION'=329 +'SET'=330 +'SHARE'=331 +'SHOW'=332 +'SIMPLE'=333 +'SNAPSHOT'=334 +'STABLE'=335 +'STANDALONE'=336 +'START'=337 +'STATEMENT'=338 +'STATISTICS'=339 +'STDIN'=340 +'STDOUT'=341 +'STORAGE'=342 +'STRICT'=343 +'STRIP'=344 +'SYSID'=345 +'SYSTEM'=346 +'TABLES'=347 +'TABLESPACE'=348 +'TEMP'=349 +'TEMPLATE'=350 +'TEMPORARY'=351 +'TEXT'=352 +'TRANSACTION'=353 +'TRIGGER'=354 +'TRUNCATE'=355 +'TRUSTED'=356 +'TYPE'=357 +'TYPES'=358 +'UNBOUNDED'=359 +'UNCOMMITTED'=360 +'UNENCRYPTED'=361 +'UNKNOWN'=362 +'UNLISTEN'=363 +'UNLOGGED'=364 +'UNTIL'=365 +'UPDATE'=366 +'VACUUM'=367 +'VALID'=368 +'VALIDATE'=369 +'VALIDATOR'=370 +'VARYING'=371 +'VERSION'=372 +'VIEW'=373 +'VOLATILE'=374 +'WHITESPACE'=375 +'WITHOUT'=376 +'WORK'=377 +'WRAPPER'=378 +'WRITE'=379 +'XML'=380 +'YEAR'=381 +'YES'=382 +'ZONE'=383 +'BETWEEN'=384 +'BIGINT'=385 +'BIT'=386 +'BOOLEAN'=387 +'CHAR'=388 +'CHARACTER'=389 +'COALESCE'=390 +'DEC'=391 +'DECIMAL'=392 +'EXISTS'=393 +'EXTRACT'=394 +'FLOAT'=395 +'GREATEST'=396 +'INOUT'=397 +'INT'=398 +'INTEGER'=399 +'INTERVAL'=400 +'LEAST'=401 +'NATIONAL'=402 +'NCHAR'=403 +'NONE'=404 +'NULLIF'=405 +'NUMERIC'=406 +'OVERLAY'=407 +'POSITION'=408 +'PRECISION'=409 +'REAL'=410 +'ROW'=411 +'SETOF'=412 +'SMALLINT'=413 +'SUBSTRING'=414 +'TIME'=415 +'TIMESTAMP'=416 +'TREAT'=417 +'TRIM'=418 +'VALUES'=419 +'VARCHAR'=420 +'XMLATTRIBUTES'=421 +'XMLCOMMENT'=422 +'XMLAGG'=423 +'XML_IS_WELL_FORMED'=424 +'XML_IS_WELL_FORMED_DOCUMENT'=425 +'XML_IS_WELL_FORMED_CONTENT'=426 +'XPATH'=427 +'XPATH_EXISTS'=428 +'XMLCONCAT'=429 +'XMLELEMENT'=430 +'XMLEXISTS'=431 +'XMLFOREST'=432 +'XMLPARSE'=433 +'XMLPI'=434 +'XMLROOT'=435 +'XMLSERIALIZE'=436 +'CALL'=437 +'CURRENT'=438 +'ATTACH'=439 +'DETACH'=440 +'EXPRESSION'=441 +'GENERATED'=442 +'LOGGED'=443 +'STORED'=444 +'INCLUDE'=445 +'ROUTINE'=446 +'TRANSFORM'=447 +'IMPORT'=448 +'POLICY'=449 +'METHOD'=450 +'REFERENCING'=451 +'NEW'=452 +'OLD'=453 +'VALUE'=454 +'SUBSCRIPTION'=455 +'PUBLICATION'=456 +'OUT'=457 +'END'=458 +'ROUTINES'=459 +'SCHEMAS'=460 +'PROCEDURES'=461 +'INPUT'=462 +'SUPPORT'=463 +'PARALLEL'=464 +'SQL'=465 +'DEPENDS'=466 +'OVERRIDING'=467 +'CONFLICT'=468 +'SKIP'=469 +'LOCKED'=470 +'TIES'=471 +'ROLLUP'=472 +'CUBE'=473 +'GROUPING'=474 +'SETS'=475 +'TABLESAMPLE'=476 +'ORDINALITY'=477 +'XMLTABLE'=478 +'COLUMNS'=479 +'XMLNAMESPACES'=480 +'ROWTYPE'=481 +'NORMALIZED'=482 +'WITHIN'=483 +'FILTER'=484 +'GROUPS'=485 +'OTHERS'=486 +'NFC'=487 +'NFD'=488 +'NFKC'=489 +'NFKD'=490 +'UESCAPE'=491 +'VIEWS'=492 +'NORMALIZE'=493 +'DUMP'=494 +'PRINT_STRICT_PARAMS'=495 +'VARIABLE_CONFLICT'=496 +'ERROR'=497 +'USE_VARIABLE'=498 +'USE_COLUMN'=499 +'ALIAS'=500 +'CONSTANT'=501 +'PERFORM'=502 +'GET'=503 +'DIAGNOSTICS'=504 +'STACKED'=505 +'ELSIF'=506 +'WHILE'=507 +'REVERSE'=508 +'FOREACH'=509 +'SLICE'=510 +'EXIT'=511 +'RETURN'=512 +'QUERY'=513 +'RAISE'=514 +'SQLSTATE'=515 +'DEBUG'=516 +'LOG'=517 +'INFO'=518 +'NOTICE'=519 +'WARNING'=520 +'EXCEPTION'=521 +'ASSERT'=522 +'LOOP'=523 +'OPEN'=524 +'ABS'=525 +'CBRT'=526 +'CEIL'=527 +'CEILING'=528 +'DEGREES'=529 +'DIV'=530 +'EXP'=531 +'FACTORIAL'=532 +'FLOOR'=533 +'GCD'=534 +'LCM'=535 +'LN'=536 +'LOG10'=537 +'MIN_SCALE'=538 +'MOD'=539 +'PI'=540 +'POWER'=541 +'RADIANS'=542 +'ROUND'=543 +'SCALE'=544 +'SIGN'=545 +'SQRT'=546 +'TRIM_SCALE'=547 +'TRUNC'=548 +'WIDTH_BUCKET'=549 +'RANDOM'=550 +'SETSEED'=551 +'ACOS'=552 +'ACOSD'=553 +'ASIN'=554 +'ASIND'=555 +'ATAN'=556 +'ATAND'=557 +'ATAN2'=558 +'ATAN2D'=559 +'COS'=560 +'COSD'=561 +'COT'=562 +'COTD'=563 +'SIN'=564 +'SIND'=565 +'TAN'=566 +'TAND'=567 +'SINH'=568 +'COSH'=569 +'TANH'=570 +'ASINH'=571 +'ACOSH'=572 +'ATANH'=573 +'BIT_LENGTH'=574 +'CHAR_LENGTH'=575 +'CHARACTER_LENGTH'=576 +'LOWER'=577 +'OCTET_LENGTH'=578 +'UPPER'=579 +'ASCII'=580 +'BTRIM'=581 +'CHR'=582 +'CONCAT'=583 +'CONCAT_WS'=584 +'FORMAT'=585 +'INITCAP'=586 +'LENGTH'=587 +'LPAD'=588 +'LTRIM'=589 +'MD5'=590 +'PARSE_IDENT'=591 +'PG_CLIENT_ENCODING'=592 +'QUOTE_IDENT'=593 +'QUOTE_LITERAL'=594 +'QUOTE_NULLABLE'=595 +'REGEXP_COUNT'=596 +'REGEXP_INSTR'=597 +'REGEXP_LIKE'=598 +'REGEXP_MATCH'=599 +'REGEXP_MATCHES'=600 +'REGEXP_REPLACE'=601 +'REGEXP_SPLIT_TO_ARRAY'=602 +'REGEXP_SPLIT_TO_TABLE'=603 +'REGEXP_SUBSTR'=604 +'REPEAT'=605 +'RPAD'=606 +'RTRIM'=607 +'SPLIT_PART'=608 +'STARTS_WITH'=609 +'STRING_TO_ARRAY'=610 +'STRING_TO_TABLE'=611 +'STRPOS'=612 +'SUBSTR'=613 +'TO_ASCII'=614 +'TO_HEX'=615 +'TRANSLATE'=616 +'UNISTR'=617 +'AGE'=618 +'CLOCK_TIMESTAMP'=619 +'DATE_BIN'=620 +'DATE_PART'=621 +'DATE_TRUNC'=622 +'ISFINITE'=623 +'JUSTIFY_DAYS'=624 +'JUSTIFY_HOURS'=625 +'JUSTIFY_INTERVAL'=626 +'MAKE_DATE'=627 +'MAKE_INTERVAL'=628 +'MAKE_TIME'=629 +'MAKE_TIMESTAMP'=630 +'MAKE_TIMESTAMPTZ'=631 +'NOW'=632 +'STATEMENT_TIMESTAMP'=633 +'TIMEOFDAY'=634 +'TRANSACTION_TIMESTAMP'=635 +'TO_TIMESTAMP'=636 +'TO_CHAR'=637 +'TO_DATE'=638 +'TO_NUMBER'=639 +'\\\\'=673 +'\''=683 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 ed77eff479..9b7814678b 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 @@ -289,7 +289,11 @@ TO: 'TO'; TOPIC: 'TOPIC'; -STREAM: 'STREAM'; +ZSTREAM: 'ZSTREAM'; + +ZTABLE: 'ZTABLE'; + +ZVIEW: 'ZVIEW'; TRAILING: 'TRAILING'; 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 fa5331b55d..6bec7abd1d 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 @@ -95,6 +95,7 @@ stmt | createfunctionstmt | creategroupstmt | creatematviewstmt + | createzviewstmt | createopclassstmt | createopfamilystmt | createpublicationstmt @@ -104,7 +105,7 @@ stmt | createschemastmt | createseqstmt | createstmt - | createstreamstmt + | createzstreamstmt | createsubscriptionstmt | createstatsstmt | createtablespacestmt @@ -404,14 +405,17 @@ altertablestmt | 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 ZVIEW (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 STREAM (IF_P EXISTS)? relation_expr alter_stream_cmds + | ALTER ZSTREAM (IF_P EXISTS)? relation_expr alter_zstream_cmds + | ALTER ZTABLE (IF_P EXISTS)? relation_expr (alter_table_cmds | partition_cmd) + | ALTER ZTABLE ALL IN_P TABLESPACE name (OWNED BY role_list)? SET TABLESPACE name opt_nowait + | ALTER VIEW (IF_P EXISTS)? qualified_name alter_table_cmds ; -alter_stream_cmds +alter_zstream_cmds : alter_stream_cmd (COMMA alter_stream_cmd)* ; @@ -686,8 +690,8 @@ copy_generic_opt_arg_list_item : opt_boolean_or_string ; -createstreamstmt - : CREATE STREAM (IF_P NOT EXISTS)? stream_name OPEN_PAREN stream_columns CLOSE_PAREN opt_with_stream +createzstreamstmt + : CREATE ZSTREAM (IF_P NOT EXISTS)? stream_name OPEN_PAREN stream_columns CLOSE_PAREN opt_with_stream ; stream_name @@ -719,6 +723,7 @@ createstmt opttable_type : TABLE | TOPIC + | ZTABLE ; opttemp @@ -986,6 +991,10 @@ creatematviewstmt : CREATE optnolog MATERIALIZED VIEW (IF_P NOT EXISTS)? create_mv_target AS selectstmt opt_with_data ; +createzviewstmt + : CREATE optnolog ZVIEW (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 ; @@ -1628,7 +1637,9 @@ object_type_any_name | VIEW | MATERIALIZED VIEW | TOPIC - | STREAM + | ZSTREAM + | ZVIEW + | ZTABLE | INDEX | FOREIGN TABLE | COLLATION diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.interp b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.interp new file mode 100644 index 0000000000..09c286606c --- /dev/null +++ b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.interp @@ -0,0 +1,2086 @@ +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' +'ZSTREAM' +'ZTABLE' +'ZVIEW' +'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 +ZSTREAM +ZTABLE +ZVIEW +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 +ZSTREAM +ZTABLE +ZVIEW +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, 683, 6826, 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, 2, 697, 7, 697, 2, 698, 7, 698, 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, 1469, 8, 27, 11, 27, 12, 27, 1470, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1477, 8, 28, 11, 28, 12, 28, 1478, 1, 28, 1, 28, 1, 28, 3, 28, 1484, 8, 28, 1, 28, 1, 28, 4, 28, 1488, 8, 28, 11, 28, 12, 28, 1489, 1, 28, 3, 28, 1493, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1502, 8, 29, 10, 29, 12, 29, 1505, 9, 29, 1, 29, 1, 29, 3, 29, 1509, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1514, 8, 29, 11, 29, 12, 29, 1515, 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, 99, 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, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 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, 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, 113, 1, 113, 1, 113, 1, 113, 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, 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, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 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, 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, 129, 1, 129, 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, 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, 132, 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, 134, 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, 137, 1, 137, 1, 137, 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, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 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, 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, 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, 147, 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, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 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, 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, 154, 1, 154, 1, 154, 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, 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, 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, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 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, 162, 1, 162, 1, 162, 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, 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, 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, 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, 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, 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, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 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, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 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, 184, 1, 184, 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, 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, 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, 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, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 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, 194, 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, 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, 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, 201, 1, 201, 1, 201, 1, 202, 1, 202, 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, 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, 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, 208, 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, 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, 212, 1, 212, 1, 212, 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, 215, 1, 215, 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, 218, 1, 219, 1, 219, 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, 221, 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, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 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, 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, 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, 231, 1, 231, 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, 232, 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, 235, 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, 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, 238, 1, 238, 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, 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, 242, 1, 242, 1, 242, 1, 242, 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, 245, 1, 245, 1, 245, 1, 245, 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, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 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, 253, 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, 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, 258, 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, 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, 261, 1, 261, 1, 262, 1, 262, 1, 262, 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, 264, 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, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 270, 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, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 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, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 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, 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, 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, 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, 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, 289, 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, 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, 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, 294, 1, 295, 1, 295, 1, 295, 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, 296, 1, 296, 1, 296, 1, 296, 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, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 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, 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, 303, 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, 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, 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, 309, 1, 310, 1, 310, 1, 310, 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, 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, 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, 315, 1, 315, 1, 316, 1, 316, 1, 316, 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, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 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, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 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, 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, 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, 329, 1, 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 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, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 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, 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, 339, 1, 339, 1, 339, 1, 339, 1, 339, 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, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 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, 344, 1, 345, 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, 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, 350, 1, 350, 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, 351, 1, 351, 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, 353, 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, 356, 1, 356, 1, 356, 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, 358, 1, 358, 1, 358, 1, 358, 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, 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, 363, 1, 363, 1, 363, 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, 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, 366, 1, 366, 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, 367, 1, 367, 1, 367, 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, 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, 372, 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, 373, 1, 373, 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, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 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, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 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, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 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, 389, 1, 389, 1, 389, 1, 389, 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, 392, 1, 392, 1, 392, 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, 393, 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, 396, 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, 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, 402, 1, 402, 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, 405, 1, 405, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 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, 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, 411, 1, 411, 1, 411, 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, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, 414, 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, 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, 419, 1, 419, 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, 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, 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, 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, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 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, 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, 429, 1, 429, 1, 429, 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, 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, 433, 1, 434, 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, 435, 1, 435, 1, 435, 1, 435, 1, 436, 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, 438, 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, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 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, 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, 444, 1, 444, 1, 444, 1, 445, 1, 445, 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, 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, 449, 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, 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, 453, 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, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 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, 458, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 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, 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, 463, 1, 463, 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, 464, 1, 464, 1, 464, 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, 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, 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, 470, 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, 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, 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, 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, 480, 1, 480, 1, 480, 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, 483, 1, 483, 1, 483, 1, 484, 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, 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, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 490, 1, 490, 1, 490, 1, 490, 1, 491, 1, 491, 1, 491, 1, 491, 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, 495, 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, 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, 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, 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, 501, 1, 501, 1, 501, 1, 501, 1, 501, 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, 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, 504, 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, 505, 1, 505, 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, 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, 510, 1, 511, 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, 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, 515, 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, 517, 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, 518, 1, 518, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 520, 1, 520, 1, 520, 1, 520, 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, 523, 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, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 525, 1, 525, 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, 528, 1, 528, 1, 528, 1, 528, 1, 529, 1, 529, 1, 529, 1, 529, 1, 529, 1, 530, 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, 532, 1, 532, 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, 535, 1, 535, 1, 535, 1, 535, 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, 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, 541, 1, 541, 1, 542, 1, 542, 1, 542, 1, 542, 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, 545, 1, 545, 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, 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, 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, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 554, 1, 554, 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, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 562, 1, 562, 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, 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, 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, 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, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 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, 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, 581, 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, 583, 1, 583, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 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, 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, 589, 1, 589, 1, 589, 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, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 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, 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, 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, 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, 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, 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, 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, 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, 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, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 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, 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, 609, 1, 609, 1, 609, 1, 609, 1, 609, 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, 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, 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, 614, 1, 614, 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, 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, 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, 619, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 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, 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, 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, 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, 628, 1, 628, 1, 628, 1, 628, 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, 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, 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, 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, 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, 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, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 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, 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, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 643, 1, 643, 5, 643, 6358, 8, 643, 10, 643, 12, 643, 6361, 9, 643, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 3, 644, 6369, 8, 644, 1, 645, 1, 645, 3, 645, 6373, 8, 645, 1, 646, 1, 646, 3, 646, 6377, 8, 646, 1, 647, 1, 647, 1, 647, 1, 648, 1, 648, 1, 648, 1, 648, 5, 648, 6386, 8, 648, 10, 648, 12, 648, 6389, 9, 648, 1, 649, 1, 649, 1, 649, 1, 650, 1, 650, 1, 650, 1, 650, 5, 650, 6398, 8, 650, 10, 650, 12, 650, 6401, 9, 650, 1, 651, 1, 651, 1, 651, 1, 651, 1, 652, 1, 652, 1, 652, 1, 652, 1, 653, 1, 653, 1, 653, 1, 653, 1, 654, 1, 654, 1, 654, 1, 654, 1, 655, 1, 655, 1, 655, 1, 656, 1, 656, 1, 656, 1, 656, 5, 656, 6426, 8, 656, 10, 656, 12, 656, 6429, 9, 656, 1, 657, 1, 657, 1, 657, 1, 657, 1, 657, 1, 657, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 1, 659, 1, 659, 1, 660, 1, 660, 3, 660, 6446, 8, 660, 1, 660, 1, 660, 1, 660, 1, 660, 1, 660, 1, 661, 1, 661, 5, 661, 6455, 8, 661, 10, 661, 12, 661, 6458, 9, 661, 1, 662, 1, 662, 1, 662, 1, 663, 1, 663, 1, 663, 5, 663, 6466, 8, 663, 10, 663, 12, 663, 6469, 9, 663, 1, 664, 1, 664, 1, 664, 1, 665, 1, 665, 1, 665, 1, 666, 1, 666, 1, 666, 1, 667, 1, 667, 1, 667, 5, 667, 6483, 8, 667, 10, 667, 12, 667, 6486, 9, 667, 1, 668, 1, 668, 1, 668, 1, 669, 1, 669, 1, 669, 1, 670, 1, 670, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 672, 1, 672, 1, 672, 3, 672, 6505, 8, 672, 1, 672, 1, 672, 3, 672, 6509, 8, 672, 1, 672, 3, 672, 6512, 8, 672, 1, 672, 1, 672, 1, 672, 1, 672, 3, 672, 6518, 8, 672, 1, 672, 3, 672, 6521, 8, 672, 1, 672, 1, 672, 1, 672, 3, 672, 6526, 8, 672, 1, 672, 1, 672, 3, 672, 6530, 8, 672, 1, 673, 4, 673, 6533, 8, 673, 11, 673, 12, 673, 6534, 1, 674, 1, 674, 1, 674, 5, 674, 6540, 8, 674, 10, 674, 12, 674, 6543, 9, 674, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 5, 675, 6553, 8, 675, 10, 675, 12, 675, 6556, 9, 675, 1, 675, 1, 675, 1, 676, 4, 676, 6561, 8, 676, 11, 676, 12, 676, 6562, 1, 676, 1, 676, 1, 677, 1, 677, 3, 677, 6569, 8, 677, 1, 677, 3, 677, 6572, 8, 677, 1, 677, 1, 677, 1, 678, 1, 678, 1, 678, 1, 678, 5, 678, 6580, 8, 678, 10, 678, 12, 678, 6583, 9, 678, 1, 678, 1, 678, 1, 679, 1, 679, 1, 679, 1, 679, 5, 679, 6591, 8, 679, 10, 679, 12, 679, 6594, 9, 679, 1, 679, 1, 679, 1, 679, 4, 679, 6599, 8, 679, 11, 679, 12, 679, 6600, 1, 679, 1, 679, 4, 679, 6605, 8, 679, 11, 679, 12, 679, 6606, 1, 679, 5, 679, 6610, 8, 679, 10, 679, 12, 679, 6613, 9, 679, 1, 679, 5, 679, 6616, 8, 679, 10, 679, 12, 679, 6619, 9, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 680, 1, 680, 1, 680, 1, 680, 5, 680, 6630, 8, 680, 10, 680, 12, 680, 6633, 9, 680, 1, 680, 1, 680, 1, 680, 4, 680, 6638, 8, 680, 11, 680, 12, 680, 6639, 1, 680, 1, 680, 4, 680, 6644, 8, 680, 11, 680, 12, 680, 6645, 1, 680, 3, 680, 6649, 8, 680, 5, 680, 6651, 8, 680, 10, 680, 12, 680, 6654, 9, 680, 1, 680, 4, 680, 6657, 8, 680, 11, 680, 12, 680, 6658, 1, 680, 4, 680, 6662, 8, 680, 11, 680, 12, 680, 6663, 1, 680, 5, 680, 6667, 8, 680, 10, 680, 12, 680, 6670, 9, 680, 1, 680, 3, 680, 6673, 8, 680, 1, 680, 1, 680, 1, 681, 1, 681, 1, 681, 1, 681, 5, 681, 6681, 8, 681, 10, 681, 12, 681, 6684, 9, 681, 1, 681, 5, 681, 6687, 8, 681, 10, 681, 12, 681, 6690, 9, 681, 1, 681, 1, 681, 5, 681, 6694, 8, 681, 10, 681, 12, 681, 6697, 9, 681, 3, 681, 6699, 8, 681, 1, 682, 1, 682, 1, 682, 1, 683, 1, 683, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 685, 1, 685, 3, 685, 6713, 8, 685, 1, 685, 1, 685, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 3, 686, 6737, 8, 686, 1, 686, 5, 686, 6740, 8, 686, 10, 686, 12, 686, 6743, 9, 686, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 688, 1, 688, 3, 688, 6752, 8, 688, 1, 688, 1, 688, 1, 689, 1, 689, 1, 689, 1, 689, 1, 689, 5, 689, 6761, 8, 689, 10, 689, 12, 689, 6764, 9, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 691, 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, 1, 695, 1, 695, 1, 695, 1, 695, 1, 696, 1, 696, 1, 696, 1, 696, 1, 696, 1, 697, 4, 697, 6803, 8, 697, 11, 697, 12, 697, 6804, 1, 697, 1, 697, 5, 697, 6809, 8, 697, 10, 697, 12, 697, 6812, 9, 697, 3, 697, 6814, 8, 697, 1, 698, 1, 698, 3, 698, 6818, 8, 698, 1, 698, 1, 698, 1, 698, 1, 698, 1, 698, 1, 698, 1, 698, 0, 0, 699, 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, 639, 1291, 640, 1293, 0, 1295, 0, 1297, 0, 1299, 641, 1301, 642, 1303, 643, 1305, 644, 1307, 645, 1309, 646, 1311, 647, 1313, 648, 1315, 649, 1317, 650, 1319, 0, 1321, 651, 1323, 652, 1325, 653, 1327, 0, 1329, 654, 1331, 655, 1333, 656, 1335, 657, 1337, 658, 1339, 659, 1341, 660, 1343, 661, 1345, 662, 1347, 663, 1349, 664, 1351, 0, 1353, 665, 1355, 666, 1357, 667, 1359, 668, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 673, 1371, 674, 1373, 675, 1375, 676, 1377, 0, 1379, 677, 1381, 678, 1383, 0, 1385, 0, 1387, 0, 1389, 679, 1391, 0, 1393, 0, 1395, 683, 1397, 680, 1399, 681, 1401, 682, 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, 87, 87, 119, 119, 2, 0, 81, 81, 113, 113, 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, 6898, 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, 1289, 1, 0, 0, 0, 0, 1291, 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, 1323, 1, 0, 0, 0, 0, 1325, 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, 1347, 1, 0, 0, 0, 0, 1349, 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, 0, 1369, 1, 0, 0, 0, 0, 1371, 1, 0, 0, 0, 1, 1373, 1, 0, 0, 0, 1, 1375, 1, 0, 0, 0, 1, 1379, 1, 0, 0, 0, 1, 1381, 1, 0, 0, 0, 2, 1385, 1, 0, 0, 0, 2, 1387, 1, 0, 0, 0, 2, 1389, 1, 0, 0, 0, 3, 1391, 1, 0, 0, 0, 3, 1393, 1, 0, 0, 0, 3, 1395, 1, 0, 0, 0, 3, 1397, 1, 0, 0, 0, 4, 1399, 1, 0, 0, 0, 4, 1401, 1, 0, 0, 0, 5, 1403, 1, 0, 0, 0, 7, 1405, 1, 0, 0, 0, 9, 1407, 1, 0, 0, 0, 11, 1409, 1, 0, 0, 0, 13, 1411, 1, 0, 0, 0, 15, 1413, 1, 0, 0, 0, 17, 1415, 1, 0, 0, 0, 19, 1417, 1, 0, 0, 0, 21, 1419, 1, 0, 0, 0, 23, 1421, 1, 0, 0, 0, 25, 1423, 1, 0, 0, 0, 27, 1425, 1, 0, 0, 0, 29, 1427, 1, 0, 0, 0, 31, 1429, 1, 0, 0, 0, 33, 1431, 1, 0, 0, 0, 35, 1433, 1, 0, 0, 0, 37, 1435, 1, 0, 0, 0, 39, 1437, 1, 0, 0, 0, 41, 1440, 1, 0, 0, 0, 43, 1443, 1, 0, 0, 0, 45, 1446, 1, 0, 0, 0, 47, 1449, 1, 0, 0, 0, 49, 1452, 1, 0, 0, 0, 51, 1455, 1, 0, 0, 0, 53, 1458, 1, 0, 0, 0, 55, 1461, 1, 0, 0, 0, 57, 1464, 1, 0, 0, 0, 59, 1466, 1, 0, 0, 0, 61, 1492, 1, 0, 0, 0, 63, 1503, 1, 0, 0, 0, 65, 1519, 1, 0, 0, 0, 67, 1521, 1, 0, 0, 0, 69, 1523, 1, 0, 0, 0, 71, 1525, 1, 0, 0, 0, 73, 1529, 1, 0, 0, 0, 75, 1537, 1, 0, 0, 0, 77, 1545, 1, 0, 0, 0, 79, 1549, 1, 0, 0, 0, 81, 1553, 1, 0, 0, 0, 83, 1559, 1, 0, 0, 0, 85, 1562, 1, 0, 0, 0, 87, 1566, 1, 0, 0, 0, 89, 1577, 1, 0, 0, 0, 91, 1582, 1, 0, 0, 0, 93, 1587, 1, 0, 0, 0, 95, 1592, 1, 0, 0, 0, 97, 1598, 1, 0, 0, 0, 99, 1606, 1, 0, 0, 0, 101, 1613, 1, 0, 0, 0, 103, 1624, 1, 0, 0, 0, 105, 1631, 1, 0, 0, 0, 107, 1647, 1, 0, 0, 0, 109, 1660, 1, 0, 0, 0, 111, 1673, 1, 0, 0, 0, 113, 1686, 1, 0, 0, 0, 115, 1704, 1, 0, 0, 0, 117, 1717, 1, 0, 0, 0, 119, 1725, 1, 0, 0, 0, 121, 1736, 1, 0, 0, 0, 123, 1741, 1, 0, 0, 0, 125, 1750, 1, 0, 0, 0, 127, 1753, 1, 0, 0, 0, 129, 1758, 1, 0, 0, 0, 131, 1765, 1, 0, 0, 0, 133, 1771, 1, 0, 0, 0, 135, 1777, 1, 0, 0, 0, 137, 1781, 1, 0, 0, 0, 139, 1789, 1, 0, 0, 0, 141, 1794, 1, 0, 0, 0, 143, 1800, 1, 0, 0, 0, 145, 1806, 1, 0, 0, 0, 147, 1813, 1, 0, 0, 0, 149, 1816, 1, 0, 0, 0, 151, 1826, 1, 0, 0, 0, 153, 1836, 1, 0, 0, 0, 155, 1841, 1, 0, 0, 0, 157, 1849, 1, 0, 0, 0, 159, 1857, 1, 0, 0, 0, 161, 1863, 1, 0, 0, 0, 163, 1873, 1, 0, 0, 0, 165, 1888, 1, 0, 0, 0, 167, 1892, 1, 0, 0, 0, 169, 1897, 1, 0, 0, 0, 171, 1904, 1, 0, 0, 0, 173, 1907, 1, 0, 0, 0, 175, 1912, 1, 0, 0, 0, 177, 1915, 1, 0, 0, 0, 179, 1921, 1, 0, 0, 0, 181, 1929, 1, 0, 0, 0, 183, 1937, 1, 0, 0, 0, 185, 1948, 1, 0, 0, 0, 187, 1958, 1, 0, 0, 0, 189, 1965, 1, 0, 0, 0, 191, 1978, 1, 0, 0, 0, 193, 1983, 1, 0, 0, 0, 195, 1993, 1, 0, 0, 0, 197, 1999, 1, 0, 0, 0, 199, 2004, 1, 0, 0, 0, 201, 2007, 1, 0, 0, 0, 203, 2013, 1, 0, 0, 0, 205, 2021, 1, 0, 0, 0, 207, 2028, 1, 0, 0, 0, 209, 2034, 1, 0, 0, 0, 211, 2043, 1, 0, 0, 0, 213, 2048, 1, 0, 0, 0, 215, 2054, 1, 0, 0, 0, 217, 2061, 1, 0, 0, 0, 219, 2066, 1, 0, 0, 0, 221, 2072, 1, 0, 0, 0, 223, 2081, 1, 0, 0, 0, 225, 2086, 1, 0, 0, 0, 227, 2092, 1, 0, 0, 0, 229, 2099, 1, 0, 0, 0, 231, 2104, 1, 0, 0, 0, 233, 2118, 1, 0, 0, 0, 235, 2125, 1, 0, 0, 0, 237, 2135, 1, 0, 0, 0, 239, 2148, 1, 0, 0, 0, 241, 2154, 1, 0, 0, 0, 243, 2169, 1, 0, 0, 0, 245, 2176, 1, 0, 0, 0, 247, 2181, 1, 0, 0, 0, 249, 2187, 1, 0, 0, 0, 251, 2193, 1, 0, 0, 0, 253, 2196, 1, 0, 0, 0, 255, 2203, 1, 0, 0, 0, 257, 2208, 1, 0, 0, 0, 259, 2213, 1, 0, 0, 0, 261, 2218, 1, 0, 0, 0, 263, 2226, 1, 0, 0, 0, 265, 2234, 1, 0, 0, 0, 267, 2240, 1, 0, 0, 0, 269, 2245, 1, 0, 0, 0, 271, 2254, 1, 0, 0, 0, 273, 2260, 1, 0, 0, 0, 275, 2268, 1, 0, 0, 0, 277, 2276, 1, 0, 0, 0, 279, 2282, 1, 0, 0, 0, 281, 2291, 1, 0, 0, 0, 283, 2298, 1, 0, 0, 0, 285, 2305, 1, 0, 0, 0, 287, 2309, 1, 0, 0, 0, 289, 2315, 1, 0, 0, 0, 291, 2321, 1, 0, 0, 0, 293, 2331, 1, 0, 0, 0, 295, 2336, 1, 0, 0, 0, 297, 2342, 1, 0, 0, 0, 299, 2349, 1, 0, 0, 0, 301, 2359, 1, 0, 0, 0, 303, 2370, 1, 0, 0, 0, 305, 2373, 1, 0, 0, 0, 307, 2383, 1, 0, 0, 0, 309, 2392, 1, 0, 0, 0, 311, 2399, 1, 0, 0, 0, 313, 2405, 1, 0, 0, 0, 315, 2408, 1, 0, 0, 0, 317, 2414, 1, 0, 0, 0, 319, 2421, 1, 0, 0, 0, 321, 2429, 1, 0, 0, 0, 323, 2438, 1, 0, 0, 0, 325, 2446, 1, 0, 0, 0, 327, 2452, 1, 0, 0, 0, 329, 2468, 1, 0, 0, 0, 331, 2479, 1, 0, 0, 0, 333, 2485, 1, 0, 0, 0, 335, 2491, 1, 0, 0, 0, 337, 2499, 1, 0, 0, 0, 339, 2507, 1, 0, 0, 0, 341, 2516, 1, 0, 0, 0, 343, 2523, 1, 0, 0, 0, 345, 2533, 1, 0, 0, 0, 347, 2547, 1, 0, 0, 0, 349, 2558, 1, 0, 0, 0, 351, 2570, 1, 0, 0, 0, 353, 2578, 1, 0, 0, 0, 355, 2587, 1, 0, 0, 0, 357, 2598, 1, 0, 0, 0, 359, 2603, 1, 0, 0, 0, 361, 2608, 1, 0, 0, 0, 363, 2612, 1, 0, 0, 0, 365, 2619, 1, 0, 0, 0, 367, 2625, 1, 0, 0, 0, 369, 2630, 1, 0, 0, 0, 371, 2639, 1, 0, 0, 0, 373, 2643, 1, 0, 0, 0, 375, 2654, 1, 0, 0, 0, 377, 2662, 1, 0, 0, 0, 379, 2671, 1, 0, 0, 0, 381, 2680, 1, 0, 0, 0, 383, 2688, 1, 0, 0, 0, 385, 2695, 1, 0, 0, 0, 387, 2705, 1, 0, 0, 0, 389, 2716, 1, 0, 0, 0, 391, 2727, 1, 0, 0, 0, 393, 2735, 1, 0, 0, 0, 395, 2743, 1, 0, 0, 0, 397, 2752, 1, 0, 0, 0, 399, 2759, 1, 0, 0, 0, 401, 2766, 1, 0, 0, 0, 403, 2771, 1, 0, 0, 0, 405, 2776, 1, 0, 0, 0, 407, 2783, 1, 0, 0, 0, 409, 2792, 1, 0, 0, 0, 411, 2802, 1, 0, 0, 0, 413, 2807, 1, 0, 0, 0, 415, 2814, 1, 0, 0, 0, 417, 2820, 1, 0, 0, 0, 419, 2828, 1, 0, 0, 0, 421, 2838, 1, 0, 0, 0, 423, 2848, 1, 0, 0, 0, 425, 2856, 1, 0, 0, 0, 427, 2864, 1, 0, 0, 0, 429, 2874, 1, 0, 0, 0, 431, 2883, 1, 0, 0, 0, 433, 2890, 1, 0, 0, 0, 435, 2896, 1, 0, 0, 0, 437, 2906, 1, 0, 0, 0, 439, 2912, 1, 0, 0, 0, 441, 2920, 1, 0, 0, 0, 443, 2929, 1, 0, 0, 0, 445, 2939, 1, 0, 0, 0, 447, 2946, 1, 0, 0, 0, 449, 2954, 1, 0, 0, 0, 451, 2962, 1, 0, 0, 0, 453, 2969, 1, 0, 0, 0, 455, 2974, 1, 0, 0, 0, 457, 2979, 1, 0, 0, 0, 459, 2988, 1, 0, 0, 0, 461, 2991, 1, 0, 0, 0, 463, 3001, 1, 0, 0, 0, 465, 3011, 1, 0, 0, 0, 467, 3020, 1, 0, 0, 0, 469, 3030, 1, 0, 0, 0, 471, 3040, 1, 0, 0, 0, 473, 3046, 1, 0, 0, 0, 475, 3054, 1, 0, 0, 0, 477, 3062, 1, 0, 0, 0, 479, 3071, 1, 0, 0, 0, 481, 3078, 1, 0, 0, 0, 483, 3090, 1, 0, 0, 0, 485, 3097, 1, 0, 0, 0, 487, 3105, 1, 0, 0, 0, 489, 3113, 1, 0, 0, 0, 491, 3123, 1, 0, 0, 0, 493, 3127, 1, 0, 0, 0, 495, 3133, 1, 0, 0, 0, 497, 3142, 1, 0, 0, 0, 499, 3148, 1, 0, 0, 0, 501, 3153, 1, 0, 0, 0, 503, 3163, 1, 0, 0, 0, 505, 3169, 1, 0, 0, 0, 507, 3176, 1, 0, 0, 0, 509, 3181, 1, 0, 0, 0, 511, 3187, 1, 0, 0, 0, 513, 3196, 1, 0, 0, 0, 515, 3201, 1, 0, 0, 0, 517, 3209, 1, 0, 0, 0, 519, 3215, 1, 0, 0, 0, 521, 3223, 1, 0, 0, 0, 523, 3236, 1, 0, 0, 0, 525, 3245, 1, 0, 0, 0, 527, 3251, 1, 0, 0, 0, 529, 3258, 1, 0, 0, 0, 531, 3267, 1, 0, 0, 0, 533, 3272, 1, 0, 0, 0, 535, 3278, 1, 0, 0, 0, 537, 3283, 1, 0, 0, 0, 539, 3288, 1, 0, 0, 0, 541, 3294, 1, 0, 0, 0, 543, 3299, 1, 0, 0, 0, 545, 3302, 1, 0, 0, 0, 547, 3310, 1, 0, 0, 0, 549, 3317, 1, 0, 0, 0, 551, 3324, 1, 0, 0, 0, 553, 3330, 1, 0, 0, 0, 555, 3337, 1, 0, 0, 0, 557, 3340, 1, 0, 0, 0, 559, 3344, 1, 0, 0, 0, 561, 3349, 1, 0, 0, 0, 563, 3358, 1, 0, 0, 0, 565, 3365, 1, 0, 0, 0, 567, 3373, 1, 0, 0, 0, 569, 3379, 1, 0, 0, 0, 571, 3385, 1, 0, 0, 0, 573, 3392, 1, 0, 0, 0, 575, 3400, 1, 0, 0, 0, 577, 3410, 1, 0, 0, 0, 579, 3418, 1, 0, 0, 0, 581, 3427, 1, 0, 0, 0, 583, 3433, 1, 0, 0, 0, 585, 3443, 1, 0, 0, 0, 587, 3451, 1, 0, 0, 0, 589, 3460, 1, 0, 0, 0, 591, 3469, 1, 0, 0, 0, 593, 3475, 1, 0, 0, 0, 595, 3486, 1, 0, 0, 0, 597, 3497, 1, 0, 0, 0, 599, 3507, 1, 0, 0, 0, 601, 3515, 1, 0, 0, 0, 603, 3521, 1, 0, 0, 0, 605, 3527, 1, 0, 0, 0, 607, 3532, 1, 0, 0, 0, 609, 3541, 1, 0, 0, 0, 611, 3549, 1, 0, 0, 0, 613, 3559, 1, 0, 0, 0, 615, 3563, 1, 0, 0, 0, 617, 3571, 1, 0, 0, 0, 619, 3579, 1, 0, 0, 0, 621, 3588, 1, 0, 0, 0, 623, 3596, 1, 0, 0, 0, 625, 3603, 1, 0, 0, 0, 627, 3614, 1, 0, 0, 0, 629, 3622, 1, 0, 0, 0, 631, 3630, 1, 0, 0, 0, 633, 3636, 1, 0, 0, 0, 635, 3644, 1, 0, 0, 0, 637, 3653, 1, 0, 0, 0, 639, 3661, 1, 0, 0, 0, 641, 3668, 1, 0, 0, 0, 643, 3673, 1, 0, 0, 0, 645, 3682, 1, 0, 0, 0, 647, 3687, 1, 0, 0, 0, 649, 3692, 1, 0, 0, 0, 651, 3702, 1, 0, 0, 0, 653, 3709, 1, 0, 0, 0, 655, 3716, 1, 0, 0, 0, 657, 3723, 1, 0, 0, 0, 659, 3730, 1, 0, 0, 0, 661, 3739, 1, 0, 0, 0, 663, 3748, 1, 0, 0, 0, 665, 3758, 1, 0, 0, 0, 667, 3771, 1, 0, 0, 0, 669, 3778, 1, 0, 0, 0, 671, 3786, 1, 0, 0, 0, 673, 3790, 1, 0, 0, 0, 675, 3796, 1, 0, 0, 0, 677, 3801, 1, 0, 0, 0, 679, 3808, 1, 0, 0, 0, 681, 3817, 1, 0, 0, 0, 683, 3824, 1, 0, 0, 0, 685, 3835, 1, 0, 0, 0, 687, 3841, 1, 0, 0, 0, 689, 3851, 1, 0, 0, 0, 691, 3862, 1, 0, 0, 0, 693, 3868, 1, 0, 0, 0, 695, 3875, 1, 0, 0, 0, 697, 3883, 1, 0, 0, 0, 699, 3890, 1, 0, 0, 0, 701, 3896, 1, 0, 0, 0, 703, 3902, 1, 0, 0, 0, 705, 3909, 1, 0, 0, 0, 707, 3916, 1, 0, 0, 0, 709, 3927, 1, 0, 0, 0, 711, 3932, 1, 0, 0, 0, 713, 3941, 1, 0, 0, 0, 715, 3951, 1, 0, 0, 0, 717, 3956, 1, 0, 0, 0, 719, 3968, 1, 0, 0, 0, 721, 3976, 1, 0, 0, 0, 723, 3985, 1, 0, 0, 0, 725, 3993, 1, 0, 0, 0, 727, 3998, 1, 0, 0, 0, 729, 4004, 1, 0, 0, 0, 731, 4014, 1, 0, 0, 0, 733, 4026, 1, 0, 0, 0, 735, 4038, 1, 0, 0, 0, 737, 4046, 1, 0, 0, 0, 739, 4055, 1, 0, 0, 0, 741, 4064, 1, 0, 0, 0, 743, 4070, 1, 0, 0, 0, 745, 4077, 1, 0, 0, 0, 747, 4084, 1, 0, 0, 0, 749, 4090, 1, 0, 0, 0, 751, 4099, 1, 0, 0, 0, 753, 4109, 1, 0, 0, 0, 755, 4117, 1, 0, 0, 0, 757, 4125, 1, 0, 0, 0, 759, 4130, 1, 0, 0, 0, 761, 4139, 1, 0, 0, 0, 763, 4150, 1, 0, 0, 0, 765, 4158, 1, 0, 0, 0, 767, 4163, 1, 0, 0, 0, 769, 4171, 1, 0, 0, 0, 771, 4177, 1, 0, 0, 0, 773, 4181, 1, 0, 0, 0, 775, 4186, 1, 0, 0, 0, 777, 4190, 1, 0, 0, 0, 779, 4195, 1, 0, 0, 0, 781, 4203, 1, 0, 0, 0, 783, 4210, 1, 0, 0, 0, 785, 4214, 1, 0, 0, 0, 787, 4222, 1, 0, 0, 0, 789, 4227, 1, 0, 0, 0, 791, 4237, 1, 0, 0, 0, 793, 4246, 1, 0, 0, 0, 795, 4250, 1, 0, 0, 0, 797, 4258, 1, 0, 0, 0, 799, 4265, 1, 0, 0, 0, 801, 4273, 1, 0, 0, 0, 803, 4279, 1, 0, 0, 0, 805, 4288, 1, 0, 0, 0, 807, 4294, 1, 0, 0, 0, 809, 4298, 1, 0, 0, 0, 811, 4306, 1, 0, 0, 0, 813, 4315, 1, 0, 0, 0, 815, 4321, 1, 0, 0, 0, 817, 4330, 1, 0, 0, 0, 819, 4336, 1, 0, 0, 0, 821, 4341, 1, 0, 0, 0, 823, 4348, 1, 0, 0, 0, 825, 4356, 1, 0, 0, 0, 827, 4364, 1, 0, 0, 0, 829, 4373, 1, 0, 0, 0, 831, 4383, 1, 0, 0, 0, 833, 4388, 1, 0, 0, 0, 835, 4392, 1, 0, 0, 0, 837, 4398, 1, 0, 0, 0, 839, 4407, 1, 0, 0, 0, 841, 4417, 1, 0, 0, 0, 843, 4422, 1, 0, 0, 0, 845, 4432, 1, 0, 0, 0, 847, 4438, 1, 0, 0, 0, 849, 4443, 1, 0, 0, 0, 851, 4450, 1, 0, 0, 0, 853, 4458, 1, 0, 0, 0, 855, 4472, 1, 0, 0, 0, 857, 4483, 1, 0, 0, 0, 859, 4490, 1, 0, 0, 0, 861, 4509, 1, 0, 0, 0, 863, 4537, 1, 0, 0, 0, 865, 4564, 1, 0, 0, 0, 867, 4570, 1, 0, 0, 0, 869, 4583, 1, 0, 0, 0, 871, 4593, 1, 0, 0, 0, 873, 4604, 1, 0, 0, 0, 875, 4614, 1, 0, 0, 0, 877, 4624, 1, 0, 0, 0, 879, 4633, 1, 0, 0, 0, 881, 4639, 1, 0, 0, 0, 883, 4647, 1, 0, 0, 0, 885, 4660, 1, 0, 0, 0, 887, 4665, 1, 0, 0, 0, 889, 4673, 1, 0, 0, 0, 891, 4680, 1, 0, 0, 0, 893, 4687, 1, 0, 0, 0, 895, 4698, 1, 0, 0, 0, 897, 4708, 1, 0, 0, 0, 899, 4715, 1, 0, 0, 0, 901, 4722, 1, 0, 0, 0, 903, 4730, 1, 0, 0, 0, 905, 4738, 1, 0, 0, 0, 907, 4748, 1, 0, 0, 0, 909, 4755, 1, 0, 0, 0, 911, 4762, 1, 0, 0, 0, 913, 4769, 1, 0, 0, 0, 915, 4781, 1, 0, 0, 0, 917, 4785, 1, 0, 0, 0, 919, 4789, 1, 0, 0, 0, 921, 4795, 1, 0, 0, 0, 923, 4808, 1, 0, 0, 0, 925, 4820, 1, 0, 0, 0, 927, 4824, 1, 0, 0, 0, 929, 4828, 1, 0, 0, 0, 931, 4837, 1, 0, 0, 0, 933, 4845, 1, 0, 0, 0, 935, 4856, 1, 0, 0, 0, 937, 4862, 1, 0, 0, 0, 939, 4870, 1, 0, 0, 0, 941, 4879, 1, 0, 0, 0, 943, 4883, 1, 0, 0, 0, 945, 4891, 1, 0, 0, 0, 947, 4902, 1, 0, 0, 0, 949, 4911, 1, 0, 0, 0, 951, 4916, 1, 0, 0, 0, 953, 4923, 1, 0, 0, 0, 955, 4928, 1, 0, 0, 0, 957, 4935, 1, 0, 0, 0, 959, 4940, 1, 0, 0, 0, 961, 4949, 1, 0, 0, 0, 963, 4954, 1, 0, 0, 0, 965, 4966, 1, 0, 0, 0, 967, 4977, 1, 0, 0, 0, 969, 4986, 1, 0, 0, 0, 971, 4994, 1, 0, 0, 0, 973, 5008, 1, 0, 0, 0, 975, 5016, 1, 0, 0, 0, 977, 5027, 1, 0, 0, 0, 979, 5034, 1, 0, 0, 0, 981, 5041, 1, 0, 0, 0, 983, 5048, 1, 0, 0, 0, 985, 5055, 1, 0, 0, 0, 987, 5059, 1, 0, 0, 0, 989, 5063, 1, 0, 0, 0, 991, 5068, 1, 0, 0, 0, 993, 5073, 1, 0, 0, 0, 995, 5081, 1, 0, 0, 0, 997, 5087, 1, 0, 0, 0, 999, 5097, 1, 0, 0, 0, 1001, 5102, 1, 0, 0, 0, 1003, 5122, 1, 0, 0, 0, 1005, 5140, 1, 0, 0, 0, 1007, 5146, 1, 0, 0, 0, 1009, 5159, 1, 0, 0, 0, 1011, 5170, 1, 0, 0, 0, 1013, 5176, 1, 0, 0, 0, 1015, 5185, 1, 0, 0, 0, 1017, 5193, 1, 0, 0, 0, 1019, 5197, 1, 0, 0, 0, 1021, 5209, 1, 0, 0, 0, 1023, 5217, 1, 0, 0, 0, 1025, 5223, 1, 0, 0, 0, 1027, 5229, 1, 0, 0, 0, 1029, 5237, 1, 0, 0, 0, 1031, 5245, 1, 0, 0, 0, 1033, 5251, 1, 0, 0, 0, 1035, 5256, 1, 0, 0, 0, 1037, 5263, 1, 0, 0, 0, 1039, 5269, 1, 0, 0, 0, 1041, 5275, 1, 0, 0, 0, 1043, 5284, 1, 0, 0, 0, 1045, 5290, 1, 0, 0, 0, 1047, 5294, 1, 0, 0, 0, 1049, 5299, 1, 0, 0, 0, 1051, 5306, 1, 0, 0, 0, 1053, 5314, 1, 0, 0, 0, 1055, 5324, 1, 0, 0, 0, 1057, 5331, 1, 0, 0, 0, 1059, 5336, 1, 0, 0, 0, 1061, 5341, 1, 0, 0, 0, 1063, 5345, 1, 0, 0, 0, 1065, 5350, 1, 0, 0, 0, 1067, 5355, 1, 0, 0, 0, 1069, 5363, 1, 0, 0, 0, 1071, 5371, 1, 0, 0, 0, 1073, 5375, 1, 0, 0, 0, 1075, 5379, 1, 0, 0, 0, 1077, 5389, 1, 0, 0, 0, 1079, 5395, 1, 0, 0, 0, 1081, 5399, 1, 0, 0, 0, 1083, 5403, 1, 0, 0, 0, 1085, 5406, 1, 0, 0, 0, 1087, 5412, 1, 0, 0, 0, 1089, 5422, 1, 0, 0, 0, 1091, 5426, 1, 0, 0, 0, 1093, 5429, 1, 0, 0, 0, 1095, 5435, 1, 0, 0, 0, 1097, 5443, 1, 0, 0, 0, 1099, 5449, 1, 0, 0, 0, 1101, 5455, 1, 0, 0, 0, 1103, 5460, 1, 0, 0, 0, 1105, 5465, 1, 0, 0, 0, 1107, 5476, 1, 0, 0, 0, 1109, 5482, 1, 0, 0, 0, 1111, 5495, 1, 0, 0, 0, 1113, 5502, 1, 0, 0, 0, 1115, 5510, 1, 0, 0, 0, 1117, 5515, 1, 0, 0, 0, 1119, 5521, 1, 0, 0, 0, 1121, 5526, 1, 0, 0, 0, 1123, 5532, 1, 0, 0, 0, 1125, 5537, 1, 0, 0, 0, 1127, 5543, 1, 0, 0, 0, 1129, 5549, 1, 0, 0, 0, 1131, 5556, 1, 0, 0, 0, 1133, 5560, 1, 0, 0, 0, 1135, 5565, 1, 0, 0, 0, 1137, 5569, 1, 0, 0, 0, 1139, 5574, 1, 0, 0, 0, 1141, 5578, 1, 0, 0, 0, 1143, 5583, 1, 0, 0, 0, 1145, 5587, 1, 0, 0, 0, 1147, 5592, 1, 0, 0, 0, 1149, 5597, 1, 0, 0, 0, 1151, 5602, 1, 0, 0, 0, 1153, 5607, 1, 0, 0, 0, 1155, 5613, 1, 0, 0, 0, 1157, 5619, 1, 0, 0, 0, 1159, 5625, 1, 0, 0, 0, 1161, 5636, 1, 0, 0, 0, 1163, 5648, 1, 0, 0, 0, 1165, 5665, 1, 0, 0, 0, 1167, 5671, 1, 0, 0, 0, 1169, 5684, 1, 0, 0, 0, 1171, 5690, 1, 0, 0, 0, 1173, 5696, 1, 0, 0, 0, 1175, 5702, 1, 0, 0, 0, 1177, 5706, 1, 0, 0, 0, 1179, 5713, 1, 0, 0, 0, 1181, 5723, 1, 0, 0, 0, 1183, 5730, 1, 0, 0, 0, 1185, 5738, 1, 0, 0, 0, 1187, 5745, 1, 0, 0, 0, 1189, 5750, 1, 0, 0, 0, 1191, 5756, 1, 0, 0, 0, 1193, 5760, 1, 0, 0, 0, 1195, 5772, 1, 0, 0, 0, 1197, 5791, 1, 0, 0, 0, 1199, 5803, 1, 0, 0, 0, 1201, 5817, 1, 0, 0, 0, 1203, 5832, 1, 0, 0, 0, 1205, 5845, 1, 0, 0, 0, 1207, 5858, 1, 0, 0, 0, 1209, 5870, 1, 0, 0, 0, 1211, 5883, 1, 0, 0, 0, 1213, 5898, 1, 0, 0, 0, 1215, 5913, 1, 0, 0, 0, 1217, 5935, 1, 0, 0, 0, 1219, 5957, 1, 0, 0, 0, 1221, 5971, 1, 0, 0, 0, 1223, 5978, 1, 0, 0, 0, 1225, 5983, 1, 0, 0, 0, 1227, 5989, 1, 0, 0, 0, 1229, 6000, 1, 0, 0, 0, 1231, 6012, 1, 0, 0, 0, 1233, 6028, 1, 0, 0, 0, 1235, 6044, 1, 0, 0, 0, 1237, 6051, 1, 0, 0, 0, 1239, 6058, 1, 0, 0, 0, 1241, 6067, 1, 0, 0, 0, 1243, 6074, 1, 0, 0, 0, 1245, 6084, 1, 0, 0, 0, 1247, 6091, 1, 0, 0, 0, 1249, 6095, 1, 0, 0, 0, 1251, 6111, 1, 0, 0, 0, 1253, 6120, 1, 0, 0, 0, 1255, 6130, 1, 0, 0, 0, 1257, 6141, 1, 0, 0, 0, 1259, 6150, 1, 0, 0, 0, 1261, 6163, 1, 0, 0, 0, 1263, 6177, 1, 0, 0, 0, 1265, 6194, 1, 0, 0, 0, 1267, 6204, 1, 0, 0, 0, 1269, 6218, 1, 0, 0, 0, 1271, 6228, 1, 0, 0, 0, 1273, 6243, 1, 0, 0, 0, 1275, 6260, 1, 0, 0, 0, 1277, 6264, 1, 0, 0, 0, 1279, 6284, 1, 0, 0, 0, 1281, 6294, 1, 0, 0, 0, 1283, 6316, 1, 0, 0, 0, 1285, 6329, 1, 0, 0, 0, 1287, 6337, 1, 0, 0, 0, 1289, 6345, 1, 0, 0, 0, 1291, 6355, 1, 0, 0, 0, 1293, 6368, 1, 0, 0, 0, 1295, 6372, 1, 0, 0, 0, 1297, 6376, 1, 0, 0, 0, 1299, 6378, 1, 0, 0, 0, 1301, 6381, 1, 0, 0, 0, 1303, 6390, 1, 0, 0, 0, 1305, 6393, 1, 0, 0, 0, 1307, 6402, 1, 0, 0, 0, 1309, 6406, 1, 0, 0, 0, 1311, 6410, 1, 0, 0, 0, 1313, 6414, 1, 0, 0, 0, 1315, 6418, 1, 0, 0, 0, 1317, 6421, 1, 0, 0, 0, 1319, 6430, 1, 0, 0, 0, 1321, 6436, 1, 0, 0, 0, 1323, 6439, 1, 0, 0, 0, 1325, 6443, 1, 0, 0, 0, 1327, 6452, 1, 0, 0, 0, 1329, 6459, 1, 0, 0, 0, 1331, 6462, 1, 0, 0, 0, 1333, 6470, 1, 0, 0, 0, 1335, 6473, 1, 0, 0, 0, 1337, 6476, 1, 0, 0, 0, 1339, 6479, 1, 0, 0, 0, 1341, 6487, 1, 0, 0, 0, 1343, 6490, 1, 0, 0, 0, 1345, 6493, 1, 0, 0, 0, 1347, 6495, 1, 0, 0, 0, 1349, 6529, 1, 0, 0, 0, 1351, 6532, 1, 0, 0, 0, 1353, 6536, 1, 0, 0, 0, 1355, 6544, 1, 0, 0, 0, 1357, 6560, 1, 0, 0, 0, 1359, 6571, 1, 0, 0, 0, 1361, 6575, 1, 0, 0, 0, 1363, 6586, 1, 0, 0, 0, 1365, 6625, 1, 0, 0, 0, 1367, 6676, 1, 0, 0, 0, 1369, 6700, 1, 0, 0, 0, 1371, 6703, 1, 0, 0, 0, 1373, 6705, 1, 0, 0, 0, 1375, 6710, 1, 0, 0, 0, 1377, 6741, 1, 0, 0, 0, 1379, 6744, 1, 0, 0, 0, 1381, 6749, 1, 0, 0, 0, 1383, 6762, 1, 0, 0, 0, 1385, 6765, 1, 0, 0, 0, 1387, 6770, 1, 0, 0, 0, 1389, 6776, 1, 0, 0, 0, 1391, 6781, 1, 0, 0, 0, 1393, 6786, 1, 0, 0, 0, 1395, 6791, 1, 0, 0, 0, 1397, 6796, 1, 0, 0, 0, 1399, 6813, 1, 0, 0, 0, 1401, 6815, 1, 0, 0, 0, 1403, 1404, 5, 36, 0, 0, 1404, 6, 1, 0, 0, 0, 1405, 1406, 5, 40, 0, 0, 1406, 8, 1, 0, 0, 0, 1407, 1408, 5, 41, 0, 0, 1408, 10, 1, 0, 0, 0, 1409, 1410, 5, 91, 0, 0, 1410, 12, 1, 0, 0, 0, 1411, 1412, 5, 93, 0, 0, 1412, 14, 1, 0, 0, 0, 1413, 1414, 5, 44, 0, 0, 1414, 16, 1, 0, 0, 0, 1415, 1416, 5, 59, 0, 0, 1416, 18, 1, 0, 0, 0, 1417, 1418, 5, 58, 0, 0, 1418, 20, 1, 0, 0, 0, 1419, 1420, 5, 42, 0, 0, 1420, 22, 1, 0, 0, 0, 1421, 1422, 5, 61, 0, 0, 1422, 24, 1, 0, 0, 0, 1423, 1424, 5, 46, 0, 0, 1424, 26, 1, 0, 0, 0, 1425, 1426, 5, 43, 0, 0, 1426, 28, 1, 0, 0, 0, 1427, 1428, 5, 45, 0, 0, 1428, 30, 1, 0, 0, 0, 1429, 1430, 5, 47, 0, 0, 1430, 32, 1, 0, 0, 0, 1431, 1432, 5, 94, 0, 0, 1432, 34, 1, 0, 0, 0, 1433, 1434, 5, 60, 0, 0, 1434, 36, 1, 0, 0, 0, 1435, 1436, 5, 62, 0, 0, 1436, 38, 1, 0, 0, 0, 1437, 1438, 5, 60, 0, 0, 1438, 1439, 5, 60, 0, 0, 1439, 40, 1, 0, 0, 0, 1440, 1441, 5, 62, 0, 0, 1441, 1442, 5, 62, 0, 0, 1442, 42, 1, 0, 0, 0, 1443, 1444, 5, 58, 0, 0, 1444, 1445, 5, 61, 0, 0, 1445, 44, 1, 0, 0, 0, 1446, 1447, 5, 60, 0, 0, 1447, 1448, 5, 61, 0, 0, 1448, 46, 1, 0, 0, 0, 1449, 1450, 5, 61, 0, 0, 1450, 1451, 5, 62, 0, 0, 1451, 48, 1, 0, 0, 0, 1452, 1453, 5, 62, 0, 0, 1453, 1454, 5, 61, 0, 0, 1454, 50, 1, 0, 0, 0, 1455, 1456, 5, 46, 0, 0, 1456, 1457, 5, 46, 0, 0, 1457, 52, 1, 0, 0, 0, 1458, 1459, 5, 60, 0, 0, 1459, 1460, 5, 62, 0, 0, 1460, 54, 1, 0, 0, 0, 1461, 1462, 5, 58, 0, 0, 1462, 1463, 5, 58, 0, 0, 1463, 56, 1, 0, 0, 0, 1464, 1465, 5, 37, 0, 0, 1465, 58, 1, 0, 0, 0, 1466, 1468, 5, 36, 0, 0, 1467, 1469, 7, 0, 0, 0, 1468, 1467, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1468, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 60, 1, 0, 0, 0, 1472, 1488, 3, 65, 30, 0, 1473, 1477, 5, 43, 0, 0, 1474, 1475, 5, 45, 0, 0, 1475, 1477, 4, 28, 0, 0, 1476, 1473, 1, 0, 0, 0, 1476, 1474, 1, 0, 0, 0, 1477, 1478, 1, 0, 0, 0, 1478, 1476, 1, 0, 0, 0, 1478, 1479, 1, 0, 0, 0, 1479, 1483, 1, 0, 0, 0, 1480, 1484, 3, 65, 30, 0, 1481, 1482, 5, 47, 0, 0, 1482, 1484, 4, 28, 1, 0, 1483, 1480, 1, 0, 0, 0, 1483, 1481, 1, 0, 0, 0, 1484, 1488, 1, 0, 0, 0, 1485, 1486, 5, 47, 0, 0, 1486, 1488, 4, 28, 2, 0, 1487, 1472, 1, 0, 0, 0, 1487, 1476, 1, 0, 0, 0, 1487, 1485, 1, 0, 0, 0, 1488, 1489, 1, 0, 0, 0, 1489, 1487, 1, 0, 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1493, 1, 0, 0, 0, 1491, 1493, 7, 1, 0, 0, 1492, 1487, 1, 0, 0, 0, 1492, 1491, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 1495, 6, 28, 0, 0, 1495, 62, 1, 0, 0, 0, 1496, 1502, 3, 67, 31, 0, 1497, 1498, 5, 45, 0, 0, 1498, 1502, 4, 29, 3, 0, 1499, 1500, 5, 47, 0, 0, 1500, 1502, 4, 29, 4, 0, 1501, 1496, 1, 0, 0, 0, 1501, 1497, 1, 0, 0, 0, 1501, 1499, 1, 0, 0, 0, 1502, 1505, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1506, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1508, 3, 69, 32, 0, 1507, 1509, 3, 61, 28, 0, 1508, 1507, 1, 0, 0, 0, 1508, 1509, 1, 0, 0, 0, 1509, 1513, 1, 0, 0, 0, 1510, 1514, 5, 43, 0, 0, 1511, 1512, 5, 45, 0, 0, 1512, 1514, 4, 29, 5, 0, 1513, 1510, 1, 0, 0, 0, 1513, 1511, 1, 0, 0, 0, 1514, 1515, 1, 0, 0, 0, 1515, 1513, 1, 0, 0, 0, 1515, 1516, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1518, 6, 29, 1, 0, 1518, 64, 1, 0, 0, 0, 1519, 1520, 7, 2, 0, 0, 1520, 66, 1, 0, 0, 0, 1521, 1522, 7, 3, 0, 0, 1522, 68, 1, 0, 0, 0, 1523, 1524, 7, 4, 0, 0, 1524, 70, 1, 0, 0, 0, 1525, 1526, 7, 5, 0, 0, 1526, 1527, 7, 6, 0, 0, 1527, 1528, 7, 6, 0, 0, 1528, 72, 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, 9, 0, 0, 1535, 1536, 7, 10, 0, 0, 1536, 74, 1, 0, 0, 0, 1537, 1538, 7, 5, 0, 0, 1538, 1539, 7, 7, 0, 0, 1539, 1540, 7, 5, 0, 0, 1540, 1541, 7, 6, 0, 0, 1541, 1542, 7, 8, 0, 0, 1542, 1543, 7, 11, 0, 0, 1543, 1544, 7, 10, 0, 0, 1544, 76, 1, 0, 0, 0, 1545, 1546, 7, 5, 0, 0, 1546, 1547, 7, 7, 0, 0, 1547, 1548, 7, 12, 0, 0, 1548, 78, 1, 0, 0, 0, 1549, 1550, 7, 5, 0, 0, 1550, 1551, 7, 7, 0, 0, 1551, 1552, 7, 8, 0, 0, 1552, 80, 1, 0, 0, 0, 1553, 1554, 7, 5, 0, 0, 1554, 1555, 7, 13, 0, 0, 1555, 1556, 7, 13, 0, 0, 1556, 1557, 7, 5, 0, 0, 1557, 1558, 7, 8, 0, 0, 1558, 82, 1, 0, 0, 0, 1559, 1560, 7, 5, 0, 0, 1560, 1561, 7, 9, 0, 0, 1561, 84, 1, 0, 0, 0, 1562, 1563, 7, 5, 0, 0, 1563, 1564, 7, 9, 0, 0, 1564, 1565, 7, 14, 0, 0, 1565, 86, 1, 0, 0, 0, 1566, 1567, 7, 5, 0, 0, 1567, 1568, 7, 9, 0, 0, 1568, 1569, 7, 8, 0, 0, 1569, 1570, 7, 15, 0, 0, 1570, 1571, 7, 15, 0, 0, 1571, 1572, 7, 10, 0, 0, 1572, 1573, 7, 16, 0, 0, 1573, 1574, 7, 13, 0, 0, 1574, 1575, 7, 17, 0, 0, 1575, 1576, 7, 14, 0, 0, 1576, 88, 1, 0, 0, 0, 1577, 1578, 7, 18, 0, 0, 1578, 1579, 7, 19, 0, 0, 1579, 1580, 7, 16, 0, 0, 1580, 1581, 7, 20, 0, 0, 1581, 90, 1, 0, 0, 0, 1582, 1583, 7, 14, 0, 0, 1583, 1584, 7, 5, 0, 0, 1584, 1585, 7, 9, 0, 0, 1585, 1586, 7, 10, 0, 0, 1586, 92, 1, 0, 0, 0, 1587, 1588, 7, 14, 0, 0, 1588, 1589, 7, 5, 0, 0, 1589, 1590, 7, 9, 0, 0, 1590, 1591, 7, 16, 0, 0, 1591, 94, 1, 0, 0, 0, 1592, 1593, 7, 14, 0, 0, 1593, 1594, 7, 20, 0, 0, 1594, 1595, 7, 10, 0, 0, 1595, 1596, 7, 14, 0, 0, 1596, 1597, 7, 21, 0, 0, 1597, 96, 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, 6, 0, 0, 1602, 1603, 7, 5, 0, 0, 1603, 1604, 7, 16, 0, 0, 1604, 1605, 7, 10, 0, 0, 1605, 98, 1, 0, 0, 0, 1606, 1607, 7, 14, 0, 0, 1607, 1608, 7, 19, 0, 0, 1608, 1609, 7, 6, 0, 0, 1609, 1610, 7, 22, 0, 0, 1610, 1611, 7, 15, 0, 0, 1611, 1612, 7, 7, 0, 0, 1612, 100, 1, 0, 0, 0, 1613, 1614, 7, 14, 0, 0, 1614, 1615, 7, 19, 0, 0, 1615, 1616, 7, 7, 0, 0, 1616, 1617, 7, 9, 0, 0, 1617, 1618, 7, 16, 0, 0, 1618, 1619, 7, 13, 0, 0, 1619, 1620, 7, 5, 0, 0, 1620, 1621, 7, 17, 0, 0, 1621, 1622, 7, 7, 0, 0, 1622, 1623, 7, 16, 0, 0, 1623, 102, 1, 0, 0, 0, 1624, 1625, 7, 14, 0, 0, 1625, 1626, 7, 13, 0, 0, 1626, 1627, 7, 10, 0, 0, 1627, 1628, 7, 5, 0, 0, 1628, 1629, 7, 16, 0, 0, 1629, 1630, 7, 10, 0, 0, 1630, 104, 1, 0, 0, 0, 1631, 1632, 7, 14, 0, 0, 1632, 1633, 7, 22, 0, 0, 1633, 1634, 7, 13, 0, 0, 1634, 1635, 7, 13, 0, 0, 1635, 1636, 7, 10, 0, 0, 1636, 1637, 7, 7, 0, 0, 1637, 1638, 7, 16, 0, 0, 1638, 1639, 5, 95, 0, 0, 1639, 1640, 7, 14, 0, 0, 1640, 1641, 7, 5, 0, 0, 1641, 1642, 7, 16, 0, 0, 1642, 1643, 7, 5, 0, 0, 1643, 1644, 7, 6, 0, 0, 1644, 1645, 7, 19, 0, 0, 1645, 1646, 7, 23, 0, 0, 1646, 106, 1, 0, 0, 0, 1647, 1648, 7, 14, 0, 0, 1648, 1649, 7, 22, 0, 0, 1649, 1650, 7, 13, 0, 0, 1650, 1651, 7, 13, 0, 0, 1651, 1652, 7, 10, 0, 0, 1652, 1653, 7, 7, 0, 0, 1653, 1654, 7, 16, 0, 0, 1654, 1655, 5, 95, 0, 0, 1655, 1656, 7, 12, 0, 0, 1656, 1657, 7, 5, 0, 0, 1657, 1658, 7, 16, 0, 0, 1658, 1659, 7, 10, 0, 0, 1659, 108, 1, 0, 0, 0, 1660, 1661, 7, 14, 0, 0, 1661, 1662, 7, 22, 0, 0, 1662, 1663, 7, 13, 0, 0, 1663, 1664, 7, 13, 0, 0, 1664, 1665, 7, 10, 0, 0, 1665, 1666, 7, 7, 0, 0, 1666, 1667, 7, 16, 0, 0, 1667, 1668, 5, 95, 0, 0, 1668, 1669, 7, 13, 0, 0, 1669, 1670, 7, 19, 0, 0, 1670, 1671, 7, 6, 0, 0, 1671, 1672, 7, 10, 0, 0, 1672, 110, 1, 0, 0, 0, 1673, 1674, 7, 14, 0, 0, 1674, 1675, 7, 22, 0, 0, 1675, 1676, 7, 13, 0, 0, 1676, 1677, 7, 13, 0, 0, 1677, 1678, 7, 10, 0, 0, 1678, 1679, 7, 7, 0, 0, 1679, 1680, 7, 16, 0, 0, 1680, 1681, 5, 95, 0, 0, 1681, 1682, 7, 16, 0, 0, 1682, 1683, 7, 17, 0, 0, 1683, 1684, 7, 15, 0, 0, 1684, 1685, 7, 10, 0, 0, 1685, 112, 1, 0, 0, 0, 1686, 1687, 7, 14, 0, 0, 1687, 1688, 7, 22, 0, 0, 1688, 1689, 7, 13, 0, 0, 1689, 1690, 7, 13, 0, 0, 1690, 1691, 7, 10, 0, 0, 1691, 1692, 7, 7, 0, 0, 1692, 1693, 7, 16, 0, 0, 1693, 1694, 5, 95, 0, 0, 1694, 1695, 7, 16, 0, 0, 1695, 1696, 7, 17, 0, 0, 1696, 1697, 7, 15, 0, 0, 1697, 1698, 7, 10, 0, 0, 1698, 1699, 7, 9, 0, 0, 1699, 1700, 7, 16, 0, 0, 1700, 1701, 7, 5, 0, 0, 1701, 1702, 7, 15, 0, 0, 1702, 1703, 7, 24, 0, 0, 1703, 114, 1, 0, 0, 0, 1704, 1705, 7, 14, 0, 0, 1705, 1706, 7, 22, 0, 0, 1706, 1707, 7, 13, 0, 0, 1707, 1708, 7, 13, 0, 0, 1708, 1709, 7, 10, 0, 0, 1709, 1710, 7, 7, 0, 0, 1710, 1711, 7, 16, 0, 0, 1711, 1712, 5, 95, 0, 0, 1712, 1713, 7, 22, 0, 0, 1713, 1714, 7, 9, 0, 0, 1714, 1715, 7, 10, 0, 0, 1715, 1716, 7, 13, 0, 0, 1716, 116, 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, 5, 0, 0, 1721, 1722, 7, 22, 0, 0, 1722, 1723, 7, 6, 0, 0, 1723, 1724, 7, 16, 0, 0, 1724, 118, 1, 0, 0, 0, 1725, 1726, 7, 12, 0, 0, 1726, 1727, 7, 10, 0, 0, 1727, 1728, 7, 25, 0, 0, 1728, 1729, 7, 10, 0, 0, 1729, 1730, 7, 13, 0, 0, 1730, 1731, 7, 13, 0, 0, 1731, 1732, 7, 5, 0, 0, 1732, 1733, 7, 18, 0, 0, 1733, 1734, 7, 6, 0, 0, 1734, 1735, 7, 10, 0, 0, 1735, 120, 1, 0, 0, 0, 1736, 1737, 7, 12, 0, 0, 1737, 1738, 7, 10, 0, 0, 1738, 1739, 7, 9, 0, 0, 1739, 1740, 7, 14, 0, 0, 1740, 122, 1, 0, 0, 0, 1741, 1742, 7, 12, 0, 0, 1742, 1743, 7, 17, 0, 0, 1743, 1744, 7, 9, 0, 0, 1744, 1745, 7, 16, 0, 0, 1745, 1746, 7, 17, 0, 0, 1746, 1747, 7, 7, 0, 0, 1747, 1748, 7, 14, 0, 0, 1748, 1749, 7, 16, 0, 0, 1749, 124, 1, 0, 0, 0, 1750, 1751, 7, 12, 0, 0, 1751, 1752, 7, 19, 0, 0, 1752, 126, 1, 0, 0, 0, 1753, 1754, 7, 10, 0, 0, 1754, 1755, 7, 6, 0, 0, 1755, 1756, 7, 9, 0, 0, 1756, 1757, 7, 10, 0, 0, 1757, 128, 1, 0, 0, 0, 1758, 1759, 7, 10, 0, 0, 1759, 1760, 7, 26, 0, 0, 1760, 1761, 7, 14, 0, 0, 1761, 1762, 7, 10, 0, 0, 1762, 1763, 7, 24, 0, 0, 1763, 1764, 7, 16, 0, 0, 1764, 130, 1, 0, 0, 0, 1765, 1766, 7, 25, 0, 0, 1766, 1767, 7, 5, 0, 0, 1767, 1768, 7, 6, 0, 0, 1768, 1769, 7, 9, 0, 0, 1769, 1770, 7, 10, 0, 0, 1770, 132, 1, 0, 0, 0, 1771, 1772, 7, 25, 0, 0, 1772, 1773, 7, 10, 0, 0, 1773, 1774, 7, 16, 0, 0, 1774, 1775, 7, 14, 0, 0, 1775, 1776, 7, 20, 0, 0, 1776, 134, 1, 0, 0, 0, 1777, 1778, 7, 25, 0, 0, 1778, 1779, 7, 19, 0, 0, 1779, 1780, 7, 13, 0, 0, 1780, 136, 1, 0, 0, 0, 1781, 1782, 7, 25, 0, 0, 1782, 1783, 7, 19, 0, 0, 1783, 1784, 7, 13, 0, 0, 1784, 1785, 7, 10, 0, 0, 1785, 1786, 7, 17, 0, 0, 1786, 1787, 7, 23, 0, 0, 1787, 1788, 7, 7, 0, 0, 1788, 138, 1, 0, 0, 0, 1789, 1790, 7, 25, 0, 0, 1790, 1791, 7, 13, 0, 0, 1791, 1792, 7, 19, 0, 0, 1792, 1793, 7, 15, 0, 0, 1793, 140, 1, 0, 0, 0, 1794, 1795, 7, 23, 0, 0, 1795, 1796, 7, 13, 0, 0, 1796, 1797, 7, 5, 0, 0, 1797, 1798, 7, 7, 0, 0, 1798, 1799, 7, 16, 0, 0, 1799, 142, 1, 0, 0, 0, 1800, 1801, 7, 23, 0, 0, 1801, 1802, 7, 13, 0, 0, 1802, 1803, 7, 19, 0, 0, 1803, 1804, 7, 22, 0, 0, 1804, 1805, 7, 24, 0, 0, 1805, 144, 1, 0, 0, 0, 1806, 1807, 7, 20, 0, 0, 1807, 1808, 7, 5, 0, 0, 1808, 1809, 7, 27, 0, 0, 1809, 1810, 7, 17, 0, 0, 1810, 1811, 7, 7, 0, 0, 1811, 1812, 7, 23, 0, 0, 1812, 146, 1, 0, 0, 0, 1813, 1814, 7, 17, 0, 0, 1814, 1815, 7, 7, 0, 0, 1815, 148, 1, 0, 0, 0, 1816, 1817, 7, 17, 0, 0, 1817, 1818, 7, 7, 0, 0, 1818, 1819, 7, 17, 0, 0, 1819, 1820, 7, 16, 0, 0, 1820, 1821, 7, 17, 0, 0, 1821, 1822, 7, 5, 0, 0, 1822, 1823, 7, 6, 0, 0, 1823, 1824, 7, 6, 0, 0, 1824, 1825, 7, 8, 0, 0, 1825, 150, 1, 0, 0, 0, 1826, 1827, 7, 17, 0, 0, 1827, 1828, 7, 7, 0, 0, 1828, 1829, 7, 16, 0, 0, 1829, 1830, 7, 10, 0, 0, 1830, 1831, 7, 13, 0, 0, 1831, 1832, 7, 9, 0, 0, 1832, 1833, 7, 10, 0, 0, 1833, 1834, 7, 14, 0, 0, 1834, 1835, 7, 16, 0, 0, 1835, 152, 1, 0, 0, 0, 1836, 1837, 7, 17, 0, 0, 1837, 1838, 7, 7, 0, 0, 1838, 1839, 7, 16, 0, 0, 1839, 1840, 7, 19, 0, 0, 1840, 154, 1, 0, 0, 0, 1841, 1842, 7, 6, 0, 0, 1842, 1843, 7, 5, 0, 0, 1843, 1844, 7, 16, 0, 0, 1844, 1845, 7, 10, 0, 0, 1845, 1846, 7, 13, 0, 0, 1846, 1847, 7, 5, 0, 0, 1847, 1848, 7, 6, 0, 0, 1848, 156, 1, 0, 0, 0, 1849, 1850, 7, 6, 0, 0, 1850, 1851, 7, 10, 0, 0, 1851, 1852, 7, 5, 0, 0, 1852, 1853, 7, 12, 0, 0, 1853, 1854, 7, 17, 0, 0, 1854, 1855, 7, 7, 0, 0, 1855, 1856, 7, 23, 0, 0, 1856, 158, 1, 0, 0, 0, 1857, 1858, 7, 6, 0, 0, 1858, 1859, 7, 17, 0, 0, 1859, 1860, 7, 15, 0, 0, 1860, 1861, 7, 17, 0, 0, 1861, 1862, 7, 16, 0, 0, 1862, 160, 1, 0, 0, 0, 1863, 1864, 7, 6, 0, 0, 1864, 1865, 7, 19, 0, 0, 1865, 1866, 7, 14, 0, 0, 1866, 1867, 7, 5, 0, 0, 1867, 1868, 7, 6, 0, 0, 1868, 1869, 7, 16, 0, 0, 1869, 1870, 7, 17, 0, 0, 1870, 1871, 7, 15, 0, 0, 1871, 1872, 7, 10, 0, 0, 1872, 162, 1, 0, 0, 0, 1873, 1874, 7, 6, 0, 0, 1874, 1875, 7, 19, 0, 0, 1875, 1876, 7, 14, 0, 0, 1876, 1877, 7, 5, 0, 0, 1877, 1878, 7, 6, 0, 0, 1878, 1879, 7, 16, 0, 0, 1879, 1880, 7, 17, 0, 0, 1880, 1881, 7, 15, 0, 0, 1881, 1882, 7, 10, 0, 0, 1882, 1883, 7, 9, 0, 0, 1883, 1884, 7, 16, 0, 0, 1884, 1885, 7, 5, 0, 0, 1885, 1886, 7, 15, 0, 0, 1886, 1887, 7, 24, 0, 0, 1887, 164, 1, 0, 0, 0, 1888, 1889, 7, 7, 0, 0, 1889, 1890, 7, 19, 0, 0, 1890, 1891, 7, 16, 0, 0, 1891, 166, 1, 0, 0, 0, 1892, 1893, 7, 7, 0, 0, 1893, 1894, 7, 22, 0, 0, 1894, 1895, 7, 6, 0, 0, 1895, 1896, 7, 6, 0, 0, 1896, 168, 1, 0, 0, 0, 1897, 1898, 7, 19, 0, 0, 1898, 1899, 7, 25, 0, 0, 1899, 1900, 7, 25, 0, 0, 1900, 1901, 7, 9, 0, 0, 1901, 1902, 7, 10, 0, 0, 1902, 1903, 7, 16, 0, 0, 1903, 170, 1, 0, 0, 0, 1904, 1905, 7, 19, 0, 0, 1905, 1906, 7, 7, 0, 0, 1906, 172, 1, 0, 0, 0, 1907, 1908, 7, 19, 0, 0, 1908, 1909, 7, 7, 0, 0, 1909, 1910, 7, 6, 0, 0, 1910, 1911, 7, 8, 0, 0, 1911, 174, 1, 0, 0, 0, 1912, 1913, 7, 19, 0, 0, 1913, 1914, 7, 13, 0, 0, 1914, 176, 1, 0, 0, 0, 1915, 1916, 7, 19, 0, 0, 1916, 1917, 7, 13, 0, 0, 1917, 1918, 7, 12, 0, 0, 1918, 1919, 7, 10, 0, 0, 1919, 1920, 7, 13, 0, 0, 1920, 178, 1, 0, 0, 0, 1921, 1922, 7, 24, 0, 0, 1922, 1923, 7, 6, 0, 0, 1923, 1924, 7, 5, 0, 0, 1924, 1925, 7, 14, 0, 0, 1925, 1926, 7, 17, 0, 0, 1926, 1927, 7, 7, 0, 0, 1927, 1928, 7, 23, 0, 0, 1928, 180, 1, 0, 0, 0, 1929, 1930, 7, 24, 0, 0, 1930, 1931, 7, 13, 0, 0, 1931, 1932, 7, 17, 0, 0, 1932, 1933, 7, 15, 0, 0, 1933, 1934, 7, 5, 0, 0, 1934, 1935, 7, 13, 0, 0, 1935, 1936, 7, 8, 0, 0, 1936, 182, 1, 0, 0, 0, 1937, 1938, 7, 13, 0, 0, 1938, 1939, 7, 10, 0, 0, 1939, 1940, 7, 25, 0, 0, 1940, 1941, 7, 10, 0, 0, 1941, 1942, 7, 13, 0, 0, 1942, 1943, 7, 10, 0, 0, 1943, 1944, 7, 7, 0, 0, 1944, 1945, 7, 14, 0, 0, 1945, 1946, 7, 10, 0, 0, 1946, 1947, 7, 9, 0, 0, 1947, 184, 1, 0, 0, 0, 1948, 1949, 7, 13, 0, 0, 1949, 1950, 7, 10, 0, 0, 1950, 1951, 7, 16, 0, 0, 1951, 1952, 7, 22, 0, 0, 1952, 1953, 7, 13, 0, 0, 1953, 1954, 7, 7, 0, 0, 1954, 1955, 7, 17, 0, 0, 1955, 1956, 7, 7, 0, 0, 1956, 1957, 7, 23, 0, 0, 1957, 186, 1, 0, 0, 0, 1958, 1959, 7, 9, 0, 0, 1959, 1960, 7, 10, 0, 0, 1960, 1961, 7, 6, 0, 0, 1961, 1962, 7, 10, 0, 0, 1962, 1963, 7, 14, 0, 0, 1963, 1964, 7, 16, 0, 0, 1964, 188, 1, 0, 0, 0, 1965, 1966, 7, 9, 0, 0, 1966, 1967, 7, 10, 0, 0, 1967, 1968, 7, 9, 0, 0, 1968, 1969, 7, 9, 0, 0, 1969, 1970, 7, 17, 0, 0, 1970, 1971, 7, 19, 0, 0, 1971, 1972, 7, 7, 0, 0, 1972, 1973, 5, 95, 0, 0, 1973, 1974, 7, 22, 0, 0, 1974, 1975, 7, 9, 0, 0, 1975, 1976, 7, 10, 0, 0, 1976, 1977, 7, 13, 0, 0, 1977, 190, 1, 0, 0, 0, 1978, 1979, 7, 9, 0, 0, 1979, 1980, 7, 19, 0, 0, 1980, 1981, 7, 15, 0, 0, 1981, 1982, 7, 10, 0, 0, 1982, 192, 1, 0, 0, 0, 1983, 1984, 7, 9, 0, 0, 1984, 1985, 7, 8, 0, 0, 1985, 1986, 7, 15, 0, 0, 1986, 1987, 7, 15, 0, 0, 1987, 1988, 7, 10, 0, 0, 1988, 1989, 7, 16, 0, 0, 1989, 1990, 7, 13, 0, 0, 1990, 1991, 7, 17, 0, 0, 1991, 1992, 7, 14, 0, 0, 1992, 194, 1, 0, 0, 0, 1993, 1994, 7, 16, 0, 0, 1994, 1995, 7, 5, 0, 0, 1995, 1996, 7, 18, 0, 0, 1996, 1997, 7, 6, 0, 0, 1997, 1998, 7, 10, 0, 0, 1998, 196, 1, 0, 0, 0, 1999, 2000, 7, 16, 0, 0, 2000, 2001, 7, 20, 0, 0, 2001, 2002, 7, 10, 0, 0, 2002, 2003, 7, 7, 0, 0, 2003, 198, 1, 0, 0, 0, 2004, 2005, 7, 16, 0, 0, 2005, 2006, 7, 19, 0, 0, 2006, 200, 1, 0, 0, 0, 2007, 2008, 7, 16, 0, 0, 2008, 2009, 7, 19, 0, 0, 2009, 2010, 7, 24, 0, 0, 2010, 2011, 7, 17, 0, 0, 2011, 2012, 7, 14, 0, 0, 2012, 202, 1, 0, 0, 0, 2013, 2014, 7, 11, 0, 0, 2014, 2015, 7, 9, 0, 0, 2015, 2016, 7, 16, 0, 0, 2016, 2017, 7, 13, 0, 0, 2017, 2018, 7, 10, 0, 0, 2018, 2019, 7, 5, 0, 0, 2019, 2020, 7, 15, 0, 0, 2020, 204, 1, 0, 0, 0, 2021, 2022, 7, 11, 0, 0, 2022, 2023, 7, 16, 0, 0, 2023, 2024, 7, 5, 0, 0, 2024, 2025, 7, 18, 0, 0, 2025, 2026, 7, 6, 0, 0, 2026, 2027, 7, 10, 0, 0, 2027, 206, 1, 0, 0, 0, 2028, 2029, 7, 11, 0, 0, 2029, 2030, 7, 27, 0, 0, 2030, 2031, 7, 17, 0, 0, 2031, 2032, 7, 10, 0, 0, 2032, 2033, 7, 28, 0, 0, 2033, 208, 1, 0, 0, 0, 2034, 2035, 7, 16, 0, 0, 2035, 2036, 7, 13, 0, 0, 2036, 2037, 7, 5, 0, 0, 2037, 2038, 7, 17, 0, 0, 2038, 2039, 7, 6, 0, 0, 2039, 2040, 7, 17, 0, 0, 2040, 2041, 7, 7, 0, 0, 2041, 2042, 7, 23, 0, 0, 2042, 210, 1, 0, 0, 0, 2043, 2044, 7, 16, 0, 0, 2044, 2045, 7, 13, 0, 0, 2045, 2046, 7, 22, 0, 0, 2046, 2047, 7, 10, 0, 0, 2047, 212, 1, 0, 0, 0, 2048, 2049, 7, 22, 0, 0, 2049, 2050, 7, 7, 0, 0, 2050, 2051, 7, 17, 0, 0, 2051, 2052, 7, 19, 0, 0, 2052, 2053, 7, 7, 0, 0, 2053, 214, 1, 0, 0, 0, 2054, 2055, 7, 22, 0, 0, 2055, 2056, 7, 7, 0, 0, 2056, 2057, 7, 17, 0, 0, 2057, 2058, 7, 29, 0, 0, 2058, 2059, 7, 22, 0, 0, 2059, 2060, 7, 10, 0, 0, 2060, 216, 1, 0, 0, 0, 2061, 2062, 7, 22, 0, 0, 2062, 2063, 7, 9, 0, 0, 2063, 2064, 7, 10, 0, 0, 2064, 2065, 7, 13, 0, 0, 2065, 218, 1, 0, 0, 0, 2066, 2067, 7, 22, 0, 0, 2067, 2068, 7, 9, 0, 0, 2068, 2069, 7, 17, 0, 0, 2069, 2070, 7, 7, 0, 0, 2070, 2071, 7, 23, 0, 0, 2071, 220, 1, 0, 0, 0, 2072, 2073, 7, 27, 0, 0, 2073, 2074, 7, 5, 0, 0, 2074, 2075, 7, 13, 0, 0, 2075, 2076, 7, 17, 0, 0, 2076, 2077, 7, 5, 0, 0, 2077, 2078, 7, 12, 0, 0, 2078, 2079, 7, 17, 0, 0, 2079, 2080, 7, 14, 0, 0, 2080, 222, 1, 0, 0, 0, 2081, 2082, 7, 28, 0, 0, 2082, 2083, 7, 20, 0, 0, 2083, 2084, 7, 10, 0, 0, 2084, 2085, 7, 7, 0, 0, 2085, 224, 1, 0, 0, 0, 2086, 2087, 7, 28, 0, 0, 2087, 2088, 7, 20, 0, 0, 2088, 2089, 7, 10, 0, 0, 2089, 2090, 7, 13, 0, 0, 2090, 2091, 7, 10, 0, 0, 2091, 226, 1, 0, 0, 0, 2092, 2093, 7, 28, 0, 0, 2093, 2094, 7, 17, 0, 0, 2094, 2095, 7, 7, 0, 0, 2095, 2096, 7, 12, 0, 0, 2096, 2097, 7, 19, 0, 0, 2097, 2098, 7, 28, 0, 0, 2098, 228, 1, 0, 0, 0, 2099, 2100, 7, 28, 0, 0, 2100, 2101, 7, 17, 0, 0, 2101, 2102, 7, 16, 0, 0, 2102, 2103, 7, 20, 0, 0, 2103, 230, 1, 0, 0, 0, 2104, 2105, 7, 5, 0, 0, 2105, 2106, 7, 22, 0, 0, 2106, 2107, 7, 16, 0, 0, 2107, 2108, 7, 20, 0, 0, 2108, 2109, 7, 19, 0, 0, 2109, 2110, 7, 13, 0, 0, 2110, 2111, 7, 17, 0, 0, 2111, 2112, 7, 11, 0, 0, 2112, 2113, 7, 5, 0, 0, 2113, 2114, 7, 16, 0, 0, 2114, 2115, 7, 17, 0, 0, 2115, 2116, 7, 19, 0, 0, 2116, 2117, 7, 7, 0, 0, 2117, 232, 1, 0, 0, 0, 2118, 2119, 7, 18, 0, 0, 2119, 2120, 7, 17, 0, 0, 2120, 2121, 7, 7, 0, 0, 2121, 2122, 7, 5, 0, 0, 2122, 2123, 7, 13, 0, 0, 2123, 2124, 7, 8, 0, 0, 2124, 234, 1, 0, 0, 0, 2125, 2126, 7, 14, 0, 0, 2126, 2127, 7, 19, 0, 0, 2127, 2128, 7, 6, 0, 0, 2128, 2129, 7, 6, 0, 0, 2129, 2130, 7, 5, 0, 0, 2130, 2131, 7, 16, 0, 0, 2131, 2132, 7, 17, 0, 0, 2132, 2133, 7, 19, 0, 0, 2133, 2134, 7, 7, 0, 0, 2134, 236, 1, 0, 0, 0, 2135, 2136, 7, 14, 0, 0, 2136, 2137, 7, 19, 0, 0, 2137, 2138, 7, 7, 0, 0, 2138, 2139, 7, 14, 0, 0, 2139, 2140, 7, 22, 0, 0, 2140, 2141, 7, 13, 0, 0, 2141, 2142, 7, 13, 0, 0, 2142, 2143, 7, 10, 0, 0, 2143, 2144, 7, 7, 0, 0, 2144, 2145, 7, 16, 0, 0, 2145, 2146, 7, 6, 0, 0, 2146, 2147, 7, 8, 0, 0, 2147, 238, 1, 0, 0, 0, 2148, 2149, 7, 14, 0, 0, 2149, 2150, 7, 13, 0, 0, 2150, 2151, 7, 19, 0, 0, 2151, 2152, 7, 9, 0, 0, 2152, 2153, 7, 9, 0, 0, 2153, 240, 1, 0, 0, 0, 2154, 2155, 7, 14, 0, 0, 2155, 2156, 7, 22, 0, 0, 2156, 2157, 7, 13, 0, 0, 2157, 2158, 7, 13, 0, 0, 2158, 2159, 7, 10, 0, 0, 2159, 2160, 7, 7, 0, 0, 2160, 2161, 7, 16, 0, 0, 2161, 2162, 5, 95, 0, 0, 2162, 2163, 7, 9, 0, 0, 2163, 2164, 7, 14, 0, 0, 2164, 2165, 7, 20, 0, 0, 2165, 2166, 7, 10, 0, 0, 2166, 2167, 7, 15, 0, 0, 2167, 2168, 7, 5, 0, 0, 2168, 242, 1, 0, 0, 0, 2169, 2170, 7, 25, 0, 0, 2170, 2171, 7, 13, 0, 0, 2171, 2172, 7, 10, 0, 0, 2172, 2173, 7, 10, 0, 0, 2173, 2174, 7, 11, 0, 0, 2174, 2175, 7, 10, 0, 0, 2175, 244, 1, 0, 0, 0, 2176, 2177, 7, 25, 0, 0, 2177, 2178, 7, 22, 0, 0, 2178, 2179, 7, 6, 0, 0, 2179, 2180, 7, 6, 0, 0, 2180, 246, 1, 0, 0, 0, 2181, 2182, 7, 17, 0, 0, 2182, 2183, 7, 6, 0, 0, 2183, 2184, 7, 17, 0, 0, 2184, 2185, 7, 21, 0, 0, 2185, 2186, 7, 10, 0, 0, 2186, 248, 1, 0, 0, 0, 2187, 2188, 7, 17, 0, 0, 2188, 2189, 7, 7, 0, 0, 2189, 2190, 7, 7, 0, 0, 2190, 2191, 7, 10, 0, 0, 2191, 2192, 7, 13, 0, 0, 2192, 250, 1, 0, 0, 0, 2193, 2194, 7, 17, 0, 0, 2194, 2195, 7, 9, 0, 0, 2195, 252, 1, 0, 0, 0, 2196, 2197, 7, 17, 0, 0, 2197, 2198, 7, 9, 0, 0, 2198, 2199, 7, 7, 0, 0, 2199, 2200, 7, 22, 0, 0, 2200, 2201, 7, 6, 0, 0, 2201, 2202, 7, 6, 0, 0, 2202, 254, 1, 0, 0, 0, 2203, 2204, 7, 30, 0, 0, 2204, 2205, 7, 19, 0, 0, 2205, 2206, 7, 17, 0, 0, 2206, 2207, 7, 7, 0, 0, 2207, 256, 1, 0, 0, 0, 2208, 2209, 7, 6, 0, 0, 2209, 2210, 7, 10, 0, 0, 2210, 2211, 7, 25, 0, 0, 2211, 2212, 7, 16, 0, 0, 2212, 258, 1, 0, 0, 0, 2213, 2214, 7, 6, 0, 0, 2214, 2215, 7, 17, 0, 0, 2215, 2216, 7, 21, 0, 0, 2216, 2217, 7, 10, 0, 0, 2217, 260, 1, 0, 0, 0, 2218, 2219, 7, 7, 0, 0, 2219, 2220, 7, 5, 0, 0, 2220, 2221, 7, 16, 0, 0, 2221, 2222, 7, 22, 0, 0, 2222, 2223, 7, 13, 0, 0, 2223, 2224, 7, 5, 0, 0, 2224, 2225, 7, 6, 0, 0, 2225, 262, 1, 0, 0, 0, 2226, 2227, 7, 7, 0, 0, 2227, 2228, 7, 19, 0, 0, 2228, 2229, 7, 16, 0, 0, 2229, 2230, 7, 7, 0, 0, 2230, 2231, 7, 22, 0, 0, 2231, 2232, 7, 6, 0, 0, 2232, 2233, 7, 6, 0, 0, 2233, 264, 1, 0, 0, 0, 2234, 2235, 7, 19, 0, 0, 2235, 2236, 7, 22, 0, 0, 2236, 2237, 7, 16, 0, 0, 2237, 2238, 7, 10, 0, 0, 2238, 2239, 7, 13, 0, 0, 2239, 266, 1, 0, 0, 0, 2240, 2241, 7, 19, 0, 0, 2241, 2242, 7, 27, 0, 0, 2242, 2243, 7, 10, 0, 0, 2243, 2244, 7, 13, 0, 0, 2244, 268, 1, 0, 0, 0, 2245, 2246, 7, 19, 0, 0, 2246, 2247, 7, 27, 0, 0, 2247, 2248, 7, 10, 0, 0, 2248, 2249, 7, 13, 0, 0, 2249, 2250, 7, 6, 0, 0, 2250, 2251, 7, 5, 0, 0, 2251, 2252, 7, 24, 0, 0, 2252, 2253, 7, 9, 0, 0, 2253, 270, 1, 0, 0, 0, 2254, 2255, 7, 13, 0, 0, 2255, 2256, 7, 17, 0, 0, 2256, 2257, 7, 23, 0, 0, 2257, 2258, 7, 20, 0, 0, 2258, 2259, 7, 16, 0, 0, 2259, 272, 1, 0, 0, 0, 2260, 2261, 7, 9, 0, 0, 2261, 2262, 7, 17, 0, 0, 2262, 2263, 7, 15, 0, 0, 2263, 2264, 7, 17, 0, 0, 2264, 2265, 7, 6, 0, 0, 2265, 2266, 7, 5, 0, 0, 2266, 2267, 7, 13, 0, 0, 2267, 274, 1, 0, 0, 0, 2268, 2269, 7, 27, 0, 0, 2269, 2270, 7, 10, 0, 0, 2270, 2271, 7, 13, 0, 0, 2271, 2272, 7, 18, 0, 0, 2272, 2273, 7, 19, 0, 0, 2273, 2274, 7, 9, 0, 0, 2274, 2275, 7, 10, 0, 0, 2275, 276, 1, 0, 0, 0, 2276, 2277, 7, 5, 0, 0, 2277, 2278, 7, 18, 0, 0, 2278, 2279, 7, 19, 0, 0, 2279, 2280, 7, 13, 0, 0, 2280, 2281, 7, 16, 0, 0, 2281, 278, 1, 0, 0, 0, 2282, 2283, 7, 5, 0, 0, 2283, 2284, 7, 18, 0, 0, 2284, 2285, 7, 9, 0, 0, 2285, 2286, 7, 19, 0, 0, 2286, 2287, 7, 6, 0, 0, 2287, 2288, 7, 22, 0, 0, 2288, 2289, 7, 16, 0, 0, 2289, 2290, 7, 10, 0, 0, 2290, 280, 1, 0, 0, 0, 2291, 2292, 7, 5, 0, 0, 2292, 2293, 7, 14, 0, 0, 2293, 2294, 7, 14, 0, 0, 2294, 2295, 7, 10, 0, 0, 2295, 2296, 7, 9, 0, 0, 2296, 2297, 7, 9, 0, 0, 2297, 282, 1, 0, 0, 0, 2298, 2299, 7, 5, 0, 0, 2299, 2300, 7, 14, 0, 0, 2300, 2301, 7, 16, 0, 0, 2301, 2302, 7, 17, 0, 0, 2302, 2303, 7, 19, 0, 0, 2303, 2304, 7, 7, 0, 0, 2304, 284, 1, 0, 0, 0, 2305, 2306, 7, 5, 0, 0, 2306, 2307, 7, 12, 0, 0, 2307, 2308, 7, 12, 0, 0, 2308, 286, 1, 0, 0, 0, 2309, 2310, 7, 5, 0, 0, 2310, 2311, 7, 12, 0, 0, 2311, 2312, 7, 15, 0, 0, 2312, 2313, 7, 17, 0, 0, 2313, 2314, 7, 7, 0, 0, 2314, 288, 1, 0, 0, 0, 2315, 2316, 7, 5, 0, 0, 2316, 2317, 7, 25, 0, 0, 2317, 2318, 7, 16, 0, 0, 2318, 2319, 7, 10, 0, 0, 2319, 2320, 7, 13, 0, 0, 2320, 290, 1, 0, 0, 0, 2321, 2322, 7, 5, 0, 0, 2322, 2323, 7, 23, 0, 0, 2323, 2324, 7, 23, 0, 0, 2324, 2325, 7, 13, 0, 0, 2325, 2326, 7, 10, 0, 0, 2326, 2327, 7, 23, 0, 0, 2327, 2328, 7, 5, 0, 0, 2328, 2329, 7, 16, 0, 0, 2329, 2330, 7, 10, 0, 0, 2330, 292, 1, 0, 0, 0, 2331, 2332, 7, 5, 0, 0, 2332, 2333, 7, 6, 0, 0, 2333, 2334, 7, 9, 0, 0, 2334, 2335, 7, 19, 0, 0, 2335, 294, 1, 0, 0, 0, 2336, 2337, 7, 5, 0, 0, 2337, 2338, 7, 6, 0, 0, 2338, 2339, 7, 16, 0, 0, 2339, 2340, 7, 10, 0, 0, 2340, 2341, 7, 13, 0, 0, 2341, 296, 1, 0, 0, 0, 2342, 2343, 7, 5, 0, 0, 2343, 2344, 7, 6, 0, 0, 2344, 2345, 7, 28, 0, 0, 2345, 2346, 7, 5, 0, 0, 2346, 2347, 7, 8, 0, 0, 2347, 2348, 7, 9, 0, 0, 2348, 298, 1, 0, 0, 0, 2349, 2350, 7, 5, 0, 0, 2350, 2351, 7, 9, 0, 0, 2351, 2352, 7, 9, 0, 0, 2352, 2353, 7, 10, 0, 0, 2353, 2354, 7, 13, 0, 0, 2354, 2355, 7, 16, 0, 0, 2355, 2356, 7, 17, 0, 0, 2356, 2357, 7, 19, 0, 0, 2357, 2358, 7, 7, 0, 0, 2358, 300, 1, 0, 0, 0, 2359, 2360, 7, 5, 0, 0, 2360, 2361, 7, 9, 0, 0, 2361, 2362, 7, 9, 0, 0, 2362, 2363, 7, 17, 0, 0, 2363, 2364, 7, 23, 0, 0, 2364, 2365, 7, 7, 0, 0, 2365, 2366, 7, 15, 0, 0, 2366, 2367, 7, 10, 0, 0, 2367, 2368, 7, 7, 0, 0, 2368, 2369, 7, 16, 0, 0, 2369, 302, 1, 0, 0, 0, 2370, 2371, 7, 5, 0, 0, 2371, 2372, 7, 16, 0, 0, 2372, 304, 1, 0, 0, 0, 2373, 2374, 7, 5, 0, 0, 2374, 2375, 7, 16, 0, 0, 2375, 2376, 7, 16, 0, 0, 2376, 2377, 7, 13, 0, 0, 2377, 2378, 7, 17, 0, 0, 2378, 2379, 7, 18, 0, 0, 2379, 2380, 7, 22, 0, 0, 2380, 2381, 7, 16, 0, 0, 2381, 2382, 7, 10, 0, 0, 2382, 306, 1, 0, 0, 0, 2383, 2384, 7, 18, 0, 0, 2384, 2385, 7, 5, 0, 0, 2385, 2386, 7, 14, 0, 0, 2386, 2387, 7, 21, 0, 0, 2387, 2388, 7, 28, 0, 0, 2388, 2389, 7, 5, 0, 0, 2389, 2390, 7, 13, 0, 0, 2390, 2391, 7, 12, 0, 0, 2391, 308, 1, 0, 0, 0, 2392, 2393, 7, 18, 0, 0, 2393, 2394, 7, 10, 0, 0, 2394, 2395, 7, 25, 0, 0, 2395, 2396, 7, 19, 0, 0, 2396, 2397, 7, 13, 0, 0, 2397, 2398, 7, 10, 0, 0, 2398, 310, 1, 0, 0, 0, 2399, 2400, 7, 18, 0, 0, 2400, 2401, 7, 10, 0, 0, 2401, 2402, 7, 23, 0, 0, 2402, 2403, 7, 17, 0, 0, 2403, 2404, 7, 7, 0, 0, 2404, 312, 1, 0, 0, 0, 2405, 2406, 7, 18, 0, 0, 2406, 2407, 7, 8, 0, 0, 2407, 314, 1, 0, 0, 0, 2408, 2409, 7, 14, 0, 0, 2409, 2410, 7, 5, 0, 0, 2410, 2411, 7, 14, 0, 0, 2411, 2412, 7, 20, 0, 0, 2412, 2413, 7, 10, 0, 0, 2413, 316, 1, 0, 0, 0, 2414, 2415, 7, 14, 0, 0, 2415, 2416, 7, 5, 0, 0, 2416, 2417, 7, 6, 0, 0, 2417, 2418, 7, 6, 0, 0, 2418, 2419, 7, 10, 0, 0, 2419, 2420, 7, 12, 0, 0, 2420, 318, 1, 0, 0, 0, 2421, 2422, 7, 14, 0, 0, 2422, 2423, 7, 5, 0, 0, 2423, 2424, 7, 9, 0, 0, 2424, 2425, 7, 14, 0, 0, 2425, 2426, 7, 5, 0, 0, 2426, 2427, 7, 12, 0, 0, 2427, 2428, 7, 10, 0, 0, 2428, 320, 1, 0, 0, 0, 2429, 2430, 7, 14, 0, 0, 2430, 2431, 7, 5, 0, 0, 2431, 2432, 7, 9, 0, 0, 2432, 2433, 7, 14, 0, 0, 2433, 2434, 7, 5, 0, 0, 2434, 2435, 7, 12, 0, 0, 2435, 2436, 7, 10, 0, 0, 2436, 2437, 7, 12, 0, 0, 2437, 322, 1, 0, 0, 0, 2438, 2439, 7, 14, 0, 0, 2439, 2440, 7, 5, 0, 0, 2440, 2441, 7, 16, 0, 0, 2441, 2442, 7, 5, 0, 0, 2442, 2443, 7, 6, 0, 0, 2443, 2444, 7, 19, 0, 0, 2444, 2445, 7, 23, 0, 0, 2445, 324, 1, 0, 0, 0, 2446, 2447, 7, 14, 0, 0, 2447, 2448, 7, 20, 0, 0, 2448, 2449, 7, 5, 0, 0, 2449, 2450, 7, 17, 0, 0, 2450, 2451, 7, 7, 0, 0, 2451, 326, 1, 0, 0, 0, 2452, 2453, 7, 14, 0, 0, 2453, 2454, 7, 20, 0, 0, 2454, 2455, 7, 5, 0, 0, 2455, 2456, 7, 13, 0, 0, 2456, 2457, 7, 5, 0, 0, 2457, 2458, 7, 14, 0, 0, 2458, 2459, 7, 16, 0, 0, 2459, 2460, 7, 10, 0, 0, 2460, 2461, 7, 13, 0, 0, 2461, 2462, 7, 17, 0, 0, 2462, 2463, 7, 9, 0, 0, 2463, 2464, 7, 16, 0, 0, 2464, 2465, 7, 17, 0, 0, 2465, 2466, 7, 14, 0, 0, 2466, 2467, 7, 9, 0, 0, 2467, 328, 1, 0, 0, 0, 2468, 2469, 7, 14, 0, 0, 2469, 2470, 7, 20, 0, 0, 2470, 2471, 7, 10, 0, 0, 2471, 2472, 7, 14, 0, 0, 2472, 2473, 7, 21, 0, 0, 2473, 2474, 7, 24, 0, 0, 2474, 2475, 7, 19, 0, 0, 2475, 2476, 7, 17, 0, 0, 2476, 2477, 7, 7, 0, 0, 2477, 2478, 7, 16, 0, 0, 2478, 330, 1, 0, 0, 0, 2479, 2480, 7, 14, 0, 0, 2480, 2481, 7, 6, 0, 0, 2481, 2482, 7, 5, 0, 0, 2482, 2483, 7, 9, 0, 0, 2483, 2484, 7, 9, 0, 0, 2484, 332, 1, 0, 0, 0, 2485, 2486, 7, 14, 0, 0, 2486, 2487, 7, 6, 0, 0, 2487, 2488, 7, 19, 0, 0, 2488, 2489, 7, 9, 0, 0, 2489, 2490, 7, 10, 0, 0, 2490, 334, 1, 0, 0, 0, 2491, 2492, 7, 14, 0, 0, 2492, 2493, 7, 6, 0, 0, 2493, 2494, 7, 22, 0, 0, 2494, 2495, 7, 9, 0, 0, 2495, 2496, 7, 16, 0, 0, 2496, 2497, 7, 10, 0, 0, 2497, 2498, 7, 13, 0, 0, 2498, 336, 1, 0, 0, 0, 2499, 2500, 7, 14, 0, 0, 2500, 2501, 7, 19, 0, 0, 2501, 2502, 7, 15, 0, 0, 2502, 2503, 7, 15, 0, 0, 2503, 2504, 7, 10, 0, 0, 2504, 2505, 7, 7, 0, 0, 2505, 2506, 7, 16, 0, 0, 2506, 338, 1, 0, 0, 0, 2507, 2508, 7, 14, 0, 0, 2508, 2509, 7, 19, 0, 0, 2509, 2510, 7, 15, 0, 0, 2510, 2511, 7, 15, 0, 0, 2511, 2512, 7, 10, 0, 0, 2512, 2513, 7, 7, 0, 0, 2513, 2514, 7, 16, 0, 0, 2514, 2515, 7, 9, 0, 0, 2515, 340, 1, 0, 0, 0, 2516, 2517, 7, 14, 0, 0, 2517, 2518, 7, 19, 0, 0, 2518, 2519, 7, 15, 0, 0, 2519, 2520, 7, 15, 0, 0, 2520, 2521, 7, 17, 0, 0, 2521, 2522, 7, 16, 0, 0, 2522, 342, 1, 0, 0, 0, 2523, 2524, 7, 14, 0, 0, 2524, 2525, 7, 19, 0, 0, 2525, 2526, 7, 15, 0, 0, 2526, 2527, 7, 15, 0, 0, 2527, 2528, 7, 17, 0, 0, 2528, 2529, 7, 16, 0, 0, 2529, 2530, 7, 16, 0, 0, 2530, 2531, 7, 10, 0, 0, 2531, 2532, 7, 12, 0, 0, 2532, 344, 1, 0, 0, 0, 2533, 2534, 7, 14, 0, 0, 2534, 2535, 7, 19, 0, 0, 2535, 2536, 7, 7, 0, 0, 2536, 2537, 7, 25, 0, 0, 2537, 2538, 7, 17, 0, 0, 2538, 2539, 7, 23, 0, 0, 2539, 2540, 7, 22, 0, 0, 2540, 2541, 7, 13, 0, 0, 2541, 2542, 7, 5, 0, 0, 2542, 2543, 7, 16, 0, 0, 2543, 2544, 7, 17, 0, 0, 2544, 2545, 7, 19, 0, 0, 2545, 2546, 7, 7, 0, 0, 2546, 346, 1, 0, 0, 0, 2547, 2548, 7, 14, 0, 0, 2548, 2549, 7, 19, 0, 0, 2549, 2550, 7, 7, 0, 0, 2550, 2551, 7, 7, 0, 0, 2551, 2552, 7, 10, 0, 0, 2552, 2553, 7, 14, 0, 0, 2553, 2554, 7, 16, 0, 0, 2554, 2555, 7, 17, 0, 0, 2555, 2556, 7, 19, 0, 0, 2556, 2557, 7, 7, 0, 0, 2557, 348, 1, 0, 0, 0, 2558, 2559, 7, 14, 0, 0, 2559, 2560, 7, 19, 0, 0, 2560, 2561, 7, 7, 0, 0, 2561, 2562, 7, 9, 0, 0, 2562, 2563, 7, 16, 0, 0, 2563, 2564, 7, 13, 0, 0, 2564, 2565, 7, 5, 0, 0, 2565, 2566, 7, 17, 0, 0, 2566, 2567, 7, 7, 0, 0, 2567, 2568, 7, 16, 0, 0, 2568, 2569, 7, 9, 0, 0, 2569, 350, 1, 0, 0, 0, 2570, 2571, 7, 14, 0, 0, 2571, 2572, 7, 19, 0, 0, 2572, 2573, 7, 7, 0, 0, 2573, 2574, 7, 16, 0, 0, 2574, 2575, 7, 10, 0, 0, 2575, 2576, 7, 7, 0, 0, 2576, 2577, 7, 16, 0, 0, 2577, 352, 1, 0, 0, 0, 2578, 2579, 7, 14, 0, 0, 2579, 2580, 7, 19, 0, 0, 2580, 2581, 7, 7, 0, 0, 2581, 2582, 7, 16, 0, 0, 2582, 2583, 7, 17, 0, 0, 2583, 2584, 7, 7, 0, 0, 2584, 2585, 7, 22, 0, 0, 2585, 2586, 7, 10, 0, 0, 2586, 354, 1, 0, 0, 0, 2587, 2588, 7, 14, 0, 0, 2588, 2589, 7, 19, 0, 0, 2589, 2590, 7, 7, 0, 0, 2590, 2591, 7, 27, 0, 0, 2591, 2592, 7, 10, 0, 0, 2592, 2593, 7, 13, 0, 0, 2593, 2594, 7, 9, 0, 0, 2594, 2595, 7, 17, 0, 0, 2595, 2596, 7, 19, 0, 0, 2596, 2597, 7, 7, 0, 0, 2597, 356, 1, 0, 0, 0, 2598, 2599, 7, 14, 0, 0, 2599, 2600, 7, 19, 0, 0, 2600, 2601, 7, 24, 0, 0, 2601, 2602, 7, 8, 0, 0, 2602, 358, 1, 0, 0, 0, 2603, 2604, 7, 14, 0, 0, 2604, 2605, 7, 19, 0, 0, 2605, 2606, 7, 9, 0, 0, 2606, 2607, 7, 16, 0, 0, 2607, 360, 1, 0, 0, 0, 2608, 2609, 7, 14, 0, 0, 2609, 2610, 7, 9, 0, 0, 2610, 2611, 7, 27, 0, 0, 2611, 362, 1, 0, 0, 0, 2612, 2613, 7, 14, 0, 0, 2613, 2614, 7, 22, 0, 0, 2614, 2615, 7, 13, 0, 0, 2615, 2616, 7, 9, 0, 0, 2616, 2617, 7, 19, 0, 0, 2617, 2618, 7, 13, 0, 0, 2618, 364, 1, 0, 0, 0, 2619, 2620, 7, 14, 0, 0, 2620, 2621, 7, 8, 0, 0, 2621, 2622, 7, 14, 0, 0, 2622, 2623, 7, 6, 0, 0, 2623, 2624, 7, 10, 0, 0, 2624, 366, 1, 0, 0, 0, 2625, 2626, 7, 12, 0, 0, 2626, 2627, 7, 5, 0, 0, 2627, 2628, 7, 16, 0, 0, 2628, 2629, 7, 5, 0, 0, 2629, 368, 1, 0, 0, 0, 2630, 2631, 7, 12, 0, 0, 2631, 2632, 7, 5, 0, 0, 2632, 2633, 7, 16, 0, 0, 2633, 2634, 7, 5, 0, 0, 2634, 2635, 7, 18, 0, 0, 2635, 2636, 7, 5, 0, 0, 2636, 2637, 7, 9, 0, 0, 2637, 2638, 7, 10, 0, 0, 2638, 370, 1, 0, 0, 0, 2639, 2640, 7, 12, 0, 0, 2640, 2641, 7, 5, 0, 0, 2641, 2642, 7, 8, 0, 0, 2642, 372, 1, 0, 0, 0, 2643, 2644, 7, 12, 0, 0, 2644, 2645, 7, 10, 0, 0, 2645, 2646, 7, 5, 0, 0, 2646, 2647, 7, 6, 0, 0, 2647, 2648, 7, 6, 0, 0, 2648, 2649, 7, 19, 0, 0, 2649, 2650, 7, 14, 0, 0, 2650, 2651, 7, 5, 0, 0, 2651, 2652, 7, 16, 0, 0, 2652, 2653, 7, 10, 0, 0, 2653, 374, 1, 0, 0, 0, 2654, 2655, 7, 12, 0, 0, 2655, 2656, 7, 10, 0, 0, 2656, 2657, 7, 14, 0, 0, 2657, 2658, 7, 6, 0, 0, 2658, 2659, 7, 5, 0, 0, 2659, 2660, 7, 13, 0, 0, 2660, 2661, 7, 10, 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, 5, 0, 0, 2666, 2667, 7, 22, 0, 0, 2667, 2668, 7, 6, 0, 0, 2668, 2669, 7, 16, 0, 0, 2669, 2670, 7, 9, 0, 0, 2670, 378, 1, 0, 0, 0, 2671, 2672, 7, 12, 0, 0, 2672, 2673, 7, 10, 0, 0, 2673, 2674, 7, 25, 0, 0, 2674, 2675, 7, 10, 0, 0, 2675, 2676, 7, 13, 0, 0, 2676, 2677, 7, 13, 0, 0, 2677, 2678, 7, 10, 0, 0, 2678, 2679, 7, 12, 0, 0, 2679, 380, 1, 0, 0, 0, 2680, 2681, 7, 12, 0, 0, 2681, 2682, 7, 10, 0, 0, 2682, 2683, 7, 25, 0, 0, 2683, 2684, 7, 17, 0, 0, 2684, 2685, 7, 7, 0, 0, 2685, 2686, 7, 10, 0, 0, 2686, 2687, 7, 13, 0, 0, 2687, 382, 1, 0, 0, 0, 2688, 2689, 7, 12, 0, 0, 2689, 2690, 7, 10, 0, 0, 2690, 2691, 7, 6, 0, 0, 2691, 2692, 7, 10, 0, 0, 2692, 2693, 7, 16, 0, 0, 2693, 2694, 7, 10, 0, 0, 2694, 384, 1, 0, 0, 0, 2695, 2696, 7, 12, 0, 0, 2696, 2697, 7, 10, 0, 0, 2697, 2698, 7, 6, 0, 0, 2698, 2699, 7, 17, 0, 0, 2699, 2700, 7, 15, 0, 0, 2700, 2701, 7, 17, 0, 0, 2701, 2702, 7, 16, 0, 0, 2702, 2703, 7, 10, 0, 0, 2703, 2704, 7, 13, 0, 0, 2704, 386, 1, 0, 0, 0, 2705, 2706, 7, 12, 0, 0, 2706, 2707, 7, 10, 0, 0, 2707, 2708, 7, 6, 0, 0, 2708, 2709, 7, 17, 0, 0, 2709, 2710, 7, 15, 0, 0, 2710, 2711, 7, 17, 0, 0, 2711, 2712, 7, 16, 0, 0, 2712, 2713, 7, 10, 0, 0, 2713, 2714, 7, 13, 0, 0, 2714, 2715, 7, 9, 0, 0, 2715, 388, 1, 0, 0, 0, 2716, 2717, 7, 12, 0, 0, 2717, 2718, 7, 17, 0, 0, 2718, 2719, 7, 14, 0, 0, 2719, 2720, 7, 16, 0, 0, 2720, 2721, 7, 17, 0, 0, 2721, 2722, 7, 19, 0, 0, 2722, 2723, 7, 7, 0, 0, 2723, 2724, 7, 5, 0, 0, 2724, 2725, 7, 13, 0, 0, 2725, 2726, 7, 8, 0, 0, 2726, 390, 1, 0, 0, 0, 2727, 2728, 7, 12, 0, 0, 2728, 2729, 7, 17, 0, 0, 2729, 2730, 7, 9, 0, 0, 2730, 2731, 7, 5, 0, 0, 2731, 2732, 7, 18, 0, 0, 2732, 2733, 7, 6, 0, 0, 2733, 2734, 7, 10, 0, 0, 2734, 392, 1, 0, 0, 0, 2735, 2736, 7, 12, 0, 0, 2736, 2737, 7, 17, 0, 0, 2737, 2738, 7, 9, 0, 0, 2738, 2739, 7, 14, 0, 0, 2739, 2740, 7, 5, 0, 0, 2740, 2741, 7, 13, 0, 0, 2741, 2742, 7, 12, 0, 0, 2742, 394, 1, 0, 0, 0, 2743, 2744, 7, 12, 0, 0, 2744, 2745, 7, 19, 0, 0, 2745, 2746, 7, 14, 0, 0, 2746, 2747, 7, 22, 0, 0, 2747, 2748, 7, 15, 0, 0, 2748, 2749, 7, 10, 0, 0, 2749, 2750, 7, 7, 0, 0, 2750, 2751, 7, 16, 0, 0, 2751, 396, 1, 0, 0, 0, 2752, 2753, 7, 12, 0, 0, 2753, 2754, 7, 19, 0, 0, 2754, 2755, 7, 15, 0, 0, 2755, 2756, 7, 5, 0, 0, 2756, 2757, 7, 17, 0, 0, 2757, 2758, 7, 7, 0, 0, 2758, 398, 1, 0, 0, 0, 2759, 2760, 7, 12, 0, 0, 2760, 2761, 7, 19, 0, 0, 2761, 2762, 7, 22, 0, 0, 2762, 2763, 7, 18, 0, 0, 2763, 2764, 7, 6, 0, 0, 2764, 2765, 7, 10, 0, 0, 2765, 400, 1, 0, 0, 0, 2766, 2767, 7, 12, 0, 0, 2767, 2768, 7, 13, 0, 0, 2768, 2769, 7, 19, 0, 0, 2769, 2770, 7, 24, 0, 0, 2770, 402, 1, 0, 0, 0, 2771, 2772, 7, 10, 0, 0, 2772, 2773, 7, 5, 0, 0, 2773, 2774, 7, 14, 0, 0, 2774, 2775, 7, 20, 0, 0, 2775, 404, 1, 0, 0, 0, 2776, 2777, 7, 10, 0, 0, 2777, 2778, 7, 7, 0, 0, 2778, 2779, 7, 5, 0, 0, 2779, 2780, 7, 18, 0, 0, 2780, 2781, 7, 6, 0, 0, 2781, 2782, 7, 10, 0, 0, 2782, 406, 1, 0, 0, 0, 2783, 2784, 7, 10, 0, 0, 2784, 2785, 7, 7, 0, 0, 2785, 2786, 7, 14, 0, 0, 2786, 2787, 7, 19, 0, 0, 2787, 2788, 7, 12, 0, 0, 2788, 2789, 7, 17, 0, 0, 2789, 2790, 7, 7, 0, 0, 2790, 2791, 7, 23, 0, 0, 2791, 408, 1, 0, 0, 0, 2792, 2793, 7, 10, 0, 0, 2793, 2794, 7, 7, 0, 0, 2794, 2795, 7, 14, 0, 0, 2795, 2796, 7, 13, 0, 0, 2796, 2797, 7, 8, 0, 0, 2797, 2798, 7, 24, 0, 0, 2798, 2799, 7, 16, 0, 0, 2799, 2800, 7, 10, 0, 0, 2800, 2801, 7, 12, 0, 0, 2801, 410, 1, 0, 0, 0, 2802, 2803, 7, 10, 0, 0, 2803, 2804, 7, 7, 0, 0, 2804, 2805, 7, 22, 0, 0, 2805, 2806, 7, 15, 0, 0, 2806, 412, 1, 0, 0, 0, 2807, 2808, 7, 10, 0, 0, 2808, 2809, 7, 9, 0, 0, 2809, 2810, 7, 14, 0, 0, 2810, 2811, 7, 5, 0, 0, 2811, 2812, 7, 24, 0, 0, 2812, 2813, 7, 10, 0, 0, 2813, 414, 1, 0, 0, 0, 2814, 2815, 7, 10, 0, 0, 2815, 2816, 7, 27, 0, 0, 2816, 2817, 7, 10, 0, 0, 2817, 2818, 7, 7, 0, 0, 2818, 2819, 7, 16, 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, 12, 0, 0, 2826, 2827, 7, 10, 0, 0, 2827, 418, 1, 0, 0, 0, 2828, 2829, 7, 10, 0, 0, 2829, 2830, 7, 26, 0, 0, 2830, 2831, 7, 14, 0, 0, 2831, 2832, 7, 6, 0, 0, 2832, 2833, 7, 22, 0, 0, 2833, 2834, 7, 12, 0, 0, 2834, 2835, 7, 17, 0, 0, 2835, 2836, 7, 7, 0, 0, 2836, 2837, 7, 23, 0, 0, 2837, 420, 1, 0, 0, 0, 2838, 2839, 7, 10, 0, 0, 2839, 2840, 7, 26, 0, 0, 2840, 2841, 7, 14, 0, 0, 2841, 2842, 7, 6, 0, 0, 2842, 2843, 7, 22, 0, 0, 2843, 2844, 7, 9, 0, 0, 2844, 2845, 7, 17, 0, 0, 2845, 2846, 7, 27, 0, 0, 2846, 2847, 7, 10, 0, 0, 2847, 422, 1, 0, 0, 0, 2848, 2849, 7, 10, 0, 0, 2849, 2850, 7, 26, 0, 0, 2850, 2851, 7, 10, 0, 0, 2851, 2852, 7, 14, 0, 0, 2852, 2853, 7, 22, 0, 0, 2853, 2854, 7, 16, 0, 0, 2854, 2855, 7, 10, 0, 0, 2855, 424, 1, 0, 0, 0, 2856, 2857, 7, 10, 0, 0, 2857, 2858, 7, 26, 0, 0, 2858, 2859, 7, 24, 0, 0, 2859, 2860, 7, 6, 0, 0, 2860, 2861, 7, 5, 0, 0, 2861, 2862, 7, 17, 0, 0, 2862, 2863, 7, 7, 0, 0, 2863, 426, 1, 0, 0, 0, 2864, 2865, 7, 10, 0, 0, 2865, 2866, 7, 26, 0, 0, 2866, 2867, 7, 16, 0, 0, 2867, 2868, 7, 10, 0, 0, 2868, 2869, 7, 7, 0, 0, 2869, 2870, 7, 9, 0, 0, 2870, 2871, 7, 17, 0, 0, 2871, 2872, 7, 19, 0, 0, 2872, 2873, 7, 7, 0, 0, 2873, 428, 1, 0, 0, 0, 2874, 2875, 7, 10, 0, 0, 2875, 2876, 7, 26, 0, 0, 2876, 2877, 7, 16, 0, 0, 2877, 2878, 7, 10, 0, 0, 2878, 2879, 7, 13, 0, 0, 2879, 2880, 7, 7, 0, 0, 2880, 2881, 7, 5, 0, 0, 2881, 2882, 7, 6, 0, 0, 2882, 430, 1, 0, 0, 0, 2883, 2884, 7, 25, 0, 0, 2884, 2885, 7, 5, 0, 0, 2885, 2886, 7, 15, 0, 0, 2886, 2887, 7, 17, 0, 0, 2887, 2888, 7, 6, 0, 0, 2888, 2889, 7, 8, 0, 0, 2889, 432, 1, 0, 0, 0, 2890, 2891, 7, 25, 0, 0, 2891, 2892, 7, 17, 0, 0, 2892, 2893, 7, 13, 0, 0, 2893, 2894, 7, 9, 0, 0, 2894, 2895, 7, 16, 0, 0, 2895, 434, 1, 0, 0, 0, 2896, 2897, 7, 25, 0, 0, 2897, 2898, 7, 19, 0, 0, 2898, 2899, 7, 6, 0, 0, 2899, 2900, 7, 6, 0, 0, 2900, 2901, 7, 19, 0, 0, 2901, 2902, 7, 28, 0, 0, 2902, 2903, 7, 17, 0, 0, 2903, 2904, 7, 7, 0, 0, 2904, 2905, 7, 23, 0, 0, 2905, 436, 1, 0, 0, 0, 2906, 2907, 7, 25, 0, 0, 2907, 2908, 7, 19, 0, 0, 2908, 2909, 7, 13, 0, 0, 2909, 2910, 7, 14, 0, 0, 2910, 2911, 7, 10, 0, 0, 2911, 438, 1, 0, 0, 0, 2912, 2913, 7, 25, 0, 0, 2913, 2914, 7, 19, 0, 0, 2914, 2915, 7, 13, 0, 0, 2915, 2916, 7, 28, 0, 0, 2916, 2917, 7, 5, 0, 0, 2917, 2918, 7, 13, 0, 0, 2918, 2919, 7, 12, 0, 0, 2919, 440, 1, 0, 0, 0, 2920, 2921, 7, 25, 0, 0, 2921, 2922, 7, 22, 0, 0, 2922, 2923, 7, 7, 0, 0, 2923, 2924, 7, 14, 0, 0, 2924, 2925, 7, 16, 0, 0, 2925, 2926, 7, 17, 0, 0, 2926, 2927, 7, 19, 0, 0, 2927, 2928, 7, 7, 0, 0, 2928, 442, 1, 0, 0, 0, 2929, 2930, 7, 25, 0, 0, 2930, 2931, 7, 22, 0, 0, 2931, 2932, 7, 7, 0, 0, 2932, 2933, 7, 14, 0, 0, 2933, 2934, 7, 16, 0, 0, 2934, 2935, 7, 17, 0, 0, 2935, 2936, 7, 19, 0, 0, 2936, 2937, 7, 7, 0, 0, 2937, 2938, 7, 9, 0, 0, 2938, 444, 1, 0, 0, 0, 2939, 2940, 7, 23, 0, 0, 2940, 2941, 7, 6, 0, 0, 2941, 2942, 7, 19, 0, 0, 2942, 2943, 7, 18, 0, 0, 2943, 2944, 7, 5, 0, 0, 2944, 2945, 7, 6, 0, 0, 2945, 446, 1, 0, 0, 0, 2946, 2947, 7, 23, 0, 0, 2947, 2948, 7, 13, 0, 0, 2948, 2949, 7, 5, 0, 0, 2949, 2950, 7, 7, 0, 0, 2950, 2951, 7, 16, 0, 0, 2951, 2952, 7, 10, 0, 0, 2952, 2953, 7, 12, 0, 0, 2953, 448, 1, 0, 0, 0, 2954, 2955, 7, 20, 0, 0, 2955, 2956, 7, 5, 0, 0, 2956, 2957, 7, 7, 0, 0, 2957, 2958, 7, 12, 0, 0, 2958, 2959, 7, 6, 0, 0, 2959, 2960, 7, 10, 0, 0, 2960, 2961, 7, 13, 0, 0, 2961, 450, 1, 0, 0, 0, 2962, 2963, 7, 20, 0, 0, 2963, 2964, 7, 10, 0, 0, 2964, 2965, 7, 5, 0, 0, 2965, 2966, 7, 12, 0, 0, 2966, 2967, 7, 10, 0, 0, 2967, 2968, 7, 13, 0, 0, 2968, 452, 1, 0, 0, 0, 2969, 2970, 7, 20, 0, 0, 2970, 2971, 7, 19, 0, 0, 2971, 2972, 7, 6, 0, 0, 2972, 2973, 7, 12, 0, 0, 2973, 454, 1, 0, 0, 0, 2974, 2975, 7, 20, 0, 0, 2975, 2976, 7, 19, 0, 0, 2976, 2977, 7, 22, 0, 0, 2977, 2978, 7, 13, 0, 0, 2978, 456, 1, 0, 0, 0, 2979, 2980, 7, 17, 0, 0, 2980, 2981, 7, 12, 0, 0, 2981, 2982, 7, 10, 0, 0, 2982, 2983, 7, 7, 0, 0, 2983, 2984, 7, 16, 0, 0, 2984, 2985, 7, 17, 0, 0, 2985, 2986, 7, 16, 0, 0, 2986, 2987, 7, 8, 0, 0, 2987, 458, 1, 0, 0, 0, 2988, 2989, 7, 17, 0, 0, 2989, 2990, 7, 25, 0, 0, 2990, 460, 1, 0, 0, 0, 2991, 2992, 7, 17, 0, 0, 2992, 2993, 7, 15, 0, 0, 2993, 2994, 7, 15, 0, 0, 2994, 2995, 7, 10, 0, 0, 2995, 2996, 7, 12, 0, 0, 2996, 2997, 7, 17, 0, 0, 2997, 2998, 7, 5, 0, 0, 2998, 2999, 7, 16, 0, 0, 2999, 3000, 7, 10, 0, 0, 3000, 462, 1, 0, 0, 0, 3001, 3002, 7, 17, 0, 0, 3002, 3003, 7, 15, 0, 0, 3003, 3004, 7, 15, 0, 0, 3004, 3005, 7, 22, 0, 0, 3005, 3006, 7, 16, 0, 0, 3006, 3007, 7, 5, 0, 0, 3007, 3008, 7, 18, 0, 0, 3008, 3009, 7, 6, 0, 0, 3009, 3010, 7, 10, 0, 0, 3010, 464, 1, 0, 0, 0, 3011, 3012, 7, 17, 0, 0, 3012, 3013, 7, 15, 0, 0, 3013, 3014, 7, 24, 0, 0, 3014, 3015, 7, 6, 0, 0, 3015, 3016, 7, 17, 0, 0, 3016, 3017, 7, 14, 0, 0, 3017, 3018, 7, 17, 0, 0, 3018, 3019, 7, 16, 0, 0, 3019, 466, 1, 0, 0, 0, 3020, 3021, 7, 17, 0, 0, 3021, 3022, 7, 7, 0, 0, 3022, 3023, 7, 14, 0, 0, 3023, 3024, 7, 6, 0, 0, 3024, 3025, 7, 22, 0, 0, 3025, 3026, 7, 12, 0, 0, 3026, 3027, 7, 17, 0, 0, 3027, 3028, 7, 7, 0, 0, 3028, 3029, 7, 23, 0, 0, 3029, 468, 1, 0, 0, 0, 3030, 3031, 7, 17, 0, 0, 3031, 3032, 7, 7, 0, 0, 3032, 3033, 7, 14, 0, 0, 3033, 3034, 7, 13, 0, 0, 3034, 3035, 7, 10, 0, 0, 3035, 3036, 7, 15, 0, 0, 3036, 3037, 7, 10, 0, 0, 3037, 3038, 7, 7, 0, 0, 3038, 3039, 7, 16, 0, 0, 3039, 470, 1, 0, 0, 0, 3040, 3041, 7, 17, 0, 0, 3041, 3042, 7, 7, 0, 0, 3042, 3043, 7, 12, 0, 0, 3043, 3044, 7, 10, 0, 0, 3044, 3045, 7, 26, 0, 0, 3045, 472, 1, 0, 0, 0, 3046, 3047, 7, 17, 0, 0, 3047, 3048, 7, 7, 0, 0, 3048, 3049, 7, 12, 0, 0, 3049, 3050, 7, 10, 0, 0, 3050, 3051, 7, 26, 0, 0, 3051, 3052, 7, 10, 0, 0, 3052, 3053, 7, 9, 0, 0, 3053, 474, 1, 0, 0, 0, 3054, 3055, 7, 17, 0, 0, 3055, 3056, 7, 7, 0, 0, 3056, 3057, 7, 20, 0, 0, 3057, 3058, 7, 10, 0, 0, 3058, 3059, 7, 13, 0, 0, 3059, 3060, 7, 17, 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, 20, 0, 0, 3065, 3066, 7, 10, 0, 0, 3066, 3067, 7, 13, 0, 0, 3067, 3068, 7, 17, 0, 0, 3068, 3069, 7, 16, 0, 0, 3069, 3070, 7, 9, 0, 0, 3070, 478, 1, 0, 0, 0, 3071, 3072, 7, 17, 0, 0, 3072, 3073, 7, 7, 0, 0, 3073, 3074, 7, 6, 0, 0, 3074, 3075, 7, 17, 0, 0, 3075, 3076, 7, 7, 0, 0, 3076, 3077, 7, 10, 0, 0, 3077, 480, 1, 0, 0, 0, 3078, 3079, 7, 17, 0, 0, 3079, 3080, 7, 7, 0, 0, 3080, 3081, 7, 9, 0, 0, 3081, 3082, 7, 10, 0, 0, 3082, 3083, 7, 7, 0, 0, 3083, 3084, 7, 9, 0, 0, 3084, 3085, 7, 17, 0, 0, 3085, 3086, 7, 16, 0, 0, 3086, 3087, 7, 17, 0, 0, 3087, 3088, 7, 27, 0, 0, 3088, 3089, 7, 10, 0, 0, 3089, 482, 1, 0, 0, 0, 3090, 3091, 7, 17, 0, 0, 3091, 3092, 7, 7, 0, 0, 3092, 3093, 7, 9, 0, 0, 3093, 3094, 7, 10, 0, 0, 3094, 3095, 7, 13, 0, 0, 3095, 3096, 7, 16, 0, 0, 3096, 484, 1, 0, 0, 0, 3097, 3098, 7, 17, 0, 0, 3098, 3099, 7, 7, 0, 0, 3099, 3100, 7, 9, 0, 0, 3100, 3101, 7, 16, 0, 0, 3101, 3102, 7, 10, 0, 0, 3102, 3103, 7, 5, 0, 0, 3103, 3104, 7, 12, 0, 0, 3104, 486, 1, 0, 0, 0, 3105, 3106, 7, 17, 0, 0, 3106, 3107, 7, 7, 0, 0, 3107, 3108, 7, 27, 0, 0, 3108, 3109, 7, 19, 0, 0, 3109, 3110, 7, 21, 0, 0, 3110, 3111, 7, 10, 0, 0, 3111, 3112, 7, 13, 0, 0, 3112, 488, 1, 0, 0, 0, 3113, 3114, 7, 17, 0, 0, 3114, 3115, 7, 9, 0, 0, 3115, 3116, 7, 19, 0, 0, 3116, 3117, 7, 6, 0, 0, 3117, 3118, 7, 5, 0, 0, 3118, 3119, 7, 16, 0, 0, 3119, 3120, 7, 17, 0, 0, 3120, 3121, 7, 19, 0, 0, 3121, 3122, 7, 7, 0, 0, 3122, 490, 1, 0, 0, 0, 3123, 3124, 7, 21, 0, 0, 3124, 3125, 7, 10, 0, 0, 3125, 3126, 7, 8, 0, 0, 3126, 492, 1, 0, 0, 0, 3127, 3128, 7, 6, 0, 0, 3128, 3129, 7, 5, 0, 0, 3129, 3130, 7, 18, 0, 0, 3130, 3131, 7, 10, 0, 0, 3131, 3132, 7, 6, 0, 0, 3132, 494, 1, 0, 0, 0, 3133, 3134, 7, 6, 0, 0, 3134, 3135, 7, 5, 0, 0, 3135, 3136, 7, 7, 0, 0, 3136, 3137, 7, 23, 0, 0, 3137, 3138, 7, 22, 0, 0, 3138, 3139, 7, 5, 0, 0, 3139, 3140, 7, 23, 0, 0, 3140, 3141, 7, 10, 0, 0, 3141, 496, 1, 0, 0, 0, 3142, 3143, 7, 6, 0, 0, 3143, 3144, 7, 5, 0, 0, 3144, 3145, 7, 13, 0, 0, 3145, 3146, 7, 23, 0, 0, 3146, 3147, 7, 10, 0, 0, 3147, 498, 1, 0, 0, 0, 3148, 3149, 7, 6, 0, 0, 3149, 3150, 7, 5, 0, 0, 3150, 3151, 7, 9, 0, 0, 3151, 3152, 7, 16, 0, 0, 3152, 500, 1, 0, 0, 0, 3153, 3154, 7, 6, 0, 0, 3154, 3155, 7, 10, 0, 0, 3155, 3156, 7, 5, 0, 0, 3156, 3157, 7, 21, 0, 0, 3157, 3158, 7, 24, 0, 0, 3158, 3159, 7, 13, 0, 0, 3159, 3160, 7, 19, 0, 0, 3160, 3161, 7, 19, 0, 0, 3161, 3162, 7, 25, 0, 0, 3162, 502, 1, 0, 0, 0, 3163, 3164, 7, 6, 0, 0, 3164, 3165, 7, 10, 0, 0, 3165, 3166, 7, 27, 0, 0, 3166, 3167, 7, 10, 0, 0, 3167, 3168, 7, 6, 0, 0, 3168, 504, 1, 0, 0, 0, 3169, 3170, 7, 6, 0, 0, 3170, 3171, 7, 17, 0, 0, 3171, 3172, 7, 9, 0, 0, 3172, 3173, 7, 16, 0, 0, 3173, 3174, 7, 10, 0, 0, 3174, 3175, 7, 7, 0, 0, 3175, 506, 1, 0, 0, 0, 3176, 3177, 7, 6, 0, 0, 3177, 3178, 7, 19, 0, 0, 3178, 3179, 7, 5, 0, 0, 3179, 3180, 7, 12, 0, 0, 3180, 508, 1, 0, 0, 0, 3181, 3182, 7, 6, 0, 0, 3182, 3183, 7, 19, 0, 0, 3183, 3184, 7, 14, 0, 0, 3184, 3185, 7, 5, 0, 0, 3185, 3186, 7, 6, 0, 0, 3186, 510, 1, 0, 0, 0, 3187, 3188, 7, 6, 0, 0, 3188, 3189, 7, 19, 0, 0, 3189, 3190, 7, 14, 0, 0, 3190, 3191, 7, 5, 0, 0, 3191, 3192, 7, 16, 0, 0, 3192, 3193, 7, 17, 0, 0, 3193, 3194, 7, 19, 0, 0, 3194, 3195, 7, 7, 0, 0, 3195, 512, 1, 0, 0, 0, 3196, 3197, 7, 6, 0, 0, 3197, 3198, 7, 19, 0, 0, 3198, 3199, 7, 14, 0, 0, 3199, 3200, 7, 21, 0, 0, 3200, 514, 1, 0, 0, 0, 3201, 3202, 7, 15, 0, 0, 3202, 3203, 7, 5, 0, 0, 3203, 3204, 7, 24, 0, 0, 3204, 3205, 7, 24, 0, 0, 3205, 3206, 7, 17, 0, 0, 3206, 3207, 7, 7, 0, 0, 3207, 3208, 7, 23, 0, 0, 3208, 516, 1, 0, 0, 0, 3209, 3210, 7, 15, 0, 0, 3210, 3211, 7, 5, 0, 0, 3211, 3212, 7, 16, 0, 0, 3212, 3213, 7, 14, 0, 0, 3213, 3214, 7, 20, 0, 0, 3214, 518, 1, 0, 0, 0, 3215, 3216, 7, 15, 0, 0, 3216, 3217, 7, 5, 0, 0, 3217, 3218, 7, 16, 0, 0, 3218, 3219, 7, 14, 0, 0, 3219, 3220, 7, 20, 0, 0, 3220, 3221, 7, 10, 0, 0, 3221, 3222, 7, 12, 0, 0, 3222, 520, 1, 0, 0, 0, 3223, 3224, 7, 15, 0, 0, 3224, 3225, 7, 5, 0, 0, 3225, 3226, 7, 16, 0, 0, 3226, 3227, 7, 10, 0, 0, 3227, 3228, 7, 13, 0, 0, 3228, 3229, 7, 17, 0, 0, 3229, 3230, 7, 5, 0, 0, 3230, 3231, 7, 6, 0, 0, 3231, 3232, 7, 17, 0, 0, 3232, 3233, 7, 11, 0, 0, 3233, 3234, 7, 10, 0, 0, 3234, 3235, 7, 12, 0, 0, 3235, 522, 1, 0, 0, 0, 3236, 3237, 7, 15, 0, 0, 3237, 3238, 7, 5, 0, 0, 3238, 3239, 7, 26, 0, 0, 3239, 3240, 7, 27, 0, 0, 3240, 3241, 7, 5, 0, 0, 3241, 3242, 7, 6, 0, 0, 3242, 3243, 7, 22, 0, 0, 3243, 3244, 7, 10, 0, 0, 3244, 524, 1, 0, 0, 0, 3245, 3246, 7, 15, 0, 0, 3246, 3247, 7, 10, 0, 0, 3247, 3248, 7, 13, 0, 0, 3248, 3249, 7, 23, 0, 0, 3249, 3250, 7, 10, 0, 0, 3250, 526, 1, 0, 0, 0, 3251, 3252, 7, 15, 0, 0, 3252, 3253, 7, 17, 0, 0, 3253, 3254, 7, 7, 0, 0, 3254, 3255, 7, 22, 0, 0, 3255, 3256, 7, 16, 0, 0, 3256, 3257, 7, 10, 0, 0, 3257, 528, 1, 0, 0, 0, 3258, 3259, 7, 15, 0, 0, 3259, 3260, 7, 17, 0, 0, 3260, 3261, 7, 7, 0, 0, 3261, 3262, 7, 27, 0, 0, 3262, 3263, 7, 5, 0, 0, 3263, 3264, 7, 6, 0, 0, 3264, 3265, 7, 22, 0, 0, 3265, 3266, 7, 10, 0, 0, 3266, 530, 1, 0, 0, 0, 3267, 3268, 7, 15, 0, 0, 3268, 3269, 7, 19, 0, 0, 3269, 3270, 7, 12, 0, 0, 3270, 3271, 7, 10, 0, 0, 3271, 532, 1, 0, 0, 0, 3272, 3273, 7, 15, 0, 0, 3273, 3274, 7, 19, 0, 0, 3274, 3275, 7, 7, 0, 0, 3275, 3276, 7, 16, 0, 0, 3276, 3277, 7, 20, 0, 0, 3277, 534, 1, 0, 0, 0, 3278, 3279, 7, 15, 0, 0, 3279, 3280, 7, 19, 0, 0, 3280, 3281, 7, 27, 0, 0, 3281, 3282, 7, 10, 0, 0, 3282, 536, 1, 0, 0, 0, 3283, 3284, 7, 7, 0, 0, 3284, 3285, 7, 5, 0, 0, 3285, 3286, 7, 15, 0, 0, 3286, 3287, 7, 10, 0, 0, 3287, 538, 1, 0, 0, 0, 3288, 3289, 7, 7, 0, 0, 3289, 3290, 7, 5, 0, 0, 3290, 3291, 7, 15, 0, 0, 3291, 3292, 7, 10, 0, 0, 3292, 3293, 7, 9, 0, 0, 3293, 540, 1, 0, 0, 0, 3294, 3295, 7, 7, 0, 0, 3295, 3296, 7, 10, 0, 0, 3296, 3297, 7, 26, 0, 0, 3297, 3298, 7, 16, 0, 0, 3298, 542, 1, 0, 0, 0, 3299, 3300, 7, 7, 0, 0, 3300, 3301, 7, 19, 0, 0, 3301, 544, 1, 0, 0, 0, 3302, 3303, 7, 7, 0, 0, 3303, 3304, 7, 19, 0, 0, 3304, 3305, 7, 16, 0, 0, 3305, 3306, 7, 20, 0, 0, 3306, 3307, 7, 17, 0, 0, 3307, 3308, 7, 7, 0, 0, 3308, 3309, 7, 23, 0, 0, 3309, 546, 1, 0, 0, 0, 3310, 3311, 7, 7, 0, 0, 3311, 3312, 7, 19, 0, 0, 3312, 3313, 7, 16, 0, 0, 3313, 3314, 7, 17, 0, 0, 3314, 3315, 7, 25, 0, 0, 3315, 3316, 7, 8, 0, 0, 3316, 548, 1, 0, 0, 0, 3317, 3318, 7, 7, 0, 0, 3318, 3319, 7, 19, 0, 0, 3319, 3320, 7, 28, 0, 0, 3320, 3321, 7, 5, 0, 0, 3321, 3322, 7, 17, 0, 0, 3322, 3323, 7, 16, 0, 0, 3323, 550, 1, 0, 0, 0, 3324, 3325, 7, 7, 0, 0, 3325, 3326, 7, 22, 0, 0, 3326, 3327, 7, 6, 0, 0, 3327, 3328, 7, 6, 0, 0, 3328, 3329, 7, 9, 0, 0, 3329, 552, 1, 0, 0, 0, 3330, 3331, 7, 19, 0, 0, 3331, 3332, 7, 18, 0, 0, 3332, 3333, 7, 30, 0, 0, 3333, 3334, 7, 10, 0, 0, 3334, 3335, 7, 14, 0, 0, 3335, 3336, 7, 16, 0, 0, 3336, 554, 1, 0, 0, 0, 3337, 3338, 7, 19, 0, 0, 3338, 3339, 7, 25, 0, 0, 3339, 556, 1, 0, 0, 0, 3340, 3341, 7, 19, 0, 0, 3341, 3342, 7, 25, 0, 0, 3342, 3343, 7, 25, 0, 0, 3343, 558, 1, 0, 0, 0, 3344, 3345, 7, 19, 0, 0, 3345, 3346, 7, 17, 0, 0, 3346, 3347, 7, 12, 0, 0, 3347, 3348, 7, 9, 0, 0, 3348, 560, 1, 0, 0, 0, 3349, 3350, 7, 19, 0, 0, 3350, 3351, 7, 24, 0, 0, 3351, 3352, 7, 10, 0, 0, 3352, 3353, 7, 13, 0, 0, 3353, 3354, 7, 5, 0, 0, 3354, 3355, 7, 16, 0, 0, 3355, 3356, 7, 19, 0, 0, 3356, 3357, 7, 13, 0, 0, 3357, 562, 1, 0, 0, 0, 3358, 3359, 7, 19, 0, 0, 3359, 3360, 7, 24, 0, 0, 3360, 3361, 7, 16, 0, 0, 3361, 3362, 7, 17, 0, 0, 3362, 3363, 7, 19, 0, 0, 3363, 3364, 7, 7, 0, 0, 3364, 564, 1, 0, 0, 0, 3365, 3366, 7, 19, 0, 0, 3366, 3367, 7, 24, 0, 0, 3367, 3368, 7, 16, 0, 0, 3368, 3369, 7, 17, 0, 0, 3369, 3370, 7, 19, 0, 0, 3370, 3371, 7, 7, 0, 0, 3371, 3372, 7, 9, 0, 0, 3372, 566, 1, 0, 0, 0, 3373, 3374, 7, 19, 0, 0, 3374, 3375, 7, 28, 0, 0, 3375, 3376, 7, 7, 0, 0, 3376, 3377, 7, 10, 0, 0, 3377, 3378, 7, 12, 0, 0, 3378, 568, 1, 0, 0, 0, 3379, 3380, 7, 19, 0, 0, 3380, 3381, 7, 28, 0, 0, 3381, 3382, 7, 7, 0, 0, 3382, 3383, 7, 10, 0, 0, 3383, 3384, 7, 13, 0, 0, 3384, 570, 1, 0, 0, 0, 3385, 3386, 7, 24, 0, 0, 3386, 3387, 7, 5, 0, 0, 3387, 3388, 7, 13, 0, 0, 3388, 3389, 7, 9, 0, 0, 3389, 3390, 7, 10, 0, 0, 3390, 3391, 7, 13, 0, 0, 3391, 572, 1, 0, 0, 0, 3392, 3393, 7, 24, 0, 0, 3393, 3394, 7, 5, 0, 0, 3394, 3395, 7, 13, 0, 0, 3395, 3396, 7, 16, 0, 0, 3396, 3397, 7, 17, 0, 0, 3397, 3398, 7, 5, 0, 0, 3398, 3399, 7, 6, 0, 0, 3399, 574, 1, 0, 0, 0, 3400, 3401, 7, 24, 0, 0, 3401, 3402, 7, 5, 0, 0, 3402, 3403, 7, 13, 0, 0, 3403, 3404, 7, 16, 0, 0, 3404, 3405, 7, 17, 0, 0, 3405, 3406, 7, 16, 0, 0, 3406, 3407, 7, 17, 0, 0, 3407, 3408, 7, 19, 0, 0, 3408, 3409, 7, 7, 0, 0, 3409, 576, 1, 0, 0, 0, 3410, 3411, 7, 24, 0, 0, 3411, 3412, 7, 5, 0, 0, 3412, 3413, 7, 9, 0, 0, 3413, 3414, 7, 9, 0, 0, 3414, 3415, 7, 17, 0, 0, 3415, 3416, 7, 7, 0, 0, 3416, 3417, 7, 23, 0, 0, 3417, 578, 1, 0, 0, 0, 3418, 3419, 7, 24, 0, 0, 3419, 3420, 7, 5, 0, 0, 3420, 3421, 7, 9, 0, 0, 3421, 3422, 7, 9, 0, 0, 3422, 3423, 7, 28, 0, 0, 3423, 3424, 7, 19, 0, 0, 3424, 3425, 7, 13, 0, 0, 3425, 3426, 7, 12, 0, 0, 3426, 580, 1, 0, 0, 0, 3427, 3428, 7, 24, 0, 0, 3428, 3429, 7, 6, 0, 0, 3429, 3430, 7, 5, 0, 0, 3430, 3431, 7, 7, 0, 0, 3431, 3432, 7, 9, 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, 14, 0, 0, 3437, 3438, 7, 10, 0, 0, 3438, 3439, 7, 12, 0, 0, 3439, 3440, 7, 17, 0, 0, 3440, 3441, 7, 7, 0, 0, 3441, 3442, 7, 23, 0, 0, 3442, 584, 1, 0, 0, 0, 3443, 3444, 7, 24, 0, 0, 3444, 3445, 7, 13, 0, 0, 3445, 3446, 7, 10, 0, 0, 3446, 3447, 7, 24, 0, 0, 3447, 3448, 7, 5, 0, 0, 3448, 3449, 7, 13, 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, 10, 0, 0, 3454, 3455, 7, 24, 0, 0, 3455, 3456, 7, 5, 0, 0, 3456, 3457, 7, 13, 0, 0, 3457, 3458, 7, 10, 0, 0, 3458, 3459, 7, 12, 0, 0, 3459, 588, 1, 0, 0, 0, 3460, 3461, 7, 24, 0, 0, 3461, 3462, 7, 13, 0, 0, 3462, 3463, 7, 10, 0, 0, 3463, 3464, 7, 9, 0, 0, 3464, 3465, 7, 10, 0, 0, 3465, 3466, 7, 13, 0, 0, 3466, 3467, 7, 27, 0, 0, 3467, 3468, 7, 10, 0, 0, 3468, 590, 1, 0, 0, 0, 3469, 3470, 7, 24, 0, 0, 3470, 3471, 7, 13, 0, 0, 3471, 3472, 7, 17, 0, 0, 3472, 3473, 7, 19, 0, 0, 3473, 3474, 7, 13, 0, 0, 3474, 592, 1, 0, 0, 0, 3475, 3476, 7, 24, 0, 0, 3476, 3477, 7, 13, 0, 0, 3477, 3478, 7, 17, 0, 0, 3478, 3479, 7, 27, 0, 0, 3479, 3480, 7, 17, 0, 0, 3480, 3481, 7, 6, 0, 0, 3481, 3482, 7, 10, 0, 0, 3482, 3483, 7, 23, 0, 0, 3483, 3484, 7, 10, 0, 0, 3484, 3485, 7, 9, 0, 0, 3485, 594, 1, 0, 0, 0, 3486, 3487, 7, 24, 0, 0, 3487, 3488, 7, 13, 0, 0, 3488, 3489, 7, 19, 0, 0, 3489, 3490, 7, 14, 0, 0, 3490, 3491, 7, 10, 0, 0, 3491, 3492, 7, 12, 0, 0, 3492, 3493, 7, 22, 0, 0, 3493, 3494, 7, 13, 0, 0, 3494, 3495, 7, 5, 0, 0, 3495, 3496, 7, 6, 0, 0, 3496, 596, 1, 0, 0, 0, 3497, 3498, 7, 24, 0, 0, 3498, 3499, 7, 13, 0, 0, 3499, 3500, 7, 19, 0, 0, 3500, 3501, 7, 14, 0, 0, 3501, 3502, 7, 10, 0, 0, 3502, 3503, 7, 12, 0, 0, 3503, 3504, 7, 22, 0, 0, 3504, 3505, 7, 13, 0, 0, 3505, 3506, 7, 10, 0, 0, 3506, 598, 1, 0, 0, 0, 3507, 3508, 7, 24, 0, 0, 3508, 3509, 7, 13, 0, 0, 3509, 3510, 7, 19, 0, 0, 3510, 3511, 7, 23, 0, 0, 3511, 3512, 7, 13, 0, 0, 3512, 3513, 7, 5, 0, 0, 3513, 3514, 7, 15, 0, 0, 3514, 600, 1, 0, 0, 0, 3515, 3516, 7, 29, 0, 0, 3516, 3517, 7, 22, 0, 0, 3517, 3518, 7, 19, 0, 0, 3518, 3519, 7, 16, 0, 0, 3519, 3520, 7, 10, 0, 0, 3520, 602, 1, 0, 0, 0, 3521, 3522, 7, 13, 0, 0, 3522, 3523, 7, 5, 0, 0, 3523, 3524, 7, 7, 0, 0, 3524, 3525, 7, 23, 0, 0, 3525, 3526, 7, 10, 0, 0, 3526, 604, 1, 0, 0, 0, 3527, 3528, 7, 13, 0, 0, 3528, 3529, 7, 10, 0, 0, 3529, 3530, 7, 5, 0, 0, 3530, 3531, 7, 12, 0, 0, 3531, 606, 1, 0, 0, 0, 3532, 3533, 7, 13, 0, 0, 3533, 3534, 7, 10, 0, 0, 3534, 3535, 7, 5, 0, 0, 3535, 3536, 7, 9, 0, 0, 3536, 3537, 7, 9, 0, 0, 3537, 3538, 7, 17, 0, 0, 3538, 3539, 7, 23, 0, 0, 3539, 3540, 7, 7, 0, 0, 3540, 608, 1, 0, 0, 0, 3541, 3542, 7, 13, 0, 0, 3542, 3543, 7, 10, 0, 0, 3543, 3544, 7, 14, 0, 0, 3544, 3545, 7, 20, 0, 0, 3545, 3546, 7, 10, 0, 0, 3546, 3547, 7, 14, 0, 0, 3547, 3548, 7, 21, 0, 0, 3548, 610, 1, 0, 0, 0, 3549, 3550, 7, 13, 0, 0, 3550, 3551, 7, 10, 0, 0, 3551, 3552, 7, 14, 0, 0, 3552, 3553, 7, 22, 0, 0, 3553, 3554, 7, 13, 0, 0, 3554, 3555, 7, 9, 0, 0, 3555, 3556, 7, 17, 0, 0, 3556, 3557, 7, 27, 0, 0, 3557, 3558, 7, 10, 0, 0, 3558, 612, 1, 0, 0, 0, 3559, 3560, 7, 13, 0, 0, 3560, 3561, 7, 10, 0, 0, 3561, 3562, 7, 25, 0, 0, 3562, 614, 1, 0, 0, 0, 3563, 3564, 7, 13, 0, 0, 3564, 3565, 7, 10, 0, 0, 3565, 3566, 7, 25, 0, 0, 3566, 3567, 7, 13, 0, 0, 3567, 3568, 7, 10, 0, 0, 3568, 3569, 7, 9, 0, 0, 3569, 3570, 7, 20, 0, 0, 3570, 616, 1, 0, 0, 0, 3571, 3572, 7, 13, 0, 0, 3572, 3573, 7, 10, 0, 0, 3573, 3574, 7, 17, 0, 0, 3574, 3575, 7, 7, 0, 0, 3575, 3576, 7, 12, 0, 0, 3576, 3577, 7, 10, 0, 0, 3577, 3578, 7, 26, 0, 0, 3578, 618, 1, 0, 0, 0, 3579, 3580, 7, 13, 0, 0, 3580, 3581, 7, 10, 0, 0, 3581, 3582, 7, 6, 0, 0, 3582, 3583, 7, 5, 0, 0, 3583, 3584, 7, 16, 0, 0, 3584, 3585, 7, 17, 0, 0, 3585, 3586, 7, 27, 0, 0, 3586, 3587, 7, 10, 0, 0, 3587, 620, 1, 0, 0, 0, 3588, 3589, 7, 13, 0, 0, 3589, 3590, 7, 10, 0, 0, 3590, 3591, 7, 6, 0, 0, 3591, 3592, 7, 10, 0, 0, 3592, 3593, 7, 5, 0, 0, 3593, 3594, 7, 9, 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, 7, 0, 0, 3599, 3600, 7, 5, 0, 0, 3600, 3601, 7, 15, 0, 0, 3601, 3602, 7, 10, 0, 0, 3602, 624, 1, 0, 0, 0, 3603, 3604, 7, 13, 0, 0, 3604, 3605, 7, 10, 0, 0, 3605, 3606, 7, 24, 0, 0, 3606, 3607, 7, 10, 0, 0, 3607, 3608, 7, 5, 0, 0, 3608, 3609, 7, 16, 0, 0, 3609, 3610, 7, 5, 0, 0, 3610, 3611, 7, 18, 0, 0, 3611, 3612, 7, 6, 0, 0, 3612, 3613, 7, 10, 0, 0, 3613, 626, 1, 0, 0, 0, 3614, 3615, 7, 13, 0, 0, 3615, 3616, 7, 10, 0, 0, 3616, 3617, 7, 24, 0, 0, 3617, 3618, 7, 6, 0, 0, 3618, 3619, 7, 5, 0, 0, 3619, 3620, 7, 14, 0, 0, 3620, 3621, 7, 10, 0, 0, 3621, 628, 1, 0, 0, 0, 3622, 3623, 7, 13, 0, 0, 3623, 3624, 7, 10, 0, 0, 3624, 3625, 7, 24, 0, 0, 3625, 3626, 7, 6, 0, 0, 3626, 3627, 7, 17, 0, 0, 3627, 3628, 7, 14, 0, 0, 3628, 3629, 7, 5, 0, 0, 3629, 630, 1, 0, 0, 0, 3630, 3631, 7, 13, 0, 0, 3631, 3632, 7, 10, 0, 0, 3632, 3633, 7, 9, 0, 0, 3633, 3634, 7, 10, 0, 0, 3634, 3635, 7, 16, 0, 0, 3635, 632, 1, 0, 0, 0, 3636, 3637, 7, 13, 0, 0, 3637, 3638, 7, 10, 0, 0, 3638, 3639, 7, 9, 0, 0, 3639, 3640, 7, 16, 0, 0, 3640, 3641, 7, 5, 0, 0, 3641, 3642, 7, 13, 0, 0, 3642, 3643, 7, 16, 0, 0, 3643, 634, 1, 0, 0, 0, 3644, 3645, 7, 13, 0, 0, 3645, 3646, 7, 10, 0, 0, 3646, 3647, 7, 9, 0, 0, 3647, 3648, 7, 16, 0, 0, 3648, 3649, 7, 13, 0, 0, 3649, 3650, 7, 17, 0, 0, 3650, 3651, 7, 14, 0, 0, 3651, 3652, 7, 16, 0, 0, 3652, 636, 1, 0, 0, 0, 3653, 3654, 7, 13, 0, 0, 3654, 3655, 7, 10, 0, 0, 3655, 3656, 7, 16, 0, 0, 3656, 3657, 7, 22, 0, 0, 3657, 3658, 7, 13, 0, 0, 3658, 3659, 7, 7, 0, 0, 3659, 3660, 7, 9, 0, 0, 3660, 638, 1, 0, 0, 0, 3661, 3662, 7, 13, 0, 0, 3662, 3663, 7, 10, 0, 0, 3663, 3664, 7, 27, 0, 0, 3664, 3665, 7, 19, 0, 0, 3665, 3666, 7, 21, 0, 0, 3666, 3667, 7, 10, 0, 0, 3667, 640, 1, 0, 0, 0, 3668, 3669, 7, 13, 0, 0, 3669, 3670, 7, 19, 0, 0, 3670, 3671, 7, 6, 0, 0, 3671, 3672, 7, 10, 0, 0, 3672, 642, 1, 0, 0, 0, 3673, 3674, 7, 13, 0, 0, 3674, 3675, 7, 19, 0, 0, 3675, 3676, 7, 6, 0, 0, 3676, 3677, 7, 6, 0, 0, 3677, 3678, 7, 18, 0, 0, 3678, 3679, 7, 5, 0, 0, 3679, 3680, 7, 14, 0, 0, 3680, 3681, 7, 21, 0, 0, 3681, 644, 1, 0, 0, 0, 3682, 3683, 7, 13, 0, 0, 3683, 3684, 7, 19, 0, 0, 3684, 3685, 7, 28, 0, 0, 3685, 3686, 7, 9, 0, 0, 3686, 646, 1, 0, 0, 0, 3687, 3688, 7, 13, 0, 0, 3688, 3689, 7, 22, 0, 0, 3689, 3690, 7, 6, 0, 0, 3690, 3691, 7, 10, 0, 0, 3691, 648, 1, 0, 0, 0, 3692, 3693, 7, 9, 0, 0, 3693, 3694, 7, 5, 0, 0, 3694, 3695, 7, 27, 0, 0, 3695, 3696, 7, 10, 0, 0, 3696, 3697, 7, 24, 0, 0, 3697, 3698, 7, 19, 0, 0, 3698, 3699, 7, 17, 0, 0, 3699, 3700, 7, 7, 0, 0, 3700, 3701, 7, 16, 0, 0, 3701, 650, 1, 0, 0, 0, 3702, 3703, 7, 9, 0, 0, 3703, 3704, 7, 14, 0, 0, 3704, 3705, 7, 20, 0, 0, 3705, 3706, 7, 10, 0, 0, 3706, 3707, 7, 15, 0, 0, 3707, 3708, 7, 5, 0, 0, 3708, 652, 1, 0, 0, 0, 3709, 3710, 7, 9, 0, 0, 3710, 3711, 7, 14, 0, 0, 3711, 3712, 7, 13, 0, 0, 3712, 3713, 7, 19, 0, 0, 3713, 3714, 7, 6, 0, 0, 3714, 3715, 7, 6, 0, 0, 3715, 654, 1, 0, 0, 0, 3716, 3717, 7, 9, 0, 0, 3717, 3718, 7, 10, 0, 0, 3718, 3719, 7, 5, 0, 0, 3719, 3720, 7, 13, 0, 0, 3720, 3721, 7, 14, 0, 0, 3721, 3722, 7, 20, 0, 0, 3722, 656, 1, 0, 0, 0, 3723, 3724, 7, 9, 0, 0, 3724, 3725, 7, 10, 0, 0, 3725, 3726, 7, 14, 0, 0, 3726, 3727, 7, 19, 0, 0, 3727, 3728, 7, 7, 0, 0, 3728, 3729, 7, 12, 0, 0, 3729, 658, 1, 0, 0, 0, 3730, 3731, 7, 9, 0, 0, 3731, 3732, 7, 10, 0, 0, 3732, 3733, 7, 14, 0, 0, 3733, 3734, 7, 22, 0, 0, 3734, 3735, 7, 13, 0, 0, 3735, 3736, 7, 17, 0, 0, 3736, 3737, 7, 16, 0, 0, 3737, 3738, 7, 8, 0, 0, 3738, 660, 1, 0, 0, 0, 3739, 3740, 7, 9, 0, 0, 3740, 3741, 7, 10, 0, 0, 3741, 3742, 7, 29, 0, 0, 3742, 3743, 7, 22, 0, 0, 3743, 3744, 7, 10, 0, 0, 3744, 3745, 7, 7, 0, 0, 3745, 3746, 7, 14, 0, 0, 3746, 3747, 7, 10, 0, 0, 3747, 662, 1, 0, 0, 0, 3748, 3749, 7, 9, 0, 0, 3749, 3750, 7, 10, 0, 0, 3750, 3751, 7, 29, 0, 0, 3751, 3752, 7, 22, 0, 0, 3752, 3753, 7, 10, 0, 0, 3753, 3754, 7, 7, 0, 0, 3754, 3755, 7, 14, 0, 0, 3755, 3756, 7, 10, 0, 0, 3756, 3757, 7, 9, 0, 0, 3757, 664, 1, 0, 0, 0, 3758, 3759, 7, 9, 0, 0, 3759, 3760, 7, 10, 0, 0, 3760, 3761, 7, 13, 0, 0, 3761, 3762, 7, 17, 0, 0, 3762, 3763, 7, 5, 0, 0, 3763, 3764, 7, 6, 0, 0, 3764, 3765, 7, 17, 0, 0, 3765, 3766, 7, 11, 0, 0, 3766, 3767, 7, 5, 0, 0, 3767, 3768, 7, 18, 0, 0, 3768, 3769, 7, 6, 0, 0, 3769, 3770, 7, 10, 0, 0, 3770, 666, 1, 0, 0, 0, 3771, 3772, 7, 9, 0, 0, 3772, 3773, 7, 10, 0, 0, 3773, 3774, 7, 13, 0, 0, 3774, 3775, 7, 27, 0, 0, 3775, 3776, 7, 10, 0, 0, 3776, 3777, 7, 13, 0, 0, 3777, 668, 1, 0, 0, 0, 3778, 3779, 7, 9, 0, 0, 3779, 3780, 7, 10, 0, 0, 3780, 3781, 7, 9, 0, 0, 3781, 3782, 7, 9, 0, 0, 3782, 3783, 7, 17, 0, 0, 3783, 3784, 7, 19, 0, 0, 3784, 3785, 7, 7, 0, 0, 3785, 670, 1, 0, 0, 0, 3786, 3787, 7, 9, 0, 0, 3787, 3788, 7, 10, 0, 0, 3788, 3789, 7, 16, 0, 0, 3789, 672, 1, 0, 0, 0, 3790, 3791, 7, 9, 0, 0, 3791, 3792, 7, 20, 0, 0, 3792, 3793, 7, 5, 0, 0, 3793, 3794, 7, 13, 0, 0, 3794, 3795, 7, 10, 0, 0, 3795, 674, 1, 0, 0, 0, 3796, 3797, 7, 9, 0, 0, 3797, 3798, 7, 20, 0, 0, 3798, 3799, 7, 19, 0, 0, 3799, 3800, 7, 28, 0, 0, 3800, 676, 1, 0, 0, 0, 3801, 3802, 7, 9, 0, 0, 3802, 3803, 7, 17, 0, 0, 3803, 3804, 7, 15, 0, 0, 3804, 3805, 7, 24, 0, 0, 3805, 3806, 7, 6, 0, 0, 3806, 3807, 7, 10, 0, 0, 3807, 678, 1, 0, 0, 0, 3808, 3809, 7, 9, 0, 0, 3809, 3810, 7, 7, 0, 0, 3810, 3811, 7, 5, 0, 0, 3811, 3812, 7, 24, 0, 0, 3812, 3813, 7, 9, 0, 0, 3813, 3814, 7, 20, 0, 0, 3814, 3815, 7, 19, 0, 0, 3815, 3816, 7, 16, 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, 18, 0, 0, 3821, 3822, 7, 6, 0, 0, 3822, 3823, 7, 10, 0, 0, 3823, 682, 1, 0, 0, 0, 3824, 3825, 7, 9, 0, 0, 3825, 3826, 7, 16, 0, 0, 3826, 3827, 7, 5, 0, 0, 3827, 3828, 7, 7, 0, 0, 3828, 3829, 7, 12, 0, 0, 3829, 3830, 7, 5, 0, 0, 3830, 3831, 7, 6, 0, 0, 3831, 3832, 7, 19, 0, 0, 3832, 3833, 7, 7, 0, 0, 3833, 3834, 7, 10, 0, 0, 3834, 684, 1, 0, 0, 0, 3835, 3836, 7, 9, 0, 0, 3836, 3837, 7, 16, 0, 0, 3837, 3838, 7, 5, 0, 0, 3838, 3839, 7, 13, 0, 0, 3839, 3840, 7, 16, 0, 0, 3840, 686, 1, 0, 0, 0, 3841, 3842, 7, 9, 0, 0, 3842, 3843, 7, 16, 0, 0, 3843, 3844, 7, 5, 0, 0, 3844, 3845, 7, 16, 0, 0, 3845, 3846, 7, 10, 0, 0, 3846, 3847, 7, 15, 0, 0, 3847, 3848, 7, 10, 0, 0, 3848, 3849, 7, 7, 0, 0, 3849, 3850, 7, 16, 0, 0, 3850, 688, 1, 0, 0, 0, 3851, 3852, 7, 9, 0, 0, 3852, 3853, 7, 16, 0, 0, 3853, 3854, 7, 5, 0, 0, 3854, 3855, 7, 16, 0, 0, 3855, 3856, 7, 17, 0, 0, 3856, 3857, 7, 9, 0, 0, 3857, 3858, 7, 16, 0, 0, 3858, 3859, 7, 17, 0, 0, 3859, 3860, 7, 14, 0, 0, 3860, 3861, 7, 9, 0, 0, 3861, 690, 1, 0, 0, 0, 3862, 3863, 7, 9, 0, 0, 3863, 3864, 7, 16, 0, 0, 3864, 3865, 7, 12, 0, 0, 3865, 3866, 7, 17, 0, 0, 3866, 3867, 7, 7, 0, 0, 3867, 692, 1, 0, 0, 0, 3868, 3869, 7, 9, 0, 0, 3869, 3870, 7, 16, 0, 0, 3870, 3871, 7, 12, 0, 0, 3871, 3872, 7, 19, 0, 0, 3872, 3873, 7, 22, 0, 0, 3873, 3874, 7, 16, 0, 0, 3874, 694, 1, 0, 0, 0, 3875, 3876, 7, 9, 0, 0, 3876, 3877, 7, 16, 0, 0, 3877, 3878, 7, 19, 0, 0, 3878, 3879, 7, 13, 0, 0, 3879, 3880, 7, 5, 0, 0, 3880, 3881, 7, 23, 0, 0, 3881, 3882, 7, 10, 0, 0, 3882, 696, 1, 0, 0, 0, 3883, 3884, 7, 9, 0, 0, 3884, 3885, 7, 16, 0, 0, 3885, 3886, 7, 13, 0, 0, 3886, 3887, 7, 17, 0, 0, 3887, 3888, 7, 14, 0, 0, 3888, 3889, 7, 16, 0, 0, 3889, 698, 1, 0, 0, 0, 3890, 3891, 7, 9, 0, 0, 3891, 3892, 7, 16, 0, 0, 3892, 3893, 7, 13, 0, 0, 3893, 3894, 7, 17, 0, 0, 3894, 3895, 7, 24, 0, 0, 3895, 700, 1, 0, 0, 0, 3896, 3897, 7, 9, 0, 0, 3897, 3898, 7, 8, 0, 0, 3898, 3899, 7, 9, 0, 0, 3899, 3900, 7, 17, 0, 0, 3900, 3901, 7, 12, 0, 0, 3901, 702, 1, 0, 0, 0, 3902, 3903, 7, 9, 0, 0, 3903, 3904, 7, 8, 0, 0, 3904, 3905, 7, 9, 0, 0, 3905, 3906, 7, 16, 0, 0, 3906, 3907, 7, 10, 0, 0, 3907, 3908, 7, 15, 0, 0, 3908, 704, 1, 0, 0, 0, 3909, 3910, 7, 16, 0, 0, 3910, 3911, 7, 5, 0, 0, 3911, 3912, 7, 18, 0, 0, 3912, 3913, 7, 6, 0, 0, 3913, 3914, 7, 10, 0, 0, 3914, 3915, 7, 9, 0, 0, 3915, 706, 1, 0, 0, 0, 3916, 3917, 7, 16, 0, 0, 3917, 3918, 7, 5, 0, 0, 3918, 3919, 7, 18, 0, 0, 3919, 3920, 7, 6, 0, 0, 3920, 3921, 7, 10, 0, 0, 3921, 3922, 7, 9, 0, 0, 3922, 3923, 7, 24, 0, 0, 3923, 3924, 7, 5, 0, 0, 3924, 3925, 7, 14, 0, 0, 3925, 3926, 7, 10, 0, 0, 3926, 708, 1, 0, 0, 0, 3927, 3928, 7, 16, 0, 0, 3928, 3929, 7, 10, 0, 0, 3929, 3930, 7, 15, 0, 0, 3930, 3931, 7, 24, 0, 0, 3931, 710, 1, 0, 0, 0, 3932, 3933, 7, 16, 0, 0, 3933, 3934, 7, 10, 0, 0, 3934, 3935, 7, 15, 0, 0, 3935, 3936, 7, 24, 0, 0, 3936, 3937, 7, 6, 0, 0, 3937, 3938, 7, 5, 0, 0, 3938, 3939, 7, 16, 0, 0, 3939, 3940, 7, 10, 0, 0, 3940, 712, 1, 0, 0, 0, 3941, 3942, 7, 16, 0, 0, 3942, 3943, 7, 10, 0, 0, 3943, 3944, 7, 15, 0, 0, 3944, 3945, 7, 24, 0, 0, 3945, 3946, 7, 19, 0, 0, 3946, 3947, 7, 13, 0, 0, 3947, 3948, 7, 5, 0, 0, 3948, 3949, 7, 13, 0, 0, 3949, 3950, 7, 8, 0, 0, 3950, 714, 1, 0, 0, 0, 3951, 3952, 7, 16, 0, 0, 3952, 3953, 7, 10, 0, 0, 3953, 3954, 7, 26, 0, 0, 3954, 3955, 7, 16, 0, 0, 3955, 716, 1, 0, 0, 0, 3956, 3957, 7, 16, 0, 0, 3957, 3958, 7, 13, 0, 0, 3958, 3959, 7, 5, 0, 0, 3959, 3960, 7, 7, 0, 0, 3960, 3961, 7, 9, 0, 0, 3961, 3962, 7, 5, 0, 0, 3962, 3963, 7, 14, 0, 0, 3963, 3964, 7, 16, 0, 0, 3964, 3965, 7, 17, 0, 0, 3965, 3966, 7, 19, 0, 0, 3966, 3967, 7, 7, 0, 0, 3967, 718, 1, 0, 0, 0, 3968, 3969, 7, 16, 0, 0, 3969, 3970, 7, 13, 0, 0, 3970, 3971, 7, 17, 0, 0, 3971, 3972, 7, 23, 0, 0, 3972, 3973, 7, 23, 0, 0, 3973, 3974, 7, 10, 0, 0, 3974, 3975, 7, 13, 0, 0, 3975, 720, 1, 0, 0, 0, 3976, 3977, 7, 16, 0, 0, 3977, 3978, 7, 13, 0, 0, 3978, 3979, 7, 22, 0, 0, 3979, 3980, 7, 7, 0, 0, 3980, 3981, 7, 14, 0, 0, 3981, 3982, 7, 5, 0, 0, 3982, 3983, 7, 16, 0, 0, 3983, 3984, 7, 10, 0, 0, 3984, 722, 1, 0, 0, 0, 3985, 3986, 7, 16, 0, 0, 3986, 3987, 7, 13, 0, 0, 3987, 3988, 7, 22, 0, 0, 3988, 3989, 7, 9, 0, 0, 3989, 3990, 7, 16, 0, 0, 3990, 3991, 7, 10, 0, 0, 3991, 3992, 7, 12, 0, 0, 3992, 724, 1, 0, 0, 0, 3993, 3994, 7, 16, 0, 0, 3994, 3995, 7, 8, 0, 0, 3995, 3996, 7, 24, 0, 0, 3996, 3997, 7, 10, 0, 0, 3997, 726, 1, 0, 0, 0, 3998, 3999, 7, 16, 0, 0, 3999, 4000, 7, 8, 0, 0, 4000, 4001, 7, 24, 0, 0, 4001, 4002, 7, 10, 0, 0, 4002, 4003, 7, 9, 0, 0, 4003, 728, 1, 0, 0, 0, 4004, 4005, 7, 22, 0, 0, 4005, 4006, 7, 7, 0, 0, 4006, 4007, 7, 18, 0, 0, 4007, 4008, 7, 19, 0, 0, 4008, 4009, 7, 22, 0, 0, 4009, 4010, 7, 7, 0, 0, 4010, 4011, 7, 12, 0, 0, 4011, 4012, 7, 10, 0, 0, 4012, 4013, 7, 12, 0, 0, 4013, 730, 1, 0, 0, 0, 4014, 4015, 7, 22, 0, 0, 4015, 4016, 7, 7, 0, 0, 4016, 4017, 7, 14, 0, 0, 4017, 4018, 7, 19, 0, 0, 4018, 4019, 7, 15, 0, 0, 4019, 4020, 7, 15, 0, 0, 4020, 4021, 7, 17, 0, 0, 4021, 4022, 7, 16, 0, 0, 4022, 4023, 7, 16, 0, 0, 4023, 4024, 7, 10, 0, 0, 4024, 4025, 7, 12, 0, 0, 4025, 732, 1, 0, 0, 0, 4026, 4027, 7, 22, 0, 0, 4027, 4028, 7, 7, 0, 0, 4028, 4029, 7, 10, 0, 0, 4029, 4030, 7, 7, 0, 0, 4030, 4031, 7, 14, 0, 0, 4031, 4032, 7, 13, 0, 0, 4032, 4033, 7, 8, 0, 0, 4033, 4034, 7, 24, 0, 0, 4034, 4035, 7, 16, 0, 0, 4035, 4036, 7, 10, 0, 0, 4036, 4037, 7, 12, 0, 0, 4037, 734, 1, 0, 0, 0, 4038, 4039, 7, 22, 0, 0, 4039, 4040, 7, 7, 0, 0, 4040, 4041, 7, 21, 0, 0, 4041, 4042, 7, 7, 0, 0, 4042, 4043, 7, 19, 0, 0, 4043, 4044, 7, 28, 0, 0, 4044, 4045, 7, 7, 0, 0, 4045, 736, 1, 0, 0, 0, 4046, 4047, 7, 22, 0, 0, 4047, 4048, 7, 7, 0, 0, 4048, 4049, 7, 6, 0, 0, 4049, 4050, 7, 17, 0, 0, 4050, 4051, 7, 9, 0, 0, 4051, 4052, 7, 16, 0, 0, 4052, 4053, 7, 10, 0, 0, 4053, 4054, 7, 7, 0, 0, 4054, 738, 1, 0, 0, 0, 4055, 4056, 7, 22, 0, 0, 4056, 4057, 7, 7, 0, 0, 4057, 4058, 7, 6, 0, 0, 4058, 4059, 7, 19, 0, 0, 4059, 4060, 7, 23, 0, 0, 4060, 4061, 7, 23, 0, 0, 4061, 4062, 7, 10, 0, 0, 4062, 4063, 7, 12, 0, 0, 4063, 740, 1, 0, 0, 0, 4064, 4065, 7, 22, 0, 0, 4065, 4066, 7, 7, 0, 0, 4066, 4067, 7, 16, 0, 0, 4067, 4068, 7, 17, 0, 0, 4068, 4069, 7, 6, 0, 0, 4069, 742, 1, 0, 0, 0, 4070, 4071, 7, 22, 0, 0, 4071, 4072, 7, 24, 0, 0, 4072, 4073, 7, 12, 0, 0, 4073, 4074, 7, 5, 0, 0, 4074, 4075, 7, 16, 0, 0, 4075, 4076, 7, 10, 0, 0, 4076, 744, 1, 0, 0, 0, 4077, 4078, 7, 27, 0, 0, 4078, 4079, 7, 5, 0, 0, 4079, 4080, 7, 14, 0, 0, 4080, 4081, 7, 22, 0, 0, 4081, 4082, 7, 22, 0, 0, 4082, 4083, 7, 15, 0, 0, 4083, 746, 1, 0, 0, 0, 4084, 4085, 7, 27, 0, 0, 4085, 4086, 7, 5, 0, 0, 4086, 4087, 7, 6, 0, 0, 4087, 4088, 7, 17, 0, 0, 4088, 4089, 7, 12, 0, 0, 4089, 748, 1, 0, 0, 0, 4090, 4091, 7, 27, 0, 0, 4091, 4092, 7, 5, 0, 0, 4092, 4093, 7, 6, 0, 0, 4093, 4094, 7, 17, 0, 0, 4094, 4095, 7, 12, 0, 0, 4095, 4096, 7, 5, 0, 0, 4096, 4097, 7, 16, 0, 0, 4097, 4098, 7, 10, 0, 0, 4098, 750, 1, 0, 0, 0, 4099, 4100, 7, 27, 0, 0, 4100, 4101, 7, 5, 0, 0, 4101, 4102, 7, 6, 0, 0, 4102, 4103, 7, 17, 0, 0, 4103, 4104, 7, 12, 0, 0, 4104, 4105, 7, 5, 0, 0, 4105, 4106, 7, 16, 0, 0, 4106, 4107, 7, 19, 0, 0, 4107, 4108, 7, 13, 0, 0, 4108, 752, 1, 0, 0, 0, 4109, 4110, 7, 27, 0, 0, 4110, 4111, 7, 5, 0, 0, 4111, 4112, 7, 13, 0, 0, 4112, 4113, 7, 8, 0, 0, 4113, 4114, 7, 17, 0, 0, 4114, 4115, 7, 7, 0, 0, 4115, 4116, 7, 23, 0, 0, 4116, 754, 1, 0, 0, 0, 4117, 4118, 7, 27, 0, 0, 4118, 4119, 7, 10, 0, 0, 4119, 4120, 7, 13, 0, 0, 4120, 4121, 7, 9, 0, 0, 4121, 4122, 7, 17, 0, 0, 4122, 4123, 7, 19, 0, 0, 4123, 4124, 7, 7, 0, 0, 4124, 756, 1, 0, 0, 0, 4125, 4126, 7, 27, 0, 0, 4126, 4127, 7, 17, 0, 0, 4127, 4128, 7, 10, 0, 0, 4128, 4129, 7, 28, 0, 0, 4129, 758, 1, 0, 0, 0, 4130, 4131, 7, 27, 0, 0, 4131, 4132, 7, 19, 0, 0, 4132, 4133, 7, 6, 0, 0, 4133, 4134, 7, 5, 0, 0, 4134, 4135, 7, 16, 0, 0, 4135, 4136, 7, 17, 0, 0, 4136, 4137, 7, 6, 0, 0, 4137, 4138, 7, 10, 0, 0, 4138, 760, 1, 0, 0, 0, 4139, 4140, 7, 28, 0, 0, 4140, 4141, 7, 20, 0, 0, 4141, 4142, 7, 17, 0, 0, 4142, 4143, 7, 16, 0, 0, 4143, 4144, 7, 10, 0, 0, 4144, 4145, 7, 9, 0, 0, 4145, 4146, 7, 24, 0, 0, 4146, 4147, 7, 5, 0, 0, 4147, 4148, 7, 14, 0, 0, 4148, 4149, 7, 10, 0, 0, 4149, 762, 1, 0, 0, 0, 4150, 4151, 7, 28, 0, 0, 4151, 4152, 7, 17, 0, 0, 4152, 4153, 7, 16, 0, 0, 4153, 4154, 7, 20, 0, 0, 4154, 4155, 7, 19, 0, 0, 4155, 4156, 7, 22, 0, 0, 4156, 4157, 7, 16, 0, 0, 4157, 764, 1, 0, 0, 0, 4158, 4159, 7, 28, 0, 0, 4159, 4160, 7, 19, 0, 0, 4160, 4161, 7, 13, 0, 0, 4161, 4162, 7, 21, 0, 0, 4162, 766, 1, 0, 0, 0, 4163, 4164, 7, 28, 0, 0, 4164, 4165, 7, 13, 0, 0, 4165, 4166, 7, 5, 0, 0, 4166, 4167, 7, 24, 0, 0, 4167, 4168, 7, 24, 0, 0, 4168, 4169, 7, 10, 0, 0, 4169, 4170, 7, 13, 0, 0, 4170, 768, 1, 0, 0, 0, 4171, 4172, 7, 28, 0, 0, 4172, 4173, 7, 13, 0, 0, 4173, 4174, 7, 17, 0, 0, 4174, 4175, 7, 16, 0, 0, 4175, 4176, 7, 10, 0, 0, 4176, 770, 1, 0, 0, 0, 4177, 4178, 7, 26, 0, 0, 4178, 4179, 7, 15, 0, 0, 4179, 4180, 7, 6, 0, 0, 4180, 772, 1, 0, 0, 0, 4181, 4182, 7, 8, 0, 0, 4182, 4183, 7, 10, 0, 0, 4183, 4184, 7, 5, 0, 0, 4184, 4185, 7, 13, 0, 0, 4185, 774, 1, 0, 0, 0, 4186, 4187, 7, 8, 0, 0, 4187, 4188, 7, 10, 0, 0, 4188, 4189, 7, 9, 0, 0, 4189, 776, 1, 0, 0, 0, 4190, 4191, 7, 11, 0, 0, 4191, 4192, 7, 19, 0, 0, 4192, 4193, 7, 7, 0, 0, 4193, 4194, 7, 10, 0, 0, 4194, 778, 1, 0, 0, 0, 4195, 4196, 7, 18, 0, 0, 4196, 4197, 7, 10, 0, 0, 4197, 4198, 7, 16, 0, 0, 4198, 4199, 7, 28, 0, 0, 4199, 4200, 7, 10, 0, 0, 4200, 4201, 7, 10, 0, 0, 4201, 4202, 7, 7, 0, 0, 4202, 780, 1, 0, 0, 0, 4203, 4204, 7, 18, 0, 0, 4204, 4205, 7, 17, 0, 0, 4205, 4206, 7, 23, 0, 0, 4206, 4207, 7, 17, 0, 0, 4207, 4208, 7, 7, 0, 0, 4208, 4209, 7, 16, 0, 0, 4209, 782, 1, 0, 0, 0, 4210, 4211, 7, 18, 0, 0, 4211, 4212, 7, 17, 0, 0, 4212, 4213, 7, 16, 0, 0, 4213, 784, 1, 0, 0, 0, 4214, 4215, 7, 18, 0, 0, 4215, 4216, 7, 19, 0, 0, 4216, 4217, 7, 19, 0, 0, 4217, 4218, 7, 6, 0, 0, 4218, 4219, 7, 10, 0, 0, 4219, 4220, 7, 5, 0, 0, 4220, 4221, 7, 7, 0, 0, 4221, 786, 1, 0, 0, 0, 4222, 4223, 7, 14, 0, 0, 4223, 4224, 7, 20, 0, 0, 4224, 4225, 7, 5, 0, 0, 4225, 4226, 7, 13, 0, 0, 4226, 788, 1, 0, 0, 0, 4227, 4228, 7, 14, 0, 0, 4228, 4229, 7, 20, 0, 0, 4229, 4230, 7, 5, 0, 0, 4230, 4231, 7, 13, 0, 0, 4231, 4232, 7, 5, 0, 0, 4232, 4233, 7, 14, 0, 0, 4233, 4234, 7, 16, 0, 0, 4234, 4235, 7, 10, 0, 0, 4235, 4236, 7, 13, 0, 0, 4236, 790, 1, 0, 0, 0, 4237, 4238, 7, 14, 0, 0, 4238, 4239, 7, 19, 0, 0, 4239, 4240, 7, 5, 0, 0, 4240, 4241, 7, 6, 0, 0, 4241, 4242, 7, 10, 0, 0, 4242, 4243, 7, 9, 0, 0, 4243, 4244, 7, 14, 0, 0, 4244, 4245, 7, 10, 0, 0, 4245, 792, 1, 0, 0, 0, 4246, 4247, 7, 12, 0, 0, 4247, 4248, 7, 10, 0, 0, 4248, 4249, 7, 14, 0, 0, 4249, 794, 1, 0, 0, 0, 4250, 4251, 7, 12, 0, 0, 4251, 4252, 7, 10, 0, 0, 4252, 4253, 7, 14, 0, 0, 4253, 4254, 7, 17, 0, 0, 4254, 4255, 7, 15, 0, 0, 4255, 4256, 7, 5, 0, 0, 4256, 4257, 7, 6, 0, 0, 4257, 796, 1, 0, 0, 0, 4258, 4259, 7, 10, 0, 0, 4259, 4260, 7, 26, 0, 0, 4260, 4261, 7, 17, 0, 0, 4261, 4262, 7, 9, 0, 0, 4262, 4263, 7, 16, 0, 0, 4263, 4264, 7, 9, 0, 0, 4264, 798, 1, 0, 0, 0, 4265, 4266, 7, 10, 0, 0, 4266, 4267, 7, 26, 0, 0, 4267, 4268, 7, 16, 0, 0, 4268, 4269, 7, 13, 0, 0, 4269, 4270, 7, 5, 0, 0, 4270, 4271, 7, 14, 0, 0, 4271, 4272, 7, 16, 0, 0, 4272, 800, 1, 0, 0, 0, 4273, 4274, 7, 25, 0, 0, 4274, 4275, 7, 6, 0, 0, 4275, 4276, 7, 19, 0, 0, 4276, 4277, 7, 5, 0, 0, 4277, 4278, 7, 16, 0, 0, 4278, 802, 1, 0, 0, 0, 4279, 4280, 7, 23, 0, 0, 4280, 4281, 7, 13, 0, 0, 4281, 4282, 7, 10, 0, 0, 4282, 4283, 7, 5, 0, 0, 4283, 4284, 7, 16, 0, 0, 4284, 4285, 7, 10, 0, 0, 4285, 4286, 7, 9, 0, 0, 4286, 4287, 7, 16, 0, 0, 4287, 804, 1, 0, 0, 0, 4288, 4289, 7, 17, 0, 0, 4289, 4290, 7, 7, 0, 0, 4290, 4291, 7, 19, 0, 0, 4291, 4292, 7, 22, 0, 0, 4292, 4293, 7, 16, 0, 0, 4293, 806, 1, 0, 0, 0, 4294, 4295, 7, 17, 0, 0, 4295, 4296, 7, 7, 0, 0, 4296, 4297, 7, 16, 0, 0, 4297, 808, 1, 0, 0, 0, 4298, 4299, 7, 17, 0, 0, 4299, 4300, 7, 7, 0, 0, 4300, 4301, 7, 16, 0, 0, 4301, 4302, 7, 10, 0, 0, 4302, 4303, 7, 23, 0, 0, 4303, 4304, 7, 10, 0, 0, 4304, 4305, 7, 13, 0, 0, 4305, 810, 1, 0, 0, 0, 4306, 4307, 7, 17, 0, 0, 4307, 4308, 7, 7, 0, 0, 4308, 4309, 7, 16, 0, 0, 4309, 4310, 7, 10, 0, 0, 4310, 4311, 7, 13, 0, 0, 4311, 4312, 7, 27, 0, 0, 4312, 4313, 7, 5, 0, 0, 4313, 4314, 7, 6, 0, 0, 4314, 812, 1, 0, 0, 0, 4315, 4316, 7, 6, 0, 0, 4316, 4317, 7, 10, 0, 0, 4317, 4318, 7, 5, 0, 0, 4318, 4319, 7, 9, 0, 0, 4319, 4320, 7, 16, 0, 0, 4320, 814, 1, 0, 0, 0, 4321, 4322, 7, 7, 0, 0, 4322, 4323, 7, 5, 0, 0, 4323, 4324, 7, 16, 0, 0, 4324, 4325, 7, 17, 0, 0, 4325, 4326, 7, 19, 0, 0, 4326, 4327, 7, 7, 0, 0, 4327, 4328, 7, 5, 0, 0, 4328, 4329, 7, 6, 0, 0, 4329, 816, 1, 0, 0, 0, 4330, 4331, 7, 7, 0, 0, 4331, 4332, 7, 14, 0, 0, 4332, 4333, 7, 20, 0, 0, 4333, 4334, 7, 5, 0, 0, 4334, 4335, 7, 13, 0, 0, 4335, 818, 1, 0, 0, 0, 4336, 4337, 7, 7, 0, 0, 4337, 4338, 7, 19, 0, 0, 4338, 4339, 7, 7, 0, 0, 4339, 4340, 7, 10, 0, 0, 4340, 820, 1, 0, 0, 0, 4341, 4342, 7, 7, 0, 0, 4342, 4343, 7, 22, 0, 0, 4343, 4344, 7, 6, 0, 0, 4344, 4345, 7, 6, 0, 0, 4345, 4346, 7, 17, 0, 0, 4346, 4347, 7, 25, 0, 0, 4347, 822, 1, 0, 0, 0, 4348, 4349, 7, 7, 0, 0, 4349, 4350, 7, 22, 0, 0, 4350, 4351, 7, 15, 0, 0, 4351, 4352, 7, 10, 0, 0, 4352, 4353, 7, 13, 0, 0, 4353, 4354, 7, 17, 0, 0, 4354, 4355, 7, 14, 0, 0, 4355, 824, 1, 0, 0, 0, 4356, 4357, 7, 19, 0, 0, 4357, 4358, 7, 27, 0, 0, 4358, 4359, 7, 10, 0, 0, 4359, 4360, 7, 13, 0, 0, 4360, 4361, 7, 6, 0, 0, 4361, 4362, 7, 5, 0, 0, 4362, 4363, 7, 8, 0, 0, 4363, 826, 1, 0, 0, 0, 4364, 4365, 7, 24, 0, 0, 4365, 4366, 7, 19, 0, 0, 4366, 4367, 7, 9, 0, 0, 4367, 4368, 7, 17, 0, 0, 4368, 4369, 7, 16, 0, 0, 4369, 4370, 7, 17, 0, 0, 4370, 4371, 7, 19, 0, 0, 4371, 4372, 7, 7, 0, 0, 4372, 828, 1, 0, 0, 0, 4373, 4374, 7, 24, 0, 0, 4374, 4375, 7, 13, 0, 0, 4375, 4376, 7, 10, 0, 0, 4376, 4377, 7, 14, 0, 0, 4377, 4378, 7, 17, 0, 0, 4378, 4379, 7, 9, 0, 0, 4379, 4380, 7, 17, 0, 0, 4380, 4381, 7, 19, 0, 0, 4381, 4382, 7, 7, 0, 0, 4382, 830, 1, 0, 0, 0, 4383, 4384, 7, 13, 0, 0, 4384, 4385, 7, 10, 0, 0, 4385, 4386, 7, 5, 0, 0, 4386, 4387, 7, 6, 0, 0, 4387, 832, 1, 0, 0, 0, 4388, 4389, 7, 13, 0, 0, 4389, 4390, 7, 19, 0, 0, 4390, 4391, 7, 28, 0, 0, 4391, 834, 1, 0, 0, 0, 4392, 4393, 7, 9, 0, 0, 4393, 4394, 7, 10, 0, 0, 4394, 4395, 7, 16, 0, 0, 4395, 4396, 7, 19, 0, 0, 4396, 4397, 7, 25, 0, 0, 4397, 836, 1, 0, 0, 0, 4398, 4399, 7, 9, 0, 0, 4399, 4400, 7, 15, 0, 0, 4400, 4401, 7, 5, 0, 0, 4401, 4402, 7, 6, 0, 0, 4402, 4403, 7, 6, 0, 0, 4403, 4404, 7, 17, 0, 0, 4404, 4405, 7, 7, 0, 0, 4405, 4406, 7, 16, 0, 0, 4406, 838, 1, 0, 0, 0, 4407, 4408, 7, 9, 0, 0, 4408, 4409, 7, 22, 0, 0, 4409, 4410, 7, 18, 0, 0, 4410, 4411, 7, 9, 0, 0, 4411, 4412, 7, 16, 0, 0, 4412, 4413, 7, 13, 0, 0, 4413, 4414, 7, 17, 0, 0, 4414, 4415, 7, 7, 0, 0, 4415, 4416, 7, 23, 0, 0, 4416, 840, 1, 0, 0, 0, 4417, 4418, 7, 16, 0, 0, 4418, 4419, 7, 17, 0, 0, 4419, 4420, 7, 15, 0, 0, 4420, 4421, 7, 10, 0, 0, 4421, 842, 1, 0, 0, 0, 4422, 4423, 7, 16, 0, 0, 4423, 4424, 7, 17, 0, 0, 4424, 4425, 7, 15, 0, 0, 4425, 4426, 7, 10, 0, 0, 4426, 4427, 7, 9, 0, 0, 4427, 4428, 7, 16, 0, 0, 4428, 4429, 7, 5, 0, 0, 4429, 4430, 7, 15, 0, 0, 4430, 4431, 7, 24, 0, 0, 4431, 844, 1, 0, 0, 0, 4432, 4433, 7, 16, 0, 0, 4433, 4434, 7, 13, 0, 0, 4434, 4435, 7, 10, 0, 0, 4435, 4436, 7, 5, 0, 0, 4436, 4437, 7, 16, 0, 0, 4437, 846, 1, 0, 0, 0, 4438, 4439, 7, 16, 0, 0, 4439, 4440, 7, 13, 0, 0, 4440, 4441, 7, 17, 0, 0, 4441, 4442, 7, 15, 0, 0, 4442, 848, 1, 0, 0, 0, 4443, 4444, 7, 27, 0, 0, 4444, 4445, 7, 5, 0, 0, 4445, 4446, 7, 6, 0, 0, 4446, 4447, 7, 22, 0, 0, 4447, 4448, 7, 10, 0, 0, 4448, 4449, 7, 9, 0, 0, 4449, 850, 1, 0, 0, 0, 4450, 4451, 7, 27, 0, 0, 4451, 4452, 7, 5, 0, 0, 4452, 4453, 7, 13, 0, 0, 4453, 4454, 7, 14, 0, 0, 4454, 4455, 7, 20, 0, 0, 4455, 4456, 7, 5, 0, 0, 4456, 4457, 7, 13, 0, 0, 4457, 852, 1, 0, 0, 0, 4458, 4459, 7, 26, 0, 0, 4459, 4460, 7, 15, 0, 0, 4460, 4461, 7, 6, 0, 0, 4461, 4462, 7, 5, 0, 0, 4462, 4463, 7, 16, 0, 0, 4463, 4464, 7, 16, 0, 0, 4464, 4465, 7, 13, 0, 0, 4465, 4466, 7, 17, 0, 0, 4466, 4467, 7, 18, 0, 0, 4467, 4468, 7, 22, 0, 0, 4468, 4469, 7, 16, 0, 0, 4469, 4470, 7, 10, 0, 0, 4470, 4471, 7, 9, 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, 7, 14, 0, 0, 4476, 4477, 7, 19, 0, 0, 4477, 4478, 7, 15, 0, 0, 4478, 4479, 7, 15, 0, 0, 4479, 4480, 7, 10, 0, 0, 4480, 4481, 7, 7, 0, 0, 4481, 4482, 7, 16, 0, 0, 4482, 856, 1, 0, 0, 0, 4483, 4484, 7, 26, 0, 0, 4484, 4485, 7, 15, 0, 0, 4485, 4486, 7, 6, 0, 0, 4486, 4487, 7, 5, 0, 0, 4487, 4488, 7, 23, 0, 0, 4488, 4489, 7, 23, 0, 0, 4489, 858, 1, 0, 0, 0, 4490, 4491, 7, 26, 0, 0, 4491, 4492, 7, 15, 0, 0, 4492, 4493, 7, 6, 0, 0, 4493, 4494, 5, 95, 0, 0, 4494, 4495, 7, 17, 0, 0, 4495, 4496, 7, 9, 0, 0, 4496, 4497, 5, 95, 0, 0, 4497, 4498, 7, 28, 0, 0, 4498, 4499, 7, 10, 0, 0, 4499, 4500, 7, 6, 0, 0, 4500, 4501, 7, 6, 0, 0, 4501, 4502, 5, 95, 0, 0, 4502, 4503, 7, 25, 0, 0, 4503, 4504, 7, 19, 0, 0, 4504, 4505, 7, 13, 0, 0, 4505, 4506, 7, 15, 0, 0, 4506, 4507, 7, 10, 0, 0, 4507, 4508, 7, 12, 0, 0, 4508, 860, 1, 0, 0, 0, 4509, 4510, 7, 26, 0, 0, 4510, 4511, 7, 15, 0, 0, 4511, 4512, 7, 6, 0, 0, 4512, 4513, 5, 95, 0, 0, 4513, 4514, 7, 17, 0, 0, 4514, 4515, 7, 9, 0, 0, 4515, 4516, 5, 95, 0, 0, 4516, 4517, 7, 28, 0, 0, 4517, 4518, 7, 10, 0, 0, 4518, 4519, 7, 6, 0, 0, 4519, 4520, 7, 6, 0, 0, 4520, 4521, 5, 95, 0, 0, 4521, 4522, 7, 25, 0, 0, 4522, 4523, 7, 19, 0, 0, 4523, 4524, 7, 13, 0, 0, 4524, 4525, 7, 15, 0, 0, 4525, 4526, 7, 10, 0, 0, 4526, 4527, 7, 12, 0, 0, 4527, 4528, 5, 95, 0, 0, 4528, 4529, 7, 12, 0, 0, 4529, 4530, 7, 19, 0, 0, 4530, 4531, 7, 14, 0, 0, 4531, 4532, 7, 22, 0, 0, 4532, 4533, 7, 15, 0, 0, 4533, 4534, 7, 10, 0, 0, 4534, 4535, 7, 7, 0, 0, 4535, 4536, 7, 16, 0, 0, 4536, 862, 1, 0, 0, 0, 4537, 4538, 7, 26, 0, 0, 4538, 4539, 7, 15, 0, 0, 4539, 4540, 7, 6, 0, 0, 4540, 4541, 5, 95, 0, 0, 4541, 4542, 7, 17, 0, 0, 4542, 4543, 7, 9, 0, 0, 4543, 4544, 5, 95, 0, 0, 4544, 4545, 7, 28, 0, 0, 4545, 4546, 7, 10, 0, 0, 4546, 4547, 7, 6, 0, 0, 4547, 4548, 7, 6, 0, 0, 4548, 4549, 5, 95, 0, 0, 4549, 4550, 7, 25, 0, 0, 4550, 4551, 7, 19, 0, 0, 4551, 4552, 7, 13, 0, 0, 4552, 4553, 7, 15, 0, 0, 4553, 4554, 7, 10, 0, 0, 4554, 4555, 7, 12, 0, 0, 4555, 4556, 5, 95, 0, 0, 4556, 4557, 7, 14, 0, 0, 4557, 4558, 7, 19, 0, 0, 4558, 4559, 7, 7, 0, 0, 4559, 4560, 7, 16, 0, 0, 4560, 4561, 7, 10, 0, 0, 4561, 4562, 7, 7, 0, 0, 4562, 4563, 7, 16, 0, 0, 4563, 864, 1, 0, 0, 0, 4564, 4565, 7, 26, 0, 0, 4565, 4566, 7, 24, 0, 0, 4566, 4567, 7, 5, 0, 0, 4567, 4568, 7, 16, 0, 0, 4568, 4569, 7, 20, 0, 0, 4569, 866, 1, 0, 0, 0, 4570, 4571, 7, 26, 0, 0, 4571, 4572, 7, 24, 0, 0, 4572, 4573, 7, 5, 0, 0, 4573, 4574, 7, 16, 0, 0, 4574, 4575, 7, 20, 0, 0, 4575, 4576, 5, 95, 0, 0, 4576, 4577, 7, 10, 0, 0, 4577, 4578, 7, 26, 0, 0, 4578, 4579, 7, 17, 0, 0, 4579, 4580, 7, 9, 0, 0, 4580, 4581, 7, 16, 0, 0, 4581, 4582, 7, 9, 0, 0, 4582, 868, 1, 0, 0, 0, 4583, 4584, 7, 26, 0, 0, 4584, 4585, 7, 15, 0, 0, 4585, 4586, 7, 6, 0, 0, 4586, 4587, 7, 14, 0, 0, 4587, 4588, 7, 19, 0, 0, 4588, 4589, 7, 7, 0, 0, 4589, 4590, 7, 14, 0, 0, 4590, 4591, 7, 5, 0, 0, 4591, 4592, 7, 16, 0, 0, 4592, 870, 1, 0, 0, 0, 4593, 4594, 7, 26, 0, 0, 4594, 4595, 7, 15, 0, 0, 4595, 4596, 7, 6, 0, 0, 4596, 4597, 7, 10, 0, 0, 4597, 4598, 7, 6, 0, 0, 4598, 4599, 7, 10, 0, 0, 4599, 4600, 7, 15, 0, 0, 4600, 4601, 7, 10, 0, 0, 4601, 4602, 7, 7, 0, 0, 4602, 4603, 7, 16, 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, 10, 0, 0, 4608, 4609, 7, 26, 0, 0, 4609, 4610, 7, 17, 0, 0, 4610, 4611, 7, 9, 0, 0, 4611, 4612, 7, 16, 0, 0, 4612, 4613, 7, 9, 0, 0, 4613, 874, 1, 0, 0, 0, 4614, 4615, 7, 26, 0, 0, 4615, 4616, 7, 15, 0, 0, 4616, 4617, 7, 6, 0, 0, 4617, 4618, 7, 25, 0, 0, 4618, 4619, 7, 19, 0, 0, 4619, 4620, 7, 13, 0, 0, 4620, 4621, 7, 10, 0, 0, 4621, 4622, 7, 9, 0, 0, 4622, 4623, 7, 16, 0, 0, 4623, 876, 1, 0, 0, 0, 4624, 4625, 7, 26, 0, 0, 4625, 4626, 7, 15, 0, 0, 4626, 4627, 7, 6, 0, 0, 4627, 4628, 7, 24, 0, 0, 4628, 4629, 7, 5, 0, 0, 4629, 4630, 7, 13, 0, 0, 4630, 4631, 7, 9, 0, 0, 4631, 4632, 7, 10, 0, 0, 4632, 878, 1, 0, 0, 0, 4633, 4634, 7, 26, 0, 0, 4634, 4635, 7, 15, 0, 0, 4635, 4636, 7, 6, 0, 0, 4636, 4637, 7, 24, 0, 0, 4637, 4638, 7, 17, 0, 0, 4638, 880, 1, 0, 0, 0, 4639, 4640, 7, 26, 0, 0, 4640, 4641, 7, 15, 0, 0, 4641, 4642, 7, 6, 0, 0, 4642, 4643, 7, 13, 0, 0, 4643, 4644, 7, 19, 0, 0, 4644, 4645, 7, 19, 0, 0, 4645, 4646, 7, 16, 0, 0, 4646, 882, 1, 0, 0, 0, 4647, 4648, 7, 26, 0, 0, 4648, 4649, 7, 15, 0, 0, 4649, 4650, 7, 6, 0, 0, 4650, 4651, 7, 9, 0, 0, 4651, 4652, 7, 10, 0, 0, 4652, 4653, 7, 13, 0, 0, 4653, 4654, 7, 17, 0, 0, 4654, 4655, 7, 5, 0, 0, 4655, 4656, 7, 6, 0, 0, 4656, 4657, 7, 17, 0, 0, 4657, 4658, 7, 11, 0, 0, 4658, 4659, 7, 10, 0, 0, 4659, 884, 1, 0, 0, 0, 4660, 4661, 7, 14, 0, 0, 4661, 4662, 7, 5, 0, 0, 4662, 4663, 7, 6, 0, 0, 4663, 4664, 7, 6, 0, 0, 4664, 886, 1, 0, 0, 0, 4665, 4666, 7, 14, 0, 0, 4666, 4667, 7, 22, 0, 0, 4667, 4668, 7, 13, 0, 0, 4668, 4669, 7, 13, 0, 0, 4669, 4670, 7, 10, 0, 0, 4670, 4671, 7, 7, 0, 0, 4671, 4672, 7, 16, 0, 0, 4672, 888, 1, 0, 0, 0, 4673, 4674, 7, 5, 0, 0, 4674, 4675, 7, 16, 0, 0, 4675, 4676, 7, 16, 0, 0, 4676, 4677, 7, 5, 0, 0, 4677, 4678, 7, 14, 0, 0, 4678, 4679, 7, 20, 0, 0, 4679, 890, 1, 0, 0, 0, 4680, 4681, 7, 12, 0, 0, 4681, 4682, 7, 10, 0, 0, 4682, 4683, 7, 16, 0, 0, 4683, 4684, 7, 5, 0, 0, 4684, 4685, 7, 14, 0, 0, 4685, 4686, 7, 20, 0, 0, 4686, 892, 1, 0, 0, 0, 4687, 4688, 7, 10, 0, 0, 4688, 4689, 7, 26, 0, 0, 4689, 4690, 7, 24, 0, 0, 4690, 4691, 7, 13, 0, 0, 4691, 4692, 7, 10, 0, 0, 4692, 4693, 7, 9, 0, 0, 4693, 4694, 7, 9, 0, 0, 4694, 4695, 7, 17, 0, 0, 4695, 4696, 7, 19, 0, 0, 4696, 4697, 7, 7, 0, 0, 4697, 894, 1, 0, 0, 0, 4698, 4699, 7, 23, 0, 0, 4699, 4700, 7, 10, 0, 0, 4700, 4701, 7, 7, 0, 0, 4701, 4702, 7, 10, 0, 0, 4702, 4703, 7, 13, 0, 0, 4703, 4704, 7, 5, 0, 0, 4704, 4705, 7, 16, 0, 0, 4705, 4706, 7, 10, 0, 0, 4706, 4707, 7, 12, 0, 0, 4707, 896, 1, 0, 0, 0, 4708, 4709, 7, 6, 0, 0, 4709, 4710, 7, 19, 0, 0, 4710, 4711, 7, 23, 0, 0, 4711, 4712, 7, 23, 0, 0, 4712, 4713, 7, 10, 0, 0, 4713, 4714, 7, 12, 0, 0, 4714, 898, 1, 0, 0, 0, 4715, 4716, 7, 9, 0, 0, 4716, 4717, 7, 16, 0, 0, 4717, 4718, 7, 19, 0, 0, 4718, 4719, 7, 13, 0, 0, 4719, 4720, 7, 10, 0, 0, 4720, 4721, 7, 12, 0, 0, 4721, 900, 1, 0, 0, 0, 4722, 4723, 7, 17, 0, 0, 4723, 4724, 7, 7, 0, 0, 4724, 4725, 7, 14, 0, 0, 4725, 4726, 7, 6, 0, 0, 4726, 4727, 7, 22, 0, 0, 4727, 4728, 7, 12, 0, 0, 4728, 4729, 7, 10, 0, 0, 4729, 902, 1, 0, 0, 0, 4730, 4731, 7, 13, 0, 0, 4731, 4732, 7, 19, 0, 0, 4732, 4733, 7, 22, 0, 0, 4733, 4734, 7, 16, 0, 0, 4734, 4735, 7, 17, 0, 0, 4735, 4736, 7, 7, 0, 0, 4736, 4737, 7, 10, 0, 0, 4737, 904, 1, 0, 0, 0, 4738, 4739, 7, 16, 0, 0, 4739, 4740, 7, 13, 0, 0, 4740, 4741, 7, 5, 0, 0, 4741, 4742, 7, 7, 0, 0, 4742, 4743, 7, 9, 0, 0, 4743, 4744, 7, 25, 0, 0, 4744, 4745, 7, 19, 0, 0, 4745, 4746, 7, 13, 0, 0, 4746, 4747, 7, 15, 0, 0, 4747, 906, 1, 0, 0, 0, 4748, 4749, 7, 17, 0, 0, 4749, 4750, 7, 15, 0, 0, 4750, 4751, 7, 24, 0, 0, 4751, 4752, 7, 19, 0, 0, 4752, 4753, 7, 13, 0, 0, 4753, 4754, 7, 16, 0, 0, 4754, 908, 1, 0, 0, 0, 4755, 4756, 7, 24, 0, 0, 4756, 4757, 7, 19, 0, 0, 4757, 4758, 7, 6, 0, 0, 4758, 4759, 7, 17, 0, 0, 4759, 4760, 7, 14, 0, 0, 4760, 4761, 7, 8, 0, 0, 4761, 910, 1, 0, 0, 0, 4762, 4763, 7, 15, 0, 0, 4763, 4764, 7, 10, 0, 0, 4764, 4765, 7, 16, 0, 0, 4765, 4766, 7, 20, 0, 0, 4766, 4767, 7, 19, 0, 0, 4767, 4768, 7, 12, 0, 0, 4768, 912, 1, 0, 0, 0, 4769, 4770, 7, 13, 0, 0, 4770, 4771, 7, 10, 0, 0, 4771, 4772, 7, 25, 0, 0, 4772, 4773, 7, 10, 0, 0, 4773, 4774, 7, 13, 0, 0, 4774, 4775, 7, 10, 0, 0, 4775, 4776, 7, 7, 0, 0, 4776, 4777, 7, 14, 0, 0, 4777, 4778, 7, 17, 0, 0, 4778, 4779, 7, 7, 0, 0, 4779, 4780, 7, 23, 0, 0, 4780, 914, 1, 0, 0, 0, 4781, 4782, 7, 7, 0, 0, 4782, 4783, 7, 10, 0, 0, 4783, 4784, 7, 28, 0, 0, 4784, 916, 1, 0, 0, 0, 4785, 4786, 7, 19, 0, 0, 4786, 4787, 7, 6, 0, 0, 4787, 4788, 7, 12, 0, 0, 4788, 918, 1, 0, 0, 0, 4789, 4790, 7, 27, 0, 0, 4790, 4791, 7, 5, 0, 0, 4791, 4792, 7, 6, 0, 0, 4792, 4793, 7, 22, 0, 0, 4793, 4794, 7, 10, 0, 0, 4794, 920, 1, 0, 0, 0, 4795, 4796, 7, 9, 0, 0, 4796, 4797, 7, 22, 0, 0, 4797, 4798, 7, 18, 0, 0, 4798, 4799, 7, 9, 0, 0, 4799, 4800, 7, 14, 0, 0, 4800, 4801, 7, 13, 0, 0, 4801, 4802, 7, 17, 0, 0, 4802, 4803, 7, 24, 0, 0, 4803, 4804, 7, 16, 0, 0, 4804, 4805, 7, 17, 0, 0, 4805, 4806, 7, 19, 0, 0, 4806, 4807, 7, 7, 0, 0, 4807, 922, 1, 0, 0, 0, 4808, 4809, 7, 24, 0, 0, 4809, 4810, 7, 22, 0, 0, 4810, 4811, 7, 18, 0, 0, 4811, 4812, 7, 6, 0, 0, 4812, 4813, 7, 17, 0, 0, 4813, 4814, 7, 14, 0, 0, 4814, 4815, 7, 5, 0, 0, 4815, 4816, 7, 16, 0, 0, 4816, 4817, 7, 17, 0, 0, 4817, 4818, 7, 19, 0, 0, 4818, 4819, 7, 7, 0, 0, 4819, 924, 1, 0, 0, 0, 4820, 4821, 7, 19, 0, 0, 4821, 4822, 7, 22, 0, 0, 4822, 4823, 7, 16, 0, 0, 4823, 926, 1, 0, 0, 0, 4824, 4825, 7, 10, 0, 0, 4825, 4826, 7, 7, 0, 0, 4826, 4827, 7, 12, 0, 0, 4827, 928, 1, 0, 0, 0, 4828, 4829, 7, 13, 0, 0, 4829, 4830, 7, 19, 0, 0, 4830, 4831, 7, 22, 0, 0, 4831, 4832, 7, 16, 0, 0, 4832, 4833, 7, 17, 0, 0, 4833, 4834, 7, 7, 0, 0, 4834, 4835, 7, 10, 0, 0, 4835, 4836, 7, 9, 0, 0, 4836, 930, 1, 0, 0, 0, 4837, 4838, 7, 9, 0, 0, 4838, 4839, 7, 14, 0, 0, 4839, 4840, 7, 20, 0, 0, 4840, 4841, 7, 10, 0, 0, 4841, 4842, 7, 15, 0, 0, 4842, 4843, 7, 5, 0, 0, 4843, 4844, 7, 9, 0, 0, 4844, 932, 1, 0, 0, 0, 4845, 4846, 7, 24, 0, 0, 4846, 4847, 7, 13, 0, 0, 4847, 4848, 7, 19, 0, 0, 4848, 4849, 7, 14, 0, 0, 4849, 4850, 7, 10, 0, 0, 4850, 4851, 7, 12, 0, 0, 4851, 4852, 7, 22, 0, 0, 4852, 4853, 7, 13, 0, 0, 4853, 4854, 7, 10, 0, 0, 4854, 4855, 7, 9, 0, 0, 4855, 934, 1, 0, 0, 0, 4856, 4857, 7, 17, 0, 0, 4857, 4858, 7, 7, 0, 0, 4858, 4859, 7, 24, 0, 0, 4859, 4860, 7, 22, 0, 0, 4860, 4861, 7, 16, 0, 0, 4861, 936, 1, 0, 0, 0, 4862, 4863, 7, 9, 0, 0, 4863, 4864, 7, 22, 0, 0, 4864, 4865, 7, 24, 0, 0, 4865, 4866, 7, 24, 0, 0, 4866, 4867, 7, 19, 0, 0, 4867, 4868, 7, 13, 0, 0, 4868, 4869, 7, 16, 0, 0, 4869, 938, 1, 0, 0, 0, 4870, 4871, 7, 24, 0, 0, 4871, 4872, 7, 5, 0, 0, 4872, 4873, 7, 13, 0, 0, 4873, 4874, 7, 5, 0, 0, 4874, 4875, 7, 6, 0, 0, 4875, 4876, 7, 6, 0, 0, 4876, 4877, 7, 10, 0, 0, 4877, 4878, 7, 6, 0, 0, 4878, 940, 1, 0, 0, 0, 4879, 4880, 7, 9, 0, 0, 4880, 4881, 7, 29, 0, 0, 4881, 4882, 7, 6, 0, 0, 4882, 942, 1, 0, 0, 0, 4883, 4884, 7, 12, 0, 0, 4884, 4885, 7, 10, 0, 0, 4885, 4886, 7, 24, 0, 0, 4886, 4887, 7, 10, 0, 0, 4887, 4888, 7, 7, 0, 0, 4888, 4889, 7, 12, 0, 0, 4889, 4890, 7, 9, 0, 0, 4890, 944, 1, 0, 0, 0, 4891, 4892, 7, 19, 0, 0, 4892, 4893, 7, 27, 0, 0, 4893, 4894, 7, 10, 0, 0, 4894, 4895, 7, 13, 0, 0, 4895, 4896, 7, 13, 0, 0, 4896, 4897, 7, 17, 0, 0, 4897, 4898, 7, 12, 0, 0, 4898, 4899, 7, 17, 0, 0, 4899, 4900, 7, 7, 0, 0, 4900, 4901, 7, 23, 0, 0, 4901, 946, 1, 0, 0, 0, 4902, 4903, 7, 14, 0, 0, 4903, 4904, 7, 19, 0, 0, 4904, 4905, 7, 7, 0, 0, 4905, 4906, 7, 25, 0, 0, 4906, 4907, 7, 6, 0, 0, 4907, 4908, 7, 17, 0, 0, 4908, 4909, 7, 14, 0, 0, 4909, 4910, 7, 16, 0, 0, 4910, 948, 1, 0, 0, 0, 4911, 4912, 7, 9, 0, 0, 4912, 4913, 7, 21, 0, 0, 4913, 4914, 7, 17, 0, 0, 4914, 4915, 7, 24, 0, 0, 4915, 950, 1, 0, 0, 0, 4916, 4917, 7, 6, 0, 0, 4917, 4918, 7, 19, 0, 0, 4918, 4919, 7, 14, 0, 0, 4919, 4920, 7, 21, 0, 0, 4920, 4921, 7, 10, 0, 0, 4921, 4922, 7, 12, 0, 0, 4922, 952, 1, 0, 0, 0, 4923, 4924, 7, 16, 0, 0, 4924, 4925, 7, 17, 0, 0, 4925, 4926, 7, 10, 0, 0, 4926, 4927, 7, 9, 0, 0, 4927, 954, 1, 0, 0, 0, 4928, 4929, 7, 13, 0, 0, 4929, 4930, 7, 19, 0, 0, 4930, 4931, 7, 6, 0, 0, 4931, 4932, 7, 6, 0, 0, 4932, 4933, 7, 22, 0, 0, 4933, 4934, 7, 24, 0, 0, 4934, 956, 1, 0, 0, 0, 4935, 4936, 7, 14, 0, 0, 4936, 4937, 7, 22, 0, 0, 4937, 4938, 7, 18, 0, 0, 4938, 4939, 7, 10, 0, 0, 4939, 958, 1, 0, 0, 0, 4940, 4941, 7, 23, 0, 0, 4941, 4942, 7, 13, 0, 0, 4942, 4943, 7, 19, 0, 0, 4943, 4944, 7, 22, 0, 0, 4944, 4945, 7, 24, 0, 0, 4945, 4946, 7, 17, 0, 0, 4946, 4947, 7, 7, 0, 0, 4947, 4948, 7, 23, 0, 0, 4948, 960, 1, 0, 0, 0, 4949, 4950, 7, 9, 0, 0, 4950, 4951, 7, 10, 0, 0, 4951, 4952, 7, 16, 0, 0, 4952, 4953, 7, 9, 0, 0, 4953, 962, 1, 0, 0, 0, 4954, 4955, 7, 16, 0, 0, 4955, 4956, 7, 5, 0, 0, 4956, 4957, 7, 18, 0, 0, 4957, 4958, 7, 6, 0, 0, 4958, 4959, 7, 10, 0, 0, 4959, 4960, 7, 9, 0, 0, 4960, 4961, 7, 5, 0, 0, 4961, 4962, 7, 15, 0, 0, 4962, 4963, 7, 24, 0, 0, 4963, 4964, 7, 6, 0, 0, 4964, 4965, 7, 10, 0, 0, 4965, 964, 1, 0, 0, 0, 4966, 4967, 7, 19, 0, 0, 4967, 4968, 7, 13, 0, 0, 4968, 4969, 7, 12, 0, 0, 4969, 4970, 7, 17, 0, 0, 4970, 4971, 7, 7, 0, 0, 4971, 4972, 7, 5, 0, 0, 4972, 4973, 7, 6, 0, 0, 4973, 4974, 7, 17, 0, 0, 4974, 4975, 7, 16, 0, 0, 4975, 4976, 7, 8, 0, 0, 4976, 966, 1, 0, 0, 0, 4977, 4978, 7, 26, 0, 0, 4978, 4979, 7, 15, 0, 0, 4979, 4980, 7, 6, 0, 0, 4980, 4981, 7, 16, 0, 0, 4981, 4982, 7, 5, 0, 0, 4982, 4983, 7, 18, 0, 0, 4983, 4984, 7, 6, 0, 0, 4984, 4985, 7, 10, 0, 0, 4985, 968, 1, 0, 0, 0, 4986, 4987, 7, 14, 0, 0, 4987, 4988, 7, 19, 0, 0, 4988, 4989, 7, 6, 0, 0, 4989, 4990, 7, 22, 0, 0, 4990, 4991, 7, 15, 0, 0, 4991, 4992, 7, 7, 0, 0, 4992, 4993, 7, 9, 0, 0, 4993, 970, 1, 0, 0, 0, 4994, 4995, 7, 26, 0, 0, 4995, 4996, 7, 15, 0, 0, 4996, 4997, 7, 6, 0, 0, 4997, 4998, 7, 7, 0, 0, 4998, 4999, 7, 5, 0, 0, 4999, 5000, 7, 15, 0, 0, 5000, 5001, 7, 10, 0, 0, 5001, 5002, 7, 9, 0, 0, 5002, 5003, 7, 24, 0, 0, 5003, 5004, 7, 5, 0, 0, 5004, 5005, 7, 14, 0, 0, 5005, 5006, 7, 10, 0, 0, 5006, 5007, 7, 9, 0, 0, 5007, 972, 1, 0, 0, 0, 5008, 5009, 7, 13, 0, 0, 5009, 5010, 7, 19, 0, 0, 5010, 5011, 7, 28, 0, 0, 5011, 5012, 7, 16, 0, 0, 5012, 5013, 7, 8, 0, 0, 5013, 5014, 7, 24, 0, 0, 5014, 5015, 7, 10, 0, 0, 5015, 974, 1, 0, 0, 0, 5016, 5017, 7, 7, 0, 0, 5017, 5018, 7, 19, 0, 0, 5018, 5019, 7, 13, 0, 0, 5019, 5020, 7, 15, 0, 0, 5020, 5021, 7, 5, 0, 0, 5021, 5022, 7, 6, 0, 0, 5022, 5023, 7, 17, 0, 0, 5023, 5024, 7, 11, 0, 0, 5024, 5025, 7, 10, 0, 0, 5025, 5026, 7, 12, 0, 0, 5026, 976, 1, 0, 0, 0, 5027, 5028, 7, 28, 0, 0, 5028, 5029, 7, 17, 0, 0, 5029, 5030, 7, 16, 0, 0, 5030, 5031, 7, 20, 0, 0, 5031, 5032, 7, 17, 0, 0, 5032, 5033, 7, 7, 0, 0, 5033, 978, 1, 0, 0, 0, 5034, 5035, 7, 25, 0, 0, 5035, 5036, 7, 17, 0, 0, 5036, 5037, 7, 6, 0, 0, 5037, 5038, 7, 16, 0, 0, 5038, 5039, 7, 10, 0, 0, 5039, 5040, 7, 13, 0, 0, 5040, 980, 1, 0, 0, 0, 5041, 5042, 7, 23, 0, 0, 5042, 5043, 7, 13, 0, 0, 5043, 5044, 7, 19, 0, 0, 5044, 5045, 7, 22, 0, 0, 5045, 5046, 7, 24, 0, 0, 5046, 5047, 7, 9, 0, 0, 5047, 982, 1, 0, 0, 0, 5048, 5049, 7, 19, 0, 0, 5049, 5050, 7, 16, 0, 0, 5050, 5051, 7, 20, 0, 0, 5051, 5052, 7, 10, 0, 0, 5052, 5053, 7, 13, 0, 0, 5053, 5054, 7, 9, 0, 0, 5054, 984, 1, 0, 0, 0, 5055, 5056, 7, 7, 0, 0, 5056, 5057, 7, 25, 0, 0, 5057, 5058, 7, 14, 0, 0, 5058, 986, 1, 0, 0, 0, 5059, 5060, 7, 7, 0, 0, 5060, 5061, 7, 25, 0, 0, 5061, 5062, 7, 12, 0, 0, 5062, 988, 1, 0, 0, 0, 5063, 5064, 7, 7, 0, 0, 5064, 5065, 7, 25, 0, 0, 5065, 5066, 7, 21, 0, 0, 5066, 5067, 7, 14, 0, 0, 5067, 990, 1, 0, 0, 0, 5068, 5069, 7, 7, 0, 0, 5069, 5070, 7, 25, 0, 0, 5070, 5071, 7, 21, 0, 0, 5071, 5072, 7, 12, 0, 0, 5072, 992, 1, 0, 0, 0, 5073, 5074, 7, 22, 0, 0, 5074, 5075, 7, 10, 0, 0, 5075, 5076, 7, 9, 0, 0, 5076, 5077, 7, 14, 0, 0, 5077, 5078, 7, 5, 0, 0, 5078, 5079, 7, 24, 0, 0, 5079, 5080, 7, 10, 0, 0, 5080, 994, 1, 0, 0, 0, 5081, 5082, 7, 27, 0, 0, 5082, 5083, 7, 17, 0, 0, 5083, 5084, 7, 10, 0, 0, 5084, 5085, 7, 28, 0, 0, 5085, 5086, 7, 9, 0, 0, 5086, 996, 1, 0, 0, 0, 5087, 5088, 7, 7, 0, 0, 5088, 5089, 7, 19, 0, 0, 5089, 5090, 7, 13, 0, 0, 5090, 5091, 7, 15, 0, 0, 5091, 5092, 7, 5, 0, 0, 5092, 5093, 7, 6, 0, 0, 5093, 5094, 7, 17, 0, 0, 5094, 5095, 7, 11, 0, 0, 5095, 5096, 7, 10, 0, 0, 5096, 998, 1, 0, 0, 0, 5097, 5098, 7, 12, 0, 0, 5098, 5099, 7, 22, 0, 0, 5099, 5100, 7, 15, 0, 0, 5100, 5101, 7, 24, 0, 0, 5101, 1000, 1, 0, 0, 0, 5102, 5103, 7, 24, 0, 0, 5103, 5104, 7, 13, 0, 0, 5104, 5105, 7, 17, 0, 0, 5105, 5106, 7, 7, 0, 0, 5106, 5107, 7, 16, 0, 0, 5107, 5108, 5, 95, 0, 0, 5108, 5109, 7, 9, 0, 0, 5109, 5110, 7, 16, 0, 0, 5110, 5111, 7, 13, 0, 0, 5111, 5112, 7, 17, 0, 0, 5112, 5113, 7, 14, 0, 0, 5113, 5114, 7, 16, 0, 0, 5114, 5115, 5, 95, 0, 0, 5115, 5116, 7, 24, 0, 0, 5116, 5117, 7, 5, 0, 0, 5117, 5118, 7, 13, 0, 0, 5118, 5119, 7, 5, 0, 0, 5119, 5120, 7, 15, 0, 0, 5120, 5121, 7, 9, 0, 0, 5121, 1002, 1, 0, 0, 0, 5122, 5123, 7, 27, 0, 0, 5123, 5124, 7, 5, 0, 0, 5124, 5125, 7, 13, 0, 0, 5125, 5126, 7, 17, 0, 0, 5126, 5127, 7, 5, 0, 0, 5127, 5128, 7, 18, 0, 0, 5128, 5129, 7, 6, 0, 0, 5129, 5130, 7, 10, 0, 0, 5130, 5131, 5, 95, 0, 0, 5131, 5132, 7, 14, 0, 0, 5132, 5133, 7, 19, 0, 0, 5133, 5134, 7, 7, 0, 0, 5134, 5135, 7, 25, 0, 0, 5135, 5136, 7, 6, 0, 0, 5136, 5137, 7, 17, 0, 0, 5137, 5138, 7, 14, 0, 0, 5138, 5139, 7, 16, 0, 0, 5139, 1004, 1, 0, 0, 0, 5140, 5141, 7, 10, 0, 0, 5141, 5142, 7, 13, 0, 0, 5142, 5143, 7, 13, 0, 0, 5143, 5144, 7, 19, 0, 0, 5144, 5145, 7, 13, 0, 0, 5145, 1006, 1, 0, 0, 0, 5146, 5147, 7, 22, 0, 0, 5147, 5148, 7, 9, 0, 0, 5148, 5149, 7, 10, 0, 0, 5149, 5150, 5, 95, 0, 0, 5150, 5151, 7, 27, 0, 0, 5151, 5152, 7, 5, 0, 0, 5152, 5153, 7, 13, 0, 0, 5153, 5154, 7, 17, 0, 0, 5154, 5155, 7, 5, 0, 0, 5155, 5156, 7, 18, 0, 0, 5156, 5157, 7, 6, 0, 0, 5157, 5158, 7, 10, 0, 0, 5158, 1008, 1, 0, 0, 0, 5159, 5160, 7, 22, 0, 0, 5160, 5161, 7, 9, 0, 0, 5161, 5162, 7, 10, 0, 0, 5162, 5163, 5, 95, 0, 0, 5163, 5164, 7, 14, 0, 0, 5164, 5165, 7, 19, 0, 0, 5165, 5166, 7, 6, 0, 0, 5166, 5167, 7, 22, 0, 0, 5167, 5168, 7, 15, 0, 0, 5168, 5169, 7, 7, 0, 0, 5169, 1010, 1, 0, 0, 0, 5170, 5171, 7, 5, 0, 0, 5171, 5172, 7, 6, 0, 0, 5172, 5173, 7, 17, 0, 0, 5173, 5174, 7, 5, 0, 0, 5174, 5175, 7, 9, 0, 0, 5175, 1012, 1, 0, 0, 0, 5176, 5177, 7, 14, 0, 0, 5177, 5178, 7, 19, 0, 0, 5178, 5179, 7, 7, 0, 0, 5179, 5180, 7, 9, 0, 0, 5180, 5181, 7, 16, 0, 0, 5181, 5182, 7, 5, 0, 0, 5182, 5183, 7, 7, 0, 0, 5183, 5184, 7, 16, 0, 0, 5184, 1014, 1, 0, 0, 0, 5185, 5186, 7, 24, 0, 0, 5186, 5187, 7, 10, 0, 0, 5187, 5188, 7, 13, 0, 0, 5188, 5189, 7, 25, 0, 0, 5189, 5190, 7, 19, 0, 0, 5190, 5191, 7, 13, 0, 0, 5191, 5192, 7, 15, 0, 0, 5192, 1016, 1, 0, 0, 0, 5193, 5194, 7, 23, 0, 0, 5194, 5195, 7, 10, 0, 0, 5195, 5196, 7, 16, 0, 0, 5196, 1018, 1, 0, 0, 0, 5197, 5198, 7, 12, 0, 0, 5198, 5199, 7, 17, 0, 0, 5199, 5200, 7, 5, 0, 0, 5200, 5201, 7, 23, 0, 0, 5201, 5202, 7, 7, 0, 0, 5202, 5203, 7, 19, 0, 0, 5203, 5204, 7, 9, 0, 0, 5204, 5205, 7, 16, 0, 0, 5205, 5206, 7, 17, 0, 0, 5206, 5207, 7, 14, 0, 0, 5207, 5208, 7, 9, 0, 0, 5208, 1020, 1, 0, 0, 0, 5209, 5210, 7, 9, 0, 0, 5210, 5211, 7, 16, 0, 0, 5211, 5212, 7, 5, 0, 0, 5212, 5213, 7, 14, 0, 0, 5213, 5214, 7, 21, 0, 0, 5214, 5215, 7, 10, 0, 0, 5215, 5216, 7, 12, 0, 0, 5216, 1022, 1, 0, 0, 0, 5217, 5218, 7, 10, 0, 0, 5218, 5219, 7, 6, 0, 0, 5219, 5220, 7, 9, 0, 0, 5220, 5221, 7, 17, 0, 0, 5221, 5222, 7, 25, 0, 0, 5222, 1024, 1, 0, 0, 0, 5223, 5224, 7, 28, 0, 0, 5224, 5225, 7, 20, 0, 0, 5225, 5226, 7, 17, 0, 0, 5226, 5227, 7, 6, 0, 0, 5227, 5228, 7, 10, 0, 0, 5228, 1026, 1, 0, 0, 0, 5229, 5230, 7, 13, 0, 0, 5230, 5231, 7, 10, 0, 0, 5231, 5232, 7, 27, 0, 0, 5232, 5233, 7, 10, 0, 0, 5233, 5234, 7, 13, 0, 0, 5234, 5235, 7, 9, 0, 0, 5235, 5236, 7, 10, 0, 0, 5236, 1028, 1, 0, 0, 0, 5237, 5238, 7, 25, 0, 0, 5238, 5239, 7, 19, 0, 0, 5239, 5240, 7, 13, 0, 0, 5240, 5241, 7, 10, 0, 0, 5241, 5242, 7, 5, 0, 0, 5242, 5243, 7, 14, 0, 0, 5243, 5244, 7, 20, 0, 0, 5244, 1030, 1, 0, 0, 0, 5245, 5246, 7, 9, 0, 0, 5246, 5247, 7, 6, 0, 0, 5247, 5248, 7, 17, 0, 0, 5248, 5249, 7, 14, 0, 0, 5249, 5250, 7, 10, 0, 0, 5250, 1032, 1, 0, 0, 0, 5251, 5252, 7, 10, 0, 0, 5252, 5253, 7, 26, 0, 0, 5253, 5254, 7, 17, 0, 0, 5254, 5255, 7, 16, 0, 0, 5255, 1034, 1, 0, 0, 0, 5256, 5257, 7, 13, 0, 0, 5257, 5258, 7, 10, 0, 0, 5258, 5259, 7, 16, 0, 0, 5259, 5260, 7, 22, 0, 0, 5260, 5261, 7, 13, 0, 0, 5261, 5262, 7, 7, 0, 0, 5262, 1036, 1, 0, 0, 0, 5263, 5264, 7, 29, 0, 0, 5264, 5265, 7, 22, 0, 0, 5265, 5266, 7, 10, 0, 0, 5266, 5267, 7, 13, 0, 0, 5267, 5268, 7, 8, 0, 0, 5268, 1038, 1, 0, 0, 0, 5269, 5270, 7, 13, 0, 0, 5270, 5271, 7, 5, 0, 0, 5271, 5272, 7, 17, 0, 0, 5272, 5273, 7, 9, 0, 0, 5273, 5274, 7, 10, 0, 0, 5274, 1040, 1, 0, 0, 0, 5275, 5276, 7, 9, 0, 0, 5276, 5277, 7, 29, 0, 0, 5277, 5278, 7, 6, 0, 0, 5278, 5279, 7, 9, 0, 0, 5279, 5280, 7, 16, 0, 0, 5280, 5281, 7, 5, 0, 0, 5281, 5282, 7, 16, 0, 0, 5282, 5283, 7, 10, 0, 0, 5283, 1042, 1, 0, 0, 0, 5284, 5285, 7, 12, 0, 0, 5285, 5286, 7, 10, 0, 0, 5286, 5287, 7, 18, 0, 0, 5287, 5288, 7, 22, 0, 0, 5288, 5289, 7, 23, 0, 0, 5289, 1044, 1, 0, 0, 0, 5290, 5291, 7, 6, 0, 0, 5291, 5292, 7, 19, 0, 0, 5292, 5293, 7, 23, 0, 0, 5293, 1046, 1, 0, 0, 0, 5294, 5295, 7, 17, 0, 0, 5295, 5296, 7, 7, 0, 0, 5296, 5297, 7, 25, 0, 0, 5297, 5298, 7, 19, 0, 0, 5298, 1048, 1, 0, 0, 0, 5299, 5300, 7, 7, 0, 0, 5300, 5301, 7, 19, 0, 0, 5301, 5302, 7, 16, 0, 0, 5302, 5303, 7, 17, 0, 0, 5303, 5304, 7, 14, 0, 0, 5304, 5305, 7, 10, 0, 0, 5305, 1050, 1, 0, 0, 0, 5306, 5307, 7, 28, 0, 0, 5307, 5308, 7, 5, 0, 0, 5308, 5309, 7, 13, 0, 0, 5309, 5310, 7, 7, 0, 0, 5310, 5311, 7, 17, 0, 0, 5311, 5312, 7, 7, 0, 0, 5312, 5313, 7, 23, 0, 0, 5313, 1052, 1, 0, 0, 0, 5314, 5315, 7, 10, 0, 0, 5315, 5316, 7, 26, 0, 0, 5316, 5317, 7, 14, 0, 0, 5317, 5318, 7, 10, 0, 0, 5318, 5319, 7, 24, 0, 0, 5319, 5320, 7, 16, 0, 0, 5320, 5321, 7, 17, 0, 0, 5321, 5322, 7, 19, 0, 0, 5322, 5323, 7, 7, 0, 0, 5323, 1054, 1, 0, 0, 0, 5324, 5325, 7, 5, 0, 0, 5325, 5326, 7, 9, 0, 0, 5326, 5327, 7, 9, 0, 0, 5327, 5328, 7, 10, 0, 0, 5328, 5329, 7, 13, 0, 0, 5329, 5330, 7, 16, 0, 0, 5330, 1056, 1, 0, 0, 0, 5331, 5332, 7, 6, 0, 0, 5332, 5333, 7, 19, 0, 0, 5333, 5334, 7, 19, 0, 0, 5334, 5335, 7, 24, 0, 0, 5335, 1058, 1, 0, 0, 0, 5336, 5337, 7, 19, 0, 0, 5337, 5338, 7, 24, 0, 0, 5338, 5339, 7, 10, 0, 0, 5339, 5340, 7, 7, 0, 0, 5340, 1060, 1, 0, 0, 0, 5341, 5342, 7, 5, 0, 0, 5342, 5343, 7, 18, 0, 0, 5343, 5344, 7, 9, 0, 0, 5344, 1062, 1, 0, 0, 0, 5345, 5346, 7, 14, 0, 0, 5346, 5347, 7, 18, 0, 0, 5347, 5348, 7, 13, 0, 0, 5348, 5349, 7, 16, 0, 0, 5349, 1064, 1, 0, 0, 0, 5350, 5351, 7, 14, 0, 0, 5351, 5352, 7, 10, 0, 0, 5352, 5353, 7, 17, 0, 0, 5353, 5354, 7, 6, 0, 0, 5354, 1066, 1, 0, 0, 0, 5355, 5356, 7, 14, 0, 0, 5356, 5357, 7, 10, 0, 0, 5357, 5358, 7, 17, 0, 0, 5358, 5359, 7, 6, 0, 0, 5359, 5360, 7, 17, 0, 0, 5360, 5361, 7, 7, 0, 0, 5361, 5362, 7, 23, 0, 0, 5362, 1068, 1, 0, 0, 0, 5363, 5364, 7, 12, 0, 0, 5364, 5365, 7, 10, 0, 0, 5365, 5366, 7, 23, 0, 0, 5366, 5367, 7, 13, 0, 0, 5367, 5368, 7, 10, 0, 0, 5368, 5369, 7, 10, 0, 0, 5369, 5370, 7, 9, 0, 0, 5370, 1070, 1, 0, 0, 0, 5371, 5372, 7, 12, 0, 0, 5372, 5373, 7, 17, 0, 0, 5373, 5374, 7, 27, 0, 0, 5374, 1072, 1, 0, 0, 0, 5375, 5376, 7, 10, 0, 0, 5376, 5377, 7, 26, 0, 0, 5377, 5378, 7, 24, 0, 0, 5378, 1074, 1, 0, 0, 0, 5379, 5380, 7, 25, 0, 0, 5380, 5381, 7, 5, 0, 0, 5381, 5382, 7, 14, 0, 0, 5382, 5383, 7, 16, 0, 0, 5383, 5384, 7, 19, 0, 0, 5384, 5385, 7, 13, 0, 0, 5385, 5386, 7, 17, 0, 0, 5386, 5387, 7, 5, 0, 0, 5387, 5388, 7, 6, 0, 0, 5388, 1076, 1, 0, 0, 0, 5389, 5390, 7, 25, 0, 0, 5390, 5391, 7, 6, 0, 0, 5391, 5392, 7, 19, 0, 0, 5392, 5393, 7, 19, 0, 0, 5393, 5394, 7, 13, 0, 0, 5394, 1078, 1, 0, 0, 0, 5395, 5396, 7, 23, 0, 0, 5396, 5397, 7, 14, 0, 0, 5397, 5398, 7, 12, 0, 0, 5398, 1080, 1, 0, 0, 0, 5399, 5400, 7, 6, 0, 0, 5400, 5401, 7, 14, 0, 0, 5401, 5402, 7, 15, 0, 0, 5402, 1082, 1, 0, 0, 0, 5403, 5404, 7, 6, 0, 0, 5404, 5405, 7, 7, 0, 0, 5405, 1084, 1, 0, 0, 0, 5406, 5407, 7, 6, 0, 0, 5407, 5408, 7, 19, 0, 0, 5408, 5409, 7, 23, 0, 0, 5409, 5410, 5, 49, 0, 0, 5410, 5411, 5, 48, 0, 0, 5411, 1086, 1, 0, 0, 0, 5412, 5413, 7, 15, 0, 0, 5413, 5414, 7, 17, 0, 0, 5414, 5415, 7, 7, 0, 0, 5415, 5416, 5, 95, 0, 0, 5416, 5417, 7, 9, 0, 0, 5417, 5418, 7, 14, 0, 0, 5418, 5419, 7, 5, 0, 0, 5419, 5420, 7, 6, 0, 0, 5420, 5421, 7, 10, 0, 0, 5421, 1088, 1, 0, 0, 0, 5422, 5423, 7, 15, 0, 0, 5423, 5424, 7, 19, 0, 0, 5424, 5425, 7, 12, 0, 0, 5425, 1090, 1, 0, 0, 0, 5426, 5427, 7, 24, 0, 0, 5427, 5428, 7, 17, 0, 0, 5428, 1092, 1, 0, 0, 0, 5429, 5430, 7, 24, 0, 0, 5430, 5431, 7, 19, 0, 0, 5431, 5432, 7, 28, 0, 0, 5432, 5433, 7, 10, 0, 0, 5433, 5434, 7, 13, 0, 0, 5434, 1094, 1, 0, 0, 0, 5435, 5436, 7, 13, 0, 0, 5436, 5437, 7, 5, 0, 0, 5437, 5438, 7, 12, 0, 0, 5438, 5439, 7, 17, 0, 0, 5439, 5440, 7, 5, 0, 0, 5440, 5441, 7, 7, 0, 0, 5441, 5442, 7, 9, 0, 0, 5442, 1096, 1, 0, 0, 0, 5443, 5444, 7, 13, 0, 0, 5444, 5445, 7, 19, 0, 0, 5445, 5446, 7, 22, 0, 0, 5446, 5447, 7, 7, 0, 0, 5447, 5448, 7, 12, 0, 0, 5448, 1098, 1, 0, 0, 0, 5449, 5450, 7, 9, 0, 0, 5450, 5451, 7, 14, 0, 0, 5451, 5452, 7, 5, 0, 0, 5452, 5453, 7, 6, 0, 0, 5453, 5454, 7, 10, 0, 0, 5454, 1100, 1, 0, 0, 0, 5455, 5456, 7, 9, 0, 0, 5456, 5457, 7, 17, 0, 0, 5457, 5458, 7, 23, 0, 0, 5458, 5459, 7, 7, 0, 0, 5459, 1102, 1, 0, 0, 0, 5460, 5461, 7, 9, 0, 0, 5461, 5462, 7, 29, 0, 0, 5462, 5463, 7, 13, 0, 0, 5463, 5464, 7, 16, 0, 0, 5464, 1104, 1, 0, 0, 0, 5465, 5466, 7, 16, 0, 0, 5466, 5467, 7, 13, 0, 0, 5467, 5468, 7, 17, 0, 0, 5468, 5469, 7, 15, 0, 0, 5469, 5470, 5, 95, 0, 0, 5470, 5471, 7, 9, 0, 0, 5471, 5472, 7, 14, 0, 0, 5472, 5473, 7, 5, 0, 0, 5473, 5474, 7, 6, 0, 0, 5474, 5475, 7, 10, 0, 0, 5475, 1106, 1, 0, 0, 0, 5476, 5477, 7, 16, 0, 0, 5477, 5478, 7, 13, 0, 0, 5478, 5479, 7, 22, 0, 0, 5479, 5480, 7, 7, 0, 0, 5480, 5481, 7, 14, 0, 0, 5481, 1108, 1, 0, 0, 0, 5482, 5483, 7, 28, 0, 0, 5483, 5484, 7, 17, 0, 0, 5484, 5485, 7, 12, 0, 0, 5485, 5486, 7, 16, 0, 0, 5486, 5487, 7, 20, 0, 0, 5487, 5488, 5, 95, 0, 0, 5488, 5489, 7, 18, 0, 0, 5489, 5490, 7, 22, 0, 0, 5490, 5491, 7, 14, 0, 0, 5491, 5492, 7, 21, 0, 0, 5492, 5493, 7, 10, 0, 0, 5493, 5494, 7, 16, 0, 0, 5494, 1110, 1, 0, 0, 0, 5495, 5496, 7, 13, 0, 0, 5496, 5497, 7, 5, 0, 0, 5497, 5498, 7, 7, 0, 0, 5498, 5499, 7, 12, 0, 0, 5499, 5500, 7, 19, 0, 0, 5500, 5501, 7, 15, 0, 0, 5501, 1112, 1, 0, 0, 0, 5502, 5503, 7, 9, 0, 0, 5503, 5504, 7, 10, 0, 0, 5504, 5505, 7, 16, 0, 0, 5505, 5506, 7, 9, 0, 0, 5506, 5507, 7, 10, 0, 0, 5507, 5508, 7, 10, 0, 0, 5508, 5509, 7, 12, 0, 0, 5509, 1114, 1, 0, 0, 0, 5510, 5511, 7, 5, 0, 0, 5511, 5512, 7, 14, 0, 0, 5512, 5513, 7, 19, 0, 0, 5513, 5514, 7, 9, 0, 0, 5514, 1116, 1, 0, 0, 0, 5515, 5516, 7, 5, 0, 0, 5516, 5517, 7, 14, 0, 0, 5517, 5518, 7, 19, 0, 0, 5518, 5519, 7, 9, 0, 0, 5519, 5520, 7, 12, 0, 0, 5520, 1118, 1, 0, 0, 0, 5521, 5522, 7, 5, 0, 0, 5522, 5523, 7, 9, 0, 0, 5523, 5524, 7, 17, 0, 0, 5524, 5525, 7, 7, 0, 0, 5525, 1120, 1, 0, 0, 0, 5526, 5527, 7, 5, 0, 0, 5527, 5528, 7, 9, 0, 0, 5528, 5529, 7, 17, 0, 0, 5529, 5530, 7, 7, 0, 0, 5530, 5531, 7, 12, 0, 0, 5531, 1122, 1, 0, 0, 0, 5532, 5533, 7, 5, 0, 0, 5533, 5534, 7, 16, 0, 0, 5534, 5535, 7, 5, 0, 0, 5535, 5536, 7, 7, 0, 0, 5536, 1124, 1, 0, 0, 0, 5537, 5538, 7, 5, 0, 0, 5538, 5539, 7, 16, 0, 0, 5539, 5540, 7, 5, 0, 0, 5540, 5541, 7, 7, 0, 0, 5541, 5542, 7, 12, 0, 0, 5542, 1126, 1, 0, 0, 0, 5543, 5544, 7, 5, 0, 0, 5544, 5545, 7, 16, 0, 0, 5545, 5546, 7, 5, 0, 0, 5546, 5547, 7, 7, 0, 0, 5547, 5548, 5, 50, 0, 0, 5548, 1128, 1, 0, 0, 0, 5549, 5550, 7, 5, 0, 0, 5550, 5551, 7, 16, 0, 0, 5551, 5552, 7, 5, 0, 0, 5552, 5553, 7, 7, 0, 0, 5553, 5554, 5, 50, 0, 0, 5554, 5555, 7, 12, 0, 0, 5555, 1130, 1, 0, 0, 0, 5556, 5557, 7, 14, 0, 0, 5557, 5558, 7, 19, 0, 0, 5558, 5559, 7, 9, 0, 0, 5559, 1132, 1, 0, 0, 0, 5560, 5561, 7, 14, 0, 0, 5561, 5562, 7, 19, 0, 0, 5562, 5563, 7, 9, 0, 0, 5563, 5564, 7, 12, 0, 0, 5564, 1134, 1, 0, 0, 0, 5565, 5566, 7, 14, 0, 0, 5566, 5567, 7, 19, 0, 0, 5567, 5568, 7, 16, 0, 0, 5568, 1136, 1, 0, 0, 0, 5569, 5570, 7, 14, 0, 0, 5570, 5571, 7, 19, 0, 0, 5571, 5572, 7, 16, 0, 0, 5572, 5573, 7, 12, 0, 0, 5573, 1138, 1, 0, 0, 0, 5574, 5575, 7, 9, 0, 0, 5575, 5576, 7, 17, 0, 0, 5576, 5577, 7, 7, 0, 0, 5577, 1140, 1, 0, 0, 0, 5578, 5579, 7, 9, 0, 0, 5579, 5580, 7, 17, 0, 0, 5580, 5581, 7, 7, 0, 0, 5581, 5582, 7, 12, 0, 0, 5582, 1142, 1, 0, 0, 0, 5583, 5584, 7, 16, 0, 0, 5584, 5585, 7, 5, 0, 0, 5585, 5586, 7, 7, 0, 0, 5586, 1144, 1, 0, 0, 0, 5587, 5588, 7, 16, 0, 0, 5588, 5589, 7, 5, 0, 0, 5589, 5590, 7, 7, 0, 0, 5590, 5591, 7, 12, 0, 0, 5591, 1146, 1, 0, 0, 0, 5592, 5593, 7, 9, 0, 0, 5593, 5594, 7, 17, 0, 0, 5594, 5595, 7, 7, 0, 0, 5595, 5596, 7, 20, 0, 0, 5596, 1148, 1, 0, 0, 0, 5597, 5598, 7, 14, 0, 0, 5598, 5599, 7, 19, 0, 0, 5599, 5600, 7, 9, 0, 0, 5600, 5601, 7, 20, 0, 0, 5601, 1150, 1, 0, 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, 1152, 1, 0, 0, 0, 5607, 5608, 7, 5, 0, 0, 5608, 5609, 7, 9, 0, 0, 5609, 5610, 7, 17, 0, 0, 5610, 5611, 7, 7, 0, 0, 5611, 5612, 7, 20, 0, 0, 5612, 1154, 1, 0, 0, 0, 5613, 5614, 7, 5, 0, 0, 5614, 5615, 7, 14, 0, 0, 5615, 5616, 7, 19, 0, 0, 5616, 5617, 7, 9, 0, 0, 5617, 5618, 7, 20, 0, 0, 5618, 1156, 1, 0, 0, 0, 5619, 5620, 7, 5, 0, 0, 5620, 5621, 7, 16, 0, 0, 5621, 5622, 7, 5, 0, 0, 5622, 5623, 7, 7, 0, 0, 5623, 5624, 7, 20, 0, 0, 5624, 1158, 1, 0, 0, 0, 5625, 5626, 7, 18, 0, 0, 5626, 5627, 7, 17, 0, 0, 5627, 5628, 7, 16, 0, 0, 5628, 5629, 5, 95, 0, 0, 5629, 5630, 7, 6, 0, 0, 5630, 5631, 7, 10, 0, 0, 5631, 5632, 7, 7, 0, 0, 5632, 5633, 7, 23, 0, 0, 5633, 5634, 7, 16, 0, 0, 5634, 5635, 7, 20, 0, 0, 5635, 1160, 1, 0, 0, 0, 5636, 5637, 7, 14, 0, 0, 5637, 5638, 7, 20, 0, 0, 5638, 5639, 7, 5, 0, 0, 5639, 5640, 7, 13, 0, 0, 5640, 5641, 5, 95, 0, 0, 5641, 5642, 7, 6, 0, 0, 5642, 5643, 7, 10, 0, 0, 5643, 5644, 7, 7, 0, 0, 5644, 5645, 7, 23, 0, 0, 5645, 5646, 7, 16, 0, 0, 5646, 5647, 7, 20, 0, 0, 5647, 1162, 1, 0, 0, 0, 5648, 5649, 7, 14, 0, 0, 5649, 5650, 7, 20, 0, 0, 5650, 5651, 7, 5, 0, 0, 5651, 5652, 7, 13, 0, 0, 5652, 5653, 7, 5, 0, 0, 5653, 5654, 7, 14, 0, 0, 5654, 5655, 7, 16, 0, 0, 5655, 5656, 7, 10, 0, 0, 5656, 5657, 7, 13, 0, 0, 5657, 5658, 5, 95, 0, 0, 5658, 5659, 7, 6, 0, 0, 5659, 5660, 7, 10, 0, 0, 5660, 5661, 7, 7, 0, 0, 5661, 5662, 7, 23, 0, 0, 5662, 5663, 7, 16, 0, 0, 5663, 5664, 7, 20, 0, 0, 5664, 1164, 1, 0, 0, 0, 5665, 5666, 7, 6, 0, 0, 5666, 5667, 7, 19, 0, 0, 5667, 5668, 7, 28, 0, 0, 5668, 5669, 7, 10, 0, 0, 5669, 5670, 7, 13, 0, 0, 5670, 1166, 1, 0, 0, 0, 5671, 5672, 7, 19, 0, 0, 5672, 5673, 7, 14, 0, 0, 5673, 5674, 7, 16, 0, 0, 5674, 5675, 7, 10, 0, 0, 5675, 5676, 7, 16, 0, 0, 5676, 5677, 5, 95, 0, 0, 5677, 5678, 7, 6, 0, 0, 5678, 5679, 7, 10, 0, 0, 5679, 5680, 7, 7, 0, 0, 5680, 5681, 7, 23, 0, 0, 5681, 5682, 7, 16, 0, 0, 5682, 5683, 7, 20, 0, 0, 5683, 1168, 1, 0, 0, 0, 5684, 5685, 7, 22, 0, 0, 5685, 5686, 7, 24, 0, 0, 5686, 5687, 7, 24, 0, 0, 5687, 5688, 7, 10, 0, 0, 5688, 5689, 7, 13, 0, 0, 5689, 1170, 1, 0, 0, 0, 5690, 5691, 7, 5, 0, 0, 5691, 5692, 7, 9, 0, 0, 5692, 5693, 7, 14, 0, 0, 5693, 5694, 7, 17, 0, 0, 5694, 5695, 7, 17, 0, 0, 5695, 1172, 1, 0, 0, 0, 5696, 5697, 7, 18, 0, 0, 5697, 5698, 7, 16, 0, 0, 5698, 5699, 7, 13, 0, 0, 5699, 5700, 7, 17, 0, 0, 5700, 5701, 7, 15, 0, 0, 5701, 1174, 1, 0, 0, 0, 5702, 5703, 7, 14, 0, 0, 5703, 5704, 7, 20, 0, 0, 5704, 5705, 7, 13, 0, 0, 5705, 1176, 1, 0, 0, 0, 5706, 5707, 7, 14, 0, 0, 5707, 5708, 7, 19, 0, 0, 5708, 5709, 7, 7, 0, 0, 5709, 5710, 7, 14, 0, 0, 5710, 5711, 7, 5, 0, 0, 5711, 5712, 7, 16, 0, 0, 5712, 1178, 1, 0, 0, 0, 5713, 5714, 7, 14, 0, 0, 5714, 5715, 7, 19, 0, 0, 5715, 5716, 7, 7, 0, 0, 5716, 5717, 7, 14, 0, 0, 5717, 5718, 7, 5, 0, 0, 5718, 5719, 7, 16, 0, 0, 5719, 5720, 5, 95, 0, 0, 5720, 5721, 7, 28, 0, 0, 5721, 5722, 7, 9, 0, 0, 5722, 1180, 1, 0, 0, 0, 5723, 5724, 7, 25, 0, 0, 5724, 5725, 7, 19, 0, 0, 5725, 5726, 7, 13, 0, 0, 5726, 5727, 7, 15, 0, 0, 5727, 5728, 7, 5, 0, 0, 5728, 5729, 7, 16, 0, 0, 5729, 1182, 1, 0, 0, 0, 5730, 5731, 7, 17, 0, 0, 5731, 5732, 7, 7, 0, 0, 5732, 5733, 7, 17, 0, 0, 5733, 5734, 7, 16, 0, 0, 5734, 5735, 7, 14, 0, 0, 5735, 5736, 7, 5, 0, 0, 5736, 5737, 7, 24, 0, 0, 5737, 1184, 1, 0, 0, 0, 5738, 5739, 7, 6, 0, 0, 5739, 5740, 7, 10, 0, 0, 5740, 5741, 7, 7, 0, 0, 5741, 5742, 7, 23, 0, 0, 5742, 5743, 7, 16, 0, 0, 5743, 5744, 7, 20, 0, 0, 5744, 1186, 1, 0, 0, 0, 5745, 5746, 7, 6, 0, 0, 5746, 5747, 7, 24, 0, 0, 5747, 5748, 7, 5, 0, 0, 5748, 5749, 7, 12, 0, 0, 5749, 1188, 1, 0, 0, 0, 5750, 5751, 7, 6, 0, 0, 5751, 5752, 7, 16, 0, 0, 5752, 5753, 7, 13, 0, 0, 5753, 5754, 7, 17, 0, 0, 5754, 5755, 7, 15, 0, 0, 5755, 1190, 1, 0, 0, 0, 5756, 5757, 7, 15, 0, 0, 5757, 5758, 7, 12, 0, 0, 5758, 5759, 5, 53, 0, 0, 5759, 1192, 1, 0, 0, 0, 5760, 5761, 7, 24, 0, 0, 5761, 5762, 7, 5, 0, 0, 5762, 5763, 7, 13, 0, 0, 5763, 5764, 7, 9, 0, 0, 5764, 5765, 7, 10, 0, 0, 5765, 5766, 5, 95, 0, 0, 5766, 5767, 7, 17, 0, 0, 5767, 5768, 7, 12, 0, 0, 5768, 5769, 7, 10, 0, 0, 5769, 5770, 7, 7, 0, 0, 5770, 5771, 7, 16, 0, 0, 5771, 1194, 1, 0, 0, 0, 5772, 5773, 7, 24, 0, 0, 5773, 5774, 7, 23, 0, 0, 5774, 5775, 5, 95, 0, 0, 5775, 5776, 7, 14, 0, 0, 5776, 5777, 7, 6, 0, 0, 5777, 5778, 7, 17, 0, 0, 5778, 5779, 7, 10, 0, 0, 5779, 5780, 7, 7, 0, 0, 5780, 5781, 7, 16, 0, 0, 5781, 5782, 5, 95, 0, 0, 5782, 5783, 7, 10, 0, 0, 5783, 5784, 7, 7, 0, 0, 5784, 5785, 7, 14, 0, 0, 5785, 5786, 7, 19, 0, 0, 5786, 5787, 7, 12, 0, 0, 5787, 5788, 7, 17, 0, 0, 5788, 5789, 7, 7, 0, 0, 5789, 5790, 7, 23, 0, 0, 5790, 1196, 1, 0, 0, 0, 5791, 5792, 7, 29, 0, 0, 5792, 5793, 7, 22, 0, 0, 5793, 5794, 7, 19, 0, 0, 5794, 5795, 7, 16, 0, 0, 5795, 5796, 7, 10, 0, 0, 5796, 5797, 5, 95, 0, 0, 5797, 5798, 7, 17, 0, 0, 5798, 5799, 7, 12, 0, 0, 5799, 5800, 7, 10, 0, 0, 5800, 5801, 7, 7, 0, 0, 5801, 5802, 7, 16, 0, 0, 5802, 1198, 1, 0, 0, 0, 5803, 5804, 7, 29, 0, 0, 5804, 5805, 7, 22, 0, 0, 5805, 5806, 7, 19, 0, 0, 5806, 5807, 7, 16, 0, 0, 5807, 5808, 7, 10, 0, 0, 5808, 5809, 5, 95, 0, 0, 5809, 5810, 7, 6, 0, 0, 5810, 5811, 7, 17, 0, 0, 5811, 5812, 7, 16, 0, 0, 5812, 5813, 7, 10, 0, 0, 5813, 5814, 7, 13, 0, 0, 5814, 5815, 7, 5, 0, 0, 5815, 5816, 7, 6, 0, 0, 5816, 1200, 1, 0, 0, 0, 5817, 5818, 7, 29, 0, 0, 5818, 5819, 7, 22, 0, 0, 5819, 5820, 7, 19, 0, 0, 5820, 5821, 7, 16, 0, 0, 5821, 5822, 7, 10, 0, 0, 5822, 5823, 5, 95, 0, 0, 5823, 5824, 7, 7, 0, 0, 5824, 5825, 7, 22, 0, 0, 5825, 5826, 7, 6, 0, 0, 5826, 5827, 7, 6, 0, 0, 5827, 5828, 7, 5, 0, 0, 5828, 5829, 7, 18, 0, 0, 5829, 5830, 7, 6, 0, 0, 5830, 5831, 7, 10, 0, 0, 5831, 1202, 1, 0, 0, 0, 5832, 5833, 7, 13, 0, 0, 5833, 5834, 7, 10, 0, 0, 5834, 5835, 7, 23, 0, 0, 5835, 5836, 7, 10, 0, 0, 5836, 5837, 7, 26, 0, 0, 5837, 5838, 7, 24, 0, 0, 5838, 5839, 5, 95, 0, 0, 5839, 5840, 7, 14, 0, 0, 5840, 5841, 7, 19, 0, 0, 5841, 5842, 7, 22, 0, 0, 5842, 5843, 7, 7, 0, 0, 5843, 5844, 7, 16, 0, 0, 5844, 1204, 1, 0, 0, 0, 5845, 5846, 7, 13, 0, 0, 5846, 5847, 7, 10, 0, 0, 5847, 5848, 7, 23, 0, 0, 5848, 5849, 7, 10, 0, 0, 5849, 5850, 7, 26, 0, 0, 5850, 5851, 7, 24, 0, 0, 5851, 5852, 5, 95, 0, 0, 5852, 5853, 7, 17, 0, 0, 5853, 5854, 7, 7, 0, 0, 5854, 5855, 7, 9, 0, 0, 5855, 5856, 7, 16, 0, 0, 5856, 5857, 7, 13, 0, 0, 5857, 1206, 1, 0, 0, 0, 5858, 5859, 7, 13, 0, 0, 5859, 5860, 7, 10, 0, 0, 5860, 5861, 7, 23, 0, 0, 5861, 5862, 7, 10, 0, 0, 5862, 5863, 7, 26, 0, 0, 5863, 5864, 7, 24, 0, 0, 5864, 5865, 5, 95, 0, 0, 5865, 5866, 7, 6, 0, 0, 5866, 5867, 7, 17, 0, 0, 5867, 5868, 7, 21, 0, 0, 5868, 5869, 7, 10, 0, 0, 5869, 1208, 1, 0, 0, 0, 5870, 5871, 7, 13, 0, 0, 5871, 5872, 7, 10, 0, 0, 5872, 5873, 7, 23, 0, 0, 5873, 5874, 7, 10, 0, 0, 5874, 5875, 7, 26, 0, 0, 5875, 5876, 7, 24, 0, 0, 5876, 5877, 5, 95, 0, 0, 5877, 5878, 7, 15, 0, 0, 5878, 5879, 7, 5, 0, 0, 5879, 5880, 7, 16, 0, 0, 5880, 5881, 7, 14, 0, 0, 5881, 5882, 7, 20, 0, 0, 5882, 1210, 1, 0, 0, 0, 5883, 5884, 7, 13, 0, 0, 5884, 5885, 7, 10, 0, 0, 5885, 5886, 7, 23, 0, 0, 5886, 5887, 7, 10, 0, 0, 5887, 5888, 7, 26, 0, 0, 5888, 5889, 7, 24, 0, 0, 5889, 5890, 5, 95, 0, 0, 5890, 5891, 7, 15, 0, 0, 5891, 5892, 7, 5, 0, 0, 5892, 5893, 7, 16, 0, 0, 5893, 5894, 7, 14, 0, 0, 5894, 5895, 7, 20, 0, 0, 5895, 5896, 7, 10, 0, 0, 5896, 5897, 7, 9, 0, 0, 5897, 1212, 1, 0, 0, 0, 5898, 5899, 7, 13, 0, 0, 5899, 5900, 7, 10, 0, 0, 5900, 5901, 7, 23, 0, 0, 5901, 5902, 7, 10, 0, 0, 5902, 5903, 7, 26, 0, 0, 5903, 5904, 7, 24, 0, 0, 5904, 5905, 5, 95, 0, 0, 5905, 5906, 7, 13, 0, 0, 5906, 5907, 7, 10, 0, 0, 5907, 5908, 7, 24, 0, 0, 5908, 5909, 7, 6, 0, 0, 5909, 5910, 7, 5, 0, 0, 5910, 5911, 7, 14, 0, 0, 5911, 5912, 7, 10, 0, 0, 5912, 1214, 1, 0, 0, 0, 5913, 5914, 7, 13, 0, 0, 5914, 5915, 7, 10, 0, 0, 5915, 5916, 7, 23, 0, 0, 5916, 5917, 7, 10, 0, 0, 5917, 5918, 7, 26, 0, 0, 5918, 5919, 7, 24, 0, 0, 5919, 5920, 5, 95, 0, 0, 5920, 5921, 7, 9, 0, 0, 5921, 5922, 7, 24, 0, 0, 5922, 5923, 7, 6, 0, 0, 5923, 5924, 7, 17, 0, 0, 5924, 5925, 7, 16, 0, 0, 5925, 5926, 5, 95, 0, 0, 5926, 5927, 7, 16, 0, 0, 5927, 5928, 7, 19, 0, 0, 5928, 5929, 5, 95, 0, 0, 5929, 5930, 7, 5, 0, 0, 5930, 5931, 7, 13, 0, 0, 5931, 5932, 7, 13, 0, 0, 5932, 5933, 7, 5, 0, 0, 5933, 5934, 7, 8, 0, 0, 5934, 1216, 1, 0, 0, 0, 5935, 5936, 7, 13, 0, 0, 5936, 5937, 7, 10, 0, 0, 5937, 5938, 7, 23, 0, 0, 5938, 5939, 7, 10, 0, 0, 5939, 5940, 7, 26, 0, 0, 5940, 5941, 7, 24, 0, 0, 5941, 5942, 5, 95, 0, 0, 5942, 5943, 7, 9, 0, 0, 5943, 5944, 7, 24, 0, 0, 5944, 5945, 7, 6, 0, 0, 5945, 5946, 7, 17, 0, 0, 5946, 5947, 7, 16, 0, 0, 5947, 5948, 5, 95, 0, 0, 5948, 5949, 7, 16, 0, 0, 5949, 5950, 7, 19, 0, 0, 5950, 5951, 5, 95, 0, 0, 5951, 5952, 7, 16, 0, 0, 5952, 5953, 7, 5, 0, 0, 5953, 5954, 7, 18, 0, 0, 5954, 5955, 7, 6, 0, 0, 5955, 5956, 7, 10, 0, 0, 5956, 1218, 1, 0, 0, 0, 5957, 5958, 7, 13, 0, 0, 5958, 5959, 7, 10, 0, 0, 5959, 5960, 7, 23, 0, 0, 5960, 5961, 7, 10, 0, 0, 5961, 5962, 7, 26, 0, 0, 5962, 5963, 7, 24, 0, 0, 5963, 5964, 5, 95, 0, 0, 5964, 5965, 7, 9, 0, 0, 5965, 5966, 7, 22, 0, 0, 5966, 5967, 7, 18, 0, 0, 5967, 5968, 7, 9, 0, 0, 5968, 5969, 7, 16, 0, 0, 5969, 5970, 7, 13, 0, 0, 5970, 1220, 1, 0, 0, 0, 5971, 5972, 7, 13, 0, 0, 5972, 5973, 7, 10, 0, 0, 5973, 5974, 7, 24, 0, 0, 5974, 5975, 7, 10, 0, 0, 5975, 5976, 7, 5, 0, 0, 5976, 5977, 7, 16, 0, 0, 5977, 1222, 1, 0, 0, 0, 5978, 5979, 7, 13, 0, 0, 5979, 5980, 7, 24, 0, 0, 5980, 5981, 7, 5, 0, 0, 5981, 5982, 7, 12, 0, 0, 5982, 1224, 1, 0, 0, 0, 5983, 5984, 7, 13, 0, 0, 5984, 5985, 7, 16, 0, 0, 5985, 5986, 7, 13, 0, 0, 5986, 5987, 7, 17, 0, 0, 5987, 5988, 7, 15, 0, 0, 5988, 1226, 1, 0, 0, 0, 5989, 5990, 7, 9, 0, 0, 5990, 5991, 7, 24, 0, 0, 5991, 5992, 7, 6, 0, 0, 5992, 5993, 7, 17, 0, 0, 5993, 5994, 7, 16, 0, 0, 5994, 5995, 5, 95, 0, 0, 5995, 5996, 7, 24, 0, 0, 5996, 5997, 7, 5, 0, 0, 5997, 5998, 7, 13, 0, 0, 5998, 5999, 7, 16, 0, 0, 5999, 1228, 1, 0, 0, 0, 6000, 6001, 7, 9, 0, 0, 6001, 6002, 7, 16, 0, 0, 6002, 6003, 7, 5, 0, 0, 6003, 6004, 7, 13, 0, 0, 6004, 6005, 7, 16, 0, 0, 6005, 6006, 7, 9, 0, 0, 6006, 6007, 5, 95, 0, 0, 6007, 6008, 7, 28, 0, 0, 6008, 6009, 7, 17, 0, 0, 6009, 6010, 7, 16, 0, 0, 6010, 6011, 7, 20, 0, 0, 6011, 1230, 1, 0, 0, 0, 6012, 6013, 7, 9, 0, 0, 6013, 6014, 7, 16, 0, 0, 6014, 6015, 7, 13, 0, 0, 6015, 6016, 7, 17, 0, 0, 6016, 6017, 7, 7, 0, 0, 6017, 6018, 7, 23, 0, 0, 6018, 6019, 5, 95, 0, 0, 6019, 6020, 7, 16, 0, 0, 6020, 6021, 7, 19, 0, 0, 6021, 6022, 5, 95, 0, 0, 6022, 6023, 7, 5, 0, 0, 6023, 6024, 7, 13, 0, 0, 6024, 6025, 7, 13, 0, 0, 6025, 6026, 7, 5, 0, 0, 6026, 6027, 7, 8, 0, 0, 6027, 1232, 1, 0, 0, 0, 6028, 6029, 7, 9, 0, 0, 6029, 6030, 7, 16, 0, 0, 6030, 6031, 7, 13, 0, 0, 6031, 6032, 7, 17, 0, 0, 6032, 6033, 7, 7, 0, 0, 6033, 6034, 7, 23, 0, 0, 6034, 6035, 5, 95, 0, 0, 6035, 6036, 7, 16, 0, 0, 6036, 6037, 7, 19, 0, 0, 6037, 6038, 5, 95, 0, 0, 6038, 6039, 7, 16, 0, 0, 6039, 6040, 7, 5, 0, 0, 6040, 6041, 7, 18, 0, 0, 6041, 6042, 7, 6, 0, 0, 6042, 6043, 7, 10, 0, 0, 6043, 1234, 1, 0, 0, 0, 6044, 6045, 7, 9, 0, 0, 6045, 6046, 7, 16, 0, 0, 6046, 6047, 7, 13, 0, 0, 6047, 6048, 7, 24, 0, 0, 6048, 6049, 7, 19, 0, 0, 6049, 6050, 7, 9, 0, 0, 6050, 1236, 1, 0, 0, 0, 6051, 6052, 7, 9, 0, 0, 6052, 6053, 7, 22, 0, 0, 6053, 6054, 7, 18, 0, 0, 6054, 6055, 7, 9, 0, 0, 6055, 6056, 7, 16, 0, 0, 6056, 6057, 7, 13, 0, 0, 6057, 1238, 1, 0, 0, 0, 6058, 6059, 7, 16, 0, 0, 6059, 6060, 7, 19, 0, 0, 6060, 6061, 5, 95, 0, 0, 6061, 6062, 7, 5, 0, 0, 6062, 6063, 7, 9, 0, 0, 6063, 6064, 7, 14, 0, 0, 6064, 6065, 7, 17, 0, 0, 6065, 6066, 7, 17, 0, 0, 6066, 1240, 1, 0, 0, 0, 6067, 6068, 7, 16, 0, 0, 6068, 6069, 7, 19, 0, 0, 6069, 6070, 5, 95, 0, 0, 6070, 6071, 7, 20, 0, 0, 6071, 6072, 7, 10, 0, 0, 6072, 6073, 7, 26, 0, 0, 6073, 1242, 1, 0, 0, 0, 6074, 6075, 7, 16, 0, 0, 6075, 6076, 7, 13, 0, 0, 6076, 6077, 7, 5, 0, 0, 6077, 6078, 7, 7, 0, 0, 6078, 6079, 7, 9, 0, 0, 6079, 6080, 7, 6, 0, 0, 6080, 6081, 7, 5, 0, 0, 6081, 6082, 7, 16, 0, 0, 6082, 6083, 7, 10, 0, 0, 6083, 1244, 1, 0, 0, 0, 6084, 6085, 7, 22, 0, 0, 6085, 6086, 7, 7, 0, 0, 6086, 6087, 7, 17, 0, 0, 6087, 6088, 7, 9, 0, 0, 6088, 6089, 7, 16, 0, 0, 6089, 6090, 7, 13, 0, 0, 6090, 1246, 1, 0, 0, 0, 6091, 6092, 7, 5, 0, 0, 6092, 6093, 7, 23, 0, 0, 6093, 6094, 7, 10, 0, 0, 6094, 1248, 1, 0, 0, 0, 6095, 6096, 7, 14, 0, 0, 6096, 6097, 7, 6, 0, 0, 6097, 6098, 7, 19, 0, 0, 6098, 6099, 7, 14, 0, 0, 6099, 6100, 7, 21, 0, 0, 6100, 6101, 5, 95, 0, 0, 6101, 6102, 7, 16, 0, 0, 6102, 6103, 7, 17, 0, 0, 6103, 6104, 7, 15, 0, 0, 6104, 6105, 7, 10, 0, 0, 6105, 6106, 7, 9, 0, 0, 6106, 6107, 7, 16, 0, 0, 6107, 6108, 7, 5, 0, 0, 6108, 6109, 7, 15, 0, 0, 6109, 6110, 7, 24, 0, 0, 6110, 1250, 1, 0, 0, 0, 6111, 6112, 7, 12, 0, 0, 6112, 6113, 7, 5, 0, 0, 6113, 6114, 7, 16, 0, 0, 6114, 6115, 7, 10, 0, 0, 6115, 6116, 5, 95, 0, 0, 6116, 6117, 7, 18, 0, 0, 6117, 6118, 7, 17, 0, 0, 6118, 6119, 7, 7, 0, 0, 6119, 1252, 1, 0, 0, 0, 6120, 6121, 7, 12, 0, 0, 6121, 6122, 7, 5, 0, 0, 6122, 6123, 7, 16, 0, 0, 6123, 6124, 7, 10, 0, 0, 6124, 6125, 5, 95, 0, 0, 6125, 6126, 7, 24, 0, 0, 6126, 6127, 7, 5, 0, 0, 6127, 6128, 7, 13, 0, 0, 6128, 6129, 7, 16, 0, 0, 6129, 1254, 1, 0, 0, 0, 6130, 6131, 7, 12, 0, 0, 6131, 6132, 7, 5, 0, 0, 6132, 6133, 7, 16, 0, 0, 6133, 6134, 7, 10, 0, 0, 6134, 6135, 5, 95, 0, 0, 6135, 6136, 7, 16, 0, 0, 6136, 6137, 7, 13, 0, 0, 6137, 6138, 7, 22, 0, 0, 6138, 6139, 7, 7, 0, 0, 6139, 6140, 7, 14, 0, 0, 6140, 1256, 1, 0, 0, 0, 6141, 6142, 7, 17, 0, 0, 6142, 6143, 7, 9, 0, 0, 6143, 6144, 7, 25, 0, 0, 6144, 6145, 7, 17, 0, 0, 6145, 6146, 7, 7, 0, 0, 6146, 6147, 7, 17, 0, 0, 6147, 6148, 7, 16, 0, 0, 6148, 6149, 7, 10, 0, 0, 6149, 1258, 1, 0, 0, 0, 6150, 6151, 7, 30, 0, 0, 6151, 6152, 7, 22, 0, 0, 6152, 6153, 7, 9, 0, 0, 6153, 6154, 7, 16, 0, 0, 6154, 6155, 7, 17, 0, 0, 6155, 6156, 7, 25, 0, 0, 6156, 6157, 7, 8, 0, 0, 6157, 6158, 5, 95, 0, 0, 6158, 6159, 7, 12, 0, 0, 6159, 6160, 7, 5, 0, 0, 6160, 6161, 7, 8, 0, 0, 6161, 6162, 7, 9, 0, 0, 6162, 1260, 1, 0, 0, 0, 6163, 6164, 7, 30, 0, 0, 6164, 6165, 7, 22, 0, 0, 6165, 6166, 7, 9, 0, 0, 6166, 6167, 7, 16, 0, 0, 6167, 6168, 7, 17, 0, 0, 6168, 6169, 7, 25, 0, 0, 6169, 6170, 7, 8, 0, 0, 6170, 6171, 5, 95, 0, 0, 6171, 6172, 7, 20, 0, 0, 6172, 6173, 7, 19, 0, 0, 6173, 6174, 7, 22, 0, 0, 6174, 6175, 7, 13, 0, 0, 6175, 6176, 7, 9, 0, 0, 6176, 1262, 1, 0, 0, 0, 6177, 6178, 7, 30, 0, 0, 6178, 6179, 7, 22, 0, 0, 6179, 6180, 7, 9, 0, 0, 6180, 6181, 7, 16, 0, 0, 6181, 6182, 7, 17, 0, 0, 6182, 6183, 7, 25, 0, 0, 6183, 6184, 7, 8, 0, 0, 6184, 6185, 5, 95, 0, 0, 6185, 6186, 7, 17, 0, 0, 6186, 6187, 7, 7, 0, 0, 6187, 6188, 7, 16, 0, 0, 6188, 6189, 7, 10, 0, 0, 6189, 6190, 7, 13, 0, 0, 6190, 6191, 7, 27, 0, 0, 6191, 6192, 7, 5, 0, 0, 6192, 6193, 7, 6, 0, 0, 6193, 1264, 1, 0, 0, 0, 6194, 6195, 7, 15, 0, 0, 6195, 6196, 7, 5, 0, 0, 6196, 6197, 7, 21, 0, 0, 6197, 6198, 7, 10, 0, 0, 6198, 6199, 5, 95, 0, 0, 6199, 6200, 7, 12, 0, 0, 6200, 6201, 7, 5, 0, 0, 6201, 6202, 7, 16, 0, 0, 6202, 6203, 7, 10, 0, 0, 6203, 1266, 1, 0, 0, 0, 6204, 6205, 7, 15, 0, 0, 6205, 6206, 7, 5, 0, 0, 6206, 6207, 7, 21, 0, 0, 6207, 6208, 7, 10, 0, 0, 6208, 6209, 5, 95, 0, 0, 6209, 6210, 7, 17, 0, 0, 6210, 6211, 7, 7, 0, 0, 6211, 6212, 7, 16, 0, 0, 6212, 6213, 7, 10, 0, 0, 6213, 6214, 7, 13, 0, 0, 6214, 6215, 7, 27, 0, 0, 6215, 6216, 7, 5, 0, 0, 6216, 6217, 7, 6, 0, 0, 6217, 1268, 1, 0, 0, 0, 6218, 6219, 7, 15, 0, 0, 6219, 6220, 7, 5, 0, 0, 6220, 6221, 7, 21, 0, 0, 6221, 6222, 7, 10, 0, 0, 6222, 6223, 5, 95, 0, 0, 6223, 6224, 7, 16, 0, 0, 6224, 6225, 7, 17, 0, 0, 6225, 6226, 7, 15, 0, 0, 6226, 6227, 7, 10, 0, 0, 6227, 1270, 1, 0, 0, 0, 6228, 6229, 7, 15, 0, 0, 6229, 6230, 7, 5, 0, 0, 6230, 6231, 7, 21, 0, 0, 6231, 6232, 7, 10, 0, 0, 6232, 6233, 5, 95, 0, 0, 6233, 6234, 7, 16, 0, 0, 6234, 6235, 7, 17, 0, 0, 6235, 6236, 7, 15, 0, 0, 6236, 6237, 7, 10, 0, 0, 6237, 6238, 7, 9, 0, 0, 6238, 6239, 7, 16, 0, 0, 6239, 6240, 7, 5, 0, 0, 6240, 6241, 7, 15, 0, 0, 6241, 6242, 7, 24, 0, 0, 6242, 1272, 1, 0, 0, 0, 6243, 6244, 7, 15, 0, 0, 6244, 6245, 7, 5, 0, 0, 6245, 6246, 7, 21, 0, 0, 6246, 6247, 7, 10, 0, 0, 6247, 6248, 5, 95, 0, 0, 6248, 6249, 7, 16, 0, 0, 6249, 6250, 7, 17, 0, 0, 6250, 6251, 7, 15, 0, 0, 6251, 6252, 7, 10, 0, 0, 6252, 6253, 7, 9, 0, 0, 6253, 6254, 7, 16, 0, 0, 6254, 6255, 7, 5, 0, 0, 6255, 6256, 7, 15, 0, 0, 6256, 6257, 7, 24, 0, 0, 6257, 6258, 7, 16, 0, 0, 6258, 6259, 7, 11, 0, 0, 6259, 1274, 1, 0, 0, 0, 6260, 6261, 7, 7, 0, 0, 6261, 6262, 7, 19, 0, 0, 6262, 6263, 7, 28, 0, 0, 6263, 1276, 1, 0, 0, 0, 6264, 6265, 7, 9, 0, 0, 6265, 6266, 7, 16, 0, 0, 6266, 6267, 7, 5, 0, 0, 6267, 6268, 7, 16, 0, 0, 6268, 6269, 7, 10, 0, 0, 6269, 6270, 7, 15, 0, 0, 6270, 6271, 7, 10, 0, 0, 6271, 6272, 7, 7, 0, 0, 6272, 6273, 7, 16, 0, 0, 6273, 6274, 5, 95, 0, 0, 6274, 6275, 7, 16, 0, 0, 6275, 6276, 7, 17, 0, 0, 6276, 6277, 7, 15, 0, 0, 6277, 6278, 7, 10, 0, 0, 6278, 6279, 7, 9, 0, 0, 6279, 6280, 7, 16, 0, 0, 6280, 6281, 7, 5, 0, 0, 6281, 6282, 7, 15, 0, 0, 6282, 6283, 7, 24, 0, 0, 6283, 1278, 1, 0, 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, 19, 0, 0, 6289, 6290, 7, 25, 0, 0, 6290, 6291, 7, 12, 0, 0, 6291, 6292, 7, 5, 0, 0, 6292, 6293, 7, 8, 0, 0, 6293, 1280, 1, 0, 0, 0, 6294, 6295, 7, 16, 0, 0, 6295, 6296, 7, 13, 0, 0, 6296, 6297, 7, 5, 0, 0, 6297, 6298, 7, 7, 0, 0, 6298, 6299, 7, 9, 0, 0, 6299, 6300, 7, 5, 0, 0, 6300, 6301, 7, 14, 0, 0, 6301, 6302, 7, 16, 0, 0, 6302, 6303, 7, 17, 0, 0, 6303, 6304, 7, 19, 0, 0, 6304, 6305, 7, 7, 0, 0, 6305, 6306, 5, 95, 0, 0, 6306, 6307, 7, 16, 0, 0, 6307, 6308, 7, 17, 0, 0, 6308, 6309, 7, 15, 0, 0, 6309, 6310, 7, 10, 0, 0, 6310, 6311, 7, 9, 0, 0, 6311, 6312, 7, 16, 0, 0, 6312, 6313, 7, 5, 0, 0, 6313, 6314, 7, 15, 0, 0, 6314, 6315, 7, 24, 0, 0, 6315, 1282, 1, 0, 0, 0, 6316, 6317, 7, 16, 0, 0, 6317, 6318, 7, 19, 0, 0, 6318, 6319, 5, 95, 0, 0, 6319, 6320, 7, 16, 0, 0, 6320, 6321, 7, 17, 0, 0, 6321, 6322, 7, 15, 0, 0, 6322, 6323, 7, 10, 0, 0, 6323, 6324, 7, 9, 0, 0, 6324, 6325, 7, 16, 0, 0, 6325, 6326, 7, 5, 0, 0, 6326, 6327, 7, 15, 0, 0, 6327, 6328, 7, 24, 0, 0, 6328, 1284, 1, 0, 0, 0, 6329, 6330, 7, 16, 0, 0, 6330, 6331, 7, 19, 0, 0, 6331, 6332, 5, 95, 0, 0, 6332, 6333, 7, 14, 0, 0, 6333, 6334, 7, 20, 0, 0, 6334, 6335, 7, 5, 0, 0, 6335, 6336, 7, 13, 0, 0, 6336, 1286, 1, 0, 0, 0, 6337, 6338, 7, 16, 0, 0, 6338, 6339, 7, 19, 0, 0, 6339, 6340, 5, 95, 0, 0, 6340, 6341, 7, 12, 0, 0, 6341, 6342, 7, 5, 0, 0, 6342, 6343, 7, 16, 0, 0, 6343, 6344, 7, 10, 0, 0, 6344, 1288, 1, 0, 0, 0, 6345, 6346, 7, 16, 0, 0, 6346, 6347, 7, 19, 0, 0, 6347, 6348, 5, 95, 0, 0, 6348, 6349, 7, 7, 0, 0, 6349, 6350, 7, 22, 0, 0, 6350, 6351, 7, 15, 0, 0, 6351, 6352, 7, 18, 0, 0, 6352, 6353, 7, 10, 0, 0, 6353, 6354, 7, 13, 0, 0, 6354, 1290, 1, 0, 0, 0, 6355, 6359, 3, 1293, 644, 0, 6356, 6358, 3, 1295, 645, 0, 6357, 6356, 1, 0, 0, 0, 6358, 6361, 1, 0, 0, 0, 6359, 6357, 1, 0, 0, 0, 6359, 6360, 1, 0, 0, 0, 6360, 1292, 1, 0, 0, 0, 6361, 6359, 1, 0, 0, 0, 6362, 6369, 7, 31, 0, 0, 6363, 6364, 7, 32, 0, 0, 6364, 6369, 4, 644, 6, 0, 6365, 6366, 7, 33, 0, 0, 6366, 6367, 7, 34, 0, 0, 6367, 6369, 4, 644, 7, 0, 6368, 6362, 1, 0, 0, 0, 6368, 6363, 1, 0, 0, 0, 6368, 6365, 1, 0, 0, 0, 6369, 1294, 1, 0, 0, 0, 6370, 6373, 3, 1297, 646, 0, 6371, 6373, 5, 36, 0, 0, 6372, 6370, 1, 0, 0, 0, 6372, 6371, 1, 0, 0, 0, 6373, 1296, 1, 0, 0, 0, 6374, 6377, 3, 1293, 644, 0, 6375, 6377, 7, 0, 0, 0, 6376, 6374, 1, 0, 0, 0, 6376, 6375, 1, 0, 0, 0, 6377, 1298, 1, 0, 0, 0, 6378, 6379, 3, 1301, 648, 0, 6379, 6380, 5, 34, 0, 0, 6380, 1300, 1, 0, 0, 0, 6381, 6387, 5, 34, 0, 0, 6382, 6383, 5, 34, 0, 0, 6383, 6386, 5, 34, 0, 0, 6384, 6386, 8, 35, 0, 0, 6385, 6382, 1, 0, 0, 0, 6385, 6384, 1, 0, 0, 0, 6386, 6389, 1, 0, 0, 0, 6387, 6385, 1, 0, 0, 0, 6387, 6388, 1, 0, 0, 0, 6388, 1302, 1, 0, 0, 0, 6389, 6387, 1, 0, 0, 0, 6390, 6391, 3, 1305, 650, 0, 6391, 6392, 5, 34, 0, 0, 6392, 1304, 1, 0, 0, 0, 6393, 6399, 5, 34, 0, 0, 6394, 6395, 5, 34, 0, 0, 6395, 6398, 5, 34, 0, 0, 6396, 6398, 8, 36, 0, 0, 6397, 6394, 1, 0, 0, 0, 6397, 6396, 1, 0, 0, 0, 6398, 6401, 1, 0, 0, 0, 6399, 6397, 1, 0, 0, 0, 6399, 6400, 1, 0, 0, 0, 6400, 1306, 1, 0, 0, 0, 6401, 6399, 1, 0, 0, 0, 6402, 6403, 7, 22, 0, 0, 6403, 6404, 5, 38, 0, 0, 6404, 6405, 3, 1299, 647, 0, 6405, 1308, 1, 0, 0, 0, 6406, 6407, 7, 22, 0, 0, 6407, 6408, 5, 38, 0, 0, 6408, 6409, 3, 1301, 648, 0, 6409, 1310, 1, 0, 0, 0, 6410, 6411, 7, 22, 0, 0, 6411, 6412, 5, 38, 0, 0, 6412, 6413, 3, 1303, 649, 0, 6413, 1312, 1, 0, 0, 0, 6414, 6415, 7, 22, 0, 0, 6415, 6416, 5, 38, 0, 0, 6416, 6417, 3, 1305, 650, 0, 6417, 1314, 1, 0, 0, 0, 6418, 6419, 3, 1317, 656, 0, 6419, 6420, 5, 39, 0, 0, 6420, 1316, 1, 0, 0, 0, 6421, 6427, 5, 39, 0, 0, 6422, 6423, 5, 39, 0, 0, 6423, 6426, 5, 39, 0, 0, 6424, 6426, 8, 37, 0, 0, 6425, 6422, 1, 0, 0, 0, 6425, 6424, 1, 0, 0, 0, 6426, 6429, 1, 0, 0, 0, 6427, 6425, 1, 0, 0, 0, 6427, 6428, 1, 0, 0, 0, 6428, 1318, 1, 0, 0, 0, 6429, 6427, 1, 0, 0, 0, 6430, 6431, 7, 10, 0, 0, 6431, 6432, 5, 39, 0, 0, 6432, 6433, 1, 0, 0, 0, 6433, 6434, 6, 657, 2, 0, 6434, 6435, 6, 657, 3, 0, 6435, 1320, 1, 0, 0, 0, 6436, 6437, 3, 1323, 659, 0, 6437, 6438, 5, 39, 0, 0, 6438, 1322, 1, 0, 0, 0, 6439, 6440, 7, 22, 0, 0, 6440, 6441, 5, 38, 0, 0, 6441, 6442, 3, 1317, 656, 0, 6442, 1324, 1, 0, 0, 0, 6443, 6445, 5, 36, 0, 0, 6444, 6446, 3, 1327, 661, 0, 6445, 6444, 1, 0, 0, 0, 6445, 6446, 1, 0, 0, 0, 6446, 6447, 1, 0, 0, 0, 6447, 6448, 5, 36, 0, 0, 6448, 6449, 6, 660, 4, 0, 6449, 6450, 1, 0, 0, 0, 6450, 6451, 6, 660, 5, 0, 6451, 1326, 1, 0, 0, 0, 6452, 6456, 3, 1293, 644, 0, 6453, 6455, 3, 1297, 646, 0, 6454, 6453, 1, 0, 0, 0, 6455, 6458, 1, 0, 0, 0, 6456, 6454, 1, 0, 0, 0, 6456, 6457, 1, 0, 0, 0, 6457, 1328, 1, 0, 0, 0, 6458, 6456, 1, 0, 0, 0, 6459, 6460, 3, 1331, 663, 0, 6460, 6461, 5, 39, 0, 0, 6461, 1330, 1, 0, 0, 0, 6462, 6463, 7, 18, 0, 0, 6463, 6467, 5, 39, 0, 0, 6464, 6466, 7, 38, 0, 0, 6465, 6464, 1, 0, 0, 0, 6466, 6469, 1, 0, 0, 0, 6467, 6465, 1, 0, 0, 0, 6467, 6468, 1, 0, 0, 0, 6468, 1332, 1, 0, 0, 0, 6469, 6467, 1, 0, 0, 0, 6470, 6471, 3, 1335, 665, 0, 6471, 6472, 5, 39, 0, 0, 6472, 1334, 1, 0, 0, 0, 6473, 6474, 7, 18, 0, 0, 6474, 6475, 3, 1317, 656, 0, 6475, 1336, 1, 0, 0, 0, 6476, 6477, 3, 1339, 667, 0, 6477, 6478, 5, 39, 0, 0, 6478, 1338, 1, 0, 0, 0, 6479, 6480, 7, 26, 0, 0, 6480, 6484, 5, 39, 0, 0, 6481, 6483, 7, 39, 0, 0, 6482, 6481, 1, 0, 0, 0, 6483, 6486, 1, 0, 0, 0, 6484, 6482, 1, 0, 0, 0, 6484, 6485, 1, 0, 0, 0, 6485, 1340, 1, 0, 0, 0, 6486, 6484, 1, 0, 0, 0, 6487, 6488, 3, 1343, 669, 0, 6488, 6489, 5, 39, 0, 0, 6489, 1342, 1, 0, 0, 0, 6490, 6491, 7, 26, 0, 0, 6491, 6492, 3, 1317, 656, 0, 6492, 1344, 1, 0, 0, 0, 6493, 6494, 3, 1351, 673, 0, 6494, 1346, 1, 0, 0, 0, 6495, 6496, 3, 1351, 673, 0, 6496, 6497, 5, 46, 0, 0, 6497, 6498, 5, 46, 0, 0, 6498, 6499, 1, 0, 0, 0, 6499, 6500, 6, 671, 6, 0, 6500, 1348, 1, 0, 0, 0, 6501, 6502, 3, 1351, 673, 0, 6502, 6504, 5, 46, 0, 0, 6503, 6505, 3, 1351, 673, 0, 6504, 6503, 1, 0, 0, 0, 6504, 6505, 1, 0, 0, 0, 6505, 6511, 1, 0, 0, 0, 6506, 6508, 7, 10, 0, 0, 6507, 6509, 7, 1, 0, 0, 6508, 6507, 1, 0, 0, 0, 6508, 6509, 1, 0, 0, 0, 6509, 6510, 1, 0, 0, 0, 6510, 6512, 3, 1351, 673, 0, 6511, 6506, 1, 0, 0, 0, 6511, 6512, 1, 0, 0, 0, 6512, 6530, 1, 0, 0, 0, 6513, 6514, 5, 46, 0, 0, 6514, 6520, 3, 1351, 673, 0, 6515, 6517, 7, 10, 0, 0, 6516, 6518, 7, 1, 0, 0, 6517, 6516, 1, 0, 0, 0, 6517, 6518, 1, 0, 0, 0, 6518, 6519, 1, 0, 0, 0, 6519, 6521, 3, 1351, 673, 0, 6520, 6515, 1, 0, 0, 0, 6520, 6521, 1, 0, 0, 0, 6521, 6530, 1, 0, 0, 0, 6522, 6523, 3, 1351, 673, 0, 6523, 6525, 7, 10, 0, 0, 6524, 6526, 7, 1, 0, 0, 6525, 6524, 1, 0, 0, 0, 6525, 6526, 1, 0, 0, 0, 6526, 6527, 1, 0, 0, 0, 6527, 6528, 3, 1351, 673, 0, 6528, 6530, 1, 0, 0, 0, 6529, 6501, 1, 0, 0, 0, 6529, 6513, 1, 0, 0, 0, 6529, 6522, 1, 0, 0, 0, 6530, 1350, 1, 0, 0, 0, 6531, 6533, 7, 0, 0, 0, 6532, 6531, 1, 0, 0, 0, 6533, 6534, 1, 0, 0, 0, 6534, 6532, 1, 0, 0, 0, 6534, 6535, 1, 0, 0, 0, 6535, 1352, 1, 0, 0, 0, 6536, 6537, 5, 58, 0, 0, 6537, 6541, 7, 40, 0, 0, 6538, 6540, 7, 41, 0, 0, 6539, 6538, 1, 0, 0, 0, 6540, 6543, 1, 0, 0, 0, 6541, 6539, 1, 0, 0, 0, 6541, 6542, 1, 0, 0, 0, 6542, 1354, 1, 0, 0, 0, 6543, 6541, 1, 0, 0, 0, 6544, 6545, 5, 58, 0, 0, 6545, 6546, 5, 34, 0, 0, 6546, 6554, 1, 0, 0, 0, 6547, 6548, 5, 92, 0, 0, 6548, 6553, 9, 0, 0, 0, 6549, 6550, 5, 34, 0, 0, 6550, 6553, 5, 34, 0, 0, 6551, 6553, 8, 42, 0, 0, 6552, 6547, 1, 0, 0, 0, 6552, 6549, 1, 0, 0, 0, 6552, 6551, 1, 0, 0, 0, 6553, 6556, 1, 0, 0, 0, 6554, 6552, 1, 0, 0, 0, 6554, 6555, 1, 0, 0, 0, 6555, 6557, 1, 0, 0, 0, 6556, 6554, 1, 0, 0, 0, 6557, 6558, 5, 34, 0, 0, 6558, 1356, 1, 0, 0, 0, 6559, 6561, 7, 43, 0, 0, 6560, 6559, 1, 0, 0, 0, 6561, 6562, 1, 0, 0, 0, 6562, 6560, 1, 0, 0, 0, 6562, 6563, 1, 0, 0, 0, 6563, 6564, 1, 0, 0, 0, 6564, 6565, 6, 676, 7, 0, 6565, 1358, 1, 0, 0, 0, 6566, 6568, 5, 13, 0, 0, 6567, 6569, 5, 10, 0, 0, 6568, 6567, 1, 0, 0, 0, 6568, 6569, 1, 0, 0, 0, 6569, 6572, 1, 0, 0, 0, 6570, 6572, 5, 10, 0, 0, 6571, 6566, 1, 0, 0, 0, 6571, 6570, 1, 0, 0, 0, 6572, 6573, 1, 0, 0, 0, 6573, 6574, 6, 677, 7, 0, 6574, 1360, 1, 0, 0, 0, 6575, 6576, 5, 45, 0, 0, 6576, 6577, 5, 45, 0, 0, 6577, 6581, 1, 0, 0, 0, 6578, 6580, 8, 44, 0, 0, 6579, 6578, 1, 0, 0, 0, 6580, 6583, 1, 0, 0, 0, 6581, 6579, 1, 0, 0, 0, 6581, 6582, 1, 0, 0, 0, 6582, 6584, 1, 0, 0, 0, 6583, 6581, 1, 0, 0, 0, 6584, 6585, 6, 678, 7, 0, 6585, 1362, 1, 0, 0, 0, 6586, 6587, 5, 47, 0, 0, 6587, 6588, 5, 42, 0, 0, 6588, 6611, 1, 0, 0, 0, 6589, 6591, 5, 47, 0, 0, 6590, 6589, 1, 0, 0, 0, 6591, 6594, 1, 0, 0, 0, 6592, 6590, 1, 0, 0, 0, 6592, 6593, 1, 0, 0, 0, 6593, 6595, 1, 0, 0, 0, 6594, 6592, 1, 0, 0, 0, 6595, 6610, 3, 1363, 679, 0, 6596, 6610, 8, 45, 0, 0, 6597, 6599, 5, 47, 0, 0, 6598, 6597, 1, 0, 0, 0, 6599, 6600, 1, 0, 0, 0, 6600, 6598, 1, 0, 0, 0, 6600, 6601, 1, 0, 0, 0, 6601, 6602, 1, 0, 0, 0, 6602, 6610, 8, 45, 0, 0, 6603, 6605, 5, 42, 0, 0, 6604, 6603, 1, 0, 0, 0, 6605, 6606, 1, 0, 0, 0, 6606, 6604, 1, 0, 0, 0, 6606, 6607, 1, 0, 0, 0, 6607, 6608, 1, 0, 0, 0, 6608, 6610, 8, 45, 0, 0, 6609, 6592, 1, 0, 0, 0, 6609, 6596, 1, 0, 0, 0, 6609, 6598, 1, 0, 0, 0, 6609, 6604, 1, 0, 0, 0, 6610, 6613, 1, 0, 0, 0, 6611, 6609, 1, 0, 0, 0, 6611, 6612, 1, 0, 0, 0, 6612, 6617, 1, 0, 0, 0, 6613, 6611, 1, 0, 0, 0, 6614, 6616, 5, 42, 0, 0, 6615, 6614, 1, 0, 0, 0, 6616, 6619, 1, 0, 0, 0, 6617, 6615, 1, 0, 0, 0, 6617, 6618, 1, 0, 0, 0, 6618, 6620, 1, 0, 0, 0, 6619, 6617, 1, 0, 0, 0, 6620, 6621, 5, 42, 0, 0, 6621, 6622, 5, 47, 0, 0, 6622, 6623, 1, 0, 0, 0, 6623, 6624, 6, 679, 7, 0, 6624, 1364, 1, 0, 0, 0, 6625, 6626, 5, 47, 0, 0, 6626, 6627, 5, 42, 0, 0, 6627, 6652, 1, 0, 0, 0, 6628, 6630, 5, 47, 0, 0, 6629, 6628, 1, 0, 0, 0, 6630, 6633, 1, 0, 0, 0, 6631, 6629, 1, 0, 0, 0, 6631, 6632, 1, 0, 0, 0, 6632, 6634, 1, 0, 0, 0, 6633, 6631, 1, 0, 0, 0, 6634, 6651, 3, 1363, 679, 0, 6635, 6651, 8, 45, 0, 0, 6636, 6638, 5, 47, 0, 0, 6637, 6636, 1, 0, 0, 0, 6638, 6639, 1, 0, 0, 0, 6639, 6637, 1, 0, 0, 0, 6639, 6640, 1, 0, 0, 0, 6640, 6641, 1, 0, 0, 0, 6641, 6649, 8, 45, 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, 6647, 1, 0, 0, 0, 6647, 6649, 8, 45, 0, 0, 6648, 6637, 1, 0, 0, 0, 6648, 6643, 1, 0, 0, 0, 6649, 6651, 1, 0, 0, 0, 6650, 6631, 1, 0, 0, 0, 6650, 6635, 1, 0, 0, 0, 6650, 6648, 1, 0, 0, 0, 6651, 6654, 1, 0, 0, 0, 6652, 6650, 1, 0, 0, 0, 6652, 6653, 1, 0, 0, 0, 6653, 6672, 1, 0, 0, 0, 6654, 6652, 1, 0, 0, 0, 6655, 6657, 5, 47, 0, 0, 6656, 6655, 1, 0, 0, 0, 6657, 6658, 1, 0, 0, 0, 6658, 6656, 1, 0, 0, 0, 6658, 6659, 1, 0, 0, 0, 6659, 6673, 1, 0, 0, 0, 6660, 6662, 5, 42, 0, 0, 6661, 6660, 1, 0, 0, 0, 6662, 6663, 1, 0, 0, 0, 6663, 6661, 1, 0, 0, 0, 6663, 6664, 1, 0, 0, 0, 6664, 6673, 1, 0, 0, 0, 6665, 6667, 5, 47, 0, 0, 6666, 6665, 1, 0, 0, 0, 6667, 6670, 1, 0, 0, 0, 6668, 6666, 1, 0, 0, 0, 6668, 6669, 1, 0, 0, 0, 6669, 6671, 1, 0, 0, 0, 6670, 6668, 1, 0, 0, 0, 6671, 6673, 3, 1365, 680, 0, 6672, 6656, 1, 0, 0, 0, 6672, 6661, 1, 0, 0, 0, 6672, 6668, 1, 0, 0, 0, 6672, 6673, 1, 0, 0, 0, 6673, 6674, 1, 0, 0, 0, 6674, 6675, 6, 680, 8, 0, 6675, 1366, 1, 0, 0, 0, 6676, 6688, 5, 92, 0, 0, 6677, 6687, 8, 46, 0, 0, 6678, 6682, 5, 34, 0, 0, 6679, 6681, 8, 47, 0, 0, 6680, 6679, 1, 0, 0, 0, 6681, 6684, 1, 0, 0, 0, 6682, 6680, 1, 0, 0, 0, 6682, 6683, 1, 0, 0, 0, 6683, 6685, 1, 0, 0, 0, 6684, 6682, 1, 0, 0, 0, 6685, 6687, 5, 34, 0, 0, 6686, 6677, 1, 0, 0, 0, 6686, 6678, 1, 0, 0, 0, 6687, 6690, 1, 0, 0, 0, 6688, 6686, 1, 0, 0, 0, 6688, 6689, 1, 0, 0, 0, 6689, 6698, 1, 0, 0, 0, 6690, 6688, 1, 0, 0, 0, 6691, 6695, 5, 34, 0, 0, 6692, 6694, 8, 47, 0, 0, 6693, 6692, 1, 0, 0, 0, 6694, 6697, 1, 0, 0, 0, 6695, 6693, 1, 0, 0, 0, 6695, 6696, 1, 0, 0, 0, 6696, 6699, 1, 0, 0, 0, 6697, 6695, 1, 0, 0, 0, 6698, 6691, 1, 0, 0, 0, 6698, 6699, 1, 0, 0, 0, 6699, 1368, 1, 0, 0, 0, 6700, 6701, 5, 92, 0, 0, 6701, 6702, 5, 92, 0, 0, 6702, 1370, 1, 0, 0, 0, 6703, 6704, 9, 0, 0, 0, 6704, 1372, 1, 0, 0, 0, 6705, 6706, 3, 1377, 686, 0, 6706, 6707, 5, 39, 0, 0, 6707, 6708, 1, 0, 0, 0, 6708, 6709, 6, 684, 9, 0, 6709, 1374, 1, 0, 0, 0, 6710, 6712, 3, 1377, 686, 0, 6711, 6713, 5, 92, 0, 0, 6712, 6711, 1, 0, 0, 0, 6712, 6713, 1, 0, 0, 0, 6713, 6714, 1, 0, 0, 0, 6714, 6715, 5, 0, 0, 1, 6715, 1376, 1, 0, 0, 0, 6716, 6717, 5, 39, 0, 0, 6717, 6740, 5, 39, 0, 0, 6718, 6736, 5, 92, 0, 0, 6719, 6720, 5, 120, 0, 0, 6720, 6737, 7, 39, 0, 0, 6721, 6722, 5, 117, 0, 0, 6722, 6723, 7, 39, 0, 0, 6723, 6724, 7, 39, 0, 0, 6724, 6725, 7, 39, 0, 0, 6725, 6737, 7, 39, 0, 0, 6726, 6727, 5, 85, 0, 0, 6727, 6728, 7, 39, 0, 0, 6728, 6729, 7, 39, 0, 0, 6729, 6730, 7, 39, 0, 0, 6730, 6731, 7, 39, 0, 0, 6731, 6732, 7, 39, 0, 0, 6732, 6733, 7, 39, 0, 0, 6733, 6734, 7, 39, 0, 0, 6734, 6737, 7, 39, 0, 0, 6735, 6737, 8, 48, 0, 0, 6736, 6719, 1, 0, 0, 0, 6736, 6721, 1, 0, 0, 0, 6736, 6726, 1, 0, 0, 0, 6736, 6735, 1, 0, 0, 0, 6737, 6740, 1, 0, 0, 0, 6738, 6740, 8, 49, 0, 0, 6739, 6716, 1, 0, 0, 0, 6739, 6718, 1, 0, 0, 0, 6739, 6738, 1, 0, 0, 0, 6740, 6743, 1, 0, 0, 0, 6741, 6739, 1, 0, 0, 0, 6741, 6742, 1, 0, 0, 0, 6742, 1378, 1, 0, 0, 0, 6743, 6741, 1, 0, 0, 0, 6744, 6745, 3, 1383, 689, 0, 6745, 6746, 5, 39, 0, 0, 6746, 6747, 1, 0, 0, 0, 6747, 6748, 6, 687, 9, 0, 6748, 1380, 1, 0, 0, 0, 6749, 6751, 3, 1383, 689, 0, 6750, 6752, 5, 92, 0, 0, 6751, 6750, 1, 0, 0, 0, 6751, 6752, 1, 0, 0, 0, 6752, 6753, 1, 0, 0, 0, 6753, 6754, 5, 0, 0, 1, 6754, 1382, 1, 0, 0, 0, 6755, 6756, 5, 39, 0, 0, 6756, 6761, 5, 39, 0, 0, 6757, 6758, 5, 92, 0, 0, 6758, 6761, 9, 0, 0, 0, 6759, 6761, 8, 49, 0, 0, 6760, 6755, 1, 0, 0, 0, 6760, 6757, 1, 0, 0, 0, 6760, 6759, 1, 0, 0, 0, 6761, 6764, 1, 0, 0, 0, 6762, 6760, 1, 0, 0, 0, 6762, 6763, 1, 0, 0, 0, 6763, 1384, 1, 0, 0, 0, 6764, 6762, 1, 0, 0, 0, 6765, 6766, 3, 1357, 676, 0, 6766, 6767, 1, 0, 0, 0, 6767, 6768, 6, 690, 10, 0, 6768, 6769, 6, 690, 7, 0, 6769, 1386, 1, 0, 0, 0, 6770, 6771, 3, 1359, 677, 0, 6771, 6772, 1, 0, 0, 0, 6772, 6773, 6, 691, 11, 0, 6773, 6774, 6, 691, 7, 0, 6774, 6775, 6, 691, 12, 0, 6775, 1388, 1, 0, 0, 0, 6776, 6777, 6, 692, 13, 0, 6777, 6778, 1, 0, 0, 0, 6778, 6779, 6, 692, 14, 0, 6779, 6780, 6, 692, 15, 0, 6780, 1390, 1, 0, 0, 0, 6781, 6782, 3, 1357, 676, 0, 6782, 6783, 1, 0, 0, 0, 6783, 6784, 6, 693, 10, 0, 6784, 6785, 6, 693, 7, 0, 6785, 1392, 1, 0, 0, 0, 6786, 6787, 3, 1359, 677, 0, 6787, 6788, 1, 0, 0, 0, 6788, 6789, 6, 694, 11, 0, 6789, 6790, 6, 694, 7, 0, 6790, 1394, 1, 0, 0, 0, 6791, 6792, 5, 39, 0, 0, 6792, 6793, 1, 0, 0, 0, 6793, 6794, 6, 695, 2, 0, 6794, 6795, 6, 695, 16, 0, 6795, 1396, 1, 0, 0, 0, 6796, 6797, 6, 696, 17, 0, 6797, 6798, 1, 0, 0, 0, 6798, 6799, 6, 696, 14, 0, 6799, 6800, 6, 696, 15, 0, 6800, 1398, 1, 0, 0, 0, 6801, 6803, 8, 50, 0, 0, 6802, 6801, 1, 0, 0, 0, 6803, 6804, 1, 0, 0, 0, 6804, 6802, 1, 0, 0, 0, 6804, 6805, 1, 0, 0, 0, 6805, 6814, 1, 0, 0, 0, 6806, 6810, 5, 36, 0, 0, 6807, 6809, 8, 50, 0, 0, 6808, 6807, 1, 0, 0, 0, 6809, 6812, 1, 0, 0, 0, 6810, 6808, 1, 0, 0, 0, 6810, 6811, 1, 0, 0, 0, 6811, 6814, 1, 0, 0, 0, 6812, 6810, 1, 0, 0, 0, 6813, 6802, 1, 0, 0, 0, 6813, 6806, 1, 0, 0, 0, 6814, 1400, 1, 0, 0, 0, 6815, 6817, 5, 36, 0, 0, 6816, 6818, 3, 1327, 661, 0, 6817, 6816, 1, 0, 0, 0, 6817, 6818, 1, 0, 0, 0, 6818, 6819, 1, 0, 0, 0, 6819, 6820, 5, 36, 0, 0, 6820, 6821, 1, 0, 0, 0, 6821, 6822, 4, 698, 8, 0, 6822, 6823, 6, 698, 18, 0, 6823, 6824, 1, 0, 0, 0, 6824, 6825, 6, 698, 15, 0, 6825, 1402, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1470, 1476, 1478, 1483, 1487, 1489, 1492, 1501, 1503, 1508, 1513, 1515, 6359, 6368, 6372, 6376, 6385, 6387, 6397, 6399, 6425, 6427, 6445, 6456, 6467, 6484, 6504, 6508, 6511, 6517, 6520, 6525, 6529, 6534, 6541, 6552, 6554, 6562, 6568, 6571, 6581, 6592, 6600, 6606, 6609, 6611, 6617, 6631, 6639, 6645, 6648, 6650, 6652, 6658, 6663, 6668, 6672, 6682, 6686, 6688, 6695, 6698, 6712, 6736, 6739, 6741, 6751, 6760, 6762, 6804, 6810, 6813, 6817, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 660, 1, 5, 4, 0, 1, 671, 2, 0, 1, 0, 1, 680, 3, 2, 2, 0, 7, 667, 0, 7, 668, 0, 2, 3, 0, 1, 692, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 696, 5, 1, 698, 6] \ No newline at end of file diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.tokens b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.tokens new file mode 100644 index 0000000000..f4fcecb0e8 --- /dev/null +++ b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.tokens @@ -0,0 +1,1322 @@ +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 +ZSTREAM=96 +ZTABLE=97 +ZVIEW=98 +TRAILING=99 +TRUE_P=100 +UNION=101 +UNIQUE=102 +USER=103 +USING=104 +VARIADIC=105 +WHEN=106 +WHERE=107 +WINDOW=108 +WITH=109 +AUTHORIZATION=110 +BINARY=111 +COLLATION=112 +CONCURRENTLY=113 +CROSS=114 +CURRENT_SCHEMA=115 +FREEZE=116 +FULL=117 +ILIKE=118 +INNER_P=119 +IS=120 +ISNULL=121 +JOIN=122 +LEFT=123 +LIKE=124 +NATURAL=125 +NOTNULL=126 +OUTER_P=127 +OVER=128 +OVERLAPS=129 +RIGHT=130 +SIMILAR=131 +VERBOSE=132 +ABORT_P=133 +ABSOLUTE_P=134 +ACCESS=135 +ACTION=136 +ADD_P=137 +ADMIN=138 +AFTER=139 +AGGREGATE=140 +ALSO=141 +ALTER=142 +ALWAYS=143 +ASSERTION=144 +ASSIGNMENT=145 +AT=146 +ATTRIBUTE=147 +BACKWARD=148 +BEFORE=149 +BEGIN_P=150 +BY=151 +CACHE=152 +CALLED=153 +CASCADE=154 +CASCADED=155 +CATALOG=156 +CHAIN=157 +CHARACTERISTICS=158 +CHECKPOINT=159 +CLASS=160 +CLOSE=161 +CLUSTER=162 +COMMENT=163 +COMMENTS=164 +COMMIT=165 +COMMITTED=166 +CONFIGURATION=167 +CONNECTION=168 +CONSTRAINTS=169 +CONTENT_P=170 +CONTINUE_P=171 +CONVERSION_P=172 +COPY=173 +COST=174 +CSV=175 +CURSOR=176 +CYCLE=177 +DATA_P=178 +DATABASE=179 +DAY_P=180 +DEALLOCATE=181 +DECLARE=182 +DEFAULTS=183 +DEFERRED=184 +DEFINER=185 +DELETE_P=186 +DELIMITER=187 +DELIMITERS=188 +DICTIONARY=189 +DISABLE_P=190 +DISCARD=191 +DOCUMENT_P=192 +DOMAIN_P=193 +DOUBLE_P=194 +DROP=195 +EACH=196 +ENABLE_P=197 +ENCODING=198 +ENCRYPTED=199 +ENUM_P=200 +ESCAPE=201 +EVENT=202 +EXCLUDE=203 +EXCLUDING=204 +EXCLUSIVE=205 +EXECUTE=206 +EXPLAIN=207 +EXTENSION=208 +EXTERNAL=209 +FAMILY=210 +FIRST_P=211 +FOLLOWING=212 +FORCE=213 +FORWARD=214 +FUNCTION=215 +FUNCTIONS=216 +GLOBAL=217 +GRANTED=218 +HANDLER=219 +HEADER_P=220 +HOLD=221 +HOUR_P=222 +IDENTITY_P=223 +IF_P=224 +IMMEDIATE=225 +IMMUTABLE=226 +IMPLICIT_P=227 +INCLUDING=228 +INCREMENT=229 +INDEX=230 +INDEXES=231 +INHERIT=232 +INHERITS=233 +INLINE_P=234 +INSENSITIVE=235 +INSERT=236 +INSTEAD=237 +INVOKER=238 +ISOLATION=239 +KEY=240 +LABEL=241 +LANGUAGE=242 +LARGE_P=243 +LAST_P=244 +LEAKPROOF=245 +LEVEL=246 +LISTEN=247 +LOAD=248 +LOCAL=249 +LOCATION=250 +LOCK_P=251 +MAPPING=252 +MATCH=253 +MATCHED=254 +MATERIALIZED=255 +MAXVALUE=256 +MERGE=257 +MINUTE_P=258 +MINVALUE=259 +MODE=260 +MONTH_P=261 +MOVE=262 +NAME_P=263 +NAMES=264 +NEXT=265 +NO=266 +NOTHING=267 +NOTIFY=268 +NOWAIT=269 +NULLS_P=270 +OBJECT_P=271 +OF=272 +OFF=273 +OIDS=274 +OPERATOR=275 +OPTION=276 +OPTIONS=277 +OWNED=278 +OWNER=279 +PARSER=280 +PARTIAL=281 +PARTITION=282 +PASSING=283 +PASSWORD=284 +PLANS=285 +PRECEDING=286 +PREPARE=287 +PREPARED=288 +PRESERVE=289 +PRIOR=290 +PRIVILEGES=291 +PROCEDURAL=292 +PROCEDURE=293 +PROGRAM=294 +QUOTE=295 +RANGE=296 +READ=297 +REASSIGN=298 +RECHECK=299 +RECURSIVE=300 +REF=301 +REFRESH=302 +REINDEX=303 +RELATIVE_P=304 +RELEASE=305 +RENAME=306 +REPEATABLE=307 +REPLACE=308 +REPLICA=309 +RESET=310 +RESTART=311 +RESTRICT=312 +RETURNS=313 +REVOKE=314 +ROLE=315 +ROLLBACK=316 +ROWS=317 +RULE=318 +SAVEPOINT=319 +SCHEMA=320 +SCROLL=321 +SEARCH=322 +SECOND_P=323 +SECURITY=324 +SEQUENCE=325 +SEQUENCES=326 +SERIALIZABLE=327 +SERVER=328 +SESSION=329 +SET=330 +SHARE=331 +SHOW=332 +SIMPLE=333 +SNAPSHOT=334 +STABLE=335 +STANDALONE_P=336 +START=337 +STATEMENT=338 +STATISTICS=339 +STDIN=340 +STDOUT=341 +STORAGE=342 +STRICT_P=343 +STRIP_P=344 +SYSID=345 +SYSTEM_P=346 +TABLES=347 +TABLESPACE=348 +TEMP=349 +TEMPLATE=350 +TEMPORARY=351 +TEXT_P=352 +TRANSACTION=353 +TRIGGER=354 +TRUNCATE=355 +TRUSTED=356 +TYPE_P=357 +TYPES_P=358 +UNBOUNDED=359 +UNCOMMITTED=360 +UNENCRYPTED=361 +UNKNOWN=362 +UNLISTEN=363 +UNLOGGED=364 +UNTIL=365 +UPDATE=366 +VACUUM=367 +VALID=368 +VALIDATE=369 +VALIDATOR=370 +VARYING=371 +VERSION_P=372 +VIEW=373 +VOLATILE=374 +WHITESPACE_P=375 +WITHOUT=376 +WORK=377 +WRAPPER=378 +WRITE=379 +XML_P=380 +YEAR_P=381 +YES_P=382 +ZONE=383 +BETWEEN=384 +BIGINT=385 +BIT=386 +BOOLEAN_P=387 +CHAR_P=388 +CHARACTER=389 +COALESCE=390 +DEC=391 +DECIMAL_P=392 +EXISTS=393 +EXTRACT=394 +FLOAT_P=395 +GREATEST=396 +INOUT=397 +INT_P=398 +INTEGER=399 +INTERVAL=400 +LEAST=401 +NATIONAL=402 +NCHAR=403 +NONE=404 +NULLIF=405 +NUMERIC=406 +OVERLAY=407 +POSITION=408 +PRECISION=409 +REAL=410 +ROW=411 +SETOF=412 +SMALLINT=413 +SUBSTRING=414 +TIME=415 +TIMESTAMP=416 +TREAT=417 +TRIM=418 +VALUES=419 +VARCHAR=420 +XMLATTRIBUTES=421 +XMLCOMMENT=422 +XMLAGG=423 +XML_IS_WELL_FORMED=424 +XML_IS_WELL_FORMED_DOCUMENT=425 +XML_IS_WELL_FORMED_CONTENT=426 +XPATH=427 +XPATH_EXISTS=428 +XMLCONCAT=429 +XMLELEMENT=430 +XMLEXISTS=431 +XMLFOREST=432 +XMLPARSE=433 +XMLPI=434 +XMLROOT=435 +XMLSERIALIZE=436 +CALL=437 +CURRENT_P=438 +ATTACH=439 +DETACH=440 +EXPRESSION=441 +GENERATED=442 +LOGGED=443 +STORED=444 +INCLUDE=445 +ROUTINE=446 +TRANSFORM=447 +IMPORT_P=448 +POLICY=449 +METHOD=450 +REFERENCING=451 +NEW=452 +OLD=453 +VALUE_P=454 +SUBSCRIPTION=455 +PUBLICATION=456 +OUT_P=457 +END_P=458 +ROUTINES=459 +SCHEMAS=460 +PROCEDURES=461 +INPUT_P=462 +SUPPORT=463 +PARALLEL=464 +SQL_P=465 +DEPENDS=466 +OVERRIDING=467 +CONFLICT=468 +SKIP_P=469 +LOCKED=470 +TIES=471 +ROLLUP=472 +CUBE=473 +GROUPING=474 +SETS=475 +TABLESAMPLE=476 +ORDINALITY=477 +XMLTABLE=478 +COLUMNS=479 +XMLNAMESPACES=480 +ROWTYPE=481 +NORMALIZED=482 +WITHIN=483 +FILTER=484 +GROUPS=485 +OTHERS=486 +NFC=487 +NFD=488 +NFKC=489 +NFKD=490 +UESCAPE=491 +VIEWS=492 +NORMALIZE=493 +DUMP=494 +PRINT_STRICT_PARAMS=495 +VARIABLE_CONFLICT=496 +ERROR=497 +USE_VARIABLE=498 +USE_COLUMN=499 +ALIAS=500 +CONSTANT=501 +PERFORM=502 +GET=503 +DIAGNOSTICS=504 +STACKED=505 +ELSIF=506 +WHILE=507 +REVERSE=508 +FOREACH=509 +SLICE=510 +EXIT=511 +RETURN=512 +QUERY=513 +RAISE=514 +SQLSTATE=515 +DEBUG=516 +LOG=517 +INFO=518 +NOTICE=519 +WARNING=520 +EXCEPTION=521 +ASSERT=522 +LOOP=523 +OPEN=524 +ABS=525 +CBRT=526 +CEIL=527 +CEILING=528 +DEGREES=529 +DIV=530 +EXP=531 +FACTORIAL=532 +FLOOR=533 +GCD=534 +LCM=535 +LN=536 +LOG10=537 +MIN_SCALE=538 +MOD=539 +PI=540 +POWER=541 +RADIANS=542 +ROUND=543 +SCALE=544 +SIGN=545 +SQRT=546 +TRIM_SCALE=547 +TRUNC=548 +WIDTH_BUCKET=549 +RANDOM=550 +SETSEED=551 +ACOS=552 +ACOSD=553 +ASIN=554 +ASIND=555 +ATAN=556 +ATAND=557 +ATAN2=558 +ATAN2D=559 +COS=560 +COSD=561 +COT=562 +COTD=563 +SIN=564 +SIND=565 +TAN=566 +TAND=567 +SINH=568 +COSH=569 +TANH=570 +ASINH=571 +ACOSH=572 +ATANH=573 +BIT_LENGTH=574 +CHAR_LENGTH=575 +CHARACTER_LENGTH=576 +LOWER=577 +OCTET_LENGTH=578 +UPPER=579 +ASCII=580 +BTRIM=581 +CHR=582 +CONCAT=583 +CONCAT_WS=584 +FORMAT=585 +INITCAP=586 +LENGTH=587 +LPAD=588 +LTRIM=589 +MD5=590 +PARSE_IDENT=591 +PG_CLIENT_ENCODING=592 +QUOTE_IDENT=593 +QUOTE_LITERAL=594 +QUOTE_NULLABLE=595 +REGEXP_COUNT=596 +REGEXP_INSTR=597 +REGEXP_LIKE=598 +REGEXP_MATCH=599 +REGEXP_MATCHES=600 +REGEXP_REPLACE=601 +REGEXP_SPLIT_TO_ARRAY=602 +REGEXP_SPLIT_TO_TABLE=603 +REGEXP_SUBSTR=604 +REPEAT=605 +RPAD=606 +RTRIM=607 +SPLIT_PART=608 +STARTS_WITH=609 +STRING_TO_ARRAY=610 +STRING_TO_TABLE=611 +STRPOS=612 +SUBSTR=613 +TO_ASCII=614 +TO_HEX=615 +TRANSLATE=616 +UNISTR=617 +AGE=618 +CLOCK_TIMESTAMP=619 +DATE_BIN=620 +DATE_PART=621 +DATE_TRUNC=622 +ISFINITE=623 +JUSTIFY_DAYS=624 +JUSTIFY_HOURS=625 +JUSTIFY_INTERVAL=626 +MAKE_DATE=627 +MAKE_INTERVAL=628 +MAKE_TIME=629 +MAKE_TIMESTAMP=630 +MAKE_TIMESTAMPTZ=631 +NOW=632 +STATEMENT_TIMESTAMP=633 +TIMEOFDAY=634 +TRANSACTION_TIMESTAMP=635 +TO_TIMESTAMP=636 +TO_CHAR=637 +TO_DATE=638 +TO_NUMBER=639 +Identifier=640 +QuotedIdentifier=641 +UnterminatedQuotedIdentifier=642 +InvalidQuotedIdentifier=643 +InvalidUnterminatedQuotedIdentifier=644 +UnicodeQuotedIdentifier=645 +UnterminatedUnicodeQuotedIdentifier=646 +InvalidUnicodeQuotedIdentifier=647 +InvalidUnterminatedUnicodeQuotedIdentifier=648 +StringConstant=649 +UnterminatedStringConstant=650 +UnicodeEscapeStringConstant=651 +UnterminatedUnicodeEscapeStringConstant=652 +BeginDollarStringConstant=653 +BinaryStringConstant=654 +UnterminatedBinaryStringConstant=655 +InvalidBinaryStringConstant=656 +InvalidUnterminatedBinaryStringConstant=657 +HexadecimalStringConstant=658 +UnterminatedHexadecimalStringConstant=659 +InvalidHexadecimalStringConstant=660 +InvalidUnterminatedHexadecimalStringConstant=661 +Integral=662 +NumericFail=663 +Numeric=664 +PLSQLVARIABLENAME=665 +PLSQLIDENTIFIER=666 +Whitespace=667 +Newline=668 +LineComment=669 +BlockComment=670 +UnterminatedBlockComment=671 +MetaCommand=672 +EndMetaCommand=673 +ErrorCharacter=674 +EscapeStringConstant=675 +UnterminatedEscapeStringConstant=676 +InvalidEscapeStringConstant=677 +InvalidUnterminatedEscapeStringConstant=678 +AfterEscapeStringConstantMode_NotContinued=679 +AfterEscapeStringConstantWithNewlineMode_NotContinued=680 +DollarText=681 +EndDollarStringConstant=682 +AfterEscapeStringConstantWithNewlineMode_Continued=683 +'$'=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 +'ZSTREAM'=96 +'ZTABLE'=97 +'ZVIEW'=98 +'TRAILING'=99 +'TRUE'=100 +'UNION'=101 +'UNIQUE'=102 +'USER'=103 +'USING'=104 +'VARIADIC'=105 +'WHEN'=106 +'WHERE'=107 +'WINDOW'=108 +'WITH'=109 +'AUTHORIZATION'=110 +'BINARY'=111 +'COLLATION'=112 +'CONCURRENTLY'=113 +'CROSS'=114 +'CURRENT_SCHEMA'=115 +'FREEZE'=116 +'FULL'=117 +'ILIKE'=118 +'INNER'=119 +'IS'=120 +'ISNULL'=121 +'JOIN'=122 +'LEFT'=123 +'LIKE'=124 +'NATURAL'=125 +'NOTNULL'=126 +'OUTER'=127 +'OVER'=128 +'OVERLAPS'=129 +'RIGHT'=130 +'SIMILAR'=131 +'VERBOSE'=132 +'ABORT'=133 +'ABSOLUTE'=134 +'ACCESS'=135 +'ACTION'=136 +'ADD'=137 +'ADMIN'=138 +'AFTER'=139 +'AGGREGATE'=140 +'ALSO'=141 +'ALTER'=142 +'ALWAYS'=143 +'ASSERTION'=144 +'ASSIGNMENT'=145 +'AT'=146 +'ATTRIBUTE'=147 +'BACKWARD'=148 +'BEFORE'=149 +'BEGIN'=150 +'BY'=151 +'CACHE'=152 +'CALLED'=153 +'CASCADE'=154 +'CASCADED'=155 +'CATALOG'=156 +'CHAIN'=157 +'CHARACTERISTICS'=158 +'CHECKPOINT'=159 +'CLASS'=160 +'CLOSE'=161 +'CLUSTER'=162 +'COMMENT'=163 +'COMMENTS'=164 +'COMMIT'=165 +'COMMITTED'=166 +'CONFIGURATION'=167 +'CONNECTION'=168 +'CONSTRAINTS'=169 +'CONTENT'=170 +'CONTINUE'=171 +'CONVERSION'=172 +'COPY'=173 +'COST'=174 +'CSV'=175 +'CURSOR'=176 +'CYCLE'=177 +'DATA'=178 +'DATABASE'=179 +'DAY'=180 +'DEALLOCATE'=181 +'DECLARE'=182 +'DEFAULTS'=183 +'DEFERRED'=184 +'DEFINER'=185 +'DELETE'=186 +'DELIMITER'=187 +'DELIMITERS'=188 +'DICTIONARY'=189 +'DISABLE'=190 +'DISCARD'=191 +'DOCUMENT'=192 +'DOMAIN'=193 +'DOUBLE'=194 +'DROP'=195 +'EACH'=196 +'ENABLE'=197 +'ENCODING'=198 +'ENCRYPTED'=199 +'ENUM'=200 +'ESCAPE'=201 +'EVENT'=202 +'EXCLUDE'=203 +'EXCLUDING'=204 +'EXCLUSIVE'=205 +'EXECUTE'=206 +'EXPLAIN'=207 +'EXTENSION'=208 +'EXTERNAL'=209 +'FAMILY'=210 +'FIRST'=211 +'FOLLOWING'=212 +'FORCE'=213 +'FORWARD'=214 +'FUNCTION'=215 +'FUNCTIONS'=216 +'GLOBAL'=217 +'GRANTED'=218 +'HANDLER'=219 +'HEADER'=220 +'HOLD'=221 +'HOUR'=222 +'IDENTITY'=223 +'IF'=224 +'IMMEDIATE'=225 +'IMMUTABLE'=226 +'IMPLICIT'=227 +'INCLUDING'=228 +'INCREMENT'=229 +'INDEX'=230 +'INDEXES'=231 +'INHERIT'=232 +'INHERITS'=233 +'INLINE'=234 +'INSENSITIVE'=235 +'INSERT'=236 +'INSTEAD'=237 +'INVOKER'=238 +'ISOLATION'=239 +'KEY'=240 +'LABEL'=241 +'LANGUAGE'=242 +'LARGE'=243 +'LAST'=244 +'LEAKPROOF'=245 +'LEVEL'=246 +'LISTEN'=247 +'LOAD'=248 +'LOCAL'=249 +'LOCATION'=250 +'LOCK'=251 +'MAPPING'=252 +'MATCH'=253 +'MATCHED'=254 +'MATERIALIZED'=255 +'MAXVALUE'=256 +'MERGE'=257 +'MINUTE'=258 +'MINVALUE'=259 +'MODE'=260 +'MONTH'=261 +'MOVE'=262 +'NAME'=263 +'NAMES'=264 +'NEXT'=265 +'NO'=266 +'NOTHING'=267 +'NOTIFY'=268 +'NOWAIT'=269 +'NULLS'=270 +'OBJECT'=271 +'OF'=272 +'OFF'=273 +'OIDS'=274 +'OPERATOR'=275 +'OPTION'=276 +'OPTIONS'=277 +'OWNED'=278 +'OWNER'=279 +'PARSER'=280 +'PARTIAL'=281 +'PARTITION'=282 +'PASSING'=283 +'PASSWORD'=284 +'PLANS'=285 +'PRECEDING'=286 +'PREPARE'=287 +'PREPARED'=288 +'PRESERVE'=289 +'PRIOR'=290 +'PRIVILEGES'=291 +'PROCEDURAL'=292 +'PROCEDURE'=293 +'PROGRAM'=294 +'QUOTE'=295 +'RANGE'=296 +'READ'=297 +'REASSIGN'=298 +'RECHECK'=299 +'RECURSIVE'=300 +'REF'=301 +'REFRESH'=302 +'REINDEX'=303 +'RELATIVE'=304 +'RELEASE'=305 +'RENAME'=306 +'REPEATABLE'=307 +'REPLACE'=308 +'REPLICA'=309 +'RESET'=310 +'RESTART'=311 +'RESTRICT'=312 +'RETURNS'=313 +'REVOKE'=314 +'ROLE'=315 +'ROLLBACK'=316 +'ROWS'=317 +'RULE'=318 +'SAVEPOINT'=319 +'SCHEMA'=320 +'SCROLL'=321 +'SEARCH'=322 +'SECOND'=323 +'SECURITY'=324 +'SEQUENCE'=325 +'SEQUENCES'=326 +'SERIALIZABLE'=327 +'SERVER'=328 +'SESSION'=329 +'SET'=330 +'SHARE'=331 +'SHOW'=332 +'SIMPLE'=333 +'SNAPSHOT'=334 +'STABLE'=335 +'STANDALONE'=336 +'START'=337 +'STATEMENT'=338 +'STATISTICS'=339 +'STDIN'=340 +'STDOUT'=341 +'STORAGE'=342 +'STRICT'=343 +'STRIP'=344 +'SYSID'=345 +'SYSTEM'=346 +'TABLES'=347 +'TABLESPACE'=348 +'TEMP'=349 +'TEMPLATE'=350 +'TEMPORARY'=351 +'TEXT'=352 +'TRANSACTION'=353 +'TRIGGER'=354 +'TRUNCATE'=355 +'TRUSTED'=356 +'TYPE'=357 +'TYPES'=358 +'UNBOUNDED'=359 +'UNCOMMITTED'=360 +'UNENCRYPTED'=361 +'UNKNOWN'=362 +'UNLISTEN'=363 +'UNLOGGED'=364 +'UNTIL'=365 +'UPDATE'=366 +'VACUUM'=367 +'VALID'=368 +'VALIDATE'=369 +'VALIDATOR'=370 +'VARYING'=371 +'VERSION'=372 +'VIEW'=373 +'VOLATILE'=374 +'WHITESPACE'=375 +'WITHOUT'=376 +'WORK'=377 +'WRAPPER'=378 +'WRITE'=379 +'XML'=380 +'YEAR'=381 +'YES'=382 +'ZONE'=383 +'BETWEEN'=384 +'BIGINT'=385 +'BIT'=386 +'BOOLEAN'=387 +'CHAR'=388 +'CHARACTER'=389 +'COALESCE'=390 +'DEC'=391 +'DECIMAL'=392 +'EXISTS'=393 +'EXTRACT'=394 +'FLOAT'=395 +'GREATEST'=396 +'INOUT'=397 +'INT'=398 +'INTEGER'=399 +'INTERVAL'=400 +'LEAST'=401 +'NATIONAL'=402 +'NCHAR'=403 +'NONE'=404 +'NULLIF'=405 +'NUMERIC'=406 +'OVERLAY'=407 +'POSITION'=408 +'PRECISION'=409 +'REAL'=410 +'ROW'=411 +'SETOF'=412 +'SMALLINT'=413 +'SUBSTRING'=414 +'TIME'=415 +'TIMESTAMP'=416 +'TREAT'=417 +'TRIM'=418 +'VALUES'=419 +'VARCHAR'=420 +'XMLATTRIBUTES'=421 +'XMLCOMMENT'=422 +'XMLAGG'=423 +'XML_IS_WELL_FORMED'=424 +'XML_IS_WELL_FORMED_DOCUMENT'=425 +'XML_IS_WELL_FORMED_CONTENT'=426 +'XPATH'=427 +'XPATH_EXISTS'=428 +'XMLCONCAT'=429 +'XMLELEMENT'=430 +'XMLEXISTS'=431 +'XMLFOREST'=432 +'XMLPARSE'=433 +'XMLPI'=434 +'XMLROOT'=435 +'XMLSERIALIZE'=436 +'CALL'=437 +'CURRENT'=438 +'ATTACH'=439 +'DETACH'=440 +'EXPRESSION'=441 +'GENERATED'=442 +'LOGGED'=443 +'STORED'=444 +'INCLUDE'=445 +'ROUTINE'=446 +'TRANSFORM'=447 +'IMPORT'=448 +'POLICY'=449 +'METHOD'=450 +'REFERENCING'=451 +'NEW'=452 +'OLD'=453 +'VALUE'=454 +'SUBSCRIPTION'=455 +'PUBLICATION'=456 +'OUT'=457 +'END'=458 +'ROUTINES'=459 +'SCHEMAS'=460 +'PROCEDURES'=461 +'INPUT'=462 +'SUPPORT'=463 +'PARALLEL'=464 +'SQL'=465 +'DEPENDS'=466 +'OVERRIDING'=467 +'CONFLICT'=468 +'SKIP'=469 +'LOCKED'=470 +'TIES'=471 +'ROLLUP'=472 +'CUBE'=473 +'GROUPING'=474 +'SETS'=475 +'TABLESAMPLE'=476 +'ORDINALITY'=477 +'XMLTABLE'=478 +'COLUMNS'=479 +'XMLNAMESPACES'=480 +'ROWTYPE'=481 +'NORMALIZED'=482 +'WITHIN'=483 +'FILTER'=484 +'GROUPS'=485 +'OTHERS'=486 +'NFC'=487 +'NFD'=488 +'NFKC'=489 +'NFKD'=490 +'UESCAPE'=491 +'VIEWS'=492 +'NORMALIZE'=493 +'DUMP'=494 +'PRINT_STRICT_PARAMS'=495 +'VARIABLE_CONFLICT'=496 +'ERROR'=497 +'USE_VARIABLE'=498 +'USE_COLUMN'=499 +'ALIAS'=500 +'CONSTANT'=501 +'PERFORM'=502 +'GET'=503 +'DIAGNOSTICS'=504 +'STACKED'=505 +'ELSIF'=506 +'WHILE'=507 +'REVERSE'=508 +'FOREACH'=509 +'SLICE'=510 +'EXIT'=511 +'RETURN'=512 +'QUERY'=513 +'RAISE'=514 +'SQLSTATE'=515 +'DEBUG'=516 +'LOG'=517 +'INFO'=518 +'NOTICE'=519 +'WARNING'=520 +'EXCEPTION'=521 +'ASSERT'=522 +'LOOP'=523 +'OPEN'=524 +'ABS'=525 +'CBRT'=526 +'CEIL'=527 +'CEILING'=528 +'DEGREES'=529 +'DIV'=530 +'EXP'=531 +'FACTORIAL'=532 +'FLOOR'=533 +'GCD'=534 +'LCM'=535 +'LN'=536 +'LOG10'=537 +'MIN_SCALE'=538 +'MOD'=539 +'PI'=540 +'POWER'=541 +'RADIANS'=542 +'ROUND'=543 +'SCALE'=544 +'SIGN'=545 +'SQRT'=546 +'TRIM_SCALE'=547 +'TRUNC'=548 +'WIDTH_BUCKET'=549 +'RANDOM'=550 +'SETSEED'=551 +'ACOS'=552 +'ACOSD'=553 +'ASIN'=554 +'ASIND'=555 +'ATAN'=556 +'ATAND'=557 +'ATAN2'=558 +'ATAN2D'=559 +'COS'=560 +'COSD'=561 +'COT'=562 +'COTD'=563 +'SIN'=564 +'SIND'=565 +'TAN'=566 +'TAND'=567 +'SINH'=568 +'COSH'=569 +'TANH'=570 +'ASINH'=571 +'ACOSH'=572 +'ATANH'=573 +'BIT_LENGTH'=574 +'CHAR_LENGTH'=575 +'CHARACTER_LENGTH'=576 +'LOWER'=577 +'OCTET_LENGTH'=578 +'UPPER'=579 +'ASCII'=580 +'BTRIM'=581 +'CHR'=582 +'CONCAT'=583 +'CONCAT_WS'=584 +'FORMAT'=585 +'INITCAP'=586 +'LENGTH'=587 +'LPAD'=588 +'LTRIM'=589 +'MD5'=590 +'PARSE_IDENT'=591 +'PG_CLIENT_ENCODING'=592 +'QUOTE_IDENT'=593 +'QUOTE_LITERAL'=594 +'QUOTE_NULLABLE'=595 +'REGEXP_COUNT'=596 +'REGEXP_INSTR'=597 +'REGEXP_LIKE'=598 +'REGEXP_MATCH'=599 +'REGEXP_MATCHES'=600 +'REGEXP_REPLACE'=601 +'REGEXP_SPLIT_TO_ARRAY'=602 +'REGEXP_SPLIT_TO_TABLE'=603 +'REGEXP_SUBSTR'=604 +'REPEAT'=605 +'RPAD'=606 +'RTRIM'=607 +'SPLIT_PART'=608 +'STARTS_WITH'=609 +'STRING_TO_ARRAY'=610 +'STRING_TO_TABLE'=611 +'STRPOS'=612 +'SUBSTR'=613 +'TO_ASCII'=614 +'TO_HEX'=615 +'TRANSLATE'=616 +'UNISTR'=617 +'AGE'=618 +'CLOCK_TIMESTAMP'=619 +'DATE_BIN'=620 +'DATE_PART'=621 +'DATE_TRUNC'=622 +'ISFINITE'=623 +'JUSTIFY_DAYS'=624 +'JUSTIFY_HOURS'=625 +'JUSTIFY_INTERVAL'=626 +'MAKE_DATE'=627 +'MAKE_INTERVAL'=628 +'MAKE_TIME'=629 +'MAKE_TIMESTAMP'=630 +'MAKE_TIMESTAMPTZ'=631 +'NOW'=632 +'STATEMENT_TIMESTAMP'=633 +'TIMEOFDAY'=634 +'TRANSACTION_TIMESTAMP'=635 +'TO_TIMESTAMP'=636 +'TO_CHAR'=637 +'TO_DATE'=638 +'TO_NUMBER'=639 +'\\\\'=673 +'\''=683 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 de76d9ceed..d852aaba6c 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,13 +22,13 @@ import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.tree.ParseTreeWalker; -import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlAlterStreamTopicListener; -import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlAlterTableTopicListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlAlterZStreamTopicListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlAlterZTableTopicListener; 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.SqlCreateZStreamListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateZTableTopicListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateZViewListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlDropListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; @@ -44,12 +44,12 @@ 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 SqlAlterTableTopicListener alterTableListener; - private final SqlAlterStreamTopicListener alterStreamListener; + private final SqlCreateZStreamListener createStreamListener; + private final SqlCreateZTableTopicListener createTableListener; + private final SqlAlterZTableTopicListener alterTableListener; + private final SqlAlterZStreamTopicListener alterStreamListener; private final SqlCreateFunctionListener createFunctionListener; - private final SqlCreateMaterializedViewListener createMaterializedViewListener; + private final SqlCreateZViewListener createMaterializedViewListener; private final SqlDropListener dropListener; public PgsqlParser() @@ -60,12 +60,12 @@ public PgsqlParser() this.tokens = new CommonTokenStream(lexer); this.parser = new PostgreSqlParser(tokens); this.commandListener = new SqlCommandListener(tokens); - this.createTableListener = new SqlCreateTableTopicListener(tokens); - this.alterTableListener = new SqlAlterTableTopicListener(tokens); - this.alterStreamListener = new SqlAlterStreamTopicListener(tokens); - this.createStreamListener = new SqlCreateStreamListener(tokens); + this.createTableListener = new SqlCreateZTableTopicListener(tokens); + this.alterTableListener = new SqlAlterZTableTopicListener(tokens); + this.alterStreamListener = new SqlAlterZStreamTopicListener(tokens); + this.createStreamListener = new SqlCreateZStreamListener(tokens); this.createFunctionListener = new SqlCreateFunctionListener(tokens); - this.createMaterializedViewListener = new SqlCreateMaterializedViewListener(tokens); + this.createMaterializedViewListener = new SqlCreateZViewListener(tokens); this.dropListener = new SqlDropListener(); parser.setErrorHandler(errorStrategy); } @@ -77,28 +77,28 @@ public String parseCommand( return commandListener.command(); } - public Table parseCreateTable( + public Table parseCreateZTable( String sql) { parser(sql, createTableListener); return createTableListener.table(); } - public Alter parseAlterTable( + public Alter parseAlterZTable( String sql) { parser(sql, alterTableListener); return alterTableListener.alter(); } - public Alter parseAlterStream( + public Alter parseAlterZStream( String sql) { parser(sql, alterStreamListener); return alterStreamListener.alter(); } - public Stream parseCreateStream( + public Stream parseCreateZStream( String sql) { parser(sql, createStreamListener); @@ -112,7 +112,7 @@ public Function parseCreateFunction( return createFunctionListener.function(); } - public View parseCreateMaterializedView( + public View parseCreateZView( String sql) { parser(sql, createMaterializedViewListener); diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterStreamTopicListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZStreamTopicListener.java similarity index 93% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterStreamTopicListener.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZStreamTopicListener.java index 329f5b6ca9..903f6e1170 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterStreamTopicListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZStreamTopicListener.java @@ -25,14 +25,14 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.model.AlterExpression; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; -public class SqlAlterStreamTopicListener extends PostgreSqlParserBaseListener +public class SqlAlterZStreamTopicListener extends PostgreSqlParserBaseListener { private final TokenStream tokens; private String name; private final List alterExpressions = new ArrayList<>(); - public SqlAlterStreamTopicListener( + public SqlAlterZStreamTopicListener( TokenStream tokens) { this.tokens = tokens; @@ -59,8 +59,8 @@ public void enterQualified_name( } @Override - public void enterAlter_stream_cmds( - PostgreSqlParser.Alter_stream_cmdsContext ctx) + public void enterAlter_zstream_cmds( + PostgreSqlParser.Alter_zstream_cmdsContext ctx) { for (PostgreSqlParser.Alter_stream_cmdContext alterStreamCmdCtx : ctx.alter_stream_cmd()) { diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterTableTopicListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZTableTopicListener.java similarity index 96% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterTableTopicListener.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZTableTopicListener.java index b5b8ae4d99..5419183612 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterTableTopicListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZTableTopicListener.java @@ -25,14 +25,14 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.model.AlterExpression; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; -public class SqlAlterTableTopicListener extends PostgreSqlParserBaseListener +public class SqlAlterZTableTopicListener extends PostgreSqlParserBaseListener { private final TokenStream tokens; private String name; private final List alterExpressions = new ArrayList<>(); - public SqlAlterTableTopicListener( + public SqlAlterZTableTopicListener( TokenStream tokens) { this.tokens = tokens; 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 b5eda82f1e..cde8d6217a 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 @@ -54,32 +54,32 @@ public void enterCreatestmt( public void enterAltertablestmt( PostgreSqlParser.AltertablestmtContext ctx) { - if (ctx.ALTER() != null && ctx.TABLE() != null) + if (ctx.ALTER() != null && ctx.ZTABLE() != null) { - command = "ALTER TABLE"; + command = "ALTER ZTABLE"; } else if (ctx.ALTER() != null && ctx.TOPIC() != null) { command = "ALTER TOPIC"; } - else if (ctx.ALTER() != null && ctx.STREAM() != null) + else if (ctx.ALTER() != null && ctx.ZSTREAM() != null) { - command = "ALTER STREAM"; + command = "ALTER ZSTREAM"; } } @Override - public void enterCreatestreamstmt( - PostgreSqlParser.CreatestreamstmtContext ctx) + public void enterCreatezstreamstmt( + PostgreSqlParser.CreatezstreamstmtContext ctx) { - command = "CREATE STREAM"; + command = "CREATE ZSTREAM"; } @Override public void enterCreatematviewstmt( PostgreSqlParser.CreatematviewstmtContext ctx) { - command = "CREATE MATERIALIZED VIEW"; + command = "CREATE ZVIEW"; } @Override 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/SqlCreateZStreamListener.java similarity index 90% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZStreamListener.java index 6f5e462103..d517fe752e 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/SqlCreateZStreamListener.java @@ -23,14 +23,14 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Stream; -public class SqlCreateStreamListener extends PostgreSqlParserBaseListener +public class SqlCreateZStreamListener extends PostgreSqlParserBaseListener { private final Map columns = new LinkedHashMap<>(); private final TokenStream tokens; private String name; - public SqlCreateStreamListener( + public SqlCreateZStreamListener( TokenStream tokens) { this.tokens = tokens; @@ -57,8 +57,8 @@ public void enterQualified_name( } @Override - public void enterCreatestreamstmt( - PostgreSqlParser.CreatestreamstmtContext ctx) + public void enterCreatezstreamstmt( + PostgreSqlParser.CreatezstreamstmtContext ctx) { if (ctx.stream_columns() != null) { 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/SqlCreateZTableTopicListener.java similarity index 96% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZTableTopicListener.java index bda81c70f8..9e14975308 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/SqlCreateZTableTopicListener.java @@ -26,7 +26,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; -public class SqlCreateTableTopicListener extends PostgreSqlParserBaseListener +public class SqlCreateZTableTopicListener extends PostgreSqlParserBaseListener { private final List columns = new ArrayList<>(); private final Set primaryKeys = new ObjectHashSet<>(); @@ -34,7 +34,7 @@ public class SqlCreateTableTopicListener extends PostgreSqlParserBaseListener private String name; - public SqlCreateTableTopicListener( + public SqlCreateZTableTopicListener( TokenStream tokens) { this.tokens = tokens; 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/SqlCreateZViewListener.java similarity index 87% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateMaterializedViewListener.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZViewListener.java index 39e0c0c768..24465f68af 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/SqlCreateZViewListener.java @@ -20,14 +20,14 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.View; -public class SqlCreateMaterializedViewListener extends PostgreSqlParserBaseListener +public class SqlCreateZViewListener extends PostgreSqlParserBaseListener { private final TokenStream tokens; private String name; private String select; - public SqlCreateMaterializedViewListener( + public SqlCreateZViewListener( TokenStream tokens) { this.tokens = tokens; @@ -47,8 +47,8 @@ public void enterRoot( } @Override - public void enterCreatematviewstmt( - PostgreSqlParser.CreatematviewstmtContext ctx) + public void enterCreatezviewstmt( + PostgreSqlParser.CreatezviewstmtContext ctx) { name = ctx.create_mv_target().qualified_name().getText(); } 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 8dd244788b..25075a1f2f 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 @@ -44,24 +44,24 @@ public void setUp() @Test public void shouldParseWithPrimaryKeySql() { - String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; - Table table = parser.parseCreateTable(sql); + String sql = "CREATE ZTABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; + Table table = parser.parseCreateZTable(sql); assertNotNull(table); assertTrue(table.primaryKeys().contains("id")); } @Test - public void shouldCreateParseWithPrimaryKeysSql() + public void shouldCreateTableParseWithPrimaryKeysSql() { String sql = """ - CREATE TABLE example_table ( + CREATE ZTABLE example_table ( id INT PRIMARY KEY, name VARCHAR(100), age INT, PRIMARY KEY (id, name) );"""; - Table table = parser.parseCreateTable(sql); + Table table = parser.parseCreateZTable(sql); assertNotNull(table); assertEquals(2, table.primaryKeys().size()); @@ -73,8 +73,8 @@ PRIMARY KEY (id, name) @Test public void shouldParseCreateTableName() { - String sql = "CREATE TABLE test (id INT);"; - Table table = parser.parseCreateTable(sql); + String sql = "CREATE ZTABLE test (id INT);"; + Table table = parser.parseCreateZTable(sql); assertEquals("test", table.name()); } @@ -82,8 +82,8 @@ public void shouldParseCreateTableName() @Test public void shouldParseCreateTableNameWithDoublePrecisionTypeField() { - String sql = "CREATE TABLE test (id DOUBLE PRECISION);"; - Table table = parser.parseCreateTable(sql); + String sql = "CREATE ZTABLE test (id DOUBLE PRECISION);"; + Table table = parser.parseCreateZTable(sql); assertEquals("test", table.name()); assertEquals("DOUBLE PRECISION", table.columns().get(0).type()); } @@ -91,8 +91,8 @@ public void shouldParseCreateTableNameWithDoublePrecisionTypeField() @Test public void shouldParseCreateTableColumns() { - String sql = "CREATE TABLE test (id INT, name VARCHAR(100));"; - Table table = parser.parseCreateTable(sql); + String sql = "CREATE ZTABLE test (id INT, name VARCHAR(100));"; + Table table = parser.parseCreateZTable(sql); assertEquals(2, table.columns().size()); assertEquals("INT", table.columns().get(0).type()); @@ -102,8 +102,8 @@ public void shouldParseCreateTableColumns() @Test public void shouldParseCreatreTablePrimaryKey() { - String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; - Table table = parser.parseCreateTable(sql); + String sql = "CREATE ZTABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; + Table table = parser.parseCreateZTable(sql); assertEquals(1, table.primaryKeys().size()); assertTrue(table.primaryKeys().contains("id")); @@ -112,8 +112,8 @@ public void shouldParseCreatreTablePrimaryKey() @Test public void shouldParseCreateTableCompositePrimaryKey() { - String sql = "CREATE TABLE test (id INT, name VARCHAR(100), PRIMARY KEY (id, name));"; - Table table = parser.parseCreateTable(sql); + String sql = "CREATE ZTABLE test (id INT, name VARCHAR(100), PRIMARY KEY (id, name));"; + Table table = parser.parseCreateZTable(sql); assertEquals(2, table.primaryKeys().size()); assertTrue(table.primaryKeys().contains("id")); @@ -123,8 +123,8 @@ public void shouldParseCreateTableCompositePrimaryKey() @Test public void shouldHandleEmptyCreateTable() { - String sql = "CREATE TABLE test ();"; - Table table = parser.parseCreateTable(sql); + String sql = "CREATE ZTABLE test ();"; + Table table = parser.parseCreateZTable(sql); assertEquals(0, table.columns().size()); assertEquals(0, table.primaryKeys().size()); @@ -134,16 +134,16 @@ public void shouldHandleEmptyCreateTable() public void shouldHandleEmptySql() { String sql = ""; - Table table = parser.parseCreateTable(sql); + Table table = parser.parseCreateZTable(sql); assertNotNull(table); } @Test - public void shouldParseCreateMaterializedView() + public void shouldParseCreateZView() { - String sql = "CREATE MATERIALIZED VIEW test_view AS SELECT * FROM test_table;"; - View view = parser.parseCreateMaterializedView(sql); + String sql = "CREATE ZVIEW test_view AS SELECT * FROM test_table;"; + View view = parser.parseCreateZView(sql); assertNotNull(view); assertEquals("test_view", view.name()); @@ -151,33 +151,33 @@ public void shouldParseCreateMaterializedView() } @Test(expected = ParseCancellationException.class) - public void shouldHandleEmptyCreateMaterializedView() + public void shouldHandleEmptyCreateZView() { - String sql = "CREATE MATERIALIZED VIEW test_view AS ;"; - View view = parser.parseCreateMaterializedView(sql); + String sql = "CREATE ZVIEW test_view AS ;"; + View view = parser.parseCreateZView(sql); assertNotNull(view); assertEquals("test_view", view.name()); } @Test(expected = ParseCancellationException.class) - public void shouldHandleInvalidCreateMaterializedView() + public void shouldHandleInvalidCreateZView() { - String sql = "CREATE MATERIALIZED VIEW test_view"; - parser.parseCreateMaterializedView(sql); + String sql = "CREATE ZVIEW test_view"; + parser.parseCreateZView(sql); } @Test(expected = ParseCancellationException.class) public void shouldHandleInvalidCreateTable() { - String sql = "CREATE TABLE test"; - parser.parseCreateTable(sql); + String sql = "CREATE ZTABLE test"; + parser.parseCreateZTable(sql); } @Test public void shouldParseDropSingleTable() { - String sql = "DROP TABLE test_table;"; + String sql = "DROP ZTABLE test_table;"; List drops = parser.parseDrop(sql); assertEquals(1, drops.size()); @@ -187,7 +187,7 @@ public void shouldParseDropSingleTable() @Test public void shouldParseDropMultipleTables() { - String sql = "DROP TABLE table1, table2;"; + String sql = "DROP ZTABLE table1, table2;"; List drops = parser.parseDrop(sql); assertEquals(2, drops.size()); @@ -198,7 +198,7 @@ public void shouldParseDropMultipleTables() @Test(expected = ParseCancellationException.class) public void shouldHandleEmptyDropStatement() { - String sql = "DROP TABLE;"; + String sql = "DROP ZTABLE;"; List drops = parser.parseDrop(sql); assertEquals(0, drops.size()); @@ -207,7 +207,7 @@ public void shouldHandleEmptyDropStatement() @Test public void shouldParseDropView() { - String sql = "DROP VIEW test_view;"; + String sql = "DROP ZVIEW test_view;"; List drops = parser.parseDrop(sql); assertEquals(1, drops.size()); @@ -215,9 +215,9 @@ public void shouldParseDropView() } @Test - public void shouldParseDropMaterializedView() + public void shouldParseDropZView() { - String sql = "DROP MATERIALIZED VIEW test_materialized_view;"; + String sql = "DROP ZVIEW test_materialized_view;"; List drops = parser.parseDrop(sql); assertEquals(1, drops.size()); @@ -227,8 +227,8 @@ public void shouldParseDropMaterializedView() @Test public void shouldParseCreateStream() { - String sql = "CREATE STREAM test_stream (id INT, name VARCHAR(100));"; - Stream stream = parser.parseCreateStream(sql); + String sql = "CREATE ZSTREAM test_stream (id INT, name VARCHAR(100));"; + Stream stream = parser.parseCreateZStream(sql); assertNotNull(stream); assertEquals("test_stream", stream.name()); assertEquals(2, stream.columns().size()); @@ -239,8 +239,8 @@ public void shouldParseCreateStream() @Test public void shouldParseCreateStreamIfNotExists() { - String sql = "CREATE STREAM IF NOT EXISTS test_stream (id INT, name VARCHAR(100));"; - Stream stream = parser.parseCreateStream(sql); + String sql = "CREATE ZSTREAM IF NOT EXISTS test_stream (id INT, name VARCHAR(100));"; + Stream stream = parser.parseCreateZStream(sql); assertNotNull(stream); assertEquals("test_stream", stream.name()); assertEquals(2, stream.columns().size()); @@ -251,8 +251,8 @@ public void shouldParseCreateStreamIfNotExists() @Test(expected = ParseCancellationException.class) public void shouldHandleInvalidCreateStream() { - String sql = "CREATE STREAM test_stream"; - parser.parseCreateStream(sql); + String sql = "CREATE ZSTREAM test_stream"; + parser.parseCreateZStream(sql); } @Test @@ -301,8 +301,8 @@ public void shouldHandleInvalidCreateFunction() @Test public void shouldParseCreateTableWithUniqueConstraint() { - String sql = "CREATE TABLE test (id INT UNIQUE, name VARCHAR(100));"; - Table table = parser.parseCreateTable(sql); + String sql = "CREATE ZTABLE test (id INT UNIQUE, name VARCHAR(100));"; + Table table = parser.parseCreateZTable(sql); assertNotNull(table); assertEquals(2, table.columns().size()); @@ -313,9 +313,9 @@ public void shouldParseCreateTableWithUniqueConstraint() @Test public void shouldParseCreateTableWithForeignKey() { - String sql = "CREATE TABLE test (id INT, name VARCHAR(100), CONSTRAINT fk_name FOREIGN KEY (name)" + + String sql = "CREATE ZTABLE test (id INT, name VARCHAR(100), CONSTRAINT fk_name FOREIGN KEY (name)" + " REFERENCES other_table(name));"; - Table table = parser.parseCreateTable(sql); + Table table = parser.parseCreateZTable(sql); assertNotNull(table); assertEquals(2, table.columns().size()); assertEquals("id", table.columns().get(0).name()); @@ -325,8 +325,8 @@ public void shouldParseCreateTableWithForeignKey() @Test public void shouldParseCreateTableWithCheckConstraint() { - String sql = "CREATE TABLE test (id INT, name VARCHAR(100), CHECK (id > 0));"; - Table table = parser.parseCreateTable(sql); + String sql = "CREATE ZTABLE test (id INT, name VARCHAR(100), CHECK (id > 0));"; + Table table = parser.parseCreateZTable(sql); assertNotNull(table); assertEquals(2, table.columns().size()); @@ -337,15 +337,15 @@ public void shouldParseCreateTableWithCheckConstraint() @Test public void shouldHandleInvalidCreateTableWithMissingColumns() { - String sql = "CREATE TABLE test ();"; - parser.parseCreateTable(sql); + String sql = "CREATE ZTABLE test ();"; + parser.parseCreateZTable(sql); } @Test public void shouldParseCreateTableWithDefaultValues() { - String sql = "CREATE TABLE test (id INT DEFAULT 0, name VARCHAR(100) DEFAULT 'unknown');"; - Table table = parser.parseCreateTable(sql); + String sql = "CREATE ZTABLE test (id INT DEFAULT 0, name VARCHAR(100) DEFAULT 'unknown');"; + Table table = parser.parseCreateZTable(sql); assertNotNull(table); assertEquals(2, table.columns().size()); @@ -356,8 +356,8 @@ public void shouldParseCreateTableWithDefaultValues() @Test public void shouldParseCreateTableWithNotNullConstraint() { - String sql = "CREATE TABLE test (id INT NOT NULL, name VARCHAR(100) NOT NULL);"; - Table table = parser.parseCreateTable(sql); + String sql = "CREATE ZTABLE test (id INT NOT NULL, name VARCHAR(100) NOT NULL);"; + Table table = parser.parseCreateZTable(sql); assertNotNull(table); assertEquals(2, table.columns().size()); @@ -368,8 +368,8 @@ public void shouldParseCreateTableWithNotNullConstraint() @Test public void shouldParseCreateTableWithMultipleConstraints() { - String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100) UNIQUE, age INT CHECK (age > 0));"; - Table table = parser.parseCreateTable(sql); + String sql = "CREATE ZTABLE test (id INT PRIMARY KEY, name VARCHAR(100) UNIQUE, age INT CHECK (age > 0));"; + Table table = parser.parseCreateZTable(sql); assertNotNull(table); assertEquals(3, table.columns().size()); @@ -381,8 +381,8 @@ public void shouldParseCreateTableWithMultipleConstraints() @Test public void shouldParseAlterTableAddColumn() { - String sql = "ALTER TABLE test_table ADD COLUMN new_column INT;"; - Alter alter = parser.parseAlterTable(sql); + String sql = "ALTER ZTABLE test_table ADD COLUMN new_column INT;"; + Alter alter = parser.parseAlterZTable(sql); assertEquals("test_table", alter.name()); assertEquals(1, alter.expressions().size()); @@ -395,7 +395,7 @@ public void shouldParseAlterTableAddColumn() public void shouldParseAlterTopicAddColumn() { String sql = "ALTER TOPIC test_table ADD COLUMN new_column INT;"; - Alter alter = parser.parseAlterTable(sql); + Alter alter = parser.parseAlterZTable(sql); assertEquals("test_table", alter.name()); assertEquals(1, alter.expressions().size()); @@ -407,8 +407,8 @@ public void shouldParseAlterTopicAddColumn() @Test public void shouldParseAlterTableDropColumn() { - String sql = "ALTER TABLE test_table DROP COLUMN old_column;"; - Alter alter = parser.parseAlterTable(sql); + String sql = "ALTER ZTABLE test_table DROP COLUMN old_column;"; + Alter alter = parser.parseAlterZTable(sql); assertEquals("test_table", alter.name()); assertEquals(1, alter.expressions().size()); @@ -419,8 +419,8 @@ public void shouldParseAlterTableDropColumn() @Test public void shouldParseAlterTableModifyColumn() { - String sql = "ALTER TABLE test_table ALTER COLUMN existing_column TYPE VARCHAR(100);"; - Alter alter = parser.parseAlterTable(sql); + String sql = "ALTER ZTABLE test_table ALTER COLUMN existing_column TYPE VARCHAR(100);"; + Alter alter = parser.parseAlterZTable(sql); assertEquals("test_table", alter.name()); assertEquals(1, alter.expressions().size()); @@ -431,15 +431,15 @@ public void shouldParseAlterTableModifyColumn() @Test(expected = ParseCancellationException.class) public void shouldHandleInvalidAlterTable() { - String sql = "ALTER TABLE"; - parser.parseAlterTable(sql); + String sql = "ALTER ZTABLE"; + parser.parseAlterZTable(sql); } @Test public void shouldParseCommandForAlterTable() { - String sql = "ALTER TABLE test_table ALTER COLUMN existing_column TYPE VARCHAR(100);"; - String expectedCommand = "ALTER TABLE"; + String sql = "ALTER ZTABLE test_table ALTER COLUMN existing_column TYPE VARCHAR(100);"; + String expectedCommand = "ALTER ZTABLE"; String parsedCommand = parser.parseCommand(sql); @@ -460,8 +460,8 @@ public void shouldParseCommandForCreateTopic() @Test public void shouldParseAlterStreamAddColumn() { - String sql = "ALTER STREAM test_stream ADD COLUMN new_column INT;"; - Alter alter = parser.parseAlterStream(sql); + String sql = "ALTER ZSTREAM test_stream ADD COLUMN new_column INT;"; + Alter alter = parser.parseAlterZStream(sql); assertEquals("test_stream", alter.name()); assertEquals(1, alter.expressions().size()); @@ -473,8 +473,8 @@ public void shouldParseAlterStreamAddColumn() @Test public void shouldParseAlterStreamDropColumn() { - String sql = "ALTER STREAM test_stream DROP COLUMN old_column;"; - Alter alter = parser.parseAlterStream(sql); + String sql = "ALTER ZSTREAM test_stream DROP COLUMN old_column;"; + Alter alter = parser.parseAlterZStream(sql); assertEquals("test_stream", alter.name()); assertEquals(1, alter.expressions().size()); @@ -485,15 +485,15 @@ public void shouldParseAlterStreamDropColumn() @Test(expected = ParseCancellationException.class) public void shouldHandleInvalidAlterStream() { - String sql = "ALTER STREAM"; - parser.parseAlterStream(sql); + String sql = "ALTER ZSTREAM"; + parser.parseAlterZStream(sql); } @Test public void shouldParseAlterStreamModifyColumn() { - String sql = "ALTER STREAM test_stream ALTER COLUMN existing_column TYPE VARCHAR(100);"; - Alter alter = parser.parseAlterStream(sql); + String sql = "ALTER ZSTREAM test_stream ALTER COLUMN existing_column TYPE VARCHAR(100);"; + Alter alter = parser.parseAlterZStream(sql); assertEquals("test_stream", alter.name()); assertEquals(1, alter.expressions().size()); 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 6471b00646..c4bfc96314 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 @@ -1524,7 +1524,7 @@ private void decodeCreateTableCommand( else { final RisingwaveBindingConfig binding = server.binding; - final Table table = parser.parseCreateTable(statement); + final Table table = parser.parseCreateZTable(statement); String newStatement = ""; int progress = 0; @@ -1581,7 +1581,7 @@ private void decodeCreateStreamCommand( else { final RisingwaveBindingConfig binding = server.binding; - final Stream stream = parser.parseCreateStream(statement); + final Stream stream = parser.parseCreateZStream(statement); String newStatement = ""; int progress = 0; @@ -1623,7 +1623,7 @@ private void decodeCreateMaterializedViewCommand( else { final RisingwaveBindingConfig binding = server.binding; - final View view = parser.parseCreateMaterializedView(statement); + final View view = parser.parseCreateZView(statement); PgsqlFlushCommand typeCommand = ignoreFlushCommand; PgsqlDataCommand dataCommand = proxyDataCommand; @@ -1708,7 +1708,7 @@ private void decodeAlterTableCommand( String statement) { final RisingwaveBindingConfig binding = server.binding; - final Alter alter = parser.parseAlterTable(statement); + final Alter alter = parser.parseAlterZTable(statement); boolean supportedOperation = alter.expressions().stream() .noneMatch(c -> c.operation() != Operation.ADD); @@ -1757,7 +1757,7 @@ private void decodeAlterStreamCommand( String statement) { final RisingwaveBindingConfig binding = server.binding; - final Alter alter = parser.parseAlterStream(statement); + final Alter alter = parser.parseAlterZStream(statement); boolean supportedOperation = alter.expressions().stream() .noneMatch(c -> c.operation() != Operation.ADD); diff --git a/pom.xml b/pom.xml index 538d8d33da..7aebefe4af 100644 --- a/pom.xml +++ b/pom.xml @@ -304,7 +304,8 @@ src/conf/** - src/**/*.btm + src/**/*.tokens + src/**/*.interp SLASHSTAR_STYLE From 84eacb3c0b4da64489758319da616e8ce21408d8 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 13 Nov 2024 16:25:04 -0800 Subject: [PATCH 002/104] Refactor scripts for zstream --- .../client.rpt | 2 +- .../server.rpt | 2 +- .../client.rpt | 6 +++--- .../server.rpt | 8 ++++---- .../client.rpt | 6 +++--- .../server.rpt | 6 +++--- .../client.rpt | 10 +++++----- .../server.rpt | 6 +++--- .../{drop.stream => drop.zstream}/client.rpt | 4 ++-- .../{drop.stream => drop.zstream}/server.rpt | 4 ++-- .../client.rpt | 4 ++-- .../server.rpt | 4 ++-- .../client.rpt | 4 ++-- .../server.rpt | 2 +- .../client.rpt | 18 +++++++++++++----- .../server.rpt | 18 +++++++++++++----- .../client.rpt | 4 ++-- .../server.rpt | 4 ++-- .../client.rpt | 6 +++--- .../server.rpt | 8 ++++---- .../{drop.stream => drop.zstream}/client.rpt | 4 ++-- .../{drop.stream => drop.zstream}/server.rpt | 4 ++-- 22 files changed, 75 insertions(+), 59 deletions(-) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{alter.stream.add.column => alter.zstream.add.column}/client.rpt (97%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{alter.stream.add.column => alter.zstream.add.column}/server.rpt (97%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.stream.with.includes => create.zstream.with.includes}/client.rpt (95%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.stream.with.includes => create.zstream.with.includes}/server.rpt (94%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.stream => create.zstream}/client.rpt (95%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.stream => create.zstream}/server.rpt (95%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.streams => create.zstreams}/client.rpt (95%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.streams => create.zstreams}/server.rpt (97%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{drop.stream => drop.zstream}/client.rpt (96%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{drop.stream => drop.zstream}/server.rpt (96%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{alter.stream.add.column => alter.zstream.add.column}/client.rpt (94%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{alter.stream.add.column => alter.zstream.add.column}/server.rpt (94%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{alter.stream.modify.column.rejected => alter.zstream.modify.column.rejected}/client.rpt (94%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{alter.stream.modify.column.rejected => alter.zstream.modify.column.rejected}/server.rpt (96%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.stream.with.includes => create.zstream.with.includes}/client.rpt (80%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.stream.with.includes => create.zstream.with.includes}/server.rpt (80%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.stream => create.zstream}/client.rpt (94%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.stream => create.zstream}/server.rpt (95%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.streams => create.zstreams}/client.rpt (94%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.streams => create.zstreams}/server.rpt (92%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{drop.stream => drop.zstream}/client.rpt (95%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{drop.stream => drop.zstream}/server.rpt (95%) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.zstream.add.column/client.rpt similarity index 97% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.zstream.add.column/client.rpt index 242b722bb5..6bdf76e089 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.zstream.add.column/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "zillabase_admin") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.zstream.add.column/server.rpt similarity index 97% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.zstream.add.column/server.rpt index b27cdfb164..bd173a2e6f 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.zstream.add.column/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "zillabase_admin") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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.zstream.with.includes/client.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream.with.includes/client.rpt index 2d5f01a96d..ea9dbf398d 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.zstream.with.includes/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "zillabase_admin") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -32,14 +32,14 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SOURCE IF NOT EXISTS weather (*)\n" +write "CREATE SOURCE IF NOT EXISTS pg_catalog.weather (*)\n" "INCLUDE header 'zilla:correlation-id' AS zilla_correlation_id\n" "INCLUDE header 'zilla:identity' AS zilla_identity\n" "INCLUDE timestamp AS zilla_timestamp\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather',\n" + " topic='public.weather',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" 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.zstream.with.includes/server.rpt similarity index 94% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream.with.includes/server.rpt index 49e1b212ee..ff68f2afb9 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.zstream.with.includes/server.rpt @@ -21,8 +21,8 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") + .parameter("user", "zillabase_admin") + .parameter("database", "zilla") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") .build()} @@ -36,14 +36,14 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SOURCE IF NOT EXISTS weather (*)\n" +read "CREATE SOURCE IF NOT EXISTS zb_catalog.weather (*)\n" "INCLUDE header 'zilla:correlation-id' AS zilla_correlation_id\n" "INCLUDE header 'zilla:identity' AS zilla_identity\n" "INCLUDE timestamp AS zilla_timestamp\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather',\n" + " topic='public.weather',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt index e6a1fe7389..8c4252bd4d 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "zillabase_admin") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -32,11 +32,11 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SOURCE IF NOT EXISTS weather (*)\n" +write "CREATE SOURCE IF NOT EXISTS zb_catalog.weather (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather',\n" + " topic='public.weather',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt index c240066c29..abb3bd3144 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "zillabase_admin") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -36,11 +36,11 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SOURCE IF NOT EXISTS weather (*)\n" +read "CREATE SOURCE IF NOT EXISTS zb_catalog.weather (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather',\n" + " topic='public.weather',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstreams/client.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstreams/client.rpt index cdc0a336e7..8014c2468c 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstreams/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "zillabase_admin") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -32,11 +32,11 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SOURCE IF NOT EXISTS weather_c (*)\n" +write "CREATE SOURCE IF NOT EXISTS zb_catalog.weather_c (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather_c',\n" + " topic='public.weather_c',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" @@ -64,11 +64,11 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SOURCE IF NOT EXISTS weather_f (*)\n" +write "CREATE SOURCE IF NOT EXISTS zb_catalog.weather_f (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather_f',\n" + " topic='public.weather_f',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstreams/server.rpt similarity index 97% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstreams/server.rpt index 141ecde172..03be99e969 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstreams/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "zilla") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -40,7 +40,7 @@ read "CREATE SOURCE IF NOT EXISTS weather_c (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather_c',\n" + " topic='public.weather_c',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" @@ -71,7 +71,7 @@ read "CREATE SOURCE IF NOT EXISTS weather_f (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather_f',\n" + " topic='public.weather_f',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/client.rpt similarity index 96% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/client.rpt index 2882fb593e..a43200bc30 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "zillabase_admin") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "DROP SOURCE weather;" +write "DROP SOURCE zb_catalog.weather;" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/server.rpt similarity index 96% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/server.rpt index f7268de883..8dc3da63c8 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "zillabase_admin") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -36,7 +36,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "DROP SOURCE weather;" +read "DROP SOURCE zb_catalog.weather;" [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/alter.stream.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.add.column/client.rpt similarity index 94% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.add.column/client.rpt index d8e6bd61ca..44541236eb 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.add.column/client.rpt @@ -33,14 +33,14 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "ALTER STREAM cities ADD COLUMN zip INT;" +write "ALTER ZSTREAM cities ADD COLUMN zip INT;" [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("ALTER_STREAM") + .tag("ALTER_ZSTREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.add.column/server.rpt similarity index 94% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.add.column/server.rpt index 4df84e0ded..961735a936 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.add.column/server.rpt @@ -34,13 +34,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "ALTER STREAM cities ADD COLUMN zip INT;" +read "ALTER ZSTREAM cities ADD COLUMN zip INT;" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("ALTER_STREAM") + .tag("ALTER_ZSTREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.modify.column.rejected/client.rpt similarity index 94% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.modify.column.rejected/client.rpt index f58bf8df76..efa4aec098 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.modify.column.rejected/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "ALTER STREAM cities ALTER COLUMN name TYPE VARCHAR(100);" +write "ALTER ZSTREAM cities ALTER COLUMN name TYPE VARCHAR(100);" [0x00] write flush @@ -41,7 +41,7 @@ read advised zilla:flush ${pgsql:flushEx() .error() .severity("ERROR") .code("XX000") - .message("Unable to execute command because ALTER STREAM only supports ADD") + .message("Unable to execute command because ALTER ZSTREAM only supports ADD") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.modify.column.rejected/server.rpt similarity index 96% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.modify.column.rejected/server.rpt index 662bb8b49a..9e0dac05fa 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.modify.column.rejected/server.rpt @@ -34,7 +34,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "ALTER STREAM cities ALTER COLUMN name TYPE VARCHAR(100);" +read "ALTER ZSTREAM cities ALTER COLUMN name TYPE VARCHAR(100);" [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.zstream.with.includes/client.rpt similarity index 80% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream.with.includes/client.rpt index 4f3ed3f7bc..bfa33d56c4 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.zstream.with.includes/client.rpt @@ -32,17 +32,25 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE STREAM IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP);" - [0x00] +write "CREATE ZSTREAM weather (\n" + " city VARCHAR,\n" + " temperature DOUBLE,\n" + " date DATE,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR\n" + ") WITH (\n" + " reply_to = 'replies',\n" + " function = compute_status_and_correlation_id,\n" + " timestamp = 'timestamp',\n" + " identity = 'owner_id'\n" + ");" write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_STREAM") + .tag("CREATE_ZSTREAM") .build() .build()} 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.zstream.with.includes/server.rpt similarity index 80% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream.with.includes/server.rpt index 8237e5affb..de905ef8b8 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.zstream.with.includes/server.rpt @@ -36,16 +36,24 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE STREAM IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP);" +read "CREATE ZSTREAM weather (\n" + " city VARCHAR,\n" + " temperature DOUBLE,\n" + " date DATE,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR\n" + ") WITH (\n" + " reply_to = 'replies',\n" + " function = compute_status_and_correlation_id,\n" + " timestamp = 'timestamp',\n" + " identity = 'owner_id'\n" + ");" [0x00] - write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_STREAM") + .tag("CREATE_ZSTREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/client.rpt similarity index 94% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/client.rpt index 22a5814c91..c4d7f7c809 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE STREAM IF NOT EXISTS weather " +write "CREATE ZSTREAM IF NOT EXISTS weather " "(city VARCHAR, temperature DOUBLE, date DATE);" [0x00] @@ -41,7 +41,7 @@ write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_STREAM") + .tag("CREATE_ZSTREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/server.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/server.rpt index 5a671eac54..a8b62bb091 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/server.rpt @@ -36,14 +36,14 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE STREAM IF NOT EXISTS weather " +read "CREATE ZSTREAM IF NOT EXISTS weather " "(city VARCHAR, temperature DOUBLE, date DATE);" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_STREAM") + .tag("CREATE_ZSTREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstreams/client.rpt similarity index 94% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstreams/client.rpt index 654a80b42c..015e356a6e 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstreams/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE STREAM IF NOT EXISTS weather_c " +write "CREATE ZSTREAM IF NOT EXISTS weather_c " "(city VARCHAR, temperature DOUBLE, date DATE);" [0x00] @@ -41,7 +41,7 @@ write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_STREAM") + .tag("CREATE_ZSTREAM") .build() .build()} @@ -66,7 +66,7 @@ write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_STREAM") + .tag("CREATE_ZSTREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstreams/server.rpt similarity index 92% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstreams/server.rpt index a554504f89..e06bc6f6d4 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstreams/server.rpt @@ -36,14 +36,14 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE STREAM IF NOT EXISTS weather_c " +read "CREATE ZSTREAM IF NOT EXISTS weather_c " "(city VARCHAR, temperature DOUBLE, date DATE);" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_STREAM") + .tag("CREATE_ZSTREAM") .build() .build()} @@ -54,14 +54,14 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} -read "CREATE STREAM IF NOT EXISTS weather_f " +read "CREATE ZSTREAM IF NOT EXISTS weather_f " "(city VARCHAR, temperature DOUBLE, date DATE);" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_STREAM") + .tag("CREATE_ZSTREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/client.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/client.rpt index 6719ed9414..a10393d043 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "DROP STREAM weather;" +write "DROP ZSTREAM weather;" [0x00] write flush @@ -40,7 +40,7 @@ write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("DROP_STREAM") + .tag("DROP_ZSTREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/server.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/server.rpt index 271d2431c8..0be3e7fa71 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/server.rpt @@ -36,13 +36,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "DROP STREAM weather;" +read "DROP ZSTREAM weather;" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("DROP_STREAM") + .tag("DROP_ZSTREAM") .build() .build()} From a5f3121393a89ec2bd2c168dc9af26025084e171 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 13 Nov 2024 16:29:34 -0800 Subject: [PATCH 003/104] Remove redundant files --- .../binding-pgsql/gen/PostgreSqlLexer.interp | 2086 ------- .../binding-pgsql/gen/PostgreSqlLexer.java | 5269 ----------------- .../binding-pgsql/gen/PostgreSqlLexer.tokens | 1322 ----- 3 files changed, 8677 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 09c286606c..0000000000 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.interp +++ /dev/null @@ -1,2086 +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' -'ZSTREAM' -'ZTABLE' -'ZVIEW' -'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 -ZSTREAM -ZTABLE -ZVIEW -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 -ZSTREAM -ZTABLE -ZVIEW -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, 683, 6826, 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, 2, 697, 7, 697, 2, 698, 7, 698, 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, 1469, 8, 27, 11, 27, 12, 27, 1470, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1477, 8, 28, 11, 28, 12, 28, 1478, 1, 28, 1, 28, 1, 28, 3, 28, 1484, 8, 28, 1, 28, 1, 28, 4, 28, 1488, 8, 28, 11, 28, 12, 28, 1489, 1, 28, 3, 28, 1493, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1502, 8, 29, 10, 29, 12, 29, 1505, 9, 29, 1, 29, 1, 29, 3, 29, 1509, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1514, 8, 29, 11, 29, 12, 29, 1515, 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, 99, 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, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 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, 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, 113, 1, 113, 1, 113, 1, 113, 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, 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, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 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, 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, 129, 1, 129, 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, 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, 132, 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, 134, 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, 137, 1, 137, 1, 137, 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, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 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, 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, 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, 147, 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, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 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, 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, 154, 1, 154, 1, 154, 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, 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, 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, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 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, 162, 1, 162, 1, 162, 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, 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, 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, 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, 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, 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, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 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, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 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, 184, 1, 184, 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, 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, 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, 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, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 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, 194, 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, 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, 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, 201, 1, 201, 1, 201, 1, 202, 1, 202, 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, 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, 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, 208, 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, 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, 212, 1, 212, 1, 212, 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, 215, 1, 215, 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, 218, 1, 219, 1, 219, 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, 221, 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, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 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, 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, 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, 231, 1, 231, 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, 232, 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, 235, 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, 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, 238, 1, 238, 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, 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, 242, 1, 242, 1, 242, 1, 242, 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, 245, 1, 245, 1, 245, 1, 245, 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, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 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, 253, 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, 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, 258, 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, 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, 261, 1, 261, 1, 262, 1, 262, 1, 262, 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, 264, 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, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 270, 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, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 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, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 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, 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, 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, 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, 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, 289, 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, 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, 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, 294, 1, 295, 1, 295, 1, 295, 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, 296, 1, 296, 1, 296, 1, 296, 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, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 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, 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, 303, 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, 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, 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, 309, 1, 310, 1, 310, 1, 310, 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, 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, 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, 315, 1, 315, 1, 316, 1, 316, 1, 316, 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, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 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, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 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, 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, 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, 329, 1, 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 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, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 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, 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, 339, 1, 339, 1, 339, 1, 339, 1, 339, 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, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 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, 344, 1, 345, 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, 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, 350, 1, 350, 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, 351, 1, 351, 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, 353, 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, 356, 1, 356, 1, 356, 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, 358, 1, 358, 1, 358, 1, 358, 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, 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, 363, 1, 363, 1, 363, 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, 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, 366, 1, 366, 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, 367, 1, 367, 1, 367, 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, 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, 372, 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, 373, 1, 373, 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, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 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, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 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, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 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, 389, 1, 389, 1, 389, 1, 389, 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, 392, 1, 392, 1, 392, 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, 393, 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, 396, 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, 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, 402, 1, 402, 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, 405, 1, 405, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 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, 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, 411, 1, 411, 1, 411, 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, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, 414, 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, 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, 419, 1, 419, 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, 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, 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, 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, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 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, 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, 429, 1, 429, 1, 429, 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, 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, 433, 1, 434, 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, 435, 1, 435, 1, 435, 1, 435, 1, 436, 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, 438, 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, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 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, 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, 444, 1, 444, 1, 444, 1, 445, 1, 445, 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, 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, 449, 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, 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, 453, 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, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 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, 458, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 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, 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, 463, 1, 463, 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, 464, 1, 464, 1, 464, 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, 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, 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, 470, 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, 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, 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, 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, 480, 1, 480, 1, 480, 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, 483, 1, 483, 1, 483, 1, 484, 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, 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, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 490, 1, 490, 1, 490, 1, 490, 1, 491, 1, 491, 1, 491, 1, 491, 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, 495, 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, 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, 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, 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, 501, 1, 501, 1, 501, 1, 501, 1, 501, 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, 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, 504, 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, 505, 1, 505, 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, 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, 510, 1, 511, 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, 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, 515, 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, 517, 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, 518, 1, 518, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 520, 1, 520, 1, 520, 1, 520, 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, 523, 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, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 525, 1, 525, 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, 528, 1, 528, 1, 528, 1, 528, 1, 529, 1, 529, 1, 529, 1, 529, 1, 529, 1, 530, 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, 532, 1, 532, 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, 535, 1, 535, 1, 535, 1, 535, 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, 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, 541, 1, 541, 1, 542, 1, 542, 1, 542, 1, 542, 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, 545, 1, 545, 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, 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, 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, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 554, 1, 554, 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, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 562, 1, 562, 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, 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, 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, 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, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 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, 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, 581, 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, 583, 1, 583, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 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, 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, 589, 1, 589, 1, 589, 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, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 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, 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, 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, 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, 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, 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, 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, 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, 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, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 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, 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, 609, 1, 609, 1, 609, 1, 609, 1, 609, 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, 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, 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, 614, 1, 614, 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, 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, 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, 619, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 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, 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, 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, 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, 628, 1, 628, 1, 628, 1, 628, 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, 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, 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, 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, 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, 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, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 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, 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, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 643, 1, 643, 5, 643, 6358, 8, 643, 10, 643, 12, 643, 6361, 9, 643, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 3, 644, 6369, 8, 644, 1, 645, 1, 645, 3, 645, 6373, 8, 645, 1, 646, 1, 646, 3, 646, 6377, 8, 646, 1, 647, 1, 647, 1, 647, 1, 648, 1, 648, 1, 648, 1, 648, 5, 648, 6386, 8, 648, 10, 648, 12, 648, 6389, 9, 648, 1, 649, 1, 649, 1, 649, 1, 650, 1, 650, 1, 650, 1, 650, 5, 650, 6398, 8, 650, 10, 650, 12, 650, 6401, 9, 650, 1, 651, 1, 651, 1, 651, 1, 651, 1, 652, 1, 652, 1, 652, 1, 652, 1, 653, 1, 653, 1, 653, 1, 653, 1, 654, 1, 654, 1, 654, 1, 654, 1, 655, 1, 655, 1, 655, 1, 656, 1, 656, 1, 656, 1, 656, 5, 656, 6426, 8, 656, 10, 656, 12, 656, 6429, 9, 656, 1, 657, 1, 657, 1, 657, 1, 657, 1, 657, 1, 657, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 1, 659, 1, 659, 1, 660, 1, 660, 3, 660, 6446, 8, 660, 1, 660, 1, 660, 1, 660, 1, 660, 1, 660, 1, 661, 1, 661, 5, 661, 6455, 8, 661, 10, 661, 12, 661, 6458, 9, 661, 1, 662, 1, 662, 1, 662, 1, 663, 1, 663, 1, 663, 5, 663, 6466, 8, 663, 10, 663, 12, 663, 6469, 9, 663, 1, 664, 1, 664, 1, 664, 1, 665, 1, 665, 1, 665, 1, 666, 1, 666, 1, 666, 1, 667, 1, 667, 1, 667, 5, 667, 6483, 8, 667, 10, 667, 12, 667, 6486, 9, 667, 1, 668, 1, 668, 1, 668, 1, 669, 1, 669, 1, 669, 1, 670, 1, 670, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 672, 1, 672, 1, 672, 3, 672, 6505, 8, 672, 1, 672, 1, 672, 3, 672, 6509, 8, 672, 1, 672, 3, 672, 6512, 8, 672, 1, 672, 1, 672, 1, 672, 1, 672, 3, 672, 6518, 8, 672, 1, 672, 3, 672, 6521, 8, 672, 1, 672, 1, 672, 1, 672, 3, 672, 6526, 8, 672, 1, 672, 1, 672, 3, 672, 6530, 8, 672, 1, 673, 4, 673, 6533, 8, 673, 11, 673, 12, 673, 6534, 1, 674, 1, 674, 1, 674, 5, 674, 6540, 8, 674, 10, 674, 12, 674, 6543, 9, 674, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 5, 675, 6553, 8, 675, 10, 675, 12, 675, 6556, 9, 675, 1, 675, 1, 675, 1, 676, 4, 676, 6561, 8, 676, 11, 676, 12, 676, 6562, 1, 676, 1, 676, 1, 677, 1, 677, 3, 677, 6569, 8, 677, 1, 677, 3, 677, 6572, 8, 677, 1, 677, 1, 677, 1, 678, 1, 678, 1, 678, 1, 678, 5, 678, 6580, 8, 678, 10, 678, 12, 678, 6583, 9, 678, 1, 678, 1, 678, 1, 679, 1, 679, 1, 679, 1, 679, 5, 679, 6591, 8, 679, 10, 679, 12, 679, 6594, 9, 679, 1, 679, 1, 679, 1, 679, 4, 679, 6599, 8, 679, 11, 679, 12, 679, 6600, 1, 679, 1, 679, 4, 679, 6605, 8, 679, 11, 679, 12, 679, 6606, 1, 679, 5, 679, 6610, 8, 679, 10, 679, 12, 679, 6613, 9, 679, 1, 679, 5, 679, 6616, 8, 679, 10, 679, 12, 679, 6619, 9, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 680, 1, 680, 1, 680, 1, 680, 5, 680, 6630, 8, 680, 10, 680, 12, 680, 6633, 9, 680, 1, 680, 1, 680, 1, 680, 4, 680, 6638, 8, 680, 11, 680, 12, 680, 6639, 1, 680, 1, 680, 4, 680, 6644, 8, 680, 11, 680, 12, 680, 6645, 1, 680, 3, 680, 6649, 8, 680, 5, 680, 6651, 8, 680, 10, 680, 12, 680, 6654, 9, 680, 1, 680, 4, 680, 6657, 8, 680, 11, 680, 12, 680, 6658, 1, 680, 4, 680, 6662, 8, 680, 11, 680, 12, 680, 6663, 1, 680, 5, 680, 6667, 8, 680, 10, 680, 12, 680, 6670, 9, 680, 1, 680, 3, 680, 6673, 8, 680, 1, 680, 1, 680, 1, 681, 1, 681, 1, 681, 1, 681, 5, 681, 6681, 8, 681, 10, 681, 12, 681, 6684, 9, 681, 1, 681, 5, 681, 6687, 8, 681, 10, 681, 12, 681, 6690, 9, 681, 1, 681, 1, 681, 5, 681, 6694, 8, 681, 10, 681, 12, 681, 6697, 9, 681, 3, 681, 6699, 8, 681, 1, 682, 1, 682, 1, 682, 1, 683, 1, 683, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 685, 1, 685, 3, 685, 6713, 8, 685, 1, 685, 1, 685, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 3, 686, 6737, 8, 686, 1, 686, 5, 686, 6740, 8, 686, 10, 686, 12, 686, 6743, 9, 686, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 688, 1, 688, 3, 688, 6752, 8, 688, 1, 688, 1, 688, 1, 689, 1, 689, 1, 689, 1, 689, 1, 689, 5, 689, 6761, 8, 689, 10, 689, 12, 689, 6764, 9, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 691, 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, 1, 695, 1, 695, 1, 695, 1, 695, 1, 696, 1, 696, 1, 696, 1, 696, 1, 696, 1, 697, 4, 697, 6803, 8, 697, 11, 697, 12, 697, 6804, 1, 697, 1, 697, 5, 697, 6809, 8, 697, 10, 697, 12, 697, 6812, 9, 697, 3, 697, 6814, 8, 697, 1, 698, 1, 698, 3, 698, 6818, 8, 698, 1, 698, 1, 698, 1, 698, 1, 698, 1, 698, 1, 698, 1, 698, 0, 0, 699, 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, 639, 1291, 640, 1293, 0, 1295, 0, 1297, 0, 1299, 641, 1301, 642, 1303, 643, 1305, 644, 1307, 645, 1309, 646, 1311, 647, 1313, 648, 1315, 649, 1317, 650, 1319, 0, 1321, 651, 1323, 652, 1325, 653, 1327, 0, 1329, 654, 1331, 655, 1333, 656, 1335, 657, 1337, 658, 1339, 659, 1341, 660, 1343, 661, 1345, 662, 1347, 663, 1349, 664, 1351, 0, 1353, 665, 1355, 666, 1357, 667, 1359, 668, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 673, 1371, 674, 1373, 675, 1375, 676, 1377, 0, 1379, 677, 1381, 678, 1383, 0, 1385, 0, 1387, 0, 1389, 679, 1391, 0, 1393, 0, 1395, 683, 1397, 680, 1399, 681, 1401, 682, 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, 87, 87, 119, 119, 2, 0, 81, 81, 113, 113, 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, 6898, 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, 1289, 1, 0, 0, 0, 0, 1291, 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, 1323, 1, 0, 0, 0, 0, 1325, 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, 1347, 1, 0, 0, 0, 0, 1349, 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, 0, 1369, 1, 0, 0, 0, 0, 1371, 1, 0, 0, 0, 1, 1373, 1, 0, 0, 0, 1, 1375, 1, 0, 0, 0, 1, 1379, 1, 0, 0, 0, 1, 1381, 1, 0, 0, 0, 2, 1385, 1, 0, 0, 0, 2, 1387, 1, 0, 0, 0, 2, 1389, 1, 0, 0, 0, 3, 1391, 1, 0, 0, 0, 3, 1393, 1, 0, 0, 0, 3, 1395, 1, 0, 0, 0, 3, 1397, 1, 0, 0, 0, 4, 1399, 1, 0, 0, 0, 4, 1401, 1, 0, 0, 0, 5, 1403, 1, 0, 0, 0, 7, 1405, 1, 0, 0, 0, 9, 1407, 1, 0, 0, 0, 11, 1409, 1, 0, 0, 0, 13, 1411, 1, 0, 0, 0, 15, 1413, 1, 0, 0, 0, 17, 1415, 1, 0, 0, 0, 19, 1417, 1, 0, 0, 0, 21, 1419, 1, 0, 0, 0, 23, 1421, 1, 0, 0, 0, 25, 1423, 1, 0, 0, 0, 27, 1425, 1, 0, 0, 0, 29, 1427, 1, 0, 0, 0, 31, 1429, 1, 0, 0, 0, 33, 1431, 1, 0, 0, 0, 35, 1433, 1, 0, 0, 0, 37, 1435, 1, 0, 0, 0, 39, 1437, 1, 0, 0, 0, 41, 1440, 1, 0, 0, 0, 43, 1443, 1, 0, 0, 0, 45, 1446, 1, 0, 0, 0, 47, 1449, 1, 0, 0, 0, 49, 1452, 1, 0, 0, 0, 51, 1455, 1, 0, 0, 0, 53, 1458, 1, 0, 0, 0, 55, 1461, 1, 0, 0, 0, 57, 1464, 1, 0, 0, 0, 59, 1466, 1, 0, 0, 0, 61, 1492, 1, 0, 0, 0, 63, 1503, 1, 0, 0, 0, 65, 1519, 1, 0, 0, 0, 67, 1521, 1, 0, 0, 0, 69, 1523, 1, 0, 0, 0, 71, 1525, 1, 0, 0, 0, 73, 1529, 1, 0, 0, 0, 75, 1537, 1, 0, 0, 0, 77, 1545, 1, 0, 0, 0, 79, 1549, 1, 0, 0, 0, 81, 1553, 1, 0, 0, 0, 83, 1559, 1, 0, 0, 0, 85, 1562, 1, 0, 0, 0, 87, 1566, 1, 0, 0, 0, 89, 1577, 1, 0, 0, 0, 91, 1582, 1, 0, 0, 0, 93, 1587, 1, 0, 0, 0, 95, 1592, 1, 0, 0, 0, 97, 1598, 1, 0, 0, 0, 99, 1606, 1, 0, 0, 0, 101, 1613, 1, 0, 0, 0, 103, 1624, 1, 0, 0, 0, 105, 1631, 1, 0, 0, 0, 107, 1647, 1, 0, 0, 0, 109, 1660, 1, 0, 0, 0, 111, 1673, 1, 0, 0, 0, 113, 1686, 1, 0, 0, 0, 115, 1704, 1, 0, 0, 0, 117, 1717, 1, 0, 0, 0, 119, 1725, 1, 0, 0, 0, 121, 1736, 1, 0, 0, 0, 123, 1741, 1, 0, 0, 0, 125, 1750, 1, 0, 0, 0, 127, 1753, 1, 0, 0, 0, 129, 1758, 1, 0, 0, 0, 131, 1765, 1, 0, 0, 0, 133, 1771, 1, 0, 0, 0, 135, 1777, 1, 0, 0, 0, 137, 1781, 1, 0, 0, 0, 139, 1789, 1, 0, 0, 0, 141, 1794, 1, 0, 0, 0, 143, 1800, 1, 0, 0, 0, 145, 1806, 1, 0, 0, 0, 147, 1813, 1, 0, 0, 0, 149, 1816, 1, 0, 0, 0, 151, 1826, 1, 0, 0, 0, 153, 1836, 1, 0, 0, 0, 155, 1841, 1, 0, 0, 0, 157, 1849, 1, 0, 0, 0, 159, 1857, 1, 0, 0, 0, 161, 1863, 1, 0, 0, 0, 163, 1873, 1, 0, 0, 0, 165, 1888, 1, 0, 0, 0, 167, 1892, 1, 0, 0, 0, 169, 1897, 1, 0, 0, 0, 171, 1904, 1, 0, 0, 0, 173, 1907, 1, 0, 0, 0, 175, 1912, 1, 0, 0, 0, 177, 1915, 1, 0, 0, 0, 179, 1921, 1, 0, 0, 0, 181, 1929, 1, 0, 0, 0, 183, 1937, 1, 0, 0, 0, 185, 1948, 1, 0, 0, 0, 187, 1958, 1, 0, 0, 0, 189, 1965, 1, 0, 0, 0, 191, 1978, 1, 0, 0, 0, 193, 1983, 1, 0, 0, 0, 195, 1993, 1, 0, 0, 0, 197, 1999, 1, 0, 0, 0, 199, 2004, 1, 0, 0, 0, 201, 2007, 1, 0, 0, 0, 203, 2013, 1, 0, 0, 0, 205, 2021, 1, 0, 0, 0, 207, 2028, 1, 0, 0, 0, 209, 2034, 1, 0, 0, 0, 211, 2043, 1, 0, 0, 0, 213, 2048, 1, 0, 0, 0, 215, 2054, 1, 0, 0, 0, 217, 2061, 1, 0, 0, 0, 219, 2066, 1, 0, 0, 0, 221, 2072, 1, 0, 0, 0, 223, 2081, 1, 0, 0, 0, 225, 2086, 1, 0, 0, 0, 227, 2092, 1, 0, 0, 0, 229, 2099, 1, 0, 0, 0, 231, 2104, 1, 0, 0, 0, 233, 2118, 1, 0, 0, 0, 235, 2125, 1, 0, 0, 0, 237, 2135, 1, 0, 0, 0, 239, 2148, 1, 0, 0, 0, 241, 2154, 1, 0, 0, 0, 243, 2169, 1, 0, 0, 0, 245, 2176, 1, 0, 0, 0, 247, 2181, 1, 0, 0, 0, 249, 2187, 1, 0, 0, 0, 251, 2193, 1, 0, 0, 0, 253, 2196, 1, 0, 0, 0, 255, 2203, 1, 0, 0, 0, 257, 2208, 1, 0, 0, 0, 259, 2213, 1, 0, 0, 0, 261, 2218, 1, 0, 0, 0, 263, 2226, 1, 0, 0, 0, 265, 2234, 1, 0, 0, 0, 267, 2240, 1, 0, 0, 0, 269, 2245, 1, 0, 0, 0, 271, 2254, 1, 0, 0, 0, 273, 2260, 1, 0, 0, 0, 275, 2268, 1, 0, 0, 0, 277, 2276, 1, 0, 0, 0, 279, 2282, 1, 0, 0, 0, 281, 2291, 1, 0, 0, 0, 283, 2298, 1, 0, 0, 0, 285, 2305, 1, 0, 0, 0, 287, 2309, 1, 0, 0, 0, 289, 2315, 1, 0, 0, 0, 291, 2321, 1, 0, 0, 0, 293, 2331, 1, 0, 0, 0, 295, 2336, 1, 0, 0, 0, 297, 2342, 1, 0, 0, 0, 299, 2349, 1, 0, 0, 0, 301, 2359, 1, 0, 0, 0, 303, 2370, 1, 0, 0, 0, 305, 2373, 1, 0, 0, 0, 307, 2383, 1, 0, 0, 0, 309, 2392, 1, 0, 0, 0, 311, 2399, 1, 0, 0, 0, 313, 2405, 1, 0, 0, 0, 315, 2408, 1, 0, 0, 0, 317, 2414, 1, 0, 0, 0, 319, 2421, 1, 0, 0, 0, 321, 2429, 1, 0, 0, 0, 323, 2438, 1, 0, 0, 0, 325, 2446, 1, 0, 0, 0, 327, 2452, 1, 0, 0, 0, 329, 2468, 1, 0, 0, 0, 331, 2479, 1, 0, 0, 0, 333, 2485, 1, 0, 0, 0, 335, 2491, 1, 0, 0, 0, 337, 2499, 1, 0, 0, 0, 339, 2507, 1, 0, 0, 0, 341, 2516, 1, 0, 0, 0, 343, 2523, 1, 0, 0, 0, 345, 2533, 1, 0, 0, 0, 347, 2547, 1, 0, 0, 0, 349, 2558, 1, 0, 0, 0, 351, 2570, 1, 0, 0, 0, 353, 2578, 1, 0, 0, 0, 355, 2587, 1, 0, 0, 0, 357, 2598, 1, 0, 0, 0, 359, 2603, 1, 0, 0, 0, 361, 2608, 1, 0, 0, 0, 363, 2612, 1, 0, 0, 0, 365, 2619, 1, 0, 0, 0, 367, 2625, 1, 0, 0, 0, 369, 2630, 1, 0, 0, 0, 371, 2639, 1, 0, 0, 0, 373, 2643, 1, 0, 0, 0, 375, 2654, 1, 0, 0, 0, 377, 2662, 1, 0, 0, 0, 379, 2671, 1, 0, 0, 0, 381, 2680, 1, 0, 0, 0, 383, 2688, 1, 0, 0, 0, 385, 2695, 1, 0, 0, 0, 387, 2705, 1, 0, 0, 0, 389, 2716, 1, 0, 0, 0, 391, 2727, 1, 0, 0, 0, 393, 2735, 1, 0, 0, 0, 395, 2743, 1, 0, 0, 0, 397, 2752, 1, 0, 0, 0, 399, 2759, 1, 0, 0, 0, 401, 2766, 1, 0, 0, 0, 403, 2771, 1, 0, 0, 0, 405, 2776, 1, 0, 0, 0, 407, 2783, 1, 0, 0, 0, 409, 2792, 1, 0, 0, 0, 411, 2802, 1, 0, 0, 0, 413, 2807, 1, 0, 0, 0, 415, 2814, 1, 0, 0, 0, 417, 2820, 1, 0, 0, 0, 419, 2828, 1, 0, 0, 0, 421, 2838, 1, 0, 0, 0, 423, 2848, 1, 0, 0, 0, 425, 2856, 1, 0, 0, 0, 427, 2864, 1, 0, 0, 0, 429, 2874, 1, 0, 0, 0, 431, 2883, 1, 0, 0, 0, 433, 2890, 1, 0, 0, 0, 435, 2896, 1, 0, 0, 0, 437, 2906, 1, 0, 0, 0, 439, 2912, 1, 0, 0, 0, 441, 2920, 1, 0, 0, 0, 443, 2929, 1, 0, 0, 0, 445, 2939, 1, 0, 0, 0, 447, 2946, 1, 0, 0, 0, 449, 2954, 1, 0, 0, 0, 451, 2962, 1, 0, 0, 0, 453, 2969, 1, 0, 0, 0, 455, 2974, 1, 0, 0, 0, 457, 2979, 1, 0, 0, 0, 459, 2988, 1, 0, 0, 0, 461, 2991, 1, 0, 0, 0, 463, 3001, 1, 0, 0, 0, 465, 3011, 1, 0, 0, 0, 467, 3020, 1, 0, 0, 0, 469, 3030, 1, 0, 0, 0, 471, 3040, 1, 0, 0, 0, 473, 3046, 1, 0, 0, 0, 475, 3054, 1, 0, 0, 0, 477, 3062, 1, 0, 0, 0, 479, 3071, 1, 0, 0, 0, 481, 3078, 1, 0, 0, 0, 483, 3090, 1, 0, 0, 0, 485, 3097, 1, 0, 0, 0, 487, 3105, 1, 0, 0, 0, 489, 3113, 1, 0, 0, 0, 491, 3123, 1, 0, 0, 0, 493, 3127, 1, 0, 0, 0, 495, 3133, 1, 0, 0, 0, 497, 3142, 1, 0, 0, 0, 499, 3148, 1, 0, 0, 0, 501, 3153, 1, 0, 0, 0, 503, 3163, 1, 0, 0, 0, 505, 3169, 1, 0, 0, 0, 507, 3176, 1, 0, 0, 0, 509, 3181, 1, 0, 0, 0, 511, 3187, 1, 0, 0, 0, 513, 3196, 1, 0, 0, 0, 515, 3201, 1, 0, 0, 0, 517, 3209, 1, 0, 0, 0, 519, 3215, 1, 0, 0, 0, 521, 3223, 1, 0, 0, 0, 523, 3236, 1, 0, 0, 0, 525, 3245, 1, 0, 0, 0, 527, 3251, 1, 0, 0, 0, 529, 3258, 1, 0, 0, 0, 531, 3267, 1, 0, 0, 0, 533, 3272, 1, 0, 0, 0, 535, 3278, 1, 0, 0, 0, 537, 3283, 1, 0, 0, 0, 539, 3288, 1, 0, 0, 0, 541, 3294, 1, 0, 0, 0, 543, 3299, 1, 0, 0, 0, 545, 3302, 1, 0, 0, 0, 547, 3310, 1, 0, 0, 0, 549, 3317, 1, 0, 0, 0, 551, 3324, 1, 0, 0, 0, 553, 3330, 1, 0, 0, 0, 555, 3337, 1, 0, 0, 0, 557, 3340, 1, 0, 0, 0, 559, 3344, 1, 0, 0, 0, 561, 3349, 1, 0, 0, 0, 563, 3358, 1, 0, 0, 0, 565, 3365, 1, 0, 0, 0, 567, 3373, 1, 0, 0, 0, 569, 3379, 1, 0, 0, 0, 571, 3385, 1, 0, 0, 0, 573, 3392, 1, 0, 0, 0, 575, 3400, 1, 0, 0, 0, 577, 3410, 1, 0, 0, 0, 579, 3418, 1, 0, 0, 0, 581, 3427, 1, 0, 0, 0, 583, 3433, 1, 0, 0, 0, 585, 3443, 1, 0, 0, 0, 587, 3451, 1, 0, 0, 0, 589, 3460, 1, 0, 0, 0, 591, 3469, 1, 0, 0, 0, 593, 3475, 1, 0, 0, 0, 595, 3486, 1, 0, 0, 0, 597, 3497, 1, 0, 0, 0, 599, 3507, 1, 0, 0, 0, 601, 3515, 1, 0, 0, 0, 603, 3521, 1, 0, 0, 0, 605, 3527, 1, 0, 0, 0, 607, 3532, 1, 0, 0, 0, 609, 3541, 1, 0, 0, 0, 611, 3549, 1, 0, 0, 0, 613, 3559, 1, 0, 0, 0, 615, 3563, 1, 0, 0, 0, 617, 3571, 1, 0, 0, 0, 619, 3579, 1, 0, 0, 0, 621, 3588, 1, 0, 0, 0, 623, 3596, 1, 0, 0, 0, 625, 3603, 1, 0, 0, 0, 627, 3614, 1, 0, 0, 0, 629, 3622, 1, 0, 0, 0, 631, 3630, 1, 0, 0, 0, 633, 3636, 1, 0, 0, 0, 635, 3644, 1, 0, 0, 0, 637, 3653, 1, 0, 0, 0, 639, 3661, 1, 0, 0, 0, 641, 3668, 1, 0, 0, 0, 643, 3673, 1, 0, 0, 0, 645, 3682, 1, 0, 0, 0, 647, 3687, 1, 0, 0, 0, 649, 3692, 1, 0, 0, 0, 651, 3702, 1, 0, 0, 0, 653, 3709, 1, 0, 0, 0, 655, 3716, 1, 0, 0, 0, 657, 3723, 1, 0, 0, 0, 659, 3730, 1, 0, 0, 0, 661, 3739, 1, 0, 0, 0, 663, 3748, 1, 0, 0, 0, 665, 3758, 1, 0, 0, 0, 667, 3771, 1, 0, 0, 0, 669, 3778, 1, 0, 0, 0, 671, 3786, 1, 0, 0, 0, 673, 3790, 1, 0, 0, 0, 675, 3796, 1, 0, 0, 0, 677, 3801, 1, 0, 0, 0, 679, 3808, 1, 0, 0, 0, 681, 3817, 1, 0, 0, 0, 683, 3824, 1, 0, 0, 0, 685, 3835, 1, 0, 0, 0, 687, 3841, 1, 0, 0, 0, 689, 3851, 1, 0, 0, 0, 691, 3862, 1, 0, 0, 0, 693, 3868, 1, 0, 0, 0, 695, 3875, 1, 0, 0, 0, 697, 3883, 1, 0, 0, 0, 699, 3890, 1, 0, 0, 0, 701, 3896, 1, 0, 0, 0, 703, 3902, 1, 0, 0, 0, 705, 3909, 1, 0, 0, 0, 707, 3916, 1, 0, 0, 0, 709, 3927, 1, 0, 0, 0, 711, 3932, 1, 0, 0, 0, 713, 3941, 1, 0, 0, 0, 715, 3951, 1, 0, 0, 0, 717, 3956, 1, 0, 0, 0, 719, 3968, 1, 0, 0, 0, 721, 3976, 1, 0, 0, 0, 723, 3985, 1, 0, 0, 0, 725, 3993, 1, 0, 0, 0, 727, 3998, 1, 0, 0, 0, 729, 4004, 1, 0, 0, 0, 731, 4014, 1, 0, 0, 0, 733, 4026, 1, 0, 0, 0, 735, 4038, 1, 0, 0, 0, 737, 4046, 1, 0, 0, 0, 739, 4055, 1, 0, 0, 0, 741, 4064, 1, 0, 0, 0, 743, 4070, 1, 0, 0, 0, 745, 4077, 1, 0, 0, 0, 747, 4084, 1, 0, 0, 0, 749, 4090, 1, 0, 0, 0, 751, 4099, 1, 0, 0, 0, 753, 4109, 1, 0, 0, 0, 755, 4117, 1, 0, 0, 0, 757, 4125, 1, 0, 0, 0, 759, 4130, 1, 0, 0, 0, 761, 4139, 1, 0, 0, 0, 763, 4150, 1, 0, 0, 0, 765, 4158, 1, 0, 0, 0, 767, 4163, 1, 0, 0, 0, 769, 4171, 1, 0, 0, 0, 771, 4177, 1, 0, 0, 0, 773, 4181, 1, 0, 0, 0, 775, 4186, 1, 0, 0, 0, 777, 4190, 1, 0, 0, 0, 779, 4195, 1, 0, 0, 0, 781, 4203, 1, 0, 0, 0, 783, 4210, 1, 0, 0, 0, 785, 4214, 1, 0, 0, 0, 787, 4222, 1, 0, 0, 0, 789, 4227, 1, 0, 0, 0, 791, 4237, 1, 0, 0, 0, 793, 4246, 1, 0, 0, 0, 795, 4250, 1, 0, 0, 0, 797, 4258, 1, 0, 0, 0, 799, 4265, 1, 0, 0, 0, 801, 4273, 1, 0, 0, 0, 803, 4279, 1, 0, 0, 0, 805, 4288, 1, 0, 0, 0, 807, 4294, 1, 0, 0, 0, 809, 4298, 1, 0, 0, 0, 811, 4306, 1, 0, 0, 0, 813, 4315, 1, 0, 0, 0, 815, 4321, 1, 0, 0, 0, 817, 4330, 1, 0, 0, 0, 819, 4336, 1, 0, 0, 0, 821, 4341, 1, 0, 0, 0, 823, 4348, 1, 0, 0, 0, 825, 4356, 1, 0, 0, 0, 827, 4364, 1, 0, 0, 0, 829, 4373, 1, 0, 0, 0, 831, 4383, 1, 0, 0, 0, 833, 4388, 1, 0, 0, 0, 835, 4392, 1, 0, 0, 0, 837, 4398, 1, 0, 0, 0, 839, 4407, 1, 0, 0, 0, 841, 4417, 1, 0, 0, 0, 843, 4422, 1, 0, 0, 0, 845, 4432, 1, 0, 0, 0, 847, 4438, 1, 0, 0, 0, 849, 4443, 1, 0, 0, 0, 851, 4450, 1, 0, 0, 0, 853, 4458, 1, 0, 0, 0, 855, 4472, 1, 0, 0, 0, 857, 4483, 1, 0, 0, 0, 859, 4490, 1, 0, 0, 0, 861, 4509, 1, 0, 0, 0, 863, 4537, 1, 0, 0, 0, 865, 4564, 1, 0, 0, 0, 867, 4570, 1, 0, 0, 0, 869, 4583, 1, 0, 0, 0, 871, 4593, 1, 0, 0, 0, 873, 4604, 1, 0, 0, 0, 875, 4614, 1, 0, 0, 0, 877, 4624, 1, 0, 0, 0, 879, 4633, 1, 0, 0, 0, 881, 4639, 1, 0, 0, 0, 883, 4647, 1, 0, 0, 0, 885, 4660, 1, 0, 0, 0, 887, 4665, 1, 0, 0, 0, 889, 4673, 1, 0, 0, 0, 891, 4680, 1, 0, 0, 0, 893, 4687, 1, 0, 0, 0, 895, 4698, 1, 0, 0, 0, 897, 4708, 1, 0, 0, 0, 899, 4715, 1, 0, 0, 0, 901, 4722, 1, 0, 0, 0, 903, 4730, 1, 0, 0, 0, 905, 4738, 1, 0, 0, 0, 907, 4748, 1, 0, 0, 0, 909, 4755, 1, 0, 0, 0, 911, 4762, 1, 0, 0, 0, 913, 4769, 1, 0, 0, 0, 915, 4781, 1, 0, 0, 0, 917, 4785, 1, 0, 0, 0, 919, 4789, 1, 0, 0, 0, 921, 4795, 1, 0, 0, 0, 923, 4808, 1, 0, 0, 0, 925, 4820, 1, 0, 0, 0, 927, 4824, 1, 0, 0, 0, 929, 4828, 1, 0, 0, 0, 931, 4837, 1, 0, 0, 0, 933, 4845, 1, 0, 0, 0, 935, 4856, 1, 0, 0, 0, 937, 4862, 1, 0, 0, 0, 939, 4870, 1, 0, 0, 0, 941, 4879, 1, 0, 0, 0, 943, 4883, 1, 0, 0, 0, 945, 4891, 1, 0, 0, 0, 947, 4902, 1, 0, 0, 0, 949, 4911, 1, 0, 0, 0, 951, 4916, 1, 0, 0, 0, 953, 4923, 1, 0, 0, 0, 955, 4928, 1, 0, 0, 0, 957, 4935, 1, 0, 0, 0, 959, 4940, 1, 0, 0, 0, 961, 4949, 1, 0, 0, 0, 963, 4954, 1, 0, 0, 0, 965, 4966, 1, 0, 0, 0, 967, 4977, 1, 0, 0, 0, 969, 4986, 1, 0, 0, 0, 971, 4994, 1, 0, 0, 0, 973, 5008, 1, 0, 0, 0, 975, 5016, 1, 0, 0, 0, 977, 5027, 1, 0, 0, 0, 979, 5034, 1, 0, 0, 0, 981, 5041, 1, 0, 0, 0, 983, 5048, 1, 0, 0, 0, 985, 5055, 1, 0, 0, 0, 987, 5059, 1, 0, 0, 0, 989, 5063, 1, 0, 0, 0, 991, 5068, 1, 0, 0, 0, 993, 5073, 1, 0, 0, 0, 995, 5081, 1, 0, 0, 0, 997, 5087, 1, 0, 0, 0, 999, 5097, 1, 0, 0, 0, 1001, 5102, 1, 0, 0, 0, 1003, 5122, 1, 0, 0, 0, 1005, 5140, 1, 0, 0, 0, 1007, 5146, 1, 0, 0, 0, 1009, 5159, 1, 0, 0, 0, 1011, 5170, 1, 0, 0, 0, 1013, 5176, 1, 0, 0, 0, 1015, 5185, 1, 0, 0, 0, 1017, 5193, 1, 0, 0, 0, 1019, 5197, 1, 0, 0, 0, 1021, 5209, 1, 0, 0, 0, 1023, 5217, 1, 0, 0, 0, 1025, 5223, 1, 0, 0, 0, 1027, 5229, 1, 0, 0, 0, 1029, 5237, 1, 0, 0, 0, 1031, 5245, 1, 0, 0, 0, 1033, 5251, 1, 0, 0, 0, 1035, 5256, 1, 0, 0, 0, 1037, 5263, 1, 0, 0, 0, 1039, 5269, 1, 0, 0, 0, 1041, 5275, 1, 0, 0, 0, 1043, 5284, 1, 0, 0, 0, 1045, 5290, 1, 0, 0, 0, 1047, 5294, 1, 0, 0, 0, 1049, 5299, 1, 0, 0, 0, 1051, 5306, 1, 0, 0, 0, 1053, 5314, 1, 0, 0, 0, 1055, 5324, 1, 0, 0, 0, 1057, 5331, 1, 0, 0, 0, 1059, 5336, 1, 0, 0, 0, 1061, 5341, 1, 0, 0, 0, 1063, 5345, 1, 0, 0, 0, 1065, 5350, 1, 0, 0, 0, 1067, 5355, 1, 0, 0, 0, 1069, 5363, 1, 0, 0, 0, 1071, 5371, 1, 0, 0, 0, 1073, 5375, 1, 0, 0, 0, 1075, 5379, 1, 0, 0, 0, 1077, 5389, 1, 0, 0, 0, 1079, 5395, 1, 0, 0, 0, 1081, 5399, 1, 0, 0, 0, 1083, 5403, 1, 0, 0, 0, 1085, 5406, 1, 0, 0, 0, 1087, 5412, 1, 0, 0, 0, 1089, 5422, 1, 0, 0, 0, 1091, 5426, 1, 0, 0, 0, 1093, 5429, 1, 0, 0, 0, 1095, 5435, 1, 0, 0, 0, 1097, 5443, 1, 0, 0, 0, 1099, 5449, 1, 0, 0, 0, 1101, 5455, 1, 0, 0, 0, 1103, 5460, 1, 0, 0, 0, 1105, 5465, 1, 0, 0, 0, 1107, 5476, 1, 0, 0, 0, 1109, 5482, 1, 0, 0, 0, 1111, 5495, 1, 0, 0, 0, 1113, 5502, 1, 0, 0, 0, 1115, 5510, 1, 0, 0, 0, 1117, 5515, 1, 0, 0, 0, 1119, 5521, 1, 0, 0, 0, 1121, 5526, 1, 0, 0, 0, 1123, 5532, 1, 0, 0, 0, 1125, 5537, 1, 0, 0, 0, 1127, 5543, 1, 0, 0, 0, 1129, 5549, 1, 0, 0, 0, 1131, 5556, 1, 0, 0, 0, 1133, 5560, 1, 0, 0, 0, 1135, 5565, 1, 0, 0, 0, 1137, 5569, 1, 0, 0, 0, 1139, 5574, 1, 0, 0, 0, 1141, 5578, 1, 0, 0, 0, 1143, 5583, 1, 0, 0, 0, 1145, 5587, 1, 0, 0, 0, 1147, 5592, 1, 0, 0, 0, 1149, 5597, 1, 0, 0, 0, 1151, 5602, 1, 0, 0, 0, 1153, 5607, 1, 0, 0, 0, 1155, 5613, 1, 0, 0, 0, 1157, 5619, 1, 0, 0, 0, 1159, 5625, 1, 0, 0, 0, 1161, 5636, 1, 0, 0, 0, 1163, 5648, 1, 0, 0, 0, 1165, 5665, 1, 0, 0, 0, 1167, 5671, 1, 0, 0, 0, 1169, 5684, 1, 0, 0, 0, 1171, 5690, 1, 0, 0, 0, 1173, 5696, 1, 0, 0, 0, 1175, 5702, 1, 0, 0, 0, 1177, 5706, 1, 0, 0, 0, 1179, 5713, 1, 0, 0, 0, 1181, 5723, 1, 0, 0, 0, 1183, 5730, 1, 0, 0, 0, 1185, 5738, 1, 0, 0, 0, 1187, 5745, 1, 0, 0, 0, 1189, 5750, 1, 0, 0, 0, 1191, 5756, 1, 0, 0, 0, 1193, 5760, 1, 0, 0, 0, 1195, 5772, 1, 0, 0, 0, 1197, 5791, 1, 0, 0, 0, 1199, 5803, 1, 0, 0, 0, 1201, 5817, 1, 0, 0, 0, 1203, 5832, 1, 0, 0, 0, 1205, 5845, 1, 0, 0, 0, 1207, 5858, 1, 0, 0, 0, 1209, 5870, 1, 0, 0, 0, 1211, 5883, 1, 0, 0, 0, 1213, 5898, 1, 0, 0, 0, 1215, 5913, 1, 0, 0, 0, 1217, 5935, 1, 0, 0, 0, 1219, 5957, 1, 0, 0, 0, 1221, 5971, 1, 0, 0, 0, 1223, 5978, 1, 0, 0, 0, 1225, 5983, 1, 0, 0, 0, 1227, 5989, 1, 0, 0, 0, 1229, 6000, 1, 0, 0, 0, 1231, 6012, 1, 0, 0, 0, 1233, 6028, 1, 0, 0, 0, 1235, 6044, 1, 0, 0, 0, 1237, 6051, 1, 0, 0, 0, 1239, 6058, 1, 0, 0, 0, 1241, 6067, 1, 0, 0, 0, 1243, 6074, 1, 0, 0, 0, 1245, 6084, 1, 0, 0, 0, 1247, 6091, 1, 0, 0, 0, 1249, 6095, 1, 0, 0, 0, 1251, 6111, 1, 0, 0, 0, 1253, 6120, 1, 0, 0, 0, 1255, 6130, 1, 0, 0, 0, 1257, 6141, 1, 0, 0, 0, 1259, 6150, 1, 0, 0, 0, 1261, 6163, 1, 0, 0, 0, 1263, 6177, 1, 0, 0, 0, 1265, 6194, 1, 0, 0, 0, 1267, 6204, 1, 0, 0, 0, 1269, 6218, 1, 0, 0, 0, 1271, 6228, 1, 0, 0, 0, 1273, 6243, 1, 0, 0, 0, 1275, 6260, 1, 0, 0, 0, 1277, 6264, 1, 0, 0, 0, 1279, 6284, 1, 0, 0, 0, 1281, 6294, 1, 0, 0, 0, 1283, 6316, 1, 0, 0, 0, 1285, 6329, 1, 0, 0, 0, 1287, 6337, 1, 0, 0, 0, 1289, 6345, 1, 0, 0, 0, 1291, 6355, 1, 0, 0, 0, 1293, 6368, 1, 0, 0, 0, 1295, 6372, 1, 0, 0, 0, 1297, 6376, 1, 0, 0, 0, 1299, 6378, 1, 0, 0, 0, 1301, 6381, 1, 0, 0, 0, 1303, 6390, 1, 0, 0, 0, 1305, 6393, 1, 0, 0, 0, 1307, 6402, 1, 0, 0, 0, 1309, 6406, 1, 0, 0, 0, 1311, 6410, 1, 0, 0, 0, 1313, 6414, 1, 0, 0, 0, 1315, 6418, 1, 0, 0, 0, 1317, 6421, 1, 0, 0, 0, 1319, 6430, 1, 0, 0, 0, 1321, 6436, 1, 0, 0, 0, 1323, 6439, 1, 0, 0, 0, 1325, 6443, 1, 0, 0, 0, 1327, 6452, 1, 0, 0, 0, 1329, 6459, 1, 0, 0, 0, 1331, 6462, 1, 0, 0, 0, 1333, 6470, 1, 0, 0, 0, 1335, 6473, 1, 0, 0, 0, 1337, 6476, 1, 0, 0, 0, 1339, 6479, 1, 0, 0, 0, 1341, 6487, 1, 0, 0, 0, 1343, 6490, 1, 0, 0, 0, 1345, 6493, 1, 0, 0, 0, 1347, 6495, 1, 0, 0, 0, 1349, 6529, 1, 0, 0, 0, 1351, 6532, 1, 0, 0, 0, 1353, 6536, 1, 0, 0, 0, 1355, 6544, 1, 0, 0, 0, 1357, 6560, 1, 0, 0, 0, 1359, 6571, 1, 0, 0, 0, 1361, 6575, 1, 0, 0, 0, 1363, 6586, 1, 0, 0, 0, 1365, 6625, 1, 0, 0, 0, 1367, 6676, 1, 0, 0, 0, 1369, 6700, 1, 0, 0, 0, 1371, 6703, 1, 0, 0, 0, 1373, 6705, 1, 0, 0, 0, 1375, 6710, 1, 0, 0, 0, 1377, 6741, 1, 0, 0, 0, 1379, 6744, 1, 0, 0, 0, 1381, 6749, 1, 0, 0, 0, 1383, 6762, 1, 0, 0, 0, 1385, 6765, 1, 0, 0, 0, 1387, 6770, 1, 0, 0, 0, 1389, 6776, 1, 0, 0, 0, 1391, 6781, 1, 0, 0, 0, 1393, 6786, 1, 0, 0, 0, 1395, 6791, 1, 0, 0, 0, 1397, 6796, 1, 0, 0, 0, 1399, 6813, 1, 0, 0, 0, 1401, 6815, 1, 0, 0, 0, 1403, 1404, 5, 36, 0, 0, 1404, 6, 1, 0, 0, 0, 1405, 1406, 5, 40, 0, 0, 1406, 8, 1, 0, 0, 0, 1407, 1408, 5, 41, 0, 0, 1408, 10, 1, 0, 0, 0, 1409, 1410, 5, 91, 0, 0, 1410, 12, 1, 0, 0, 0, 1411, 1412, 5, 93, 0, 0, 1412, 14, 1, 0, 0, 0, 1413, 1414, 5, 44, 0, 0, 1414, 16, 1, 0, 0, 0, 1415, 1416, 5, 59, 0, 0, 1416, 18, 1, 0, 0, 0, 1417, 1418, 5, 58, 0, 0, 1418, 20, 1, 0, 0, 0, 1419, 1420, 5, 42, 0, 0, 1420, 22, 1, 0, 0, 0, 1421, 1422, 5, 61, 0, 0, 1422, 24, 1, 0, 0, 0, 1423, 1424, 5, 46, 0, 0, 1424, 26, 1, 0, 0, 0, 1425, 1426, 5, 43, 0, 0, 1426, 28, 1, 0, 0, 0, 1427, 1428, 5, 45, 0, 0, 1428, 30, 1, 0, 0, 0, 1429, 1430, 5, 47, 0, 0, 1430, 32, 1, 0, 0, 0, 1431, 1432, 5, 94, 0, 0, 1432, 34, 1, 0, 0, 0, 1433, 1434, 5, 60, 0, 0, 1434, 36, 1, 0, 0, 0, 1435, 1436, 5, 62, 0, 0, 1436, 38, 1, 0, 0, 0, 1437, 1438, 5, 60, 0, 0, 1438, 1439, 5, 60, 0, 0, 1439, 40, 1, 0, 0, 0, 1440, 1441, 5, 62, 0, 0, 1441, 1442, 5, 62, 0, 0, 1442, 42, 1, 0, 0, 0, 1443, 1444, 5, 58, 0, 0, 1444, 1445, 5, 61, 0, 0, 1445, 44, 1, 0, 0, 0, 1446, 1447, 5, 60, 0, 0, 1447, 1448, 5, 61, 0, 0, 1448, 46, 1, 0, 0, 0, 1449, 1450, 5, 61, 0, 0, 1450, 1451, 5, 62, 0, 0, 1451, 48, 1, 0, 0, 0, 1452, 1453, 5, 62, 0, 0, 1453, 1454, 5, 61, 0, 0, 1454, 50, 1, 0, 0, 0, 1455, 1456, 5, 46, 0, 0, 1456, 1457, 5, 46, 0, 0, 1457, 52, 1, 0, 0, 0, 1458, 1459, 5, 60, 0, 0, 1459, 1460, 5, 62, 0, 0, 1460, 54, 1, 0, 0, 0, 1461, 1462, 5, 58, 0, 0, 1462, 1463, 5, 58, 0, 0, 1463, 56, 1, 0, 0, 0, 1464, 1465, 5, 37, 0, 0, 1465, 58, 1, 0, 0, 0, 1466, 1468, 5, 36, 0, 0, 1467, 1469, 7, 0, 0, 0, 1468, 1467, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1468, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 60, 1, 0, 0, 0, 1472, 1488, 3, 65, 30, 0, 1473, 1477, 5, 43, 0, 0, 1474, 1475, 5, 45, 0, 0, 1475, 1477, 4, 28, 0, 0, 1476, 1473, 1, 0, 0, 0, 1476, 1474, 1, 0, 0, 0, 1477, 1478, 1, 0, 0, 0, 1478, 1476, 1, 0, 0, 0, 1478, 1479, 1, 0, 0, 0, 1479, 1483, 1, 0, 0, 0, 1480, 1484, 3, 65, 30, 0, 1481, 1482, 5, 47, 0, 0, 1482, 1484, 4, 28, 1, 0, 1483, 1480, 1, 0, 0, 0, 1483, 1481, 1, 0, 0, 0, 1484, 1488, 1, 0, 0, 0, 1485, 1486, 5, 47, 0, 0, 1486, 1488, 4, 28, 2, 0, 1487, 1472, 1, 0, 0, 0, 1487, 1476, 1, 0, 0, 0, 1487, 1485, 1, 0, 0, 0, 1488, 1489, 1, 0, 0, 0, 1489, 1487, 1, 0, 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1493, 1, 0, 0, 0, 1491, 1493, 7, 1, 0, 0, 1492, 1487, 1, 0, 0, 0, 1492, 1491, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 1495, 6, 28, 0, 0, 1495, 62, 1, 0, 0, 0, 1496, 1502, 3, 67, 31, 0, 1497, 1498, 5, 45, 0, 0, 1498, 1502, 4, 29, 3, 0, 1499, 1500, 5, 47, 0, 0, 1500, 1502, 4, 29, 4, 0, 1501, 1496, 1, 0, 0, 0, 1501, 1497, 1, 0, 0, 0, 1501, 1499, 1, 0, 0, 0, 1502, 1505, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1506, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1508, 3, 69, 32, 0, 1507, 1509, 3, 61, 28, 0, 1508, 1507, 1, 0, 0, 0, 1508, 1509, 1, 0, 0, 0, 1509, 1513, 1, 0, 0, 0, 1510, 1514, 5, 43, 0, 0, 1511, 1512, 5, 45, 0, 0, 1512, 1514, 4, 29, 5, 0, 1513, 1510, 1, 0, 0, 0, 1513, 1511, 1, 0, 0, 0, 1514, 1515, 1, 0, 0, 0, 1515, 1513, 1, 0, 0, 0, 1515, 1516, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1518, 6, 29, 1, 0, 1518, 64, 1, 0, 0, 0, 1519, 1520, 7, 2, 0, 0, 1520, 66, 1, 0, 0, 0, 1521, 1522, 7, 3, 0, 0, 1522, 68, 1, 0, 0, 0, 1523, 1524, 7, 4, 0, 0, 1524, 70, 1, 0, 0, 0, 1525, 1526, 7, 5, 0, 0, 1526, 1527, 7, 6, 0, 0, 1527, 1528, 7, 6, 0, 0, 1528, 72, 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, 9, 0, 0, 1535, 1536, 7, 10, 0, 0, 1536, 74, 1, 0, 0, 0, 1537, 1538, 7, 5, 0, 0, 1538, 1539, 7, 7, 0, 0, 1539, 1540, 7, 5, 0, 0, 1540, 1541, 7, 6, 0, 0, 1541, 1542, 7, 8, 0, 0, 1542, 1543, 7, 11, 0, 0, 1543, 1544, 7, 10, 0, 0, 1544, 76, 1, 0, 0, 0, 1545, 1546, 7, 5, 0, 0, 1546, 1547, 7, 7, 0, 0, 1547, 1548, 7, 12, 0, 0, 1548, 78, 1, 0, 0, 0, 1549, 1550, 7, 5, 0, 0, 1550, 1551, 7, 7, 0, 0, 1551, 1552, 7, 8, 0, 0, 1552, 80, 1, 0, 0, 0, 1553, 1554, 7, 5, 0, 0, 1554, 1555, 7, 13, 0, 0, 1555, 1556, 7, 13, 0, 0, 1556, 1557, 7, 5, 0, 0, 1557, 1558, 7, 8, 0, 0, 1558, 82, 1, 0, 0, 0, 1559, 1560, 7, 5, 0, 0, 1560, 1561, 7, 9, 0, 0, 1561, 84, 1, 0, 0, 0, 1562, 1563, 7, 5, 0, 0, 1563, 1564, 7, 9, 0, 0, 1564, 1565, 7, 14, 0, 0, 1565, 86, 1, 0, 0, 0, 1566, 1567, 7, 5, 0, 0, 1567, 1568, 7, 9, 0, 0, 1568, 1569, 7, 8, 0, 0, 1569, 1570, 7, 15, 0, 0, 1570, 1571, 7, 15, 0, 0, 1571, 1572, 7, 10, 0, 0, 1572, 1573, 7, 16, 0, 0, 1573, 1574, 7, 13, 0, 0, 1574, 1575, 7, 17, 0, 0, 1575, 1576, 7, 14, 0, 0, 1576, 88, 1, 0, 0, 0, 1577, 1578, 7, 18, 0, 0, 1578, 1579, 7, 19, 0, 0, 1579, 1580, 7, 16, 0, 0, 1580, 1581, 7, 20, 0, 0, 1581, 90, 1, 0, 0, 0, 1582, 1583, 7, 14, 0, 0, 1583, 1584, 7, 5, 0, 0, 1584, 1585, 7, 9, 0, 0, 1585, 1586, 7, 10, 0, 0, 1586, 92, 1, 0, 0, 0, 1587, 1588, 7, 14, 0, 0, 1588, 1589, 7, 5, 0, 0, 1589, 1590, 7, 9, 0, 0, 1590, 1591, 7, 16, 0, 0, 1591, 94, 1, 0, 0, 0, 1592, 1593, 7, 14, 0, 0, 1593, 1594, 7, 20, 0, 0, 1594, 1595, 7, 10, 0, 0, 1595, 1596, 7, 14, 0, 0, 1596, 1597, 7, 21, 0, 0, 1597, 96, 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, 6, 0, 0, 1602, 1603, 7, 5, 0, 0, 1603, 1604, 7, 16, 0, 0, 1604, 1605, 7, 10, 0, 0, 1605, 98, 1, 0, 0, 0, 1606, 1607, 7, 14, 0, 0, 1607, 1608, 7, 19, 0, 0, 1608, 1609, 7, 6, 0, 0, 1609, 1610, 7, 22, 0, 0, 1610, 1611, 7, 15, 0, 0, 1611, 1612, 7, 7, 0, 0, 1612, 100, 1, 0, 0, 0, 1613, 1614, 7, 14, 0, 0, 1614, 1615, 7, 19, 0, 0, 1615, 1616, 7, 7, 0, 0, 1616, 1617, 7, 9, 0, 0, 1617, 1618, 7, 16, 0, 0, 1618, 1619, 7, 13, 0, 0, 1619, 1620, 7, 5, 0, 0, 1620, 1621, 7, 17, 0, 0, 1621, 1622, 7, 7, 0, 0, 1622, 1623, 7, 16, 0, 0, 1623, 102, 1, 0, 0, 0, 1624, 1625, 7, 14, 0, 0, 1625, 1626, 7, 13, 0, 0, 1626, 1627, 7, 10, 0, 0, 1627, 1628, 7, 5, 0, 0, 1628, 1629, 7, 16, 0, 0, 1629, 1630, 7, 10, 0, 0, 1630, 104, 1, 0, 0, 0, 1631, 1632, 7, 14, 0, 0, 1632, 1633, 7, 22, 0, 0, 1633, 1634, 7, 13, 0, 0, 1634, 1635, 7, 13, 0, 0, 1635, 1636, 7, 10, 0, 0, 1636, 1637, 7, 7, 0, 0, 1637, 1638, 7, 16, 0, 0, 1638, 1639, 5, 95, 0, 0, 1639, 1640, 7, 14, 0, 0, 1640, 1641, 7, 5, 0, 0, 1641, 1642, 7, 16, 0, 0, 1642, 1643, 7, 5, 0, 0, 1643, 1644, 7, 6, 0, 0, 1644, 1645, 7, 19, 0, 0, 1645, 1646, 7, 23, 0, 0, 1646, 106, 1, 0, 0, 0, 1647, 1648, 7, 14, 0, 0, 1648, 1649, 7, 22, 0, 0, 1649, 1650, 7, 13, 0, 0, 1650, 1651, 7, 13, 0, 0, 1651, 1652, 7, 10, 0, 0, 1652, 1653, 7, 7, 0, 0, 1653, 1654, 7, 16, 0, 0, 1654, 1655, 5, 95, 0, 0, 1655, 1656, 7, 12, 0, 0, 1656, 1657, 7, 5, 0, 0, 1657, 1658, 7, 16, 0, 0, 1658, 1659, 7, 10, 0, 0, 1659, 108, 1, 0, 0, 0, 1660, 1661, 7, 14, 0, 0, 1661, 1662, 7, 22, 0, 0, 1662, 1663, 7, 13, 0, 0, 1663, 1664, 7, 13, 0, 0, 1664, 1665, 7, 10, 0, 0, 1665, 1666, 7, 7, 0, 0, 1666, 1667, 7, 16, 0, 0, 1667, 1668, 5, 95, 0, 0, 1668, 1669, 7, 13, 0, 0, 1669, 1670, 7, 19, 0, 0, 1670, 1671, 7, 6, 0, 0, 1671, 1672, 7, 10, 0, 0, 1672, 110, 1, 0, 0, 0, 1673, 1674, 7, 14, 0, 0, 1674, 1675, 7, 22, 0, 0, 1675, 1676, 7, 13, 0, 0, 1676, 1677, 7, 13, 0, 0, 1677, 1678, 7, 10, 0, 0, 1678, 1679, 7, 7, 0, 0, 1679, 1680, 7, 16, 0, 0, 1680, 1681, 5, 95, 0, 0, 1681, 1682, 7, 16, 0, 0, 1682, 1683, 7, 17, 0, 0, 1683, 1684, 7, 15, 0, 0, 1684, 1685, 7, 10, 0, 0, 1685, 112, 1, 0, 0, 0, 1686, 1687, 7, 14, 0, 0, 1687, 1688, 7, 22, 0, 0, 1688, 1689, 7, 13, 0, 0, 1689, 1690, 7, 13, 0, 0, 1690, 1691, 7, 10, 0, 0, 1691, 1692, 7, 7, 0, 0, 1692, 1693, 7, 16, 0, 0, 1693, 1694, 5, 95, 0, 0, 1694, 1695, 7, 16, 0, 0, 1695, 1696, 7, 17, 0, 0, 1696, 1697, 7, 15, 0, 0, 1697, 1698, 7, 10, 0, 0, 1698, 1699, 7, 9, 0, 0, 1699, 1700, 7, 16, 0, 0, 1700, 1701, 7, 5, 0, 0, 1701, 1702, 7, 15, 0, 0, 1702, 1703, 7, 24, 0, 0, 1703, 114, 1, 0, 0, 0, 1704, 1705, 7, 14, 0, 0, 1705, 1706, 7, 22, 0, 0, 1706, 1707, 7, 13, 0, 0, 1707, 1708, 7, 13, 0, 0, 1708, 1709, 7, 10, 0, 0, 1709, 1710, 7, 7, 0, 0, 1710, 1711, 7, 16, 0, 0, 1711, 1712, 5, 95, 0, 0, 1712, 1713, 7, 22, 0, 0, 1713, 1714, 7, 9, 0, 0, 1714, 1715, 7, 10, 0, 0, 1715, 1716, 7, 13, 0, 0, 1716, 116, 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, 5, 0, 0, 1721, 1722, 7, 22, 0, 0, 1722, 1723, 7, 6, 0, 0, 1723, 1724, 7, 16, 0, 0, 1724, 118, 1, 0, 0, 0, 1725, 1726, 7, 12, 0, 0, 1726, 1727, 7, 10, 0, 0, 1727, 1728, 7, 25, 0, 0, 1728, 1729, 7, 10, 0, 0, 1729, 1730, 7, 13, 0, 0, 1730, 1731, 7, 13, 0, 0, 1731, 1732, 7, 5, 0, 0, 1732, 1733, 7, 18, 0, 0, 1733, 1734, 7, 6, 0, 0, 1734, 1735, 7, 10, 0, 0, 1735, 120, 1, 0, 0, 0, 1736, 1737, 7, 12, 0, 0, 1737, 1738, 7, 10, 0, 0, 1738, 1739, 7, 9, 0, 0, 1739, 1740, 7, 14, 0, 0, 1740, 122, 1, 0, 0, 0, 1741, 1742, 7, 12, 0, 0, 1742, 1743, 7, 17, 0, 0, 1743, 1744, 7, 9, 0, 0, 1744, 1745, 7, 16, 0, 0, 1745, 1746, 7, 17, 0, 0, 1746, 1747, 7, 7, 0, 0, 1747, 1748, 7, 14, 0, 0, 1748, 1749, 7, 16, 0, 0, 1749, 124, 1, 0, 0, 0, 1750, 1751, 7, 12, 0, 0, 1751, 1752, 7, 19, 0, 0, 1752, 126, 1, 0, 0, 0, 1753, 1754, 7, 10, 0, 0, 1754, 1755, 7, 6, 0, 0, 1755, 1756, 7, 9, 0, 0, 1756, 1757, 7, 10, 0, 0, 1757, 128, 1, 0, 0, 0, 1758, 1759, 7, 10, 0, 0, 1759, 1760, 7, 26, 0, 0, 1760, 1761, 7, 14, 0, 0, 1761, 1762, 7, 10, 0, 0, 1762, 1763, 7, 24, 0, 0, 1763, 1764, 7, 16, 0, 0, 1764, 130, 1, 0, 0, 0, 1765, 1766, 7, 25, 0, 0, 1766, 1767, 7, 5, 0, 0, 1767, 1768, 7, 6, 0, 0, 1768, 1769, 7, 9, 0, 0, 1769, 1770, 7, 10, 0, 0, 1770, 132, 1, 0, 0, 0, 1771, 1772, 7, 25, 0, 0, 1772, 1773, 7, 10, 0, 0, 1773, 1774, 7, 16, 0, 0, 1774, 1775, 7, 14, 0, 0, 1775, 1776, 7, 20, 0, 0, 1776, 134, 1, 0, 0, 0, 1777, 1778, 7, 25, 0, 0, 1778, 1779, 7, 19, 0, 0, 1779, 1780, 7, 13, 0, 0, 1780, 136, 1, 0, 0, 0, 1781, 1782, 7, 25, 0, 0, 1782, 1783, 7, 19, 0, 0, 1783, 1784, 7, 13, 0, 0, 1784, 1785, 7, 10, 0, 0, 1785, 1786, 7, 17, 0, 0, 1786, 1787, 7, 23, 0, 0, 1787, 1788, 7, 7, 0, 0, 1788, 138, 1, 0, 0, 0, 1789, 1790, 7, 25, 0, 0, 1790, 1791, 7, 13, 0, 0, 1791, 1792, 7, 19, 0, 0, 1792, 1793, 7, 15, 0, 0, 1793, 140, 1, 0, 0, 0, 1794, 1795, 7, 23, 0, 0, 1795, 1796, 7, 13, 0, 0, 1796, 1797, 7, 5, 0, 0, 1797, 1798, 7, 7, 0, 0, 1798, 1799, 7, 16, 0, 0, 1799, 142, 1, 0, 0, 0, 1800, 1801, 7, 23, 0, 0, 1801, 1802, 7, 13, 0, 0, 1802, 1803, 7, 19, 0, 0, 1803, 1804, 7, 22, 0, 0, 1804, 1805, 7, 24, 0, 0, 1805, 144, 1, 0, 0, 0, 1806, 1807, 7, 20, 0, 0, 1807, 1808, 7, 5, 0, 0, 1808, 1809, 7, 27, 0, 0, 1809, 1810, 7, 17, 0, 0, 1810, 1811, 7, 7, 0, 0, 1811, 1812, 7, 23, 0, 0, 1812, 146, 1, 0, 0, 0, 1813, 1814, 7, 17, 0, 0, 1814, 1815, 7, 7, 0, 0, 1815, 148, 1, 0, 0, 0, 1816, 1817, 7, 17, 0, 0, 1817, 1818, 7, 7, 0, 0, 1818, 1819, 7, 17, 0, 0, 1819, 1820, 7, 16, 0, 0, 1820, 1821, 7, 17, 0, 0, 1821, 1822, 7, 5, 0, 0, 1822, 1823, 7, 6, 0, 0, 1823, 1824, 7, 6, 0, 0, 1824, 1825, 7, 8, 0, 0, 1825, 150, 1, 0, 0, 0, 1826, 1827, 7, 17, 0, 0, 1827, 1828, 7, 7, 0, 0, 1828, 1829, 7, 16, 0, 0, 1829, 1830, 7, 10, 0, 0, 1830, 1831, 7, 13, 0, 0, 1831, 1832, 7, 9, 0, 0, 1832, 1833, 7, 10, 0, 0, 1833, 1834, 7, 14, 0, 0, 1834, 1835, 7, 16, 0, 0, 1835, 152, 1, 0, 0, 0, 1836, 1837, 7, 17, 0, 0, 1837, 1838, 7, 7, 0, 0, 1838, 1839, 7, 16, 0, 0, 1839, 1840, 7, 19, 0, 0, 1840, 154, 1, 0, 0, 0, 1841, 1842, 7, 6, 0, 0, 1842, 1843, 7, 5, 0, 0, 1843, 1844, 7, 16, 0, 0, 1844, 1845, 7, 10, 0, 0, 1845, 1846, 7, 13, 0, 0, 1846, 1847, 7, 5, 0, 0, 1847, 1848, 7, 6, 0, 0, 1848, 156, 1, 0, 0, 0, 1849, 1850, 7, 6, 0, 0, 1850, 1851, 7, 10, 0, 0, 1851, 1852, 7, 5, 0, 0, 1852, 1853, 7, 12, 0, 0, 1853, 1854, 7, 17, 0, 0, 1854, 1855, 7, 7, 0, 0, 1855, 1856, 7, 23, 0, 0, 1856, 158, 1, 0, 0, 0, 1857, 1858, 7, 6, 0, 0, 1858, 1859, 7, 17, 0, 0, 1859, 1860, 7, 15, 0, 0, 1860, 1861, 7, 17, 0, 0, 1861, 1862, 7, 16, 0, 0, 1862, 160, 1, 0, 0, 0, 1863, 1864, 7, 6, 0, 0, 1864, 1865, 7, 19, 0, 0, 1865, 1866, 7, 14, 0, 0, 1866, 1867, 7, 5, 0, 0, 1867, 1868, 7, 6, 0, 0, 1868, 1869, 7, 16, 0, 0, 1869, 1870, 7, 17, 0, 0, 1870, 1871, 7, 15, 0, 0, 1871, 1872, 7, 10, 0, 0, 1872, 162, 1, 0, 0, 0, 1873, 1874, 7, 6, 0, 0, 1874, 1875, 7, 19, 0, 0, 1875, 1876, 7, 14, 0, 0, 1876, 1877, 7, 5, 0, 0, 1877, 1878, 7, 6, 0, 0, 1878, 1879, 7, 16, 0, 0, 1879, 1880, 7, 17, 0, 0, 1880, 1881, 7, 15, 0, 0, 1881, 1882, 7, 10, 0, 0, 1882, 1883, 7, 9, 0, 0, 1883, 1884, 7, 16, 0, 0, 1884, 1885, 7, 5, 0, 0, 1885, 1886, 7, 15, 0, 0, 1886, 1887, 7, 24, 0, 0, 1887, 164, 1, 0, 0, 0, 1888, 1889, 7, 7, 0, 0, 1889, 1890, 7, 19, 0, 0, 1890, 1891, 7, 16, 0, 0, 1891, 166, 1, 0, 0, 0, 1892, 1893, 7, 7, 0, 0, 1893, 1894, 7, 22, 0, 0, 1894, 1895, 7, 6, 0, 0, 1895, 1896, 7, 6, 0, 0, 1896, 168, 1, 0, 0, 0, 1897, 1898, 7, 19, 0, 0, 1898, 1899, 7, 25, 0, 0, 1899, 1900, 7, 25, 0, 0, 1900, 1901, 7, 9, 0, 0, 1901, 1902, 7, 10, 0, 0, 1902, 1903, 7, 16, 0, 0, 1903, 170, 1, 0, 0, 0, 1904, 1905, 7, 19, 0, 0, 1905, 1906, 7, 7, 0, 0, 1906, 172, 1, 0, 0, 0, 1907, 1908, 7, 19, 0, 0, 1908, 1909, 7, 7, 0, 0, 1909, 1910, 7, 6, 0, 0, 1910, 1911, 7, 8, 0, 0, 1911, 174, 1, 0, 0, 0, 1912, 1913, 7, 19, 0, 0, 1913, 1914, 7, 13, 0, 0, 1914, 176, 1, 0, 0, 0, 1915, 1916, 7, 19, 0, 0, 1916, 1917, 7, 13, 0, 0, 1917, 1918, 7, 12, 0, 0, 1918, 1919, 7, 10, 0, 0, 1919, 1920, 7, 13, 0, 0, 1920, 178, 1, 0, 0, 0, 1921, 1922, 7, 24, 0, 0, 1922, 1923, 7, 6, 0, 0, 1923, 1924, 7, 5, 0, 0, 1924, 1925, 7, 14, 0, 0, 1925, 1926, 7, 17, 0, 0, 1926, 1927, 7, 7, 0, 0, 1927, 1928, 7, 23, 0, 0, 1928, 180, 1, 0, 0, 0, 1929, 1930, 7, 24, 0, 0, 1930, 1931, 7, 13, 0, 0, 1931, 1932, 7, 17, 0, 0, 1932, 1933, 7, 15, 0, 0, 1933, 1934, 7, 5, 0, 0, 1934, 1935, 7, 13, 0, 0, 1935, 1936, 7, 8, 0, 0, 1936, 182, 1, 0, 0, 0, 1937, 1938, 7, 13, 0, 0, 1938, 1939, 7, 10, 0, 0, 1939, 1940, 7, 25, 0, 0, 1940, 1941, 7, 10, 0, 0, 1941, 1942, 7, 13, 0, 0, 1942, 1943, 7, 10, 0, 0, 1943, 1944, 7, 7, 0, 0, 1944, 1945, 7, 14, 0, 0, 1945, 1946, 7, 10, 0, 0, 1946, 1947, 7, 9, 0, 0, 1947, 184, 1, 0, 0, 0, 1948, 1949, 7, 13, 0, 0, 1949, 1950, 7, 10, 0, 0, 1950, 1951, 7, 16, 0, 0, 1951, 1952, 7, 22, 0, 0, 1952, 1953, 7, 13, 0, 0, 1953, 1954, 7, 7, 0, 0, 1954, 1955, 7, 17, 0, 0, 1955, 1956, 7, 7, 0, 0, 1956, 1957, 7, 23, 0, 0, 1957, 186, 1, 0, 0, 0, 1958, 1959, 7, 9, 0, 0, 1959, 1960, 7, 10, 0, 0, 1960, 1961, 7, 6, 0, 0, 1961, 1962, 7, 10, 0, 0, 1962, 1963, 7, 14, 0, 0, 1963, 1964, 7, 16, 0, 0, 1964, 188, 1, 0, 0, 0, 1965, 1966, 7, 9, 0, 0, 1966, 1967, 7, 10, 0, 0, 1967, 1968, 7, 9, 0, 0, 1968, 1969, 7, 9, 0, 0, 1969, 1970, 7, 17, 0, 0, 1970, 1971, 7, 19, 0, 0, 1971, 1972, 7, 7, 0, 0, 1972, 1973, 5, 95, 0, 0, 1973, 1974, 7, 22, 0, 0, 1974, 1975, 7, 9, 0, 0, 1975, 1976, 7, 10, 0, 0, 1976, 1977, 7, 13, 0, 0, 1977, 190, 1, 0, 0, 0, 1978, 1979, 7, 9, 0, 0, 1979, 1980, 7, 19, 0, 0, 1980, 1981, 7, 15, 0, 0, 1981, 1982, 7, 10, 0, 0, 1982, 192, 1, 0, 0, 0, 1983, 1984, 7, 9, 0, 0, 1984, 1985, 7, 8, 0, 0, 1985, 1986, 7, 15, 0, 0, 1986, 1987, 7, 15, 0, 0, 1987, 1988, 7, 10, 0, 0, 1988, 1989, 7, 16, 0, 0, 1989, 1990, 7, 13, 0, 0, 1990, 1991, 7, 17, 0, 0, 1991, 1992, 7, 14, 0, 0, 1992, 194, 1, 0, 0, 0, 1993, 1994, 7, 16, 0, 0, 1994, 1995, 7, 5, 0, 0, 1995, 1996, 7, 18, 0, 0, 1996, 1997, 7, 6, 0, 0, 1997, 1998, 7, 10, 0, 0, 1998, 196, 1, 0, 0, 0, 1999, 2000, 7, 16, 0, 0, 2000, 2001, 7, 20, 0, 0, 2001, 2002, 7, 10, 0, 0, 2002, 2003, 7, 7, 0, 0, 2003, 198, 1, 0, 0, 0, 2004, 2005, 7, 16, 0, 0, 2005, 2006, 7, 19, 0, 0, 2006, 200, 1, 0, 0, 0, 2007, 2008, 7, 16, 0, 0, 2008, 2009, 7, 19, 0, 0, 2009, 2010, 7, 24, 0, 0, 2010, 2011, 7, 17, 0, 0, 2011, 2012, 7, 14, 0, 0, 2012, 202, 1, 0, 0, 0, 2013, 2014, 7, 11, 0, 0, 2014, 2015, 7, 9, 0, 0, 2015, 2016, 7, 16, 0, 0, 2016, 2017, 7, 13, 0, 0, 2017, 2018, 7, 10, 0, 0, 2018, 2019, 7, 5, 0, 0, 2019, 2020, 7, 15, 0, 0, 2020, 204, 1, 0, 0, 0, 2021, 2022, 7, 11, 0, 0, 2022, 2023, 7, 16, 0, 0, 2023, 2024, 7, 5, 0, 0, 2024, 2025, 7, 18, 0, 0, 2025, 2026, 7, 6, 0, 0, 2026, 2027, 7, 10, 0, 0, 2027, 206, 1, 0, 0, 0, 2028, 2029, 7, 11, 0, 0, 2029, 2030, 7, 27, 0, 0, 2030, 2031, 7, 17, 0, 0, 2031, 2032, 7, 10, 0, 0, 2032, 2033, 7, 28, 0, 0, 2033, 208, 1, 0, 0, 0, 2034, 2035, 7, 16, 0, 0, 2035, 2036, 7, 13, 0, 0, 2036, 2037, 7, 5, 0, 0, 2037, 2038, 7, 17, 0, 0, 2038, 2039, 7, 6, 0, 0, 2039, 2040, 7, 17, 0, 0, 2040, 2041, 7, 7, 0, 0, 2041, 2042, 7, 23, 0, 0, 2042, 210, 1, 0, 0, 0, 2043, 2044, 7, 16, 0, 0, 2044, 2045, 7, 13, 0, 0, 2045, 2046, 7, 22, 0, 0, 2046, 2047, 7, 10, 0, 0, 2047, 212, 1, 0, 0, 0, 2048, 2049, 7, 22, 0, 0, 2049, 2050, 7, 7, 0, 0, 2050, 2051, 7, 17, 0, 0, 2051, 2052, 7, 19, 0, 0, 2052, 2053, 7, 7, 0, 0, 2053, 214, 1, 0, 0, 0, 2054, 2055, 7, 22, 0, 0, 2055, 2056, 7, 7, 0, 0, 2056, 2057, 7, 17, 0, 0, 2057, 2058, 7, 29, 0, 0, 2058, 2059, 7, 22, 0, 0, 2059, 2060, 7, 10, 0, 0, 2060, 216, 1, 0, 0, 0, 2061, 2062, 7, 22, 0, 0, 2062, 2063, 7, 9, 0, 0, 2063, 2064, 7, 10, 0, 0, 2064, 2065, 7, 13, 0, 0, 2065, 218, 1, 0, 0, 0, 2066, 2067, 7, 22, 0, 0, 2067, 2068, 7, 9, 0, 0, 2068, 2069, 7, 17, 0, 0, 2069, 2070, 7, 7, 0, 0, 2070, 2071, 7, 23, 0, 0, 2071, 220, 1, 0, 0, 0, 2072, 2073, 7, 27, 0, 0, 2073, 2074, 7, 5, 0, 0, 2074, 2075, 7, 13, 0, 0, 2075, 2076, 7, 17, 0, 0, 2076, 2077, 7, 5, 0, 0, 2077, 2078, 7, 12, 0, 0, 2078, 2079, 7, 17, 0, 0, 2079, 2080, 7, 14, 0, 0, 2080, 222, 1, 0, 0, 0, 2081, 2082, 7, 28, 0, 0, 2082, 2083, 7, 20, 0, 0, 2083, 2084, 7, 10, 0, 0, 2084, 2085, 7, 7, 0, 0, 2085, 224, 1, 0, 0, 0, 2086, 2087, 7, 28, 0, 0, 2087, 2088, 7, 20, 0, 0, 2088, 2089, 7, 10, 0, 0, 2089, 2090, 7, 13, 0, 0, 2090, 2091, 7, 10, 0, 0, 2091, 226, 1, 0, 0, 0, 2092, 2093, 7, 28, 0, 0, 2093, 2094, 7, 17, 0, 0, 2094, 2095, 7, 7, 0, 0, 2095, 2096, 7, 12, 0, 0, 2096, 2097, 7, 19, 0, 0, 2097, 2098, 7, 28, 0, 0, 2098, 228, 1, 0, 0, 0, 2099, 2100, 7, 28, 0, 0, 2100, 2101, 7, 17, 0, 0, 2101, 2102, 7, 16, 0, 0, 2102, 2103, 7, 20, 0, 0, 2103, 230, 1, 0, 0, 0, 2104, 2105, 7, 5, 0, 0, 2105, 2106, 7, 22, 0, 0, 2106, 2107, 7, 16, 0, 0, 2107, 2108, 7, 20, 0, 0, 2108, 2109, 7, 19, 0, 0, 2109, 2110, 7, 13, 0, 0, 2110, 2111, 7, 17, 0, 0, 2111, 2112, 7, 11, 0, 0, 2112, 2113, 7, 5, 0, 0, 2113, 2114, 7, 16, 0, 0, 2114, 2115, 7, 17, 0, 0, 2115, 2116, 7, 19, 0, 0, 2116, 2117, 7, 7, 0, 0, 2117, 232, 1, 0, 0, 0, 2118, 2119, 7, 18, 0, 0, 2119, 2120, 7, 17, 0, 0, 2120, 2121, 7, 7, 0, 0, 2121, 2122, 7, 5, 0, 0, 2122, 2123, 7, 13, 0, 0, 2123, 2124, 7, 8, 0, 0, 2124, 234, 1, 0, 0, 0, 2125, 2126, 7, 14, 0, 0, 2126, 2127, 7, 19, 0, 0, 2127, 2128, 7, 6, 0, 0, 2128, 2129, 7, 6, 0, 0, 2129, 2130, 7, 5, 0, 0, 2130, 2131, 7, 16, 0, 0, 2131, 2132, 7, 17, 0, 0, 2132, 2133, 7, 19, 0, 0, 2133, 2134, 7, 7, 0, 0, 2134, 236, 1, 0, 0, 0, 2135, 2136, 7, 14, 0, 0, 2136, 2137, 7, 19, 0, 0, 2137, 2138, 7, 7, 0, 0, 2138, 2139, 7, 14, 0, 0, 2139, 2140, 7, 22, 0, 0, 2140, 2141, 7, 13, 0, 0, 2141, 2142, 7, 13, 0, 0, 2142, 2143, 7, 10, 0, 0, 2143, 2144, 7, 7, 0, 0, 2144, 2145, 7, 16, 0, 0, 2145, 2146, 7, 6, 0, 0, 2146, 2147, 7, 8, 0, 0, 2147, 238, 1, 0, 0, 0, 2148, 2149, 7, 14, 0, 0, 2149, 2150, 7, 13, 0, 0, 2150, 2151, 7, 19, 0, 0, 2151, 2152, 7, 9, 0, 0, 2152, 2153, 7, 9, 0, 0, 2153, 240, 1, 0, 0, 0, 2154, 2155, 7, 14, 0, 0, 2155, 2156, 7, 22, 0, 0, 2156, 2157, 7, 13, 0, 0, 2157, 2158, 7, 13, 0, 0, 2158, 2159, 7, 10, 0, 0, 2159, 2160, 7, 7, 0, 0, 2160, 2161, 7, 16, 0, 0, 2161, 2162, 5, 95, 0, 0, 2162, 2163, 7, 9, 0, 0, 2163, 2164, 7, 14, 0, 0, 2164, 2165, 7, 20, 0, 0, 2165, 2166, 7, 10, 0, 0, 2166, 2167, 7, 15, 0, 0, 2167, 2168, 7, 5, 0, 0, 2168, 242, 1, 0, 0, 0, 2169, 2170, 7, 25, 0, 0, 2170, 2171, 7, 13, 0, 0, 2171, 2172, 7, 10, 0, 0, 2172, 2173, 7, 10, 0, 0, 2173, 2174, 7, 11, 0, 0, 2174, 2175, 7, 10, 0, 0, 2175, 244, 1, 0, 0, 0, 2176, 2177, 7, 25, 0, 0, 2177, 2178, 7, 22, 0, 0, 2178, 2179, 7, 6, 0, 0, 2179, 2180, 7, 6, 0, 0, 2180, 246, 1, 0, 0, 0, 2181, 2182, 7, 17, 0, 0, 2182, 2183, 7, 6, 0, 0, 2183, 2184, 7, 17, 0, 0, 2184, 2185, 7, 21, 0, 0, 2185, 2186, 7, 10, 0, 0, 2186, 248, 1, 0, 0, 0, 2187, 2188, 7, 17, 0, 0, 2188, 2189, 7, 7, 0, 0, 2189, 2190, 7, 7, 0, 0, 2190, 2191, 7, 10, 0, 0, 2191, 2192, 7, 13, 0, 0, 2192, 250, 1, 0, 0, 0, 2193, 2194, 7, 17, 0, 0, 2194, 2195, 7, 9, 0, 0, 2195, 252, 1, 0, 0, 0, 2196, 2197, 7, 17, 0, 0, 2197, 2198, 7, 9, 0, 0, 2198, 2199, 7, 7, 0, 0, 2199, 2200, 7, 22, 0, 0, 2200, 2201, 7, 6, 0, 0, 2201, 2202, 7, 6, 0, 0, 2202, 254, 1, 0, 0, 0, 2203, 2204, 7, 30, 0, 0, 2204, 2205, 7, 19, 0, 0, 2205, 2206, 7, 17, 0, 0, 2206, 2207, 7, 7, 0, 0, 2207, 256, 1, 0, 0, 0, 2208, 2209, 7, 6, 0, 0, 2209, 2210, 7, 10, 0, 0, 2210, 2211, 7, 25, 0, 0, 2211, 2212, 7, 16, 0, 0, 2212, 258, 1, 0, 0, 0, 2213, 2214, 7, 6, 0, 0, 2214, 2215, 7, 17, 0, 0, 2215, 2216, 7, 21, 0, 0, 2216, 2217, 7, 10, 0, 0, 2217, 260, 1, 0, 0, 0, 2218, 2219, 7, 7, 0, 0, 2219, 2220, 7, 5, 0, 0, 2220, 2221, 7, 16, 0, 0, 2221, 2222, 7, 22, 0, 0, 2222, 2223, 7, 13, 0, 0, 2223, 2224, 7, 5, 0, 0, 2224, 2225, 7, 6, 0, 0, 2225, 262, 1, 0, 0, 0, 2226, 2227, 7, 7, 0, 0, 2227, 2228, 7, 19, 0, 0, 2228, 2229, 7, 16, 0, 0, 2229, 2230, 7, 7, 0, 0, 2230, 2231, 7, 22, 0, 0, 2231, 2232, 7, 6, 0, 0, 2232, 2233, 7, 6, 0, 0, 2233, 264, 1, 0, 0, 0, 2234, 2235, 7, 19, 0, 0, 2235, 2236, 7, 22, 0, 0, 2236, 2237, 7, 16, 0, 0, 2237, 2238, 7, 10, 0, 0, 2238, 2239, 7, 13, 0, 0, 2239, 266, 1, 0, 0, 0, 2240, 2241, 7, 19, 0, 0, 2241, 2242, 7, 27, 0, 0, 2242, 2243, 7, 10, 0, 0, 2243, 2244, 7, 13, 0, 0, 2244, 268, 1, 0, 0, 0, 2245, 2246, 7, 19, 0, 0, 2246, 2247, 7, 27, 0, 0, 2247, 2248, 7, 10, 0, 0, 2248, 2249, 7, 13, 0, 0, 2249, 2250, 7, 6, 0, 0, 2250, 2251, 7, 5, 0, 0, 2251, 2252, 7, 24, 0, 0, 2252, 2253, 7, 9, 0, 0, 2253, 270, 1, 0, 0, 0, 2254, 2255, 7, 13, 0, 0, 2255, 2256, 7, 17, 0, 0, 2256, 2257, 7, 23, 0, 0, 2257, 2258, 7, 20, 0, 0, 2258, 2259, 7, 16, 0, 0, 2259, 272, 1, 0, 0, 0, 2260, 2261, 7, 9, 0, 0, 2261, 2262, 7, 17, 0, 0, 2262, 2263, 7, 15, 0, 0, 2263, 2264, 7, 17, 0, 0, 2264, 2265, 7, 6, 0, 0, 2265, 2266, 7, 5, 0, 0, 2266, 2267, 7, 13, 0, 0, 2267, 274, 1, 0, 0, 0, 2268, 2269, 7, 27, 0, 0, 2269, 2270, 7, 10, 0, 0, 2270, 2271, 7, 13, 0, 0, 2271, 2272, 7, 18, 0, 0, 2272, 2273, 7, 19, 0, 0, 2273, 2274, 7, 9, 0, 0, 2274, 2275, 7, 10, 0, 0, 2275, 276, 1, 0, 0, 0, 2276, 2277, 7, 5, 0, 0, 2277, 2278, 7, 18, 0, 0, 2278, 2279, 7, 19, 0, 0, 2279, 2280, 7, 13, 0, 0, 2280, 2281, 7, 16, 0, 0, 2281, 278, 1, 0, 0, 0, 2282, 2283, 7, 5, 0, 0, 2283, 2284, 7, 18, 0, 0, 2284, 2285, 7, 9, 0, 0, 2285, 2286, 7, 19, 0, 0, 2286, 2287, 7, 6, 0, 0, 2287, 2288, 7, 22, 0, 0, 2288, 2289, 7, 16, 0, 0, 2289, 2290, 7, 10, 0, 0, 2290, 280, 1, 0, 0, 0, 2291, 2292, 7, 5, 0, 0, 2292, 2293, 7, 14, 0, 0, 2293, 2294, 7, 14, 0, 0, 2294, 2295, 7, 10, 0, 0, 2295, 2296, 7, 9, 0, 0, 2296, 2297, 7, 9, 0, 0, 2297, 282, 1, 0, 0, 0, 2298, 2299, 7, 5, 0, 0, 2299, 2300, 7, 14, 0, 0, 2300, 2301, 7, 16, 0, 0, 2301, 2302, 7, 17, 0, 0, 2302, 2303, 7, 19, 0, 0, 2303, 2304, 7, 7, 0, 0, 2304, 284, 1, 0, 0, 0, 2305, 2306, 7, 5, 0, 0, 2306, 2307, 7, 12, 0, 0, 2307, 2308, 7, 12, 0, 0, 2308, 286, 1, 0, 0, 0, 2309, 2310, 7, 5, 0, 0, 2310, 2311, 7, 12, 0, 0, 2311, 2312, 7, 15, 0, 0, 2312, 2313, 7, 17, 0, 0, 2313, 2314, 7, 7, 0, 0, 2314, 288, 1, 0, 0, 0, 2315, 2316, 7, 5, 0, 0, 2316, 2317, 7, 25, 0, 0, 2317, 2318, 7, 16, 0, 0, 2318, 2319, 7, 10, 0, 0, 2319, 2320, 7, 13, 0, 0, 2320, 290, 1, 0, 0, 0, 2321, 2322, 7, 5, 0, 0, 2322, 2323, 7, 23, 0, 0, 2323, 2324, 7, 23, 0, 0, 2324, 2325, 7, 13, 0, 0, 2325, 2326, 7, 10, 0, 0, 2326, 2327, 7, 23, 0, 0, 2327, 2328, 7, 5, 0, 0, 2328, 2329, 7, 16, 0, 0, 2329, 2330, 7, 10, 0, 0, 2330, 292, 1, 0, 0, 0, 2331, 2332, 7, 5, 0, 0, 2332, 2333, 7, 6, 0, 0, 2333, 2334, 7, 9, 0, 0, 2334, 2335, 7, 19, 0, 0, 2335, 294, 1, 0, 0, 0, 2336, 2337, 7, 5, 0, 0, 2337, 2338, 7, 6, 0, 0, 2338, 2339, 7, 16, 0, 0, 2339, 2340, 7, 10, 0, 0, 2340, 2341, 7, 13, 0, 0, 2341, 296, 1, 0, 0, 0, 2342, 2343, 7, 5, 0, 0, 2343, 2344, 7, 6, 0, 0, 2344, 2345, 7, 28, 0, 0, 2345, 2346, 7, 5, 0, 0, 2346, 2347, 7, 8, 0, 0, 2347, 2348, 7, 9, 0, 0, 2348, 298, 1, 0, 0, 0, 2349, 2350, 7, 5, 0, 0, 2350, 2351, 7, 9, 0, 0, 2351, 2352, 7, 9, 0, 0, 2352, 2353, 7, 10, 0, 0, 2353, 2354, 7, 13, 0, 0, 2354, 2355, 7, 16, 0, 0, 2355, 2356, 7, 17, 0, 0, 2356, 2357, 7, 19, 0, 0, 2357, 2358, 7, 7, 0, 0, 2358, 300, 1, 0, 0, 0, 2359, 2360, 7, 5, 0, 0, 2360, 2361, 7, 9, 0, 0, 2361, 2362, 7, 9, 0, 0, 2362, 2363, 7, 17, 0, 0, 2363, 2364, 7, 23, 0, 0, 2364, 2365, 7, 7, 0, 0, 2365, 2366, 7, 15, 0, 0, 2366, 2367, 7, 10, 0, 0, 2367, 2368, 7, 7, 0, 0, 2368, 2369, 7, 16, 0, 0, 2369, 302, 1, 0, 0, 0, 2370, 2371, 7, 5, 0, 0, 2371, 2372, 7, 16, 0, 0, 2372, 304, 1, 0, 0, 0, 2373, 2374, 7, 5, 0, 0, 2374, 2375, 7, 16, 0, 0, 2375, 2376, 7, 16, 0, 0, 2376, 2377, 7, 13, 0, 0, 2377, 2378, 7, 17, 0, 0, 2378, 2379, 7, 18, 0, 0, 2379, 2380, 7, 22, 0, 0, 2380, 2381, 7, 16, 0, 0, 2381, 2382, 7, 10, 0, 0, 2382, 306, 1, 0, 0, 0, 2383, 2384, 7, 18, 0, 0, 2384, 2385, 7, 5, 0, 0, 2385, 2386, 7, 14, 0, 0, 2386, 2387, 7, 21, 0, 0, 2387, 2388, 7, 28, 0, 0, 2388, 2389, 7, 5, 0, 0, 2389, 2390, 7, 13, 0, 0, 2390, 2391, 7, 12, 0, 0, 2391, 308, 1, 0, 0, 0, 2392, 2393, 7, 18, 0, 0, 2393, 2394, 7, 10, 0, 0, 2394, 2395, 7, 25, 0, 0, 2395, 2396, 7, 19, 0, 0, 2396, 2397, 7, 13, 0, 0, 2397, 2398, 7, 10, 0, 0, 2398, 310, 1, 0, 0, 0, 2399, 2400, 7, 18, 0, 0, 2400, 2401, 7, 10, 0, 0, 2401, 2402, 7, 23, 0, 0, 2402, 2403, 7, 17, 0, 0, 2403, 2404, 7, 7, 0, 0, 2404, 312, 1, 0, 0, 0, 2405, 2406, 7, 18, 0, 0, 2406, 2407, 7, 8, 0, 0, 2407, 314, 1, 0, 0, 0, 2408, 2409, 7, 14, 0, 0, 2409, 2410, 7, 5, 0, 0, 2410, 2411, 7, 14, 0, 0, 2411, 2412, 7, 20, 0, 0, 2412, 2413, 7, 10, 0, 0, 2413, 316, 1, 0, 0, 0, 2414, 2415, 7, 14, 0, 0, 2415, 2416, 7, 5, 0, 0, 2416, 2417, 7, 6, 0, 0, 2417, 2418, 7, 6, 0, 0, 2418, 2419, 7, 10, 0, 0, 2419, 2420, 7, 12, 0, 0, 2420, 318, 1, 0, 0, 0, 2421, 2422, 7, 14, 0, 0, 2422, 2423, 7, 5, 0, 0, 2423, 2424, 7, 9, 0, 0, 2424, 2425, 7, 14, 0, 0, 2425, 2426, 7, 5, 0, 0, 2426, 2427, 7, 12, 0, 0, 2427, 2428, 7, 10, 0, 0, 2428, 320, 1, 0, 0, 0, 2429, 2430, 7, 14, 0, 0, 2430, 2431, 7, 5, 0, 0, 2431, 2432, 7, 9, 0, 0, 2432, 2433, 7, 14, 0, 0, 2433, 2434, 7, 5, 0, 0, 2434, 2435, 7, 12, 0, 0, 2435, 2436, 7, 10, 0, 0, 2436, 2437, 7, 12, 0, 0, 2437, 322, 1, 0, 0, 0, 2438, 2439, 7, 14, 0, 0, 2439, 2440, 7, 5, 0, 0, 2440, 2441, 7, 16, 0, 0, 2441, 2442, 7, 5, 0, 0, 2442, 2443, 7, 6, 0, 0, 2443, 2444, 7, 19, 0, 0, 2444, 2445, 7, 23, 0, 0, 2445, 324, 1, 0, 0, 0, 2446, 2447, 7, 14, 0, 0, 2447, 2448, 7, 20, 0, 0, 2448, 2449, 7, 5, 0, 0, 2449, 2450, 7, 17, 0, 0, 2450, 2451, 7, 7, 0, 0, 2451, 326, 1, 0, 0, 0, 2452, 2453, 7, 14, 0, 0, 2453, 2454, 7, 20, 0, 0, 2454, 2455, 7, 5, 0, 0, 2455, 2456, 7, 13, 0, 0, 2456, 2457, 7, 5, 0, 0, 2457, 2458, 7, 14, 0, 0, 2458, 2459, 7, 16, 0, 0, 2459, 2460, 7, 10, 0, 0, 2460, 2461, 7, 13, 0, 0, 2461, 2462, 7, 17, 0, 0, 2462, 2463, 7, 9, 0, 0, 2463, 2464, 7, 16, 0, 0, 2464, 2465, 7, 17, 0, 0, 2465, 2466, 7, 14, 0, 0, 2466, 2467, 7, 9, 0, 0, 2467, 328, 1, 0, 0, 0, 2468, 2469, 7, 14, 0, 0, 2469, 2470, 7, 20, 0, 0, 2470, 2471, 7, 10, 0, 0, 2471, 2472, 7, 14, 0, 0, 2472, 2473, 7, 21, 0, 0, 2473, 2474, 7, 24, 0, 0, 2474, 2475, 7, 19, 0, 0, 2475, 2476, 7, 17, 0, 0, 2476, 2477, 7, 7, 0, 0, 2477, 2478, 7, 16, 0, 0, 2478, 330, 1, 0, 0, 0, 2479, 2480, 7, 14, 0, 0, 2480, 2481, 7, 6, 0, 0, 2481, 2482, 7, 5, 0, 0, 2482, 2483, 7, 9, 0, 0, 2483, 2484, 7, 9, 0, 0, 2484, 332, 1, 0, 0, 0, 2485, 2486, 7, 14, 0, 0, 2486, 2487, 7, 6, 0, 0, 2487, 2488, 7, 19, 0, 0, 2488, 2489, 7, 9, 0, 0, 2489, 2490, 7, 10, 0, 0, 2490, 334, 1, 0, 0, 0, 2491, 2492, 7, 14, 0, 0, 2492, 2493, 7, 6, 0, 0, 2493, 2494, 7, 22, 0, 0, 2494, 2495, 7, 9, 0, 0, 2495, 2496, 7, 16, 0, 0, 2496, 2497, 7, 10, 0, 0, 2497, 2498, 7, 13, 0, 0, 2498, 336, 1, 0, 0, 0, 2499, 2500, 7, 14, 0, 0, 2500, 2501, 7, 19, 0, 0, 2501, 2502, 7, 15, 0, 0, 2502, 2503, 7, 15, 0, 0, 2503, 2504, 7, 10, 0, 0, 2504, 2505, 7, 7, 0, 0, 2505, 2506, 7, 16, 0, 0, 2506, 338, 1, 0, 0, 0, 2507, 2508, 7, 14, 0, 0, 2508, 2509, 7, 19, 0, 0, 2509, 2510, 7, 15, 0, 0, 2510, 2511, 7, 15, 0, 0, 2511, 2512, 7, 10, 0, 0, 2512, 2513, 7, 7, 0, 0, 2513, 2514, 7, 16, 0, 0, 2514, 2515, 7, 9, 0, 0, 2515, 340, 1, 0, 0, 0, 2516, 2517, 7, 14, 0, 0, 2517, 2518, 7, 19, 0, 0, 2518, 2519, 7, 15, 0, 0, 2519, 2520, 7, 15, 0, 0, 2520, 2521, 7, 17, 0, 0, 2521, 2522, 7, 16, 0, 0, 2522, 342, 1, 0, 0, 0, 2523, 2524, 7, 14, 0, 0, 2524, 2525, 7, 19, 0, 0, 2525, 2526, 7, 15, 0, 0, 2526, 2527, 7, 15, 0, 0, 2527, 2528, 7, 17, 0, 0, 2528, 2529, 7, 16, 0, 0, 2529, 2530, 7, 16, 0, 0, 2530, 2531, 7, 10, 0, 0, 2531, 2532, 7, 12, 0, 0, 2532, 344, 1, 0, 0, 0, 2533, 2534, 7, 14, 0, 0, 2534, 2535, 7, 19, 0, 0, 2535, 2536, 7, 7, 0, 0, 2536, 2537, 7, 25, 0, 0, 2537, 2538, 7, 17, 0, 0, 2538, 2539, 7, 23, 0, 0, 2539, 2540, 7, 22, 0, 0, 2540, 2541, 7, 13, 0, 0, 2541, 2542, 7, 5, 0, 0, 2542, 2543, 7, 16, 0, 0, 2543, 2544, 7, 17, 0, 0, 2544, 2545, 7, 19, 0, 0, 2545, 2546, 7, 7, 0, 0, 2546, 346, 1, 0, 0, 0, 2547, 2548, 7, 14, 0, 0, 2548, 2549, 7, 19, 0, 0, 2549, 2550, 7, 7, 0, 0, 2550, 2551, 7, 7, 0, 0, 2551, 2552, 7, 10, 0, 0, 2552, 2553, 7, 14, 0, 0, 2553, 2554, 7, 16, 0, 0, 2554, 2555, 7, 17, 0, 0, 2555, 2556, 7, 19, 0, 0, 2556, 2557, 7, 7, 0, 0, 2557, 348, 1, 0, 0, 0, 2558, 2559, 7, 14, 0, 0, 2559, 2560, 7, 19, 0, 0, 2560, 2561, 7, 7, 0, 0, 2561, 2562, 7, 9, 0, 0, 2562, 2563, 7, 16, 0, 0, 2563, 2564, 7, 13, 0, 0, 2564, 2565, 7, 5, 0, 0, 2565, 2566, 7, 17, 0, 0, 2566, 2567, 7, 7, 0, 0, 2567, 2568, 7, 16, 0, 0, 2568, 2569, 7, 9, 0, 0, 2569, 350, 1, 0, 0, 0, 2570, 2571, 7, 14, 0, 0, 2571, 2572, 7, 19, 0, 0, 2572, 2573, 7, 7, 0, 0, 2573, 2574, 7, 16, 0, 0, 2574, 2575, 7, 10, 0, 0, 2575, 2576, 7, 7, 0, 0, 2576, 2577, 7, 16, 0, 0, 2577, 352, 1, 0, 0, 0, 2578, 2579, 7, 14, 0, 0, 2579, 2580, 7, 19, 0, 0, 2580, 2581, 7, 7, 0, 0, 2581, 2582, 7, 16, 0, 0, 2582, 2583, 7, 17, 0, 0, 2583, 2584, 7, 7, 0, 0, 2584, 2585, 7, 22, 0, 0, 2585, 2586, 7, 10, 0, 0, 2586, 354, 1, 0, 0, 0, 2587, 2588, 7, 14, 0, 0, 2588, 2589, 7, 19, 0, 0, 2589, 2590, 7, 7, 0, 0, 2590, 2591, 7, 27, 0, 0, 2591, 2592, 7, 10, 0, 0, 2592, 2593, 7, 13, 0, 0, 2593, 2594, 7, 9, 0, 0, 2594, 2595, 7, 17, 0, 0, 2595, 2596, 7, 19, 0, 0, 2596, 2597, 7, 7, 0, 0, 2597, 356, 1, 0, 0, 0, 2598, 2599, 7, 14, 0, 0, 2599, 2600, 7, 19, 0, 0, 2600, 2601, 7, 24, 0, 0, 2601, 2602, 7, 8, 0, 0, 2602, 358, 1, 0, 0, 0, 2603, 2604, 7, 14, 0, 0, 2604, 2605, 7, 19, 0, 0, 2605, 2606, 7, 9, 0, 0, 2606, 2607, 7, 16, 0, 0, 2607, 360, 1, 0, 0, 0, 2608, 2609, 7, 14, 0, 0, 2609, 2610, 7, 9, 0, 0, 2610, 2611, 7, 27, 0, 0, 2611, 362, 1, 0, 0, 0, 2612, 2613, 7, 14, 0, 0, 2613, 2614, 7, 22, 0, 0, 2614, 2615, 7, 13, 0, 0, 2615, 2616, 7, 9, 0, 0, 2616, 2617, 7, 19, 0, 0, 2617, 2618, 7, 13, 0, 0, 2618, 364, 1, 0, 0, 0, 2619, 2620, 7, 14, 0, 0, 2620, 2621, 7, 8, 0, 0, 2621, 2622, 7, 14, 0, 0, 2622, 2623, 7, 6, 0, 0, 2623, 2624, 7, 10, 0, 0, 2624, 366, 1, 0, 0, 0, 2625, 2626, 7, 12, 0, 0, 2626, 2627, 7, 5, 0, 0, 2627, 2628, 7, 16, 0, 0, 2628, 2629, 7, 5, 0, 0, 2629, 368, 1, 0, 0, 0, 2630, 2631, 7, 12, 0, 0, 2631, 2632, 7, 5, 0, 0, 2632, 2633, 7, 16, 0, 0, 2633, 2634, 7, 5, 0, 0, 2634, 2635, 7, 18, 0, 0, 2635, 2636, 7, 5, 0, 0, 2636, 2637, 7, 9, 0, 0, 2637, 2638, 7, 10, 0, 0, 2638, 370, 1, 0, 0, 0, 2639, 2640, 7, 12, 0, 0, 2640, 2641, 7, 5, 0, 0, 2641, 2642, 7, 8, 0, 0, 2642, 372, 1, 0, 0, 0, 2643, 2644, 7, 12, 0, 0, 2644, 2645, 7, 10, 0, 0, 2645, 2646, 7, 5, 0, 0, 2646, 2647, 7, 6, 0, 0, 2647, 2648, 7, 6, 0, 0, 2648, 2649, 7, 19, 0, 0, 2649, 2650, 7, 14, 0, 0, 2650, 2651, 7, 5, 0, 0, 2651, 2652, 7, 16, 0, 0, 2652, 2653, 7, 10, 0, 0, 2653, 374, 1, 0, 0, 0, 2654, 2655, 7, 12, 0, 0, 2655, 2656, 7, 10, 0, 0, 2656, 2657, 7, 14, 0, 0, 2657, 2658, 7, 6, 0, 0, 2658, 2659, 7, 5, 0, 0, 2659, 2660, 7, 13, 0, 0, 2660, 2661, 7, 10, 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, 5, 0, 0, 2666, 2667, 7, 22, 0, 0, 2667, 2668, 7, 6, 0, 0, 2668, 2669, 7, 16, 0, 0, 2669, 2670, 7, 9, 0, 0, 2670, 378, 1, 0, 0, 0, 2671, 2672, 7, 12, 0, 0, 2672, 2673, 7, 10, 0, 0, 2673, 2674, 7, 25, 0, 0, 2674, 2675, 7, 10, 0, 0, 2675, 2676, 7, 13, 0, 0, 2676, 2677, 7, 13, 0, 0, 2677, 2678, 7, 10, 0, 0, 2678, 2679, 7, 12, 0, 0, 2679, 380, 1, 0, 0, 0, 2680, 2681, 7, 12, 0, 0, 2681, 2682, 7, 10, 0, 0, 2682, 2683, 7, 25, 0, 0, 2683, 2684, 7, 17, 0, 0, 2684, 2685, 7, 7, 0, 0, 2685, 2686, 7, 10, 0, 0, 2686, 2687, 7, 13, 0, 0, 2687, 382, 1, 0, 0, 0, 2688, 2689, 7, 12, 0, 0, 2689, 2690, 7, 10, 0, 0, 2690, 2691, 7, 6, 0, 0, 2691, 2692, 7, 10, 0, 0, 2692, 2693, 7, 16, 0, 0, 2693, 2694, 7, 10, 0, 0, 2694, 384, 1, 0, 0, 0, 2695, 2696, 7, 12, 0, 0, 2696, 2697, 7, 10, 0, 0, 2697, 2698, 7, 6, 0, 0, 2698, 2699, 7, 17, 0, 0, 2699, 2700, 7, 15, 0, 0, 2700, 2701, 7, 17, 0, 0, 2701, 2702, 7, 16, 0, 0, 2702, 2703, 7, 10, 0, 0, 2703, 2704, 7, 13, 0, 0, 2704, 386, 1, 0, 0, 0, 2705, 2706, 7, 12, 0, 0, 2706, 2707, 7, 10, 0, 0, 2707, 2708, 7, 6, 0, 0, 2708, 2709, 7, 17, 0, 0, 2709, 2710, 7, 15, 0, 0, 2710, 2711, 7, 17, 0, 0, 2711, 2712, 7, 16, 0, 0, 2712, 2713, 7, 10, 0, 0, 2713, 2714, 7, 13, 0, 0, 2714, 2715, 7, 9, 0, 0, 2715, 388, 1, 0, 0, 0, 2716, 2717, 7, 12, 0, 0, 2717, 2718, 7, 17, 0, 0, 2718, 2719, 7, 14, 0, 0, 2719, 2720, 7, 16, 0, 0, 2720, 2721, 7, 17, 0, 0, 2721, 2722, 7, 19, 0, 0, 2722, 2723, 7, 7, 0, 0, 2723, 2724, 7, 5, 0, 0, 2724, 2725, 7, 13, 0, 0, 2725, 2726, 7, 8, 0, 0, 2726, 390, 1, 0, 0, 0, 2727, 2728, 7, 12, 0, 0, 2728, 2729, 7, 17, 0, 0, 2729, 2730, 7, 9, 0, 0, 2730, 2731, 7, 5, 0, 0, 2731, 2732, 7, 18, 0, 0, 2732, 2733, 7, 6, 0, 0, 2733, 2734, 7, 10, 0, 0, 2734, 392, 1, 0, 0, 0, 2735, 2736, 7, 12, 0, 0, 2736, 2737, 7, 17, 0, 0, 2737, 2738, 7, 9, 0, 0, 2738, 2739, 7, 14, 0, 0, 2739, 2740, 7, 5, 0, 0, 2740, 2741, 7, 13, 0, 0, 2741, 2742, 7, 12, 0, 0, 2742, 394, 1, 0, 0, 0, 2743, 2744, 7, 12, 0, 0, 2744, 2745, 7, 19, 0, 0, 2745, 2746, 7, 14, 0, 0, 2746, 2747, 7, 22, 0, 0, 2747, 2748, 7, 15, 0, 0, 2748, 2749, 7, 10, 0, 0, 2749, 2750, 7, 7, 0, 0, 2750, 2751, 7, 16, 0, 0, 2751, 396, 1, 0, 0, 0, 2752, 2753, 7, 12, 0, 0, 2753, 2754, 7, 19, 0, 0, 2754, 2755, 7, 15, 0, 0, 2755, 2756, 7, 5, 0, 0, 2756, 2757, 7, 17, 0, 0, 2757, 2758, 7, 7, 0, 0, 2758, 398, 1, 0, 0, 0, 2759, 2760, 7, 12, 0, 0, 2760, 2761, 7, 19, 0, 0, 2761, 2762, 7, 22, 0, 0, 2762, 2763, 7, 18, 0, 0, 2763, 2764, 7, 6, 0, 0, 2764, 2765, 7, 10, 0, 0, 2765, 400, 1, 0, 0, 0, 2766, 2767, 7, 12, 0, 0, 2767, 2768, 7, 13, 0, 0, 2768, 2769, 7, 19, 0, 0, 2769, 2770, 7, 24, 0, 0, 2770, 402, 1, 0, 0, 0, 2771, 2772, 7, 10, 0, 0, 2772, 2773, 7, 5, 0, 0, 2773, 2774, 7, 14, 0, 0, 2774, 2775, 7, 20, 0, 0, 2775, 404, 1, 0, 0, 0, 2776, 2777, 7, 10, 0, 0, 2777, 2778, 7, 7, 0, 0, 2778, 2779, 7, 5, 0, 0, 2779, 2780, 7, 18, 0, 0, 2780, 2781, 7, 6, 0, 0, 2781, 2782, 7, 10, 0, 0, 2782, 406, 1, 0, 0, 0, 2783, 2784, 7, 10, 0, 0, 2784, 2785, 7, 7, 0, 0, 2785, 2786, 7, 14, 0, 0, 2786, 2787, 7, 19, 0, 0, 2787, 2788, 7, 12, 0, 0, 2788, 2789, 7, 17, 0, 0, 2789, 2790, 7, 7, 0, 0, 2790, 2791, 7, 23, 0, 0, 2791, 408, 1, 0, 0, 0, 2792, 2793, 7, 10, 0, 0, 2793, 2794, 7, 7, 0, 0, 2794, 2795, 7, 14, 0, 0, 2795, 2796, 7, 13, 0, 0, 2796, 2797, 7, 8, 0, 0, 2797, 2798, 7, 24, 0, 0, 2798, 2799, 7, 16, 0, 0, 2799, 2800, 7, 10, 0, 0, 2800, 2801, 7, 12, 0, 0, 2801, 410, 1, 0, 0, 0, 2802, 2803, 7, 10, 0, 0, 2803, 2804, 7, 7, 0, 0, 2804, 2805, 7, 22, 0, 0, 2805, 2806, 7, 15, 0, 0, 2806, 412, 1, 0, 0, 0, 2807, 2808, 7, 10, 0, 0, 2808, 2809, 7, 9, 0, 0, 2809, 2810, 7, 14, 0, 0, 2810, 2811, 7, 5, 0, 0, 2811, 2812, 7, 24, 0, 0, 2812, 2813, 7, 10, 0, 0, 2813, 414, 1, 0, 0, 0, 2814, 2815, 7, 10, 0, 0, 2815, 2816, 7, 27, 0, 0, 2816, 2817, 7, 10, 0, 0, 2817, 2818, 7, 7, 0, 0, 2818, 2819, 7, 16, 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, 12, 0, 0, 2826, 2827, 7, 10, 0, 0, 2827, 418, 1, 0, 0, 0, 2828, 2829, 7, 10, 0, 0, 2829, 2830, 7, 26, 0, 0, 2830, 2831, 7, 14, 0, 0, 2831, 2832, 7, 6, 0, 0, 2832, 2833, 7, 22, 0, 0, 2833, 2834, 7, 12, 0, 0, 2834, 2835, 7, 17, 0, 0, 2835, 2836, 7, 7, 0, 0, 2836, 2837, 7, 23, 0, 0, 2837, 420, 1, 0, 0, 0, 2838, 2839, 7, 10, 0, 0, 2839, 2840, 7, 26, 0, 0, 2840, 2841, 7, 14, 0, 0, 2841, 2842, 7, 6, 0, 0, 2842, 2843, 7, 22, 0, 0, 2843, 2844, 7, 9, 0, 0, 2844, 2845, 7, 17, 0, 0, 2845, 2846, 7, 27, 0, 0, 2846, 2847, 7, 10, 0, 0, 2847, 422, 1, 0, 0, 0, 2848, 2849, 7, 10, 0, 0, 2849, 2850, 7, 26, 0, 0, 2850, 2851, 7, 10, 0, 0, 2851, 2852, 7, 14, 0, 0, 2852, 2853, 7, 22, 0, 0, 2853, 2854, 7, 16, 0, 0, 2854, 2855, 7, 10, 0, 0, 2855, 424, 1, 0, 0, 0, 2856, 2857, 7, 10, 0, 0, 2857, 2858, 7, 26, 0, 0, 2858, 2859, 7, 24, 0, 0, 2859, 2860, 7, 6, 0, 0, 2860, 2861, 7, 5, 0, 0, 2861, 2862, 7, 17, 0, 0, 2862, 2863, 7, 7, 0, 0, 2863, 426, 1, 0, 0, 0, 2864, 2865, 7, 10, 0, 0, 2865, 2866, 7, 26, 0, 0, 2866, 2867, 7, 16, 0, 0, 2867, 2868, 7, 10, 0, 0, 2868, 2869, 7, 7, 0, 0, 2869, 2870, 7, 9, 0, 0, 2870, 2871, 7, 17, 0, 0, 2871, 2872, 7, 19, 0, 0, 2872, 2873, 7, 7, 0, 0, 2873, 428, 1, 0, 0, 0, 2874, 2875, 7, 10, 0, 0, 2875, 2876, 7, 26, 0, 0, 2876, 2877, 7, 16, 0, 0, 2877, 2878, 7, 10, 0, 0, 2878, 2879, 7, 13, 0, 0, 2879, 2880, 7, 7, 0, 0, 2880, 2881, 7, 5, 0, 0, 2881, 2882, 7, 6, 0, 0, 2882, 430, 1, 0, 0, 0, 2883, 2884, 7, 25, 0, 0, 2884, 2885, 7, 5, 0, 0, 2885, 2886, 7, 15, 0, 0, 2886, 2887, 7, 17, 0, 0, 2887, 2888, 7, 6, 0, 0, 2888, 2889, 7, 8, 0, 0, 2889, 432, 1, 0, 0, 0, 2890, 2891, 7, 25, 0, 0, 2891, 2892, 7, 17, 0, 0, 2892, 2893, 7, 13, 0, 0, 2893, 2894, 7, 9, 0, 0, 2894, 2895, 7, 16, 0, 0, 2895, 434, 1, 0, 0, 0, 2896, 2897, 7, 25, 0, 0, 2897, 2898, 7, 19, 0, 0, 2898, 2899, 7, 6, 0, 0, 2899, 2900, 7, 6, 0, 0, 2900, 2901, 7, 19, 0, 0, 2901, 2902, 7, 28, 0, 0, 2902, 2903, 7, 17, 0, 0, 2903, 2904, 7, 7, 0, 0, 2904, 2905, 7, 23, 0, 0, 2905, 436, 1, 0, 0, 0, 2906, 2907, 7, 25, 0, 0, 2907, 2908, 7, 19, 0, 0, 2908, 2909, 7, 13, 0, 0, 2909, 2910, 7, 14, 0, 0, 2910, 2911, 7, 10, 0, 0, 2911, 438, 1, 0, 0, 0, 2912, 2913, 7, 25, 0, 0, 2913, 2914, 7, 19, 0, 0, 2914, 2915, 7, 13, 0, 0, 2915, 2916, 7, 28, 0, 0, 2916, 2917, 7, 5, 0, 0, 2917, 2918, 7, 13, 0, 0, 2918, 2919, 7, 12, 0, 0, 2919, 440, 1, 0, 0, 0, 2920, 2921, 7, 25, 0, 0, 2921, 2922, 7, 22, 0, 0, 2922, 2923, 7, 7, 0, 0, 2923, 2924, 7, 14, 0, 0, 2924, 2925, 7, 16, 0, 0, 2925, 2926, 7, 17, 0, 0, 2926, 2927, 7, 19, 0, 0, 2927, 2928, 7, 7, 0, 0, 2928, 442, 1, 0, 0, 0, 2929, 2930, 7, 25, 0, 0, 2930, 2931, 7, 22, 0, 0, 2931, 2932, 7, 7, 0, 0, 2932, 2933, 7, 14, 0, 0, 2933, 2934, 7, 16, 0, 0, 2934, 2935, 7, 17, 0, 0, 2935, 2936, 7, 19, 0, 0, 2936, 2937, 7, 7, 0, 0, 2937, 2938, 7, 9, 0, 0, 2938, 444, 1, 0, 0, 0, 2939, 2940, 7, 23, 0, 0, 2940, 2941, 7, 6, 0, 0, 2941, 2942, 7, 19, 0, 0, 2942, 2943, 7, 18, 0, 0, 2943, 2944, 7, 5, 0, 0, 2944, 2945, 7, 6, 0, 0, 2945, 446, 1, 0, 0, 0, 2946, 2947, 7, 23, 0, 0, 2947, 2948, 7, 13, 0, 0, 2948, 2949, 7, 5, 0, 0, 2949, 2950, 7, 7, 0, 0, 2950, 2951, 7, 16, 0, 0, 2951, 2952, 7, 10, 0, 0, 2952, 2953, 7, 12, 0, 0, 2953, 448, 1, 0, 0, 0, 2954, 2955, 7, 20, 0, 0, 2955, 2956, 7, 5, 0, 0, 2956, 2957, 7, 7, 0, 0, 2957, 2958, 7, 12, 0, 0, 2958, 2959, 7, 6, 0, 0, 2959, 2960, 7, 10, 0, 0, 2960, 2961, 7, 13, 0, 0, 2961, 450, 1, 0, 0, 0, 2962, 2963, 7, 20, 0, 0, 2963, 2964, 7, 10, 0, 0, 2964, 2965, 7, 5, 0, 0, 2965, 2966, 7, 12, 0, 0, 2966, 2967, 7, 10, 0, 0, 2967, 2968, 7, 13, 0, 0, 2968, 452, 1, 0, 0, 0, 2969, 2970, 7, 20, 0, 0, 2970, 2971, 7, 19, 0, 0, 2971, 2972, 7, 6, 0, 0, 2972, 2973, 7, 12, 0, 0, 2973, 454, 1, 0, 0, 0, 2974, 2975, 7, 20, 0, 0, 2975, 2976, 7, 19, 0, 0, 2976, 2977, 7, 22, 0, 0, 2977, 2978, 7, 13, 0, 0, 2978, 456, 1, 0, 0, 0, 2979, 2980, 7, 17, 0, 0, 2980, 2981, 7, 12, 0, 0, 2981, 2982, 7, 10, 0, 0, 2982, 2983, 7, 7, 0, 0, 2983, 2984, 7, 16, 0, 0, 2984, 2985, 7, 17, 0, 0, 2985, 2986, 7, 16, 0, 0, 2986, 2987, 7, 8, 0, 0, 2987, 458, 1, 0, 0, 0, 2988, 2989, 7, 17, 0, 0, 2989, 2990, 7, 25, 0, 0, 2990, 460, 1, 0, 0, 0, 2991, 2992, 7, 17, 0, 0, 2992, 2993, 7, 15, 0, 0, 2993, 2994, 7, 15, 0, 0, 2994, 2995, 7, 10, 0, 0, 2995, 2996, 7, 12, 0, 0, 2996, 2997, 7, 17, 0, 0, 2997, 2998, 7, 5, 0, 0, 2998, 2999, 7, 16, 0, 0, 2999, 3000, 7, 10, 0, 0, 3000, 462, 1, 0, 0, 0, 3001, 3002, 7, 17, 0, 0, 3002, 3003, 7, 15, 0, 0, 3003, 3004, 7, 15, 0, 0, 3004, 3005, 7, 22, 0, 0, 3005, 3006, 7, 16, 0, 0, 3006, 3007, 7, 5, 0, 0, 3007, 3008, 7, 18, 0, 0, 3008, 3009, 7, 6, 0, 0, 3009, 3010, 7, 10, 0, 0, 3010, 464, 1, 0, 0, 0, 3011, 3012, 7, 17, 0, 0, 3012, 3013, 7, 15, 0, 0, 3013, 3014, 7, 24, 0, 0, 3014, 3015, 7, 6, 0, 0, 3015, 3016, 7, 17, 0, 0, 3016, 3017, 7, 14, 0, 0, 3017, 3018, 7, 17, 0, 0, 3018, 3019, 7, 16, 0, 0, 3019, 466, 1, 0, 0, 0, 3020, 3021, 7, 17, 0, 0, 3021, 3022, 7, 7, 0, 0, 3022, 3023, 7, 14, 0, 0, 3023, 3024, 7, 6, 0, 0, 3024, 3025, 7, 22, 0, 0, 3025, 3026, 7, 12, 0, 0, 3026, 3027, 7, 17, 0, 0, 3027, 3028, 7, 7, 0, 0, 3028, 3029, 7, 23, 0, 0, 3029, 468, 1, 0, 0, 0, 3030, 3031, 7, 17, 0, 0, 3031, 3032, 7, 7, 0, 0, 3032, 3033, 7, 14, 0, 0, 3033, 3034, 7, 13, 0, 0, 3034, 3035, 7, 10, 0, 0, 3035, 3036, 7, 15, 0, 0, 3036, 3037, 7, 10, 0, 0, 3037, 3038, 7, 7, 0, 0, 3038, 3039, 7, 16, 0, 0, 3039, 470, 1, 0, 0, 0, 3040, 3041, 7, 17, 0, 0, 3041, 3042, 7, 7, 0, 0, 3042, 3043, 7, 12, 0, 0, 3043, 3044, 7, 10, 0, 0, 3044, 3045, 7, 26, 0, 0, 3045, 472, 1, 0, 0, 0, 3046, 3047, 7, 17, 0, 0, 3047, 3048, 7, 7, 0, 0, 3048, 3049, 7, 12, 0, 0, 3049, 3050, 7, 10, 0, 0, 3050, 3051, 7, 26, 0, 0, 3051, 3052, 7, 10, 0, 0, 3052, 3053, 7, 9, 0, 0, 3053, 474, 1, 0, 0, 0, 3054, 3055, 7, 17, 0, 0, 3055, 3056, 7, 7, 0, 0, 3056, 3057, 7, 20, 0, 0, 3057, 3058, 7, 10, 0, 0, 3058, 3059, 7, 13, 0, 0, 3059, 3060, 7, 17, 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, 20, 0, 0, 3065, 3066, 7, 10, 0, 0, 3066, 3067, 7, 13, 0, 0, 3067, 3068, 7, 17, 0, 0, 3068, 3069, 7, 16, 0, 0, 3069, 3070, 7, 9, 0, 0, 3070, 478, 1, 0, 0, 0, 3071, 3072, 7, 17, 0, 0, 3072, 3073, 7, 7, 0, 0, 3073, 3074, 7, 6, 0, 0, 3074, 3075, 7, 17, 0, 0, 3075, 3076, 7, 7, 0, 0, 3076, 3077, 7, 10, 0, 0, 3077, 480, 1, 0, 0, 0, 3078, 3079, 7, 17, 0, 0, 3079, 3080, 7, 7, 0, 0, 3080, 3081, 7, 9, 0, 0, 3081, 3082, 7, 10, 0, 0, 3082, 3083, 7, 7, 0, 0, 3083, 3084, 7, 9, 0, 0, 3084, 3085, 7, 17, 0, 0, 3085, 3086, 7, 16, 0, 0, 3086, 3087, 7, 17, 0, 0, 3087, 3088, 7, 27, 0, 0, 3088, 3089, 7, 10, 0, 0, 3089, 482, 1, 0, 0, 0, 3090, 3091, 7, 17, 0, 0, 3091, 3092, 7, 7, 0, 0, 3092, 3093, 7, 9, 0, 0, 3093, 3094, 7, 10, 0, 0, 3094, 3095, 7, 13, 0, 0, 3095, 3096, 7, 16, 0, 0, 3096, 484, 1, 0, 0, 0, 3097, 3098, 7, 17, 0, 0, 3098, 3099, 7, 7, 0, 0, 3099, 3100, 7, 9, 0, 0, 3100, 3101, 7, 16, 0, 0, 3101, 3102, 7, 10, 0, 0, 3102, 3103, 7, 5, 0, 0, 3103, 3104, 7, 12, 0, 0, 3104, 486, 1, 0, 0, 0, 3105, 3106, 7, 17, 0, 0, 3106, 3107, 7, 7, 0, 0, 3107, 3108, 7, 27, 0, 0, 3108, 3109, 7, 19, 0, 0, 3109, 3110, 7, 21, 0, 0, 3110, 3111, 7, 10, 0, 0, 3111, 3112, 7, 13, 0, 0, 3112, 488, 1, 0, 0, 0, 3113, 3114, 7, 17, 0, 0, 3114, 3115, 7, 9, 0, 0, 3115, 3116, 7, 19, 0, 0, 3116, 3117, 7, 6, 0, 0, 3117, 3118, 7, 5, 0, 0, 3118, 3119, 7, 16, 0, 0, 3119, 3120, 7, 17, 0, 0, 3120, 3121, 7, 19, 0, 0, 3121, 3122, 7, 7, 0, 0, 3122, 490, 1, 0, 0, 0, 3123, 3124, 7, 21, 0, 0, 3124, 3125, 7, 10, 0, 0, 3125, 3126, 7, 8, 0, 0, 3126, 492, 1, 0, 0, 0, 3127, 3128, 7, 6, 0, 0, 3128, 3129, 7, 5, 0, 0, 3129, 3130, 7, 18, 0, 0, 3130, 3131, 7, 10, 0, 0, 3131, 3132, 7, 6, 0, 0, 3132, 494, 1, 0, 0, 0, 3133, 3134, 7, 6, 0, 0, 3134, 3135, 7, 5, 0, 0, 3135, 3136, 7, 7, 0, 0, 3136, 3137, 7, 23, 0, 0, 3137, 3138, 7, 22, 0, 0, 3138, 3139, 7, 5, 0, 0, 3139, 3140, 7, 23, 0, 0, 3140, 3141, 7, 10, 0, 0, 3141, 496, 1, 0, 0, 0, 3142, 3143, 7, 6, 0, 0, 3143, 3144, 7, 5, 0, 0, 3144, 3145, 7, 13, 0, 0, 3145, 3146, 7, 23, 0, 0, 3146, 3147, 7, 10, 0, 0, 3147, 498, 1, 0, 0, 0, 3148, 3149, 7, 6, 0, 0, 3149, 3150, 7, 5, 0, 0, 3150, 3151, 7, 9, 0, 0, 3151, 3152, 7, 16, 0, 0, 3152, 500, 1, 0, 0, 0, 3153, 3154, 7, 6, 0, 0, 3154, 3155, 7, 10, 0, 0, 3155, 3156, 7, 5, 0, 0, 3156, 3157, 7, 21, 0, 0, 3157, 3158, 7, 24, 0, 0, 3158, 3159, 7, 13, 0, 0, 3159, 3160, 7, 19, 0, 0, 3160, 3161, 7, 19, 0, 0, 3161, 3162, 7, 25, 0, 0, 3162, 502, 1, 0, 0, 0, 3163, 3164, 7, 6, 0, 0, 3164, 3165, 7, 10, 0, 0, 3165, 3166, 7, 27, 0, 0, 3166, 3167, 7, 10, 0, 0, 3167, 3168, 7, 6, 0, 0, 3168, 504, 1, 0, 0, 0, 3169, 3170, 7, 6, 0, 0, 3170, 3171, 7, 17, 0, 0, 3171, 3172, 7, 9, 0, 0, 3172, 3173, 7, 16, 0, 0, 3173, 3174, 7, 10, 0, 0, 3174, 3175, 7, 7, 0, 0, 3175, 506, 1, 0, 0, 0, 3176, 3177, 7, 6, 0, 0, 3177, 3178, 7, 19, 0, 0, 3178, 3179, 7, 5, 0, 0, 3179, 3180, 7, 12, 0, 0, 3180, 508, 1, 0, 0, 0, 3181, 3182, 7, 6, 0, 0, 3182, 3183, 7, 19, 0, 0, 3183, 3184, 7, 14, 0, 0, 3184, 3185, 7, 5, 0, 0, 3185, 3186, 7, 6, 0, 0, 3186, 510, 1, 0, 0, 0, 3187, 3188, 7, 6, 0, 0, 3188, 3189, 7, 19, 0, 0, 3189, 3190, 7, 14, 0, 0, 3190, 3191, 7, 5, 0, 0, 3191, 3192, 7, 16, 0, 0, 3192, 3193, 7, 17, 0, 0, 3193, 3194, 7, 19, 0, 0, 3194, 3195, 7, 7, 0, 0, 3195, 512, 1, 0, 0, 0, 3196, 3197, 7, 6, 0, 0, 3197, 3198, 7, 19, 0, 0, 3198, 3199, 7, 14, 0, 0, 3199, 3200, 7, 21, 0, 0, 3200, 514, 1, 0, 0, 0, 3201, 3202, 7, 15, 0, 0, 3202, 3203, 7, 5, 0, 0, 3203, 3204, 7, 24, 0, 0, 3204, 3205, 7, 24, 0, 0, 3205, 3206, 7, 17, 0, 0, 3206, 3207, 7, 7, 0, 0, 3207, 3208, 7, 23, 0, 0, 3208, 516, 1, 0, 0, 0, 3209, 3210, 7, 15, 0, 0, 3210, 3211, 7, 5, 0, 0, 3211, 3212, 7, 16, 0, 0, 3212, 3213, 7, 14, 0, 0, 3213, 3214, 7, 20, 0, 0, 3214, 518, 1, 0, 0, 0, 3215, 3216, 7, 15, 0, 0, 3216, 3217, 7, 5, 0, 0, 3217, 3218, 7, 16, 0, 0, 3218, 3219, 7, 14, 0, 0, 3219, 3220, 7, 20, 0, 0, 3220, 3221, 7, 10, 0, 0, 3221, 3222, 7, 12, 0, 0, 3222, 520, 1, 0, 0, 0, 3223, 3224, 7, 15, 0, 0, 3224, 3225, 7, 5, 0, 0, 3225, 3226, 7, 16, 0, 0, 3226, 3227, 7, 10, 0, 0, 3227, 3228, 7, 13, 0, 0, 3228, 3229, 7, 17, 0, 0, 3229, 3230, 7, 5, 0, 0, 3230, 3231, 7, 6, 0, 0, 3231, 3232, 7, 17, 0, 0, 3232, 3233, 7, 11, 0, 0, 3233, 3234, 7, 10, 0, 0, 3234, 3235, 7, 12, 0, 0, 3235, 522, 1, 0, 0, 0, 3236, 3237, 7, 15, 0, 0, 3237, 3238, 7, 5, 0, 0, 3238, 3239, 7, 26, 0, 0, 3239, 3240, 7, 27, 0, 0, 3240, 3241, 7, 5, 0, 0, 3241, 3242, 7, 6, 0, 0, 3242, 3243, 7, 22, 0, 0, 3243, 3244, 7, 10, 0, 0, 3244, 524, 1, 0, 0, 0, 3245, 3246, 7, 15, 0, 0, 3246, 3247, 7, 10, 0, 0, 3247, 3248, 7, 13, 0, 0, 3248, 3249, 7, 23, 0, 0, 3249, 3250, 7, 10, 0, 0, 3250, 526, 1, 0, 0, 0, 3251, 3252, 7, 15, 0, 0, 3252, 3253, 7, 17, 0, 0, 3253, 3254, 7, 7, 0, 0, 3254, 3255, 7, 22, 0, 0, 3255, 3256, 7, 16, 0, 0, 3256, 3257, 7, 10, 0, 0, 3257, 528, 1, 0, 0, 0, 3258, 3259, 7, 15, 0, 0, 3259, 3260, 7, 17, 0, 0, 3260, 3261, 7, 7, 0, 0, 3261, 3262, 7, 27, 0, 0, 3262, 3263, 7, 5, 0, 0, 3263, 3264, 7, 6, 0, 0, 3264, 3265, 7, 22, 0, 0, 3265, 3266, 7, 10, 0, 0, 3266, 530, 1, 0, 0, 0, 3267, 3268, 7, 15, 0, 0, 3268, 3269, 7, 19, 0, 0, 3269, 3270, 7, 12, 0, 0, 3270, 3271, 7, 10, 0, 0, 3271, 532, 1, 0, 0, 0, 3272, 3273, 7, 15, 0, 0, 3273, 3274, 7, 19, 0, 0, 3274, 3275, 7, 7, 0, 0, 3275, 3276, 7, 16, 0, 0, 3276, 3277, 7, 20, 0, 0, 3277, 534, 1, 0, 0, 0, 3278, 3279, 7, 15, 0, 0, 3279, 3280, 7, 19, 0, 0, 3280, 3281, 7, 27, 0, 0, 3281, 3282, 7, 10, 0, 0, 3282, 536, 1, 0, 0, 0, 3283, 3284, 7, 7, 0, 0, 3284, 3285, 7, 5, 0, 0, 3285, 3286, 7, 15, 0, 0, 3286, 3287, 7, 10, 0, 0, 3287, 538, 1, 0, 0, 0, 3288, 3289, 7, 7, 0, 0, 3289, 3290, 7, 5, 0, 0, 3290, 3291, 7, 15, 0, 0, 3291, 3292, 7, 10, 0, 0, 3292, 3293, 7, 9, 0, 0, 3293, 540, 1, 0, 0, 0, 3294, 3295, 7, 7, 0, 0, 3295, 3296, 7, 10, 0, 0, 3296, 3297, 7, 26, 0, 0, 3297, 3298, 7, 16, 0, 0, 3298, 542, 1, 0, 0, 0, 3299, 3300, 7, 7, 0, 0, 3300, 3301, 7, 19, 0, 0, 3301, 544, 1, 0, 0, 0, 3302, 3303, 7, 7, 0, 0, 3303, 3304, 7, 19, 0, 0, 3304, 3305, 7, 16, 0, 0, 3305, 3306, 7, 20, 0, 0, 3306, 3307, 7, 17, 0, 0, 3307, 3308, 7, 7, 0, 0, 3308, 3309, 7, 23, 0, 0, 3309, 546, 1, 0, 0, 0, 3310, 3311, 7, 7, 0, 0, 3311, 3312, 7, 19, 0, 0, 3312, 3313, 7, 16, 0, 0, 3313, 3314, 7, 17, 0, 0, 3314, 3315, 7, 25, 0, 0, 3315, 3316, 7, 8, 0, 0, 3316, 548, 1, 0, 0, 0, 3317, 3318, 7, 7, 0, 0, 3318, 3319, 7, 19, 0, 0, 3319, 3320, 7, 28, 0, 0, 3320, 3321, 7, 5, 0, 0, 3321, 3322, 7, 17, 0, 0, 3322, 3323, 7, 16, 0, 0, 3323, 550, 1, 0, 0, 0, 3324, 3325, 7, 7, 0, 0, 3325, 3326, 7, 22, 0, 0, 3326, 3327, 7, 6, 0, 0, 3327, 3328, 7, 6, 0, 0, 3328, 3329, 7, 9, 0, 0, 3329, 552, 1, 0, 0, 0, 3330, 3331, 7, 19, 0, 0, 3331, 3332, 7, 18, 0, 0, 3332, 3333, 7, 30, 0, 0, 3333, 3334, 7, 10, 0, 0, 3334, 3335, 7, 14, 0, 0, 3335, 3336, 7, 16, 0, 0, 3336, 554, 1, 0, 0, 0, 3337, 3338, 7, 19, 0, 0, 3338, 3339, 7, 25, 0, 0, 3339, 556, 1, 0, 0, 0, 3340, 3341, 7, 19, 0, 0, 3341, 3342, 7, 25, 0, 0, 3342, 3343, 7, 25, 0, 0, 3343, 558, 1, 0, 0, 0, 3344, 3345, 7, 19, 0, 0, 3345, 3346, 7, 17, 0, 0, 3346, 3347, 7, 12, 0, 0, 3347, 3348, 7, 9, 0, 0, 3348, 560, 1, 0, 0, 0, 3349, 3350, 7, 19, 0, 0, 3350, 3351, 7, 24, 0, 0, 3351, 3352, 7, 10, 0, 0, 3352, 3353, 7, 13, 0, 0, 3353, 3354, 7, 5, 0, 0, 3354, 3355, 7, 16, 0, 0, 3355, 3356, 7, 19, 0, 0, 3356, 3357, 7, 13, 0, 0, 3357, 562, 1, 0, 0, 0, 3358, 3359, 7, 19, 0, 0, 3359, 3360, 7, 24, 0, 0, 3360, 3361, 7, 16, 0, 0, 3361, 3362, 7, 17, 0, 0, 3362, 3363, 7, 19, 0, 0, 3363, 3364, 7, 7, 0, 0, 3364, 564, 1, 0, 0, 0, 3365, 3366, 7, 19, 0, 0, 3366, 3367, 7, 24, 0, 0, 3367, 3368, 7, 16, 0, 0, 3368, 3369, 7, 17, 0, 0, 3369, 3370, 7, 19, 0, 0, 3370, 3371, 7, 7, 0, 0, 3371, 3372, 7, 9, 0, 0, 3372, 566, 1, 0, 0, 0, 3373, 3374, 7, 19, 0, 0, 3374, 3375, 7, 28, 0, 0, 3375, 3376, 7, 7, 0, 0, 3376, 3377, 7, 10, 0, 0, 3377, 3378, 7, 12, 0, 0, 3378, 568, 1, 0, 0, 0, 3379, 3380, 7, 19, 0, 0, 3380, 3381, 7, 28, 0, 0, 3381, 3382, 7, 7, 0, 0, 3382, 3383, 7, 10, 0, 0, 3383, 3384, 7, 13, 0, 0, 3384, 570, 1, 0, 0, 0, 3385, 3386, 7, 24, 0, 0, 3386, 3387, 7, 5, 0, 0, 3387, 3388, 7, 13, 0, 0, 3388, 3389, 7, 9, 0, 0, 3389, 3390, 7, 10, 0, 0, 3390, 3391, 7, 13, 0, 0, 3391, 572, 1, 0, 0, 0, 3392, 3393, 7, 24, 0, 0, 3393, 3394, 7, 5, 0, 0, 3394, 3395, 7, 13, 0, 0, 3395, 3396, 7, 16, 0, 0, 3396, 3397, 7, 17, 0, 0, 3397, 3398, 7, 5, 0, 0, 3398, 3399, 7, 6, 0, 0, 3399, 574, 1, 0, 0, 0, 3400, 3401, 7, 24, 0, 0, 3401, 3402, 7, 5, 0, 0, 3402, 3403, 7, 13, 0, 0, 3403, 3404, 7, 16, 0, 0, 3404, 3405, 7, 17, 0, 0, 3405, 3406, 7, 16, 0, 0, 3406, 3407, 7, 17, 0, 0, 3407, 3408, 7, 19, 0, 0, 3408, 3409, 7, 7, 0, 0, 3409, 576, 1, 0, 0, 0, 3410, 3411, 7, 24, 0, 0, 3411, 3412, 7, 5, 0, 0, 3412, 3413, 7, 9, 0, 0, 3413, 3414, 7, 9, 0, 0, 3414, 3415, 7, 17, 0, 0, 3415, 3416, 7, 7, 0, 0, 3416, 3417, 7, 23, 0, 0, 3417, 578, 1, 0, 0, 0, 3418, 3419, 7, 24, 0, 0, 3419, 3420, 7, 5, 0, 0, 3420, 3421, 7, 9, 0, 0, 3421, 3422, 7, 9, 0, 0, 3422, 3423, 7, 28, 0, 0, 3423, 3424, 7, 19, 0, 0, 3424, 3425, 7, 13, 0, 0, 3425, 3426, 7, 12, 0, 0, 3426, 580, 1, 0, 0, 0, 3427, 3428, 7, 24, 0, 0, 3428, 3429, 7, 6, 0, 0, 3429, 3430, 7, 5, 0, 0, 3430, 3431, 7, 7, 0, 0, 3431, 3432, 7, 9, 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, 14, 0, 0, 3437, 3438, 7, 10, 0, 0, 3438, 3439, 7, 12, 0, 0, 3439, 3440, 7, 17, 0, 0, 3440, 3441, 7, 7, 0, 0, 3441, 3442, 7, 23, 0, 0, 3442, 584, 1, 0, 0, 0, 3443, 3444, 7, 24, 0, 0, 3444, 3445, 7, 13, 0, 0, 3445, 3446, 7, 10, 0, 0, 3446, 3447, 7, 24, 0, 0, 3447, 3448, 7, 5, 0, 0, 3448, 3449, 7, 13, 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, 10, 0, 0, 3454, 3455, 7, 24, 0, 0, 3455, 3456, 7, 5, 0, 0, 3456, 3457, 7, 13, 0, 0, 3457, 3458, 7, 10, 0, 0, 3458, 3459, 7, 12, 0, 0, 3459, 588, 1, 0, 0, 0, 3460, 3461, 7, 24, 0, 0, 3461, 3462, 7, 13, 0, 0, 3462, 3463, 7, 10, 0, 0, 3463, 3464, 7, 9, 0, 0, 3464, 3465, 7, 10, 0, 0, 3465, 3466, 7, 13, 0, 0, 3466, 3467, 7, 27, 0, 0, 3467, 3468, 7, 10, 0, 0, 3468, 590, 1, 0, 0, 0, 3469, 3470, 7, 24, 0, 0, 3470, 3471, 7, 13, 0, 0, 3471, 3472, 7, 17, 0, 0, 3472, 3473, 7, 19, 0, 0, 3473, 3474, 7, 13, 0, 0, 3474, 592, 1, 0, 0, 0, 3475, 3476, 7, 24, 0, 0, 3476, 3477, 7, 13, 0, 0, 3477, 3478, 7, 17, 0, 0, 3478, 3479, 7, 27, 0, 0, 3479, 3480, 7, 17, 0, 0, 3480, 3481, 7, 6, 0, 0, 3481, 3482, 7, 10, 0, 0, 3482, 3483, 7, 23, 0, 0, 3483, 3484, 7, 10, 0, 0, 3484, 3485, 7, 9, 0, 0, 3485, 594, 1, 0, 0, 0, 3486, 3487, 7, 24, 0, 0, 3487, 3488, 7, 13, 0, 0, 3488, 3489, 7, 19, 0, 0, 3489, 3490, 7, 14, 0, 0, 3490, 3491, 7, 10, 0, 0, 3491, 3492, 7, 12, 0, 0, 3492, 3493, 7, 22, 0, 0, 3493, 3494, 7, 13, 0, 0, 3494, 3495, 7, 5, 0, 0, 3495, 3496, 7, 6, 0, 0, 3496, 596, 1, 0, 0, 0, 3497, 3498, 7, 24, 0, 0, 3498, 3499, 7, 13, 0, 0, 3499, 3500, 7, 19, 0, 0, 3500, 3501, 7, 14, 0, 0, 3501, 3502, 7, 10, 0, 0, 3502, 3503, 7, 12, 0, 0, 3503, 3504, 7, 22, 0, 0, 3504, 3505, 7, 13, 0, 0, 3505, 3506, 7, 10, 0, 0, 3506, 598, 1, 0, 0, 0, 3507, 3508, 7, 24, 0, 0, 3508, 3509, 7, 13, 0, 0, 3509, 3510, 7, 19, 0, 0, 3510, 3511, 7, 23, 0, 0, 3511, 3512, 7, 13, 0, 0, 3512, 3513, 7, 5, 0, 0, 3513, 3514, 7, 15, 0, 0, 3514, 600, 1, 0, 0, 0, 3515, 3516, 7, 29, 0, 0, 3516, 3517, 7, 22, 0, 0, 3517, 3518, 7, 19, 0, 0, 3518, 3519, 7, 16, 0, 0, 3519, 3520, 7, 10, 0, 0, 3520, 602, 1, 0, 0, 0, 3521, 3522, 7, 13, 0, 0, 3522, 3523, 7, 5, 0, 0, 3523, 3524, 7, 7, 0, 0, 3524, 3525, 7, 23, 0, 0, 3525, 3526, 7, 10, 0, 0, 3526, 604, 1, 0, 0, 0, 3527, 3528, 7, 13, 0, 0, 3528, 3529, 7, 10, 0, 0, 3529, 3530, 7, 5, 0, 0, 3530, 3531, 7, 12, 0, 0, 3531, 606, 1, 0, 0, 0, 3532, 3533, 7, 13, 0, 0, 3533, 3534, 7, 10, 0, 0, 3534, 3535, 7, 5, 0, 0, 3535, 3536, 7, 9, 0, 0, 3536, 3537, 7, 9, 0, 0, 3537, 3538, 7, 17, 0, 0, 3538, 3539, 7, 23, 0, 0, 3539, 3540, 7, 7, 0, 0, 3540, 608, 1, 0, 0, 0, 3541, 3542, 7, 13, 0, 0, 3542, 3543, 7, 10, 0, 0, 3543, 3544, 7, 14, 0, 0, 3544, 3545, 7, 20, 0, 0, 3545, 3546, 7, 10, 0, 0, 3546, 3547, 7, 14, 0, 0, 3547, 3548, 7, 21, 0, 0, 3548, 610, 1, 0, 0, 0, 3549, 3550, 7, 13, 0, 0, 3550, 3551, 7, 10, 0, 0, 3551, 3552, 7, 14, 0, 0, 3552, 3553, 7, 22, 0, 0, 3553, 3554, 7, 13, 0, 0, 3554, 3555, 7, 9, 0, 0, 3555, 3556, 7, 17, 0, 0, 3556, 3557, 7, 27, 0, 0, 3557, 3558, 7, 10, 0, 0, 3558, 612, 1, 0, 0, 0, 3559, 3560, 7, 13, 0, 0, 3560, 3561, 7, 10, 0, 0, 3561, 3562, 7, 25, 0, 0, 3562, 614, 1, 0, 0, 0, 3563, 3564, 7, 13, 0, 0, 3564, 3565, 7, 10, 0, 0, 3565, 3566, 7, 25, 0, 0, 3566, 3567, 7, 13, 0, 0, 3567, 3568, 7, 10, 0, 0, 3568, 3569, 7, 9, 0, 0, 3569, 3570, 7, 20, 0, 0, 3570, 616, 1, 0, 0, 0, 3571, 3572, 7, 13, 0, 0, 3572, 3573, 7, 10, 0, 0, 3573, 3574, 7, 17, 0, 0, 3574, 3575, 7, 7, 0, 0, 3575, 3576, 7, 12, 0, 0, 3576, 3577, 7, 10, 0, 0, 3577, 3578, 7, 26, 0, 0, 3578, 618, 1, 0, 0, 0, 3579, 3580, 7, 13, 0, 0, 3580, 3581, 7, 10, 0, 0, 3581, 3582, 7, 6, 0, 0, 3582, 3583, 7, 5, 0, 0, 3583, 3584, 7, 16, 0, 0, 3584, 3585, 7, 17, 0, 0, 3585, 3586, 7, 27, 0, 0, 3586, 3587, 7, 10, 0, 0, 3587, 620, 1, 0, 0, 0, 3588, 3589, 7, 13, 0, 0, 3589, 3590, 7, 10, 0, 0, 3590, 3591, 7, 6, 0, 0, 3591, 3592, 7, 10, 0, 0, 3592, 3593, 7, 5, 0, 0, 3593, 3594, 7, 9, 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, 7, 0, 0, 3599, 3600, 7, 5, 0, 0, 3600, 3601, 7, 15, 0, 0, 3601, 3602, 7, 10, 0, 0, 3602, 624, 1, 0, 0, 0, 3603, 3604, 7, 13, 0, 0, 3604, 3605, 7, 10, 0, 0, 3605, 3606, 7, 24, 0, 0, 3606, 3607, 7, 10, 0, 0, 3607, 3608, 7, 5, 0, 0, 3608, 3609, 7, 16, 0, 0, 3609, 3610, 7, 5, 0, 0, 3610, 3611, 7, 18, 0, 0, 3611, 3612, 7, 6, 0, 0, 3612, 3613, 7, 10, 0, 0, 3613, 626, 1, 0, 0, 0, 3614, 3615, 7, 13, 0, 0, 3615, 3616, 7, 10, 0, 0, 3616, 3617, 7, 24, 0, 0, 3617, 3618, 7, 6, 0, 0, 3618, 3619, 7, 5, 0, 0, 3619, 3620, 7, 14, 0, 0, 3620, 3621, 7, 10, 0, 0, 3621, 628, 1, 0, 0, 0, 3622, 3623, 7, 13, 0, 0, 3623, 3624, 7, 10, 0, 0, 3624, 3625, 7, 24, 0, 0, 3625, 3626, 7, 6, 0, 0, 3626, 3627, 7, 17, 0, 0, 3627, 3628, 7, 14, 0, 0, 3628, 3629, 7, 5, 0, 0, 3629, 630, 1, 0, 0, 0, 3630, 3631, 7, 13, 0, 0, 3631, 3632, 7, 10, 0, 0, 3632, 3633, 7, 9, 0, 0, 3633, 3634, 7, 10, 0, 0, 3634, 3635, 7, 16, 0, 0, 3635, 632, 1, 0, 0, 0, 3636, 3637, 7, 13, 0, 0, 3637, 3638, 7, 10, 0, 0, 3638, 3639, 7, 9, 0, 0, 3639, 3640, 7, 16, 0, 0, 3640, 3641, 7, 5, 0, 0, 3641, 3642, 7, 13, 0, 0, 3642, 3643, 7, 16, 0, 0, 3643, 634, 1, 0, 0, 0, 3644, 3645, 7, 13, 0, 0, 3645, 3646, 7, 10, 0, 0, 3646, 3647, 7, 9, 0, 0, 3647, 3648, 7, 16, 0, 0, 3648, 3649, 7, 13, 0, 0, 3649, 3650, 7, 17, 0, 0, 3650, 3651, 7, 14, 0, 0, 3651, 3652, 7, 16, 0, 0, 3652, 636, 1, 0, 0, 0, 3653, 3654, 7, 13, 0, 0, 3654, 3655, 7, 10, 0, 0, 3655, 3656, 7, 16, 0, 0, 3656, 3657, 7, 22, 0, 0, 3657, 3658, 7, 13, 0, 0, 3658, 3659, 7, 7, 0, 0, 3659, 3660, 7, 9, 0, 0, 3660, 638, 1, 0, 0, 0, 3661, 3662, 7, 13, 0, 0, 3662, 3663, 7, 10, 0, 0, 3663, 3664, 7, 27, 0, 0, 3664, 3665, 7, 19, 0, 0, 3665, 3666, 7, 21, 0, 0, 3666, 3667, 7, 10, 0, 0, 3667, 640, 1, 0, 0, 0, 3668, 3669, 7, 13, 0, 0, 3669, 3670, 7, 19, 0, 0, 3670, 3671, 7, 6, 0, 0, 3671, 3672, 7, 10, 0, 0, 3672, 642, 1, 0, 0, 0, 3673, 3674, 7, 13, 0, 0, 3674, 3675, 7, 19, 0, 0, 3675, 3676, 7, 6, 0, 0, 3676, 3677, 7, 6, 0, 0, 3677, 3678, 7, 18, 0, 0, 3678, 3679, 7, 5, 0, 0, 3679, 3680, 7, 14, 0, 0, 3680, 3681, 7, 21, 0, 0, 3681, 644, 1, 0, 0, 0, 3682, 3683, 7, 13, 0, 0, 3683, 3684, 7, 19, 0, 0, 3684, 3685, 7, 28, 0, 0, 3685, 3686, 7, 9, 0, 0, 3686, 646, 1, 0, 0, 0, 3687, 3688, 7, 13, 0, 0, 3688, 3689, 7, 22, 0, 0, 3689, 3690, 7, 6, 0, 0, 3690, 3691, 7, 10, 0, 0, 3691, 648, 1, 0, 0, 0, 3692, 3693, 7, 9, 0, 0, 3693, 3694, 7, 5, 0, 0, 3694, 3695, 7, 27, 0, 0, 3695, 3696, 7, 10, 0, 0, 3696, 3697, 7, 24, 0, 0, 3697, 3698, 7, 19, 0, 0, 3698, 3699, 7, 17, 0, 0, 3699, 3700, 7, 7, 0, 0, 3700, 3701, 7, 16, 0, 0, 3701, 650, 1, 0, 0, 0, 3702, 3703, 7, 9, 0, 0, 3703, 3704, 7, 14, 0, 0, 3704, 3705, 7, 20, 0, 0, 3705, 3706, 7, 10, 0, 0, 3706, 3707, 7, 15, 0, 0, 3707, 3708, 7, 5, 0, 0, 3708, 652, 1, 0, 0, 0, 3709, 3710, 7, 9, 0, 0, 3710, 3711, 7, 14, 0, 0, 3711, 3712, 7, 13, 0, 0, 3712, 3713, 7, 19, 0, 0, 3713, 3714, 7, 6, 0, 0, 3714, 3715, 7, 6, 0, 0, 3715, 654, 1, 0, 0, 0, 3716, 3717, 7, 9, 0, 0, 3717, 3718, 7, 10, 0, 0, 3718, 3719, 7, 5, 0, 0, 3719, 3720, 7, 13, 0, 0, 3720, 3721, 7, 14, 0, 0, 3721, 3722, 7, 20, 0, 0, 3722, 656, 1, 0, 0, 0, 3723, 3724, 7, 9, 0, 0, 3724, 3725, 7, 10, 0, 0, 3725, 3726, 7, 14, 0, 0, 3726, 3727, 7, 19, 0, 0, 3727, 3728, 7, 7, 0, 0, 3728, 3729, 7, 12, 0, 0, 3729, 658, 1, 0, 0, 0, 3730, 3731, 7, 9, 0, 0, 3731, 3732, 7, 10, 0, 0, 3732, 3733, 7, 14, 0, 0, 3733, 3734, 7, 22, 0, 0, 3734, 3735, 7, 13, 0, 0, 3735, 3736, 7, 17, 0, 0, 3736, 3737, 7, 16, 0, 0, 3737, 3738, 7, 8, 0, 0, 3738, 660, 1, 0, 0, 0, 3739, 3740, 7, 9, 0, 0, 3740, 3741, 7, 10, 0, 0, 3741, 3742, 7, 29, 0, 0, 3742, 3743, 7, 22, 0, 0, 3743, 3744, 7, 10, 0, 0, 3744, 3745, 7, 7, 0, 0, 3745, 3746, 7, 14, 0, 0, 3746, 3747, 7, 10, 0, 0, 3747, 662, 1, 0, 0, 0, 3748, 3749, 7, 9, 0, 0, 3749, 3750, 7, 10, 0, 0, 3750, 3751, 7, 29, 0, 0, 3751, 3752, 7, 22, 0, 0, 3752, 3753, 7, 10, 0, 0, 3753, 3754, 7, 7, 0, 0, 3754, 3755, 7, 14, 0, 0, 3755, 3756, 7, 10, 0, 0, 3756, 3757, 7, 9, 0, 0, 3757, 664, 1, 0, 0, 0, 3758, 3759, 7, 9, 0, 0, 3759, 3760, 7, 10, 0, 0, 3760, 3761, 7, 13, 0, 0, 3761, 3762, 7, 17, 0, 0, 3762, 3763, 7, 5, 0, 0, 3763, 3764, 7, 6, 0, 0, 3764, 3765, 7, 17, 0, 0, 3765, 3766, 7, 11, 0, 0, 3766, 3767, 7, 5, 0, 0, 3767, 3768, 7, 18, 0, 0, 3768, 3769, 7, 6, 0, 0, 3769, 3770, 7, 10, 0, 0, 3770, 666, 1, 0, 0, 0, 3771, 3772, 7, 9, 0, 0, 3772, 3773, 7, 10, 0, 0, 3773, 3774, 7, 13, 0, 0, 3774, 3775, 7, 27, 0, 0, 3775, 3776, 7, 10, 0, 0, 3776, 3777, 7, 13, 0, 0, 3777, 668, 1, 0, 0, 0, 3778, 3779, 7, 9, 0, 0, 3779, 3780, 7, 10, 0, 0, 3780, 3781, 7, 9, 0, 0, 3781, 3782, 7, 9, 0, 0, 3782, 3783, 7, 17, 0, 0, 3783, 3784, 7, 19, 0, 0, 3784, 3785, 7, 7, 0, 0, 3785, 670, 1, 0, 0, 0, 3786, 3787, 7, 9, 0, 0, 3787, 3788, 7, 10, 0, 0, 3788, 3789, 7, 16, 0, 0, 3789, 672, 1, 0, 0, 0, 3790, 3791, 7, 9, 0, 0, 3791, 3792, 7, 20, 0, 0, 3792, 3793, 7, 5, 0, 0, 3793, 3794, 7, 13, 0, 0, 3794, 3795, 7, 10, 0, 0, 3795, 674, 1, 0, 0, 0, 3796, 3797, 7, 9, 0, 0, 3797, 3798, 7, 20, 0, 0, 3798, 3799, 7, 19, 0, 0, 3799, 3800, 7, 28, 0, 0, 3800, 676, 1, 0, 0, 0, 3801, 3802, 7, 9, 0, 0, 3802, 3803, 7, 17, 0, 0, 3803, 3804, 7, 15, 0, 0, 3804, 3805, 7, 24, 0, 0, 3805, 3806, 7, 6, 0, 0, 3806, 3807, 7, 10, 0, 0, 3807, 678, 1, 0, 0, 0, 3808, 3809, 7, 9, 0, 0, 3809, 3810, 7, 7, 0, 0, 3810, 3811, 7, 5, 0, 0, 3811, 3812, 7, 24, 0, 0, 3812, 3813, 7, 9, 0, 0, 3813, 3814, 7, 20, 0, 0, 3814, 3815, 7, 19, 0, 0, 3815, 3816, 7, 16, 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, 18, 0, 0, 3821, 3822, 7, 6, 0, 0, 3822, 3823, 7, 10, 0, 0, 3823, 682, 1, 0, 0, 0, 3824, 3825, 7, 9, 0, 0, 3825, 3826, 7, 16, 0, 0, 3826, 3827, 7, 5, 0, 0, 3827, 3828, 7, 7, 0, 0, 3828, 3829, 7, 12, 0, 0, 3829, 3830, 7, 5, 0, 0, 3830, 3831, 7, 6, 0, 0, 3831, 3832, 7, 19, 0, 0, 3832, 3833, 7, 7, 0, 0, 3833, 3834, 7, 10, 0, 0, 3834, 684, 1, 0, 0, 0, 3835, 3836, 7, 9, 0, 0, 3836, 3837, 7, 16, 0, 0, 3837, 3838, 7, 5, 0, 0, 3838, 3839, 7, 13, 0, 0, 3839, 3840, 7, 16, 0, 0, 3840, 686, 1, 0, 0, 0, 3841, 3842, 7, 9, 0, 0, 3842, 3843, 7, 16, 0, 0, 3843, 3844, 7, 5, 0, 0, 3844, 3845, 7, 16, 0, 0, 3845, 3846, 7, 10, 0, 0, 3846, 3847, 7, 15, 0, 0, 3847, 3848, 7, 10, 0, 0, 3848, 3849, 7, 7, 0, 0, 3849, 3850, 7, 16, 0, 0, 3850, 688, 1, 0, 0, 0, 3851, 3852, 7, 9, 0, 0, 3852, 3853, 7, 16, 0, 0, 3853, 3854, 7, 5, 0, 0, 3854, 3855, 7, 16, 0, 0, 3855, 3856, 7, 17, 0, 0, 3856, 3857, 7, 9, 0, 0, 3857, 3858, 7, 16, 0, 0, 3858, 3859, 7, 17, 0, 0, 3859, 3860, 7, 14, 0, 0, 3860, 3861, 7, 9, 0, 0, 3861, 690, 1, 0, 0, 0, 3862, 3863, 7, 9, 0, 0, 3863, 3864, 7, 16, 0, 0, 3864, 3865, 7, 12, 0, 0, 3865, 3866, 7, 17, 0, 0, 3866, 3867, 7, 7, 0, 0, 3867, 692, 1, 0, 0, 0, 3868, 3869, 7, 9, 0, 0, 3869, 3870, 7, 16, 0, 0, 3870, 3871, 7, 12, 0, 0, 3871, 3872, 7, 19, 0, 0, 3872, 3873, 7, 22, 0, 0, 3873, 3874, 7, 16, 0, 0, 3874, 694, 1, 0, 0, 0, 3875, 3876, 7, 9, 0, 0, 3876, 3877, 7, 16, 0, 0, 3877, 3878, 7, 19, 0, 0, 3878, 3879, 7, 13, 0, 0, 3879, 3880, 7, 5, 0, 0, 3880, 3881, 7, 23, 0, 0, 3881, 3882, 7, 10, 0, 0, 3882, 696, 1, 0, 0, 0, 3883, 3884, 7, 9, 0, 0, 3884, 3885, 7, 16, 0, 0, 3885, 3886, 7, 13, 0, 0, 3886, 3887, 7, 17, 0, 0, 3887, 3888, 7, 14, 0, 0, 3888, 3889, 7, 16, 0, 0, 3889, 698, 1, 0, 0, 0, 3890, 3891, 7, 9, 0, 0, 3891, 3892, 7, 16, 0, 0, 3892, 3893, 7, 13, 0, 0, 3893, 3894, 7, 17, 0, 0, 3894, 3895, 7, 24, 0, 0, 3895, 700, 1, 0, 0, 0, 3896, 3897, 7, 9, 0, 0, 3897, 3898, 7, 8, 0, 0, 3898, 3899, 7, 9, 0, 0, 3899, 3900, 7, 17, 0, 0, 3900, 3901, 7, 12, 0, 0, 3901, 702, 1, 0, 0, 0, 3902, 3903, 7, 9, 0, 0, 3903, 3904, 7, 8, 0, 0, 3904, 3905, 7, 9, 0, 0, 3905, 3906, 7, 16, 0, 0, 3906, 3907, 7, 10, 0, 0, 3907, 3908, 7, 15, 0, 0, 3908, 704, 1, 0, 0, 0, 3909, 3910, 7, 16, 0, 0, 3910, 3911, 7, 5, 0, 0, 3911, 3912, 7, 18, 0, 0, 3912, 3913, 7, 6, 0, 0, 3913, 3914, 7, 10, 0, 0, 3914, 3915, 7, 9, 0, 0, 3915, 706, 1, 0, 0, 0, 3916, 3917, 7, 16, 0, 0, 3917, 3918, 7, 5, 0, 0, 3918, 3919, 7, 18, 0, 0, 3919, 3920, 7, 6, 0, 0, 3920, 3921, 7, 10, 0, 0, 3921, 3922, 7, 9, 0, 0, 3922, 3923, 7, 24, 0, 0, 3923, 3924, 7, 5, 0, 0, 3924, 3925, 7, 14, 0, 0, 3925, 3926, 7, 10, 0, 0, 3926, 708, 1, 0, 0, 0, 3927, 3928, 7, 16, 0, 0, 3928, 3929, 7, 10, 0, 0, 3929, 3930, 7, 15, 0, 0, 3930, 3931, 7, 24, 0, 0, 3931, 710, 1, 0, 0, 0, 3932, 3933, 7, 16, 0, 0, 3933, 3934, 7, 10, 0, 0, 3934, 3935, 7, 15, 0, 0, 3935, 3936, 7, 24, 0, 0, 3936, 3937, 7, 6, 0, 0, 3937, 3938, 7, 5, 0, 0, 3938, 3939, 7, 16, 0, 0, 3939, 3940, 7, 10, 0, 0, 3940, 712, 1, 0, 0, 0, 3941, 3942, 7, 16, 0, 0, 3942, 3943, 7, 10, 0, 0, 3943, 3944, 7, 15, 0, 0, 3944, 3945, 7, 24, 0, 0, 3945, 3946, 7, 19, 0, 0, 3946, 3947, 7, 13, 0, 0, 3947, 3948, 7, 5, 0, 0, 3948, 3949, 7, 13, 0, 0, 3949, 3950, 7, 8, 0, 0, 3950, 714, 1, 0, 0, 0, 3951, 3952, 7, 16, 0, 0, 3952, 3953, 7, 10, 0, 0, 3953, 3954, 7, 26, 0, 0, 3954, 3955, 7, 16, 0, 0, 3955, 716, 1, 0, 0, 0, 3956, 3957, 7, 16, 0, 0, 3957, 3958, 7, 13, 0, 0, 3958, 3959, 7, 5, 0, 0, 3959, 3960, 7, 7, 0, 0, 3960, 3961, 7, 9, 0, 0, 3961, 3962, 7, 5, 0, 0, 3962, 3963, 7, 14, 0, 0, 3963, 3964, 7, 16, 0, 0, 3964, 3965, 7, 17, 0, 0, 3965, 3966, 7, 19, 0, 0, 3966, 3967, 7, 7, 0, 0, 3967, 718, 1, 0, 0, 0, 3968, 3969, 7, 16, 0, 0, 3969, 3970, 7, 13, 0, 0, 3970, 3971, 7, 17, 0, 0, 3971, 3972, 7, 23, 0, 0, 3972, 3973, 7, 23, 0, 0, 3973, 3974, 7, 10, 0, 0, 3974, 3975, 7, 13, 0, 0, 3975, 720, 1, 0, 0, 0, 3976, 3977, 7, 16, 0, 0, 3977, 3978, 7, 13, 0, 0, 3978, 3979, 7, 22, 0, 0, 3979, 3980, 7, 7, 0, 0, 3980, 3981, 7, 14, 0, 0, 3981, 3982, 7, 5, 0, 0, 3982, 3983, 7, 16, 0, 0, 3983, 3984, 7, 10, 0, 0, 3984, 722, 1, 0, 0, 0, 3985, 3986, 7, 16, 0, 0, 3986, 3987, 7, 13, 0, 0, 3987, 3988, 7, 22, 0, 0, 3988, 3989, 7, 9, 0, 0, 3989, 3990, 7, 16, 0, 0, 3990, 3991, 7, 10, 0, 0, 3991, 3992, 7, 12, 0, 0, 3992, 724, 1, 0, 0, 0, 3993, 3994, 7, 16, 0, 0, 3994, 3995, 7, 8, 0, 0, 3995, 3996, 7, 24, 0, 0, 3996, 3997, 7, 10, 0, 0, 3997, 726, 1, 0, 0, 0, 3998, 3999, 7, 16, 0, 0, 3999, 4000, 7, 8, 0, 0, 4000, 4001, 7, 24, 0, 0, 4001, 4002, 7, 10, 0, 0, 4002, 4003, 7, 9, 0, 0, 4003, 728, 1, 0, 0, 0, 4004, 4005, 7, 22, 0, 0, 4005, 4006, 7, 7, 0, 0, 4006, 4007, 7, 18, 0, 0, 4007, 4008, 7, 19, 0, 0, 4008, 4009, 7, 22, 0, 0, 4009, 4010, 7, 7, 0, 0, 4010, 4011, 7, 12, 0, 0, 4011, 4012, 7, 10, 0, 0, 4012, 4013, 7, 12, 0, 0, 4013, 730, 1, 0, 0, 0, 4014, 4015, 7, 22, 0, 0, 4015, 4016, 7, 7, 0, 0, 4016, 4017, 7, 14, 0, 0, 4017, 4018, 7, 19, 0, 0, 4018, 4019, 7, 15, 0, 0, 4019, 4020, 7, 15, 0, 0, 4020, 4021, 7, 17, 0, 0, 4021, 4022, 7, 16, 0, 0, 4022, 4023, 7, 16, 0, 0, 4023, 4024, 7, 10, 0, 0, 4024, 4025, 7, 12, 0, 0, 4025, 732, 1, 0, 0, 0, 4026, 4027, 7, 22, 0, 0, 4027, 4028, 7, 7, 0, 0, 4028, 4029, 7, 10, 0, 0, 4029, 4030, 7, 7, 0, 0, 4030, 4031, 7, 14, 0, 0, 4031, 4032, 7, 13, 0, 0, 4032, 4033, 7, 8, 0, 0, 4033, 4034, 7, 24, 0, 0, 4034, 4035, 7, 16, 0, 0, 4035, 4036, 7, 10, 0, 0, 4036, 4037, 7, 12, 0, 0, 4037, 734, 1, 0, 0, 0, 4038, 4039, 7, 22, 0, 0, 4039, 4040, 7, 7, 0, 0, 4040, 4041, 7, 21, 0, 0, 4041, 4042, 7, 7, 0, 0, 4042, 4043, 7, 19, 0, 0, 4043, 4044, 7, 28, 0, 0, 4044, 4045, 7, 7, 0, 0, 4045, 736, 1, 0, 0, 0, 4046, 4047, 7, 22, 0, 0, 4047, 4048, 7, 7, 0, 0, 4048, 4049, 7, 6, 0, 0, 4049, 4050, 7, 17, 0, 0, 4050, 4051, 7, 9, 0, 0, 4051, 4052, 7, 16, 0, 0, 4052, 4053, 7, 10, 0, 0, 4053, 4054, 7, 7, 0, 0, 4054, 738, 1, 0, 0, 0, 4055, 4056, 7, 22, 0, 0, 4056, 4057, 7, 7, 0, 0, 4057, 4058, 7, 6, 0, 0, 4058, 4059, 7, 19, 0, 0, 4059, 4060, 7, 23, 0, 0, 4060, 4061, 7, 23, 0, 0, 4061, 4062, 7, 10, 0, 0, 4062, 4063, 7, 12, 0, 0, 4063, 740, 1, 0, 0, 0, 4064, 4065, 7, 22, 0, 0, 4065, 4066, 7, 7, 0, 0, 4066, 4067, 7, 16, 0, 0, 4067, 4068, 7, 17, 0, 0, 4068, 4069, 7, 6, 0, 0, 4069, 742, 1, 0, 0, 0, 4070, 4071, 7, 22, 0, 0, 4071, 4072, 7, 24, 0, 0, 4072, 4073, 7, 12, 0, 0, 4073, 4074, 7, 5, 0, 0, 4074, 4075, 7, 16, 0, 0, 4075, 4076, 7, 10, 0, 0, 4076, 744, 1, 0, 0, 0, 4077, 4078, 7, 27, 0, 0, 4078, 4079, 7, 5, 0, 0, 4079, 4080, 7, 14, 0, 0, 4080, 4081, 7, 22, 0, 0, 4081, 4082, 7, 22, 0, 0, 4082, 4083, 7, 15, 0, 0, 4083, 746, 1, 0, 0, 0, 4084, 4085, 7, 27, 0, 0, 4085, 4086, 7, 5, 0, 0, 4086, 4087, 7, 6, 0, 0, 4087, 4088, 7, 17, 0, 0, 4088, 4089, 7, 12, 0, 0, 4089, 748, 1, 0, 0, 0, 4090, 4091, 7, 27, 0, 0, 4091, 4092, 7, 5, 0, 0, 4092, 4093, 7, 6, 0, 0, 4093, 4094, 7, 17, 0, 0, 4094, 4095, 7, 12, 0, 0, 4095, 4096, 7, 5, 0, 0, 4096, 4097, 7, 16, 0, 0, 4097, 4098, 7, 10, 0, 0, 4098, 750, 1, 0, 0, 0, 4099, 4100, 7, 27, 0, 0, 4100, 4101, 7, 5, 0, 0, 4101, 4102, 7, 6, 0, 0, 4102, 4103, 7, 17, 0, 0, 4103, 4104, 7, 12, 0, 0, 4104, 4105, 7, 5, 0, 0, 4105, 4106, 7, 16, 0, 0, 4106, 4107, 7, 19, 0, 0, 4107, 4108, 7, 13, 0, 0, 4108, 752, 1, 0, 0, 0, 4109, 4110, 7, 27, 0, 0, 4110, 4111, 7, 5, 0, 0, 4111, 4112, 7, 13, 0, 0, 4112, 4113, 7, 8, 0, 0, 4113, 4114, 7, 17, 0, 0, 4114, 4115, 7, 7, 0, 0, 4115, 4116, 7, 23, 0, 0, 4116, 754, 1, 0, 0, 0, 4117, 4118, 7, 27, 0, 0, 4118, 4119, 7, 10, 0, 0, 4119, 4120, 7, 13, 0, 0, 4120, 4121, 7, 9, 0, 0, 4121, 4122, 7, 17, 0, 0, 4122, 4123, 7, 19, 0, 0, 4123, 4124, 7, 7, 0, 0, 4124, 756, 1, 0, 0, 0, 4125, 4126, 7, 27, 0, 0, 4126, 4127, 7, 17, 0, 0, 4127, 4128, 7, 10, 0, 0, 4128, 4129, 7, 28, 0, 0, 4129, 758, 1, 0, 0, 0, 4130, 4131, 7, 27, 0, 0, 4131, 4132, 7, 19, 0, 0, 4132, 4133, 7, 6, 0, 0, 4133, 4134, 7, 5, 0, 0, 4134, 4135, 7, 16, 0, 0, 4135, 4136, 7, 17, 0, 0, 4136, 4137, 7, 6, 0, 0, 4137, 4138, 7, 10, 0, 0, 4138, 760, 1, 0, 0, 0, 4139, 4140, 7, 28, 0, 0, 4140, 4141, 7, 20, 0, 0, 4141, 4142, 7, 17, 0, 0, 4142, 4143, 7, 16, 0, 0, 4143, 4144, 7, 10, 0, 0, 4144, 4145, 7, 9, 0, 0, 4145, 4146, 7, 24, 0, 0, 4146, 4147, 7, 5, 0, 0, 4147, 4148, 7, 14, 0, 0, 4148, 4149, 7, 10, 0, 0, 4149, 762, 1, 0, 0, 0, 4150, 4151, 7, 28, 0, 0, 4151, 4152, 7, 17, 0, 0, 4152, 4153, 7, 16, 0, 0, 4153, 4154, 7, 20, 0, 0, 4154, 4155, 7, 19, 0, 0, 4155, 4156, 7, 22, 0, 0, 4156, 4157, 7, 16, 0, 0, 4157, 764, 1, 0, 0, 0, 4158, 4159, 7, 28, 0, 0, 4159, 4160, 7, 19, 0, 0, 4160, 4161, 7, 13, 0, 0, 4161, 4162, 7, 21, 0, 0, 4162, 766, 1, 0, 0, 0, 4163, 4164, 7, 28, 0, 0, 4164, 4165, 7, 13, 0, 0, 4165, 4166, 7, 5, 0, 0, 4166, 4167, 7, 24, 0, 0, 4167, 4168, 7, 24, 0, 0, 4168, 4169, 7, 10, 0, 0, 4169, 4170, 7, 13, 0, 0, 4170, 768, 1, 0, 0, 0, 4171, 4172, 7, 28, 0, 0, 4172, 4173, 7, 13, 0, 0, 4173, 4174, 7, 17, 0, 0, 4174, 4175, 7, 16, 0, 0, 4175, 4176, 7, 10, 0, 0, 4176, 770, 1, 0, 0, 0, 4177, 4178, 7, 26, 0, 0, 4178, 4179, 7, 15, 0, 0, 4179, 4180, 7, 6, 0, 0, 4180, 772, 1, 0, 0, 0, 4181, 4182, 7, 8, 0, 0, 4182, 4183, 7, 10, 0, 0, 4183, 4184, 7, 5, 0, 0, 4184, 4185, 7, 13, 0, 0, 4185, 774, 1, 0, 0, 0, 4186, 4187, 7, 8, 0, 0, 4187, 4188, 7, 10, 0, 0, 4188, 4189, 7, 9, 0, 0, 4189, 776, 1, 0, 0, 0, 4190, 4191, 7, 11, 0, 0, 4191, 4192, 7, 19, 0, 0, 4192, 4193, 7, 7, 0, 0, 4193, 4194, 7, 10, 0, 0, 4194, 778, 1, 0, 0, 0, 4195, 4196, 7, 18, 0, 0, 4196, 4197, 7, 10, 0, 0, 4197, 4198, 7, 16, 0, 0, 4198, 4199, 7, 28, 0, 0, 4199, 4200, 7, 10, 0, 0, 4200, 4201, 7, 10, 0, 0, 4201, 4202, 7, 7, 0, 0, 4202, 780, 1, 0, 0, 0, 4203, 4204, 7, 18, 0, 0, 4204, 4205, 7, 17, 0, 0, 4205, 4206, 7, 23, 0, 0, 4206, 4207, 7, 17, 0, 0, 4207, 4208, 7, 7, 0, 0, 4208, 4209, 7, 16, 0, 0, 4209, 782, 1, 0, 0, 0, 4210, 4211, 7, 18, 0, 0, 4211, 4212, 7, 17, 0, 0, 4212, 4213, 7, 16, 0, 0, 4213, 784, 1, 0, 0, 0, 4214, 4215, 7, 18, 0, 0, 4215, 4216, 7, 19, 0, 0, 4216, 4217, 7, 19, 0, 0, 4217, 4218, 7, 6, 0, 0, 4218, 4219, 7, 10, 0, 0, 4219, 4220, 7, 5, 0, 0, 4220, 4221, 7, 7, 0, 0, 4221, 786, 1, 0, 0, 0, 4222, 4223, 7, 14, 0, 0, 4223, 4224, 7, 20, 0, 0, 4224, 4225, 7, 5, 0, 0, 4225, 4226, 7, 13, 0, 0, 4226, 788, 1, 0, 0, 0, 4227, 4228, 7, 14, 0, 0, 4228, 4229, 7, 20, 0, 0, 4229, 4230, 7, 5, 0, 0, 4230, 4231, 7, 13, 0, 0, 4231, 4232, 7, 5, 0, 0, 4232, 4233, 7, 14, 0, 0, 4233, 4234, 7, 16, 0, 0, 4234, 4235, 7, 10, 0, 0, 4235, 4236, 7, 13, 0, 0, 4236, 790, 1, 0, 0, 0, 4237, 4238, 7, 14, 0, 0, 4238, 4239, 7, 19, 0, 0, 4239, 4240, 7, 5, 0, 0, 4240, 4241, 7, 6, 0, 0, 4241, 4242, 7, 10, 0, 0, 4242, 4243, 7, 9, 0, 0, 4243, 4244, 7, 14, 0, 0, 4244, 4245, 7, 10, 0, 0, 4245, 792, 1, 0, 0, 0, 4246, 4247, 7, 12, 0, 0, 4247, 4248, 7, 10, 0, 0, 4248, 4249, 7, 14, 0, 0, 4249, 794, 1, 0, 0, 0, 4250, 4251, 7, 12, 0, 0, 4251, 4252, 7, 10, 0, 0, 4252, 4253, 7, 14, 0, 0, 4253, 4254, 7, 17, 0, 0, 4254, 4255, 7, 15, 0, 0, 4255, 4256, 7, 5, 0, 0, 4256, 4257, 7, 6, 0, 0, 4257, 796, 1, 0, 0, 0, 4258, 4259, 7, 10, 0, 0, 4259, 4260, 7, 26, 0, 0, 4260, 4261, 7, 17, 0, 0, 4261, 4262, 7, 9, 0, 0, 4262, 4263, 7, 16, 0, 0, 4263, 4264, 7, 9, 0, 0, 4264, 798, 1, 0, 0, 0, 4265, 4266, 7, 10, 0, 0, 4266, 4267, 7, 26, 0, 0, 4267, 4268, 7, 16, 0, 0, 4268, 4269, 7, 13, 0, 0, 4269, 4270, 7, 5, 0, 0, 4270, 4271, 7, 14, 0, 0, 4271, 4272, 7, 16, 0, 0, 4272, 800, 1, 0, 0, 0, 4273, 4274, 7, 25, 0, 0, 4274, 4275, 7, 6, 0, 0, 4275, 4276, 7, 19, 0, 0, 4276, 4277, 7, 5, 0, 0, 4277, 4278, 7, 16, 0, 0, 4278, 802, 1, 0, 0, 0, 4279, 4280, 7, 23, 0, 0, 4280, 4281, 7, 13, 0, 0, 4281, 4282, 7, 10, 0, 0, 4282, 4283, 7, 5, 0, 0, 4283, 4284, 7, 16, 0, 0, 4284, 4285, 7, 10, 0, 0, 4285, 4286, 7, 9, 0, 0, 4286, 4287, 7, 16, 0, 0, 4287, 804, 1, 0, 0, 0, 4288, 4289, 7, 17, 0, 0, 4289, 4290, 7, 7, 0, 0, 4290, 4291, 7, 19, 0, 0, 4291, 4292, 7, 22, 0, 0, 4292, 4293, 7, 16, 0, 0, 4293, 806, 1, 0, 0, 0, 4294, 4295, 7, 17, 0, 0, 4295, 4296, 7, 7, 0, 0, 4296, 4297, 7, 16, 0, 0, 4297, 808, 1, 0, 0, 0, 4298, 4299, 7, 17, 0, 0, 4299, 4300, 7, 7, 0, 0, 4300, 4301, 7, 16, 0, 0, 4301, 4302, 7, 10, 0, 0, 4302, 4303, 7, 23, 0, 0, 4303, 4304, 7, 10, 0, 0, 4304, 4305, 7, 13, 0, 0, 4305, 810, 1, 0, 0, 0, 4306, 4307, 7, 17, 0, 0, 4307, 4308, 7, 7, 0, 0, 4308, 4309, 7, 16, 0, 0, 4309, 4310, 7, 10, 0, 0, 4310, 4311, 7, 13, 0, 0, 4311, 4312, 7, 27, 0, 0, 4312, 4313, 7, 5, 0, 0, 4313, 4314, 7, 6, 0, 0, 4314, 812, 1, 0, 0, 0, 4315, 4316, 7, 6, 0, 0, 4316, 4317, 7, 10, 0, 0, 4317, 4318, 7, 5, 0, 0, 4318, 4319, 7, 9, 0, 0, 4319, 4320, 7, 16, 0, 0, 4320, 814, 1, 0, 0, 0, 4321, 4322, 7, 7, 0, 0, 4322, 4323, 7, 5, 0, 0, 4323, 4324, 7, 16, 0, 0, 4324, 4325, 7, 17, 0, 0, 4325, 4326, 7, 19, 0, 0, 4326, 4327, 7, 7, 0, 0, 4327, 4328, 7, 5, 0, 0, 4328, 4329, 7, 6, 0, 0, 4329, 816, 1, 0, 0, 0, 4330, 4331, 7, 7, 0, 0, 4331, 4332, 7, 14, 0, 0, 4332, 4333, 7, 20, 0, 0, 4333, 4334, 7, 5, 0, 0, 4334, 4335, 7, 13, 0, 0, 4335, 818, 1, 0, 0, 0, 4336, 4337, 7, 7, 0, 0, 4337, 4338, 7, 19, 0, 0, 4338, 4339, 7, 7, 0, 0, 4339, 4340, 7, 10, 0, 0, 4340, 820, 1, 0, 0, 0, 4341, 4342, 7, 7, 0, 0, 4342, 4343, 7, 22, 0, 0, 4343, 4344, 7, 6, 0, 0, 4344, 4345, 7, 6, 0, 0, 4345, 4346, 7, 17, 0, 0, 4346, 4347, 7, 25, 0, 0, 4347, 822, 1, 0, 0, 0, 4348, 4349, 7, 7, 0, 0, 4349, 4350, 7, 22, 0, 0, 4350, 4351, 7, 15, 0, 0, 4351, 4352, 7, 10, 0, 0, 4352, 4353, 7, 13, 0, 0, 4353, 4354, 7, 17, 0, 0, 4354, 4355, 7, 14, 0, 0, 4355, 824, 1, 0, 0, 0, 4356, 4357, 7, 19, 0, 0, 4357, 4358, 7, 27, 0, 0, 4358, 4359, 7, 10, 0, 0, 4359, 4360, 7, 13, 0, 0, 4360, 4361, 7, 6, 0, 0, 4361, 4362, 7, 5, 0, 0, 4362, 4363, 7, 8, 0, 0, 4363, 826, 1, 0, 0, 0, 4364, 4365, 7, 24, 0, 0, 4365, 4366, 7, 19, 0, 0, 4366, 4367, 7, 9, 0, 0, 4367, 4368, 7, 17, 0, 0, 4368, 4369, 7, 16, 0, 0, 4369, 4370, 7, 17, 0, 0, 4370, 4371, 7, 19, 0, 0, 4371, 4372, 7, 7, 0, 0, 4372, 828, 1, 0, 0, 0, 4373, 4374, 7, 24, 0, 0, 4374, 4375, 7, 13, 0, 0, 4375, 4376, 7, 10, 0, 0, 4376, 4377, 7, 14, 0, 0, 4377, 4378, 7, 17, 0, 0, 4378, 4379, 7, 9, 0, 0, 4379, 4380, 7, 17, 0, 0, 4380, 4381, 7, 19, 0, 0, 4381, 4382, 7, 7, 0, 0, 4382, 830, 1, 0, 0, 0, 4383, 4384, 7, 13, 0, 0, 4384, 4385, 7, 10, 0, 0, 4385, 4386, 7, 5, 0, 0, 4386, 4387, 7, 6, 0, 0, 4387, 832, 1, 0, 0, 0, 4388, 4389, 7, 13, 0, 0, 4389, 4390, 7, 19, 0, 0, 4390, 4391, 7, 28, 0, 0, 4391, 834, 1, 0, 0, 0, 4392, 4393, 7, 9, 0, 0, 4393, 4394, 7, 10, 0, 0, 4394, 4395, 7, 16, 0, 0, 4395, 4396, 7, 19, 0, 0, 4396, 4397, 7, 25, 0, 0, 4397, 836, 1, 0, 0, 0, 4398, 4399, 7, 9, 0, 0, 4399, 4400, 7, 15, 0, 0, 4400, 4401, 7, 5, 0, 0, 4401, 4402, 7, 6, 0, 0, 4402, 4403, 7, 6, 0, 0, 4403, 4404, 7, 17, 0, 0, 4404, 4405, 7, 7, 0, 0, 4405, 4406, 7, 16, 0, 0, 4406, 838, 1, 0, 0, 0, 4407, 4408, 7, 9, 0, 0, 4408, 4409, 7, 22, 0, 0, 4409, 4410, 7, 18, 0, 0, 4410, 4411, 7, 9, 0, 0, 4411, 4412, 7, 16, 0, 0, 4412, 4413, 7, 13, 0, 0, 4413, 4414, 7, 17, 0, 0, 4414, 4415, 7, 7, 0, 0, 4415, 4416, 7, 23, 0, 0, 4416, 840, 1, 0, 0, 0, 4417, 4418, 7, 16, 0, 0, 4418, 4419, 7, 17, 0, 0, 4419, 4420, 7, 15, 0, 0, 4420, 4421, 7, 10, 0, 0, 4421, 842, 1, 0, 0, 0, 4422, 4423, 7, 16, 0, 0, 4423, 4424, 7, 17, 0, 0, 4424, 4425, 7, 15, 0, 0, 4425, 4426, 7, 10, 0, 0, 4426, 4427, 7, 9, 0, 0, 4427, 4428, 7, 16, 0, 0, 4428, 4429, 7, 5, 0, 0, 4429, 4430, 7, 15, 0, 0, 4430, 4431, 7, 24, 0, 0, 4431, 844, 1, 0, 0, 0, 4432, 4433, 7, 16, 0, 0, 4433, 4434, 7, 13, 0, 0, 4434, 4435, 7, 10, 0, 0, 4435, 4436, 7, 5, 0, 0, 4436, 4437, 7, 16, 0, 0, 4437, 846, 1, 0, 0, 0, 4438, 4439, 7, 16, 0, 0, 4439, 4440, 7, 13, 0, 0, 4440, 4441, 7, 17, 0, 0, 4441, 4442, 7, 15, 0, 0, 4442, 848, 1, 0, 0, 0, 4443, 4444, 7, 27, 0, 0, 4444, 4445, 7, 5, 0, 0, 4445, 4446, 7, 6, 0, 0, 4446, 4447, 7, 22, 0, 0, 4447, 4448, 7, 10, 0, 0, 4448, 4449, 7, 9, 0, 0, 4449, 850, 1, 0, 0, 0, 4450, 4451, 7, 27, 0, 0, 4451, 4452, 7, 5, 0, 0, 4452, 4453, 7, 13, 0, 0, 4453, 4454, 7, 14, 0, 0, 4454, 4455, 7, 20, 0, 0, 4455, 4456, 7, 5, 0, 0, 4456, 4457, 7, 13, 0, 0, 4457, 852, 1, 0, 0, 0, 4458, 4459, 7, 26, 0, 0, 4459, 4460, 7, 15, 0, 0, 4460, 4461, 7, 6, 0, 0, 4461, 4462, 7, 5, 0, 0, 4462, 4463, 7, 16, 0, 0, 4463, 4464, 7, 16, 0, 0, 4464, 4465, 7, 13, 0, 0, 4465, 4466, 7, 17, 0, 0, 4466, 4467, 7, 18, 0, 0, 4467, 4468, 7, 22, 0, 0, 4468, 4469, 7, 16, 0, 0, 4469, 4470, 7, 10, 0, 0, 4470, 4471, 7, 9, 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, 7, 14, 0, 0, 4476, 4477, 7, 19, 0, 0, 4477, 4478, 7, 15, 0, 0, 4478, 4479, 7, 15, 0, 0, 4479, 4480, 7, 10, 0, 0, 4480, 4481, 7, 7, 0, 0, 4481, 4482, 7, 16, 0, 0, 4482, 856, 1, 0, 0, 0, 4483, 4484, 7, 26, 0, 0, 4484, 4485, 7, 15, 0, 0, 4485, 4486, 7, 6, 0, 0, 4486, 4487, 7, 5, 0, 0, 4487, 4488, 7, 23, 0, 0, 4488, 4489, 7, 23, 0, 0, 4489, 858, 1, 0, 0, 0, 4490, 4491, 7, 26, 0, 0, 4491, 4492, 7, 15, 0, 0, 4492, 4493, 7, 6, 0, 0, 4493, 4494, 5, 95, 0, 0, 4494, 4495, 7, 17, 0, 0, 4495, 4496, 7, 9, 0, 0, 4496, 4497, 5, 95, 0, 0, 4497, 4498, 7, 28, 0, 0, 4498, 4499, 7, 10, 0, 0, 4499, 4500, 7, 6, 0, 0, 4500, 4501, 7, 6, 0, 0, 4501, 4502, 5, 95, 0, 0, 4502, 4503, 7, 25, 0, 0, 4503, 4504, 7, 19, 0, 0, 4504, 4505, 7, 13, 0, 0, 4505, 4506, 7, 15, 0, 0, 4506, 4507, 7, 10, 0, 0, 4507, 4508, 7, 12, 0, 0, 4508, 860, 1, 0, 0, 0, 4509, 4510, 7, 26, 0, 0, 4510, 4511, 7, 15, 0, 0, 4511, 4512, 7, 6, 0, 0, 4512, 4513, 5, 95, 0, 0, 4513, 4514, 7, 17, 0, 0, 4514, 4515, 7, 9, 0, 0, 4515, 4516, 5, 95, 0, 0, 4516, 4517, 7, 28, 0, 0, 4517, 4518, 7, 10, 0, 0, 4518, 4519, 7, 6, 0, 0, 4519, 4520, 7, 6, 0, 0, 4520, 4521, 5, 95, 0, 0, 4521, 4522, 7, 25, 0, 0, 4522, 4523, 7, 19, 0, 0, 4523, 4524, 7, 13, 0, 0, 4524, 4525, 7, 15, 0, 0, 4525, 4526, 7, 10, 0, 0, 4526, 4527, 7, 12, 0, 0, 4527, 4528, 5, 95, 0, 0, 4528, 4529, 7, 12, 0, 0, 4529, 4530, 7, 19, 0, 0, 4530, 4531, 7, 14, 0, 0, 4531, 4532, 7, 22, 0, 0, 4532, 4533, 7, 15, 0, 0, 4533, 4534, 7, 10, 0, 0, 4534, 4535, 7, 7, 0, 0, 4535, 4536, 7, 16, 0, 0, 4536, 862, 1, 0, 0, 0, 4537, 4538, 7, 26, 0, 0, 4538, 4539, 7, 15, 0, 0, 4539, 4540, 7, 6, 0, 0, 4540, 4541, 5, 95, 0, 0, 4541, 4542, 7, 17, 0, 0, 4542, 4543, 7, 9, 0, 0, 4543, 4544, 5, 95, 0, 0, 4544, 4545, 7, 28, 0, 0, 4545, 4546, 7, 10, 0, 0, 4546, 4547, 7, 6, 0, 0, 4547, 4548, 7, 6, 0, 0, 4548, 4549, 5, 95, 0, 0, 4549, 4550, 7, 25, 0, 0, 4550, 4551, 7, 19, 0, 0, 4551, 4552, 7, 13, 0, 0, 4552, 4553, 7, 15, 0, 0, 4553, 4554, 7, 10, 0, 0, 4554, 4555, 7, 12, 0, 0, 4555, 4556, 5, 95, 0, 0, 4556, 4557, 7, 14, 0, 0, 4557, 4558, 7, 19, 0, 0, 4558, 4559, 7, 7, 0, 0, 4559, 4560, 7, 16, 0, 0, 4560, 4561, 7, 10, 0, 0, 4561, 4562, 7, 7, 0, 0, 4562, 4563, 7, 16, 0, 0, 4563, 864, 1, 0, 0, 0, 4564, 4565, 7, 26, 0, 0, 4565, 4566, 7, 24, 0, 0, 4566, 4567, 7, 5, 0, 0, 4567, 4568, 7, 16, 0, 0, 4568, 4569, 7, 20, 0, 0, 4569, 866, 1, 0, 0, 0, 4570, 4571, 7, 26, 0, 0, 4571, 4572, 7, 24, 0, 0, 4572, 4573, 7, 5, 0, 0, 4573, 4574, 7, 16, 0, 0, 4574, 4575, 7, 20, 0, 0, 4575, 4576, 5, 95, 0, 0, 4576, 4577, 7, 10, 0, 0, 4577, 4578, 7, 26, 0, 0, 4578, 4579, 7, 17, 0, 0, 4579, 4580, 7, 9, 0, 0, 4580, 4581, 7, 16, 0, 0, 4581, 4582, 7, 9, 0, 0, 4582, 868, 1, 0, 0, 0, 4583, 4584, 7, 26, 0, 0, 4584, 4585, 7, 15, 0, 0, 4585, 4586, 7, 6, 0, 0, 4586, 4587, 7, 14, 0, 0, 4587, 4588, 7, 19, 0, 0, 4588, 4589, 7, 7, 0, 0, 4589, 4590, 7, 14, 0, 0, 4590, 4591, 7, 5, 0, 0, 4591, 4592, 7, 16, 0, 0, 4592, 870, 1, 0, 0, 0, 4593, 4594, 7, 26, 0, 0, 4594, 4595, 7, 15, 0, 0, 4595, 4596, 7, 6, 0, 0, 4596, 4597, 7, 10, 0, 0, 4597, 4598, 7, 6, 0, 0, 4598, 4599, 7, 10, 0, 0, 4599, 4600, 7, 15, 0, 0, 4600, 4601, 7, 10, 0, 0, 4601, 4602, 7, 7, 0, 0, 4602, 4603, 7, 16, 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, 10, 0, 0, 4608, 4609, 7, 26, 0, 0, 4609, 4610, 7, 17, 0, 0, 4610, 4611, 7, 9, 0, 0, 4611, 4612, 7, 16, 0, 0, 4612, 4613, 7, 9, 0, 0, 4613, 874, 1, 0, 0, 0, 4614, 4615, 7, 26, 0, 0, 4615, 4616, 7, 15, 0, 0, 4616, 4617, 7, 6, 0, 0, 4617, 4618, 7, 25, 0, 0, 4618, 4619, 7, 19, 0, 0, 4619, 4620, 7, 13, 0, 0, 4620, 4621, 7, 10, 0, 0, 4621, 4622, 7, 9, 0, 0, 4622, 4623, 7, 16, 0, 0, 4623, 876, 1, 0, 0, 0, 4624, 4625, 7, 26, 0, 0, 4625, 4626, 7, 15, 0, 0, 4626, 4627, 7, 6, 0, 0, 4627, 4628, 7, 24, 0, 0, 4628, 4629, 7, 5, 0, 0, 4629, 4630, 7, 13, 0, 0, 4630, 4631, 7, 9, 0, 0, 4631, 4632, 7, 10, 0, 0, 4632, 878, 1, 0, 0, 0, 4633, 4634, 7, 26, 0, 0, 4634, 4635, 7, 15, 0, 0, 4635, 4636, 7, 6, 0, 0, 4636, 4637, 7, 24, 0, 0, 4637, 4638, 7, 17, 0, 0, 4638, 880, 1, 0, 0, 0, 4639, 4640, 7, 26, 0, 0, 4640, 4641, 7, 15, 0, 0, 4641, 4642, 7, 6, 0, 0, 4642, 4643, 7, 13, 0, 0, 4643, 4644, 7, 19, 0, 0, 4644, 4645, 7, 19, 0, 0, 4645, 4646, 7, 16, 0, 0, 4646, 882, 1, 0, 0, 0, 4647, 4648, 7, 26, 0, 0, 4648, 4649, 7, 15, 0, 0, 4649, 4650, 7, 6, 0, 0, 4650, 4651, 7, 9, 0, 0, 4651, 4652, 7, 10, 0, 0, 4652, 4653, 7, 13, 0, 0, 4653, 4654, 7, 17, 0, 0, 4654, 4655, 7, 5, 0, 0, 4655, 4656, 7, 6, 0, 0, 4656, 4657, 7, 17, 0, 0, 4657, 4658, 7, 11, 0, 0, 4658, 4659, 7, 10, 0, 0, 4659, 884, 1, 0, 0, 0, 4660, 4661, 7, 14, 0, 0, 4661, 4662, 7, 5, 0, 0, 4662, 4663, 7, 6, 0, 0, 4663, 4664, 7, 6, 0, 0, 4664, 886, 1, 0, 0, 0, 4665, 4666, 7, 14, 0, 0, 4666, 4667, 7, 22, 0, 0, 4667, 4668, 7, 13, 0, 0, 4668, 4669, 7, 13, 0, 0, 4669, 4670, 7, 10, 0, 0, 4670, 4671, 7, 7, 0, 0, 4671, 4672, 7, 16, 0, 0, 4672, 888, 1, 0, 0, 0, 4673, 4674, 7, 5, 0, 0, 4674, 4675, 7, 16, 0, 0, 4675, 4676, 7, 16, 0, 0, 4676, 4677, 7, 5, 0, 0, 4677, 4678, 7, 14, 0, 0, 4678, 4679, 7, 20, 0, 0, 4679, 890, 1, 0, 0, 0, 4680, 4681, 7, 12, 0, 0, 4681, 4682, 7, 10, 0, 0, 4682, 4683, 7, 16, 0, 0, 4683, 4684, 7, 5, 0, 0, 4684, 4685, 7, 14, 0, 0, 4685, 4686, 7, 20, 0, 0, 4686, 892, 1, 0, 0, 0, 4687, 4688, 7, 10, 0, 0, 4688, 4689, 7, 26, 0, 0, 4689, 4690, 7, 24, 0, 0, 4690, 4691, 7, 13, 0, 0, 4691, 4692, 7, 10, 0, 0, 4692, 4693, 7, 9, 0, 0, 4693, 4694, 7, 9, 0, 0, 4694, 4695, 7, 17, 0, 0, 4695, 4696, 7, 19, 0, 0, 4696, 4697, 7, 7, 0, 0, 4697, 894, 1, 0, 0, 0, 4698, 4699, 7, 23, 0, 0, 4699, 4700, 7, 10, 0, 0, 4700, 4701, 7, 7, 0, 0, 4701, 4702, 7, 10, 0, 0, 4702, 4703, 7, 13, 0, 0, 4703, 4704, 7, 5, 0, 0, 4704, 4705, 7, 16, 0, 0, 4705, 4706, 7, 10, 0, 0, 4706, 4707, 7, 12, 0, 0, 4707, 896, 1, 0, 0, 0, 4708, 4709, 7, 6, 0, 0, 4709, 4710, 7, 19, 0, 0, 4710, 4711, 7, 23, 0, 0, 4711, 4712, 7, 23, 0, 0, 4712, 4713, 7, 10, 0, 0, 4713, 4714, 7, 12, 0, 0, 4714, 898, 1, 0, 0, 0, 4715, 4716, 7, 9, 0, 0, 4716, 4717, 7, 16, 0, 0, 4717, 4718, 7, 19, 0, 0, 4718, 4719, 7, 13, 0, 0, 4719, 4720, 7, 10, 0, 0, 4720, 4721, 7, 12, 0, 0, 4721, 900, 1, 0, 0, 0, 4722, 4723, 7, 17, 0, 0, 4723, 4724, 7, 7, 0, 0, 4724, 4725, 7, 14, 0, 0, 4725, 4726, 7, 6, 0, 0, 4726, 4727, 7, 22, 0, 0, 4727, 4728, 7, 12, 0, 0, 4728, 4729, 7, 10, 0, 0, 4729, 902, 1, 0, 0, 0, 4730, 4731, 7, 13, 0, 0, 4731, 4732, 7, 19, 0, 0, 4732, 4733, 7, 22, 0, 0, 4733, 4734, 7, 16, 0, 0, 4734, 4735, 7, 17, 0, 0, 4735, 4736, 7, 7, 0, 0, 4736, 4737, 7, 10, 0, 0, 4737, 904, 1, 0, 0, 0, 4738, 4739, 7, 16, 0, 0, 4739, 4740, 7, 13, 0, 0, 4740, 4741, 7, 5, 0, 0, 4741, 4742, 7, 7, 0, 0, 4742, 4743, 7, 9, 0, 0, 4743, 4744, 7, 25, 0, 0, 4744, 4745, 7, 19, 0, 0, 4745, 4746, 7, 13, 0, 0, 4746, 4747, 7, 15, 0, 0, 4747, 906, 1, 0, 0, 0, 4748, 4749, 7, 17, 0, 0, 4749, 4750, 7, 15, 0, 0, 4750, 4751, 7, 24, 0, 0, 4751, 4752, 7, 19, 0, 0, 4752, 4753, 7, 13, 0, 0, 4753, 4754, 7, 16, 0, 0, 4754, 908, 1, 0, 0, 0, 4755, 4756, 7, 24, 0, 0, 4756, 4757, 7, 19, 0, 0, 4757, 4758, 7, 6, 0, 0, 4758, 4759, 7, 17, 0, 0, 4759, 4760, 7, 14, 0, 0, 4760, 4761, 7, 8, 0, 0, 4761, 910, 1, 0, 0, 0, 4762, 4763, 7, 15, 0, 0, 4763, 4764, 7, 10, 0, 0, 4764, 4765, 7, 16, 0, 0, 4765, 4766, 7, 20, 0, 0, 4766, 4767, 7, 19, 0, 0, 4767, 4768, 7, 12, 0, 0, 4768, 912, 1, 0, 0, 0, 4769, 4770, 7, 13, 0, 0, 4770, 4771, 7, 10, 0, 0, 4771, 4772, 7, 25, 0, 0, 4772, 4773, 7, 10, 0, 0, 4773, 4774, 7, 13, 0, 0, 4774, 4775, 7, 10, 0, 0, 4775, 4776, 7, 7, 0, 0, 4776, 4777, 7, 14, 0, 0, 4777, 4778, 7, 17, 0, 0, 4778, 4779, 7, 7, 0, 0, 4779, 4780, 7, 23, 0, 0, 4780, 914, 1, 0, 0, 0, 4781, 4782, 7, 7, 0, 0, 4782, 4783, 7, 10, 0, 0, 4783, 4784, 7, 28, 0, 0, 4784, 916, 1, 0, 0, 0, 4785, 4786, 7, 19, 0, 0, 4786, 4787, 7, 6, 0, 0, 4787, 4788, 7, 12, 0, 0, 4788, 918, 1, 0, 0, 0, 4789, 4790, 7, 27, 0, 0, 4790, 4791, 7, 5, 0, 0, 4791, 4792, 7, 6, 0, 0, 4792, 4793, 7, 22, 0, 0, 4793, 4794, 7, 10, 0, 0, 4794, 920, 1, 0, 0, 0, 4795, 4796, 7, 9, 0, 0, 4796, 4797, 7, 22, 0, 0, 4797, 4798, 7, 18, 0, 0, 4798, 4799, 7, 9, 0, 0, 4799, 4800, 7, 14, 0, 0, 4800, 4801, 7, 13, 0, 0, 4801, 4802, 7, 17, 0, 0, 4802, 4803, 7, 24, 0, 0, 4803, 4804, 7, 16, 0, 0, 4804, 4805, 7, 17, 0, 0, 4805, 4806, 7, 19, 0, 0, 4806, 4807, 7, 7, 0, 0, 4807, 922, 1, 0, 0, 0, 4808, 4809, 7, 24, 0, 0, 4809, 4810, 7, 22, 0, 0, 4810, 4811, 7, 18, 0, 0, 4811, 4812, 7, 6, 0, 0, 4812, 4813, 7, 17, 0, 0, 4813, 4814, 7, 14, 0, 0, 4814, 4815, 7, 5, 0, 0, 4815, 4816, 7, 16, 0, 0, 4816, 4817, 7, 17, 0, 0, 4817, 4818, 7, 19, 0, 0, 4818, 4819, 7, 7, 0, 0, 4819, 924, 1, 0, 0, 0, 4820, 4821, 7, 19, 0, 0, 4821, 4822, 7, 22, 0, 0, 4822, 4823, 7, 16, 0, 0, 4823, 926, 1, 0, 0, 0, 4824, 4825, 7, 10, 0, 0, 4825, 4826, 7, 7, 0, 0, 4826, 4827, 7, 12, 0, 0, 4827, 928, 1, 0, 0, 0, 4828, 4829, 7, 13, 0, 0, 4829, 4830, 7, 19, 0, 0, 4830, 4831, 7, 22, 0, 0, 4831, 4832, 7, 16, 0, 0, 4832, 4833, 7, 17, 0, 0, 4833, 4834, 7, 7, 0, 0, 4834, 4835, 7, 10, 0, 0, 4835, 4836, 7, 9, 0, 0, 4836, 930, 1, 0, 0, 0, 4837, 4838, 7, 9, 0, 0, 4838, 4839, 7, 14, 0, 0, 4839, 4840, 7, 20, 0, 0, 4840, 4841, 7, 10, 0, 0, 4841, 4842, 7, 15, 0, 0, 4842, 4843, 7, 5, 0, 0, 4843, 4844, 7, 9, 0, 0, 4844, 932, 1, 0, 0, 0, 4845, 4846, 7, 24, 0, 0, 4846, 4847, 7, 13, 0, 0, 4847, 4848, 7, 19, 0, 0, 4848, 4849, 7, 14, 0, 0, 4849, 4850, 7, 10, 0, 0, 4850, 4851, 7, 12, 0, 0, 4851, 4852, 7, 22, 0, 0, 4852, 4853, 7, 13, 0, 0, 4853, 4854, 7, 10, 0, 0, 4854, 4855, 7, 9, 0, 0, 4855, 934, 1, 0, 0, 0, 4856, 4857, 7, 17, 0, 0, 4857, 4858, 7, 7, 0, 0, 4858, 4859, 7, 24, 0, 0, 4859, 4860, 7, 22, 0, 0, 4860, 4861, 7, 16, 0, 0, 4861, 936, 1, 0, 0, 0, 4862, 4863, 7, 9, 0, 0, 4863, 4864, 7, 22, 0, 0, 4864, 4865, 7, 24, 0, 0, 4865, 4866, 7, 24, 0, 0, 4866, 4867, 7, 19, 0, 0, 4867, 4868, 7, 13, 0, 0, 4868, 4869, 7, 16, 0, 0, 4869, 938, 1, 0, 0, 0, 4870, 4871, 7, 24, 0, 0, 4871, 4872, 7, 5, 0, 0, 4872, 4873, 7, 13, 0, 0, 4873, 4874, 7, 5, 0, 0, 4874, 4875, 7, 6, 0, 0, 4875, 4876, 7, 6, 0, 0, 4876, 4877, 7, 10, 0, 0, 4877, 4878, 7, 6, 0, 0, 4878, 940, 1, 0, 0, 0, 4879, 4880, 7, 9, 0, 0, 4880, 4881, 7, 29, 0, 0, 4881, 4882, 7, 6, 0, 0, 4882, 942, 1, 0, 0, 0, 4883, 4884, 7, 12, 0, 0, 4884, 4885, 7, 10, 0, 0, 4885, 4886, 7, 24, 0, 0, 4886, 4887, 7, 10, 0, 0, 4887, 4888, 7, 7, 0, 0, 4888, 4889, 7, 12, 0, 0, 4889, 4890, 7, 9, 0, 0, 4890, 944, 1, 0, 0, 0, 4891, 4892, 7, 19, 0, 0, 4892, 4893, 7, 27, 0, 0, 4893, 4894, 7, 10, 0, 0, 4894, 4895, 7, 13, 0, 0, 4895, 4896, 7, 13, 0, 0, 4896, 4897, 7, 17, 0, 0, 4897, 4898, 7, 12, 0, 0, 4898, 4899, 7, 17, 0, 0, 4899, 4900, 7, 7, 0, 0, 4900, 4901, 7, 23, 0, 0, 4901, 946, 1, 0, 0, 0, 4902, 4903, 7, 14, 0, 0, 4903, 4904, 7, 19, 0, 0, 4904, 4905, 7, 7, 0, 0, 4905, 4906, 7, 25, 0, 0, 4906, 4907, 7, 6, 0, 0, 4907, 4908, 7, 17, 0, 0, 4908, 4909, 7, 14, 0, 0, 4909, 4910, 7, 16, 0, 0, 4910, 948, 1, 0, 0, 0, 4911, 4912, 7, 9, 0, 0, 4912, 4913, 7, 21, 0, 0, 4913, 4914, 7, 17, 0, 0, 4914, 4915, 7, 24, 0, 0, 4915, 950, 1, 0, 0, 0, 4916, 4917, 7, 6, 0, 0, 4917, 4918, 7, 19, 0, 0, 4918, 4919, 7, 14, 0, 0, 4919, 4920, 7, 21, 0, 0, 4920, 4921, 7, 10, 0, 0, 4921, 4922, 7, 12, 0, 0, 4922, 952, 1, 0, 0, 0, 4923, 4924, 7, 16, 0, 0, 4924, 4925, 7, 17, 0, 0, 4925, 4926, 7, 10, 0, 0, 4926, 4927, 7, 9, 0, 0, 4927, 954, 1, 0, 0, 0, 4928, 4929, 7, 13, 0, 0, 4929, 4930, 7, 19, 0, 0, 4930, 4931, 7, 6, 0, 0, 4931, 4932, 7, 6, 0, 0, 4932, 4933, 7, 22, 0, 0, 4933, 4934, 7, 24, 0, 0, 4934, 956, 1, 0, 0, 0, 4935, 4936, 7, 14, 0, 0, 4936, 4937, 7, 22, 0, 0, 4937, 4938, 7, 18, 0, 0, 4938, 4939, 7, 10, 0, 0, 4939, 958, 1, 0, 0, 0, 4940, 4941, 7, 23, 0, 0, 4941, 4942, 7, 13, 0, 0, 4942, 4943, 7, 19, 0, 0, 4943, 4944, 7, 22, 0, 0, 4944, 4945, 7, 24, 0, 0, 4945, 4946, 7, 17, 0, 0, 4946, 4947, 7, 7, 0, 0, 4947, 4948, 7, 23, 0, 0, 4948, 960, 1, 0, 0, 0, 4949, 4950, 7, 9, 0, 0, 4950, 4951, 7, 10, 0, 0, 4951, 4952, 7, 16, 0, 0, 4952, 4953, 7, 9, 0, 0, 4953, 962, 1, 0, 0, 0, 4954, 4955, 7, 16, 0, 0, 4955, 4956, 7, 5, 0, 0, 4956, 4957, 7, 18, 0, 0, 4957, 4958, 7, 6, 0, 0, 4958, 4959, 7, 10, 0, 0, 4959, 4960, 7, 9, 0, 0, 4960, 4961, 7, 5, 0, 0, 4961, 4962, 7, 15, 0, 0, 4962, 4963, 7, 24, 0, 0, 4963, 4964, 7, 6, 0, 0, 4964, 4965, 7, 10, 0, 0, 4965, 964, 1, 0, 0, 0, 4966, 4967, 7, 19, 0, 0, 4967, 4968, 7, 13, 0, 0, 4968, 4969, 7, 12, 0, 0, 4969, 4970, 7, 17, 0, 0, 4970, 4971, 7, 7, 0, 0, 4971, 4972, 7, 5, 0, 0, 4972, 4973, 7, 6, 0, 0, 4973, 4974, 7, 17, 0, 0, 4974, 4975, 7, 16, 0, 0, 4975, 4976, 7, 8, 0, 0, 4976, 966, 1, 0, 0, 0, 4977, 4978, 7, 26, 0, 0, 4978, 4979, 7, 15, 0, 0, 4979, 4980, 7, 6, 0, 0, 4980, 4981, 7, 16, 0, 0, 4981, 4982, 7, 5, 0, 0, 4982, 4983, 7, 18, 0, 0, 4983, 4984, 7, 6, 0, 0, 4984, 4985, 7, 10, 0, 0, 4985, 968, 1, 0, 0, 0, 4986, 4987, 7, 14, 0, 0, 4987, 4988, 7, 19, 0, 0, 4988, 4989, 7, 6, 0, 0, 4989, 4990, 7, 22, 0, 0, 4990, 4991, 7, 15, 0, 0, 4991, 4992, 7, 7, 0, 0, 4992, 4993, 7, 9, 0, 0, 4993, 970, 1, 0, 0, 0, 4994, 4995, 7, 26, 0, 0, 4995, 4996, 7, 15, 0, 0, 4996, 4997, 7, 6, 0, 0, 4997, 4998, 7, 7, 0, 0, 4998, 4999, 7, 5, 0, 0, 4999, 5000, 7, 15, 0, 0, 5000, 5001, 7, 10, 0, 0, 5001, 5002, 7, 9, 0, 0, 5002, 5003, 7, 24, 0, 0, 5003, 5004, 7, 5, 0, 0, 5004, 5005, 7, 14, 0, 0, 5005, 5006, 7, 10, 0, 0, 5006, 5007, 7, 9, 0, 0, 5007, 972, 1, 0, 0, 0, 5008, 5009, 7, 13, 0, 0, 5009, 5010, 7, 19, 0, 0, 5010, 5011, 7, 28, 0, 0, 5011, 5012, 7, 16, 0, 0, 5012, 5013, 7, 8, 0, 0, 5013, 5014, 7, 24, 0, 0, 5014, 5015, 7, 10, 0, 0, 5015, 974, 1, 0, 0, 0, 5016, 5017, 7, 7, 0, 0, 5017, 5018, 7, 19, 0, 0, 5018, 5019, 7, 13, 0, 0, 5019, 5020, 7, 15, 0, 0, 5020, 5021, 7, 5, 0, 0, 5021, 5022, 7, 6, 0, 0, 5022, 5023, 7, 17, 0, 0, 5023, 5024, 7, 11, 0, 0, 5024, 5025, 7, 10, 0, 0, 5025, 5026, 7, 12, 0, 0, 5026, 976, 1, 0, 0, 0, 5027, 5028, 7, 28, 0, 0, 5028, 5029, 7, 17, 0, 0, 5029, 5030, 7, 16, 0, 0, 5030, 5031, 7, 20, 0, 0, 5031, 5032, 7, 17, 0, 0, 5032, 5033, 7, 7, 0, 0, 5033, 978, 1, 0, 0, 0, 5034, 5035, 7, 25, 0, 0, 5035, 5036, 7, 17, 0, 0, 5036, 5037, 7, 6, 0, 0, 5037, 5038, 7, 16, 0, 0, 5038, 5039, 7, 10, 0, 0, 5039, 5040, 7, 13, 0, 0, 5040, 980, 1, 0, 0, 0, 5041, 5042, 7, 23, 0, 0, 5042, 5043, 7, 13, 0, 0, 5043, 5044, 7, 19, 0, 0, 5044, 5045, 7, 22, 0, 0, 5045, 5046, 7, 24, 0, 0, 5046, 5047, 7, 9, 0, 0, 5047, 982, 1, 0, 0, 0, 5048, 5049, 7, 19, 0, 0, 5049, 5050, 7, 16, 0, 0, 5050, 5051, 7, 20, 0, 0, 5051, 5052, 7, 10, 0, 0, 5052, 5053, 7, 13, 0, 0, 5053, 5054, 7, 9, 0, 0, 5054, 984, 1, 0, 0, 0, 5055, 5056, 7, 7, 0, 0, 5056, 5057, 7, 25, 0, 0, 5057, 5058, 7, 14, 0, 0, 5058, 986, 1, 0, 0, 0, 5059, 5060, 7, 7, 0, 0, 5060, 5061, 7, 25, 0, 0, 5061, 5062, 7, 12, 0, 0, 5062, 988, 1, 0, 0, 0, 5063, 5064, 7, 7, 0, 0, 5064, 5065, 7, 25, 0, 0, 5065, 5066, 7, 21, 0, 0, 5066, 5067, 7, 14, 0, 0, 5067, 990, 1, 0, 0, 0, 5068, 5069, 7, 7, 0, 0, 5069, 5070, 7, 25, 0, 0, 5070, 5071, 7, 21, 0, 0, 5071, 5072, 7, 12, 0, 0, 5072, 992, 1, 0, 0, 0, 5073, 5074, 7, 22, 0, 0, 5074, 5075, 7, 10, 0, 0, 5075, 5076, 7, 9, 0, 0, 5076, 5077, 7, 14, 0, 0, 5077, 5078, 7, 5, 0, 0, 5078, 5079, 7, 24, 0, 0, 5079, 5080, 7, 10, 0, 0, 5080, 994, 1, 0, 0, 0, 5081, 5082, 7, 27, 0, 0, 5082, 5083, 7, 17, 0, 0, 5083, 5084, 7, 10, 0, 0, 5084, 5085, 7, 28, 0, 0, 5085, 5086, 7, 9, 0, 0, 5086, 996, 1, 0, 0, 0, 5087, 5088, 7, 7, 0, 0, 5088, 5089, 7, 19, 0, 0, 5089, 5090, 7, 13, 0, 0, 5090, 5091, 7, 15, 0, 0, 5091, 5092, 7, 5, 0, 0, 5092, 5093, 7, 6, 0, 0, 5093, 5094, 7, 17, 0, 0, 5094, 5095, 7, 11, 0, 0, 5095, 5096, 7, 10, 0, 0, 5096, 998, 1, 0, 0, 0, 5097, 5098, 7, 12, 0, 0, 5098, 5099, 7, 22, 0, 0, 5099, 5100, 7, 15, 0, 0, 5100, 5101, 7, 24, 0, 0, 5101, 1000, 1, 0, 0, 0, 5102, 5103, 7, 24, 0, 0, 5103, 5104, 7, 13, 0, 0, 5104, 5105, 7, 17, 0, 0, 5105, 5106, 7, 7, 0, 0, 5106, 5107, 7, 16, 0, 0, 5107, 5108, 5, 95, 0, 0, 5108, 5109, 7, 9, 0, 0, 5109, 5110, 7, 16, 0, 0, 5110, 5111, 7, 13, 0, 0, 5111, 5112, 7, 17, 0, 0, 5112, 5113, 7, 14, 0, 0, 5113, 5114, 7, 16, 0, 0, 5114, 5115, 5, 95, 0, 0, 5115, 5116, 7, 24, 0, 0, 5116, 5117, 7, 5, 0, 0, 5117, 5118, 7, 13, 0, 0, 5118, 5119, 7, 5, 0, 0, 5119, 5120, 7, 15, 0, 0, 5120, 5121, 7, 9, 0, 0, 5121, 1002, 1, 0, 0, 0, 5122, 5123, 7, 27, 0, 0, 5123, 5124, 7, 5, 0, 0, 5124, 5125, 7, 13, 0, 0, 5125, 5126, 7, 17, 0, 0, 5126, 5127, 7, 5, 0, 0, 5127, 5128, 7, 18, 0, 0, 5128, 5129, 7, 6, 0, 0, 5129, 5130, 7, 10, 0, 0, 5130, 5131, 5, 95, 0, 0, 5131, 5132, 7, 14, 0, 0, 5132, 5133, 7, 19, 0, 0, 5133, 5134, 7, 7, 0, 0, 5134, 5135, 7, 25, 0, 0, 5135, 5136, 7, 6, 0, 0, 5136, 5137, 7, 17, 0, 0, 5137, 5138, 7, 14, 0, 0, 5138, 5139, 7, 16, 0, 0, 5139, 1004, 1, 0, 0, 0, 5140, 5141, 7, 10, 0, 0, 5141, 5142, 7, 13, 0, 0, 5142, 5143, 7, 13, 0, 0, 5143, 5144, 7, 19, 0, 0, 5144, 5145, 7, 13, 0, 0, 5145, 1006, 1, 0, 0, 0, 5146, 5147, 7, 22, 0, 0, 5147, 5148, 7, 9, 0, 0, 5148, 5149, 7, 10, 0, 0, 5149, 5150, 5, 95, 0, 0, 5150, 5151, 7, 27, 0, 0, 5151, 5152, 7, 5, 0, 0, 5152, 5153, 7, 13, 0, 0, 5153, 5154, 7, 17, 0, 0, 5154, 5155, 7, 5, 0, 0, 5155, 5156, 7, 18, 0, 0, 5156, 5157, 7, 6, 0, 0, 5157, 5158, 7, 10, 0, 0, 5158, 1008, 1, 0, 0, 0, 5159, 5160, 7, 22, 0, 0, 5160, 5161, 7, 9, 0, 0, 5161, 5162, 7, 10, 0, 0, 5162, 5163, 5, 95, 0, 0, 5163, 5164, 7, 14, 0, 0, 5164, 5165, 7, 19, 0, 0, 5165, 5166, 7, 6, 0, 0, 5166, 5167, 7, 22, 0, 0, 5167, 5168, 7, 15, 0, 0, 5168, 5169, 7, 7, 0, 0, 5169, 1010, 1, 0, 0, 0, 5170, 5171, 7, 5, 0, 0, 5171, 5172, 7, 6, 0, 0, 5172, 5173, 7, 17, 0, 0, 5173, 5174, 7, 5, 0, 0, 5174, 5175, 7, 9, 0, 0, 5175, 1012, 1, 0, 0, 0, 5176, 5177, 7, 14, 0, 0, 5177, 5178, 7, 19, 0, 0, 5178, 5179, 7, 7, 0, 0, 5179, 5180, 7, 9, 0, 0, 5180, 5181, 7, 16, 0, 0, 5181, 5182, 7, 5, 0, 0, 5182, 5183, 7, 7, 0, 0, 5183, 5184, 7, 16, 0, 0, 5184, 1014, 1, 0, 0, 0, 5185, 5186, 7, 24, 0, 0, 5186, 5187, 7, 10, 0, 0, 5187, 5188, 7, 13, 0, 0, 5188, 5189, 7, 25, 0, 0, 5189, 5190, 7, 19, 0, 0, 5190, 5191, 7, 13, 0, 0, 5191, 5192, 7, 15, 0, 0, 5192, 1016, 1, 0, 0, 0, 5193, 5194, 7, 23, 0, 0, 5194, 5195, 7, 10, 0, 0, 5195, 5196, 7, 16, 0, 0, 5196, 1018, 1, 0, 0, 0, 5197, 5198, 7, 12, 0, 0, 5198, 5199, 7, 17, 0, 0, 5199, 5200, 7, 5, 0, 0, 5200, 5201, 7, 23, 0, 0, 5201, 5202, 7, 7, 0, 0, 5202, 5203, 7, 19, 0, 0, 5203, 5204, 7, 9, 0, 0, 5204, 5205, 7, 16, 0, 0, 5205, 5206, 7, 17, 0, 0, 5206, 5207, 7, 14, 0, 0, 5207, 5208, 7, 9, 0, 0, 5208, 1020, 1, 0, 0, 0, 5209, 5210, 7, 9, 0, 0, 5210, 5211, 7, 16, 0, 0, 5211, 5212, 7, 5, 0, 0, 5212, 5213, 7, 14, 0, 0, 5213, 5214, 7, 21, 0, 0, 5214, 5215, 7, 10, 0, 0, 5215, 5216, 7, 12, 0, 0, 5216, 1022, 1, 0, 0, 0, 5217, 5218, 7, 10, 0, 0, 5218, 5219, 7, 6, 0, 0, 5219, 5220, 7, 9, 0, 0, 5220, 5221, 7, 17, 0, 0, 5221, 5222, 7, 25, 0, 0, 5222, 1024, 1, 0, 0, 0, 5223, 5224, 7, 28, 0, 0, 5224, 5225, 7, 20, 0, 0, 5225, 5226, 7, 17, 0, 0, 5226, 5227, 7, 6, 0, 0, 5227, 5228, 7, 10, 0, 0, 5228, 1026, 1, 0, 0, 0, 5229, 5230, 7, 13, 0, 0, 5230, 5231, 7, 10, 0, 0, 5231, 5232, 7, 27, 0, 0, 5232, 5233, 7, 10, 0, 0, 5233, 5234, 7, 13, 0, 0, 5234, 5235, 7, 9, 0, 0, 5235, 5236, 7, 10, 0, 0, 5236, 1028, 1, 0, 0, 0, 5237, 5238, 7, 25, 0, 0, 5238, 5239, 7, 19, 0, 0, 5239, 5240, 7, 13, 0, 0, 5240, 5241, 7, 10, 0, 0, 5241, 5242, 7, 5, 0, 0, 5242, 5243, 7, 14, 0, 0, 5243, 5244, 7, 20, 0, 0, 5244, 1030, 1, 0, 0, 0, 5245, 5246, 7, 9, 0, 0, 5246, 5247, 7, 6, 0, 0, 5247, 5248, 7, 17, 0, 0, 5248, 5249, 7, 14, 0, 0, 5249, 5250, 7, 10, 0, 0, 5250, 1032, 1, 0, 0, 0, 5251, 5252, 7, 10, 0, 0, 5252, 5253, 7, 26, 0, 0, 5253, 5254, 7, 17, 0, 0, 5254, 5255, 7, 16, 0, 0, 5255, 1034, 1, 0, 0, 0, 5256, 5257, 7, 13, 0, 0, 5257, 5258, 7, 10, 0, 0, 5258, 5259, 7, 16, 0, 0, 5259, 5260, 7, 22, 0, 0, 5260, 5261, 7, 13, 0, 0, 5261, 5262, 7, 7, 0, 0, 5262, 1036, 1, 0, 0, 0, 5263, 5264, 7, 29, 0, 0, 5264, 5265, 7, 22, 0, 0, 5265, 5266, 7, 10, 0, 0, 5266, 5267, 7, 13, 0, 0, 5267, 5268, 7, 8, 0, 0, 5268, 1038, 1, 0, 0, 0, 5269, 5270, 7, 13, 0, 0, 5270, 5271, 7, 5, 0, 0, 5271, 5272, 7, 17, 0, 0, 5272, 5273, 7, 9, 0, 0, 5273, 5274, 7, 10, 0, 0, 5274, 1040, 1, 0, 0, 0, 5275, 5276, 7, 9, 0, 0, 5276, 5277, 7, 29, 0, 0, 5277, 5278, 7, 6, 0, 0, 5278, 5279, 7, 9, 0, 0, 5279, 5280, 7, 16, 0, 0, 5280, 5281, 7, 5, 0, 0, 5281, 5282, 7, 16, 0, 0, 5282, 5283, 7, 10, 0, 0, 5283, 1042, 1, 0, 0, 0, 5284, 5285, 7, 12, 0, 0, 5285, 5286, 7, 10, 0, 0, 5286, 5287, 7, 18, 0, 0, 5287, 5288, 7, 22, 0, 0, 5288, 5289, 7, 23, 0, 0, 5289, 1044, 1, 0, 0, 0, 5290, 5291, 7, 6, 0, 0, 5291, 5292, 7, 19, 0, 0, 5292, 5293, 7, 23, 0, 0, 5293, 1046, 1, 0, 0, 0, 5294, 5295, 7, 17, 0, 0, 5295, 5296, 7, 7, 0, 0, 5296, 5297, 7, 25, 0, 0, 5297, 5298, 7, 19, 0, 0, 5298, 1048, 1, 0, 0, 0, 5299, 5300, 7, 7, 0, 0, 5300, 5301, 7, 19, 0, 0, 5301, 5302, 7, 16, 0, 0, 5302, 5303, 7, 17, 0, 0, 5303, 5304, 7, 14, 0, 0, 5304, 5305, 7, 10, 0, 0, 5305, 1050, 1, 0, 0, 0, 5306, 5307, 7, 28, 0, 0, 5307, 5308, 7, 5, 0, 0, 5308, 5309, 7, 13, 0, 0, 5309, 5310, 7, 7, 0, 0, 5310, 5311, 7, 17, 0, 0, 5311, 5312, 7, 7, 0, 0, 5312, 5313, 7, 23, 0, 0, 5313, 1052, 1, 0, 0, 0, 5314, 5315, 7, 10, 0, 0, 5315, 5316, 7, 26, 0, 0, 5316, 5317, 7, 14, 0, 0, 5317, 5318, 7, 10, 0, 0, 5318, 5319, 7, 24, 0, 0, 5319, 5320, 7, 16, 0, 0, 5320, 5321, 7, 17, 0, 0, 5321, 5322, 7, 19, 0, 0, 5322, 5323, 7, 7, 0, 0, 5323, 1054, 1, 0, 0, 0, 5324, 5325, 7, 5, 0, 0, 5325, 5326, 7, 9, 0, 0, 5326, 5327, 7, 9, 0, 0, 5327, 5328, 7, 10, 0, 0, 5328, 5329, 7, 13, 0, 0, 5329, 5330, 7, 16, 0, 0, 5330, 1056, 1, 0, 0, 0, 5331, 5332, 7, 6, 0, 0, 5332, 5333, 7, 19, 0, 0, 5333, 5334, 7, 19, 0, 0, 5334, 5335, 7, 24, 0, 0, 5335, 1058, 1, 0, 0, 0, 5336, 5337, 7, 19, 0, 0, 5337, 5338, 7, 24, 0, 0, 5338, 5339, 7, 10, 0, 0, 5339, 5340, 7, 7, 0, 0, 5340, 1060, 1, 0, 0, 0, 5341, 5342, 7, 5, 0, 0, 5342, 5343, 7, 18, 0, 0, 5343, 5344, 7, 9, 0, 0, 5344, 1062, 1, 0, 0, 0, 5345, 5346, 7, 14, 0, 0, 5346, 5347, 7, 18, 0, 0, 5347, 5348, 7, 13, 0, 0, 5348, 5349, 7, 16, 0, 0, 5349, 1064, 1, 0, 0, 0, 5350, 5351, 7, 14, 0, 0, 5351, 5352, 7, 10, 0, 0, 5352, 5353, 7, 17, 0, 0, 5353, 5354, 7, 6, 0, 0, 5354, 1066, 1, 0, 0, 0, 5355, 5356, 7, 14, 0, 0, 5356, 5357, 7, 10, 0, 0, 5357, 5358, 7, 17, 0, 0, 5358, 5359, 7, 6, 0, 0, 5359, 5360, 7, 17, 0, 0, 5360, 5361, 7, 7, 0, 0, 5361, 5362, 7, 23, 0, 0, 5362, 1068, 1, 0, 0, 0, 5363, 5364, 7, 12, 0, 0, 5364, 5365, 7, 10, 0, 0, 5365, 5366, 7, 23, 0, 0, 5366, 5367, 7, 13, 0, 0, 5367, 5368, 7, 10, 0, 0, 5368, 5369, 7, 10, 0, 0, 5369, 5370, 7, 9, 0, 0, 5370, 1070, 1, 0, 0, 0, 5371, 5372, 7, 12, 0, 0, 5372, 5373, 7, 17, 0, 0, 5373, 5374, 7, 27, 0, 0, 5374, 1072, 1, 0, 0, 0, 5375, 5376, 7, 10, 0, 0, 5376, 5377, 7, 26, 0, 0, 5377, 5378, 7, 24, 0, 0, 5378, 1074, 1, 0, 0, 0, 5379, 5380, 7, 25, 0, 0, 5380, 5381, 7, 5, 0, 0, 5381, 5382, 7, 14, 0, 0, 5382, 5383, 7, 16, 0, 0, 5383, 5384, 7, 19, 0, 0, 5384, 5385, 7, 13, 0, 0, 5385, 5386, 7, 17, 0, 0, 5386, 5387, 7, 5, 0, 0, 5387, 5388, 7, 6, 0, 0, 5388, 1076, 1, 0, 0, 0, 5389, 5390, 7, 25, 0, 0, 5390, 5391, 7, 6, 0, 0, 5391, 5392, 7, 19, 0, 0, 5392, 5393, 7, 19, 0, 0, 5393, 5394, 7, 13, 0, 0, 5394, 1078, 1, 0, 0, 0, 5395, 5396, 7, 23, 0, 0, 5396, 5397, 7, 14, 0, 0, 5397, 5398, 7, 12, 0, 0, 5398, 1080, 1, 0, 0, 0, 5399, 5400, 7, 6, 0, 0, 5400, 5401, 7, 14, 0, 0, 5401, 5402, 7, 15, 0, 0, 5402, 1082, 1, 0, 0, 0, 5403, 5404, 7, 6, 0, 0, 5404, 5405, 7, 7, 0, 0, 5405, 1084, 1, 0, 0, 0, 5406, 5407, 7, 6, 0, 0, 5407, 5408, 7, 19, 0, 0, 5408, 5409, 7, 23, 0, 0, 5409, 5410, 5, 49, 0, 0, 5410, 5411, 5, 48, 0, 0, 5411, 1086, 1, 0, 0, 0, 5412, 5413, 7, 15, 0, 0, 5413, 5414, 7, 17, 0, 0, 5414, 5415, 7, 7, 0, 0, 5415, 5416, 5, 95, 0, 0, 5416, 5417, 7, 9, 0, 0, 5417, 5418, 7, 14, 0, 0, 5418, 5419, 7, 5, 0, 0, 5419, 5420, 7, 6, 0, 0, 5420, 5421, 7, 10, 0, 0, 5421, 1088, 1, 0, 0, 0, 5422, 5423, 7, 15, 0, 0, 5423, 5424, 7, 19, 0, 0, 5424, 5425, 7, 12, 0, 0, 5425, 1090, 1, 0, 0, 0, 5426, 5427, 7, 24, 0, 0, 5427, 5428, 7, 17, 0, 0, 5428, 1092, 1, 0, 0, 0, 5429, 5430, 7, 24, 0, 0, 5430, 5431, 7, 19, 0, 0, 5431, 5432, 7, 28, 0, 0, 5432, 5433, 7, 10, 0, 0, 5433, 5434, 7, 13, 0, 0, 5434, 1094, 1, 0, 0, 0, 5435, 5436, 7, 13, 0, 0, 5436, 5437, 7, 5, 0, 0, 5437, 5438, 7, 12, 0, 0, 5438, 5439, 7, 17, 0, 0, 5439, 5440, 7, 5, 0, 0, 5440, 5441, 7, 7, 0, 0, 5441, 5442, 7, 9, 0, 0, 5442, 1096, 1, 0, 0, 0, 5443, 5444, 7, 13, 0, 0, 5444, 5445, 7, 19, 0, 0, 5445, 5446, 7, 22, 0, 0, 5446, 5447, 7, 7, 0, 0, 5447, 5448, 7, 12, 0, 0, 5448, 1098, 1, 0, 0, 0, 5449, 5450, 7, 9, 0, 0, 5450, 5451, 7, 14, 0, 0, 5451, 5452, 7, 5, 0, 0, 5452, 5453, 7, 6, 0, 0, 5453, 5454, 7, 10, 0, 0, 5454, 1100, 1, 0, 0, 0, 5455, 5456, 7, 9, 0, 0, 5456, 5457, 7, 17, 0, 0, 5457, 5458, 7, 23, 0, 0, 5458, 5459, 7, 7, 0, 0, 5459, 1102, 1, 0, 0, 0, 5460, 5461, 7, 9, 0, 0, 5461, 5462, 7, 29, 0, 0, 5462, 5463, 7, 13, 0, 0, 5463, 5464, 7, 16, 0, 0, 5464, 1104, 1, 0, 0, 0, 5465, 5466, 7, 16, 0, 0, 5466, 5467, 7, 13, 0, 0, 5467, 5468, 7, 17, 0, 0, 5468, 5469, 7, 15, 0, 0, 5469, 5470, 5, 95, 0, 0, 5470, 5471, 7, 9, 0, 0, 5471, 5472, 7, 14, 0, 0, 5472, 5473, 7, 5, 0, 0, 5473, 5474, 7, 6, 0, 0, 5474, 5475, 7, 10, 0, 0, 5475, 1106, 1, 0, 0, 0, 5476, 5477, 7, 16, 0, 0, 5477, 5478, 7, 13, 0, 0, 5478, 5479, 7, 22, 0, 0, 5479, 5480, 7, 7, 0, 0, 5480, 5481, 7, 14, 0, 0, 5481, 1108, 1, 0, 0, 0, 5482, 5483, 7, 28, 0, 0, 5483, 5484, 7, 17, 0, 0, 5484, 5485, 7, 12, 0, 0, 5485, 5486, 7, 16, 0, 0, 5486, 5487, 7, 20, 0, 0, 5487, 5488, 5, 95, 0, 0, 5488, 5489, 7, 18, 0, 0, 5489, 5490, 7, 22, 0, 0, 5490, 5491, 7, 14, 0, 0, 5491, 5492, 7, 21, 0, 0, 5492, 5493, 7, 10, 0, 0, 5493, 5494, 7, 16, 0, 0, 5494, 1110, 1, 0, 0, 0, 5495, 5496, 7, 13, 0, 0, 5496, 5497, 7, 5, 0, 0, 5497, 5498, 7, 7, 0, 0, 5498, 5499, 7, 12, 0, 0, 5499, 5500, 7, 19, 0, 0, 5500, 5501, 7, 15, 0, 0, 5501, 1112, 1, 0, 0, 0, 5502, 5503, 7, 9, 0, 0, 5503, 5504, 7, 10, 0, 0, 5504, 5505, 7, 16, 0, 0, 5505, 5506, 7, 9, 0, 0, 5506, 5507, 7, 10, 0, 0, 5507, 5508, 7, 10, 0, 0, 5508, 5509, 7, 12, 0, 0, 5509, 1114, 1, 0, 0, 0, 5510, 5511, 7, 5, 0, 0, 5511, 5512, 7, 14, 0, 0, 5512, 5513, 7, 19, 0, 0, 5513, 5514, 7, 9, 0, 0, 5514, 1116, 1, 0, 0, 0, 5515, 5516, 7, 5, 0, 0, 5516, 5517, 7, 14, 0, 0, 5517, 5518, 7, 19, 0, 0, 5518, 5519, 7, 9, 0, 0, 5519, 5520, 7, 12, 0, 0, 5520, 1118, 1, 0, 0, 0, 5521, 5522, 7, 5, 0, 0, 5522, 5523, 7, 9, 0, 0, 5523, 5524, 7, 17, 0, 0, 5524, 5525, 7, 7, 0, 0, 5525, 1120, 1, 0, 0, 0, 5526, 5527, 7, 5, 0, 0, 5527, 5528, 7, 9, 0, 0, 5528, 5529, 7, 17, 0, 0, 5529, 5530, 7, 7, 0, 0, 5530, 5531, 7, 12, 0, 0, 5531, 1122, 1, 0, 0, 0, 5532, 5533, 7, 5, 0, 0, 5533, 5534, 7, 16, 0, 0, 5534, 5535, 7, 5, 0, 0, 5535, 5536, 7, 7, 0, 0, 5536, 1124, 1, 0, 0, 0, 5537, 5538, 7, 5, 0, 0, 5538, 5539, 7, 16, 0, 0, 5539, 5540, 7, 5, 0, 0, 5540, 5541, 7, 7, 0, 0, 5541, 5542, 7, 12, 0, 0, 5542, 1126, 1, 0, 0, 0, 5543, 5544, 7, 5, 0, 0, 5544, 5545, 7, 16, 0, 0, 5545, 5546, 7, 5, 0, 0, 5546, 5547, 7, 7, 0, 0, 5547, 5548, 5, 50, 0, 0, 5548, 1128, 1, 0, 0, 0, 5549, 5550, 7, 5, 0, 0, 5550, 5551, 7, 16, 0, 0, 5551, 5552, 7, 5, 0, 0, 5552, 5553, 7, 7, 0, 0, 5553, 5554, 5, 50, 0, 0, 5554, 5555, 7, 12, 0, 0, 5555, 1130, 1, 0, 0, 0, 5556, 5557, 7, 14, 0, 0, 5557, 5558, 7, 19, 0, 0, 5558, 5559, 7, 9, 0, 0, 5559, 1132, 1, 0, 0, 0, 5560, 5561, 7, 14, 0, 0, 5561, 5562, 7, 19, 0, 0, 5562, 5563, 7, 9, 0, 0, 5563, 5564, 7, 12, 0, 0, 5564, 1134, 1, 0, 0, 0, 5565, 5566, 7, 14, 0, 0, 5566, 5567, 7, 19, 0, 0, 5567, 5568, 7, 16, 0, 0, 5568, 1136, 1, 0, 0, 0, 5569, 5570, 7, 14, 0, 0, 5570, 5571, 7, 19, 0, 0, 5571, 5572, 7, 16, 0, 0, 5572, 5573, 7, 12, 0, 0, 5573, 1138, 1, 0, 0, 0, 5574, 5575, 7, 9, 0, 0, 5575, 5576, 7, 17, 0, 0, 5576, 5577, 7, 7, 0, 0, 5577, 1140, 1, 0, 0, 0, 5578, 5579, 7, 9, 0, 0, 5579, 5580, 7, 17, 0, 0, 5580, 5581, 7, 7, 0, 0, 5581, 5582, 7, 12, 0, 0, 5582, 1142, 1, 0, 0, 0, 5583, 5584, 7, 16, 0, 0, 5584, 5585, 7, 5, 0, 0, 5585, 5586, 7, 7, 0, 0, 5586, 1144, 1, 0, 0, 0, 5587, 5588, 7, 16, 0, 0, 5588, 5589, 7, 5, 0, 0, 5589, 5590, 7, 7, 0, 0, 5590, 5591, 7, 12, 0, 0, 5591, 1146, 1, 0, 0, 0, 5592, 5593, 7, 9, 0, 0, 5593, 5594, 7, 17, 0, 0, 5594, 5595, 7, 7, 0, 0, 5595, 5596, 7, 20, 0, 0, 5596, 1148, 1, 0, 0, 0, 5597, 5598, 7, 14, 0, 0, 5598, 5599, 7, 19, 0, 0, 5599, 5600, 7, 9, 0, 0, 5600, 5601, 7, 20, 0, 0, 5601, 1150, 1, 0, 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, 1152, 1, 0, 0, 0, 5607, 5608, 7, 5, 0, 0, 5608, 5609, 7, 9, 0, 0, 5609, 5610, 7, 17, 0, 0, 5610, 5611, 7, 7, 0, 0, 5611, 5612, 7, 20, 0, 0, 5612, 1154, 1, 0, 0, 0, 5613, 5614, 7, 5, 0, 0, 5614, 5615, 7, 14, 0, 0, 5615, 5616, 7, 19, 0, 0, 5616, 5617, 7, 9, 0, 0, 5617, 5618, 7, 20, 0, 0, 5618, 1156, 1, 0, 0, 0, 5619, 5620, 7, 5, 0, 0, 5620, 5621, 7, 16, 0, 0, 5621, 5622, 7, 5, 0, 0, 5622, 5623, 7, 7, 0, 0, 5623, 5624, 7, 20, 0, 0, 5624, 1158, 1, 0, 0, 0, 5625, 5626, 7, 18, 0, 0, 5626, 5627, 7, 17, 0, 0, 5627, 5628, 7, 16, 0, 0, 5628, 5629, 5, 95, 0, 0, 5629, 5630, 7, 6, 0, 0, 5630, 5631, 7, 10, 0, 0, 5631, 5632, 7, 7, 0, 0, 5632, 5633, 7, 23, 0, 0, 5633, 5634, 7, 16, 0, 0, 5634, 5635, 7, 20, 0, 0, 5635, 1160, 1, 0, 0, 0, 5636, 5637, 7, 14, 0, 0, 5637, 5638, 7, 20, 0, 0, 5638, 5639, 7, 5, 0, 0, 5639, 5640, 7, 13, 0, 0, 5640, 5641, 5, 95, 0, 0, 5641, 5642, 7, 6, 0, 0, 5642, 5643, 7, 10, 0, 0, 5643, 5644, 7, 7, 0, 0, 5644, 5645, 7, 23, 0, 0, 5645, 5646, 7, 16, 0, 0, 5646, 5647, 7, 20, 0, 0, 5647, 1162, 1, 0, 0, 0, 5648, 5649, 7, 14, 0, 0, 5649, 5650, 7, 20, 0, 0, 5650, 5651, 7, 5, 0, 0, 5651, 5652, 7, 13, 0, 0, 5652, 5653, 7, 5, 0, 0, 5653, 5654, 7, 14, 0, 0, 5654, 5655, 7, 16, 0, 0, 5655, 5656, 7, 10, 0, 0, 5656, 5657, 7, 13, 0, 0, 5657, 5658, 5, 95, 0, 0, 5658, 5659, 7, 6, 0, 0, 5659, 5660, 7, 10, 0, 0, 5660, 5661, 7, 7, 0, 0, 5661, 5662, 7, 23, 0, 0, 5662, 5663, 7, 16, 0, 0, 5663, 5664, 7, 20, 0, 0, 5664, 1164, 1, 0, 0, 0, 5665, 5666, 7, 6, 0, 0, 5666, 5667, 7, 19, 0, 0, 5667, 5668, 7, 28, 0, 0, 5668, 5669, 7, 10, 0, 0, 5669, 5670, 7, 13, 0, 0, 5670, 1166, 1, 0, 0, 0, 5671, 5672, 7, 19, 0, 0, 5672, 5673, 7, 14, 0, 0, 5673, 5674, 7, 16, 0, 0, 5674, 5675, 7, 10, 0, 0, 5675, 5676, 7, 16, 0, 0, 5676, 5677, 5, 95, 0, 0, 5677, 5678, 7, 6, 0, 0, 5678, 5679, 7, 10, 0, 0, 5679, 5680, 7, 7, 0, 0, 5680, 5681, 7, 23, 0, 0, 5681, 5682, 7, 16, 0, 0, 5682, 5683, 7, 20, 0, 0, 5683, 1168, 1, 0, 0, 0, 5684, 5685, 7, 22, 0, 0, 5685, 5686, 7, 24, 0, 0, 5686, 5687, 7, 24, 0, 0, 5687, 5688, 7, 10, 0, 0, 5688, 5689, 7, 13, 0, 0, 5689, 1170, 1, 0, 0, 0, 5690, 5691, 7, 5, 0, 0, 5691, 5692, 7, 9, 0, 0, 5692, 5693, 7, 14, 0, 0, 5693, 5694, 7, 17, 0, 0, 5694, 5695, 7, 17, 0, 0, 5695, 1172, 1, 0, 0, 0, 5696, 5697, 7, 18, 0, 0, 5697, 5698, 7, 16, 0, 0, 5698, 5699, 7, 13, 0, 0, 5699, 5700, 7, 17, 0, 0, 5700, 5701, 7, 15, 0, 0, 5701, 1174, 1, 0, 0, 0, 5702, 5703, 7, 14, 0, 0, 5703, 5704, 7, 20, 0, 0, 5704, 5705, 7, 13, 0, 0, 5705, 1176, 1, 0, 0, 0, 5706, 5707, 7, 14, 0, 0, 5707, 5708, 7, 19, 0, 0, 5708, 5709, 7, 7, 0, 0, 5709, 5710, 7, 14, 0, 0, 5710, 5711, 7, 5, 0, 0, 5711, 5712, 7, 16, 0, 0, 5712, 1178, 1, 0, 0, 0, 5713, 5714, 7, 14, 0, 0, 5714, 5715, 7, 19, 0, 0, 5715, 5716, 7, 7, 0, 0, 5716, 5717, 7, 14, 0, 0, 5717, 5718, 7, 5, 0, 0, 5718, 5719, 7, 16, 0, 0, 5719, 5720, 5, 95, 0, 0, 5720, 5721, 7, 28, 0, 0, 5721, 5722, 7, 9, 0, 0, 5722, 1180, 1, 0, 0, 0, 5723, 5724, 7, 25, 0, 0, 5724, 5725, 7, 19, 0, 0, 5725, 5726, 7, 13, 0, 0, 5726, 5727, 7, 15, 0, 0, 5727, 5728, 7, 5, 0, 0, 5728, 5729, 7, 16, 0, 0, 5729, 1182, 1, 0, 0, 0, 5730, 5731, 7, 17, 0, 0, 5731, 5732, 7, 7, 0, 0, 5732, 5733, 7, 17, 0, 0, 5733, 5734, 7, 16, 0, 0, 5734, 5735, 7, 14, 0, 0, 5735, 5736, 7, 5, 0, 0, 5736, 5737, 7, 24, 0, 0, 5737, 1184, 1, 0, 0, 0, 5738, 5739, 7, 6, 0, 0, 5739, 5740, 7, 10, 0, 0, 5740, 5741, 7, 7, 0, 0, 5741, 5742, 7, 23, 0, 0, 5742, 5743, 7, 16, 0, 0, 5743, 5744, 7, 20, 0, 0, 5744, 1186, 1, 0, 0, 0, 5745, 5746, 7, 6, 0, 0, 5746, 5747, 7, 24, 0, 0, 5747, 5748, 7, 5, 0, 0, 5748, 5749, 7, 12, 0, 0, 5749, 1188, 1, 0, 0, 0, 5750, 5751, 7, 6, 0, 0, 5751, 5752, 7, 16, 0, 0, 5752, 5753, 7, 13, 0, 0, 5753, 5754, 7, 17, 0, 0, 5754, 5755, 7, 15, 0, 0, 5755, 1190, 1, 0, 0, 0, 5756, 5757, 7, 15, 0, 0, 5757, 5758, 7, 12, 0, 0, 5758, 5759, 5, 53, 0, 0, 5759, 1192, 1, 0, 0, 0, 5760, 5761, 7, 24, 0, 0, 5761, 5762, 7, 5, 0, 0, 5762, 5763, 7, 13, 0, 0, 5763, 5764, 7, 9, 0, 0, 5764, 5765, 7, 10, 0, 0, 5765, 5766, 5, 95, 0, 0, 5766, 5767, 7, 17, 0, 0, 5767, 5768, 7, 12, 0, 0, 5768, 5769, 7, 10, 0, 0, 5769, 5770, 7, 7, 0, 0, 5770, 5771, 7, 16, 0, 0, 5771, 1194, 1, 0, 0, 0, 5772, 5773, 7, 24, 0, 0, 5773, 5774, 7, 23, 0, 0, 5774, 5775, 5, 95, 0, 0, 5775, 5776, 7, 14, 0, 0, 5776, 5777, 7, 6, 0, 0, 5777, 5778, 7, 17, 0, 0, 5778, 5779, 7, 10, 0, 0, 5779, 5780, 7, 7, 0, 0, 5780, 5781, 7, 16, 0, 0, 5781, 5782, 5, 95, 0, 0, 5782, 5783, 7, 10, 0, 0, 5783, 5784, 7, 7, 0, 0, 5784, 5785, 7, 14, 0, 0, 5785, 5786, 7, 19, 0, 0, 5786, 5787, 7, 12, 0, 0, 5787, 5788, 7, 17, 0, 0, 5788, 5789, 7, 7, 0, 0, 5789, 5790, 7, 23, 0, 0, 5790, 1196, 1, 0, 0, 0, 5791, 5792, 7, 29, 0, 0, 5792, 5793, 7, 22, 0, 0, 5793, 5794, 7, 19, 0, 0, 5794, 5795, 7, 16, 0, 0, 5795, 5796, 7, 10, 0, 0, 5796, 5797, 5, 95, 0, 0, 5797, 5798, 7, 17, 0, 0, 5798, 5799, 7, 12, 0, 0, 5799, 5800, 7, 10, 0, 0, 5800, 5801, 7, 7, 0, 0, 5801, 5802, 7, 16, 0, 0, 5802, 1198, 1, 0, 0, 0, 5803, 5804, 7, 29, 0, 0, 5804, 5805, 7, 22, 0, 0, 5805, 5806, 7, 19, 0, 0, 5806, 5807, 7, 16, 0, 0, 5807, 5808, 7, 10, 0, 0, 5808, 5809, 5, 95, 0, 0, 5809, 5810, 7, 6, 0, 0, 5810, 5811, 7, 17, 0, 0, 5811, 5812, 7, 16, 0, 0, 5812, 5813, 7, 10, 0, 0, 5813, 5814, 7, 13, 0, 0, 5814, 5815, 7, 5, 0, 0, 5815, 5816, 7, 6, 0, 0, 5816, 1200, 1, 0, 0, 0, 5817, 5818, 7, 29, 0, 0, 5818, 5819, 7, 22, 0, 0, 5819, 5820, 7, 19, 0, 0, 5820, 5821, 7, 16, 0, 0, 5821, 5822, 7, 10, 0, 0, 5822, 5823, 5, 95, 0, 0, 5823, 5824, 7, 7, 0, 0, 5824, 5825, 7, 22, 0, 0, 5825, 5826, 7, 6, 0, 0, 5826, 5827, 7, 6, 0, 0, 5827, 5828, 7, 5, 0, 0, 5828, 5829, 7, 18, 0, 0, 5829, 5830, 7, 6, 0, 0, 5830, 5831, 7, 10, 0, 0, 5831, 1202, 1, 0, 0, 0, 5832, 5833, 7, 13, 0, 0, 5833, 5834, 7, 10, 0, 0, 5834, 5835, 7, 23, 0, 0, 5835, 5836, 7, 10, 0, 0, 5836, 5837, 7, 26, 0, 0, 5837, 5838, 7, 24, 0, 0, 5838, 5839, 5, 95, 0, 0, 5839, 5840, 7, 14, 0, 0, 5840, 5841, 7, 19, 0, 0, 5841, 5842, 7, 22, 0, 0, 5842, 5843, 7, 7, 0, 0, 5843, 5844, 7, 16, 0, 0, 5844, 1204, 1, 0, 0, 0, 5845, 5846, 7, 13, 0, 0, 5846, 5847, 7, 10, 0, 0, 5847, 5848, 7, 23, 0, 0, 5848, 5849, 7, 10, 0, 0, 5849, 5850, 7, 26, 0, 0, 5850, 5851, 7, 24, 0, 0, 5851, 5852, 5, 95, 0, 0, 5852, 5853, 7, 17, 0, 0, 5853, 5854, 7, 7, 0, 0, 5854, 5855, 7, 9, 0, 0, 5855, 5856, 7, 16, 0, 0, 5856, 5857, 7, 13, 0, 0, 5857, 1206, 1, 0, 0, 0, 5858, 5859, 7, 13, 0, 0, 5859, 5860, 7, 10, 0, 0, 5860, 5861, 7, 23, 0, 0, 5861, 5862, 7, 10, 0, 0, 5862, 5863, 7, 26, 0, 0, 5863, 5864, 7, 24, 0, 0, 5864, 5865, 5, 95, 0, 0, 5865, 5866, 7, 6, 0, 0, 5866, 5867, 7, 17, 0, 0, 5867, 5868, 7, 21, 0, 0, 5868, 5869, 7, 10, 0, 0, 5869, 1208, 1, 0, 0, 0, 5870, 5871, 7, 13, 0, 0, 5871, 5872, 7, 10, 0, 0, 5872, 5873, 7, 23, 0, 0, 5873, 5874, 7, 10, 0, 0, 5874, 5875, 7, 26, 0, 0, 5875, 5876, 7, 24, 0, 0, 5876, 5877, 5, 95, 0, 0, 5877, 5878, 7, 15, 0, 0, 5878, 5879, 7, 5, 0, 0, 5879, 5880, 7, 16, 0, 0, 5880, 5881, 7, 14, 0, 0, 5881, 5882, 7, 20, 0, 0, 5882, 1210, 1, 0, 0, 0, 5883, 5884, 7, 13, 0, 0, 5884, 5885, 7, 10, 0, 0, 5885, 5886, 7, 23, 0, 0, 5886, 5887, 7, 10, 0, 0, 5887, 5888, 7, 26, 0, 0, 5888, 5889, 7, 24, 0, 0, 5889, 5890, 5, 95, 0, 0, 5890, 5891, 7, 15, 0, 0, 5891, 5892, 7, 5, 0, 0, 5892, 5893, 7, 16, 0, 0, 5893, 5894, 7, 14, 0, 0, 5894, 5895, 7, 20, 0, 0, 5895, 5896, 7, 10, 0, 0, 5896, 5897, 7, 9, 0, 0, 5897, 1212, 1, 0, 0, 0, 5898, 5899, 7, 13, 0, 0, 5899, 5900, 7, 10, 0, 0, 5900, 5901, 7, 23, 0, 0, 5901, 5902, 7, 10, 0, 0, 5902, 5903, 7, 26, 0, 0, 5903, 5904, 7, 24, 0, 0, 5904, 5905, 5, 95, 0, 0, 5905, 5906, 7, 13, 0, 0, 5906, 5907, 7, 10, 0, 0, 5907, 5908, 7, 24, 0, 0, 5908, 5909, 7, 6, 0, 0, 5909, 5910, 7, 5, 0, 0, 5910, 5911, 7, 14, 0, 0, 5911, 5912, 7, 10, 0, 0, 5912, 1214, 1, 0, 0, 0, 5913, 5914, 7, 13, 0, 0, 5914, 5915, 7, 10, 0, 0, 5915, 5916, 7, 23, 0, 0, 5916, 5917, 7, 10, 0, 0, 5917, 5918, 7, 26, 0, 0, 5918, 5919, 7, 24, 0, 0, 5919, 5920, 5, 95, 0, 0, 5920, 5921, 7, 9, 0, 0, 5921, 5922, 7, 24, 0, 0, 5922, 5923, 7, 6, 0, 0, 5923, 5924, 7, 17, 0, 0, 5924, 5925, 7, 16, 0, 0, 5925, 5926, 5, 95, 0, 0, 5926, 5927, 7, 16, 0, 0, 5927, 5928, 7, 19, 0, 0, 5928, 5929, 5, 95, 0, 0, 5929, 5930, 7, 5, 0, 0, 5930, 5931, 7, 13, 0, 0, 5931, 5932, 7, 13, 0, 0, 5932, 5933, 7, 5, 0, 0, 5933, 5934, 7, 8, 0, 0, 5934, 1216, 1, 0, 0, 0, 5935, 5936, 7, 13, 0, 0, 5936, 5937, 7, 10, 0, 0, 5937, 5938, 7, 23, 0, 0, 5938, 5939, 7, 10, 0, 0, 5939, 5940, 7, 26, 0, 0, 5940, 5941, 7, 24, 0, 0, 5941, 5942, 5, 95, 0, 0, 5942, 5943, 7, 9, 0, 0, 5943, 5944, 7, 24, 0, 0, 5944, 5945, 7, 6, 0, 0, 5945, 5946, 7, 17, 0, 0, 5946, 5947, 7, 16, 0, 0, 5947, 5948, 5, 95, 0, 0, 5948, 5949, 7, 16, 0, 0, 5949, 5950, 7, 19, 0, 0, 5950, 5951, 5, 95, 0, 0, 5951, 5952, 7, 16, 0, 0, 5952, 5953, 7, 5, 0, 0, 5953, 5954, 7, 18, 0, 0, 5954, 5955, 7, 6, 0, 0, 5955, 5956, 7, 10, 0, 0, 5956, 1218, 1, 0, 0, 0, 5957, 5958, 7, 13, 0, 0, 5958, 5959, 7, 10, 0, 0, 5959, 5960, 7, 23, 0, 0, 5960, 5961, 7, 10, 0, 0, 5961, 5962, 7, 26, 0, 0, 5962, 5963, 7, 24, 0, 0, 5963, 5964, 5, 95, 0, 0, 5964, 5965, 7, 9, 0, 0, 5965, 5966, 7, 22, 0, 0, 5966, 5967, 7, 18, 0, 0, 5967, 5968, 7, 9, 0, 0, 5968, 5969, 7, 16, 0, 0, 5969, 5970, 7, 13, 0, 0, 5970, 1220, 1, 0, 0, 0, 5971, 5972, 7, 13, 0, 0, 5972, 5973, 7, 10, 0, 0, 5973, 5974, 7, 24, 0, 0, 5974, 5975, 7, 10, 0, 0, 5975, 5976, 7, 5, 0, 0, 5976, 5977, 7, 16, 0, 0, 5977, 1222, 1, 0, 0, 0, 5978, 5979, 7, 13, 0, 0, 5979, 5980, 7, 24, 0, 0, 5980, 5981, 7, 5, 0, 0, 5981, 5982, 7, 12, 0, 0, 5982, 1224, 1, 0, 0, 0, 5983, 5984, 7, 13, 0, 0, 5984, 5985, 7, 16, 0, 0, 5985, 5986, 7, 13, 0, 0, 5986, 5987, 7, 17, 0, 0, 5987, 5988, 7, 15, 0, 0, 5988, 1226, 1, 0, 0, 0, 5989, 5990, 7, 9, 0, 0, 5990, 5991, 7, 24, 0, 0, 5991, 5992, 7, 6, 0, 0, 5992, 5993, 7, 17, 0, 0, 5993, 5994, 7, 16, 0, 0, 5994, 5995, 5, 95, 0, 0, 5995, 5996, 7, 24, 0, 0, 5996, 5997, 7, 5, 0, 0, 5997, 5998, 7, 13, 0, 0, 5998, 5999, 7, 16, 0, 0, 5999, 1228, 1, 0, 0, 0, 6000, 6001, 7, 9, 0, 0, 6001, 6002, 7, 16, 0, 0, 6002, 6003, 7, 5, 0, 0, 6003, 6004, 7, 13, 0, 0, 6004, 6005, 7, 16, 0, 0, 6005, 6006, 7, 9, 0, 0, 6006, 6007, 5, 95, 0, 0, 6007, 6008, 7, 28, 0, 0, 6008, 6009, 7, 17, 0, 0, 6009, 6010, 7, 16, 0, 0, 6010, 6011, 7, 20, 0, 0, 6011, 1230, 1, 0, 0, 0, 6012, 6013, 7, 9, 0, 0, 6013, 6014, 7, 16, 0, 0, 6014, 6015, 7, 13, 0, 0, 6015, 6016, 7, 17, 0, 0, 6016, 6017, 7, 7, 0, 0, 6017, 6018, 7, 23, 0, 0, 6018, 6019, 5, 95, 0, 0, 6019, 6020, 7, 16, 0, 0, 6020, 6021, 7, 19, 0, 0, 6021, 6022, 5, 95, 0, 0, 6022, 6023, 7, 5, 0, 0, 6023, 6024, 7, 13, 0, 0, 6024, 6025, 7, 13, 0, 0, 6025, 6026, 7, 5, 0, 0, 6026, 6027, 7, 8, 0, 0, 6027, 1232, 1, 0, 0, 0, 6028, 6029, 7, 9, 0, 0, 6029, 6030, 7, 16, 0, 0, 6030, 6031, 7, 13, 0, 0, 6031, 6032, 7, 17, 0, 0, 6032, 6033, 7, 7, 0, 0, 6033, 6034, 7, 23, 0, 0, 6034, 6035, 5, 95, 0, 0, 6035, 6036, 7, 16, 0, 0, 6036, 6037, 7, 19, 0, 0, 6037, 6038, 5, 95, 0, 0, 6038, 6039, 7, 16, 0, 0, 6039, 6040, 7, 5, 0, 0, 6040, 6041, 7, 18, 0, 0, 6041, 6042, 7, 6, 0, 0, 6042, 6043, 7, 10, 0, 0, 6043, 1234, 1, 0, 0, 0, 6044, 6045, 7, 9, 0, 0, 6045, 6046, 7, 16, 0, 0, 6046, 6047, 7, 13, 0, 0, 6047, 6048, 7, 24, 0, 0, 6048, 6049, 7, 19, 0, 0, 6049, 6050, 7, 9, 0, 0, 6050, 1236, 1, 0, 0, 0, 6051, 6052, 7, 9, 0, 0, 6052, 6053, 7, 22, 0, 0, 6053, 6054, 7, 18, 0, 0, 6054, 6055, 7, 9, 0, 0, 6055, 6056, 7, 16, 0, 0, 6056, 6057, 7, 13, 0, 0, 6057, 1238, 1, 0, 0, 0, 6058, 6059, 7, 16, 0, 0, 6059, 6060, 7, 19, 0, 0, 6060, 6061, 5, 95, 0, 0, 6061, 6062, 7, 5, 0, 0, 6062, 6063, 7, 9, 0, 0, 6063, 6064, 7, 14, 0, 0, 6064, 6065, 7, 17, 0, 0, 6065, 6066, 7, 17, 0, 0, 6066, 1240, 1, 0, 0, 0, 6067, 6068, 7, 16, 0, 0, 6068, 6069, 7, 19, 0, 0, 6069, 6070, 5, 95, 0, 0, 6070, 6071, 7, 20, 0, 0, 6071, 6072, 7, 10, 0, 0, 6072, 6073, 7, 26, 0, 0, 6073, 1242, 1, 0, 0, 0, 6074, 6075, 7, 16, 0, 0, 6075, 6076, 7, 13, 0, 0, 6076, 6077, 7, 5, 0, 0, 6077, 6078, 7, 7, 0, 0, 6078, 6079, 7, 9, 0, 0, 6079, 6080, 7, 6, 0, 0, 6080, 6081, 7, 5, 0, 0, 6081, 6082, 7, 16, 0, 0, 6082, 6083, 7, 10, 0, 0, 6083, 1244, 1, 0, 0, 0, 6084, 6085, 7, 22, 0, 0, 6085, 6086, 7, 7, 0, 0, 6086, 6087, 7, 17, 0, 0, 6087, 6088, 7, 9, 0, 0, 6088, 6089, 7, 16, 0, 0, 6089, 6090, 7, 13, 0, 0, 6090, 1246, 1, 0, 0, 0, 6091, 6092, 7, 5, 0, 0, 6092, 6093, 7, 23, 0, 0, 6093, 6094, 7, 10, 0, 0, 6094, 1248, 1, 0, 0, 0, 6095, 6096, 7, 14, 0, 0, 6096, 6097, 7, 6, 0, 0, 6097, 6098, 7, 19, 0, 0, 6098, 6099, 7, 14, 0, 0, 6099, 6100, 7, 21, 0, 0, 6100, 6101, 5, 95, 0, 0, 6101, 6102, 7, 16, 0, 0, 6102, 6103, 7, 17, 0, 0, 6103, 6104, 7, 15, 0, 0, 6104, 6105, 7, 10, 0, 0, 6105, 6106, 7, 9, 0, 0, 6106, 6107, 7, 16, 0, 0, 6107, 6108, 7, 5, 0, 0, 6108, 6109, 7, 15, 0, 0, 6109, 6110, 7, 24, 0, 0, 6110, 1250, 1, 0, 0, 0, 6111, 6112, 7, 12, 0, 0, 6112, 6113, 7, 5, 0, 0, 6113, 6114, 7, 16, 0, 0, 6114, 6115, 7, 10, 0, 0, 6115, 6116, 5, 95, 0, 0, 6116, 6117, 7, 18, 0, 0, 6117, 6118, 7, 17, 0, 0, 6118, 6119, 7, 7, 0, 0, 6119, 1252, 1, 0, 0, 0, 6120, 6121, 7, 12, 0, 0, 6121, 6122, 7, 5, 0, 0, 6122, 6123, 7, 16, 0, 0, 6123, 6124, 7, 10, 0, 0, 6124, 6125, 5, 95, 0, 0, 6125, 6126, 7, 24, 0, 0, 6126, 6127, 7, 5, 0, 0, 6127, 6128, 7, 13, 0, 0, 6128, 6129, 7, 16, 0, 0, 6129, 1254, 1, 0, 0, 0, 6130, 6131, 7, 12, 0, 0, 6131, 6132, 7, 5, 0, 0, 6132, 6133, 7, 16, 0, 0, 6133, 6134, 7, 10, 0, 0, 6134, 6135, 5, 95, 0, 0, 6135, 6136, 7, 16, 0, 0, 6136, 6137, 7, 13, 0, 0, 6137, 6138, 7, 22, 0, 0, 6138, 6139, 7, 7, 0, 0, 6139, 6140, 7, 14, 0, 0, 6140, 1256, 1, 0, 0, 0, 6141, 6142, 7, 17, 0, 0, 6142, 6143, 7, 9, 0, 0, 6143, 6144, 7, 25, 0, 0, 6144, 6145, 7, 17, 0, 0, 6145, 6146, 7, 7, 0, 0, 6146, 6147, 7, 17, 0, 0, 6147, 6148, 7, 16, 0, 0, 6148, 6149, 7, 10, 0, 0, 6149, 1258, 1, 0, 0, 0, 6150, 6151, 7, 30, 0, 0, 6151, 6152, 7, 22, 0, 0, 6152, 6153, 7, 9, 0, 0, 6153, 6154, 7, 16, 0, 0, 6154, 6155, 7, 17, 0, 0, 6155, 6156, 7, 25, 0, 0, 6156, 6157, 7, 8, 0, 0, 6157, 6158, 5, 95, 0, 0, 6158, 6159, 7, 12, 0, 0, 6159, 6160, 7, 5, 0, 0, 6160, 6161, 7, 8, 0, 0, 6161, 6162, 7, 9, 0, 0, 6162, 1260, 1, 0, 0, 0, 6163, 6164, 7, 30, 0, 0, 6164, 6165, 7, 22, 0, 0, 6165, 6166, 7, 9, 0, 0, 6166, 6167, 7, 16, 0, 0, 6167, 6168, 7, 17, 0, 0, 6168, 6169, 7, 25, 0, 0, 6169, 6170, 7, 8, 0, 0, 6170, 6171, 5, 95, 0, 0, 6171, 6172, 7, 20, 0, 0, 6172, 6173, 7, 19, 0, 0, 6173, 6174, 7, 22, 0, 0, 6174, 6175, 7, 13, 0, 0, 6175, 6176, 7, 9, 0, 0, 6176, 1262, 1, 0, 0, 0, 6177, 6178, 7, 30, 0, 0, 6178, 6179, 7, 22, 0, 0, 6179, 6180, 7, 9, 0, 0, 6180, 6181, 7, 16, 0, 0, 6181, 6182, 7, 17, 0, 0, 6182, 6183, 7, 25, 0, 0, 6183, 6184, 7, 8, 0, 0, 6184, 6185, 5, 95, 0, 0, 6185, 6186, 7, 17, 0, 0, 6186, 6187, 7, 7, 0, 0, 6187, 6188, 7, 16, 0, 0, 6188, 6189, 7, 10, 0, 0, 6189, 6190, 7, 13, 0, 0, 6190, 6191, 7, 27, 0, 0, 6191, 6192, 7, 5, 0, 0, 6192, 6193, 7, 6, 0, 0, 6193, 1264, 1, 0, 0, 0, 6194, 6195, 7, 15, 0, 0, 6195, 6196, 7, 5, 0, 0, 6196, 6197, 7, 21, 0, 0, 6197, 6198, 7, 10, 0, 0, 6198, 6199, 5, 95, 0, 0, 6199, 6200, 7, 12, 0, 0, 6200, 6201, 7, 5, 0, 0, 6201, 6202, 7, 16, 0, 0, 6202, 6203, 7, 10, 0, 0, 6203, 1266, 1, 0, 0, 0, 6204, 6205, 7, 15, 0, 0, 6205, 6206, 7, 5, 0, 0, 6206, 6207, 7, 21, 0, 0, 6207, 6208, 7, 10, 0, 0, 6208, 6209, 5, 95, 0, 0, 6209, 6210, 7, 17, 0, 0, 6210, 6211, 7, 7, 0, 0, 6211, 6212, 7, 16, 0, 0, 6212, 6213, 7, 10, 0, 0, 6213, 6214, 7, 13, 0, 0, 6214, 6215, 7, 27, 0, 0, 6215, 6216, 7, 5, 0, 0, 6216, 6217, 7, 6, 0, 0, 6217, 1268, 1, 0, 0, 0, 6218, 6219, 7, 15, 0, 0, 6219, 6220, 7, 5, 0, 0, 6220, 6221, 7, 21, 0, 0, 6221, 6222, 7, 10, 0, 0, 6222, 6223, 5, 95, 0, 0, 6223, 6224, 7, 16, 0, 0, 6224, 6225, 7, 17, 0, 0, 6225, 6226, 7, 15, 0, 0, 6226, 6227, 7, 10, 0, 0, 6227, 1270, 1, 0, 0, 0, 6228, 6229, 7, 15, 0, 0, 6229, 6230, 7, 5, 0, 0, 6230, 6231, 7, 21, 0, 0, 6231, 6232, 7, 10, 0, 0, 6232, 6233, 5, 95, 0, 0, 6233, 6234, 7, 16, 0, 0, 6234, 6235, 7, 17, 0, 0, 6235, 6236, 7, 15, 0, 0, 6236, 6237, 7, 10, 0, 0, 6237, 6238, 7, 9, 0, 0, 6238, 6239, 7, 16, 0, 0, 6239, 6240, 7, 5, 0, 0, 6240, 6241, 7, 15, 0, 0, 6241, 6242, 7, 24, 0, 0, 6242, 1272, 1, 0, 0, 0, 6243, 6244, 7, 15, 0, 0, 6244, 6245, 7, 5, 0, 0, 6245, 6246, 7, 21, 0, 0, 6246, 6247, 7, 10, 0, 0, 6247, 6248, 5, 95, 0, 0, 6248, 6249, 7, 16, 0, 0, 6249, 6250, 7, 17, 0, 0, 6250, 6251, 7, 15, 0, 0, 6251, 6252, 7, 10, 0, 0, 6252, 6253, 7, 9, 0, 0, 6253, 6254, 7, 16, 0, 0, 6254, 6255, 7, 5, 0, 0, 6255, 6256, 7, 15, 0, 0, 6256, 6257, 7, 24, 0, 0, 6257, 6258, 7, 16, 0, 0, 6258, 6259, 7, 11, 0, 0, 6259, 1274, 1, 0, 0, 0, 6260, 6261, 7, 7, 0, 0, 6261, 6262, 7, 19, 0, 0, 6262, 6263, 7, 28, 0, 0, 6263, 1276, 1, 0, 0, 0, 6264, 6265, 7, 9, 0, 0, 6265, 6266, 7, 16, 0, 0, 6266, 6267, 7, 5, 0, 0, 6267, 6268, 7, 16, 0, 0, 6268, 6269, 7, 10, 0, 0, 6269, 6270, 7, 15, 0, 0, 6270, 6271, 7, 10, 0, 0, 6271, 6272, 7, 7, 0, 0, 6272, 6273, 7, 16, 0, 0, 6273, 6274, 5, 95, 0, 0, 6274, 6275, 7, 16, 0, 0, 6275, 6276, 7, 17, 0, 0, 6276, 6277, 7, 15, 0, 0, 6277, 6278, 7, 10, 0, 0, 6278, 6279, 7, 9, 0, 0, 6279, 6280, 7, 16, 0, 0, 6280, 6281, 7, 5, 0, 0, 6281, 6282, 7, 15, 0, 0, 6282, 6283, 7, 24, 0, 0, 6283, 1278, 1, 0, 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, 19, 0, 0, 6289, 6290, 7, 25, 0, 0, 6290, 6291, 7, 12, 0, 0, 6291, 6292, 7, 5, 0, 0, 6292, 6293, 7, 8, 0, 0, 6293, 1280, 1, 0, 0, 0, 6294, 6295, 7, 16, 0, 0, 6295, 6296, 7, 13, 0, 0, 6296, 6297, 7, 5, 0, 0, 6297, 6298, 7, 7, 0, 0, 6298, 6299, 7, 9, 0, 0, 6299, 6300, 7, 5, 0, 0, 6300, 6301, 7, 14, 0, 0, 6301, 6302, 7, 16, 0, 0, 6302, 6303, 7, 17, 0, 0, 6303, 6304, 7, 19, 0, 0, 6304, 6305, 7, 7, 0, 0, 6305, 6306, 5, 95, 0, 0, 6306, 6307, 7, 16, 0, 0, 6307, 6308, 7, 17, 0, 0, 6308, 6309, 7, 15, 0, 0, 6309, 6310, 7, 10, 0, 0, 6310, 6311, 7, 9, 0, 0, 6311, 6312, 7, 16, 0, 0, 6312, 6313, 7, 5, 0, 0, 6313, 6314, 7, 15, 0, 0, 6314, 6315, 7, 24, 0, 0, 6315, 1282, 1, 0, 0, 0, 6316, 6317, 7, 16, 0, 0, 6317, 6318, 7, 19, 0, 0, 6318, 6319, 5, 95, 0, 0, 6319, 6320, 7, 16, 0, 0, 6320, 6321, 7, 17, 0, 0, 6321, 6322, 7, 15, 0, 0, 6322, 6323, 7, 10, 0, 0, 6323, 6324, 7, 9, 0, 0, 6324, 6325, 7, 16, 0, 0, 6325, 6326, 7, 5, 0, 0, 6326, 6327, 7, 15, 0, 0, 6327, 6328, 7, 24, 0, 0, 6328, 1284, 1, 0, 0, 0, 6329, 6330, 7, 16, 0, 0, 6330, 6331, 7, 19, 0, 0, 6331, 6332, 5, 95, 0, 0, 6332, 6333, 7, 14, 0, 0, 6333, 6334, 7, 20, 0, 0, 6334, 6335, 7, 5, 0, 0, 6335, 6336, 7, 13, 0, 0, 6336, 1286, 1, 0, 0, 0, 6337, 6338, 7, 16, 0, 0, 6338, 6339, 7, 19, 0, 0, 6339, 6340, 5, 95, 0, 0, 6340, 6341, 7, 12, 0, 0, 6341, 6342, 7, 5, 0, 0, 6342, 6343, 7, 16, 0, 0, 6343, 6344, 7, 10, 0, 0, 6344, 1288, 1, 0, 0, 0, 6345, 6346, 7, 16, 0, 0, 6346, 6347, 7, 19, 0, 0, 6347, 6348, 5, 95, 0, 0, 6348, 6349, 7, 7, 0, 0, 6349, 6350, 7, 22, 0, 0, 6350, 6351, 7, 15, 0, 0, 6351, 6352, 7, 18, 0, 0, 6352, 6353, 7, 10, 0, 0, 6353, 6354, 7, 13, 0, 0, 6354, 1290, 1, 0, 0, 0, 6355, 6359, 3, 1293, 644, 0, 6356, 6358, 3, 1295, 645, 0, 6357, 6356, 1, 0, 0, 0, 6358, 6361, 1, 0, 0, 0, 6359, 6357, 1, 0, 0, 0, 6359, 6360, 1, 0, 0, 0, 6360, 1292, 1, 0, 0, 0, 6361, 6359, 1, 0, 0, 0, 6362, 6369, 7, 31, 0, 0, 6363, 6364, 7, 32, 0, 0, 6364, 6369, 4, 644, 6, 0, 6365, 6366, 7, 33, 0, 0, 6366, 6367, 7, 34, 0, 0, 6367, 6369, 4, 644, 7, 0, 6368, 6362, 1, 0, 0, 0, 6368, 6363, 1, 0, 0, 0, 6368, 6365, 1, 0, 0, 0, 6369, 1294, 1, 0, 0, 0, 6370, 6373, 3, 1297, 646, 0, 6371, 6373, 5, 36, 0, 0, 6372, 6370, 1, 0, 0, 0, 6372, 6371, 1, 0, 0, 0, 6373, 1296, 1, 0, 0, 0, 6374, 6377, 3, 1293, 644, 0, 6375, 6377, 7, 0, 0, 0, 6376, 6374, 1, 0, 0, 0, 6376, 6375, 1, 0, 0, 0, 6377, 1298, 1, 0, 0, 0, 6378, 6379, 3, 1301, 648, 0, 6379, 6380, 5, 34, 0, 0, 6380, 1300, 1, 0, 0, 0, 6381, 6387, 5, 34, 0, 0, 6382, 6383, 5, 34, 0, 0, 6383, 6386, 5, 34, 0, 0, 6384, 6386, 8, 35, 0, 0, 6385, 6382, 1, 0, 0, 0, 6385, 6384, 1, 0, 0, 0, 6386, 6389, 1, 0, 0, 0, 6387, 6385, 1, 0, 0, 0, 6387, 6388, 1, 0, 0, 0, 6388, 1302, 1, 0, 0, 0, 6389, 6387, 1, 0, 0, 0, 6390, 6391, 3, 1305, 650, 0, 6391, 6392, 5, 34, 0, 0, 6392, 1304, 1, 0, 0, 0, 6393, 6399, 5, 34, 0, 0, 6394, 6395, 5, 34, 0, 0, 6395, 6398, 5, 34, 0, 0, 6396, 6398, 8, 36, 0, 0, 6397, 6394, 1, 0, 0, 0, 6397, 6396, 1, 0, 0, 0, 6398, 6401, 1, 0, 0, 0, 6399, 6397, 1, 0, 0, 0, 6399, 6400, 1, 0, 0, 0, 6400, 1306, 1, 0, 0, 0, 6401, 6399, 1, 0, 0, 0, 6402, 6403, 7, 22, 0, 0, 6403, 6404, 5, 38, 0, 0, 6404, 6405, 3, 1299, 647, 0, 6405, 1308, 1, 0, 0, 0, 6406, 6407, 7, 22, 0, 0, 6407, 6408, 5, 38, 0, 0, 6408, 6409, 3, 1301, 648, 0, 6409, 1310, 1, 0, 0, 0, 6410, 6411, 7, 22, 0, 0, 6411, 6412, 5, 38, 0, 0, 6412, 6413, 3, 1303, 649, 0, 6413, 1312, 1, 0, 0, 0, 6414, 6415, 7, 22, 0, 0, 6415, 6416, 5, 38, 0, 0, 6416, 6417, 3, 1305, 650, 0, 6417, 1314, 1, 0, 0, 0, 6418, 6419, 3, 1317, 656, 0, 6419, 6420, 5, 39, 0, 0, 6420, 1316, 1, 0, 0, 0, 6421, 6427, 5, 39, 0, 0, 6422, 6423, 5, 39, 0, 0, 6423, 6426, 5, 39, 0, 0, 6424, 6426, 8, 37, 0, 0, 6425, 6422, 1, 0, 0, 0, 6425, 6424, 1, 0, 0, 0, 6426, 6429, 1, 0, 0, 0, 6427, 6425, 1, 0, 0, 0, 6427, 6428, 1, 0, 0, 0, 6428, 1318, 1, 0, 0, 0, 6429, 6427, 1, 0, 0, 0, 6430, 6431, 7, 10, 0, 0, 6431, 6432, 5, 39, 0, 0, 6432, 6433, 1, 0, 0, 0, 6433, 6434, 6, 657, 2, 0, 6434, 6435, 6, 657, 3, 0, 6435, 1320, 1, 0, 0, 0, 6436, 6437, 3, 1323, 659, 0, 6437, 6438, 5, 39, 0, 0, 6438, 1322, 1, 0, 0, 0, 6439, 6440, 7, 22, 0, 0, 6440, 6441, 5, 38, 0, 0, 6441, 6442, 3, 1317, 656, 0, 6442, 1324, 1, 0, 0, 0, 6443, 6445, 5, 36, 0, 0, 6444, 6446, 3, 1327, 661, 0, 6445, 6444, 1, 0, 0, 0, 6445, 6446, 1, 0, 0, 0, 6446, 6447, 1, 0, 0, 0, 6447, 6448, 5, 36, 0, 0, 6448, 6449, 6, 660, 4, 0, 6449, 6450, 1, 0, 0, 0, 6450, 6451, 6, 660, 5, 0, 6451, 1326, 1, 0, 0, 0, 6452, 6456, 3, 1293, 644, 0, 6453, 6455, 3, 1297, 646, 0, 6454, 6453, 1, 0, 0, 0, 6455, 6458, 1, 0, 0, 0, 6456, 6454, 1, 0, 0, 0, 6456, 6457, 1, 0, 0, 0, 6457, 1328, 1, 0, 0, 0, 6458, 6456, 1, 0, 0, 0, 6459, 6460, 3, 1331, 663, 0, 6460, 6461, 5, 39, 0, 0, 6461, 1330, 1, 0, 0, 0, 6462, 6463, 7, 18, 0, 0, 6463, 6467, 5, 39, 0, 0, 6464, 6466, 7, 38, 0, 0, 6465, 6464, 1, 0, 0, 0, 6466, 6469, 1, 0, 0, 0, 6467, 6465, 1, 0, 0, 0, 6467, 6468, 1, 0, 0, 0, 6468, 1332, 1, 0, 0, 0, 6469, 6467, 1, 0, 0, 0, 6470, 6471, 3, 1335, 665, 0, 6471, 6472, 5, 39, 0, 0, 6472, 1334, 1, 0, 0, 0, 6473, 6474, 7, 18, 0, 0, 6474, 6475, 3, 1317, 656, 0, 6475, 1336, 1, 0, 0, 0, 6476, 6477, 3, 1339, 667, 0, 6477, 6478, 5, 39, 0, 0, 6478, 1338, 1, 0, 0, 0, 6479, 6480, 7, 26, 0, 0, 6480, 6484, 5, 39, 0, 0, 6481, 6483, 7, 39, 0, 0, 6482, 6481, 1, 0, 0, 0, 6483, 6486, 1, 0, 0, 0, 6484, 6482, 1, 0, 0, 0, 6484, 6485, 1, 0, 0, 0, 6485, 1340, 1, 0, 0, 0, 6486, 6484, 1, 0, 0, 0, 6487, 6488, 3, 1343, 669, 0, 6488, 6489, 5, 39, 0, 0, 6489, 1342, 1, 0, 0, 0, 6490, 6491, 7, 26, 0, 0, 6491, 6492, 3, 1317, 656, 0, 6492, 1344, 1, 0, 0, 0, 6493, 6494, 3, 1351, 673, 0, 6494, 1346, 1, 0, 0, 0, 6495, 6496, 3, 1351, 673, 0, 6496, 6497, 5, 46, 0, 0, 6497, 6498, 5, 46, 0, 0, 6498, 6499, 1, 0, 0, 0, 6499, 6500, 6, 671, 6, 0, 6500, 1348, 1, 0, 0, 0, 6501, 6502, 3, 1351, 673, 0, 6502, 6504, 5, 46, 0, 0, 6503, 6505, 3, 1351, 673, 0, 6504, 6503, 1, 0, 0, 0, 6504, 6505, 1, 0, 0, 0, 6505, 6511, 1, 0, 0, 0, 6506, 6508, 7, 10, 0, 0, 6507, 6509, 7, 1, 0, 0, 6508, 6507, 1, 0, 0, 0, 6508, 6509, 1, 0, 0, 0, 6509, 6510, 1, 0, 0, 0, 6510, 6512, 3, 1351, 673, 0, 6511, 6506, 1, 0, 0, 0, 6511, 6512, 1, 0, 0, 0, 6512, 6530, 1, 0, 0, 0, 6513, 6514, 5, 46, 0, 0, 6514, 6520, 3, 1351, 673, 0, 6515, 6517, 7, 10, 0, 0, 6516, 6518, 7, 1, 0, 0, 6517, 6516, 1, 0, 0, 0, 6517, 6518, 1, 0, 0, 0, 6518, 6519, 1, 0, 0, 0, 6519, 6521, 3, 1351, 673, 0, 6520, 6515, 1, 0, 0, 0, 6520, 6521, 1, 0, 0, 0, 6521, 6530, 1, 0, 0, 0, 6522, 6523, 3, 1351, 673, 0, 6523, 6525, 7, 10, 0, 0, 6524, 6526, 7, 1, 0, 0, 6525, 6524, 1, 0, 0, 0, 6525, 6526, 1, 0, 0, 0, 6526, 6527, 1, 0, 0, 0, 6527, 6528, 3, 1351, 673, 0, 6528, 6530, 1, 0, 0, 0, 6529, 6501, 1, 0, 0, 0, 6529, 6513, 1, 0, 0, 0, 6529, 6522, 1, 0, 0, 0, 6530, 1350, 1, 0, 0, 0, 6531, 6533, 7, 0, 0, 0, 6532, 6531, 1, 0, 0, 0, 6533, 6534, 1, 0, 0, 0, 6534, 6532, 1, 0, 0, 0, 6534, 6535, 1, 0, 0, 0, 6535, 1352, 1, 0, 0, 0, 6536, 6537, 5, 58, 0, 0, 6537, 6541, 7, 40, 0, 0, 6538, 6540, 7, 41, 0, 0, 6539, 6538, 1, 0, 0, 0, 6540, 6543, 1, 0, 0, 0, 6541, 6539, 1, 0, 0, 0, 6541, 6542, 1, 0, 0, 0, 6542, 1354, 1, 0, 0, 0, 6543, 6541, 1, 0, 0, 0, 6544, 6545, 5, 58, 0, 0, 6545, 6546, 5, 34, 0, 0, 6546, 6554, 1, 0, 0, 0, 6547, 6548, 5, 92, 0, 0, 6548, 6553, 9, 0, 0, 0, 6549, 6550, 5, 34, 0, 0, 6550, 6553, 5, 34, 0, 0, 6551, 6553, 8, 42, 0, 0, 6552, 6547, 1, 0, 0, 0, 6552, 6549, 1, 0, 0, 0, 6552, 6551, 1, 0, 0, 0, 6553, 6556, 1, 0, 0, 0, 6554, 6552, 1, 0, 0, 0, 6554, 6555, 1, 0, 0, 0, 6555, 6557, 1, 0, 0, 0, 6556, 6554, 1, 0, 0, 0, 6557, 6558, 5, 34, 0, 0, 6558, 1356, 1, 0, 0, 0, 6559, 6561, 7, 43, 0, 0, 6560, 6559, 1, 0, 0, 0, 6561, 6562, 1, 0, 0, 0, 6562, 6560, 1, 0, 0, 0, 6562, 6563, 1, 0, 0, 0, 6563, 6564, 1, 0, 0, 0, 6564, 6565, 6, 676, 7, 0, 6565, 1358, 1, 0, 0, 0, 6566, 6568, 5, 13, 0, 0, 6567, 6569, 5, 10, 0, 0, 6568, 6567, 1, 0, 0, 0, 6568, 6569, 1, 0, 0, 0, 6569, 6572, 1, 0, 0, 0, 6570, 6572, 5, 10, 0, 0, 6571, 6566, 1, 0, 0, 0, 6571, 6570, 1, 0, 0, 0, 6572, 6573, 1, 0, 0, 0, 6573, 6574, 6, 677, 7, 0, 6574, 1360, 1, 0, 0, 0, 6575, 6576, 5, 45, 0, 0, 6576, 6577, 5, 45, 0, 0, 6577, 6581, 1, 0, 0, 0, 6578, 6580, 8, 44, 0, 0, 6579, 6578, 1, 0, 0, 0, 6580, 6583, 1, 0, 0, 0, 6581, 6579, 1, 0, 0, 0, 6581, 6582, 1, 0, 0, 0, 6582, 6584, 1, 0, 0, 0, 6583, 6581, 1, 0, 0, 0, 6584, 6585, 6, 678, 7, 0, 6585, 1362, 1, 0, 0, 0, 6586, 6587, 5, 47, 0, 0, 6587, 6588, 5, 42, 0, 0, 6588, 6611, 1, 0, 0, 0, 6589, 6591, 5, 47, 0, 0, 6590, 6589, 1, 0, 0, 0, 6591, 6594, 1, 0, 0, 0, 6592, 6590, 1, 0, 0, 0, 6592, 6593, 1, 0, 0, 0, 6593, 6595, 1, 0, 0, 0, 6594, 6592, 1, 0, 0, 0, 6595, 6610, 3, 1363, 679, 0, 6596, 6610, 8, 45, 0, 0, 6597, 6599, 5, 47, 0, 0, 6598, 6597, 1, 0, 0, 0, 6599, 6600, 1, 0, 0, 0, 6600, 6598, 1, 0, 0, 0, 6600, 6601, 1, 0, 0, 0, 6601, 6602, 1, 0, 0, 0, 6602, 6610, 8, 45, 0, 0, 6603, 6605, 5, 42, 0, 0, 6604, 6603, 1, 0, 0, 0, 6605, 6606, 1, 0, 0, 0, 6606, 6604, 1, 0, 0, 0, 6606, 6607, 1, 0, 0, 0, 6607, 6608, 1, 0, 0, 0, 6608, 6610, 8, 45, 0, 0, 6609, 6592, 1, 0, 0, 0, 6609, 6596, 1, 0, 0, 0, 6609, 6598, 1, 0, 0, 0, 6609, 6604, 1, 0, 0, 0, 6610, 6613, 1, 0, 0, 0, 6611, 6609, 1, 0, 0, 0, 6611, 6612, 1, 0, 0, 0, 6612, 6617, 1, 0, 0, 0, 6613, 6611, 1, 0, 0, 0, 6614, 6616, 5, 42, 0, 0, 6615, 6614, 1, 0, 0, 0, 6616, 6619, 1, 0, 0, 0, 6617, 6615, 1, 0, 0, 0, 6617, 6618, 1, 0, 0, 0, 6618, 6620, 1, 0, 0, 0, 6619, 6617, 1, 0, 0, 0, 6620, 6621, 5, 42, 0, 0, 6621, 6622, 5, 47, 0, 0, 6622, 6623, 1, 0, 0, 0, 6623, 6624, 6, 679, 7, 0, 6624, 1364, 1, 0, 0, 0, 6625, 6626, 5, 47, 0, 0, 6626, 6627, 5, 42, 0, 0, 6627, 6652, 1, 0, 0, 0, 6628, 6630, 5, 47, 0, 0, 6629, 6628, 1, 0, 0, 0, 6630, 6633, 1, 0, 0, 0, 6631, 6629, 1, 0, 0, 0, 6631, 6632, 1, 0, 0, 0, 6632, 6634, 1, 0, 0, 0, 6633, 6631, 1, 0, 0, 0, 6634, 6651, 3, 1363, 679, 0, 6635, 6651, 8, 45, 0, 0, 6636, 6638, 5, 47, 0, 0, 6637, 6636, 1, 0, 0, 0, 6638, 6639, 1, 0, 0, 0, 6639, 6637, 1, 0, 0, 0, 6639, 6640, 1, 0, 0, 0, 6640, 6641, 1, 0, 0, 0, 6641, 6649, 8, 45, 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, 6647, 1, 0, 0, 0, 6647, 6649, 8, 45, 0, 0, 6648, 6637, 1, 0, 0, 0, 6648, 6643, 1, 0, 0, 0, 6649, 6651, 1, 0, 0, 0, 6650, 6631, 1, 0, 0, 0, 6650, 6635, 1, 0, 0, 0, 6650, 6648, 1, 0, 0, 0, 6651, 6654, 1, 0, 0, 0, 6652, 6650, 1, 0, 0, 0, 6652, 6653, 1, 0, 0, 0, 6653, 6672, 1, 0, 0, 0, 6654, 6652, 1, 0, 0, 0, 6655, 6657, 5, 47, 0, 0, 6656, 6655, 1, 0, 0, 0, 6657, 6658, 1, 0, 0, 0, 6658, 6656, 1, 0, 0, 0, 6658, 6659, 1, 0, 0, 0, 6659, 6673, 1, 0, 0, 0, 6660, 6662, 5, 42, 0, 0, 6661, 6660, 1, 0, 0, 0, 6662, 6663, 1, 0, 0, 0, 6663, 6661, 1, 0, 0, 0, 6663, 6664, 1, 0, 0, 0, 6664, 6673, 1, 0, 0, 0, 6665, 6667, 5, 47, 0, 0, 6666, 6665, 1, 0, 0, 0, 6667, 6670, 1, 0, 0, 0, 6668, 6666, 1, 0, 0, 0, 6668, 6669, 1, 0, 0, 0, 6669, 6671, 1, 0, 0, 0, 6670, 6668, 1, 0, 0, 0, 6671, 6673, 3, 1365, 680, 0, 6672, 6656, 1, 0, 0, 0, 6672, 6661, 1, 0, 0, 0, 6672, 6668, 1, 0, 0, 0, 6672, 6673, 1, 0, 0, 0, 6673, 6674, 1, 0, 0, 0, 6674, 6675, 6, 680, 8, 0, 6675, 1366, 1, 0, 0, 0, 6676, 6688, 5, 92, 0, 0, 6677, 6687, 8, 46, 0, 0, 6678, 6682, 5, 34, 0, 0, 6679, 6681, 8, 47, 0, 0, 6680, 6679, 1, 0, 0, 0, 6681, 6684, 1, 0, 0, 0, 6682, 6680, 1, 0, 0, 0, 6682, 6683, 1, 0, 0, 0, 6683, 6685, 1, 0, 0, 0, 6684, 6682, 1, 0, 0, 0, 6685, 6687, 5, 34, 0, 0, 6686, 6677, 1, 0, 0, 0, 6686, 6678, 1, 0, 0, 0, 6687, 6690, 1, 0, 0, 0, 6688, 6686, 1, 0, 0, 0, 6688, 6689, 1, 0, 0, 0, 6689, 6698, 1, 0, 0, 0, 6690, 6688, 1, 0, 0, 0, 6691, 6695, 5, 34, 0, 0, 6692, 6694, 8, 47, 0, 0, 6693, 6692, 1, 0, 0, 0, 6694, 6697, 1, 0, 0, 0, 6695, 6693, 1, 0, 0, 0, 6695, 6696, 1, 0, 0, 0, 6696, 6699, 1, 0, 0, 0, 6697, 6695, 1, 0, 0, 0, 6698, 6691, 1, 0, 0, 0, 6698, 6699, 1, 0, 0, 0, 6699, 1368, 1, 0, 0, 0, 6700, 6701, 5, 92, 0, 0, 6701, 6702, 5, 92, 0, 0, 6702, 1370, 1, 0, 0, 0, 6703, 6704, 9, 0, 0, 0, 6704, 1372, 1, 0, 0, 0, 6705, 6706, 3, 1377, 686, 0, 6706, 6707, 5, 39, 0, 0, 6707, 6708, 1, 0, 0, 0, 6708, 6709, 6, 684, 9, 0, 6709, 1374, 1, 0, 0, 0, 6710, 6712, 3, 1377, 686, 0, 6711, 6713, 5, 92, 0, 0, 6712, 6711, 1, 0, 0, 0, 6712, 6713, 1, 0, 0, 0, 6713, 6714, 1, 0, 0, 0, 6714, 6715, 5, 0, 0, 1, 6715, 1376, 1, 0, 0, 0, 6716, 6717, 5, 39, 0, 0, 6717, 6740, 5, 39, 0, 0, 6718, 6736, 5, 92, 0, 0, 6719, 6720, 5, 120, 0, 0, 6720, 6737, 7, 39, 0, 0, 6721, 6722, 5, 117, 0, 0, 6722, 6723, 7, 39, 0, 0, 6723, 6724, 7, 39, 0, 0, 6724, 6725, 7, 39, 0, 0, 6725, 6737, 7, 39, 0, 0, 6726, 6727, 5, 85, 0, 0, 6727, 6728, 7, 39, 0, 0, 6728, 6729, 7, 39, 0, 0, 6729, 6730, 7, 39, 0, 0, 6730, 6731, 7, 39, 0, 0, 6731, 6732, 7, 39, 0, 0, 6732, 6733, 7, 39, 0, 0, 6733, 6734, 7, 39, 0, 0, 6734, 6737, 7, 39, 0, 0, 6735, 6737, 8, 48, 0, 0, 6736, 6719, 1, 0, 0, 0, 6736, 6721, 1, 0, 0, 0, 6736, 6726, 1, 0, 0, 0, 6736, 6735, 1, 0, 0, 0, 6737, 6740, 1, 0, 0, 0, 6738, 6740, 8, 49, 0, 0, 6739, 6716, 1, 0, 0, 0, 6739, 6718, 1, 0, 0, 0, 6739, 6738, 1, 0, 0, 0, 6740, 6743, 1, 0, 0, 0, 6741, 6739, 1, 0, 0, 0, 6741, 6742, 1, 0, 0, 0, 6742, 1378, 1, 0, 0, 0, 6743, 6741, 1, 0, 0, 0, 6744, 6745, 3, 1383, 689, 0, 6745, 6746, 5, 39, 0, 0, 6746, 6747, 1, 0, 0, 0, 6747, 6748, 6, 687, 9, 0, 6748, 1380, 1, 0, 0, 0, 6749, 6751, 3, 1383, 689, 0, 6750, 6752, 5, 92, 0, 0, 6751, 6750, 1, 0, 0, 0, 6751, 6752, 1, 0, 0, 0, 6752, 6753, 1, 0, 0, 0, 6753, 6754, 5, 0, 0, 1, 6754, 1382, 1, 0, 0, 0, 6755, 6756, 5, 39, 0, 0, 6756, 6761, 5, 39, 0, 0, 6757, 6758, 5, 92, 0, 0, 6758, 6761, 9, 0, 0, 0, 6759, 6761, 8, 49, 0, 0, 6760, 6755, 1, 0, 0, 0, 6760, 6757, 1, 0, 0, 0, 6760, 6759, 1, 0, 0, 0, 6761, 6764, 1, 0, 0, 0, 6762, 6760, 1, 0, 0, 0, 6762, 6763, 1, 0, 0, 0, 6763, 1384, 1, 0, 0, 0, 6764, 6762, 1, 0, 0, 0, 6765, 6766, 3, 1357, 676, 0, 6766, 6767, 1, 0, 0, 0, 6767, 6768, 6, 690, 10, 0, 6768, 6769, 6, 690, 7, 0, 6769, 1386, 1, 0, 0, 0, 6770, 6771, 3, 1359, 677, 0, 6771, 6772, 1, 0, 0, 0, 6772, 6773, 6, 691, 11, 0, 6773, 6774, 6, 691, 7, 0, 6774, 6775, 6, 691, 12, 0, 6775, 1388, 1, 0, 0, 0, 6776, 6777, 6, 692, 13, 0, 6777, 6778, 1, 0, 0, 0, 6778, 6779, 6, 692, 14, 0, 6779, 6780, 6, 692, 15, 0, 6780, 1390, 1, 0, 0, 0, 6781, 6782, 3, 1357, 676, 0, 6782, 6783, 1, 0, 0, 0, 6783, 6784, 6, 693, 10, 0, 6784, 6785, 6, 693, 7, 0, 6785, 1392, 1, 0, 0, 0, 6786, 6787, 3, 1359, 677, 0, 6787, 6788, 1, 0, 0, 0, 6788, 6789, 6, 694, 11, 0, 6789, 6790, 6, 694, 7, 0, 6790, 1394, 1, 0, 0, 0, 6791, 6792, 5, 39, 0, 0, 6792, 6793, 1, 0, 0, 0, 6793, 6794, 6, 695, 2, 0, 6794, 6795, 6, 695, 16, 0, 6795, 1396, 1, 0, 0, 0, 6796, 6797, 6, 696, 17, 0, 6797, 6798, 1, 0, 0, 0, 6798, 6799, 6, 696, 14, 0, 6799, 6800, 6, 696, 15, 0, 6800, 1398, 1, 0, 0, 0, 6801, 6803, 8, 50, 0, 0, 6802, 6801, 1, 0, 0, 0, 6803, 6804, 1, 0, 0, 0, 6804, 6802, 1, 0, 0, 0, 6804, 6805, 1, 0, 0, 0, 6805, 6814, 1, 0, 0, 0, 6806, 6810, 5, 36, 0, 0, 6807, 6809, 8, 50, 0, 0, 6808, 6807, 1, 0, 0, 0, 6809, 6812, 1, 0, 0, 0, 6810, 6808, 1, 0, 0, 0, 6810, 6811, 1, 0, 0, 0, 6811, 6814, 1, 0, 0, 0, 6812, 6810, 1, 0, 0, 0, 6813, 6802, 1, 0, 0, 0, 6813, 6806, 1, 0, 0, 0, 6814, 1400, 1, 0, 0, 0, 6815, 6817, 5, 36, 0, 0, 6816, 6818, 3, 1327, 661, 0, 6817, 6816, 1, 0, 0, 0, 6817, 6818, 1, 0, 0, 0, 6818, 6819, 1, 0, 0, 0, 6819, 6820, 5, 36, 0, 0, 6820, 6821, 1, 0, 0, 0, 6821, 6822, 4, 698, 8, 0, 6822, 6823, 6, 698, 18, 0, 6823, 6824, 1, 0, 0, 0, 6824, 6825, 6, 698, 15, 0, 6825, 1402, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1470, 1476, 1478, 1483, 1487, 1489, 1492, 1501, 1503, 1508, 1513, 1515, 6359, 6368, 6372, 6376, 6385, 6387, 6397, 6399, 6425, 6427, 6445, 6456, 6467, 6484, 6504, 6508, 6511, 6517, 6520, 6525, 6529, 6534, 6541, 6552, 6554, 6562, 6568, 6571, 6581, 6592, 6600, 6606, 6609, 6611, 6617, 6631, 6639, 6645, 6648, 6650, 6652, 6658, 6663, 6668, 6672, 6682, 6686, 6688, 6695, 6698, 6712, 6736, 6739, 6741, 6751, 6760, 6762, 6804, 6810, 6813, 6817, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 660, 1, 5, 4, 0, 1, 671, 2, 0, 1, 0, 1, 680, 3, 2, 2, 0, 7, 667, 0, 7, 668, 0, 2, 3, 0, 1, 692, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 696, 5, 1, 698, 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 60f54ac9e7..0000000000 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.java +++ /dev/null @@ -1,5269 +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.2 - - -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.2", 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, ZSTREAM=96, ZTABLE=97, - ZVIEW=98, TRAILING=99, TRUE_P=100, UNION=101, UNIQUE=102, USER=103, USING=104, - VARIADIC=105, WHEN=106, WHERE=107, WINDOW=108, WITH=109, AUTHORIZATION=110, - BINARY=111, COLLATION=112, CONCURRENTLY=113, CROSS=114, CURRENT_SCHEMA=115, - FREEZE=116, FULL=117, ILIKE=118, INNER_P=119, IS=120, ISNULL=121, JOIN=122, - LEFT=123, LIKE=124, NATURAL=125, NOTNULL=126, OUTER_P=127, OVER=128, OVERLAPS=129, - RIGHT=130, SIMILAR=131, VERBOSE=132, ABORT_P=133, ABSOLUTE_P=134, ACCESS=135, - ACTION=136, ADD_P=137, ADMIN=138, AFTER=139, AGGREGATE=140, ALSO=141, - ALTER=142, ALWAYS=143, ASSERTION=144, ASSIGNMENT=145, AT=146, ATTRIBUTE=147, - BACKWARD=148, BEFORE=149, BEGIN_P=150, BY=151, CACHE=152, CALLED=153, - CASCADE=154, CASCADED=155, CATALOG=156, CHAIN=157, CHARACTERISTICS=158, - CHECKPOINT=159, CLASS=160, CLOSE=161, CLUSTER=162, COMMENT=163, COMMENTS=164, - COMMIT=165, COMMITTED=166, CONFIGURATION=167, CONNECTION=168, CONSTRAINTS=169, - CONTENT_P=170, CONTINUE_P=171, CONVERSION_P=172, COPY=173, COST=174, CSV=175, - CURSOR=176, CYCLE=177, DATA_P=178, DATABASE=179, DAY_P=180, DEALLOCATE=181, - DECLARE=182, DEFAULTS=183, DEFERRED=184, DEFINER=185, DELETE_P=186, DELIMITER=187, - DELIMITERS=188, DICTIONARY=189, DISABLE_P=190, DISCARD=191, DOCUMENT_P=192, - DOMAIN_P=193, DOUBLE_P=194, DROP=195, EACH=196, ENABLE_P=197, ENCODING=198, - ENCRYPTED=199, ENUM_P=200, ESCAPE=201, EVENT=202, EXCLUDE=203, EXCLUDING=204, - EXCLUSIVE=205, EXECUTE=206, EXPLAIN=207, EXTENSION=208, EXTERNAL=209, - FAMILY=210, FIRST_P=211, FOLLOWING=212, FORCE=213, FORWARD=214, FUNCTION=215, - FUNCTIONS=216, GLOBAL=217, GRANTED=218, HANDLER=219, HEADER_P=220, HOLD=221, - HOUR_P=222, IDENTITY_P=223, IF_P=224, IMMEDIATE=225, IMMUTABLE=226, IMPLICIT_P=227, - INCLUDING=228, INCREMENT=229, INDEX=230, INDEXES=231, INHERIT=232, INHERITS=233, - INLINE_P=234, INSENSITIVE=235, INSERT=236, INSTEAD=237, INVOKER=238, ISOLATION=239, - KEY=240, LABEL=241, LANGUAGE=242, LARGE_P=243, LAST_P=244, LEAKPROOF=245, - LEVEL=246, LISTEN=247, LOAD=248, LOCAL=249, LOCATION=250, LOCK_P=251, - MAPPING=252, MATCH=253, MATCHED=254, MATERIALIZED=255, MAXVALUE=256, MERGE=257, - MINUTE_P=258, MINVALUE=259, MODE=260, MONTH_P=261, MOVE=262, NAME_P=263, - NAMES=264, NEXT=265, NO=266, NOTHING=267, NOTIFY=268, NOWAIT=269, NULLS_P=270, - OBJECT_P=271, OF=272, OFF=273, OIDS=274, OPERATOR=275, OPTION=276, OPTIONS=277, - OWNED=278, OWNER=279, PARSER=280, PARTIAL=281, PARTITION=282, PASSING=283, - PASSWORD=284, PLANS=285, PRECEDING=286, PREPARE=287, PREPARED=288, PRESERVE=289, - PRIOR=290, PRIVILEGES=291, PROCEDURAL=292, PROCEDURE=293, PROGRAM=294, - QUOTE=295, RANGE=296, READ=297, REASSIGN=298, RECHECK=299, RECURSIVE=300, - REF=301, REFRESH=302, REINDEX=303, RELATIVE_P=304, RELEASE=305, RENAME=306, - REPEATABLE=307, REPLACE=308, REPLICA=309, RESET=310, RESTART=311, RESTRICT=312, - RETURNS=313, REVOKE=314, ROLE=315, ROLLBACK=316, ROWS=317, RULE=318, SAVEPOINT=319, - SCHEMA=320, SCROLL=321, SEARCH=322, SECOND_P=323, SECURITY=324, SEQUENCE=325, - SEQUENCES=326, SERIALIZABLE=327, SERVER=328, SESSION=329, SET=330, SHARE=331, - SHOW=332, SIMPLE=333, SNAPSHOT=334, STABLE=335, STANDALONE_P=336, START=337, - STATEMENT=338, STATISTICS=339, STDIN=340, STDOUT=341, STORAGE=342, STRICT_P=343, - STRIP_P=344, SYSID=345, SYSTEM_P=346, TABLES=347, TABLESPACE=348, TEMP=349, - TEMPLATE=350, TEMPORARY=351, TEXT_P=352, TRANSACTION=353, TRIGGER=354, - TRUNCATE=355, TRUSTED=356, TYPE_P=357, TYPES_P=358, UNBOUNDED=359, UNCOMMITTED=360, - UNENCRYPTED=361, UNKNOWN=362, UNLISTEN=363, UNLOGGED=364, UNTIL=365, UPDATE=366, - VACUUM=367, VALID=368, VALIDATE=369, VALIDATOR=370, VARYING=371, VERSION_P=372, - VIEW=373, VOLATILE=374, WHITESPACE_P=375, WITHOUT=376, WORK=377, WRAPPER=378, - WRITE=379, XML_P=380, YEAR_P=381, YES_P=382, ZONE=383, BETWEEN=384, BIGINT=385, - BIT=386, BOOLEAN_P=387, CHAR_P=388, CHARACTER=389, COALESCE=390, DEC=391, - DECIMAL_P=392, EXISTS=393, EXTRACT=394, FLOAT_P=395, GREATEST=396, INOUT=397, - INT_P=398, INTEGER=399, INTERVAL=400, LEAST=401, NATIONAL=402, NCHAR=403, - NONE=404, NULLIF=405, NUMERIC=406, OVERLAY=407, POSITION=408, PRECISION=409, - REAL=410, ROW=411, SETOF=412, SMALLINT=413, SUBSTRING=414, TIME=415, TIMESTAMP=416, - TREAT=417, TRIM=418, VALUES=419, VARCHAR=420, XMLATTRIBUTES=421, XMLCOMMENT=422, - XMLAGG=423, XML_IS_WELL_FORMED=424, XML_IS_WELL_FORMED_DOCUMENT=425, XML_IS_WELL_FORMED_CONTENT=426, - XPATH=427, XPATH_EXISTS=428, XMLCONCAT=429, XMLELEMENT=430, XMLEXISTS=431, - XMLFOREST=432, XMLPARSE=433, XMLPI=434, XMLROOT=435, XMLSERIALIZE=436, - CALL=437, CURRENT_P=438, ATTACH=439, DETACH=440, EXPRESSION=441, GENERATED=442, - LOGGED=443, STORED=444, INCLUDE=445, ROUTINE=446, TRANSFORM=447, IMPORT_P=448, - POLICY=449, METHOD=450, REFERENCING=451, NEW=452, OLD=453, VALUE_P=454, - SUBSCRIPTION=455, PUBLICATION=456, OUT_P=457, END_P=458, ROUTINES=459, - SCHEMAS=460, PROCEDURES=461, INPUT_P=462, SUPPORT=463, PARALLEL=464, SQL_P=465, - DEPENDS=466, OVERRIDING=467, CONFLICT=468, SKIP_P=469, LOCKED=470, TIES=471, - ROLLUP=472, CUBE=473, GROUPING=474, SETS=475, TABLESAMPLE=476, ORDINALITY=477, - XMLTABLE=478, COLUMNS=479, XMLNAMESPACES=480, ROWTYPE=481, NORMALIZED=482, - WITHIN=483, FILTER=484, GROUPS=485, OTHERS=486, NFC=487, NFD=488, NFKC=489, - NFKD=490, UESCAPE=491, VIEWS=492, NORMALIZE=493, DUMP=494, PRINT_STRICT_PARAMS=495, - VARIABLE_CONFLICT=496, ERROR=497, USE_VARIABLE=498, USE_COLUMN=499, ALIAS=500, - CONSTANT=501, PERFORM=502, GET=503, DIAGNOSTICS=504, STACKED=505, ELSIF=506, - WHILE=507, REVERSE=508, FOREACH=509, SLICE=510, EXIT=511, RETURN=512, - QUERY=513, RAISE=514, SQLSTATE=515, DEBUG=516, LOG=517, INFO=518, NOTICE=519, - WARNING=520, EXCEPTION=521, ASSERT=522, LOOP=523, OPEN=524, ABS=525, CBRT=526, - CEIL=527, CEILING=528, DEGREES=529, DIV=530, EXP=531, FACTORIAL=532, FLOOR=533, - GCD=534, LCM=535, LN=536, LOG10=537, MIN_SCALE=538, MOD=539, PI=540, POWER=541, - RADIANS=542, ROUND=543, SCALE=544, SIGN=545, SQRT=546, TRIM_SCALE=547, - TRUNC=548, WIDTH_BUCKET=549, RANDOM=550, SETSEED=551, ACOS=552, ACOSD=553, - ASIN=554, ASIND=555, ATAN=556, ATAND=557, ATAN2=558, ATAN2D=559, COS=560, - COSD=561, COT=562, COTD=563, SIN=564, SIND=565, TAN=566, TAND=567, SINH=568, - COSH=569, TANH=570, ASINH=571, ACOSH=572, ATANH=573, BIT_LENGTH=574, CHAR_LENGTH=575, - CHARACTER_LENGTH=576, LOWER=577, OCTET_LENGTH=578, UPPER=579, ASCII=580, - BTRIM=581, CHR=582, CONCAT=583, CONCAT_WS=584, FORMAT=585, INITCAP=586, - LENGTH=587, LPAD=588, LTRIM=589, MD5=590, PARSE_IDENT=591, PG_CLIENT_ENCODING=592, - QUOTE_IDENT=593, QUOTE_LITERAL=594, QUOTE_NULLABLE=595, REGEXP_COUNT=596, - REGEXP_INSTR=597, REGEXP_LIKE=598, REGEXP_MATCH=599, REGEXP_MATCHES=600, - REGEXP_REPLACE=601, REGEXP_SPLIT_TO_ARRAY=602, REGEXP_SPLIT_TO_TABLE=603, - REGEXP_SUBSTR=604, REPEAT=605, RPAD=606, RTRIM=607, SPLIT_PART=608, STARTS_WITH=609, - STRING_TO_ARRAY=610, STRING_TO_TABLE=611, STRPOS=612, SUBSTR=613, TO_ASCII=614, - TO_HEX=615, TRANSLATE=616, UNISTR=617, AGE=618, CLOCK_TIMESTAMP=619, DATE_BIN=620, - DATE_PART=621, DATE_TRUNC=622, ISFINITE=623, JUSTIFY_DAYS=624, JUSTIFY_HOURS=625, - JUSTIFY_INTERVAL=626, MAKE_DATE=627, MAKE_INTERVAL=628, MAKE_TIME=629, - MAKE_TIMESTAMP=630, MAKE_TIMESTAMPTZ=631, NOW=632, STATEMENT_TIMESTAMP=633, - TIMEOFDAY=634, TRANSACTION_TIMESTAMP=635, TO_TIMESTAMP=636, TO_CHAR=637, - TO_DATE=638, TO_NUMBER=639, Identifier=640, QuotedIdentifier=641, UnterminatedQuotedIdentifier=642, - InvalidQuotedIdentifier=643, InvalidUnterminatedQuotedIdentifier=644, - UnicodeQuotedIdentifier=645, UnterminatedUnicodeQuotedIdentifier=646, - InvalidUnicodeQuotedIdentifier=647, InvalidUnterminatedUnicodeQuotedIdentifier=648, - StringConstant=649, UnterminatedStringConstant=650, UnicodeEscapeStringConstant=651, - UnterminatedUnicodeEscapeStringConstant=652, BeginDollarStringConstant=653, - BinaryStringConstant=654, UnterminatedBinaryStringConstant=655, InvalidBinaryStringConstant=656, - InvalidUnterminatedBinaryStringConstant=657, HexadecimalStringConstant=658, - UnterminatedHexadecimalStringConstant=659, InvalidHexadecimalStringConstant=660, - InvalidUnterminatedHexadecimalStringConstant=661, Integral=662, NumericFail=663, - Numeric=664, PLSQLVARIABLENAME=665, PLSQLIDENTIFIER=666, Whitespace=667, - Newline=668, LineComment=669, BlockComment=670, UnterminatedBlockComment=671, - MetaCommand=672, EndMetaCommand=673, ErrorCharacter=674, EscapeStringConstant=675, - UnterminatedEscapeStringConstant=676, InvalidEscapeStringConstant=677, - InvalidUnterminatedEscapeStringConstant=678, AfterEscapeStringConstantMode_NotContinued=679, - AfterEscapeStringConstantWithNewlineMode_NotContinued=680, DollarText=681, - EndDollarStringConstant=682, AfterEscapeStringConstantWithNewlineMode_Continued=683; - 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", "ZSTREAM", "ZTABLE", "ZVIEW", "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'", "'ZSTREAM'", - "'ZTABLE'", "'ZVIEW'", "'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", "ZSTREAM", "ZTABLE", "ZVIEW", "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 660: - BeginDollarStringConstant_action((RuleContext)_localctx, actionIndex); - break; - case 671: - NumericFail_action((RuleContext)_localctx, actionIndex); - break; - case 680: - UnterminatedBlockComment_action((RuleContext)_localctx, actionIndex); - break; - case 692: - AfterEscapeStringConstantMode_NotContinued_action((RuleContext)_localctx, actionIndex); - break; - case 696: - AfterEscapeStringConstantWithNewlineMode_NotContinued_action((RuleContext)_localctx, actionIndex); - break; - case 698: - 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 644: - return IdentifierStartChar_sempred((RuleContext)_localctx, predIndex); - case 698: - 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\u02ab\u1aaa\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\u0002\u02b9\u0007\u02b9"+ - "\u0002\u02ba\u0007\u02ba\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\u05bd\b\u001b\u000b"+ - "\u001b\f\u001b\u05be\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0004"+ - "\u001c\u05c5\b\u001c\u000b\u001c\f\u001c\u05c6\u0001\u001c\u0001\u001c"+ - "\u0001\u001c\u0003\u001c\u05cc\b\u001c\u0001\u001c\u0001\u001c\u0004\u001c"+ - "\u05d0\b\u001c\u000b\u001c\f\u001c\u05d1\u0001\u001c\u0003\u001c\u05d5"+ - "\b\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001"+ - "\u001d\u0001\u001d\u0005\u001d\u05de\b\u001d\n\u001d\f\u001d\u05e1\t\u001d"+ - "\u0001\u001d\u0001\u001d\u0003\u001d\u05e5\b\u001d\u0001\u001d\u0001\u001d"+ - "\u0001\u001d\u0004\u001d\u05ea\b\u001d\u000b\u001d\f\u001d\u05eb\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\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001"+ - "d\u0001d\u0001d\u0001d\u0001d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001"+ - "e\u0001e\u0001e\u0001f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001"+ - "f\u0001f\u0001g\u0001g\u0001g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001"+ - "h\u0001h\u0001h\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001"+ - "j\u0001j\u0001j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+ - "k\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001"+ - "m\u0001m\u0001m\u0001m\u0001m\u0001n\u0001n\u0001n\u0001n\u0001n\u0001"+ - "n\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001p\u0001p\u0001"+ - "p\u0001p\u0001p\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001"+ - "q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001"+ - "r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001"+ - "s\u0001s\u0001s\u0001s\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001"+ - "t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001"+ - "u\u0001u\u0001u\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001"+ - "v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001w\u0001w\u0001"+ - "w\u0001w\u0001w\u0001w\u0001w\u0001x\u0001x\u0001x\u0001x\u0001x\u0001"+ - "y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001z\u0001z\u0001z\u0001z\u0001"+ - "z\u0001z\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\u0081\u0001\u0081\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\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\u0084\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\u0086\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\u0089\u0001\u0089\u0001"+ - "\u0089\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\u008a\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001"+ - "\u008b\u0001\u008b\u0001\u008b\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\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\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\u0093\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\u0094\u0001\u0094\u0001"+ - "\u0094\u0001\u0094\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0096\u0001"+ - "\u0096\u0001\u0096\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\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\u009a\u0001\u009a\u0001\u009a\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\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\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"+ - "\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001"+ - "\u00a1\u0001\u00a1\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"+ - "\u00a2\u0001\u00a2\u0001\u00a2\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\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\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\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\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\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"+ - "\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001"+ - "\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00af\u0001\u00af\u0001\u00af\u0001"+ - "\u00af\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\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001"+ - "\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b3\u0001\u00b3\u0001"+ - "\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b4\u0001"+ - "\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\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\u00b8\u0001"+ - "\u00b8\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"+ - "\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"+ - "\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\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\u00bf\u0001\u00bf\u0001\u00bf\u0001"+ - "\u00c0\u0001\u00c0\u0001\u00c0\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\u00c2\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\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\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\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00ca\u0001\u00ca\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\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\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\u00d0\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\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\u00d4\u0001\u00d4\u0001\u00d4\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\u00d7\u0001\u00d7\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\u00da\u0001\u00db\u0001\u00db\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\u00dd\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\u00de\u0001\u00de\u0001\u00de\u0001"+ - "\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001"+ - "\u00df\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\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\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\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\u00e7\u0001\u00e7\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\u00e8\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\u00eb\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\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"+ - "\u00ee\u0001\u00ee\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\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\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\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\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\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\u00f8\u0001"+ - "\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001"+ - "\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0001"+ - "\u00fa\u0001\u00fa\u0001\u00fa\u0001\u00fa\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\u00fd\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\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\u0102\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\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"+ - "\u0105\u0001\u0105\u0001\u0106\u0001\u0106\u0001\u0106\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\u0108\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\u010b\u0001"+ - "\u010b\u0001\u010b\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001"+ - "\u010c\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010e\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"+ - "\u010f\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0001"+ - "\u0110\u0001\u0110\u0001\u0111\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\u0113\u0001\u0113\u0001\u0113\u0001"+ - "\u0114\u0001\u0114\u0001\u0114\u0001\u0114\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\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\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\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\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\u0121\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\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\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\u0126\u0001\u0127\u0001\u0127\u0001\u0127\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\u0128\u0001\u0128\u0001\u0128\u0001\u0128\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\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001"+ - "\u012b\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\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\u012f\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\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\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\u0135\u0001\u0136\u0001"+ - "\u0136\u0001\u0136\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"+ - "\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\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\u013b\u0001"+ - "\u013b\u0001\u013c\u0001\u013c\u0001\u013c\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\u013e\u0001\u013e\u0001"+ - "\u013e\u0001\u013e\u0001\u013e\u0001\u013f\u0001\u013f\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\u0141\u0001"+ - "\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0142\u0001\u0142\u0001"+ - "\u0142\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\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\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\u0149\u0001\u0149\u0001\u0149\u0001\u014a\u0001\u014a\u0001"+ - "\u014a\u0001\u014a\u0001\u014a\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\u014b\u0001\u014b\u0001\u014b\u0001"+ - "\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001"+ - "\u014c\u0001\u014c\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001"+ - "\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\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\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\u0153\u0001\u0153\u0001"+ - "\u0153\u0001\u0153\u0001\u0153\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\u0155\u0001"+ - "\u0155\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156\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"+ - "\u0158\u0001\u0159\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\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\u015e\u0001"+ - "\u015e\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\u015f\u0001\u015f\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"+ - "\u0161\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\u0164\u0001\u0164\u0001"+ - "\u0164\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\u0166\u0001"+ - "\u0166\u0001\u0166\u0001\u0166\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\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\u016b\u0001\u016b\u0001\u016b\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\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\u016e\u0001\u016e\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\u016f\u0001\u016f\u0001\u016f\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\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"+ - "\u0174\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\u0175\u0001"+ - "\u0175\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"+ - "\u0179\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001"+ - "\u017a\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\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001"+ - "\u017d\u0001\u017d\u0001\u017d\u0001\u017e\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\u0182\u0001\u0182\u0001"+ - "\u0182\u0001\u0182\u0001\u0182\u0001\u0183\u0001\u0183\u0001\u0183\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"+ - "\u0185\u0001\u0185\u0001\u0185\u0001\u0185\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\u0188\u0001"+ - "\u0188\u0001\u0188\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\u0189\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"+ - "\u018c\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\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\u0192\u0001\u0192\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\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001"+ - "\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\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"+ - "\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\u019b\u0001\u019b\u0001"+ - "\u019b\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\u019c\u0001\u019d\u0001"+ - "\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019e\u0001\u019e\u0001"+ - "\u019e\u0001\u019e\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\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\u01a3\u0001\u01a3\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"+ - "\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\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\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\u01ac\u0001"+ - "\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+ - "\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+ - "\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\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\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\u01ad\u0001\u01ad\u0001\u01ad\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\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\u01b1\u0001\u01b2\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\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001"+ - "\u01b4\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\u01b6\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"+ - "\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\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\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\u01bc\u0001"+ - "\u01bc\u0001\u01bc\u0001\u01bd\u0001\u01bd\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\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\u01c1\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\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"+ - "\u01c5\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\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c8\u0001"+ - "\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c9\u0001\u01c9\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"+ - "\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01cb\u0001\u01cb\u0001"+ - "\u01cb\u0001\u01cb\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\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\u01cf\u0001\u01cf\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\u01d0\u0001\u01d0\u0001\u01d0\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"+ - "\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\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\u01d6\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\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\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"+ - "\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\u01e0\u0001\u01e0\u0001\u01e0\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\u01e3\u0001\u01e3\u0001\u01e3\u0001"+ - "\u01e4\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\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\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e9\u0001\u01e9\u0001"+ - "\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01ea\u0001"+ - "\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001"+ - "\u01eb\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\u01ef\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\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\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"+ - "\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"+ - "\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\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\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"+ - "\u01f8\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\u01f9\u0001\u01f9\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\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\u01fe\u0001\u01ff\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\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\u0203\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\u0205\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\u0206\u0001\u0206\u0001"+ - "\u0207\u0001\u0207\u0001\u0207\u0001\u0207\u0001\u0207\u0001\u0207\u0001"+ - "\u0208\u0001\u0208\u0001\u0208\u0001\u0208\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\u020b\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\u020c\u0001"+ - "\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020d\u0001\u020d\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\u0210\u0001\u0210\u0001\u0210\u0001"+ - "\u0210\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0211\u0001"+ - "\u0212\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\u0214\u0001\u0214\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\u0217\u0001\u0217\u0001\u0217\u0001\u0217\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\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\u021d\u0001\u021d\u0001"+ - "\u021e\u0001\u021e\u0001\u021e\u0001\u021e\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\u0221\u0001\u0221\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\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"+ - "\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\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001"+ - "\u0228\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u0229\u0001"+ - "\u0229\u0001\u0229\u0001\u022a\u0001\u022a\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\u0230\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0230\u0001"+ - "\u0230\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001"+ - "\u0231\u0001\u0232\u0001\u0232\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\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"+ - "\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\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\u0242\u0001\u0242\u0001"+ - "\u0242\u0001\u0242\u0001\u0242\u0001\u0242\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\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\u0245\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\u0247\u0001\u0247\u0001\u0248\u0001\u0248\u0001"+ - "\u0248\u0001\u0248\u0001\u0248\u0001\u0248\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\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\u024d\u0001\u024d\u0001\u024d\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\u0250\u0001\u0250\u0001"+ - "\u0250\u0001\u0250\u0001\u0250\u0001\u0250\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\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\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\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"+ - "\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\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\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\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\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\u025e\u0001\u025e\u0001"+ - "\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\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"+ - "\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\u0261\u0001\u0261\u0001"+ - "\u0261\u0001\u0261\u0001\u0261\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\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\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\u0266\u0001\u0266\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\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\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\u026b\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001"+ - "\u026c\u0001\u026c\u0001\u026c\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\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\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\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\u0274\u0001\u0274\u0001\u0274\u0001"+ - "\u0274\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\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\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"+ - "\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\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\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\u027e\u0001\u027e\u0001"+ - "\u027e\u0001\u027e\u0001\u027e\u0001\u027e\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\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\u0281\u0001\u0281\u0001\u0281\u0001"+ - "\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0282\u0001"+ - "\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ - "\u0282\u0001\u0282\u0001\u0282\u0001\u0283\u0001\u0283\u0005\u0283\u18d6"+ - "\b\u0283\n\u0283\f\u0283\u18d9\t\u0283\u0001\u0284\u0001\u0284\u0001\u0284"+ - "\u0001\u0284\u0001\u0284\u0001\u0284\u0003\u0284\u18e1\b\u0284\u0001\u0285"+ - "\u0001\u0285\u0003\u0285\u18e5\b\u0285\u0001\u0286\u0001\u0286\u0003\u0286"+ - "\u18e9\b\u0286\u0001\u0287\u0001\u0287\u0001\u0287\u0001\u0288\u0001\u0288"+ - "\u0001\u0288\u0001\u0288\u0005\u0288\u18f2\b\u0288\n\u0288\f\u0288\u18f5"+ - "\t\u0288\u0001\u0289\u0001\u0289\u0001\u0289\u0001\u028a\u0001\u028a\u0001"+ - "\u028a\u0001\u028a\u0005\u028a\u18fe\b\u028a\n\u028a\f\u028a\u1901\t\u028a"+ - "\u0001\u028b\u0001\u028b\u0001\u028b\u0001\u028b\u0001\u028c\u0001\u028c"+ - "\u0001\u028c\u0001\u028c\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028d"+ - "\u0001\u028e\u0001\u028e\u0001\u028e\u0001\u028e\u0001\u028f\u0001\u028f"+ - "\u0001\u028f\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0005\u0290"+ - "\u191a\b\u0290\n\u0290\f\u0290\u191d\t\u0290\u0001\u0291\u0001\u0291\u0001"+ - "\u0291\u0001\u0291\u0001\u0291\u0001\u0291\u0001\u0292\u0001\u0292\u0001"+ - "\u0292\u0001\u0293\u0001\u0293\u0001\u0293\u0001\u0293\u0001\u0294\u0001"+ - "\u0294\u0003\u0294\u192e\b\u0294\u0001\u0294\u0001\u0294\u0001\u0294\u0001"+ - "\u0294\u0001\u0294\u0001\u0295\u0001\u0295\u0005\u0295\u1937\b\u0295\n"+ - "\u0295\f\u0295\u193a\t\u0295\u0001\u0296\u0001\u0296\u0001\u0296\u0001"+ - "\u0297\u0001\u0297\u0001\u0297\u0005\u0297\u1942\b\u0297\n\u0297\f\u0297"+ - "\u1945\t\u0297\u0001\u0298\u0001\u0298\u0001\u0298\u0001\u0299\u0001\u0299"+ - "\u0001\u0299\u0001\u029a\u0001\u029a\u0001\u029a\u0001\u029b\u0001\u029b"+ - "\u0001\u029b\u0005\u029b\u1953\b\u029b\n\u029b\f\u029b\u1956\t\u029b\u0001"+ - "\u029c\u0001\u029c\u0001\u029c\u0001\u029d\u0001\u029d\u0001\u029d\u0001"+ - "\u029e\u0001\u029e\u0001\u029f\u0001\u029f\u0001\u029f\u0001\u029f\u0001"+ - "\u029f\u0001\u029f\u0001\u02a0\u0001\u02a0\u0001\u02a0\u0003\u02a0\u1969"+ - "\b\u02a0\u0001\u02a0\u0001\u02a0\u0003\u02a0\u196d\b\u02a0\u0001\u02a0"+ - "\u0003\u02a0\u1970\b\u02a0\u0001\u02a0\u0001\u02a0\u0001\u02a0\u0001\u02a0"+ - "\u0003\u02a0\u1976\b\u02a0\u0001\u02a0\u0003\u02a0\u1979\b\u02a0\u0001"+ - "\u02a0\u0001\u02a0\u0001\u02a0\u0003\u02a0\u197e\b\u02a0\u0001\u02a0\u0001"+ - "\u02a0\u0003\u02a0\u1982\b\u02a0\u0001\u02a1\u0004\u02a1\u1985\b\u02a1"+ - "\u000b\u02a1\f\u02a1\u1986\u0001\u02a2\u0001\u02a2\u0001\u02a2\u0005\u02a2"+ - "\u198c\b\u02a2\n\u02a2\f\u02a2\u198f\t\u02a2\u0001\u02a3\u0001\u02a3\u0001"+ - "\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0005"+ - "\u02a3\u1999\b\u02a3\n\u02a3\f\u02a3\u199c\t\u02a3\u0001\u02a3\u0001\u02a3"+ - "\u0001\u02a4\u0004\u02a4\u19a1\b\u02a4\u000b\u02a4\f\u02a4\u19a2\u0001"+ - "\u02a4\u0001\u02a4\u0001\u02a5\u0001\u02a5\u0003\u02a5\u19a9\b\u02a5\u0001"+ - "\u02a5\u0003\u02a5\u19ac\b\u02a5\u0001\u02a5\u0001\u02a5\u0001\u02a6\u0001"+ - "\u02a6\u0001\u02a6\u0001\u02a6\u0005\u02a6\u19b4\b\u02a6\n\u02a6\f\u02a6"+ - "\u19b7\t\u02a6\u0001\u02a6\u0001\u02a6\u0001\u02a7\u0001\u02a7\u0001\u02a7"+ - "\u0001\u02a7\u0005\u02a7\u19bf\b\u02a7\n\u02a7\f\u02a7\u19c2\t\u02a7\u0001"+ - "\u02a7\u0001\u02a7\u0001\u02a7\u0004\u02a7\u19c7\b\u02a7\u000b\u02a7\f"+ - "\u02a7\u19c8\u0001\u02a7\u0001\u02a7\u0004\u02a7\u19cd\b\u02a7\u000b\u02a7"+ - "\f\u02a7\u19ce\u0001\u02a7\u0005\u02a7\u19d2\b\u02a7\n\u02a7\f\u02a7\u19d5"+ - "\t\u02a7\u0001\u02a7\u0005\u02a7\u19d8\b\u02a7\n\u02a7\f\u02a7\u19db\t"+ - "\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001"+ - "\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0005\u02a8\u19e6\b\u02a8\n"+ - "\u02a8\f\u02a8\u19e9\t\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0004"+ - "\u02a8\u19ee\b\u02a8\u000b\u02a8\f\u02a8\u19ef\u0001\u02a8\u0001\u02a8"+ - "\u0004\u02a8\u19f4\b\u02a8\u000b\u02a8\f\u02a8\u19f5\u0001\u02a8\u0003"+ - "\u02a8\u19f9\b\u02a8\u0005\u02a8\u19fb\b\u02a8\n\u02a8\f\u02a8\u19fe\t"+ - "\u02a8\u0001\u02a8\u0004\u02a8\u1a01\b\u02a8\u000b\u02a8\f\u02a8\u1a02"+ - "\u0001\u02a8\u0004\u02a8\u1a06\b\u02a8\u000b\u02a8\f\u02a8\u1a07\u0001"+ - "\u02a8\u0005\u02a8\u1a0b\b\u02a8\n\u02a8\f\u02a8\u1a0e\t\u02a8\u0001\u02a8"+ - "\u0003\u02a8\u1a11\b\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a9\u0001\u02a9"+ - "\u0001\u02a9\u0001\u02a9\u0005\u02a9\u1a19\b\u02a9\n\u02a9\f\u02a9\u1a1c"+ - "\t\u02a9\u0001\u02a9\u0005\u02a9\u1a1f\b\u02a9\n\u02a9\f\u02a9\u1a22\t"+ - "\u02a9\u0001\u02a9\u0001\u02a9\u0005\u02a9\u1a26\b\u02a9\n\u02a9\f\u02a9"+ - "\u1a29\t\u02a9\u0003\u02a9\u1a2b\b\u02a9\u0001\u02aa\u0001\u02aa\u0001"+ - "\u02aa\u0001\u02ab\u0001\u02ab\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001"+ - "\u02ac\u0001\u02ac\u0001\u02ad\u0001\u02ad\u0003\u02ad\u1a39\b\u02ad\u0001"+ - "\u02ad\u0001\u02ad\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001"+ - "\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001"+ - "\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001"+ - "\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0003\u02ae\u1a51\b\u02ae\u0001"+ - "\u02ae\u0005\u02ae\u1a54\b\u02ae\n\u02ae\f\u02ae\u1a57\t\u02ae\u0001\u02af"+ - "\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02b0\u0001\u02b0"+ - "\u0003\u02b0\u1a60\b\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b1\u0001\u02b1"+ - "\u0001\u02b1\u0001\u02b1\u0001\u02b1\u0005\u02b1\u1a69\b\u02b1\n\u02b1"+ - "\f\u02b1\u1a6c\t\u02b1\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2"+ - "\u0001\u02b2\u0001\u02b3\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\u0001\u02b7"+ - "\u0001\u02b7\u0001\u02b7\u0001\u02b7\u0001\u02b8\u0001\u02b8\u0001\u02b8"+ - "\u0001\u02b8\u0001\u02b8\u0001\u02b9\u0004\u02b9\u1a93\b\u02b9\u000b\u02b9"+ - "\f\u02b9\u1a94\u0001\u02b9\u0001\u02b9\u0005\u02b9\u1a99\b\u02b9\n\u02b9"+ - "\f\u02b9\u1a9c\t\u02b9\u0003\u02b9\u1a9e\b\u02b9\u0001\u02ba\u0001\u02ba"+ - "\u0003\u02ba\u1aa2\b\u02ba\u0001\u02ba\u0001\u02ba\u0001\u02ba\u0001\u02ba"+ - "\u0001\u02ba\u0001\u02ba\u0001\u02ba\u0000\u0000\u02bb\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/\u00161\u00173\u00185\u00197\u001a9\u001b"+ - ";\u001c=\u001d?\u0000A\u0000C\u0000E\u0000G\u001eI\u001fK M!O\"Q#S$U%"+ - "W&Y\'[(])_*a+c,e-g.i/k0m1o2q3s4u5w6y7{8}9\u007f:\u0081;\u0083<\u0085="+ - "\u0087>\u0089?\u008b@\u008dA\u008fB\u0091C\u0093D\u0095E\u0097F\u0099"+ - "G\u009bH\u009dI\u009fJ\u00a1K\u00a3L\u00a5M\u00a7N\u00a9O\u00abP\u00ad"+ - "Q\u00afR\u00b1S\u00b3T\u00b5U\u00b7V\u00b9W\u00bbX\u00bdY\u00bfZ\u00c1"+ - "[\u00c3\\\u00c5]\u00c7^\u00c9_\u00cb`\u00cda\u00cfb\u00d1c\u00d3d\u00d5"+ - "e\u00d7f\u00d9g\u00dbh\u00ddi\u00dfj\u00e1k\u00e3l\u00e5m\u00e7n\u00e9"+ - "o\u00ebp\u00edq\u00efr\u00f1s\u00f3t\u00f5u\u00f7v\u00f9w\u00fbx\u00fd"+ - "y\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\u027f"+ - "\u050b\u0280\u050d\u0000\u050f\u0000\u0511\u0000\u0513\u0281\u0515\u0282"+ - "\u0517\u0283\u0519\u0284\u051b\u0285\u051d\u0286\u051f\u0287\u0521\u0288"+ - "\u0523\u0289\u0525\u028a\u0527\u0000\u0529\u028b\u052b\u028c\u052d\u028d"+ - "\u052f\u0000\u0531\u028e\u0533\u028f\u0535\u0290\u0537\u0291\u0539\u0292"+ - "\u053b\u0293\u053d\u0294\u053f\u0295\u0541\u0296\u0543\u0297\u0545\u0298"+ - "\u0547\u0000\u0549\u0299\u054b\u029a\u054d\u029b\u054f\u029c\u0551\u029d"+ - "\u0553\u029e\u0555\u029f\u0557\u02a0\u0559\u02a1\u055b\u02a2\u055d\u02a3"+ - "\u055f\u02a4\u0561\u0000\u0563\u02a5\u0565\u02a6\u0567\u0000\u0569\u0000"+ - "\u056b\u0000\u056d\u02a7\u056f\u0000\u0571\u0000\u0573\u02ab\u0575\u02a8"+ - "\u0577\u02a9\u0579\u02aa\u0005\u0000\u0001\u0002\u0003\u00043\u0001\u0000"+ - "09\u0002\u0000++--\t\u0000!!##%&**<@^^``||~~\u0002\u0000*+<>\b\u0000!"+ - "!##%&?@^^``||~~\u0002\u0000AAaa\u0002\u0000LLll\u0002\u0000NNnn\u0002"+ - "\u0000YYyy\u0002\u0000SSss\u0002\u0000EEee\u0002\u0000ZZzz\u0002\u0000"+ - "DDdd\u0002\u0000RRrr\u0002\u0000CCcc\u0002\u0000MMmm\u0002\u0000TTtt\u0002"+ - "\u0000IIii\u0002\u0000BBbb\u0002\u0000OOoo\u0002\u0000HHhh\u0002\u0000"+ - "KKkk\u0002\u0000UUuu\u0002\u0000GGgg\u0002\u0000PPpp\u0002\u0000FFff\u0002"+ - "\u0000XXxx\u0002\u0000VVvv\u0002\u0000WWww\u0002\u0000QQqq\u0002\u0000"+ - "JJjj\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\u0000"+ - "01\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$$\u1af2\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\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"+ - "\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\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"+ - "\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\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\u0509\u0001\u0000"+ - "\u0000\u0000\u0000\u050b\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\u052b\u0001\u0000"+ - "\u0000\u0000\u0000\u052d\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\u0543\u0001\u0000\u0000\u0000\u0000\u0545\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\u0000\u0559\u0001\u0000\u0000\u0000\u0000\u055b\u0001\u0000"+ - "\u0000\u0000\u0001\u055d\u0001\u0000\u0000\u0000\u0001\u055f\u0001\u0000"+ - "\u0000\u0000\u0001\u0563\u0001\u0000\u0000\u0000\u0001\u0565\u0001\u0000"+ - "\u0000\u0000\u0002\u0569\u0001\u0000\u0000\u0000\u0002\u056b\u0001\u0000"+ - "\u0000\u0000\u0002\u056d\u0001\u0000\u0000\u0000\u0003\u056f\u0001\u0000"+ - "\u0000\u0000\u0003\u0571\u0001\u0000\u0000\u0000\u0003\u0573\u0001\u0000"+ - "\u0000\u0000\u0003\u0575\u0001\u0000\u0000\u0000\u0004\u0577\u0001\u0000"+ - "\u0000\u0000\u0004\u0579\u0001\u0000\u0000\u0000\u0005\u057b\u0001\u0000"+ - "\u0000\u0000\u0007\u057d\u0001\u0000\u0000\u0000\t\u057f\u0001\u0000\u0000"+ - "\u0000\u000b\u0581\u0001\u0000\u0000\u0000\r\u0583\u0001\u0000\u0000\u0000"+ - "\u000f\u0585\u0001\u0000\u0000\u0000\u0011\u0587\u0001\u0000\u0000\u0000"+ - "\u0013\u0589\u0001\u0000\u0000\u0000\u0015\u058b\u0001\u0000\u0000\u0000"+ - "\u0017\u058d\u0001\u0000\u0000\u0000\u0019\u058f\u0001\u0000\u0000\u0000"+ - "\u001b\u0591\u0001\u0000\u0000\u0000\u001d\u0593\u0001\u0000\u0000\u0000"+ - "\u001f\u0595\u0001\u0000\u0000\u0000!\u0597\u0001\u0000\u0000\u0000#\u0599"+ - "\u0001\u0000\u0000\u0000%\u059b\u0001\u0000\u0000\u0000\'\u059d\u0001"+ - "\u0000\u0000\u0000)\u05a0\u0001\u0000\u0000\u0000+\u05a3\u0001\u0000\u0000"+ - "\u0000-\u05a6\u0001\u0000\u0000\u0000/\u05a9\u0001\u0000\u0000\u00001"+ - "\u05ac\u0001\u0000\u0000\u00003\u05af\u0001\u0000\u0000\u00005\u05b2\u0001"+ - "\u0000\u0000\u00007\u05b5\u0001\u0000\u0000\u00009\u05b8\u0001\u0000\u0000"+ - "\u0000;\u05ba\u0001\u0000\u0000\u0000=\u05d4\u0001\u0000\u0000\u0000?"+ - "\u05df\u0001\u0000\u0000\u0000A\u05ef\u0001\u0000\u0000\u0000C\u05f1\u0001"+ - "\u0000\u0000\u0000E\u05f3\u0001\u0000\u0000\u0000G\u05f5\u0001\u0000\u0000"+ - "\u0000I\u05f9\u0001\u0000\u0000\u0000K\u0601\u0001\u0000\u0000\u0000M"+ - "\u0609\u0001\u0000\u0000\u0000O\u060d\u0001\u0000\u0000\u0000Q\u0611\u0001"+ - "\u0000\u0000\u0000S\u0617\u0001\u0000\u0000\u0000U\u061a\u0001\u0000\u0000"+ - "\u0000W\u061e\u0001\u0000\u0000\u0000Y\u0629\u0001\u0000\u0000\u0000["+ - "\u062e\u0001\u0000\u0000\u0000]\u0633\u0001\u0000\u0000\u0000_\u0638\u0001"+ - "\u0000\u0000\u0000a\u063e\u0001\u0000\u0000\u0000c\u0646\u0001\u0000\u0000"+ - "\u0000e\u064d\u0001\u0000\u0000\u0000g\u0658\u0001\u0000\u0000\u0000i"+ - "\u065f\u0001\u0000\u0000\u0000k\u066f\u0001\u0000\u0000\u0000m\u067c\u0001"+ - "\u0000\u0000\u0000o\u0689\u0001\u0000\u0000\u0000q\u0696\u0001\u0000\u0000"+ - "\u0000s\u06a8\u0001\u0000\u0000\u0000u\u06b5\u0001\u0000\u0000\u0000w"+ - "\u06bd\u0001\u0000\u0000\u0000y\u06c8\u0001\u0000\u0000\u0000{\u06cd\u0001"+ - "\u0000\u0000\u0000}\u06d6\u0001\u0000\u0000\u0000\u007f\u06d9\u0001\u0000"+ - "\u0000\u0000\u0081\u06de\u0001\u0000\u0000\u0000\u0083\u06e5\u0001\u0000"+ - "\u0000\u0000\u0085\u06eb\u0001\u0000\u0000\u0000\u0087\u06f1\u0001\u0000"+ - "\u0000\u0000\u0089\u06f5\u0001\u0000\u0000\u0000\u008b\u06fd\u0001\u0000"+ - "\u0000\u0000\u008d\u0702\u0001\u0000\u0000\u0000\u008f\u0708\u0001\u0000"+ - "\u0000\u0000\u0091\u070e\u0001\u0000\u0000\u0000\u0093\u0715\u0001\u0000"+ - "\u0000\u0000\u0095\u0718\u0001\u0000\u0000\u0000\u0097\u0722\u0001\u0000"+ - "\u0000\u0000\u0099\u072c\u0001\u0000\u0000\u0000\u009b\u0731\u0001\u0000"+ - "\u0000\u0000\u009d\u0739\u0001\u0000\u0000\u0000\u009f\u0741\u0001\u0000"+ - "\u0000\u0000\u00a1\u0747\u0001\u0000\u0000\u0000\u00a3\u0751\u0001\u0000"+ - "\u0000\u0000\u00a5\u0760\u0001\u0000\u0000\u0000\u00a7\u0764\u0001\u0000"+ - "\u0000\u0000\u00a9\u0769\u0001\u0000\u0000\u0000\u00ab\u0770\u0001\u0000"+ - "\u0000\u0000\u00ad\u0773\u0001\u0000\u0000\u0000\u00af\u0778\u0001\u0000"+ - "\u0000\u0000\u00b1\u077b\u0001\u0000\u0000\u0000\u00b3\u0781\u0001\u0000"+ - "\u0000\u0000\u00b5\u0789\u0001\u0000\u0000\u0000\u00b7\u0791\u0001\u0000"+ - "\u0000\u0000\u00b9\u079c\u0001\u0000\u0000\u0000\u00bb\u07a6\u0001\u0000"+ - "\u0000\u0000\u00bd\u07ad\u0001\u0000\u0000\u0000\u00bf\u07ba\u0001\u0000"+ - "\u0000\u0000\u00c1\u07bf\u0001\u0000\u0000\u0000\u00c3\u07c9\u0001\u0000"+ - "\u0000\u0000\u00c5\u07cf\u0001\u0000\u0000\u0000\u00c7\u07d4\u0001\u0000"+ - "\u0000\u0000\u00c9\u07d7\u0001\u0000\u0000\u0000\u00cb\u07dd\u0001\u0000"+ - "\u0000\u0000\u00cd\u07e5\u0001\u0000\u0000\u0000\u00cf\u07ec\u0001\u0000"+ - "\u0000\u0000\u00d1\u07f2\u0001\u0000\u0000\u0000\u00d3\u07fb\u0001\u0000"+ - "\u0000\u0000\u00d5\u0800\u0001\u0000\u0000\u0000\u00d7\u0806\u0001\u0000"+ - "\u0000\u0000\u00d9\u080d\u0001\u0000\u0000\u0000\u00db\u0812\u0001\u0000"+ - "\u0000\u0000\u00dd\u0818\u0001\u0000\u0000\u0000\u00df\u0821\u0001\u0000"+ - "\u0000\u0000\u00e1\u0826\u0001\u0000\u0000\u0000\u00e3\u082c\u0001\u0000"+ - "\u0000\u0000\u00e5\u0833\u0001\u0000\u0000\u0000\u00e7\u0838\u0001\u0000"+ - "\u0000\u0000\u00e9\u0846\u0001\u0000\u0000\u0000\u00eb\u084d\u0001\u0000"+ - "\u0000\u0000\u00ed\u0857\u0001\u0000\u0000\u0000\u00ef\u0864\u0001\u0000"+ - "\u0000\u0000\u00f1\u086a\u0001\u0000\u0000\u0000\u00f3\u0879\u0001\u0000"+ - "\u0000\u0000\u00f5\u0880\u0001\u0000\u0000\u0000\u00f7\u0885\u0001\u0000"+ - "\u0000\u0000\u00f9\u088b\u0001\u0000\u0000\u0000\u00fb\u0891\u0001\u0000"+ - "\u0000\u0000\u00fd\u0894\u0001\u0000\u0000\u0000\u00ff\u089b\u0001\u0000"+ - "\u0000\u0000\u0101\u08a0\u0001\u0000\u0000\u0000\u0103\u08a5\u0001\u0000"+ - "\u0000\u0000\u0105\u08aa\u0001\u0000\u0000\u0000\u0107\u08b2\u0001\u0000"+ - "\u0000\u0000\u0109\u08ba\u0001\u0000\u0000\u0000\u010b\u08c0\u0001\u0000"+ - "\u0000\u0000\u010d\u08c5\u0001\u0000\u0000\u0000\u010f\u08ce\u0001\u0000"+ - "\u0000\u0000\u0111\u08d4\u0001\u0000\u0000\u0000\u0113\u08dc\u0001\u0000"+ - "\u0000\u0000\u0115\u08e4\u0001\u0000\u0000\u0000\u0117\u08ea\u0001\u0000"+ - "\u0000\u0000\u0119\u08f3\u0001\u0000\u0000\u0000\u011b\u08fa\u0001\u0000"+ - "\u0000\u0000\u011d\u0901\u0001\u0000\u0000\u0000\u011f\u0905\u0001\u0000"+ - "\u0000\u0000\u0121\u090b\u0001\u0000\u0000\u0000\u0123\u0911\u0001\u0000"+ - "\u0000\u0000\u0125\u091b\u0001\u0000\u0000\u0000\u0127\u0920\u0001\u0000"+ - "\u0000\u0000\u0129\u0926\u0001\u0000\u0000\u0000\u012b\u092d\u0001\u0000"+ - "\u0000\u0000\u012d\u0937\u0001\u0000\u0000\u0000\u012f\u0942\u0001\u0000"+ - "\u0000\u0000\u0131\u0945\u0001\u0000\u0000\u0000\u0133\u094f\u0001\u0000"+ - "\u0000\u0000\u0135\u0958\u0001\u0000\u0000\u0000\u0137\u095f\u0001\u0000"+ - "\u0000\u0000\u0139\u0965\u0001\u0000\u0000\u0000\u013b\u0968\u0001\u0000"+ - "\u0000\u0000\u013d\u096e\u0001\u0000\u0000\u0000\u013f\u0975\u0001\u0000"+ - "\u0000\u0000\u0141\u097d\u0001\u0000\u0000\u0000\u0143\u0986\u0001\u0000"+ - "\u0000\u0000\u0145\u098e\u0001\u0000\u0000\u0000\u0147\u0994\u0001\u0000"+ - "\u0000\u0000\u0149\u09a4\u0001\u0000\u0000\u0000\u014b\u09af\u0001\u0000"+ - "\u0000\u0000\u014d\u09b5\u0001\u0000\u0000\u0000\u014f\u09bb\u0001\u0000"+ - "\u0000\u0000\u0151\u09c3\u0001\u0000\u0000\u0000\u0153\u09cb\u0001\u0000"+ - "\u0000\u0000\u0155\u09d4\u0001\u0000\u0000\u0000\u0157\u09db\u0001\u0000"+ - "\u0000\u0000\u0159\u09e5\u0001\u0000\u0000\u0000\u015b\u09f3\u0001\u0000"+ - "\u0000\u0000\u015d\u09fe\u0001\u0000\u0000\u0000\u015f\u0a0a\u0001\u0000"+ - "\u0000\u0000\u0161\u0a12\u0001\u0000\u0000\u0000\u0163\u0a1b\u0001\u0000"+ - "\u0000\u0000\u0165\u0a26\u0001\u0000\u0000\u0000\u0167\u0a2b\u0001\u0000"+ - "\u0000\u0000\u0169\u0a30\u0001\u0000\u0000\u0000\u016b\u0a34\u0001\u0000"+ - "\u0000\u0000\u016d\u0a3b\u0001\u0000\u0000\u0000\u016f\u0a41\u0001\u0000"+ - "\u0000\u0000\u0171\u0a46\u0001\u0000\u0000\u0000\u0173\u0a4f\u0001\u0000"+ - "\u0000\u0000\u0175\u0a53\u0001\u0000\u0000\u0000\u0177\u0a5e\u0001\u0000"+ - "\u0000\u0000\u0179\u0a66\u0001\u0000\u0000\u0000\u017b\u0a6f\u0001\u0000"+ - "\u0000\u0000\u017d\u0a78\u0001\u0000\u0000\u0000\u017f\u0a80\u0001\u0000"+ - "\u0000\u0000\u0181\u0a87\u0001\u0000\u0000\u0000\u0183\u0a91\u0001\u0000"+ - "\u0000\u0000\u0185\u0a9c\u0001\u0000\u0000\u0000\u0187\u0aa7\u0001\u0000"+ - "\u0000\u0000\u0189\u0aaf\u0001\u0000\u0000\u0000\u018b\u0ab7\u0001\u0000"+ - "\u0000\u0000\u018d\u0ac0\u0001\u0000\u0000\u0000\u018f\u0ac7\u0001\u0000"+ - "\u0000\u0000\u0191\u0ace\u0001\u0000\u0000\u0000\u0193\u0ad3\u0001\u0000"+ - "\u0000\u0000\u0195\u0ad8\u0001\u0000\u0000\u0000\u0197\u0adf\u0001\u0000"+ - "\u0000\u0000\u0199\u0ae8\u0001\u0000\u0000\u0000\u019b\u0af2\u0001\u0000"+ - "\u0000\u0000\u019d\u0af7\u0001\u0000\u0000\u0000\u019f\u0afe\u0001\u0000"+ - "\u0000\u0000\u01a1\u0b04\u0001\u0000\u0000\u0000\u01a3\u0b0c\u0001\u0000"+ - "\u0000\u0000\u01a5\u0b16\u0001\u0000\u0000\u0000\u01a7\u0b20\u0001\u0000"+ - "\u0000\u0000\u01a9\u0b28\u0001\u0000\u0000\u0000\u01ab\u0b30\u0001\u0000"+ - "\u0000\u0000\u01ad\u0b3a\u0001\u0000\u0000\u0000\u01af\u0b43\u0001\u0000"+ - "\u0000\u0000\u01b1\u0b4a\u0001\u0000\u0000\u0000\u01b3\u0b50\u0001\u0000"+ - "\u0000\u0000\u01b5\u0b5a\u0001\u0000\u0000\u0000\u01b7\u0b60\u0001\u0000"+ - "\u0000\u0000\u01b9\u0b68\u0001\u0000\u0000\u0000\u01bb\u0b71\u0001\u0000"+ - "\u0000\u0000\u01bd\u0b7b\u0001\u0000\u0000\u0000\u01bf\u0b82\u0001\u0000"+ - "\u0000\u0000\u01c1\u0b8a\u0001\u0000\u0000\u0000\u01c3\u0b92\u0001\u0000"+ - "\u0000\u0000\u01c5\u0b99\u0001\u0000\u0000\u0000\u01c7\u0b9e\u0001\u0000"+ - "\u0000\u0000\u01c9\u0ba3\u0001\u0000\u0000\u0000\u01cb\u0bac\u0001\u0000"+ - "\u0000\u0000\u01cd\u0baf\u0001\u0000\u0000\u0000\u01cf\u0bb9\u0001\u0000"+ - "\u0000\u0000\u01d1\u0bc3\u0001\u0000\u0000\u0000\u01d3\u0bcc\u0001\u0000"+ - "\u0000\u0000\u01d5\u0bd6\u0001\u0000\u0000\u0000\u01d7\u0be0\u0001\u0000"+ - "\u0000\u0000\u01d9\u0be6\u0001\u0000\u0000\u0000\u01db\u0bee\u0001\u0000"+ - "\u0000\u0000\u01dd\u0bf6\u0001\u0000\u0000\u0000\u01df\u0bff\u0001\u0000"+ - "\u0000\u0000\u01e1\u0c06\u0001\u0000\u0000\u0000\u01e3\u0c12\u0001\u0000"+ - "\u0000\u0000\u01e5\u0c19\u0001\u0000\u0000\u0000\u01e7\u0c21\u0001\u0000"+ - "\u0000\u0000\u01e9\u0c29\u0001\u0000\u0000\u0000\u01eb\u0c33\u0001\u0000"+ - "\u0000\u0000\u01ed\u0c37\u0001\u0000\u0000\u0000\u01ef\u0c3d\u0001\u0000"+ - "\u0000\u0000\u01f1\u0c46\u0001\u0000\u0000\u0000\u01f3\u0c4c\u0001\u0000"+ - "\u0000\u0000\u01f5\u0c51\u0001\u0000\u0000\u0000\u01f7\u0c5b\u0001\u0000"+ - "\u0000\u0000\u01f9\u0c61\u0001\u0000\u0000\u0000\u01fb\u0c68\u0001\u0000"+ - "\u0000\u0000\u01fd\u0c6d\u0001\u0000\u0000\u0000\u01ff\u0c73\u0001\u0000"+ - "\u0000\u0000\u0201\u0c7c\u0001\u0000\u0000\u0000\u0203\u0c81\u0001\u0000"+ - "\u0000\u0000\u0205\u0c89\u0001\u0000\u0000\u0000\u0207\u0c8f\u0001\u0000"+ - "\u0000\u0000\u0209\u0c97\u0001\u0000\u0000\u0000\u020b\u0ca4\u0001\u0000"+ - "\u0000\u0000\u020d\u0cad\u0001\u0000\u0000\u0000\u020f\u0cb3\u0001\u0000"+ - "\u0000\u0000\u0211\u0cba\u0001\u0000\u0000\u0000\u0213\u0cc3\u0001\u0000"+ - "\u0000\u0000\u0215\u0cc8\u0001\u0000\u0000\u0000\u0217\u0cce\u0001\u0000"+ - "\u0000\u0000\u0219\u0cd3\u0001\u0000\u0000\u0000\u021b\u0cd8\u0001\u0000"+ - "\u0000\u0000\u021d\u0cde\u0001\u0000\u0000\u0000\u021f\u0ce3\u0001\u0000"+ - "\u0000\u0000\u0221\u0ce6\u0001\u0000\u0000\u0000\u0223\u0cee\u0001\u0000"+ - "\u0000\u0000\u0225\u0cf5\u0001\u0000\u0000\u0000\u0227\u0cfc\u0001\u0000"+ - "\u0000\u0000\u0229\u0d02\u0001\u0000\u0000\u0000\u022b\u0d09\u0001\u0000"+ - "\u0000\u0000\u022d\u0d0c\u0001\u0000\u0000\u0000\u022f\u0d10\u0001\u0000"+ - "\u0000\u0000\u0231\u0d15\u0001\u0000\u0000\u0000\u0233\u0d1e\u0001\u0000"+ - "\u0000\u0000\u0235\u0d25\u0001\u0000\u0000\u0000\u0237\u0d2d\u0001\u0000"+ - "\u0000\u0000\u0239\u0d33\u0001\u0000\u0000\u0000\u023b\u0d39\u0001\u0000"+ - "\u0000\u0000\u023d\u0d40\u0001\u0000\u0000\u0000\u023f\u0d48\u0001\u0000"+ - "\u0000\u0000\u0241\u0d52\u0001\u0000\u0000\u0000\u0243\u0d5a\u0001\u0000"+ - "\u0000\u0000\u0245\u0d63\u0001\u0000\u0000\u0000\u0247\u0d69\u0001\u0000"+ - "\u0000\u0000\u0249\u0d73\u0001\u0000\u0000\u0000\u024b\u0d7b\u0001\u0000"+ - "\u0000\u0000\u024d\u0d84\u0001\u0000\u0000\u0000\u024f\u0d8d\u0001\u0000"+ - "\u0000\u0000\u0251\u0d93\u0001\u0000\u0000\u0000\u0253\u0d9e\u0001\u0000"+ - "\u0000\u0000\u0255\u0da9\u0001\u0000\u0000\u0000\u0257\u0db3\u0001\u0000"+ - "\u0000\u0000\u0259\u0dbb\u0001\u0000\u0000\u0000\u025b\u0dc1\u0001\u0000"+ - "\u0000\u0000\u025d\u0dc7\u0001\u0000\u0000\u0000\u025f\u0dcc\u0001\u0000"+ - "\u0000\u0000\u0261\u0dd5\u0001\u0000\u0000\u0000\u0263\u0ddd\u0001\u0000"+ - "\u0000\u0000\u0265\u0de7\u0001\u0000\u0000\u0000\u0267\u0deb\u0001\u0000"+ - "\u0000\u0000\u0269\u0df3\u0001\u0000\u0000\u0000\u026b\u0dfb\u0001\u0000"+ - "\u0000\u0000\u026d\u0e04\u0001\u0000\u0000\u0000\u026f\u0e0c\u0001\u0000"+ - "\u0000\u0000\u0271\u0e13\u0001\u0000\u0000\u0000\u0273\u0e1e\u0001\u0000"+ - "\u0000\u0000\u0275\u0e26\u0001\u0000\u0000\u0000\u0277\u0e2e\u0001\u0000"+ - "\u0000\u0000\u0279\u0e34\u0001\u0000\u0000\u0000\u027b\u0e3c\u0001\u0000"+ - "\u0000\u0000\u027d\u0e45\u0001\u0000\u0000\u0000\u027f\u0e4d\u0001\u0000"+ - "\u0000\u0000\u0281\u0e54\u0001\u0000\u0000\u0000\u0283\u0e59\u0001\u0000"+ - "\u0000\u0000\u0285\u0e62\u0001\u0000\u0000\u0000\u0287\u0e67\u0001\u0000"+ - "\u0000\u0000\u0289\u0e6c\u0001\u0000\u0000\u0000\u028b\u0e76\u0001\u0000"+ - "\u0000\u0000\u028d\u0e7d\u0001\u0000\u0000\u0000\u028f\u0e84\u0001\u0000"+ - "\u0000\u0000\u0291\u0e8b\u0001\u0000\u0000\u0000\u0293\u0e92\u0001\u0000"+ - "\u0000\u0000\u0295\u0e9b\u0001\u0000\u0000\u0000\u0297\u0ea4\u0001\u0000"+ - "\u0000\u0000\u0299\u0eae\u0001\u0000\u0000\u0000\u029b\u0ebb\u0001\u0000"+ - "\u0000\u0000\u029d\u0ec2\u0001\u0000\u0000\u0000\u029f\u0eca\u0001\u0000"+ - "\u0000\u0000\u02a1\u0ece\u0001\u0000\u0000\u0000\u02a3\u0ed4\u0001\u0000"+ - "\u0000\u0000\u02a5\u0ed9\u0001\u0000\u0000\u0000\u02a7\u0ee0\u0001\u0000"+ - "\u0000\u0000\u02a9\u0ee9\u0001\u0000\u0000\u0000\u02ab\u0ef0\u0001\u0000"+ - "\u0000\u0000\u02ad\u0efb\u0001\u0000\u0000\u0000\u02af\u0f01\u0001\u0000"+ - "\u0000\u0000\u02b1\u0f0b\u0001\u0000\u0000\u0000\u02b3\u0f16\u0001\u0000"+ - "\u0000\u0000\u02b5\u0f1c\u0001\u0000\u0000\u0000\u02b7\u0f23\u0001\u0000"+ - "\u0000\u0000\u02b9\u0f2b\u0001\u0000\u0000\u0000\u02bb\u0f32\u0001\u0000"+ - "\u0000\u0000\u02bd\u0f38\u0001\u0000\u0000\u0000\u02bf\u0f3e\u0001\u0000"+ - "\u0000\u0000\u02c1\u0f45\u0001\u0000\u0000\u0000\u02c3\u0f4c\u0001\u0000"+ - "\u0000\u0000\u02c5\u0f57\u0001\u0000\u0000\u0000\u02c7\u0f5c\u0001\u0000"+ - "\u0000\u0000\u02c9\u0f65\u0001\u0000\u0000\u0000\u02cb\u0f6f\u0001\u0000"+ - "\u0000\u0000\u02cd\u0f74\u0001\u0000\u0000\u0000\u02cf\u0f80\u0001\u0000"+ - "\u0000\u0000\u02d1\u0f88\u0001\u0000\u0000\u0000\u02d3\u0f91\u0001\u0000"+ - "\u0000\u0000\u02d5\u0f99\u0001\u0000\u0000\u0000\u02d7\u0f9e\u0001\u0000"+ - "\u0000\u0000\u02d9\u0fa4\u0001\u0000\u0000\u0000\u02db\u0fae\u0001\u0000"+ - "\u0000\u0000\u02dd\u0fba\u0001\u0000"; - private static final String _serializedATNSegment1 = - "\u0000\u0000\u02df\u0fc6\u0001\u0000\u0000\u0000\u02e1\u0fce\u0001\u0000"+ - "\u0000\u0000\u02e3\u0fd7\u0001\u0000\u0000\u0000\u02e5\u0fe0\u0001\u0000"+ - "\u0000\u0000\u02e7\u0fe6\u0001\u0000\u0000\u0000\u02e9\u0fed\u0001\u0000"+ - "\u0000\u0000\u02eb\u0ff4\u0001\u0000\u0000\u0000\u02ed\u0ffa\u0001\u0000"+ - "\u0000\u0000\u02ef\u1003\u0001\u0000\u0000\u0000\u02f1\u100d\u0001\u0000"+ - "\u0000\u0000\u02f3\u1015\u0001\u0000\u0000\u0000\u02f5\u101d\u0001\u0000"+ - "\u0000\u0000\u02f7\u1022\u0001\u0000\u0000\u0000\u02f9\u102b\u0001\u0000"+ - "\u0000\u0000\u02fb\u1036\u0001\u0000\u0000\u0000\u02fd\u103e\u0001\u0000"+ - "\u0000\u0000\u02ff\u1043\u0001\u0000\u0000\u0000\u0301\u104b\u0001\u0000"+ - "\u0000\u0000\u0303\u1051\u0001\u0000\u0000\u0000\u0305\u1055\u0001\u0000"+ - "\u0000\u0000\u0307\u105a\u0001\u0000\u0000\u0000\u0309\u105e\u0001\u0000"+ - "\u0000\u0000\u030b\u1063\u0001\u0000\u0000\u0000\u030d\u106b\u0001\u0000"+ - "\u0000\u0000\u030f\u1072\u0001\u0000\u0000\u0000\u0311\u1076\u0001\u0000"+ - "\u0000\u0000\u0313\u107e\u0001\u0000\u0000\u0000\u0315\u1083\u0001\u0000"+ - "\u0000\u0000\u0317\u108d\u0001\u0000\u0000\u0000\u0319\u1096\u0001\u0000"+ - "\u0000\u0000\u031b\u109a\u0001\u0000\u0000\u0000\u031d\u10a2\u0001\u0000"+ - "\u0000\u0000\u031f\u10a9\u0001\u0000\u0000\u0000\u0321\u10b1\u0001\u0000"+ - "\u0000\u0000\u0323\u10b7\u0001\u0000\u0000\u0000\u0325\u10c0\u0001\u0000"+ - "\u0000\u0000\u0327\u10c6\u0001\u0000\u0000\u0000\u0329\u10ca\u0001\u0000"+ - "\u0000\u0000\u032b\u10d2\u0001\u0000\u0000\u0000\u032d\u10db\u0001\u0000"+ - "\u0000\u0000\u032f\u10e1\u0001\u0000\u0000\u0000\u0331\u10ea\u0001\u0000"+ - "\u0000\u0000\u0333\u10f0\u0001\u0000\u0000\u0000\u0335\u10f5\u0001\u0000"+ - "\u0000\u0000\u0337\u10fc\u0001\u0000\u0000\u0000\u0339\u1104\u0001\u0000"+ - "\u0000\u0000\u033b\u110c\u0001\u0000\u0000\u0000\u033d\u1115\u0001\u0000"+ - "\u0000\u0000\u033f\u111f\u0001\u0000\u0000\u0000\u0341\u1124\u0001\u0000"+ - "\u0000\u0000\u0343\u1128\u0001\u0000\u0000\u0000\u0345\u112e\u0001\u0000"+ - "\u0000\u0000\u0347\u1137\u0001\u0000\u0000\u0000\u0349\u1141\u0001\u0000"+ - "\u0000\u0000\u034b\u1146\u0001\u0000\u0000\u0000\u034d\u1150\u0001\u0000"+ - "\u0000\u0000\u034f\u1156\u0001\u0000\u0000\u0000\u0351\u115b\u0001\u0000"+ - "\u0000\u0000\u0353\u1162\u0001\u0000\u0000\u0000\u0355\u116a\u0001\u0000"+ - "\u0000\u0000\u0357\u1178\u0001\u0000\u0000\u0000\u0359\u1183\u0001\u0000"+ - "\u0000\u0000\u035b\u118a\u0001\u0000\u0000\u0000\u035d\u119d\u0001\u0000"+ - "\u0000\u0000\u035f\u11b9\u0001\u0000\u0000\u0000\u0361\u11d4\u0001\u0000"+ - "\u0000\u0000\u0363\u11da\u0001\u0000\u0000\u0000\u0365\u11e7\u0001\u0000"+ - "\u0000\u0000\u0367\u11f1\u0001\u0000\u0000\u0000\u0369\u11fc\u0001\u0000"+ - "\u0000\u0000\u036b\u1206\u0001\u0000\u0000\u0000\u036d\u1210\u0001\u0000"+ - "\u0000\u0000\u036f\u1219\u0001\u0000\u0000\u0000\u0371\u121f\u0001\u0000"+ - "\u0000\u0000\u0373\u1227\u0001\u0000\u0000\u0000\u0375\u1234\u0001\u0000"+ - "\u0000\u0000\u0377\u1239\u0001\u0000\u0000\u0000\u0379\u1241\u0001\u0000"+ - "\u0000\u0000\u037b\u1248\u0001\u0000\u0000\u0000\u037d\u124f\u0001\u0000"+ - "\u0000\u0000\u037f\u125a\u0001\u0000\u0000\u0000\u0381\u1264\u0001\u0000"+ - "\u0000\u0000\u0383\u126b\u0001\u0000\u0000\u0000\u0385\u1272\u0001\u0000"+ - "\u0000\u0000\u0387\u127a\u0001\u0000\u0000\u0000\u0389\u1282\u0001\u0000"+ - "\u0000\u0000\u038b\u128c\u0001\u0000\u0000\u0000\u038d\u1293\u0001\u0000"+ - "\u0000\u0000\u038f\u129a\u0001\u0000\u0000\u0000\u0391\u12a1\u0001\u0000"+ - "\u0000\u0000\u0393\u12ad\u0001\u0000\u0000\u0000\u0395\u12b1\u0001\u0000"+ - "\u0000\u0000\u0397\u12b5\u0001\u0000\u0000\u0000\u0399\u12bb\u0001\u0000"+ - "\u0000\u0000\u039b\u12c8\u0001\u0000\u0000\u0000\u039d\u12d4\u0001\u0000"+ - "\u0000\u0000\u039f\u12d8\u0001\u0000\u0000\u0000\u03a1\u12dc\u0001\u0000"+ - "\u0000\u0000\u03a3\u12e5\u0001\u0000\u0000\u0000\u03a5\u12ed\u0001\u0000"+ - "\u0000\u0000\u03a7\u12f8\u0001\u0000\u0000\u0000\u03a9\u12fe\u0001\u0000"+ - "\u0000\u0000\u03ab\u1306\u0001\u0000\u0000\u0000\u03ad\u130f\u0001\u0000"+ - "\u0000\u0000\u03af\u1313\u0001\u0000\u0000\u0000\u03b1\u131b\u0001\u0000"+ - "\u0000\u0000\u03b3\u1326\u0001\u0000\u0000\u0000\u03b5\u132f\u0001\u0000"+ - "\u0000\u0000\u03b7\u1334\u0001\u0000\u0000\u0000\u03b9\u133b\u0001\u0000"+ - "\u0000\u0000\u03bb\u1340\u0001\u0000\u0000\u0000\u03bd\u1347\u0001\u0000"+ - "\u0000\u0000\u03bf\u134c\u0001\u0000\u0000\u0000\u03c1\u1355\u0001\u0000"+ - "\u0000\u0000\u03c3\u135a\u0001\u0000\u0000\u0000\u03c5\u1366\u0001\u0000"+ - "\u0000\u0000\u03c7\u1371\u0001\u0000\u0000\u0000\u03c9\u137a\u0001\u0000"+ - "\u0000\u0000\u03cb\u1382\u0001\u0000\u0000\u0000\u03cd\u1390\u0001\u0000"+ - "\u0000\u0000\u03cf\u1398\u0001\u0000\u0000\u0000\u03d1\u13a3\u0001\u0000"+ - "\u0000\u0000\u03d3\u13aa\u0001\u0000\u0000\u0000\u03d5\u13b1\u0001\u0000"+ - "\u0000\u0000\u03d7\u13b8\u0001\u0000\u0000\u0000\u03d9\u13bf\u0001\u0000"+ - "\u0000\u0000\u03db\u13c3\u0001\u0000\u0000\u0000\u03dd\u13c7\u0001\u0000"+ - "\u0000\u0000\u03df\u13cc\u0001\u0000\u0000\u0000\u03e1\u13d1\u0001\u0000"+ - "\u0000\u0000\u03e3\u13d9\u0001\u0000\u0000\u0000\u03e5\u13df\u0001\u0000"+ - "\u0000\u0000\u03e7\u13e9\u0001\u0000\u0000\u0000\u03e9\u13ee\u0001\u0000"+ - "\u0000\u0000\u03eb\u1402\u0001\u0000\u0000\u0000\u03ed\u1414\u0001\u0000"+ - "\u0000\u0000\u03ef\u141a\u0001\u0000\u0000\u0000\u03f1\u1427\u0001\u0000"+ - "\u0000\u0000\u03f3\u1432\u0001\u0000\u0000\u0000\u03f5\u1438\u0001\u0000"+ - "\u0000\u0000\u03f7\u1441\u0001\u0000\u0000\u0000\u03f9\u1449\u0001\u0000"+ - "\u0000\u0000\u03fb\u144d\u0001\u0000\u0000\u0000\u03fd\u1459\u0001\u0000"+ - "\u0000\u0000\u03ff\u1461\u0001\u0000\u0000\u0000\u0401\u1467\u0001\u0000"+ - "\u0000\u0000\u0403\u146d\u0001\u0000\u0000\u0000\u0405\u1475\u0001\u0000"+ - "\u0000\u0000\u0407\u147d\u0001\u0000\u0000\u0000\u0409\u1483\u0001\u0000"+ - "\u0000\u0000\u040b\u1488\u0001\u0000\u0000\u0000\u040d\u148f\u0001\u0000"+ - "\u0000\u0000\u040f\u1495\u0001\u0000\u0000\u0000\u0411\u149b\u0001\u0000"+ - "\u0000\u0000\u0413\u14a4\u0001\u0000\u0000\u0000\u0415\u14aa\u0001\u0000"+ - "\u0000\u0000\u0417\u14ae\u0001\u0000\u0000\u0000\u0419\u14b3\u0001\u0000"+ - "\u0000\u0000\u041b\u14ba\u0001\u0000\u0000\u0000\u041d\u14c2\u0001\u0000"+ - "\u0000\u0000\u041f\u14cc\u0001\u0000\u0000\u0000\u0421\u14d3\u0001\u0000"+ - "\u0000\u0000\u0423\u14d8\u0001\u0000\u0000\u0000\u0425\u14dd\u0001\u0000"+ - "\u0000\u0000\u0427\u14e1\u0001\u0000\u0000\u0000\u0429\u14e6\u0001\u0000"+ - "\u0000\u0000\u042b\u14eb\u0001\u0000\u0000\u0000\u042d\u14f3\u0001\u0000"+ - "\u0000\u0000\u042f\u14fb\u0001\u0000\u0000\u0000\u0431\u14ff\u0001\u0000"+ - "\u0000\u0000\u0433\u1503\u0001\u0000\u0000\u0000\u0435\u150d\u0001\u0000"+ - "\u0000\u0000\u0437\u1513\u0001\u0000\u0000\u0000\u0439\u1517\u0001\u0000"+ - "\u0000\u0000\u043b\u151b\u0001\u0000\u0000\u0000\u043d\u151e\u0001\u0000"+ - "\u0000\u0000\u043f\u1524\u0001\u0000\u0000\u0000\u0441\u152e\u0001\u0000"+ - "\u0000\u0000\u0443\u1532\u0001\u0000\u0000\u0000\u0445\u1535\u0001\u0000"+ - "\u0000\u0000\u0447\u153b\u0001\u0000\u0000\u0000\u0449\u1543\u0001\u0000"+ - "\u0000\u0000\u044b\u1549\u0001\u0000\u0000\u0000\u044d\u154f\u0001\u0000"+ - "\u0000\u0000\u044f\u1554\u0001\u0000\u0000\u0000\u0451\u1559\u0001\u0000"+ - "\u0000\u0000\u0453\u1564\u0001\u0000\u0000\u0000\u0455\u156a\u0001\u0000"+ - "\u0000\u0000\u0457\u1577\u0001\u0000\u0000\u0000\u0459\u157e\u0001\u0000"+ - "\u0000\u0000\u045b\u1586\u0001\u0000\u0000\u0000\u045d\u158b\u0001\u0000"+ - "\u0000\u0000\u045f\u1591\u0001\u0000\u0000\u0000\u0461\u1596\u0001\u0000"+ - "\u0000\u0000\u0463\u159c\u0001\u0000\u0000\u0000\u0465\u15a1\u0001\u0000"+ - "\u0000\u0000\u0467\u15a7\u0001\u0000\u0000\u0000\u0469\u15ad\u0001\u0000"+ - "\u0000\u0000\u046b\u15b4\u0001\u0000\u0000\u0000\u046d\u15b8\u0001\u0000"+ - "\u0000\u0000\u046f\u15bd\u0001\u0000\u0000\u0000\u0471\u15c1\u0001\u0000"+ - "\u0000\u0000\u0473\u15c6\u0001\u0000\u0000\u0000\u0475\u15ca\u0001\u0000"+ - "\u0000\u0000\u0477\u15cf\u0001\u0000\u0000\u0000\u0479\u15d3\u0001\u0000"+ - "\u0000\u0000\u047b\u15d8\u0001\u0000\u0000\u0000\u047d\u15dd\u0001\u0000"+ - "\u0000\u0000\u047f\u15e2\u0001\u0000\u0000\u0000\u0481\u15e7\u0001\u0000"+ - "\u0000\u0000\u0483\u15ed\u0001\u0000\u0000\u0000\u0485\u15f3\u0001\u0000"+ - "\u0000\u0000\u0487\u15f9\u0001\u0000\u0000\u0000\u0489\u1604\u0001\u0000"+ - "\u0000\u0000\u048b\u1610\u0001\u0000\u0000\u0000\u048d\u1621\u0001\u0000"+ - "\u0000\u0000\u048f\u1627\u0001\u0000\u0000\u0000\u0491\u1634\u0001\u0000"+ - "\u0000\u0000\u0493\u163a\u0001\u0000\u0000\u0000\u0495\u1640\u0001\u0000"+ - "\u0000\u0000\u0497\u1646\u0001\u0000\u0000\u0000\u0499\u164a\u0001\u0000"+ - "\u0000\u0000\u049b\u1651\u0001\u0000\u0000\u0000\u049d\u165b\u0001\u0000"+ - "\u0000\u0000\u049f\u1662\u0001\u0000\u0000\u0000\u04a1\u166a\u0001\u0000"+ - "\u0000\u0000\u04a3\u1671\u0001\u0000\u0000\u0000\u04a5\u1676\u0001\u0000"+ - "\u0000\u0000\u04a7\u167c\u0001\u0000\u0000\u0000\u04a9\u1680\u0001\u0000"+ - "\u0000\u0000\u04ab\u168c\u0001\u0000\u0000\u0000\u04ad\u169f\u0001\u0000"+ - "\u0000\u0000\u04af\u16ab\u0001\u0000\u0000\u0000\u04b1\u16b9\u0001\u0000"+ - "\u0000\u0000\u04b3\u16c8\u0001\u0000\u0000\u0000\u04b5\u16d5\u0001\u0000"+ - "\u0000\u0000\u04b7\u16e2\u0001\u0000\u0000\u0000\u04b9\u16ee\u0001\u0000"+ - "\u0000\u0000\u04bb\u16fb\u0001\u0000\u0000\u0000\u04bd\u170a\u0001\u0000"+ - "\u0000\u0000\u04bf\u1719\u0001\u0000\u0000\u0000\u04c1\u172f\u0001\u0000"+ - "\u0000\u0000\u04c3\u1745\u0001\u0000\u0000\u0000\u04c5\u1753\u0001\u0000"+ - "\u0000\u0000\u04c7\u175a\u0001\u0000\u0000\u0000\u04c9\u175f\u0001\u0000"+ - "\u0000\u0000\u04cb\u1765\u0001\u0000\u0000\u0000\u04cd\u1770\u0001\u0000"+ - "\u0000\u0000\u04cf\u177c\u0001\u0000\u0000\u0000\u04d1\u178c\u0001\u0000"+ - "\u0000\u0000\u04d3\u179c\u0001\u0000\u0000\u0000\u04d5\u17a3\u0001\u0000"+ - "\u0000\u0000\u04d7\u17aa\u0001\u0000\u0000\u0000\u04d9\u17b3\u0001\u0000"+ - "\u0000\u0000\u04db\u17ba\u0001\u0000\u0000\u0000\u04dd\u17c4\u0001\u0000"+ - "\u0000\u0000\u04df\u17cb\u0001\u0000\u0000\u0000\u04e1\u17cf\u0001\u0000"+ - "\u0000\u0000\u04e3\u17df\u0001\u0000\u0000\u0000\u04e5\u17e8\u0001\u0000"+ - "\u0000\u0000\u04e7\u17f2\u0001\u0000\u0000\u0000\u04e9\u17fd\u0001\u0000"+ - "\u0000\u0000\u04eb\u1806\u0001\u0000\u0000\u0000\u04ed\u1813\u0001\u0000"+ - "\u0000\u0000\u04ef\u1821\u0001\u0000\u0000\u0000\u04f1\u1832\u0001\u0000"+ - "\u0000\u0000\u04f3\u183c\u0001\u0000\u0000\u0000\u04f5\u184a\u0001\u0000"+ - "\u0000\u0000\u04f7\u1854\u0001\u0000\u0000\u0000\u04f9\u1863\u0001\u0000"+ - "\u0000\u0000\u04fb\u1874\u0001\u0000\u0000\u0000\u04fd\u1878\u0001\u0000"+ - "\u0000\u0000\u04ff\u188c\u0001\u0000\u0000\u0000\u0501\u1896\u0001\u0000"+ - "\u0000\u0000\u0503\u18ac\u0001\u0000\u0000\u0000\u0505\u18b9\u0001\u0000"+ - "\u0000\u0000\u0507\u18c1\u0001\u0000\u0000\u0000\u0509\u18c9\u0001\u0000"+ - "\u0000\u0000\u050b\u18d3\u0001\u0000\u0000\u0000\u050d\u18e0\u0001\u0000"+ - "\u0000\u0000\u050f\u18e4\u0001\u0000\u0000\u0000\u0511\u18e8\u0001\u0000"+ - "\u0000\u0000\u0513\u18ea\u0001\u0000\u0000\u0000\u0515\u18ed\u0001\u0000"+ - "\u0000\u0000\u0517\u18f6\u0001\u0000\u0000\u0000\u0519\u18f9\u0001\u0000"+ - "\u0000\u0000\u051b\u1902\u0001\u0000\u0000\u0000\u051d\u1906\u0001\u0000"+ - "\u0000\u0000\u051f\u190a\u0001\u0000\u0000\u0000\u0521\u190e\u0001\u0000"+ - "\u0000\u0000\u0523\u1912\u0001\u0000\u0000\u0000\u0525\u1915\u0001\u0000"+ - "\u0000\u0000\u0527\u191e\u0001\u0000\u0000\u0000\u0529\u1924\u0001\u0000"+ - "\u0000\u0000\u052b\u1927\u0001\u0000\u0000\u0000\u052d\u192b\u0001\u0000"+ - "\u0000\u0000\u052f\u1934\u0001\u0000\u0000\u0000\u0531\u193b\u0001\u0000"+ - "\u0000\u0000\u0533\u193e\u0001\u0000\u0000\u0000\u0535\u1946\u0001\u0000"+ - "\u0000\u0000\u0537\u1949\u0001\u0000\u0000\u0000\u0539\u194c\u0001\u0000"+ - "\u0000\u0000\u053b\u194f\u0001\u0000\u0000\u0000\u053d\u1957\u0001\u0000"+ - "\u0000\u0000\u053f\u195a\u0001\u0000\u0000\u0000\u0541\u195d\u0001\u0000"+ - "\u0000\u0000\u0543\u195f\u0001\u0000\u0000\u0000\u0545\u1981\u0001\u0000"+ - "\u0000\u0000\u0547\u1984\u0001\u0000\u0000\u0000\u0549\u1988\u0001\u0000"+ - "\u0000\u0000\u054b\u1990\u0001\u0000\u0000\u0000\u054d\u19a0\u0001\u0000"+ - "\u0000\u0000\u054f\u19ab\u0001\u0000\u0000\u0000\u0551\u19af\u0001\u0000"+ - "\u0000\u0000\u0553\u19ba\u0001\u0000\u0000\u0000\u0555\u19e1\u0001\u0000"+ - "\u0000\u0000\u0557\u1a14\u0001\u0000\u0000\u0000\u0559\u1a2c\u0001\u0000"+ - "\u0000\u0000\u055b\u1a2f\u0001\u0000\u0000\u0000\u055d\u1a31\u0001\u0000"+ - "\u0000\u0000\u055f\u1a36\u0001\u0000\u0000\u0000\u0561\u1a55\u0001\u0000"+ - "\u0000\u0000\u0563\u1a58\u0001\u0000\u0000\u0000\u0565\u1a5d\u0001\u0000"+ - "\u0000\u0000\u0567\u1a6a\u0001\u0000\u0000\u0000\u0569\u1a6d\u0001\u0000"+ - "\u0000\u0000\u056b\u1a72\u0001\u0000\u0000\u0000\u056d\u1a78\u0001\u0000"+ - "\u0000\u0000\u056f\u1a7d\u0001\u0000\u0000\u0000\u0571\u1a82\u0001\u0000"+ - "\u0000\u0000\u0573\u1a87\u0001\u0000\u0000\u0000\u0575\u1a8c\u0001\u0000"+ - "\u0000\u0000\u0577\u1a9d\u0001\u0000\u0000\u0000\u0579\u1a9f\u0001\u0000"+ - "\u0000\u0000\u057b\u057c\u0005$\u0000\u0000\u057c\u0006\u0001\u0000\u0000"+ - "\u0000\u057d\u057e\u0005(\u0000\u0000\u057e\b\u0001\u0000\u0000\u0000"+ - "\u057f\u0580\u0005)\u0000\u0000\u0580\n\u0001\u0000\u0000\u0000\u0581"+ - "\u0582\u0005[\u0000\u0000\u0582\f\u0001\u0000\u0000\u0000\u0583\u0584"+ - "\u0005]\u0000\u0000\u0584\u000e\u0001\u0000\u0000\u0000\u0585\u0586\u0005"+ - ",\u0000\u0000\u0586\u0010\u0001\u0000\u0000\u0000\u0587\u0588\u0005;\u0000"+ - "\u0000\u0588\u0012\u0001\u0000\u0000\u0000\u0589\u058a\u0005:\u0000\u0000"+ - "\u058a\u0014\u0001\u0000\u0000\u0000\u058b\u058c\u0005*\u0000\u0000\u058c"+ - "\u0016\u0001\u0000\u0000\u0000\u058d\u058e\u0005=\u0000\u0000\u058e\u0018"+ - "\u0001\u0000\u0000\u0000\u058f\u0590\u0005.\u0000\u0000\u0590\u001a\u0001"+ - "\u0000\u0000\u0000\u0591\u0592\u0005+\u0000\u0000\u0592\u001c\u0001\u0000"+ - "\u0000\u0000\u0593\u0594\u0005-\u0000\u0000\u0594\u001e\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$\u0001\u0000\u0000\u0000\u059b\u059c\u0005>"+ - "\u0000\u0000\u059c&\u0001\u0000\u0000\u0000\u059d\u059e\u0005<\u0000\u0000"+ - "\u059e\u059f\u0005<\u0000\u0000\u059f(\u0001\u0000\u0000\u0000\u05a0\u05a1"+ - "\u0005>\u0000\u0000\u05a1\u05a2\u0005>\u0000\u0000\u05a2*\u0001\u0000"+ - "\u0000\u0000\u05a3\u05a4\u0005:\u0000\u0000\u05a4\u05a5\u0005=\u0000\u0000"+ - "\u05a5,\u0001\u0000\u0000\u0000\u05a6\u05a7\u0005<\u0000\u0000\u05a7\u05a8"+ - "\u0005=\u0000\u0000\u05a8.\u0001\u0000\u0000\u0000\u05a9\u05aa\u0005="+ - "\u0000\u0000\u05aa\u05ab\u0005>\u0000\u0000\u05ab0\u0001\u0000\u0000\u0000"+ - "\u05ac\u05ad\u0005>\u0000\u0000\u05ad\u05ae\u0005=\u0000\u0000\u05ae2"+ - "\u0001\u0000\u0000\u0000\u05af\u05b0\u0005.\u0000\u0000\u05b0\u05b1\u0005"+ - ".\u0000\u0000\u05b14\u0001\u0000\u0000\u0000\u05b2\u05b3\u0005<\u0000"+ - "\u0000\u05b3\u05b4\u0005>\u0000\u0000\u05b46\u0001\u0000\u0000\u0000\u05b5"+ - "\u05b6\u0005:\u0000\u0000\u05b6\u05b7\u0005:\u0000\u0000\u05b78\u0001"+ - "\u0000\u0000\u0000\u05b8\u05b9\u0005%\u0000\u0000\u05b9:\u0001\u0000\u0000"+ - "\u0000\u05ba\u05bc\u0005$\u0000\u0000\u05bb\u05bd\u0007\u0000\u0000\u0000"+ - "\u05bc\u05bb\u0001\u0000\u0000\u0000\u05bd\u05be\u0001\u0000\u0000\u0000"+ - "\u05be\u05bc\u0001\u0000\u0000\u0000\u05be\u05bf\u0001\u0000\u0000\u0000"+ - "\u05bf<\u0001\u0000\u0000\u0000\u05c0\u05d0\u0003A\u001e\u0000\u05c1\u05c5"+ - "\u0005+\u0000\u0000\u05c2\u05c3\u0005-\u0000\u0000\u05c3\u05c5\u0004\u001c"+ - "\u0000\u0000\u05c4\u05c1\u0001\u0000\u0000\u0000\u05c4\u05c2\u0001\u0000"+ - "\u0000\u0000\u05c5\u05c6\u0001\u0000\u0000\u0000\u05c6\u05c4\u0001\u0000"+ - "\u0000\u0000\u05c6\u05c7\u0001\u0000\u0000\u0000\u05c7\u05cb\u0001\u0000"+ - "\u0000\u0000\u05c8\u05cc\u0003A\u001e\u0000\u05c9\u05ca\u0005/\u0000\u0000"+ - "\u05ca\u05cc\u0004\u001c\u0001\u0000\u05cb\u05c8\u0001\u0000\u0000\u0000"+ - "\u05cb\u05c9\u0001\u0000\u0000\u0000\u05cc\u05d0\u0001\u0000\u0000\u0000"+ - "\u05cd\u05ce\u0005/\u0000\u0000\u05ce\u05d0\u0004\u001c\u0002\u0000\u05cf"+ - "\u05c0\u0001\u0000\u0000\u0000\u05cf\u05c4\u0001\u0000\u0000\u0000\u05cf"+ - "\u05cd\u0001\u0000\u0000\u0000\u05d0\u05d1\u0001\u0000\u0000\u0000\u05d1"+ - "\u05cf\u0001\u0000\u0000\u0000\u05d1\u05d2\u0001\u0000\u0000\u0000\u05d2"+ - "\u05d5\u0001\u0000\u0000\u0000\u05d3\u05d5\u0007\u0001\u0000\u0000\u05d4"+ - "\u05cf\u0001\u0000\u0000\u0000\u05d4\u05d3\u0001\u0000\u0000\u0000\u05d5"+ - "\u05d6\u0001\u0000\u0000\u0000\u05d6\u05d7\u0006\u001c\u0000\u0000\u05d7"+ - ">\u0001\u0000\u0000\u0000\u05d8\u05de\u0003C\u001f\u0000\u05d9\u05da\u0005"+ - "-\u0000\u0000\u05da\u05de\u0004\u001d\u0003\u0000\u05db\u05dc\u0005/\u0000"+ - "\u0000\u05dc\u05de\u0004\u001d\u0004\u0000\u05dd\u05d8\u0001\u0000\u0000"+ - "\u0000\u05dd\u05d9\u0001\u0000\u0000\u0000\u05dd\u05db\u0001\u0000\u0000"+ - "\u0000\u05de\u05e1\u0001\u0000\u0000\u0000\u05df\u05dd\u0001\u0000\u0000"+ - "\u0000\u05df\u05e0\u0001\u0000\u0000\u0000\u05e0\u05e2\u0001\u0000\u0000"+ - "\u0000\u05e1\u05df\u0001\u0000\u0000\u0000\u05e2\u05e4\u0003E \u0000\u05e3"+ - "\u05e5\u0003=\u001c\u0000\u05e4\u05e3\u0001\u0000\u0000\u0000\u05e4\u05e5"+ - "\u0001\u0000\u0000\u0000\u05e5\u05e9\u0001\u0000\u0000\u0000\u05e6\u05ea"+ - "\u0005+\u0000\u0000\u05e7\u05e8\u0005-\u0000\u0000\u05e8\u05ea\u0004\u001d"+ - "\u0005\u0000\u05e9\u05e6\u0001\u0000\u0000\u0000\u05e9\u05e7\u0001\u0000"+ - "\u0000\u0000\u05ea\u05eb\u0001\u0000\u0000\u0000\u05eb\u05e9\u0001\u0000"+ - "\u0000\u0000\u05eb\u05ec\u0001\u0000\u0000\u0000\u05ec\u05ed\u0001\u0000"+ - "\u0000\u0000\u05ed\u05ee\u0006\u001d\u0001\u0000\u05ee@\u0001\u0000\u0000"+ - "\u0000\u05ef\u05f0\u0007\u0002\u0000\u0000\u05f0B\u0001\u0000\u0000\u0000"+ - "\u05f1\u05f2\u0007\u0003\u0000\u0000\u05f2D\u0001\u0000\u0000\u0000\u05f3"+ - "\u05f4\u0007\u0004\u0000\u0000\u05f4F\u0001\u0000\u0000\u0000\u05f5\u05f6"+ - "\u0007\u0005\u0000\u0000\u05f6\u05f7\u0007\u0006\u0000\u0000\u05f7\u05f8"+ - "\u0007\u0006\u0000\u0000\u05f8H\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\t\u0000\u0000\u05ff\u0600\u0007\n\u0000"+ - "\u0000\u0600J\u0001\u0000\u0000\u0000\u0601\u0602\u0007\u0005\u0000\u0000"+ - "\u0602\u0603\u0007\u0007\u0000\u0000\u0603\u0604\u0007\u0005\u0000\u0000"+ - "\u0604\u0605\u0007\u0006\u0000\u0000\u0605\u0606\u0007\b\u0000\u0000\u0606"+ - "\u0607\u0007\u000b\u0000\u0000\u0607\u0608\u0007\n\u0000\u0000\u0608L"+ - "\u0001\u0000\u0000\u0000\u0609\u060a\u0007\u0005\u0000\u0000\u060a\u060b"+ - "\u0007\u0007\u0000\u0000\u060b\u060c\u0007\f\u0000\u0000\u060cN\u0001"+ - "\u0000\u0000\u0000\u060d\u060e\u0007\u0005\u0000\u0000\u060e\u060f\u0007"+ - "\u0007\u0000\u0000\u060f\u0610\u0007\b\u0000\u0000\u0610P\u0001\u0000"+ - "\u0000\u0000\u0611\u0612\u0007\u0005\u0000\u0000\u0612\u0613\u0007\r\u0000"+ - "\u0000\u0613\u0614\u0007\r\u0000\u0000\u0614\u0615\u0007\u0005\u0000\u0000"+ - "\u0615\u0616\u0007\b\u0000\u0000\u0616R\u0001\u0000\u0000\u0000\u0617"+ - "\u0618\u0007\u0005\u0000\u0000\u0618\u0619\u0007\t\u0000\u0000\u0619T"+ - "\u0001\u0000\u0000\u0000\u061a\u061b\u0007\u0005\u0000\u0000\u061b\u061c"+ - "\u0007\t\u0000\u0000\u061c\u061d\u0007\u000e\u0000\u0000\u061dV\u0001"+ - "\u0000\u0000\u0000\u061e\u061f\u0007\u0005\u0000\u0000\u061f\u0620\u0007"+ - "\t\u0000\u0000\u0620\u0621\u0007\b\u0000\u0000\u0621\u0622\u0007\u000f"+ - "\u0000\u0000\u0622\u0623\u0007\u000f\u0000\u0000\u0623\u0624\u0007\n\u0000"+ - "\u0000\u0624\u0625\u0007\u0010\u0000\u0000\u0625\u0626\u0007\r\u0000\u0000"+ - "\u0626\u0627\u0007\u0011\u0000\u0000\u0627\u0628\u0007\u000e\u0000\u0000"+ - "\u0628X\u0001\u0000\u0000\u0000\u0629\u062a\u0007\u0012\u0000\u0000\u062a"+ - "\u062b\u0007\u0013\u0000\u0000\u062b\u062c\u0007\u0010\u0000\u0000\u062c"+ - "\u062d\u0007\u0014\u0000\u0000\u062dZ\u0001\u0000\u0000\u0000\u062e\u062f"+ - "\u0007\u000e\u0000\u0000\u062f\u0630\u0007\u0005\u0000\u0000\u0630\u0631"+ - "\u0007\t\u0000\u0000\u0631\u0632\u0007\n\u0000\u0000\u0632\\\u0001\u0000"+ - "\u0000\u0000\u0633\u0634\u0007\u000e\u0000\u0000\u0634\u0635\u0007\u0005"+ - "\u0000\u0000\u0635\u0636\u0007\t\u0000\u0000\u0636\u0637\u0007\u0010\u0000"+ - "\u0000\u0637^\u0001\u0000\u0000\u0000\u0638\u0639\u0007\u000e\u0000\u0000"+ - "\u0639\u063a\u0007\u0014\u0000\u0000\u063a\u063b\u0007\n\u0000\u0000\u063b"+ - "\u063c\u0007\u000e\u0000\u0000\u063c\u063d\u0007\u0015\u0000\u0000\u063d"+ - "`\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\u0006\u0000\u0000\u0642\u0643\u0007\u0005\u0000\u0000\u0643\u0644"+ - "\u0007\u0010\u0000\u0000\u0644\u0645\u0007\n\u0000\u0000\u0645b\u0001"+ - "\u0000\u0000\u0000\u0646\u0647\u0007\u000e\u0000\u0000\u0647\u0648\u0007"+ - "\u0013\u0000\u0000\u0648\u0649\u0007\u0006\u0000\u0000\u0649\u064a\u0007"+ - "\u0016\u0000\u0000\u064a\u064b\u0007\u000f\u0000\u0000\u064b\u064c\u0007"+ - "\u0007\u0000\u0000\u064cd\u0001\u0000\u0000\u0000\u064d\u064e\u0007\u000e"+ - "\u0000\u0000\u064e\u064f\u0007\u0013\u0000\u0000\u064f\u0650\u0007\u0007"+ - "\u0000\u0000\u0650\u0651\u0007\t\u0000\u0000\u0651\u0652\u0007\u0010\u0000"+ - "\u0000\u0652\u0653\u0007\r\u0000\u0000\u0653\u0654\u0007\u0005\u0000\u0000"+ - "\u0654\u0655\u0007\u0011\u0000\u0000\u0655\u0656\u0007\u0007\u0000\u0000"+ - "\u0656\u0657\u0007\u0010\u0000\u0000\u0657f\u0001\u0000\u0000\u0000\u0658"+ - "\u0659\u0007\u000e\u0000\u0000\u0659\u065a\u0007\r\u0000\u0000\u065a\u065b"+ - "\u0007\n\u0000\u0000\u065b\u065c\u0007\u0005\u0000\u0000\u065c\u065d\u0007"+ - "\u0010\u0000\u0000\u065d\u065e\u0007\n\u0000\u0000\u065eh\u0001\u0000"+ - "\u0000\u0000\u065f\u0660\u0007\u000e\u0000\u0000\u0660\u0661\u0007\u0016"+ - "\u0000\u0000\u0661\u0662\u0007\r\u0000\u0000\u0662\u0663\u0007\r\u0000"+ - "\u0000\u0663\u0664\u0007\n\u0000\u0000\u0664\u0665\u0007\u0007\u0000\u0000"+ - "\u0665\u0666\u0007\u0010\u0000\u0000\u0666\u0667\u0005_\u0000\u0000\u0667"+ - "\u0668\u0007\u000e\u0000\u0000\u0668\u0669\u0007\u0005\u0000\u0000\u0669"+ - "\u066a\u0007\u0010\u0000\u0000\u066a\u066b\u0007\u0005\u0000\u0000\u066b"+ - "\u066c\u0007\u0006\u0000\u0000\u066c\u066d\u0007\u0013\u0000\u0000\u066d"+ - "\u066e\u0007\u0017\u0000\u0000\u066ej\u0001\u0000\u0000\u0000\u066f\u0670"+ - "\u0007\u000e\u0000\u0000\u0670\u0671\u0007\u0016\u0000\u0000\u0671\u0672"+ - "\u0007\r\u0000\u0000\u0672\u0673\u0007\r\u0000\u0000\u0673\u0674\u0007"+ - "\n\u0000\u0000\u0674\u0675\u0007\u0007\u0000\u0000\u0675\u0676\u0007\u0010"+ - "\u0000\u0000\u0676\u0677\u0005_\u0000\u0000\u0677\u0678\u0007\f\u0000"+ - "\u0000\u0678\u0679\u0007\u0005\u0000\u0000\u0679\u067a\u0007\u0010\u0000"+ - "\u0000\u067a\u067b\u0007\n\u0000\u0000\u067bl\u0001\u0000\u0000\u0000"+ - "\u067c\u067d\u0007\u000e\u0000\u0000\u067d\u067e\u0007\u0016\u0000\u0000"+ - "\u067e\u067f\u0007\r\u0000\u0000\u067f\u0680\u0007\r\u0000\u0000\u0680"+ - "\u0681\u0007\n\u0000\u0000\u0681\u0682\u0007\u0007\u0000\u0000\u0682\u0683"+ - "\u0007\u0010\u0000\u0000\u0683\u0684\u0005_\u0000\u0000\u0684\u0685\u0007"+ - "\r\u0000\u0000\u0685\u0686\u0007\u0013\u0000\u0000\u0686\u0687\u0007\u0006"+ - "\u0000\u0000\u0687\u0688\u0007\n\u0000\u0000\u0688n\u0001\u0000\u0000"+ - "\u0000\u0689\u068a\u0007\u000e\u0000\u0000\u068a\u068b\u0007\u0016\u0000"+ - "\u0000\u068b\u068c\u0007\r\u0000\u0000\u068c\u068d\u0007\r\u0000\u0000"+ - "\u068d\u068e\u0007\n\u0000\u0000\u068e\u068f\u0007\u0007\u0000\u0000\u068f"+ - "\u0690\u0007\u0010\u0000\u0000\u0690\u0691\u0005_\u0000\u0000\u0691\u0692"+ - "\u0007\u0010\u0000\u0000\u0692\u0693\u0007\u0011\u0000\u0000\u0693\u0694"+ - "\u0007\u000f\u0000\u0000\u0694\u0695\u0007\n\u0000\u0000\u0695p\u0001"+ - "\u0000\u0000\u0000\u0696\u0697\u0007\u000e\u0000\u0000\u0697\u0698\u0007"+ - "\u0016\u0000\u0000\u0698\u0699\u0007\r\u0000\u0000\u0699\u069a\u0007\r"+ - "\u0000\u0000\u069a\u069b\u0007\n\u0000\u0000\u069b\u069c\u0007\u0007\u0000"+ - "\u0000\u069c\u069d\u0007\u0010\u0000\u0000\u069d\u069e\u0005_\u0000\u0000"+ - "\u069e\u069f\u0007\u0010\u0000\u0000\u069f\u06a0\u0007\u0011\u0000\u0000"+ - "\u06a0\u06a1\u0007\u000f\u0000\u0000\u06a1\u06a2\u0007\n\u0000\u0000\u06a2"+ - "\u06a3\u0007\t\u0000\u0000\u06a3\u06a4\u0007\u0010\u0000\u0000\u06a4\u06a5"+ - "\u0007\u0005\u0000\u0000\u06a5\u06a6\u0007\u000f\u0000\u0000\u06a6\u06a7"+ - "\u0007\u0018\u0000\u0000\u06a7r\u0001\u0000\u0000\u0000\u06a8\u06a9\u0007"+ - "\u000e\u0000\u0000\u06a9\u06aa\u0007\u0016\u0000\u0000\u06aa\u06ab\u0007"+ - "\r\u0000\u0000\u06ab\u06ac\u0007\r\u0000\u0000\u06ac\u06ad\u0007\n\u0000"+ - "\u0000\u06ad\u06ae\u0007\u0007\u0000\u0000\u06ae\u06af\u0007\u0010\u0000"+ - "\u0000\u06af\u06b0\u0005_\u0000\u0000\u06b0\u06b1\u0007\u0016\u0000\u0000"+ - "\u06b1\u06b2\u0007\t\u0000\u0000\u06b2\u06b3\u0007\n\u0000\u0000\u06b3"+ - "\u06b4\u0007\r\u0000\u0000\u06b4t\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\u0005\u0000\u0000\u06b9\u06ba\u0007"+ - "\u0016\u0000\u0000\u06ba\u06bb\u0007\u0006\u0000\u0000\u06bb\u06bc\u0007"+ - "\u0010\u0000\u0000\u06bcv\u0001\u0000\u0000\u0000\u06bd\u06be\u0007\f"+ - "\u0000\u0000\u06be\u06bf\u0007\n\u0000\u0000\u06bf\u06c0\u0007\u0019\u0000"+ - "\u0000\u06c0\u06c1\u0007\n\u0000\u0000\u06c1\u06c2\u0007\r\u0000\u0000"+ - "\u06c2\u06c3\u0007\r\u0000\u0000\u06c3\u06c4\u0007\u0005\u0000\u0000\u06c4"+ - "\u06c5\u0007\u0012\u0000\u0000\u06c5\u06c6\u0007\u0006\u0000\u0000\u06c6"+ - "\u06c7\u0007\n\u0000\u0000\u06c7x\u0001\u0000\u0000\u0000\u06c8\u06c9"+ - "\u0007\f\u0000\u0000\u06c9\u06ca\u0007\n\u0000\u0000\u06ca\u06cb\u0007"+ - "\t\u0000\u0000\u06cb\u06cc\u0007\u000e\u0000\u0000\u06ccz\u0001\u0000"+ - "\u0000\u0000\u06cd\u06ce\u0007\f\u0000\u0000\u06ce\u06cf\u0007\u0011\u0000"+ - "\u0000\u06cf\u06d0\u0007\t\u0000\u0000\u06d0\u06d1\u0007\u0010\u0000\u0000"+ - "\u06d1\u06d2\u0007\u0011\u0000\u0000\u06d2\u06d3\u0007\u0007\u0000\u0000"+ - "\u06d3\u06d4\u0007\u000e\u0000\u0000\u06d4\u06d5\u0007\u0010\u0000\u0000"+ - "\u06d5|\u0001\u0000\u0000\u0000\u06d6\u06d7\u0007\f\u0000\u0000\u06d7"+ - "\u06d8\u0007\u0013\u0000\u0000\u06d8~\u0001\u0000\u0000\u0000\u06d9\u06da"+ - "\u0007\n\u0000\u0000\u06da\u06db\u0007\u0006\u0000\u0000\u06db\u06dc\u0007"+ - "\t\u0000\u0000\u06dc\u06dd\u0007\n\u0000\u0000\u06dd\u0080\u0001\u0000"+ - "\u0000\u0000\u06de\u06df\u0007\n\u0000\u0000\u06df\u06e0\u0007\u001a\u0000"+ - "\u0000\u06e0\u06e1\u0007\u000e\u0000\u0000\u06e1\u06e2\u0007\n\u0000\u0000"+ - "\u06e2\u06e3\u0007\u0018\u0000\u0000\u06e3\u06e4\u0007\u0010\u0000\u0000"+ - "\u06e4\u0082\u0001\u0000\u0000\u0000\u06e5\u06e6\u0007\u0019\u0000\u0000"+ - "\u06e6\u06e7\u0007\u0005\u0000\u0000\u06e7\u06e8\u0007\u0006\u0000\u0000"+ - "\u06e8\u06e9\u0007\t\u0000\u0000\u06e9\u06ea\u0007\n\u0000\u0000\u06ea"+ - "\u0084\u0001\u0000\u0000\u0000\u06eb\u06ec\u0007\u0019\u0000\u0000\u06ec"+ - "\u06ed\u0007\n\u0000\u0000\u06ed\u06ee\u0007\u0010\u0000\u0000\u06ee\u06ef"+ - "\u0007\u000e\u0000\u0000\u06ef\u06f0\u0007\u0014\u0000\u0000\u06f0\u0086"+ - "\u0001\u0000\u0000\u0000\u06f1\u06f2\u0007\u0019\u0000\u0000\u06f2\u06f3"+ - "\u0007\u0013\u0000\u0000\u06f3\u06f4\u0007\r\u0000\u0000\u06f4\u0088\u0001"+ - "\u0000\u0000\u0000\u06f5\u06f6\u0007\u0019\u0000\u0000\u06f6\u06f7\u0007"+ - "\u0013\u0000\u0000\u06f7\u06f8\u0007\r\u0000\u0000\u06f8\u06f9\u0007\n"+ - "\u0000\u0000\u06f9\u06fa\u0007\u0011\u0000\u0000\u06fa\u06fb\u0007\u0017"+ - "\u0000\u0000\u06fb\u06fc\u0007\u0007\u0000\u0000\u06fc\u008a\u0001\u0000"+ - "\u0000\u0000\u06fd\u06fe\u0007\u0019\u0000\u0000\u06fe\u06ff\u0007\r\u0000"+ - "\u0000\u06ff\u0700\u0007\u0013\u0000\u0000\u0700\u0701\u0007\u000f\u0000"+ - "\u0000\u0701\u008c\u0001\u0000\u0000\u0000\u0702\u0703\u0007\u0017\u0000"+ - "\u0000\u0703\u0704\u0007\r\u0000\u0000\u0704\u0705\u0007\u0005\u0000\u0000"+ - "\u0705\u0706\u0007\u0007\u0000\u0000\u0706\u0707\u0007\u0010\u0000\u0000"+ - "\u0707\u008e\u0001\u0000\u0000\u0000\u0708\u0709\u0007\u0017\u0000\u0000"+ - "\u0709\u070a\u0007\r\u0000\u0000\u070a\u070b\u0007\u0013\u0000\u0000\u070b"+ - "\u070c\u0007\u0016\u0000\u0000\u070c\u070d\u0007\u0018\u0000\u0000\u070d"+ - "\u0090\u0001\u0000\u0000\u0000\u070e\u070f\u0007\u0014\u0000\u0000\u070f"+ - "\u0710\u0007\u0005\u0000\u0000\u0710\u0711\u0007\u001b\u0000\u0000\u0711"+ - "\u0712\u0007\u0011\u0000\u0000\u0712\u0713\u0007\u0007\u0000\u0000\u0713"+ - "\u0714\u0007\u0017\u0000\u0000\u0714\u0092\u0001\u0000\u0000\u0000\u0715"+ - "\u0716\u0007\u0011\u0000\u0000\u0716\u0717\u0007\u0007\u0000\u0000\u0717"+ - "\u0094\u0001\u0000\u0000\u0000\u0718\u0719\u0007\u0011\u0000\u0000\u0719"+ - "\u071a\u0007\u0007\u0000\u0000\u071a\u071b\u0007\u0011\u0000\u0000\u071b"+ - "\u071c\u0007\u0010\u0000\u0000\u071c\u071d\u0007\u0011\u0000\u0000\u071d"+ - "\u071e\u0007\u0005\u0000\u0000\u071e\u071f\u0007\u0006\u0000\u0000\u071f"+ - "\u0720\u0007\u0006\u0000\u0000\u0720\u0721\u0007\b\u0000\u0000\u0721\u0096"+ - "\u0001\u0000\u0000\u0000\u0722\u0723\u0007\u0011\u0000\u0000\u0723\u0724"+ - "\u0007\u0007\u0000\u0000\u0724\u0725\u0007\u0010\u0000\u0000\u0725\u0726"+ - "\u0007\n\u0000\u0000\u0726\u0727\u0007\r\u0000\u0000\u0727\u0728\u0007"+ - "\t\u0000\u0000\u0728\u0729\u0007\n\u0000\u0000\u0729\u072a\u0007\u000e"+ - "\u0000\u0000\u072a\u072b\u0007\u0010\u0000\u0000\u072b\u0098\u0001\u0000"+ - "\u0000\u0000\u072c\u072d\u0007\u0011\u0000\u0000\u072d\u072e\u0007\u0007"+ - "\u0000\u0000\u072e\u072f\u0007\u0010\u0000\u0000\u072f\u0730\u0007\u0013"+ - "\u0000\u0000\u0730\u009a\u0001\u0000\u0000\u0000\u0731\u0732\u0007\u0006"+ - "\u0000\u0000\u0732\u0733\u0007\u0005\u0000\u0000\u0733\u0734\u0007\u0010"+ - "\u0000\u0000\u0734\u0735\u0007\n\u0000\u0000\u0735\u0736\u0007\r\u0000"+ - "\u0000\u0736\u0737\u0007\u0005\u0000\u0000\u0737\u0738\u0007\u0006\u0000"+ - "\u0000\u0738\u009c\u0001\u0000\u0000\u0000\u0739\u073a\u0007\u0006\u0000"+ - "\u0000\u073a\u073b\u0007\n\u0000\u0000\u073b\u073c\u0007\u0005\u0000\u0000"+ - "\u073c\u073d\u0007\f\u0000\u0000\u073d\u073e\u0007\u0011\u0000\u0000\u073e"+ - "\u073f\u0007\u0007\u0000\u0000\u073f\u0740\u0007\u0017\u0000\u0000\u0740"+ - "\u009e\u0001\u0000\u0000\u0000\u0741\u0742\u0007\u0006\u0000\u0000\u0742"+ - "\u0743\u0007\u0011\u0000\u0000\u0743\u0744\u0007\u000f\u0000\u0000\u0744"+ - "\u0745\u0007\u0011\u0000\u0000\u0745\u0746\u0007\u0010\u0000\u0000\u0746"+ - "\u00a0\u0001\u0000\u0000\u0000\u0747\u0748\u0007\u0006\u0000\u0000\u0748"+ - "\u0749\u0007\u0013\u0000\u0000\u0749\u074a\u0007\u000e\u0000\u0000\u074a"+ - "\u074b\u0007\u0005\u0000\u0000\u074b\u074c\u0007\u0006\u0000\u0000\u074c"+ - "\u074d\u0007\u0010\u0000\u0000\u074d\u074e\u0007\u0011\u0000\u0000\u074e"+ - "\u074f\u0007\u000f\u0000\u0000\u074f\u0750\u0007\n\u0000\u0000\u0750\u00a2"+ - "\u0001\u0000\u0000\u0000\u0751\u0752\u0007\u0006\u0000\u0000\u0752\u0753"+ - "\u0007\u0013\u0000\u0000\u0753\u0754\u0007\u000e\u0000\u0000\u0754\u0755"+ - "\u0007\u0005\u0000\u0000\u0755\u0756\u0007\u0006\u0000\u0000\u0756\u0757"+ - "\u0007\u0010\u0000\u0000\u0757\u0758\u0007\u0011\u0000\u0000\u0758\u0759"+ - "\u0007\u000f\u0000\u0000\u0759\u075a\u0007\n\u0000\u0000\u075a\u075b\u0007"+ - "\t\u0000\u0000\u075b\u075c\u0007\u0010\u0000\u0000\u075c\u075d\u0007\u0005"+ - "\u0000\u0000\u075d\u075e\u0007\u000f\u0000\u0000\u075e\u075f\u0007\u0018"+ - "\u0000\u0000\u075f\u00a4\u0001\u0000\u0000\u0000\u0760\u0761\u0007\u0007"+ - "\u0000\u0000\u0761\u0762\u0007\u0013\u0000\u0000\u0762\u0763\u0007\u0010"+ - "\u0000\u0000\u0763\u00a6\u0001\u0000\u0000\u0000\u0764\u0765\u0007\u0007"+ - "\u0000\u0000\u0765\u0766\u0007\u0016\u0000\u0000\u0766\u0767\u0007\u0006"+ - "\u0000\u0000\u0767\u0768\u0007\u0006\u0000\u0000\u0768\u00a8\u0001\u0000"+ - "\u0000\u0000\u0769\u076a\u0007\u0013\u0000\u0000\u076a\u076b\u0007\u0019"+ - "\u0000\u0000\u076b\u076c\u0007\u0019\u0000\u0000\u076c\u076d\u0007\t\u0000"+ - "\u0000\u076d\u076e\u0007\n\u0000\u0000\u076e\u076f\u0007\u0010\u0000\u0000"+ - "\u076f\u00aa\u0001\u0000\u0000\u0000\u0770\u0771\u0007\u0013\u0000\u0000"+ - "\u0771\u0772\u0007\u0007\u0000\u0000\u0772\u00ac\u0001\u0000\u0000\u0000"+ - "\u0773\u0774\u0007\u0013\u0000\u0000\u0774\u0775\u0007\u0007\u0000\u0000"+ - "\u0775\u0776\u0007\u0006\u0000\u0000\u0776\u0777\u0007\b\u0000\u0000\u0777"+ - "\u00ae\u0001\u0000\u0000\u0000\u0778\u0779\u0007\u0013\u0000\u0000\u0779"+ - "\u077a\u0007\r\u0000\u0000\u077a\u00b0\u0001\u0000\u0000\u0000\u077b\u077c"+ - "\u0007\u0013\u0000\u0000\u077c\u077d\u0007\r\u0000\u0000\u077d\u077e\u0007"+ - "\f\u0000\u0000\u077e\u077f\u0007\n\u0000\u0000\u077f\u0780\u0007\r\u0000"+ - "\u0000\u0780\u00b2\u0001\u0000\u0000\u0000\u0781\u0782\u0007\u0018\u0000"+ - "\u0000\u0782\u0783\u0007\u0006\u0000\u0000\u0783\u0784\u0007\u0005\u0000"+ - "\u0000\u0784\u0785\u0007\u000e\u0000\u0000\u0785\u0786\u0007\u0011\u0000"+ - "\u0000\u0786\u0787\u0007\u0007\u0000\u0000\u0787\u0788\u0007\u0017\u0000"+ - "\u0000\u0788\u00b4\u0001\u0000\u0000\u0000\u0789\u078a\u0007\u0018\u0000"+ - "\u0000\u078a\u078b\u0007\r\u0000\u0000\u078b\u078c\u0007\u0011\u0000\u0000"+ - "\u078c\u078d\u0007\u000f\u0000\u0000\u078d\u078e\u0007\u0005\u0000\u0000"+ - "\u078e\u078f\u0007\r\u0000\u0000\u078f\u0790\u0007\b\u0000\u0000\u0790"+ - "\u00b6\u0001\u0000\u0000\u0000\u0791\u0792\u0007\r\u0000\u0000\u0792\u0793"+ - "\u0007\n\u0000\u0000\u0793\u0794\u0007\u0019\u0000\u0000\u0794\u0795\u0007"+ - "\n\u0000\u0000\u0795\u0796\u0007\r\u0000\u0000\u0796\u0797\u0007\n\u0000"+ - "\u0000\u0797\u0798\u0007\u0007\u0000\u0000\u0798\u0799\u0007\u000e\u0000"+ - "\u0000\u0799\u079a\u0007\n\u0000\u0000\u079a\u079b\u0007\t\u0000\u0000"+ - "\u079b\u00b8\u0001\u0000\u0000\u0000\u079c\u079d\u0007\r\u0000\u0000\u079d"+ - "\u079e\u0007\n\u0000\u0000\u079e\u079f\u0007\u0010\u0000\u0000\u079f\u07a0"+ - "\u0007\u0016\u0000\u0000\u07a0\u07a1\u0007\r\u0000\u0000\u07a1\u07a2\u0007"+ - "\u0007\u0000\u0000\u07a2\u07a3\u0007\u0011\u0000\u0000\u07a3\u07a4\u0007"+ - "\u0007\u0000\u0000\u07a4\u07a5\u0007\u0017\u0000\u0000\u07a5\u00ba\u0001"+ - "\u0000\u0000\u0000\u07a6\u07a7\u0007\t\u0000\u0000\u07a7\u07a8\u0007\n"+ - "\u0000\u0000\u07a8\u07a9\u0007\u0006\u0000\u0000\u07a9\u07aa\u0007\n\u0000"+ - "\u0000\u07aa\u07ab\u0007\u000e\u0000\u0000\u07ab\u07ac\u0007\u0010\u0000"+ - "\u0000\u07ac\u00bc\u0001\u0000\u0000\u0000\u07ad\u07ae\u0007\t\u0000\u0000"+ - "\u07ae\u07af\u0007\n\u0000\u0000\u07af\u07b0\u0007\t\u0000\u0000\u07b0"+ - "\u07b1\u0007\t\u0000\u0000\u07b1\u07b2\u0007\u0011\u0000\u0000\u07b2\u07b3"+ - "\u0007\u0013\u0000\u0000\u07b3\u07b4\u0007\u0007\u0000\u0000\u07b4\u07b5"+ - "\u0005_\u0000\u0000\u07b5\u07b6\u0007\u0016\u0000\u0000\u07b6\u07b7\u0007"+ - "\t\u0000\u0000\u07b7\u07b8\u0007\n\u0000\u0000\u07b8\u07b9\u0007\r\u0000"+ - "\u0000\u07b9\u00be\u0001\u0000\u0000\u0000\u07ba\u07bb\u0007\t\u0000\u0000"+ - "\u07bb\u07bc\u0007\u0013\u0000\u0000\u07bc\u07bd\u0007\u000f\u0000\u0000"+ - "\u07bd\u07be\u0007\n\u0000\u0000\u07be\u00c0\u0001\u0000\u0000\u0000\u07bf"+ - "\u07c0\u0007\t\u0000\u0000\u07c0\u07c1\u0007\b\u0000\u0000\u07c1\u07c2"+ - "\u0007\u000f\u0000\u0000\u07c2\u07c3\u0007\u000f\u0000\u0000\u07c3\u07c4"+ - "\u0007\n\u0000\u0000\u07c4\u07c5\u0007\u0010\u0000\u0000\u07c5\u07c6\u0007"+ - "\r\u0000\u0000\u07c6\u07c7\u0007\u0011\u0000\u0000\u07c7\u07c8\u0007\u000e"+ - "\u0000\u0000\u07c8\u00c2\u0001\u0000\u0000\u0000\u07c9\u07ca\u0007\u0010"+ - "\u0000\u0000\u07ca\u07cb\u0007\u0005\u0000\u0000\u07cb\u07cc\u0007\u0012"+ - "\u0000\u0000\u07cc\u07cd\u0007\u0006\u0000\u0000\u07cd\u07ce\u0007\n\u0000"+ - "\u0000\u07ce\u00c4\u0001\u0000\u0000\u0000\u07cf\u07d0\u0007\u0010\u0000"+ - "\u0000\u07d0\u07d1\u0007\u0014\u0000\u0000\u07d1\u07d2\u0007\n\u0000\u0000"+ - "\u07d2\u07d3\u0007\u0007\u0000\u0000\u07d3\u00c6\u0001\u0000\u0000\u0000"+ - "\u07d4\u07d5\u0007\u0010\u0000\u0000\u07d5\u07d6\u0007\u0013\u0000\u0000"+ - "\u07d6\u00c8\u0001\u0000\u0000\u0000\u07d7\u07d8\u0007\u0010\u0000\u0000"+ - "\u07d8\u07d9\u0007\u0013\u0000\u0000\u07d9\u07da\u0007\u0018\u0000\u0000"+ - "\u07da\u07db\u0007\u0011\u0000\u0000\u07db\u07dc\u0007\u000e\u0000\u0000"+ - "\u07dc\u00ca\u0001\u0000\u0000\u0000\u07dd\u07de\u0007\u000b\u0000\u0000"+ - "\u07de\u07df\u0007\t\u0000\u0000\u07df\u07e0\u0007\u0010\u0000\u0000\u07e0"+ - "\u07e1\u0007\r\u0000\u0000\u07e1\u07e2\u0007\n\u0000\u0000\u07e2\u07e3"+ - "\u0007\u0005\u0000\u0000\u07e3\u07e4\u0007\u000f\u0000\u0000\u07e4\u00cc"+ - "\u0001\u0000\u0000\u0000\u07e5\u07e6\u0007\u000b\u0000\u0000\u07e6\u07e7"+ - "\u0007\u0010\u0000\u0000\u07e7\u07e8\u0007\u0005\u0000\u0000\u07e8\u07e9"+ - "\u0007\u0012\u0000\u0000\u07e9\u07ea\u0007\u0006\u0000\u0000\u07ea\u07eb"+ - "\u0007\n\u0000\u0000\u07eb\u00ce\u0001\u0000\u0000\u0000\u07ec\u07ed\u0007"+ - "\u000b\u0000\u0000\u07ed\u07ee\u0007\u001b\u0000\u0000\u07ee\u07ef\u0007"+ - "\u0011\u0000\u0000\u07ef\u07f0\u0007\n\u0000\u0000\u07f0\u07f1\u0007\u001c"+ - "\u0000\u0000\u07f1\u00d0\u0001\u0000\u0000\u0000\u07f2\u07f3\u0007\u0010"+ - "\u0000\u0000\u07f3\u07f4\u0007\r\u0000\u0000\u07f4\u07f5\u0007\u0005\u0000"+ - "\u0000\u07f5\u07f6\u0007\u0011\u0000\u0000\u07f6\u07f7\u0007\u0006\u0000"+ - "\u0000\u07f7\u07f8\u0007\u0011\u0000\u0000\u07f8\u07f9\u0007\u0007\u0000"+ - "\u0000\u07f9\u07fa\u0007\u0017\u0000\u0000\u07fa\u00d2\u0001\u0000\u0000"+ - "\u0000\u07fb\u07fc\u0007\u0010\u0000\u0000\u07fc\u07fd\u0007\r\u0000\u0000"+ - "\u07fd\u07fe\u0007\u0016\u0000\u0000\u07fe\u07ff\u0007\n\u0000\u0000\u07ff"+ - "\u00d4\u0001\u0000\u0000\u0000\u0800\u0801\u0007\u0016\u0000\u0000\u0801"+ - "\u0802\u0007\u0007\u0000\u0000\u0802\u0803\u0007\u0011\u0000\u0000\u0803"+ - "\u0804\u0007\u0013\u0000\u0000\u0804\u0805\u0007\u0007\u0000\u0000\u0805"+ - "\u00d6\u0001\u0000\u0000\u0000\u0806\u0807\u0007\u0016\u0000\u0000\u0807"+ - "\u0808\u0007\u0007\u0000\u0000\u0808\u0809\u0007\u0011\u0000\u0000\u0809"+ - "\u080a\u0007\u001d\u0000\u0000\u080a\u080b\u0007\u0016\u0000\u0000\u080b"+ - "\u080c\u0007\n\u0000\u0000\u080c\u00d8\u0001\u0000\u0000\u0000\u080d\u080e"+ - "\u0007\u0016\u0000\u0000\u080e\u080f\u0007\t\u0000\u0000\u080f\u0810\u0007"+ - "\n\u0000\u0000\u0810\u0811\u0007\r\u0000\u0000\u0811\u00da\u0001\u0000"+ - "\u0000\u0000\u0812\u0813\u0007\u0016\u0000\u0000\u0813\u0814\u0007\t\u0000"+ - "\u0000\u0814\u0815\u0007\u0011\u0000\u0000\u0815\u0816\u0007\u0007\u0000"+ - "\u0000\u0816\u0817\u0007\u0017\u0000\u0000\u0817\u00dc\u0001\u0000\u0000"+ - "\u0000\u0818\u0819\u0007\u001b\u0000\u0000\u0819\u081a\u0007\u0005\u0000"+ - "\u0000\u081a\u081b\u0007\r\u0000\u0000\u081b\u081c\u0007\u0011\u0000\u0000"+ - "\u081c\u081d\u0007\u0005\u0000\u0000\u081d\u081e\u0007\f\u0000\u0000\u081e"+ - "\u081f\u0007\u0011\u0000\u0000\u081f\u0820\u0007\u000e\u0000\u0000\u0820"+ - "\u00de\u0001\u0000\u0000\u0000\u0821\u0822\u0007\u001c\u0000\u0000\u0822"+ - "\u0823\u0007\u0014\u0000\u0000\u0823\u0824\u0007\n\u0000\u0000\u0824\u0825"+ - "\u0007\u0007\u0000\u0000\u0825\u00e0\u0001\u0000\u0000\u0000\u0826\u0827"+ - "\u0007\u001c\u0000\u0000\u0827\u0828\u0007\u0014\u0000\u0000\u0828\u0829"+ - "\u0007\n\u0000\u0000\u0829\u082a\u0007\r\u0000\u0000\u082a\u082b\u0007"+ - "\n\u0000\u0000\u082b\u00e2\u0001\u0000\u0000\u0000\u082c\u082d\u0007\u001c"+ - "\u0000\u0000\u082d\u082e\u0007\u0011\u0000\u0000\u082e\u082f\u0007\u0007"+ - "\u0000\u0000\u082f\u0830\u0007\f\u0000\u0000\u0830\u0831\u0007\u0013\u0000"+ - "\u0000\u0831\u0832\u0007\u001c\u0000\u0000\u0832\u00e4\u0001\u0000\u0000"+ - "\u0000\u0833\u0834\u0007\u001c\u0000\u0000\u0834\u0835\u0007\u0011\u0000"+ - "\u0000\u0835\u0836\u0007\u0010\u0000\u0000\u0836\u0837\u0007\u0014\u0000"+ - "\u0000\u0837\u00e6\u0001\u0000\u0000\u0000\u0838\u0839\u0007\u0005\u0000"+ - "\u0000\u0839\u083a\u0007\u0016\u0000\u0000\u083a\u083b\u0007\u0010\u0000"+ - "\u0000\u083b\u083c\u0007\u0014\u0000\u0000\u083c\u083d\u0007\u0013\u0000"+ - "\u0000\u083d\u083e\u0007\r\u0000\u0000\u083e\u083f\u0007\u0011\u0000\u0000"+ - "\u083f\u0840\u0007\u000b\u0000\u0000\u0840\u0841\u0007\u0005\u0000\u0000"+ - "\u0841\u0842\u0007\u0010\u0000\u0000\u0842\u0843\u0007\u0011\u0000\u0000"+ - "\u0843\u0844\u0007\u0013\u0000\u0000\u0844\u0845\u0007\u0007\u0000\u0000"+ - "\u0845\u00e8\u0001\u0000\u0000\u0000\u0846\u0847\u0007\u0012\u0000\u0000"+ - "\u0847\u0848\u0007\u0011\u0000\u0000\u0848\u0849\u0007\u0007\u0000\u0000"+ - "\u0849\u084a\u0007\u0005\u0000\u0000\u084a\u084b\u0007\r\u0000\u0000\u084b"+ - "\u084c\u0007\b\u0000\u0000\u084c\u00ea\u0001\u0000\u0000\u0000\u084d\u084e"+ - "\u0007\u000e\u0000\u0000\u084e\u084f\u0007\u0013\u0000\u0000\u084f\u0850"+ - "\u0007\u0006\u0000\u0000\u0850\u0851\u0007\u0006\u0000\u0000\u0851\u0852"+ - "\u0007\u0005\u0000\u0000\u0852\u0853\u0007\u0010\u0000\u0000\u0853\u0854"+ - "\u0007\u0011\u0000\u0000\u0854\u0855\u0007\u0013\u0000\u0000\u0855\u0856"+ - "\u0007\u0007\u0000\u0000\u0856\u00ec\u0001\u0000\u0000\u0000\u0857\u0858"+ - "\u0007\u000e\u0000\u0000\u0858\u0859\u0007\u0013\u0000\u0000\u0859\u085a"+ - "\u0007\u0007\u0000\u0000\u085a\u085b\u0007\u000e\u0000\u0000\u085b\u085c"+ - "\u0007\u0016\u0000\u0000\u085c\u085d\u0007\r\u0000\u0000\u085d\u085e\u0007"+ - "\r\u0000\u0000\u085e\u085f\u0007\n\u0000\u0000\u085f\u0860\u0007\u0007"+ - "\u0000\u0000\u0860\u0861\u0007\u0010\u0000\u0000\u0861\u0862\u0007\u0006"+ - "\u0000\u0000\u0862\u0863\u0007\b\u0000\u0000\u0863\u00ee\u0001\u0000\u0000"+ - "\u0000\u0864\u0865\u0007\u000e\u0000\u0000\u0865\u0866\u0007\r\u0000\u0000"+ - "\u0866\u0867\u0007\u0013\u0000\u0000\u0867\u0868\u0007\t\u0000\u0000\u0868"+ - "\u0869\u0007\t\u0000\u0000\u0869\u00f0\u0001\u0000\u0000\u0000\u086a\u086b"+ - "\u0007\u000e\u0000\u0000\u086b\u086c\u0007\u0016\u0000\u0000\u086c\u086d"+ - "\u0007\r\u0000\u0000\u086d\u086e\u0007\r\u0000\u0000\u086e\u086f\u0007"+ - "\n\u0000\u0000\u086f\u0870\u0007\u0007\u0000\u0000\u0870\u0871\u0007\u0010"+ - "\u0000\u0000\u0871\u0872\u0005_\u0000\u0000\u0872\u0873\u0007\t\u0000"+ - "\u0000\u0873\u0874\u0007\u000e\u0000\u0000\u0874\u0875\u0007\u0014\u0000"+ - "\u0000\u0875\u0876\u0007\n\u0000\u0000\u0876\u0877\u0007\u000f\u0000\u0000"+ - "\u0877\u0878\u0007\u0005\u0000\u0000\u0878\u00f2\u0001\u0000\u0000\u0000"+ - "\u0879\u087a\u0007\u0019\u0000\u0000\u087a\u087b\u0007\r\u0000\u0000\u087b"+ - "\u087c\u0007\n\u0000\u0000\u087c\u087d\u0007\n\u0000\u0000\u087d\u087e"+ - "\u0007\u000b\u0000\u0000\u087e\u087f\u0007\n\u0000\u0000\u087f\u00f4\u0001"+ - "\u0000\u0000\u0000\u0880\u0881\u0007\u0019\u0000\u0000\u0881\u0882\u0007"+ - "\u0016\u0000\u0000\u0882\u0883\u0007\u0006\u0000\u0000\u0883\u0884\u0007"+ - "\u0006\u0000\u0000\u0884\u00f6\u0001\u0000\u0000\u0000\u0885\u0886\u0007"+ - "\u0011\u0000\u0000\u0886\u0887\u0007\u0006\u0000\u0000\u0887\u0888\u0007"+ - "\u0011\u0000\u0000\u0888\u0889\u0007\u0015\u0000\u0000\u0889\u088a\u0007"+ - "\n\u0000\u0000\u088a\u00f8\u0001\u0000\u0000\u0000\u088b\u088c\u0007\u0011"+ - "\u0000\u0000\u088c\u088d\u0007\u0007\u0000\u0000\u088d\u088e\u0007\u0007"+ - "\u0000\u0000\u088e\u088f\u0007\n\u0000\u0000\u088f\u0890\u0007\r\u0000"+ - "\u0000\u0890\u00fa\u0001\u0000\u0000\u0000\u0891\u0892\u0007\u0011\u0000"+ - "\u0000\u0892\u0893\u0007\t\u0000\u0000\u0893\u00fc\u0001\u0000\u0000\u0000"+ - "\u0894\u0895\u0007\u0011\u0000\u0000\u0895\u0896\u0007\t\u0000\u0000\u0896"+ - "\u0897\u0007\u0007\u0000\u0000\u0897\u0898\u0007\u0016\u0000\u0000\u0898"+ - "\u0899\u0007\u0006\u0000\u0000\u0899\u089a\u0007\u0006\u0000\u0000\u089a"+ - "\u00fe\u0001\u0000\u0000\u0000\u089b\u089c\u0007\u001e\u0000\u0000\u089c"+ - "\u089d\u0007\u0013\u0000\u0000\u089d\u089e\u0007\u0011\u0000\u0000\u089e"+ - "\u089f\u0007\u0007\u0000\u0000\u089f\u0100\u0001\u0000\u0000\u0000\u08a0"+ - "\u08a1\u0007\u0006\u0000\u0000\u08a1\u08a2\u0007\n\u0000\u0000\u08a2\u08a3"+ - "\u0007\u0019\u0000\u0000\u08a3\u08a4\u0007\u0010\u0000\u0000\u08a4\u0102"+ - "\u0001\u0000\u0000\u0000\u08a5\u08a6\u0007\u0006\u0000\u0000\u08a6\u08a7"+ - "\u0007\u0011\u0000\u0000\u08a7\u08a8\u0007\u0015\u0000\u0000\u08a8\u08a9"+ - "\u0007\n\u0000\u0000\u08a9\u0104\u0001\u0000\u0000\u0000\u08aa\u08ab\u0007"+ - "\u0007\u0000\u0000\u08ab\u08ac\u0007\u0005\u0000\u0000\u08ac\u08ad\u0007"+ - "\u0010\u0000\u0000\u08ad\u08ae\u0007\u0016\u0000\u0000\u08ae\u08af\u0007"+ - "\r\u0000\u0000\u08af\u08b0\u0007\u0005\u0000\u0000\u08b0\u08b1\u0007\u0006"+ - "\u0000\u0000\u08b1\u0106\u0001\u0000\u0000\u0000\u08b2\u08b3\u0007\u0007"+ - "\u0000\u0000\u08b3\u08b4\u0007\u0013\u0000\u0000\u08b4\u08b5\u0007\u0010"+ - "\u0000\u0000\u08b5\u08b6\u0007\u0007\u0000\u0000\u08b6\u08b7\u0007\u0016"+ - "\u0000\u0000\u08b7\u08b8\u0007\u0006\u0000\u0000\u08b8\u08b9\u0007\u0006"+ - "\u0000\u0000\u08b9\u0108\u0001\u0000\u0000\u0000\u08ba\u08bb\u0007\u0013"+ - "\u0000\u0000\u08bb\u08bc\u0007\u0016\u0000\u0000\u08bc\u08bd\u0007\u0010"+ - "\u0000\u0000\u08bd\u08be\u0007\n\u0000\u0000\u08be\u08bf\u0007\r\u0000"+ - "\u0000\u08bf\u010a\u0001\u0000\u0000\u0000\u08c0\u08c1\u0007\u0013\u0000"+ - "\u0000\u08c1\u08c2\u0007\u001b\u0000\u0000\u08c2\u08c3\u0007\n\u0000\u0000"+ - "\u08c3\u08c4\u0007\r\u0000\u0000\u08c4\u010c\u0001\u0000\u0000\u0000\u08c5"+ - "\u08c6\u0007\u0013\u0000\u0000\u08c6\u08c7\u0007\u001b\u0000\u0000\u08c7"+ - "\u08c8\u0007\n\u0000\u0000\u08c8\u08c9\u0007\r\u0000\u0000\u08c9\u08ca"+ - "\u0007\u0006\u0000\u0000\u08ca\u08cb\u0007\u0005\u0000\u0000\u08cb\u08cc"+ - "\u0007\u0018\u0000\u0000\u08cc\u08cd\u0007\t\u0000\u0000\u08cd\u010e\u0001"+ - "\u0000\u0000\u0000\u08ce\u08cf\u0007\r\u0000\u0000\u08cf\u08d0\u0007\u0011"+ - "\u0000\u0000\u08d0\u08d1\u0007\u0017\u0000\u0000\u08d1\u08d2\u0007\u0014"+ - "\u0000\u0000\u08d2\u08d3\u0007\u0010\u0000\u0000\u08d3\u0110\u0001\u0000"+ - "\u0000\u0000\u08d4\u08d5\u0007\t\u0000\u0000\u08d5\u08d6\u0007\u0011\u0000"+ - "\u0000\u08d6\u08d7\u0007\u000f\u0000\u0000\u08d7\u08d8\u0007\u0011\u0000"+ - "\u0000\u08d8\u08d9\u0007\u0006\u0000\u0000\u08d9\u08da\u0007\u0005\u0000"+ - "\u0000\u08da\u08db\u0007\r\u0000\u0000\u08db\u0112\u0001\u0000\u0000\u0000"+ - "\u08dc\u08dd\u0007\u001b\u0000\u0000\u08dd\u08de\u0007\n\u0000\u0000\u08de"+ - "\u08df\u0007\r\u0000\u0000\u08df\u08e0\u0007\u0012\u0000\u0000\u08e0\u08e1"+ - "\u0007\u0013\u0000\u0000\u08e1\u08e2\u0007\t\u0000\u0000\u08e2\u08e3\u0007"+ - "\n\u0000\u0000\u08e3\u0114\u0001\u0000\u0000\u0000\u08e4\u08e5\u0007\u0005"+ - "\u0000\u0000\u08e5\u08e6\u0007\u0012\u0000\u0000\u08e6\u08e7\u0007\u0013"+ - "\u0000\u0000\u08e7\u08e8\u0007\r\u0000\u0000\u08e8\u08e9\u0007\u0010\u0000"+ - "\u0000\u08e9\u0116\u0001\u0000\u0000\u0000\u08ea\u08eb\u0007\u0005\u0000"+ - "\u0000\u08eb\u08ec\u0007\u0012\u0000\u0000\u08ec\u08ed\u0007\t\u0000\u0000"+ - "\u08ed\u08ee\u0007\u0013\u0000\u0000\u08ee\u08ef\u0007\u0006\u0000\u0000"+ - "\u08ef\u08f0\u0007\u0016\u0000\u0000\u08f0\u08f1\u0007\u0010\u0000\u0000"+ - "\u08f1\u08f2\u0007\n\u0000\u0000\u08f2\u0118\u0001\u0000\u0000\u0000\u08f3"+ - "\u08f4\u0007\u0005\u0000\u0000\u08f4\u08f5\u0007\u000e\u0000\u0000\u08f5"+ - "\u08f6\u0007\u000e\u0000\u0000\u08f6\u08f7\u0007\n\u0000\u0000\u08f7\u08f8"+ - "\u0007\t\u0000\u0000\u08f8\u08f9\u0007\t\u0000\u0000\u08f9\u011a\u0001"+ - "\u0000\u0000\u0000\u08fa\u08fb\u0007\u0005\u0000\u0000\u08fb\u08fc\u0007"+ - "\u000e\u0000\u0000\u08fc\u08fd\u0007\u0010\u0000\u0000\u08fd\u08fe\u0007"+ - "\u0011\u0000\u0000\u08fe\u08ff\u0007\u0013\u0000\u0000\u08ff\u0900\u0007"+ - "\u0007\u0000\u0000\u0900\u011c\u0001\u0000\u0000\u0000\u0901\u0902\u0007"+ - "\u0005\u0000\u0000\u0902\u0903\u0007\f\u0000\u0000\u0903\u0904\u0007\f"+ - "\u0000\u0000\u0904\u011e\u0001\u0000\u0000\u0000\u0905\u0906\u0007\u0005"+ - "\u0000\u0000\u0906\u0907\u0007\f\u0000\u0000\u0907\u0908\u0007\u000f\u0000"+ - "\u0000\u0908\u0909\u0007\u0011\u0000\u0000\u0909\u090a\u0007\u0007\u0000"+ - "\u0000\u090a\u0120\u0001\u0000\u0000\u0000\u090b\u090c\u0007\u0005\u0000"+ - "\u0000\u090c\u090d\u0007\u0019\u0000\u0000\u090d\u090e\u0007\u0010\u0000"+ - "\u0000\u090e\u090f\u0007\n\u0000\u0000\u090f\u0910\u0007\r\u0000\u0000"+ - "\u0910\u0122\u0001\u0000\u0000\u0000\u0911\u0912\u0007\u0005\u0000\u0000"+ - "\u0912\u0913\u0007\u0017\u0000\u0000\u0913\u0914\u0007\u0017\u0000\u0000"+ - "\u0914\u0915\u0007\r\u0000\u0000\u0915\u0916\u0007\n\u0000\u0000\u0916"+ - "\u0917\u0007\u0017\u0000\u0000\u0917\u0918\u0007\u0005\u0000\u0000\u0918"+ - "\u0919\u0007\u0010\u0000\u0000\u0919\u091a\u0007\n\u0000\u0000\u091a\u0124"+ - "\u0001\u0000\u0000\u0000\u091b\u091c\u0007\u0005\u0000\u0000\u091c\u091d"+ - "\u0007\u0006\u0000\u0000\u091d\u091e\u0007\t\u0000\u0000\u091e\u091f\u0007"+ - "\u0013\u0000\u0000\u091f\u0126\u0001\u0000\u0000\u0000\u0920\u0921\u0007"+ - "\u0005\u0000\u0000\u0921\u0922\u0007\u0006\u0000\u0000\u0922\u0923\u0007"+ - "\u0010\u0000\u0000\u0923\u0924\u0007\n\u0000\u0000\u0924\u0925\u0007\r"+ - "\u0000\u0000\u0925\u0128\u0001\u0000\u0000\u0000\u0926\u0927\u0007\u0005"+ - "\u0000\u0000\u0927\u0928\u0007\u0006\u0000\u0000\u0928\u0929\u0007\u001c"+ - "\u0000\u0000\u0929\u092a\u0007\u0005\u0000\u0000\u092a\u092b\u0007\b\u0000"+ - "\u0000\u092b\u092c\u0007\t\u0000\u0000\u092c\u012a\u0001\u0000\u0000\u0000"+ - "\u092d\u092e\u0007\u0005\u0000\u0000\u092e\u092f\u0007\t\u0000\u0000\u092f"+ - "\u0930\u0007\t\u0000\u0000\u0930\u0931\u0007\n\u0000\u0000\u0931\u0932"+ - "\u0007\r\u0000\u0000\u0932\u0933\u0007\u0010\u0000\u0000\u0933\u0934\u0007"+ - "\u0011\u0000\u0000\u0934\u0935\u0007\u0013\u0000\u0000\u0935\u0936\u0007"+ - "\u0007\u0000\u0000\u0936\u012c\u0001\u0000\u0000\u0000\u0937\u0938\u0007"+ - "\u0005\u0000\u0000\u0938\u0939\u0007\t\u0000\u0000\u0939\u093a\u0007\t"+ - "\u0000\u0000\u093a\u093b\u0007\u0011\u0000\u0000\u093b\u093c\u0007\u0017"+ - "\u0000\u0000\u093c\u093d\u0007\u0007\u0000\u0000\u093d\u093e\u0007\u000f"+ - "\u0000\u0000\u093e\u093f\u0007\n\u0000\u0000\u093f\u0940\u0007\u0007\u0000"+ - "\u0000\u0940\u0941\u0007\u0010\u0000\u0000\u0941\u012e\u0001\u0000\u0000"+ - "\u0000\u0942\u0943\u0007\u0005\u0000\u0000\u0943\u0944\u0007\u0010\u0000"+ - "\u0000\u0944\u0130\u0001\u0000\u0000\u0000\u0945\u0946\u0007\u0005\u0000"+ - "\u0000\u0946\u0947\u0007\u0010\u0000\u0000\u0947\u0948\u0007\u0010\u0000"+ - "\u0000\u0948\u0949\u0007\r\u0000\u0000\u0949\u094a\u0007\u0011\u0000\u0000"+ - "\u094a\u094b\u0007\u0012\u0000\u0000\u094b\u094c\u0007\u0016\u0000\u0000"+ - "\u094c\u094d\u0007\u0010\u0000\u0000\u094d\u094e\u0007\n\u0000\u0000\u094e"+ - "\u0132\u0001\u0000\u0000\u0000\u094f\u0950\u0007\u0012\u0000\u0000\u0950"+ - "\u0951\u0007\u0005\u0000\u0000\u0951\u0952\u0007\u000e\u0000\u0000\u0952"+ - "\u0953\u0007\u0015\u0000\u0000\u0953\u0954\u0007\u001c\u0000\u0000\u0954"+ - "\u0955\u0007\u0005\u0000\u0000\u0955\u0956\u0007\r\u0000\u0000\u0956\u0957"+ - "\u0007\f\u0000\u0000\u0957\u0134\u0001\u0000\u0000\u0000\u0958\u0959\u0007"+ - "\u0012\u0000\u0000\u0959\u095a\u0007\n\u0000\u0000\u095a\u095b\u0007\u0019"+ - "\u0000\u0000\u095b\u095c\u0007\u0013\u0000\u0000\u095c\u095d\u0007\r\u0000"+ - "\u0000\u095d\u095e\u0007\n\u0000\u0000\u095e\u0136\u0001\u0000\u0000\u0000"+ - "\u095f\u0960\u0007\u0012\u0000\u0000\u0960\u0961\u0007\n\u0000\u0000\u0961"+ - "\u0962\u0007\u0017\u0000\u0000\u0962\u0963\u0007\u0011\u0000\u0000\u0963"+ - "\u0964\u0007\u0007\u0000\u0000\u0964\u0138\u0001\u0000\u0000\u0000\u0965"+ - "\u0966\u0007\u0012\u0000\u0000\u0966\u0967\u0007\b\u0000\u0000\u0967\u013a"+ - "\u0001\u0000\u0000\u0000\u0968\u0969\u0007\u000e\u0000\u0000\u0969\u096a"+ - "\u0007\u0005\u0000\u0000\u096a\u096b\u0007\u000e\u0000\u0000\u096b\u096c"+ - "\u0007\u0014\u0000\u0000\u096c\u096d\u0007\n\u0000\u0000\u096d\u013c\u0001"+ - "\u0000\u0000\u0000\u096e\u096f\u0007\u000e\u0000\u0000\u096f\u0970\u0007"+ - "\u0005\u0000\u0000\u0970\u0971\u0007\u0006\u0000\u0000\u0971\u0972\u0007"+ - "\u0006\u0000\u0000\u0972\u0973\u0007\n\u0000\u0000\u0973\u0974\u0007\f"+ - "\u0000\u0000\u0974\u013e\u0001\u0000\u0000\u0000\u0975\u0976\u0007\u000e"+ - "\u0000\u0000\u0976\u0977\u0007\u0005\u0000\u0000\u0977\u0978\u0007\t\u0000"+ - "\u0000\u0978\u0979\u0007\u000e\u0000\u0000\u0979\u097a\u0007\u0005\u0000"+ - "\u0000\u097a\u097b\u0007\f\u0000\u0000\u097b\u097c\u0007\n\u0000\u0000"+ - "\u097c\u0140\u0001\u0000\u0000\u0000\u097d\u097e\u0007\u000e\u0000\u0000"+ - "\u097e\u097f\u0007\u0005\u0000\u0000\u097f\u0980\u0007\t\u0000\u0000\u0980"+ - "\u0981\u0007\u000e\u0000\u0000\u0981\u0982\u0007\u0005\u0000\u0000\u0982"+ - "\u0983\u0007\f\u0000\u0000\u0983\u0984\u0007\n\u0000\u0000\u0984\u0985"+ - "\u0007\f\u0000\u0000\u0985\u0142\u0001\u0000\u0000\u0000\u0986\u0987\u0007"+ - "\u000e\u0000\u0000\u0987\u0988\u0007\u0005\u0000\u0000\u0988\u0989\u0007"+ - "\u0010\u0000\u0000\u0989\u098a\u0007\u0005\u0000\u0000\u098a\u098b\u0007"+ - "\u0006\u0000\u0000\u098b\u098c\u0007\u0013\u0000\u0000\u098c\u098d\u0007"+ - "\u0017\u0000\u0000\u098d\u0144\u0001\u0000\u0000\u0000\u098e\u098f\u0007"+ - "\u000e\u0000\u0000\u098f\u0990\u0007\u0014\u0000\u0000\u0990\u0991\u0007"+ - "\u0005\u0000\u0000\u0991\u0992\u0007\u0011\u0000\u0000\u0992\u0993\u0007"+ - "\u0007\u0000\u0000\u0993\u0146\u0001\u0000\u0000\u0000\u0994\u0995\u0007"+ - "\u000e\u0000\u0000\u0995\u0996\u0007\u0014\u0000\u0000\u0996\u0997\u0007"+ - "\u0005\u0000\u0000\u0997\u0998\u0007\r\u0000\u0000\u0998\u0999\u0007\u0005"+ - "\u0000\u0000\u0999\u099a\u0007\u000e\u0000\u0000\u099a\u099b\u0007\u0010"+ - "\u0000\u0000\u099b\u099c\u0007\n\u0000\u0000\u099c\u099d\u0007\r\u0000"+ - "\u0000\u099d\u099e\u0007\u0011\u0000\u0000\u099e\u099f\u0007\t\u0000\u0000"+ - "\u099f\u09a0\u0007\u0010\u0000\u0000\u09a0\u09a1\u0007\u0011\u0000\u0000"+ - "\u09a1\u09a2\u0007\u000e\u0000\u0000\u09a2\u09a3\u0007\t\u0000\u0000\u09a3"+ - "\u0148\u0001\u0000\u0000\u0000\u09a4\u09a5\u0007\u000e\u0000\u0000\u09a5"+ - "\u09a6\u0007\u0014\u0000\u0000\u09a6\u09a7\u0007\n\u0000\u0000\u09a7\u09a8"+ - "\u0007\u000e\u0000\u0000\u09a8\u09a9\u0007\u0015\u0000\u0000\u09a9\u09aa"+ - "\u0007\u0018\u0000\u0000\u09aa\u09ab\u0007\u0013\u0000\u0000\u09ab\u09ac"+ - "\u0007\u0011\u0000\u0000\u09ac\u09ad\u0007\u0007\u0000\u0000\u09ad\u09ae"+ - "\u0007\u0010\u0000\u0000\u09ae\u014a\u0001\u0000\u0000\u0000\u09af\u09b0"+ - "\u0007\u000e\u0000\u0000\u09b0\u09b1\u0007\u0006\u0000\u0000\u09b1\u09b2"+ - "\u0007\u0005\u0000\u0000\u09b2\u09b3\u0007\t\u0000\u0000\u09b3\u09b4\u0007"+ - "\t\u0000\u0000\u09b4\u014c\u0001\u0000\u0000\u0000\u09b5\u09b6\u0007\u000e"+ - "\u0000\u0000\u09b6\u09b7\u0007\u0006\u0000\u0000\u09b7\u09b8\u0007\u0013"+ - "\u0000\u0000\u09b8\u09b9\u0007\t\u0000\u0000\u09b9\u09ba\u0007\n\u0000"+ - "\u0000\u09ba\u014e\u0001\u0000\u0000\u0000\u09bb\u09bc\u0007\u000e\u0000"+ - "\u0000\u09bc\u09bd\u0007\u0006\u0000\u0000\u09bd\u09be\u0007\u0016\u0000"+ - "\u0000\u09be\u09bf\u0007\t\u0000\u0000\u09bf\u09c0\u0007\u0010\u0000\u0000"+ - "\u09c0\u09c1\u0007\n\u0000\u0000\u09c1\u09c2\u0007\r\u0000\u0000\u09c2"+ - "\u0150\u0001\u0000\u0000\u0000\u09c3\u09c4\u0007\u000e\u0000\u0000\u09c4"+ - "\u09c5\u0007\u0013\u0000\u0000\u09c5\u09c6\u0007\u000f\u0000\u0000\u09c6"+ - "\u09c7\u0007\u000f\u0000\u0000\u09c7\u09c8\u0007\n\u0000\u0000\u09c8\u09c9"+ - "\u0007\u0007\u0000\u0000\u09c9\u09ca\u0007\u0010\u0000\u0000\u09ca\u0152"+ - "\u0001\u0000\u0000\u0000\u09cb\u09cc\u0007\u000e\u0000\u0000\u09cc\u09cd"+ - "\u0007\u0013\u0000\u0000\u09cd\u09ce\u0007\u000f\u0000\u0000\u09ce\u09cf"+ - "\u0007\u000f\u0000\u0000\u09cf\u09d0\u0007\n\u0000\u0000\u09d0\u09d1\u0007"+ - "\u0007\u0000\u0000\u09d1\u09d2\u0007\u0010\u0000\u0000\u09d2\u09d3\u0007"+ - "\t\u0000\u0000\u09d3\u0154\u0001\u0000\u0000\u0000\u09d4\u09d5\u0007\u000e"+ - "\u0000\u0000\u09d5\u09d6\u0007\u0013\u0000\u0000\u09d6\u09d7\u0007\u000f"+ - "\u0000\u0000\u09d7\u09d8\u0007\u000f\u0000\u0000\u09d8\u09d9\u0007\u0011"+ - "\u0000\u0000\u09d9\u09da\u0007\u0010\u0000\u0000\u09da\u0156\u0001\u0000"+ - "\u0000\u0000\u09db\u09dc\u0007\u000e\u0000\u0000\u09dc\u09dd\u0007\u0013"+ - "\u0000\u0000\u09dd\u09de\u0007\u000f\u0000\u0000\u09de\u09df\u0007\u000f"+ - "\u0000\u0000\u09df\u09e0\u0007\u0011\u0000\u0000\u09e0\u09e1\u0007\u0010"+ - "\u0000\u0000\u09e1\u09e2\u0007\u0010\u0000\u0000\u09e2\u09e3\u0007\n\u0000"+ - "\u0000\u09e3\u09e4\u0007\f\u0000\u0000\u09e4\u0158\u0001\u0000\u0000\u0000"+ - "\u09e5\u09e6\u0007\u000e\u0000\u0000\u09e6\u09e7\u0007\u0013\u0000\u0000"+ - "\u09e7\u09e8\u0007\u0007\u0000\u0000\u09e8\u09e9\u0007\u0019\u0000\u0000"+ - "\u09e9\u09ea\u0007\u0011\u0000\u0000\u09ea\u09eb\u0007\u0017\u0000\u0000"+ - "\u09eb\u09ec\u0007\u0016\u0000\u0000\u09ec\u09ed\u0007\r\u0000\u0000\u09ed"+ - "\u09ee\u0007\u0005\u0000\u0000\u09ee\u09ef\u0007\u0010\u0000\u0000\u09ef"+ - "\u09f0\u0007\u0011\u0000\u0000\u09f0\u09f1\u0007\u0013\u0000\u0000\u09f1"+ - "\u09f2\u0007\u0007\u0000\u0000\u09f2\u015a\u0001\u0000\u0000\u0000\u09f3"+ - "\u09f4\u0007\u000e\u0000\u0000\u09f4\u09f5\u0007\u0013\u0000\u0000\u09f5"+ - "\u09f6\u0007\u0007\u0000\u0000\u09f6\u09f7\u0007\u0007\u0000\u0000\u09f7"+ - "\u09f8\u0007\n\u0000\u0000\u09f8\u09f9\u0007\u000e\u0000\u0000\u09f9\u09fa"+ - "\u0007\u0010\u0000\u0000\u09fa\u09fb\u0007\u0011\u0000\u0000\u09fb\u09fc"+ - "\u0007\u0013\u0000\u0000\u09fc\u09fd\u0007\u0007\u0000\u0000\u09fd\u015c"+ - "\u0001\u0000\u0000\u0000\u09fe\u09ff\u0007\u000e\u0000\u0000\u09ff\u0a00"+ - "\u0007\u0013\u0000\u0000\u0a00\u0a01\u0007\u0007\u0000\u0000\u0a01\u0a02"+ - "\u0007\t\u0000\u0000\u0a02\u0a03\u0007\u0010\u0000\u0000\u0a03\u0a04\u0007"+ - "\r\u0000\u0000\u0a04\u0a05\u0007\u0005\u0000\u0000\u0a05\u0a06\u0007\u0011"+ - "\u0000\u0000\u0a06\u0a07\u0007\u0007\u0000\u0000\u0a07\u0a08\u0007\u0010"+ - "\u0000\u0000\u0a08\u0a09\u0007\t\u0000\u0000\u0a09\u015e\u0001\u0000\u0000"+ - "\u0000\u0a0a\u0a0b\u0007\u000e\u0000\u0000\u0a0b\u0a0c\u0007\u0013\u0000"+ - "\u0000\u0a0c\u0a0d\u0007\u0007\u0000\u0000\u0a0d\u0a0e\u0007\u0010\u0000"+ - "\u0000\u0a0e\u0a0f\u0007\n\u0000\u0000\u0a0f\u0a10\u0007\u0007\u0000\u0000"+ - "\u0a10\u0a11\u0007\u0010\u0000\u0000\u0a11\u0160\u0001\u0000\u0000\u0000"+ - "\u0a12\u0a13\u0007\u000e\u0000\u0000\u0a13\u0a14\u0007\u0013\u0000\u0000"+ - "\u0a14\u0a15\u0007\u0007\u0000\u0000\u0a15\u0a16\u0007\u0010\u0000\u0000"+ - "\u0a16\u0a17\u0007\u0011\u0000\u0000\u0a17\u0a18\u0007\u0007\u0000\u0000"+ - "\u0a18\u0a19\u0007\u0016\u0000\u0000\u0a19\u0a1a\u0007\n\u0000\u0000\u0a1a"+ - "\u0162\u0001\u0000\u0000\u0000\u0a1b\u0a1c\u0007\u000e\u0000\u0000\u0a1c"+ - "\u0a1d\u0007\u0013\u0000\u0000\u0a1d\u0a1e\u0007\u0007\u0000\u0000\u0a1e"+ - "\u0a1f\u0007\u001b\u0000\u0000\u0a1f\u0a20\u0007\n\u0000\u0000\u0a20\u0a21"+ - "\u0007\r\u0000\u0000\u0a21\u0a22\u0007\t\u0000\u0000\u0a22\u0a23\u0007"+ - "\u0011\u0000\u0000\u0a23\u0a24\u0007\u0013\u0000\u0000\u0a24\u0a25\u0007"+ - "\u0007\u0000\u0000\u0a25\u0164\u0001\u0000\u0000\u0000\u0a26\u0a27\u0007"+ - "\u000e\u0000\u0000\u0a27\u0a28\u0007\u0013\u0000\u0000\u0a28\u0a29\u0007"+ - "\u0018\u0000\u0000\u0a29\u0a2a\u0007\b\u0000\u0000\u0a2a\u0166\u0001\u0000"+ - "\u0000\u0000\u0a2b\u0a2c\u0007\u000e\u0000\u0000\u0a2c\u0a2d\u0007\u0013"+ - "\u0000\u0000\u0a2d\u0a2e\u0007\t\u0000\u0000\u0a2e\u0a2f\u0007\u0010\u0000"+ - "\u0000\u0a2f\u0168\u0001\u0000\u0000\u0000\u0a30\u0a31\u0007\u000e\u0000"+ - "\u0000\u0a31\u0a32\u0007\t\u0000\u0000\u0a32\u0a33\u0007\u001b\u0000\u0000"+ - "\u0a33\u016a\u0001\u0000\u0000\u0000\u0a34\u0a35\u0007\u000e\u0000\u0000"+ - "\u0a35\u0a36\u0007\u0016\u0000\u0000\u0a36\u0a37\u0007\r\u0000\u0000\u0a37"+ - "\u0a38\u0007\t\u0000\u0000\u0a38\u0a39\u0007\u0013\u0000\u0000\u0a39\u0a3a"+ - "\u0007\r\u0000\u0000\u0a3a\u016c\u0001\u0000\u0000\u0000\u0a3b\u0a3c\u0007"+ - "\u000e\u0000\u0000\u0a3c\u0a3d\u0007\b\u0000\u0000\u0a3d\u0a3e\u0007\u000e"+ - "\u0000\u0000\u0a3e\u0a3f\u0007\u0006\u0000\u0000\u0a3f\u0a40\u0007\n\u0000"+ - "\u0000\u0a40\u016e\u0001\u0000\u0000\u0000\u0a41\u0a42\u0007\f\u0000\u0000"+ - "\u0a42\u0a43\u0007\u0005\u0000\u0000\u0a43\u0a44\u0007\u0010\u0000\u0000"+ - "\u0a44\u0a45\u0007\u0005\u0000\u0000\u0a45\u0170\u0001\u0000\u0000\u0000"+ - "\u0a46\u0a47\u0007\f\u0000\u0000\u0a47\u0a48\u0007\u0005\u0000\u0000\u0a48"+ - "\u0a49\u0007\u0010\u0000\u0000\u0a49\u0a4a\u0007\u0005\u0000\u0000\u0a4a"+ - "\u0a4b\u0007\u0012\u0000\u0000\u0a4b\u0a4c\u0007\u0005\u0000\u0000\u0a4c"+ - "\u0a4d\u0007\t\u0000\u0000\u0a4d\u0a4e\u0007\n\u0000\u0000\u0a4e\u0172"+ - "\u0001\u0000\u0000\u0000\u0a4f\u0a50\u0007\f\u0000\u0000\u0a50\u0a51\u0007"+ - "\u0005\u0000\u0000\u0a51\u0a52\u0007\b\u0000\u0000\u0a52\u0174\u0001\u0000"+ - "\u0000\u0000\u0a53\u0a54\u0007\f\u0000\u0000\u0a54\u0a55\u0007\n\u0000"+ - "\u0000\u0a55\u0a56\u0007\u0005\u0000\u0000\u0a56\u0a57\u0007\u0006\u0000"+ - "\u0000\u0a57\u0a58\u0007\u0006\u0000\u0000\u0a58\u0a59\u0007\u0013\u0000"+ - "\u0000\u0a59\u0a5a\u0007\u000e\u0000\u0000\u0a5a\u0a5b\u0007\u0005\u0000"+ - "\u0000\u0a5b\u0a5c\u0007\u0010\u0000\u0000\u0a5c\u0a5d\u0007\n\u0000\u0000"+ - "\u0a5d\u0176\u0001\u0000\u0000\u0000\u0a5e\u0a5f\u0007\f\u0000\u0000\u0a5f"+ - "\u0a60\u0007\n\u0000\u0000\u0a60\u0a61\u0007\u000e\u0000\u0000\u0a61\u0a62"+ - "\u0007\u0006\u0000\u0000\u0a62\u0a63\u0007\u0005\u0000\u0000\u0a63\u0a64"+ - "\u0007\r\u0000\u0000\u0a64\u0a65\u0007\n\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\u0005"+ - "\u0000\u0000\u0a6a\u0a6b\u0007\u0016\u0000\u0000\u0a6b\u0a6c\u0007\u0006"+ - "\u0000\u0000\u0a6c\u0a6d\u0007\u0010\u0000\u0000\u0a6d\u0a6e\u0007\t\u0000"+ - "\u0000\u0a6e\u017a\u0001\u0000\u0000\u0000\u0a6f\u0a70\u0007\f\u0000\u0000"+ - "\u0a70\u0a71\u0007\n\u0000\u0000\u0a71\u0a72\u0007\u0019\u0000\u0000\u0a72"+ - "\u0a73\u0007\n\u0000\u0000\u0a73\u0a74\u0007\r\u0000\u0000\u0a74\u0a75"+ - "\u0007\r\u0000\u0000\u0a75\u0a76\u0007\n\u0000\u0000\u0a76\u0a77\u0007"+ - "\f\u0000\u0000\u0a77\u017c\u0001\u0000\u0000\u0000\u0a78\u0a79\u0007\f"+ - "\u0000\u0000\u0a79\u0a7a\u0007\n\u0000\u0000\u0a7a\u0a7b\u0007\u0019\u0000"+ - "\u0000\u0a7b\u0a7c\u0007\u0011\u0000\u0000\u0a7c\u0a7d\u0007\u0007\u0000"+ - "\u0000\u0a7d\u0a7e\u0007\n\u0000\u0000\u0a7e\u0a7f\u0007\r\u0000\u0000"+ - "\u0a7f\u017e\u0001\u0000\u0000\u0000\u0a80\u0a81\u0007\f\u0000\u0000\u0a81"+ - "\u0a82\u0007\n\u0000\u0000\u0a82\u0a83\u0007\u0006\u0000\u0000\u0a83\u0a84"+ - "\u0007\n\u0000\u0000\u0a84\u0a85\u0007\u0010\u0000\u0000\u0a85\u0a86\u0007"+ - "\n\u0000\u0000\u0a86\u0180\u0001\u0000\u0000\u0000\u0a87\u0a88\u0007\f"+ - "\u0000\u0000\u0a88\u0a89\u0007\n\u0000\u0000\u0a89\u0a8a\u0007\u0006\u0000"+ - "\u0000\u0a8a\u0a8b\u0007\u0011\u0000\u0000\u0a8b\u0a8c\u0007\u000f\u0000"+ - "\u0000\u0a8c\u0a8d\u0007\u0011\u0000\u0000\u0a8d\u0a8e\u0007\u0010\u0000"+ - "\u0000\u0a8e\u0a8f\u0007\n\u0000\u0000\u0a8f\u0a90\u0007\r\u0000\u0000"+ - "\u0a90\u0182\u0001\u0000\u0000\u0000\u0a91\u0a92\u0007\f\u0000\u0000\u0a92"+ - "\u0a93\u0007\n\u0000\u0000\u0a93\u0a94\u0007\u0006\u0000\u0000\u0a94\u0a95"+ - "\u0007\u0011\u0000\u0000\u0a95\u0a96\u0007\u000f\u0000\u0000\u0a96\u0a97"+ - "\u0007\u0011\u0000\u0000\u0a97\u0a98\u0007\u0010\u0000\u0000\u0a98\u0a99"+ - "\u0007\n\u0000\u0000\u0a99\u0a9a\u0007\r\u0000\u0000\u0a9a\u0a9b\u0007"+ - "\t\u0000\u0000\u0a9b\u0184\u0001\u0000\u0000\u0000\u0a9c\u0a9d\u0007\f"+ - "\u0000\u0000\u0a9d\u0a9e\u0007\u0011\u0000\u0000\u0a9e\u0a9f\u0007\u000e"+ - "\u0000\u0000\u0a9f\u0aa0\u0007\u0010\u0000\u0000\u0aa0\u0aa1\u0007\u0011"+ - "\u0000\u0000\u0aa1\u0aa2\u0007\u0013\u0000\u0000\u0aa2\u0aa3\u0007\u0007"+ - "\u0000\u0000\u0aa3\u0aa4\u0007\u0005\u0000\u0000\u0aa4\u0aa5\u0007\r\u0000"+ - "\u0000\u0aa5\u0aa6\u0007\b\u0000\u0000\u0aa6\u0186\u0001\u0000\u0000\u0000"+ - "\u0aa7\u0aa8\u0007\f\u0000\u0000\u0aa8\u0aa9\u0007\u0011\u0000\u0000\u0aa9"+ - "\u0aaa\u0007\t\u0000\u0000\u0aaa\u0aab\u0007\u0005\u0000\u0000\u0aab\u0aac"+ - "\u0007\u0012\u0000\u0000\u0aac\u0aad\u0007\u0006\u0000\u0000\u0aad\u0aae"+ - "\u0007\n\u0000\u0000\u0aae\u0188\u0001\u0000\u0000\u0000\u0aaf\u0ab0\u0007"+ - "\f\u0000\u0000\u0ab0\u0ab1\u0007\u0011\u0000\u0000\u0ab1\u0ab2\u0007\t"+ - "\u0000\u0000\u0ab2\u0ab3\u0007\u000e\u0000\u0000\u0ab3\u0ab4\u0007\u0005"+ - "\u0000\u0000\u0ab4\u0ab5\u0007\r\u0000\u0000\u0ab5\u0ab6\u0007\f\u0000"+ - "\u0000\u0ab6\u018a\u0001\u0000\u0000\u0000\u0ab7\u0ab8\u0007\f\u0000\u0000"+ - "\u0ab8\u0ab9\u0007\u0013\u0000\u0000\u0ab9\u0aba\u0007\u000e\u0000\u0000"+ - "\u0aba\u0abb\u0007\u0016\u0000\u0000\u0abb\u0abc\u0007\u000f\u0000\u0000"+ - "\u0abc\u0abd\u0007\n\u0000\u0000\u0abd\u0abe\u0007\u0007\u0000\u0000\u0abe"+ - "\u0abf\u0007\u0010\u0000\u0000\u0abf\u018c\u0001\u0000\u0000\u0000\u0ac0"+ - "\u0ac1\u0007\f\u0000\u0000\u0ac1\u0ac2\u0007\u0013\u0000\u0000\u0ac2\u0ac3"+ - "\u0007\u000f\u0000\u0000\u0ac3\u0ac4\u0007\u0005\u0000\u0000\u0ac4\u0ac5"+ - "\u0007\u0011\u0000\u0000\u0ac5\u0ac6\u0007\u0007\u0000\u0000\u0ac6\u018e"+ - "\u0001\u0000\u0000\u0000\u0ac7\u0ac8\u0007\f\u0000\u0000\u0ac8\u0ac9\u0007"+ - "\u0013\u0000\u0000\u0ac9\u0aca\u0007\u0016\u0000\u0000\u0aca\u0acb\u0007"+ - "\u0012\u0000\u0000\u0acb\u0acc\u0007\u0006\u0000\u0000\u0acc\u0acd\u0007"+ - "\n\u0000\u0000\u0acd\u0190\u0001\u0000\u0000\u0000\u0ace\u0acf\u0007\f"+ - "\u0000\u0000\u0acf\u0ad0\u0007\r\u0000\u0000\u0ad0\u0ad1\u0007\u0013\u0000"+ - "\u0000\u0ad1\u0ad2\u0007\u0018\u0000\u0000\u0ad2\u0192\u0001\u0000\u0000"+ - "\u0000\u0ad3\u0ad4\u0007\n\u0000\u0000\u0ad4\u0ad5\u0007\u0005\u0000\u0000"+ - "\u0ad5\u0ad6\u0007\u000e\u0000\u0000\u0ad6\u0ad7\u0007\u0014\u0000\u0000"+ - "\u0ad7\u0194\u0001\u0000\u0000\u0000\u0ad8\u0ad9\u0007\n\u0000\u0000\u0ad9"+ - "\u0ada\u0007\u0007\u0000\u0000\u0ada\u0adb\u0007\u0005\u0000\u0000\u0adb"+ - "\u0adc\u0007\u0012\u0000\u0000\u0adc\u0add\u0007\u0006\u0000\u0000\u0add"+ - "\u0ade\u0007\n\u0000\u0000\u0ade\u0196\u0001\u0000\u0000\u0000\u0adf\u0ae0"+ - "\u0007\n\u0000\u0000\u0ae0\u0ae1\u0007\u0007\u0000\u0000\u0ae1\u0ae2\u0007"+ - "\u000e\u0000\u0000\u0ae2\u0ae3\u0007\u0013\u0000\u0000\u0ae3\u0ae4\u0007"+ - "\f\u0000\u0000\u0ae4\u0ae5\u0007\u0011\u0000\u0000\u0ae5\u0ae6\u0007\u0007"+ - "\u0000\u0000\u0ae6\u0ae7\u0007\u0017\u0000\u0000\u0ae7\u0198\u0001\u0000"+ - "\u0000\u0000\u0ae8\u0ae9\u0007\n\u0000\u0000\u0ae9\u0aea\u0007\u0007\u0000"+ - "\u0000\u0aea\u0aeb\u0007\u000e\u0000\u0000\u0aeb\u0aec\u0007\r\u0000\u0000"+ - "\u0aec\u0aed\u0007\b\u0000\u0000\u0aed\u0aee\u0007\u0018\u0000\u0000\u0aee"+ - "\u0aef\u0007\u0010\u0000\u0000\u0aef\u0af0\u0007\n\u0000\u0000\u0af0\u0af1"+ - "\u0007\f\u0000\u0000\u0af1\u019a\u0001\u0000\u0000\u0000\u0af2\u0af3\u0007"+ - "\n\u0000\u0000\u0af3\u0af4\u0007\u0007\u0000\u0000\u0af4\u0af5\u0007\u0016"+ - "\u0000\u0000\u0af5\u0af6\u0007\u000f\u0000\u0000\u0af6\u019c\u0001\u0000"+ - "\u0000\u0000\u0af7\u0af8\u0007\n\u0000\u0000\u0af8\u0af9\u0007\t\u0000"+ - "\u0000\u0af9\u0afa\u0007\u000e\u0000\u0000\u0afa\u0afb\u0007\u0005\u0000"+ - "\u0000\u0afb\u0afc\u0007\u0018\u0000\u0000\u0afc\u0afd\u0007\n\u0000\u0000"+ - "\u0afd\u019e\u0001\u0000\u0000\u0000\u0afe\u0aff\u0007\n\u0000\u0000\u0aff"+ - "\u0b00\u0007\u001b\u0000\u0000\u0b00\u0b01\u0007\n\u0000\u0000\u0b01\u0b02"+ - "\u0007\u0007\u0000\u0000\u0b02\u0b03\u0007\u0010\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"+ - "\f\u0000\u0000\u0b0a\u0b0b\u0007\n\u0000\u0000\u0b0b\u01a2\u0001\u0000"+ - "\u0000\u0000\u0b0c\u0b0d\u0007\n\u0000\u0000\u0b0d\u0b0e\u0007\u001a\u0000"+ - "\u0000\u0b0e\u0b0f\u0007\u000e\u0000\u0000\u0b0f\u0b10\u0007\u0006\u0000"+ - "\u0000\u0b10\u0b11\u0007\u0016\u0000\u0000\u0b11\u0b12\u0007\f\u0000\u0000"+ - "\u0b12\u0b13\u0007\u0011\u0000\u0000\u0b13\u0b14\u0007\u0007\u0000\u0000"+ - "\u0b14\u0b15\u0007\u0017\u0000\u0000\u0b15\u01a4\u0001\u0000\u0000\u0000"+ - "\u0b16\u0b17\u0007\n\u0000\u0000\u0b17\u0b18\u0007\u001a\u0000\u0000\u0b18"+ - "\u0b19\u0007\u000e\u0000\u0000\u0b19\u0b1a\u0007\u0006\u0000\u0000\u0b1a"+ - "\u0b1b\u0007\u0016\u0000\u0000\u0b1b\u0b1c\u0007\t\u0000\u0000\u0b1c\u0b1d"+ - "\u0007\u0011\u0000\u0000\u0b1d\u0b1e\u0007\u001b\u0000\u0000\u0b1e\u0b1f"+ - "\u0007\n\u0000\u0000\u0b1f\u01a6\u0001\u0000\u0000\u0000\u0b20\u0b21\u0007"+ - "\n\u0000\u0000\u0b21\u0b22\u0007\u001a\u0000\u0000\u0b22\u0b23\u0007\n"+ - "\u0000\u0000\u0b23\u0b24\u0007\u000e\u0000\u0000\u0b24\u0b25\u0007\u0016"+ - "\u0000\u0000\u0b25\u0b26\u0007\u0010\u0000\u0000\u0b26\u0b27\u0007\n\u0000"+ - "\u0000\u0b27\u01a8\u0001\u0000\u0000\u0000\u0b28\u0b29\u0007\n\u0000\u0000"+ - "\u0b29\u0b2a\u0007\u001a\u0000\u0000\u0b2a\u0b2b\u0007\u0018\u0000\u0000"+ - "\u0b2b\u0b2c\u0007\u0006\u0000\u0000\u0b2c\u0b2d\u0007\u0005\u0000\u0000"+ - "\u0b2d\u0b2e\u0007\u0011\u0000\u0000\u0b2e\u0b2f\u0007\u0007\u0000\u0000"+ - "\u0b2f\u01aa\u0001\u0000\u0000\u0000\u0b30\u0b31\u0007\n\u0000\u0000\u0b31"+ - "\u0b32\u0007\u001a\u0000\u0000\u0b32\u0b33\u0007\u0010\u0000\u0000\u0b33"+ - "\u0b34\u0007\n\u0000\u0000\u0b34\u0b35\u0007\u0007\u0000\u0000\u0b35\u0b36"+ - "\u0007\t\u0000\u0000\u0b36\u0b37\u0007\u0011\u0000\u0000\u0b37\u0b38\u0007"+ - "\u0013\u0000\u0000\u0b38\u0b39\u0007\u0007\u0000\u0000\u0b39\u01ac\u0001"+ - "\u0000\u0000\u0000\u0b3a\u0b3b\u0007\n\u0000\u0000\u0b3b\u0b3c\u0007\u001a"+ - "\u0000\u0000\u0b3c\u0b3d\u0007\u0010\u0000\u0000\u0b3d\u0b3e\u0007\n\u0000"+ - "\u0000\u0b3e\u0b3f\u0007\r\u0000\u0000\u0b3f\u0b40\u0007\u0007\u0000\u0000"+ - "\u0b40\u0b41\u0007\u0005\u0000\u0000\u0b41\u0b42\u0007\u0006\u0000\u0000"+ - "\u0b42\u01ae\u0001\u0000\u0000\u0000\u0b43\u0b44\u0007\u0019\u0000\u0000"+ - "\u0b44\u0b45\u0007\u0005\u0000\u0000\u0b45\u0b46\u0007\u000f\u0000\u0000"+ - "\u0b46\u0b47\u0007\u0011\u0000\u0000\u0b47\u0b48\u0007\u0006\u0000\u0000"+ - "\u0b48\u0b49\u0007\b\u0000\u0000\u0b49\u01b0\u0001\u0000\u0000\u0000\u0b4a"+ - "\u0b4b\u0007\u0019\u0000\u0000\u0b4b\u0b4c\u0007\u0011\u0000\u0000\u0b4c"+ - "\u0b4d\u0007\r\u0000\u0000\u0b4d\u0b4e\u0007\t\u0000\u0000\u0b4e\u0b4f"+ - "\u0007\u0010\u0000\u0000\u0b4f\u01b2\u0001\u0000\u0000\u0000\u0b50\u0b51"+ - "\u0007\u0019\u0000\u0000\u0b51\u0b52\u0007\u0013\u0000\u0000\u0b52\u0b53"+ - "\u0007\u0006\u0000\u0000\u0b53\u0b54\u0007\u0006\u0000\u0000\u0b54\u0b55"+ - "\u0007\u0013\u0000\u0000\u0b55\u0b56\u0007\u001c\u0000\u0000\u0b56\u0b57"+ - "\u0007\u0011\u0000\u0000\u0b57\u0b58\u0007\u0007\u0000\u0000\u0b58\u0b59"+ - "\u0007\u0017\u0000\u0000\u0b59\u01b4\u0001\u0000\u0000\u0000\u0b5a\u0b5b"+ - "\u0007\u0019\u0000\u0000\u0b5b\u0b5c\u0007\u0013\u0000\u0000\u0b5c\u0b5d"+ - "\u0007\r\u0000\u0000\u0b5d\u0b5e\u0007\u000e\u0000\u0000\u0b5e\u0b5f\u0007"+ - "\n\u0000\u0000\u0b5f\u01b6\u0001\u0000\u0000\u0000\u0b60\u0b61\u0007\u0019"+ - "\u0000\u0000\u0b61\u0b62\u0007\u0013\u0000\u0000\u0b62\u0b63\u0007\r\u0000"+ - "\u0000\u0b63\u0b64\u0007\u001c\u0000\u0000\u0b64\u0b65\u0007\u0005\u0000"+ - "\u0000\u0b65\u0b66\u0007\r\u0000\u0000\u0b66\u0b67\u0007\f\u0000\u0000"+ - "\u0b67\u01b8\u0001\u0000\u0000\u0000\u0b68\u0b69\u0007\u0019\u0000\u0000"+ - "\u0b69\u0b6a\u0007\u0016\u0000\u0000\u0b6a\u0b6b\u0007\u0007\u0000\u0000"+ - "\u0b6b\u0b6c\u0007\u000e\u0000\u0000\u0b6c\u0b6d\u0007\u0010\u0000\u0000"+ - "\u0b6d\u0b6e\u0007\u0011\u0000\u0000\u0b6e\u0b6f\u0007\u0013\u0000\u0000"+ - "\u0b6f\u0b70\u0007\u0007\u0000\u0000\u0b70\u01ba\u0001\u0000\u0000\u0000"+ - "\u0b71\u0b72\u0007\u0019\u0000\u0000\u0b72\u0b73\u0007\u0016\u0000\u0000"+ - "\u0b73\u0b74\u0007\u0007\u0000\u0000\u0b74\u0b75\u0007\u000e\u0000\u0000"+ - "\u0b75\u0b76\u0007\u0010\u0000\u0000\u0b76\u0b77\u0007\u0011\u0000\u0000"+ - "\u0b77\u0b78\u0007\u0013\u0000\u0000\u0b78\u0b79\u0007\u0007\u0000\u0000"+ - "\u0b79\u0b7a\u0007\t\u0000\u0000\u0b7a\u01bc\u0001\u0000\u0000\u0000\u0b7b"+ - "\u0b7c\u0007\u0017\u0000\u0000\u0b7c\u0b7d\u0007\u0006\u0000\u0000\u0b7d"+ - "\u0b7e\u0007\u0013\u0000\u0000\u0b7e\u0b7f\u0007\u0012\u0000\u0000\u0b7f"+ - "\u0b80\u0007\u0005\u0000\u0000\u0b80\u0b81\u0007\u0006\u0000\u0000\u0b81"+ - "\u01be\u0001\u0000\u0000\u0000\u0b82\u0b83\u0007\u0017\u0000\u0000\u0b83"+ - "\u0b84\u0007\r\u0000\u0000\u0b84\u0b85\u0007\u0005\u0000\u0000\u0b85\u0b86"+ - "\u0007\u0007\u0000\u0000\u0b86\u0b87\u0007\u0010\u0000\u0000\u0b87\u0b88"+ - "\u0007\n\u0000\u0000\u0b88\u0b89\u0007\f\u0000\u0000\u0b89\u01c0\u0001"+ - "\u0000\u0000\u0000\u0b8a\u0b8b\u0007\u0014\u0000\u0000\u0b8b\u0b8c\u0007"+ - "\u0005\u0000\u0000\u0b8c\u0b8d\u0007\u0007\u0000\u0000\u0b8d\u0b8e\u0007"+ - "\f\u0000\u0000\u0b8e\u0b8f\u0007\u0006\u0000\u0000\u0b8f\u0b90\u0007\n"+ - "\u0000\u0000\u0b90\u0b91\u0007\r\u0000\u0000\u0b91\u01c2\u0001\u0000\u0000"+ - "\u0000\u0b92\u0b93\u0007\u0014\u0000\u0000\u0b93\u0b94\u0007\n\u0000\u0000"+ - "\u0b94\u0b95\u0007\u0005\u0000\u0000\u0b95\u0b96\u0007\f\u0000\u0000\u0b96"+ - "\u0b97\u0007\n\u0000\u0000\u0b97\u0b98\u0007\r\u0000\u0000\u0b98\u01c4"+ - "\u0001\u0000\u0000\u0000\u0b99\u0b9a\u0007\u0014\u0000\u0000\u0b9a\u0b9b"+ - "\u0007\u0013\u0000\u0000\u0b9b\u0b9c\u0007\u0006\u0000\u0000\u0b9c\u0b9d"+ - "\u0007\f\u0000\u0000\u0b9d\u01c6\u0001\u0000\u0000\u0000\u0b9e\u0b9f\u0007"+ - "\u0014\u0000\u0000\u0b9f\u0ba0\u0007\u0013\u0000\u0000\u0ba0\u0ba1\u0007"+ - "\u0016\u0000\u0000\u0ba1\u0ba2\u0007\r\u0000\u0000\u0ba2\u01c8\u0001\u0000"+ - "\u0000\u0000\u0ba3\u0ba4\u0007\u0011\u0000\u0000\u0ba4\u0ba5\u0007\f\u0000"+ - "\u0000\u0ba5\u0ba6\u0007\n\u0000\u0000\u0ba6\u0ba7\u0007\u0007\u0000\u0000"+ - "\u0ba7\u0ba8\u0007\u0010\u0000\u0000\u0ba8\u0ba9\u0007\u0011\u0000\u0000"+ - "\u0ba9\u0baa\u0007\u0010\u0000\u0000\u0baa\u0bab\u0007\b\u0000\u0000\u0bab"+ - "\u01ca\u0001\u0000\u0000\u0000\u0bac\u0bad\u0007\u0011\u0000\u0000\u0bad"+ - "\u0bae\u0007\u0019\u0000\u0000\u0bae\u01cc\u0001\u0000\u0000\u0000\u0baf"+ - "\u0bb0\u0007\u0011\u0000\u0000\u0bb0\u0bb1\u0007\u000f\u0000\u0000\u0bb1"+ - "\u0bb2\u0007\u000f\u0000\u0000\u0bb2\u0bb3\u0007\n\u0000\u0000\u0bb3\u0bb4"+ - "\u0007\f\u0000\u0000\u0bb4\u0bb5\u0007\u0011\u0000\u0000\u0bb5\u0bb6\u0007"+ - "\u0005\u0000\u0000\u0bb6\u0bb7\u0007\u0010\u0000\u0000\u0bb7\u0bb8\u0007"+ - "\n\u0000\u0000\u0bb8\u01ce\u0001\u0000\u0000\u0000\u0bb9\u0bba\u0007\u0011"+ - "\u0000\u0000\u0bba\u0bbb\u0007\u000f\u0000\u0000\u0bbb\u0bbc\u0007\u000f"+ - "\u0000\u0000\u0bbc\u0bbd\u0007\u0016\u0000\u0000\u0bbd\u0bbe\u0007\u0010"+ - "\u0000\u0000\u0bbe\u0bbf\u0007\u0005\u0000\u0000\u0bbf\u0bc0\u0007\u0012"+ - "\u0000\u0000\u0bc0\u0bc1\u0007\u0006\u0000\u0000\u0bc1\u0bc2\u0007\n\u0000"+ - "\u0000\u0bc2\u01d0\u0001\u0000\u0000\u0000\u0bc3\u0bc4\u0007\u0011\u0000"+ - "\u0000\u0bc4\u0bc5\u0007\u000f\u0000\u0000\u0bc5\u0bc6\u0007\u0018\u0000"+ - "\u0000\u0bc6\u0bc7\u0007\u0006\u0000\u0000\u0bc7\u0bc8\u0007\u0011\u0000"+ - "\u0000\u0bc8\u0bc9\u0007\u000e\u0000\u0000\u0bc9\u0bca\u0007\u0011\u0000"+ - "\u0000\u0bca\u0bcb\u0007\u0010\u0000\u0000\u0bcb\u01d2\u0001\u0000\u0000"+ - "\u0000\u0bcc\u0bcd\u0007\u0011\u0000\u0000\u0bcd\u0bce\u0007\u0007\u0000"+ - "\u0000\u0bce\u0bcf\u0007\u000e\u0000\u0000\u0bcf\u0bd0\u0007\u0006\u0000"+ - "\u0000\u0bd0\u0bd1\u0007\u0016\u0000\u0000\u0bd1\u0bd2\u0007\f\u0000\u0000"+ - "\u0bd2\u0bd3\u0007\u0011\u0000\u0000\u0bd3\u0bd4\u0007\u0007\u0000\u0000"+ - "\u0bd4\u0bd5\u0007\u0017\u0000\u0000\u0bd5\u01d4\u0001\u0000\u0000\u0000"+ - "\u0bd6\u0bd7\u0007\u0011\u0000\u0000\u0bd7\u0bd8\u0007\u0007\u0000\u0000"+ - "\u0bd8\u0bd9\u0007\u000e\u0000\u0000\u0bd9\u0bda\u0007\r\u0000\u0000\u0bda"+ - "\u0bdb\u0007\n\u0000\u0000\u0bdb\u0bdc\u0007\u000f\u0000\u0000\u0bdc\u0bdd"+ - "\u0007\n\u0000\u0000\u0bdd\u0bde\u0007\u0007\u0000\u0000\u0bde\u0bdf\u0007"+ - "\u0010\u0000\u0000\u0bdf\u01d6\u0001\u0000\u0000\u0000\u0be0\u0be1\u0007"+ - "\u0011\u0000\u0000\u0be1\u0be2\u0007\u0007\u0000\u0000\u0be2\u0be3\u0007"+ - "\f\u0000\u0000\u0be3\u0be4\u0007\n\u0000\u0000\u0be4\u0be5\u0007\u001a"+ - "\u0000\u0000\u0be5\u01d8\u0001\u0000\u0000\u0000\u0be6\u0be7\u0007\u0011"+ - "\u0000\u0000\u0be7\u0be8\u0007\u0007\u0000\u0000\u0be8\u0be9\u0007\f\u0000"+ - "\u0000\u0be9\u0bea\u0007\n\u0000\u0000\u0bea\u0beb\u0007\u001a\u0000\u0000"+ - "\u0beb\u0bec\u0007\n\u0000\u0000\u0bec\u0bed\u0007\t\u0000\u0000\u0bed"+ - "\u01da\u0001\u0000\u0000\u0000\u0bee\u0bef\u0007\u0011\u0000\u0000\u0bef"+ - "\u0bf0\u0007\u0007\u0000\u0000\u0bf0\u0bf1\u0007\u0014\u0000\u0000\u0bf1"+ - "\u0bf2\u0007\n\u0000\u0000\u0bf2\u0bf3\u0007\r\u0000\u0000\u0bf3\u0bf4"+ - "\u0007\u0011\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\u0014\u0000\u0000\u0bf9\u0bfa"+ - "\u0007\n\u0000\u0000\u0bfa\u0bfb\u0007\r\u0000\u0000\u0bfb\u0bfc\u0007"+ - "\u0011\u0000\u0000\u0bfc\u0bfd\u0007\u0010\u0000\u0000\u0bfd\u0bfe\u0007"+ - "\t\u0000\u0000\u0bfe\u01de\u0001\u0000\u0000\u0000\u0bff\u0c00\u0007\u0011"+ - "\u0000\u0000\u0c00\u0c01\u0007\u0007\u0000\u0000\u0c01\u0c02\u0007\u0006"+ - "\u0000\u0000\u0c02\u0c03\u0007\u0011\u0000\u0000\u0c03\u0c04\u0007\u0007"+ - "\u0000\u0000\u0c04\u0c05\u0007\n\u0000\u0000\u0c05\u01e0\u0001\u0000\u0000"+ - "\u0000\u0c06\u0c07\u0007\u0011\u0000\u0000\u0c07\u0c08\u0007\u0007\u0000"+ - "\u0000\u0c08\u0c09\u0007\t\u0000\u0000\u0c09\u0c0a\u0007\n\u0000\u0000"+ - "\u0c0a\u0c0b\u0007\u0007\u0000\u0000\u0c0b\u0c0c\u0007\t\u0000\u0000\u0c0c"+ - "\u0c0d\u0007\u0011\u0000\u0000\u0c0d\u0c0e\u0007\u0010\u0000\u0000\u0c0e"+ - "\u0c0f\u0007\u0011\u0000\u0000\u0c0f\u0c10\u0007\u001b\u0000\u0000\u0c10"+ - "\u0c11\u0007\n\u0000\u0000\u0c11\u01e2\u0001\u0000\u0000\u0000\u0c12\u0c13"+ - "\u0007\u0011\u0000\u0000\u0c13\u0c14\u0007\u0007\u0000\u0000\u0c14\u0c15"+ - "\u0007\t\u0000\u0000\u0c15\u0c16\u0007\n\u0000\u0000\u0c16\u0c17\u0007"+ - "\r\u0000\u0000\u0c17\u0c18\u0007\u0010\u0000\u0000\u0c18\u01e4\u0001\u0000"+ - "\u0000\u0000\u0c19\u0c1a\u0007\u0011\u0000\u0000\u0c1a\u0c1b\u0007\u0007"+ - "\u0000\u0000\u0c1b\u0c1c\u0007\t\u0000\u0000\u0c1c\u0c1d\u0007\u0010\u0000"+ - "\u0000\u0c1d\u0c1e\u0007\n\u0000\u0000\u0c1e\u0c1f\u0007\u0005\u0000\u0000"+ - "\u0c1f\u0c20\u0007\f\u0000\u0000\u0c20\u01e6\u0001\u0000\u0000\u0000\u0c21"+ - "\u0c22\u0007\u0011\u0000\u0000\u0c22\u0c23\u0007\u0007\u0000\u0000\u0c23"+ - "\u0c24\u0007\u001b\u0000\u0000\u0c24\u0c25\u0007\u0013\u0000\u0000\u0c25"+ - "\u0c26\u0007\u0015\u0000\u0000\u0c26\u0c27\u0007\n\u0000\u0000\u0c27\u0c28"+ - "\u0007\r\u0000\u0000\u0c28\u01e8\u0001\u0000\u0000\u0000\u0c29\u0c2a\u0007"+ - "\u0011\u0000\u0000\u0c2a\u0c2b\u0007\t\u0000\u0000\u0c2b\u0c2c\u0007\u0013"+ - "\u0000\u0000\u0c2c\u0c2d\u0007\u0006\u0000\u0000\u0c2d\u0c2e\u0007\u0005"+ - "\u0000\u0000\u0c2e\u0c2f\u0007\u0010\u0000\u0000\u0c2f\u0c30\u0007\u0011"+ - "\u0000\u0000\u0c30\u0c31\u0007\u0013\u0000\u0000\u0c31\u0c32\u0007\u0007"+ - "\u0000\u0000\u0c32\u01ea\u0001\u0000\u0000\u0000\u0c33\u0c34\u0007\u0015"+ - "\u0000\u0000\u0c34\u0c35\u0007\n\u0000\u0000\u0c35\u0c36\u0007\b\u0000"+ - "\u0000\u0c36\u01ec\u0001\u0000\u0000\u0000\u0c37\u0c38\u0007\u0006\u0000"+ - "\u0000\u0c38\u0c39\u0007\u0005\u0000\u0000\u0c39\u0c3a\u0007\u0012\u0000"+ - "\u0000\u0c3a\u0c3b\u0007\n\u0000\u0000\u0c3b\u0c3c\u0007\u0006\u0000\u0000"+ - "\u0c3c\u01ee\u0001\u0000\u0000\u0000\u0c3d\u0c3e\u0007\u0006\u0000\u0000"+ - "\u0c3e\u0c3f\u0007\u0005\u0000\u0000\u0c3f\u0c40\u0007\u0007\u0000\u0000"+ - "\u0c40\u0c41\u0007\u0017\u0000\u0000\u0c41\u0c42\u0007\u0016\u0000\u0000"+ - "\u0c42\u0c43\u0007\u0005\u0000\u0000\u0c43\u0c44\u0007\u0017\u0000\u0000"+ - "\u0c44\u0c45\u0007\n\u0000\u0000\u0c45\u01f0\u0001\u0000\u0000\u0000\u0c46"+ - "\u0c47\u0007\u0006\u0000\u0000\u0c47\u0c48\u0007\u0005\u0000\u0000\u0c48"+ - "\u0c49\u0007\r\u0000\u0000\u0c49\u0c4a\u0007\u0017\u0000\u0000\u0c4a\u0c4b"+ - "\u0007\n\u0000\u0000\u0c4b\u01f2\u0001\u0000\u0000\u0000\u0c4c\u0c4d\u0007"+ - "\u0006\u0000\u0000\u0c4d\u0c4e\u0007\u0005\u0000\u0000\u0c4e\u0c4f\u0007"+ - "\t\u0000\u0000\u0c4f\u0c50\u0007\u0010\u0000\u0000\u0c50\u01f4\u0001\u0000"+ - "\u0000\u0000\u0c51\u0c52\u0007\u0006\u0000\u0000\u0c52\u0c53\u0007\n\u0000"+ - "\u0000\u0c53\u0c54\u0007\u0005\u0000\u0000\u0c54\u0c55\u0007\u0015\u0000"+ - "\u0000\u0c55\u0c56\u0007\u0018\u0000\u0000\u0c56\u0c57\u0007\r\u0000\u0000"+ - "\u0c57\u0c58\u0007\u0013\u0000\u0000\u0c58\u0c59\u0007\u0013\u0000\u0000"+ - "\u0c59\u0c5a\u0007\u0019\u0000\u0000\u0c5a\u01f6\u0001\u0000\u0000\u0000"+ - "\u0c5b\u0c5c\u0007\u0006\u0000\u0000\u0c5c\u0c5d\u0007\n\u0000\u0000\u0c5d"+ - "\u0c5e\u0007\u001b\u0000\u0000\u0c5e\u0c5f\u0007\n\u0000\u0000\u0c5f\u0c60"+ - "\u0007\u0006\u0000\u0000\u0c60\u01f8\u0001\u0000\u0000\u0000\u0c61\u0c62"+ - "\u0007\u0006\u0000\u0000\u0c62\u0c63\u0007\u0011\u0000\u0000\u0c63\u0c64"+ - "\u0007\t\u0000\u0000\u0c64\u0c65\u0007\u0010\u0000\u0000\u0c65\u0c66\u0007"+ - "\n\u0000\u0000\u0c66\u0c67\u0007\u0007\u0000\u0000\u0c67\u01fa\u0001\u0000"+ - "\u0000\u0000\u0c68\u0c69\u0007\u0006\u0000\u0000\u0c69\u0c6a\u0007\u0013"+ - "\u0000\u0000\u0c6a\u0c6b\u0007\u0005\u0000\u0000\u0c6b\u0c6c\u0007\f\u0000"+ - "\u0000\u0c6c\u01fc\u0001\u0000\u0000\u0000\u0c6d\u0c6e\u0007\u0006\u0000"+ - "\u0000\u0c6e\u0c6f\u0007\u0013\u0000\u0000\u0c6f\u0c70\u0007\u000e\u0000"+ - "\u0000\u0c70\u0c71\u0007\u0005\u0000\u0000\u0c71\u0c72\u0007\u0006\u0000"+ - "\u0000\u0c72\u01fe\u0001\u0000\u0000\u0000\u0c73\u0c74\u0007\u0006\u0000"+ - "\u0000\u0c74\u0c75\u0007\u0013\u0000\u0000\u0c75\u0c76\u0007\u000e\u0000"+ - "\u0000\u0c76\u0c77\u0007\u0005\u0000\u0000\u0c77\u0c78\u0007\u0010\u0000"+ - "\u0000\u0c78\u0c79\u0007\u0011\u0000\u0000\u0c79\u0c7a\u0007\u0013\u0000"+ - "\u0000\u0c7a\u0c7b\u0007\u0007\u0000\u0000\u0c7b\u0200\u0001\u0000\u0000"+ - "\u0000\u0c7c\u0c7d\u0007\u0006\u0000\u0000\u0c7d\u0c7e\u0007\u0013\u0000"+ - "\u0000\u0c7e\u0c7f\u0007\u000e\u0000\u0000\u0c7f\u0c80\u0007\u0015\u0000"+ - "\u0000\u0c80\u0202\u0001\u0000\u0000\u0000\u0c81\u0c82\u0007\u000f\u0000"+ - "\u0000\u0c82\u0c83\u0007\u0005\u0000\u0000\u0c83\u0c84\u0007\u0018\u0000"+ - "\u0000\u0c84\u0c85\u0007\u0018\u0000\u0000\u0c85\u0c86\u0007\u0011\u0000"+ - "\u0000\u0c86\u0c87\u0007\u0007\u0000\u0000\u0c87\u0c88\u0007\u0017\u0000"+ - "\u0000\u0c88\u0204\u0001\u0000\u0000\u0000\u0c89\u0c8a\u0007\u000f\u0000"+ - "\u0000\u0c8a\u0c8b\u0007\u0005\u0000\u0000\u0c8b\u0c8c\u0007\u0010\u0000"+ - "\u0000\u0c8c\u0c8d\u0007\u000e\u0000\u0000\u0c8d\u0c8e\u0007\u0014\u0000"+ - "\u0000\u0c8e\u0206\u0001\u0000\u0000\u0000\u0c8f\u0c90\u0007\u000f\u0000"+ - "\u0000\u0c90\u0c91\u0007\u0005\u0000\u0000\u0c91\u0c92\u0007\u0010\u0000"+ - "\u0000\u0c92\u0c93\u0007\u000e\u0000\u0000\u0c93\u0c94\u0007\u0014\u0000"+ - "\u0000\u0c94\u0c95\u0007\n\u0000\u0000\u0c95\u0c96\u0007\f\u0000\u0000"+ - "\u0c96\u0208\u0001\u0000\u0000\u0000\u0c97\u0c98\u0007\u000f\u0000\u0000"+ - "\u0c98\u0c99\u0007\u0005\u0000\u0000\u0c99\u0c9a\u0007\u0010\u0000\u0000"+ - "\u0c9a\u0c9b\u0007\n\u0000\u0000\u0c9b\u0c9c\u0007\r\u0000\u0000\u0c9c"+ - "\u0c9d\u0007\u0011\u0000\u0000\u0c9d\u0c9e\u0007\u0005\u0000\u0000\u0c9e"+ - "\u0c9f\u0007\u0006\u0000\u0000\u0c9f\u0ca0\u0007\u0011\u0000\u0000\u0ca0"+ - "\u0ca1\u0007\u000b\u0000\u0000\u0ca1\u0ca2\u0007\n\u0000\u0000\u0ca2\u0ca3"+ - "\u0007\f\u0000\u0000\u0ca3\u020a\u0001\u0000\u0000\u0000\u0ca4\u0ca5\u0007"+ - "\u000f\u0000\u0000\u0ca5\u0ca6\u0007\u0005\u0000\u0000\u0ca6\u0ca7\u0007"+ - "\u001a\u0000\u0000\u0ca7\u0ca8\u0007\u001b\u0000\u0000\u0ca8\u0ca9\u0007"+ - "\u0005\u0000\u0000\u0ca9\u0caa\u0007\u0006\u0000\u0000\u0caa\u0cab\u0007"+ - "\u0016\u0000\u0000\u0cab\u0cac\u0007\n\u0000\u0000\u0cac\u020c\u0001\u0000"+ - "\u0000\u0000\u0cad\u0cae\u0007\u000f\u0000\u0000\u0cae\u0caf\u0007\n\u0000"+ - "\u0000\u0caf\u0cb0\u0007\r\u0000\u0000\u0cb0\u0cb1\u0007\u0017\u0000\u0000"+ - "\u0cb1\u0cb2\u0007\n\u0000\u0000\u0cb2\u020e\u0001\u0000\u0000\u0000\u0cb3"+ - "\u0cb4\u0007\u000f\u0000\u0000\u0cb4\u0cb5\u0007\u0011\u0000\u0000\u0cb5"+ - "\u0cb6\u0007\u0007\u0000\u0000\u0cb6\u0cb7\u0007\u0016\u0000\u0000\u0cb7"+ - "\u0cb8\u0007\u0010\u0000\u0000\u0cb8\u0cb9\u0007\n\u0000\u0000\u0cb9\u0210"+ - "\u0001\u0000\u0000\u0000\u0cba\u0cbb\u0007\u000f\u0000\u0000\u0cbb\u0cbc"+ - "\u0007\u0011\u0000\u0000\u0cbc\u0cbd\u0007\u0007\u0000\u0000\u0cbd\u0cbe"+ - "\u0007\u001b\u0000\u0000\u0cbe\u0cbf\u0007\u0005\u0000\u0000\u0cbf\u0cc0"+ - "\u0007\u0006\u0000\u0000\u0cc0\u0cc1\u0007\u0016\u0000\u0000\u0cc1\u0cc2"+ - "\u0007\n\u0000\u0000\u0cc2\u0212\u0001\u0000\u0000\u0000\u0cc3\u0cc4\u0007"+ - "\u000f\u0000\u0000\u0cc4\u0cc5\u0007\u0013\u0000\u0000\u0cc5\u0cc6\u0007"+ - "\f\u0000\u0000\u0cc6\u0cc7\u0007\n\u0000\u0000\u0cc7\u0214\u0001\u0000"+ - "\u0000\u0000\u0cc8\u0cc9\u0007\u000f\u0000\u0000\u0cc9\u0cca\u0007\u0013"+ - "\u0000\u0000\u0cca\u0ccb\u0007\u0007\u0000\u0000\u0ccb\u0ccc\u0007\u0010"+ - "\u0000\u0000\u0ccc\u0ccd\u0007\u0014\u0000\u0000\u0ccd\u0216\u0001\u0000"+ - "\u0000\u0000\u0cce\u0ccf\u0007\u000f\u0000\u0000\u0ccf\u0cd0\u0007\u0013"+ - "\u0000\u0000\u0cd0\u0cd1\u0007\u001b\u0000\u0000\u0cd1\u0cd2\u0007\n\u0000"+ - "\u0000\u0cd2\u0218\u0001\u0000\u0000\u0000\u0cd3\u0cd4\u0007\u0007\u0000"+ - "\u0000\u0cd4\u0cd5\u0007\u0005\u0000\u0000\u0cd5\u0cd6\u0007\u000f\u0000"+ - "\u0000\u0cd6\u0cd7\u0007\n\u0000\u0000\u0cd7\u021a\u0001\u0000\u0000\u0000"+ - "\u0cd8\u0cd9\u0007\u0007\u0000\u0000\u0cd9\u0cda\u0007\u0005\u0000\u0000"+ - "\u0cda\u0cdb\u0007\u000f\u0000\u0000\u0cdb\u0cdc\u0007\n\u0000\u0000\u0cdc"+ - "\u0cdd\u0007\t\u0000\u0000\u0cdd\u021c\u0001\u0000\u0000\u0000\u0cde\u0cdf"+ - "\u0007\u0007\u0000\u0000\u0cdf\u0ce0\u0007\n\u0000\u0000\u0ce0\u0ce1\u0007"+ - "\u001a\u0000\u0000\u0ce1\u0ce2\u0007\u0010\u0000\u0000\u0ce2\u021e\u0001"+ - "\u0000\u0000\u0000\u0ce3\u0ce4\u0007\u0007\u0000\u0000\u0ce4\u0ce5\u0007"+ - "\u0013\u0000\u0000\u0ce5\u0220\u0001\u0000\u0000\u0000\u0ce6\u0ce7\u0007"+ - "\u0007\u0000\u0000\u0ce7\u0ce8\u0007\u0013\u0000\u0000\u0ce8\u0ce9\u0007"+ - "\u0010\u0000\u0000\u0ce9\u0cea\u0007\u0014\u0000\u0000\u0cea\u0ceb\u0007"+ - "\u0011\u0000\u0000\u0ceb\u0cec\u0007\u0007\u0000\u0000\u0cec\u0ced\u0007"+ - "\u0017\u0000\u0000\u0ced\u0222\u0001\u0000\u0000\u0000\u0cee\u0cef\u0007"+ - "\u0007\u0000\u0000\u0cef\u0cf0\u0007\u0013\u0000\u0000\u0cf0\u0cf1\u0007"+ - "\u0010\u0000\u0000\u0cf1\u0cf2\u0007\u0011\u0000\u0000\u0cf2\u0cf3\u0007"+ - "\u0019\u0000\u0000\u0cf3\u0cf4\u0007\b\u0000\u0000\u0cf4\u0224\u0001\u0000"+ - "\u0000\u0000\u0cf5\u0cf6\u0007\u0007\u0000\u0000\u0cf6\u0cf7\u0007\u0013"+ - "\u0000\u0000\u0cf7\u0cf8\u0007\u001c\u0000\u0000\u0cf8\u0cf9\u0007\u0005"+ - "\u0000\u0000\u0cf9\u0cfa\u0007\u0011\u0000\u0000\u0cfa\u0cfb\u0007\u0010"+ - "\u0000\u0000\u0cfb\u0226\u0001\u0000\u0000\u0000\u0cfc\u0cfd\u0007\u0007"+ - "\u0000\u0000\u0cfd\u0cfe\u0007\u0016\u0000\u0000\u0cfe\u0cff\u0007\u0006"+ - "\u0000\u0000\u0cff\u0d00\u0007\u0006\u0000\u0000\u0d00\u0d01\u0007\t\u0000"+ - "\u0000\u0d01\u0228\u0001\u0000\u0000\u0000\u0d02\u0d03\u0007\u0013\u0000"+ - "\u0000\u0d03\u0d04\u0007\u0012\u0000\u0000\u0d04\u0d05\u0007\u001e\u0000"+ - "\u0000\u0d05\u0d06\u0007\n\u0000\u0000\u0d06\u0d07\u0007\u000e\u0000\u0000"+ - "\u0d07\u0d08\u0007\u0010\u0000\u0000\u0d08\u022a\u0001\u0000\u0000\u0000"+ - "\u0d09\u0d0a\u0007\u0013\u0000\u0000\u0d0a\u0d0b\u0007\u0019\u0000\u0000"+ - "\u0d0b\u022c\u0001\u0000\u0000\u0000\u0d0c\u0d0d\u0007\u0013\u0000\u0000"+ - "\u0d0d\u0d0e\u0007\u0019\u0000\u0000\u0d0e\u0d0f\u0007\u0019\u0000\u0000"+ - "\u0d0f\u022e\u0001\u0000\u0000\u0000\u0d10\u0d11\u0007\u0013\u0000\u0000"+ - "\u0d11\u0d12\u0007\u0011\u0000\u0000\u0d12\u0d13\u0007\f\u0000\u0000\u0d13"+ - "\u0d14\u0007\t\u0000\u0000\u0d14\u0230\u0001\u0000\u0000\u0000\u0d15\u0d16"+ - "\u0007\u0013\u0000\u0000\u0d16\u0d17\u0007\u0018\u0000\u0000\u0d17\u0d18"+ - "\u0007\n\u0000\u0000\u0d18\u0d19\u0007\r\u0000\u0000\u0d19\u0d1a\u0007"+ - "\u0005\u0000\u0000\u0d1a\u0d1b\u0007\u0010\u0000\u0000\u0d1b\u0d1c\u0007"+ - "\u0013\u0000\u0000\u0d1c\u0d1d\u0007\r\u0000\u0000\u0d1d\u0232\u0001\u0000"+ - "\u0000\u0000\u0d1e\u0d1f\u0007\u0013\u0000\u0000\u0d1f\u0d20\u0007\u0018"+ - "\u0000\u0000\u0d20\u0d21\u0007\u0010\u0000\u0000\u0d21\u0d22\u0007\u0011"+ - "\u0000\u0000\u0d22\u0d23\u0007\u0013\u0000\u0000\u0d23\u0d24\u0007\u0007"+ - "\u0000\u0000\u0d24\u0234\u0001\u0000\u0000\u0000\u0d25\u0d26\u0007\u0013"+ - "\u0000\u0000\u0d26\u0d27\u0007\u0018\u0000\u0000\u0d27\u0d28\u0007\u0010"+ - "\u0000\u0000\u0d28\u0d29\u0007\u0011\u0000\u0000\u0d29\u0d2a\u0007\u0013"+ - "\u0000\u0000\u0d2a\u0d2b\u0007\u0007\u0000\u0000\u0d2b\u0d2c\u0007\t\u0000"+ - "\u0000\u0d2c\u0236\u0001\u0000\u0000\u0000\u0d2d\u0d2e\u0007\u0013\u0000"+ - "\u0000\u0d2e\u0d2f\u0007\u001c\u0000\u0000\u0d2f\u0d30\u0007\u0007\u0000"+ - "\u0000\u0d30\u0d31\u0007\n\u0000\u0000\u0d31\u0d32\u0007\f\u0000\u0000"+ - "\u0d32\u0238\u0001\u0000\u0000\u0000\u0d33\u0d34\u0007\u0013\u0000\u0000"+ - "\u0d34\u0d35\u0007\u001c\u0000\u0000\u0d35\u0d36\u0007\u0007\u0000\u0000"+ - "\u0d36\u0d37\u0007\n\u0000\u0000\u0d37\u0d38\u0007\r\u0000\u0000\u0d38"+ - "\u023a\u0001\u0000\u0000\u0000\u0d39\u0d3a\u0007\u0018\u0000\u0000\u0d3a"+ - "\u0d3b\u0007\u0005\u0000\u0000\u0d3b\u0d3c\u0007\r\u0000\u0000\u0d3c\u0d3d"+ - "\u0007\t\u0000\u0000\u0d3d\u0d3e\u0007\n\u0000\u0000\u0d3e\u0d3f\u0007"+ - "\r\u0000\u0000\u0d3f\u023c\u0001\u0000\u0000\u0000\u0d40\u0d41\u0007\u0018"+ - "\u0000\u0000\u0d41\u0d42\u0007\u0005\u0000\u0000\u0d42\u0d43\u0007\r\u0000"+ - "\u0000\u0d43\u0d44\u0007\u0010\u0000\u0000\u0d44\u0d45\u0007\u0011\u0000"+ - "\u0000\u0d45\u0d46\u0007\u0005\u0000\u0000\u0d46\u0d47\u0007\u0006\u0000"+ - "\u0000\u0d47\u023e\u0001\u0000\u0000\u0000\u0d48\u0d49\u0007\u0018\u0000"+ - "\u0000\u0d49\u0d4a\u0007\u0005\u0000\u0000\u0d4a\u0d4b\u0007\r\u0000\u0000"+ - "\u0d4b\u0d4c\u0007\u0010\u0000\u0000\u0d4c\u0d4d\u0007\u0011\u0000\u0000"+ - "\u0d4d\u0d4e\u0007\u0010\u0000\u0000\u0d4e\u0d4f\u0007\u0011\u0000\u0000"+ - "\u0d4f\u0d50\u0007\u0013\u0000\u0000\u0d50\u0d51\u0007\u0007\u0000\u0000"+ - "\u0d51\u0240\u0001\u0000\u0000\u0000\u0d52\u0d53\u0007\u0018\u0000\u0000"+ - "\u0d53\u0d54\u0007\u0005\u0000\u0000\u0d54\u0d55\u0007\t\u0000\u0000\u0d55"+ - "\u0d56\u0007\t\u0000\u0000\u0d56\u0d57\u0007\u0011\u0000\u0000\u0d57\u0d58"+ - "\u0007\u0007\u0000\u0000\u0d58\u0d59\u0007\u0017\u0000\u0000\u0d59\u0242"+ - "\u0001\u0000\u0000\u0000\u0d5a\u0d5b\u0007\u0018\u0000\u0000\u0d5b\u0d5c"+ - "\u0007\u0005\u0000\u0000\u0d5c\u0d5d\u0007\t\u0000\u0000\u0d5d\u0d5e\u0007"+ - "\t\u0000\u0000\u0d5e\u0d5f\u0007\u001c\u0000\u0000\u0d5f\u0d60\u0007\u0013"+ - "\u0000\u0000\u0d60\u0d61\u0007\r\u0000\u0000\u0d61\u0d62\u0007\f\u0000"+ - "\u0000\u0d62\u0244\u0001\u0000\u0000\u0000\u0d63\u0d64\u0007\u0018\u0000"+ - "\u0000\u0d64\u0d65\u0007\u0006\u0000\u0000\u0d65\u0d66\u0007\u0005\u0000"+ - "\u0000\u0d66\u0d67\u0007\u0007\u0000\u0000\u0d67\u0d68\u0007\t\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\u000e\u0000\u0000\u0d6d\u0d6e\u0007\n\u0000\u0000\u0d6e\u0d6f"+ - "\u0007\f\u0000\u0000\u0d6f\u0d70\u0007\u0011\u0000\u0000\u0d70\u0d71\u0007"+ - "\u0007\u0000\u0000\u0d71\u0d72\u0007\u0017\u0000\u0000\u0d72\u0248\u0001"+ - "\u0000\u0000\u0000\u0d73\u0d74\u0007\u0018\u0000\u0000\u0d74\u0d75\u0007"+ - "\r\u0000\u0000\u0d75\u0d76\u0007\n\u0000\u0000\u0d76\u0d77\u0007\u0018"+ - "\u0000\u0000\u0d77\u0d78\u0007\u0005\u0000\u0000\u0d78\u0d79\u0007\r\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\n\u0000\u0000\u0d7e\u0d7f\u0007\u0018\u0000\u0000\u0d7f\u0d80"+ - "\u0007\u0005\u0000\u0000\u0d80\u0d81\u0007\r\u0000\u0000\u0d81\u0d82\u0007"+ - "\n\u0000\u0000\u0d82\u0d83\u0007\f\u0000\u0000\u0d83\u024c\u0001\u0000"+ - "\u0000\u0000\u0d84\u0d85\u0007\u0018\u0000\u0000\u0d85\u0d86\u0007\r\u0000"+ - "\u0000\u0d86\u0d87\u0007\n\u0000\u0000\u0d87\u0d88\u0007\t\u0000\u0000"+ - "\u0d88\u0d89\u0007\n\u0000\u0000\u0d89\u0d8a\u0007\r\u0000\u0000\u0d8a"+ - "\u0d8b\u0007\u001b\u0000\u0000\u0d8b\u0d8c\u0007\n\u0000\u0000\u0d8c\u024e"+ - "\u0001\u0000\u0000\u0000\u0d8d\u0d8e\u0007\u0018\u0000\u0000\u0d8e\u0d8f"+ - "\u0007\r\u0000\u0000\u0d8f\u0d90\u0007\u0011\u0000\u0000\u0d90\u0d91\u0007"+ - "\u0013\u0000\u0000\u0d91\u0d92\u0007\r\u0000\u0000\u0d92\u0250\u0001\u0000"+ - "\u0000\u0000\u0d93\u0d94\u0007\u0018\u0000\u0000\u0d94\u0d95\u0007\r\u0000"+ - "\u0000\u0d95\u0d96\u0007\u0011\u0000\u0000\u0d96\u0d97\u0007\u001b\u0000"+ - "\u0000\u0d97\u0d98\u0007\u0011\u0000\u0000\u0d98\u0d99\u0007\u0006\u0000"+ - "\u0000\u0d99\u0d9a\u0007\n\u0000\u0000\u0d9a\u0d9b\u0007\u0017\u0000\u0000"+ - "\u0d9b\u0d9c\u0007\n\u0000\u0000\u0d9c\u0d9d\u0007\t\u0000\u0000\u0d9d"+ - "\u0252\u0001\u0000\u0000\u0000\u0d9e\u0d9f\u0007\u0018\u0000\u0000\u0d9f"+ - "\u0da0\u0007\r\u0000\u0000\u0da0\u0da1\u0007\u0013\u0000\u0000\u0da1\u0da2"+ - "\u0007\u000e\u0000\u0000\u0da2\u0da3\u0007\n\u0000\u0000\u0da3\u0da4\u0007"+ - "\f\u0000\u0000\u0da4\u0da5\u0007\u0016\u0000\u0000\u0da5\u0da6\u0007\r"+ - "\u0000\u0000\u0da6\u0da7\u0007\u0005\u0000\u0000\u0da7\u0da8\u0007\u0006"+ - "\u0000\u0000\u0da8\u0254\u0001\u0000\u0000\u0000\u0da9\u0daa\u0007\u0018"+ - "\u0000\u0000\u0daa\u0dab\u0007\r\u0000\u0000\u0dab\u0dac\u0007\u0013\u0000"+ - "\u0000\u0dac\u0dad\u0007\u000e\u0000\u0000\u0dad\u0dae\u0007\n\u0000\u0000"+ - "\u0dae\u0daf\u0007\f\u0000\u0000\u0daf\u0db0\u0007\u0016\u0000\u0000\u0db0"+ - "\u0db1\u0007\r\u0000\u0000\u0db1\u0db2\u0007\n\u0000\u0000\u0db2\u0256"+ - "\u0001\u0000\u0000\u0000\u0db3\u0db4\u0007\u0018\u0000\u0000\u0db4\u0db5"+ - "\u0007\r\u0000\u0000\u0db5\u0db6\u0007\u0013\u0000\u0000\u0db6\u0db7\u0007"+ - "\u0017\u0000\u0000\u0db7\u0db8\u0007\r\u0000\u0000\u0db8\u0db9\u0007\u0005"+ - "\u0000\u0000\u0db9\u0dba\u0007\u000f\u0000\u0000\u0dba\u0258\u0001\u0000"+ - "\u0000\u0000\u0dbb\u0dbc\u0007\u001d\u0000\u0000\u0dbc\u0dbd\u0007\u0016"+ - "\u0000\u0000\u0dbd\u0dbe\u0007\u0013\u0000\u0000\u0dbe\u0dbf\u0007\u0010"+ - "\u0000\u0000\u0dbf\u0dc0\u0007\n\u0000\u0000\u0dc0\u025a\u0001\u0000\u0000"+ - "\u0000\u0dc1\u0dc2\u0007\r\u0000\u0000\u0dc2\u0dc3\u0007\u0005\u0000\u0000"+ - "\u0dc3\u0dc4\u0007\u0007\u0000\u0000\u0dc4\u0dc5\u0007\u0017\u0000\u0000"+ - "\u0dc5\u0dc6\u0007\n\u0000\u0000\u0dc6\u025c\u0001\u0000\u0000\u0000\u0dc7"+ - "\u0dc8\u0007\r\u0000\u0000\u0dc8\u0dc9\u0007\n\u0000\u0000\u0dc9\u0dca"+ - "\u0007\u0005\u0000\u0000\u0dca\u0dcb\u0007\f\u0000\u0000\u0dcb\u025e\u0001"+ - "\u0000\u0000\u0000\u0dcc\u0dcd\u0007\r\u0000\u0000\u0dcd\u0dce\u0007\n"+ - "\u0000\u0000\u0dce\u0dcf\u0007\u0005\u0000\u0000\u0dcf\u0dd0\u0007\t\u0000"+ - "\u0000\u0dd0\u0dd1\u0007\t\u0000\u0000\u0dd1\u0dd2\u0007\u0011\u0000\u0000"+ - "\u0dd2\u0dd3\u0007\u0017\u0000\u0000\u0dd3\u0dd4\u0007\u0007\u0000\u0000"+ - "\u0dd4\u0260\u0001\u0000\u0000\u0000\u0dd5\u0dd6\u0007\r\u0000\u0000\u0dd6"+ - "\u0dd7\u0007\n\u0000\u0000\u0dd7\u0dd8\u0007\u000e\u0000\u0000\u0dd8\u0dd9"+ - "\u0007\u0014\u0000\u0000\u0dd9\u0dda\u0007\n\u0000\u0000\u0dda\u0ddb\u0007"+ - "\u000e\u0000\u0000\u0ddb\u0ddc\u0007\u0015\u0000\u0000\u0ddc\u0262\u0001"+ - "\u0000\u0000\u0000\u0ddd\u0dde\u0007\r\u0000\u0000\u0dde\u0ddf\u0007\n"+ - "\u0000\u0000\u0ddf\u0de0\u0007\u000e\u0000\u0000\u0de0\u0de1\u0007\u0016"+ - "\u0000\u0000\u0de1\u0de2\u0007\r\u0000\u0000\u0de2\u0de3\u0007\t\u0000"+ - "\u0000\u0de3\u0de4\u0007\u0011\u0000\u0000\u0de4\u0de5\u0007\u001b\u0000"+ - "\u0000\u0de5\u0de6\u0007\n\u0000\u0000\u0de6\u0264\u0001\u0000\u0000\u0000"+ - "\u0de7\u0de8\u0007\r\u0000\u0000\u0de8\u0de9\u0007\n\u0000\u0000\u0de9"+ - "\u0dea\u0007\u0019\u0000\u0000\u0dea\u0266\u0001\u0000\u0000\u0000\u0deb"+ - "\u0dec\u0007\r\u0000\u0000\u0dec\u0ded\u0007\n\u0000\u0000\u0ded\u0dee"+ - "\u0007\u0019\u0000\u0000\u0dee\u0def\u0007\r\u0000\u0000\u0def\u0df0\u0007"+ - "\n\u0000\u0000\u0df0\u0df1\u0007\t\u0000\u0000\u0df1\u0df2\u0007\u0014"+ - "\u0000\u0000\u0df2\u0268\u0001\u0000\u0000\u0000\u0df3\u0df4\u0007\r\u0000"+ - "\u0000\u0df4\u0df5\u0007\n\u0000\u0000\u0df5\u0df6\u0007\u0011\u0000\u0000"+ - "\u0df6\u0df7\u0007\u0007\u0000\u0000\u0df7\u0df8\u0007\f\u0000\u0000\u0df8"+ - "\u0df9\u0007\n\u0000\u0000\u0df9\u0dfa\u0007\u001a\u0000\u0000\u0dfa\u026a"+ - "\u0001\u0000\u0000\u0000\u0dfb\u0dfc\u0007\r\u0000\u0000\u0dfc\u0dfd\u0007"+ - "\n\u0000\u0000\u0dfd\u0dfe\u0007\u0006\u0000\u0000\u0dfe\u0dff\u0007\u0005"+ - "\u0000\u0000\u0dff\u0e00\u0007\u0010\u0000\u0000\u0e00\u0e01\u0007\u0011"+ - "\u0000\u0000\u0e01\u0e02\u0007\u001b\u0000\u0000\u0e02\u0e03\u0007\n\u0000"+ - "\u0000\u0e03\u026c\u0001\u0000\u0000\u0000\u0e04\u0e05\u0007\r\u0000\u0000"+ - "\u0e05\u0e06\u0007\n\u0000\u0000\u0e06\u0e07\u0007\u0006\u0000\u0000\u0e07"+ - "\u0e08\u0007\n\u0000\u0000\u0e08\u0e09\u0007\u0005\u0000\u0000\u0e09\u0e0a"+ - "\u0007\t\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\u0007\u0000\u0000\u0e0f\u0e10\u0007\u0005"+ - "\u0000\u0000\u0e10\u0e11\u0007\u000f\u0000\u0000\u0e11\u0e12\u0007\n\u0000"+ - "\u0000\u0e12\u0270\u0001\u0000\u0000\u0000\u0e13\u0e14\u0007\r\u0000\u0000"+ - "\u0e14\u0e15\u0007\n\u0000\u0000\u0e15\u0e16\u0007\u0018\u0000\u0000\u0e16"+ - "\u0e17\u0007\n\u0000\u0000\u0e17\u0e18\u0007\u0005\u0000\u0000\u0e18\u0e19"+ - "\u0007\u0010\u0000\u0000\u0e19\u0e1a\u0007\u0005\u0000\u0000\u0e1a\u0e1b"+ - "\u0007\u0012\u0000\u0000\u0e1b\u0e1c\u0007\u0006\u0000\u0000\u0e1c\u0e1d"+ - "\u0007\n\u0000\u0000\u0e1d\u0272\u0001\u0000\u0000\u0000\u0e1e\u0e1f\u0007"+ - "\r\u0000\u0000\u0e1f\u0e20\u0007\n\u0000\u0000\u0e20\u0e21\u0007\u0018"+ - "\u0000\u0000\u0e21\u0e22\u0007\u0006\u0000\u0000\u0e22\u0e23\u0007\u0005"+ - "\u0000\u0000\u0e23\u0e24\u0007\u000e\u0000\u0000\u0e24\u0e25\u0007\n\u0000"+ - "\u0000\u0e25\u0274\u0001\u0000\u0000\u0000\u0e26\u0e27\u0007\r\u0000\u0000"+ - "\u0e27\u0e28\u0007\n\u0000\u0000\u0e28\u0e29\u0007\u0018\u0000\u0000\u0e29"+ - "\u0e2a\u0007\u0006\u0000\u0000\u0e2a\u0e2b\u0007\u0011\u0000\u0000\u0e2b"+ - "\u0e2c\u0007\u000e\u0000\u0000\u0e2c\u0e2d\u0007\u0005\u0000\u0000\u0e2d"+ - "\u0276\u0001\u0000\u0000\u0000\u0e2e\u0e2f\u0007\r\u0000\u0000\u0e2f\u0e30"+ - "\u0007\n\u0000\u0000\u0e30\u0e31\u0007\t\u0000\u0000\u0e31\u0e32\u0007"+ - "\n\u0000\u0000\u0e32\u0e33\u0007\u0010\u0000\u0000\u0e33\u0278\u0001\u0000"+ - "\u0000\u0000\u0e34\u0e35\u0007\r\u0000\u0000\u0e35\u0e36\u0007\n\u0000"+ - "\u0000\u0e36\u0e37\u0007\t\u0000\u0000\u0e37\u0e38\u0007\u0010\u0000\u0000"+ - "\u0e38\u0e39\u0007\u0005\u0000\u0000\u0e39\u0e3a\u0007\r\u0000\u0000\u0e3a"+ - "\u0e3b\u0007\u0010\u0000\u0000\u0e3b\u027a\u0001\u0000\u0000\u0000\u0e3c"+ - "\u0e3d\u0007\r\u0000\u0000\u0e3d\u0e3e\u0007\n\u0000\u0000\u0e3e\u0e3f"+ - "\u0007\t\u0000\u0000\u0e3f\u0e40\u0007\u0010\u0000\u0000\u0e40\u0e41\u0007"+ - "\r\u0000\u0000\u0e41\u0e42\u0007\u0011\u0000\u0000\u0e42\u0e43\u0007\u000e"+ - "\u0000\u0000\u0e43\u0e44\u0007\u0010\u0000\u0000\u0e44\u027c\u0001\u0000"+ - "\u0000\u0000\u0e45\u0e46\u0007\r\u0000\u0000\u0e46\u0e47\u0007\n\u0000"+ - "\u0000\u0e47\u0e48\u0007\u0010\u0000\u0000\u0e48\u0e49\u0007\u0016\u0000"+ - "\u0000\u0e49\u0e4a\u0007\r\u0000\u0000\u0e4a\u0e4b\u0007\u0007\u0000\u0000"+ - "\u0e4b\u0e4c\u0007\t\u0000\u0000\u0e4c\u027e\u0001\u0000\u0000\u0000\u0e4d"+ - "\u0e4e\u0007\r\u0000\u0000\u0e4e\u0e4f\u0007\n\u0000\u0000\u0e4f\u0e50"+ - "\u0007\u001b\u0000\u0000\u0e50\u0e51\u0007\u0013\u0000\u0000\u0e51\u0e52"+ - "\u0007\u0015\u0000\u0000\u0e52\u0e53\u0007\n\u0000\u0000\u0e53\u0280\u0001"+ - "\u0000\u0000\u0000\u0e54\u0e55\u0007\r\u0000\u0000\u0e55\u0e56\u0007\u0013"+ - "\u0000\u0000\u0e56\u0e57\u0007\u0006\u0000\u0000\u0e57\u0e58\u0007\n\u0000"+ - "\u0000\u0e58\u0282\u0001\u0000\u0000\u0000\u0e59\u0e5a\u0007\r\u0000\u0000"+ - "\u0e5a\u0e5b\u0007\u0013\u0000\u0000\u0e5b\u0e5c\u0007\u0006\u0000\u0000"+ - "\u0e5c\u0e5d\u0007\u0006\u0000\u0000\u0e5d\u0e5e\u0007\u0012\u0000\u0000"+ - "\u0e5e\u0e5f\u0007\u0005\u0000\u0000\u0e5f\u0e60\u0007\u000e\u0000\u0000"+ - "\u0e60\u0e61\u0007\u0015\u0000\u0000\u0e61\u0284\u0001\u0000\u0000\u0000"+ - "\u0e62\u0e63\u0007\r\u0000\u0000\u0e63\u0e64\u0007\u0013\u0000\u0000\u0e64"+ - "\u0e65\u0007\u001c\u0000\u0000\u0e65\u0e66\u0007\t\u0000\u0000\u0e66\u0286"+ - "\u0001\u0000\u0000\u0000\u0e67\u0e68\u0007\r\u0000\u0000\u0e68\u0e69\u0007"+ - "\u0016\u0000\u0000\u0e69\u0e6a\u0007\u0006\u0000\u0000\u0e6a\u0e6b\u0007"+ - "\n\u0000\u0000\u0e6b\u0288\u0001\u0000\u0000\u0000\u0e6c\u0e6d\u0007\t"+ - "\u0000\u0000\u0e6d\u0e6e\u0007\u0005\u0000\u0000\u0e6e\u0e6f\u0007\u001b"+ - "\u0000\u0000\u0e6f\u0e70\u0007\n\u0000\u0000\u0e70\u0e71\u0007\u0018\u0000"+ - "\u0000\u0e71\u0e72\u0007\u0013\u0000\u0000\u0e72\u0e73\u0007\u0011\u0000"+ - "\u0000\u0e73\u0e74\u0007\u0007\u0000\u0000\u0e74\u0e75\u0007\u0010\u0000"+ - "\u0000\u0e75\u028a\u0001\u0000\u0000\u0000\u0e76\u0e77\u0007\t\u0000\u0000"+ - "\u0e77\u0e78\u0007\u000e\u0000\u0000\u0e78\u0e79\u0007\u0014\u0000\u0000"+ - "\u0e79\u0e7a\u0007\n\u0000\u0000\u0e7a\u0e7b\u0007\u000f\u0000\u0000\u0e7b"+ - "\u0e7c\u0007\u0005\u0000\u0000\u0e7c\u028c\u0001\u0000\u0000\u0000\u0e7d"+ - "\u0e7e\u0007\t\u0000\u0000\u0e7e\u0e7f\u0007\u000e\u0000\u0000\u0e7f\u0e80"+ - "\u0007\r\u0000\u0000\u0e80\u0e81\u0007\u0013\u0000\u0000\u0e81\u0e82\u0007"+ - "\u0006\u0000\u0000\u0e82\u0e83\u0007\u0006\u0000\u0000\u0e83\u028e\u0001"+ - "\u0000\u0000\u0000\u0e84\u0e85\u0007\t\u0000\u0000\u0e85\u0e86\u0007\n"+ - "\u0000\u0000\u0e86\u0e87\u0007\u0005\u0000\u0000\u0e87\u0e88\u0007\r\u0000"+ - "\u0000\u0e88\u0e89\u0007\u000e\u0000\u0000\u0e89\u0e8a\u0007\u0014\u0000"+ - "\u0000\u0e8a\u0290\u0001\u0000\u0000\u0000\u0e8b\u0e8c\u0007\t\u0000\u0000"+ - "\u0e8c\u0e8d\u0007\n\u0000\u0000\u0e8d\u0e8e\u0007\u000e\u0000\u0000\u0e8e"+ - "\u0e8f\u0007\u0013\u0000\u0000\u0e8f\u0e90\u0007\u0007\u0000\u0000\u0e90"+ - "\u0e91\u0007\f\u0000\u0000\u0e91\u0292\u0001\u0000\u0000\u0000\u0e92\u0e93"+ - "\u0007\t\u0000\u0000\u0e93\u0e94\u0007\n\u0000\u0000\u0e94\u0e95\u0007"+ - "\u000e\u0000\u0000\u0e95\u0e96\u0007\u0016\u0000\u0000\u0e96\u0e97\u0007"+ - "\r\u0000\u0000\u0e97\u0e98\u0007\u0011\u0000\u0000\u0e98\u0e99\u0007\u0010"+ - "\u0000\u0000\u0e99\u0e9a\u0007\b\u0000\u0000\u0e9a\u0294\u0001\u0000\u0000"+ - "\u0000\u0e9b\u0e9c\u0007\t\u0000\u0000\u0e9c\u0e9d\u0007\n\u0000\u0000"+ - "\u0e9d\u0e9e\u0007\u001d\u0000\u0000\u0e9e\u0e9f\u0007\u0016\u0000\u0000"+ - "\u0e9f\u0ea0\u0007\n\u0000\u0000\u0ea0\u0ea1\u0007\u0007\u0000\u0000\u0ea1"+ - "\u0ea2\u0007\u000e\u0000\u0000\u0ea2\u0ea3\u0007\n\u0000\u0000\u0ea3\u0296"+ - "\u0001\u0000\u0000\u0000\u0ea4\u0ea5\u0007\t\u0000\u0000\u0ea5\u0ea6\u0007"+ - "\n\u0000\u0000\u0ea6\u0ea7\u0007\u001d\u0000\u0000\u0ea7\u0ea8\u0007\u0016"+ - "\u0000\u0000\u0ea8\u0ea9\u0007\n\u0000\u0000\u0ea9\u0eaa\u0007\u0007\u0000"+ - "\u0000\u0eaa\u0eab\u0007\u000e\u0000\u0000\u0eab\u0eac\u0007\n\u0000\u0000"+ - "\u0eac\u0ead\u0007\t\u0000\u0000\u0ead\u0298\u0001\u0000\u0000\u0000\u0eae"+ - "\u0eaf\u0007\t\u0000\u0000\u0eaf\u0eb0\u0007\n\u0000\u0000\u0eb0\u0eb1"+ - "\u0007\r\u0000\u0000\u0eb1\u0eb2\u0007\u0011\u0000\u0000\u0eb2\u0eb3\u0007"+ - "\u0005\u0000\u0000\u0eb3\u0eb4\u0007\u0006\u0000\u0000\u0eb4\u0eb5\u0007"+ - "\u0011\u0000\u0000\u0eb5\u0eb6\u0007\u000b\u0000\u0000\u0eb6\u0eb7\u0007"+ - "\u0005\u0000\u0000\u0eb7\u0eb8\u0007\u0012\u0000\u0000\u0eb8\u0eb9\u0007"+ - "\u0006\u0000\u0000\u0eb9\u0eba\u0007\n\u0000\u0000\u0eba\u029a\u0001\u0000"+ - "\u0000\u0000\u0ebb\u0ebc\u0007\t\u0000\u0000\u0ebc\u0ebd\u0007\n\u0000"+ - "\u0000\u0ebd\u0ebe\u0007\r\u0000\u0000\u0ebe\u0ebf\u0007\u001b\u0000\u0000"+ - "\u0ebf\u0ec0\u0007\n\u0000\u0000\u0ec0\u0ec1\u0007\r\u0000\u0000\u0ec1"+ - "\u029c\u0001\u0000\u0000\u0000\u0ec2\u0ec3\u0007\t\u0000\u0000\u0ec3\u0ec4"+ - "\u0007\n\u0000\u0000\u0ec4\u0ec5\u0007\t\u0000\u0000\u0ec5\u0ec6\u0007"+ - "\t\u0000\u0000\u0ec6\u0ec7\u0007\u0011\u0000\u0000\u0ec7\u0ec8\u0007\u0013"+ - "\u0000\u0000\u0ec8\u0ec9\u0007\u0007\u0000\u0000\u0ec9\u029e\u0001\u0000"+ - "\u0000\u0000\u0eca\u0ecb\u0007\t\u0000\u0000\u0ecb\u0ecc\u0007\n\u0000"+ - "\u0000\u0ecc\u0ecd\u0007\u0010\u0000\u0000\u0ecd\u02a0\u0001\u0000\u0000"+ - "\u0000\u0ece\u0ecf\u0007\t\u0000\u0000\u0ecf\u0ed0\u0007\u0014\u0000\u0000"+ - "\u0ed0\u0ed1\u0007\u0005\u0000\u0000\u0ed1\u0ed2\u0007\r\u0000\u0000\u0ed2"+ - "\u0ed3\u0007\n\u0000\u0000\u0ed3\u02a2\u0001\u0000\u0000\u0000\u0ed4\u0ed5"+ - "\u0007\t\u0000\u0000\u0ed5\u0ed6\u0007\u0014\u0000\u0000\u0ed6\u0ed7\u0007"+ - "\u0013\u0000\u0000\u0ed7\u0ed8\u0007\u001c\u0000\u0000\u0ed8\u02a4\u0001"+ - "\u0000\u0000\u0000\u0ed9\u0eda\u0007\t\u0000\u0000\u0eda\u0edb\u0007\u0011"+ - "\u0000\u0000\u0edb\u0edc\u0007\u000f\u0000\u0000\u0edc\u0edd\u0007\u0018"+ - "\u0000\u0000\u0edd\u0ede\u0007\u0006\u0000\u0000\u0ede\u0edf\u0007\n\u0000"+ - "\u0000\u0edf\u02a6\u0001\u0000\u0000\u0000\u0ee0\u0ee1\u0007\t\u0000\u0000"+ - "\u0ee1\u0ee2\u0007\u0007\u0000\u0000\u0ee2\u0ee3\u0007\u0005\u0000\u0000"+ - "\u0ee3\u0ee4\u0007\u0018\u0000\u0000\u0ee4\u0ee5\u0007\t\u0000\u0000\u0ee5"+ - "\u0ee6\u0007\u0014\u0000\u0000\u0ee6\u0ee7\u0007\u0013\u0000\u0000\u0ee7"+ - "\u0ee8\u0007\u0010\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\u0012\u0000\u0000\u0eed\u0eee"+ - "\u0007\u0006\u0000\u0000\u0eee\u0eef\u0007\n\u0000\u0000\u0eef\u02aa\u0001"+ - "\u0000\u0000\u0000\u0ef0\u0ef1\u0007\t\u0000\u0000\u0ef1\u0ef2\u0007\u0010"+ - "\u0000\u0000\u0ef2\u0ef3\u0007\u0005\u0000\u0000\u0ef3\u0ef4\u0007\u0007"+ - "\u0000\u0000\u0ef4\u0ef5\u0007\f\u0000\u0000\u0ef5\u0ef6\u0007\u0005\u0000"+ - "\u0000\u0ef6\u0ef7\u0007\u0006\u0000\u0000\u0ef7\u0ef8\u0007\u0013\u0000"+ - "\u0000\u0ef8\u0ef9\u0007\u0007\u0000\u0000\u0ef9\u0efa\u0007\n\u0000\u0000"+ - "\u0efa\u02ac\u0001\u0000\u0000\u0000\u0efb\u0efc\u0007\t\u0000\u0000\u0efc"+ - "\u0efd\u0007\u0010\u0000\u0000\u0efd\u0efe\u0007\u0005\u0000\u0000\u0efe"+ - "\u0eff\u0007\r\u0000\u0000\u0eff\u0f00\u0007\u0010\u0000\u0000\u0f00\u02ae"+ - "\u0001\u0000\u0000\u0000\u0f01\u0f02\u0007\t\u0000\u0000\u0f02\u0f03\u0007"+ - "\u0010\u0000\u0000\u0f03\u0f04\u0007\u0005\u0000\u0000\u0f04\u0f05\u0007"+ - "\u0010\u0000\u0000\u0f05\u0f06\u0007\n\u0000\u0000\u0f06\u0f07\u0007\u000f"+ - "\u0000\u0000\u0f07\u0f08\u0007\n\u0000\u0000\u0f08\u0f09\u0007\u0007\u0000"+ - "\u0000\u0f09\u0f0a\u0007\u0010\u0000\u0000\u0f0a\u02b0\u0001\u0000\u0000"+ - "\u0000\u0f0b\u0f0c\u0007\t\u0000\u0000\u0f0c\u0f0d\u0007\u0010\u0000\u0000"+ - "\u0f0d\u0f0e\u0007\u0005\u0000\u0000\u0f0e\u0f0f\u0007\u0010\u0000\u0000"+ - "\u0f0f\u0f10\u0007\u0011\u0000\u0000\u0f10\u0f11\u0007\t\u0000\u0000\u0f11"+ - "\u0f12\u0007\u0010\u0000\u0000\u0f12\u0f13\u0007\u0011\u0000\u0000\u0f13"+ - "\u0f14\u0007\u000e\u0000\u0000\u0f14\u0f15\u0007\t\u0000\u0000\u0f15\u02b2"+ - "\u0001\u0000\u0000\u0000\u0f16\u0f17\u0007\t\u0000\u0000\u0f17\u0f18\u0007"+ - "\u0010\u0000\u0000\u0f18\u0f19\u0007\f\u0000\u0000\u0f19\u0f1a\u0007\u0011"+ - "\u0000\u0000\u0f1a\u0f1b\u0007\u0007\u0000\u0000\u0f1b\u02b4\u0001\u0000"+ - "\u0000\u0000\u0f1c\u0f1d\u0007\t\u0000\u0000\u0f1d\u0f1e\u0007\u0010\u0000"+ - "\u0000\u0f1e\u0f1f\u0007\f\u0000\u0000\u0f1f\u0f20\u0007\u0013\u0000\u0000"+ - "\u0f20\u0f21\u0007\u0016\u0000\u0000\u0f21\u0f22\u0007\u0010\u0000\u0000"+ - "\u0f22\u02b6\u0001\u0000\u0000\u0000\u0f23\u0f24\u0007\t\u0000\u0000\u0f24"+ - "\u0f25\u0007\u0010\u0000\u0000\u0f25\u0f26\u0007\u0013\u0000\u0000\u0f26"+ - "\u0f27\u0007\r\u0000\u0000\u0f27\u0f28\u0007\u0005\u0000\u0000\u0f28\u0f29"+ - "\u0007\u0017\u0000\u0000\u0f29\u0f2a\u0007\n\u0000\u0000\u0f2a\u02b8\u0001"+ - "\u0000\u0000\u0000\u0f2b\u0f2c\u0007\t\u0000\u0000\u0f2c\u0f2d\u0007\u0010"+ - "\u0000\u0000\u0f2d\u0f2e\u0007\r\u0000\u0000\u0f2e\u0f2f\u0007\u0011\u0000"+ - "\u0000\u0f2f\u0f30\u0007\u000e\u0000\u0000\u0f30\u0f31\u0007\u0010\u0000"+ - "\u0000\u0f31\u02ba\u0001\u0000\u0000\u0000\u0f32\u0f33\u0007\t\u0000\u0000"+ - "\u0f33\u0f34\u0007\u0010\u0000\u0000\u0f34\u0f35\u0007\r\u0000\u0000\u0f35"+ - "\u0f36\u0007\u0011\u0000\u0000\u0f36\u0f37\u0007\u0018\u0000\u0000\u0f37"+ - "\u02bc\u0001\u0000\u0000\u0000\u0f38\u0f39\u0007\t\u0000\u0000\u0f39\u0f3a"+ - "\u0007\b\u0000\u0000\u0f3a\u0f3b\u0007\t\u0000\u0000\u0f3b\u0f3c\u0007"+ - "\u0011\u0000\u0000\u0f3c\u0f3d\u0007\f\u0000\u0000\u0f3d\u02be\u0001\u0000"+ - "\u0000\u0000\u0f3e\u0f3f\u0007\t\u0000\u0000\u0f3f\u0f40\u0007\b\u0000"+ - "\u0000\u0f40\u0f41\u0007\t\u0000\u0000\u0f41\u0f42\u0007\u0010\u0000\u0000"+ - "\u0f42\u0f43\u0007\n\u0000\u0000\u0f43\u0f44\u0007\u000f\u0000\u0000\u0f44"+ - "\u02c0\u0001\u0000\u0000\u0000\u0f45\u0f46\u0007\u0010\u0000\u0000\u0f46"+ - "\u0f47\u0007\u0005\u0000\u0000\u0f47\u0f48\u0007\u0012\u0000\u0000\u0f48"+ - "\u0f49\u0007\u0006\u0000\u0000\u0f49\u0f4a\u0007\n\u0000\u0000\u0f4a\u0f4b"+ - "\u0007\t\u0000\u0000\u0f4b\u02c2\u0001\u0000\u0000\u0000\u0f4c\u0f4d\u0007"+ - "\u0010\u0000\u0000\u0f4d\u0f4e\u0007\u0005\u0000\u0000\u0f4e\u0f4f\u0007"+ - "\u0012\u0000\u0000\u0f4f\u0f50\u0007\u0006\u0000\u0000\u0f50\u0f51\u0007"+ - "\n\u0000\u0000\u0f51\u0f52\u0007\t\u0000\u0000\u0f52\u0f53\u0007\u0018"+ - "\u0000\u0000\u0f53\u0f54\u0007\u0005\u0000\u0000\u0f54\u0f55\u0007\u000e"+ - "\u0000\u0000\u0f55\u0f56\u0007\n\u0000\u0000\u0f56\u02c4\u0001\u0000\u0000"+ - "\u0000\u0f57\u0f58\u0007\u0010\u0000\u0000\u0f58\u0f59\u0007\n\u0000\u0000"+ - "\u0f59\u0f5a\u0007\u000f\u0000\u0000\u0f5a\u0f5b\u0007\u0018\u0000\u0000"+ - "\u0f5b\u02c6\u0001\u0000\u0000\u0000\u0f5c\u0f5d\u0007\u0010\u0000\u0000"+ - "\u0f5d\u0f5e\u0007\n\u0000\u0000\u0f5e\u0f5f\u0007\u000f\u0000\u0000\u0f5f"+ - "\u0f60\u0007\u0018\u0000\u0000\u0f60\u0f61\u0007\u0006\u0000\u0000\u0f61"+ - "\u0f62\u0007\u0005\u0000\u0000\u0f62\u0f63\u0007\u0010\u0000\u0000\u0f63"+ - "\u0f64\u0007\n\u0000\u0000\u0f64\u02c8\u0001\u0000\u0000\u0000\u0f65\u0f66"+ - "\u0007\u0010\u0000\u0000\u0f66\u0f67\u0007\n\u0000\u0000\u0f67\u0f68\u0007"+ - "\u000f\u0000\u0000\u0f68\u0f69\u0007\u0018\u0000\u0000\u0f69\u0f6a\u0007"+ - "\u0013\u0000\u0000\u0f6a\u0f6b\u0007\r\u0000\u0000\u0f6b\u0f6c\u0007\u0005"+ - "\u0000\u0000\u0f6c\u0f6d\u0007\r\u0000\u0000\u0f6d\u0f6e\u0007\b\u0000"+ - "\u0000\u0f6e\u02ca\u0001\u0000\u0000\u0000\u0f6f\u0f70\u0007\u0010\u0000"+ - "\u0000\u0f70\u0f71\u0007\n\u0000\u0000\u0f71\u0f72\u0007\u001a\u0000\u0000"+ - "\u0f72\u0f73\u0007\u0010\u0000\u0000\u0f73\u02cc\u0001\u0000\u0000\u0000"+ - "\u0f74\u0f75\u0007\u0010\u0000\u0000\u0f75\u0f76\u0007\r\u0000\u0000\u0f76"+ - "\u0f77\u0007\u0005\u0000\u0000\u0f77\u0f78\u0007\u0007\u0000\u0000\u0f78"+ - "\u0f79\u0007\t\u0000\u0000\u0f79\u0f7a\u0007\u0005\u0000\u0000\u0f7a\u0f7b"+ - "\u0007\u000e\u0000\u0000\u0f7b\u0f7c\u0007\u0010\u0000\u0000\u0f7c\u0f7d"+ - "\u0007\u0011\u0000\u0000\u0f7d\u0f7e\u0007\u0013\u0000\u0000\u0f7e\u0f7f"+ - "\u0007\u0007\u0000\u0000\u0f7f\u02ce\u0001\u0000\u0000\u0000\u0f80\u0f81"+ - "\u0007\u0010\u0000\u0000\u0f81\u0f82\u0007\r\u0000\u0000\u0f82\u0f83\u0007"+ - "\u0011\u0000\u0000\u0f83\u0f84\u0007\u0017\u0000\u0000\u0f84\u0f85\u0007"+ - "\u0017\u0000\u0000\u0f85\u0f86\u0007\n\u0000\u0000\u0f86\u0f87\u0007\r"+ - "\u0000\u0000\u0f87\u02d0\u0001\u0000\u0000\u0000\u0f88\u0f89\u0007\u0010"+ - "\u0000\u0000\u0f89\u0f8a\u0007\r\u0000\u0000\u0f8a\u0f8b\u0007\u0016\u0000"+ - "\u0000\u0f8b\u0f8c\u0007\u0007\u0000\u0000\u0f8c\u0f8d\u0007\u000e\u0000"+ - "\u0000\u0f8d\u0f8e\u0007\u0005\u0000\u0000\u0f8e\u0f8f\u0007\u0010\u0000"+ - "\u0000\u0f8f\u0f90\u0007\n\u0000\u0000\u0f90\u02d2\u0001\u0000\u0000\u0000"+ - "\u0f91\u0f92\u0007\u0010\u0000\u0000\u0f92\u0f93\u0007\r\u0000\u0000\u0f93"+ - "\u0f94\u0007\u0016\u0000\u0000\u0f94\u0f95\u0007\t\u0000\u0000\u0f95\u0f96"+ - "\u0007\u0010\u0000\u0000\u0f96\u0f97\u0007\n\u0000\u0000\u0f97\u0f98\u0007"+ - "\f\u0000\u0000\u0f98\u02d4\u0001\u0000\u0000\u0000\u0f99\u0f9a\u0007\u0010"+ - "\u0000\u0000\u0f9a\u0f9b\u0007\b\u0000\u0000\u0f9b\u0f9c\u0007\u0018\u0000"+ - "\u0000\u0f9c\u0f9d\u0007\n\u0000\u0000\u0f9d\u02d6\u0001\u0000\u0000\u0000"+ - "\u0f9e\u0f9f\u0007\u0010\u0000\u0000\u0f9f\u0fa0\u0007\b\u0000\u0000\u0fa0"+ - "\u0fa1\u0007\u0018\u0000\u0000\u0fa1\u0fa2\u0007\n\u0000\u0000\u0fa2\u0fa3"+ - "\u0007\t\u0000\u0000\u0fa3\u02d8\u0001\u0000\u0000\u0000\u0fa4\u0fa5\u0007"+ - "\u0016\u0000\u0000\u0fa5\u0fa6\u0007\u0007\u0000\u0000\u0fa6\u0fa7\u0007"+ - "\u0012\u0000\u0000\u0fa7\u0fa8\u0007\u0013\u0000\u0000\u0fa8\u0fa9\u0007"+ - "\u0016\u0000\u0000\u0fa9\u0faa\u0007\u0007\u0000\u0000\u0faa\u0fab\u0007"+ - "\f\u0000\u0000\u0fab\u0fac\u0007\n\u0000\u0000\u0fac\u0fad\u0007\f\u0000"+ - "\u0000\u0fad\u02da\u0001\u0000\u0000\u0000\u0fae\u0faf\u0007\u0016\u0000"+ - "\u0000\u0faf\u0fb0\u0007\u0007\u0000\u0000\u0fb0\u0fb1\u0007\u000e\u0000"+ - "\u0000\u0fb1\u0fb2\u0007\u0013\u0000\u0000\u0fb2\u0fb3\u0007\u000f\u0000"+ - "\u0000\u0fb3\u0fb4\u0007\u000f\u0000\u0000\u0fb4\u0fb5\u0007\u0011\u0000"+ - "\u0000\u0fb5\u0fb6\u0007\u0010\u0000\u0000\u0fb6\u0fb7\u0007\u0010\u0000"+ - "\u0000\u0fb7\u0fb8\u0007\n\u0000\u0000\u0fb8\u0fb9\u0007\f\u0000\u0000"+ - "\u0fb9\u02dc\u0001\u0000\u0000\u0000\u0fba\u0fbb\u0007\u0016\u0000\u0000"+ - "\u0fbb\u0fbc\u0007\u0007\u0000\u0000\u0fbc\u0fbd\u0007\n\u0000\u0000\u0fbd"+ - "\u0fbe\u0007\u0007\u0000\u0000\u0fbe\u0fbf\u0007\u000e\u0000\u0000\u0fbf"+ - "\u0fc0\u0007\r\u0000\u0000\u0fc0\u0fc1\u0007\b\u0000\u0000\u0fc1\u0fc2"+ - "\u0007\u0018\u0000\u0000\u0fc2\u0fc3\u0007\u0010\u0000\u0000\u0fc3\u0fc4"+ - "\u0007\n\u0000\u0000\u0fc4\u0fc5\u0007\f\u0000\u0000\u0fc5\u02de\u0001"+ - "\u0000\u0000\u0000\u0fc6\u0fc7\u0007\u0016\u0000\u0000\u0fc7\u0fc8\u0007"+ - "\u0007\u0000\u0000\u0fc8\u0fc9\u0007\u0015\u0000\u0000\u0fc9\u0fca\u0007"+ - "\u0007\u0000\u0000\u0fca\u0fcb\u0007\u0013\u0000\u0000\u0fcb\u0fcc\u0007"+ - "\u001c\u0000\u0000\u0fcc\u0fcd\u0007\u0007\u0000\u0000\u0fcd\u02e0\u0001"+ - "\u0000\u0000\u0000\u0fce\u0fcf\u0007\u0016\u0000\u0000\u0fcf\u0fd0\u0007"+ - "\u0007\u0000\u0000\u0fd0\u0fd1\u0007\u0006\u0000\u0000\u0fd1\u0fd2\u0007"+ - "\u0011\u0000\u0000\u0fd2\u0fd3\u0007\t\u0000\u0000\u0fd3\u0fd4\u0007\u0010"+ - "\u0000\u0000\u0fd4\u0fd5\u0007\n\u0000\u0000\u0fd5\u0fd6\u0007\u0007\u0000"+ - "\u0000\u0fd6\u02e2\u0001\u0000\u0000\u0000\u0fd7\u0fd8\u0007\u0016\u0000"+ - "\u0000\u0fd8\u0fd9\u0007\u0007\u0000\u0000\u0fd9\u0fda\u0007\u0006\u0000"+ - "\u0000\u0fda\u0fdb\u0007\u0013\u0000\u0000\u0fdb\u0fdc\u0007\u0017\u0000"+ - "\u0000\u0fdc\u0fdd\u0007\u0017\u0000\u0000\u0fdd\u0fde\u0007\n\u0000\u0000"+ - "\u0fde\u0fdf\u0007\f\u0000\u0000\u0fdf\u02e4\u0001\u0000\u0000\u0000\u0fe0"+ - "\u0fe1\u0007\u0016\u0000\u0000\u0fe1\u0fe2\u0007\u0007\u0000\u0000\u0fe2"+ - "\u0fe3\u0007\u0010\u0000\u0000\u0fe3\u0fe4\u0007\u0011\u0000\u0000\u0fe4"+ - "\u0fe5\u0007\u0006\u0000\u0000\u0fe5\u02e6\u0001\u0000\u0000\u0000\u0fe6"+ - "\u0fe7\u0007\u0016\u0000\u0000\u0fe7\u0fe8\u0007\u0018\u0000\u0000\u0fe8"+ - "\u0fe9\u0007\f\u0000\u0000\u0fe9\u0fea\u0007\u0005\u0000\u0000\u0fea\u0feb"+ - "\u0007\u0010\u0000\u0000\u0feb\u0fec\u0007\n\u0000\u0000\u0fec\u02e8\u0001"+ - "\u0000\u0000\u0000\u0fed\u0fee\u0007\u001b\u0000\u0000\u0fee\u0fef\u0007"+ - "\u0005\u0000\u0000\u0fef\u0ff0\u0007\u000e\u0000\u0000\u0ff0\u0ff1\u0007"+ - "\u0016\u0000\u0000\u0ff1\u0ff2\u0007\u0016\u0000\u0000\u0ff2\u0ff3\u0007"+ - "\u000f\u0000\u0000\u0ff3\u02ea\u0001\u0000\u0000\u0000\u0ff4\u0ff5\u0007"+ - "\u001b\u0000\u0000\u0ff5\u0ff6\u0007\u0005\u0000\u0000\u0ff6\u0ff7\u0007"+ - "\u0006\u0000\u0000\u0ff7\u0ff8\u0007\u0011\u0000\u0000\u0ff8\u0ff9\u0007"+ - "\f\u0000\u0000\u0ff9\u02ec\u0001\u0000\u0000\u0000\u0ffa\u0ffb\u0007\u001b"+ - "\u0000\u0000\u0ffb\u0ffc\u0007\u0005\u0000\u0000\u0ffc\u0ffd\u0007\u0006"+ - "\u0000\u0000\u0ffd\u0ffe\u0007\u0011\u0000\u0000\u0ffe\u0fff\u0007\f\u0000"+ - "\u0000\u0fff\u1000\u0007\u0005\u0000\u0000\u1000\u1001\u0007\u0010\u0000"+ - "\u0000\u1001\u1002\u0007\n\u0000\u0000\u1002\u02ee\u0001\u0000\u0000\u0000"+ - "\u1003\u1004\u0007\u001b\u0000\u0000\u1004\u1005\u0007\u0005\u0000\u0000"+ - "\u1005\u1006\u0007\u0006\u0000\u0000\u1006\u1007\u0007\u0011\u0000\u0000"+ - "\u1007\u1008\u0007\f\u0000\u0000\u1008\u1009\u0007\u0005\u0000\u0000\u1009"+ - "\u100a\u0007\u0010\u0000\u0000\u100a\u100b\u0007\u0013\u0000\u0000\u100b"+ - "\u100c\u0007\r\u0000\u0000\u100c\u02f0\u0001\u0000\u0000\u0000\u100d\u100e"+ - "\u0007\u001b\u0000\u0000\u100e\u100f\u0007\u0005\u0000\u0000\u100f\u1010"+ - "\u0007\r\u0000\u0000\u1010\u1011\u0007\b\u0000\u0000\u1011\u1012\u0007"+ - "\u0011\u0000\u0000\u1012\u1013\u0007\u0007\u0000\u0000\u1013\u1014\u0007"+ - "\u0017\u0000\u0000\u1014\u02f2\u0001\u0000\u0000\u0000\u1015\u1016\u0007"+ - "\u001b\u0000\u0000\u1016\u1017\u0007\n\u0000\u0000\u1017\u1018\u0007\r"+ - "\u0000\u0000\u1018\u1019\u0007\t\u0000\u0000\u1019\u101a\u0007\u0011\u0000"+ - "\u0000\u101a\u101b\u0007\u0013\u0000\u0000\u101b\u101c\u0007\u0007\u0000"+ - "\u0000\u101c\u02f4\u0001\u0000\u0000\u0000\u101d\u101e\u0007\u001b\u0000"+ - "\u0000\u101e\u101f\u0007\u0011\u0000\u0000\u101f\u1020\u0007\n\u0000\u0000"+ - "\u1020\u1021\u0007\u001c\u0000\u0000\u1021\u02f6\u0001\u0000\u0000\u0000"+ - "\u1022\u1023\u0007\u001b\u0000\u0000\u1023\u1024\u0007\u0013\u0000\u0000"+ - "\u1024\u1025\u0007\u0006\u0000\u0000\u1025\u1026\u0007\u0005\u0000\u0000"+ - "\u1026\u1027\u0007\u0010\u0000\u0000\u1027\u1028\u0007\u0011\u0000\u0000"+ - "\u1028\u1029\u0007\u0006\u0000\u0000\u1029\u102a\u0007\n\u0000\u0000\u102a"+ - "\u02f8\u0001\u0000\u0000\u0000\u102b\u102c\u0007\u001c\u0000\u0000\u102c"+ - "\u102d\u0007\u0014\u0000\u0000\u102d\u102e\u0007\u0011\u0000\u0000\u102e"+ - "\u102f\u0007\u0010\u0000\u0000\u102f\u1030\u0007\n\u0000\u0000\u1030\u1031"+ - "\u0007\t\u0000\u0000\u1031\u1032\u0007\u0018\u0000\u0000\u1032\u1033\u0007"+ - "\u0005\u0000\u0000\u1033\u1034\u0007\u000e\u0000\u0000\u1034\u1035\u0007"+ - "\n\u0000\u0000\u1035\u02fa\u0001\u0000\u0000\u0000\u1036\u1037\u0007\u001c"+ - "\u0000\u0000\u1037\u1038\u0007\u0011\u0000\u0000\u1038\u1039\u0007\u0010"+ - "\u0000\u0000\u1039\u103a\u0007\u0014\u0000\u0000\u103a\u103b\u0007\u0013"+ - "\u0000\u0000\u103b\u103c\u0007\u0016\u0000\u0000\u103c\u103d\u0007\u0010"+ - "\u0000\u0000\u103d\u02fc\u0001\u0000\u0000\u0000\u103e\u103f\u0007\u001c"+ - "\u0000\u0000\u103f\u1040\u0007\u0013\u0000\u0000\u1040\u1041\u0007\r\u0000"+ - "\u0000\u1041\u1042\u0007\u0015\u0000\u0000\u1042\u02fe\u0001\u0000\u0000"+ - "\u0000\u1043\u1044\u0007\u001c\u0000\u0000\u1044\u1045\u0007\r\u0000\u0000"+ - "\u1045\u1046\u0007\u0005\u0000\u0000\u1046\u1047\u0007\u0018\u0000\u0000"+ - "\u1047\u1048\u0007\u0018\u0000\u0000\u1048\u1049\u0007\n\u0000\u0000\u1049"+ - "\u104a\u0007\r\u0000\u0000\u104a\u0300\u0001\u0000\u0000\u0000\u104b\u104c"+ - "\u0007\u001c\u0000\u0000\u104c\u104d\u0007\r\u0000\u0000\u104d\u104e\u0007"+ - "\u0011\u0000\u0000\u104e\u104f\u0007\u0010\u0000\u0000\u104f\u1050\u0007"+ - "\n\u0000\u0000\u1050\u0302\u0001\u0000\u0000\u0000\u1051\u1052\u0007\u001a"+ - "\u0000\u0000\u1052\u1053\u0007\u000f\u0000\u0000\u1053\u1054\u0007\u0006"+ - "\u0000\u0000\u1054\u0304\u0001\u0000\u0000\u0000\u1055\u1056\u0007\b\u0000"+ - "\u0000\u1056\u1057\u0007\n\u0000\u0000\u1057\u1058\u0007\u0005\u0000\u0000"+ - "\u1058\u1059\u0007\r\u0000\u0000\u1059\u0306\u0001\u0000\u0000\u0000\u105a"+ - "\u105b\u0007\b\u0000\u0000\u105b\u105c\u0007\n\u0000\u0000\u105c\u105d"+ - "\u0007\t\u0000\u0000\u105d\u0308\u0001\u0000\u0000\u0000\u105e\u105f\u0007"+ - "\u000b\u0000\u0000\u105f\u1060\u0007\u0013\u0000\u0000\u1060\u1061\u0007"+ - "\u0007\u0000\u0000\u1061\u1062\u0007\n\u0000\u0000\u1062\u030a\u0001\u0000"+ - "\u0000\u0000\u1063\u1064\u0007\u0012\u0000\u0000\u1064\u1065\u0007\n\u0000"+ - "\u0000\u1065\u1066\u0007\u0010\u0000\u0000\u1066\u1067\u0007\u001c\u0000"+ - "\u0000\u1067\u1068\u0007\n\u0000\u0000\u1068\u1069\u0007\n\u0000\u0000"+ - "\u1069\u106a\u0007\u0007\u0000\u0000\u106a\u030c\u0001\u0000\u0000\u0000"+ - "\u106b\u106c\u0007\u0012\u0000\u0000\u106c\u106d\u0007\u0011\u0000\u0000"+ - "\u106d\u106e\u0007\u0017\u0000\u0000\u106e\u106f\u0007\u0011\u0000\u0000"+ - "\u106f\u1070\u0007\u0007\u0000\u0000\u1070\u1071\u0007\u0010\u0000\u0000"+ - "\u1071\u030e\u0001\u0000\u0000\u0000\u1072\u1073\u0007\u0012\u0000\u0000"+ - "\u1073\u1074\u0007\u0011\u0000\u0000\u1074\u1075\u0007\u0010\u0000\u0000"+ - "\u1075\u0310\u0001\u0000\u0000\u0000\u1076\u1077\u0007\u0012\u0000\u0000"+ - "\u1077\u1078\u0007\u0013\u0000\u0000\u1078\u1079\u0007\u0013\u0000\u0000"+ - "\u1079\u107a\u0007\u0006\u0000\u0000\u107a\u107b\u0007\n\u0000\u0000\u107b"+ - "\u107c\u0007\u0005\u0000\u0000\u107c\u107d\u0007\u0007\u0000\u0000\u107d"+ - "\u0312\u0001\u0000\u0000\u0000\u107e\u107f\u0007\u000e\u0000\u0000\u107f"+ - "\u1080\u0007\u0014\u0000\u0000\u1080\u1081\u0007\u0005\u0000\u0000\u1081"+ - "\u1082\u0007\r\u0000\u0000\u1082\u0314\u0001\u0000\u0000\u0000\u1083\u1084"+ - "\u0007\u000e\u0000\u0000\u1084\u1085\u0007\u0014\u0000\u0000\u1085\u1086"+ - "\u0007\u0005\u0000\u0000\u1086\u1087\u0007\r\u0000\u0000\u1087\u1088\u0007"+ - "\u0005\u0000\u0000\u1088\u1089\u0007\u000e\u0000\u0000\u1089\u108a\u0007"+ - "\u0010\u0000\u0000\u108a\u108b\u0007\n\u0000\u0000\u108b\u108c\u0007\r"+ - "\u0000\u0000\u108c\u0316\u0001\u0000\u0000\u0000\u108d\u108e\u0007\u000e"+ - "\u0000\u0000\u108e\u108f\u0007\u0013\u0000\u0000\u108f\u1090\u0007\u0005"+ - "\u0000\u0000\u1090\u1091\u0007\u0006\u0000\u0000\u1091\u1092\u0007\n\u0000"+ - "\u0000\u1092\u1093\u0007\t\u0000\u0000\u1093\u1094\u0007\u000e\u0000\u0000"+ - "\u1094\u1095\u0007\n\u0000\u0000\u1095\u0318\u0001\u0000\u0000\u0000\u1096"+ - "\u1097\u0007\f\u0000\u0000\u1097\u1098\u0007\n\u0000\u0000\u1098\u1099"+ - "\u0007\u000e\u0000\u0000\u1099\u031a\u0001\u0000\u0000\u0000\u109a\u109b"+ - "\u0007\f\u0000\u0000\u109b\u109c\u0007\n\u0000\u0000\u109c\u109d\u0007"+ - "\u000e\u0000\u0000\u109d\u109e\u0007\u0011\u0000\u0000\u109e\u109f\u0007"+ - "\u000f\u0000\u0000\u109f\u10a0\u0007\u0005\u0000\u0000\u10a0\u10a1\u0007"+ - "\u0006\u0000\u0000\u10a1\u031c\u0001\u0000\u0000\u0000\u10a2\u10a3\u0007"+ - "\n\u0000\u0000\u10a3\u10a4\u0007\u001a\u0000\u0000\u10a4\u10a5\u0007\u0011"+ - "\u0000\u0000\u10a5\u10a6\u0007\t\u0000\u0000\u10a6\u10a7\u0007\u0010\u0000"+ - "\u0000\u10a7\u10a8\u0007\t\u0000\u0000\u10a8\u031e\u0001\u0000\u0000\u0000"+ - "\u10a9\u10aa\u0007\n\u0000\u0000\u10aa\u10ab\u0007\u001a\u0000\u0000\u10ab"+ - "\u10ac\u0007\u0010\u0000\u0000\u10ac\u10ad\u0007\r\u0000\u0000\u10ad\u10ae"+ - "\u0007\u0005\u0000\u0000\u10ae\u10af\u0007\u000e\u0000\u0000\u10af\u10b0"+ - "\u0007\u0010\u0000\u0000\u10b0\u0320\u0001\u0000\u0000\u0000\u10b1\u10b2"+ - "\u0007\u0019\u0000\u0000\u10b2\u10b3\u0007\u0006\u0000\u0000\u10b3\u10b4"+ - "\u0007\u0013\u0000\u0000\u10b4\u10b5\u0007\u0005\u0000\u0000\u10b5\u10b6"+ - "\u0007\u0010\u0000\u0000\u10b6\u0322\u0001\u0000\u0000\u0000\u10b7\u10b8"+ - "\u0007\u0017\u0000\u0000\u10b8\u10b9\u0007\r\u0000\u0000\u10b9\u10ba\u0007"+ - "\n\u0000\u0000\u10ba\u10bb\u0007\u0005\u0000\u0000\u10bb\u10bc\u0007\u0010"+ - "\u0000\u0000\u10bc\u10bd\u0007\n\u0000\u0000\u10bd\u10be\u0007\t\u0000"+ - "\u0000\u10be\u10bf\u0007\u0010\u0000\u0000\u10bf\u0324\u0001\u0000\u0000"+ - "\u0000\u10c0\u10c1\u0007\u0011\u0000\u0000\u10c1\u10c2\u0007\u0007\u0000"+ - "\u0000\u10c2\u10c3\u0007\u0013\u0000\u0000\u10c3\u10c4\u0007\u0016\u0000"+ - "\u0000\u10c4\u10c5\u0007\u0010\u0000\u0000\u10c5\u0326\u0001\u0000\u0000"+ - "\u0000\u10c6\u10c7\u0007\u0011\u0000\u0000\u10c7\u10c8\u0007\u0007\u0000"+ - "\u0000\u10c8\u10c9\u0007\u0010\u0000\u0000\u10c9\u0328\u0001\u0000\u0000"+ - "\u0000\u10ca\u10cb\u0007\u0011\u0000\u0000\u10cb\u10cc\u0007\u0007\u0000"+ - "\u0000\u10cc\u10cd\u0007\u0010\u0000\u0000\u10cd\u10ce\u0007\n\u0000\u0000"+ - "\u10ce\u10cf\u0007\u0017\u0000\u0000\u10cf\u10d0\u0007\n\u0000\u0000\u10d0"+ - "\u10d1\u0007\r\u0000\u0000\u10d1\u032a\u0001\u0000\u0000\u0000\u10d2\u10d3"+ - "\u0007\u0011\u0000\u0000\u10d3\u10d4\u0007\u0007\u0000\u0000\u10d4\u10d5"+ - "\u0007\u0010\u0000\u0000\u10d5\u10d6\u0007\n\u0000\u0000\u10d6\u10d7\u0007"+ - "\r\u0000\u0000\u10d7\u10d8\u0007\u001b\u0000\u0000\u10d8\u10d9\u0007\u0005"+ - "\u0000\u0000\u10d9\u10da\u0007\u0006\u0000\u0000\u10da\u032c\u0001\u0000"+ - "\u0000\u0000\u10db\u10dc\u0007\u0006\u0000\u0000\u10dc\u10dd\u0007\n\u0000"+ - "\u0000\u10dd\u10de\u0007\u0005\u0000\u0000\u10de\u10df\u0007\t\u0000\u0000"+ - "\u10df\u10e0\u0007\u0010\u0000\u0000\u10e0\u032e\u0001\u0000\u0000\u0000"+ - "\u10e1\u10e2\u0007\u0007\u0000\u0000\u10e2\u10e3\u0007\u0005\u0000\u0000"+ - "\u10e3\u10e4\u0007\u0010\u0000\u0000\u10e4\u10e5\u0007\u0011\u0000\u0000"+ - "\u10e5\u10e6\u0007\u0013\u0000\u0000\u10e6\u10e7\u0007\u0007\u0000\u0000"+ - "\u10e7\u10e8\u0007\u0005\u0000\u0000\u10e8\u10e9\u0007\u0006\u0000\u0000"+ - "\u10e9\u0330\u0001\u0000\u0000\u0000\u10ea\u10eb\u0007\u0007\u0000\u0000"+ - "\u10eb\u10ec\u0007\u000e\u0000\u0000\u10ec\u10ed\u0007\u0014\u0000\u0000"+ - "\u10ed\u10ee\u0007\u0005\u0000\u0000\u10ee\u10ef\u0007\r\u0000\u0000\u10ef"+ - "\u0332\u0001\u0000\u0000\u0000\u10f0\u10f1\u0007\u0007\u0000\u0000\u10f1"+ - "\u10f2\u0007\u0013\u0000\u0000\u10f2\u10f3\u0007\u0007\u0000\u0000\u10f3"+ - "\u10f4\u0007\n\u0000\u0000\u10f4\u0334\u0001\u0000\u0000\u0000\u10f5\u10f6"+ - "\u0007\u0007\u0000\u0000\u10f6\u10f7\u0007\u0016\u0000\u0000\u10f7\u10f8"+ - "\u0007\u0006\u0000\u0000\u10f8\u10f9\u0007\u0006\u0000\u0000\u10f9\u10fa"+ - "\u0007\u0011\u0000\u0000\u10fa\u10fb\u0007\u0019\u0000\u0000\u10fb\u0336"+ - "\u0001\u0000\u0000\u0000\u10fc\u10fd\u0007\u0007\u0000\u0000\u10fd\u10fe"+ - "\u0007\u0016\u0000\u0000\u10fe\u10ff\u0007\u000f\u0000\u0000\u10ff\u1100"+ - "\u0007\n\u0000\u0000\u1100\u1101\u0007\r\u0000\u0000\u1101\u1102\u0007"+ - "\u0011\u0000\u0000\u1102\u1103\u0007\u000e\u0000\u0000\u1103\u0338\u0001"+ - "\u0000\u0000\u0000\u1104\u1105\u0007\u0013\u0000\u0000\u1105\u1106\u0007"+ - "\u001b\u0000\u0000\u1106\u1107\u0007\n\u0000\u0000\u1107\u1108\u0007\r"+ - "\u0000\u0000\u1108\u1109\u0007\u0006\u0000\u0000\u1109\u110a\u0007\u0005"+ - "\u0000\u0000\u110a\u110b\u0007\b\u0000\u0000\u110b\u033a\u0001\u0000\u0000"+ - "\u0000\u110c\u110d\u0007\u0018\u0000\u0000\u110d\u110e\u0007\u0013\u0000"+ - "\u0000\u110e\u110f\u0007\t\u0000\u0000\u110f\u1110\u0007\u0011\u0000\u0000"+ - "\u1110\u1111\u0007\u0010\u0000\u0000\u1111\u1112\u0007\u0011\u0000\u0000"+ - "\u1112\u1113\u0007\u0013\u0000\u0000\u1113\u1114\u0007\u0007\u0000\u0000"+ - "\u1114\u033c\u0001\u0000\u0000\u0000\u1115\u1116\u0007\u0018\u0000\u0000"+ - "\u1116\u1117\u0007\r\u0000\u0000\u1117\u1118\u0007\n\u0000\u0000\u1118"+ - "\u1119\u0007\u000e\u0000\u0000\u1119\u111a\u0007\u0011\u0000\u0000\u111a"+ - "\u111b\u0007\t\u0000\u0000\u111b\u111c\u0007\u0011\u0000\u0000\u111c\u111d"+ - "\u0007\u0013\u0000\u0000\u111d\u111e\u0007\u0007\u0000\u0000\u111e\u033e"+ - "\u0001\u0000\u0000\u0000\u111f\u1120\u0007\r\u0000\u0000\u1120\u1121\u0007"+ - "\n\u0000\u0000\u1121\u1122\u0007\u0005\u0000\u0000\u1122\u1123\u0007\u0006"+ - "\u0000\u0000\u1123\u0340\u0001\u0000\u0000\u0000\u1124\u1125\u0007\r\u0000"+ - "\u0000\u1125\u1126\u0007\u0013\u0000\u0000\u1126\u1127\u0007\u001c\u0000"+ - "\u0000\u1127\u0342\u0001\u0000\u0000\u0000\u1128\u1129\u0007\t\u0000\u0000"+ - "\u1129\u112a\u0007\n\u0000\u0000\u112a\u112b\u0007\u0010\u0000\u0000\u112b"+ - "\u112c\u0007\u0013\u0000\u0000\u112c\u112d\u0007\u0019\u0000\u0000\u112d"+ - "\u0344\u0001\u0000\u0000\u0000\u112e\u112f\u0007\t\u0000\u0000\u112f\u1130"+ - "\u0007\u000f\u0000\u0000\u1130\u1131\u0007\u0005\u0000\u0000\u1131\u1132"+ - "\u0007\u0006\u0000\u0000\u1132\u1133\u0007\u0006\u0000\u0000\u1133\u1134"+ - "\u0007\u0011\u0000\u0000\u1134\u1135\u0007\u0007\u0000\u0000\u1135\u1136"+ - "\u0007\u0010\u0000\u0000\u1136\u0346\u0001\u0000\u0000\u0000\u1137\u1138"+ - "\u0007\t\u0000\u0000\u1138\u1139\u0007\u0016\u0000\u0000\u1139\u113a\u0007"+ - "\u0012\u0000\u0000\u113a\u113b\u0007\t\u0000\u0000\u113b\u113c\u0007\u0010"+ - "\u0000\u0000\u113c\u113d\u0007\r\u0000\u0000\u113d\u113e\u0007\u0011\u0000"+ - "\u0000\u113e\u113f\u0007\u0007\u0000\u0000\u113f\u1140\u0007\u0017\u0000"+ - "\u0000\u1140\u0348\u0001\u0000\u0000\u0000\u1141\u1142\u0007\u0010\u0000"+ - "\u0000\u1142\u1143\u0007\u0011\u0000\u0000\u1143\u1144\u0007\u000f\u0000"+ - "\u0000\u1144\u1145\u0007\n\u0000\u0000\u1145\u034a\u0001\u0000\u0000\u0000"+ - "\u1146\u1147\u0007\u0010\u0000\u0000\u1147\u1148\u0007\u0011\u0000\u0000"+ - "\u1148\u1149\u0007\u000f\u0000\u0000\u1149\u114a\u0007\n\u0000\u0000\u114a"+ - "\u114b\u0007\t\u0000\u0000\u114b\u114c\u0007\u0010\u0000\u0000\u114c\u114d"+ - "\u0007\u0005\u0000\u0000\u114d\u114e\u0007\u000f\u0000\u0000\u114e\u114f"+ - "\u0007\u0018\u0000\u0000\u114f\u034c\u0001\u0000\u0000\u0000\u1150\u1151"+ - "\u0007\u0010\u0000\u0000\u1151\u1152\u0007\r\u0000\u0000\u1152\u1153\u0007"+ - "\n\u0000\u0000\u1153\u1154\u0007\u0005\u0000\u0000\u1154\u1155\u0007\u0010"+ - "\u0000\u0000\u1155\u034e\u0001\u0000\u0000\u0000\u1156\u1157\u0007\u0010"+ - "\u0000\u0000\u1157\u1158\u0007\r\u0000\u0000\u1158\u1159\u0007\u0011\u0000"+ - "\u0000\u1159\u115a\u0007\u000f\u0000\u0000\u115a\u0350\u0001\u0000\u0000"+ - "\u0000\u115b\u115c\u0007\u001b\u0000\u0000\u115c\u115d\u0007\u0005\u0000"+ - "\u0000\u115d\u115e\u0007\u0006\u0000\u0000\u115e\u115f\u0007\u0016\u0000"+ - "\u0000\u115f\u1160\u0007\n\u0000\u0000\u1160\u1161\u0007\t\u0000\u0000"+ - "\u1161\u0352\u0001\u0000\u0000\u0000\u1162\u1163\u0007\u001b\u0000\u0000"+ - "\u1163\u1164\u0007\u0005\u0000\u0000\u1164\u1165\u0007\r\u0000\u0000\u1165"+ - "\u1166\u0007\u000e\u0000\u0000\u1166\u1167\u0007\u0014\u0000\u0000\u1167"+ - "\u1168\u0007\u0005\u0000\u0000\u1168\u1169\u0007\r\u0000\u0000\u1169\u0354"+ - "\u0001\u0000\u0000\u0000\u116a\u116b\u0007\u001a\u0000\u0000\u116b\u116c"+ - "\u0007\u000f\u0000\u0000\u116c\u116d\u0007\u0006\u0000\u0000\u116d\u116e"+ - "\u0007\u0005\u0000\u0000\u116e\u116f\u0007\u0010\u0000\u0000\u116f\u1170"+ - "\u0007\u0010\u0000\u0000\u1170\u1171\u0007\r\u0000\u0000\u1171\u1172\u0007"+ - "\u0011\u0000\u0000\u1172\u1173\u0007\u0012\u0000\u0000\u1173\u1174\u0007"+ - "\u0016\u0000\u0000\u1174\u1175\u0007\u0010\u0000\u0000\u1175\u1176\u0007"+ - "\n\u0000\u0000\u1176\u1177\u0007\t\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\u0007\u000e"+ - "\u0000\u0000\u117c\u117d\u0007\u0013\u0000\u0000\u117d\u117e\u0007\u000f"+ - "\u0000\u0000\u117e\u117f\u0007\u000f\u0000\u0000\u117f\u1180\u0007\n\u0000"+ - "\u0000\u1180\u1181\u0007\u0007\u0000\u0000\u1181\u1182\u0007\u0010\u0000"+ - "\u0000\u1182\u0358\u0001\u0000\u0000\u0000\u1183\u1184\u0007\u001a\u0000"+ - "\u0000\u1184\u1185\u0007\u000f\u0000\u0000\u1185\u1186\u0007\u0006\u0000"+ - "\u0000\u1186\u1187\u0007\u0005\u0000\u0000\u1187\u1188\u0007\u0017\u0000"+ - "\u0000\u1188\u1189\u0007\u0017\u0000\u0000\u1189\u035a\u0001\u0000\u0000"+ - "\u0000\u118a\u118b\u0007\u001a\u0000\u0000\u118b\u118c\u0007\u000f\u0000"+ - "\u0000\u118c\u118d\u0007\u0006\u0000\u0000\u118d\u118e\u0005_\u0000\u0000"+ - "\u118e\u118f\u0007\u0011\u0000\u0000\u118f\u1190\u0007\t\u0000\u0000\u1190"+ - "\u1191\u0005_\u0000\u0000\u1191\u1192\u0007\u001c\u0000\u0000\u1192\u1193"+ - "\u0007\n\u0000\u0000\u1193\u1194\u0007\u0006\u0000\u0000\u1194\u1195\u0007"+ - "\u0006\u0000\u0000\u1195\u1196\u0005_\u0000\u0000\u1196\u1197\u0007\u0019"+ - "\u0000\u0000\u1197\u1198\u0007\u0013\u0000\u0000\u1198\u1199\u0007\r\u0000"+ - "\u0000\u1199\u119a\u0007\u000f\u0000\u0000\u119a\u119b\u0007\n\u0000\u0000"+ - "\u119b\u119c\u0007\f\u0000\u0000\u119c\u035c\u0001\u0000\u0000\u0000\u119d"+ - "\u119e\u0007\u001a\u0000\u0000\u119e\u119f\u0007\u000f\u0000\u0000\u119f"+ - "\u11a0\u0007\u0006\u0000\u0000\u11a0\u11a1\u0005_\u0000\u0000\u11a1\u11a2"+ - "\u0007\u0011\u0000\u0000\u11a2\u11a3\u0007\t\u0000\u0000\u11a3\u11a4\u0005"+ - "_\u0000\u0000\u11a4\u11a5\u0007\u001c\u0000\u0000\u11a5\u11a6\u0007\n"+ - "\u0000\u0000\u11a6\u11a7\u0007\u0006\u0000\u0000\u11a7\u11a8\u0007\u0006"+ - "\u0000\u0000\u11a8\u11a9\u0005_\u0000\u0000\u11a9\u11aa\u0007\u0019\u0000"+ - "\u0000\u11aa\u11ab\u0007\u0013\u0000\u0000\u11ab\u11ac\u0007\r\u0000\u0000"+ - "\u11ac\u11ad\u0007\u000f\u0000\u0000\u11ad\u11ae\u0007\n\u0000\u0000\u11ae"+ - "\u11af\u0007\f\u0000\u0000\u11af\u11b0\u0005_\u0000\u0000\u11b0\u11b1"+ - "\u0007\f\u0000\u0000\u11b1\u11b2\u0007\u0013\u0000\u0000\u11b2\u11b3\u0007"+ - "\u000e\u0000\u0000\u11b3\u11b4\u0007\u0016\u0000\u0000\u11b4\u11b5\u0007"+ - "\u000f\u0000\u0000\u11b5\u11b6\u0007\n\u0000\u0000\u11b6\u11b7\u0007\u0007"+ - "\u0000\u0000\u11b7\u11b8\u0007\u0010\u0000\u0000\u11b8\u035e\u0001\u0000"+ - "\u0000\u0000\u11b9\u11ba\u0007\u001a\u0000\u0000\u11ba\u11bb\u0007\u000f"+ - "\u0000\u0000\u11bb\u11bc\u0007\u0006\u0000\u0000\u11bc\u11bd\u0005_\u0000"+ - "\u0000\u11bd\u11be\u0007\u0011\u0000\u0000\u11be\u11bf\u0007\t\u0000\u0000"+ - "\u11bf\u11c0\u0005_\u0000\u0000\u11c0\u11c1\u0007\u001c\u0000\u0000\u11c1"+ - "\u11c2\u0007\n\u0000\u0000\u11c2\u11c3\u0007\u0006\u0000\u0000\u11c3\u11c4"+ - "\u0007\u0006\u0000\u0000\u11c4\u11c5\u0005_\u0000\u0000\u11c5\u11c6\u0007"+ - "\u0019\u0000\u0000\u11c6\u11c7\u0007\u0013\u0000\u0000\u11c7\u11c8\u0007"+ - "\r\u0000\u0000\u11c8\u11c9\u0007\u000f\u0000\u0000\u11c9\u11ca\u0007\n"+ - "\u0000\u0000\u11ca\u11cb\u0007\f\u0000\u0000\u11cb\u11cc\u0005_\u0000"+ - "\u0000\u11cc\u11cd\u0007\u000e\u0000\u0000\u11cd\u11ce\u0007\u0013\u0000"+ - "\u0000\u11ce\u11cf\u0007\u0007\u0000\u0000\u11cf\u11d0\u0007\u0010\u0000"+ - "\u0000\u11d0\u11d1\u0007\n\u0000\u0000\u11d1\u11d2\u0007\u0007\u0000\u0000"+ - "\u11d2\u11d3\u0007\u0010\u0000\u0000\u11d3\u0360\u0001\u0000\u0000\u0000"+ - "\u11d4\u11d5\u0007\u001a\u0000\u0000\u11d5\u11d6\u0007\u0018\u0000\u0000"+ - "\u11d6\u11d7\u0007\u0005\u0000\u0000\u11d7\u11d8\u0007\u0010\u0000\u0000"+ - "\u11d8\u11d9\u0007\u0014\u0000\u0000\u11d9\u0362\u0001\u0000\u0000\u0000"+ - "\u11da\u11db\u0007\u001a\u0000\u0000\u11db\u11dc\u0007\u0018\u0000\u0000"+ - "\u11dc\u11dd\u0007\u0005\u0000\u0000\u11dd\u11de\u0007\u0010\u0000\u0000"+ - "\u11de\u11df\u0007\u0014\u0000\u0000\u11df\u11e0\u0005_\u0000\u0000\u11e0"+ - "\u11e1\u0007\n\u0000\u0000\u11e1\u11e2\u0007\u001a\u0000\u0000\u11e2\u11e3"+ - "\u0007\u0011\u0000\u0000\u11e3\u11e4\u0007\t\u0000\u0000\u11e4\u11e5\u0007"+ - "\u0010\u0000\u0000\u11e5\u11e6\u0007\t\u0000\u0000\u11e6\u0364\u0001\u0000"+ - "\u0000\u0000\u11e7\u11e8\u0007\u001a\u0000\u0000\u11e8\u11e9\u0007\u000f"+ - "\u0000\u0000\u11e9\u11ea\u0007\u0006\u0000\u0000\u11ea\u11eb\u0007\u000e"+ - "\u0000\u0000\u11eb\u11ec\u0007\u0013\u0000\u0000\u11ec\u11ed\u0007\u0007"+ - "\u0000\u0000\u11ed\u11ee\u0007\u000e\u0000\u0000\u11ee\u11ef\u0007\u0005"+ - "\u0000\u0000\u11ef\u11f0\u0007\u0010\u0000\u0000\u11f0\u0366\u0001\u0000"+ - "\u0000\u0000\u11f1\u11f2\u0007\u001a\u0000\u0000\u11f2\u11f3\u0007\u000f"+ - "\u0000\u0000\u11f3\u11f4\u0007\u0006\u0000\u0000\u11f4\u11f5\u0007\n\u0000"+ - "\u0000\u11f5\u11f6\u0007\u0006\u0000\u0000\u11f6\u11f7\u0007\n\u0000\u0000"+ - "\u11f7\u11f8\u0007\u000f\u0000\u0000\u11f8\u11f9\u0007\n\u0000\u0000\u11f9"+ - "\u11fa\u0007\u0007\u0000\u0000\u11fa\u11fb\u0007\u0010\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\n\u0000\u0000\u1200\u1201\u0007\u001a\u0000\u0000\u1201\u1202"+ - "\u0007\u0011\u0000\u0000\u1202\u1203\u0007\t\u0000\u0000\u1203\u1204\u0007"+ - "\u0010\u0000\u0000\u1204\u1205\u0007\t\u0000\u0000\u1205\u036a\u0001\u0000"+ - "\u0000\u0000\u1206\u1207\u0007\u001a\u0000\u0000\u1207\u1208\u0007\u000f"+ - "\u0000\u0000\u1208\u1209\u0007\u0006\u0000\u0000\u1209\u120a\u0007\u0019"+ - "\u0000\u0000\u120a\u120b\u0007\u0013\u0000\u0000\u120b\u120c\u0007\r\u0000"+ - "\u0000\u120c\u120d\u0007\n\u0000\u0000\u120d\u120e\u0007\t\u0000\u0000"+ - "\u120e\u120f\u0007\u0010\u0000\u0000\u120f\u036c\u0001\u0000\u0000\u0000"+ - "\u1210\u1211\u0007\u001a\u0000\u0000\u1211\u1212\u0007\u000f\u0000\u0000"+ - "\u1212\u1213\u0007\u0006\u0000\u0000\u1213\u1214\u0007\u0018\u0000\u0000"+ - "\u1214\u1215\u0007\u0005\u0000\u0000\u1215\u1216\u0007\r\u0000\u0000\u1216"+ - "\u1217\u0007\t\u0000\u0000\u1217\u1218\u0007\n\u0000\u0000\u1218\u036e"+ - "\u0001\u0000\u0000\u0000\u1219\u121a\u0007\u001a\u0000\u0000\u121a\u121b"+ - "\u0007\u000f\u0000\u0000\u121b\u121c\u0007\u0006\u0000\u0000\u121c\u121d"+ - "\u0007\u0018\u0000\u0000\u121d\u121e\u0007\u0011\u0000\u0000\u121e\u0370"+ - "\u0001\u0000\u0000\u0000\u121f\u1220\u0007\u001a\u0000\u0000\u1220\u1221"+ - "\u0007\u000f\u0000\u0000\u1221\u1222\u0007\u0006\u0000\u0000\u1222\u1223"+ - "\u0007\r\u0000\u0000\u1223\u1224\u0007\u0013\u0000\u0000\u1224\u1225\u0007"+ - "\u0013\u0000\u0000\u1225\u1226\u0007\u0010\u0000\u0000\u1226\u0372\u0001"+ - "\u0000\u0000\u0000\u1227\u1228\u0007\u001a\u0000\u0000\u1228\u1229\u0007"+ - "\u000f\u0000\u0000\u1229\u122a\u0007\u0006\u0000\u0000\u122a\u122b\u0007"+ - "\t\u0000\u0000\u122b\u122c\u0007\n\u0000\u0000\u122c\u122d\u0007\r\u0000"+ - "\u0000\u122d\u122e\u0007\u0011\u0000\u0000\u122e\u122f\u0007\u0005\u0000"+ - "\u0000\u122f\u1230\u0007\u0006\u0000\u0000\u1230\u1231\u0007\u0011\u0000"+ - "\u0000\u1231\u1232\u0007\u000b\u0000\u0000\u1232\u1233\u0007\n\u0000\u0000"+ - "\u1233\u0374\u0001\u0000\u0000\u0000\u1234\u1235\u0007\u000e\u0000\u0000"+ - "\u1235\u1236\u0007\u0005\u0000\u0000\u1236\u1237\u0007\u0006\u0000\u0000"+ - "\u1237\u1238\u0007\u0006\u0000\u0000\u1238\u0376\u0001\u0000\u0000\u0000"+ - "\u1239\u123a\u0007\u000e\u0000\u0000\u123a\u123b\u0007\u0016\u0000\u0000"+ - "\u123b\u123c\u0007\r\u0000\u0000\u123c\u123d\u0007\r\u0000\u0000\u123d"+ - "\u123e\u0007\n\u0000\u0000\u123e\u123f\u0007\u0007\u0000\u0000\u123f\u1240"+ - "\u0007\u0010\u0000\u0000\u1240\u0378\u0001\u0000\u0000\u0000\u1241\u1242"+ - "\u0007\u0005\u0000\u0000\u1242\u1243\u0007\u0010\u0000\u0000\u1243\u1244"+ - "\u0007\u0010\u0000\u0000\u1244\u1245\u0007\u0005\u0000\u0000\u1245\u1246"+ - "\u0007\u000e\u0000\u0000\u1246\u1247\u0007\u0014\u0000\u0000\u1247\u037a"+ - "\u0001\u0000\u0000\u0000\u1248\u1249\u0007\f\u0000\u0000\u1249\u124a\u0007"+ - "\n\u0000\u0000\u124a\u124b\u0007\u0010\u0000\u0000\u124b\u124c\u0007\u0005"+ - "\u0000\u0000\u124c\u124d\u0007\u000e\u0000\u0000\u124d\u124e\u0007\u0014"+ - "\u0000\u0000\u124e\u037c\u0001\u0000\u0000\u0000\u124f\u1250\u0007\n\u0000"+ - "\u0000\u1250\u1251\u0007\u001a\u0000\u0000\u1251\u1252\u0007\u0018\u0000"+ - "\u0000\u1252\u1253\u0007\r\u0000\u0000\u1253\u1254\u0007\n\u0000\u0000"+ - "\u1254\u1255\u0007\t\u0000\u0000\u1255\u1256\u0007\t\u0000\u0000\u1256"+ - "\u1257\u0007\u0011\u0000\u0000\u1257\u1258\u0007"; - private static final String _serializedATNSegment2 = - "\u0013\u0000\u0000\u1258\u1259\u0007\u0007\u0000\u0000\u1259\u037e\u0001"+ - "\u0000\u0000\u0000\u125a\u125b\u0007\u0017\u0000\u0000\u125b\u125c\u0007"+ - "\n\u0000\u0000\u125c\u125d\u0007\u0007\u0000\u0000\u125d\u125e\u0007\n"+ - "\u0000\u0000\u125e\u125f\u0007\r\u0000\u0000\u125f\u1260\u0007\u0005\u0000"+ - "\u0000\u1260\u1261\u0007\u0010\u0000\u0000\u1261\u1262\u0007\n\u0000\u0000"+ - "\u1262\u1263\u0007\f\u0000\u0000\u1263\u0380\u0001\u0000\u0000\u0000\u1264"+ - "\u1265\u0007\u0006\u0000\u0000\u1265\u1266\u0007\u0013\u0000\u0000\u1266"+ - "\u1267\u0007\u0017\u0000\u0000\u1267\u1268\u0007\u0017\u0000\u0000\u1268"+ - "\u1269\u0007\n\u0000\u0000\u1269\u126a\u0007\f\u0000\u0000\u126a\u0382"+ - "\u0001\u0000\u0000\u0000\u126b\u126c\u0007\t\u0000\u0000\u126c\u126d\u0007"+ - "\u0010\u0000\u0000\u126d\u126e\u0007\u0013\u0000\u0000\u126e\u126f\u0007"+ - "\r\u0000\u0000\u126f\u1270\u0007\n\u0000\u0000\u1270\u1271\u0007\f\u0000"+ - "\u0000\u1271\u0384\u0001\u0000\u0000\u0000\u1272\u1273\u0007\u0011\u0000"+ - "\u0000\u1273\u1274\u0007\u0007\u0000\u0000\u1274\u1275\u0007\u000e\u0000"+ - "\u0000\u1275\u1276\u0007\u0006\u0000\u0000\u1276\u1277\u0007\u0016\u0000"+ - "\u0000\u1277\u1278\u0007\f\u0000\u0000\u1278\u1279\u0007\n\u0000\u0000"+ - "\u1279\u0386\u0001\u0000\u0000\u0000\u127a\u127b\u0007\r\u0000\u0000\u127b"+ - "\u127c\u0007\u0013\u0000\u0000\u127c\u127d\u0007\u0016\u0000\u0000\u127d"+ - "\u127e\u0007\u0010\u0000\u0000\u127e\u127f\u0007\u0011\u0000\u0000\u127f"+ - "\u1280\u0007\u0007\u0000\u0000\u1280\u1281\u0007\n\u0000\u0000\u1281\u0388"+ - "\u0001\u0000\u0000\u0000\u1282\u1283\u0007\u0010\u0000\u0000\u1283\u1284"+ - "\u0007\r\u0000\u0000\u1284\u1285\u0007\u0005\u0000\u0000\u1285\u1286\u0007"+ - "\u0007\u0000\u0000\u1286\u1287\u0007\t\u0000\u0000\u1287\u1288\u0007\u0019"+ - "\u0000\u0000\u1288\u1289\u0007\u0013\u0000\u0000\u1289\u128a\u0007\r\u0000"+ - "\u0000\u128a\u128b\u0007\u000f\u0000\u0000\u128b\u038a\u0001\u0000\u0000"+ - "\u0000\u128c\u128d\u0007\u0011\u0000\u0000\u128d\u128e\u0007\u000f\u0000"+ - "\u0000\u128e\u128f\u0007\u0018\u0000\u0000\u128f\u1290\u0007\u0013\u0000"+ - "\u0000\u1290\u1291\u0007\r\u0000\u0000\u1291\u1292\u0007\u0010\u0000\u0000"+ - "\u1292\u038c\u0001\u0000\u0000\u0000\u1293\u1294\u0007\u0018\u0000\u0000"+ - "\u1294\u1295\u0007\u0013\u0000\u0000\u1295\u1296\u0007\u0006\u0000\u0000"+ - "\u1296\u1297\u0007\u0011\u0000\u0000\u1297\u1298\u0007\u000e\u0000\u0000"+ - "\u1298\u1299\u0007\b\u0000\u0000\u1299\u038e\u0001\u0000\u0000\u0000\u129a"+ - "\u129b\u0007\u000f\u0000\u0000\u129b\u129c\u0007\n\u0000\u0000\u129c\u129d"+ - "\u0007\u0010\u0000\u0000\u129d\u129e\u0007\u0014\u0000\u0000\u129e\u129f"+ - "\u0007\u0013\u0000\u0000\u129f\u12a0\u0007\f\u0000\u0000\u12a0\u0390\u0001"+ - "\u0000\u0000\u0000\u12a1\u12a2\u0007\r\u0000\u0000\u12a2\u12a3\u0007\n"+ - "\u0000\u0000\u12a3\u12a4\u0007\u0019\u0000\u0000\u12a4\u12a5\u0007\n\u0000"+ - "\u0000\u12a5\u12a6\u0007\r\u0000\u0000\u12a6\u12a7\u0007\n\u0000\u0000"+ - "\u12a7\u12a8\u0007\u0007\u0000\u0000\u12a8\u12a9\u0007\u000e\u0000\u0000"+ - "\u12a9\u12aa\u0007\u0011\u0000\u0000\u12aa\u12ab\u0007\u0007\u0000\u0000"+ - "\u12ab\u12ac\u0007\u0017\u0000\u0000\u12ac\u0392\u0001\u0000\u0000\u0000"+ - "\u12ad\u12ae\u0007\u0007\u0000\u0000\u12ae\u12af\u0007\n\u0000\u0000\u12af"+ - "\u12b0\u0007\u001c\u0000\u0000\u12b0\u0394\u0001\u0000\u0000\u0000\u12b1"+ - "\u12b2\u0007\u0013\u0000\u0000\u12b2\u12b3\u0007\u0006\u0000\u0000\u12b3"+ - "\u12b4\u0007\f\u0000\u0000\u12b4\u0396\u0001\u0000\u0000\u0000\u12b5\u12b6"+ - "\u0007\u001b\u0000\u0000\u12b6\u12b7\u0007\u0005\u0000\u0000\u12b7\u12b8"+ - "\u0007\u0006\u0000\u0000\u12b8\u12b9\u0007\u0016\u0000\u0000\u12b9\u12ba"+ - "\u0007\n\u0000\u0000\u12ba\u0398\u0001\u0000\u0000\u0000\u12bb\u12bc\u0007"+ - "\t\u0000\u0000\u12bc\u12bd\u0007\u0016\u0000\u0000\u12bd\u12be\u0007\u0012"+ - "\u0000\u0000\u12be\u12bf\u0007\t\u0000\u0000\u12bf\u12c0\u0007\u000e\u0000"+ - "\u0000\u12c0\u12c1\u0007\r\u0000\u0000\u12c1\u12c2\u0007\u0011\u0000\u0000"+ - "\u12c2\u12c3\u0007\u0018\u0000\u0000\u12c3\u12c4\u0007\u0010\u0000\u0000"+ - "\u12c4\u12c5\u0007\u0011\u0000\u0000\u12c5\u12c6\u0007\u0013\u0000\u0000"+ - "\u12c6\u12c7\u0007\u0007\u0000\u0000\u12c7\u039a\u0001\u0000\u0000\u0000"+ - "\u12c8\u12c9\u0007\u0018\u0000\u0000\u12c9\u12ca\u0007\u0016\u0000\u0000"+ - "\u12ca\u12cb\u0007\u0012\u0000\u0000\u12cb\u12cc\u0007\u0006\u0000\u0000"+ - "\u12cc\u12cd\u0007\u0011\u0000\u0000\u12cd\u12ce\u0007\u000e\u0000\u0000"+ - "\u12ce\u12cf\u0007\u0005\u0000\u0000\u12cf\u12d0\u0007\u0010\u0000\u0000"+ - "\u12d0\u12d1\u0007\u0011\u0000\u0000\u12d1\u12d2\u0007\u0013\u0000\u0000"+ - "\u12d2\u12d3\u0007\u0007\u0000\u0000\u12d3\u039c\u0001\u0000\u0000\u0000"+ - "\u12d4\u12d5\u0007\u0013\u0000\u0000\u12d5\u12d6\u0007\u0016\u0000\u0000"+ - "\u12d6\u12d7\u0007\u0010\u0000\u0000\u12d7\u039e\u0001\u0000\u0000\u0000"+ - "\u12d8\u12d9\u0007\n\u0000\u0000\u12d9\u12da\u0007\u0007\u0000\u0000\u12da"+ - "\u12db\u0007\f\u0000\u0000\u12db\u03a0\u0001\u0000\u0000\u0000\u12dc\u12dd"+ - "\u0007\r\u0000\u0000\u12dd\u12de\u0007\u0013\u0000\u0000\u12de\u12df\u0007"+ - "\u0016\u0000\u0000\u12df\u12e0\u0007\u0010\u0000\u0000\u12e0\u12e1\u0007"+ - "\u0011\u0000\u0000\u12e1\u12e2\u0007\u0007\u0000\u0000\u12e2\u12e3\u0007"+ - "\n\u0000\u0000\u12e3\u12e4\u0007\t\u0000\u0000\u12e4\u03a2\u0001\u0000"+ - "\u0000\u0000\u12e5\u12e6\u0007\t\u0000\u0000\u12e6\u12e7\u0007\u000e\u0000"+ - "\u0000\u12e7\u12e8\u0007\u0014\u0000\u0000\u12e8\u12e9\u0007\n\u0000\u0000"+ - "\u12e9\u12ea\u0007\u000f\u0000\u0000\u12ea\u12eb\u0007\u0005\u0000\u0000"+ - "\u12eb\u12ec\u0007\t\u0000\u0000\u12ec\u03a4\u0001\u0000\u0000\u0000\u12ed"+ - "\u12ee\u0007\u0018\u0000\u0000\u12ee\u12ef\u0007\r\u0000\u0000\u12ef\u12f0"+ - "\u0007\u0013\u0000\u0000\u12f0\u12f1\u0007\u000e\u0000\u0000\u12f1\u12f2"+ - "\u0007\n\u0000\u0000\u12f2\u12f3\u0007\f\u0000\u0000\u12f3\u12f4\u0007"+ - "\u0016\u0000\u0000\u12f4\u12f5\u0007\r\u0000\u0000\u12f5\u12f6\u0007\n"+ - "\u0000\u0000\u12f6\u12f7\u0007\t\u0000\u0000\u12f7\u03a6\u0001\u0000\u0000"+ - "\u0000\u12f8\u12f9\u0007\u0011\u0000\u0000\u12f9\u12fa\u0007\u0007\u0000"+ - "\u0000\u12fa\u12fb\u0007\u0018\u0000\u0000\u12fb\u12fc\u0007\u0016\u0000"+ - "\u0000\u12fc\u12fd\u0007\u0010\u0000\u0000\u12fd\u03a8\u0001\u0000\u0000"+ - "\u0000\u12fe\u12ff\u0007\t\u0000\u0000\u12ff\u1300\u0007\u0016\u0000\u0000"+ - "\u1300\u1301\u0007\u0018\u0000\u0000\u1301\u1302\u0007\u0018\u0000\u0000"+ - "\u1302\u1303\u0007\u0013\u0000\u0000\u1303\u1304\u0007\r\u0000\u0000\u1304"+ - "\u1305\u0007\u0010\u0000\u0000\u1305\u03aa\u0001\u0000\u0000\u0000\u1306"+ - "\u1307\u0007\u0018\u0000\u0000\u1307\u1308\u0007\u0005\u0000\u0000\u1308"+ - "\u1309\u0007\r\u0000\u0000\u1309\u130a\u0007\u0005\u0000\u0000\u130a\u130b"+ - "\u0007\u0006\u0000\u0000\u130b\u130c\u0007\u0006\u0000\u0000\u130c\u130d"+ - "\u0007\n\u0000\u0000\u130d\u130e\u0007\u0006\u0000\u0000\u130e\u03ac\u0001"+ - "\u0000\u0000\u0000\u130f\u1310\u0007\t\u0000\u0000\u1310\u1311\u0007\u001d"+ - "\u0000\u0000\u1311\u1312\u0007\u0006\u0000\u0000\u1312\u03ae\u0001\u0000"+ - "\u0000\u0000\u1313\u1314\u0007\f\u0000\u0000\u1314\u1315\u0007\n\u0000"+ - "\u0000\u1315\u1316\u0007\u0018\u0000\u0000\u1316\u1317\u0007\n\u0000\u0000"+ - "\u1317\u1318\u0007\u0007\u0000\u0000\u1318\u1319\u0007\f\u0000\u0000\u1319"+ - "\u131a\u0007\t\u0000\u0000\u131a\u03b0\u0001\u0000\u0000\u0000\u131b\u131c"+ - "\u0007\u0013\u0000\u0000\u131c\u131d\u0007\u001b\u0000\u0000\u131d\u131e"+ - "\u0007\n\u0000\u0000\u131e\u131f\u0007\r\u0000\u0000\u131f\u1320\u0007"+ - "\r\u0000\u0000\u1320\u1321\u0007\u0011\u0000\u0000\u1321\u1322\u0007\f"+ - "\u0000\u0000\u1322\u1323\u0007\u0011\u0000\u0000\u1323\u1324\u0007\u0007"+ - "\u0000\u0000\u1324\u1325\u0007\u0017\u0000\u0000\u1325\u03b2\u0001\u0000"+ - "\u0000\u0000\u1326\u1327\u0007\u000e\u0000\u0000\u1327\u1328\u0007\u0013"+ - "\u0000\u0000\u1328\u1329\u0007\u0007\u0000\u0000\u1329\u132a\u0007\u0019"+ - "\u0000\u0000\u132a\u132b\u0007\u0006\u0000\u0000\u132b\u132c\u0007\u0011"+ - "\u0000\u0000\u132c\u132d\u0007\u000e\u0000\u0000\u132d\u132e\u0007\u0010"+ - "\u0000\u0000\u132e\u03b4\u0001\u0000\u0000\u0000\u132f\u1330\u0007\t\u0000"+ - "\u0000\u1330\u1331\u0007\u0015\u0000\u0000\u1331\u1332\u0007\u0011\u0000"+ - "\u0000\u1332\u1333\u0007\u0018\u0000\u0000\u1333\u03b6\u0001\u0000\u0000"+ - "\u0000\u1334\u1335\u0007\u0006\u0000\u0000\u1335\u1336\u0007\u0013\u0000"+ - "\u0000\u1336\u1337\u0007\u000e\u0000\u0000\u1337\u1338\u0007\u0015\u0000"+ - "\u0000\u1338\u1339\u0007\n\u0000\u0000\u1339\u133a\u0007\f\u0000\u0000"+ - "\u133a\u03b8\u0001\u0000\u0000\u0000\u133b\u133c\u0007\u0010\u0000\u0000"+ - "\u133c\u133d\u0007\u0011\u0000\u0000\u133d\u133e\u0007\n\u0000\u0000\u133e"+ - "\u133f\u0007\t\u0000\u0000\u133f\u03ba\u0001\u0000\u0000\u0000\u1340\u1341"+ - "\u0007\r\u0000\u0000\u1341\u1342\u0007\u0013\u0000\u0000\u1342\u1343\u0007"+ - "\u0006\u0000\u0000\u1343\u1344\u0007\u0006\u0000\u0000\u1344\u1345\u0007"+ - "\u0016\u0000\u0000\u1345\u1346\u0007\u0018\u0000\u0000\u1346\u03bc\u0001"+ - "\u0000\u0000\u0000\u1347\u1348\u0007\u000e\u0000\u0000\u1348\u1349\u0007"+ - "\u0016\u0000\u0000\u1349\u134a\u0007\u0012\u0000\u0000\u134a\u134b\u0007"+ - "\n\u0000\u0000\u134b\u03be\u0001\u0000\u0000\u0000\u134c\u134d\u0007\u0017"+ - "\u0000\u0000\u134d\u134e\u0007\r\u0000\u0000\u134e\u134f\u0007\u0013\u0000"+ - "\u0000\u134f\u1350\u0007\u0016\u0000\u0000\u1350\u1351\u0007\u0018\u0000"+ - "\u0000\u1351\u1352\u0007\u0011\u0000\u0000\u1352\u1353\u0007\u0007\u0000"+ - "\u0000\u1353\u1354\u0007\u0017\u0000\u0000\u1354\u03c0\u0001\u0000\u0000"+ - "\u0000\u1355\u1356\u0007\t\u0000\u0000\u1356\u1357\u0007\n\u0000\u0000"+ - "\u1357\u1358\u0007\u0010\u0000\u0000\u1358\u1359\u0007\t\u0000\u0000\u1359"+ - "\u03c2\u0001\u0000\u0000\u0000\u135a\u135b\u0007\u0010\u0000\u0000\u135b"+ - "\u135c\u0007\u0005\u0000\u0000\u135c\u135d\u0007\u0012\u0000\u0000\u135d"+ - "\u135e\u0007\u0006\u0000\u0000\u135e\u135f\u0007\n\u0000\u0000\u135f\u1360"+ - "\u0007\t\u0000\u0000\u1360\u1361\u0007\u0005\u0000\u0000\u1361\u1362\u0007"+ - "\u000f\u0000\u0000\u1362\u1363\u0007\u0018\u0000\u0000\u1363\u1364\u0007"+ - "\u0006\u0000\u0000\u1364\u1365\u0007\n\u0000\u0000\u1365\u03c4\u0001\u0000"+ - "\u0000\u0000\u1366\u1367\u0007\u0013\u0000\u0000\u1367\u1368\u0007\r\u0000"+ - "\u0000\u1368\u1369\u0007\f\u0000\u0000\u1369\u136a\u0007\u0011\u0000\u0000"+ - "\u136a\u136b\u0007\u0007\u0000\u0000\u136b\u136c\u0007\u0005\u0000\u0000"+ - "\u136c\u136d\u0007\u0006\u0000\u0000\u136d\u136e\u0007\u0011\u0000\u0000"+ - "\u136e\u136f\u0007\u0010\u0000\u0000\u136f\u1370\u0007\b\u0000\u0000\u1370"+ - "\u03c6\u0001\u0000\u0000\u0000\u1371\u1372\u0007\u001a\u0000\u0000\u1372"+ - "\u1373\u0007\u000f\u0000\u0000\u1373\u1374\u0007\u0006\u0000\u0000\u1374"+ - "\u1375\u0007\u0010\u0000\u0000\u1375\u1376\u0007\u0005\u0000\u0000\u1376"+ - "\u1377\u0007\u0012\u0000\u0000\u1377\u1378\u0007\u0006\u0000\u0000\u1378"+ - "\u1379\u0007\n\u0000\u0000\u1379\u03c8\u0001\u0000\u0000\u0000\u137a\u137b"+ - "\u0007\u000e\u0000\u0000\u137b\u137c\u0007\u0013\u0000\u0000\u137c\u137d"+ - "\u0007\u0006\u0000\u0000\u137d\u137e\u0007\u0016\u0000\u0000\u137e\u137f"+ - "\u0007\u000f\u0000\u0000\u137f\u1380\u0007\u0007\u0000\u0000\u1380\u1381"+ - "\u0007\t\u0000\u0000\u1381\u03ca\u0001\u0000\u0000\u0000\u1382\u1383\u0007"+ - "\u001a\u0000\u0000\u1383\u1384\u0007\u000f\u0000\u0000\u1384\u1385\u0007"+ - "\u0006\u0000\u0000\u1385\u1386\u0007\u0007\u0000\u0000\u1386\u1387\u0007"+ - "\u0005\u0000\u0000\u1387\u1388\u0007\u000f\u0000\u0000\u1388\u1389\u0007"+ - "\n\u0000\u0000\u1389\u138a\u0007\t\u0000\u0000\u138a\u138b\u0007\u0018"+ - "\u0000\u0000\u138b\u138c\u0007\u0005\u0000\u0000\u138c\u138d\u0007\u000e"+ - "\u0000\u0000\u138d\u138e\u0007\n\u0000\u0000\u138e\u138f\u0007\t\u0000"+ - "\u0000\u138f\u03cc\u0001\u0000\u0000\u0000\u1390\u1391\u0007\r\u0000\u0000"+ - "\u1391\u1392\u0007\u0013\u0000\u0000\u1392\u1393\u0007\u001c\u0000\u0000"+ - "\u1393\u1394\u0007\u0010\u0000\u0000\u1394\u1395\u0007\b\u0000\u0000\u1395"+ - "\u1396\u0007\u0018\u0000\u0000\u1396\u1397\u0007\n\u0000\u0000\u1397\u03ce"+ - "\u0001\u0000\u0000\u0000\u1398\u1399\u0007\u0007\u0000\u0000\u1399\u139a"+ - "\u0007\u0013\u0000\u0000\u139a\u139b\u0007\r\u0000\u0000\u139b\u139c\u0007"+ - "\u000f\u0000\u0000\u139c\u139d\u0007\u0005\u0000\u0000\u139d\u139e\u0007"+ - "\u0006\u0000\u0000\u139e\u139f\u0007\u0011\u0000\u0000\u139f\u13a0\u0007"+ - "\u000b\u0000\u0000\u13a0\u13a1\u0007\n\u0000\u0000\u13a1\u13a2\u0007\f"+ - "\u0000\u0000\u13a2\u03d0\u0001\u0000\u0000\u0000\u13a3\u13a4\u0007\u001c"+ - "\u0000\u0000\u13a4\u13a5\u0007\u0011\u0000\u0000\u13a5\u13a6\u0007\u0010"+ - "\u0000\u0000\u13a6\u13a7\u0007\u0014\u0000\u0000\u13a7\u13a8\u0007\u0011"+ - "\u0000\u0000\u13a8\u13a9\u0007\u0007\u0000\u0000\u13a9\u03d2\u0001\u0000"+ - "\u0000\u0000\u13aa\u13ab\u0007\u0019\u0000\u0000\u13ab\u13ac\u0007\u0011"+ - "\u0000\u0000\u13ac\u13ad\u0007\u0006\u0000\u0000\u13ad\u13ae\u0007\u0010"+ - "\u0000\u0000\u13ae\u13af\u0007\n\u0000\u0000\u13af\u13b0\u0007\r\u0000"+ - "\u0000\u13b0\u03d4\u0001\u0000\u0000\u0000\u13b1\u13b2\u0007\u0017\u0000"+ - "\u0000\u13b2\u13b3\u0007\r\u0000\u0000\u13b3\u13b4\u0007\u0013\u0000\u0000"+ - "\u13b4\u13b5\u0007\u0016\u0000\u0000\u13b5\u13b6\u0007\u0018\u0000\u0000"+ - "\u13b6\u13b7\u0007\t\u0000\u0000\u13b7\u03d6\u0001\u0000\u0000\u0000\u13b8"+ - "\u13b9\u0007\u0013\u0000\u0000\u13b9\u13ba\u0007\u0010\u0000\u0000\u13ba"+ - "\u13bb\u0007\u0014\u0000\u0000\u13bb\u13bc\u0007\n\u0000\u0000\u13bc\u13bd"+ - "\u0007\r\u0000\u0000\u13bd\u13be\u0007\t\u0000\u0000\u13be\u03d8\u0001"+ - "\u0000\u0000\u0000\u13bf\u13c0\u0007\u0007\u0000\u0000\u13c0\u13c1\u0007"+ - "\u0019\u0000\u0000\u13c1\u13c2\u0007\u000e\u0000\u0000\u13c2\u03da\u0001"+ - "\u0000\u0000\u0000\u13c3\u13c4\u0007\u0007\u0000\u0000\u13c4\u13c5\u0007"+ - "\u0019\u0000\u0000\u13c5\u13c6\u0007\f\u0000\u0000\u13c6\u03dc\u0001\u0000"+ - "\u0000\u0000\u13c7\u13c8\u0007\u0007\u0000\u0000\u13c8\u13c9\u0007\u0019"+ - "\u0000\u0000\u13c9\u13ca\u0007\u0015\u0000\u0000\u13ca\u13cb\u0007\u000e"+ - "\u0000\u0000\u13cb\u03de\u0001\u0000\u0000\u0000\u13cc\u13cd\u0007\u0007"+ - "\u0000\u0000\u13cd\u13ce\u0007\u0019\u0000\u0000\u13ce\u13cf\u0007\u0015"+ - "\u0000\u0000\u13cf\u13d0\u0007\f\u0000\u0000\u13d0\u03e0\u0001\u0000\u0000"+ - "\u0000\u13d1\u13d2\u0007\u0016\u0000\u0000\u13d2\u13d3\u0007\n\u0000\u0000"+ - "\u13d3\u13d4\u0007\t\u0000\u0000\u13d4\u13d5\u0007\u000e\u0000\u0000\u13d5"+ - "\u13d6\u0007\u0005\u0000\u0000\u13d6\u13d7\u0007\u0018\u0000\u0000\u13d7"+ - "\u13d8\u0007\n\u0000\u0000\u13d8\u03e2\u0001\u0000\u0000\u0000\u13d9\u13da"+ - "\u0007\u001b\u0000\u0000\u13da\u13db\u0007\u0011\u0000\u0000\u13db\u13dc"+ - "\u0007\n\u0000\u0000\u13dc\u13dd\u0007\u001c\u0000\u0000\u13dd\u13de\u0007"+ - "\t\u0000\u0000\u13de\u03e4\u0001\u0000\u0000\u0000\u13df\u13e0\u0007\u0007"+ - "\u0000\u0000\u13e0\u13e1\u0007\u0013\u0000\u0000\u13e1\u13e2\u0007\r\u0000"+ - "\u0000\u13e2\u13e3\u0007\u000f\u0000\u0000\u13e3\u13e4\u0007\u0005\u0000"+ - "\u0000\u13e4\u13e5\u0007\u0006\u0000\u0000\u13e5\u13e6\u0007\u0011\u0000"+ - "\u0000\u13e6\u13e7\u0007\u000b\u0000\u0000\u13e7\u13e8\u0007\n\u0000\u0000"+ - "\u13e8\u03e6\u0001\u0000\u0000\u0000\u13e9\u13ea\u0007\f\u0000\u0000\u13ea"+ - "\u13eb\u0007\u0016\u0000\u0000\u13eb\u13ec\u0007\u000f\u0000\u0000\u13ec"+ - "\u13ed\u0007\u0018\u0000\u0000\u13ed\u03e8\u0001\u0000\u0000\u0000\u13ee"+ - "\u13ef\u0007\u0018\u0000\u0000\u13ef\u13f0\u0007\r\u0000\u0000\u13f0\u13f1"+ - "\u0007\u0011\u0000\u0000\u13f1\u13f2\u0007\u0007\u0000\u0000\u13f2\u13f3"+ - "\u0007\u0010\u0000\u0000\u13f3\u13f4\u0005_\u0000\u0000\u13f4\u13f5\u0007"+ - "\t\u0000\u0000\u13f5\u13f6\u0007\u0010\u0000\u0000\u13f6\u13f7\u0007\r"+ - "\u0000\u0000\u13f7\u13f8\u0007\u0011\u0000\u0000\u13f8\u13f9\u0007\u000e"+ - "\u0000\u0000\u13f9\u13fa\u0007\u0010\u0000\u0000\u13fa\u13fb\u0005_\u0000"+ - "\u0000\u13fb\u13fc\u0007\u0018\u0000\u0000\u13fc\u13fd\u0007\u0005\u0000"+ - "\u0000\u13fd\u13fe\u0007\r\u0000\u0000\u13fe\u13ff\u0007\u0005\u0000\u0000"+ - "\u13ff\u1400\u0007\u000f\u0000\u0000\u1400\u1401\u0007\t\u0000\u0000\u1401"+ - "\u03ea\u0001\u0000\u0000\u0000\u1402\u1403\u0007\u001b\u0000\u0000\u1403"+ - "\u1404\u0007\u0005\u0000\u0000\u1404\u1405\u0007\r\u0000\u0000\u1405\u1406"+ - "\u0007\u0011\u0000\u0000\u1406\u1407\u0007\u0005\u0000\u0000\u1407\u1408"+ - "\u0007\u0012\u0000\u0000\u1408\u1409\u0007\u0006\u0000\u0000\u1409\u140a"+ - "\u0007\n\u0000\u0000\u140a\u140b\u0005_\u0000\u0000\u140b\u140c\u0007"+ - "\u000e\u0000\u0000\u140c\u140d\u0007\u0013\u0000\u0000\u140d\u140e\u0007"+ - "\u0007\u0000\u0000\u140e\u140f\u0007\u0019\u0000\u0000\u140f\u1410\u0007"+ - "\u0006\u0000\u0000\u1410\u1411\u0007\u0011\u0000\u0000\u1411\u1412\u0007"+ - "\u000e\u0000\u0000\u1412\u1413\u0007\u0010\u0000\u0000\u1413\u03ec\u0001"+ - "\u0000\u0000\u0000\u1414\u1415\u0007\n\u0000\u0000\u1415\u1416\u0007\r"+ - "\u0000\u0000\u1416\u1417\u0007\r\u0000\u0000\u1417\u1418\u0007\u0013\u0000"+ - "\u0000\u1418\u1419\u0007\r\u0000\u0000\u1419\u03ee\u0001\u0000\u0000\u0000"+ - "\u141a\u141b\u0007\u0016\u0000\u0000\u141b\u141c\u0007\t\u0000\u0000\u141c"+ - "\u141d\u0007\n\u0000\u0000\u141d\u141e\u0005_\u0000\u0000\u141e\u141f"+ - "\u0007\u001b\u0000\u0000\u141f\u1420\u0007\u0005\u0000\u0000\u1420\u1421"+ - "\u0007\r\u0000\u0000\u1421\u1422\u0007\u0011\u0000\u0000\u1422\u1423\u0007"+ - "\u0005\u0000\u0000\u1423\u1424\u0007\u0012\u0000\u0000\u1424\u1425\u0007"+ - "\u0006\u0000\u0000\u1425\u1426\u0007\n\u0000\u0000\u1426\u03f0\u0001\u0000"+ - "\u0000\u0000\u1427\u1428\u0007\u0016\u0000\u0000\u1428\u1429\u0007\t\u0000"+ - "\u0000\u1429\u142a\u0007\n\u0000\u0000\u142a\u142b\u0005_\u0000\u0000"+ - "\u142b\u142c\u0007\u000e\u0000\u0000\u142c\u142d\u0007\u0013\u0000\u0000"+ - "\u142d\u142e\u0007\u0006\u0000\u0000\u142e\u142f\u0007\u0016\u0000\u0000"+ - "\u142f\u1430\u0007\u000f\u0000\u0000\u1430\u1431\u0007\u0007\u0000\u0000"+ - "\u1431\u03f2\u0001\u0000\u0000\u0000\u1432\u1433\u0007\u0005\u0000\u0000"+ - "\u1433\u1434\u0007\u0006\u0000\u0000\u1434\u1435\u0007\u0011\u0000\u0000"+ - "\u1435\u1436\u0007\u0005\u0000\u0000\u1436\u1437\u0007\t\u0000\u0000\u1437"+ - "\u03f4\u0001\u0000\u0000\u0000\u1438\u1439\u0007\u000e\u0000\u0000\u1439"+ - "\u143a\u0007\u0013\u0000\u0000\u143a\u143b\u0007\u0007\u0000\u0000\u143b"+ - "\u143c\u0007\t\u0000\u0000\u143c\u143d\u0007\u0010\u0000\u0000\u143d\u143e"+ - "\u0007\u0005\u0000\u0000\u143e\u143f\u0007\u0007\u0000\u0000\u143f\u1440"+ - "\u0007\u0010\u0000\u0000\u1440\u03f6\u0001\u0000\u0000\u0000\u1441\u1442"+ - "\u0007\u0018\u0000\u0000\u1442\u1443\u0007\n\u0000\u0000\u1443\u1444\u0007"+ - "\r\u0000\u0000\u1444\u1445\u0007\u0019\u0000\u0000\u1445\u1446\u0007\u0013"+ - "\u0000\u0000\u1446\u1447\u0007\r\u0000\u0000\u1447\u1448\u0007\u000f\u0000"+ - "\u0000\u1448\u03f8\u0001\u0000\u0000\u0000\u1449\u144a\u0007\u0017\u0000"+ - "\u0000\u144a\u144b\u0007\n\u0000\u0000\u144b\u144c\u0007\u0010\u0000\u0000"+ - "\u144c\u03fa\u0001\u0000\u0000\u0000\u144d\u144e\u0007\f\u0000\u0000\u144e"+ - "\u144f\u0007\u0011\u0000\u0000\u144f\u1450\u0007\u0005\u0000\u0000\u1450"+ - "\u1451\u0007\u0017\u0000\u0000\u1451\u1452\u0007\u0007\u0000\u0000\u1452"+ - "\u1453\u0007\u0013\u0000\u0000\u1453\u1454\u0007\t\u0000\u0000\u1454\u1455"+ - "\u0007\u0010\u0000\u0000\u1455\u1456\u0007\u0011\u0000\u0000\u1456\u1457"+ - "\u0007\u000e\u0000\u0000\u1457\u1458\u0007\t\u0000\u0000\u1458\u03fc\u0001"+ - "\u0000\u0000\u0000\u1459\u145a\u0007\t\u0000\u0000\u145a\u145b\u0007\u0010"+ - "\u0000\u0000\u145b\u145c\u0007\u0005\u0000\u0000\u145c\u145d\u0007\u000e"+ - "\u0000\u0000\u145d\u145e\u0007\u0015\u0000\u0000\u145e\u145f\u0007\n\u0000"+ - "\u0000\u145f\u1460\u0007\f\u0000\u0000\u1460\u03fe\u0001\u0000\u0000\u0000"+ - "\u1461\u1462\u0007\n\u0000\u0000\u1462\u1463\u0007\u0006\u0000\u0000\u1463"+ - "\u1464\u0007\t\u0000\u0000\u1464\u1465\u0007\u0011\u0000\u0000\u1465\u1466"+ - "\u0007\u0019\u0000\u0000\u1466\u0400\u0001\u0000\u0000\u0000\u1467\u1468"+ - "\u0007\u001c\u0000\u0000\u1468\u1469\u0007\u0014\u0000\u0000\u1469\u146a"+ - "\u0007\u0011\u0000\u0000\u146a\u146b\u0007\u0006\u0000\u0000\u146b\u146c"+ - "\u0007\n\u0000\u0000\u146c\u0402\u0001\u0000\u0000\u0000\u146d\u146e\u0007"+ - "\r\u0000\u0000\u146e\u146f\u0007\n\u0000\u0000\u146f\u1470\u0007\u001b"+ - "\u0000\u0000\u1470\u1471\u0007\n\u0000\u0000\u1471\u1472\u0007\r\u0000"+ - "\u0000\u1472\u1473\u0007\t\u0000\u0000\u1473\u1474\u0007\n\u0000\u0000"+ - "\u1474\u0404\u0001\u0000\u0000\u0000\u1475\u1476\u0007\u0019\u0000\u0000"+ - "\u1476\u1477\u0007\u0013\u0000\u0000\u1477\u1478\u0007\r\u0000\u0000\u1478"+ - "\u1479\u0007\n\u0000\u0000\u1479\u147a\u0007\u0005\u0000\u0000\u147a\u147b"+ - "\u0007\u000e\u0000\u0000\u147b\u147c\u0007\u0014\u0000\u0000\u147c\u0406"+ - "\u0001\u0000\u0000\u0000\u147d\u147e\u0007\t\u0000\u0000\u147e\u147f\u0007"+ - "\u0006\u0000\u0000\u147f\u1480\u0007\u0011\u0000\u0000\u1480\u1481\u0007"+ - "\u000e\u0000\u0000\u1481\u1482\u0007\n\u0000\u0000\u1482\u0408\u0001\u0000"+ - "\u0000\u0000\u1483\u1484\u0007\n\u0000\u0000\u1484\u1485\u0007\u001a\u0000"+ - "\u0000\u1485\u1486\u0007\u0011\u0000\u0000\u1486\u1487\u0007\u0010\u0000"+ - "\u0000\u1487\u040a\u0001\u0000\u0000\u0000\u1488\u1489\u0007\r\u0000\u0000"+ - "\u1489\u148a\u0007\n\u0000\u0000\u148a\u148b\u0007\u0010\u0000\u0000\u148b"+ - "\u148c\u0007\u0016\u0000\u0000\u148c\u148d\u0007\r\u0000\u0000\u148d\u148e"+ - "\u0007\u0007\u0000\u0000\u148e\u040c\u0001\u0000\u0000\u0000\u148f\u1490"+ - "\u0007\u001d\u0000\u0000\u1490\u1491\u0007\u0016\u0000\u0000\u1491\u1492"+ - "\u0007\n\u0000\u0000\u1492\u1493\u0007\r\u0000\u0000\u1493\u1494\u0007"+ - "\b\u0000\u0000\u1494\u040e\u0001\u0000\u0000\u0000\u1495\u1496\u0007\r"+ - "\u0000\u0000\u1496\u1497\u0007\u0005\u0000\u0000\u1497\u1498\u0007\u0011"+ - "\u0000\u0000\u1498\u1499\u0007\t\u0000\u0000\u1499\u149a\u0007\n\u0000"+ - "\u0000\u149a\u0410\u0001\u0000\u0000\u0000\u149b\u149c\u0007\t\u0000\u0000"+ - "\u149c\u149d\u0007\u001d\u0000\u0000\u149d\u149e\u0007\u0006\u0000\u0000"+ - "\u149e\u149f\u0007\t\u0000\u0000\u149f\u14a0\u0007\u0010\u0000\u0000\u14a0"+ - "\u14a1\u0007\u0005\u0000\u0000\u14a1\u14a2\u0007\u0010\u0000\u0000\u14a2"+ - "\u14a3\u0007\n\u0000\u0000\u14a3\u0412\u0001\u0000\u0000\u0000\u14a4\u14a5"+ - "\u0007\f\u0000\u0000\u14a5\u14a6\u0007\n\u0000\u0000\u14a6\u14a7\u0007"+ - "\u0012\u0000\u0000\u14a7\u14a8\u0007\u0016\u0000\u0000\u14a8\u14a9\u0007"+ - "\u0017\u0000\u0000\u14a9\u0414\u0001\u0000\u0000\u0000\u14aa\u14ab\u0007"+ - "\u0006\u0000\u0000\u14ab\u14ac\u0007\u0013\u0000\u0000\u14ac\u14ad\u0007"+ - "\u0017\u0000\u0000\u14ad\u0416\u0001\u0000\u0000\u0000\u14ae\u14af\u0007"+ - "\u0011\u0000\u0000\u14af\u14b0\u0007\u0007\u0000\u0000\u14b0\u14b1\u0007"+ - "\u0019\u0000\u0000\u14b1\u14b2\u0007\u0013\u0000\u0000\u14b2\u0418\u0001"+ - "\u0000\u0000\u0000\u14b3\u14b4\u0007\u0007\u0000\u0000\u14b4\u14b5\u0007"+ - "\u0013\u0000\u0000\u14b5\u14b6\u0007\u0010\u0000\u0000\u14b6\u14b7\u0007"+ - "\u0011\u0000\u0000\u14b7\u14b8\u0007\u000e\u0000\u0000\u14b8\u14b9\u0007"+ - "\n\u0000\u0000\u14b9\u041a\u0001\u0000\u0000\u0000\u14ba\u14bb\u0007\u001c"+ - "\u0000\u0000\u14bb\u14bc\u0007\u0005\u0000\u0000\u14bc\u14bd\u0007\r\u0000"+ - "\u0000\u14bd\u14be\u0007\u0007\u0000\u0000\u14be\u14bf\u0007\u0011\u0000"+ - "\u0000\u14bf\u14c0\u0007\u0007\u0000\u0000\u14c0\u14c1\u0007\u0017\u0000"+ - "\u0000\u14c1\u041c\u0001\u0000\u0000\u0000\u14c2\u14c3\u0007\n\u0000\u0000"+ - "\u14c3\u14c4\u0007\u001a\u0000\u0000\u14c4\u14c5\u0007\u000e\u0000\u0000"+ - "\u14c5\u14c6\u0007\n\u0000\u0000\u14c6\u14c7\u0007\u0018\u0000\u0000\u14c7"+ - "\u14c8\u0007\u0010\u0000\u0000\u14c8\u14c9\u0007\u0011\u0000\u0000\u14c9"+ - "\u14ca\u0007\u0013\u0000\u0000\u14ca\u14cb\u0007\u0007\u0000\u0000\u14cb"+ - "\u041e\u0001\u0000\u0000\u0000\u14cc\u14cd\u0007\u0005\u0000\u0000\u14cd"+ - "\u14ce\u0007\t\u0000\u0000\u14ce\u14cf\u0007\t\u0000\u0000\u14cf\u14d0"+ - "\u0007\n\u0000\u0000\u14d0\u14d1\u0007\r\u0000\u0000\u14d1\u14d2\u0007"+ - "\u0010\u0000\u0000\u14d2\u0420\u0001\u0000\u0000\u0000\u14d3\u14d4\u0007"+ - "\u0006\u0000\u0000\u14d4\u14d5\u0007\u0013\u0000\u0000\u14d5\u14d6\u0007"+ - "\u0013\u0000\u0000\u14d6\u14d7\u0007\u0018\u0000\u0000\u14d7\u0422\u0001"+ - "\u0000\u0000\u0000\u14d8\u14d9\u0007\u0013\u0000\u0000\u14d9\u14da\u0007"+ - "\u0018\u0000\u0000\u14da\u14db\u0007\n\u0000\u0000\u14db\u14dc\u0007\u0007"+ - "\u0000\u0000\u14dc\u0424\u0001\u0000\u0000\u0000\u14dd\u14de\u0007\u0005"+ - "\u0000\u0000\u14de\u14df\u0007\u0012\u0000\u0000\u14df\u14e0\u0007\t\u0000"+ - "\u0000\u14e0\u0426\u0001\u0000\u0000\u0000\u14e1\u14e2\u0007\u000e\u0000"+ - "\u0000\u14e2\u14e3\u0007\u0012\u0000\u0000\u14e3\u14e4\u0007\r\u0000\u0000"+ - "\u14e4\u14e5\u0007\u0010\u0000\u0000\u14e5\u0428\u0001\u0000\u0000\u0000"+ - "\u14e6\u14e7\u0007\u000e\u0000\u0000\u14e7\u14e8\u0007\n\u0000\u0000\u14e8"+ - "\u14e9\u0007\u0011\u0000\u0000\u14e9\u14ea\u0007\u0006\u0000\u0000\u14ea"+ - "\u042a\u0001\u0000\u0000\u0000\u14eb\u14ec\u0007\u000e\u0000\u0000\u14ec"+ - "\u14ed\u0007\n\u0000\u0000\u14ed\u14ee\u0007\u0011\u0000\u0000\u14ee\u14ef"+ - "\u0007\u0006\u0000\u0000\u14ef\u14f0\u0007\u0011\u0000\u0000\u14f0\u14f1"+ - "\u0007\u0007\u0000\u0000\u14f1\u14f2\u0007\u0017\u0000\u0000\u14f2\u042c"+ - "\u0001\u0000\u0000\u0000\u14f3\u14f4\u0007\f\u0000\u0000\u14f4\u14f5\u0007"+ - "\n\u0000\u0000\u14f5\u14f6\u0007\u0017\u0000\u0000\u14f6\u14f7\u0007\r"+ - "\u0000\u0000\u14f7\u14f8\u0007\n\u0000\u0000\u14f8\u14f9\u0007\n\u0000"+ - "\u0000\u14f9\u14fa\u0007\t\u0000\u0000\u14fa\u042e\u0001\u0000\u0000\u0000"+ - "\u14fb\u14fc\u0007\f\u0000\u0000\u14fc\u14fd\u0007\u0011\u0000\u0000\u14fd"+ - "\u14fe\u0007\u001b\u0000\u0000\u14fe\u0430\u0001\u0000\u0000\u0000\u14ff"+ - "\u1500\u0007\n\u0000\u0000\u1500\u1501\u0007\u001a\u0000\u0000\u1501\u1502"+ - "\u0007\u0018\u0000\u0000\u1502\u0432\u0001\u0000\u0000\u0000\u1503\u1504"+ - "\u0007\u0019\u0000\u0000\u1504\u1505\u0007\u0005\u0000\u0000\u1505\u1506"+ - "\u0007\u000e\u0000\u0000\u1506\u1507\u0007\u0010\u0000\u0000\u1507\u1508"+ - "\u0007\u0013\u0000\u0000\u1508\u1509\u0007\r\u0000\u0000\u1509\u150a\u0007"+ - "\u0011\u0000\u0000\u150a\u150b\u0007\u0005\u0000\u0000\u150b\u150c\u0007"+ - "\u0006\u0000\u0000\u150c\u0434\u0001\u0000\u0000\u0000\u150d\u150e\u0007"+ - "\u0019\u0000\u0000\u150e\u150f\u0007\u0006\u0000\u0000\u150f\u1510\u0007"+ - "\u0013\u0000\u0000\u1510\u1511\u0007\u0013\u0000\u0000\u1511\u1512\u0007"+ - "\r\u0000\u0000\u1512\u0436\u0001\u0000\u0000\u0000\u1513\u1514\u0007\u0017"+ - "\u0000\u0000\u1514\u1515\u0007\u000e\u0000\u0000\u1515\u1516\u0007\f\u0000"+ - "\u0000\u1516\u0438\u0001\u0000\u0000\u0000\u1517\u1518\u0007\u0006\u0000"+ - "\u0000\u1518\u1519\u0007\u000e\u0000\u0000\u1519\u151a\u0007\u000f\u0000"+ - "\u0000\u151a\u043a\u0001\u0000\u0000\u0000\u151b\u151c\u0007\u0006\u0000"+ - "\u0000\u151c\u151d\u0007\u0007\u0000\u0000\u151d\u043c\u0001\u0000\u0000"+ - "\u0000\u151e\u151f\u0007\u0006\u0000\u0000\u151f\u1520\u0007\u0013\u0000"+ - "\u0000\u1520\u1521\u0007\u0017\u0000\u0000\u1521\u1522\u00051\u0000\u0000"+ - "\u1522\u1523\u00050\u0000\u0000\u1523\u043e\u0001\u0000\u0000\u0000\u1524"+ - "\u1525\u0007\u000f\u0000\u0000\u1525\u1526\u0007\u0011\u0000\u0000\u1526"+ - "\u1527\u0007\u0007\u0000\u0000\u1527\u1528\u0005_\u0000\u0000\u1528\u1529"+ - "\u0007\t\u0000\u0000\u1529\u152a\u0007\u000e\u0000\u0000\u152a\u152b\u0007"+ - "\u0005\u0000\u0000\u152b\u152c\u0007\u0006\u0000\u0000\u152c\u152d\u0007"+ - "\n\u0000\u0000\u152d\u0440\u0001\u0000\u0000\u0000\u152e\u152f\u0007\u000f"+ - "\u0000\u0000\u152f\u1530\u0007\u0013\u0000\u0000\u1530\u1531\u0007\f\u0000"+ - "\u0000\u1531\u0442\u0001\u0000\u0000\u0000\u1532\u1533\u0007\u0018\u0000"+ - "\u0000\u1533\u1534\u0007\u0011\u0000\u0000\u1534\u0444\u0001\u0000\u0000"+ - "\u0000\u1535\u1536\u0007\u0018\u0000\u0000\u1536\u1537\u0007\u0013\u0000"+ - "\u0000\u1537\u1538\u0007\u001c\u0000\u0000\u1538\u1539\u0007\n\u0000\u0000"+ - "\u1539\u153a\u0007\r\u0000\u0000\u153a\u0446\u0001\u0000\u0000\u0000\u153b"+ - "\u153c\u0007\r\u0000\u0000\u153c\u153d\u0007\u0005\u0000\u0000\u153d\u153e"+ - "\u0007\f\u0000\u0000\u153e\u153f\u0007\u0011\u0000\u0000\u153f\u1540\u0007"+ - "\u0005\u0000\u0000\u1540\u1541\u0007\u0007\u0000\u0000\u1541\u1542\u0007"+ - "\t\u0000\u0000\u1542\u0448\u0001\u0000\u0000\u0000\u1543\u1544\u0007\r"+ - "\u0000\u0000\u1544\u1545\u0007\u0013\u0000\u0000\u1545\u1546\u0007\u0016"+ - "\u0000\u0000\u1546\u1547\u0007\u0007\u0000\u0000\u1547\u1548\u0007\f\u0000"+ - "\u0000\u1548\u044a\u0001\u0000\u0000\u0000\u1549\u154a\u0007\t\u0000\u0000"+ - "\u154a\u154b\u0007\u000e\u0000\u0000\u154b\u154c\u0007\u0005\u0000\u0000"+ - "\u154c\u154d\u0007\u0006\u0000\u0000\u154d\u154e\u0007\n\u0000\u0000\u154e"+ - "\u044c\u0001\u0000\u0000\u0000\u154f\u1550\u0007\t\u0000\u0000\u1550\u1551"+ - "\u0007\u0011\u0000\u0000\u1551\u1552\u0007\u0017\u0000\u0000\u1552\u1553"+ - "\u0007\u0007\u0000\u0000\u1553\u044e\u0001\u0000\u0000\u0000\u1554\u1555"+ - "\u0007\t\u0000\u0000\u1555\u1556\u0007\u001d\u0000\u0000\u1556\u1557\u0007"+ - "\r\u0000\u0000\u1557\u1558\u0007\u0010\u0000\u0000\u1558\u0450\u0001\u0000"+ - "\u0000\u0000\u1559\u155a\u0007\u0010\u0000\u0000\u155a\u155b\u0007\r\u0000"+ - "\u0000\u155b\u155c\u0007\u0011\u0000\u0000\u155c\u155d\u0007\u000f\u0000"+ - "\u0000\u155d\u155e\u0005_\u0000\u0000\u155e\u155f\u0007\t\u0000\u0000"+ - "\u155f\u1560\u0007\u000e\u0000\u0000\u1560\u1561\u0007\u0005\u0000\u0000"+ - "\u1561\u1562\u0007\u0006\u0000\u0000\u1562\u1563\u0007\n\u0000\u0000\u1563"+ - "\u0452\u0001\u0000\u0000\u0000\u1564\u1565\u0007\u0010\u0000\u0000\u1565"+ - "\u1566\u0007\r\u0000\u0000\u1566\u1567\u0007\u0016\u0000\u0000\u1567\u1568"+ - "\u0007\u0007\u0000\u0000\u1568\u1569\u0007\u000e\u0000\u0000\u1569\u0454"+ - "\u0001\u0000\u0000\u0000\u156a\u156b\u0007\u001c\u0000\u0000\u156b\u156c"+ - "\u0007\u0011\u0000\u0000\u156c\u156d\u0007\f\u0000\u0000\u156d\u156e\u0007"+ - "\u0010\u0000\u0000\u156e\u156f\u0007\u0014\u0000\u0000\u156f\u1570\u0005"+ - "_\u0000\u0000\u1570\u1571\u0007\u0012\u0000\u0000\u1571\u1572\u0007\u0016"+ - "\u0000\u0000\u1572\u1573\u0007\u000e\u0000\u0000\u1573\u1574\u0007\u0015"+ - "\u0000\u0000\u1574\u1575\u0007\n\u0000\u0000\u1575\u1576\u0007\u0010\u0000"+ - "\u0000\u1576\u0456\u0001\u0000\u0000\u0000\u1577\u1578\u0007\r\u0000\u0000"+ - "\u1578\u1579\u0007\u0005\u0000\u0000\u1579\u157a\u0007\u0007\u0000\u0000"+ - "\u157a\u157b\u0007\f\u0000\u0000\u157b\u157c\u0007\u0013\u0000\u0000\u157c"+ - "\u157d\u0007\u000f\u0000\u0000\u157d\u0458\u0001\u0000\u0000\u0000\u157e"+ - "\u157f\u0007\t\u0000\u0000\u157f\u1580\u0007\n\u0000\u0000\u1580\u1581"+ - "\u0007\u0010\u0000\u0000\u1581\u1582\u0007\t\u0000\u0000\u1582\u1583\u0007"+ - "\n\u0000\u0000\u1583\u1584\u0007\n\u0000\u0000\u1584\u1585\u0007\f\u0000"+ - "\u0000\u1585\u045a\u0001\u0000\u0000\u0000\u1586\u1587\u0007\u0005\u0000"+ - "\u0000\u1587\u1588\u0007\u000e\u0000\u0000\u1588\u1589\u0007\u0013\u0000"+ - "\u0000\u1589\u158a\u0007\t\u0000\u0000\u158a\u045c\u0001\u0000\u0000\u0000"+ - "\u158b\u158c\u0007\u0005\u0000\u0000\u158c\u158d\u0007\u000e\u0000\u0000"+ - "\u158d\u158e\u0007\u0013\u0000\u0000\u158e\u158f\u0007\t\u0000\u0000\u158f"+ - "\u1590\u0007\f\u0000\u0000\u1590\u045e\u0001\u0000\u0000\u0000\u1591\u1592"+ - "\u0007\u0005\u0000\u0000\u1592\u1593\u0007\t\u0000\u0000\u1593\u1594\u0007"+ - "\u0011\u0000\u0000\u1594\u1595\u0007\u0007\u0000\u0000\u1595\u0460\u0001"+ - "\u0000\u0000\u0000\u1596\u1597\u0007\u0005\u0000\u0000\u1597\u1598\u0007"+ - "\t\u0000\u0000\u1598\u1599\u0007\u0011\u0000\u0000\u1599\u159a\u0007\u0007"+ - "\u0000\u0000\u159a\u159b\u0007\f\u0000\u0000\u159b\u0462\u0001\u0000\u0000"+ - "\u0000\u159c\u159d\u0007\u0005\u0000\u0000\u159d\u159e\u0007\u0010\u0000"+ - "\u0000\u159e\u159f\u0007\u0005\u0000\u0000\u159f\u15a0\u0007\u0007\u0000"+ - "\u0000\u15a0\u0464\u0001\u0000\u0000\u0000\u15a1\u15a2\u0007\u0005\u0000"+ - "\u0000\u15a2\u15a3\u0007\u0010\u0000\u0000\u15a3\u15a4\u0007\u0005\u0000"+ - "\u0000\u15a4\u15a5\u0007\u0007\u0000\u0000\u15a5\u15a6\u0007\f\u0000\u0000"+ - "\u15a6\u0466\u0001\u0000\u0000\u0000\u15a7\u15a8\u0007\u0005\u0000\u0000"+ - "\u15a8\u15a9\u0007\u0010\u0000\u0000\u15a9\u15aa\u0007\u0005\u0000\u0000"+ - "\u15aa\u15ab\u0007\u0007\u0000\u0000\u15ab\u15ac\u00052\u0000\u0000\u15ac"+ - "\u0468\u0001\u0000\u0000\u0000\u15ad\u15ae\u0007\u0005\u0000\u0000\u15ae"+ - "\u15af\u0007\u0010\u0000\u0000\u15af\u15b0\u0007\u0005\u0000\u0000\u15b0"+ - "\u15b1\u0007\u0007\u0000\u0000\u15b1\u15b2\u00052\u0000\u0000\u15b2\u15b3"+ - "\u0007\f\u0000\u0000\u15b3\u046a\u0001\u0000\u0000\u0000\u15b4\u15b5\u0007"+ - "\u000e\u0000\u0000\u15b5\u15b6\u0007\u0013\u0000\u0000\u15b6\u15b7\u0007"+ - "\t\u0000\u0000\u15b7\u046c\u0001\u0000\u0000\u0000\u15b8\u15b9\u0007\u000e"+ - "\u0000\u0000\u15b9\u15ba\u0007\u0013\u0000\u0000\u15ba\u15bb\u0007\t\u0000"+ - "\u0000\u15bb\u15bc\u0007\f\u0000\u0000\u15bc\u046e\u0001\u0000\u0000\u0000"+ - "\u15bd\u15be\u0007\u000e\u0000\u0000\u15be\u15bf\u0007\u0013\u0000\u0000"+ - "\u15bf\u15c0\u0007\u0010\u0000\u0000\u15c0\u0470\u0001\u0000\u0000\u0000"+ - "\u15c1\u15c2\u0007\u000e\u0000\u0000\u15c2\u15c3\u0007\u0013\u0000\u0000"+ - "\u15c3\u15c4\u0007\u0010\u0000\u0000\u15c4\u15c5\u0007\f\u0000\u0000\u15c5"+ - "\u0472\u0001\u0000\u0000\u0000\u15c6\u15c7\u0007\t\u0000\u0000\u15c7\u15c8"+ - "\u0007\u0011\u0000\u0000\u15c8\u15c9\u0007\u0007\u0000\u0000\u15c9\u0474"+ - "\u0001\u0000\u0000\u0000\u15ca\u15cb\u0007\t\u0000\u0000\u15cb\u15cc\u0007"+ - "\u0011\u0000\u0000\u15cc\u15cd\u0007\u0007\u0000\u0000\u15cd\u15ce\u0007"+ - "\f\u0000\u0000\u15ce\u0476\u0001\u0000\u0000\u0000\u15cf\u15d0\u0007\u0010"+ - "\u0000\u0000\u15d0\u15d1\u0007\u0005\u0000\u0000\u15d1\u15d2\u0007\u0007"+ - "\u0000\u0000\u15d2\u0478\u0001\u0000\u0000\u0000\u15d3\u15d4\u0007\u0010"+ - "\u0000\u0000\u15d4\u15d5\u0007\u0005\u0000\u0000\u15d5\u15d6\u0007\u0007"+ - "\u0000\u0000\u15d6\u15d7\u0007\f\u0000\u0000\u15d7\u047a\u0001\u0000\u0000"+ - "\u0000\u15d8\u15d9\u0007\t\u0000\u0000\u15d9\u15da\u0007\u0011\u0000\u0000"+ - "\u15da\u15db\u0007\u0007\u0000\u0000\u15db\u15dc\u0007\u0014\u0000\u0000"+ - "\u15dc\u047c\u0001\u0000\u0000\u0000\u15dd\u15de\u0007\u000e\u0000\u0000"+ - "\u15de\u15df\u0007\u0013\u0000\u0000\u15df\u15e0\u0007\t\u0000\u0000\u15e0"+ - "\u15e1\u0007\u0014\u0000\u0000\u15e1\u047e\u0001\u0000\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"+ - "\u0480\u0001\u0000\u0000\u0000\u15e7\u15e8\u0007\u0005\u0000\u0000\u15e8"+ - "\u15e9\u0007\t\u0000\u0000\u15e9\u15ea\u0007\u0011\u0000\u0000\u15ea\u15eb"+ - "\u0007\u0007\u0000\u0000\u15eb\u15ec\u0007\u0014\u0000\u0000\u15ec\u0482"+ - "\u0001\u0000\u0000\u0000\u15ed\u15ee\u0007\u0005\u0000\u0000\u15ee\u15ef"+ - "\u0007\u000e\u0000\u0000\u15ef\u15f0\u0007\u0013\u0000\u0000\u15f0\u15f1"+ - "\u0007\t\u0000\u0000\u15f1\u15f2\u0007\u0014\u0000\u0000\u15f2\u0484\u0001"+ - "\u0000\u0000\u0000\u15f3\u15f4\u0007\u0005\u0000\u0000\u15f4\u15f5\u0007"+ - "\u0010\u0000\u0000\u15f5\u15f6\u0007\u0005\u0000\u0000\u15f6\u15f7\u0007"+ - "\u0007\u0000\u0000\u15f7\u15f8\u0007\u0014\u0000\u0000\u15f8\u0486\u0001"+ - "\u0000\u0000\u0000\u15f9\u15fa\u0007\u0012\u0000\u0000\u15fa\u15fb\u0007"+ - "\u0011\u0000\u0000\u15fb\u15fc\u0007\u0010\u0000\u0000\u15fc\u15fd\u0005"+ - "_\u0000\u0000\u15fd\u15fe\u0007\u0006\u0000\u0000\u15fe\u15ff\u0007\n"+ - "\u0000\u0000\u15ff\u1600\u0007\u0007\u0000\u0000\u1600\u1601\u0007\u0017"+ - "\u0000\u0000\u1601\u1602\u0007\u0010\u0000\u0000\u1602\u1603\u0007\u0014"+ - "\u0000\u0000\u1603\u0488\u0001\u0000\u0000\u0000\u1604\u1605\u0007\u000e"+ - "\u0000\u0000\u1605\u1606\u0007\u0014\u0000\u0000\u1606\u1607\u0007\u0005"+ - "\u0000\u0000\u1607\u1608\u0007\r\u0000\u0000\u1608\u1609\u0005_\u0000"+ - "\u0000\u1609\u160a\u0007\u0006\u0000\u0000\u160a\u160b\u0007\n\u0000\u0000"+ - "\u160b\u160c\u0007\u0007\u0000\u0000\u160c\u160d\u0007\u0017\u0000\u0000"+ - "\u160d\u160e\u0007\u0010\u0000\u0000\u160e\u160f\u0007\u0014\u0000\u0000"+ - "\u160f\u048a\u0001\u0000\u0000\u0000\u1610\u1611\u0007\u000e\u0000\u0000"+ - "\u1611\u1612\u0007\u0014\u0000\u0000\u1612\u1613\u0007\u0005\u0000\u0000"+ - "\u1613\u1614\u0007\r\u0000\u0000\u1614\u1615\u0007\u0005\u0000\u0000\u1615"+ - "\u1616\u0007\u000e\u0000\u0000\u1616\u1617\u0007\u0010\u0000\u0000\u1617"+ - "\u1618\u0007\n\u0000\u0000\u1618\u1619\u0007\r\u0000\u0000\u1619\u161a"+ - "\u0005_\u0000\u0000\u161a\u161b\u0007\u0006\u0000\u0000\u161b\u161c\u0007"+ - "\n\u0000\u0000\u161c\u161d\u0007\u0007\u0000\u0000\u161d\u161e\u0007\u0017"+ - "\u0000\u0000\u161e\u161f\u0007\u0010\u0000\u0000\u161f\u1620\u0007\u0014"+ - "\u0000\u0000\u1620\u048c\u0001\u0000\u0000\u0000\u1621\u1622\u0007\u0006"+ - "\u0000\u0000\u1622\u1623\u0007\u0013\u0000\u0000\u1623\u1624\u0007\u001c"+ - "\u0000\u0000\u1624\u1625\u0007\n\u0000\u0000\u1625\u1626\u0007\r\u0000"+ - "\u0000\u1626\u048e\u0001\u0000\u0000\u0000\u1627\u1628\u0007\u0013\u0000"+ - "\u0000\u1628\u1629\u0007\u000e\u0000\u0000\u1629\u162a\u0007\u0010\u0000"+ - "\u0000\u162a\u162b\u0007\n\u0000\u0000\u162b\u162c\u0007\u0010\u0000\u0000"+ - "\u162c\u162d\u0005_\u0000\u0000\u162d\u162e\u0007\u0006\u0000\u0000\u162e"+ - "\u162f\u0007\n\u0000\u0000\u162f\u1630\u0007\u0007\u0000\u0000\u1630\u1631"+ - "\u0007\u0017\u0000\u0000\u1631\u1632\u0007\u0010\u0000\u0000\u1632\u1633"+ - "\u0007\u0014\u0000\u0000\u1633\u0490\u0001\u0000\u0000\u0000\u1634\u1635"+ - "\u0007\u0016\u0000\u0000\u1635\u1636\u0007\u0018\u0000\u0000\u1636\u1637"+ - "\u0007\u0018\u0000\u0000\u1637\u1638\u0007\n\u0000\u0000\u1638\u1639\u0007"+ - "\r\u0000\u0000\u1639\u0492\u0001\u0000\u0000\u0000\u163a\u163b\u0007\u0005"+ - "\u0000\u0000\u163b\u163c\u0007\t\u0000\u0000\u163c\u163d\u0007\u000e\u0000"+ - "\u0000\u163d\u163e\u0007\u0011\u0000\u0000\u163e\u163f\u0007\u0011\u0000"+ - "\u0000\u163f\u0494\u0001\u0000\u0000\u0000\u1640\u1641\u0007\u0012\u0000"+ - "\u0000\u1641\u1642\u0007\u0010\u0000\u0000\u1642\u1643\u0007\r\u0000\u0000"+ - "\u1643\u1644\u0007\u0011\u0000\u0000\u1644\u1645\u0007\u000f\u0000\u0000"+ - "\u1645\u0496\u0001\u0000\u0000\u0000\u1646\u1647\u0007\u000e\u0000\u0000"+ - "\u1647\u1648\u0007\u0014\u0000\u0000\u1648\u1649\u0007\r\u0000\u0000\u1649"+ - "\u0498\u0001\u0000\u0000\u0000\u164a\u164b\u0007\u000e\u0000\u0000\u164b"+ - "\u164c\u0007\u0013\u0000\u0000\u164c\u164d\u0007\u0007\u0000\u0000\u164d"+ - "\u164e\u0007\u000e\u0000\u0000\u164e\u164f\u0007\u0005\u0000\u0000\u164f"+ - "\u1650\u0007\u0010\u0000\u0000\u1650\u049a\u0001\u0000\u0000\u0000\u1651"+ - "\u1652\u0007\u000e\u0000\u0000\u1652\u1653\u0007\u0013\u0000\u0000\u1653"+ - "\u1654\u0007\u0007\u0000\u0000\u1654\u1655\u0007\u000e\u0000\u0000\u1655"+ - "\u1656\u0007\u0005\u0000\u0000\u1656\u1657\u0007\u0010\u0000\u0000\u1657"+ - "\u1658\u0005_\u0000\u0000\u1658\u1659\u0007\u001c\u0000\u0000\u1659\u165a"+ - "\u0007\t\u0000\u0000\u165a\u049c\u0001\u0000\u0000\u0000\u165b\u165c\u0007"+ - "\u0019\u0000\u0000\u165c\u165d\u0007\u0013\u0000\u0000\u165d\u165e\u0007"+ - "\r\u0000\u0000\u165e\u165f\u0007\u000f\u0000\u0000\u165f\u1660\u0007\u0005"+ - "\u0000\u0000\u1660\u1661\u0007\u0010\u0000\u0000\u1661\u049e\u0001\u0000"+ - "\u0000\u0000\u1662\u1663\u0007\u0011\u0000\u0000\u1663\u1664\u0007\u0007"+ - "\u0000\u0000\u1664\u1665\u0007\u0011\u0000\u0000\u1665\u1666\u0007\u0010"+ - "\u0000\u0000\u1666\u1667\u0007\u000e\u0000\u0000\u1667\u1668\u0007\u0005"+ - "\u0000\u0000\u1668\u1669\u0007\u0018\u0000\u0000\u1669\u04a0\u0001\u0000"+ - "\u0000\u0000\u166a\u166b\u0007\u0006\u0000\u0000\u166b\u166c\u0007\n\u0000"+ - "\u0000\u166c\u166d\u0007\u0007\u0000\u0000\u166d\u166e\u0007\u0017\u0000"+ - "\u0000\u166e\u166f\u0007\u0010\u0000\u0000\u166f\u1670\u0007\u0014\u0000"+ - "\u0000\u1670\u04a2\u0001\u0000\u0000\u0000\u1671\u1672\u0007\u0006\u0000"+ - "\u0000\u1672\u1673\u0007\u0018\u0000\u0000\u1673\u1674\u0007\u0005\u0000"+ - "\u0000\u1674\u1675\u0007\f\u0000\u0000\u1675\u04a4\u0001\u0000\u0000\u0000"+ - "\u1676\u1677\u0007\u0006\u0000\u0000\u1677\u1678\u0007\u0010\u0000\u0000"+ - "\u1678\u1679\u0007\r\u0000\u0000\u1679\u167a\u0007\u0011\u0000\u0000\u167a"+ - "\u167b\u0007\u000f\u0000\u0000\u167b\u04a6\u0001\u0000\u0000\u0000\u167c"+ - "\u167d\u0007\u000f\u0000\u0000\u167d\u167e\u0007\f\u0000\u0000\u167e\u167f"+ - "\u00055\u0000\u0000\u167f\u04a8\u0001\u0000\u0000\u0000\u1680\u1681\u0007"+ - "\u0018\u0000\u0000\u1681\u1682\u0007\u0005\u0000\u0000\u1682\u1683\u0007"+ - "\r\u0000\u0000\u1683\u1684\u0007\t\u0000\u0000\u1684\u1685\u0007\n\u0000"+ - "\u0000\u1685\u1686\u0005_\u0000\u0000\u1686\u1687\u0007\u0011\u0000\u0000"+ - "\u1687\u1688\u0007\f\u0000\u0000\u1688\u1689\u0007\n\u0000\u0000\u1689"+ - "\u168a\u0007\u0007\u0000\u0000\u168a\u168b\u0007\u0010\u0000\u0000\u168b"+ - "\u04aa\u0001\u0000\u0000\u0000\u168c\u168d\u0007\u0018\u0000\u0000\u168d"+ - "\u168e\u0007\u0017\u0000\u0000\u168e\u168f\u0005_\u0000\u0000\u168f\u1690"+ - "\u0007\u000e\u0000\u0000\u1690\u1691\u0007\u0006\u0000\u0000\u1691\u1692"+ - "\u0007\u0011\u0000\u0000\u1692\u1693\u0007\n\u0000\u0000\u1693\u1694\u0007"+ - "\u0007\u0000\u0000\u1694\u1695\u0007\u0010\u0000\u0000\u1695\u1696\u0005"+ - "_\u0000\u0000\u1696\u1697\u0007\n\u0000\u0000\u1697\u1698\u0007\u0007"+ - "\u0000\u0000\u1698\u1699\u0007\u000e\u0000\u0000\u1699\u169a\u0007\u0013"+ - "\u0000\u0000\u169a\u169b\u0007\f\u0000\u0000\u169b\u169c\u0007\u0011\u0000"+ - "\u0000\u169c\u169d\u0007\u0007\u0000\u0000\u169d\u169e\u0007\u0017\u0000"+ - "\u0000\u169e\u04ac\u0001\u0000\u0000\u0000\u169f\u16a0\u0007\u001d\u0000"+ - "\u0000\u16a0\u16a1\u0007\u0016\u0000\u0000\u16a1\u16a2\u0007\u0013\u0000"+ - "\u0000\u16a2\u16a3\u0007\u0010\u0000\u0000\u16a3\u16a4\u0007\n\u0000\u0000"+ - "\u16a4\u16a5\u0005_\u0000\u0000\u16a5\u16a6\u0007\u0011\u0000\u0000\u16a6"+ - "\u16a7\u0007\f\u0000\u0000\u16a7\u16a8\u0007\n\u0000\u0000\u16a8\u16a9"+ - "\u0007\u0007\u0000\u0000\u16a9\u16aa\u0007\u0010\u0000\u0000\u16aa\u04ae"+ - "\u0001\u0000\u0000\u0000\u16ab\u16ac\u0007\u001d\u0000\u0000\u16ac\u16ad"+ - "\u0007\u0016\u0000\u0000\u16ad\u16ae\u0007\u0013\u0000\u0000\u16ae\u16af"+ - "\u0007\u0010\u0000\u0000\u16af\u16b0\u0007\n\u0000\u0000\u16b0\u16b1\u0005"+ - "_\u0000\u0000\u16b1\u16b2\u0007\u0006\u0000\u0000\u16b2\u16b3\u0007\u0011"+ - "\u0000\u0000\u16b3\u16b4\u0007\u0010\u0000\u0000\u16b4\u16b5\u0007\n\u0000"+ - "\u0000\u16b5\u16b6\u0007\r\u0000\u0000\u16b6\u16b7\u0007\u0005\u0000\u0000"+ - "\u16b7\u16b8\u0007\u0006\u0000\u0000\u16b8\u04b0\u0001\u0000\u0000\u0000"+ - "\u16b9\u16ba\u0007\u001d\u0000\u0000\u16ba\u16bb\u0007\u0016\u0000\u0000"+ - "\u16bb\u16bc\u0007\u0013\u0000\u0000\u16bc\u16bd\u0007\u0010\u0000\u0000"+ - "\u16bd\u16be\u0007\n\u0000\u0000\u16be\u16bf\u0005_\u0000\u0000\u16bf"+ - "\u16c0\u0007\u0007\u0000\u0000\u16c0\u16c1\u0007\u0016\u0000\u0000\u16c1"+ - "\u16c2\u0007\u0006\u0000\u0000\u16c2\u16c3\u0007\u0006\u0000\u0000\u16c3"+ - "\u16c4\u0007\u0005\u0000\u0000\u16c4\u16c5\u0007\u0012\u0000\u0000\u16c5"+ - "\u16c6\u0007\u0006\u0000\u0000\u16c6\u16c7\u0007\n\u0000\u0000\u16c7\u04b2"+ - "\u0001\u0000\u0000\u0000\u16c8\u16c9\u0007\r\u0000\u0000\u16c9\u16ca\u0007"+ - "\n\u0000\u0000\u16ca\u16cb\u0007\u0017\u0000\u0000\u16cb\u16cc\u0007\n"+ - "\u0000\u0000\u16cc\u16cd\u0007\u001a\u0000\u0000\u16cd\u16ce\u0007\u0018"+ - "\u0000\u0000\u16ce\u16cf\u0005_\u0000\u0000\u16cf\u16d0\u0007\u000e\u0000"+ - "\u0000\u16d0\u16d1\u0007\u0013\u0000\u0000\u16d1\u16d2\u0007\u0016\u0000"+ - "\u0000\u16d2\u16d3\u0007\u0007\u0000\u0000\u16d3\u16d4\u0007\u0010\u0000"+ - "\u0000\u16d4\u04b4\u0001\u0000\u0000\u0000\u16d5\u16d6\u0007\r\u0000\u0000"+ - "\u16d6\u16d7\u0007\n\u0000\u0000\u16d7\u16d8\u0007\u0017\u0000\u0000\u16d8"+ - "\u16d9\u0007\n\u0000\u0000\u16d9\u16da\u0007\u001a\u0000\u0000\u16da\u16db"+ - "\u0007\u0018\u0000\u0000\u16db\u16dc\u0005_\u0000\u0000\u16dc\u16dd\u0007"+ - "\u0011\u0000\u0000\u16dd\u16de\u0007\u0007\u0000\u0000\u16de\u16df\u0007"+ - "\t\u0000\u0000\u16df\u16e0\u0007\u0010\u0000\u0000\u16e0\u16e1\u0007\r"+ - "\u0000\u0000\u16e1\u04b6\u0001\u0000\u0000\u0000\u16e2\u16e3\u0007\r\u0000"+ - "\u0000\u16e3\u16e4\u0007\n\u0000\u0000\u16e4\u16e5\u0007\u0017\u0000\u0000"+ - "\u16e5\u16e6\u0007\n\u0000\u0000\u16e6\u16e7\u0007\u001a\u0000\u0000\u16e7"+ - "\u16e8\u0007\u0018\u0000\u0000\u16e8\u16e9\u0005_\u0000\u0000\u16e9\u16ea"+ - "\u0007\u0006\u0000\u0000\u16ea\u16eb\u0007\u0011\u0000\u0000\u16eb\u16ec"+ - "\u0007\u0015\u0000\u0000\u16ec\u16ed\u0007\n\u0000\u0000\u16ed\u04b8\u0001"+ - "\u0000\u0000\u0000\u16ee\u16ef\u0007\r\u0000\u0000\u16ef\u16f0\u0007\n"+ - "\u0000\u0000\u16f0\u16f1\u0007\u0017\u0000\u0000\u16f1\u16f2\u0007\n\u0000"+ - "\u0000\u16f2\u16f3\u0007\u001a\u0000\u0000\u16f3\u16f4\u0007\u0018\u0000"+ - "\u0000\u16f4\u16f5\u0005_\u0000\u0000\u16f5\u16f6\u0007\u000f\u0000\u0000"+ - "\u16f6\u16f7\u0007\u0005\u0000\u0000\u16f7\u16f8\u0007\u0010\u0000\u0000"+ - "\u16f8\u16f9\u0007\u000e\u0000\u0000\u16f9\u16fa\u0007\u0014\u0000\u0000"+ - "\u16fa\u04ba\u0001\u0000\u0000\u0000\u16fb\u16fc\u0007\r\u0000\u0000\u16fc"+ - "\u16fd\u0007\n\u0000\u0000\u16fd\u16fe\u0007\u0017\u0000\u0000\u16fe\u16ff"+ - "\u0007\n\u0000\u0000\u16ff\u1700\u0007\u001a\u0000\u0000\u1700\u1701\u0007"+ - "\u0018\u0000\u0000\u1701\u1702\u0005_\u0000\u0000\u1702\u1703\u0007\u000f"+ - "\u0000\u0000\u1703\u1704\u0007\u0005\u0000\u0000\u1704\u1705\u0007\u0010"+ - "\u0000\u0000\u1705\u1706\u0007\u000e\u0000\u0000\u1706\u1707\u0007\u0014"+ - "\u0000\u0000\u1707\u1708\u0007\n\u0000\u0000\u1708\u1709\u0007\t\u0000"+ - "\u0000\u1709\u04bc\u0001\u0000\u0000\u0000\u170a\u170b\u0007\r\u0000\u0000"+ - "\u170b\u170c\u0007\n\u0000\u0000\u170c\u170d\u0007\u0017\u0000\u0000\u170d"+ - "\u170e\u0007\n\u0000\u0000\u170e\u170f\u0007\u001a\u0000\u0000\u170f\u1710"+ - "\u0007\u0018\u0000\u0000\u1710\u1711\u0005_\u0000\u0000\u1711\u1712\u0007"+ - "\r\u0000\u0000\u1712\u1713\u0007\n\u0000\u0000\u1713\u1714\u0007\u0018"+ - "\u0000\u0000\u1714\u1715\u0007\u0006\u0000\u0000\u1715\u1716\u0007\u0005"+ - "\u0000\u0000\u1716\u1717\u0007\u000e\u0000\u0000\u1717\u1718\u0007\n\u0000"+ - "\u0000\u1718\u04be\u0001\u0000\u0000\u0000\u1719\u171a\u0007\r\u0000\u0000"+ - "\u171a\u171b\u0007\n\u0000\u0000\u171b\u171c\u0007\u0017\u0000\u0000\u171c"+ - "\u171d\u0007\n\u0000\u0000\u171d\u171e\u0007\u001a\u0000\u0000\u171e\u171f"+ - "\u0007\u0018\u0000\u0000\u171f\u1720\u0005_\u0000\u0000\u1720\u1721\u0007"+ - "\t\u0000\u0000\u1721\u1722\u0007\u0018\u0000\u0000\u1722\u1723\u0007\u0006"+ - "\u0000\u0000\u1723\u1724\u0007\u0011\u0000\u0000\u1724\u1725\u0007\u0010"+ - "\u0000\u0000\u1725\u1726\u0005_\u0000\u0000\u1726\u1727\u0007\u0010\u0000"+ - "\u0000\u1727\u1728\u0007\u0013\u0000\u0000\u1728\u1729\u0005_\u0000\u0000"+ - "\u1729\u172a\u0007\u0005\u0000\u0000\u172a\u172b\u0007\r\u0000\u0000\u172b"+ - "\u172c\u0007\r\u0000\u0000\u172c\u172d\u0007\u0005\u0000\u0000\u172d\u172e"+ - "\u0007\b\u0000\u0000\u172e\u04c0\u0001\u0000\u0000\u0000\u172f\u1730\u0007"+ - "\r\u0000\u0000\u1730\u1731\u0007\n\u0000\u0000\u1731\u1732\u0007\u0017"+ - "\u0000\u0000\u1732\u1733\u0007\n\u0000\u0000\u1733\u1734\u0007\u001a\u0000"+ - "\u0000\u1734\u1735\u0007\u0018\u0000\u0000\u1735\u1736\u0005_\u0000\u0000"+ - "\u1736\u1737\u0007\t\u0000\u0000\u1737\u1738\u0007\u0018\u0000\u0000\u1738"+ - "\u1739\u0007\u0006\u0000\u0000\u1739\u173a\u0007\u0011\u0000\u0000\u173a"+ - "\u173b\u0007\u0010\u0000\u0000\u173b\u173c\u0005_\u0000\u0000\u173c\u173d"+ - "\u0007\u0010\u0000\u0000\u173d\u173e\u0007\u0013\u0000\u0000\u173e\u173f"+ - "\u0005_\u0000\u0000\u173f\u1740\u0007\u0010\u0000\u0000\u1740\u1741\u0007"+ - "\u0005\u0000\u0000\u1741\u1742\u0007\u0012\u0000\u0000\u1742\u1743\u0007"+ - "\u0006\u0000\u0000\u1743\u1744\u0007\n\u0000\u0000\u1744\u04c2\u0001\u0000"+ - "\u0000\u0000\u1745\u1746\u0007\r\u0000\u0000\u1746\u1747\u0007\n\u0000"+ - "\u0000\u1747\u1748\u0007\u0017\u0000\u0000\u1748\u1749\u0007\n\u0000\u0000"+ - "\u1749\u174a\u0007\u001a\u0000\u0000\u174a\u174b\u0007\u0018\u0000\u0000"+ - "\u174b\u174c\u0005_\u0000\u0000\u174c\u174d\u0007\t\u0000\u0000\u174d"+ - "\u174e\u0007\u0016\u0000\u0000\u174e\u174f\u0007\u0012\u0000\u0000\u174f"+ - "\u1750\u0007\t\u0000\u0000\u1750\u1751\u0007\u0010\u0000\u0000\u1751\u1752"+ - "\u0007\r\u0000\u0000\u1752\u04c4\u0001\u0000\u0000\u0000\u1753\u1754\u0007"+ - "\r\u0000\u0000\u1754\u1755\u0007\n\u0000\u0000\u1755\u1756\u0007\u0018"+ - "\u0000\u0000\u1756\u1757\u0007\n\u0000\u0000\u1757\u1758\u0007\u0005\u0000"+ - "\u0000\u1758\u1759\u0007\u0010\u0000\u0000\u1759\u04c6\u0001\u0000\u0000"+ - "\u0000\u175a\u175b\u0007\r\u0000\u0000\u175b\u175c\u0007\u0018\u0000\u0000"+ - "\u175c\u175d\u0007\u0005\u0000\u0000\u175d\u175e\u0007\f\u0000\u0000\u175e"+ - "\u04c8\u0001\u0000\u0000\u0000\u175f\u1760\u0007\r\u0000\u0000\u1760\u1761"+ - "\u0007\u0010\u0000\u0000\u1761\u1762\u0007\r\u0000\u0000\u1762\u1763\u0007"+ - "\u0011\u0000\u0000\u1763\u1764\u0007\u000f\u0000\u0000\u1764\u04ca\u0001"+ - "\u0000\u0000\u0000\u1765\u1766\u0007\t\u0000\u0000\u1766\u1767\u0007\u0018"+ - "\u0000\u0000\u1767\u1768\u0007\u0006\u0000\u0000\u1768\u1769\u0007\u0011"+ - "\u0000\u0000\u1769\u176a\u0007\u0010\u0000\u0000\u176a\u176b\u0005_\u0000"+ - "\u0000\u176b\u176c\u0007\u0018\u0000\u0000\u176c\u176d\u0007\u0005\u0000"+ - "\u0000\u176d\u176e\u0007\r\u0000\u0000\u176e\u176f\u0007\u0010\u0000\u0000"+ - "\u176f\u04cc\u0001\u0000\u0000\u0000\u1770\u1771\u0007\t\u0000\u0000\u1771"+ - "\u1772\u0007\u0010\u0000\u0000\u1772\u1773\u0007\u0005\u0000\u0000\u1773"+ - "\u1774\u0007\r\u0000\u0000\u1774\u1775\u0007\u0010\u0000\u0000\u1775\u1776"+ - "\u0007\t\u0000\u0000\u1776\u1777\u0005_\u0000\u0000\u1777\u1778\u0007"+ - "\u001c\u0000\u0000\u1778\u1779\u0007\u0011\u0000\u0000\u1779\u177a\u0007"+ - "\u0010\u0000\u0000\u177a\u177b\u0007\u0014\u0000\u0000\u177b\u04ce\u0001"+ - "\u0000\u0000\u0000\u177c\u177d\u0007\t\u0000\u0000\u177d\u177e\u0007\u0010"+ - "\u0000\u0000\u177e\u177f\u0007\r\u0000\u0000\u177f\u1780\u0007\u0011\u0000"+ - "\u0000\u1780\u1781\u0007\u0007\u0000\u0000\u1781\u1782\u0007\u0017\u0000"+ - "\u0000\u1782\u1783\u0005_\u0000\u0000\u1783\u1784\u0007\u0010\u0000\u0000"+ - "\u1784\u1785\u0007\u0013\u0000\u0000\u1785\u1786\u0005_\u0000\u0000\u1786"+ - "\u1787\u0007\u0005\u0000\u0000\u1787\u1788\u0007\r\u0000\u0000\u1788\u1789"+ - "\u0007\r\u0000\u0000\u1789\u178a\u0007\u0005\u0000\u0000\u178a\u178b\u0007"+ - "\b\u0000\u0000\u178b\u04d0\u0001\u0000\u0000\u0000\u178c\u178d\u0007\t"+ - "\u0000\u0000\u178d\u178e\u0007\u0010\u0000\u0000\u178e\u178f\u0007\r\u0000"+ - "\u0000\u178f\u1790\u0007\u0011\u0000\u0000\u1790\u1791\u0007\u0007\u0000"+ - "\u0000\u1791\u1792\u0007\u0017\u0000\u0000\u1792\u1793\u0005_\u0000\u0000"+ - "\u1793\u1794\u0007\u0010\u0000\u0000\u1794\u1795\u0007\u0013\u0000\u0000"+ - "\u1795\u1796\u0005_\u0000\u0000\u1796\u1797\u0007\u0010\u0000\u0000\u1797"+ - "\u1798\u0007\u0005\u0000\u0000\u1798\u1799\u0007\u0012\u0000\u0000\u1799"+ - "\u179a\u0007\u0006\u0000\u0000\u179a\u179b\u0007\n\u0000\u0000\u179b\u04d2"+ - "\u0001\u0000\u0000\u0000\u179c\u179d\u0007\t\u0000\u0000\u179d\u179e\u0007"+ - "\u0010\u0000\u0000\u179e\u179f\u0007\r\u0000\u0000\u179f\u17a0\u0007\u0018"+ - "\u0000\u0000\u17a0\u17a1\u0007\u0013\u0000\u0000\u17a1\u17a2\u0007\t\u0000"+ - "\u0000\u17a2\u04d4\u0001\u0000\u0000\u0000\u17a3\u17a4\u0007\t\u0000\u0000"+ - "\u17a4\u17a5\u0007\u0016\u0000\u0000\u17a5\u17a6\u0007\u0012\u0000\u0000"+ - "\u17a6\u17a7\u0007\t\u0000\u0000\u17a7\u17a8\u0007\u0010\u0000\u0000\u17a8"+ - "\u17a9\u0007\r\u0000\u0000\u17a9\u04d6\u0001\u0000\u0000\u0000\u17aa\u17ab"+ - "\u0007\u0010\u0000\u0000\u17ab\u17ac\u0007\u0013\u0000\u0000\u17ac\u17ad"+ - "\u0005_\u0000\u0000\u17ad\u17ae\u0007\u0005\u0000\u0000\u17ae\u17af\u0007"+ - "\t\u0000\u0000\u17af\u17b0\u0007\u000e\u0000\u0000\u17b0\u17b1\u0007\u0011"+ - "\u0000\u0000\u17b1\u17b2\u0007\u0011\u0000\u0000\u17b2\u04d8\u0001\u0000"+ - "\u0000\u0000\u17b3\u17b4\u0007\u0010\u0000\u0000\u17b4\u17b5\u0007\u0013"+ - "\u0000\u0000\u17b5\u17b6\u0005_\u0000\u0000\u17b6\u17b7\u0007\u0014\u0000"+ - "\u0000\u17b7\u17b8\u0007\n\u0000\u0000\u17b8\u17b9\u0007\u001a\u0000\u0000"+ - "\u17b9\u04da\u0001\u0000\u0000\u0000\u17ba\u17bb\u0007\u0010\u0000\u0000"+ - "\u17bb\u17bc\u0007\r\u0000\u0000\u17bc\u17bd\u0007\u0005\u0000\u0000\u17bd"+ - "\u17be\u0007\u0007\u0000\u0000\u17be\u17bf\u0007\t\u0000\u0000\u17bf\u17c0"+ - "\u0007\u0006\u0000\u0000\u17c0\u17c1\u0007\u0005\u0000\u0000\u17c1\u17c2"+ - "\u0007\u0010\u0000\u0000\u17c2\u17c3\u0007\n\u0000\u0000\u17c3\u04dc\u0001"+ - "\u0000\u0000\u0000\u17c4\u17c5\u0007\u0016\u0000\u0000\u17c5\u17c6\u0007"+ - "\u0007\u0000\u0000\u17c6\u17c7\u0007\u0011\u0000\u0000\u17c7\u17c8\u0007"+ - "\t\u0000\u0000\u17c8\u17c9\u0007\u0010\u0000\u0000\u17c9\u17ca\u0007\r"+ - "\u0000\u0000\u17ca\u04de\u0001\u0000\u0000\u0000\u17cb\u17cc\u0007\u0005"+ - "\u0000\u0000\u17cc\u17cd\u0007\u0017\u0000\u0000\u17cd\u17ce\u0007\n\u0000"+ - "\u0000\u17ce\u04e0\u0001\u0000\u0000\u0000\u17cf\u17d0\u0007\u000e\u0000"+ - "\u0000\u17d0\u17d1\u0007\u0006\u0000\u0000\u17d1\u17d2\u0007\u0013\u0000"+ - "\u0000\u17d2\u17d3\u0007\u000e\u0000\u0000\u17d3\u17d4\u0007\u0015\u0000"+ - "\u0000\u17d4\u17d5\u0005_\u0000\u0000\u17d5\u17d6\u0007\u0010\u0000\u0000"+ - "\u17d6\u17d7\u0007\u0011\u0000\u0000\u17d7\u17d8\u0007\u000f\u0000\u0000"+ - "\u17d8\u17d9\u0007\n\u0000\u0000\u17d9\u17da\u0007\t\u0000\u0000\u17da"+ - "\u17db\u0007\u0010\u0000\u0000\u17db\u17dc\u0007\u0005\u0000\u0000\u17dc"+ - "\u17dd\u0007\u000f\u0000\u0000\u17dd\u17de\u0007\u0018\u0000\u0000\u17de"+ - "\u04e2\u0001\u0000\u0000\u0000\u17df\u17e0\u0007\f\u0000\u0000\u17e0\u17e1"+ - "\u0007\u0005\u0000\u0000\u17e1\u17e2\u0007\u0010\u0000\u0000\u17e2\u17e3"+ - "\u0007\n\u0000\u0000\u17e3\u17e4\u0005_\u0000\u0000\u17e4\u17e5\u0007"+ - "\u0012\u0000\u0000\u17e5\u17e6\u0007\u0011\u0000\u0000\u17e6\u17e7\u0007"+ - "\u0007\u0000\u0000\u17e7\u04e4\u0001\u0000\u0000\u0000\u17e8\u17e9\u0007"+ - "\f\u0000\u0000\u17e9\u17ea\u0007\u0005\u0000\u0000\u17ea\u17eb\u0007\u0010"+ - "\u0000\u0000\u17eb\u17ec\u0007\n\u0000\u0000\u17ec\u17ed\u0005_\u0000"+ - "\u0000\u17ed\u17ee\u0007\u0018\u0000\u0000\u17ee\u17ef\u0007\u0005\u0000"+ - "\u0000\u17ef\u17f0\u0007\r\u0000\u0000\u17f0\u17f1\u0007\u0010\u0000\u0000"+ - "\u17f1\u04e6\u0001\u0000\u0000\u0000\u17f2\u17f3\u0007\f\u0000\u0000\u17f3"+ - "\u17f4\u0007\u0005\u0000\u0000\u17f4\u17f5\u0007\u0010\u0000\u0000\u17f5"+ - "\u17f6\u0007\n\u0000\u0000\u17f6\u17f7\u0005_\u0000\u0000\u17f7\u17f8"+ - "\u0007\u0010\u0000\u0000\u17f8\u17f9\u0007\r\u0000\u0000\u17f9\u17fa\u0007"+ - "\u0016\u0000\u0000\u17fa\u17fb\u0007\u0007\u0000\u0000\u17fb\u17fc\u0007"+ - "\u000e\u0000\u0000\u17fc\u04e8\u0001\u0000\u0000\u0000\u17fd\u17fe\u0007"+ - "\u0011\u0000\u0000\u17fe\u17ff\u0007\t\u0000\u0000\u17ff\u1800\u0007\u0019"+ - "\u0000\u0000\u1800\u1801\u0007\u0011\u0000\u0000\u1801\u1802\u0007\u0007"+ - "\u0000\u0000\u1802\u1803\u0007\u0011\u0000\u0000\u1803\u1804\u0007\u0010"+ - "\u0000\u0000\u1804\u1805\u0007\n\u0000\u0000\u1805\u04ea\u0001\u0000\u0000"+ - "\u0000\u1806\u1807\u0007\u001e\u0000\u0000\u1807\u1808\u0007\u0016\u0000"+ - "\u0000\u1808\u1809\u0007\t\u0000\u0000\u1809\u180a\u0007\u0010\u0000\u0000"+ - "\u180a\u180b\u0007\u0011\u0000\u0000\u180b\u180c\u0007\u0019\u0000\u0000"+ - "\u180c\u180d\u0007\b\u0000\u0000\u180d\u180e\u0005_\u0000\u0000\u180e"+ - "\u180f\u0007\f\u0000\u0000\u180f\u1810\u0007\u0005\u0000\u0000\u1810\u1811"+ - "\u0007\b\u0000\u0000\u1811\u1812\u0007\t\u0000\u0000\u1812\u04ec\u0001"+ - "\u0000\u0000\u0000\u1813\u1814\u0007\u001e\u0000\u0000\u1814\u1815\u0007"+ - "\u0016\u0000\u0000\u1815\u1816\u0007\t\u0000\u0000\u1816\u1817\u0007\u0010"+ - "\u0000\u0000\u1817\u1818\u0007\u0011\u0000\u0000\u1818\u1819\u0007\u0019"+ - "\u0000\u0000\u1819\u181a\u0007\b\u0000\u0000\u181a\u181b\u0005_\u0000"+ - "\u0000\u181b\u181c\u0007\u0014\u0000\u0000\u181c\u181d\u0007\u0013\u0000"+ - "\u0000\u181d\u181e\u0007\u0016\u0000\u0000\u181e\u181f\u0007\r\u0000\u0000"+ - "\u181f\u1820\u0007\t\u0000\u0000\u1820\u04ee\u0001\u0000\u0000\u0000\u1821"+ - "\u1822\u0007\u001e\u0000\u0000\u1822\u1823\u0007\u0016\u0000\u0000\u1823"+ - "\u1824\u0007\t\u0000\u0000\u1824\u1825\u0007\u0010\u0000\u0000\u1825\u1826"+ - "\u0007\u0011\u0000\u0000\u1826\u1827\u0007\u0019\u0000\u0000\u1827\u1828"+ - "\u0007\b\u0000\u0000\u1828\u1829\u0005_\u0000\u0000\u1829\u182a\u0007"+ - "\u0011\u0000\u0000\u182a\u182b\u0007\u0007\u0000\u0000\u182b\u182c\u0007"+ - "\u0010\u0000\u0000\u182c\u182d\u0007\n\u0000\u0000\u182d\u182e\u0007\r"+ - "\u0000\u0000\u182e\u182f\u0007\u001b\u0000\u0000\u182f\u1830\u0007\u0005"+ - "\u0000\u0000\u1830\u1831\u0007\u0006\u0000\u0000\u1831\u04f0\u0001\u0000"+ - "\u0000\u0000\u1832\u1833\u0007\u000f\u0000\u0000\u1833\u1834\u0007\u0005"+ - "\u0000\u0000\u1834\u1835\u0007\u0015\u0000\u0000\u1835\u1836\u0007\n\u0000"+ - "\u0000\u1836\u1837\u0005_\u0000\u0000\u1837\u1838\u0007\f\u0000\u0000"+ - "\u1838\u1839\u0007\u0005\u0000\u0000\u1839\u183a\u0007\u0010\u0000\u0000"+ - "\u183a\u183b\u0007\n\u0000\u0000\u183b\u04f2\u0001\u0000\u0000\u0000\u183c"+ - "\u183d\u0007\u000f\u0000\u0000\u183d\u183e\u0007\u0005\u0000\u0000\u183e"+ - "\u183f\u0007\u0015\u0000\u0000\u183f\u1840\u0007\n\u0000\u0000\u1840\u1841"+ - "\u0005_\u0000\u0000\u1841\u1842\u0007\u0011\u0000\u0000\u1842\u1843\u0007"+ - "\u0007\u0000\u0000\u1843\u1844\u0007\u0010\u0000\u0000\u1844\u1845\u0007"+ - "\n\u0000\u0000\u1845\u1846\u0007\r\u0000\u0000\u1846\u1847\u0007\u001b"+ - "\u0000\u0000\u1847\u1848\u0007\u0005\u0000\u0000\u1848\u1849\u0007\u0006"+ - "\u0000\u0000\u1849\u04f4\u0001\u0000\u0000\u0000\u184a\u184b\u0007\u000f"+ - "\u0000\u0000\u184b\u184c\u0007\u0005\u0000\u0000\u184c\u184d\u0007\u0015"+ - "\u0000\u0000\u184d\u184e\u0007\n\u0000\u0000\u184e\u184f\u0005_\u0000"+ - "\u0000\u184f\u1850\u0007\u0010\u0000\u0000\u1850\u1851\u0007\u0011\u0000"+ - "\u0000\u1851\u1852\u0007\u000f\u0000\u0000\u1852\u1853\u0007\n\u0000\u0000"+ - "\u1853\u04f6\u0001\u0000\u0000\u0000\u1854\u1855\u0007\u000f\u0000\u0000"+ - "\u1855\u1856\u0007\u0005\u0000\u0000\u1856\u1857\u0007\u0015\u0000\u0000"+ - "\u1857\u1858\u0007\n\u0000\u0000\u1858\u1859\u0005_\u0000\u0000\u1859"+ - "\u185a\u0007\u0010\u0000\u0000\u185a\u185b\u0007\u0011\u0000\u0000\u185b"+ - "\u185c\u0007\u000f\u0000\u0000\u185c\u185d\u0007\n\u0000\u0000\u185d\u185e"+ - "\u0007\t\u0000\u0000\u185e\u185f\u0007\u0010\u0000\u0000\u185f\u1860\u0007"+ - "\u0005\u0000\u0000\u1860\u1861\u0007\u000f\u0000\u0000\u1861\u1862\u0007"+ - "\u0018\u0000\u0000\u1862\u04f8\u0001\u0000\u0000\u0000\u1863\u1864\u0007"+ - "\u000f\u0000\u0000\u1864\u1865\u0007\u0005\u0000\u0000\u1865\u1866\u0007"+ - "\u0015\u0000\u0000\u1866\u1867\u0007\n\u0000\u0000\u1867\u1868\u0005_"+ - "\u0000\u0000\u1868\u1869\u0007\u0010\u0000\u0000\u1869\u186a\u0007\u0011"+ - "\u0000\u0000\u186a\u186b\u0007\u000f\u0000\u0000\u186b\u186c\u0007\n\u0000"+ - "\u0000\u186c\u186d\u0007\t\u0000\u0000\u186d\u186e\u0007\u0010\u0000\u0000"+ - "\u186e\u186f\u0007\u0005\u0000\u0000\u186f\u1870\u0007\u000f\u0000\u0000"+ - "\u1870\u1871\u0007\u0018\u0000\u0000\u1871\u1872\u0007\u0010\u0000\u0000"+ - "\u1872\u1873\u0007\u000b\u0000\u0000\u1873\u04fa\u0001\u0000\u0000\u0000"+ - "\u1874\u1875\u0007\u0007\u0000\u0000\u1875\u1876\u0007\u0013\u0000\u0000"+ - "\u1876\u1877\u0007\u001c\u0000\u0000\u1877\u04fc\u0001\u0000\u0000\u0000"+ - "\u1878\u1879\u0007\t\u0000\u0000\u1879\u187a\u0007\u0010\u0000\u0000\u187a"+ - "\u187b\u0007\u0005\u0000\u0000\u187b\u187c\u0007\u0010\u0000\u0000\u187c"+ - "\u187d\u0007\n\u0000\u0000\u187d\u187e\u0007\u000f\u0000\u0000\u187e\u187f"+ - "\u0007\n\u0000\u0000\u187f\u1880\u0007\u0007\u0000\u0000\u1880\u1881\u0007"+ - "\u0010\u0000\u0000\u1881\u1882\u0005_\u0000\u0000\u1882\u1883\u0007\u0010"+ - "\u0000\u0000\u1883\u1884\u0007\u0011\u0000\u0000\u1884\u1885\u0007\u000f"+ - "\u0000\u0000\u1885\u1886\u0007\n\u0000\u0000\u1886\u1887\u0007\t\u0000"+ - "\u0000\u1887\u1888\u0007\u0010\u0000\u0000\u1888\u1889\u0007\u0005\u0000"+ - "\u0000\u1889\u188a\u0007\u000f\u0000\u0000\u188a\u188b\u0007\u0018\u0000"+ - "\u0000\u188b\u04fe\u0001\u0000\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\u0013\u0000\u0000"+ - "\u1891\u1892\u0007\u0019\u0000\u0000\u1892\u1893\u0007\f\u0000\u0000\u1893"+ - "\u1894\u0007\u0005\u0000\u0000\u1894\u1895\u0007\b\u0000\u0000\u1895\u0500"+ - "\u0001\u0000\u0000\u0000\u1896\u1897\u0007\u0010\u0000\u0000\u1897\u1898"+ - "\u0007\r\u0000\u0000\u1898\u1899\u0007\u0005\u0000\u0000\u1899\u189a\u0007"+ - "\u0007\u0000\u0000\u189a\u189b\u0007\t\u0000\u0000\u189b\u189c\u0007\u0005"+ - "\u0000\u0000\u189c\u189d\u0007\u000e\u0000\u0000\u189d\u189e\u0007\u0010"+ - "\u0000\u0000\u189e\u189f\u0007\u0011\u0000\u0000\u189f\u18a0\u0007\u0013"+ - "\u0000\u0000\u18a0\u18a1\u0007\u0007\u0000\u0000\u18a1\u18a2\u0005_\u0000"+ - "\u0000\u18a2\u18a3\u0007\u0010\u0000\u0000\u18a3\u18a4\u0007\u0011\u0000"+ - "\u0000\u18a4\u18a5\u0007\u000f\u0000\u0000\u18a5\u18a6\u0007\n\u0000\u0000"+ - "\u18a6\u18a7\u0007\t\u0000\u0000\u18a7\u18a8\u0007\u0010\u0000\u0000\u18a8"+ - "\u18a9\u0007\u0005\u0000\u0000\u18a9\u18aa\u0007\u000f\u0000\u0000\u18aa"+ - "\u18ab\u0007\u0018\u0000\u0000\u18ab\u0502\u0001\u0000\u0000\u0000\u18ac"+ - "\u18ad\u0007\u0010\u0000\u0000\u18ad\u18ae\u0007\u0013\u0000\u0000\u18ae"+ - "\u18af\u0005_\u0000\u0000\u18af\u18b0\u0007\u0010\u0000\u0000\u18b0\u18b1"+ - "\u0007\u0011\u0000\u0000\u18b1\u18b2\u0007\u000f\u0000\u0000\u18b2\u18b3"+ - "\u0007\n\u0000\u0000\u18b3\u18b4\u0007\t\u0000\u0000\u18b4\u18b5\u0007"+ - "\u0010\u0000\u0000\u18b5\u18b6\u0007\u0005\u0000\u0000\u18b6\u18b7\u0007"+ - "\u000f\u0000\u0000\u18b7\u18b8\u0007\u0018\u0000\u0000\u18b8\u0504\u0001"+ - "\u0000\u0000\u0000\u18b9\u18ba\u0007\u0010\u0000\u0000\u18ba\u18bb\u0007"+ - "\u0013\u0000\u0000\u18bb\u18bc\u0005_\u0000\u0000\u18bc\u18bd\u0007\u000e"+ - "\u0000\u0000\u18bd\u18be\u0007\u0014\u0000\u0000\u18be\u18bf\u0007\u0005"+ - "\u0000\u0000\u18bf\u18c0\u0007\r\u0000\u0000\u18c0\u0506\u0001\u0000\u0000"+ - "\u0000\u18c1\u18c2\u0007\u0010\u0000\u0000\u18c2\u18c3\u0007\u0013\u0000"+ - "\u0000\u18c3\u18c4\u0005_\u0000\u0000\u18c4\u18c5\u0007\f\u0000\u0000"+ - "\u18c5\u18c6\u0007\u0005\u0000\u0000\u18c6\u18c7\u0007\u0010\u0000\u0000"+ - "\u18c7\u18c8\u0007\n\u0000\u0000\u18c8\u0508\u0001\u0000\u0000\u0000\u18c9"+ - "\u18ca\u0007\u0010\u0000\u0000\u18ca\u18cb\u0007\u0013\u0000\u0000\u18cb"+ - "\u18cc\u0005_\u0000\u0000\u18cc\u18cd\u0007\u0007\u0000\u0000\u18cd\u18ce"+ - "\u0007\u0016\u0000\u0000\u18ce\u18cf\u0007\u000f\u0000\u0000\u18cf\u18d0"+ - "\u0007\u0012\u0000\u0000\u18d0\u18d1\u0007\n\u0000\u0000\u18d1\u18d2\u0007"+ - "\r\u0000\u0000\u18d2\u050a\u0001\u0000\u0000\u0000\u18d3\u18d7\u0003\u050d"+ - "\u0284\u0000\u18d4\u18d6\u0003\u050f\u0285\u0000\u18d5\u18d4\u0001\u0000"+ - "\u0000\u0000\u18d6\u18d9\u0001\u0000\u0000\u0000\u18d7\u18d5\u0001\u0000"+ - "\u0000\u0000\u18d7\u18d8\u0001\u0000\u0000\u0000\u18d8\u050c\u0001\u0000"+ - "\u0000\u0000\u18d9\u18d7\u0001\u0000\u0000\u0000\u18da\u18e1\u0007\u001f"+ - "\u0000\u0000\u18db\u18dc\u0007 \u0000\u0000\u18dc\u18e1\u0004\u0284\u0006"+ - "\u0000\u18dd\u18de\u0007!\u0000\u0000\u18de\u18df\u0007\"\u0000\u0000"+ - "\u18df\u18e1\u0004\u0284\u0007\u0000\u18e0\u18da\u0001\u0000\u0000\u0000"+ - "\u18e0\u18db\u0001\u0000\u0000\u0000\u18e0\u18dd\u0001\u0000\u0000\u0000"+ - "\u18e1\u050e\u0001\u0000\u0000\u0000\u18e2\u18e5\u0003\u0511\u0286\u0000"+ - "\u18e3\u18e5\u0005$\u0000\u0000\u18e4\u18e2\u0001\u0000\u0000\u0000\u18e4"+ - "\u18e3\u0001\u0000\u0000\u0000\u18e5\u0510\u0001\u0000\u0000\u0000\u18e6"+ - "\u18e9\u0003\u050d\u0284\u0000\u18e7\u18e9\u0007\u0000\u0000\u0000\u18e8"+ - "\u18e6\u0001\u0000\u0000\u0000\u18e8\u18e7\u0001\u0000\u0000\u0000\u18e9"+ - "\u0512\u0001\u0000\u0000\u0000\u18ea\u18eb\u0003\u0515\u0288\u0000\u18eb"+ - "\u18ec\u0005\"\u0000\u0000\u18ec\u0514\u0001\u0000\u0000\u0000\u18ed\u18f3"+ - "\u0005\"\u0000\u0000\u18ee\u18ef\u0005\"\u0000\u0000\u18ef\u18f2\u0005"+ - "\"\u0000\u0000\u18f0\u18f2\b#\u0000\u0000\u18f1\u18ee\u0001\u0000\u0000"+ - "\u0000\u18f1\u18f0\u0001\u0000\u0000\u0000\u18f2\u18f5\u0001\u0000\u0000"+ - "\u0000\u18f3\u18f1\u0001\u0000\u0000\u0000\u18f3\u18f4\u0001\u0000\u0000"+ - "\u0000\u18f4\u0516\u0001\u0000\u0000\u0000\u18f5\u18f3\u0001\u0000\u0000"+ - "\u0000\u18f6\u18f7\u0003\u0519\u028a\u0000\u18f7\u18f8\u0005\"\u0000\u0000"+ - "\u18f8\u0518\u0001\u0000\u0000\u0000\u18f9\u18ff\u0005\"\u0000\u0000\u18fa"+ - "\u18fb\u0005\"\u0000\u0000\u18fb\u18fe\u0005\"\u0000\u0000\u18fc\u18fe"+ - "\b$\u0000\u0000\u18fd\u18fa\u0001\u0000\u0000\u0000\u18fd\u18fc\u0001"+ - "\u0000\u0000\u0000\u18fe\u1901\u0001\u0000\u0000\u0000\u18ff\u18fd\u0001"+ - "\u0000\u0000\u0000\u18ff\u1900\u0001\u0000\u0000\u0000\u1900\u051a\u0001"+ - "\u0000\u0000\u0000\u1901\u18ff\u0001\u0000\u0000\u0000\u1902\u1903\u0007"+ - "\u0016\u0000\u0000\u1903\u1904\u0005&\u0000\u0000\u1904\u1905\u0003\u0513"+ - "\u0287\u0000\u1905\u051c\u0001\u0000\u0000\u0000\u1906\u1907\u0007\u0016"+ - "\u0000\u0000\u1907\u1908\u0005&\u0000\u0000\u1908\u1909\u0003\u0515\u0288"+ - "\u0000\u1909\u051e\u0001\u0000\u0000\u0000\u190a\u190b\u0007\u0016\u0000"+ - "\u0000\u190b\u190c\u0005&\u0000\u0000\u190c\u190d\u0003\u0517\u0289\u0000"+ - "\u190d\u0520\u0001\u0000\u0000\u0000\u190e\u190f\u0007\u0016\u0000\u0000"+ - "\u190f\u1910\u0005&\u0000\u0000\u1910\u1911\u0003\u0519\u028a\u0000\u1911"+ - "\u0522\u0001\u0000\u0000\u0000\u1912\u1913\u0003\u0525\u0290\u0000\u1913"+ - "\u1914\u0005\'\u0000\u0000\u1914\u0524\u0001\u0000\u0000\u0000\u1915\u191b"+ - "\u0005\'\u0000\u0000\u1916\u1917\u0005\'\u0000\u0000\u1917\u191a\u0005"+ - "\'\u0000\u0000\u1918\u191a\b%\u0000\u0000\u1919\u1916\u0001\u0000\u0000"+ - "\u0000\u1919\u1918\u0001\u0000\u0000\u0000\u191a\u191d\u0001\u0000\u0000"+ - "\u0000\u191b\u1919\u0001\u0000\u0000\u0000\u191b\u191c\u0001\u0000\u0000"+ - "\u0000\u191c\u0526\u0001\u0000\u0000\u0000\u191d\u191b\u0001\u0000\u0000"+ - "\u0000\u191e\u191f\u0007\n\u0000\u0000\u191f\u1920\u0005\'\u0000\u0000"+ - "\u1920\u1921\u0001\u0000\u0000\u0000\u1921\u1922\u0006\u0291\u0002\u0000"+ - "\u1922\u1923\u0006\u0291\u0003\u0000\u1923\u0528\u0001\u0000\u0000\u0000"+ - "\u1924\u1925\u0003\u052b\u0293\u0000\u1925\u1926\u0005\'\u0000\u0000\u1926"+ - "\u052a\u0001\u0000\u0000\u0000\u1927\u1928\u0007\u0016\u0000\u0000\u1928"+ - "\u1929\u0005&\u0000\u0000\u1929\u192a\u0003\u0525\u0290\u0000\u192a\u052c"+ - "\u0001\u0000\u0000\u0000\u192b\u192d\u0005$\u0000\u0000\u192c\u192e\u0003"+ - "\u052f\u0295\u0000\u192d\u192c\u0001\u0000\u0000\u0000\u192d\u192e\u0001"+ - "\u0000\u0000\u0000\u192e\u192f\u0001\u0000\u0000\u0000\u192f\u1930\u0005"+ - "$\u0000\u0000\u1930\u1931\u0006\u0294\u0004\u0000\u1931\u1932\u0001\u0000"+ - "\u0000\u0000\u1932\u1933\u0006\u0294\u0005\u0000\u1933\u052e\u0001\u0000"+ - "\u0000\u0000\u1934\u1938\u0003\u050d\u0284\u0000\u1935\u1937\u0003\u0511"+ - "\u0286\u0000\u1936\u1935\u0001\u0000\u0000\u0000\u1937\u193a\u0001\u0000"+ - "\u0000\u0000\u1938\u1936\u0001\u0000\u0000\u0000\u1938\u1939\u0001\u0000"+ - "\u0000\u0000\u1939\u0530\u0001\u0000\u0000\u0000\u193a\u1938\u0001\u0000"+ - "\u0000\u0000\u193b\u193c\u0003\u0533\u0297\u0000\u193c\u193d\u0005\'\u0000"+ - "\u0000\u193d\u0532\u0001\u0000\u0000\u0000\u193e\u193f\u0007\u0012\u0000"+ - "\u0000\u193f\u1943\u0005\'\u0000\u0000\u1940\u1942\u0007&\u0000\u0000"+ - "\u1941\u1940\u0001\u0000\u0000\u0000\u1942\u1945\u0001\u0000\u0000\u0000"+ - "\u1943\u1941\u0001\u0000\u0000\u0000\u1943\u1944\u0001\u0000\u0000\u0000"+ - "\u1944\u0534\u0001\u0000\u0000\u0000\u1945\u1943\u0001\u0000\u0000\u0000"+ - "\u1946\u1947\u0003\u0537\u0299\u0000\u1947\u1948\u0005\'\u0000\u0000\u1948"+ - "\u0536\u0001\u0000\u0000\u0000\u1949\u194a\u0007\u0012\u0000\u0000\u194a"+ - "\u194b\u0003\u0525\u0290\u0000\u194b\u0538\u0001\u0000\u0000\u0000\u194c"+ - "\u194d\u0003\u053b\u029b\u0000\u194d\u194e\u0005\'\u0000\u0000\u194e\u053a"+ - "\u0001\u0000\u0000\u0000\u194f\u1950\u0007\u001a\u0000\u0000\u1950\u1954"+ - "\u0005\'\u0000\u0000\u1951\u1953\u0007\'\u0000\u0000\u1952\u1951\u0001"+ - "\u0000\u0000\u0000\u1953\u1956\u0001\u0000\u0000\u0000\u1954\u1952\u0001"+ - "\u0000\u0000\u0000\u1954\u1955\u0001\u0000\u0000\u0000\u1955\u053c\u0001"+ - "\u0000\u0000\u0000\u1956\u1954\u0001\u0000\u0000\u0000\u1957\u1958\u0003"+ - "\u053f\u029d\u0000\u1958\u1959\u0005\'\u0000\u0000\u1959\u053e\u0001\u0000"+ - "\u0000\u0000\u195a\u195b\u0007\u001a\u0000\u0000\u195b\u195c\u0003\u0525"+ - "\u0290\u0000\u195c\u0540\u0001\u0000\u0000\u0000\u195d\u195e\u0003\u0547"+ - "\u02a1\u0000\u195e\u0542\u0001\u0000\u0000\u0000\u195f\u1960\u0003\u0547"+ - "\u02a1\u0000\u1960\u1961\u0005.\u0000\u0000\u1961\u1962\u0005.\u0000\u0000"+ - "\u1962\u1963\u0001\u0000\u0000\u0000\u1963\u1964\u0006\u029f\u0006\u0000"+ - "\u1964\u0544\u0001\u0000\u0000\u0000\u1965\u1966\u0003\u0547\u02a1\u0000"+ - "\u1966\u1968\u0005.\u0000\u0000\u1967\u1969\u0003\u0547\u02a1\u0000\u1968"+ - "\u1967\u0001\u0000\u0000\u0000\u1968\u1969\u0001\u0000\u0000\u0000\u1969"+ - "\u196f\u0001\u0000\u0000\u0000\u196a\u196c\u0007\n\u0000\u0000\u196b\u196d"+ - "\u0007\u0001\u0000\u0000\u196c\u196b\u0001\u0000\u0000\u0000\u196c\u196d"+ - "\u0001\u0000\u0000\u0000\u196d\u196e\u0001\u0000\u0000\u0000\u196e\u1970"+ - "\u0003\u0547\u02a1\u0000\u196f\u196a\u0001\u0000\u0000\u0000\u196f\u1970"+ - "\u0001\u0000\u0000\u0000\u1970\u1982\u0001\u0000\u0000\u0000\u1971\u1972"+ - "\u0005.\u0000\u0000\u1972\u1978\u0003\u0547\u02a1\u0000\u1973\u1975\u0007"+ - "\n\u0000\u0000\u1974\u1976\u0007\u0001\u0000\u0000\u1975\u1974\u0001\u0000"+ - "\u0000\u0000\u1975\u1976\u0001\u0000\u0000\u0000\u1976\u1977\u0001\u0000"+ - "\u0000\u0000\u1977\u1979\u0003\u0547\u02a1\u0000\u1978\u1973\u0001\u0000"+ - "\u0000\u0000\u1978\u1979\u0001\u0000\u0000\u0000\u1979\u1982\u0001\u0000"+ - "\u0000\u0000\u197a\u197b\u0003\u0547\u02a1\u0000\u197b\u197d\u0007\n\u0000"+ - "\u0000\u197c\u197e\u0007\u0001\u0000\u0000\u197d\u197c\u0001\u0000\u0000"+ - "\u0000\u197d\u197e\u0001\u0000\u0000\u0000\u197e\u197f\u0001\u0000\u0000"+ - "\u0000\u197f\u1980\u0003\u0547\u02a1\u0000\u1980\u1982\u0001\u0000\u0000"+ - "\u0000\u1981\u1965\u0001\u0000\u0000\u0000\u1981\u1971\u0001\u0000\u0000"+ - "\u0000\u1981\u197a\u0001\u0000\u0000\u0000\u1982\u0546\u0001\u0000\u0000"+ - "\u0000\u1983\u1985\u0007\u0000\u0000\u0000\u1984\u1983\u0001\u0000\u0000"+ - "\u0000\u1985\u1986\u0001\u0000\u0000\u0000\u1986\u1984\u0001\u0000\u0000"+ - "\u0000\u1986\u1987\u0001\u0000\u0000\u0000\u1987\u0548\u0001\u0000\u0000"+ - "\u0000\u1988\u1989\u0005:\u0000\u0000\u1989\u198d\u0007(\u0000\u0000\u198a"+ - "\u198c\u0007)\u0000\u0000\u198b\u198a\u0001\u0000\u0000\u0000\u198c\u198f"+ - "\u0001\u0000\u0000\u0000\u198d\u198b\u0001\u0000\u0000\u0000\u198d\u198e"+ - "\u0001\u0000\u0000\u0000\u198e\u054a\u0001\u0000\u0000\u0000\u198f\u198d"+ - "\u0001\u0000\u0000\u0000\u1990\u1991\u0005:\u0000\u0000\u1991\u1992\u0005"+ - "\"\u0000\u0000\u1992\u199a\u0001\u0000\u0000\u0000\u1993\u1994\u0005\\"+ - "\u0000\u0000\u1994\u1999\t\u0000\u0000\u0000\u1995\u1996\u0005\"\u0000"+ - "\u0000\u1996\u1999\u0005\"\u0000\u0000\u1997\u1999\b*\u0000\u0000\u1998"+ - "\u1993\u0001\u0000\u0000\u0000\u1998\u1995\u0001\u0000\u0000\u0000\u1998"+ - "\u1997\u0001\u0000\u0000\u0000\u1999\u199c\u0001\u0000\u0000\u0000\u199a"+ - "\u1998\u0001\u0000\u0000\u0000\u199a\u199b\u0001\u0000\u0000\u0000\u199b"+ - "\u199d\u0001\u0000\u0000\u0000\u199c\u199a\u0001\u0000\u0000\u0000\u199d"+ - "\u199e\u0005\"\u0000\u0000\u199e\u054c\u0001\u0000\u0000\u0000\u199f\u19a1"+ - "\u0007+\u0000\u0000\u19a0\u199f\u0001\u0000\u0000\u0000\u19a1\u19a2\u0001"+ - "\u0000\u0000\u0000\u19a2\u19a0\u0001\u0000\u0000\u0000\u19a2\u19a3\u0001"+ - "\u0000\u0000\u0000\u19a3\u19a4\u0001\u0000\u0000\u0000\u19a4\u19a5\u0006"+ - "\u02a4\u0007\u0000\u19a5\u054e\u0001\u0000\u0000\u0000\u19a6\u19a8\u0005"+ - "\r\u0000\u0000\u19a7\u19a9\u0005\n\u0000\u0000\u19a8\u19a7\u0001\u0000"+ - "\u0000\u0000\u19a8\u19a9\u0001\u0000\u0000\u0000\u19a9\u19ac\u0001\u0000"+ - "\u0000\u0000\u19aa\u19ac\u0005\n\u0000\u0000\u19ab\u19a6\u0001\u0000\u0000"+ - "\u0000\u19ab\u19aa\u0001\u0000\u0000\u0000\u19ac\u19ad\u0001\u0000\u0000"+ - "\u0000\u19ad\u19ae\u0006\u02a5\u0007\u0000\u19ae\u0550\u0001\u0000\u0000"+ - "\u0000\u19af\u19b0\u0005-\u0000\u0000\u19b0\u19b1\u0005-\u0000\u0000\u19b1"+ - "\u19b5\u0001\u0000\u0000\u0000\u19b2\u19b4\b,\u0000\u0000\u19b3\u19b2"+ - "\u0001\u0000\u0000\u0000\u19b4\u19b7\u0001\u0000\u0000\u0000\u19b5\u19b3"+ - "\u0001\u0000\u0000\u0000\u19b5\u19b6\u0001\u0000\u0000\u0000\u19b6\u19b8"+ - "\u0001\u0000\u0000\u0000\u19b7\u19b5\u0001\u0000\u0000\u0000\u19b8\u19b9"+ - "\u0006\u02a6\u0007\u0000\u19b9\u0552\u0001\u0000\u0000\u0000\u19ba\u19bb"+ - "\u0005/\u0000\u0000\u19bb\u19bc\u0005*\u0000\u0000\u19bc\u19d3\u0001\u0000"+ - "\u0000\u0000\u19bd\u19bf\u0005/\u0000\u0000\u19be\u19bd\u0001\u0000\u0000"+ - "\u0000\u19bf\u19c2\u0001\u0000\u0000\u0000\u19c0\u19be\u0001\u0000\u0000"+ - "\u0000\u19c0\u19c1\u0001\u0000\u0000\u0000\u19c1\u19c3\u0001\u0000\u0000"+ - "\u0000\u19c2\u19c0\u0001\u0000\u0000\u0000\u19c3\u19d2\u0003\u0553\u02a7"+ - "\u0000\u19c4\u19d2\b-\u0000\u0000\u19c5\u19c7\u0005/\u0000\u0000\u19c6"+ - "\u19c5\u0001\u0000\u0000\u0000\u19c7\u19c8\u0001\u0000\u0000\u0000\u19c8"+ - "\u19c6\u0001\u0000\u0000\u0000\u19c8\u19c9\u0001\u0000\u0000\u0000\u19c9"+ - "\u19ca\u0001\u0000\u0000\u0000\u19ca\u19d2\b-\u0000\u0000\u19cb\u19cd"+ - "\u0005*\u0000\u0000\u19cc\u19cb\u0001\u0000\u0000\u0000\u19cd\u19ce\u0001"+ - "\u0000\u0000\u0000\u19ce\u19cc\u0001\u0000\u0000\u0000\u19ce\u19cf\u0001"+ - "\u0000\u0000\u0000\u19cf\u19d0\u0001\u0000\u0000\u0000\u19d0\u19d2\b-"+ - "\u0000\u0000\u19d1\u19c0\u0001\u0000\u0000\u0000\u19d1\u19c4\u0001\u0000"+ - "\u0000\u0000\u19d1\u19c6\u0001\u0000\u0000\u0000\u19d1\u19cc\u0001\u0000"+ - "\u0000\u0000\u19d2\u19d5\u0001\u0000\u0000\u0000\u19d3\u19d1\u0001\u0000"+ - "\u0000\u0000\u19d3\u19d4\u0001\u0000\u0000\u0000\u19d4\u19d9\u0001\u0000"+ - "\u0000\u0000\u19d5\u19d3\u0001\u0000\u0000\u0000\u19d6\u19d8\u0005*\u0000"+ - "\u0000\u19d7\u19d6\u0001\u0000\u0000\u0000\u19d8\u19db\u0001\u0000\u0000"+ - "\u0000\u19d9\u19d7\u0001\u0000\u0000\u0000\u19d9\u19da\u0001\u0000\u0000"+ - "\u0000\u19da\u19dc\u0001\u0000\u0000\u0000\u19db\u19d9\u0001\u0000\u0000"+ - "\u0000\u19dc\u19dd\u0005*\u0000\u0000\u19dd\u19de\u0005/\u0000\u0000\u19de"+ - "\u19df\u0001\u0000\u0000\u0000\u19df\u19e0\u0006\u02a7\u0007\u0000\u19e0"+ - "\u0554\u0001\u0000\u0000\u0000\u19e1\u19e2\u0005/\u0000\u0000\u19e2\u19e3"+ - "\u0005*\u0000\u0000\u19e3\u19fc\u0001\u0000\u0000\u0000\u19e4\u19e6\u0005"+ - "/\u0000\u0000\u19e5\u19e4\u0001\u0000\u0000\u0000\u19e6\u19e9\u0001\u0000"+ - "\u0000\u0000\u19e7\u19e5\u0001\u0000\u0000\u0000\u19e7\u19e8\u0001\u0000"+ - "\u0000\u0000\u19e8\u19ea\u0001\u0000\u0000\u0000\u19e9\u19e7\u0001\u0000"+ - "\u0000\u0000\u19ea\u19fb\u0003\u0553\u02a7\u0000\u19eb\u19fb\b-\u0000"+ - "\u0000\u19ec\u19ee\u0005/\u0000\u0000\u19ed\u19ec\u0001\u0000\u0000\u0000"+ - "\u19ee\u19ef\u0001\u0000\u0000\u0000\u19ef\u19ed\u0001\u0000\u0000\u0000"+ - "\u19ef\u19f0\u0001\u0000\u0000\u0000\u19f0\u19f1\u0001\u0000\u0000\u0000"+ - "\u19f1\u19f9\b-\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\u19f7"+ - "\u0001\u0000\u0000\u0000\u19f7\u19f9\b-\u0000\u0000\u19f8\u19ed\u0001"+ - "\u0000\u0000\u0000\u19f8\u19f3\u0001\u0000\u0000\u0000\u19f9\u19fb\u0001"+ - "\u0000\u0000\u0000\u19fa\u19e7\u0001\u0000\u0000\u0000\u19fa\u19eb\u0001"+ - "\u0000\u0000\u0000\u19fa\u19f8\u0001\u0000\u0000\u0000\u19fb\u19fe\u0001"+ - "\u0000\u0000\u0000\u19fc\u19fa\u0001\u0000\u0000\u0000\u19fc\u19fd\u0001"+ - "\u0000\u0000\u0000\u19fd\u1a10\u0001\u0000\u0000\u0000\u19fe\u19fc\u0001"+ - "\u0000\u0000\u0000\u19ff\u1a01\u0005/\u0000\u0000\u1a00\u19ff\u0001\u0000"+ - "\u0000\u0000\u1a01\u1a02\u0001\u0000\u0000\u0000\u1a02\u1a00\u0001\u0000"+ - "\u0000\u0000\u1a02\u1a03\u0001\u0000\u0000\u0000\u1a03\u1a11\u0001\u0000"+ - "\u0000\u0000\u1a04\u1a06\u0005*\u0000\u0000\u1a05\u1a04\u0001\u0000\u0000"+ - "\u0000\u1a06\u1a07\u0001\u0000\u0000\u0000\u1a07\u1a05\u0001\u0000\u0000"+ - "\u0000\u1a07\u1a08\u0001\u0000\u0000\u0000\u1a08\u1a11\u0001\u0000\u0000"+ - "\u0000\u1a09\u1a0b\u0005/\u0000\u0000\u1a0a\u1a09\u0001\u0000\u0000\u0000"+ - "\u1a0b\u1a0e\u0001\u0000\u0000\u0000\u1a0c\u1a0a\u0001\u0000\u0000\u0000"+ - "\u1a0c\u1a0d\u0001\u0000\u0000\u0000\u1a0d\u1a0f\u0001\u0000\u0000\u0000"+ - "\u1a0e\u1a0c\u0001\u0000\u0000\u0000\u1a0f\u1a11\u0003\u0555\u02a8\u0000"+ - "\u1a10\u1a00\u0001\u0000\u0000\u0000\u1a10\u1a05\u0001\u0000\u0000\u0000"+ - "\u1a10\u1a0c\u0001\u0000\u0000\u0000\u1a10\u1a11\u0001\u0000\u0000\u0000"+ - "\u1a11\u1a12\u0001\u0000\u0000\u0000\u1a12\u1a13\u0006\u02a8\b\u0000\u1a13"+ - "\u0556\u0001\u0000\u0000\u0000\u1a14\u1a20\u0005\\\u0000\u0000\u1a15\u1a1f"+ - "\b.\u0000\u0000\u1a16\u1a1a\u0005\"\u0000\u0000\u1a17\u1a19\b/\u0000\u0000"+ - "\u1a18\u1a17\u0001\u0000\u0000\u0000\u1a19\u1a1c\u0001\u0000\u0000\u0000"+ - "\u1a1a\u1a18\u0001\u0000\u0000\u0000\u1a1a\u1a1b\u0001\u0000\u0000\u0000"+ - "\u1a1b\u1a1d\u0001\u0000\u0000\u0000\u1a1c\u1a1a\u0001\u0000\u0000\u0000"+ - "\u1a1d\u1a1f\u0005\"\u0000\u0000\u1a1e\u1a15\u0001\u0000\u0000\u0000\u1a1e"+ - "\u1a16\u0001\u0000\u0000\u0000\u1a1f\u1a22\u0001\u0000\u0000\u0000\u1a20"+ - "\u1a1e\u0001\u0000\u0000\u0000\u1a20\u1a21\u0001\u0000\u0000\u0000\u1a21"+ - "\u1a2a\u0001\u0000\u0000\u0000\u1a22\u1a20\u0001\u0000\u0000\u0000\u1a23"+ - "\u1a27\u0005\"\u0000\u0000\u1a24\u1a26\b/\u0000\u0000\u1a25\u1a24\u0001"+ - "\u0000\u0000\u0000\u1a26\u1a29\u0001\u0000\u0000\u0000\u1a27\u1a25\u0001"+ - "\u0000\u0000\u0000\u1a27\u1a28\u0001\u0000\u0000\u0000\u1a28\u1a2b\u0001"+ - "\u0000\u0000\u0000\u1a29\u1a27\u0001\u0000\u0000\u0000\u1a2a\u1a23\u0001"+ - "\u0000\u0000\u0000\u1a2a\u1a2b\u0001\u0000\u0000\u0000\u1a2b\u0558\u0001"+ - "\u0000\u0000\u0000\u1a2c\u1a2d\u0005\\\u0000\u0000\u1a2d\u1a2e\u0005\\"+ - "\u0000\u0000\u1a2e\u055a\u0001\u0000\u0000\u0000\u1a2f\u1a30\t\u0000\u0000"+ - "\u0000\u1a30\u055c\u0001\u0000\u0000\u0000\u1a31\u1a32\u0003\u0561\u02ae"+ - "\u0000\u1a32\u1a33\u0005\'\u0000\u0000\u1a33\u1a34\u0001\u0000\u0000\u0000"+ - "\u1a34\u1a35\u0006\u02ac\t\u0000\u1a35\u055e\u0001\u0000\u0000\u0000\u1a36"+ - "\u1a38\u0003\u0561\u02ae\u0000\u1a37\u1a39\u0005\\\u0000\u0000\u1a38\u1a37"+ - "\u0001\u0000\u0000\u0000\u1a38\u1a39\u0001\u0000\u0000\u0000\u1a39\u1a3a"+ - "\u0001\u0000\u0000\u0000\u1a3a\u1a3b\u0005\u0000\u0000\u0001\u1a3b\u0560"+ - "\u0001\u0000\u0000\u0000\u1a3c\u1a3d\u0005\'\u0000\u0000\u1a3d\u1a54\u0005"+ - "\'\u0000\u0000\u1a3e\u1a50\u0005\\\u0000\u0000\u1a3f\u1a40\u0005x\u0000"+ - "\u0000\u1a40\u1a51\u0007\'\u0000\u0000\u1a41\u1a42\u0005u\u0000\u0000"+ - "\u1a42\u1a43\u0007\'\u0000\u0000\u1a43\u1a44\u0007\'\u0000\u0000\u1a44"+ - "\u1a45\u0007\'\u0000\u0000\u1a45\u1a51\u0007\'\u0000\u0000\u1a46\u1a47"+ - "\u0005U\u0000\u0000\u1a47\u1a48\u0007\'\u0000\u0000\u1a48\u1a49\u0007"+ - "\'\u0000\u0000\u1a49\u1a4a\u0007\'\u0000\u0000\u1a4a\u1a4b\u0007\'\u0000"+ - "\u0000\u1a4b\u1a4c\u0007\'\u0000\u0000\u1a4c\u1a4d\u0007\'\u0000\u0000"+ - "\u1a4d\u1a4e\u0007\'\u0000\u0000\u1a4e\u1a51\u0007\'\u0000\u0000\u1a4f"+ - "\u1a51\b0\u0000\u0000\u1a50\u1a3f\u0001\u0000\u0000\u0000\u1a50\u1a41"+ - "\u0001\u0000\u0000\u0000\u1a50\u1a46\u0001\u0000\u0000\u0000\u1a50\u1a4f"+ - "\u0001\u0000\u0000\u0000\u1a51\u1a54\u0001\u0000\u0000\u0000\u1a52\u1a54"+ - "\b1\u0000\u0000\u1a53\u1a3c\u0001\u0000\u0000\u0000\u1a53\u1a3e\u0001"+ - "\u0000\u0000\u0000\u1a53\u1a52\u0001\u0000\u0000\u0000\u1a54\u1a57\u0001"+ - "\u0000\u0000\u0000\u1a55\u1a53\u0001\u0000\u0000\u0000\u1a55\u1a56\u0001"+ - "\u0000\u0000\u0000\u1a56\u0562\u0001\u0000\u0000\u0000\u1a57\u1a55\u0001"+ - "\u0000\u0000\u0000\u1a58\u1a59\u0003\u0567\u02b1\u0000\u1a59\u1a5a\u0005"+ - "\'\u0000\u0000\u1a5a\u1a5b\u0001\u0000\u0000\u0000\u1a5b\u1a5c\u0006\u02af"+ - "\t\u0000\u1a5c\u0564\u0001\u0000\u0000\u0000\u1a5d\u1a5f\u0003\u0567\u02b1"+ - "\u0000\u1a5e\u1a60\u0005\\\u0000\u0000\u1a5f\u1a5e\u0001\u0000\u0000\u0000"+ - "\u1a5f\u1a60\u0001\u0000\u0000\u0000\u1a60\u1a61\u0001\u0000\u0000\u0000"+ - "\u1a61\u1a62\u0005\u0000\u0000\u0001\u1a62\u0566\u0001\u0000\u0000\u0000"+ - "\u1a63\u1a64\u0005\'\u0000\u0000\u1a64\u1a69\u0005\'\u0000\u0000\u1a65"+ - "\u1a66\u0005\\\u0000\u0000\u1a66\u1a69\t\u0000\u0000\u0000\u1a67\u1a69"+ - "\b1\u0000\u0000\u1a68\u1a63\u0001\u0000\u0000\u0000\u1a68\u1a65\u0001"+ - "\u0000\u0000\u0000\u1a68\u1a67\u0001\u0000\u0000\u0000\u1a69\u1a6c\u0001"+ - "\u0000\u0000\u0000\u1a6a\u1a68\u0001\u0000\u0000\u0000\u1a6a\u1a6b\u0001"+ - "\u0000\u0000\u0000\u1a6b\u0568\u0001\u0000\u0000\u0000\u1a6c\u1a6a\u0001"+ - "\u0000\u0000\u0000\u1a6d\u1a6e\u0003\u054d\u02a4\u0000\u1a6e\u1a6f\u0001"+ - "\u0000\u0000\u0000\u1a6f\u1a70\u0006\u02b2\n\u0000\u1a70\u1a71\u0006\u02b2"+ - "\u0007\u0000\u1a71\u056a\u0001\u0000\u0000\u0000\u1a72\u1a73\u0003\u054f"+ - "\u02a5\u0000\u1a73\u1a74\u0001\u0000\u0000\u0000\u1a74\u1a75\u0006\u02b3"+ - "\u000b\u0000\u1a75\u1a76\u0006\u02b3\u0007\u0000\u1a76\u1a77\u0006\u02b3"+ - "\f\u0000\u1a77\u056c\u0001\u0000\u0000\u0000\u1a78\u1a79\u0006\u02b4\r"+ - "\u0000\u1a79\u1a7a\u0001\u0000\u0000\u0000\u1a7a\u1a7b\u0006\u02b4\u000e"+ - "\u0000\u1a7b\u1a7c\u0006\u02b4\u000f\u0000\u1a7c\u056e\u0001\u0000\u0000"+ - "\u0000\u1a7d\u1a7e\u0003\u054d\u02a4\u0000\u1a7e\u1a7f\u0001\u0000\u0000"+ - "\u0000\u1a7f\u1a80\u0006\u02b5\n\u0000\u1a80\u1a81\u0006\u02b5\u0007\u0000"+ - "\u1a81\u0570\u0001\u0000\u0000\u0000\u1a82\u1a83\u0003\u054f\u02a5\u0000"+ - "\u1a83\u1a84\u0001\u0000\u0000\u0000\u1a84\u1a85\u0006\u02b6\u000b\u0000"+ - "\u1a85\u1a86\u0006\u02b6\u0007\u0000\u1a86\u0572\u0001\u0000\u0000\u0000"+ - "\u1a87\u1a88\u0005\'\u0000\u0000\u1a88\u1a89\u0001\u0000\u0000\u0000\u1a89"+ - "\u1a8a\u0006\u02b7\u0002\u0000\u1a8a\u1a8b\u0006\u02b7\u0010\u0000\u1a8b"+ - "\u0574\u0001\u0000\u0000\u0000\u1a8c\u1a8d\u0006\u02b8\u0011\u0000\u1a8d"+ - "\u1a8e\u0001\u0000\u0000\u0000\u1a8e\u1a8f\u0006\u02b8\u000e\u0000\u1a8f"+ - "\u1a90\u0006\u02b8\u000f\u0000\u1a90\u0576\u0001\u0000\u0000\u0000\u1a91"+ - "\u1a93\b2\u0000\u0000\u1a92\u1a91\u0001\u0000\u0000\u0000\u1a93\u1a94"+ - "\u0001\u0000\u0000\u0000\u1a94\u1a92\u0001\u0000\u0000\u0000\u1a94\u1a95"+ - "\u0001\u0000\u0000\u0000\u1a95\u1a9e\u0001\u0000\u0000\u0000\u1a96\u1a9a"+ - "\u0005$\u0000\u0000\u1a97\u1a99\b2\u0000\u0000\u1a98\u1a97\u0001\u0000"+ - "\u0000\u0000\u1a99\u1a9c\u0001\u0000\u0000\u0000\u1a9a\u1a98\u0001\u0000"+ - "\u0000\u0000\u1a9a\u1a9b\u0001\u0000\u0000\u0000\u1a9b\u1a9e\u0001\u0000"+ - "\u0000\u0000\u1a9c\u1a9a\u0001\u0000\u0000\u0000\u1a9d\u1a92\u0001\u0000"+ - "\u0000\u0000\u1a9d\u1a96\u0001\u0000\u0000\u0000\u1a9e\u0578\u0001\u0000"+ - "\u0000\u0000\u1a9f\u1aa1\u0005$\u0000\u0000\u1aa0\u1aa2\u0003\u052f\u0295"+ - "\u0000\u1aa1\u1aa0\u0001\u0000\u0000\u0000\u1aa1\u1aa2\u0001\u0000\u0000"+ - "\u0000\u1aa2\u1aa3\u0001\u0000\u0000\u0000\u1aa3\u1aa4\u0005$\u0000\u0000"+ - "\u1aa4\u1aa5\u0001\u0000\u0000\u0000\u1aa5\u1aa6\u0004\u02ba\b\u0000\u1aa6"+ - "\u1aa7\u0006\u02ba\u0012\u0000\u1aa7\u1aa8\u0001\u0000\u0000\u0000\u1aa8"+ - "\u1aa9\u0006\u02ba\u000f\u0000\u1aa9\u057a\u0001\u0000\u0000\u0000N\u0000"+ - "\u0001\u0002\u0003\u0004\u05be\u05c4\u05c6\u05cb\u05cf\u05d1\u05d4\u05dd"+ - "\u05df\u05e4\u05e9\u05eb\u18d7\u18e0\u18e4\u18e8\u18f1\u18f3\u18fd\u18ff"+ - "\u1919\u191b\u192d\u1938\u1943\u1954\u1968\u196c\u196f\u1975\u1978\u197d"+ - "\u1981\u1986\u198d\u1998\u199a\u19a2\u19a8\u19ab\u19b5\u19c0\u19c8\u19ce"+ - "\u19d1\u19d3\u19d9\u19e7\u19ef\u19f5\u19f8\u19fa\u19fc\u1a02\u1a07\u1a0c"+ - "\u1a10\u1a1a\u1a1e\u1a20\u1a27\u1a2a\u1a38\u1a50\u1a53\u1a55\u1a5f\u1a68"+ - "\u1a6a\u1a94\u1a9a\u1a9d\u1aa1\u0013\u0001\u001c\u0000\u0007\u001d\u0000"+ - "\u0003\u0000\u0000\u0005\u0001\u0000\u0001\u0294\u0001\u0005\u0004\u0000"+ - "\u0001\u029f\u0002\u0000\u0001\u0000\u0001\u02a8\u0003\u0002\u0002\u0000"+ - "\u0007\u029b\u0000\u0007\u029c\u0000\u0002\u0003\u0000\u0001\u02b4\u0004"+ - "\u0006\u0000\u0000\u0004\u0000\u0000\u0002\u0001\u0000\u0001\u02b8\u0005"+ - "\u0001\u02ba\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 f4fcecb0e8..0000000000 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens +++ /dev/null @@ -1,1322 +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 -ZSTREAM=96 -ZTABLE=97 -ZVIEW=98 -TRAILING=99 -TRUE_P=100 -UNION=101 -UNIQUE=102 -USER=103 -USING=104 -VARIADIC=105 -WHEN=106 -WHERE=107 -WINDOW=108 -WITH=109 -AUTHORIZATION=110 -BINARY=111 -COLLATION=112 -CONCURRENTLY=113 -CROSS=114 -CURRENT_SCHEMA=115 -FREEZE=116 -FULL=117 -ILIKE=118 -INNER_P=119 -IS=120 -ISNULL=121 -JOIN=122 -LEFT=123 -LIKE=124 -NATURAL=125 -NOTNULL=126 -OUTER_P=127 -OVER=128 -OVERLAPS=129 -RIGHT=130 -SIMILAR=131 -VERBOSE=132 -ABORT_P=133 -ABSOLUTE_P=134 -ACCESS=135 -ACTION=136 -ADD_P=137 -ADMIN=138 -AFTER=139 -AGGREGATE=140 -ALSO=141 -ALTER=142 -ALWAYS=143 -ASSERTION=144 -ASSIGNMENT=145 -AT=146 -ATTRIBUTE=147 -BACKWARD=148 -BEFORE=149 -BEGIN_P=150 -BY=151 -CACHE=152 -CALLED=153 -CASCADE=154 -CASCADED=155 -CATALOG=156 -CHAIN=157 -CHARACTERISTICS=158 -CHECKPOINT=159 -CLASS=160 -CLOSE=161 -CLUSTER=162 -COMMENT=163 -COMMENTS=164 -COMMIT=165 -COMMITTED=166 -CONFIGURATION=167 -CONNECTION=168 -CONSTRAINTS=169 -CONTENT_P=170 -CONTINUE_P=171 -CONVERSION_P=172 -COPY=173 -COST=174 -CSV=175 -CURSOR=176 -CYCLE=177 -DATA_P=178 -DATABASE=179 -DAY_P=180 -DEALLOCATE=181 -DECLARE=182 -DEFAULTS=183 -DEFERRED=184 -DEFINER=185 -DELETE_P=186 -DELIMITER=187 -DELIMITERS=188 -DICTIONARY=189 -DISABLE_P=190 -DISCARD=191 -DOCUMENT_P=192 -DOMAIN_P=193 -DOUBLE_P=194 -DROP=195 -EACH=196 -ENABLE_P=197 -ENCODING=198 -ENCRYPTED=199 -ENUM_P=200 -ESCAPE=201 -EVENT=202 -EXCLUDE=203 -EXCLUDING=204 -EXCLUSIVE=205 -EXECUTE=206 -EXPLAIN=207 -EXTENSION=208 -EXTERNAL=209 -FAMILY=210 -FIRST_P=211 -FOLLOWING=212 -FORCE=213 -FORWARD=214 -FUNCTION=215 -FUNCTIONS=216 -GLOBAL=217 -GRANTED=218 -HANDLER=219 -HEADER_P=220 -HOLD=221 -HOUR_P=222 -IDENTITY_P=223 -IF_P=224 -IMMEDIATE=225 -IMMUTABLE=226 -IMPLICIT_P=227 -INCLUDING=228 -INCREMENT=229 -INDEX=230 -INDEXES=231 -INHERIT=232 -INHERITS=233 -INLINE_P=234 -INSENSITIVE=235 -INSERT=236 -INSTEAD=237 -INVOKER=238 -ISOLATION=239 -KEY=240 -LABEL=241 -LANGUAGE=242 -LARGE_P=243 -LAST_P=244 -LEAKPROOF=245 -LEVEL=246 -LISTEN=247 -LOAD=248 -LOCAL=249 -LOCATION=250 -LOCK_P=251 -MAPPING=252 -MATCH=253 -MATCHED=254 -MATERIALIZED=255 -MAXVALUE=256 -MERGE=257 -MINUTE_P=258 -MINVALUE=259 -MODE=260 -MONTH_P=261 -MOVE=262 -NAME_P=263 -NAMES=264 -NEXT=265 -NO=266 -NOTHING=267 -NOTIFY=268 -NOWAIT=269 -NULLS_P=270 -OBJECT_P=271 -OF=272 -OFF=273 -OIDS=274 -OPERATOR=275 -OPTION=276 -OPTIONS=277 -OWNED=278 -OWNER=279 -PARSER=280 -PARTIAL=281 -PARTITION=282 -PASSING=283 -PASSWORD=284 -PLANS=285 -PRECEDING=286 -PREPARE=287 -PREPARED=288 -PRESERVE=289 -PRIOR=290 -PRIVILEGES=291 -PROCEDURAL=292 -PROCEDURE=293 -PROGRAM=294 -QUOTE=295 -RANGE=296 -READ=297 -REASSIGN=298 -RECHECK=299 -RECURSIVE=300 -REF=301 -REFRESH=302 -REINDEX=303 -RELATIVE_P=304 -RELEASE=305 -RENAME=306 -REPEATABLE=307 -REPLACE=308 -REPLICA=309 -RESET=310 -RESTART=311 -RESTRICT=312 -RETURNS=313 -REVOKE=314 -ROLE=315 -ROLLBACK=316 -ROWS=317 -RULE=318 -SAVEPOINT=319 -SCHEMA=320 -SCROLL=321 -SEARCH=322 -SECOND_P=323 -SECURITY=324 -SEQUENCE=325 -SEQUENCES=326 -SERIALIZABLE=327 -SERVER=328 -SESSION=329 -SET=330 -SHARE=331 -SHOW=332 -SIMPLE=333 -SNAPSHOT=334 -STABLE=335 -STANDALONE_P=336 -START=337 -STATEMENT=338 -STATISTICS=339 -STDIN=340 -STDOUT=341 -STORAGE=342 -STRICT_P=343 -STRIP_P=344 -SYSID=345 -SYSTEM_P=346 -TABLES=347 -TABLESPACE=348 -TEMP=349 -TEMPLATE=350 -TEMPORARY=351 -TEXT_P=352 -TRANSACTION=353 -TRIGGER=354 -TRUNCATE=355 -TRUSTED=356 -TYPE_P=357 -TYPES_P=358 -UNBOUNDED=359 -UNCOMMITTED=360 -UNENCRYPTED=361 -UNKNOWN=362 -UNLISTEN=363 -UNLOGGED=364 -UNTIL=365 -UPDATE=366 -VACUUM=367 -VALID=368 -VALIDATE=369 -VALIDATOR=370 -VARYING=371 -VERSION_P=372 -VIEW=373 -VOLATILE=374 -WHITESPACE_P=375 -WITHOUT=376 -WORK=377 -WRAPPER=378 -WRITE=379 -XML_P=380 -YEAR_P=381 -YES_P=382 -ZONE=383 -BETWEEN=384 -BIGINT=385 -BIT=386 -BOOLEAN_P=387 -CHAR_P=388 -CHARACTER=389 -COALESCE=390 -DEC=391 -DECIMAL_P=392 -EXISTS=393 -EXTRACT=394 -FLOAT_P=395 -GREATEST=396 -INOUT=397 -INT_P=398 -INTEGER=399 -INTERVAL=400 -LEAST=401 -NATIONAL=402 -NCHAR=403 -NONE=404 -NULLIF=405 -NUMERIC=406 -OVERLAY=407 -POSITION=408 -PRECISION=409 -REAL=410 -ROW=411 -SETOF=412 -SMALLINT=413 -SUBSTRING=414 -TIME=415 -TIMESTAMP=416 -TREAT=417 -TRIM=418 -VALUES=419 -VARCHAR=420 -XMLATTRIBUTES=421 -XMLCOMMENT=422 -XMLAGG=423 -XML_IS_WELL_FORMED=424 -XML_IS_WELL_FORMED_DOCUMENT=425 -XML_IS_WELL_FORMED_CONTENT=426 -XPATH=427 -XPATH_EXISTS=428 -XMLCONCAT=429 -XMLELEMENT=430 -XMLEXISTS=431 -XMLFOREST=432 -XMLPARSE=433 -XMLPI=434 -XMLROOT=435 -XMLSERIALIZE=436 -CALL=437 -CURRENT_P=438 -ATTACH=439 -DETACH=440 -EXPRESSION=441 -GENERATED=442 -LOGGED=443 -STORED=444 -INCLUDE=445 -ROUTINE=446 -TRANSFORM=447 -IMPORT_P=448 -POLICY=449 -METHOD=450 -REFERENCING=451 -NEW=452 -OLD=453 -VALUE_P=454 -SUBSCRIPTION=455 -PUBLICATION=456 -OUT_P=457 -END_P=458 -ROUTINES=459 -SCHEMAS=460 -PROCEDURES=461 -INPUT_P=462 -SUPPORT=463 -PARALLEL=464 -SQL_P=465 -DEPENDS=466 -OVERRIDING=467 -CONFLICT=468 -SKIP_P=469 -LOCKED=470 -TIES=471 -ROLLUP=472 -CUBE=473 -GROUPING=474 -SETS=475 -TABLESAMPLE=476 -ORDINALITY=477 -XMLTABLE=478 -COLUMNS=479 -XMLNAMESPACES=480 -ROWTYPE=481 -NORMALIZED=482 -WITHIN=483 -FILTER=484 -GROUPS=485 -OTHERS=486 -NFC=487 -NFD=488 -NFKC=489 -NFKD=490 -UESCAPE=491 -VIEWS=492 -NORMALIZE=493 -DUMP=494 -PRINT_STRICT_PARAMS=495 -VARIABLE_CONFLICT=496 -ERROR=497 -USE_VARIABLE=498 -USE_COLUMN=499 -ALIAS=500 -CONSTANT=501 -PERFORM=502 -GET=503 -DIAGNOSTICS=504 -STACKED=505 -ELSIF=506 -WHILE=507 -REVERSE=508 -FOREACH=509 -SLICE=510 -EXIT=511 -RETURN=512 -QUERY=513 -RAISE=514 -SQLSTATE=515 -DEBUG=516 -LOG=517 -INFO=518 -NOTICE=519 -WARNING=520 -EXCEPTION=521 -ASSERT=522 -LOOP=523 -OPEN=524 -ABS=525 -CBRT=526 -CEIL=527 -CEILING=528 -DEGREES=529 -DIV=530 -EXP=531 -FACTORIAL=532 -FLOOR=533 -GCD=534 -LCM=535 -LN=536 -LOG10=537 -MIN_SCALE=538 -MOD=539 -PI=540 -POWER=541 -RADIANS=542 -ROUND=543 -SCALE=544 -SIGN=545 -SQRT=546 -TRIM_SCALE=547 -TRUNC=548 -WIDTH_BUCKET=549 -RANDOM=550 -SETSEED=551 -ACOS=552 -ACOSD=553 -ASIN=554 -ASIND=555 -ATAN=556 -ATAND=557 -ATAN2=558 -ATAN2D=559 -COS=560 -COSD=561 -COT=562 -COTD=563 -SIN=564 -SIND=565 -TAN=566 -TAND=567 -SINH=568 -COSH=569 -TANH=570 -ASINH=571 -ACOSH=572 -ATANH=573 -BIT_LENGTH=574 -CHAR_LENGTH=575 -CHARACTER_LENGTH=576 -LOWER=577 -OCTET_LENGTH=578 -UPPER=579 -ASCII=580 -BTRIM=581 -CHR=582 -CONCAT=583 -CONCAT_WS=584 -FORMAT=585 -INITCAP=586 -LENGTH=587 -LPAD=588 -LTRIM=589 -MD5=590 -PARSE_IDENT=591 -PG_CLIENT_ENCODING=592 -QUOTE_IDENT=593 -QUOTE_LITERAL=594 -QUOTE_NULLABLE=595 -REGEXP_COUNT=596 -REGEXP_INSTR=597 -REGEXP_LIKE=598 -REGEXP_MATCH=599 -REGEXP_MATCHES=600 -REGEXP_REPLACE=601 -REGEXP_SPLIT_TO_ARRAY=602 -REGEXP_SPLIT_TO_TABLE=603 -REGEXP_SUBSTR=604 -REPEAT=605 -RPAD=606 -RTRIM=607 -SPLIT_PART=608 -STARTS_WITH=609 -STRING_TO_ARRAY=610 -STRING_TO_TABLE=611 -STRPOS=612 -SUBSTR=613 -TO_ASCII=614 -TO_HEX=615 -TRANSLATE=616 -UNISTR=617 -AGE=618 -CLOCK_TIMESTAMP=619 -DATE_BIN=620 -DATE_PART=621 -DATE_TRUNC=622 -ISFINITE=623 -JUSTIFY_DAYS=624 -JUSTIFY_HOURS=625 -JUSTIFY_INTERVAL=626 -MAKE_DATE=627 -MAKE_INTERVAL=628 -MAKE_TIME=629 -MAKE_TIMESTAMP=630 -MAKE_TIMESTAMPTZ=631 -NOW=632 -STATEMENT_TIMESTAMP=633 -TIMEOFDAY=634 -TRANSACTION_TIMESTAMP=635 -TO_TIMESTAMP=636 -TO_CHAR=637 -TO_DATE=638 -TO_NUMBER=639 -Identifier=640 -QuotedIdentifier=641 -UnterminatedQuotedIdentifier=642 -InvalidQuotedIdentifier=643 -InvalidUnterminatedQuotedIdentifier=644 -UnicodeQuotedIdentifier=645 -UnterminatedUnicodeQuotedIdentifier=646 -InvalidUnicodeQuotedIdentifier=647 -InvalidUnterminatedUnicodeQuotedIdentifier=648 -StringConstant=649 -UnterminatedStringConstant=650 -UnicodeEscapeStringConstant=651 -UnterminatedUnicodeEscapeStringConstant=652 -BeginDollarStringConstant=653 -BinaryStringConstant=654 -UnterminatedBinaryStringConstant=655 -InvalidBinaryStringConstant=656 -InvalidUnterminatedBinaryStringConstant=657 -HexadecimalStringConstant=658 -UnterminatedHexadecimalStringConstant=659 -InvalidHexadecimalStringConstant=660 -InvalidUnterminatedHexadecimalStringConstant=661 -Integral=662 -NumericFail=663 -Numeric=664 -PLSQLVARIABLENAME=665 -PLSQLIDENTIFIER=666 -Whitespace=667 -Newline=668 -LineComment=669 -BlockComment=670 -UnterminatedBlockComment=671 -MetaCommand=672 -EndMetaCommand=673 -ErrorCharacter=674 -EscapeStringConstant=675 -UnterminatedEscapeStringConstant=676 -InvalidEscapeStringConstant=677 -InvalidUnterminatedEscapeStringConstant=678 -AfterEscapeStringConstantMode_NotContinued=679 -AfterEscapeStringConstantWithNewlineMode_NotContinued=680 -DollarText=681 -EndDollarStringConstant=682 -AfterEscapeStringConstantWithNewlineMode_Continued=683 -'$'=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 -'ZSTREAM'=96 -'ZTABLE'=97 -'ZVIEW'=98 -'TRAILING'=99 -'TRUE'=100 -'UNION'=101 -'UNIQUE'=102 -'USER'=103 -'USING'=104 -'VARIADIC'=105 -'WHEN'=106 -'WHERE'=107 -'WINDOW'=108 -'WITH'=109 -'AUTHORIZATION'=110 -'BINARY'=111 -'COLLATION'=112 -'CONCURRENTLY'=113 -'CROSS'=114 -'CURRENT_SCHEMA'=115 -'FREEZE'=116 -'FULL'=117 -'ILIKE'=118 -'INNER'=119 -'IS'=120 -'ISNULL'=121 -'JOIN'=122 -'LEFT'=123 -'LIKE'=124 -'NATURAL'=125 -'NOTNULL'=126 -'OUTER'=127 -'OVER'=128 -'OVERLAPS'=129 -'RIGHT'=130 -'SIMILAR'=131 -'VERBOSE'=132 -'ABORT'=133 -'ABSOLUTE'=134 -'ACCESS'=135 -'ACTION'=136 -'ADD'=137 -'ADMIN'=138 -'AFTER'=139 -'AGGREGATE'=140 -'ALSO'=141 -'ALTER'=142 -'ALWAYS'=143 -'ASSERTION'=144 -'ASSIGNMENT'=145 -'AT'=146 -'ATTRIBUTE'=147 -'BACKWARD'=148 -'BEFORE'=149 -'BEGIN'=150 -'BY'=151 -'CACHE'=152 -'CALLED'=153 -'CASCADE'=154 -'CASCADED'=155 -'CATALOG'=156 -'CHAIN'=157 -'CHARACTERISTICS'=158 -'CHECKPOINT'=159 -'CLASS'=160 -'CLOSE'=161 -'CLUSTER'=162 -'COMMENT'=163 -'COMMENTS'=164 -'COMMIT'=165 -'COMMITTED'=166 -'CONFIGURATION'=167 -'CONNECTION'=168 -'CONSTRAINTS'=169 -'CONTENT'=170 -'CONTINUE'=171 -'CONVERSION'=172 -'COPY'=173 -'COST'=174 -'CSV'=175 -'CURSOR'=176 -'CYCLE'=177 -'DATA'=178 -'DATABASE'=179 -'DAY'=180 -'DEALLOCATE'=181 -'DECLARE'=182 -'DEFAULTS'=183 -'DEFERRED'=184 -'DEFINER'=185 -'DELETE'=186 -'DELIMITER'=187 -'DELIMITERS'=188 -'DICTIONARY'=189 -'DISABLE'=190 -'DISCARD'=191 -'DOCUMENT'=192 -'DOMAIN'=193 -'DOUBLE'=194 -'DROP'=195 -'EACH'=196 -'ENABLE'=197 -'ENCODING'=198 -'ENCRYPTED'=199 -'ENUM'=200 -'ESCAPE'=201 -'EVENT'=202 -'EXCLUDE'=203 -'EXCLUDING'=204 -'EXCLUSIVE'=205 -'EXECUTE'=206 -'EXPLAIN'=207 -'EXTENSION'=208 -'EXTERNAL'=209 -'FAMILY'=210 -'FIRST'=211 -'FOLLOWING'=212 -'FORCE'=213 -'FORWARD'=214 -'FUNCTION'=215 -'FUNCTIONS'=216 -'GLOBAL'=217 -'GRANTED'=218 -'HANDLER'=219 -'HEADER'=220 -'HOLD'=221 -'HOUR'=222 -'IDENTITY'=223 -'IF'=224 -'IMMEDIATE'=225 -'IMMUTABLE'=226 -'IMPLICIT'=227 -'INCLUDING'=228 -'INCREMENT'=229 -'INDEX'=230 -'INDEXES'=231 -'INHERIT'=232 -'INHERITS'=233 -'INLINE'=234 -'INSENSITIVE'=235 -'INSERT'=236 -'INSTEAD'=237 -'INVOKER'=238 -'ISOLATION'=239 -'KEY'=240 -'LABEL'=241 -'LANGUAGE'=242 -'LARGE'=243 -'LAST'=244 -'LEAKPROOF'=245 -'LEVEL'=246 -'LISTEN'=247 -'LOAD'=248 -'LOCAL'=249 -'LOCATION'=250 -'LOCK'=251 -'MAPPING'=252 -'MATCH'=253 -'MATCHED'=254 -'MATERIALIZED'=255 -'MAXVALUE'=256 -'MERGE'=257 -'MINUTE'=258 -'MINVALUE'=259 -'MODE'=260 -'MONTH'=261 -'MOVE'=262 -'NAME'=263 -'NAMES'=264 -'NEXT'=265 -'NO'=266 -'NOTHING'=267 -'NOTIFY'=268 -'NOWAIT'=269 -'NULLS'=270 -'OBJECT'=271 -'OF'=272 -'OFF'=273 -'OIDS'=274 -'OPERATOR'=275 -'OPTION'=276 -'OPTIONS'=277 -'OWNED'=278 -'OWNER'=279 -'PARSER'=280 -'PARTIAL'=281 -'PARTITION'=282 -'PASSING'=283 -'PASSWORD'=284 -'PLANS'=285 -'PRECEDING'=286 -'PREPARE'=287 -'PREPARED'=288 -'PRESERVE'=289 -'PRIOR'=290 -'PRIVILEGES'=291 -'PROCEDURAL'=292 -'PROCEDURE'=293 -'PROGRAM'=294 -'QUOTE'=295 -'RANGE'=296 -'READ'=297 -'REASSIGN'=298 -'RECHECK'=299 -'RECURSIVE'=300 -'REF'=301 -'REFRESH'=302 -'REINDEX'=303 -'RELATIVE'=304 -'RELEASE'=305 -'RENAME'=306 -'REPEATABLE'=307 -'REPLACE'=308 -'REPLICA'=309 -'RESET'=310 -'RESTART'=311 -'RESTRICT'=312 -'RETURNS'=313 -'REVOKE'=314 -'ROLE'=315 -'ROLLBACK'=316 -'ROWS'=317 -'RULE'=318 -'SAVEPOINT'=319 -'SCHEMA'=320 -'SCROLL'=321 -'SEARCH'=322 -'SECOND'=323 -'SECURITY'=324 -'SEQUENCE'=325 -'SEQUENCES'=326 -'SERIALIZABLE'=327 -'SERVER'=328 -'SESSION'=329 -'SET'=330 -'SHARE'=331 -'SHOW'=332 -'SIMPLE'=333 -'SNAPSHOT'=334 -'STABLE'=335 -'STANDALONE'=336 -'START'=337 -'STATEMENT'=338 -'STATISTICS'=339 -'STDIN'=340 -'STDOUT'=341 -'STORAGE'=342 -'STRICT'=343 -'STRIP'=344 -'SYSID'=345 -'SYSTEM'=346 -'TABLES'=347 -'TABLESPACE'=348 -'TEMP'=349 -'TEMPLATE'=350 -'TEMPORARY'=351 -'TEXT'=352 -'TRANSACTION'=353 -'TRIGGER'=354 -'TRUNCATE'=355 -'TRUSTED'=356 -'TYPE'=357 -'TYPES'=358 -'UNBOUNDED'=359 -'UNCOMMITTED'=360 -'UNENCRYPTED'=361 -'UNKNOWN'=362 -'UNLISTEN'=363 -'UNLOGGED'=364 -'UNTIL'=365 -'UPDATE'=366 -'VACUUM'=367 -'VALID'=368 -'VALIDATE'=369 -'VALIDATOR'=370 -'VARYING'=371 -'VERSION'=372 -'VIEW'=373 -'VOLATILE'=374 -'WHITESPACE'=375 -'WITHOUT'=376 -'WORK'=377 -'WRAPPER'=378 -'WRITE'=379 -'XML'=380 -'YEAR'=381 -'YES'=382 -'ZONE'=383 -'BETWEEN'=384 -'BIGINT'=385 -'BIT'=386 -'BOOLEAN'=387 -'CHAR'=388 -'CHARACTER'=389 -'COALESCE'=390 -'DEC'=391 -'DECIMAL'=392 -'EXISTS'=393 -'EXTRACT'=394 -'FLOAT'=395 -'GREATEST'=396 -'INOUT'=397 -'INT'=398 -'INTEGER'=399 -'INTERVAL'=400 -'LEAST'=401 -'NATIONAL'=402 -'NCHAR'=403 -'NONE'=404 -'NULLIF'=405 -'NUMERIC'=406 -'OVERLAY'=407 -'POSITION'=408 -'PRECISION'=409 -'REAL'=410 -'ROW'=411 -'SETOF'=412 -'SMALLINT'=413 -'SUBSTRING'=414 -'TIME'=415 -'TIMESTAMP'=416 -'TREAT'=417 -'TRIM'=418 -'VALUES'=419 -'VARCHAR'=420 -'XMLATTRIBUTES'=421 -'XMLCOMMENT'=422 -'XMLAGG'=423 -'XML_IS_WELL_FORMED'=424 -'XML_IS_WELL_FORMED_DOCUMENT'=425 -'XML_IS_WELL_FORMED_CONTENT'=426 -'XPATH'=427 -'XPATH_EXISTS'=428 -'XMLCONCAT'=429 -'XMLELEMENT'=430 -'XMLEXISTS'=431 -'XMLFOREST'=432 -'XMLPARSE'=433 -'XMLPI'=434 -'XMLROOT'=435 -'XMLSERIALIZE'=436 -'CALL'=437 -'CURRENT'=438 -'ATTACH'=439 -'DETACH'=440 -'EXPRESSION'=441 -'GENERATED'=442 -'LOGGED'=443 -'STORED'=444 -'INCLUDE'=445 -'ROUTINE'=446 -'TRANSFORM'=447 -'IMPORT'=448 -'POLICY'=449 -'METHOD'=450 -'REFERENCING'=451 -'NEW'=452 -'OLD'=453 -'VALUE'=454 -'SUBSCRIPTION'=455 -'PUBLICATION'=456 -'OUT'=457 -'END'=458 -'ROUTINES'=459 -'SCHEMAS'=460 -'PROCEDURES'=461 -'INPUT'=462 -'SUPPORT'=463 -'PARALLEL'=464 -'SQL'=465 -'DEPENDS'=466 -'OVERRIDING'=467 -'CONFLICT'=468 -'SKIP'=469 -'LOCKED'=470 -'TIES'=471 -'ROLLUP'=472 -'CUBE'=473 -'GROUPING'=474 -'SETS'=475 -'TABLESAMPLE'=476 -'ORDINALITY'=477 -'XMLTABLE'=478 -'COLUMNS'=479 -'XMLNAMESPACES'=480 -'ROWTYPE'=481 -'NORMALIZED'=482 -'WITHIN'=483 -'FILTER'=484 -'GROUPS'=485 -'OTHERS'=486 -'NFC'=487 -'NFD'=488 -'NFKC'=489 -'NFKD'=490 -'UESCAPE'=491 -'VIEWS'=492 -'NORMALIZE'=493 -'DUMP'=494 -'PRINT_STRICT_PARAMS'=495 -'VARIABLE_CONFLICT'=496 -'ERROR'=497 -'USE_VARIABLE'=498 -'USE_COLUMN'=499 -'ALIAS'=500 -'CONSTANT'=501 -'PERFORM'=502 -'GET'=503 -'DIAGNOSTICS'=504 -'STACKED'=505 -'ELSIF'=506 -'WHILE'=507 -'REVERSE'=508 -'FOREACH'=509 -'SLICE'=510 -'EXIT'=511 -'RETURN'=512 -'QUERY'=513 -'RAISE'=514 -'SQLSTATE'=515 -'DEBUG'=516 -'LOG'=517 -'INFO'=518 -'NOTICE'=519 -'WARNING'=520 -'EXCEPTION'=521 -'ASSERT'=522 -'LOOP'=523 -'OPEN'=524 -'ABS'=525 -'CBRT'=526 -'CEIL'=527 -'CEILING'=528 -'DEGREES'=529 -'DIV'=530 -'EXP'=531 -'FACTORIAL'=532 -'FLOOR'=533 -'GCD'=534 -'LCM'=535 -'LN'=536 -'LOG10'=537 -'MIN_SCALE'=538 -'MOD'=539 -'PI'=540 -'POWER'=541 -'RADIANS'=542 -'ROUND'=543 -'SCALE'=544 -'SIGN'=545 -'SQRT'=546 -'TRIM_SCALE'=547 -'TRUNC'=548 -'WIDTH_BUCKET'=549 -'RANDOM'=550 -'SETSEED'=551 -'ACOS'=552 -'ACOSD'=553 -'ASIN'=554 -'ASIND'=555 -'ATAN'=556 -'ATAND'=557 -'ATAN2'=558 -'ATAN2D'=559 -'COS'=560 -'COSD'=561 -'COT'=562 -'COTD'=563 -'SIN'=564 -'SIND'=565 -'TAN'=566 -'TAND'=567 -'SINH'=568 -'COSH'=569 -'TANH'=570 -'ASINH'=571 -'ACOSH'=572 -'ATANH'=573 -'BIT_LENGTH'=574 -'CHAR_LENGTH'=575 -'CHARACTER_LENGTH'=576 -'LOWER'=577 -'OCTET_LENGTH'=578 -'UPPER'=579 -'ASCII'=580 -'BTRIM'=581 -'CHR'=582 -'CONCAT'=583 -'CONCAT_WS'=584 -'FORMAT'=585 -'INITCAP'=586 -'LENGTH'=587 -'LPAD'=588 -'LTRIM'=589 -'MD5'=590 -'PARSE_IDENT'=591 -'PG_CLIENT_ENCODING'=592 -'QUOTE_IDENT'=593 -'QUOTE_LITERAL'=594 -'QUOTE_NULLABLE'=595 -'REGEXP_COUNT'=596 -'REGEXP_INSTR'=597 -'REGEXP_LIKE'=598 -'REGEXP_MATCH'=599 -'REGEXP_MATCHES'=600 -'REGEXP_REPLACE'=601 -'REGEXP_SPLIT_TO_ARRAY'=602 -'REGEXP_SPLIT_TO_TABLE'=603 -'REGEXP_SUBSTR'=604 -'REPEAT'=605 -'RPAD'=606 -'RTRIM'=607 -'SPLIT_PART'=608 -'STARTS_WITH'=609 -'STRING_TO_ARRAY'=610 -'STRING_TO_TABLE'=611 -'STRPOS'=612 -'SUBSTR'=613 -'TO_ASCII'=614 -'TO_HEX'=615 -'TRANSLATE'=616 -'UNISTR'=617 -'AGE'=618 -'CLOCK_TIMESTAMP'=619 -'DATE_BIN'=620 -'DATE_PART'=621 -'DATE_TRUNC'=622 -'ISFINITE'=623 -'JUSTIFY_DAYS'=624 -'JUSTIFY_HOURS'=625 -'JUSTIFY_INTERVAL'=626 -'MAKE_DATE'=627 -'MAKE_INTERVAL'=628 -'MAKE_TIME'=629 -'MAKE_TIMESTAMP'=630 -'MAKE_TIMESTAMPTZ'=631 -'NOW'=632 -'STATEMENT_TIMESTAMP'=633 -'TIMEOFDAY'=634 -'TRANSACTION_TIMESTAMP'=635 -'TO_TIMESTAMP'=636 -'TO_CHAR'=637 -'TO_DATE'=638 -'TO_NUMBER'=639 -'\\\\'=673 -'\''=683 From cfe8ade013967802ef7942f075bf9734bcfb5054 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 13 Nov 2024 17:50:27 -0800 Subject: [PATCH 004/104] Remove redunant files --- .../pgsql/parser/gen/PostgreSqlLexer.interp | 2086 ----------------- .../pgsql/parser/gen/PostgreSqlLexer.tokens | 1322 ----------- 2 files changed, 3408 deletions(-) delete mode 100644 incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.interp delete mode 100644 incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.tokens diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.interp b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.interp deleted file mode 100644 index 09c286606c..0000000000 --- a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.interp +++ /dev/null @@ -1,2086 +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' -'ZSTREAM' -'ZTABLE' -'ZVIEW' -'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 -ZSTREAM -ZTABLE -ZVIEW -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 -ZSTREAM -ZTABLE -ZVIEW -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, 683, 6826, 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, 2, 697, 7, 697, 2, 698, 7, 698, 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, 1469, 8, 27, 11, 27, 12, 27, 1470, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1477, 8, 28, 11, 28, 12, 28, 1478, 1, 28, 1, 28, 1, 28, 3, 28, 1484, 8, 28, 1, 28, 1, 28, 4, 28, 1488, 8, 28, 11, 28, 12, 28, 1489, 1, 28, 3, 28, 1493, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1502, 8, 29, 10, 29, 12, 29, 1505, 9, 29, 1, 29, 1, 29, 3, 29, 1509, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1514, 8, 29, 11, 29, 12, 29, 1515, 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, 99, 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, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 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, 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, 113, 1, 113, 1, 113, 1, 113, 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, 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, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 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, 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, 129, 1, 129, 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, 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, 132, 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, 134, 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, 137, 1, 137, 1, 137, 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, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 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, 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, 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, 147, 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, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 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, 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, 154, 1, 154, 1, 154, 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, 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, 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, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 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, 162, 1, 162, 1, 162, 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, 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, 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, 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, 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, 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, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 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, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 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, 184, 1, 184, 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, 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, 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, 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, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 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, 194, 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, 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, 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, 201, 1, 201, 1, 201, 1, 202, 1, 202, 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, 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, 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, 208, 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, 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, 212, 1, 212, 1, 212, 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, 215, 1, 215, 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, 218, 1, 219, 1, 219, 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, 221, 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, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 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, 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, 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, 231, 1, 231, 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, 232, 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, 235, 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, 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, 238, 1, 238, 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, 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, 242, 1, 242, 1, 242, 1, 242, 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, 245, 1, 245, 1, 245, 1, 245, 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, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 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, 253, 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, 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, 258, 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, 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, 261, 1, 261, 1, 262, 1, 262, 1, 262, 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, 264, 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, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 270, 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, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 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, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 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, 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, 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, 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, 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, 289, 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, 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, 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, 294, 1, 295, 1, 295, 1, 295, 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, 296, 1, 296, 1, 296, 1, 296, 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, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 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, 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, 303, 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, 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, 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, 309, 1, 310, 1, 310, 1, 310, 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, 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, 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, 315, 1, 315, 1, 316, 1, 316, 1, 316, 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, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 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, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 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, 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, 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, 329, 1, 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 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, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 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, 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, 339, 1, 339, 1, 339, 1, 339, 1, 339, 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, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 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, 344, 1, 345, 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, 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, 350, 1, 350, 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, 351, 1, 351, 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, 353, 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, 356, 1, 356, 1, 356, 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, 358, 1, 358, 1, 358, 1, 358, 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, 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, 363, 1, 363, 1, 363, 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, 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, 366, 1, 366, 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, 367, 1, 367, 1, 367, 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, 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, 372, 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, 373, 1, 373, 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, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 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, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 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, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 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, 389, 1, 389, 1, 389, 1, 389, 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, 392, 1, 392, 1, 392, 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, 393, 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, 396, 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, 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, 402, 1, 402, 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, 405, 1, 405, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 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, 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, 411, 1, 411, 1, 411, 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, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, 414, 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, 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, 419, 1, 419, 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, 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, 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, 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, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 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, 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, 429, 1, 429, 1, 429, 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, 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, 433, 1, 434, 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, 435, 1, 435, 1, 435, 1, 435, 1, 436, 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, 438, 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, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 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, 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, 444, 1, 444, 1, 444, 1, 445, 1, 445, 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, 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, 449, 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, 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, 453, 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, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 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, 458, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 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, 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, 463, 1, 463, 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, 464, 1, 464, 1, 464, 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, 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, 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, 470, 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, 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, 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, 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, 480, 1, 480, 1, 480, 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, 483, 1, 483, 1, 483, 1, 484, 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, 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, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 490, 1, 490, 1, 490, 1, 490, 1, 491, 1, 491, 1, 491, 1, 491, 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, 495, 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, 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, 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, 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, 501, 1, 501, 1, 501, 1, 501, 1, 501, 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, 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, 504, 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, 505, 1, 505, 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, 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, 510, 1, 511, 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, 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, 515, 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, 517, 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, 518, 1, 518, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 520, 1, 520, 1, 520, 1, 520, 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, 523, 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, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 525, 1, 525, 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, 528, 1, 528, 1, 528, 1, 528, 1, 529, 1, 529, 1, 529, 1, 529, 1, 529, 1, 530, 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, 532, 1, 532, 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, 535, 1, 535, 1, 535, 1, 535, 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, 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, 541, 1, 541, 1, 542, 1, 542, 1, 542, 1, 542, 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, 545, 1, 545, 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, 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, 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, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 554, 1, 554, 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, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 562, 1, 562, 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, 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, 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, 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, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 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, 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, 581, 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, 583, 1, 583, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 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, 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, 589, 1, 589, 1, 589, 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, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 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, 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, 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, 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, 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, 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, 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, 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, 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, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 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, 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, 609, 1, 609, 1, 609, 1, 609, 1, 609, 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, 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, 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, 614, 1, 614, 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, 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, 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, 619, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 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, 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, 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, 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, 628, 1, 628, 1, 628, 1, 628, 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, 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, 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, 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, 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, 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, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 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, 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, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 643, 1, 643, 5, 643, 6358, 8, 643, 10, 643, 12, 643, 6361, 9, 643, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 3, 644, 6369, 8, 644, 1, 645, 1, 645, 3, 645, 6373, 8, 645, 1, 646, 1, 646, 3, 646, 6377, 8, 646, 1, 647, 1, 647, 1, 647, 1, 648, 1, 648, 1, 648, 1, 648, 5, 648, 6386, 8, 648, 10, 648, 12, 648, 6389, 9, 648, 1, 649, 1, 649, 1, 649, 1, 650, 1, 650, 1, 650, 1, 650, 5, 650, 6398, 8, 650, 10, 650, 12, 650, 6401, 9, 650, 1, 651, 1, 651, 1, 651, 1, 651, 1, 652, 1, 652, 1, 652, 1, 652, 1, 653, 1, 653, 1, 653, 1, 653, 1, 654, 1, 654, 1, 654, 1, 654, 1, 655, 1, 655, 1, 655, 1, 656, 1, 656, 1, 656, 1, 656, 5, 656, 6426, 8, 656, 10, 656, 12, 656, 6429, 9, 656, 1, 657, 1, 657, 1, 657, 1, 657, 1, 657, 1, 657, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 1, 659, 1, 659, 1, 660, 1, 660, 3, 660, 6446, 8, 660, 1, 660, 1, 660, 1, 660, 1, 660, 1, 660, 1, 661, 1, 661, 5, 661, 6455, 8, 661, 10, 661, 12, 661, 6458, 9, 661, 1, 662, 1, 662, 1, 662, 1, 663, 1, 663, 1, 663, 5, 663, 6466, 8, 663, 10, 663, 12, 663, 6469, 9, 663, 1, 664, 1, 664, 1, 664, 1, 665, 1, 665, 1, 665, 1, 666, 1, 666, 1, 666, 1, 667, 1, 667, 1, 667, 5, 667, 6483, 8, 667, 10, 667, 12, 667, 6486, 9, 667, 1, 668, 1, 668, 1, 668, 1, 669, 1, 669, 1, 669, 1, 670, 1, 670, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 672, 1, 672, 1, 672, 3, 672, 6505, 8, 672, 1, 672, 1, 672, 3, 672, 6509, 8, 672, 1, 672, 3, 672, 6512, 8, 672, 1, 672, 1, 672, 1, 672, 1, 672, 3, 672, 6518, 8, 672, 1, 672, 3, 672, 6521, 8, 672, 1, 672, 1, 672, 1, 672, 3, 672, 6526, 8, 672, 1, 672, 1, 672, 3, 672, 6530, 8, 672, 1, 673, 4, 673, 6533, 8, 673, 11, 673, 12, 673, 6534, 1, 674, 1, 674, 1, 674, 5, 674, 6540, 8, 674, 10, 674, 12, 674, 6543, 9, 674, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 5, 675, 6553, 8, 675, 10, 675, 12, 675, 6556, 9, 675, 1, 675, 1, 675, 1, 676, 4, 676, 6561, 8, 676, 11, 676, 12, 676, 6562, 1, 676, 1, 676, 1, 677, 1, 677, 3, 677, 6569, 8, 677, 1, 677, 3, 677, 6572, 8, 677, 1, 677, 1, 677, 1, 678, 1, 678, 1, 678, 1, 678, 5, 678, 6580, 8, 678, 10, 678, 12, 678, 6583, 9, 678, 1, 678, 1, 678, 1, 679, 1, 679, 1, 679, 1, 679, 5, 679, 6591, 8, 679, 10, 679, 12, 679, 6594, 9, 679, 1, 679, 1, 679, 1, 679, 4, 679, 6599, 8, 679, 11, 679, 12, 679, 6600, 1, 679, 1, 679, 4, 679, 6605, 8, 679, 11, 679, 12, 679, 6606, 1, 679, 5, 679, 6610, 8, 679, 10, 679, 12, 679, 6613, 9, 679, 1, 679, 5, 679, 6616, 8, 679, 10, 679, 12, 679, 6619, 9, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 680, 1, 680, 1, 680, 1, 680, 5, 680, 6630, 8, 680, 10, 680, 12, 680, 6633, 9, 680, 1, 680, 1, 680, 1, 680, 4, 680, 6638, 8, 680, 11, 680, 12, 680, 6639, 1, 680, 1, 680, 4, 680, 6644, 8, 680, 11, 680, 12, 680, 6645, 1, 680, 3, 680, 6649, 8, 680, 5, 680, 6651, 8, 680, 10, 680, 12, 680, 6654, 9, 680, 1, 680, 4, 680, 6657, 8, 680, 11, 680, 12, 680, 6658, 1, 680, 4, 680, 6662, 8, 680, 11, 680, 12, 680, 6663, 1, 680, 5, 680, 6667, 8, 680, 10, 680, 12, 680, 6670, 9, 680, 1, 680, 3, 680, 6673, 8, 680, 1, 680, 1, 680, 1, 681, 1, 681, 1, 681, 1, 681, 5, 681, 6681, 8, 681, 10, 681, 12, 681, 6684, 9, 681, 1, 681, 5, 681, 6687, 8, 681, 10, 681, 12, 681, 6690, 9, 681, 1, 681, 1, 681, 5, 681, 6694, 8, 681, 10, 681, 12, 681, 6697, 9, 681, 3, 681, 6699, 8, 681, 1, 682, 1, 682, 1, 682, 1, 683, 1, 683, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 685, 1, 685, 3, 685, 6713, 8, 685, 1, 685, 1, 685, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 3, 686, 6737, 8, 686, 1, 686, 5, 686, 6740, 8, 686, 10, 686, 12, 686, 6743, 9, 686, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 688, 1, 688, 3, 688, 6752, 8, 688, 1, 688, 1, 688, 1, 689, 1, 689, 1, 689, 1, 689, 1, 689, 5, 689, 6761, 8, 689, 10, 689, 12, 689, 6764, 9, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 691, 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, 1, 695, 1, 695, 1, 695, 1, 695, 1, 696, 1, 696, 1, 696, 1, 696, 1, 696, 1, 697, 4, 697, 6803, 8, 697, 11, 697, 12, 697, 6804, 1, 697, 1, 697, 5, 697, 6809, 8, 697, 10, 697, 12, 697, 6812, 9, 697, 3, 697, 6814, 8, 697, 1, 698, 1, 698, 3, 698, 6818, 8, 698, 1, 698, 1, 698, 1, 698, 1, 698, 1, 698, 1, 698, 1, 698, 0, 0, 699, 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, 639, 1291, 640, 1293, 0, 1295, 0, 1297, 0, 1299, 641, 1301, 642, 1303, 643, 1305, 644, 1307, 645, 1309, 646, 1311, 647, 1313, 648, 1315, 649, 1317, 650, 1319, 0, 1321, 651, 1323, 652, 1325, 653, 1327, 0, 1329, 654, 1331, 655, 1333, 656, 1335, 657, 1337, 658, 1339, 659, 1341, 660, 1343, 661, 1345, 662, 1347, 663, 1349, 664, 1351, 0, 1353, 665, 1355, 666, 1357, 667, 1359, 668, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 673, 1371, 674, 1373, 675, 1375, 676, 1377, 0, 1379, 677, 1381, 678, 1383, 0, 1385, 0, 1387, 0, 1389, 679, 1391, 0, 1393, 0, 1395, 683, 1397, 680, 1399, 681, 1401, 682, 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, 87, 87, 119, 119, 2, 0, 81, 81, 113, 113, 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, 6898, 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, 1289, 1, 0, 0, 0, 0, 1291, 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, 1323, 1, 0, 0, 0, 0, 1325, 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, 1347, 1, 0, 0, 0, 0, 1349, 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, 0, 1369, 1, 0, 0, 0, 0, 1371, 1, 0, 0, 0, 1, 1373, 1, 0, 0, 0, 1, 1375, 1, 0, 0, 0, 1, 1379, 1, 0, 0, 0, 1, 1381, 1, 0, 0, 0, 2, 1385, 1, 0, 0, 0, 2, 1387, 1, 0, 0, 0, 2, 1389, 1, 0, 0, 0, 3, 1391, 1, 0, 0, 0, 3, 1393, 1, 0, 0, 0, 3, 1395, 1, 0, 0, 0, 3, 1397, 1, 0, 0, 0, 4, 1399, 1, 0, 0, 0, 4, 1401, 1, 0, 0, 0, 5, 1403, 1, 0, 0, 0, 7, 1405, 1, 0, 0, 0, 9, 1407, 1, 0, 0, 0, 11, 1409, 1, 0, 0, 0, 13, 1411, 1, 0, 0, 0, 15, 1413, 1, 0, 0, 0, 17, 1415, 1, 0, 0, 0, 19, 1417, 1, 0, 0, 0, 21, 1419, 1, 0, 0, 0, 23, 1421, 1, 0, 0, 0, 25, 1423, 1, 0, 0, 0, 27, 1425, 1, 0, 0, 0, 29, 1427, 1, 0, 0, 0, 31, 1429, 1, 0, 0, 0, 33, 1431, 1, 0, 0, 0, 35, 1433, 1, 0, 0, 0, 37, 1435, 1, 0, 0, 0, 39, 1437, 1, 0, 0, 0, 41, 1440, 1, 0, 0, 0, 43, 1443, 1, 0, 0, 0, 45, 1446, 1, 0, 0, 0, 47, 1449, 1, 0, 0, 0, 49, 1452, 1, 0, 0, 0, 51, 1455, 1, 0, 0, 0, 53, 1458, 1, 0, 0, 0, 55, 1461, 1, 0, 0, 0, 57, 1464, 1, 0, 0, 0, 59, 1466, 1, 0, 0, 0, 61, 1492, 1, 0, 0, 0, 63, 1503, 1, 0, 0, 0, 65, 1519, 1, 0, 0, 0, 67, 1521, 1, 0, 0, 0, 69, 1523, 1, 0, 0, 0, 71, 1525, 1, 0, 0, 0, 73, 1529, 1, 0, 0, 0, 75, 1537, 1, 0, 0, 0, 77, 1545, 1, 0, 0, 0, 79, 1549, 1, 0, 0, 0, 81, 1553, 1, 0, 0, 0, 83, 1559, 1, 0, 0, 0, 85, 1562, 1, 0, 0, 0, 87, 1566, 1, 0, 0, 0, 89, 1577, 1, 0, 0, 0, 91, 1582, 1, 0, 0, 0, 93, 1587, 1, 0, 0, 0, 95, 1592, 1, 0, 0, 0, 97, 1598, 1, 0, 0, 0, 99, 1606, 1, 0, 0, 0, 101, 1613, 1, 0, 0, 0, 103, 1624, 1, 0, 0, 0, 105, 1631, 1, 0, 0, 0, 107, 1647, 1, 0, 0, 0, 109, 1660, 1, 0, 0, 0, 111, 1673, 1, 0, 0, 0, 113, 1686, 1, 0, 0, 0, 115, 1704, 1, 0, 0, 0, 117, 1717, 1, 0, 0, 0, 119, 1725, 1, 0, 0, 0, 121, 1736, 1, 0, 0, 0, 123, 1741, 1, 0, 0, 0, 125, 1750, 1, 0, 0, 0, 127, 1753, 1, 0, 0, 0, 129, 1758, 1, 0, 0, 0, 131, 1765, 1, 0, 0, 0, 133, 1771, 1, 0, 0, 0, 135, 1777, 1, 0, 0, 0, 137, 1781, 1, 0, 0, 0, 139, 1789, 1, 0, 0, 0, 141, 1794, 1, 0, 0, 0, 143, 1800, 1, 0, 0, 0, 145, 1806, 1, 0, 0, 0, 147, 1813, 1, 0, 0, 0, 149, 1816, 1, 0, 0, 0, 151, 1826, 1, 0, 0, 0, 153, 1836, 1, 0, 0, 0, 155, 1841, 1, 0, 0, 0, 157, 1849, 1, 0, 0, 0, 159, 1857, 1, 0, 0, 0, 161, 1863, 1, 0, 0, 0, 163, 1873, 1, 0, 0, 0, 165, 1888, 1, 0, 0, 0, 167, 1892, 1, 0, 0, 0, 169, 1897, 1, 0, 0, 0, 171, 1904, 1, 0, 0, 0, 173, 1907, 1, 0, 0, 0, 175, 1912, 1, 0, 0, 0, 177, 1915, 1, 0, 0, 0, 179, 1921, 1, 0, 0, 0, 181, 1929, 1, 0, 0, 0, 183, 1937, 1, 0, 0, 0, 185, 1948, 1, 0, 0, 0, 187, 1958, 1, 0, 0, 0, 189, 1965, 1, 0, 0, 0, 191, 1978, 1, 0, 0, 0, 193, 1983, 1, 0, 0, 0, 195, 1993, 1, 0, 0, 0, 197, 1999, 1, 0, 0, 0, 199, 2004, 1, 0, 0, 0, 201, 2007, 1, 0, 0, 0, 203, 2013, 1, 0, 0, 0, 205, 2021, 1, 0, 0, 0, 207, 2028, 1, 0, 0, 0, 209, 2034, 1, 0, 0, 0, 211, 2043, 1, 0, 0, 0, 213, 2048, 1, 0, 0, 0, 215, 2054, 1, 0, 0, 0, 217, 2061, 1, 0, 0, 0, 219, 2066, 1, 0, 0, 0, 221, 2072, 1, 0, 0, 0, 223, 2081, 1, 0, 0, 0, 225, 2086, 1, 0, 0, 0, 227, 2092, 1, 0, 0, 0, 229, 2099, 1, 0, 0, 0, 231, 2104, 1, 0, 0, 0, 233, 2118, 1, 0, 0, 0, 235, 2125, 1, 0, 0, 0, 237, 2135, 1, 0, 0, 0, 239, 2148, 1, 0, 0, 0, 241, 2154, 1, 0, 0, 0, 243, 2169, 1, 0, 0, 0, 245, 2176, 1, 0, 0, 0, 247, 2181, 1, 0, 0, 0, 249, 2187, 1, 0, 0, 0, 251, 2193, 1, 0, 0, 0, 253, 2196, 1, 0, 0, 0, 255, 2203, 1, 0, 0, 0, 257, 2208, 1, 0, 0, 0, 259, 2213, 1, 0, 0, 0, 261, 2218, 1, 0, 0, 0, 263, 2226, 1, 0, 0, 0, 265, 2234, 1, 0, 0, 0, 267, 2240, 1, 0, 0, 0, 269, 2245, 1, 0, 0, 0, 271, 2254, 1, 0, 0, 0, 273, 2260, 1, 0, 0, 0, 275, 2268, 1, 0, 0, 0, 277, 2276, 1, 0, 0, 0, 279, 2282, 1, 0, 0, 0, 281, 2291, 1, 0, 0, 0, 283, 2298, 1, 0, 0, 0, 285, 2305, 1, 0, 0, 0, 287, 2309, 1, 0, 0, 0, 289, 2315, 1, 0, 0, 0, 291, 2321, 1, 0, 0, 0, 293, 2331, 1, 0, 0, 0, 295, 2336, 1, 0, 0, 0, 297, 2342, 1, 0, 0, 0, 299, 2349, 1, 0, 0, 0, 301, 2359, 1, 0, 0, 0, 303, 2370, 1, 0, 0, 0, 305, 2373, 1, 0, 0, 0, 307, 2383, 1, 0, 0, 0, 309, 2392, 1, 0, 0, 0, 311, 2399, 1, 0, 0, 0, 313, 2405, 1, 0, 0, 0, 315, 2408, 1, 0, 0, 0, 317, 2414, 1, 0, 0, 0, 319, 2421, 1, 0, 0, 0, 321, 2429, 1, 0, 0, 0, 323, 2438, 1, 0, 0, 0, 325, 2446, 1, 0, 0, 0, 327, 2452, 1, 0, 0, 0, 329, 2468, 1, 0, 0, 0, 331, 2479, 1, 0, 0, 0, 333, 2485, 1, 0, 0, 0, 335, 2491, 1, 0, 0, 0, 337, 2499, 1, 0, 0, 0, 339, 2507, 1, 0, 0, 0, 341, 2516, 1, 0, 0, 0, 343, 2523, 1, 0, 0, 0, 345, 2533, 1, 0, 0, 0, 347, 2547, 1, 0, 0, 0, 349, 2558, 1, 0, 0, 0, 351, 2570, 1, 0, 0, 0, 353, 2578, 1, 0, 0, 0, 355, 2587, 1, 0, 0, 0, 357, 2598, 1, 0, 0, 0, 359, 2603, 1, 0, 0, 0, 361, 2608, 1, 0, 0, 0, 363, 2612, 1, 0, 0, 0, 365, 2619, 1, 0, 0, 0, 367, 2625, 1, 0, 0, 0, 369, 2630, 1, 0, 0, 0, 371, 2639, 1, 0, 0, 0, 373, 2643, 1, 0, 0, 0, 375, 2654, 1, 0, 0, 0, 377, 2662, 1, 0, 0, 0, 379, 2671, 1, 0, 0, 0, 381, 2680, 1, 0, 0, 0, 383, 2688, 1, 0, 0, 0, 385, 2695, 1, 0, 0, 0, 387, 2705, 1, 0, 0, 0, 389, 2716, 1, 0, 0, 0, 391, 2727, 1, 0, 0, 0, 393, 2735, 1, 0, 0, 0, 395, 2743, 1, 0, 0, 0, 397, 2752, 1, 0, 0, 0, 399, 2759, 1, 0, 0, 0, 401, 2766, 1, 0, 0, 0, 403, 2771, 1, 0, 0, 0, 405, 2776, 1, 0, 0, 0, 407, 2783, 1, 0, 0, 0, 409, 2792, 1, 0, 0, 0, 411, 2802, 1, 0, 0, 0, 413, 2807, 1, 0, 0, 0, 415, 2814, 1, 0, 0, 0, 417, 2820, 1, 0, 0, 0, 419, 2828, 1, 0, 0, 0, 421, 2838, 1, 0, 0, 0, 423, 2848, 1, 0, 0, 0, 425, 2856, 1, 0, 0, 0, 427, 2864, 1, 0, 0, 0, 429, 2874, 1, 0, 0, 0, 431, 2883, 1, 0, 0, 0, 433, 2890, 1, 0, 0, 0, 435, 2896, 1, 0, 0, 0, 437, 2906, 1, 0, 0, 0, 439, 2912, 1, 0, 0, 0, 441, 2920, 1, 0, 0, 0, 443, 2929, 1, 0, 0, 0, 445, 2939, 1, 0, 0, 0, 447, 2946, 1, 0, 0, 0, 449, 2954, 1, 0, 0, 0, 451, 2962, 1, 0, 0, 0, 453, 2969, 1, 0, 0, 0, 455, 2974, 1, 0, 0, 0, 457, 2979, 1, 0, 0, 0, 459, 2988, 1, 0, 0, 0, 461, 2991, 1, 0, 0, 0, 463, 3001, 1, 0, 0, 0, 465, 3011, 1, 0, 0, 0, 467, 3020, 1, 0, 0, 0, 469, 3030, 1, 0, 0, 0, 471, 3040, 1, 0, 0, 0, 473, 3046, 1, 0, 0, 0, 475, 3054, 1, 0, 0, 0, 477, 3062, 1, 0, 0, 0, 479, 3071, 1, 0, 0, 0, 481, 3078, 1, 0, 0, 0, 483, 3090, 1, 0, 0, 0, 485, 3097, 1, 0, 0, 0, 487, 3105, 1, 0, 0, 0, 489, 3113, 1, 0, 0, 0, 491, 3123, 1, 0, 0, 0, 493, 3127, 1, 0, 0, 0, 495, 3133, 1, 0, 0, 0, 497, 3142, 1, 0, 0, 0, 499, 3148, 1, 0, 0, 0, 501, 3153, 1, 0, 0, 0, 503, 3163, 1, 0, 0, 0, 505, 3169, 1, 0, 0, 0, 507, 3176, 1, 0, 0, 0, 509, 3181, 1, 0, 0, 0, 511, 3187, 1, 0, 0, 0, 513, 3196, 1, 0, 0, 0, 515, 3201, 1, 0, 0, 0, 517, 3209, 1, 0, 0, 0, 519, 3215, 1, 0, 0, 0, 521, 3223, 1, 0, 0, 0, 523, 3236, 1, 0, 0, 0, 525, 3245, 1, 0, 0, 0, 527, 3251, 1, 0, 0, 0, 529, 3258, 1, 0, 0, 0, 531, 3267, 1, 0, 0, 0, 533, 3272, 1, 0, 0, 0, 535, 3278, 1, 0, 0, 0, 537, 3283, 1, 0, 0, 0, 539, 3288, 1, 0, 0, 0, 541, 3294, 1, 0, 0, 0, 543, 3299, 1, 0, 0, 0, 545, 3302, 1, 0, 0, 0, 547, 3310, 1, 0, 0, 0, 549, 3317, 1, 0, 0, 0, 551, 3324, 1, 0, 0, 0, 553, 3330, 1, 0, 0, 0, 555, 3337, 1, 0, 0, 0, 557, 3340, 1, 0, 0, 0, 559, 3344, 1, 0, 0, 0, 561, 3349, 1, 0, 0, 0, 563, 3358, 1, 0, 0, 0, 565, 3365, 1, 0, 0, 0, 567, 3373, 1, 0, 0, 0, 569, 3379, 1, 0, 0, 0, 571, 3385, 1, 0, 0, 0, 573, 3392, 1, 0, 0, 0, 575, 3400, 1, 0, 0, 0, 577, 3410, 1, 0, 0, 0, 579, 3418, 1, 0, 0, 0, 581, 3427, 1, 0, 0, 0, 583, 3433, 1, 0, 0, 0, 585, 3443, 1, 0, 0, 0, 587, 3451, 1, 0, 0, 0, 589, 3460, 1, 0, 0, 0, 591, 3469, 1, 0, 0, 0, 593, 3475, 1, 0, 0, 0, 595, 3486, 1, 0, 0, 0, 597, 3497, 1, 0, 0, 0, 599, 3507, 1, 0, 0, 0, 601, 3515, 1, 0, 0, 0, 603, 3521, 1, 0, 0, 0, 605, 3527, 1, 0, 0, 0, 607, 3532, 1, 0, 0, 0, 609, 3541, 1, 0, 0, 0, 611, 3549, 1, 0, 0, 0, 613, 3559, 1, 0, 0, 0, 615, 3563, 1, 0, 0, 0, 617, 3571, 1, 0, 0, 0, 619, 3579, 1, 0, 0, 0, 621, 3588, 1, 0, 0, 0, 623, 3596, 1, 0, 0, 0, 625, 3603, 1, 0, 0, 0, 627, 3614, 1, 0, 0, 0, 629, 3622, 1, 0, 0, 0, 631, 3630, 1, 0, 0, 0, 633, 3636, 1, 0, 0, 0, 635, 3644, 1, 0, 0, 0, 637, 3653, 1, 0, 0, 0, 639, 3661, 1, 0, 0, 0, 641, 3668, 1, 0, 0, 0, 643, 3673, 1, 0, 0, 0, 645, 3682, 1, 0, 0, 0, 647, 3687, 1, 0, 0, 0, 649, 3692, 1, 0, 0, 0, 651, 3702, 1, 0, 0, 0, 653, 3709, 1, 0, 0, 0, 655, 3716, 1, 0, 0, 0, 657, 3723, 1, 0, 0, 0, 659, 3730, 1, 0, 0, 0, 661, 3739, 1, 0, 0, 0, 663, 3748, 1, 0, 0, 0, 665, 3758, 1, 0, 0, 0, 667, 3771, 1, 0, 0, 0, 669, 3778, 1, 0, 0, 0, 671, 3786, 1, 0, 0, 0, 673, 3790, 1, 0, 0, 0, 675, 3796, 1, 0, 0, 0, 677, 3801, 1, 0, 0, 0, 679, 3808, 1, 0, 0, 0, 681, 3817, 1, 0, 0, 0, 683, 3824, 1, 0, 0, 0, 685, 3835, 1, 0, 0, 0, 687, 3841, 1, 0, 0, 0, 689, 3851, 1, 0, 0, 0, 691, 3862, 1, 0, 0, 0, 693, 3868, 1, 0, 0, 0, 695, 3875, 1, 0, 0, 0, 697, 3883, 1, 0, 0, 0, 699, 3890, 1, 0, 0, 0, 701, 3896, 1, 0, 0, 0, 703, 3902, 1, 0, 0, 0, 705, 3909, 1, 0, 0, 0, 707, 3916, 1, 0, 0, 0, 709, 3927, 1, 0, 0, 0, 711, 3932, 1, 0, 0, 0, 713, 3941, 1, 0, 0, 0, 715, 3951, 1, 0, 0, 0, 717, 3956, 1, 0, 0, 0, 719, 3968, 1, 0, 0, 0, 721, 3976, 1, 0, 0, 0, 723, 3985, 1, 0, 0, 0, 725, 3993, 1, 0, 0, 0, 727, 3998, 1, 0, 0, 0, 729, 4004, 1, 0, 0, 0, 731, 4014, 1, 0, 0, 0, 733, 4026, 1, 0, 0, 0, 735, 4038, 1, 0, 0, 0, 737, 4046, 1, 0, 0, 0, 739, 4055, 1, 0, 0, 0, 741, 4064, 1, 0, 0, 0, 743, 4070, 1, 0, 0, 0, 745, 4077, 1, 0, 0, 0, 747, 4084, 1, 0, 0, 0, 749, 4090, 1, 0, 0, 0, 751, 4099, 1, 0, 0, 0, 753, 4109, 1, 0, 0, 0, 755, 4117, 1, 0, 0, 0, 757, 4125, 1, 0, 0, 0, 759, 4130, 1, 0, 0, 0, 761, 4139, 1, 0, 0, 0, 763, 4150, 1, 0, 0, 0, 765, 4158, 1, 0, 0, 0, 767, 4163, 1, 0, 0, 0, 769, 4171, 1, 0, 0, 0, 771, 4177, 1, 0, 0, 0, 773, 4181, 1, 0, 0, 0, 775, 4186, 1, 0, 0, 0, 777, 4190, 1, 0, 0, 0, 779, 4195, 1, 0, 0, 0, 781, 4203, 1, 0, 0, 0, 783, 4210, 1, 0, 0, 0, 785, 4214, 1, 0, 0, 0, 787, 4222, 1, 0, 0, 0, 789, 4227, 1, 0, 0, 0, 791, 4237, 1, 0, 0, 0, 793, 4246, 1, 0, 0, 0, 795, 4250, 1, 0, 0, 0, 797, 4258, 1, 0, 0, 0, 799, 4265, 1, 0, 0, 0, 801, 4273, 1, 0, 0, 0, 803, 4279, 1, 0, 0, 0, 805, 4288, 1, 0, 0, 0, 807, 4294, 1, 0, 0, 0, 809, 4298, 1, 0, 0, 0, 811, 4306, 1, 0, 0, 0, 813, 4315, 1, 0, 0, 0, 815, 4321, 1, 0, 0, 0, 817, 4330, 1, 0, 0, 0, 819, 4336, 1, 0, 0, 0, 821, 4341, 1, 0, 0, 0, 823, 4348, 1, 0, 0, 0, 825, 4356, 1, 0, 0, 0, 827, 4364, 1, 0, 0, 0, 829, 4373, 1, 0, 0, 0, 831, 4383, 1, 0, 0, 0, 833, 4388, 1, 0, 0, 0, 835, 4392, 1, 0, 0, 0, 837, 4398, 1, 0, 0, 0, 839, 4407, 1, 0, 0, 0, 841, 4417, 1, 0, 0, 0, 843, 4422, 1, 0, 0, 0, 845, 4432, 1, 0, 0, 0, 847, 4438, 1, 0, 0, 0, 849, 4443, 1, 0, 0, 0, 851, 4450, 1, 0, 0, 0, 853, 4458, 1, 0, 0, 0, 855, 4472, 1, 0, 0, 0, 857, 4483, 1, 0, 0, 0, 859, 4490, 1, 0, 0, 0, 861, 4509, 1, 0, 0, 0, 863, 4537, 1, 0, 0, 0, 865, 4564, 1, 0, 0, 0, 867, 4570, 1, 0, 0, 0, 869, 4583, 1, 0, 0, 0, 871, 4593, 1, 0, 0, 0, 873, 4604, 1, 0, 0, 0, 875, 4614, 1, 0, 0, 0, 877, 4624, 1, 0, 0, 0, 879, 4633, 1, 0, 0, 0, 881, 4639, 1, 0, 0, 0, 883, 4647, 1, 0, 0, 0, 885, 4660, 1, 0, 0, 0, 887, 4665, 1, 0, 0, 0, 889, 4673, 1, 0, 0, 0, 891, 4680, 1, 0, 0, 0, 893, 4687, 1, 0, 0, 0, 895, 4698, 1, 0, 0, 0, 897, 4708, 1, 0, 0, 0, 899, 4715, 1, 0, 0, 0, 901, 4722, 1, 0, 0, 0, 903, 4730, 1, 0, 0, 0, 905, 4738, 1, 0, 0, 0, 907, 4748, 1, 0, 0, 0, 909, 4755, 1, 0, 0, 0, 911, 4762, 1, 0, 0, 0, 913, 4769, 1, 0, 0, 0, 915, 4781, 1, 0, 0, 0, 917, 4785, 1, 0, 0, 0, 919, 4789, 1, 0, 0, 0, 921, 4795, 1, 0, 0, 0, 923, 4808, 1, 0, 0, 0, 925, 4820, 1, 0, 0, 0, 927, 4824, 1, 0, 0, 0, 929, 4828, 1, 0, 0, 0, 931, 4837, 1, 0, 0, 0, 933, 4845, 1, 0, 0, 0, 935, 4856, 1, 0, 0, 0, 937, 4862, 1, 0, 0, 0, 939, 4870, 1, 0, 0, 0, 941, 4879, 1, 0, 0, 0, 943, 4883, 1, 0, 0, 0, 945, 4891, 1, 0, 0, 0, 947, 4902, 1, 0, 0, 0, 949, 4911, 1, 0, 0, 0, 951, 4916, 1, 0, 0, 0, 953, 4923, 1, 0, 0, 0, 955, 4928, 1, 0, 0, 0, 957, 4935, 1, 0, 0, 0, 959, 4940, 1, 0, 0, 0, 961, 4949, 1, 0, 0, 0, 963, 4954, 1, 0, 0, 0, 965, 4966, 1, 0, 0, 0, 967, 4977, 1, 0, 0, 0, 969, 4986, 1, 0, 0, 0, 971, 4994, 1, 0, 0, 0, 973, 5008, 1, 0, 0, 0, 975, 5016, 1, 0, 0, 0, 977, 5027, 1, 0, 0, 0, 979, 5034, 1, 0, 0, 0, 981, 5041, 1, 0, 0, 0, 983, 5048, 1, 0, 0, 0, 985, 5055, 1, 0, 0, 0, 987, 5059, 1, 0, 0, 0, 989, 5063, 1, 0, 0, 0, 991, 5068, 1, 0, 0, 0, 993, 5073, 1, 0, 0, 0, 995, 5081, 1, 0, 0, 0, 997, 5087, 1, 0, 0, 0, 999, 5097, 1, 0, 0, 0, 1001, 5102, 1, 0, 0, 0, 1003, 5122, 1, 0, 0, 0, 1005, 5140, 1, 0, 0, 0, 1007, 5146, 1, 0, 0, 0, 1009, 5159, 1, 0, 0, 0, 1011, 5170, 1, 0, 0, 0, 1013, 5176, 1, 0, 0, 0, 1015, 5185, 1, 0, 0, 0, 1017, 5193, 1, 0, 0, 0, 1019, 5197, 1, 0, 0, 0, 1021, 5209, 1, 0, 0, 0, 1023, 5217, 1, 0, 0, 0, 1025, 5223, 1, 0, 0, 0, 1027, 5229, 1, 0, 0, 0, 1029, 5237, 1, 0, 0, 0, 1031, 5245, 1, 0, 0, 0, 1033, 5251, 1, 0, 0, 0, 1035, 5256, 1, 0, 0, 0, 1037, 5263, 1, 0, 0, 0, 1039, 5269, 1, 0, 0, 0, 1041, 5275, 1, 0, 0, 0, 1043, 5284, 1, 0, 0, 0, 1045, 5290, 1, 0, 0, 0, 1047, 5294, 1, 0, 0, 0, 1049, 5299, 1, 0, 0, 0, 1051, 5306, 1, 0, 0, 0, 1053, 5314, 1, 0, 0, 0, 1055, 5324, 1, 0, 0, 0, 1057, 5331, 1, 0, 0, 0, 1059, 5336, 1, 0, 0, 0, 1061, 5341, 1, 0, 0, 0, 1063, 5345, 1, 0, 0, 0, 1065, 5350, 1, 0, 0, 0, 1067, 5355, 1, 0, 0, 0, 1069, 5363, 1, 0, 0, 0, 1071, 5371, 1, 0, 0, 0, 1073, 5375, 1, 0, 0, 0, 1075, 5379, 1, 0, 0, 0, 1077, 5389, 1, 0, 0, 0, 1079, 5395, 1, 0, 0, 0, 1081, 5399, 1, 0, 0, 0, 1083, 5403, 1, 0, 0, 0, 1085, 5406, 1, 0, 0, 0, 1087, 5412, 1, 0, 0, 0, 1089, 5422, 1, 0, 0, 0, 1091, 5426, 1, 0, 0, 0, 1093, 5429, 1, 0, 0, 0, 1095, 5435, 1, 0, 0, 0, 1097, 5443, 1, 0, 0, 0, 1099, 5449, 1, 0, 0, 0, 1101, 5455, 1, 0, 0, 0, 1103, 5460, 1, 0, 0, 0, 1105, 5465, 1, 0, 0, 0, 1107, 5476, 1, 0, 0, 0, 1109, 5482, 1, 0, 0, 0, 1111, 5495, 1, 0, 0, 0, 1113, 5502, 1, 0, 0, 0, 1115, 5510, 1, 0, 0, 0, 1117, 5515, 1, 0, 0, 0, 1119, 5521, 1, 0, 0, 0, 1121, 5526, 1, 0, 0, 0, 1123, 5532, 1, 0, 0, 0, 1125, 5537, 1, 0, 0, 0, 1127, 5543, 1, 0, 0, 0, 1129, 5549, 1, 0, 0, 0, 1131, 5556, 1, 0, 0, 0, 1133, 5560, 1, 0, 0, 0, 1135, 5565, 1, 0, 0, 0, 1137, 5569, 1, 0, 0, 0, 1139, 5574, 1, 0, 0, 0, 1141, 5578, 1, 0, 0, 0, 1143, 5583, 1, 0, 0, 0, 1145, 5587, 1, 0, 0, 0, 1147, 5592, 1, 0, 0, 0, 1149, 5597, 1, 0, 0, 0, 1151, 5602, 1, 0, 0, 0, 1153, 5607, 1, 0, 0, 0, 1155, 5613, 1, 0, 0, 0, 1157, 5619, 1, 0, 0, 0, 1159, 5625, 1, 0, 0, 0, 1161, 5636, 1, 0, 0, 0, 1163, 5648, 1, 0, 0, 0, 1165, 5665, 1, 0, 0, 0, 1167, 5671, 1, 0, 0, 0, 1169, 5684, 1, 0, 0, 0, 1171, 5690, 1, 0, 0, 0, 1173, 5696, 1, 0, 0, 0, 1175, 5702, 1, 0, 0, 0, 1177, 5706, 1, 0, 0, 0, 1179, 5713, 1, 0, 0, 0, 1181, 5723, 1, 0, 0, 0, 1183, 5730, 1, 0, 0, 0, 1185, 5738, 1, 0, 0, 0, 1187, 5745, 1, 0, 0, 0, 1189, 5750, 1, 0, 0, 0, 1191, 5756, 1, 0, 0, 0, 1193, 5760, 1, 0, 0, 0, 1195, 5772, 1, 0, 0, 0, 1197, 5791, 1, 0, 0, 0, 1199, 5803, 1, 0, 0, 0, 1201, 5817, 1, 0, 0, 0, 1203, 5832, 1, 0, 0, 0, 1205, 5845, 1, 0, 0, 0, 1207, 5858, 1, 0, 0, 0, 1209, 5870, 1, 0, 0, 0, 1211, 5883, 1, 0, 0, 0, 1213, 5898, 1, 0, 0, 0, 1215, 5913, 1, 0, 0, 0, 1217, 5935, 1, 0, 0, 0, 1219, 5957, 1, 0, 0, 0, 1221, 5971, 1, 0, 0, 0, 1223, 5978, 1, 0, 0, 0, 1225, 5983, 1, 0, 0, 0, 1227, 5989, 1, 0, 0, 0, 1229, 6000, 1, 0, 0, 0, 1231, 6012, 1, 0, 0, 0, 1233, 6028, 1, 0, 0, 0, 1235, 6044, 1, 0, 0, 0, 1237, 6051, 1, 0, 0, 0, 1239, 6058, 1, 0, 0, 0, 1241, 6067, 1, 0, 0, 0, 1243, 6074, 1, 0, 0, 0, 1245, 6084, 1, 0, 0, 0, 1247, 6091, 1, 0, 0, 0, 1249, 6095, 1, 0, 0, 0, 1251, 6111, 1, 0, 0, 0, 1253, 6120, 1, 0, 0, 0, 1255, 6130, 1, 0, 0, 0, 1257, 6141, 1, 0, 0, 0, 1259, 6150, 1, 0, 0, 0, 1261, 6163, 1, 0, 0, 0, 1263, 6177, 1, 0, 0, 0, 1265, 6194, 1, 0, 0, 0, 1267, 6204, 1, 0, 0, 0, 1269, 6218, 1, 0, 0, 0, 1271, 6228, 1, 0, 0, 0, 1273, 6243, 1, 0, 0, 0, 1275, 6260, 1, 0, 0, 0, 1277, 6264, 1, 0, 0, 0, 1279, 6284, 1, 0, 0, 0, 1281, 6294, 1, 0, 0, 0, 1283, 6316, 1, 0, 0, 0, 1285, 6329, 1, 0, 0, 0, 1287, 6337, 1, 0, 0, 0, 1289, 6345, 1, 0, 0, 0, 1291, 6355, 1, 0, 0, 0, 1293, 6368, 1, 0, 0, 0, 1295, 6372, 1, 0, 0, 0, 1297, 6376, 1, 0, 0, 0, 1299, 6378, 1, 0, 0, 0, 1301, 6381, 1, 0, 0, 0, 1303, 6390, 1, 0, 0, 0, 1305, 6393, 1, 0, 0, 0, 1307, 6402, 1, 0, 0, 0, 1309, 6406, 1, 0, 0, 0, 1311, 6410, 1, 0, 0, 0, 1313, 6414, 1, 0, 0, 0, 1315, 6418, 1, 0, 0, 0, 1317, 6421, 1, 0, 0, 0, 1319, 6430, 1, 0, 0, 0, 1321, 6436, 1, 0, 0, 0, 1323, 6439, 1, 0, 0, 0, 1325, 6443, 1, 0, 0, 0, 1327, 6452, 1, 0, 0, 0, 1329, 6459, 1, 0, 0, 0, 1331, 6462, 1, 0, 0, 0, 1333, 6470, 1, 0, 0, 0, 1335, 6473, 1, 0, 0, 0, 1337, 6476, 1, 0, 0, 0, 1339, 6479, 1, 0, 0, 0, 1341, 6487, 1, 0, 0, 0, 1343, 6490, 1, 0, 0, 0, 1345, 6493, 1, 0, 0, 0, 1347, 6495, 1, 0, 0, 0, 1349, 6529, 1, 0, 0, 0, 1351, 6532, 1, 0, 0, 0, 1353, 6536, 1, 0, 0, 0, 1355, 6544, 1, 0, 0, 0, 1357, 6560, 1, 0, 0, 0, 1359, 6571, 1, 0, 0, 0, 1361, 6575, 1, 0, 0, 0, 1363, 6586, 1, 0, 0, 0, 1365, 6625, 1, 0, 0, 0, 1367, 6676, 1, 0, 0, 0, 1369, 6700, 1, 0, 0, 0, 1371, 6703, 1, 0, 0, 0, 1373, 6705, 1, 0, 0, 0, 1375, 6710, 1, 0, 0, 0, 1377, 6741, 1, 0, 0, 0, 1379, 6744, 1, 0, 0, 0, 1381, 6749, 1, 0, 0, 0, 1383, 6762, 1, 0, 0, 0, 1385, 6765, 1, 0, 0, 0, 1387, 6770, 1, 0, 0, 0, 1389, 6776, 1, 0, 0, 0, 1391, 6781, 1, 0, 0, 0, 1393, 6786, 1, 0, 0, 0, 1395, 6791, 1, 0, 0, 0, 1397, 6796, 1, 0, 0, 0, 1399, 6813, 1, 0, 0, 0, 1401, 6815, 1, 0, 0, 0, 1403, 1404, 5, 36, 0, 0, 1404, 6, 1, 0, 0, 0, 1405, 1406, 5, 40, 0, 0, 1406, 8, 1, 0, 0, 0, 1407, 1408, 5, 41, 0, 0, 1408, 10, 1, 0, 0, 0, 1409, 1410, 5, 91, 0, 0, 1410, 12, 1, 0, 0, 0, 1411, 1412, 5, 93, 0, 0, 1412, 14, 1, 0, 0, 0, 1413, 1414, 5, 44, 0, 0, 1414, 16, 1, 0, 0, 0, 1415, 1416, 5, 59, 0, 0, 1416, 18, 1, 0, 0, 0, 1417, 1418, 5, 58, 0, 0, 1418, 20, 1, 0, 0, 0, 1419, 1420, 5, 42, 0, 0, 1420, 22, 1, 0, 0, 0, 1421, 1422, 5, 61, 0, 0, 1422, 24, 1, 0, 0, 0, 1423, 1424, 5, 46, 0, 0, 1424, 26, 1, 0, 0, 0, 1425, 1426, 5, 43, 0, 0, 1426, 28, 1, 0, 0, 0, 1427, 1428, 5, 45, 0, 0, 1428, 30, 1, 0, 0, 0, 1429, 1430, 5, 47, 0, 0, 1430, 32, 1, 0, 0, 0, 1431, 1432, 5, 94, 0, 0, 1432, 34, 1, 0, 0, 0, 1433, 1434, 5, 60, 0, 0, 1434, 36, 1, 0, 0, 0, 1435, 1436, 5, 62, 0, 0, 1436, 38, 1, 0, 0, 0, 1437, 1438, 5, 60, 0, 0, 1438, 1439, 5, 60, 0, 0, 1439, 40, 1, 0, 0, 0, 1440, 1441, 5, 62, 0, 0, 1441, 1442, 5, 62, 0, 0, 1442, 42, 1, 0, 0, 0, 1443, 1444, 5, 58, 0, 0, 1444, 1445, 5, 61, 0, 0, 1445, 44, 1, 0, 0, 0, 1446, 1447, 5, 60, 0, 0, 1447, 1448, 5, 61, 0, 0, 1448, 46, 1, 0, 0, 0, 1449, 1450, 5, 61, 0, 0, 1450, 1451, 5, 62, 0, 0, 1451, 48, 1, 0, 0, 0, 1452, 1453, 5, 62, 0, 0, 1453, 1454, 5, 61, 0, 0, 1454, 50, 1, 0, 0, 0, 1455, 1456, 5, 46, 0, 0, 1456, 1457, 5, 46, 0, 0, 1457, 52, 1, 0, 0, 0, 1458, 1459, 5, 60, 0, 0, 1459, 1460, 5, 62, 0, 0, 1460, 54, 1, 0, 0, 0, 1461, 1462, 5, 58, 0, 0, 1462, 1463, 5, 58, 0, 0, 1463, 56, 1, 0, 0, 0, 1464, 1465, 5, 37, 0, 0, 1465, 58, 1, 0, 0, 0, 1466, 1468, 5, 36, 0, 0, 1467, 1469, 7, 0, 0, 0, 1468, 1467, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1468, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 60, 1, 0, 0, 0, 1472, 1488, 3, 65, 30, 0, 1473, 1477, 5, 43, 0, 0, 1474, 1475, 5, 45, 0, 0, 1475, 1477, 4, 28, 0, 0, 1476, 1473, 1, 0, 0, 0, 1476, 1474, 1, 0, 0, 0, 1477, 1478, 1, 0, 0, 0, 1478, 1476, 1, 0, 0, 0, 1478, 1479, 1, 0, 0, 0, 1479, 1483, 1, 0, 0, 0, 1480, 1484, 3, 65, 30, 0, 1481, 1482, 5, 47, 0, 0, 1482, 1484, 4, 28, 1, 0, 1483, 1480, 1, 0, 0, 0, 1483, 1481, 1, 0, 0, 0, 1484, 1488, 1, 0, 0, 0, 1485, 1486, 5, 47, 0, 0, 1486, 1488, 4, 28, 2, 0, 1487, 1472, 1, 0, 0, 0, 1487, 1476, 1, 0, 0, 0, 1487, 1485, 1, 0, 0, 0, 1488, 1489, 1, 0, 0, 0, 1489, 1487, 1, 0, 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1493, 1, 0, 0, 0, 1491, 1493, 7, 1, 0, 0, 1492, 1487, 1, 0, 0, 0, 1492, 1491, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 1495, 6, 28, 0, 0, 1495, 62, 1, 0, 0, 0, 1496, 1502, 3, 67, 31, 0, 1497, 1498, 5, 45, 0, 0, 1498, 1502, 4, 29, 3, 0, 1499, 1500, 5, 47, 0, 0, 1500, 1502, 4, 29, 4, 0, 1501, 1496, 1, 0, 0, 0, 1501, 1497, 1, 0, 0, 0, 1501, 1499, 1, 0, 0, 0, 1502, 1505, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1506, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1508, 3, 69, 32, 0, 1507, 1509, 3, 61, 28, 0, 1508, 1507, 1, 0, 0, 0, 1508, 1509, 1, 0, 0, 0, 1509, 1513, 1, 0, 0, 0, 1510, 1514, 5, 43, 0, 0, 1511, 1512, 5, 45, 0, 0, 1512, 1514, 4, 29, 5, 0, 1513, 1510, 1, 0, 0, 0, 1513, 1511, 1, 0, 0, 0, 1514, 1515, 1, 0, 0, 0, 1515, 1513, 1, 0, 0, 0, 1515, 1516, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1518, 6, 29, 1, 0, 1518, 64, 1, 0, 0, 0, 1519, 1520, 7, 2, 0, 0, 1520, 66, 1, 0, 0, 0, 1521, 1522, 7, 3, 0, 0, 1522, 68, 1, 0, 0, 0, 1523, 1524, 7, 4, 0, 0, 1524, 70, 1, 0, 0, 0, 1525, 1526, 7, 5, 0, 0, 1526, 1527, 7, 6, 0, 0, 1527, 1528, 7, 6, 0, 0, 1528, 72, 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, 9, 0, 0, 1535, 1536, 7, 10, 0, 0, 1536, 74, 1, 0, 0, 0, 1537, 1538, 7, 5, 0, 0, 1538, 1539, 7, 7, 0, 0, 1539, 1540, 7, 5, 0, 0, 1540, 1541, 7, 6, 0, 0, 1541, 1542, 7, 8, 0, 0, 1542, 1543, 7, 11, 0, 0, 1543, 1544, 7, 10, 0, 0, 1544, 76, 1, 0, 0, 0, 1545, 1546, 7, 5, 0, 0, 1546, 1547, 7, 7, 0, 0, 1547, 1548, 7, 12, 0, 0, 1548, 78, 1, 0, 0, 0, 1549, 1550, 7, 5, 0, 0, 1550, 1551, 7, 7, 0, 0, 1551, 1552, 7, 8, 0, 0, 1552, 80, 1, 0, 0, 0, 1553, 1554, 7, 5, 0, 0, 1554, 1555, 7, 13, 0, 0, 1555, 1556, 7, 13, 0, 0, 1556, 1557, 7, 5, 0, 0, 1557, 1558, 7, 8, 0, 0, 1558, 82, 1, 0, 0, 0, 1559, 1560, 7, 5, 0, 0, 1560, 1561, 7, 9, 0, 0, 1561, 84, 1, 0, 0, 0, 1562, 1563, 7, 5, 0, 0, 1563, 1564, 7, 9, 0, 0, 1564, 1565, 7, 14, 0, 0, 1565, 86, 1, 0, 0, 0, 1566, 1567, 7, 5, 0, 0, 1567, 1568, 7, 9, 0, 0, 1568, 1569, 7, 8, 0, 0, 1569, 1570, 7, 15, 0, 0, 1570, 1571, 7, 15, 0, 0, 1571, 1572, 7, 10, 0, 0, 1572, 1573, 7, 16, 0, 0, 1573, 1574, 7, 13, 0, 0, 1574, 1575, 7, 17, 0, 0, 1575, 1576, 7, 14, 0, 0, 1576, 88, 1, 0, 0, 0, 1577, 1578, 7, 18, 0, 0, 1578, 1579, 7, 19, 0, 0, 1579, 1580, 7, 16, 0, 0, 1580, 1581, 7, 20, 0, 0, 1581, 90, 1, 0, 0, 0, 1582, 1583, 7, 14, 0, 0, 1583, 1584, 7, 5, 0, 0, 1584, 1585, 7, 9, 0, 0, 1585, 1586, 7, 10, 0, 0, 1586, 92, 1, 0, 0, 0, 1587, 1588, 7, 14, 0, 0, 1588, 1589, 7, 5, 0, 0, 1589, 1590, 7, 9, 0, 0, 1590, 1591, 7, 16, 0, 0, 1591, 94, 1, 0, 0, 0, 1592, 1593, 7, 14, 0, 0, 1593, 1594, 7, 20, 0, 0, 1594, 1595, 7, 10, 0, 0, 1595, 1596, 7, 14, 0, 0, 1596, 1597, 7, 21, 0, 0, 1597, 96, 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, 6, 0, 0, 1602, 1603, 7, 5, 0, 0, 1603, 1604, 7, 16, 0, 0, 1604, 1605, 7, 10, 0, 0, 1605, 98, 1, 0, 0, 0, 1606, 1607, 7, 14, 0, 0, 1607, 1608, 7, 19, 0, 0, 1608, 1609, 7, 6, 0, 0, 1609, 1610, 7, 22, 0, 0, 1610, 1611, 7, 15, 0, 0, 1611, 1612, 7, 7, 0, 0, 1612, 100, 1, 0, 0, 0, 1613, 1614, 7, 14, 0, 0, 1614, 1615, 7, 19, 0, 0, 1615, 1616, 7, 7, 0, 0, 1616, 1617, 7, 9, 0, 0, 1617, 1618, 7, 16, 0, 0, 1618, 1619, 7, 13, 0, 0, 1619, 1620, 7, 5, 0, 0, 1620, 1621, 7, 17, 0, 0, 1621, 1622, 7, 7, 0, 0, 1622, 1623, 7, 16, 0, 0, 1623, 102, 1, 0, 0, 0, 1624, 1625, 7, 14, 0, 0, 1625, 1626, 7, 13, 0, 0, 1626, 1627, 7, 10, 0, 0, 1627, 1628, 7, 5, 0, 0, 1628, 1629, 7, 16, 0, 0, 1629, 1630, 7, 10, 0, 0, 1630, 104, 1, 0, 0, 0, 1631, 1632, 7, 14, 0, 0, 1632, 1633, 7, 22, 0, 0, 1633, 1634, 7, 13, 0, 0, 1634, 1635, 7, 13, 0, 0, 1635, 1636, 7, 10, 0, 0, 1636, 1637, 7, 7, 0, 0, 1637, 1638, 7, 16, 0, 0, 1638, 1639, 5, 95, 0, 0, 1639, 1640, 7, 14, 0, 0, 1640, 1641, 7, 5, 0, 0, 1641, 1642, 7, 16, 0, 0, 1642, 1643, 7, 5, 0, 0, 1643, 1644, 7, 6, 0, 0, 1644, 1645, 7, 19, 0, 0, 1645, 1646, 7, 23, 0, 0, 1646, 106, 1, 0, 0, 0, 1647, 1648, 7, 14, 0, 0, 1648, 1649, 7, 22, 0, 0, 1649, 1650, 7, 13, 0, 0, 1650, 1651, 7, 13, 0, 0, 1651, 1652, 7, 10, 0, 0, 1652, 1653, 7, 7, 0, 0, 1653, 1654, 7, 16, 0, 0, 1654, 1655, 5, 95, 0, 0, 1655, 1656, 7, 12, 0, 0, 1656, 1657, 7, 5, 0, 0, 1657, 1658, 7, 16, 0, 0, 1658, 1659, 7, 10, 0, 0, 1659, 108, 1, 0, 0, 0, 1660, 1661, 7, 14, 0, 0, 1661, 1662, 7, 22, 0, 0, 1662, 1663, 7, 13, 0, 0, 1663, 1664, 7, 13, 0, 0, 1664, 1665, 7, 10, 0, 0, 1665, 1666, 7, 7, 0, 0, 1666, 1667, 7, 16, 0, 0, 1667, 1668, 5, 95, 0, 0, 1668, 1669, 7, 13, 0, 0, 1669, 1670, 7, 19, 0, 0, 1670, 1671, 7, 6, 0, 0, 1671, 1672, 7, 10, 0, 0, 1672, 110, 1, 0, 0, 0, 1673, 1674, 7, 14, 0, 0, 1674, 1675, 7, 22, 0, 0, 1675, 1676, 7, 13, 0, 0, 1676, 1677, 7, 13, 0, 0, 1677, 1678, 7, 10, 0, 0, 1678, 1679, 7, 7, 0, 0, 1679, 1680, 7, 16, 0, 0, 1680, 1681, 5, 95, 0, 0, 1681, 1682, 7, 16, 0, 0, 1682, 1683, 7, 17, 0, 0, 1683, 1684, 7, 15, 0, 0, 1684, 1685, 7, 10, 0, 0, 1685, 112, 1, 0, 0, 0, 1686, 1687, 7, 14, 0, 0, 1687, 1688, 7, 22, 0, 0, 1688, 1689, 7, 13, 0, 0, 1689, 1690, 7, 13, 0, 0, 1690, 1691, 7, 10, 0, 0, 1691, 1692, 7, 7, 0, 0, 1692, 1693, 7, 16, 0, 0, 1693, 1694, 5, 95, 0, 0, 1694, 1695, 7, 16, 0, 0, 1695, 1696, 7, 17, 0, 0, 1696, 1697, 7, 15, 0, 0, 1697, 1698, 7, 10, 0, 0, 1698, 1699, 7, 9, 0, 0, 1699, 1700, 7, 16, 0, 0, 1700, 1701, 7, 5, 0, 0, 1701, 1702, 7, 15, 0, 0, 1702, 1703, 7, 24, 0, 0, 1703, 114, 1, 0, 0, 0, 1704, 1705, 7, 14, 0, 0, 1705, 1706, 7, 22, 0, 0, 1706, 1707, 7, 13, 0, 0, 1707, 1708, 7, 13, 0, 0, 1708, 1709, 7, 10, 0, 0, 1709, 1710, 7, 7, 0, 0, 1710, 1711, 7, 16, 0, 0, 1711, 1712, 5, 95, 0, 0, 1712, 1713, 7, 22, 0, 0, 1713, 1714, 7, 9, 0, 0, 1714, 1715, 7, 10, 0, 0, 1715, 1716, 7, 13, 0, 0, 1716, 116, 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, 5, 0, 0, 1721, 1722, 7, 22, 0, 0, 1722, 1723, 7, 6, 0, 0, 1723, 1724, 7, 16, 0, 0, 1724, 118, 1, 0, 0, 0, 1725, 1726, 7, 12, 0, 0, 1726, 1727, 7, 10, 0, 0, 1727, 1728, 7, 25, 0, 0, 1728, 1729, 7, 10, 0, 0, 1729, 1730, 7, 13, 0, 0, 1730, 1731, 7, 13, 0, 0, 1731, 1732, 7, 5, 0, 0, 1732, 1733, 7, 18, 0, 0, 1733, 1734, 7, 6, 0, 0, 1734, 1735, 7, 10, 0, 0, 1735, 120, 1, 0, 0, 0, 1736, 1737, 7, 12, 0, 0, 1737, 1738, 7, 10, 0, 0, 1738, 1739, 7, 9, 0, 0, 1739, 1740, 7, 14, 0, 0, 1740, 122, 1, 0, 0, 0, 1741, 1742, 7, 12, 0, 0, 1742, 1743, 7, 17, 0, 0, 1743, 1744, 7, 9, 0, 0, 1744, 1745, 7, 16, 0, 0, 1745, 1746, 7, 17, 0, 0, 1746, 1747, 7, 7, 0, 0, 1747, 1748, 7, 14, 0, 0, 1748, 1749, 7, 16, 0, 0, 1749, 124, 1, 0, 0, 0, 1750, 1751, 7, 12, 0, 0, 1751, 1752, 7, 19, 0, 0, 1752, 126, 1, 0, 0, 0, 1753, 1754, 7, 10, 0, 0, 1754, 1755, 7, 6, 0, 0, 1755, 1756, 7, 9, 0, 0, 1756, 1757, 7, 10, 0, 0, 1757, 128, 1, 0, 0, 0, 1758, 1759, 7, 10, 0, 0, 1759, 1760, 7, 26, 0, 0, 1760, 1761, 7, 14, 0, 0, 1761, 1762, 7, 10, 0, 0, 1762, 1763, 7, 24, 0, 0, 1763, 1764, 7, 16, 0, 0, 1764, 130, 1, 0, 0, 0, 1765, 1766, 7, 25, 0, 0, 1766, 1767, 7, 5, 0, 0, 1767, 1768, 7, 6, 0, 0, 1768, 1769, 7, 9, 0, 0, 1769, 1770, 7, 10, 0, 0, 1770, 132, 1, 0, 0, 0, 1771, 1772, 7, 25, 0, 0, 1772, 1773, 7, 10, 0, 0, 1773, 1774, 7, 16, 0, 0, 1774, 1775, 7, 14, 0, 0, 1775, 1776, 7, 20, 0, 0, 1776, 134, 1, 0, 0, 0, 1777, 1778, 7, 25, 0, 0, 1778, 1779, 7, 19, 0, 0, 1779, 1780, 7, 13, 0, 0, 1780, 136, 1, 0, 0, 0, 1781, 1782, 7, 25, 0, 0, 1782, 1783, 7, 19, 0, 0, 1783, 1784, 7, 13, 0, 0, 1784, 1785, 7, 10, 0, 0, 1785, 1786, 7, 17, 0, 0, 1786, 1787, 7, 23, 0, 0, 1787, 1788, 7, 7, 0, 0, 1788, 138, 1, 0, 0, 0, 1789, 1790, 7, 25, 0, 0, 1790, 1791, 7, 13, 0, 0, 1791, 1792, 7, 19, 0, 0, 1792, 1793, 7, 15, 0, 0, 1793, 140, 1, 0, 0, 0, 1794, 1795, 7, 23, 0, 0, 1795, 1796, 7, 13, 0, 0, 1796, 1797, 7, 5, 0, 0, 1797, 1798, 7, 7, 0, 0, 1798, 1799, 7, 16, 0, 0, 1799, 142, 1, 0, 0, 0, 1800, 1801, 7, 23, 0, 0, 1801, 1802, 7, 13, 0, 0, 1802, 1803, 7, 19, 0, 0, 1803, 1804, 7, 22, 0, 0, 1804, 1805, 7, 24, 0, 0, 1805, 144, 1, 0, 0, 0, 1806, 1807, 7, 20, 0, 0, 1807, 1808, 7, 5, 0, 0, 1808, 1809, 7, 27, 0, 0, 1809, 1810, 7, 17, 0, 0, 1810, 1811, 7, 7, 0, 0, 1811, 1812, 7, 23, 0, 0, 1812, 146, 1, 0, 0, 0, 1813, 1814, 7, 17, 0, 0, 1814, 1815, 7, 7, 0, 0, 1815, 148, 1, 0, 0, 0, 1816, 1817, 7, 17, 0, 0, 1817, 1818, 7, 7, 0, 0, 1818, 1819, 7, 17, 0, 0, 1819, 1820, 7, 16, 0, 0, 1820, 1821, 7, 17, 0, 0, 1821, 1822, 7, 5, 0, 0, 1822, 1823, 7, 6, 0, 0, 1823, 1824, 7, 6, 0, 0, 1824, 1825, 7, 8, 0, 0, 1825, 150, 1, 0, 0, 0, 1826, 1827, 7, 17, 0, 0, 1827, 1828, 7, 7, 0, 0, 1828, 1829, 7, 16, 0, 0, 1829, 1830, 7, 10, 0, 0, 1830, 1831, 7, 13, 0, 0, 1831, 1832, 7, 9, 0, 0, 1832, 1833, 7, 10, 0, 0, 1833, 1834, 7, 14, 0, 0, 1834, 1835, 7, 16, 0, 0, 1835, 152, 1, 0, 0, 0, 1836, 1837, 7, 17, 0, 0, 1837, 1838, 7, 7, 0, 0, 1838, 1839, 7, 16, 0, 0, 1839, 1840, 7, 19, 0, 0, 1840, 154, 1, 0, 0, 0, 1841, 1842, 7, 6, 0, 0, 1842, 1843, 7, 5, 0, 0, 1843, 1844, 7, 16, 0, 0, 1844, 1845, 7, 10, 0, 0, 1845, 1846, 7, 13, 0, 0, 1846, 1847, 7, 5, 0, 0, 1847, 1848, 7, 6, 0, 0, 1848, 156, 1, 0, 0, 0, 1849, 1850, 7, 6, 0, 0, 1850, 1851, 7, 10, 0, 0, 1851, 1852, 7, 5, 0, 0, 1852, 1853, 7, 12, 0, 0, 1853, 1854, 7, 17, 0, 0, 1854, 1855, 7, 7, 0, 0, 1855, 1856, 7, 23, 0, 0, 1856, 158, 1, 0, 0, 0, 1857, 1858, 7, 6, 0, 0, 1858, 1859, 7, 17, 0, 0, 1859, 1860, 7, 15, 0, 0, 1860, 1861, 7, 17, 0, 0, 1861, 1862, 7, 16, 0, 0, 1862, 160, 1, 0, 0, 0, 1863, 1864, 7, 6, 0, 0, 1864, 1865, 7, 19, 0, 0, 1865, 1866, 7, 14, 0, 0, 1866, 1867, 7, 5, 0, 0, 1867, 1868, 7, 6, 0, 0, 1868, 1869, 7, 16, 0, 0, 1869, 1870, 7, 17, 0, 0, 1870, 1871, 7, 15, 0, 0, 1871, 1872, 7, 10, 0, 0, 1872, 162, 1, 0, 0, 0, 1873, 1874, 7, 6, 0, 0, 1874, 1875, 7, 19, 0, 0, 1875, 1876, 7, 14, 0, 0, 1876, 1877, 7, 5, 0, 0, 1877, 1878, 7, 6, 0, 0, 1878, 1879, 7, 16, 0, 0, 1879, 1880, 7, 17, 0, 0, 1880, 1881, 7, 15, 0, 0, 1881, 1882, 7, 10, 0, 0, 1882, 1883, 7, 9, 0, 0, 1883, 1884, 7, 16, 0, 0, 1884, 1885, 7, 5, 0, 0, 1885, 1886, 7, 15, 0, 0, 1886, 1887, 7, 24, 0, 0, 1887, 164, 1, 0, 0, 0, 1888, 1889, 7, 7, 0, 0, 1889, 1890, 7, 19, 0, 0, 1890, 1891, 7, 16, 0, 0, 1891, 166, 1, 0, 0, 0, 1892, 1893, 7, 7, 0, 0, 1893, 1894, 7, 22, 0, 0, 1894, 1895, 7, 6, 0, 0, 1895, 1896, 7, 6, 0, 0, 1896, 168, 1, 0, 0, 0, 1897, 1898, 7, 19, 0, 0, 1898, 1899, 7, 25, 0, 0, 1899, 1900, 7, 25, 0, 0, 1900, 1901, 7, 9, 0, 0, 1901, 1902, 7, 10, 0, 0, 1902, 1903, 7, 16, 0, 0, 1903, 170, 1, 0, 0, 0, 1904, 1905, 7, 19, 0, 0, 1905, 1906, 7, 7, 0, 0, 1906, 172, 1, 0, 0, 0, 1907, 1908, 7, 19, 0, 0, 1908, 1909, 7, 7, 0, 0, 1909, 1910, 7, 6, 0, 0, 1910, 1911, 7, 8, 0, 0, 1911, 174, 1, 0, 0, 0, 1912, 1913, 7, 19, 0, 0, 1913, 1914, 7, 13, 0, 0, 1914, 176, 1, 0, 0, 0, 1915, 1916, 7, 19, 0, 0, 1916, 1917, 7, 13, 0, 0, 1917, 1918, 7, 12, 0, 0, 1918, 1919, 7, 10, 0, 0, 1919, 1920, 7, 13, 0, 0, 1920, 178, 1, 0, 0, 0, 1921, 1922, 7, 24, 0, 0, 1922, 1923, 7, 6, 0, 0, 1923, 1924, 7, 5, 0, 0, 1924, 1925, 7, 14, 0, 0, 1925, 1926, 7, 17, 0, 0, 1926, 1927, 7, 7, 0, 0, 1927, 1928, 7, 23, 0, 0, 1928, 180, 1, 0, 0, 0, 1929, 1930, 7, 24, 0, 0, 1930, 1931, 7, 13, 0, 0, 1931, 1932, 7, 17, 0, 0, 1932, 1933, 7, 15, 0, 0, 1933, 1934, 7, 5, 0, 0, 1934, 1935, 7, 13, 0, 0, 1935, 1936, 7, 8, 0, 0, 1936, 182, 1, 0, 0, 0, 1937, 1938, 7, 13, 0, 0, 1938, 1939, 7, 10, 0, 0, 1939, 1940, 7, 25, 0, 0, 1940, 1941, 7, 10, 0, 0, 1941, 1942, 7, 13, 0, 0, 1942, 1943, 7, 10, 0, 0, 1943, 1944, 7, 7, 0, 0, 1944, 1945, 7, 14, 0, 0, 1945, 1946, 7, 10, 0, 0, 1946, 1947, 7, 9, 0, 0, 1947, 184, 1, 0, 0, 0, 1948, 1949, 7, 13, 0, 0, 1949, 1950, 7, 10, 0, 0, 1950, 1951, 7, 16, 0, 0, 1951, 1952, 7, 22, 0, 0, 1952, 1953, 7, 13, 0, 0, 1953, 1954, 7, 7, 0, 0, 1954, 1955, 7, 17, 0, 0, 1955, 1956, 7, 7, 0, 0, 1956, 1957, 7, 23, 0, 0, 1957, 186, 1, 0, 0, 0, 1958, 1959, 7, 9, 0, 0, 1959, 1960, 7, 10, 0, 0, 1960, 1961, 7, 6, 0, 0, 1961, 1962, 7, 10, 0, 0, 1962, 1963, 7, 14, 0, 0, 1963, 1964, 7, 16, 0, 0, 1964, 188, 1, 0, 0, 0, 1965, 1966, 7, 9, 0, 0, 1966, 1967, 7, 10, 0, 0, 1967, 1968, 7, 9, 0, 0, 1968, 1969, 7, 9, 0, 0, 1969, 1970, 7, 17, 0, 0, 1970, 1971, 7, 19, 0, 0, 1971, 1972, 7, 7, 0, 0, 1972, 1973, 5, 95, 0, 0, 1973, 1974, 7, 22, 0, 0, 1974, 1975, 7, 9, 0, 0, 1975, 1976, 7, 10, 0, 0, 1976, 1977, 7, 13, 0, 0, 1977, 190, 1, 0, 0, 0, 1978, 1979, 7, 9, 0, 0, 1979, 1980, 7, 19, 0, 0, 1980, 1981, 7, 15, 0, 0, 1981, 1982, 7, 10, 0, 0, 1982, 192, 1, 0, 0, 0, 1983, 1984, 7, 9, 0, 0, 1984, 1985, 7, 8, 0, 0, 1985, 1986, 7, 15, 0, 0, 1986, 1987, 7, 15, 0, 0, 1987, 1988, 7, 10, 0, 0, 1988, 1989, 7, 16, 0, 0, 1989, 1990, 7, 13, 0, 0, 1990, 1991, 7, 17, 0, 0, 1991, 1992, 7, 14, 0, 0, 1992, 194, 1, 0, 0, 0, 1993, 1994, 7, 16, 0, 0, 1994, 1995, 7, 5, 0, 0, 1995, 1996, 7, 18, 0, 0, 1996, 1997, 7, 6, 0, 0, 1997, 1998, 7, 10, 0, 0, 1998, 196, 1, 0, 0, 0, 1999, 2000, 7, 16, 0, 0, 2000, 2001, 7, 20, 0, 0, 2001, 2002, 7, 10, 0, 0, 2002, 2003, 7, 7, 0, 0, 2003, 198, 1, 0, 0, 0, 2004, 2005, 7, 16, 0, 0, 2005, 2006, 7, 19, 0, 0, 2006, 200, 1, 0, 0, 0, 2007, 2008, 7, 16, 0, 0, 2008, 2009, 7, 19, 0, 0, 2009, 2010, 7, 24, 0, 0, 2010, 2011, 7, 17, 0, 0, 2011, 2012, 7, 14, 0, 0, 2012, 202, 1, 0, 0, 0, 2013, 2014, 7, 11, 0, 0, 2014, 2015, 7, 9, 0, 0, 2015, 2016, 7, 16, 0, 0, 2016, 2017, 7, 13, 0, 0, 2017, 2018, 7, 10, 0, 0, 2018, 2019, 7, 5, 0, 0, 2019, 2020, 7, 15, 0, 0, 2020, 204, 1, 0, 0, 0, 2021, 2022, 7, 11, 0, 0, 2022, 2023, 7, 16, 0, 0, 2023, 2024, 7, 5, 0, 0, 2024, 2025, 7, 18, 0, 0, 2025, 2026, 7, 6, 0, 0, 2026, 2027, 7, 10, 0, 0, 2027, 206, 1, 0, 0, 0, 2028, 2029, 7, 11, 0, 0, 2029, 2030, 7, 27, 0, 0, 2030, 2031, 7, 17, 0, 0, 2031, 2032, 7, 10, 0, 0, 2032, 2033, 7, 28, 0, 0, 2033, 208, 1, 0, 0, 0, 2034, 2035, 7, 16, 0, 0, 2035, 2036, 7, 13, 0, 0, 2036, 2037, 7, 5, 0, 0, 2037, 2038, 7, 17, 0, 0, 2038, 2039, 7, 6, 0, 0, 2039, 2040, 7, 17, 0, 0, 2040, 2041, 7, 7, 0, 0, 2041, 2042, 7, 23, 0, 0, 2042, 210, 1, 0, 0, 0, 2043, 2044, 7, 16, 0, 0, 2044, 2045, 7, 13, 0, 0, 2045, 2046, 7, 22, 0, 0, 2046, 2047, 7, 10, 0, 0, 2047, 212, 1, 0, 0, 0, 2048, 2049, 7, 22, 0, 0, 2049, 2050, 7, 7, 0, 0, 2050, 2051, 7, 17, 0, 0, 2051, 2052, 7, 19, 0, 0, 2052, 2053, 7, 7, 0, 0, 2053, 214, 1, 0, 0, 0, 2054, 2055, 7, 22, 0, 0, 2055, 2056, 7, 7, 0, 0, 2056, 2057, 7, 17, 0, 0, 2057, 2058, 7, 29, 0, 0, 2058, 2059, 7, 22, 0, 0, 2059, 2060, 7, 10, 0, 0, 2060, 216, 1, 0, 0, 0, 2061, 2062, 7, 22, 0, 0, 2062, 2063, 7, 9, 0, 0, 2063, 2064, 7, 10, 0, 0, 2064, 2065, 7, 13, 0, 0, 2065, 218, 1, 0, 0, 0, 2066, 2067, 7, 22, 0, 0, 2067, 2068, 7, 9, 0, 0, 2068, 2069, 7, 17, 0, 0, 2069, 2070, 7, 7, 0, 0, 2070, 2071, 7, 23, 0, 0, 2071, 220, 1, 0, 0, 0, 2072, 2073, 7, 27, 0, 0, 2073, 2074, 7, 5, 0, 0, 2074, 2075, 7, 13, 0, 0, 2075, 2076, 7, 17, 0, 0, 2076, 2077, 7, 5, 0, 0, 2077, 2078, 7, 12, 0, 0, 2078, 2079, 7, 17, 0, 0, 2079, 2080, 7, 14, 0, 0, 2080, 222, 1, 0, 0, 0, 2081, 2082, 7, 28, 0, 0, 2082, 2083, 7, 20, 0, 0, 2083, 2084, 7, 10, 0, 0, 2084, 2085, 7, 7, 0, 0, 2085, 224, 1, 0, 0, 0, 2086, 2087, 7, 28, 0, 0, 2087, 2088, 7, 20, 0, 0, 2088, 2089, 7, 10, 0, 0, 2089, 2090, 7, 13, 0, 0, 2090, 2091, 7, 10, 0, 0, 2091, 226, 1, 0, 0, 0, 2092, 2093, 7, 28, 0, 0, 2093, 2094, 7, 17, 0, 0, 2094, 2095, 7, 7, 0, 0, 2095, 2096, 7, 12, 0, 0, 2096, 2097, 7, 19, 0, 0, 2097, 2098, 7, 28, 0, 0, 2098, 228, 1, 0, 0, 0, 2099, 2100, 7, 28, 0, 0, 2100, 2101, 7, 17, 0, 0, 2101, 2102, 7, 16, 0, 0, 2102, 2103, 7, 20, 0, 0, 2103, 230, 1, 0, 0, 0, 2104, 2105, 7, 5, 0, 0, 2105, 2106, 7, 22, 0, 0, 2106, 2107, 7, 16, 0, 0, 2107, 2108, 7, 20, 0, 0, 2108, 2109, 7, 19, 0, 0, 2109, 2110, 7, 13, 0, 0, 2110, 2111, 7, 17, 0, 0, 2111, 2112, 7, 11, 0, 0, 2112, 2113, 7, 5, 0, 0, 2113, 2114, 7, 16, 0, 0, 2114, 2115, 7, 17, 0, 0, 2115, 2116, 7, 19, 0, 0, 2116, 2117, 7, 7, 0, 0, 2117, 232, 1, 0, 0, 0, 2118, 2119, 7, 18, 0, 0, 2119, 2120, 7, 17, 0, 0, 2120, 2121, 7, 7, 0, 0, 2121, 2122, 7, 5, 0, 0, 2122, 2123, 7, 13, 0, 0, 2123, 2124, 7, 8, 0, 0, 2124, 234, 1, 0, 0, 0, 2125, 2126, 7, 14, 0, 0, 2126, 2127, 7, 19, 0, 0, 2127, 2128, 7, 6, 0, 0, 2128, 2129, 7, 6, 0, 0, 2129, 2130, 7, 5, 0, 0, 2130, 2131, 7, 16, 0, 0, 2131, 2132, 7, 17, 0, 0, 2132, 2133, 7, 19, 0, 0, 2133, 2134, 7, 7, 0, 0, 2134, 236, 1, 0, 0, 0, 2135, 2136, 7, 14, 0, 0, 2136, 2137, 7, 19, 0, 0, 2137, 2138, 7, 7, 0, 0, 2138, 2139, 7, 14, 0, 0, 2139, 2140, 7, 22, 0, 0, 2140, 2141, 7, 13, 0, 0, 2141, 2142, 7, 13, 0, 0, 2142, 2143, 7, 10, 0, 0, 2143, 2144, 7, 7, 0, 0, 2144, 2145, 7, 16, 0, 0, 2145, 2146, 7, 6, 0, 0, 2146, 2147, 7, 8, 0, 0, 2147, 238, 1, 0, 0, 0, 2148, 2149, 7, 14, 0, 0, 2149, 2150, 7, 13, 0, 0, 2150, 2151, 7, 19, 0, 0, 2151, 2152, 7, 9, 0, 0, 2152, 2153, 7, 9, 0, 0, 2153, 240, 1, 0, 0, 0, 2154, 2155, 7, 14, 0, 0, 2155, 2156, 7, 22, 0, 0, 2156, 2157, 7, 13, 0, 0, 2157, 2158, 7, 13, 0, 0, 2158, 2159, 7, 10, 0, 0, 2159, 2160, 7, 7, 0, 0, 2160, 2161, 7, 16, 0, 0, 2161, 2162, 5, 95, 0, 0, 2162, 2163, 7, 9, 0, 0, 2163, 2164, 7, 14, 0, 0, 2164, 2165, 7, 20, 0, 0, 2165, 2166, 7, 10, 0, 0, 2166, 2167, 7, 15, 0, 0, 2167, 2168, 7, 5, 0, 0, 2168, 242, 1, 0, 0, 0, 2169, 2170, 7, 25, 0, 0, 2170, 2171, 7, 13, 0, 0, 2171, 2172, 7, 10, 0, 0, 2172, 2173, 7, 10, 0, 0, 2173, 2174, 7, 11, 0, 0, 2174, 2175, 7, 10, 0, 0, 2175, 244, 1, 0, 0, 0, 2176, 2177, 7, 25, 0, 0, 2177, 2178, 7, 22, 0, 0, 2178, 2179, 7, 6, 0, 0, 2179, 2180, 7, 6, 0, 0, 2180, 246, 1, 0, 0, 0, 2181, 2182, 7, 17, 0, 0, 2182, 2183, 7, 6, 0, 0, 2183, 2184, 7, 17, 0, 0, 2184, 2185, 7, 21, 0, 0, 2185, 2186, 7, 10, 0, 0, 2186, 248, 1, 0, 0, 0, 2187, 2188, 7, 17, 0, 0, 2188, 2189, 7, 7, 0, 0, 2189, 2190, 7, 7, 0, 0, 2190, 2191, 7, 10, 0, 0, 2191, 2192, 7, 13, 0, 0, 2192, 250, 1, 0, 0, 0, 2193, 2194, 7, 17, 0, 0, 2194, 2195, 7, 9, 0, 0, 2195, 252, 1, 0, 0, 0, 2196, 2197, 7, 17, 0, 0, 2197, 2198, 7, 9, 0, 0, 2198, 2199, 7, 7, 0, 0, 2199, 2200, 7, 22, 0, 0, 2200, 2201, 7, 6, 0, 0, 2201, 2202, 7, 6, 0, 0, 2202, 254, 1, 0, 0, 0, 2203, 2204, 7, 30, 0, 0, 2204, 2205, 7, 19, 0, 0, 2205, 2206, 7, 17, 0, 0, 2206, 2207, 7, 7, 0, 0, 2207, 256, 1, 0, 0, 0, 2208, 2209, 7, 6, 0, 0, 2209, 2210, 7, 10, 0, 0, 2210, 2211, 7, 25, 0, 0, 2211, 2212, 7, 16, 0, 0, 2212, 258, 1, 0, 0, 0, 2213, 2214, 7, 6, 0, 0, 2214, 2215, 7, 17, 0, 0, 2215, 2216, 7, 21, 0, 0, 2216, 2217, 7, 10, 0, 0, 2217, 260, 1, 0, 0, 0, 2218, 2219, 7, 7, 0, 0, 2219, 2220, 7, 5, 0, 0, 2220, 2221, 7, 16, 0, 0, 2221, 2222, 7, 22, 0, 0, 2222, 2223, 7, 13, 0, 0, 2223, 2224, 7, 5, 0, 0, 2224, 2225, 7, 6, 0, 0, 2225, 262, 1, 0, 0, 0, 2226, 2227, 7, 7, 0, 0, 2227, 2228, 7, 19, 0, 0, 2228, 2229, 7, 16, 0, 0, 2229, 2230, 7, 7, 0, 0, 2230, 2231, 7, 22, 0, 0, 2231, 2232, 7, 6, 0, 0, 2232, 2233, 7, 6, 0, 0, 2233, 264, 1, 0, 0, 0, 2234, 2235, 7, 19, 0, 0, 2235, 2236, 7, 22, 0, 0, 2236, 2237, 7, 16, 0, 0, 2237, 2238, 7, 10, 0, 0, 2238, 2239, 7, 13, 0, 0, 2239, 266, 1, 0, 0, 0, 2240, 2241, 7, 19, 0, 0, 2241, 2242, 7, 27, 0, 0, 2242, 2243, 7, 10, 0, 0, 2243, 2244, 7, 13, 0, 0, 2244, 268, 1, 0, 0, 0, 2245, 2246, 7, 19, 0, 0, 2246, 2247, 7, 27, 0, 0, 2247, 2248, 7, 10, 0, 0, 2248, 2249, 7, 13, 0, 0, 2249, 2250, 7, 6, 0, 0, 2250, 2251, 7, 5, 0, 0, 2251, 2252, 7, 24, 0, 0, 2252, 2253, 7, 9, 0, 0, 2253, 270, 1, 0, 0, 0, 2254, 2255, 7, 13, 0, 0, 2255, 2256, 7, 17, 0, 0, 2256, 2257, 7, 23, 0, 0, 2257, 2258, 7, 20, 0, 0, 2258, 2259, 7, 16, 0, 0, 2259, 272, 1, 0, 0, 0, 2260, 2261, 7, 9, 0, 0, 2261, 2262, 7, 17, 0, 0, 2262, 2263, 7, 15, 0, 0, 2263, 2264, 7, 17, 0, 0, 2264, 2265, 7, 6, 0, 0, 2265, 2266, 7, 5, 0, 0, 2266, 2267, 7, 13, 0, 0, 2267, 274, 1, 0, 0, 0, 2268, 2269, 7, 27, 0, 0, 2269, 2270, 7, 10, 0, 0, 2270, 2271, 7, 13, 0, 0, 2271, 2272, 7, 18, 0, 0, 2272, 2273, 7, 19, 0, 0, 2273, 2274, 7, 9, 0, 0, 2274, 2275, 7, 10, 0, 0, 2275, 276, 1, 0, 0, 0, 2276, 2277, 7, 5, 0, 0, 2277, 2278, 7, 18, 0, 0, 2278, 2279, 7, 19, 0, 0, 2279, 2280, 7, 13, 0, 0, 2280, 2281, 7, 16, 0, 0, 2281, 278, 1, 0, 0, 0, 2282, 2283, 7, 5, 0, 0, 2283, 2284, 7, 18, 0, 0, 2284, 2285, 7, 9, 0, 0, 2285, 2286, 7, 19, 0, 0, 2286, 2287, 7, 6, 0, 0, 2287, 2288, 7, 22, 0, 0, 2288, 2289, 7, 16, 0, 0, 2289, 2290, 7, 10, 0, 0, 2290, 280, 1, 0, 0, 0, 2291, 2292, 7, 5, 0, 0, 2292, 2293, 7, 14, 0, 0, 2293, 2294, 7, 14, 0, 0, 2294, 2295, 7, 10, 0, 0, 2295, 2296, 7, 9, 0, 0, 2296, 2297, 7, 9, 0, 0, 2297, 282, 1, 0, 0, 0, 2298, 2299, 7, 5, 0, 0, 2299, 2300, 7, 14, 0, 0, 2300, 2301, 7, 16, 0, 0, 2301, 2302, 7, 17, 0, 0, 2302, 2303, 7, 19, 0, 0, 2303, 2304, 7, 7, 0, 0, 2304, 284, 1, 0, 0, 0, 2305, 2306, 7, 5, 0, 0, 2306, 2307, 7, 12, 0, 0, 2307, 2308, 7, 12, 0, 0, 2308, 286, 1, 0, 0, 0, 2309, 2310, 7, 5, 0, 0, 2310, 2311, 7, 12, 0, 0, 2311, 2312, 7, 15, 0, 0, 2312, 2313, 7, 17, 0, 0, 2313, 2314, 7, 7, 0, 0, 2314, 288, 1, 0, 0, 0, 2315, 2316, 7, 5, 0, 0, 2316, 2317, 7, 25, 0, 0, 2317, 2318, 7, 16, 0, 0, 2318, 2319, 7, 10, 0, 0, 2319, 2320, 7, 13, 0, 0, 2320, 290, 1, 0, 0, 0, 2321, 2322, 7, 5, 0, 0, 2322, 2323, 7, 23, 0, 0, 2323, 2324, 7, 23, 0, 0, 2324, 2325, 7, 13, 0, 0, 2325, 2326, 7, 10, 0, 0, 2326, 2327, 7, 23, 0, 0, 2327, 2328, 7, 5, 0, 0, 2328, 2329, 7, 16, 0, 0, 2329, 2330, 7, 10, 0, 0, 2330, 292, 1, 0, 0, 0, 2331, 2332, 7, 5, 0, 0, 2332, 2333, 7, 6, 0, 0, 2333, 2334, 7, 9, 0, 0, 2334, 2335, 7, 19, 0, 0, 2335, 294, 1, 0, 0, 0, 2336, 2337, 7, 5, 0, 0, 2337, 2338, 7, 6, 0, 0, 2338, 2339, 7, 16, 0, 0, 2339, 2340, 7, 10, 0, 0, 2340, 2341, 7, 13, 0, 0, 2341, 296, 1, 0, 0, 0, 2342, 2343, 7, 5, 0, 0, 2343, 2344, 7, 6, 0, 0, 2344, 2345, 7, 28, 0, 0, 2345, 2346, 7, 5, 0, 0, 2346, 2347, 7, 8, 0, 0, 2347, 2348, 7, 9, 0, 0, 2348, 298, 1, 0, 0, 0, 2349, 2350, 7, 5, 0, 0, 2350, 2351, 7, 9, 0, 0, 2351, 2352, 7, 9, 0, 0, 2352, 2353, 7, 10, 0, 0, 2353, 2354, 7, 13, 0, 0, 2354, 2355, 7, 16, 0, 0, 2355, 2356, 7, 17, 0, 0, 2356, 2357, 7, 19, 0, 0, 2357, 2358, 7, 7, 0, 0, 2358, 300, 1, 0, 0, 0, 2359, 2360, 7, 5, 0, 0, 2360, 2361, 7, 9, 0, 0, 2361, 2362, 7, 9, 0, 0, 2362, 2363, 7, 17, 0, 0, 2363, 2364, 7, 23, 0, 0, 2364, 2365, 7, 7, 0, 0, 2365, 2366, 7, 15, 0, 0, 2366, 2367, 7, 10, 0, 0, 2367, 2368, 7, 7, 0, 0, 2368, 2369, 7, 16, 0, 0, 2369, 302, 1, 0, 0, 0, 2370, 2371, 7, 5, 0, 0, 2371, 2372, 7, 16, 0, 0, 2372, 304, 1, 0, 0, 0, 2373, 2374, 7, 5, 0, 0, 2374, 2375, 7, 16, 0, 0, 2375, 2376, 7, 16, 0, 0, 2376, 2377, 7, 13, 0, 0, 2377, 2378, 7, 17, 0, 0, 2378, 2379, 7, 18, 0, 0, 2379, 2380, 7, 22, 0, 0, 2380, 2381, 7, 16, 0, 0, 2381, 2382, 7, 10, 0, 0, 2382, 306, 1, 0, 0, 0, 2383, 2384, 7, 18, 0, 0, 2384, 2385, 7, 5, 0, 0, 2385, 2386, 7, 14, 0, 0, 2386, 2387, 7, 21, 0, 0, 2387, 2388, 7, 28, 0, 0, 2388, 2389, 7, 5, 0, 0, 2389, 2390, 7, 13, 0, 0, 2390, 2391, 7, 12, 0, 0, 2391, 308, 1, 0, 0, 0, 2392, 2393, 7, 18, 0, 0, 2393, 2394, 7, 10, 0, 0, 2394, 2395, 7, 25, 0, 0, 2395, 2396, 7, 19, 0, 0, 2396, 2397, 7, 13, 0, 0, 2397, 2398, 7, 10, 0, 0, 2398, 310, 1, 0, 0, 0, 2399, 2400, 7, 18, 0, 0, 2400, 2401, 7, 10, 0, 0, 2401, 2402, 7, 23, 0, 0, 2402, 2403, 7, 17, 0, 0, 2403, 2404, 7, 7, 0, 0, 2404, 312, 1, 0, 0, 0, 2405, 2406, 7, 18, 0, 0, 2406, 2407, 7, 8, 0, 0, 2407, 314, 1, 0, 0, 0, 2408, 2409, 7, 14, 0, 0, 2409, 2410, 7, 5, 0, 0, 2410, 2411, 7, 14, 0, 0, 2411, 2412, 7, 20, 0, 0, 2412, 2413, 7, 10, 0, 0, 2413, 316, 1, 0, 0, 0, 2414, 2415, 7, 14, 0, 0, 2415, 2416, 7, 5, 0, 0, 2416, 2417, 7, 6, 0, 0, 2417, 2418, 7, 6, 0, 0, 2418, 2419, 7, 10, 0, 0, 2419, 2420, 7, 12, 0, 0, 2420, 318, 1, 0, 0, 0, 2421, 2422, 7, 14, 0, 0, 2422, 2423, 7, 5, 0, 0, 2423, 2424, 7, 9, 0, 0, 2424, 2425, 7, 14, 0, 0, 2425, 2426, 7, 5, 0, 0, 2426, 2427, 7, 12, 0, 0, 2427, 2428, 7, 10, 0, 0, 2428, 320, 1, 0, 0, 0, 2429, 2430, 7, 14, 0, 0, 2430, 2431, 7, 5, 0, 0, 2431, 2432, 7, 9, 0, 0, 2432, 2433, 7, 14, 0, 0, 2433, 2434, 7, 5, 0, 0, 2434, 2435, 7, 12, 0, 0, 2435, 2436, 7, 10, 0, 0, 2436, 2437, 7, 12, 0, 0, 2437, 322, 1, 0, 0, 0, 2438, 2439, 7, 14, 0, 0, 2439, 2440, 7, 5, 0, 0, 2440, 2441, 7, 16, 0, 0, 2441, 2442, 7, 5, 0, 0, 2442, 2443, 7, 6, 0, 0, 2443, 2444, 7, 19, 0, 0, 2444, 2445, 7, 23, 0, 0, 2445, 324, 1, 0, 0, 0, 2446, 2447, 7, 14, 0, 0, 2447, 2448, 7, 20, 0, 0, 2448, 2449, 7, 5, 0, 0, 2449, 2450, 7, 17, 0, 0, 2450, 2451, 7, 7, 0, 0, 2451, 326, 1, 0, 0, 0, 2452, 2453, 7, 14, 0, 0, 2453, 2454, 7, 20, 0, 0, 2454, 2455, 7, 5, 0, 0, 2455, 2456, 7, 13, 0, 0, 2456, 2457, 7, 5, 0, 0, 2457, 2458, 7, 14, 0, 0, 2458, 2459, 7, 16, 0, 0, 2459, 2460, 7, 10, 0, 0, 2460, 2461, 7, 13, 0, 0, 2461, 2462, 7, 17, 0, 0, 2462, 2463, 7, 9, 0, 0, 2463, 2464, 7, 16, 0, 0, 2464, 2465, 7, 17, 0, 0, 2465, 2466, 7, 14, 0, 0, 2466, 2467, 7, 9, 0, 0, 2467, 328, 1, 0, 0, 0, 2468, 2469, 7, 14, 0, 0, 2469, 2470, 7, 20, 0, 0, 2470, 2471, 7, 10, 0, 0, 2471, 2472, 7, 14, 0, 0, 2472, 2473, 7, 21, 0, 0, 2473, 2474, 7, 24, 0, 0, 2474, 2475, 7, 19, 0, 0, 2475, 2476, 7, 17, 0, 0, 2476, 2477, 7, 7, 0, 0, 2477, 2478, 7, 16, 0, 0, 2478, 330, 1, 0, 0, 0, 2479, 2480, 7, 14, 0, 0, 2480, 2481, 7, 6, 0, 0, 2481, 2482, 7, 5, 0, 0, 2482, 2483, 7, 9, 0, 0, 2483, 2484, 7, 9, 0, 0, 2484, 332, 1, 0, 0, 0, 2485, 2486, 7, 14, 0, 0, 2486, 2487, 7, 6, 0, 0, 2487, 2488, 7, 19, 0, 0, 2488, 2489, 7, 9, 0, 0, 2489, 2490, 7, 10, 0, 0, 2490, 334, 1, 0, 0, 0, 2491, 2492, 7, 14, 0, 0, 2492, 2493, 7, 6, 0, 0, 2493, 2494, 7, 22, 0, 0, 2494, 2495, 7, 9, 0, 0, 2495, 2496, 7, 16, 0, 0, 2496, 2497, 7, 10, 0, 0, 2497, 2498, 7, 13, 0, 0, 2498, 336, 1, 0, 0, 0, 2499, 2500, 7, 14, 0, 0, 2500, 2501, 7, 19, 0, 0, 2501, 2502, 7, 15, 0, 0, 2502, 2503, 7, 15, 0, 0, 2503, 2504, 7, 10, 0, 0, 2504, 2505, 7, 7, 0, 0, 2505, 2506, 7, 16, 0, 0, 2506, 338, 1, 0, 0, 0, 2507, 2508, 7, 14, 0, 0, 2508, 2509, 7, 19, 0, 0, 2509, 2510, 7, 15, 0, 0, 2510, 2511, 7, 15, 0, 0, 2511, 2512, 7, 10, 0, 0, 2512, 2513, 7, 7, 0, 0, 2513, 2514, 7, 16, 0, 0, 2514, 2515, 7, 9, 0, 0, 2515, 340, 1, 0, 0, 0, 2516, 2517, 7, 14, 0, 0, 2517, 2518, 7, 19, 0, 0, 2518, 2519, 7, 15, 0, 0, 2519, 2520, 7, 15, 0, 0, 2520, 2521, 7, 17, 0, 0, 2521, 2522, 7, 16, 0, 0, 2522, 342, 1, 0, 0, 0, 2523, 2524, 7, 14, 0, 0, 2524, 2525, 7, 19, 0, 0, 2525, 2526, 7, 15, 0, 0, 2526, 2527, 7, 15, 0, 0, 2527, 2528, 7, 17, 0, 0, 2528, 2529, 7, 16, 0, 0, 2529, 2530, 7, 16, 0, 0, 2530, 2531, 7, 10, 0, 0, 2531, 2532, 7, 12, 0, 0, 2532, 344, 1, 0, 0, 0, 2533, 2534, 7, 14, 0, 0, 2534, 2535, 7, 19, 0, 0, 2535, 2536, 7, 7, 0, 0, 2536, 2537, 7, 25, 0, 0, 2537, 2538, 7, 17, 0, 0, 2538, 2539, 7, 23, 0, 0, 2539, 2540, 7, 22, 0, 0, 2540, 2541, 7, 13, 0, 0, 2541, 2542, 7, 5, 0, 0, 2542, 2543, 7, 16, 0, 0, 2543, 2544, 7, 17, 0, 0, 2544, 2545, 7, 19, 0, 0, 2545, 2546, 7, 7, 0, 0, 2546, 346, 1, 0, 0, 0, 2547, 2548, 7, 14, 0, 0, 2548, 2549, 7, 19, 0, 0, 2549, 2550, 7, 7, 0, 0, 2550, 2551, 7, 7, 0, 0, 2551, 2552, 7, 10, 0, 0, 2552, 2553, 7, 14, 0, 0, 2553, 2554, 7, 16, 0, 0, 2554, 2555, 7, 17, 0, 0, 2555, 2556, 7, 19, 0, 0, 2556, 2557, 7, 7, 0, 0, 2557, 348, 1, 0, 0, 0, 2558, 2559, 7, 14, 0, 0, 2559, 2560, 7, 19, 0, 0, 2560, 2561, 7, 7, 0, 0, 2561, 2562, 7, 9, 0, 0, 2562, 2563, 7, 16, 0, 0, 2563, 2564, 7, 13, 0, 0, 2564, 2565, 7, 5, 0, 0, 2565, 2566, 7, 17, 0, 0, 2566, 2567, 7, 7, 0, 0, 2567, 2568, 7, 16, 0, 0, 2568, 2569, 7, 9, 0, 0, 2569, 350, 1, 0, 0, 0, 2570, 2571, 7, 14, 0, 0, 2571, 2572, 7, 19, 0, 0, 2572, 2573, 7, 7, 0, 0, 2573, 2574, 7, 16, 0, 0, 2574, 2575, 7, 10, 0, 0, 2575, 2576, 7, 7, 0, 0, 2576, 2577, 7, 16, 0, 0, 2577, 352, 1, 0, 0, 0, 2578, 2579, 7, 14, 0, 0, 2579, 2580, 7, 19, 0, 0, 2580, 2581, 7, 7, 0, 0, 2581, 2582, 7, 16, 0, 0, 2582, 2583, 7, 17, 0, 0, 2583, 2584, 7, 7, 0, 0, 2584, 2585, 7, 22, 0, 0, 2585, 2586, 7, 10, 0, 0, 2586, 354, 1, 0, 0, 0, 2587, 2588, 7, 14, 0, 0, 2588, 2589, 7, 19, 0, 0, 2589, 2590, 7, 7, 0, 0, 2590, 2591, 7, 27, 0, 0, 2591, 2592, 7, 10, 0, 0, 2592, 2593, 7, 13, 0, 0, 2593, 2594, 7, 9, 0, 0, 2594, 2595, 7, 17, 0, 0, 2595, 2596, 7, 19, 0, 0, 2596, 2597, 7, 7, 0, 0, 2597, 356, 1, 0, 0, 0, 2598, 2599, 7, 14, 0, 0, 2599, 2600, 7, 19, 0, 0, 2600, 2601, 7, 24, 0, 0, 2601, 2602, 7, 8, 0, 0, 2602, 358, 1, 0, 0, 0, 2603, 2604, 7, 14, 0, 0, 2604, 2605, 7, 19, 0, 0, 2605, 2606, 7, 9, 0, 0, 2606, 2607, 7, 16, 0, 0, 2607, 360, 1, 0, 0, 0, 2608, 2609, 7, 14, 0, 0, 2609, 2610, 7, 9, 0, 0, 2610, 2611, 7, 27, 0, 0, 2611, 362, 1, 0, 0, 0, 2612, 2613, 7, 14, 0, 0, 2613, 2614, 7, 22, 0, 0, 2614, 2615, 7, 13, 0, 0, 2615, 2616, 7, 9, 0, 0, 2616, 2617, 7, 19, 0, 0, 2617, 2618, 7, 13, 0, 0, 2618, 364, 1, 0, 0, 0, 2619, 2620, 7, 14, 0, 0, 2620, 2621, 7, 8, 0, 0, 2621, 2622, 7, 14, 0, 0, 2622, 2623, 7, 6, 0, 0, 2623, 2624, 7, 10, 0, 0, 2624, 366, 1, 0, 0, 0, 2625, 2626, 7, 12, 0, 0, 2626, 2627, 7, 5, 0, 0, 2627, 2628, 7, 16, 0, 0, 2628, 2629, 7, 5, 0, 0, 2629, 368, 1, 0, 0, 0, 2630, 2631, 7, 12, 0, 0, 2631, 2632, 7, 5, 0, 0, 2632, 2633, 7, 16, 0, 0, 2633, 2634, 7, 5, 0, 0, 2634, 2635, 7, 18, 0, 0, 2635, 2636, 7, 5, 0, 0, 2636, 2637, 7, 9, 0, 0, 2637, 2638, 7, 10, 0, 0, 2638, 370, 1, 0, 0, 0, 2639, 2640, 7, 12, 0, 0, 2640, 2641, 7, 5, 0, 0, 2641, 2642, 7, 8, 0, 0, 2642, 372, 1, 0, 0, 0, 2643, 2644, 7, 12, 0, 0, 2644, 2645, 7, 10, 0, 0, 2645, 2646, 7, 5, 0, 0, 2646, 2647, 7, 6, 0, 0, 2647, 2648, 7, 6, 0, 0, 2648, 2649, 7, 19, 0, 0, 2649, 2650, 7, 14, 0, 0, 2650, 2651, 7, 5, 0, 0, 2651, 2652, 7, 16, 0, 0, 2652, 2653, 7, 10, 0, 0, 2653, 374, 1, 0, 0, 0, 2654, 2655, 7, 12, 0, 0, 2655, 2656, 7, 10, 0, 0, 2656, 2657, 7, 14, 0, 0, 2657, 2658, 7, 6, 0, 0, 2658, 2659, 7, 5, 0, 0, 2659, 2660, 7, 13, 0, 0, 2660, 2661, 7, 10, 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, 5, 0, 0, 2666, 2667, 7, 22, 0, 0, 2667, 2668, 7, 6, 0, 0, 2668, 2669, 7, 16, 0, 0, 2669, 2670, 7, 9, 0, 0, 2670, 378, 1, 0, 0, 0, 2671, 2672, 7, 12, 0, 0, 2672, 2673, 7, 10, 0, 0, 2673, 2674, 7, 25, 0, 0, 2674, 2675, 7, 10, 0, 0, 2675, 2676, 7, 13, 0, 0, 2676, 2677, 7, 13, 0, 0, 2677, 2678, 7, 10, 0, 0, 2678, 2679, 7, 12, 0, 0, 2679, 380, 1, 0, 0, 0, 2680, 2681, 7, 12, 0, 0, 2681, 2682, 7, 10, 0, 0, 2682, 2683, 7, 25, 0, 0, 2683, 2684, 7, 17, 0, 0, 2684, 2685, 7, 7, 0, 0, 2685, 2686, 7, 10, 0, 0, 2686, 2687, 7, 13, 0, 0, 2687, 382, 1, 0, 0, 0, 2688, 2689, 7, 12, 0, 0, 2689, 2690, 7, 10, 0, 0, 2690, 2691, 7, 6, 0, 0, 2691, 2692, 7, 10, 0, 0, 2692, 2693, 7, 16, 0, 0, 2693, 2694, 7, 10, 0, 0, 2694, 384, 1, 0, 0, 0, 2695, 2696, 7, 12, 0, 0, 2696, 2697, 7, 10, 0, 0, 2697, 2698, 7, 6, 0, 0, 2698, 2699, 7, 17, 0, 0, 2699, 2700, 7, 15, 0, 0, 2700, 2701, 7, 17, 0, 0, 2701, 2702, 7, 16, 0, 0, 2702, 2703, 7, 10, 0, 0, 2703, 2704, 7, 13, 0, 0, 2704, 386, 1, 0, 0, 0, 2705, 2706, 7, 12, 0, 0, 2706, 2707, 7, 10, 0, 0, 2707, 2708, 7, 6, 0, 0, 2708, 2709, 7, 17, 0, 0, 2709, 2710, 7, 15, 0, 0, 2710, 2711, 7, 17, 0, 0, 2711, 2712, 7, 16, 0, 0, 2712, 2713, 7, 10, 0, 0, 2713, 2714, 7, 13, 0, 0, 2714, 2715, 7, 9, 0, 0, 2715, 388, 1, 0, 0, 0, 2716, 2717, 7, 12, 0, 0, 2717, 2718, 7, 17, 0, 0, 2718, 2719, 7, 14, 0, 0, 2719, 2720, 7, 16, 0, 0, 2720, 2721, 7, 17, 0, 0, 2721, 2722, 7, 19, 0, 0, 2722, 2723, 7, 7, 0, 0, 2723, 2724, 7, 5, 0, 0, 2724, 2725, 7, 13, 0, 0, 2725, 2726, 7, 8, 0, 0, 2726, 390, 1, 0, 0, 0, 2727, 2728, 7, 12, 0, 0, 2728, 2729, 7, 17, 0, 0, 2729, 2730, 7, 9, 0, 0, 2730, 2731, 7, 5, 0, 0, 2731, 2732, 7, 18, 0, 0, 2732, 2733, 7, 6, 0, 0, 2733, 2734, 7, 10, 0, 0, 2734, 392, 1, 0, 0, 0, 2735, 2736, 7, 12, 0, 0, 2736, 2737, 7, 17, 0, 0, 2737, 2738, 7, 9, 0, 0, 2738, 2739, 7, 14, 0, 0, 2739, 2740, 7, 5, 0, 0, 2740, 2741, 7, 13, 0, 0, 2741, 2742, 7, 12, 0, 0, 2742, 394, 1, 0, 0, 0, 2743, 2744, 7, 12, 0, 0, 2744, 2745, 7, 19, 0, 0, 2745, 2746, 7, 14, 0, 0, 2746, 2747, 7, 22, 0, 0, 2747, 2748, 7, 15, 0, 0, 2748, 2749, 7, 10, 0, 0, 2749, 2750, 7, 7, 0, 0, 2750, 2751, 7, 16, 0, 0, 2751, 396, 1, 0, 0, 0, 2752, 2753, 7, 12, 0, 0, 2753, 2754, 7, 19, 0, 0, 2754, 2755, 7, 15, 0, 0, 2755, 2756, 7, 5, 0, 0, 2756, 2757, 7, 17, 0, 0, 2757, 2758, 7, 7, 0, 0, 2758, 398, 1, 0, 0, 0, 2759, 2760, 7, 12, 0, 0, 2760, 2761, 7, 19, 0, 0, 2761, 2762, 7, 22, 0, 0, 2762, 2763, 7, 18, 0, 0, 2763, 2764, 7, 6, 0, 0, 2764, 2765, 7, 10, 0, 0, 2765, 400, 1, 0, 0, 0, 2766, 2767, 7, 12, 0, 0, 2767, 2768, 7, 13, 0, 0, 2768, 2769, 7, 19, 0, 0, 2769, 2770, 7, 24, 0, 0, 2770, 402, 1, 0, 0, 0, 2771, 2772, 7, 10, 0, 0, 2772, 2773, 7, 5, 0, 0, 2773, 2774, 7, 14, 0, 0, 2774, 2775, 7, 20, 0, 0, 2775, 404, 1, 0, 0, 0, 2776, 2777, 7, 10, 0, 0, 2777, 2778, 7, 7, 0, 0, 2778, 2779, 7, 5, 0, 0, 2779, 2780, 7, 18, 0, 0, 2780, 2781, 7, 6, 0, 0, 2781, 2782, 7, 10, 0, 0, 2782, 406, 1, 0, 0, 0, 2783, 2784, 7, 10, 0, 0, 2784, 2785, 7, 7, 0, 0, 2785, 2786, 7, 14, 0, 0, 2786, 2787, 7, 19, 0, 0, 2787, 2788, 7, 12, 0, 0, 2788, 2789, 7, 17, 0, 0, 2789, 2790, 7, 7, 0, 0, 2790, 2791, 7, 23, 0, 0, 2791, 408, 1, 0, 0, 0, 2792, 2793, 7, 10, 0, 0, 2793, 2794, 7, 7, 0, 0, 2794, 2795, 7, 14, 0, 0, 2795, 2796, 7, 13, 0, 0, 2796, 2797, 7, 8, 0, 0, 2797, 2798, 7, 24, 0, 0, 2798, 2799, 7, 16, 0, 0, 2799, 2800, 7, 10, 0, 0, 2800, 2801, 7, 12, 0, 0, 2801, 410, 1, 0, 0, 0, 2802, 2803, 7, 10, 0, 0, 2803, 2804, 7, 7, 0, 0, 2804, 2805, 7, 22, 0, 0, 2805, 2806, 7, 15, 0, 0, 2806, 412, 1, 0, 0, 0, 2807, 2808, 7, 10, 0, 0, 2808, 2809, 7, 9, 0, 0, 2809, 2810, 7, 14, 0, 0, 2810, 2811, 7, 5, 0, 0, 2811, 2812, 7, 24, 0, 0, 2812, 2813, 7, 10, 0, 0, 2813, 414, 1, 0, 0, 0, 2814, 2815, 7, 10, 0, 0, 2815, 2816, 7, 27, 0, 0, 2816, 2817, 7, 10, 0, 0, 2817, 2818, 7, 7, 0, 0, 2818, 2819, 7, 16, 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, 12, 0, 0, 2826, 2827, 7, 10, 0, 0, 2827, 418, 1, 0, 0, 0, 2828, 2829, 7, 10, 0, 0, 2829, 2830, 7, 26, 0, 0, 2830, 2831, 7, 14, 0, 0, 2831, 2832, 7, 6, 0, 0, 2832, 2833, 7, 22, 0, 0, 2833, 2834, 7, 12, 0, 0, 2834, 2835, 7, 17, 0, 0, 2835, 2836, 7, 7, 0, 0, 2836, 2837, 7, 23, 0, 0, 2837, 420, 1, 0, 0, 0, 2838, 2839, 7, 10, 0, 0, 2839, 2840, 7, 26, 0, 0, 2840, 2841, 7, 14, 0, 0, 2841, 2842, 7, 6, 0, 0, 2842, 2843, 7, 22, 0, 0, 2843, 2844, 7, 9, 0, 0, 2844, 2845, 7, 17, 0, 0, 2845, 2846, 7, 27, 0, 0, 2846, 2847, 7, 10, 0, 0, 2847, 422, 1, 0, 0, 0, 2848, 2849, 7, 10, 0, 0, 2849, 2850, 7, 26, 0, 0, 2850, 2851, 7, 10, 0, 0, 2851, 2852, 7, 14, 0, 0, 2852, 2853, 7, 22, 0, 0, 2853, 2854, 7, 16, 0, 0, 2854, 2855, 7, 10, 0, 0, 2855, 424, 1, 0, 0, 0, 2856, 2857, 7, 10, 0, 0, 2857, 2858, 7, 26, 0, 0, 2858, 2859, 7, 24, 0, 0, 2859, 2860, 7, 6, 0, 0, 2860, 2861, 7, 5, 0, 0, 2861, 2862, 7, 17, 0, 0, 2862, 2863, 7, 7, 0, 0, 2863, 426, 1, 0, 0, 0, 2864, 2865, 7, 10, 0, 0, 2865, 2866, 7, 26, 0, 0, 2866, 2867, 7, 16, 0, 0, 2867, 2868, 7, 10, 0, 0, 2868, 2869, 7, 7, 0, 0, 2869, 2870, 7, 9, 0, 0, 2870, 2871, 7, 17, 0, 0, 2871, 2872, 7, 19, 0, 0, 2872, 2873, 7, 7, 0, 0, 2873, 428, 1, 0, 0, 0, 2874, 2875, 7, 10, 0, 0, 2875, 2876, 7, 26, 0, 0, 2876, 2877, 7, 16, 0, 0, 2877, 2878, 7, 10, 0, 0, 2878, 2879, 7, 13, 0, 0, 2879, 2880, 7, 7, 0, 0, 2880, 2881, 7, 5, 0, 0, 2881, 2882, 7, 6, 0, 0, 2882, 430, 1, 0, 0, 0, 2883, 2884, 7, 25, 0, 0, 2884, 2885, 7, 5, 0, 0, 2885, 2886, 7, 15, 0, 0, 2886, 2887, 7, 17, 0, 0, 2887, 2888, 7, 6, 0, 0, 2888, 2889, 7, 8, 0, 0, 2889, 432, 1, 0, 0, 0, 2890, 2891, 7, 25, 0, 0, 2891, 2892, 7, 17, 0, 0, 2892, 2893, 7, 13, 0, 0, 2893, 2894, 7, 9, 0, 0, 2894, 2895, 7, 16, 0, 0, 2895, 434, 1, 0, 0, 0, 2896, 2897, 7, 25, 0, 0, 2897, 2898, 7, 19, 0, 0, 2898, 2899, 7, 6, 0, 0, 2899, 2900, 7, 6, 0, 0, 2900, 2901, 7, 19, 0, 0, 2901, 2902, 7, 28, 0, 0, 2902, 2903, 7, 17, 0, 0, 2903, 2904, 7, 7, 0, 0, 2904, 2905, 7, 23, 0, 0, 2905, 436, 1, 0, 0, 0, 2906, 2907, 7, 25, 0, 0, 2907, 2908, 7, 19, 0, 0, 2908, 2909, 7, 13, 0, 0, 2909, 2910, 7, 14, 0, 0, 2910, 2911, 7, 10, 0, 0, 2911, 438, 1, 0, 0, 0, 2912, 2913, 7, 25, 0, 0, 2913, 2914, 7, 19, 0, 0, 2914, 2915, 7, 13, 0, 0, 2915, 2916, 7, 28, 0, 0, 2916, 2917, 7, 5, 0, 0, 2917, 2918, 7, 13, 0, 0, 2918, 2919, 7, 12, 0, 0, 2919, 440, 1, 0, 0, 0, 2920, 2921, 7, 25, 0, 0, 2921, 2922, 7, 22, 0, 0, 2922, 2923, 7, 7, 0, 0, 2923, 2924, 7, 14, 0, 0, 2924, 2925, 7, 16, 0, 0, 2925, 2926, 7, 17, 0, 0, 2926, 2927, 7, 19, 0, 0, 2927, 2928, 7, 7, 0, 0, 2928, 442, 1, 0, 0, 0, 2929, 2930, 7, 25, 0, 0, 2930, 2931, 7, 22, 0, 0, 2931, 2932, 7, 7, 0, 0, 2932, 2933, 7, 14, 0, 0, 2933, 2934, 7, 16, 0, 0, 2934, 2935, 7, 17, 0, 0, 2935, 2936, 7, 19, 0, 0, 2936, 2937, 7, 7, 0, 0, 2937, 2938, 7, 9, 0, 0, 2938, 444, 1, 0, 0, 0, 2939, 2940, 7, 23, 0, 0, 2940, 2941, 7, 6, 0, 0, 2941, 2942, 7, 19, 0, 0, 2942, 2943, 7, 18, 0, 0, 2943, 2944, 7, 5, 0, 0, 2944, 2945, 7, 6, 0, 0, 2945, 446, 1, 0, 0, 0, 2946, 2947, 7, 23, 0, 0, 2947, 2948, 7, 13, 0, 0, 2948, 2949, 7, 5, 0, 0, 2949, 2950, 7, 7, 0, 0, 2950, 2951, 7, 16, 0, 0, 2951, 2952, 7, 10, 0, 0, 2952, 2953, 7, 12, 0, 0, 2953, 448, 1, 0, 0, 0, 2954, 2955, 7, 20, 0, 0, 2955, 2956, 7, 5, 0, 0, 2956, 2957, 7, 7, 0, 0, 2957, 2958, 7, 12, 0, 0, 2958, 2959, 7, 6, 0, 0, 2959, 2960, 7, 10, 0, 0, 2960, 2961, 7, 13, 0, 0, 2961, 450, 1, 0, 0, 0, 2962, 2963, 7, 20, 0, 0, 2963, 2964, 7, 10, 0, 0, 2964, 2965, 7, 5, 0, 0, 2965, 2966, 7, 12, 0, 0, 2966, 2967, 7, 10, 0, 0, 2967, 2968, 7, 13, 0, 0, 2968, 452, 1, 0, 0, 0, 2969, 2970, 7, 20, 0, 0, 2970, 2971, 7, 19, 0, 0, 2971, 2972, 7, 6, 0, 0, 2972, 2973, 7, 12, 0, 0, 2973, 454, 1, 0, 0, 0, 2974, 2975, 7, 20, 0, 0, 2975, 2976, 7, 19, 0, 0, 2976, 2977, 7, 22, 0, 0, 2977, 2978, 7, 13, 0, 0, 2978, 456, 1, 0, 0, 0, 2979, 2980, 7, 17, 0, 0, 2980, 2981, 7, 12, 0, 0, 2981, 2982, 7, 10, 0, 0, 2982, 2983, 7, 7, 0, 0, 2983, 2984, 7, 16, 0, 0, 2984, 2985, 7, 17, 0, 0, 2985, 2986, 7, 16, 0, 0, 2986, 2987, 7, 8, 0, 0, 2987, 458, 1, 0, 0, 0, 2988, 2989, 7, 17, 0, 0, 2989, 2990, 7, 25, 0, 0, 2990, 460, 1, 0, 0, 0, 2991, 2992, 7, 17, 0, 0, 2992, 2993, 7, 15, 0, 0, 2993, 2994, 7, 15, 0, 0, 2994, 2995, 7, 10, 0, 0, 2995, 2996, 7, 12, 0, 0, 2996, 2997, 7, 17, 0, 0, 2997, 2998, 7, 5, 0, 0, 2998, 2999, 7, 16, 0, 0, 2999, 3000, 7, 10, 0, 0, 3000, 462, 1, 0, 0, 0, 3001, 3002, 7, 17, 0, 0, 3002, 3003, 7, 15, 0, 0, 3003, 3004, 7, 15, 0, 0, 3004, 3005, 7, 22, 0, 0, 3005, 3006, 7, 16, 0, 0, 3006, 3007, 7, 5, 0, 0, 3007, 3008, 7, 18, 0, 0, 3008, 3009, 7, 6, 0, 0, 3009, 3010, 7, 10, 0, 0, 3010, 464, 1, 0, 0, 0, 3011, 3012, 7, 17, 0, 0, 3012, 3013, 7, 15, 0, 0, 3013, 3014, 7, 24, 0, 0, 3014, 3015, 7, 6, 0, 0, 3015, 3016, 7, 17, 0, 0, 3016, 3017, 7, 14, 0, 0, 3017, 3018, 7, 17, 0, 0, 3018, 3019, 7, 16, 0, 0, 3019, 466, 1, 0, 0, 0, 3020, 3021, 7, 17, 0, 0, 3021, 3022, 7, 7, 0, 0, 3022, 3023, 7, 14, 0, 0, 3023, 3024, 7, 6, 0, 0, 3024, 3025, 7, 22, 0, 0, 3025, 3026, 7, 12, 0, 0, 3026, 3027, 7, 17, 0, 0, 3027, 3028, 7, 7, 0, 0, 3028, 3029, 7, 23, 0, 0, 3029, 468, 1, 0, 0, 0, 3030, 3031, 7, 17, 0, 0, 3031, 3032, 7, 7, 0, 0, 3032, 3033, 7, 14, 0, 0, 3033, 3034, 7, 13, 0, 0, 3034, 3035, 7, 10, 0, 0, 3035, 3036, 7, 15, 0, 0, 3036, 3037, 7, 10, 0, 0, 3037, 3038, 7, 7, 0, 0, 3038, 3039, 7, 16, 0, 0, 3039, 470, 1, 0, 0, 0, 3040, 3041, 7, 17, 0, 0, 3041, 3042, 7, 7, 0, 0, 3042, 3043, 7, 12, 0, 0, 3043, 3044, 7, 10, 0, 0, 3044, 3045, 7, 26, 0, 0, 3045, 472, 1, 0, 0, 0, 3046, 3047, 7, 17, 0, 0, 3047, 3048, 7, 7, 0, 0, 3048, 3049, 7, 12, 0, 0, 3049, 3050, 7, 10, 0, 0, 3050, 3051, 7, 26, 0, 0, 3051, 3052, 7, 10, 0, 0, 3052, 3053, 7, 9, 0, 0, 3053, 474, 1, 0, 0, 0, 3054, 3055, 7, 17, 0, 0, 3055, 3056, 7, 7, 0, 0, 3056, 3057, 7, 20, 0, 0, 3057, 3058, 7, 10, 0, 0, 3058, 3059, 7, 13, 0, 0, 3059, 3060, 7, 17, 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, 20, 0, 0, 3065, 3066, 7, 10, 0, 0, 3066, 3067, 7, 13, 0, 0, 3067, 3068, 7, 17, 0, 0, 3068, 3069, 7, 16, 0, 0, 3069, 3070, 7, 9, 0, 0, 3070, 478, 1, 0, 0, 0, 3071, 3072, 7, 17, 0, 0, 3072, 3073, 7, 7, 0, 0, 3073, 3074, 7, 6, 0, 0, 3074, 3075, 7, 17, 0, 0, 3075, 3076, 7, 7, 0, 0, 3076, 3077, 7, 10, 0, 0, 3077, 480, 1, 0, 0, 0, 3078, 3079, 7, 17, 0, 0, 3079, 3080, 7, 7, 0, 0, 3080, 3081, 7, 9, 0, 0, 3081, 3082, 7, 10, 0, 0, 3082, 3083, 7, 7, 0, 0, 3083, 3084, 7, 9, 0, 0, 3084, 3085, 7, 17, 0, 0, 3085, 3086, 7, 16, 0, 0, 3086, 3087, 7, 17, 0, 0, 3087, 3088, 7, 27, 0, 0, 3088, 3089, 7, 10, 0, 0, 3089, 482, 1, 0, 0, 0, 3090, 3091, 7, 17, 0, 0, 3091, 3092, 7, 7, 0, 0, 3092, 3093, 7, 9, 0, 0, 3093, 3094, 7, 10, 0, 0, 3094, 3095, 7, 13, 0, 0, 3095, 3096, 7, 16, 0, 0, 3096, 484, 1, 0, 0, 0, 3097, 3098, 7, 17, 0, 0, 3098, 3099, 7, 7, 0, 0, 3099, 3100, 7, 9, 0, 0, 3100, 3101, 7, 16, 0, 0, 3101, 3102, 7, 10, 0, 0, 3102, 3103, 7, 5, 0, 0, 3103, 3104, 7, 12, 0, 0, 3104, 486, 1, 0, 0, 0, 3105, 3106, 7, 17, 0, 0, 3106, 3107, 7, 7, 0, 0, 3107, 3108, 7, 27, 0, 0, 3108, 3109, 7, 19, 0, 0, 3109, 3110, 7, 21, 0, 0, 3110, 3111, 7, 10, 0, 0, 3111, 3112, 7, 13, 0, 0, 3112, 488, 1, 0, 0, 0, 3113, 3114, 7, 17, 0, 0, 3114, 3115, 7, 9, 0, 0, 3115, 3116, 7, 19, 0, 0, 3116, 3117, 7, 6, 0, 0, 3117, 3118, 7, 5, 0, 0, 3118, 3119, 7, 16, 0, 0, 3119, 3120, 7, 17, 0, 0, 3120, 3121, 7, 19, 0, 0, 3121, 3122, 7, 7, 0, 0, 3122, 490, 1, 0, 0, 0, 3123, 3124, 7, 21, 0, 0, 3124, 3125, 7, 10, 0, 0, 3125, 3126, 7, 8, 0, 0, 3126, 492, 1, 0, 0, 0, 3127, 3128, 7, 6, 0, 0, 3128, 3129, 7, 5, 0, 0, 3129, 3130, 7, 18, 0, 0, 3130, 3131, 7, 10, 0, 0, 3131, 3132, 7, 6, 0, 0, 3132, 494, 1, 0, 0, 0, 3133, 3134, 7, 6, 0, 0, 3134, 3135, 7, 5, 0, 0, 3135, 3136, 7, 7, 0, 0, 3136, 3137, 7, 23, 0, 0, 3137, 3138, 7, 22, 0, 0, 3138, 3139, 7, 5, 0, 0, 3139, 3140, 7, 23, 0, 0, 3140, 3141, 7, 10, 0, 0, 3141, 496, 1, 0, 0, 0, 3142, 3143, 7, 6, 0, 0, 3143, 3144, 7, 5, 0, 0, 3144, 3145, 7, 13, 0, 0, 3145, 3146, 7, 23, 0, 0, 3146, 3147, 7, 10, 0, 0, 3147, 498, 1, 0, 0, 0, 3148, 3149, 7, 6, 0, 0, 3149, 3150, 7, 5, 0, 0, 3150, 3151, 7, 9, 0, 0, 3151, 3152, 7, 16, 0, 0, 3152, 500, 1, 0, 0, 0, 3153, 3154, 7, 6, 0, 0, 3154, 3155, 7, 10, 0, 0, 3155, 3156, 7, 5, 0, 0, 3156, 3157, 7, 21, 0, 0, 3157, 3158, 7, 24, 0, 0, 3158, 3159, 7, 13, 0, 0, 3159, 3160, 7, 19, 0, 0, 3160, 3161, 7, 19, 0, 0, 3161, 3162, 7, 25, 0, 0, 3162, 502, 1, 0, 0, 0, 3163, 3164, 7, 6, 0, 0, 3164, 3165, 7, 10, 0, 0, 3165, 3166, 7, 27, 0, 0, 3166, 3167, 7, 10, 0, 0, 3167, 3168, 7, 6, 0, 0, 3168, 504, 1, 0, 0, 0, 3169, 3170, 7, 6, 0, 0, 3170, 3171, 7, 17, 0, 0, 3171, 3172, 7, 9, 0, 0, 3172, 3173, 7, 16, 0, 0, 3173, 3174, 7, 10, 0, 0, 3174, 3175, 7, 7, 0, 0, 3175, 506, 1, 0, 0, 0, 3176, 3177, 7, 6, 0, 0, 3177, 3178, 7, 19, 0, 0, 3178, 3179, 7, 5, 0, 0, 3179, 3180, 7, 12, 0, 0, 3180, 508, 1, 0, 0, 0, 3181, 3182, 7, 6, 0, 0, 3182, 3183, 7, 19, 0, 0, 3183, 3184, 7, 14, 0, 0, 3184, 3185, 7, 5, 0, 0, 3185, 3186, 7, 6, 0, 0, 3186, 510, 1, 0, 0, 0, 3187, 3188, 7, 6, 0, 0, 3188, 3189, 7, 19, 0, 0, 3189, 3190, 7, 14, 0, 0, 3190, 3191, 7, 5, 0, 0, 3191, 3192, 7, 16, 0, 0, 3192, 3193, 7, 17, 0, 0, 3193, 3194, 7, 19, 0, 0, 3194, 3195, 7, 7, 0, 0, 3195, 512, 1, 0, 0, 0, 3196, 3197, 7, 6, 0, 0, 3197, 3198, 7, 19, 0, 0, 3198, 3199, 7, 14, 0, 0, 3199, 3200, 7, 21, 0, 0, 3200, 514, 1, 0, 0, 0, 3201, 3202, 7, 15, 0, 0, 3202, 3203, 7, 5, 0, 0, 3203, 3204, 7, 24, 0, 0, 3204, 3205, 7, 24, 0, 0, 3205, 3206, 7, 17, 0, 0, 3206, 3207, 7, 7, 0, 0, 3207, 3208, 7, 23, 0, 0, 3208, 516, 1, 0, 0, 0, 3209, 3210, 7, 15, 0, 0, 3210, 3211, 7, 5, 0, 0, 3211, 3212, 7, 16, 0, 0, 3212, 3213, 7, 14, 0, 0, 3213, 3214, 7, 20, 0, 0, 3214, 518, 1, 0, 0, 0, 3215, 3216, 7, 15, 0, 0, 3216, 3217, 7, 5, 0, 0, 3217, 3218, 7, 16, 0, 0, 3218, 3219, 7, 14, 0, 0, 3219, 3220, 7, 20, 0, 0, 3220, 3221, 7, 10, 0, 0, 3221, 3222, 7, 12, 0, 0, 3222, 520, 1, 0, 0, 0, 3223, 3224, 7, 15, 0, 0, 3224, 3225, 7, 5, 0, 0, 3225, 3226, 7, 16, 0, 0, 3226, 3227, 7, 10, 0, 0, 3227, 3228, 7, 13, 0, 0, 3228, 3229, 7, 17, 0, 0, 3229, 3230, 7, 5, 0, 0, 3230, 3231, 7, 6, 0, 0, 3231, 3232, 7, 17, 0, 0, 3232, 3233, 7, 11, 0, 0, 3233, 3234, 7, 10, 0, 0, 3234, 3235, 7, 12, 0, 0, 3235, 522, 1, 0, 0, 0, 3236, 3237, 7, 15, 0, 0, 3237, 3238, 7, 5, 0, 0, 3238, 3239, 7, 26, 0, 0, 3239, 3240, 7, 27, 0, 0, 3240, 3241, 7, 5, 0, 0, 3241, 3242, 7, 6, 0, 0, 3242, 3243, 7, 22, 0, 0, 3243, 3244, 7, 10, 0, 0, 3244, 524, 1, 0, 0, 0, 3245, 3246, 7, 15, 0, 0, 3246, 3247, 7, 10, 0, 0, 3247, 3248, 7, 13, 0, 0, 3248, 3249, 7, 23, 0, 0, 3249, 3250, 7, 10, 0, 0, 3250, 526, 1, 0, 0, 0, 3251, 3252, 7, 15, 0, 0, 3252, 3253, 7, 17, 0, 0, 3253, 3254, 7, 7, 0, 0, 3254, 3255, 7, 22, 0, 0, 3255, 3256, 7, 16, 0, 0, 3256, 3257, 7, 10, 0, 0, 3257, 528, 1, 0, 0, 0, 3258, 3259, 7, 15, 0, 0, 3259, 3260, 7, 17, 0, 0, 3260, 3261, 7, 7, 0, 0, 3261, 3262, 7, 27, 0, 0, 3262, 3263, 7, 5, 0, 0, 3263, 3264, 7, 6, 0, 0, 3264, 3265, 7, 22, 0, 0, 3265, 3266, 7, 10, 0, 0, 3266, 530, 1, 0, 0, 0, 3267, 3268, 7, 15, 0, 0, 3268, 3269, 7, 19, 0, 0, 3269, 3270, 7, 12, 0, 0, 3270, 3271, 7, 10, 0, 0, 3271, 532, 1, 0, 0, 0, 3272, 3273, 7, 15, 0, 0, 3273, 3274, 7, 19, 0, 0, 3274, 3275, 7, 7, 0, 0, 3275, 3276, 7, 16, 0, 0, 3276, 3277, 7, 20, 0, 0, 3277, 534, 1, 0, 0, 0, 3278, 3279, 7, 15, 0, 0, 3279, 3280, 7, 19, 0, 0, 3280, 3281, 7, 27, 0, 0, 3281, 3282, 7, 10, 0, 0, 3282, 536, 1, 0, 0, 0, 3283, 3284, 7, 7, 0, 0, 3284, 3285, 7, 5, 0, 0, 3285, 3286, 7, 15, 0, 0, 3286, 3287, 7, 10, 0, 0, 3287, 538, 1, 0, 0, 0, 3288, 3289, 7, 7, 0, 0, 3289, 3290, 7, 5, 0, 0, 3290, 3291, 7, 15, 0, 0, 3291, 3292, 7, 10, 0, 0, 3292, 3293, 7, 9, 0, 0, 3293, 540, 1, 0, 0, 0, 3294, 3295, 7, 7, 0, 0, 3295, 3296, 7, 10, 0, 0, 3296, 3297, 7, 26, 0, 0, 3297, 3298, 7, 16, 0, 0, 3298, 542, 1, 0, 0, 0, 3299, 3300, 7, 7, 0, 0, 3300, 3301, 7, 19, 0, 0, 3301, 544, 1, 0, 0, 0, 3302, 3303, 7, 7, 0, 0, 3303, 3304, 7, 19, 0, 0, 3304, 3305, 7, 16, 0, 0, 3305, 3306, 7, 20, 0, 0, 3306, 3307, 7, 17, 0, 0, 3307, 3308, 7, 7, 0, 0, 3308, 3309, 7, 23, 0, 0, 3309, 546, 1, 0, 0, 0, 3310, 3311, 7, 7, 0, 0, 3311, 3312, 7, 19, 0, 0, 3312, 3313, 7, 16, 0, 0, 3313, 3314, 7, 17, 0, 0, 3314, 3315, 7, 25, 0, 0, 3315, 3316, 7, 8, 0, 0, 3316, 548, 1, 0, 0, 0, 3317, 3318, 7, 7, 0, 0, 3318, 3319, 7, 19, 0, 0, 3319, 3320, 7, 28, 0, 0, 3320, 3321, 7, 5, 0, 0, 3321, 3322, 7, 17, 0, 0, 3322, 3323, 7, 16, 0, 0, 3323, 550, 1, 0, 0, 0, 3324, 3325, 7, 7, 0, 0, 3325, 3326, 7, 22, 0, 0, 3326, 3327, 7, 6, 0, 0, 3327, 3328, 7, 6, 0, 0, 3328, 3329, 7, 9, 0, 0, 3329, 552, 1, 0, 0, 0, 3330, 3331, 7, 19, 0, 0, 3331, 3332, 7, 18, 0, 0, 3332, 3333, 7, 30, 0, 0, 3333, 3334, 7, 10, 0, 0, 3334, 3335, 7, 14, 0, 0, 3335, 3336, 7, 16, 0, 0, 3336, 554, 1, 0, 0, 0, 3337, 3338, 7, 19, 0, 0, 3338, 3339, 7, 25, 0, 0, 3339, 556, 1, 0, 0, 0, 3340, 3341, 7, 19, 0, 0, 3341, 3342, 7, 25, 0, 0, 3342, 3343, 7, 25, 0, 0, 3343, 558, 1, 0, 0, 0, 3344, 3345, 7, 19, 0, 0, 3345, 3346, 7, 17, 0, 0, 3346, 3347, 7, 12, 0, 0, 3347, 3348, 7, 9, 0, 0, 3348, 560, 1, 0, 0, 0, 3349, 3350, 7, 19, 0, 0, 3350, 3351, 7, 24, 0, 0, 3351, 3352, 7, 10, 0, 0, 3352, 3353, 7, 13, 0, 0, 3353, 3354, 7, 5, 0, 0, 3354, 3355, 7, 16, 0, 0, 3355, 3356, 7, 19, 0, 0, 3356, 3357, 7, 13, 0, 0, 3357, 562, 1, 0, 0, 0, 3358, 3359, 7, 19, 0, 0, 3359, 3360, 7, 24, 0, 0, 3360, 3361, 7, 16, 0, 0, 3361, 3362, 7, 17, 0, 0, 3362, 3363, 7, 19, 0, 0, 3363, 3364, 7, 7, 0, 0, 3364, 564, 1, 0, 0, 0, 3365, 3366, 7, 19, 0, 0, 3366, 3367, 7, 24, 0, 0, 3367, 3368, 7, 16, 0, 0, 3368, 3369, 7, 17, 0, 0, 3369, 3370, 7, 19, 0, 0, 3370, 3371, 7, 7, 0, 0, 3371, 3372, 7, 9, 0, 0, 3372, 566, 1, 0, 0, 0, 3373, 3374, 7, 19, 0, 0, 3374, 3375, 7, 28, 0, 0, 3375, 3376, 7, 7, 0, 0, 3376, 3377, 7, 10, 0, 0, 3377, 3378, 7, 12, 0, 0, 3378, 568, 1, 0, 0, 0, 3379, 3380, 7, 19, 0, 0, 3380, 3381, 7, 28, 0, 0, 3381, 3382, 7, 7, 0, 0, 3382, 3383, 7, 10, 0, 0, 3383, 3384, 7, 13, 0, 0, 3384, 570, 1, 0, 0, 0, 3385, 3386, 7, 24, 0, 0, 3386, 3387, 7, 5, 0, 0, 3387, 3388, 7, 13, 0, 0, 3388, 3389, 7, 9, 0, 0, 3389, 3390, 7, 10, 0, 0, 3390, 3391, 7, 13, 0, 0, 3391, 572, 1, 0, 0, 0, 3392, 3393, 7, 24, 0, 0, 3393, 3394, 7, 5, 0, 0, 3394, 3395, 7, 13, 0, 0, 3395, 3396, 7, 16, 0, 0, 3396, 3397, 7, 17, 0, 0, 3397, 3398, 7, 5, 0, 0, 3398, 3399, 7, 6, 0, 0, 3399, 574, 1, 0, 0, 0, 3400, 3401, 7, 24, 0, 0, 3401, 3402, 7, 5, 0, 0, 3402, 3403, 7, 13, 0, 0, 3403, 3404, 7, 16, 0, 0, 3404, 3405, 7, 17, 0, 0, 3405, 3406, 7, 16, 0, 0, 3406, 3407, 7, 17, 0, 0, 3407, 3408, 7, 19, 0, 0, 3408, 3409, 7, 7, 0, 0, 3409, 576, 1, 0, 0, 0, 3410, 3411, 7, 24, 0, 0, 3411, 3412, 7, 5, 0, 0, 3412, 3413, 7, 9, 0, 0, 3413, 3414, 7, 9, 0, 0, 3414, 3415, 7, 17, 0, 0, 3415, 3416, 7, 7, 0, 0, 3416, 3417, 7, 23, 0, 0, 3417, 578, 1, 0, 0, 0, 3418, 3419, 7, 24, 0, 0, 3419, 3420, 7, 5, 0, 0, 3420, 3421, 7, 9, 0, 0, 3421, 3422, 7, 9, 0, 0, 3422, 3423, 7, 28, 0, 0, 3423, 3424, 7, 19, 0, 0, 3424, 3425, 7, 13, 0, 0, 3425, 3426, 7, 12, 0, 0, 3426, 580, 1, 0, 0, 0, 3427, 3428, 7, 24, 0, 0, 3428, 3429, 7, 6, 0, 0, 3429, 3430, 7, 5, 0, 0, 3430, 3431, 7, 7, 0, 0, 3431, 3432, 7, 9, 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, 14, 0, 0, 3437, 3438, 7, 10, 0, 0, 3438, 3439, 7, 12, 0, 0, 3439, 3440, 7, 17, 0, 0, 3440, 3441, 7, 7, 0, 0, 3441, 3442, 7, 23, 0, 0, 3442, 584, 1, 0, 0, 0, 3443, 3444, 7, 24, 0, 0, 3444, 3445, 7, 13, 0, 0, 3445, 3446, 7, 10, 0, 0, 3446, 3447, 7, 24, 0, 0, 3447, 3448, 7, 5, 0, 0, 3448, 3449, 7, 13, 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, 10, 0, 0, 3454, 3455, 7, 24, 0, 0, 3455, 3456, 7, 5, 0, 0, 3456, 3457, 7, 13, 0, 0, 3457, 3458, 7, 10, 0, 0, 3458, 3459, 7, 12, 0, 0, 3459, 588, 1, 0, 0, 0, 3460, 3461, 7, 24, 0, 0, 3461, 3462, 7, 13, 0, 0, 3462, 3463, 7, 10, 0, 0, 3463, 3464, 7, 9, 0, 0, 3464, 3465, 7, 10, 0, 0, 3465, 3466, 7, 13, 0, 0, 3466, 3467, 7, 27, 0, 0, 3467, 3468, 7, 10, 0, 0, 3468, 590, 1, 0, 0, 0, 3469, 3470, 7, 24, 0, 0, 3470, 3471, 7, 13, 0, 0, 3471, 3472, 7, 17, 0, 0, 3472, 3473, 7, 19, 0, 0, 3473, 3474, 7, 13, 0, 0, 3474, 592, 1, 0, 0, 0, 3475, 3476, 7, 24, 0, 0, 3476, 3477, 7, 13, 0, 0, 3477, 3478, 7, 17, 0, 0, 3478, 3479, 7, 27, 0, 0, 3479, 3480, 7, 17, 0, 0, 3480, 3481, 7, 6, 0, 0, 3481, 3482, 7, 10, 0, 0, 3482, 3483, 7, 23, 0, 0, 3483, 3484, 7, 10, 0, 0, 3484, 3485, 7, 9, 0, 0, 3485, 594, 1, 0, 0, 0, 3486, 3487, 7, 24, 0, 0, 3487, 3488, 7, 13, 0, 0, 3488, 3489, 7, 19, 0, 0, 3489, 3490, 7, 14, 0, 0, 3490, 3491, 7, 10, 0, 0, 3491, 3492, 7, 12, 0, 0, 3492, 3493, 7, 22, 0, 0, 3493, 3494, 7, 13, 0, 0, 3494, 3495, 7, 5, 0, 0, 3495, 3496, 7, 6, 0, 0, 3496, 596, 1, 0, 0, 0, 3497, 3498, 7, 24, 0, 0, 3498, 3499, 7, 13, 0, 0, 3499, 3500, 7, 19, 0, 0, 3500, 3501, 7, 14, 0, 0, 3501, 3502, 7, 10, 0, 0, 3502, 3503, 7, 12, 0, 0, 3503, 3504, 7, 22, 0, 0, 3504, 3505, 7, 13, 0, 0, 3505, 3506, 7, 10, 0, 0, 3506, 598, 1, 0, 0, 0, 3507, 3508, 7, 24, 0, 0, 3508, 3509, 7, 13, 0, 0, 3509, 3510, 7, 19, 0, 0, 3510, 3511, 7, 23, 0, 0, 3511, 3512, 7, 13, 0, 0, 3512, 3513, 7, 5, 0, 0, 3513, 3514, 7, 15, 0, 0, 3514, 600, 1, 0, 0, 0, 3515, 3516, 7, 29, 0, 0, 3516, 3517, 7, 22, 0, 0, 3517, 3518, 7, 19, 0, 0, 3518, 3519, 7, 16, 0, 0, 3519, 3520, 7, 10, 0, 0, 3520, 602, 1, 0, 0, 0, 3521, 3522, 7, 13, 0, 0, 3522, 3523, 7, 5, 0, 0, 3523, 3524, 7, 7, 0, 0, 3524, 3525, 7, 23, 0, 0, 3525, 3526, 7, 10, 0, 0, 3526, 604, 1, 0, 0, 0, 3527, 3528, 7, 13, 0, 0, 3528, 3529, 7, 10, 0, 0, 3529, 3530, 7, 5, 0, 0, 3530, 3531, 7, 12, 0, 0, 3531, 606, 1, 0, 0, 0, 3532, 3533, 7, 13, 0, 0, 3533, 3534, 7, 10, 0, 0, 3534, 3535, 7, 5, 0, 0, 3535, 3536, 7, 9, 0, 0, 3536, 3537, 7, 9, 0, 0, 3537, 3538, 7, 17, 0, 0, 3538, 3539, 7, 23, 0, 0, 3539, 3540, 7, 7, 0, 0, 3540, 608, 1, 0, 0, 0, 3541, 3542, 7, 13, 0, 0, 3542, 3543, 7, 10, 0, 0, 3543, 3544, 7, 14, 0, 0, 3544, 3545, 7, 20, 0, 0, 3545, 3546, 7, 10, 0, 0, 3546, 3547, 7, 14, 0, 0, 3547, 3548, 7, 21, 0, 0, 3548, 610, 1, 0, 0, 0, 3549, 3550, 7, 13, 0, 0, 3550, 3551, 7, 10, 0, 0, 3551, 3552, 7, 14, 0, 0, 3552, 3553, 7, 22, 0, 0, 3553, 3554, 7, 13, 0, 0, 3554, 3555, 7, 9, 0, 0, 3555, 3556, 7, 17, 0, 0, 3556, 3557, 7, 27, 0, 0, 3557, 3558, 7, 10, 0, 0, 3558, 612, 1, 0, 0, 0, 3559, 3560, 7, 13, 0, 0, 3560, 3561, 7, 10, 0, 0, 3561, 3562, 7, 25, 0, 0, 3562, 614, 1, 0, 0, 0, 3563, 3564, 7, 13, 0, 0, 3564, 3565, 7, 10, 0, 0, 3565, 3566, 7, 25, 0, 0, 3566, 3567, 7, 13, 0, 0, 3567, 3568, 7, 10, 0, 0, 3568, 3569, 7, 9, 0, 0, 3569, 3570, 7, 20, 0, 0, 3570, 616, 1, 0, 0, 0, 3571, 3572, 7, 13, 0, 0, 3572, 3573, 7, 10, 0, 0, 3573, 3574, 7, 17, 0, 0, 3574, 3575, 7, 7, 0, 0, 3575, 3576, 7, 12, 0, 0, 3576, 3577, 7, 10, 0, 0, 3577, 3578, 7, 26, 0, 0, 3578, 618, 1, 0, 0, 0, 3579, 3580, 7, 13, 0, 0, 3580, 3581, 7, 10, 0, 0, 3581, 3582, 7, 6, 0, 0, 3582, 3583, 7, 5, 0, 0, 3583, 3584, 7, 16, 0, 0, 3584, 3585, 7, 17, 0, 0, 3585, 3586, 7, 27, 0, 0, 3586, 3587, 7, 10, 0, 0, 3587, 620, 1, 0, 0, 0, 3588, 3589, 7, 13, 0, 0, 3589, 3590, 7, 10, 0, 0, 3590, 3591, 7, 6, 0, 0, 3591, 3592, 7, 10, 0, 0, 3592, 3593, 7, 5, 0, 0, 3593, 3594, 7, 9, 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, 7, 0, 0, 3599, 3600, 7, 5, 0, 0, 3600, 3601, 7, 15, 0, 0, 3601, 3602, 7, 10, 0, 0, 3602, 624, 1, 0, 0, 0, 3603, 3604, 7, 13, 0, 0, 3604, 3605, 7, 10, 0, 0, 3605, 3606, 7, 24, 0, 0, 3606, 3607, 7, 10, 0, 0, 3607, 3608, 7, 5, 0, 0, 3608, 3609, 7, 16, 0, 0, 3609, 3610, 7, 5, 0, 0, 3610, 3611, 7, 18, 0, 0, 3611, 3612, 7, 6, 0, 0, 3612, 3613, 7, 10, 0, 0, 3613, 626, 1, 0, 0, 0, 3614, 3615, 7, 13, 0, 0, 3615, 3616, 7, 10, 0, 0, 3616, 3617, 7, 24, 0, 0, 3617, 3618, 7, 6, 0, 0, 3618, 3619, 7, 5, 0, 0, 3619, 3620, 7, 14, 0, 0, 3620, 3621, 7, 10, 0, 0, 3621, 628, 1, 0, 0, 0, 3622, 3623, 7, 13, 0, 0, 3623, 3624, 7, 10, 0, 0, 3624, 3625, 7, 24, 0, 0, 3625, 3626, 7, 6, 0, 0, 3626, 3627, 7, 17, 0, 0, 3627, 3628, 7, 14, 0, 0, 3628, 3629, 7, 5, 0, 0, 3629, 630, 1, 0, 0, 0, 3630, 3631, 7, 13, 0, 0, 3631, 3632, 7, 10, 0, 0, 3632, 3633, 7, 9, 0, 0, 3633, 3634, 7, 10, 0, 0, 3634, 3635, 7, 16, 0, 0, 3635, 632, 1, 0, 0, 0, 3636, 3637, 7, 13, 0, 0, 3637, 3638, 7, 10, 0, 0, 3638, 3639, 7, 9, 0, 0, 3639, 3640, 7, 16, 0, 0, 3640, 3641, 7, 5, 0, 0, 3641, 3642, 7, 13, 0, 0, 3642, 3643, 7, 16, 0, 0, 3643, 634, 1, 0, 0, 0, 3644, 3645, 7, 13, 0, 0, 3645, 3646, 7, 10, 0, 0, 3646, 3647, 7, 9, 0, 0, 3647, 3648, 7, 16, 0, 0, 3648, 3649, 7, 13, 0, 0, 3649, 3650, 7, 17, 0, 0, 3650, 3651, 7, 14, 0, 0, 3651, 3652, 7, 16, 0, 0, 3652, 636, 1, 0, 0, 0, 3653, 3654, 7, 13, 0, 0, 3654, 3655, 7, 10, 0, 0, 3655, 3656, 7, 16, 0, 0, 3656, 3657, 7, 22, 0, 0, 3657, 3658, 7, 13, 0, 0, 3658, 3659, 7, 7, 0, 0, 3659, 3660, 7, 9, 0, 0, 3660, 638, 1, 0, 0, 0, 3661, 3662, 7, 13, 0, 0, 3662, 3663, 7, 10, 0, 0, 3663, 3664, 7, 27, 0, 0, 3664, 3665, 7, 19, 0, 0, 3665, 3666, 7, 21, 0, 0, 3666, 3667, 7, 10, 0, 0, 3667, 640, 1, 0, 0, 0, 3668, 3669, 7, 13, 0, 0, 3669, 3670, 7, 19, 0, 0, 3670, 3671, 7, 6, 0, 0, 3671, 3672, 7, 10, 0, 0, 3672, 642, 1, 0, 0, 0, 3673, 3674, 7, 13, 0, 0, 3674, 3675, 7, 19, 0, 0, 3675, 3676, 7, 6, 0, 0, 3676, 3677, 7, 6, 0, 0, 3677, 3678, 7, 18, 0, 0, 3678, 3679, 7, 5, 0, 0, 3679, 3680, 7, 14, 0, 0, 3680, 3681, 7, 21, 0, 0, 3681, 644, 1, 0, 0, 0, 3682, 3683, 7, 13, 0, 0, 3683, 3684, 7, 19, 0, 0, 3684, 3685, 7, 28, 0, 0, 3685, 3686, 7, 9, 0, 0, 3686, 646, 1, 0, 0, 0, 3687, 3688, 7, 13, 0, 0, 3688, 3689, 7, 22, 0, 0, 3689, 3690, 7, 6, 0, 0, 3690, 3691, 7, 10, 0, 0, 3691, 648, 1, 0, 0, 0, 3692, 3693, 7, 9, 0, 0, 3693, 3694, 7, 5, 0, 0, 3694, 3695, 7, 27, 0, 0, 3695, 3696, 7, 10, 0, 0, 3696, 3697, 7, 24, 0, 0, 3697, 3698, 7, 19, 0, 0, 3698, 3699, 7, 17, 0, 0, 3699, 3700, 7, 7, 0, 0, 3700, 3701, 7, 16, 0, 0, 3701, 650, 1, 0, 0, 0, 3702, 3703, 7, 9, 0, 0, 3703, 3704, 7, 14, 0, 0, 3704, 3705, 7, 20, 0, 0, 3705, 3706, 7, 10, 0, 0, 3706, 3707, 7, 15, 0, 0, 3707, 3708, 7, 5, 0, 0, 3708, 652, 1, 0, 0, 0, 3709, 3710, 7, 9, 0, 0, 3710, 3711, 7, 14, 0, 0, 3711, 3712, 7, 13, 0, 0, 3712, 3713, 7, 19, 0, 0, 3713, 3714, 7, 6, 0, 0, 3714, 3715, 7, 6, 0, 0, 3715, 654, 1, 0, 0, 0, 3716, 3717, 7, 9, 0, 0, 3717, 3718, 7, 10, 0, 0, 3718, 3719, 7, 5, 0, 0, 3719, 3720, 7, 13, 0, 0, 3720, 3721, 7, 14, 0, 0, 3721, 3722, 7, 20, 0, 0, 3722, 656, 1, 0, 0, 0, 3723, 3724, 7, 9, 0, 0, 3724, 3725, 7, 10, 0, 0, 3725, 3726, 7, 14, 0, 0, 3726, 3727, 7, 19, 0, 0, 3727, 3728, 7, 7, 0, 0, 3728, 3729, 7, 12, 0, 0, 3729, 658, 1, 0, 0, 0, 3730, 3731, 7, 9, 0, 0, 3731, 3732, 7, 10, 0, 0, 3732, 3733, 7, 14, 0, 0, 3733, 3734, 7, 22, 0, 0, 3734, 3735, 7, 13, 0, 0, 3735, 3736, 7, 17, 0, 0, 3736, 3737, 7, 16, 0, 0, 3737, 3738, 7, 8, 0, 0, 3738, 660, 1, 0, 0, 0, 3739, 3740, 7, 9, 0, 0, 3740, 3741, 7, 10, 0, 0, 3741, 3742, 7, 29, 0, 0, 3742, 3743, 7, 22, 0, 0, 3743, 3744, 7, 10, 0, 0, 3744, 3745, 7, 7, 0, 0, 3745, 3746, 7, 14, 0, 0, 3746, 3747, 7, 10, 0, 0, 3747, 662, 1, 0, 0, 0, 3748, 3749, 7, 9, 0, 0, 3749, 3750, 7, 10, 0, 0, 3750, 3751, 7, 29, 0, 0, 3751, 3752, 7, 22, 0, 0, 3752, 3753, 7, 10, 0, 0, 3753, 3754, 7, 7, 0, 0, 3754, 3755, 7, 14, 0, 0, 3755, 3756, 7, 10, 0, 0, 3756, 3757, 7, 9, 0, 0, 3757, 664, 1, 0, 0, 0, 3758, 3759, 7, 9, 0, 0, 3759, 3760, 7, 10, 0, 0, 3760, 3761, 7, 13, 0, 0, 3761, 3762, 7, 17, 0, 0, 3762, 3763, 7, 5, 0, 0, 3763, 3764, 7, 6, 0, 0, 3764, 3765, 7, 17, 0, 0, 3765, 3766, 7, 11, 0, 0, 3766, 3767, 7, 5, 0, 0, 3767, 3768, 7, 18, 0, 0, 3768, 3769, 7, 6, 0, 0, 3769, 3770, 7, 10, 0, 0, 3770, 666, 1, 0, 0, 0, 3771, 3772, 7, 9, 0, 0, 3772, 3773, 7, 10, 0, 0, 3773, 3774, 7, 13, 0, 0, 3774, 3775, 7, 27, 0, 0, 3775, 3776, 7, 10, 0, 0, 3776, 3777, 7, 13, 0, 0, 3777, 668, 1, 0, 0, 0, 3778, 3779, 7, 9, 0, 0, 3779, 3780, 7, 10, 0, 0, 3780, 3781, 7, 9, 0, 0, 3781, 3782, 7, 9, 0, 0, 3782, 3783, 7, 17, 0, 0, 3783, 3784, 7, 19, 0, 0, 3784, 3785, 7, 7, 0, 0, 3785, 670, 1, 0, 0, 0, 3786, 3787, 7, 9, 0, 0, 3787, 3788, 7, 10, 0, 0, 3788, 3789, 7, 16, 0, 0, 3789, 672, 1, 0, 0, 0, 3790, 3791, 7, 9, 0, 0, 3791, 3792, 7, 20, 0, 0, 3792, 3793, 7, 5, 0, 0, 3793, 3794, 7, 13, 0, 0, 3794, 3795, 7, 10, 0, 0, 3795, 674, 1, 0, 0, 0, 3796, 3797, 7, 9, 0, 0, 3797, 3798, 7, 20, 0, 0, 3798, 3799, 7, 19, 0, 0, 3799, 3800, 7, 28, 0, 0, 3800, 676, 1, 0, 0, 0, 3801, 3802, 7, 9, 0, 0, 3802, 3803, 7, 17, 0, 0, 3803, 3804, 7, 15, 0, 0, 3804, 3805, 7, 24, 0, 0, 3805, 3806, 7, 6, 0, 0, 3806, 3807, 7, 10, 0, 0, 3807, 678, 1, 0, 0, 0, 3808, 3809, 7, 9, 0, 0, 3809, 3810, 7, 7, 0, 0, 3810, 3811, 7, 5, 0, 0, 3811, 3812, 7, 24, 0, 0, 3812, 3813, 7, 9, 0, 0, 3813, 3814, 7, 20, 0, 0, 3814, 3815, 7, 19, 0, 0, 3815, 3816, 7, 16, 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, 18, 0, 0, 3821, 3822, 7, 6, 0, 0, 3822, 3823, 7, 10, 0, 0, 3823, 682, 1, 0, 0, 0, 3824, 3825, 7, 9, 0, 0, 3825, 3826, 7, 16, 0, 0, 3826, 3827, 7, 5, 0, 0, 3827, 3828, 7, 7, 0, 0, 3828, 3829, 7, 12, 0, 0, 3829, 3830, 7, 5, 0, 0, 3830, 3831, 7, 6, 0, 0, 3831, 3832, 7, 19, 0, 0, 3832, 3833, 7, 7, 0, 0, 3833, 3834, 7, 10, 0, 0, 3834, 684, 1, 0, 0, 0, 3835, 3836, 7, 9, 0, 0, 3836, 3837, 7, 16, 0, 0, 3837, 3838, 7, 5, 0, 0, 3838, 3839, 7, 13, 0, 0, 3839, 3840, 7, 16, 0, 0, 3840, 686, 1, 0, 0, 0, 3841, 3842, 7, 9, 0, 0, 3842, 3843, 7, 16, 0, 0, 3843, 3844, 7, 5, 0, 0, 3844, 3845, 7, 16, 0, 0, 3845, 3846, 7, 10, 0, 0, 3846, 3847, 7, 15, 0, 0, 3847, 3848, 7, 10, 0, 0, 3848, 3849, 7, 7, 0, 0, 3849, 3850, 7, 16, 0, 0, 3850, 688, 1, 0, 0, 0, 3851, 3852, 7, 9, 0, 0, 3852, 3853, 7, 16, 0, 0, 3853, 3854, 7, 5, 0, 0, 3854, 3855, 7, 16, 0, 0, 3855, 3856, 7, 17, 0, 0, 3856, 3857, 7, 9, 0, 0, 3857, 3858, 7, 16, 0, 0, 3858, 3859, 7, 17, 0, 0, 3859, 3860, 7, 14, 0, 0, 3860, 3861, 7, 9, 0, 0, 3861, 690, 1, 0, 0, 0, 3862, 3863, 7, 9, 0, 0, 3863, 3864, 7, 16, 0, 0, 3864, 3865, 7, 12, 0, 0, 3865, 3866, 7, 17, 0, 0, 3866, 3867, 7, 7, 0, 0, 3867, 692, 1, 0, 0, 0, 3868, 3869, 7, 9, 0, 0, 3869, 3870, 7, 16, 0, 0, 3870, 3871, 7, 12, 0, 0, 3871, 3872, 7, 19, 0, 0, 3872, 3873, 7, 22, 0, 0, 3873, 3874, 7, 16, 0, 0, 3874, 694, 1, 0, 0, 0, 3875, 3876, 7, 9, 0, 0, 3876, 3877, 7, 16, 0, 0, 3877, 3878, 7, 19, 0, 0, 3878, 3879, 7, 13, 0, 0, 3879, 3880, 7, 5, 0, 0, 3880, 3881, 7, 23, 0, 0, 3881, 3882, 7, 10, 0, 0, 3882, 696, 1, 0, 0, 0, 3883, 3884, 7, 9, 0, 0, 3884, 3885, 7, 16, 0, 0, 3885, 3886, 7, 13, 0, 0, 3886, 3887, 7, 17, 0, 0, 3887, 3888, 7, 14, 0, 0, 3888, 3889, 7, 16, 0, 0, 3889, 698, 1, 0, 0, 0, 3890, 3891, 7, 9, 0, 0, 3891, 3892, 7, 16, 0, 0, 3892, 3893, 7, 13, 0, 0, 3893, 3894, 7, 17, 0, 0, 3894, 3895, 7, 24, 0, 0, 3895, 700, 1, 0, 0, 0, 3896, 3897, 7, 9, 0, 0, 3897, 3898, 7, 8, 0, 0, 3898, 3899, 7, 9, 0, 0, 3899, 3900, 7, 17, 0, 0, 3900, 3901, 7, 12, 0, 0, 3901, 702, 1, 0, 0, 0, 3902, 3903, 7, 9, 0, 0, 3903, 3904, 7, 8, 0, 0, 3904, 3905, 7, 9, 0, 0, 3905, 3906, 7, 16, 0, 0, 3906, 3907, 7, 10, 0, 0, 3907, 3908, 7, 15, 0, 0, 3908, 704, 1, 0, 0, 0, 3909, 3910, 7, 16, 0, 0, 3910, 3911, 7, 5, 0, 0, 3911, 3912, 7, 18, 0, 0, 3912, 3913, 7, 6, 0, 0, 3913, 3914, 7, 10, 0, 0, 3914, 3915, 7, 9, 0, 0, 3915, 706, 1, 0, 0, 0, 3916, 3917, 7, 16, 0, 0, 3917, 3918, 7, 5, 0, 0, 3918, 3919, 7, 18, 0, 0, 3919, 3920, 7, 6, 0, 0, 3920, 3921, 7, 10, 0, 0, 3921, 3922, 7, 9, 0, 0, 3922, 3923, 7, 24, 0, 0, 3923, 3924, 7, 5, 0, 0, 3924, 3925, 7, 14, 0, 0, 3925, 3926, 7, 10, 0, 0, 3926, 708, 1, 0, 0, 0, 3927, 3928, 7, 16, 0, 0, 3928, 3929, 7, 10, 0, 0, 3929, 3930, 7, 15, 0, 0, 3930, 3931, 7, 24, 0, 0, 3931, 710, 1, 0, 0, 0, 3932, 3933, 7, 16, 0, 0, 3933, 3934, 7, 10, 0, 0, 3934, 3935, 7, 15, 0, 0, 3935, 3936, 7, 24, 0, 0, 3936, 3937, 7, 6, 0, 0, 3937, 3938, 7, 5, 0, 0, 3938, 3939, 7, 16, 0, 0, 3939, 3940, 7, 10, 0, 0, 3940, 712, 1, 0, 0, 0, 3941, 3942, 7, 16, 0, 0, 3942, 3943, 7, 10, 0, 0, 3943, 3944, 7, 15, 0, 0, 3944, 3945, 7, 24, 0, 0, 3945, 3946, 7, 19, 0, 0, 3946, 3947, 7, 13, 0, 0, 3947, 3948, 7, 5, 0, 0, 3948, 3949, 7, 13, 0, 0, 3949, 3950, 7, 8, 0, 0, 3950, 714, 1, 0, 0, 0, 3951, 3952, 7, 16, 0, 0, 3952, 3953, 7, 10, 0, 0, 3953, 3954, 7, 26, 0, 0, 3954, 3955, 7, 16, 0, 0, 3955, 716, 1, 0, 0, 0, 3956, 3957, 7, 16, 0, 0, 3957, 3958, 7, 13, 0, 0, 3958, 3959, 7, 5, 0, 0, 3959, 3960, 7, 7, 0, 0, 3960, 3961, 7, 9, 0, 0, 3961, 3962, 7, 5, 0, 0, 3962, 3963, 7, 14, 0, 0, 3963, 3964, 7, 16, 0, 0, 3964, 3965, 7, 17, 0, 0, 3965, 3966, 7, 19, 0, 0, 3966, 3967, 7, 7, 0, 0, 3967, 718, 1, 0, 0, 0, 3968, 3969, 7, 16, 0, 0, 3969, 3970, 7, 13, 0, 0, 3970, 3971, 7, 17, 0, 0, 3971, 3972, 7, 23, 0, 0, 3972, 3973, 7, 23, 0, 0, 3973, 3974, 7, 10, 0, 0, 3974, 3975, 7, 13, 0, 0, 3975, 720, 1, 0, 0, 0, 3976, 3977, 7, 16, 0, 0, 3977, 3978, 7, 13, 0, 0, 3978, 3979, 7, 22, 0, 0, 3979, 3980, 7, 7, 0, 0, 3980, 3981, 7, 14, 0, 0, 3981, 3982, 7, 5, 0, 0, 3982, 3983, 7, 16, 0, 0, 3983, 3984, 7, 10, 0, 0, 3984, 722, 1, 0, 0, 0, 3985, 3986, 7, 16, 0, 0, 3986, 3987, 7, 13, 0, 0, 3987, 3988, 7, 22, 0, 0, 3988, 3989, 7, 9, 0, 0, 3989, 3990, 7, 16, 0, 0, 3990, 3991, 7, 10, 0, 0, 3991, 3992, 7, 12, 0, 0, 3992, 724, 1, 0, 0, 0, 3993, 3994, 7, 16, 0, 0, 3994, 3995, 7, 8, 0, 0, 3995, 3996, 7, 24, 0, 0, 3996, 3997, 7, 10, 0, 0, 3997, 726, 1, 0, 0, 0, 3998, 3999, 7, 16, 0, 0, 3999, 4000, 7, 8, 0, 0, 4000, 4001, 7, 24, 0, 0, 4001, 4002, 7, 10, 0, 0, 4002, 4003, 7, 9, 0, 0, 4003, 728, 1, 0, 0, 0, 4004, 4005, 7, 22, 0, 0, 4005, 4006, 7, 7, 0, 0, 4006, 4007, 7, 18, 0, 0, 4007, 4008, 7, 19, 0, 0, 4008, 4009, 7, 22, 0, 0, 4009, 4010, 7, 7, 0, 0, 4010, 4011, 7, 12, 0, 0, 4011, 4012, 7, 10, 0, 0, 4012, 4013, 7, 12, 0, 0, 4013, 730, 1, 0, 0, 0, 4014, 4015, 7, 22, 0, 0, 4015, 4016, 7, 7, 0, 0, 4016, 4017, 7, 14, 0, 0, 4017, 4018, 7, 19, 0, 0, 4018, 4019, 7, 15, 0, 0, 4019, 4020, 7, 15, 0, 0, 4020, 4021, 7, 17, 0, 0, 4021, 4022, 7, 16, 0, 0, 4022, 4023, 7, 16, 0, 0, 4023, 4024, 7, 10, 0, 0, 4024, 4025, 7, 12, 0, 0, 4025, 732, 1, 0, 0, 0, 4026, 4027, 7, 22, 0, 0, 4027, 4028, 7, 7, 0, 0, 4028, 4029, 7, 10, 0, 0, 4029, 4030, 7, 7, 0, 0, 4030, 4031, 7, 14, 0, 0, 4031, 4032, 7, 13, 0, 0, 4032, 4033, 7, 8, 0, 0, 4033, 4034, 7, 24, 0, 0, 4034, 4035, 7, 16, 0, 0, 4035, 4036, 7, 10, 0, 0, 4036, 4037, 7, 12, 0, 0, 4037, 734, 1, 0, 0, 0, 4038, 4039, 7, 22, 0, 0, 4039, 4040, 7, 7, 0, 0, 4040, 4041, 7, 21, 0, 0, 4041, 4042, 7, 7, 0, 0, 4042, 4043, 7, 19, 0, 0, 4043, 4044, 7, 28, 0, 0, 4044, 4045, 7, 7, 0, 0, 4045, 736, 1, 0, 0, 0, 4046, 4047, 7, 22, 0, 0, 4047, 4048, 7, 7, 0, 0, 4048, 4049, 7, 6, 0, 0, 4049, 4050, 7, 17, 0, 0, 4050, 4051, 7, 9, 0, 0, 4051, 4052, 7, 16, 0, 0, 4052, 4053, 7, 10, 0, 0, 4053, 4054, 7, 7, 0, 0, 4054, 738, 1, 0, 0, 0, 4055, 4056, 7, 22, 0, 0, 4056, 4057, 7, 7, 0, 0, 4057, 4058, 7, 6, 0, 0, 4058, 4059, 7, 19, 0, 0, 4059, 4060, 7, 23, 0, 0, 4060, 4061, 7, 23, 0, 0, 4061, 4062, 7, 10, 0, 0, 4062, 4063, 7, 12, 0, 0, 4063, 740, 1, 0, 0, 0, 4064, 4065, 7, 22, 0, 0, 4065, 4066, 7, 7, 0, 0, 4066, 4067, 7, 16, 0, 0, 4067, 4068, 7, 17, 0, 0, 4068, 4069, 7, 6, 0, 0, 4069, 742, 1, 0, 0, 0, 4070, 4071, 7, 22, 0, 0, 4071, 4072, 7, 24, 0, 0, 4072, 4073, 7, 12, 0, 0, 4073, 4074, 7, 5, 0, 0, 4074, 4075, 7, 16, 0, 0, 4075, 4076, 7, 10, 0, 0, 4076, 744, 1, 0, 0, 0, 4077, 4078, 7, 27, 0, 0, 4078, 4079, 7, 5, 0, 0, 4079, 4080, 7, 14, 0, 0, 4080, 4081, 7, 22, 0, 0, 4081, 4082, 7, 22, 0, 0, 4082, 4083, 7, 15, 0, 0, 4083, 746, 1, 0, 0, 0, 4084, 4085, 7, 27, 0, 0, 4085, 4086, 7, 5, 0, 0, 4086, 4087, 7, 6, 0, 0, 4087, 4088, 7, 17, 0, 0, 4088, 4089, 7, 12, 0, 0, 4089, 748, 1, 0, 0, 0, 4090, 4091, 7, 27, 0, 0, 4091, 4092, 7, 5, 0, 0, 4092, 4093, 7, 6, 0, 0, 4093, 4094, 7, 17, 0, 0, 4094, 4095, 7, 12, 0, 0, 4095, 4096, 7, 5, 0, 0, 4096, 4097, 7, 16, 0, 0, 4097, 4098, 7, 10, 0, 0, 4098, 750, 1, 0, 0, 0, 4099, 4100, 7, 27, 0, 0, 4100, 4101, 7, 5, 0, 0, 4101, 4102, 7, 6, 0, 0, 4102, 4103, 7, 17, 0, 0, 4103, 4104, 7, 12, 0, 0, 4104, 4105, 7, 5, 0, 0, 4105, 4106, 7, 16, 0, 0, 4106, 4107, 7, 19, 0, 0, 4107, 4108, 7, 13, 0, 0, 4108, 752, 1, 0, 0, 0, 4109, 4110, 7, 27, 0, 0, 4110, 4111, 7, 5, 0, 0, 4111, 4112, 7, 13, 0, 0, 4112, 4113, 7, 8, 0, 0, 4113, 4114, 7, 17, 0, 0, 4114, 4115, 7, 7, 0, 0, 4115, 4116, 7, 23, 0, 0, 4116, 754, 1, 0, 0, 0, 4117, 4118, 7, 27, 0, 0, 4118, 4119, 7, 10, 0, 0, 4119, 4120, 7, 13, 0, 0, 4120, 4121, 7, 9, 0, 0, 4121, 4122, 7, 17, 0, 0, 4122, 4123, 7, 19, 0, 0, 4123, 4124, 7, 7, 0, 0, 4124, 756, 1, 0, 0, 0, 4125, 4126, 7, 27, 0, 0, 4126, 4127, 7, 17, 0, 0, 4127, 4128, 7, 10, 0, 0, 4128, 4129, 7, 28, 0, 0, 4129, 758, 1, 0, 0, 0, 4130, 4131, 7, 27, 0, 0, 4131, 4132, 7, 19, 0, 0, 4132, 4133, 7, 6, 0, 0, 4133, 4134, 7, 5, 0, 0, 4134, 4135, 7, 16, 0, 0, 4135, 4136, 7, 17, 0, 0, 4136, 4137, 7, 6, 0, 0, 4137, 4138, 7, 10, 0, 0, 4138, 760, 1, 0, 0, 0, 4139, 4140, 7, 28, 0, 0, 4140, 4141, 7, 20, 0, 0, 4141, 4142, 7, 17, 0, 0, 4142, 4143, 7, 16, 0, 0, 4143, 4144, 7, 10, 0, 0, 4144, 4145, 7, 9, 0, 0, 4145, 4146, 7, 24, 0, 0, 4146, 4147, 7, 5, 0, 0, 4147, 4148, 7, 14, 0, 0, 4148, 4149, 7, 10, 0, 0, 4149, 762, 1, 0, 0, 0, 4150, 4151, 7, 28, 0, 0, 4151, 4152, 7, 17, 0, 0, 4152, 4153, 7, 16, 0, 0, 4153, 4154, 7, 20, 0, 0, 4154, 4155, 7, 19, 0, 0, 4155, 4156, 7, 22, 0, 0, 4156, 4157, 7, 16, 0, 0, 4157, 764, 1, 0, 0, 0, 4158, 4159, 7, 28, 0, 0, 4159, 4160, 7, 19, 0, 0, 4160, 4161, 7, 13, 0, 0, 4161, 4162, 7, 21, 0, 0, 4162, 766, 1, 0, 0, 0, 4163, 4164, 7, 28, 0, 0, 4164, 4165, 7, 13, 0, 0, 4165, 4166, 7, 5, 0, 0, 4166, 4167, 7, 24, 0, 0, 4167, 4168, 7, 24, 0, 0, 4168, 4169, 7, 10, 0, 0, 4169, 4170, 7, 13, 0, 0, 4170, 768, 1, 0, 0, 0, 4171, 4172, 7, 28, 0, 0, 4172, 4173, 7, 13, 0, 0, 4173, 4174, 7, 17, 0, 0, 4174, 4175, 7, 16, 0, 0, 4175, 4176, 7, 10, 0, 0, 4176, 770, 1, 0, 0, 0, 4177, 4178, 7, 26, 0, 0, 4178, 4179, 7, 15, 0, 0, 4179, 4180, 7, 6, 0, 0, 4180, 772, 1, 0, 0, 0, 4181, 4182, 7, 8, 0, 0, 4182, 4183, 7, 10, 0, 0, 4183, 4184, 7, 5, 0, 0, 4184, 4185, 7, 13, 0, 0, 4185, 774, 1, 0, 0, 0, 4186, 4187, 7, 8, 0, 0, 4187, 4188, 7, 10, 0, 0, 4188, 4189, 7, 9, 0, 0, 4189, 776, 1, 0, 0, 0, 4190, 4191, 7, 11, 0, 0, 4191, 4192, 7, 19, 0, 0, 4192, 4193, 7, 7, 0, 0, 4193, 4194, 7, 10, 0, 0, 4194, 778, 1, 0, 0, 0, 4195, 4196, 7, 18, 0, 0, 4196, 4197, 7, 10, 0, 0, 4197, 4198, 7, 16, 0, 0, 4198, 4199, 7, 28, 0, 0, 4199, 4200, 7, 10, 0, 0, 4200, 4201, 7, 10, 0, 0, 4201, 4202, 7, 7, 0, 0, 4202, 780, 1, 0, 0, 0, 4203, 4204, 7, 18, 0, 0, 4204, 4205, 7, 17, 0, 0, 4205, 4206, 7, 23, 0, 0, 4206, 4207, 7, 17, 0, 0, 4207, 4208, 7, 7, 0, 0, 4208, 4209, 7, 16, 0, 0, 4209, 782, 1, 0, 0, 0, 4210, 4211, 7, 18, 0, 0, 4211, 4212, 7, 17, 0, 0, 4212, 4213, 7, 16, 0, 0, 4213, 784, 1, 0, 0, 0, 4214, 4215, 7, 18, 0, 0, 4215, 4216, 7, 19, 0, 0, 4216, 4217, 7, 19, 0, 0, 4217, 4218, 7, 6, 0, 0, 4218, 4219, 7, 10, 0, 0, 4219, 4220, 7, 5, 0, 0, 4220, 4221, 7, 7, 0, 0, 4221, 786, 1, 0, 0, 0, 4222, 4223, 7, 14, 0, 0, 4223, 4224, 7, 20, 0, 0, 4224, 4225, 7, 5, 0, 0, 4225, 4226, 7, 13, 0, 0, 4226, 788, 1, 0, 0, 0, 4227, 4228, 7, 14, 0, 0, 4228, 4229, 7, 20, 0, 0, 4229, 4230, 7, 5, 0, 0, 4230, 4231, 7, 13, 0, 0, 4231, 4232, 7, 5, 0, 0, 4232, 4233, 7, 14, 0, 0, 4233, 4234, 7, 16, 0, 0, 4234, 4235, 7, 10, 0, 0, 4235, 4236, 7, 13, 0, 0, 4236, 790, 1, 0, 0, 0, 4237, 4238, 7, 14, 0, 0, 4238, 4239, 7, 19, 0, 0, 4239, 4240, 7, 5, 0, 0, 4240, 4241, 7, 6, 0, 0, 4241, 4242, 7, 10, 0, 0, 4242, 4243, 7, 9, 0, 0, 4243, 4244, 7, 14, 0, 0, 4244, 4245, 7, 10, 0, 0, 4245, 792, 1, 0, 0, 0, 4246, 4247, 7, 12, 0, 0, 4247, 4248, 7, 10, 0, 0, 4248, 4249, 7, 14, 0, 0, 4249, 794, 1, 0, 0, 0, 4250, 4251, 7, 12, 0, 0, 4251, 4252, 7, 10, 0, 0, 4252, 4253, 7, 14, 0, 0, 4253, 4254, 7, 17, 0, 0, 4254, 4255, 7, 15, 0, 0, 4255, 4256, 7, 5, 0, 0, 4256, 4257, 7, 6, 0, 0, 4257, 796, 1, 0, 0, 0, 4258, 4259, 7, 10, 0, 0, 4259, 4260, 7, 26, 0, 0, 4260, 4261, 7, 17, 0, 0, 4261, 4262, 7, 9, 0, 0, 4262, 4263, 7, 16, 0, 0, 4263, 4264, 7, 9, 0, 0, 4264, 798, 1, 0, 0, 0, 4265, 4266, 7, 10, 0, 0, 4266, 4267, 7, 26, 0, 0, 4267, 4268, 7, 16, 0, 0, 4268, 4269, 7, 13, 0, 0, 4269, 4270, 7, 5, 0, 0, 4270, 4271, 7, 14, 0, 0, 4271, 4272, 7, 16, 0, 0, 4272, 800, 1, 0, 0, 0, 4273, 4274, 7, 25, 0, 0, 4274, 4275, 7, 6, 0, 0, 4275, 4276, 7, 19, 0, 0, 4276, 4277, 7, 5, 0, 0, 4277, 4278, 7, 16, 0, 0, 4278, 802, 1, 0, 0, 0, 4279, 4280, 7, 23, 0, 0, 4280, 4281, 7, 13, 0, 0, 4281, 4282, 7, 10, 0, 0, 4282, 4283, 7, 5, 0, 0, 4283, 4284, 7, 16, 0, 0, 4284, 4285, 7, 10, 0, 0, 4285, 4286, 7, 9, 0, 0, 4286, 4287, 7, 16, 0, 0, 4287, 804, 1, 0, 0, 0, 4288, 4289, 7, 17, 0, 0, 4289, 4290, 7, 7, 0, 0, 4290, 4291, 7, 19, 0, 0, 4291, 4292, 7, 22, 0, 0, 4292, 4293, 7, 16, 0, 0, 4293, 806, 1, 0, 0, 0, 4294, 4295, 7, 17, 0, 0, 4295, 4296, 7, 7, 0, 0, 4296, 4297, 7, 16, 0, 0, 4297, 808, 1, 0, 0, 0, 4298, 4299, 7, 17, 0, 0, 4299, 4300, 7, 7, 0, 0, 4300, 4301, 7, 16, 0, 0, 4301, 4302, 7, 10, 0, 0, 4302, 4303, 7, 23, 0, 0, 4303, 4304, 7, 10, 0, 0, 4304, 4305, 7, 13, 0, 0, 4305, 810, 1, 0, 0, 0, 4306, 4307, 7, 17, 0, 0, 4307, 4308, 7, 7, 0, 0, 4308, 4309, 7, 16, 0, 0, 4309, 4310, 7, 10, 0, 0, 4310, 4311, 7, 13, 0, 0, 4311, 4312, 7, 27, 0, 0, 4312, 4313, 7, 5, 0, 0, 4313, 4314, 7, 6, 0, 0, 4314, 812, 1, 0, 0, 0, 4315, 4316, 7, 6, 0, 0, 4316, 4317, 7, 10, 0, 0, 4317, 4318, 7, 5, 0, 0, 4318, 4319, 7, 9, 0, 0, 4319, 4320, 7, 16, 0, 0, 4320, 814, 1, 0, 0, 0, 4321, 4322, 7, 7, 0, 0, 4322, 4323, 7, 5, 0, 0, 4323, 4324, 7, 16, 0, 0, 4324, 4325, 7, 17, 0, 0, 4325, 4326, 7, 19, 0, 0, 4326, 4327, 7, 7, 0, 0, 4327, 4328, 7, 5, 0, 0, 4328, 4329, 7, 6, 0, 0, 4329, 816, 1, 0, 0, 0, 4330, 4331, 7, 7, 0, 0, 4331, 4332, 7, 14, 0, 0, 4332, 4333, 7, 20, 0, 0, 4333, 4334, 7, 5, 0, 0, 4334, 4335, 7, 13, 0, 0, 4335, 818, 1, 0, 0, 0, 4336, 4337, 7, 7, 0, 0, 4337, 4338, 7, 19, 0, 0, 4338, 4339, 7, 7, 0, 0, 4339, 4340, 7, 10, 0, 0, 4340, 820, 1, 0, 0, 0, 4341, 4342, 7, 7, 0, 0, 4342, 4343, 7, 22, 0, 0, 4343, 4344, 7, 6, 0, 0, 4344, 4345, 7, 6, 0, 0, 4345, 4346, 7, 17, 0, 0, 4346, 4347, 7, 25, 0, 0, 4347, 822, 1, 0, 0, 0, 4348, 4349, 7, 7, 0, 0, 4349, 4350, 7, 22, 0, 0, 4350, 4351, 7, 15, 0, 0, 4351, 4352, 7, 10, 0, 0, 4352, 4353, 7, 13, 0, 0, 4353, 4354, 7, 17, 0, 0, 4354, 4355, 7, 14, 0, 0, 4355, 824, 1, 0, 0, 0, 4356, 4357, 7, 19, 0, 0, 4357, 4358, 7, 27, 0, 0, 4358, 4359, 7, 10, 0, 0, 4359, 4360, 7, 13, 0, 0, 4360, 4361, 7, 6, 0, 0, 4361, 4362, 7, 5, 0, 0, 4362, 4363, 7, 8, 0, 0, 4363, 826, 1, 0, 0, 0, 4364, 4365, 7, 24, 0, 0, 4365, 4366, 7, 19, 0, 0, 4366, 4367, 7, 9, 0, 0, 4367, 4368, 7, 17, 0, 0, 4368, 4369, 7, 16, 0, 0, 4369, 4370, 7, 17, 0, 0, 4370, 4371, 7, 19, 0, 0, 4371, 4372, 7, 7, 0, 0, 4372, 828, 1, 0, 0, 0, 4373, 4374, 7, 24, 0, 0, 4374, 4375, 7, 13, 0, 0, 4375, 4376, 7, 10, 0, 0, 4376, 4377, 7, 14, 0, 0, 4377, 4378, 7, 17, 0, 0, 4378, 4379, 7, 9, 0, 0, 4379, 4380, 7, 17, 0, 0, 4380, 4381, 7, 19, 0, 0, 4381, 4382, 7, 7, 0, 0, 4382, 830, 1, 0, 0, 0, 4383, 4384, 7, 13, 0, 0, 4384, 4385, 7, 10, 0, 0, 4385, 4386, 7, 5, 0, 0, 4386, 4387, 7, 6, 0, 0, 4387, 832, 1, 0, 0, 0, 4388, 4389, 7, 13, 0, 0, 4389, 4390, 7, 19, 0, 0, 4390, 4391, 7, 28, 0, 0, 4391, 834, 1, 0, 0, 0, 4392, 4393, 7, 9, 0, 0, 4393, 4394, 7, 10, 0, 0, 4394, 4395, 7, 16, 0, 0, 4395, 4396, 7, 19, 0, 0, 4396, 4397, 7, 25, 0, 0, 4397, 836, 1, 0, 0, 0, 4398, 4399, 7, 9, 0, 0, 4399, 4400, 7, 15, 0, 0, 4400, 4401, 7, 5, 0, 0, 4401, 4402, 7, 6, 0, 0, 4402, 4403, 7, 6, 0, 0, 4403, 4404, 7, 17, 0, 0, 4404, 4405, 7, 7, 0, 0, 4405, 4406, 7, 16, 0, 0, 4406, 838, 1, 0, 0, 0, 4407, 4408, 7, 9, 0, 0, 4408, 4409, 7, 22, 0, 0, 4409, 4410, 7, 18, 0, 0, 4410, 4411, 7, 9, 0, 0, 4411, 4412, 7, 16, 0, 0, 4412, 4413, 7, 13, 0, 0, 4413, 4414, 7, 17, 0, 0, 4414, 4415, 7, 7, 0, 0, 4415, 4416, 7, 23, 0, 0, 4416, 840, 1, 0, 0, 0, 4417, 4418, 7, 16, 0, 0, 4418, 4419, 7, 17, 0, 0, 4419, 4420, 7, 15, 0, 0, 4420, 4421, 7, 10, 0, 0, 4421, 842, 1, 0, 0, 0, 4422, 4423, 7, 16, 0, 0, 4423, 4424, 7, 17, 0, 0, 4424, 4425, 7, 15, 0, 0, 4425, 4426, 7, 10, 0, 0, 4426, 4427, 7, 9, 0, 0, 4427, 4428, 7, 16, 0, 0, 4428, 4429, 7, 5, 0, 0, 4429, 4430, 7, 15, 0, 0, 4430, 4431, 7, 24, 0, 0, 4431, 844, 1, 0, 0, 0, 4432, 4433, 7, 16, 0, 0, 4433, 4434, 7, 13, 0, 0, 4434, 4435, 7, 10, 0, 0, 4435, 4436, 7, 5, 0, 0, 4436, 4437, 7, 16, 0, 0, 4437, 846, 1, 0, 0, 0, 4438, 4439, 7, 16, 0, 0, 4439, 4440, 7, 13, 0, 0, 4440, 4441, 7, 17, 0, 0, 4441, 4442, 7, 15, 0, 0, 4442, 848, 1, 0, 0, 0, 4443, 4444, 7, 27, 0, 0, 4444, 4445, 7, 5, 0, 0, 4445, 4446, 7, 6, 0, 0, 4446, 4447, 7, 22, 0, 0, 4447, 4448, 7, 10, 0, 0, 4448, 4449, 7, 9, 0, 0, 4449, 850, 1, 0, 0, 0, 4450, 4451, 7, 27, 0, 0, 4451, 4452, 7, 5, 0, 0, 4452, 4453, 7, 13, 0, 0, 4453, 4454, 7, 14, 0, 0, 4454, 4455, 7, 20, 0, 0, 4455, 4456, 7, 5, 0, 0, 4456, 4457, 7, 13, 0, 0, 4457, 852, 1, 0, 0, 0, 4458, 4459, 7, 26, 0, 0, 4459, 4460, 7, 15, 0, 0, 4460, 4461, 7, 6, 0, 0, 4461, 4462, 7, 5, 0, 0, 4462, 4463, 7, 16, 0, 0, 4463, 4464, 7, 16, 0, 0, 4464, 4465, 7, 13, 0, 0, 4465, 4466, 7, 17, 0, 0, 4466, 4467, 7, 18, 0, 0, 4467, 4468, 7, 22, 0, 0, 4468, 4469, 7, 16, 0, 0, 4469, 4470, 7, 10, 0, 0, 4470, 4471, 7, 9, 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, 7, 14, 0, 0, 4476, 4477, 7, 19, 0, 0, 4477, 4478, 7, 15, 0, 0, 4478, 4479, 7, 15, 0, 0, 4479, 4480, 7, 10, 0, 0, 4480, 4481, 7, 7, 0, 0, 4481, 4482, 7, 16, 0, 0, 4482, 856, 1, 0, 0, 0, 4483, 4484, 7, 26, 0, 0, 4484, 4485, 7, 15, 0, 0, 4485, 4486, 7, 6, 0, 0, 4486, 4487, 7, 5, 0, 0, 4487, 4488, 7, 23, 0, 0, 4488, 4489, 7, 23, 0, 0, 4489, 858, 1, 0, 0, 0, 4490, 4491, 7, 26, 0, 0, 4491, 4492, 7, 15, 0, 0, 4492, 4493, 7, 6, 0, 0, 4493, 4494, 5, 95, 0, 0, 4494, 4495, 7, 17, 0, 0, 4495, 4496, 7, 9, 0, 0, 4496, 4497, 5, 95, 0, 0, 4497, 4498, 7, 28, 0, 0, 4498, 4499, 7, 10, 0, 0, 4499, 4500, 7, 6, 0, 0, 4500, 4501, 7, 6, 0, 0, 4501, 4502, 5, 95, 0, 0, 4502, 4503, 7, 25, 0, 0, 4503, 4504, 7, 19, 0, 0, 4504, 4505, 7, 13, 0, 0, 4505, 4506, 7, 15, 0, 0, 4506, 4507, 7, 10, 0, 0, 4507, 4508, 7, 12, 0, 0, 4508, 860, 1, 0, 0, 0, 4509, 4510, 7, 26, 0, 0, 4510, 4511, 7, 15, 0, 0, 4511, 4512, 7, 6, 0, 0, 4512, 4513, 5, 95, 0, 0, 4513, 4514, 7, 17, 0, 0, 4514, 4515, 7, 9, 0, 0, 4515, 4516, 5, 95, 0, 0, 4516, 4517, 7, 28, 0, 0, 4517, 4518, 7, 10, 0, 0, 4518, 4519, 7, 6, 0, 0, 4519, 4520, 7, 6, 0, 0, 4520, 4521, 5, 95, 0, 0, 4521, 4522, 7, 25, 0, 0, 4522, 4523, 7, 19, 0, 0, 4523, 4524, 7, 13, 0, 0, 4524, 4525, 7, 15, 0, 0, 4525, 4526, 7, 10, 0, 0, 4526, 4527, 7, 12, 0, 0, 4527, 4528, 5, 95, 0, 0, 4528, 4529, 7, 12, 0, 0, 4529, 4530, 7, 19, 0, 0, 4530, 4531, 7, 14, 0, 0, 4531, 4532, 7, 22, 0, 0, 4532, 4533, 7, 15, 0, 0, 4533, 4534, 7, 10, 0, 0, 4534, 4535, 7, 7, 0, 0, 4535, 4536, 7, 16, 0, 0, 4536, 862, 1, 0, 0, 0, 4537, 4538, 7, 26, 0, 0, 4538, 4539, 7, 15, 0, 0, 4539, 4540, 7, 6, 0, 0, 4540, 4541, 5, 95, 0, 0, 4541, 4542, 7, 17, 0, 0, 4542, 4543, 7, 9, 0, 0, 4543, 4544, 5, 95, 0, 0, 4544, 4545, 7, 28, 0, 0, 4545, 4546, 7, 10, 0, 0, 4546, 4547, 7, 6, 0, 0, 4547, 4548, 7, 6, 0, 0, 4548, 4549, 5, 95, 0, 0, 4549, 4550, 7, 25, 0, 0, 4550, 4551, 7, 19, 0, 0, 4551, 4552, 7, 13, 0, 0, 4552, 4553, 7, 15, 0, 0, 4553, 4554, 7, 10, 0, 0, 4554, 4555, 7, 12, 0, 0, 4555, 4556, 5, 95, 0, 0, 4556, 4557, 7, 14, 0, 0, 4557, 4558, 7, 19, 0, 0, 4558, 4559, 7, 7, 0, 0, 4559, 4560, 7, 16, 0, 0, 4560, 4561, 7, 10, 0, 0, 4561, 4562, 7, 7, 0, 0, 4562, 4563, 7, 16, 0, 0, 4563, 864, 1, 0, 0, 0, 4564, 4565, 7, 26, 0, 0, 4565, 4566, 7, 24, 0, 0, 4566, 4567, 7, 5, 0, 0, 4567, 4568, 7, 16, 0, 0, 4568, 4569, 7, 20, 0, 0, 4569, 866, 1, 0, 0, 0, 4570, 4571, 7, 26, 0, 0, 4571, 4572, 7, 24, 0, 0, 4572, 4573, 7, 5, 0, 0, 4573, 4574, 7, 16, 0, 0, 4574, 4575, 7, 20, 0, 0, 4575, 4576, 5, 95, 0, 0, 4576, 4577, 7, 10, 0, 0, 4577, 4578, 7, 26, 0, 0, 4578, 4579, 7, 17, 0, 0, 4579, 4580, 7, 9, 0, 0, 4580, 4581, 7, 16, 0, 0, 4581, 4582, 7, 9, 0, 0, 4582, 868, 1, 0, 0, 0, 4583, 4584, 7, 26, 0, 0, 4584, 4585, 7, 15, 0, 0, 4585, 4586, 7, 6, 0, 0, 4586, 4587, 7, 14, 0, 0, 4587, 4588, 7, 19, 0, 0, 4588, 4589, 7, 7, 0, 0, 4589, 4590, 7, 14, 0, 0, 4590, 4591, 7, 5, 0, 0, 4591, 4592, 7, 16, 0, 0, 4592, 870, 1, 0, 0, 0, 4593, 4594, 7, 26, 0, 0, 4594, 4595, 7, 15, 0, 0, 4595, 4596, 7, 6, 0, 0, 4596, 4597, 7, 10, 0, 0, 4597, 4598, 7, 6, 0, 0, 4598, 4599, 7, 10, 0, 0, 4599, 4600, 7, 15, 0, 0, 4600, 4601, 7, 10, 0, 0, 4601, 4602, 7, 7, 0, 0, 4602, 4603, 7, 16, 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, 10, 0, 0, 4608, 4609, 7, 26, 0, 0, 4609, 4610, 7, 17, 0, 0, 4610, 4611, 7, 9, 0, 0, 4611, 4612, 7, 16, 0, 0, 4612, 4613, 7, 9, 0, 0, 4613, 874, 1, 0, 0, 0, 4614, 4615, 7, 26, 0, 0, 4615, 4616, 7, 15, 0, 0, 4616, 4617, 7, 6, 0, 0, 4617, 4618, 7, 25, 0, 0, 4618, 4619, 7, 19, 0, 0, 4619, 4620, 7, 13, 0, 0, 4620, 4621, 7, 10, 0, 0, 4621, 4622, 7, 9, 0, 0, 4622, 4623, 7, 16, 0, 0, 4623, 876, 1, 0, 0, 0, 4624, 4625, 7, 26, 0, 0, 4625, 4626, 7, 15, 0, 0, 4626, 4627, 7, 6, 0, 0, 4627, 4628, 7, 24, 0, 0, 4628, 4629, 7, 5, 0, 0, 4629, 4630, 7, 13, 0, 0, 4630, 4631, 7, 9, 0, 0, 4631, 4632, 7, 10, 0, 0, 4632, 878, 1, 0, 0, 0, 4633, 4634, 7, 26, 0, 0, 4634, 4635, 7, 15, 0, 0, 4635, 4636, 7, 6, 0, 0, 4636, 4637, 7, 24, 0, 0, 4637, 4638, 7, 17, 0, 0, 4638, 880, 1, 0, 0, 0, 4639, 4640, 7, 26, 0, 0, 4640, 4641, 7, 15, 0, 0, 4641, 4642, 7, 6, 0, 0, 4642, 4643, 7, 13, 0, 0, 4643, 4644, 7, 19, 0, 0, 4644, 4645, 7, 19, 0, 0, 4645, 4646, 7, 16, 0, 0, 4646, 882, 1, 0, 0, 0, 4647, 4648, 7, 26, 0, 0, 4648, 4649, 7, 15, 0, 0, 4649, 4650, 7, 6, 0, 0, 4650, 4651, 7, 9, 0, 0, 4651, 4652, 7, 10, 0, 0, 4652, 4653, 7, 13, 0, 0, 4653, 4654, 7, 17, 0, 0, 4654, 4655, 7, 5, 0, 0, 4655, 4656, 7, 6, 0, 0, 4656, 4657, 7, 17, 0, 0, 4657, 4658, 7, 11, 0, 0, 4658, 4659, 7, 10, 0, 0, 4659, 884, 1, 0, 0, 0, 4660, 4661, 7, 14, 0, 0, 4661, 4662, 7, 5, 0, 0, 4662, 4663, 7, 6, 0, 0, 4663, 4664, 7, 6, 0, 0, 4664, 886, 1, 0, 0, 0, 4665, 4666, 7, 14, 0, 0, 4666, 4667, 7, 22, 0, 0, 4667, 4668, 7, 13, 0, 0, 4668, 4669, 7, 13, 0, 0, 4669, 4670, 7, 10, 0, 0, 4670, 4671, 7, 7, 0, 0, 4671, 4672, 7, 16, 0, 0, 4672, 888, 1, 0, 0, 0, 4673, 4674, 7, 5, 0, 0, 4674, 4675, 7, 16, 0, 0, 4675, 4676, 7, 16, 0, 0, 4676, 4677, 7, 5, 0, 0, 4677, 4678, 7, 14, 0, 0, 4678, 4679, 7, 20, 0, 0, 4679, 890, 1, 0, 0, 0, 4680, 4681, 7, 12, 0, 0, 4681, 4682, 7, 10, 0, 0, 4682, 4683, 7, 16, 0, 0, 4683, 4684, 7, 5, 0, 0, 4684, 4685, 7, 14, 0, 0, 4685, 4686, 7, 20, 0, 0, 4686, 892, 1, 0, 0, 0, 4687, 4688, 7, 10, 0, 0, 4688, 4689, 7, 26, 0, 0, 4689, 4690, 7, 24, 0, 0, 4690, 4691, 7, 13, 0, 0, 4691, 4692, 7, 10, 0, 0, 4692, 4693, 7, 9, 0, 0, 4693, 4694, 7, 9, 0, 0, 4694, 4695, 7, 17, 0, 0, 4695, 4696, 7, 19, 0, 0, 4696, 4697, 7, 7, 0, 0, 4697, 894, 1, 0, 0, 0, 4698, 4699, 7, 23, 0, 0, 4699, 4700, 7, 10, 0, 0, 4700, 4701, 7, 7, 0, 0, 4701, 4702, 7, 10, 0, 0, 4702, 4703, 7, 13, 0, 0, 4703, 4704, 7, 5, 0, 0, 4704, 4705, 7, 16, 0, 0, 4705, 4706, 7, 10, 0, 0, 4706, 4707, 7, 12, 0, 0, 4707, 896, 1, 0, 0, 0, 4708, 4709, 7, 6, 0, 0, 4709, 4710, 7, 19, 0, 0, 4710, 4711, 7, 23, 0, 0, 4711, 4712, 7, 23, 0, 0, 4712, 4713, 7, 10, 0, 0, 4713, 4714, 7, 12, 0, 0, 4714, 898, 1, 0, 0, 0, 4715, 4716, 7, 9, 0, 0, 4716, 4717, 7, 16, 0, 0, 4717, 4718, 7, 19, 0, 0, 4718, 4719, 7, 13, 0, 0, 4719, 4720, 7, 10, 0, 0, 4720, 4721, 7, 12, 0, 0, 4721, 900, 1, 0, 0, 0, 4722, 4723, 7, 17, 0, 0, 4723, 4724, 7, 7, 0, 0, 4724, 4725, 7, 14, 0, 0, 4725, 4726, 7, 6, 0, 0, 4726, 4727, 7, 22, 0, 0, 4727, 4728, 7, 12, 0, 0, 4728, 4729, 7, 10, 0, 0, 4729, 902, 1, 0, 0, 0, 4730, 4731, 7, 13, 0, 0, 4731, 4732, 7, 19, 0, 0, 4732, 4733, 7, 22, 0, 0, 4733, 4734, 7, 16, 0, 0, 4734, 4735, 7, 17, 0, 0, 4735, 4736, 7, 7, 0, 0, 4736, 4737, 7, 10, 0, 0, 4737, 904, 1, 0, 0, 0, 4738, 4739, 7, 16, 0, 0, 4739, 4740, 7, 13, 0, 0, 4740, 4741, 7, 5, 0, 0, 4741, 4742, 7, 7, 0, 0, 4742, 4743, 7, 9, 0, 0, 4743, 4744, 7, 25, 0, 0, 4744, 4745, 7, 19, 0, 0, 4745, 4746, 7, 13, 0, 0, 4746, 4747, 7, 15, 0, 0, 4747, 906, 1, 0, 0, 0, 4748, 4749, 7, 17, 0, 0, 4749, 4750, 7, 15, 0, 0, 4750, 4751, 7, 24, 0, 0, 4751, 4752, 7, 19, 0, 0, 4752, 4753, 7, 13, 0, 0, 4753, 4754, 7, 16, 0, 0, 4754, 908, 1, 0, 0, 0, 4755, 4756, 7, 24, 0, 0, 4756, 4757, 7, 19, 0, 0, 4757, 4758, 7, 6, 0, 0, 4758, 4759, 7, 17, 0, 0, 4759, 4760, 7, 14, 0, 0, 4760, 4761, 7, 8, 0, 0, 4761, 910, 1, 0, 0, 0, 4762, 4763, 7, 15, 0, 0, 4763, 4764, 7, 10, 0, 0, 4764, 4765, 7, 16, 0, 0, 4765, 4766, 7, 20, 0, 0, 4766, 4767, 7, 19, 0, 0, 4767, 4768, 7, 12, 0, 0, 4768, 912, 1, 0, 0, 0, 4769, 4770, 7, 13, 0, 0, 4770, 4771, 7, 10, 0, 0, 4771, 4772, 7, 25, 0, 0, 4772, 4773, 7, 10, 0, 0, 4773, 4774, 7, 13, 0, 0, 4774, 4775, 7, 10, 0, 0, 4775, 4776, 7, 7, 0, 0, 4776, 4777, 7, 14, 0, 0, 4777, 4778, 7, 17, 0, 0, 4778, 4779, 7, 7, 0, 0, 4779, 4780, 7, 23, 0, 0, 4780, 914, 1, 0, 0, 0, 4781, 4782, 7, 7, 0, 0, 4782, 4783, 7, 10, 0, 0, 4783, 4784, 7, 28, 0, 0, 4784, 916, 1, 0, 0, 0, 4785, 4786, 7, 19, 0, 0, 4786, 4787, 7, 6, 0, 0, 4787, 4788, 7, 12, 0, 0, 4788, 918, 1, 0, 0, 0, 4789, 4790, 7, 27, 0, 0, 4790, 4791, 7, 5, 0, 0, 4791, 4792, 7, 6, 0, 0, 4792, 4793, 7, 22, 0, 0, 4793, 4794, 7, 10, 0, 0, 4794, 920, 1, 0, 0, 0, 4795, 4796, 7, 9, 0, 0, 4796, 4797, 7, 22, 0, 0, 4797, 4798, 7, 18, 0, 0, 4798, 4799, 7, 9, 0, 0, 4799, 4800, 7, 14, 0, 0, 4800, 4801, 7, 13, 0, 0, 4801, 4802, 7, 17, 0, 0, 4802, 4803, 7, 24, 0, 0, 4803, 4804, 7, 16, 0, 0, 4804, 4805, 7, 17, 0, 0, 4805, 4806, 7, 19, 0, 0, 4806, 4807, 7, 7, 0, 0, 4807, 922, 1, 0, 0, 0, 4808, 4809, 7, 24, 0, 0, 4809, 4810, 7, 22, 0, 0, 4810, 4811, 7, 18, 0, 0, 4811, 4812, 7, 6, 0, 0, 4812, 4813, 7, 17, 0, 0, 4813, 4814, 7, 14, 0, 0, 4814, 4815, 7, 5, 0, 0, 4815, 4816, 7, 16, 0, 0, 4816, 4817, 7, 17, 0, 0, 4817, 4818, 7, 19, 0, 0, 4818, 4819, 7, 7, 0, 0, 4819, 924, 1, 0, 0, 0, 4820, 4821, 7, 19, 0, 0, 4821, 4822, 7, 22, 0, 0, 4822, 4823, 7, 16, 0, 0, 4823, 926, 1, 0, 0, 0, 4824, 4825, 7, 10, 0, 0, 4825, 4826, 7, 7, 0, 0, 4826, 4827, 7, 12, 0, 0, 4827, 928, 1, 0, 0, 0, 4828, 4829, 7, 13, 0, 0, 4829, 4830, 7, 19, 0, 0, 4830, 4831, 7, 22, 0, 0, 4831, 4832, 7, 16, 0, 0, 4832, 4833, 7, 17, 0, 0, 4833, 4834, 7, 7, 0, 0, 4834, 4835, 7, 10, 0, 0, 4835, 4836, 7, 9, 0, 0, 4836, 930, 1, 0, 0, 0, 4837, 4838, 7, 9, 0, 0, 4838, 4839, 7, 14, 0, 0, 4839, 4840, 7, 20, 0, 0, 4840, 4841, 7, 10, 0, 0, 4841, 4842, 7, 15, 0, 0, 4842, 4843, 7, 5, 0, 0, 4843, 4844, 7, 9, 0, 0, 4844, 932, 1, 0, 0, 0, 4845, 4846, 7, 24, 0, 0, 4846, 4847, 7, 13, 0, 0, 4847, 4848, 7, 19, 0, 0, 4848, 4849, 7, 14, 0, 0, 4849, 4850, 7, 10, 0, 0, 4850, 4851, 7, 12, 0, 0, 4851, 4852, 7, 22, 0, 0, 4852, 4853, 7, 13, 0, 0, 4853, 4854, 7, 10, 0, 0, 4854, 4855, 7, 9, 0, 0, 4855, 934, 1, 0, 0, 0, 4856, 4857, 7, 17, 0, 0, 4857, 4858, 7, 7, 0, 0, 4858, 4859, 7, 24, 0, 0, 4859, 4860, 7, 22, 0, 0, 4860, 4861, 7, 16, 0, 0, 4861, 936, 1, 0, 0, 0, 4862, 4863, 7, 9, 0, 0, 4863, 4864, 7, 22, 0, 0, 4864, 4865, 7, 24, 0, 0, 4865, 4866, 7, 24, 0, 0, 4866, 4867, 7, 19, 0, 0, 4867, 4868, 7, 13, 0, 0, 4868, 4869, 7, 16, 0, 0, 4869, 938, 1, 0, 0, 0, 4870, 4871, 7, 24, 0, 0, 4871, 4872, 7, 5, 0, 0, 4872, 4873, 7, 13, 0, 0, 4873, 4874, 7, 5, 0, 0, 4874, 4875, 7, 6, 0, 0, 4875, 4876, 7, 6, 0, 0, 4876, 4877, 7, 10, 0, 0, 4877, 4878, 7, 6, 0, 0, 4878, 940, 1, 0, 0, 0, 4879, 4880, 7, 9, 0, 0, 4880, 4881, 7, 29, 0, 0, 4881, 4882, 7, 6, 0, 0, 4882, 942, 1, 0, 0, 0, 4883, 4884, 7, 12, 0, 0, 4884, 4885, 7, 10, 0, 0, 4885, 4886, 7, 24, 0, 0, 4886, 4887, 7, 10, 0, 0, 4887, 4888, 7, 7, 0, 0, 4888, 4889, 7, 12, 0, 0, 4889, 4890, 7, 9, 0, 0, 4890, 944, 1, 0, 0, 0, 4891, 4892, 7, 19, 0, 0, 4892, 4893, 7, 27, 0, 0, 4893, 4894, 7, 10, 0, 0, 4894, 4895, 7, 13, 0, 0, 4895, 4896, 7, 13, 0, 0, 4896, 4897, 7, 17, 0, 0, 4897, 4898, 7, 12, 0, 0, 4898, 4899, 7, 17, 0, 0, 4899, 4900, 7, 7, 0, 0, 4900, 4901, 7, 23, 0, 0, 4901, 946, 1, 0, 0, 0, 4902, 4903, 7, 14, 0, 0, 4903, 4904, 7, 19, 0, 0, 4904, 4905, 7, 7, 0, 0, 4905, 4906, 7, 25, 0, 0, 4906, 4907, 7, 6, 0, 0, 4907, 4908, 7, 17, 0, 0, 4908, 4909, 7, 14, 0, 0, 4909, 4910, 7, 16, 0, 0, 4910, 948, 1, 0, 0, 0, 4911, 4912, 7, 9, 0, 0, 4912, 4913, 7, 21, 0, 0, 4913, 4914, 7, 17, 0, 0, 4914, 4915, 7, 24, 0, 0, 4915, 950, 1, 0, 0, 0, 4916, 4917, 7, 6, 0, 0, 4917, 4918, 7, 19, 0, 0, 4918, 4919, 7, 14, 0, 0, 4919, 4920, 7, 21, 0, 0, 4920, 4921, 7, 10, 0, 0, 4921, 4922, 7, 12, 0, 0, 4922, 952, 1, 0, 0, 0, 4923, 4924, 7, 16, 0, 0, 4924, 4925, 7, 17, 0, 0, 4925, 4926, 7, 10, 0, 0, 4926, 4927, 7, 9, 0, 0, 4927, 954, 1, 0, 0, 0, 4928, 4929, 7, 13, 0, 0, 4929, 4930, 7, 19, 0, 0, 4930, 4931, 7, 6, 0, 0, 4931, 4932, 7, 6, 0, 0, 4932, 4933, 7, 22, 0, 0, 4933, 4934, 7, 24, 0, 0, 4934, 956, 1, 0, 0, 0, 4935, 4936, 7, 14, 0, 0, 4936, 4937, 7, 22, 0, 0, 4937, 4938, 7, 18, 0, 0, 4938, 4939, 7, 10, 0, 0, 4939, 958, 1, 0, 0, 0, 4940, 4941, 7, 23, 0, 0, 4941, 4942, 7, 13, 0, 0, 4942, 4943, 7, 19, 0, 0, 4943, 4944, 7, 22, 0, 0, 4944, 4945, 7, 24, 0, 0, 4945, 4946, 7, 17, 0, 0, 4946, 4947, 7, 7, 0, 0, 4947, 4948, 7, 23, 0, 0, 4948, 960, 1, 0, 0, 0, 4949, 4950, 7, 9, 0, 0, 4950, 4951, 7, 10, 0, 0, 4951, 4952, 7, 16, 0, 0, 4952, 4953, 7, 9, 0, 0, 4953, 962, 1, 0, 0, 0, 4954, 4955, 7, 16, 0, 0, 4955, 4956, 7, 5, 0, 0, 4956, 4957, 7, 18, 0, 0, 4957, 4958, 7, 6, 0, 0, 4958, 4959, 7, 10, 0, 0, 4959, 4960, 7, 9, 0, 0, 4960, 4961, 7, 5, 0, 0, 4961, 4962, 7, 15, 0, 0, 4962, 4963, 7, 24, 0, 0, 4963, 4964, 7, 6, 0, 0, 4964, 4965, 7, 10, 0, 0, 4965, 964, 1, 0, 0, 0, 4966, 4967, 7, 19, 0, 0, 4967, 4968, 7, 13, 0, 0, 4968, 4969, 7, 12, 0, 0, 4969, 4970, 7, 17, 0, 0, 4970, 4971, 7, 7, 0, 0, 4971, 4972, 7, 5, 0, 0, 4972, 4973, 7, 6, 0, 0, 4973, 4974, 7, 17, 0, 0, 4974, 4975, 7, 16, 0, 0, 4975, 4976, 7, 8, 0, 0, 4976, 966, 1, 0, 0, 0, 4977, 4978, 7, 26, 0, 0, 4978, 4979, 7, 15, 0, 0, 4979, 4980, 7, 6, 0, 0, 4980, 4981, 7, 16, 0, 0, 4981, 4982, 7, 5, 0, 0, 4982, 4983, 7, 18, 0, 0, 4983, 4984, 7, 6, 0, 0, 4984, 4985, 7, 10, 0, 0, 4985, 968, 1, 0, 0, 0, 4986, 4987, 7, 14, 0, 0, 4987, 4988, 7, 19, 0, 0, 4988, 4989, 7, 6, 0, 0, 4989, 4990, 7, 22, 0, 0, 4990, 4991, 7, 15, 0, 0, 4991, 4992, 7, 7, 0, 0, 4992, 4993, 7, 9, 0, 0, 4993, 970, 1, 0, 0, 0, 4994, 4995, 7, 26, 0, 0, 4995, 4996, 7, 15, 0, 0, 4996, 4997, 7, 6, 0, 0, 4997, 4998, 7, 7, 0, 0, 4998, 4999, 7, 5, 0, 0, 4999, 5000, 7, 15, 0, 0, 5000, 5001, 7, 10, 0, 0, 5001, 5002, 7, 9, 0, 0, 5002, 5003, 7, 24, 0, 0, 5003, 5004, 7, 5, 0, 0, 5004, 5005, 7, 14, 0, 0, 5005, 5006, 7, 10, 0, 0, 5006, 5007, 7, 9, 0, 0, 5007, 972, 1, 0, 0, 0, 5008, 5009, 7, 13, 0, 0, 5009, 5010, 7, 19, 0, 0, 5010, 5011, 7, 28, 0, 0, 5011, 5012, 7, 16, 0, 0, 5012, 5013, 7, 8, 0, 0, 5013, 5014, 7, 24, 0, 0, 5014, 5015, 7, 10, 0, 0, 5015, 974, 1, 0, 0, 0, 5016, 5017, 7, 7, 0, 0, 5017, 5018, 7, 19, 0, 0, 5018, 5019, 7, 13, 0, 0, 5019, 5020, 7, 15, 0, 0, 5020, 5021, 7, 5, 0, 0, 5021, 5022, 7, 6, 0, 0, 5022, 5023, 7, 17, 0, 0, 5023, 5024, 7, 11, 0, 0, 5024, 5025, 7, 10, 0, 0, 5025, 5026, 7, 12, 0, 0, 5026, 976, 1, 0, 0, 0, 5027, 5028, 7, 28, 0, 0, 5028, 5029, 7, 17, 0, 0, 5029, 5030, 7, 16, 0, 0, 5030, 5031, 7, 20, 0, 0, 5031, 5032, 7, 17, 0, 0, 5032, 5033, 7, 7, 0, 0, 5033, 978, 1, 0, 0, 0, 5034, 5035, 7, 25, 0, 0, 5035, 5036, 7, 17, 0, 0, 5036, 5037, 7, 6, 0, 0, 5037, 5038, 7, 16, 0, 0, 5038, 5039, 7, 10, 0, 0, 5039, 5040, 7, 13, 0, 0, 5040, 980, 1, 0, 0, 0, 5041, 5042, 7, 23, 0, 0, 5042, 5043, 7, 13, 0, 0, 5043, 5044, 7, 19, 0, 0, 5044, 5045, 7, 22, 0, 0, 5045, 5046, 7, 24, 0, 0, 5046, 5047, 7, 9, 0, 0, 5047, 982, 1, 0, 0, 0, 5048, 5049, 7, 19, 0, 0, 5049, 5050, 7, 16, 0, 0, 5050, 5051, 7, 20, 0, 0, 5051, 5052, 7, 10, 0, 0, 5052, 5053, 7, 13, 0, 0, 5053, 5054, 7, 9, 0, 0, 5054, 984, 1, 0, 0, 0, 5055, 5056, 7, 7, 0, 0, 5056, 5057, 7, 25, 0, 0, 5057, 5058, 7, 14, 0, 0, 5058, 986, 1, 0, 0, 0, 5059, 5060, 7, 7, 0, 0, 5060, 5061, 7, 25, 0, 0, 5061, 5062, 7, 12, 0, 0, 5062, 988, 1, 0, 0, 0, 5063, 5064, 7, 7, 0, 0, 5064, 5065, 7, 25, 0, 0, 5065, 5066, 7, 21, 0, 0, 5066, 5067, 7, 14, 0, 0, 5067, 990, 1, 0, 0, 0, 5068, 5069, 7, 7, 0, 0, 5069, 5070, 7, 25, 0, 0, 5070, 5071, 7, 21, 0, 0, 5071, 5072, 7, 12, 0, 0, 5072, 992, 1, 0, 0, 0, 5073, 5074, 7, 22, 0, 0, 5074, 5075, 7, 10, 0, 0, 5075, 5076, 7, 9, 0, 0, 5076, 5077, 7, 14, 0, 0, 5077, 5078, 7, 5, 0, 0, 5078, 5079, 7, 24, 0, 0, 5079, 5080, 7, 10, 0, 0, 5080, 994, 1, 0, 0, 0, 5081, 5082, 7, 27, 0, 0, 5082, 5083, 7, 17, 0, 0, 5083, 5084, 7, 10, 0, 0, 5084, 5085, 7, 28, 0, 0, 5085, 5086, 7, 9, 0, 0, 5086, 996, 1, 0, 0, 0, 5087, 5088, 7, 7, 0, 0, 5088, 5089, 7, 19, 0, 0, 5089, 5090, 7, 13, 0, 0, 5090, 5091, 7, 15, 0, 0, 5091, 5092, 7, 5, 0, 0, 5092, 5093, 7, 6, 0, 0, 5093, 5094, 7, 17, 0, 0, 5094, 5095, 7, 11, 0, 0, 5095, 5096, 7, 10, 0, 0, 5096, 998, 1, 0, 0, 0, 5097, 5098, 7, 12, 0, 0, 5098, 5099, 7, 22, 0, 0, 5099, 5100, 7, 15, 0, 0, 5100, 5101, 7, 24, 0, 0, 5101, 1000, 1, 0, 0, 0, 5102, 5103, 7, 24, 0, 0, 5103, 5104, 7, 13, 0, 0, 5104, 5105, 7, 17, 0, 0, 5105, 5106, 7, 7, 0, 0, 5106, 5107, 7, 16, 0, 0, 5107, 5108, 5, 95, 0, 0, 5108, 5109, 7, 9, 0, 0, 5109, 5110, 7, 16, 0, 0, 5110, 5111, 7, 13, 0, 0, 5111, 5112, 7, 17, 0, 0, 5112, 5113, 7, 14, 0, 0, 5113, 5114, 7, 16, 0, 0, 5114, 5115, 5, 95, 0, 0, 5115, 5116, 7, 24, 0, 0, 5116, 5117, 7, 5, 0, 0, 5117, 5118, 7, 13, 0, 0, 5118, 5119, 7, 5, 0, 0, 5119, 5120, 7, 15, 0, 0, 5120, 5121, 7, 9, 0, 0, 5121, 1002, 1, 0, 0, 0, 5122, 5123, 7, 27, 0, 0, 5123, 5124, 7, 5, 0, 0, 5124, 5125, 7, 13, 0, 0, 5125, 5126, 7, 17, 0, 0, 5126, 5127, 7, 5, 0, 0, 5127, 5128, 7, 18, 0, 0, 5128, 5129, 7, 6, 0, 0, 5129, 5130, 7, 10, 0, 0, 5130, 5131, 5, 95, 0, 0, 5131, 5132, 7, 14, 0, 0, 5132, 5133, 7, 19, 0, 0, 5133, 5134, 7, 7, 0, 0, 5134, 5135, 7, 25, 0, 0, 5135, 5136, 7, 6, 0, 0, 5136, 5137, 7, 17, 0, 0, 5137, 5138, 7, 14, 0, 0, 5138, 5139, 7, 16, 0, 0, 5139, 1004, 1, 0, 0, 0, 5140, 5141, 7, 10, 0, 0, 5141, 5142, 7, 13, 0, 0, 5142, 5143, 7, 13, 0, 0, 5143, 5144, 7, 19, 0, 0, 5144, 5145, 7, 13, 0, 0, 5145, 1006, 1, 0, 0, 0, 5146, 5147, 7, 22, 0, 0, 5147, 5148, 7, 9, 0, 0, 5148, 5149, 7, 10, 0, 0, 5149, 5150, 5, 95, 0, 0, 5150, 5151, 7, 27, 0, 0, 5151, 5152, 7, 5, 0, 0, 5152, 5153, 7, 13, 0, 0, 5153, 5154, 7, 17, 0, 0, 5154, 5155, 7, 5, 0, 0, 5155, 5156, 7, 18, 0, 0, 5156, 5157, 7, 6, 0, 0, 5157, 5158, 7, 10, 0, 0, 5158, 1008, 1, 0, 0, 0, 5159, 5160, 7, 22, 0, 0, 5160, 5161, 7, 9, 0, 0, 5161, 5162, 7, 10, 0, 0, 5162, 5163, 5, 95, 0, 0, 5163, 5164, 7, 14, 0, 0, 5164, 5165, 7, 19, 0, 0, 5165, 5166, 7, 6, 0, 0, 5166, 5167, 7, 22, 0, 0, 5167, 5168, 7, 15, 0, 0, 5168, 5169, 7, 7, 0, 0, 5169, 1010, 1, 0, 0, 0, 5170, 5171, 7, 5, 0, 0, 5171, 5172, 7, 6, 0, 0, 5172, 5173, 7, 17, 0, 0, 5173, 5174, 7, 5, 0, 0, 5174, 5175, 7, 9, 0, 0, 5175, 1012, 1, 0, 0, 0, 5176, 5177, 7, 14, 0, 0, 5177, 5178, 7, 19, 0, 0, 5178, 5179, 7, 7, 0, 0, 5179, 5180, 7, 9, 0, 0, 5180, 5181, 7, 16, 0, 0, 5181, 5182, 7, 5, 0, 0, 5182, 5183, 7, 7, 0, 0, 5183, 5184, 7, 16, 0, 0, 5184, 1014, 1, 0, 0, 0, 5185, 5186, 7, 24, 0, 0, 5186, 5187, 7, 10, 0, 0, 5187, 5188, 7, 13, 0, 0, 5188, 5189, 7, 25, 0, 0, 5189, 5190, 7, 19, 0, 0, 5190, 5191, 7, 13, 0, 0, 5191, 5192, 7, 15, 0, 0, 5192, 1016, 1, 0, 0, 0, 5193, 5194, 7, 23, 0, 0, 5194, 5195, 7, 10, 0, 0, 5195, 5196, 7, 16, 0, 0, 5196, 1018, 1, 0, 0, 0, 5197, 5198, 7, 12, 0, 0, 5198, 5199, 7, 17, 0, 0, 5199, 5200, 7, 5, 0, 0, 5200, 5201, 7, 23, 0, 0, 5201, 5202, 7, 7, 0, 0, 5202, 5203, 7, 19, 0, 0, 5203, 5204, 7, 9, 0, 0, 5204, 5205, 7, 16, 0, 0, 5205, 5206, 7, 17, 0, 0, 5206, 5207, 7, 14, 0, 0, 5207, 5208, 7, 9, 0, 0, 5208, 1020, 1, 0, 0, 0, 5209, 5210, 7, 9, 0, 0, 5210, 5211, 7, 16, 0, 0, 5211, 5212, 7, 5, 0, 0, 5212, 5213, 7, 14, 0, 0, 5213, 5214, 7, 21, 0, 0, 5214, 5215, 7, 10, 0, 0, 5215, 5216, 7, 12, 0, 0, 5216, 1022, 1, 0, 0, 0, 5217, 5218, 7, 10, 0, 0, 5218, 5219, 7, 6, 0, 0, 5219, 5220, 7, 9, 0, 0, 5220, 5221, 7, 17, 0, 0, 5221, 5222, 7, 25, 0, 0, 5222, 1024, 1, 0, 0, 0, 5223, 5224, 7, 28, 0, 0, 5224, 5225, 7, 20, 0, 0, 5225, 5226, 7, 17, 0, 0, 5226, 5227, 7, 6, 0, 0, 5227, 5228, 7, 10, 0, 0, 5228, 1026, 1, 0, 0, 0, 5229, 5230, 7, 13, 0, 0, 5230, 5231, 7, 10, 0, 0, 5231, 5232, 7, 27, 0, 0, 5232, 5233, 7, 10, 0, 0, 5233, 5234, 7, 13, 0, 0, 5234, 5235, 7, 9, 0, 0, 5235, 5236, 7, 10, 0, 0, 5236, 1028, 1, 0, 0, 0, 5237, 5238, 7, 25, 0, 0, 5238, 5239, 7, 19, 0, 0, 5239, 5240, 7, 13, 0, 0, 5240, 5241, 7, 10, 0, 0, 5241, 5242, 7, 5, 0, 0, 5242, 5243, 7, 14, 0, 0, 5243, 5244, 7, 20, 0, 0, 5244, 1030, 1, 0, 0, 0, 5245, 5246, 7, 9, 0, 0, 5246, 5247, 7, 6, 0, 0, 5247, 5248, 7, 17, 0, 0, 5248, 5249, 7, 14, 0, 0, 5249, 5250, 7, 10, 0, 0, 5250, 1032, 1, 0, 0, 0, 5251, 5252, 7, 10, 0, 0, 5252, 5253, 7, 26, 0, 0, 5253, 5254, 7, 17, 0, 0, 5254, 5255, 7, 16, 0, 0, 5255, 1034, 1, 0, 0, 0, 5256, 5257, 7, 13, 0, 0, 5257, 5258, 7, 10, 0, 0, 5258, 5259, 7, 16, 0, 0, 5259, 5260, 7, 22, 0, 0, 5260, 5261, 7, 13, 0, 0, 5261, 5262, 7, 7, 0, 0, 5262, 1036, 1, 0, 0, 0, 5263, 5264, 7, 29, 0, 0, 5264, 5265, 7, 22, 0, 0, 5265, 5266, 7, 10, 0, 0, 5266, 5267, 7, 13, 0, 0, 5267, 5268, 7, 8, 0, 0, 5268, 1038, 1, 0, 0, 0, 5269, 5270, 7, 13, 0, 0, 5270, 5271, 7, 5, 0, 0, 5271, 5272, 7, 17, 0, 0, 5272, 5273, 7, 9, 0, 0, 5273, 5274, 7, 10, 0, 0, 5274, 1040, 1, 0, 0, 0, 5275, 5276, 7, 9, 0, 0, 5276, 5277, 7, 29, 0, 0, 5277, 5278, 7, 6, 0, 0, 5278, 5279, 7, 9, 0, 0, 5279, 5280, 7, 16, 0, 0, 5280, 5281, 7, 5, 0, 0, 5281, 5282, 7, 16, 0, 0, 5282, 5283, 7, 10, 0, 0, 5283, 1042, 1, 0, 0, 0, 5284, 5285, 7, 12, 0, 0, 5285, 5286, 7, 10, 0, 0, 5286, 5287, 7, 18, 0, 0, 5287, 5288, 7, 22, 0, 0, 5288, 5289, 7, 23, 0, 0, 5289, 1044, 1, 0, 0, 0, 5290, 5291, 7, 6, 0, 0, 5291, 5292, 7, 19, 0, 0, 5292, 5293, 7, 23, 0, 0, 5293, 1046, 1, 0, 0, 0, 5294, 5295, 7, 17, 0, 0, 5295, 5296, 7, 7, 0, 0, 5296, 5297, 7, 25, 0, 0, 5297, 5298, 7, 19, 0, 0, 5298, 1048, 1, 0, 0, 0, 5299, 5300, 7, 7, 0, 0, 5300, 5301, 7, 19, 0, 0, 5301, 5302, 7, 16, 0, 0, 5302, 5303, 7, 17, 0, 0, 5303, 5304, 7, 14, 0, 0, 5304, 5305, 7, 10, 0, 0, 5305, 1050, 1, 0, 0, 0, 5306, 5307, 7, 28, 0, 0, 5307, 5308, 7, 5, 0, 0, 5308, 5309, 7, 13, 0, 0, 5309, 5310, 7, 7, 0, 0, 5310, 5311, 7, 17, 0, 0, 5311, 5312, 7, 7, 0, 0, 5312, 5313, 7, 23, 0, 0, 5313, 1052, 1, 0, 0, 0, 5314, 5315, 7, 10, 0, 0, 5315, 5316, 7, 26, 0, 0, 5316, 5317, 7, 14, 0, 0, 5317, 5318, 7, 10, 0, 0, 5318, 5319, 7, 24, 0, 0, 5319, 5320, 7, 16, 0, 0, 5320, 5321, 7, 17, 0, 0, 5321, 5322, 7, 19, 0, 0, 5322, 5323, 7, 7, 0, 0, 5323, 1054, 1, 0, 0, 0, 5324, 5325, 7, 5, 0, 0, 5325, 5326, 7, 9, 0, 0, 5326, 5327, 7, 9, 0, 0, 5327, 5328, 7, 10, 0, 0, 5328, 5329, 7, 13, 0, 0, 5329, 5330, 7, 16, 0, 0, 5330, 1056, 1, 0, 0, 0, 5331, 5332, 7, 6, 0, 0, 5332, 5333, 7, 19, 0, 0, 5333, 5334, 7, 19, 0, 0, 5334, 5335, 7, 24, 0, 0, 5335, 1058, 1, 0, 0, 0, 5336, 5337, 7, 19, 0, 0, 5337, 5338, 7, 24, 0, 0, 5338, 5339, 7, 10, 0, 0, 5339, 5340, 7, 7, 0, 0, 5340, 1060, 1, 0, 0, 0, 5341, 5342, 7, 5, 0, 0, 5342, 5343, 7, 18, 0, 0, 5343, 5344, 7, 9, 0, 0, 5344, 1062, 1, 0, 0, 0, 5345, 5346, 7, 14, 0, 0, 5346, 5347, 7, 18, 0, 0, 5347, 5348, 7, 13, 0, 0, 5348, 5349, 7, 16, 0, 0, 5349, 1064, 1, 0, 0, 0, 5350, 5351, 7, 14, 0, 0, 5351, 5352, 7, 10, 0, 0, 5352, 5353, 7, 17, 0, 0, 5353, 5354, 7, 6, 0, 0, 5354, 1066, 1, 0, 0, 0, 5355, 5356, 7, 14, 0, 0, 5356, 5357, 7, 10, 0, 0, 5357, 5358, 7, 17, 0, 0, 5358, 5359, 7, 6, 0, 0, 5359, 5360, 7, 17, 0, 0, 5360, 5361, 7, 7, 0, 0, 5361, 5362, 7, 23, 0, 0, 5362, 1068, 1, 0, 0, 0, 5363, 5364, 7, 12, 0, 0, 5364, 5365, 7, 10, 0, 0, 5365, 5366, 7, 23, 0, 0, 5366, 5367, 7, 13, 0, 0, 5367, 5368, 7, 10, 0, 0, 5368, 5369, 7, 10, 0, 0, 5369, 5370, 7, 9, 0, 0, 5370, 1070, 1, 0, 0, 0, 5371, 5372, 7, 12, 0, 0, 5372, 5373, 7, 17, 0, 0, 5373, 5374, 7, 27, 0, 0, 5374, 1072, 1, 0, 0, 0, 5375, 5376, 7, 10, 0, 0, 5376, 5377, 7, 26, 0, 0, 5377, 5378, 7, 24, 0, 0, 5378, 1074, 1, 0, 0, 0, 5379, 5380, 7, 25, 0, 0, 5380, 5381, 7, 5, 0, 0, 5381, 5382, 7, 14, 0, 0, 5382, 5383, 7, 16, 0, 0, 5383, 5384, 7, 19, 0, 0, 5384, 5385, 7, 13, 0, 0, 5385, 5386, 7, 17, 0, 0, 5386, 5387, 7, 5, 0, 0, 5387, 5388, 7, 6, 0, 0, 5388, 1076, 1, 0, 0, 0, 5389, 5390, 7, 25, 0, 0, 5390, 5391, 7, 6, 0, 0, 5391, 5392, 7, 19, 0, 0, 5392, 5393, 7, 19, 0, 0, 5393, 5394, 7, 13, 0, 0, 5394, 1078, 1, 0, 0, 0, 5395, 5396, 7, 23, 0, 0, 5396, 5397, 7, 14, 0, 0, 5397, 5398, 7, 12, 0, 0, 5398, 1080, 1, 0, 0, 0, 5399, 5400, 7, 6, 0, 0, 5400, 5401, 7, 14, 0, 0, 5401, 5402, 7, 15, 0, 0, 5402, 1082, 1, 0, 0, 0, 5403, 5404, 7, 6, 0, 0, 5404, 5405, 7, 7, 0, 0, 5405, 1084, 1, 0, 0, 0, 5406, 5407, 7, 6, 0, 0, 5407, 5408, 7, 19, 0, 0, 5408, 5409, 7, 23, 0, 0, 5409, 5410, 5, 49, 0, 0, 5410, 5411, 5, 48, 0, 0, 5411, 1086, 1, 0, 0, 0, 5412, 5413, 7, 15, 0, 0, 5413, 5414, 7, 17, 0, 0, 5414, 5415, 7, 7, 0, 0, 5415, 5416, 5, 95, 0, 0, 5416, 5417, 7, 9, 0, 0, 5417, 5418, 7, 14, 0, 0, 5418, 5419, 7, 5, 0, 0, 5419, 5420, 7, 6, 0, 0, 5420, 5421, 7, 10, 0, 0, 5421, 1088, 1, 0, 0, 0, 5422, 5423, 7, 15, 0, 0, 5423, 5424, 7, 19, 0, 0, 5424, 5425, 7, 12, 0, 0, 5425, 1090, 1, 0, 0, 0, 5426, 5427, 7, 24, 0, 0, 5427, 5428, 7, 17, 0, 0, 5428, 1092, 1, 0, 0, 0, 5429, 5430, 7, 24, 0, 0, 5430, 5431, 7, 19, 0, 0, 5431, 5432, 7, 28, 0, 0, 5432, 5433, 7, 10, 0, 0, 5433, 5434, 7, 13, 0, 0, 5434, 1094, 1, 0, 0, 0, 5435, 5436, 7, 13, 0, 0, 5436, 5437, 7, 5, 0, 0, 5437, 5438, 7, 12, 0, 0, 5438, 5439, 7, 17, 0, 0, 5439, 5440, 7, 5, 0, 0, 5440, 5441, 7, 7, 0, 0, 5441, 5442, 7, 9, 0, 0, 5442, 1096, 1, 0, 0, 0, 5443, 5444, 7, 13, 0, 0, 5444, 5445, 7, 19, 0, 0, 5445, 5446, 7, 22, 0, 0, 5446, 5447, 7, 7, 0, 0, 5447, 5448, 7, 12, 0, 0, 5448, 1098, 1, 0, 0, 0, 5449, 5450, 7, 9, 0, 0, 5450, 5451, 7, 14, 0, 0, 5451, 5452, 7, 5, 0, 0, 5452, 5453, 7, 6, 0, 0, 5453, 5454, 7, 10, 0, 0, 5454, 1100, 1, 0, 0, 0, 5455, 5456, 7, 9, 0, 0, 5456, 5457, 7, 17, 0, 0, 5457, 5458, 7, 23, 0, 0, 5458, 5459, 7, 7, 0, 0, 5459, 1102, 1, 0, 0, 0, 5460, 5461, 7, 9, 0, 0, 5461, 5462, 7, 29, 0, 0, 5462, 5463, 7, 13, 0, 0, 5463, 5464, 7, 16, 0, 0, 5464, 1104, 1, 0, 0, 0, 5465, 5466, 7, 16, 0, 0, 5466, 5467, 7, 13, 0, 0, 5467, 5468, 7, 17, 0, 0, 5468, 5469, 7, 15, 0, 0, 5469, 5470, 5, 95, 0, 0, 5470, 5471, 7, 9, 0, 0, 5471, 5472, 7, 14, 0, 0, 5472, 5473, 7, 5, 0, 0, 5473, 5474, 7, 6, 0, 0, 5474, 5475, 7, 10, 0, 0, 5475, 1106, 1, 0, 0, 0, 5476, 5477, 7, 16, 0, 0, 5477, 5478, 7, 13, 0, 0, 5478, 5479, 7, 22, 0, 0, 5479, 5480, 7, 7, 0, 0, 5480, 5481, 7, 14, 0, 0, 5481, 1108, 1, 0, 0, 0, 5482, 5483, 7, 28, 0, 0, 5483, 5484, 7, 17, 0, 0, 5484, 5485, 7, 12, 0, 0, 5485, 5486, 7, 16, 0, 0, 5486, 5487, 7, 20, 0, 0, 5487, 5488, 5, 95, 0, 0, 5488, 5489, 7, 18, 0, 0, 5489, 5490, 7, 22, 0, 0, 5490, 5491, 7, 14, 0, 0, 5491, 5492, 7, 21, 0, 0, 5492, 5493, 7, 10, 0, 0, 5493, 5494, 7, 16, 0, 0, 5494, 1110, 1, 0, 0, 0, 5495, 5496, 7, 13, 0, 0, 5496, 5497, 7, 5, 0, 0, 5497, 5498, 7, 7, 0, 0, 5498, 5499, 7, 12, 0, 0, 5499, 5500, 7, 19, 0, 0, 5500, 5501, 7, 15, 0, 0, 5501, 1112, 1, 0, 0, 0, 5502, 5503, 7, 9, 0, 0, 5503, 5504, 7, 10, 0, 0, 5504, 5505, 7, 16, 0, 0, 5505, 5506, 7, 9, 0, 0, 5506, 5507, 7, 10, 0, 0, 5507, 5508, 7, 10, 0, 0, 5508, 5509, 7, 12, 0, 0, 5509, 1114, 1, 0, 0, 0, 5510, 5511, 7, 5, 0, 0, 5511, 5512, 7, 14, 0, 0, 5512, 5513, 7, 19, 0, 0, 5513, 5514, 7, 9, 0, 0, 5514, 1116, 1, 0, 0, 0, 5515, 5516, 7, 5, 0, 0, 5516, 5517, 7, 14, 0, 0, 5517, 5518, 7, 19, 0, 0, 5518, 5519, 7, 9, 0, 0, 5519, 5520, 7, 12, 0, 0, 5520, 1118, 1, 0, 0, 0, 5521, 5522, 7, 5, 0, 0, 5522, 5523, 7, 9, 0, 0, 5523, 5524, 7, 17, 0, 0, 5524, 5525, 7, 7, 0, 0, 5525, 1120, 1, 0, 0, 0, 5526, 5527, 7, 5, 0, 0, 5527, 5528, 7, 9, 0, 0, 5528, 5529, 7, 17, 0, 0, 5529, 5530, 7, 7, 0, 0, 5530, 5531, 7, 12, 0, 0, 5531, 1122, 1, 0, 0, 0, 5532, 5533, 7, 5, 0, 0, 5533, 5534, 7, 16, 0, 0, 5534, 5535, 7, 5, 0, 0, 5535, 5536, 7, 7, 0, 0, 5536, 1124, 1, 0, 0, 0, 5537, 5538, 7, 5, 0, 0, 5538, 5539, 7, 16, 0, 0, 5539, 5540, 7, 5, 0, 0, 5540, 5541, 7, 7, 0, 0, 5541, 5542, 7, 12, 0, 0, 5542, 1126, 1, 0, 0, 0, 5543, 5544, 7, 5, 0, 0, 5544, 5545, 7, 16, 0, 0, 5545, 5546, 7, 5, 0, 0, 5546, 5547, 7, 7, 0, 0, 5547, 5548, 5, 50, 0, 0, 5548, 1128, 1, 0, 0, 0, 5549, 5550, 7, 5, 0, 0, 5550, 5551, 7, 16, 0, 0, 5551, 5552, 7, 5, 0, 0, 5552, 5553, 7, 7, 0, 0, 5553, 5554, 5, 50, 0, 0, 5554, 5555, 7, 12, 0, 0, 5555, 1130, 1, 0, 0, 0, 5556, 5557, 7, 14, 0, 0, 5557, 5558, 7, 19, 0, 0, 5558, 5559, 7, 9, 0, 0, 5559, 1132, 1, 0, 0, 0, 5560, 5561, 7, 14, 0, 0, 5561, 5562, 7, 19, 0, 0, 5562, 5563, 7, 9, 0, 0, 5563, 5564, 7, 12, 0, 0, 5564, 1134, 1, 0, 0, 0, 5565, 5566, 7, 14, 0, 0, 5566, 5567, 7, 19, 0, 0, 5567, 5568, 7, 16, 0, 0, 5568, 1136, 1, 0, 0, 0, 5569, 5570, 7, 14, 0, 0, 5570, 5571, 7, 19, 0, 0, 5571, 5572, 7, 16, 0, 0, 5572, 5573, 7, 12, 0, 0, 5573, 1138, 1, 0, 0, 0, 5574, 5575, 7, 9, 0, 0, 5575, 5576, 7, 17, 0, 0, 5576, 5577, 7, 7, 0, 0, 5577, 1140, 1, 0, 0, 0, 5578, 5579, 7, 9, 0, 0, 5579, 5580, 7, 17, 0, 0, 5580, 5581, 7, 7, 0, 0, 5581, 5582, 7, 12, 0, 0, 5582, 1142, 1, 0, 0, 0, 5583, 5584, 7, 16, 0, 0, 5584, 5585, 7, 5, 0, 0, 5585, 5586, 7, 7, 0, 0, 5586, 1144, 1, 0, 0, 0, 5587, 5588, 7, 16, 0, 0, 5588, 5589, 7, 5, 0, 0, 5589, 5590, 7, 7, 0, 0, 5590, 5591, 7, 12, 0, 0, 5591, 1146, 1, 0, 0, 0, 5592, 5593, 7, 9, 0, 0, 5593, 5594, 7, 17, 0, 0, 5594, 5595, 7, 7, 0, 0, 5595, 5596, 7, 20, 0, 0, 5596, 1148, 1, 0, 0, 0, 5597, 5598, 7, 14, 0, 0, 5598, 5599, 7, 19, 0, 0, 5599, 5600, 7, 9, 0, 0, 5600, 5601, 7, 20, 0, 0, 5601, 1150, 1, 0, 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, 1152, 1, 0, 0, 0, 5607, 5608, 7, 5, 0, 0, 5608, 5609, 7, 9, 0, 0, 5609, 5610, 7, 17, 0, 0, 5610, 5611, 7, 7, 0, 0, 5611, 5612, 7, 20, 0, 0, 5612, 1154, 1, 0, 0, 0, 5613, 5614, 7, 5, 0, 0, 5614, 5615, 7, 14, 0, 0, 5615, 5616, 7, 19, 0, 0, 5616, 5617, 7, 9, 0, 0, 5617, 5618, 7, 20, 0, 0, 5618, 1156, 1, 0, 0, 0, 5619, 5620, 7, 5, 0, 0, 5620, 5621, 7, 16, 0, 0, 5621, 5622, 7, 5, 0, 0, 5622, 5623, 7, 7, 0, 0, 5623, 5624, 7, 20, 0, 0, 5624, 1158, 1, 0, 0, 0, 5625, 5626, 7, 18, 0, 0, 5626, 5627, 7, 17, 0, 0, 5627, 5628, 7, 16, 0, 0, 5628, 5629, 5, 95, 0, 0, 5629, 5630, 7, 6, 0, 0, 5630, 5631, 7, 10, 0, 0, 5631, 5632, 7, 7, 0, 0, 5632, 5633, 7, 23, 0, 0, 5633, 5634, 7, 16, 0, 0, 5634, 5635, 7, 20, 0, 0, 5635, 1160, 1, 0, 0, 0, 5636, 5637, 7, 14, 0, 0, 5637, 5638, 7, 20, 0, 0, 5638, 5639, 7, 5, 0, 0, 5639, 5640, 7, 13, 0, 0, 5640, 5641, 5, 95, 0, 0, 5641, 5642, 7, 6, 0, 0, 5642, 5643, 7, 10, 0, 0, 5643, 5644, 7, 7, 0, 0, 5644, 5645, 7, 23, 0, 0, 5645, 5646, 7, 16, 0, 0, 5646, 5647, 7, 20, 0, 0, 5647, 1162, 1, 0, 0, 0, 5648, 5649, 7, 14, 0, 0, 5649, 5650, 7, 20, 0, 0, 5650, 5651, 7, 5, 0, 0, 5651, 5652, 7, 13, 0, 0, 5652, 5653, 7, 5, 0, 0, 5653, 5654, 7, 14, 0, 0, 5654, 5655, 7, 16, 0, 0, 5655, 5656, 7, 10, 0, 0, 5656, 5657, 7, 13, 0, 0, 5657, 5658, 5, 95, 0, 0, 5658, 5659, 7, 6, 0, 0, 5659, 5660, 7, 10, 0, 0, 5660, 5661, 7, 7, 0, 0, 5661, 5662, 7, 23, 0, 0, 5662, 5663, 7, 16, 0, 0, 5663, 5664, 7, 20, 0, 0, 5664, 1164, 1, 0, 0, 0, 5665, 5666, 7, 6, 0, 0, 5666, 5667, 7, 19, 0, 0, 5667, 5668, 7, 28, 0, 0, 5668, 5669, 7, 10, 0, 0, 5669, 5670, 7, 13, 0, 0, 5670, 1166, 1, 0, 0, 0, 5671, 5672, 7, 19, 0, 0, 5672, 5673, 7, 14, 0, 0, 5673, 5674, 7, 16, 0, 0, 5674, 5675, 7, 10, 0, 0, 5675, 5676, 7, 16, 0, 0, 5676, 5677, 5, 95, 0, 0, 5677, 5678, 7, 6, 0, 0, 5678, 5679, 7, 10, 0, 0, 5679, 5680, 7, 7, 0, 0, 5680, 5681, 7, 23, 0, 0, 5681, 5682, 7, 16, 0, 0, 5682, 5683, 7, 20, 0, 0, 5683, 1168, 1, 0, 0, 0, 5684, 5685, 7, 22, 0, 0, 5685, 5686, 7, 24, 0, 0, 5686, 5687, 7, 24, 0, 0, 5687, 5688, 7, 10, 0, 0, 5688, 5689, 7, 13, 0, 0, 5689, 1170, 1, 0, 0, 0, 5690, 5691, 7, 5, 0, 0, 5691, 5692, 7, 9, 0, 0, 5692, 5693, 7, 14, 0, 0, 5693, 5694, 7, 17, 0, 0, 5694, 5695, 7, 17, 0, 0, 5695, 1172, 1, 0, 0, 0, 5696, 5697, 7, 18, 0, 0, 5697, 5698, 7, 16, 0, 0, 5698, 5699, 7, 13, 0, 0, 5699, 5700, 7, 17, 0, 0, 5700, 5701, 7, 15, 0, 0, 5701, 1174, 1, 0, 0, 0, 5702, 5703, 7, 14, 0, 0, 5703, 5704, 7, 20, 0, 0, 5704, 5705, 7, 13, 0, 0, 5705, 1176, 1, 0, 0, 0, 5706, 5707, 7, 14, 0, 0, 5707, 5708, 7, 19, 0, 0, 5708, 5709, 7, 7, 0, 0, 5709, 5710, 7, 14, 0, 0, 5710, 5711, 7, 5, 0, 0, 5711, 5712, 7, 16, 0, 0, 5712, 1178, 1, 0, 0, 0, 5713, 5714, 7, 14, 0, 0, 5714, 5715, 7, 19, 0, 0, 5715, 5716, 7, 7, 0, 0, 5716, 5717, 7, 14, 0, 0, 5717, 5718, 7, 5, 0, 0, 5718, 5719, 7, 16, 0, 0, 5719, 5720, 5, 95, 0, 0, 5720, 5721, 7, 28, 0, 0, 5721, 5722, 7, 9, 0, 0, 5722, 1180, 1, 0, 0, 0, 5723, 5724, 7, 25, 0, 0, 5724, 5725, 7, 19, 0, 0, 5725, 5726, 7, 13, 0, 0, 5726, 5727, 7, 15, 0, 0, 5727, 5728, 7, 5, 0, 0, 5728, 5729, 7, 16, 0, 0, 5729, 1182, 1, 0, 0, 0, 5730, 5731, 7, 17, 0, 0, 5731, 5732, 7, 7, 0, 0, 5732, 5733, 7, 17, 0, 0, 5733, 5734, 7, 16, 0, 0, 5734, 5735, 7, 14, 0, 0, 5735, 5736, 7, 5, 0, 0, 5736, 5737, 7, 24, 0, 0, 5737, 1184, 1, 0, 0, 0, 5738, 5739, 7, 6, 0, 0, 5739, 5740, 7, 10, 0, 0, 5740, 5741, 7, 7, 0, 0, 5741, 5742, 7, 23, 0, 0, 5742, 5743, 7, 16, 0, 0, 5743, 5744, 7, 20, 0, 0, 5744, 1186, 1, 0, 0, 0, 5745, 5746, 7, 6, 0, 0, 5746, 5747, 7, 24, 0, 0, 5747, 5748, 7, 5, 0, 0, 5748, 5749, 7, 12, 0, 0, 5749, 1188, 1, 0, 0, 0, 5750, 5751, 7, 6, 0, 0, 5751, 5752, 7, 16, 0, 0, 5752, 5753, 7, 13, 0, 0, 5753, 5754, 7, 17, 0, 0, 5754, 5755, 7, 15, 0, 0, 5755, 1190, 1, 0, 0, 0, 5756, 5757, 7, 15, 0, 0, 5757, 5758, 7, 12, 0, 0, 5758, 5759, 5, 53, 0, 0, 5759, 1192, 1, 0, 0, 0, 5760, 5761, 7, 24, 0, 0, 5761, 5762, 7, 5, 0, 0, 5762, 5763, 7, 13, 0, 0, 5763, 5764, 7, 9, 0, 0, 5764, 5765, 7, 10, 0, 0, 5765, 5766, 5, 95, 0, 0, 5766, 5767, 7, 17, 0, 0, 5767, 5768, 7, 12, 0, 0, 5768, 5769, 7, 10, 0, 0, 5769, 5770, 7, 7, 0, 0, 5770, 5771, 7, 16, 0, 0, 5771, 1194, 1, 0, 0, 0, 5772, 5773, 7, 24, 0, 0, 5773, 5774, 7, 23, 0, 0, 5774, 5775, 5, 95, 0, 0, 5775, 5776, 7, 14, 0, 0, 5776, 5777, 7, 6, 0, 0, 5777, 5778, 7, 17, 0, 0, 5778, 5779, 7, 10, 0, 0, 5779, 5780, 7, 7, 0, 0, 5780, 5781, 7, 16, 0, 0, 5781, 5782, 5, 95, 0, 0, 5782, 5783, 7, 10, 0, 0, 5783, 5784, 7, 7, 0, 0, 5784, 5785, 7, 14, 0, 0, 5785, 5786, 7, 19, 0, 0, 5786, 5787, 7, 12, 0, 0, 5787, 5788, 7, 17, 0, 0, 5788, 5789, 7, 7, 0, 0, 5789, 5790, 7, 23, 0, 0, 5790, 1196, 1, 0, 0, 0, 5791, 5792, 7, 29, 0, 0, 5792, 5793, 7, 22, 0, 0, 5793, 5794, 7, 19, 0, 0, 5794, 5795, 7, 16, 0, 0, 5795, 5796, 7, 10, 0, 0, 5796, 5797, 5, 95, 0, 0, 5797, 5798, 7, 17, 0, 0, 5798, 5799, 7, 12, 0, 0, 5799, 5800, 7, 10, 0, 0, 5800, 5801, 7, 7, 0, 0, 5801, 5802, 7, 16, 0, 0, 5802, 1198, 1, 0, 0, 0, 5803, 5804, 7, 29, 0, 0, 5804, 5805, 7, 22, 0, 0, 5805, 5806, 7, 19, 0, 0, 5806, 5807, 7, 16, 0, 0, 5807, 5808, 7, 10, 0, 0, 5808, 5809, 5, 95, 0, 0, 5809, 5810, 7, 6, 0, 0, 5810, 5811, 7, 17, 0, 0, 5811, 5812, 7, 16, 0, 0, 5812, 5813, 7, 10, 0, 0, 5813, 5814, 7, 13, 0, 0, 5814, 5815, 7, 5, 0, 0, 5815, 5816, 7, 6, 0, 0, 5816, 1200, 1, 0, 0, 0, 5817, 5818, 7, 29, 0, 0, 5818, 5819, 7, 22, 0, 0, 5819, 5820, 7, 19, 0, 0, 5820, 5821, 7, 16, 0, 0, 5821, 5822, 7, 10, 0, 0, 5822, 5823, 5, 95, 0, 0, 5823, 5824, 7, 7, 0, 0, 5824, 5825, 7, 22, 0, 0, 5825, 5826, 7, 6, 0, 0, 5826, 5827, 7, 6, 0, 0, 5827, 5828, 7, 5, 0, 0, 5828, 5829, 7, 18, 0, 0, 5829, 5830, 7, 6, 0, 0, 5830, 5831, 7, 10, 0, 0, 5831, 1202, 1, 0, 0, 0, 5832, 5833, 7, 13, 0, 0, 5833, 5834, 7, 10, 0, 0, 5834, 5835, 7, 23, 0, 0, 5835, 5836, 7, 10, 0, 0, 5836, 5837, 7, 26, 0, 0, 5837, 5838, 7, 24, 0, 0, 5838, 5839, 5, 95, 0, 0, 5839, 5840, 7, 14, 0, 0, 5840, 5841, 7, 19, 0, 0, 5841, 5842, 7, 22, 0, 0, 5842, 5843, 7, 7, 0, 0, 5843, 5844, 7, 16, 0, 0, 5844, 1204, 1, 0, 0, 0, 5845, 5846, 7, 13, 0, 0, 5846, 5847, 7, 10, 0, 0, 5847, 5848, 7, 23, 0, 0, 5848, 5849, 7, 10, 0, 0, 5849, 5850, 7, 26, 0, 0, 5850, 5851, 7, 24, 0, 0, 5851, 5852, 5, 95, 0, 0, 5852, 5853, 7, 17, 0, 0, 5853, 5854, 7, 7, 0, 0, 5854, 5855, 7, 9, 0, 0, 5855, 5856, 7, 16, 0, 0, 5856, 5857, 7, 13, 0, 0, 5857, 1206, 1, 0, 0, 0, 5858, 5859, 7, 13, 0, 0, 5859, 5860, 7, 10, 0, 0, 5860, 5861, 7, 23, 0, 0, 5861, 5862, 7, 10, 0, 0, 5862, 5863, 7, 26, 0, 0, 5863, 5864, 7, 24, 0, 0, 5864, 5865, 5, 95, 0, 0, 5865, 5866, 7, 6, 0, 0, 5866, 5867, 7, 17, 0, 0, 5867, 5868, 7, 21, 0, 0, 5868, 5869, 7, 10, 0, 0, 5869, 1208, 1, 0, 0, 0, 5870, 5871, 7, 13, 0, 0, 5871, 5872, 7, 10, 0, 0, 5872, 5873, 7, 23, 0, 0, 5873, 5874, 7, 10, 0, 0, 5874, 5875, 7, 26, 0, 0, 5875, 5876, 7, 24, 0, 0, 5876, 5877, 5, 95, 0, 0, 5877, 5878, 7, 15, 0, 0, 5878, 5879, 7, 5, 0, 0, 5879, 5880, 7, 16, 0, 0, 5880, 5881, 7, 14, 0, 0, 5881, 5882, 7, 20, 0, 0, 5882, 1210, 1, 0, 0, 0, 5883, 5884, 7, 13, 0, 0, 5884, 5885, 7, 10, 0, 0, 5885, 5886, 7, 23, 0, 0, 5886, 5887, 7, 10, 0, 0, 5887, 5888, 7, 26, 0, 0, 5888, 5889, 7, 24, 0, 0, 5889, 5890, 5, 95, 0, 0, 5890, 5891, 7, 15, 0, 0, 5891, 5892, 7, 5, 0, 0, 5892, 5893, 7, 16, 0, 0, 5893, 5894, 7, 14, 0, 0, 5894, 5895, 7, 20, 0, 0, 5895, 5896, 7, 10, 0, 0, 5896, 5897, 7, 9, 0, 0, 5897, 1212, 1, 0, 0, 0, 5898, 5899, 7, 13, 0, 0, 5899, 5900, 7, 10, 0, 0, 5900, 5901, 7, 23, 0, 0, 5901, 5902, 7, 10, 0, 0, 5902, 5903, 7, 26, 0, 0, 5903, 5904, 7, 24, 0, 0, 5904, 5905, 5, 95, 0, 0, 5905, 5906, 7, 13, 0, 0, 5906, 5907, 7, 10, 0, 0, 5907, 5908, 7, 24, 0, 0, 5908, 5909, 7, 6, 0, 0, 5909, 5910, 7, 5, 0, 0, 5910, 5911, 7, 14, 0, 0, 5911, 5912, 7, 10, 0, 0, 5912, 1214, 1, 0, 0, 0, 5913, 5914, 7, 13, 0, 0, 5914, 5915, 7, 10, 0, 0, 5915, 5916, 7, 23, 0, 0, 5916, 5917, 7, 10, 0, 0, 5917, 5918, 7, 26, 0, 0, 5918, 5919, 7, 24, 0, 0, 5919, 5920, 5, 95, 0, 0, 5920, 5921, 7, 9, 0, 0, 5921, 5922, 7, 24, 0, 0, 5922, 5923, 7, 6, 0, 0, 5923, 5924, 7, 17, 0, 0, 5924, 5925, 7, 16, 0, 0, 5925, 5926, 5, 95, 0, 0, 5926, 5927, 7, 16, 0, 0, 5927, 5928, 7, 19, 0, 0, 5928, 5929, 5, 95, 0, 0, 5929, 5930, 7, 5, 0, 0, 5930, 5931, 7, 13, 0, 0, 5931, 5932, 7, 13, 0, 0, 5932, 5933, 7, 5, 0, 0, 5933, 5934, 7, 8, 0, 0, 5934, 1216, 1, 0, 0, 0, 5935, 5936, 7, 13, 0, 0, 5936, 5937, 7, 10, 0, 0, 5937, 5938, 7, 23, 0, 0, 5938, 5939, 7, 10, 0, 0, 5939, 5940, 7, 26, 0, 0, 5940, 5941, 7, 24, 0, 0, 5941, 5942, 5, 95, 0, 0, 5942, 5943, 7, 9, 0, 0, 5943, 5944, 7, 24, 0, 0, 5944, 5945, 7, 6, 0, 0, 5945, 5946, 7, 17, 0, 0, 5946, 5947, 7, 16, 0, 0, 5947, 5948, 5, 95, 0, 0, 5948, 5949, 7, 16, 0, 0, 5949, 5950, 7, 19, 0, 0, 5950, 5951, 5, 95, 0, 0, 5951, 5952, 7, 16, 0, 0, 5952, 5953, 7, 5, 0, 0, 5953, 5954, 7, 18, 0, 0, 5954, 5955, 7, 6, 0, 0, 5955, 5956, 7, 10, 0, 0, 5956, 1218, 1, 0, 0, 0, 5957, 5958, 7, 13, 0, 0, 5958, 5959, 7, 10, 0, 0, 5959, 5960, 7, 23, 0, 0, 5960, 5961, 7, 10, 0, 0, 5961, 5962, 7, 26, 0, 0, 5962, 5963, 7, 24, 0, 0, 5963, 5964, 5, 95, 0, 0, 5964, 5965, 7, 9, 0, 0, 5965, 5966, 7, 22, 0, 0, 5966, 5967, 7, 18, 0, 0, 5967, 5968, 7, 9, 0, 0, 5968, 5969, 7, 16, 0, 0, 5969, 5970, 7, 13, 0, 0, 5970, 1220, 1, 0, 0, 0, 5971, 5972, 7, 13, 0, 0, 5972, 5973, 7, 10, 0, 0, 5973, 5974, 7, 24, 0, 0, 5974, 5975, 7, 10, 0, 0, 5975, 5976, 7, 5, 0, 0, 5976, 5977, 7, 16, 0, 0, 5977, 1222, 1, 0, 0, 0, 5978, 5979, 7, 13, 0, 0, 5979, 5980, 7, 24, 0, 0, 5980, 5981, 7, 5, 0, 0, 5981, 5982, 7, 12, 0, 0, 5982, 1224, 1, 0, 0, 0, 5983, 5984, 7, 13, 0, 0, 5984, 5985, 7, 16, 0, 0, 5985, 5986, 7, 13, 0, 0, 5986, 5987, 7, 17, 0, 0, 5987, 5988, 7, 15, 0, 0, 5988, 1226, 1, 0, 0, 0, 5989, 5990, 7, 9, 0, 0, 5990, 5991, 7, 24, 0, 0, 5991, 5992, 7, 6, 0, 0, 5992, 5993, 7, 17, 0, 0, 5993, 5994, 7, 16, 0, 0, 5994, 5995, 5, 95, 0, 0, 5995, 5996, 7, 24, 0, 0, 5996, 5997, 7, 5, 0, 0, 5997, 5998, 7, 13, 0, 0, 5998, 5999, 7, 16, 0, 0, 5999, 1228, 1, 0, 0, 0, 6000, 6001, 7, 9, 0, 0, 6001, 6002, 7, 16, 0, 0, 6002, 6003, 7, 5, 0, 0, 6003, 6004, 7, 13, 0, 0, 6004, 6005, 7, 16, 0, 0, 6005, 6006, 7, 9, 0, 0, 6006, 6007, 5, 95, 0, 0, 6007, 6008, 7, 28, 0, 0, 6008, 6009, 7, 17, 0, 0, 6009, 6010, 7, 16, 0, 0, 6010, 6011, 7, 20, 0, 0, 6011, 1230, 1, 0, 0, 0, 6012, 6013, 7, 9, 0, 0, 6013, 6014, 7, 16, 0, 0, 6014, 6015, 7, 13, 0, 0, 6015, 6016, 7, 17, 0, 0, 6016, 6017, 7, 7, 0, 0, 6017, 6018, 7, 23, 0, 0, 6018, 6019, 5, 95, 0, 0, 6019, 6020, 7, 16, 0, 0, 6020, 6021, 7, 19, 0, 0, 6021, 6022, 5, 95, 0, 0, 6022, 6023, 7, 5, 0, 0, 6023, 6024, 7, 13, 0, 0, 6024, 6025, 7, 13, 0, 0, 6025, 6026, 7, 5, 0, 0, 6026, 6027, 7, 8, 0, 0, 6027, 1232, 1, 0, 0, 0, 6028, 6029, 7, 9, 0, 0, 6029, 6030, 7, 16, 0, 0, 6030, 6031, 7, 13, 0, 0, 6031, 6032, 7, 17, 0, 0, 6032, 6033, 7, 7, 0, 0, 6033, 6034, 7, 23, 0, 0, 6034, 6035, 5, 95, 0, 0, 6035, 6036, 7, 16, 0, 0, 6036, 6037, 7, 19, 0, 0, 6037, 6038, 5, 95, 0, 0, 6038, 6039, 7, 16, 0, 0, 6039, 6040, 7, 5, 0, 0, 6040, 6041, 7, 18, 0, 0, 6041, 6042, 7, 6, 0, 0, 6042, 6043, 7, 10, 0, 0, 6043, 1234, 1, 0, 0, 0, 6044, 6045, 7, 9, 0, 0, 6045, 6046, 7, 16, 0, 0, 6046, 6047, 7, 13, 0, 0, 6047, 6048, 7, 24, 0, 0, 6048, 6049, 7, 19, 0, 0, 6049, 6050, 7, 9, 0, 0, 6050, 1236, 1, 0, 0, 0, 6051, 6052, 7, 9, 0, 0, 6052, 6053, 7, 22, 0, 0, 6053, 6054, 7, 18, 0, 0, 6054, 6055, 7, 9, 0, 0, 6055, 6056, 7, 16, 0, 0, 6056, 6057, 7, 13, 0, 0, 6057, 1238, 1, 0, 0, 0, 6058, 6059, 7, 16, 0, 0, 6059, 6060, 7, 19, 0, 0, 6060, 6061, 5, 95, 0, 0, 6061, 6062, 7, 5, 0, 0, 6062, 6063, 7, 9, 0, 0, 6063, 6064, 7, 14, 0, 0, 6064, 6065, 7, 17, 0, 0, 6065, 6066, 7, 17, 0, 0, 6066, 1240, 1, 0, 0, 0, 6067, 6068, 7, 16, 0, 0, 6068, 6069, 7, 19, 0, 0, 6069, 6070, 5, 95, 0, 0, 6070, 6071, 7, 20, 0, 0, 6071, 6072, 7, 10, 0, 0, 6072, 6073, 7, 26, 0, 0, 6073, 1242, 1, 0, 0, 0, 6074, 6075, 7, 16, 0, 0, 6075, 6076, 7, 13, 0, 0, 6076, 6077, 7, 5, 0, 0, 6077, 6078, 7, 7, 0, 0, 6078, 6079, 7, 9, 0, 0, 6079, 6080, 7, 6, 0, 0, 6080, 6081, 7, 5, 0, 0, 6081, 6082, 7, 16, 0, 0, 6082, 6083, 7, 10, 0, 0, 6083, 1244, 1, 0, 0, 0, 6084, 6085, 7, 22, 0, 0, 6085, 6086, 7, 7, 0, 0, 6086, 6087, 7, 17, 0, 0, 6087, 6088, 7, 9, 0, 0, 6088, 6089, 7, 16, 0, 0, 6089, 6090, 7, 13, 0, 0, 6090, 1246, 1, 0, 0, 0, 6091, 6092, 7, 5, 0, 0, 6092, 6093, 7, 23, 0, 0, 6093, 6094, 7, 10, 0, 0, 6094, 1248, 1, 0, 0, 0, 6095, 6096, 7, 14, 0, 0, 6096, 6097, 7, 6, 0, 0, 6097, 6098, 7, 19, 0, 0, 6098, 6099, 7, 14, 0, 0, 6099, 6100, 7, 21, 0, 0, 6100, 6101, 5, 95, 0, 0, 6101, 6102, 7, 16, 0, 0, 6102, 6103, 7, 17, 0, 0, 6103, 6104, 7, 15, 0, 0, 6104, 6105, 7, 10, 0, 0, 6105, 6106, 7, 9, 0, 0, 6106, 6107, 7, 16, 0, 0, 6107, 6108, 7, 5, 0, 0, 6108, 6109, 7, 15, 0, 0, 6109, 6110, 7, 24, 0, 0, 6110, 1250, 1, 0, 0, 0, 6111, 6112, 7, 12, 0, 0, 6112, 6113, 7, 5, 0, 0, 6113, 6114, 7, 16, 0, 0, 6114, 6115, 7, 10, 0, 0, 6115, 6116, 5, 95, 0, 0, 6116, 6117, 7, 18, 0, 0, 6117, 6118, 7, 17, 0, 0, 6118, 6119, 7, 7, 0, 0, 6119, 1252, 1, 0, 0, 0, 6120, 6121, 7, 12, 0, 0, 6121, 6122, 7, 5, 0, 0, 6122, 6123, 7, 16, 0, 0, 6123, 6124, 7, 10, 0, 0, 6124, 6125, 5, 95, 0, 0, 6125, 6126, 7, 24, 0, 0, 6126, 6127, 7, 5, 0, 0, 6127, 6128, 7, 13, 0, 0, 6128, 6129, 7, 16, 0, 0, 6129, 1254, 1, 0, 0, 0, 6130, 6131, 7, 12, 0, 0, 6131, 6132, 7, 5, 0, 0, 6132, 6133, 7, 16, 0, 0, 6133, 6134, 7, 10, 0, 0, 6134, 6135, 5, 95, 0, 0, 6135, 6136, 7, 16, 0, 0, 6136, 6137, 7, 13, 0, 0, 6137, 6138, 7, 22, 0, 0, 6138, 6139, 7, 7, 0, 0, 6139, 6140, 7, 14, 0, 0, 6140, 1256, 1, 0, 0, 0, 6141, 6142, 7, 17, 0, 0, 6142, 6143, 7, 9, 0, 0, 6143, 6144, 7, 25, 0, 0, 6144, 6145, 7, 17, 0, 0, 6145, 6146, 7, 7, 0, 0, 6146, 6147, 7, 17, 0, 0, 6147, 6148, 7, 16, 0, 0, 6148, 6149, 7, 10, 0, 0, 6149, 1258, 1, 0, 0, 0, 6150, 6151, 7, 30, 0, 0, 6151, 6152, 7, 22, 0, 0, 6152, 6153, 7, 9, 0, 0, 6153, 6154, 7, 16, 0, 0, 6154, 6155, 7, 17, 0, 0, 6155, 6156, 7, 25, 0, 0, 6156, 6157, 7, 8, 0, 0, 6157, 6158, 5, 95, 0, 0, 6158, 6159, 7, 12, 0, 0, 6159, 6160, 7, 5, 0, 0, 6160, 6161, 7, 8, 0, 0, 6161, 6162, 7, 9, 0, 0, 6162, 1260, 1, 0, 0, 0, 6163, 6164, 7, 30, 0, 0, 6164, 6165, 7, 22, 0, 0, 6165, 6166, 7, 9, 0, 0, 6166, 6167, 7, 16, 0, 0, 6167, 6168, 7, 17, 0, 0, 6168, 6169, 7, 25, 0, 0, 6169, 6170, 7, 8, 0, 0, 6170, 6171, 5, 95, 0, 0, 6171, 6172, 7, 20, 0, 0, 6172, 6173, 7, 19, 0, 0, 6173, 6174, 7, 22, 0, 0, 6174, 6175, 7, 13, 0, 0, 6175, 6176, 7, 9, 0, 0, 6176, 1262, 1, 0, 0, 0, 6177, 6178, 7, 30, 0, 0, 6178, 6179, 7, 22, 0, 0, 6179, 6180, 7, 9, 0, 0, 6180, 6181, 7, 16, 0, 0, 6181, 6182, 7, 17, 0, 0, 6182, 6183, 7, 25, 0, 0, 6183, 6184, 7, 8, 0, 0, 6184, 6185, 5, 95, 0, 0, 6185, 6186, 7, 17, 0, 0, 6186, 6187, 7, 7, 0, 0, 6187, 6188, 7, 16, 0, 0, 6188, 6189, 7, 10, 0, 0, 6189, 6190, 7, 13, 0, 0, 6190, 6191, 7, 27, 0, 0, 6191, 6192, 7, 5, 0, 0, 6192, 6193, 7, 6, 0, 0, 6193, 1264, 1, 0, 0, 0, 6194, 6195, 7, 15, 0, 0, 6195, 6196, 7, 5, 0, 0, 6196, 6197, 7, 21, 0, 0, 6197, 6198, 7, 10, 0, 0, 6198, 6199, 5, 95, 0, 0, 6199, 6200, 7, 12, 0, 0, 6200, 6201, 7, 5, 0, 0, 6201, 6202, 7, 16, 0, 0, 6202, 6203, 7, 10, 0, 0, 6203, 1266, 1, 0, 0, 0, 6204, 6205, 7, 15, 0, 0, 6205, 6206, 7, 5, 0, 0, 6206, 6207, 7, 21, 0, 0, 6207, 6208, 7, 10, 0, 0, 6208, 6209, 5, 95, 0, 0, 6209, 6210, 7, 17, 0, 0, 6210, 6211, 7, 7, 0, 0, 6211, 6212, 7, 16, 0, 0, 6212, 6213, 7, 10, 0, 0, 6213, 6214, 7, 13, 0, 0, 6214, 6215, 7, 27, 0, 0, 6215, 6216, 7, 5, 0, 0, 6216, 6217, 7, 6, 0, 0, 6217, 1268, 1, 0, 0, 0, 6218, 6219, 7, 15, 0, 0, 6219, 6220, 7, 5, 0, 0, 6220, 6221, 7, 21, 0, 0, 6221, 6222, 7, 10, 0, 0, 6222, 6223, 5, 95, 0, 0, 6223, 6224, 7, 16, 0, 0, 6224, 6225, 7, 17, 0, 0, 6225, 6226, 7, 15, 0, 0, 6226, 6227, 7, 10, 0, 0, 6227, 1270, 1, 0, 0, 0, 6228, 6229, 7, 15, 0, 0, 6229, 6230, 7, 5, 0, 0, 6230, 6231, 7, 21, 0, 0, 6231, 6232, 7, 10, 0, 0, 6232, 6233, 5, 95, 0, 0, 6233, 6234, 7, 16, 0, 0, 6234, 6235, 7, 17, 0, 0, 6235, 6236, 7, 15, 0, 0, 6236, 6237, 7, 10, 0, 0, 6237, 6238, 7, 9, 0, 0, 6238, 6239, 7, 16, 0, 0, 6239, 6240, 7, 5, 0, 0, 6240, 6241, 7, 15, 0, 0, 6241, 6242, 7, 24, 0, 0, 6242, 1272, 1, 0, 0, 0, 6243, 6244, 7, 15, 0, 0, 6244, 6245, 7, 5, 0, 0, 6245, 6246, 7, 21, 0, 0, 6246, 6247, 7, 10, 0, 0, 6247, 6248, 5, 95, 0, 0, 6248, 6249, 7, 16, 0, 0, 6249, 6250, 7, 17, 0, 0, 6250, 6251, 7, 15, 0, 0, 6251, 6252, 7, 10, 0, 0, 6252, 6253, 7, 9, 0, 0, 6253, 6254, 7, 16, 0, 0, 6254, 6255, 7, 5, 0, 0, 6255, 6256, 7, 15, 0, 0, 6256, 6257, 7, 24, 0, 0, 6257, 6258, 7, 16, 0, 0, 6258, 6259, 7, 11, 0, 0, 6259, 1274, 1, 0, 0, 0, 6260, 6261, 7, 7, 0, 0, 6261, 6262, 7, 19, 0, 0, 6262, 6263, 7, 28, 0, 0, 6263, 1276, 1, 0, 0, 0, 6264, 6265, 7, 9, 0, 0, 6265, 6266, 7, 16, 0, 0, 6266, 6267, 7, 5, 0, 0, 6267, 6268, 7, 16, 0, 0, 6268, 6269, 7, 10, 0, 0, 6269, 6270, 7, 15, 0, 0, 6270, 6271, 7, 10, 0, 0, 6271, 6272, 7, 7, 0, 0, 6272, 6273, 7, 16, 0, 0, 6273, 6274, 5, 95, 0, 0, 6274, 6275, 7, 16, 0, 0, 6275, 6276, 7, 17, 0, 0, 6276, 6277, 7, 15, 0, 0, 6277, 6278, 7, 10, 0, 0, 6278, 6279, 7, 9, 0, 0, 6279, 6280, 7, 16, 0, 0, 6280, 6281, 7, 5, 0, 0, 6281, 6282, 7, 15, 0, 0, 6282, 6283, 7, 24, 0, 0, 6283, 1278, 1, 0, 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, 19, 0, 0, 6289, 6290, 7, 25, 0, 0, 6290, 6291, 7, 12, 0, 0, 6291, 6292, 7, 5, 0, 0, 6292, 6293, 7, 8, 0, 0, 6293, 1280, 1, 0, 0, 0, 6294, 6295, 7, 16, 0, 0, 6295, 6296, 7, 13, 0, 0, 6296, 6297, 7, 5, 0, 0, 6297, 6298, 7, 7, 0, 0, 6298, 6299, 7, 9, 0, 0, 6299, 6300, 7, 5, 0, 0, 6300, 6301, 7, 14, 0, 0, 6301, 6302, 7, 16, 0, 0, 6302, 6303, 7, 17, 0, 0, 6303, 6304, 7, 19, 0, 0, 6304, 6305, 7, 7, 0, 0, 6305, 6306, 5, 95, 0, 0, 6306, 6307, 7, 16, 0, 0, 6307, 6308, 7, 17, 0, 0, 6308, 6309, 7, 15, 0, 0, 6309, 6310, 7, 10, 0, 0, 6310, 6311, 7, 9, 0, 0, 6311, 6312, 7, 16, 0, 0, 6312, 6313, 7, 5, 0, 0, 6313, 6314, 7, 15, 0, 0, 6314, 6315, 7, 24, 0, 0, 6315, 1282, 1, 0, 0, 0, 6316, 6317, 7, 16, 0, 0, 6317, 6318, 7, 19, 0, 0, 6318, 6319, 5, 95, 0, 0, 6319, 6320, 7, 16, 0, 0, 6320, 6321, 7, 17, 0, 0, 6321, 6322, 7, 15, 0, 0, 6322, 6323, 7, 10, 0, 0, 6323, 6324, 7, 9, 0, 0, 6324, 6325, 7, 16, 0, 0, 6325, 6326, 7, 5, 0, 0, 6326, 6327, 7, 15, 0, 0, 6327, 6328, 7, 24, 0, 0, 6328, 1284, 1, 0, 0, 0, 6329, 6330, 7, 16, 0, 0, 6330, 6331, 7, 19, 0, 0, 6331, 6332, 5, 95, 0, 0, 6332, 6333, 7, 14, 0, 0, 6333, 6334, 7, 20, 0, 0, 6334, 6335, 7, 5, 0, 0, 6335, 6336, 7, 13, 0, 0, 6336, 1286, 1, 0, 0, 0, 6337, 6338, 7, 16, 0, 0, 6338, 6339, 7, 19, 0, 0, 6339, 6340, 5, 95, 0, 0, 6340, 6341, 7, 12, 0, 0, 6341, 6342, 7, 5, 0, 0, 6342, 6343, 7, 16, 0, 0, 6343, 6344, 7, 10, 0, 0, 6344, 1288, 1, 0, 0, 0, 6345, 6346, 7, 16, 0, 0, 6346, 6347, 7, 19, 0, 0, 6347, 6348, 5, 95, 0, 0, 6348, 6349, 7, 7, 0, 0, 6349, 6350, 7, 22, 0, 0, 6350, 6351, 7, 15, 0, 0, 6351, 6352, 7, 18, 0, 0, 6352, 6353, 7, 10, 0, 0, 6353, 6354, 7, 13, 0, 0, 6354, 1290, 1, 0, 0, 0, 6355, 6359, 3, 1293, 644, 0, 6356, 6358, 3, 1295, 645, 0, 6357, 6356, 1, 0, 0, 0, 6358, 6361, 1, 0, 0, 0, 6359, 6357, 1, 0, 0, 0, 6359, 6360, 1, 0, 0, 0, 6360, 1292, 1, 0, 0, 0, 6361, 6359, 1, 0, 0, 0, 6362, 6369, 7, 31, 0, 0, 6363, 6364, 7, 32, 0, 0, 6364, 6369, 4, 644, 6, 0, 6365, 6366, 7, 33, 0, 0, 6366, 6367, 7, 34, 0, 0, 6367, 6369, 4, 644, 7, 0, 6368, 6362, 1, 0, 0, 0, 6368, 6363, 1, 0, 0, 0, 6368, 6365, 1, 0, 0, 0, 6369, 1294, 1, 0, 0, 0, 6370, 6373, 3, 1297, 646, 0, 6371, 6373, 5, 36, 0, 0, 6372, 6370, 1, 0, 0, 0, 6372, 6371, 1, 0, 0, 0, 6373, 1296, 1, 0, 0, 0, 6374, 6377, 3, 1293, 644, 0, 6375, 6377, 7, 0, 0, 0, 6376, 6374, 1, 0, 0, 0, 6376, 6375, 1, 0, 0, 0, 6377, 1298, 1, 0, 0, 0, 6378, 6379, 3, 1301, 648, 0, 6379, 6380, 5, 34, 0, 0, 6380, 1300, 1, 0, 0, 0, 6381, 6387, 5, 34, 0, 0, 6382, 6383, 5, 34, 0, 0, 6383, 6386, 5, 34, 0, 0, 6384, 6386, 8, 35, 0, 0, 6385, 6382, 1, 0, 0, 0, 6385, 6384, 1, 0, 0, 0, 6386, 6389, 1, 0, 0, 0, 6387, 6385, 1, 0, 0, 0, 6387, 6388, 1, 0, 0, 0, 6388, 1302, 1, 0, 0, 0, 6389, 6387, 1, 0, 0, 0, 6390, 6391, 3, 1305, 650, 0, 6391, 6392, 5, 34, 0, 0, 6392, 1304, 1, 0, 0, 0, 6393, 6399, 5, 34, 0, 0, 6394, 6395, 5, 34, 0, 0, 6395, 6398, 5, 34, 0, 0, 6396, 6398, 8, 36, 0, 0, 6397, 6394, 1, 0, 0, 0, 6397, 6396, 1, 0, 0, 0, 6398, 6401, 1, 0, 0, 0, 6399, 6397, 1, 0, 0, 0, 6399, 6400, 1, 0, 0, 0, 6400, 1306, 1, 0, 0, 0, 6401, 6399, 1, 0, 0, 0, 6402, 6403, 7, 22, 0, 0, 6403, 6404, 5, 38, 0, 0, 6404, 6405, 3, 1299, 647, 0, 6405, 1308, 1, 0, 0, 0, 6406, 6407, 7, 22, 0, 0, 6407, 6408, 5, 38, 0, 0, 6408, 6409, 3, 1301, 648, 0, 6409, 1310, 1, 0, 0, 0, 6410, 6411, 7, 22, 0, 0, 6411, 6412, 5, 38, 0, 0, 6412, 6413, 3, 1303, 649, 0, 6413, 1312, 1, 0, 0, 0, 6414, 6415, 7, 22, 0, 0, 6415, 6416, 5, 38, 0, 0, 6416, 6417, 3, 1305, 650, 0, 6417, 1314, 1, 0, 0, 0, 6418, 6419, 3, 1317, 656, 0, 6419, 6420, 5, 39, 0, 0, 6420, 1316, 1, 0, 0, 0, 6421, 6427, 5, 39, 0, 0, 6422, 6423, 5, 39, 0, 0, 6423, 6426, 5, 39, 0, 0, 6424, 6426, 8, 37, 0, 0, 6425, 6422, 1, 0, 0, 0, 6425, 6424, 1, 0, 0, 0, 6426, 6429, 1, 0, 0, 0, 6427, 6425, 1, 0, 0, 0, 6427, 6428, 1, 0, 0, 0, 6428, 1318, 1, 0, 0, 0, 6429, 6427, 1, 0, 0, 0, 6430, 6431, 7, 10, 0, 0, 6431, 6432, 5, 39, 0, 0, 6432, 6433, 1, 0, 0, 0, 6433, 6434, 6, 657, 2, 0, 6434, 6435, 6, 657, 3, 0, 6435, 1320, 1, 0, 0, 0, 6436, 6437, 3, 1323, 659, 0, 6437, 6438, 5, 39, 0, 0, 6438, 1322, 1, 0, 0, 0, 6439, 6440, 7, 22, 0, 0, 6440, 6441, 5, 38, 0, 0, 6441, 6442, 3, 1317, 656, 0, 6442, 1324, 1, 0, 0, 0, 6443, 6445, 5, 36, 0, 0, 6444, 6446, 3, 1327, 661, 0, 6445, 6444, 1, 0, 0, 0, 6445, 6446, 1, 0, 0, 0, 6446, 6447, 1, 0, 0, 0, 6447, 6448, 5, 36, 0, 0, 6448, 6449, 6, 660, 4, 0, 6449, 6450, 1, 0, 0, 0, 6450, 6451, 6, 660, 5, 0, 6451, 1326, 1, 0, 0, 0, 6452, 6456, 3, 1293, 644, 0, 6453, 6455, 3, 1297, 646, 0, 6454, 6453, 1, 0, 0, 0, 6455, 6458, 1, 0, 0, 0, 6456, 6454, 1, 0, 0, 0, 6456, 6457, 1, 0, 0, 0, 6457, 1328, 1, 0, 0, 0, 6458, 6456, 1, 0, 0, 0, 6459, 6460, 3, 1331, 663, 0, 6460, 6461, 5, 39, 0, 0, 6461, 1330, 1, 0, 0, 0, 6462, 6463, 7, 18, 0, 0, 6463, 6467, 5, 39, 0, 0, 6464, 6466, 7, 38, 0, 0, 6465, 6464, 1, 0, 0, 0, 6466, 6469, 1, 0, 0, 0, 6467, 6465, 1, 0, 0, 0, 6467, 6468, 1, 0, 0, 0, 6468, 1332, 1, 0, 0, 0, 6469, 6467, 1, 0, 0, 0, 6470, 6471, 3, 1335, 665, 0, 6471, 6472, 5, 39, 0, 0, 6472, 1334, 1, 0, 0, 0, 6473, 6474, 7, 18, 0, 0, 6474, 6475, 3, 1317, 656, 0, 6475, 1336, 1, 0, 0, 0, 6476, 6477, 3, 1339, 667, 0, 6477, 6478, 5, 39, 0, 0, 6478, 1338, 1, 0, 0, 0, 6479, 6480, 7, 26, 0, 0, 6480, 6484, 5, 39, 0, 0, 6481, 6483, 7, 39, 0, 0, 6482, 6481, 1, 0, 0, 0, 6483, 6486, 1, 0, 0, 0, 6484, 6482, 1, 0, 0, 0, 6484, 6485, 1, 0, 0, 0, 6485, 1340, 1, 0, 0, 0, 6486, 6484, 1, 0, 0, 0, 6487, 6488, 3, 1343, 669, 0, 6488, 6489, 5, 39, 0, 0, 6489, 1342, 1, 0, 0, 0, 6490, 6491, 7, 26, 0, 0, 6491, 6492, 3, 1317, 656, 0, 6492, 1344, 1, 0, 0, 0, 6493, 6494, 3, 1351, 673, 0, 6494, 1346, 1, 0, 0, 0, 6495, 6496, 3, 1351, 673, 0, 6496, 6497, 5, 46, 0, 0, 6497, 6498, 5, 46, 0, 0, 6498, 6499, 1, 0, 0, 0, 6499, 6500, 6, 671, 6, 0, 6500, 1348, 1, 0, 0, 0, 6501, 6502, 3, 1351, 673, 0, 6502, 6504, 5, 46, 0, 0, 6503, 6505, 3, 1351, 673, 0, 6504, 6503, 1, 0, 0, 0, 6504, 6505, 1, 0, 0, 0, 6505, 6511, 1, 0, 0, 0, 6506, 6508, 7, 10, 0, 0, 6507, 6509, 7, 1, 0, 0, 6508, 6507, 1, 0, 0, 0, 6508, 6509, 1, 0, 0, 0, 6509, 6510, 1, 0, 0, 0, 6510, 6512, 3, 1351, 673, 0, 6511, 6506, 1, 0, 0, 0, 6511, 6512, 1, 0, 0, 0, 6512, 6530, 1, 0, 0, 0, 6513, 6514, 5, 46, 0, 0, 6514, 6520, 3, 1351, 673, 0, 6515, 6517, 7, 10, 0, 0, 6516, 6518, 7, 1, 0, 0, 6517, 6516, 1, 0, 0, 0, 6517, 6518, 1, 0, 0, 0, 6518, 6519, 1, 0, 0, 0, 6519, 6521, 3, 1351, 673, 0, 6520, 6515, 1, 0, 0, 0, 6520, 6521, 1, 0, 0, 0, 6521, 6530, 1, 0, 0, 0, 6522, 6523, 3, 1351, 673, 0, 6523, 6525, 7, 10, 0, 0, 6524, 6526, 7, 1, 0, 0, 6525, 6524, 1, 0, 0, 0, 6525, 6526, 1, 0, 0, 0, 6526, 6527, 1, 0, 0, 0, 6527, 6528, 3, 1351, 673, 0, 6528, 6530, 1, 0, 0, 0, 6529, 6501, 1, 0, 0, 0, 6529, 6513, 1, 0, 0, 0, 6529, 6522, 1, 0, 0, 0, 6530, 1350, 1, 0, 0, 0, 6531, 6533, 7, 0, 0, 0, 6532, 6531, 1, 0, 0, 0, 6533, 6534, 1, 0, 0, 0, 6534, 6532, 1, 0, 0, 0, 6534, 6535, 1, 0, 0, 0, 6535, 1352, 1, 0, 0, 0, 6536, 6537, 5, 58, 0, 0, 6537, 6541, 7, 40, 0, 0, 6538, 6540, 7, 41, 0, 0, 6539, 6538, 1, 0, 0, 0, 6540, 6543, 1, 0, 0, 0, 6541, 6539, 1, 0, 0, 0, 6541, 6542, 1, 0, 0, 0, 6542, 1354, 1, 0, 0, 0, 6543, 6541, 1, 0, 0, 0, 6544, 6545, 5, 58, 0, 0, 6545, 6546, 5, 34, 0, 0, 6546, 6554, 1, 0, 0, 0, 6547, 6548, 5, 92, 0, 0, 6548, 6553, 9, 0, 0, 0, 6549, 6550, 5, 34, 0, 0, 6550, 6553, 5, 34, 0, 0, 6551, 6553, 8, 42, 0, 0, 6552, 6547, 1, 0, 0, 0, 6552, 6549, 1, 0, 0, 0, 6552, 6551, 1, 0, 0, 0, 6553, 6556, 1, 0, 0, 0, 6554, 6552, 1, 0, 0, 0, 6554, 6555, 1, 0, 0, 0, 6555, 6557, 1, 0, 0, 0, 6556, 6554, 1, 0, 0, 0, 6557, 6558, 5, 34, 0, 0, 6558, 1356, 1, 0, 0, 0, 6559, 6561, 7, 43, 0, 0, 6560, 6559, 1, 0, 0, 0, 6561, 6562, 1, 0, 0, 0, 6562, 6560, 1, 0, 0, 0, 6562, 6563, 1, 0, 0, 0, 6563, 6564, 1, 0, 0, 0, 6564, 6565, 6, 676, 7, 0, 6565, 1358, 1, 0, 0, 0, 6566, 6568, 5, 13, 0, 0, 6567, 6569, 5, 10, 0, 0, 6568, 6567, 1, 0, 0, 0, 6568, 6569, 1, 0, 0, 0, 6569, 6572, 1, 0, 0, 0, 6570, 6572, 5, 10, 0, 0, 6571, 6566, 1, 0, 0, 0, 6571, 6570, 1, 0, 0, 0, 6572, 6573, 1, 0, 0, 0, 6573, 6574, 6, 677, 7, 0, 6574, 1360, 1, 0, 0, 0, 6575, 6576, 5, 45, 0, 0, 6576, 6577, 5, 45, 0, 0, 6577, 6581, 1, 0, 0, 0, 6578, 6580, 8, 44, 0, 0, 6579, 6578, 1, 0, 0, 0, 6580, 6583, 1, 0, 0, 0, 6581, 6579, 1, 0, 0, 0, 6581, 6582, 1, 0, 0, 0, 6582, 6584, 1, 0, 0, 0, 6583, 6581, 1, 0, 0, 0, 6584, 6585, 6, 678, 7, 0, 6585, 1362, 1, 0, 0, 0, 6586, 6587, 5, 47, 0, 0, 6587, 6588, 5, 42, 0, 0, 6588, 6611, 1, 0, 0, 0, 6589, 6591, 5, 47, 0, 0, 6590, 6589, 1, 0, 0, 0, 6591, 6594, 1, 0, 0, 0, 6592, 6590, 1, 0, 0, 0, 6592, 6593, 1, 0, 0, 0, 6593, 6595, 1, 0, 0, 0, 6594, 6592, 1, 0, 0, 0, 6595, 6610, 3, 1363, 679, 0, 6596, 6610, 8, 45, 0, 0, 6597, 6599, 5, 47, 0, 0, 6598, 6597, 1, 0, 0, 0, 6599, 6600, 1, 0, 0, 0, 6600, 6598, 1, 0, 0, 0, 6600, 6601, 1, 0, 0, 0, 6601, 6602, 1, 0, 0, 0, 6602, 6610, 8, 45, 0, 0, 6603, 6605, 5, 42, 0, 0, 6604, 6603, 1, 0, 0, 0, 6605, 6606, 1, 0, 0, 0, 6606, 6604, 1, 0, 0, 0, 6606, 6607, 1, 0, 0, 0, 6607, 6608, 1, 0, 0, 0, 6608, 6610, 8, 45, 0, 0, 6609, 6592, 1, 0, 0, 0, 6609, 6596, 1, 0, 0, 0, 6609, 6598, 1, 0, 0, 0, 6609, 6604, 1, 0, 0, 0, 6610, 6613, 1, 0, 0, 0, 6611, 6609, 1, 0, 0, 0, 6611, 6612, 1, 0, 0, 0, 6612, 6617, 1, 0, 0, 0, 6613, 6611, 1, 0, 0, 0, 6614, 6616, 5, 42, 0, 0, 6615, 6614, 1, 0, 0, 0, 6616, 6619, 1, 0, 0, 0, 6617, 6615, 1, 0, 0, 0, 6617, 6618, 1, 0, 0, 0, 6618, 6620, 1, 0, 0, 0, 6619, 6617, 1, 0, 0, 0, 6620, 6621, 5, 42, 0, 0, 6621, 6622, 5, 47, 0, 0, 6622, 6623, 1, 0, 0, 0, 6623, 6624, 6, 679, 7, 0, 6624, 1364, 1, 0, 0, 0, 6625, 6626, 5, 47, 0, 0, 6626, 6627, 5, 42, 0, 0, 6627, 6652, 1, 0, 0, 0, 6628, 6630, 5, 47, 0, 0, 6629, 6628, 1, 0, 0, 0, 6630, 6633, 1, 0, 0, 0, 6631, 6629, 1, 0, 0, 0, 6631, 6632, 1, 0, 0, 0, 6632, 6634, 1, 0, 0, 0, 6633, 6631, 1, 0, 0, 0, 6634, 6651, 3, 1363, 679, 0, 6635, 6651, 8, 45, 0, 0, 6636, 6638, 5, 47, 0, 0, 6637, 6636, 1, 0, 0, 0, 6638, 6639, 1, 0, 0, 0, 6639, 6637, 1, 0, 0, 0, 6639, 6640, 1, 0, 0, 0, 6640, 6641, 1, 0, 0, 0, 6641, 6649, 8, 45, 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, 6647, 1, 0, 0, 0, 6647, 6649, 8, 45, 0, 0, 6648, 6637, 1, 0, 0, 0, 6648, 6643, 1, 0, 0, 0, 6649, 6651, 1, 0, 0, 0, 6650, 6631, 1, 0, 0, 0, 6650, 6635, 1, 0, 0, 0, 6650, 6648, 1, 0, 0, 0, 6651, 6654, 1, 0, 0, 0, 6652, 6650, 1, 0, 0, 0, 6652, 6653, 1, 0, 0, 0, 6653, 6672, 1, 0, 0, 0, 6654, 6652, 1, 0, 0, 0, 6655, 6657, 5, 47, 0, 0, 6656, 6655, 1, 0, 0, 0, 6657, 6658, 1, 0, 0, 0, 6658, 6656, 1, 0, 0, 0, 6658, 6659, 1, 0, 0, 0, 6659, 6673, 1, 0, 0, 0, 6660, 6662, 5, 42, 0, 0, 6661, 6660, 1, 0, 0, 0, 6662, 6663, 1, 0, 0, 0, 6663, 6661, 1, 0, 0, 0, 6663, 6664, 1, 0, 0, 0, 6664, 6673, 1, 0, 0, 0, 6665, 6667, 5, 47, 0, 0, 6666, 6665, 1, 0, 0, 0, 6667, 6670, 1, 0, 0, 0, 6668, 6666, 1, 0, 0, 0, 6668, 6669, 1, 0, 0, 0, 6669, 6671, 1, 0, 0, 0, 6670, 6668, 1, 0, 0, 0, 6671, 6673, 3, 1365, 680, 0, 6672, 6656, 1, 0, 0, 0, 6672, 6661, 1, 0, 0, 0, 6672, 6668, 1, 0, 0, 0, 6672, 6673, 1, 0, 0, 0, 6673, 6674, 1, 0, 0, 0, 6674, 6675, 6, 680, 8, 0, 6675, 1366, 1, 0, 0, 0, 6676, 6688, 5, 92, 0, 0, 6677, 6687, 8, 46, 0, 0, 6678, 6682, 5, 34, 0, 0, 6679, 6681, 8, 47, 0, 0, 6680, 6679, 1, 0, 0, 0, 6681, 6684, 1, 0, 0, 0, 6682, 6680, 1, 0, 0, 0, 6682, 6683, 1, 0, 0, 0, 6683, 6685, 1, 0, 0, 0, 6684, 6682, 1, 0, 0, 0, 6685, 6687, 5, 34, 0, 0, 6686, 6677, 1, 0, 0, 0, 6686, 6678, 1, 0, 0, 0, 6687, 6690, 1, 0, 0, 0, 6688, 6686, 1, 0, 0, 0, 6688, 6689, 1, 0, 0, 0, 6689, 6698, 1, 0, 0, 0, 6690, 6688, 1, 0, 0, 0, 6691, 6695, 5, 34, 0, 0, 6692, 6694, 8, 47, 0, 0, 6693, 6692, 1, 0, 0, 0, 6694, 6697, 1, 0, 0, 0, 6695, 6693, 1, 0, 0, 0, 6695, 6696, 1, 0, 0, 0, 6696, 6699, 1, 0, 0, 0, 6697, 6695, 1, 0, 0, 0, 6698, 6691, 1, 0, 0, 0, 6698, 6699, 1, 0, 0, 0, 6699, 1368, 1, 0, 0, 0, 6700, 6701, 5, 92, 0, 0, 6701, 6702, 5, 92, 0, 0, 6702, 1370, 1, 0, 0, 0, 6703, 6704, 9, 0, 0, 0, 6704, 1372, 1, 0, 0, 0, 6705, 6706, 3, 1377, 686, 0, 6706, 6707, 5, 39, 0, 0, 6707, 6708, 1, 0, 0, 0, 6708, 6709, 6, 684, 9, 0, 6709, 1374, 1, 0, 0, 0, 6710, 6712, 3, 1377, 686, 0, 6711, 6713, 5, 92, 0, 0, 6712, 6711, 1, 0, 0, 0, 6712, 6713, 1, 0, 0, 0, 6713, 6714, 1, 0, 0, 0, 6714, 6715, 5, 0, 0, 1, 6715, 1376, 1, 0, 0, 0, 6716, 6717, 5, 39, 0, 0, 6717, 6740, 5, 39, 0, 0, 6718, 6736, 5, 92, 0, 0, 6719, 6720, 5, 120, 0, 0, 6720, 6737, 7, 39, 0, 0, 6721, 6722, 5, 117, 0, 0, 6722, 6723, 7, 39, 0, 0, 6723, 6724, 7, 39, 0, 0, 6724, 6725, 7, 39, 0, 0, 6725, 6737, 7, 39, 0, 0, 6726, 6727, 5, 85, 0, 0, 6727, 6728, 7, 39, 0, 0, 6728, 6729, 7, 39, 0, 0, 6729, 6730, 7, 39, 0, 0, 6730, 6731, 7, 39, 0, 0, 6731, 6732, 7, 39, 0, 0, 6732, 6733, 7, 39, 0, 0, 6733, 6734, 7, 39, 0, 0, 6734, 6737, 7, 39, 0, 0, 6735, 6737, 8, 48, 0, 0, 6736, 6719, 1, 0, 0, 0, 6736, 6721, 1, 0, 0, 0, 6736, 6726, 1, 0, 0, 0, 6736, 6735, 1, 0, 0, 0, 6737, 6740, 1, 0, 0, 0, 6738, 6740, 8, 49, 0, 0, 6739, 6716, 1, 0, 0, 0, 6739, 6718, 1, 0, 0, 0, 6739, 6738, 1, 0, 0, 0, 6740, 6743, 1, 0, 0, 0, 6741, 6739, 1, 0, 0, 0, 6741, 6742, 1, 0, 0, 0, 6742, 1378, 1, 0, 0, 0, 6743, 6741, 1, 0, 0, 0, 6744, 6745, 3, 1383, 689, 0, 6745, 6746, 5, 39, 0, 0, 6746, 6747, 1, 0, 0, 0, 6747, 6748, 6, 687, 9, 0, 6748, 1380, 1, 0, 0, 0, 6749, 6751, 3, 1383, 689, 0, 6750, 6752, 5, 92, 0, 0, 6751, 6750, 1, 0, 0, 0, 6751, 6752, 1, 0, 0, 0, 6752, 6753, 1, 0, 0, 0, 6753, 6754, 5, 0, 0, 1, 6754, 1382, 1, 0, 0, 0, 6755, 6756, 5, 39, 0, 0, 6756, 6761, 5, 39, 0, 0, 6757, 6758, 5, 92, 0, 0, 6758, 6761, 9, 0, 0, 0, 6759, 6761, 8, 49, 0, 0, 6760, 6755, 1, 0, 0, 0, 6760, 6757, 1, 0, 0, 0, 6760, 6759, 1, 0, 0, 0, 6761, 6764, 1, 0, 0, 0, 6762, 6760, 1, 0, 0, 0, 6762, 6763, 1, 0, 0, 0, 6763, 1384, 1, 0, 0, 0, 6764, 6762, 1, 0, 0, 0, 6765, 6766, 3, 1357, 676, 0, 6766, 6767, 1, 0, 0, 0, 6767, 6768, 6, 690, 10, 0, 6768, 6769, 6, 690, 7, 0, 6769, 1386, 1, 0, 0, 0, 6770, 6771, 3, 1359, 677, 0, 6771, 6772, 1, 0, 0, 0, 6772, 6773, 6, 691, 11, 0, 6773, 6774, 6, 691, 7, 0, 6774, 6775, 6, 691, 12, 0, 6775, 1388, 1, 0, 0, 0, 6776, 6777, 6, 692, 13, 0, 6777, 6778, 1, 0, 0, 0, 6778, 6779, 6, 692, 14, 0, 6779, 6780, 6, 692, 15, 0, 6780, 1390, 1, 0, 0, 0, 6781, 6782, 3, 1357, 676, 0, 6782, 6783, 1, 0, 0, 0, 6783, 6784, 6, 693, 10, 0, 6784, 6785, 6, 693, 7, 0, 6785, 1392, 1, 0, 0, 0, 6786, 6787, 3, 1359, 677, 0, 6787, 6788, 1, 0, 0, 0, 6788, 6789, 6, 694, 11, 0, 6789, 6790, 6, 694, 7, 0, 6790, 1394, 1, 0, 0, 0, 6791, 6792, 5, 39, 0, 0, 6792, 6793, 1, 0, 0, 0, 6793, 6794, 6, 695, 2, 0, 6794, 6795, 6, 695, 16, 0, 6795, 1396, 1, 0, 0, 0, 6796, 6797, 6, 696, 17, 0, 6797, 6798, 1, 0, 0, 0, 6798, 6799, 6, 696, 14, 0, 6799, 6800, 6, 696, 15, 0, 6800, 1398, 1, 0, 0, 0, 6801, 6803, 8, 50, 0, 0, 6802, 6801, 1, 0, 0, 0, 6803, 6804, 1, 0, 0, 0, 6804, 6802, 1, 0, 0, 0, 6804, 6805, 1, 0, 0, 0, 6805, 6814, 1, 0, 0, 0, 6806, 6810, 5, 36, 0, 0, 6807, 6809, 8, 50, 0, 0, 6808, 6807, 1, 0, 0, 0, 6809, 6812, 1, 0, 0, 0, 6810, 6808, 1, 0, 0, 0, 6810, 6811, 1, 0, 0, 0, 6811, 6814, 1, 0, 0, 0, 6812, 6810, 1, 0, 0, 0, 6813, 6802, 1, 0, 0, 0, 6813, 6806, 1, 0, 0, 0, 6814, 1400, 1, 0, 0, 0, 6815, 6817, 5, 36, 0, 0, 6816, 6818, 3, 1327, 661, 0, 6817, 6816, 1, 0, 0, 0, 6817, 6818, 1, 0, 0, 0, 6818, 6819, 1, 0, 0, 0, 6819, 6820, 5, 36, 0, 0, 6820, 6821, 1, 0, 0, 0, 6821, 6822, 4, 698, 8, 0, 6822, 6823, 6, 698, 18, 0, 6823, 6824, 1, 0, 0, 0, 6824, 6825, 6, 698, 15, 0, 6825, 1402, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1470, 1476, 1478, 1483, 1487, 1489, 1492, 1501, 1503, 1508, 1513, 1515, 6359, 6368, 6372, 6376, 6385, 6387, 6397, 6399, 6425, 6427, 6445, 6456, 6467, 6484, 6504, 6508, 6511, 6517, 6520, 6525, 6529, 6534, 6541, 6552, 6554, 6562, 6568, 6571, 6581, 6592, 6600, 6606, 6609, 6611, 6617, 6631, 6639, 6645, 6648, 6650, 6652, 6658, 6663, 6668, 6672, 6682, 6686, 6688, 6695, 6698, 6712, 6736, 6739, 6741, 6751, 6760, 6762, 6804, 6810, 6813, 6817, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 660, 1, 5, 4, 0, 1, 671, 2, 0, 1, 0, 1, 680, 3, 2, 2, 0, 7, 667, 0, 7, 668, 0, 2, 3, 0, 1, 692, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 696, 5, 1, 698, 6] \ No newline at end of file diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.tokens b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.tokens deleted file mode 100644 index f4fcecb0e8..0000000000 --- a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.tokens +++ /dev/null @@ -1,1322 +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 -ZSTREAM=96 -ZTABLE=97 -ZVIEW=98 -TRAILING=99 -TRUE_P=100 -UNION=101 -UNIQUE=102 -USER=103 -USING=104 -VARIADIC=105 -WHEN=106 -WHERE=107 -WINDOW=108 -WITH=109 -AUTHORIZATION=110 -BINARY=111 -COLLATION=112 -CONCURRENTLY=113 -CROSS=114 -CURRENT_SCHEMA=115 -FREEZE=116 -FULL=117 -ILIKE=118 -INNER_P=119 -IS=120 -ISNULL=121 -JOIN=122 -LEFT=123 -LIKE=124 -NATURAL=125 -NOTNULL=126 -OUTER_P=127 -OVER=128 -OVERLAPS=129 -RIGHT=130 -SIMILAR=131 -VERBOSE=132 -ABORT_P=133 -ABSOLUTE_P=134 -ACCESS=135 -ACTION=136 -ADD_P=137 -ADMIN=138 -AFTER=139 -AGGREGATE=140 -ALSO=141 -ALTER=142 -ALWAYS=143 -ASSERTION=144 -ASSIGNMENT=145 -AT=146 -ATTRIBUTE=147 -BACKWARD=148 -BEFORE=149 -BEGIN_P=150 -BY=151 -CACHE=152 -CALLED=153 -CASCADE=154 -CASCADED=155 -CATALOG=156 -CHAIN=157 -CHARACTERISTICS=158 -CHECKPOINT=159 -CLASS=160 -CLOSE=161 -CLUSTER=162 -COMMENT=163 -COMMENTS=164 -COMMIT=165 -COMMITTED=166 -CONFIGURATION=167 -CONNECTION=168 -CONSTRAINTS=169 -CONTENT_P=170 -CONTINUE_P=171 -CONVERSION_P=172 -COPY=173 -COST=174 -CSV=175 -CURSOR=176 -CYCLE=177 -DATA_P=178 -DATABASE=179 -DAY_P=180 -DEALLOCATE=181 -DECLARE=182 -DEFAULTS=183 -DEFERRED=184 -DEFINER=185 -DELETE_P=186 -DELIMITER=187 -DELIMITERS=188 -DICTIONARY=189 -DISABLE_P=190 -DISCARD=191 -DOCUMENT_P=192 -DOMAIN_P=193 -DOUBLE_P=194 -DROP=195 -EACH=196 -ENABLE_P=197 -ENCODING=198 -ENCRYPTED=199 -ENUM_P=200 -ESCAPE=201 -EVENT=202 -EXCLUDE=203 -EXCLUDING=204 -EXCLUSIVE=205 -EXECUTE=206 -EXPLAIN=207 -EXTENSION=208 -EXTERNAL=209 -FAMILY=210 -FIRST_P=211 -FOLLOWING=212 -FORCE=213 -FORWARD=214 -FUNCTION=215 -FUNCTIONS=216 -GLOBAL=217 -GRANTED=218 -HANDLER=219 -HEADER_P=220 -HOLD=221 -HOUR_P=222 -IDENTITY_P=223 -IF_P=224 -IMMEDIATE=225 -IMMUTABLE=226 -IMPLICIT_P=227 -INCLUDING=228 -INCREMENT=229 -INDEX=230 -INDEXES=231 -INHERIT=232 -INHERITS=233 -INLINE_P=234 -INSENSITIVE=235 -INSERT=236 -INSTEAD=237 -INVOKER=238 -ISOLATION=239 -KEY=240 -LABEL=241 -LANGUAGE=242 -LARGE_P=243 -LAST_P=244 -LEAKPROOF=245 -LEVEL=246 -LISTEN=247 -LOAD=248 -LOCAL=249 -LOCATION=250 -LOCK_P=251 -MAPPING=252 -MATCH=253 -MATCHED=254 -MATERIALIZED=255 -MAXVALUE=256 -MERGE=257 -MINUTE_P=258 -MINVALUE=259 -MODE=260 -MONTH_P=261 -MOVE=262 -NAME_P=263 -NAMES=264 -NEXT=265 -NO=266 -NOTHING=267 -NOTIFY=268 -NOWAIT=269 -NULLS_P=270 -OBJECT_P=271 -OF=272 -OFF=273 -OIDS=274 -OPERATOR=275 -OPTION=276 -OPTIONS=277 -OWNED=278 -OWNER=279 -PARSER=280 -PARTIAL=281 -PARTITION=282 -PASSING=283 -PASSWORD=284 -PLANS=285 -PRECEDING=286 -PREPARE=287 -PREPARED=288 -PRESERVE=289 -PRIOR=290 -PRIVILEGES=291 -PROCEDURAL=292 -PROCEDURE=293 -PROGRAM=294 -QUOTE=295 -RANGE=296 -READ=297 -REASSIGN=298 -RECHECK=299 -RECURSIVE=300 -REF=301 -REFRESH=302 -REINDEX=303 -RELATIVE_P=304 -RELEASE=305 -RENAME=306 -REPEATABLE=307 -REPLACE=308 -REPLICA=309 -RESET=310 -RESTART=311 -RESTRICT=312 -RETURNS=313 -REVOKE=314 -ROLE=315 -ROLLBACK=316 -ROWS=317 -RULE=318 -SAVEPOINT=319 -SCHEMA=320 -SCROLL=321 -SEARCH=322 -SECOND_P=323 -SECURITY=324 -SEQUENCE=325 -SEQUENCES=326 -SERIALIZABLE=327 -SERVER=328 -SESSION=329 -SET=330 -SHARE=331 -SHOW=332 -SIMPLE=333 -SNAPSHOT=334 -STABLE=335 -STANDALONE_P=336 -START=337 -STATEMENT=338 -STATISTICS=339 -STDIN=340 -STDOUT=341 -STORAGE=342 -STRICT_P=343 -STRIP_P=344 -SYSID=345 -SYSTEM_P=346 -TABLES=347 -TABLESPACE=348 -TEMP=349 -TEMPLATE=350 -TEMPORARY=351 -TEXT_P=352 -TRANSACTION=353 -TRIGGER=354 -TRUNCATE=355 -TRUSTED=356 -TYPE_P=357 -TYPES_P=358 -UNBOUNDED=359 -UNCOMMITTED=360 -UNENCRYPTED=361 -UNKNOWN=362 -UNLISTEN=363 -UNLOGGED=364 -UNTIL=365 -UPDATE=366 -VACUUM=367 -VALID=368 -VALIDATE=369 -VALIDATOR=370 -VARYING=371 -VERSION_P=372 -VIEW=373 -VOLATILE=374 -WHITESPACE_P=375 -WITHOUT=376 -WORK=377 -WRAPPER=378 -WRITE=379 -XML_P=380 -YEAR_P=381 -YES_P=382 -ZONE=383 -BETWEEN=384 -BIGINT=385 -BIT=386 -BOOLEAN_P=387 -CHAR_P=388 -CHARACTER=389 -COALESCE=390 -DEC=391 -DECIMAL_P=392 -EXISTS=393 -EXTRACT=394 -FLOAT_P=395 -GREATEST=396 -INOUT=397 -INT_P=398 -INTEGER=399 -INTERVAL=400 -LEAST=401 -NATIONAL=402 -NCHAR=403 -NONE=404 -NULLIF=405 -NUMERIC=406 -OVERLAY=407 -POSITION=408 -PRECISION=409 -REAL=410 -ROW=411 -SETOF=412 -SMALLINT=413 -SUBSTRING=414 -TIME=415 -TIMESTAMP=416 -TREAT=417 -TRIM=418 -VALUES=419 -VARCHAR=420 -XMLATTRIBUTES=421 -XMLCOMMENT=422 -XMLAGG=423 -XML_IS_WELL_FORMED=424 -XML_IS_WELL_FORMED_DOCUMENT=425 -XML_IS_WELL_FORMED_CONTENT=426 -XPATH=427 -XPATH_EXISTS=428 -XMLCONCAT=429 -XMLELEMENT=430 -XMLEXISTS=431 -XMLFOREST=432 -XMLPARSE=433 -XMLPI=434 -XMLROOT=435 -XMLSERIALIZE=436 -CALL=437 -CURRENT_P=438 -ATTACH=439 -DETACH=440 -EXPRESSION=441 -GENERATED=442 -LOGGED=443 -STORED=444 -INCLUDE=445 -ROUTINE=446 -TRANSFORM=447 -IMPORT_P=448 -POLICY=449 -METHOD=450 -REFERENCING=451 -NEW=452 -OLD=453 -VALUE_P=454 -SUBSCRIPTION=455 -PUBLICATION=456 -OUT_P=457 -END_P=458 -ROUTINES=459 -SCHEMAS=460 -PROCEDURES=461 -INPUT_P=462 -SUPPORT=463 -PARALLEL=464 -SQL_P=465 -DEPENDS=466 -OVERRIDING=467 -CONFLICT=468 -SKIP_P=469 -LOCKED=470 -TIES=471 -ROLLUP=472 -CUBE=473 -GROUPING=474 -SETS=475 -TABLESAMPLE=476 -ORDINALITY=477 -XMLTABLE=478 -COLUMNS=479 -XMLNAMESPACES=480 -ROWTYPE=481 -NORMALIZED=482 -WITHIN=483 -FILTER=484 -GROUPS=485 -OTHERS=486 -NFC=487 -NFD=488 -NFKC=489 -NFKD=490 -UESCAPE=491 -VIEWS=492 -NORMALIZE=493 -DUMP=494 -PRINT_STRICT_PARAMS=495 -VARIABLE_CONFLICT=496 -ERROR=497 -USE_VARIABLE=498 -USE_COLUMN=499 -ALIAS=500 -CONSTANT=501 -PERFORM=502 -GET=503 -DIAGNOSTICS=504 -STACKED=505 -ELSIF=506 -WHILE=507 -REVERSE=508 -FOREACH=509 -SLICE=510 -EXIT=511 -RETURN=512 -QUERY=513 -RAISE=514 -SQLSTATE=515 -DEBUG=516 -LOG=517 -INFO=518 -NOTICE=519 -WARNING=520 -EXCEPTION=521 -ASSERT=522 -LOOP=523 -OPEN=524 -ABS=525 -CBRT=526 -CEIL=527 -CEILING=528 -DEGREES=529 -DIV=530 -EXP=531 -FACTORIAL=532 -FLOOR=533 -GCD=534 -LCM=535 -LN=536 -LOG10=537 -MIN_SCALE=538 -MOD=539 -PI=540 -POWER=541 -RADIANS=542 -ROUND=543 -SCALE=544 -SIGN=545 -SQRT=546 -TRIM_SCALE=547 -TRUNC=548 -WIDTH_BUCKET=549 -RANDOM=550 -SETSEED=551 -ACOS=552 -ACOSD=553 -ASIN=554 -ASIND=555 -ATAN=556 -ATAND=557 -ATAN2=558 -ATAN2D=559 -COS=560 -COSD=561 -COT=562 -COTD=563 -SIN=564 -SIND=565 -TAN=566 -TAND=567 -SINH=568 -COSH=569 -TANH=570 -ASINH=571 -ACOSH=572 -ATANH=573 -BIT_LENGTH=574 -CHAR_LENGTH=575 -CHARACTER_LENGTH=576 -LOWER=577 -OCTET_LENGTH=578 -UPPER=579 -ASCII=580 -BTRIM=581 -CHR=582 -CONCAT=583 -CONCAT_WS=584 -FORMAT=585 -INITCAP=586 -LENGTH=587 -LPAD=588 -LTRIM=589 -MD5=590 -PARSE_IDENT=591 -PG_CLIENT_ENCODING=592 -QUOTE_IDENT=593 -QUOTE_LITERAL=594 -QUOTE_NULLABLE=595 -REGEXP_COUNT=596 -REGEXP_INSTR=597 -REGEXP_LIKE=598 -REGEXP_MATCH=599 -REGEXP_MATCHES=600 -REGEXP_REPLACE=601 -REGEXP_SPLIT_TO_ARRAY=602 -REGEXP_SPLIT_TO_TABLE=603 -REGEXP_SUBSTR=604 -REPEAT=605 -RPAD=606 -RTRIM=607 -SPLIT_PART=608 -STARTS_WITH=609 -STRING_TO_ARRAY=610 -STRING_TO_TABLE=611 -STRPOS=612 -SUBSTR=613 -TO_ASCII=614 -TO_HEX=615 -TRANSLATE=616 -UNISTR=617 -AGE=618 -CLOCK_TIMESTAMP=619 -DATE_BIN=620 -DATE_PART=621 -DATE_TRUNC=622 -ISFINITE=623 -JUSTIFY_DAYS=624 -JUSTIFY_HOURS=625 -JUSTIFY_INTERVAL=626 -MAKE_DATE=627 -MAKE_INTERVAL=628 -MAKE_TIME=629 -MAKE_TIMESTAMP=630 -MAKE_TIMESTAMPTZ=631 -NOW=632 -STATEMENT_TIMESTAMP=633 -TIMEOFDAY=634 -TRANSACTION_TIMESTAMP=635 -TO_TIMESTAMP=636 -TO_CHAR=637 -TO_DATE=638 -TO_NUMBER=639 -Identifier=640 -QuotedIdentifier=641 -UnterminatedQuotedIdentifier=642 -InvalidQuotedIdentifier=643 -InvalidUnterminatedQuotedIdentifier=644 -UnicodeQuotedIdentifier=645 -UnterminatedUnicodeQuotedIdentifier=646 -InvalidUnicodeQuotedIdentifier=647 -InvalidUnterminatedUnicodeQuotedIdentifier=648 -StringConstant=649 -UnterminatedStringConstant=650 -UnicodeEscapeStringConstant=651 -UnterminatedUnicodeEscapeStringConstant=652 -BeginDollarStringConstant=653 -BinaryStringConstant=654 -UnterminatedBinaryStringConstant=655 -InvalidBinaryStringConstant=656 -InvalidUnterminatedBinaryStringConstant=657 -HexadecimalStringConstant=658 -UnterminatedHexadecimalStringConstant=659 -InvalidHexadecimalStringConstant=660 -InvalidUnterminatedHexadecimalStringConstant=661 -Integral=662 -NumericFail=663 -Numeric=664 -PLSQLVARIABLENAME=665 -PLSQLIDENTIFIER=666 -Whitespace=667 -Newline=668 -LineComment=669 -BlockComment=670 -UnterminatedBlockComment=671 -MetaCommand=672 -EndMetaCommand=673 -ErrorCharacter=674 -EscapeStringConstant=675 -UnterminatedEscapeStringConstant=676 -InvalidEscapeStringConstant=677 -InvalidUnterminatedEscapeStringConstant=678 -AfterEscapeStringConstantMode_NotContinued=679 -AfterEscapeStringConstantWithNewlineMode_NotContinued=680 -DollarText=681 -EndDollarStringConstant=682 -AfterEscapeStringConstantWithNewlineMode_Continued=683 -'$'=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 -'ZSTREAM'=96 -'ZTABLE'=97 -'ZVIEW'=98 -'TRAILING'=99 -'TRUE'=100 -'UNION'=101 -'UNIQUE'=102 -'USER'=103 -'USING'=104 -'VARIADIC'=105 -'WHEN'=106 -'WHERE'=107 -'WINDOW'=108 -'WITH'=109 -'AUTHORIZATION'=110 -'BINARY'=111 -'COLLATION'=112 -'CONCURRENTLY'=113 -'CROSS'=114 -'CURRENT_SCHEMA'=115 -'FREEZE'=116 -'FULL'=117 -'ILIKE'=118 -'INNER'=119 -'IS'=120 -'ISNULL'=121 -'JOIN'=122 -'LEFT'=123 -'LIKE'=124 -'NATURAL'=125 -'NOTNULL'=126 -'OUTER'=127 -'OVER'=128 -'OVERLAPS'=129 -'RIGHT'=130 -'SIMILAR'=131 -'VERBOSE'=132 -'ABORT'=133 -'ABSOLUTE'=134 -'ACCESS'=135 -'ACTION'=136 -'ADD'=137 -'ADMIN'=138 -'AFTER'=139 -'AGGREGATE'=140 -'ALSO'=141 -'ALTER'=142 -'ALWAYS'=143 -'ASSERTION'=144 -'ASSIGNMENT'=145 -'AT'=146 -'ATTRIBUTE'=147 -'BACKWARD'=148 -'BEFORE'=149 -'BEGIN'=150 -'BY'=151 -'CACHE'=152 -'CALLED'=153 -'CASCADE'=154 -'CASCADED'=155 -'CATALOG'=156 -'CHAIN'=157 -'CHARACTERISTICS'=158 -'CHECKPOINT'=159 -'CLASS'=160 -'CLOSE'=161 -'CLUSTER'=162 -'COMMENT'=163 -'COMMENTS'=164 -'COMMIT'=165 -'COMMITTED'=166 -'CONFIGURATION'=167 -'CONNECTION'=168 -'CONSTRAINTS'=169 -'CONTENT'=170 -'CONTINUE'=171 -'CONVERSION'=172 -'COPY'=173 -'COST'=174 -'CSV'=175 -'CURSOR'=176 -'CYCLE'=177 -'DATA'=178 -'DATABASE'=179 -'DAY'=180 -'DEALLOCATE'=181 -'DECLARE'=182 -'DEFAULTS'=183 -'DEFERRED'=184 -'DEFINER'=185 -'DELETE'=186 -'DELIMITER'=187 -'DELIMITERS'=188 -'DICTIONARY'=189 -'DISABLE'=190 -'DISCARD'=191 -'DOCUMENT'=192 -'DOMAIN'=193 -'DOUBLE'=194 -'DROP'=195 -'EACH'=196 -'ENABLE'=197 -'ENCODING'=198 -'ENCRYPTED'=199 -'ENUM'=200 -'ESCAPE'=201 -'EVENT'=202 -'EXCLUDE'=203 -'EXCLUDING'=204 -'EXCLUSIVE'=205 -'EXECUTE'=206 -'EXPLAIN'=207 -'EXTENSION'=208 -'EXTERNAL'=209 -'FAMILY'=210 -'FIRST'=211 -'FOLLOWING'=212 -'FORCE'=213 -'FORWARD'=214 -'FUNCTION'=215 -'FUNCTIONS'=216 -'GLOBAL'=217 -'GRANTED'=218 -'HANDLER'=219 -'HEADER'=220 -'HOLD'=221 -'HOUR'=222 -'IDENTITY'=223 -'IF'=224 -'IMMEDIATE'=225 -'IMMUTABLE'=226 -'IMPLICIT'=227 -'INCLUDING'=228 -'INCREMENT'=229 -'INDEX'=230 -'INDEXES'=231 -'INHERIT'=232 -'INHERITS'=233 -'INLINE'=234 -'INSENSITIVE'=235 -'INSERT'=236 -'INSTEAD'=237 -'INVOKER'=238 -'ISOLATION'=239 -'KEY'=240 -'LABEL'=241 -'LANGUAGE'=242 -'LARGE'=243 -'LAST'=244 -'LEAKPROOF'=245 -'LEVEL'=246 -'LISTEN'=247 -'LOAD'=248 -'LOCAL'=249 -'LOCATION'=250 -'LOCK'=251 -'MAPPING'=252 -'MATCH'=253 -'MATCHED'=254 -'MATERIALIZED'=255 -'MAXVALUE'=256 -'MERGE'=257 -'MINUTE'=258 -'MINVALUE'=259 -'MODE'=260 -'MONTH'=261 -'MOVE'=262 -'NAME'=263 -'NAMES'=264 -'NEXT'=265 -'NO'=266 -'NOTHING'=267 -'NOTIFY'=268 -'NOWAIT'=269 -'NULLS'=270 -'OBJECT'=271 -'OF'=272 -'OFF'=273 -'OIDS'=274 -'OPERATOR'=275 -'OPTION'=276 -'OPTIONS'=277 -'OWNED'=278 -'OWNER'=279 -'PARSER'=280 -'PARTIAL'=281 -'PARTITION'=282 -'PASSING'=283 -'PASSWORD'=284 -'PLANS'=285 -'PRECEDING'=286 -'PREPARE'=287 -'PREPARED'=288 -'PRESERVE'=289 -'PRIOR'=290 -'PRIVILEGES'=291 -'PROCEDURAL'=292 -'PROCEDURE'=293 -'PROGRAM'=294 -'QUOTE'=295 -'RANGE'=296 -'READ'=297 -'REASSIGN'=298 -'RECHECK'=299 -'RECURSIVE'=300 -'REF'=301 -'REFRESH'=302 -'REINDEX'=303 -'RELATIVE'=304 -'RELEASE'=305 -'RENAME'=306 -'REPEATABLE'=307 -'REPLACE'=308 -'REPLICA'=309 -'RESET'=310 -'RESTART'=311 -'RESTRICT'=312 -'RETURNS'=313 -'REVOKE'=314 -'ROLE'=315 -'ROLLBACK'=316 -'ROWS'=317 -'RULE'=318 -'SAVEPOINT'=319 -'SCHEMA'=320 -'SCROLL'=321 -'SEARCH'=322 -'SECOND'=323 -'SECURITY'=324 -'SEQUENCE'=325 -'SEQUENCES'=326 -'SERIALIZABLE'=327 -'SERVER'=328 -'SESSION'=329 -'SET'=330 -'SHARE'=331 -'SHOW'=332 -'SIMPLE'=333 -'SNAPSHOT'=334 -'STABLE'=335 -'STANDALONE'=336 -'START'=337 -'STATEMENT'=338 -'STATISTICS'=339 -'STDIN'=340 -'STDOUT'=341 -'STORAGE'=342 -'STRICT'=343 -'STRIP'=344 -'SYSID'=345 -'SYSTEM'=346 -'TABLES'=347 -'TABLESPACE'=348 -'TEMP'=349 -'TEMPLATE'=350 -'TEMPORARY'=351 -'TEXT'=352 -'TRANSACTION'=353 -'TRIGGER'=354 -'TRUNCATE'=355 -'TRUSTED'=356 -'TYPE'=357 -'TYPES'=358 -'UNBOUNDED'=359 -'UNCOMMITTED'=360 -'UNENCRYPTED'=361 -'UNKNOWN'=362 -'UNLISTEN'=363 -'UNLOGGED'=364 -'UNTIL'=365 -'UPDATE'=366 -'VACUUM'=367 -'VALID'=368 -'VALIDATE'=369 -'VALIDATOR'=370 -'VARYING'=371 -'VERSION'=372 -'VIEW'=373 -'VOLATILE'=374 -'WHITESPACE'=375 -'WITHOUT'=376 -'WORK'=377 -'WRAPPER'=378 -'WRITE'=379 -'XML'=380 -'YEAR'=381 -'YES'=382 -'ZONE'=383 -'BETWEEN'=384 -'BIGINT'=385 -'BIT'=386 -'BOOLEAN'=387 -'CHAR'=388 -'CHARACTER'=389 -'COALESCE'=390 -'DEC'=391 -'DECIMAL'=392 -'EXISTS'=393 -'EXTRACT'=394 -'FLOAT'=395 -'GREATEST'=396 -'INOUT'=397 -'INT'=398 -'INTEGER'=399 -'INTERVAL'=400 -'LEAST'=401 -'NATIONAL'=402 -'NCHAR'=403 -'NONE'=404 -'NULLIF'=405 -'NUMERIC'=406 -'OVERLAY'=407 -'POSITION'=408 -'PRECISION'=409 -'REAL'=410 -'ROW'=411 -'SETOF'=412 -'SMALLINT'=413 -'SUBSTRING'=414 -'TIME'=415 -'TIMESTAMP'=416 -'TREAT'=417 -'TRIM'=418 -'VALUES'=419 -'VARCHAR'=420 -'XMLATTRIBUTES'=421 -'XMLCOMMENT'=422 -'XMLAGG'=423 -'XML_IS_WELL_FORMED'=424 -'XML_IS_WELL_FORMED_DOCUMENT'=425 -'XML_IS_WELL_FORMED_CONTENT'=426 -'XPATH'=427 -'XPATH_EXISTS'=428 -'XMLCONCAT'=429 -'XMLELEMENT'=430 -'XMLEXISTS'=431 -'XMLFOREST'=432 -'XMLPARSE'=433 -'XMLPI'=434 -'XMLROOT'=435 -'XMLSERIALIZE'=436 -'CALL'=437 -'CURRENT'=438 -'ATTACH'=439 -'DETACH'=440 -'EXPRESSION'=441 -'GENERATED'=442 -'LOGGED'=443 -'STORED'=444 -'INCLUDE'=445 -'ROUTINE'=446 -'TRANSFORM'=447 -'IMPORT'=448 -'POLICY'=449 -'METHOD'=450 -'REFERENCING'=451 -'NEW'=452 -'OLD'=453 -'VALUE'=454 -'SUBSCRIPTION'=455 -'PUBLICATION'=456 -'OUT'=457 -'END'=458 -'ROUTINES'=459 -'SCHEMAS'=460 -'PROCEDURES'=461 -'INPUT'=462 -'SUPPORT'=463 -'PARALLEL'=464 -'SQL'=465 -'DEPENDS'=466 -'OVERRIDING'=467 -'CONFLICT'=468 -'SKIP'=469 -'LOCKED'=470 -'TIES'=471 -'ROLLUP'=472 -'CUBE'=473 -'GROUPING'=474 -'SETS'=475 -'TABLESAMPLE'=476 -'ORDINALITY'=477 -'XMLTABLE'=478 -'COLUMNS'=479 -'XMLNAMESPACES'=480 -'ROWTYPE'=481 -'NORMALIZED'=482 -'WITHIN'=483 -'FILTER'=484 -'GROUPS'=485 -'OTHERS'=486 -'NFC'=487 -'NFD'=488 -'NFKC'=489 -'NFKD'=490 -'UESCAPE'=491 -'VIEWS'=492 -'NORMALIZE'=493 -'DUMP'=494 -'PRINT_STRICT_PARAMS'=495 -'VARIABLE_CONFLICT'=496 -'ERROR'=497 -'USE_VARIABLE'=498 -'USE_COLUMN'=499 -'ALIAS'=500 -'CONSTANT'=501 -'PERFORM'=502 -'GET'=503 -'DIAGNOSTICS'=504 -'STACKED'=505 -'ELSIF'=506 -'WHILE'=507 -'REVERSE'=508 -'FOREACH'=509 -'SLICE'=510 -'EXIT'=511 -'RETURN'=512 -'QUERY'=513 -'RAISE'=514 -'SQLSTATE'=515 -'DEBUG'=516 -'LOG'=517 -'INFO'=518 -'NOTICE'=519 -'WARNING'=520 -'EXCEPTION'=521 -'ASSERT'=522 -'LOOP'=523 -'OPEN'=524 -'ABS'=525 -'CBRT'=526 -'CEIL'=527 -'CEILING'=528 -'DEGREES'=529 -'DIV'=530 -'EXP'=531 -'FACTORIAL'=532 -'FLOOR'=533 -'GCD'=534 -'LCM'=535 -'LN'=536 -'LOG10'=537 -'MIN_SCALE'=538 -'MOD'=539 -'PI'=540 -'POWER'=541 -'RADIANS'=542 -'ROUND'=543 -'SCALE'=544 -'SIGN'=545 -'SQRT'=546 -'TRIM_SCALE'=547 -'TRUNC'=548 -'WIDTH_BUCKET'=549 -'RANDOM'=550 -'SETSEED'=551 -'ACOS'=552 -'ACOSD'=553 -'ASIN'=554 -'ASIND'=555 -'ATAN'=556 -'ATAND'=557 -'ATAN2'=558 -'ATAN2D'=559 -'COS'=560 -'COSD'=561 -'COT'=562 -'COTD'=563 -'SIN'=564 -'SIND'=565 -'TAN'=566 -'TAND'=567 -'SINH'=568 -'COSH'=569 -'TANH'=570 -'ASINH'=571 -'ACOSH'=572 -'ATANH'=573 -'BIT_LENGTH'=574 -'CHAR_LENGTH'=575 -'CHARACTER_LENGTH'=576 -'LOWER'=577 -'OCTET_LENGTH'=578 -'UPPER'=579 -'ASCII'=580 -'BTRIM'=581 -'CHR'=582 -'CONCAT'=583 -'CONCAT_WS'=584 -'FORMAT'=585 -'INITCAP'=586 -'LENGTH'=587 -'LPAD'=588 -'LTRIM'=589 -'MD5'=590 -'PARSE_IDENT'=591 -'PG_CLIENT_ENCODING'=592 -'QUOTE_IDENT'=593 -'QUOTE_LITERAL'=594 -'QUOTE_NULLABLE'=595 -'REGEXP_COUNT'=596 -'REGEXP_INSTR'=597 -'REGEXP_LIKE'=598 -'REGEXP_MATCH'=599 -'REGEXP_MATCHES'=600 -'REGEXP_REPLACE'=601 -'REGEXP_SPLIT_TO_ARRAY'=602 -'REGEXP_SPLIT_TO_TABLE'=603 -'REGEXP_SUBSTR'=604 -'REPEAT'=605 -'RPAD'=606 -'RTRIM'=607 -'SPLIT_PART'=608 -'STARTS_WITH'=609 -'STRING_TO_ARRAY'=610 -'STRING_TO_TABLE'=611 -'STRPOS'=612 -'SUBSTR'=613 -'TO_ASCII'=614 -'TO_HEX'=615 -'TRANSLATE'=616 -'UNISTR'=617 -'AGE'=618 -'CLOCK_TIMESTAMP'=619 -'DATE_BIN'=620 -'DATE_PART'=621 -'DATE_TRUNC'=622 -'ISFINITE'=623 -'JUSTIFY_DAYS'=624 -'JUSTIFY_HOURS'=625 -'JUSTIFY_INTERVAL'=626 -'MAKE_DATE'=627 -'MAKE_INTERVAL'=628 -'MAKE_TIME'=629 -'MAKE_TIMESTAMP'=630 -'MAKE_TIMESTAMPTZ'=631 -'NOW'=632 -'STATEMENT_TIMESTAMP'=633 -'TIMEOFDAY'=634 -'TRANSACTION_TIMESTAMP'=635 -'TO_TIMESTAMP'=636 -'TO_CHAR'=637 -'TO_DATE'=638 -'TO_NUMBER'=639 -'\\\\'=673 -'\''=683 From 519279baeb30266fcc97711e39cc5c78e5ff6ca8 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 13 Nov 2024 17:54:14 -0800 Subject: [PATCH 005/104] Fix typo --- .../risingwave/streams/effective/create.zstreams/server.rpt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstreams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstreams/server.rpt index 03be99e969..65345844c6 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstreams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstreams/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zilla") + .parameter("user", "zillabase_admin") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") From b60ee1e6b185a2098f9e4e80f634f8e0a39e6c4f Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 13 Nov 2024 17:59:52 -0800 Subject: [PATCH 006/104] Replace weather with commands --- .../effective/create.zstream.with.includes/client.rpt | 8 ++++---- .../effective/create.zstream.with.includes/server.rpt | 8 ++++---- .../streams/pgsql/create.zstream.with.includes/client.rpt | 3 ++- .../streams/pgsql/create.zstream.with.includes/server.rpt | 3 ++- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream.with.includes/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream.with.includes/client.rpt index ea9dbf398d..b0e4fd225f 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream.with.includes/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream.with.includes/client.rpt @@ -32,14 +32,14 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SOURCE IF NOT EXISTS pg_catalog.weather (*)\n" +write "CREATE SOURCE IF NOT EXISTS pg_catalog.commands (*)\n" "INCLUDE header 'zilla:correlation-id' AS zilla_correlation_id\n" "INCLUDE header 'zilla:identity' AS zilla_identity\n" "INCLUDE timestamp AS zilla_timestamp\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='public.weather',\n" + " topic='public.commands',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" @@ -81,8 +81,8 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE TOPIC IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE);" +write "CREATE TOPIC IF NOT EXISTS commands " + "(type VARCHAR, 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.zstream.with.includes/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream.with.includes/server.rpt index ff68f2afb9..0dcc553e59 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream.with.includes/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream.with.includes/server.rpt @@ -36,14 +36,14 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SOURCE IF NOT EXISTS zb_catalog.weather (*)\n" +read "CREATE SOURCE IF NOT EXISTS zb_catalog.commands (*)\n" "INCLUDE header 'zilla:correlation-id' AS zilla_correlation_id\n" "INCLUDE header 'zilla:identity' AS zilla_identity\n" "INCLUDE timestamp AS zilla_timestamp\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='public.weather',\n" + " topic='public.commands',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" @@ -87,8 +87,8 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE TOPIC IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE);" +read "CREATE TOPIC IF NOT EXISTS commands " + "(type VARCHAR, 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/pgsql/create.zstream.with.includes/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream.with.includes/client.rpt index bfa33d56c4..e7991cebf2 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream.with.includes/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream.with.includes/client.rpt @@ -33,7 +33,8 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} -write "CREATE ZSTREAM weather (\n" +write "CREATE ZSTREAM commands (\n" + " type VARCHAR,\n" " city VARCHAR,\n" " temperature DOUBLE,\n" " date DATE,\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream.with.includes/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream.with.includes/server.rpt index de905ef8b8..6a39e2bc0f 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream.with.includes/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream.with.includes/server.rpt @@ -36,7 +36,8 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE ZSTREAM weather (\n" +read "CREATE ZSTREAM commands (\n" + " type VARCHAR,\n" " city VARCHAR,\n" " temperature DOUBLE,\n" " date DATE,\n" From 912bd26b4540f7d835c182c028d1f9f231c48518 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 13 Nov 2024 18:04:23 -0800 Subject: [PATCH 007/104] Remove redundant exclude --- pom.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/pom.xml b/pom.xml index 7aebefe4af..8750c145d4 100644 --- a/pom.xml +++ b/pom.xml @@ -304,8 +304,6 @@ src/conf/** - src/**/*.tokens - src/**/*.interp SLASHSTAR_STYLE From 108560056a6dafdb5ab93b59f52fdfbc7dc1c370 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 25 Nov 2024 14:05:26 -0800 Subject: [PATCH 008/104] WIP --- .../client.rpt | 45 +++++++++++++++- .../server.rpt | 40 +++++++++++++- .../client.rpt | 4 +- .../server.rpt | 4 +- .../config/RisingwaveBindingConfig.java | 3 ++ .../RisingwaveInsertIntoCatalogTemplate.java | 29 ++++++++++ .../stream/RisingwaveProxyFactory.java | 53 ++++++++++++++++--- .../risingwave/internal/stream/ProxyIT.java | 6 +-- 8 files changed, 166 insertions(+), 18 deletions(-) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.materialized.view => create.zview}/client.rpt (83%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.materialized.view => create.zview}/server.rpt (85%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.materialized.view => create.zview}/client.rpt (93%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.materialized.view => create.zview}/server.rpt (93%) create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveInsertIntoCatalogTemplate.java diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.materialized.view/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt similarity index 83% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.materialized.view/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt index cca41409aa..6b90bbd223 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.materialized.view/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt @@ -143,17 +143,34 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +read notify RECEIVED_DESCRIBE_RESPONSE + +connect await RECEIVED_DESCRIBE_RESPONSE + "zilla://streams/app2" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -write "CREATE SINK distinct_cities_sink\n" +write "CREATE SINK cg_zillabase.distinct_cities_sink\n" "FROM distinct_cities\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.distinct_cities',\n" + " topic='public.distinct_cities',\n" " primary_key='id'\n" ") FORMAT UPSERT ENCODE AVRO (\n" " schema.registry='http://localhost:8081'\n" @@ -175,6 +192,30 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "INSERT INTO cg_zillabase.zviews VALUES " + "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;');" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("INSERT 0 2") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + connect "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.materialized.view/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt similarity index 85% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.materialized.view/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt index 63543853b1..7acffaa9a4 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.materialized.view/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt @@ -149,7 +149,21 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} -read await CREATE_TOPIC_COMPLETED +accept "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) @@ -182,6 +196,29 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "INSERT INTO cg_zillabase.zviews VALUES " + "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;');" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("INSERT 0 2") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + accept "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" @@ -214,7 +251,6 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} -write notify CREATE_TOPIC_COMPLETED write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.materialized.view/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/client.rpt similarity index 93% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.materialized.view/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/client.rpt index 3db00edbed..d1f4c57a5e 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.materialized.view/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities " +write "CREATE ZVIEW IF NOT EXISTS distinct_cities " "AS SELECT id, city FROM weather GROUP BY city;" [0x00] @@ -41,7 +41,7 @@ write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_MATERIALIZED_VIEW") + .tag("CREATE_ZVIEW") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.materialized.view/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/server.rpt similarity index 93% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.materialized.view/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/server.rpt index be89ebc052..65c9832011 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.materialized.view/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/server.rpt @@ -36,14 +36,14 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities " +read "CREATE ZVIEW IF NOT EXISTS distinct_cities " "AS SELECT id, city FROM weather GROUP BY city;" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_MATERIALIZED_VIEW") + .tag("CREATE_ZVIEW") .build() .build()} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java index 08c5185e75..5c02b45016 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java @@ -38,6 +38,7 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDropSourceTemplate; import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDropTableTemplate; import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDropTopicTemplate; +import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveInsertIntoCatalogTemplate; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; import io.aklivity.zilla.runtime.engine.config.BindingConfig; import io.aklivity.zilla.runtime.engine.config.CatalogedConfig; @@ -64,6 +65,7 @@ public final class RisingwaveBindingConfig public final RisingwaveDropTopicTemplate dropTopic; public final RisingwaveDropMaterializedViewTemplate dropMaterializedView; public final RisingwaveDropSinkTemplate dropSink; + public final RisingwaveInsertIntoCatalogTemplate catalogInsert; public RisingwaveBindingConfig( RisingwaveConfiguration config, @@ -105,6 +107,7 @@ public RisingwaveBindingConfig( this.dropMaterializedView = new RisingwaveDropMaterializedViewTemplate(); this.dropSink = new RisingwaveDropSinkTemplate(); this.createFunction = new RisingwaveCreateFunctionTemplate(options.udfs); + this.catalogInsert = new RisingwaveInsertIntoCatalogTemplate(); } public RisingwaveRouteConfig resolve( diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveInsertIntoCatalogTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveInsertIntoCatalogTemplate.java new file mode 100644 index 0000000000..e358f0c0cb --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveInsertIntoCatalogTemplate.java @@ -0,0 +1,29 @@ +/* + * Copyright 2021-2024 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; + +public class RisingwaveInsertIntoCatalogTemplate extends RisingwaveCommandTemplate +{ + private final String sqlFormat = """ + INSERT INTO %s (name, statement) VALUES('%s', '%s');\u0000"""; + + public String generate( + String catalog, + String name, + String statement) + { + return String.format(sqlFormat, catalog, name, statement); + } +} 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 c4bfc96314..6b158a34a5 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 @@ -81,6 +81,9 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory private static final String SEVERITY_WARNING = "WARNING\u0000"; private static final String CODE_XX000 = "XX000\u0000"; + private static final String ZILLABASE_USER = "zillabase"; + private static final String DEFAULT_USER = "default"; + private static final int COMMAND_PROCESSED_ERRORED = -1; private static final int COMMAND_PROCESSED_NONE = 0; @@ -148,7 +151,7 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory new Object2ObjectHashMap<>(); clientTransforms.put(RisingwaveCommandType.CREATE_TABLE_COMMAND, this::decodeCreateTableCommand); clientTransforms.put(RisingwaveCommandType.CREATE_STREAM_COMMAND, this::decodeCreateStreamCommand); - clientTransforms.put(RisingwaveCommandType.CREATE_MATERIALIZED_VIEW_COMMAND, this::decodeCreateMaterializedViewCommand); + clientTransforms.put(RisingwaveCommandType.CREATE_MATERIALIZED_VIEW_COMMAND, this::decodeCreateZviewCommand); clientTransforms.put(RisingwaveCommandType.CREATE_FUNCTION_COMMAND, this::decodeCreateFunctionCommand); clientTransforms.put(RisingwaveCommandType.ALTER_TABLE_COMMAND, this::decodeAlterTableCommand); clientTransforms.put(RisingwaveCommandType.ALTER_STREAM_COMMAND, this::decodeAlterStreamCommand); @@ -228,6 +231,7 @@ public MessageConsumer newStream( originId, routedId, initialId, + route.id, parameters)::onAppMessage; } } @@ -279,6 +283,7 @@ private PgsqlServer( long originId, long routedId, long initialId, + long risingwaveRouteId, Map parameters) { this.app = app; @@ -300,7 +305,16 @@ private PgsqlServer( this.responses = new LongArrayQueue(); this.queries = new IntArrayQueue(); - binding.routes.forEach(r -> streamsByRouteIds.put(r.id, new PgsqlClient(this, routedId, r.id))); + binding.routes.forEach(r -> + { + long clientId = r.id + DEFAULT_USER.hashCode(); + streamsByRouteIds.put(clientId, + new PgsqlClient(this, routedId, r.id, clientId, DEFAULT_USER)); + }); + + long clientId = risingwaveRouteId + ZILLABASE_USER.hashCode(); + streamsByRouteIds.put(risingwaveRouteId + ZILLABASE_USER.hashCode(), + new PgsqlClient(this, routedId, risingwaveRouteId, clientId, ZILLABASE_USER)); } private void onAppMessage( @@ -798,6 +812,7 @@ private final class PgsqlClient private final long originId; private final long routedId; + private final String user; private long initialId; private long replyId; @@ -822,11 +837,14 @@ private final class PgsqlClient private PgsqlClient( PgsqlServer server, long originId, - long routedId) + long routedId, + long clientId, + String user) { this.server = server; this.originId = originId; this.routedId = routedId; + this.user = user; this.dataCommand = proxyDataCommand; this.typeCommand = proxyFlushCommand; @@ -1083,7 +1101,21 @@ private void doAppBegin( Consumer beginEx = e -> e.set((b, o, l) -> beginExRW.wrap(b, o, l) .typeId(pgsqlTypeId) - .parameters(p -> server.parameters.forEach((k, v) -> p.item(i -> i.name(k).value(v)))) + .parameters(p -> server.parameters.forEach((k, v) -> + { + if (k.equals("user") && user != null) + { + p.item(i -> i.name(k).value(user)); + } + else if (k.equals("password")) + { + //TODO: Fill out the password + } + else + { + p.item(i -> i.name(k).value(v)); + } + })) .build().sizeof()); state = RisingwaveState.openingInitial(state); @@ -1607,13 +1639,13 @@ else if (server.commandsProcessed == 1) } } - private void decodeCreateMaterializedViewCommand( + private void decodeCreateZviewCommand( PgsqlServer server, long traceId, long authorization, String statement) { - if (server.commandsProcessed == 4 || + if (server.commandsProcessed == 5 || server.commandsProcessed == COMMAND_PROCESSED_ERRORED) { final int length = statement.length(); @@ -1622,6 +1654,7 @@ private void decodeCreateMaterializedViewCommand( } else { + String user = DEFAULT_USER; final RisingwaveBindingConfig binding = server.binding; final View view = parser.parseCreateZView(statement); PgsqlFlushCommand typeCommand = ignoreFlushCommand; @@ -1647,8 +1680,14 @@ else if (server.commandsProcessed == 2) } else if (server.commandsProcessed == 3) { + user = ZILLABASE_USER; newStatement = binding.createSink.generate(server.database, server.columns, view); } + else if (server.commandsProcessed == 4) + { + user = ZILLABASE_USER; + newStatement = binding.catalogInsert.generate("cg_zillabase.zview", view.name(), statement); + } statementBuffer.putBytes(progress, newStatement.getBytes()); progress += newStatement.length(); @@ -1656,7 +1695,7 @@ else if (server.commandsProcessed == 3) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + user.hashCode()); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = typeCommand; client.dataCommand = dataCommand; diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java index dfaac4a626..929fa16d45 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java @@ -114,10 +114,10 @@ public void shouldHandleQueryWithMultiStatementsThatErrored() throws Exception @Test @Configuration("proxy.yaml") @Specification({ - "${pgsql}/create.materialized.view/client", - "${effective}/create.materialized.view/server" + "${pgsql}/create.zview/client", + "${effective}/create.zview/server" }) - public void shouldCreateMaterializedView() throws Exception + public void shouldCreateZview() throws Exception { k3po.finish(); } From 40390291587bf589da909aebad883e3147da14fc Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 25 Nov 2024 15:33:56 -0800 Subject: [PATCH 009/104] Revert back the change --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index f93248f56b..98261cf74f 100644 --- a/pom.xml +++ b/pom.xml @@ -304,6 +304,7 @@ src/conf/** + src/**/*.btm SLASHSTAR_STYLE From 8a5ace9a5e3ffd5f4fe1504e077fbeafb50f4fb8 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 26 Nov 2024 01:22:29 -0800 Subject: [PATCH 010/104] Checkpoint zview --- .../parser/listener/SqlCommandListener.java | 4 +- .../streams/effective/create.zview/server.rpt | 139 +++++++++--------- .../config/RisingwaveBindingConfig.java | 6 +- .../config/RisingwaveCommandType.java | 2 +- .../RisingwaveCreateSinkTemplate.java | 15 +- .../RisingwaveInsertIntoCatalogTemplate.java | 12 +- .../stream/RisingwaveCompletionCommand.java | 2 +- .../stream/RisingwaveProxyFactory.java | 51 ++++--- .../engine/test/annotation/Configure.java | 3 +- 9 files changed, 127 insertions(+), 107 deletions(-) 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 cde8d6217a..7e656c5503 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 @@ -76,8 +76,8 @@ public void enterCreatezstreamstmt( } @Override - public void enterCreatematviewstmt( - PostgreSqlParser.CreatematviewstmtContext ctx) + public void enterCreatezviewstmt( + PostgreSqlParser.CreatezviewstmtContext ctx) { command = "CREATE ZVIEW"; } diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt index 7acffaa9a4..b5f2b64680 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt @@ -19,6 +19,75 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "CREATE SINK cg_zillabase.distinct_cities_sink\n" + "FROM distinct_cities\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.distinct_cities',\n" + " primary_key='id'\n" + ") FORMAT UPSERT ENCODE AVRO (\n" + " schema.registry='http://localhost:8081'\n" + ") KEY ENCODE TEXT;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_SINK") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "INSERT INTO cg_zillabase.zviews (name, sql) VALUES " + "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;" + [0x00] + "');" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("INSERT 0 2") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +accepted + + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") @@ -149,76 +218,6 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} -accept "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "CREATE SINK distinct_cities_sink\n" - "FROM distinct_cities\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.distinct_cities',\n" - " primary_key='id'\n" - ") FORMAT UPSERT ENCODE AVRO (\n" - " schema.registry='http://localhost:8081'\n" - ") KEY ENCODE TEXT;" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_SINK") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "INSERT INTO cg_zillabase.zviews VALUES " - "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;');" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("INSERT 0 2") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - accept "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java index 5c02b45016..436e8d7e44 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java @@ -46,6 +46,8 @@ public final class RisingwaveBindingConfig { + private final static String SCHEMA = "cg_zillabase"; + public final long id; public final String name; public final RisingwaveOptionsConfig options; @@ -95,7 +97,7 @@ public RisingwaveBindingConfig( this.createTable = new RisingwaveCreateTableTemplate(); this.createSource = new RisingwaveCreateSourceTemplate(bootstrapServer, location, config.kafkaScanStartupTimestampMillis()); - this.createSink = new RisingwaveCreateSinkTemplate(bootstrapServer, location); + this.createSink = new RisingwaveCreateSinkTemplate(SCHEMA,bootstrapServer, location); this.createTopic = new RisingwaveCreateTopicTemplate(); this.createView = new RisingwaveCreateMaterializedViewTemplate(); this.alterTable = new RisingwaveAlterTableTemplate(); @@ -107,7 +109,7 @@ public RisingwaveBindingConfig( this.dropMaterializedView = new RisingwaveDropMaterializedViewTemplate(); this.dropSink = new RisingwaveDropSinkTemplate(); this.createFunction = new RisingwaveCreateFunctionTemplate(options.udfs); - this.catalogInsert = new RisingwaveInsertIntoCatalogTemplate(); + this.catalogInsert = new RisingwaveInsertIntoCatalogTemplate(SCHEMA); } public RisingwaveRouteConfig resolve( diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java index a0a793c2a0..40724979a9 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java @@ -21,7 +21,7 @@ public enum RisingwaveCommandType CREATE_TOPIC_COMMAND("CREATE TOPIC".getBytes()), CREATE_TABLE_COMMAND("CREATE TABLE".getBytes()), CREATE_STREAM_COMMAND("CREATE STREAM".getBytes()), - CREATE_MATERIALIZED_VIEW_COMMAND("CREATE MATERIALIZED VIEW".getBytes()), + CREATE_ZVIEW_COMMAND("CREATE ZVIEW".getBytes()), CREATE_FUNCTION_COMMAND("CREATE FUNCTION".getBytes()), ALTER_TABLE_COMMAND("ALTER TABLE".getBytes()), ALTER_STREAM_COMMAND("ALTER STREAM".getBytes()), 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 c306d0c0f0..85f1424c4d 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 @@ -23,9 +23,9 @@ public class RisingwaveCreateSinkTemplate extends RisingwaveCommandTemplate { private final String sqlFormat = """ - CREATE SINK %s_view_sink INTO %s FROM %s_view;\u0000"""; + CREATE SINK %s.%s_view_sink INTO %s FROM %s_view;\u0000"""; private final String sqlKafkaFormat = """ - CREATE SINK %s_sink + CREATE SINK %s.%s_sink FROM %s WITH ( connector='kafka', @@ -37,19 +37,22 @@ public class RisingwaveCreateSinkTemplate extends RisingwaveCommandTemplate private final String primaryKeyFormat = ",\n primary_key='%s'"; + private final String schema; private final String bootstrapServer; private final String schemaRegistry; public RisingwaveCreateSinkTemplate( + String schema, String bootstrapServer, String schemaRegistry) { + this.schema = schema; this.bootstrapServer = bootstrapServer; this.schemaRegistry = schemaRegistry; } public String generate( - String database, + String schema, Map columns, View view) { @@ -69,16 +72,16 @@ public String generate( String textPrimaryKey = primaryKeyMatch.map(Map.Entry::getKey).orElse(null); String primaryKey = textPrimaryKey != null ? primaryKeyFormat.formatted(textPrimaryKey) : ""; - return String.format(sqlKafkaFormat, viewName, viewName, bootstrapServer, database, viewName, primaryKey, schemaRegistry); + return String.format(sqlKafkaFormat, this.schema, viewName, viewName, bootstrapServer, schema, viewName, primaryKey, schemaRegistry); } public String generate( - String database, + String schema, Table tableInfo) { String table = tableInfo.name(); - return String.format(sqlKafkaFormat, table, table, bootstrapServer, database, table, + return String.format(sqlKafkaFormat, this.schema, table, table, bootstrapServer, schema, table, primaryKeyFormat.formatted(tableInfo.primaryKeys().stream().findFirst().get()), schemaRegistry); } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveInsertIntoCatalogTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveInsertIntoCatalogTemplate.java index e358f0c0cb..61fb569586 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveInsertIntoCatalogTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveInsertIntoCatalogTemplate.java @@ -17,13 +17,21 @@ public class RisingwaveInsertIntoCatalogTemplate extends RisingwaveCommandTemplate { private final String sqlFormat = """ - INSERT INTO %s (name, statement) VALUES('%s', '%s');\u0000"""; + INSERT INTO %s.%s (name, sql) VALUES ('%s', '%s');\u0000"""; + private final String schema; + + public RisingwaveInsertIntoCatalogTemplate( + String schema) + { + this.schema = schema; + } public String generate( String catalog, String name, String statement) { - return String.format(sqlFormat, catalog, name, statement); + statement = statement.replace("ZVIEW", "MATERIALIZED VIEW"); + return String.format(sqlFormat, schema, catalog, name, statement); } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java index 23eb0f2f18..58294ec11d 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java @@ -18,7 +18,7 @@ public enum RisingwaveCompletionCommand { UNKNOWN_COMMAND("UNKNOWN".getBytes()), CREATE_TABLE_COMMAND("CREATE_TABLE".getBytes()), - CREATE_MATERIALIZED_VIEW_COMMAND("CREATE_MATERIALIZED_VIEW".getBytes()), + CREATE_ZVIEW_COMMAND("CREATE_ZVIEW".getBytes()), CREATE_STREAM_COMMAND("CREATE_STREAM".getBytes()), CREATE_FUNCTION_COMMAND("CREATE_FUNCTION".getBytes()), ALTER_TABLE_COMMAND("ALTER_TABLE".getBytes()), 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 6b158a34a5..068580e071 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 @@ -81,8 +81,12 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory private static final String SEVERITY_WARNING = "WARNING\u0000"; private static final String CODE_XX000 = "XX000\u0000"; - private static final String ZILLABASE_USER = "zillabase"; - private static final String DEFAULT_USER = "default"; + private static final String ZILLABASE_USER = "zillabase\u0000"; + private static final String DEFAULT_USER = "default\u0000"; + private static final String ZVIEW_TABLE_NAME = "zviews"; + + private static final int ZILLABASE_USER_HASH = ZILLABASE_USER.hashCode(); + private static final int DEFAULT_USER_HASH = DEFAULT_USER.hashCode(); private static final int COMMAND_PROCESSED_ERRORED = -1; private static final int COMMAND_PROCESSED_NONE = 0; @@ -151,7 +155,7 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory new Object2ObjectHashMap<>(); clientTransforms.put(RisingwaveCommandType.CREATE_TABLE_COMMAND, this::decodeCreateTableCommand); clientTransforms.put(RisingwaveCommandType.CREATE_STREAM_COMMAND, this::decodeCreateStreamCommand); - clientTransforms.put(RisingwaveCommandType.CREATE_MATERIALIZED_VIEW_COMMAND, this::decodeCreateZviewCommand); + clientTransforms.put(RisingwaveCommandType.CREATE_ZVIEW_COMMAND, this::decodeCreateZviewCommand); clientTransforms.put(RisingwaveCommandType.CREATE_FUNCTION_COMMAND, this::decodeCreateFunctionCommand); clientTransforms.put(RisingwaveCommandType.ALTER_TABLE_COMMAND, this::decodeAlterTableCommand); clientTransforms.put(RisingwaveCommandType.ALTER_STREAM_COMMAND, this::decodeAlterStreamCommand); @@ -307,14 +311,15 @@ private PgsqlServer( binding.routes.forEach(r -> { - long clientId = r.id + DEFAULT_USER.hashCode(); + final long clientId = r.id + DEFAULT_USER_HASH; streamsByRouteIds.put(clientId, new PgsqlClient(this, routedId, r.id, clientId, DEFAULT_USER)); }); - long clientId = risingwaveRouteId + ZILLABASE_USER.hashCode(); - streamsByRouteIds.put(risingwaveRouteId + ZILLABASE_USER.hashCode(), + final long clientId = risingwaveRouteId + ZILLABASE_USER_HASH; + streamsByRouteIds.put(clientId, new PgsqlClient(this, routedId, risingwaveRouteId, clientId, ZILLABASE_USER)); + } private void onAppMessage( @@ -601,7 +606,8 @@ private void doAppBegin( } private void doAppData( - long clientRouteId, + long clientId, + long routeId, long traceId, long authorization, int flags, @@ -610,7 +616,7 @@ private void doAppData( int limit, OctetsFW extension) { - responses.add(clientRouteId); + responses.add(clientId); final int length = limit - offset; final int reserved = length + initialPad; @@ -812,6 +818,7 @@ private final class PgsqlClient private final long originId; private final long routedId; + private final long clientId; private final String user; private long initialId; @@ -844,6 +851,7 @@ private PgsqlClient( this.server = server; this.originId = originId; this.routedId = routedId; + this.clientId = clientId; this.user = user; this.dataCommand = proxyDataCommand; @@ -933,7 +941,7 @@ private void onAppData( final OctetsFW extension = data.extension(); final OctetsFW payload = data.payload(); - dataCommand.handle(server, routedId, traceId, authorization, flags, + dataCommand.handle(server, clientId, routedId, traceId, authorization, flags, payload.buffer(), payload.offset(), payload.limit(), extension); } } @@ -1103,14 +1111,10 @@ private void doAppBegin( .typeId(pgsqlTypeId) .parameters(p -> server.parameters.forEach((k, v) -> { - if (k.equals("user") && user != null) + if (k.contains("user") && user.equals(ZILLABASE_USER)) { p.item(i -> i.name(k).value(user)); } - else if (k.equals("password")) - { - //TODO: Fill out the password - } else { p.item(i -> i.name(k).value(v)); @@ -1650,11 +1654,11 @@ private void decodeCreateZviewCommand( { final int length = statement.length(); server.onCommandCompleted(traceId, authorization, length, - RisingwaveCompletionCommand.CREATE_MATERIALIZED_VIEW_COMMAND); + RisingwaveCompletionCommand.CREATE_ZVIEW_COMMAND); } else { - String user = DEFAULT_USER; + int user = DEFAULT_USER_HASH; final RisingwaveBindingConfig binding = server.binding; final View view = parser.parseCreateZView(statement); PgsqlFlushCommand typeCommand = ignoreFlushCommand; @@ -1680,13 +1684,13 @@ else if (server.commandsProcessed == 2) } else if (server.commandsProcessed == 3) { - user = ZILLABASE_USER; - newStatement = binding.createSink.generate(server.database, server.columns, view); + user = ZILLABASE_USER_HASH; + newStatement = binding.createSink.generate("public", server.columns, view); } else if (server.commandsProcessed == 4) { - user = ZILLABASE_USER; - newStatement = binding.catalogInsert.generate("cg_zillabase.zview", view.name(), statement); + user = ZILLABASE_USER_HASH; + newStatement = binding.catalogInsert.generate(ZVIEW_TABLE_NAME, view.name(), statement); } statementBuffer.putBytes(progress, newStatement.getBytes()); @@ -1695,7 +1699,7 @@ else if (server.commandsProcessed == 4) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + user.hashCode()); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = typeCommand; client.dataCommand = dataCommand; @@ -2048,6 +2052,7 @@ private void typeFlushCommand( private void rowDataCommand( PgsqlServer server, + long clientId, long traceId, long authorization, long routedId, @@ -2095,6 +2100,7 @@ private void rowDataCommand( private void proxyDataCommand( PgsqlServer server, + long clientId, long traceId, long authorization, long routedId, @@ -2104,7 +2110,7 @@ private void proxyDataCommand( int limit, OctetsFW extension) { - server.doAppData(routedId, traceId, authorization, flags, buffer, offset, limit, extension); + server.doAppData(clientId, routedId, traceId, authorization, flags, buffer, offset, limit, extension); } public List splitStatements( @@ -2177,6 +2183,7 @@ private interface PgsqlDataCommand { void handle( PgsqlServer server, + long clientId, long traceId, long authorization, long routedId, diff --git a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/annotation/Configure.java b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/annotation/Configure.java index 7b679d1527..7a4787f088 100644 --- a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/annotation/Configure.java +++ b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/annotation/Configure.java @@ -24,7 +24,8 @@ @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.METHOD }) @Repeatable(Configures.class) -public @interface Configure +public @interface +Configure { String name(); String value(); From 92930f8211fa6fa0f9bfaa6f87104399191564c2 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 26 Nov 2024 10:32:45 -0800 Subject: [PATCH 011/104] Stable state --- .../client.rpt | 0 .../server.rpt | 0 .../client.rpt | 10 +- .../server.rpt | 12 +- .../client.rpt | 0 .../server.rpt | 0 .../client.rpt | 10 +- .../server.rpt | 6 +- .../streams/effective/create.zview/client.rpt | 145 +++++++++--------- .../{drop.zstream => drop.stream}/client.rpt | 0 .../{drop.zstream => drop.stream}/server.rpt | 0 .../client.rpt | 4 +- .../server.rpt | 4 +- .../client.rpt | 4 +- .../server.rpt | 2 +- .../create.stream.with.includes/client.rpt | 103 +++++++++++++ .../create.stream.with.includes/server.rpt | 109 +++++++++++++ .../client.rpt | 4 +- .../server.rpt | 4 +- .../client.rpt | 6 +- .../server.rpt | 8 +- .../create.zstream.with.includes/client.rpt | 64 -------- .../create.zstream.with.includes/server.rpt | 66 -------- .../{drop.zstream => drop.stream}/client.rpt | 4 +- .../{drop.zstream => drop.stream}/server.rpt | 4 +- .../risingwave/streams/EffectiveIT.java | 6 +- .../binding/risingwave/streams/PgsqlIT.java | 4 +- 27 files changed, 330 insertions(+), 249 deletions(-) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{alter.zstream.add.column => alter.stream.add.column}/client.rpt (100%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{alter.zstream.add.column => alter.stream.add.column}/server.rpt (100%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.zstream.with.includes => create.stream.with.includes}/client.rpt (92%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.zstream.with.includes => create.stream.with.includes}/server.rpt (91%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.zstream => create.stream}/client.rpt (100%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.zstream => create.stream}/server.rpt (100%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.zstreams => create.streams}/client.rpt (95%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.zstreams => create.streams}/server.rpt (97%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{drop.zstream => drop.stream}/client.rpt (100%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{drop.zstream => drop.stream}/server.rpt (100%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{alter.zstream.add.column => alter.stream.add.column}/client.rpt (94%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{alter.zstream.add.column => alter.stream.add.column}/server.rpt (94%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{alter.zstream.modify.column.rejected => alter.stream.modify.column.rejected}/client.rpt (94%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{alter.zstream.modify.column.rejected => alter.stream.modify.column.rejected}/server.rpt (96%) create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/client.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/server.rpt rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.zstream => create.stream}/client.rpt (94%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.zstream => create.stream}/server.rpt (95%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.zstreams => create.streams}/client.rpt (94%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.zstreams => create.streams}/server.rpt (92%) delete mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream.with.includes/client.rpt delete mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream.with.includes/server.rpt rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{drop.zstream => drop.stream}/client.rpt (95%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{drop.zstream => drop.stream}/server.rpt (95%) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.zstream.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.zstream.add.column/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.zstream.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.zstream.add.column/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream.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 similarity index 92% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream.with.includes/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/client.rpt index b0e4fd225f..2d5f01a96d 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream.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 @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase_admin") + .parameter("user", "root") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -32,14 +32,14 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SOURCE IF NOT EXISTS pg_catalog.commands (*)\n" +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 zilla_timestamp\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='public.commands',\n" + " topic='dev.weather',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" @@ -81,8 +81,8 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE TOPIC IF NOT EXISTS commands " - "(type VARCHAR, city VARCHAR, temperature DOUBLE, date DATE);" +write "CREATE TOPIC IF NOT EXISTS weather " + "(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.zstream.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 similarity index 91% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream.with.includes/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/server.rpt index 0dcc553e59..49e1b212ee 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream.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 @@ -21,8 +21,8 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase_admin") - .parameter("database", "zilla") + .parameter("user", "root") + .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") .build()} @@ -36,14 +36,14 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SOURCE IF NOT EXISTS zb_catalog.commands (*)\n" +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 zilla_timestamp\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='public.commands',\n" + " topic='dev.weather',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" @@ -87,8 +87,8 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE TOPIC IF NOT EXISTS commands " - "(type VARCHAR, city VARCHAR, temperature DOUBLE, date DATE);" +read "CREATE TOPIC IF NOT EXISTS weather " + "(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.zstream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstreams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstreams/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt index 8014c2468c..cdc0a336e7 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstreams/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase_admin") + .parameter("user", "root") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -32,11 +32,11 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SOURCE IF NOT EXISTS zb_catalog.weather_c (*)\n" +write "CREATE SOURCE IF NOT EXISTS weather_c (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='public.weather_c',\n" + " topic='dev.weather_c',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" @@ -64,11 +64,11 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SOURCE IF NOT EXISTS zb_catalog.weather_f (*)\n" +write "CREATE SOURCE IF NOT EXISTS weather_f (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='public.weather_f',\n" + " topic='dev.weather_f',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstreams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt similarity index 97% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstreams/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt index 65345844c6..141ecde172 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstreams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase_admin") + .parameter("user", "root") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -40,7 +40,7 @@ read "CREATE SOURCE IF NOT EXISTS weather_c (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='public.weather_c',\n" + " topic='dev.weather_c',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" @@ -71,7 +71,7 @@ read "CREATE SOURCE IF NOT EXISTS weather_f (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='public.weather_f',\n" + " topic='dev.weather_f',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt index 6b90bbd223..e6811bc12f 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt @@ -13,6 +13,78 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "CREATE SINK cg_zillabase.distinct_cities_sink\n" + "FROM distinct_cities\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.distinct_cities',\n" + " primary_key='id'\n" + ") FORMAT UPSERT ENCODE AVRO (\n" + " schema.registry='http://localhost:8081'\n" + ") KEY ENCODE TEXT;" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_SINK") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "INSERT INTO cg_zillabase.zviews (name, sql) VALUES " + "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;" + [0x00] + "');" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("INSERT 0 2") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" @@ -143,79 +215,6 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} -read notify RECEIVED_DESCRIBE_RESPONSE - -connect await RECEIVED_DESCRIBE_RESPONSE - "zilla://streams/app2" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "CREATE SINK cg_zillabase.distinct_cities_sink\n" - "FROM distinct_cities\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.distinct_cities',\n" - " primary_key='id'\n" - ") FORMAT UPSERT ENCODE AVRO (\n" - " schema.registry='http://localhost:8081'\n" - ") KEY ENCODE TEXT;" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_SINK") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "INSERT INTO cg_zillabase.zviews VALUES " - "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;');" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("INSERT 0 2") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - connect "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/client.rpt similarity index 94% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.add.column/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/client.rpt index 44541236eb..d8e6bd61ca 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/client.rpt @@ -33,14 +33,14 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "ALTER ZSTREAM cities ADD COLUMN zip INT;" +write "ALTER STREAM cities ADD COLUMN zip INT;" [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("ALTER_ZSTREAM") + .tag("ALTER_STREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt similarity index 94% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.add.column/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt index 961735a936..4df84e0ded 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt @@ -34,13 +34,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "ALTER ZSTREAM cities ADD COLUMN zip INT;" +read "ALTER STREAM cities ADD COLUMN zip INT;" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("ALTER_ZSTREAM") + .tag("ALTER_STREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.modify.column.rejected/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt similarity index 94% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.modify.column.rejected/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt index efa4aec098..f58bf8df76 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.modify.column.rejected/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "ALTER ZSTREAM cities ALTER COLUMN name TYPE VARCHAR(100);" +write "ALTER STREAM cities ALTER COLUMN name TYPE VARCHAR(100);" [0x00] write flush @@ -41,7 +41,7 @@ read advised zilla:flush ${pgsql:flushEx() .error() .severity("ERROR") .code("XX000") - .message("Unable to execute command because ALTER ZSTREAM only supports ADD") + .message("Unable to execute command because ALTER STREAM only supports ADD") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.modify.column.rejected/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt similarity index 96% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.modify.column.rejected/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt index 9e0dac05fa..662bb8b49a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.zstream.modify.column.rejected/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt @@ -34,7 +34,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "ALTER ZSTREAM cities ALTER COLUMN name TYPE VARCHAR(100);" +read "ALTER STREAM cities ALTER COLUMN name TYPE VARCHAR(100);" [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 new file mode 100644 index 0000000000..2d5f01a96d --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/client.rpt @@ -0,0 +1,103 @@ +# +# Copyright 2021-2024 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. +# + +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +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 zilla_timestamp\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='dev.weather',\n" + " scan.startup.mode='latest',\n" + " scan.startup.timestamp.millis='140000000'\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " schema.registry = 'http://localhost:8081'\n" + ");" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_SOURCE") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +connect "zilla://streams/app2" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "CREATE TOPIC IF NOT EXISTS weather " + "(city VARCHAR, temperature DOUBLE, date DATE);" + [0x00] + +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_TOPIC") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + 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 new file mode 100644 index 0000000000..49e1b212ee --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/server.rpt @@ -0,0 +1,109 @@ +# +# Copyright 2021-2024 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. +# + +accept "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read await CREATE_TOPIC_COMPLETED + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +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 zilla_timestamp\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='dev.weather',\n" + " scan.startup.mode='latest',\n" + " scan.startup.timestamp.millis='140000000'\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " schema.registry = 'http://localhost:8081'\n" + ");" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_SOURCE") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + + +accept "zilla://streams/app2" + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "CREATE TOPIC IF NOT EXISTS weather " + "(city VARCHAR, temperature DOUBLE, date DATE);" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_TOPIC") + .build() + .build()} + +write notify CREATE_TOPIC_COMPLETED + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/client.rpt similarity index 94% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/client.rpt index c4d7f7c809..22a5814c91 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE ZSTREAM IF NOT EXISTS weather " +write "CREATE STREAM IF NOT EXISTS weather " "(city VARCHAR, temperature DOUBLE, date DATE);" [0x00] @@ -41,7 +41,7 @@ write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_ZSTREAM") + .tag("CREATE_STREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/server.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/server.rpt index a8b62bb091..5a671eac54 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/server.rpt @@ -36,14 +36,14 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE ZSTREAM IF NOT EXISTS weather " +read "CREATE STREAM IF NOT EXISTS weather " "(city VARCHAR, temperature DOUBLE, date DATE);" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_ZSTREAM") + .tag("CREATE_STREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstreams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/client.rpt similarity index 94% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstreams/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/client.rpt index 015e356a6e..654a80b42c 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstreams/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE ZSTREAM IF NOT EXISTS weather_c " +write "CREATE STREAM IF NOT EXISTS weather_c " "(city VARCHAR, temperature DOUBLE, date DATE);" [0x00] @@ -41,7 +41,7 @@ write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_ZSTREAM") + .tag("CREATE_STREAM") .build() .build()} @@ -66,7 +66,7 @@ write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_ZSTREAM") + .tag("CREATE_STREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstreams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/server.rpt similarity index 92% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstreams/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/server.rpt index e06bc6f6d4..a554504f89 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstreams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/server.rpt @@ -36,14 +36,14 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE ZSTREAM IF NOT EXISTS weather_c " +read "CREATE STREAM IF NOT EXISTS weather_c " "(city VARCHAR, temperature DOUBLE, date DATE);" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_ZSTREAM") + .tag("CREATE_STREAM") .build() .build()} @@ -54,14 +54,14 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} -read "CREATE ZSTREAM IF NOT EXISTS weather_f " +read "CREATE STREAM IF NOT EXISTS weather_f " "(city VARCHAR, temperature DOUBLE, date DATE);" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_ZSTREAM") + .tag("CREATE_STREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream.with.includes/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream.with.includes/client.rpt deleted file mode 100644 index e7991cebf2..0000000000 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream.with.includes/client.rpt +++ /dev/null @@ -1,64 +0,0 @@ -# -# Copyright 2021-2024 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. -# - -connect "zilla://streams/app0" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} - -write "CREATE ZSTREAM commands (\n" - " type VARCHAR,\n" - " city VARCHAR,\n" - " temperature DOUBLE,\n" - " date DATE,\n" - " amount DOUBLE PRECISION,\n" - " notes VARCHAR\n" - ") WITH (\n" - " reply_to = 'replies',\n" - " function = compute_status_and_correlation_id,\n" - " timestamp = 'timestamp',\n" - " identity = 'owner_id'\n" - ");" -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_ZSTREAM") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream.with.includes/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream.with.includes/server.rpt deleted file mode 100644 index 6a39e2bc0f..0000000000 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream.with.includes/server.rpt +++ /dev/null @@ -1,66 +0,0 @@ -# -# Copyright 2021-2024 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. -# - -property serverAddress "zilla://streams/app0" - -accept ${serverAddress} - option zilla:window 8192 - option zilla:transmission "duplex" - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "CREATE ZSTREAM commands (\n" - " type VARCHAR,\n" - " city VARCHAR,\n" - " temperature DOUBLE,\n" - " date DATE,\n" - " amount DOUBLE PRECISION,\n" - " notes VARCHAR\n" - ") WITH (\n" - " reply_to = 'replies',\n" - " function = compute_status_and_correlation_id,\n" - " timestamp = 'timestamp',\n" - " identity = 'owner_id'\n" - ");" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_ZSTREAM") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/client.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/client.rpt index a10393d043..6719ed9414 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "DROP ZSTREAM weather;" +write "DROP STREAM weather;" [0x00] write flush @@ -40,7 +40,7 @@ write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("DROP_ZSTREAM") + .tag("DROP_STREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/server.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/server.rpt index 0be3e7fa71..271d2431c8 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/server.rpt @@ -36,13 +36,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "DROP ZSTREAM weather;" +read "DROP STREAM weather;" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("DROP_ZSTREAM") + .tag("DROP_STREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java index 70b9e89eb0..48bf3ab766 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java @@ -58,10 +58,10 @@ public void shouldCreateStream() throws Exception @Test @Specification({ - "${app}/create.materialized.view/client", - "${app}/create.materialized.view/server" + "${app}/create.zview/client", + "${app}/create.zview/server" }) - public void shouldCreateMaterializedView() throws Exception + public void shouldCreateZview() throws Exception { k3po.finish(); } diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java index b8547cf0e0..448c4623bf 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java @@ -58,8 +58,8 @@ public void shouldCreateStream() throws Exception @Test @Specification({ - "${app}/create.materialized.view/client", - "${app}/create.materialized.view/server" + "${app}/create.zview/client", + "${app}/create.zview/server" }) public void shouldCreateMaterializedView() throws Exception { From 463d4264de2f7cc7a454e21f143138e5255054e3 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 26 Nov 2024 11:02:12 -0800 Subject: [PATCH 012/104] WIP --- .../binding/pgsql/parser/PostgreSqlParser.g4 | 15 ++-- .../binding/pgsql/parser/PgsqlParser.java | 32 ++++----- ....java => SqlAlterStreamTopicListener.java} | 8 +-- ...r.java => SqlAlterTableTopicListener.java} | 4 +- .../parser/listener/SqlCommandListener.java | 14 ++-- ...ener.java => SqlCreateStreamListener.java} | 8 +-- ....java => SqlCreateTableTopicListener.java} | 4 +- ...tener.java => SqlCreateZviewListener.java} | 4 +- .../binding/pgsql/parser/PgsqlParserTest.java | 70 +++++++++---------- .../alter.stream.add.column/client.rpt | 14 ++++ .../alter.stream.add.column/server.rpt | 12 ++++ .../alter.table.add.column/client.rpt | 14 ++++ .../alter.table.add.column/server.rpt | 12 ++++ .../client.stream.established/client.rpt | 14 ++++ .../client.stream.established/server.rpt | 12 ++++ .../client.rpt | 14 ++++ .../server.rpt | 12 ++++ .../create.function.embedded/client.rpt | 14 ++++ .../create.function.embedded/server.rpt | 12 ++++ .../create.function.python/client.rpt | 14 ++++ .../create.function.python/server.rpt | 12 ++++ .../create.function.return.struct/client.rpt | 14 ++++ .../create.function.return.struct/server.rpt | 12 ++++ .../create.function.return.table/client.rpt | 14 ++++ .../create.function.return.table/server.rpt | 12 ++++ .../effective/create.function/client.rpt | 14 ++++ .../effective/create.function/server.rpt | 12 ++++ .../create.stream.with.includes/client.rpt | 14 ++++ .../create.stream.with.includes/server.rpt | 12 ++++ .../effective/create.stream/client.rpt | 14 ++++ .../effective/create.stream/server.rpt | 12 ++++ .../effective/create.streams/client.rpt | 14 ++++ .../effective/create.streams/server.rpt | 12 ++++ .../client.rpt | 14 ++++ .../server.rpt | 12 ++++ .../create.table.with.primary.key/client.rpt | 14 ++++ .../create.table.with.primary.key/server.rpt | 12 ++++ .../drop.materialized.view/client.rpt | 14 ++++ .../drop.materialized.view/server.rpt | 12 ++++ .../streams/effective/drop.stream/client.rpt | 14 ++++ .../streams/effective/drop.stream/server.rpt | 12 ++++ .../streams/effective/drop.table/client.rpt | 14 ++++ .../streams/effective/drop.table/server.rpt | 12 ++++ .../client.rpt | 14 ++++ .../server.rpt | 12 ++++ .../query.with.multiple.statements/client.rpt | 14 ++++ .../query.with.multiple.statements/server.rpt | 12 ++++ .../streams/effective/set.variable/client.rpt | 14 ++++ .../streams/effective/set.variable/server.rpt | 12 ++++ .../show.tables.with.newline/client.rpt | 14 ++++ .../show.tables.with.newline/server.rpt | 12 ++++ .../stream/RisingwaveProxyFactory.java | 16 ++--- 52 files changed, 632 insertions(+), 89 deletions(-) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/{SqlAlterZStreamTopicListener.java => SqlAlterStreamTopicListener.java} (93%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/{SqlAlterZTableTopicListener.java => SqlAlterTableTopicListener.java} (96%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/{SqlCreateZStreamListener.java => SqlCreateStreamListener.java} (90%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/{SqlCreateZTableTopicListener.java => SqlCreateTableTopicListener.java} (96%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/{SqlCreateZViewListener.java => SqlCreateZviewListener.java} (94%) 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 6bec7abd1d..22f26f77f0 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,7 +105,7 @@ stmt | createschemastmt | createseqstmt | createstmt - | createzstreamstmt + | createstreamstmt | createsubscriptionstmt | createstatsstmt | createtablespacestmt @@ -409,13 +409,11 @@ altertablestmt | 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 ZSTREAM (IF_P EXISTS)? relation_expr alter_zstream_cmds - | ALTER ZTABLE (IF_P EXISTS)? relation_expr (alter_table_cmds | partition_cmd) - | ALTER ZTABLE ALL IN_P TABLESPACE name (OWNED BY role_list)? SET TABLESPACE name opt_nowait + | ALTER STREAM (IF_P EXISTS)? relation_expr alter_stream_cmds | ALTER VIEW (IF_P EXISTS)? qualified_name alter_table_cmds ; -alter_zstream_cmds +alter_stream_cmds : alter_stream_cmd (COMMA alter_stream_cmd)* ; @@ -690,8 +688,8 @@ copy_generic_opt_arg_list_item : opt_boolean_or_string ; -createzstreamstmt - : CREATE ZSTREAM (IF_P NOT EXISTS)? stream_name OPEN_PAREN stream_columns CLOSE_PAREN opt_with_stream +createstreamstmt + : CREATE STREAM (IF_P NOT EXISTS)? stream_name OPEN_PAREN stream_columns CLOSE_PAREN opt_with_stream ; stream_name @@ -723,7 +721,6 @@ createstmt opttable_type : TABLE | TOPIC - | ZTABLE ; opttemp @@ -1637,7 +1634,7 @@ object_type_any_name | VIEW | MATERIALIZED VIEW | TOPIC - | ZSTREAM + | STREAM | ZVIEW | ZTABLE | INDEX 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 d852aaba6c..18ee3ecf3e 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,13 +22,13 @@ import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.tree.ParseTreeWalker; -import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlAlterZStreamTopicListener; -import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlAlterZTableTopicListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlAlterStreamTopicListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlAlterTableTopicListener; 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.SqlCreateZStreamListener; -import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateZTableTopicListener; -import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateZViewListener; +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.SqlCreateZviewListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlDropListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; @@ -44,12 +44,12 @@ public final class PgsqlParser private final CommonTokenStream tokens; private final PostgreSqlParser parser; private final SqlCommandListener commandListener; - private final SqlCreateZStreamListener createStreamListener; - private final SqlCreateZTableTopicListener createTableListener; - private final SqlAlterZTableTopicListener alterTableListener; - private final SqlAlterZStreamTopicListener alterStreamListener; + private final SqlCreateStreamListener createStreamListener; + private final SqlCreateTableTopicListener createTableListener; + private final SqlAlterTableTopicListener alterTableListener; + private final SqlAlterStreamTopicListener alterStreamListener; private final SqlCreateFunctionListener createFunctionListener; - private final SqlCreateZViewListener createMaterializedViewListener; + private final SqlCreateZviewListener createMaterializedViewListener; private final SqlDropListener dropListener; public PgsqlParser() @@ -60,12 +60,12 @@ public PgsqlParser() this.tokens = new CommonTokenStream(lexer); this.parser = new PostgreSqlParser(tokens); this.commandListener = new SqlCommandListener(tokens); - this.createTableListener = new SqlCreateZTableTopicListener(tokens); - this.alterTableListener = new SqlAlterZTableTopicListener(tokens); - this.alterStreamListener = new SqlAlterZStreamTopicListener(tokens); - this.createStreamListener = new SqlCreateZStreamListener(tokens); + this.createTableListener = new SqlCreateTableTopicListener(tokens); + this.alterTableListener = new SqlAlterTableTopicListener(tokens); + this.alterStreamListener = new SqlAlterStreamTopicListener(tokens); + this.createStreamListener = new SqlCreateStreamListener(tokens); this.createFunctionListener = new SqlCreateFunctionListener(tokens); - this.createMaterializedViewListener = new SqlCreateZViewListener(tokens); + this.createMaterializedViewListener = new SqlCreateZviewListener(tokens); this.dropListener = new SqlDropListener(); parser.setErrorHandler(errorStrategy); } @@ -98,7 +98,7 @@ public Alter parseAlterZStream( return alterStreamListener.alter(); } - public Stream parseCreateZStream( + public Stream parseCreateStream( String sql) { parser(sql, createStreamListener); diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZStreamTopicListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterStreamTopicListener.java similarity index 93% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZStreamTopicListener.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterStreamTopicListener.java index 903f6e1170..329f5b6ca9 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZStreamTopicListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterStreamTopicListener.java @@ -25,14 +25,14 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.model.AlterExpression; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; -public class SqlAlterZStreamTopicListener extends PostgreSqlParserBaseListener +public class SqlAlterStreamTopicListener extends PostgreSqlParserBaseListener { private final TokenStream tokens; private String name; private final List alterExpressions = new ArrayList<>(); - public SqlAlterZStreamTopicListener( + public SqlAlterStreamTopicListener( TokenStream tokens) { this.tokens = tokens; @@ -59,8 +59,8 @@ public void enterQualified_name( } @Override - public void enterAlter_zstream_cmds( - PostgreSqlParser.Alter_zstream_cmdsContext ctx) + public void enterAlter_stream_cmds( + PostgreSqlParser.Alter_stream_cmdsContext ctx) { for (PostgreSqlParser.Alter_stream_cmdContext alterStreamCmdCtx : ctx.alter_stream_cmd()) { diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZTableTopicListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterTableTopicListener.java similarity index 96% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZTableTopicListener.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterTableTopicListener.java index 5419183612..b5b8ae4d99 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZTableTopicListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterTableTopicListener.java @@ -25,14 +25,14 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.model.AlterExpression; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; -public class SqlAlterZTableTopicListener extends PostgreSqlParserBaseListener +public class SqlAlterTableTopicListener extends PostgreSqlParserBaseListener { private final TokenStream tokens; private String name; private final List alterExpressions = new ArrayList<>(); - public SqlAlterZTableTopicListener( + public SqlAlterTableTopicListener( TokenStream tokens) { this.tokens = tokens; 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 7e656c5503..a5240d9ec9 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 @@ -54,25 +54,25 @@ public void enterCreatestmt( public void enterAltertablestmt( PostgreSqlParser.AltertablestmtContext ctx) { - if (ctx.ALTER() != null && ctx.ZTABLE() != null) + if (ctx.ALTER() != null && ctx.TABLE() != null) { - command = "ALTER ZTABLE"; + command = "ALTER TABLE"; } else if (ctx.ALTER() != null && ctx.TOPIC() != null) { command = "ALTER TOPIC"; } - else if (ctx.ALTER() != null && ctx.ZSTREAM() != null) + else if (ctx.ALTER() != null && ctx.STREAM() != null) { - command = "ALTER ZSTREAM"; + command = "ALTER STREAM"; } } @Override - public void enterCreatezstreamstmt( - PostgreSqlParser.CreatezstreamstmtContext ctx) + public void enterCreatestreamstmt( + PostgreSqlParser.CreatestreamstmtContext ctx) { - command = "CREATE ZSTREAM"; + command = "CREATE STREAM"; } @Override diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZStreamListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java similarity index 90% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZStreamListener.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java index d517fe752e..6f5e462103 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZStreamListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java @@ -23,14 +23,14 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Stream; -public class SqlCreateZStreamListener extends PostgreSqlParserBaseListener +public class SqlCreateStreamListener extends PostgreSqlParserBaseListener { private final Map columns = new LinkedHashMap<>(); private final TokenStream tokens; private String name; - public SqlCreateZStreamListener( + public SqlCreateStreamListener( TokenStream tokens) { this.tokens = tokens; @@ -57,8 +57,8 @@ public void enterQualified_name( } @Override - public void enterCreatezstreamstmt( - PostgreSqlParser.CreatezstreamstmtContext ctx) + public void enterCreatestreamstmt( + PostgreSqlParser.CreatestreamstmtContext ctx) { if (ctx.stream_columns() != null) { diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZTableTopicListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java similarity index 96% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZTableTopicListener.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java index 9e14975308..bda81c70f8 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZTableTopicListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java @@ -26,7 +26,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; -public class SqlCreateZTableTopicListener extends PostgreSqlParserBaseListener +public class SqlCreateTableTopicListener extends PostgreSqlParserBaseListener { private final List columns = new ArrayList<>(); private final Set primaryKeys = new ObjectHashSet<>(); @@ -34,7 +34,7 @@ public class SqlCreateZTableTopicListener extends PostgreSqlParserBaseListener private String name; - public SqlCreateZTableTopicListener( + public SqlCreateTableTopicListener( TokenStream tokens) { this.tokens = tokens; diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZViewListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZviewListener.java similarity index 94% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZViewListener.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZviewListener.java index 24465f68af..9ec800a663 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZViewListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZviewListener.java @@ -20,14 +20,14 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.View; -public class SqlCreateZViewListener extends PostgreSqlParserBaseListener +public class SqlCreateZviewListener extends PostgreSqlParserBaseListener { private final TokenStream tokens; private String name; private String select; - public SqlCreateZViewListener( + public SqlCreateZviewListener( TokenStream tokens) { this.tokens = tokens; 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 25075a1f2f..c0ea1fcc07 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 @@ -44,7 +44,7 @@ public void setUp() @Test public void shouldParseWithPrimaryKeySql() { - String sql = "CREATE ZTABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; + String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; Table table = parser.parseCreateZTable(sql); assertNotNull(table); @@ -55,7 +55,7 @@ public void shouldParseWithPrimaryKeySql() public void shouldCreateTableParseWithPrimaryKeysSql() { String sql = """ - CREATE ZTABLE example_table ( + CREATE TABLE example_table ( id INT PRIMARY KEY, name VARCHAR(100), age INT, @@ -73,7 +73,7 @@ PRIMARY KEY (id, name) @Test public void shouldParseCreateTableName() { - String sql = "CREATE ZTABLE test (id INT);"; + String sql = "CREATE TABLE test (id INT);"; Table table = parser.parseCreateZTable(sql); assertEquals("test", table.name()); @@ -82,7 +82,7 @@ public void shouldParseCreateTableName() @Test public void shouldParseCreateTableNameWithDoublePrecisionTypeField() { - String sql = "CREATE ZTABLE test (id DOUBLE PRECISION);"; + String sql = "CREATE TABLE test (id DOUBLE PRECISION);"; Table table = parser.parseCreateZTable(sql); assertEquals("test", table.name()); assertEquals("DOUBLE PRECISION", table.columns().get(0).type()); @@ -91,7 +91,7 @@ public void shouldParseCreateTableNameWithDoublePrecisionTypeField() @Test public void shouldParseCreateTableColumns() { - String sql = "CREATE ZTABLE test (id INT, name VARCHAR(100));"; + String sql = "CREATE TABLE test (id INT, name VARCHAR(100));"; Table table = parser.parseCreateZTable(sql); assertEquals(2, table.columns().size()); @@ -102,7 +102,7 @@ public void shouldParseCreateTableColumns() @Test public void shouldParseCreatreTablePrimaryKey() { - String sql = "CREATE ZTABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; + String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; Table table = parser.parseCreateZTable(sql); assertEquals(1, table.primaryKeys().size()); @@ -112,7 +112,7 @@ public void shouldParseCreatreTablePrimaryKey() @Test public void shouldParseCreateTableCompositePrimaryKey() { - String sql = "CREATE ZTABLE test (id INT, name VARCHAR(100), PRIMARY KEY (id, name));"; + String sql = "CREATE TABLE test (id INT, name VARCHAR(100), PRIMARY KEY (id, name));"; Table table = parser.parseCreateZTable(sql); assertEquals(2, table.primaryKeys().size()); @@ -123,7 +123,7 @@ public void shouldParseCreateTableCompositePrimaryKey() @Test public void shouldHandleEmptyCreateTable() { - String sql = "CREATE ZTABLE test ();"; + String sql = "CREATE TABLE test ();"; Table table = parser.parseCreateZTable(sql); assertEquals(0, table.columns().size()); @@ -170,14 +170,14 @@ public void shouldHandleInvalidCreateZView() @Test(expected = ParseCancellationException.class) public void shouldHandleInvalidCreateTable() { - String sql = "CREATE ZTABLE test"; + String sql = "CREATE TABLE test"; parser.parseCreateZTable(sql); } @Test public void shouldParseDropSingleTable() { - String sql = "DROP ZTABLE test_table;"; + String sql = "DROP TABLE test_table;"; List drops = parser.parseDrop(sql); assertEquals(1, drops.size()); @@ -187,7 +187,7 @@ public void shouldParseDropSingleTable() @Test public void shouldParseDropMultipleTables() { - String sql = "DROP ZTABLE table1, table2;"; + String sql = "DROP TABLE table1, table2;"; List drops = parser.parseDrop(sql); assertEquals(2, drops.size()); @@ -198,7 +198,7 @@ public void shouldParseDropMultipleTables() @Test(expected = ParseCancellationException.class) public void shouldHandleEmptyDropStatement() { - String sql = "DROP ZTABLE;"; + String sql = "DROP TABLE;"; List drops = parser.parseDrop(sql); assertEquals(0, drops.size()); @@ -227,8 +227,8 @@ public void shouldParseDropZView() @Test public void shouldParseCreateStream() { - String sql = "CREATE ZSTREAM test_stream (id INT, name VARCHAR(100));"; - Stream stream = parser.parseCreateZStream(sql); + String sql = "CREATE STREAM test_stream (id INT, name VARCHAR(100));"; + Stream stream = parser.parseCreateStream(sql); assertNotNull(stream); assertEquals("test_stream", stream.name()); assertEquals(2, stream.columns().size()); @@ -239,8 +239,8 @@ public void shouldParseCreateStream() @Test public void shouldParseCreateStreamIfNotExists() { - String sql = "CREATE ZSTREAM IF NOT EXISTS test_stream (id INT, name VARCHAR(100));"; - Stream stream = parser.parseCreateZStream(sql); + String sql = "CREATE STREAM IF NOT EXISTS test_stream (id INT, name VARCHAR(100));"; + Stream stream = parser.parseCreateStream(sql); assertNotNull(stream); assertEquals("test_stream", stream.name()); assertEquals(2, stream.columns().size()); @@ -251,8 +251,8 @@ public void shouldParseCreateStreamIfNotExists() @Test(expected = ParseCancellationException.class) public void shouldHandleInvalidCreateStream() { - String sql = "CREATE ZSTREAM test_stream"; - parser.parseCreateZStream(sql); + String sql = "CREATE STREAM test_stream"; + parser.parseCreateStream(sql); } @Test @@ -301,7 +301,7 @@ public void shouldHandleInvalidCreateFunction() @Test public void shouldParseCreateTableWithUniqueConstraint() { - String sql = "CREATE ZTABLE test (id INT UNIQUE, name VARCHAR(100));"; + String sql = "CREATE TABLE test (id INT UNIQUE, name VARCHAR(100));"; Table table = parser.parseCreateZTable(sql); assertNotNull(table); @@ -313,7 +313,7 @@ public void shouldParseCreateTableWithUniqueConstraint() @Test public void shouldParseCreateTableWithForeignKey() { - String sql = "CREATE ZTABLE test (id INT, name VARCHAR(100), CONSTRAINT fk_name FOREIGN KEY (name)" + + String sql = "CREATE TABLE test (id INT, name VARCHAR(100), CONSTRAINT fk_name FOREIGN KEY (name)" + " REFERENCES other_table(name));"; Table table = parser.parseCreateZTable(sql); assertNotNull(table); @@ -325,7 +325,7 @@ public void shouldParseCreateTableWithForeignKey() @Test public void shouldParseCreateTableWithCheckConstraint() { - String sql = "CREATE ZTABLE test (id INT, name VARCHAR(100), CHECK (id > 0));"; + String sql = "CREATE TABLE test (id INT, name VARCHAR(100), CHECK (id > 0));"; Table table = parser.parseCreateZTable(sql); assertNotNull(table); @@ -337,14 +337,14 @@ public void shouldParseCreateTableWithCheckConstraint() @Test public void shouldHandleInvalidCreateTableWithMissingColumns() { - String sql = "CREATE ZTABLE test ();"; + String sql = "CREATE TABLE test ();"; parser.parseCreateZTable(sql); } @Test public void shouldParseCreateTableWithDefaultValues() { - String sql = "CREATE ZTABLE test (id INT DEFAULT 0, name VARCHAR(100) DEFAULT 'unknown');"; + String sql = "CREATE TABLE test (id INT DEFAULT 0, name VARCHAR(100) DEFAULT 'unknown');"; Table table = parser.parseCreateZTable(sql); assertNotNull(table); @@ -356,7 +356,7 @@ public void shouldParseCreateTableWithDefaultValues() @Test public void shouldParseCreateTableWithNotNullConstraint() { - String sql = "CREATE ZTABLE test (id INT NOT NULL, name VARCHAR(100) NOT NULL);"; + String sql = "CREATE TABLE test (id INT NOT NULL, name VARCHAR(100) NOT NULL);"; Table table = parser.parseCreateZTable(sql); assertNotNull(table); @@ -368,7 +368,7 @@ public void shouldParseCreateTableWithNotNullConstraint() @Test public void shouldParseCreateTableWithMultipleConstraints() { - String sql = "CREATE ZTABLE test (id INT PRIMARY KEY, name VARCHAR(100) UNIQUE, age INT CHECK (age > 0));"; + String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100) UNIQUE, age INT CHECK (age > 0));"; Table table = parser.parseCreateZTable(sql); assertNotNull(table); @@ -381,7 +381,7 @@ public void shouldParseCreateTableWithMultipleConstraints() @Test public void shouldParseAlterTableAddColumn() { - String sql = "ALTER ZTABLE test_table ADD COLUMN new_column INT;"; + String sql = "ALTER TABLE test_table ADD COLUMN new_column INT;"; Alter alter = parser.parseAlterZTable(sql); assertEquals("test_table", alter.name()); @@ -407,7 +407,7 @@ public void shouldParseAlterTopicAddColumn() @Test public void shouldParseAlterTableDropColumn() { - String sql = "ALTER ZTABLE test_table DROP COLUMN old_column;"; + String sql = "ALTER TABLE test_table DROP COLUMN old_column;"; Alter alter = parser.parseAlterZTable(sql); assertEquals("test_table", alter.name()); @@ -419,7 +419,7 @@ public void shouldParseAlterTableDropColumn() @Test public void shouldParseAlterTableModifyColumn() { - String sql = "ALTER ZTABLE test_table ALTER COLUMN existing_column TYPE VARCHAR(100);"; + String sql = "ALTER TABLE test_table ALTER COLUMN existing_column TYPE VARCHAR(100);"; Alter alter = parser.parseAlterZTable(sql); assertEquals("test_table", alter.name()); @@ -431,15 +431,15 @@ public void shouldParseAlterTableModifyColumn() @Test(expected = ParseCancellationException.class) public void shouldHandleInvalidAlterTable() { - String sql = "ALTER ZTABLE"; + String sql = "ALTER TABLE"; parser.parseAlterZTable(sql); } @Test public void shouldParseCommandForAlterTable() { - String sql = "ALTER ZTABLE test_table ALTER COLUMN existing_column TYPE VARCHAR(100);"; - String expectedCommand = "ALTER ZTABLE"; + String sql = "ALTER TABLE test_table ALTER COLUMN existing_column TYPE VARCHAR(100);"; + String expectedCommand = "ALTER TABLE"; String parsedCommand = parser.parseCommand(sql); @@ -460,7 +460,7 @@ public void shouldParseCommandForCreateTopic() @Test public void shouldParseAlterStreamAddColumn() { - String sql = "ALTER ZSTREAM test_stream ADD COLUMN new_column INT;"; + String sql = "ALTER STREAM test_stream ADD COLUMN new_column INT;"; Alter alter = parser.parseAlterZStream(sql); assertEquals("test_stream", alter.name()); @@ -473,7 +473,7 @@ public void shouldParseAlterStreamAddColumn() @Test public void shouldParseAlterStreamDropColumn() { - String sql = "ALTER ZSTREAM test_stream DROP COLUMN old_column;"; + String sql = "ALTER STREAM test_stream DROP COLUMN old_column;"; Alter alter = parser.parseAlterZStream(sql); assertEquals("test_stream", alter.name()); @@ -485,14 +485,14 @@ public void shouldParseAlterStreamDropColumn() @Test(expected = ParseCancellationException.class) public void shouldHandleInvalidAlterStream() { - String sql = "ALTER ZSTREAM"; + String sql = "ALTER STREAM"; parser.parseAlterZStream(sql); } @Test public void shouldParseAlterStreamModifyColumn() { - String sql = "ALTER ZSTREAM test_stream ALTER COLUMN existing_column TYPE VARCHAR(100);"; + String sql = "ALTER STREAM test_stream ALTER COLUMN existing_column TYPE VARCHAR(100);"; Alter alter = parser.parseAlterZStream(sql); assertEquals("test_stream", alter.name()); diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt index 6bdf76e089..35798afca2 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt index bd173a2e6f..5b03da9fa3 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "zillabase_admin") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt index e60ca77c21..1c54dd1a17 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt index e796dab7bb..39ecd61f49 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt index e6a1fe7389..1083f54078 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/server.rpt index d10bd71c52..2d378b0343 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/server.rpt @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/client.rpt index 25e296cb27..758510cac0 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/client.rpt @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/server.rpt index f7d174bafc..2b3434f7ec 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/server.rpt @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/client.rpt index 0fb46531ae..14e8834ca5 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/client.rpt @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/server.rpt index f2a45e9da4..c559e69ece 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/server.rpt @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") 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 17f2f10532..78e7087b97 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 @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" 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 6500f7fe4a..d85d807c12 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 @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") 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 3066ba99a6..f0cc5c7a36 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 @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" 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 94128b4acc..e354bef80e 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 @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") 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 59de659e89..2a76dc3a41 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 @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" 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 040c4803f4..bc8d9924bd 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 @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") 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 0386c7b931..6434d5ccb6 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 @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" 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 32fe2ad714..801581000f 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 @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") 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 2d5f01a96d..952031e1bd 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 @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" 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 49e1b212ee..8e583c6e96 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 @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt index 8c4252bd4d..0bfd7ea84e 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt index abb3bd3144..3805ecdbff 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "zillabase_admin") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt index cdc0a336e7..de38517efe 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt index 141ecde172..d6942ed1af 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") 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 a2da81d69b..91a4343d93 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 @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" 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 f8ca3b201f..8ae0fd86c4 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 @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt index 3e96aa4d86..09deca6462 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt index 4d0f8f4a72..90128c45af 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.materialized.view/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.materialized.view/client.rpt index 7535dafeca..e896706e4a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.materialized.view/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.materialized.view/client.rpt @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.materialized.view/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.materialized.view/server.rpt index b26b5a2e25..ee4ce30e6e 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.materialized.view/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.materialized.view/server.rpt @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt index a43200bc30..93328866fd 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt index 8dc3da63c8..0314f8dffa 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "zillabase_admin") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt index f66b08c317..14a2584af9 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt index 412a1f4634..ea27fa3630 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt index 1abbf96a89..8398f5e5c3 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt index 896bcd020f..979f5b00f8 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt index eab6faeb74..71bbe4e8c0 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt index 5c61450623..12256972cf 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/client.rpt index a6f37356a2..4946ad0270 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/client.rpt @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/server.rpt index d90c1adef9..5cfc11bd9a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/server.rpt @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/client.rpt index dc2689dbf9..072fc5f0ee 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/client.rpt @@ -13,6 +13,20 @@ # specific language governing permissions and limitations under the License. # +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/server.rpt index 4512e254ca..7e1aa68965 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/server.rpt @@ -19,6 +19,18 @@ accept "zilla://streams/app1" accepted +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accepted + read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "root") 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 068580e071..55a173354b 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 @@ -1596,7 +1596,7 @@ else if (server.commandsProcessed == 5) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1617,7 +1617,7 @@ private void decodeCreateStreamCommand( else { final RisingwaveBindingConfig binding = server.binding; - final Stream stream = parser.parseCreateZStream(statement); + final Stream stream = parser.parseCreateStream(statement); String newStatement = ""; int progress = 0; @@ -1637,7 +1637,7 @@ else if (server.commandsProcessed == 1) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1787,7 +1787,7 @@ else if (server.commandsProcessed == 1) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1827,7 +1827,7 @@ else if (server.commandsProcessed == 0) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1899,7 +1899,7 @@ else if (server.commandsProcessed == 5) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1939,7 +1939,7 @@ else if (server.commandsProcessed == 1) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1984,7 +1984,7 @@ else if (server.commandsProcessed == 2) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.completionCommand = ignoreFlushCommand; } From bed9c1c61cbacdc08494f56df89ddc8d0e73a1ba Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 26 Nov 2024 11:07:23 -0800 Subject: [PATCH 013/104] WIP --- .../stream/PgsqlKafkaProxyFactory.java | 4 +- .../binding/pgsql/parser/PostgreSqlParser.g4 | 1 - .../binding/pgsql/parser/PgsqlParser.java | 6 +-- .../binding/pgsql/parser/PgsqlParserTest.java | 52 +++++++++---------- .../stream/RisingwaveProxyFactory.java | 6 +-- .../engine/test/annotation/Configure.java | 3 +- 6 files changed, 35 insertions(+), 37 deletions(-) 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 aeb9ea030c..16d8ed2b25 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 @@ -1335,7 +1335,7 @@ private void decodeCreateTopicCommand( } else if (server.commandsProcessed == 0) { - final Table createTopic = parser.parseCreateZTable(statement); + final Table createTopic = parser.parseCreateTable(statement); final String topic = createTopic.name(); topics.clear(); @@ -1385,7 +1385,7 @@ private void decodeAlterTopicCommand( long authorization, String statement) { - final Alter alter = parser.parseAlterZTable(statement); + final Alter alter = parser.parseAlterTable(statement); final String topic = alter.name(); topics.clear(); 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 22f26f77f0..9025f5cf8c 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 @@ -1636,7 +1636,6 @@ object_type_any_name | TOPIC | STREAM | ZVIEW - | ZTABLE | 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 18ee3ecf3e..a299e74e9c 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 @@ -77,21 +77,21 @@ public String parseCommand( return commandListener.command(); } - public Table parseCreateZTable( + public Table parseCreateTable( String sql) { parser(sql, createTableListener); return createTableListener.table(); } - public Alter parseAlterZTable( + public Alter parseAlterTable( String sql) { parser(sql, alterTableListener); return alterTableListener.alter(); } - public Alter parseAlterZStream( + public Alter parseAlterStream( String sql) { parser(sql, alterStreamListener); 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 c0ea1fcc07..f156d758f8 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 @@ -45,7 +45,7 @@ public void setUp() public void shouldParseWithPrimaryKeySql() { String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; - Table table = parser.parseCreateZTable(sql); + Table table = parser.parseCreateTable(sql); assertNotNull(table); assertTrue(table.primaryKeys().contains("id")); @@ -61,7 +61,7 @@ name VARCHAR(100), age INT, PRIMARY KEY (id, name) );"""; - Table table = parser.parseCreateZTable(sql); + Table table = parser.parseCreateTable(sql); assertNotNull(table); assertEquals(2, table.primaryKeys().size()); @@ -74,7 +74,7 @@ PRIMARY KEY (id, name) public void shouldParseCreateTableName() { String sql = "CREATE TABLE test (id INT);"; - Table table = parser.parseCreateZTable(sql); + Table table = parser.parseCreateTable(sql); assertEquals("test", table.name()); } @@ -83,7 +83,7 @@ public void shouldParseCreateTableName() public void shouldParseCreateTableNameWithDoublePrecisionTypeField() { String sql = "CREATE TABLE test (id DOUBLE PRECISION);"; - Table table = parser.parseCreateZTable(sql); + Table table = parser.parseCreateTable(sql); assertEquals("test", table.name()); assertEquals("DOUBLE PRECISION", table.columns().get(0).type()); } @@ -92,7 +92,7 @@ public void shouldParseCreateTableNameWithDoublePrecisionTypeField() public void shouldParseCreateTableColumns() { String sql = "CREATE TABLE test (id INT, name VARCHAR(100));"; - Table table = parser.parseCreateZTable(sql); + Table table = parser.parseCreateTable(sql); assertEquals(2, table.columns().size()); assertEquals("INT", table.columns().get(0).type()); @@ -103,7 +103,7 @@ public void shouldParseCreateTableColumns() public void shouldParseCreatreTablePrimaryKey() { String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; - Table table = parser.parseCreateZTable(sql); + Table table = parser.parseCreateTable(sql); assertEquals(1, table.primaryKeys().size()); assertTrue(table.primaryKeys().contains("id")); @@ -113,7 +113,7 @@ public void shouldParseCreatreTablePrimaryKey() public void shouldParseCreateTableCompositePrimaryKey() { String sql = "CREATE TABLE test (id INT, name VARCHAR(100), PRIMARY KEY (id, name));"; - Table table = parser.parseCreateZTable(sql); + Table table = parser.parseCreateTable(sql); assertEquals(2, table.primaryKeys().size()); assertTrue(table.primaryKeys().contains("id")); @@ -124,7 +124,7 @@ public void shouldParseCreateTableCompositePrimaryKey() public void shouldHandleEmptyCreateTable() { String sql = "CREATE TABLE test ();"; - Table table = parser.parseCreateZTable(sql); + Table table = parser.parseCreateTable(sql); assertEquals(0, table.columns().size()); assertEquals(0, table.primaryKeys().size()); @@ -134,7 +134,7 @@ public void shouldHandleEmptyCreateTable() public void shouldHandleEmptySql() { String sql = ""; - Table table = parser.parseCreateZTable(sql); + Table table = parser.parseCreateTable(sql); assertNotNull(table); } @@ -171,7 +171,7 @@ public void shouldHandleInvalidCreateZView() public void shouldHandleInvalidCreateTable() { String sql = "CREATE TABLE test"; - parser.parseCreateZTable(sql); + parser.parseCreateTable(sql); } @Test @@ -302,7 +302,7 @@ public void shouldHandleInvalidCreateFunction() public void shouldParseCreateTableWithUniqueConstraint() { String sql = "CREATE TABLE test (id INT UNIQUE, name VARCHAR(100));"; - Table table = parser.parseCreateZTable(sql); + Table table = parser.parseCreateTable(sql); assertNotNull(table); assertEquals(2, table.columns().size()); @@ -315,7 +315,7 @@ public void shouldParseCreateTableWithForeignKey() { String sql = "CREATE TABLE test (id INT, name VARCHAR(100), CONSTRAINT fk_name FOREIGN KEY (name)" + " REFERENCES other_table(name));"; - Table table = parser.parseCreateZTable(sql); + Table table = parser.parseCreateTable(sql); assertNotNull(table); assertEquals(2, table.columns().size()); assertEquals("id", table.columns().get(0).name()); @@ -326,7 +326,7 @@ public void shouldParseCreateTableWithForeignKey() public void shouldParseCreateTableWithCheckConstraint() { String sql = "CREATE TABLE test (id INT, name VARCHAR(100), CHECK (id > 0));"; - Table table = parser.parseCreateZTable(sql); + Table table = parser.parseCreateTable(sql); assertNotNull(table); assertEquals(2, table.columns().size()); @@ -338,14 +338,14 @@ public void shouldParseCreateTableWithCheckConstraint() public void shouldHandleInvalidCreateTableWithMissingColumns() { String sql = "CREATE TABLE test ();"; - parser.parseCreateZTable(sql); + parser.parseCreateTable(sql); } @Test public void shouldParseCreateTableWithDefaultValues() { String sql = "CREATE TABLE test (id INT DEFAULT 0, name VARCHAR(100) DEFAULT 'unknown');"; - Table table = parser.parseCreateZTable(sql); + Table table = parser.parseCreateTable(sql); assertNotNull(table); assertEquals(2, table.columns().size()); @@ -357,7 +357,7 @@ public void shouldParseCreateTableWithDefaultValues() public void shouldParseCreateTableWithNotNullConstraint() { String sql = "CREATE TABLE test (id INT NOT NULL, name VARCHAR(100) NOT NULL);"; - Table table = parser.parseCreateZTable(sql); + Table table = parser.parseCreateTable(sql); assertNotNull(table); assertEquals(2, table.columns().size()); @@ -369,7 +369,7 @@ public void shouldParseCreateTableWithNotNullConstraint() public void shouldParseCreateTableWithMultipleConstraints() { String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100) UNIQUE, age INT CHECK (age > 0));"; - Table table = parser.parseCreateZTable(sql); + Table table = parser.parseCreateTable(sql); assertNotNull(table); assertEquals(3, table.columns().size()); @@ -382,7 +382,7 @@ public void shouldParseCreateTableWithMultipleConstraints() public void shouldParseAlterTableAddColumn() { String sql = "ALTER TABLE test_table ADD COLUMN new_column INT;"; - Alter alter = parser.parseAlterZTable(sql); + Alter alter = parser.parseAlterTable(sql); assertEquals("test_table", alter.name()); assertEquals(1, alter.expressions().size()); @@ -395,7 +395,7 @@ public void shouldParseAlterTableAddColumn() public void shouldParseAlterTopicAddColumn() { String sql = "ALTER TOPIC test_table ADD COLUMN new_column INT;"; - Alter alter = parser.parseAlterZTable(sql); + Alter alter = parser.parseAlterTable(sql); assertEquals("test_table", alter.name()); assertEquals(1, alter.expressions().size()); @@ -408,7 +408,7 @@ public void shouldParseAlterTopicAddColumn() public void shouldParseAlterTableDropColumn() { String sql = "ALTER TABLE test_table DROP COLUMN old_column;"; - Alter alter = parser.parseAlterZTable(sql); + Alter alter = parser.parseAlterTable(sql); assertEquals("test_table", alter.name()); assertEquals(1, alter.expressions().size()); @@ -420,7 +420,7 @@ public void shouldParseAlterTableDropColumn() public void shouldParseAlterTableModifyColumn() { String sql = "ALTER TABLE test_table ALTER COLUMN existing_column TYPE VARCHAR(100);"; - Alter alter = parser.parseAlterZTable(sql); + Alter alter = parser.parseAlterTable(sql); assertEquals("test_table", alter.name()); assertEquals(1, alter.expressions().size()); @@ -432,7 +432,7 @@ public void shouldParseAlterTableModifyColumn() public void shouldHandleInvalidAlterTable() { String sql = "ALTER TABLE"; - parser.parseAlterZTable(sql); + parser.parseAlterTable(sql); } @Test @@ -461,7 +461,7 @@ public void shouldParseCommandForCreateTopic() public void shouldParseAlterStreamAddColumn() { String sql = "ALTER STREAM test_stream ADD COLUMN new_column INT;"; - Alter alter = parser.parseAlterZStream(sql); + Alter alter = parser.parseAlterStream(sql); assertEquals("test_stream", alter.name()); assertEquals(1, alter.expressions().size()); @@ -474,7 +474,7 @@ public void shouldParseAlterStreamAddColumn() public void shouldParseAlterStreamDropColumn() { String sql = "ALTER STREAM test_stream DROP COLUMN old_column;"; - Alter alter = parser.parseAlterZStream(sql); + Alter alter = parser.parseAlterStream(sql); assertEquals("test_stream", alter.name()); assertEquals(1, alter.expressions().size()); @@ -486,14 +486,14 @@ public void shouldParseAlterStreamDropColumn() public void shouldHandleInvalidAlterStream() { String sql = "ALTER STREAM"; - parser.parseAlterZStream(sql); + parser.parseAlterStream(sql); } @Test public void shouldParseAlterStreamModifyColumn() { String sql = "ALTER STREAM test_stream ALTER COLUMN existing_column TYPE VARCHAR(100);"; - Alter alter = parser.parseAlterZStream(sql); + Alter alter = parser.parseAlterStream(sql); assertEquals("test_stream", alter.name()); assertEquals(1, alter.expressions().size()); 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 55a173354b..68e393a229 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 @@ -1560,7 +1560,7 @@ private void decodeCreateTableCommand( else { final RisingwaveBindingConfig binding = server.binding; - final Table table = parser.parseCreateZTable(statement); + final Table table = parser.parseCreateTable(statement); String newStatement = ""; int progress = 0; @@ -1751,7 +1751,7 @@ private void decodeAlterTableCommand( String statement) { final RisingwaveBindingConfig binding = server.binding; - final Alter alter = parser.parseAlterZTable(statement); + final Alter alter = parser.parseAlterTable(statement); boolean supportedOperation = alter.expressions().stream() .noneMatch(c -> c.operation() != Operation.ADD); @@ -1800,7 +1800,7 @@ private void decodeAlterStreamCommand( String statement) { final RisingwaveBindingConfig binding = server.binding; - final Alter alter = parser.parseAlterZStream(statement); + final Alter alter = parser.parseAlterStream(statement); boolean supportedOperation = alter.expressions().stream() .noneMatch(c -> c.operation() != Operation.ADD); diff --git a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/annotation/Configure.java b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/annotation/Configure.java index 7a4787f088..7b679d1527 100644 --- a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/annotation/Configure.java +++ b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/annotation/Configure.java @@ -24,8 +24,7 @@ @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.METHOD }) @Repeatable(Configures.class) -public @interface -Configure +public @interface Configure { String name(); String value(); From 586ea6735736caa4920f519ce114535b359d5ec1 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 26 Nov 2024 11:20:07 -0800 Subject: [PATCH 014/104] WIP --- .../zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 9025f5cf8c..c7f6c509a7 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 @@ -405,12 +405,12 @@ altertablestmt | 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 ZVIEW (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 STREAM (IF_P EXISTS)? relation_expr alter_stream_cmds - | ALTER VIEW (IF_P EXISTS)? qualified_name alter_table_cmds + | ALTER ZVIEW (IF_P EXISTS)? qualified_name alter_table_cmds ; alter_stream_cmds From ac7758df3813586b53018d59e0f78874656cbe5b Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 26 Nov 2024 11:36:13 -0800 Subject: [PATCH 015/104] WIP --- .../zilla/runtime/binding/pgsql/parser/PostgreSqlLexer.g4 | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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 9b7814678b..4a399379c8 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 @@ -289,9 +289,7 @@ TO: 'TO'; TOPIC: 'TOPIC'; -ZSTREAM: 'ZSTREAM'; - -ZTABLE: 'ZTABLE'; +STREAM: 'STREAM'; ZVIEW: 'ZVIEW'; From 8372f5cfe3dabe4b9d1d4b4813d2511fe663abc9 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 26 Nov 2024 12:12:14 -0800 Subject: [PATCH 016/104] WIP --- .../client.rpt | 45 ++++++++++++++----- .../server.rpt | 41 ++++++++++++----- .../client.rpt | 4 +- .../server.rpt | 4 +- .../risingwave/streams/EffectiveIT.java | 6 +-- .../binding/risingwave/streams/PgsqlIT.java | 10 ++--- 6 files changed, 77 insertions(+), 33 deletions(-) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{drop.materialized.view => drop.zview}/client.rpt (83%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{drop.materialized.view => drop.zview}/server.rpt (83%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{drop.materialized.view => drop.zview}/client.rpt (94%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{drop.materialized.view => drop.zview}/server.rpt (94%) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.materialized.view/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt similarity index 83% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.materialized.view/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt index e896706e4a..78a6919bce 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.materialized.view/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt @@ -27,33 +27,42 @@ write zilla:begin.ext ${pgsql:beginEx() connected -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "DROP SINK cg_zillabase.weather_sink;" + [0x00] +write flush -write zilla:begin.ext ${pgsql:beginEx() +read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") + .completion() + .tag("DROP_SINK") + .build() .build()} -connected +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -write "DROP SINK weather_sink;" +write "DELETE FROM cg_zillabase.zviews WHERE name = 'weather';" [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("DROP_SINK") + .tag("DELETE 0 1") .build() .build()} @@ -64,6 +73,20 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.materialized.view/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt similarity index 83% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.materialized.view/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt index ee4ce30e6e..9c14fb6043 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.materialized.view/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt @@ -29,30 +29,40 @@ read zilla:begin.ext ${pgsql:beginEx() connected -accepted +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "DROP SINK cg_zillabase.weather_sink;" + [0x00] -read zilla:begin.ext ${pgsql:beginEx() +write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") + .completion() + .tag("DROP_SINK") + .build() .build()} -connected +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -read "DROP SINK weather_sink;" - [0x00] +read "DELETE FROM cg_zillabase.zviews WHERE name = 'weather';" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("DROP_SINK") + .tag("DELETE 0 1") .build() .build()} @@ -62,6 +72,17 @@ write advise zilla:flush ${pgsql:flushEx() .status("IDLE") .build() .build()} +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.materialized.view/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/client.rpt similarity index 94% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.materialized.view/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/client.rpt index 77a1dc273c..506debfee0 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.materialized.view/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/client.rpt @@ -32,14 +32,14 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "DROP MATERIALIZED VIEW weather;" +write "DROP ZVIEW weather;" [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("DROP_MATERIALIZED_VIEW") + .tag("DROP_ZVIEW") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.materialized.view/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/server.rpt similarity index 94% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.materialized.view/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/server.rpt index f0fa2b75b6..1f3866c15c 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.materialized.view/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/server.rpt @@ -36,13 +36,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "DROP MATERIALIZED VIEW weather;" +read "DROP ZVIEW weather;" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("DROP_MATERIALIZED_VIEW") + .tag("DROP_ZVIEW") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java index 48bf3ab766..0f07415379 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java @@ -211,9 +211,9 @@ public void shouldDropStream() throws Exception @Test @Specification({ - "${app}/drop.materialized.view/client", - "${app}/drop.materialized.view/server" }) - public void shouldDropMaterializedView() throws Exception + "${app}/drop.zview/client", + "${app}/drop.zview/server" }) + public void shouldDropZview() throws Exception { k3po.finish(); } diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java index 448c4623bf..e29f493769 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java @@ -61,7 +61,7 @@ public void shouldCreateStream() throws Exception "${app}/create.zview/client", "${app}/create.zview/server" }) - public void shouldCreateMaterializedView() throws Exception + public void shouldCreateZview() throws Exception { k3po.finish(); } @@ -165,7 +165,7 @@ public void shouldShowTablesWithNewline() throws Exception @Specification({ "${app}/create.streams/client", "${app}/create.streams/server" }) - public void shouldCreateTables() throws Exception + public void shouldCreateStreams() throws Exception { k3po.finish(); } @@ -209,9 +209,9 @@ public void shouldDropStream() throws Exception @Test @Specification({ - "${app}/drop.materialized.view/client", - "${app}/drop.materialized.view/server" }) - public void shouldDropMaterializedView() throws Exception + "${app}/drop.zview/client", + "${app}/drop.zview/server" }) + public void shouldDropZview() throws Exception { k3po.finish(); } From 3dc8c3a3a6094187d79e9ca0ab7c562e2c84a3f3 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 26 Nov 2024 13:39:51 -0800 Subject: [PATCH 017/104] WIP --- .../risingwave/internal/config/RisingwaveBindingConfig.java | 4 ++-- .../internal/statement/RisingwaveCreateSinkTemplate.java | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java index 436e8d7e44..1c532919e2 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java @@ -46,7 +46,7 @@ public final class RisingwaveBindingConfig { - private final static String SCHEMA = "cg_zillabase"; + private static final String SCHEMA = "cg_zillabase"; public final long id; public final String name; @@ -97,7 +97,7 @@ public RisingwaveBindingConfig( this.createTable = new RisingwaveCreateTableTemplate(); this.createSource = new RisingwaveCreateSourceTemplate(bootstrapServer, location, config.kafkaScanStartupTimestampMillis()); - this.createSink = new RisingwaveCreateSinkTemplate(SCHEMA,bootstrapServer, location); + this.createSink = new RisingwaveCreateSinkTemplate(SCHEMA, bootstrapServer, location); this.createTopic = new RisingwaveCreateTopicTemplate(); this.createView = new RisingwaveCreateMaterializedViewTemplate(); this.alterTable = new RisingwaveAlterTableTemplate(); 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 85f1424c4d..c444714e7e 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 @@ -72,7 +72,8 @@ public String generate( String textPrimaryKey = primaryKeyMatch.map(Map.Entry::getKey).orElse(null); String primaryKey = textPrimaryKey != null ? primaryKeyFormat.formatted(textPrimaryKey) : ""; - return String.format(sqlKafkaFormat, this.schema, viewName, viewName, bootstrapServer, schema, viewName, primaryKey, schemaRegistry); + return String.format(sqlKafkaFormat, this.schema, viewName, viewName, bootstrapServer, + schema, viewName, primaryKey, schemaRegistry); } public String generate( From 478be8f88030a5a317121a61ad6e77a1a4eec4b5 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 26 Nov 2024 16:17:07 -0800 Subject: [PATCH 018/104] WIP --- .../binding-pgsql/gen/PostgreSqlLexer.interp | 2083 +++++++ .../binding-pgsql/gen/PostgreSqlLexer.java | 5263 +++++++++++++++++ .../binding-pgsql/gen/PostgreSqlLexer.tokens | 1320 +++++ .../client.rpt | 4 +- .../server.rpt | 4 +- .../streams/effective/drop.table/client.rpt | 4 +- .../streams/effective/drop.table/server.rpt | 4 +- .../query.with.multiple.statements/client.rpt | 4 +- .../query.with.multiple.statements/server.rpt | 4 +- .../config/RisingwaveBindingConfig.java | 12 +- .../config/RisingwaveCommandType.java | 2 +- .../RisingwaveCreateSinkTemplate.java | 14 +- .../RisingwaveDeleteFromCatalogTemplate.java | 35 + .../statement/RisingwaveDropSinkTemplate.java | 13 +- .../stream/RisingwaveCompletionCommand.java | 2 +- .../stream/RisingwaveProxyFactory.java | 25 +- .../risingwave/internal/stream/ProxyIT.java | 6 +- 17 files changed, 8757 insertions(+), 42 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 create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDeleteFromCatalogTemplate.java diff --git a/incubator/binding-pgsql/gen/PostgreSqlLexer.interp b/incubator/binding-pgsql/gen/PostgreSqlLexer.interp new file mode 100644 index 0000000000..b32028bf29 --- /dev/null +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.interp @@ -0,0 +1,2083 @@ +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' +'ZVIEW' +'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 +ZVIEW +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 +ZVIEW +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, 682, 6816, 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, 2, 697, 7, 697, 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, 1467, 8, 27, 11, 27, 12, 27, 1468, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1475, 8, 28, 11, 28, 12, 28, 1476, 1, 28, 1, 28, 1, 28, 3, 28, 1482, 8, 28, 1, 28, 1, 28, 4, 28, 1486, 8, 28, 11, 28, 12, 28, 1487, 1, 28, 3, 28, 1491, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1500, 8, 29, 10, 29, 12, 29, 1503, 9, 29, 1, 29, 1, 29, 3, 29, 1507, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1512, 8, 29, 11, 29, 12, 29, 1513, 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, 101, 1, 101, 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, 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, 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, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 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, 112, 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, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 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, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 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, 118, 1, 118, 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, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 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, 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, 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, 131, 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, 134, 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, 136, 1, 136, 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, 138, 1, 138, 1, 138, 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, 142, 1, 142, 1, 142, 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, 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, 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, 147, 1, 147, 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, 149, 1, 150, 1, 150, 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, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 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, 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, 157, 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, 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, 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, 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, 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, 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, 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, 171, 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, 172, 1, 172, 1, 172, 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, 174, 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, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 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, 181, 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, 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, 185, 1, 185, 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, 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, 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, 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, 194, 1, 194, 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, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 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, 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, 201, 1, 201, 1, 201, 1, 201, 1, 201, 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, 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, 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, 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, 210, 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, 212, 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, 214, 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, 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, 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, 220, 1, 220, 1, 220, 1, 221, 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, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 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, 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, 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, 231, 1, 231, 1, 231, 1, 231, 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, 235, 1, 235, 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, 237, 1, 237, 1, 237, 1, 237, 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, 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, 241, 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, 243, 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, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 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, 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, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 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, 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, 257, 1, 257, 1, 257, 1, 257, 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, 258, 1, 258, 1, 258, 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, 261, 1, 261, 1, 261, 1, 261, 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, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 269, 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, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 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, 277, 1, 277, 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, 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, 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, 284, 1, 284, 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, 286, 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, 288, 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, 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, 291, 1, 291, 1, 291, 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, 294, 1, 295, 1, 295, 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, 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, 298, 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, 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, 302, 1, 302, 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, 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, 309, 1, 309, 1, 309, 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, 311, 1, 311, 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, 314, 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, 315, 1, 316, 1, 316, 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, 319, 1, 319, 1, 319, 1, 319, 1, 319, 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, 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, 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, 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, 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, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 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, 336, 1, 336, 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, 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, 340, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 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, 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, 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, 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, 350, 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, 353, 1, 353, 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, 355, 1, 355, 1, 355, 1, 355, 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, 357, 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, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 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, 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, 363, 1, 363, 1, 363, 1, 363, 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, 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, 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, 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, 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, 374, 1, 374, 1, 374, 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, 377, 1, 377, 1, 377, 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, 378, 1, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 384, 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, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 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, 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, 391, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 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, 396, 1, 396, 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, 398, 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, 400, 1, 400, 1, 400, 1, 400, 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, 402, 1, 402, 1, 402, 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, 404, 1, 404, 1, 404, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 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, 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, 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, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 413, 1, 413, 1, 413, 1, 413, 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, 416, 1, 416, 1, 416, 1, 416, 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, 418, 1, 418, 1, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 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, 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, 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, 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, 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, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 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, 430, 1, 430, 1, 430, 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, 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, 434, 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, 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, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 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, 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, 443, 1, 443, 1, 443, 1, 443, 1, 444, 1, 444, 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, 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, 449, 1, 449, 1, 449, 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, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 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, 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, 457, 1, 458, 1, 458, 1, 458, 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, 460, 1, 460, 1, 460, 1, 460, 1, 461, 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, 463, 1, 463, 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, 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, 467, 1, 467, 1, 467, 1, 467, 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, 469, 1, 469, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 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, 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, 478, 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, 480, 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, 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, 484, 1, 484, 1, 484, 1, 484, 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, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 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, 493, 1, 493, 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, 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, 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, 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, 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, 500, 1, 500, 1, 500, 1, 500, 1, 501, 1, 501, 1, 501, 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, 502, 1, 502, 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, 506, 1, 506, 1, 506, 1, 506, 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, 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, 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, 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, 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, 516, 1, 516, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 519, 1, 519, 1, 519, 1, 519, 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, 522, 1, 522, 1, 522, 1, 523, 1, 523, 1, 523, 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, 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, 528, 1, 528, 1, 528, 1, 528, 1, 528, 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, 531, 1, 531, 1, 531, 1, 531, 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, 534, 1, 534, 1, 534, 1, 534, 1, 534, 1, 534, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 536, 1, 536, 1, 536, 1, 536, 1, 537, 1, 537, 1, 537, 1, 537, 1, 538, 1, 538, 1, 538, 1, 539, 1, 539, 1, 539, 1, 539, 1, 539, 1, 539, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 541, 1, 541, 1, 541, 1, 541, 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, 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, 546, 1, 547, 1, 547, 1, 547, 1, 547, 1, 547, 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, 549, 1, 549, 1, 549, 1, 549, 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, 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, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 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, 559, 1, 559, 1, 559, 1, 559, 1, 559, 1, 559, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 562, 1, 562, 1, 562, 1, 562, 1, 563, 1, 563, 1, 563, 1, 563, 1, 563, 1, 564, 1, 564, 1, 564, 1, 564, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 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, 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, 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, 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, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 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, 580, 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, 583, 1, 583, 1, 584, 1, 584, 1, 584, 1, 584, 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, 586, 1, 586, 1, 586, 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, 588, 1, 589, 1, 589, 1, 589, 1, 589, 1, 589, 1, 589, 1, 589, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 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, 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, 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, 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, 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, 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, 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, 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, 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, 606, 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, 608, 1, 608, 1, 608, 1, 608, 1, 608, 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, 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, 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, 616, 1, 616, 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, 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, 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, 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, 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, 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, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 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, 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, 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, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 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, 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, 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, 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, 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, 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, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 642, 1, 642, 5, 642, 6348, 8, 642, 10, 642, 12, 642, 6351, 9, 642, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 3, 643, 6359, 8, 643, 1, 644, 1, 644, 3, 644, 6363, 8, 644, 1, 645, 1, 645, 3, 645, 6367, 8, 645, 1, 646, 1, 646, 1, 646, 1, 647, 1, 647, 1, 647, 1, 647, 5, 647, 6376, 8, 647, 10, 647, 12, 647, 6379, 9, 647, 1, 648, 1, 648, 1, 648, 1, 649, 1, 649, 1, 649, 1, 649, 5, 649, 6388, 8, 649, 10, 649, 12, 649, 6391, 9, 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, 653, 1, 654, 1, 654, 1, 654, 1, 655, 1, 655, 1, 655, 1, 655, 5, 655, 6416, 8, 655, 10, 655, 12, 655, 6419, 9, 655, 1, 656, 1, 656, 1, 656, 1, 656, 1, 656, 1, 656, 1, 657, 1, 657, 1, 657, 1, 658, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 3, 659, 6436, 8, 659, 1, 659, 1, 659, 1, 659, 1, 659, 1, 659, 1, 660, 1, 660, 5, 660, 6445, 8, 660, 10, 660, 12, 660, 6448, 9, 660, 1, 661, 1, 661, 1, 661, 1, 662, 1, 662, 1, 662, 5, 662, 6456, 8, 662, 10, 662, 12, 662, 6459, 9, 662, 1, 663, 1, 663, 1, 663, 1, 664, 1, 664, 1, 664, 1, 665, 1, 665, 1, 665, 1, 666, 1, 666, 1, 666, 5, 666, 6473, 8, 666, 10, 666, 12, 666, 6476, 9, 666, 1, 667, 1, 667, 1, 667, 1, 668, 1, 668, 1, 668, 1, 669, 1, 669, 1, 670, 1, 670, 1, 670, 1, 670, 1, 670, 1, 670, 1, 671, 1, 671, 1, 671, 3, 671, 6495, 8, 671, 1, 671, 1, 671, 3, 671, 6499, 8, 671, 1, 671, 3, 671, 6502, 8, 671, 1, 671, 1, 671, 1, 671, 1, 671, 3, 671, 6508, 8, 671, 1, 671, 3, 671, 6511, 8, 671, 1, 671, 1, 671, 1, 671, 3, 671, 6516, 8, 671, 1, 671, 1, 671, 3, 671, 6520, 8, 671, 1, 672, 4, 672, 6523, 8, 672, 11, 672, 12, 672, 6524, 1, 673, 1, 673, 1, 673, 5, 673, 6530, 8, 673, 10, 673, 12, 673, 6533, 9, 673, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 5, 674, 6543, 8, 674, 10, 674, 12, 674, 6546, 9, 674, 1, 674, 1, 674, 1, 675, 4, 675, 6551, 8, 675, 11, 675, 12, 675, 6552, 1, 675, 1, 675, 1, 676, 1, 676, 3, 676, 6559, 8, 676, 1, 676, 3, 676, 6562, 8, 676, 1, 676, 1, 676, 1, 677, 1, 677, 1, 677, 1, 677, 5, 677, 6570, 8, 677, 10, 677, 12, 677, 6573, 9, 677, 1, 677, 1, 677, 1, 678, 1, 678, 1, 678, 1, 678, 5, 678, 6581, 8, 678, 10, 678, 12, 678, 6584, 9, 678, 1, 678, 1, 678, 1, 678, 4, 678, 6589, 8, 678, 11, 678, 12, 678, 6590, 1, 678, 1, 678, 4, 678, 6595, 8, 678, 11, 678, 12, 678, 6596, 1, 678, 5, 678, 6600, 8, 678, 10, 678, 12, 678, 6603, 9, 678, 1, 678, 5, 678, 6606, 8, 678, 10, 678, 12, 678, 6609, 9, 678, 1, 678, 1, 678, 1, 678, 1, 678, 1, 678, 1, 679, 1, 679, 1, 679, 1, 679, 5, 679, 6620, 8, 679, 10, 679, 12, 679, 6623, 9, 679, 1, 679, 1, 679, 1, 679, 4, 679, 6628, 8, 679, 11, 679, 12, 679, 6629, 1, 679, 1, 679, 4, 679, 6634, 8, 679, 11, 679, 12, 679, 6635, 1, 679, 3, 679, 6639, 8, 679, 5, 679, 6641, 8, 679, 10, 679, 12, 679, 6644, 9, 679, 1, 679, 4, 679, 6647, 8, 679, 11, 679, 12, 679, 6648, 1, 679, 4, 679, 6652, 8, 679, 11, 679, 12, 679, 6653, 1, 679, 5, 679, 6657, 8, 679, 10, 679, 12, 679, 6660, 9, 679, 1, 679, 3, 679, 6663, 8, 679, 1, 679, 1, 679, 1, 680, 1, 680, 1, 680, 1, 680, 5, 680, 6671, 8, 680, 10, 680, 12, 680, 6674, 9, 680, 1, 680, 5, 680, 6677, 8, 680, 10, 680, 12, 680, 6680, 9, 680, 1, 680, 1, 680, 5, 680, 6684, 8, 680, 10, 680, 12, 680, 6687, 9, 680, 3, 680, 6689, 8, 680, 1, 681, 1, 681, 1, 681, 1, 682, 1, 682, 1, 683, 1, 683, 1, 683, 1, 683, 1, 683, 1, 684, 1, 684, 3, 684, 6703, 8, 684, 1, 684, 1, 684, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 3, 685, 6727, 8, 685, 1, 685, 5, 685, 6730, 8, 685, 10, 685, 12, 685, 6733, 9, 685, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 687, 1, 687, 3, 687, 6742, 8, 687, 1, 687, 1, 687, 1, 688, 1, 688, 1, 688, 1, 688, 1, 688, 5, 688, 6751, 8, 688, 10, 688, 12, 688, 6754, 9, 688, 1, 689, 1, 689, 1, 689, 1, 689, 1, 689, 1, 690, 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, 1, 695, 1, 695, 1, 695, 1, 695, 1, 696, 4, 696, 6793, 8, 696, 11, 696, 12, 696, 6794, 1, 696, 1, 696, 5, 696, 6799, 8, 696, 10, 696, 12, 696, 6802, 9, 696, 3, 696, 6804, 8, 696, 1, 697, 1, 697, 3, 697, 6808, 8, 697, 1, 697, 1, 697, 1, 697, 1, 697, 1, 697, 1, 697, 1, 697, 0, 0, 698, 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, 639, 1291, 0, 1293, 0, 1295, 0, 1297, 640, 1299, 641, 1301, 642, 1303, 643, 1305, 644, 1307, 645, 1309, 646, 1311, 647, 1313, 648, 1315, 649, 1317, 0, 1319, 650, 1321, 651, 1323, 652, 1325, 0, 1327, 653, 1329, 654, 1331, 655, 1333, 656, 1335, 657, 1337, 658, 1339, 659, 1341, 660, 1343, 661, 1345, 662, 1347, 663, 1349, 0, 1351, 664, 1353, 665, 1355, 666, 1357, 667, 1359, 668, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 673, 1371, 674, 1373, 675, 1375, 0, 1377, 676, 1379, 677, 1381, 0, 1383, 0, 1385, 0, 1387, 678, 1389, 0, 1391, 0, 1393, 682, 1395, 679, 1397, 680, 1399, 681, 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, 87, 87, 119, 119, 2, 0, 81, 81, 113, 113, 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, 6888, 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, 1289, 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, 1323, 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, 1347, 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, 0, 1369, 1, 0, 0, 0, 1, 1371, 1, 0, 0, 0, 1, 1373, 1, 0, 0, 0, 1, 1377, 1, 0, 0, 0, 1, 1379, 1, 0, 0, 0, 2, 1383, 1, 0, 0, 0, 2, 1385, 1, 0, 0, 0, 2, 1387, 1, 0, 0, 0, 3, 1389, 1, 0, 0, 0, 3, 1391, 1, 0, 0, 0, 3, 1393, 1, 0, 0, 0, 3, 1395, 1, 0, 0, 0, 4, 1397, 1, 0, 0, 0, 4, 1399, 1, 0, 0, 0, 5, 1401, 1, 0, 0, 0, 7, 1403, 1, 0, 0, 0, 9, 1405, 1, 0, 0, 0, 11, 1407, 1, 0, 0, 0, 13, 1409, 1, 0, 0, 0, 15, 1411, 1, 0, 0, 0, 17, 1413, 1, 0, 0, 0, 19, 1415, 1, 0, 0, 0, 21, 1417, 1, 0, 0, 0, 23, 1419, 1, 0, 0, 0, 25, 1421, 1, 0, 0, 0, 27, 1423, 1, 0, 0, 0, 29, 1425, 1, 0, 0, 0, 31, 1427, 1, 0, 0, 0, 33, 1429, 1, 0, 0, 0, 35, 1431, 1, 0, 0, 0, 37, 1433, 1, 0, 0, 0, 39, 1435, 1, 0, 0, 0, 41, 1438, 1, 0, 0, 0, 43, 1441, 1, 0, 0, 0, 45, 1444, 1, 0, 0, 0, 47, 1447, 1, 0, 0, 0, 49, 1450, 1, 0, 0, 0, 51, 1453, 1, 0, 0, 0, 53, 1456, 1, 0, 0, 0, 55, 1459, 1, 0, 0, 0, 57, 1462, 1, 0, 0, 0, 59, 1464, 1, 0, 0, 0, 61, 1490, 1, 0, 0, 0, 63, 1501, 1, 0, 0, 0, 65, 1517, 1, 0, 0, 0, 67, 1519, 1, 0, 0, 0, 69, 1521, 1, 0, 0, 0, 71, 1523, 1, 0, 0, 0, 73, 1527, 1, 0, 0, 0, 75, 1535, 1, 0, 0, 0, 77, 1543, 1, 0, 0, 0, 79, 1547, 1, 0, 0, 0, 81, 1551, 1, 0, 0, 0, 83, 1557, 1, 0, 0, 0, 85, 1560, 1, 0, 0, 0, 87, 1564, 1, 0, 0, 0, 89, 1575, 1, 0, 0, 0, 91, 1580, 1, 0, 0, 0, 93, 1585, 1, 0, 0, 0, 95, 1590, 1, 0, 0, 0, 97, 1596, 1, 0, 0, 0, 99, 1604, 1, 0, 0, 0, 101, 1611, 1, 0, 0, 0, 103, 1622, 1, 0, 0, 0, 105, 1629, 1, 0, 0, 0, 107, 1645, 1, 0, 0, 0, 109, 1658, 1, 0, 0, 0, 111, 1671, 1, 0, 0, 0, 113, 1684, 1, 0, 0, 0, 115, 1702, 1, 0, 0, 0, 117, 1715, 1, 0, 0, 0, 119, 1723, 1, 0, 0, 0, 121, 1734, 1, 0, 0, 0, 123, 1739, 1, 0, 0, 0, 125, 1748, 1, 0, 0, 0, 127, 1751, 1, 0, 0, 0, 129, 1756, 1, 0, 0, 0, 131, 1763, 1, 0, 0, 0, 133, 1769, 1, 0, 0, 0, 135, 1775, 1, 0, 0, 0, 137, 1779, 1, 0, 0, 0, 139, 1787, 1, 0, 0, 0, 141, 1792, 1, 0, 0, 0, 143, 1798, 1, 0, 0, 0, 145, 1804, 1, 0, 0, 0, 147, 1811, 1, 0, 0, 0, 149, 1814, 1, 0, 0, 0, 151, 1824, 1, 0, 0, 0, 153, 1834, 1, 0, 0, 0, 155, 1839, 1, 0, 0, 0, 157, 1847, 1, 0, 0, 0, 159, 1855, 1, 0, 0, 0, 161, 1861, 1, 0, 0, 0, 163, 1871, 1, 0, 0, 0, 165, 1886, 1, 0, 0, 0, 167, 1890, 1, 0, 0, 0, 169, 1895, 1, 0, 0, 0, 171, 1902, 1, 0, 0, 0, 173, 1905, 1, 0, 0, 0, 175, 1910, 1, 0, 0, 0, 177, 1913, 1, 0, 0, 0, 179, 1919, 1, 0, 0, 0, 181, 1927, 1, 0, 0, 0, 183, 1935, 1, 0, 0, 0, 185, 1946, 1, 0, 0, 0, 187, 1956, 1, 0, 0, 0, 189, 1963, 1, 0, 0, 0, 191, 1976, 1, 0, 0, 0, 193, 1981, 1, 0, 0, 0, 195, 1991, 1, 0, 0, 0, 197, 1997, 1, 0, 0, 0, 199, 2002, 1, 0, 0, 0, 201, 2005, 1, 0, 0, 0, 203, 2011, 1, 0, 0, 0, 205, 2018, 1, 0, 0, 0, 207, 2024, 1, 0, 0, 0, 209, 2033, 1, 0, 0, 0, 211, 2038, 1, 0, 0, 0, 213, 2044, 1, 0, 0, 0, 215, 2051, 1, 0, 0, 0, 217, 2056, 1, 0, 0, 0, 219, 2062, 1, 0, 0, 0, 221, 2071, 1, 0, 0, 0, 223, 2076, 1, 0, 0, 0, 225, 2082, 1, 0, 0, 0, 227, 2089, 1, 0, 0, 0, 229, 2094, 1, 0, 0, 0, 231, 2108, 1, 0, 0, 0, 233, 2115, 1, 0, 0, 0, 235, 2125, 1, 0, 0, 0, 237, 2138, 1, 0, 0, 0, 239, 2144, 1, 0, 0, 0, 241, 2159, 1, 0, 0, 0, 243, 2166, 1, 0, 0, 0, 245, 2171, 1, 0, 0, 0, 247, 2177, 1, 0, 0, 0, 249, 2183, 1, 0, 0, 0, 251, 2186, 1, 0, 0, 0, 253, 2193, 1, 0, 0, 0, 255, 2198, 1, 0, 0, 0, 257, 2203, 1, 0, 0, 0, 259, 2208, 1, 0, 0, 0, 261, 2216, 1, 0, 0, 0, 263, 2224, 1, 0, 0, 0, 265, 2230, 1, 0, 0, 0, 267, 2235, 1, 0, 0, 0, 269, 2244, 1, 0, 0, 0, 271, 2250, 1, 0, 0, 0, 273, 2258, 1, 0, 0, 0, 275, 2266, 1, 0, 0, 0, 277, 2272, 1, 0, 0, 0, 279, 2281, 1, 0, 0, 0, 281, 2288, 1, 0, 0, 0, 283, 2295, 1, 0, 0, 0, 285, 2299, 1, 0, 0, 0, 287, 2305, 1, 0, 0, 0, 289, 2311, 1, 0, 0, 0, 291, 2321, 1, 0, 0, 0, 293, 2326, 1, 0, 0, 0, 295, 2332, 1, 0, 0, 0, 297, 2339, 1, 0, 0, 0, 299, 2349, 1, 0, 0, 0, 301, 2360, 1, 0, 0, 0, 303, 2363, 1, 0, 0, 0, 305, 2373, 1, 0, 0, 0, 307, 2382, 1, 0, 0, 0, 309, 2389, 1, 0, 0, 0, 311, 2395, 1, 0, 0, 0, 313, 2398, 1, 0, 0, 0, 315, 2404, 1, 0, 0, 0, 317, 2411, 1, 0, 0, 0, 319, 2419, 1, 0, 0, 0, 321, 2428, 1, 0, 0, 0, 323, 2436, 1, 0, 0, 0, 325, 2442, 1, 0, 0, 0, 327, 2458, 1, 0, 0, 0, 329, 2469, 1, 0, 0, 0, 331, 2475, 1, 0, 0, 0, 333, 2481, 1, 0, 0, 0, 335, 2489, 1, 0, 0, 0, 337, 2497, 1, 0, 0, 0, 339, 2506, 1, 0, 0, 0, 341, 2513, 1, 0, 0, 0, 343, 2523, 1, 0, 0, 0, 345, 2537, 1, 0, 0, 0, 347, 2548, 1, 0, 0, 0, 349, 2560, 1, 0, 0, 0, 351, 2568, 1, 0, 0, 0, 353, 2577, 1, 0, 0, 0, 355, 2588, 1, 0, 0, 0, 357, 2593, 1, 0, 0, 0, 359, 2598, 1, 0, 0, 0, 361, 2602, 1, 0, 0, 0, 363, 2609, 1, 0, 0, 0, 365, 2615, 1, 0, 0, 0, 367, 2620, 1, 0, 0, 0, 369, 2629, 1, 0, 0, 0, 371, 2633, 1, 0, 0, 0, 373, 2644, 1, 0, 0, 0, 375, 2652, 1, 0, 0, 0, 377, 2661, 1, 0, 0, 0, 379, 2670, 1, 0, 0, 0, 381, 2678, 1, 0, 0, 0, 383, 2685, 1, 0, 0, 0, 385, 2695, 1, 0, 0, 0, 387, 2706, 1, 0, 0, 0, 389, 2717, 1, 0, 0, 0, 391, 2725, 1, 0, 0, 0, 393, 2733, 1, 0, 0, 0, 395, 2742, 1, 0, 0, 0, 397, 2749, 1, 0, 0, 0, 399, 2756, 1, 0, 0, 0, 401, 2761, 1, 0, 0, 0, 403, 2766, 1, 0, 0, 0, 405, 2773, 1, 0, 0, 0, 407, 2782, 1, 0, 0, 0, 409, 2792, 1, 0, 0, 0, 411, 2797, 1, 0, 0, 0, 413, 2804, 1, 0, 0, 0, 415, 2810, 1, 0, 0, 0, 417, 2818, 1, 0, 0, 0, 419, 2828, 1, 0, 0, 0, 421, 2838, 1, 0, 0, 0, 423, 2846, 1, 0, 0, 0, 425, 2854, 1, 0, 0, 0, 427, 2864, 1, 0, 0, 0, 429, 2873, 1, 0, 0, 0, 431, 2880, 1, 0, 0, 0, 433, 2886, 1, 0, 0, 0, 435, 2896, 1, 0, 0, 0, 437, 2902, 1, 0, 0, 0, 439, 2910, 1, 0, 0, 0, 441, 2919, 1, 0, 0, 0, 443, 2929, 1, 0, 0, 0, 445, 2936, 1, 0, 0, 0, 447, 2944, 1, 0, 0, 0, 449, 2952, 1, 0, 0, 0, 451, 2959, 1, 0, 0, 0, 453, 2964, 1, 0, 0, 0, 455, 2969, 1, 0, 0, 0, 457, 2978, 1, 0, 0, 0, 459, 2981, 1, 0, 0, 0, 461, 2991, 1, 0, 0, 0, 463, 3001, 1, 0, 0, 0, 465, 3010, 1, 0, 0, 0, 467, 3020, 1, 0, 0, 0, 469, 3030, 1, 0, 0, 0, 471, 3036, 1, 0, 0, 0, 473, 3044, 1, 0, 0, 0, 475, 3052, 1, 0, 0, 0, 477, 3061, 1, 0, 0, 0, 479, 3068, 1, 0, 0, 0, 481, 3080, 1, 0, 0, 0, 483, 3087, 1, 0, 0, 0, 485, 3095, 1, 0, 0, 0, 487, 3103, 1, 0, 0, 0, 489, 3113, 1, 0, 0, 0, 491, 3117, 1, 0, 0, 0, 493, 3123, 1, 0, 0, 0, 495, 3132, 1, 0, 0, 0, 497, 3138, 1, 0, 0, 0, 499, 3143, 1, 0, 0, 0, 501, 3153, 1, 0, 0, 0, 503, 3159, 1, 0, 0, 0, 505, 3166, 1, 0, 0, 0, 507, 3171, 1, 0, 0, 0, 509, 3177, 1, 0, 0, 0, 511, 3186, 1, 0, 0, 0, 513, 3191, 1, 0, 0, 0, 515, 3199, 1, 0, 0, 0, 517, 3205, 1, 0, 0, 0, 519, 3213, 1, 0, 0, 0, 521, 3226, 1, 0, 0, 0, 523, 3235, 1, 0, 0, 0, 525, 3241, 1, 0, 0, 0, 527, 3248, 1, 0, 0, 0, 529, 3257, 1, 0, 0, 0, 531, 3262, 1, 0, 0, 0, 533, 3268, 1, 0, 0, 0, 535, 3273, 1, 0, 0, 0, 537, 3278, 1, 0, 0, 0, 539, 3284, 1, 0, 0, 0, 541, 3289, 1, 0, 0, 0, 543, 3292, 1, 0, 0, 0, 545, 3300, 1, 0, 0, 0, 547, 3307, 1, 0, 0, 0, 549, 3314, 1, 0, 0, 0, 551, 3320, 1, 0, 0, 0, 553, 3327, 1, 0, 0, 0, 555, 3330, 1, 0, 0, 0, 557, 3334, 1, 0, 0, 0, 559, 3339, 1, 0, 0, 0, 561, 3348, 1, 0, 0, 0, 563, 3355, 1, 0, 0, 0, 565, 3363, 1, 0, 0, 0, 567, 3369, 1, 0, 0, 0, 569, 3375, 1, 0, 0, 0, 571, 3382, 1, 0, 0, 0, 573, 3390, 1, 0, 0, 0, 575, 3400, 1, 0, 0, 0, 577, 3408, 1, 0, 0, 0, 579, 3417, 1, 0, 0, 0, 581, 3423, 1, 0, 0, 0, 583, 3433, 1, 0, 0, 0, 585, 3441, 1, 0, 0, 0, 587, 3450, 1, 0, 0, 0, 589, 3459, 1, 0, 0, 0, 591, 3465, 1, 0, 0, 0, 593, 3476, 1, 0, 0, 0, 595, 3487, 1, 0, 0, 0, 597, 3497, 1, 0, 0, 0, 599, 3505, 1, 0, 0, 0, 601, 3511, 1, 0, 0, 0, 603, 3517, 1, 0, 0, 0, 605, 3522, 1, 0, 0, 0, 607, 3531, 1, 0, 0, 0, 609, 3539, 1, 0, 0, 0, 611, 3549, 1, 0, 0, 0, 613, 3553, 1, 0, 0, 0, 615, 3561, 1, 0, 0, 0, 617, 3569, 1, 0, 0, 0, 619, 3578, 1, 0, 0, 0, 621, 3586, 1, 0, 0, 0, 623, 3593, 1, 0, 0, 0, 625, 3604, 1, 0, 0, 0, 627, 3612, 1, 0, 0, 0, 629, 3620, 1, 0, 0, 0, 631, 3626, 1, 0, 0, 0, 633, 3634, 1, 0, 0, 0, 635, 3643, 1, 0, 0, 0, 637, 3651, 1, 0, 0, 0, 639, 3658, 1, 0, 0, 0, 641, 3663, 1, 0, 0, 0, 643, 3672, 1, 0, 0, 0, 645, 3677, 1, 0, 0, 0, 647, 3682, 1, 0, 0, 0, 649, 3692, 1, 0, 0, 0, 651, 3699, 1, 0, 0, 0, 653, 3706, 1, 0, 0, 0, 655, 3713, 1, 0, 0, 0, 657, 3720, 1, 0, 0, 0, 659, 3729, 1, 0, 0, 0, 661, 3738, 1, 0, 0, 0, 663, 3748, 1, 0, 0, 0, 665, 3761, 1, 0, 0, 0, 667, 3768, 1, 0, 0, 0, 669, 3776, 1, 0, 0, 0, 671, 3780, 1, 0, 0, 0, 673, 3786, 1, 0, 0, 0, 675, 3791, 1, 0, 0, 0, 677, 3798, 1, 0, 0, 0, 679, 3807, 1, 0, 0, 0, 681, 3814, 1, 0, 0, 0, 683, 3825, 1, 0, 0, 0, 685, 3831, 1, 0, 0, 0, 687, 3841, 1, 0, 0, 0, 689, 3852, 1, 0, 0, 0, 691, 3858, 1, 0, 0, 0, 693, 3865, 1, 0, 0, 0, 695, 3873, 1, 0, 0, 0, 697, 3880, 1, 0, 0, 0, 699, 3886, 1, 0, 0, 0, 701, 3892, 1, 0, 0, 0, 703, 3899, 1, 0, 0, 0, 705, 3906, 1, 0, 0, 0, 707, 3917, 1, 0, 0, 0, 709, 3922, 1, 0, 0, 0, 711, 3931, 1, 0, 0, 0, 713, 3941, 1, 0, 0, 0, 715, 3946, 1, 0, 0, 0, 717, 3958, 1, 0, 0, 0, 719, 3966, 1, 0, 0, 0, 721, 3975, 1, 0, 0, 0, 723, 3983, 1, 0, 0, 0, 725, 3988, 1, 0, 0, 0, 727, 3994, 1, 0, 0, 0, 729, 4004, 1, 0, 0, 0, 731, 4016, 1, 0, 0, 0, 733, 4028, 1, 0, 0, 0, 735, 4036, 1, 0, 0, 0, 737, 4045, 1, 0, 0, 0, 739, 4054, 1, 0, 0, 0, 741, 4060, 1, 0, 0, 0, 743, 4067, 1, 0, 0, 0, 745, 4074, 1, 0, 0, 0, 747, 4080, 1, 0, 0, 0, 749, 4089, 1, 0, 0, 0, 751, 4099, 1, 0, 0, 0, 753, 4107, 1, 0, 0, 0, 755, 4115, 1, 0, 0, 0, 757, 4120, 1, 0, 0, 0, 759, 4129, 1, 0, 0, 0, 761, 4140, 1, 0, 0, 0, 763, 4148, 1, 0, 0, 0, 765, 4153, 1, 0, 0, 0, 767, 4161, 1, 0, 0, 0, 769, 4167, 1, 0, 0, 0, 771, 4171, 1, 0, 0, 0, 773, 4176, 1, 0, 0, 0, 775, 4180, 1, 0, 0, 0, 777, 4185, 1, 0, 0, 0, 779, 4193, 1, 0, 0, 0, 781, 4200, 1, 0, 0, 0, 783, 4204, 1, 0, 0, 0, 785, 4212, 1, 0, 0, 0, 787, 4217, 1, 0, 0, 0, 789, 4227, 1, 0, 0, 0, 791, 4236, 1, 0, 0, 0, 793, 4240, 1, 0, 0, 0, 795, 4248, 1, 0, 0, 0, 797, 4255, 1, 0, 0, 0, 799, 4263, 1, 0, 0, 0, 801, 4269, 1, 0, 0, 0, 803, 4278, 1, 0, 0, 0, 805, 4284, 1, 0, 0, 0, 807, 4288, 1, 0, 0, 0, 809, 4296, 1, 0, 0, 0, 811, 4305, 1, 0, 0, 0, 813, 4311, 1, 0, 0, 0, 815, 4320, 1, 0, 0, 0, 817, 4326, 1, 0, 0, 0, 819, 4331, 1, 0, 0, 0, 821, 4338, 1, 0, 0, 0, 823, 4346, 1, 0, 0, 0, 825, 4354, 1, 0, 0, 0, 827, 4363, 1, 0, 0, 0, 829, 4373, 1, 0, 0, 0, 831, 4378, 1, 0, 0, 0, 833, 4382, 1, 0, 0, 0, 835, 4388, 1, 0, 0, 0, 837, 4397, 1, 0, 0, 0, 839, 4407, 1, 0, 0, 0, 841, 4412, 1, 0, 0, 0, 843, 4422, 1, 0, 0, 0, 845, 4428, 1, 0, 0, 0, 847, 4433, 1, 0, 0, 0, 849, 4440, 1, 0, 0, 0, 851, 4448, 1, 0, 0, 0, 853, 4462, 1, 0, 0, 0, 855, 4473, 1, 0, 0, 0, 857, 4480, 1, 0, 0, 0, 859, 4499, 1, 0, 0, 0, 861, 4527, 1, 0, 0, 0, 863, 4554, 1, 0, 0, 0, 865, 4560, 1, 0, 0, 0, 867, 4573, 1, 0, 0, 0, 869, 4583, 1, 0, 0, 0, 871, 4594, 1, 0, 0, 0, 873, 4604, 1, 0, 0, 0, 875, 4614, 1, 0, 0, 0, 877, 4623, 1, 0, 0, 0, 879, 4629, 1, 0, 0, 0, 881, 4637, 1, 0, 0, 0, 883, 4650, 1, 0, 0, 0, 885, 4655, 1, 0, 0, 0, 887, 4663, 1, 0, 0, 0, 889, 4670, 1, 0, 0, 0, 891, 4677, 1, 0, 0, 0, 893, 4688, 1, 0, 0, 0, 895, 4698, 1, 0, 0, 0, 897, 4705, 1, 0, 0, 0, 899, 4712, 1, 0, 0, 0, 901, 4720, 1, 0, 0, 0, 903, 4728, 1, 0, 0, 0, 905, 4738, 1, 0, 0, 0, 907, 4745, 1, 0, 0, 0, 909, 4752, 1, 0, 0, 0, 911, 4759, 1, 0, 0, 0, 913, 4771, 1, 0, 0, 0, 915, 4775, 1, 0, 0, 0, 917, 4779, 1, 0, 0, 0, 919, 4785, 1, 0, 0, 0, 921, 4798, 1, 0, 0, 0, 923, 4810, 1, 0, 0, 0, 925, 4814, 1, 0, 0, 0, 927, 4818, 1, 0, 0, 0, 929, 4827, 1, 0, 0, 0, 931, 4835, 1, 0, 0, 0, 933, 4846, 1, 0, 0, 0, 935, 4852, 1, 0, 0, 0, 937, 4860, 1, 0, 0, 0, 939, 4869, 1, 0, 0, 0, 941, 4873, 1, 0, 0, 0, 943, 4881, 1, 0, 0, 0, 945, 4892, 1, 0, 0, 0, 947, 4901, 1, 0, 0, 0, 949, 4906, 1, 0, 0, 0, 951, 4913, 1, 0, 0, 0, 953, 4918, 1, 0, 0, 0, 955, 4925, 1, 0, 0, 0, 957, 4930, 1, 0, 0, 0, 959, 4939, 1, 0, 0, 0, 961, 4944, 1, 0, 0, 0, 963, 4956, 1, 0, 0, 0, 965, 4967, 1, 0, 0, 0, 967, 4976, 1, 0, 0, 0, 969, 4984, 1, 0, 0, 0, 971, 4998, 1, 0, 0, 0, 973, 5006, 1, 0, 0, 0, 975, 5017, 1, 0, 0, 0, 977, 5024, 1, 0, 0, 0, 979, 5031, 1, 0, 0, 0, 981, 5038, 1, 0, 0, 0, 983, 5045, 1, 0, 0, 0, 985, 5049, 1, 0, 0, 0, 987, 5053, 1, 0, 0, 0, 989, 5058, 1, 0, 0, 0, 991, 5063, 1, 0, 0, 0, 993, 5071, 1, 0, 0, 0, 995, 5077, 1, 0, 0, 0, 997, 5087, 1, 0, 0, 0, 999, 5092, 1, 0, 0, 0, 1001, 5112, 1, 0, 0, 0, 1003, 5130, 1, 0, 0, 0, 1005, 5136, 1, 0, 0, 0, 1007, 5149, 1, 0, 0, 0, 1009, 5160, 1, 0, 0, 0, 1011, 5166, 1, 0, 0, 0, 1013, 5175, 1, 0, 0, 0, 1015, 5183, 1, 0, 0, 0, 1017, 5187, 1, 0, 0, 0, 1019, 5199, 1, 0, 0, 0, 1021, 5207, 1, 0, 0, 0, 1023, 5213, 1, 0, 0, 0, 1025, 5219, 1, 0, 0, 0, 1027, 5227, 1, 0, 0, 0, 1029, 5235, 1, 0, 0, 0, 1031, 5241, 1, 0, 0, 0, 1033, 5246, 1, 0, 0, 0, 1035, 5253, 1, 0, 0, 0, 1037, 5259, 1, 0, 0, 0, 1039, 5265, 1, 0, 0, 0, 1041, 5274, 1, 0, 0, 0, 1043, 5280, 1, 0, 0, 0, 1045, 5284, 1, 0, 0, 0, 1047, 5289, 1, 0, 0, 0, 1049, 5296, 1, 0, 0, 0, 1051, 5304, 1, 0, 0, 0, 1053, 5314, 1, 0, 0, 0, 1055, 5321, 1, 0, 0, 0, 1057, 5326, 1, 0, 0, 0, 1059, 5331, 1, 0, 0, 0, 1061, 5335, 1, 0, 0, 0, 1063, 5340, 1, 0, 0, 0, 1065, 5345, 1, 0, 0, 0, 1067, 5353, 1, 0, 0, 0, 1069, 5361, 1, 0, 0, 0, 1071, 5365, 1, 0, 0, 0, 1073, 5369, 1, 0, 0, 0, 1075, 5379, 1, 0, 0, 0, 1077, 5385, 1, 0, 0, 0, 1079, 5389, 1, 0, 0, 0, 1081, 5393, 1, 0, 0, 0, 1083, 5396, 1, 0, 0, 0, 1085, 5402, 1, 0, 0, 0, 1087, 5412, 1, 0, 0, 0, 1089, 5416, 1, 0, 0, 0, 1091, 5419, 1, 0, 0, 0, 1093, 5425, 1, 0, 0, 0, 1095, 5433, 1, 0, 0, 0, 1097, 5439, 1, 0, 0, 0, 1099, 5445, 1, 0, 0, 0, 1101, 5450, 1, 0, 0, 0, 1103, 5455, 1, 0, 0, 0, 1105, 5466, 1, 0, 0, 0, 1107, 5472, 1, 0, 0, 0, 1109, 5485, 1, 0, 0, 0, 1111, 5492, 1, 0, 0, 0, 1113, 5500, 1, 0, 0, 0, 1115, 5505, 1, 0, 0, 0, 1117, 5511, 1, 0, 0, 0, 1119, 5516, 1, 0, 0, 0, 1121, 5522, 1, 0, 0, 0, 1123, 5527, 1, 0, 0, 0, 1125, 5533, 1, 0, 0, 0, 1127, 5539, 1, 0, 0, 0, 1129, 5546, 1, 0, 0, 0, 1131, 5550, 1, 0, 0, 0, 1133, 5555, 1, 0, 0, 0, 1135, 5559, 1, 0, 0, 0, 1137, 5564, 1, 0, 0, 0, 1139, 5568, 1, 0, 0, 0, 1141, 5573, 1, 0, 0, 0, 1143, 5577, 1, 0, 0, 0, 1145, 5582, 1, 0, 0, 0, 1147, 5587, 1, 0, 0, 0, 1149, 5592, 1, 0, 0, 0, 1151, 5597, 1, 0, 0, 0, 1153, 5603, 1, 0, 0, 0, 1155, 5609, 1, 0, 0, 0, 1157, 5615, 1, 0, 0, 0, 1159, 5626, 1, 0, 0, 0, 1161, 5638, 1, 0, 0, 0, 1163, 5655, 1, 0, 0, 0, 1165, 5661, 1, 0, 0, 0, 1167, 5674, 1, 0, 0, 0, 1169, 5680, 1, 0, 0, 0, 1171, 5686, 1, 0, 0, 0, 1173, 5692, 1, 0, 0, 0, 1175, 5696, 1, 0, 0, 0, 1177, 5703, 1, 0, 0, 0, 1179, 5713, 1, 0, 0, 0, 1181, 5720, 1, 0, 0, 0, 1183, 5728, 1, 0, 0, 0, 1185, 5735, 1, 0, 0, 0, 1187, 5740, 1, 0, 0, 0, 1189, 5746, 1, 0, 0, 0, 1191, 5750, 1, 0, 0, 0, 1193, 5762, 1, 0, 0, 0, 1195, 5781, 1, 0, 0, 0, 1197, 5793, 1, 0, 0, 0, 1199, 5807, 1, 0, 0, 0, 1201, 5822, 1, 0, 0, 0, 1203, 5835, 1, 0, 0, 0, 1205, 5848, 1, 0, 0, 0, 1207, 5860, 1, 0, 0, 0, 1209, 5873, 1, 0, 0, 0, 1211, 5888, 1, 0, 0, 0, 1213, 5903, 1, 0, 0, 0, 1215, 5925, 1, 0, 0, 0, 1217, 5947, 1, 0, 0, 0, 1219, 5961, 1, 0, 0, 0, 1221, 5968, 1, 0, 0, 0, 1223, 5973, 1, 0, 0, 0, 1225, 5979, 1, 0, 0, 0, 1227, 5990, 1, 0, 0, 0, 1229, 6002, 1, 0, 0, 0, 1231, 6018, 1, 0, 0, 0, 1233, 6034, 1, 0, 0, 0, 1235, 6041, 1, 0, 0, 0, 1237, 6048, 1, 0, 0, 0, 1239, 6057, 1, 0, 0, 0, 1241, 6064, 1, 0, 0, 0, 1243, 6074, 1, 0, 0, 0, 1245, 6081, 1, 0, 0, 0, 1247, 6085, 1, 0, 0, 0, 1249, 6101, 1, 0, 0, 0, 1251, 6110, 1, 0, 0, 0, 1253, 6120, 1, 0, 0, 0, 1255, 6131, 1, 0, 0, 0, 1257, 6140, 1, 0, 0, 0, 1259, 6153, 1, 0, 0, 0, 1261, 6167, 1, 0, 0, 0, 1263, 6184, 1, 0, 0, 0, 1265, 6194, 1, 0, 0, 0, 1267, 6208, 1, 0, 0, 0, 1269, 6218, 1, 0, 0, 0, 1271, 6233, 1, 0, 0, 0, 1273, 6250, 1, 0, 0, 0, 1275, 6254, 1, 0, 0, 0, 1277, 6274, 1, 0, 0, 0, 1279, 6284, 1, 0, 0, 0, 1281, 6306, 1, 0, 0, 0, 1283, 6319, 1, 0, 0, 0, 1285, 6327, 1, 0, 0, 0, 1287, 6335, 1, 0, 0, 0, 1289, 6345, 1, 0, 0, 0, 1291, 6358, 1, 0, 0, 0, 1293, 6362, 1, 0, 0, 0, 1295, 6366, 1, 0, 0, 0, 1297, 6368, 1, 0, 0, 0, 1299, 6371, 1, 0, 0, 0, 1301, 6380, 1, 0, 0, 0, 1303, 6383, 1, 0, 0, 0, 1305, 6392, 1, 0, 0, 0, 1307, 6396, 1, 0, 0, 0, 1309, 6400, 1, 0, 0, 0, 1311, 6404, 1, 0, 0, 0, 1313, 6408, 1, 0, 0, 0, 1315, 6411, 1, 0, 0, 0, 1317, 6420, 1, 0, 0, 0, 1319, 6426, 1, 0, 0, 0, 1321, 6429, 1, 0, 0, 0, 1323, 6433, 1, 0, 0, 0, 1325, 6442, 1, 0, 0, 0, 1327, 6449, 1, 0, 0, 0, 1329, 6452, 1, 0, 0, 0, 1331, 6460, 1, 0, 0, 0, 1333, 6463, 1, 0, 0, 0, 1335, 6466, 1, 0, 0, 0, 1337, 6469, 1, 0, 0, 0, 1339, 6477, 1, 0, 0, 0, 1341, 6480, 1, 0, 0, 0, 1343, 6483, 1, 0, 0, 0, 1345, 6485, 1, 0, 0, 0, 1347, 6519, 1, 0, 0, 0, 1349, 6522, 1, 0, 0, 0, 1351, 6526, 1, 0, 0, 0, 1353, 6534, 1, 0, 0, 0, 1355, 6550, 1, 0, 0, 0, 1357, 6561, 1, 0, 0, 0, 1359, 6565, 1, 0, 0, 0, 1361, 6576, 1, 0, 0, 0, 1363, 6615, 1, 0, 0, 0, 1365, 6666, 1, 0, 0, 0, 1367, 6690, 1, 0, 0, 0, 1369, 6693, 1, 0, 0, 0, 1371, 6695, 1, 0, 0, 0, 1373, 6700, 1, 0, 0, 0, 1375, 6731, 1, 0, 0, 0, 1377, 6734, 1, 0, 0, 0, 1379, 6739, 1, 0, 0, 0, 1381, 6752, 1, 0, 0, 0, 1383, 6755, 1, 0, 0, 0, 1385, 6760, 1, 0, 0, 0, 1387, 6766, 1, 0, 0, 0, 1389, 6771, 1, 0, 0, 0, 1391, 6776, 1, 0, 0, 0, 1393, 6781, 1, 0, 0, 0, 1395, 6786, 1, 0, 0, 0, 1397, 6803, 1, 0, 0, 0, 1399, 6805, 1, 0, 0, 0, 1401, 1402, 5, 36, 0, 0, 1402, 6, 1, 0, 0, 0, 1403, 1404, 5, 40, 0, 0, 1404, 8, 1, 0, 0, 0, 1405, 1406, 5, 41, 0, 0, 1406, 10, 1, 0, 0, 0, 1407, 1408, 5, 91, 0, 0, 1408, 12, 1, 0, 0, 0, 1409, 1410, 5, 93, 0, 0, 1410, 14, 1, 0, 0, 0, 1411, 1412, 5, 44, 0, 0, 1412, 16, 1, 0, 0, 0, 1413, 1414, 5, 59, 0, 0, 1414, 18, 1, 0, 0, 0, 1415, 1416, 5, 58, 0, 0, 1416, 20, 1, 0, 0, 0, 1417, 1418, 5, 42, 0, 0, 1418, 22, 1, 0, 0, 0, 1419, 1420, 5, 61, 0, 0, 1420, 24, 1, 0, 0, 0, 1421, 1422, 5, 46, 0, 0, 1422, 26, 1, 0, 0, 0, 1423, 1424, 5, 43, 0, 0, 1424, 28, 1, 0, 0, 0, 1425, 1426, 5, 45, 0, 0, 1426, 30, 1, 0, 0, 0, 1427, 1428, 5, 47, 0, 0, 1428, 32, 1, 0, 0, 0, 1429, 1430, 5, 94, 0, 0, 1430, 34, 1, 0, 0, 0, 1431, 1432, 5, 60, 0, 0, 1432, 36, 1, 0, 0, 0, 1433, 1434, 5, 62, 0, 0, 1434, 38, 1, 0, 0, 0, 1435, 1436, 5, 60, 0, 0, 1436, 1437, 5, 60, 0, 0, 1437, 40, 1, 0, 0, 0, 1438, 1439, 5, 62, 0, 0, 1439, 1440, 5, 62, 0, 0, 1440, 42, 1, 0, 0, 0, 1441, 1442, 5, 58, 0, 0, 1442, 1443, 5, 61, 0, 0, 1443, 44, 1, 0, 0, 0, 1444, 1445, 5, 60, 0, 0, 1445, 1446, 5, 61, 0, 0, 1446, 46, 1, 0, 0, 0, 1447, 1448, 5, 61, 0, 0, 1448, 1449, 5, 62, 0, 0, 1449, 48, 1, 0, 0, 0, 1450, 1451, 5, 62, 0, 0, 1451, 1452, 5, 61, 0, 0, 1452, 50, 1, 0, 0, 0, 1453, 1454, 5, 46, 0, 0, 1454, 1455, 5, 46, 0, 0, 1455, 52, 1, 0, 0, 0, 1456, 1457, 5, 60, 0, 0, 1457, 1458, 5, 62, 0, 0, 1458, 54, 1, 0, 0, 0, 1459, 1460, 5, 58, 0, 0, 1460, 1461, 5, 58, 0, 0, 1461, 56, 1, 0, 0, 0, 1462, 1463, 5, 37, 0, 0, 1463, 58, 1, 0, 0, 0, 1464, 1466, 5, 36, 0, 0, 1465, 1467, 7, 0, 0, 0, 1466, 1465, 1, 0, 0, 0, 1467, 1468, 1, 0, 0, 0, 1468, 1466, 1, 0, 0, 0, 1468, 1469, 1, 0, 0, 0, 1469, 60, 1, 0, 0, 0, 1470, 1486, 3, 65, 30, 0, 1471, 1475, 5, 43, 0, 0, 1472, 1473, 5, 45, 0, 0, 1473, 1475, 4, 28, 0, 0, 1474, 1471, 1, 0, 0, 0, 1474, 1472, 1, 0, 0, 0, 1475, 1476, 1, 0, 0, 0, 1476, 1474, 1, 0, 0, 0, 1476, 1477, 1, 0, 0, 0, 1477, 1481, 1, 0, 0, 0, 1478, 1482, 3, 65, 30, 0, 1479, 1480, 5, 47, 0, 0, 1480, 1482, 4, 28, 1, 0, 1481, 1478, 1, 0, 0, 0, 1481, 1479, 1, 0, 0, 0, 1482, 1486, 1, 0, 0, 0, 1483, 1484, 5, 47, 0, 0, 1484, 1486, 4, 28, 2, 0, 1485, 1470, 1, 0, 0, 0, 1485, 1474, 1, 0, 0, 0, 1485, 1483, 1, 0, 0, 0, 1486, 1487, 1, 0, 0, 0, 1487, 1485, 1, 0, 0, 0, 1487, 1488, 1, 0, 0, 0, 1488, 1491, 1, 0, 0, 0, 1489, 1491, 7, 1, 0, 0, 1490, 1485, 1, 0, 0, 0, 1490, 1489, 1, 0, 0, 0, 1491, 1492, 1, 0, 0, 0, 1492, 1493, 6, 28, 0, 0, 1493, 62, 1, 0, 0, 0, 1494, 1500, 3, 67, 31, 0, 1495, 1496, 5, 45, 0, 0, 1496, 1500, 4, 29, 3, 0, 1497, 1498, 5, 47, 0, 0, 1498, 1500, 4, 29, 4, 0, 1499, 1494, 1, 0, 0, 0, 1499, 1495, 1, 0, 0, 0, 1499, 1497, 1, 0, 0, 0, 1500, 1503, 1, 0, 0, 0, 1501, 1499, 1, 0, 0, 0, 1501, 1502, 1, 0, 0, 0, 1502, 1504, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1504, 1506, 3, 69, 32, 0, 1505, 1507, 3, 61, 28, 0, 1506, 1505, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1511, 1, 0, 0, 0, 1508, 1512, 5, 43, 0, 0, 1509, 1510, 5, 45, 0, 0, 1510, 1512, 4, 29, 5, 0, 1511, 1508, 1, 0, 0, 0, 1511, 1509, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1511, 1, 0, 0, 0, 1513, 1514, 1, 0, 0, 0, 1514, 1515, 1, 0, 0, 0, 1515, 1516, 6, 29, 1, 0, 1516, 64, 1, 0, 0, 0, 1517, 1518, 7, 2, 0, 0, 1518, 66, 1, 0, 0, 0, 1519, 1520, 7, 3, 0, 0, 1520, 68, 1, 0, 0, 0, 1521, 1522, 7, 4, 0, 0, 1522, 70, 1, 0, 0, 0, 1523, 1524, 7, 5, 0, 0, 1524, 1525, 7, 6, 0, 0, 1525, 1526, 7, 6, 0, 0, 1526, 72, 1, 0, 0, 0, 1527, 1528, 7, 5, 0, 0, 1528, 1529, 7, 7, 0, 0, 1529, 1530, 7, 5, 0, 0, 1530, 1531, 7, 6, 0, 0, 1531, 1532, 7, 8, 0, 0, 1532, 1533, 7, 9, 0, 0, 1533, 1534, 7, 10, 0, 0, 1534, 74, 1, 0, 0, 0, 1535, 1536, 7, 5, 0, 0, 1536, 1537, 7, 7, 0, 0, 1537, 1538, 7, 5, 0, 0, 1538, 1539, 7, 6, 0, 0, 1539, 1540, 7, 8, 0, 0, 1540, 1541, 7, 11, 0, 0, 1541, 1542, 7, 10, 0, 0, 1542, 76, 1, 0, 0, 0, 1543, 1544, 7, 5, 0, 0, 1544, 1545, 7, 7, 0, 0, 1545, 1546, 7, 12, 0, 0, 1546, 78, 1, 0, 0, 0, 1547, 1548, 7, 5, 0, 0, 1548, 1549, 7, 7, 0, 0, 1549, 1550, 7, 8, 0, 0, 1550, 80, 1, 0, 0, 0, 1551, 1552, 7, 5, 0, 0, 1552, 1553, 7, 13, 0, 0, 1553, 1554, 7, 13, 0, 0, 1554, 1555, 7, 5, 0, 0, 1555, 1556, 7, 8, 0, 0, 1556, 82, 1, 0, 0, 0, 1557, 1558, 7, 5, 0, 0, 1558, 1559, 7, 9, 0, 0, 1559, 84, 1, 0, 0, 0, 1560, 1561, 7, 5, 0, 0, 1561, 1562, 7, 9, 0, 0, 1562, 1563, 7, 14, 0, 0, 1563, 86, 1, 0, 0, 0, 1564, 1565, 7, 5, 0, 0, 1565, 1566, 7, 9, 0, 0, 1566, 1567, 7, 8, 0, 0, 1567, 1568, 7, 15, 0, 0, 1568, 1569, 7, 15, 0, 0, 1569, 1570, 7, 10, 0, 0, 1570, 1571, 7, 16, 0, 0, 1571, 1572, 7, 13, 0, 0, 1572, 1573, 7, 17, 0, 0, 1573, 1574, 7, 14, 0, 0, 1574, 88, 1, 0, 0, 0, 1575, 1576, 7, 18, 0, 0, 1576, 1577, 7, 19, 0, 0, 1577, 1578, 7, 16, 0, 0, 1578, 1579, 7, 20, 0, 0, 1579, 90, 1, 0, 0, 0, 1580, 1581, 7, 14, 0, 0, 1581, 1582, 7, 5, 0, 0, 1582, 1583, 7, 9, 0, 0, 1583, 1584, 7, 10, 0, 0, 1584, 92, 1, 0, 0, 0, 1585, 1586, 7, 14, 0, 0, 1586, 1587, 7, 5, 0, 0, 1587, 1588, 7, 9, 0, 0, 1588, 1589, 7, 16, 0, 0, 1589, 94, 1, 0, 0, 0, 1590, 1591, 7, 14, 0, 0, 1591, 1592, 7, 20, 0, 0, 1592, 1593, 7, 10, 0, 0, 1593, 1594, 7, 14, 0, 0, 1594, 1595, 7, 21, 0, 0, 1595, 96, 1, 0, 0, 0, 1596, 1597, 7, 14, 0, 0, 1597, 1598, 7, 19, 0, 0, 1598, 1599, 7, 6, 0, 0, 1599, 1600, 7, 6, 0, 0, 1600, 1601, 7, 5, 0, 0, 1601, 1602, 7, 16, 0, 0, 1602, 1603, 7, 10, 0, 0, 1603, 98, 1, 0, 0, 0, 1604, 1605, 7, 14, 0, 0, 1605, 1606, 7, 19, 0, 0, 1606, 1607, 7, 6, 0, 0, 1607, 1608, 7, 22, 0, 0, 1608, 1609, 7, 15, 0, 0, 1609, 1610, 7, 7, 0, 0, 1610, 100, 1, 0, 0, 0, 1611, 1612, 7, 14, 0, 0, 1612, 1613, 7, 19, 0, 0, 1613, 1614, 7, 7, 0, 0, 1614, 1615, 7, 9, 0, 0, 1615, 1616, 7, 16, 0, 0, 1616, 1617, 7, 13, 0, 0, 1617, 1618, 7, 5, 0, 0, 1618, 1619, 7, 17, 0, 0, 1619, 1620, 7, 7, 0, 0, 1620, 1621, 7, 16, 0, 0, 1621, 102, 1, 0, 0, 0, 1622, 1623, 7, 14, 0, 0, 1623, 1624, 7, 13, 0, 0, 1624, 1625, 7, 10, 0, 0, 1625, 1626, 7, 5, 0, 0, 1626, 1627, 7, 16, 0, 0, 1627, 1628, 7, 10, 0, 0, 1628, 104, 1, 0, 0, 0, 1629, 1630, 7, 14, 0, 0, 1630, 1631, 7, 22, 0, 0, 1631, 1632, 7, 13, 0, 0, 1632, 1633, 7, 13, 0, 0, 1633, 1634, 7, 10, 0, 0, 1634, 1635, 7, 7, 0, 0, 1635, 1636, 7, 16, 0, 0, 1636, 1637, 5, 95, 0, 0, 1637, 1638, 7, 14, 0, 0, 1638, 1639, 7, 5, 0, 0, 1639, 1640, 7, 16, 0, 0, 1640, 1641, 7, 5, 0, 0, 1641, 1642, 7, 6, 0, 0, 1642, 1643, 7, 19, 0, 0, 1643, 1644, 7, 23, 0, 0, 1644, 106, 1, 0, 0, 0, 1645, 1646, 7, 14, 0, 0, 1646, 1647, 7, 22, 0, 0, 1647, 1648, 7, 13, 0, 0, 1648, 1649, 7, 13, 0, 0, 1649, 1650, 7, 10, 0, 0, 1650, 1651, 7, 7, 0, 0, 1651, 1652, 7, 16, 0, 0, 1652, 1653, 5, 95, 0, 0, 1653, 1654, 7, 12, 0, 0, 1654, 1655, 7, 5, 0, 0, 1655, 1656, 7, 16, 0, 0, 1656, 1657, 7, 10, 0, 0, 1657, 108, 1, 0, 0, 0, 1658, 1659, 7, 14, 0, 0, 1659, 1660, 7, 22, 0, 0, 1660, 1661, 7, 13, 0, 0, 1661, 1662, 7, 13, 0, 0, 1662, 1663, 7, 10, 0, 0, 1663, 1664, 7, 7, 0, 0, 1664, 1665, 7, 16, 0, 0, 1665, 1666, 5, 95, 0, 0, 1666, 1667, 7, 13, 0, 0, 1667, 1668, 7, 19, 0, 0, 1668, 1669, 7, 6, 0, 0, 1669, 1670, 7, 10, 0, 0, 1670, 110, 1, 0, 0, 0, 1671, 1672, 7, 14, 0, 0, 1672, 1673, 7, 22, 0, 0, 1673, 1674, 7, 13, 0, 0, 1674, 1675, 7, 13, 0, 0, 1675, 1676, 7, 10, 0, 0, 1676, 1677, 7, 7, 0, 0, 1677, 1678, 7, 16, 0, 0, 1678, 1679, 5, 95, 0, 0, 1679, 1680, 7, 16, 0, 0, 1680, 1681, 7, 17, 0, 0, 1681, 1682, 7, 15, 0, 0, 1682, 1683, 7, 10, 0, 0, 1683, 112, 1, 0, 0, 0, 1684, 1685, 7, 14, 0, 0, 1685, 1686, 7, 22, 0, 0, 1686, 1687, 7, 13, 0, 0, 1687, 1688, 7, 13, 0, 0, 1688, 1689, 7, 10, 0, 0, 1689, 1690, 7, 7, 0, 0, 1690, 1691, 7, 16, 0, 0, 1691, 1692, 5, 95, 0, 0, 1692, 1693, 7, 16, 0, 0, 1693, 1694, 7, 17, 0, 0, 1694, 1695, 7, 15, 0, 0, 1695, 1696, 7, 10, 0, 0, 1696, 1697, 7, 9, 0, 0, 1697, 1698, 7, 16, 0, 0, 1698, 1699, 7, 5, 0, 0, 1699, 1700, 7, 15, 0, 0, 1700, 1701, 7, 24, 0, 0, 1701, 114, 1, 0, 0, 0, 1702, 1703, 7, 14, 0, 0, 1703, 1704, 7, 22, 0, 0, 1704, 1705, 7, 13, 0, 0, 1705, 1706, 7, 13, 0, 0, 1706, 1707, 7, 10, 0, 0, 1707, 1708, 7, 7, 0, 0, 1708, 1709, 7, 16, 0, 0, 1709, 1710, 5, 95, 0, 0, 1710, 1711, 7, 22, 0, 0, 1711, 1712, 7, 9, 0, 0, 1712, 1713, 7, 10, 0, 0, 1713, 1714, 7, 13, 0, 0, 1714, 116, 1, 0, 0, 0, 1715, 1716, 7, 12, 0, 0, 1716, 1717, 7, 10, 0, 0, 1717, 1718, 7, 25, 0, 0, 1718, 1719, 7, 5, 0, 0, 1719, 1720, 7, 22, 0, 0, 1720, 1721, 7, 6, 0, 0, 1721, 1722, 7, 16, 0, 0, 1722, 118, 1, 0, 0, 0, 1723, 1724, 7, 12, 0, 0, 1724, 1725, 7, 10, 0, 0, 1725, 1726, 7, 25, 0, 0, 1726, 1727, 7, 10, 0, 0, 1727, 1728, 7, 13, 0, 0, 1728, 1729, 7, 13, 0, 0, 1729, 1730, 7, 5, 0, 0, 1730, 1731, 7, 18, 0, 0, 1731, 1732, 7, 6, 0, 0, 1732, 1733, 7, 10, 0, 0, 1733, 120, 1, 0, 0, 0, 1734, 1735, 7, 12, 0, 0, 1735, 1736, 7, 10, 0, 0, 1736, 1737, 7, 9, 0, 0, 1737, 1738, 7, 14, 0, 0, 1738, 122, 1, 0, 0, 0, 1739, 1740, 7, 12, 0, 0, 1740, 1741, 7, 17, 0, 0, 1741, 1742, 7, 9, 0, 0, 1742, 1743, 7, 16, 0, 0, 1743, 1744, 7, 17, 0, 0, 1744, 1745, 7, 7, 0, 0, 1745, 1746, 7, 14, 0, 0, 1746, 1747, 7, 16, 0, 0, 1747, 124, 1, 0, 0, 0, 1748, 1749, 7, 12, 0, 0, 1749, 1750, 7, 19, 0, 0, 1750, 126, 1, 0, 0, 0, 1751, 1752, 7, 10, 0, 0, 1752, 1753, 7, 6, 0, 0, 1753, 1754, 7, 9, 0, 0, 1754, 1755, 7, 10, 0, 0, 1755, 128, 1, 0, 0, 0, 1756, 1757, 7, 10, 0, 0, 1757, 1758, 7, 26, 0, 0, 1758, 1759, 7, 14, 0, 0, 1759, 1760, 7, 10, 0, 0, 1760, 1761, 7, 24, 0, 0, 1761, 1762, 7, 16, 0, 0, 1762, 130, 1, 0, 0, 0, 1763, 1764, 7, 25, 0, 0, 1764, 1765, 7, 5, 0, 0, 1765, 1766, 7, 6, 0, 0, 1766, 1767, 7, 9, 0, 0, 1767, 1768, 7, 10, 0, 0, 1768, 132, 1, 0, 0, 0, 1769, 1770, 7, 25, 0, 0, 1770, 1771, 7, 10, 0, 0, 1771, 1772, 7, 16, 0, 0, 1772, 1773, 7, 14, 0, 0, 1773, 1774, 7, 20, 0, 0, 1774, 134, 1, 0, 0, 0, 1775, 1776, 7, 25, 0, 0, 1776, 1777, 7, 19, 0, 0, 1777, 1778, 7, 13, 0, 0, 1778, 136, 1, 0, 0, 0, 1779, 1780, 7, 25, 0, 0, 1780, 1781, 7, 19, 0, 0, 1781, 1782, 7, 13, 0, 0, 1782, 1783, 7, 10, 0, 0, 1783, 1784, 7, 17, 0, 0, 1784, 1785, 7, 23, 0, 0, 1785, 1786, 7, 7, 0, 0, 1786, 138, 1, 0, 0, 0, 1787, 1788, 7, 25, 0, 0, 1788, 1789, 7, 13, 0, 0, 1789, 1790, 7, 19, 0, 0, 1790, 1791, 7, 15, 0, 0, 1791, 140, 1, 0, 0, 0, 1792, 1793, 7, 23, 0, 0, 1793, 1794, 7, 13, 0, 0, 1794, 1795, 7, 5, 0, 0, 1795, 1796, 7, 7, 0, 0, 1796, 1797, 7, 16, 0, 0, 1797, 142, 1, 0, 0, 0, 1798, 1799, 7, 23, 0, 0, 1799, 1800, 7, 13, 0, 0, 1800, 1801, 7, 19, 0, 0, 1801, 1802, 7, 22, 0, 0, 1802, 1803, 7, 24, 0, 0, 1803, 144, 1, 0, 0, 0, 1804, 1805, 7, 20, 0, 0, 1805, 1806, 7, 5, 0, 0, 1806, 1807, 7, 27, 0, 0, 1807, 1808, 7, 17, 0, 0, 1808, 1809, 7, 7, 0, 0, 1809, 1810, 7, 23, 0, 0, 1810, 146, 1, 0, 0, 0, 1811, 1812, 7, 17, 0, 0, 1812, 1813, 7, 7, 0, 0, 1813, 148, 1, 0, 0, 0, 1814, 1815, 7, 17, 0, 0, 1815, 1816, 7, 7, 0, 0, 1816, 1817, 7, 17, 0, 0, 1817, 1818, 7, 16, 0, 0, 1818, 1819, 7, 17, 0, 0, 1819, 1820, 7, 5, 0, 0, 1820, 1821, 7, 6, 0, 0, 1821, 1822, 7, 6, 0, 0, 1822, 1823, 7, 8, 0, 0, 1823, 150, 1, 0, 0, 0, 1824, 1825, 7, 17, 0, 0, 1825, 1826, 7, 7, 0, 0, 1826, 1827, 7, 16, 0, 0, 1827, 1828, 7, 10, 0, 0, 1828, 1829, 7, 13, 0, 0, 1829, 1830, 7, 9, 0, 0, 1830, 1831, 7, 10, 0, 0, 1831, 1832, 7, 14, 0, 0, 1832, 1833, 7, 16, 0, 0, 1833, 152, 1, 0, 0, 0, 1834, 1835, 7, 17, 0, 0, 1835, 1836, 7, 7, 0, 0, 1836, 1837, 7, 16, 0, 0, 1837, 1838, 7, 19, 0, 0, 1838, 154, 1, 0, 0, 0, 1839, 1840, 7, 6, 0, 0, 1840, 1841, 7, 5, 0, 0, 1841, 1842, 7, 16, 0, 0, 1842, 1843, 7, 10, 0, 0, 1843, 1844, 7, 13, 0, 0, 1844, 1845, 7, 5, 0, 0, 1845, 1846, 7, 6, 0, 0, 1846, 156, 1, 0, 0, 0, 1847, 1848, 7, 6, 0, 0, 1848, 1849, 7, 10, 0, 0, 1849, 1850, 7, 5, 0, 0, 1850, 1851, 7, 12, 0, 0, 1851, 1852, 7, 17, 0, 0, 1852, 1853, 7, 7, 0, 0, 1853, 1854, 7, 23, 0, 0, 1854, 158, 1, 0, 0, 0, 1855, 1856, 7, 6, 0, 0, 1856, 1857, 7, 17, 0, 0, 1857, 1858, 7, 15, 0, 0, 1858, 1859, 7, 17, 0, 0, 1859, 1860, 7, 16, 0, 0, 1860, 160, 1, 0, 0, 0, 1861, 1862, 7, 6, 0, 0, 1862, 1863, 7, 19, 0, 0, 1863, 1864, 7, 14, 0, 0, 1864, 1865, 7, 5, 0, 0, 1865, 1866, 7, 6, 0, 0, 1866, 1867, 7, 16, 0, 0, 1867, 1868, 7, 17, 0, 0, 1868, 1869, 7, 15, 0, 0, 1869, 1870, 7, 10, 0, 0, 1870, 162, 1, 0, 0, 0, 1871, 1872, 7, 6, 0, 0, 1872, 1873, 7, 19, 0, 0, 1873, 1874, 7, 14, 0, 0, 1874, 1875, 7, 5, 0, 0, 1875, 1876, 7, 6, 0, 0, 1876, 1877, 7, 16, 0, 0, 1877, 1878, 7, 17, 0, 0, 1878, 1879, 7, 15, 0, 0, 1879, 1880, 7, 10, 0, 0, 1880, 1881, 7, 9, 0, 0, 1881, 1882, 7, 16, 0, 0, 1882, 1883, 7, 5, 0, 0, 1883, 1884, 7, 15, 0, 0, 1884, 1885, 7, 24, 0, 0, 1885, 164, 1, 0, 0, 0, 1886, 1887, 7, 7, 0, 0, 1887, 1888, 7, 19, 0, 0, 1888, 1889, 7, 16, 0, 0, 1889, 166, 1, 0, 0, 0, 1890, 1891, 7, 7, 0, 0, 1891, 1892, 7, 22, 0, 0, 1892, 1893, 7, 6, 0, 0, 1893, 1894, 7, 6, 0, 0, 1894, 168, 1, 0, 0, 0, 1895, 1896, 7, 19, 0, 0, 1896, 1897, 7, 25, 0, 0, 1897, 1898, 7, 25, 0, 0, 1898, 1899, 7, 9, 0, 0, 1899, 1900, 7, 10, 0, 0, 1900, 1901, 7, 16, 0, 0, 1901, 170, 1, 0, 0, 0, 1902, 1903, 7, 19, 0, 0, 1903, 1904, 7, 7, 0, 0, 1904, 172, 1, 0, 0, 0, 1905, 1906, 7, 19, 0, 0, 1906, 1907, 7, 7, 0, 0, 1907, 1908, 7, 6, 0, 0, 1908, 1909, 7, 8, 0, 0, 1909, 174, 1, 0, 0, 0, 1910, 1911, 7, 19, 0, 0, 1911, 1912, 7, 13, 0, 0, 1912, 176, 1, 0, 0, 0, 1913, 1914, 7, 19, 0, 0, 1914, 1915, 7, 13, 0, 0, 1915, 1916, 7, 12, 0, 0, 1916, 1917, 7, 10, 0, 0, 1917, 1918, 7, 13, 0, 0, 1918, 178, 1, 0, 0, 0, 1919, 1920, 7, 24, 0, 0, 1920, 1921, 7, 6, 0, 0, 1921, 1922, 7, 5, 0, 0, 1922, 1923, 7, 14, 0, 0, 1923, 1924, 7, 17, 0, 0, 1924, 1925, 7, 7, 0, 0, 1925, 1926, 7, 23, 0, 0, 1926, 180, 1, 0, 0, 0, 1927, 1928, 7, 24, 0, 0, 1928, 1929, 7, 13, 0, 0, 1929, 1930, 7, 17, 0, 0, 1930, 1931, 7, 15, 0, 0, 1931, 1932, 7, 5, 0, 0, 1932, 1933, 7, 13, 0, 0, 1933, 1934, 7, 8, 0, 0, 1934, 182, 1, 0, 0, 0, 1935, 1936, 7, 13, 0, 0, 1936, 1937, 7, 10, 0, 0, 1937, 1938, 7, 25, 0, 0, 1938, 1939, 7, 10, 0, 0, 1939, 1940, 7, 13, 0, 0, 1940, 1941, 7, 10, 0, 0, 1941, 1942, 7, 7, 0, 0, 1942, 1943, 7, 14, 0, 0, 1943, 1944, 7, 10, 0, 0, 1944, 1945, 7, 9, 0, 0, 1945, 184, 1, 0, 0, 0, 1946, 1947, 7, 13, 0, 0, 1947, 1948, 7, 10, 0, 0, 1948, 1949, 7, 16, 0, 0, 1949, 1950, 7, 22, 0, 0, 1950, 1951, 7, 13, 0, 0, 1951, 1952, 7, 7, 0, 0, 1952, 1953, 7, 17, 0, 0, 1953, 1954, 7, 7, 0, 0, 1954, 1955, 7, 23, 0, 0, 1955, 186, 1, 0, 0, 0, 1956, 1957, 7, 9, 0, 0, 1957, 1958, 7, 10, 0, 0, 1958, 1959, 7, 6, 0, 0, 1959, 1960, 7, 10, 0, 0, 1960, 1961, 7, 14, 0, 0, 1961, 1962, 7, 16, 0, 0, 1962, 188, 1, 0, 0, 0, 1963, 1964, 7, 9, 0, 0, 1964, 1965, 7, 10, 0, 0, 1965, 1966, 7, 9, 0, 0, 1966, 1967, 7, 9, 0, 0, 1967, 1968, 7, 17, 0, 0, 1968, 1969, 7, 19, 0, 0, 1969, 1970, 7, 7, 0, 0, 1970, 1971, 5, 95, 0, 0, 1971, 1972, 7, 22, 0, 0, 1972, 1973, 7, 9, 0, 0, 1973, 1974, 7, 10, 0, 0, 1974, 1975, 7, 13, 0, 0, 1975, 190, 1, 0, 0, 0, 1976, 1977, 7, 9, 0, 0, 1977, 1978, 7, 19, 0, 0, 1978, 1979, 7, 15, 0, 0, 1979, 1980, 7, 10, 0, 0, 1980, 192, 1, 0, 0, 0, 1981, 1982, 7, 9, 0, 0, 1982, 1983, 7, 8, 0, 0, 1983, 1984, 7, 15, 0, 0, 1984, 1985, 7, 15, 0, 0, 1985, 1986, 7, 10, 0, 0, 1986, 1987, 7, 16, 0, 0, 1987, 1988, 7, 13, 0, 0, 1988, 1989, 7, 17, 0, 0, 1989, 1990, 7, 14, 0, 0, 1990, 194, 1, 0, 0, 0, 1991, 1992, 7, 16, 0, 0, 1992, 1993, 7, 5, 0, 0, 1993, 1994, 7, 18, 0, 0, 1994, 1995, 7, 6, 0, 0, 1995, 1996, 7, 10, 0, 0, 1996, 196, 1, 0, 0, 0, 1997, 1998, 7, 16, 0, 0, 1998, 1999, 7, 20, 0, 0, 1999, 2000, 7, 10, 0, 0, 2000, 2001, 7, 7, 0, 0, 2001, 198, 1, 0, 0, 0, 2002, 2003, 7, 16, 0, 0, 2003, 2004, 7, 19, 0, 0, 2004, 200, 1, 0, 0, 0, 2005, 2006, 7, 16, 0, 0, 2006, 2007, 7, 19, 0, 0, 2007, 2008, 7, 24, 0, 0, 2008, 2009, 7, 17, 0, 0, 2009, 2010, 7, 14, 0, 0, 2010, 202, 1, 0, 0, 0, 2011, 2012, 7, 9, 0, 0, 2012, 2013, 7, 16, 0, 0, 2013, 2014, 7, 13, 0, 0, 2014, 2015, 7, 10, 0, 0, 2015, 2016, 7, 5, 0, 0, 2016, 2017, 7, 15, 0, 0, 2017, 204, 1, 0, 0, 0, 2018, 2019, 7, 11, 0, 0, 2019, 2020, 7, 27, 0, 0, 2020, 2021, 7, 17, 0, 0, 2021, 2022, 7, 10, 0, 0, 2022, 2023, 7, 28, 0, 0, 2023, 206, 1, 0, 0, 0, 2024, 2025, 7, 16, 0, 0, 2025, 2026, 7, 13, 0, 0, 2026, 2027, 7, 5, 0, 0, 2027, 2028, 7, 17, 0, 0, 2028, 2029, 7, 6, 0, 0, 2029, 2030, 7, 17, 0, 0, 2030, 2031, 7, 7, 0, 0, 2031, 2032, 7, 23, 0, 0, 2032, 208, 1, 0, 0, 0, 2033, 2034, 7, 16, 0, 0, 2034, 2035, 7, 13, 0, 0, 2035, 2036, 7, 22, 0, 0, 2036, 2037, 7, 10, 0, 0, 2037, 210, 1, 0, 0, 0, 2038, 2039, 7, 22, 0, 0, 2039, 2040, 7, 7, 0, 0, 2040, 2041, 7, 17, 0, 0, 2041, 2042, 7, 19, 0, 0, 2042, 2043, 7, 7, 0, 0, 2043, 212, 1, 0, 0, 0, 2044, 2045, 7, 22, 0, 0, 2045, 2046, 7, 7, 0, 0, 2046, 2047, 7, 17, 0, 0, 2047, 2048, 7, 29, 0, 0, 2048, 2049, 7, 22, 0, 0, 2049, 2050, 7, 10, 0, 0, 2050, 214, 1, 0, 0, 0, 2051, 2052, 7, 22, 0, 0, 2052, 2053, 7, 9, 0, 0, 2053, 2054, 7, 10, 0, 0, 2054, 2055, 7, 13, 0, 0, 2055, 216, 1, 0, 0, 0, 2056, 2057, 7, 22, 0, 0, 2057, 2058, 7, 9, 0, 0, 2058, 2059, 7, 17, 0, 0, 2059, 2060, 7, 7, 0, 0, 2060, 2061, 7, 23, 0, 0, 2061, 218, 1, 0, 0, 0, 2062, 2063, 7, 27, 0, 0, 2063, 2064, 7, 5, 0, 0, 2064, 2065, 7, 13, 0, 0, 2065, 2066, 7, 17, 0, 0, 2066, 2067, 7, 5, 0, 0, 2067, 2068, 7, 12, 0, 0, 2068, 2069, 7, 17, 0, 0, 2069, 2070, 7, 14, 0, 0, 2070, 220, 1, 0, 0, 0, 2071, 2072, 7, 28, 0, 0, 2072, 2073, 7, 20, 0, 0, 2073, 2074, 7, 10, 0, 0, 2074, 2075, 7, 7, 0, 0, 2075, 222, 1, 0, 0, 0, 2076, 2077, 7, 28, 0, 0, 2077, 2078, 7, 20, 0, 0, 2078, 2079, 7, 10, 0, 0, 2079, 2080, 7, 13, 0, 0, 2080, 2081, 7, 10, 0, 0, 2081, 224, 1, 0, 0, 0, 2082, 2083, 7, 28, 0, 0, 2083, 2084, 7, 17, 0, 0, 2084, 2085, 7, 7, 0, 0, 2085, 2086, 7, 12, 0, 0, 2086, 2087, 7, 19, 0, 0, 2087, 2088, 7, 28, 0, 0, 2088, 226, 1, 0, 0, 0, 2089, 2090, 7, 28, 0, 0, 2090, 2091, 7, 17, 0, 0, 2091, 2092, 7, 16, 0, 0, 2092, 2093, 7, 20, 0, 0, 2093, 228, 1, 0, 0, 0, 2094, 2095, 7, 5, 0, 0, 2095, 2096, 7, 22, 0, 0, 2096, 2097, 7, 16, 0, 0, 2097, 2098, 7, 20, 0, 0, 2098, 2099, 7, 19, 0, 0, 2099, 2100, 7, 13, 0, 0, 2100, 2101, 7, 17, 0, 0, 2101, 2102, 7, 11, 0, 0, 2102, 2103, 7, 5, 0, 0, 2103, 2104, 7, 16, 0, 0, 2104, 2105, 7, 17, 0, 0, 2105, 2106, 7, 19, 0, 0, 2106, 2107, 7, 7, 0, 0, 2107, 230, 1, 0, 0, 0, 2108, 2109, 7, 18, 0, 0, 2109, 2110, 7, 17, 0, 0, 2110, 2111, 7, 7, 0, 0, 2111, 2112, 7, 5, 0, 0, 2112, 2113, 7, 13, 0, 0, 2113, 2114, 7, 8, 0, 0, 2114, 232, 1, 0, 0, 0, 2115, 2116, 7, 14, 0, 0, 2116, 2117, 7, 19, 0, 0, 2117, 2118, 7, 6, 0, 0, 2118, 2119, 7, 6, 0, 0, 2119, 2120, 7, 5, 0, 0, 2120, 2121, 7, 16, 0, 0, 2121, 2122, 7, 17, 0, 0, 2122, 2123, 7, 19, 0, 0, 2123, 2124, 7, 7, 0, 0, 2124, 234, 1, 0, 0, 0, 2125, 2126, 7, 14, 0, 0, 2126, 2127, 7, 19, 0, 0, 2127, 2128, 7, 7, 0, 0, 2128, 2129, 7, 14, 0, 0, 2129, 2130, 7, 22, 0, 0, 2130, 2131, 7, 13, 0, 0, 2131, 2132, 7, 13, 0, 0, 2132, 2133, 7, 10, 0, 0, 2133, 2134, 7, 7, 0, 0, 2134, 2135, 7, 16, 0, 0, 2135, 2136, 7, 6, 0, 0, 2136, 2137, 7, 8, 0, 0, 2137, 236, 1, 0, 0, 0, 2138, 2139, 7, 14, 0, 0, 2139, 2140, 7, 13, 0, 0, 2140, 2141, 7, 19, 0, 0, 2141, 2142, 7, 9, 0, 0, 2142, 2143, 7, 9, 0, 0, 2143, 238, 1, 0, 0, 0, 2144, 2145, 7, 14, 0, 0, 2145, 2146, 7, 22, 0, 0, 2146, 2147, 7, 13, 0, 0, 2147, 2148, 7, 13, 0, 0, 2148, 2149, 7, 10, 0, 0, 2149, 2150, 7, 7, 0, 0, 2150, 2151, 7, 16, 0, 0, 2151, 2152, 5, 95, 0, 0, 2152, 2153, 7, 9, 0, 0, 2153, 2154, 7, 14, 0, 0, 2154, 2155, 7, 20, 0, 0, 2155, 2156, 7, 10, 0, 0, 2156, 2157, 7, 15, 0, 0, 2157, 2158, 7, 5, 0, 0, 2158, 240, 1, 0, 0, 0, 2159, 2160, 7, 25, 0, 0, 2160, 2161, 7, 13, 0, 0, 2161, 2162, 7, 10, 0, 0, 2162, 2163, 7, 10, 0, 0, 2163, 2164, 7, 11, 0, 0, 2164, 2165, 7, 10, 0, 0, 2165, 242, 1, 0, 0, 0, 2166, 2167, 7, 25, 0, 0, 2167, 2168, 7, 22, 0, 0, 2168, 2169, 7, 6, 0, 0, 2169, 2170, 7, 6, 0, 0, 2170, 244, 1, 0, 0, 0, 2171, 2172, 7, 17, 0, 0, 2172, 2173, 7, 6, 0, 0, 2173, 2174, 7, 17, 0, 0, 2174, 2175, 7, 21, 0, 0, 2175, 2176, 7, 10, 0, 0, 2176, 246, 1, 0, 0, 0, 2177, 2178, 7, 17, 0, 0, 2178, 2179, 7, 7, 0, 0, 2179, 2180, 7, 7, 0, 0, 2180, 2181, 7, 10, 0, 0, 2181, 2182, 7, 13, 0, 0, 2182, 248, 1, 0, 0, 0, 2183, 2184, 7, 17, 0, 0, 2184, 2185, 7, 9, 0, 0, 2185, 250, 1, 0, 0, 0, 2186, 2187, 7, 17, 0, 0, 2187, 2188, 7, 9, 0, 0, 2188, 2189, 7, 7, 0, 0, 2189, 2190, 7, 22, 0, 0, 2190, 2191, 7, 6, 0, 0, 2191, 2192, 7, 6, 0, 0, 2192, 252, 1, 0, 0, 0, 2193, 2194, 7, 30, 0, 0, 2194, 2195, 7, 19, 0, 0, 2195, 2196, 7, 17, 0, 0, 2196, 2197, 7, 7, 0, 0, 2197, 254, 1, 0, 0, 0, 2198, 2199, 7, 6, 0, 0, 2199, 2200, 7, 10, 0, 0, 2200, 2201, 7, 25, 0, 0, 2201, 2202, 7, 16, 0, 0, 2202, 256, 1, 0, 0, 0, 2203, 2204, 7, 6, 0, 0, 2204, 2205, 7, 17, 0, 0, 2205, 2206, 7, 21, 0, 0, 2206, 2207, 7, 10, 0, 0, 2207, 258, 1, 0, 0, 0, 2208, 2209, 7, 7, 0, 0, 2209, 2210, 7, 5, 0, 0, 2210, 2211, 7, 16, 0, 0, 2211, 2212, 7, 22, 0, 0, 2212, 2213, 7, 13, 0, 0, 2213, 2214, 7, 5, 0, 0, 2214, 2215, 7, 6, 0, 0, 2215, 260, 1, 0, 0, 0, 2216, 2217, 7, 7, 0, 0, 2217, 2218, 7, 19, 0, 0, 2218, 2219, 7, 16, 0, 0, 2219, 2220, 7, 7, 0, 0, 2220, 2221, 7, 22, 0, 0, 2221, 2222, 7, 6, 0, 0, 2222, 2223, 7, 6, 0, 0, 2223, 262, 1, 0, 0, 0, 2224, 2225, 7, 19, 0, 0, 2225, 2226, 7, 22, 0, 0, 2226, 2227, 7, 16, 0, 0, 2227, 2228, 7, 10, 0, 0, 2228, 2229, 7, 13, 0, 0, 2229, 264, 1, 0, 0, 0, 2230, 2231, 7, 19, 0, 0, 2231, 2232, 7, 27, 0, 0, 2232, 2233, 7, 10, 0, 0, 2233, 2234, 7, 13, 0, 0, 2234, 266, 1, 0, 0, 0, 2235, 2236, 7, 19, 0, 0, 2236, 2237, 7, 27, 0, 0, 2237, 2238, 7, 10, 0, 0, 2238, 2239, 7, 13, 0, 0, 2239, 2240, 7, 6, 0, 0, 2240, 2241, 7, 5, 0, 0, 2241, 2242, 7, 24, 0, 0, 2242, 2243, 7, 9, 0, 0, 2243, 268, 1, 0, 0, 0, 2244, 2245, 7, 13, 0, 0, 2245, 2246, 7, 17, 0, 0, 2246, 2247, 7, 23, 0, 0, 2247, 2248, 7, 20, 0, 0, 2248, 2249, 7, 16, 0, 0, 2249, 270, 1, 0, 0, 0, 2250, 2251, 7, 9, 0, 0, 2251, 2252, 7, 17, 0, 0, 2252, 2253, 7, 15, 0, 0, 2253, 2254, 7, 17, 0, 0, 2254, 2255, 7, 6, 0, 0, 2255, 2256, 7, 5, 0, 0, 2256, 2257, 7, 13, 0, 0, 2257, 272, 1, 0, 0, 0, 2258, 2259, 7, 27, 0, 0, 2259, 2260, 7, 10, 0, 0, 2260, 2261, 7, 13, 0, 0, 2261, 2262, 7, 18, 0, 0, 2262, 2263, 7, 19, 0, 0, 2263, 2264, 7, 9, 0, 0, 2264, 2265, 7, 10, 0, 0, 2265, 274, 1, 0, 0, 0, 2266, 2267, 7, 5, 0, 0, 2267, 2268, 7, 18, 0, 0, 2268, 2269, 7, 19, 0, 0, 2269, 2270, 7, 13, 0, 0, 2270, 2271, 7, 16, 0, 0, 2271, 276, 1, 0, 0, 0, 2272, 2273, 7, 5, 0, 0, 2273, 2274, 7, 18, 0, 0, 2274, 2275, 7, 9, 0, 0, 2275, 2276, 7, 19, 0, 0, 2276, 2277, 7, 6, 0, 0, 2277, 2278, 7, 22, 0, 0, 2278, 2279, 7, 16, 0, 0, 2279, 2280, 7, 10, 0, 0, 2280, 278, 1, 0, 0, 0, 2281, 2282, 7, 5, 0, 0, 2282, 2283, 7, 14, 0, 0, 2283, 2284, 7, 14, 0, 0, 2284, 2285, 7, 10, 0, 0, 2285, 2286, 7, 9, 0, 0, 2286, 2287, 7, 9, 0, 0, 2287, 280, 1, 0, 0, 0, 2288, 2289, 7, 5, 0, 0, 2289, 2290, 7, 14, 0, 0, 2290, 2291, 7, 16, 0, 0, 2291, 2292, 7, 17, 0, 0, 2292, 2293, 7, 19, 0, 0, 2293, 2294, 7, 7, 0, 0, 2294, 282, 1, 0, 0, 0, 2295, 2296, 7, 5, 0, 0, 2296, 2297, 7, 12, 0, 0, 2297, 2298, 7, 12, 0, 0, 2298, 284, 1, 0, 0, 0, 2299, 2300, 7, 5, 0, 0, 2300, 2301, 7, 12, 0, 0, 2301, 2302, 7, 15, 0, 0, 2302, 2303, 7, 17, 0, 0, 2303, 2304, 7, 7, 0, 0, 2304, 286, 1, 0, 0, 0, 2305, 2306, 7, 5, 0, 0, 2306, 2307, 7, 25, 0, 0, 2307, 2308, 7, 16, 0, 0, 2308, 2309, 7, 10, 0, 0, 2309, 2310, 7, 13, 0, 0, 2310, 288, 1, 0, 0, 0, 2311, 2312, 7, 5, 0, 0, 2312, 2313, 7, 23, 0, 0, 2313, 2314, 7, 23, 0, 0, 2314, 2315, 7, 13, 0, 0, 2315, 2316, 7, 10, 0, 0, 2316, 2317, 7, 23, 0, 0, 2317, 2318, 7, 5, 0, 0, 2318, 2319, 7, 16, 0, 0, 2319, 2320, 7, 10, 0, 0, 2320, 290, 1, 0, 0, 0, 2321, 2322, 7, 5, 0, 0, 2322, 2323, 7, 6, 0, 0, 2323, 2324, 7, 9, 0, 0, 2324, 2325, 7, 19, 0, 0, 2325, 292, 1, 0, 0, 0, 2326, 2327, 7, 5, 0, 0, 2327, 2328, 7, 6, 0, 0, 2328, 2329, 7, 16, 0, 0, 2329, 2330, 7, 10, 0, 0, 2330, 2331, 7, 13, 0, 0, 2331, 294, 1, 0, 0, 0, 2332, 2333, 7, 5, 0, 0, 2333, 2334, 7, 6, 0, 0, 2334, 2335, 7, 28, 0, 0, 2335, 2336, 7, 5, 0, 0, 2336, 2337, 7, 8, 0, 0, 2337, 2338, 7, 9, 0, 0, 2338, 296, 1, 0, 0, 0, 2339, 2340, 7, 5, 0, 0, 2340, 2341, 7, 9, 0, 0, 2341, 2342, 7, 9, 0, 0, 2342, 2343, 7, 10, 0, 0, 2343, 2344, 7, 13, 0, 0, 2344, 2345, 7, 16, 0, 0, 2345, 2346, 7, 17, 0, 0, 2346, 2347, 7, 19, 0, 0, 2347, 2348, 7, 7, 0, 0, 2348, 298, 1, 0, 0, 0, 2349, 2350, 7, 5, 0, 0, 2350, 2351, 7, 9, 0, 0, 2351, 2352, 7, 9, 0, 0, 2352, 2353, 7, 17, 0, 0, 2353, 2354, 7, 23, 0, 0, 2354, 2355, 7, 7, 0, 0, 2355, 2356, 7, 15, 0, 0, 2356, 2357, 7, 10, 0, 0, 2357, 2358, 7, 7, 0, 0, 2358, 2359, 7, 16, 0, 0, 2359, 300, 1, 0, 0, 0, 2360, 2361, 7, 5, 0, 0, 2361, 2362, 7, 16, 0, 0, 2362, 302, 1, 0, 0, 0, 2363, 2364, 7, 5, 0, 0, 2364, 2365, 7, 16, 0, 0, 2365, 2366, 7, 16, 0, 0, 2366, 2367, 7, 13, 0, 0, 2367, 2368, 7, 17, 0, 0, 2368, 2369, 7, 18, 0, 0, 2369, 2370, 7, 22, 0, 0, 2370, 2371, 7, 16, 0, 0, 2371, 2372, 7, 10, 0, 0, 2372, 304, 1, 0, 0, 0, 2373, 2374, 7, 18, 0, 0, 2374, 2375, 7, 5, 0, 0, 2375, 2376, 7, 14, 0, 0, 2376, 2377, 7, 21, 0, 0, 2377, 2378, 7, 28, 0, 0, 2378, 2379, 7, 5, 0, 0, 2379, 2380, 7, 13, 0, 0, 2380, 2381, 7, 12, 0, 0, 2381, 306, 1, 0, 0, 0, 2382, 2383, 7, 18, 0, 0, 2383, 2384, 7, 10, 0, 0, 2384, 2385, 7, 25, 0, 0, 2385, 2386, 7, 19, 0, 0, 2386, 2387, 7, 13, 0, 0, 2387, 2388, 7, 10, 0, 0, 2388, 308, 1, 0, 0, 0, 2389, 2390, 7, 18, 0, 0, 2390, 2391, 7, 10, 0, 0, 2391, 2392, 7, 23, 0, 0, 2392, 2393, 7, 17, 0, 0, 2393, 2394, 7, 7, 0, 0, 2394, 310, 1, 0, 0, 0, 2395, 2396, 7, 18, 0, 0, 2396, 2397, 7, 8, 0, 0, 2397, 312, 1, 0, 0, 0, 2398, 2399, 7, 14, 0, 0, 2399, 2400, 7, 5, 0, 0, 2400, 2401, 7, 14, 0, 0, 2401, 2402, 7, 20, 0, 0, 2402, 2403, 7, 10, 0, 0, 2403, 314, 1, 0, 0, 0, 2404, 2405, 7, 14, 0, 0, 2405, 2406, 7, 5, 0, 0, 2406, 2407, 7, 6, 0, 0, 2407, 2408, 7, 6, 0, 0, 2408, 2409, 7, 10, 0, 0, 2409, 2410, 7, 12, 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, 318, 1, 0, 0, 0, 2419, 2420, 7, 14, 0, 0, 2420, 2421, 7, 5, 0, 0, 2421, 2422, 7, 9, 0, 0, 2422, 2423, 7, 14, 0, 0, 2423, 2424, 7, 5, 0, 0, 2424, 2425, 7, 12, 0, 0, 2425, 2426, 7, 10, 0, 0, 2426, 2427, 7, 12, 0, 0, 2427, 320, 1, 0, 0, 0, 2428, 2429, 7, 14, 0, 0, 2429, 2430, 7, 5, 0, 0, 2430, 2431, 7, 16, 0, 0, 2431, 2432, 7, 5, 0, 0, 2432, 2433, 7, 6, 0, 0, 2433, 2434, 7, 19, 0, 0, 2434, 2435, 7, 23, 0, 0, 2435, 322, 1, 0, 0, 0, 2436, 2437, 7, 14, 0, 0, 2437, 2438, 7, 20, 0, 0, 2438, 2439, 7, 5, 0, 0, 2439, 2440, 7, 17, 0, 0, 2440, 2441, 7, 7, 0, 0, 2441, 324, 1, 0, 0, 0, 2442, 2443, 7, 14, 0, 0, 2443, 2444, 7, 20, 0, 0, 2444, 2445, 7, 5, 0, 0, 2445, 2446, 7, 13, 0, 0, 2446, 2447, 7, 5, 0, 0, 2447, 2448, 7, 14, 0, 0, 2448, 2449, 7, 16, 0, 0, 2449, 2450, 7, 10, 0, 0, 2450, 2451, 7, 13, 0, 0, 2451, 2452, 7, 17, 0, 0, 2452, 2453, 7, 9, 0, 0, 2453, 2454, 7, 16, 0, 0, 2454, 2455, 7, 17, 0, 0, 2455, 2456, 7, 14, 0, 0, 2456, 2457, 7, 9, 0, 0, 2457, 326, 1, 0, 0, 0, 2458, 2459, 7, 14, 0, 0, 2459, 2460, 7, 20, 0, 0, 2460, 2461, 7, 10, 0, 0, 2461, 2462, 7, 14, 0, 0, 2462, 2463, 7, 21, 0, 0, 2463, 2464, 7, 24, 0, 0, 2464, 2465, 7, 19, 0, 0, 2465, 2466, 7, 17, 0, 0, 2466, 2467, 7, 7, 0, 0, 2467, 2468, 7, 16, 0, 0, 2468, 328, 1, 0, 0, 0, 2469, 2470, 7, 14, 0, 0, 2470, 2471, 7, 6, 0, 0, 2471, 2472, 7, 5, 0, 0, 2472, 2473, 7, 9, 0, 0, 2473, 2474, 7, 9, 0, 0, 2474, 330, 1, 0, 0, 0, 2475, 2476, 7, 14, 0, 0, 2476, 2477, 7, 6, 0, 0, 2477, 2478, 7, 19, 0, 0, 2478, 2479, 7, 9, 0, 0, 2479, 2480, 7, 10, 0, 0, 2480, 332, 1, 0, 0, 0, 2481, 2482, 7, 14, 0, 0, 2482, 2483, 7, 6, 0, 0, 2483, 2484, 7, 22, 0, 0, 2484, 2485, 7, 9, 0, 0, 2485, 2486, 7, 16, 0, 0, 2486, 2487, 7, 10, 0, 0, 2487, 2488, 7, 13, 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, 336, 1, 0, 0, 0, 2497, 2498, 7, 14, 0, 0, 2498, 2499, 7, 19, 0, 0, 2499, 2500, 7, 15, 0, 0, 2500, 2501, 7, 15, 0, 0, 2501, 2502, 7, 10, 0, 0, 2502, 2503, 7, 7, 0, 0, 2503, 2504, 7, 16, 0, 0, 2504, 2505, 7, 9, 0, 0, 2505, 338, 1, 0, 0, 0, 2506, 2507, 7, 14, 0, 0, 2507, 2508, 7, 19, 0, 0, 2508, 2509, 7, 15, 0, 0, 2509, 2510, 7, 15, 0, 0, 2510, 2511, 7, 17, 0, 0, 2511, 2512, 7, 16, 0, 0, 2512, 340, 1, 0, 0, 0, 2513, 2514, 7, 14, 0, 0, 2514, 2515, 7, 19, 0, 0, 2515, 2516, 7, 15, 0, 0, 2516, 2517, 7, 15, 0, 0, 2517, 2518, 7, 17, 0, 0, 2518, 2519, 7, 16, 0, 0, 2519, 2520, 7, 16, 0, 0, 2520, 2521, 7, 10, 0, 0, 2521, 2522, 7, 12, 0, 0, 2522, 342, 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, 25, 0, 0, 2527, 2528, 7, 17, 0, 0, 2528, 2529, 7, 23, 0, 0, 2529, 2530, 7, 22, 0, 0, 2530, 2531, 7, 13, 0, 0, 2531, 2532, 7, 5, 0, 0, 2532, 2533, 7, 16, 0, 0, 2533, 2534, 7, 17, 0, 0, 2534, 2535, 7, 19, 0, 0, 2535, 2536, 7, 7, 0, 0, 2536, 344, 1, 0, 0, 0, 2537, 2538, 7, 14, 0, 0, 2538, 2539, 7, 19, 0, 0, 2539, 2540, 7, 7, 0, 0, 2540, 2541, 7, 7, 0, 0, 2541, 2542, 7, 10, 0, 0, 2542, 2543, 7, 14, 0, 0, 2543, 2544, 7, 16, 0, 0, 2544, 2545, 7, 17, 0, 0, 2545, 2546, 7, 19, 0, 0, 2546, 2547, 7, 7, 0, 0, 2547, 346, 1, 0, 0, 0, 2548, 2549, 7, 14, 0, 0, 2549, 2550, 7, 19, 0, 0, 2550, 2551, 7, 7, 0, 0, 2551, 2552, 7, 9, 0, 0, 2552, 2553, 7, 16, 0, 0, 2553, 2554, 7, 13, 0, 0, 2554, 2555, 7, 5, 0, 0, 2555, 2556, 7, 17, 0, 0, 2556, 2557, 7, 7, 0, 0, 2557, 2558, 7, 16, 0, 0, 2558, 2559, 7, 9, 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, 10, 0, 0, 2565, 2566, 7, 7, 0, 0, 2566, 2567, 7, 16, 0, 0, 2567, 350, 1, 0, 0, 0, 2568, 2569, 7, 14, 0, 0, 2569, 2570, 7, 19, 0, 0, 2570, 2571, 7, 7, 0, 0, 2571, 2572, 7, 16, 0, 0, 2572, 2573, 7, 17, 0, 0, 2573, 2574, 7, 7, 0, 0, 2574, 2575, 7, 22, 0, 0, 2575, 2576, 7, 10, 0, 0, 2576, 352, 1, 0, 0, 0, 2577, 2578, 7, 14, 0, 0, 2578, 2579, 7, 19, 0, 0, 2579, 2580, 7, 7, 0, 0, 2580, 2581, 7, 27, 0, 0, 2581, 2582, 7, 10, 0, 0, 2582, 2583, 7, 13, 0, 0, 2583, 2584, 7, 9, 0, 0, 2584, 2585, 7, 17, 0, 0, 2585, 2586, 7, 19, 0, 0, 2586, 2587, 7, 7, 0, 0, 2587, 354, 1, 0, 0, 0, 2588, 2589, 7, 14, 0, 0, 2589, 2590, 7, 19, 0, 0, 2590, 2591, 7, 24, 0, 0, 2591, 2592, 7, 8, 0, 0, 2592, 356, 1, 0, 0, 0, 2593, 2594, 7, 14, 0, 0, 2594, 2595, 7, 19, 0, 0, 2595, 2596, 7, 9, 0, 0, 2596, 2597, 7, 16, 0, 0, 2597, 358, 1, 0, 0, 0, 2598, 2599, 7, 14, 0, 0, 2599, 2600, 7, 9, 0, 0, 2600, 2601, 7, 27, 0, 0, 2601, 360, 1, 0, 0, 0, 2602, 2603, 7, 14, 0, 0, 2603, 2604, 7, 22, 0, 0, 2604, 2605, 7, 13, 0, 0, 2605, 2606, 7, 9, 0, 0, 2606, 2607, 7, 19, 0, 0, 2607, 2608, 7, 13, 0, 0, 2608, 362, 1, 0, 0, 0, 2609, 2610, 7, 14, 0, 0, 2610, 2611, 7, 8, 0, 0, 2611, 2612, 7, 14, 0, 0, 2612, 2613, 7, 6, 0, 0, 2613, 2614, 7, 10, 0, 0, 2614, 364, 1, 0, 0, 0, 2615, 2616, 7, 12, 0, 0, 2616, 2617, 7, 5, 0, 0, 2617, 2618, 7, 16, 0, 0, 2618, 2619, 7, 5, 0, 0, 2619, 366, 1, 0, 0, 0, 2620, 2621, 7, 12, 0, 0, 2621, 2622, 7, 5, 0, 0, 2622, 2623, 7, 16, 0, 0, 2623, 2624, 7, 5, 0, 0, 2624, 2625, 7, 18, 0, 0, 2625, 2626, 7, 5, 0, 0, 2626, 2627, 7, 9, 0, 0, 2627, 2628, 7, 10, 0, 0, 2628, 368, 1, 0, 0, 0, 2629, 2630, 7, 12, 0, 0, 2630, 2631, 7, 5, 0, 0, 2631, 2632, 7, 8, 0, 0, 2632, 370, 1, 0, 0, 0, 2633, 2634, 7, 12, 0, 0, 2634, 2635, 7, 10, 0, 0, 2635, 2636, 7, 5, 0, 0, 2636, 2637, 7, 6, 0, 0, 2637, 2638, 7, 6, 0, 0, 2638, 2639, 7, 19, 0, 0, 2639, 2640, 7, 14, 0, 0, 2640, 2641, 7, 5, 0, 0, 2641, 2642, 7, 16, 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, 14, 0, 0, 2647, 2648, 7, 6, 0, 0, 2648, 2649, 7, 5, 0, 0, 2649, 2650, 7, 13, 0, 0, 2650, 2651, 7, 10, 0, 0, 2651, 374, 1, 0, 0, 0, 2652, 2653, 7, 12, 0, 0, 2653, 2654, 7, 10, 0, 0, 2654, 2655, 7, 25, 0, 0, 2655, 2656, 7, 5, 0, 0, 2656, 2657, 7, 22, 0, 0, 2657, 2658, 7, 6, 0, 0, 2658, 2659, 7, 16, 0, 0, 2659, 2660, 7, 9, 0, 0, 2660, 376, 1, 0, 0, 0, 2661, 2662, 7, 12, 0, 0, 2662, 2663, 7, 10, 0, 0, 2663, 2664, 7, 25, 0, 0, 2664, 2665, 7, 10, 0, 0, 2665, 2666, 7, 13, 0, 0, 2666, 2667, 7, 13, 0, 0, 2667, 2668, 7, 10, 0, 0, 2668, 2669, 7, 12, 0, 0, 2669, 378, 1, 0, 0, 0, 2670, 2671, 7, 12, 0, 0, 2671, 2672, 7, 10, 0, 0, 2672, 2673, 7, 25, 0, 0, 2673, 2674, 7, 17, 0, 0, 2674, 2675, 7, 7, 0, 0, 2675, 2676, 7, 10, 0, 0, 2676, 2677, 7, 13, 0, 0, 2677, 380, 1, 0, 0, 0, 2678, 2679, 7, 12, 0, 0, 2679, 2680, 7, 10, 0, 0, 2680, 2681, 7, 6, 0, 0, 2681, 2682, 7, 10, 0, 0, 2682, 2683, 7, 16, 0, 0, 2683, 2684, 7, 10, 0, 0, 2684, 382, 1, 0, 0, 0, 2685, 2686, 7, 12, 0, 0, 2686, 2687, 7, 10, 0, 0, 2687, 2688, 7, 6, 0, 0, 2688, 2689, 7, 17, 0, 0, 2689, 2690, 7, 15, 0, 0, 2690, 2691, 7, 17, 0, 0, 2691, 2692, 7, 16, 0, 0, 2692, 2693, 7, 10, 0, 0, 2693, 2694, 7, 13, 0, 0, 2694, 384, 1, 0, 0, 0, 2695, 2696, 7, 12, 0, 0, 2696, 2697, 7, 10, 0, 0, 2697, 2698, 7, 6, 0, 0, 2698, 2699, 7, 17, 0, 0, 2699, 2700, 7, 15, 0, 0, 2700, 2701, 7, 17, 0, 0, 2701, 2702, 7, 16, 0, 0, 2702, 2703, 7, 10, 0, 0, 2703, 2704, 7, 13, 0, 0, 2704, 2705, 7, 9, 0, 0, 2705, 386, 1, 0, 0, 0, 2706, 2707, 7, 12, 0, 0, 2707, 2708, 7, 17, 0, 0, 2708, 2709, 7, 14, 0, 0, 2709, 2710, 7, 16, 0, 0, 2710, 2711, 7, 17, 0, 0, 2711, 2712, 7, 19, 0, 0, 2712, 2713, 7, 7, 0, 0, 2713, 2714, 7, 5, 0, 0, 2714, 2715, 7, 13, 0, 0, 2715, 2716, 7, 8, 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, 5, 0, 0, 2721, 2722, 7, 18, 0, 0, 2722, 2723, 7, 6, 0, 0, 2723, 2724, 7, 10, 0, 0, 2724, 390, 1, 0, 0, 0, 2725, 2726, 7, 12, 0, 0, 2726, 2727, 7, 17, 0, 0, 2727, 2728, 7, 9, 0, 0, 2728, 2729, 7, 14, 0, 0, 2729, 2730, 7, 5, 0, 0, 2730, 2731, 7, 13, 0, 0, 2731, 2732, 7, 12, 0, 0, 2732, 392, 1, 0, 0, 0, 2733, 2734, 7, 12, 0, 0, 2734, 2735, 7, 19, 0, 0, 2735, 2736, 7, 14, 0, 0, 2736, 2737, 7, 22, 0, 0, 2737, 2738, 7, 15, 0, 0, 2738, 2739, 7, 10, 0, 0, 2739, 2740, 7, 7, 0, 0, 2740, 2741, 7, 16, 0, 0, 2741, 394, 1, 0, 0, 0, 2742, 2743, 7, 12, 0, 0, 2743, 2744, 7, 19, 0, 0, 2744, 2745, 7, 15, 0, 0, 2745, 2746, 7, 5, 0, 0, 2746, 2747, 7, 17, 0, 0, 2747, 2748, 7, 7, 0, 0, 2748, 396, 1, 0, 0, 0, 2749, 2750, 7, 12, 0, 0, 2750, 2751, 7, 19, 0, 0, 2751, 2752, 7, 22, 0, 0, 2752, 2753, 7, 18, 0, 0, 2753, 2754, 7, 6, 0, 0, 2754, 2755, 7, 10, 0, 0, 2755, 398, 1, 0, 0, 0, 2756, 2757, 7, 12, 0, 0, 2757, 2758, 7, 13, 0, 0, 2758, 2759, 7, 19, 0, 0, 2759, 2760, 7, 24, 0, 0, 2760, 400, 1, 0, 0, 0, 2761, 2762, 7, 10, 0, 0, 2762, 2763, 7, 5, 0, 0, 2763, 2764, 7, 14, 0, 0, 2764, 2765, 7, 20, 0, 0, 2765, 402, 1, 0, 0, 0, 2766, 2767, 7, 10, 0, 0, 2767, 2768, 7, 7, 0, 0, 2768, 2769, 7, 5, 0, 0, 2769, 2770, 7, 18, 0, 0, 2770, 2771, 7, 6, 0, 0, 2771, 2772, 7, 10, 0, 0, 2772, 404, 1, 0, 0, 0, 2773, 2774, 7, 10, 0, 0, 2774, 2775, 7, 7, 0, 0, 2775, 2776, 7, 14, 0, 0, 2776, 2777, 7, 19, 0, 0, 2777, 2778, 7, 12, 0, 0, 2778, 2779, 7, 17, 0, 0, 2779, 2780, 7, 7, 0, 0, 2780, 2781, 7, 23, 0, 0, 2781, 406, 1, 0, 0, 0, 2782, 2783, 7, 10, 0, 0, 2783, 2784, 7, 7, 0, 0, 2784, 2785, 7, 14, 0, 0, 2785, 2786, 7, 13, 0, 0, 2786, 2787, 7, 8, 0, 0, 2787, 2788, 7, 24, 0, 0, 2788, 2789, 7, 16, 0, 0, 2789, 2790, 7, 10, 0, 0, 2790, 2791, 7, 12, 0, 0, 2791, 408, 1, 0, 0, 0, 2792, 2793, 7, 10, 0, 0, 2793, 2794, 7, 7, 0, 0, 2794, 2795, 7, 22, 0, 0, 2795, 2796, 7, 15, 0, 0, 2796, 410, 1, 0, 0, 0, 2797, 2798, 7, 10, 0, 0, 2798, 2799, 7, 9, 0, 0, 2799, 2800, 7, 14, 0, 0, 2800, 2801, 7, 5, 0, 0, 2801, 2802, 7, 24, 0, 0, 2802, 2803, 7, 10, 0, 0, 2803, 412, 1, 0, 0, 0, 2804, 2805, 7, 10, 0, 0, 2805, 2806, 7, 27, 0, 0, 2806, 2807, 7, 10, 0, 0, 2807, 2808, 7, 7, 0, 0, 2808, 2809, 7, 16, 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, 10, 0, 0, 2817, 416, 1, 0, 0, 0, 2818, 2819, 7, 10, 0, 0, 2819, 2820, 7, 26, 0, 0, 2820, 2821, 7, 14, 0, 0, 2821, 2822, 7, 6, 0, 0, 2822, 2823, 7, 22, 0, 0, 2823, 2824, 7, 12, 0, 0, 2824, 2825, 7, 17, 0, 0, 2825, 2826, 7, 7, 0, 0, 2826, 2827, 7, 23, 0, 0, 2827, 418, 1, 0, 0, 0, 2828, 2829, 7, 10, 0, 0, 2829, 2830, 7, 26, 0, 0, 2830, 2831, 7, 14, 0, 0, 2831, 2832, 7, 6, 0, 0, 2832, 2833, 7, 22, 0, 0, 2833, 2834, 7, 9, 0, 0, 2834, 2835, 7, 17, 0, 0, 2835, 2836, 7, 27, 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, 10, 0, 0, 2841, 2842, 7, 14, 0, 0, 2842, 2843, 7, 22, 0, 0, 2843, 2844, 7, 16, 0, 0, 2844, 2845, 7, 10, 0, 0, 2845, 422, 1, 0, 0, 0, 2846, 2847, 7, 10, 0, 0, 2847, 2848, 7, 26, 0, 0, 2848, 2849, 7, 24, 0, 0, 2849, 2850, 7, 6, 0, 0, 2850, 2851, 7, 5, 0, 0, 2851, 2852, 7, 17, 0, 0, 2852, 2853, 7, 7, 0, 0, 2853, 424, 1, 0, 0, 0, 2854, 2855, 7, 10, 0, 0, 2855, 2856, 7, 26, 0, 0, 2856, 2857, 7, 16, 0, 0, 2857, 2858, 7, 10, 0, 0, 2858, 2859, 7, 7, 0, 0, 2859, 2860, 7, 9, 0, 0, 2860, 2861, 7, 17, 0, 0, 2861, 2862, 7, 19, 0, 0, 2862, 2863, 7, 7, 0, 0, 2863, 426, 1, 0, 0, 0, 2864, 2865, 7, 10, 0, 0, 2865, 2866, 7, 26, 0, 0, 2866, 2867, 7, 16, 0, 0, 2867, 2868, 7, 10, 0, 0, 2868, 2869, 7, 13, 0, 0, 2869, 2870, 7, 7, 0, 0, 2870, 2871, 7, 5, 0, 0, 2871, 2872, 7, 6, 0, 0, 2872, 428, 1, 0, 0, 0, 2873, 2874, 7, 25, 0, 0, 2874, 2875, 7, 5, 0, 0, 2875, 2876, 7, 15, 0, 0, 2876, 2877, 7, 17, 0, 0, 2877, 2878, 7, 6, 0, 0, 2878, 2879, 7, 8, 0, 0, 2879, 430, 1, 0, 0, 0, 2880, 2881, 7, 25, 0, 0, 2881, 2882, 7, 17, 0, 0, 2882, 2883, 7, 13, 0, 0, 2883, 2884, 7, 9, 0, 0, 2884, 2885, 7, 16, 0, 0, 2885, 432, 1, 0, 0, 0, 2886, 2887, 7, 25, 0, 0, 2887, 2888, 7, 19, 0, 0, 2888, 2889, 7, 6, 0, 0, 2889, 2890, 7, 6, 0, 0, 2890, 2891, 7, 19, 0, 0, 2891, 2892, 7, 28, 0, 0, 2892, 2893, 7, 17, 0, 0, 2893, 2894, 7, 7, 0, 0, 2894, 2895, 7, 23, 0, 0, 2895, 434, 1, 0, 0, 0, 2896, 2897, 7, 25, 0, 0, 2897, 2898, 7, 19, 0, 0, 2898, 2899, 7, 13, 0, 0, 2899, 2900, 7, 14, 0, 0, 2900, 2901, 7, 10, 0, 0, 2901, 436, 1, 0, 0, 0, 2902, 2903, 7, 25, 0, 0, 2903, 2904, 7, 19, 0, 0, 2904, 2905, 7, 13, 0, 0, 2905, 2906, 7, 28, 0, 0, 2906, 2907, 7, 5, 0, 0, 2907, 2908, 7, 13, 0, 0, 2908, 2909, 7, 12, 0, 0, 2909, 438, 1, 0, 0, 0, 2910, 2911, 7, 25, 0, 0, 2911, 2912, 7, 22, 0, 0, 2912, 2913, 7, 7, 0, 0, 2913, 2914, 7, 14, 0, 0, 2914, 2915, 7, 16, 0, 0, 2915, 2916, 7, 17, 0, 0, 2916, 2917, 7, 19, 0, 0, 2917, 2918, 7, 7, 0, 0, 2918, 440, 1, 0, 0, 0, 2919, 2920, 7, 25, 0, 0, 2920, 2921, 7, 22, 0, 0, 2921, 2922, 7, 7, 0, 0, 2922, 2923, 7, 14, 0, 0, 2923, 2924, 7, 16, 0, 0, 2924, 2925, 7, 17, 0, 0, 2925, 2926, 7, 19, 0, 0, 2926, 2927, 7, 7, 0, 0, 2927, 2928, 7, 9, 0, 0, 2928, 442, 1, 0, 0, 0, 2929, 2930, 7, 23, 0, 0, 2930, 2931, 7, 6, 0, 0, 2931, 2932, 7, 19, 0, 0, 2932, 2933, 7, 18, 0, 0, 2933, 2934, 7, 5, 0, 0, 2934, 2935, 7, 6, 0, 0, 2935, 444, 1, 0, 0, 0, 2936, 2937, 7, 23, 0, 0, 2937, 2938, 7, 13, 0, 0, 2938, 2939, 7, 5, 0, 0, 2939, 2940, 7, 7, 0, 0, 2940, 2941, 7, 16, 0, 0, 2941, 2942, 7, 10, 0, 0, 2942, 2943, 7, 12, 0, 0, 2943, 446, 1, 0, 0, 0, 2944, 2945, 7, 20, 0, 0, 2945, 2946, 7, 5, 0, 0, 2946, 2947, 7, 7, 0, 0, 2947, 2948, 7, 12, 0, 0, 2948, 2949, 7, 6, 0, 0, 2949, 2950, 7, 10, 0, 0, 2950, 2951, 7, 13, 0, 0, 2951, 448, 1, 0, 0, 0, 2952, 2953, 7, 20, 0, 0, 2953, 2954, 7, 10, 0, 0, 2954, 2955, 7, 5, 0, 0, 2955, 2956, 7, 12, 0, 0, 2956, 2957, 7, 10, 0, 0, 2957, 2958, 7, 13, 0, 0, 2958, 450, 1, 0, 0, 0, 2959, 2960, 7, 20, 0, 0, 2960, 2961, 7, 19, 0, 0, 2961, 2962, 7, 6, 0, 0, 2962, 2963, 7, 12, 0, 0, 2963, 452, 1, 0, 0, 0, 2964, 2965, 7, 20, 0, 0, 2965, 2966, 7, 19, 0, 0, 2966, 2967, 7, 22, 0, 0, 2967, 2968, 7, 13, 0, 0, 2968, 454, 1, 0, 0, 0, 2969, 2970, 7, 17, 0, 0, 2970, 2971, 7, 12, 0, 0, 2971, 2972, 7, 10, 0, 0, 2972, 2973, 7, 7, 0, 0, 2973, 2974, 7, 16, 0, 0, 2974, 2975, 7, 17, 0, 0, 2975, 2976, 7, 16, 0, 0, 2976, 2977, 7, 8, 0, 0, 2977, 456, 1, 0, 0, 0, 2978, 2979, 7, 17, 0, 0, 2979, 2980, 7, 25, 0, 0, 2980, 458, 1, 0, 0, 0, 2981, 2982, 7, 17, 0, 0, 2982, 2983, 7, 15, 0, 0, 2983, 2984, 7, 15, 0, 0, 2984, 2985, 7, 10, 0, 0, 2985, 2986, 7, 12, 0, 0, 2986, 2987, 7, 17, 0, 0, 2987, 2988, 7, 5, 0, 0, 2988, 2989, 7, 16, 0, 0, 2989, 2990, 7, 10, 0, 0, 2990, 460, 1, 0, 0, 0, 2991, 2992, 7, 17, 0, 0, 2992, 2993, 7, 15, 0, 0, 2993, 2994, 7, 15, 0, 0, 2994, 2995, 7, 22, 0, 0, 2995, 2996, 7, 16, 0, 0, 2996, 2997, 7, 5, 0, 0, 2997, 2998, 7, 18, 0, 0, 2998, 2999, 7, 6, 0, 0, 2999, 3000, 7, 10, 0, 0, 3000, 462, 1, 0, 0, 0, 3001, 3002, 7, 17, 0, 0, 3002, 3003, 7, 15, 0, 0, 3003, 3004, 7, 24, 0, 0, 3004, 3005, 7, 6, 0, 0, 3005, 3006, 7, 17, 0, 0, 3006, 3007, 7, 14, 0, 0, 3007, 3008, 7, 17, 0, 0, 3008, 3009, 7, 16, 0, 0, 3009, 464, 1, 0, 0, 0, 3010, 3011, 7, 17, 0, 0, 3011, 3012, 7, 7, 0, 0, 3012, 3013, 7, 14, 0, 0, 3013, 3014, 7, 6, 0, 0, 3014, 3015, 7, 22, 0, 0, 3015, 3016, 7, 12, 0, 0, 3016, 3017, 7, 17, 0, 0, 3017, 3018, 7, 7, 0, 0, 3018, 3019, 7, 23, 0, 0, 3019, 466, 1, 0, 0, 0, 3020, 3021, 7, 17, 0, 0, 3021, 3022, 7, 7, 0, 0, 3022, 3023, 7, 14, 0, 0, 3023, 3024, 7, 13, 0, 0, 3024, 3025, 7, 10, 0, 0, 3025, 3026, 7, 15, 0, 0, 3026, 3027, 7, 10, 0, 0, 3027, 3028, 7, 7, 0, 0, 3028, 3029, 7, 16, 0, 0, 3029, 468, 1, 0, 0, 0, 3030, 3031, 7, 17, 0, 0, 3031, 3032, 7, 7, 0, 0, 3032, 3033, 7, 12, 0, 0, 3033, 3034, 7, 10, 0, 0, 3034, 3035, 7, 26, 0, 0, 3035, 470, 1, 0, 0, 0, 3036, 3037, 7, 17, 0, 0, 3037, 3038, 7, 7, 0, 0, 3038, 3039, 7, 12, 0, 0, 3039, 3040, 7, 10, 0, 0, 3040, 3041, 7, 26, 0, 0, 3041, 3042, 7, 10, 0, 0, 3042, 3043, 7, 9, 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, 474, 1, 0, 0, 0, 3052, 3053, 7, 17, 0, 0, 3053, 3054, 7, 7, 0, 0, 3054, 3055, 7, 20, 0, 0, 3055, 3056, 7, 10, 0, 0, 3056, 3057, 7, 13, 0, 0, 3057, 3058, 7, 17, 0, 0, 3058, 3059, 7, 16, 0, 0, 3059, 3060, 7, 9, 0, 0, 3060, 476, 1, 0, 0, 0, 3061, 3062, 7, 17, 0, 0, 3062, 3063, 7, 7, 0, 0, 3063, 3064, 7, 6, 0, 0, 3064, 3065, 7, 17, 0, 0, 3065, 3066, 7, 7, 0, 0, 3066, 3067, 7, 10, 0, 0, 3067, 478, 1, 0, 0, 0, 3068, 3069, 7, 17, 0, 0, 3069, 3070, 7, 7, 0, 0, 3070, 3071, 7, 9, 0, 0, 3071, 3072, 7, 10, 0, 0, 3072, 3073, 7, 7, 0, 0, 3073, 3074, 7, 9, 0, 0, 3074, 3075, 7, 17, 0, 0, 3075, 3076, 7, 16, 0, 0, 3076, 3077, 7, 17, 0, 0, 3077, 3078, 7, 27, 0, 0, 3078, 3079, 7, 10, 0, 0, 3079, 480, 1, 0, 0, 0, 3080, 3081, 7, 17, 0, 0, 3081, 3082, 7, 7, 0, 0, 3082, 3083, 7, 9, 0, 0, 3083, 3084, 7, 10, 0, 0, 3084, 3085, 7, 13, 0, 0, 3085, 3086, 7, 16, 0, 0, 3086, 482, 1, 0, 0, 0, 3087, 3088, 7, 17, 0, 0, 3088, 3089, 7, 7, 0, 0, 3089, 3090, 7, 9, 0, 0, 3090, 3091, 7, 16, 0, 0, 3091, 3092, 7, 10, 0, 0, 3092, 3093, 7, 5, 0, 0, 3093, 3094, 7, 12, 0, 0, 3094, 484, 1, 0, 0, 0, 3095, 3096, 7, 17, 0, 0, 3096, 3097, 7, 7, 0, 0, 3097, 3098, 7, 27, 0, 0, 3098, 3099, 7, 19, 0, 0, 3099, 3100, 7, 21, 0, 0, 3100, 3101, 7, 10, 0, 0, 3101, 3102, 7, 13, 0, 0, 3102, 486, 1, 0, 0, 0, 3103, 3104, 7, 17, 0, 0, 3104, 3105, 7, 9, 0, 0, 3105, 3106, 7, 19, 0, 0, 3106, 3107, 7, 6, 0, 0, 3107, 3108, 7, 5, 0, 0, 3108, 3109, 7, 16, 0, 0, 3109, 3110, 7, 17, 0, 0, 3110, 3111, 7, 19, 0, 0, 3111, 3112, 7, 7, 0, 0, 3112, 488, 1, 0, 0, 0, 3113, 3114, 7, 21, 0, 0, 3114, 3115, 7, 10, 0, 0, 3115, 3116, 7, 8, 0, 0, 3116, 490, 1, 0, 0, 0, 3117, 3118, 7, 6, 0, 0, 3118, 3119, 7, 5, 0, 0, 3119, 3120, 7, 18, 0, 0, 3120, 3121, 7, 10, 0, 0, 3121, 3122, 7, 6, 0, 0, 3122, 492, 1, 0, 0, 0, 3123, 3124, 7, 6, 0, 0, 3124, 3125, 7, 5, 0, 0, 3125, 3126, 7, 7, 0, 0, 3126, 3127, 7, 23, 0, 0, 3127, 3128, 7, 22, 0, 0, 3128, 3129, 7, 5, 0, 0, 3129, 3130, 7, 23, 0, 0, 3130, 3131, 7, 10, 0, 0, 3131, 494, 1, 0, 0, 0, 3132, 3133, 7, 6, 0, 0, 3133, 3134, 7, 5, 0, 0, 3134, 3135, 7, 13, 0, 0, 3135, 3136, 7, 23, 0, 0, 3136, 3137, 7, 10, 0, 0, 3137, 496, 1, 0, 0, 0, 3138, 3139, 7, 6, 0, 0, 3139, 3140, 7, 5, 0, 0, 3140, 3141, 7, 9, 0, 0, 3141, 3142, 7, 16, 0, 0, 3142, 498, 1, 0, 0, 0, 3143, 3144, 7, 6, 0, 0, 3144, 3145, 7, 10, 0, 0, 3145, 3146, 7, 5, 0, 0, 3146, 3147, 7, 21, 0, 0, 3147, 3148, 7, 24, 0, 0, 3148, 3149, 7, 13, 0, 0, 3149, 3150, 7, 19, 0, 0, 3150, 3151, 7, 19, 0, 0, 3151, 3152, 7, 25, 0, 0, 3152, 500, 1, 0, 0, 0, 3153, 3154, 7, 6, 0, 0, 3154, 3155, 7, 10, 0, 0, 3155, 3156, 7, 27, 0, 0, 3156, 3157, 7, 10, 0, 0, 3157, 3158, 7, 6, 0, 0, 3158, 502, 1, 0, 0, 0, 3159, 3160, 7, 6, 0, 0, 3160, 3161, 7, 17, 0, 0, 3161, 3162, 7, 9, 0, 0, 3162, 3163, 7, 16, 0, 0, 3163, 3164, 7, 10, 0, 0, 3164, 3165, 7, 7, 0, 0, 3165, 504, 1, 0, 0, 0, 3166, 3167, 7, 6, 0, 0, 3167, 3168, 7, 19, 0, 0, 3168, 3169, 7, 5, 0, 0, 3169, 3170, 7, 12, 0, 0, 3170, 506, 1, 0, 0, 0, 3171, 3172, 7, 6, 0, 0, 3172, 3173, 7, 19, 0, 0, 3173, 3174, 7, 14, 0, 0, 3174, 3175, 7, 5, 0, 0, 3175, 3176, 7, 6, 0, 0, 3176, 508, 1, 0, 0, 0, 3177, 3178, 7, 6, 0, 0, 3178, 3179, 7, 19, 0, 0, 3179, 3180, 7, 14, 0, 0, 3180, 3181, 7, 5, 0, 0, 3181, 3182, 7, 16, 0, 0, 3182, 3183, 7, 17, 0, 0, 3183, 3184, 7, 19, 0, 0, 3184, 3185, 7, 7, 0, 0, 3185, 510, 1, 0, 0, 0, 3186, 3187, 7, 6, 0, 0, 3187, 3188, 7, 19, 0, 0, 3188, 3189, 7, 14, 0, 0, 3189, 3190, 7, 21, 0, 0, 3190, 512, 1, 0, 0, 0, 3191, 3192, 7, 15, 0, 0, 3192, 3193, 7, 5, 0, 0, 3193, 3194, 7, 24, 0, 0, 3194, 3195, 7, 24, 0, 0, 3195, 3196, 7, 17, 0, 0, 3196, 3197, 7, 7, 0, 0, 3197, 3198, 7, 23, 0, 0, 3198, 514, 1, 0, 0, 0, 3199, 3200, 7, 15, 0, 0, 3200, 3201, 7, 5, 0, 0, 3201, 3202, 7, 16, 0, 0, 3202, 3203, 7, 14, 0, 0, 3203, 3204, 7, 20, 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, 14, 0, 0, 3209, 3210, 7, 20, 0, 0, 3210, 3211, 7, 10, 0, 0, 3211, 3212, 7, 12, 0, 0, 3212, 518, 1, 0, 0, 0, 3213, 3214, 7, 15, 0, 0, 3214, 3215, 7, 5, 0, 0, 3215, 3216, 7, 16, 0, 0, 3216, 3217, 7, 10, 0, 0, 3217, 3218, 7, 13, 0, 0, 3218, 3219, 7, 17, 0, 0, 3219, 3220, 7, 5, 0, 0, 3220, 3221, 7, 6, 0, 0, 3221, 3222, 7, 17, 0, 0, 3222, 3223, 7, 11, 0, 0, 3223, 3224, 7, 10, 0, 0, 3224, 3225, 7, 12, 0, 0, 3225, 520, 1, 0, 0, 0, 3226, 3227, 7, 15, 0, 0, 3227, 3228, 7, 5, 0, 0, 3228, 3229, 7, 26, 0, 0, 3229, 3230, 7, 27, 0, 0, 3230, 3231, 7, 5, 0, 0, 3231, 3232, 7, 6, 0, 0, 3232, 3233, 7, 22, 0, 0, 3233, 3234, 7, 10, 0, 0, 3234, 522, 1, 0, 0, 0, 3235, 3236, 7, 15, 0, 0, 3236, 3237, 7, 10, 0, 0, 3237, 3238, 7, 13, 0, 0, 3238, 3239, 7, 23, 0, 0, 3239, 3240, 7, 10, 0, 0, 3240, 524, 1, 0, 0, 0, 3241, 3242, 7, 15, 0, 0, 3242, 3243, 7, 17, 0, 0, 3243, 3244, 7, 7, 0, 0, 3244, 3245, 7, 22, 0, 0, 3245, 3246, 7, 16, 0, 0, 3246, 3247, 7, 10, 0, 0, 3247, 526, 1, 0, 0, 0, 3248, 3249, 7, 15, 0, 0, 3249, 3250, 7, 17, 0, 0, 3250, 3251, 7, 7, 0, 0, 3251, 3252, 7, 27, 0, 0, 3252, 3253, 7, 5, 0, 0, 3253, 3254, 7, 6, 0, 0, 3254, 3255, 7, 22, 0, 0, 3255, 3256, 7, 10, 0, 0, 3256, 528, 1, 0, 0, 0, 3257, 3258, 7, 15, 0, 0, 3258, 3259, 7, 19, 0, 0, 3259, 3260, 7, 12, 0, 0, 3260, 3261, 7, 10, 0, 0, 3261, 530, 1, 0, 0, 0, 3262, 3263, 7, 15, 0, 0, 3263, 3264, 7, 19, 0, 0, 3264, 3265, 7, 7, 0, 0, 3265, 3266, 7, 16, 0, 0, 3266, 3267, 7, 20, 0, 0, 3267, 532, 1, 0, 0, 0, 3268, 3269, 7, 15, 0, 0, 3269, 3270, 7, 19, 0, 0, 3270, 3271, 7, 27, 0, 0, 3271, 3272, 7, 10, 0, 0, 3272, 534, 1, 0, 0, 0, 3273, 3274, 7, 7, 0, 0, 3274, 3275, 7, 5, 0, 0, 3275, 3276, 7, 15, 0, 0, 3276, 3277, 7, 10, 0, 0, 3277, 536, 1, 0, 0, 0, 3278, 3279, 7, 7, 0, 0, 3279, 3280, 7, 5, 0, 0, 3280, 3281, 7, 15, 0, 0, 3281, 3282, 7, 10, 0, 0, 3282, 3283, 7, 9, 0, 0, 3283, 538, 1, 0, 0, 0, 3284, 3285, 7, 7, 0, 0, 3285, 3286, 7, 10, 0, 0, 3286, 3287, 7, 26, 0, 0, 3287, 3288, 7, 16, 0, 0, 3288, 540, 1, 0, 0, 0, 3289, 3290, 7, 7, 0, 0, 3290, 3291, 7, 19, 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, 20, 0, 0, 3296, 3297, 7, 17, 0, 0, 3297, 3298, 7, 7, 0, 0, 3298, 3299, 7, 23, 0, 0, 3299, 544, 1, 0, 0, 0, 3300, 3301, 7, 7, 0, 0, 3301, 3302, 7, 19, 0, 0, 3302, 3303, 7, 16, 0, 0, 3303, 3304, 7, 17, 0, 0, 3304, 3305, 7, 25, 0, 0, 3305, 3306, 7, 8, 0, 0, 3306, 546, 1, 0, 0, 0, 3307, 3308, 7, 7, 0, 0, 3308, 3309, 7, 19, 0, 0, 3309, 3310, 7, 28, 0, 0, 3310, 3311, 7, 5, 0, 0, 3311, 3312, 7, 17, 0, 0, 3312, 3313, 7, 16, 0, 0, 3313, 548, 1, 0, 0, 0, 3314, 3315, 7, 7, 0, 0, 3315, 3316, 7, 22, 0, 0, 3316, 3317, 7, 6, 0, 0, 3317, 3318, 7, 6, 0, 0, 3318, 3319, 7, 9, 0, 0, 3319, 550, 1, 0, 0, 0, 3320, 3321, 7, 19, 0, 0, 3321, 3322, 7, 18, 0, 0, 3322, 3323, 7, 30, 0, 0, 3323, 3324, 7, 10, 0, 0, 3324, 3325, 7, 14, 0, 0, 3325, 3326, 7, 16, 0, 0, 3326, 552, 1, 0, 0, 0, 3327, 3328, 7, 19, 0, 0, 3328, 3329, 7, 25, 0, 0, 3329, 554, 1, 0, 0, 0, 3330, 3331, 7, 19, 0, 0, 3331, 3332, 7, 25, 0, 0, 3332, 3333, 7, 25, 0, 0, 3333, 556, 1, 0, 0, 0, 3334, 3335, 7, 19, 0, 0, 3335, 3336, 7, 17, 0, 0, 3336, 3337, 7, 12, 0, 0, 3337, 3338, 7, 9, 0, 0, 3338, 558, 1, 0, 0, 0, 3339, 3340, 7, 19, 0, 0, 3340, 3341, 7, 24, 0, 0, 3341, 3342, 7, 10, 0, 0, 3342, 3343, 7, 13, 0, 0, 3343, 3344, 7, 5, 0, 0, 3344, 3345, 7, 16, 0, 0, 3345, 3346, 7, 19, 0, 0, 3346, 3347, 7, 13, 0, 0, 3347, 560, 1, 0, 0, 0, 3348, 3349, 7, 19, 0, 0, 3349, 3350, 7, 24, 0, 0, 3350, 3351, 7, 16, 0, 0, 3351, 3352, 7, 17, 0, 0, 3352, 3353, 7, 19, 0, 0, 3353, 3354, 7, 7, 0, 0, 3354, 562, 1, 0, 0, 0, 3355, 3356, 7, 19, 0, 0, 3356, 3357, 7, 24, 0, 0, 3357, 3358, 7, 16, 0, 0, 3358, 3359, 7, 17, 0, 0, 3359, 3360, 7, 19, 0, 0, 3360, 3361, 7, 7, 0, 0, 3361, 3362, 7, 9, 0, 0, 3362, 564, 1, 0, 0, 0, 3363, 3364, 7, 19, 0, 0, 3364, 3365, 7, 28, 0, 0, 3365, 3366, 7, 7, 0, 0, 3366, 3367, 7, 10, 0, 0, 3367, 3368, 7, 12, 0, 0, 3368, 566, 1, 0, 0, 0, 3369, 3370, 7, 19, 0, 0, 3370, 3371, 7, 28, 0, 0, 3371, 3372, 7, 7, 0, 0, 3372, 3373, 7, 10, 0, 0, 3373, 3374, 7, 13, 0, 0, 3374, 568, 1, 0, 0, 0, 3375, 3376, 7, 24, 0, 0, 3376, 3377, 7, 5, 0, 0, 3377, 3378, 7, 13, 0, 0, 3378, 3379, 7, 9, 0, 0, 3379, 3380, 7, 10, 0, 0, 3380, 3381, 7, 13, 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, 5, 0, 0, 3388, 3389, 7, 6, 0, 0, 3389, 572, 1, 0, 0, 0, 3390, 3391, 7, 24, 0, 0, 3391, 3392, 7, 5, 0, 0, 3392, 3393, 7, 13, 0, 0, 3393, 3394, 7, 16, 0, 0, 3394, 3395, 7, 17, 0, 0, 3395, 3396, 7, 16, 0, 0, 3396, 3397, 7, 17, 0, 0, 3397, 3398, 7, 19, 0, 0, 3398, 3399, 7, 7, 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, 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, 5, 0, 0, 3410, 3411, 7, 9, 0, 0, 3411, 3412, 7, 9, 0, 0, 3412, 3413, 7, 28, 0, 0, 3413, 3414, 7, 19, 0, 0, 3414, 3415, 7, 13, 0, 0, 3415, 3416, 7, 12, 0, 0, 3416, 578, 1, 0, 0, 0, 3417, 3418, 7, 24, 0, 0, 3418, 3419, 7, 6, 0, 0, 3419, 3420, 7, 5, 0, 0, 3420, 3421, 7, 7, 0, 0, 3421, 3422, 7, 9, 0, 0, 3422, 580, 1, 0, 0, 0, 3423, 3424, 7, 24, 0, 0, 3424, 3425, 7, 13, 0, 0, 3425, 3426, 7, 10, 0, 0, 3426, 3427, 7, 14, 0, 0, 3427, 3428, 7, 10, 0, 0, 3428, 3429, 7, 12, 0, 0, 3429, 3430, 7, 17, 0, 0, 3430, 3431, 7, 7, 0, 0, 3431, 3432, 7, 23, 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, 584, 1, 0, 0, 0, 3441, 3442, 7, 24, 0, 0, 3442, 3443, 7, 13, 0, 0, 3443, 3444, 7, 10, 0, 0, 3444, 3445, 7, 24, 0, 0, 3445, 3446, 7, 5, 0, 0, 3446, 3447, 7, 13, 0, 0, 3447, 3448, 7, 10, 0, 0, 3448, 3449, 7, 12, 0, 0, 3449, 586, 1, 0, 0, 0, 3450, 3451, 7, 24, 0, 0, 3451, 3452, 7, 13, 0, 0, 3452, 3453, 7, 10, 0, 0, 3453, 3454, 7, 9, 0, 0, 3454, 3455, 7, 10, 0, 0, 3455, 3456, 7, 13, 0, 0, 3456, 3457, 7, 27, 0, 0, 3457, 3458, 7, 10, 0, 0, 3458, 588, 1, 0, 0, 0, 3459, 3460, 7, 24, 0, 0, 3460, 3461, 7, 13, 0, 0, 3461, 3462, 7, 17, 0, 0, 3462, 3463, 7, 19, 0, 0, 3463, 3464, 7, 13, 0, 0, 3464, 590, 1, 0, 0, 0, 3465, 3466, 7, 24, 0, 0, 3466, 3467, 7, 13, 0, 0, 3467, 3468, 7, 17, 0, 0, 3468, 3469, 7, 27, 0, 0, 3469, 3470, 7, 17, 0, 0, 3470, 3471, 7, 6, 0, 0, 3471, 3472, 7, 10, 0, 0, 3472, 3473, 7, 23, 0, 0, 3473, 3474, 7, 10, 0, 0, 3474, 3475, 7, 9, 0, 0, 3475, 592, 1, 0, 0, 0, 3476, 3477, 7, 24, 0, 0, 3477, 3478, 7, 13, 0, 0, 3478, 3479, 7, 19, 0, 0, 3479, 3480, 7, 14, 0, 0, 3480, 3481, 7, 10, 0, 0, 3481, 3482, 7, 12, 0, 0, 3482, 3483, 7, 22, 0, 0, 3483, 3484, 7, 13, 0, 0, 3484, 3485, 7, 5, 0, 0, 3485, 3486, 7, 6, 0, 0, 3486, 594, 1, 0, 0, 0, 3487, 3488, 7, 24, 0, 0, 3488, 3489, 7, 13, 0, 0, 3489, 3490, 7, 19, 0, 0, 3490, 3491, 7, 14, 0, 0, 3491, 3492, 7, 10, 0, 0, 3492, 3493, 7, 12, 0, 0, 3493, 3494, 7, 22, 0, 0, 3494, 3495, 7, 13, 0, 0, 3495, 3496, 7, 10, 0, 0, 3496, 596, 1, 0, 0, 0, 3497, 3498, 7, 24, 0, 0, 3498, 3499, 7, 13, 0, 0, 3499, 3500, 7, 19, 0, 0, 3500, 3501, 7, 23, 0, 0, 3501, 3502, 7, 13, 0, 0, 3502, 3503, 7, 5, 0, 0, 3503, 3504, 7, 15, 0, 0, 3504, 598, 1, 0, 0, 0, 3505, 3506, 7, 29, 0, 0, 3506, 3507, 7, 22, 0, 0, 3507, 3508, 7, 19, 0, 0, 3508, 3509, 7, 16, 0, 0, 3509, 3510, 7, 10, 0, 0, 3510, 600, 1, 0, 0, 0, 3511, 3512, 7, 13, 0, 0, 3512, 3513, 7, 5, 0, 0, 3513, 3514, 7, 7, 0, 0, 3514, 3515, 7, 23, 0, 0, 3515, 3516, 7, 10, 0, 0, 3516, 602, 1, 0, 0, 0, 3517, 3518, 7, 13, 0, 0, 3518, 3519, 7, 10, 0, 0, 3519, 3520, 7, 5, 0, 0, 3520, 3521, 7, 12, 0, 0, 3521, 604, 1, 0, 0, 0, 3522, 3523, 7, 13, 0, 0, 3523, 3524, 7, 10, 0, 0, 3524, 3525, 7, 5, 0, 0, 3525, 3526, 7, 9, 0, 0, 3526, 3527, 7, 9, 0, 0, 3527, 3528, 7, 17, 0, 0, 3528, 3529, 7, 23, 0, 0, 3529, 3530, 7, 7, 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, 20, 0, 0, 3535, 3536, 7, 10, 0, 0, 3536, 3537, 7, 14, 0, 0, 3537, 3538, 7, 21, 0, 0, 3538, 608, 1, 0, 0, 0, 3539, 3540, 7, 13, 0, 0, 3540, 3541, 7, 10, 0, 0, 3541, 3542, 7, 14, 0, 0, 3542, 3543, 7, 22, 0, 0, 3543, 3544, 7, 13, 0, 0, 3544, 3545, 7, 9, 0, 0, 3545, 3546, 7, 17, 0, 0, 3546, 3547, 7, 27, 0, 0, 3547, 3548, 7, 10, 0, 0, 3548, 610, 1, 0, 0, 0, 3549, 3550, 7, 13, 0, 0, 3550, 3551, 7, 10, 0, 0, 3551, 3552, 7, 25, 0, 0, 3552, 612, 1, 0, 0, 0, 3553, 3554, 7, 13, 0, 0, 3554, 3555, 7, 10, 0, 0, 3555, 3556, 7, 25, 0, 0, 3556, 3557, 7, 13, 0, 0, 3557, 3558, 7, 10, 0, 0, 3558, 3559, 7, 9, 0, 0, 3559, 3560, 7, 20, 0, 0, 3560, 614, 1, 0, 0, 0, 3561, 3562, 7, 13, 0, 0, 3562, 3563, 7, 10, 0, 0, 3563, 3564, 7, 17, 0, 0, 3564, 3565, 7, 7, 0, 0, 3565, 3566, 7, 12, 0, 0, 3566, 3567, 7, 10, 0, 0, 3567, 3568, 7, 26, 0, 0, 3568, 616, 1, 0, 0, 0, 3569, 3570, 7, 13, 0, 0, 3570, 3571, 7, 10, 0, 0, 3571, 3572, 7, 6, 0, 0, 3572, 3573, 7, 5, 0, 0, 3573, 3574, 7, 16, 0, 0, 3574, 3575, 7, 17, 0, 0, 3575, 3576, 7, 27, 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, 6, 0, 0, 3581, 3582, 7, 10, 0, 0, 3582, 3583, 7, 5, 0, 0, 3583, 3584, 7, 9, 0, 0, 3584, 3585, 7, 10, 0, 0, 3585, 620, 1, 0, 0, 0, 3586, 3587, 7, 13, 0, 0, 3587, 3588, 7, 10, 0, 0, 3588, 3589, 7, 7, 0, 0, 3589, 3590, 7, 5, 0, 0, 3590, 3591, 7, 15, 0, 0, 3591, 3592, 7, 10, 0, 0, 3592, 622, 1, 0, 0, 0, 3593, 3594, 7, 13, 0, 0, 3594, 3595, 7, 10, 0, 0, 3595, 3596, 7, 24, 0, 0, 3596, 3597, 7, 10, 0, 0, 3597, 3598, 7, 5, 0, 0, 3598, 3599, 7, 16, 0, 0, 3599, 3600, 7, 5, 0, 0, 3600, 3601, 7, 18, 0, 0, 3601, 3602, 7, 6, 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, 5, 0, 0, 3609, 3610, 7, 14, 0, 0, 3610, 3611, 7, 10, 0, 0, 3611, 626, 1, 0, 0, 0, 3612, 3613, 7, 13, 0, 0, 3613, 3614, 7, 10, 0, 0, 3614, 3615, 7, 24, 0, 0, 3615, 3616, 7, 6, 0, 0, 3616, 3617, 7, 17, 0, 0, 3617, 3618, 7, 14, 0, 0, 3618, 3619, 7, 5, 0, 0, 3619, 628, 1, 0, 0, 0, 3620, 3621, 7, 13, 0, 0, 3621, 3622, 7, 10, 0, 0, 3622, 3623, 7, 9, 0, 0, 3623, 3624, 7, 10, 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, 5, 0, 0, 3631, 3632, 7, 13, 0, 0, 3632, 3633, 7, 16, 0, 0, 3633, 632, 1, 0, 0, 0, 3634, 3635, 7, 13, 0, 0, 3635, 3636, 7, 10, 0, 0, 3636, 3637, 7, 9, 0, 0, 3637, 3638, 7, 16, 0, 0, 3638, 3639, 7, 13, 0, 0, 3639, 3640, 7, 17, 0, 0, 3640, 3641, 7, 14, 0, 0, 3641, 3642, 7, 16, 0, 0, 3642, 634, 1, 0, 0, 0, 3643, 3644, 7, 13, 0, 0, 3644, 3645, 7, 10, 0, 0, 3645, 3646, 7, 16, 0, 0, 3646, 3647, 7, 22, 0, 0, 3647, 3648, 7, 13, 0, 0, 3648, 3649, 7, 7, 0, 0, 3649, 3650, 7, 9, 0, 0, 3650, 636, 1, 0, 0, 0, 3651, 3652, 7, 13, 0, 0, 3652, 3653, 7, 10, 0, 0, 3653, 3654, 7, 27, 0, 0, 3654, 3655, 7, 19, 0, 0, 3655, 3656, 7, 21, 0, 0, 3656, 3657, 7, 10, 0, 0, 3657, 638, 1, 0, 0, 0, 3658, 3659, 7, 13, 0, 0, 3659, 3660, 7, 19, 0, 0, 3660, 3661, 7, 6, 0, 0, 3661, 3662, 7, 10, 0, 0, 3662, 640, 1, 0, 0, 0, 3663, 3664, 7, 13, 0, 0, 3664, 3665, 7, 19, 0, 0, 3665, 3666, 7, 6, 0, 0, 3666, 3667, 7, 6, 0, 0, 3667, 3668, 7, 18, 0, 0, 3668, 3669, 7, 5, 0, 0, 3669, 3670, 7, 14, 0, 0, 3670, 3671, 7, 21, 0, 0, 3671, 642, 1, 0, 0, 0, 3672, 3673, 7, 13, 0, 0, 3673, 3674, 7, 19, 0, 0, 3674, 3675, 7, 28, 0, 0, 3675, 3676, 7, 9, 0, 0, 3676, 644, 1, 0, 0, 0, 3677, 3678, 7, 13, 0, 0, 3678, 3679, 7, 22, 0, 0, 3679, 3680, 7, 6, 0, 0, 3680, 3681, 7, 10, 0, 0, 3681, 646, 1, 0, 0, 0, 3682, 3683, 7, 9, 0, 0, 3683, 3684, 7, 5, 0, 0, 3684, 3685, 7, 27, 0, 0, 3685, 3686, 7, 10, 0, 0, 3686, 3687, 7, 24, 0, 0, 3687, 3688, 7, 19, 0, 0, 3688, 3689, 7, 17, 0, 0, 3689, 3690, 7, 7, 0, 0, 3690, 3691, 7, 16, 0, 0, 3691, 648, 1, 0, 0, 0, 3692, 3693, 7, 9, 0, 0, 3693, 3694, 7, 14, 0, 0, 3694, 3695, 7, 20, 0, 0, 3695, 3696, 7, 10, 0, 0, 3696, 3697, 7, 15, 0, 0, 3697, 3698, 7, 5, 0, 0, 3698, 650, 1, 0, 0, 0, 3699, 3700, 7, 9, 0, 0, 3700, 3701, 7, 14, 0, 0, 3701, 3702, 7, 13, 0, 0, 3702, 3703, 7, 19, 0, 0, 3703, 3704, 7, 6, 0, 0, 3704, 3705, 7, 6, 0, 0, 3705, 652, 1, 0, 0, 0, 3706, 3707, 7, 9, 0, 0, 3707, 3708, 7, 10, 0, 0, 3708, 3709, 7, 5, 0, 0, 3709, 3710, 7, 13, 0, 0, 3710, 3711, 7, 14, 0, 0, 3711, 3712, 7, 20, 0, 0, 3712, 654, 1, 0, 0, 0, 3713, 3714, 7, 9, 0, 0, 3714, 3715, 7, 10, 0, 0, 3715, 3716, 7, 14, 0, 0, 3716, 3717, 7, 19, 0, 0, 3717, 3718, 7, 7, 0, 0, 3718, 3719, 7, 12, 0, 0, 3719, 656, 1, 0, 0, 0, 3720, 3721, 7, 9, 0, 0, 3721, 3722, 7, 10, 0, 0, 3722, 3723, 7, 14, 0, 0, 3723, 3724, 7, 22, 0, 0, 3724, 3725, 7, 13, 0, 0, 3725, 3726, 7, 17, 0, 0, 3726, 3727, 7, 16, 0, 0, 3727, 3728, 7, 8, 0, 0, 3728, 658, 1, 0, 0, 0, 3729, 3730, 7, 9, 0, 0, 3730, 3731, 7, 10, 0, 0, 3731, 3732, 7, 29, 0, 0, 3732, 3733, 7, 22, 0, 0, 3733, 3734, 7, 10, 0, 0, 3734, 3735, 7, 7, 0, 0, 3735, 3736, 7, 14, 0, 0, 3736, 3737, 7, 10, 0, 0, 3737, 660, 1, 0, 0, 0, 3738, 3739, 7, 9, 0, 0, 3739, 3740, 7, 10, 0, 0, 3740, 3741, 7, 29, 0, 0, 3741, 3742, 7, 22, 0, 0, 3742, 3743, 7, 10, 0, 0, 3743, 3744, 7, 7, 0, 0, 3744, 3745, 7, 14, 0, 0, 3745, 3746, 7, 10, 0, 0, 3746, 3747, 7, 9, 0, 0, 3747, 662, 1, 0, 0, 0, 3748, 3749, 7, 9, 0, 0, 3749, 3750, 7, 10, 0, 0, 3750, 3751, 7, 13, 0, 0, 3751, 3752, 7, 17, 0, 0, 3752, 3753, 7, 5, 0, 0, 3753, 3754, 7, 6, 0, 0, 3754, 3755, 7, 17, 0, 0, 3755, 3756, 7, 11, 0, 0, 3756, 3757, 7, 5, 0, 0, 3757, 3758, 7, 18, 0, 0, 3758, 3759, 7, 6, 0, 0, 3759, 3760, 7, 10, 0, 0, 3760, 664, 1, 0, 0, 0, 3761, 3762, 7, 9, 0, 0, 3762, 3763, 7, 10, 0, 0, 3763, 3764, 7, 13, 0, 0, 3764, 3765, 7, 27, 0, 0, 3765, 3766, 7, 10, 0, 0, 3766, 3767, 7, 13, 0, 0, 3767, 666, 1, 0, 0, 0, 3768, 3769, 7, 9, 0, 0, 3769, 3770, 7, 10, 0, 0, 3770, 3771, 7, 9, 0, 0, 3771, 3772, 7, 9, 0, 0, 3772, 3773, 7, 17, 0, 0, 3773, 3774, 7, 19, 0, 0, 3774, 3775, 7, 7, 0, 0, 3775, 668, 1, 0, 0, 0, 3776, 3777, 7, 9, 0, 0, 3777, 3778, 7, 10, 0, 0, 3778, 3779, 7, 16, 0, 0, 3779, 670, 1, 0, 0, 0, 3780, 3781, 7, 9, 0, 0, 3781, 3782, 7, 20, 0, 0, 3782, 3783, 7, 5, 0, 0, 3783, 3784, 7, 13, 0, 0, 3784, 3785, 7, 10, 0, 0, 3785, 672, 1, 0, 0, 0, 3786, 3787, 7, 9, 0, 0, 3787, 3788, 7, 20, 0, 0, 3788, 3789, 7, 19, 0, 0, 3789, 3790, 7, 28, 0, 0, 3790, 674, 1, 0, 0, 0, 3791, 3792, 7, 9, 0, 0, 3792, 3793, 7, 17, 0, 0, 3793, 3794, 7, 15, 0, 0, 3794, 3795, 7, 24, 0, 0, 3795, 3796, 7, 6, 0, 0, 3796, 3797, 7, 10, 0, 0, 3797, 676, 1, 0, 0, 0, 3798, 3799, 7, 9, 0, 0, 3799, 3800, 7, 7, 0, 0, 3800, 3801, 7, 5, 0, 0, 3801, 3802, 7, 24, 0, 0, 3802, 3803, 7, 9, 0, 0, 3803, 3804, 7, 20, 0, 0, 3804, 3805, 7, 19, 0, 0, 3805, 3806, 7, 16, 0, 0, 3806, 678, 1, 0, 0, 0, 3807, 3808, 7, 9, 0, 0, 3808, 3809, 7, 16, 0, 0, 3809, 3810, 7, 5, 0, 0, 3810, 3811, 7, 18, 0, 0, 3811, 3812, 7, 6, 0, 0, 3812, 3813, 7, 10, 0, 0, 3813, 680, 1, 0, 0, 0, 3814, 3815, 7, 9, 0, 0, 3815, 3816, 7, 16, 0, 0, 3816, 3817, 7, 5, 0, 0, 3817, 3818, 7, 7, 0, 0, 3818, 3819, 7, 12, 0, 0, 3819, 3820, 7, 5, 0, 0, 3820, 3821, 7, 6, 0, 0, 3821, 3822, 7, 19, 0, 0, 3822, 3823, 7, 7, 0, 0, 3823, 3824, 7, 10, 0, 0, 3824, 682, 1, 0, 0, 0, 3825, 3826, 7, 9, 0, 0, 3826, 3827, 7, 16, 0, 0, 3827, 3828, 7, 5, 0, 0, 3828, 3829, 7, 13, 0, 0, 3829, 3830, 7, 16, 0, 0, 3830, 684, 1, 0, 0, 0, 3831, 3832, 7, 9, 0, 0, 3832, 3833, 7, 16, 0, 0, 3833, 3834, 7, 5, 0, 0, 3834, 3835, 7, 16, 0, 0, 3835, 3836, 7, 10, 0, 0, 3836, 3837, 7, 15, 0, 0, 3837, 3838, 7, 10, 0, 0, 3838, 3839, 7, 7, 0, 0, 3839, 3840, 7, 16, 0, 0, 3840, 686, 1, 0, 0, 0, 3841, 3842, 7, 9, 0, 0, 3842, 3843, 7, 16, 0, 0, 3843, 3844, 7, 5, 0, 0, 3844, 3845, 7, 16, 0, 0, 3845, 3846, 7, 17, 0, 0, 3846, 3847, 7, 9, 0, 0, 3847, 3848, 7, 16, 0, 0, 3848, 3849, 7, 17, 0, 0, 3849, 3850, 7, 14, 0, 0, 3850, 3851, 7, 9, 0, 0, 3851, 688, 1, 0, 0, 0, 3852, 3853, 7, 9, 0, 0, 3853, 3854, 7, 16, 0, 0, 3854, 3855, 7, 12, 0, 0, 3855, 3856, 7, 17, 0, 0, 3856, 3857, 7, 7, 0, 0, 3857, 690, 1, 0, 0, 0, 3858, 3859, 7, 9, 0, 0, 3859, 3860, 7, 16, 0, 0, 3860, 3861, 7, 12, 0, 0, 3861, 3862, 7, 19, 0, 0, 3862, 3863, 7, 22, 0, 0, 3863, 3864, 7, 16, 0, 0, 3864, 692, 1, 0, 0, 0, 3865, 3866, 7, 9, 0, 0, 3866, 3867, 7, 16, 0, 0, 3867, 3868, 7, 19, 0, 0, 3868, 3869, 7, 13, 0, 0, 3869, 3870, 7, 5, 0, 0, 3870, 3871, 7, 23, 0, 0, 3871, 3872, 7, 10, 0, 0, 3872, 694, 1, 0, 0, 0, 3873, 3874, 7, 9, 0, 0, 3874, 3875, 7, 16, 0, 0, 3875, 3876, 7, 13, 0, 0, 3876, 3877, 7, 17, 0, 0, 3877, 3878, 7, 14, 0, 0, 3878, 3879, 7, 16, 0, 0, 3879, 696, 1, 0, 0, 0, 3880, 3881, 7, 9, 0, 0, 3881, 3882, 7, 16, 0, 0, 3882, 3883, 7, 13, 0, 0, 3883, 3884, 7, 17, 0, 0, 3884, 3885, 7, 24, 0, 0, 3885, 698, 1, 0, 0, 0, 3886, 3887, 7, 9, 0, 0, 3887, 3888, 7, 8, 0, 0, 3888, 3889, 7, 9, 0, 0, 3889, 3890, 7, 17, 0, 0, 3890, 3891, 7, 12, 0, 0, 3891, 700, 1, 0, 0, 0, 3892, 3893, 7, 9, 0, 0, 3893, 3894, 7, 8, 0, 0, 3894, 3895, 7, 9, 0, 0, 3895, 3896, 7, 16, 0, 0, 3896, 3897, 7, 10, 0, 0, 3897, 3898, 7, 15, 0, 0, 3898, 702, 1, 0, 0, 0, 3899, 3900, 7, 16, 0, 0, 3900, 3901, 7, 5, 0, 0, 3901, 3902, 7, 18, 0, 0, 3902, 3903, 7, 6, 0, 0, 3903, 3904, 7, 10, 0, 0, 3904, 3905, 7, 9, 0, 0, 3905, 704, 1, 0, 0, 0, 3906, 3907, 7, 16, 0, 0, 3907, 3908, 7, 5, 0, 0, 3908, 3909, 7, 18, 0, 0, 3909, 3910, 7, 6, 0, 0, 3910, 3911, 7, 10, 0, 0, 3911, 3912, 7, 9, 0, 0, 3912, 3913, 7, 24, 0, 0, 3913, 3914, 7, 5, 0, 0, 3914, 3915, 7, 14, 0, 0, 3915, 3916, 7, 10, 0, 0, 3916, 706, 1, 0, 0, 0, 3917, 3918, 7, 16, 0, 0, 3918, 3919, 7, 10, 0, 0, 3919, 3920, 7, 15, 0, 0, 3920, 3921, 7, 24, 0, 0, 3921, 708, 1, 0, 0, 0, 3922, 3923, 7, 16, 0, 0, 3923, 3924, 7, 10, 0, 0, 3924, 3925, 7, 15, 0, 0, 3925, 3926, 7, 24, 0, 0, 3926, 3927, 7, 6, 0, 0, 3927, 3928, 7, 5, 0, 0, 3928, 3929, 7, 16, 0, 0, 3929, 3930, 7, 10, 0, 0, 3930, 710, 1, 0, 0, 0, 3931, 3932, 7, 16, 0, 0, 3932, 3933, 7, 10, 0, 0, 3933, 3934, 7, 15, 0, 0, 3934, 3935, 7, 24, 0, 0, 3935, 3936, 7, 19, 0, 0, 3936, 3937, 7, 13, 0, 0, 3937, 3938, 7, 5, 0, 0, 3938, 3939, 7, 13, 0, 0, 3939, 3940, 7, 8, 0, 0, 3940, 712, 1, 0, 0, 0, 3941, 3942, 7, 16, 0, 0, 3942, 3943, 7, 10, 0, 0, 3943, 3944, 7, 26, 0, 0, 3944, 3945, 7, 16, 0, 0, 3945, 714, 1, 0, 0, 0, 3946, 3947, 7, 16, 0, 0, 3947, 3948, 7, 13, 0, 0, 3948, 3949, 7, 5, 0, 0, 3949, 3950, 7, 7, 0, 0, 3950, 3951, 7, 9, 0, 0, 3951, 3952, 7, 5, 0, 0, 3952, 3953, 7, 14, 0, 0, 3953, 3954, 7, 16, 0, 0, 3954, 3955, 7, 17, 0, 0, 3955, 3956, 7, 19, 0, 0, 3956, 3957, 7, 7, 0, 0, 3957, 716, 1, 0, 0, 0, 3958, 3959, 7, 16, 0, 0, 3959, 3960, 7, 13, 0, 0, 3960, 3961, 7, 17, 0, 0, 3961, 3962, 7, 23, 0, 0, 3962, 3963, 7, 23, 0, 0, 3963, 3964, 7, 10, 0, 0, 3964, 3965, 7, 13, 0, 0, 3965, 718, 1, 0, 0, 0, 3966, 3967, 7, 16, 0, 0, 3967, 3968, 7, 13, 0, 0, 3968, 3969, 7, 22, 0, 0, 3969, 3970, 7, 7, 0, 0, 3970, 3971, 7, 14, 0, 0, 3971, 3972, 7, 5, 0, 0, 3972, 3973, 7, 16, 0, 0, 3973, 3974, 7, 10, 0, 0, 3974, 720, 1, 0, 0, 0, 3975, 3976, 7, 16, 0, 0, 3976, 3977, 7, 13, 0, 0, 3977, 3978, 7, 22, 0, 0, 3978, 3979, 7, 9, 0, 0, 3979, 3980, 7, 16, 0, 0, 3980, 3981, 7, 10, 0, 0, 3981, 3982, 7, 12, 0, 0, 3982, 722, 1, 0, 0, 0, 3983, 3984, 7, 16, 0, 0, 3984, 3985, 7, 8, 0, 0, 3985, 3986, 7, 24, 0, 0, 3986, 3987, 7, 10, 0, 0, 3987, 724, 1, 0, 0, 0, 3988, 3989, 7, 16, 0, 0, 3989, 3990, 7, 8, 0, 0, 3990, 3991, 7, 24, 0, 0, 3991, 3992, 7, 10, 0, 0, 3992, 3993, 7, 9, 0, 0, 3993, 726, 1, 0, 0, 0, 3994, 3995, 7, 22, 0, 0, 3995, 3996, 7, 7, 0, 0, 3996, 3997, 7, 18, 0, 0, 3997, 3998, 7, 19, 0, 0, 3998, 3999, 7, 22, 0, 0, 3999, 4000, 7, 7, 0, 0, 4000, 4001, 7, 12, 0, 0, 4001, 4002, 7, 10, 0, 0, 4002, 4003, 7, 12, 0, 0, 4003, 728, 1, 0, 0, 0, 4004, 4005, 7, 22, 0, 0, 4005, 4006, 7, 7, 0, 0, 4006, 4007, 7, 14, 0, 0, 4007, 4008, 7, 19, 0, 0, 4008, 4009, 7, 15, 0, 0, 4009, 4010, 7, 15, 0, 0, 4010, 4011, 7, 17, 0, 0, 4011, 4012, 7, 16, 0, 0, 4012, 4013, 7, 16, 0, 0, 4013, 4014, 7, 10, 0, 0, 4014, 4015, 7, 12, 0, 0, 4015, 730, 1, 0, 0, 0, 4016, 4017, 7, 22, 0, 0, 4017, 4018, 7, 7, 0, 0, 4018, 4019, 7, 10, 0, 0, 4019, 4020, 7, 7, 0, 0, 4020, 4021, 7, 14, 0, 0, 4021, 4022, 7, 13, 0, 0, 4022, 4023, 7, 8, 0, 0, 4023, 4024, 7, 24, 0, 0, 4024, 4025, 7, 16, 0, 0, 4025, 4026, 7, 10, 0, 0, 4026, 4027, 7, 12, 0, 0, 4027, 732, 1, 0, 0, 0, 4028, 4029, 7, 22, 0, 0, 4029, 4030, 7, 7, 0, 0, 4030, 4031, 7, 21, 0, 0, 4031, 4032, 7, 7, 0, 0, 4032, 4033, 7, 19, 0, 0, 4033, 4034, 7, 28, 0, 0, 4034, 4035, 7, 7, 0, 0, 4035, 734, 1, 0, 0, 0, 4036, 4037, 7, 22, 0, 0, 4037, 4038, 7, 7, 0, 0, 4038, 4039, 7, 6, 0, 0, 4039, 4040, 7, 17, 0, 0, 4040, 4041, 7, 9, 0, 0, 4041, 4042, 7, 16, 0, 0, 4042, 4043, 7, 10, 0, 0, 4043, 4044, 7, 7, 0, 0, 4044, 736, 1, 0, 0, 0, 4045, 4046, 7, 22, 0, 0, 4046, 4047, 7, 7, 0, 0, 4047, 4048, 7, 6, 0, 0, 4048, 4049, 7, 19, 0, 0, 4049, 4050, 7, 23, 0, 0, 4050, 4051, 7, 23, 0, 0, 4051, 4052, 7, 10, 0, 0, 4052, 4053, 7, 12, 0, 0, 4053, 738, 1, 0, 0, 0, 4054, 4055, 7, 22, 0, 0, 4055, 4056, 7, 7, 0, 0, 4056, 4057, 7, 16, 0, 0, 4057, 4058, 7, 17, 0, 0, 4058, 4059, 7, 6, 0, 0, 4059, 740, 1, 0, 0, 0, 4060, 4061, 7, 22, 0, 0, 4061, 4062, 7, 24, 0, 0, 4062, 4063, 7, 12, 0, 0, 4063, 4064, 7, 5, 0, 0, 4064, 4065, 7, 16, 0, 0, 4065, 4066, 7, 10, 0, 0, 4066, 742, 1, 0, 0, 0, 4067, 4068, 7, 27, 0, 0, 4068, 4069, 7, 5, 0, 0, 4069, 4070, 7, 14, 0, 0, 4070, 4071, 7, 22, 0, 0, 4071, 4072, 7, 22, 0, 0, 4072, 4073, 7, 15, 0, 0, 4073, 744, 1, 0, 0, 0, 4074, 4075, 7, 27, 0, 0, 4075, 4076, 7, 5, 0, 0, 4076, 4077, 7, 6, 0, 0, 4077, 4078, 7, 17, 0, 0, 4078, 4079, 7, 12, 0, 0, 4079, 746, 1, 0, 0, 0, 4080, 4081, 7, 27, 0, 0, 4081, 4082, 7, 5, 0, 0, 4082, 4083, 7, 6, 0, 0, 4083, 4084, 7, 17, 0, 0, 4084, 4085, 7, 12, 0, 0, 4085, 4086, 7, 5, 0, 0, 4086, 4087, 7, 16, 0, 0, 4087, 4088, 7, 10, 0, 0, 4088, 748, 1, 0, 0, 0, 4089, 4090, 7, 27, 0, 0, 4090, 4091, 7, 5, 0, 0, 4091, 4092, 7, 6, 0, 0, 4092, 4093, 7, 17, 0, 0, 4093, 4094, 7, 12, 0, 0, 4094, 4095, 7, 5, 0, 0, 4095, 4096, 7, 16, 0, 0, 4096, 4097, 7, 19, 0, 0, 4097, 4098, 7, 13, 0, 0, 4098, 750, 1, 0, 0, 0, 4099, 4100, 7, 27, 0, 0, 4100, 4101, 7, 5, 0, 0, 4101, 4102, 7, 13, 0, 0, 4102, 4103, 7, 8, 0, 0, 4103, 4104, 7, 17, 0, 0, 4104, 4105, 7, 7, 0, 0, 4105, 4106, 7, 23, 0, 0, 4106, 752, 1, 0, 0, 0, 4107, 4108, 7, 27, 0, 0, 4108, 4109, 7, 10, 0, 0, 4109, 4110, 7, 13, 0, 0, 4110, 4111, 7, 9, 0, 0, 4111, 4112, 7, 17, 0, 0, 4112, 4113, 7, 19, 0, 0, 4113, 4114, 7, 7, 0, 0, 4114, 754, 1, 0, 0, 0, 4115, 4116, 7, 27, 0, 0, 4116, 4117, 7, 17, 0, 0, 4117, 4118, 7, 10, 0, 0, 4118, 4119, 7, 28, 0, 0, 4119, 756, 1, 0, 0, 0, 4120, 4121, 7, 27, 0, 0, 4121, 4122, 7, 19, 0, 0, 4122, 4123, 7, 6, 0, 0, 4123, 4124, 7, 5, 0, 0, 4124, 4125, 7, 16, 0, 0, 4125, 4126, 7, 17, 0, 0, 4126, 4127, 7, 6, 0, 0, 4127, 4128, 7, 10, 0, 0, 4128, 758, 1, 0, 0, 0, 4129, 4130, 7, 28, 0, 0, 4130, 4131, 7, 20, 0, 0, 4131, 4132, 7, 17, 0, 0, 4132, 4133, 7, 16, 0, 0, 4133, 4134, 7, 10, 0, 0, 4134, 4135, 7, 9, 0, 0, 4135, 4136, 7, 24, 0, 0, 4136, 4137, 7, 5, 0, 0, 4137, 4138, 7, 14, 0, 0, 4138, 4139, 7, 10, 0, 0, 4139, 760, 1, 0, 0, 0, 4140, 4141, 7, 28, 0, 0, 4141, 4142, 7, 17, 0, 0, 4142, 4143, 7, 16, 0, 0, 4143, 4144, 7, 20, 0, 0, 4144, 4145, 7, 19, 0, 0, 4145, 4146, 7, 22, 0, 0, 4146, 4147, 7, 16, 0, 0, 4147, 762, 1, 0, 0, 0, 4148, 4149, 7, 28, 0, 0, 4149, 4150, 7, 19, 0, 0, 4150, 4151, 7, 13, 0, 0, 4151, 4152, 7, 21, 0, 0, 4152, 764, 1, 0, 0, 0, 4153, 4154, 7, 28, 0, 0, 4154, 4155, 7, 13, 0, 0, 4155, 4156, 7, 5, 0, 0, 4156, 4157, 7, 24, 0, 0, 4157, 4158, 7, 24, 0, 0, 4158, 4159, 7, 10, 0, 0, 4159, 4160, 7, 13, 0, 0, 4160, 766, 1, 0, 0, 0, 4161, 4162, 7, 28, 0, 0, 4162, 4163, 7, 13, 0, 0, 4163, 4164, 7, 17, 0, 0, 4164, 4165, 7, 16, 0, 0, 4165, 4166, 7, 10, 0, 0, 4166, 768, 1, 0, 0, 0, 4167, 4168, 7, 26, 0, 0, 4168, 4169, 7, 15, 0, 0, 4169, 4170, 7, 6, 0, 0, 4170, 770, 1, 0, 0, 0, 4171, 4172, 7, 8, 0, 0, 4172, 4173, 7, 10, 0, 0, 4173, 4174, 7, 5, 0, 0, 4174, 4175, 7, 13, 0, 0, 4175, 772, 1, 0, 0, 0, 4176, 4177, 7, 8, 0, 0, 4177, 4178, 7, 10, 0, 0, 4178, 4179, 7, 9, 0, 0, 4179, 774, 1, 0, 0, 0, 4180, 4181, 7, 11, 0, 0, 4181, 4182, 7, 19, 0, 0, 4182, 4183, 7, 7, 0, 0, 4183, 4184, 7, 10, 0, 0, 4184, 776, 1, 0, 0, 0, 4185, 4186, 7, 18, 0, 0, 4186, 4187, 7, 10, 0, 0, 4187, 4188, 7, 16, 0, 0, 4188, 4189, 7, 28, 0, 0, 4189, 4190, 7, 10, 0, 0, 4190, 4191, 7, 10, 0, 0, 4191, 4192, 7, 7, 0, 0, 4192, 778, 1, 0, 0, 0, 4193, 4194, 7, 18, 0, 0, 4194, 4195, 7, 17, 0, 0, 4195, 4196, 7, 23, 0, 0, 4196, 4197, 7, 17, 0, 0, 4197, 4198, 7, 7, 0, 0, 4198, 4199, 7, 16, 0, 0, 4199, 780, 1, 0, 0, 0, 4200, 4201, 7, 18, 0, 0, 4201, 4202, 7, 17, 0, 0, 4202, 4203, 7, 16, 0, 0, 4203, 782, 1, 0, 0, 0, 4204, 4205, 7, 18, 0, 0, 4205, 4206, 7, 19, 0, 0, 4206, 4207, 7, 19, 0, 0, 4207, 4208, 7, 6, 0, 0, 4208, 4209, 7, 10, 0, 0, 4209, 4210, 7, 5, 0, 0, 4210, 4211, 7, 7, 0, 0, 4211, 784, 1, 0, 0, 0, 4212, 4213, 7, 14, 0, 0, 4213, 4214, 7, 20, 0, 0, 4214, 4215, 7, 5, 0, 0, 4215, 4216, 7, 13, 0, 0, 4216, 786, 1, 0, 0, 0, 4217, 4218, 7, 14, 0, 0, 4218, 4219, 7, 20, 0, 0, 4219, 4220, 7, 5, 0, 0, 4220, 4221, 7, 13, 0, 0, 4221, 4222, 7, 5, 0, 0, 4222, 4223, 7, 14, 0, 0, 4223, 4224, 7, 16, 0, 0, 4224, 4225, 7, 10, 0, 0, 4225, 4226, 7, 13, 0, 0, 4226, 788, 1, 0, 0, 0, 4227, 4228, 7, 14, 0, 0, 4228, 4229, 7, 19, 0, 0, 4229, 4230, 7, 5, 0, 0, 4230, 4231, 7, 6, 0, 0, 4231, 4232, 7, 10, 0, 0, 4232, 4233, 7, 9, 0, 0, 4233, 4234, 7, 14, 0, 0, 4234, 4235, 7, 10, 0, 0, 4235, 790, 1, 0, 0, 0, 4236, 4237, 7, 12, 0, 0, 4237, 4238, 7, 10, 0, 0, 4238, 4239, 7, 14, 0, 0, 4239, 792, 1, 0, 0, 0, 4240, 4241, 7, 12, 0, 0, 4241, 4242, 7, 10, 0, 0, 4242, 4243, 7, 14, 0, 0, 4243, 4244, 7, 17, 0, 0, 4244, 4245, 7, 15, 0, 0, 4245, 4246, 7, 5, 0, 0, 4246, 4247, 7, 6, 0, 0, 4247, 794, 1, 0, 0, 0, 4248, 4249, 7, 10, 0, 0, 4249, 4250, 7, 26, 0, 0, 4250, 4251, 7, 17, 0, 0, 4251, 4252, 7, 9, 0, 0, 4252, 4253, 7, 16, 0, 0, 4253, 4254, 7, 9, 0, 0, 4254, 796, 1, 0, 0, 0, 4255, 4256, 7, 10, 0, 0, 4256, 4257, 7, 26, 0, 0, 4257, 4258, 7, 16, 0, 0, 4258, 4259, 7, 13, 0, 0, 4259, 4260, 7, 5, 0, 0, 4260, 4261, 7, 14, 0, 0, 4261, 4262, 7, 16, 0, 0, 4262, 798, 1, 0, 0, 0, 4263, 4264, 7, 25, 0, 0, 4264, 4265, 7, 6, 0, 0, 4265, 4266, 7, 19, 0, 0, 4266, 4267, 7, 5, 0, 0, 4267, 4268, 7, 16, 0, 0, 4268, 800, 1, 0, 0, 0, 4269, 4270, 7, 23, 0, 0, 4270, 4271, 7, 13, 0, 0, 4271, 4272, 7, 10, 0, 0, 4272, 4273, 7, 5, 0, 0, 4273, 4274, 7, 16, 0, 0, 4274, 4275, 7, 10, 0, 0, 4275, 4276, 7, 9, 0, 0, 4276, 4277, 7, 16, 0, 0, 4277, 802, 1, 0, 0, 0, 4278, 4279, 7, 17, 0, 0, 4279, 4280, 7, 7, 0, 0, 4280, 4281, 7, 19, 0, 0, 4281, 4282, 7, 22, 0, 0, 4282, 4283, 7, 16, 0, 0, 4283, 804, 1, 0, 0, 0, 4284, 4285, 7, 17, 0, 0, 4285, 4286, 7, 7, 0, 0, 4286, 4287, 7, 16, 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, 23, 0, 0, 4293, 4294, 7, 10, 0, 0, 4294, 4295, 7, 13, 0, 0, 4295, 808, 1, 0, 0, 0, 4296, 4297, 7, 17, 0, 0, 4297, 4298, 7, 7, 0, 0, 4298, 4299, 7, 16, 0, 0, 4299, 4300, 7, 10, 0, 0, 4300, 4301, 7, 13, 0, 0, 4301, 4302, 7, 27, 0, 0, 4302, 4303, 7, 5, 0, 0, 4303, 4304, 7, 6, 0, 0, 4304, 810, 1, 0, 0, 0, 4305, 4306, 7, 6, 0, 0, 4306, 4307, 7, 10, 0, 0, 4307, 4308, 7, 5, 0, 0, 4308, 4309, 7, 9, 0, 0, 4309, 4310, 7, 16, 0, 0, 4310, 812, 1, 0, 0, 0, 4311, 4312, 7, 7, 0, 0, 4312, 4313, 7, 5, 0, 0, 4313, 4314, 7, 16, 0, 0, 4314, 4315, 7, 17, 0, 0, 4315, 4316, 7, 19, 0, 0, 4316, 4317, 7, 7, 0, 0, 4317, 4318, 7, 5, 0, 0, 4318, 4319, 7, 6, 0, 0, 4319, 814, 1, 0, 0, 0, 4320, 4321, 7, 7, 0, 0, 4321, 4322, 7, 14, 0, 0, 4322, 4323, 7, 20, 0, 0, 4323, 4324, 7, 5, 0, 0, 4324, 4325, 7, 13, 0, 0, 4325, 816, 1, 0, 0, 0, 4326, 4327, 7, 7, 0, 0, 4327, 4328, 7, 19, 0, 0, 4328, 4329, 7, 7, 0, 0, 4329, 4330, 7, 10, 0, 0, 4330, 818, 1, 0, 0, 0, 4331, 4332, 7, 7, 0, 0, 4332, 4333, 7, 22, 0, 0, 4333, 4334, 7, 6, 0, 0, 4334, 4335, 7, 6, 0, 0, 4335, 4336, 7, 17, 0, 0, 4336, 4337, 7, 25, 0, 0, 4337, 820, 1, 0, 0, 0, 4338, 4339, 7, 7, 0, 0, 4339, 4340, 7, 22, 0, 0, 4340, 4341, 7, 15, 0, 0, 4341, 4342, 7, 10, 0, 0, 4342, 4343, 7, 13, 0, 0, 4343, 4344, 7, 17, 0, 0, 4344, 4345, 7, 14, 0, 0, 4345, 822, 1, 0, 0, 0, 4346, 4347, 7, 19, 0, 0, 4347, 4348, 7, 27, 0, 0, 4348, 4349, 7, 10, 0, 0, 4349, 4350, 7, 13, 0, 0, 4350, 4351, 7, 6, 0, 0, 4351, 4352, 7, 5, 0, 0, 4352, 4353, 7, 8, 0, 0, 4353, 824, 1, 0, 0, 0, 4354, 4355, 7, 24, 0, 0, 4355, 4356, 7, 19, 0, 0, 4356, 4357, 7, 9, 0, 0, 4357, 4358, 7, 17, 0, 0, 4358, 4359, 7, 16, 0, 0, 4359, 4360, 7, 17, 0, 0, 4360, 4361, 7, 19, 0, 0, 4361, 4362, 7, 7, 0, 0, 4362, 826, 1, 0, 0, 0, 4363, 4364, 7, 24, 0, 0, 4364, 4365, 7, 13, 0, 0, 4365, 4366, 7, 10, 0, 0, 4366, 4367, 7, 14, 0, 0, 4367, 4368, 7, 17, 0, 0, 4368, 4369, 7, 9, 0, 0, 4369, 4370, 7, 17, 0, 0, 4370, 4371, 7, 19, 0, 0, 4371, 4372, 7, 7, 0, 0, 4372, 828, 1, 0, 0, 0, 4373, 4374, 7, 13, 0, 0, 4374, 4375, 7, 10, 0, 0, 4375, 4376, 7, 5, 0, 0, 4376, 4377, 7, 6, 0, 0, 4377, 830, 1, 0, 0, 0, 4378, 4379, 7, 13, 0, 0, 4379, 4380, 7, 19, 0, 0, 4380, 4381, 7, 28, 0, 0, 4381, 832, 1, 0, 0, 0, 4382, 4383, 7, 9, 0, 0, 4383, 4384, 7, 10, 0, 0, 4384, 4385, 7, 16, 0, 0, 4385, 4386, 7, 19, 0, 0, 4386, 4387, 7, 25, 0, 0, 4387, 834, 1, 0, 0, 0, 4388, 4389, 7, 9, 0, 0, 4389, 4390, 7, 15, 0, 0, 4390, 4391, 7, 5, 0, 0, 4391, 4392, 7, 6, 0, 0, 4392, 4393, 7, 6, 0, 0, 4393, 4394, 7, 17, 0, 0, 4394, 4395, 7, 7, 0, 0, 4395, 4396, 7, 16, 0, 0, 4396, 836, 1, 0, 0, 0, 4397, 4398, 7, 9, 0, 0, 4398, 4399, 7, 22, 0, 0, 4399, 4400, 7, 18, 0, 0, 4400, 4401, 7, 9, 0, 0, 4401, 4402, 7, 16, 0, 0, 4402, 4403, 7, 13, 0, 0, 4403, 4404, 7, 17, 0, 0, 4404, 4405, 7, 7, 0, 0, 4405, 4406, 7, 23, 0, 0, 4406, 838, 1, 0, 0, 0, 4407, 4408, 7, 16, 0, 0, 4408, 4409, 7, 17, 0, 0, 4409, 4410, 7, 15, 0, 0, 4410, 4411, 7, 10, 0, 0, 4411, 840, 1, 0, 0, 0, 4412, 4413, 7, 16, 0, 0, 4413, 4414, 7, 17, 0, 0, 4414, 4415, 7, 15, 0, 0, 4415, 4416, 7, 10, 0, 0, 4416, 4417, 7, 9, 0, 0, 4417, 4418, 7, 16, 0, 0, 4418, 4419, 7, 5, 0, 0, 4419, 4420, 7, 15, 0, 0, 4420, 4421, 7, 24, 0, 0, 4421, 842, 1, 0, 0, 0, 4422, 4423, 7, 16, 0, 0, 4423, 4424, 7, 13, 0, 0, 4424, 4425, 7, 10, 0, 0, 4425, 4426, 7, 5, 0, 0, 4426, 4427, 7, 16, 0, 0, 4427, 844, 1, 0, 0, 0, 4428, 4429, 7, 16, 0, 0, 4429, 4430, 7, 13, 0, 0, 4430, 4431, 7, 17, 0, 0, 4431, 4432, 7, 15, 0, 0, 4432, 846, 1, 0, 0, 0, 4433, 4434, 7, 27, 0, 0, 4434, 4435, 7, 5, 0, 0, 4435, 4436, 7, 6, 0, 0, 4436, 4437, 7, 22, 0, 0, 4437, 4438, 7, 10, 0, 0, 4438, 4439, 7, 9, 0, 0, 4439, 848, 1, 0, 0, 0, 4440, 4441, 7, 27, 0, 0, 4441, 4442, 7, 5, 0, 0, 4442, 4443, 7, 13, 0, 0, 4443, 4444, 7, 14, 0, 0, 4444, 4445, 7, 20, 0, 0, 4445, 4446, 7, 5, 0, 0, 4446, 4447, 7, 13, 0, 0, 4447, 850, 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, 16, 0, 0, 4453, 4454, 7, 16, 0, 0, 4454, 4455, 7, 13, 0, 0, 4455, 4456, 7, 17, 0, 0, 4456, 4457, 7, 18, 0, 0, 4457, 4458, 7, 22, 0, 0, 4458, 4459, 7, 16, 0, 0, 4459, 4460, 7, 10, 0, 0, 4460, 4461, 7, 9, 0, 0, 4461, 852, 1, 0, 0, 0, 4462, 4463, 7, 26, 0, 0, 4463, 4464, 7, 15, 0, 0, 4464, 4465, 7, 6, 0, 0, 4465, 4466, 7, 14, 0, 0, 4466, 4467, 7, 19, 0, 0, 4467, 4468, 7, 15, 0, 0, 4468, 4469, 7, 15, 0, 0, 4469, 4470, 7, 10, 0, 0, 4470, 4471, 7, 7, 0, 0, 4471, 4472, 7, 16, 0, 0, 4472, 854, 1, 0, 0, 0, 4473, 4474, 7, 26, 0, 0, 4474, 4475, 7, 15, 0, 0, 4475, 4476, 7, 6, 0, 0, 4476, 4477, 7, 5, 0, 0, 4477, 4478, 7, 23, 0, 0, 4478, 4479, 7, 23, 0, 0, 4479, 856, 1, 0, 0, 0, 4480, 4481, 7, 26, 0, 0, 4481, 4482, 7, 15, 0, 0, 4482, 4483, 7, 6, 0, 0, 4483, 4484, 5, 95, 0, 0, 4484, 4485, 7, 17, 0, 0, 4485, 4486, 7, 9, 0, 0, 4486, 4487, 5, 95, 0, 0, 4487, 4488, 7, 28, 0, 0, 4488, 4489, 7, 10, 0, 0, 4489, 4490, 7, 6, 0, 0, 4490, 4491, 7, 6, 0, 0, 4491, 4492, 5, 95, 0, 0, 4492, 4493, 7, 25, 0, 0, 4493, 4494, 7, 19, 0, 0, 4494, 4495, 7, 13, 0, 0, 4495, 4496, 7, 15, 0, 0, 4496, 4497, 7, 10, 0, 0, 4497, 4498, 7, 12, 0, 0, 4498, 858, 1, 0, 0, 0, 4499, 4500, 7, 26, 0, 0, 4500, 4501, 7, 15, 0, 0, 4501, 4502, 7, 6, 0, 0, 4502, 4503, 5, 95, 0, 0, 4503, 4504, 7, 17, 0, 0, 4504, 4505, 7, 9, 0, 0, 4505, 4506, 5, 95, 0, 0, 4506, 4507, 7, 28, 0, 0, 4507, 4508, 7, 10, 0, 0, 4508, 4509, 7, 6, 0, 0, 4509, 4510, 7, 6, 0, 0, 4510, 4511, 5, 95, 0, 0, 4511, 4512, 7, 25, 0, 0, 4512, 4513, 7, 19, 0, 0, 4513, 4514, 7, 13, 0, 0, 4514, 4515, 7, 15, 0, 0, 4515, 4516, 7, 10, 0, 0, 4516, 4517, 7, 12, 0, 0, 4517, 4518, 5, 95, 0, 0, 4518, 4519, 7, 12, 0, 0, 4519, 4520, 7, 19, 0, 0, 4520, 4521, 7, 14, 0, 0, 4521, 4522, 7, 22, 0, 0, 4522, 4523, 7, 15, 0, 0, 4523, 4524, 7, 10, 0, 0, 4524, 4525, 7, 7, 0, 0, 4525, 4526, 7, 16, 0, 0, 4526, 860, 1, 0, 0, 0, 4527, 4528, 7, 26, 0, 0, 4528, 4529, 7, 15, 0, 0, 4529, 4530, 7, 6, 0, 0, 4530, 4531, 5, 95, 0, 0, 4531, 4532, 7, 17, 0, 0, 4532, 4533, 7, 9, 0, 0, 4533, 4534, 5, 95, 0, 0, 4534, 4535, 7, 28, 0, 0, 4535, 4536, 7, 10, 0, 0, 4536, 4537, 7, 6, 0, 0, 4537, 4538, 7, 6, 0, 0, 4538, 4539, 5, 95, 0, 0, 4539, 4540, 7, 25, 0, 0, 4540, 4541, 7, 19, 0, 0, 4541, 4542, 7, 13, 0, 0, 4542, 4543, 7, 15, 0, 0, 4543, 4544, 7, 10, 0, 0, 4544, 4545, 7, 12, 0, 0, 4545, 4546, 5, 95, 0, 0, 4546, 4547, 7, 14, 0, 0, 4547, 4548, 7, 19, 0, 0, 4548, 4549, 7, 7, 0, 0, 4549, 4550, 7, 16, 0, 0, 4550, 4551, 7, 10, 0, 0, 4551, 4552, 7, 7, 0, 0, 4552, 4553, 7, 16, 0, 0, 4553, 862, 1, 0, 0, 0, 4554, 4555, 7, 26, 0, 0, 4555, 4556, 7, 24, 0, 0, 4556, 4557, 7, 5, 0, 0, 4557, 4558, 7, 16, 0, 0, 4558, 4559, 7, 20, 0, 0, 4559, 864, 1, 0, 0, 0, 4560, 4561, 7, 26, 0, 0, 4561, 4562, 7, 24, 0, 0, 4562, 4563, 7, 5, 0, 0, 4563, 4564, 7, 16, 0, 0, 4564, 4565, 7, 20, 0, 0, 4565, 4566, 5, 95, 0, 0, 4566, 4567, 7, 10, 0, 0, 4567, 4568, 7, 26, 0, 0, 4568, 4569, 7, 17, 0, 0, 4569, 4570, 7, 9, 0, 0, 4570, 4571, 7, 16, 0, 0, 4571, 4572, 7, 9, 0, 0, 4572, 866, 1, 0, 0, 0, 4573, 4574, 7, 26, 0, 0, 4574, 4575, 7, 15, 0, 0, 4575, 4576, 7, 6, 0, 0, 4576, 4577, 7, 14, 0, 0, 4577, 4578, 7, 19, 0, 0, 4578, 4579, 7, 7, 0, 0, 4579, 4580, 7, 14, 0, 0, 4580, 4581, 7, 5, 0, 0, 4581, 4582, 7, 16, 0, 0, 4582, 868, 1, 0, 0, 0, 4583, 4584, 7, 26, 0, 0, 4584, 4585, 7, 15, 0, 0, 4585, 4586, 7, 6, 0, 0, 4586, 4587, 7, 10, 0, 0, 4587, 4588, 7, 6, 0, 0, 4588, 4589, 7, 10, 0, 0, 4589, 4590, 7, 15, 0, 0, 4590, 4591, 7, 10, 0, 0, 4591, 4592, 7, 7, 0, 0, 4592, 4593, 7, 16, 0, 0, 4593, 870, 1, 0, 0, 0, 4594, 4595, 7, 26, 0, 0, 4595, 4596, 7, 15, 0, 0, 4596, 4597, 7, 6, 0, 0, 4597, 4598, 7, 10, 0, 0, 4598, 4599, 7, 26, 0, 0, 4599, 4600, 7, 17, 0, 0, 4600, 4601, 7, 9, 0, 0, 4601, 4602, 7, 16, 0, 0, 4602, 4603, 7, 9, 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, 25, 0, 0, 4608, 4609, 7, 19, 0, 0, 4609, 4610, 7, 13, 0, 0, 4610, 4611, 7, 10, 0, 0, 4611, 4612, 7, 9, 0, 0, 4612, 4613, 7, 16, 0, 0, 4613, 874, 1, 0, 0, 0, 4614, 4615, 7, 26, 0, 0, 4615, 4616, 7, 15, 0, 0, 4616, 4617, 7, 6, 0, 0, 4617, 4618, 7, 24, 0, 0, 4618, 4619, 7, 5, 0, 0, 4619, 4620, 7, 13, 0, 0, 4620, 4621, 7, 9, 0, 0, 4621, 4622, 7, 10, 0, 0, 4622, 876, 1, 0, 0, 0, 4623, 4624, 7, 26, 0, 0, 4624, 4625, 7, 15, 0, 0, 4625, 4626, 7, 6, 0, 0, 4626, 4627, 7, 24, 0, 0, 4627, 4628, 7, 17, 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, 13, 0, 0, 4633, 4634, 7, 19, 0, 0, 4634, 4635, 7, 19, 0, 0, 4635, 4636, 7, 16, 0, 0, 4636, 880, 1, 0, 0, 0, 4637, 4638, 7, 26, 0, 0, 4638, 4639, 7, 15, 0, 0, 4639, 4640, 7, 6, 0, 0, 4640, 4641, 7, 9, 0, 0, 4641, 4642, 7, 10, 0, 0, 4642, 4643, 7, 13, 0, 0, 4643, 4644, 7, 17, 0, 0, 4644, 4645, 7, 5, 0, 0, 4645, 4646, 7, 6, 0, 0, 4646, 4647, 7, 17, 0, 0, 4647, 4648, 7, 11, 0, 0, 4648, 4649, 7, 10, 0, 0, 4649, 882, 1, 0, 0, 0, 4650, 4651, 7, 14, 0, 0, 4651, 4652, 7, 5, 0, 0, 4652, 4653, 7, 6, 0, 0, 4653, 4654, 7, 6, 0, 0, 4654, 884, 1, 0, 0, 0, 4655, 4656, 7, 14, 0, 0, 4656, 4657, 7, 22, 0, 0, 4657, 4658, 7, 13, 0, 0, 4658, 4659, 7, 13, 0, 0, 4659, 4660, 7, 10, 0, 0, 4660, 4661, 7, 7, 0, 0, 4661, 4662, 7, 16, 0, 0, 4662, 886, 1, 0, 0, 0, 4663, 4664, 7, 5, 0, 0, 4664, 4665, 7, 16, 0, 0, 4665, 4666, 7, 16, 0, 0, 4666, 4667, 7, 5, 0, 0, 4667, 4668, 7, 14, 0, 0, 4668, 4669, 7, 20, 0, 0, 4669, 888, 1, 0, 0, 0, 4670, 4671, 7, 12, 0, 0, 4671, 4672, 7, 10, 0, 0, 4672, 4673, 7, 16, 0, 0, 4673, 4674, 7, 5, 0, 0, 4674, 4675, 7, 14, 0, 0, 4675, 4676, 7, 20, 0, 0, 4676, 890, 1, 0, 0, 0, 4677, 4678, 7, 10, 0, 0, 4678, 4679, 7, 26, 0, 0, 4679, 4680, 7, 24, 0, 0, 4680, 4681, 7, 13, 0, 0, 4681, 4682, 7, 10, 0, 0, 4682, 4683, 7, 9, 0, 0, 4683, 4684, 7, 9, 0, 0, 4684, 4685, 7, 17, 0, 0, 4685, 4686, 7, 19, 0, 0, 4686, 4687, 7, 7, 0, 0, 4687, 892, 1, 0, 0, 0, 4688, 4689, 7, 23, 0, 0, 4689, 4690, 7, 10, 0, 0, 4690, 4691, 7, 7, 0, 0, 4691, 4692, 7, 10, 0, 0, 4692, 4693, 7, 13, 0, 0, 4693, 4694, 7, 5, 0, 0, 4694, 4695, 7, 16, 0, 0, 4695, 4696, 7, 10, 0, 0, 4696, 4697, 7, 12, 0, 0, 4697, 894, 1, 0, 0, 0, 4698, 4699, 7, 6, 0, 0, 4699, 4700, 7, 19, 0, 0, 4700, 4701, 7, 23, 0, 0, 4701, 4702, 7, 23, 0, 0, 4702, 4703, 7, 10, 0, 0, 4703, 4704, 7, 12, 0, 0, 4704, 896, 1, 0, 0, 0, 4705, 4706, 7, 9, 0, 0, 4706, 4707, 7, 16, 0, 0, 4707, 4708, 7, 19, 0, 0, 4708, 4709, 7, 13, 0, 0, 4709, 4710, 7, 10, 0, 0, 4710, 4711, 7, 12, 0, 0, 4711, 898, 1, 0, 0, 0, 4712, 4713, 7, 17, 0, 0, 4713, 4714, 7, 7, 0, 0, 4714, 4715, 7, 14, 0, 0, 4715, 4716, 7, 6, 0, 0, 4716, 4717, 7, 22, 0, 0, 4717, 4718, 7, 12, 0, 0, 4718, 4719, 7, 10, 0, 0, 4719, 900, 1, 0, 0, 0, 4720, 4721, 7, 13, 0, 0, 4721, 4722, 7, 19, 0, 0, 4722, 4723, 7, 22, 0, 0, 4723, 4724, 7, 16, 0, 0, 4724, 4725, 7, 17, 0, 0, 4725, 4726, 7, 7, 0, 0, 4726, 4727, 7, 10, 0, 0, 4727, 902, 1, 0, 0, 0, 4728, 4729, 7, 16, 0, 0, 4729, 4730, 7, 13, 0, 0, 4730, 4731, 7, 5, 0, 0, 4731, 4732, 7, 7, 0, 0, 4732, 4733, 7, 9, 0, 0, 4733, 4734, 7, 25, 0, 0, 4734, 4735, 7, 19, 0, 0, 4735, 4736, 7, 13, 0, 0, 4736, 4737, 7, 15, 0, 0, 4737, 904, 1, 0, 0, 0, 4738, 4739, 7, 17, 0, 0, 4739, 4740, 7, 15, 0, 0, 4740, 4741, 7, 24, 0, 0, 4741, 4742, 7, 19, 0, 0, 4742, 4743, 7, 13, 0, 0, 4743, 4744, 7, 16, 0, 0, 4744, 906, 1, 0, 0, 0, 4745, 4746, 7, 24, 0, 0, 4746, 4747, 7, 19, 0, 0, 4747, 4748, 7, 6, 0, 0, 4748, 4749, 7, 17, 0, 0, 4749, 4750, 7, 14, 0, 0, 4750, 4751, 7, 8, 0, 0, 4751, 908, 1, 0, 0, 0, 4752, 4753, 7, 15, 0, 0, 4753, 4754, 7, 10, 0, 0, 4754, 4755, 7, 16, 0, 0, 4755, 4756, 7, 20, 0, 0, 4756, 4757, 7, 19, 0, 0, 4757, 4758, 7, 12, 0, 0, 4758, 910, 1, 0, 0, 0, 4759, 4760, 7, 13, 0, 0, 4760, 4761, 7, 10, 0, 0, 4761, 4762, 7, 25, 0, 0, 4762, 4763, 7, 10, 0, 0, 4763, 4764, 7, 13, 0, 0, 4764, 4765, 7, 10, 0, 0, 4765, 4766, 7, 7, 0, 0, 4766, 4767, 7, 14, 0, 0, 4767, 4768, 7, 17, 0, 0, 4768, 4769, 7, 7, 0, 0, 4769, 4770, 7, 23, 0, 0, 4770, 912, 1, 0, 0, 0, 4771, 4772, 7, 7, 0, 0, 4772, 4773, 7, 10, 0, 0, 4773, 4774, 7, 28, 0, 0, 4774, 914, 1, 0, 0, 0, 4775, 4776, 7, 19, 0, 0, 4776, 4777, 7, 6, 0, 0, 4777, 4778, 7, 12, 0, 0, 4778, 916, 1, 0, 0, 0, 4779, 4780, 7, 27, 0, 0, 4780, 4781, 7, 5, 0, 0, 4781, 4782, 7, 6, 0, 0, 4782, 4783, 7, 22, 0, 0, 4783, 4784, 7, 10, 0, 0, 4784, 918, 1, 0, 0, 0, 4785, 4786, 7, 9, 0, 0, 4786, 4787, 7, 22, 0, 0, 4787, 4788, 7, 18, 0, 0, 4788, 4789, 7, 9, 0, 0, 4789, 4790, 7, 14, 0, 0, 4790, 4791, 7, 13, 0, 0, 4791, 4792, 7, 17, 0, 0, 4792, 4793, 7, 24, 0, 0, 4793, 4794, 7, 16, 0, 0, 4794, 4795, 7, 17, 0, 0, 4795, 4796, 7, 19, 0, 0, 4796, 4797, 7, 7, 0, 0, 4797, 920, 1, 0, 0, 0, 4798, 4799, 7, 24, 0, 0, 4799, 4800, 7, 22, 0, 0, 4800, 4801, 7, 18, 0, 0, 4801, 4802, 7, 6, 0, 0, 4802, 4803, 7, 17, 0, 0, 4803, 4804, 7, 14, 0, 0, 4804, 4805, 7, 5, 0, 0, 4805, 4806, 7, 16, 0, 0, 4806, 4807, 7, 17, 0, 0, 4807, 4808, 7, 19, 0, 0, 4808, 4809, 7, 7, 0, 0, 4809, 922, 1, 0, 0, 0, 4810, 4811, 7, 19, 0, 0, 4811, 4812, 7, 22, 0, 0, 4812, 4813, 7, 16, 0, 0, 4813, 924, 1, 0, 0, 0, 4814, 4815, 7, 10, 0, 0, 4815, 4816, 7, 7, 0, 0, 4816, 4817, 7, 12, 0, 0, 4817, 926, 1, 0, 0, 0, 4818, 4819, 7, 13, 0, 0, 4819, 4820, 7, 19, 0, 0, 4820, 4821, 7, 22, 0, 0, 4821, 4822, 7, 16, 0, 0, 4822, 4823, 7, 17, 0, 0, 4823, 4824, 7, 7, 0, 0, 4824, 4825, 7, 10, 0, 0, 4825, 4826, 7, 9, 0, 0, 4826, 928, 1, 0, 0, 0, 4827, 4828, 7, 9, 0, 0, 4828, 4829, 7, 14, 0, 0, 4829, 4830, 7, 20, 0, 0, 4830, 4831, 7, 10, 0, 0, 4831, 4832, 7, 15, 0, 0, 4832, 4833, 7, 5, 0, 0, 4833, 4834, 7, 9, 0, 0, 4834, 930, 1, 0, 0, 0, 4835, 4836, 7, 24, 0, 0, 4836, 4837, 7, 13, 0, 0, 4837, 4838, 7, 19, 0, 0, 4838, 4839, 7, 14, 0, 0, 4839, 4840, 7, 10, 0, 0, 4840, 4841, 7, 12, 0, 0, 4841, 4842, 7, 22, 0, 0, 4842, 4843, 7, 13, 0, 0, 4843, 4844, 7, 10, 0, 0, 4844, 4845, 7, 9, 0, 0, 4845, 932, 1, 0, 0, 0, 4846, 4847, 7, 17, 0, 0, 4847, 4848, 7, 7, 0, 0, 4848, 4849, 7, 24, 0, 0, 4849, 4850, 7, 22, 0, 0, 4850, 4851, 7, 16, 0, 0, 4851, 934, 1, 0, 0, 0, 4852, 4853, 7, 9, 0, 0, 4853, 4854, 7, 22, 0, 0, 4854, 4855, 7, 24, 0, 0, 4855, 4856, 7, 24, 0, 0, 4856, 4857, 7, 19, 0, 0, 4857, 4858, 7, 13, 0, 0, 4858, 4859, 7, 16, 0, 0, 4859, 936, 1, 0, 0, 0, 4860, 4861, 7, 24, 0, 0, 4861, 4862, 7, 5, 0, 0, 4862, 4863, 7, 13, 0, 0, 4863, 4864, 7, 5, 0, 0, 4864, 4865, 7, 6, 0, 0, 4865, 4866, 7, 6, 0, 0, 4866, 4867, 7, 10, 0, 0, 4867, 4868, 7, 6, 0, 0, 4868, 938, 1, 0, 0, 0, 4869, 4870, 7, 9, 0, 0, 4870, 4871, 7, 29, 0, 0, 4871, 4872, 7, 6, 0, 0, 4872, 940, 1, 0, 0, 0, 4873, 4874, 7, 12, 0, 0, 4874, 4875, 7, 10, 0, 0, 4875, 4876, 7, 24, 0, 0, 4876, 4877, 7, 10, 0, 0, 4877, 4878, 7, 7, 0, 0, 4878, 4879, 7, 12, 0, 0, 4879, 4880, 7, 9, 0, 0, 4880, 942, 1, 0, 0, 0, 4881, 4882, 7, 19, 0, 0, 4882, 4883, 7, 27, 0, 0, 4883, 4884, 7, 10, 0, 0, 4884, 4885, 7, 13, 0, 0, 4885, 4886, 7, 13, 0, 0, 4886, 4887, 7, 17, 0, 0, 4887, 4888, 7, 12, 0, 0, 4888, 4889, 7, 17, 0, 0, 4889, 4890, 7, 7, 0, 0, 4890, 4891, 7, 23, 0, 0, 4891, 944, 1, 0, 0, 0, 4892, 4893, 7, 14, 0, 0, 4893, 4894, 7, 19, 0, 0, 4894, 4895, 7, 7, 0, 0, 4895, 4896, 7, 25, 0, 0, 4896, 4897, 7, 6, 0, 0, 4897, 4898, 7, 17, 0, 0, 4898, 4899, 7, 14, 0, 0, 4899, 4900, 7, 16, 0, 0, 4900, 946, 1, 0, 0, 0, 4901, 4902, 7, 9, 0, 0, 4902, 4903, 7, 21, 0, 0, 4903, 4904, 7, 17, 0, 0, 4904, 4905, 7, 24, 0, 0, 4905, 948, 1, 0, 0, 0, 4906, 4907, 7, 6, 0, 0, 4907, 4908, 7, 19, 0, 0, 4908, 4909, 7, 14, 0, 0, 4909, 4910, 7, 21, 0, 0, 4910, 4911, 7, 10, 0, 0, 4911, 4912, 7, 12, 0, 0, 4912, 950, 1, 0, 0, 0, 4913, 4914, 7, 16, 0, 0, 4914, 4915, 7, 17, 0, 0, 4915, 4916, 7, 10, 0, 0, 4916, 4917, 7, 9, 0, 0, 4917, 952, 1, 0, 0, 0, 4918, 4919, 7, 13, 0, 0, 4919, 4920, 7, 19, 0, 0, 4920, 4921, 7, 6, 0, 0, 4921, 4922, 7, 6, 0, 0, 4922, 4923, 7, 22, 0, 0, 4923, 4924, 7, 24, 0, 0, 4924, 954, 1, 0, 0, 0, 4925, 4926, 7, 14, 0, 0, 4926, 4927, 7, 22, 0, 0, 4927, 4928, 7, 18, 0, 0, 4928, 4929, 7, 10, 0, 0, 4929, 956, 1, 0, 0, 0, 4930, 4931, 7, 23, 0, 0, 4931, 4932, 7, 13, 0, 0, 4932, 4933, 7, 19, 0, 0, 4933, 4934, 7, 22, 0, 0, 4934, 4935, 7, 24, 0, 0, 4935, 4936, 7, 17, 0, 0, 4936, 4937, 7, 7, 0, 0, 4937, 4938, 7, 23, 0, 0, 4938, 958, 1, 0, 0, 0, 4939, 4940, 7, 9, 0, 0, 4940, 4941, 7, 10, 0, 0, 4941, 4942, 7, 16, 0, 0, 4942, 4943, 7, 9, 0, 0, 4943, 960, 1, 0, 0, 0, 4944, 4945, 7, 16, 0, 0, 4945, 4946, 7, 5, 0, 0, 4946, 4947, 7, 18, 0, 0, 4947, 4948, 7, 6, 0, 0, 4948, 4949, 7, 10, 0, 0, 4949, 4950, 7, 9, 0, 0, 4950, 4951, 7, 5, 0, 0, 4951, 4952, 7, 15, 0, 0, 4952, 4953, 7, 24, 0, 0, 4953, 4954, 7, 6, 0, 0, 4954, 4955, 7, 10, 0, 0, 4955, 962, 1, 0, 0, 0, 4956, 4957, 7, 19, 0, 0, 4957, 4958, 7, 13, 0, 0, 4958, 4959, 7, 12, 0, 0, 4959, 4960, 7, 17, 0, 0, 4960, 4961, 7, 7, 0, 0, 4961, 4962, 7, 5, 0, 0, 4962, 4963, 7, 6, 0, 0, 4963, 4964, 7, 17, 0, 0, 4964, 4965, 7, 16, 0, 0, 4965, 4966, 7, 8, 0, 0, 4966, 964, 1, 0, 0, 0, 4967, 4968, 7, 26, 0, 0, 4968, 4969, 7, 15, 0, 0, 4969, 4970, 7, 6, 0, 0, 4970, 4971, 7, 16, 0, 0, 4971, 4972, 7, 5, 0, 0, 4972, 4973, 7, 18, 0, 0, 4973, 4974, 7, 6, 0, 0, 4974, 4975, 7, 10, 0, 0, 4975, 966, 1, 0, 0, 0, 4976, 4977, 7, 14, 0, 0, 4977, 4978, 7, 19, 0, 0, 4978, 4979, 7, 6, 0, 0, 4979, 4980, 7, 22, 0, 0, 4980, 4981, 7, 15, 0, 0, 4981, 4982, 7, 7, 0, 0, 4982, 4983, 7, 9, 0, 0, 4983, 968, 1, 0, 0, 0, 4984, 4985, 7, 26, 0, 0, 4985, 4986, 7, 15, 0, 0, 4986, 4987, 7, 6, 0, 0, 4987, 4988, 7, 7, 0, 0, 4988, 4989, 7, 5, 0, 0, 4989, 4990, 7, 15, 0, 0, 4990, 4991, 7, 10, 0, 0, 4991, 4992, 7, 9, 0, 0, 4992, 4993, 7, 24, 0, 0, 4993, 4994, 7, 5, 0, 0, 4994, 4995, 7, 14, 0, 0, 4995, 4996, 7, 10, 0, 0, 4996, 4997, 7, 9, 0, 0, 4997, 970, 1, 0, 0, 0, 4998, 4999, 7, 13, 0, 0, 4999, 5000, 7, 19, 0, 0, 5000, 5001, 7, 28, 0, 0, 5001, 5002, 7, 16, 0, 0, 5002, 5003, 7, 8, 0, 0, 5003, 5004, 7, 24, 0, 0, 5004, 5005, 7, 10, 0, 0, 5005, 972, 1, 0, 0, 0, 5006, 5007, 7, 7, 0, 0, 5007, 5008, 7, 19, 0, 0, 5008, 5009, 7, 13, 0, 0, 5009, 5010, 7, 15, 0, 0, 5010, 5011, 7, 5, 0, 0, 5011, 5012, 7, 6, 0, 0, 5012, 5013, 7, 17, 0, 0, 5013, 5014, 7, 11, 0, 0, 5014, 5015, 7, 10, 0, 0, 5015, 5016, 7, 12, 0, 0, 5016, 974, 1, 0, 0, 0, 5017, 5018, 7, 28, 0, 0, 5018, 5019, 7, 17, 0, 0, 5019, 5020, 7, 16, 0, 0, 5020, 5021, 7, 20, 0, 0, 5021, 5022, 7, 17, 0, 0, 5022, 5023, 7, 7, 0, 0, 5023, 976, 1, 0, 0, 0, 5024, 5025, 7, 25, 0, 0, 5025, 5026, 7, 17, 0, 0, 5026, 5027, 7, 6, 0, 0, 5027, 5028, 7, 16, 0, 0, 5028, 5029, 7, 10, 0, 0, 5029, 5030, 7, 13, 0, 0, 5030, 978, 1, 0, 0, 0, 5031, 5032, 7, 23, 0, 0, 5032, 5033, 7, 13, 0, 0, 5033, 5034, 7, 19, 0, 0, 5034, 5035, 7, 22, 0, 0, 5035, 5036, 7, 24, 0, 0, 5036, 5037, 7, 9, 0, 0, 5037, 980, 1, 0, 0, 0, 5038, 5039, 7, 19, 0, 0, 5039, 5040, 7, 16, 0, 0, 5040, 5041, 7, 20, 0, 0, 5041, 5042, 7, 10, 0, 0, 5042, 5043, 7, 13, 0, 0, 5043, 5044, 7, 9, 0, 0, 5044, 982, 1, 0, 0, 0, 5045, 5046, 7, 7, 0, 0, 5046, 5047, 7, 25, 0, 0, 5047, 5048, 7, 14, 0, 0, 5048, 984, 1, 0, 0, 0, 5049, 5050, 7, 7, 0, 0, 5050, 5051, 7, 25, 0, 0, 5051, 5052, 7, 12, 0, 0, 5052, 986, 1, 0, 0, 0, 5053, 5054, 7, 7, 0, 0, 5054, 5055, 7, 25, 0, 0, 5055, 5056, 7, 21, 0, 0, 5056, 5057, 7, 14, 0, 0, 5057, 988, 1, 0, 0, 0, 5058, 5059, 7, 7, 0, 0, 5059, 5060, 7, 25, 0, 0, 5060, 5061, 7, 21, 0, 0, 5061, 5062, 7, 12, 0, 0, 5062, 990, 1, 0, 0, 0, 5063, 5064, 7, 22, 0, 0, 5064, 5065, 7, 10, 0, 0, 5065, 5066, 7, 9, 0, 0, 5066, 5067, 7, 14, 0, 0, 5067, 5068, 7, 5, 0, 0, 5068, 5069, 7, 24, 0, 0, 5069, 5070, 7, 10, 0, 0, 5070, 992, 1, 0, 0, 0, 5071, 5072, 7, 27, 0, 0, 5072, 5073, 7, 17, 0, 0, 5073, 5074, 7, 10, 0, 0, 5074, 5075, 7, 28, 0, 0, 5075, 5076, 7, 9, 0, 0, 5076, 994, 1, 0, 0, 0, 5077, 5078, 7, 7, 0, 0, 5078, 5079, 7, 19, 0, 0, 5079, 5080, 7, 13, 0, 0, 5080, 5081, 7, 15, 0, 0, 5081, 5082, 7, 5, 0, 0, 5082, 5083, 7, 6, 0, 0, 5083, 5084, 7, 17, 0, 0, 5084, 5085, 7, 11, 0, 0, 5085, 5086, 7, 10, 0, 0, 5086, 996, 1, 0, 0, 0, 5087, 5088, 7, 12, 0, 0, 5088, 5089, 7, 22, 0, 0, 5089, 5090, 7, 15, 0, 0, 5090, 5091, 7, 24, 0, 0, 5091, 998, 1, 0, 0, 0, 5092, 5093, 7, 24, 0, 0, 5093, 5094, 7, 13, 0, 0, 5094, 5095, 7, 17, 0, 0, 5095, 5096, 7, 7, 0, 0, 5096, 5097, 7, 16, 0, 0, 5097, 5098, 5, 95, 0, 0, 5098, 5099, 7, 9, 0, 0, 5099, 5100, 7, 16, 0, 0, 5100, 5101, 7, 13, 0, 0, 5101, 5102, 7, 17, 0, 0, 5102, 5103, 7, 14, 0, 0, 5103, 5104, 7, 16, 0, 0, 5104, 5105, 5, 95, 0, 0, 5105, 5106, 7, 24, 0, 0, 5106, 5107, 7, 5, 0, 0, 5107, 5108, 7, 13, 0, 0, 5108, 5109, 7, 5, 0, 0, 5109, 5110, 7, 15, 0, 0, 5110, 5111, 7, 9, 0, 0, 5111, 1000, 1, 0, 0, 0, 5112, 5113, 7, 27, 0, 0, 5113, 5114, 7, 5, 0, 0, 5114, 5115, 7, 13, 0, 0, 5115, 5116, 7, 17, 0, 0, 5116, 5117, 7, 5, 0, 0, 5117, 5118, 7, 18, 0, 0, 5118, 5119, 7, 6, 0, 0, 5119, 5120, 7, 10, 0, 0, 5120, 5121, 5, 95, 0, 0, 5121, 5122, 7, 14, 0, 0, 5122, 5123, 7, 19, 0, 0, 5123, 5124, 7, 7, 0, 0, 5124, 5125, 7, 25, 0, 0, 5125, 5126, 7, 6, 0, 0, 5126, 5127, 7, 17, 0, 0, 5127, 5128, 7, 14, 0, 0, 5128, 5129, 7, 16, 0, 0, 5129, 1002, 1, 0, 0, 0, 5130, 5131, 7, 10, 0, 0, 5131, 5132, 7, 13, 0, 0, 5132, 5133, 7, 13, 0, 0, 5133, 5134, 7, 19, 0, 0, 5134, 5135, 7, 13, 0, 0, 5135, 1004, 1, 0, 0, 0, 5136, 5137, 7, 22, 0, 0, 5137, 5138, 7, 9, 0, 0, 5138, 5139, 7, 10, 0, 0, 5139, 5140, 5, 95, 0, 0, 5140, 5141, 7, 27, 0, 0, 5141, 5142, 7, 5, 0, 0, 5142, 5143, 7, 13, 0, 0, 5143, 5144, 7, 17, 0, 0, 5144, 5145, 7, 5, 0, 0, 5145, 5146, 7, 18, 0, 0, 5146, 5147, 7, 6, 0, 0, 5147, 5148, 7, 10, 0, 0, 5148, 1006, 1, 0, 0, 0, 5149, 5150, 7, 22, 0, 0, 5150, 5151, 7, 9, 0, 0, 5151, 5152, 7, 10, 0, 0, 5152, 5153, 5, 95, 0, 0, 5153, 5154, 7, 14, 0, 0, 5154, 5155, 7, 19, 0, 0, 5155, 5156, 7, 6, 0, 0, 5156, 5157, 7, 22, 0, 0, 5157, 5158, 7, 15, 0, 0, 5158, 5159, 7, 7, 0, 0, 5159, 1008, 1, 0, 0, 0, 5160, 5161, 7, 5, 0, 0, 5161, 5162, 7, 6, 0, 0, 5162, 5163, 7, 17, 0, 0, 5163, 5164, 7, 5, 0, 0, 5164, 5165, 7, 9, 0, 0, 5165, 1010, 1, 0, 0, 0, 5166, 5167, 7, 14, 0, 0, 5167, 5168, 7, 19, 0, 0, 5168, 5169, 7, 7, 0, 0, 5169, 5170, 7, 9, 0, 0, 5170, 5171, 7, 16, 0, 0, 5171, 5172, 7, 5, 0, 0, 5172, 5173, 7, 7, 0, 0, 5173, 5174, 7, 16, 0, 0, 5174, 1012, 1, 0, 0, 0, 5175, 5176, 7, 24, 0, 0, 5176, 5177, 7, 10, 0, 0, 5177, 5178, 7, 13, 0, 0, 5178, 5179, 7, 25, 0, 0, 5179, 5180, 7, 19, 0, 0, 5180, 5181, 7, 13, 0, 0, 5181, 5182, 7, 15, 0, 0, 5182, 1014, 1, 0, 0, 0, 5183, 5184, 7, 23, 0, 0, 5184, 5185, 7, 10, 0, 0, 5185, 5186, 7, 16, 0, 0, 5186, 1016, 1, 0, 0, 0, 5187, 5188, 7, 12, 0, 0, 5188, 5189, 7, 17, 0, 0, 5189, 5190, 7, 5, 0, 0, 5190, 5191, 7, 23, 0, 0, 5191, 5192, 7, 7, 0, 0, 5192, 5193, 7, 19, 0, 0, 5193, 5194, 7, 9, 0, 0, 5194, 5195, 7, 16, 0, 0, 5195, 5196, 7, 17, 0, 0, 5196, 5197, 7, 14, 0, 0, 5197, 5198, 7, 9, 0, 0, 5198, 1018, 1, 0, 0, 0, 5199, 5200, 7, 9, 0, 0, 5200, 5201, 7, 16, 0, 0, 5201, 5202, 7, 5, 0, 0, 5202, 5203, 7, 14, 0, 0, 5203, 5204, 7, 21, 0, 0, 5204, 5205, 7, 10, 0, 0, 5205, 5206, 7, 12, 0, 0, 5206, 1020, 1, 0, 0, 0, 5207, 5208, 7, 10, 0, 0, 5208, 5209, 7, 6, 0, 0, 5209, 5210, 7, 9, 0, 0, 5210, 5211, 7, 17, 0, 0, 5211, 5212, 7, 25, 0, 0, 5212, 1022, 1, 0, 0, 0, 5213, 5214, 7, 28, 0, 0, 5214, 5215, 7, 20, 0, 0, 5215, 5216, 7, 17, 0, 0, 5216, 5217, 7, 6, 0, 0, 5217, 5218, 7, 10, 0, 0, 5218, 1024, 1, 0, 0, 0, 5219, 5220, 7, 13, 0, 0, 5220, 5221, 7, 10, 0, 0, 5221, 5222, 7, 27, 0, 0, 5222, 5223, 7, 10, 0, 0, 5223, 5224, 7, 13, 0, 0, 5224, 5225, 7, 9, 0, 0, 5225, 5226, 7, 10, 0, 0, 5226, 1026, 1, 0, 0, 0, 5227, 5228, 7, 25, 0, 0, 5228, 5229, 7, 19, 0, 0, 5229, 5230, 7, 13, 0, 0, 5230, 5231, 7, 10, 0, 0, 5231, 5232, 7, 5, 0, 0, 5232, 5233, 7, 14, 0, 0, 5233, 5234, 7, 20, 0, 0, 5234, 1028, 1, 0, 0, 0, 5235, 5236, 7, 9, 0, 0, 5236, 5237, 7, 6, 0, 0, 5237, 5238, 7, 17, 0, 0, 5238, 5239, 7, 14, 0, 0, 5239, 5240, 7, 10, 0, 0, 5240, 1030, 1, 0, 0, 0, 5241, 5242, 7, 10, 0, 0, 5242, 5243, 7, 26, 0, 0, 5243, 5244, 7, 17, 0, 0, 5244, 5245, 7, 16, 0, 0, 5245, 1032, 1, 0, 0, 0, 5246, 5247, 7, 13, 0, 0, 5247, 5248, 7, 10, 0, 0, 5248, 5249, 7, 16, 0, 0, 5249, 5250, 7, 22, 0, 0, 5250, 5251, 7, 13, 0, 0, 5251, 5252, 7, 7, 0, 0, 5252, 1034, 1, 0, 0, 0, 5253, 5254, 7, 29, 0, 0, 5254, 5255, 7, 22, 0, 0, 5255, 5256, 7, 10, 0, 0, 5256, 5257, 7, 13, 0, 0, 5257, 5258, 7, 8, 0, 0, 5258, 1036, 1, 0, 0, 0, 5259, 5260, 7, 13, 0, 0, 5260, 5261, 7, 5, 0, 0, 5261, 5262, 7, 17, 0, 0, 5262, 5263, 7, 9, 0, 0, 5263, 5264, 7, 10, 0, 0, 5264, 1038, 1, 0, 0, 0, 5265, 5266, 7, 9, 0, 0, 5266, 5267, 7, 29, 0, 0, 5267, 5268, 7, 6, 0, 0, 5268, 5269, 7, 9, 0, 0, 5269, 5270, 7, 16, 0, 0, 5270, 5271, 7, 5, 0, 0, 5271, 5272, 7, 16, 0, 0, 5272, 5273, 7, 10, 0, 0, 5273, 1040, 1, 0, 0, 0, 5274, 5275, 7, 12, 0, 0, 5275, 5276, 7, 10, 0, 0, 5276, 5277, 7, 18, 0, 0, 5277, 5278, 7, 22, 0, 0, 5278, 5279, 7, 23, 0, 0, 5279, 1042, 1, 0, 0, 0, 5280, 5281, 7, 6, 0, 0, 5281, 5282, 7, 19, 0, 0, 5282, 5283, 7, 23, 0, 0, 5283, 1044, 1, 0, 0, 0, 5284, 5285, 7, 17, 0, 0, 5285, 5286, 7, 7, 0, 0, 5286, 5287, 7, 25, 0, 0, 5287, 5288, 7, 19, 0, 0, 5288, 1046, 1, 0, 0, 0, 5289, 5290, 7, 7, 0, 0, 5290, 5291, 7, 19, 0, 0, 5291, 5292, 7, 16, 0, 0, 5292, 5293, 7, 17, 0, 0, 5293, 5294, 7, 14, 0, 0, 5294, 5295, 7, 10, 0, 0, 5295, 1048, 1, 0, 0, 0, 5296, 5297, 7, 28, 0, 0, 5297, 5298, 7, 5, 0, 0, 5298, 5299, 7, 13, 0, 0, 5299, 5300, 7, 7, 0, 0, 5300, 5301, 7, 17, 0, 0, 5301, 5302, 7, 7, 0, 0, 5302, 5303, 7, 23, 0, 0, 5303, 1050, 1, 0, 0, 0, 5304, 5305, 7, 10, 0, 0, 5305, 5306, 7, 26, 0, 0, 5306, 5307, 7, 14, 0, 0, 5307, 5308, 7, 10, 0, 0, 5308, 5309, 7, 24, 0, 0, 5309, 5310, 7, 16, 0, 0, 5310, 5311, 7, 17, 0, 0, 5311, 5312, 7, 19, 0, 0, 5312, 5313, 7, 7, 0, 0, 5313, 1052, 1, 0, 0, 0, 5314, 5315, 7, 5, 0, 0, 5315, 5316, 7, 9, 0, 0, 5316, 5317, 7, 9, 0, 0, 5317, 5318, 7, 10, 0, 0, 5318, 5319, 7, 13, 0, 0, 5319, 5320, 7, 16, 0, 0, 5320, 1054, 1, 0, 0, 0, 5321, 5322, 7, 6, 0, 0, 5322, 5323, 7, 19, 0, 0, 5323, 5324, 7, 19, 0, 0, 5324, 5325, 7, 24, 0, 0, 5325, 1056, 1, 0, 0, 0, 5326, 5327, 7, 19, 0, 0, 5327, 5328, 7, 24, 0, 0, 5328, 5329, 7, 10, 0, 0, 5329, 5330, 7, 7, 0, 0, 5330, 1058, 1, 0, 0, 0, 5331, 5332, 7, 5, 0, 0, 5332, 5333, 7, 18, 0, 0, 5333, 5334, 7, 9, 0, 0, 5334, 1060, 1, 0, 0, 0, 5335, 5336, 7, 14, 0, 0, 5336, 5337, 7, 18, 0, 0, 5337, 5338, 7, 13, 0, 0, 5338, 5339, 7, 16, 0, 0, 5339, 1062, 1, 0, 0, 0, 5340, 5341, 7, 14, 0, 0, 5341, 5342, 7, 10, 0, 0, 5342, 5343, 7, 17, 0, 0, 5343, 5344, 7, 6, 0, 0, 5344, 1064, 1, 0, 0, 0, 5345, 5346, 7, 14, 0, 0, 5346, 5347, 7, 10, 0, 0, 5347, 5348, 7, 17, 0, 0, 5348, 5349, 7, 6, 0, 0, 5349, 5350, 7, 17, 0, 0, 5350, 5351, 7, 7, 0, 0, 5351, 5352, 7, 23, 0, 0, 5352, 1066, 1, 0, 0, 0, 5353, 5354, 7, 12, 0, 0, 5354, 5355, 7, 10, 0, 0, 5355, 5356, 7, 23, 0, 0, 5356, 5357, 7, 13, 0, 0, 5357, 5358, 7, 10, 0, 0, 5358, 5359, 7, 10, 0, 0, 5359, 5360, 7, 9, 0, 0, 5360, 1068, 1, 0, 0, 0, 5361, 5362, 7, 12, 0, 0, 5362, 5363, 7, 17, 0, 0, 5363, 5364, 7, 27, 0, 0, 5364, 1070, 1, 0, 0, 0, 5365, 5366, 7, 10, 0, 0, 5366, 5367, 7, 26, 0, 0, 5367, 5368, 7, 24, 0, 0, 5368, 1072, 1, 0, 0, 0, 5369, 5370, 7, 25, 0, 0, 5370, 5371, 7, 5, 0, 0, 5371, 5372, 7, 14, 0, 0, 5372, 5373, 7, 16, 0, 0, 5373, 5374, 7, 19, 0, 0, 5374, 5375, 7, 13, 0, 0, 5375, 5376, 7, 17, 0, 0, 5376, 5377, 7, 5, 0, 0, 5377, 5378, 7, 6, 0, 0, 5378, 1074, 1, 0, 0, 0, 5379, 5380, 7, 25, 0, 0, 5380, 5381, 7, 6, 0, 0, 5381, 5382, 7, 19, 0, 0, 5382, 5383, 7, 19, 0, 0, 5383, 5384, 7, 13, 0, 0, 5384, 1076, 1, 0, 0, 0, 5385, 5386, 7, 23, 0, 0, 5386, 5387, 7, 14, 0, 0, 5387, 5388, 7, 12, 0, 0, 5388, 1078, 1, 0, 0, 0, 5389, 5390, 7, 6, 0, 0, 5390, 5391, 7, 14, 0, 0, 5391, 5392, 7, 15, 0, 0, 5392, 1080, 1, 0, 0, 0, 5393, 5394, 7, 6, 0, 0, 5394, 5395, 7, 7, 0, 0, 5395, 1082, 1, 0, 0, 0, 5396, 5397, 7, 6, 0, 0, 5397, 5398, 7, 19, 0, 0, 5398, 5399, 7, 23, 0, 0, 5399, 5400, 5, 49, 0, 0, 5400, 5401, 5, 48, 0, 0, 5401, 1084, 1, 0, 0, 0, 5402, 5403, 7, 15, 0, 0, 5403, 5404, 7, 17, 0, 0, 5404, 5405, 7, 7, 0, 0, 5405, 5406, 5, 95, 0, 0, 5406, 5407, 7, 9, 0, 0, 5407, 5408, 7, 14, 0, 0, 5408, 5409, 7, 5, 0, 0, 5409, 5410, 7, 6, 0, 0, 5410, 5411, 7, 10, 0, 0, 5411, 1086, 1, 0, 0, 0, 5412, 5413, 7, 15, 0, 0, 5413, 5414, 7, 19, 0, 0, 5414, 5415, 7, 12, 0, 0, 5415, 1088, 1, 0, 0, 0, 5416, 5417, 7, 24, 0, 0, 5417, 5418, 7, 17, 0, 0, 5418, 1090, 1, 0, 0, 0, 5419, 5420, 7, 24, 0, 0, 5420, 5421, 7, 19, 0, 0, 5421, 5422, 7, 28, 0, 0, 5422, 5423, 7, 10, 0, 0, 5423, 5424, 7, 13, 0, 0, 5424, 1092, 1, 0, 0, 0, 5425, 5426, 7, 13, 0, 0, 5426, 5427, 7, 5, 0, 0, 5427, 5428, 7, 12, 0, 0, 5428, 5429, 7, 17, 0, 0, 5429, 5430, 7, 5, 0, 0, 5430, 5431, 7, 7, 0, 0, 5431, 5432, 7, 9, 0, 0, 5432, 1094, 1, 0, 0, 0, 5433, 5434, 7, 13, 0, 0, 5434, 5435, 7, 19, 0, 0, 5435, 5436, 7, 22, 0, 0, 5436, 5437, 7, 7, 0, 0, 5437, 5438, 7, 12, 0, 0, 5438, 1096, 1, 0, 0, 0, 5439, 5440, 7, 9, 0, 0, 5440, 5441, 7, 14, 0, 0, 5441, 5442, 7, 5, 0, 0, 5442, 5443, 7, 6, 0, 0, 5443, 5444, 7, 10, 0, 0, 5444, 1098, 1, 0, 0, 0, 5445, 5446, 7, 9, 0, 0, 5446, 5447, 7, 17, 0, 0, 5447, 5448, 7, 23, 0, 0, 5448, 5449, 7, 7, 0, 0, 5449, 1100, 1, 0, 0, 0, 5450, 5451, 7, 9, 0, 0, 5451, 5452, 7, 29, 0, 0, 5452, 5453, 7, 13, 0, 0, 5453, 5454, 7, 16, 0, 0, 5454, 1102, 1, 0, 0, 0, 5455, 5456, 7, 16, 0, 0, 5456, 5457, 7, 13, 0, 0, 5457, 5458, 7, 17, 0, 0, 5458, 5459, 7, 15, 0, 0, 5459, 5460, 5, 95, 0, 0, 5460, 5461, 7, 9, 0, 0, 5461, 5462, 7, 14, 0, 0, 5462, 5463, 7, 5, 0, 0, 5463, 5464, 7, 6, 0, 0, 5464, 5465, 7, 10, 0, 0, 5465, 1104, 1, 0, 0, 0, 5466, 5467, 7, 16, 0, 0, 5467, 5468, 7, 13, 0, 0, 5468, 5469, 7, 22, 0, 0, 5469, 5470, 7, 7, 0, 0, 5470, 5471, 7, 14, 0, 0, 5471, 1106, 1, 0, 0, 0, 5472, 5473, 7, 28, 0, 0, 5473, 5474, 7, 17, 0, 0, 5474, 5475, 7, 12, 0, 0, 5475, 5476, 7, 16, 0, 0, 5476, 5477, 7, 20, 0, 0, 5477, 5478, 5, 95, 0, 0, 5478, 5479, 7, 18, 0, 0, 5479, 5480, 7, 22, 0, 0, 5480, 5481, 7, 14, 0, 0, 5481, 5482, 7, 21, 0, 0, 5482, 5483, 7, 10, 0, 0, 5483, 5484, 7, 16, 0, 0, 5484, 1108, 1, 0, 0, 0, 5485, 5486, 7, 13, 0, 0, 5486, 5487, 7, 5, 0, 0, 5487, 5488, 7, 7, 0, 0, 5488, 5489, 7, 12, 0, 0, 5489, 5490, 7, 19, 0, 0, 5490, 5491, 7, 15, 0, 0, 5491, 1110, 1, 0, 0, 0, 5492, 5493, 7, 9, 0, 0, 5493, 5494, 7, 10, 0, 0, 5494, 5495, 7, 16, 0, 0, 5495, 5496, 7, 9, 0, 0, 5496, 5497, 7, 10, 0, 0, 5497, 5498, 7, 10, 0, 0, 5498, 5499, 7, 12, 0, 0, 5499, 1112, 1, 0, 0, 0, 5500, 5501, 7, 5, 0, 0, 5501, 5502, 7, 14, 0, 0, 5502, 5503, 7, 19, 0, 0, 5503, 5504, 7, 9, 0, 0, 5504, 1114, 1, 0, 0, 0, 5505, 5506, 7, 5, 0, 0, 5506, 5507, 7, 14, 0, 0, 5507, 5508, 7, 19, 0, 0, 5508, 5509, 7, 9, 0, 0, 5509, 5510, 7, 12, 0, 0, 5510, 1116, 1, 0, 0, 0, 5511, 5512, 7, 5, 0, 0, 5512, 5513, 7, 9, 0, 0, 5513, 5514, 7, 17, 0, 0, 5514, 5515, 7, 7, 0, 0, 5515, 1118, 1, 0, 0, 0, 5516, 5517, 7, 5, 0, 0, 5517, 5518, 7, 9, 0, 0, 5518, 5519, 7, 17, 0, 0, 5519, 5520, 7, 7, 0, 0, 5520, 5521, 7, 12, 0, 0, 5521, 1120, 1, 0, 0, 0, 5522, 5523, 7, 5, 0, 0, 5523, 5524, 7, 16, 0, 0, 5524, 5525, 7, 5, 0, 0, 5525, 5526, 7, 7, 0, 0, 5526, 1122, 1, 0, 0, 0, 5527, 5528, 7, 5, 0, 0, 5528, 5529, 7, 16, 0, 0, 5529, 5530, 7, 5, 0, 0, 5530, 5531, 7, 7, 0, 0, 5531, 5532, 7, 12, 0, 0, 5532, 1124, 1, 0, 0, 0, 5533, 5534, 7, 5, 0, 0, 5534, 5535, 7, 16, 0, 0, 5535, 5536, 7, 5, 0, 0, 5536, 5537, 7, 7, 0, 0, 5537, 5538, 5, 50, 0, 0, 5538, 1126, 1, 0, 0, 0, 5539, 5540, 7, 5, 0, 0, 5540, 5541, 7, 16, 0, 0, 5541, 5542, 7, 5, 0, 0, 5542, 5543, 7, 7, 0, 0, 5543, 5544, 5, 50, 0, 0, 5544, 5545, 7, 12, 0, 0, 5545, 1128, 1, 0, 0, 0, 5546, 5547, 7, 14, 0, 0, 5547, 5548, 7, 19, 0, 0, 5548, 5549, 7, 9, 0, 0, 5549, 1130, 1, 0, 0, 0, 5550, 5551, 7, 14, 0, 0, 5551, 5552, 7, 19, 0, 0, 5552, 5553, 7, 9, 0, 0, 5553, 5554, 7, 12, 0, 0, 5554, 1132, 1, 0, 0, 0, 5555, 5556, 7, 14, 0, 0, 5556, 5557, 7, 19, 0, 0, 5557, 5558, 7, 16, 0, 0, 5558, 1134, 1, 0, 0, 0, 5559, 5560, 7, 14, 0, 0, 5560, 5561, 7, 19, 0, 0, 5561, 5562, 7, 16, 0, 0, 5562, 5563, 7, 12, 0, 0, 5563, 1136, 1, 0, 0, 0, 5564, 5565, 7, 9, 0, 0, 5565, 5566, 7, 17, 0, 0, 5566, 5567, 7, 7, 0, 0, 5567, 1138, 1, 0, 0, 0, 5568, 5569, 7, 9, 0, 0, 5569, 5570, 7, 17, 0, 0, 5570, 5571, 7, 7, 0, 0, 5571, 5572, 7, 12, 0, 0, 5572, 1140, 1, 0, 0, 0, 5573, 5574, 7, 16, 0, 0, 5574, 5575, 7, 5, 0, 0, 5575, 5576, 7, 7, 0, 0, 5576, 1142, 1, 0, 0, 0, 5577, 5578, 7, 16, 0, 0, 5578, 5579, 7, 5, 0, 0, 5579, 5580, 7, 7, 0, 0, 5580, 5581, 7, 12, 0, 0, 5581, 1144, 1, 0, 0, 0, 5582, 5583, 7, 9, 0, 0, 5583, 5584, 7, 17, 0, 0, 5584, 5585, 7, 7, 0, 0, 5585, 5586, 7, 20, 0, 0, 5586, 1146, 1, 0, 0, 0, 5587, 5588, 7, 14, 0, 0, 5588, 5589, 7, 19, 0, 0, 5589, 5590, 7, 9, 0, 0, 5590, 5591, 7, 20, 0, 0, 5591, 1148, 1, 0, 0, 0, 5592, 5593, 7, 16, 0, 0, 5593, 5594, 7, 5, 0, 0, 5594, 5595, 7, 7, 0, 0, 5595, 5596, 7, 20, 0, 0, 5596, 1150, 1, 0, 0, 0, 5597, 5598, 7, 5, 0, 0, 5598, 5599, 7, 9, 0, 0, 5599, 5600, 7, 17, 0, 0, 5600, 5601, 7, 7, 0, 0, 5601, 5602, 7, 20, 0, 0, 5602, 1152, 1, 0, 0, 0, 5603, 5604, 7, 5, 0, 0, 5604, 5605, 7, 14, 0, 0, 5605, 5606, 7, 19, 0, 0, 5606, 5607, 7, 9, 0, 0, 5607, 5608, 7, 20, 0, 0, 5608, 1154, 1, 0, 0, 0, 5609, 5610, 7, 5, 0, 0, 5610, 5611, 7, 16, 0, 0, 5611, 5612, 7, 5, 0, 0, 5612, 5613, 7, 7, 0, 0, 5613, 5614, 7, 20, 0, 0, 5614, 1156, 1, 0, 0, 0, 5615, 5616, 7, 18, 0, 0, 5616, 5617, 7, 17, 0, 0, 5617, 5618, 7, 16, 0, 0, 5618, 5619, 5, 95, 0, 0, 5619, 5620, 7, 6, 0, 0, 5620, 5621, 7, 10, 0, 0, 5621, 5622, 7, 7, 0, 0, 5622, 5623, 7, 23, 0, 0, 5623, 5624, 7, 16, 0, 0, 5624, 5625, 7, 20, 0, 0, 5625, 1158, 1, 0, 0, 0, 5626, 5627, 7, 14, 0, 0, 5627, 5628, 7, 20, 0, 0, 5628, 5629, 7, 5, 0, 0, 5629, 5630, 7, 13, 0, 0, 5630, 5631, 5, 95, 0, 0, 5631, 5632, 7, 6, 0, 0, 5632, 5633, 7, 10, 0, 0, 5633, 5634, 7, 7, 0, 0, 5634, 5635, 7, 23, 0, 0, 5635, 5636, 7, 16, 0, 0, 5636, 5637, 7, 20, 0, 0, 5637, 1160, 1, 0, 0, 0, 5638, 5639, 7, 14, 0, 0, 5639, 5640, 7, 20, 0, 0, 5640, 5641, 7, 5, 0, 0, 5641, 5642, 7, 13, 0, 0, 5642, 5643, 7, 5, 0, 0, 5643, 5644, 7, 14, 0, 0, 5644, 5645, 7, 16, 0, 0, 5645, 5646, 7, 10, 0, 0, 5646, 5647, 7, 13, 0, 0, 5647, 5648, 5, 95, 0, 0, 5648, 5649, 7, 6, 0, 0, 5649, 5650, 7, 10, 0, 0, 5650, 5651, 7, 7, 0, 0, 5651, 5652, 7, 23, 0, 0, 5652, 5653, 7, 16, 0, 0, 5653, 5654, 7, 20, 0, 0, 5654, 1162, 1, 0, 0, 0, 5655, 5656, 7, 6, 0, 0, 5656, 5657, 7, 19, 0, 0, 5657, 5658, 7, 28, 0, 0, 5658, 5659, 7, 10, 0, 0, 5659, 5660, 7, 13, 0, 0, 5660, 1164, 1, 0, 0, 0, 5661, 5662, 7, 19, 0, 0, 5662, 5663, 7, 14, 0, 0, 5663, 5664, 7, 16, 0, 0, 5664, 5665, 7, 10, 0, 0, 5665, 5666, 7, 16, 0, 0, 5666, 5667, 5, 95, 0, 0, 5667, 5668, 7, 6, 0, 0, 5668, 5669, 7, 10, 0, 0, 5669, 5670, 7, 7, 0, 0, 5670, 5671, 7, 23, 0, 0, 5671, 5672, 7, 16, 0, 0, 5672, 5673, 7, 20, 0, 0, 5673, 1166, 1, 0, 0, 0, 5674, 5675, 7, 22, 0, 0, 5675, 5676, 7, 24, 0, 0, 5676, 5677, 7, 24, 0, 0, 5677, 5678, 7, 10, 0, 0, 5678, 5679, 7, 13, 0, 0, 5679, 1168, 1, 0, 0, 0, 5680, 5681, 7, 5, 0, 0, 5681, 5682, 7, 9, 0, 0, 5682, 5683, 7, 14, 0, 0, 5683, 5684, 7, 17, 0, 0, 5684, 5685, 7, 17, 0, 0, 5685, 1170, 1, 0, 0, 0, 5686, 5687, 7, 18, 0, 0, 5687, 5688, 7, 16, 0, 0, 5688, 5689, 7, 13, 0, 0, 5689, 5690, 7, 17, 0, 0, 5690, 5691, 7, 15, 0, 0, 5691, 1172, 1, 0, 0, 0, 5692, 5693, 7, 14, 0, 0, 5693, 5694, 7, 20, 0, 0, 5694, 5695, 7, 13, 0, 0, 5695, 1174, 1, 0, 0, 0, 5696, 5697, 7, 14, 0, 0, 5697, 5698, 7, 19, 0, 0, 5698, 5699, 7, 7, 0, 0, 5699, 5700, 7, 14, 0, 0, 5700, 5701, 7, 5, 0, 0, 5701, 5702, 7, 16, 0, 0, 5702, 1176, 1, 0, 0, 0, 5703, 5704, 7, 14, 0, 0, 5704, 5705, 7, 19, 0, 0, 5705, 5706, 7, 7, 0, 0, 5706, 5707, 7, 14, 0, 0, 5707, 5708, 7, 5, 0, 0, 5708, 5709, 7, 16, 0, 0, 5709, 5710, 5, 95, 0, 0, 5710, 5711, 7, 28, 0, 0, 5711, 5712, 7, 9, 0, 0, 5712, 1178, 1, 0, 0, 0, 5713, 5714, 7, 25, 0, 0, 5714, 5715, 7, 19, 0, 0, 5715, 5716, 7, 13, 0, 0, 5716, 5717, 7, 15, 0, 0, 5717, 5718, 7, 5, 0, 0, 5718, 5719, 7, 16, 0, 0, 5719, 1180, 1, 0, 0, 0, 5720, 5721, 7, 17, 0, 0, 5721, 5722, 7, 7, 0, 0, 5722, 5723, 7, 17, 0, 0, 5723, 5724, 7, 16, 0, 0, 5724, 5725, 7, 14, 0, 0, 5725, 5726, 7, 5, 0, 0, 5726, 5727, 7, 24, 0, 0, 5727, 1182, 1, 0, 0, 0, 5728, 5729, 7, 6, 0, 0, 5729, 5730, 7, 10, 0, 0, 5730, 5731, 7, 7, 0, 0, 5731, 5732, 7, 23, 0, 0, 5732, 5733, 7, 16, 0, 0, 5733, 5734, 7, 20, 0, 0, 5734, 1184, 1, 0, 0, 0, 5735, 5736, 7, 6, 0, 0, 5736, 5737, 7, 24, 0, 0, 5737, 5738, 7, 5, 0, 0, 5738, 5739, 7, 12, 0, 0, 5739, 1186, 1, 0, 0, 0, 5740, 5741, 7, 6, 0, 0, 5741, 5742, 7, 16, 0, 0, 5742, 5743, 7, 13, 0, 0, 5743, 5744, 7, 17, 0, 0, 5744, 5745, 7, 15, 0, 0, 5745, 1188, 1, 0, 0, 0, 5746, 5747, 7, 15, 0, 0, 5747, 5748, 7, 12, 0, 0, 5748, 5749, 5, 53, 0, 0, 5749, 1190, 1, 0, 0, 0, 5750, 5751, 7, 24, 0, 0, 5751, 5752, 7, 5, 0, 0, 5752, 5753, 7, 13, 0, 0, 5753, 5754, 7, 9, 0, 0, 5754, 5755, 7, 10, 0, 0, 5755, 5756, 5, 95, 0, 0, 5756, 5757, 7, 17, 0, 0, 5757, 5758, 7, 12, 0, 0, 5758, 5759, 7, 10, 0, 0, 5759, 5760, 7, 7, 0, 0, 5760, 5761, 7, 16, 0, 0, 5761, 1192, 1, 0, 0, 0, 5762, 5763, 7, 24, 0, 0, 5763, 5764, 7, 23, 0, 0, 5764, 5765, 5, 95, 0, 0, 5765, 5766, 7, 14, 0, 0, 5766, 5767, 7, 6, 0, 0, 5767, 5768, 7, 17, 0, 0, 5768, 5769, 7, 10, 0, 0, 5769, 5770, 7, 7, 0, 0, 5770, 5771, 7, 16, 0, 0, 5771, 5772, 5, 95, 0, 0, 5772, 5773, 7, 10, 0, 0, 5773, 5774, 7, 7, 0, 0, 5774, 5775, 7, 14, 0, 0, 5775, 5776, 7, 19, 0, 0, 5776, 5777, 7, 12, 0, 0, 5777, 5778, 7, 17, 0, 0, 5778, 5779, 7, 7, 0, 0, 5779, 5780, 7, 23, 0, 0, 5780, 1194, 1, 0, 0, 0, 5781, 5782, 7, 29, 0, 0, 5782, 5783, 7, 22, 0, 0, 5783, 5784, 7, 19, 0, 0, 5784, 5785, 7, 16, 0, 0, 5785, 5786, 7, 10, 0, 0, 5786, 5787, 5, 95, 0, 0, 5787, 5788, 7, 17, 0, 0, 5788, 5789, 7, 12, 0, 0, 5789, 5790, 7, 10, 0, 0, 5790, 5791, 7, 7, 0, 0, 5791, 5792, 7, 16, 0, 0, 5792, 1196, 1, 0, 0, 0, 5793, 5794, 7, 29, 0, 0, 5794, 5795, 7, 22, 0, 0, 5795, 5796, 7, 19, 0, 0, 5796, 5797, 7, 16, 0, 0, 5797, 5798, 7, 10, 0, 0, 5798, 5799, 5, 95, 0, 0, 5799, 5800, 7, 6, 0, 0, 5800, 5801, 7, 17, 0, 0, 5801, 5802, 7, 16, 0, 0, 5802, 5803, 7, 10, 0, 0, 5803, 5804, 7, 13, 0, 0, 5804, 5805, 7, 5, 0, 0, 5805, 5806, 7, 6, 0, 0, 5806, 1198, 1, 0, 0, 0, 5807, 5808, 7, 29, 0, 0, 5808, 5809, 7, 22, 0, 0, 5809, 5810, 7, 19, 0, 0, 5810, 5811, 7, 16, 0, 0, 5811, 5812, 7, 10, 0, 0, 5812, 5813, 5, 95, 0, 0, 5813, 5814, 7, 7, 0, 0, 5814, 5815, 7, 22, 0, 0, 5815, 5816, 7, 6, 0, 0, 5816, 5817, 7, 6, 0, 0, 5817, 5818, 7, 5, 0, 0, 5818, 5819, 7, 18, 0, 0, 5819, 5820, 7, 6, 0, 0, 5820, 5821, 7, 10, 0, 0, 5821, 1200, 1, 0, 0, 0, 5822, 5823, 7, 13, 0, 0, 5823, 5824, 7, 10, 0, 0, 5824, 5825, 7, 23, 0, 0, 5825, 5826, 7, 10, 0, 0, 5826, 5827, 7, 26, 0, 0, 5827, 5828, 7, 24, 0, 0, 5828, 5829, 5, 95, 0, 0, 5829, 5830, 7, 14, 0, 0, 5830, 5831, 7, 19, 0, 0, 5831, 5832, 7, 22, 0, 0, 5832, 5833, 7, 7, 0, 0, 5833, 5834, 7, 16, 0, 0, 5834, 1202, 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, 17, 0, 0, 5843, 5844, 7, 7, 0, 0, 5844, 5845, 7, 9, 0, 0, 5845, 5846, 7, 16, 0, 0, 5846, 5847, 7, 13, 0, 0, 5847, 1204, 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, 6, 0, 0, 5856, 5857, 7, 17, 0, 0, 5857, 5858, 7, 21, 0, 0, 5858, 5859, 7, 10, 0, 0, 5859, 1206, 1, 0, 0, 0, 5860, 5861, 7, 13, 0, 0, 5861, 5862, 7, 10, 0, 0, 5862, 5863, 7, 23, 0, 0, 5863, 5864, 7, 10, 0, 0, 5864, 5865, 7, 26, 0, 0, 5865, 5866, 7, 24, 0, 0, 5866, 5867, 5, 95, 0, 0, 5867, 5868, 7, 15, 0, 0, 5868, 5869, 7, 5, 0, 0, 5869, 5870, 7, 16, 0, 0, 5870, 5871, 7, 14, 0, 0, 5871, 5872, 7, 20, 0, 0, 5872, 1208, 1, 0, 0, 0, 5873, 5874, 7, 13, 0, 0, 5874, 5875, 7, 10, 0, 0, 5875, 5876, 7, 23, 0, 0, 5876, 5877, 7, 10, 0, 0, 5877, 5878, 7, 26, 0, 0, 5878, 5879, 7, 24, 0, 0, 5879, 5880, 5, 95, 0, 0, 5880, 5881, 7, 15, 0, 0, 5881, 5882, 7, 5, 0, 0, 5882, 5883, 7, 16, 0, 0, 5883, 5884, 7, 14, 0, 0, 5884, 5885, 7, 20, 0, 0, 5885, 5886, 7, 10, 0, 0, 5886, 5887, 7, 9, 0, 0, 5887, 1210, 1, 0, 0, 0, 5888, 5889, 7, 13, 0, 0, 5889, 5890, 7, 10, 0, 0, 5890, 5891, 7, 23, 0, 0, 5891, 5892, 7, 10, 0, 0, 5892, 5893, 7, 26, 0, 0, 5893, 5894, 7, 24, 0, 0, 5894, 5895, 5, 95, 0, 0, 5895, 5896, 7, 13, 0, 0, 5896, 5897, 7, 10, 0, 0, 5897, 5898, 7, 24, 0, 0, 5898, 5899, 7, 6, 0, 0, 5899, 5900, 7, 5, 0, 0, 5900, 5901, 7, 14, 0, 0, 5901, 5902, 7, 10, 0, 0, 5902, 1212, 1, 0, 0, 0, 5903, 5904, 7, 13, 0, 0, 5904, 5905, 7, 10, 0, 0, 5905, 5906, 7, 23, 0, 0, 5906, 5907, 7, 10, 0, 0, 5907, 5908, 7, 26, 0, 0, 5908, 5909, 7, 24, 0, 0, 5909, 5910, 5, 95, 0, 0, 5910, 5911, 7, 9, 0, 0, 5911, 5912, 7, 24, 0, 0, 5912, 5913, 7, 6, 0, 0, 5913, 5914, 7, 17, 0, 0, 5914, 5915, 7, 16, 0, 0, 5915, 5916, 5, 95, 0, 0, 5916, 5917, 7, 16, 0, 0, 5917, 5918, 7, 19, 0, 0, 5918, 5919, 5, 95, 0, 0, 5919, 5920, 7, 5, 0, 0, 5920, 5921, 7, 13, 0, 0, 5921, 5922, 7, 13, 0, 0, 5922, 5923, 7, 5, 0, 0, 5923, 5924, 7, 8, 0, 0, 5924, 1214, 1, 0, 0, 0, 5925, 5926, 7, 13, 0, 0, 5926, 5927, 7, 10, 0, 0, 5927, 5928, 7, 23, 0, 0, 5928, 5929, 7, 10, 0, 0, 5929, 5930, 7, 26, 0, 0, 5930, 5931, 7, 24, 0, 0, 5931, 5932, 5, 95, 0, 0, 5932, 5933, 7, 9, 0, 0, 5933, 5934, 7, 24, 0, 0, 5934, 5935, 7, 6, 0, 0, 5935, 5936, 7, 17, 0, 0, 5936, 5937, 7, 16, 0, 0, 5937, 5938, 5, 95, 0, 0, 5938, 5939, 7, 16, 0, 0, 5939, 5940, 7, 19, 0, 0, 5940, 5941, 5, 95, 0, 0, 5941, 5942, 7, 16, 0, 0, 5942, 5943, 7, 5, 0, 0, 5943, 5944, 7, 18, 0, 0, 5944, 5945, 7, 6, 0, 0, 5945, 5946, 7, 10, 0, 0, 5946, 1216, 1, 0, 0, 0, 5947, 5948, 7, 13, 0, 0, 5948, 5949, 7, 10, 0, 0, 5949, 5950, 7, 23, 0, 0, 5950, 5951, 7, 10, 0, 0, 5951, 5952, 7, 26, 0, 0, 5952, 5953, 7, 24, 0, 0, 5953, 5954, 5, 95, 0, 0, 5954, 5955, 7, 9, 0, 0, 5955, 5956, 7, 22, 0, 0, 5956, 5957, 7, 18, 0, 0, 5957, 5958, 7, 9, 0, 0, 5958, 5959, 7, 16, 0, 0, 5959, 5960, 7, 13, 0, 0, 5960, 1218, 1, 0, 0, 0, 5961, 5962, 7, 13, 0, 0, 5962, 5963, 7, 10, 0, 0, 5963, 5964, 7, 24, 0, 0, 5964, 5965, 7, 10, 0, 0, 5965, 5966, 7, 5, 0, 0, 5966, 5967, 7, 16, 0, 0, 5967, 1220, 1, 0, 0, 0, 5968, 5969, 7, 13, 0, 0, 5969, 5970, 7, 24, 0, 0, 5970, 5971, 7, 5, 0, 0, 5971, 5972, 7, 12, 0, 0, 5972, 1222, 1, 0, 0, 0, 5973, 5974, 7, 13, 0, 0, 5974, 5975, 7, 16, 0, 0, 5975, 5976, 7, 13, 0, 0, 5976, 5977, 7, 17, 0, 0, 5977, 5978, 7, 15, 0, 0, 5978, 1224, 1, 0, 0, 0, 5979, 5980, 7, 9, 0, 0, 5980, 5981, 7, 24, 0, 0, 5981, 5982, 7, 6, 0, 0, 5982, 5983, 7, 17, 0, 0, 5983, 5984, 7, 16, 0, 0, 5984, 5985, 5, 95, 0, 0, 5985, 5986, 7, 24, 0, 0, 5986, 5987, 7, 5, 0, 0, 5987, 5988, 7, 13, 0, 0, 5988, 5989, 7, 16, 0, 0, 5989, 1226, 1, 0, 0, 0, 5990, 5991, 7, 9, 0, 0, 5991, 5992, 7, 16, 0, 0, 5992, 5993, 7, 5, 0, 0, 5993, 5994, 7, 13, 0, 0, 5994, 5995, 7, 16, 0, 0, 5995, 5996, 7, 9, 0, 0, 5996, 5997, 5, 95, 0, 0, 5997, 5998, 7, 28, 0, 0, 5998, 5999, 7, 17, 0, 0, 5999, 6000, 7, 16, 0, 0, 6000, 6001, 7, 20, 0, 0, 6001, 1228, 1, 0, 0, 0, 6002, 6003, 7, 9, 0, 0, 6003, 6004, 7, 16, 0, 0, 6004, 6005, 7, 13, 0, 0, 6005, 6006, 7, 17, 0, 0, 6006, 6007, 7, 7, 0, 0, 6007, 6008, 7, 23, 0, 0, 6008, 6009, 5, 95, 0, 0, 6009, 6010, 7, 16, 0, 0, 6010, 6011, 7, 19, 0, 0, 6011, 6012, 5, 95, 0, 0, 6012, 6013, 7, 5, 0, 0, 6013, 6014, 7, 13, 0, 0, 6014, 6015, 7, 13, 0, 0, 6015, 6016, 7, 5, 0, 0, 6016, 6017, 7, 8, 0, 0, 6017, 1230, 1, 0, 0, 0, 6018, 6019, 7, 9, 0, 0, 6019, 6020, 7, 16, 0, 0, 6020, 6021, 7, 13, 0, 0, 6021, 6022, 7, 17, 0, 0, 6022, 6023, 7, 7, 0, 0, 6023, 6024, 7, 23, 0, 0, 6024, 6025, 5, 95, 0, 0, 6025, 6026, 7, 16, 0, 0, 6026, 6027, 7, 19, 0, 0, 6027, 6028, 5, 95, 0, 0, 6028, 6029, 7, 16, 0, 0, 6029, 6030, 7, 5, 0, 0, 6030, 6031, 7, 18, 0, 0, 6031, 6032, 7, 6, 0, 0, 6032, 6033, 7, 10, 0, 0, 6033, 1232, 1, 0, 0, 0, 6034, 6035, 7, 9, 0, 0, 6035, 6036, 7, 16, 0, 0, 6036, 6037, 7, 13, 0, 0, 6037, 6038, 7, 24, 0, 0, 6038, 6039, 7, 19, 0, 0, 6039, 6040, 7, 9, 0, 0, 6040, 1234, 1, 0, 0, 0, 6041, 6042, 7, 9, 0, 0, 6042, 6043, 7, 22, 0, 0, 6043, 6044, 7, 18, 0, 0, 6044, 6045, 7, 9, 0, 0, 6045, 6046, 7, 16, 0, 0, 6046, 6047, 7, 13, 0, 0, 6047, 1236, 1, 0, 0, 0, 6048, 6049, 7, 16, 0, 0, 6049, 6050, 7, 19, 0, 0, 6050, 6051, 5, 95, 0, 0, 6051, 6052, 7, 5, 0, 0, 6052, 6053, 7, 9, 0, 0, 6053, 6054, 7, 14, 0, 0, 6054, 6055, 7, 17, 0, 0, 6055, 6056, 7, 17, 0, 0, 6056, 1238, 1, 0, 0, 0, 6057, 6058, 7, 16, 0, 0, 6058, 6059, 7, 19, 0, 0, 6059, 6060, 5, 95, 0, 0, 6060, 6061, 7, 20, 0, 0, 6061, 6062, 7, 10, 0, 0, 6062, 6063, 7, 26, 0, 0, 6063, 1240, 1, 0, 0, 0, 6064, 6065, 7, 16, 0, 0, 6065, 6066, 7, 13, 0, 0, 6066, 6067, 7, 5, 0, 0, 6067, 6068, 7, 7, 0, 0, 6068, 6069, 7, 9, 0, 0, 6069, 6070, 7, 6, 0, 0, 6070, 6071, 7, 5, 0, 0, 6071, 6072, 7, 16, 0, 0, 6072, 6073, 7, 10, 0, 0, 6073, 1242, 1, 0, 0, 0, 6074, 6075, 7, 22, 0, 0, 6075, 6076, 7, 7, 0, 0, 6076, 6077, 7, 17, 0, 0, 6077, 6078, 7, 9, 0, 0, 6078, 6079, 7, 16, 0, 0, 6079, 6080, 7, 13, 0, 0, 6080, 1244, 1, 0, 0, 0, 6081, 6082, 7, 5, 0, 0, 6082, 6083, 7, 23, 0, 0, 6083, 6084, 7, 10, 0, 0, 6084, 1246, 1, 0, 0, 0, 6085, 6086, 7, 14, 0, 0, 6086, 6087, 7, 6, 0, 0, 6087, 6088, 7, 19, 0, 0, 6088, 6089, 7, 14, 0, 0, 6089, 6090, 7, 21, 0, 0, 6090, 6091, 5, 95, 0, 0, 6091, 6092, 7, 16, 0, 0, 6092, 6093, 7, 17, 0, 0, 6093, 6094, 7, 15, 0, 0, 6094, 6095, 7, 10, 0, 0, 6095, 6096, 7, 9, 0, 0, 6096, 6097, 7, 16, 0, 0, 6097, 6098, 7, 5, 0, 0, 6098, 6099, 7, 15, 0, 0, 6099, 6100, 7, 24, 0, 0, 6100, 1248, 1, 0, 0, 0, 6101, 6102, 7, 12, 0, 0, 6102, 6103, 7, 5, 0, 0, 6103, 6104, 7, 16, 0, 0, 6104, 6105, 7, 10, 0, 0, 6105, 6106, 5, 95, 0, 0, 6106, 6107, 7, 18, 0, 0, 6107, 6108, 7, 17, 0, 0, 6108, 6109, 7, 7, 0, 0, 6109, 1250, 1, 0, 0, 0, 6110, 6111, 7, 12, 0, 0, 6111, 6112, 7, 5, 0, 0, 6112, 6113, 7, 16, 0, 0, 6113, 6114, 7, 10, 0, 0, 6114, 6115, 5, 95, 0, 0, 6115, 6116, 7, 24, 0, 0, 6116, 6117, 7, 5, 0, 0, 6117, 6118, 7, 13, 0, 0, 6118, 6119, 7, 16, 0, 0, 6119, 1252, 1, 0, 0, 0, 6120, 6121, 7, 12, 0, 0, 6121, 6122, 7, 5, 0, 0, 6122, 6123, 7, 16, 0, 0, 6123, 6124, 7, 10, 0, 0, 6124, 6125, 5, 95, 0, 0, 6125, 6126, 7, 16, 0, 0, 6126, 6127, 7, 13, 0, 0, 6127, 6128, 7, 22, 0, 0, 6128, 6129, 7, 7, 0, 0, 6129, 6130, 7, 14, 0, 0, 6130, 1254, 1, 0, 0, 0, 6131, 6132, 7, 17, 0, 0, 6132, 6133, 7, 9, 0, 0, 6133, 6134, 7, 25, 0, 0, 6134, 6135, 7, 17, 0, 0, 6135, 6136, 7, 7, 0, 0, 6136, 6137, 7, 17, 0, 0, 6137, 6138, 7, 16, 0, 0, 6138, 6139, 7, 10, 0, 0, 6139, 1256, 1, 0, 0, 0, 6140, 6141, 7, 30, 0, 0, 6141, 6142, 7, 22, 0, 0, 6142, 6143, 7, 9, 0, 0, 6143, 6144, 7, 16, 0, 0, 6144, 6145, 7, 17, 0, 0, 6145, 6146, 7, 25, 0, 0, 6146, 6147, 7, 8, 0, 0, 6147, 6148, 5, 95, 0, 0, 6148, 6149, 7, 12, 0, 0, 6149, 6150, 7, 5, 0, 0, 6150, 6151, 7, 8, 0, 0, 6151, 6152, 7, 9, 0, 0, 6152, 1258, 1, 0, 0, 0, 6153, 6154, 7, 30, 0, 0, 6154, 6155, 7, 22, 0, 0, 6155, 6156, 7, 9, 0, 0, 6156, 6157, 7, 16, 0, 0, 6157, 6158, 7, 17, 0, 0, 6158, 6159, 7, 25, 0, 0, 6159, 6160, 7, 8, 0, 0, 6160, 6161, 5, 95, 0, 0, 6161, 6162, 7, 20, 0, 0, 6162, 6163, 7, 19, 0, 0, 6163, 6164, 7, 22, 0, 0, 6164, 6165, 7, 13, 0, 0, 6165, 6166, 7, 9, 0, 0, 6166, 1260, 1, 0, 0, 0, 6167, 6168, 7, 30, 0, 0, 6168, 6169, 7, 22, 0, 0, 6169, 6170, 7, 9, 0, 0, 6170, 6171, 7, 16, 0, 0, 6171, 6172, 7, 17, 0, 0, 6172, 6173, 7, 25, 0, 0, 6173, 6174, 7, 8, 0, 0, 6174, 6175, 5, 95, 0, 0, 6175, 6176, 7, 17, 0, 0, 6176, 6177, 7, 7, 0, 0, 6177, 6178, 7, 16, 0, 0, 6178, 6179, 7, 10, 0, 0, 6179, 6180, 7, 13, 0, 0, 6180, 6181, 7, 27, 0, 0, 6181, 6182, 7, 5, 0, 0, 6182, 6183, 7, 6, 0, 0, 6183, 1262, 1, 0, 0, 0, 6184, 6185, 7, 15, 0, 0, 6185, 6186, 7, 5, 0, 0, 6186, 6187, 7, 21, 0, 0, 6187, 6188, 7, 10, 0, 0, 6188, 6189, 5, 95, 0, 0, 6189, 6190, 7, 12, 0, 0, 6190, 6191, 7, 5, 0, 0, 6191, 6192, 7, 16, 0, 0, 6192, 6193, 7, 10, 0, 0, 6193, 1264, 1, 0, 0, 0, 6194, 6195, 7, 15, 0, 0, 6195, 6196, 7, 5, 0, 0, 6196, 6197, 7, 21, 0, 0, 6197, 6198, 7, 10, 0, 0, 6198, 6199, 5, 95, 0, 0, 6199, 6200, 7, 17, 0, 0, 6200, 6201, 7, 7, 0, 0, 6201, 6202, 7, 16, 0, 0, 6202, 6203, 7, 10, 0, 0, 6203, 6204, 7, 13, 0, 0, 6204, 6205, 7, 27, 0, 0, 6205, 6206, 7, 5, 0, 0, 6206, 6207, 7, 6, 0, 0, 6207, 1266, 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, 1268, 1, 0, 0, 0, 6218, 6219, 7, 15, 0, 0, 6219, 6220, 7, 5, 0, 0, 6220, 6221, 7, 21, 0, 0, 6221, 6222, 7, 10, 0, 0, 6222, 6223, 5, 95, 0, 0, 6223, 6224, 7, 16, 0, 0, 6224, 6225, 7, 17, 0, 0, 6225, 6226, 7, 15, 0, 0, 6226, 6227, 7, 10, 0, 0, 6227, 6228, 7, 9, 0, 0, 6228, 6229, 7, 16, 0, 0, 6229, 6230, 7, 5, 0, 0, 6230, 6231, 7, 15, 0, 0, 6231, 6232, 7, 24, 0, 0, 6232, 1270, 1, 0, 0, 0, 6233, 6234, 7, 15, 0, 0, 6234, 6235, 7, 5, 0, 0, 6235, 6236, 7, 21, 0, 0, 6236, 6237, 7, 10, 0, 0, 6237, 6238, 5, 95, 0, 0, 6238, 6239, 7, 16, 0, 0, 6239, 6240, 7, 17, 0, 0, 6240, 6241, 7, 15, 0, 0, 6241, 6242, 7, 10, 0, 0, 6242, 6243, 7, 9, 0, 0, 6243, 6244, 7, 16, 0, 0, 6244, 6245, 7, 5, 0, 0, 6245, 6246, 7, 15, 0, 0, 6246, 6247, 7, 24, 0, 0, 6247, 6248, 7, 16, 0, 0, 6248, 6249, 7, 11, 0, 0, 6249, 1272, 1, 0, 0, 0, 6250, 6251, 7, 7, 0, 0, 6251, 6252, 7, 19, 0, 0, 6252, 6253, 7, 28, 0, 0, 6253, 1274, 1, 0, 0, 0, 6254, 6255, 7, 9, 0, 0, 6255, 6256, 7, 16, 0, 0, 6256, 6257, 7, 5, 0, 0, 6257, 6258, 7, 16, 0, 0, 6258, 6259, 7, 10, 0, 0, 6259, 6260, 7, 15, 0, 0, 6260, 6261, 7, 10, 0, 0, 6261, 6262, 7, 7, 0, 0, 6262, 6263, 7, 16, 0, 0, 6263, 6264, 5, 95, 0, 0, 6264, 6265, 7, 16, 0, 0, 6265, 6266, 7, 17, 0, 0, 6266, 6267, 7, 15, 0, 0, 6267, 6268, 7, 10, 0, 0, 6268, 6269, 7, 9, 0, 0, 6269, 6270, 7, 16, 0, 0, 6270, 6271, 7, 5, 0, 0, 6271, 6272, 7, 15, 0, 0, 6272, 6273, 7, 24, 0, 0, 6273, 1276, 1, 0, 0, 0, 6274, 6275, 7, 16, 0, 0, 6275, 6276, 7, 17, 0, 0, 6276, 6277, 7, 15, 0, 0, 6277, 6278, 7, 10, 0, 0, 6278, 6279, 7, 19, 0, 0, 6279, 6280, 7, 25, 0, 0, 6280, 6281, 7, 12, 0, 0, 6281, 6282, 7, 5, 0, 0, 6282, 6283, 7, 8, 0, 0, 6283, 1278, 1, 0, 0, 0, 6284, 6285, 7, 16, 0, 0, 6285, 6286, 7, 13, 0, 0, 6286, 6287, 7, 5, 0, 0, 6287, 6288, 7, 7, 0, 0, 6288, 6289, 7, 9, 0, 0, 6289, 6290, 7, 5, 0, 0, 6290, 6291, 7, 14, 0, 0, 6291, 6292, 7, 16, 0, 0, 6292, 6293, 7, 17, 0, 0, 6293, 6294, 7, 19, 0, 0, 6294, 6295, 7, 7, 0, 0, 6295, 6296, 5, 95, 0, 0, 6296, 6297, 7, 16, 0, 0, 6297, 6298, 7, 17, 0, 0, 6298, 6299, 7, 15, 0, 0, 6299, 6300, 7, 10, 0, 0, 6300, 6301, 7, 9, 0, 0, 6301, 6302, 7, 16, 0, 0, 6302, 6303, 7, 5, 0, 0, 6303, 6304, 7, 15, 0, 0, 6304, 6305, 7, 24, 0, 0, 6305, 1280, 1, 0, 0, 0, 6306, 6307, 7, 16, 0, 0, 6307, 6308, 7, 19, 0, 0, 6308, 6309, 5, 95, 0, 0, 6309, 6310, 7, 16, 0, 0, 6310, 6311, 7, 17, 0, 0, 6311, 6312, 7, 15, 0, 0, 6312, 6313, 7, 10, 0, 0, 6313, 6314, 7, 9, 0, 0, 6314, 6315, 7, 16, 0, 0, 6315, 6316, 7, 5, 0, 0, 6316, 6317, 7, 15, 0, 0, 6317, 6318, 7, 24, 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, 14, 0, 0, 6323, 6324, 7, 20, 0, 0, 6324, 6325, 7, 5, 0, 0, 6325, 6326, 7, 13, 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, 12, 0, 0, 6331, 6332, 7, 5, 0, 0, 6332, 6333, 7, 16, 0, 0, 6333, 6334, 7, 10, 0, 0, 6334, 1286, 1, 0, 0, 0, 6335, 6336, 7, 16, 0, 0, 6336, 6337, 7, 19, 0, 0, 6337, 6338, 5, 95, 0, 0, 6338, 6339, 7, 7, 0, 0, 6339, 6340, 7, 22, 0, 0, 6340, 6341, 7, 15, 0, 0, 6341, 6342, 7, 18, 0, 0, 6342, 6343, 7, 10, 0, 0, 6343, 6344, 7, 13, 0, 0, 6344, 1288, 1, 0, 0, 0, 6345, 6349, 3, 1291, 643, 0, 6346, 6348, 3, 1293, 644, 0, 6347, 6346, 1, 0, 0, 0, 6348, 6351, 1, 0, 0, 0, 6349, 6347, 1, 0, 0, 0, 6349, 6350, 1, 0, 0, 0, 6350, 1290, 1, 0, 0, 0, 6351, 6349, 1, 0, 0, 0, 6352, 6359, 7, 31, 0, 0, 6353, 6354, 7, 32, 0, 0, 6354, 6359, 4, 643, 6, 0, 6355, 6356, 7, 33, 0, 0, 6356, 6357, 7, 34, 0, 0, 6357, 6359, 4, 643, 7, 0, 6358, 6352, 1, 0, 0, 0, 6358, 6353, 1, 0, 0, 0, 6358, 6355, 1, 0, 0, 0, 6359, 1292, 1, 0, 0, 0, 6360, 6363, 3, 1295, 645, 0, 6361, 6363, 5, 36, 0, 0, 6362, 6360, 1, 0, 0, 0, 6362, 6361, 1, 0, 0, 0, 6363, 1294, 1, 0, 0, 0, 6364, 6367, 3, 1291, 643, 0, 6365, 6367, 7, 0, 0, 0, 6366, 6364, 1, 0, 0, 0, 6366, 6365, 1, 0, 0, 0, 6367, 1296, 1, 0, 0, 0, 6368, 6369, 3, 1299, 647, 0, 6369, 6370, 5, 34, 0, 0, 6370, 1298, 1, 0, 0, 0, 6371, 6377, 5, 34, 0, 0, 6372, 6373, 5, 34, 0, 0, 6373, 6376, 5, 34, 0, 0, 6374, 6376, 8, 35, 0, 0, 6375, 6372, 1, 0, 0, 0, 6375, 6374, 1, 0, 0, 0, 6376, 6379, 1, 0, 0, 0, 6377, 6375, 1, 0, 0, 0, 6377, 6378, 1, 0, 0, 0, 6378, 1300, 1, 0, 0, 0, 6379, 6377, 1, 0, 0, 0, 6380, 6381, 3, 1303, 649, 0, 6381, 6382, 5, 34, 0, 0, 6382, 1302, 1, 0, 0, 0, 6383, 6389, 5, 34, 0, 0, 6384, 6385, 5, 34, 0, 0, 6385, 6388, 5, 34, 0, 0, 6386, 6388, 8, 36, 0, 0, 6387, 6384, 1, 0, 0, 0, 6387, 6386, 1, 0, 0, 0, 6388, 6391, 1, 0, 0, 0, 6389, 6387, 1, 0, 0, 0, 6389, 6390, 1, 0, 0, 0, 6390, 1304, 1, 0, 0, 0, 6391, 6389, 1, 0, 0, 0, 6392, 6393, 7, 22, 0, 0, 6393, 6394, 5, 38, 0, 0, 6394, 6395, 3, 1297, 646, 0, 6395, 1306, 1, 0, 0, 0, 6396, 6397, 7, 22, 0, 0, 6397, 6398, 5, 38, 0, 0, 6398, 6399, 3, 1299, 647, 0, 6399, 1308, 1, 0, 0, 0, 6400, 6401, 7, 22, 0, 0, 6401, 6402, 5, 38, 0, 0, 6402, 6403, 3, 1301, 648, 0, 6403, 1310, 1, 0, 0, 0, 6404, 6405, 7, 22, 0, 0, 6405, 6406, 5, 38, 0, 0, 6406, 6407, 3, 1303, 649, 0, 6407, 1312, 1, 0, 0, 0, 6408, 6409, 3, 1315, 655, 0, 6409, 6410, 5, 39, 0, 0, 6410, 1314, 1, 0, 0, 0, 6411, 6417, 5, 39, 0, 0, 6412, 6413, 5, 39, 0, 0, 6413, 6416, 5, 39, 0, 0, 6414, 6416, 8, 37, 0, 0, 6415, 6412, 1, 0, 0, 0, 6415, 6414, 1, 0, 0, 0, 6416, 6419, 1, 0, 0, 0, 6417, 6415, 1, 0, 0, 0, 6417, 6418, 1, 0, 0, 0, 6418, 1316, 1, 0, 0, 0, 6419, 6417, 1, 0, 0, 0, 6420, 6421, 7, 10, 0, 0, 6421, 6422, 5, 39, 0, 0, 6422, 6423, 1, 0, 0, 0, 6423, 6424, 6, 656, 2, 0, 6424, 6425, 6, 656, 3, 0, 6425, 1318, 1, 0, 0, 0, 6426, 6427, 3, 1321, 658, 0, 6427, 6428, 5, 39, 0, 0, 6428, 1320, 1, 0, 0, 0, 6429, 6430, 7, 22, 0, 0, 6430, 6431, 5, 38, 0, 0, 6431, 6432, 3, 1315, 655, 0, 6432, 1322, 1, 0, 0, 0, 6433, 6435, 5, 36, 0, 0, 6434, 6436, 3, 1325, 660, 0, 6435, 6434, 1, 0, 0, 0, 6435, 6436, 1, 0, 0, 0, 6436, 6437, 1, 0, 0, 0, 6437, 6438, 5, 36, 0, 0, 6438, 6439, 6, 659, 4, 0, 6439, 6440, 1, 0, 0, 0, 6440, 6441, 6, 659, 5, 0, 6441, 1324, 1, 0, 0, 0, 6442, 6446, 3, 1291, 643, 0, 6443, 6445, 3, 1295, 645, 0, 6444, 6443, 1, 0, 0, 0, 6445, 6448, 1, 0, 0, 0, 6446, 6444, 1, 0, 0, 0, 6446, 6447, 1, 0, 0, 0, 6447, 1326, 1, 0, 0, 0, 6448, 6446, 1, 0, 0, 0, 6449, 6450, 3, 1329, 662, 0, 6450, 6451, 5, 39, 0, 0, 6451, 1328, 1, 0, 0, 0, 6452, 6453, 7, 18, 0, 0, 6453, 6457, 5, 39, 0, 0, 6454, 6456, 7, 38, 0, 0, 6455, 6454, 1, 0, 0, 0, 6456, 6459, 1, 0, 0, 0, 6457, 6455, 1, 0, 0, 0, 6457, 6458, 1, 0, 0, 0, 6458, 1330, 1, 0, 0, 0, 6459, 6457, 1, 0, 0, 0, 6460, 6461, 3, 1333, 664, 0, 6461, 6462, 5, 39, 0, 0, 6462, 1332, 1, 0, 0, 0, 6463, 6464, 7, 18, 0, 0, 6464, 6465, 3, 1315, 655, 0, 6465, 1334, 1, 0, 0, 0, 6466, 6467, 3, 1337, 666, 0, 6467, 6468, 5, 39, 0, 0, 6468, 1336, 1, 0, 0, 0, 6469, 6470, 7, 26, 0, 0, 6470, 6474, 5, 39, 0, 0, 6471, 6473, 7, 39, 0, 0, 6472, 6471, 1, 0, 0, 0, 6473, 6476, 1, 0, 0, 0, 6474, 6472, 1, 0, 0, 0, 6474, 6475, 1, 0, 0, 0, 6475, 1338, 1, 0, 0, 0, 6476, 6474, 1, 0, 0, 0, 6477, 6478, 3, 1341, 668, 0, 6478, 6479, 5, 39, 0, 0, 6479, 1340, 1, 0, 0, 0, 6480, 6481, 7, 26, 0, 0, 6481, 6482, 3, 1315, 655, 0, 6482, 1342, 1, 0, 0, 0, 6483, 6484, 3, 1349, 672, 0, 6484, 1344, 1, 0, 0, 0, 6485, 6486, 3, 1349, 672, 0, 6486, 6487, 5, 46, 0, 0, 6487, 6488, 5, 46, 0, 0, 6488, 6489, 1, 0, 0, 0, 6489, 6490, 6, 670, 6, 0, 6490, 1346, 1, 0, 0, 0, 6491, 6492, 3, 1349, 672, 0, 6492, 6494, 5, 46, 0, 0, 6493, 6495, 3, 1349, 672, 0, 6494, 6493, 1, 0, 0, 0, 6494, 6495, 1, 0, 0, 0, 6495, 6501, 1, 0, 0, 0, 6496, 6498, 7, 10, 0, 0, 6497, 6499, 7, 1, 0, 0, 6498, 6497, 1, 0, 0, 0, 6498, 6499, 1, 0, 0, 0, 6499, 6500, 1, 0, 0, 0, 6500, 6502, 3, 1349, 672, 0, 6501, 6496, 1, 0, 0, 0, 6501, 6502, 1, 0, 0, 0, 6502, 6520, 1, 0, 0, 0, 6503, 6504, 5, 46, 0, 0, 6504, 6510, 3, 1349, 672, 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, 6511, 3, 1349, 672, 0, 6510, 6505, 1, 0, 0, 0, 6510, 6511, 1, 0, 0, 0, 6511, 6520, 1, 0, 0, 0, 6512, 6513, 3, 1349, 672, 0, 6513, 6515, 7, 10, 0, 0, 6514, 6516, 7, 1, 0, 0, 6515, 6514, 1, 0, 0, 0, 6515, 6516, 1, 0, 0, 0, 6516, 6517, 1, 0, 0, 0, 6517, 6518, 3, 1349, 672, 0, 6518, 6520, 1, 0, 0, 0, 6519, 6491, 1, 0, 0, 0, 6519, 6503, 1, 0, 0, 0, 6519, 6512, 1, 0, 0, 0, 6520, 1348, 1, 0, 0, 0, 6521, 6523, 7, 0, 0, 0, 6522, 6521, 1, 0, 0, 0, 6523, 6524, 1, 0, 0, 0, 6524, 6522, 1, 0, 0, 0, 6524, 6525, 1, 0, 0, 0, 6525, 1350, 1, 0, 0, 0, 6526, 6527, 5, 58, 0, 0, 6527, 6531, 7, 40, 0, 0, 6528, 6530, 7, 41, 0, 0, 6529, 6528, 1, 0, 0, 0, 6530, 6533, 1, 0, 0, 0, 6531, 6529, 1, 0, 0, 0, 6531, 6532, 1, 0, 0, 0, 6532, 1352, 1, 0, 0, 0, 6533, 6531, 1, 0, 0, 0, 6534, 6535, 5, 58, 0, 0, 6535, 6536, 5, 34, 0, 0, 6536, 6544, 1, 0, 0, 0, 6537, 6538, 5, 92, 0, 0, 6538, 6543, 9, 0, 0, 0, 6539, 6540, 5, 34, 0, 0, 6540, 6543, 5, 34, 0, 0, 6541, 6543, 8, 42, 0, 0, 6542, 6537, 1, 0, 0, 0, 6542, 6539, 1, 0, 0, 0, 6542, 6541, 1, 0, 0, 0, 6543, 6546, 1, 0, 0, 0, 6544, 6542, 1, 0, 0, 0, 6544, 6545, 1, 0, 0, 0, 6545, 6547, 1, 0, 0, 0, 6546, 6544, 1, 0, 0, 0, 6547, 6548, 5, 34, 0, 0, 6548, 1354, 1, 0, 0, 0, 6549, 6551, 7, 43, 0, 0, 6550, 6549, 1, 0, 0, 0, 6551, 6552, 1, 0, 0, 0, 6552, 6550, 1, 0, 0, 0, 6552, 6553, 1, 0, 0, 0, 6553, 6554, 1, 0, 0, 0, 6554, 6555, 6, 675, 7, 0, 6555, 1356, 1, 0, 0, 0, 6556, 6558, 5, 13, 0, 0, 6557, 6559, 5, 10, 0, 0, 6558, 6557, 1, 0, 0, 0, 6558, 6559, 1, 0, 0, 0, 6559, 6562, 1, 0, 0, 0, 6560, 6562, 5, 10, 0, 0, 6561, 6556, 1, 0, 0, 0, 6561, 6560, 1, 0, 0, 0, 6562, 6563, 1, 0, 0, 0, 6563, 6564, 6, 676, 7, 0, 6564, 1358, 1, 0, 0, 0, 6565, 6566, 5, 45, 0, 0, 6566, 6567, 5, 45, 0, 0, 6567, 6571, 1, 0, 0, 0, 6568, 6570, 8, 44, 0, 0, 6569, 6568, 1, 0, 0, 0, 6570, 6573, 1, 0, 0, 0, 6571, 6569, 1, 0, 0, 0, 6571, 6572, 1, 0, 0, 0, 6572, 6574, 1, 0, 0, 0, 6573, 6571, 1, 0, 0, 0, 6574, 6575, 6, 677, 7, 0, 6575, 1360, 1, 0, 0, 0, 6576, 6577, 5, 47, 0, 0, 6577, 6578, 5, 42, 0, 0, 6578, 6601, 1, 0, 0, 0, 6579, 6581, 5, 47, 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, 6600, 3, 1361, 678, 0, 6586, 6600, 8, 45, 0, 0, 6587, 6589, 5, 47, 0, 0, 6588, 6587, 1, 0, 0, 0, 6589, 6590, 1, 0, 0, 0, 6590, 6588, 1, 0, 0, 0, 6590, 6591, 1, 0, 0, 0, 6591, 6592, 1, 0, 0, 0, 6592, 6600, 8, 45, 0, 0, 6593, 6595, 5, 42, 0, 0, 6594, 6593, 1, 0, 0, 0, 6595, 6596, 1, 0, 0, 0, 6596, 6594, 1, 0, 0, 0, 6596, 6597, 1, 0, 0, 0, 6597, 6598, 1, 0, 0, 0, 6598, 6600, 8, 45, 0, 0, 6599, 6582, 1, 0, 0, 0, 6599, 6586, 1, 0, 0, 0, 6599, 6588, 1, 0, 0, 0, 6599, 6594, 1, 0, 0, 0, 6600, 6603, 1, 0, 0, 0, 6601, 6599, 1, 0, 0, 0, 6601, 6602, 1, 0, 0, 0, 6602, 6607, 1, 0, 0, 0, 6603, 6601, 1, 0, 0, 0, 6604, 6606, 5, 42, 0, 0, 6605, 6604, 1, 0, 0, 0, 6606, 6609, 1, 0, 0, 0, 6607, 6605, 1, 0, 0, 0, 6607, 6608, 1, 0, 0, 0, 6608, 6610, 1, 0, 0, 0, 6609, 6607, 1, 0, 0, 0, 6610, 6611, 5, 42, 0, 0, 6611, 6612, 5, 47, 0, 0, 6612, 6613, 1, 0, 0, 0, 6613, 6614, 6, 678, 7, 0, 6614, 1362, 1, 0, 0, 0, 6615, 6616, 5, 47, 0, 0, 6616, 6617, 5, 42, 0, 0, 6617, 6642, 1, 0, 0, 0, 6618, 6620, 5, 47, 0, 0, 6619, 6618, 1, 0, 0, 0, 6620, 6623, 1, 0, 0, 0, 6621, 6619, 1, 0, 0, 0, 6621, 6622, 1, 0, 0, 0, 6622, 6624, 1, 0, 0, 0, 6623, 6621, 1, 0, 0, 0, 6624, 6641, 3, 1361, 678, 0, 6625, 6641, 8, 45, 0, 0, 6626, 6628, 5, 47, 0, 0, 6627, 6626, 1, 0, 0, 0, 6628, 6629, 1, 0, 0, 0, 6629, 6627, 1, 0, 0, 0, 6629, 6630, 1, 0, 0, 0, 6630, 6631, 1, 0, 0, 0, 6631, 6639, 8, 45, 0, 0, 6632, 6634, 5, 42, 0, 0, 6633, 6632, 1, 0, 0, 0, 6634, 6635, 1, 0, 0, 0, 6635, 6633, 1, 0, 0, 0, 6635, 6636, 1, 0, 0, 0, 6636, 6637, 1, 0, 0, 0, 6637, 6639, 8, 45, 0, 0, 6638, 6627, 1, 0, 0, 0, 6638, 6633, 1, 0, 0, 0, 6639, 6641, 1, 0, 0, 0, 6640, 6621, 1, 0, 0, 0, 6640, 6625, 1, 0, 0, 0, 6640, 6638, 1, 0, 0, 0, 6641, 6644, 1, 0, 0, 0, 6642, 6640, 1, 0, 0, 0, 6642, 6643, 1, 0, 0, 0, 6643, 6662, 1, 0, 0, 0, 6644, 6642, 1, 0, 0, 0, 6645, 6647, 5, 47, 0, 0, 6646, 6645, 1, 0, 0, 0, 6647, 6648, 1, 0, 0, 0, 6648, 6646, 1, 0, 0, 0, 6648, 6649, 1, 0, 0, 0, 6649, 6663, 1, 0, 0, 0, 6650, 6652, 5, 42, 0, 0, 6651, 6650, 1, 0, 0, 0, 6652, 6653, 1, 0, 0, 0, 6653, 6651, 1, 0, 0, 0, 6653, 6654, 1, 0, 0, 0, 6654, 6663, 1, 0, 0, 0, 6655, 6657, 5, 47, 0, 0, 6656, 6655, 1, 0, 0, 0, 6657, 6660, 1, 0, 0, 0, 6658, 6656, 1, 0, 0, 0, 6658, 6659, 1, 0, 0, 0, 6659, 6661, 1, 0, 0, 0, 6660, 6658, 1, 0, 0, 0, 6661, 6663, 3, 1363, 679, 0, 6662, 6646, 1, 0, 0, 0, 6662, 6651, 1, 0, 0, 0, 6662, 6658, 1, 0, 0, 0, 6662, 6663, 1, 0, 0, 0, 6663, 6664, 1, 0, 0, 0, 6664, 6665, 6, 679, 8, 0, 6665, 1364, 1, 0, 0, 0, 6666, 6678, 5, 92, 0, 0, 6667, 6677, 8, 46, 0, 0, 6668, 6672, 5, 34, 0, 0, 6669, 6671, 8, 47, 0, 0, 6670, 6669, 1, 0, 0, 0, 6671, 6674, 1, 0, 0, 0, 6672, 6670, 1, 0, 0, 0, 6672, 6673, 1, 0, 0, 0, 6673, 6675, 1, 0, 0, 0, 6674, 6672, 1, 0, 0, 0, 6675, 6677, 5, 34, 0, 0, 6676, 6667, 1, 0, 0, 0, 6676, 6668, 1, 0, 0, 0, 6677, 6680, 1, 0, 0, 0, 6678, 6676, 1, 0, 0, 0, 6678, 6679, 1, 0, 0, 0, 6679, 6688, 1, 0, 0, 0, 6680, 6678, 1, 0, 0, 0, 6681, 6685, 5, 34, 0, 0, 6682, 6684, 8, 47, 0, 0, 6683, 6682, 1, 0, 0, 0, 6684, 6687, 1, 0, 0, 0, 6685, 6683, 1, 0, 0, 0, 6685, 6686, 1, 0, 0, 0, 6686, 6689, 1, 0, 0, 0, 6687, 6685, 1, 0, 0, 0, 6688, 6681, 1, 0, 0, 0, 6688, 6689, 1, 0, 0, 0, 6689, 1366, 1, 0, 0, 0, 6690, 6691, 5, 92, 0, 0, 6691, 6692, 5, 92, 0, 0, 6692, 1368, 1, 0, 0, 0, 6693, 6694, 9, 0, 0, 0, 6694, 1370, 1, 0, 0, 0, 6695, 6696, 3, 1375, 685, 0, 6696, 6697, 5, 39, 0, 0, 6697, 6698, 1, 0, 0, 0, 6698, 6699, 6, 683, 9, 0, 6699, 1372, 1, 0, 0, 0, 6700, 6702, 3, 1375, 685, 0, 6701, 6703, 5, 92, 0, 0, 6702, 6701, 1, 0, 0, 0, 6702, 6703, 1, 0, 0, 0, 6703, 6704, 1, 0, 0, 0, 6704, 6705, 5, 0, 0, 1, 6705, 1374, 1, 0, 0, 0, 6706, 6707, 5, 39, 0, 0, 6707, 6730, 5, 39, 0, 0, 6708, 6726, 5, 92, 0, 0, 6709, 6710, 5, 120, 0, 0, 6710, 6727, 7, 39, 0, 0, 6711, 6712, 5, 117, 0, 0, 6712, 6713, 7, 39, 0, 0, 6713, 6714, 7, 39, 0, 0, 6714, 6715, 7, 39, 0, 0, 6715, 6727, 7, 39, 0, 0, 6716, 6717, 5, 85, 0, 0, 6717, 6718, 7, 39, 0, 0, 6718, 6719, 7, 39, 0, 0, 6719, 6720, 7, 39, 0, 0, 6720, 6721, 7, 39, 0, 0, 6721, 6722, 7, 39, 0, 0, 6722, 6723, 7, 39, 0, 0, 6723, 6724, 7, 39, 0, 0, 6724, 6727, 7, 39, 0, 0, 6725, 6727, 8, 48, 0, 0, 6726, 6709, 1, 0, 0, 0, 6726, 6711, 1, 0, 0, 0, 6726, 6716, 1, 0, 0, 0, 6726, 6725, 1, 0, 0, 0, 6727, 6730, 1, 0, 0, 0, 6728, 6730, 8, 49, 0, 0, 6729, 6706, 1, 0, 0, 0, 6729, 6708, 1, 0, 0, 0, 6729, 6728, 1, 0, 0, 0, 6730, 6733, 1, 0, 0, 0, 6731, 6729, 1, 0, 0, 0, 6731, 6732, 1, 0, 0, 0, 6732, 1376, 1, 0, 0, 0, 6733, 6731, 1, 0, 0, 0, 6734, 6735, 3, 1381, 688, 0, 6735, 6736, 5, 39, 0, 0, 6736, 6737, 1, 0, 0, 0, 6737, 6738, 6, 686, 9, 0, 6738, 1378, 1, 0, 0, 0, 6739, 6741, 3, 1381, 688, 0, 6740, 6742, 5, 92, 0, 0, 6741, 6740, 1, 0, 0, 0, 6741, 6742, 1, 0, 0, 0, 6742, 6743, 1, 0, 0, 0, 6743, 6744, 5, 0, 0, 1, 6744, 1380, 1, 0, 0, 0, 6745, 6746, 5, 39, 0, 0, 6746, 6751, 5, 39, 0, 0, 6747, 6748, 5, 92, 0, 0, 6748, 6751, 9, 0, 0, 0, 6749, 6751, 8, 49, 0, 0, 6750, 6745, 1, 0, 0, 0, 6750, 6747, 1, 0, 0, 0, 6750, 6749, 1, 0, 0, 0, 6751, 6754, 1, 0, 0, 0, 6752, 6750, 1, 0, 0, 0, 6752, 6753, 1, 0, 0, 0, 6753, 1382, 1, 0, 0, 0, 6754, 6752, 1, 0, 0, 0, 6755, 6756, 3, 1355, 675, 0, 6756, 6757, 1, 0, 0, 0, 6757, 6758, 6, 689, 10, 0, 6758, 6759, 6, 689, 7, 0, 6759, 1384, 1, 0, 0, 0, 6760, 6761, 3, 1357, 676, 0, 6761, 6762, 1, 0, 0, 0, 6762, 6763, 6, 690, 11, 0, 6763, 6764, 6, 690, 7, 0, 6764, 6765, 6, 690, 12, 0, 6765, 1386, 1, 0, 0, 0, 6766, 6767, 6, 691, 13, 0, 6767, 6768, 1, 0, 0, 0, 6768, 6769, 6, 691, 14, 0, 6769, 6770, 6, 691, 15, 0, 6770, 1388, 1, 0, 0, 0, 6771, 6772, 3, 1355, 675, 0, 6772, 6773, 1, 0, 0, 0, 6773, 6774, 6, 692, 10, 0, 6774, 6775, 6, 692, 7, 0, 6775, 1390, 1, 0, 0, 0, 6776, 6777, 3, 1357, 676, 0, 6777, 6778, 1, 0, 0, 0, 6778, 6779, 6, 693, 11, 0, 6779, 6780, 6, 693, 7, 0, 6780, 1392, 1, 0, 0, 0, 6781, 6782, 5, 39, 0, 0, 6782, 6783, 1, 0, 0, 0, 6783, 6784, 6, 694, 2, 0, 6784, 6785, 6, 694, 16, 0, 6785, 1394, 1, 0, 0, 0, 6786, 6787, 6, 695, 17, 0, 6787, 6788, 1, 0, 0, 0, 6788, 6789, 6, 695, 14, 0, 6789, 6790, 6, 695, 15, 0, 6790, 1396, 1, 0, 0, 0, 6791, 6793, 8, 50, 0, 0, 6792, 6791, 1, 0, 0, 0, 6793, 6794, 1, 0, 0, 0, 6794, 6792, 1, 0, 0, 0, 6794, 6795, 1, 0, 0, 0, 6795, 6804, 1, 0, 0, 0, 6796, 6800, 5, 36, 0, 0, 6797, 6799, 8, 50, 0, 0, 6798, 6797, 1, 0, 0, 0, 6799, 6802, 1, 0, 0, 0, 6800, 6798, 1, 0, 0, 0, 6800, 6801, 1, 0, 0, 0, 6801, 6804, 1, 0, 0, 0, 6802, 6800, 1, 0, 0, 0, 6803, 6792, 1, 0, 0, 0, 6803, 6796, 1, 0, 0, 0, 6804, 1398, 1, 0, 0, 0, 6805, 6807, 5, 36, 0, 0, 6806, 6808, 3, 1325, 660, 0, 6807, 6806, 1, 0, 0, 0, 6807, 6808, 1, 0, 0, 0, 6808, 6809, 1, 0, 0, 0, 6809, 6810, 5, 36, 0, 0, 6810, 6811, 1, 0, 0, 0, 6811, 6812, 4, 697, 8, 0, 6812, 6813, 6, 697, 18, 0, 6813, 6814, 1, 0, 0, 0, 6814, 6815, 6, 697, 15, 0, 6815, 1400, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1468, 1474, 1476, 1481, 1485, 1487, 1490, 1499, 1501, 1506, 1511, 1513, 6349, 6358, 6362, 6366, 6375, 6377, 6387, 6389, 6415, 6417, 6435, 6446, 6457, 6474, 6494, 6498, 6501, 6507, 6510, 6515, 6519, 6524, 6531, 6542, 6544, 6552, 6558, 6561, 6571, 6582, 6590, 6596, 6599, 6601, 6607, 6621, 6629, 6635, 6638, 6640, 6642, 6648, 6653, 6658, 6662, 6672, 6676, 6678, 6685, 6688, 6702, 6726, 6729, 6731, 6741, 6750, 6752, 6794, 6800, 6803, 6807, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 659, 1, 5, 4, 0, 1, 670, 2, 0, 1, 0, 1, 679, 3, 2, 2, 0, 7, 666, 0, 7, 667, 0, 2, 3, 0, 1, 691, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 695, 5, 1, 697, 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..21b525e101 --- /dev/null +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.java @@ -0,0 +1,5263 @@ +// 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.2 + + +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.2", 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, ZVIEW=97, + TRAILING=98, TRUE_P=99, UNION=100, UNIQUE=101, USER=102, USING=103, VARIADIC=104, + WHEN=105, WHERE=106, WINDOW=107, WITH=108, AUTHORIZATION=109, BINARY=110, + COLLATION=111, CONCURRENTLY=112, CROSS=113, CURRENT_SCHEMA=114, FREEZE=115, + FULL=116, ILIKE=117, INNER_P=118, IS=119, ISNULL=120, JOIN=121, LEFT=122, + LIKE=123, NATURAL=124, NOTNULL=125, OUTER_P=126, OVER=127, OVERLAPS=128, + RIGHT=129, SIMILAR=130, VERBOSE=131, ABORT_P=132, ABSOLUTE_P=133, ACCESS=134, + ACTION=135, ADD_P=136, ADMIN=137, AFTER=138, AGGREGATE=139, ALSO=140, + ALTER=141, ALWAYS=142, ASSERTION=143, ASSIGNMENT=144, AT=145, ATTRIBUTE=146, + BACKWARD=147, BEFORE=148, BEGIN_P=149, BY=150, CACHE=151, CALLED=152, + CASCADE=153, CASCADED=154, CATALOG=155, CHAIN=156, CHARACTERISTICS=157, + CHECKPOINT=158, CLASS=159, CLOSE=160, CLUSTER=161, COMMENT=162, COMMENTS=163, + COMMIT=164, COMMITTED=165, CONFIGURATION=166, CONNECTION=167, CONSTRAINTS=168, + CONTENT_P=169, CONTINUE_P=170, CONVERSION_P=171, COPY=172, COST=173, CSV=174, + CURSOR=175, CYCLE=176, DATA_P=177, DATABASE=178, DAY_P=179, DEALLOCATE=180, + DECLARE=181, DEFAULTS=182, DEFERRED=183, DEFINER=184, DELETE_P=185, DELIMITER=186, + DELIMITERS=187, DICTIONARY=188, DISABLE_P=189, DISCARD=190, DOCUMENT_P=191, + DOMAIN_P=192, DOUBLE_P=193, DROP=194, EACH=195, ENABLE_P=196, ENCODING=197, + ENCRYPTED=198, ENUM_P=199, ESCAPE=200, EVENT=201, EXCLUDE=202, EXCLUDING=203, + EXCLUSIVE=204, EXECUTE=205, EXPLAIN=206, EXTENSION=207, EXTERNAL=208, + FAMILY=209, FIRST_P=210, FOLLOWING=211, FORCE=212, FORWARD=213, FUNCTION=214, + FUNCTIONS=215, GLOBAL=216, GRANTED=217, HANDLER=218, HEADER_P=219, HOLD=220, + HOUR_P=221, IDENTITY_P=222, IF_P=223, IMMEDIATE=224, IMMUTABLE=225, IMPLICIT_P=226, + INCLUDING=227, INCREMENT=228, INDEX=229, INDEXES=230, INHERIT=231, INHERITS=232, + INLINE_P=233, INSENSITIVE=234, INSERT=235, INSTEAD=236, INVOKER=237, ISOLATION=238, + KEY=239, LABEL=240, LANGUAGE=241, LARGE_P=242, LAST_P=243, LEAKPROOF=244, + LEVEL=245, LISTEN=246, LOAD=247, LOCAL=248, LOCATION=249, LOCK_P=250, + MAPPING=251, MATCH=252, MATCHED=253, MATERIALIZED=254, MAXVALUE=255, MERGE=256, + MINUTE_P=257, MINVALUE=258, MODE=259, MONTH_P=260, MOVE=261, NAME_P=262, + NAMES=263, NEXT=264, NO=265, NOTHING=266, NOTIFY=267, NOWAIT=268, NULLS_P=269, + OBJECT_P=270, OF=271, OFF=272, OIDS=273, OPERATOR=274, OPTION=275, OPTIONS=276, + OWNED=277, OWNER=278, PARSER=279, PARTIAL=280, PARTITION=281, PASSING=282, + PASSWORD=283, PLANS=284, PRECEDING=285, PREPARE=286, PREPARED=287, PRESERVE=288, + PRIOR=289, PRIVILEGES=290, PROCEDURAL=291, PROCEDURE=292, PROGRAM=293, + QUOTE=294, RANGE=295, READ=296, REASSIGN=297, RECHECK=298, RECURSIVE=299, + REF=300, REFRESH=301, REINDEX=302, RELATIVE_P=303, RELEASE=304, RENAME=305, + REPEATABLE=306, REPLACE=307, REPLICA=308, RESET=309, RESTART=310, RESTRICT=311, + RETURNS=312, REVOKE=313, ROLE=314, ROLLBACK=315, ROWS=316, RULE=317, SAVEPOINT=318, + SCHEMA=319, SCROLL=320, SEARCH=321, SECOND_P=322, SECURITY=323, SEQUENCE=324, + SEQUENCES=325, SERIALIZABLE=326, SERVER=327, SESSION=328, SET=329, SHARE=330, + SHOW=331, SIMPLE=332, SNAPSHOT=333, STABLE=334, STANDALONE_P=335, START=336, + STATEMENT=337, STATISTICS=338, STDIN=339, STDOUT=340, STORAGE=341, STRICT_P=342, + STRIP_P=343, SYSID=344, SYSTEM_P=345, TABLES=346, TABLESPACE=347, TEMP=348, + TEMPLATE=349, TEMPORARY=350, TEXT_P=351, TRANSACTION=352, TRIGGER=353, + TRUNCATE=354, TRUSTED=355, TYPE_P=356, TYPES_P=357, UNBOUNDED=358, UNCOMMITTED=359, + UNENCRYPTED=360, UNKNOWN=361, UNLISTEN=362, UNLOGGED=363, UNTIL=364, UPDATE=365, + VACUUM=366, VALID=367, VALIDATE=368, VALIDATOR=369, VARYING=370, VERSION_P=371, + VIEW=372, VOLATILE=373, WHITESPACE_P=374, WITHOUT=375, WORK=376, WRAPPER=377, + WRITE=378, XML_P=379, YEAR_P=380, YES_P=381, ZONE=382, BETWEEN=383, BIGINT=384, + BIT=385, BOOLEAN_P=386, CHAR_P=387, CHARACTER=388, COALESCE=389, DEC=390, + DECIMAL_P=391, EXISTS=392, EXTRACT=393, FLOAT_P=394, GREATEST=395, INOUT=396, + INT_P=397, INTEGER=398, INTERVAL=399, LEAST=400, NATIONAL=401, NCHAR=402, + NONE=403, NULLIF=404, NUMERIC=405, OVERLAY=406, POSITION=407, PRECISION=408, + REAL=409, ROW=410, SETOF=411, SMALLINT=412, SUBSTRING=413, TIME=414, TIMESTAMP=415, + TREAT=416, TRIM=417, VALUES=418, VARCHAR=419, XMLATTRIBUTES=420, XMLCOMMENT=421, + XMLAGG=422, XML_IS_WELL_FORMED=423, XML_IS_WELL_FORMED_DOCUMENT=424, XML_IS_WELL_FORMED_CONTENT=425, + XPATH=426, XPATH_EXISTS=427, XMLCONCAT=428, XMLELEMENT=429, XMLEXISTS=430, + XMLFOREST=431, XMLPARSE=432, XMLPI=433, XMLROOT=434, XMLSERIALIZE=435, + CALL=436, CURRENT_P=437, ATTACH=438, DETACH=439, EXPRESSION=440, GENERATED=441, + LOGGED=442, STORED=443, INCLUDE=444, ROUTINE=445, TRANSFORM=446, IMPORT_P=447, + POLICY=448, METHOD=449, REFERENCING=450, NEW=451, OLD=452, VALUE_P=453, + SUBSCRIPTION=454, PUBLICATION=455, OUT_P=456, END_P=457, ROUTINES=458, + SCHEMAS=459, PROCEDURES=460, INPUT_P=461, SUPPORT=462, PARALLEL=463, SQL_P=464, + DEPENDS=465, OVERRIDING=466, CONFLICT=467, SKIP_P=468, LOCKED=469, TIES=470, + ROLLUP=471, CUBE=472, GROUPING=473, SETS=474, TABLESAMPLE=475, ORDINALITY=476, + XMLTABLE=477, COLUMNS=478, XMLNAMESPACES=479, ROWTYPE=480, NORMALIZED=481, + WITHIN=482, FILTER=483, GROUPS=484, OTHERS=485, NFC=486, NFD=487, NFKC=488, + NFKD=489, UESCAPE=490, VIEWS=491, NORMALIZE=492, DUMP=493, PRINT_STRICT_PARAMS=494, + VARIABLE_CONFLICT=495, ERROR=496, USE_VARIABLE=497, USE_COLUMN=498, ALIAS=499, + CONSTANT=500, PERFORM=501, GET=502, DIAGNOSTICS=503, STACKED=504, ELSIF=505, + WHILE=506, REVERSE=507, FOREACH=508, SLICE=509, EXIT=510, RETURN=511, + QUERY=512, RAISE=513, SQLSTATE=514, DEBUG=515, LOG=516, INFO=517, NOTICE=518, + WARNING=519, EXCEPTION=520, ASSERT=521, LOOP=522, OPEN=523, ABS=524, CBRT=525, + CEIL=526, CEILING=527, DEGREES=528, DIV=529, EXP=530, FACTORIAL=531, FLOOR=532, + GCD=533, LCM=534, LN=535, LOG10=536, MIN_SCALE=537, MOD=538, PI=539, POWER=540, + RADIANS=541, ROUND=542, SCALE=543, SIGN=544, SQRT=545, TRIM_SCALE=546, + TRUNC=547, WIDTH_BUCKET=548, RANDOM=549, SETSEED=550, ACOS=551, ACOSD=552, + ASIN=553, ASIND=554, ATAN=555, ATAND=556, ATAN2=557, ATAN2D=558, COS=559, + COSD=560, COT=561, COTD=562, SIN=563, SIND=564, TAN=565, TAND=566, SINH=567, + COSH=568, TANH=569, ASINH=570, ACOSH=571, ATANH=572, BIT_LENGTH=573, CHAR_LENGTH=574, + CHARACTER_LENGTH=575, LOWER=576, OCTET_LENGTH=577, UPPER=578, ASCII=579, + BTRIM=580, CHR=581, CONCAT=582, CONCAT_WS=583, FORMAT=584, INITCAP=585, + LENGTH=586, LPAD=587, LTRIM=588, MD5=589, PARSE_IDENT=590, PG_CLIENT_ENCODING=591, + QUOTE_IDENT=592, QUOTE_LITERAL=593, QUOTE_NULLABLE=594, REGEXP_COUNT=595, + REGEXP_INSTR=596, REGEXP_LIKE=597, REGEXP_MATCH=598, REGEXP_MATCHES=599, + REGEXP_REPLACE=600, REGEXP_SPLIT_TO_ARRAY=601, REGEXP_SPLIT_TO_TABLE=602, + REGEXP_SUBSTR=603, REPEAT=604, RPAD=605, RTRIM=606, SPLIT_PART=607, STARTS_WITH=608, + STRING_TO_ARRAY=609, STRING_TO_TABLE=610, STRPOS=611, SUBSTR=612, TO_ASCII=613, + TO_HEX=614, TRANSLATE=615, UNISTR=616, AGE=617, CLOCK_TIMESTAMP=618, DATE_BIN=619, + DATE_PART=620, DATE_TRUNC=621, ISFINITE=622, JUSTIFY_DAYS=623, JUSTIFY_HOURS=624, + JUSTIFY_INTERVAL=625, MAKE_DATE=626, MAKE_INTERVAL=627, MAKE_TIME=628, + MAKE_TIMESTAMP=629, MAKE_TIMESTAMPTZ=630, NOW=631, STATEMENT_TIMESTAMP=632, + TIMEOFDAY=633, TRANSACTION_TIMESTAMP=634, TO_TIMESTAMP=635, TO_CHAR=636, + TO_DATE=637, TO_NUMBER=638, Identifier=639, QuotedIdentifier=640, UnterminatedQuotedIdentifier=641, + InvalidQuotedIdentifier=642, InvalidUnterminatedQuotedIdentifier=643, + UnicodeQuotedIdentifier=644, UnterminatedUnicodeQuotedIdentifier=645, + InvalidUnicodeQuotedIdentifier=646, InvalidUnterminatedUnicodeQuotedIdentifier=647, + StringConstant=648, UnterminatedStringConstant=649, UnicodeEscapeStringConstant=650, + UnterminatedUnicodeEscapeStringConstant=651, BeginDollarStringConstant=652, + BinaryStringConstant=653, UnterminatedBinaryStringConstant=654, InvalidBinaryStringConstant=655, + InvalidUnterminatedBinaryStringConstant=656, HexadecimalStringConstant=657, + UnterminatedHexadecimalStringConstant=658, InvalidHexadecimalStringConstant=659, + InvalidUnterminatedHexadecimalStringConstant=660, Integral=661, NumericFail=662, + Numeric=663, PLSQLVARIABLENAME=664, PLSQLIDENTIFIER=665, Whitespace=666, + Newline=667, LineComment=668, BlockComment=669, UnterminatedBlockComment=670, + MetaCommand=671, EndMetaCommand=672, ErrorCharacter=673, EscapeStringConstant=674, + UnterminatedEscapeStringConstant=675, InvalidEscapeStringConstant=676, + InvalidUnterminatedEscapeStringConstant=677, AfterEscapeStringConstantMode_NotContinued=678, + AfterEscapeStringConstantWithNewlineMode_NotContinued=679, DollarText=680, + EndDollarStringConstant=681, AfterEscapeStringConstantWithNewlineMode_Continued=682; + 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", "ZVIEW", "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'", + "'ZVIEW'", "'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", "ZVIEW", "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 659: + BeginDollarStringConstant_action((RuleContext)_localctx, actionIndex); + break; + case 670: + NumericFail_action((RuleContext)_localctx, actionIndex); + break; + case 679: + UnterminatedBlockComment_action((RuleContext)_localctx, actionIndex); + break; + case 691: + AfterEscapeStringConstantMode_NotContinued_action((RuleContext)_localctx, actionIndex); + break; + case 695: + AfterEscapeStringConstantWithNewlineMode_NotContinued_action((RuleContext)_localctx, actionIndex); + break; + case 697: + 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 643: + return IdentifierStartChar_sempred((RuleContext)_localctx, predIndex); + case 697: + 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\u02aa\u1aa0\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\u0002\u02b9\u0007\u02b9"+ + "\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\u05bb\b\u001b\u000b\u001b\f\u001b"+ + "\u05bc\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05c3"+ + "\b\u001c\u000b\u001c\f\u001c\u05c4\u0001\u001c\u0001\u001c\u0001\u001c"+ + "\u0003\u001c\u05ca\b\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05ce\b"+ + "\u001c\u000b\u001c\f\u001c\u05cf\u0001\u001c\u0003\u001c\u05d3\b\u001c"+ + "\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d"+ + "\u0001\u001d\u0005\u001d\u05dc\b\u001d\n\u001d\f\u001d\u05df\t\u001d\u0001"+ + "\u001d\u0001\u001d\u0003\u001d\u05e3\b\u001d\u0001\u001d\u0001\u001d\u0001"+ + "\u001d\u0004\u001d\u05e8\b\u001d\u000b\u001d\f\u001d\u05e9\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\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001d\u0001"+ + "d\u0001d\u0001d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001e\u0001"+ + "e\u0001e\u0001e\u0001e\u0001f\u0001f\u0001f\u0001f\u0001f\u0001g\u0001"+ + "g\u0001g\u0001g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001"+ + "h\u0001h\u0001i\u0001i\u0001i\u0001i\u0001i\u0001j\u0001j\u0001j\u0001"+ + "j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+ + "k\u0001k\u0001l\u0001l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001m\u0001"+ + "m\u0001m\u0001m\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001"+ + "o\u0001o\u0001o\u0001o\u0001o\u0001p\u0001p\u0001p\u0001p\u0001p\u0001"+ + "p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001q\u0001"+ + "q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001"+ + "r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001s\u0001s\u0001"+ + "s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001t\u0001"+ + "t\u0001t\u0001t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001u\u0001"+ + "u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001"+ + "v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001w\u0001w\u0001w\u0001"+ + "w\u0001w\u0001x\u0001x\u0001x\u0001x\u0001x\u0001x\u0001y\u0001y\u0001"+ + "y\u0001y\u0001y\u0001y\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\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\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\u0083\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\u0086\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\u0088\u0001\u0088\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\u008a"+ + "\u0001\u008a\u0001\u008a\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\u008e\u0001\u008e\u0001\u008e\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\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\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\u0093"+ + "\u0001\u0093\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\u0095\u0001\u0096\u0001\u0096\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\u0097"+ + "\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098"+ + "\u0001\u0099\u0001\u0099\u0001\u0099\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\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\u009d\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\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\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\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\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\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\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\u00ab\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\u00ac\u0001\u00ac\u0001\u00ac\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\u00ae\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\u00b0\u0001\u00b1"+ + "\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b2\u0001\u00b2\u0001\u00b2"+ + "\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b3\u0001\u00b3"+ + "\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\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\u00b5"+ + "\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\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\u00b9\u0001\u00b9\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\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\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\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\u00c2\u0001\u00c2\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\u00c4"+ + "\u0001\u00c4\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5"+ + "\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\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\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9"+ + "\u0001\u00c9\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\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\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\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\u00d2\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\u00d4\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\u00d6\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\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\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\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dd\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\u00de\u0001\u00de"+ + "\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\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\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\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\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\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\u00eb\u0001\u00eb\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\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\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\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\u00f1\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\u00f3\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\u00f5"+ + "\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f6"+ + "\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f7\u0001\u00f7"+ + "\u0001\u00f7\u0001\u00f7\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\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\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc"+ + "\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\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\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\u0101\u0001\u0101\u0001\u0101\u0001\u0101"+ + "\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\u0102\u0001\u0102\u0001\u0102"+ + "\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\u0105\u0001\u0105\u0001\u0105\u0001\u0105\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\u0109"+ + "\u0001\u0109\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a"+ + "\u0001\u010a\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010b"+ + "\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010d\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\u010f\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110"+ + "\u0001\u0110\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111"+ + "\u0001\u0111\u0001\u0111\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0113"+ + "\u0001\u0113\u0001\u0113\u0001\u0113\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\u0115\u0001\u0115\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\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\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\u011c"+ + "\u0001\u011c\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\u011e"+ + "\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\u0120\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\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\u0123"+ + "\u0001\u0123\u0001\u0123\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\u0126"+ + "\u0001\u0127\u0001\u0127\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\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\u012a"+ + "\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\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\u012e\u0001\u012e\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\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\u0135\u0001\u0135"+ + "\u0001\u0135\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\u0137"+ + "\u0001\u0137\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\u013a\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\u013b\u0001\u013c\u0001\u013c\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\u013f"+ + "\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\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\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\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\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\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\u014b"+ + "\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b"+ + "\u0001\u014b\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014d"+ + "\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\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\u0150"+ + "\u0001\u0150\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\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\u0154\u0001\u0154\u0001\u0154"+ + "\u0001\u0155\u0001\u0155\u0001\u0155\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\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\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\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\u015e"+ + "\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\u0161\u0001\u0161\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\u0163\u0001\u0163\u0001\u0163"+ + "\u0001\u0163\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\u0165"+ + "\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\u0166\u0001\u0166\u0001\u0166\u0001\u0167\u0001\u0167"+ + "\u0001\u0167\u0001\u0167\u0001\u0167\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\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\u016b\u0001\u016b\u0001\u016b"+ + "\u0001\u016b\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\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\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\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\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\u0176\u0001\u0176\u0001\u0176\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\u0179\u0001\u0179\u0001\u0179\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\u017a"+ + "\u0001\u017a\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b"+ + "\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c"+ + "\u0001\u017c\u0001\u017c\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d"+ + "\u0001\u017d\u0001\u017d\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e"+ + "\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u0180"+ + "\u0001\u0180\u0001\u0180\u0001\u0180\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\u0182\u0001\u0183\u0001\u0183"+ + "\u0001\u0183\u0001\u0183\u0001\u0183\u0001\u0183\u0001\u0183\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\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\u0187\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188"+ + "\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0189"+ + "\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u018a\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\u018c\u0001\u018c\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\u018e\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\u0190"+ + "\u0001\u0190\u0001\u0190\u0001\u0190\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\u0192"+ + "\u0001\u0192\u0001\u0192\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\u0194\u0001\u0194\u0001\u0194\u0001\u0195"+ + "\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\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\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\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\u019b"+ + "\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019c\u0001\u019c"+ + "\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019d\u0001\u019d\u0001\u019d"+ + "\u0001\u019d\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\u01a0\u0001\u01a0"+ + "\u0001\u01a0\u0001\u01a0\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\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a3"+ + "\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\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\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\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\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\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\u01ab\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac"+ + "\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac"+ + "\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac"+ + "\u0001\u01ac\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\u01ae"+ + "\u0001\u01ae\u0001\u01ae\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\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\u01b2\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\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\u01b6"+ + "\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\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\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\u01bb\u0001\u01bb\u0001\u01bb"+ + "\u0001\u01bb\u0001\u01bc\u0001\u01bc\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\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\u01c1"+ + "\u0001\u01c1\u0001\u01c1\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\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5"+ + "\u0001\u01c5\u0001\u01c5\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\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\u01c9\u0001\u01ca\u0001\u01ca\u0001\u01ca"+ + "\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\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cd"+ + "\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\u01cf\u0001\u01cf"+ + "\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\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\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3"+ + "\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\u01d5"+ + "\u0001\u01d5\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6"+ + "\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d7\u0001\u01d7"+ + "\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d8\u0001\u01d8\u0001\u01d8"+ + "\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d9\u0001\u01d9"+ + "\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01da\u0001\u01da\u0001\u01da"+ + "\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\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\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\u01de\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\u01e0\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\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\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\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\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e9\u0001\u01e9"+ + "\u0001\u01e9\u0001\u01e9\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\u01ed\u0001\u01ed"+ + "\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\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\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\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\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\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4"+ + "\u0001\u01f5\u0001\u01f5\u0001\u01f5\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\u01f6\u0001\u01f6\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\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa"+ + "\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\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\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\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\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\u0204\u0001\u0204\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205"+ + "\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0206"+ + "\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0207"+ + "\u0001\u0207\u0001\u0207\u0001\u0207\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\u020a\u0001\u020a\u0001\u020a\u0001\u020b"+ + "\u0001\u020b\u0001\u020b\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\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\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\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\u0213\u0001\u0213"+ + "\u0001\u0213\u0001\u0213\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\u0216\u0001\u0216\u0001\u0216\u0001\u0216"+ + "\u0001\u0216\u0001\u0216\u0001\u0217\u0001\u0217\u0001\u0217\u0001\u0217"+ + "\u0001\u0217\u0001\u0217\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218"+ + "\u0001\u0219\u0001\u0219\u0001\u0219\u0001\u0219\u0001\u021a\u0001\u021a"+ + "\u0001\u021a\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021b"+ + "\u0001\u021b\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021c"+ + "\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021d"+ + "\u0001\u021d\u0001\u021d\u0001\u021d\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\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\u0222\u0001\u0223\u0001\u0223\u0001\u0223\u0001\u0223"+ + "\u0001\u0223\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\u0225\u0001\u0225\u0001\u0225\u0001\u0225\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\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\u0229\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u0229"+ + "\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u022a\u0001\u022a\u0001\u022a"+ + "\u0001\u022a\u0001\u022a\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b"+ + "\u0001\u022b\u0001\u022b\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\u022f\u0001\u022f\u0001\u022f\u0001\u022f\u0001\u022f\u0001\u022f"+ + "\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0230"+ + "\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231"+ + "\u0001\u0231\u0001\u0232\u0001\u0232\u0001\u0232\u0001\u0232\u0001\u0233"+ + "\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0234\u0001\u0234"+ + "\u0001\u0234\u0001\u0234\u0001\u0235\u0001\u0235\u0001\u0235\u0001\u0235"+ + "\u0001\u0235\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\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\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\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\u0242\u0001\u0242\u0001\u0242"+ + "\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0242"+ + "\u0001\u0242\u0001\u0242\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\u0244\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\u0247\u0001\u0247\u0001\u0248\u0001\u0248\u0001\u0248"+ + "\u0001\u0248\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\u024a\u0001\u024a\u0001\u024a"+ + "\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\u024c\u0001\u024d\u0001\u024d\u0001\u024d"+ + "\u0001\u024d\u0001\u024d\u0001\u024d\u0001\u024d\u0001\u024e\u0001\u024e"+ + "\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024f\u0001\u024f\u0001\u024f"+ + "\u0001\u024f\u0001\u024f\u0001\u024f\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\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\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\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\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\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\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\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\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\u025e\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\u0260\u0001\u0260\u0001\u0260"+ + "\u0001\u0260\u0001\u0260\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\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\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\u0268"+ + "\u0001\u0268\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\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\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\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\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\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\u0274\u0001\u0274"+ + "\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\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\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\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\u0279\u0001\u0279"+ + "\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\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\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\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\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\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\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\u0281\u0001\u0281"+ + "\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281"+ + "\u0001\u0281\u0001\u0281\u0001\u0282\u0001\u0282\u0005\u0282\u18cc\b\u0282"+ + "\n\u0282\f\u0282\u18cf\t\u0282\u0001\u0283\u0001\u0283\u0001\u0283\u0001"+ + "\u0283\u0001\u0283\u0001\u0283\u0003\u0283\u18d7\b\u0283\u0001\u0284\u0001"+ + "\u0284\u0003\u0284\u18db\b\u0284\u0001\u0285\u0001\u0285\u0003\u0285\u18df"+ + "\b\u0285\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0287\u0001\u0287\u0001"+ + "\u0287\u0001\u0287\u0005\u0287\u18e8\b\u0287\n\u0287\f\u0287\u18eb\t\u0287"+ + "\u0001\u0288\u0001\u0288\u0001\u0288\u0001\u0289\u0001\u0289\u0001\u0289"+ + "\u0001\u0289\u0005\u0289\u18f4\b\u0289\n\u0289\f\u0289\u18f7\t\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\u028d\u0001\u028e\u0001\u028e\u0001"+ + "\u028e\u0001\u028f\u0001\u028f\u0001\u028f\u0001\u028f\u0005\u028f\u1910"+ + "\b\u028f\n\u028f\f\u028f\u1913\t\u028f\u0001\u0290\u0001\u0290\u0001\u0290"+ + "\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0291\u0001\u0291\u0001\u0291"+ + "\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0293\u0001\u0293"+ + "\u0003\u0293\u1924\b\u0293\u0001\u0293\u0001\u0293\u0001\u0293\u0001\u0293"+ + "\u0001\u0293\u0001\u0294\u0001\u0294\u0005\u0294\u192d\b\u0294\n\u0294"+ + "\f\u0294\u1930\t\u0294\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0296"+ + "\u0001\u0296\u0001\u0296\u0005\u0296\u1938\b\u0296\n\u0296\f\u0296\u193b"+ + "\t\u0296\u0001\u0297\u0001\u0297\u0001\u0297\u0001\u0298\u0001\u0298\u0001"+ + "\u0298\u0001\u0299\u0001\u0299\u0001\u0299\u0001\u029a\u0001\u029a\u0001"+ + "\u029a\u0005\u029a\u1949\b\u029a\n\u029a\f\u029a\u194c\t\u029a\u0001\u029b"+ + "\u0001\u029b\u0001\u029b\u0001\u029c\u0001\u029c\u0001\u029c\u0001\u029d"+ + "\u0001\u029d\u0001\u029e\u0001\u029e\u0001\u029e\u0001\u029e\u0001\u029e"+ + "\u0001\u029e\u0001\u029f\u0001\u029f\u0001\u029f\u0003\u029f\u195f\b\u029f"+ + "\u0001\u029f\u0001\u029f\u0003\u029f\u1963\b\u029f\u0001\u029f\u0003\u029f"+ + "\u1966\b\u029f\u0001\u029f\u0001\u029f\u0001\u029f\u0001\u029f\u0003\u029f"+ + "\u196c\b\u029f\u0001\u029f\u0003\u029f\u196f\b\u029f\u0001\u029f\u0001"+ + "\u029f\u0001\u029f\u0003\u029f\u1974\b\u029f\u0001\u029f\u0001\u029f\u0003"+ + "\u029f\u1978\b\u029f\u0001\u02a0\u0004\u02a0\u197b\b\u02a0\u000b\u02a0"+ + "\f\u02a0\u197c\u0001\u02a1\u0001\u02a1\u0001\u02a1\u0005\u02a1\u1982\b"+ + "\u02a1\n\u02a1\f\u02a1\u1985\t\u02a1\u0001\u02a2\u0001\u02a2\u0001\u02a2"+ + "\u0001\u02a2\u0001\u02a2\u0001\u02a2\u0001\u02a2\u0001\u02a2\u0005\u02a2"+ + "\u198f\b\u02a2\n\u02a2\f\u02a2\u1992\t\u02a2\u0001\u02a2\u0001\u02a2\u0001"+ + "\u02a3\u0004\u02a3\u1997\b\u02a3\u000b\u02a3\f\u02a3\u1998\u0001\u02a3"+ + "\u0001\u02a3\u0001\u02a4\u0001\u02a4\u0003\u02a4\u199f\b\u02a4\u0001\u02a4"+ + "\u0003\u02a4\u19a2\b\u02a4\u0001\u02a4\u0001\u02a4\u0001\u02a5\u0001\u02a5"+ + "\u0001\u02a5\u0001\u02a5\u0005\u02a5\u19aa\b\u02a5\n\u02a5\f\u02a5\u19ad"+ + "\t\u02a5\u0001\u02a5\u0001\u02a5\u0001\u02a6\u0001\u02a6\u0001\u02a6\u0001"+ + "\u02a6\u0005\u02a6\u19b5\b\u02a6\n\u02a6\f\u02a6\u19b8\t\u02a6\u0001\u02a6"+ + "\u0001\u02a6\u0001\u02a6\u0004\u02a6\u19bd\b\u02a6\u000b\u02a6\f\u02a6"+ + "\u19be\u0001\u02a6\u0001\u02a6\u0004\u02a6\u19c3\b\u02a6\u000b\u02a6\f"+ + "\u02a6\u19c4\u0001\u02a6\u0005\u02a6\u19c8\b\u02a6\n\u02a6\f\u02a6\u19cb"+ + "\t\u02a6\u0001\u02a6\u0005\u02a6\u19ce\b\u02a6\n\u02a6\f\u02a6\u19d1\t"+ + "\u02a6\u0001\u02a6\u0001\u02a6\u0001\u02a6\u0001\u02a6\u0001\u02a6\u0001"+ + "\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0005\u02a7\u19dc\b\u02a7\n"+ + "\u02a7\f\u02a7\u19df\t\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0004"+ + "\u02a7\u19e4\b\u02a7\u000b\u02a7\f\u02a7\u19e5\u0001\u02a7\u0001\u02a7"+ + "\u0004\u02a7\u19ea\b\u02a7\u000b\u02a7\f\u02a7\u19eb\u0001\u02a7\u0003"+ + "\u02a7\u19ef\b\u02a7\u0005\u02a7\u19f1\b\u02a7\n\u02a7\f\u02a7\u19f4\t"+ + "\u02a7\u0001\u02a7\u0004\u02a7\u19f7\b\u02a7\u000b\u02a7\f\u02a7\u19f8"+ + "\u0001\u02a7\u0004\u02a7\u19fc\b\u02a7\u000b\u02a7\f\u02a7\u19fd\u0001"+ + "\u02a7\u0005\u02a7\u1a01\b\u02a7\n\u02a7\f\u02a7\u1a04\t\u02a7\u0001\u02a7"+ + "\u0003\u02a7\u1a07\b\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a8\u0001\u02a8"+ + "\u0001\u02a8\u0001\u02a8\u0005\u02a8\u1a0f\b\u02a8\n\u02a8\f\u02a8\u1a12"+ + "\t\u02a8\u0001\u02a8\u0005\u02a8\u1a15\b\u02a8\n\u02a8\f\u02a8\u1a18\t"+ + "\u02a8\u0001\u02a8\u0001\u02a8\u0005\u02a8\u1a1c\b\u02a8\n\u02a8\f\u02a8"+ + "\u1a1f\t\u02a8\u0003\u02a8\u1a21\b\u02a8\u0001\u02a9\u0001\u02a9\u0001"+ + "\u02a9\u0001\u02aa\u0001\u02aa\u0001\u02ab\u0001\u02ab\u0001\u02ab\u0001"+ + "\u02ab\u0001\u02ab\u0001\u02ac\u0001\u02ac\u0003\u02ac\u1a2f\b\u02ac\u0001"+ + "\u02ac\u0001\u02ac\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001"+ + "\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001"+ + "\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001"+ + "\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0003\u02ad\u1a47\b\u02ad\u0001"+ + "\u02ad\u0005\u02ad\u1a4a\b\u02ad\n\u02ad\f\u02ad\u1a4d\t\u02ad\u0001\u02ae"+ + "\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02af\u0001\u02af"+ + "\u0003\u02af\u1a56\b\u02af\u0001\u02af\u0001\u02af\u0001\u02b0\u0001\u02b0"+ + "\u0001\u02b0\u0001\u02b0\u0001\u02b0\u0005\u02b0\u1a5f\b\u02b0\n\u02b0"+ + "\f\u02b0\u1a62\t\u02b0\u0001\u02b1\u0001\u02b1\u0001\u02b1\u0001\u02b1"+ + "\u0001\u02b1\u0001\u02b2\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\u0001\u02b7\u0001\u02b7"+ + "\u0001\u02b7\u0001\u02b7\u0001\u02b8\u0004\u02b8\u1a89\b\u02b8\u000b\u02b8"+ + "\f\u02b8\u1a8a\u0001\u02b8\u0001\u02b8\u0005\u02b8\u1a8f\b\u02b8\n\u02b8"+ + "\f\u02b8\u1a92\t\u02b8\u0003\u02b8\u1a94\b\u02b8\u0001\u02b9\u0001\u02b9"+ + "\u0003\u02b9\u1a98\b\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9"+ + "\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0000\u0000\u02ba\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/\u00161\u00173\u00185\u00197\u001a9\u001b"+ + ";\u001c=\u001d?\u0000A\u0000C\u0000E\u0000G\u001eI\u001fK M!O\"Q#S$U%"+ + "W&Y\'[(])_*a+c,e-g.i/k0m1o2q3s4u5w6y7{8}9\u007f:\u0081;\u0083<\u0085="+ + "\u0087>\u0089?\u008b@\u008dA\u008fB\u0091C\u0093D\u0095E\u0097F\u0099"+ + "G\u009bH\u009dI\u009fJ\u00a1K\u00a3L\u00a5M\u00a7N\u00a9O\u00abP\u00ad"+ + "Q\u00afR\u00b1S\u00b3T\u00b5U\u00b7V\u00b9W\u00bbX\u00bdY\u00bfZ\u00c1"+ + "[\u00c3\\\u00c5]\u00c7^\u00c9_\u00cb`\u00cda\u00cfb\u00d1c\u00d3d\u00d5"+ + "e\u00d7f\u00d9g\u00dbh\u00ddi\u00dfj\u00e1k\u00e3l\u00e5m\u00e7n\u00e9"+ + "o\u00ebp\u00edq\u00efr\u00f1s\u00f3t\u00f5u\u00f7v\u00f9w\u00fbx\u00fd"+ + "y\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\u027f"+ + "\u050b\u0000\u050d\u0000\u050f\u0000\u0511\u0280\u0513\u0281\u0515\u0282"+ + "\u0517\u0283\u0519\u0284\u051b\u0285\u051d\u0286\u051f\u0287\u0521\u0288"+ + "\u0523\u0289\u0525\u0000\u0527\u028a\u0529\u028b\u052b\u028c\u052d\u0000"+ + "\u052f\u028d\u0531\u028e\u0533\u028f\u0535\u0290\u0537\u0291\u0539\u0292"+ + "\u053b\u0293\u053d\u0294\u053f\u0295\u0541\u0296\u0543\u0297\u0545\u0000"+ + "\u0547\u0298\u0549\u0299\u054b\u029a\u054d\u029b\u054f\u029c\u0551\u029d"+ + "\u0553\u029e\u0555\u029f\u0557\u02a0\u0559\u02a1\u055b\u02a2\u055d\u02a3"+ + "\u055f\u0000\u0561\u02a4\u0563\u02a5\u0565\u0000\u0567\u0000\u0569\u0000"+ + "\u056b\u02a6\u056d\u0000\u056f\u0000\u0571\u02aa\u0573\u02a7\u0575\u02a8"+ + "\u0577\u02a9\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\u0000WWww\u0002\u0000QQqq\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$$\u1ae8\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\u0505\u0001\u0000\u0000"+ + "\u0000\u0000\u0507\u0001\u0000\u0000\u0000\u0000\u0509\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\u052b\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\u0543\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\u0000\u0559\u0001\u0000\u0000\u0000\u0001\u055b\u0001\u0000\u0000"+ + "\u0000\u0001\u055d\u0001\u0000\u0000\u0000\u0001\u0561\u0001\u0000\u0000"+ + "\u0000\u0001\u0563\u0001\u0000\u0000\u0000\u0002\u0567\u0001\u0000\u0000"+ + "\u0000\u0002\u0569\u0001\u0000\u0000\u0000\u0002\u056b\u0001\u0000\u0000"+ + "\u0000\u0003\u056d\u0001\u0000\u0000\u0000\u0003\u056f\u0001\u0000\u0000"+ + "\u0000\u0003\u0571\u0001\u0000\u0000\u0000\u0003\u0573\u0001\u0000\u0000"+ + "\u0000\u0004\u0575\u0001\u0000\u0000\u0000\u0004\u0577\u0001\u0000\u0000"+ + "\u0000\u0005\u0579\u0001\u0000\u0000\u0000\u0007\u057b\u0001\u0000\u0000"+ + "\u0000\t\u057d\u0001\u0000\u0000\u0000\u000b\u057f\u0001\u0000\u0000\u0000"+ + "\r\u0581\u0001\u0000\u0000\u0000\u000f\u0583\u0001\u0000\u0000\u0000\u0011"+ + "\u0585\u0001\u0000\u0000\u0000\u0013\u0587\u0001\u0000\u0000\u0000\u0015"+ + "\u0589\u0001\u0000\u0000\u0000\u0017\u058b\u0001\u0000\u0000\u0000\u0019"+ + "\u058d\u0001\u0000\u0000\u0000\u001b\u058f\u0001\u0000\u0000\u0000\u001d"+ + "\u0591\u0001\u0000\u0000\u0000\u001f\u0593\u0001\u0000\u0000\u0000!\u0595"+ + "\u0001\u0000\u0000\u0000#\u0597\u0001\u0000\u0000\u0000%\u0599\u0001\u0000"+ + "\u0000\u0000\'\u059b\u0001\u0000\u0000\u0000)\u059e\u0001\u0000\u0000"+ + "\u0000+\u05a1\u0001\u0000\u0000\u0000-\u05a4\u0001\u0000\u0000\u0000/"+ + "\u05a7\u0001\u0000\u0000\u00001\u05aa\u0001\u0000\u0000\u00003\u05ad\u0001"+ + "\u0000\u0000\u00005\u05b0\u0001\u0000\u0000\u00007\u05b3\u0001\u0000\u0000"+ + "\u00009\u05b6\u0001\u0000\u0000\u0000;\u05b8\u0001\u0000\u0000\u0000="+ + "\u05d2\u0001\u0000\u0000\u0000?\u05dd\u0001\u0000\u0000\u0000A\u05ed\u0001"+ + "\u0000\u0000\u0000C\u05ef\u0001\u0000\u0000\u0000E\u05f1\u0001\u0000\u0000"+ + "\u0000G\u05f3\u0001\u0000\u0000\u0000I\u05f7\u0001\u0000\u0000\u0000K"+ + "\u05ff\u0001\u0000\u0000\u0000M\u0607\u0001\u0000\u0000\u0000O\u060b\u0001"+ + "\u0000\u0000\u0000Q\u060f\u0001\u0000\u0000\u0000S\u0615\u0001\u0000\u0000"+ + "\u0000U\u0618\u0001\u0000\u0000\u0000W\u061c\u0001\u0000\u0000\u0000Y"+ + "\u0627\u0001\u0000\u0000\u0000[\u062c\u0001\u0000\u0000\u0000]\u0631\u0001"+ + "\u0000\u0000\u0000_\u0636\u0001\u0000\u0000\u0000a\u063c\u0001\u0000\u0000"+ + "\u0000c\u0644\u0001\u0000\u0000\u0000e\u064b\u0001\u0000\u0000\u0000g"+ + "\u0656\u0001\u0000\u0000\u0000i\u065d\u0001\u0000\u0000\u0000k\u066d\u0001"+ + "\u0000\u0000\u0000m\u067a\u0001\u0000\u0000\u0000o\u0687\u0001\u0000\u0000"+ + "\u0000q\u0694\u0001\u0000\u0000\u0000s\u06a6\u0001\u0000\u0000\u0000u"+ + "\u06b3\u0001\u0000\u0000\u0000w\u06bb\u0001\u0000\u0000\u0000y\u06c6\u0001"+ + "\u0000\u0000\u0000{\u06cb\u0001\u0000\u0000\u0000}\u06d4\u0001\u0000\u0000"+ + "\u0000\u007f\u06d7\u0001\u0000\u0000\u0000\u0081\u06dc\u0001\u0000\u0000"+ + "\u0000\u0083\u06e3\u0001\u0000\u0000\u0000\u0085\u06e9\u0001\u0000\u0000"+ + "\u0000\u0087\u06ef\u0001\u0000\u0000\u0000\u0089\u06f3\u0001\u0000\u0000"+ + "\u0000\u008b\u06fb\u0001\u0000\u0000\u0000\u008d\u0700\u0001\u0000\u0000"+ + "\u0000\u008f\u0706\u0001\u0000\u0000\u0000\u0091\u070c\u0001\u0000\u0000"+ + "\u0000\u0093\u0713\u0001\u0000\u0000\u0000\u0095\u0716\u0001\u0000\u0000"+ + "\u0000\u0097\u0720\u0001\u0000\u0000\u0000\u0099\u072a\u0001\u0000\u0000"+ + "\u0000\u009b\u072f\u0001\u0000\u0000\u0000\u009d\u0737\u0001\u0000\u0000"+ + "\u0000\u009f\u073f\u0001\u0000\u0000\u0000\u00a1\u0745\u0001\u0000\u0000"+ + "\u0000\u00a3\u074f\u0001\u0000\u0000\u0000\u00a5\u075e\u0001\u0000\u0000"+ + "\u0000\u00a7\u0762\u0001\u0000\u0000\u0000\u00a9\u0767\u0001\u0000\u0000"+ + "\u0000\u00ab\u076e\u0001\u0000\u0000\u0000\u00ad\u0771\u0001\u0000\u0000"+ + "\u0000\u00af\u0776\u0001\u0000\u0000\u0000\u00b1\u0779\u0001\u0000\u0000"+ + "\u0000\u00b3\u077f\u0001\u0000\u0000\u0000\u00b5\u0787\u0001\u0000\u0000"+ + "\u0000\u00b7\u078f\u0001\u0000\u0000\u0000\u00b9\u079a\u0001\u0000\u0000"+ + "\u0000\u00bb\u07a4\u0001\u0000\u0000\u0000\u00bd\u07ab\u0001\u0000\u0000"+ + "\u0000\u00bf\u07b8\u0001\u0000\u0000\u0000\u00c1\u07bd\u0001\u0000\u0000"+ + "\u0000\u00c3\u07c7\u0001\u0000\u0000\u0000\u00c5\u07cd\u0001\u0000\u0000"+ + "\u0000\u00c7\u07d2\u0001\u0000\u0000\u0000\u00c9\u07d5\u0001\u0000\u0000"+ + "\u0000\u00cb\u07db\u0001\u0000\u0000\u0000\u00cd\u07e2\u0001\u0000\u0000"+ + "\u0000\u00cf\u07e8\u0001\u0000\u0000\u0000\u00d1\u07f1\u0001\u0000\u0000"+ + "\u0000\u00d3\u07f6\u0001\u0000\u0000\u0000\u00d5\u07fc\u0001\u0000\u0000"+ + "\u0000\u00d7\u0803\u0001\u0000\u0000\u0000\u00d9\u0808\u0001\u0000\u0000"+ + "\u0000\u00db\u080e\u0001\u0000\u0000\u0000\u00dd\u0817\u0001\u0000\u0000"+ + "\u0000\u00df\u081c\u0001\u0000\u0000\u0000\u00e1\u0822\u0001\u0000\u0000"+ + "\u0000\u00e3\u0829\u0001\u0000\u0000\u0000\u00e5\u082e\u0001\u0000\u0000"+ + "\u0000\u00e7\u083c\u0001\u0000\u0000\u0000\u00e9\u0843\u0001\u0000\u0000"+ + "\u0000\u00eb\u084d\u0001\u0000\u0000\u0000\u00ed\u085a\u0001\u0000\u0000"+ + "\u0000\u00ef\u0860\u0001\u0000\u0000\u0000\u00f1\u086f\u0001\u0000\u0000"+ + "\u0000\u00f3\u0876\u0001\u0000\u0000\u0000\u00f5\u087b\u0001\u0000\u0000"+ + "\u0000\u00f7\u0881\u0001\u0000\u0000\u0000\u00f9\u0887\u0001\u0000\u0000"+ + "\u0000\u00fb\u088a\u0001\u0000\u0000\u0000\u00fd\u0891\u0001\u0000\u0000"+ + "\u0000\u00ff\u0896\u0001\u0000\u0000\u0000\u0101\u089b\u0001\u0000\u0000"+ + "\u0000\u0103\u08a0\u0001\u0000\u0000\u0000\u0105\u08a8\u0001\u0000\u0000"+ + "\u0000\u0107\u08b0\u0001\u0000\u0000\u0000\u0109\u08b6\u0001\u0000\u0000"+ + "\u0000\u010b\u08bb\u0001\u0000\u0000\u0000\u010d\u08c4\u0001\u0000\u0000"+ + "\u0000\u010f\u08ca\u0001\u0000\u0000\u0000\u0111\u08d2\u0001\u0000\u0000"+ + "\u0000\u0113\u08da\u0001\u0000\u0000\u0000\u0115\u08e0\u0001\u0000\u0000"+ + "\u0000\u0117\u08e9\u0001\u0000\u0000\u0000\u0119\u08f0\u0001\u0000\u0000"+ + "\u0000\u011b\u08f7\u0001\u0000\u0000\u0000\u011d\u08fb\u0001\u0000\u0000"+ + "\u0000\u011f\u0901\u0001\u0000\u0000\u0000\u0121\u0907\u0001\u0000\u0000"+ + "\u0000\u0123\u0911\u0001\u0000\u0000\u0000\u0125\u0916\u0001\u0000\u0000"+ + "\u0000\u0127\u091c\u0001\u0000\u0000\u0000\u0129\u0923\u0001\u0000\u0000"+ + "\u0000\u012b\u092d\u0001\u0000\u0000\u0000\u012d\u0938\u0001\u0000\u0000"+ + "\u0000\u012f\u093b\u0001\u0000\u0000\u0000\u0131\u0945\u0001\u0000\u0000"+ + "\u0000\u0133\u094e\u0001\u0000\u0000\u0000\u0135\u0955\u0001\u0000\u0000"+ + "\u0000\u0137\u095b\u0001\u0000\u0000\u0000\u0139\u095e\u0001\u0000\u0000"+ + "\u0000\u013b\u0964\u0001\u0000\u0000\u0000\u013d\u096b\u0001\u0000\u0000"+ + "\u0000\u013f\u0973\u0001\u0000\u0000\u0000\u0141\u097c\u0001\u0000\u0000"+ + "\u0000\u0143\u0984\u0001\u0000\u0000\u0000\u0145\u098a\u0001\u0000\u0000"+ + "\u0000\u0147\u099a\u0001\u0000\u0000\u0000\u0149\u09a5\u0001\u0000\u0000"+ + "\u0000\u014b\u09ab\u0001\u0000\u0000\u0000\u014d\u09b1\u0001\u0000\u0000"+ + "\u0000\u014f\u09b9\u0001\u0000\u0000\u0000\u0151\u09c1\u0001\u0000\u0000"+ + "\u0000\u0153\u09ca\u0001\u0000\u0000\u0000\u0155\u09d1\u0001\u0000\u0000"+ + "\u0000\u0157\u09db\u0001\u0000\u0000\u0000\u0159\u09e9\u0001\u0000\u0000"+ + "\u0000\u015b\u09f4\u0001\u0000\u0000\u0000\u015d\u0a00\u0001\u0000\u0000"+ + "\u0000\u015f\u0a08\u0001\u0000\u0000\u0000\u0161\u0a11\u0001\u0000\u0000"+ + "\u0000\u0163\u0a1c\u0001\u0000\u0000\u0000\u0165\u0a21\u0001\u0000\u0000"+ + "\u0000\u0167\u0a26\u0001\u0000\u0000\u0000\u0169\u0a2a\u0001\u0000\u0000"+ + "\u0000\u016b\u0a31\u0001\u0000\u0000\u0000\u016d\u0a37\u0001\u0000\u0000"+ + "\u0000\u016f\u0a3c\u0001\u0000\u0000\u0000\u0171\u0a45\u0001\u0000\u0000"+ + "\u0000\u0173\u0a49\u0001\u0000\u0000\u0000\u0175\u0a54\u0001\u0000\u0000"+ + "\u0000\u0177\u0a5c\u0001\u0000\u0000\u0000\u0179\u0a65\u0001\u0000\u0000"+ + "\u0000\u017b\u0a6e\u0001\u0000\u0000\u0000\u017d\u0a76\u0001\u0000\u0000"+ + "\u0000\u017f\u0a7d\u0001\u0000\u0000\u0000\u0181\u0a87\u0001\u0000\u0000"+ + "\u0000\u0183\u0a92\u0001\u0000\u0000\u0000\u0185\u0a9d\u0001\u0000\u0000"+ + "\u0000\u0187\u0aa5\u0001\u0000\u0000\u0000\u0189\u0aad\u0001\u0000\u0000"+ + "\u0000\u018b\u0ab6\u0001\u0000\u0000\u0000\u018d\u0abd\u0001\u0000\u0000"+ + "\u0000\u018f\u0ac4\u0001\u0000\u0000\u0000\u0191\u0ac9\u0001\u0000\u0000"+ + "\u0000\u0193\u0ace\u0001\u0000\u0000\u0000\u0195\u0ad5\u0001\u0000\u0000"+ + "\u0000\u0197\u0ade\u0001\u0000\u0000\u0000\u0199\u0ae8\u0001\u0000\u0000"+ + "\u0000\u019b\u0aed\u0001\u0000\u0000\u0000\u019d\u0af4\u0001\u0000\u0000"+ + "\u0000\u019f\u0afa\u0001\u0000\u0000\u0000\u01a1\u0b02\u0001\u0000\u0000"+ + "\u0000\u01a3\u0b0c\u0001\u0000\u0000\u0000\u01a5\u0b16\u0001\u0000\u0000"+ + "\u0000\u01a7\u0b1e\u0001\u0000\u0000\u0000\u01a9\u0b26\u0001\u0000\u0000"+ + "\u0000\u01ab\u0b30\u0001\u0000\u0000\u0000\u01ad\u0b39\u0001\u0000\u0000"+ + "\u0000\u01af\u0b40\u0001\u0000\u0000\u0000\u01b1\u0b46\u0001\u0000\u0000"+ + "\u0000\u01b3\u0b50\u0001\u0000\u0000\u0000\u01b5\u0b56\u0001\u0000\u0000"+ + "\u0000\u01b7\u0b5e\u0001\u0000\u0000\u0000\u01b9\u0b67\u0001\u0000\u0000"+ + "\u0000\u01bb\u0b71\u0001\u0000\u0000\u0000\u01bd\u0b78\u0001\u0000\u0000"+ + "\u0000\u01bf\u0b80\u0001\u0000\u0000\u0000\u01c1\u0b88\u0001\u0000\u0000"+ + "\u0000\u01c3\u0b8f\u0001\u0000\u0000\u0000\u01c5\u0b94\u0001\u0000\u0000"+ + "\u0000\u01c7\u0b99\u0001\u0000\u0000\u0000\u01c9\u0ba2\u0001\u0000\u0000"+ + "\u0000\u01cb\u0ba5\u0001\u0000\u0000\u0000\u01cd\u0baf\u0001\u0000\u0000"+ + "\u0000\u01cf\u0bb9\u0001\u0000\u0000\u0000\u01d1\u0bc2\u0001\u0000\u0000"+ + "\u0000\u01d3\u0bcc\u0001\u0000\u0000\u0000\u01d5\u0bd6\u0001\u0000\u0000"+ + "\u0000\u01d7\u0bdc\u0001\u0000\u0000\u0000\u01d9\u0be4\u0001\u0000\u0000"+ + "\u0000\u01db\u0bec\u0001\u0000\u0000\u0000\u01dd\u0bf5\u0001\u0000\u0000"+ + "\u0000\u01df\u0bfc\u0001\u0000\u0000\u0000\u01e1\u0c08\u0001\u0000\u0000"+ + "\u0000\u01e3\u0c0f\u0001\u0000\u0000\u0000\u01e5\u0c17\u0001\u0000\u0000"+ + "\u0000\u01e7\u0c1f\u0001\u0000\u0000\u0000\u01e9\u0c29\u0001\u0000\u0000"+ + "\u0000\u01eb\u0c2d\u0001\u0000\u0000\u0000\u01ed\u0c33\u0001\u0000\u0000"+ + "\u0000\u01ef\u0c3c\u0001\u0000\u0000\u0000\u01f1\u0c42\u0001\u0000\u0000"+ + "\u0000\u01f3\u0c47\u0001\u0000\u0000\u0000\u01f5\u0c51\u0001\u0000\u0000"+ + "\u0000\u01f7\u0c57\u0001\u0000\u0000\u0000\u01f9\u0c5e\u0001\u0000\u0000"+ + "\u0000\u01fb\u0c63\u0001\u0000\u0000\u0000\u01fd\u0c69\u0001\u0000\u0000"+ + "\u0000\u01ff\u0c72\u0001\u0000\u0000\u0000\u0201\u0c77\u0001\u0000\u0000"+ + "\u0000\u0203\u0c7f\u0001\u0000\u0000\u0000\u0205\u0c85\u0001\u0000\u0000"+ + "\u0000\u0207\u0c8d\u0001\u0000\u0000\u0000\u0209\u0c9a\u0001\u0000\u0000"+ + "\u0000\u020b\u0ca3\u0001\u0000\u0000\u0000\u020d\u0ca9\u0001\u0000\u0000"+ + "\u0000\u020f\u0cb0\u0001\u0000\u0000\u0000\u0211\u0cb9\u0001\u0000\u0000"+ + "\u0000\u0213\u0cbe\u0001\u0000\u0000\u0000\u0215\u0cc4\u0001\u0000\u0000"+ + "\u0000\u0217\u0cc9\u0001\u0000\u0000\u0000\u0219\u0cce\u0001\u0000\u0000"+ + "\u0000\u021b\u0cd4\u0001\u0000\u0000\u0000\u021d\u0cd9\u0001\u0000\u0000"+ + "\u0000\u021f\u0cdc\u0001\u0000\u0000\u0000\u0221\u0ce4\u0001\u0000\u0000"+ + "\u0000\u0223\u0ceb\u0001\u0000\u0000\u0000\u0225\u0cf2\u0001\u0000\u0000"+ + "\u0000\u0227\u0cf8\u0001\u0000\u0000\u0000\u0229\u0cff\u0001\u0000\u0000"+ + "\u0000\u022b\u0d02\u0001\u0000\u0000\u0000\u022d\u0d06\u0001\u0000\u0000"+ + "\u0000\u022f\u0d0b\u0001\u0000\u0000\u0000\u0231\u0d14\u0001\u0000\u0000"+ + "\u0000\u0233\u0d1b\u0001\u0000\u0000\u0000\u0235\u0d23\u0001\u0000\u0000"+ + "\u0000\u0237\u0d29\u0001\u0000\u0000\u0000\u0239\u0d2f\u0001\u0000\u0000"+ + "\u0000\u023b\u0d36\u0001\u0000\u0000\u0000\u023d\u0d3e\u0001\u0000\u0000"+ + "\u0000\u023f\u0d48\u0001\u0000\u0000\u0000\u0241\u0d50\u0001\u0000\u0000"+ + "\u0000\u0243\u0d59\u0001\u0000\u0000\u0000\u0245\u0d5f\u0001\u0000\u0000"+ + "\u0000\u0247\u0d69\u0001\u0000\u0000\u0000\u0249\u0d71\u0001\u0000\u0000"+ + "\u0000\u024b\u0d7a\u0001\u0000\u0000\u0000\u024d\u0d83\u0001\u0000\u0000"+ + "\u0000\u024f\u0d89\u0001\u0000\u0000\u0000\u0251\u0d94\u0001\u0000\u0000"+ + "\u0000\u0253\u0d9f\u0001\u0000\u0000\u0000\u0255\u0da9\u0001\u0000\u0000"+ + "\u0000\u0257\u0db1\u0001\u0000\u0000\u0000\u0259\u0db7\u0001\u0000\u0000"+ + "\u0000\u025b\u0dbd\u0001\u0000\u0000\u0000\u025d\u0dc2\u0001\u0000\u0000"+ + "\u0000\u025f\u0dcb\u0001\u0000\u0000\u0000\u0261\u0dd3\u0001\u0000\u0000"+ + "\u0000\u0263\u0ddd\u0001\u0000\u0000\u0000\u0265\u0de1\u0001\u0000\u0000"+ + "\u0000\u0267\u0de9\u0001\u0000\u0000\u0000\u0269\u0df1\u0001\u0000\u0000"+ + "\u0000\u026b\u0dfa\u0001\u0000\u0000\u0000\u026d\u0e02\u0001\u0000\u0000"+ + "\u0000\u026f\u0e09\u0001\u0000\u0000\u0000\u0271\u0e14\u0001\u0000\u0000"+ + "\u0000\u0273\u0e1c\u0001\u0000\u0000\u0000\u0275\u0e24\u0001\u0000\u0000"+ + "\u0000\u0277\u0e2a\u0001\u0000\u0000\u0000\u0279\u0e32\u0001\u0000\u0000"+ + "\u0000\u027b\u0e3b\u0001\u0000\u0000\u0000\u027d\u0e43\u0001\u0000\u0000"+ + "\u0000\u027f\u0e4a\u0001\u0000\u0000\u0000\u0281\u0e4f\u0001\u0000\u0000"+ + "\u0000\u0283\u0e58\u0001\u0000\u0000\u0000\u0285\u0e5d\u0001\u0000\u0000"+ + "\u0000\u0287\u0e62\u0001\u0000\u0000\u0000\u0289\u0e6c\u0001\u0000\u0000"+ + "\u0000\u028b\u0e73\u0001\u0000\u0000\u0000\u028d\u0e7a\u0001\u0000\u0000"+ + "\u0000\u028f\u0e81\u0001\u0000\u0000\u0000\u0291\u0e88\u0001\u0000\u0000"+ + "\u0000\u0293\u0e91\u0001\u0000\u0000\u0000\u0295\u0e9a\u0001\u0000\u0000"+ + "\u0000\u0297\u0ea4\u0001\u0000\u0000\u0000\u0299\u0eb1\u0001\u0000\u0000"+ + "\u0000\u029b\u0eb8\u0001\u0000\u0000\u0000\u029d\u0ec0\u0001\u0000\u0000"+ + "\u0000\u029f\u0ec4\u0001\u0000\u0000\u0000\u02a1\u0eca\u0001\u0000\u0000"+ + "\u0000\u02a3\u0ecf\u0001\u0000\u0000\u0000\u02a5\u0ed6\u0001\u0000\u0000"+ + "\u0000\u02a7\u0edf\u0001\u0000\u0000\u0000\u02a9\u0ee6\u0001\u0000\u0000"+ + "\u0000\u02ab\u0ef1\u0001\u0000\u0000\u0000\u02ad\u0ef7\u0001\u0000\u0000"+ + "\u0000\u02af\u0f01\u0001\u0000\u0000\u0000\u02b1\u0f0c\u0001\u0000\u0000"+ + "\u0000\u02b3\u0f12\u0001\u0000\u0000\u0000\u02b5\u0f19\u0001\u0000\u0000"+ + "\u0000\u02b7\u0f21\u0001\u0000\u0000\u0000\u02b9\u0f28\u0001\u0000\u0000"+ + "\u0000\u02bb\u0f2e\u0001\u0000\u0000\u0000\u02bd\u0f34\u0001\u0000\u0000"+ + "\u0000\u02bf\u0f3b\u0001\u0000\u0000\u0000\u02c1\u0f42\u0001\u0000\u0000"+ + "\u0000\u02c3\u0f4d\u0001\u0000\u0000\u0000\u02c5\u0f52\u0001\u0000\u0000"+ + "\u0000\u02c7\u0f5b\u0001\u0000\u0000\u0000\u02c9\u0f65\u0001\u0000\u0000"+ + "\u0000\u02cb\u0f6a\u0001\u0000\u0000\u0000\u02cd\u0f76\u0001\u0000\u0000"+ + "\u0000\u02cf\u0f7e\u0001\u0000\u0000\u0000\u02d1\u0f87\u0001\u0000\u0000"+ + "\u0000\u02d3\u0f8f\u0001\u0000\u0000\u0000\u02d5\u0f94\u0001\u0000\u0000"+ + "\u0000\u02d7\u0f9a\u0001\u0000\u0000\u0000\u02d9\u0fa4\u0001\u0000\u0000"+ + "\u0000\u02db\u0fb0\u0001\u0000\u0000\u0000\u02dd\u0fbc\u0001\u0000\u0000"+ + "\u0000\u02df\u0fc4\u0001\u0000\u0000\u0000\u02e1\u0fcd\u0001\u0000\u0000"+ + "\u0000\u02e3\u0fd6\u0001\u0000\u0000\u0000\u02e5\u0fdc\u0001\u0000\u0000"+ + "\u0000\u02e7\u0fe3"; + private static final String _serializedATNSegment1 = + "\u0001\u0000\u0000\u0000\u02e9\u0fea\u0001\u0000\u0000\u0000\u02eb\u0ff0"+ + "\u0001\u0000\u0000\u0000\u02ed\u0ff9\u0001\u0000\u0000\u0000\u02ef\u1003"+ + "\u0001\u0000\u0000\u0000\u02f1\u100b\u0001\u0000\u0000\u0000\u02f3\u1013"+ + "\u0001\u0000\u0000\u0000\u02f5\u1018\u0001\u0000\u0000\u0000\u02f7\u1021"+ + "\u0001\u0000\u0000\u0000\u02f9\u102c\u0001\u0000\u0000\u0000\u02fb\u1034"+ + "\u0001\u0000\u0000\u0000\u02fd\u1039\u0001\u0000\u0000\u0000\u02ff\u1041"+ + "\u0001\u0000\u0000\u0000\u0301\u1047\u0001\u0000\u0000\u0000\u0303\u104b"+ + "\u0001\u0000\u0000\u0000\u0305\u1050\u0001\u0000\u0000\u0000\u0307\u1054"+ + "\u0001\u0000\u0000\u0000\u0309\u1059\u0001\u0000\u0000\u0000\u030b\u1061"+ + "\u0001\u0000\u0000\u0000\u030d\u1068\u0001\u0000\u0000\u0000\u030f\u106c"+ + "\u0001\u0000\u0000\u0000\u0311\u1074\u0001\u0000\u0000\u0000\u0313\u1079"+ + "\u0001\u0000\u0000\u0000\u0315\u1083\u0001\u0000\u0000\u0000\u0317\u108c"+ + "\u0001\u0000\u0000\u0000\u0319\u1090\u0001\u0000\u0000\u0000\u031b\u1098"+ + "\u0001\u0000\u0000\u0000\u031d\u109f\u0001\u0000\u0000\u0000\u031f\u10a7"+ + "\u0001\u0000\u0000\u0000\u0321\u10ad\u0001\u0000\u0000\u0000\u0323\u10b6"+ + "\u0001\u0000\u0000\u0000\u0325\u10bc\u0001\u0000\u0000\u0000\u0327\u10c0"+ + "\u0001\u0000\u0000\u0000\u0329\u10c8\u0001\u0000\u0000\u0000\u032b\u10d1"+ + "\u0001\u0000\u0000\u0000\u032d\u10d7\u0001\u0000\u0000\u0000\u032f\u10e0"+ + "\u0001\u0000\u0000\u0000\u0331\u10e6\u0001\u0000\u0000\u0000\u0333\u10eb"+ + "\u0001\u0000\u0000\u0000\u0335\u10f2\u0001\u0000\u0000\u0000\u0337\u10fa"+ + "\u0001\u0000\u0000\u0000\u0339\u1102\u0001\u0000\u0000\u0000\u033b\u110b"+ + "\u0001\u0000\u0000\u0000\u033d\u1115\u0001\u0000\u0000\u0000\u033f\u111a"+ + "\u0001\u0000\u0000\u0000\u0341\u111e\u0001\u0000\u0000\u0000\u0343\u1124"+ + "\u0001\u0000\u0000\u0000\u0345\u112d\u0001\u0000\u0000\u0000\u0347\u1137"+ + "\u0001\u0000\u0000\u0000\u0349\u113c\u0001\u0000\u0000\u0000\u034b\u1146"+ + "\u0001\u0000\u0000\u0000\u034d\u114c\u0001\u0000\u0000\u0000\u034f\u1151"+ + "\u0001\u0000\u0000\u0000\u0351\u1158\u0001\u0000\u0000\u0000\u0353\u1160"+ + "\u0001\u0000\u0000\u0000\u0355\u116e\u0001\u0000\u0000\u0000\u0357\u1179"+ + "\u0001\u0000\u0000\u0000\u0359\u1180\u0001\u0000\u0000\u0000\u035b\u1193"+ + "\u0001\u0000\u0000\u0000\u035d\u11af\u0001\u0000\u0000\u0000\u035f\u11ca"+ + "\u0001\u0000\u0000\u0000\u0361\u11d0\u0001\u0000\u0000\u0000\u0363\u11dd"+ + "\u0001\u0000\u0000\u0000\u0365\u11e7\u0001\u0000\u0000\u0000\u0367\u11f2"+ + "\u0001\u0000\u0000\u0000\u0369\u11fc\u0001\u0000\u0000\u0000\u036b\u1206"+ + "\u0001\u0000\u0000\u0000\u036d\u120f\u0001\u0000\u0000\u0000\u036f\u1215"+ + "\u0001\u0000\u0000\u0000\u0371\u121d\u0001\u0000\u0000\u0000\u0373\u122a"+ + "\u0001\u0000\u0000\u0000\u0375\u122f\u0001\u0000\u0000\u0000\u0377\u1237"+ + "\u0001\u0000\u0000\u0000\u0379\u123e\u0001\u0000\u0000\u0000\u037b\u1245"+ + "\u0001\u0000\u0000\u0000\u037d\u1250\u0001\u0000\u0000\u0000\u037f\u125a"+ + "\u0001\u0000\u0000\u0000\u0381\u1261\u0001\u0000\u0000\u0000\u0383\u1268"+ + "\u0001\u0000\u0000\u0000\u0385\u1270\u0001\u0000\u0000\u0000\u0387\u1278"+ + "\u0001\u0000\u0000\u0000\u0389\u1282\u0001\u0000\u0000\u0000\u038b\u1289"+ + "\u0001\u0000\u0000\u0000\u038d\u1290\u0001\u0000\u0000\u0000\u038f\u1297"+ + "\u0001\u0000\u0000\u0000\u0391\u12a3\u0001\u0000\u0000\u0000\u0393\u12a7"+ + "\u0001\u0000\u0000\u0000\u0395\u12ab\u0001\u0000\u0000\u0000\u0397\u12b1"+ + "\u0001\u0000\u0000\u0000\u0399\u12be\u0001\u0000\u0000\u0000\u039b\u12ca"+ + "\u0001\u0000\u0000\u0000\u039d\u12ce\u0001\u0000\u0000\u0000\u039f\u12d2"+ + "\u0001\u0000\u0000\u0000\u03a1\u12db\u0001\u0000\u0000\u0000\u03a3\u12e3"+ + "\u0001\u0000\u0000\u0000\u03a5\u12ee\u0001\u0000\u0000\u0000\u03a7\u12f4"+ + "\u0001\u0000\u0000\u0000\u03a9\u12fc\u0001\u0000\u0000\u0000\u03ab\u1305"+ + "\u0001\u0000\u0000\u0000\u03ad\u1309\u0001\u0000\u0000\u0000\u03af\u1311"+ + "\u0001\u0000\u0000\u0000\u03b1\u131c\u0001\u0000\u0000\u0000\u03b3\u1325"+ + "\u0001\u0000\u0000\u0000\u03b5\u132a\u0001\u0000\u0000\u0000\u03b7\u1331"+ + "\u0001\u0000\u0000\u0000\u03b9\u1336\u0001\u0000\u0000\u0000\u03bb\u133d"+ + "\u0001\u0000\u0000\u0000\u03bd\u1342\u0001\u0000\u0000\u0000\u03bf\u134b"+ + "\u0001\u0000\u0000\u0000\u03c1\u1350\u0001\u0000\u0000\u0000\u03c3\u135c"+ + "\u0001\u0000\u0000\u0000\u03c5\u1367\u0001\u0000\u0000\u0000\u03c7\u1370"+ + "\u0001\u0000\u0000\u0000\u03c9\u1378\u0001\u0000\u0000\u0000\u03cb\u1386"+ + "\u0001\u0000\u0000\u0000\u03cd\u138e\u0001\u0000\u0000\u0000\u03cf\u1399"+ + "\u0001\u0000\u0000\u0000\u03d1\u13a0\u0001\u0000\u0000\u0000\u03d3\u13a7"+ + "\u0001\u0000\u0000\u0000\u03d5\u13ae\u0001\u0000\u0000\u0000\u03d7\u13b5"+ + "\u0001\u0000\u0000\u0000\u03d9\u13b9\u0001\u0000\u0000\u0000\u03db\u13bd"+ + "\u0001\u0000\u0000\u0000\u03dd\u13c2\u0001\u0000\u0000\u0000\u03df\u13c7"+ + "\u0001\u0000\u0000\u0000\u03e1\u13cf\u0001\u0000\u0000\u0000\u03e3\u13d5"+ + "\u0001\u0000\u0000\u0000\u03e5\u13df\u0001\u0000\u0000\u0000\u03e7\u13e4"+ + "\u0001\u0000\u0000\u0000\u03e9\u13f8\u0001\u0000\u0000\u0000\u03eb\u140a"+ + "\u0001\u0000\u0000\u0000\u03ed\u1410\u0001\u0000\u0000\u0000\u03ef\u141d"+ + "\u0001\u0000\u0000\u0000\u03f1\u1428\u0001\u0000\u0000\u0000\u03f3\u142e"+ + "\u0001\u0000\u0000\u0000\u03f5\u1437\u0001\u0000\u0000\u0000\u03f7\u143f"+ + "\u0001\u0000\u0000\u0000\u03f9\u1443\u0001\u0000\u0000\u0000\u03fb\u144f"+ + "\u0001\u0000\u0000\u0000\u03fd\u1457\u0001\u0000\u0000\u0000\u03ff\u145d"+ + "\u0001\u0000\u0000\u0000\u0401\u1463\u0001\u0000\u0000\u0000\u0403\u146b"+ + "\u0001\u0000\u0000\u0000\u0405\u1473\u0001\u0000\u0000\u0000\u0407\u1479"+ + "\u0001\u0000\u0000\u0000\u0409\u147e\u0001\u0000\u0000\u0000\u040b\u1485"+ + "\u0001\u0000\u0000\u0000\u040d\u148b\u0001\u0000\u0000\u0000\u040f\u1491"+ + "\u0001\u0000\u0000\u0000\u0411\u149a\u0001\u0000\u0000\u0000\u0413\u14a0"+ + "\u0001\u0000\u0000\u0000\u0415\u14a4\u0001\u0000\u0000\u0000\u0417\u14a9"+ + "\u0001\u0000\u0000\u0000\u0419\u14b0\u0001\u0000\u0000\u0000\u041b\u14b8"+ + "\u0001\u0000\u0000\u0000\u041d\u14c2\u0001\u0000\u0000\u0000\u041f\u14c9"+ + "\u0001\u0000\u0000\u0000\u0421\u14ce\u0001\u0000\u0000\u0000\u0423\u14d3"+ + "\u0001\u0000\u0000\u0000\u0425\u14d7\u0001\u0000\u0000\u0000\u0427\u14dc"+ + "\u0001\u0000\u0000\u0000\u0429\u14e1\u0001\u0000\u0000\u0000\u042b\u14e9"+ + "\u0001\u0000\u0000\u0000\u042d\u14f1\u0001\u0000\u0000\u0000\u042f\u14f5"+ + "\u0001\u0000\u0000\u0000\u0431\u14f9\u0001\u0000\u0000\u0000\u0433\u1503"+ + "\u0001\u0000\u0000\u0000\u0435\u1509\u0001\u0000\u0000\u0000\u0437\u150d"+ + "\u0001\u0000\u0000\u0000\u0439\u1511\u0001\u0000\u0000\u0000\u043b\u1514"+ + "\u0001\u0000\u0000\u0000\u043d\u151a\u0001\u0000\u0000\u0000\u043f\u1524"+ + "\u0001\u0000\u0000\u0000\u0441\u1528\u0001\u0000\u0000\u0000\u0443\u152b"+ + "\u0001\u0000\u0000\u0000\u0445\u1531\u0001\u0000\u0000\u0000\u0447\u1539"+ + "\u0001\u0000\u0000\u0000\u0449\u153f\u0001\u0000\u0000\u0000\u044b\u1545"+ + "\u0001\u0000\u0000\u0000\u044d\u154a\u0001\u0000\u0000\u0000\u044f\u154f"+ + "\u0001\u0000\u0000\u0000\u0451\u155a\u0001\u0000\u0000\u0000\u0453\u1560"+ + "\u0001\u0000\u0000\u0000\u0455\u156d\u0001\u0000\u0000\u0000\u0457\u1574"+ + "\u0001\u0000\u0000\u0000\u0459\u157c\u0001\u0000\u0000\u0000\u045b\u1581"+ + "\u0001\u0000\u0000\u0000\u045d\u1587\u0001\u0000\u0000\u0000\u045f\u158c"+ + "\u0001\u0000\u0000\u0000\u0461\u1592\u0001\u0000\u0000\u0000\u0463\u1597"+ + "\u0001\u0000\u0000\u0000\u0465\u159d\u0001\u0000\u0000\u0000\u0467\u15a3"+ + "\u0001\u0000\u0000\u0000\u0469\u15aa\u0001\u0000\u0000\u0000\u046b\u15ae"+ + "\u0001\u0000\u0000\u0000\u046d\u15b3\u0001\u0000\u0000\u0000\u046f\u15b7"+ + "\u0001\u0000\u0000\u0000\u0471\u15bc\u0001\u0000\u0000\u0000\u0473\u15c0"+ + "\u0001\u0000\u0000\u0000\u0475\u15c5\u0001\u0000\u0000\u0000\u0477\u15c9"+ + "\u0001\u0000\u0000\u0000\u0479\u15ce\u0001\u0000\u0000\u0000\u047b\u15d3"+ + "\u0001\u0000\u0000\u0000\u047d\u15d8\u0001\u0000\u0000\u0000\u047f\u15dd"+ + "\u0001\u0000\u0000\u0000\u0481\u15e3\u0001\u0000\u0000\u0000\u0483\u15e9"+ + "\u0001\u0000\u0000\u0000\u0485\u15ef\u0001\u0000\u0000\u0000\u0487\u15fa"+ + "\u0001\u0000\u0000\u0000\u0489\u1606\u0001\u0000\u0000\u0000\u048b\u1617"+ + "\u0001\u0000\u0000\u0000\u048d\u161d\u0001\u0000\u0000\u0000\u048f\u162a"+ + "\u0001\u0000\u0000\u0000\u0491\u1630\u0001\u0000\u0000\u0000\u0493\u1636"+ + "\u0001\u0000\u0000\u0000\u0495\u163c\u0001\u0000\u0000\u0000\u0497\u1640"+ + "\u0001\u0000\u0000\u0000\u0499\u1647\u0001\u0000\u0000\u0000\u049b\u1651"+ + "\u0001\u0000\u0000\u0000\u049d\u1658\u0001\u0000\u0000\u0000\u049f\u1660"+ + "\u0001\u0000\u0000\u0000\u04a1\u1667\u0001\u0000\u0000\u0000\u04a3\u166c"+ + "\u0001\u0000\u0000\u0000\u04a5\u1672\u0001\u0000\u0000\u0000\u04a7\u1676"+ + "\u0001\u0000\u0000\u0000\u04a9\u1682\u0001\u0000\u0000\u0000\u04ab\u1695"+ + "\u0001\u0000\u0000\u0000\u04ad\u16a1\u0001\u0000\u0000\u0000\u04af\u16af"+ + "\u0001\u0000\u0000\u0000\u04b1\u16be\u0001\u0000\u0000\u0000\u04b3\u16cb"+ + "\u0001\u0000\u0000\u0000\u04b5\u16d8\u0001\u0000\u0000\u0000\u04b7\u16e4"+ + "\u0001\u0000\u0000\u0000\u04b9\u16f1\u0001\u0000\u0000\u0000\u04bb\u1700"+ + "\u0001\u0000\u0000\u0000\u04bd\u170f\u0001\u0000\u0000\u0000\u04bf\u1725"+ + "\u0001\u0000\u0000\u0000\u04c1\u173b\u0001\u0000\u0000\u0000\u04c3\u1749"+ + "\u0001\u0000\u0000\u0000\u04c5\u1750\u0001\u0000\u0000\u0000\u04c7\u1755"+ + "\u0001\u0000\u0000\u0000\u04c9\u175b\u0001\u0000\u0000\u0000\u04cb\u1766"+ + "\u0001\u0000\u0000\u0000\u04cd\u1772\u0001\u0000\u0000\u0000\u04cf\u1782"+ + "\u0001\u0000\u0000\u0000\u04d1\u1792\u0001\u0000\u0000\u0000\u04d3\u1799"+ + "\u0001\u0000\u0000\u0000\u04d5\u17a0\u0001\u0000\u0000\u0000\u04d7\u17a9"+ + "\u0001\u0000\u0000\u0000\u04d9\u17b0\u0001\u0000\u0000\u0000\u04db\u17ba"+ + "\u0001\u0000\u0000\u0000\u04dd\u17c1\u0001\u0000\u0000\u0000\u04df\u17c5"+ + "\u0001\u0000\u0000\u0000\u04e1\u17d5\u0001\u0000\u0000\u0000\u04e3\u17de"+ + "\u0001\u0000\u0000\u0000\u04e5\u17e8\u0001\u0000\u0000\u0000\u04e7\u17f3"+ + "\u0001\u0000\u0000\u0000\u04e9\u17fc\u0001\u0000\u0000\u0000\u04eb\u1809"+ + "\u0001\u0000\u0000\u0000\u04ed\u1817\u0001\u0000\u0000\u0000\u04ef\u1828"+ + "\u0001\u0000\u0000\u0000\u04f1\u1832\u0001\u0000\u0000\u0000\u04f3\u1840"+ + "\u0001\u0000\u0000\u0000\u04f5\u184a\u0001\u0000\u0000\u0000\u04f7\u1859"+ + "\u0001\u0000\u0000\u0000\u04f9\u186a\u0001\u0000\u0000\u0000\u04fb\u186e"+ + "\u0001\u0000\u0000\u0000\u04fd\u1882\u0001\u0000\u0000\u0000\u04ff\u188c"+ + "\u0001\u0000\u0000\u0000\u0501\u18a2\u0001\u0000\u0000\u0000\u0503\u18af"+ + "\u0001\u0000\u0000\u0000\u0505\u18b7\u0001\u0000\u0000\u0000\u0507\u18bf"+ + "\u0001\u0000\u0000\u0000\u0509\u18c9\u0001\u0000\u0000\u0000\u050b\u18d6"+ + "\u0001\u0000\u0000\u0000\u050d\u18da\u0001\u0000\u0000\u0000\u050f\u18de"+ + "\u0001\u0000\u0000\u0000\u0511\u18e0\u0001\u0000\u0000\u0000\u0513\u18e3"+ + "\u0001\u0000\u0000\u0000\u0515\u18ec\u0001\u0000\u0000\u0000\u0517\u18ef"+ + "\u0001\u0000\u0000\u0000\u0519\u18f8\u0001\u0000\u0000\u0000\u051b\u18fc"+ + "\u0001\u0000\u0000\u0000\u051d\u1900\u0001\u0000\u0000\u0000\u051f\u1904"+ + "\u0001\u0000\u0000\u0000\u0521\u1908\u0001\u0000\u0000\u0000\u0523\u190b"+ + "\u0001\u0000\u0000\u0000\u0525\u1914\u0001\u0000\u0000\u0000\u0527\u191a"+ + "\u0001\u0000\u0000\u0000\u0529\u191d\u0001\u0000\u0000\u0000\u052b\u1921"+ + "\u0001\u0000\u0000\u0000\u052d\u192a\u0001\u0000\u0000\u0000\u052f\u1931"+ + "\u0001\u0000\u0000\u0000\u0531\u1934\u0001\u0000\u0000\u0000\u0533\u193c"+ + "\u0001\u0000\u0000\u0000\u0535\u193f\u0001\u0000\u0000\u0000\u0537\u1942"+ + "\u0001\u0000\u0000\u0000\u0539\u1945\u0001\u0000\u0000\u0000\u053b\u194d"+ + "\u0001\u0000\u0000\u0000\u053d\u1950\u0001\u0000\u0000\u0000\u053f\u1953"+ + "\u0001\u0000\u0000\u0000\u0541\u1955\u0001\u0000\u0000\u0000\u0543\u1977"+ + "\u0001\u0000\u0000\u0000\u0545\u197a\u0001\u0000\u0000\u0000\u0547\u197e"+ + "\u0001\u0000\u0000\u0000\u0549\u1986\u0001\u0000\u0000\u0000\u054b\u1996"+ + "\u0001\u0000\u0000\u0000\u054d\u19a1\u0001\u0000\u0000\u0000\u054f\u19a5"+ + "\u0001\u0000\u0000\u0000\u0551\u19b0\u0001\u0000\u0000\u0000\u0553\u19d7"+ + "\u0001\u0000\u0000\u0000\u0555\u1a0a\u0001\u0000\u0000\u0000\u0557\u1a22"+ + "\u0001\u0000\u0000\u0000\u0559\u1a25\u0001\u0000\u0000\u0000\u055b\u1a27"+ + "\u0001\u0000\u0000\u0000\u055d\u1a2c\u0001\u0000\u0000\u0000\u055f\u1a4b"+ + "\u0001\u0000\u0000\u0000\u0561\u1a4e\u0001\u0000\u0000\u0000\u0563\u1a53"+ + "\u0001\u0000\u0000\u0000\u0565\u1a60\u0001\u0000\u0000\u0000\u0567\u1a63"+ + "\u0001\u0000\u0000\u0000\u0569\u1a68\u0001\u0000\u0000\u0000\u056b\u1a6e"+ + "\u0001\u0000\u0000\u0000\u056d\u1a73\u0001\u0000\u0000\u0000\u056f\u1a78"+ + "\u0001\u0000\u0000\u0000\u0571\u1a7d\u0001\u0000\u0000\u0000\u0573\u1a82"+ + "\u0001\u0000\u0000\u0000\u0575\u1a93\u0001\u0000\u0000\u0000\u0577\u1a95"+ + "\u0001\u0000\u0000\u0000\u0579\u057a\u0005$\u0000\u0000\u057a\u0006\u0001"+ + "\u0000\u0000\u0000\u057b\u057c\u0005(\u0000\u0000\u057c\b\u0001\u0000"+ + "\u0000\u0000\u057d\u057e\u0005)\u0000\u0000\u057e\n\u0001\u0000\u0000"+ + "\u0000\u057f\u0580\u0005[\u0000\u0000\u0580\f\u0001\u0000\u0000\u0000"+ + "\u0581\u0582\u0005]\u0000\u0000\u0582\u000e\u0001\u0000\u0000\u0000\u0583"+ + "\u0584\u0005,\u0000\u0000\u0584\u0010\u0001\u0000\u0000\u0000\u0585\u0586"+ + "\u0005;\u0000\u0000\u0586\u0012\u0001\u0000\u0000\u0000\u0587\u0588\u0005"+ + ":\u0000\u0000\u0588\u0014\u0001\u0000\u0000\u0000\u0589\u058a\u0005*\u0000"+ + "\u0000\u058a\u0016\u0001\u0000\u0000\u0000\u058b\u058c\u0005=\u0000\u0000"+ + "\u058c\u0018\u0001\u0000\u0000\u0000\u058d\u058e\u0005.\u0000\u0000\u058e"+ + "\u001a\u0001\u0000\u0000\u0000\u058f\u0590\u0005+\u0000\u0000\u0590\u001c"+ + "\u0001\u0000\u0000\u0000\u0591\u0592\u0005-\u0000\u0000\u0592\u001e\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&\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,\u0001\u0000\u0000\u0000\u05a4\u05a5\u0005<\u0000"+ + "\u0000\u05a5\u05a6\u0005=\u0000\u0000\u05a6.\u0001\u0000\u0000\u0000\u05a7"+ + "\u05a8\u0005=\u0000\u0000\u05a8\u05a9\u0005>\u0000\u0000\u05a90\u0001"+ + "\u0000\u0000\u0000\u05aa\u05ab\u0005>\u0000\u0000\u05ab\u05ac\u0005=\u0000"+ + "\u0000\u05ac2\u0001\u0000\u0000\u0000\u05ad\u05ae\u0005.\u0000\u0000\u05ae"+ + "\u05af\u0005.\u0000\u0000\u05af4\u0001\u0000\u0000\u0000\u05b0\u05b1\u0005"+ + "<\u0000\u0000\u05b1\u05b2\u0005>\u0000\u0000\u05b26\u0001\u0000\u0000"+ + "\u0000\u05b3\u05b4\u0005:\u0000\u0000\u05b4\u05b5\u0005:\u0000\u0000\u05b5"+ + "8\u0001\u0000\u0000\u0000\u05b6\u05b7\u0005%\u0000\u0000\u05b7:\u0001"+ + "\u0000\u0000\u0000\u05b8\u05ba\u0005$\u0000\u0000\u05b9\u05bb\u0007\u0000"+ + "\u0000\u0000\u05ba\u05b9\u0001\u0000\u0000\u0000\u05bb\u05bc\u0001\u0000"+ + "\u0000\u0000\u05bc\u05ba\u0001\u0000\u0000\u0000\u05bc\u05bd\u0001\u0000"+ + "\u0000\u0000\u05bd<\u0001\u0000\u0000\u0000\u05be\u05ce\u0003A\u001e\u0000"+ + "\u05bf\u05c3\u0005+\u0000\u0000\u05c0\u05c1\u0005-\u0000\u0000\u05c1\u05c3"+ + "\u0004\u001c\u0000\u0000\u05c2\u05bf\u0001\u0000\u0000\u0000\u05c2\u05c0"+ + "\u0001\u0000\u0000\u0000\u05c3\u05c4\u0001\u0000\u0000\u0000\u05c4\u05c2"+ + "\u0001\u0000\u0000\u0000\u05c4\u05c5\u0001\u0000\u0000\u0000\u05c5\u05c9"+ + "\u0001\u0000\u0000\u0000\u05c6\u05ca\u0003A\u001e\u0000\u05c7\u05c8\u0005"+ + "/\u0000\u0000\u05c8\u05ca\u0004\u001c\u0001\u0000\u05c9\u05c6\u0001\u0000"+ + "\u0000\u0000\u05c9\u05c7\u0001\u0000\u0000\u0000\u05ca\u05ce\u0001\u0000"+ + "\u0000\u0000\u05cb\u05cc\u0005/\u0000\u0000\u05cc\u05ce\u0004\u001c\u0002"+ + "\u0000\u05cd\u05be\u0001\u0000\u0000\u0000\u05cd\u05c2\u0001\u0000\u0000"+ + "\u0000\u05cd\u05cb\u0001\u0000\u0000\u0000\u05ce\u05cf\u0001\u0000\u0000"+ + "\u0000\u05cf\u05cd\u0001\u0000\u0000\u0000\u05cf\u05d0\u0001\u0000\u0000"+ + "\u0000\u05d0\u05d3\u0001\u0000\u0000\u0000\u05d1\u05d3\u0007\u0001\u0000"+ + "\u0000\u05d2\u05cd\u0001\u0000\u0000\u0000\u05d2\u05d1\u0001\u0000\u0000"+ + "\u0000\u05d3\u05d4\u0001\u0000\u0000\u0000\u05d4\u05d5\u0006\u001c\u0000"+ + "\u0000\u05d5>\u0001\u0000\u0000\u0000\u05d6\u05dc\u0003C\u001f\u0000\u05d7"+ + "\u05d8\u0005-\u0000\u0000\u05d8\u05dc\u0004\u001d\u0003\u0000\u05d9\u05da"+ + "\u0005/\u0000\u0000\u05da\u05dc\u0004\u001d\u0004\u0000\u05db\u05d6\u0001"+ + "\u0000\u0000\u0000\u05db\u05d7\u0001\u0000\u0000\u0000\u05db\u05d9\u0001"+ + "\u0000\u0000\u0000\u05dc\u05df\u0001\u0000\u0000\u0000\u05dd\u05db\u0001"+ + "\u0000\u0000\u0000\u05dd\u05de\u0001\u0000\u0000\u0000\u05de\u05e0\u0001"+ + "\u0000\u0000\u0000\u05df\u05dd\u0001\u0000\u0000\u0000\u05e0\u05e2\u0003"+ + "E \u0000\u05e1\u05e3\u0003=\u001c\u0000\u05e2\u05e1\u0001\u0000\u0000"+ + "\u0000\u05e2\u05e3\u0001\u0000\u0000\u0000\u05e3\u05e7\u0001\u0000\u0000"+ + "\u0000\u05e4\u05e8\u0005+\u0000\u0000\u05e5\u05e6\u0005-\u0000\u0000\u05e6"+ + "\u05e8\u0004\u001d\u0005\u0000\u05e7\u05e4\u0001\u0000\u0000\u0000\u05e7"+ + "\u05e5\u0001\u0000\u0000\u0000\u05e8\u05e9\u0001\u0000\u0000\u0000\u05e9"+ + "\u05e7\u0001\u0000\u0000\u0000\u05e9\u05ea\u0001\u0000\u0000\u0000\u05ea"+ + "\u05eb\u0001\u0000\u0000\u0000\u05eb\u05ec\u0006\u001d\u0001\u0000\u05ec"+ + "@\u0001\u0000\u0000\u0000\u05ed\u05ee\u0007\u0002\u0000\u0000\u05eeB\u0001"+ + "\u0000\u0000\u0000\u05ef\u05f0\u0007\u0003\u0000\u0000\u05f0D\u0001\u0000"+ + "\u0000\u0000\u05f1\u05f2\u0007\u0004\u0000\u0000\u05f2F\u0001\u0000\u0000"+ + "\u0000\u05f3\u05f4\u0007\u0005\u0000\u0000\u05f4\u05f5\u0007\u0006\u0000"+ + "\u0000\u05f5\u05f6\u0007\u0006\u0000\u0000\u05f6H\u0001\u0000\u0000\u0000"+ + "\u05f7\u05f8\u0007\u0005\u0000\u0000\u05f8\u05f9\u0007\u0007\u0000\u0000"+ + "\u05f9\u05fa\u0007\u0005\u0000\u0000\u05fa\u05fb\u0007\u0006\u0000\u0000"+ + "\u05fb\u05fc\u0007\b\u0000\u0000\u05fc\u05fd\u0007\t\u0000\u0000\u05fd"+ + "\u05fe\u0007\n\u0000\u0000\u05feJ\u0001\u0000\u0000\u0000\u05ff\u0600"+ + "\u0007\u0005\u0000\u0000\u0600\u0601\u0007\u0007\u0000\u0000\u0601\u0602"+ + "\u0007\u0005\u0000\u0000\u0602\u0603\u0007\u0006\u0000\u0000\u0603\u0604"+ + "\u0007\b\u0000\u0000\u0604\u0605\u0007\u000b\u0000\u0000\u0605\u0606\u0007"+ + "\n\u0000\u0000\u0606L\u0001\u0000\u0000\u0000\u0607\u0608\u0007\u0005"+ + "\u0000\u0000\u0608\u0609\u0007\u0007\u0000\u0000\u0609\u060a\u0007\f\u0000"+ + "\u0000\u060aN\u0001\u0000\u0000\u0000\u060b\u060c\u0007\u0005\u0000\u0000"+ + "\u060c\u060d\u0007\u0007\u0000\u0000\u060d\u060e\u0007\b\u0000\u0000\u060e"+ + "P\u0001\u0000\u0000\u0000\u060f\u0610\u0007\u0005\u0000\u0000\u0610\u0611"+ + "\u0007\r\u0000\u0000\u0611\u0612\u0007\r\u0000\u0000\u0612\u0613\u0007"+ + "\u0005\u0000\u0000\u0613\u0614\u0007\b\u0000\u0000\u0614R\u0001\u0000"+ + "\u0000\u0000\u0615\u0616\u0007\u0005\u0000\u0000\u0616\u0617\u0007\t\u0000"+ + "\u0000\u0617T\u0001\u0000\u0000\u0000\u0618\u0619\u0007\u0005\u0000\u0000"+ + "\u0619\u061a\u0007\t\u0000\u0000\u061a\u061b\u0007\u000e\u0000\u0000\u061b"+ + "V\u0001\u0000\u0000\u0000\u061c\u061d\u0007\u0005\u0000\u0000\u061d\u061e"+ + "\u0007\t\u0000\u0000\u061e\u061f\u0007\b\u0000\u0000\u061f\u0620\u0007"+ + "\u000f\u0000\u0000\u0620\u0621\u0007\u000f\u0000\u0000\u0621\u0622\u0007"+ + "\n\u0000\u0000\u0622\u0623\u0007\u0010\u0000\u0000\u0623\u0624\u0007\r"+ + "\u0000\u0000\u0624\u0625\u0007\u0011\u0000\u0000\u0625\u0626\u0007\u000e"+ + "\u0000\u0000\u0626X\u0001\u0000\u0000\u0000\u0627\u0628\u0007\u0012\u0000"+ + "\u0000\u0628\u0629\u0007\u0013\u0000\u0000\u0629\u062a\u0007\u0010\u0000"+ + "\u0000\u062a\u062b\u0007\u0014\u0000\u0000\u062bZ\u0001\u0000\u0000\u0000"+ + "\u062c\u062d\u0007\u000e\u0000\u0000\u062d\u062e\u0007\u0005\u0000\u0000"+ + "\u062e\u062f\u0007\t\u0000\u0000\u062f\u0630\u0007\n\u0000\u0000\u0630"+ + "\\\u0001\u0000\u0000\u0000\u0631\u0632\u0007\u000e\u0000\u0000\u0632\u0633"+ + "\u0007\u0005\u0000\u0000\u0633\u0634\u0007\t\u0000\u0000\u0634\u0635\u0007"+ + "\u0010\u0000\u0000\u0635^\u0001\u0000\u0000\u0000\u0636\u0637\u0007\u000e"+ + "\u0000\u0000\u0637\u0638\u0007\u0014\u0000\u0000\u0638\u0639\u0007\n\u0000"+ + "\u0000\u0639\u063a\u0007\u000e\u0000\u0000\u063a\u063b\u0007\u0015\u0000"+ + "\u0000\u063b`\u0001\u0000\u0000\u0000\u063c\u063d\u0007\u000e\u0000\u0000"+ + "\u063d\u063e\u0007\u0013\u0000\u0000\u063e\u063f\u0007\u0006\u0000\u0000"+ + "\u063f\u0640\u0007\u0006\u0000\u0000\u0640\u0641\u0007\u0005\u0000\u0000"+ + "\u0641\u0642\u0007\u0010\u0000\u0000\u0642\u0643\u0007\n\u0000\u0000\u0643"+ + "b\u0001\u0000\u0000\u0000\u0644\u0645\u0007\u000e\u0000\u0000\u0645\u0646"+ + "\u0007\u0013\u0000\u0000\u0646\u0647\u0007\u0006\u0000\u0000\u0647\u0648"+ + "\u0007\u0016\u0000\u0000\u0648\u0649\u0007\u000f\u0000\u0000\u0649\u064a"+ + "\u0007\u0007\u0000\u0000\u064ad\u0001\u0000\u0000\u0000\u064b\u064c\u0007"+ + "\u000e\u0000\u0000\u064c\u064d\u0007\u0013\u0000\u0000\u064d\u064e\u0007"+ + "\u0007\u0000\u0000\u064e\u064f\u0007\t\u0000\u0000\u064f\u0650\u0007\u0010"+ + "\u0000\u0000\u0650\u0651\u0007\r\u0000\u0000\u0651\u0652\u0007\u0005\u0000"+ + "\u0000\u0652\u0653\u0007\u0011\u0000\u0000\u0653\u0654\u0007\u0007\u0000"+ + "\u0000\u0654\u0655\u0007\u0010\u0000\u0000\u0655f\u0001\u0000\u0000\u0000"+ + "\u0656\u0657\u0007\u000e\u0000\u0000\u0657\u0658\u0007\r\u0000\u0000\u0658"+ + "\u0659\u0007\n\u0000\u0000\u0659\u065a\u0007\u0005\u0000\u0000\u065a\u065b"+ + "\u0007\u0010\u0000\u0000\u065b\u065c\u0007\n\u0000\u0000\u065ch\u0001"+ + "\u0000\u0000\u0000\u065d\u065e\u0007\u000e\u0000\u0000\u065e\u065f\u0007"+ + "\u0016\u0000\u0000\u065f\u0660\u0007\r\u0000\u0000\u0660\u0661\u0007\r"+ + "\u0000\u0000\u0661\u0662\u0007\n\u0000\u0000\u0662\u0663\u0007\u0007\u0000"+ + "\u0000\u0663\u0664\u0007\u0010\u0000\u0000\u0664\u0665\u0005_\u0000\u0000"+ + "\u0665\u0666\u0007\u000e\u0000\u0000\u0666\u0667\u0007\u0005\u0000\u0000"+ + "\u0667\u0668\u0007\u0010\u0000\u0000\u0668\u0669\u0007\u0005\u0000\u0000"+ + "\u0669\u066a\u0007\u0006\u0000\u0000\u066a\u066b\u0007\u0013\u0000\u0000"+ + "\u066b\u066c\u0007\u0017\u0000\u0000\u066cj\u0001\u0000\u0000\u0000\u066d"+ + "\u066e\u0007\u000e\u0000\u0000\u066e\u066f\u0007\u0016\u0000\u0000\u066f"+ + "\u0670\u0007\r\u0000\u0000\u0670\u0671\u0007\r\u0000\u0000\u0671\u0672"+ + "\u0007\n\u0000\u0000\u0672\u0673\u0007\u0007\u0000\u0000\u0673\u0674\u0007"+ + "\u0010\u0000\u0000\u0674\u0675\u0005_\u0000\u0000\u0675\u0676\u0007\f"+ + "\u0000\u0000\u0676\u0677\u0007\u0005\u0000\u0000\u0677\u0678\u0007\u0010"+ + "\u0000\u0000\u0678\u0679\u0007\n\u0000\u0000\u0679l\u0001\u0000\u0000"+ + "\u0000\u067a\u067b\u0007\u000e\u0000\u0000\u067b\u067c\u0007\u0016\u0000"+ + "\u0000\u067c\u067d\u0007\r\u0000\u0000\u067d\u067e\u0007\r\u0000\u0000"+ + "\u067e\u067f\u0007\n\u0000\u0000\u067f\u0680\u0007\u0007\u0000\u0000\u0680"+ + "\u0681\u0007\u0010\u0000\u0000\u0681\u0682\u0005_\u0000\u0000\u0682\u0683"+ + "\u0007\r\u0000\u0000\u0683\u0684\u0007\u0013\u0000\u0000\u0684\u0685\u0007"+ + "\u0006\u0000\u0000\u0685\u0686\u0007\n\u0000\u0000\u0686n\u0001\u0000"+ + "\u0000\u0000\u0687\u0688\u0007\u000e\u0000\u0000\u0688\u0689\u0007\u0016"+ + "\u0000\u0000\u0689\u068a\u0007\r\u0000\u0000\u068a\u068b\u0007\r\u0000"+ + "\u0000\u068b\u068c\u0007\n\u0000\u0000\u068c\u068d\u0007\u0007\u0000\u0000"+ + "\u068d\u068e\u0007\u0010\u0000\u0000\u068e\u068f\u0005_\u0000\u0000\u068f"+ + "\u0690\u0007\u0010\u0000\u0000\u0690\u0691\u0007\u0011\u0000\u0000\u0691"+ + "\u0692\u0007\u000f\u0000\u0000\u0692\u0693\u0007\n\u0000\u0000\u0693p"+ + "\u0001\u0000\u0000\u0000\u0694\u0695\u0007\u000e\u0000\u0000\u0695\u0696"+ + "\u0007\u0016\u0000\u0000\u0696\u0697\u0007\r\u0000\u0000\u0697\u0698\u0007"+ + "\r\u0000\u0000\u0698\u0699\u0007\n\u0000\u0000\u0699\u069a\u0007\u0007"+ + "\u0000\u0000\u069a\u069b\u0007\u0010\u0000\u0000\u069b\u069c\u0005_\u0000"+ + "\u0000\u069c\u069d\u0007\u0010\u0000\u0000\u069d\u069e\u0007\u0011\u0000"+ + "\u0000\u069e\u069f\u0007\u000f\u0000\u0000\u069f\u06a0\u0007\n\u0000\u0000"+ + "\u06a0\u06a1\u0007\t\u0000\u0000\u06a1\u06a2\u0007\u0010\u0000\u0000\u06a2"+ + "\u06a3\u0007\u0005\u0000\u0000\u06a3\u06a4\u0007\u000f\u0000\u0000\u06a4"+ + "\u06a5\u0007\u0018\u0000\u0000\u06a5r\u0001\u0000\u0000\u0000\u06a6\u06a7"+ + "\u0007\u000e\u0000\u0000\u06a7\u06a8\u0007\u0016\u0000\u0000\u06a8\u06a9"+ + "\u0007\r\u0000\u0000\u06a9\u06aa\u0007\r\u0000\u0000\u06aa\u06ab\u0007"+ + "\n\u0000\u0000\u06ab\u06ac\u0007\u0007\u0000\u0000\u06ac\u06ad\u0007\u0010"+ + "\u0000\u0000\u06ad\u06ae\u0005_\u0000\u0000\u06ae\u06af\u0007\u0016\u0000"+ + "\u0000\u06af\u06b0\u0007\t\u0000\u0000\u06b0\u06b1\u0007\n\u0000\u0000"+ + "\u06b1\u06b2\u0007\r\u0000\u0000\u06b2t\u0001\u0000\u0000\u0000\u06b3"+ + "\u06b4\u0007\f\u0000\u0000\u06b4\u06b5\u0007\n\u0000\u0000\u06b5\u06b6"+ + "\u0007\u0019\u0000\u0000\u06b6\u06b7\u0007\u0005\u0000\u0000\u06b7\u06b8"+ + "\u0007\u0016\u0000\u0000\u06b8\u06b9\u0007\u0006\u0000\u0000\u06b9\u06ba"+ + "\u0007\u0010\u0000\u0000\u06bav\u0001\u0000\u0000\u0000\u06bb\u06bc\u0007"+ + "\f\u0000\u0000\u06bc\u06bd\u0007\n\u0000\u0000\u06bd\u06be\u0007\u0019"+ + "\u0000\u0000\u06be\u06bf\u0007\n\u0000\u0000\u06bf\u06c0\u0007\r\u0000"+ + "\u0000\u06c0\u06c1\u0007\r\u0000\u0000\u06c1\u06c2\u0007\u0005\u0000\u0000"+ + "\u06c2\u06c3\u0007\u0012\u0000\u0000\u06c3\u06c4\u0007\u0006\u0000\u0000"+ + "\u06c4\u06c5\u0007\n\u0000\u0000\u06c5x\u0001\u0000\u0000\u0000\u06c6"+ + "\u06c7\u0007\f\u0000\u0000\u06c7\u06c8\u0007\n\u0000\u0000\u06c8\u06c9"+ + "\u0007\t\u0000\u0000\u06c9\u06ca\u0007\u000e\u0000\u0000\u06caz\u0001"+ + "\u0000\u0000\u0000\u06cb\u06cc\u0007\f\u0000\u0000\u06cc\u06cd\u0007\u0011"+ + "\u0000\u0000\u06cd\u06ce\u0007\t\u0000\u0000\u06ce\u06cf\u0007\u0010\u0000"+ + "\u0000\u06cf\u06d0\u0007\u0011\u0000\u0000\u06d0\u06d1\u0007\u0007\u0000"+ + "\u0000\u06d1\u06d2\u0007\u000e\u0000\u0000\u06d2\u06d3\u0007\u0010\u0000"+ + "\u0000\u06d3|\u0001\u0000\u0000\u0000\u06d4\u06d5\u0007\f\u0000\u0000"+ + "\u06d5\u06d6\u0007\u0013\u0000\u0000\u06d6~\u0001\u0000\u0000\u0000\u06d7"+ + "\u06d8\u0007\n\u0000\u0000\u06d8\u06d9\u0007\u0006\u0000\u0000\u06d9\u06da"+ + "\u0007\t\u0000\u0000\u06da\u06db\u0007\n\u0000\u0000\u06db\u0080\u0001"+ + "\u0000\u0000\u0000\u06dc\u06dd\u0007\n\u0000\u0000\u06dd\u06de\u0007\u001a"+ + "\u0000\u0000\u06de\u06df\u0007\u000e\u0000\u0000\u06df\u06e0\u0007\n\u0000"+ + "\u0000\u06e0\u06e1\u0007\u0018\u0000\u0000\u06e1\u06e2\u0007\u0010\u0000"+ + "\u0000\u06e2\u0082\u0001\u0000\u0000\u0000\u06e3\u06e4\u0007\u0019\u0000"+ + "\u0000\u06e4\u06e5\u0007\u0005\u0000\u0000\u06e5\u06e6\u0007\u0006\u0000"+ + "\u0000\u06e6\u06e7\u0007\t\u0000\u0000\u06e7\u06e8\u0007\n\u0000\u0000"+ + "\u06e8\u0084\u0001\u0000\u0000\u0000\u06e9\u06ea\u0007\u0019\u0000\u0000"+ + "\u06ea\u06eb\u0007\n\u0000\u0000\u06eb\u06ec\u0007\u0010\u0000\u0000\u06ec"+ + "\u06ed\u0007\u000e\u0000\u0000\u06ed\u06ee\u0007\u0014\u0000\u0000\u06ee"+ + "\u0086\u0001\u0000\u0000\u0000\u06ef\u06f0\u0007\u0019\u0000\u0000\u06f0"+ + "\u06f1\u0007\u0013\u0000\u0000\u06f1\u06f2\u0007\r\u0000\u0000\u06f2\u0088"+ + "\u0001\u0000\u0000\u0000\u06f3\u06f4\u0007\u0019\u0000\u0000\u06f4\u06f5"+ + "\u0007\u0013\u0000\u0000\u06f5\u06f6\u0007\r\u0000\u0000\u06f6\u06f7\u0007"+ + "\n\u0000\u0000\u06f7\u06f8\u0007\u0011\u0000\u0000\u06f8\u06f9\u0007\u0017"+ + "\u0000\u0000\u06f9\u06fa\u0007\u0007\u0000\u0000\u06fa\u008a\u0001\u0000"+ + "\u0000\u0000\u06fb\u06fc\u0007\u0019\u0000\u0000\u06fc\u06fd\u0007\r\u0000"+ + "\u0000\u06fd\u06fe\u0007\u0013\u0000\u0000\u06fe\u06ff\u0007\u000f\u0000"+ + "\u0000\u06ff\u008c\u0001\u0000\u0000\u0000\u0700\u0701\u0007\u0017\u0000"+ + "\u0000\u0701\u0702\u0007\r\u0000\u0000\u0702\u0703\u0007\u0005\u0000\u0000"+ + "\u0703\u0704\u0007\u0007\u0000\u0000\u0704\u0705\u0007\u0010\u0000\u0000"+ + "\u0705\u008e\u0001\u0000\u0000\u0000\u0706\u0707\u0007\u0017\u0000\u0000"+ + "\u0707\u0708\u0007\r\u0000\u0000\u0708\u0709\u0007\u0013\u0000\u0000\u0709"+ + "\u070a\u0007\u0016\u0000\u0000\u070a\u070b\u0007\u0018\u0000\u0000\u070b"+ + "\u0090\u0001\u0000\u0000\u0000\u070c\u070d\u0007\u0014\u0000\u0000\u070d"+ + "\u070e\u0007\u0005\u0000\u0000\u070e\u070f\u0007\u001b\u0000\u0000\u070f"+ + "\u0710\u0007\u0011\u0000\u0000\u0710\u0711\u0007\u0007\u0000\u0000\u0711"+ + "\u0712\u0007\u0017\u0000\u0000\u0712\u0092\u0001\u0000\u0000\u0000\u0713"+ + "\u0714\u0007\u0011\u0000\u0000\u0714\u0715\u0007\u0007\u0000\u0000\u0715"+ + "\u0094\u0001\u0000\u0000\u0000\u0716\u0717\u0007\u0011\u0000\u0000\u0717"+ + "\u0718\u0007\u0007\u0000\u0000\u0718\u0719\u0007\u0011\u0000\u0000\u0719"+ + "\u071a\u0007\u0010\u0000\u0000\u071a\u071b\u0007\u0011\u0000\u0000\u071b"+ + "\u071c\u0007\u0005\u0000\u0000\u071c\u071d\u0007\u0006\u0000\u0000\u071d"+ + "\u071e\u0007\u0006\u0000\u0000\u071e\u071f\u0007\b\u0000\u0000\u071f\u0096"+ + "\u0001\u0000\u0000\u0000\u0720\u0721\u0007\u0011\u0000\u0000\u0721\u0722"+ + "\u0007\u0007\u0000\u0000\u0722\u0723\u0007\u0010\u0000\u0000\u0723\u0724"+ + "\u0007\n\u0000\u0000\u0724\u0725\u0007\r\u0000\u0000\u0725\u0726\u0007"+ + "\t\u0000\u0000\u0726\u0727\u0007\n\u0000\u0000\u0727\u0728\u0007\u000e"+ + "\u0000\u0000\u0728\u0729\u0007\u0010\u0000\u0000\u0729\u0098\u0001\u0000"+ + "\u0000\u0000\u072a\u072b\u0007\u0011\u0000\u0000\u072b\u072c\u0007\u0007"+ + "\u0000\u0000\u072c\u072d\u0007\u0010\u0000\u0000\u072d\u072e\u0007\u0013"+ + "\u0000\u0000\u072e\u009a\u0001\u0000\u0000\u0000\u072f\u0730\u0007\u0006"+ + "\u0000\u0000\u0730\u0731\u0007\u0005\u0000\u0000\u0731\u0732\u0007\u0010"+ + "\u0000\u0000\u0732\u0733\u0007\n\u0000\u0000\u0733\u0734\u0007\r\u0000"+ + "\u0000\u0734\u0735\u0007\u0005\u0000\u0000\u0735\u0736\u0007\u0006\u0000"+ + "\u0000\u0736\u009c\u0001\u0000\u0000\u0000\u0737\u0738\u0007\u0006\u0000"+ + "\u0000\u0738\u0739\u0007\n\u0000\u0000\u0739\u073a\u0007\u0005\u0000\u0000"+ + "\u073a\u073b\u0007\f\u0000\u0000\u073b\u073c\u0007\u0011\u0000\u0000\u073c"+ + "\u073d\u0007\u0007\u0000\u0000\u073d\u073e\u0007\u0017\u0000\u0000\u073e"+ + "\u009e\u0001\u0000\u0000\u0000\u073f\u0740\u0007\u0006\u0000\u0000\u0740"+ + "\u0741\u0007\u0011\u0000\u0000\u0741\u0742\u0007\u000f\u0000\u0000\u0742"+ + "\u0743\u0007\u0011\u0000\u0000\u0743\u0744\u0007\u0010\u0000\u0000\u0744"+ + "\u00a0\u0001\u0000\u0000\u0000\u0745\u0746\u0007\u0006\u0000\u0000\u0746"+ + "\u0747\u0007\u0013\u0000\u0000\u0747\u0748\u0007\u000e\u0000\u0000\u0748"+ + "\u0749\u0007\u0005\u0000\u0000\u0749\u074a\u0007\u0006\u0000\u0000\u074a"+ + "\u074b\u0007\u0010\u0000\u0000\u074b\u074c\u0007\u0011\u0000\u0000\u074c"+ + "\u074d\u0007\u000f\u0000\u0000\u074d\u074e\u0007\n\u0000\u0000\u074e\u00a2"+ + "\u0001\u0000\u0000\u0000\u074f\u0750\u0007\u0006\u0000\u0000\u0750\u0751"+ + "\u0007\u0013\u0000\u0000\u0751\u0752\u0007\u000e\u0000\u0000\u0752\u0753"+ + "\u0007\u0005\u0000\u0000\u0753\u0754\u0007\u0006\u0000\u0000\u0754\u0755"+ + "\u0007\u0010\u0000\u0000\u0755\u0756\u0007\u0011\u0000\u0000\u0756\u0757"+ + "\u0007\u000f\u0000\u0000\u0757\u0758\u0007\n\u0000\u0000\u0758\u0759\u0007"+ + "\t\u0000\u0000\u0759\u075a\u0007\u0010\u0000\u0000\u075a\u075b\u0007\u0005"+ + "\u0000\u0000\u075b\u075c\u0007\u000f\u0000\u0000\u075c\u075d\u0007\u0018"+ + "\u0000\u0000\u075d\u00a4\u0001\u0000\u0000\u0000\u075e\u075f\u0007\u0007"+ + "\u0000\u0000\u075f\u0760\u0007\u0013\u0000\u0000\u0760\u0761\u0007\u0010"+ + "\u0000\u0000\u0761\u00a6\u0001\u0000\u0000\u0000\u0762\u0763\u0007\u0007"+ + "\u0000\u0000\u0763\u0764\u0007\u0016\u0000\u0000\u0764\u0765\u0007\u0006"+ + "\u0000\u0000\u0765\u0766\u0007\u0006\u0000\u0000\u0766\u00a8\u0001\u0000"+ + "\u0000\u0000\u0767\u0768\u0007\u0013\u0000\u0000\u0768\u0769\u0007\u0019"+ + "\u0000\u0000\u0769\u076a\u0007\u0019\u0000\u0000\u076a\u076b\u0007\t\u0000"+ + "\u0000\u076b\u076c\u0007\n\u0000\u0000\u076c\u076d\u0007\u0010\u0000\u0000"+ + "\u076d\u00aa\u0001\u0000\u0000\u0000\u076e\u076f\u0007\u0013\u0000\u0000"+ + "\u076f\u0770\u0007\u0007\u0000\u0000\u0770\u00ac\u0001\u0000\u0000\u0000"+ + "\u0771\u0772\u0007\u0013\u0000\u0000\u0772\u0773\u0007\u0007\u0000\u0000"+ + "\u0773\u0774\u0007\u0006\u0000\u0000\u0774\u0775\u0007\b\u0000\u0000\u0775"+ + "\u00ae\u0001\u0000\u0000\u0000\u0776\u0777\u0007\u0013\u0000\u0000\u0777"+ + "\u0778\u0007\r\u0000\u0000\u0778\u00b0\u0001\u0000\u0000\u0000\u0779\u077a"+ + "\u0007\u0013\u0000\u0000\u077a\u077b\u0007\r\u0000\u0000\u077b\u077c\u0007"+ + "\f\u0000\u0000\u077c\u077d\u0007\n\u0000\u0000\u077d\u077e\u0007\r\u0000"+ + "\u0000\u077e\u00b2\u0001\u0000\u0000\u0000\u077f\u0780\u0007\u0018\u0000"+ + "\u0000\u0780\u0781\u0007\u0006\u0000\u0000\u0781\u0782\u0007\u0005\u0000"+ + "\u0000\u0782\u0783\u0007\u000e\u0000\u0000\u0783\u0784\u0007\u0011\u0000"+ + "\u0000\u0784\u0785\u0007\u0007\u0000\u0000\u0785\u0786\u0007\u0017\u0000"+ + "\u0000\u0786\u00b4\u0001\u0000\u0000\u0000\u0787\u0788\u0007\u0018\u0000"+ + "\u0000\u0788\u0789\u0007\r\u0000\u0000\u0789\u078a\u0007\u0011\u0000\u0000"+ + "\u078a\u078b\u0007\u000f\u0000\u0000\u078b\u078c\u0007\u0005\u0000\u0000"+ + "\u078c\u078d\u0007\r\u0000\u0000\u078d\u078e\u0007\b\u0000\u0000\u078e"+ + "\u00b6\u0001\u0000\u0000\u0000\u078f\u0790\u0007\r\u0000\u0000\u0790\u0791"+ + "\u0007\n\u0000\u0000\u0791\u0792\u0007\u0019\u0000\u0000\u0792\u0793\u0007"+ + "\n\u0000\u0000\u0793\u0794\u0007\r\u0000\u0000\u0794\u0795\u0007\n\u0000"+ + "\u0000\u0795\u0796\u0007\u0007\u0000\u0000\u0796\u0797\u0007\u000e\u0000"+ + "\u0000\u0797\u0798\u0007\n\u0000\u0000\u0798\u0799\u0007\t\u0000\u0000"+ + "\u0799\u00b8\u0001\u0000\u0000\u0000\u079a\u079b\u0007\r\u0000\u0000\u079b"+ + "\u079c\u0007\n\u0000\u0000\u079c\u079d\u0007\u0010\u0000\u0000\u079d\u079e"+ + "\u0007\u0016\u0000\u0000\u079e\u079f\u0007\r\u0000\u0000\u079f\u07a0\u0007"+ + "\u0007\u0000\u0000\u07a0\u07a1\u0007\u0011\u0000\u0000\u07a1\u07a2\u0007"+ + "\u0007\u0000\u0000\u07a2\u07a3\u0007\u0017\u0000\u0000\u07a3\u00ba\u0001"+ + "\u0000\u0000\u0000\u07a4\u07a5\u0007\t\u0000\u0000\u07a5\u07a6\u0007\n"+ + "\u0000\u0000\u07a6\u07a7\u0007\u0006\u0000\u0000\u07a7\u07a8\u0007\n\u0000"+ + "\u0000\u07a8\u07a9\u0007\u000e\u0000\u0000\u07a9\u07aa\u0007\u0010\u0000"+ + "\u0000\u07aa\u00bc\u0001\u0000\u0000\u0000\u07ab\u07ac\u0007\t\u0000\u0000"+ + "\u07ac\u07ad\u0007\n\u0000\u0000\u07ad\u07ae\u0007\t\u0000\u0000\u07ae"+ + "\u07af\u0007\t\u0000\u0000\u07af\u07b0\u0007\u0011\u0000\u0000\u07b0\u07b1"+ + "\u0007\u0013\u0000\u0000\u07b1\u07b2\u0007\u0007\u0000\u0000\u07b2\u07b3"+ + "\u0005_\u0000\u0000\u07b3\u07b4\u0007\u0016\u0000\u0000\u07b4\u07b5\u0007"+ + "\t\u0000\u0000\u07b5\u07b6\u0007\n\u0000\u0000\u07b6\u07b7\u0007\r\u0000"+ + "\u0000\u07b7\u00be\u0001\u0000\u0000\u0000\u07b8\u07b9\u0007\t\u0000\u0000"+ + "\u07b9\u07ba\u0007\u0013\u0000\u0000\u07ba\u07bb\u0007\u000f\u0000\u0000"+ + "\u07bb\u07bc\u0007\n\u0000\u0000\u07bc\u00c0\u0001\u0000\u0000\u0000\u07bd"+ + "\u07be\u0007\t\u0000\u0000\u07be\u07bf\u0007\b\u0000\u0000\u07bf\u07c0"+ + "\u0007\u000f\u0000\u0000\u07c0\u07c1\u0007\u000f\u0000\u0000\u07c1\u07c2"+ + "\u0007\n\u0000\u0000\u07c2\u07c3\u0007\u0010\u0000\u0000\u07c3\u07c4\u0007"+ + "\r\u0000\u0000\u07c4\u07c5\u0007\u0011\u0000\u0000\u07c5\u07c6\u0007\u000e"+ + "\u0000\u0000\u07c6\u00c2\u0001\u0000\u0000\u0000\u07c7\u07c8\u0007\u0010"+ + "\u0000\u0000\u07c8\u07c9\u0007\u0005\u0000\u0000\u07c9\u07ca\u0007\u0012"+ + "\u0000\u0000\u07ca\u07cb\u0007\u0006\u0000\u0000\u07cb\u07cc\u0007\n\u0000"+ + "\u0000\u07cc\u00c4\u0001\u0000\u0000\u0000\u07cd\u07ce\u0007\u0010\u0000"+ + "\u0000\u07ce\u07cf\u0007\u0014\u0000\u0000\u07cf\u07d0\u0007\n\u0000\u0000"+ + "\u07d0\u07d1\u0007\u0007\u0000\u0000\u07d1\u00c6\u0001\u0000\u0000\u0000"+ + "\u07d2\u07d3\u0007\u0010\u0000\u0000\u07d3\u07d4\u0007\u0013\u0000\u0000"+ + "\u07d4\u00c8\u0001\u0000\u0000\u0000\u07d5\u07d6\u0007\u0010\u0000\u0000"+ + "\u07d6\u07d7\u0007\u0013\u0000\u0000\u07d7\u07d8\u0007\u0018\u0000\u0000"+ + "\u07d8\u07d9\u0007\u0011\u0000\u0000\u07d9\u07da\u0007\u000e\u0000\u0000"+ + "\u07da\u00ca\u0001\u0000\u0000\u0000\u07db\u07dc\u0007\t\u0000\u0000\u07dc"+ + "\u07dd\u0007\u0010\u0000\u0000\u07dd\u07de\u0007\r\u0000\u0000\u07de\u07df"+ + "\u0007\n\u0000\u0000\u07df\u07e0\u0007\u0005\u0000\u0000\u07e0\u07e1\u0007"+ + "\u000f\u0000\u0000\u07e1\u00cc\u0001\u0000\u0000\u0000\u07e2\u07e3\u0007"+ + "\u000b\u0000\u0000\u07e3\u07e4\u0007\u001b\u0000\u0000\u07e4\u07e5\u0007"+ + "\u0011\u0000\u0000\u07e5\u07e6\u0007\n\u0000\u0000\u07e6\u07e7\u0007\u001c"+ + "\u0000\u0000\u07e7\u00ce\u0001\u0000\u0000\u0000\u07e8\u07e9\u0007\u0010"+ + "\u0000\u0000\u07e9\u07ea\u0007\r\u0000\u0000\u07ea\u07eb\u0007\u0005\u0000"+ + "\u0000\u07eb\u07ec\u0007\u0011\u0000\u0000\u07ec\u07ed\u0007\u0006\u0000"+ + "\u0000\u07ed\u07ee\u0007\u0011\u0000\u0000\u07ee\u07ef\u0007\u0007\u0000"+ + "\u0000\u07ef\u07f0\u0007\u0017\u0000\u0000\u07f0\u00d0\u0001\u0000\u0000"+ + "\u0000\u07f1\u07f2\u0007\u0010\u0000\u0000\u07f2\u07f3\u0007\r\u0000\u0000"+ + "\u07f3\u07f4\u0007\u0016\u0000\u0000\u07f4\u07f5\u0007\n\u0000\u0000\u07f5"+ + "\u00d2\u0001\u0000\u0000\u0000\u07f6\u07f7\u0007\u0016\u0000\u0000\u07f7"+ + "\u07f8\u0007\u0007\u0000\u0000\u07f8\u07f9\u0007\u0011\u0000\u0000\u07f9"+ + "\u07fa\u0007\u0013\u0000\u0000\u07fa\u07fb\u0007\u0007\u0000\u0000\u07fb"+ + "\u00d4\u0001\u0000\u0000\u0000\u07fc\u07fd\u0007\u0016\u0000\u0000\u07fd"+ + "\u07fe\u0007\u0007\u0000\u0000\u07fe\u07ff\u0007\u0011\u0000\u0000\u07ff"+ + "\u0800\u0007\u001d\u0000\u0000\u0800\u0801\u0007\u0016\u0000\u0000\u0801"+ + "\u0802\u0007\n\u0000\u0000\u0802\u00d6\u0001\u0000\u0000\u0000\u0803\u0804"+ + "\u0007\u0016\u0000\u0000\u0804\u0805\u0007\t\u0000\u0000\u0805\u0806\u0007"+ + "\n\u0000\u0000\u0806\u0807\u0007\r\u0000\u0000\u0807\u00d8\u0001\u0000"+ + "\u0000\u0000\u0808\u0809\u0007\u0016\u0000\u0000\u0809\u080a\u0007\t\u0000"+ + "\u0000\u080a\u080b\u0007\u0011\u0000\u0000\u080b\u080c\u0007\u0007\u0000"+ + "\u0000\u080c\u080d\u0007\u0017\u0000\u0000\u080d\u00da\u0001\u0000\u0000"+ + "\u0000\u080e\u080f\u0007\u001b\u0000\u0000\u080f\u0810\u0007\u0005\u0000"+ + "\u0000\u0810\u0811\u0007\r\u0000\u0000\u0811\u0812\u0007\u0011\u0000\u0000"+ + "\u0812\u0813\u0007\u0005\u0000\u0000\u0813\u0814\u0007\f\u0000\u0000\u0814"+ + "\u0815\u0007\u0011\u0000\u0000\u0815\u0816\u0007\u000e\u0000\u0000\u0816"+ + "\u00dc\u0001\u0000\u0000\u0000\u0817\u0818\u0007\u001c\u0000\u0000\u0818"+ + "\u0819\u0007\u0014\u0000\u0000\u0819\u081a\u0007\n\u0000\u0000\u081a\u081b"+ + "\u0007\u0007\u0000\u0000\u081b\u00de\u0001\u0000\u0000\u0000\u081c\u081d"+ + "\u0007\u001c\u0000\u0000\u081d\u081e\u0007\u0014\u0000\u0000\u081e\u081f"+ + "\u0007\n\u0000\u0000\u081f\u0820\u0007\r\u0000\u0000\u0820\u0821\u0007"+ + "\n\u0000\u0000\u0821\u00e0\u0001\u0000\u0000\u0000\u0822\u0823\u0007\u001c"+ + "\u0000\u0000\u0823\u0824\u0007\u0011\u0000\u0000\u0824\u0825\u0007\u0007"+ + "\u0000\u0000\u0825\u0826\u0007\f\u0000\u0000\u0826\u0827\u0007\u0013\u0000"+ + "\u0000\u0827\u0828\u0007\u001c\u0000\u0000\u0828\u00e2\u0001\u0000\u0000"+ + "\u0000\u0829\u082a\u0007\u001c\u0000\u0000\u082a\u082b\u0007\u0011\u0000"+ + "\u0000\u082b\u082c\u0007\u0010\u0000\u0000\u082c\u082d\u0007\u0014\u0000"+ + "\u0000\u082d\u00e4\u0001\u0000\u0000\u0000\u082e\u082f\u0007\u0005\u0000"+ + "\u0000\u082f\u0830\u0007\u0016\u0000\u0000\u0830\u0831\u0007\u0010\u0000"+ + "\u0000\u0831\u0832\u0007\u0014\u0000\u0000\u0832\u0833\u0007\u0013\u0000"+ + "\u0000\u0833\u0834\u0007\r\u0000\u0000\u0834\u0835\u0007\u0011\u0000\u0000"+ + "\u0835\u0836\u0007\u000b\u0000\u0000\u0836\u0837\u0007\u0005\u0000\u0000"+ + "\u0837\u0838\u0007\u0010\u0000\u0000\u0838\u0839\u0007\u0011\u0000\u0000"+ + "\u0839\u083a\u0007\u0013\u0000\u0000\u083a\u083b\u0007\u0007\u0000\u0000"+ + "\u083b\u00e6\u0001\u0000\u0000\u0000\u083c\u083d\u0007\u0012\u0000\u0000"+ + "\u083d\u083e\u0007\u0011\u0000\u0000\u083e\u083f\u0007\u0007\u0000\u0000"+ + "\u083f\u0840\u0007\u0005\u0000\u0000\u0840\u0841\u0007\r\u0000\u0000\u0841"+ + "\u0842\u0007\b\u0000\u0000\u0842\u00e8\u0001\u0000\u0000\u0000\u0843\u0844"+ + "\u0007\u000e\u0000\u0000\u0844\u0845\u0007\u0013\u0000\u0000\u0845\u0846"+ + "\u0007\u0006\u0000\u0000\u0846\u0847\u0007\u0006\u0000\u0000\u0847\u0848"+ + "\u0007\u0005\u0000\u0000\u0848\u0849\u0007\u0010\u0000\u0000\u0849\u084a"+ + "\u0007\u0011\u0000\u0000\u084a\u084b\u0007\u0013\u0000\u0000\u084b\u084c"+ + "\u0007\u0007\u0000\u0000\u084c\u00ea\u0001\u0000\u0000\u0000\u084d\u084e"+ + "\u0007\u000e\u0000\u0000\u084e\u084f\u0007\u0013\u0000\u0000\u084f\u0850"+ + "\u0007\u0007\u0000\u0000\u0850\u0851\u0007\u000e\u0000\u0000\u0851\u0852"+ + "\u0007\u0016\u0000\u0000\u0852\u0853\u0007\r\u0000\u0000\u0853\u0854\u0007"+ + "\r\u0000\u0000\u0854\u0855\u0007\n\u0000\u0000\u0855\u0856\u0007\u0007"+ + "\u0000\u0000\u0856\u0857\u0007\u0010\u0000\u0000\u0857\u0858\u0007\u0006"+ + "\u0000\u0000\u0858\u0859\u0007\b\u0000\u0000\u0859\u00ec\u0001\u0000\u0000"+ + "\u0000\u085a\u085b\u0007\u000e\u0000\u0000\u085b\u085c\u0007\r\u0000\u0000"+ + "\u085c\u085d\u0007\u0013\u0000\u0000\u085d\u085e\u0007\t\u0000\u0000\u085e"+ + "\u085f\u0007\t\u0000\u0000\u085f\u00ee\u0001\u0000\u0000\u0000\u0860\u0861"+ + "\u0007\u000e\u0000\u0000\u0861\u0862\u0007\u0016\u0000\u0000\u0862\u0863"+ + "\u0007\r\u0000\u0000\u0863\u0864\u0007\r\u0000\u0000\u0864\u0865\u0007"+ + "\n\u0000\u0000\u0865\u0866\u0007\u0007\u0000\u0000\u0866\u0867\u0007\u0010"+ + "\u0000\u0000\u0867\u0868\u0005_\u0000\u0000\u0868\u0869\u0007\t\u0000"+ + "\u0000\u0869\u086a\u0007\u000e\u0000\u0000\u086a\u086b\u0007\u0014\u0000"+ + "\u0000\u086b\u086c\u0007\n\u0000\u0000\u086c\u086d\u0007\u000f\u0000\u0000"+ + "\u086d\u086e\u0007\u0005\u0000\u0000\u086e\u00f0\u0001\u0000\u0000\u0000"+ + "\u086f\u0870\u0007\u0019\u0000\u0000\u0870\u0871\u0007\r\u0000\u0000\u0871"+ + "\u0872\u0007\n\u0000\u0000\u0872\u0873\u0007\n\u0000\u0000\u0873\u0874"+ + "\u0007\u000b\u0000\u0000\u0874\u0875\u0007\n\u0000\u0000\u0875\u00f2\u0001"+ + "\u0000\u0000\u0000\u0876\u0877\u0007\u0019\u0000\u0000\u0877\u0878\u0007"+ + "\u0016\u0000\u0000\u0878\u0879\u0007\u0006\u0000\u0000\u0879\u087a\u0007"+ + "\u0006\u0000\u0000\u087a\u00f4\u0001\u0000\u0000\u0000\u087b\u087c\u0007"+ + "\u0011\u0000\u0000\u087c\u087d\u0007\u0006\u0000\u0000\u087d\u087e\u0007"+ + "\u0011\u0000\u0000\u087e\u087f\u0007\u0015\u0000\u0000\u087f\u0880\u0007"+ + "\n\u0000\u0000\u0880\u00f6\u0001\u0000\u0000\u0000\u0881\u0882\u0007\u0011"+ + "\u0000\u0000\u0882\u0883\u0007\u0007\u0000\u0000\u0883\u0884\u0007\u0007"+ + "\u0000\u0000\u0884\u0885\u0007\n\u0000\u0000\u0885\u0886\u0007\r\u0000"+ + "\u0000\u0886\u00f8\u0001\u0000\u0000\u0000\u0887\u0888\u0007\u0011\u0000"+ + "\u0000\u0888\u0889\u0007\t\u0000\u0000\u0889\u00fa\u0001\u0000\u0000\u0000"+ + "\u088a\u088b\u0007\u0011\u0000\u0000\u088b\u088c\u0007\t\u0000\u0000\u088c"+ + "\u088d\u0007\u0007\u0000\u0000\u088d\u088e\u0007\u0016\u0000\u0000\u088e"+ + "\u088f\u0007\u0006\u0000\u0000\u088f\u0890\u0007\u0006\u0000\u0000\u0890"+ + "\u00fc\u0001\u0000\u0000\u0000\u0891\u0892\u0007\u001e\u0000\u0000\u0892"+ + "\u0893\u0007\u0013\u0000\u0000\u0893\u0894\u0007\u0011\u0000\u0000\u0894"+ + "\u0895\u0007\u0007\u0000\u0000\u0895\u00fe\u0001\u0000\u0000\u0000\u0896"+ + "\u0897\u0007\u0006\u0000\u0000\u0897\u0898\u0007\n\u0000\u0000\u0898\u0899"+ + "\u0007\u0019\u0000\u0000\u0899\u089a\u0007\u0010\u0000\u0000\u089a\u0100"+ + "\u0001\u0000\u0000\u0000\u089b\u089c\u0007\u0006\u0000\u0000\u089c\u089d"+ + "\u0007\u0011\u0000\u0000\u089d\u089e\u0007\u0015\u0000\u0000\u089e\u089f"+ + "\u0007\n\u0000\u0000\u089f\u0102\u0001\u0000\u0000\u0000\u08a0\u08a1\u0007"+ + "\u0007\u0000\u0000\u08a1\u08a2\u0007\u0005\u0000\u0000\u08a2\u08a3\u0007"+ + "\u0010\u0000\u0000\u08a3\u08a4\u0007\u0016\u0000\u0000\u08a4\u08a5\u0007"+ + "\r\u0000\u0000\u08a5\u08a6\u0007\u0005\u0000\u0000\u08a6\u08a7\u0007\u0006"+ + "\u0000\u0000\u08a7\u0104\u0001\u0000\u0000\u0000\u08a8\u08a9\u0007\u0007"+ + "\u0000\u0000\u08a9\u08aa\u0007\u0013\u0000\u0000\u08aa\u08ab\u0007\u0010"+ + "\u0000\u0000\u08ab\u08ac\u0007\u0007\u0000\u0000\u08ac\u08ad\u0007\u0016"+ + "\u0000\u0000\u08ad\u08ae\u0007\u0006\u0000\u0000\u08ae\u08af\u0007\u0006"+ + "\u0000\u0000\u08af\u0106\u0001\u0000\u0000\u0000\u08b0\u08b1\u0007\u0013"+ + "\u0000\u0000\u08b1\u08b2\u0007\u0016\u0000\u0000\u08b2\u08b3\u0007\u0010"+ + "\u0000\u0000\u08b3\u08b4\u0007\n\u0000\u0000\u08b4\u08b5\u0007\r\u0000"+ + "\u0000\u08b5\u0108\u0001\u0000\u0000\u0000\u08b6\u08b7\u0007\u0013\u0000"+ + "\u0000\u08b7\u08b8\u0007\u001b\u0000\u0000\u08b8\u08b9\u0007\n\u0000\u0000"+ + "\u08b9\u08ba\u0007\r\u0000\u0000\u08ba\u010a\u0001\u0000\u0000\u0000\u08bb"+ + "\u08bc\u0007\u0013\u0000\u0000\u08bc\u08bd\u0007\u001b\u0000\u0000\u08bd"+ + "\u08be\u0007\n\u0000\u0000\u08be\u08bf\u0007\r\u0000\u0000\u08bf\u08c0"+ + "\u0007\u0006\u0000\u0000\u08c0\u08c1\u0007\u0005\u0000\u0000\u08c1\u08c2"+ + "\u0007\u0018\u0000\u0000\u08c2\u08c3\u0007\t\u0000\u0000\u08c3\u010c\u0001"+ + "\u0000\u0000\u0000\u08c4\u08c5\u0007\r\u0000\u0000\u08c5\u08c6\u0007\u0011"+ + "\u0000\u0000\u08c6\u08c7\u0007\u0017\u0000\u0000\u08c7\u08c8\u0007\u0014"+ + "\u0000\u0000\u08c8\u08c9\u0007\u0010\u0000\u0000\u08c9\u010e\u0001\u0000"+ + "\u0000\u0000\u08ca\u08cb\u0007\t\u0000\u0000\u08cb\u08cc\u0007\u0011\u0000"+ + "\u0000\u08cc\u08cd\u0007\u000f\u0000\u0000\u08cd\u08ce\u0007\u0011\u0000"+ + "\u0000\u08ce\u08cf\u0007\u0006\u0000\u0000\u08cf\u08d0\u0007\u0005\u0000"+ + "\u0000\u08d0\u08d1\u0007\r\u0000\u0000\u08d1\u0110\u0001\u0000\u0000\u0000"+ + "\u08d2\u08d3\u0007\u001b\u0000\u0000\u08d3\u08d4\u0007\n\u0000\u0000\u08d4"+ + "\u08d5\u0007\r\u0000\u0000\u08d5\u08d6\u0007\u0012\u0000\u0000\u08d6\u08d7"+ + "\u0007\u0013\u0000\u0000\u08d7\u08d8\u0007\t\u0000\u0000\u08d8\u08d9\u0007"+ + "\n\u0000\u0000\u08d9\u0112\u0001\u0000\u0000\u0000\u08da\u08db\u0007\u0005"+ + "\u0000\u0000\u08db\u08dc\u0007\u0012\u0000\u0000\u08dc\u08dd\u0007\u0013"+ + "\u0000\u0000\u08dd\u08de\u0007\r\u0000\u0000\u08de\u08df\u0007\u0010\u0000"+ + "\u0000\u08df\u0114\u0001\u0000\u0000\u0000\u08e0\u08e1\u0007\u0005\u0000"+ + "\u0000\u08e1\u08e2\u0007\u0012\u0000\u0000\u08e2\u08e3\u0007\t\u0000\u0000"+ + "\u08e3\u08e4\u0007\u0013\u0000\u0000\u08e4\u08e5\u0007\u0006\u0000\u0000"+ + "\u08e5\u08e6\u0007\u0016\u0000\u0000\u08e6\u08e7\u0007\u0010\u0000\u0000"+ + "\u08e7\u08e8\u0007\n\u0000\u0000\u08e8\u0116\u0001\u0000\u0000\u0000\u08e9"+ + "\u08ea\u0007\u0005\u0000\u0000\u08ea\u08eb\u0007\u000e\u0000\u0000\u08eb"+ + "\u08ec\u0007\u000e\u0000\u0000\u08ec\u08ed\u0007\n\u0000\u0000\u08ed\u08ee"+ + "\u0007\t\u0000\u0000\u08ee\u08ef\u0007\t\u0000\u0000\u08ef\u0118\u0001"+ + "\u0000\u0000\u0000\u08f0\u08f1\u0007\u0005\u0000\u0000\u08f1\u08f2\u0007"+ + "\u000e\u0000\u0000\u08f2\u08f3\u0007\u0010\u0000\u0000\u08f3\u08f4\u0007"+ + "\u0011\u0000\u0000\u08f4\u08f5\u0007\u0013\u0000\u0000\u08f5\u08f6\u0007"+ + "\u0007\u0000\u0000\u08f6\u011a\u0001\u0000\u0000\u0000\u08f7\u08f8\u0007"+ + "\u0005\u0000\u0000\u08f8\u08f9\u0007\f\u0000\u0000\u08f9\u08fa\u0007\f"+ + "\u0000\u0000\u08fa\u011c\u0001\u0000\u0000\u0000\u08fb\u08fc\u0007\u0005"+ + "\u0000\u0000\u08fc\u08fd\u0007\f\u0000\u0000\u08fd\u08fe\u0007\u000f\u0000"+ + "\u0000\u08fe\u08ff\u0007\u0011\u0000\u0000\u08ff\u0900\u0007\u0007\u0000"+ + "\u0000\u0900\u011e\u0001\u0000\u0000\u0000\u0901\u0902\u0007\u0005\u0000"+ + "\u0000\u0902\u0903\u0007\u0019\u0000\u0000\u0903\u0904\u0007\u0010\u0000"+ + "\u0000\u0904\u0905\u0007\n\u0000\u0000\u0905\u0906\u0007\r\u0000\u0000"+ + "\u0906\u0120\u0001\u0000\u0000\u0000\u0907\u0908\u0007\u0005\u0000\u0000"+ + "\u0908\u0909\u0007\u0017\u0000\u0000\u0909\u090a\u0007\u0017\u0000\u0000"+ + "\u090a\u090b\u0007\r\u0000\u0000\u090b\u090c\u0007\n\u0000\u0000\u090c"+ + "\u090d\u0007\u0017\u0000\u0000\u090d\u090e\u0007\u0005\u0000\u0000\u090e"+ + "\u090f\u0007\u0010\u0000\u0000\u090f\u0910\u0007\n\u0000\u0000\u0910\u0122"+ + "\u0001\u0000\u0000\u0000\u0911\u0912\u0007\u0005\u0000\u0000\u0912\u0913"+ + "\u0007\u0006\u0000\u0000\u0913\u0914\u0007\t\u0000\u0000\u0914\u0915\u0007"+ + "\u0013\u0000\u0000\u0915\u0124\u0001\u0000\u0000\u0000\u0916\u0917\u0007"+ + "\u0005\u0000\u0000\u0917\u0918\u0007\u0006\u0000\u0000\u0918\u0919\u0007"+ + "\u0010\u0000\u0000\u0919\u091a\u0007\n\u0000\u0000\u091a\u091b\u0007\r"+ + "\u0000\u0000\u091b\u0126\u0001\u0000\u0000\u0000\u091c\u091d\u0007\u0005"+ + "\u0000\u0000\u091d\u091e\u0007\u0006\u0000\u0000\u091e\u091f\u0007\u001c"+ + "\u0000\u0000\u091f\u0920\u0007\u0005\u0000\u0000\u0920\u0921\u0007\b\u0000"+ + "\u0000\u0921\u0922\u0007\t\u0000\u0000\u0922\u0128\u0001\u0000\u0000\u0000"+ + "\u0923\u0924\u0007\u0005\u0000\u0000\u0924\u0925\u0007\t\u0000\u0000\u0925"+ + "\u0926\u0007\t\u0000\u0000\u0926\u0927\u0007\n\u0000\u0000\u0927\u0928"+ + "\u0007\r\u0000\u0000\u0928\u0929\u0007\u0010\u0000\u0000\u0929\u092a\u0007"+ + "\u0011\u0000\u0000\u092a\u092b\u0007\u0013\u0000\u0000\u092b\u092c\u0007"+ + "\u0007\u0000\u0000\u092c\u012a\u0001\u0000\u0000\u0000\u092d\u092e\u0007"+ + "\u0005\u0000\u0000\u092e\u092f\u0007\t\u0000\u0000\u092f\u0930\u0007\t"+ + "\u0000\u0000\u0930\u0931\u0007\u0011\u0000\u0000\u0931\u0932\u0007\u0017"+ + "\u0000\u0000\u0932\u0933\u0007\u0007\u0000\u0000\u0933\u0934\u0007\u000f"+ + "\u0000\u0000\u0934\u0935\u0007\n\u0000\u0000\u0935\u0936\u0007\u0007\u0000"+ + "\u0000\u0936\u0937\u0007\u0010\u0000\u0000\u0937\u012c\u0001\u0000\u0000"+ + "\u0000\u0938\u0939\u0007\u0005\u0000\u0000\u0939\u093a\u0007\u0010\u0000"+ + "\u0000\u093a\u012e\u0001\u0000\u0000\u0000\u093b\u093c\u0007\u0005\u0000"+ + "\u0000\u093c\u093d\u0007\u0010\u0000\u0000\u093d\u093e\u0007\u0010\u0000"+ + "\u0000\u093e\u093f\u0007\r\u0000\u0000\u093f\u0940\u0007\u0011\u0000\u0000"+ + "\u0940\u0941\u0007\u0012\u0000\u0000\u0941\u0942\u0007\u0016\u0000\u0000"+ + "\u0942\u0943\u0007\u0010\u0000\u0000\u0943\u0944\u0007\n\u0000\u0000\u0944"+ + "\u0130\u0001\u0000\u0000\u0000\u0945\u0946\u0007\u0012\u0000\u0000\u0946"+ + "\u0947\u0007\u0005\u0000\u0000\u0947\u0948\u0007\u000e\u0000\u0000\u0948"+ + "\u0949\u0007\u0015\u0000\u0000\u0949\u094a\u0007\u001c\u0000\u0000\u094a"+ + "\u094b\u0007\u0005\u0000\u0000\u094b\u094c\u0007\r\u0000\u0000\u094c\u094d"+ + "\u0007\f\u0000\u0000\u094d\u0132\u0001\u0000\u0000\u0000\u094e\u094f\u0007"+ + "\u0012\u0000\u0000\u094f\u0950\u0007\n\u0000\u0000\u0950\u0951\u0007\u0019"+ + "\u0000\u0000\u0951\u0952\u0007\u0013\u0000\u0000\u0952\u0953\u0007\r\u0000"+ + "\u0000\u0953\u0954\u0007\n\u0000\u0000\u0954\u0134\u0001\u0000\u0000\u0000"+ + "\u0955\u0956\u0007\u0012\u0000\u0000\u0956\u0957\u0007\n\u0000\u0000\u0957"+ + "\u0958\u0007\u0017\u0000\u0000\u0958\u0959\u0007\u0011\u0000\u0000\u0959"+ + "\u095a\u0007\u0007\u0000\u0000\u095a\u0136\u0001\u0000\u0000\u0000\u095b"+ + "\u095c\u0007\u0012\u0000\u0000\u095c\u095d\u0007\b\u0000\u0000\u095d\u0138"+ + "\u0001\u0000\u0000\u0000\u095e\u095f\u0007\u000e\u0000\u0000\u095f\u0960"+ + "\u0007\u0005\u0000\u0000\u0960\u0961\u0007\u000e\u0000\u0000\u0961\u0962"+ + "\u0007\u0014\u0000\u0000\u0962\u0963\u0007\n\u0000\u0000\u0963\u013a\u0001"+ + "\u0000\u0000\u0000\u0964\u0965\u0007\u000e\u0000\u0000\u0965\u0966\u0007"+ + "\u0005\u0000\u0000\u0966\u0967\u0007\u0006\u0000\u0000\u0967\u0968\u0007"+ + "\u0006\u0000\u0000\u0968\u0969\u0007\n\u0000\u0000\u0969\u096a\u0007\f"+ + "\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\u013e\u0001\u0000\u0000\u0000\u0973\u0974\u0007\u000e\u0000\u0000"+ + "\u0974\u0975\u0007\u0005\u0000\u0000\u0975\u0976\u0007\t\u0000\u0000\u0976"+ + "\u0977\u0007\u000e\u0000\u0000\u0977\u0978\u0007\u0005\u0000\u0000\u0978"+ + "\u0979\u0007\f\u0000\u0000\u0979\u097a\u0007\n\u0000\u0000\u097a\u097b"+ + "\u0007\f\u0000\u0000\u097b\u0140\u0001\u0000\u0000\u0000\u097c\u097d\u0007"+ + "\u000e\u0000\u0000\u097d\u097e\u0007\u0005\u0000\u0000\u097e\u097f\u0007"+ + "\u0010\u0000\u0000\u097f\u0980\u0007\u0005\u0000\u0000\u0980\u0981\u0007"+ + "\u0006\u0000\u0000\u0981\u0982\u0007\u0013\u0000\u0000\u0982\u0983\u0007"+ + "\u0017\u0000\u0000\u0983\u0142\u0001\u0000\u0000\u0000\u0984\u0985\u0007"+ + "\u000e\u0000\u0000\u0985\u0986\u0007\u0014\u0000\u0000\u0986\u0987\u0007"+ + "\u0005\u0000\u0000\u0987\u0988\u0007\u0011\u0000\u0000\u0988\u0989\u0007"+ + "\u0007\u0000\u0000\u0989\u0144\u0001\u0000\u0000\u0000\u098a\u098b\u0007"+ + "\u000e\u0000\u0000\u098b\u098c\u0007\u0014\u0000\u0000\u098c\u098d\u0007"+ + "\u0005\u0000\u0000\u098d\u098e\u0007\r\u0000\u0000\u098e\u098f\u0007\u0005"+ + "\u0000\u0000\u098f\u0990\u0007\u000e\u0000\u0000\u0990\u0991\u0007\u0010"+ + "\u0000\u0000\u0991\u0992\u0007\n\u0000\u0000\u0992\u0993\u0007\r\u0000"+ + "\u0000\u0993\u0994\u0007\u0011\u0000\u0000\u0994\u0995\u0007\t\u0000\u0000"+ + "\u0995\u0996\u0007\u0010\u0000\u0000\u0996\u0997\u0007\u0011\u0000\u0000"+ + "\u0997\u0998\u0007\u000e\u0000\u0000\u0998\u0999\u0007\t\u0000\u0000\u0999"+ + "\u0146\u0001\u0000\u0000\u0000\u099a\u099b\u0007\u000e\u0000\u0000\u099b"+ + "\u099c\u0007\u0014\u0000\u0000\u099c\u099d\u0007\n\u0000\u0000\u099d\u099e"+ + "\u0007\u000e\u0000\u0000\u099e\u099f\u0007\u0015\u0000\u0000\u099f\u09a0"+ + "\u0007\u0018\u0000\u0000\u09a0\u09a1\u0007\u0013\u0000\u0000\u09a1\u09a2"+ + "\u0007\u0011\u0000\u0000\u09a2\u09a3\u0007\u0007\u0000\u0000\u09a3\u09a4"+ + "\u0007\u0010\u0000\u0000\u09a4\u0148\u0001\u0000\u0000\u0000\u09a5\u09a6"+ + "\u0007\u000e\u0000\u0000\u09a6\u09a7\u0007\u0006\u0000\u0000\u09a7\u09a8"+ + "\u0007\u0005\u0000\u0000\u09a8\u09a9\u0007\t\u0000\u0000\u09a9\u09aa\u0007"+ + "\t\u0000\u0000\u09aa\u014a\u0001\u0000\u0000\u0000\u09ab\u09ac\u0007\u000e"+ + "\u0000\u0000\u09ac\u09ad\u0007\u0006\u0000\u0000\u09ad\u09ae\u0007\u0013"+ + "\u0000\u0000\u09ae\u09af\u0007\t\u0000\u0000\u09af\u09b0\u0007\n\u0000"+ + "\u0000\u09b0\u014c\u0001\u0000\u0000\u0000\u09b1\u09b2\u0007\u000e\u0000"+ + "\u0000\u09b2\u09b3\u0007\u0006\u0000\u0000\u09b3\u09b4\u0007\u0016\u0000"+ + "\u0000\u09b4\u09b5\u0007\t\u0000\u0000\u09b5\u09b6\u0007\u0010\u0000\u0000"+ + "\u09b6\u09b7\u0007\n\u0000\u0000\u09b7\u09b8\u0007\r\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\u0150"+ + "\u0001\u0000\u0000\u0000\u09c1\u09c2\u0007\u000e\u0000\u0000\u09c2\u09c3"+ + "\u0007\u0013\u0000\u0000\u09c3\u09c4\u0007\u000f\u0000\u0000\u09c4\u09c5"+ + "\u0007\u000f\u0000\u0000\u09c5\u09c6\u0007\n\u0000\u0000\u09c6\u09c7\u0007"+ + "\u0007\u0000\u0000\u09c7\u09c8\u0007\u0010\u0000\u0000\u09c8\u09c9\u0007"+ + "\t\u0000\u0000\u09c9\u0152\u0001\u0000\u0000\u0000\u09ca\u09cb\u0007\u000e"+ + "\u0000\u0000\u09cb\u09cc\u0007\u0013\u0000\u0000\u09cc\u09cd\u0007\u000f"+ + "\u0000\u0000\u09cd\u09ce\u0007\u000f\u0000\u0000\u09ce\u09cf\u0007\u0011"+ + "\u0000\u0000\u09cf\u09d0\u0007\u0010\u0000\u0000\u09d0\u0154\u0001\u0000"+ + "\u0000\u0000\u09d1\u09d2\u0007\u000e\u0000\u0000\u09d2\u09d3\u0007\u0013"+ + "\u0000\u0000\u09d3\u09d4\u0007\u000f\u0000\u0000\u09d4\u09d5\u0007\u000f"+ + "\u0000\u0000\u09d5\u09d6\u0007\u0011\u0000\u0000\u09d6\u09d7\u0007\u0010"+ + "\u0000\u0000\u09d7\u09d8\u0007\u0010\u0000\u0000\u09d8\u09d9\u0007\n\u0000"+ + "\u0000\u09d9\u09da\u0007\f\u0000\u0000\u09da\u0156\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\u0019\u0000\u0000"+ + "\u09df\u09e0\u0007\u0011\u0000\u0000\u09e0\u09e1\u0007\u0017\u0000\u0000"+ + "\u09e1\u09e2\u0007\u0016\u0000\u0000\u09e2\u09e3\u0007\r\u0000\u0000\u09e3"+ + "\u09e4\u0007\u0005\u0000\u0000\u09e4\u09e5\u0007\u0010\u0000\u0000\u09e5"+ + "\u09e6\u0007\u0011\u0000\u0000\u09e6\u09e7\u0007\u0013\u0000\u0000\u09e7"+ + "\u09e8\u0007\u0007\u0000\u0000\u09e8\u0158\u0001\u0000\u0000\u0000\u09e9"+ + "\u09ea\u0007\u000e\u0000\u0000\u09ea\u09eb\u0007\u0013\u0000\u0000\u09eb"+ + "\u09ec\u0007\u0007\u0000\u0000\u09ec\u09ed\u0007\u0007\u0000\u0000\u09ed"+ + "\u09ee\u0007\n\u0000\u0000\u09ee\u09ef\u0007\u000e\u0000\u0000\u09ef\u09f0"+ + "\u0007\u0010\u0000\u0000\u09f0\u09f1\u0007\u0011\u0000\u0000\u09f1\u09f2"+ + "\u0007\u0013\u0000\u0000\u09f2\u09f3\u0007\u0007\u0000\u0000\u09f3\u015a"+ + "\u0001\u0000\u0000\u0000\u09f4\u09f5\u0007\u000e\u0000\u0000\u09f5\u09f6"+ + "\u0007\u0013\u0000\u0000\u09f6\u09f7\u0007\u0007\u0000\u0000\u09f7\u09f8"+ + "\u0007\t\u0000\u0000\u09f8\u09f9\u0007\u0010\u0000\u0000\u09f9\u09fa\u0007"+ + "\r\u0000\u0000\u09fa\u09fb\u0007\u0005\u0000\u0000\u09fb\u09fc\u0007\u0011"+ + "\u0000\u0000\u09fc\u09fd\u0007\u0007\u0000\u0000\u09fd\u09fe\u0007\u0010"+ + "\u0000\u0000\u09fe\u09ff\u0007\t\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\n\u0000\u0000\u0a05\u0a06\u0007\u0007\u0000\u0000"+ + "\u0a06\u0a07\u0007\u0010\u0000\u0000\u0a07\u015e\u0001\u0000\u0000\u0000"+ + "\u0a08\u0a09\u0007\u000e\u0000\u0000\u0a09\u0a0a\u0007\u0013\u0000\u0000"+ + "\u0a0a\u0a0b\u0007\u0007\u0000\u0000\u0a0b\u0a0c\u0007\u0010\u0000\u0000"+ + "\u0a0c\u0a0d\u0007\u0011\u0000\u0000\u0a0d\u0a0e\u0007\u0007\u0000\u0000"+ + "\u0a0e\u0a0f\u0007\u0016\u0000\u0000\u0a0f\u0a10\u0007\n\u0000\u0000\u0a10"+ + "\u0160\u0001\u0000\u0000\u0000\u0a11\u0a12\u0007\u000e\u0000\u0000\u0a12"+ + "\u0a13\u0007\u0013\u0000\u0000\u0a13\u0a14\u0007\u0007\u0000\u0000\u0a14"+ + "\u0a15\u0007\u001b\u0000\u0000\u0a15\u0a16\u0007\n\u0000\u0000\u0a16\u0a17"+ + "\u0007\r\u0000\u0000\u0a17\u0a18\u0007\t\u0000\u0000\u0a18\u0a19\u0007"+ + "\u0011\u0000\u0000\u0a19\u0a1a\u0007\u0013\u0000\u0000\u0a1a\u0a1b\u0007"+ + "\u0007\u0000\u0000\u0a1b\u0162\u0001\u0000\u0000\u0000\u0a1c\u0a1d\u0007"+ + "\u000e\u0000\u0000\u0a1d\u0a1e\u0007\u0013\u0000\u0000\u0a1e\u0a1f\u0007"+ + "\u0018\u0000\u0000\u0a1f\u0a20\u0007\b\u0000\u0000\u0a20\u0164\u0001\u0000"+ + "\u0000\u0000\u0a21\u0a22\u0007\u000e\u0000\u0000\u0a22\u0a23\u0007\u0013"+ + "\u0000\u0000\u0a23\u0a24\u0007\t\u0000\u0000\u0a24\u0a25\u0007\u0010\u0000"+ + "\u0000\u0a25\u0166\u0001\u0000\u0000\u0000\u0a26\u0a27\u0007\u000e\u0000"+ + "\u0000\u0a27\u0a28\u0007\t\u0000\u0000\u0a28\u0a29\u0007\u001b\u0000\u0000"+ + "\u0a29\u0168\u0001\u0000\u0000\u0000\u0a2a\u0a2b\u0007\u000e\u0000\u0000"+ + "\u0a2b\u0a2c\u0007\u0016\u0000\u0000\u0a2c\u0a2d\u0007\r\u0000\u0000\u0a2d"+ + "\u0a2e\u0007\t\u0000\u0000\u0a2e\u0a2f\u0007\u0013\u0000\u0000\u0a2f\u0a30"+ + "\u0007\r\u0000\u0000\u0a30\u016a\u0001\u0000\u0000\u0000\u0a31\u0a32\u0007"+ + "\u000e\u0000\u0000\u0a32\u0a33\u0007\b\u0000\u0000\u0a33\u0a34\u0007\u000e"+ + "\u0000\u0000\u0a34\u0a35\u0007\u0006\u0000\u0000\u0a35\u0a36\u0007\n\u0000"+ + "\u0000\u0a36\u016c\u0001\u0000\u0000\u0000\u0a37\u0a38\u0007\f\u0000\u0000"+ + "\u0a38\u0a39\u0007\u0005\u0000\u0000\u0a39\u0a3a\u0007\u0010\u0000\u0000"+ + "\u0a3a\u0a3b\u0007\u0005\u0000\u0000\u0a3b\u016e\u0001\u0000\u0000\u0000"+ + "\u0a3c\u0a3d\u0007\f\u0000\u0000\u0a3d\u0a3e\u0007\u0005\u0000\u0000\u0a3e"+ + "\u0a3f\u0007\u0010\u0000\u0000\u0a3f\u0a40\u0007\u0005\u0000\u0000\u0a40"+ + "\u0a41\u0007\u0012\u0000\u0000\u0a41\u0a42\u0007\u0005\u0000\u0000\u0a42"+ + "\u0a43\u0007\t\u0000\u0000\u0a43\u0a44\u0007\n\u0000\u0000\u0a44\u0170"+ + "\u0001\u0000\u0000\u0000\u0a45\u0a46\u0007\f\u0000\u0000\u0a46\u0a47\u0007"+ + "\u0005\u0000\u0000\u0a47\u0a48\u0007\b\u0000\u0000\u0a48\u0172\u0001\u0000"+ + "\u0000\u0000\u0a49\u0a4a\u0007\f\u0000\u0000\u0a4a\u0a4b\u0007\n\u0000"+ + "\u0000\u0a4b\u0a4c\u0007\u0005\u0000\u0000\u0a4c\u0a4d\u0007\u0006\u0000"+ + "\u0000\u0a4d\u0a4e\u0007\u0006\u0000\u0000\u0a4e\u0a4f\u0007\u0013\u0000"+ + "\u0000\u0a4f\u0a50\u0007\u000e\u0000\u0000\u0a50\u0a51\u0007\u0005\u0000"+ + "\u0000\u0a51\u0a52\u0007\u0010\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\u000e\u0000\u0000\u0a57\u0a58"+ + "\u0007\u0006\u0000\u0000\u0a58\u0a59\u0007\u0005\u0000\u0000\u0a59\u0a5a"+ + "\u0007\r\u0000\u0000\u0a5a\u0a5b\u0007\n\u0000\u0000\u0a5b\u0176\u0001"+ + "\u0000\u0000\u0000\u0a5c\u0a5d\u0007\f\u0000\u0000\u0a5d\u0a5e\u0007\n"+ + "\u0000\u0000\u0a5e\u0a5f\u0007\u0019\u0000\u0000\u0a5f\u0a60\u0007\u0005"+ + "\u0000\u0000\u0a60\u0a61\u0007\u0016\u0000\u0000\u0a61\u0a62\u0007\u0006"+ + "\u0000\u0000\u0a62\u0a63\u0007\u0010\u0000\u0000\u0a63\u0a64\u0007\t\u0000"+ + "\u0000\u0a64\u0178\u0001\u0000\u0000\u0000\u0a65\u0a66\u0007\f\u0000\u0000"+ + "\u0a66\u0a67\u0007\n\u0000\u0000\u0a67\u0a68\u0007\u0019\u0000\u0000\u0a68"+ + "\u0a69\u0007\n\u0000\u0000\u0a69\u0a6a\u0007\r\u0000\u0000\u0a6a\u0a6b"+ + "\u0007\r\u0000\u0000\u0a6b\u0a6c\u0007\n\u0000\u0000\u0a6c\u0a6d\u0007"+ + "\f\u0000\u0000\u0a6d\u017a\u0001\u0000\u0000\u0000\u0a6e\u0a6f\u0007\f"+ + "\u0000\u0000\u0a6f\u0a70\u0007\n\u0000\u0000\u0a70\u0a71\u0007\u0019\u0000"+ + "\u0000\u0a71\u0a72\u0007\u0011\u0000\u0000\u0a72\u0a73\u0007\u0007\u0000"+ + "\u0000\u0a73\u0a74\u0007\n\u0000\u0000\u0a74\u0a75\u0007\r\u0000\u0000"+ + "\u0a75\u017c\u0001\u0000\u0000\u0000\u0a76\u0a77\u0007\f\u0000\u0000\u0a77"+ + "\u0a78\u0007\n\u0000\u0000\u0a78\u0a79\u0007\u0006\u0000\u0000\u0a79\u0a7a"+ + "\u0007\n\u0000\u0000\u0a7a\u0a7b\u0007\u0010\u0000\u0000\u0a7b\u0a7c\u0007"+ + "\n\u0000\u0000\u0a7c\u017e\u0001\u0000\u0000\u0000\u0a7d\u0a7e\u0007\f"+ + "\u0000\u0000\u0a7e\u0a7f\u0007\n\u0000\u0000\u0a7f\u0a80\u0007\u0006\u0000"+ + "\u0000\u0a80\u0a81\u0007\u0011\u0000\u0000\u0a81\u0a82\u0007\u000f\u0000"+ + "\u0000\u0a82\u0a83\u0007\u0011\u0000\u0000\u0a83\u0a84\u0007\u0010\u0000"+ + "\u0000\u0a84\u0a85\u0007\n\u0000\u0000\u0a85\u0a86\u0007\r\u0000\u0000"+ + "\u0a86\u0180\u0001\u0000\u0000\u0000\u0a87\u0a88\u0007\f\u0000\u0000\u0a88"+ + "\u0a89\u0007\n\u0000\u0000\u0a89\u0a8a\u0007\u0006\u0000\u0000\u0a8a\u0a8b"+ + "\u0007\u0011\u0000\u0000\u0a8b\u0a8c\u0007\u000f\u0000\u0000\u0a8c\u0a8d"+ + "\u0007\u0011\u0000\u0000\u0a8d\u0a8e\u0007\u0010\u0000\u0000\u0a8e\u0a8f"+ + "\u0007\n\u0000\u0000\u0a8f\u0a90\u0007\r\u0000\u0000\u0a90\u0a91\u0007"+ + "\t\u0000\u0000\u0a91\u0182\u0001\u0000\u0000\u0000\u0a92\u0a93\u0007\f"+ + "\u0000\u0000\u0a93\u0a94\u0007\u0011\u0000\u0000\u0a94\u0a95\u0007\u000e"+ + "\u0000\u0000\u0a95\u0a96\u0007\u0010\u0000\u0000\u0a96\u0a97\u0007\u0011"+ + "\u0000\u0000\u0a97\u0a98\u0007\u0013\u0000\u0000\u0a98\u0a99\u0007\u0007"+ + "\u0000\u0000\u0a99\u0a9a\u0007\u0005\u0000\u0000\u0a9a\u0a9b\u0007\r\u0000"+ + "\u0000\u0a9b\u0a9c\u0007\b\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\u0005\u0000\u0000\u0aa1\u0aa2"+ + "\u0007\u0012\u0000\u0000\u0aa2\u0aa3\u0007\u0006\u0000\u0000\u0aa3\u0aa4"+ + "\u0007\n\u0000\u0000\u0aa4\u0186\u0001\u0000\u0000\u0000\u0aa5\u0aa6\u0007"+ + "\f\u0000\u0000\u0aa6\u0aa7\u0007\u0011\u0000\u0000\u0aa7\u0aa8\u0007\t"+ + "\u0000\u0000\u0aa8\u0aa9\u0007\u000e\u0000\u0000\u0aa9\u0aaa\u0007\u0005"+ + "\u0000\u0000\u0aaa\u0aab\u0007\r\u0000\u0000\u0aab\u0aac\u0007\f\u0000"+ + "\u0000\u0aac\u0188\u0001\u0000\u0000\u0000\u0aad\u0aae\u0007\f\u0000\u0000"+ + "\u0aae\u0aaf\u0007\u0013\u0000\u0000\u0aaf\u0ab0\u0007\u000e\u0000\u0000"+ + "\u0ab0\u0ab1\u0007\u0016\u0000\u0000\u0ab1\u0ab2\u0007\u000f\u0000\u0000"+ + "\u0ab2\u0ab3\u0007\n\u0000\u0000\u0ab3\u0ab4\u0007\u0007\u0000\u0000\u0ab4"+ + "\u0ab5\u0007\u0010\u0000\u0000\u0ab5\u018a\u0001\u0000\u0000\u0000\u0ab6"+ + "\u0ab7\u0007\f\u0000\u0000\u0ab7\u0ab8\u0007\u0013\u0000\u0000\u0ab8\u0ab9"+ + "\u0007\u000f\u0000\u0000\u0ab9\u0aba\u0007\u0005\u0000\u0000\u0aba\u0abb"+ + "\u0007\u0011\u0000\u0000\u0abb\u0abc\u0007\u0007\u0000\u0000\u0abc\u018c"+ + "\u0001\u0000\u0000\u0000\u0abd\u0abe\u0007\f\u0000\u0000\u0abe\u0abf\u0007"+ + "\u0013\u0000\u0000\u0abf\u0ac0\u0007\u0016\u0000\u0000\u0ac0\u0ac1\u0007"+ + "\u0012\u0000\u0000\u0ac1\u0ac2\u0007\u0006\u0000\u0000\u0ac2\u0ac3\u0007"+ + "\n\u0000\u0000\u0ac3\u018e\u0001\u0000\u0000\u0000\u0ac4\u0ac5\u0007\f"+ + "\u0000\u0000\u0ac5\u0ac6\u0007\r\u0000\u0000\u0ac6\u0ac7\u0007\u0013\u0000"+ + "\u0000\u0ac7\u0ac8\u0007\u0018\u0000\u0000\u0ac8\u0190\u0001\u0000\u0000"+ + "\u0000\u0ac9\u0aca\u0007\n\u0000\u0000\u0aca\u0acb\u0007\u0005\u0000\u0000"+ + "\u0acb\u0acc\u0007\u000e\u0000\u0000\u0acc\u0acd\u0007\u0014\u0000\u0000"+ + "\u0acd\u0192\u0001\u0000\u0000\u0000\u0ace\u0acf\u0007\n\u0000\u0000\u0acf"+ + "\u0ad0\u0007\u0007\u0000\u0000\u0ad0\u0ad1\u0007\u0005\u0000\u0000\u0ad1"+ + "\u0ad2\u0007\u0012\u0000\u0000\u0ad2\u0ad3\u0007\u0006\u0000\u0000\u0ad3"+ + "\u0ad4\u0007\n\u0000\u0000\u0ad4\u0194\u0001\u0000\u0000\u0000\u0ad5\u0ad6"+ + "\u0007\n\u0000\u0000\u0ad6\u0ad7\u0007\u0007\u0000\u0000\u0ad7\u0ad8\u0007"+ + "\u000e\u0000\u0000\u0ad8\u0ad9\u0007\u0013\u0000\u0000\u0ad9\u0ada\u0007"+ + "\f\u0000\u0000\u0ada\u0adb\u0007\u0011\u0000\u0000\u0adb\u0adc\u0007\u0007"+ + "\u0000\u0000\u0adc\u0add\u0007\u0017\u0000\u0000\u0add\u0196\u0001\u0000"+ + "\u0000\u0000\u0ade\u0adf\u0007\n\u0000\u0000\u0adf\u0ae0\u0007\u0007\u0000"+ + "\u0000\u0ae0\u0ae1\u0007\u000e\u0000\u0000\u0ae1\u0ae2\u0007\r\u0000\u0000"+ + "\u0ae2\u0ae3\u0007\b\u0000\u0000\u0ae3\u0ae4\u0007\u0018\u0000\u0000\u0ae4"+ + "\u0ae5\u0007\u0010\u0000\u0000\u0ae5\u0ae6\u0007\n\u0000\u0000\u0ae6\u0ae7"+ + "\u0007\f\u0000\u0000\u0ae7\u0198\u0001\u0000\u0000\u0000\u0ae8\u0ae9\u0007"+ + "\n\u0000\u0000\u0ae9\u0aea\u0007\u0007\u0000\u0000\u0aea\u0aeb\u0007\u0016"+ + "\u0000\u0000\u0aeb\u0aec\u0007\u000f\u0000\u0000\u0aec\u019a\u0001\u0000"+ + "\u0000\u0000\u0aed\u0aee\u0007\n\u0000\u0000\u0aee\u0aef\u0007\t\u0000"+ + "\u0000\u0aef\u0af0\u0007\u000e\u0000\u0000\u0af0\u0af1\u0007\u0005\u0000"+ + "\u0000\u0af1\u0af2\u0007\u0018\u0000\u0000\u0af2\u0af3\u0007\n\u0000\u0000"+ + "\u0af3\u019c\u0001\u0000\u0000\u0000\u0af4\u0af5\u0007\n\u0000\u0000\u0af5"+ + "\u0af6\u0007\u001b\u0000\u0000\u0af6\u0af7\u0007\n\u0000\u0000\u0af7\u0af8"+ + "\u0007\u0007\u0000\u0000\u0af8\u0af9\u0007\u0010\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\n\u0000\u0000\u0b01\u01a0\u0001\u0000"+ + "\u0000\u0000\u0b02\u0b03\u0007\n\u0000\u0000\u0b03\u0b04\u0007\u001a\u0000"+ + "\u0000\u0b04\u0b05\u0007\u000e\u0000\u0000\u0b05\u0b06\u0007\u0006\u0000"+ + "\u0000\u0b06\u0b07\u0007\u0016\u0000\u0000\u0b07\u0b08\u0007\f\u0000\u0000"+ + "\u0b08\u0b09\u0007\u0011\u0000\u0000\u0b09\u0b0a\u0007\u0007\u0000\u0000"+ + "\u0b0a\u0b0b\u0007\u0017\u0000\u0000\u0b0b\u01a2\u0001\u0000\u0000\u0000"+ + "\u0b0c\u0b0d\u0007\n\u0000\u0000\u0b0d\u0b0e\u0007\u001a\u0000\u0000\u0b0e"+ + "\u0b0f\u0007\u000e\u0000\u0000\u0b0f\u0b10\u0007\u0006\u0000\u0000\u0b10"+ + "\u0b11\u0007\u0016\u0000\u0000\u0b11\u0b12\u0007\t\u0000\u0000\u0b12\u0b13"+ + "\u0007\u0011\u0000\u0000\u0b13\u0b14\u0007\u001b\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\n"+ + "\u0000\u0000\u0b19\u0b1a\u0007\u000e\u0000\u0000\u0b1a\u0b1b\u0007\u0016"+ + "\u0000\u0000\u0b1b\u0b1c\u0007\u0010\u0000\u0000\u0b1c\u0b1d\u0007\n\u0000"+ + "\u0000\u0b1d\u01a6\u0001\u0000\u0000\u0000\u0b1e\u0b1f\u0007\n\u0000\u0000"+ + "\u0b1f\u0b20\u0007\u001a\u0000\u0000\u0b20\u0b21\u0007\u0018\u0000\u0000"+ + "\u0b21\u0b22\u0007\u0006\u0000\u0000\u0b22\u0b23\u0007\u0005\u0000\u0000"+ + "\u0b23\u0b24\u0007\u0011\u0000\u0000\u0b24\u0b25\u0007\u0007\u0000\u0000"+ + "\u0b25\u01a8\u0001\u0000\u0000\u0000\u0b26\u0b27\u0007\n\u0000\u0000\u0b27"+ + "\u0b28\u0007\u001a\u0000\u0000\u0b28\u0b29\u0007\u0010\u0000\u0000\u0b29"+ + "\u0b2a\u0007\n\u0000\u0000\u0b2a\u0b2b\u0007\u0007\u0000\u0000\u0b2b\u0b2c"+ + "\u0007\t\u0000\u0000\u0b2c\u0b2d\u0007\u0011\u0000\u0000\u0b2d\u0b2e\u0007"+ + "\u0013\u0000\u0000\u0b2e\u0b2f\u0007\u0007\u0000\u0000\u0b2f\u01aa\u0001"+ + "\u0000\u0000\u0000\u0b30\u0b31\u0007\n\u0000\u0000\u0b31\u0b32\u0007\u001a"+ + "\u0000\u0000\u0b32\u0b33\u0007\u0010\u0000\u0000\u0b33\u0b34\u0007\n\u0000"+ + "\u0000\u0b34\u0b35\u0007\r\u0000\u0000\u0b35\u0b36\u0007\u0007\u0000\u0000"+ + "\u0b36\u0b37\u0007\u0005\u0000\u0000\u0b37\u0b38\u0007\u0006\u0000\u0000"+ + "\u0b38\u01ac\u0001\u0000\u0000\u0000\u0b39\u0b3a\u0007\u0019\u0000\u0000"+ + "\u0b3a\u0b3b\u0007\u0005\u0000\u0000\u0b3b\u0b3c\u0007\u000f\u0000\u0000"+ + "\u0b3c\u0b3d\u0007\u0011\u0000\u0000\u0b3d\u0b3e\u0007\u0006\u0000\u0000"+ + "\u0b3e\u0b3f\u0007\b\u0000\u0000\u0b3f\u01ae\u0001\u0000\u0000\u0000\u0b40"+ + "\u0b41\u0007\u0019\u0000\u0000\u0b41\u0b42\u0007\u0011\u0000\u0000\u0b42"+ + "\u0b43\u0007\r\u0000\u0000\u0b43\u0b44\u0007\t\u0000\u0000\u0b44\u0b45"+ + "\u0007\u0010\u0000\u0000\u0b45\u01b0\u0001\u0000\u0000\u0000\u0b46\u0b47"+ + "\u0007\u0019\u0000\u0000\u0b47\u0b48\u0007\u0013\u0000\u0000\u0b48\u0b49"+ + "\u0007\u0006\u0000\u0000\u0b49\u0b4a\u0007\u0006\u0000\u0000\u0b4a\u0b4b"+ + "\u0007\u0013\u0000\u0000\u0b4b\u0b4c\u0007\u001c\u0000\u0000\u0b4c\u0b4d"+ + "\u0007\u0011\u0000\u0000\u0b4d\u0b4e\u0007\u0007\u0000\u0000\u0b4e\u0b4f"+ + "\u0007\u0017\u0000\u0000\u0b4f\u01b2\u0001\u0000\u0000\u0000\u0b50\u0b51"+ + "\u0007\u0019\u0000\u0000\u0b51\u0b52\u0007\u0013\u0000\u0000\u0b52\u0b53"+ + "\u0007\r\u0000\u0000\u0b53\u0b54\u0007\u000e\u0000\u0000\u0b54\u0b55\u0007"+ + "\n\u0000\u0000\u0b55\u01b4\u0001\u0000\u0000\u0000\u0b56\u0b57\u0007\u0019"+ + "\u0000\u0000\u0b57\u0b58\u0007\u0013\u0000\u0000\u0b58\u0b59\u0007\r\u0000"+ + "\u0000\u0b59\u0b5a\u0007\u001c\u0000\u0000\u0b5a\u0b5b\u0007\u0005\u0000"+ + "\u0000\u0b5b\u0b5c\u0007\r\u0000\u0000\u0b5c\u0b5d\u0007\f\u0000\u0000"+ + "\u0b5d\u01b6\u0001\u0000\u0000\u0000\u0b5e\u0b5f\u0007\u0019\u0000\u0000"+ + "\u0b5f\u0b60\u0007\u0016\u0000\u0000\u0b60\u0b61\u0007\u0007\u0000\u0000"+ + "\u0b61\u0b62\u0007\u000e\u0000\u0000\u0b62\u0b63\u0007\u0010\u0000\u0000"+ + "\u0b63\u0b64\u0007\u0011\u0000\u0000\u0b64\u0b65\u0007\u0013\u0000\u0000"+ + "\u0b65\u0b66\u0007\u0007\u0000\u0000\u0b66\u01b8\u0001\u0000\u0000\u0000"+ + "\u0b67\u0b68\u0007\u0019\u0000\u0000\u0b68\u0b69\u0007\u0016\u0000\u0000"+ + "\u0b69\u0b6a\u0007\u0007\u0000\u0000\u0b6a\u0b6b\u0007\u000e\u0000\u0000"+ + "\u0b6b\u0b6c\u0007\u0010\u0000\u0000\u0b6c\u0b6d\u0007\u0011\u0000\u0000"+ + "\u0b6d\u0b6e\u0007\u0013\u0000\u0000\u0b6e\u0b6f\u0007\u0007\u0000\u0000"+ + "\u0b6f\u0b70\u0007\t\u0000\u0000\u0b70\u01ba\u0001\u0000\u0000\u0000\u0b71"+ + "\u0b72\u0007\u0017\u0000\u0000\u0b72\u0b73\u0007\u0006\u0000\u0000\u0b73"+ + "\u0b74\u0007\u0013\u0000\u0000\u0b74\u0b75\u0007\u0012\u0000\u0000\u0b75"+ + "\u0b76\u0007\u0005\u0000\u0000\u0b76\u0b77\u0007\u0006\u0000\u0000\u0b77"+ + "\u01bc\u0001\u0000\u0000\u0000\u0b78\u0b79\u0007\u0017\u0000\u0000\u0b79"+ + "\u0b7a\u0007\r\u0000\u0000\u0b7a\u0b7b\u0007\u0005\u0000\u0000\u0b7b\u0b7c"+ + "\u0007\u0007\u0000\u0000\u0b7c\u0b7d\u0007\u0010\u0000\u0000\u0b7d\u0b7e"+ + "\u0007\n\u0000\u0000\u0b7e\u0b7f\u0007\f\u0000\u0000\u0b7f\u01be\u0001"+ + "\u0000\u0000\u0000\u0b80\u0b81\u0007\u0014\u0000\u0000\u0b81\u0b82\u0007"+ + "\u0005\u0000\u0000\u0b82\u0b83\u0007\u0007\u0000\u0000\u0b83\u0b84\u0007"+ + "\f\u0000\u0000\u0b84\u0b85\u0007\u0006\u0000\u0000\u0b85\u0b86\u0007\n"+ + "\u0000\u0000\u0b86\u0b87\u0007\r\u0000\u0000\u0b87\u01c0\u0001\u0000\u0000"+ + "\u0000\u0b88\u0b89\u0007\u0014\u0000\u0000\u0b89\u0b8a\u0007\n\u0000\u0000"+ + "\u0b8a\u0b8b\u0007\u0005\u0000\u0000\u0b8b\u0b8c\u0007\f\u0000\u0000\u0b8c"+ + "\u0b8d\u0007\n\u0000\u0000\u0b8d\u0b8e\u0007\r\u0000\u0000\u0b8e\u01c2"+ + "\u0001\u0000\u0000\u0000\u0b8f\u0b90\u0007\u0014\u0000\u0000\u0b90\u0b91"+ + "\u0007\u0013\u0000\u0000\u0b91\u0b92\u0007\u0006\u0000\u0000\u0b92\u0b93"+ + "\u0007\f\u0000\u0000\u0b93\u01c4\u0001\u0000\u0000\u0000\u0b94\u0b95\u0007"+ + "\u0014\u0000\u0000\u0b95\u0b96\u0007\u0013\u0000\u0000\u0b96\u0b97\u0007"+ + "\u0016\u0000\u0000\u0b97\u0b98\u0007\r\u0000\u0000\u0b98\u01c6\u0001\u0000"+ + "\u0000\u0000\u0b99\u0b9a\u0007\u0011\u0000\u0000\u0b9a\u0b9b\u0007\f\u0000"+ + "\u0000\u0b9b\u0b9c\u0007\n\u0000\u0000\u0b9c\u0b9d\u0007\u0007\u0000\u0000"+ + "\u0b9d\u0b9e\u0007\u0010\u0000\u0000\u0b9e\u0b9f\u0007\u0011\u0000\u0000"+ + "\u0b9f\u0ba0\u0007\u0010\u0000\u0000\u0ba0\u0ba1\u0007\b\u0000\u0000\u0ba1"+ + "\u01c8\u0001\u0000\u0000\u0000\u0ba2\u0ba3\u0007\u0011\u0000\u0000\u0ba3"+ + "\u0ba4\u0007\u0019\u0000\u0000\u0ba4\u01ca\u0001\u0000\u0000\u0000\u0ba5"+ + "\u0ba6\u0007\u0011\u0000\u0000\u0ba6\u0ba7\u0007\u000f\u0000\u0000\u0ba7"+ + "\u0ba8\u0007\u000f\u0000\u0000\u0ba8\u0ba9\u0007\n\u0000\u0000\u0ba9\u0baa"+ + "\u0007\f\u0000\u0000\u0baa\u0bab\u0007\u0011\u0000\u0000\u0bab\u0bac\u0007"+ + "\u0005\u0000\u0000\u0bac\u0bad\u0007\u0010\u0000\u0000\u0bad\u0bae\u0007"+ + "\n\u0000\u0000\u0bae\u01cc\u0001\u0000\u0000\u0000\u0baf\u0bb0\u0007\u0011"+ + "\u0000\u0000\u0bb0\u0bb1\u0007\u000f\u0000\u0000\u0bb1\u0bb2\u0007\u000f"+ + "\u0000\u0000\u0bb2\u0bb3\u0007\u0016\u0000\u0000\u0bb3\u0bb4\u0007\u0010"+ + "\u0000\u0000\u0bb4\u0bb5\u0007\u0005\u0000\u0000\u0bb5\u0bb6\u0007\u0012"+ + "\u0000\u0000\u0bb6\u0bb7\u0007\u0006\u0000\u0000\u0bb7\u0bb8\u0007\n\u0000"+ + "\u0000\u0bb8\u01ce\u0001\u0000\u0000\u0000\u0bb9\u0bba\u0007\u0011\u0000"+ + "\u0000\u0bba\u0bbb\u0007\u000f\u0000\u0000\u0bbb\u0bbc\u0007\u0018\u0000"+ + "\u0000\u0bbc\u0bbd\u0007\u0006\u0000\u0000\u0bbd\u0bbe\u0007\u0011\u0000"+ + "\u0000\u0bbe\u0bbf\u0007\u000e\u0000\u0000\u0bbf\u0bc0\u0007\u0011\u0000"+ + "\u0000\u0bc0\u0bc1\u0007\u0010\u0000\u0000\u0bc1\u01d0\u0001\u0000\u0000"+ + "\u0000\u0bc2\u0bc3\u0007\u0011\u0000\u0000\u0bc3\u0bc4\u0007\u0007\u0000"+ + "\u0000\u0bc4\u0bc5\u0007\u000e\u0000\u0000\u0bc5\u0bc6\u0007\u0006\u0000"+ + "\u0000\u0bc6\u0bc7\u0007\u0016\u0000\u0000\u0bc7\u0bc8\u0007\f\u0000\u0000"+ + "\u0bc8\u0bc9\u0007\u0011\u0000\u0000\u0bc9\u0bca\u0007\u0007\u0000\u0000"+ + "\u0bca\u0bcb\u0007\u0017\u0000\u0000\u0bcb\u01d2\u0001\u0000\u0000\u0000"+ + "\u0bcc\u0bcd\u0007\u0011\u0000\u0000\u0bcd\u0bce\u0007\u0007\u0000\u0000"+ + "\u0bce\u0bcf\u0007\u000e\u0000\u0000\u0bcf\u0bd0\u0007\r\u0000\u0000\u0bd0"+ + "\u0bd1\u0007\n\u0000\u0000\u0bd1\u0bd2\u0007\u000f\u0000\u0000\u0bd2\u0bd3"+ + "\u0007\n\u0000\u0000\u0bd3\u0bd4\u0007\u0007\u0000\u0000\u0bd4\u0bd5\u0007"+ + "\u0010\u0000\u0000\u0bd5\u01d4\u0001\u0000\u0000\u0000\u0bd6\u0bd7\u0007"+ + "\u0011\u0000\u0000\u0bd7\u0bd8\u0007\u0007\u0000\u0000\u0bd8\u0bd9\u0007"+ + "\f\u0000\u0000\u0bd9\u0bda\u0007\n\u0000\u0000\u0bda\u0bdb\u0007\u001a"+ + "\u0000\u0000\u0bdb\u01d6\u0001\u0000\u0000\u0000\u0bdc\u0bdd\u0007\u0011"+ + "\u0000\u0000\u0bdd\u0bde\u0007\u0007\u0000\u0000\u0bde\u0bdf\u0007\f\u0000"+ + "\u0000\u0bdf\u0be0\u0007\n\u0000\u0000\u0be0\u0be1\u0007\u001a\u0000\u0000"+ + "\u0be1\u0be2\u0007\n\u0000\u0000\u0be2\u0be3\u0007\t\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\u01da"+ + "\u0001\u0000\u0000\u0000\u0bec\u0bed\u0007\u0011\u0000\u0000\u0bed\u0bee"+ + "\u0007\u0007\u0000\u0000\u0bee\u0bef\u0007\u0014\u0000\u0000\u0bef\u0bf0"+ + "\u0007\n\u0000\u0000\u0bf0\u0bf1\u0007\r\u0000\u0000\u0bf1\u0bf2\u0007"+ + "\u0011\u0000\u0000\u0bf2\u0bf3\u0007\u0010\u0000\u0000\u0bf3\u0bf4\u0007"+ + "\t\u0000\u0000\u0bf4\u01dc\u0001\u0000\u0000\u0000\u0bf5\u0bf6\u0007\u0011"+ + "\u0000\u0000\u0bf6\u0bf7\u0007\u0007\u0000\u0000\u0bf7\u0bf8\u0007\u0006"+ + "\u0000\u0000\u0bf8\u0bf9\u0007\u0011\u0000\u0000\u0bf9\u0bfa\u0007\u0007"+ + "\u0000\u0000\u0bfa\u0bfb\u0007\n\u0000\u0000\u0bfb\u01de\u0001\u0000\u0000"+ + "\u0000\u0bfc\u0bfd\u0007\u0011\u0000\u0000\u0bfd\u0bfe\u0007\u0007\u0000"+ + "\u0000\u0bfe\u0bff\u0007\t\u0000\u0000\u0bff\u0c00\u0007\n\u0000\u0000"+ + "\u0c00\u0c01\u0007\u0007\u0000\u0000\u0c01\u0c02\u0007\t\u0000\u0000\u0c02"+ + "\u0c03\u0007\u0011\u0000\u0000\u0c03\u0c04\u0007\u0010\u0000\u0000\u0c04"+ + "\u0c05\u0007\u0011\u0000\u0000\u0c05\u0c06\u0007\u001b\u0000\u0000\u0c06"+ + "\u0c07\u0007\n\u0000\u0000\u0c07\u01e0\u0001\u0000\u0000\u0000\u0c08\u0c09"+ + "\u0007\u0011\u0000\u0000\u0c09\u0c0a\u0007\u0007\u0000\u0000\u0c0a\u0c0b"+ + "\u0007\t\u0000\u0000\u0c0b\u0c0c\u0007\n\u0000\u0000\u0c0c\u0c0d\u0007"+ + "\r\u0000\u0000\u0c0d\u0c0e\u0007\u0010\u0000\u0000\u0c0e\u01e2\u0001\u0000"+ + "\u0000\u0000\u0c0f\u0c10\u0007\u0011\u0000\u0000\u0c10\u0c11\u0007\u0007"+ + "\u0000\u0000\u0c11\u0c12\u0007\t\u0000\u0000\u0c12\u0c13\u0007\u0010\u0000"+ + "\u0000\u0c13\u0c14\u0007\n\u0000\u0000\u0c14\u0c15\u0007\u0005\u0000\u0000"+ + "\u0c15\u0c16\u0007\f\u0000\u0000\u0c16\u01e4\u0001\u0000\u0000\u0000\u0c17"+ + "\u0c18\u0007\u0011\u0000\u0000\u0c18\u0c19\u0007\u0007\u0000\u0000\u0c19"+ + "\u0c1a\u0007\u001b\u0000\u0000\u0c1a\u0c1b\u0007\u0013\u0000\u0000\u0c1b"+ + "\u0c1c\u0007\u0015\u0000\u0000\u0c1c\u0c1d\u0007\n\u0000\u0000\u0c1d\u0c1e"+ + "\u0007\r\u0000\u0000\u0c1e\u01e6\u0001\u0000\u0000\u0000\u0c1f\u0c20\u0007"+ + "\u0011\u0000\u0000\u0c20\u0c21\u0007\t\u0000\u0000\u0c21\u0c22\u0007\u0013"+ + "\u0000\u0000\u0c22\u0c23\u0007\u0006\u0000\u0000\u0c23\u0c24\u0007\u0005"+ + "\u0000\u0000\u0c24\u0c25\u0007\u0010\u0000\u0000\u0c25\u0c26\u0007\u0011"+ + "\u0000\u0000\u0c26\u0c27\u0007\u0013\u0000\u0000\u0c27\u0c28\u0007\u0007"+ + "\u0000\u0000\u0c28\u01e8\u0001\u0000\u0000\u0000\u0c29\u0c2a\u0007\u0015"+ + "\u0000\u0000\u0c2a\u0c2b\u0007\n\u0000\u0000\u0c2b\u0c2c\u0007\b\u0000"+ + "\u0000\u0c2c\u01ea\u0001\u0000\u0000\u0000\u0c2d\u0c2e\u0007\u0006\u0000"+ + "\u0000\u0c2e\u0c2f\u0007\u0005\u0000\u0000\u0c2f\u0c30\u0007\u0012\u0000"+ + "\u0000\u0c30\u0c31\u0007\n\u0000\u0000\u0c31\u0c32\u0007\u0006\u0000\u0000"+ + "\u0c32\u01ec\u0001\u0000\u0000\u0000\u0c33\u0c34\u0007\u0006\u0000\u0000"+ + "\u0c34\u0c35\u0007\u0005\u0000\u0000\u0c35\u0c36\u0007\u0007\u0000\u0000"+ + "\u0c36\u0c37\u0007\u0017\u0000\u0000\u0c37\u0c38\u0007\u0016\u0000\u0000"+ + "\u0c38\u0c39\u0007\u0005\u0000\u0000\u0c39\u0c3a\u0007\u0017\u0000\u0000"+ + "\u0c3a\u0c3b\u0007\n\u0000\u0000\u0c3b\u01ee\u0001\u0000\u0000\u0000\u0c3c"+ + "\u0c3d\u0007\u0006\u0000\u0000\u0c3d\u0c3e\u0007\u0005\u0000\u0000\u0c3e"+ + "\u0c3f\u0007\r\u0000\u0000\u0c3f\u0c40\u0007\u0017\u0000\u0000\u0c40\u0c41"+ + "\u0007\n\u0000\u0000\u0c41\u01f0\u0001\u0000\u0000\u0000\u0c42\u0c43\u0007"+ + "\u0006\u0000\u0000\u0c43\u0c44\u0007\u0005\u0000\u0000\u0c44\u0c45\u0007"+ + "\t\u0000\u0000\u0c45\u0c46\u0007\u0010\u0000\u0000\u0c46\u01f2\u0001\u0000"+ + "\u0000\u0000\u0c47\u0c48\u0007\u0006\u0000\u0000\u0c48\u0c49\u0007\n\u0000"+ + "\u0000\u0c49\u0c4a\u0007\u0005\u0000\u0000\u0c4a\u0c4b\u0007\u0015\u0000"+ + "\u0000\u0c4b\u0c4c\u0007\u0018\u0000\u0000\u0c4c\u0c4d\u0007\r\u0000\u0000"+ + "\u0c4d\u0c4e\u0007\u0013\u0000\u0000\u0c4e\u0c4f\u0007\u0013\u0000\u0000"+ + "\u0c4f\u0c50\u0007\u0019\u0000\u0000\u0c50\u01f4\u0001\u0000\u0000\u0000"+ + "\u0c51\u0c52\u0007\u0006\u0000\u0000\u0c52\u0c53\u0007\n\u0000\u0000\u0c53"+ + "\u0c54\u0007\u001b\u0000\u0000\u0c54\u0c55\u0007\n\u0000\u0000\u0c55\u0c56"+ + "\u0007\u0006\u0000\u0000\u0c56\u01f6\u0001\u0000\u0000\u0000\u0c57\u0c58"+ + "\u0007\u0006\u0000\u0000\u0c58\u0c59\u0007\u0011\u0000\u0000\u0c59\u0c5a"+ + "\u0007\t\u0000\u0000\u0c5a\u0c5b\u0007\u0010\u0000\u0000\u0c5b\u0c5c\u0007"+ + "\n\u0000\u0000\u0c5c\u0c5d\u0007\u0007\u0000\u0000\u0c5d\u01f8\u0001\u0000"+ + "\u0000\u0000\u0c5e\u0c5f\u0007\u0006\u0000\u0000\u0c5f\u0c60\u0007\u0013"+ + "\u0000\u0000\u0c60\u0c61\u0007\u0005\u0000\u0000\u0c61\u0c62\u0007\f\u0000"+ + "\u0000\u0c62\u01fa\u0001\u0000\u0000\u0000\u0c63\u0c64\u0007\u0006\u0000"+ + "\u0000\u0c64\u0c65\u0007\u0013\u0000\u0000\u0c65\u0c66\u0007\u000e\u0000"+ + "\u0000\u0c66\u0c67\u0007\u0005\u0000\u0000\u0c67\u0c68\u0007\u0006\u0000"+ + "\u0000\u0c68\u01fc\u0001\u0000\u0000\u0000\u0c69\u0c6a\u0007\u0006\u0000"+ + "\u0000\u0c6a\u0c6b\u0007\u0013\u0000\u0000\u0c6b\u0c6c\u0007\u000e\u0000"+ + "\u0000\u0c6c\u0c6d\u0007\u0005\u0000\u0000\u0c6d\u0c6e\u0007\u0010\u0000"+ + "\u0000\u0c6e\u0c6f\u0007\u0011\u0000\u0000\u0c6f\u0c70\u0007\u0013\u0000"+ + "\u0000\u0c70\u0c71\u0007\u0007\u0000\u0000\u0c71\u01fe\u0001\u0000\u0000"+ + "\u0000\u0c72\u0c73\u0007\u0006\u0000\u0000\u0c73\u0c74\u0007\u0013\u0000"+ + "\u0000\u0c74\u0c75\u0007\u000e\u0000\u0000\u0c75\u0c76\u0007\u0015\u0000"+ + "\u0000\u0c76\u0200\u0001\u0000\u0000\u0000\u0c77\u0c78\u0007\u000f\u0000"+ + "\u0000\u0c78\u0c79\u0007\u0005\u0000\u0000\u0c79\u0c7a\u0007\u0018\u0000"+ + "\u0000\u0c7a\u0c7b\u0007\u0018\u0000\u0000\u0c7b\u0c7c\u0007\u0011\u0000"+ + "\u0000\u0c7c\u0c7d\u0007\u0007\u0000\u0000\u0c7d\u0c7e\u0007\u0017\u0000"+ + "\u0000\u0c7e\u0202\u0001\u0000\u0000\u0000\u0c7f\u0c80\u0007\u000f\u0000"+ + "\u0000\u0c80\u0c81\u0007\u0005\u0000\u0000\u0c81\u0c82\u0007\u0010\u0000"+ + "\u0000\u0c82\u0c83\u0007\u000e\u0000\u0000\u0c83\u0c84\u0007\u0014\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\u000e\u0000\u0000\u0c89\u0c8a\u0007\u0014\u0000"+ + "\u0000\u0c8a\u0c8b\u0007\n\u0000\u0000\u0c8b\u0c8c\u0007\f\u0000\u0000"+ + "\u0c8c\u0206\u0001\u0000\u0000\u0000\u0c8d\u0c8e\u0007\u000f\u0000\u0000"+ + "\u0c8e\u0c8f\u0007\u0005\u0000\u0000\u0c8f\u0c90\u0007\u0010\u0000\u0000"+ + "\u0c90\u0c91\u0007\n\u0000\u0000\u0c91\u0c92\u0007\r\u0000\u0000\u0c92"+ + "\u0c93\u0007\u0011\u0000\u0000\u0c93\u0c94\u0007\u0005\u0000\u0000\u0c94"+ + "\u0c95\u0007\u0006\u0000\u0000\u0c95\u0c96\u0007\u0011\u0000\u0000\u0c96"+ + "\u0c97\u0007\u000b\u0000\u0000\u0c97\u0c98\u0007\n\u0000\u0000\u0c98\u0c99"+ + "\u0007\f\u0000\u0000\u0c99\u0208\u0001\u0000\u0000\u0000\u0c9a\u0c9b\u0007"+ + "\u000f\u0000\u0000\u0c9b\u0c9c\u0007\u0005\u0000\u0000\u0c9c\u0c9d\u0007"+ + "\u001a\u0000\u0000\u0c9d\u0c9e\u0007\u001b\u0000\u0000\u0c9e\u0c9f\u0007"+ + "\u0005\u0000\u0000\u0c9f\u0ca0\u0007\u0006\u0000\u0000\u0ca0\u0ca1\u0007"+ + "\u0016\u0000\u0000\u0ca1\u0ca2\u0007\n\u0000\u0000\u0ca2\u020a\u0001\u0000"+ + "\u0000\u0000\u0ca3\u0ca4\u0007\u000f\u0000\u0000\u0ca4\u0ca5\u0007\n\u0000"+ + "\u0000\u0ca5\u0ca6\u0007\r\u0000\u0000\u0ca6\u0ca7\u0007\u0017\u0000\u0000"+ + "\u0ca7\u0ca8\u0007\n\u0000\u0000\u0ca8\u020c\u0001\u0000\u0000\u0000\u0ca9"+ + "\u0caa\u0007\u000f\u0000\u0000\u0caa\u0cab\u0007\u0011\u0000\u0000\u0cab"+ + "\u0cac\u0007\u0007\u0000\u0000\u0cac\u0cad\u0007\u0016\u0000\u0000\u0cad"+ + "\u0cae\u0007\u0010\u0000\u0000\u0cae\u0caf\u0007\n\u0000\u0000\u0caf\u020e"+ + "\u0001\u0000\u0000\u0000\u0cb0\u0cb1\u0007\u000f\u0000\u0000\u0cb1\u0cb2"+ + "\u0007\u0011\u0000\u0000\u0cb2\u0cb3\u0007\u0007\u0000\u0000\u0cb3\u0cb4"+ + "\u0007\u001b\u0000\u0000\u0cb4\u0cb5\u0007\u0005\u0000\u0000\u0cb5\u0cb6"+ + "\u0007\u0006\u0000\u0000\u0cb6\u0cb7\u0007\u0016\u0000\u0000\u0cb7\u0cb8"+ + "\u0007\n\u0000\u0000\u0cb8\u0210\u0001\u0000\u0000\u0000\u0cb9\u0cba\u0007"+ + "\u000f\u0000\u0000\u0cba\u0cbb\u0007\u0013\u0000\u0000\u0cbb\u0cbc\u0007"+ + "\f\u0000\u0000\u0cbc\u0cbd\u0007\n\u0000\u0000\u0cbd\u0212\u0001\u0000"+ + "\u0000\u0000\u0cbe\u0cbf\u0007\u000f\u0000\u0000\u0cbf\u0cc0\u0007\u0013"+ + "\u0000\u0000\u0cc0\u0cc1\u0007\u0007\u0000\u0000\u0cc1\u0cc2\u0007\u0010"+ + "\u0000\u0000\u0cc2\u0cc3\u0007\u0014\u0000\u0000\u0cc3\u0214\u0001\u0000"+ + "\u0000\u0000\u0cc4\u0cc5\u0007\u000f\u0000\u0000\u0cc5\u0cc6\u0007\u0013"+ + "\u0000\u0000\u0cc6\u0cc7\u0007\u001b\u0000\u0000\u0cc7\u0cc8\u0007\n\u0000"+ + "\u0000\u0cc8\u0216\u0001\u0000\u0000\u0000\u0cc9\u0cca\u0007\u0007\u0000"+ + "\u0000\u0cca\u0ccb\u0007\u0005\u0000\u0000\u0ccb\u0ccc\u0007\u000f\u0000"+ + "\u0000\u0ccc\u0ccd\u0007\n\u0000\u0000\u0ccd\u0218\u0001\u0000\u0000\u0000"+ + "\u0cce\u0ccf\u0007\u0007\u0000\u0000\u0ccf\u0cd0\u0007\u0005\u0000\u0000"+ + "\u0cd0\u0cd1\u0007\u000f\u0000\u0000\u0cd1\u0cd2\u0007\n\u0000\u0000\u0cd2"+ + "\u0cd3\u0007\t\u0000\u0000\u0cd3\u021a\u0001\u0000\u0000\u0000\u0cd4\u0cd5"+ + "\u0007\u0007\u0000\u0000\u0cd5\u0cd6\u0007\n\u0000\u0000\u0cd6\u0cd7\u0007"+ + "\u001a\u0000\u0000\u0cd7\u0cd8\u0007\u0010\u0000\u0000\u0cd8\u021c\u0001"+ + "\u0000\u0000\u0000\u0cd9\u0cda\u0007\u0007\u0000\u0000\u0cda\u0cdb\u0007"+ + "\u0013\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\u0014\u0000\u0000\u0ce0\u0ce1\u0007"+ + "\u0011\u0000\u0000\u0ce1\u0ce2\u0007\u0007\u0000\u0000\u0ce2\u0ce3\u0007"+ + "\u0017\u0000\u0000\u0ce3\u0220\u0001\u0000\u0000\u0000\u0ce4\u0ce5\u0007"+ + "\u0007\u0000\u0000\u0ce5\u0ce6\u0007\u0013\u0000\u0000\u0ce6\u0ce7\u0007"+ + "\u0010\u0000\u0000\u0ce7\u0ce8\u0007\u0011\u0000\u0000\u0ce8\u0ce9\u0007"+ + "\u0019\u0000\u0000\u0ce9\u0cea\u0007\b\u0000\u0000\u0cea\u0222\u0001\u0000"+ + "\u0000\u0000\u0ceb\u0cec\u0007\u0007\u0000\u0000\u0cec\u0ced\u0007\u0013"+ + "\u0000\u0000\u0ced\u0cee\u0007\u001c\u0000\u0000\u0cee\u0cef\u0007\u0005"+ + "\u0000\u0000\u0cef\u0cf0\u0007\u0011\u0000\u0000\u0cf0\u0cf1\u0007\u0010"+ + "\u0000\u0000\u0cf1\u0224\u0001\u0000\u0000\u0000\u0cf2\u0cf3\u0007\u0007"+ + "\u0000\u0000\u0cf3\u0cf4\u0007\u0016\u0000\u0000\u0cf4\u0cf5\u0007\u0006"+ + "\u0000\u0000\u0cf5\u0cf6\u0007\u0006\u0000\u0000\u0cf6\u0cf7\u0007\t\u0000"+ + "\u0000\u0cf7\u0226\u0001\u0000\u0000\u0000\u0cf8\u0cf9\u0007\u0013\u0000"+ + "\u0000\u0cf9\u0cfa\u0007\u0012\u0000\u0000\u0cfa\u0cfb\u0007\u001e\u0000"+ + "\u0000\u0cfb\u0cfc\u0007\n\u0000\u0000\u0cfc\u0cfd\u0007\u000e\u0000\u0000"+ + "\u0cfd\u0cfe\u0007\u0010\u0000\u0000\u0cfe\u0228\u0001\u0000\u0000\u0000"+ + "\u0cff\u0d00\u0007\u0013\u0000\u0000\u0d00\u0d01\u0007\u0019\u0000\u0000"+ + "\u0d01\u022a\u0001\u0000\u0000\u0000\u0d02\u0d03\u0007\u0013\u0000\u0000"+ + "\u0d03\u0d04\u0007\u0019\u0000\u0000\u0d04\u0d05\u0007\u0019\u0000\u0000"+ + "\u0d05\u022c\u0001\u0000\u0000\u0000\u0d06\u0d07\u0007\u0013\u0000\u0000"+ + "\u0d07\u0d08\u0007\u0011\u0000\u0000\u0d08\u0d09\u0007\f\u0000\u0000\u0d09"+ + "\u0d0a\u0007\t\u0000\u0000\u0d0a\u022e\u0001\u0000\u0000\u0000\u0d0b\u0d0c"+ + "\u0007\u0013\u0000\u0000\u0d0c\u0d0d\u0007\u0018\u0000\u0000\u0d0d\u0d0e"+ + "\u0007\n\u0000\u0000\u0d0e\u0d0f\u0007\r\u0000\u0000\u0d0f\u0d10\u0007"+ + "\u0005\u0000\u0000\u0d10\u0d11\u0007\u0010\u0000\u0000\u0d11\u0d12\u0007"+ + "\u0013\u0000\u0000\u0d12\u0d13\u0007\r\u0000\u0000\u0d13\u0230\u0001\u0000"+ + "\u0000\u0000\u0d14\u0d15\u0007\u0013\u0000\u0000\u0d15\u0d16\u0007\u0018"+ + "\u0000\u0000\u0d16\u0d17\u0007\u0010\u0000\u0000\u0d17\u0d18\u0007\u0011"+ + "\u0000\u0000\u0d18\u0d19\u0007\u0013\u0000\u0000\u0d19\u0d1a\u0007\u0007"+ + "\u0000\u0000\u0d1a\u0232\u0001\u0000\u0000\u0000\u0d1b\u0d1c\u0007\u0013"+ + "\u0000\u0000\u0d1c\u0d1d\u0007\u0018\u0000\u0000\u0d1d\u0d1e\u0007\u0010"+ + "\u0000\u0000\u0d1e\u0d1f\u0007\u0011\u0000\u0000\u0d1f\u0d20\u0007\u0013"+ + "\u0000\u0000\u0d20\u0d21\u0007\u0007\u0000\u0000\u0d21\u0d22\u0007\t\u0000"+ + "\u0000\u0d22\u0234\u0001\u0000\u0000\u0000\u0d23\u0d24\u0007\u0013\u0000"+ + "\u0000\u0d24\u0d25\u0007\u001c\u0000\u0000\u0d25\u0d26\u0007\u0007\u0000"+ + "\u0000\u0d26\u0d27\u0007\n\u0000\u0000\u0d27\u0d28\u0007\f\u0000\u0000"+ + "\u0d28\u0236\u0001\u0000\u0000\u0000\u0d29\u0d2a\u0007\u0013\u0000\u0000"+ + "\u0d2a\u0d2b\u0007\u001c\u0000\u0000\u0d2b\u0d2c\u0007\u0007\u0000\u0000"+ + "\u0d2c\u0d2d\u0007\n\u0000\u0000\u0d2d\u0d2e\u0007\r\u0000\u0000\u0d2e"+ + "\u0238\u0001\u0000\u0000\u0000\u0d2f\u0d30\u0007\u0018\u0000\u0000\u0d30"+ + "\u0d31\u0007\u0005\u0000\u0000\u0d31\u0d32\u0007\r\u0000\u0000\u0d32\u0d33"+ + "\u0007\t\u0000\u0000\u0d33\u0d34\u0007\n\u0000\u0000\u0d34\u0d35\u0007"+ + "\r\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\u0005\u0000\u0000\u0d3c\u0d3d\u0007\u0006\u0000"+ + "\u0000\u0d3d\u023c\u0001\u0000\u0000\u0000\u0d3e\u0d3f\u0007\u0018\u0000"+ + "\u0000\u0d3f\u0d40\u0007\u0005\u0000\u0000\u0d40\u0d41\u0007\r\u0000\u0000"+ + "\u0d41\u0d42\u0007\u0010\u0000\u0000\u0d42\u0d43\u0007\u0011\u0000\u0000"+ + "\u0d43\u0d44\u0007\u0010\u0000\u0000\u0d44\u0d45\u0007\u0011\u0000\u0000"+ + "\u0d45\u0d46\u0007\u0013\u0000\u0000\u0d46\u0d47\u0007\u0007\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\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\u0005\u0000\u0000\u0d52\u0d53\u0007\t\u0000\u0000\u0d53\u0d54\u0007"+ + "\t\u0000\u0000\u0d54\u0d55\u0007\u001c\u0000\u0000\u0d55\u0d56\u0007\u0013"+ + "\u0000\u0000\u0d56\u0d57\u0007\r\u0000\u0000\u0d57\u0d58\u0007\f\u0000"+ + "\u0000\u0d58\u0242\u0001\u0000\u0000\u0000\u0d59\u0d5a\u0007\u0018\u0000"+ + "\u0000\u0d5a\u0d5b\u0007\u0006\u0000\u0000\u0d5b\u0d5c\u0007\u0005\u0000"+ + "\u0000\u0d5c\u0d5d\u0007\u0007\u0000\u0000\u0d5d\u0d5e\u0007\t\u0000\u0000"+ + "\u0d5e\u0244\u0001\u0000\u0000\u0000\u0d5f\u0d60\u0007\u0018\u0000\u0000"+ + "\u0d60\u0d61\u0007\r\u0000\u0000\u0d61\u0d62\u0007\n\u0000\u0000\u0d62"+ + "\u0d63\u0007\u000e\u0000\u0000\u0d63\u0d64\u0007\n\u0000\u0000\u0d64\u0d65"+ + "\u0007\f\u0000\u0000\u0d65\u0d66\u0007\u0011\u0000\u0000\u0d66\u0d67\u0007"+ + "\u0007\u0000\u0000\u0d67\u0d68\u0007\u0017\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\u0248\u0001\u0000\u0000\u0000"+ + "\u0d71\u0d72\u0007\u0018\u0000\u0000\u0d72\u0d73\u0007\r\u0000\u0000\u0d73"+ + "\u0d74\u0007\n\u0000\u0000\u0d74\u0d75\u0007\u0018\u0000\u0000\u0d75\u0d76"+ + "\u0007\u0005\u0000\u0000\u0d76\u0d77\u0007\r\u0000\u0000\u0d77\u0d78\u0007"+ + "\n\u0000\u0000\u0d78\u0d79\u0007\f\u0000\u0000\u0d79\u024a\u0001\u0000"+ + "\u0000\u0000\u0d7a\u0d7b\u0007\u0018\u0000\u0000\u0d7b\u0d7c\u0007\r\u0000"+ + "\u0000\u0d7c\u0d7d\u0007\n\u0000\u0000\u0d7d\u0d7e\u0007\t\u0000\u0000"+ + "\u0d7e\u0d7f\u0007\n\u0000\u0000\u0d7f\u0d80\u0007\r\u0000\u0000\u0d80"+ + "\u0d81\u0007\u001b\u0000\u0000\u0d81\u0d82\u0007\n\u0000\u0000\u0d82\u024c"+ + "\u0001\u0000\u0000\u0000\u0d83\u0d84\u0007\u0018\u0000\u0000\u0d84\u0d85"+ + "\u0007\r\u0000\u0000\u0d85\u0d86\u0007\u0011\u0000\u0000\u0d86\u0d87\u0007"+ + "\u0013\u0000\u0000\u0d87\u0d88\u0007\r\u0000\u0000\u0d88\u024e\u0001\u0000"+ + "\u0000\u0000\u0d89\u0d8a\u0007\u0018\u0000\u0000\u0d8a\u0d8b\u0007\r\u0000"+ + "\u0000\u0d8b\u0d8c\u0007\u0011\u0000\u0000\u0d8c\u0d8d\u0007\u001b\u0000"+ + "\u0000\u0d8d\u0d8e\u0007\u0011\u0000\u0000\u0d8e\u0d8f\u0007\u0006\u0000"+ + "\u0000\u0d8f\u0d90\u0007\n\u0000\u0000\u0d90\u0d91\u0007\u0017\u0000\u0000"+ + "\u0d91\u0d92\u0007\n\u0000\u0000\u0d92\u0d93\u0007\t\u0000\u0000\u0d93"+ + "\u0250\u0001\u0000\u0000\u0000\u0d94\u0d95\u0007\u0018\u0000\u0000\u0d95"+ + "\u0d96\u0007\r\u0000\u0000\u0d96\u0d97\u0007\u0013\u0000\u0000\u0d97\u0d98"+ + "\u0007\u000e\u0000\u0000\u0d98\u0d99\u0007\n\u0000\u0000\u0d99\u0d9a\u0007"+ + "\f\u0000\u0000\u0d9a\u0d9b\u0007\u0016\u0000\u0000\u0d9b\u0d9c\u0007\r"+ + "\u0000\u0000\u0d9c\u0d9d\u0007\u0005\u0000\u0000\u0d9d\u0d9e\u0007\u0006"+ + "\u0000\u0000\u0d9e\u0252\u0001\u0000\u0000\u0000\u0d9f\u0da0\u0007\u0018"+ + "\u0000\u0000\u0da0\u0da1\u0007\r\u0000\u0000\u0da1\u0da2\u0007\u0013\u0000"+ + "\u0000\u0da2\u0da3\u0007\u000e\u0000\u0000\u0da3\u0da4\u0007\n\u0000\u0000"+ + "\u0da4\u0da5\u0007\f\u0000\u0000\u0da5\u0da6\u0007\u0016\u0000\u0000\u0da6"+ + "\u0da7\u0007\r\u0000\u0000\u0da7\u0da8\u0007\n\u0000\u0000\u0da8\u0254"+ + "\u0001\u0000\u0000\u0000\u0da9\u0daa\u0007\u0018\u0000\u0000\u0daa\u0dab"+ + "\u0007\r\u0000\u0000\u0dab\u0dac\u0007\u0013\u0000\u0000\u0dac\u0dad\u0007"+ + "\u0017\u0000\u0000\u0dad\u0dae\u0007\r\u0000\u0000\u0dae\u0daf\u0007\u0005"+ + "\u0000\u0000\u0daf\u0db0\u0007\u000f\u0000\u0000\u0db0\u0256\u0001\u0000"+ + "\u0000\u0000\u0db1\u0db2\u0007\u001d\u0000\u0000\u0db2\u0db3\u0007\u0016"+ + "\u0000\u0000\u0db3\u0db4\u0007\u0013\u0000\u0000\u0db4\u0db5\u0007\u0010"+ + "\u0000\u0000\u0db5\u0db6\u0007\n\u0000\u0000\u0db6\u0258\u0001\u0000\u0000"+ + "\u0000\u0db7\u0db8\u0007\r\u0000\u0000\u0db8\u0db9\u0007\u0005\u0000\u0000"+ + "\u0db9\u0dba\u0007\u0007\u0000\u0000\u0dba\u0dbb\u0007\u0017\u0000\u0000"+ + "\u0dbb\u0dbc\u0007\n\u0000\u0000\u0dbc\u025a\u0001\u0000\u0000\u0000\u0dbd"+ + "\u0dbe\u0007\r\u0000\u0000\u0dbe\u0dbf\u0007\n\u0000\u0000\u0dbf\u0dc0"+ + "\u0007\u0005\u0000\u0000\u0dc0\u0dc1\u0007\f\u0000\u0000\u0dc1\u025c\u0001"+ + "\u0000\u0000\u0000\u0dc2\u0dc3\u0007\r\u0000\u0000\u0dc3\u0dc4\u0007\n"+ + "\u0000\u0000\u0dc4\u0dc5\u0007\u0005\u0000\u0000\u0dc5\u0dc6\u0007\t\u0000"+ + "\u0000\u0dc6\u0dc7\u0007\t\u0000\u0000\u0dc7\u0dc8\u0007\u0011\u0000\u0000"+ + "\u0dc8\u0dc9\u0007\u0017\u0000\u0000\u0dc9\u0dca\u0007\u0007\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\u0014\u0000\u0000\u0dcf\u0dd0\u0007\n\u0000\u0000\u0dd0\u0dd1\u0007"+ + "\u000e\u0000\u0000\u0dd1\u0dd2\u0007\u0015\u0000\u0000\u0dd2\u0260\u0001"+ + "\u0000\u0000\u0000\u0dd3\u0dd4\u0007\r\u0000\u0000\u0dd4\u0dd5\u0007\n"+ + "\u0000\u0000\u0dd5\u0dd6\u0007\u000e\u0000\u0000\u0dd6\u0dd7\u0007\u0016"+ + "\u0000\u0000\u0dd7\u0dd8\u0007\r\u0000\u0000\u0dd8\u0dd9\u0007\t\u0000"+ + "\u0000\u0dd9\u0dda\u0007\u0011\u0000\u0000\u0dda\u0ddb\u0007\u001b\u0000"+ + "\u0000\u0ddb\u0ddc\u0007\n\u0000\u0000\u0ddc\u0262\u0001\u0000\u0000\u0000"+ + "\u0ddd\u0dde\u0007\r\u0000\u0000\u0dde\u0ddf\u0007\n\u0000\u0000\u0ddf"+ + "\u0de0\u0007\u0019\u0000\u0000\u0de0\u0264\u0001\u0000\u0000\u0000\u0de1"+ + "\u0de2\u0007\r\u0000\u0000\u0de2\u0de3\u0007\n\u0000\u0000\u0de3\u0de4"+ + "\u0007\u0019\u0000\u0000\u0de4\u0de5\u0007\r\u0000\u0000\u0de5\u0de6\u0007"+ + "\n\u0000\u0000\u0de6\u0de7\u0007\t\u0000\u0000\u0de7\u0de8\u0007\u0014"+ + "\u0000\u0000\u0de8\u0266\u0001\u0000\u0000\u0000\u0de9\u0dea\u0007\r\u0000"+ + "\u0000\u0dea\u0deb\u0007\n\u0000\u0000\u0deb\u0dec\u0007\u0011\u0000\u0000"+ + "\u0dec\u0ded\u0007\u0007\u0000\u0000\u0ded\u0dee\u0007\f\u0000\u0000\u0dee"+ + "\u0def\u0007\n\u0000\u0000\u0def\u0df0\u0007\u001a\u0000\u0000\u0df0\u0268"+ + "\u0001\u0000\u0000\u0000\u0df1\u0df2\u0007\r\u0000\u0000\u0df2\u0df3\u0007"+ + "\n\u0000\u0000\u0df3\u0df4\u0007\u0006\u0000\u0000\u0df4\u0df5\u0007\u0005"+ + "\u0000\u0000\u0df5\u0df6\u0007\u0010\u0000\u0000\u0df6\u0df7\u0007\u0011"+ + "\u0000\u0000\u0df7\u0df8\u0007\u001b\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\u0006\u0000\u0000\u0dfd"+ + "\u0dfe\u0007\n\u0000\u0000\u0dfe\u0dff\u0007\u0005\u0000\u0000\u0dff\u0e00"+ + "\u0007\t\u0000\u0000\u0e00\u0e01\u0007\n\u0000\u0000\u0e01\u026c\u0001"+ + "\u0000\u0000\u0000\u0e02\u0e03\u0007\r\u0000\u0000\u0e03\u0e04\u0007\n"+ + "\u0000\u0000\u0e04\u0e05\u0007\u0007\u0000\u0000\u0e05\u0e06\u0007\u0005"+ + "\u0000\u0000\u0e06\u0e07\u0007\u000f\u0000\u0000\u0e07\u0e08\u0007\n\u0000"+ + "\u0000\u0e08\u026e\u0001\u0000\u0000\u0000\u0e09\u0e0a\u0007\r\u0000\u0000"+ + "\u0e0a\u0e0b\u0007\n\u0000\u0000\u0e0b\u0e0c\u0007\u0018\u0000\u0000\u0e0c"+ + "\u0e0d\u0007\n\u0000\u0000\u0e0d\u0e0e\u0007\u0005\u0000\u0000\u0e0e\u0e0f"+ + "\u0007\u0010\u0000\u0000\u0e0f\u0e10\u0007\u0005\u0000\u0000\u0e10\u0e11"+ + "\u0007\u0012\u0000\u0000\u0e11\u0e12\u0007\u0006\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\u0005"+ + "\u0000\u0000\u0e19\u0e1a\u0007\u000e\u0000\u0000\u0e1a\u0e1b\u0007\n\u0000"+ + "\u0000\u0e1b\u0272\u0001\u0000\u0000\u0000\u0e1c\u0e1d\u0007\r\u0000\u0000"+ + "\u0e1d\u0e1e\u0007\n\u0000\u0000\u0e1e\u0e1f\u0007\u0018\u0000\u0000\u0e1f"+ + "\u0e20\u0007\u0006\u0000\u0000\u0e20\u0e21\u0007\u0011\u0000\u0000\u0e21"+ + "\u0e22\u0007\u000e\u0000\u0000\u0e22\u0e23\u0007\u0005\u0000\u0000\u0e23"+ + "\u0274\u0001\u0000\u0000\u0000\u0e24\u0e25\u0007\r\u0000\u0000\u0e25\u0e26"+ + "\u0007\n\u0000\u0000\u0e26\u0e27\u0007\t\u0000\u0000\u0e27\u0e28\u0007"+ + "\n\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\u0005\u0000\u0000\u0e2f\u0e30\u0007\r\u0000\u0000\u0e30"+ + "\u0e31\u0007\u0010\u0000\u0000\u0e31\u0278\u0001\u0000\u0000\u0000\u0e32"+ + "\u0e33\u0007\r\u0000\u0000\u0e33\u0e34\u0007\n\u0000\u0000\u0e34\u0e35"+ + "\u0007\t\u0000\u0000\u0e35\u0e36\u0007\u0010\u0000\u0000\u0e36\u0e37\u0007"+ + "\r\u0000\u0000\u0e37\u0e38\u0007\u0011\u0000\u0000\u0e38\u0e39\u0007\u000e"+ + "\u0000\u0000\u0e39\u0e3a\u0007\u0010\u0000\u0000\u0e3a\u027a\u0001\u0000"+ + "\u0000\u0000\u0e3b\u0e3c\u0007\r\u0000\u0000\u0e3c\u0e3d\u0007\n\u0000"+ + "\u0000\u0e3d\u0e3e\u0007\u0010\u0000\u0000\u0e3e\u0e3f\u0007\u0016\u0000"+ + "\u0000\u0e3f\u0e40\u0007\r\u0000\u0000\u0e40\u0e41\u0007\u0007\u0000\u0000"+ + "\u0e41\u0e42\u0007\t\u0000\u0000\u0e42\u027c\u0001\u0000\u0000\u0000\u0e43"+ + "\u0e44\u0007\r\u0000\u0000\u0e44\u0e45\u0007\n\u0000\u0000\u0e45\u0e46"+ + "\u0007\u001b\u0000\u0000\u0e46\u0e47\u0007\u0013\u0000\u0000\u0e47\u0e48"+ + "\u0007\u0015\u0000\u0000\u0e48\u0e49\u0007\n\u0000\u0000\u0e49\u027e\u0001"+ + "\u0000\u0000\u0000\u0e4a\u0e4b\u0007\r\u0000\u0000\u0e4b\u0e4c\u0007\u0013"+ + "\u0000\u0000\u0e4c\u0e4d\u0007\u0006\u0000\u0000\u0e4d\u0e4e\u0007\n\u0000"+ + "\u0000\u0e4e\u0280\u0001\u0000\u0000\u0000\u0e4f\u0e50\u0007\r\u0000\u0000"+ + "\u0e50\u0e51\u0007\u0013\u0000\u0000\u0e51\u0e52\u0007\u0006\u0000\u0000"+ + "\u0e52\u0e53\u0007\u0006\u0000\u0000\u0e53\u0e54\u0007\u0012\u0000\u0000"+ + "\u0e54\u0e55\u0007\u0005\u0000\u0000\u0e55\u0e56\u0007\u000e\u0000\u0000"+ + "\u0e56\u0e57\u0007\u0015\u0000\u0000\u0e57\u0282\u0001\u0000\u0000\u0000"+ + "\u0e58\u0e59\u0007\r\u0000\u0000\u0e59\u0e5a\u0007\u0013\u0000\u0000\u0e5a"+ + "\u0e5b\u0007\u001c\u0000\u0000\u0e5b\u0e5c\u0007\t\u0000\u0000\u0e5c\u0284"+ + "\u0001\u0000\u0000\u0000\u0e5d\u0e5e\u0007\r\u0000\u0000\u0e5e\u0e5f\u0007"+ + "\u0016\u0000\u0000\u0e5f\u0e60\u0007\u0006\u0000\u0000\u0e60\u0e61\u0007"+ + "\n\u0000\u0000\u0e61\u0286\u0001\u0000\u0000\u0000\u0e62\u0e63\u0007\t"+ + "\u0000\u0000\u0e63\u0e64\u0007\u0005\u0000\u0000\u0e64\u0e65\u0007\u001b"+ + "\u0000\u0000\u0e65\u0e66\u0007\n\u0000\u0000\u0e66\u0e67\u0007\u0018\u0000"+ + "\u0000\u0e67\u0e68\u0007\u0013\u0000\u0000\u0e68\u0e69\u0007\u0011\u0000"+ + "\u0000\u0e69\u0e6a\u0007\u0007\u0000\u0000\u0e6a\u0e6b\u0007\u0010\u0000"+ + "\u0000\u0e6b\u0288\u0001\u0000\u0000\u0000\u0e6c\u0e6d\u0007\t\u0000\u0000"+ + "\u0e6d\u0e6e\u0007\u000e\u0000\u0000\u0e6e\u0e6f\u0007\u0014\u0000\u0000"+ + "\u0e6f\u0e70\u0007\n\u0000\u0000\u0e70\u0e71\u0007\u000f\u0000\u0000\u0e71"+ + "\u0e72\u0007\u0005\u0000\u0000\u0e72\u028a\u0001\u0000\u0000\u0000\u0e73"+ + "\u0e74\u0007\t\u0000\u0000\u0e74\u0e75\u0007\u000e\u0000\u0000\u0e75\u0e76"+ + "\u0007\r\u0000\u0000\u0e76\u0e77\u0007\u0013\u0000\u0000\u0e77\u0e78\u0007"+ + "\u0006\u0000\u0000\u0e78\u0e79\u0007\u0006\u0000\u0000\u0e79\u028c\u0001"+ + "\u0000\u0000\u0000\u0e7a\u0e7b\u0007\t\u0000\u0000\u0e7b\u0e7c\u0007\n"+ + "\u0000\u0000\u0e7c\u0e7d\u0007\u0005\u0000\u0000\u0e7d\u0e7e\u0007\r\u0000"+ + "\u0000\u0e7e\u0e7f\u0007\u000e\u0000\u0000\u0e7f\u0e80\u0007\u0014\u0000"+ + "\u0000\u0e80\u028e\u0001\u0000\u0000\u0000\u0e81\u0e82\u0007\t\u0000\u0000"+ + "\u0e82\u0e83\u0007\n\u0000\u0000\u0e83\u0e84\u0007\u000e\u0000\u0000\u0e84"+ + "\u0e85\u0007\u0013\u0000\u0000\u0e85\u0e86\u0007\u0007\u0000\u0000\u0e86"+ + "\u0e87\u0007\f\u0000\u0000\u0e87\u0290\u0001\u0000\u0000\u0000\u0e88\u0e89"+ + "\u0007\t\u0000\u0000\u0e89\u0e8a\u0007\n\u0000\u0000\u0e8a\u0e8b\u0007"+ + "\u000e\u0000\u0000\u0e8b\u0e8c\u0007\u0016\u0000\u0000\u0e8c\u0e8d\u0007"+ + "\r\u0000\u0000\u0e8d\u0e8e\u0007\u0011\u0000\u0000\u0e8e\u0e8f\u0007\u0010"+ + "\u0000\u0000\u0e8f\u0e90\u0007\b\u0000\u0000\u0e90\u0292\u0001\u0000\u0000"+ + "\u0000\u0e91\u0e92\u0007\t\u0000\u0000\u0e92\u0e93\u0007\n\u0000\u0000"+ + "\u0e93\u0e94\u0007\u001d\u0000\u0000\u0e94\u0e95\u0007\u0016\u0000\u0000"+ + "\u0e95\u0e96\u0007\n\u0000\u0000\u0e96\u0e97\u0007\u0007\u0000\u0000\u0e97"+ + "\u0e98\u0007\u000e\u0000\u0000\u0e98\u0e99\u0007\n\u0000\u0000\u0e99\u0294"+ + "\u0001\u0000\u0000\u0000\u0e9a\u0e9b\u0007\t\u0000\u0000\u0e9b\u0e9c\u0007"+ + "\n\u0000\u0000\u0e9c\u0e9d\u0007\u001d\u0000\u0000\u0e9d\u0e9e\u0007\u0016"+ + "\u0000\u0000\u0e9e\u0e9f\u0007\n\u0000\u0000\u0e9f\u0ea0\u0007\u0007\u0000"+ + "\u0000\u0ea0\u0ea1\u0007\u000e\u0000\u0000\u0ea1\u0ea2\u0007\n\u0000\u0000"+ + "\u0ea2\u0ea3\u0007\t\u0000\u0000\u0ea3\u0296\u0001\u0000\u0000\u0000\u0ea4"+ + "\u0ea5\u0007\t\u0000\u0000\u0ea5\u0ea6\u0007\n\u0000\u0000\u0ea6\u0ea7"+ + "\u0007\r\u0000\u0000\u0ea7\u0ea8\u0007\u0011\u0000\u0000\u0ea8\u0ea9\u0007"+ + "\u0005\u0000\u0000\u0ea9\u0eaa\u0007\u0006\u0000\u0000\u0eaa\u0eab\u0007"+ + "\u0011\u0000\u0000\u0eab\u0eac\u0007\u000b\u0000\u0000\u0eac\u0ead\u0007"+ + "\u0005\u0000\u0000\u0ead\u0eae\u0007\u0012\u0000\u0000\u0eae\u0eaf\u0007"+ + "\u0006\u0000\u0000\u0eaf\u0eb0\u0007\n\u0000\u0000\u0eb0\u0298\u0001\u0000"+ + "\u0000\u0000\u0eb1\u0eb2\u0007\t\u0000\u0000\u0eb2\u0eb3\u0007\n\u0000"+ + "\u0000\u0eb3\u0eb4\u0007\r\u0000\u0000\u0eb4\u0eb5\u0007\u001b\u0000\u0000"+ + "\u0eb5\u0eb6\u0007\n\u0000\u0000\u0eb6\u0eb7\u0007\r\u0000\u0000\u0eb7"+ + "\u029a\u0001\u0000\u0000\u0000\u0eb8\u0eb9\u0007\t\u0000\u0000\u0eb9\u0eba"+ + "\u0007\n\u0000\u0000\u0eba\u0ebb\u0007\t\u0000\u0000\u0ebb\u0ebc\u0007"+ + "\t\u0000\u0000\u0ebc\u0ebd\u0007\u0011\u0000\u0000\u0ebd\u0ebe\u0007\u0013"+ + "\u0000\u0000\u0ebe\u0ebf\u0007\u0007\u0000\u0000\u0ebf\u029c\u0001\u0000"+ + "\u0000\u0000\u0ec0\u0ec1\u0007\t\u0000\u0000\u0ec1\u0ec2\u0007\n\u0000"+ + "\u0000\u0ec2\u0ec3\u0007\u0010\u0000\u0000\u0ec3\u029e\u0001\u0000\u0000"+ + "\u0000\u0ec4\u0ec5\u0007\t\u0000\u0000\u0ec5\u0ec6\u0007\u0014\u0000\u0000"+ + "\u0ec6\u0ec7\u0007\u0005\u0000\u0000\u0ec7\u0ec8\u0007\r\u0000\u0000\u0ec8"+ + "\u0ec9\u0007\n\u0000\u0000\u0ec9\u02a0\u0001\u0000\u0000\u0000\u0eca\u0ecb"+ + "\u0007\t\u0000\u0000\u0ecb\u0ecc\u0007\u0014\u0000\u0000\u0ecc\u0ecd\u0007"+ + "\u0013\u0000\u0000\u0ecd\u0ece\u0007\u001c\u0000\u0000\u0ece\u02a2\u0001"+ + "\u0000\u0000\u0000\u0ecf\u0ed0\u0007\t\u0000\u0000\u0ed0\u0ed1\u0007\u0011"+ + "\u0000\u0000\u0ed1\u0ed2\u0007\u000f\u0000\u0000\u0ed2\u0ed3\u0007\u0018"+ + "\u0000\u0000\u0ed3\u0ed4\u0007\u0006\u0000\u0000\u0ed4\u0ed5\u0007\n\u0000"+ + "\u0000\u0ed5\u02a4\u0001\u0000\u0000\u0000\u0ed6\u0ed7\u0007\t\u0000\u0000"+ + "\u0ed7\u0ed8\u0007\u0007\u0000\u0000\u0ed8\u0ed9\u0007\u0005\u0000\u0000"+ + "\u0ed9\u0eda\u0007\u0018\u0000\u0000\u0eda\u0edb\u0007\t\u0000\u0000\u0edb"+ + "\u0edc\u0007\u0014\u0000\u0000\u0edc\u0edd\u0007\u0013\u0000\u0000\u0edd"+ + "\u0ede\u0007\u0010\u0000\u0000\u0ede\u02a6\u0001\u0000\u0000\u0000\u0edf"+ + "\u0ee0\u0007\t\u0000\u0000\u0ee0\u0ee1\u0007\u0010\u0000\u0000\u0ee1\u0ee2"+ + "\u0007\u0005\u0000\u0000\u0ee2\u0ee3\u0007\u0012\u0000\u0000\u0ee3\u0ee4"+ + "\u0007\u0006\u0000\u0000\u0ee4\u0ee5\u0007\n\u0000\u0000\u0ee5\u02a8\u0001"+ + "\u0000\u0000\u0000\u0ee6\u0ee7\u0007\t\u0000\u0000\u0ee7\u0ee8\u0007\u0010"+ + "\u0000\u0000\u0ee8\u0ee9\u0007\u0005\u0000\u0000\u0ee9\u0eea\u0007\u0007"+ + "\u0000\u0000\u0eea\u0eeb\u0007\f\u0000\u0000\u0eeb\u0eec\u0007\u0005\u0000"+ + "\u0000\u0eec\u0eed\u0007\u0006\u0000\u0000\u0eed\u0eee\u0007\u0013\u0000"+ + "\u0000\u0eee\u0eef\u0007\u0007\u0000\u0000\u0eef\u0ef0\u0007\n\u0000\u0000"+ + "\u0ef0\u02aa\u0001\u0000\u0000\u0000\u0ef1\u0ef2\u0007\t\u0000\u0000\u0ef2"+ + "\u0ef3\u0007\u0010\u0000\u0000\u0ef3\u0ef4\u0007\u0005\u0000\u0000\u0ef4"+ + "\u0ef5\u0007\r\u0000\u0000\u0ef5\u0ef6\u0007\u0010\u0000\u0000\u0ef6\u02ac"+ + "\u0001\u0000\u0000\u0000\u0ef7\u0ef8\u0007\t\u0000\u0000\u0ef8\u0ef9\u0007"+ + "\u0010\u0000\u0000\u0ef9\u0efa\u0007\u0005\u0000\u0000\u0efa\u0efb\u0007"+ + "\u0010\u0000\u0000\u0efb\u0efc\u0007\n\u0000\u0000\u0efc\u0efd\u0007\u000f"+ + "\u0000\u0000\u0efd\u0efe\u0007\n\u0000\u0000\u0efe\u0eff\u0007\u0007\u0000"+ + "\u0000\u0eff\u0f00\u0007\u0010\u0000\u0000\u0f00\u02ae\u0001\u0000\u0000"+ + "\u0000\u0f01\u0f02\u0007\t\u0000\u0000\u0f02\u0f03\u0007\u0010\u0000\u0000"+ + "\u0f03\u0f04\u0007\u0005\u0000\u0000\u0f04\u0f05\u0007\u0010\u0000\u0000"+ + "\u0f05\u0f06\u0007\u0011\u0000\u0000\u0f06\u0f07\u0007\t\u0000\u0000\u0f07"+ + "\u0f08\u0007\u0010\u0000\u0000\u0f08\u0f09\u0007\u0011\u0000\u0000\u0f09"+ + "\u0f0a\u0007\u000e\u0000\u0000\u0f0a\u0f0b\u0007\t\u0000\u0000\u0f0b\u02b0"+ + "\u0001\u0000\u0000\u0000\u0f0c\u0f0d\u0007\t\u0000\u0000\u0f0d\u0f0e\u0007"+ + "\u0010\u0000\u0000\u0f0e\u0f0f\u0007\f\u0000\u0000\u0f0f\u0f10\u0007\u0011"+ + "\u0000\u0000\u0f10\u0f11\u0007\u0007\u0000\u0000\u0f11\u02b2\u0001\u0000"+ + "\u0000\u0000\u0f12\u0f13\u0007\t\u0000\u0000\u0f13\u0f14\u0007\u0010\u0000"+ + "\u0000\u0f14\u0f15\u0007\f\u0000\u0000\u0f15\u0f16\u0007\u0013\u0000\u0000"+ + "\u0f16\u0f17\u0007\u0016\u0000\u0000\u0f17\u0f18\u0007\u0010\u0000\u0000"+ + "\u0f18\u02b4\u0001\u0000\u0000\u0000\u0f19\u0f1a\u0007\t\u0000\u0000\u0f1a"+ + "\u0f1b\u0007\u0010\u0000\u0000\u0f1b\u0f1c\u0007\u0013\u0000\u0000\u0f1c"+ + "\u0f1d\u0007\r\u0000\u0000\u0f1d\u0f1e\u0007\u0005\u0000\u0000\u0f1e\u0f1f"+ + "\u0007\u0017\u0000\u0000\u0f1f\u0f20\u0007\n\u0000\u0000\u0f20\u02b6\u0001"+ + "\u0000\u0000\u0000\u0f21\u0f22\u0007\t\u0000\u0000\u0f22\u0f23\u0007\u0010"+ + "\u0000\u0000\u0f23\u0f24\u0007\r\u0000\u0000\u0f24\u0f25\u0007\u0011\u0000"+ + "\u0000\u0f25\u0f26\u0007\u000e\u0000\u0000\u0f26\u0f27\u0007\u0010\u0000"+ + "\u0000\u0f27\u02b8\u0001\u0000\u0000\u0000\u0f28\u0f29\u0007\t\u0000\u0000"+ + "\u0f29\u0f2a\u0007\u0010\u0000\u0000\u0f2a\u0f2b\u0007\r\u0000\u0000\u0f2b"+ + "\u0f2c\u0007\u0011\u0000\u0000\u0f2c\u0f2d\u0007\u0018\u0000\u0000\u0f2d"+ + "\u02ba\u0001\u0000\u0000\u0000\u0f2e\u0f2f\u0007\t\u0000\u0000\u0f2f\u0f30"+ + "\u0007\b\u0000\u0000\u0f30\u0f31\u0007\t\u0000\u0000\u0f31\u0f32\u0007"+ + "\u0011\u0000\u0000\u0f32\u0f33\u0007\f\u0000\u0000\u0f33\u02bc\u0001\u0000"+ + "\u0000\u0000\u0f34\u0f35\u0007\t\u0000\u0000\u0f35\u0f36\u0007\b\u0000"+ + "\u0000\u0f36\u0f37\u0007\t\u0000\u0000\u0f37\u0f38\u0007\u0010\u0000\u0000"+ + "\u0f38\u0f39\u0007\n\u0000\u0000\u0f39\u0f3a\u0007\u000f\u0000\u0000\u0f3a"+ + "\u02be\u0001\u0000\u0000\u0000\u0f3b\u0f3c\u0007\u0010\u0000\u0000\u0f3c"+ + "\u0f3d\u0007\u0005\u0000\u0000\u0f3d\u0f3e\u0007\u0012\u0000\u0000\u0f3e"+ + "\u0f3f\u0007\u0006\u0000\u0000\u0f3f\u0f40\u0007\n\u0000\u0000\u0f40\u0f41"+ + "\u0007\t\u0000\u0000\u0f41\u02c0\u0001\u0000\u0000\u0000\u0f42\u0f43\u0007"+ + "\u0010\u0000\u0000\u0f43\u0f44\u0007\u0005\u0000\u0000\u0f44\u0f45\u0007"+ + "\u0012\u0000\u0000\u0f45\u0f46\u0007\u0006\u0000\u0000\u0f46\u0f47\u0007"+ + "\n\u0000\u0000\u0f47\u0f48\u0007\t\u0000\u0000\u0f48\u0f49\u0007\u0018"+ + "\u0000\u0000\u0f49\u0f4a\u0007\u0005\u0000\u0000\u0f4a\u0f4b\u0007\u000e"+ + "\u0000\u0000\u0f4b\u0f4c\u0007\n\u0000\u0000\u0f4c\u02c2\u0001\u0000\u0000"+ + "\u0000\u0f4d\u0f4e\u0007\u0010\u0000\u0000\u0f4e\u0f4f\u0007\n\u0000\u0000"+ + "\u0f4f\u0f50\u0007\u000f\u0000\u0000\u0f50\u0f51\u0007\u0018\u0000\u0000"+ + "\u0f51\u02c4\u0001\u0000\u0000\u0000\u0f52\u0f53\u0007\u0010\u0000\u0000"+ + "\u0f53\u0f54\u0007\n\u0000\u0000\u0f54\u0f55\u0007\u000f\u0000\u0000\u0f55"+ + "\u0f56\u0007\u0018\u0000\u0000\u0f56\u0f57\u0007\u0006\u0000\u0000\u0f57"+ + "\u0f58\u0007\u0005\u0000\u0000\u0f58\u0f59\u0007\u0010\u0000\u0000\u0f59"+ + "\u0f5a\u0007\n\u0000\u0000\u0f5a\u02c6\u0001\u0000\u0000\u0000\u0f5b\u0f5c"+ + "\u0007\u0010\u0000\u0000\u0f5c\u0f5d\u0007\n\u0000\u0000\u0f5d\u0f5e\u0007"+ + "\u000f\u0000\u0000\u0f5e\u0f5f\u0007\u0018\u0000\u0000\u0f5f\u0f60\u0007"+ + "\u0013\u0000\u0000\u0f60\u0f61\u0007\r\u0000\u0000\u0f61\u0f62\u0007\u0005"+ + "\u0000\u0000\u0f62\u0f63\u0007\r\u0000\u0000\u0f63\u0f64\u0007\b\u0000"+ + "\u0000\u0f64\u02c8\u0001\u0000\u0000\u0000\u0f65\u0f66\u0007\u0010\u0000"+ + "\u0000\u0f66\u0f67\u0007\n\u0000\u0000\u0f67\u0f68\u0007\u001a\u0000\u0000"+ + "\u0f68\u0f69\u0007\u0010\u0000\u0000\u0f69\u02ca\u0001\u0000\u0000\u0000"+ + "\u0f6a\u0f6b\u0007\u0010\u0000\u0000\u0f6b\u0f6c\u0007\r\u0000\u0000\u0f6c"+ + "\u0f6d\u0007\u0005\u0000\u0000\u0f6d\u0f6e\u0007\u0007\u0000\u0000\u0f6e"+ + "\u0f6f\u0007\t\u0000\u0000\u0f6f\u0f70\u0007\u0005\u0000\u0000\u0f70\u0f71"+ + "\u0007\u000e\u0000\u0000\u0f71\u0f72\u0007\u0010\u0000\u0000\u0f72\u0f73"+ + "\u0007\u0011\u0000\u0000\u0f73\u0f74\u0007\u0013\u0000\u0000\u0f74\u0f75"+ + "\u0007\u0007\u0000\u0000\u0f75\u02cc\u0001\u0000\u0000\u0000\u0f76\u0f77"+ + "\u0007\u0010\u0000\u0000\u0f77\u0f78\u0007\r\u0000\u0000\u0f78\u0f79\u0007"+ + "\u0011\u0000\u0000\u0f79\u0f7a\u0007\u0017\u0000\u0000\u0f7a\u0f7b\u0007"+ + "\u0017\u0000\u0000\u0f7b\u0f7c\u0007\n\u0000\u0000\u0f7c\u0f7d\u0007\r"+ + "\u0000\u0000\u0f7d\u02ce\u0001\u0000\u0000\u0000\u0f7e\u0f7f\u0007\u0010"+ + "\u0000\u0000\u0f7f\u0f80\u0007\r\u0000\u0000\u0f80\u0f81\u0007\u0016\u0000"+ + "\u0000\u0f81\u0f82\u0007\u0007\u0000\u0000\u0f82\u0f83\u0007\u000e\u0000"+ + "\u0000\u0f83\u0f84\u0007\u0005\u0000\u0000\u0f84\u0f85\u0007\u0010\u0000"+ + "\u0000\u0f85\u0f86\u0007\n\u0000\u0000\u0f86\u02d0\u0001\u0000\u0000\u0000"+ + "\u0f87\u0f88\u0007\u0010\u0000\u0000\u0f88\u0f89\u0007\r\u0000\u0000\u0f89"+ + "\u0f8a\u0007\u0016\u0000\u0000\u0f8a\u0f8b\u0007\t\u0000\u0000\u0f8b\u0f8c"+ + "\u0007\u0010\u0000\u0000\u0f8c\u0f8d\u0007\n\u0000\u0000\u0f8d\u0f8e\u0007"+ + "\f\u0000\u0000\u0f8e\u02d2\u0001\u0000\u0000\u0000\u0f8f\u0f90\u0007\u0010"+ + "\u0000\u0000\u0f90\u0f91\u0007\b\u0000\u0000\u0f91\u0f92\u0007\u0018\u0000"+ + "\u0000\u0f92\u0f93\u0007\n\u0000\u0000\u0f93\u02d4\u0001\u0000\u0000\u0000"+ + "\u0f94\u0f95\u0007\u0010\u0000\u0000\u0f95\u0f96\u0007\b\u0000\u0000\u0f96"+ + "\u0f97\u0007\u0018\u0000\u0000\u0f97\u0f98\u0007\n\u0000\u0000\u0f98\u0f99"+ + "\u0007\t\u0000\u0000\u0f99\u02d6\u0001\u0000\u0000\u0000\u0f9a\u0f9b\u0007"+ + "\u0016\u0000\u0000\u0f9b\u0f9c\u0007\u0007\u0000\u0000\u0f9c\u0f9d\u0007"+ + "\u0012\u0000\u0000\u0f9d\u0f9e\u0007\u0013\u0000\u0000\u0f9e\u0f9f\u0007"+ + "\u0016\u0000\u0000\u0f9f\u0fa0\u0007\u0007\u0000\u0000\u0fa0\u0fa1\u0007"+ + "\f\u0000\u0000\u0fa1\u0fa2\u0007\n\u0000\u0000\u0fa2\u0fa3\u0007\f\u0000"+ + "\u0000\u0fa3\u02d8\u0001\u0000\u0000\u0000\u0fa4\u0fa5\u0007\u0016\u0000"+ + "\u0000\u0fa5\u0fa6\u0007\u0007\u0000\u0000\u0fa6\u0fa7\u0007\u000e\u0000"+ + "\u0000\u0fa7\u0fa8\u0007\u0013\u0000\u0000\u0fa8\u0fa9\u0007\u000f\u0000"+ + "\u0000\u0fa9\u0faa\u0007\u000f\u0000\u0000\u0faa\u0fab\u0007\u0011\u0000"+ + "\u0000\u0fab\u0fac\u0007\u0010\u0000\u0000\u0fac\u0fad\u0007\u0010\u0000"+ + "\u0000\u0fad\u0fae\u0007\n\u0000\u0000\u0fae\u0faf\u0007\f\u0000\u0000"+ + "\u0faf\u02da\u0001\u0000\u0000\u0000\u0fb0\u0fb1\u0007\u0016\u0000\u0000"+ + "\u0fb1\u0fb2\u0007\u0007\u0000\u0000\u0fb2\u0fb3\u0007\n\u0000\u0000\u0fb3"+ + "\u0fb4\u0007\u0007\u0000\u0000\u0fb4\u0fb5\u0007\u000e\u0000\u0000\u0fb5"+ + "\u0fb6\u0007\r\u0000\u0000\u0fb6\u0fb7\u0007\b\u0000\u0000\u0fb7\u0fb8"+ + "\u0007\u0018\u0000\u0000\u0fb8\u0fb9\u0007\u0010\u0000\u0000\u0fb9\u0fba"+ + "\u0007\n\u0000\u0000\u0fba\u0fbb\u0007\f\u0000\u0000\u0fbb\u02dc\u0001"+ + "\u0000\u0000\u0000\u0fbc\u0fbd\u0007\u0016\u0000\u0000\u0fbd\u0fbe\u0007"+ + "\u0007\u0000\u0000\u0fbe\u0fbf\u0007\u0015\u0000\u0000\u0fbf\u0fc0\u0007"+ + "\u0007\u0000\u0000\u0fc0\u0fc1\u0007\u0013\u0000\u0000\u0fc1\u0fc2\u0007"+ + "\u001c\u0000\u0000\u0fc2\u0fc3\u0007\u0007\u0000\u0000\u0fc3\u02de\u0001"+ + "\u0000\u0000\u0000\u0fc4\u0fc5\u0007\u0016\u0000\u0000\u0fc5\u0fc6\u0007"+ + "\u0007\u0000\u0000\u0fc6\u0fc7\u0007\u0006\u0000\u0000\u0fc7\u0fc8\u0007"+ + "\u0011\u0000\u0000\u0fc8\u0fc9\u0007\t\u0000\u0000\u0fc9\u0fca\u0007\u0010"+ + "\u0000\u0000\u0fca\u0fcb\u0007\n\u0000\u0000\u0fcb\u0fcc\u0007\u0007\u0000"+ + "\u0000\u0fcc\u02e0\u0001\u0000\u0000\u0000\u0fcd\u0fce\u0007\u0016\u0000"+ + "\u0000\u0fce\u0fcf\u0007\u0007\u0000\u0000\u0fcf\u0fd0\u0007\u0006\u0000"+ + "\u0000\u0fd0\u0fd1\u0007\u0013\u0000\u0000\u0fd1\u0fd2\u0007\u0017\u0000"+ + "\u0000\u0fd2\u0fd3\u0007\u0017\u0000\u0000\u0fd3\u0fd4\u0007\n\u0000\u0000"+ + "\u0fd4\u0fd5\u0007\f\u0000\u0000\u0fd5\u02e2\u0001\u0000\u0000\u0000\u0fd6"+ + "\u0fd7\u0007\u0016\u0000\u0000\u0fd7\u0fd8\u0007\u0007\u0000\u0000\u0fd8"+ + "\u0fd9\u0007\u0010\u0000\u0000\u0fd9\u0fda\u0007\u0011\u0000\u0000\u0fda"+ + "\u0fdb\u0007\u0006\u0000\u0000\u0fdb\u02e4\u0001\u0000\u0000\u0000\u0fdc"+ + "\u0fdd\u0007\u0016\u0000\u0000\u0fdd\u0fde\u0007\u0018\u0000\u0000\u0fde"+ + "\u0fdf\u0007\f\u0000\u0000\u0fdf\u0fe0\u0007\u0005\u0000\u0000\u0fe0\u0fe1"+ + "\u0007\u0010\u0000\u0000\u0fe1\u0fe2\u0007\n\u0000\u0000\u0fe2\u02e6\u0001"+ + "\u0000\u0000\u0000\u0fe3\u0fe4\u0007\u001b\u0000\u0000\u0fe4\u0fe5\u0007"+ + "\u0005\u0000\u0000\u0fe5\u0fe6\u0007\u000e\u0000\u0000\u0fe6\u0fe7\u0007"+ + "\u0016\u0000\u0000\u0fe7\u0fe8\u0007\u0016\u0000\u0000\u0fe8\u0fe9\u0007"+ + "\u000f\u0000\u0000\u0fe9\u02e8\u0001\u0000\u0000\u0000\u0fea\u0feb\u0007"+ + "\u001b\u0000\u0000\u0feb\u0fec\u0007\u0005\u0000\u0000\u0fec\u0fed\u0007"+ + "\u0006\u0000\u0000\u0fed\u0fee\u0007\u0011\u0000\u0000\u0fee\u0fef\u0007"+ + "\f\u0000\u0000\u0fef\u02ea\u0001\u0000\u0000\u0000\u0ff0\u0ff1\u0007\u001b"+ + "\u0000\u0000\u0ff1\u0ff2\u0007\u0005\u0000\u0000\u0ff2\u0ff3\u0007\u0006"+ + "\u0000\u0000\u0ff3\u0ff4\u0007\u0011\u0000\u0000\u0ff4\u0ff5\u0007\f\u0000"+ + "\u0000\u0ff5\u0ff6\u0007\u0005\u0000\u0000\u0ff6\u0ff7\u0007\u0010\u0000"+ + "\u0000\u0ff7\u0ff8\u0007\n\u0000\u0000\u0ff8\u02ec\u0001\u0000\u0000\u0000"+ + "\u0ff9\u0ffa\u0007\u001b\u0000\u0000\u0ffa\u0ffb\u0007\u0005\u0000\u0000"+ + "\u0ffb\u0ffc\u0007\u0006\u0000\u0000\u0ffc\u0ffd\u0007\u0011\u0000\u0000"+ + "\u0ffd\u0ffe\u0007\f\u0000\u0000\u0ffe\u0fff\u0007\u0005\u0000\u0000\u0fff"+ + "\u1000\u0007\u0010\u0000\u0000\u1000\u1001\u0007\u0013\u0000\u0000\u1001"+ + "\u1002\u0007\r\u0000\u0000\u1002\u02ee\u0001\u0000\u0000\u0000\u1003\u1004"+ + "\u0007\u001b\u0000\u0000\u1004\u1005\u0007\u0005\u0000\u0000\u1005\u1006"+ + "\u0007\r\u0000\u0000\u1006\u1007\u0007\b\u0000\u0000\u1007\u1008\u0007"+ + "\u0011\u0000\u0000\u1008\u1009\u0007\u0007\u0000\u0000\u1009\u100a\u0007"+ + "\u0017\u0000\u0000\u100a\u02f0\u0001\u0000\u0000\u0000\u100b\u100c\u0007"+ + "\u001b\u0000\u0000\u100c\u100d\u0007\n\u0000\u0000\u100d\u100e\u0007\r"+ + "\u0000\u0000\u100e\u100f\u0007\t\u0000\u0000\u100f\u1010\u0007\u0011\u0000"+ + "\u0000\u1010\u1011\u0007\u0013\u0000\u0000\u1011\u1012\u0007\u0007\u0000"+ + "\u0000\u1012\u02f2\u0001\u0000\u0000\u0000\u1013\u1014\u0007\u001b\u0000"+ + "\u0000\u1014\u1015\u0007\u0011\u0000\u0000\u1015\u1016\u0007\n\u0000\u0000"+ + "\u1016\u1017\u0007\u001c\u0000\u0000\u1017\u02f4\u0001\u0000\u0000\u0000"+ + "\u1018\u1019\u0007\u001b\u0000\u0000\u1019\u101a\u0007\u0013\u0000\u0000"+ + "\u101a\u101b\u0007\u0006\u0000\u0000\u101b\u101c\u0007\u0005\u0000\u0000"+ + "\u101c\u101d\u0007\u0010\u0000\u0000\u101d\u101e\u0007\u0011\u0000\u0000"+ + "\u101e\u101f\u0007\u0006\u0000\u0000\u101f\u1020\u0007\n\u0000\u0000\u1020"+ + "\u02f6\u0001\u0000\u0000\u0000\u1021\u1022\u0007\u001c\u0000\u0000\u1022"+ + "\u1023\u0007\u0014\u0000\u0000\u1023\u1024\u0007\u0011\u0000\u0000\u1024"+ + "\u1025\u0007\u0010\u0000\u0000\u1025\u1026\u0007\n\u0000\u0000\u1026\u1027"+ + "\u0007\t\u0000\u0000\u1027\u1028\u0007\u0018\u0000\u0000\u1028\u1029\u0007"+ + "\u0005\u0000\u0000\u1029\u102a\u0007\u000e\u0000\u0000\u102a\u102b\u0007"+ + "\n\u0000\u0000\u102b\u02f8\u0001\u0000\u0000\u0000\u102c\u102d\u0007\u001c"+ + "\u0000\u0000\u102d\u102e\u0007\u0011\u0000\u0000\u102e\u102f\u0007\u0010"+ + "\u0000\u0000\u102f\u1030\u0007\u0014\u0000\u0000\u1030\u1031\u0007\u0013"+ + "\u0000\u0000\u1031\u1032\u0007\u0016\u0000\u0000\u1032\u1033\u0007\u0010"+ + "\u0000\u0000\u1033\u02fa\u0001\u0000\u0000\u0000\u1034\u1035\u0007\u001c"+ + "\u0000\u0000\u1035\u1036\u0007\u0013\u0000\u0000\u1036\u1037\u0007\r\u0000"+ + "\u0000\u1037\u1038\u0007\u0015\u0000\u0000\u1038\u02fc\u0001\u0000\u0000"+ + "\u0000\u1039\u103a\u0007\u001c\u0000\u0000\u103a\u103b\u0007\r\u0000\u0000"+ + "\u103b\u103c\u0007\u0005\u0000\u0000\u103c\u103d\u0007\u0018\u0000\u0000"+ + "\u103d\u103e\u0007\u0018\u0000\u0000\u103e\u103f\u0007\n\u0000\u0000\u103f"+ + "\u1040\u0007\r\u0000\u0000\u1040\u02fe\u0001\u0000\u0000\u0000\u1041\u1042"+ + "\u0007\u001c\u0000\u0000\u1042\u1043\u0007\r\u0000\u0000\u1043\u1044\u0007"+ + "\u0011\u0000\u0000\u1044\u1045\u0007\u0010\u0000\u0000\u1045\u1046\u0007"+ + "\n\u0000\u0000\u1046\u0300\u0001\u0000\u0000\u0000\u1047\u1048\u0007\u001a"+ + "\u0000\u0000\u1048\u1049\u0007\u000f\u0000\u0000\u1049\u104a\u0007\u0006"+ + "\u0000\u0000\u104a\u0302\u0001\u0000\u0000\u0000\u104b\u104c\u0007\b\u0000"+ + "\u0000\u104c\u104d\u0007\n\u0000\u0000\u104d\u104e\u0007\u0005\u0000\u0000"+ + "\u104e\u104f\u0007\r\u0000\u0000\u104f\u0304\u0001\u0000\u0000\u0000\u1050"+ + "\u1051\u0007\b\u0000\u0000\u1051\u1052\u0007\n\u0000\u0000\u1052\u1053"+ + "\u0007\t\u0000\u0000\u1053\u0306\u0001\u0000\u0000\u0000\u1054\u1055\u0007"+ + "\u000b\u0000\u0000\u1055\u1056\u0007\u0013\u0000\u0000\u1056\u1057\u0007"+ + "\u0007\u0000\u0000\u1057\u1058\u0007\n\u0000\u0000\u1058\u0308\u0001\u0000"+ + "\u0000\u0000\u1059\u105a\u0007\u0012\u0000\u0000\u105a\u105b\u0007\n\u0000"+ + "\u0000\u105b\u105c\u0007\u0010\u0000\u0000\u105c\u105d\u0007\u001c\u0000"+ + "\u0000\u105d\u105e\u0007\n\u0000\u0000\u105e\u105f\u0007\n\u0000\u0000"+ + "\u105f\u1060\u0007\u0007\u0000\u0000\u1060\u030a\u0001\u0000\u0000\u0000"+ + "\u1061\u1062\u0007\u0012\u0000\u0000\u1062\u1063\u0007\u0011\u0000\u0000"+ + "\u1063\u1064\u0007\u0017\u0000\u0000\u1064\u1065\u0007\u0011\u0000\u0000"+ + "\u1065\u1066\u0007\u0007\u0000\u0000\u1066\u1067\u0007\u0010\u0000\u0000"+ + "\u1067\u030c\u0001\u0000\u0000\u0000\u1068\u1069\u0007\u0012\u0000\u0000"+ + "\u1069\u106a\u0007\u0011\u0000\u0000\u106a\u106b\u0007\u0010\u0000\u0000"+ + "\u106b\u030e\u0001\u0000\u0000\u0000\u106c\u106d\u0007\u0012\u0000\u0000"+ + "\u106d\u106e\u0007\u0013\u0000\u0000\u106e\u106f\u0007\u0013\u0000\u0000"+ + "\u106f\u1070\u0007\u0006\u0000\u0000\u1070\u1071\u0007\n\u0000\u0000\u1071"+ + "\u1072\u0007\u0005\u0000\u0000\u1072\u1073\u0007\u0007\u0000\u0000\u1073"+ + "\u0310\u0001\u0000\u0000\u0000\u1074\u1075\u0007\u000e\u0000\u0000\u1075"+ + "\u1076\u0007\u0014\u0000\u0000\u1076\u1077\u0007\u0005\u0000\u0000\u1077"+ + "\u1078\u0007\r\u0000\u0000\u1078\u0312\u0001\u0000\u0000\u0000\u1079\u107a"+ + "\u0007\u000e\u0000\u0000\u107a\u107b\u0007\u0014\u0000\u0000\u107b\u107c"+ + "\u0007\u0005\u0000\u0000\u107c\u107d\u0007\r\u0000\u0000\u107d\u107e\u0007"+ + "\u0005\u0000\u0000\u107e\u107f\u0007\u000e\u0000\u0000\u107f\u1080\u0007"+ + "\u0010\u0000\u0000\u1080\u1081\u0007\n\u0000\u0000\u1081\u1082\u0007\r"+ + "\u0000\u0000\u1082\u0314\u0001\u0000\u0000\u0000\u1083\u1084\u0007\u000e"+ + "\u0000\u0000\u1084\u1085\u0007\u0013\u0000\u0000\u1085\u1086\u0007\u0005"+ + "\u0000\u0000\u1086\u1087\u0007\u0006\u0000\u0000\u1087\u1088\u0007\n\u0000"+ + "\u0000\u1088\u1089\u0007\t\u0000\u0000\u1089\u108a\u0007\u000e\u0000\u0000"+ + "\u108a\u108b\u0007\n\u0000\u0000\u108b\u0316\u0001\u0000\u0000\u0000\u108c"+ + "\u108d\u0007\f\u0000\u0000\u108d\u108e\u0007\n\u0000\u0000\u108e\u108f"+ + "\u0007\u000e\u0000\u0000\u108f\u0318\u0001\u0000\u0000\u0000\u1090\u1091"+ + "\u0007\f\u0000\u0000\u1091\u1092\u0007\n\u0000\u0000\u1092\u1093\u0007"+ + "\u000e\u0000\u0000\u1093\u1094\u0007\u0011\u0000\u0000\u1094\u1095\u0007"+ + "\u000f\u0000\u0000\u1095\u1096\u0007\u0005\u0000\u0000\u1096\u1097\u0007"+ + "\u0006\u0000\u0000\u1097\u031a\u0001\u0000\u0000\u0000\u1098\u1099\u0007"+ + "\n\u0000\u0000\u1099\u109a\u0007\u001a\u0000\u0000\u109a\u109b\u0007\u0011"+ + "\u0000\u0000\u109b\u109c\u0007\t\u0000\u0000\u109c\u109d\u0007\u0010\u0000"+ + "\u0000\u109d\u109e\u0007\t\u0000\u0000\u109e\u031c\u0001\u0000\u0000\u0000"+ + "\u109f\u10a0\u0007\n\u0000\u0000\u10a0\u10a1\u0007\u001a\u0000\u0000\u10a1"+ + "\u10a2\u0007\u0010\u0000\u0000\u10a2\u10a3\u0007\r\u0000\u0000\u10a3\u10a4"+ + "\u0007\u0005\u0000\u0000\u10a4\u10a5\u0007\u000e\u0000\u0000\u10a5\u10a6"+ + "\u0007\u0010\u0000\u0000\u10a6\u031e\u0001\u0000\u0000\u0000\u10a7\u10a8"+ + "\u0007\u0019\u0000\u0000\u10a8\u10a9\u0007\u0006\u0000\u0000\u10a9\u10aa"+ + "\u0007\u0013\u0000\u0000\u10aa\u10ab\u0007\u0005\u0000\u0000\u10ab\u10ac"+ + "\u0007\u0010\u0000\u0000\u10ac\u0320\u0001\u0000\u0000\u0000\u10ad\u10ae"+ + "\u0007\u0017\u0000\u0000\u10ae\u10af\u0007\r\u0000\u0000\u10af\u10b0\u0007"+ + "\n\u0000\u0000\u10b0\u10b1\u0007\u0005\u0000\u0000\u10b1\u10b2\u0007\u0010"+ + "\u0000\u0000\u10b2\u10b3\u0007\n\u0000\u0000\u10b3\u10b4\u0007\t\u0000"+ + "\u0000\u10b4\u10b5\u0007\u0010\u0000\u0000\u10b5\u0322\u0001\u0000\u0000"+ + "\u0000\u10b6\u10b7\u0007\u0011\u0000\u0000\u10b7\u10b8\u0007\u0007\u0000"+ + "\u0000\u10b8\u10b9\u0007\u0013\u0000\u0000\u10b9\u10ba\u0007\u0016\u0000"+ + "\u0000\u10ba\u10bb\u0007\u0010\u0000\u0000\u10bb\u0324\u0001\u0000\u0000"+ + "\u0000\u10bc\u10bd\u0007\u0011\u0000\u0000\u10bd\u10be\u0007\u0007\u0000"+ + "\u0000\u10be\u10bf\u0007\u0010\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\u0017\u0000\u0000\u10c5\u10c6\u0007\n\u0000\u0000\u10c6"+ + "\u10c7\u0007\r\u0000\u0000\u10c7\u0328\u0001\u0000\u0000\u0000\u10c8\u10c9"+ + "\u0007\u0011\u0000\u0000\u10c9\u10ca\u0007\u0007\u0000\u0000\u10ca\u10cb"+ + "\u0007\u0010\u0000\u0000\u10cb\u10cc\u0007\n\u0000\u0000\u10cc\u10cd\u0007"+ + "\r\u0000\u0000\u10cd\u10ce\u0007\u001b\u0000\u0000\u10ce\u10cf\u0007\u0005"+ + "\u0000\u0000\u10cf\u10d0\u0007\u0006\u0000\u0000\u10d0\u032a\u0001\u0000"+ + "\u0000\u0000\u10d1\u10d2\u0007\u0006\u0000\u0000\u10d2\u10d3\u0007\n\u0000"+ + "\u0000\u10d3\u10d4\u0007\u0005\u0000\u0000\u10d4\u10d5\u0007\t\u0000\u0000"+ + "\u10d5\u10d6\u0007\u0010\u0000\u0000\u10d6\u032c\u0001\u0000\u0000\u0000"+ + "\u10d7\u10d8\u0007\u0007\u0000\u0000\u10d8\u10d9\u0007\u0005\u0000\u0000"+ + "\u10d9\u10da\u0007\u0010\u0000\u0000\u10da\u10db\u0007\u0011\u0000\u0000"+ + "\u10db\u10dc\u0007\u0013\u0000\u0000\u10dc\u10dd\u0007\u0007\u0000\u0000"+ + "\u10dd\u10de\u0007\u0005\u0000\u0000\u10de\u10df\u0007\u0006\u0000\u0000"+ + "\u10df\u032e\u0001\u0000\u0000\u0000\u10e0\u10e1\u0007\u0007\u0000\u0000"+ + "\u10e1\u10e2\u0007\u000e\u0000\u0000\u10e2\u10e3\u0007\u0014\u0000\u0000"+ + "\u10e3\u10e4\u0007\u0005\u0000\u0000\u10e4\u10e5\u0007\r\u0000\u0000\u10e5"+ + "\u0330\u0001\u0000\u0000\u0000\u10e6\u10e7\u0007\u0007\u0000\u0000\u10e7"+ + "\u10e8\u0007\u0013\u0000\u0000\u10e8\u10e9\u0007\u0007\u0000\u0000\u10e9"+ + "\u10ea\u0007\n\u0000\u0000\u10ea\u0332\u0001\u0000\u0000\u0000\u10eb\u10ec"+ + "\u0007\u0007\u0000\u0000\u10ec\u10ed\u0007\u0016\u0000\u0000\u10ed\u10ee"+ + "\u0007\u0006\u0000\u0000\u10ee\u10ef\u0007\u0006\u0000\u0000\u10ef\u10f0"+ + "\u0007\u0011\u0000\u0000\u10f0\u10f1\u0007\u0019\u0000\u0000\u10f1\u0334"+ + "\u0001\u0000\u0000\u0000\u10f2\u10f3\u0007\u0007\u0000\u0000\u10f3\u10f4"+ + "\u0007\u0016\u0000\u0000\u10f4\u10f5\u0007\u000f\u0000\u0000\u10f5\u10f6"+ + "\u0007\n\u0000\u0000\u10f6\u10f7\u0007\r\u0000\u0000\u10f7\u10f8\u0007"+ + "\u0011\u0000\u0000\u10f8\u10f9\u0007\u000e\u0000\u0000\u10f9\u0336\u0001"+ + "\u0000\u0000\u0000\u10fa\u10fb\u0007\u0013\u0000\u0000\u10fb\u10fc\u0007"+ + "\u001b\u0000\u0000\u10fc\u10fd\u0007\n\u0000\u0000\u10fd\u10fe\u0007\r"+ + "\u0000\u0000\u10fe\u10ff\u0007\u0006\u0000\u0000\u10ff\u1100\u0007\u0005"+ + "\u0000\u0000\u1100\u1101\u0007\b\u0000\u0000\u1101\u0338\u0001\u0000\u0000"+ + "\u0000\u1102\u1103\u0007\u0018\u0000\u0000\u1103\u1104\u0007\u0013\u0000"+ + "\u0000\u1104\u1105\u0007\t\u0000\u0000\u1105\u1106\u0007\u0011\u0000\u0000"+ + "\u1106\u1107\u0007\u0010\u0000\u0000\u1107\u1108\u0007\u0011\u0000\u0000"+ + "\u1108\u1109\u0007\u0013\u0000\u0000\u1109\u110a\u0007\u0007\u0000\u0000"+ + "\u110a\u033a\u0001\u0000\u0000\u0000\u110b\u110c\u0007\u0018\u0000\u0000"+ + "\u110c\u110d\u0007\r\u0000\u0000\u110d\u110e\u0007\n\u0000\u0000\u110e"+ + "\u110f\u0007\u000e\u0000\u0000\u110f\u1110\u0007\u0011\u0000\u0000\u1110"+ + "\u1111\u0007\t\u0000\u0000\u1111\u1112\u0007\u0011\u0000\u0000\u1112\u1113"+ + "\u0007\u0013\u0000\u0000\u1113\u1114\u0007\u0007\u0000\u0000\u1114\u033c"+ + "\u0001\u0000\u0000\u0000\u1115\u1116\u0007\r\u0000\u0000\u1116\u1117\u0007"+ + "\n\u0000\u0000\u1117\u1118\u0007\u0005\u0000\u0000\u1118\u1119\u0007\u0006"+ + "\u0000\u0000\u1119\u033e\u0001\u0000\u0000\u0000\u111a\u111b\u0007\r\u0000"+ + "\u0000\u111b\u111c\u0007\u0013\u0000\u0000\u111c\u111d\u0007\u001c\u0000"+ + "\u0000\u111d\u0340\u0001\u0000\u0000\u0000\u111e\u111f\u0007\t\u0000\u0000"+ + "\u111f\u1120\u0007\n\u0000\u0000\u1120\u1121\u0007\u0010\u0000\u0000\u1121"+ + "\u1122\u0007\u0013\u0000\u0000\u1122\u1123\u0007\u0019\u0000\u0000\u1123"+ + "\u0342\u0001\u0000\u0000\u0000\u1124\u1125\u0007\t\u0000\u0000\u1125\u1126"+ + "\u0007\u000f\u0000\u0000\u1126\u1127\u0007\u0005\u0000\u0000\u1127\u1128"+ + "\u0007\u0006\u0000\u0000\u1128\u1129\u0007\u0006\u0000\u0000\u1129\u112a"+ + "\u0007\u0011\u0000\u0000\u112a\u112b\u0007\u0007\u0000\u0000\u112b\u112c"+ + "\u0007\u0010\u0000\u0000\u112c\u0344\u0001\u0000\u0000\u0000\u112d\u112e"+ + "\u0007\t\u0000\u0000\u112e\u112f\u0007\u0016\u0000\u0000\u112f\u1130\u0007"+ + "\u0012\u0000\u0000\u1130\u1131\u0007\t\u0000\u0000\u1131\u1132\u0007\u0010"+ + "\u0000\u0000\u1132\u1133\u0007\r\u0000\u0000\u1133\u1134\u0007\u0011\u0000"+ + "\u0000\u1134\u1135\u0007\u0007\u0000\u0000\u1135\u1136\u0007\u0017\u0000"+ + "\u0000\u1136\u0346\u0001\u0000\u0000\u0000\u1137\u1138\u0007\u0010\u0000"+ + "\u0000\u1138\u1139\u0007\u0011\u0000\u0000\u1139\u113a\u0007\u000f\u0000"+ + "\u0000\u113a\u113b\u0007\n\u0000\u0000\u113b\u0348\u0001\u0000\u0000\u0000"+ + "\u113c\u113d\u0007\u0010\u0000\u0000\u113d\u113e\u0007\u0011\u0000\u0000"+ + "\u113e\u113f\u0007\u000f\u0000\u0000\u113f\u1140\u0007\n\u0000\u0000\u1140"+ + "\u1141\u0007\t\u0000\u0000\u1141\u1142\u0007\u0010\u0000\u0000\u1142\u1143"+ + "\u0007\u0005\u0000\u0000\u1143\u1144\u0007\u000f\u0000\u0000\u1144\u1145"+ + "\u0007\u0018\u0000\u0000\u1145\u034a\u0001\u0000\u0000\u0000\u1146\u1147"+ + "\u0007\u0010\u0000\u0000\u1147\u1148\u0007\r\u0000\u0000\u1148\u1149\u0007"+ + "\n\u0000\u0000\u1149\u114a\u0007\u0005\u0000\u0000\u114a\u114b\u0007\u0010"+ + "\u0000\u0000\u114b\u034c\u0001\u0000\u0000\u0000\u114c\u114d\u0007\u0010"+ + "\u0000\u0000\u114d\u114e\u0007\r\u0000\u0000\u114e\u114f\u0007\u0011\u0000"+ + "\u0000\u114f\u1150\u0007\u000f\u0000\u0000\u1150\u034e\u0001\u0000\u0000"+ + "\u0000\u1151\u1152\u0007\u001b\u0000\u0000\u1152\u1153\u0007\u0005\u0000"+ + "\u0000\u1153\u1154\u0007\u0006\u0000\u0000\u1154\u1155\u0007\u0016\u0000"+ + "\u0000\u1155\u1156\u0007\n\u0000\u0000\u1156\u1157\u0007\t\u0000\u0000"+ + "\u1157\u0350\u0001\u0000\u0000\u0000\u1158\u1159\u0007\u001b\u0000\u0000"+ + "\u1159\u115a\u0007\u0005\u0000\u0000\u115a\u115b\u0007\r\u0000\u0000\u115b"+ + "\u115c\u0007\u000e\u0000\u0000\u115c\u115d\u0007\u0014\u0000\u0000\u115d"+ + "\u115e\u0007\u0005\u0000\u0000\u115e\u115f\u0007\r\u0000\u0000\u115f\u0352"+ + "\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\u0010\u0000\u0000\u1165\u1166"+ + "\u0007\u0010\u0000\u0000\u1166\u1167\u0007\r\u0000\u0000\u1167\u1168\u0007"+ + "\u0011\u0000\u0000\u1168\u1169\u0007\u0012\u0000\u0000\u1169\u116a\u0007"+ + "\u0016\u0000\u0000\u116a\u116b\u0007\u0010\u0000\u0000\u116b\u116c\u0007"+ + "\n\u0000\u0000\u116c\u116d\u0007\t\u0000\u0000\u116d\u0354\u0001\u0000"+ + "\u0000\u0000\u116e\u116f\u0007\u001a\u0000\u0000\u116f\u1170\u0007\u000f"+ + "\u0000\u0000\u1170\u1171\u0007\u0006\u0000\u0000\u1171\u1172\u0007\u000e"+ + "\u0000\u0000\u1172\u1173\u0007\u0013\u0000\u0000\u1173\u1174\u0007\u000f"+ + "\u0000\u0000\u1174\u1175\u0007\u000f\u0000\u0000\u1175\u1176\u0007\n\u0000"+ + "\u0000\u1176\u1177\u0007\u0007\u0000\u0000\u1177\u1178\u0007\u0010\u0000"+ + "\u0000\u1178\u0356\u0001\u0000\u0000\u0000\u1179\u117a\u0007\u001a\u0000"+ + "\u0000\u117a\u117b\u0007\u000f\u0000\u0000\u117b\u117c\u0007\u0006\u0000"+ + "\u0000\u117c\u117d\u0007\u0005\u0000\u0000\u117d\u117e\u0007\u0017\u0000"+ + "\u0000\u117e\u117f\u0007\u0017\u0000\u0000\u117f\u0358\u0001\u0000\u0000"+ + "\u0000\u1180\u1181\u0007\u001a\u0000\u0000\u1181\u1182\u0007\u000f\u0000"+ + "\u0000\u1182\u1183\u0007\u0006\u0000\u0000\u1183\u1184\u0005_\u0000\u0000"+ + "\u1184\u1185\u0007\u0011\u0000\u0000\u1185\u1186\u0007\t\u0000\u0000\u1186"+ + "\u1187\u0005_\u0000\u0000\u1187\u1188\u0007\u001c\u0000\u0000\u1188\u1189"+ + "\u0007\n\u0000\u0000\u1189\u118a\u0007\u0006\u0000\u0000\u118a\u118b\u0007"+ + "\u0006\u0000\u0000\u118b\u118c\u0005_\u0000\u0000\u118c\u118d\u0007\u0019"+ + "\u0000\u0000\u118d\u118e\u0007\u0013\u0000\u0000\u118e\u118f\u0007\r\u0000"+ + "\u0000\u118f\u1190\u0007\u000f\u0000\u0000\u1190\u1191\u0007\n\u0000\u0000"+ + "\u1191\u1192\u0007\f\u0000\u0000\u1192\u035a\u0001\u0000\u0000\u0000\u1193"+ + "\u1194\u0007\u001a\u0000\u0000\u1194\u1195\u0007\u000f\u0000\u0000\u1195"+ + "\u1196\u0007\u0006\u0000\u0000\u1196\u1197\u0005_\u0000\u0000\u1197\u1198"+ + "\u0007\u0011\u0000\u0000\u1198\u1199\u0007\t\u0000\u0000\u1199\u119a\u0005"+ + "_\u0000\u0000\u119a\u119b\u0007\u001c\u0000\u0000\u119b\u119c\u0007\n"+ + "\u0000\u0000\u119c\u119d\u0007\u0006\u0000\u0000\u119d\u119e\u0007\u0006"+ + "\u0000\u0000\u119e\u119f\u0005_\u0000\u0000\u119f\u11a0\u0007\u0019\u0000"+ + "\u0000\u11a0\u11a1\u0007\u0013\u0000\u0000\u11a1\u11a2\u0007\r\u0000\u0000"+ + "\u11a2\u11a3\u0007\u000f\u0000\u0000\u11a3\u11a4\u0007\n\u0000\u0000\u11a4"+ + "\u11a5\u0007\f\u0000\u0000\u11a5\u11a6\u0005_\u0000\u0000\u11a6\u11a7"+ + "\u0007\f\u0000\u0000\u11a7\u11a8\u0007\u0013\u0000\u0000\u11a8\u11a9\u0007"+ + "\u000e\u0000\u0000\u11a9\u11aa\u0007\u0016\u0000\u0000\u11aa\u11ab\u0007"+ + "\u000f\u0000\u0000\u11ab\u11ac\u0007\n\u0000\u0000\u11ac\u11ad\u0007\u0007"+ + "\u0000\u0000\u11ad\u11ae\u0007\u0010\u0000\u0000\u11ae\u035c\u0001\u0000"+ + "\u0000\u0000\u11af\u11b0\u0007\u001a\u0000\u0000\u11b0\u11b1\u0007\u000f"+ + "\u0000\u0000\u11b1\u11b2\u0007\u0006\u0000\u0000\u11b2\u11b3\u0005_\u0000"+ + "\u0000\u11b3\u11b4\u0007\u0011\u0000\u0000\u11b4\u11b5\u0007\t\u0000\u0000"+ + "\u11b5\u11b6\u0005_\u0000\u0000\u11b6\u11b7\u0007\u001c\u0000\u0000\u11b7"+ + "\u11b8\u0007\n\u0000\u0000\u11b8\u11b9\u0007\u0006\u0000\u0000\u11b9\u11ba"+ + "\u0007\u0006\u0000\u0000\u11ba\u11bb\u0005_\u0000\u0000\u11bb\u11bc\u0007"+ + "\u0019\u0000\u0000\u11bc\u11bd\u0007\u0013\u0000\u0000\u11bd\u11be\u0007"+ + "\r\u0000\u0000\u11be\u11bf\u0007\u000f\u0000\u0000\u11bf\u11c0\u0007\n"+ + "\u0000\u0000\u11c0\u11c1\u0007\f\u0000\u0000\u11c1\u11c2\u0005_\u0000"+ + "\u0000\u11c2\u11c3\u0007\u000e\u0000\u0000\u11c3\u11c4\u0007\u0013\u0000"+ + "\u0000\u11c4\u11c5\u0007\u0007\u0000\u0000\u11c5\u11c6\u0007\u0010\u0000"+ + "\u0000\u11c6\u11c7\u0007\n\u0000\u0000\u11c7\u11c8\u0007\u0007\u0000\u0000"+ + "\u11c8\u11c9\u0007\u0010\u0000\u0000\u11c9\u035e\u0001\u0000\u0000\u0000"+ + "\u11ca\u11cb\u0007\u001a\u0000\u0000\u11cb\u11cc\u0007\u0018\u0000\u0000"+ + "\u11cc\u11cd\u0007\u0005\u0000\u0000\u11cd\u11ce\u0007\u0010\u0000\u0000"+ + "\u11ce\u11cf\u0007\u0014\u0000\u0000\u11cf\u0360\u0001\u0000\u0000\u0000"+ + "\u11d0\u11d1\u0007\u001a\u0000\u0000\u11d1\u11d2\u0007\u0018\u0000\u0000"+ + "\u11d2\u11d3\u0007\u0005\u0000\u0000\u11d3\u11d4\u0007\u0010\u0000\u0000"+ + "\u11d4\u11d5\u0007\u0014\u0000\u0000\u11d5\u11d6\u0005_\u0000\u0000\u11d6"+ + "\u11d7\u0007\n\u0000\u0000\u11d7\u11d8\u0007\u001a\u0000\u0000\u11d8\u11d9"+ + "\u0007\u0011\u0000\u0000\u11d9\u11da\u0007\t\u0000\u0000\u11da\u11db\u0007"+ + "\u0010\u0000\u0000\u11db\u11dc\u0007\t\u0000\u0000\u11dc\u0362\u0001\u0000"+ + "\u0000\u0000\u11dd\u11de\u0007\u001a\u0000\u0000\u11de\u11df\u0007\u000f"+ + "\u0000\u0000\u11df\u11e0\u0007\u0006\u0000\u0000\u11e0\u11e1\u0007\u000e"+ + "\u0000\u0000\u11e1\u11e2\u0007\u0013\u0000\u0000\u11e2\u11e3\u0007\u0007"+ + "\u0000\u0000\u11e3\u11e4\u0007\u000e\u0000\u0000\u11e4\u11e5\u0007\u0005"+ + "\u0000\u0000\u11e5\u11e6\u0007\u0010\u0000\u0000\u11e6\u0364\u0001\u0000"+ + "\u0000\u0000\u11e7\u11e8\u0007\u001a\u0000\u0000\u11e8\u11e9\u0007\u000f"+ + "\u0000\u0000\u11e9\u11ea\u0007\u0006\u0000\u0000\u11ea\u11eb\u0007\n\u0000"+ + "\u0000\u11eb\u11ec\u0007\u0006\u0000\u0000\u11ec\u11ed\u0007\n\u0000\u0000"+ + "\u11ed\u11ee\u0007\u000f\u0000\u0000\u11ee\u11ef\u0007\n\u0000\u0000\u11ef"+ + "\u11f0\u0007\u0007\u0000\u0000\u11f0\u11f1\u0007\u0010\u0000\u0000\u11f1"+ + "\u0366\u0001\u0000\u0000\u0000\u11f2\u11f3\u0007\u001a\u0000\u0000\u11f3"+ + "\u11f4\u0007\u000f\u0000\u0000\u11f4\u11f5\u0007\u0006\u0000\u0000\u11f5"+ + "\u11f6\u0007\n\u0000\u0000\u11f6\u11f7\u0007\u001a\u0000\u0000\u11f7\u11f8"+ + "\u0007\u0011\u0000\u0000\u11f8\u11f9\u0007\t\u0000\u0000\u11f9\u11fa\u0007"+ + "\u0010\u0000\u0000\u11fa\u11fb\u0007\t\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\u0019"+ + "\u0000\u0000\u1200\u1201\u0007\u0013\u0000\u0000\u1201\u1202\u0007\r\u0000"+ + "\u0000\u1202\u1203\u0007\n\u0000\u0000\u1203\u1204\u0007\t\u0000\u0000"+ + "\u1204\u1205\u0007\u0010\u0000\u0000\u1205\u036a\u0001\u0000\u0000\u0000"+ + "\u1206\u1207\u0007\u001a\u0000\u0000\u1207\u1208\u0007\u000f\u0000\u0000"+ + "\u1208\u1209\u0007\u0006\u0000\u0000\u1209\u120a\u0007\u0018\u0000\u0000"+ + "\u120a\u120b\u0007\u0005\u0000\u0000\u120b\u120c\u0007\r\u0000\u0000\u120c"+ + "\u120d\u0007\t\u0000\u0000\u120d\u120e\u0007\n\u0000\u0000\u120e\u036c"+ + "\u0001\u0000\u0000\u0000\u120f\u1210\u0007\u001a\u0000\u0000\u1210\u1211"+ + "\u0007\u000f\u0000\u0000\u1211\u1212\u0007\u0006\u0000\u0000\u1212\u1213"+ + "\u0007\u0018\u0000\u0000\u1213\u1214\u0007\u0011\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\r\u0000\u0000\u1219\u121a\u0007\u0013\u0000\u0000\u121a\u121b\u0007"+ + "\u0013\u0000\u0000\u121b\u121c\u0007\u0010\u0000\u0000\u121c\u0370\u0001"+ + "\u0000\u0000\u0000\u121d\u121e\u0007\u001a\u0000\u0000\u121e\u121f\u0007"+ + "\u000f\u0000\u0000\u121f\u1220\u0007\u0006\u0000\u0000\u1220\u1221\u0007"+ + "\t\u0000\u0000\u1221\u1222\u0007\n\u0000\u0000\u1222\u1223\u0007\r\u0000"+ + "\u0000\u1223\u1224\u0007\u0011\u0000\u0000\u1224\u1225\u0007\u0005\u0000"+ + "\u0000\u1225\u1226\u0007\u0006\u0000\u0000\u1226\u1227\u0007\u0011\u0000"+ + "\u0000\u1227\u1228\u0007\u000b\u0000\u0000\u1228\u1229\u0007\n\u0000\u0000"+ + "\u1229\u0372\u0001\u0000\u0000\u0000\u122a\u122b\u0007\u000e\u0000\u0000"+ + "\u122b\u122c\u0007\u0005\u0000\u0000\u122c\u122d\u0007\u0006\u0000\u0000"+ + "\u122d\u122e\u0007\u0006\u0000\u0000\u122e\u0374\u0001\u0000\u0000\u0000"+ + "\u122f\u1230\u0007\u000e\u0000\u0000\u1230\u1231\u0007\u0016\u0000\u0000"+ + "\u1231\u1232\u0007\r\u0000\u0000\u1232\u1233\u0007\r\u0000\u0000\u1233"+ + "\u1234\u0007\n\u0000\u0000\u1234\u1235\u0007\u0007\u0000\u0000\u1235\u1236"+ + "\u0007\u0010\u0000\u0000\u1236\u0376\u0001\u0000\u0000\u0000\u1237\u1238"+ + "\u0007\u0005\u0000\u0000\u1238\u1239\u0007\u0010\u0000\u0000\u1239\u123a"+ + "\u0007\u0010\u0000\u0000\u123a\u123b\u0007\u0005\u0000\u0000\u123b\u123c"+ + "\u0007\u000e\u0000\u0000\u123c\u123d\u0007\u0014\u0000\u0000\u123d\u0378"+ + "\u0001\u0000\u0000\u0000\u123e\u123f\u0007\f\u0000\u0000\u123f\u1240\u0007"+ + "\n\u0000\u0000\u1240\u1241\u0007\u0010\u0000\u0000\u1241\u1242\u0007\u0005"+ + "\u0000\u0000\u1242\u1243\u0007\u000e\u0000\u0000\u1243\u1244\u0007\u0014"+ + "\u0000\u0000\u1244\u037a\u0001\u0000\u0000\u0000\u1245\u1246\u0007\n\u0000"+ + "\u0000\u1246\u1247\u0007\u001a\u0000\u0000\u1247\u1248\u0007\u0018\u0000"+ + "\u0000\u1248\u1249\u0007\r\u0000\u0000\u1249\u124a\u0007\n\u0000\u0000"+ + "\u124a\u124b\u0007\t\u0000\u0000\u124b\u124c\u0007\t\u0000\u0000\u124c"+ + "\u124d\u0007\u0011\u0000\u0000\u124d\u124e\u0007\u0013\u0000\u0000\u124e"+ + "\u124f\u0007\u0007\u0000\u0000\u124f\u037c\u0001\u0000\u0000\u0000\u1250"+ + "\u1251\u0007\u0017\u0000\u0000\u1251\u1252\u0007\n\u0000\u0000\u1252\u1253"+ + "\u0007\u0007\u0000\u0000\u1253\u1254\u0007\n\u0000\u0000\u1254\u1255\u0007"+ + "\r\u0000\u0000\u1255\u1256\u0007\u0005\u0000\u0000\u1256\u1257\u0007\u0010"+ + "\u0000\u0000\u1257\u1258\u0007\n\u0000\u0000\u1258\u1259\u0007\f\u0000"+ + "\u0000\u1259\u037e\u0001\u0000\u0000\u0000\u125a\u125b\u0007\u0006\u0000"+ + "\u0000\u125b"; + private static final String _serializedATNSegment2 = + "\u125c\u0007\u0013\u0000\u0000\u125c\u125d\u0007\u0017\u0000\u0000\u125d"+ + "\u125e\u0007\u0017\u0000\u0000\u125e\u125f\u0007\n\u0000\u0000\u125f\u1260"+ + "\u0007\f\u0000\u0000\u1260\u0380\u0001\u0000\u0000\u0000\u1261\u1262\u0007"+ + "\t\u0000\u0000\u1262\u1263\u0007\u0010\u0000\u0000\u1263\u1264\u0007\u0013"+ + "\u0000\u0000\u1264\u1265\u0007\r\u0000\u0000\u1265\u1266\u0007\n\u0000"+ + "\u0000\u1266\u1267\u0007\f\u0000\u0000\u1267\u0382\u0001\u0000\u0000\u0000"+ + "\u1268\u1269\u0007\u0011\u0000\u0000\u1269\u126a\u0007\u0007\u0000\u0000"+ + "\u126a\u126b\u0007\u000e\u0000\u0000\u126b\u126c\u0007\u0006\u0000\u0000"+ + "\u126c\u126d\u0007\u0016\u0000\u0000\u126d\u126e\u0007\f\u0000\u0000\u126e"+ + "\u126f\u0007\n\u0000\u0000\u126f\u0384\u0001\u0000\u0000\u0000\u1270\u1271"+ + "\u0007\r\u0000\u0000\u1271\u1272\u0007\u0013\u0000\u0000\u1272\u1273\u0007"+ + "\u0016\u0000\u0000\u1273\u1274\u0007\u0010\u0000\u0000\u1274\u1275\u0007"+ + "\u0011\u0000\u0000\u1275\u1276\u0007\u0007\u0000\u0000\u1276\u1277\u0007"+ + "\n\u0000\u0000\u1277\u0386\u0001\u0000\u0000\u0000\u1278\u1279\u0007\u0010"+ + "\u0000\u0000\u1279\u127a\u0007\r\u0000\u0000\u127a\u127b\u0007\u0005\u0000"+ + "\u0000\u127b\u127c\u0007\u0007\u0000\u0000\u127c\u127d\u0007\t\u0000\u0000"+ + "\u127d\u127e\u0007\u0019\u0000\u0000\u127e\u127f\u0007\u0013\u0000\u0000"+ + "\u127f\u1280\u0007\r\u0000\u0000\u1280\u1281\u0007\u000f\u0000\u0000\u1281"+ + "\u0388\u0001\u0000\u0000\u0000\u1282\u1283\u0007\u0011\u0000\u0000\u1283"+ + "\u1284\u0007\u000f\u0000\u0000\u1284\u1285\u0007\u0018\u0000\u0000\u1285"+ + "\u1286\u0007\u0013\u0000\u0000\u1286\u1287\u0007\r\u0000\u0000\u1287\u1288"+ + "\u0007\u0010\u0000\u0000\u1288\u038a\u0001\u0000\u0000\u0000\u1289\u128a"+ + "\u0007\u0018\u0000\u0000\u128a\u128b\u0007\u0013\u0000\u0000\u128b\u128c"+ + "\u0007\u0006\u0000\u0000\u128c\u128d\u0007\u0011\u0000\u0000\u128d\u128e"+ + "\u0007\u000e\u0000\u0000\u128e\u128f\u0007\b\u0000\u0000\u128f\u038c\u0001"+ + "\u0000\u0000\u0000\u1290\u1291\u0007\u000f\u0000\u0000\u1291\u1292\u0007"+ + "\n\u0000\u0000\u1292\u1293\u0007\u0010\u0000\u0000\u1293\u1294\u0007\u0014"+ + "\u0000\u0000\u1294\u1295\u0007\u0013\u0000\u0000\u1295\u1296\u0007\f\u0000"+ + "\u0000\u1296\u038e\u0001\u0000\u0000\u0000\u1297\u1298\u0007\r\u0000\u0000"+ + "\u1298\u1299\u0007\n\u0000\u0000\u1299\u129a\u0007\u0019\u0000\u0000\u129a"+ + "\u129b\u0007\n\u0000\u0000\u129b\u129c\u0007\r\u0000\u0000\u129c\u129d"+ + "\u0007\n\u0000\u0000\u129d\u129e\u0007\u0007\u0000\u0000\u129e\u129f\u0007"+ + "\u000e\u0000\u0000\u129f\u12a0\u0007\u0011\u0000\u0000\u12a0\u12a1\u0007"+ + "\u0007\u0000\u0000\u12a1\u12a2\u0007\u0017\u0000\u0000\u12a2\u0390\u0001"+ + "\u0000\u0000\u0000\u12a3\u12a4\u0007\u0007\u0000\u0000\u12a4\u12a5\u0007"+ + "\n\u0000\u0000\u12a5\u12a6\u0007\u001c\u0000\u0000\u12a6\u0392\u0001\u0000"+ + "\u0000\u0000\u12a7\u12a8\u0007\u0013\u0000\u0000\u12a8\u12a9\u0007\u0006"+ + "\u0000\u0000\u12a9\u12aa\u0007\f\u0000\u0000\u12aa\u0394\u0001\u0000\u0000"+ + "\u0000\u12ab\u12ac\u0007\u001b\u0000\u0000\u12ac\u12ad\u0007\u0005\u0000"+ + "\u0000\u12ad\u12ae\u0007\u0006\u0000\u0000\u12ae\u12af\u0007\u0016\u0000"+ + "\u0000\u12af\u12b0\u0007\n\u0000\u0000\u12b0\u0396\u0001\u0000\u0000\u0000"+ + "\u12b1\u12b2\u0007\t\u0000\u0000\u12b2\u12b3\u0007\u0016\u0000\u0000\u12b3"+ + "\u12b4\u0007\u0012\u0000\u0000\u12b4\u12b5\u0007\t\u0000\u0000\u12b5\u12b6"+ + "\u0007\u000e\u0000\u0000\u12b6\u12b7\u0007\r\u0000\u0000\u12b7\u12b8\u0007"+ + "\u0011\u0000\u0000\u12b8\u12b9\u0007\u0018\u0000\u0000\u12b9\u12ba\u0007"+ + "\u0010\u0000\u0000\u12ba\u12bb\u0007\u0011\u0000\u0000\u12bb\u12bc\u0007"+ + "\u0013\u0000\u0000\u12bc\u12bd\u0007\u0007\u0000\u0000\u12bd\u0398\u0001"+ + "\u0000\u0000\u0000\u12be\u12bf\u0007\u0018\u0000\u0000\u12bf\u12c0\u0007"+ + "\u0016\u0000\u0000\u12c0\u12c1\u0007\u0012\u0000\u0000\u12c1\u12c2\u0007"+ + "\u0006\u0000\u0000\u12c2\u12c3\u0007\u0011\u0000\u0000\u12c3\u12c4\u0007"+ + "\u000e\u0000\u0000\u12c4\u12c5\u0007\u0005\u0000\u0000\u12c5\u12c6\u0007"+ + "\u0010\u0000\u0000\u12c6\u12c7\u0007\u0011\u0000\u0000\u12c7\u12c8\u0007"+ + "\u0013\u0000\u0000\u12c8\u12c9\u0007\u0007\u0000\u0000\u12c9\u039a\u0001"+ + "\u0000\u0000\u0000\u12ca\u12cb\u0007\u0013\u0000\u0000\u12cb\u12cc\u0007"+ + "\u0016\u0000\u0000\u12cc\u12cd\u0007\u0010\u0000\u0000\u12cd\u039c\u0001"+ + "\u0000\u0000\u0000\u12ce\u12cf\u0007\n\u0000\u0000\u12cf\u12d0\u0007\u0007"+ + "\u0000\u0000\u12d0\u12d1\u0007\f\u0000\u0000\u12d1\u039e\u0001\u0000\u0000"+ + "\u0000\u12d2\u12d3\u0007\r\u0000\u0000\u12d3\u12d4\u0007\u0013\u0000\u0000"+ + "\u12d4\u12d5\u0007\u0016\u0000\u0000\u12d5\u12d6\u0007\u0010\u0000\u0000"+ + "\u12d6\u12d7\u0007\u0011\u0000\u0000\u12d7\u12d8\u0007\u0007\u0000\u0000"+ + "\u12d8\u12d9\u0007\n\u0000\u0000\u12d9\u12da\u0007\t\u0000\u0000\u12da"+ + "\u03a0\u0001\u0000\u0000\u0000\u12db\u12dc\u0007\t\u0000\u0000\u12dc\u12dd"+ + "\u0007\u000e\u0000\u0000\u12dd\u12de\u0007\u0014\u0000\u0000\u12de\u12df"+ + "\u0007\n\u0000\u0000\u12df\u12e0\u0007\u000f\u0000\u0000\u12e0\u12e1\u0007"+ + "\u0005\u0000\u0000\u12e1\u12e2\u0007\t\u0000\u0000\u12e2\u03a2\u0001\u0000"+ + "\u0000\u0000\u12e3\u12e4\u0007\u0018\u0000\u0000\u12e4\u12e5\u0007\r\u0000"+ + "\u0000\u12e5\u12e6\u0007\u0013\u0000\u0000\u12e6\u12e7\u0007\u000e\u0000"+ + "\u0000\u12e7\u12e8\u0007\n\u0000\u0000\u12e8\u12e9\u0007\f\u0000\u0000"+ + "\u12e9\u12ea\u0007\u0016\u0000\u0000\u12ea\u12eb\u0007\r\u0000\u0000\u12eb"+ + "\u12ec\u0007\n\u0000\u0000\u12ec\u12ed\u0007\t\u0000\u0000\u12ed\u03a4"+ + "\u0001\u0000\u0000\u0000\u12ee\u12ef\u0007\u0011\u0000\u0000\u12ef\u12f0"+ + "\u0007\u0007\u0000\u0000\u12f0\u12f1\u0007\u0018\u0000\u0000\u12f1\u12f2"+ + "\u0007\u0016\u0000\u0000\u12f2\u12f3\u0007\u0010\u0000\u0000\u12f3\u03a6"+ + "\u0001\u0000\u0000\u0000\u12f4\u12f5\u0007\t\u0000\u0000\u12f5\u12f6\u0007"+ + "\u0016\u0000\u0000\u12f6\u12f7\u0007\u0018\u0000\u0000\u12f7\u12f8\u0007"+ + "\u0018\u0000\u0000\u12f8\u12f9\u0007\u0013\u0000\u0000\u12f9\u12fa\u0007"+ + "\r\u0000\u0000\u12fa\u12fb\u0007\u0010\u0000\u0000\u12fb\u03a8\u0001\u0000"+ + "\u0000\u0000\u12fc\u12fd\u0007\u0018\u0000\u0000\u12fd\u12fe\u0007\u0005"+ + "\u0000\u0000\u12fe\u12ff\u0007\r\u0000\u0000\u12ff\u1300\u0007\u0005\u0000"+ + "\u0000\u1300\u1301\u0007\u0006\u0000\u0000\u1301\u1302\u0007\u0006\u0000"+ + "\u0000\u1302\u1303\u0007\n\u0000\u0000\u1303\u1304\u0007\u0006\u0000\u0000"+ + "\u1304\u03aa\u0001\u0000\u0000\u0000\u1305\u1306\u0007\t\u0000\u0000\u1306"+ + "\u1307\u0007\u001d\u0000\u0000\u1307\u1308\u0007\u0006\u0000\u0000\u1308"+ + "\u03ac\u0001\u0000\u0000\u0000\u1309\u130a\u0007\f\u0000\u0000\u130a\u130b"+ + "\u0007\n\u0000\u0000\u130b\u130c\u0007\u0018\u0000\u0000\u130c\u130d\u0007"+ + "\n\u0000\u0000\u130d\u130e\u0007\u0007\u0000\u0000\u130e\u130f\u0007\f"+ + "\u0000\u0000\u130f\u1310\u0007\t\u0000\u0000\u1310\u03ae\u0001\u0000\u0000"+ + "\u0000\u1311\u1312\u0007\u0013\u0000\u0000\u1312\u1313\u0007\u001b\u0000"+ + "\u0000\u1313\u1314\u0007\n\u0000\u0000\u1314\u1315\u0007\r\u0000\u0000"+ + "\u1315\u1316\u0007\r\u0000\u0000\u1316\u1317\u0007\u0011\u0000\u0000\u1317"+ + "\u1318\u0007\f\u0000\u0000\u1318\u1319\u0007\u0011\u0000\u0000\u1319\u131a"+ + "\u0007\u0007\u0000\u0000\u131a\u131b\u0007\u0017\u0000\u0000\u131b\u03b0"+ + "\u0001\u0000\u0000\u0000\u131c\u131d\u0007\u000e\u0000\u0000\u131d\u131e"+ + "\u0007\u0013\u0000\u0000\u131e\u131f\u0007\u0007\u0000\u0000\u131f\u1320"+ + "\u0007\u0019\u0000\u0000\u1320\u1321\u0007\u0006\u0000\u0000\u1321\u1322"+ + "\u0007\u0011\u0000\u0000\u1322\u1323\u0007\u000e\u0000\u0000\u1323\u1324"+ + "\u0007\u0010\u0000\u0000\u1324\u03b2\u0001\u0000\u0000\u0000\u1325\u1326"+ + "\u0007\t\u0000\u0000\u1326\u1327\u0007\u0015\u0000\u0000\u1327\u1328\u0007"+ + "\u0011\u0000\u0000\u1328\u1329\u0007\u0018\u0000\u0000\u1329\u03b4\u0001"+ + "\u0000\u0000\u0000\u132a\u132b\u0007\u0006\u0000\u0000\u132b\u132c\u0007"+ + "\u0013\u0000\u0000\u132c\u132d\u0007\u000e\u0000\u0000\u132d\u132e\u0007"+ + "\u0015\u0000\u0000\u132e\u132f\u0007\n\u0000\u0000\u132f\u1330\u0007\f"+ + "\u0000\u0000\u1330\u03b6\u0001\u0000\u0000\u0000\u1331\u1332\u0007\u0010"+ + "\u0000\u0000\u1332\u1333\u0007\u0011\u0000\u0000\u1333\u1334\u0007\n\u0000"+ + "\u0000\u1334\u1335\u0007\t\u0000\u0000\u1335\u03b8\u0001\u0000\u0000\u0000"+ + "\u1336\u1337\u0007\r\u0000\u0000\u1337\u1338\u0007\u0013\u0000\u0000\u1338"+ + "\u1339\u0007\u0006\u0000\u0000\u1339\u133a\u0007\u0006\u0000\u0000\u133a"+ + "\u133b\u0007\u0016\u0000\u0000\u133b\u133c\u0007\u0018\u0000\u0000\u133c"+ + "\u03ba\u0001\u0000\u0000\u0000\u133d\u133e\u0007\u000e\u0000\u0000\u133e"+ + "\u133f\u0007\u0016\u0000\u0000\u133f\u1340\u0007\u0012\u0000\u0000\u1340"+ + "\u1341\u0007\n\u0000\u0000\u1341\u03bc\u0001\u0000\u0000\u0000\u1342\u1343"+ + "\u0007\u0017\u0000\u0000\u1343\u1344\u0007\r\u0000\u0000\u1344\u1345\u0007"+ + "\u0013\u0000\u0000\u1345\u1346\u0007\u0016\u0000\u0000\u1346\u1347\u0007"+ + "\u0018\u0000\u0000\u1347\u1348\u0007\u0011\u0000\u0000\u1348\u1349\u0007"+ + "\u0007\u0000\u0000\u1349\u134a\u0007\u0017\u0000\u0000\u134a\u03be\u0001"+ + "\u0000\u0000\u0000\u134b\u134c\u0007\t\u0000\u0000\u134c\u134d\u0007\n"+ + "\u0000\u0000\u134d\u134e\u0007\u0010\u0000\u0000\u134e\u134f\u0007\t\u0000"+ + "\u0000\u134f\u03c0\u0001\u0000\u0000\u0000\u1350\u1351\u0007\u0010\u0000"+ + "\u0000\u1351\u1352\u0007\u0005\u0000\u0000\u1352\u1353\u0007\u0012\u0000"+ + "\u0000\u1353\u1354\u0007\u0006\u0000\u0000\u1354\u1355\u0007\n\u0000\u0000"+ + "\u1355\u1356\u0007\t\u0000\u0000\u1356\u1357\u0007\u0005\u0000\u0000\u1357"+ + "\u1358\u0007\u000f\u0000\u0000\u1358\u1359\u0007\u0018\u0000\u0000\u1359"+ + "\u135a\u0007\u0006\u0000\u0000\u135a\u135b\u0007\n\u0000\u0000\u135b\u03c2"+ + "\u0001\u0000\u0000\u0000\u135c\u135d\u0007\u0013\u0000\u0000\u135d\u135e"+ + "\u0007\r\u0000\u0000\u135e\u135f\u0007\f\u0000\u0000\u135f\u1360\u0007"+ + "\u0011\u0000\u0000\u1360\u1361\u0007\u0007\u0000\u0000\u1361\u1362\u0007"+ + "\u0005\u0000\u0000\u1362\u1363\u0007\u0006\u0000\u0000\u1363\u1364\u0007"+ + "\u0011\u0000\u0000\u1364\u1365\u0007\u0010\u0000\u0000\u1365\u1366\u0007"+ + "\b\u0000\u0000\u1366\u03c4\u0001\u0000\u0000\u0000\u1367\u1368\u0007\u001a"+ + "\u0000\u0000\u1368\u1369\u0007\u000f\u0000\u0000\u1369\u136a\u0007\u0006"+ + "\u0000\u0000\u136a\u136b\u0007\u0010\u0000\u0000\u136b\u136c\u0007\u0005"+ + "\u0000\u0000\u136c\u136d\u0007\u0012\u0000\u0000\u136d\u136e\u0007\u0006"+ + "\u0000\u0000\u136e\u136f\u0007\n\u0000\u0000\u136f\u03c6\u0001\u0000\u0000"+ + "\u0000\u1370\u1371\u0007\u000e\u0000\u0000\u1371\u1372\u0007\u0013\u0000"+ + "\u0000\u1372\u1373\u0007\u0006\u0000\u0000\u1373\u1374\u0007\u0016\u0000"+ + "\u0000\u1374\u1375\u0007\u000f\u0000\u0000\u1375\u1376\u0007\u0007\u0000"+ + "\u0000\u1376\u1377\u0007\t\u0000\u0000\u1377\u03c8\u0001\u0000\u0000\u0000"+ + "\u1378\u1379\u0007\u001a\u0000\u0000\u1379\u137a\u0007\u000f\u0000\u0000"+ + "\u137a\u137b\u0007\u0006\u0000\u0000\u137b\u137c\u0007\u0007\u0000\u0000"+ + "\u137c\u137d\u0007\u0005\u0000\u0000\u137d\u137e\u0007\u000f\u0000\u0000"+ + "\u137e\u137f\u0007\n\u0000\u0000\u137f\u1380\u0007\t\u0000\u0000\u1380"+ + "\u1381\u0007\u0018\u0000\u0000\u1381\u1382\u0007\u0005\u0000\u0000\u1382"+ + "\u1383\u0007\u000e\u0000\u0000\u1383\u1384\u0007\n\u0000\u0000\u1384\u1385"+ + "\u0007\t\u0000\u0000\u1385\u03ca\u0001\u0000\u0000\u0000\u1386\u1387\u0007"+ + "\r\u0000\u0000\u1387\u1388\u0007\u0013\u0000\u0000\u1388\u1389\u0007\u001c"+ + "\u0000\u0000\u1389\u138a\u0007\u0010\u0000\u0000\u138a\u138b\u0007\b\u0000"+ + "\u0000\u138b\u138c\u0007\u0018\u0000\u0000\u138c\u138d\u0007\n\u0000\u0000"+ + "\u138d\u03cc\u0001\u0000\u0000\u0000\u138e\u138f\u0007\u0007\u0000\u0000"+ + "\u138f\u1390\u0007\u0013\u0000\u0000\u1390\u1391\u0007\r\u0000\u0000\u1391"+ + "\u1392\u0007\u000f\u0000\u0000\u1392\u1393\u0007\u0005\u0000\u0000\u1393"+ + "\u1394\u0007\u0006\u0000\u0000\u1394\u1395\u0007\u0011\u0000\u0000\u1395"+ + "\u1396\u0007\u000b\u0000\u0000\u1396\u1397\u0007\n\u0000\u0000\u1397\u1398"+ + "\u0007\f\u0000\u0000\u1398\u03ce\u0001\u0000\u0000\u0000\u1399\u139a\u0007"+ + "\u001c\u0000\u0000\u139a\u139b\u0007\u0011\u0000\u0000\u139b\u139c\u0007"+ + "\u0010\u0000\u0000\u139c\u139d\u0007\u0014\u0000\u0000\u139d\u139e\u0007"+ + "\u0011\u0000\u0000\u139e\u139f\u0007\u0007\u0000\u0000\u139f\u03d0\u0001"+ + "\u0000\u0000\u0000\u13a0\u13a1\u0007\u0019\u0000\u0000\u13a1\u13a2\u0007"+ + "\u0011\u0000\u0000\u13a2\u13a3\u0007\u0006\u0000\u0000\u13a3\u13a4\u0007"+ + "\u0010\u0000\u0000\u13a4\u13a5\u0007\n\u0000\u0000\u13a5\u13a6\u0007\r"+ + "\u0000\u0000\u13a6\u03d2\u0001\u0000\u0000\u0000\u13a7\u13a8\u0007\u0017"+ + "\u0000\u0000\u13a8\u13a9\u0007\r\u0000\u0000\u13a9\u13aa\u0007\u0013\u0000"+ + "\u0000\u13aa\u13ab\u0007\u0016\u0000\u0000\u13ab\u13ac\u0007\u0018\u0000"+ + "\u0000\u13ac\u13ad\u0007\t\u0000\u0000\u13ad\u03d4\u0001\u0000\u0000\u0000"+ + "\u13ae\u13af\u0007\u0013\u0000\u0000\u13af\u13b0\u0007\u0010\u0000\u0000"+ + "\u13b0\u13b1\u0007\u0014\u0000\u0000\u13b1\u13b2\u0007\n\u0000\u0000\u13b2"+ + "\u13b3\u0007\r\u0000\u0000\u13b3\u13b4\u0007\t\u0000\u0000\u13b4\u03d6"+ + "\u0001\u0000\u0000\u0000\u13b5\u13b6\u0007\u0007\u0000\u0000\u13b6\u13b7"+ + "\u0007\u0019\u0000\u0000\u13b7\u13b8\u0007\u000e\u0000\u0000\u13b8\u03d8"+ + "\u0001\u0000\u0000\u0000\u13b9\u13ba\u0007\u0007\u0000\u0000\u13ba\u13bb"+ + "\u0007\u0019\u0000\u0000\u13bb\u13bc\u0007\f\u0000\u0000\u13bc\u03da\u0001"+ + "\u0000\u0000\u0000\u13bd\u13be\u0007\u0007\u0000\u0000\u13be\u13bf\u0007"+ + "\u0019\u0000\u0000\u13bf\u13c0\u0007\u0015\u0000\u0000\u13c0\u13c1\u0007"+ + "\u000e\u0000\u0000\u13c1\u03dc\u0001\u0000\u0000\u0000\u13c2\u13c3\u0007"+ + "\u0007\u0000\u0000\u13c3\u13c4\u0007\u0019\u0000\u0000\u13c4\u13c5\u0007"+ + "\u0015\u0000\u0000\u13c5\u13c6\u0007\f\u0000\u0000\u13c6\u03de\u0001\u0000"+ + "\u0000\u0000\u13c7\u13c8\u0007\u0016\u0000\u0000\u13c8\u13c9\u0007\n\u0000"+ + "\u0000\u13c9\u13ca\u0007\t\u0000\u0000\u13ca\u13cb\u0007\u000e\u0000\u0000"+ + "\u13cb\u13cc\u0007\u0005\u0000\u0000\u13cc\u13cd\u0007\u0018\u0000\u0000"+ + "\u13cd\u13ce\u0007\n\u0000\u0000\u13ce\u03e0\u0001\u0000\u0000\u0000\u13cf"+ + "\u13d0\u0007\u001b\u0000\u0000\u13d0\u13d1\u0007\u0011\u0000\u0000\u13d1"+ + "\u13d2\u0007\n\u0000\u0000\u13d2\u13d3\u0007\u001c\u0000\u0000\u13d3\u13d4"+ + "\u0007\t\u0000\u0000\u13d4\u03e2\u0001\u0000\u0000\u0000\u13d5\u13d6\u0007"+ + "\u0007\u0000\u0000\u13d6\u13d7\u0007\u0013\u0000\u0000\u13d7\u13d8\u0007"+ + "\r\u0000\u0000\u13d8\u13d9\u0007\u000f\u0000\u0000\u13d9\u13da\u0007\u0005"+ + "\u0000\u0000\u13da\u13db\u0007\u0006\u0000\u0000\u13db\u13dc\u0007\u0011"+ + "\u0000\u0000\u13dc\u13dd\u0007\u000b\u0000\u0000\u13dd\u13de\u0007\n\u0000"+ + "\u0000\u13de\u03e4\u0001\u0000\u0000\u0000\u13df\u13e0\u0007\f\u0000\u0000"+ + "\u13e0\u13e1\u0007\u0016\u0000\u0000\u13e1\u13e2\u0007\u000f\u0000\u0000"+ + "\u13e2\u13e3\u0007\u0018\u0000\u0000\u13e3\u03e6\u0001\u0000\u0000\u0000"+ + "\u13e4\u13e5\u0007\u0018\u0000\u0000\u13e5\u13e6\u0007\r\u0000\u0000\u13e6"+ + "\u13e7\u0007\u0011\u0000\u0000\u13e7\u13e8\u0007\u0007\u0000\u0000\u13e8"+ + "\u13e9\u0007\u0010\u0000\u0000\u13e9\u13ea\u0005_\u0000\u0000\u13ea\u13eb"+ + "\u0007\t\u0000\u0000\u13eb\u13ec\u0007\u0010\u0000\u0000\u13ec\u13ed\u0007"+ + "\r\u0000\u0000\u13ed\u13ee\u0007\u0011\u0000\u0000\u13ee\u13ef\u0007\u000e"+ + "\u0000\u0000\u13ef\u13f0\u0007\u0010\u0000\u0000\u13f0\u13f1\u0005_\u0000"+ + "\u0000\u13f1\u13f2\u0007\u0018\u0000\u0000\u13f2\u13f3\u0007\u0005\u0000"+ + "\u0000\u13f3\u13f4\u0007\r\u0000\u0000\u13f4\u13f5\u0007\u0005\u0000\u0000"+ + "\u13f5\u13f6\u0007\u000f\u0000\u0000\u13f6\u13f7\u0007\t\u0000\u0000\u13f7"+ + "\u03e8\u0001\u0000\u0000\u0000\u13f8\u13f9\u0007\u001b\u0000\u0000\u13f9"+ + "\u13fa\u0007\u0005\u0000\u0000\u13fa\u13fb\u0007\r\u0000\u0000\u13fb\u13fc"+ + "\u0007\u0011\u0000\u0000\u13fc\u13fd\u0007\u0005\u0000\u0000\u13fd\u13fe"+ + "\u0007\u0012\u0000\u0000\u13fe\u13ff\u0007\u0006\u0000\u0000\u13ff\u1400"+ + "\u0007\n\u0000\u0000\u1400\u1401\u0005_\u0000\u0000\u1401\u1402\u0007"+ + "\u000e\u0000\u0000\u1402\u1403\u0007\u0013\u0000\u0000\u1403\u1404\u0007"+ + "\u0007\u0000\u0000\u1404\u1405\u0007\u0019\u0000\u0000\u1405\u1406\u0007"+ + "\u0006\u0000\u0000\u1406\u1407\u0007\u0011\u0000\u0000\u1407\u1408\u0007"+ + "\u000e\u0000\u0000\u1408\u1409\u0007\u0010\u0000\u0000\u1409\u03ea\u0001"+ + "\u0000\u0000\u0000\u140a\u140b\u0007\n\u0000\u0000\u140b\u140c\u0007\r"+ + "\u0000\u0000\u140c\u140d\u0007\r\u0000\u0000\u140d\u140e\u0007\u0013\u0000"+ + "\u0000\u140e\u140f\u0007\r\u0000\u0000\u140f\u03ec\u0001\u0000\u0000\u0000"+ + "\u1410\u1411\u0007\u0016\u0000\u0000\u1411\u1412\u0007\t\u0000\u0000\u1412"+ + "\u1413\u0007\n\u0000\u0000\u1413\u1414\u0005_\u0000\u0000\u1414\u1415"+ + "\u0007\u001b\u0000\u0000\u1415\u1416\u0007\u0005\u0000\u0000\u1416\u1417"+ + "\u0007\r\u0000\u0000\u1417\u1418\u0007\u0011\u0000\u0000\u1418\u1419\u0007"+ + "\u0005\u0000\u0000\u1419\u141a\u0007\u0012\u0000\u0000\u141a\u141b\u0007"+ + "\u0006\u0000\u0000\u141b\u141c\u0007\n\u0000\u0000\u141c\u03ee\u0001\u0000"+ + "\u0000\u0000\u141d\u141e\u0007\u0016\u0000\u0000\u141e\u141f\u0007\t\u0000"+ + "\u0000\u141f\u1420\u0007\n\u0000\u0000\u1420\u1421\u0005_\u0000\u0000"+ + "\u1421\u1422\u0007\u000e\u0000\u0000\u1422\u1423\u0007\u0013\u0000\u0000"+ + "\u1423\u1424\u0007\u0006\u0000\u0000\u1424\u1425\u0007\u0016\u0000\u0000"+ + "\u1425\u1426\u0007\u000f\u0000\u0000\u1426\u1427\u0007\u0007\u0000\u0000"+ + "\u1427\u03f0\u0001\u0000\u0000\u0000\u1428\u1429\u0007\u0005\u0000\u0000"+ + "\u1429\u142a\u0007\u0006\u0000\u0000\u142a\u142b\u0007\u0011\u0000\u0000"+ + "\u142b\u142c\u0007\u0005\u0000\u0000\u142c\u142d\u0007\t\u0000\u0000\u142d"+ + "\u03f2\u0001\u0000\u0000\u0000\u142e\u142f\u0007\u000e\u0000\u0000\u142f"+ + "\u1430\u0007\u0013\u0000\u0000\u1430\u1431\u0007\u0007\u0000\u0000\u1431"+ + "\u1432\u0007\t\u0000\u0000\u1432\u1433\u0007\u0010\u0000\u0000\u1433\u1434"+ + "\u0007\u0005\u0000\u0000\u1434\u1435\u0007\u0007\u0000\u0000\u1435\u1436"+ + "\u0007\u0010\u0000\u0000\u1436\u03f4\u0001\u0000\u0000\u0000\u1437\u1438"+ + "\u0007\u0018\u0000\u0000\u1438\u1439\u0007\n\u0000\u0000\u1439\u143a\u0007"+ + "\r\u0000\u0000\u143a\u143b\u0007\u0019\u0000\u0000\u143b\u143c\u0007\u0013"+ + "\u0000\u0000\u143c\u143d\u0007\r\u0000\u0000\u143d\u143e\u0007\u000f\u0000"+ + "\u0000\u143e\u03f6\u0001\u0000\u0000\u0000\u143f\u1440\u0007\u0017\u0000"+ + "\u0000\u1440\u1441\u0007\n\u0000\u0000\u1441\u1442\u0007\u0010\u0000\u0000"+ + "\u1442\u03f8\u0001\u0000\u0000\u0000\u1443\u1444\u0007\f\u0000\u0000\u1444"+ + "\u1445\u0007\u0011\u0000\u0000\u1445\u1446\u0007\u0005\u0000\u0000\u1446"+ + "\u1447\u0007\u0017\u0000\u0000\u1447\u1448\u0007\u0007\u0000\u0000\u1448"+ + "\u1449\u0007\u0013\u0000\u0000\u1449\u144a\u0007\t\u0000\u0000\u144a\u144b"+ + "\u0007\u0010\u0000\u0000\u144b\u144c\u0007\u0011\u0000\u0000\u144c\u144d"+ + "\u0007\u000e\u0000\u0000\u144d\u144e\u0007\t\u0000\u0000\u144e\u03fa\u0001"+ + "\u0000\u0000\u0000\u144f\u1450\u0007\t\u0000\u0000\u1450\u1451\u0007\u0010"+ + "\u0000\u0000\u1451\u1452\u0007\u0005\u0000\u0000\u1452\u1453\u0007\u000e"+ + "\u0000\u0000\u1453\u1454\u0007\u0015\u0000\u0000\u1454\u1455\u0007\n\u0000"+ + "\u0000\u1455\u1456\u0007\f\u0000\u0000\u1456\u03fc\u0001\u0000\u0000\u0000"+ + "\u1457\u1458\u0007\n\u0000\u0000\u1458\u1459\u0007\u0006\u0000\u0000\u1459"+ + "\u145a\u0007\t\u0000\u0000\u145a\u145b\u0007\u0011\u0000\u0000\u145b\u145c"+ + "\u0007\u0019\u0000\u0000\u145c\u03fe\u0001\u0000\u0000\u0000\u145d\u145e"+ + "\u0007\u001c\u0000\u0000\u145e\u145f\u0007\u0014\u0000\u0000\u145f\u1460"+ + "\u0007\u0011\u0000\u0000\u1460\u1461\u0007\u0006\u0000\u0000\u1461\u1462"+ + "\u0007\n\u0000\u0000\u1462\u0400\u0001\u0000\u0000\u0000\u1463\u1464\u0007"+ + "\r\u0000\u0000\u1464\u1465\u0007\n\u0000\u0000\u1465\u1466\u0007\u001b"+ + "\u0000\u0000\u1466\u1467\u0007\n\u0000\u0000\u1467\u1468\u0007\r\u0000"+ + "\u0000\u1468\u1469\u0007\t\u0000\u0000\u1469\u146a\u0007\n\u0000\u0000"+ + "\u146a\u0402\u0001\u0000\u0000\u0000\u146b\u146c\u0007\u0019\u0000\u0000"+ + "\u146c\u146d\u0007\u0013\u0000\u0000\u146d\u146e\u0007\r\u0000\u0000\u146e"+ + "\u146f\u0007\n\u0000\u0000\u146f\u1470\u0007\u0005\u0000\u0000\u1470\u1471"+ + "\u0007\u000e\u0000\u0000\u1471\u1472\u0007\u0014\u0000\u0000\u1472\u0404"+ + "\u0001\u0000\u0000\u0000\u1473\u1474\u0007\t\u0000\u0000\u1474\u1475\u0007"+ + "\u0006\u0000\u0000\u1475\u1476\u0007\u0011\u0000\u0000\u1476\u1477\u0007"+ + "\u000e\u0000\u0000\u1477\u1478\u0007\n\u0000\u0000\u1478\u0406\u0001\u0000"+ + "\u0000\u0000\u1479\u147a\u0007\n\u0000\u0000\u147a\u147b\u0007\u001a\u0000"+ + "\u0000\u147b\u147c\u0007\u0011\u0000\u0000\u147c\u147d\u0007\u0010\u0000"+ + "\u0000\u147d\u0408\u0001\u0000\u0000\u0000\u147e\u147f\u0007\r\u0000\u0000"+ + "\u147f\u1480\u0007\n\u0000\u0000\u1480\u1481\u0007\u0010\u0000\u0000\u1481"+ + "\u1482\u0007\u0016\u0000\u0000\u1482\u1483\u0007\r\u0000\u0000\u1483\u1484"+ + "\u0007\u0007\u0000\u0000\u1484\u040a\u0001\u0000\u0000\u0000\u1485\u1486"+ + "\u0007\u001d\u0000\u0000\u1486\u1487\u0007\u0016\u0000\u0000\u1487\u1488"+ + "\u0007\n\u0000\u0000\u1488\u1489\u0007\r\u0000\u0000\u1489\u148a\u0007"+ + "\b\u0000\u0000\u148a\u040c\u0001\u0000\u0000\u0000\u148b\u148c\u0007\r"+ + "\u0000\u0000\u148c\u148d\u0007\u0005\u0000\u0000\u148d\u148e\u0007\u0011"+ + "\u0000\u0000\u148e\u148f\u0007\t\u0000\u0000\u148f\u1490\u0007\n\u0000"+ + "\u0000\u1490\u040e\u0001\u0000\u0000\u0000\u1491\u1492\u0007\t\u0000\u0000"+ + "\u1492\u1493\u0007\u001d\u0000\u0000\u1493\u1494\u0007\u0006\u0000\u0000"+ + "\u1494\u1495\u0007\t\u0000\u0000\u1495\u1496\u0007\u0010\u0000\u0000\u1496"+ + "\u1497\u0007\u0005\u0000\u0000\u1497\u1498\u0007\u0010\u0000\u0000\u1498"+ + "\u1499\u0007\n\u0000\u0000\u1499\u0410\u0001\u0000\u0000\u0000\u149a\u149b"+ + "\u0007\f\u0000\u0000\u149b\u149c\u0007\n\u0000\u0000\u149c\u149d\u0007"+ + "\u0012\u0000\u0000\u149d\u149e\u0007\u0016\u0000\u0000\u149e\u149f\u0007"+ + "\u0017\u0000\u0000\u149f\u0412\u0001\u0000\u0000\u0000\u14a0\u14a1\u0007"+ + "\u0006\u0000\u0000\u14a1\u14a2\u0007\u0013\u0000\u0000\u14a2\u14a3\u0007"+ + "\u0017\u0000\u0000\u14a3\u0414\u0001\u0000\u0000\u0000\u14a4\u14a5\u0007"+ + "\u0011\u0000\u0000\u14a5\u14a6\u0007\u0007\u0000\u0000\u14a6\u14a7\u0007"+ + "\u0019\u0000\u0000\u14a7\u14a8\u0007\u0013\u0000\u0000\u14a8\u0416\u0001"+ + "\u0000\u0000\u0000\u14a9\u14aa\u0007\u0007\u0000\u0000\u14aa\u14ab\u0007"+ + "\u0013\u0000\u0000\u14ab\u14ac\u0007\u0010\u0000\u0000\u14ac\u14ad\u0007"+ + "\u0011\u0000\u0000\u14ad\u14ae\u0007\u000e\u0000\u0000\u14ae\u14af\u0007"+ + "\n\u0000\u0000\u14af\u0418\u0001\u0000\u0000\u0000\u14b0\u14b1\u0007\u001c"+ + "\u0000\u0000\u14b1\u14b2\u0007\u0005\u0000\u0000\u14b2\u14b3\u0007\r\u0000"+ + "\u0000\u14b3\u14b4\u0007\u0007\u0000\u0000\u14b4\u14b5\u0007\u0011\u0000"+ + "\u0000\u14b5\u14b6\u0007\u0007\u0000\u0000\u14b6\u14b7\u0007\u0017\u0000"+ + "\u0000\u14b7\u041a\u0001\u0000\u0000\u0000\u14b8\u14b9\u0007\n\u0000\u0000"+ + "\u14b9\u14ba\u0007\u001a\u0000\u0000\u14ba\u14bb\u0007\u000e\u0000\u0000"+ + "\u14bb\u14bc\u0007\n\u0000\u0000\u14bc\u14bd\u0007\u0018\u0000\u0000\u14bd"+ + "\u14be\u0007\u0010\u0000\u0000\u14be\u14bf\u0007\u0011\u0000\u0000\u14bf"+ + "\u14c0\u0007\u0013\u0000\u0000\u14c0\u14c1\u0007\u0007\u0000\u0000\u14c1"+ + "\u041c\u0001\u0000\u0000\u0000\u14c2\u14c3\u0007\u0005\u0000\u0000\u14c3"+ + "\u14c4\u0007\t\u0000\u0000\u14c4\u14c5\u0007\t\u0000\u0000\u14c5\u14c6"+ + "\u0007\n\u0000\u0000\u14c6\u14c7\u0007\r\u0000\u0000\u14c7\u14c8\u0007"+ + "\u0010\u0000\u0000\u14c8\u041e\u0001\u0000\u0000\u0000\u14c9\u14ca\u0007"+ + "\u0006\u0000\u0000\u14ca\u14cb\u0007\u0013\u0000\u0000\u14cb\u14cc\u0007"+ + "\u0013\u0000\u0000\u14cc\u14cd\u0007\u0018\u0000\u0000\u14cd\u0420\u0001"+ + "\u0000\u0000\u0000\u14ce\u14cf\u0007\u0013\u0000\u0000\u14cf\u14d0\u0007"+ + "\u0018\u0000\u0000\u14d0\u14d1\u0007\n\u0000\u0000\u14d1\u14d2\u0007\u0007"+ + "\u0000\u0000\u14d2\u0422\u0001\u0000\u0000\u0000\u14d3\u14d4\u0007\u0005"+ + "\u0000\u0000\u14d4\u14d5\u0007\u0012\u0000\u0000\u14d5\u14d6\u0007\t\u0000"+ + "\u0000\u14d6\u0424\u0001\u0000\u0000\u0000\u14d7\u14d8\u0007\u000e\u0000"+ + "\u0000\u14d8\u14d9\u0007\u0012\u0000\u0000\u14d9\u14da\u0007\r\u0000\u0000"+ + "\u14da\u14db\u0007\u0010\u0000\u0000\u14db\u0426\u0001\u0000\u0000\u0000"+ + "\u14dc\u14dd\u0007\u000e\u0000\u0000\u14dd\u14de\u0007\n\u0000\u0000\u14de"+ + "\u14df\u0007\u0011\u0000\u0000\u14df\u14e0\u0007\u0006\u0000\u0000\u14e0"+ + "\u0428\u0001\u0000\u0000\u0000\u14e1\u14e2\u0007\u000e\u0000\u0000\u14e2"+ + "\u14e3\u0007\n\u0000\u0000\u14e3\u14e4\u0007\u0011\u0000\u0000\u14e4\u14e5"+ + "\u0007\u0006\u0000\u0000\u14e5\u14e6\u0007\u0011\u0000\u0000\u14e6\u14e7"+ + "\u0007\u0007\u0000\u0000\u14e7\u14e8\u0007\u0017\u0000\u0000\u14e8\u042a"+ + "\u0001\u0000\u0000\u0000\u14e9\u14ea\u0007\f\u0000\u0000\u14ea\u14eb\u0007"+ + "\n\u0000\u0000\u14eb\u14ec\u0007\u0017\u0000\u0000\u14ec\u14ed\u0007\r"+ + "\u0000\u0000\u14ed\u14ee\u0007\n\u0000\u0000\u14ee\u14ef\u0007\n\u0000"+ + "\u0000\u14ef\u14f0\u0007\t\u0000\u0000\u14f0\u042c\u0001\u0000\u0000\u0000"+ + "\u14f1\u14f2\u0007\f\u0000\u0000\u14f2\u14f3\u0007\u0011\u0000\u0000\u14f3"+ + "\u14f4\u0007\u001b\u0000\u0000\u14f4\u042e\u0001\u0000\u0000\u0000\u14f5"+ + "\u14f6\u0007\n\u0000\u0000\u14f6\u14f7\u0007\u001a\u0000\u0000\u14f7\u14f8"+ + "\u0007\u0018\u0000\u0000\u14f8\u0430\u0001\u0000\u0000\u0000\u14f9\u14fa"+ + "\u0007\u0019\u0000\u0000\u14fa\u14fb\u0007\u0005\u0000\u0000\u14fb\u14fc"+ + "\u0007\u000e\u0000\u0000\u14fc\u14fd\u0007\u0010\u0000\u0000\u14fd\u14fe"+ + "\u0007\u0013\u0000\u0000\u14fe\u14ff\u0007\r\u0000\u0000\u14ff\u1500\u0007"+ + "\u0011\u0000\u0000\u1500\u1501\u0007\u0005\u0000\u0000\u1501\u1502\u0007"+ + "\u0006\u0000\u0000\u1502\u0432\u0001\u0000\u0000\u0000\u1503\u1504\u0007"+ + "\u0019\u0000\u0000\u1504\u1505\u0007\u0006\u0000\u0000\u1505\u1506\u0007"+ + "\u0013\u0000\u0000\u1506\u1507\u0007\u0013\u0000\u0000\u1507\u1508\u0007"+ + "\r\u0000\u0000\u1508\u0434\u0001\u0000\u0000\u0000\u1509\u150a\u0007\u0017"+ + "\u0000\u0000\u150a\u150b\u0007\u000e\u0000\u0000\u150b\u150c\u0007\f\u0000"+ + "\u0000\u150c\u0436\u0001\u0000\u0000\u0000\u150d\u150e\u0007\u0006\u0000"+ + "\u0000\u150e\u150f\u0007\u000e\u0000\u0000\u150f\u1510\u0007\u000f\u0000"+ + "\u0000\u1510\u0438\u0001\u0000\u0000\u0000\u1511\u1512\u0007\u0006\u0000"+ + "\u0000\u1512\u1513\u0007\u0007\u0000\u0000\u1513\u043a\u0001\u0000\u0000"+ + "\u0000\u1514\u1515\u0007\u0006\u0000\u0000\u1515\u1516\u0007\u0013\u0000"+ + "\u0000\u1516\u1517\u0007\u0017\u0000\u0000\u1517\u1518\u00051\u0000\u0000"+ + "\u1518\u1519\u00050\u0000\u0000\u1519\u043c\u0001\u0000\u0000\u0000\u151a"+ + "\u151b\u0007\u000f\u0000\u0000\u151b\u151c\u0007\u0011\u0000\u0000\u151c"+ + "\u151d\u0007\u0007\u0000\u0000\u151d\u151e\u0005_\u0000\u0000\u151e\u151f"+ + "\u0007\t\u0000\u0000\u151f\u1520\u0007\u000e\u0000\u0000\u1520\u1521\u0007"+ + "\u0005\u0000\u0000\u1521\u1522\u0007\u0006\u0000\u0000\u1522\u1523\u0007"+ + "\n\u0000\u0000\u1523\u043e\u0001\u0000\u0000\u0000\u1524\u1525\u0007\u000f"+ + "\u0000\u0000\u1525\u1526\u0007\u0013\u0000\u0000\u1526\u1527\u0007\f\u0000"+ + "\u0000\u1527\u0440\u0001\u0000\u0000\u0000\u1528\u1529\u0007\u0018\u0000"+ + "\u0000\u1529\u152a\u0007\u0011\u0000\u0000\u152a\u0442\u0001\u0000\u0000"+ + "\u0000\u152b\u152c\u0007\u0018\u0000\u0000\u152c\u152d\u0007\u0013\u0000"+ + "\u0000\u152d\u152e\u0007\u001c\u0000\u0000\u152e\u152f\u0007\n\u0000\u0000"+ + "\u152f\u1530\u0007\r\u0000\u0000\u1530\u0444\u0001\u0000\u0000\u0000\u1531"+ + "\u1532\u0007\r\u0000\u0000\u1532\u1533\u0007\u0005\u0000\u0000\u1533\u1534"+ + "\u0007\f\u0000\u0000\u1534\u1535\u0007\u0011\u0000\u0000\u1535\u1536\u0007"+ + "\u0005\u0000\u0000\u1536\u1537\u0007\u0007\u0000\u0000\u1537\u1538\u0007"+ + "\t\u0000\u0000\u1538\u0446\u0001\u0000\u0000\u0000\u1539\u153a\u0007\r"+ + "\u0000\u0000\u153a\u153b\u0007\u0013\u0000\u0000\u153b\u153c\u0007\u0016"+ + "\u0000\u0000\u153c\u153d\u0007\u0007\u0000\u0000\u153d\u153e\u0007\f\u0000"+ + "\u0000\u153e\u0448\u0001\u0000\u0000\u0000\u153f\u1540\u0007\t\u0000\u0000"+ + "\u1540\u1541\u0007\u000e\u0000\u0000\u1541\u1542\u0007\u0005\u0000\u0000"+ + "\u1542\u1543\u0007\u0006\u0000\u0000\u1543\u1544\u0007\n\u0000\u0000\u1544"+ + "\u044a\u0001\u0000\u0000\u0000\u1545\u1546\u0007\t\u0000\u0000\u1546\u1547"+ + "\u0007\u0011\u0000\u0000\u1547\u1548\u0007\u0017\u0000\u0000\u1548\u1549"+ + "\u0007\u0007\u0000\u0000\u1549\u044c\u0001\u0000\u0000\u0000\u154a\u154b"+ + "\u0007\t\u0000\u0000\u154b\u154c\u0007\u001d\u0000\u0000\u154c\u154d\u0007"+ + "\r\u0000\u0000\u154d\u154e\u0007\u0010\u0000\u0000\u154e\u044e\u0001\u0000"+ + "\u0000\u0000\u154f\u1550\u0007\u0010\u0000\u0000\u1550\u1551\u0007\r\u0000"+ + "\u0000\u1551\u1552\u0007\u0011\u0000\u0000\u1552\u1553\u0007\u000f\u0000"+ + "\u0000\u1553\u1554\u0005_\u0000\u0000\u1554\u1555\u0007\t\u0000\u0000"+ + "\u1555\u1556\u0007\u000e\u0000\u0000\u1556\u1557\u0007\u0005\u0000\u0000"+ + "\u1557\u1558\u0007\u0006\u0000\u0000\u1558\u1559\u0007\n\u0000\u0000\u1559"+ + "\u0450\u0001\u0000\u0000\u0000\u155a\u155b\u0007\u0010\u0000\u0000\u155b"+ + "\u155c\u0007\r\u0000\u0000\u155c\u155d\u0007\u0016\u0000\u0000\u155d\u155e"+ + "\u0007\u0007\u0000\u0000\u155e\u155f\u0007\u000e\u0000\u0000\u155f\u0452"+ + "\u0001\u0000\u0000\u0000\u1560\u1561\u0007\u001c\u0000\u0000\u1561\u1562"+ + "\u0007\u0011\u0000\u0000\u1562\u1563\u0007\f\u0000\u0000\u1563\u1564\u0007"+ + "\u0010\u0000\u0000\u1564\u1565\u0007\u0014\u0000\u0000\u1565\u1566\u0005"+ + "_\u0000\u0000\u1566\u1567\u0007\u0012\u0000\u0000\u1567\u1568\u0007\u0016"+ + "\u0000\u0000\u1568\u1569\u0007\u000e\u0000\u0000\u1569\u156a\u0007\u0015"+ + "\u0000\u0000\u156a\u156b\u0007\n\u0000\u0000\u156b\u156c\u0007\u0010\u0000"+ + "\u0000\u156c\u0454\u0001\u0000\u0000\u0000\u156d\u156e\u0007\r\u0000\u0000"+ + "\u156e\u156f\u0007\u0005\u0000\u0000\u156f\u1570\u0007\u0007\u0000\u0000"+ + "\u1570\u1571\u0007\f\u0000\u0000\u1571\u1572\u0007\u0013\u0000\u0000\u1572"+ + "\u1573\u0007\u000f\u0000\u0000\u1573\u0456\u0001\u0000\u0000\u0000\u1574"+ + "\u1575\u0007\t\u0000\u0000\u1575\u1576\u0007\n\u0000\u0000\u1576\u1577"+ + "\u0007\u0010\u0000\u0000\u1577\u1578\u0007\t\u0000\u0000\u1578\u1579\u0007"+ + "\n\u0000\u0000\u1579\u157a\u0007\n\u0000\u0000\u157a\u157b\u0007\f\u0000"+ + "\u0000\u157b\u0458\u0001\u0000\u0000\u0000\u157c\u157d\u0007\u0005\u0000"+ + "\u0000\u157d\u157e\u0007\u000e\u0000\u0000\u157e\u157f\u0007\u0013\u0000"+ + "\u0000\u157f\u1580\u0007\t\u0000\u0000\u1580\u045a\u0001\u0000\u0000\u0000"+ + "\u1581\u1582\u0007\u0005\u0000\u0000\u1582\u1583\u0007\u000e\u0000\u0000"+ + "\u1583\u1584\u0007\u0013\u0000\u0000\u1584\u1585\u0007\t\u0000\u0000\u1585"+ + "\u1586\u0007\f\u0000\u0000\u1586\u045c\u0001\u0000\u0000\u0000\u1587\u1588"+ + "\u0007\u0005\u0000\u0000\u1588\u1589\u0007\t\u0000\u0000\u1589\u158a\u0007"+ + "\u0011\u0000\u0000\u158a\u158b\u0007\u0007\u0000\u0000\u158b\u045e\u0001"+ + "\u0000\u0000\u0000\u158c\u158d\u0007\u0005\u0000\u0000\u158d\u158e\u0007"+ + "\t\u0000\u0000\u158e\u158f\u0007\u0011\u0000\u0000\u158f\u1590\u0007\u0007"+ + "\u0000\u0000\u1590\u1591\u0007\f\u0000\u0000\u1591\u0460\u0001\u0000\u0000"+ + "\u0000\u1592\u1593\u0007\u0005\u0000\u0000\u1593\u1594\u0007\u0010\u0000"+ + "\u0000\u1594\u1595\u0007\u0005\u0000\u0000\u1595\u1596\u0007\u0007\u0000"+ + "\u0000\u1596\u0462\u0001\u0000\u0000\u0000\u1597\u1598\u0007\u0005\u0000"+ + "\u0000\u1598\u1599\u0007\u0010\u0000\u0000\u1599\u159a\u0007\u0005\u0000"+ + "\u0000\u159a\u159b\u0007\u0007\u0000\u0000\u159b\u159c\u0007\f\u0000\u0000"+ + "\u159c\u0464\u0001\u0000\u0000\u0000\u159d\u159e\u0007\u0005\u0000\u0000"+ + "\u159e\u159f\u0007\u0010\u0000\u0000\u159f\u15a0\u0007\u0005\u0000\u0000"+ + "\u15a0\u15a1\u0007\u0007\u0000\u0000\u15a1\u15a2\u00052\u0000\u0000\u15a2"+ + "\u0466\u0001\u0000\u0000\u0000\u15a3\u15a4\u0007\u0005\u0000\u0000\u15a4"+ + "\u15a5\u0007\u0010\u0000\u0000\u15a5\u15a6\u0007\u0005\u0000\u0000\u15a6"+ + "\u15a7\u0007\u0007\u0000\u0000\u15a7\u15a8\u00052\u0000\u0000\u15a8\u15a9"+ + "\u0007\f\u0000\u0000\u15a9\u0468\u0001\u0000\u0000\u0000\u15aa\u15ab\u0007"+ + "\u000e\u0000\u0000\u15ab\u15ac\u0007\u0013\u0000\u0000\u15ac\u15ad\u0007"+ + "\t\u0000\u0000\u15ad\u046a\u0001\u0000\u0000\u0000\u15ae\u15af\u0007\u000e"+ + "\u0000\u0000\u15af\u15b0\u0007\u0013\u0000\u0000\u15b0\u15b1\u0007\t\u0000"+ + "\u0000\u15b1\u15b2\u0007\f\u0000\u0000\u15b2\u046c\u0001\u0000\u0000\u0000"+ + "\u15b3\u15b4\u0007\u000e\u0000\u0000\u15b4\u15b5\u0007\u0013\u0000\u0000"+ + "\u15b5\u15b6\u0007\u0010\u0000\u0000\u15b6\u046e\u0001\u0000\u0000\u0000"+ + "\u15b7\u15b8\u0007\u000e\u0000\u0000\u15b8\u15b9\u0007\u0013\u0000\u0000"+ + "\u15b9\u15ba\u0007\u0010\u0000\u0000\u15ba\u15bb\u0007\f\u0000\u0000\u15bb"+ + "\u0470\u0001\u0000\u0000\u0000\u15bc\u15bd\u0007\t\u0000\u0000\u15bd\u15be"+ + "\u0007\u0011\u0000\u0000\u15be\u15bf\u0007\u0007\u0000\u0000\u15bf\u0472"+ + "\u0001\u0000\u0000\u0000\u15c0\u15c1\u0007\t\u0000\u0000\u15c1\u15c2\u0007"+ + "\u0011\u0000\u0000\u15c2\u15c3\u0007\u0007\u0000\u0000\u15c3\u15c4\u0007"+ + "\f\u0000\u0000\u15c4\u0474\u0001\u0000\u0000\u0000\u15c5\u15c6\u0007\u0010"+ + "\u0000\u0000\u15c6\u15c7\u0007\u0005\u0000\u0000\u15c7\u15c8\u0007\u0007"+ + "\u0000\u0000\u15c8\u0476\u0001\u0000\u0000\u0000\u15c9\u15ca\u0007\u0010"+ + "\u0000\u0000\u15ca\u15cb\u0007\u0005\u0000\u0000\u15cb\u15cc\u0007\u0007"+ + "\u0000\u0000\u15cc\u15cd\u0007\f\u0000\u0000\u15cd\u0478\u0001\u0000\u0000"+ + "\u0000\u15ce\u15cf\u0007\t\u0000\u0000\u15cf\u15d0\u0007\u0011\u0000\u0000"+ + "\u15d0\u15d1\u0007\u0007\u0000\u0000\u15d1\u15d2\u0007\u0014\u0000\u0000"+ + "\u15d2\u047a\u0001\u0000\u0000\u0000\u15d3\u15d4\u0007\u000e\u0000\u0000"+ + "\u15d4\u15d5\u0007\u0013\u0000\u0000\u15d5\u15d6\u0007\t\u0000\u0000\u15d6"+ + "\u15d7\u0007\u0014\u0000\u0000\u15d7\u047c\u0001\u0000\u0000\u0000\u15d8"+ + "\u15d9\u0007\u0010\u0000\u0000\u15d9\u15da\u0007\u0005\u0000\u0000\u15da"+ + "\u15db\u0007\u0007\u0000\u0000\u15db\u15dc\u0007\u0014\u0000\u0000\u15dc"+ + "\u047e\u0001\u0000\u0000\u0000\u15dd\u15de\u0007\u0005\u0000\u0000\u15de"+ + "\u15df\u0007\t\u0000\u0000\u15df\u15e0\u0007\u0011\u0000\u0000\u15e0\u15e1"+ + "\u0007\u0007\u0000\u0000\u15e1\u15e2\u0007\u0014\u0000\u0000\u15e2\u0480"+ + "\u0001\u0000\u0000\u0000\u15e3\u15e4\u0007\u0005\u0000\u0000\u15e4\u15e5"+ + "\u0007\u000e\u0000\u0000\u15e5\u15e6\u0007\u0013\u0000\u0000\u15e6\u15e7"+ + "\u0007\t\u0000\u0000\u15e7\u15e8\u0007\u0014\u0000\u0000\u15e8\u0482\u0001"+ + "\u0000\u0000\u0000\u15e9\u15ea\u0007\u0005\u0000\u0000\u15ea\u15eb\u0007"+ + "\u0010\u0000\u0000\u15eb\u15ec\u0007\u0005\u0000\u0000\u15ec\u15ed\u0007"+ + "\u0007\u0000\u0000\u15ed\u15ee\u0007\u0014\u0000\u0000\u15ee\u0484\u0001"+ + "\u0000\u0000\u0000\u15ef\u15f0\u0007\u0012\u0000\u0000\u15f0\u15f1\u0007"+ + "\u0011\u0000\u0000\u15f1\u15f2\u0007\u0010\u0000\u0000\u15f2\u15f3\u0005"+ + "_\u0000\u0000\u15f3\u15f4\u0007\u0006\u0000\u0000\u15f4\u15f5\u0007\n"+ + "\u0000\u0000\u15f5\u15f6\u0007\u0007\u0000\u0000\u15f6\u15f7\u0007\u0017"+ + "\u0000\u0000\u15f7\u15f8\u0007\u0010\u0000\u0000\u15f8\u15f9\u0007\u0014"+ + "\u0000\u0000\u15f9\u0486\u0001\u0000\u0000\u0000\u15fa\u15fb\u0007\u000e"+ + "\u0000\u0000\u15fb\u15fc\u0007\u0014\u0000\u0000\u15fc\u15fd\u0007\u0005"+ + "\u0000\u0000\u15fd\u15fe\u0007\r\u0000\u0000\u15fe\u15ff\u0005_\u0000"+ + "\u0000\u15ff\u1600\u0007\u0006\u0000\u0000\u1600\u1601\u0007\n\u0000\u0000"+ + "\u1601\u1602\u0007\u0007\u0000\u0000\u1602\u1603\u0007\u0017\u0000\u0000"+ + "\u1603\u1604\u0007\u0010\u0000\u0000\u1604\u1605\u0007\u0014\u0000\u0000"+ + "\u1605\u0488\u0001\u0000\u0000\u0000\u1606\u1607\u0007\u000e\u0000\u0000"+ + "\u1607\u1608\u0007\u0014\u0000\u0000\u1608\u1609\u0007\u0005\u0000\u0000"+ + "\u1609\u160a\u0007\r\u0000\u0000\u160a\u160b\u0007\u0005\u0000\u0000\u160b"+ + "\u160c\u0007\u000e\u0000\u0000\u160c\u160d\u0007\u0010\u0000\u0000\u160d"+ + "\u160e\u0007\n\u0000\u0000\u160e\u160f\u0007\r\u0000\u0000\u160f\u1610"+ + "\u0005_\u0000\u0000\u1610\u1611\u0007\u0006\u0000\u0000\u1611\u1612\u0007"+ + "\n\u0000\u0000\u1612\u1613\u0007\u0007\u0000\u0000\u1613\u1614\u0007\u0017"+ + "\u0000\u0000\u1614\u1615\u0007\u0010\u0000\u0000\u1615\u1616\u0007\u0014"+ + "\u0000\u0000\u1616\u048a\u0001\u0000\u0000\u0000\u1617\u1618\u0007\u0006"+ + "\u0000\u0000\u1618\u1619\u0007\u0013\u0000\u0000\u1619\u161a\u0007\u001c"+ + "\u0000\u0000\u161a\u161b\u0007\n\u0000\u0000\u161b\u161c\u0007\r\u0000"+ + "\u0000\u161c\u048c\u0001\u0000\u0000\u0000\u161d\u161e\u0007\u0013\u0000"+ + "\u0000\u161e\u161f\u0007\u000e\u0000\u0000\u161f\u1620\u0007\u0010\u0000"+ + "\u0000\u1620\u1621\u0007\n\u0000\u0000\u1621\u1622\u0007\u0010\u0000\u0000"+ + "\u1622\u1623\u0005_\u0000\u0000\u1623\u1624\u0007\u0006\u0000\u0000\u1624"+ + "\u1625\u0007\n\u0000\u0000\u1625\u1626\u0007\u0007\u0000\u0000\u1626\u1627"+ + "\u0007\u0017\u0000\u0000\u1627\u1628\u0007\u0010\u0000\u0000\u1628\u1629"+ + "\u0007\u0014\u0000\u0000\u1629\u048e\u0001\u0000\u0000\u0000\u162a\u162b"+ + "\u0007\u0016\u0000\u0000\u162b\u162c\u0007\u0018\u0000\u0000\u162c\u162d"+ + "\u0007\u0018\u0000\u0000\u162d\u162e\u0007\n\u0000\u0000\u162e\u162f\u0007"+ + "\r\u0000\u0000\u162f\u0490\u0001\u0000\u0000\u0000\u1630\u1631\u0007\u0005"+ + "\u0000\u0000\u1631\u1632\u0007\t\u0000\u0000\u1632\u1633\u0007\u000e\u0000"+ + "\u0000\u1633\u1634\u0007\u0011\u0000\u0000\u1634\u1635\u0007\u0011\u0000"+ + "\u0000\u1635\u0492\u0001\u0000\u0000\u0000\u1636\u1637\u0007\u0012\u0000"+ + "\u0000\u1637\u1638\u0007\u0010\u0000\u0000\u1638\u1639\u0007\r\u0000\u0000"+ + "\u1639\u163a\u0007\u0011\u0000\u0000\u163a\u163b\u0007\u000f\u0000\u0000"+ + "\u163b\u0494\u0001\u0000\u0000\u0000\u163c\u163d\u0007\u000e\u0000\u0000"+ + "\u163d\u163e\u0007\u0014\u0000\u0000\u163e\u163f\u0007\r\u0000\u0000\u163f"+ + "\u0496\u0001\u0000\u0000\u0000\u1640\u1641\u0007\u000e\u0000\u0000\u1641"+ + "\u1642\u0007\u0013\u0000\u0000\u1642\u1643\u0007\u0007\u0000\u0000\u1643"+ + "\u1644\u0007\u000e\u0000\u0000\u1644\u1645\u0007\u0005\u0000\u0000\u1645"+ + "\u1646\u0007\u0010\u0000\u0000\u1646\u0498\u0001\u0000\u0000\u0000\u1647"+ + "\u1648\u0007\u000e\u0000\u0000\u1648\u1649\u0007\u0013\u0000\u0000\u1649"+ + "\u164a\u0007\u0007\u0000\u0000\u164a\u164b\u0007\u000e\u0000\u0000\u164b"+ + "\u164c\u0007\u0005\u0000\u0000\u164c\u164d\u0007\u0010\u0000\u0000\u164d"+ + "\u164e\u0005_\u0000\u0000\u164e\u164f\u0007\u001c\u0000\u0000\u164f\u1650"+ + "\u0007\t\u0000\u0000\u1650\u049a\u0001\u0000\u0000\u0000\u1651\u1652\u0007"+ + "\u0019\u0000\u0000\u1652\u1653\u0007\u0013\u0000\u0000\u1653\u1654\u0007"+ + "\r\u0000\u0000\u1654\u1655\u0007\u000f\u0000\u0000\u1655\u1656\u0007\u0005"+ + "\u0000\u0000\u1656\u1657\u0007\u0010\u0000\u0000\u1657\u049c\u0001\u0000"+ + "\u0000\u0000\u1658\u1659\u0007\u0011\u0000\u0000\u1659\u165a\u0007\u0007"+ + "\u0000\u0000\u165a\u165b\u0007\u0011\u0000\u0000\u165b\u165c\u0007\u0010"+ + "\u0000\u0000\u165c\u165d\u0007\u000e\u0000\u0000\u165d\u165e\u0007\u0005"+ + "\u0000\u0000\u165e\u165f\u0007\u0018\u0000\u0000\u165f\u049e\u0001\u0000"+ + "\u0000\u0000\u1660\u1661\u0007\u0006\u0000\u0000\u1661\u1662\u0007\n\u0000"+ + "\u0000\u1662\u1663\u0007\u0007\u0000\u0000\u1663\u1664\u0007\u0017\u0000"+ + "\u0000\u1664\u1665\u0007\u0010\u0000\u0000\u1665\u1666\u0007\u0014\u0000"+ + "\u0000\u1666\u04a0\u0001\u0000\u0000\u0000\u1667\u1668\u0007\u0006\u0000"+ + "\u0000\u1668\u1669\u0007\u0018\u0000\u0000\u1669\u166a\u0007\u0005\u0000"+ + "\u0000\u166a\u166b\u0007\f\u0000\u0000\u166b\u04a2\u0001\u0000\u0000\u0000"+ + "\u166c\u166d\u0007\u0006\u0000\u0000\u166d\u166e\u0007\u0010\u0000\u0000"+ + "\u166e\u166f\u0007\r\u0000\u0000\u166f\u1670\u0007\u0011\u0000\u0000\u1670"+ + "\u1671\u0007\u000f\u0000\u0000\u1671\u04a4\u0001\u0000\u0000\u0000\u1672"+ + "\u1673\u0007\u000f\u0000\u0000\u1673\u1674\u0007\f\u0000\u0000\u1674\u1675"+ + "\u00055\u0000\u0000\u1675\u04a6\u0001\u0000\u0000\u0000\u1676\u1677\u0007"+ + "\u0018\u0000\u0000\u1677\u1678\u0007\u0005\u0000\u0000\u1678\u1679\u0007"+ + "\r\u0000\u0000\u1679\u167a\u0007\t\u0000\u0000\u167a\u167b\u0007\n\u0000"+ + "\u0000\u167b\u167c\u0005_\u0000\u0000\u167c\u167d\u0007\u0011\u0000\u0000"+ + "\u167d\u167e\u0007\f\u0000\u0000\u167e\u167f\u0007\n\u0000\u0000\u167f"+ + "\u1680\u0007\u0007\u0000\u0000\u1680\u1681\u0007\u0010\u0000\u0000\u1681"+ + "\u04a8\u0001\u0000\u0000\u0000\u1682\u1683\u0007\u0018\u0000\u0000\u1683"+ + "\u1684\u0007\u0017\u0000\u0000\u1684\u1685\u0005_\u0000\u0000\u1685\u1686"+ + "\u0007\u000e\u0000\u0000\u1686\u1687\u0007\u0006\u0000\u0000\u1687\u1688"+ + "\u0007\u0011\u0000\u0000\u1688\u1689\u0007\n\u0000\u0000\u1689\u168a\u0007"+ + "\u0007\u0000\u0000\u168a\u168b\u0007\u0010\u0000\u0000\u168b\u168c\u0005"+ + "_\u0000\u0000\u168c\u168d\u0007\n\u0000\u0000\u168d\u168e\u0007\u0007"+ + "\u0000\u0000\u168e\u168f\u0007\u000e\u0000\u0000\u168f\u1690\u0007\u0013"+ + "\u0000\u0000\u1690\u1691\u0007\f\u0000\u0000\u1691\u1692\u0007\u0011\u0000"+ + "\u0000\u1692\u1693\u0007\u0007\u0000\u0000\u1693\u1694\u0007\u0017\u0000"+ + "\u0000\u1694\u04aa\u0001\u0000\u0000\u0000\u1695\u1696\u0007\u001d\u0000"+ + "\u0000\u1696\u1697\u0007\u0016\u0000\u0000\u1697\u1698\u0007\u0013\u0000"+ + "\u0000\u1698\u1699\u0007\u0010\u0000\u0000\u1699\u169a\u0007\n\u0000\u0000"+ + "\u169a\u169b\u0005_\u0000\u0000\u169b\u169c\u0007\u0011\u0000\u0000\u169c"+ + "\u169d\u0007\f\u0000\u0000\u169d\u169e\u0007\n\u0000\u0000\u169e\u169f"+ + "\u0007\u0007\u0000\u0000\u169f\u16a0\u0007\u0010\u0000\u0000\u16a0\u04ac"+ + "\u0001\u0000\u0000\u0000\u16a1\u16a2\u0007\u001d\u0000\u0000\u16a2\u16a3"+ + "\u0007\u0016\u0000\u0000\u16a3\u16a4\u0007\u0013\u0000\u0000\u16a4\u16a5"+ + "\u0007\u0010\u0000\u0000\u16a5\u16a6\u0007\n\u0000\u0000\u16a6\u16a7\u0005"+ + "_\u0000\u0000\u16a7\u16a8\u0007\u0006\u0000\u0000\u16a8\u16a9\u0007\u0011"+ + "\u0000\u0000\u16a9\u16aa\u0007\u0010\u0000\u0000\u16aa\u16ab\u0007\n\u0000"+ + "\u0000\u16ab\u16ac\u0007\r\u0000\u0000\u16ac\u16ad\u0007\u0005\u0000\u0000"+ + "\u16ad\u16ae\u0007\u0006\u0000\u0000\u16ae\u04ae\u0001\u0000\u0000\u0000"+ + "\u16af\u16b0\u0007\u001d\u0000\u0000\u16b0\u16b1\u0007\u0016\u0000\u0000"+ + "\u16b1\u16b2\u0007\u0013\u0000\u0000\u16b2\u16b3\u0007\u0010\u0000\u0000"+ + "\u16b3\u16b4\u0007\n\u0000\u0000\u16b4\u16b5\u0005_\u0000\u0000\u16b5"+ + "\u16b6\u0007\u0007\u0000\u0000\u16b6\u16b7\u0007\u0016\u0000\u0000\u16b7"+ + "\u16b8\u0007\u0006\u0000\u0000\u16b8\u16b9\u0007\u0006\u0000\u0000\u16b9"+ + "\u16ba\u0007\u0005\u0000\u0000\u16ba\u16bb\u0007\u0012\u0000\u0000\u16bb"+ + "\u16bc\u0007\u0006\u0000\u0000\u16bc\u16bd\u0007\n\u0000\u0000\u16bd\u04b0"+ + "\u0001\u0000\u0000\u0000\u16be\u16bf\u0007\r\u0000\u0000\u16bf\u16c0\u0007"+ + "\n\u0000\u0000\u16c0\u16c1\u0007\u0017\u0000\u0000\u16c1\u16c2\u0007\n"+ + "\u0000\u0000\u16c2\u16c3\u0007\u001a\u0000\u0000\u16c3\u16c4\u0007\u0018"+ + "\u0000\u0000\u16c4\u16c5\u0005_\u0000\u0000\u16c5\u16c6\u0007\u000e\u0000"+ + "\u0000\u16c6\u16c7\u0007\u0013\u0000\u0000\u16c7\u16c8\u0007\u0016\u0000"+ + "\u0000\u16c8\u16c9\u0007\u0007\u0000\u0000\u16c9\u16ca\u0007\u0010\u0000"+ + "\u0000\u16ca\u04b2\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"+ + "\u0011\u0000\u0000\u16d3\u16d4\u0007\u0007\u0000\u0000\u16d4\u16d5\u0007"+ + "\t\u0000\u0000\u16d5\u16d6\u0007\u0010\u0000\u0000\u16d6\u16d7\u0007\r"+ + "\u0000\u0000\u16d7\u04b4\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\u0006\u0000\u0000\u16e0\u16e1\u0007\u0011\u0000\u0000\u16e1\u16e2"+ + "\u0007\u0015\u0000\u0000\u16e2\u16e3\u0007\n\u0000\u0000\u16e3\u04b6\u0001"+ + "\u0000\u0000\u0000\u16e4\u16e5\u0007\r\u0000\u0000\u16e5\u16e6\u0007\n"+ + "\u0000\u0000\u16e6\u16e7\u0007\u0017\u0000\u0000\u16e7\u16e8\u0007\n\u0000"+ + "\u0000\u16e8\u16e9\u0007\u001a\u0000\u0000\u16e9\u16ea\u0007\u0018\u0000"+ + "\u0000\u16ea\u16eb\u0005_\u0000\u0000\u16eb\u16ec\u0007\u000f\u0000\u0000"+ + "\u16ec\u16ed\u0007\u0005\u0000\u0000\u16ed\u16ee\u0007\u0010\u0000\u0000"+ + "\u16ee\u16ef\u0007\u000e\u0000\u0000\u16ef\u16f0\u0007\u0014\u0000\u0000"+ + "\u16f0\u04b8\u0001\u0000\u0000\u0000\u16f1\u16f2\u0007\r\u0000\u0000\u16f2"+ + "\u16f3\u0007\n\u0000\u0000\u16f3\u16f4\u0007\u0017\u0000\u0000\u16f4\u16f5"+ + "\u0007\n\u0000\u0000\u16f5\u16f6\u0007\u001a\u0000\u0000\u16f6\u16f7\u0007"+ + "\u0018\u0000\u0000\u16f7\u16f8\u0005_\u0000\u0000\u16f8\u16f9\u0007\u000f"+ + "\u0000\u0000\u16f9\u16fa\u0007\u0005\u0000\u0000\u16fa\u16fb\u0007\u0010"+ + "\u0000\u0000\u16fb\u16fc\u0007\u000e\u0000\u0000\u16fc\u16fd\u0007\u0014"+ + "\u0000\u0000\u16fd\u16fe\u0007\n\u0000\u0000\u16fe\u16ff\u0007\t\u0000"+ + "\u0000\u16ff\u04ba\u0001\u0000\u0000\u0000\u1700\u1701\u0007\r\u0000\u0000"+ + "\u1701\u1702\u0007\n\u0000\u0000\u1702\u1703\u0007\u0017\u0000\u0000\u1703"+ + "\u1704\u0007\n\u0000\u0000\u1704\u1705\u0007\u001a\u0000\u0000\u1705\u1706"+ + "\u0007\u0018\u0000\u0000\u1706\u1707\u0005_\u0000\u0000\u1707\u1708\u0007"+ + "\r\u0000\u0000\u1708\u1709\u0007\n\u0000\u0000\u1709\u170a\u0007\u0018"+ + "\u0000\u0000\u170a\u170b\u0007\u0006\u0000\u0000\u170b\u170c\u0007\u0005"+ + "\u0000\u0000\u170c\u170d\u0007\u000e\u0000\u0000\u170d\u170e\u0007\n\u0000"+ + "\u0000\u170e\u04bc\u0001\u0000\u0000\u0000\u170f\u1710\u0007\r\u0000\u0000"+ + "\u1710\u1711\u0007\n\u0000\u0000\u1711\u1712\u0007\u0017\u0000\u0000\u1712"+ + "\u1713\u0007\n\u0000\u0000\u1713\u1714\u0007\u001a\u0000\u0000\u1714\u1715"+ + "\u0007\u0018\u0000\u0000\u1715\u1716\u0005_\u0000\u0000\u1716\u1717\u0007"+ + "\t\u0000\u0000\u1717\u1718\u0007\u0018\u0000\u0000\u1718\u1719\u0007\u0006"+ + "\u0000\u0000\u1719\u171a\u0007\u0011\u0000\u0000\u171a\u171b\u0007\u0010"+ + "\u0000\u0000\u171b\u171c\u0005_\u0000\u0000\u171c\u171d\u0007\u0010\u0000"+ + "\u0000\u171d\u171e\u0007\u0013\u0000\u0000\u171e\u171f\u0005_\u0000\u0000"+ + "\u171f\u1720\u0007\u0005\u0000\u0000\u1720\u1721\u0007\r\u0000\u0000\u1721"+ + "\u1722\u0007\r\u0000\u0000\u1722\u1723\u0007\u0005\u0000\u0000\u1723\u1724"+ + "\u0007\b\u0000\u0000\u1724\u04be\u0001\u0000\u0000\u0000\u1725\u1726\u0007"+ + "\r\u0000\u0000\u1726\u1727\u0007\n\u0000\u0000\u1727\u1728\u0007\u0017"+ + "\u0000\u0000\u1728\u1729\u0007\n\u0000\u0000\u1729\u172a\u0007\u001a\u0000"+ + "\u0000\u172a\u172b\u0007\u0018\u0000\u0000\u172b\u172c\u0005_\u0000\u0000"+ + "\u172c\u172d\u0007\t\u0000\u0000\u172d\u172e\u0007\u0018\u0000\u0000\u172e"+ + "\u172f\u0007\u0006\u0000\u0000\u172f\u1730\u0007\u0011\u0000\u0000\u1730"+ + "\u1731\u0007\u0010\u0000\u0000\u1731\u1732\u0005_\u0000\u0000\u1732\u1733"+ + "\u0007\u0010\u0000\u0000\u1733\u1734\u0007\u0013\u0000\u0000\u1734\u1735"+ + "\u0005_\u0000\u0000\u1735\u1736\u0007\u0010\u0000\u0000\u1736\u1737\u0007"+ + "\u0005\u0000\u0000\u1737\u1738\u0007\u0012\u0000\u0000\u1738\u1739\u0007"+ + "\u0006\u0000\u0000\u1739\u173a\u0007\n\u0000\u0000\u173a\u04c0\u0001\u0000"+ + "\u0000\u0000\u173b\u173c\u0007\r\u0000\u0000\u173c\u173d\u0007\n\u0000"+ + "\u0000\u173d\u173e\u0007\u0017\u0000\u0000\u173e\u173f\u0007\n\u0000\u0000"+ + "\u173f\u1740\u0007\u001a\u0000\u0000\u1740\u1741\u0007\u0018\u0000\u0000"+ + "\u1741\u1742\u0005_\u0000\u0000\u1742\u1743\u0007\t\u0000\u0000\u1743"+ + "\u1744\u0007\u0016\u0000\u0000\u1744\u1745\u0007\u0012\u0000\u0000\u1745"+ + "\u1746\u0007\t\u0000\u0000\u1746\u1747\u0007\u0010\u0000\u0000\u1747\u1748"+ + "\u0007\r\u0000\u0000\u1748\u04c2\u0001\u0000\u0000\u0000\u1749\u174a\u0007"+ + "\r\u0000\u0000\u174a\u174b\u0007\n\u0000\u0000\u174b\u174c\u0007\u0018"+ + "\u0000\u0000\u174c\u174d\u0007\n\u0000\u0000\u174d\u174e\u0007\u0005\u0000"+ + "\u0000\u174e\u174f\u0007\u0010\u0000\u0000\u174f\u04c4\u0001\u0000\u0000"+ + "\u0000\u1750\u1751\u0007\r\u0000\u0000\u1751\u1752\u0007\u0018\u0000\u0000"+ + "\u1752\u1753\u0007\u0005\u0000\u0000\u1753\u1754\u0007\f\u0000\u0000\u1754"+ + "\u04c6\u0001\u0000\u0000\u0000\u1755\u1756\u0007\r\u0000\u0000\u1756\u1757"+ + "\u0007\u0010\u0000\u0000\u1757\u1758\u0007\r\u0000\u0000\u1758\u1759\u0007"+ + "\u0011\u0000\u0000\u1759\u175a\u0007\u000f\u0000\u0000\u175a\u04c8\u0001"+ + "\u0000\u0000\u0000\u175b\u175c\u0007\t\u0000\u0000\u175c\u175d\u0007\u0018"+ + "\u0000\u0000\u175d\u175e\u0007\u0006\u0000\u0000\u175e\u175f\u0007\u0011"+ + "\u0000\u0000\u175f\u1760\u0007\u0010\u0000\u0000\u1760\u1761\u0005_\u0000"+ + "\u0000\u1761\u1762\u0007\u0018\u0000\u0000\u1762\u1763\u0007\u0005\u0000"+ + "\u0000\u1763\u1764\u0007\r\u0000\u0000\u1764\u1765\u0007\u0010\u0000\u0000"+ + "\u1765\u04ca\u0001\u0000\u0000\u0000\u1766\u1767\u0007\t\u0000\u0000\u1767"+ + "\u1768\u0007\u0010\u0000\u0000\u1768\u1769\u0007\u0005\u0000\u0000\u1769"+ + "\u176a\u0007\r\u0000\u0000\u176a\u176b\u0007\u0010\u0000\u0000\u176b\u176c"+ + "\u0007\t\u0000\u0000\u176c\u176d\u0005_\u0000\u0000\u176d\u176e\u0007"+ + "\u001c\u0000\u0000\u176e\u176f\u0007\u0011\u0000\u0000\u176f\u1770\u0007"+ + "\u0010\u0000\u0000\u1770\u1771\u0007\u0014\u0000\u0000\u1771\u04cc\u0001"+ + "\u0000\u0000\u0000\u1772\u1773\u0007\t\u0000\u0000\u1773\u1774\u0007\u0010"+ + "\u0000\u0000\u1774\u1775\u0007\r\u0000\u0000\u1775\u1776\u0007\u0011\u0000"+ + "\u0000\u1776\u1777\u0007\u0007\u0000\u0000\u1777\u1778\u0007\u0017\u0000"+ + "\u0000\u1778\u1779\u0005_\u0000\u0000\u1779\u177a\u0007\u0010\u0000\u0000"+ + "\u177a\u177b\u0007\u0013\u0000\u0000\u177b\u177c\u0005_\u0000\u0000\u177c"+ + "\u177d\u0007\u0005\u0000\u0000\u177d\u177e\u0007\r\u0000\u0000\u177e\u177f"+ + "\u0007\r\u0000\u0000\u177f\u1780\u0007\u0005\u0000\u0000\u1780\u1781\u0007"+ + "\b\u0000\u0000\u1781\u04ce\u0001\u0000\u0000\u0000\u1782\u1783\u0007\t"+ + "\u0000\u0000\u1783\u1784\u0007\u0010\u0000\u0000\u1784\u1785\u0007\r\u0000"+ + "\u0000\u1785\u1786\u0007\u0011\u0000\u0000\u1786\u1787\u0007\u0007\u0000"+ + "\u0000\u1787\u1788\u0007\u0017\u0000\u0000\u1788\u1789\u0005_\u0000\u0000"+ + "\u1789\u178a\u0007\u0010\u0000\u0000\u178a\u178b\u0007\u0013\u0000\u0000"+ + "\u178b\u178c\u0005_\u0000\u0000\u178c\u178d\u0007\u0010\u0000\u0000\u178d"+ + "\u178e\u0007\u0005\u0000\u0000\u178e\u178f\u0007\u0012\u0000\u0000\u178f"+ + "\u1790\u0007\u0006\u0000\u0000\u1790\u1791\u0007\n\u0000\u0000\u1791\u04d0"+ + "\u0001\u0000\u0000\u0000\u1792\u1793\u0007\t\u0000\u0000\u1793\u1794\u0007"+ + "\u0010\u0000\u0000\u1794\u1795\u0007\r\u0000\u0000\u1795\u1796\u0007\u0018"+ + "\u0000\u0000\u1796\u1797\u0007\u0013\u0000\u0000\u1797\u1798\u0007\t\u0000"+ + "\u0000\u1798\u04d2\u0001\u0000\u0000\u0000\u1799\u179a\u0007\t\u0000\u0000"+ + "\u179a\u179b\u0007\u0016\u0000\u0000\u179b\u179c\u0007\u0012\u0000\u0000"+ + "\u179c\u179d\u0007\t\u0000\u0000\u179d\u179e\u0007\u0010\u0000\u0000\u179e"+ + "\u179f\u0007\r\u0000\u0000\u179f\u04d4\u0001\u0000\u0000\u0000\u17a0\u17a1"+ + "\u0007\u0010\u0000\u0000\u17a1\u17a2\u0007\u0013\u0000\u0000\u17a2\u17a3"+ + "\u0005_\u0000\u0000\u17a3\u17a4\u0007\u0005\u0000\u0000\u17a4\u17a5\u0007"+ + "\t\u0000\u0000\u17a5\u17a6\u0007\u000e\u0000\u0000\u17a6\u17a7\u0007\u0011"+ + "\u0000\u0000\u17a7\u17a8\u0007\u0011\u0000\u0000\u17a8\u04d6\u0001\u0000"+ + "\u0000\u0000\u17a9\u17aa\u0007\u0010\u0000\u0000\u17aa\u17ab\u0007\u0013"+ + "\u0000\u0000\u17ab\u17ac\u0005_\u0000\u0000\u17ac\u17ad\u0007\u0014\u0000"+ + "\u0000\u17ad\u17ae\u0007\n\u0000\u0000\u17ae\u17af\u0007\u001a\u0000\u0000"+ + "\u17af\u04d8\u0001\u0000\u0000\u0000\u17b0\u17b1\u0007\u0010\u0000\u0000"+ + "\u17b1\u17b2\u0007\r\u0000\u0000\u17b2\u17b3\u0007\u0005\u0000\u0000\u17b3"+ + "\u17b4\u0007\u0007\u0000\u0000\u17b4\u17b5\u0007\t\u0000\u0000\u17b5\u17b6"+ + "\u0007\u0006\u0000\u0000\u17b6\u17b7\u0007\u0005\u0000\u0000\u17b7\u17b8"+ + "\u0007\u0010\u0000\u0000\u17b8\u17b9\u0007\n\u0000\u0000\u17b9\u04da\u0001"+ + "\u0000\u0000\u0000\u17ba\u17bb\u0007\u0016\u0000\u0000\u17bb\u17bc\u0007"+ + "\u0007\u0000\u0000\u17bc\u17bd\u0007\u0011\u0000\u0000\u17bd\u17be\u0007"+ + "\t\u0000\u0000\u17be\u17bf\u0007\u0010\u0000\u0000\u17bf\u17c0\u0007\r"+ + "\u0000\u0000\u17c0\u04dc\u0001\u0000\u0000\u0000\u17c1\u17c2\u0007\u0005"+ + "\u0000\u0000\u17c2\u17c3\u0007\u0017\u0000\u0000\u17c3\u17c4\u0007\n\u0000"+ + "\u0000\u17c4\u04de\u0001\u0000\u0000\u0000\u17c5\u17c6\u0007\u000e\u0000"+ + "\u0000\u17c6\u17c7\u0007\u0006\u0000\u0000\u17c7\u17c8\u0007\u0013\u0000"+ + "\u0000\u17c8\u17c9\u0007\u000e\u0000\u0000\u17c9\u17ca\u0007\u0015\u0000"+ + "\u0000\u17ca\u17cb\u0005_\u0000\u0000\u17cb\u17cc\u0007\u0010\u0000\u0000"+ + "\u17cc\u17cd\u0007\u0011\u0000\u0000\u17cd\u17ce\u0007\u000f\u0000\u0000"+ + "\u17ce\u17cf\u0007\n\u0000\u0000\u17cf\u17d0\u0007\t\u0000\u0000\u17d0"+ + "\u17d1\u0007\u0010\u0000\u0000\u17d1\u17d2\u0007\u0005\u0000\u0000\u17d2"+ + "\u17d3\u0007\u000f\u0000\u0000\u17d3\u17d4\u0007\u0018\u0000\u0000\u17d4"+ + "\u04e0\u0001\u0000\u0000\u0000\u17d5\u17d6\u0007\f\u0000\u0000\u17d6\u17d7"+ + "\u0007\u0005\u0000\u0000\u17d7\u17d8\u0007\u0010\u0000\u0000\u17d8\u17d9"+ + "\u0007\n\u0000\u0000\u17d9\u17da\u0005_\u0000\u0000\u17da\u17db\u0007"+ + "\u0012\u0000\u0000\u17db\u17dc\u0007\u0011\u0000\u0000\u17dc\u17dd\u0007"+ + "\u0007\u0000\u0000\u17dd\u04e2\u0001\u0000\u0000\u0000\u17de\u17df\u0007"+ + "\f\u0000\u0000\u17df\u17e0\u0007\u0005\u0000\u0000\u17e0\u17e1\u0007\u0010"+ + "\u0000\u0000\u17e1\u17e2\u0007\n\u0000\u0000\u17e2\u17e3\u0005_\u0000"+ + "\u0000\u17e3\u17e4\u0007\u0018\u0000\u0000\u17e4\u17e5\u0007\u0005\u0000"+ + "\u0000\u17e5\u17e6\u0007\r\u0000\u0000\u17e6\u17e7\u0007\u0010\u0000\u0000"+ + "\u17e7\u04e4\u0001\u0000\u0000\u0000\u17e8\u17e9\u0007\f\u0000\u0000\u17e9"+ + "\u17ea\u0007\u0005\u0000\u0000\u17ea\u17eb\u0007\u0010\u0000\u0000\u17eb"+ + "\u17ec\u0007\n\u0000\u0000\u17ec\u17ed\u0005_\u0000\u0000\u17ed\u17ee"+ + "\u0007\u0010\u0000\u0000\u17ee\u17ef\u0007\r\u0000\u0000\u17ef\u17f0\u0007"+ + "\u0016\u0000\u0000\u17f0\u17f1\u0007\u0007\u0000\u0000\u17f1\u17f2\u0007"+ + "\u000e\u0000\u0000\u17f2\u04e6\u0001\u0000\u0000\u0000\u17f3\u17f4\u0007"+ + "\u0011\u0000\u0000\u17f4\u17f5\u0007\t\u0000\u0000\u17f5\u17f6\u0007\u0019"+ + "\u0000\u0000\u17f6\u17f7\u0007\u0011\u0000\u0000\u17f7\u17f8\u0007\u0007"+ + "\u0000\u0000\u17f8\u17f9\u0007\u0011\u0000\u0000\u17f9\u17fa\u0007\u0010"+ + "\u0000\u0000\u17fa\u17fb\u0007\n\u0000\u0000\u17fb\u04e8\u0001\u0000\u0000"+ + "\u0000\u17fc\u17fd\u0007\u001e\u0000\u0000\u17fd\u17fe\u0007\u0016\u0000"+ + "\u0000\u17fe\u17ff\u0007\t\u0000\u0000\u17ff\u1800\u0007\u0010\u0000\u0000"+ + "\u1800\u1801\u0007\u0011\u0000\u0000\u1801\u1802\u0007\u0019\u0000\u0000"+ + "\u1802\u1803\u0007\b\u0000\u0000\u1803\u1804\u0005_\u0000\u0000\u1804"+ + "\u1805\u0007\f\u0000\u0000\u1805\u1806\u0007\u0005\u0000\u0000\u1806\u1807"+ + "\u0007\b\u0000\u0000\u1807\u1808\u0007\t\u0000\u0000\u1808\u04ea\u0001"+ + "\u0000\u0000\u0000\u1809\u180a\u0007\u001e\u0000\u0000\u180a\u180b\u0007"+ + "\u0016\u0000\u0000\u180b\u180c\u0007\t\u0000\u0000\u180c\u180d\u0007\u0010"+ + "\u0000\u0000\u180d\u180e\u0007\u0011\u0000\u0000\u180e\u180f\u0007\u0019"+ + "\u0000\u0000\u180f\u1810\u0007\b\u0000\u0000\u1810\u1811\u0005_\u0000"+ + "\u0000\u1811\u1812\u0007\u0014\u0000\u0000\u1812\u1813\u0007\u0013\u0000"+ + "\u0000\u1813\u1814\u0007\u0016\u0000\u0000\u1814\u1815\u0007\r\u0000\u0000"+ + "\u1815\u1816\u0007\t\u0000\u0000\u1816\u04ec\u0001\u0000\u0000\u0000\u1817"+ + "\u1818\u0007\u001e\u0000\u0000\u1818\u1819\u0007\u0016\u0000\u0000\u1819"+ + "\u181a\u0007\t\u0000\u0000\u181a\u181b\u0007\u0010\u0000\u0000\u181b\u181c"+ + "\u0007\u0011\u0000\u0000\u181c\u181d\u0007\u0019\u0000\u0000\u181d\u181e"+ + "\u0007\b\u0000\u0000\u181e\u181f\u0005_\u0000\u0000\u181f\u1820\u0007"+ + "\u0011\u0000\u0000\u1820\u1821\u0007\u0007\u0000\u0000\u1821\u1822\u0007"+ + "\u0010\u0000\u0000\u1822\u1823\u0007\n\u0000\u0000\u1823\u1824\u0007\r"+ + "\u0000\u0000\u1824\u1825\u0007\u001b\u0000\u0000\u1825\u1826\u0007\u0005"+ + "\u0000\u0000\u1826\u1827\u0007\u0006\u0000\u0000\u1827\u04ee\u0001\u0000"+ + "\u0000\u0000\u1828\u1829\u0007\u000f\u0000\u0000\u1829\u182a\u0007\u0005"+ + "\u0000\u0000\u182a\u182b\u0007\u0015\u0000\u0000\u182b\u182c\u0007\n\u0000"+ + "\u0000\u182c\u182d\u0005_\u0000\u0000\u182d\u182e\u0007\f\u0000\u0000"+ + "\u182e\u182f\u0007\u0005\u0000\u0000\u182f\u1830\u0007\u0010\u0000\u0000"+ + "\u1830\u1831\u0007\n\u0000\u0000\u1831\u04f0\u0001\u0000\u0000\u0000\u1832"+ + "\u1833\u0007\u000f\u0000\u0000\u1833\u1834\u0007\u0005\u0000\u0000\u1834"+ + "\u1835\u0007\u0015\u0000\u0000\u1835\u1836\u0007\n\u0000\u0000\u1836\u1837"+ + "\u0005_\u0000\u0000\u1837\u1838\u0007\u0011\u0000\u0000\u1838\u1839\u0007"+ + "\u0007\u0000\u0000\u1839\u183a\u0007\u0010\u0000\u0000\u183a\u183b\u0007"+ + "\n\u0000\u0000\u183b\u183c\u0007\r\u0000\u0000\u183c\u183d\u0007\u001b"+ + "\u0000\u0000\u183d\u183e\u0007\u0005\u0000\u0000\u183e\u183f\u0007\u0006"+ + "\u0000\u0000\u183f\u04f2\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\u04f4\u0001\u0000\u0000\u0000\u184a\u184b\u0007\u000f\u0000\u0000"+ + "\u184b\u184c\u0007\u0005\u0000\u0000\u184c\u184d\u0007\u0015\u0000\u0000"+ + "\u184d\u184e\u0007\n\u0000\u0000\u184e\u184f\u0005_\u0000\u0000\u184f"+ + "\u1850\u0007\u0010\u0000\u0000\u1850\u1851\u0007\u0011\u0000\u0000\u1851"+ + "\u1852\u0007\u000f\u0000\u0000\u1852\u1853\u0007\n\u0000\u0000\u1853\u1854"+ + "\u0007\t\u0000\u0000\u1854\u1855\u0007\u0010\u0000\u0000\u1855\u1856\u0007"+ + "\u0005\u0000\u0000\u1856\u1857\u0007\u000f\u0000\u0000\u1857\u1858\u0007"+ + "\u0018\u0000\u0000\u1858\u04f6\u0001\u0000\u0000\u0000\u1859\u185a\u0007"+ + "\u000f\u0000\u0000\u185a\u185b\u0007\u0005\u0000\u0000\u185b\u185c\u0007"+ + "\u0015\u0000\u0000\u185c\u185d\u0007\n\u0000\u0000\u185d\u185e\u0005_"+ + "\u0000\u0000\u185e\u185f\u0007\u0010\u0000\u0000\u185f\u1860\u0007\u0011"+ + "\u0000\u0000\u1860\u1861\u0007\u000f\u0000\u0000\u1861\u1862\u0007\n\u0000"+ + "\u0000\u1862\u1863\u0007\t\u0000\u0000\u1863\u1864\u0007\u0010\u0000\u0000"+ + "\u1864\u1865\u0007\u0005\u0000\u0000\u1865\u1866\u0007\u000f\u0000\u0000"+ + "\u1866\u1867\u0007\u0018\u0000\u0000\u1867\u1868\u0007\u0010\u0000\u0000"+ + "\u1868\u1869\u0007\u000b\u0000\u0000\u1869\u04f8\u0001\u0000\u0000\u0000"+ + "\u186a\u186b\u0007\u0007\u0000\u0000\u186b\u186c\u0007\u0013\u0000\u0000"+ + "\u186c\u186d\u0007\u001c\u0000\u0000\u186d\u04fa\u0001\u0000\u0000\u0000"+ + "\u186e\u186f\u0007\t\u0000\u0000\u186f\u1870\u0007\u0010\u0000\u0000\u1870"+ + "\u1871\u0007\u0005\u0000\u0000\u1871\u1872\u0007\u0010\u0000\u0000\u1872"+ + "\u1873\u0007\n\u0000\u0000\u1873\u1874\u0007\u000f\u0000\u0000\u1874\u1875"+ + "\u0007\n\u0000\u0000\u1875\u1876\u0007\u0007\u0000\u0000\u1876\u1877\u0007"+ + "\u0010\u0000\u0000\u1877\u1878\u0005_\u0000\u0000\u1878\u1879\u0007\u0010"+ + "\u0000\u0000\u1879\u187a\u0007\u0011\u0000\u0000\u187a\u187b\u0007\u000f"+ + "\u0000\u0000\u187b\u187c\u0007\n\u0000\u0000\u187c\u187d\u0007\t\u0000"+ + "\u0000\u187d\u187e\u0007\u0010\u0000\u0000\u187e\u187f\u0007\u0005\u0000"+ + "\u0000\u187f\u1880\u0007\u000f\u0000\u0000\u1880\u1881\u0007\u0018\u0000"+ + "\u0000\u1881\u04fc\u0001\u0000\u0000\u0000\u1882\u1883\u0007\u0010\u0000"+ + "\u0000\u1883\u1884\u0007\u0011\u0000\u0000\u1884\u1885\u0007\u000f\u0000"+ + "\u0000\u1885\u1886\u0007\n\u0000\u0000\u1886\u1887\u0007\u0013\u0000\u0000"+ + "\u1887\u1888\u0007\u0019\u0000\u0000\u1888\u1889\u0007\f\u0000\u0000\u1889"+ + "\u188a\u0007\u0005\u0000\u0000\u188a\u188b\u0007\b\u0000\u0000\u188b\u04fe"+ + "\u0001\u0000\u0000\u0000\u188c\u188d\u0007\u0010\u0000\u0000\u188d\u188e"+ + "\u0007\r\u0000\u0000\u188e\u188f\u0007\u0005\u0000\u0000\u188f\u1890\u0007"+ + "\u0007\u0000\u0000\u1890\u1891\u0007\t\u0000\u0000\u1891\u1892\u0007\u0005"+ + "\u0000\u0000\u1892\u1893\u0007\u000e\u0000\u0000\u1893\u1894\u0007\u0010"+ + "\u0000\u0000\u1894\u1895\u0007\u0011\u0000\u0000\u1895\u1896\u0007\u0013"+ + "\u0000\u0000\u1896\u1897\u0007\u0007\u0000\u0000\u1897\u1898\u0005_\u0000"+ + "\u0000\u1898\u1899\u0007\u0010\u0000\u0000\u1899\u189a\u0007\u0011\u0000"+ + "\u0000\u189a\u189b\u0007\u000f\u0000\u0000\u189b\u189c\u0007\n\u0000\u0000"+ + "\u189c\u189d\u0007\t\u0000\u0000\u189d\u189e\u0007\u0010\u0000\u0000\u189e"+ + "\u189f\u0007\u0005\u0000\u0000\u189f\u18a0\u0007\u000f\u0000\u0000\u18a0"+ + "\u18a1\u0007\u0018\u0000\u0000\u18a1\u0500\u0001\u0000\u0000\u0000\u18a2"+ + "\u18a3\u0007\u0010\u0000\u0000\u18a3\u18a4\u0007\u0013\u0000\u0000\u18a4"+ + "\u18a5\u0005_\u0000\u0000\u18a5\u18a6\u0007\u0010\u0000\u0000\u18a6\u18a7"+ + "\u0007\u0011\u0000\u0000\u18a7\u18a8\u0007\u000f\u0000\u0000\u18a8\u18a9"+ + "\u0007\n\u0000\u0000\u18a9\u18aa\u0007\t\u0000\u0000\u18aa\u18ab\u0007"+ + "\u0010\u0000\u0000\u18ab\u18ac\u0007\u0005\u0000\u0000\u18ac\u18ad\u0007"+ + "\u000f\u0000\u0000\u18ad\u18ae\u0007\u0018\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\u000e"+ + "\u0000\u0000\u18b3\u18b4\u0007\u0014\u0000\u0000\u18b4\u18b5\u0007\u0005"+ + "\u0000\u0000\u18b5\u18b6\u0007\r\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\f\u0000\u0000"+ + "\u18bb\u18bc\u0007\u0005\u0000\u0000\u18bc\u18bd\u0007\u0010\u0000\u0000"+ + "\u18bd\u18be\u0007\n\u0000\u0000\u18be\u0506\u0001\u0000\u0000\u0000\u18bf"+ + "\u18c0\u0007\u0010\u0000\u0000\u18c0\u18c1\u0007\u0013\u0000\u0000\u18c1"+ + "\u18c2\u0005_\u0000\u0000\u18c2\u18c3\u0007\u0007\u0000\u0000\u18c3\u18c4"+ + "\u0007\u0016\u0000\u0000\u18c4\u18c5\u0007\u000f\u0000\u0000\u18c5\u18c6"+ + "\u0007\u0012\u0000\u0000\u18c6\u18c7\u0007\n\u0000\u0000\u18c7\u18c8\u0007"+ + "\r\u0000\u0000\u18c8\u0508\u0001\u0000\u0000\u0000\u18c9\u18cd\u0003\u050b"+ + "\u0283\u0000\u18ca\u18cc\u0003\u050d\u0284\u0000\u18cb\u18ca\u0001\u0000"+ + "\u0000\u0000\u18cc\u18cf\u0001\u0000\u0000\u0000\u18cd\u18cb\u0001\u0000"+ + "\u0000\u0000\u18cd\u18ce\u0001\u0000\u0000\u0000\u18ce\u050a\u0001\u0000"+ + "\u0000\u0000\u18cf\u18cd\u0001\u0000\u0000\u0000\u18d0\u18d7\u0007\u001f"+ + "\u0000\u0000\u18d1\u18d2\u0007 \u0000\u0000\u18d2\u18d7\u0004\u0283\u0006"+ + "\u0000\u18d3\u18d4\u0007!\u0000\u0000\u18d4\u18d5\u0007\"\u0000\u0000"+ + "\u18d5\u18d7\u0004\u0283\u0007\u0000\u18d6\u18d0\u0001\u0000\u0000\u0000"+ + "\u18d6\u18d1\u0001\u0000\u0000\u0000\u18d6\u18d3\u0001\u0000\u0000\u0000"+ + "\u18d7\u050c\u0001\u0000\u0000\u0000\u18d8\u18db\u0003\u050f\u0285\u0000"+ + "\u18d9\u18db\u0005$\u0000\u0000\u18da\u18d8\u0001\u0000\u0000\u0000\u18da"+ + "\u18d9\u0001\u0000\u0000\u0000\u18db\u050e\u0001\u0000\u0000\u0000\u18dc"+ + "\u18df\u0003\u050b\u0283\u0000\u18dd\u18df\u0007\u0000\u0000\u0000\u18de"+ + "\u18dc\u0001\u0000\u0000\u0000\u18de\u18dd\u0001\u0000\u0000\u0000\u18df"+ + "\u0510\u0001\u0000\u0000\u0000\u18e0\u18e1\u0003\u0513\u0287\u0000\u18e1"+ + "\u18e2\u0005\"\u0000\u0000\u18e2\u0512\u0001\u0000\u0000\u0000\u18e3\u18e9"+ + "\u0005\"\u0000\u0000\u18e4\u18e5\u0005\"\u0000\u0000\u18e5\u18e8\u0005"+ + "\"\u0000\u0000\u18e6\u18e8\b#\u0000\u0000\u18e7\u18e4\u0001\u0000\u0000"+ + "\u0000\u18e7\u18e6\u0001\u0000\u0000\u0000\u18e8\u18eb\u0001\u0000\u0000"+ + "\u0000\u18e9\u18e7\u0001\u0000\u0000\u0000\u18e9\u18ea\u0001\u0000\u0000"+ + "\u0000\u18ea\u0514\u0001\u0000\u0000\u0000\u18eb\u18e9\u0001\u0000\u0000"+ + "\u0000\u18ec\u18ed\u0003\u0517\u0289\u0000\u18ed\u18ee\u0005\"\u0000\u0000"+ + "\u18ee\u0516\u0001\u0000\u0000\u0000\u18ef\u18f5\u0005\"\u0000\u0000\u18f0"+ + "\u18f1\u0005\"\u0000\u0000\u18f1\u18f4\u0005\"\u0000\u0000\u18f2\u18f4"+ + "\b$\u0000\u0000\u18f3\u18f0\u0001\u0000\u0000\u0000\u18f3\u18f2\u0001"+ + "\u0000\u0000\u0000\u18f4\u18f7\u0001\u0000\u0000\u0000\u18f5\u18f3\u0001"+ + "\u0000\u0000\u0000\u18f5\u18f6\u0001\u0000\u0000\u0000\u18f6\u0518\u0001"+ + "\u0000\u0000\u0000\u18f7\u18f5\u0001\u0000\u0000\u0000\u18f8\u18f9\u0007"+ + "\u0016\u0000\u0000\u18f9\u18fa\u0005&\u0000\u0000\u18fa\u18fb\u0003\u0511"+ + "\u0286\u0000\u18fb\u051a\u0001\u0000\u0000\u0000\u18fc\u18fd\u0007\u0016"+ + "\u0000\u0000\u18fd\u18fe\u0005&\u0000\u0000\u18fe\u18ff\u0003\u0513\u0287"+ + "\u0000\u18ff\u051c\u0001\u0000\u0000\u0000\u1900\u1901\u0007\u0016\u0000"+ + "\u0000\u1901\u1902\u0005&\u0000\u0000\u1902\u1903\u0003\u0515\u0288\u0000"+ + "\u1903\u051e\u0001\u0000\u0000\u0000\u1904\u1905\u0007\u0016\u0000\u0000"+ + "\u1905\u1906\u0005&\u0000\u0000\u1906\u1907\u0003\u0517\u0289\u0000\u1907"+ + "\u0520\u0001\u0000\u0000\u0000\u1908\u1909\u0003\u0523\u028f\u0000\u1909"+ + "\u190a\u0005\'\u0000\u0000\u190a\u0522\u0001\u0000\u0000\u0000\u190b\u1911"+ + "\u0005\'\u0000\u0000\u190c\u190d\u0005\'\u0000\u0000\u190d\u1910\u0005"+ + "\'\u0000\u0000\u190e\u1910\b%\u0000\u0000\u190f\u190c\u0001\u0000\u0000"+ + "\u0000\u190f\u190e\u0001\u0000\u0000\u0000\u1910\u1913\u0001\u0000\u0000"+ + "\u0000\u1911\u190f\u0001\u0000\u0000\u0000\u1911\u1912\u0001\u0000\u0000"+ + "\u0000\u1912\u0524\u0001\u0000\u0000\u0000\u1913\u1911\u0001\u0000\u0000"+ + "\u0000\u1914\u1915\u0007\n\u0000\u0000\u1915\u1916\u0005\'\u0000\u0000"+ + "\u1916\u1917\u0001\u0000\u0000\u0000\u1917\u1918\u0006\u0290\u0002\u0000"+ + "\u1918\u1919\u0006\u0290\u0003\u0000\u1919\u0526\u0001\u0000\u0000\u0000"+ + "\u191a\u191b\u0003\u0529\u0292\u0000\u191b\u191c\u0005\'\u0000\u0000\u191c"+ + "\u0528\u0001\u0000\u0000\u0000\u191d\u191e\u0007\u0016\u0000\u0000\u191e"+ + "\u191f\u0005&\u0000\u0000\u191f\u1920\u0003\u0523\u028f\u0000\u1920\u052a"+ + "\u0001\u0000\u0000\u0000\u1921\u1923\u0005$\u0000\u0000\u1922\u1924\u0003"+ + "\u052d\u0294\u0000\u1923\u1922\u0001\u0000\u0000\u0000\u1923\u1924\u0001"+ + "\u0000\u0000\u0000\u1924\u1925\u0001\u0000\u0000\u0000\u1925\u1926\u0005"+ + "$\u0000\u0000\u1926\u1927\u0006\u0293\u0004\u0000\u1927\u1928\u0001\u0000"+ + "\u0000\u0000\u1928\u1929\u0006\u0293\u0005\u0000\u1929\u052c\u0001\u0000"+ + "\u0000\u0000\u192a\u192e\u0003\u050b\u0283\u0000\u192b\u192d\u0003\u050f"+ + "\u0285\u0000\u192c\u192b\u0001\u0000\u0000\u0000\u192d\u1930\u0001\u0000"+ + "\u0000\u0000\u192e\u192c\u0001\u0000\u0000\u0000\u192e\u192f\u0001\u0000"+ + "\u0000\u0000\u192f\u052e\u0001\u0000\u0000\u0000\u1930\u192e\u0001\u0000"+ + "\u0000\u0000\u1931\u1932\u0003\u0531\u0296\u0000\u1932\u1933\u0005\'\u0000"+ + "\u0000\u1933\u0530\u0001\u0000\u0000\u0000\u1934\u1935\u0007\u0012\u0000"+ + "\u0000\u1935\u1939\u0005\'\u0000\u0000\u1936\u1938\u0007&\u0000\u0000"+ + "\u1937\u1936\u0001\u0000\u0000\u0000\u1938\u193b\u0001\u0000\u0000\u0000"+ + "\u1939\u1937\u0001\u0000\u0000\u0000\u1939\u193a\u0001\u0000\u0000\u0000"+ + "\u193a\u0532\u0001\u0000\u0000\u0000\u193b\u1939\u0001\u0000\u0000\u0000"+ + "\u193c\u193d\u0003\u0535\u0298\u0000\u193d\u193e\u0005\'\u0000\u0000\u193e"+ + "\u0534\u0001\u0000\u0000\u0000\u193f\u1940\u0007\u0012\u0000\u0000\u1940"+ + "\u1941\u0003\u0523\u028f\u0000\u1941\u0536\u0001\u0000\u0000\u0000\u1942"+ + "\u1943\u0003\u0539\u029a\u0000\u1943\u1944\u0005\'\u0000\u0000\u1944\u0538"+ + "\u0001\u0000\u0000\u0000\u1945\u1946\u0007\u001a\u0000\u0000\u1946\u194a"+ + "\u0005\'\u0000\u0000\u1947\u1949\u0007\'\u0000\u0000\u1948\u1947\u0001"+ + "\u0000\u0000\u0000\u1949\u194c\u0001\u0000\u0000\u0000\u194a\u1948\u0001"+ + "\u0000\u0000\u0000\u194a\u194b\u0001\u0000\u0000\u0000\u194b\u053a\u0001"+ + "\u0000\u0000\u0000\u194c\u194a\u0001\u0000\u0000\u0000\u194d\u194e\u0003"+ + "\u053d\u029c\u0000\u194e\u194f\u0005\'\u0000\u0000\u194f\u053c\u0001\u0000"+ + "\u0000\u0000\u1950\u1951\u0007\u001a\u0000\u0000\u1951\u1952\u0003\u0523"+ + "\u028f\u0000\u1952\u053e\u0001\u0000\u0000\u0000\u1953\u1954\u0003\u0545"+ + "\u02a0\u0000\u1954\u0540\u0001\u0000\u0000\u0000\u1955\u1956\u0003\u0545"+ + "\u02a0\u0000\u1956\u1957\u0005.\u0000\u0000\u1957\u1958\u0005.\u0000\u0000"+ + "\u1958\u1959\u0001\u0000\u0000\u0000\u1959\u195a\u0006\u029e\u0006\u0000"+ + "\u195a\u0542\u0001\u0000\u0000\u0000\u195b\u195c\u0003\u0545\u02a0\u0000"+ + "\u195c\u195e\u0005.\u0000\u0000\u195d\u195f\u0003\u0545\u02a0\u0000\u195e"+ + "\u195d\u0001\u0000\u0000\u0000\u195e\u195f\u0001\u0000\u0000\u0000\u195f"+ + "\u1965\u0001\u0000\u0000\u0000\u1960\u1962\u0007\n\u0000\u0000\u1961\u1963"+ + "\u0007\u0001\u0000\u0000\u1962\u1961\u0001\u0000\u0000\u0000\u1962\u1963"+ + "\u0001\u0000\u0000\u0000\u1963\u1964\u0001\u0000\u0000\u0000\u1964\u1966"+ + "\u0003\u0545\u02a0\u0000\u1965\u1960\u0001\u0000\u0000\u0000\u1965\u1966"+ + "\u0001\u0000\u0000\u0000\u1966\u1978\u0001\u0000\u0000\u0000\u1967\u1968"+ + "\u0005.\u0000\u0000\u1968\u196e\u0003\u0545\u02a0\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\u196f\u0003\u0545\u02a0\u0000\u196e\u1969\u0001\u0000"+ + "\u0000\u0000\u196e\u196f\u0001\u0000\u0000\u0000\u196f\u1978\u0001\u0000"+ + "\u0000\u0000\u1970\u1971\u0003\u0545\u02a0\u0000\u1971\u1973\u0007\n\u0000"+ + "\u0000\u1972\u1974\u0007\u0001\u0000\u0000\u1973\u1972\u0001\u0000\u0000"+ + "\u0000\u1973\u1974\u0001\u0000\u0000\u0000\u1974\u1975\u0001\u0000\u0000"+ + "\u0000\u1975\u1976\u0003\u0545\u02a0\u0000\u1976\u1978\u0001\u0000\u0000"+ + "\u0000\u1977\u195b\u0001\u0000\u0000\u0000\u1977\u1967\u0001\u0000\u0000"+ + "\u0000\u1977\u1970\u0001\u0000\u0000\u0000\u1978\u0544\u0001\u0000\u0000"+ + "\u0000\u1979\u197b\u0007\u0000\u0000\u0000\u197a\u1979\u0001\u0000\u0000"+ + "\u0000\u197b\u197c\u0001\u0000\u0000\u0000\u197c\u197a\u0001\u0000\u0000"+ + "\u0000\u197c\u197d\u0001\u0000\u0000\u0000\u197d\u0546\u0001\u0000\u0000"+ + "\u0000\u197e\u197f\u0005:\u0000\u0000\u197f\u1983\u0007(\u0000\u0000\u1980"+ + "\u1982\u0007)\u0000\u0000\u1981\u1980\u0001\u0000\u0000\u0000\u1982\u1985"+ + "\u0001\u0000\u0000\u0000\u1983\u1981\u0001\u0000\u0000\u0000\u1983\u1984"+ + "\u0001\u0000\u0000\u0000\u1984\u0548\u0001\u0000\u0000\u0000\u1985\u1983"+ + "\u0001\u0000\u0000\u0000\u1986\u1987\u0005:\u0000\u0000\u1987\u1988\u0005"+ + "\"\u0000\u0000\u1988\u1990\u0001\u0000\u0000\u0000\u1989\u198a\u0005\\"+ + "\u0000\u0000\u198a\u198f\t\u0000\u0000\u0000\u198b\u198c\u0005\"\u0000"+ + "\u0000\u198c\u198f\u0005\"\u0000\u0000\u198d\u198f\b*\u0000\u0000\u198e"+ + "\u1989\u0001\u0000\u0000\u0000\u198e\u198b\u0001\u0000\u0000\u0000\u198e"+ + "\u198d\u0001\u0000\u0000\u0000\u198f\u1992\u0001\u0000\u0000\u0000\u1990"+ + "\u198e\u0001\u0000\u0000\u0000\u1990\u1991\u0001\u0000\u0000\u0000\u1991"+ + "\u1993\u0001\u0000\u0000\u0000\u1992\u1990\u0001\u0000\u0000\u0000\u1993"+ + "\u1994\u0005\"\u0000\u0000\u1994\u054a\u0001\u0000\u0000\u0000\u1995\u1997"+ + "\u0007+\u0000\u0000\u1996\u1995\u0001\u0000\u0000\u0000\u1997\u1998\u0001"+ + "\u0000\u0000\u0000\u1998\u1996\u0001\u0000\u0000\u0000\u1998\u1999\u0001"+ + "\u0000\u0000\u0000\u1999\u199a\u0001\u0000\u0000\u0000\u199a\u199b\u0006"+ + "\u02a3\u0007\u0000\u199b\u054c\u0001\u0000\u0000\u0000\u199c\u199e\u0005"+ + "\r\u0000\u0000\u199d\u199f\u0005\n\u0000\u0000\u199e\u199d\u0001\u0000"+ + "\u0000\u0000\u199e\u199f\u0001\u0000\u0000\u0000\u199f\u19a2\u0001\u0000"+ + "\u0000\u0000\u19a0\u19a2\u0005\n\u0000\u0000\u19a1\u199c\u0001\u0000\u0000"+ + "\u0000\u19a1\u19a0\u0001\u0000\u0000\u0000\u19a2\u19a3\u0001\u0000\u0000"+ + "\u0000\u19a3\u19a4\u0006\u02a4\u0007\u0000\u19a4\u054e\u0001\u0000\u0000"+ + "\u0000\u19a5\u19a6\u0005-\u0000\u0000\u19a6\u19a7\u0005-\u0000\u0000\u19a7"+ + "\u19ab\u0001\u0000\u0000\u0000\u19a8\u19aa\b,\u0000\u0000\u19a9\u19a8"+ + "\u0001\u0000\u0000\u0000\u19aa\u19ad\u0001\u0000\u0000\u0000\u19ab\u19a9"+ + "\u0001\u0000\u0000\u0000\u19ab\u19ac\u0001\u0000\u0000\u0000\u19ac\u19ae"+ + "\u0001\u0000\u0000\u0000\u19ad\u19ab\u0001\u0000\u0000\u0000\u19ae\u19af"+ + "\u0006\u02a5\u0007\u0000\u19af\u0550\u0001\u0000\u0000\u0000\u19b0\u19b1"+ + "\u0005/\u0000\u0000\u19b1\u19b2\u0005*\u0000\u0000\u19b2\u19c9\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\u19c8\u0003\u0551\u02a6"+ + "\u0000\u19ba\u19c8\b-\u0000\u0000\u19bb\u19bd\u0005/\u0000\u0000\u19bc"+ + "\u19bb\u0001\u0000\u0000\u0000\u19bd\u19be\u0001\u0000\u0000\u0000\u19be"+ + "\u19bc\u0001\u0000\u0000\u0000\u19be\u19bf\u0001\u0000\u0000\u0000\u19bf"+ + "\u19c0\u0001\u0000\u0000\u0000\u19c0\u19c8\b-\u0000\u0000\u19c1\u19c3"+ + "\u0005*\u0000\u0000\u19c2\u19c1\u0001\u0000\u0000\u0000\u19c3\u19c4\u0001"+ + "\u0000\u0000\u0000\u19c4\u19c2\u0001\u0000\u0000\u0000\u19c4\u19c5\u0001"+ + "\u0000\u0000\u0000\u19c5\u19c6\u0001\u0000\u0000\u0000\u19c6\u19c8\b-"+ + "\u0000\u0000\u19c7\u19b6\u0001\u0000\u0000\u0000\u19c7\u19ba\u0001\u0000"+ + "\u0000\u0000\u19c7\u19bc\u0001\u0000\u0000\u0000\u19c7\u19c2\u0001\u0000"+ + "\u0000\u0000\u19c8\u19cb\u0001\u0000\u0000\u0000\u19c9\u19c7\u0001\u0000"+ + "\u0000\u0000\u19c9\u19ca\u0001\u0000\u0000\u0000\u19ca\u19cf\u0001\u0000"+ + "\u0000\u0000\u19cb\u19c9\u0001\u0000\u0000\u0000\u19cc\u19ce\u0005*\u0000"+ + "\u0000\u19cd\u19cc\u0001\u0000\u0000\u0000\u19ce\u19d1\u0001\u0000\u0000"+ + "\u0000\u19cf\u19cd\u0001\u0000\u0000\u0000\u19cf\u19d0\u0001\u0000\u0000"+ + "\u0000\u19d0\u19d2\u0001\u0000\u0000\u0000\u19d1\u19cf\u0001\u0000\u0000"+ + "\u0000\u19d2\u19d3\u0005*\u0000\u0000\u19d3\u19d4\u0005/\u0000\u0000\u19d4"+ + "\u19d5\u0001\u0000\u0000\u0000\u19d5\u19d6\u0006\u02a6\u0007\u0000\u19d6"+ + "\u0552\u0001\u0000\u0000\u0000\u19d7\u19d8\u0005/\u0000\u0000\u19d8\u19d9"+ + "\u0005*\u0000\u0000\u19d9\u19f2\u0001\u0000\u0000\u0000\u19da\u19dc\u0005"+ + "/\u0000\u0000\u19db\u19da\u0001\u0000\u0000\u0000\u19dc\u19df\u0001\u0000"+ + "\u0000\u0000\u19dd\u19db\u0001\u0000\u0000\u0000\u19dd\u19de\u0001\u0000"+ + "\u0000\u0000\u19de\u19e0\u0001\u0000\u0000\u0000\u19df\u19dd\u0001\u0000"+ + "\u0000\u0000\u19e0\u19f1\u0003\u0551\u02a6\u0000\u19e1\u19f1\b-\u0000"+ + "\u0000\u19e2\u19e4\u0005/\u0000\u0000\u19e3\u19e2\u0001\u0000\u0000\u0000"+ + "\u19e4\u19e5\u0001\u0000\u0000\u0000\u19e5\u19e3\u0001\u0000\u0000\u0000"+ + "\u19e5\u19e6\u0001\u0000\u0000\u0000\u19e6\u19e7\u0001\u0000\u0000\u0000"+ + "\u19e7\u19ef\b-\u0000\u0000\u19e8\u19ea\u0005*\u0000\u0000\u19e9\u19e8"+ + "\u0001\u0000\u0000\u0000\u19ea\u19eb\u0001\u0000\u0000\u0000\u19eb\u19e9"+ + "\u0001\u0000\u0000\u0000\u19eb\u19ec\u0001\u0000\u0000\u0000\u19ec\u19ed"+ + "\u0001\u0000\u0000\u0000\u19ed\u19ef\b-\u0000\u0000\u19ee\u19e3\u0001"+ + "\u0000\u0000\u0000\u19ee\u19e9\u0001\u0000\u0000\u0000\u19ef\u19f1\u0001"+ + "\u0000\u0000\u0000\u19f0\u19dd\u0001\u0000\u0000\u0000\u19f0\u19e1\u0001"+ + "\u0000\u0000\u0000\u19f0\u19ee\u0001\u0000\u0000\u0000\u19f1\u19f4\u0001"+ + "\u0000\u0000\u0000\u19f2\u19f0\u0001\u0000\u0000\u0000\u19f2\u19f3\u0001"+ + "\u0000\u0000\u0000\u19f3\u1a06\u0001\u0000\u0000\u0000\u19f4\u19f2\u0001"+ + "\u0000\u0000\u0000\u19f5\u19f7\u0005/\u0000\u0000\u19f6\u19f5\u0001\u0000"+ + "\u0000\u0000\u19f7\u19f8\u0001\u0000\u0000\u0000\u19f8\u19f6\u0001\u0000"+ + "\u0000\u0000\u19f8\u19f9\u0001\u0000\u0000\u0000\u19f9\u1a07\u0001\u0000"+ + "\u0000\u0000\u19fa\u19fc\u0005*\u0000\u0000\u19fb\u19fa\u0001\u0000\u0000"+ + "\u0000\u19fc\u19fd\u0001\u0000\u0000\u0000\u19fd\u19fb\u0001\u0000\u0000"+ + "\u0000\u19fd\u19fe\u0001\u0000\u0000\u0000\u19fe\u1a07\u0001\u0000\u0000"+ + "\u0000\u19ff\u1a01\u0005/\u0000\u0000\u1a00\u19ff\u0001\u0000\u0000\u0000"+ + "\u1a01\u1a04\u0001\u0000\u0000\u0000\u1a02\u1a00\u0001\u0000\u0000\u0000"+ + "\u1a02\u1a03\u0001\u0000\u0000\u0000\u1a03\u1a05\u0001\u0000\u0000\u0000"+ + "\u1a04\u1a02\u0001\u0000\u0000\u0000\u1a05\u1a07\u0003\u0553\u02a7\u0000"+ + "\u1a06\u19f6\u0001\u0000\u0000\u0000\u1a06\u19fb\u0001\u0000\u0000\u0000"+ + "\u1a06\u1a02\u0001\u0000\u0000\u0000\u1a06\u1a07\u0001\u0000\u0000\u0000"+ + "\u1a07\u1a08\u0001\u0000\u0000\u0000\u1a08\u1a09\u0006\u02a7\b\u0000\u1a09"+ + "\u0554\u0001\u0000\u0000\u0000\u1a0a\u1a16\u0005\\\u0000\u0000\u1a0b\u1a15"+ + "\b.\u0000\u0000\u1a0c\u1a10\u0005\"\u0000\u0000\u1a0d\u1a0f\b/\u0000\u0000"+ + "\u1a0e\u1a0d\u0001\u0000\u0000\u0000\u1a0f\u1a12\u0001\u0000\u0000\u0000"+ + "\u1a10\u1a0e\u0001\u0000\u0000\u0000\u1a10\u1a11\u0001\u0000\u0000\u0000"+ + "\u1a11\u1a13\u0001\u0000\u0000\u0000\u1a12\u1a10\u0001\u0000\u0000\u0000"+ + "\u1a13\u1a15\u0005\"\u0000\u0000\u1a14\u1a0b\u0001\u0000\u0000\u0000\u1a14"+ + "\u1a0c\u0001\u0000\u0000\u0000\u1a15\u1a18\u0001\u0000\u0000\u0000\u1a16"+ + "\u1a14\u0001\u0000\u0000\u0000\u1a16\u1a17\u0001\u0000\u0000\u0000\u1a17"+ + "\u1a20\u0001\u0000\u0000\u0000\u1a18\u1a16\u0001\u0000\u0000\u0000\u1a19"+ + "\u1a1d\u0005\"\u0000\u0000\u1a1a\u1a1c\b/\u0000\u0000\u1a1b\u1a1a\u0001"+ + "\u0000\u0000\u0000\u1a1c\u1a1f\u0001\u0000\u0000\u0000\u1a1d\u1a1b\u0001"+ + "\u0000\u0000\u0000\u1a1d\u1a1e\u0001\u0000\u0000\u0000\u1a1e\u1a21\u0001"+ + "\u0000\u0000\u0000\u1a1f\u1a1d\u0001\u0000\u0000\u0000\u1a20\u1a19\u0001"+ + "\u0000\u0000\u0000\u1a20\u1a21\u0001\u0000\u0000\u0000\u1a21\u0556\u0001"+ + "\u0000\u0000\u0000\u1a22\u1a23\u0005\\\u0000\u0000\u1a23\u1a24\u0005\\"+ + "\u0000\u0000\u1a24\u0558\u0001\u0000\u0000\u0000\u1a25\u1a26\t\u0000\u0000"+ + "\u0000\u1a26\u055a\u0001\u0000\u0000\u0000\u1a27\u1a28\u0003\u055f\u02ad"+ + "\u0000\u1a28\u1a29\u0005\'\u0000\u0000\u1a29\u1a2a\u0001\u0000\u0000\u0000"+ + "\u1a2a\u1a2b\u0006\u02ab\t\u0000\u1a2b\u055c\u0001\u0000\u0000\u0000\u1a2c"+ + "\u1a2e\u0003\u055f\u02ad\u0000\u1a2d\u1a2f\u0005\\\u0000\u0000\u1a2e\u1a2d"+ + "\u0001\u0000\u0000\u0000\u1a2e\u1a2f\u0001\u0000\u0000\u0000\u1a2f\u1a30"+ + "\u0001\u0000\u0000\u0000\u1a30\u1a31\u0005\u0000\u0000\u0001\u1a31\u055e"+ + "\u0001\u0000\u0000\u0000\u1a32\u1a33\u0005\'\u0000\u0000\u1a33\u1a4a\u0005"+ + "\'\u0000\u0000\u1a34\u1a46\u0005\\\u0000\u0000\u1a35\u1a36\u0005x\u0000"+ + "\u0000\u1a36\u1a47\u0007\'\u0000\u0000\u1a37\u1a38\u0005u\u0000\u0000"+ + "\u1a38\u1a39\u0007\'\u0000\u0000\u1a39\u1a3a\u0007\'\u0000\u0000\u1a3a"+ + "\u1a3b\u0007\'\u0000\u0000\u1a3b\u1a47\u0007\'\u0000\u0000\u1a3c\u1a3d"+ + "\u0005U\u0000\u0000\u1a3d\u1a3e\u0007\'\u0000\u0000\u1a3e\u1a3f\u0007"+ + "\'\u0000\u0000\u1a3f\u1a40\u0007\'\u0000\u0000\u1a40\u1a41\u0007\'\u0000"+ + "\u0000\u1a41\u1a42\u0007\'\u0000\u0000\u1a42\u1a43\u0007\'\u0000\u0000"+ + "\u1a43\u1a44\u0007\'\u0000\u0000\u1a44\u1a47\u0007\'\u0000\u0000\u1a45"+ + "\u1a47\b0\u0000\u0000\u1a46\u1a35\u0001\u0000\u0000\u0000\u1a46\u1a37"+ + "\u0001\u0000\u0000\u0000\u1a46\u1a3c\u0001\u0000\u0000\u0000\u1a46\u1a45"+ + "\u0001\u0000\u0000\u0000\u1a47\u1a4a\u0001\u0000\u0000\u0000\u1a48\u1a4a"+ + "\b1\u0000\u0000\u1a49\u1a32\u0001\u0000\u0000\u0000\u1a49\u1a34\u0001"+ + "\u0000\u0000\u0000\u1a49\u1a48\u0001\u0000\u0000\u0000\u1a4a\u1a4d\u0001"+ + "\u0000\u0000\u0000\u1a4b\u1a49\u0001\u0000\u0000\u0000\u1a4b\u1a4c\u0001"+ + "\u0000\u0000\u0000\u1a4c\u0560\u0001\u0000\u0000\u0000\u1a4d\u1a4b\u0001"+ + "\u0000\u0000\u0000\u1a4e\u1a4f\u0003\u0565\u02b0\u0000\u1a4f\u1a50\u0005"+ + "\'\u0000\u0000\u1a50\u1a51\u0001\u0000\u0000\u0000\u1a51\u1a52\u0006\u02ae"+ + "\t\u0000\u1a52\u0562\u0001\u0000\u0000\u0000\u1a53\u1a55\u0003\u0565\u02b0"+ + "\u0000\u1a54\u1a56\u0005\\\u0000\u0000\u1a55\u1a54\u0001\u0000\u0000\u0000"+ + "\u1a55\u1a56\u0001\u0000\u0000\u0000\u1a56\u1a57\u0001\u0000\u0000\u0000"+ + "\u1a57\u1a58\u0005\u0000\u0000\u0001\u1a58\u0564\u0001\u0000\u0000\u0000"+ + "\u1a59\u1a5a\u0005\'\u0000\u0000\u1a5a\u1a5f\u0005\'\u0000\u0000\u1a5b"+ + "\u1a5c\u0005\\\u0000\u0000\u1a5c\u1a5f\t\u0000\u0000\u0000\u1a5d\u1a5f"+ + "\b1\u0000\u0000\u1a5e\u1a59\u0001\u0000\u0000\u0000\u1a5e\u1a5b\u0001"+ + "\u0000\u0000\u0000\u1a5e\u1a5d\u0001\u0000\u0000\u0000\u1a5f\u1a62\u0001"+ + "\u0000\u0000\u0000\u1a60\u1a5e\u0001\u0000\u0000\u0000\u1a60\u1a61\u0001"+ + "\u0000\u0000\u0000\u1a61\u0566\u0001\u0000\u0000\u0000\u1a62\u1a60\u0001"+ + "\u0000\u0000\u0000\u1a63\u1a64\u0003\u054b\u02a3\u0000\u1a64\u1a65\u0001"+ + "\u0000\u0000\u0000\u1a65\u1a66\u0006\u02b1\n\u0000\u1a66\u1a67\u0006\u02b1"+ + "\u0007\u0000\u1a67\u0568\u0001\u0000\u0000\u0000\u1a68\u1a69\u0003\u054d"+ + "\u02a4\u0000\u1a69\u1a6a\u0001\u0000\u0000\u0000\u1a6a\u1a6b\u0006\u02b2"+ + "\u000b\u0000\u1a6b\u1a6c\u0006\u02b2\u0007\u0000\u1a6c\u1a6d\u0006\u02b2"+ + "\f\u0000\u1a6d\u056a\u0001\u0000\u0000\u0000\u1a6e\u1a6f\u0006\u02b3\r"+ + "\u0000\u1a6f\u1a70\u0001\u0000\u0000\u0000\u1a70\u1a71\u0006\u02b3\u000e"+ + "\u0000\u1a71\u1a72\u0006\u02b3\u000f\u0000\u1a72\u056c\u0001\u0000\u0000"+ + "\u0000\u1a73\u1a74\u0003\u054b\u02a3\u0000\u1a74\u1a75\u0001\u0000\u0000"+ + "\u0000\u1a75\u1a76\u0006\u02b4\n\u0000\u1a76\u1a77\u0006\u02b4\u0007\u0000"+ + "\u1a77\u056e\u0001\u0000\u0000\u0000\u1a78\u1a79\u0003\u054d\u02a4\u0000"+ + "\u1a79\u1a7a\u0001\u0000\u0000\u0000\u1a7a\u1a7b\u0006\u02b5\u000b\u0000"+ + "\u1a7b\u1a7c\u0006\u02b5\u0007\u0000\u1a7c\u0570\u0001\u0000\u0000\u0000"+ + "\u1a7d\u1a7e\u0005\'\u0000\u0000\u1a7e\u1a7f\u0001\u0000\u0000\u0000\u1a7f"+ + "\u1a80\u0006\u02b6\u0002\u0000\u1a80\u1a81\u0006\u02b6\u0010\u0000\u1a81"+ + "\u0572\u0001\u0000\u0000\u0000\u1a82\u1a83\u0006\u02b7\u0011\u0000\u1a83"+ + "\u1a84\u0001\u0000\u0000\u0000\u1a84\u1a85\u0006\u02b7\u000e\u0000\u1a85"+ + "\u1a86\u0006\u02b7\u000f\u0000\u1a86\u0574\u0001\u0000\u0000\u0000\u1a87"+ + "\u1a89\b2\u0000\u0000\u1a88\u1a87\u0001\u0000\u0000\u0000\u1a89\u1a8a"+ + "\u0001\u0000\u0000\u0000\u1a8a\u1a88\u0001\u0000\u0000\u0000\u1a8a\u1a8b"+ + "\u0001\u0000\u0000\u0000\u1a8b\u1a94\u0001\u0000\u0000\u0000\u1a8c\u1a90"+ + "\u0005$\u0000\u0000\u1a8d\u1a8f\b2\u0000\u0000\u1a8e\u1a8d\u0001\u0000"+ + "\u0000\u0000\u1a8f\u1a92\u0001\u0000\u0000\u0000\u1a90\u1a8e\u0001\u0000"+ + "\u0000\u0000\u1a90\u1a91\u0001\u0000\u0000\u0000\u1a91\u1a94\u0001\u0000"+ + "\u0000\u0000\u1a92\u1a90\u0001\u0000\u0000\u0000\u1a93\u1a88\u0001\u0000"+ + "\u0000\u0000\u1a93\u1a8c\u0001\u0000\u0000\u0000\u1a94\u0576\u0001\u0000"+ + "\u0000\u0000\u1a95\u1a97\u0005$\u0000\u0000\u1a96\u1a98\u0003\u052d\u0294"+ + "\u0000\u1a97\u1a96\u0001\u0000\u0000\u0000\u1a97\u1a98\u0001\u0000\u0000"+ + "\u0000\u1a98\u1a99\u0001\u0000\u0000\u0000\u1a99\u1a9a\u0005$\u0000\u0000"+ + "\u1a9a\u1a9b\u0001\u0000\u0000\u0000\u1a9b\u1a9c\u0004\u02b9\b\u0000\u1a9c"+ + "\u1a9d\u0006\u02b9\u0012\u0000\u1a9d\u1a9e\u0001\u0000\u0000\u0000\u1a9e"+ + "\u1a9f\u0006\u02b9\u000f\u0000\u1a9f\u0578\u0001\u0000\u0000\u0000N\u0000"+ + "\u0001\u0002\u0003\u0004\u05bc\u05c2\u05c4\u05c9\u05cd\u05cf\u05d2\u05db"+ + "\u05dd\u05e2\u05e7\u05e9\u18cd\u18d6\u18da\u18de\u18e7\u18e9\u18f3\u18f5"+ + "\u190f\u1911\u1923\u192e\u1939\u194a\u195e\u1962\u1965\u196b\u196e\u1973"+ + "\u1977\u197c\u1983\u198e\u1990\u1998\u199e\u19a1\u19ab\u19b6\u19be\u19c4"+ + "\u19c7\u19c9\u19cf\u19dd\u19e5\u19eb\u19ee\u19f0\u19f2\u19f8\u19fd\u1a02"+ + "\u1a06\u1a10\u1a14\u1a16\u1a1d\u1a20\u1a2e\u1a46\u1a49\u1a4b\u1a55\u1a5e"+ + "\u1a60\u1a8a\u1a90\u1a93\u1a97\u0013\u0001\u001c\u0000\u0007\u001d\u0000"+ + "\u0003\u0000\u0000\u0005\u0001\u0000\u0001\u0293\u0001\u0005\u0004\u0000"+ + "\u0001\u029e\u0002\u0000\u0001\u0000\u0001\u02a7\u0003\u0002\u0002\u0000"+ + "\u0007\u029a\u0000\u0007\u029b\u0000\u0002\u0003\u0000\u0001\u02b3\u0004"+ + "\u0006\u0000\u0000\u0004\u0000\u0000\u0002\u0001\u0000\u0001\u02b7\u0005"+ + "\u0001\u02b9\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..3480397b09 --- /dev/null +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens @@ -0,0 +1,1320 @@ +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 +ZVIEW=97 +TRAILING=98 +TRUE_P=99 +UNION=100 +UNIQUE=101 +USER=102 +USING=103 +VARIADIC=104 +WHEN=105 +WHERE=106 +WINDOW=107 +WITH=108 +AUTHORIZATION=109 +BINARY=110 +COLLATION=111 +CONCURRENTLY=112 +CROSS=113 +CURRENT_SCHEMA=114 +FREEZE=115 +FULL=116 +ILIKE=117 +INNER_P=118 +IS=119 +ISNULL=120 +JOIN=121 +LEFT=122 +LIKE=123 +NATURAL=124 +NOTNULL=125 +OUTER_P=126 +OVER=127 +OVERLAPS=128 +RIGHT=129 +SIMILAR=130 +VERBOSE=131 +ABORT_P=132 +ABSOLUTE_P=133 +ACCESS=134 +ACTION=135 +ADD_P=136 +ADMIN=137 +AFTER=138 +AGGREGATE=139 +ALSO=140 +ALTER=141 +ALWAYS=142 +ASSERTION=143 +ASSIGNMENT=144 +AT=145 +ATTRIBUTE=146 +BACKWARD=147 +BEFORE=148 +BEGIN_P=149 +BY=150 +CACHE=151 +CALLED=152 +CASCADE=153 +CASCADED=154 +CATALOG=155 +CHAIN=156 +CHARACTERISTICS=157 +CHECKPOINT=158 +CLASS=159 +CLOSE=160 +CLUSTER=161 +COMMENT=162 +COMMENTS=163 +COMMIT=164 +COMMITTED=165 +CONFIGURATION=166 +CONNECTION=167 +CONSTRAINTS=168 +CONTENT_P=169 +CONTINUE_P=170 +CONVERSION_P=171 +COPY=172 +COST=173 +CSV=174 +CURSOR=175 +CYCLE=176 +DATA_P=177 +DATABASE=178 +DAY_P=179 +DEALLOCATE=180 +DECLARE=181 +DEFAULTS=182 +DEFERRED=183 +DEFINER=184 +DELETE_P=185 +DELIMITER=186 +DELIMITERS=187 +DICTIONARY=188 +DISABLE_P=189 +DISCARD=190 +DOCUMENT_P=191 +DOMAIN_P=192 +DOUBLE_P=193 +DROP=194 +EACH=195 +ENABLE_P=196 +ENCODING=197 +ENCRYPTED=198 +ENUM_P=199 +ESCAPE=200 +EVENT=201 +EXCLUDE=202 +EXCLUDING=203 +EXCLUSIVE=204 +EXECUTE=205 +EXPLAIN=206 +EXTENSION=207 +EXTERNAL=208 +FAMILY=209 +FIRST_P=210 +FOLLOWING=211 +FORCE=212 +FORWARD=213 +FUNCTION=214 +FUNCTIONS=215 +GLOBAL=216 +GRANTED=217 +HANDLER=218 +HEADER_P=219 +HOLD=220 +HOUR_P=221 +IDENTITY_P=222 +IF_P=223 +IMMEDIATE=224 +IMMUTABLE=225 +IMPLICIT_P=226 +INCLUDING=227 +INCREMENT=228 +INDEX=229 +INDEXES=230 +INHERIT=231 +INHERITS=232 +INLINE_P=233 +INSENSITIVE=234 +INSERT=235 +INSTEAD=236 +INVOKER=237 +ISOLATION=238 +KEY=239 +LABEL=240 +LANGUAGE=241 +LARGE_P=242 +LAST_P=243 +LEAKPROOF=244 +LEVEL=245 +LISTEN=246 +LOAD=247 +LOCAL=248 +LOCATION=249 +LOCK_P=250 +MAPPING=251 +MATCH=252 +MATCHED=253 +MATERIALIZED=254 +MAXVALUE=255 +MERGE=256 +MINUTE_P=257 +MINVALUE=258 +MODE=259 +MONTH_P=260 +MOVE=261 +NAME_P=262 +NAMES=263 +NEXT=264 +NO=265 +NOTHING=266 +NOTIFY=267 +NOWAIT=268 +NULLS_P=269 +OBJECT_P=270 +OF=271 +OFF=272 +OIDS=273 +OPERATOR=274 +OPTION=275 +OPTIONS=276 +OWNED=277 +OWNER=278 +PARSER=279 +PARTIAL=280 +PARTITION=281 +PASSING=282 +PASSWORD=283 +PLANS=284 +PRECEDING=285 +PREPARE=286 +PREPARED=287 +PRESERVE=288 +PRIOR=289 +PRIVILEGES=290 +PROCEDURAL=291 +PROCEDURE=292 +PROGRAM=293 +QUOTE=294 +RANGE=295 +READ=296 +REASSIGN=297 +RECHECK=298 +RECURSIVE=299 +REF=300 +REFRESH=301 +REINDEX=302 +RELATIVE_P=303 +RELEASE=304 +RENAME=305 +REPEATABLE=306 +REPLACE=307 +REPLICA=308 +RESET=309 +RESTART=310 +RESTRICT=311 +RETURNS=312 +REVOKE=313 +ROLE=314 +ROLLBACK=315 +ROWS=316 +RULE=317 +SAVEPOINT=318 +SCHEMA=319 +SCROLL=320 +SEARCH=321 +SECOND_P=322 +SECURITY=323 +SEQUENCE=324 +SEQUENCES=325 +SERIALIZABLE=326 +SERVER=327 +SESSION=328 +SET=329 +SHARE=330 +SHOW=331 +SIMPLE=332 +SNAPSHOT=333 +STABLE=334 +STANDALONE_P=335 +START=336 +STATEMENT=337 +STATISTICS=338 +STDIN=339 +STDOUT=340 +STORAGE=341 +STRICT_P=342 +STRIP_P=343 +SYSID=344 +SYSTEM_P=345 +TABLES=346 +TABLESPACE=347 +TEMP=348 +TEMPLATE=349 +TEMPORARY=350 +TEXT_P=351 +TRANSACTION=352 +TRIGGER=353 +TRUNCATE=354 +TRUSTED=355 +TYPE_P=356 +TYPES_P=357 +UNBOUNDED=358 +UNCOMMITTED=359 +UNENCRYPTED=360 +UNKNOWN=361 +UNLISTEN=362 +UNLOGGED=363 +UNTIL=364 +UPDATE=365 +VACUUM=366 +VALID=367 +VALIDATE=368 +VALIDATOR=369 +VARYING=370 +VERSION_P=371 +VIEW=372 +VOLATILE=373 +WHITESPACE_P=374 +WITHOUT=375 +WORK=376 +WRAPPER=377 +WRITE=378 +XML_P=379 +YEAR_P=380 +YES_P=381 +ZONE=382 +BETWEEN=383 +BIGINT=384 +BIT=385 +BOOLEAN_P=386 +CHAR_P=387 +CHARACTER=388 +COALESCE=389 +DEC=390 +DECIMAL_P=391 +EXISTS=392 +EXTRACT=393 +FLOAT_P=394 +GREATEST=395 +INOUT=396 +INT_P=397 +INTEGER=398 +INTERVAL=399 +LEAST=400 +NATIONAL=401 +NCHAR=402 +NONE=403 +NULLIF=404 +NUMERIC=405 +OVERLAY=406 +POSITION=407 +PRECISION=408 +REAL=409 +ROW=410 +SETOF=411 +SMALLINT=412 +SUBSTRING=413 +TIME=414 +TIMESTAMP=415 +TREAT=416 +TRIM=417 +VALUES=418 +VARCHAR=419 +XMLATTRIBUTES=420 +XMLCOMMENT=421 +XMLAGG=422 +XML_IS_WELL_FORMED=423 +XML_IS_WELL_FORMED_DOCUMENT=424 +XML_IS_WELL_FORMED_CONTENT=425 +XPATH=426 +XPATH_EXISTS=427 +XMLCONCAT=428 +XMLELEMENT=429 +XMLEXISTS=430 +XMLFOREST=431 +XMLPARSE=432 +XMLPI=433 +XMLROOT=434 +XMLSERIALIZE=435 +CALL=436 +CURRENT_P=437 +ATTACH=438 +DETACH=439 +EXPRESSION=440 +GENERATED=441 +LOGGED=442 +STORED=443 +INCLUDE=444 +ROUTINE=445 +TRANSFORM=446 +IMPORT_P=447 +POLICY=448 +METHOD=449 +REFERENCING=450 +NEW=451 +OLD=452 +VALUE_P=453 +SUBSCRIPTION=454 +PUBLICATION=455 +OUT_P=456 +END_P=457 +ROUTINES=458 +SCHEMAS=459 +PROCEDURES=460 +INPUT_P=461 +SUPPORT=462 +PARALLEL=463 +SQL_P=464 +DEPENDS=465 +OVERRIDING=466 +CONFLICT=467 +SKIP_P=468 +LOCKED=469 +TIES=470 +ROLLUP=471 +CUBE=472 +GROUPING=473 +SETS=474 +TABLESAMPLE=475 +ORDINALITY=476 +XMLTABLE=477 +COLUMNS=478 +XMLNAMESPACES=479 +ROWTYPE=480 +NORMALIZED=481 +WITHIN=482 +FILTER=483 +GROUPS=484 +OTHERS=485 +NFC=486 +NFD=487 +NFKC=488 +NFKD=489 +UESCAPE=490 +VIEWS=491 +NORMALIZE=492 +DUMP=493 +PRINT_STRICT_PARAMS=494 +VARIABLE_CONFLICT=495 +ERROR=496 +USE_VARIABLE=497 +USE_COLUMN=498 +ALIAS=499 +CONSTANT=500 +PERFORM=501 +GET=502 +DIAGNOSTICS=503 +STACKED=504 +ELSIF=505 +WHILE=506 +REVERSE=507 +FOREACH=508 +SLICE=509 +EXIT=510 +RETURN=511 +QUERY=512 +RAISE=513 +SQLSTATE=514 +DEBUG=515 +LOG=516 +INFO=517 +NOTICE=518 +WARNING=519 +EXCEPTION=520 +ASSERT=521 +LOOP=522 +OPEN=523 +ABS=524 +CBRT=525 +CEIL=526 +CEILING=527 +DEGREES=528 +DIV=529 +EXP=530 +FACTORIAL=531 +FLOOR=532 +GCD=533 +LCM=534 +LN=535 +LOG10=536 +MIN_SCALE=537 +MOD=538 +PI=539 +POWER=540 +RADIANS=541 +ROUND=542 +SCALE=543 +SIGN=544 +SQRT=545 +TRIM_SCALE=546 +TRUNC=547 +WIDTH_BUCKET=548 +RANDOM=549 +SETSEED=550 +ACOS=551 +ACOSD=552 +ASIN=553 +ASIND=554 +ATAN=555 +ATAND=556 +ATAN2=557 +ATAN2D=558 +COS=559 +COSD=560 +COT=561 +COTD=562 +SIN=563 +SIND=564 +TAN=565 +TAND=566 +SINH=567 +COSH=568 +TANH=569 +ASINH=570 +ACOSH=571 +ATANH=572 +BIT_LENGTH=573 +CHAR_LENGTH=574 +CHARACTER_LENGTH=575 +LOWER=576 +OCTET_LENGTH=577 +UPPER=578 +ASCII=579 +BTRIM=580 +CHR=581 +CONCAT=582 +CONCAT_WS=583 +FORMAT=584 +INITCAP=585 +LENGTH=586 +LPAD=587 +LTRIM=588 +MD5=589 +PARSE_IDENT=590 +PG_CLIENT_ENCODING=591 +QUOTE_IDENT=592 +QUOTE_LITERAL=593 +QUOTE_NULLABLE=594 +REGEXP_COUNT=595 +REGEXP_INSTR=596 +REGEXP_LIKE=597 +REGEXP_MATCH=598 +REGEXP_MATCHES=599 +REGEXP_REPLACE=600 +REGEXP_SPLIT_TO_ARRAY=601 +REGEXP_SPLIT_TO_TABLE=602 +REGEXP_SUBSTR=603 +REPEAT=604 +RPAD=605 +RTRIM=606 +SPLIT_PART=607 +STARTS_WITH=608 +STRING_TO_ARRAY=609 +STRING_TO_TABLE=610 +STRPOS=611 +SUBSTR=612 +TO_ASCII=613 +TO_HEX=614 +TRANSLATE=615 +UNISTR=616 +AGE=617 +CLOCK_TIMESTAMP=618 +DATE_BIN=619 +DATE_PART=620 +DATE_TRUNC=621 +ISFINITE=622 +JUSTIFY_DAYS=623 +JUSTIFY_HOURS=624 +JUSTIFY_INTERVAL=625 +MAKE_DATE=626 +MAKE_INTERVAL=627 +MAKE_TIME=628 +MAKE_TIMESTAMP=629 +MAKE_TIMESTAMPTZ=630 +NOW=631 +STATEMENT_TIMESTAMP=632 +TIMEOFDAY=633 +TRANSACTION_TIMESTAMP=634 +TO_TIMESTAMP=635 +TO_CHAR=636 +TO_DATE=637 +TO_NUMBER=638 +Identifier=639 +QuotedIdentifier=640 +UnterminatedQuotedIdentifier=641 +InvalidQuotedIdentifier=642 +InvalidUnterminatedQuotedIdentifier=643 +UnicodeQuotedIdentifier=644 +UnterminatedUnicodeQuotedIdentifier=645 +InvalidUnicodeQuotedIdentifier=646 +InvalidUnterminatedUnicodeQuotedIdentifier=647 +StringConstant=648 +UnterminatedStringConstant=649 +UnicodeEscapeStringConstant=650 +UnterminatedUnicodeEscapeStringConstant=651 +BeginDollarStringConstant=652 +BinaryStringConstant=653 +UnterminatedBinaryStringConstant=654 +InvalidBinaryStringConstant=655 +InvalidUnterminatedBinaryStringConstant=656 +HexadecimalStringConstant=657 +UnterminatedHexadecimalStringConstant=658 +InvalidHexadecimalStringConstant=659 +InvalidUnterminatedHexadecimalStringConstant=660 +Integral=661 +NumericFail=662 +Numeric=663 +PLSQLVARIABLENAME=664 +PLSQLIDENTIFIER=665 +Whitespace=666 +Newline=667 +LineComment=668 +BlockComment=669 +UnterminatedBlockComment=670 +MetaCommand=671 +EndMetaCommand=672 +ErrorCharacter=673 +EscapeStringConstant=674 +UnterminatedEscapeStringConstant=675 +InvalidEscapeStringConstant=676 +InvalidUnterminatedEscapeStringConstant=677 +AfterEscapeStringConstantMode_NotContinued=678 +AfterEscapeStringConstantWithNewlineMode_NotContinued=679 +DollarText=680 +EndDollarStringConstant=681 +AfterEscapeStringConstantWithNewlineMode_Continued=682 +'$'=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 +'ZVIEW'=97 +'TRAILING'=98 +'TRUE'=99 +'UNION'=100 +'UNIQUE'=101 +'USER'=102 +'USING'=103 +'VARIADIC'=104 +'WHEN'=105 +'WHERE'=106 +'WINDOW'=107 +'WITH'=108 +'AUTHORIZATION'=109 +'BINARY'=110 +'COLLATION'=111 +'CONCURRENTLY'=112 +'CROSS'=113 +'CURRENT_SCHEMA'=114 +'FREEZE'=115 +'FULL'=116 +'ILIKE'=117 +'INNER'=118 +'IS'=119 +'ISNULL'=120 +'JOIN'=121 +'LEFT'=122 +'LIKE'=123 +'NATURAL'=124 +'NOTNULL'=125 +'OUTER'=126 +'OVER'=127 +'OVERLAPS'=128 +'RIGHT'=129 +'SIMILAR'=130 +'VERBOSE'=131 +'ABORT'=132 +'ABSOLUTE'=133 +'ACCESS'=134 +'ACTION'=135 +'ADD'=136 +'ADMIN'=137 +'AFTER'=138 +'AGGREGATE'=139 +'ALSO'=140 +'ALTER'=141 +'ALWAYS'=142 +'ASSERTION'=143 +'ASSIGNMENT'=144 +'AT'=145 +'ATTRIBUTE'=146 +'BACKWARD'=147 +'BEFORE'=148 +'BEGIN'=149 +'BY'=150 +'CACHE'=151 +'CALLED'=152 +'CASCADE'=153 +'CASCADED'=154 +'CATALOG'=155 +'CHAIN'=156 +'CHARACTERISTICS'=157 +'CHECKPOINT'=158 +'CLASS'=159 +'CLOSE'=160 +'CLUSTER'=161 +'COMMENT'=162 +'COMMENTS'=163 +'COMMIT'=164 +'COMMITTED'=165 +'CONFIGURATION'=166 +'CONNECTION'=167 +'CONSTRAINTS'=168 +'CONTENT'=169 +'CONTINUE'=170 +'CONVERSION'=171 +'COPY'=172 +'COST'=173 +'CSV'=174 +'CURSOR'=175 +'CYCLE'=176 +'DATA'=177 +'DATABASE'=178 +'DAY'=179 +'DEALLOCATE'=180 +'DECLARE'=181 +'DEFAULTS'=182 +'DEFERRED'=183 +'DEFINER'=184 +'DELETE'=185 +'DELIMITER'=186 +'DELIMITERS'=187 +'DICTIONARY'=188 +'DISABLE'=189 +'DISCARD'=190 +'DOCUMENT'=191 +'DOMAIN'=192 +'DOUBLE'=193 +'DROP'=194 +'EACH'=195 +'ENABLE'=196 +'ENCODING'=197 +'ENCRYPTED'=198 +'ENUM'=199 +'ESCAPE'=200 +'EVENT'=201 +'EXCLUDE'=202 +'EXCLUDING'=203 +'EXCLUSIVE'=204 +'EXECUTE'=205 +'EXPLAIN'=206 +'EXTENSION'=207 +'EXTERNAL'=208 +'FAMILY'=209 +'FIRST'=210 +'FOLLOWING'=211 +'FORCE'=212 +'FORWARD'=213 +'FUNCTION'=214 +'FUNCTIONS'=215 +'GLOBAL'=216 +'GRANTED'=217 +'HANDLER'=218 +'HEADER'=219 +'HOLD'=220 +'HOUR'=221 +'IDENTITY'=222 +'IF'=223 +'IMMEDIATE'=224 +'IMMUTABLE'=225 +'IMPLICIT'=226 +'INCLUDING'=227 +'INCREMENT'=228 +'INDEX'=229 +'INDEXES'=230 +'INHERIT'=231 +'INHERITS'=232 +'INLINE'=233 +'INSENSITIVE'=234 +'INSERT'=235 +'INSTEAD'=236 +'INVOKER'=237 +'ISOLATION'=238 +'KEY'=239 +'LABEL'=240 +'LANGUAGE'=241 +'LARGE'=242 +'LAST'=243 +'LEAKPROOF'=244 +'LEVEL'=245 +'LISTEN'=246 +'LOAD'=247 +'LOCAL'=248 +'LOCATION'=249 +'LOCK'=250 +'MAPPING'=251 +'MATCH'=252 +'MATCHED'=253 +'MATERIALIZED'=254 +'MAXVALUE'=255 +'MERGE'=256 +'MINUTE'=257 +'MINVALUE'=258 +'MODE'=259 +'MONTH'=260 +'MOVE'=261 +'NAME'=262 +'NAMES'=263 +'NEXT'=264 +'NO'=265 +'NOTHING'=266 +'NOTIFY'=267 +'NOWAIT'=268 +'NULLS'=269 +'OBJECT'=270 +'OF'=271 +'OFF'=272 +'OIDS'=273 +'OPERATOR'=274 +'OPTION'=275 +'OPTIONS'=276 +'OWNED'=277 +'OWNER'=278 +'PARSER'=279 +'PARTIAL'=280 +'PARTITION'=281 +'PASSING'=282 +'PASSWORD'=283 +'PLANS'=284 +'PRECEDING'=285 +'PREPARE'=286 +'PREPARED'=287 +'PRESERVE'=288 +'PRIOR'=289 +'PRIVILEGES'=290 +'PROCEDURAL'=291 +'PROCEDURE'=292 +'PROGRAM'=293 +'QUOTE'=294 +'RANGE'=295 +'READ'=296 +'REASSIGN'=297 +'RECHECK'=298 +'RECURSIVE'=299 +'REF'=300 +'REFRESH'=301 +'REINDEX'=302 +'RELATIVE'=303 +'RELEASE'=304 +'RENAME'=305 +'REPEATABLE'=306 +'REPLACE'=307 +'REPLICA'=308 +'RESET'=309 +'RESTART'=310 +'RESTRICT'=311 +'RETURNS'=312 +'REVOKE'=313 +'ROLE'=314 +'ROLLBACK'=315 +'ROWS'=316 +'RULE'=317 +'SAVEPOINT'=318 +'SCHEMA'=319 +'SCROLL'=320 +'SEARCH'=321 +'SECOND'=322 +'SECURITY'=323 +'SEQUENCE'=324 +'SEQUENCES'=325 +'SERIALIZABLE'=326 +'SERVER'=327 +'SESSION'=328 +'SET'=329 +'SHARE'=330 +'SHOW'=331 +'SIMPLE'=332 +'SNAPSHOT'=333 +'STABLE'=334 +'STANDALONE'=335 +'START'=336 +'STATEMENT'=337 +'STATISTICS'=338 +'STDIN'=339 +'STDOUT'=340 +'STORAGE'=341 +'STRICT'=342 +'STRIP'=343 +'SYSID'=344 +'SYSTEM'=345 +'TABLES'=346 +'TABLESPACE'=347 +'TEMP'=348 +'TEMPLATE'=349 +'TEMPORARY'=350 +'TEXT'=351 +'TRANSACTION'=352 +'TRIGGER'=353 +'TRUNCATE'=354 +'TRUSTED'=355 +'TYPE'=356 +'TYPES'=357 +'UNBOUNDED'=358 +'UNCOMMITTED'=359 +'UNENCRYPTED'=360 +'UNKNOWN'=361 +'UNLISTEN'=362 +'UNLOGGED'=363 +'UNTIL'=364 +'UPDATE'=365 +'VACUUM'=366 +'VALID'=367 +'VALIDATE'=368 +'VALIDATOR'=369 +'VARYING'=370 +'VERSION'=371 +'VIEW'=372 +'VOLATILE'=373 +'WHITESPACE'=374 +'WITHOUT'=375 +'WORK'=376 +'WRAPPER'=377 +'WRITE'=378 +'XML'=379 +'YEAR'=380 +'YES'=381 +'ZONE'=382 +'BETWEEN'=383 +'BIGINT'=384 +'BIT'=385 +'BOOLEAN'=386 +'CHAR'=387 +'CHARACTER'=388 +'COALESCE'=389 +'DEC'=390 +'DECIMAL'=391 +'EXISTS'=392 +'EXTRACT'=393 +'FLOAT'=394 +'GREATEST'=395 +'INOUT'=396 +'INT'=397 +'INTEGER'=398 +'INTERVAL'=399 +'LEAST'=400 +'NATIONAL'=401 +'NCHAR'=402 +'NONE'=403 +'NULLIF'=404 +'NUMERIC'=405 +'OVERLAY'=406 +'POSITION'=407 +'PRECISION'=408 +'REAL'=409 +'ROW'=410 +'SETOF'=411 +'SMALLINT'=412 +'SUBSTRING'=413 +'TIME'=414 +'TIMESTAMP'=415 +'TREAT'=416 +'TRIM'=417 +'VALUES'=418 +'VARCHAR'=419 +'XMLATTRIBUTES'=420 +'XMLCOMMENT'=421 +'XMLAGG'=422 +'XML_IS_WELL_FORMED'=423 +'XML_IS_WELL_FORMED_DOCUMENT'=424 +'XML_IS_WELL_FORMED_CONTENT'=425 +'XPATH'=426 +'XPATH_EXISTS'=427 +'XMLCONCAT'=428 +'XMLELEMENT'=429 +'XMLEXISTS'=430 +'XMLFOREST'=431 +'XMLPARSE'=432 +'XMLPI'=433 +'XMLROOT'=434 +'XMLSERIALIZE'=435 +'CALL'=436 +'CURRENT'=437 +'ATTACH'=438 +'DETACH'=439 +'EXPRESSION'=440 +'GENERATED'=441 +'LOGGED'=442 +'STORED'=443 +'INCLUDE'=444 +'ROUTINE'=445 +'TRANSFORM'=446 +'IMPORT'=447 +'POLICY'=448 +'METHOD'=449 +'REFERENCING'=450 +'NEW'=451 +'OLD'=452 +'VALUE'=453 +'SUBSCRIPTION'=454 +'PUBLICATION'=455 +'OUT'=456 +'END'=457 +'ROUTINES'=458 +'SCHEMAS'=459 +'PROCEDURES'=460 +'INPUT'=461 +'SUPPORT'=462 +'PARALLEL'=463 +'SQL'=464 +'DEPENDS'=465 +'OVERRIDING'=466 +'CONFLICT'=467 +'SKIP'=468 +'LOCKED'=469 +'TIES'=470 +'ROLLUP'=471 +'CUBE'=472 +'GROUPING'=473 +'SETS'=474 +'TABLESAMPLE'=475 +'ORDINALITY'=476 +'XMLTABLE'=477 +'COLUMNS'=478 +'XMLNAMESPACES'=479 +'ROWTYPE'=480 +'NORMALIZED'=481 +'WITHIN'=482 +'FILTER'=483 +'GROUPS'=484 +'OTHERS'=485 +'NFC'=486 +'NFD'=487 +'NFKC'=488 +'NFKD'=489 +'UESCAPE'=490 +'VIEWS'=491 +'NORMALIZE'=492 +'DUMP'=493 +'PRINT_STRICT_PARAMS'=494 +'VARIABLE_CONFLICT'=495 +'ERROR'=496 +'USE_VARIABLE'=497 +'USE_COLUMN'=498 +'ALIAS'=499 +'CONSTANT'=500 +'PERFORM'=501 +'GET'=502 +'DIAGNOSTICS'=503 +'STACKED'=504 +'ELSIF'=505 +'WHILE'=506 +'REVERSE'=507 +'FOREACH'=508 +'SLICE'=509 +'EXIT'=510 +'RETURN'=511 +'QUERY'=512 +'RAISE'=513 +'SQLSTATE'=514 +'DEBUG'=515 +'LOG'=516 +'INFO'=517 +'NOTICE'=518 +'WARNING'=519 +'EXCEPTION'=520 +'ASSERT'=521 +'LOOP'=522 +'OPEN'=523 +'ABS'=524 +'CBRT'=525 +'CEIL'=526 +'CEILING'=527 +'DEGREES'=528 +'DIV'=529 +'EXP'=530 +'FACTORIAL'=531 +'FLOOR'=532 +'GCD'=533 +'LCM'=534 +'LN'=535 +'LOG10'=536 +'MIN_SCALE'=537 +'MOD'=538 +'PI'=539 +'POWER'=540 +'RADIANS'=541 +'ROUND'=542 +'SCALE'=543 +'SIGN'=544 +'SQRT'=545 +'TRIM_SCALE'=546 +'TRUNC'=547 +'WIDTH_BUCKET'=548 +'RANDOM'=549 +'SETSEED'=550 +'ACOS'=551 +'ACOSD'=552 +'ASIN'=553 +'ASIND'=554 +'ATAN'=555 +'ATAND'=556 +'ATAN2'=557 +'ATAN2D'=558 +'COS'=559 +'COSD'=560 +'COT'=561 +'COTD'=562 +'SIN'=563 +'SIND'=564 +'TAN'=565 +'TAND'=566 +'SINH'=567 +'COSH'=568 +'TANH'=569 +'ASINH'=570 +'ACOSH'=571 +'ATANH'=572 +'BIT_LENGTH'=573 +'CHAR_LENGTH'=574 +'CHARACTER_LENGTH'=575 +'LOWER'=576 +'OCTET_LENGTH'=577 +'UPPER'=578 +'ASCII'=579 +'BTRIM'=580 +'CHR'=581 +'CONCAT'=582 +'CONCAT_WS'=583 +'FORMAT'=584 +'INITCAP'=585 +'LENGTH'=586 +'LPAD'=587 +'LTRIM'=588 +'MD5'=589 +'PARSE_IDENT'=590 +'PG_CLIENT_ENCODING'=591 +'QUOTE_IDENT'=592 +'QUOTE_LITERAL'=593 +'QUOTE_NULLABLE'=594 +'REGEXP_COUNT'=595 +'REGEXP_INSTR'=596 +'REGEXP_LIKE'=597 +'REGEXP_MATCH'=598 +'REGEXP_MATCHES'=599 +'REGEXP_REPLACE'=600 +'REGEXP_SPLIT_TO_ARRAY'=601 +'REGEXP_SPLIT_TO_TABLE'=602 +'REGEXP_SUBSTR'=603 +'REPEAT'=604 +'RPAD'=605 +'RTRIM'=606 +'SPLIT_PART'=607 +'STARTS_WITH'=608 +'STRING_TO_ARRAY'=609 +'STRING_TO_TABLE'=610 +'STRPOS'=611 +'SUBSTR'=612 +'TO_ASCII'=613 +'TO_HEX'=614 +'TRANSLATE'=615 +'UNISTR'=616 +'AGE'=617 +'CLOCK_TIMESTAMP'=618 +'DATE_BIN'=619 +'DATE_PART'=620 +'DATE_TRUNC'=621 +'ISFINITE'=622 +'JUSTIFY_DAYS'=623 +'JUSTIFY_HOURS'=624 +'JUSTIFY_INTERVAL'=625 +'MAKE_DATE'=626 +'MAKE_INTERVAL'=627 +'MAKE_TIME'=628 +'MAKE_TIMESTAMP'=629 +'MAKE_TIMESTAMPTZ'=630 +'NOW'=631 +'STATEMENT_TIMESTAMP'=632 +'TIMEOFDAY'=633 +'TRANSACTION_TIMESTAMP'=634 +'TO_TIMESTAMP'=635 +'TO_CHAR'=636 +'TO_DATE'=637 +'TO_NUMBER'=638 +'\\\\'=672 +'\''=682 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 91a4343d93..36549e4f95 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 @@ -135,7 +135,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK cities_view_sink INTO cities FROM cities_view;" +write "CREATE SINK cg_zillabase.cities_view_sink INTO cities FROM cities_view;" [0x00] write flush @@ -158,7 +158,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK cities_sink\n" +write "CREATE SINK cg_zillabase.cities_sink\n" "FROM cities\n" "WITH (\n" " connector='kafka',\n" 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 8ae0fd86c4..b3a8237cf9 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 @@ -134,7 +134,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK cities_view_sink INTO cities FROM cities_view;" +read "CREATE SINK cg_zillabase.cities_view_sink INTO cities FROM cities_view;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -156,7 +156,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK cities_sink\n" +read "CREATE SINK cg_zillabase.cities_sink\n" "FROM cities\n" "WITH (\n" " connector='kafka',\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt index 14a2584af9..545f614d5b 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt @@ -46,7 +46,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "DROP SINK weather_sink;" +write "DROP SINK cg_zillabase.weather_sink;" [0x00] write flush @@ -69,7 +69,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "DROP SINK weather_view_sink;" +write "DROP SINK cg_zillabase.weather_view_sink;" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt index ea27fa3630..cb4a44ffa9 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt @@ -48,7 +48,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "DROP SINK weather_sink;" +read "DROP SINK cg_zillabase.weather_sink;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -70,7 +70,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "DROP SINK weather_view_sink;" +read "DROP SINK cg_zillabase.weather_view_sink;" [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/query.with.multiple.statements/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt index 71bbe4e8c0..b77e467f0f 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt @@ -125,7 +125,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK cities_view_sink INTO cities FROM cities_view;" +write "CREATE SINK cg_zillabase.cities_view_sink INTO cities FROM cities_view;" [0x00] write flush @@ -148,7 +148,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK cities_sink\n" +write "CREATE SINK cg_zillabase.cities_sink\n" "FROM cities\n" "WITH (\n" " connector='kafka',\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt index 12256972cf..9456fb13ac 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt @@ -124,7 +124,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK cities_view_sink INTO cities FROM cities_view;" +read "CREATE SINK cg_zillabase.cities_view_sink INTO cities FROM cities_view;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -146,7 +146,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK cities_sink\n" +read "CREATE SINK cg_zillabase.cities_sink\n" "FROM cities\n" "WITH (\n" " connector='kafka',\n" diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java index 1c532919e2..3e495b1a88 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java @@ -32,6 +32,7 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveCreateSourceTemplate; import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveCreateTableTemplate; import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveCreateTopicTemplate; +import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDeleteFromCatalogTemplate; import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDescribeTemplate; import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDropMaterializedViewTemplate; import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDropSinkTemplate; @@ -46,7 +47,8 @@ public final class RisingwaveBindingConfig { - private static final String SCHEMA = "cg_zillabase"; + private static final String INTERNAL_SCHEMA = "cg_zillabase"; + private static final String PUBLIC_SCHEMA = "public"; public final long id; public final String name; @@ -68,6 +70,7 @@ public final class RisingwaveBindingConfig public final RisingwaveDropMaterializedViewTemplate dropMaterializedView; public final RisingwaveDropSinkTemplate dropSink; public final RisingwaveInsertIntoCatalogTemplate catalogInsert; + public final RisingwaveDeleteFromCatalogTemplate catalogDelete; public RisingwaveBindingConfig( RisingwaveConfiguration config, @@ -97,7 +100,7 @@ public RisingwaveBindingConfig( this.createTable = new RisingwaveCreateTableTemplate(); this.createSource = new RisingwaveCreateSourceTemplate(bootstrapServer, location, config.kafkaScanStartupTimestampMillis()); - this.createSink = new RisingwaveCreateSinkTemplate(SCHEMA, bootstrapServer, location); + this.createSink = new RisingwaveCreateSinkTemplate(INTERNAL_SCHEMA, bootstrapServer, location); this.createTopic = new RisingwaveCreateTopicTemplate(); this.createView = new RisingwaveCreateMaterializedViewTemplate(); this.alterTable = new RisingwaveAlterTableTemplate(); @@ -107,9 +110,10 @@ public RisingwaveBindingConfig( this.dropTable = new RisingwaveDropTableTemplate(); this.dropSource = new RisingwaveDropSourceTemplate(); this.dropMaterializedView = new RisingwaveDropMaterializedViewTemplate(); - this.dropSink = new RisingwaveDropSinkTemplate(); + this.dropSink = new RisingwaveDropSinkTemplate(INTERNAL_SCHEMA); this.createFunction = new RisingwaveCreateFunctionTemplate(options.udfs); - this.catalogInsert = new RisingwaveInsertIntoCatalogTemplate(SCHEMA); + this.catalogInsert = new RisingwaveInsertIntoCatalogTemplate(INTERNAL_SCHEMA); + this.catalogDelete = new RisingwaveDeleteFromCatalogTemplate(INTERNAL_SCHEMA); } public RisingwaveRouteConfig resolve( diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java index 40724979a9..bfdacdd9e2 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java @@ -29,7 +29,7 @@ public enum RisingwaveCommandType DROP_TOPIC_COMMAND("DROP TOPIC".getBytes()), DROP_TABLE_COMMAND("DROP TABLE".getBytes()), DROP_STREAM_COMMAND("DROP STREAM".getBytes()), - DROP_MATERIALIZED_VIEW_COMMAND("DROP MATERIALIZED VIEW".getBytes()), + DROP_ZVIEW_COMMAND("DROP ZVIEW".getBytes()), UNKNOWN_COMMAND("UNKNOWN".getBytes()); private final byte[] value; 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 c444714e7e..7c03309c7e 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 @@ -51,8 +51,7 @@ public RisingwaveCreateSinkTemplate( this.schemaRegistry = schemaRegistry; } - public String generate( - String schema, + public String generateOutgress( Map columns, View view) { @@ -72,25 +71,24 @@ public String generate( String textPrimaryKey = primaryKeyMatch.map(Map.Entry::getKey).orElse(null); String primaryKey = textPrimaryKey != null ? primaryKeyFormat.formatted(textPrimaryKey) : ""; - return String.format(sqlKafkaFormat, this.schema, viewName, viewName, bootstrapServer, + return String.format(sqlKafkaFormat, schema, viewName, viewName, bootstrapServer, schema, viewName, primaryKey, schemaRegistry); } - public String generate( - String schema, + public String generateOutgress( Table tableInfo) { String table = tableInfo.name(); - return String.format(sqlKafkaFormat, this.schema, table, table, bootstrapServer, schema, table, + return String.format(sqlKafkaFormat, schema, table, table, bootstrapServer, schema, table, primaryKeyFormat.formatted(tableInfo.primaryKeys().stream().findFirst().get()), schemaRegistry); } - public String generate( + public String generateInto( Table tableInfo) { String table = tableInfo.name(); - return String.format(sqlFormat, table, table, table); + return String.format(sqlFormat, schema, table, table, table); } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDeleteFromCatalogTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDeleteFromCatalogTemplate.java new file mode 100644 index 0000000000..16109e87ad --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDeleteFromCatalogTemplate.java @@ -0,0 +1,35 @@ +/* + * Copyright 2021-2024 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; + +public class RisingwaveDeleteFromCatalogTemplate extends RisingwaveCommandTemplate +{ + private final String sqlFormat = """ + DELETE FROM %s.%s WHERE name = '%s';\u0000"""; + private final String schema; + + public RisingwaveDeleteFromCatalogTemplate( + String schema) + { + this.schema = schema; + } + + public String generate( + String catalog, + String name) + { + return String.format(sqlFormat, schema, catalog, name); + } +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSinkTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSinkTemplate.java index fe8e499c86..166d265353 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSinkTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSinkTemplate.java @@ -17,7 +17,14 @@ public class RisingwaveDropSinkTemplate extends RisingwaveCommandTemplate { private final String sqlFormat = """ - DROP SINK %s;\u0000"""; + DROP SINK %s.%s%s;\u0000"""; + private final String schema; + + public RisingwaveDropSinkTemplate( + String schema) + { + this.schema = schema; + } public String generate( String drop) @@ -29,8 +36,6 @@ public String generate( String drop, String suffix) { - String source = "%s%s".formatted(drop, suffix); - - return String.format(sqlFormat, source); + return String.format(sqlFormat, schema, drop, suffix); } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java index 58294ec11d..f22669e190 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java @@ -25,7 +25,7 @@ public enum RisingwaveCompletionCommand ALTER_STREAM_COMMAND("ALTER_STREAM".getBytes()), DROP_TABLE_COMMAND("DROP_TABLE".getBytes()), DROP_STREAM_COMMAND("DROP_STREAM".getBytes()), - DROP_MATERIALIZED_VIEW_COMMAND("DROP_MATERIALIZED_VIEW".getBytes()); + DROP_ZVIEW_COMMAND("DROP_ZVIEW".getBytes()); private final byte[] value; 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 68e393a229..6614deb0f0 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 @@ -161,7 +161,7 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory clientTransforms.put(RisingwaveCommandType.ALTER_STREAM_COMMAND, this::decodeAlterStreamCommand); clientTransforms.put(RisingwaveCommandType.DROP_STREAM_COMMAND, this::decodeDropStreamCommand); clientTransforms.put(RisingwaveCommandType.DROP_TABLE_COMMAND, this::decodeDropTableCommand); - clientTransforms.put(RisingwaveCommandType.DROP_MATERIALIZED_VIEW_COMMAND, this::decodeDropMaterializedViewCommand); + clientTransforms.put(RisingwaveCommandType.DROP_ZVIEW_COMMAND, this::decodeDropZviewCommand); clientTransforms.put(RisingwaveCommandType.UNKNOWN_COMMAND, this::decodeUnknownCommand); this.clientTransforms = clientTransforms; } @@ -1583,11 +1583,11 @@ else if (server.commandsProcessed == 3) } else if (server.commandsProcessed == 4) { - newStatement = binding.createSink.generate(table); + newStatement = binding.createSink.generateOutgress(table); } else if (server.commandsProcessed == 5) { - newStatement = binding.createSink.generate(server.database, table); + newStatement = binding.createSink.generateOutgress(table); } statementBuffer.putBytes(progress, newStatement.getBytes()); @@ -1685,7 +1685,7 @@ else if (server.commandsProcessed == 2) else if (server.commandsProcessed == 3) { user = ZILLABASE_USER_HASH; - newStatement = binding.createSink.generate("public", server.columns, view); + newStatement = binding.createSink.generateOutgress(server.columns, view); } else if (server.commandsProcessed == 4) { @@ -1945,17 +1945,17 @@ else if (server.commandsProcessed == 1) } } - private void decodeDropMaterializedViewCommand( + private void decodeDropZviewCommand( PgsqlServer server, long traceId, long authorization, String statement) { - if (server.commandsProcessed == 3) + if (server.commandsProcessed == 4) { final int length = statement.length(); server.onCommandCompleted(traceId, authorization, length, - RisingwaveCompletionCommand.DROP_MATERIALIZED_VIEW_COMMAND); + RisingwaveCompletionCommand.DROP_ZVIEW_COMMAND); } else { @@ -1965,15 +1965,22 @@ private void decodeDropMaterializedViewCommand( String newStatement = ""; int progress = 0; + int user = DEFAULT_USER_HASH; if (server.commandsProcessed == 0) { newStatement = binding.dropTopic.generate(view); } else if (server.commandsProcessed == 1) { + user = ZILLABASE_USER_HASH; newStatement = binding.dropSink.generate(view); } else if (server.commandsProcessed == 2) + { + user = ZILLABASE_USER_HASH; + newStatement = binding.catalogDelete.generate(ZVIEW_TABLE_NAME, view); + } + else if (server.commandsProcessed == 3) { newStatement = binding.dropMaterializedView.generate(view); } @@ -1984,7 +1991,7 @@ else if (server.commandsProcessed == 2) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.completionCommand = ignoreFlushCommand; } @@ -2010,7 +2017,7 @@ private void decodeUnknownCommand( final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, length); - final PgsqlClient client = server.streamsByRouteIds.get(route.id); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, length); client.completionCommand = proxyFlushCommand; } diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java index 929fa16d45..6254a17b18 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java @@ -235,9 +235,9 @@ public void shouldDropTable() throws Exception @Test @Configuration("proxy.yaml") @Specification({ - "${pgsql}/drop.materialized.view/client", - "${effective}/drop.materialized.view/server" }) - public void shouldDropMaterializedView() throws Exception + "${pgsql}/drop.zview/client", + "${effective}/drop.zview/server" }) + public void shouldDropZview() throws Exception { k3po.finish(); } From d1b247cb274c6677765ee84ccb8608f2c7a03d48 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 26 Nov 2024 16:22:22 -0800 Subject: [PATCH 019/104] 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 6614deb0f0..d446a371b5 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 @@ -1738,7 +1738,7 @@ private void decodeCreateFunctionCommand( final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } From 546473cb27624decc36a60ccb99cae01bea7b8c4 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 26 Nov 2024 16:59:14 -0800 Subject: [PATCH 020/104] Checkpoint --- .../alter.stream.add.column/client.rpt | 2 +- .../alter.stream.add.column/server.rpt | 2 +- .../effective/create.stream/client.rpt | 6 +- .../effective/create.stream/server.rpt | 6 +- .../client.rpt | 6 +- .../server.rpt | 6 +- .../create.table.with.primary.key/client.rpt | 6 +- .../create.table.with.primary.key/server.rpt | 6 +- .../streams/effective/create.zview/client.rpt | 4 +- .../streams/effective/create.zview/server.rpt | 4 +- .../streams/effective/drop.stream/client.rpt | 4 +- .../streams/effective/drop.stream/server.rpt | 4 +- .../streams/effective/drop.table/client.rpt | 4 +- .../streams/effective/drop.table/server.rpt | 4 +- .../streams/effective/drop.zview/client.rpt | 4 +- .../streams/effective/drop.zview/server.rpt | 4 +- .../query.with.multiple.statements/client.rpt | 6 +- .../query.with.multiple.statements/server.rpt | 6 +- .../create.stream.with.includes/client.rpt | 59 ++--------------- .../create.stream.with.includes/server.rpt | 66 ++----------------- .../config/RisingwaveBindingConfig.java | 2 +- .../RisingwaveCreateSinkTemplate.java | 6 +- .../stream/RisingwaveProxyFactory.java | 2 +- 23 files changed, 60 insertions(+), 159 deletions(-) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt index 35798afca2..4b3d9e6bd3 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt @@ -33,7 +33,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase_admin") + .parameter("user", "root") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt index 5b03da9fa3..9db50357d7 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt @@ -33,7 +33,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase_admin") + .parameter("user", "root") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt index 0bfd7ea84e..1083f54078 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt @@ -33,7 +33,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase_admin") + .parameter("user", "root") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -46,11 +46,11 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SOURCE IF NOT EXISTS zb_catalog.weather (*)\n" +write "CREATE SOURCE IF NOT EXISTS weather (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='public.weather',\n" + " topic='dev.weather',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt index 3805ecdbff..dc6b08f826 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt @@ -33,7 +33,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase_admin") + .parameter("user", "root") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -48,11 +48,11 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SOURCE IF NOT EXISTS zb_catalog.weather (*)\n" +read "CREATE SOURCE IF NOT EXISTS weather (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='public.weather',\n" + " topic='dev.weather',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" 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 36549e4f95..4b3359322d 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 @@ -135,7 +135,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK cg_zillabase.cities_view_sink INTO cities FROM cities_view;" +write "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" [0x00] write flush @@ -158,12 +158,12 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK cg_zillabase.cities_sink\n" +write "CREATE SINK zb_catalog.cities_sink\n" "FROM cities\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.cities',\n" + " topic='public.cities',\n" " primary_key='id'\n" ") FORMAT UPSERT ENCODE AVRO (\n" " schema.registry='http://localhost:8081'\n" 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 b3a8237cf9..fd3c87a022 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 @@ -134,7 +134,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK cg_zillabase.cities_view_sink INTO cities FROM cities_view;" +read "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -156,12 +156,12 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK cg_zillabase.cities_sink\n" +read "CREATE SINK zb_catalog.cities_sink\n" "FROM cities\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.cities',\n" + " topic='public.cities',\n" " primary_key='id'\n" ") FORMAT UPSERT ENCODE AVRO (\n" " schema.registry='http://localhost:8081'\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt index 09deca6462..4c9f82ff6c 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt @@ -125,7 +125,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK cities_view_sink INTO cities FROM cities_view;" +write "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" [0x00] write flush @@ -148,12 +148,12 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK cities_sink\n" +write "CREATE SINK zb_catalog.cities_sink\n" "FROM cities\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.cities',\n" + " topic='public.cities',\n" " primary_key='id'\n" ") FORMAT UPSERT ENCODE AVRO (\n" " schema.registry='http://localhost:8081'\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt index 90128c45af..15be29f503 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt @@ -124,7 +124,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK cities_view_sink INTO cities FROM cities_view;" +read "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -146,12 +146,12 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK cities_sink\n" +read "CREATE SINK zb_catalog.cities_sink\n" "FROM cities\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.cities',\n" + " topic='public.cities',\n" " primary_key='id'\n" ") FORMAT UPSERT ENCODE AVRO (\n" " schema.registry='http://localhost:8081'\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt index e6811bc12f..9c55d70962 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK cg_zillabase.distinct_cities_sink\n" +write "CREATE SINK zb_catalog.distinct_cities_sink\n" "FROM distinct_cities\n" "WITH (\n" " connector='kafka',\n" @@ -64,7 +64,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "INSERT INTO cg_zillabase.zviews (name, sql) VALUES " +write "INSERT INTO zb_catalog.zviews (name, sql) VALUES " "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;" [0x00] "');" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt index b5f2b64680..aca051e9e5 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt @@ -34,7 +34,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK cg_zillabase.distinct_cities_sink\n" +read "CREATE SINK zb_catalog.distinct_cities_sink\n" "FROM distinct_cities\n" "WITH (\n" " connector='kafka',\n" @@ -65,7 +65,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "INSERT INTO cg_zillabase.zviews (name, sql) VALUES " +read "INSERT INTO zb_catalog.zviews (name, sql) VALUES " "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;" [0x00] "');" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt index 93328866fd..83f08efde2 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt @@ -33,7 +33,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase_admin") + .parameter("user", "root") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -46,7 +46,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "DROP SOURCE zb_catalog.weather;" +write "DROP SOURCE weather;" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt index 0314f8dffa..002bf44a12 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt @@ -33,7 +33,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase_admin") + .parameter("user", "root") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -48,7 +48,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "DROP SOURCE zb_catalog.weather;" +read "DROP SOURCE weather;" [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/drop.table/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt index 545f614d5b..dd51a58471 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt @@ -46,7 +46,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "DROP SINK cg_zillabase.weather_sink;" +write "DROP SINK zb_catalog.weather_sink;" [0x00] write flush @@ -69,7 +69,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "DROP SINK cg_zillabase.weather_view_sink;" +write "DROP SINK zb_catalog.weather_view_sink;" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt index cb4a44ffa9..9c3a0a1d53 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt @@ -48,7 +48,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "DROP SINK cg_zillabase.weather_sink;" +read "DROP SINK zb_catalog.weather_sink;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -70,7 +70,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "DROP SINK cg_zillabase.weather_view_sink;" +read "DROP SINK zb_catalog.weather_view_sink;" [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/drop.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt index 78a6919bce..4722497836 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "DROP SINK cg_zillabase.weather_sink;" +write "DROP SINK zb_catalog.weather_sink;" [0x00] write flush @@ -55,7 +55,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "DELETE FROM cg_zillabase.zviews WHERE name = 'weather';" +write "DELETE FROM zb_catalog.zviews WHERE name = 'weather';" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt index 9c14fb6043..03d86a91cb 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt @@ -34,7 +34,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "DROP SINK cg_zillabase.weather_sink;" +read "DROP SINK zb_catalog.weather_sink;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -56,7 +56,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "DELETE FROM cg_zillabase.zviews WHERE name = 'weather';" +read "DELETE FROM zb_catalog.zviews WHERE name = 'weather';" [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/query.with.multiple.statements/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt index b77e467f0f..ec1f19c820 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt @@ -125,7 +125,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK cg_zillabase.cities_view_sink INTO cities FROM cities_view;" +write "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" [0x00] write flush @@ -148,12 +148,12 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK cg_zillabase.cities_sink\n" +write "CREATE SINK zb_catalog.cities_sink\n" "FROM cities\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.cities',\n" + " topic='public.cities',\n" " primary_key='id'\n" ") FORMAT UPSERT ENCODE AVRO (\n" " schema.registry='http://localhost:8081'\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt index 9456fb13ac..c2b6132505 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt @@ -124,7 +124,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK cg_zillabase.cities_view_sink INTO cities FROM cities_view;" +read "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -146,12 +146,12 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK cg_zillabase.cities_sink\n" +read "CREATE SINK zb_catalog.cities_sink\n" "FROM cities\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.cities',\n" + " topic='public.cities',\n" " primary_key='id'\n" ") FORMAT UPSERT ENCODE AVRO (\n" " schema.registry='http://localhost:8081'\n" 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 2d5f01a96d..27db8e7f31 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 @@ -13,7 +13,7 @@ # specific language governing permissions and limitations under the License. # -connect "zilla://streams/app1" +connect "zilla://streams/app0" option zilla:window 8192 option zilla:transmission "duplex" @@ -32,57 +32,9 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -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 zilla_timestamp\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_SOURCE") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -connect "zilla://streams/app2" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "CREATE TOPIC IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE);" +write "CREATE STREAM IF NOT EXISTS weather " + "(city VARCHAR, temperature DOUBLE, date DATE," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP);" [0x00] write flush @@ -90,7 +42,7 @@ write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TOPIC") + .tag("CREATE_STREAM") .build() .build()} @@ -100,4 +52,3 @@ read advised zilla:flush ${pgsql:flushEx() .status("IDLE") .build() .build()} - 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 49e1b212ee..8237e5affb 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 @@ -13,7 +13,9 @@ # specific language governing permissions and limitations under the License. # -accept "zilla://streams/app1" +property serverAddress "zilla://streams/app0" + +accept ${serverAddress} option zilla:window 8192 option zilla:transmission "duplex" @@ -29,81 +31,27 @@ read zilla:begin.ext ${pgsql:beginEx() connected -read await CREATE_TOPIC_COMPLETED - read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -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 zilla_timestamp\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" +read "CREATE STREAM IF NOT EXISTS weather " + "(city VARCHAR, temperature DOUBLE, date DATE," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP);" [0x00] -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_SOURCE") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - - -accept "zilla://streams/app2" - option zilla:window 8192 - option zilla:transmission "duplex" - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "CREATE TOPIC IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE);" - [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TOPIC") + .tag("CREATE_STREAM") .build() .build()} -write notify CREATE_TOPIC_COMPLETED - write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .ready() .status("IDLE") .build() .build()} - diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java index 3e495b1a88..0592d701d2 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java @@ -47,7 +47,7 @@ public final class RisingwaveBindingConfig { - private static final String INTERNAL_SCHEMA = "cg_zillabase"; + private static final String INTERNAL_SCHEMA = "zb_catalog"; private static final String PUBLIC_SCHEMA = "public"; public final long id; 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 7c03309c7e..7d576fad74 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 @@ -71,8 +71,9 @@ public String generateOutgress( String textPrimaryKey = primaryKeyMatch.map(Map.Entry::getKey).orElse(null); String primaryKey = textPrimaryKey != null ? primaryKeyFormat.formatted(textPrimaryKey) : ""; + // TODO: Replace 'public' with actual schema return String.format(sqlKafkaFormat, schema, viewName, viewName, bootstrapServer, - schema, viewName, primaryKey, schemaRegistry); + "public", viewName, primaryKey, schemaRegistry); } public String generateOutgress( @@ -80,7 +81,8 @@ public String generateOutgress( { String table = tableInfo.name(); - return String.format(sqlKafkaFormat, schema, table, table, bootstrapServer, schema, table, + // TODO: Replace 'public' with actual schema + return String.format(sqlKafkaFormat, schema, table, table, bootstrapServer, "public", table, primaryKeyFormat.formatted(tableInfo.primaryKeys().stream().findFirst().get()), schemaRegistry); } 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 d446a371b5..d2715d0f0b 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 @@ -1583,7 +1583,7 @@ else if (server.commandsProcessed == 3) } else if (server.commandsProcessed == 4) { - newStatement = binding.createSink.generateOutgress(table); + newStatement = binding.createSink.generateInto(table); } else if (server.commandsProcessed == 5) { From 99b72166cfb3ff23d152188347ca63d5671aa466 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 26 Nov 2024 17:00:29 -0800 Subject: [PATCH 021/104] Remove uncessary files --- .../binding-pgsql/gen/PostgreSqlLexer.interp | 2083 ------- .../binding-pgsql/gen/PostgreSqlLexer.java | 5263 ----------------- .../binding-pgsql/gen/PostgreSqlLexer.tokens | 1320 ----- 3 files changed, 8666 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 b32028bf29..0000000000 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.interp +++ /dev/null @@ -1,2083 +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' -'ZVIEW' -'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 -ZVIEW -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 -ZVIEW -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, 682, 6816, 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, 2, 697, 7, 697, 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, 1467, 8, 27, 11, 27, 12, 27, 1468, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1475, 8, 28, 11, 28, 12, 28, 1476, 1, 28, 1, 28, 1, 28, 3, 28, 1482, 8, 28, 1, 28, 1, 28, 4, 28, 1486, 8, 28, 11, 28, 12, 28, 1487, 1, 28, 3, 28, 1491, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1500, 8, 29, 10, 29, 12, 29, 1503, 9, 29, 1, 29, 1, 29, 3, 29, 1507, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1512, 8, 29, 11, 29, 12, 29, 1513, 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, 101, 1, 101, 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, 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, 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, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 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, 112, 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, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 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, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 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, 118, 1, 118, 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, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 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, 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, 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, 131, 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, 134, 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, 136, 1, 136, 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, 138, 1, 138, 1, 138, 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, 142, 1, 142, 1, 142, 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, 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, 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, 147, 1, 147, 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, 149, 1, 150, 1, 150, 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, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 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, 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, 157, 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, 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, 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, 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, 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, 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, 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, 171, 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, 172, 1, 172, 1, 172, 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, 174, 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, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 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, 181, 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, 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, 185, 1, 185, 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, 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, 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, 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, 194, 1, 194, 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, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 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, 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, 201, 1, 201, 1, 201, 1, 201, 1, 201, 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, 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, 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, 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, 210, 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, 212, 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, 214, 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, 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, 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, 220, 1, 220, 1, 220, 1, 221, 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, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 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, 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, 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, 231, 1, 231, 1, 231, 1, 231, 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, 235, 1, 235, 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, 237, 1, 237, 1, 237, 1, 237, 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, 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, 241, 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, 243, 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, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 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, 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, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 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, 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, 257, 1, 257, 1, 257, 1, 257, 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, 258, 1, 258, 1, 258, 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, 261, 1, 261, 1, 261, 1, 261, 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, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 269, 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, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 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, 277, 1, 277, 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, 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, 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, 284, 1, 284, 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, 286, 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, 288, 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, 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, 291, 1, 291, 1, 291, 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, 294, 1, 295, 1, 295, 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, 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, 298, 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, 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, 302, 1, 302, 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, 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, 309, 1, 309, 1, 309, 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, 311, 1, 311, 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, 314, 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, 315, 1, 316, 1, 316, 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, 319, 1, 319, 1, 319, 1, 319, 1, 319, 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, 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, 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, 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, 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, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 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, 336, 1, 336, 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, 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, 340, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 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, 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, 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, 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, 350, 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, 353, 1, 353, 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, 355, 1, 355, 1, 355, 1, 355, 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, 357, 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, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 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, 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, 363, 1, 363, 1, 363, 1, 363, 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, 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, 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, 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, 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, 374, 1, 374, 1, 374, 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, 377, 1, 377, 1, 377, 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, 378, 1, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 384, 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, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 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, 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, 391, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 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, 396, 1, 396, 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, 398, 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, 400, 1, 400, 1, 400, 1, 400, 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, 402, 1, 402, 1, 402, 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, 404, 1, 404, 1, 404, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 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, 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, 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, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 413, 1, 413, 1, 413, 1, 413, 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, 416, 1, 416, 1, 416, 1, 416, 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, 418, 1, 418, 1, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 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, 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, 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, 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, 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, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 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, 430, 1, 430, 1, 430, 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, 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, 434, 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, 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, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 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, 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, 443, 1, 443, 1, 443, 1, 443, 1, 444, 1, 444, 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, 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, 449, 1, 449, 1, 449, 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, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 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, 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, 457, 1, 458, 1, 458, 1, 458, 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, 460, 1, 460, 1, 460, 1, 460, 1, 461, 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, 463, 1, 463, 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, 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, 467, 1, 467, 1, 467, 1, 467, 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, 469, 1, 469, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 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, 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, 478, 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, 480, 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, 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, 484, 1, 484, 1, 484, 1, 484, 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, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 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, 493, 1, 493, 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, 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, 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, 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, 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, 500, 1, 500, 1, 500, 1, 500, 1, 501, 1, 501, 1, 501, 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, 502, 1, 502, 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, 506, 1, 506, 1, 506, 1, 506, 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, 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, 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, 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, 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, 516, 1, 516, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 519, 1, 519, 1, 519, 1, 519, 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, 522, 1, 522, 1, 522, 1, 523, 1, 523, 1, 523, 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, 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, 528, 1, 528, 1, 528, 1, 528, 1, 528, 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, 531, 1, 531, 1, 531, 1, 531, 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, 534, 1, 534, 1, 534, 1, 534, 1, 534, 1, 534, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 536, 1, 536, 1, 536, 1, 536, 1, 537, 1, 537, 1, 537, 1, 537, 1, 538, 1, 538, 1, 538, 1, 539, 1, 539, 1, 539, 1, 539, 1, 539, 1, 539, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 541, 1, 541, 1, 541, 1, 541, 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, 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, 546, 1, 547, 1, 547, 1, 547, 1, 547, 1, 547, 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, 549, 1, 549, 1, 549, 1, 549, 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, 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, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 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, 559, 1, 559, 1, 559, 1, 559, 1, 559, 1, 559, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 562, 1, 562, 1, 562, 1, 562, 1, 563, 1, 563, 1, 563, 1, 563, 1, 563, 1, 564, 1, 564, 1, 564, 1, 564, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 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, 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, 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, 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, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 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, 580, 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, 583, 1, 583, 1, 584, 1, 584, 1, 584, 1, 584, 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, 586, 1, 586, 1, 586, 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, 588, 1, 589, 1, 589, 1, 589, 1, 589, 1, 589, 1, 589, 1, 589, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 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, 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, 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, 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, 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, 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, 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, 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, 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, 606, 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, 608, 1, 608, 1, 608, 1, 608, 1, 608, 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, 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, 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, 616, 1, 616, 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, 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, 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, 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, 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, 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, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 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, 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, 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, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 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, 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, 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, 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, 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, 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, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 642, 1, 642, 5, 642, 6348, 8, 642, 10, 642, 12, 642, 6351, 9, 642, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 3, 643, 6359, 8, 643, 1, 644, 1, 644, 3, 644, 6363, 8, 644, 1, 645, 1, 645, 3, 645, 6367, 8, 645, 1, 646, 1, 646, 1, 646, 1, 647, 1, 647, 1, 647, 1, 647, 5, 647, 6376, 8, 647, 10, 647, 12, 647, 6379, 9, 647, 1, 648, 1, 648, 1, 648, 1, 649, 1, 649, 1, 649, 1, 649, 5, 649, 6388, 8, 649, 10, 649, 12, 649, 6391, 9, 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, 653, 1, 654, 1, 654, 1, 654, 1, 655, 1, 655, 1, 655, 1, 655, 5, 655, 6416, 8, 655, 10, 655, 12, 655, 6419, 9, 655, 1, 656, 1, 656, 1, 656, 1, 656, 1, 656, 1, 656, 1, 657, 1, 657, 1, 657, 1, 658, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 3, 659, 6436, 8, 659, 1, 659, 1, 659, 1, 659, 1, 659, 1, 659, 1, 660, 1, 660, 5, 660, 6445, 8, 660, 10, 660, 12, 660, 6448, 9, 660, 1, 661, 1, 661, 1, 661, 1, 662, 1, 662, 1, 662, 5, 662, 6456, 8, 662, 10, 662, 12, 662, 6459, 9, 662, 1, 663, 1, 663, 1, 663, 1, 664, 1, 664, 1, 664, 1, 665, 1, 665, 1, 665, 1, 666, 1, 666, 1, 666, 5, 666, 6473, 8, 666, 10, 666, 12, 666, 6476, 9, 666, 1, 667, 1, 667, 1, 667, 1, 668, 1, 668, 1, 668, 1, 669, 1, 669, 1, 670, 1, 670, 1, 670, 1, 670, 1, 670, 1, 670, 1, 671, 1, 671, 1, 671, 3, 671, 6495, 8, 671, 1, 671, 1, 671, 3, 671, 6499, 8, 671, 1, 671, 3, 671, 6502, 8, 671, 1, 671, 1, 671, 1, 671, 1, 671, 3, 671, 6508, 8, 671, 1, 671, 3, 671, 6511, 8, 671, 1, 671, 1, 671, 1, 671, 3, 671, 6516, 8, 671, 1, 671, 1, 671, 3, 671, 6520, 8, 671, 1, 672, 4, 672, 6523, 8, 672, 11, 672, 12, 672, 6524, 1, 673, 1, 673, 1, 673, 5, 673, 6530, 8, 673, 10, 673, 12, 673, 6533, 9, 673, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 5, 674, 6543, 8, 674, 10, 674, 12, 674, 6546, 9, 674, 1, 674, 1, 674, 1, 675, 4, 675, 6551, 8, 675, 11, 675, 12, 675, 6552, 1, 675, 1, 675, 1, 676, 1, 676, 3, 676, 6559, 8, 676, 1, 676, 3, 676, 6562, 8, 676, 1, 676, 1, 676, 1, 677, 1, 677, 1, 677, 1, 677, 5, 677, 6570, 8, 677, 10, 677, 12, 677, 6573, 9, 677, 1, 677, 1, 677, 1, 678, 1, 678, 1, 678, 1, 678, 5, 678, 6581, 8, 678, 10, 678, 12, 678, 6584, 9, 678, 1, 678, 1, 678, 1, 678, 4, 678, 6589, 8, 678, 11, 678, 12, 678, 6590, 1, 678, 1, 678, 4, 678, 6595, 8, 678, 11, 678, 12, 678, 6596, 1, 678, 5, 678, 6600, 8, 678, 10, 678, 12, 678, 6603, 9, 678, 1, 678, 5, 678, 6606, 8, 678, 10, 678, 12, 678, 6609, 9, 678, 1, 678, 1, 678, 1, 678, 1, 678, 1, 678, 1, 679, 1, 679, 1, 679, 1, 679, 5, 679, 6620, 8, 679, 10, 679, 12, 679, 6623, 9, 679, 1, 679, 1, 679, 1, 679, 4, 679, 6628, 8, 679, 11, 679, 12, 679, 6629, 1, 679, 1, 679, 4, 679, 6634, 8, 679, 11, 679, 12, 679, 6635, 1, 679, 3, 679, 6639, 8, 679, 5, 679, 6641, 8, 679, 10, 679, 12, 679, 6644, 9, 679, 1, 679, 4, 679, 6647, 8, 679, 11, 679, 12, 679, 6648, 1, 679, 4, 679, 6652, 8, 679, 11, 679, 12, 679, 6653, 1, 679, 5, 679, 6657, 8, 679, 10, 679, 12, 679, 6660, 9, 679, 1, 679, 3, 679, 6663, 8, 679, 1, 679, 1, 679, 1, 680, 1, 680, 1, 680, 1, 680, 5, 680, 6671, 8, 680, 10, 680, 12, 680, 6674, 9, 680, 1, 680, 5, 680, 6677, 8, 680, 10, 680, 12, 680, 6680, 9, 680, 1, 680, 1, 680, 5, 680, 6684, 8, 680, 10, 680, 12, 680, 6687, 9, 680, 3, 680, 6689, 8, 680, 1, 681, 1, 681, 1, 681, 1, 682, 1, 682, 1, 683, 1, 683, 1, 683, 1, 683, 1, 683, 1, 684, 1, 684, 3, 684, 6703, 8, 684, 1, 684, 1, 684, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 3, 685, 6727, 8, 685, 1, 685, 5, 685, 6730, 8, 685, 10, 685, 12, 685, 6733, 9, 685, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 687, 1, 687, 3, 687, 6742, 8, 687, 1, 687, 1, 687, 1, 688, 1, 688, 1, 688, 1, 688, 1, 688, 5, 688, 6751, 8, 688, 10, 688, 12, 688, 6754, 9, 688, 1, 689, 1, 689, 1, 689, 1, 689, 1, 689, 1, 690, 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, 1, 695, 1, 695, 1, 695, 1, 695, 1, 696, 4, 696, 6793, 8, 696, 11, 696, 12, 696, 6794, 1, 696, 1, 696, 5, 696, 6799, 8, 696, 10, 696, 12, 696, 6802, 9, 696, 3, 696, 6804, 8, 696, 1, 697, 1, 697, 3, 697, 6808, 8, 697, 1, 697, 1, 697, 1, 697, 1, 697, 1, 697, 1, 697, 1, 697, 0, 0, 698, 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, 639, 1291, 0, 1293, 0, 1295, 0, 1297, 640, 1299, 641, 1301, 642, 1303, 643, 1305, 644, 1307, 645, 1309, 646, 1311, 647, 1313, 648, 1315, 649, 1317, 0, 1319, 650, 1321, 651, 1323, 652, 1325, 0, 1327, 653, 1329, 654, 1331, 655, 1333, 656, 1335, 657, 1337, 658, 1339, 659, 1341, 660, 1343, 661, 1345, 662, 1347, 663, 1349, 0, 1351, 664, 1353, 665, 1355, 666, 1357, 667, 1359, 668, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 673, 1371, 674, 1373, 675, 1375, 0, 1377, 676, 1379, 677, 1381, 0, 1383, 0, 1385, 0, 1387, 678, 1389, 0, 1391, 0, 1393, 682, 1395, 679, 1397, 680, 1399, 681, 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, 87, 87, 119, 119, 2, 0, 81, 81, 113, 113, 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, 6888, 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, 1289, 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, 1323, 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, 1347, 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, 0, 1369, 1, 0, 0, 0, 1, 1371, 1, 0, 0, 0, 1, 1373, 1, 0, 0, 0, 1, 1377, 1, 0, 0, 0, 1, 1379, 1, 0, 0, 0, 2, 1383, 1, 0, 0, 0, 2, 1385, 1, 0, 0, 0, 2, 1387, 1, 0, 0, 0, 3, 1389, 1, 0, 0, 0, 3, 1391, 1, 0, 0, 0, 3, 1393, 1, 0, 0, 0, 3, 1395, 1, 0, 0, 0, 4, 1397, 1, 0, 0, 0, 4, 1399, 1, 0, 0, 0, 5, 1401, 1, 0, 0, 0, 7, 1403, 1, 0, 0, 0, 9, 1405, 1, 0, 0, 0, 11, 1407, 1, 0, 0, 0, 13, 1409, 1, 0, 0, 0, 15, 1411, 1, 0, 0, 0, 17, 1413, 1, 0, 0, 0, 19, 1415, 1, 0, 0, 0, 21, 1417, 1, 0, 0, 0, 23, 1419, 1, 0, 0, 0, 25, 1421, 1, 0, 0, 0, 27, 1423, 1, 0, 0, 0, 29, 1425, 1, 0, 0, 0, 31, 1427, 1, 0, 0, 0, 33, 1429, 1, 0, 0, 0, 35, 1431, 1, 0, 0, 0, 37, 1433, 1, 0, 0, 0, 39, 1435, 1, 0, 0, 0, 41, 1438, 1, 0, 0, 0, 43, 1441, 1, 0, 0, 0, 45, 1444, 1, 0, 0, 0, 47, 1447, 1, 0, 0, 0, 49, 1450, 1, 0, 0, 0, 51, 1453, 1, 0, 0, 0, 53, 1456, 1, 0, 0, 0, 55, 1459, 1, 0, 0, 0, 57, 1462, 1, 0, 0, 0, 59, 1464, 1, 0, 0, 0, 61, 1490, 1, 0, 0, 0, 63, 1501, 1, 0, 0, 0, 65, 1517, 1, 0, 0, 0, 67, 1519, 1, 0, 0, 0, 69, 1521, 1, 0, 0, 0, 71, 1523, 1, 0, 0, 0, 73, 1527, 1, 0, 0, 0, 75, 1535, 1, 0, 0, 0, 77, 1543, 1, 0, 0, 0, 79, 1547, 1, 0, 0, 0, 81, 1551, 1, 0, 0, 0, 83, 1557, 1, 0, 0, 0, 85, 1560, 1, 0, 0, 0, 87, 1564, 1, 0, 0, 0, 89, 1575, 1, 0, 0, 0, 91, 1580, 1, 0, 0, 0, 93, 1585, 1, 0, 0, 0, 95, 1590, 1, 0, 0, 0, 97, 1596, 1, 0, 0, 0, 99, 1604, 1, 0, 0, 0, 101, 1611, 1, 0, 0, 0, 103, 1622, 1, 0, 0, 0, 105, 1629, 1, 0, 0, 0, 107, 1645, 1, 0, 0, 0, 109, 1658, 1, 0, 0, 0, 111, 1671, 1, 0, 0, 0, 113, 1684, 1, 0, 0, 0, 115, 1702, 1, 0, 0, 0, 117, 1715, 1, 0, 0, 0, 119, 1723, 1, 0, 0, 0, 121, 1734, 1, 0, 0, 0, 123, 1739, 1, 0, 0, 0, 125, 1748, 1, 0, 0, 0, 127, 1751, 1, 0, 0, 0, 129, 1756, 1, 0, 0, 0, 131, 1763, 1, 0, 0, 0, 133, 1769, 1, 0, 0, 0, 135, 1775, 1, 0, 0, 0, 137, 1779, 1, 0, 0, 0, 139, 1787, 1, 0, 0, 0, 141, 1792, 1, 0, 0, 0, 143, 1798, 1, 0, 0, 0, 145, 1804, 1, 0, 0, 0, 147, 1811, 1, 0, 0, 0, 149, 1814, 1, 0, 0, 0, 151, 1824, 1, 0, 0, 0, 153, 1834, 1, 0, 0, 0, 155, 1839, 1, 0, 0, 0, 157, 1847, 1, 0, 0, 0, 159, 1855, 1, 0, 0, 0, 161, 1861, 1, 0, 0, 0, 163, 1871, 1, 0, 0, 0, 165, 1886, 1, 0, 0, 0, 167, 1890, 1, 0, 0, 0, 169, 1895, 1, 0, 0, 0, 171, 1902, 1, 0, 0, 0, 173, 1905, 1, 0, 0, 0, 175, 1910, 1, 0, 0, 0, 177, 1913, 1, 0, 0, 0, 179, 1919, 1, 0, 0, 0, 181, 1927, 1, 0, 0, 0, 183, 1935, 1, 0, 0, 0, 185, 1946, 1, 0, 0, 0, 187, 1956, 1, 0, 0, 0, 189, 1963, 1, 0, 0, 0, 191, 1976, 1, 0, 0, 0, 193, 1981, 1, 0, 0, 0, 195, 1991, 1, 0, 0, 0, 197, 1997, 1, 0, 0, 0, 199, 2002, 1, 0, 0, 0, 201, 2005, 1, 0, 0, 0, 203, 2011, 1, 0, 0, 0, 205, 2018, 1, 0, 0, 0, 207, 2024, 1, 0, 0, 0, 209, 2033, 1, 0, 0, 0, 211, 2038, 1, 0, 0, 0, 213, 2044, 1, 0, 0, 0, 215, 2051, 1, 0, 0, 0, 217, 2056, 1, 0, 0, 0, 219, 2062, 1, 0, 0, 0, 221, 2071, 1, 0, 0, 0, 223, 2076, 1, 0, 0, 0, 225, 2082, 1, 0, 0, 0, 227, 2089, 1, 0, 0, 0, 229, 2094, 1, 0, 0, 0, 231, 2108, 1, 0, 0, 0, 233, 2115, 1, 0, 0, 0, 235, 2125, 1, 0, 0, 0, 237, 2138, 1, 0, 0, 0, 239, 2144, 1, 0, 0, 0, 241, 2159, 1, 0, 0, 0, 243, 2166, 1, 0, 0, 0, 245, 2171, 1, 0, 0, 0, 247, 2177, 1, 0, 0, 0, 249, 2183, 1, 0, 0, 0, 251, 2186, 1, 0, 0, 0, 253, 2193, 1, 0, 0, 0, 255, 2198, 1, 0, 0, 0, 257, 2203, 1, 0, 0, 0, 259, 2208, 1, 0, 0, 0, 261, 2216, 1, 0, 0, 0, 263, 2224, 1, 0, 0, 0, 265, 2230, 1, 0, 0, 0, 267, 2235, 1, 0, 0, 0, 269, 2244, 1, 0, 0, 0, 271, 2250, 1, 0, 0, 0, 273, 2258, 1, 0, 0, 0, 275, 2266, 1, 0, 0, 0, 277, 2272, 1, 0, 0, 0, 279, 2281, 1, 0, 0, 0, 281, 2288, 1, 0, 0, 0, 283, 2295, 1, 0, 0, 0, 285, 2299, 1, 0, 0, 0, 287, 2305, 1, 0, 0, 0, 289, 2311, 1, 0, 0, 0, 291, 2321, 1, 0, 0, 0, 293, 2326, 1, 0, 0, 0, 295, 2332, 1, 0, 0, 0, 297, 2339, 1, 0, 0, 0, 299, 2349, 1, 0, 0, 0, 301, 2360, 1, 0, 0, 0, 303, 2363, 1, 0, 0, 0, 305, 2373, 1, 0, 0, 0, 307, 2382, 1, 0, 0, 0, 309, 2389, 1, 0, 0, 0, 311, 2395, 1, 0, 0, 0, 313, 2398, 1, 0, 0, 0, 315, 2404, 1, 0, 0, 0, 317, 2411, 1, 0, 0, 0, 319, 2419, 1, 0, 0, 0, 321, 2428, 1, 0, 0, 0, 323, 2436, 1, 0, 0, 0, 325, 2442, 1, 0, 0, 0, 327, 2458, 1, 0, 0, 0, 329, 2469, 1, 0, 0, 0, 331, 2475, 1, 0, 0, 0, 333, 2481, 1, 0, 0, 0, 335, 2489, 1, 0, 0, 0, 337, 2497, 1, 0, 0, 0, 339, 2506, 1, 0, 0, 0, 341, 2513, 1, 0, 0, 0, 343, 2523, 1, 0, 0, 0, 345, 2537, 1, 0, 0, 0, 347, 2548, 1, 0, 0, 0, 349, 2560, 1, 0, 0, 0, 351, 2568, 1, 0, 0, 0, 353, 2577, 1, 0, 0, 0, 355, 2588, 1, 0, 0, 0, 357, 2593, 1, 0, 0, 0, 359, 2598, 1, 0, 0, 0, 361, 2602, 1, 0, 0, 0, 363, 2609, 1, 0, 0, 0, 365, 2615, 1, 0, 0, 0, 367, 2620, 1, 0, 0, 0, 369, 2629, 1, 0, 0, 0, 371, 2633, 1, 0, 0, 0, 373, 2644, 1, 0, 0, 0, 375, 2652, 1, 0, 0, 0, 377, 2661, 1, 0, 0, 0, 379, 2670, 1, 0, 0, 0, 381, 2678, 1, 0, 0, 0, 383, 2685, 1, 0, 0, 0, 385, 2695, 1, 0, 0, 0, 387, 2706, 1, 0, 0, 0, 389, 2717, 1, 0, 0, 0, 391, 2725, 1, 0, 0, 0, 393, 2733, 1, 0, 0, 0, 395, 2742, 1, 0, 0, 0, 397, 2749, 1, 0, 0, 0, 399, 2756, 1, 0, 0, 0, 401, 2761, 1, 0, 0, 0, 403, 2766, 1, 0, 0, 0, 405, 2773, 1, 0, 0, 0, 407, 2782, 1, 0, 0, 0, 409, 2792, 1, 0, 0, 0, 411, 2797, 1, 0, 0, 0, 413, 2804, 1, 0, 0, 0, 415, 2810, 1, 0, 0, 0, 417, 2818, 1, 0, 0, 0, 419, 2828, 1, 0, 0, 0, 421, 2838, 1, 0, 0, 0, 423, 2846, 1, 0, 0, 0, 425, 2854, 1, 0, 0, 0, 427, 2864, 1, 0, 0, 0, 429, 2873, 1, 0, 0, 0, 431, 2880, 1, 0, 0, 0, 433, 2886, 1, 0, 0, 0, 435, 2896, 1, 0, 0, 0, 437, 2902, 1, 0, 0, 0, 439, 2910, 1, 0, 0, 0, 441, 2919, 1, 0, 0, 0, 443, 2929, 1, 0, 0, 0, 445, 2936, 1, 0, 0, 0, 447, 2944, 1, 0, 0, 0, 449, 2952, 1, 0, 0, 0, 451, 2959, 1, 0, 0, 0, 453, 2964, 1, 0, 0, 0, 455, 2969, 1, 0, 0, 0, 457, 2978, 1, 0, 0, 0, 459, 2981, 1, 0, 0, 0, 461, 2991, 1, 0, 0, 0, 463, 3001, 1, 0, 0, 0, 465, 3010, 1, 0, 0, 0, 467, 3020, 1, 0, 0, 0, 469, 3030, 1, 0, 0, 0, 471, 3036, 1, 0, 0, 0, 473, 3044, 1, 0, 0, 0, 475, 3052, 1, 0, 0, 0, 477, 3061, 1, 0, 0, 0, 479, 3068, 1, 0, 0, 0, 481, 3080, 1, 0, 0, 0, 483, 3087, 1, 0, 0, 0, 485, 3095, 1, 0, 0, 0, 487, 3103, 1, 0, 0, 0, 489, 3113, 1, 0, 0, 0, 491, 3117, 1, 0, 0, 0, 493, 3123, 1, 0, 0, 0, 495, 3132, 1, 0, 0, 0, 497, 3138, 1, 0, 0, 0, 499, 3143, 1, 0, 0, 0, 501, 3153, 1, 0, 0, 0, 503, 3159, 1, 0, 0, 0, 505, 3166, 1, 0, 0, 0, 507, 3171, 1, 0, 0, 0, 509, 3177, 1, 0, 0, 0, 511, 3186, 1, 0, 0, 0, 513, 3191, 1, 0, 0, 0, 515, 3199, 1, 0, 0, 0, 517, 3205, 1, 0, 0, 0, 519, 3213, 1, 0, 0, 0, 521, 3226, 1, 0, 0, 0, 523, 3235, 1, 0, 0, 0, 525, 3241, 1, 0, 0, 0, 527, 3248, 1, 0, 0, 0, 529, 3257, 1, 0, 0, 0, 531, 3262, 1, 0, 0, 0, 533, 3268, 1, 0, 0, 0, 535, 3273, 1, 0, 0, 0, 537, 3278, 1, 0, 0, 0, 539, 3284, 1, 0, 0, 0, 541, 3289, 1, 0, 0, 0, 543, 3292, 1, 0, 0, 0, 545, 3300, 1, 0, 0, 0, 547, 3307, 1, 0, 0, 0, 549, 3314, 1, 0, 0, 0, 551, 3320, 1, 0, 0, 0, 553, 3327, 1, 0, 0, 0, 555, 3330, 1, 0, 0, 0, 557, 3334, 1, 0, 0, 0, 559, 3339, 1, 0, 0, 0, 561, 3348, 1, 0, 0, 0, 563, 3355, 1, 0, 0, 0, 565, 3363, 1, 0, 0, 0, 567, 3369, 1, 0, 0, 0, 569, 3375, 1, 0, 0, 0, 571, 3382, 1, 0, 0, 0, 573, 3390, 1, 0, 0, 0, 575, 3400, 1, 0, 0, 0, 577, 3408, 1, 0, 0, 0, 579, 3417, 1, 0, 0, 0, 581, 3423, 1, 0, 0, 0, 583, 3433, 1, 0, 0, 0, 585, 3441, 1, 0, 0, 0, 587, 3450, 1, 0, 0, 0, 589, 3459, 1, 0, 0, 0, 591, 3465, 1, 0, 0, 0, 593, 3476, 1, 0, 0, 0, 595, 3487, 1, 0, 0, 0, 597, 3497, 1, 0, 0, 0, 599, 3505, 1, 0, 0, 0, 601, 3511, 1, 0, 0, 0, 603, 3517, 1, 0, 0, 0, 605, 3522, 1, 0, 0, 0, 607, 3531, 1, 0, 0, 0, 609, 3539, 1, 0, 0, 0, 611, 3549, 1, 0, 0, 0, 613, 3553, 1, 0, 0, 0, 615, 3561, 1, 0, 0, 0, 617, 3569, 1, 0, 0, 0, 619, 3578, 1, 0, 0, 0, 621, 3586, 1, 0, 0, 0, 623, 3593, 1, 0, 0, 0, 625, 3604, 1, 0, 0, 0, 627, 3612, 1, 0, 0, 0, 629, 3620, 1, 0, 0, 0, 631, 3626, 1, 0, 0, 0, 633, 3634, 1, 0, 0, 0, 635, 3643, 1, 0, 0, 0, 637, 3651, 1, 0, 0, 0, 639, 3658, 1, 0, 0, 0, 641, 3663, 1, 0, 0, 0, 643, 3672, 1, 0, 0, 0, 645, 3677, 1, 0, 0, 0, 647, 3682, 1, 0, 0, 0, 649, 3692, 1, 0, 0, 0, 651, 3699, 1, 0, 0, 0, 653, 3706, 1, 0, 0, 0, 655, 3713, 1, 0, 0, 0, 657, 3720, 1, 0, 0, 0, 659, 3729, 1, 0, 0, 0, 661, 3738, 1, 0, 0, 0, 663, 3748, 1, 0, 0, 0, 665, 3761, 1, 0, 0, 0, 667, 3768, 1, 0, 0, 0, 669, 3776, 1, 0, 0, 0, 671, 3780, 1, 0, 0, 0, 673, 3786, 1, 0, 0, 0, 675, 3791, 1, 0, 0, 0, 677, 3798, 1, 0, 0, 0, 679, 3807, 1, 0, 0, 0, 681, 3814, 1, 0, 0, 0, 683, 3825, 1, 0, 0, 0, 685, 3831, 1, 0, 0, 0, 687, 3841, 1, 0, 0, 0, 689, 3852, 1, 0, 0, 0, 691, 3858, 1, 0, 0, 0, 693, 3865, 1, 0, 0, 0, 695, 3873, 1, 0, 0, 0, 697, 3880, 1, 0, 0, 0, 699, 3886, 1, 0, 0, 0, 701, 3892, 1, 0, 0, 0, 703, 3899, 1, 0, 0, 0, 705, 3906, 1, 0, 0, 0, 707, 3917, 1, 0, 0, 0, 709, 3922, 1, 0, 0, 0, 711, 3931, 1, 0, 0, 0, 713, 3941, 1, 0, 0, 0, 715, 3946, 1, 0, 0, 0, 717, 3958, 1, 0, 0, 0, 719, 3966, 1, 0, 0, 0, 721, 3975, 1, 0, 0, 0, 723, 3983, 1, 0, 0, 0, 725, 3988, 1, 0, 0, 0, 727, 3994, 1, 0, 0, 0, 729, 4004, 1, 0, 0, 0, 731, 4016, 1, 0, 0, 0, 733, 4028, 1, 0, 0, 0, 735, 4036, 1, 0, 0, 0, 737, 4045, 1, 0, 0, 0, 739, 4054, 1, 0, 0, 0, 741, 4060, 1, 0, 0, 0, 743, 4067, 1, 0, 0, 0, 745, 4074, 1, 0, 0, 0, 747, 4080, 1, 0, 0, 0, 749, 4089, 1, 0, 0, 0, 751, 4099, 1, 0, 0, 0, 753, 4107, 1, 0, 0, 0, 755, 4115, 1, 0, 0, 0, 757, 4120, 1, 0, 0, 0, 759, 4129, 1, 0, 0, 0, 761, 4140, 1, 0, 0, 0, 763, 4148, 1, 0, 0, 0, 765, 4153, 1, 0, 0, 0, 767, 4161, 1, 0, 0, 0, 769, 4167, 1, 0, 0, 0, 771, 4171, 1, 0, 0, 0, 773, 4176, 1, 0, 0, 0, 775, 4180, 1, 0, 0, 0, 777, 4185, 1, 0, 0, 0, 779, 4193, 1, 0, 0, 0, 781, 4200, 1, 0, 0, 0, 783, 4204, 1, 0, 0, 0, 785, 4212, 1, 0, 0, 0, 787, 4217, 1, 0, 0, 0, 789, 4227, 1, 0, 0, 0, 791, 4236, 1, 0, 0, 0, 793, 4240, 1, 0, 0, 0, 795, 4248, 1, 0, 0, 0, 797, 4255, 1, 0, 0, 0, 799, 4263, 1, 0, 0, 0, 801, 4269, 1, 0, 0, 0, 803, 4278, 1, 0, 0, 0, 805, 4284, 1, 0, 0, 0, 807, 4288, 1, 0, 0, 0, 809, 4296, 1, 0, 0, 0, 811, 4305, 1, 0, 0, 0, 813, 4311, 1, 0, 0, 0, 815, 4320, 1, 0, 0, 0, 817, 4326, 1, 0, 0, 0, 819, 4331, 1, 0, 0, 0, 821, 4338, 1, 0, 0, 0, 823, 4346, 1, 0, 0, 0, 825, 4354, 1, 0, 0, 0, 827, 4363, 1, 0, 0, 0, 829, 4373, 1, 0, 0, 0, 831, 4378, 1, 0, 0, 0, 833, 4382, 1, 0, 0, 0, 835, 4388, 1, 0, 0, 0, 837, 4397, 1, 0, 0, 0, 839, 4407, 1, 0, 0, 0, 841, 4412, 1, 0, 0, 0, 843, 4422, 1, 0, 0, 0, 845, 4428, 1, 0, 0, 0, 847, 4433, 1, 0, 0, 0, 849, 4440, 1, 0, 0, 0, 851, 4448, 1, 0, 0, 0, 853, 4462, 1, 0, 0, 0, 855, 4473, 1, 0, 0, 0, 857, 4480, 1, 0, 0, 0, 859, 4499, 1, 0, 0, 0, 861, 4527, 1, 0, 0, 0, 863, 4554, 1, 0, 0, 0, 865, 4560, 1, 0, 0, 0, 867, 4573, 1, 0, 0, 0, 869, 4583, 1, 0, 0, 0, 871, 4594, 1, 0, 0, 0, 873, 4604, 1, 0, 0, 0, 875, 4614, 1, 0, 0, 0, 877, 4623, 1, 0, 0, 0, 879, 4629, 1, 0, 0, 0, 881, 4637, 1, 0, 0, 0, 883, 4650, 1, 0, 0, 0, 885, 4655, 1, 0, 0, 0, 887, 4663, 1, 0, 0, 0, 889, 4670, 1, 0, 0, 0, 891, 4677, 1, 0, 0, 0, 893, 4688, 1, 0, 0, 0, 895, 4698, 1, 0, 0, 0, 897, 4705, 1, 0, 0, 0, 899, 4712, 1, 0, 0, 0, 901, 4720, 1, 0, 0, 0, 903, 4728, 1, 0, 0, 0, 905, 4738, 1, 0, 0, 0, 907, 4745, 1, 0, 0, 0, 909, 4752, 1, 0, 0, 0, 911, 4759, 1, 0, 0, 0, 913, 4771, 1, 0, 0, 0, 915, 4775, 1, 0, 0, 0, 917, 4779, 1, 0, 0, 0, 919, 4785, 1, 0, 0, 0, 921, 4798, 1, 0, 0, 0, 923, 4810, 1, 0, 0, 0, 925, 4814, 1, 0, 0, 0, 927, 4818, 1, 0, 0, 0, 929, 4827, 1, 0, 0, 0, 931, 4835, 1, 0, 0, 0, 933, 4846, 1, 0, 0, 0, 935, 4852, 1, 0, 0, 0, 937, 4860, 1, 0, 0, 0, 939, 4869, 1, 0, 0, 0, 941, 4873, 1, 0, 0, 0, 943, 4881, 1, 0, 0, 0, 945, 4892, 1, 0, 0, 0, 947, 4901, 1, 0, 0, 0, 949, 4906, 1, 0, 0, 0, 951, 4913, 1, 0, 0, 0, 953, 4918, 1, 0, 0, 0, 955, 4925, 1, 0, 0, 0, 957, 4930, 1, 0, 0, 0, 959, 4939, 1, 0, 0, 0, 961, 4944, 1, 0, 0, 0, 963, 4956, 1, 0, 0, 0, 965, 4967, 1, 0, 0, 0, 967, 4976, 1, 0, 0, 0, 969, 4984, 1, 0, 0, 0, 971, 4998, 1, 0, 0, 0, 973, 5006, 1, 0, 0, 0, 975, 5017, 1, 0, 0, 0, 977, 5024, 1, 0, 0, 0, 979, 5031, 1, 0, 0, 0, 981, 5038, 1, 0, 0, 0, 983, 5045, 1, 0, 0, 0, 985, 5049, 1, 0, 0, 0, 987, 5053, 1, 0, 0, 0, 989, 5058, 1, 0, 0, 0, 991, 5063, 1, 0, 0, 0, 993, 5071, 1, 0, 0, 0, 995, 5077, 1, 0, 0, 0, 997, 5087, 1, 0, 0, 0, 999, 5092, 1, 0, 0, 0, 1001, 5112, 1, 0, 0, 0, 1003, 5130, 1, 0, 0, 0, 1005, 5136, 1, 0, 0, 0, 1007, 5149, 1, 0, 0, 0, 1009, 5160, 1, 0, 0, 0, 1011, 5166, 1, 0, 0, 0, 1013, 5175, 1, 0, 0, 0, 1015, 5183, 1, 0, 0, 0, 1017, 5187, 1, 0, 0, 0, 1019, 5199, 1, 0, 0, 0, 1021, 5207, 1, 0, 0, 0, 1023, 5213, 1, 0, 0, 0, 1025, 5219, 1, 0, 0, 0, 1027, 5227, 1, 0, 0, 0, 1029, 5235, 1, 0, 0, 0, 1031, 5241, 1, 0, 0, 0, 1033, 5246, 1, 0, 0, 0, 1035, 5253, 1, 0, 0, 0, 1037, 5259, 1, 0, 0, 0, 1039, 5265, 1, 0, 0, 0, 1041, 5274, 1, 0, 0, 0, 1043, 5280, 1, 0, 0, 0, 1045, 5284, 1, 0, 0, 0, 1047, 5289, 1, 0, 0, 0, 1049, 5296, 1, 0, 0, 0, 1051, 5304, 1, 0, 0, 0, 1053, 5314, 1, 0, 0, 0, 1055, 5321, 1, 0, 0, 0, 1057, 5326, 1, 0, 0, 0, 1059, 5331, 1, 0, 0, 0, 1061, 5335, 1, 0, 0, 0, 1063, 5340, 1, 0, 0, 0, 1065, 5345, 1, 0, 0, 0, 1067, 5353, 1, 0, 0, 0, 1069, 5361, 1, 0, 0, 0, 1071, 5365, 1, 0, 0, 0, 1073, 5369, 1, 0, 0, 0, 1075, 5379, 1, 0, 0, 0, 1077, 5385, 1, 0, 0, 0, 1079, 5389, 1, 0, 0, 0, 1081, 5393, 1, 0, 0, 0, 1083, 5396, 1, 0, 0, 0, 1085, 5402, 1, 0, 0, 0, 1087, 5412, 1, 0, 0, 0, 1089, 5416, 1, 0, 0, 0, 1091, 5419, 1, 0, 0, 0, 1093, 5425, 1, 0, 0, 0, 1095, 5433, 1, 0, 0, 0, 1097, 5439, 1, 0, 0, 0, 1099, 5445, 1, 0, 0, 0, 1101, 5450, 1, 0, 0, 0, 1103, 5455, 1, 0, 0, 0, 1105, 5466, 1, 0, 0, 0, 1107, 5472, 1, 0, 0, 0, 1109, 5485, 1, 0, 0, 0, 1111, 5492, 1, 0, 0, 0, 1113, 5500, 1, 0, 0, 0, 1115, 5505, 1, 0, 0, 0, 1117, 5511, 1, 0, 0, 0, 1119, 5516, 1, 0, 0, 0, 1121, 5522, 1, 0, 0, 0, 1123, 5527, 1, 0, 0, 0, 1125, 5533, 1, 0, 0, 0, 1127, 5539, 1, 0, 0, 0, 1129, 5546, 1, 0, 0, 0, 1131, 5550, 1, 0, 0, 0, 1133, 5555, 1, 0, 0, 0, 1135, 5559, 1, 0, 0, 0, 1137, 5564, 1, 0, 0, 0, 1139, 5568, 1, 0, 0, 0, 1141, 5573, 1, 0, 0, 0, 1143, 5577, 1, 0, 0, 0, 1145, 5582, 1, 0, 0, 0, 1147, 5587, 1, 0, 0, 0, 1149, 5592, 1, 0, 0, 0, 1151, 5597, 1, 0, 0, 0, 1153, 5603, 1, 0, 0, 0, 1155, 5609, 1, 0, 0, 0, 1157, 5615, 1, 0, 0, 0, 1159, 5626, 1, 0, 0, 0, 1161, 5638, 1, 0, 0, 0, 1163, 5655, 1, 0, 0, 0, 1165, 5661, 1, 0, 0, 0, 1167, 5674, 1, 0, 0, 0, 1169, 5680, 1, 0, 0, 0, 1171, 5686, 1, 0, 0, 0, 1173, 5692, 1, 0, 0, 0, 1175, 5696, 1, 0, 0, 0, 1177, 5703, 1, 0, 0, 0, 1179, 5713, 1, 0, 0, 0, 1181, 5720, 1, 0, 0, 0, 1183, 5728, 1, 0, 0, 0, 1185, 5735, 1, 0, 0, 0, 1187, 5740, 1, 0, 0, 0, 1189, 5746, 1, 0, 0, 0, 1191, 5750, 1, 0, 0, 0, 1193, 5762, 1, 0, 0, 0, 1195, 5781, 1, 0, 0, 0, 1197, 5793, 1, 0, 0, 0, 1199, 5807, 1, 0, 0, 0, 1201, 5822, 1, 0, 0, 0, 1203, 5835, 1, 0, 0, 0, 1205, 5848, 1, 0, 0, 0, 1207, 5860, 1, 0, 0, 0, 1209, 5873, 1, 0, 0, 0, 1211, 5888, 1, 0, 0, 0, 1213, 5903, 1, 0, 0, 0, 1215, 5925, 1, 0, 0, 0, 1217, 5947, 1, 0, 0, 0, 1219, 5961, 1, 0, 0, 0, 1221, 5968, 1, 0, 0, 0, 1223, 5973, 1, 0, 0, 0, 1225, 5979, 1, 0, 0, 0, 1227, 5990, 1, 0, 0, 0, 1229, 6002, 1, 0, 0, 0, 1231, 6018, 1, 0, 0, 0, 1233, 6034, 1, 0, 0, 0, 1235, 6041, 1, 0, 0, 0, 1237, 6048, 1, 0, 0, 0, 1239, 6057, 1, 0, 0, 0, 1241, 6064, 1, 0, 0, 0, 1243, 6074, 1, 0, 0, 0, 1245, 6081, 1, 0, 0, 0, 1247, 6085, 1, 0, 0, 0, 1249, 6101, 1, 0, 0, 0, 1251, 6110, 1, 0, 0, 0, 1253, 6120, 1, 0, 0, 0, 1255, 6131, 1, 0, 0, 0, 1257, 6140, 1, 0, 0, 0, 1259, 6153, 1, 0, 0, 0, 1261, 6167, 1, 0, 0, 0, 1263, 6184, 1, 0, 0, 0, 1265, 6194, 1, 0, 0, 0, 1267, 6208, 1, 0, 0, 0, 1269, 6218, 1, 0, 0, 0, 1271, 6233, 1, 0, 0, 0, 1273, 6250, 1, 0, 0, 0, 1275, 6254, 1, 0, 0, 0, 1277, 6274, 1, 0, 0, 0, 1279, 6284, 1, 0, 0, 0, 1281, 6306, 1, 0, 0, 0, 1283, 6319, 1, 0, 0, 0, 1285, 6327, 1, 0, 0, 0, 1287, 6335, 1, 0, 0, 0, 1289, 6345, 1, 0, 0, 0, 1291, 6358, 1, 0, 0, 0, 1293, 6362, 1, 0, 0, 0, 1295, 6366, 1, 0, 0, 0, 1297, 6368, 1, 0, 0, 0, 1299, 6371, 1, 0, 0, 0, 1301, 6380, 1, 0, 0, 0, 1303, 6383, 1, 0, 0, 0, 1305, 6392, 1, 0, 0, 0, 1307, 6396, 1, 0, 0, 0, 1309, 6400, 1, 0, 0, 0, 1311, 6404, 1, 0, 0, 0, 1313, 6408, 1, 0, 0, 0, 1315, 6411, 1, 0, 0, 0, 1317, 6420, 1, 0, 0, 0, 1319, 6426, 1, 0, 0, 0, 1321, 6429, 1, 0, 0, 0, 1323, 6433, 1, 0, 0, 0, 1325, 6442, 1, 0, 0, 0, 1327, 6449, 1, 0, 0, 0, 1329, 6452, 1, 0, 0, 0, 1331, 6460, 1, 0, 0, 0, 1333, 6463, 1, 0, 0, 0, 1335, 6466, 1, 0, 0, 0, 1337, 6469, 1, 0, 0, 0, 1339, 6477, 1, 0, 0, 0, 1341, 6480, 1, 0, 0, 0, 1343, 6483, 1, 0, 0, 0, 1345, 6485, 1, 0, 0, 0, 1347, 6519, 1, 0, 0, 0, 1349, 6522, 1, 0, 0, 0, 1351, 6526, 1, 0, 0, 0, 1353, 6534, 1, 0, 0, 0, 1355, 6550, 1, 0, 0, 0, 1357, 6561, 1, 0, 0, 0, 1359, 6565, 1, 0, 0, 0, 1361, 6576, 1, 0, 0, 0, 1363, 6615, 1, 0, 0, 0, 1365, 6666, 1, 0, 0, 0, 1367, 6690, 1, 0, 0, 0, 1369, 6693, 1, 0, 0, 0, 1371, 6695, 1, 0, 0, 0, 1373, 6700, 1, 0, 0, 0, 1375, 6731, 1, 0, 0, 0, 1377, 6734, 1, 0, 0, 0, 1379, 6739, 1, 0, 0, 0, 1381, 6752, 1, 0, 0, 0, 1383, 6755, 1, 0, 0, 0, 1385, 6760, 1, 0, 0, 0, 1387, 6766, 1, 0, 0, 0, 1389, 6771, 1, 0, 0, 0, 1391, 6776, 1, 0, 0, 0, 1393, 6781, 1, 0, 0, 0, 1395, 6786, 1, 0, 0, 0, 1397, 6803, 1, 0, 0, 0, 1399, 6805, 1, 0, 0, 0, 1401, 1402, 5, 36, 0, 0, 1402, 6, 1, 0, 0, 0, 1403, 1404, 5, 40, 0, 0, 1404, 8, 1, 0, 0, 0, 1405, 1406, 5, 41, 0, 0, 1406, 10, 1, 0, 0, 0, 1407, 1408, 5, 91, 0, 0, 1408, 12, 1, 0, 0, 0, 1409, 1410, 5, 93, 0, 0, 1410, 14, 1, 0, 0, 0, 1411, 1412, 5, 44, 0, 0, 1412, 16, 1, 0, 0, 0, 1413, 1414, 5, 59, 0, 0, 1414, 18, 1, 0, 0, 0, 1415, 1416, 5, 58, 0, 0, 1416, 20, 1, 0, 0, 0, 1417, 1418, 5, 42, 0, 0, 1418, 22, 1, 0, 0, 0, 1419, 1420, 5, 61, 0, 0, 1420, 24, 1, 0, 0, 0, 1421, 1422, 5, 46, 0, 0, 1422, 26, 1, 0, 0, 0, 1423, 1424, 5, 43, 0, 0, 1424, 28, 1, 0, 0, 0, 1425, 1426, 5, 45, 0, 0, 1426, 30, 1, 0, 0, 0, 1427, 1428, 5, 47, 0, 0, 1428, 32, 1, 0, 0, 0, 1429, 1430, 5, 94, 0, 0, 1430, 34, 1, 0, 0, 0, 1431, 1432, 5, 60, 0, 0, 1432, 36, 1, 0, 0, 0, 1433, 1434, 5, 62, 0, 0, 1434, 38, 1, 0, 0, 0, 1435, 1436, 5, 60, 0, 0, 1436, 1437, 5, 60, 0, 0, 1437, 40, 1, 0, 0, 0, 1438, 1439, 5, 62, 0, 0, 1439, 1440, 5, 62, 0, 0, 1440, 42, 1, 0, 0, 0, 1441, 1442, 5, 58, 0, 0, 1442, 1443, 5, 61, 0, 0, 1443, 44, 1, 0, 0, 0, 1444, 1445, 5, 60, 0, 0, 1445, 1446, 5, 61, 0, 0, 1446, 46, 1, 0, 0, 0, 1447, 1448, 5, 61, 0, 0, 1448, 1449, 5, 62, 0, 0, 1449, 48, 1, 0, 0, 0, 1450, 1451, 5, 62, 0, 0, 1451, 1452, 5, 61, 0, 0, 1452, 50, 1, 0, 0, 0, 1453, 1454, 5, 46, 0, 0, 1454, 1455, 5, 46, 0, 0, 1455, 52, 1, 0, 0, 0, 1456, 1457, 5, 60, 0, 0, 1457, 1458, 5, 62, 0, 0, 1458, 54, 1, 0, 0, 0, 1459, 1460, 5, 58, 0, 0, 1460, 1461, 5, 58, 0, 0, 1461, 56, 1, 0, 0, 0, 1462, 1463, 5, 37, 0, 0, 1463, 58, 1, 0, 0, 0, 1464, 1466, 5, 36, 0, 0, 1465, 1467, 7, 0, 0, 0, 1466, 1465, 1, 0, 0, 0, 1467, 1468, 1, 0, 0, 0, 1468, 1466, 1, 0, 0, 0, 1468, 1469, 1, 0, 0, 0, 1469, 60, 1, 0, 0, 0, 1470, 1486, 3, 65, 30, 0, 1471, 1475, 5, 43, 0, 0, 1472, 1473, 5, 45, 0, 0, 1473, 1475, 4, 28, 0, 0, 1474, 1471, 1, 0, 0, 0, 1474, 1472, 1, 0, 0, 0, 1475, 1476, 1, 0, 0, 0, 1476, 1474, 1, 0, 0, 0, 1476, 1477, 1, 0, 0, 0, 1477, 1481, 1, 0, 0, 0, 1478, 1482, 3, 65, 30, 0, 1479, 1480, 5, 47, 0, 0, 1480, 1482, 4, 28, 1, 0, 1481, 1478, 1, 0, 0, 0, 1481, 1479, 1, 0, 0, 0, 1482, 1486, 1, 0, 0, 0, 1483, 1484, 5, 47, 0, 0, 1484, 1486, 4, 28, 2, 0, 1485, 1470, 1, 0, 0, 0, 1485, 1474, 1, 0, 0, 0, 1485, 1483, 1, 0, 0, 0, 1486, 1487, 1, 0, 0, 0, 1487, 1485, 1, 0, 0, 0, 1487, 1488, 1, 0, 0, 0, 1488, 1491, 1, 0, 0, 0, 1489, 1491, 7, 1, 0, 0, 1490, 1485, 1, 0, 0, 0, 1490, 1489, 1, 0, 0, 0, 1491, 1492, 1, 0, 0, 0, 1492, 1493, 6, 28, 0, 0, 1493, 62, 1, 0, 0, 0, 1494, 1500, 3, 67, 31, 0, 1495, 1496, 5, 45, 0, 0, 1496, 1500, 4, 29, 3, 0, 1497, 1498, 5, 47, 0, 0, 1498, 1500, 4, 29, 4, 0, 1499, 1494, 1, 0, 0, 0, 1499, 1495, 1, 0, 0, 0, 1499, 1497, 1, 0, 0, 0, 1500, 1503, 1, 0, 0, 0, 1501, 1499, 1, 0, 0, 0, 1501, 1502, 1, 0, 0, 0, 1502, 1504, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1504, 1506, 3, 69, 32, 0, 1505, 1507, 3, 61, 28, 0, 1506, 1505, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1511, 1, 0, 0, 0, 1508, 1512, 5, 43, 0, 0, 1509, 1510, 5, 45, 0, 0, 1510, 1512, 4, 29, 5, 0, 1511, 1508, 1, 0, 0, 0, 1511, 1509, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1511, 1, 0, 0, 0, 1513, 1514, 1, 0, 0, 0, 1514, 1515, 1, 0, 0, 0, 1515, 1516, 6, 29, 1, 0, 1516, 64, 1, 0, 0, 0, 1517, 1518, 7, 2, 0, 0, 1518, 66, 1, 0, 0, 0, 1519, 1520, 7, 3, 0, 0, 1520, 68, 1, 0, 0, 0, 1521, 1522, 7, 4, 0, 0, 1522, 70, 1, 0, 0, 0, 1523, 1524, 7, 5, 0, 0, 1524, 1525, 7, 6, 0, 0, 1525, 1526, 7, 6, 0, 0, 1526, 72, 1, 0, 0, 0, 1527, 1528, 7, 5, 0, 0, 1528, 1529, 7, 7, 0, 0, 1529, 1530, 7, 5, 0, 0, 1530, 1531, 7, 6, 0, 0, 1531, 1532, 7, 8, 0, 0, 1532, 1533, 7, 9, 0, 0, 1533, 1534, 7, 10, 0, 0, 1534, 74, 1, 0, 0, 0, 1535, 1536, 7, 5, 0, 0, 1536, 1537, 7, 7, 0, 0, 1537, 1538, 7, 5, 0, 0, 1538, 1539, 7, 6, 0, 0, 1539, 1540, 7, 8, 0, 0, 1540, 1541, 7, 11, 0, 0, 1541, 1542, 7, 10, 0, 0, 1542, 76, 1, 0, 0, 0, 1543, 1544, 7, 5, 0, 0, 1544, 1545, 7, 7, 0, 0, 1545, 1546, 7, 12, 0, 0, 1546, 78, 1, 0, 0, 0, 1547, 1548, 7, 5, 0, 0, 1548, 1549, 7, 7, 0, 0, 1549, 1550, 7, 8, 0, 0, 1550, 80, 1, 0, 0, 0, 1551, 1552, 7, 5, 0, 0, 1552, 1553, 7, 13, 0, 0, 1553, 1554, 7, 13, 0, 0, 1554, 1555, 7, 5, 0, 0, 1555, 1556, 7, 8, 0, 0, 1556, 82, 1, 0, 0, 0, 1557, 1558, 7, 5, 0, 0, 1558, 1559, 7, 9, 0, 0, 1559, 84, 1, 0, 0, 0, 1560, 1561, 7, 5, 0, 0, 1561, 1562, 7, 9, 0, 0, 1562, 1563, 7, 14, 0, 0, 1563, 86, 1, 0, 0, 0, 1564, 1565, 7, 5, 0, 0, 1565, 1566, 7, 9, 0, 0, 1566, 1567, 7, 8, 0, 0, 1567, 1568, 7, 15, 0, 0, 1568, 1569, 7, 15, 0, 0, 1569, 1570, 7, 10, 0, 0, 1570, 1571, 7, 16, 0, 0, 1571, 1572, 7, 13, 0, 0, 1572, 1573, 7, 17, 0, 0, 1573, 1574, 7, 14, 0, 0, 1574, 88, 1, 0, 0, 0, 1575, 1576, 7, 18, 0, 0, 1576, 1577, 7, 19, 0, 0, 1577, 1578, 7, 16, 0, 0, 1578, 1579, 7, 20, 0, 0, 1579, 90, 1, 0, 0, 0, 1580, 1581, 7, 14, 0, 0, 1581, 1582, 7, 5, 0, 0, 1582, 1583, 7, 9, 0, 0, 1583, 1584, 7, 10, 0, 0, 1584, 92, 1, 0, 0, 0, 1585, 1586, 7, 14, 0, 0, 1586, 1587, 7, 5, 0, 0, 1587, 1588, 7, 9, 0, 0, 1588, 1589, 7, 16, 0, 0, 1589, 94, 1, 0, 0, 0, 1590, 1591, 7, 14, 0, 0, 1591, 1592, 7, 20, 0, 0, 1592, 1593, 7, 10, 0, 0, 1593, 1594, 7, 14, 0, 0, 1594, 1595, 7, 21, 0, 0, 1595, 96, 1, 0, 0, 0, 1596, 1597, 7, 14, 0, 0, 1597, 1598, 7, 19, 0, 0, 1598, 1599, 7, 6, 0, 0, 1599, 1600, 7, 6, 0, 0, 1600, 1601, 7, 5, 0, 0, 1601, 1602, 7, 16, 0, 0, 1602, 1603, 7, 10, 0, 0, 1603, 98, 1, 0, 0, 0, 1604, 1605, 7, 14, 0, 0, 1605, 1606, 7, 19, 0, 0, 1606, 1607, 7, 6, 0, 0, 1607, 1608, 7, 22, 0, 0, 1608, 1609, 7, 15, 0, 0, 1609, 1610, 7, 7, 0, 0, 1610, 100, 1, 0, 0, 0, 1611, 1612, 7, 14, 0, 0, 1612, 1613, 7, 19, 0, 0, 1613, 1614, 7, 7, 0, 0, 1614, 1615, 7, 9, 0, 0, 1615, 1616, 7, 16, 0, 0, 1616, 1617, 7, 13, 0, 0, 1617, 1618, 7, 5, 0, 0, 1618, 1619, 7, 17, 0, 0, 1619, 1620, 7, 7, 0, 0, 1620, 1621, 7, 16, 0, 0, 1621, 102, 1, 0, 0, 0, 1622, 1623, 7, 14, 0, 0, 1623, 1624, 7, 13, 0, 0, 1624, 1625, 7, 10, 0, 0, 1625, 1626, 7, 5, 0, 0, 1626, 1627, 7, 16, 0, 0, 1627, 1628, 7, 10, 0, 0, 1628, 104, 1, 0, 0, 0, 1629, 1630, 7, 14, 0, 0, 1630, 1631, 7, 22, 0, 0, 1631, 1632, 7, 13, 0, 0, 1632, 1633, 7, 13, 0, 0, 1633, 1634, 7, 10, 0, 0, 1634, 1635, 7, 7, 0, 0, 1635, 1636, 7, 16, 0, 0, 1636, 1637, 5, 95, 0, 0, 1637, 1638, 7, 14, 0, 0, 1638, 1639, 7, 5, 0, 0, 1639, 1640, 7, 16, 0, 0, 1640, 1641, 7, 5, 0, 0, 1641, 1642, 7, 6, 0, 0, 1642, 1643, 7, 19, 0, 0, 1643, 1644, 7, 23, 0, 0, 1644, 106, 1, 0, 0, 0, 1645, 1646, 7, 14, 0, 0, 1646, 1647, 7, 22, 0, 0, 1647, 1648, 7, 13, 0, 0, 1648, 1649, 7, 13, 0, 0, 1649, 1650, 7, 10, 0, 0, 1650, 1651, 7, 7, 0, 0, 1651, 1652, 7, 16, 0, 0, 1652, 1653, 5, 95, 0, 0, 1653, 1654, 7, 12, 0, 0, 1654, 1655, 7, 5, 0, 0, 1655, 1656, 7, 16, 0, 0, 1656, 1657, 7, 10, 0, 0, 1657, 108, 1, 0, 0, 0, 1658, 1659, 7, 14, 0, 0, 1659, 1660, 7, 22, 0, 0, 1660, 1661, 7, 13, 0, 0, 1661, 1662, 7, 13, 0, 0, 1662, 1663, 7, 10, 0, 0, 1663, 1664, 7, 7, 0, 0, 1664, 1665, 7, 16, 0, 0, 1665, 1666, 5, 95, 0, 0, 1666, 1667, 7, 13, 0, 0, 1667, 1668, 7, 19, 0, 0, 1668, 1669, 7, 6, 0, 0, 1669, 1670, 7, 10, 0, 0, 1670, 110, 1, 0, 0, 0, 1671, 1672, 7, 14, 0, 0, 1672, 1673, 7, 22, 0, 0, 1673, 1674, 7, 13, 0, 0, 1674, 1675, 7, 13, 0, 0, 1675, 1676, 7, 10, 0, 0, 1676, 1677, 7, 7, 0, 0, 1677, 1678, 7, 16, 0, 0, 1678, 1679, 5, 95, 0, 0, 1679, 1680, 7, 16, 0, 0, 1680, 1681, 7, 17, 0, 0, 1681, 1682, 7, 15, 0, 0, 1682, 1683, 7, 10, 0, 0, 1683, 112, 1, 0, 0, 0, 1684, 1685, 7, 14, 0, 0, 1685, 1686, 7, 22, 0, 0, 1686, 1687, 7, 13, 0, 0, 1687, 1688, 7, 13, 0, 0, 1688, 1689, 7, 10, 0, 0, 1689, 1690, 7, 7, 0, 0, 1690, 1691, 7, 16, 0, 0, 1691, 1692, 5, 95, 0, 0, 1692, 1693, 7, 16, 0, 0, 1693, 1694, 7, 17, 0, 0, 1694, 1695, 7, 15, 0, 0, 1695, 1696, 7, 10, 0, 0, 1696, 1697, 7, 9, 0, 0, 1697, 1698, 7, 16, 0, 0, 1698, 1699, 7, 5, 0, 0, 1699, 1700, 7, 15, 0, 0, 1700, 1701, 7, 24, 0, 0, 1701, 114, 1, 0, 0, 0, 1702, 1703, 7, 14, 0, 0, 1703, 1704, 7, 22, 0, 0, 1704, 1705, 7, 13, 0, 0, 1705, 1706, 7, 13, 0, 0, 1706, 1707, 7, 10, 0, 0, 1707, 1708, 7, 7, 0, 0, 1708, 1709, 7, 16, 0, 0, 1709, 1710, 5, 95, 0, 0, 1710, 1711, 7, 22, 0, 0, 1711, 1712, 7, 9, 0, 0, 1712, 1713, 7, 10, 0, 0, 1713, 1714, 7, 13, 0, 0, 1714, 116, 1, 0, 0, 0, 1715, 1716, 7, 12, 0, 0, 1716, 1717, 7, 10, 0, 0, 1717, 1718, 7, 25, 0, 0, 1718, 1719, 7, 5, 0, 0, 1719, 1720, 7, 22, 0, 0, 1720, 1721, 7, 6, 0, 0, 1721, 1722, 7, 16, 0, 0, 1722, 118, 1, 0, 0, 0, 1723, 1724, 7, 12, 0, 0, 1724, 1725, 7, 10, 0, 0, 1725, 1726, 7, 25, 0, 0, 1726, 1727, 7, 10, 0, 0, 1727, 1728, 7, 13, 0, 0, 1728, 1729, 7, 13, 0, 0, 1729, 1730, 7, 5, 0, 0, 1730, 1731, 7, 18, 0, 0, 1731, 1732, 7, 6, 0, 0, 1732, 1733, 7, 10, 0, 0, 1733, 120, 1, 0, 0, 0, 1734, 1735, 7, 12, 0, 0, 1735, 1736, 7, 10, 0, 0, 1736, 1737, 7, 9, 0, 0, 1737, 1738, 7, 14, 0, 0, 1738, 122, 1, 0, 0, 0, 1739, 1740, 7, 12, 0, 0, 1740, 1741, 7, 17, 0, 0, 1741, 1742, 7, 9, 0, 0, 1742, 1743, 7, 16, 0, 0, 1743, 1744, 7, 17, 0, 0, 1744, 1745, 7, 7, 0, 0, 1745, 1746, 7, 14, 0, 0, 1746, 1747, 7, 16, 0, 0, 1747, 124, 1, 0, 0, 0, 1748, 1749, 7, 12, 0, 0, 1749, 1750, 7, 19, 0, 0, 1750, 126, 1, 0, 0, 0, 1751, 1752, 7, 10, 0, 0, 1752, 1753, 7, 6, 0, 0, 1753, 1754, 7, 9, 0, 0, 1754, 1755, 7, 10, 0, 0, 1755, 128, 1, 0, 0, 0, 1756, 1757, 7, 10, 0, 0, 1757, 1758, 7, 26, 0, 0, 1758, 1759, 7, 14, 0, 0, 1759, 1760, 7, 10, 0, 0, 1760, 1761, 7, 24, 0, 0, 1761, 1762, 7, 16, 0, 0, 1762, 130, 1, 0, 0, 0, 1763, 1764, 7, 25, 0, 0, 1764, 1765, 7, 5, 0, 0, 1765, 1766, 7, 6, 0, 0, 1766, 1767, 7, 9, 0, 0, 1767, 1768, 7, 10, 0, 0, 1768, 132, 1, 0, 0, 0, 1769, 1770, 7, 25, 0, 0, 1770, 1771, 7, 10, 0, 0, 1771, 1772, 7, 16, 0, 0, 1772, 1773, 7, 14, 0, 0, 1773, 1774, 7, 20, 0, 0, 1774, 134, 1, 0, 0, 0, 1775, 1776, 7, 25, 0, 0, 1776, 1777, 7, 19, 0, 0, 1777, 1778, 7, 13, 0, 0, 1778, 136, 1, 0, 0, 0, 1779, 1780, 7, 25, 0, 0, 1780, 1781, 7, 19, 0, 0, 1781, 1782, 7, 13, 0, 0, 1782, 1783, 7, 10, 0, 0, 1783, 1784, 7, 17, 0, 0, 1784, 1785, 7, 23, 0, 0, 1785, 1786, 7, 7, 0, 0, 1786, 138, 1, 0, 0, 0, 1787, 1788, 7, 25, 0, 0, 1788, 1789, 7, 13, 0, 0, 1789, 1790, 7, 19, 0, 0, 1790, 1791, 7, 15, 0, 0, 1791, 140, 1, 0, 0, 0, 1792, 1793, 7, 23, 0, 0, 1793, 1794, 7, 13, 0, 0, 1794, 1795, 7, 5, 0, 0, 1795, 1796, 7, 7, 0, 0, 1796, 1797, 7, 16, 0, 0, 1797, 142, 1, 0, 0, 0, 1798, 1799, 7, 23, 0, 0, 1799, 1800, 7, 13, 0, 0, 1800, 1801, 7, 19, 0, 0, 1801, 1802, 7, 22, 0, 0, 1802, 1803, 7, 24, 0, 0, 1803, 144, 1, 0, 0, 0, 1804, 1805, 7, 20, 0, 0, 1805, 1806, 7, 5, 0, 0, 1806, 1807, 7, 27, 0, 0, 1807, 1808, 7, 17, 0, 0, 1808, 1809, 7, 7, 0, 0, 1809, 1810, 7, 23, 0, 0, 1810, 146, 1, 0, 0, 0, 1811, 1812, 7, 17, 0, 0, 1812, 1813, 7, 7, 0, 0, 1813, 148, 1, 0, 0, 0, 1814, 1815, 7, 17, 0, 0, 1815, 1816, 7, 7, 0, 0, 1816, 1817, 7, 17, 0, 0, 1817, 1818, 7, 16, 0, 0, 1818, 1819, 7, 17, 0, 0, 1819, 1820, 7, 5, 0, 0, 1820, 1821, 7, 6, 0, 0, 1821, 1822, 7, 6, 0, 0, 1822, 1823, 7, 8, 0, 0, 1823, 150, 1, 0, 0, 0, 1824, 1825, 7, 17, 0, 0, 1825, 1826, 7, 7, 0, 0, 1826, 1827, 7, 16, 0, 0, 1827, 1828, 7, 10, 0, 0, 1828, 1829, 7, 13, 0, 0, 1829, 1830, 7, 9, 0, 0, 1830, 1831, 7, 10, 0, 0, 1831, 1832, 7, 14, 0, 0, 1832, 1833, 7, 16, 0, 0, 1833, 152, 1, 0, 0, 0, 1834, 1835, 7, 17, 0, 0, 1835, 1836, 7, 7, 0, 0, 1836, 1837, 7, 16, 0, 0, 1837, 1838, 7, 19, 0, 0, 1838, 154, 1, 0, 0, 0, 1839, 1840, 7, 6, 0, 0, 1840, 1841, 7, 5, 0, 0, 1841, 1842, 7, 16, 0, 0, 1842, 1843, 7, 10, 0, 0, 1843, 1844, 7, 13, 0, 0, 1844, 1845, 7, 5, 0, 0, 1845, 1846, 7, 6, 0, 0, 1846, 156, 1, 0, 0, 0, 1847, 1848, 7, 6, 0, 0, 1848, 1849, 7, 10, 0, 0, 1849, 1850, 7, 5, 0, 0, 1850, 1851, 7, 12, 0, 0, 1851, 1852, 7, 17, 0, 0, 1852, 1853, 7, 7, 0, 0, 1853, 1854, 7, 23, 0, 0, 1854, 158, 1, 0, 0, 0, 1855, 1856, 7, 6, 0, 0, 1856, 1857, 7, 17, 0, 0, 1857, 1858, 7, 15, 0, 0, 1858, 1859, 7, 17, 0, 0, 1859, 1860, 7, 16, 0, 0, 1860, 160, 1, 0, 0, 0, 1861, 1862, 7, 6, 0, 0, 1862, 1863, 7, 19, 0, 0, 1863, 1864, 7, 14, 0, 0, 1864, 1865, 7, 5, 0, 0, 1865, 1866, 7, 6, 0, 0, 1866, 1867, 7, 16, 0, 0, 1867, 1868, 7, 17, 0, 0, 1868, 1869, 7, 15, 0, 0, 1869, 1870, 7, 10, 0, 0, 1870, 162, 1, 0, 0, 0, 1871, 1872, 7, 6, 0, 0, 1872, 1873, 7, 19, 0, 0, 1873, 1874, 7, 14, 0, 0, 1874, 1875, 7, 5, 0, 0, 1875, 1876, 7, 6, 0, 0, 1876, 1877, 7, 16, 0, 0, 1877, 1878, 7, 17, 0, 0, 1878, 1879, 7, 15, 0, 0, 1879, 1880, 7, 10, 0, 0, 1880, 1881, 7, 9, 0, 0, 1881, 1882, 7, 16, 0, 0, 1882, 1883, 7, 5, 0, 0, 1883, 1884, 7, 15, 0, 0, 1884, 1885, 7, 24, 0, 0, 1885, 164, 1, 0, 0, 0, 1886, 1887, 7, 7, 0, 0, 1887, 1888, 7, 19, 0, 0, 1888, 1889, 7, 16, 0, 0, 1889, 166, 1, 0, 0, 0, 1890, 1891, 7, 7, 0, 0, 1891, 1892, 7, 22, 0, 0, 1892, 1893, 7, 6, 0, 0, 1893, 1894, 7, 6, 0, 0, 1894, 168, 1, 0, 0, 0, 1895, 1896, 7, 19, 0, 0, 1896, 1897, 7, 25, 0, 0, 1897, 1898, 7, 25, 0, 0, 1898, 1899, 7, 9, 0, 0, 1899, 1900, 7, 10, 0, 0, 1900, 1901, 7, 16, 0, 0, 1901, 170, 1, 0, 0, 0, 1902, 1903, 7, 19, 0, 0, 1903, 1904, 7, 7, 0, 0, 1904, 172, 1, 0, 0, 0, 1905, 1906, 7, 19, 0, 0, 1906, 1907, 7, 7, 0, 0, 1907, 1908, 7, 6, 0, 0, 1908, 1909, 7, 8, 0, 0, 1909, 174, 1, 0, 0, 0, 1910, 1911, 7, 19, 0, 0, 1911, 1912, 7, 13, 0, 0, 1912, 176, 1, 0, 0, 0, 1913, 1914, 7, 19, 0, 0, 1914, 1915, 7, 13, 0, 0, 1915, 1916, 7, 12, 0, 0, 1916, 1917, 7, 10, 0, 0, 1917, 1918, 7, 13, 0, 0, 1918, 178, 1, 0, 0, 0, 1919, 1920, 7, 24, 0, 0, 1920, 1921, 7, 6, 0, 0, 1921, 1922, 7, 5, 0, 0, 1922, 1923, 7, 14, 0, 0, 1923, 1924, 7, 17, 0, 0, 1924, 1925, 7, 7, 0, 0, 1925, 1926, 7, 23, 0, 0, 1926, 180, 1, 0, 0, 0, 1927, 1928, 7, 24, 0, 0, 1928, 1929, 7, 13, 0, 0, 1929, 1930, 7, 17, 0, 0, 1930, 1931, 7, 15, 0, 0, 1931, 1932, 7, 5, 0, 0, 1932, 1933, 7, 13, 0, 0, 1933, 1934, 7, 8, 0, 0, 1934, 182, 1, 0, 0, 0, 1935, 1936, 7, 13, 0, 0, 1936, 1937, 7, 10, 0, 0, 1937, 1938, 7, 25, 0, 0, 1938, 1939, 7, 10, 0, 0, 1939, 1940, 7, 13, 0, 0, 1940, 1941, 7, 10, 0, 0, 1941, 1942, 7, 7, 0, 0, 1942, 1943, 7, 14, 0, 0, 1943, 1944, 7, 10, 0, 0, 1944, 1945, 7, 9, 0, 0, 1945, 184, 1, 0, 0, 0, 1946, 1947, 7, 13, 0, 0, 1947, 1948, 7, 10, 0, 0, 1948, 1949, 7, 16, 0, 0, 1949, 1950, 7, 22, 0, 0, 1950, 1951, 7, 13, 0, 0, 1951, 1952, 7, 7, 0, 0, 1952, 1953, 7, 17, 0, 0, 1953, 1954, 7, 7, 0, 0, 1954, 1955, 7, 23, 0, 0, 1955, 186, 1, 0, 0, 0, 1956, 1957, 7, 9, 0, 0, 1957, 1958, 7, 10, 0, 0, 1958, 1959, 7, 6, 0, 0, 1959, 1960, 7, 10, 0, 0, 1960, 1961, 7, 14, 0, 0, 1961, 1962, 7, 16, 0, 0, 1962, 188, 1, 0, 0, 0, 1963, 1964, 7, 9, 0, 0, 1964, 1965, 7, 10, 0, 0, 1965, 1966, 7, 9, 0, 0, 1966, 1967, 7, 9, 0, 0, 1967, 1968, 7, 17, 0, 0, 1968, 1969, 7, 19, 0, 0, 1969, 1970, 7, 7, 0, 0, 1970, 1971, 5, 95, 0, 0, 1971, 1972, 7, 22, 0, 0, 1972, 1973, 7, 9, 0, 0, 1973, 1974, 7, 10, 0, 0, 1974, 1975, 7, 13, 0, 0, 1975, 190, 1, 0, 0, 0, 1976, 1977, 7, 9, 0, 0, 1977, 1978, 7, 19, 0, 0, 1978, 1979, 7, 15, 0, 0, 1979, 1980, 7, 10, 0, 0, 1980, 192, 1, 0, 0, 0, 1981, 1982, 7, 9, 0, 0, 1982, 1983, 7, 8, 0, 0, 1983, 1984, 7, 15, 0, 0, 1984, 1985, 7, 15, 0, 0, 1985, 1986, 7, 10, 0, 0, 1986, 1987, 7, 16, 0, 0, 1987, 1988, 7, 13, 0, 0, 1988, 1989, 7, 17, 0, 0, 1989, 1990, 7, 14, 0, 0, 1990, 194, 1, 0, 0, 0, 1991, 1992, 7, 16, 0, 0, 1992, 1993, 7, 5, 0, 0, 1993, 1994, 7, 18, 0, 0, 1994, 1995, 7, 6, 0, 0, 1995, 1996, 7, 10, 0, 0, 1996, 196, 1, 0, 0, 0, 1997, 1998, 7, 16, 0, 0, 1998, 1999, 7, 20, 0, 0, 1999, 2000, 7, 10, 0, 0, 2000, 2001, 7, 7, 0, 0, 2001, 198, 1, 0, 0, 0, 2002, 2003, 7, 16, 0, 0, 2003, 2004, 7, 19, 0, 0, 2004, 200, 1, 0, 0, 0, 2005, 2006, 7, 16, 0, 0, 2006, 2007, 7, 19, 0, 0, 2007, 2008, 7, 24, 0, 0, 2008, 2009, 7, 17, 0, 0, 2009, 2010, 7, 14, 0, 0, 2010, 202, 1, 0, 0, 0, 2011, 2012, 7, 9, 0, 0, 2012, 2013, 7, 16, 0, 0, 2013, 2014, 7, 13, 0, 0, 2014, 2015, 7, 10, 0, 0, 2015, 2016, 7, 5, 0, 0, 2016, 2017, 7, 15, 0, 0, 2017, 204, 1, 0, 0, 0, 2018, 2019, 7, 11, 0, 0, 2019, 2020, 7, 27, 0, 0, 2020, 2021, 7, 17, 0, 0, 2021, 2022, 7, 10, 0, 0, 2022, 2023, 7, 28, 0, 0, 2023, 206, 1, 0, 0, 0, 2024, 2025, 7, 16, 0, 0, 2025, 2026, 7, 13, 0, 0, 2026, 2027, 7, 5, 0, 0, 2027, 2028, 7, 17, 0, 0, 2028, 2029, 7, 6, 0, 0, 2029, 2030, 7, 17, 0, 0, 2030, 2031, 7, 7, 0, 0, 2031, 2032, 7, 23, 0, 0, 2032, 208, 1, 0, 0, 0, 2033, 2034, 7, 16, 0, 0, 2034, 2035, 7, 13, 0, 0, 2035, 2036, 7, 22, 0, 0, 2036, 2037, 7, 10, 0, 0, 2037, 210, 1, 0, 0, 0, 2038, 2039, 7, 22, 0, 0, 2039, 2040, 7, 7, 0, 0, 2040, 2041, 7, 17, 0, 0, 2041, 2042, 7, 19, 0, 0, 2042, 2043, 7, 7, 0, 0, 2043, 212, 1, 0, 0, 0, 2044, 2045, 7, 22, 0, 0, 2045, 2046, 7, 7, 0, 0, 2046, 2047, 7, 17, 0, 0, 2047, 2048, 7, 29, 0, 0, 2048, 2049, 7, 22, 0, 0, 2049, 2050, 7, 10, 0, 0, 2050, 214, 1, 0, 0, 0, 2051, 2052, 7, 22, 0, 0, 2052, 2053, 7, 9, 0, 0, 2053, 2054, 7, 10, 0, 0, 2054, 2055, 7, 13, 0, 0, 2055, 216, 1, 0, 0, 0, 2056, 2057, 7, 22, 0, 0, 2057, 2058, 7, 9, 0, 0, 2058, 2059, 7, 17, 0, 0, 2059, 2060, 7, 7, 0, 0, 2060, 2061, 7, 23, 0, 0, 2061, 218, 1, 0, 0, 0, 2062, 2063, 7, 27, 0, 0, 2063, 2064, 7, 5, 0, 0, 2064, 2065, 7, 13, 0, 0, 2065, 2066, 7, 17, 0, 0, 2066, 2067, 7, 5, 0, 0, 2067, 2068, 7, 12, 0, 0, 2068, 2069, 7, 17, 0, 0, 2069, 2070, 7, 14, 0, 0, 2070, 220, 1, 0, 0, 0, 2071, 2072, 7, 28, 0, 0, 2072, 2073, 7, 20, 0, 0, 2073, 2074, 7, 10, 0, 0, 2074, 2075, 7, 7, 0, 0, 2075, 222, 1, 0, 0, 0, 2076, 2077, 7, 28, 0, 0, 2077, 2078, 7, 20, 0, 0, 2078, 2079, 7, 10, 0, 0, 2079, 2080, 7, 13, 0, 0, 2080, 2081, 7, 10, 0, 0, 2081, 224, 1, 0, 0, 0, 2082, 2083, 7, 28, 0, 0, 2083, 2084, 7, 17, 0, 0, 2084, 2085, 7, 7, 0, 0, 2085, 2086, 7, 12, 0, 0, 2086, 2087, 7, 19, 0, 0, 2087, 2088, 7, 28, 0, 0, 2088, 226, 1, 0, 0, 0, 2089, 2090, 7, 28, 0, 0, 2090, 2091, 7, 17, 0, 0, 2091, 2092, 7, 16, 0, 0, 2092, 2093, 7, 20, 0, 0, 2093, 228, 1, 0, 0, 0, 2094, 2095, 7, 5, 0, 0, 2095, 2096, 7, 22, 0, 0, 2096, 2097, 7, 16, 0, 0, 2097, 2098, 7, 20, 0, 0, 2098, 2099, 7, 19, 0, 0, 2099, 2100, 7, 13, 0, 0, 2100, 2101, 7, 17, 0, 0, 2101, 2102, 7, 11, 0, 0, 2102, 2103, 7, 5, 0, 0, 2103, 2104, 7, 16, 0, 0, 2104, 2105, 7, 17, 0, 0, 2105, 2106, 7, 19, 0, 0, 2106, 2107, 7, 7, 0, 0, 2107, 230, 1, 0, 0, 0, 2108, 2109, 7, 18, 0, 0, 2109, 2110, 7, 17, 0, 0, 2110, 2111, 7, 7, 0, 0, 2111, 2112, 7, 5, 0, 0, 2112, 2113, 7, 13, 0, 0, 2113, 2114, 7, 8, 0, 0, 2114, 232, 1, 0, 0, 0, 2115, 2116, 7, 14, 0, 0, 2116, 2117, 7, 19, 0, 0, 2117, 2118, 7, 6, 0, 0, 2118, 2119, 7, 6, 0, 0, 2119, 2120, 7, 5, 0, 0, 2120, 2121, 7, 16, 0, 0, 2121, 2122, 7, 17, 0, 0, 2122, 2123, 7, 19, 0, 0, 2123, 2124, 7, 7, 0, 0, 2124, 234, 1, 0, 0, 0, 2125, 2126, 7, 14, 0, 0, 2126, 2127, 7, 19, 0, 0, 2127, 2128, 7, 7, 0, 0, 2128, 2129, 7, 14, 0, 0, 2129, 2130, 7, 22, 0, 0, 2130, 2131, 7, 13, 0, 0, 2131, 2132, 7, 13, 0, 0, 2132, 2133, 7, 10, 0, 0, 2133, 2134, 7, 7, 0, 0, 2134, 2135, 7, 16, 0, 0, 2135, 2136, 7, 6, 0, 0, 2136, 2137, 7, 8, 0, 0, 2137, 236, 1, 0, 0, 0, 2138, 2139, 7, 14, 0, 0, 2139, 2140, 7, 13, 0, 0, 2140, 2141, 7, 19, 0, 0, 2141, 2142, 7, 9, 0, 0, 2142, 2143, 7, 9, 0, 0, 2143, 238, 1, 0, 0, 0, 2144, 2145, 7, 14, 0, 0, 2145, 2146, 7, 22, 0, 0, 2146, 2147, 7, 13, 0, 0, 2147, 2148, 7, 13, 0, 0, 2148, 2149, 7, 10, 0, 0, 2149, 2150, 7, 7, 0, 0, 2150, 2151, 7, 16, 0, 0, 2151, 2152, 5, 95, 0, 0, 2152, 2153, 7, 9, 0, 0, 2153, 2154, 7, 14, 0, 0, 2154, 2155, 7, 20, 0, 0, 2155, 2156, 7, 10, 0, 0, 2156, 2157, 7, 15, 0, 0, 2157, 2158, 7, 5, 0, 0, 2158, 240, 1, 0, 0, 0, 2159, 2160, 7, 25, 0, 0, 2160, 2161, 7, 13, 0, 0, 2161, 2162, 7, 10, 0, 0, 2162, 2163, 7, 10, 0, 0, 2163, 2164, 7, 11, 0, 0, 2164, 2165, 7, 10, 0, 0, 2165, 242, 1, 0, 0, 0, 2166, 2167, 7, 25, 0, 0, 2167, 2168, 7, 22, 0, 0, 2168, 2169, 7, 6, 0, 0, 2169, 2170, 7, 6, 0, 0, 2170, 244, 1, 0, 0, 0, 2171, 2172, 7, 17, 0, 0, 2172, 2173, 7, 6, 0, 0, 2173, 2174, 7, 17, 0, 0, 2174, 2175, 7, 21, 0, 0, 2175, 2176, 7, 10, 0, 0, 2176, 246, 1, 0, 0, 0, 2177, 2178, 7, 17, 0, 0, 2178, 2179, 7, 7, 0, 0, 2179, 2180, 7, 7, 0, 0, 2180, 2181, 7, 10, 0, 0, 2181, 2182, 7, 13, 0, 0, 2182, 248, 1, 0, 0, 0, 2183, 2184, 7, 17, 0, 0, 2184, 2185, 7, 9, 0, 0, 2185, 250, 1, 0, 0, 0, 2186, 2187, 7, 17, 0, 0, 2187, 2188, 7, 9, 0, 0, 2188, 2189, 7, 7, 0, 0, 2189, 2190, 7, 22, 0, 0, 2190, 2191, 7, 6, 0, 0, 2191, 2192, 7, 6, 0, 0, 2192, 252, 1, 0, 0, 0, 2193, 2194, 7, 30, 0, 0, 2194, 2195, 7, 19, 0, 0, 2195, 2196, 7, 17, 0, 0, 2196, 2197, 7, 7, 0, 0, 2197, 254, 1, 0, 0, 0, 2198, 2199, 7, 6, 0, 0, 2199, 2200, 7, 10, 0, 0, 2200, 2201, 7, 25, 0, 0, 2201, 2202, 7, 16, 0, 0, 2202, 256, 1, 0, 0, 0, 2203, 2204, 7, 6, 0, 0, 2204, 2205, 7, 17, 0, 0, 2205, 2206, 7, 21, 0, 0, 2206, 2207, 7, 10, 0, 0, 2207, 258, 1, 0, 0, 0, 2208, 2209, 7, 7, 0, 0, 2209, 2210, 7, 5, 0, 0, 2210, 2211, 7, 16, 0, 0, 2211, 2212, 7, 22, 0, 0, 2212, 2213, 7, 13, 0, 0, 2213, 2214, 7, 5, 0, 0, 2214, 2215, 7, 6, 0, 0, 2215, 260, 1, 0, 0, 0, 2216, 2217, 7, 7, 0, 0, 2217, 2218, 7, 19, 0, 0, 2218, 2219, 7, 16, 0, 0, 2219, 2220, 7, 7, 0, 0, 2220, 2221, 7, 22, 0, 0, 2221, 2222, 7, 6, 0, 0, 2222, 2223, 7, 6, 0, 0, 2223, 262, 1, 0, 0, 0, 2224, 2225, 7, 19, 0, 0, 2225, 2226, 7, 22, 0, 0, 2226, 2227, 7, 16, 0, 0, 2227, 2228, 7, 10, 0, 0, 2228, 2229, 7, 13, 0, 0, 2229, 264, 1, 0, 0, 0, 2230, 2231, 7, 19, 0, 0, 2231, 2232, 7, 27, 0, 0, 2232, 2233, 7, 10, 0, 0, 2233, 2234, 7, 13, 0, 0, 2234, 266, 1, 0, 0, 0, 2235, 2236, 7, 19, 0, 0, 2236, 2237, 7, 27, 0, 0, 2237, 2238, 7, 10, 0, 0, 2238, 2239, 7, 13, 0, 0, 2239, 2240, 7, 6, 0, 0, 2240, 2241, 7, 5, 0, 0, 2241, 2242, 7, 24, 0, 0, 2242, 2243, 7, 9, 0, 0, 2243, 268, 1, 0, 0, 0, 2244, 2245, 7, 13, 0, 0, 2245, 2246, 7, 17, 0, 0, 2246, 2247, 7, 23, 0, 0, 2247, 2248, 7, 20, 0, 0, 2248, 2249, 7, 16, 0, 0, 2249, 270, 1, 0, 0, 0, 2250, 2251, 7, 9, 0, 0, 2251, 2252, 7, 17, 0, 0, 2252, 2253, 7, 15, 0, 0, 2253, 2254, 7, 17, 0, 0, 2254, 2255, 7, 6, 0, 0, 2255, 2256, 7, 5, 0, 0, 2256, 2257, 7, 13, 0, 0, 2257, 272, 1, 0, 0, 0, 2258, 2259, 7, 27, 0, 0, 2259, 2260, 7, 10, 0, 0, 2260, 2261, 7, 13, 0, 0, 2261, 2262, 7, 18, 0, 0, 2262, 2263, 7, 19, 0, 0, 2263, 2264, 7, 9, 0, 0, 2264, 2265, 7, 10, 0, 0, 2265, 274, 1, 0, 0, 0, 2266, 2267, 7, 5, 0, 0, 2267, 2268, 7, 18, 0, 0, 2268, 2269, 7, 19, 0, 0, 2269, 2270, 7, 13, 0, 0, 2270, 2271, 7, 16, 0, 0, 2271, 276, 1, 0, 0, 0, 2272, 2273, 7, 5, 0, 0, 2273, 2274, 7, 18, 0, 0, 2274, 2275, 7, 9, 0, 0, 2275, 2276, 7, 19, 0, 0, 2276, 2277, 7, 6, 0, 0, 2277, 2278, 7, 22, 0, 0, 2278, 2279, 7, 16, 0, 0, 2279, 2280, 7, 10, 0, 0, 2280, 278, 1, 0, 0, 0, 2281, 2282, 7, 5, 0, 0, 2282, 2283, 7, 14, 0, 0, 2283, 2284, 7, 14, 0, 0, 2284, 2285, 7, 10, 0, 0, 2285, 2286, 7, 9, 0, 0, 2286, 2287, 7, 9, 0, 0, 2287, 280, 1, 0, 0, 0, 2288, 2289, 7, 5, 0, 0, 2289, 2290, 7, 14, 0, 0, 2290, 2291, 7, 16, 0, 0, 2291, 2292, 7, 17, 0, 0, 2292, 2293, 7, 19, 0, 0, 2293, 2294, 7, 7, 0, 0, 2294, 282, 1, 0, 0, 0, 2295, 2296, 7, 5, 0, 0, 2296, 2297, 7, 12, 0, 0, 2297, 2298, 7, 12, 0, 0, 2298, 284, 1, 0, 0, 0, 2299, 2300, 7, 5, 0, 0, 2300, 2301, 7, 12, 0, 0, 2301, 2302, 7, 15, 0, 0, 2302, 2303, 7, 17, 0, 0, 2303, 2304, 7, 7, 0, 0, 2304, 286, 1, 0, 0, 0, 2305, 2306, 7, 5, 0, 0, 2306, 2307, 7, 25, 0, 0, 2307, 2308, 7, 16, 0, 0, 2308, 2309, 7, 10, 0, 0, 2309, 2310, 7, 13, 0, 0, 2310, 288, 1, 0, 0, 0, 2311, 2312, 7, 5, 0, 0, 2312, 2313, 7, 23, 0, 0, 2313, 2314, 7, 23, 0, 0, 2314, 2315, 7, 13, 0, 0, 2315, 2316, 7, 10, 0, 0, 2316, 2317, 7, 23, 0, 0, 2317, 2318, 7, 5, 0, 0, 2318, 2319, 7, 16, 0, 0, 2319, 2320, 7, 10, 0, 0, 2320, 290, 1, 0, 0, 0, 2321, 2322, 7, 5, 0, 0, 2322, 2323, 7, 6, 0, 0, 2323, 2324, 7, 9, 0, 0, 2324, 2325, 7, 19, 0, 0, 2325, 292, 1, 0, 0, 0, 2326, 2327, 7, 5, 0, 0, 2327, 2328, 7, 6, 0, 0, 2328, 2329, 7, 16, 0, 0, 2329, 2330, 7, 10, 0, 0, 2330, 2331, 7, 13, 0, 0, 2331, 294, 1, 0, 0, 0, 2332, 2333, 7, 5, 0, 0, 2333, 2334, 7, 6, 0, 0, 2334, 2335, 7, 28, 0, 0, 2335, 2336, 7, 5, 0, 0, 2336, 2337, 7, 8, 0, 0, 2337, 2338, 7, 9, 0, 0, 2338, 296, 1, 0, 0, 0, 2339, 2340, 7, 5, 0, 0, 2340, 2341, 7, 9, 0, 0, 2341, 2342, 7, 9, 0, 0, 2342, 2343, 7, 10, 0, 0, 2343, 2344, 7, 13, 0, 0, 2344, 2345, 7, 16, 0, 0, 2345, 2346, 7, 17, 0, 0, 2346, 2347, 7, 19, 0, 0, 2347, 2348, 7, 7, 0, 0, 2348, 298, 1, 0, 0, 0, 2349, 2350, 7, 5, 0, 0, 2350, 2351, 7, 9, 0, 0, 2351, 2352, 7, 9, 0, 0, 2352, 2353, 7, 17, 0, 0, 2353, 2354, 7, 23, 0, 0, 2354, 2355, 7, 7, 0, 0, 2355, 2356, 7, 15, 0, 0, 2356, 2357, 7, 10, 0, 0, 2357, 2358, 7, 7, 0, 0, 2358, 2359, 7, 16, 0, 0, 2359, 300, 1, 0, 0, 0, 2360, 2361, 7, 5, 0, 0, 2361, 2362, 7, 16, 0, 0, 2362, 302, 1, 0, 0, 0, 2363, 2364, 7, 5, 0, 0, 2364, 2365, 7, 16, 0, 0, 2365, 2366, 7, 16, 0, 0, 2366, 2367, 7, 13, 0, 0, 2367, 2368, 7, 17, 0, 0, 2368, 2369, 7, 18, 0, 0, 2369, 2370, 7, 22, 0, 0, 2370, 2371, 7, 16, 0, 0, 2371, 2372, 7, 10, 0, 0, 2372, 304, 1, 0, 0, 0, 2373, 2374, 7, 18, 0, 0, 2374, 2375, 7, 5, 0, 0, 2375, 2376, 7, 14, 0, 0, 2376, 2377, 7, 21, 0, 0, 2377, 2378, 7, 28, 0, 0, 2378, 2379, 7, 5, 0, 0, 2379, 2380, 7, 13, 0, 0, 2380, 2381, 7, 12, 0, 0, 2381, 306, 1, 0, 0, 0, 2382, 2383, 7, 18, 0, 0, 2383, 2384, 7, 10, 0, 0, 2384, 2385, 7, 25, 0, 0, 2385, 2386, 7, 19, 0, 0, 2386, 2387, 7, 13, 0, 0, 2387, 2388, 7, 10, 0, 0, 2388, 308, 1, 0, 0, 0, 2389, 2390, 7, 18, 0, 0, 2390, 2391, 7, 10, 0, 0, 2391, 2392, 7, 23, 0, 0, 2392, 2393, 7, 17, 0, 0, 2393, 2394, 7, 7, 0, 0, 2394, 310, 1, 0, 0, 0, 2395, 2396, 7, 18, 0, 0, 2396, 2397, 7, 8, 0, 0, 2397, 312, 1, 0, 0, 0, 2398, 2399, 7, 14, 0, 0, 2399, 2400, 7, 5, 0, 0, 2400, 2401, 7, 14, 0, 0, 2401, 2402, 7, 20, 0, 0, 2402, 2403, 7, 10, 0, 0, 2403, 314, 1, 0, 0, 0, 2404, 2405, 7, 14, 0, 0, 2405, 2406, 7, 5, 0, 0, 2406, 2407, 7, 6, 0, 0, 2407, 2408, 7, 6, 0, 0, 2408, 2409, 7, 10, 0, 0, 2409, 2410, 7, 12, 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, 318, 1, 0, 0, 0, 2419, 2420, 7, 14, 0, 0, 2420, 2421, 7, 5, 0, 0, 2421, 2422, 7, 9, 0, 0, 2422, 2423, 7, 14, 0, 0, 2423, 2424, 7, 5, 0, 0, 2424, 2425, 7, 12, 0, 0, 2425, 2426, 7, 10, 0, 0, 2426, 2427, 7, 12, 0, 0, 2427, 320, 1, 0, 0, 0, 2428, 2429, 7, 14, 0, 0, 2429, 2430, 7, 5, 0, 0, 2430, 2431, 7, 16, 0, 0, 2431, 2432, 7, 5, 0, 0, 2432, 2433, 7, 6, 0, 0, 2433, 2434, 7, 19, 0, 0, 2434, 2435, 7, 23, 0, 0, 2435, 322, 1, 0, 0, 0, 2436, 2437, 7, 14, 0, 0, 2437, 2438, 7, 20, 0, 0, 2438, 2439, 7, 5, 0, 0, 2439, 2440, 7, 17, 0, 0, 2440, 2441, 7, 7, 0, 0, 2441, 324, 1, 0, 0, 0, 2442, 2443, 7, 14, 0, 0, 2443, 2444, 7, 20, 0, 0, 2444, 2445, 7, 5, 0, 0, 2445, 2446, 7, 13, 0, 0, 2446, 2447, 7, 5, 0, 0, 2447, 2448, 7, 14, 0, 0, 2448, 2449, 7, 16, 0, 0, 2449, 2450, 7, 10, 0, 0, 2450, 2451, 7, 13, 0, 0, 2451, 2452, 7, 17, 0, 0, 2452, 2453, 7, 9, 0, 0, 2453, 2454, 7, 16, 0, 0, 2454, 2455, 7, 17, 0, 0, 2455, 2456, 7, 14, 0, 0, 2456, 2457, 7, 9, 0, 0, 2457, 326, 1, 0, 0, 0, 2458, 2459, 7, 14, 0, 0, 2459, 2460, 7, 20, 0, 0, 2460, 2461, 7, 10, 0, 0, 2461, 2462, 7, 14, 0, 0, 2462, 2463, 7, 21, 0, 0, 2463, 2464, 7, 24, 0, 0, 2464, 2465, 7, 19, 0, 0, 2465, 2466, 7, 17, 0, 0, 2466, 2467, 7, 7, 0, 0, 2467, 2468, 7, 16, 0, 0, 2468, 328, 1, 0, 0, 0, 2469, 2470, 7, 14, 0, 0, 2470, 2471, 7, 6, 0, 0, 2471, 2472, 7, 5, 0, 0, 2472, 2473, 7, 9, 0, 0, 2473, 2474, 7, 9, 0, 0, 2474, 330, 1, 0, 0, 0, 2475, 2476, 7, 14, 0, 0, 2476, 2477, 7, 6, 0, 0, 2477, 2478, 7, 19, 0, 0, 2478, 2479, 7, 9, 0, 0, 2479, 2480, 7, 10, 0, 0, 2480, 332, 1, 0, 0, 0, 2481, 2482, 7, 14, 0, 0, 2482, 2483, 7, 6, 0, 0, 2483, 2484, 7, 22, 0, 0, 2484, 2485, 7, 9, 0, 0, 2485, 2486, 7, 16, 0, 0, 2486, 2487, 7, 10, 0, 0, 2487, 2488, 7, 13, 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, 336, 1, 0, 0, 0, 2497, 2498, 7, 14, 0, 0, 2498, 2499, 7, 19, 0, 0, 2499, 2500, 7, 15, 0, 0, 2500, 2501, 7, 15, 0, 0, 2501, 2502, 7, 10, 0, 0, 2502, 2503, 7, 7, 0, 0, 2503, 2504, 7, 16, 0, 0, 2504, 2505, 7, 9, 0, 0, 2505, 338, 1, 0, 0, 0, 2506, 2507, 7, 14, 0, 0, 2507, 2508, 7, 19, 0, 0, 2508, 2509, 7, 15, 0, 0, 2509, 2510, 7, 15, 0, 0, 2510, 2511, 7, 17, 0, 0, 2511, 2512, 7, 16, 0, 0, 2512, 340, 1, 0, 0, 0, 2513, 2514, 7, 14, 0, 0, 2514, 2515, 7, 19, 0, 0, 2515, 2516, 7, 15, 0, 0, 2516, 2517, 7, 15, 0, 0, 2517, 2518, 7, 17, 0, 0, 2518, 2519, 7, 16, 0, 0, 2519, 2520, 7, 16, 0, 0, 2520, 2521, 7, 10, 0, 0, 2521, 2522, 7, 12, 0, 0, 2522, 342, 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, 25, 0, 0, 2527, 2528, 7, 17, 0, 0, 2528, 2529, 7, 23, 0, 0, 2529, 2530, 7, 22, 0, 0, 2530, 2531, 7, 13, 0, 0, 2531, 2532, 7, 5, 0, 0, 2532, 2533, 7, 16, 0, 0, 2533, 2534, 7, 17, 0, 0, 2534, 2535, 7, 19, 0, 0, 2535, 2536, 7, 7, 0, 0, 2536, 344, 1, 0, 0, 0, 2537, 2538, 7, 14, 0, 0, 2538, 2539, 7, 19, 0, 0, 2539, 2540, 7, 7, 0, 0, 2540, 2541, 7, 7, 0, 0, 2541, 2542, 7, 10, 0, 0, 2542, 2543, 7, 14, 0, 0, 2543, 2544, 7, 16, 0, 0, 2544, 2545, 7, 17, 0, 0, 2545, 2546, 7, 19, 0, 0, 2546, 2547, 7, 7, 0, 0, 2547, 346, 1, 0, 0, 0, 2548, 2549, 7, 14, 0, 0, 2549, 2550, 7, 19, 0, 0, 2550, 2551, 7, 7, 0, 0, 2551, 2552, 7, 9, 0, 0, 2552, 2553, 7, 16, 0, 0, 2553, 2554, 7, 13, 0, 0, 2554, 2555, 7, 5, 0, 0, 2555, 2556, 7, 17, 0, 0, 2556, 2557, 7, 7, 0, 0, 2557, 2558, 7, 16, 0, 0, 2558, 2559, 7, 9, 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, 10, 0, 0, 2565, 2566, 7, 7, 0, 0, 2566, 2567, 7, 16, 0, 0, 2567, 350, 1, 0, 0, 0, 2568, 2569, 7, 14, 0, 0, 2569, 2570, 7, 19, 0, 0, 2570, 2571, 7, 7, 0, 0, 2571, 2572, 7, 16, 0, 0, 2572, 2573, 7, 17, 0, 0, 2573, 2574, 7, 7, 0, 0, 2574, 2575, 7, 22, 0, 0, 2575, 2576, 7, 10, 0, 0, 2576, 352, 1, 0, 0, 0, 2577, 2578, 7, 14, 0, 0, 2578, 2579, 7, 19, 0, 0, 2579, 2580, 7, 7, 0, 0, 2580, 2581, 7, 27, 0, 0, 2581, 2582, 7, 10, 0, 0, 2582, 2583, 7, 13, 0, 0, 2583, 2584, 7, 9, 0, 0, 2584, 2585, 7, 17, 0, 0, 2585, 2586, 7, 19, 0, 0, 2586, 2587, 7, 7, 0, 0, 2587, 354, 1, 0, 0, 0, 2588, 2589, 7, 14, 0, 0, 2589, 2590, 7, 19, 0, 0, 2590, 2591, 7, 24, 0, 0, 2591, 2592, 7, 8, 0, 0, 2592, 356, 1, 0, 0, 0, 2593, 2594, 7, 14, 0, 0, 2594, 2595, 7, 19, 0, 0, 2595, 2596, 7, 9, 0, 0, 2596, 2597, 7, 16, 0, 0, 2597, 358, 1, 0, 0, 0, 2598, 2599, 7, 14, 0, 0, 2599, 2600, 7, 9, 0, 0, 2600, 2601, 7, 27, 0, 0, 2601, 360, 1, 0, 0, 0, 2602, 2603, 7, 14, 0, 0, 2603, 2604, 7, 22, 0, 0, 2604, 2605, 7, 13, 0, 0, 2605, 2606, 7, 9, 0, 0, 2606, 2607, 7, 19, 0, 0, 2607, 2608, 7, 13, 0, 0, 2608, 362, 1, 0, 0, 0, 2609, 2610, 7, 14, 0, 0, 2610, 2611, 7, 8, 0, 0, 2611, 2612, 7, 14, 0, 0, 2612, 2613, 7, 6, 0, 0, 2613, 2614, 7, 10, 0, 0, 2614, 364, 1, 0, 0, 0, 2615, 2616, 7, 12, 0, 0, 2616, 2617, 7, 5, 0, 0, 2617, 2618, 7, 16, 0, 0, 2618, 2619, 7, 5, 0, 0, 2619, 366, 1, 0, 0, 0, 2620, 2621, 7, 12, 0, 0, 2621, 2622, 7, 5, 0, 0, 2622, 2623, 7, 16, 0, 0, 2623, 2624, 7, 5, 0, 0, 2624, 2625, 7, 18, 0, 0, 2625, 2626, 7, 5, 0, 0, 2626, 2627, 7, 9, 0, 0, 2627, 2628, 7, 10, 0, 0, 2628, 368, 1, 0, 0, 0, 2629, 2630, 7, 12, 0, 0, 2630, 2631, 7, 5, 0, 0, 2631, 2632, 7, 8, 0, 0, 2632, 370, 1, 0, 0, 0, 2633, 2634, 7, 12, 0, 0, 2634, 2635, 7, 10, 0, 0, 2635, 2636, 7, 5, 0, 0, 2636, 2637, 7, 6, 0, 0, 2637, 2638, 7, 6, 0, 0, 2638, 2639, 7, 19, 0, 0, 2639, 2640, 7, 14, 0, 0, 2640, 2641, 7, 5, 0, 0, 2641, 2642, 7, 16, 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, 14, 0, 0, 2647, 2648, 7, 6, 0, 0, 2648, 2649, 7, 5, 0, 0, 2649, 2650, 7, 13, 0, 0, 2650, 2651, 7, 10, 0, 0, 2651, 374, 1, 0, 0, 0, 2652, 2653, 7, 12, 0, 0, 2653, 2654, 7, 10, 0, 0, 2654, 2655, 7, 25, 0, 0, 2655, 2656, 7, 5, 0, 0, 2656, 2657, 7, 22, 0, 0, 2657, 2658, 7, 6, 0, 0, 2658, 2659, 7, 16, 0, 0, 2659, 2660, 7, 9, 0, 0, 2660, 376, 1, 0, 0, 0, 2661, 2662, 7, 12, 0, 0, 2662, 2663, 7, 10, 0, 0, 2663, 2664, 7, 25, 0, 0, 2664, 2665, 7, 10, 0, 0, 2665, 2666, 7, 13, 0, 0, 2666, 2667, 7, 13, 0, 0, 2667, 2668, 7, 10, 0, 0, 2668, 2669, 7, 12, 0, 0, 2669, 378, 1, 0, 0, 0, 2670, 2671, 7, 12, 0, 0, 2671, 2672, 7, 10, 0, 0, 2672, 2673, 7, 25, 0, 0, 2673, 2674, 7, 17, 0, 0, 2674, 2675, 7, 7, 0, 0, 2675, 2676, 7, 10, 0, 0, 2676, 2677, 7, 13, 0, 0, 2677, 380, 1, 0, 0, 0, 2678, 2679, 7, 12, 0, 0, 2679, 2680, 7, 10, 0, 0, 2680, 2681, 7, 6, 0, 0, 2681, 2682, 7, 10, 0, 0, 2682, 2683, 7, 16, 0, 0, 2683, 2684, 7, 10, 0, 0, 2684, 382, 1, 0, 0, 0, 2685, 2686, 7, 12, 0, 0, 2686, 2687, 7, 10, 0, 0, 2687, 2688, 7, 6, 0, 0, 2688, 2689, 7, 17, 0, 0, 2689, 2690, 7, 15, 0, 0, 2690, 2691, 7, 17, 0, 0, 2691, 2692, 7, 16, 0, 0, 2692, 2693, 7, 10, 0, 0, 2693, 2694, 7, 13, 0, 0, 2694, 384, 1, 0, 0, 0, 2695, 2696, 7, 12, 0, 0, 2696, 2697, 7, 10, 0, 0, 2697, 2698, 7, 6, 0, 0, 2698, 2699, 7, 17, 0, 0, 2699, 2700, 7, 15, 0, 0, 2700, 2701, 7, 17, 0, 0, 2701, 2702, 7, 16, 0, 0, 2702, 2703, 7, 10, 0, 0, 2703, 2704, 7, 13, 0, 0, 2704, 2705, 7, 9, 0, 0, 2705, 386, 1, 0, 0, 0, 2706, 2707, 7, 12, 0, 0, 2707, 2708, 7, 17, 0, 0, 2708, 2709, 7, 14, 0, 0, 2709, 2710, 7, 16, 0, 0, 2710, 2711, 7, 17, 0, 0, 2711, 2712, 7, 19, 0, 0, 2712, 2713, 7, 7, 0, 0, 2713, 2714, 7, 5, 0, 0, 2714, 2715, 7, 13, 0, 0, 2715, 2716, 7, 8, 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, 5, 0, 0, 2721, 2722, 7, 18, 0, 0, 2722, 2723, 7, 6, 0, 0, 2723, 2724, 7, 10, 0, 0, 2724, 390, 1, 0, 0, 0, 2725, 2726, 7, 12, 0, 0, 2726, 2727, 7, 17, 0, 0, 2727, 2728, 7, 9, 0, 0, 2728, 2729, 7, 14, 0, 0, 2729, 2730, 7, 5, 0, 0, 2730, 2731, 7, 13, 0, 0, 2731, 2732, 7, 12, 0, 0, 2732, 392, 1, 0, 0, 0, 2733, 2734, 7, 12, 0, 0, 2734, 2735, 7, 19, 0, 0, 2735, 2736, 7, 14, 0, 0, 2736, 2737, 7, 22, 0, 0, 2737, 2738, 7, 15, 0, 0, 2738, 2739, 7, 10, 0, 0, 2739, 2740, 7, 7, 0, 0, 2740, 2741, 7, 16, 0, 0, 2741, 394, 1, 0, 0, 0, 2742, 2743, 7, 12, 0, 0, 2743, 2744, 7, 19, 0, 0, 2744, 2745, 7, 15, 0, 0, 2745, 2746, 7, 5, 0, 0, 2746, 2747, 7, 17, 0, 0, 2747, 2748, 7, 7, 0, 0, 2748, 396, 1, 0, 0, 0, 2749, 2750, 7, 12, 0, 0, 2750, 2751, 7, 19, 0, 0, 2751, 2752, 7, 22, 0, 0, 2752, 2753, 7, 18, 0, 0, 2753, 2754, 7, 6, 0, 0, 2754, 2755, 7, 10, 0, 0, 2755, 398, 1, 0, 0, 0, 2756, 2757, 7, 12, 0, 0, 2757, 2758, 7, 13, 0, 0, 2758, 2759, 7, 19, 0, 0, 2759, 2760, 7, 24, 0, 0, 2760, 400, 1, 0, 0, 0, 2761, 2762, 7, 10, 0, 0, 2762, 2763, 7, 5, 0, 0, 2763, 2764, 7, 14, 0, 0, 2764, 2765, 7, 20, 0, 0, 2765, 402, 1, 0, 0, 0, 2766, 2767, 7, 10, 0, 0, 2767, 2768, 7, 7, 0, 0, 2768, 2769, 7, 5, 0, 0, 2769, 2770, 7, 18, 0, 0, 2770, 2771, 7, 6, 0, 0, 2771, 2772, 7, 10, 0, 0, 2772, 404, 1, 0, 0, 0, 2773, 2774, 7, 10, 0, 0, 2774, 2775, 7, 7, 0, 0, 2775, 2776, 7, 14, 0, 0, 2776, 2777, 7, 19, 0, 0, 2777, 2778, 7, 12, 0, 0, 2778, 2779, 7, 17, 0, 0, 2779, 2780, 7, 7, 0, 0, 2780, 2781, 7, 23, 0, 0, 2781, 406, 1, 0, 0, 0, 2782, 2783, 7, 10, 0, 0, 2783, 2784, 7, 7, 0, 0, 2784, 2785, 7, 14, 0, 0, 2785, 2786, 7, 13, 0, 0, 2786, 2787, 7, 8, 0, 0, 2787, 2788, 7, 24, 0, 0, 2788, 2789, 7, 16, 0, 0, 2789, 2790, 7, 10, 0, 0, 2790, 2791, 7, 12, 0, 0, 2791, 408, 1, 0, 0, 0, 2792, 2793, 7, 10, 0, 0, 2793, 2794, 7, 7, 0, 0, 2794, 2795, 7, 22, 0, 0, 2795, 2796, 7, 15, 0, 0, 2796, 410, 1, 0, 0, 0, 2797, 2798, 7, 10, 0, 0, 2798, 2799, 7, 9, 0, 0, 2799, 2800, 7, 14, 0, 0, 2800, 2801, 7, 5, 0, 0, 2801, 2802, 7, 24, 0, 0, 2802, 2803, 7, 10, 0, 0, 2803, 412, 1, 0, 0, 0, 2804, 2805, 7, 10, 0, 0, 2805, 2806, 7, 27, 0, 0, 2806, 2807, 7, 10, 0, 0, 2807, 2808, 7, 7, 0, 0, 2808, 2809, 7, 16, 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, 10, 0, 0, 2817, 416, 1, 0, 0, 0, 2818, 2819, 7, 10, 0, 0, 2819, 2820, 7, 26, 0, 0, 2820, 2821, 7, 14, 0, 0, 2821, 2822, 7, 6, 0, 0, 2822, 2823, 7, 22, 0, 0, 2823, 2824, 7, 12, 0, 0, 2824, 2825, 7, 17, 0, 0, 2825, 2826, 7, 7, 0, 0, 2826, 2827, 7, 23, 0, 0, 2827, 418, 1, 0, 0, 0, 2828, 2829, 7, 10, 0, 0, 2829, 2830, 7, 26, 0, 0, 2830, 2831, 7, 14, 0, 0, 2831, 2832, 7, 6, 0, 0, 2832, 2833, 7, 22, 0, 0, 2833, 2834, 7, 9, 0, 0, 2834, 2835, 7, 17, 0, 0, 2835, 2836, 7, 27, 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, 10, 0, 0, 2841, 2842, 7, 14, 0, 0, 2842, 2843, 7, 22, 0, 0, 2843, 2844, 7, 16, 0, 0, 2844, 2845, 7, 10, 0, 0, 2845, 422, 1, 0, 0, 0, 2846, 2847, 7, 10, 0, 0, 2847, 2848, 7, 26, 0, 0, 2848, 2849, 7, 24, 0, 0, 2849, 2850, 7, 6, 0, 0, 2850, 2851, 7, 5, 0, 0, 2851, 2852, 7, 17, 0, 0, 2852, 2853, 7, 7, 0, 0, 2853, 424, 1, 0, 0, 0, 2854, 2855, 7, 10, 0, 0, 2855, 2856, 7, 26, 0, 0, 2856, 2857, 7, 16, 0, 0, 2857, 2858, 7, 10, 0, 0, 2858, 2859, 7, 7, 0, 0, 2859, 2860, 7, 9, 0, 0, 2860, 2861, 7, 17, 0, 0, 2861, 2862, 7, 19, 0, 0, 2862, 2863, 7, 7, 0, 0, 2863, 426, 1, 0, 0, 0, 2864, 2865, 7, 10, 0, 0, 2865, 2866, 7, 26, 0, 0, 2866, 2867, 7, 16, 0, 0, 2867, 2868, 7, 10, 0, 0, 2868, 2869, 7, 13, 0, 0, 2869, 2870, 7, 7, 0, 0, 2870, 2871, 7, 5, 0, 0, 2871, 2872, 7, 6, 0, 0, 2872, 428, 1, 0, 0, 0, 2873, 2874, 7, 25, 0, 0, 2874, 2875, 7, 5, 0, 0, 2875, 2876, 7, 15, 0, 0, 2876, 2877, 7, 17, 0, 0, 2877, 2878, 7, 6, 0, 0, 2878, 2879, 7, 8, 0, 0, 2879, 430, 1, 0, 0, 0, 2880, 2881, 7, 25, 0, 0, 2881, 2882, 7, 17, 0, 0, 2882, 2883, 7, 13, 0, 0, 2883, 2884, 7, 9, 0, 0, 2884, 2885, 7, 16, 0, 0, 2885, 432, 1, 0, 0, 0, 2886, 2887, 7, 25, 0, 0, 2887, 2888, 7, 19, 0, 0, 2888, 2889, 7, 6, 0, 0, 2889, 2890, 7, 6, 0, 0, 2890, 2891, 7, 19, 0, 0, 2891, 2892, 7, 28, 0, 0, 2892, 2893, 7, 17, 0, 0, 2893, 2894, 7, 7, 0, 0, 2894, 2895, 7, 23, 0, 0, 2895, 434, 1, 0, 0, 0, 2896, 2897, 7, 25, 0, 0, 2897, 2898, 7, 19, 0, 0, 2898, 2899, 7, 13, 0, 0, 2899, 2900, 7, 14, 0, 0, 2900, 2901, 7, 10, 0, 0, 2901, 436, 1, 0, 0, 0, 2902, 2903, 7, 25, 0, 0, 2903, 2904, 7, 19, 0, 0, 2904, 2905, 7, 13, 0, 0, 2905, 2906, 7, 28, 0, 0, 2906, 2907, 7, 5, 0, 0, 2907, 2908, 7, 13, 0, 0, 2908, 2909, 7, 12, 0, 0, 2909, 438, 1, 0, 0, 0, 2910, 2911, 7, 25, 0, 0, 2911, 2912, 7, 22, 0, 0, 2912, 2913, 7, 7, 0, 0, 2913, 2914, 7, 14, 0, 0, 2914, 2915, 7, 16, 0, 0, 2915, 2916, 7, 17, 0, 0, 2916, 2917, 7, 19, 0, 0, 2917, 2918, 7, 7, 0, 0, 2918, 440, 1, 0, 0, 0, 2919, 2920, 7, 25, 0, 0, 2920, 2921, 7, 22, 0, 0, 2921, 2922, 7, 7, 0, 0, 2922, 2923, 7, 14, 0, 0, 2923, 2924, 7, 16, 0, 0, 2924, 2925, 7, 17, 0, 0, 2925, 2926, 7, 19, 0, 0, 2926, 2927, 7, 7, 0, 0, 2927, 2928, 7, 9, 0, 0, 2928, 442, 1, 0, 0, 0, 2929, 2930, 7, 23, 0, 0, 2930, 2931, 7, 6, 0, 0, 2931, 2932, 7, 19, 0, 0, 2932, 2933, 7, 18, 0, 0, 2933, 2934, 7, 5, 0, 0, 2934, 2935, 7, 6, 0, 0, 2935, 444, 1, 0, 0, 0, 2936, 2937, 7, 23, 0, 0, 2937, 2938, 7, 13, 0, 0, 2938, 2939, 7, 5, 0, 0, 2939, 2940, 7, 7, 0, 0, 2940, 2941, 7, 16, 0, 0, 2941, 2942, 7, 10, 0, 0, 2942, 2943, 7, 12, 0, 0, 2943, 446, 1, 0, 0, 0, 2944, 2945, 7, 20, 0, 0, 2945, 2946, 7, 5, 0, 0, 2946, 2947, 7, 7, 0, 0, 2947, 2948, 7, 12, 0, 0, 2948, 2949, 7, 6, 0, 0, 2949, 2950, 7, 10, 0, 0, 2950, 2951, 7, 13, 0, 0, 2951, 448, 1, 0, 0, 0, 2952, 2953, 7, 20, 0, 0, 2953, 2954, 7, 10, 0, 0, 2954, 2955, 7, 5, 0, 0, 2955, 2956, 7, 12, 0, 0, 2956, 2957, 7, 10, 0, 0, 2957, 2958, 7, 13, 0, 0, 2958, 450, 1, 0, 0, 0, 2959, 2960, 7, 20, 0, 0, 2960, 2961, 7, 19, 0, 0, 2961, 2962, 7, 6, 0, 0, 2962, 2963, 7, 12, 0, 0, 2963, 452, 1, 0, 0, 0, 2964, 2965, 7, 20, 0, 0, 2965, 2966, 7, 19, 0, 0, 2966, 2967, 7, 22, 0, 0, 2967, 2968, 7, 13, 0, 0, 2968, 454, 1, 0, 0, 0, 2969, 2970, 7, 17, 0, 0, 2970, 2971, 7, 12, 0, 0, 2971, 2972, 7, 10, 0, 0, 2972, 2973, 7, 7, 0, 0, 2973, 2974, 7, 16, 0, 0, 2974, 2975, 7, 17, 0, 0, 2975, 2976, 7, 16, 0, 0, 2976, 2977, 7, 8, 0, 0, 2977, 456, 1, 0, 0, 0, 2978, 2979, 7, 17, 0, 0, 2979, 2980, 7, 25, 0, 0, 2980, 458, 1, 0, 0, 0, 2981, 2982, 7, 17, 0, 0, 2982, 2983, 7, 15, 0, 0, 2983, 2984, 7, 15, 0, 0, 2984, 2985, 7, 10, 0, 0, 2985, 2986, 7, 12, 0, 0, 2986, 2987, 7, 17, 0, 0, 2987, 2988, 7, 5, 0, 0, 2988, 2989, 7, 16, 0, 0, 2989, 2990, 7, 10, 0, 0, 2990, 460, 1, 0, 0, 0, 2991, 2992, 7, 17, 0, 0, 2992, 2993, 7, 15, 0, 0, 2993, 2994, 7, 15, 0, 0, 2994, 2995, 7, 22, 0, 0, 2995, 2996, 7, 16, 0, 0, 2996, 2997, 7, 5, 0, 0, 2997, 2998, 7, 18, 0, 0, 2998, 2999, 7, 6, 0, 0, 2999, 3000, 7, 10, 0, 0, 3000, 462, 1, 0, 0, 0, 3001, 3002, 7, 17, 0, 0, 3002, 3003, 7, 15, 0, 0, 3003, 3004, 7, 24, 0, 0, 3004, 3005, 7, 6, 0, 0, 3005, 3006, 7, 17, 0, 0, 3006, 3007, 7, 14, 0, 0, 3007, 3008, 7, 17, 0, 0, 3008, 3009, 7, 16, 0, 0, 3009, 464, 1, 0, 0, 0, 3010, 3011, 7, 17, 0, 0, 3011, 3012, 7, 7, 0, 0, 3012, 3013, 7, 14, 0, 0, 3013, 3014, 7, 6, 0, 0, 3014, 3015, 7, 22, 0, 0, 3015, 3016, 7, 12, 0, 0, 3016, 3017, 7, 17, 0, 0, 3017, 3018, 7, 7, 0, 0, 3018, 3019, 7, 23, 0, 0, 3019, 466, 1, 0, 0, 0, 3020, 3021, 7, 17, 0, 0, 3021, 3022, 7, 7, 0, 0, 3022, 3023, 7, 14, 0, 0, 3023, 3024, 7, 13, 0, 0, 3024, 3025, 7, 10, 0, 0, 3025, 3026, 7, 15, 0, 0, 3026, 3027, 7, 10, 0, 0, 3027, 3028, 7, 7, 0, 0, 3028, 3029, 7, 16, 0, 0, 3029, 468, 1, 0, 0, 0, 3030, 3031, 7, 17, 0, 0, 3031, 3032, 7, 7, 0, 0, 3032, 3033, 7, 12, 0, 0, 3033, 3034, 7, 10, 0, 0, 3034, 3035, 7, 26, 0, 0, 3035, 470, 1, 0, 0, 0, 3036, 3037, 7, 17, 0, 0, 3037, 3038, 7, 7, 0, 0, 3038, 3039, 7, 12, 0, 0, 3039, 3040, 7, 10, 0, 0, 3040, 3041, 7, 26, 0, 0, 3041, 3042, 7, 10, 0, 0, 3042, 3043, 7, 9, 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, 474, 1, 0, 0, 0, 3052, 3053, 7, 17, 0, 0, 3053, 3054, 7, 7, 0, 0, 3054, 3055, 7, 20, 0, 0, 3055, 3056, 7, 10, 0, 0, 3056, 3057, 7, 13, 0, 0, 3057, 3058, 7, 17, 0, 0, 3058, 3059, 7, 16, 0, 0, 3059, 3060, 7, 9, 0, 0, 3060, 476, 1, 0, 0, 0, 3061, 3062, 7, 17, 0, 0, 3062, 3063, 7, 7, 0, 0, 3063, 3064, 7, 6, 0, 0, 3064, 3065, 7, 17, 0, 0, 3065, 3066, 7, 7, 0, 0, 3066, 3067, 7, 10, 0, 0, 3067, 478, 1, 0, 0, 0, 3068, 3069, 7, 17, 0, 0, 3069, 3070, 7, 7, 0, 0, 3070, 3071, 7, 9, 0, 0, 3071, 3072, 7, 10, 0, 0, 3072, 3073, 7, 7, 0, 0, 3073, 3074, 7, 9, 0, 0, 3074, 3075, 7, 17, 0, 0, 3075, 3076, 7, 16, 0, 0, 3076, 3077, 7, 17, 0, 0, 3077, 3078, 7, 27, 0, 0, 3078, 3079, 7, 10, 0, 0, 3079, 480, 1, 0, 0, 0, 3080, 3081, 7, 17, 0, 0, 3081, 3082, 7, 7, 0, 0, 3082, 3083, 7, 9, 0, 0, 3083, 3084, 7, 10, 0, 0, 3084, 3085, 7, 13, 0, 0, 3085, 3086, 7, 16, 0, 0, 3086, 482, 1, 0, 0, 0, 3087, 3088, 7, 17, 0, 0, 3088, 3089, 7, 7, 0, 0, 3089, 3090, 7, 9, 0, 0, 3090, 3091, 7, 16, 0, 0, 3091, 3092, 7, 10, 0, 0, 3092, 3093, 7, 5, 0, 0, 3093, 3094, 7, 12, 0, 0, 3094, 484, 1, 0, 0, 0, 3095, 3096, 7, 17, 0, 0, 3096, 3097, 7, 7, 0, 0, 3097, 3098, 7, 27, 0, 0, 3098, 3099, 7, 19, 0, 0, 3099, 3100, 7, 21, 0, 0, 3100, 3101, 7, 10, 0, 0, 3101, 3102, 7, 13, 0, 0, 3102, 486, 1, 0, 0, 0, 3103, 3104, 7, 17, 0, 0, 3104, 3105, 7, 9, 0, 0, 3105, 3106, 7, 19, 0, 0, 3106, 3107, 7, 6, 0, 0, 3107, 3108, 7, 5, 0, 0, 3108, 3109, 7, 16, 0, 0, 3109, 3110, 7, 17, 0, 0, 3110, 3111, 7, 19, 0, 0, 3111, 3112, 7, 7, 0, 0, 3112, 488, 1, 0, 0, 0, 3113, 3114, 7, 21, 0, 0, 3114, 3115, 7, 10, 0, 0, 3115, 3116, 7, 8, 0, 0, 3116, 490, 1, 0, 0, 0, 3117, 3118, 7, 6, 0, 0, 3118, 3119, 7, 5, 0, 0, 3119, 3120, 7, 18, 0, 0, 3120, 3121, 7, 10, 0, 0, 3121, 3122, 7, 6, 0, 0, 3122, 492, 1, 0, 0, 0, 3123, 3124, 7, 6, 0, 0, 3124, 3125, 7, 5, 0, 0, 3125, 3126, 7, 7, 0, 0, 3126, 3127, 7, 23, 0, 0, 3127, 3128, 7, 22, 0, 0, 3128, 3129, 7, 5, 0, 0, 3129, 3130, 7, 23, 0, 0, 3130, 3131, 7, 10, 0, 0, 3131, 494, 1, 0, 0, 0, 3132, 3133, 7, 6, 0, 0, 3133, 3134, 7, 5, 0, 0, 3134, 3135, 7, 13, 0, 0, 3135, 3136, 7, 23, 0, 0, 3136, 3137, 7, 10, 0, 0, 3137, 496, 1, 0, 0, 0, 3138, 3139, 7, 6, 0, 0, 3139, 3140, 7, 5, 0, 0, 3140, 3141, 7, 9, 0, 0, 3141, 3142, 7, 16, 0, 0, 3142, 498, 1, 0, 0, 0, 3143, 3144, 7, 6, 0, 0, 3144, 3145, 7, 10, 0, 0, 3145, 3146, 7, 5, 0, 0, 3146, 3147, 7, 21, 0, 0, 3147, 3148, 7, 24, 0, 0, 3148, 3149, 7, 13, 0, 0, 3149, 3150, 7, 19, 0, 0, 3150, 3151, 7, 19, 0, 0, 3151, 3152, 7, 25, 0, 0, 3152, 500, 1, 0, 0, 0, 3153, 3154, 7, 6, 0, 0, 3154, 3155, 7, 10, 0, 0, 3155, 3156, 7, 27, 0, 0, 3156, 3157, 7, 10, 0, 0, 3157, 3158, 7, 6, 0, 0, 3158, 502, 1, 0, 0, 0, 3159, 3160, 7, 6, 0, 0, 3160, 3161, 7, 17, 0, 0, 3161, 3162, 7, 9, 0, 0, 3162, 3163, 7, 16, 0, 0, 3163, 3164, 7, 10, 0, 0, 3164, 3165, 7, 7, 0, 0, 3165, 504, 1, 0, 0, 0, 3166, 3167, 7, 6, 0, 0, 3167, 3168, 7, 19, 0, 0, 3168, 3169, 7, 5, 0, 0, 3169, 3170, 7, 12, 0, 0, 3170, 506, 1, 0, 0, 0, 3171, 3172, 7, 6, 0, 0, 3172, 3173, 7, 19, 0, 0, 3173, 3174, 7, 14, 0, 0, 3174, 3175, 7, 5, 0, 0, 3175, 3176, 7, 6, 0, 0, 3176, 508, 1, 0, 0, 0, 3177, 3178, 7, 6, 0, 0, 3178, 3179, 7, 19, 0, 0, 3179, 3180, 7, 14, 0, 0, 3180, 3181, 7, 5, 0, 0, 3181, 3182, 7, 16, 0, 0, 3182, 3183, 7, 17, 0, 0, 3183, 3184, 7, 19, 0, 0, 3184, 3185, 7, 7, 0, 0, 3185, 510, 1, 0, 0, 0, 3186, 3187, 7, 6, 0, 0, 3187, 3188, 7, 19, 0, 0, 3188, 3189, 7, 14, 0, 0, 3189, 3190, 7, 21, 0, 0, 3190, 512, 1, 0, 0, 0, 3191, 3192, 7, 15, 0, 0, 3192, 3193, 7, 5, 0, 0, 3193, 3194, 7, 24, 0, 0, 3194, 3195, 7, 24, 0, 0, 3195, 3196, 7, 17, 0, 0, 3196, 3197, 7, 7, 0, 0, 3197, 3198, 7, 23, 0, 0, 3198, 514, 1, 0, 0, 0, 3199, 3200, 7, 15, 0, 0, 3200, 3201, 7, 5, 0, 0, 3201, 3202, 7, 16, 0, 0, 3202, 3203, 7, 14, 0, 0, 3203, 3204, 7, 20, 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, 14, 0, 0, 3209, 3210, 7, 20, 0, 0, 3210, 3211, 7, 10, 0, 0, 3211, 3212, 7, 12, 0, 0, 3212, 518, 1, 0, 0, 0, 3213, 3214, 7, 15, 0, 0, 3214, 3215, 7, 5, 0, 0, 3215, 3216, 7, 16, 0, 0, 3216, 3217, 7, 10, 0, 0, 3217, 3218, 7, 13, 0, 0, 3218, 3219, 7, 17, 0, 0, 3219, 3220, 7, 5, 0, 0, 3220, 3221, 7, 6, 0, 0, 3221, 3222, 7, 17, 0, 0, 3222, 3223, 7, 11, 0, 0, 3223, 3224, 7, 10, 0, 0, 3224, 3225, 7, 12, 0, 0, 3225, 520, 1, 0, 0, 0, 3226, 3227, 7, 15, 0, 0, 3227, 3228, 7, 5, 0, 0, 3228, 3229, 7, 26, 0, 0, 3229, 3230, 7, 27, 0, 0, 3230, 3231, 7, 5, 0, 0, 3231, 3232, 7, 6, 0, 0, 3232, 3233, 7, 22, 0, 0, 3233, 3234, 7, 10, 0, 0, 3234, 522, 1, 0, 0, 0, 3235, 3236, 7, 15, 0, 0, 3236, 3237, 7, 10, 0, 0, 3237, 3238, 7, 13, 0, 0, 3238, 3239, 7, 23, 0, 0, 3239, 3240, 7, 10, 0, 0, 3240, 524, 1, 0, 0, 0, 3241, 3242, 7, 15, 0, 0, 3242, 3243, 7, 17, 0, 0, 3243, 3244, 7, 7, 0, 0, 3244, 3245, 7, 22, 0, 0, 3245, 3246, 7, 16, 0, 0, 3246, 3247, 7, 10, 0, 0, 3247, 526, 1, 0, 0, 0, 3248, 3249, 7, 15, 0, 0, 3249, 3250, 7, 17, 0, 0, 3250, 3251, 7, 7, 0, 0, 3251, 3252, 7, 27, 0, 0, 3252, 3253, 7, 5, 0, 0, 3253, 3254, 7, 6, 0, 0, 3254, 3255, 7, 22, 0, 0, 3255, 3256, 7, 10, 0, 0, 3256, 528, 1, 0, 0, 0, 3257, 3258, 7, 15, 0, 0, 3258, 3259, 7, 19, 0, 0, 3259, 3260, 7, 12, 0, 0, 3260, 3261, 7, 10, 0, 0, 3261, 530, 1, 0, 0, 0, 3262, 3263, 7, 15, 0, 0, 3263, 3264, 7, 19, 0, 0, 3264, 3265, 7, 7, 0, 0, 3265, 3266, 7, 16, 0, 0, 3266, 3267, 7, 20, 0, 0, 3267, 532, 1, 0, 0, 0, 3268, 3269, 7, 15, 0, 0, 3269, 3270, 7, 19, 0, 0, 3270, 3271, 7, 27, 0, 0, 3271, 3272, 7, 10, 0, 0, 3272, 534, 1, 0, 0, 0, 3273, 3274, 7, 7, 0, 0, 3274, 3275, 7, 5, 0, 0, 3275, 3276, 7, 15, 0, 0, 3276, 3277, 7, 10, 0, 0, 3277, 536, 1, 0, 0, 0, 3278, 3279, 7, 7, 0, 0, 3279, 3280, 7, 5, 0, 0, 3280, 3281, 7, 15, 0, 0, 3281, 3282, 7, 10, 0, 0, 3282, 3283, 7, 9, 0, 0, 3283, 538, 1, 0, 0, 0, 3284, 3285, 7, 7, 0, 0, 3285, 3286, 7, 10, 0, 0, 3286, 3287, 7, 26, 0, 0, 3287, 3288, 7, 16, 0, 0, 3288, 540, 1, 0, 0, 0, 3289, 3290, 7, 7, 0, 0, 3290, 3291, 7, 19, 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, 20, 0, 0, 3296, 3297, 7, 17, 0, 0, 3297, 3298, 7, 7, 0, 0, 3298, 3299, 7, 23, 0, 0, 3299, 544, 1, 0, 0, 0, 3300, 3301, 7, 7, 0, 0, 3301, 3302, 7, 19, 0, 0, 3302, 3303, 7, 16, 0, 0, 3303, 3304, 7, 17, 0, 0, 3304, 3305, 7, 25, 0, 0, 3305, 3306, 7, 8, 0, 0, 3306, 546, 1, 0, 0, 0, 3307, 3308, 7, 7, 0, 0, 3308, 3309, 7, 19, 0, 0, 3309, 3310, 7, 28, 0, 0, 3310, 3311, 7, 5, 0, 0, 3311, 3312, 7, 17, 0, 0, 3312, 3313, 7, 16, 0, 0, 3313, 548, 1, 0, 0, 0, 3314, 3315, 7, 7, 0, 0, 3315, 3316, 7, 22, 0, 0, 3316, 3317, 7, 6, 0, 0, 3317, 3318, 7, 6, 0, 0, 3318, 3319, 7, 9, 0, 0, 3319, 550, 1, 0, 0, 0, 3320, 3321, 7, 19, 0, 0, 3321, 3322, 7, 18, 0, 0, 3322, 3323, 7, 30, 0, 0, 3323, 3324, 7, 10, 0, 0, 3324, 3325, 7, 14, 0, 0, 3325, 3326, 7, 16, 0, 0, 3326, 552, 1, 0, 0, 0, 3327, 3328, 7, 19, 0, 0, 3328, 3329, 7, 25, 0, 0, 3329, 554, 1, 0, 0, 0, 3330, 3331, 7, 19, 0, 0, 3331, 3332, 7, 25, 0, 0, 3332, 3333, 7, 25, 0, 0, 3333, 556, 1, 0, 0, 0, 3334, 3335, 7, 19, 0, 0, 3335, 3336, 7, 17, 0, 0, 3336, 3337, 7, 12, 0, 0, 3337, 3338, 7, 9, 0, 0, 3338, 558, 1, 0, 0, 0, 3339, 3340, 7, 19, 0, 0, 3340, 3341, 7, 24, 0, 0, 3341, 3342, 7, 10, 0, 0, 3342, 3343, 7, 13, 0, 0, 3343, 3344, 7, 5, 0, 0, 3344, 3345, 7, 16, 0, 0, 3345, 3346, 7, 19, 0, 0, 3346, 3347, 7, 13, 0, 0, 3347, 560, 1, 0, 0, 0, 3348, 3349, 7, 19, 0, 0, 3349, 3350, 7, 24, 0, 0, 3350, 3351, 7, 16, 0, 0, 3351, 3352, 7, 17, 0, 0, 3352, 3353, 7, 19, 0, 0, 3353, 3354, 7, 7, 0, 0, 3354, 562, 1, 0, 0, 0, 3355, 3356, 7, 19, 0, 0, 3356, 3357, 7, 24, 0, 0, 3357, 3358, 7, 16, 0, 0, 3358, 3359, 7, 17, 0, 0, 3359, 3360, 7, 19, 0, 0, 3360, 3361, 7, 7, 0, 0, 3361, 3362, 7, 9, 0, 0, 3362, 564, 1, 0, 0, 0, 3363, 3364, 7, 19, 0, 0, 3364, 3365, 7, 28, 0, 0, 3365, 3366, 7, 7, 0, 0, 3366, 3367, 7, 10, 0, 0, 3367, 3368, 7, 12, 0, 0, 3368, 566, 1, 0, 0, 0, 3369, 3370, 7, 19, 0, 0, 3370, 3371, 7, 28, 0, 0, 3371, 3372, 7, 7, 0, 0, 3372, 3373, 7, 10, 0, 0, 3373, 3374, 7, 13, 0, 0, 3374, 568, 1, 0, 0, 0, 3375, 3376, 7, 24, 0, 0, 3376, 3377, 7, 5, 0, 0, 3377, 3378, 7, 13, 0, 0, 3378, 3379, 7, 9, 0, 0, 3379, 3380, 7, 10, 0, 0, 3380, 3381, 7, 13, 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, 5, 0, 0, 3388, 3389, 7, 6, 0, 0, 3389, 572, 1, 0, 0, 0, 3390, 3391, 7, 24, 0, 0, 3391, 3392, 7, 5, 0, 0, 3392, 3393, 7, 13, 0, 0, 3393, 3394, 7, 16, 0, 0, 3394, 3395, 7, 17, 0, 0, 3395, 3396, 7, 16, 0, 0, 3396, 3397, 7, 17, 0, 0, 3397, 3398, 7, 19, 0, 0, 3398, 3399, 7, 7, 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, 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, 5, 0, 0, 3410, 3411, 7, 9, 0, 0, 3411, 3412, 7, 9, 0, 0, 3412, 3413, 7, 28, 0, 0, 3413, 3414, 7, 19, 0, 0, 3414, 3415, 7, 13, 0, 0, 3415, 3416, 7, 12, 0, 0, 3416, 578, 1, 0, 0, 0, 3417, 3418, 7, 24, 0, 0, 3418, 3419, 7, 6, 0, 0, 3419, 3420, 7, 5, 0, 0, 3420, 3421, 7, 7, 0, 0, 3421, 3422, 7, 9, 0, 0, 3422, 580, 1, 0, 0, 0, 3423, 3424, 7, 24, 0, 0, 3424, 3425, 7, 13, 0, 0, 3425, 3426, 7, 10, 0, 0, 3426, 3427, 7, 14, 0, 0, 3427, 3428, 7, 10, 0, 0, 3428, 3429, 7, 12, 0, 0, 3429, 3430, 7, 17, 0, 0, 3430, 3431, 7, 7, 0, 0, 3431, 3432, 7, 23, 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, 584, 1, 0, 0, 0, 3441, 3442, 7, 24, 0, 0, 3442, 3443, 7, 13, 0, 0, 3443, 3444, 7, 10, 0, 0, 3444, 3445, 7, 24, 0, 0, 3445, 3446, 7, 5, 0, 0, 3446, 3447, 7, 13, 0, 0, 3447, 3448, 7, 10, 0, 0, 3448, 3449, 7, 12, 0, 0, 3449, 586, 1, 0, 0, 0, 3450, 3451, 7, 24, 0, 0, 3451, 3452, 7, 13, 0, 0, 3452, 3453, 7, 10, 0, 0, 3453, 3454, 7, 9, 0, 0, 3454, 3455, 7, 10, 0, 0, 3455, 3456, 7, 13, 0, 0, 3456, 3457, 7, 27, 0, 0, 3457, 3458, 7, 10, 0, 0, 3458, 588, 1, 0, 0, 0, 3459, 3460, 7, 24, 0, 0, 3460, 3461, 7, 13, 0, 0, 3461, 3462, 7, 17, 0, 0, 3462, 3463, 7, 19, 0, 0, 3463, 3464, 7, 13, 0, 0, 3464, 590, 1, 0, 0, 0, 3465, 3466, 7, 24, 0, 0, 3466, 3467, 7, 13, 0, 0, 3467, 3468, 7, 17, 0, 0, 3468, 3469, 7, 27, 0, 0, 3469, 3470, 7, 17, 0, 0, 3470, 3471, 7, 6, 0, 0, 3471, 3472, 7, 10, 0, 0, 3472, 3473, 7, 23, 0, 0, 3473, 3474, 7, 10, 0, 0, 3474, 3475, 7, 9, 0, 0, 3475, 592, 1, 0, 0, 0, 3476, 3477, 7, 24, 0, 0, 3477, 3478, 7, 13, 0, 0, 3478, 3479, 7, 19, 0, 0, 3479, 3480, 7, 14, 0, 0, 3480, 3481, 7, 10, 0, 0, 3481, 3482, 7, 12, 0, 0, 3482, 3483, 7, 22, 0, 0, 3483, 3484, 7, 13, 0, 0, 3484, 3485, 7, 5, 0, 0, 3485, 3486, 7, 6, 0, 0, 3486, 594, 1, 0, 0, 0, 3487, 3488, 7, 24, 0, 0, 3488, 3489, 7, 13, 0, 0, 3489, 3490, 7, 19, 0, 0, 3490, 3491, 7, 14, 0, 0, 3491, 3492, 7, 10, 0, 0, 3492, 3493, 7, 12, 0, 0, 3493, 3494, 7, 22, 0, 0, 3494, 3495, 7, 13, 0, 0, 3495, 3496, 7, 10, 0, 0, 3496, 596, 1, 0, 0, 0, 3497, 3498, 7, 24, 0, 0, 3498, 3499, 7, 13, 0, 0, 3499, 3500, 7, 19, 0, 0, 3500, 3501, 7, 23, 0, 0, 3501, 3502, 7, 13, 0, 0, 3502, 3503, 7, 5, 0, 0, 3503, 3504, 7, 15, 0, 0, 3504, 598, 1, 0, 0, 0, 3505, 3506, 7, 29, 0, 0, 3506, 3507, 7, 22, 0, 0, 3507, 3508, 7, 19, 0, 0, 3508, 3509, 7, 16, 0, 0, 3509, 3510, 7, 10, 0, 0, 3510, 600, 1, 0, 0, 0, 3511, 3512, 7, 13, 0, 0, 3512, 3513, 7, 5, 0, 0, 3513, 3514, 7, 7, 0, 0, 3514, 3515, 7, 23, 0, 0, 3515, 3516, 7, 10, 0, 0, 3516, 602, 1, 0, 0, 0, 3517, 3518, 7, 13, 0, 0, 3518, 3519, 7, 10, 0, 0, 3519, 3520, 7, 5, 0, 0, 3520, 3521, 7, 12, 0, 0, 3521, 604, 1, 0, 0, 0, 3522, 3523, 7, 13, 0, 0, 3523, 3524, 7, 10, 0, 0, 3524, 3525, 7, 5, 0, 0, 3525, 3526, 7, 9, 0, 0, 3526, 3527, 7, 9, 0, 0, 3527, 3528, 7, 17, 0, 0, 3528, 3529, 7, 23, 0, 0, 3529, 3530, 7, 7, 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, 20, 0, 0, 3535, 3536, 7, 10, 0, 0, 3536, 3537, 7, 14, 0, 0, 3537, 3538, 7, 21, 0, 0, 3538, 608, 1, 0, 0, 0, 3539, 3540, 7, 13, 0, 0, 3540, 3541, 7, 10, 0, 0, 3541, 3542, 7, 14, 0, 0, 3542, 3543, 7, 22, 0, 0, 3543, 3544, 7, 13, 0, 0, 3544, 3545, 7, 9, 0, 0, 3545, 3546, 7, 17, 0, 0, 3546, 3547, 7, 27, 0, 0, 3547, 3548, 7, 10, 0, 0, 3548, 610, 1, 0, 0, 0, 3549, 3550, 7, 13, 0, 0, 3550, 3551, 7, 10, 0, 0, 3551, 3552, 7, 25, 0, 0, 3552, 612, 1, 0, 0, 0, 3553, 3554, 7, 13, 0, 0, 3554, 3555, 7, 10, 0, 0, 3555, 3556, 7, 25, 0, 0, 3556, 3557, 7, 13, 0, 0, 3557, 3558, 7, 10, 0, 0, 3558, 3559, 7, 9, 0, 0, 3559, 3560, 7, 20, 0, 0, 3560, 614, 1, 0, 0, 0, 3561, 3562, 7, 13, 0, 0, 3562, 3563, 7, 10, 0, 0, 3563, 3564, 7, 17, 0, 0, 3564, 3565, 7, 7, 0, 0, 3565, 3566, 7, 12, 0, 0, 3566, 3567, 7, 10, 0, 0, 3567, 3568, 7, 26, 0, 0, 3568, 616, 1, 0, 0, 0, 3569, 3570, 7, 13, 0, 0, 3570, 3571, 7, 10, 0, 0, 3571, 3572, 7, 6, 0, 0, 3572, 3573, 7, 5, 0, 0, 3573, 3574, 7, 16, 0, 0, 3574, 3575, 7, 17, 0, 0, 3575, 3576, 7, 27, 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, 6, 0, 0, 3581, 3582, 7, 10, 0, 0, 3582, 3583, 7, 5, 0, 0, 3583, 3584, 7, 9, 0, 0, 3584, 3585, 7, 10, 0, 0, 3585, 620, 1, 0, 0, 0, 3586, 3587, 7, 13, 0, 0, 3587, 3588, 7, 10, 0, 0, 3588, 3589, 7, 7, 0, 0, 3589, 3590, 7, 5, 0, 0, 3590, 3591, 7, 15, 0, 0, 3591, 3592, 7, 10, 0, 0, 3592, 622, 1, 0, 0, 0, 3593, 3594, 7, 13, 0, 0, 3594, 3595, 7, 10, 0, 0, 3595, 3596, 7, 24, 0, 0, 3596, 3597, 7, 10, 0, 0, 3597, 3598, 7, 5, 0, 0, 3598, 3599, 7, 16, 0, 0, 3599, 3600, 7, 5, 0, 0, 3600, 3601, 7, 18, 0, 0, 3601, 3602, 7, 6, 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, 5, 0, 0, 3609, 3610, 7, 14, 0, 0, 3610, 3611, 7, 10, 0, 0, 3611, 626, 1, 0, 0, 0, 3612, 3613, 7, 13, 0, 0, 3613, 3614, 7, 10, 0, 0, 3614, 3615, 7, 24, 0, 0, 3615, 3616, 7, 6, 0, 0, 3616, 3617, 7, 17, 0, 0, 3617, 3618, 7, 14, 0, 0, 3618, 3619, 7, 5, 0, 0, 3619, 628, 1, 0, 0, 0, 3620, 3621, 7, 13, 0, 0, 3621, 3622, 7, 10, 0, 0, 3622, 3623, 7, 9, 0, 0, 3623, 3624, 7, 10, 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, 5, 0, 0, 3631, 3632, 7, 13, 0, 0, 3632, 3633, 7, 16, 0, 0, 3633, 632, 1, 0, 0, 0, 3634, 3635, 7, 13, 0, 0, 3635, 3636, 7, 10, 0, 0, 3636, 3637, 7, 9, 0, 0, 3637, 3638, 7, 16, 0, 0, 3638, 3639, 7, 13, 0, 0, 3639, 3640, 7, 17, 0, 0, 3640, 3641, 7, 14, 0, 0, 3641, 3642, 7, 16, 0, 0, 3642, 634, 1, 0, 0, 0, 3643, 3644, 7, 13, 0, 0, 3644, 3645, 7, 10, 0, 0, 3645, 3646, 7, 16, 0, 0, 3646, 3647, 7, 22, 0, 0, 3647, 3648, 7, 13, 0, 0, 3648, 3649, 7, 7, 0, 0, 3649, 3650, 7, 9, 0, 0, 3650, 636, 1, 0, 0, 0, 3651, 3652, 7, 13, 0, 0, 3652, 3653, 7, 10, 0, 0, 3653, 3654, 7, 27, 0, 0, 3654, 3655, 7, 19, 0, 0, 3655, 3656, 7, 21, 0, 0, 3656, 3657, 7, 10, 0, 0, 3657, 638, 1, 0, 0, 0, 3658, 3659, 7, 13, 0, 0, 3659, 3660, 7, 19, 0, 0, 3660, 3661, 7, 6, 0, 0, 3661, 3662, 7, 10, 0, 0, 3662, 640, 1, 0, 0, 0, 3663, 3664, 7, 13, 0, 0, 3664, 3665, 7, 19, 0, 0, 3665, 3666, 7, 6, 0, 0, 3666, 3667, 7, 6, 0, 0, 3667, 3668, 7, 18, 0, 0, 3668, 3669, 7, 5, 0, 0, 3669, 3670, 7, 14, 0, 0, 3670, 3671, 7, 21, 0, 0, 3671, 642, 1, 0, 0, 0, 3672, 3673, 7, 13, 0, 0, 3673, 3674, 7, 19, 0, 0, 3674, 3675, 7, 28, 0, 0, 3675, 3676, 7, 9, 0, 0, 3676, 644, 1, 0, 0, 0, 3677, 3678, 7, 13, 0, 0, 3678, 3679, 7, 22, 0, 0, 3679, 3680, 7, 6, 0, 0, 3680, 3681, 7, 10, 0, 0, 3681, 646, 1, 0, 0, 0, 3682, 3683, 7, 9, 0, 0, 3683, 3684, 7, 5, 0, 0, 3684, 3685, 7, 27, 0, 0, 3685, 3686, 7, 10, 0, 0, 3686, 3687, 7, 24, 0, 0, 3687, 3688, 7, 19, 0, 0, 3688, 3689, 7, 17, 0, 0, 3689, 3690, 7, 7, 0, 0, 3690, 3691, 7, 16, 0, 0, 3691, 648, 1, 0, 0, 0, 3692, 3693, 7, 9, 0, 0, 3693, 3694, 7, 14, 0, 0, 3694, 3695, 7, 20, 0, 0, 3695, 3696, 7, 10, 0, 0, 3696, 3697, 7, 15, 0, 0, 3697, 3698, 7, 5, 0, 0, 3698, 650, 1, 0, 0, 0, 3699, 3700, 7, 9, 0, 0, 3700, 3701, 7, 14, 0, 0, 3701, 3702, 7, 13, 0, 0, 3702, 3703, 7, 19, 0, 0, 3703, 3704, 7, 6, 0, 0, 3704, 3705, 7, 6, 0, 0, 3705, 652, 1, 0, 0, 0, 3706, 3707, 7, 9, 0, 0, 3707, 3708, 7, 10, 0, 0, 3708, 3709, 7, 5, 0, 0, 3709, 3710, 7, 13, 0, 0, 3710, 3711, 7, 14, 0, 0, 3711, 3712, 7, 20, 0, 0, 3712, 654, 1, 0, 0, 0, 3713, 3714, 7, 9, 0, 0, 3714, 3715, 7, 10, 0, 0, 3715, 3716, 7, 14, 0, 0, 3716, 3717, 7, 19, 0, 0, 3717, 3718, 7, 7, 0, 0, 3718, 3719, 7, 12, 0, 0, 3719, 656, 1, 0, 0, 0, 3720, 3721, 7, 9, 0, 0, 3721, 3722, 7, 10, 0, 0, 3722, 3723, 7, 14, 0, 0, 3723, 3724, 7, 22, 0, 0, 3724, 3725, 7, 13, 0, 0, 3725, 3726, 7, 17, 0, 0, 3726, 3727, 7, 16, 0, 0, 3727, 3728, 7, 8, 0, 0, 3728, 658, 1, 0, 0, 0, 3729, 3730, 7, 9, 0, 0, 3730, 3731, 7, 10, 0, 0, 3731, 3732, 7, 29, 0, 0, 3732, 3733, 7, 22, 0, 0, 3733, 3734, 7, 10, 0, 0, 3734, 3735, 7, 7, 0, 0, 3735, 3736, 7, 14, 0, 0, 3736, 3737, 7, 10, 0, 0, 3737, 660, 1, 0, 0, 0, 3738, 3739, 7, 9, 0, 0, 3739, 3740, 7, 10, 0, 0, 3740, 3741, 7, 29, 0, 0, 3741, 3742, 7, 22, 0, 0, 3742, 3743, 7, 10, 0, 0, 3743, 3744, 7, 7, 0, 0, 3744, 3745, 7, 14, 0, 0, 3745, 3746, 7, 10, 0, 0, 3746, 3747, 7, 9, 0, 0, 3747, 662, 1, 0, 0, 0, 3748, 3749, 7, 9, 0, 0, 3749, 3750, 7, 10, 0, 0, 3750, 3751, 7, 13, 0, 0, 3751, 3752, 7, 17, 0, 0, 3752, 3753, 7, 5, 0, 0, 3753, 3754, 7, 6, 0, 0, 3754, 3755, 7, 17, 0, 0, 3755, 3756, 7, 11, 0, 0, 3756, 3757, 7, 5, 0, 0, 3757, 3758, 7, 18, 0, 0, 3758, 3759, 7, 6, 0, 0, 3759, 3760, 7, 10, 0, 0, 3760, 664, 1, 0, 0, 0, 3761, 3762, 7, 9, 0, 0, 3762, 3763, 7, 10, 0, 0, 3763, 3764, 7, 13, 0, 0, 3764, 3765, 7, 27, 0, 0, 3765, 3766, 7, 10, 0, 0, 3766, 3767, 7, 13, 0, 0, 3767, 666, 1, 0, 0, 0, 3768, 3769, 7, 9, 0, 0, 3769, 3770, 7, 10, 0, 0, 3770, 3771, 7, 9, 0, 0, 3771, 3772, 7, 9, 0, 0, 3772, 3773, 7, 17, 0, 0, 3773, 3774, 7, 19, 0, 0, 3774, 3775, 7, 7, 0, 0, 3775, 668, 1, 0, 0, 0, 3776, 3777, 7, 9, 0, 0, 3777, 3778, 7, 10, 0, 0, 3778, 3779, 7, 16, 0, 0, 3779, 670, 1, 0, 0, 0, 3780, 3781, 7, 9, 0, 0, 3781, 3782, 7, 20, 0, 0, 3782, 3783, 7, 5, 0, 0, 3783, 3784, 7, 13, 0, 0, 3784, 3785, 7, 10, 0, 0, 3785, 672, 1, 0, 0, 0, 3786, 3787, 7, 9, 0, 0, 3787, 3788, 7, 20, 0, 0, 3788, 3789, 7, 19, 0, 0, 3789, 3790, 7, 28, 0, 0, 3790, 674, 1, 0, 0, 0, 3791, 3792, 7, 9, 0, 0, 3792, 3793, 7, 17, 0, 0, 3793, 3794, 7, 15, 0, 0, 3794, 3795, 7, 24, 0, 0, 3795, 3796, 7, 6, 0, 0, 3796, 3797, 7, 10, 0, 0, 3797, 676, 1, 0, 0, 0, 3798, 3799, 7, 9, 0, 0, 3799, 3800, 7, 7, 0, 0, 3800, 3801, 7, 5, 0, 0, 3801, 3802, 7, 24, 0, 0, 3802, 3803, 7, 9, 0, 0, 3803, 3804, 7, 20, 0, 0, 3804, 3805, 7, 19, 0, 0, 3805, 3806, 7, 16, 0, 0, 3806, 678, 1, 0, 0, 0, 3807, 3808, 7, 9, 0, 0, 3808, 3809, 7, 16, 0, 0, 3809, 3810, 7, 5, 0, 0, 3810, 3811, 7, 18, 0, 0, 3811, 3812, 7, 6, 0, 0, 3812, 3813, 7, 10, 0, 0, 3813, 680, 1, 0, 0, 0, 3814, 3815, 7, 9, 0, 0, 3815, 3816, 7, 16, 0, 0, 3816, 3817, 7, 5, 0, 0, 3817, 3818, 7, 7, 0, 0, 3818, 3819, 7, 12, 0, 0, 3819, 3820, 7, 5, 0, 0, 3820, 3821, 7, 6, 0, 0, 3821, 3822, 7, 19, 0, 0, 3822, 3823, 7, 7, 0, 0, 3823, 3824, 7, 10, 0, 0, 3824, 682, 1, 0, 0, 0, 3825, 3826, 7, 9, 0, 0, 3826, 3827, 7, 16, 0, 0, 3827, 3828, 7, 5, 0, 0, 3828, 3829, 7, 13, 0, 0, 3829, 3830, 7, 16, 0, 0, 3830, 684, 1, 0, 0, 0, 3831, 3832, 7, 9, 0, 0, 3832, 3833, 7, 16, 0, 0, 3833, 3834, 7, 5, 0, 0, 3834, 3835, 7, 16, 0, 0, 3835, 3836, 7, 10, 0, 0, 3836, 3837, 7, 15, 0, 0, 3837, 3838, 7, 10, 0, 0, 3838, 3839, 7, 7, 0, 0, 3839, 3840, 7, 16, 0, 0, 3840, 686, 1, 0, 0, 0, 3841, 3842, 7, 9, 0, 0, 3842, 3843, 7, 16, 0, 0, 3843, 3844, 7, 5, 0, 0, 3844, 3845, 7, 16, 0, 0, 3845, 3846, 7, 17, 0, 0, 3846, 3847, 7, 9, 0, 0, 3847, 3848, 7, 16, 0, 0, 3848, 3849, 7, 17, 0, 0, 3849, 3850, 7, 14, 0, 0, 3850, 3851, 7, 9, 0, 0, 3851, 688, 1, 0, 0, 0, 3852, 3853, 7, 9, 0, 0, 3853, 3854, 7, 16, 0, 0, 3854, 3855, 7, 12, 0, 0, 3855, 3856, 7, 17, 0, 0, 3856, 3857, 7, 7, 0, 0, 3857, 690, 1, 0, 0, 0, 3858, 3859, 7, 9, 0, 0, 3859, 3860, 7, 16, 0, 0, 3860, 3861, 7, 12, 0, 0, 3861, 3862, 7, 19, 0, 0, 3862, 3863, 7, 22, 0, 0, 3863, 3864, 7, 16, 0, 0, 3864, 692, 1, 0, 0, 0, 3865, 3866, 7, 9, 0, 0, 3866, 3867, 7, 16, 0, 0, 3867, 3868, 7, 19, 0, 0, 3868, 3869, 7, 13, 0, 0, 3869, 3870, 7, 5, 0, 0, 3870, 3871, 7, 23, 0, 0, 3871, 3872, 7, 10, 0, 0, 3872, 694, 1, 0, 0, 0, 3873, 3874, 7, 9, 0, 0, 3874, 3875, 7, 16, 0, 0, 3875, 3876, 7, 13, 0, 0, 3876, 3877, 7, 17, 0, 0, 3877, 3878, 7, 14, 0, 0, 3878, 3879, 7, 16, 0, 0, 3879, 696, 1, 0, 0, 0, 3880, 3881, 7, 9, 0, 0, 3881, 3882, 7, 16, 0, 0, 3882, 3883, 7, 13, 0, 0, 3883, 3884, 7, 17, 0, 0, 3884, 3885, 7, 24, 0, 0, 3885, 698, 1, 0, 0, 0, 3886, 3887, 7, 9, 0, 0, 3887, 3888, 7, 8, 0, 0, 3888, 3889, 7, 9, 0, 0, 3889, 3890, 7, 17, 0, 0, 3890, 3891, 7, 12, 0, 0, 3891, 700, 1, 0, 0, 0, 3892, 3893, 7, 9, 0, 0, 3893, 3894, 7, 8, 0, 0, 3894, 3895, 7, 9, 0, 0, 3895, 3896, 7, 16, 0, 0, 3896, 3897, 7, 10, 0, 0, 3897, 3898, 7, 15, 0, 0, 3898, 702, 1, 0, 0, 0, 3899, 3900, 7, 16, 0, 0, 3900, 3901, 7, 5, 0, 0, 3901, 3902, 7, 18, 0, 0, 3902, 3903, 7, 6, 0, 0, 3903, 3904, 7, 10, 0, 0, 3904, 3905, 7, 9, 0, 0, 3905, 704, 1, 0, 0, 0, 3906, 3907, 7, 16, 0, 0, 3907, 3908, 7, 5, 0, 0, 3908, 3909, 7, 18, 0, 0, 3909, 3910, 7, 6, 0, 0, 3910, 3911, 7, 10, 0, 0, 3911, 3912, 7, 9, 0, 0, 3912, 3913, 7, 24, 0, 0, 3913, 3914, 7, 5, 0, 0, 3914, 3915, 7, 14, 0, 0, 3915, 3916, 7, 10, 0, 0, 3916, 706, 1, 0, 0, 0, 3917, 3918, 7, 16, 0, 0, 3918, 3919, 7, 10, 0, 0, 3919, 3920, 7, 15, 0, 0, 3920, 3921, 7, 24, 0, 0, 3921, 708, 1, 0, 0, 0, 3922, 3923, 7, 16, 0, 0, 3923, 3924, 7, 10, 0, 0, 3924, 3925, 7, 15, 0, 0, 3925, 3926, 7, 24, 0, 0, 3926, 3927, 7, 6, 0, 0, 3927, 3928, 7, 5, 0, 0, 3928, 3929, 7, 16, 0, 0, 3929, 3930, 7, 10, 0, 0, 3930, 710, 1, 0, 0, 0, 3931, 3932, 7, 16, 0, 0, 3932, 3933, 7, 10, 0, 0, 3933, 3934, 7, 15, 0, 0, 3934, 3935, 7, 24, 0, 0, 3935, 3936, 7, 19, 0, 0, 3936, 3937, 7, 13, 0, 0, 3937, 3938, 7, 5, 0, 0, 3938, 3939, 7, 13, 0, 0, 3939, 3940, 7, 8, 0, 0, 3940, 712, 1, 0, 0, 0, 3941, 3942, 7, 16, 0, 0, 3942, 3943, 7, 10, 0, 0, 3943, 3944, 7, 26, 0, 0, 3944, 3945, 7, 16, 0, 0, 3945, 714, 1, 0, 0, 0, 3946, 3947, 7, 16, 0, 0, 3947, 3948, 7, 13, 0, 0, 3948, 3949, 7, 5, 0, 0, 3949, 3950, 7, 7, 0, 0, 3950, 3951, 7, 9, 0, 0, 3951, 3952, 7, 5, 0, 0, 3952, 3953, 7, 14, 0, 0, 3953, 3954, 7, 16, 0, 0, 3954, 3955, 7, 17, 0, 0, 3955, 3956, 7, 19, 0, 0, 3956, 3957, 7, 7, 0, 0, 3957, 716, 1, 0, 0, 0, 3958, 3959, 7, 16, 0, 0, 3959, 3960, 7, 13, 0, 0, 3960, 3961, 7, 17, 0, 0, 3961, 3962, 7, 23, 0, 0, 3962, 3963, 7, 23, 0, 0, 3963, 3964, 7, 10, 0, 0, 3964, 3965, 7, 13, 0, 0, 3965, 718, 1, 0, 0, 0, 3966, 3967, 7, 16, 0, 0, 3967, 3968, 7, 13, 0, 0, 3968, 3969, 7, 22, 0, 0, 3969, 3970, 7, 7, 0, 0, 3970, 3971, 7, 14, 0, 0, 3971, 3972, 7, 5, 0, 0, 3972, 3973, 7, 16, 0, 0, 3973, 3974, 7, 10, 0, 0, 3974, 720, 1, 0, 0, 0, 3975, 3976, 7, 16, 0, 0, 3976, 3977, 7, 13, 0, 0, 3977, 3978, 7, 22, 0, 0, 3978, 3979, 7, 9, 0, 0, 3979, 3980, 7, 16, 0, 0, 3980, 3981, 7, 10, 0, 0, 3981, 3982, 7, 12, 0, 0, 3982, 722, 1, 0, 0, 0, 3983, 3984, 7, 16, 0, 0, 3984, 3985, 7, 8, 0, 0, 3985, 3986, 7, 24, 0, 0, 3986, 3987, 7, 10, 0, 0, 3987, 724, 1, 0, 0, 0, 3988, 3989, 7, 16, 0, 0, 3989, 3990, 7, 8, 0, 0, 3990, 3991, 7, 24, 0, 0, 3991, 3992, 7, 10, 0, 0, 3992, 3993, 7, 9, 0, 0, 3993, 726, 1, 0, 0, 0, 3994, 3995, 7, 22, 0, 0, 3995, 3996, 7, 7, 0, 0, 3996, 3997, 7, 18, 0, 0, 3997, 3998, 7, 19, 0, 0, 3998, 3999, 7, 22, 0, 0, 3999, 4000, 7, 7, 0, 0, 4000, 4001, 7, 12, 0, 0, 4001, 4002, 7, 10, 0, 0, 4002, 4003, 7, 12, 0, 0, 4003, 728, 1, 0, 0, 0, 4004, 4005, 7, 22, 0, 0, 4005, 4006, 7, 7, 0, 0, 4006, 4007, 7, 14, 0, 0, 4007, 4008, 7, 19, 0, 0, 4008, 4009, 7, 15, 0, 0, 4009, 4010, 7, 15, 0, 0, 4010, 4011, 7, 17, 0, 0, 4011, 4012, 7, 16, 0, 0, 4012, 4013, 7, 16, 0, 0, 4013, 4014, 7, 10, 0, 0, 4014, 4015, 7, 12, 0, 0, 4015, 730, 1, 0, 0, 0, 4016, 4017, 7, 22, 0, 0, 4017, 4018, 7, 7, 0, 0, 4018, 4019, 7, 10, 0, 0, 4019, 4020, 7, 7, 0, 0, 4020, 4021, 7, 14, 0, 0, 4021, 4022, 7, 13, 0, 0, 4022, 4023, 7, 8, 0, 0, 4023, 4024, 7, 24, 0, 0, 4024, 4025, 7, 16, 0, 0, 4025, 4026, 7, 10, 0, 0, 4026, 4027, 7, 12, 0, 0, 4027, 732, 1, 0, 0, 0, 4028, 4029, 7, 22, 0, 0, 4029, 4030, 7, 7, 0, 0, 4030, 4031, 7, 21, 0, 0, 4031, 4032, 7, 7, 0, 0, 4032, 4033, 7, 19, 0, 0, 4033, 4034, 7, 28, 0, 0, 4034, 4035, 7, 7, 0, 0, 4035, 734, 1, 0, 0, 0, 4036, 4037, 7, 22, 0, 0, 4037, 4038, 7, 7, 0, 0, 4038, 4039, 7, 6, 0, 0, 4039, 4040, 7, 17, 0, 0, 4040, 4041, 7, 9, 0, 0, 4041, 4042, 7, 16, 0, 0, 4042, 4043, 7, 10, 0, 0, 4043, 4044, 7, 7, 0, 0, 4044, 736, 1, 0, 0, 0, 4045, 4046, 7, 22, 0, 0, 4046, 4047, 7, 7, 0, 0, 4047, 4048, 7, 6, 0, 0, 4048, 4049, 7, 19, 0, 0, 4049, 4050, 7, 23, 0, 0, 4050, 4051, 7, 23, 0, 0, 4051, 4052, 7, 10, 0, 0, 4052, 4053, 7, 12, 0, 0, 4053, 738, 1, 0, 0, 0, 4054, 4055, 7, 22, 0, 0, 4055, 4056, 7, 7, 0, 0, 4056, 4057, 7, 16, 0, 0, 4057, 4058, 7, 17, 0, 0, 4058, 4059, 7, 6, 0, 0, 4059, 740, 1, 0, 0, 0, 4060, 4061, 7, 22, 0, 0, 4061, 4062, 7, 24, 0, 0, 4062, 4063, 7, 12, 0, 0, 4063, 4064, 7, 5, 0, 0, 4064, 4065, 7, 16, 0, 0, 4065, 4066, 7, 10, 0, 0, 4066, 742, 1, 0, 0, 0, 4067, 4068, 7, 27, 0, 0, 4068, 4069, 7, 5, 0, 0, 4069, 4070, 7, 14, 0, 0, 4070, 4071, 7, 22, 0, 0, 4071, 4072, 7, 22, 0, 0, 4072, 4073, 7, 15, 0, 0, 4073, 744, 1, 0, 0, 0, 4074, 4075, 7, 27, 0, 0, 4075, 4076, 7, 5, 0, 0, 4076, 4077, 7, 6, 0, 0, 4077, 4078, 7, 17, 0, 0, 4078, 4079, 7, 12, 0, 0, 4079, 746, 1, 0, 0, 0, 4080, 4081, 7, 27, 0, 0, 4081, 4082, 7, 5, 0, 0, 4082, 4083, 7, 6, 0, 0, 4083, 4084, 7, 17, 0, 0, 4084, 4085, 7, 12, 0, 0, 4085, 4086, 7, 5, 0, 0, 4086, 4087, 7, 16, 0, 0, 4087, 4088, 7, 10, 0, 0, 4088, 748, 1, 0, 0, 0, 4089, 4090, 7, 27, 0, 0, 4090, 4091, 7, 5, 0, 0, 4091, 4092, 7, 6, 0, 0, 4092, 4093, 7, 17, 0, 0, 4093, 4094, 7, 12, 0, 0, 4094, 4095, 7, 5, 0, 0, 4095, 4096, 7, 16, 0, 0, 4096, 4097, 7, 19, 0, 0, 4097, 4098, 7, 13, 0, 0, 4098, 750, 1, 0, 0, 0, 4099, 4100, 7, 27, 0, 0, 4100, 4101, 7, 5, 0, 0, 4101, 4102, 7, 13, 0, 0, 4102, 4103, 7, 8, 0, 0, 4103, 4104, 7, 17, 0, 0, 4104, 4105, 7, 7, 0, 0, 4105, 4106, 7, 23, 0, 0, 4106, 752, 1, 0, 0, 0, 4107, 4108, 7, 27, 0, 0, 4108, 4109, 7, 10, 0, 0, 4109, 4110, 7, 13, 0, 0, 4110, 4111, 7, 9, 0, 0, 4111, 4112, 7, 17, 0, 0, 4112, 4113, 7, 19, 0, 0, 4113, 4114, 7, 7, 0, 0, 4114, 754, 1, 0, 0, 0, 4115, 4116, 7, 27, 0, 0, 4116, 4117, 7, 17, 0, 0, 4117, 4118, 7, 10, 0, 0, 4118, 4119, 7, 28, 0, 0, 4119, 756, 1, 0, 0, 0, 4120, 4121, 7, 27, 0, 0, 4121, 4122, 7, 19, 0, 0, 4122, 4123, 7, 6, 0, 0, 4123, 4124, 7, 5, 0, 0, 4124, 4125, 7, 16, 0, 0, 4125, 4126, 7, 17, 0, 0, 4126, 4127, 7, 6, 0, 0, 4127, 4128, 7, 10, 0, 0, 4128, 758, 1, 0, 0, 0, 4129, 4130, 7, 28, 0, 0, 4130, 4131, 7, 20, 0, 0, 4131, 4132, 7, 17, 0, 0, 4132, 4133, 7, 16, 0, 0, 4133, 4134, 7, 10, 0, 0, 4134, 4135, 7, 9, 0, 0, 4135, 4136, 7, 24, 0, 0, 4136, 4137, 7, 5, 0, 0, 4137, 4138, 7, 14, 0, 0, 4138, 4139, 7, 10, 0, 0, 4139, 760, 1, 0, 0, 0, 4140, 4141, 7, 28, 0, 0, 4141, 4142, 7, 17, 0, 0, 4142, 4143, 7, 16, 0, 0, 4143, 4144, 7, 20, 0, 0, 4144, 4145, 7, 19, 0, 0, 4145, 4146, 7, 22, 0, 0, 4146, 4147, 7, 16, 0, 0, 4147, 762, 1, 0, 0, 0, 4148, 4149, 7, 28, 0, 0, 4149, 4150, 7, 19, 0, 0, 4150, 4151, 7, 13, 0, 0, 4151, 4152, 7, 21, 0, 0, 4152, 764, 1, 0, 0, 0, 4153, 4154, 7, 28, 0, 0, 4154, 4155, 7, 13, 0, 0, 4155, 4156, 7, 5, 0, 0, 4156, 4157, 7, 24, 0, 0, 4157, 4158, 7, 24, 0, 0, 4158, 4159, 7, 10, 0, 0, 4159, 4160, 7, 13, 0, 0, 4160, 766, 1, 0, 0, 0, 4161, 4162, 7, 28, 0, 0, 4162, 4163, 7, 13, 0, 0, 4163, 4164, 7, 17, 0, 0, 4164, 4165, 7, 16, 0, 0, 4165, 4166, 7, 10, 0, 0, 4166, 768, 1, 0, 0, 0, 4167, 4168, 7, 26, 0, 0, 4168, 4169, 7, 15, 0, 0, 4169, 4170, 7, 6, 0, 0, 4170, 770, 1, 0, 0, 0, 4171, 4172, 7, 8, 0, 0, 4172, 4173, 7, 10, 0, 0, 4173, 4174, 7, 5, 0, 0, 4174, 4175, 7, 13, 0, 0, 4175, 772, 1, 0, 0, 0, 4176, 4177, 7, 8, 0, 0, 4177, 4178, 7, 10, 0, 0, 4178, 4179, 7, 9, 0, 0, 4179, 774, 1, 0, 0, 0, 4180, 4181, 7, 11, 0, 0, 4181, 4182, 7, 19, 0, 0, 4182, 4183, 7, 7, 0, 0, 4183, 4184, 7, 10, 0, 0, 4184, 776, 1, 0, 0, 0, 4185, 4186, 7, 18, 0, 0, 4186, 4187, 7, 10, 0, 0, 4187, 4188, 7, 16, 0, 0, 4188, 4189, 7, 28, 0, 0, 4189, 4190, 7, 10, 0, 0, 4190, 4191, 7, 10, 0, 0, 4191, 4192, 7, 7, 0, 0, 4192, 778, 1, 0, 0, 0, 4193, 4194, 7, 18, 0, 0, 4194, 4195, 7, 17, 0, 0, 4195, 4196, 7, 23, 0, 0, 4196, 4197, 7, 17, 0, 0, 4197, 4198, 7, 7, 0, 0, 4198, 4199, 7, 16, 0, 0, 4199, 780, 1, 0, 0, 0, 4200, 4201, 7, 18, 0, 0, 4201, 4202, 7, 17, 0, 0, 4202, 4203, 7, 16, 0, 0, 4203, 782, 1, 0, 0, 0, 4204, 4205, 7, 18, 0, 0, 4205, 4206, 7, 19, 0, 0, 4206, 4207, 7, 19, 0, 0, 4207, 4208, 7, 6, 0, 0, 4208, 4209, 7, 10, 0, 0, 4209, 4210, 7, 5, 0, 0, 4210, 4211, 7, 7, 0, 0, 4211, 784, 1, 0, 0, 0, 4212, 4213, 7, 14, 0, 0, 4213, 4214, 7, 20, 0, 0, 4214, 4215, 7, 5, 0, 0, 4215, 4216, 7, 13, 0, 0, 4216, 786, 1, 0, 0, 0, 4217, 4218, 7, 14, 0, 0, 4218, 4219, 7, 20, 0, 0, 4219, 4220, 7, 5, 0, 0, 4220, 4221, 7, 13, 0, 0, 4221, 4222, 7, 5, 0, 0, 4222, 4223, 7, 14, 0, 0, 4223, 4224, 7, 16, 0, 0, 4224, 4225, 7, 10, 0, 0, 4225, 4226, 7, 13, 0, 0, 4226, 788, 1, 0, 0, 0, 4227, 4228, 7, 14, 0, 0, 4228, 4229, 7, 19, 0, 0, 4229, 4230, 7, 5, 0, 0, 4230, 4231, 7, 6, 0, 0, 4231, 4232, 7, 10, 0, 0, 4232, 4233, 7, 9, 0, 0, 4233, 4234, 7, 14, 0, 0, 4234, 4235, 7, 10, 0, 0, 4235, 790, 1, 0, 0, 0, 4236, 4237, 7, 12, 0, 0, 4237, 4238, 7, 10, 0, 0, 4238, 4239, 7, 14, 0, 0, 4239, 792, 1, 0, 0, 0, 4240, 4241, 7, 12, 0, 0, 4241, 4242, 7, 10, 0, 0, 4242, 4243, 7, 14, 0, 0, 4243, 4244, 7, 17, 0, 0, 4244, 4245, 7, 15, 0, 0, 4245, 4246, 7, 5, 0, 0, 4246, 4247, 7, 6, 0, 0, 4247, 794, 1, 0, 0, 0, 4248, 4249, 7, 10, 0, 0, 4249, 4250, 7, 26, 0, 0, 4250, 4251, 7, 17, 0, 0, 4251, 4252, 7, 9, 0, 0, 4252, 4253, 7, 16, 0, 0, 4253, 4254, 7, 9, 0, 0, 4254, 796, 1, 0, 0, 0, 4255, 4256, 7, 10, 0, 0, 4256, 4257, 7, 26, 0, 0, 4257, 4258, 7, 16, 0, 0, 4258, 4259, 7, 13, 0, 0, 4259, 4260, 7, 5, 0, 0, 4260, 4261, 7, 14, 0, 0, 4261, 4262, 7, 16, 0, 0, 4262, 798, 1, 0, 0, 0, 4263, 4264, 7, 25, 0, 0, 4264, 4265, 7, 6, 0, 0, 4265, 4266, 7, 19, 0, 0, 4266, 4267, 7, 5, 0, 0, 4267, 4268, 7, 16, 0, 0, 4268, 800, 1, 0, 0, 0, 4269, 4270, 7, 23, 0, 0, 4270, 4271, 7, 13, 0, 0, 4271, 4272, 7, 10, 0, 0, 4272, 4273, 7, 5, 0, 0, 4273, 4274, 7, 16, 0, 0, 4274, 4275, 7, 10, 0, 0, 4275, 4276, 7, 9, 0, 0, 4276, 4277, 7, 16, 0, 0, 4277, 802, 1, 0, 0, 0, 4278, 4279, 7, 17, 0, 0, 4279, 4280, 7, 7, 0, 0, 4280, 4281, 7, 19, 0, 0, 4281, 4282, 7, 22, 0, 0, 4282, 4283, 7, 16, 0, 0, 4283, 804, 1, 0, 0, 0, 4284, 4285, 7, 17, 0, 0, 4285, 4286, 7, 7, 0, 0, 4286, 4287, 7, 16, 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, 23, 0, 0, 4293, 4294, 7, 10, 0, 0, 4294, 4295, 7, 13, 0, 0, 4295, 808, 1, 0, 0, 0, 4296, 4297, 7, 17, 0, 0, 4297, 4298, 7, 7, 0, 0, 4298, 4299, 7, 16, 0, 0, 4299, 4300, 7, 10, 0, 0, 4300, 4301, 7, 13, 0, 0, 4301, 4302, 7, 27, 0, 0, 4302, 4303, 7, 5, 0, 0, 4303, 4304, 7, 6, 0, 0, 4304, 810, 1, 0, 0, 0, 4305, 4306, 7, 6, 0, 0, 4306, 4307, 7, 10, 0, 0, 4307, 4308, 7, 5, 0, 0, 4308, 4309, 7, 9, 0, 0, 4309, 4310, 7, 16, 0, 0, 4310, 812, 1, 0, 0, 0, 4311, 4312, 7, 7, 0, 0, 4312, 4313, 7, 5, 0, 0, 4313, 4314, 7, 16, 0, 0, 4314, 4315, 7, 17, 0, 0, 4315, 4316, 7, 19, 0, 0, 4316, 4317, 7, 7, 0, 0, 4317, 4318, 7, 5, 0, 0, 4318, 4319, 7, 6, 0, 0, 4319, 814, 1, 0, 0, 0, 4320, 4321, 7, 7, 0, 0, 4321, 4322, 7, 14, 0, 0, 4322, 4323, 7, 20, 0, 0, 4323, 4324, 7, 5, 0, 0, 4324, 4325, 7, 13, 0, 0, 4325, 816, 1, 0, 0, 0, 4326, 4327, 7, 7, 0, 0, 4327, 4328, 7, 19, 0, 0, 4328, 4329, 7, 7, 0, 0, 4329, 4330, 7, 10, 0, 0, 4330, 818, 1, 0, 0, 0, 4331, 4332, 7, 7, 0, 0, 4332, 4333, 7, 22, 0, 0, 4333, 4334, 7, 6, 0, 0, 4334, 4335, 7, 6, 0, 0, 4335, 4336, 7, 17, 0, 0, 4336, 4337, 7, 25, 0, 0, 4337, 820, 1, 0, 0, 0, 4338, 4339, 7, 7, 0, 0, 4339, 4340, 7, 22, 0, 0, 4340, 4341, 7, 15, 0, 0, 4341, 4342, 7, 10, 0, 0, 4342, 4343, 7, 13, 0, 0, 4343, 4344, 7, 17, 0, 0, 4344, 4345, 7, 14, 0, 0, 4345, 822, 1, 0, 0, 0, 4346, 4347, 7, 19, 0, 0, 4347, 4348, 7, 27, 0, 0, 4348, 4349, 7, 10, 0, 0, 4349, 4350, 7, 13, 0, 0, 4350, 4351, 7, 6, 0, 0, 4351, 4352, 7, 5, 0, 0, 4352, 4353, 7, 8, 0, 0, 4353, 824, 1, 0, 0, 0, 4354, 4355, 7, 24, 0, 0, 4355, 4356, 7, 19, 0, 0, 4356, 4357, 7, 9, 0, 0, 4357, 4358, 7, 17, 0, 0, 4358, 4359, 7, 16, 0, 0, 4359, 4360, 7, 17, 0, 0, 4360, 4361, 7, 19, 0, 0, 4361, 4362, 7, 7, 0, 0, 4362, 826, 1, 0, 0, 0, 4363, 4364, 7, 24, 0, 0, 4364, 4365, 7, 13, 0, 0, 4365, 4366, 7, 10, 0, 0, 4366, 4367, 7, 14, 0, 0, 4367, 4368, 7, 17, 0, 0, 4368, 4369, 7, 9, 0, 0, 4369, 4370, 7, 17, 0, 0, 4370, 4371, 7, 19, 0, 0, 4371, 4372, 7, 7, 0, 0, 4372, 828, 1, 0, 0, 0, 4373, 4374, 7, 13, 0, 0, 4374, 4375, 7, 10, 0, 0, 4375, 4376, 7, 5, 0, 0, 4376, 4377, 7, 6, 0, 0, 4377, 830, 1, 0, 0, 0, 4378, 4379, 7, 13, 0, 0, 4379, 4380, 7, 19, 0, 0, 4380, 4381, 7, 28, 0, 0, 4381, 832, 1, 0, 0, 0, 4382, 4383, 7, 9, 0, 0, 4383, 4384, 7, 10, 0, 0, 4384, 4385, 7, 16, 0, 0, 4385, 4386, 7, 19, 0, 0, 4386, 4387, 7, 25, 0, 0, 4387, 834, 1, 0, 0, 0, 4388, 4389, 7, 9, 0, 0, 4389, 4390, 7, 15, 0, 0, 4390, 4391, 7, 5, 0, 0, 4391, 4392, 7, 6, 0, 0, 4392, 4393, 7, 6, 0, 0, 4393, 4394, 7, 17, 0, 0, 4394, 4395, 7, 7, 0, 0, 4395, 4396, 7, 16, 0, 0, 4396, 836, 1, 0, 0, 0, 4397, 4398, 7, 9, 0, 0, 4398, 4399, 7, 22, 0, 0, 4399, 4400, 7, 18, 0, 0, 4400, 4401, 7, 9, 0, 0, 4401, 4402, 7, 16, 0, 0, 4402, 4403, 7, 13, 0, 0, 4403, 4404, 7, 17, 0, 0, 4404, 4405, 7, 7, 0, 0, 4405, 4406, 7, 23, 0, 0, 4406, 838, 1, 0, 0, 0, 4407, 4408, 7, 16, 0, 0, 4408, 4409, 7, 17, 0, 0, 4409, 4410, 7, 15, 0, 0, 4410, 4411, 7, 10, 0, 0, 4411, 840, 1, 0, 0, 0, 4412, 4413, 7, 16, 0, 0, 4413, 4414, 7, 17, 0, 0, 4414, 4415, 7, 15, 0, 0, 4415, 4416, 7, 10, 0, 0, 4416, 4417, 7, 9, 0, 0, 4417, 4418, 7, 16, 0, 0, 4418, 4419, 7, 5, 0, 0, 4419, 4420, 7, 15, 0, 0, 4420, 4421, 7, 24, 0, 0, 4421, 842, 1, 0, 0, 0, 4422, 4423, 7, 16, 0, 0, 4423, 4424, 7, 13, 0, 0, 4424, 4425, 7, 10, 0, 0, 4425, 4426, 7, 5, 0, 0, 4426, 4427, 7, 16, 0, 0, 4427, 844, 1, 0, 0, 0, 4428, 4429, 7, 16, 0, 0, 4429, 4430, 7, 13, 0, 0, 4430, 4431, 7, 17, 0, 0, 4431, 4432, 7, 15, 0, 0, 4432, 846, 1, 0, 0, 0, 4433, 4434, 7, 27, 0, 0, 4434, 4435, 7, 5, 0, 0, 4435, 4436, 7, 6, 0, 0, 4436, 4437, 7, 22, 0, 0, 4437, 4438, 7, 10, 0, 0, 4438, 4439, 7, 9, 0, 0, 4439, 848, 1, 0, 0, 0, 4440, 4441, 7, 27, 0, 0, 4441, 4442, 7, 5, 0, 0, 4442, 4443, 7, 13, 0, 0, 4443, 4444, 7, 14, 0, 0, 4444, 4445, 7, 20, 0, 0, 4445, 4446, 7, 5, 0, 0, 4446, 4447, 7, 13, 0, 0, 4447, 850, 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, 16, 0, 0, 4453, 4454, 7, 16, 0, 0, 4454, 4455, 7, 13, 0, 0, 4455, 4456, 7, 17, 0, 0, 4456, 4457, 7, 18, 0, 0, 4457, 4458, 7, 22, 0, 0, 4458, 4459, 7, 16, 0, 0, 4459, 4460, 7, 10, 0, 0, 4460, 4461, 7, 9, 0, 0, 4461, 852, 1, 0, 0, 0, 4462, 4463, 7, 26, 0, 0, 4463, 4464, 7, 15, 0, 0, 4464, 4465, 7, 6, 0, 0, 4465, 4466, 7, 14, 0, 0, 4466, 4467, 7, 19, 0, 0, 4467, 4468, 7, 15, 0, 0, 4468, 4469, 7, 15, 0, 0, 4469, 4470, 7, 10, 0, 0, 4470, 4471, 7, 7, 0, 0, 4471, 4472, 7, 16, 0, 0, 4472, 854, 1, 0, 0, 0, 4473, 4474, 7, 26, 0, 0, 4474, 4475, 7, 15, 0, 0, 4475, 4476, 7, 6, 0, 0, 4476, 4477, 7, 5, 0, 0, 4477, 4478, 7, 23, 0, 0, 4478, 4479, 7, 23, 0, 0, 4479, 856, 1, 0, 0, 0, 4480, 4481, 7, 26, 0, 0, 4481, 4482, 7, 15, 0, 0, 4482, 4483, 7, 6, 0, 0, 4483, 4484, 5, 95, 0, 0, 4484, 4485, 7, 17, 0, 0, 4485, 4486, 7, 9, 0, 0, 4486, 4487, 5, 95, 0, 0, 4487, 4488, 7, 28, 0, 0, 4488, 4489, 7, 10, 0, 0, 4489, 4490, 7, 6, 0, 0, 4490, 4491, 7, 6, 0, 0, 4491, 4492, 5, 95, 0, 0, 4492, 4493, 7, 25, 0, 0, 4493, 4494, 7, 19, 0, 0, 4494, 4495, 7, 13, 0, 0, 4495, 4496, 7, 15, 0, 0, 4496, 4497, 7, 10, 0, 0, 4497, 4498, 7, 12, 0, 0, 4498, 858, 1, 0, 0, 0, 4499, 4500, 7, 26, 0, 0, 4500, 4501, 7, 15, 0, 0, 4501, 4502, 7, 6, 0, 0, 4502, 4503, 5, 95, 0, 0, 4503, 4504, 7, 17, 0, 0, 4504, 4505, 7, 9, 0, 0, 4505, 4506, 5, 95, 0, 0, 4506, 4507, 7, 28, 0, 0, 4507, 4508, 7, 10, 0, 0, 4508, 4509, 7, 6, 0, 0, 4509, 4510, 7, 6, 0, 0, 4510, 4511, 5, 95, 0, 0, 4511, 4512, 7, 25, 0, 0, 4512, 4513, 7, 19, 0, 0, 4513, 4514, 7, 13, 0, 0, 4514, 4515, 7, 15, 0, 0, 4515, 4516, 7, 10, 0, 0, 4516, 4517, 7, 12, 0, 0, 4517, 4518, 5, 95, 0, 0, 4518, 4519, 7, 12, 0, 0, 4519, 4520, 7, 19, 0, 0, 4520, 4521, 7, 14, 0, 0, 4521, 4522, 7, 22, 0, 0, 4522, 4523, 7, 15, 0, 0, 4523, 4524, 7, 10, 0, 0, 4524, 4525, 7, 7, 0, 0, 4525, 4526, 7, 16, 0, 0, 4526, 860, 1, 0, 0, 0, 4527, 4528, 7, 26, 0, 0, 4528, 4529, 7, 15, 0, 0, 4529, 4530, 7, 6, 0, 0, 4530, 4531, 5, 95, 0, 0, 4531, 4532, 7, 17, 0, 0, 4532, 4533, 7, 9, 0, 0, 4533, 4534, 5, 95, 0, 0, 4534, 4535, 7, 28, 0, 0, 4535, 4536, 7, 10, 0, 0, 4536, 4537, 7, 6, 0, 0, 4537, 4538, 7, 6, 0, 0, 4538, 4539, 5, 95, 0, 0, 4539, 4540, 7, 25, 0, 0, 4540, 4541, 7, 19, 0, 0, 4541, 4542, 7, 13, 0, 0, 4542, 4543, 7, 15, 0, 0, 4543, 4544, 7, 10, 0, 0, 4544, 4545, 7, 12, 0, 0, 4545, 4546, 5, 95, 0, 0, 4546, 4547, 7, 14, 0, 0, 4547, 4548, 7, 19, 0, 0, 4548, 4549, 7, 7, 0, 0, 4549, 4550, 7, 16, 0, 0, 4550, 4551, 7, 10, 0, 0, 4551, 4552, 7, 7, 0, 0, 4552, 4553, 7, 16, 0, 0, 4553, 862, 1, 0, 0, 0, 4554, 4555, 7, 26, 0, 0, 4555, 4556, 7, 24, 0, 0, 4556, 4557, 7, 5, 0, 0, 4557, 4558, 7, 16, 0, 0, 4558, 4559, 7, 20, 0, 0, 4559, 864, 1, 0, 0, 0, 4560, 4561, 7, 26, 0, 0, 4561, 4562, 7, 24, 0, 0, 4562, 4563, 7, 5, 0, 0, 4563, 4564, 7, 16, 0, 0, 4564, 4565, 7, 20, 0, 0, 4565, 4566, 5, 95, 0, 0, 4566, 4567, 7, 10, 0, 0, 4567, 4568, 7, 26, 0, 0, 4568, 4569, 7, 17, 0, 0, 4569, 4570, 7, 9, 0, 0, 4570, 4571, 7, 16, 0, 0, 4571, 4572, 7, 9, 0, 0, 4572, 866, 1, 0, 0, 0, 4573, 4574, 7, 26, 0, 0, 4574, 4575, 7, 15, 0, 0, 4575, 4576, 7, 6, 0, 0, 4576, 4577, 7, 14, 0, 0, 4577, 4578, 7, 19, 0, 0, 4578, 4579, 7, 7, 0, 0, 4579, 4580, 7, 14, 0, 0, 4580, 4581, 7, 5, 0, 0, 4581, 4582, 7, 16, 0, 0, 4582, 868, 1, 0, 0, 0, 4583, 4584, 7, 26, 0, 0, 4584, 4585, 7, 15, 0, 0, 4585, 4586, 7, 6, 0, 0, 4586, 4587, 7, 10, 0, 0, 4587, 4588, 7, 6, 0, 0, 4588, 4589, 7, 10, 0, 0, 4589, 4590, 7, 15, 0, 0, 4590, 4591, 7, 10, 0, 0, 4591, 4592, 7, 7, 0, 0, 4592, 4593, 7, 16, 0, 0, 4593, 870, 1, 0, 0, 0, 4594, 4595, 7, 26, 0, 0, 4595, 4596, 7, 15, 0, 0, 4596, 4597, 7, 6, 0, 0, 4597, 4598, 7, 10, 0, 0, 4598, 4599, 7, 26, 0, 0, 4599, 4600, 7, 17, 0, 0, 4600, 4601, 7, 9, 0, 0, 4601, 4602, 7, 16, 0, 0, 4602, 4603, 7, 9, 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, 25, 0, 0, 4608, 4609, 7, 19, 0, 0, 4609, 4610, 7, 13, 0, 0, 4610, 4611, 7, 10, 0, 0, 4611, 4612, 7, 9, 0, 0, 4612, 4613, 7, 16, 0, 0, 4613, 874, 1, 0, 0, 0, 4614, 4615, 7, 26, 0, 0, 4615, 4616, 7, 15, 0, 0, 4616, 4617, 7, 6, 0, 0, 4617, 4618, 7, 24, 0, 0, 4618, 4619, 7, 5, 0, 0, 4619, 4620, 7, 13, 0, 0, 4620, 4621, 7, 9, 0, 0, 4621, 4622, 7, 10, 0, 0, 4622, 876, 1, 0, 0, 0, 4623, 4624, 7, 26, 0, 0, 4624, 4625, 7, 15, 0, 0, 4625, 4626, 7, 6, 0, 0, 4626, 4627, 7, 24, 0, 0, 4627, 4628, 7, 17, 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, 13, 0, 0, 4633, 4634, 7, 19, 0, 0, 4634, 4635, 7, 19, 0, 0, 4635, 4636, 7, 16, 0, 0, 4636, 880, 1, 0, 0, 0, 4637, 4638, 7, 26, 0, 0, 4638, 4639, 7, 15, 0, 0, 4639, 4640, 7, 6, 0, 0, 4640, 4641, 7, 9, 0, 0, 4641, 4642, 7, 10, 0, 0, 4642, 4643, 7, 13, 0, 0, 4643, 4644, 7, 17, 0, 0, 4644, 4645, 7, 5, 0, 0, 4645, 4646, 7, 6, 0, 0, 4646, 4647, 7, 17, 0, 0, 4647, 4648, 7, 11, 0, 0, 4648, 4649, 7, 10, 0, 0, 4649, 882, 1, 0, 0, 0, 4650, 4651, 7, 14, 0, 0, 4651, 4652, 7, 5, 0, 0, 4652, 4653, 7, 6, 0, 0, 4653, 4654, 7, 6, 0, 0, 4654, 884, 1, 0, 0, 0, 4655, 4656, 7, 14, 0, 0, 4656, 4657, 7, 22, 0, 0, 4657, 4658, 7, 13, 0, 0, 4658, 4659, 7, 13, 0, 0, 4659, 4660, 7, 10, 0, 0, 4660, 4661, 7, 7, 0, 0, 4661, 4662, 7, 16, 0, 0, 4662, 886, 1, 0, 0, 0, 4663, 4664, 7, 5, 0, 0, 4664, 4665, 7, 16, 0, 0, 4665, 4666, 7, 16, 0, 0, 4666, 4667, 7, 5, 0, 0, 4667, 4668, 7, 14, 0, 0, 4668, 4669, 7, 20, 0, 0, 4669, 888, 1, 0, 0, 0, 4670, 4671, 7, 12, 0, 0, 4671, 4672, 7, 10, 0, 0, 4672, 4673, 7, 16, 0, 0, 4673, 4674, 7, 5, 0, 0, 4674, 4675, 7, 14, 0, 0, 4675, 4676, 7, 20, 0, 0, 4676, 890, 1, 0, 0, 0, 4677, 4678, 7, 10, 0, 0, 4678, 4679, 7, 26, 0, 0, 4679, 4680, 7, 24, 0, 0, 4680, 4681, 7, 13, 0, 0, 4681, 4682, 7, 10, 0, 0, 4682, 4683, 7, 9, 0, 0, 4683, 4684, 7, 9, 0, 0, 4684, 4685, 7, 17, 0, 0, 4685, 4686, 7, 19, 0, 0, 4686, 4687, 7, 7, 0, 0, 4687, 892, 1, 0, 0, 0, 4688, 4689, 7, 23, 0, 0, 4689, 4690, 7, 10, 0, 0, 4690, 4691, 7, 7, 0, 0, 4691, 4692, 7, 10, 0, 0, 4692, 4693, 7, 13, 0, 0, 4693, 4694, 7, 5, 0, 0, 4694, 4695, 7, 16, 0, 0, 4695, 4696, 7, 10, 0, 0, 4696, 4697, 7, 12, 0, 0, 4697, 894, 1, 0, 0, 0, 4698, 4699, 7, 6, 0, 0, 4699, 4700, 7, 19, 0, 0, 4700, 4701, 7, 23, 0, 0, 4701, 4702, 7, 23, 0, 0, 4702, 4703, 7, 10, 0, 0, 4703, 4704, 7, 12, 0, 0, 4704, 896, 1, 0, 0, 0, 4705, 4706, 7, 9, 0, 0, 4706, 4707, 7, 16, 0, 0, 4707, 4708, 7, 19, 0, 0, 4708, 4709, 7, 13, 0, 0, 4709, 4710, 7, 10, 0, 0, 4710, 4711, 7, 12, 0, 0, 4711, 898, 1, 0, 0, 0, 4712, 4713, 7, 17, 0, 0, 4713, 4714, 7, 7, 0, 0, 4714, 4715, 7, 14, 0, 0, 4715, 4716, 7, 6, 0, 0, 4716, 4717, 7, 22, 0, 0, 4717, 4718, 7, 12, 0, 0, 4718, 4719, 7, 10, 0, 0, 4719, 900, 1, 0, 0, 0, 4720, 4721, 7, 13, 0, 0, 4721, 4722, 7, 19, 0, 0, 4722, 4723, 7, 22, 0, 0, 4723, 4724, 7, 16, 0, 0, 4724, 4725, 7, 17, 0, 0, 4725, 4726, 7, 7, 0, 0, 4726, 4727, 7, 10, 0, 0, 4727, 902, 1, 0, 0, 0, 4728, 4729, 7, 16, 0, 0, 4729, 4730, 7, 13, 0, 0, 4730, 4731, 7, 5, 0, 0, 4731, 4732, 7, 7, 0, 0, 4732, 4733, 7, 9, 0, 0, 4733, 4734, 7, 25, 0, 0, 4734, 4735, 7, 19, 0, 0, 4735, 4736, 7, 13, 0, 0, 4736, 4737, 7, 15, 0, 0, 4737, 904, 1, 0, 0, 0, 4738, 4739, 7, 17, 0, 0, 4739, 4740, 7, 15, 0, 0, 4740, 4741, 7, 24, 0, 0, 4741, 4742, 7, 19, 0, 0, 4742, 4743, 7, 13, 0, 0, 4743, 4744, 7, 16, 0, 0, 4744, 906, 1, 0, 0, 0, 4745, 4746, 7, 24, 0, 0, 4746, 4747, 7, 19, 0, 0, 4747, 4748, 7, 6, 0, 0, 4748, 4749, 7, 17, 0, 0, 4749, 4750, 7, 14, 0, 0, 4750, 4751, 7, 8, 0, 0, 4751, 908, 1, 0, 0, 0, 4752, 4753, 7, 15, 0, 0, 4753, 4754, 7, 10, 0, 0, 4754, 4755, 7, 16, 0, 0, 4755, 4756, 7, 20, 0, 0, 4756, 4757, 7, 19, 0, 0, 4757, 4758, 7, 12, 0, 0, 4758, 910, 1, 0, 0, 0, 4759, 4760, 7, 13, 0, 0, 4760, 4761, 7, 10, 0, 0, 4761, 4762, 7, 25, 0, 0, 4762, 4763, 7, 10, 0, 0, 4763, 4764, 7, 13, 0, 0, 4764, 4765, 7, 10, 0, 0, 4765, 4766, 7, 7, 0, 0, 4766, 4767, 7, 14, 0, 0, 4767, 4768, 7, 17, 0, 0, 4768, 4769, 7, 7, 0, 0, 4769, 4770, 7, 23, 0, 0, 4770, 912, 1, 0, 0, 0, 4771, 4772, 7, 7, 0, 0, 4772, 4773, 7, 10, 0, 0, 4773, 4774, 7, 28, 0, 0, 4774, 914, 1, 0, 0, 0, 4775, 4776, 7, 19, 0, 0, 4776, 4777, 7, 6, 0, 0, 4777, 4778, 7, 12, 0, 0, 4778, 916, 1, 0, 0, 0, 4779, 4780, 7, 27, 0, 0, 4780, 4781, 7, 5, 0, 0, 4781, 4782, 7, 6, 0, 0, 4782, 4783, 7, 22, 0, 0, 4783, 4784, 7, 10, 0, 0, 4784, 918, 1, 0, 0, 0, 4785, 4786, 7, 9, 0, 0, 4786, 4787, 7, 22, 0, 0, 4787, 4788, 7, 18, 0, 0, 4788, 4789, 7, 9, 0, 0, 4789, 4790, 7, 14, 0, 0, 4790, 4791, 7, 13, 0, 0, 4791, 4792, 7, 17, 0, 0, 4792, 4793, 7, 24, 0, 0, 4793, 4794, 7, 16, 0, 0, 4794, 4795, 7, 17, 0, 0, 4795, 4796, 7, 19, 0, 0, 4796, 4797, 7, 7, 0, 0, 4797, 920, 1, 0, 0, 0, 4798, 4799, 7, 24, 0, 0, 4799, 4800, 7, 22, 0, 0, 4800, 4801, 7, 18, 0, 0, 4801, 4802, 7, 6, 0, 0, 4802, 4803, 7, 17, 0, 0, 4803, 4804, 7, 14, 0, 0, 4804, 4805, 7, 5, 0, 0, 4805, 4806, 7, 16, 0, 0, 4806, 4807, 7, 17, 0, 0, 4807, 4808, 7, 19, 0, 0, 4808, 4809, 7, 7, 0, 0, 4809, 922, 1, 0, 0, 0, 4810, 4811, 7, 19, 0, 0, 4811, 4812, 7, 22, 0, 0, 4812, 4813, 7, 16, 0, 0, 4813, 924, 1, 0, 0, 0, 4814, 4815, 7, 10, 0, 0, 4815, 4816, 7, 7, 0, 0, 4816, 4817, 7, 12, 0, 0, 4817, 926, 1, 0, 0, 0, 4818, 4819, 7, 13, 0, 0, 4819, 4820, 7, 19, 0, 0, 4820, 4821, 7, 22, 0, 0, 4821, 4822, 7, 16, 0, 0, 4822, 4823, 7, 17, 0, 0, 4823, 4824, 7, 7, 0, 0, 4824, 4825, 7, 10, 0, 0, 4825, 4826, 7, 9, 0, 0, 4826, 928, 1, 0, 0, 0, 4827, 4828, 7, 9, 0, 0, 4828, 4829, 7, 14, 0, 0, 4829, 4830, 7, 20, 0, 0, 4830, 4831, 7, 10, 0, 0, 4831, 4832, 7, 15, 0, 0, 4832, 4833, 7, 5, 0, 0, 4833, 4834, 7, 9, 0, 0, 4834, 930, 1, 0, 0, 0, 4835, 4836, 7, 24, 0, 0, 4836, 4837, 7, 13, 0, 0, 4837, 4838, 7, 19, 0, 0, 4838, 4839, 7, 14, 0, 0, 4839, 4840, 7, 10, 0, 0, 4840, 4841, 7, 12, 0, 0, 4841, 4842, 7, 22, 0, 0, 4842, 4843, 7, 13, 0, 0, 4843, 4844, 7, 10, 0, 0, 4844, 4845, 7, 9, 0, 0, 4845, 932, 1, 0, 0, 0, 4846, 4847, 7, 17, 0, 0, 4847, 4848, 7, 7, 0, 0, 4848, 4849, 7, 24, 0, 0, 4849, 4850, 7, 22, 0, 0, 4850, 4851, 7, 16, 0, 0, 4851, 934, 1, 0, 0, 0, 4852, 4853, 7, 9, 0, 0, 4853, 4854, 7, 22, 0, 0, 4854, 4855, 7, 24, 0, 0, 4855, 4856, 7, 24, 0, 0, 4856, 4857, 7, 19, 0, 0, 4857, 4858, 7, 13, 0, 0, 4858, 4859, 7, 16, 0, 0, 4859, 936, 1, 0, 0, 0, 4860, 4861, 7, 24, 0, 0, 4861, 4862, 7, 5, 0, 0, 4862, 4863, 7, 13, 0, 0, 4863, 4864, 7, 5, 0, 0, 4864, 4865, 7, 6, 0, 0, 4865, 4866, 7, 6, 0, 0, 4866, 4867, 7, 10, 0, 0, 4867, 4868, 7, 6, 0, 0, 4868, 938, 1, 0, 0, 0, 4869, 4870, 7, 9, 0, 0, 4870, 4871, 7, 29, 0, 0, 4871, 4872, 7, 6, 0, 0, 4872, 940, 1, 0, 0, 0, 4873, 4874, 7, 12, 0, 0, 4874, 4875, 7, 10, 0, 0, 4875, 4876, 7, 24, 0, 0, 4876, 4877, 7, 10, 0, 0, 4877, 4878, 7, 7, 0, 0, 4878, 4879, 7, 12, 0, 0, 4879, 4880, 7, 9, 0, 0, 4880, 942, 1, 0, 0, 0, 4881, 4882, 7, 19, 0, 0, 4882, 4883, 7, 27, 0, 0, 4883, 4884, 7, 10, 0, 0, 4884, 4885, 7, 13, 0, 0, 4885, 4886, 7, 13, 0, 0, 4886, 4887, 7, 17, 0, 0, 4887, 4888, 7, 12, 0, 0, 4888, 4889, 7, 17, 0, 0, 4889, 4890, 7, 7, 0, 0, 4890, 4891, 7, 23, 0, 0, 4891, 944, 1, 0, 0, 0, 4892, 4893, 7, 14, 0, 0, 4893, 4894, 7, 19, 0, 0, 4894, 4895, 7, 7, 0, 0, 4895, 4896, 7, 25, 0, 0, 4896, 4897, 7, 6, 0, 0, 4897, 4898, 7, 17, 0, 0, 4898, 4899, 7, 14, 0, 0, 4899, 4900, 7, 16, 0, 0, 4900, 946, 1, 0, 0, 0, 4901, 4902, 7, 9, 0, 0, 4902, 4903, 7, 21, 0, 0, 4903, 4904, 7, 17, 0, 0, 4904, 4905, 7, 24, 0, 0, 4905, 948, 1, 0, 0, 0, 4906, 4907, 7, 6, 0, 0, 4907, 4908, 7, 19, 0, 0, 4908, 4909, 7, 14, 0, 0, 4909, 4910, 7, 21, 0, 0, 4910, 4911, 7, 10, 0, 0, 4911, 4912, 7, 12, 0, 0, 4912, 950, 1, 0, 0, 0, 4913, 4914, 7, 16, 0, 0, 4914, 4915, 7, 17, 0, 0, 4915, 4916, 7, 10, 0, 0, 4916, 4917, 7, 9, 0, 0, 4917, 952, 1, 0, 0, 0, 4918, 4919, 7, 13, 0, 0, 4919, 4920, 7, 19, 0, 0, 4920, 4921, 7, 6, 0, 0, 4921, 4922, 7, 6, 0, 0, 4922, 4923, 7, 22, 0, 0, 4923, 4924, 7, 24, 0, 0, 4924, 954, 1, 0, 0, 0, 4925, 4926, 7, 14, 0, 0, 4926, 4927, 7, 22, 0, 0, 4927, 4928, 7, 18, 0, 0, 4928, 4929, 7, 10, 0, 0, 4929, 956, 1, 0, 0, 0, 4930, 4931, 7, 23, 0, 0, 4931, 4932, 7, 13, 0, 0, 4932, 4933, 7, 19, 0, 0, 4933, 4934, 7, 22, 0, 0, 4934, 4935, 7, 24, 0, 0, 4935, 4936, 7, 17, 0, 0, 4936, 4937, 7, 7, 0, 0, 4937, 4938, 7, 23, 0, 0, 4938, 958, 1, 0, 0, 0, 4939, 4940, 7, 9, 0, 0, 4940, 4941, 7, 10, 0, 0, 4941, 4942, 7, 16, 0, 0, 4942, 4943, 7, 9, 0, 0, 4943, 960, 1, 0, 0, 0, 4944, 4945, 7, 16, 0, 0, 4945, 4946, 7, 5, 0, 0, 4946, 4947, 7, 18, 0, 0, 4947, 4948, 7, 6, 0, 0, 4948, 4949, 7, 10, 0, 0, 4949, 4950, 7, 9, 0, 0, 4950, 4951, 7, 5, 0, 0, 4951, 4952, 7, 15, 0, 0, 4952, 4953, 7, 24, 0, 0, 4953, 4954, 7, 6, 0, 0, 4954, 4955, 7, 10, 0, 0, 4955, 962, 1, 0, 0, 0, 4956, 4957, 7, 19, 0, 0, 4957, 4958, 7, 13, 0, 0, 4958, 4959, 7, 12, 0, 0, 4959, 4960, 7, 17, 0, 0, 4960, 4961, 7, 7, 0, 0, 4961, 4962, 7, 5, 0, 0, 4962, 4963, 7, 6, 0, 0, 4963, 4964, 7, 17, 0, 0, 4964, 4965, 7, 16, 0, 0, 4965, 4966, 7, 8, 0, 0, 4966, 964, 1, 0, 0, 0, 4967, 4968, 7, 26, 0, 0, 4968, 4969, 7, 15, 0, 0, 4969, 4970, 7, 6, 0, 0, 4970, 4971, 7, 16, 0, 0, 4971, 4972, 7, 5, 0, 0, 4972, 4973, 7, 18, 0, 0, 4973, 4974, 7, 6, 0, 0, 4974, 4975, 7, 10, 0, 0, 4975, 966, 1, 0, 0, 0, 4976, 4977, 7, 14, 0, 0, 4977, 4978, 7, 19, 0, 0, 4978, 4979, 7, 6, 0, 0, 4979, 4980, 7, 22, 0, 0, 4980, 4981, 7, 15, 0, 0, 4981, 4982, 7, 7, 0, 0, 4982, 4983, 7, 9, 0, 0, 4983, 968, 1, 0, 0, 0, 4984, 4985, 7, 26, 0, 0, 4985, 4986, 7, 15, 0, 0, 4986, 4987, 7, 6, 0, 0, 4987, 4988, 7, 7, 0, 0, 4988, 4989, 7, 5, 0, 0, 4989, 4990, 7, 15, 0, 0, 4990, 4991, 7, 10, 0, 0, 4991, 4992, 7, 9, 0, 0, 4992, 4993, 7, 24, 0, 0, 4993, 4994, 7, 5, 0, 0, 4994, 4995, 7, 14, 0, 0, 4995, 4996, 7, 10, 0, 0, 4996, 4997, 7, 9, 0, 0, 4997, 970, 1, 0, 0, 0, 4998, 4999, 7, 13, 0, 0, 4999, 5000, 7, 19, 0, 0, 5000, 5001, 7, 28, 0, 0, 5001, 5002, 7, 16, 0, 0, 5002, 5003, 7, 8, 0, 0, 5003, 5004, 7, 24, 0, 0, 5004, 5005, 7, 10, 0, 0, 5005, 972, 1, 0, 0, 0, 5006, 5007, 7, 7, 0, 0, 5007, 5008, 7, 19, 0, 0, 5008, 5009, 7, 13, 0, 0, 5009, 5010, 7, 15, 0, 0, 5010, 5011, 7, 5, 0, 0, 5011, 5012, 7, 6, 0, 0, 5012, 5013, 7, 17, 0, 0, 5013, 5014, 7, 11, 0, 0, 5014, 5015, 7, 10, 0, 0, 5015, 5016, 7, 12, 0, 0, 5016, 974, 1, 0, 0, 0, 5017, 5018, 7, 28, 0, 0, 5018, 5019, 7, 17, 0, 0, 5019, 5020, 7, 16, 0, 0, 5020, 5021, 7, 20, 0, 0, 5021, 5022, 7, 17, 0, 0, 5022, 5023, 7, 7, 0, 0, 5023, 976, 1, 0, 0, 0, 5024, 5025, 7, 25, 0, 0, 5025, 5026, 7, 17, 0, 0, 5026, 5027, 7, 6, 0, 0, 5027, 5028, 7, 16, 0, 0, 5028, 5029, 7, 10, 0, 0, 5029, 5030, 7, 13, 0, 0, 5030, 978, 1, 0, 0, 0, 5031, 5032, 7, 23, 0, 0, 5032, 5033, 7, 13, 0, 0, 5033, 5034, 7, 19, 0, 0, 5034, 5035, 7, 22, 0, 0, 5035, 5036, 7, 24, 0, 0, 5036, 5037, 7, 9, 0, 0, 5037, 980, 1, 0, 0, 0, 5038, 5039, 7, 19, 0, 0, 5039, 5040, 7, 16, 0, 0, 5040, 5041, 7, 20, 0, 0, 5041, 5042, 7, 10, 0, 0, 5042, 5043, 7, 13, 0, 0, 5043, 5044, 7, 9, 0, 0, 5044, 982, 1, 0, 0, 0, 5045, 5046, 7, 7, 0, 0, 5046, 5047, 7, 25, 0, 0, 5047, 5048, 7, 14, 0, 0, 5048, 984, 1, 0, 0, 0, 5049, 5050, 7, 7, 0, 0, 5050, 5051, 7, 25, 0, 0, 5051, 5052, 7, 12, 0, 0, 5052, 986, 1, 0, 0, 0, 5053, 5054, 7, 7, 0, 0, 5054, 5055, 7, 25, 0, 0, 5055, 5056, 7, 21, 0, 0, 5056, 5057, 7, 14, 0, 0, 5057, 988, 1, 0, 0, 0, 5058, 5059, 7, 7, 0, 0, 5059, 5060, 7, 25, 0, 0, 5060, 5061, 7, 21, 0, 0, 5061, 5062, 7, 12, 0, 0, 5062, 990, 1, 0, 0, 0, 5063, 5064, 7, 22, 0, 0, 5064, 5065, 7, 10, 0, 0, 5065, 5066, 7, 9, 0, 0, 5066, 5067, 7, 14, 0, 0, 5067, 5068, 7, 5, 0, 0, 5068, 5069, 7, 24, 0, 0, 5069, 5070, 7, 10, 0, 0, 5070, 992, 1, 0, 0, 0, 5071, 5072, 7, 27, 0, 0, 5072, 5073, 7, 17, 0, 0, 5073, 5074, 7, 10, 0, 0, 5074, 5075, 7, 28, 0, 0, 5075, 5076, 7, 9, 0, 0, 5076, 994, 1, 0, 0, 0, 5077, 5078, 7, 7, 0, 0, 5078, 5079, 7, 19, 0, 0, 5079, 5080, 7, 13, 0, 0, 5080, 5081, 7, 15, 0, 0, 5081, 5082, 7, 5, 0, 0, 5082, 5083, 7, 6, 0, 0, 5083, 5084, 7, 17, 0, 0, 5084, 5085, 7, 11, 0, 0, 5085, 5086, 7, 10, 0, 0, 5086, 996, 1, 0, 0, 0, 5087, 5088, 7, 12, 0, 0, 5088, 5089, 7, 22, 0, 0, 5089, 5090, 7, 15, 0, 0, 5090, 5091, 7, 24, 0, 0, 5091, 998, 1, 0, 0, 0, 5092, 5093, 7, 24, 0, 0, 5093, 5094, 7, 13, 0, 0, 5094, 5095, 7, 17, 0, 0, 5095, 5096, 7, 7, 0, 0, 5096, 5097, 7, 16, 0, 0, 5097, 5098, 5, 95, 0, 0, 5098, 5099, 7, 9, 0, 0, 5099, 5100, 7, 16, 0, 0, 5100, 5101, 7, 13, 0, 0, 5101, 5102, 7, 17, 0, 0, 5102, 5103, 7, 14, 0, 0, 5103, 5104, 7, 16, 0, 0, 5104, 5105, 5, 95, 0, 0, 5105, 5106, 7, 24, 0, 0, 5106, 5107, 7, 5, 0, 0, 5107, 5108, 7, 13, 0, 0, 5108, 5109, 7, 5, 0, 0, 5109, 5110, 7, 15, 0, 0, 5110, 5111, 7, 9, 0, 0, 5111, 1000, 1, 0, 0, 0, 5112, 5113, 7, 27, 0, 0, 5113, 5114, 7, 5, 0, 0, 5114, 5115, 7, 13, 0, 0, 5115, 5116, 7, 17, 0, 0, 5116, 5117, 7, 5, 0, 0, 5117, 5118, 7, 18, 0, 0, 5118, 5119, 7, 6, 0, 0, 5119, 5120, 7, 10, 0, 0, 5120, 5121, 5, 95, 0, 0, 5121, 5122, 7, 14, 0, 0, 5122, 5123, 7, 19, 0, 0, 5123, 5124, 7, 7, 0, 0, 5124, 5125, 7, 25, 0, 0, 5125, 5126, 7, 6, 0, 0, 5126, 5127, 7, 17, 0, 0, 5127, 5128, 7, 14, 0, 0, 5128, 5129, 7, 16, 0, 0, 5129, 1002, 1, 0, 0, 0, 5130, 5131, 7, 10, 0, 0, 5131, 5132, 7, 13, 0, 0, 5132, 5133, 7, 13, 0, 0, 5133, 5134, 7, 19, 0, 0, 5134, 5135, 7, 13, 0, 0, 5135, 1004, 1, 0, 0, 0, 5136, 5137, 7, 22, 0, 0, 5137, 5138, 7, 9, 0, 0, 5138, 5139, 7, 10, 0, 0, 5139, 5140, 5, 95, 0, 0, 5140, 5141, 7, 27, 0, 0, 5141, 5142, 7, 5, 0, 0, 5142, 5143, 7, 13, 0, 0, 5143, 5144, 7, 17, 0, 0, 5144, 5145, 7, 5, 0, 0, 5145, 5146, 7, 18, 0, 0, 5146, 5147, 7, 6, 0, 0, 5147, 5148, 7, 10, 0, 0, 5148, 1006, 1, 0, 0, 0, 5149, 5150, 7, 22, 0, 0, 5150, 5151, 7, 9, 0, 0, 5151, 5152, 7, 10, 0, 0, 5152, 5153, 5, 95, 0, 0, 5153, 5154, 7, 14, 0, 0, 5154, 5155, 7, 19, 0, 0, 5155, 5156, 7, 6, 0, 0, 5156, 5157, 7, 22, 0, 0, 5157, 5158, 7, 15, 0, 0, 5158, 5159, 7, 7, 0, 0, 5159, 1008, 1, 0, 0, 0, 5160, 5161, 7, 5, 0, 0, 5161, 5162, 7, 6, 0, 0, 5162, 5163, 7, 17, 0, 0, 5163, 5164, 7, 5, 0, 0, 5164, 5165, 7, 9, 0, 0, 5165, 1010, 1, 0, 0, 0, 5166, 5167, 7, 14, 0, 0, 5167, 5168, 7, 19, 0, 0, 5168, 5169, 7, 7, 0, 0, 5169, 5170, 7, 9, 0, 0, 5170, 5171, 7, 16, 0, 0, 5171, 5172, 7, 5, 0, 0, 5172, 5173, 7, 7, 0, 0, 5173, 5174, 7, 16, 0, 0, 5174, 1012, 1, 0, 0, 0, 5175, 5176, 7, 24, 0, 0, 5176, 5177, 7, 10, 0, 0, 5177, 5178, 7, 13, 0, 0, 5178, 5179, 7, 25, 0, 0, 5179, 5180, 7, 19, 0, 0, 5180, 5181, 7, 13, 0, 0, 5181, 5182, 7, 15, 0, 0, 5182, 1014, 1, 0, 0, 0, 5183, 5184, 7, 23, 0, 0, 5184, 5185, 7, 10, 0, 0, 5185, 5186, 7, 16, 0, 0, 5186, 1016, 1, 0, 0, 0, 5187, 5188, 7, 12, 0, 0, 5188, 5189, 7, 17, 0, 0, 5189, 5190, 7, 5, 0, 0, 5190, 5191, 7, 23, 0, 0, 5191, 5192, 7, 7, 0, 0, 5192, 5193, 7, 19, 0, 0, 5193, 5194, 7, 9, 0, 0, 5194, 5195, 7, 16, 0, 0, 5195, 5196, 7, 17, 0, 0, 5196, 5197, 7, 14, 0, 0, 5197, 5198, 7, 9, 0, 0, 5198, 1018, 1, 0, 0, 0, 5199, 5200, 7, 9, 0, 0, 5200, 5201, 7, 16, 0, 0, 5201, 5202, 7, 5, 0, 0, 5202, 5203, 7, 14, 0, 0, 5203, 5204, 7, 21, 0, 0, 5204, 5205, 7, 10, 0, 0, 5205, 5206, 7, 12, 0, 0, 5206, 1020, 1, 0, 0, 0, 5207, 5208, 7, 10, 0, 0, 5208, 5209, 7, 6, 0, 0, 5209, 5210, 7, 9, 0, 0, 5210, 5211, 7, 17, 0, 0, 5211, 5212, 7, 25, 0, 0, 5212, 1022, 1, 0, 0, 0, 5213, 5214, 7, 28, 0, 0, 5214, 5215, 7, 20, 0, 0, 5215, 5216, 7, 17, 0, 0, 5216, 5217, 7, 6, 0, 0, 5217, 5218, 7, 10, 0, 0, 5218, 1024, 1, 0, 0, 0, 5219, 5220, 7, 13, 0, 0, 5220, 5221, 7, 10, 0, 0, 5221, 5222, 7, 27, 0, 0, 5222, 5223, 7, 10, 0, 0, 5223, 5224, 7, 13, 0, 0, 5224, 5225, 7, 9, 0, 0, 5225, 5226, 7, 10, 0, 0, 5226, 1026, 1, 0, 0, 0, 5227, 5228, 7, 25, 0, 0, 5228, 5229, 7, 19, 0, 0, 5229, 5230, 7, 13, 0, 0, 5230, 5231, 7, 10, 0, 0, 5231, 5232, 7, 5, 0, 0, 5232, 5233, 7, 14, 0, 0, 5233, 5234, 7, 20, 0, 0, 5234, 1028, 1, 0, 0, 0, 5235, 5236, 7, 9, 0, 0, 5236, 5237, 7, 6, 0, 0, 5237, 5238, 7, 17, 0, 0, 5238, 5239, 7, 14, 0, 0, 5239, 5240, 7, 10, 0, 0, 5240, 1030, 1, 0, 0, 0, 5241, 5242, 7, 10, 0, 0, 5242, 5243, 7, 26, 0, 0, 5243, 5244, 7, 17, 0, 0, 5244, 5245, 7, 16, 0, 0, 5245, 1032, 1, 0, 0, 0, 5246, 5247, 7, 13, 0, 0, 5247, 5248, 7, 10, 0, 0, 5248, 5249, 7, 16, 0, 0, 5249, 5250, 7, 22, 0, 0, 5250, 5251, 7, 13, 0, 0, 5251, 5252, 7, 7, 0, 0, 5252, 1034, 1, 0, 0, 0, 5253, 5254, 7, 29, 0, 0, 5254, 5255, 7, 22, 0, 0, 5255, 5256, 7, 10, 0, 0, 5256, 5257, 7, 13, 0, 0, 5257, 5258, 7, 8, 0, 0, 5258, 1036, 1, 0, 0, 0, 5259, 5260, 7, 13, 0, 0, 5260, 5261, 7, 5, 0, 0, 5261, 5262, 7, 17, 0, 0, 5262, 5263, 7, 9, 0, 0, 5263, 5264, 7, 10, 0, 0, 5264, 1038, 1, 0, 0, 0, 5265, 5266, 7, 9, 0, 0, 5266, 5267, 7, 29, 0, 0, 5267, 5268, 7, 6, 0, 0, 5268, 5269, 7, 9, 0, 0, 5269, 5270, 7, 16, 0, 0, 5270, 5271, 7, 5, 0, 0, 5271, 5272, 7, 16, 0, 0, 5272, 5273, 7, 10, 0, 0, 5273, 1040, 1, 0, 0, 0, 5274, 5275, 7, 12, 0, 0, 5275, 5276, 7, 10, 0, 0, 5276, 5277, 7, 18, 0, 0, 5277, 5278, 7, 22, 0, 0, 5278, 5279, 7, 23, 0, 0, 5279, 1042, 1, 0, 0, 0, 5280, 5281, 7, 6, 0, 0, 5281, 5282, 7, 19, 0, 0, 5282, 5283, 7, 23, 0, 0, 5283, 1044, 1, 0, 0, 0, 5284, 5285, 7, 17, 0, 0, 5285, 5286, 7, 7, 0, 0, 5286, 5287, 7, 25, 0, 0, 5287, 5288, 7, 19, 0, 0, 5288, 1046, 1, 0, 0, 0, 5289, 5290, 7, 7, 0, 0, 5290, 5291, 7, 19, 0, 0, 5291, 5292, 7, 16, 0, 0, 5292, 5293, 7, 17, 0, 0, 5293, 5294, 7, 14, 0, 0, 5294, 5295, 7, 10, 0, 0, 5295, 1048, 1, 0, 0, 0, 5296, 5297, 7, 28, 0, 0, 5297, 5298, 7, 5, 0, 0, 5298, 5299, 7, 13, 0, 0, 5299, 5300, 7, 7, 0, 0, 5300, 5301, 7, 17, 0, 0, 5301, 5302, 7, 7, 0, 0, 5302, 5303, 7, 23, 0, 0, 5303, 1050, 1, 0, 0, 0, 5304, 5305, 7, 10, 0, 0, 5305, 5306, 7, 26, 0, 0, 5306, 5307, 7, 14, 0, 0, 5307, 5308, 7, 10, 0, 0, 5308, 5309, 7, 24, 0, 0, 5309, 5310, 7, 16, 0, 0, 5310, 5311, 7, 17, 0, 0, 5311, 5312, 7, 19, 0, 0, 5312, 5313, 7, 7, 0, 0, 5313, 1052, 1, 0, 0, 0, 5314, 5315, 7, 5, 0, 0, 5315, 5316, 7, 9, 0, 0, 5316, 5317, 7, 9, 0, 0, 5317, 5318, 7, 10, 0, 0, 5318, 5319, 7, 13, 0, 0, 5319, 5320, 7, 16, 0, 0, 5320, 1054, 1, 0, 0, 0, 5321, 5322, 7, 6, 0, 0, 5322, 5323, 7, 19, 0, 0, 5323, 5324, 7, 19, 0, 0, 5324, 5325, 7, 24, 0, 0, 5325, 1056, 1, 0, 0, 0, 5326, 5327, 7, 19, 0, 0, 5327, 5328, 7, 24, 0, 0, 5328, 5329, 7, 10, 0, 0, 5329, 5330, 7, 7, 0, 0, 5330, 1058, 1, 0, 0, 0, 5331, 5332, 7, 5, 0, 0, 5332, 5333, 7, 18, 0, 0, 5333, 5334, 7, 9, 0, 0, 5334, 1060, 1, 0, 0, 0, 5335, 5336, 7, 14, 0, 0, 5336, 5337, 7, 18, 0, 0, 5337, 5338, 7, 13, 0, 0, 5338, 5339, 7, 16, 0, 0, 5339, 1062, 1, 0, 0, 0, 5340, 5341, 7, 14, 0, 0, 5341, 5342, 7, 10, 0, 0, 5342, 5343, 7, 17, 0, 0, 5343, 5344, 7, 6, 0, 0, 5344, 1064, 1, 0, 0, 0, 5345, 5346, 7, 14, 0, 0, 5346, 5347, 7, 10, 0, 0, 5347, 5348, 7, 17, 0, 0, 5348, 5349, 7, 6, 0, 0, 5349, 5350, 7, 17, 0, 0, 5350, 5351, 7, 7, 0, 0, 5351, 5352, 7, 23, 0, 0, 5352, 1066, 1, 0, 0, 0, 5353, 5354, 7, 12, 0, 0, 5354, 5355, 7, 10, 0, 0, 5355, 5356, 7, 23, 0, 0, 5356, 5357, 7, 13, 0, 0, 5357, 5358, 7, 10, 0, 0, 5358, 5359, 7, 10, 0, 0, 5359, 5360, 7, 9, 0, 0, 5360, 1068, 1, 0, 0, 0, 5361, 5362, 7, 12, 0, 0, 5362, 5363, 7, 17, 0, 0, 5363, 5364, 7, 27, 0, 0, 5364, 1070, 1, 0, 0, 0, 5365, 5366, 7, 10, 0, 0, 5366, 5367, 7, 26, 0, 0, 5367, 5368, 7, 24, 0, 0, 5368, 1072, 1, 0, 0, 0, 5369, 5370, 7, 25, 0, 0, 5370, 5371, 7, 5, 0, 0, 5371, 5372, 7, 14, 0, 0, 5372, 5373, 7, 16, 0, 0, 5373, 5374, 7, 19, 0, 0, 5374, 5375, 7, 13, 0, 0, 5375, 5376, 7, 17, 0, 0, 5376, 5377, 7, 5, 0, 0, 5377, 5378, 7, 6, 0, 0, 5378, 1074, 1, 0, 0, 0, 5379, 5380, 7, 25, 0, 0, 5380, 5381, 7, 6, 0, 0, 5381, 5382, 7, 19, 0, 0, 5382, 5383, 7, 19, 0, 0, 5383, 5384, 7, 13, 0, 0, 5384, 1076, 1, 0, 0, 0, 5385, 5386, 7, 23, 0, 0, 5386, 5387, 7, 14, 0, 0, 5387, 5388, 7, 12, 0, 0, 5388, 1078, 1, 0, 0, 0, 5389, 5390, 7, 6, 0, 0, 5390, 5391, 7, 14, 0, 0, 5391, 5392, 7, 15, 0, 0, 5392, 1080, 1, 0, 0, 0, 5393, 5394, 7, 6, 0, 0, 5394, 5395, 7, 7, 0, 0, 5395, 1082, 1, 0, 0, 0, 5396, 5397, 7, 6, 0, 0, 5397, 5398, 7, 19, 0, 0, 5398, 5399, 7, 23, 0, 0, 5399, 5400, 5, 49, 0, 0, 5400, 5401, 5, 48, 0, 0, 5401, 1084, 1, 0, 0, 0, 5402, 5403, 7, 15, 0, 0, 5403, 5404, 7, 17, 0, 0, 5404, 5405, 7, 7, 0, 0, 5405, 5406, 5, 95, 0, 0, 5406, 5407, 7, 9, 0, 0, 5407, 5408, 7, 14, 0, 0, 5408, 5409, 7, 5, 0, 0, 5409, 5410, 7, 6, 0, 0, 5410, 5411, 7, 10, 0, 0, 5411, 1086, 1, 0, 0, 0, 5412, 5413, 7, 15, 0, 0, 5413, 5414, 7, 19, 0, 0, 5414, 5415, 7, 12, 0, 0, 5415, 1088, 1, 0, 0, 0, 5416, 5417, 7, 24, 0, 0, 5417, 5418, 7, 17, 0, 0, 5418, 1090, 1, 0, 0, 0, 5419, 5420, 7, 24, 0, 0, 5420, 5421, 7, 19, 0, 0, 5421, 5422, 7, 28, 0, 0, 5422, 5423, 7, 10, 0, 0, 5423, 5424, 7, 13, 0, 0, 5424, 1092, 1, 0, 0, 0, 5425, 5426, 7, 13, 0, 0, 5426, 5427, 7, 5, 0, 0, 5427, 5428, 7, 12, 0, 0, 5428, 5429, 7, 17, 0, 0, 5429, 5430, 7, 5, 0, 0, 5430, 5431, 7, 7, 0, 0, 5431, 5432, 7, 9, 0, 0, 5432, 1094, 1, 0, 0, 0, 5433, 5434, 7, 13, 0, 0, 5434, 5435, 7, 19, 0, 0, 5435, 5436, 7, 22, 0, 0, 5436, 5437, 7, 7, 0, 0, 5437, 5438, 7, 12, 0, 0, 5438, 1096, 1, 0, 0, 0, 5439, 5440, 7, 9, 0, 0, 5440, 5441, 7, 14, 0, 0, 5441, 5442, 7, 5, 0, 0, 5442, 5443, 7, 6, 0, 0, 5443, 5444, 7, 10, 0, 0, 5444, 1098, 1, 0, 0, 0, 5445, 5446, 7, 9, 0, 0, 5446, 5447, 7, 17, 0, 0, 5447, 5448, 7, 23, 0, 0, 5448, 5449, 7, 7, 0, 0, 5449, 1100, 1, 0, 0, 0, 5450, 5451, 7, 9, 0, 0, 5451, 5452, 7, 29, 0, 0, 5452, 5453, 7, 13, 0, 0, 5453, 5454, 7, 16, 0, 0, 5454, 1102, 1, 0, 0, 0, 5455, 5456, 7, 16, 0, 0, 5456, 5457, 7, 13, 0, 0, 5457, 5458, 7, 17, 0, 0, 5458, 5459, 7, 15, 0, 0, 5459, 5460, 5, 95, 0, 0, 5460, 5461, 7, 9, 0, 0, 5461, 5462, 7, 14, 0, 0, 5462, 5463, 7, 5, 0, 0, 5463, 5464, 7, 6, 0, 0, 5464, 5465, 7, 10, 0, 0, 5465, 1104, 1, 0, 0, 0, 5466, 5467, 7, 16, 0, 0, 5467, 5468, 7, 13, 0, 0, 5468, 5469, 7, 22, 0, 0, 5469, 5470, 7, 7, 0, 0, 5470, 5471, 7, 14, 0, 0, 5471, 1106, 1, 0, 0, 0, 5472, 5473, 7, 28, 0, 0, 5473, 5474, 7, 17, 0, 0, 5474, 5475, 7, 12, 0, 0, 5475, 5476, 7, 16, 0, 0, 5476, 5477, 7, 20, 0, 0, 5477, 5478, 5, 95, 0, 0, 5478, 5479, 7, 18, 0, 0, 5479, 5480, 7, 22, 0, 0, 5480, 5481, 7, 14, 0, 0, 5481, 5482, 7, 21, 0, 0, 5482, 5483, 7, 10, 0, 0, 5483, 5484, 7, 16, 0, 0, 5484, 1108, 1, 0, 0, 0, 5485, 5486, 7, 13, 0, 0, 5486, 5487, 7, 5, 0, 0, 5487, 5488, 7, 7, 0, 0, 5488, 5489, 7, 12, 0, 0, 5489, 5490, 7, 19, 0, 0, 5490, 5491, 7, 15, 0, 0, 5491, 1110, 1, 0, 0, 0, 5492, 5493, 7, 9, 0, 0, 5493, 5494, 7, 10, 0, 0, 5494, 5495, 7, 16, 0, 0, 5495, 5496, 7, 9, 0, 0, 5496, 5497, 7, 10, 0, 0, 5497, 5498, 7, 10, 0, 0, 5498, 5499, 7, 12, 0, 0, 5499, 1112, 1, 0, 0, 0, 5500, 5501, 7, 5, 0, 0, 5501, 5502, 7, 14, 0, 0, 5502, 5503, 7, 19, 0, 0, 5503, 5504, 7, 9, 0, 0, 5504, 1114, 1, 0, 0, 0, 5505, 5506, 7, 5, 0, 0, 5506, 5507, 7, 14, 0, 0, 5507, 5508, 7, 19, 0, 0, 5508, 5509, 7, 9, 0, 0, 5509, 5510, 7, 12, 0, 0, 5510, 1116, 1, 0, 0, 0, 5511, 5512, 7, 5, 0, 0, 5512, 5513, 7, 9, 0, 0, 5513, 5514, 7, 17, 0, 0, 5514, 5515, 7, 7, 0, 0, 5515, 1118, 1, 0, 0, 0, 5516, 5517, 7, 5, 0, 0, 5517, 5518, 7, 9, 0, 0, 5518, 5519, 7, 17, 0, 0, 5519, 5520, 7, 7, 0, 0, 5520, 5521, 7, 12, 0, 0, 5521, 1120, 1, 0, 0, 0, 5522, 5523, 7, 5, 0, 0, 5523, 5524, 7, 16, 0, 0, 5524, 5525, 7, 5, 0, 0, 5525, 5526, 7, 7, 0, 0, 5526, 1122, 1, 0, 0, 0, 5527, 5528, 7, 5, 0, 0, 5528, 5529, 7, 16, 0, 0, 5529, 5530, 7, 5, 0, 0, 5530, 5531, 7, 7, 0, 0, 5531, 5532, 7, 12, 0, 0, 5532, 1124, 1, 0, 0, 0, 5533, 5534, 7, 5, 0, 0, 5534, 5535, 7, 16, 0, 0, 5535, 5536, 7, 5, 0, 0, 5536, 5537, 7, 7, 0, 0, 5537, 5538, 5, 50, 0, 0, 5538, 1126, 1, 0, 0, 0, 5539, 5540, 7, 5, 0, 0, 5540, 5541, 7, 16, 0, 0, 5541, 5542, 7, 5, 0, 0, 5542, 5543, 7, 7, 0, 0, 5543, 5544, 5, 50, 0, 0, 5544, 5545, 7, 12, 0, 0, 5545, 1128, 1, 0, 0, 0, 5546, 5547, 7, 14, 0, 0, 5547, 5548, 7, 19, 0, 0, 5548, 5549, 7, 9, 0, 0, 5549, 1130, 1, 0, 0, 0, 5550, 5551, 7, 14, 0, 0, 5551, 5552, 7, 19, 0, 0, 5552, 5553, 7, 9, 0, 0, 5553, 5554, 7, 12, 0, 0, 5554, 1132, 1, 0, 0, 0, 5555, 5556, 7, 14, 0, 0, 5556, 5557, 7, 19, 0, 0, 5557, 5558, 7, 16, 0, 0, 5558, 1134, 1, 0, 0, 0, 5559, 5560, 7, 14, 0, 0, 5560, 5561, 7, 19, 0, 0, 5561, 5562, 7, 16, 0, 0, 5562, 5563, 7, 12, 0, 0, 5563, 1136, 1, 0, 0, 0, 5564, 5565, 7, 9, 0, 0, 5565, 5566, 7, 17, 0, 0, 5566, 5567, 7, 7, 0, 0, 5567, 1138, 1, 0, 0, 0, 5568, 5569, 7, 9, 0, 0, 5569, 5570, 7, 17, 0, 0, 5570, 5571, 7, 7, 0, 0, 5571, 5572, 7, 12, 0, 0, 5572, 1140, 1, 0, 0, 0, 5573, 5574, 7, 16, 0, 0, 5574, 5575, 7, 5, 0, 0, 5575, 5576, 7, 7, 0, 0, 5576, 1142, 1, 0, 0, 0, 5577, 5578, 7, 16, 0, 0, 5578, 5579, 7, 5, 0, 0, 5579, 5580, 7, 7, 0, 0, 5580, 5581, 7, 12, 0, 0, 5581, 1144, 1, 0, 0, 0, 5582, 5583, 7, 9, 0, 0, 5583, 5584, 7, 17, 0, 0, 5584, 5585, 7, 7, 0, 0, 5585, 5586, 7, 20, 0, 0, 5586, 1146, 1, 0, 0, 0, 5587, 5588, 7, 14, 0, 0, 5588, 5589, 7, 19, 0, 0, 5589, 5590, 7, 9, 0, 0, 5590, 5591, 7, 20, 0, 0, 5591, 1148, 1, 0, 0, 0, 5592, 5593, 7, 16, 0, 0, 5593, 5594, 7, 5, 0, 0, 5594, 5595, 7, 7, 0, 0, 5595, 5596, 7, 20, 0, 0, 5596, 1150, 1, 0, 0, 0, 5597, 5598, 7, 5, 0, 0, 5598, 5599, 7, 9, 0, 0, 5599, 5600, 7, 17, 0, 0, 5600, 5601, 7, 7, 0, 0, 5601, 5602, 7, 20, 0, 0, 5602, 1152, 1, 0, 0, 0, 5603, 5604, 7, 5, 0, 0, 5604, 5605, 7, 14, 0, 0, 5605, 5606, 7, 19, 0, 0, 5606, 5607, 7, 9, 0, 0, 5607, 5608, 7, 20, 0, 0, 5608, 1154, 1, 0, 0, 0, 5609, 5610, 7, 5, 0, 0, 5610, 5611, 7, 16, 0, 0, 5611, 5612, 7, 5, 0, 0, 5612, 5613, 7, 7, 0, 0, 5613, 5614, 7, 20, 0, 0, 5614, 1156, 1, 0, 0, 0, 5615, 5616, 7, 18, 0, 0, 5616, 5617, 7, 17, 0, 0, 5617, 5618, 7, 16, 0, 0, 5618, 5619, 5, 95, 0, 0, 5619, 5620, 7, 6, 0, 0, 5620, 5621, 7, 10, 0, 0, 5621, 5622, 7, 7, 0, 0, 5622, 5623, 7, 23, 0, 0, 5623, 5624, 7, 16, 0, 0, 5624, 5625, 7, 20, 0, 0, 5625, 1158, 1, 0, 0, 0, 5626, 5627, 7, 14, 0, 0, 5627, 5628, 7, 20, 0, 0, 5628, 5629, 7, 5, 0, 0, 5629, 5630, 7, 13, 0, 0, 5630, 5631, 5, 95, 0, 0, 5631, 5632, 7, 6, 0, 0, 5632, 5633, 7, 10, 0, 0, 5633, 5634, 7, 7, 0, 0, 5634, 5635, 7, 23, 0, 0, 5635, 5636, 7, 16, 0, 0, 5636, 5637, 7, 20, 0, 0, 5637, 1160, 1, 0, 0, 0, 5638, 5639, 7, 14, 0, 0, 5639, 5640, 7, 20, 0, 0, 5640, 5641, 7, 5, 0, 0, 5641, 5642, 7, 13, 0, 0, 5642, 5643, 7, 5, 0, 0, 5643, 5644, 7, 14, 0, 0, 5644, 5645, 7, 16, 0, 0, 5645, 5646, 7, 10, 0, 0, 5646, 5647, 7, 13, 0, 0, 5647, 5648, 5, 95, 0, 0, 5648, 5649, 7, 6, 0, 0, 5649, 5650, 7, 10, 0, 0, 5650, 5651, 7, 7, 0, 0, 5651, 5652, 7, 23, 0, 0, 5652, 5653, 7, 16, 0, 0, 5653, 5654, 7, 20, 0, 0, 5654, 1162, 1, 0, 0, 0, 5655, 5656, 7, 6, 0, 0, 5656, 5657, 7, 19, 0, 0, 5657, 5658, 7, 28, 0, 0, 5658, 5659, 7, 10, 0, 0, 5659, 5660, 7, 13, 0, 0, 5660, 1164, 1, 0, 0, 0, 5661, 5662, 7, 19, 0, 0, 5662, 5663, 7, 14, 0, 0, 5663, 5664, 7, 16, 0, 0, 5664, 5665, 7, 10, 0, 0, 5665, 5666, 7, 16, 0, 0, 5666, 5667, 5, 95, 0, 0, 5667, 5668, 7, 6, 0, 0, 5668, 5669, 7, 10, 0, 0, 5669, 5670, 7, 7, 0, 0, 5670, 5671, 7, 23, 0, 0, 5671, 5672, 7, 16, 0, 0, 5672, 5673, 7, 20, 0, 0, 5673, 1166, 1, 0, 0, 0, 5674, 5675, 7, 22, 0, 0, 5675, 5676, 7, 24, 0, 0, 5676, 5677, 7, 24, 0, 0, 5677, 5678, 7, 10, 0, 0, 5678, 5679, 7, 13, 0, 0, 5679, 1168, 1, 0, 0, 0, 5680, 5681, 7, 5, 0, 0, 5681, 5682, 7, 9, 0, 0, 5682, 5683, 7, 14, 0, 0, 5683, 5684, 7, 17, 0, 0, 5684, 5685, 7, 17, 0, 0, 5685, 1170, 1, 0, 0, 0, 5686, 5687, 7, 18, 0, 0, 5687, 5688, 7, 16, 0, 0, 5688, 5689, 7, 13, 0, 0, 5689, 5690, 7, 17, 0, 0, 5690, 5691, 7, 15, 0, 0, 5691, 1172, 1, 0, 0, 0, 5692, 5693, 7, 14, 0, 0, 5693, 5694, 7, 20, 0, 0, 5694, 5695, 7, 13, 0, 0, 5695, 1174, 1, 0, 0, 0, 5696, 5697, 7, 14, 0, 0, 5697, 5698, 7, 19, 0, 0, 5698, 5699, 7, 7, 0, 0, 5699, 5700, 7, 14, 0, 0, 5700, 5701, 7, 5, 0, 0, 5701, 5702, 7, 16, 0, 0, 5702, 1176, 1, 0, 0, 0, 5703, 5704, 7, 14, 0, 0, 5704, 5705, 7, 19, 0, 0, 5705, 5706, 7, 7, 0, 0, 5706, 5707, 7, 14, 0, 0, 5707, 5708, 7, 5, 0, 0, 5708, 5709, 7, 16, 0, 0, 5709, 5710, 5, 95, 0, 0, 5710, 5711, 7, 28, 0, 0, 5711, 5712, 7, 9, 0, 0, 5712, 1178, 1, 0, 0, 0, 5713, 5714, 7, 25, 0, 0, 5714, 5715, 7, 19, 0, 0, 5715, 5716, 7, 13, 0, 0, 5716, 5717, 7, 15, 0, 0, 5717, 5718, 7, 5, 0, 0, 5718, 5719, 7, 16, 0, 0, 5719, 1180, 1, 0, 0, 0, 5720, 5721, 7, 17, 0, 0, 5721, 5722, 7, 7, 0, 0, 5722, 5723, 7, 17, 0, 0, 5723, 5724, 7, 16, 0, 0, 5724, 5725, 7, 14, 0, 0, 5725, 5726, 7, 5, 0, 0, 5726, 5727, 7, 24, 0, 0, 5727, 1182, 1, 0, 0, 0, 5728, 5729, 7, 6, 0, 0, 5729, 5730, 7, 10, 0, 0, 5730, 5731, 7, 7, 0, 0, 5731, 5732, 7, 23, 0, 0, 5732, 5733, 7, 16, 0, 0, 5733, 5734, 7, 20, 0, 0, 5734, 1184, 1, 0, 0, 0, 5735, 5736, 7, 6, 0, 0, 5736, 5737, 7, 24, 0, 0, 5737, 5738, 7, 5, 0, 0, 5738, 5739, 7, 12, 0, 0, 5739, 1186, 1, 0, 0, 0, 5740, 5741, 7, 6, 0, 0, 5741, 5742, 7, 16, 0, 0, 5742, 5743, 7, 13, 0, 0, 5743, 5744, 7, 17, 0, 0, 5744, 5745, 7, 15, 0, 0, 5745, 1188, 1, 0, 0, 0, 5746, 5747, 7, 15, 0, 0, 5747, 5748, 7, 12, 0, 0, 5748, 5749, 5, 53, 0, 0, 5749, 1190, 1, 0, 0, 0, 5750, 5751, 7, 24, 0, 0, 5751, 5752, 7, 5, 0, 0, 5752, 5753, 7, 13, 0, 0, 5753, 5754, 7, 9, 0, 0, 5754, 5755, 7, 10, 0, 0, 5755, 5756, 5, 95, 0, 0, 5756, 5757, 7, 17, 0, 0, 5757, 5758, 7, 12, 0, 0, 5758, 5759, 7, 10, 0, 0, 5759, 5760, 7, 7, 0, 0, 5760, 5761, 7, 16, 0, 0, 5761, 1192, 1, 0, 0, 0, 5762, 5763, 7, 24, 0, 0, 5763, 5764, 7, 23, 0, 0, 5764, 5765, 5, 95, 0, 0, 5765, 5766, 7, 14, 0, 0, 5766, 5767, 7, 6, 0, 0, 5767, 5768, 7, 17, 0, 0, 5768, 5769, 7, 10, 0, 0, 5769, 5770, 7, 7, 0, 0, 5770, 5771, 7, 16, 0, 0, 5771, 5772, 5, 95, 0, 0, 5772, 5773, 7, 10, 0, 0, 5773, 5774, 7, 7, 0, 0, 5774, 5775, 7, 14, 0, 0, 5775, 5776, 7, 19, 0, 0, 5776, 5777, 7, 12, 0, 0, 5777, 5778, 7, 17, 0, 0, 5778, 5779, 7, 7, 0, 0, 5779, 5780, 7, 23, 0, 0, 5780, 1194, 1, 0, 0, 0, 5781, 5782, 7, 29, 0, 0, 5782, 5783, 7, 22, 0, 0, 5783, 5784, 7, 19, 0, 0, 5784, 5785, 7, 16, 0, 0, 5785, 5786, 7, 10, 0, 0, 5786, 5787, 5, 95, 0, 0, 5787, 5788, 7, 17, 0, 0, 5788, 5789, 7, 12, 0, 0, 5789, 5790, 7, 10, 0, 0, 5790, 5791, 7, 7, 0, 0, 5791, 5792, 7, 16, 0, 0, 5792, 1196, 1, 0, 0, 0, 5793, 5794, 7, 29, 0, 0, 5794, 5795, 7, 22, 0, 0, 5795, 5796, 7, 19, 0, 0, 5796, 5797, 7, 16, 0, 0, 5797, 5798, 7, 10, 0, 0, 5798, 5799, 5, 95, 0, 0, 5799, 5800, 7, 6, 0, 0, 5800, 5801, 7, 17, 0, 0, 5801, 5802, 7, 16, 0, 0, 5802, 5803, 7, 10, 0, 0, 5803, 5804, 7, 13, 0, 0, 5804, 5805, 7, 5, 0, 0, 5805, 5806, 7, 6, 0, 0, 5806, 1198, 1, 0, 0, 0, 5807, 5808, 7, 29, 0, 0, 5808, 5809, 7, 22, 0, 0, 5809, 5810, 7, 19, 0, 0, 5810, 5811, 7, 16, 0, 0, 5811, 5812, 7, 10, 0, 0, 5812, 5813, 5, 95, 0, 0, 5813, 5814, 7, 7, 0, 0, 5814, 5815, 7, 22, 0, 0, 5815, 5816, 7, 6, 0, 0, 5816, 5817, 7, 6, 0, 0, 5817, 5818, 7, 5, 0, 0, 5818, 5819, 7, 18, 0, 0, 5819, 5820, 7, 6, 0, 0, 5820, 5821, 7, 10, 0, 0, 5821, 1200, 1, 0, 0, 0, 5822, 5823, 7, 13, 0, 0, 5823, 5824, 7, 10, 0, 0, 5824, 5825, 7, 23, 0, 0, 5825, 5826, 7, 10, 0, 0, 5826, 5827, 7, 26, 0, 0, 5827, 5828, 7, 24, 0, 0, 5828, 5829, 5, 95, 0, 0, 5829, 5830, 7, 14, 0, 0, 5830, 5831, 7, 19, 0, 0, 5831, 5832, 7, 22, 0, 0, 5832, 5833, 7, 7, 0, 0, 5833, 5834, 7, 16, 0, 0, 5834, 1202, 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, 17, 0, 0, 5843, 5844, 7, 7, 0, 0, 5844, 5845, 7, 9, 0, 0, 5845, 5846, 7, 16, 0, 0, 5846, 5847, 7, 13, 0, 0, 5847, 1204, 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, 6, 0, 0, 5856, 5857, 7, 17, 0, 0, 5857, 5858, 7, 21, 0, 0, 5858, 5859, 7, 10, 0, 0, 5859, 1206, 1, 0, 0, 0, 5860, 5861, 7, 13, 0, 0, 5861, 5862, 7, 10, 0, 0, 5862, 5863, 7, 23, 0, 0, 5863, 5864, 7, 10, 0, 0, 5864, 5865, 7, 26, 0, 0, 5865, 5866, 7, 24, 0, 0, 5866, 5867, 5, 95, 0, 0, 5867, 5868, 7, 15, 0, 0, 5868, 5869, 7, 5, 0, 0, 5869, 5870, 7, 16, 0, 0, 5870, 5871, 7, 14, 0, 0, 5871, 5872, 7, 20, 0, 0, 5872, 1208, 1, 0, 0, 0, 5873, 5874, 7, 13, 0, 0, 5874, 5875, 7, 10, 0, 0, 5875, 5876, 7, 23, 0, 0, 5876, 5877, 7, 10, 0, 0, 5877, 5878, 7, 26, 0, 0, 5878, 5879, 7, 24, 0, 0, 5879, 5880, 5, 95, 0, 0, 5880, 5881, 7, 15, 0, 0, 5881, 5882, 7, 5, 0, 0, 5882, 5883, 7, 16, 0, 0, 5883, 5884, 7, 14, 0, 0, 5884, 5885, 7, 20, 0, 0, 5885, 5886, 7, 10, 0, 0, 5886, 5887, 7, 9, 0, 0, 5887, 1210, 1, 0, 0, 0, 5888, 5889, 7, 13, 0, 0, 5889, 5890, 7, 10, 0, 0, 5890, 5891, 7, 23, 0, 0, 5891, 5892, 7, 10, 0, 0, 5892, 5893, 7, 26, 0, 0, 5893, 5894, 7, 24, 0, 0, 5894, 5895, 5, 95, 0, 0, 5895, 5896, 7, 13, 0, 0, 5896, 5897, 7, 10, 0, 0, 5897, 5898, 7, 24, 0, 0, 5898, 5899, 7, 6, 0, 0, 5899, 5900, 7, 5, 0, 0, 5900, 5901, 7, 14, 0, 0, 5901, 5902, 7, 10, 0, 0, 5902, 1212, 1, 0, 0, 0, 5903, 5904, 7, 13, 0, 0, 5904, 5905, 7, 10, 0, 0, 5905, 5906, 7, 23, 0, 0, 5906, 5907, 7, 10, 0, 0, 5907, 5908, 7, 26, 0, 0, 5908, 5909, 7, 24, 0, 0, 5909, 5910, 5, 95, 0, 0, 5910, 5911, 7, 9, 0, 0, 5911, 5912, 7, 24, 0, 0, 5912, 5913, 7, 6, 0, 0, 5913, 5914, 7, 17, 0, 0, 5914, 5915, 7, 16, 0, 0, 5915, 5916, 5, 95, 0, 0, 5916, 5917, 7, 16, 0, 0, 5917, 5918, 7, 19, 0, 0, 5918, 5919, 5, 95, 0, 0, 5919, 5920, 7, 5, 0, 0, 5920, 5921, 7, 13, 0, 0, 5921, 5922, 7, 13, 0, 0, 5922, 5923, 7, 5, 0, 0, 5923, 5924, 7, 8, 0, 0, 5924, 1214, 1, 0, 0, 0, 5925, 5926, 7, 13, 0, 0, 5926, 5927, 7, 10, 0, 0, 5927, 5928, 7, 23, 0, 0, 5928, 5929, 7, 10, 0, 0, 5929, 5930, 7, 26, 0, 0, 5930, 5931, 7, 24, 0, 0, 5931, 5932, 5, 95, 0, 0, 5932, 5933, 7, 9, 0, 0, 5933, 5934, 7, 24, 0, 0, 5934, 5935, 7, 6, 0, 0, 5935, 5936, 7, 17, 0, 0, 5936, 5937, 7, 16, 0, 0, 5937, 5938, 5, 95, 0, 0, 5938, 5939, 7, 16, 0, 0, 5939, 5940, 7, 19, 0, 0, 5940, 5941, 5, 95, 0, 0, 5941, 5942, 7, 16, 0, 0, 5942, 5943, 7, 5, 0, 0, 5943, 5944, 7, 18, 0, 0, 5944, 5945, 7, 6, 0, 0, 5945, 5946, 7, 10, 0, 0, 5946, 1216, 1, 0, 0, 0, 5947, 5948, 7, 13, 0, 0, 5948, 5949, 7, 10, 0, 0, 5949, 5950, 7, 23, 0, 0, 5950, 5951, 7, 10, 0, 0, 5951, 5952, 7, 26, 0, 0, 5952, 5953, 7, 24, 0, 0, 5953, 5954, 5, 95, 0, 0, 5954, 5955, 7, 9, 0, 0, 5955, 5956, 7, 22, 0, 0, 5956, 5957, 7, 18, 0, 0, 5957, 5958, 7, 9, 0, 0, 5958, 5959, 7, 16, 0, 0, 5959, 5960, 7, 13, 0, 0, 5960, 1218, 1, 0, 0, 0, 5961, 5962, 7, 13, 0, 0, 5962, 5963, 7, 10, 0, 0, 5963, 5964, 7, 24, 0, 0, 5964, 5965, 7, 10, 0, 0, 5965, 5966, 7, 5, 0, 0, 5966, 5967, 7, 16, 0, 0, 5967, 1220, 1, 0, 0, 0, 5968, 5969, 7, 13, 0, 0, 5969, 5970, 7, 24, 0, 0, 5970, 5971, 7, 5, 0, 0, 5971, 5972, 7, 12, 0, 0, 5972, 1222, 1, 0, 0, 0, 5973, 5974, 7, 13, 0, 0, 5974, 5975, 7, 16, 0, 0, 5975, 5976, 7, 13, 0, 0, 5976, 5977, 7, 17, 0, 0, 5977, 5978, 7, 15, 0, 0, 5978, 1224, 1, 0, 0, 0, 5979, 5980, 7, 9, 0, 0, 5980, 5981, 7, 24, 0, 0, 5981, 5982, 7, 6, 0, 0, 5982, 5983, 7, 17, 0, 0, 5983, 5984, 7, 16, 0, 0, 5984, 5985, 5, 95, 0, 0, 5985, 5986, 7, 24, 0, 0, 5986, 5987, 7, 5, 0, 0, 5987, 5988, 7, 13, 0, 0, 5988, 5989, 7, 16, 0, 0, 5989, 1226, 1, 0, 0, 0, 5990, 5991, 7, 9, 0, 0, 5991, 5992, 7, 16, 0, 0, 5992, 5993, 7, 5, 0, 0, 5993, 5994, 7, 13, 0, 0, 5994, 5995, 7, 16, 0, 0, 5995, 5996, 7, 9, 0, 0, 5996, 5997, 5, 95, 0, 0, 5997, 5998, 7, 28, 0, 0, 5998, 5999, 7, 17, 0, 0, 5999, 6000, 7, 16, 0, 0, 6000, 6001, 7, 20, 0, 0, 6001, 1228, 1, 0, 0, 0, 6002, 6003, 7, 9, 0, 0, 6003, 6004, 7, 16, 0, 0, 6004, 6005, 7, 13, 0, 0, 6005, 6006, 7, 17, 0, 0, 6006, 6007, 7, 7, 0, 0, 6007, 6008, 7, 23, 0, 0, 6008, 6009, 5, 95, 0, 0, 6009, 6010, 7, 16, 0, 0, 6010, 6011, 7, 19, 0, 0, 6011, 6012, 5, 95, 0, 0, 6012, 6013, 7, 5, 0, 0, 6013, 6014, 7, 13, 0, 0, 6014, 6015, 7, 13, 0, 0, 6015, 6016, 7, 5, 0, 0, 6016, 6017, 7, 8, 0, 0, 6017, 1230, 1, 0, 0, 0, 6018, 6019, 7, 9, 0, 0, 6019, 6020, 7, 16, 0, 0, 6020, 6021, 7, 13, 0, 0, 6021, 6022, 7, 17, 0, 0, 6022, 6023, 7, 7, 0, 0, 6023, 6024, 7, 23, 0, 0, 6024, 6025, 5, 95, 0, 0, 6025, 6026, 7, 16, 0, 0, 6026, 6027, 7, 19, 0, 0, 6027, 6028, 5, 95, 0, 0, 6028, 6029, 7, 16, 0, 0, 6029, 6030, 7, 5, 0, 0, 6030, 6031, 7, 18, 0, 0, 6031, 6032, 7, 6, 0, 0, 6032, 6033, 7, 10, 0, 0, 6033, 1232, 1, 0, 0, 0, 6034, 6035, 7, 9, 0, 0, 6035, 6036, 7, 16, 0, 0, 6036, 6037, 7, 13, 0, 0, 6037, 6038, 7, 24, 0, 0, 6038, 6039, 7, 19, 0, 0, 6039, 6040, 7, 9, 0, 0, 6040, 1234, 1, 0, 0, 0, 6041, 6042, 7, 9, 0, 0, 6042, 6043, 7, 22, 0, 0, 6043, 6044, 7, 18, 0, 0, 6044, 6045, 7, 9, 0, 0, 6045, 6046, 7, 16, 0, 0, 6046, 6047, 7, 13, 0, 0, 6047, 1236, 1, 0, 0, 0, 6048, 6049, 7, 16, 0, 0, 6049, 6050, 7, 19, 0, 0, 6050, 6051, 5, 95, 0, 0, 6051, 6052, 7, 5, 0, 0, 6052, 6053, 7, 9, 0, 0, 6053, 6054, 7, 14, 0, 0, 6054, 6055, 7, 17, 0, 0, 6055, 6056, 7, 17, 0, 0, 6056, 1238, 1, 0, 0, 0, 6057, 6058, 7, 16, 0, 0, 6058, 6059, 7, 19, 0, 0, 6059, 6060, 5, 95, 0, 0, 6060, 6061, 7, 20, 0, 0, 6061, 6062, 7, 10, 0, 0, 6062, 6063, 7, 26, 0, 0, 6063, 1240, 1, 0, 0, 0, 6064, 6065, 7, 16, 0, 0, 6065, 6066, 7, 13, 0, 0, 6066, 6067, 7, 5, 0, 0, 6067, 6068, 7, 7, 0, 0, 6068, 6069, 7, 9, 0, 0, 6069, 6070, 7, 6, 0, 0, 6070, 6071, 7, 5, 0, 0, 6071, 6072, 7, 16, 0, 0, 6072, 6073, 7, 10, 0, 0, 6073, 1242, 1, 0, 0, 0, 6074, 6075, 7, 22, 0, 0, 6075, 6076, 7, 7, 0, 0, 6076, 6077, 7, 17, 0, 0, 6077, 6078, 7, 9, 0, 0, 6078, 6079, 7, 16, 0, 0, 6079, 6080, 7, 13, 0, 0, 6080, 1244, 1, 0, 0, 0, 6081, 6082, 7, 5, 0, 0, 6082, 6083, 7, 23, 0, 0, 6083, 6084, 7, 10, 0, 0, 6084, 1246, 1, 0, 0, 0, 6085, 6086, 7, 14, 0, 0, 6086, 6087, 7, 6, 0, 0, 6087, 6088, 7, 19, 0, 0, 6088, 6089, 7, 14, 0, 0, 6089, 6090, 7, 21, 0, 0, 6090, 6091, 5, 95, 0, 0, 6091, 6092, 7, 16, 0, 0, 6092, 6093, 7, 17, 0, 0, 6093, 6094, 7, 15, 0, 0, 6094, 6095, 7, 10, 0, 0, 6095, 6096, 7, 9, 0, 0, 6096, 6097, 7, 16, 0, 0, 6097, 6098, 7, 5, 0, 0, 6098, 6099, 7, 15, 0, 0, 6099, 6100, 7, 24, 0, 0, 6100, 1248, 1, 0, 0, 0, 6101, 6102, 7, 12, 0, 0, 6102, 6103, 7, 5, 0, 0, 6103, 6104, 7, 16, 0, 0, 6104, 6105, 7, 10, 0, 0, 6105, 6106, 5, 95, 0, 0, 6106, 6107, 7, 18, 0, 0, 6107, 6108, 7, 17, 0, 0, 6108, 6109, 7, 7, 0, 0, 6109, 1250, 1, 0, 0, 0, 6110, 6111, 7, 12, 0, 0, 6111, 6112, 7, 5, 0, 0, 6112, 6113, 7, 16, 0, 0, 6113, 6114, 7, 10, 0, 0, 6114, 6115, 5, 95, 0, 0, 6115, 6116, 7, 24, 0, 0, 6116, 6117, 7, 5, 0, 0, 6117, 6118, 7, 13, 0, 0, 6118, 6119, 7, 16, 0, 0, 6119, 1252, 1, 0, 0, 0, 6120, 6121, 7, 12, 0, 0, 6121, 6122, 7, 5, 0, 0, 6122, 6123, 7, 16, 0, 0, 6123, 6124, 7, 10, 0, 0, 6124, 6125, 5, 95, 0, 0, 6125, 6126, 7, 16, 0, 0, 6126, 6127, 7, 13, 0, 0, 6127, 6128, 7, 22, 0, 0, 6128, 6129, 7, 7, 0, 0, 6129, 6130, 7, 14, 0, 0, 6130, 1254, 1, 0, 0, 0, 6131, 6132, 7, 17, 0, 0, 6132, 6133, 7, 9, 0, 0, 6133, 6134, 7, 25, 0, 0, 6134, 6135, 7, 17, 0, 0, 6135, 6136, 7, 7, 0, 0, 6136, 6137, 7, 17, 0, 0, 6137, 6138, 7, 16, 0, 0, 6138, 6139, 7, 10, 0, 0, 6139, 1256, 1, 0, 0, 0, 6140, 6141, 7, 30, 0, 0, 6141, 6142, 7, 22, 0, 0, 6142, 6143, 7, 9, 0, 0, 6143, 6144, 7, 16, 0, 0, 6144, 6145, 7, 17, 0, 0, 6145, 6146, 7, 25, 0, 0, 6146, 6147, 7, 8, 0, 0, 6147, 6148, 5, 95, 0, 0, 6148, 6149, 7, 12, 0, 0, 6149, 6150, 7, 5, 0, 0, 6150, 6151, 7, 8, 0, 0, 6151, 6152, 7, 9, 0, 0, 6152, 1258, 1, 0, 0, 0, 6153, 6154, 7, 30, 0, 0, 6154, 6155, 7, 22, 0, 0, 6155, 6156, 7, 9, 0, 0, 6156, 6157, 7, 16, 0, 0, 6157, 6158, 7, 17, 0, 0, 6158, 6159, 7, 25, 0, 0, 6159, 6160, 7, 8, 0, 0, 6160, 6161, 5, 95, 0, 0, 6161, 6162, 7, 20, 0, 0, 6162, 6163, 7, 19, 0, 0, 6163, 6164, 7, 22, 0, 0, 6164, 6165, 7, 13, 0, 0, 6165, 6166, 7, 9, 0, 0, 6166, 1260, 1, 0, 0, 0, 6167, 6168, 7, 30, 0, 0, 6168, 6169, 7, 22, 0, 0, 6169, 6170, 7, 9, 0, 0, 6170, 6171, 7, 16, 0, 0, 6171, 6172, 7, 17, 0, 0, 6172, 6173, 7, 25, 0, 0, 6173, 6174, 7, 8, 0, 0, 6174, 6175, 5, 95, 0, 0, 6175, 6176, 7, 17, 0, 0, 6176, 6177, 7, 7, 0, 0, 6177, 6178, 7, 16, 0, 0, 6178, 6179, 7, 10, 0, 0, 6179, 6180, 7, 13, 0, 0, 6180, 6181, 7, 27, 0, 0, 6181, 6182, 7, 5, 0, 0, 6182, 6183, 7, 6, 0, 0, 6183, 1262, 1, 0, 0, 0, 6184, 6185, 7, 15, 0, 0, 6185, 6186, 7, 5, 0, 0, 6186, 6187, 7, 21, 0, 0, 6187, 6188, 7, 10, 0, 0, 6188, 6189, 5, 95, 0, 0, 6189, 6190, 7, 12, 0, 0, 6190, 6191, 7, 5, 0, 0, 6191, 6192, 7, 16, 0, 0, 6192, 6193, 7, 10, 0, 0, 6193, 1264, 1, 0, 0, 0, 6194, 6195, 7, 15, 0, 0, 6195, 6196, 7, 5, 0, 0, 6196, 6197, 7, 21, 0, 0, 6197, 6198, 7, 10, 0, 0, 6198, 6199, 5, 95, 0, 0, 6199, 6200, 7, 17, 0, 0, 6200, 6201, 7, 7, 0, 0, 6201, 6202, 7, 16, 0, 0, 6202, 6203, 7, 10, 0, 0, 6203, 6204, 7, 13, 0, 0, 6204, 6205, 7, 27, 0, 0, 6205, 6206, 7, 5, 0, 0, 6206, 6207, 7, 6, 0, 0, 6207, 1266, 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, 1268, 1, 0, 0, 0, 6218, 6219, 7, 15, 0, 0, 6219, 6220, 7, 5, 0, 0, 6220, 6221, 7, 21, 0, 0, 6221, 6222, 7, 10, 0, 0, 6222, 6223, 5, 95, 0, 0, 6223, 6224, 7, 16, 0, 0, 6224, 6225, 7, 17, 0, 0, 6225, 6226, 7, 15, 0, 0, 6226, 6227, 7, 10, 0, 0, 6227, 6228, 7, 9, 0, 0, 6228, 6229, 7, 16, 0, 0, 6229, 6230, 7, 5, 0, 0, 6230, 6231, 7, 15, 0, 0, 6231, 6232, 7, 24, 0, 0, 6232, 1270, 1, 0, 0, 0, 6233, 6234, 7, 15, 0, 0, 6234, 6235, 7, 5, 0, 0, 6235, 6236, 7, 21, 0, 0, 6236, 6237, 7, 10, 0, 0, 6237, 6238, 5, 95, 0, 0, 6238, 6239, 7, 16, 0, 0, 6239, 6240, 7, 17, 0, 0, 6240, 6241, 7, 15, 0, 0, 6241, 6242, 7, 10, 0, 0, 6242, 6243, 7, 9, 0, 0, 6243, 6244, 7, 16, 0, 0, 6244, 6245, 7, 5, 0, 0, 6245, 6246, 7, 15, 0, 0, 6246, 6247, 7, 24, 0, 0, 6247, 6248, 7, 16, 0, 0, 6248, 6249, 7, 11, 0, 0, 6249, 1272, 1, 0, 0, 0, 6250, 6251, 7, 7, 0, 0, 6251, 6252, 7, 19, 0, 0, 6252, 6253, 7, 28, 0, 0, 6253, 1274, 1, 0, 0, 0, 6254, 6255, 7, 9, 0, 0, 6255, 6256, 7, 16, 0, 0, 6256, 6257, 7, 5, 0, 0, 6257, 6258, 7, 16, 0, 0, 6258, 6259, 7, 10, 0, 0, 6259, 6260, 7, 15, 0, 0, 6260, 6261, 7, 10, 0, 0, 6261, 6262, 7, 7, 0, 0, 6262, 6263, 7, 16, 0, 0, 6263, 6264, 5, 95, 0, 0, 6264, 6265, 7, 16, 0, 0, 6265, 6266, 7, 17, 0, 0, 6266, 6267, 7, 15, 0, 0, 6267, 6268, 7, 10, 0, 0, 6268, 6269, 7, 9, 0, 0, 6269, 6270, 7, 16, 0, 0, 6270, 6271, 7, 5, 0, 0, 6271, 6272, 7, 15, 0, 0, 6272, 6273, 7, 24, 0, 0, 6273, 1276, 1, 0, 0, 0, 6274, 6275, 7, 16, 0, 0, 6275, 6276, 7, 17, 0, 0, 6276, 6277, 7, 15, 0, 0, 6277, 6278, 7, 10, 0, 0, 6278, 6279, 7, 19, 0, 0, 6279, 6280, 7, 25, 0, 0, 6280, 6281, 7, 12, 0, 0, 6281, 6282, 7, 5, 0, 0, 6282, 6283, 7, 8, 0, 0, 6283, 1278, 1, 0, 0, 0, 6284, 6285, 7, 16, 0, 0, 6285, 6286, 7, 13, 0, 0, 6286, 6287, 7, 5, 0, 0, 6287, 6288, 7, 7, 0, 0, 6288, 6289, 7, 9, 0, 0, 6289, 6290, 7, 5, 0, 0, 6290, 6291, 7, 14, 0, 0, 6291, 6292, 7, 16, 0, 0, 6292, 6293, 7, 17, 0, 0, 6293, 6294, 7, 19, 0, 0, 6294, 6295, 7, 7, 0, 0, 6295, 6296, 5, 95, 0, 0, 6296, 6297, 7, 16, 0, 0, 6297, 6298, 7, 17, 0, 0, 6298, 6299, 7, 15, 0, 0, 6299, 6300, 7, 10, 0, 0, 6300, 6301, 7, 9, 0, 0, 6301, 6302, 7, 16, 0, 0, 6302, 6303, 7, 5, 0, 0, 6303, 6304, 7, 15, 0, 0, 6304, 6305, 7, 24, 0, 0, 6305, 1280, 1, 0, 0, 0, 6306, 6307, 7, 16, 0, 0, 6307, 6308, 7, 19, 0, 0, 6308, 6309, 5, 95, 0, 0, 6309, 6310, 7, 16, 0, 0, 6310, 6311, 7, 17, 0, 0, 6311, 6312, 7, 15, 0, 0, 6312, 6313, 7, 10, 0, 0, 6313, 6314, 7, 9, 0, 0, 6314, 6315, 7, 16, 0, 0, 6315, 6316, 7, 5, 0, 0, 6316, 6317, 7, 15, 0, 0, 6317, 6318, 7, 24, 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, 14, 0, 0, 6323, 6324, 7, 20, 0, 0, 6324, 6325, 7, 5, 0, 0, 6325, 6326, 7, 13, 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, 12, 0, 0, 6331, 6332, 7, 5, 0, 0, 6332, 6333, 7, 16, 0, 0, 6333, 6334, 7, 10, 0, 0, 6334, 1286, 1, 0, 0, 0, 6335, 6336, 7, 16, 0, 0, 6336, 6337, 7, 19, 0, 0, 6337, 6338, 5, 95, 0, 0, 6338, 6339, 7, 7, 0, 0, 6339, 6340, 7, 22, 0, 0, 6340, 6341, 7, 15, 0, 0, 6341, 6342, 7, 18, 0, 0, 6342, 6343, 7, 10, 0, 0, 6343, 6344, 7, 13, 0, 0, 6344, 1288, 1, 0, 0, 0, 6345, 6349, 3, 1291, 643, 0, 6346, 6348, 3, 1293, 644, 0, 6347, 6346, 1, 0, 0, 0, 6348, 6351, 1, 0, 0, 0, 6349, 6347, 1, 0, 0, 0, 6349, 6350, 1, 0, 0, 0, 6350, 1290, 1, 0, 0, 0, 6351, 6349, 1, 0, 0, 0, 6352, 6359, 7, 31, 0, 0, 6353, 6354, 7, 32, 0, 0, 6354, 6359, 4, 643, 6, 0, 6355, 6356, 7, 33, 0, 0, 6356, 6357, 7, 34, 0, 0, 6357, 6359, 4, 643, 7, 0, 6358, 6352, 1, 0, 0, 0, 6358, 6353, 1, 0, 0, 0, 6358, 6355, 1, 0, 0, 0, 6359, 1292, 1, 0, 0, 0, 6360, 6363, 3, 1295, 645, 0, 6361, 6363, 5, 36, 0, 0, 6362, 6360, 1, 0, 0, 0, 6362, 6361, 1, 0, 0, 0, 6363, 1294, 1, 0, 0, 0, 6364, 6367, 3, 1291, 643, 0, 6365, 6367, 7, 0, 0, 0, 6366, 6364, 1, 0, 0, 0, 6366, 6365, 1, 0, 0, 0, 6367, 1296, 1, 0, 0, 0, 6368, 6369, 3, 1299, 647, 0, 6369, 6370, 5, 34, 0, 0, 6370, 1298, 1, 0, 0, 0, 6371, 6377, 5, 34, 0, 0, 6372, 6373, 5, 34, 0, 0, 6373, 6376, 5, 34, 0, 0, 6374, 6376, 8, 35, 0, 0, 6375, 6372, 1, 0, 0, 0, 6375, 6374, 1, 0, 0, 0, 6376, 6379, 1, 0, 0, 0, 6377, 6375, 1, 0, 0, 0, 6377, 6378, 1, 0, 0, 0, 6378, 1300, 1, 0, 0, 0, 6379, 6377, 1, 0, 0, 0, 6380, 6381, 3, 1303, 649, 0, 6381, 6382, 5, 34, 0, 0, 6382, 1302, 1, 0, 0, 0, 6383, 6389, 5, 34, 0, 0, 6384, 6385, 5, 34, 0, 0, 6385, 6388, 5, 34, 0, 0, 6386, 6388, 8, 36, 0, 0, 6387, 6384, 1, 0, 0, 0, 6387, 6386, 1, 0, 0, 0, 6388, 6391, 1, 0, 0, 0, 6389, 6387, 1, 0, 0, 0, 6389, 6390, 1, 0, 0, 0, 6390, 1304, 1, 0, 0, 0, 6391, 6389, 1, 0, 0, 0, 6392, 6393, 7, 22, 0, 0, 6393, 6394, 5, 38, 0, 0, 6394, 6395, 3, 1297, 646, 0, 6395, 1306, 1, 0, 0, 0, 6396, 6397, 7, 22, 0, 0, 6397, 6398, 5, 38, 0, 0, 6398, 6399, 3, 1299, 647, 0, 6399, 1308, 1, 0, 0, 0, 6400, 6401, 7, 22, 0, 0, 6401, 6402, 5, 38, 0, 0, 6402, 6403, 3, 1301, 648, 0, 6403, 1310, 1, 0, 0, 0, 6404, 6405, 7, 22, 0, 0, 6405, 6406, 5, 38, 0, 0, 6406, 6407, 3, 1303, 649, 0, 6407, 1312, 1, 0, 0, 0, 6408, 6409, 3, 1315, 655, 0, 6409, 6410, 5, 39, 0, 0, 6410, 1314, 1, 0, 0, 0, 6411, 6417, 5, 39, 0, 0, 6412, 6413, 5, 39, 0, 0, 6413, 6416, 5, 39, 0, 0, 6414, 6416, 8, 37, 0, 0, 6415, 6412, 1, 0, 0, 0, 6415, 6414, 1, 0, 0, 0, 6416, 6419, 1, 0, 0, 0, 6417, 6415, 1, 0, 0, 0, 6417, 6418, 1, 0, 0, 0, 6418, 1316, 1, 0, 0, 0, 6419, 6417, 1, 0, 0, 0, 6420, 6421, 7, 10, 0, 0, 6421, 6422, 5, 39, 0, 0, 6422, 6423, 1, 0, 0, 0, 6423, 6424, 6, 656, 2, 0, 6424, 6425, 6, 656, 3, 0, 6425, 1318, 1, 0, 0, 0, 6426, 6427, 3, 1321, 658, 0, 6427, 6428, 5, 39, 0, 0, 6428, 1320, 1, 0, 0, 0, 6429, 6430, 7, 22, 0, 0, 6430, 6431, 5, 38, 0, 0, 6431, 6432, 3, 1315, 655, 0, 6432, 1322, 1, 0, 0, 0, 6433, 6435, 5, 36, 0, 0, 6434, 6436, 3, 1325, 660, 0, 6435, 6434, 1, 0, 0, 0, 6435, 6436, 1, 0, 0, 0, 6436, 6437, 1, 0, 0, 0, 6437, 6438, 5, 36, 0, 0, 6438, 6439, 6, 659, 4, 0, 6439, 6440, 1, 0, 0, 0, 6440, 6441, 6, 659, 5, 0, 6441, 1324, 1, 0, 0, 0, 6442, 6446, 3, 1291, 643, 0, 6443, 6445, 3, 1295, 645, 0, 6444, 6443, 1, 0, 0, 0, 6445, 6448, 1, 0, 0, 0, 6446, 6444, 1, 0, 0, 0, 6446, 6447, 1, 0, 0, 0, 6447, 1326, 1, 0, 0, 0, 6448, 6446, 1, 0, 0, 0, 6449, 6450, 3, 1329, 662, 0, 6450, 6451, 5, 39, 0, 0, 6451, 1328, 1, 0, 0, 0, 6452, 6453, 7, 18, 0, 0, 6453, 6457, 5, 39, 0, 0, 6454, 6456, 7, 38, 0, 0, 6455, 6454, 1, 0, 0, 0, 6456, 6459, 1, 0, 0, 0, 6457, 6455, 1, 0, 0, 0, 6457, 6458, 1, 0, 0, 0, 6458, 1330, 1, 0, 0, 0, 6459, 6457, 1, 0, 0, 0, 6460, 6461, 3, 1333, 664, 0, 6461, 6462, 5, 39, 0, 0, 6462, 1332, 1, 0, 0, 0, 6463, 6464, 7, 18, 0, 0, 6464, 6465, 3, 1315, 655, 0, 6465, 1334, 1, 0, 0, 0, 6466, 6467, 3, 1337, 666, 0, 6467, 6468, 5, 39, 0, 0, 6468, 1336, 1, 0, 0, 0, 6469, 6470, 7, 26, 0, 0, 6470, 6474, 5, 39, 0, 0, 6471, 6473, 7, 39, 0, 0, 6472, 6471, 1, 0, 0, 0, 6473, 6476, 1, 0, 0, 0, 6474, 6472, 1, 0, 0, 0, 6474, 6475, 1, 0, 0, 0, 6475, 1338, 1, 0, 0, 0, 6476, 6474, 1, 0, 0, 0, 6477, 6478, 3, 1341, 668, 0, 6478, 6479, 5, 39, 0, 0, 6479, 1340, 1, 0, 0, 0, 6480, 6481, 7, 26, 0, 0, 6481, 6482, 3, 1315, 655, 0, 6482, 1342, 1, 0, 0, 0, 6483, 6484, 3, 1349, 672, 0, 6484, 1344, 1, 0, 0, 0, 6485, 6486, 3, 1349, 672, 0, 6486, 6487, 5, 46, 0, 0, 6487, 6488, 5, 46, 0, 0, 6488, 6489, 1, 0, 0, 0, 6489, 6490, 6, 670, 6, 0, 6490, 1346, 1, 0, 0, 0, 6491, 6492, 3, 1349, 672, 0, 6492, 6494, 5, 46, 0, 0, 6493, 6495, 3, 1349, 672, 0, 6494, 6493, 1, 0, 0, 0, 6494, 6495, 1, 0, 0, 0, 6495, 6501, 1, 0, 0, 0, 6496, 6498, 7, 10, 0, 0, 6497, 6499, 7, 1, 0, 0, 6498, 6497, 1, 0, 0, 0, 6498, 6499, 1, 0, 0, 0, 6499, 6500, 1, 0, 0, 0, 6500, 6502, 3, 1349, 672, 0, 6501, 6496, 1, 0, 0, 0, 6501, 6502, 1, 0, 0, 0, 6502, 6520, 1, 0, 0, 0, 6503, 6504, 5, 46, 0, 0, 6504, 6510, 3, 1349, 672, 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, 6511, 3, 1349, 672, 0, 6510, 6505, 1, 0, 0, 0, 6510, 6511, 1, 0, 0, 0, 6511, 6520, 1, 0, 0, 0, 6512, 6513, 3, 1349, 672, 0, 6513, 6515, 7, 10, 0, 0, 6514, 6516, 7, 1, 0, 0, 6515, 6514, 1, 0, 0, 0, 6515, 6516, 1, 0, 0, 0, 6516, 6517, 1, 0, 0, 0, 6517, 6518, 3, 1349, 672, 0, 6518, 6520, 1, 0, 0, 0, 6519, 6491, 1, 0, 0, 0, 6519, 6503, 1, 0, 0, 0, 6519, 6512, 1, 0, 0, 0, 6520, 1348, 1, 0, 0, 0, 6521, 6523, 7, 0, 0, 0, 6522, 6521, 1, 0, 0, 0, 6523, 6524, 1, 0, 0, 0, 6524, 6522, 1, 0, 0, 0, 6524, 6525, 1, 0, 0, 0, 6525, 1350, 1, 0, 0, 0, 6526, 6527, 5, 58, 0, 0, 6527, 6531, 7, 40, 0, 0, 6528, 6530, 7, 41, 0, 0, 6529, 6528, 1, 0, 0, 0, 6530, 6533, 1, 0, 0, 0, 6531, 6529, 1, 0, 0, 0, 6531, 6532, 1, 0, 0, 0, 6532, 1352, 1, 0, 0, 0, 6533, 6531, 1, 0, 0, 0, 6534, 6535, 5, 58, 0, 0, 6535, 6536, 5, 34, 0, 0, 6536, 6544, 1, 0, 0, 0, 6537, 6538, 5, 92, 0, 0, 6538, 6543, 9, 0, 0, 0, 6539, 6540, 5, 34, 0, 0, 6540, 6543, 5, 34, 0, 0, 6541, 6543, 8, 42, 0, 0, 6542, 6537, 1, 0, 0, 0, 6542, 6539, 1, 0, 0, 0, 6542, 6541, 1, 0, 0, 0, 6543, 6546, 1, 0, 0, 0, 6544, 6542, 1, 0, 0, 0, 6544, 6545, 1, 0, 0, 0, 6545, 6547, 1, 0, 0, 0, 6546, 6544, 1, 0, 0, 0, 6547, 6548, 5, 34, 0, 0, 6548, 1354, 1, 0, 0, 0, 6549, 6551, 7, 43, 0, 0, 6550, 6549, 1, 0, 0, 0, 6551, 6552, 1, 0, 0, 0, 6552, 6550, 1, 0, 0, 0, 6552, 6553, 1, 0, 0, 0, 6553, 6554, 1, 0, 0, 0, 6554, 6555, 6, 675, 7, 0, 6555, 1356, 1, 0, 0, 0, 6556, 6558, 5, 13, 0, 0, 6557, 6559, 5, 10, 0, 0, 6558, 6557, 1, 0, 0, 0, 6558, 6559, 1, 0, 0, 0, 6559, 6562, 1, 0, 0, 0, 6560, 6562, 5, 10, 0, 0, 6561, 6556, 1, 0, 0, 0, 6561, 6560, 1, 0, 0, 0, 6562, 6563, 1, 0, 0, 0, 6563, 6564, 6, 676, 7, 0, 6564, 1358, 1, 0, 0, 0, 6565, 6566, 5, 45, 0, 0, 6566, 6567, 5, 45, 0, 0, 6567, 6571, 1, 0, 0, 0, 6568, 6570, 8, 44, 0, 0, 6569, 6568, 1, 0, 0, 0, 6570, 6573, 1, 0, 0, 0, 6571, 6569, 1, 0, 0, 0, 6571, 6572, 1, 0, 0, 0, 6572, 6574, 1, 0, 0, 0, 6573, 6571, 1, 0, 0, 0, 6574, 6575, 6, 677, 7, 0, 6575, 1360, 1, 0, 0, 0, 6576, 6577, 5, 47, 0, 0, 6577, 6578, 5, 42, 0, 0, 6578, 6601, 1, 0, 0, 0, 6579, 6581, 5, 47, 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, 6600, 3, 1361, 678, 0, 6586, 6600, 8, 45, 0, 0, 6587, 6589, 5, 47, 0, 0, 6588, 6587, 1, 0, 0, 0, 6589, 6590, 1, 0, 0, 0, 6590, 6588, 1, 0, 0, 0, 6590, 6591, 1, 0, 0, 0, 6591, 6592, 1, 0, 0, 0, 6592, 6600, 8, 45, 0, 0, 6593, 6595, 5, 42, 0, 0, 6594, 6593, 1, 0, 0, 0, 6595, 6596, 1, 0, 0, 0, 6596, 6594, 1, 0, 0, 0, 6596, 6597, 1, 0, 0, 0, 6597, 6598, 1, 0, 0, 0, 6598, 6600, 8, 45, 0, 0, 6599, 6582, 1, 0, 0, 0, 6599, 6586, 1, 0, 0, 0, 6599, 6588, 1, 0, 0, 0, 6599, 6594, 1, 0, 0, 0, 6600, 6603, 1, 0, 0, 0, 6601, 6599, 1, 0, 0, 0, 6601, 6602, 1, 0, 0, 0, 6602, 6607, 1, 0, 0, 0, 6603, 6601, 1, 0, 0, 0, 6604, 6606, 5, 42, 0, 0, 6605, 6604, 1, 0, 0, 0, 6606, 6609, 1, 0, 0, 0, 6607, 6605, 1, 0, 0, 0, 6607, 6608, 1, 0, 0, 0, 6608, 6610, 1, 0, 0, 0, 6609, 6607, 1, 0, 0, 0, 6610, 6611, 5, 42, 0, 0, 6611, 6612, 5, 47, 0, 0, 6612, 6613, 1, 0, 0, 0, 6613, 6614, 6, 678, 7, 0, 6614, 1362, 1, 0, 0, 0, 6615, 6616, 5, 47, 0, 0, 6616, 6617, 5, 42, 0, 0, 6617, 6642, 1, 0, 0, 0, 6618, 6620, 5, 47, 0, 0, 6619, 6618, 1, 0, 0, 0, 6620, 6623, 1, 0, 0, 0, 6621, 6619, 1, 0, 0, 0, 6621, 6622, 1, 0, 0, 0, 6622, 6624, 1, 0, 0, 0, 6623, 6621, 1, 0, 0, 0, 6624, 6641, 3, 1361, 678, 0, 6625, 6641, 8, 45, 0, 0, 6626, 6628, 5, 47, 0, 0, 6627, 6626, 1, 0, 0, 0, 6628, 6629, 1, 0, 0, 0, 6629, 6627, 1, 0, 0, 0, 6629, 6630, 1, 0, 0, 0, 6630, 6631, 1, 0, 0, 0, 6631, 6639, 8, 45, 0, 0, 6632, 6634, 5, 42, 0, 0, 6633, 6632, 1, 0, 0, 0, 6634, 6635, 1, 0, 0, 0, 6635, 6633, 1, 0, 0, 0, 6635, 6636, 1, 0, 0, 0, 6636, 6637, 1, 0, 0, 0, 6637, 6639, 8, 45, 0, 0, 6638, 6627, 1, 0, 0, 0, 6638, 6633, 1, 0, 0, 0, 6639, 6641, 1, 0, 0, 0, 6640, 6621, 1, 0, 0, 0, 6640, 6625, 1, 0, 0, 0, 6640, 6638, 1, 0, 0, 0, 6641, 6644, 1, 0, 0, 0, 6642, 6640, 1, 0, 0, 0, 6642, 6643, 1, 0, 0, 0, 6643, 6662, 1, 0, 0, 0, 6644, 6642, 1, 0, 0, 0, 6645, 6647, 5, 47, 0, 0, 6646, 6645, 1, 0, 0, 0, 6647, 6648, 1, 0, 0, 0, 6648, 6646, 1, 0, 0, 0, 6648, 6649, 1, 0, 0, 0, 6649, 6663, 1, 0, 0, 0, 6650, 6652, 5, 42, 0, 0, 6651, 6650, 1, 0, 0, 0, 6652, 6653, 1, 0, 0, 0, 6653, 6651, 1, 0, 0, 0, 6653, 6654, 1, 0, 0, 0, 6654, 6663, 1, 0, 0, 0, 6655, 6657, 5, 47, 0, 0, 6656, 6655, 1, 0, 0, 0, 6657, 6660, 1, 0, 0, 0, 6658, 6656, 1, 0, 0, 0, 6658, 6659, 1, 0, 0, 0, 6659, 6661, 1, 0, 0, 0, 6660, 6658, 1, 0, 0, 0, 6661, 6663, 3, 1363, 679, 0, 6662, 6646, 1, 0, 0, 0, 6662, 6651, 1, 0, 0, 0, 6662, 6658, 1, 0, 0, 0, 6662, 6663, 1, 0, 0, 0, 6663, 6664, 1, 0, 0, 0, 6664, 6665, 6, 679, 8, 0, 6665, 1364, 1, 0, 0, 0, 6666, 6678, 5, 92, 0, 0, 6667, 6677, 8, 46, 0, 0, 6668, 6672, 5, 34, 0, 0, 6669, 6671, 8, 47, 0, 0, 6670, 6669, 1, 0, 0, 0, 6671, 6674, 1, 0, 0, 0, 6672, 6670, 1, 0, 0, 0, 6672, 6673, 1, 0, 0, 0, 6673, 6675, 1, 0, 0, 0, 6674, 6672, 1, 0, 0, 0, 6675, 6677, 5, 34, 0, 0, 6676, 6667, 1, 0, 0, 0, 6676, 6668, 1, 0, 0, 0, 6677, 6680, 1, 0, 0, 0, 6678, 6676, 1, 0, 0, 0, 6678, 6679, 1, 0, 0, 0, 6679, 6688, 1, 0, 0, 0, 6680, 6678, 1, 0, 0, 0, 6681, 6685, 5, 34, 0, 0, 6682, 6684, 8, 47, 0, 0, 6683, 6682, 1, 0, 0, 0, 6684, 6687, 1, 0, 0, 0, 6685, 6683, 1, 0, 0, 0, 6685, 6686, 1, 0, 0, 0, 6686, 6689, 1, 0, 0, 0, 6687, 6685, 1, 0, 0, 0, 6688, 6681, 1, 0, 0, 0, 6688, 6689, 1, 0, 0, 0, 6689, 1366, 1, 0, 0, 0, 6690, 6691, 5, 92, 0, 0, 6691, 6692, 5, 92, 0, 0, 6692, 1368, 1, 0, 0, 0, 6693, 6694, 9, 0, 0, 0, 6694, 1370, 1, 0, 0, 0, 6695, 6696, 3, 1375, 685, 0, 6696, 6697, 5, 39, 0, 0, 6697, 6698, 1, 0, 0, 0, 6698, 6699, 6, 683, 9, 0, 6699, 1372, 1, 0, 0, 0, 6700, 6702, 3, 1375, 685, 0, 6701, 6703, 5, 92, 0, 0, 6702, 6701, 1, 0, 0, 0, 6702, 6703, 1, 0, 0, 0, 6703, 6704, 1, 0, 0, 0, 6704, 6705, 5, 0, 0, 1, 6705, 1374, 1, 0, 0, 0, 6706, 6707, 5, 39, 0, 0, 6707, 6730, 5, 39, 0, 0, 6708, 6726, 5, 92, 0, 0, 6709, 6710, 5, 120, 0, 0, 6710, 6727, 7, 39, 0, 0, 6711, 6712, 5, 117, 0, 0, 6712, 6713, 7, 39, 0, 0, 6713, 6714, 7, 39, 0, 0, 6714, 6715, 7, 39, 0, 0, 6715, 6727, 7, 39, 0, 0, 6716, 6717, 5, 85, 0, 0, 6717, 6718, 7, 39, 0, 0, 6718, 6719, 7, 39, 0, 0, 6719, 6720, 7, 39, 0, 0, 6720, 6721, 7, 39, 0, 0, 6721, 6722, 7, 39, 0, 0, 6722, 6723, 7, 39, 0, 0, 6723, 6724, 7, 39, 0, 0, 6724, 6727, 7, 39, 0, 0, 6725, 6727, 8, 48, 0, 0, 6726, 6709, 1, 0, 0, 0, 6726, 6711, 1, 0, 0, 0, 6726, 6716, 1, 0, 0, 0, 6726, 6725, 1, 0, 0, 0, 6727, 6730, 1, 0, 0, 0, 6728, 6730, 8, 49, 0, 0, 6729, 6706, 1, 0, 0, 0, 6729, 6708, 1, 0, 0, 0, 6729, 6728, 1, 0, 0, 0, 6730, 6733, 1, 0, 0, 0, 6731, 6729, 1, 0, 0, 0, 6731, 6732, 1, 0, 0, 0, 6732, 1376, 1, 0, 0, 0, 6733, 6731, 1, 0, 0, 0, 6734, 6735, 3, 1381, 688, 0, 6735, 6736, 5, 39, 0, 0, 6736, 6737, 1, 0, 0, 0, 6737, 6738, 6, 686, 9, 0, 6738, 1378, 1, 0, 0, 0, 6739, 6741, 3, 1381, 688, 0, 6740, 6742, 5, 92, 0, 0, 6741, 6740, 1, 0, 0, 0, 6741, 6742, 1, 0, 0, 0, 6742, 6743, 1, 0, 0, 0, 6743, 6744, 5, 0, 0, 1, 6744, 1380, 1, 0, 0, 0, 6745, 6746, 5, 39, 0, 0, 6746, 6751, 5, 39, 0, 0, 6747, 6748, 5, 92, 0, 0, 6748, 6751, 9, 0, 0, 0, 6749, 6751, 8, 49, 0, 0, 6750, 6745, 1, 0, 0, 0, 6750, 6747, 1, 0, 0, 0, 6750, 6749, 1, 0, 0, 0, 6751, 6754, 1, 0, 0, 0, 6752, 6750, 1, 0, 0, 0, 6752, 6753, 1, 0, 0, 0, 6753, 1382, 1, 0, 0, 0, 6754, 6752, 1, 0, 0, 0, 6755, 6756, 3, 1355, 675, 0, 6756, 6757, 1, 0, 0, 0, 6757, 6758, 6, 689, 10, 0, 6758, 6759, 6, 689, 7, 0, 6759, 1384, 1, 0, 0, 0, 6760, 6761, 3, 1357, 676, 0, 6761, 6762, 1, 0, 0, 0, 6762, 6763, 6, 690, 11, 0, 6763, 6764, 6, 690, 7, 0, 6764, 6765, 6, 690, 12, 0, 6765, 1386, 1, 0, 0, 0, 6766, 6767, 6, 691, 13, 0, 6767, 6768, 1, 0, 0, 0, 6768, 6769, 6, 691, 14, 0, 6769, 6770, 6, 691, 15, 0, 6770, 1388, 1, 0, 0, 0, 6771, 6772, 3, 1355, 675, 0, 6772, 6773, 1, 0, 0, 0, 6773, 6774, 6, 692, 10, 0, 6774, 6775, 6, 692, 7, 0, 6775, 1390, 1, 0, 0, 0, 6776, 6777, 3, 1357, 676, 0, 6777, 6778, 1, 0, 0, 0, 6778, 6779, 6, 693, 11, 0, 6779, 6780, 6, 693, 7, 0, 6780, 1392, 1, 0, 0, 0, 6781, 6782, 5, 39, 0, 0, 6782, 6783, 1, 0, 0, 0, 6783, 6784, 6, 694, 2, 0, 6784, 6785, 6, 694, 16, 0, 6785, 1394, 1, 0, 0, 0, 6786, 6787, 6, 695, 17, 0, 6787, 6788, 1, 0, 0, 0, 6788, 6789, 6, 695, 14, 0, 6789, 6790, 6, 695, 15, 0, 6790, 1396, 1, 0, 0, 0, 6791, 6793, 8, 50, 0, 0, 6792, 6791, 1, 0, 0, 0, 6793, 6794, 1, 0, 0, 0, 6794, 6792, 1, 0, 0, 0, 6794, 6795, 1, 0, 0, 0, 6795, 6804, 1, 0, 0, 0, 6796, 6800, 5, 36, 0, 0, 6797, 6799, 8, 50, 0, 0, 6798, 6797, 1, 0, 0, 0, 6799, 6802, 1, 0, 0, 0, 6800, 6798, 1, 0, 0, 0, 6800, 6801, 1, 0, 0, 0, 6801, 6804, 1, 0, 0, 0, 6802, 6800, 1, 0, 0, 0, 6803, 6792, 1, 0, 0, 0, 6803, 6796, 1, 0, 0, 0, 6804, 1398, 1, 0, 0, 0, 6805, 6807, 5, 36, 0, 0, 6806, 6808, 3, 1325, 660, 0, 6807, 6806, 1, 0, 0, 0, 6807, 6808, 1, 0, 0, 0, 6808, 6809, 1, 0, 0, 0, 6809, 6810, 5, 36, 0, 0, 6810, 6811, 1, 0, 0, 0, 6811, 6812, 4, 697, 8, 0, 6812, 6813, 6, 697, 18, 0, 6813, 6814, 1, 0, 0, 0, 6814, 6815, 6, 697, 15, 0, 6815, 1400, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1468, 1474, 1476, 1481, 1485, 1487, 1490, 1499, 1501, 1506, 1511, 1513, 6349, 6358, 6362, 6366, 6375, 6377, 6387, 6389, 6415, 6417, 6435, 6446, 6457, 6474, 6494, 6498, 6501, 6507, 6510, 6515, 6519, 6524, 6531, 6542, 6544, 6552, 6558, 6561, 6571, 6582, 6590, 6596, 6599, 6601, 6607, 6621, 6629, 6635, 6638, 6640, 6642, 6648, 6653, 6658, 6662, 6672, 6676, 6678, 6685, 6688, 6702, 6726, 6729, 6731, 6741, 6750, 6752, 6794, 6800, 6803, 6807, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 659, 1, 5, 4, 0, 1, 670, 2, 0, 1, 0, 1, 679, 3, 2, 2, 0, 7, 666, 0, 7, 667, 0, 2, 3, 0, 1, 691, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 695, 5, 1, 697, 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 21b525e101..0000000000 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.java +++ /dev/null @@ -1,5263 +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.2 - - -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.2", 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, ZVIEW=97, - TRAILING=98, TRUE_P=99, UNION=100, UNIQUE=101, USER=102, USING=103, VARIADIC=104, - WHEN=105, WHERE=106, WINDOW=107, WITH=108, AUTHORIZATION=109, BINARY=110, - COLLATION=111, CONCURRENTLY=112, CROSS=113, CURRENT_SCHEMA=114, FREEZE=115, - FULL=116, ILIKE=117, INNER_P=118, IS=119, ISNULL=120, JOIN=121, LEFT=122, - LIKE=123, NATURAL=124, NOTNULL=125, OUTER_P=126, OVER=127, OVERLAPS=128, - RIGHT=129, SIMILAR=130, VERBOSE=131, ABORT_P=132, ABSOLUTE_P=133, ACCESS=134, - ACTION=135, ADD_P=136, ADMIN=137, AFTER=138, AGGREGATE=139, ALSO=140, - ALTER=141, ALWAYS=142, ASSERTION=143, ASSIGNMENT=144, AT=145, ATTRIBUTE=146, - BACKWARD=147, BEFORE=148, BEGIN_P=149, BY=150, CACHE=151, CALLED=152, - CASCADE=153, CASCADED=154, CATALOG=155, CHAIN=156, CHARACTERISTICS=157, - CHECKPOINT=158, CLASS=159, CLOSE=160, CLUSTER=161, COMMENT=162, COMMENTS=163, - COMMIT=164, COMMITTED=165, CONFIGURATION=166, CONNECTION=167, CONSTRAINTS=168, - CONTENT_P=169, CONTINUE_P=170, CONVERSION_P=171, COPY=172, COST=173, CSV=174, - CURSOR=175, CYCLE=176, DATA_P=177, DATABASE=178, DAY_P=179, DEALLOCATE=180, - DECLARE=181, DEFAULTS=182, DEFERRED=183, DEFINER=184, DELETE_P=185, DELIMITER=186, - DELIMITERS=187, DICTIONARY=188, DISABLE_P=189, DISCARD=190, DOCUMENT_P=191, - DOMAIN_P=192, DOUBLE_P=193, DROP=194, EACH=195, ENABLE_P=196, ENCODING=197, - ENCRYPTED=198, ENUM_P=199, ESCAPE=200, EVENT=201, EXCLUDE=202, EXCLUDING=203, - EXCLUSIVE=204, EXECUTE=205, EXPLAIN=206, EXTENSION=207, EXTERNAL=208, - FAMILY=209, FIRST_P=210, FOLLOWING=211, FORCE=212, FORWARD=213, FUNCTION=214, - FUNCTIONS=215, GLOBAL=216, GRANTED=217, HANDLER=218, HEADER_P=219, HOLD=220, - HOUR_P=221, IDENTITY_P=222, IF_P=223, IMMEDIATE=224, IMMUTABLE=225, IMPLICIT_P=226, - INCLUDING=227, INCREMENT=228, INDEX=229, INDEXES=230, INHERIT=231, INHERITS=232, - INLINE_P=233, INSENSITIVE=234, INSERT=235, INSTEAD=236, INVOKER=237, ISOLATION=238, - KEY=239, LABEL=240, LANGUAGE=241, LARGE_P=242, LAST_P=243, LEAKPROOF=244, - LEVEL=245, LISTEN=246, LOAD=247, LOCAL=248, LOCATION=249, LOCK_P=250, - MAPPING=251, MATCH=252, MATCHED=253, MATERIALIZED=254, MAXVALUE=255, MERGE=256, - MINUTE_P=257, MINVALUE=258, MODE=259, MONTH_P=260, MOVE=261, NAME_P=262, - NAMES=263, NEXT=264, NO=265, NOTHING=266, NOTIFY=267, NOWAIT=268, NULLS_P=269, - OBJECT_P=270, OF=271, OFF=272, OIDS=273, OPERATOR=274, OPTION=275, OPTIONS=276, - OWNED=277, OWNER=278, PARSER=279, PARTIAL=280, PARTITION=281, PASSING=282, - PASSWORD=283, PLANS=284, PRECEDING=285, PREPARE=286, PREPARED=287, PRESERVE=288, - PRIOR=289, PRIVILEGES=290, PROCEDURAL=291, PROCEDURE=292, PROGRAM=293, - QUOTE=294, RANGE=295, READ=296, REASSIGN=297, RECHECK=298, RECURSIVE=299, - REF=300, REFRESH=301, REINDEX=302, RELATIVE_P=303, RELEASE=304, RENAME=305, - REPEATABLE=306, REPLACE=307, REPLICA=308, RESET=309, RESTART=310, RESTRICT=311, - RETURNS=312, REVOKE=313, ROLE=314, ROLLBACK=315, ROWS=316, RULE=317, SAVEPOINT=318, - SCHEMA=319, SCROLL=320, SEARCH=321, SECOND_P=322, SECURITY=323, SEQUENCE=324, - SEQUENCES=325, SERIALIZABLE=326, SERVER=327, SESSION=328, SET=329, SHARE=330, - SHOW=331, SIMPLE=332, SNAPSHOT=333, STABLE=334, STANDALONE_P=335, START=336, - STATEMENT=337, STATISTICS=338, STDIN=339, STDOUT=340, STORAGE=341, STRICT_P=342, - STRIP_P=343, SYSID=344, SYSTEM_P=345, TABLES=346, TABLESPACE=347, TEMP=348, - TEMPLATE=349, TEMPORARY=350, TEXT_P=351, TRANSACTION=352, TRIGGER=353, - TRUNCATE=354, TRUSTED=355, TYPE_P=356, TYPES_P=357, UNBOUNDED=358, UNCOMMITTED=359, - UNENCRYPTED=360, UNKNOWN=361, UNLISTEN=362, UNLOGGED=363, UNTIL=364, UPDATE=365, - VACUUM=366, VALID=367, VALIDATE=368, VALIDATOR=369, VARYING=370, VERSION_P=371, - VIEW=372, VOLATILE=373, WHITESPACE_P=374, WITHOUT=375, WORK=376, WRAPPER=377, - WRITE=378, XML_P=379, YEAR_P=380, YES_P=381, ZONE=382, BETWEEN=383, BIGINT=384, - BIT=385, BOOLEAN_P=386, CHAR_P=387, CHARACTER=388, COALESCE=389, DEC=390, - DECIMAL_P=391, EXISTS=392, EXTRACT=393, FLOAT_P=394, GREATEST=395, INOUT=396, - INT_P=397, INTEGER=398, INTERVAL=399, LEAST=400, NATIONAL=401, NCHAR=402, - NONE=403, NULLIF=404, NUMERIC=405, OVERLAY=406, POSITION=407, PRECISION=408, - REAL=409, ROW=410, SETOF=411, SMALLINT=412, SUBSTRING=413, TIME=414, TIMESTAMP=415, - TREAT=416, TRIM=417, VALUES=418, VARCHAR=419, XMLATTRIBUTES=420, XMLCOMMENT=421, - XMLAGG=422, XML_IS_WELL_FORMED=423, XML_IS_WELL_FORMED_DOCUMENT=424, XML_IS_WELL_FORMED_CONTENT=425, - XPATH=426, XPATH_EXISTS=427, XMLCONCAT=428, XMLELEMENT=429, XMLEXISTS=430, - XMLFOREST=431, XMLPARSE=432, XMLPI=433, XMLROOT=434, XMLSERIALIZE=435, - CALL=436, CURRENT_P=437, ATTACH=438, DETACH=439, EXPRESSION=440, GENERATED=441, - LOGGED=442, STORED=443, INCLUDE=444, ROUTINE=445, TRANSFORM=446, IMPORT_P=447, - POLICY=448, METHOD=449, REFERENCING=450, NEW=451, OLD=452, VALUE_P=453, - SUBSCRIPTION=454, PUBLICATION=455, OUT_P=456, END_P=457, ROUTINES=458, - SCHEMAS=459, PROCEDURES=460, INPUT_P=461, SUPPORT=462, PARALLEL=463, SQL_P=464, - DEPENDS=465, OVERRIDING=466, CONFLICT=467, SKIP_P=468, LOCKED=469, TIES=470, - ROLLUP=471, CUBE=472, GROUPING=473, SETS=474, TABLESAMPLE=475, ORDINALITY=476, - XMLTABLE=477, COLUMNS=478, XMLNAMESPACES=479, ROWTYPE=480, NORMALIZED=481, - WITHIN=482, FILTER=483, GROUPS=484, OTHERS=485, NFC=486, NFD=487, NFKC=488, - NFKD=489, UESCAPE=490, VIEWS=491, NORMALIZE=492, DUMP=493, PRINT_STRICT_PARAMS=494, - VARIABLE_CONFLICT=495, ERROR=496, USE_VARIABLE=497, USE_COLUMN=498, ALIAS=499, - CONSTANT=500, PERFORM=501, GET=502, DIAGNOSTICS=503, STACKED=504, ELSIF=505, - WHILE=506, REVERSE=507, FOREACH=508, SLICE=509, EXIT=510, RETURN=511, - QUERY=512, RAISE=513, SQLSTATE=514, DEBUG=515, LOG=516, INFO=517, NOTICE=518, - WARNING=519, EXCEPTION=520, ASSERT=521, LOOP=522, OPEN=523, ABS=524, CBRT=525, - CEIL=526, CEILING=527, DEGREES=528, DIV=529, EXP=530, FACTORIAL=531, FLOOR=532, - GCD=533, LCM=534, LN=535, LOG10=536, MIN_SCALE=537, MOD=538, PI=539, POWER=540, - RADIANS=541, ROUND=542, SCALE=543, SIGN=544, SQRT=545, TRIM_SCALE=546, - TRUNC=547, WIDTH_BUCKET=548, RANDOM=549, SETSEED=550, ACOS=551, ACOSD=552, - ASIN=553, ASIND=554, ATAN=555, ATAND=556, ATAN2=557, ATAN2D=558, COS=559, - COSD=560, COT=561, COTD=562, SIN=563, SIND=564, TAN=565, TAND=566, SINH=567, - COSH=568, TANH=569, ASINH=570, ACOSH=571, ATANH=572, BIT_LENGTH=573, CHAR_LENGTH=574, - CHARACTER_LENGTH=575, LOWER=576, OCTET_LENGTH=577, UPPER=578, ASCII=579, - BTRIM=580, CHR=581, CONCAT=582, CONCAT_WS=583, FORMAT=584, INITCAP=585, - LENGTH=586, LPAD=587, LTRIM=588, MD5=589, PARSE_IDENT=590, PG_CLIENT_ENCODING=591, - QUOTE_IDENT=592, QUOTE_LITERAL=593, QUOTE_NULLABLE=594, REGEXP_COUNT=595, - REGEXP_INSTR=596, REGEXP_LIKE=597, REGEXP_MATCH=598, REGEXP_MATCHES=599, - REGEXP_REPLACE=600, REGEXP_SPLIT_TO_ARRAY=601, REGEXP_SPLIT_TO_TABLE=602, - REGEXP_SUBSTR=603, REPEAT=604, RPAD=605, RTRIM=606, SPLIT_PART=607, STARTS_WITH=608, - STRING_TO_ARRAY=609, STRING_TO_TABLE=610, STRPOS=611, SUBSTR=612, TO_ASCII=613, - TO_HEX=614, TRANSLATE=615, UNISTR=616, AGE=617, CLOCK_TIMESTAMP=618, DATE_BIN=619, - DATE_PART=620, DATE_TRUNC=621, ISFINITE=622, JUSTIFY_DAYS=623, JUSTIFY_HOURS=624, - JUSTIFY_INTERVAL=625, MAKE_DATE=626, MAKE_INTERVAL=627, MAKE_TIME=628, - MAKE_TIMESTAMP=629, MAKE_TIMESTAMPTZ=630, NOW=631, STATEMENT_TIMESTAMP=632, - TIMEOFDAY=633, TRANSACTION_TIMESTAMP=634, TO_TIMESTAMP=635, TO_CHAR=636, - TO_DATE=637, TO_NUMBER=638, Identifier=639, QuotedIdentifier=640, UnterminatedQuotedIdentifier=641, - InvalidQuotedIdentifier=642, InvalidUnterminatedQuotedIdentifier=643, - UnicodeQuotedIdentifier=644, UnterminatedUnicodeQuotedIdentifier=645, - InvalidUnicodeQuotedIdentifier=646, InvalidUnterminatedUnicodeQuotedIdentifier=647, - StringConstant=648, UnterminatedStringConstant=649, UnicodeEscapeStringConstant=650, - UnterminatedUnicodeEscapeStringConstant=651, BeginDollarStringConstant=652, - BinaryStringConstant=653, UnterminatedBinaryStringConstant=654, InvalidBinaryStringConstant=655, - InvalidUnterminatedBinaryStringConstant=656, HexadecimalStringConstant=657, - UnterminatedHexadecimalStringConstant=658, InvalidHexadecimalStringConstant=659, - InvalidUnterminatedHexadecimalStringConstant=660, Integral=661, NumericFail=662, - Numeric=663, PLSQLVARIABLENAME=664, PLSQLIDENTIFIER=665, Whitespace=666, - Newline=667, LineComment=668, BlockComment=669, UnterminatedBlockComment=670, - MetaCommand=671, EndMetaCommand=672, ErrorCharacter=673, EscapeStringConstant=674, - UnterminatedEscapeStringConstant=675, InvalidEscapeStringConstant=676, - InvalidUnterminatedEscapeStringConstant=677, AfterEscapeStringConstantMode_NotContinued=678, - AfterEscapeStringConstantWithNewlineMode_NotContinued=679, DollarText=680, - EndDollarStringConstant=681, AfterEscapeStringConstantWithNewlineMode_Continued=682; - 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", "ZVIEW", "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'", - "'ZVIEW'", "'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", "ZVIEW", "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 659: - BeginDollarStringConstant_action((RuleContext)_localctx, actionIndex); - break; - case 670: - NumericFail_action((RuleContext)_localctx, actionIndex); - break; - case 679: - UnterminatedBlockComment_action((RuleContext)_localctx, actionIndex); - break; - case 691: - AfterEscapeStringConstantMode_NotContinued_action((RuleContext)_localctx, actionIndex); - break; - case 695: - AfterEscapeStringConstantWithNewlineMode_NotContinued_action((RuleContext)_localctx, actionIndex); - break; - case 697: - 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 643: - return IdentifierStartChar_sempred((RuleContext)_localctx, predIndex); - case 697: - 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\u02aa\u1aa0\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\u0002\u02b9\u0007\u02b9"+ - "\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\u05bb\b\u001b\u000b\u001b\f\u001b"+ - "\u05bc\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05c3"+ - "\b\u001c\u000b\u001c\f\u001c\u05c4\u0001\u001c\u0001\u001c\u0001\u001c"+ - "\u0003\u001c\u05ca\b\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05ce\b"+ - "\u001c\u000b\u001c\f\u001c\u05cf\u0001\u001c\u0003\u001c\u05d3\b\u001c"+ - "\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d"+ - "\u0001\u001d\u0005\u001d\u05dc\b\u001d\n\u001d\f\u001d\u05df\t\u001d\u0001"+ - "\u001d\u0001\u001d\u0003\u001d\u05e3\b\u001d\u0001\u001d\u0001\u001d\u0001"+ - "\u001d\u0004\u001d\u05e8\b\u001d\u000b\u001d\f\u001d\u05e9\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\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001d\u0001"+ - "d\u0001d\u0001d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001e\u0001"+ - "e\u0001e\u0001e\u0001e\u0001f\u0001f\u0001f\u0001f\u0001f\u0001g\u0001"+ - "g\u0001g\u0001g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001"+ - "h\u0001h\u0001i\u0001i\u0001i\u0001i\u0001i\u0001j\u0001j\u0001j\u0001"+ - "j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+ - "k\u0001k\u0001l\u0001l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001m\u0001"+ - "m\u0001m\u0001m\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001"+ - "o\u0001o\u0001o\u0001o\u0001o\u0001p\u0001p\u0001p\u0001p\u0001p\u0001"+ - "p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001q\u0001"+ - "q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001"+ - "r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001s\u0001s\u0001"+ - "s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001t\u0001"+ - "t\u0001t\u0001t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001u\u0001"+ - "u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001"+ - "v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001w\u0001w\u0001w\u0001"+ - "w\u0001w\u0001x\u0001x\u0001x\u0001x\u0001x\u0001x\u0001y\u0001y\u0001"+ - "y\u0001y\u0001y\u0001y\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\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\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\u0083\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\u0086\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\u0088\u0001\u0088\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\u008a"+ - "\u0001\u008a\u0001\u008a\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\u008e\u0001\u008e\u0001\u008e\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\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\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\u0093"+ - "\u0001\u0093\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\u0095\u0001\u0096\u0001\u0096\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\u0097"+ - "\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098"+ - "\u0001\u0099\u0001\u0099\u0001\u0099\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\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\u009d\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\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\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\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\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\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\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\u00ab\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\u00ac\u0001\u00ac\u0001\u00ac\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\u00ae\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\u00b0\u0001\u00b1"+ - "\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b2\u0001\u00b2\u0001\u00b2"+ - "\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b3\u0001\u00b3"+ - "\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\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\u00b5"+ - "\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\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\u00b9\u0001\u00b9\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\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\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\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\u00c2\u0001\u00c2\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\u00c4"+ - "\u0001\u00c4\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5"+ - "\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\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\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9"+ - "\u0001\u00c9\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\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\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\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\u00d2\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\u00d4\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\u00d6\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\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\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\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dd\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\u00de\u0001\u00de"+ - "\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\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\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\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\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\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\u00eb\u0001\u00eb\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\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\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\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\u00f1\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\u00f3\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\u00f5"+ - "\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f6"+ - "\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f7\u0001\u00f7"+ - "\u0001\u00f7\u0001\u00f7\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\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\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc"+ - "\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\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\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\u0101\u0001\u0101\u0001\u0101\u0001\u0101"+ - "\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\u0102\u0001\u0102\u0001\u0102"+ - "\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\u0105\u0001\u0105\u0001\u0105\u0001\u0105\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\u0109"+ - "\u0001\u0109\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a"+ - "\u0001\u010a\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010b"+ - "\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010d\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\u010f\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110"+ - "\u0001\u0110\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111"+ - "\u0001\u0111\u0001\u0111\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0113"+ - "\u0001\u0113\u0001\u0113\u0001\u0113\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\u0115\u0001\u0115\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\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\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\u011c"+ - "\u0001\u011c\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\u011e"+ - "\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\u0120\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\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\u0123"+ - "\u0001\u0123\u0001\u0123\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\u0126"+ - "\u0001\u0127\u0001\u0127\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\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\u012a"+ - "\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\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\u012e\u0001\u012e\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\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\u0135\u0001\u0135"+ - "\u0001\u0135\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\u0137"+ - "\u0001\u0137\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\u013a\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\u013b\u0001\u013c\u0001\u013c\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\u013f"+ - "\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\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\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\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\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\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\u014b"+ - "\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b"+ - "\u0001\u014b\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014d"+ - "\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\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\u0150"+ - "\u0001\u0150\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\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\u0154\u0001\u0154\u0001\u0154"+ - "\u0001\u0155\u0001\u0155\u0001\u0155\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\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\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\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\u015e"+ - "\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\u0161\u0001\u0161\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\u0163\u0001\u0163\u0001\u0163"+ - "\u0001\u0163\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\u0165"+ - "\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\u0166\u0001\u0166\u0001\u0166\u0001\u0167\u0001\u0167"+ - "\u0001\u0167\u0001\u0167\u0001\u0167\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\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\u016b\u0001\u016b\u0001\u016b"+ - "\u0001\u016b\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\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\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\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\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\u0176\u0001\u0176\u0001\u0176\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\u0179\u0001\u0179\u0001\u0179\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\u017a"+ - "\u0001\u017a\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b"+ - "\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c"+ - "\u0001\u017c\u0001\u017c\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d"+ - "\u0001\u017d\u0001\u017d\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e"+ - "\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u0180"+ - "\u0001\u0180\u0001\u0180\u0001\u0180\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\u0182\u0001\u0183\u0001\u0183"+ - "\u0001\u0183\u0001\u0183\u0001\u0183\u0001\u0183\u0001\u0183\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\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\u0187\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188"+ - "\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0189"+ - "\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u018a\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\u018c\u0001\u018c\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\u018e\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\u0190"+ - "\u0001\u0190\u0001\u0190\u0001\u0190\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\u0192"+ - "\u0001\u0192\u0001\u0192\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\u0194\u0001\u0194\u0001\u0194\u0001\u0195"+ - "\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\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\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\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\u019b"+ - "\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019c\u0001\u019c"+ - "\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019d\u0001\u019d\u0001\u019d"+ - "\u0001\u019d\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\u01a0\u0001\u01a0"+ - "\u0001\u01a0\u0001\u01a0\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\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a3"+ - "\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\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\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\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\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\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\u01ab\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac"+ - "\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac"+ - "\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac"+ - "\u0001\u01ac\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\u01ae"+ - "\u0001\u01ae\u0001\u01ae\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\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\u01b2\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\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\u01b6"+ - "\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\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\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\u01bb\u0001\u01bb\u0001\u01bb"+ - "\u0001\u01bb\u0001\u01bc\u0001\u01bc\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\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\u01c1"+ - "\u0001\u01c1\u0001\u01c1\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\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5"+ - "\u0001\u01c5\u0001\u01c5\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\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\u01c9\u0001\u01ca\u0001\u01ca\u0001\u01ca"+ - "\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\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cd"+ - "\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\u01cf\u0001\u01cf"+ - "\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\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\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3"+ - "\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\u01d5"+ - "\u0001\u01d5\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6"+ - "\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d7\u0001\u01d7"+ - "\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d8\u0001\u01d8\u0001\u01d8"+ - "\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d9\u0001\u01d9"+ - "\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01da\u0001\u01da\u0001\u01da"+ - "\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\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\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\u01de\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\u01e0\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\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\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\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\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e9\u0001\u01e9"+ - "\u0001\u01e9\u0001\u01e9\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\u01ed\u0001\u01ed"+ - "\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\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\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\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\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\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4"+ - "\u0001\u01f5\u0001\u01f5\u0001\u01f5\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\u01f6\u0001\u01f6\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\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa"+ - "\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\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\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\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\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\u0204\u0001\u0204\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205"+ - "\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0206"+ - "\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0207"+ - "\u0001\u0207\u0001\u0207\u0001\u0207\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\u020a\u0001\u020a\u0001\u020a\u0001\u020b"+ - "\u0001\u020b\u0001\u020b\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\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\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\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\u0213\u0001\u0213"+ - "\u0001\u0213\u0001\u0213\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\u0216\u0001\u0216\u0001\u0216\u0001\u0216"+ - "\u0001\u0216\u0001\u0216\u0001\u0217\u0001\u0217\u0001\u0217\u0001\u0217"+ - "\u0001\u0217\u0001\u0217\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218"+ - "\u0001\u0219\u0001\u0219\u0001\u0219\u0001\u0219\u0001\u021a\u0001\u021a"+ - "\u0001\u021a\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021b"+ - "\u0001\u021b\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021c"+ - "\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021d"+ - "\u0001\u021d\u0001\u021d\u0001\u021d\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\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\u0222\u0001\u0223\u0001\u0223\u0001\u0223\u0001\u0223"+ - "\u0001\u0223\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\u0225\u0001\u0225\u0001\u0225\u0001\u0225\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\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\u0229\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u0229"+ - "\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u022a\u0001\u022a\u0001\u022a"+ - "\u0001\u022a\u0001\u022a\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b"+ - "\u0001\u022b\u0001\u022b\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\u022f\u0001\u022f\u0001\u022f\u0001\u022f\u0001\u022f\u0001\u022f"+ - "\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0230"+ - "\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231"+ - "\u0001\u0231\u0001\u0232\u0001\u0232\u0001\u0232\u0001\u0232\u0001\u0233"+ - "\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0234\u0001\u0234"+ - "\u0001\u0234\u0001\u0234\u0001\u0235\u0001\u0235\u0001\u0235\u0001\u0235"+ - "\u0001\u0235\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\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\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\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\u0242\u0001\u0242\u0001\u0242"+ - "\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0242"+ - "\u0001\u0242\u0001\u0242\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\u0244\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\u0247\u0001\u0247\u0001\u0248\u0001\u0248\u0001\u0248"+ - "\u0001\u0248\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\u024a\u0001\u024a\u0001\u024a"+ - "\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\u024c\u0001\u024d\u0001\u024d\u0001\u024d"+ - "\u0001\u024d\u0001\u024d\u0001\u024d\u0001\u024d\u0001\u024e\u0001\u024e"+ - "\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024f\u0001\u024f\u0001\u024f"+ - "\u0001\u024f\u0001\u024f\u0001\u024f\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\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\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\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\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\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\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\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\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\u025e\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\u0260\u0001\u0260\u0001\u0260"+ - "\u0001\u0260\u0001\u0260\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\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\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\u0268"+ - "\u0001\u0268\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\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\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\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\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\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\u0274\u0001\u0274"+ - "\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\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\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\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\u0279\u0001\u0279"+ - "\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\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\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\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\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\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\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\u0281\u0001\u0281"+ - "\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281"+ - "\u0001\u0281\u0001\u0281\u0001\u0282\u0001\u0282\u0005\u0282\u18cc\b\u0282"+ - "\n\u0282\f\u0282\u18cf\t\u0282\u0001\u0283\u0001\u0283\u0001\u0283\u0001"+ - "\u0283\u0001\u0283\u0001\u0283\u0003\u0283\u18d7\b\u0283\u0001\u0284\u0001"+ - "\u0284\u0003\u0284\u18db\b\u0284\u0001\u0285\u0001\u0285\u0003\u0285\u18df"+ - "\b\u0285\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0287\u0001\u0287\u0001"+ - "\u0287\u0001\u0287\u0005\u0287\u18e8\b\u0287\n\u0287\f\u0287\u18eb\t\u0287"+ - "\u0001\u0288\u0001\u0288\u0001\u0288\u0001\u0289\u0001\u0289\u0001\u0289"+ - "\u0001\u0289\u0005\u0289\u18f4\b\u0289\n\u0289\f\u0289\u18f7\t\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\u028d\u0001\u028e\u0001\u028e\u0001"+ - "\u028e\u0001\u028f\u0001\u028f\u0001\u028f\u0001\u028f\u0005\u028f\u1910"+ - "\b\u028f\n\u028f\f\u028f\u1913\t\u028f\u0001\u0290\u0001\u0290\u0001\u0290"+ - "\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0291\u0001\u0291\u0001\u0291"+ - "\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0293\u0001\u0293"+ - "\u0003\u0293\u1924\b\u0293\u0001\u0293\u0001\u0293\u0001\u0293\u0001\u0293"+ - "\u0001\u0293\u0001\u0294\u0001\u0294\u0005\u0294\u192d\b\u0294\n\u0294"+ - "\f\u0294\u1930\t\u0294\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0296"+ - "\u0001\u0296\u0001\u0296\u0005\u0296\u1938\b\u0296\n\u0296\f\u0296\u193b"+ - "\t\u0296\u0001\u0297\u0001\u0297\u0001\u0297\u0001\u0298\u0001\u0298\u0001"+ - "\u0298\u0001\u0299\u0001\u0299\u0001\u0299\u0001\u029a\u0001\u029a\u0001"+ - "\u029a\u0005\u029a\u1949\b\u029a\n\u029a\f\u029a\u194c\t\u029a\u0001\u029b"+ - "\u0001\u029b\u0001\u029b\u0001\u029c\u0001\u029c\u0001\u029c\u0001\u029d"+ - "\u0001\u029d\u0001\u029e\u0001\u029e\u0001\u029e\u0001\u029e\u0001\u029e"+ - "\u0001\u029e\u0001\u029f\u0001\u029f\u0001\u029f\u0003\u029f\u195f\b\u029f"+ - "\u0001\u029f\u0001\u029f\u0003\u029f\u1963\b\u029f\u0001\u029f\u0003\u029f"+ - "\u1966\b\u029f\u0001\u029f\u0001\u029f\u0001\u029f\u0001\u029f\u0003\u029f"+ - "\u196c\b\u029f\u0001\u029f\u0003\u029f\u196f\b\u029f\u0001\u029f\u0001"+ - "\u029f\u0001\u029f\u0003\u029f\u1974\b\u029f\u0001\u029f\u0001\u029f\u0003"+ - "\u029f\u1978\b\u029f\u0001\u02a0\u0004\u02a0\u197b\b\u02a0\u000b\u02a0"+ - "\f\u02a0\u197c\u0001\u02a1\u0001\u02a1\u0001\u02a1\u0005\u02a1\u1982\b"+ - "\u02a1\n\u02a1\f\u02a1\u1985\t\u02a1\u0001\u02a2\u0001\u02a2\u0001\u02a2"+ - "\u0001\u02a2\u0001\u02a2\u0001\u02a2\u0001\u02a2\u0001\u02a2\u0005\u02a2"+ - "\u198f\b\u02a2\n\u02a2\f\u02a2\u1992\t\u02a2\u0001\u02a2\u0001\u02a2\u0001"+ - "\u02a3\u0004\u02a3\u1997\b\u02a3\u000b\u02a3\f\u02a3\u1998\u0001\u02a3"+ - "\u0001\u02a3\u0001\u02a4\u0001\u02a4\u0003\u02a4\u199f\b\u02a4\u0001\u02a4"+ - "\u0003\u02a4\u19a2\b\u02a4\u0001\u02a4\u0001\u02a4\u0001\u02a5\u0001\u02a5"+ - "\u0001\u02a5\u0001\u02a5\u0005\u02a5\u19aa\b\u02a5\n\u02a5\f\u02a5\u19ad"+ - "\t\u02a5\u0001\u02a5\u0001\u02a5\u0001\u02a6\u0001\u02a6\u0001\u02a6\u0001"+ - "\u02a6\u0005\u02a6\u19b5\b\u02a6\n\u02a6\f\u02a6\u19b8\t\u02a6\u0001\u02a6"+ - "\u0001\u02a6\u0001\u02a6\u0004\u02a6\u19bd\b\u02a6\u000b\u02a6\f\u02a6"+ - "\u19be\u0001\u02a6\u0001\u02a6\u0004\u02a6\u19c3\b\u02a6\u000b\u02a6\f"+ - "\u02a6\u19c4\u0001\u02a6\u0005\u02a6\u19c8\b\u02a6\n\u02a6\f\u02a6\u19cb"+ - "\t\u02a6\u0001\u02a6\u0005\u02a6\u19ce\b\u02a6\n\u02a6\f\u02a6\u19d1\t"+ - "\u02a6\u0001\u02a6\u0001\u02a6\u0001\u02a6\u0001\u02a6\u0001\u02a6\u0001"+ - "\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0005\u02a7\u19dc\b\u02a7\n"+ - "\u02a7\f\u02a7\u19df\t\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0004"+ - "\u02a7\u19e4\b\u02a7\u000b\u02a7\f\u02a7\u19e5\u0001\u02a7\u0001\u02a7"+ - "\u0004\u02a7\u19ea\b\u02a7\u000b\u02a7\f\u02a7\u19eb\u0001\u02a7\u0003"+ - "\u02a7\u19ef\b\u02a7\u0005\u02a7\u19f1\b\u02a7\n\u02a7\f\u02a7\u19f4\t"+ - "\u02a7\u0001\u02a7\u0004\u02a7\u19f7\b\u02a7\u000b\u02a7\f\u02a7\u19f8"+ - "\u0001\u02a7\u0004\u02a7\u19fc\b\u02a7\u000b\u02a7\f\u02a7\u19fd\u0001"+ - "\u02a7\u0005\u02a7\u1a01\b\u02a7\n\u02a7\f\u02a7\u1a04\t\u02a7\u0001\u02a7"+ - "\u0003\u02a7\u1a07\b\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a8\u0001\u02a8"+ - "\u0001\u02a8\u0001\u02a8\u0005\u02a8\u1a0f\b\u02a8\n\u02a8\f\u02a8\u1a12"+ - "\t\u02a8\u0001\u02a8\u0005\u02a8\u1a15\b\u02a8\n\u02a8\f\u02a8\u1a18\t"+ - "\u02a8\u0001\u02a8\u0001\u02a8\u0005\u02a8\u1a1c\b\u02a8\n\u02a8\f\u02a8"+ - "\u1a1f\t\u02a8\u0003\u02a8\u1a21\b\u02a8\u0001\u02a9\u0001\u02a9\u0001"+ - "\u02a9\u0001\u02aa\u0001\u02aa\u0001\u02ab\u0001\u02ab\u0001\u02ab\u0001"+ - "\u02ab\u0001\u02ab\u0001\u02ac\u0001\u02ac\u0003\u02ac\u1a2f\b\u02ac\u0001"+ - "\u02ac\u0001\u02ac\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001"+ - "\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001"+ - "\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001"+ - "\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0003\u02ad\u1a47\b\u02ad\u0001"+ - "\u02ad\u0005\u02ad\u1a4a\b\u02ad\n\u02ad\f\u02ad\u1a4d\t\u02ad\u0001\u02ae"+ - "\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02af\u0001\u02af"+ - "\u0003\u02af\u1a56\b\u02af\u0001\u02af\u0001\u02af\u0001\u02b0\u0001\u02b0"+ - "\u0001\u02b0\u0001\u02b0\u0001\u02b0\u0005\u02b0\u1a5f\b\u02b0\n\u02b0"+ - "\f\u02b0\u1a62\t\u02b0\u0001\u02b1\u0001\u02b1\u0001\u02b1\u0001\u02b1"+ - "\u0001\u02b1\u0001\u02b2\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\u0001\u02b7\u0001\u02b7"+ - "\u0001\u02b7\u0001\u02b7\u0001\u02b8\u0004\u02b8\u1a89\b\u02b8\u000b\u02b8"+ - "\f\u02b8\u1a8a\u0001\u02b8\u0001\u02b8\u0005\u02b8\u1a8f\b\u02b8\n\u02b8"+ - "\f\u02b8\u1a92\t\u02b8\u0003\u02b8\u1a94\b\u02b8\u0001\u02b9\u0001\u02b9"+ - "\u0003\u02b9\u1a98\b\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9"+ - "\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0000\u0000\u02ba\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/\u00161\u00173\u00185\u00197\u001a9\u001b"+ - ";\u001c=\u001d?\u0000A\u0000C\u0000E\u0000G\u001eI\u001fK M!O\"Q#S$U%"+ - "W&Y\'[(])_*a+c,e-g.i/k0m1o2q3s4u5w6y7{8}9\u007f:\u0081;\u0083<\u0085="+ - "\u0087>\u0089?\u008b@\u008dA\u008fB\u0091C\u0093D\u0095E\u0097F\u0099"+ - "G\u009bH\u009dI\u009fJ\u00a1K\u00a3L\u00a5M\u00a7N\u00a9O\u00abP\u00ad"+ - "Q\u00afR\u00b1S\u00b3T\u00b5U\u00b7V\u00b9W\u00bbX\u00bdY\u00bfZ\u00c1"+ - "[\u00c3\\\u00c5]\u00c7^\u00c9_\u00cb`\u00cda\u00cfb\u00d1c\u00d3d\u00d5"+ - "e\u00d7f\u00d9g\u00dbh\u00ddi\u00dfj\u00e1k\u00e3l\u00e5m\u00e7n\u00e9"+ - "o\u00ebp\u00edq\u00efr\u00f1s\u00f3t\u00f5u\u00f7v\u00f9w\u00fbx\u00fd"+ - "y\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\u027f"+ - "\u050b\u0000\u050d\u0000\u050f\u0000\u0511\u0280\u0513\u0281\u0515\u0282"+ - "\u0517\u0283\u0519\u0284\u051b\u0285\u051d\u0286\u051f\u0287\u0521\u0288"+ - "\u0523\u0289\u0525\u0000\u0527\u028a\u0529\u028b\u052b\u028c\u052d\u0000"+ - "\u052f\u028d\u0531\u028e\u0533\u028f\u0535\u0290\u0537\u0291\u0539\u0292"+ - "\u053b\u0293\u053d\u0294\u053f\u0295\u0541\u0296\u0543\u0297\u0545\u0000"+ - "\u0547\u0298\u0549\u0299\u054b\u029a\u054d\u029b\u054f\u029c\u0551\u029d"+ - "\u0553\u029e\u0555\u029f\u0557\u02a0\u0559\u02a1\u055b\u02a2\u055d\u02a3"+ - "\u055f\u0000\u0561\u02a4\u0563\u02a5\u0565\u0000\u0567\u0000\u0569\u0000"+ - "\u056b\u02a6\u056d\u0000\u056f\u0000\u0571\u02aa\u0573\u02a7\u0575\u02a8"+ - "\u0577\u02a9\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\u0000WWww\u0002\u0000QQqq\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$$\u1ae8\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\u0505\u0001\u0000\u0000"+ - "\u0000\u0000\u0507\u0001\u0000\u0000\u0000\u0000\u0509\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\u052b\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\u0543\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\u0000\u0559\u0001\u0000\u0000\u0000\u0001\u055b\u0001\u0000\u0000"+ - "\u0000\u0001\u055d\u0001\u0000\u0000\u0000\u0001\u0561\u0001\u0000\u0000"+ - "\u0000\u0001\u0563\u0001\u0000\u0000\u0000\u0002\u0567\u0001\u0000\u0000"+ - "\u0000\u0002\u0569\u0001\u0000\u0000\u0000\u0002\u056b\u0001\u0000\u0000"+ - "\u0000\u0003\u056d\u0001\u0000\u0000\u0000\u0003\u056f\u0001\u0000\u0000"+ - "\u0000\u0003\u0571\u0001\u0000\u0000\u0000\u0003\u0573\u0001\u0000\u0000"+ - "\u0000\u0004\u0575\u0001\u0000\u0000\u0000\u0004\u0577\u0001\u0000\u0000"+ - "\u0000\u0005\u0579\u0001\u0000\u0000\u0000\u0007\u057b\u0001\u0000\u0000"+ - "\u0000\t\u057d\u0001\u0000\u0000\u0000\u000b\u057f\u0001\u0000\u0000\u0000"+ - "\r\u0581\u0001\u0000\u0000\u0000\u000f\u0583\u0001\u0000\u0000\u0000\u0011"+ - "\u0585\u0001\u0000\u0000\u0000\u0013\u0587\u0001\u0000\u0000\u0000\u0015"+ - "\u0589\u0001\u0000\u0000\u0000\u0017\u058b\u0001\u0000\u0000\u0000\u0019"+ - "\u058d\u0001\u0000\u0000\u0000\u001b\u058f\u0001\u0000\u0000\u0000\u001d"+ - "\u0591\u0001\u0000\u0000\u0000\u001f\u0593\u0001\u0000\u0000\u0000!\u0595"+ - "\u0001\u0000\u0000\u0000#\u0597\u0001\u0000\u0000\u0000%\u0599\u0001\u0000"+ - "\u0000\u0000\'\u059b\u0001\u0000\u0000\u0000)\u059e\u0001\u0000\u0000"+ - "\u0000+\u05a1\u0001\u0000\u0000\u0000-\u05a4\u0001\u0000\u0000\u0000/"+ - "\u05a7\u0001\u0000\u0000\u00001\u05aa\u0001\u0000\u0000\u00003\u05ad\u0001"+ - "\u0000\u0000\u00005\u05b0\u0001\u0000\u0000\u00007\u05b3\u0001\u0000\u0000"+ - "\u00009\u05b6\u0001\u0000\u0000\u0000;\u05b8\u0001\u0000\u0000\u0000="+ - "\u05d2\u0001\u0000\u0000\u0000?\u05dd\u0001\u0000\u0000\u0000A\u05ed\u0001"+ - "\u0000\u0000\u0000C\u05ef\u0001\u0000\u0000\u0000E\u05f1\u0001\u0000\u0000"+ - "\u0000G\u05f3\u0001\u0000\u0000\u0000I\u05f7\u0001\u0000\u0000\u0000K"+ - "\u05ff\u0001\u0000\u0000\u0000M\u0607\u0001\u0000\u0000\u0000O\u060b\u0001"+ - "\u0000\u0000\u0000Q\u060f\u0001\u0000\u0000\u0000S\u0615\u0001\u0000\u0000"+ - "\u0000U\u0618\u0001\u0000\u0000\u0000W\u061c\u0001\u0000\u0000\u0000Y"+ - "\u0627\u0001\u0000\u0000\u0000[\u062c\u0001\u0000\u0000\u0000]\u0631\u0001"+ - "\u0000\u0000\u0000_\u0636\u0001\u0000\u0000\u0000a\u063c\u0001\u0000\u0000"+ - "\u0000c\u0644\u0001\u0000\u0000\u0000e\u064b\u0001\u0000\u0000\u0000g"+ - "\u0656\u0001\u0000\u0000\u0000i\u065d\u0001\u0000\u0000\u0000k\u066d\u0001"+ - "\u0000\u0000\u0000m\u067a\u0001\u0000\u0000\u0000o\u0687\u0001\u0000\u0000"+ - "\u0000q\u0694\u0001\u0000\u0000\u0000s\u06a6\u0001\u0000\u0000\u0000u"+ - "\u06b3\u0001\u0000\u0000\u0000w\u06bb\u0001\u0000\u0000\u0000y\u06c6\u0001"+ - "\u0000\u0000\u0000{\u06cb\u0001\u0000\u0000\u0000}\u06d4\u0001\u0000\u0000"+ - "\u0000\u007f\u06d7\u0001\u0000\u0000\u0000\u0081\u06dc\u0001\u0000\u0000"+ - "\u0000\u0083\u06e3\u0001\u0000\u0000\u0000\u0085\u06e9\u0001\u0000\u0000"+ - "\u0000\u0087\u06ef\u0001\u0000\u0000\u0000\u0089\u06f3\u0001\u0000\u0000"+ - "\u0000\u008b\u06fb\u0001\u0000\u0000\u0000\u008d\u0700\u0001\u0000\u0000"+ - "\u0000\u008f\u0706\u0001\u0000\u0000\u0000\u0091\u070c\u0001\u0000\u0000"+ - "\u0000\u0093\u0713\u0001\u0000\u0000\u0000\u0095\u0716\u0001\u0000\u0000"+ - "\u0000\u0097\u0720\u0001\u0000\u0000\u0000\u0099\u072a\u0001\u0000\u0000"+ - "\u0000\u009b\u072f\u0001\u0000\u0000\u0000\u009d\u0737\u0001\u0000\u0000"+ - "\u0000\u009f\u073f\u0001\u0000\u0000\u0000\u00a1\u0745\u0001\u0000\u0000"+ - "\u0000\u00a3\u074f\u0001\u0000\u0000\u0000\u00a5\u075e\u0001\u0000\u0000"+ - "\u0000\u00a7\u0762\u0001\u0000\u0000\u0000\u00a9\u0767\u0001\u0000\u0000"+ - "\u0000\u00ab\u076e\u0001\u0000\u0000\u0000\u00ad\u0771\u0001\u0000\u0000"+ - "\u0000\u00af\u0776\u0001\u0000\u0000\u0000\u00b1\u0779\u0001\u0000\u0000"+ - "\u0000\u00b3\u077f\u0001\u0000\u0000\u0000\u00b5\u0787\u0001\u0000\u0000"+ - "\u0000\u00b7\u078f\u0001\u0000\u0000\u0000\u00b9\u079a\u0001\u0000\u0000"+ - "\u0000\u00bb\u07a4\u0001\u0000\u0000\u0000\u00bd\u07ab\u0001\u0000\u0000"+ - "\u0000\u00bf\u07b8\u0001\u0000\u0000\u0000\u00c1\u07bd\u0001\u0000\u0000"+ - "\u0000\u00c3\u07c7\u0001\u0000\u0000\u0000\u00c5\u07cd\u0001\u0000\u0000"+ - "\u0000\u00c7\u07d2\u0001\u0000\u0000\u0000\u00c9\u07d5\u0001\u0000\u0000"+ - "\u0000\u00cb\u07db\u0001\u0000\u0000\u0000\u00cd\u07e2\u0001\u0000\u0000"+ - "\u0000\u00cf\u07e8\u0001\u0000\u0000\u0000\u00d1\u07f1\u0001\u0000\u0000"+ - "\u0000\u00d3\u07f6\u0001\u0000\u0000\u0000\u00d5\u07fc\u0001\u0000\u0000"+ - "\u0000\u00d7\u0803\u0001\u0000\u0000\u0000\u00d9\u0808\u0001\u0000\u0000"+ - "\u0000\u00db\u080e\u0001\u0000\u0000\u0000\u00dd\u0817\u0001\u0000\u0000"+ - "\u0000\u00df\u081c\u0001\u0000\u0000\u0000\u00e1\u0822\u0001\u0000\u0000"+ - "\u0000\u00e3\u0829\u0001\u0000\u0000\u0000\u00e5\u082e\u0001\u0000\u0000"+ - "\u0000\u00e7\u083c\u0001\u0000\u0000\u0000\u00e9\u0843\u0001\u0000\u0000"+ - "\u0000\u00eb\u084d\u0001\u0000\u0000\u0000\u00ed\u085a\u0001\u0000\u0000"+ - "\u0000\u00ef\u0860\u0001\u0000\u0000\u0000\u00f1\u086f\u0001\u0000\u0000"+ - "\u0000\u00f3\u0876\u0001\u0000\u0000\u0000\u00f5\u087b\u0001\u0000\u0000"+ - "\u0000\u00f7\u0881\u0001\u0000\u0000\u0000\u00f9\u0887\u0001\u0000\u0000"+ - "\u0000\u00fb\u088a\u0001\u0000\u0000\u0000\u00fd\u0891\u0001\u0000\u0000"+ - "\u0000\u00ff\u0896\u0001\u0000\u0000\u0000\u0101\u089b\u0001\u0000\u0000"+ - "\u0000\u0103\u08a0\u0001\u0000\u0000\u0000\u0105\u08a8\u0001\u0000\u0000"+ - "\u0000\u0107\u08b0\u0001\u0000\u0000\u0000\u0109\u08b6\u0001\u0000\u0000"+ - "\u0000\u010b\u08bb\u0001\u0000\u0000\u0000\u010d\u08c4\u0001\u0000\u0000"+ - "\u0000\u010f\u08ca\u0001\u0000\u0000\u0000\u0111\u08d2\u0001\u0000\u0000"+ - "\u0000\u0113\u08da\u0001\u0000\u0000\u0000\u0115\u08e0\u0001\u0000\u0000"+ - "\u0000\u0117\u08e9\u0001\u0000\u0000\u0000\u0119\u08f0\u0001\u0000\u0000"+ - "\u0000\u011b\u08f7\u0001\u0000\u0000\u0000\u011d\u08fb\u0001\u0000\u0000"+ - "\u0000\u011f\u0901\u0001\u0000\u0000\u0000\u0121\u0907\u0001\u0000\u0000"+ - "\u0000\u0123\u0911\u0001\u0000\u0000\u0000\u0125\u0916\u0001\u0000\u0000"+ - "\u0000\u0127\u091c\u0001\u0000\u0000\u0000\u0129\u0923\u0001\u0000\u0000"+ - "\u0000\u012b\u092d\u0001\u0000\u0000\u0000\u012d\u0938\u0001\u0000\u0000"+ - "\u0000\u012f\u093b\u0001\u0000\u0000\u0000\u0131\u0945\u0001\u0000\u0000"+ - "\u0000\u0133\u094e\u0001\u0000\u0000\u0000\u0135\u0955\u0001\u0000\u0000"+ - "\u0000\u0137\u095b\u0001\u0000\u0000\u0000\u0139\u095e\u0001\u0000\u0000"+ - "\u0000\u013b\u0964\u0001\u0000\u0000\u0000\u013d\u096b\u0001\u0000\u0000"+ - "\u0000\u013f\u0973\u0001\u0000\u0000\u0000\u0141\u097c\u0001\u0000\u0000"+ - "\u0000\u0143\u0984\u0001\u0000\u0000\u0000\u0145\u098a\u0001\u0000\u0000"+ - "\u0000\u0147\u099a\u0001\u0000\u0000\u0000\u0149\u09a5\u0001\u0000\u0000"+ - "\u0000\u014b\u09ab\u0001\u0000\u0000\u0000\u014d\u09b1\u0001\u0000\u0000"+ - "\u0000\u014f\u09b9\u0001\u0000\u0000\u0000\u0151\u09c1\u0001\u0000\u0000"+ - "\u0000\u0153\u09ca\u0001\u0000\u0000\u0000\u0155\u09d1\u0001\u0000\u0000"+ - "\u0000\u0157\u09db\u0001\u0000\u0000\u0000\u0159\u09e9\u0001\u0000\u0000"+ - "\u0000\u015b\u09f4\u0001\u0000\u0000\u0000\u015d\u0a00\u0001\u0000\u0000"+ - "\u0000\u015f\u0a08\u0001\u0000\u0000\u0000\u0161\u0a11\u0001\u0000\u0000"+ - "\u0000\u0163\u0a1c\u0001\u0000\u0000\u0000\u0165\u0a21\u0001\u0000\u0000"+ - "\u0000\u0167\u0a26\u0001\u0000\u0000\u0000\u0169\u0a2a\u0001\u0000\u0000"+ - "\u0000\u016b\u0a31\u0001\u0000\u0000\u0000\u016d\u0a37\u0001\u0000\u0000"+ - "\u0000\u016f\u0a3c\u0001\u0000\u0000\u0000\u0171\u0a45\u0001\u0000\u0000"+ - "\u0000\u0173\u0a49\u0001\u0000\u0000\u0000\u0175\u0a54\u0001\u0000\u0000"+ - "\u0000\u0177\u0a5c\u0001\u0000\u0000\u0000\u0179\u0a65\u0001\u0000\u0000"+ - "\u0000\u017b\u0a6e\u0001\u0000\u0000\u0000\u017d\u0a76\u0001\u0000\u0000"+ - "\u0000\u017f\u0a7d\u0001\u0000\u0000\u0000\u0181\u0a87\u0001\u0000\u0000"+ - "\u0000\u0183\u0a92\u0001\u0000\u0000\u0000\u0185\u0a9d\u0001\u0000\u0000"+ - "\u0000\u0187\u0aa5\u0001\u0000\u0000\u0000\u0189\u0aad\u0001\u0000\u0000"+ - "\u0000\u018b\u0ab6\u0001\u0000\u0000\u0000\u018d\u0abd\u0001\u0000\u0000"+ - "\u0000\u018f\u0ac4\u0001\u0000\u0000\u0000\u0191\u0ac9\u0001\u0000\u0000"+ - "\u0000\u0193\u0ace\u0001\u0000\u0000\u0000\u0195\u0ad5\u0001\u0000\u0000"+ - "\u0000\u0197\u0ade\u0001\u0000\u0000\u0000\u0199\u0ae8\u0001\u0000\u0000"+ - "\u0000\u019b\u0aed\u0001\u0000\u0000\u0000\u019d\u0af4\u0001\u0000\u0000"+ - "\u0000\u019f\u0afa\u0001\u0000\u0000\u0000\u01a1\u0b02\u0001\u0000\u0000"+ - "\u0000\u01a3\u0b0c\u0001\u0000\u0000\u0000\u01a5\u0b16\u0001\u0000\u0000"+ - "\u0000\u01a7\u0b1e\u0001\u0000\u0000\u0000\u01a9\u0b26\u0001\u0000\u0000"+ - "\u0000\u01ab\u0b30\u0001\u0000\u0000\u0000\u01ad\u0b39\u0001\u0000\u0000"+ - "\u0000\u01af\u0b40\u0001\u0000\u0000\u0000\u01b1\u0b46\u0001\u0000\u0000"+ - "\u0000\u01b3\u0b50\u0001\u0000\u0000\u0000\u01b5\u0b56\u0001\u0000\u0000"+ - "\u0000\u01b7\u0b5e\u0001\u0000\u0000\u0000\u01b9\u0b67\u0001\u0000\u0000"+ - "\u0000\u01bb\u0b71\u0001\u0000\u0000\u0000\u01bd\u0b78\u0001\u0000\u0000"+ - "\u0000\u01bf\u0b80\u0001\u0000\u0000\u0000\u01c1\u0b88\u0001\u0000\u0000"+ - "\u0000\u01c3\u0b8f\u0001\u0000\u0000\u0000\u01c5\u0b94\u0001\u0000\u0000"+ - "\u0000\u01c7\u0b99\u0001\u0000\u0000\u0000\u01c9\u0ba2\u0001\u0000\u0000"+ - "\u0000\u01cb\u0ba5\u0001\u0000\u0000\u0000\u01cd\u0baf\u0001\u0000\u0000"+ - "\u0000\u01cf\u0bb9\u0001\u0000\u0000\u0000\u01d1\u0bc2\u0001\u0000\u0000"+ - "\u0000\u01d3\u0bcc\u0001\u0000\u0000\u0000\u01d5\u0bd6\u0001\u0000\u0000"+ - "\u0000\u01d7\u0bdc\u0001\u0000\u0000\u0000\u01d9\u0be4\u0001\u0000\u0000"+ - "\u0000\u01db\u0bec\u0001\u0000\u0000\u0000\u01dd\u0bf5\u0001\u0000\u0000"+ - "\u0000\u01df\u0bfc\u0001\u0000\u0000\u0000\u01e1\u0c08\u0001\u0000\u0000"+ - "\u0000\u01e3\u0c0f\u0001\u0000\u0000\u0000\u01e5\u0c17\u0001\u0000\u0000"+ - "\u0000\u01e7\u0c1f\u0001\u0000\u0000\u0000\u01e9\u0c29\u0001\u0000\u0000"+ - "\u0000\u01eb\u0c2d\u0001\u0000\u0000\u0000\u01ed\u0c33\u0001\u0000\u0000"+ - "\u0000\u01ef\u0c3c\u0001\u0000\u0000\u0000\u01f1\u0c42\u0001\u0000\u0000"+ - "\u0000\u01f3\u0c47\u0001\u0000\u0000\u0000\u01f5\u0c51\u0001\u0000\u0000"+ - "\u0000\u01f7\u0c57\u0001\u0000\u0000\u0000\u01f9\u0c5e\u0001\u0000\u0000"+ - "\u0000\u01fb\u0c63\u0001\u0000\u0000\u0000\u01fd\u0c69\u0001\u0000\u0000"+ - "\u0000\u01ff\u0c72\u0001\u0000\u0000\u0000\u0201\u0c77\u0001\u0000\u0000"+ - "\u0000\u0203\u0c7f\u0001\u0000\u0000\u0000\u0205\u0c85\u0001\u0000\u0000"+ - "\u0000\u0207\u0c8d\u0001\u0000\u0000\u0000\u0209\u0c9a\u0001\u0000\u0000"+ - "\u0000\u020b\u0ca3\u0001\u0000\u0000\u0000\u020d\u0ca9\u0001\u0000\u0000"+ - "\u0000\u020f\u0cb0\u0001\u0000\u0000\u0000\u0211\u0cb9\u0001\u0000\u0000"+ - "\u0000\u0213\u0cbe\u0001\u0000\u0000\u0000\u0215\u0cc4\u0001\u0000\u0000"+ - "\u0000\u0217\u0cc9\u0001\u0000\u0000\u0000\u0219\u0cce\u0001\u0000\u0000"+ - "\u0000\u021b\u0cd4\u0001\u0000\u0000\u0000\u021d\u0cd9\u0001\u0000\u0000"+ - "\u0000\u021f\u0cdc\u0001\u0000\u0000\u0000\u0221\u0ce4\u0001\u0000\u0000"+ - "\u0000\u0223\u0ceb\u0001\u0000\u0000\u0000\u0225\u0cf2\u0001\u0000\u0000"+ - "\u0000\u0227\u0cf8\u0001\u0000\u0000\u0000\u0229\u0cff\u0001\u0000\u0000"+ - "\u0000\u022b\u0d02\u0001\u0000\u0000\u0000\u022d\u0d06\u0001\u0000\u0000"+ - "\u0000\u022f\u0d0b\u0001\u0000\u0000\u0000\u0231\u0d14\u0001\u0000\u0000"+ - "\u0000\u0233\u0d1b\u0001\u0000\u0000\u0000\u0235\u0d23\u0001\u0000\u0000"+ - "\u0000\u0237\u0d29\u0001\u0000\u0000\u0000\u0239\u0d2f\u0001\u0000\u0000"+ - "\u0000\u023b\u0d36\u0001\u0000\u0000\u0000\u023d\u0d3e\u0001\u0000\u0000"+ - "\u0000\u023f\u0d48\u0001\u0000\u0000\u0000\u0241\u0d50\u0001\u0000\u0000"+ - "\u0000\u0243\u0d59\u0001\u0000\u0000\u0000\u0245\u0d5f\u0001\u0000\u0000"+ - "\u0000\u0247\u0d69\u0001\u0000\u0000\u0000\u0249\u0d71\u0001\u0000\u0000"+ - "\u0000\u024b\u0d7a\u0001\u0000\u0000\u0000\u024d\u0d83\u0001\u0000\u0000"+ - "\u0000\u024f\u0d89\u0001\u0000\u0000\u0000\u0251\u0d94\u0001\u0000\u0000"+ - "\u0000\u0253\u0d9f\u0001\u0000\u0000\u0000\u0255\u0da9\u0001\u0000\u0000"+ - "\u0000\u0257\u0db1\u0001\u0000\u0000\u0000\u0259\u0db7\u0001\u0000\u0000"+ - "\u0000\u025b\u0dbd\u0001\u0000\u0000\u0000\u025d\u0dc2\u0001\u0000\u0000"+ - "\u0000\u025f\u0dcb\u0001\u0000\u0000\u0000\u0261\u0dd3\u0001\u0000\u0000"+ - "\u0000\u0263\u0ddd\u0001\u0000\u0000\u0000\u0265\u0de1\u0001\u0000\u0000"+ - "\u0000\u0267\u0de9\u0001\u0000\u0000\u0000\u0269\u0df1\u0001\u0000\u0000"+ - "\u0000\u026b\u0dfa\u0001\u0000\u0000\u0000\u026d\u0e02\u0001\u0000\u0000"+ - "\u0000\u026f\u0e09\u0001\u0000\u0000\u0000\u0271\u0e14\u0001\u0000\u0000"+ - "\u0000\u0273\u0e1c\u0001\u0000\u0000\u0000\u0275\u0e24\u0001\u0000\u0000"+ - "\u0000\u0277\u0e2a\u0001\u0000\u0000\u0000\u0279\u0e32\u0001\u0000\u0000"+ - "\u0000\u027b\u0e3b\u0001\u0000\u0000\u0000\u027d\u0e43\u0001\u0000\u0000"+ - "\u0000\u027f\u0e4a\u0001\u0000\u0000\u0000\u0281\u0e4f\u0001\u0000\u0000"+ - "\u0000\u0283\u0e58\u0001\u0000\u0000\u0000\u0285\u0e5d\u0001\u0000\u0000"+ - "\u0000\u0287\u0e62\u0001\u0000\u0000\u0000\u0289\u0e6c\u0001\u0000\u0000"+ - "\u0000\u028b\u0e73\u0001\u0000\u0000\u0000\u028d\u0e7a\u0001\u0000\u0000"+ - "\u0000\u028f\u0e81\u0001\u0000\u0000\u0000\u0291\u0e88\u0001\u0000\u0000"+ - "\u0000\u0293\u0e91\u0001\u0000\u0000\u0000\u0295\u0e9a\u0001\u0000\u0000"+ - "\u0000\u0297\u0ea4\u0001\u0000\u0000\u0000\u0299\u0eb1\u0001\u0000\u0000"+ - "\u0000\u029b\u0eb8\u0001\u0000\u0000\u0000\u029d\u0ec0\u0001\u0000\u0000"+ - "\u0000\u029f\u0ec4\u0001\u0000\u0000\u0000\u02a1\u0eca\u0001\u0000\u0000"+ - "\u0000\u02a3\u0ecf\u0001\u0000\u0000\u0000\u02a5\u0ed6\u0001\u0000\u0000"+ - "\u0000\u02a7\u0edf\u0001\u0000\u0000\u0000\u02a9\u0ee6\u0001\u0000\u0000"+ - "\u0000\u02ab\u0ef1\u0001\u0000\u0000\u0000\u02ad\u0ef7\u0001\u0000\u0000"+ - "\u0000\u02af\u0f01\u0001\u0000\u0000\u0000\u02b1\u0f0c\u0001\u0000\u0000"+ - "\u0000\u02b3\u0f12\u0001\u0000\u0000\u0000\u02b5\u0f19\u0001\u0000\u0000"+ - "\u0000\u02b7\u0f21\u0001\u0000\u0000\u0000\u02b9\u0f28\u0001\u0000\u0000"+ - "\u0000\u02bb\u0f2e\u0001\u0000\u0000\u0000\u02bd\u0f34\u0001\u0000\u0000"+ - "\u0000\u02bf\u0f3b\u0001\u0000\u0000\u0000\u02c1\u0f42\u0001\u0000\u0000"+ - "\u0000\u02c3\u0f4d\u0001\u0000\u0000\u0000\u02c5\u0f52\u0001\u0000\u0000"+ - "\u0000\u02c7\u0f5b\u0001\u0000\u0000\u0000\u02c9\u0f65\u0001\u0000\u0000"+ - "\u0000\u02cb\u0f6a\u0001\u0000\u0000\u0000\u02cd\u0f76\u0001\u0000\u0000"+ - "\u0000\u02cf\u0f7e\u0001\u0000\u0000\u0000\u02d1\u0f87\u0001\u0000\u0000"+ - "\u0000\u02d3\u0f8f\u0001\u0000\u0000\u0000\u02d5\u0f94\u0001\u0000\u0000"+ - "\u0000\u02d7\u0f9a\u0001\u0000\u0000\u0000\u02d9\u0fa4\u0001\u0000\u0000"+ - "\u0000\u02db\u0fb0\u0001\u0000\u0000\u0000\u02dd\u0fbc\u0001\u0000\u0000"+ - "\u0000\u02df\u0fc4\u0001\u0000\u0000\u0000\u02e1\u0fcd\u0001\u0000\u0000"+ - "\u0000\u02e3\u0fd6\u0001\u0000\u0000\u0000\u02e5\u0fdc\u0001\u0000\u0000"+ - "\u0000\u02e7\u0fe3"; - private static final String _serializedATNSegment1 = - "\u0001\u0000\u0000\u0000\u02e9\u0fea\u0001\u0000\u0000\u0000\u02eb\u0ff0"+ - "\u0001\u0000\u0000\u0000\u02ed\u0ff9\u0001\u0000\u0000\u0000\u02ef\u1003"+ - "\u0001\u0000\u0000\u0000\u02f1\u100b\u0001\u0000\u0000\u0000\u02f3\u1013"+ - "\u0001\u0000\u0000\u0000\u02f5\u1018\u0001\u0000\u0000\u0000\u02f7\u1021"+ - "\u0001\u0000\u0000\u0000\u02f9\u102c\u0001\u0000\u0000\u0000\u02fb\u1034"+ - "\u0001\u0000\u0000\u0000\u02fd\u1039\u0001\u0000\u0000\u0000\u02ff\u1041"+ - "\u0001\u0000\u0000\u0000\u0301\u1047\u0001\u0000\u0000\u0000\u0303\u104b"+ - "\u0001\u0000\u0000\u0000\u0305\u1050\u0001\u0000\u0000\u0000\u0307\u1054"+ - "\u0001\u0000\u0000\u0000\u0309\u1059\u0001\u0000\u0000\u0000\u030b\u1061"+ - "\u0001\u0000\u0000\u0000\u030d\u1068\u0001\u0000\u0000\u0000\u030f\u106c"+ - "\u0001\u0000\u0000\u0000\u0311\u1074\u0001\u0000\u0000\u0000\u0313\u1079"+ - "\u0001\u0000\u0000\u0000\u0315\u1083\u0001\u0000\u0000\u0000\u0317\u108c"+ - "\u0001\u0000\u0000\u0000\u0319\u1090\u0001\u0000\u0000\u0000\u031b\u1098"+ - "\u0001\u0000\u0000\u0000\u031d\u109f\u0001\u0000\u0000\u0000\u031f\u10a7"+ - "\u0001\u0000\u0000\u0000\u0321\u10ad\u0001\u0000\u0000\u0000\u0323\u10b6"+ - "\u0001\u0000\u0000\u0000\u0325\u10bc\u0001\u0000\u0000\u0000\u0327\u10c0"+ - "\u0001\u0000\u0000\u0000\u0329\u10c8\u0001\u0000\u0000\u0000\u032b\u10d1"+ - "\u0001\u0000\u0000\u0000\u032d\u10d7\u0001\u0000\u0000\u0000\u032f\u10e0"+ - "\u0001\u0000\u0000\u0000\u0331\u10e6\u0001\u0000\u0000\u0000\u0333\u10eb"+ - "\u0001\u0000\u0000\u0000\u0335\u10f2\u0001\u0000\u0000\u0000\u0337\u10fa"+ - "\u0001\u0000\u0000\u0000\u0339\u1102\u0001\u0000\u0000\u0000\u033b\u110b"+ - "\u0001\u0000\u0000\u0000\u033d\u1115\u0001\u0000\u0000\u0000\u033f\u111a"+ - "\u0001\u0000\u0000\u0000\u0341\u111e\u0001\u0000\u0000\u0000\u0343\u1124"+ - "\u0001\u0000\u0000\u0000\u0345\u112d\u0001\u0000\u0000\u0000\u0347\u1137"+ - "\u0001\u0000\u0000\u0000\u0349\u113c\u0001\u0000\u0000\u0000\u034b\u1146"+ - "\u0001\u0000\u0000\u0000\u034d\u114c\u0001\u0000\u0000\u0000\u034f\u1151"+ - "\u0001\u0000\u0000\u0000\u0351\u1158\u0001\u0000\u0000\u0000\u0353\u1160"+ - "\u0001\u0000\u0000\u0000\u0355\u116e\u0001\u0000\u0000\u0000\u0357\u1179"+ - "\u0001\u0000\u0000\u0000\u0359\u1180\u0001\u0000\u0000\u0000\u035b\u1193"+ - "\u0001\u0000\u0000\u0000\u035d\u11af\u0001\u0000\u0000\u0000\u035f\u11ca"+ - "\u0001\u0000\u0000\u0000\u0361\u11d0\u0001\u0000\u0000\u0000\u0363\u11dd"+ - "\u0001\u0000\u0000\u0000\u0365\u11e7\u0001\u0000\u0000\u0000\u0367\u11f2"+ - "\u0001\u0000\u0000\u0000\u0369\u11fc\u0001\u0000\u0000\u0000\u036b\u1206"+ - "\u0001\u0000\u0000\u0000\u036d\u120f\u0001\u0000\u0000\u0000\u036f\u1215"+ - "\u0001\u0000\u0000\u0000\u0371\u121d\u0001\u0000\u0000\u0000\u0373\u122a"+ - "\u0001\u0000\u0000\u0000\u0375\u122f\u0001\u0000\u0000\u0000\u0377\u1237"+ - "\u0001\u0000\u0000\u0000\u0379\u123e\u0001\u0000\u0000\u0000\u037b\u1245"+ - "\u0001\u0000\u0000\u0000\u037d\u1250\u0001\u0000\u0000\u0000\u037f\u125a"+ - "\u0001\u0000\u0000\u0000\u0381\u1261\u0001\u0000\u0000\u0000\u0383\u1268"+ - "\u0001\u0000\u0000\u0000\u0385\u1270\u0001\u0000\u0000\u0000\u0387\u1278"+ - "\u0001\u0000\u0000\u0000\u0389\u1282\u0001\u0000\u0000\u0000\u038b\u1289"+ - "\u0001\u0000\u0000\u0000\u038d\u1290\u0001\u0000\u0000\u0000\u038f\u1297"+ - "\u0001\u0000\u0000\u0000\u0391\u12a3\u0001\u0000\u0000\u0000\u0393\u12a7"+ - "\u0001\u0000\u0000\u0000\u0395\u12ab\u0001\u0000\u0000\u0000\u0397\u12b1"+ - "\u0001\u0000\u0000\u0000\u0399\u12be\u0001\u0000\u0000\u0000\u039b\u12ca"+ - "\u0001\u0000\u0000\u0000\u039d\u12ce\u0001\u0000\u0000\u0000\u039f\u12d2"+ - "\u0001\u0000\u0000\u0000\u03a1\u12db\u0001\u0000\u0000\u0000\u03a3\u12e3"+ - "\u0001\u0000\u0000\u0000\u03a5\u12ee\u0001\u0000\u0000\u0000\u03a7\u12f4"+ - "\u0001\u0000\u0000\u0000\u03a9\u12fc\u0001\u0000\u0000\u0000\u03ab\u1305"+ - "\u0001\u0000\u0000\u0000\u03ad\u1309\u0001\u0000\u0000\u0000\u03af\u1311"+ - "\u0001\u0000\u0000\u0000\u03b1\u131c\u0001\u0000\u0000\u0000\u03b3\u1325"+ - "\u0001\u0000\u0000\u0000\u03b5\u132a\u0001\u0000\u0000\u0000\u03b7\u1331"+ - "\u0001\u0000\u0000\u0000\u03b9\u1336\u0001\u0000\u0000\u0000\u03bb\u133d"+ - "\u0001\u0000\u0000\u0000\u03bd\u1342\u0001\u0000\u0000\u0000\u03bf\u134b"+ - "\u0001\u0000\u0000\u0000\u03c1\u1350\u0001\u0000\u0000\u0000\u03c3\u135c"+ - "\u0001\u0000\u0000\u0000\u03c5\u1367\u0001\u0000\u0000\u0000\u03c7\u1370"+ - "\u0001\u0000\u0000\u0000\u03c9\u1378\u0001\u0000\u0000\u0000\u03cb\u1386"+ - "\u0001\u0000\u0000\u0000\u03cd\u138e\u0001\u0000\u0000\u0000\u03cf\u1399"+ - "\u0001\u0000\u0000\u0000\u03d1\u13a0\u0001\u0000\u0000\u0000\u03d3\u13a7"+ - "\u0001\u0000\u0000\u0000\u03d5\u13ae\u0001\u0000\u0000\u0000\u03d7\u13b5"+ - "\u0001\u0000\u0000\u0000\u03d9\u13b9\u0001\u0000\u0000\u0000\u03db\u13bd"+ - "\u0001\u0000\u0000\u0000\u03dd\u13c2\u0001\u0000\u0000\u0000\u03df\u13c7"+ - "\u0001\u0000\u0000\u0000\u03e1\u13cf\u0001\u0000\u0000\u0000\u03e3\u13d5"+ - "\u0001\u0000\u0000\u0000\u03e5\u13df\u0001\u0000\u0000\u0000\u03e7\u13e4"+ - "\u0001\u0000\u0000\u0000\u03e9\u13f8\u0001\u0000\u0000\u0000\u03eb\u140a"+ - "\u0001\u0000\u0000\u0000\u03ed\u1410\u0001\u0000\u0000\u0000\u03ef\u141d"+ - "\u0001\u0000\u0000\u0000\u03f1\u1428\u0001\u0000\u0000\u0000\u03f3\u142e"+ - "\u0001\u0000\u0000\u0000\u03f5\u1437\u0001\u0000\u0000\u0000\u03f7\u143f"+ - "\u0001\u0000\u0000\u0000\u03f9\u1443\u0001\u0000\u0000\u0000\u03fb\u144f"+ - "\u0001\u0000\u0000\u0000\u03fd\u1457\u0001\u0000\u0000\u0000\u03ff\u145d"+ - "\u0001\u0000\u0000\u0000\u0401\u1463\u0001\u0000\u0000\u0000\u0403\u146b"+ - "\u0001\u0000\u0000\u0000\u0405\u1473\u0001\u0000\u0000\u0000\u0407\u1479"+ - "\u0001\u0000\u0000\u0000\u0409\u147e\u0001\u0000\u0000\u0000\u040b\u1485"+ - "\u0001\u0000\u0000\u0000\u040d\u148b\u0001\u0000\u0000\u0000\u040f\u1491"+ - "\u0001\u0000\u0000\u0000\u0411\u149a\u0001\u0000\u0000\u0000\u0413\u14a0"+ - "\u0001\u0000\u0000\u0000\u0415\u14a4\u0001\u0000\u0000\u0000\u0417\u14a9"+ - "\u0001\u0000\u0000\u0000\u0419\u14b0\u0001\u0000\u0000\u0000\u041b\u14b8"+ - "\u0001\u0000\u0000\u0000\u041d\u14c2\u0001\u0000\u0000\u0000\u041f\u14c9"+ - "\u0001\u0000\u0000\u0000\u0421\u14ce\u0001\u0000\u0000\u0000\u0423\u14d3"+ - "\u0001\u0000\u0000\u0000\u0425\u14d7\u0001\u0000\u0000\u0000\u0427\u14dc"+ - "\u0001\u0000\u0000\u0000\u0429\u14e1\u0001\u0000\u0000\u0000\u042b\u14e9"+ - "\u0001\u0000\u0000\u0000\u042d\u14f1\u0001\u0000\u0000\u0000\u042f\u14f5"+ - "\u0001\u0000\u0000\u0000\u0431\u14f9\u0001\u0000\u0000\u0000\u0433\u1503"+ - "\u0001\u0000\u0000\u0000\u0435\u1509\u0001\u0000\u0000\u0000\u0437\u150d"+ - "\u0001\u0000\u0000\u0000\u0439\u1511\u0001\u0000\u0000\u0000\u043b\u1514"+ - "\u0001\u0000\u0000\u0000\u043d\u151a\u0001\u0000\u0000\u0000\u043f\u1524"+ - "\u0001\u0000\u0000\u0000\u0441\u1528\u0001\u0000\u0000\u0000\u0443\u152b"+ - "\u0001\u0000\u0000\u0000\u0445\u1531\u0001\u0000\u0000\u0000\u0447\u1539"+ - "\u0001\u0000\u0000\u0000\u0449\u153f\u0001\u0000\u0000\u0000\u044b\u1545"+ - "\u0001\u0000\u0000\u0000\u044d\u154a\u0001\u0000\u0000\u0000\u044f\u154f"+ - "\u0001\u0000\u0000\u0000\u0451\u155a\u0001\u0000\u0000\u0000\u0453\u1560"+ - "\u0001\u0000\u0000\u0000\u0455\u156d\u0001\u0000\u0000\u0000\u0457\u1574"+ - "\u0001\u0000\u0000\u0000\u0459\u157c\u0001\u0000\u0000\u0000\u045b\u1581"+ - "\u0001\u0000\u0000\u0000\u045d\u1587\u0001\u0000\u0000\u0000\u045f\u158c"+ - "\u0001\u0000\u0000\u0000\u0461\u1592\u0001\u0000\u0000\u0000\u0463\u1597"+ - "\u0001\u0000\u0000\u0000\u0465\u159d\u0001\u0000\u0000\u0000\u0467\u15a3"+ - "\u0001\u0000\u0000\u0000\u0469\u15aa\u0001\u0000\u0000\u0000\u046b\u15ae"+ - "\u0001\u0000\u0000\u0000\u046d\u15b3\u0001\u0000\u0000\u0000\u046f\u15b7"+ - "\u0001\u0000\u0000\u0000\u0471\u15bc\u0001\u0000\u0000\u0000\u0473\u15c0"+ - "\u0001\u0000\u0000\u0000\u0475\u15c5\u0001\u0000\u0000\u0000\u0477\u15c9"+ - "\u0001\u0000\u0000\u0000\u0479\u15ce\u0001\u0000\u0000\u0000\u047b\u15d3"+ - "\u0001\u0000\u0000\u0000\u047d\u15d8\u0001\u0000\u0000\u0000\u047f\u15dd"+ - "\u0001\u0000\u0000\u0000\u0481\u15e3\u0001\u0000\u0000\u0000\u0483\u15e9"+ - "\u0001\u0000\u0000\u0000\u0485\u15ef\u0001\u0000\u0000\u0000\u0487\u15fa"+ - "\u0001\u0000\u0000\u0000\u0489\u1606\u0001\u0000\u0000\u0000\u048b\u1617"+ - "\u0001\u0000\u0000\u0000\u048d\u161d\u0001\u0000\u0000\u0000\u048f\u162a"+ - "\u0001\u0000\u0000\u0000\u0491\u1630\u0001\u0000\u0000\u0000\u0493\u1636"+ - "\u0001\u0000\u0000\u0000\u0495\u163c\u0001\u0000\u0000\u0000\u0497\u1640"+ - "\u0001\u0000\u0000\u0000\u0499\u1647\u0001\u0000\u0000\u0000\u049b\u1651"+ - "\u0001\u0000\u0000\u0000\u049d\u1658\u0001\u0000\u0000\u0000\u049f\u1660"+ - "\u0001\u0000\u0000\u0000\u04a1\u1667\u0001\u0000\u0000\u0000\u04a3\u166c"+ - "\u0001\u0000\u0000\u0000\u04a5\u1672\u0001\u0000\u0000\u0000\u04a7\u1676"+ - "\u0001\u0000\u0000\u0000\u04a9\u1682\u0001\u0000\u0000\u0000\u04ab\u1695"+ - "\u0001\u0000\u0000\u0000\u04ad\u16a1\u0001\u0000\u0000\u0000\u04af\u16af"+ - "\u0001\u0000\u0000\u0000\u04b1\u16be\u0001\u0000\u0000\u0000\u04b3\u16cb"+ - "\u0001\u0000\u0000\u0000\u04b5\u16d8\u0001\u0000\u0000\u0000\u04b7\u16e4"+ - "\u0001\u0000\u0000\u0000\u04b9\u16f1\u0001\u0000\u0000\u0000\u04bb\u1700"+ - "\u0001\u0000\u0000\u0000\u04bd\u170f\u0001\u0000\u0000\u0000\u04bf\u1725"+ - "\u0001\u0000\u0000\u0000\u04c1\u173b\u0001\u0000\u0000\u0000\u04c3\u1749"+ - "\u0001\u0000\u0000\u0000\u04c5\u1750\u0001\u0000\u0000\u0000\u04c7\u1755"+ - "\u0001\u0000\u0000\u0000\u04c9\u175b\u0001\u0000\u0000\u0000\u04cb\u1766"+ - "\u0001\u0000\u0000\u0000\u04cd\u1772\u0001\u0000\u0000\u0000\u04cf\u1782"+ - "\u0001\u0000\u0000\u0000\u04d1\u1792\u0001\u0000\u0000\u0000\u04d3\u1799"+ - "\u0001\u0000\u0000\u0000\u04d5\u17a0\u0001\u0000\u0000\u0000\u04d7\u17a9"+ - "\u0001\u0000\u0000\u0000\u04d9\u17b0\u0001\u0000\u0000\u0000\u04db\u17ba"+ - "\u0001\u0000\u0000\u0000\u04dd\u17c1\u0001\u0000\u0000\u0000\u04df\u17c5"+ - "\u0001\u0000\u0000\u0000\u04e1\u17d5\u0001\u0000\u0000\u0000\u04e3\u17de"+ - "\u0001\u0000\u0000\u0000\u04e5\u17e8\u0001\u0000\u0000\u0000\u04e7\u17f3"+ - "\u0001\u0000\u0000\u0000\u04e9\u17fc\u0001\u0000\u0000\u0000\u04eb\u1809"+ - "\u0001\u0000\u0000\u0000\u04ed\u1817\u0001\u0000\u0000\u0000\u04ef\u1828"+ - "\u0001\u0000\u0000\u0000\u04f1\u1832\u0001\u0000\u0000\u0000\u04f3\u1840"+ - "\u0001\u0000\u0000\u0000\u04f5\u184a\u0001\u0000\u0000\u0000\u04f7\u1859"+ - "\u0001\u0000\u0000\u0000\u04f9\u186a\u0001\u0000\u0000\u0000\u04fb\u186e"+ - "\u0001\u0000\u0000\u0000\u04fd\u1882\u0001\u0000\u0000\u0000\u04ff\u188c"+ - "\u0001\u0000\u0000\u0000\u0501\u18a2\u0001\u0000\u0000\u0000\u0503\u18af"+ - "\u0001\u0000\u0000\u0000\u0505\u18b7\u0001\u0000\u0000\u0000\u0507\u18bf"+ - "\u0001\u0000\u0000\u0000\u0509\u18c9\u0001\u0000\u0000\u0000\u050b\u18d6"+ - "\u0001\u0000\u0000\u0000\u050d\u18da\u0001\u0000\u0000\u0000\u050f\u18de"+ - "\u0001\u0000\u0000\u0000\u0511\u18e0\u0001\u0000\u0000\u0000\u0513\u18e3"+ - "\u0001\u0000\u0000\u0000\u0515\u18ec\u0001\u0000\u0000\u0000\u0517\u18ef"+ - "\u0001\u0000\u0000\u0000\u0519\u18f8\u0001\u0000\u0000\u0000\u051b\u18fc"+ - "\u0001\u0000\u0000\u0000\u051d\u1900\u0001\u0000\u0000\u0000\u051f\u1904"+ - "\u0001\u0000\u0000\u0000\u0521\u1908\u0001\u0000\u0000\u0000\u0523\u190b"+ - "\u0001\u0000\u0000\u0000\u0525\u1914\u0001\u0000\u0000\u0000\u0527\u191a"+ - "\u0001\u0000\u0000\u0000\u0529\u191d\u0001\u0000\u0000\u0000\u052b\u1921"+ - "\u0001\u0000\u0000\u0000\u052d\u192a\u0001\u0000\u0000\u0000\u052f\u1931"+ - "\u0001\u0000\u0000\u0000\u0531\u1934\u0001\u0000\u0000\u0000\u0533\u193c"+ - "\u0001\u0000\u0000\u0000\u0535\u193f\u0001\u0000\u0000\u0000\u0537\u1942"+ - "\u0001\u0000\u0000\u0000\u0539\u1945\u0001\u0000\u0000\u0000\u053b\u194d"+ - "\u0001\u0000\u0000\u0000\u053d\u1950\u0001\u0000\u0000\u0000\u053f\u1953"+ - "\u0001\u0000\u0000\u0000\u0541\u1955\u0001\u0000\u0000\u0000\u0543\u1977"+ - "\u0001\u0000\u0000\u0000\u0545\u197a\u0001\u0000\u0000\u0000\u0547\u197e"+ - "\u0001\u0000\u0000\u0000\u0549\u1986\u0001\u0000\u0000\u0000\u054b\u1996"+ - "\u0001\u0000\u0000\u0000\u054d\u19a1\u0001\u0000\u0000\u0000\u054f\u19a5"+ - "\u0001\u0000\u0000\u0000\u0551\u19b0\u0001\u0000\u0000\u0000\u0553\u19d7"+ - "\u0001\u0000\u0000\u0000\u0555\u1a0a\u0001\u0000\u0000\u0000\u0557\u1a22"+ - "\u0001\u0000\u0000\u0000\u0559\u1a25\u0001\u0000\u0000\u0000\u055b\u1a27"+ - "\u0001\u0000\u0000\u0000\u055d\u1a2c\u0001\u0000\u0000\u0000\u055f\u1a4b"+ - "\u0001\u0000\u0000\u0000\u0561\u1a4e\u0001\u0000\u0000\u0000\u0563\u1a53"+ - "\u0001\u0000\u0000\u0000\u0565\u1a60\u0001\u0000\u0000\u0000\u0567\u1a63"+ - "\u0001\u0000\u0000\u0000\u0569\u1a68\u0001\u0000\u0000\u0000\u056b\u1a6e"+ - "\u0001\u0000\u0000\u0000\u056d\u1a73\u0001\u0000\u0000\u0000\u056f\u1a78"+ - "\u0001\u0000\u0000\u0000\u0571\u1a7d\u0001\u0000\u0000\u0000\u0573\u1a82"+ - "\u0001\u0000\u0000\u0000\u0575\u1a93\u0001\u0000\u0000\u0000\u0577\u1a95"+ - "\u0001\u0000\u0000\u0000\u0579\u057a\u0005$\u0000\u0000\u057a\u0006\u0001"+ - "\u0000\u0000\u0000\u057b\u057c\u0005(\u0000\u0000\u057c\b\u0001\u0000"+ - "\u0000\u0000\u057d\u057e\u0005)\u0000\u0000\u057e\n\u0001\u0000\u0000"+ - "\u0000\u057f\u0580\u0005[\u0000\u0000\u0580\f\u0001\u0000\u0000\u0000"+ - "\u0581\u0582\u0005]\u0000\u0000\u0582\u000e\u0001\u0000\u0000\u0000\u0583"+ - "\u0584\u0005,\u0000\u0000\u0584\u0010\u0001\u0000\u0000\u0000\u0585\u0586"+ - "\u0005;\u0000\u0000\u0586\u0012\u0001\u0000\u0000\u0000\u0587\u0588\u0005"+ - ":\u0000\u0000\u0588\u0014\u0001\u0000\u0000\u0000\u0589\u058a\u0005*\u0000"+ - "\u0000\u058a\u0016\u0001\u0000\u0000\u0000\u058b\u058c\u0005=\u0000\u0000"+ - "\u058c\u0018\u0001\u0000\u0000\u0000\u058d\u058e\u0005.\u0000\u0000\u058e"+ - "\u001a\u0001\u0000\u0000\u0000\u058f\u0590\u0005+\u0000\u0000\u0590\u001c"+ - "\u0001\u0000\u0000\u0000\u0591\u0592\u0005-\u0000\u0000\u0592\u001e\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&\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,\u0001\u0000\u0000\u0000\u05a4\u05a5\u0005<\u0000"+ - "\u0000\u05a5\u05a6\u0005=\u0000\u0000\u05a6.\u0001\u0000\u0000\u0000\u05a7"+ - "\u05a8\u0005=\u0000\u0000\u05a8\u05a9\u0005>\u0000\u0000\u05a90\u0001"+ - "\u0000\u0000\u0000\u05aa\u05ab\u0005>\u0000\u0000\u05ab\u05ac\u0005=\u0000"+ - "\u0000\u05ac2\u0001\u0000\u0000\u0000\u05ad\u05ae\u0005.\u0000\u0000\u05ae"+ - "\u05af\u0005.\u0000\u0000\u05af4\u0001\u0000\u0000\u0000\u05b0\u05b1\u0005"+ - "<\u0000\u0000\u05b1\u05b2\u0005>\u0000\u0000\u05b26\u0001\u0000\u0000"+ - "\u0000\u05b3\u05b4\u0005:\u0000\u0000\u05b4\u05b5\u0005:\u0000\u0000\u05b5"+ - "8\u0001\u0000\u0000\u0000\u05b6\u05b7\u0005%\u0000\u0000\u05b7:\u0001"+ - "\u0000\u0000\u0000\u05b8\u05ba\u0005$\u0000\u0000\u05b9\u05bb\u0007\u0000"+ - "\u0000\u0000\u05ba\u05b9\u0001\u0000\u0000\u0000\u05bb\u05bc\u0001\u0000"+ - "\u0000\u0000\u05bc\u05ba\u0001\u0000\u0000\u0000\u05bc\u05bd\u0001\u0000"+ - "\u0000\u0000\u05bd<\u0001\u0000\u0000\u0000\u05be\u05ce\u0003A\u001e\u0000"+ - "\u05bf\u05c3\u0005+\u0000\u0000\u05c0\u05c1\u0005-\u0000\u0000\u05c1\u05c3"+ - "\u0004\u001c\u0000\u0000\u05c2\u05bf\u0001\u0000\u0000\u0000\u05c2\u05c0"+ - "\u0001\u0000\u0000\u0000\u05c3\u05c4\u0001\u0000\u0000\u0000\u05c4\u05c2"+ - "\u0001\u0000\u0000\u0000\u05c4\u05c5\u0001\u0000\u0000\u0000\u05c5\u05c9"+ - "\u0001\u0000\u0000\u0000\u05c6\u05ca\u0003A\u001e\u0000\u05c7\u05c8\u0005"+ - "/\u0000\u0000\u05c8\u05ca\u0004\u001c\u0001\u0000\u05c9\u05c6\u0001\u0000"+ - "\u0000\u0000\u05c9\u05c7\u0001\u0000\u0000\u0000\u05ca\u05ce\u0001\u0000"+ - "\u0000\u0000\u05cb\u05cc\u0005/\u0000\u0000\u05cc\u05ce\u0004\u001c\u0002"+ - "\u0000\u05cd\u05be\u0001\u0000\u0000\u0000\u05cd\u05c2\u0001\u0000\u0000"+ - "\u0000\u05cd\u05cb\u0001\u0000\u0000\u0000\u05ce\u05cf\u0001\u0000\u0000"+ - "\u0000\u05cf\u05cd\u0001\u0000\u0000\u0000\u05cf\u05d0\u0001\u0000\u0000"+ - "\u0000\u05d0\u05d3\u0001\u0000\u0000\u0000\u05d1\u05d3\u0007\u0001\u0000"+ - "\u0000\u05d2\u05cd\u0001\u0000\u0000\u0000\u05d2\u05d1\u0001\u0000\u0000"+ - "\u0000\u05d3\u05d4\u0001\u0000\u0000\u0000\u05d4\u05d5\u0006\u001c\u0000"+ - "\u0000\u05d5>\u0001\u0000\u0000\u0000\u05d6\u05dc\u0003C\u001f\u0000\u05d7"+ - "\u05d8\u0005-\u0000\u0000\u05d8\u05dc\u0004\u001d\u0003\u0000\u05d9\u05da"+ - "\u0005/\u0000\u0000\u05da\u05dc\u0004\u001d\u0004\u0000\u05db\u05d6\u0001"+ - "\u0000\u0000\u0000\u05db\u05d7\u0001\u0000\u0000\u0000\u05db\u05d9\u0001"+ - "\u0000\u0000\u0000\u05dc\u05df\u0001\u0000\u0000\u0000\u05dd\u05db\u0001"+ - "\u0000\u0000\u0000\u05dd\u05de\u0001\u0000\u0000\u0000\u05de\u05e0\u0001"+ - "\u0000\u0000\u0000\u05df\u05dd\u0001\u0000\u0000\u0000\u05e0\u05e2\u0003"+ - "E \u0000\u05e1\u05e3\u0003=\u001c\u0000\u05e2\u05e1\u0001\u0000\u0000"+ - "\u0000\u05e2\u05e3\u0001\u0000\u0000\u0000\u05e3\u05e7\u0001\u0000\u0000"+ - "\u0000\u05e4\u05e8\u0005+\u0000\u0000\u05e5\u05e6\u0005-\u0000\u0000\u05e6"+ - "\u05e8\u0004\u001d\u0005\u0000\u05e7\u05e4\u0001\u0000\u0000\u0000\u05e7"+ - "\u05e5\u0001\u0000\u0000\u0000\u05e8\u05e9\u0001\u0000\u0000\u0000\u05e9"+ - "\u05e7\u0001\u0000\u0000\u0000\u05e9\u05ea\u0001\u0000\u0000\u0000\u05ea"+ - "\u05eb\u0001\u0000\u0000\u0000\u05eb\u05ec\u0006\u001d\u0001\u0000\u05ec"+ - "@\u0001\u0000\u0000\u0000\u05ed\u05ee\u0007\u0002\u0000\u0000\u05eeB\u0001"+ - "\u0000\u0000\u0000\u05ef\u05f0\u0007\u0003\u0000\u0000\u05f0D\u0001\u0000"+ - "\u0000\u0000\u05f1\u05f2\u0007\u0004\u0000\u0000\u05f2F\u0001\u0000\u0000"+ - "\u0000\u05f3\u05f4\u0007\u0005\u0000\u0000\u05f4\u05f5\u0007\u0006\u0000"+ - "\u0000\u05f5\u05f6\u0007\u0006\u0000\u0000\u05f6H\u0001\u0000\u0000\u0000"+ - "\u05f7\u05f8\u0007\u0005\u0000\u0000\u05f8\u05f9\u0007\u0007\u0000\u0000"+ - "\u05f9\u05fa\u0007\u0005\u0000\u0000\u05fa\u05fb\u0007\u0006\u0000\u0000"+ - "\u05fb\u05fc\u0007\b\u0000\u0000\u05fc\u05fd\u0007\t\u0000\u0000\u05fd"+ - "\u05fe\u0007\n\u0000\u0000\u05feJ\u0001\u0000\u0000\u0000\u05ff\u0600"+ - "\u0007\u0005\u0000\u0000\u0600\u0601\u0007\u0007\u0000\u0000\u0601\u0602"+ - "\u0007\u0005\u0000\u0000\u0602\u0603\u0007\u0006\u0000\u0000\u0603\u0604"+ - "\u0007\b\u0000\u0000\u0604\u0605\u0007\u000b\u0000\u0000\u0605\u0606\u0007"+ - "\n\u0000\u0000\u0606L\u0001\u0000\u0000\u0000\u0607\u0608\u0007\u0005"+ - "\u0000\u0000\u0608\u0609\u0007\u0007\u0000\u0000\u0609\u060a\u0007\f\u0000"+ - "\u0000\u060aN\u0001\u0000\u0000\u0000\u060b\u060c\u0007\u0005\u0000\u0000"+ - "\u060c\u060d\u0007\u0007\u0000\u0000\u060d\u060e\u0007\b\u0000\u0000\u060e"+ - "P\u0001\u0000\u0000\u0000\u060f\u0610\u0007\u0005\u0000\u0000\u0610\u0611"+ - "\u0007\r\u0000\u0000\u0611\u0612\u0007\r\u0000\u0000\u0612\u0613\u0007"+ - "\u0005\u0000\u0000\u0613\u0614\u0007\b\u0000\u0000\u0614R\u0001\u0000"+ - "\u0000\u0000\u0615\u0616\u0007\u0005\u0000\u0000\u0616\u0617\u0007\t\u0000"+ - "\u0000\u0617T\u0001\u0000\u0000\u0000\u0618\u0619\u0007\u0005\u0000\u0000"+ - "\u0619\u061a\u0007\t\u0000\u0000\u061a\u061b\u0007\u000e\u0000\u0000\u061b"+ - "V\u0001\u0000\u0000\u0000\u061c\u061d\u0007\u0005\u0000\u0000\u061d\u061e"+ - "\u0007\t\u0000\u0000\u061e\u061f\u0007\b\u0000\u0000\u061f\u0620\u0007"+ - "\u000f\u0000\u0000\u0620\u0621\u0007\u000f\u0000\u0000\u0621\u0622\u0007"+ - "\n\u0000\u0000\u0622\u0623\u0007\u0010\u0000\u0000\u0623\u0624\u0007\r"+ - "\u0000\u0000\u0624\u0625\u0007\u0011\u0000\u0000\u0625\u0626\u0007\u000e"+ - "\u0000\u0000\u0626X\u0001\u0000\u0000\u0000\u0627\u0628\u0007\u0012\u0000"+ - "\u0000\u0628\u0629\u0007\u0013\u0000\u0000\u0629\u062a\u0007\u0010\u0000"+ - "\u0000\u062a\u062b\u0007\u0014\u0000\u0000\u062bZ\u0001\u0000\u0000\u0000"+ - "\u062c\u062d\u0007\u000e\u0000\u0000\u062d\u062e\u0007\u0005\u0000\u0000"+ - "\u062e\u062f\u0007\t\u0000\u0000\u062f\u0630\u0007\n\u0000\u0000\u0630"+ - "\\\u0001\u0000\u0000\u0000\u0631\u0632\u0007\u000e\u0000\u0000\u0632\u0633"+ - "\u0007\u0005\u0000\u0000\u0633\u0634\u0007\t\u0000\u0000\u0634\u0635\u0007"+ - "\u0010\u0000\u0000\u0635^\u0001\u0000\u0000\u0000\u0636\u0637\u0007\u000e"+ - "\u0000\u0000\u0637\u0638\u0007\u0014\u0000\u0000\u0638\u0639\u0007\n\u0000"+ - "\u0000\u0639\u063a\u0007\u000e\u0000\u0000\u063a\u063b\u0007\u0015\u0000"+ - "\u0000\u063b`\u0001\u0000\u0000\u0000\u063c\u063d\u0007\u000e\u0000\u0000"+ - "\u063d\u063e\u0007\u0013\u0000\u0000\u063e\u063f\u0007\u0006\u0000\u0000"+ - "\u063f\u0640\u0007\u0006\u0000\u0000\u0640\u0641\u0007\u0005\u0000\u0000"+ - "\u0641\u0642\u0007\u0010\u0000\u0000\u0642\u0643\u0007\n\u0000\u0000\u0643"+ - "b\u0001\u0000\u0000\u0000\u0644\u0645\u0007\u000e\u0000\u0000\u0645\u0646"+ - "\u0007\u0013\u0000\u0000\u0646\u0647\u0007\u0006\u0000\u0000\u0647\u0648"+ - "\u0007\u0016\u0000\u0000\u0648\u0649\u0007\u000f\u0000\u0000\u0649\u064a"+ - "\u0007\u0007\u0000\u0000\u064ad\u0001\u0000\u0000\u0000\u064b\u064c\u0007"+ - "\u000e\u0000\u0000\u064c\u064d\u0007\u0013\u0000\u0000\u064d\u064e\u0007"+ - "\u0007\u0000\u0000\u064e\u064f\u0007\t\u0000\u0000\u064f\u0650\u0007\u0010"+ - "\u0000\u0000\u0650\u0651\u0007\r\u0000\u0000\u0651\u0652\u0007\u0005\u0000"+ - "\u0000\u0652\u0653\u0007\u0011\u0000\u0000\u0653\u0654\u0007\u0007\u0000"+ - "\u0000\u0654\u0655\u0007\u0010\u0000\u0000\u0655f\u0001\u0000\u0000\u0000"+ - "\u0656\u0657\u0007\u000e\u0000\u0000\u0657\u0658\u0007\r\u0000\u0000\u0658"+ - "\u0659\u0007\n\u0000\u0000\u0659\u065a\u0007\u0005\u0000\u0000\u065a\u065b"+ - "\u0007\u0010\u0000\u0000\u065b\u065c\u0007\n\u0000\u0000\u065ch\u0001"+ - "\u0000\u0000\u0000\u065d\u065e\u0007\u000e\u0000\u0000\u065e\u065f\u0007"+ - "\u0016\u0000\u0000\u065f\u0660\u0007\r\u0000\u0000\u0660\u0661\u0007\r"+ - "\u0000\u0000\u0661\u0662\u0007\n\u0000\u0000\u0662\u0663\u0007\u0007\u0000"+ - "\u0000\u0663\u0664\u0007\u0010\u0000\u0000\u0664\u0665\u0005_\u0000\u0000"+ - "\u0665\u0666\u0007\u000e\u0000\u0000\u0666\u0667\u0007\u0005\u0000\u0000"+ - "\u0667\u0668\u0007\u0010\u0000\u0000\u0668\u0669\u0007\u0005\u0000\u0000"+ - "\u0669\u066a\u0007\u0006\u0000\u0000\u066a\u066b\u0007\u0013\u0000\u0000"+ - "\u066b\u066c\u0007\u0017\u0000\u0000\u066cj\u0001\u0000\u0000\u0000\u066d"+ - "\u066e\u0007\u000e\u0000\u0000\u066e\u066f\u0007\u0016\u0000\u0000\u066f"+ - "\u0670\u0007\r\u0000\u0000\u0670\u0671\u0007\r\u0000\u0000\u0671\u0672"+ - "\u0007\n\u0000\u0000\u0672\u0673\u0007\u0007\u0000\u0000\u0673\u0674\u0007"+ - "\u0010\u0000\u0000\u0674\u0675\u0005_\u0000\u0000\u0675\u0676\u0007\f"+ - "\u0000\u0000\u0676\u0677\u0007\u0005\u0000\u0000\u0677\u0678\u0007\u0010"+ - "\u0000\u0000\u0678\u0679\u0007\n\u0000\u0000\u0679l\u0001\u0000\u0000"+ - "\u0000\u067a\u067b\u0007\u000e\u0000\u0000\u067b\u067c\u0007\u0016\u0000"+ - "\u0000\u067c\u067d\u0007\r\u0000\u0000\u067d\u067e\u0007\r\u0000\u0000"+ - "\u067e\u067f\u0007\n\u0000\u0000\u067f\u0680\u0007\u0007\u0000\u0000\u0680"+ - "\u0681\u0007\u0010\u0000\u0000\u0681\u0682\u0005_\u0000\u0000\u0682\u0683"+ - "\u0007\r\u0000\u0000\u0683\u0684\u0007\u0013\u0000\u0000\u0684\u0685\u0007"+ - "\u0006\u0000\u0000\u0685\u0686\u0007\n\u0000\u0000\u0686n\u0001\u0000"+ - "\u0000\u0000\u0687\u0688\u0007\u000e\u0000\u0000\u0688\u0689\u0007\u0016"+ - "\u0000\u0000\u0689\u068a\u0007\r\u0000\u0000\u068a\u068b\u0007\r\u0000"+ - "\u0000\u068b\u068c\u0007\n\u0000\u0000\u068c\u068d\u0007\u0007\u0000\u0000"+ - "\u068d\u068e\u0007\u0010\u0000\u0000\u068e\u068f\u0005_\u0000\u0000\u068f"+ - "\u0690\u0007\u0010\u0000\u0000\u0690\u0691\u0007\u0011\u0000\u0000\u0691"+ - "\u0692\u0007\u000f\u0000\u0000\u0692\u0693\u0007\n\u0000\u0000\u0693p"+ - "\u0001\u0000\u0000\u0000\u0694\u0695\u0007\u000e\u0000\u0000\u0695\u0696"+ - "\u0007\u0016\u0000\u0000\u0696\u0697\u0007\r\u0000\u0000\u0697\u0698\u0007"+ - "\r\u0000\u0000\u0698\u0699\u0007\n\u0000\u0000\u0699\u069a\u0007\u0007"+ - "\u0000\u0000\u069a\u069b\u0007\u0010\u0000\u0000\u069b\u069c\u0005_\u0000"+ - "\u0000\u069c\u069d\u0007\u0010\u0000\u0000\u069d\u069e\u0007\u0011\u0000"+ - "\u0000\u069e\u069f\u0007\u000f\u0000\u0000\u069f\u06a0\u0007\n\u0000\u0000"+ - "\u06a0\u06a1\u0007\t\u0000\u0000\u06a1\u06a2\u0007\u0010\u0000\u0000\u06a2"+ - "\u06a3\u0007\u0005\u0000\u0000\u06a3\u06a4\u0007\u000f\u0000\u0000\u06a4"+ - "\u06a5\u0007\u0018\u0000\u0000\u06a5r\u0001\u0000\u0000\u0000\u06a6\u06a7"+ - "\u0007\u000e\u0000\u0000\u06a7\u06a8\u0007\u0016\u0000\u0000\u06a8\u06a9"+ - "\u0007\r\u0000\u0000\u06a9\u06aa\u0007\r\u0000\u0000\u06aa\u06ab\u0007"+ - "\n\u0000\u0000\u06ab\u06ac\u0007\u0007\u0000\u0000\u06ac\u06ad\u0007\u0010"+ - "\u0000\u0000\u06ad\u06ae\u0005_\u0000\u0000\u06ae\u06af\u0007\u0016\u0000"+ - "\u0000\u06af\u06b0\u0007\t\u0000\u0000\u06b0\u06b1\u0007\n\u0000\u0000"+ - "\u06b1\u06b2\u0007\r\u0000\u0000\u06b2t\u0001\u0000\u0000\u0000\u06b3"+ - "\u06b4\u0007\f\u0000\u0000\u06b4\u06b5\u0007\n\u0000\u0000\u06b5\u06b6"+ - "\u0007\u0019\u0000\u0000\u06b6\u06b7\u0007\u0005\u0000\u0000\u06b7\u06b8"+ - "\u0007\u0016\u0000\u0000\u06b8\u06b9\u0007\u0006\u0000\u0000\u06b9\u06ba"+ - "\u0007\u0010\u0000\u0000\u06bav\u0001\u0000\u0000\u0000\u06bb\u06bc\u0007"+ - "\f\u0000\u0000\u06bc\u06bd\u0007\n\u0000\u0000\u06bd\u06be\u0007\u0019"+ - "\u0000\u0000\u06be\u06bf\u0007\n\u0000\u0000\u06bf\u06c0\u0007\r\u0000"+ - "\u0000\u06c0\u06c1\u0007\r\u0000\u0000\u06c1\u06c2\u0007\u0005\u0000\u0000"+ - "\u06c2\u06c3\u0007\u0012\u0000\u0000\u06c3\u06c4\u0007\u0006\u0000\u0000"+ - "\u06c4\u06c5\u0007\n\u0000\u0000\u06c5x\u0001\u0000\u0000\u0000\u06c6"+ - "\u06c7\u0007\f\u0000\u0000\u06c7\u06c8\u0007\n\u0000\u0000\u06c8\u06c9"+ - "\u0007\t\u0000\u0000\u06c9\u06ca\u0007\u000e\u0000\u0000\u06caz\u0001"+ - "\u0000\u0000\u0000\u06cb\u06cc\u0007\f\u0000\u0000\u06cc\u06cd\u0007\u0011"+ - "\u0000\u0000\u06cd\u06ce\u0007\t\u0000\u0000\u06ce\u06cf\u0007\u0010\u0000"+ - "\u0000\u06cf\u06d0\u0007\u0011\u0000\u0000\u06d0\u06d1\u0007\u0007\u0000"+ - "\u0000\u06d1\u06d2\u0007\u000e\u0000\u0000\u06d2\u06d3\u0007\u0010\u0000"+ - "\u0000\u06d3|\u0001\u0000\u0000\u0000\u06d4\u06d5\u0007\f\u0000\u0000"+ - "\u06d5\u06d6\u0007\u0013\u0000\u0000\u06d6~\u0001\u0000\u0000\u0000\u06d7"+ - "\u06d8\u0007\n\u0000\u0000\u06d8\u06d9\u0007\u0006\u0000\u0000\u06d9\u06da"+ - "\u0007\t\u0000\u0000\u06da\u06db\u0007\n\u0000\u0000\u06db\u0080\u0001"+ - "\u0000\u0000\u0000\u06dc\u06dd\u0007\n\u0000\u0000\u06dd\u06de\u0007\u001a"+ - "\u0000\u0000\u06de\u06df\u0007\u000e\u0000\u0000\u06df\u06e0\u0007\n\u0000"+ - "\u0000\u06e0\u06e1\u0007\u0018\u0000\u0000\u06e1\u06e2\u0007\u0010\u0000"+ - "\u0000\u06e2\u0082\u0001\u0000\u0000\u0000\u06e3\u06e4\u0007\u0019\u0000"+ - "\u0000\u06e4\u06e5\u0007\u0005\u0000\u0000\u06e5\u06e6\u0007\u0006\u0000"+ - "\u0000\u06e6\u06e7\u0007\t\u0000\u0000\u06e7\u06e8\u0007\n\u0000\u0000"+ - "\u06e8\u0084\u0001\u0000\u0000\u0000\u06e9\u06ea\u0007\u0019\u0000\u0000"+ - "\u06ea\u06eb\u0007\n\u0000\u0000\u06eb\u06ec\u0007\u0010\u0000\u0000\u06ec"+ - "\u06ed\u0007\u000e\u0000\u0000\u06ed\u06ee\u0007\u0014\u0000\u0000\u06ee"+ - "\u0086\u0001\u0000\u0000\u0000\u06ef\u06f0\u0007\u0019\u0000\u0000\u06f0"+ - "\u06f1\u0007\u0013\u0000\u0000\u06f1\u06f2\u0007\r\u0000\u0000\u06f2\u0088"+ - "\u0001\u0000\u0000\u0000\u06f3\u06f4\u0007\u0019\u0000\u0000\u06f4\u06f5"+ - "\u0007\u0013\u0000\u0000\u06f5\u06f6\u0007\r\u0000\u0000\u06f6\u06f7\u0007"+ - "\n\u0000\u0000\u06f7\u06f8\u0007\u0011\u0000\u0000\u06f8\u06f9\u0007\u0017"+ - "\u0000\u0000\u06f9\u06fa\u0007\u0007\u0000\u0000\u06fa\u008a\u0001\u0000"+ - "\u0000\u0000\u06fb\u06fc\u0007\u0019\u0000\u0000\u06fc\u06fd\u0007\r\u0000"+ - "\u0000\u06fd\u06fe\u0007\u0013\u0000\u0000\u06fe\u06ff\u0007\u000f\u0000"+ - "\u0000\u06ff\u008c\u0001\u0000\u0000\u0000\u0700\u0701\u0007\u0017\u0000"+ - "\u0000\u0701\u0702\u0007\r\u0000\u0000\u0702\u0703\u0007\u0005\u0000\u0000"+ - "\u0703\u0704\u0007\u0007\u0000\u0000\u0704\u0705\u0007\u0010\u0000\u0000"+ - "\u0705\u008e\u0001\u0000\u0000\u0000\u0706\u0707\u0007\u0017\u0000\u0000"+ - "\u0707\u0708\u0007\r\u0000\u0000\u0708\u0709\u0007\u0013\u0000\u0000\u0709"+ - "\u070a\u0007\u0016\u0000\u0000\u070a\u070b\u0007\u0018\u0000\u0000\u070b"+ - "\u0090\u0001\u0000\u0000\u0000\u070c\u070d\u0007\u0014\u0000\u0000\u070d"+ - "\u070e\u0007\u0005\u0000\u0000\u070e\u070f\u0007\u001b\u0000\u0000\u070f"+ - "\u0710\u0007\u0011\u0000\u0000\u0710\u0711\u0007\u0007\u0000\u0000\u0711"+ - "\u0712\u0007\u0017\u0000\u0000\u0712\u0092\u0001\u0000\u0000\u0000\u0713"+ - "\u0714\u0007\u0011\u0000\u0000\u0714\u0715\u0007\u0007\u0000\u0000\u0715"+ - "\u0094\u0001\u0000\u0000\u0000\u0716\u0717\u0007\u0011\u0000\u0000\u0717"+ - "\u0718\u0007\u0007\u0000\u0000\u0718\u0719\u0007\u0011\u0000\u0000\u0719"+ - "\u071a\u0007\u0010\u0000\u0000\u071a\u071b\u0007\u0011\u0000\u0000\u071b"+ - "\u071c\u0007\u0005\u0000\u0000\u071c\u071d\u0007\u0006\u0000\u0000\u071d"+ - "\u071e\u0007\u0006\u0000\u0000\u071e\u071f\u0007\b\u0000\u0000\u071f\u0096"+ - "\u0001\u0000\u0000\u0000\u0720\u0721\u0007\u0011\u0000\u0000\u0721\u0722"+ - "\u0007\u0007\u0000\u0000\u0722\u0723\u0007\u0010\u0000\u0000\u0723\u0724"+ - "\u0007\n\u0000\u0000\u0724\u0725\u0007\r\u0000\u0000\u0725\u0726\u0007"+ - "\t\u0000\u0000\u0726\u0727\u0007\n\u0000\u0000\u0727\u0728\u0007\u000e"+ - "\u0000\u0000\u0728\u0729\u0007\u0010\u0000\u0000\u0729\u0098\u0001\u0000"+ - "\u0000\u0000\u072a\u072b\u0007\u0011\u0000\u0000\u072b\u072c\u0007\u0007"+ - "\u0000\u0000\u072c\u072d\u0007\u0010\u0000\u0000\u072d\u072e\u0007\u0013"+ - "\u0000\u0000\u072e\u009a\u0001\u0000\u0000\u0000\u072f\u0730\u0007\u0006"+ - "\u0000\u0000\u0730\u0731\u0007\u0005\u0000\u0000\u0731\u0732\u0007\u0010"+ - "\u0000\u0000\u0732\u0733\u0007\n\u0000\u0000\u0733\u0734\u0007\r\u0000"+ - "\u0000\u0734\u0735\u0007\u0005\u0000\u0000\u0735\u0736\u0007\u0006\u0000"+ - "\u0000\u0736\u009c\u0001\u0000\u0000\u0000\u0737\u0738\u0007\u0006\u0000"+ - "\u0000\u0738\u0739\u0007\n\u0000\u0000\u0739\u073a\u0007\u0005\u0000\u0000"+ - "\u073a\u073b\u0007\f\u0000\u0000\u073b\u073c\u0007\u0011\u0000\u0000\u073c"+ - "\u073d\u0007\u0007\u0000\u0000\u073d\u073e\u0007\u0017\u0000\u0000\u073e"+ - "\u009e\u0001\u0000\u0000\u0000\u073f\u0740\u0007\u0006\u0000\u0000\u0740"+ - "\u0741\u0007\u0011\u0000\u0000\u0741\u0742\u0007\u000f\u0000\u0000\u0742"+ - "\u0743\u0007\u0011\u0000\u0000\u0743\u0744\u0007\u0010\u0000\u0000\u0744"+ - "\u00a0\u0001\u0000\u0000\u0000\u0745\u0746\u0007\u0006\u0000\u0000\u0746"+ - "\u0747\u0007\u0013\u0000\u0000\u0747\u0748\u0007\u000e\u0000\u0000\u0748"+ - "\u0749\u0007\u0005\u0000\u0000\u0749\u074a\u0007\u0006\u0000\u0000\u074a"+ - "\u074b\u0007\u0010\u0000\u0000\u074b\u074c\u0007\u0011\u0000\u0000\u074c"+ - "\u074d\u0007\u000f\u0000\u0000\u074d\u074e\u0007\n\u0000\u0000\u074e\u00a2"+ - "\u0001\u0000\u0000\u0000\u074f\u0750\u0007\u0006\u0000\u0000\u0750\u0751"+ - "\u0007\u0013\u0000\u0000\u0751\u0752\u0007\u000e\u0000\u0000\u0752\u0753"+ - "\u0007\u0005\u0000\u0000\u0753\u0754\u0007\u0006\u0000\u0000\u0754\u0755"+ - "\u0007\u0010\u0000\u0000\u0755\u0756\u0007\u0011\u0000\u0000\u0756\u0757"+ - "\u0007\u000f\u0000\u0000\u0757\u0758\u0007\n\u0000\u0000\u0758\u0759\u0007"+ - "\t\u0000\u0000\u0759\u075a\u0007\u0010\u0000\u0000\u075a\u075b\u0007\u0005"+ - "\u0000\u0000\u075b\u075c\u0007\u000f\u0000\u0000\u075c\u075d\u0007\u0018"+ - "\u0000\u0000\u075d\u00a4\u0001\u0000\u0000\u0000\u075e\u075f\u0007\u0007"+ - "\u0000\u0000\u075f\u0760\u0007\u0013\u0000\u0000\u0760\u0761\u0007\u0010"+ - "\u0000\u0000\u0761\u00a6\u0001\u0000\u0000\u0000\u0762\u0763\u0007\u0007"+ - "\u0000\u0000\u0763\u0764\u0007\u0016\u0000\u0000\u0764\u0765\u0007\u0006"+ - "\u0000\u0000\u0765\u0766\u0007\u0006\u0000\u0000\u0766\u00a8\u0001\u0000"+ - "\u0000\u0000\u0767\u0768\u0007\u0013\u0000\u0000\u0768\u0769\u0007\u0019"+ - "\u0000\u0000\u0769\u076a\u0007\u0019\u0000\u0000\u076a\u076b\u0007\t\u0000"+ - "\u0000\u076b\u076c\u0007\n\u0000\u0000\u076c\u076d\u0007\u0010\u0000\u0000"+ - "\u076d\u00aa\u0001\u0000\u0000\u0000\u076e\u076f\u0007\u0013\u0000\u0000"+ - "\u076f\u0770\u0007\u0007\u0000\u0000\u0770\u00ac\u0001\u0000\u0000\u0000"+ - "\u0771\u0772\u0007\u0013\u0000\u0000\u0772\u0773\u0007\u0007\u0000\u0000"+ - "\u0773\u0774\u0007\u0006\u0000\u0000\u0774\u0775\u0007\b\u0000\u0000\u0775"+ - "\u00ae\u0001\u0000\u0000\u0000\u0776\u0777\u0007\u0013\u0000\u0000\u0777"+ - "\u0778\u0007\r\u0000\u0000\u0778\u00b0\u0001\u0000\u0000\u0000\u0779\u077a"+ - "\u0007\u0013\u0000\u0000\u077a\u077b\u0007\r\u0000\u0000\u077b\u077c\u0007"+ - "\f\u0000\u0000\u077c\u077d\u0007\n\u0000\u0000\u077d\u077e\u0007\r\u0000"+ - "\u0000\u077e\u00b2\u0001\u0000\u0000\u0000\u077f\u0780\u0007\u0018\u0000"+ - "\u0000\u0780\u0781\u0007\u0006\u0000\u0000\u0781\u0782\u0007\u0005\u0000"+ - "\u0000\u0782\u0783\u0007\u000e\u0000\u0000\u0783\u0784\u0007\u0011\u0000"+ - "\u0000\u0784\u0785\u0007\u0007\u0000\u0000\u0785\u0786\u0007\u0017\u0000"+ - "\u0000\u0786\u00b4\u0001\u0000\u0000\u0000\u0787\u0788\u0007\u0018\u0000"+ - "\u0000\u0788\u0789\u0007\r\u0000\u0000\u0789\u078a\u0007\u0011\u0000\u0000"+ - "\u078a\u078b\u0007\u000f\u0000\u0000\u078b\u078c\u0007\u0005\u0000\u0000"+ - "\u078c\u078d\u0007\r\u0000\u0000\u078d\u078e\u0007\b\u0000\u0000\u078e"+ - "\u00b6\u0001\u0000\u0000\u0000\u078f\u0790\u0007\r\u0000\u0000\u0790\u0791"+ - "\u0007\n\u0000\u0000\u0791\u0792\u0007\u0019\u0000\u0000\u0792\u0793\u0007"+ - "\n\u0000\u0000\u0793\u0794\u0007\r\u0000\u0000\u0794\u0795\u0007\n\u0000"+ - "\u0000\u0795\u0796\u0007\u0007\u0000\u0000\u0796\u0797\u0007\u000e\u0000"+ - "\u0000\u0797\u0798\u0007\n\u0000\u0000\u0798\u0799\u0007\t\u0000\u0000"+ - "\u0799\u00b8\u0001\u0000\u0000\u0000\u079a\u079b\u0007\r\u0000\u0000\u079b"+ - "\u079c\u0007\n\u0000\u0000\u079c\u079d\u0007\u0010\u0000\u0000\u079d\u079e"+ - "\u0007\u0016\u0000\u0000\u079e\u079f\u0007\r\u0000\u0000\u079f\u07a0\u0007"+ - "\u0007\u0000\u0000\u07a0\u07a1\u0007\u0011\u0000\u0000\u07a1\u07a2\u0007"+ - "\u0007\u0000\u0000\u07a2\u07a3\u0007\u0017\u0000\u0000\u07a3\u00ba\u0001"+ - "\u0000\u0000\u0000\u07a4\u07a5\u0007\t\u0000\u0000\u07a5\u07a6\u0007\n"+ - "\u0000\u0000\u07a6\u07a7\u0007\u0006\u0000\u0000\u07a7\u07a8\u0007\n\u0000"+ - "\u0000\u07a8\u07a9\u0007\u000e\u0000\u0000\u07a9\u07aa\u0007\u0010\u0000"+ - "\u0000\u07aa\u00bc\u0001\u0000\u0000\u0000\u07ab\u07ac\u0007\t\u0000\u0000"+ - "\u07ac\u07ad\u0007\n\u0000\u0000\u07ad\u07ae\u0007\t\u0000\u0000\u07ae"+ - "\u07af\u0007\t\u0000\u0000\u07af\u07b0\u0007\u0011\u0000\u0000\u07b0\u07b1"+ - "\u0007\u0013\u0000\u0000\u07b1\u07b2\u0007\u0007\u0000\u0000\u07b2\u07b3"+ - "\u0005_\u0000\u0000\u07b3\u07b4\u0007\u0016\u0000\u0000\u07b4\u07b5\u0007"+ - "\t\u0000\u0000\u07b5\u07b6\u0007\n\u0000\u0000\u07b6\u07b7\u0007\r\u0000"+ - "\u0000\u07b7\u00be\u0001\u0000\u0000\u0000\u07b8\u07b9\u0007\t\u0000\u0000"+ - "\u07b9\u07ba\u0007\u0013\u0000\u0000\u07ba\u07bb\u0007\u000f\u0000\u0000"+ - "\u07bb\u07bc\u0007\n\u0000\u0000\u07bc\u00c0\u0001\u0000\u0000\u0000\u07bd"+ - "\u07be\u0007\t\u0000\u0000\u07be\u07bf\u0007\b\u0000\u0000\u07bf\u07c0"+ - "\u0007\u000f\u0000\u0000\u07c0\u07c1\u0007\u000f\u0000\u0000\u07c1\u07c2"+ - "\u0007\n\u0000\u0000\u07c2\u07c3\u0007\u0010\u0000\u0000\u07c3\u07c4\u0007"+ - "\r\u0000\u0000\u07c4\u07c5\u0007\u0011\u0000\u0000\u07c5\u07c6\u0007\u000e"+ - "\u0000\u0000\u07c6\u00c2\u0001\u0000\u0000\u0000\u07c7\u07c8\u0007\u0010"+ - "\u0000\u0000\u07c8\u07c9\u0007\u0005\u0000\u0000\u07c9\u07ca\u0007\u0012"+ - "\u0000\u0000\u07ca\u07cb\u0007\u0006\u0000\u0000\u07cb\u07cc\u0007\n\u0000"+ - "\u0000\u07cc\u00c4\u0001\u0000\u0000\u0000\u07cd\u07ce\u0007\u0010\u0000"+ - "\u0000\u07ce\u07cf\u0007\u0014\u0000\u0000\u07cf\u07d0\u0007\n\u0000\u0000"+ - "\u07d0\u07d1\u0007\u0007\u0000\u0000\u07d1\u00c6\u0001\u0000\u0000\u0000"+ - "\u07d2\u07d3\u0007\u0010\u0000\u0000\u07d3\u07d4\u0007\u0013\u0000\u0000"+ - "\u07d4\u00c8\u0001\u0000\u0000\u0000\u07d5\u07d6\u0007\u0010\u0000\u0000"+ - "\u07d6\u07d7\u0007\u0013\u0000\u0000\u07d7\u07d8\u0007\u0018\u0000\u0000"+ - "\u07d8\u07d9\u0007\u0011\u0000\u0000\u07d9\u07da\u0007\u000e\u0000\u0000"+ - "\u07da\u00ca\u0001\u0000\u0000\u0000\u07db\u07dc\u0007\t\u0000\u0000\u07dc"+ - "\u07dd\u0007\u0010\u0000\u0000\u07dd\u07de\u0007\r\u0000\u0000\u07de\u07df"+ - "\u0007\n\u0000\u0000\u07df\u07e0\u0007\u0005\u0000\u0000\u07e0\u07e1\u0007"+ - "\u000f\u0000\u0000\u07e1\u00cc\u0001\u0000\u0000\u0000\u07e2\u07e3\u0007"+ - "\u000b\u0000\u0000\u07e3\u07e4\u0007\u001b\u0000\u0000\u07e4\u07e5\u0007"+ - "\u0011\u0000\u0000\u07e5\u07e6\u0007\n\u0000\u0000\u07e6\u07e7\u0007\u001c"+ - "\u0000\u0000\u07e7\u00ce\u0001\u0000\u0000\u0000\u07e8\u07e9\u0007\u0010"+ - "\u0000\u0000\u07e9\u07ea\u0007\r\u0000\u0000\u07ea\u07eb\u0007\u0005\u0000"+ - "\u0000\u07eb\u07ec\u0007\u0011\u0000\u0000\u07ec\u07ed\u0007\u0006\u0000"+ - "\u0000\u07ed\u07ee\u0007\u0011\u0000\u0000\u07ee\u07ef\u0007\u0007\u0000"+ - "\u0000\u07ef\u07f0\u0007\u0017\u0000\u0000\u07f0\u00d0\u0001\u0000\u0000"+ - "\u0000\u07f1\u07f2\u0007\u0010\u0000\u0000\u07f2\u07f3\u0007\r\u0000\u0000"+ - "\u07f3\u07f4\u0007\u0016\u0000\u0000\u07f4\u07f5\u0007\n\u0000\u0000\u07f5"+ - "\u00d2\u0001\u0000\u0000\u0000\u07f6\u07f7\u0007\u0016\u0000\u0000\u07f7"+ - "\u07f8\u0007\u0007\u0000\u0000\u07f8\u07f9\u0007\u0011\u0000\u0000\u07f9"+ - "\u07fa\u0007\u0013\u0000\u0000\u07fa\u07fb\u0007\u0007\u0000\u0000\u07fb"+ - "\u00d4\u0001\u0000\u0000\u0000\u07fc\u07fd\u0007\u0016\u0000\u0000\u07fd"+ - "\u07fe\u0007\u0007\u0000\u0000\u07fe\u07ff\u0007\u0011\u0000\u0000\u07ff"+ - "\u0800\u0007\u001d\u0000\u0000\u0800\u0801\u0007\u0016\u0000\u0000\u0801"+ - "\u0802\u0007\n\u0000\u0000\u0802\u00d6\u0001\u0000\u0000\u0000\u0803\u0804"+ - "\u0007\u0016\u0000\u0000\u0804\u0805\u0007\t\u0000\u0000\u0805\u0806\u0007"+ - "\n\u0000\u0000\u0806\u0807\u0007\r\u0000\u0000\u0807\u00d8\u0001\u0000"+ - "\u0000\u0000\u0808\u0809\u0007\u0016\u0000\u0000\u0809\u080a\u0007\t\u0000"+ - "\u0000\u080a\u080b\u0007\u0011\u0000\u0000\u080b\u080c\u0007\u0007\u0000"+ - "\u0000\u080c\u080d\u0007\u0017\u0000\u0000\u080d\u00da\u0001\u0000\u0000"+ - "\u0000\u080e\u080f\u0007\u001b\u0000\u0000\u080f\u0810\u0007\u0005\u0000"+ - "\u0000\u0810\u0811\u0007\r\u0000\u0000\u0811\u0812\u0007\u0011\u0000\u0000"+ - "\u0812\u0813\u0007\u0005\u0000\u0000\u0813\u0814\u0007\f\u0000\u0000\u0814"+ - "\u0815\u0007\u0011\u0000\u0000\u0815\u0816\u0007\u000e\u0000\u0000\u0816"+ - "\u00dc\u0001\u0000\u0000\u0000\u0817\u0818\u0007\u001c\u0000\u0000\u0818"+ - "\u0819\u0007\u0014\u0000\u0000\u0819\u081a\u0007\n\u0000\u0000\u081a\u081b"+ - "\u0007\u0007\u0000\u0000\u081b\u00de\u0001\u0000\u0000\u0000\u081c\u081d"+ - "\u0007\u001c\u0000\u0000\u081d\u081e\u0007\u0014\u0000\u0000\u081e\u081f"+ - "\u0007\n\u0000\u0000\u081f\u0820\u0007\r\u0000\u0000\u0820\u0821\u0007"+ - "\n\u0000\u0000\u0821\u00e0\u0001\u0000\u0000\u0000\u0822\u0823\u0007\u001c"+ - "\u0000\u0000\u0823\u0824\u0007\u0011\u0000\u0000\u0824\u0825\u0007\u0007"+ - "\u0000\u0000\u0825\u0826\u0007\f\u0000\u0000\u0826\u0827\u0007\u0013\u0000"+ - "\u0000\u0827\u0828\u0007\u001c\u0000\u0000\u0828\u00e2\u0001\u0000\u0000"+ - "\u0000\u0829\u082a\u0007\u001c\u0000\u0000\u082a\u082b\u0007\u0011\u0000"+ - "\u0000\u082b\u082c\u0007\u0010\u0000\u0000\u082c\u082d\u0007\u0014\u0000"+ - "\u0000\u082d\u00e4\u0001\u0000\u0000\u0000\u082e\u082f\u0007\u0005\u0000"+ - "\u0000\u082f\u0830\u0007\u0016\u0000\u0000\u0830\u0831\u0007\u0010\u0000"+ - "\u0000\u0831\u0832\u0007\u0014\u0000\u0000\u0832\u0833\u0007\u0013\u0000"+ - "\u0000\u0833\u0834\u0007\r\u0000\u0000\u0834\u0835\u0007\u0011\u0000\u0000"+ - "\u0835\u0836\u0007\u000b\u0000\u0000\u0836\u0837\u0007\u0005\u0000\u0000"+ - "\u0837\u0838\u0007\u0010\u0000\u0000\u0838\u0839\u0007\u0011\u0000\u0000"+ - "\u0839\u083a\u0007\u0013\u0000\u0000\u083a\u083b\u0007\u0007\u0000\u0000"+ - "\u083b\u00e6\u0001\u0000\u0000\u0000\u083c\u083d\u0007\u0012\u0000\u0000"+ - "\u083d\u083e\u0007\u0011\u0000\u0000\u083e\u083f\u0007\u0007\u0000\u0000"+ - "\u083f\u0840\u0007\u0005\u0000\u0000\u0840\u0841\u0007\r\u0000\u0000\u0841"+ - "\u0842\u0007\b\u0000\u0000\u0842\u00e8\u0001\u0000\u0000\u0000\u0843\u0844"+ - "\u0007\u000e\u0000\u0000\u0844\u0845\u0007\u0013\u0000\u0000\u0845\u0846"+ - "\u0007\u0006\u0000\u0000\u0846\u0847\u0007\u0006\u0000\u0000\u0847\u0848"+ - "\u0007\u0005\u0000\u0000\u0848\u0849\u0007\u0010\u0000\u0000\u0849\u084a"+ - "\u0007\u0011\u0000\u0000\u084a\u084b\u0007\u0013\u0000\u0000\u084b\u084c"+ - "\u0007\u0007\u0000\u0000\u084c\u00ea\u0001\u0000\u0000\u0000\u084d\u084e"+ - "\u0007\u000e\u0000\u0000\u084e\u084f\u0007\u0013\u0000\u0000\u084f\u0850"+ - "\u0007\u0007\u0000\u0000\u0850\u0851\u0007\u000e\u0000\u0000\u0851\u0852"+ - "\u0007\u0016\u0000\u0000\u0852\u0853\u0007\r\u0000\u0000\u0853\u0854\u0007"+ - "\r\u0000\u0000\u0854\u0855\u0007\n\u0000\u0000\u0855\u0856\u0007\u0007"+ - "\u0000\u0000\u0856\u0857\u0007\u0010\u0000\u0000\u0857\u0858\u0007\u0006"+ - "\u0000\u0000\u0858\u0859\u0007\b\u0000\u0000\u0859\u00ec\u0001\u0000\u0000"+ - "\u0000\u085a\u085b\u0007\u000e\u0000\u0000\u085b\u085c\u0007\r\u0000\u0000"+ - "\u085c\u085d\u0007\u0013\u0000\u0000\u085d\u085e\u0007\t\u0000\u0000\u085e"+ - "\u085f\u0007\t\u0000\u0000\u085f\u00ee\u0001\u0000\u0000\u0000\u0860\u0861"+ - "\u0007\u000e\u0000\u0000\u0861\u0862\u0007\u0016\u0000\u0000\u0862\u0863"+ - "\u0007\r\u0000\u0000\u0863\u0864\u0007\r\u0000\u0000\u0864\u0865\u0007"+ - "\n\u0000\u0000\u0865\u0866\u0007\u0007\u0000\u0000\u0866\u0867\u0007\u0010"+ - "\u0000\u0000\u0867\u0868\u0005_\u0000\u0000\u0868\u0869\u0007\t\u0000"+ - "\u0000\u0869\u086a\u0007\u000e\u0000\u0000\u086a\u086b\u0007\u0014\u0000"+ - "\u0000\u086b\u086c\u0007\n\u0000\u0000\u086c\u086d\u0007\u000f\u0000\u0000"+ - "\u086d\u086e\u0007\u0005\u0000\u0000\u086e\u00f0\u0001\u0000\u0000\u0000"+ - "\u086f\u0870\u0007\u0019\u0000\u0000\u0870\u0871\u0007\r\u0000\u0000\u0871"+ - "\u0872\u0007\n\u0000\u0000\u0872\u0873\u0007\n\u0000\u0000\u0873\u0874"+ - "\u0007\u000b\u0000\u0000\u0874\u0875\u0007\n\u0000\u0000\u0875\u00f2\u0001"+ - "\u0000\u0000\u0000\u0876\u0877\u0007\u0019\u0000\u0000\u0877\u0878\u0007"+ - "\u0016\u0000\u0000\u0878\u0879\u0007\u0006\u0000\u0000\u0879\u087a\u0007"+ - "\u0006\u0000\u0000\u087a\u00f4\u0001\u0000\u0000\u0000\u087b\u087c\u0007"+ - "\u0011\u0000\u0000\u087c\u087d\u0007\u0006\u0000\u0000\u087d\u087e\u0007"+ - "\u0011\u0000\u0000\u087e\u087f\u0007\u0015\u0000\u0000\u087f\u0880\u0007"+ - "\n\u0000\u0000\u0880\u00f6\u0001\u0000\u0000\u0000\u0881\u0882\u0007\u0011"+ - "\u0000\u0000\u0882\u0883\u0007\u0007\u0000\u0000\u0883\u0884\u0007\u0007"+ - "\u0000\u0000\u0884\u0885\u0007\n\u0000\u0000\u0885\u0886\u0007\r\u0000"+ - "\u0000\u0886\u00f8\u0001\u0000\u0000\u0000\u0887\u0888\u0007\u0011\u0000"+ - "\u0000\u0888\u0889\u0007\t\u0000\u0000\u0889\u00fa\u0001\u0000\u0000\u0000"+ - "\u088a\u088b\u0007\u0011\u0000\u0000\u088b\u088c\u0007\t\u0000\u0000\u088c"+ - "\u088d\u0007\u0007\u0000\u0000\u088d\u088e\u0007\u0016\u0000\u0000\u088e"+ - "\u088f\u0007\u0006\u0000\u0000\u088f\u0890\u0007\u0006\u0000\u0000\u0890"+ - "\u00fc\u0001\u0000\u0000\u0000\u0891\u0892\u0007\u001e\u0000\u0000\u0892"+ - "\u0893\u0007\u0013\u0000\u0000\u0893\u0894\u0007\u0011\u0000\u0000\u0894"+ - "\u0895\u0007\u0007\u0000\u0000\u0895\u00fe\u0001\u0000\u0000\u0000\u0896"+ - "\u0897\u0007\u0006\u0000\u0000\u0897\u0898\u0007\n\u0000\u0000\u0898\u0899"+ - "\u0007\u0019\u0000\u0000\u0899\u089a\u0007\u0010\u0000\u0000\u089a\u0100"+ - "\u0001\u0000\u0000\u0000\u089b\u089c\u0007\u0006\u0000\u0000\u089c\u089d"+ - "\u0007\u0011\u0000\u0000\u089d\u089e\u0007\u0015\u0000\u0000\u089e\u089f"+ - "\u0007\n\u0000\u0000\u089f\u0102\u0001\u0000\u0000\u0000\u08a0\u08a1\u0007"+ - "\u0007\u0000\u0000\u08a1\u08a2\u0007\u0005\u0000\u0000\u08a2\u08a3\u0007"+ - "\u0010\u0000\u0000\u08a3\u08a4\u0007\u0016\u0000\u0000\u08a4\u08a5\u0007"+ - "\r\u0000\u0000\u08a5\u08a6\u0007\u0005\u0000\u0000\u08a6\u08a7\u0007\u0006"+ - "\u0000\u0000\u08a7\u0104\u0001\u0000\u0000\u0000\u08a8\u08a9\u0007\u0007"+ - "\u0000\u0000\u08a9\u08aa\u0007\u0013\u0000\u0000\u08aa\u08ab\u0007\u0010"+ - "\u0000\u0000\u08ab\u08ac\u0007\u0007\u0000\u0000\u08ac\u08ad\u0007\u0016"+ - "\u0000\u0000\u08ad\u08ae\u0007\u0006\u0000\u0000\u08ae\u08af\u0007\u0006"+ - "\u0000\u0000\u08af\u0106\u0001\u0000\u0000\u0000\u08b0\u08b1\u0007\u0013"+ - "\u0000\u0000\u08b1\u08b2\u0007\u0016\u0000\u0000\u08b2\u08b3\u0007\u0010"+ - "\u0000\u0000\u08b3\u08b4\u0007\n\u0000\u0000\u08b4\u08b5\u0007\r\u0000"+ - "\u0000\u08b5\u0108\u0001\u0000\u0000\u0000\u08b6\u08b7\u0007\u0013\u0000"+ - "\u0000\u08b7\u08b8\u0007\u001b\u0000\u0000\u08b8\u08b9\u0007\n\u0000\u0000"+ - "\u08b9\u08ba\u0007\r\u0000\u0000\u08ba\u010a\u0001\u0000\u0000\u0000\u08bb"+ - "\u08bc\u0007\u0013\u0000\u0000\u08bc\u08bd\u0007\u001b\u0000\u0000\u08bd"+ - "\u08be\u0007\n\u0000\u0000\u08be\u08bf\u0007\r\u0000\u0000\u08bf\u08c0"+ - "\u0007\u0006\u0000\u0000\u08c0\u08c1\u0007\u0005\u0000\u0000\u08c1\u08c2"+ - "\u0007\u0018\u0000\u0000\u08c2\u08c3\u0007\t\u0000\u0000\u08c3\u010c\u0001"+ - "\u0000\u0000\u0000\u08c4\u08c5\u0007\r\u0000\u0000\u08c5\u08c6\u0007\u0011"+ - "\u0000\u0000\u08c6\u08c7\u0007\u0017\u0000\u0000\u08c7\u08c8\u0007\u0014"+ - "\u0000\u0000\u08c8\u08c9\u0007\u0010\u0000\u0000\u08c9\u010e\u0001\u0000"+ - "\u0000\u0000\u08ca\u08cb\u0007\t\u0000\u0000\u08cb\u08cc\u0007\u0011\u0000"+ - "\u0000\u08cc\u08cd\u0007\u000f\u0000\u0000\u08cd\u08ce\u0007\u0011\u0000"+ - "\u0000\u08ce\u08cf\u0007\u0006\u0000\u0000\u08cf\u08d0\u0007\u0005\u0000"+ - "\u0000\u08d0\u08d1\u0007\r\u0000\u0000\u08d1\u0110\u0001\u0000\u0000\u0000"+ - "\u08d2\u08d3\u0007\u001b\u0000\u0000\u08d3\u08d4\u0007\n\u0000\u0000\u08d4"+ - "\u08d5\u0007\r\u0000\u0000\u08d5\u08d6\u0007\u0012\u0000\u0000\u08d6\u08d7"+ - "\u0007\u0013\u0000\u0000\u08d7\u08d8\u0007\t\u0000\u0000\u08d8\u08d9\u0007"+ - "\n\u0000\u0000\u08d9\u0112\u0001\u0000\u0000\u0000\u08da\u08db\u0007\u0005"+ - "\u0000\u0000\u08db\u08dc\u0007\u0012\u0000\u0000\u08dc\u08dd\u0007\u0013"+ - "\u0000\u0000\u08dd\u08de\u0007\r\u0000\u0000\u08de\u08df\u0007\u0010\u0000"+ - "\u0000\u08df\u0114\u0001\u0000\u0000\u0000\u08e0\u08e1\u0007\u0005\u0000"+ - "\u0000\u08e1\u08e2\u0007\u0012\u0000\u0000\u08e2\u08e3\u0007\t\u0000\u0000"+ - "\u08e3\u08e4\u0007\u0013\u0000\u0000\u08e4\u08e5\u0007\u0006\u0000\u0000"+ - "\u08e5\u08e6\u0007\u0016\u0000\u0000\u08e6\u08e7\u0007\u0010\u0000\u0000"+ - "\u08e7\u08e8\u0007\n\u0000\u0000\u08e8\u0116\u0001\u0000\u0000\u0000\u08e9"+ - "\u08ea\u0007\u0005\u0000\u0000\u08ea\u08eb\u0007\u000e\u0000\u0000\u08eb"+ - "\u08ec\u0007\u000e\u0000\u0000\u08ec\u08ed\u0007\n\u0000\u0000\u08ed\u08ee"+ - "\u0007\t\u0000\u0000\u08ee\u08ef\u0007\t\u0000\u0000\u08ef\u0118\u0001"+ - "\u0000\u0000\u0000\u08f0\u08f1\u0007\u0005\u0000\u0000\u08f1\u08f2\u0007"+ - "\u000e\u0000\u0000\u08f2\u08f3\u0007\u0010\u0000\u0000\u08f3\u08f4\u0007"+ - "\u0011\u0000\u0000\u08f4\u08f5\u0007\u0013\u0000\u0000\u08f5\u08f6\u0007"+ - "\u0007\u0000\u0000\u08f6\u011a\u0001\u0000\u0000\u0000\u08f7\u08f8\u0007"+ - "\u0005\u0000\u0000\u08f8\u08f9\u0007\f\u0000\u0000\u08f9\u08fa\u0007\f"+ - "\u0000\u0000\u08fa\u011c\u0001\u0000\u0000\u0000\u08fb\u08fc\u0007\u0005"+ - "\u0000\u0000\u08fc\u08fd\u0007\f\u0000\u0000\u08fd\u08fe\u0007\u000f\u0000"+ - "\u0000\u08fe\u08ff\u0007\u0011\u0000\u0000\u08ff\u0900\u0007\u0007\u0000"+ - "\u0000\u0900\u011e\u0001\u0000\u0000\u0000\u0901\u0902\u0007\u0005\u0000"+ - "\u0000\u0902\u0903\u0007\u0019\u0000\u0000\u0903\u0904\u0007\u0010\u0000"+ - "\u0000\u0904\u0905\u0007\n\u0000\u0000\u0905\u0906\u0007\r\u0000\u0000"+ - "\u0906\u0120\u0001\u0000\u0000\u0000\u0907\u0908\u0007\u0005\u0000\u0000"+ - "\u0908\u0909\u0007\u0017\u0000\u0000\u0909\u090a\u0007\u0017\u0000\u0000"+ - "\u090a\u090b\u0007\r\u0000\u0000\u090b\u090c\u0007\n\u0000\u0000\u090c"+ - "\u090d\u0007\u0017\u0000\u0000\u090d\u090e\u0007\u0005\u0000\u0000\u090e"+ - "\u090f\u0007\u0010\u0000\u0000\u090f\u0910\u0007\n\u0000\u0000\u0910\u0122"+ - "\u0001\u0000\u0000\u0000\u0911\u0912\u0007\u0005\u0000\u0000\u0912\u0913"+ - "\u0007\u0006\u0000\u0000\u0913\u0914\u0007\t\u0000\u0000\u0914\u0915\u0007"+ - "\u0013\u0000\u0000\u0915\u0124\u0001\u0000\u0000\u0000\u0916\u0917\u0007"+ - "\u0005\u0000\u0000\u0917\u0918\u0007\u0006\u0000\u0000\u0918\u0919\u0007"+ - "\u0010\u0000\u0000\u0919\u091a\u0007\n\u0000\u0000\u091a\u091b\u0007\r"+ - "\u0000\u0000\u091b\u0126\u0001\u0000\u0000\u0000\u091c\u091d\u0007\u0005"+ - "\u0000\u0000\u091d\u091e\u0007\u0006\u0000\u0000\u091e\u091f\u0007\u001c"+ - "\u0000\u0000\u091f\u0920\u0007\u0005\u0000\u0000\u0920\u0921\u0007\b\u0000"+ - "\u0000\u0921\u0922\u0007\t\u0000\u0000\u0922\u0128\u0001\u0000\u0000\u0000"+ - "\u0923\u0924\u0007\u0005\u0000\u0000\u0924\u0925\u0007\t\u0000\u0000\u0925"+ - "\u0926\u0007\t\u0000\u0000\u0926\u0927\u0007\n\u0000\u0000\u0927\u0928"+ - "\u0007\r\u0000\u0000\u0928\u0929\u0007\u0010\u0000\u0000\u0929\u092a\u0007"+ - "\u0011\u0000\u0000\u092a\u092b\u0007\u0013\u0000\u0000\u092b\u092c\u0007"+ - "\u0007\u0000\u0000\u092c\u012a\u0001\u0000\u0000\u0000\u092d\u092e\u0007"+ - "\u0005\u0000\u0000\u092e\u092f\u0007\t\u0000\u0000\u092f\u0930\u0007\t"+ - "\u0000\u0000\u0930\u0931\u0007\u0011\u0000\u0000\u0931\u0932\u0007\u0017"+ - "\u0000\u0000\u0932\u0933\u0007\u0007\u0000\u0000\u0933\u0934\u0007\u000f"+ - "\u0000\u0000\u0934\u0935\u0007\n\u0000\u0000\u0935\u0936\u0007\u0007\u0000"+ - "\u0000\u0936\u0937\u0007\u0010\u0000\u0000\u0937\u012c\u0001\u0000\u0000"+ - "\u0000\u0938\u0939\u0007\u0005\u0000\u0000\u0939\u093a\u0007\u0010\u0000"+ - "\u0000\u093a\u012e\u0001\u0000\u0000\u0000\u093b\u093c\u0007\u0005\u0000"+ - "\u0000\u093c\u093d\u0007\u0010\u0000\u0000\u093d\u093e\u0007\u0010\u0000"+ - "\u0000\u093e\u093f\u0007\r\u0000\u0000\u093f\u0940\u0007\u0011\u0000\u0000"+ - "\u0940\u0941\u0007\u0012\u0000\u0000\u0941\u0942\u0007\u0016\u0000\u0000"+ - "\u0942\u0943\u0007\u0010\u0000\u0000\u0943\u0944\u0007\n\u0000\u0000\u0944"+ - "\u0130\u0001\u0000\u0000\u0000\u0945\u0946\u0007\u0012\u0000\u0000\u0946"+ - "\u0947\u0007\u0005\u0000\u0000\u0947\u0948\u0007\u000e\u0000\u0000\u0948"+ - "\u0949\u0007\u0015\u0000\u0000\u0949\u094a\u0007\u001c\u0000\u0000\u094a"+ - "\u094b\u0007\u0005\u0000\u0000\u094b\u094c\u0007\r\u0000\u0000\u094c\u094d"+ - "\u0007\f\u0000\u0000\u094d\u0132\u0001\u0000\u0000\u0000\u094e\u094f\u0007"+ - "\u0012\u0000\u0000\u094f\u0950\u0007\n\u0000\u0000\u0950\u0951\u0007\u0019"+ - "\u0000\u0000\u0951\u0952\u0007\u0013\u0000\u0000\u0952\u0953\u0007\r\u0000"+ - "\u0000\u0953\u0954\u0007\n\u0000\u0000\u0954\u0134\u0001\u0000\u0000\u0000"+ - "\u0955\u0956\u0007\u0012\u0000\u0000\u0956\u0957\u0007\n\u0000\u0000\u0957"+ - "\u0958\u0007\u0017\u0000\u0000\u0958\u0959\u0007\u0011\u0000\u0000\u0959"+ - "\u095a\u0007\u0007\u0000\u0000\u095a\u0136\u0001\u0000\u0000\u0000\u095b"+ - "\u095c\u0007\u0012\u0000\u0000\u095c\u095d\u0007\b\u0000\u0000\u095d\u0138"+ - "\u0001\u0000\u0000\u0000\u095e\u095f\u0007\u000e\u0000\u0000\u095f\u0960"+ - "\u0007\u0005\u0000\u0000\u0960\u0961\u0007\u000e\u0000\u0000\u0961\u0962"+ - "\u0007\u0014\u0000\u0000\u0962\u0963\u0007\n\u0000\u0000\u0963\u013a\u0001"+ - "\u0000\u0000\u0000\u0964\u0965\u0007\u000e\u0000\u0000\u0965\u0966\u0007"+ - "\u0005\u0000\u0000\u0966\u0967\u0007\u0006\u0000\u0000\u0967\u0968\u0007"+ - "\u0006\u0000\u0000\u0968\u0969\u0007\n\u0000\u0000\u0969\u096a\u0007\f"+ - "\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\u013e\u0001\u0000\u0000\u0000\u0973\u0974\u0007\u000e\u0000\u0000"+ - "\u0974\u0975\u0007\u0005\u0000\u0000\u0975\u0976\u0007\t\u0000\u0000\u0976"+ - "\u0977\u0007\u000e\u0000\u0000\u0977\u0978\u0007\u0005\u0000\u0000\u0978"+ - "\u0979\u0007\f\u0000\u0000\u0979\u097a\u0007\n\u0000\u0000\u097a\u097b"+ - "\u0007\f\u0000\u0000\u097b\u0140\u0001\u0000\u0000\u0000\u097c\u097d\u0007"+ - "\u000e\u0000\u0000\u097d\u097e\u0007\u0005\u0000\u0000\u097e\u097f\u0007"+ - "\u0010\u0000\u0000\u097f\u0980\u0007\u0005\u0000\u0000\u0980\u0981\u0007"+ - "\u0006\u0000\u0000\u0981\u0982\u0007\u0013\u0000\u0000\u0982\u0983\u0007"+ - "\u0017\u0000\u0000\u0983\u0142\u0001\u0000\u0000\u0000\u0984\u0985\u0007"+ - "\u000e\u0000\u0000\u0985\u0986\u0007\u0014\u0000\u0000\u0986\u0987\u0007"+ - "\u0005\u0000\u0000\u0987\u0988\u0007\u0011\u0000\u0000\u0988\u0989\u0007"+ - "\u0007\u0000\u0000\u0989\u0144\u0001\u0000\u0000\u0000\u098a\u098b\u0007"+ - "\u000e\u0000\u0000\u098b\u098c\u0007\u0014\u0000\u0000\u098c\u098d\u0007"+ - "\u0005\u0000\u0000\u098d\u098e\u0007\r\u0000\u0000\u098e\u098f\u0007\u0005"+ - "\u0000\u0000\u098f\u0990\u0007\u000e\u0000\u0000\u0990\u0991\u0007\u0010"+ - "\u0000\u0000\u0991\u0992\u0007\n\u0000\u0000\u0992\u0993\u0007\r\u0000"+ - "\u0000\u0993\u0994\u0007\u0011\u0000\u0000\u0994\u0995\u0007\t\u0000\u0000"+ - "\u0995\u0996\u0007\u0010\u0000\u0000\u0996\u0997\u0007\u0011\u0000\u0000"+ - "\u0997\u0998\u0007\u000e\u0000\u0000\u0998\u0999\u0007\t\u0000\u0000\u0999"+ - "\u0146\u0001\u0000\u0000\u0000\u099a\u099b\u0007\u000e\u0000\u0000\u099b"+ - "\u099c\u0007\u0014\u0000\u0000\u099c\u099d\u0007\n\u0000\u0000\u099d\u099e"+ - "\u0007\u000e\u0000\u0000\u099e\u099f\u0007\u0015\u0000\u0000\u099f\u09a0"+ - "\u0007\u0018\u0000\u0000\u09a0\u09a1\u0007\u0013\u0000\u0000\u09a1\u09a2"+ - "\u0007\u0011\u0000\u0000\u09a2\u09a3\u0007\u0007\u0000\u0000\u09a3\u09a4"+ - "\u0007\u0010\u0000\u0000\u09a4\u0148\u0001\u0000\u0000\u0000\u09a5\u09a6"+ - "\u0007\u000e\u0000\u0000\u09a6\u09a7\u0007\u0006\u0000\u0000\u09a7\u09a8"+ - "\u0007\u0005\u0000\u0000\u09a8\u09a9\u0007\t\u0000\u0000\u09a9\u09aa\u0007"+ - "\t\u0000\u0000\u09aa\u014a\u0001\u0000\u0000\u0000\u09ab\u09ac\u0007\u000e"+ - "\u0000\u0000\u09ac\u09ad\u0007\u0006\u0000\u0000\u09ad\u09ae\u0007\u0013"+ - "\u0000\u0000\u09ae\u09af\u0007\t\u0000\u0000\u09af\u09b0\u0007\n\u0000"+ - "\u0000\u09b0\u014c\u0001\u0000\u0000\u0000\u09b1\u09b2\u0007\u000e\u0000"+ - "\u0000\u09b2\u09b3\u0007\u0006\u0000\u0000\u09b3\u09b4\u0007\u0016\u0000"+ - "\u0000\u09b4\u09b5\u0007\t\u0000\u0000\u09b5\u09b6\u0007\u0010\u0000\u0000"+ - "\u09b6\u09b7\u0007\n\u0000\u0000\u09b7\u09b8\u0007\r\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\u0150"+ - "\u0001\u0000\u0000\u0000\u09c1\u09c2\u0007\u000e\u0000\u0000\u09c2\u09c3"+ - "\u0007\u0013\u0000\u0000\u09c3\u09c4\u0007\u000f\u0000\u0000\u09c4\u09c5"+ - "\u0007\u000f\u0000\u0000\u09c5\u09c6\u0007\n\u0000\u0000\u09c6\u09c7\u0007"+ - "\u0007\u0000\u0000\u09c7\u09c8\u0007\u0010\u0000\u0000\u09c8\u09c9\u0007"+ - "\t\u0000\u0000\u09c9\u0152\u0001\u0000\u0000\u0000\u09ca\u09cb\u0007\u000e"+ - "\u0000\u0000\u09cb\u09cc\u0007\u0013\u0000\u0000\u09cc\u09cd\u0007\u000f"+ - "\u0000\u0000\u09cd\u09ce\u0007\u000f\u0000\u0000\u09ce\u09cf\u0007\u0011"+ - "\u0000\u0000\u09cf\u09d0\u0007\u0010\u0000\u0000\u09d0\u0154\u0001\u0000"+ - "\u0000\u0000\u09d1\u09d2\u0007\u000e\u0000\u0000\u09d2\u09d3\u0007\u0013"+ - "\u0000\u0000\u09d3\u09d4\u0007\u000f\u0000\u0000\u09d4\u09d5\u0007\u000f"+ - "\u0000\u0000\u09d5\u09d6\u0007\u0011\u0000\u0000\u09d6\u09d7\u0007\u0010"+ - "\u0000\u0000\u09d7\u09d8\u0007\u0010\u0000\u0000\u09d8\u09d9\u0007\n\u0000"+ - "\u0000\u09d9\u09da\u0007\f\u0000\u0000\u09da\u0156\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\u0019\u0000\u0000"+ - "\u09df\u09e0\u0007\u0011\u0000\u0000\u09e0\u09e1\u0007\u0017\u0000\u0000"+ - "\u09e1\u09e2\u0007\u0016\u0000\u0000\u09e2\u09e3\u0007\r\u0000\u0000\u09e3"+ - "\u09e4\u0007\u0005\u0000\u0000\u09e4\u09e5\u0007\u0010\u0000\u0000\u09e5"+ - "\u09e6\u0007\u0011\u0000\u0000\u09e6\u09e7\u0007\u0013\u0000\u0000\u09e7"+ - "\u09e8\u0007\u0007\u0000\u0000\u09e8\u0158\u0001\u0000\u0000\u0000\u09e9"+ - "\u09ea\u0007\u000e\u0000\u0000\u09ea\u09eb\u0007\u0013\u0000\u0000\u09eb"+ - "\u09ec\u0007\u0007\u0000\u0000\u09ec\u09ed\u0007\u0007\u0000\u0000\u09ed"+ - "\u09ee\u0007\n\u0000\u0000\u09ee\u09ef\u0007\u000e\u0000\u0000\u09ef\u09f0"+ - "\u0007\u0010\u0000\u0000\u09f0\u09f1\u0007\u0011\u0000\u0000\u09f1\u09f2"+ - "\u0007\u0013\u0000\u0000\u09f2\u09f3\u0007\u0007\u0000\u0000\u09f3\u015a"+ - "\u0001\u0000\u0000\u0000\u09f4\u09f5\u0007\u000e\u0000\u0000\u09f5\u09f6"+ - "\u0007\u0013\u0000\u0000\u09f6\u09f7\u0007\u0007\u0000\u0000\u09f7\u09f8"+ - "\u0007\t\u0000\u0000\u09f8\u09f9\u0007\u0010\u0000\u0000\u09f9\u09fa\u0007"+ - "\r\u0000\u0000\u09fa\u09fb\u0007\u0005\u0000\u0000\u09fb\u09fc\u0007\u0011"+ - "\u0000\u0000\u09fc\u09fd\u0007\u0007\u0000\u0000\u09fd\u09fe\u0007\u0010"+ - "\u0000\u0000\u09fe\u09ff\u0007\t\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\n\u0000\u0000\u0a05\u0a06\u0007\u0007\u0000\u0000"+ - "\u0a06\u0a07\u0007\u0010\u0000\u0000\u0a07\u015e\u0001\u0000\u0000\u0000"+ - "\u0a08\u0a09\u0007\u000e\u0000\u0000\u0a09\u0a0a\u0007\u0013\u0000\u0000"+ - "\u0a0a\u0a0b\u0007\u0007\u0000\u0000\u0a0b\u0a0c\u0007\u0010\u0000\u0000"+ - "\u0a0c\u0a0d\u0007\u0011\u0000\u0000\u0a0d\u0a0e\u0007\u0007\u0000\u0000"+ - "\u0a0e\u0a0f\u0007\u0016\u0000\u0000\u0a0f\u0a10\u0007\n\u0000\u0000\u0a10"+ - "\u0160\u0001\u0000\u0000\u0000\u0a11\u0a12\u0007\u000e\u0000\u0000\u0a12"+ - "\u0a13\u0007\u0013\u0000\u0000\u0a13\u0a14\u0007\u0007\u0000\u0000\u0a14"+ - "\u0a15\u0007\u001b\u0000\u0000\u0a15\u0a16\u0007\n\u0000\u0000\u0a16\u0a17"+ - "\u0007\r\u0000\u0000\u0a17\u0a18\u0007\t\u0000\u0000\u0a18\u0a19\u0007"+ - "\u0011\u0000\u0000\u0a19\u0a1a\u0007\u0013\u0000\u0000\u0a1a\u0a1b\u0007"+ - "\u0007\u0000\u0000\u0a1b\u0162\u0001\u0000\u0000\u0000\u0a1c\u0a1d\u0007"+ - "\u000e\u0000\u0000\u0a1d\u0a1e\u0007\u0013\u0000\u0000\u0a1e\u0a1f\u0007"+ - "\u0018\u0000\u0000\u0a1f\u0a20\u0007\b\u0000\u0000\u0a20\u0164\u0001\u0000"+ - "\u0000\u0000\u0a21\u0a22\u0007\u000e\u0000\u0000\u0a22\u0a23\u0007\u0013"+ - "\u0000\u0000\u0a23\u0a24\u0007\t\u0000\u0000\u0a24\u0a25\u0007\u0010\u0000"+ - "\u0000\u0a25\u0166\u0001\u0000\u0000\u0000\u0a26\u0a27\u0007\u000e\u0000"+ - "\u0000\u0a27\u0a28\u0007\t\u0000\u0000\u0a28\u0a29\u0007\u001b\u0000\u0000"+ - "\u0a29\u0168\u0001\u0000\u0000\u0000\u0a2a\u0a2b\u0007\u000e\u0000\u0000"+ - "\u0a2b\u0a2c\u0007\u0016\u0000\u0000\u0a2c\u0a2d\u0007\r\u0000\u0000\u0a2d"+ - "\u0a2e\u0007\t\u0000\u0000\u0a2e\u0a2f\u0007\u0013\u0000\u0000\u0a2f\u0a30"+ - "\u0007\r\u0000\u0000\u0a30\u016a\u0001\u0000\u0000\u0000\u0a31\u0a32\u0007"+ - "\u000e\u0000\u0000\u0a32\u0a33\u0007\b\u0000\u0000\u0a33\u0a34\u0007\u000e"+ - "\u0000\u0000\u0a34\u0a35\u0007\u0006\u0000\u0000\u0a35\u0a36\u0007\n\u0000"+ - "\u0000\u0a36\u016c\u0001\u0000\u0000\u0000\u0a37\u0a38\u0007\f\u0000\u0000"+ - "\u0a38\u0a39\u0007\u0005\u0000\u0000\u0a39\u0a3a\u0007\u0010\u0000\u0000"+ - "\u0a3a\u0a3b\u0007\u0005\u0000\u0000\u0a3b\u016e\u0001\u0000\u0000\u0000"+ - "\u0a3c\u0a3d\u0007\f\u0000\u0000\u0a3d\u0a3e\u0007\u0005\u0000\u0000\u0a3e"+ - "\u0a3f\u0007\u0010\u0000\u0000\u0a3f\u0a40\u0007\u0005\u0000\u0000\u0a40"+ - "\u0a41\u0007\u0012\u0000\u0000\u0a41\u0a42\u0007\u0005\u0000\u0000\u0a42"+ - "\u0a43\u0007\t\u0000\u0000\u0a43\u0a44\u0007\n\u0000\u0000\u0a44\u0170"+ - "\u0001\u0000\u0000\u0000\u0a45\u0a46\u0007\f\u0000\u0000\u0a46\u0a47\u0007"+ - "\u0005\u0000\u0000\u0a47\u0a48\u0007\b\u0000\u0000\u0a48\u0172\u0001\u0000"+ - "\u0000\u0000\u0a49\u0a4a\u0007\f\u0000\u0000\u0a4a\u0a4b\u0007\n\u0000"+ - "\u0000\u0a4b\u0a4c\u0007\u0005\u0000\u0000\u0a4c\u0a4d\u0007\u0006\u0000"+ - "\u0000\u0a4d\u0a4e\u0007\u0006\u0000\u0000\u0a4e\u0a4f\u0007\u0013\u0000"+ - "\u0000\u0a4f\u0a50\u0007\u000e\u0000\u0000\u0a50\u0a51\u0007\u0005\u0000"+ - "\u0000\u0a51\u0a52\u0007\u0010\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\u000e\u0000\u0000\u0a57\u0a58"+ - "\u0007\u0006\u0000\u0000\u0a58\u0a59\u0007\u0005\u0000\u0000\u0a59\u0a5a"+ - "\u0007\r\u0000\u0000\u0a5a\u0a5b\u0007\n\u0000\u0000\u0a5b\u0176\u0001"+ - "\u0000\u0000\u0000\u0a5c\u0a5d\u0007\f\u0000\u0000\u0a5d\u0a5e\u0007\n"+ - "\u0000\u0000\u0a5e\u0a5f\u0007\u0019\u0000\u0000\u0a5f\u0a60\u0007\u0005"+ - "\u0000\u0000\u0a60\u0a61\u0007\u0016\u0000\u0000\u0a61\u0a62\u0007\u0006"+ - "\u0000\u0000\u0a62\u0a63\u0007\u0010\u0000\u0000\u0a63\u0a64\u0007\t\u0000"+ - "\u0000\u0a64\u0178\u0001\u0000\u0000\u0000\u0a65\u0a66\u0007\f\u0000\u0000"+ - "\u0a66\u0a67\u0007\n\u0000\u0000\u0a67\u0a68\u0007\u0019\u0000\u0000\u0a68"+ - "\u0a69\u0007\n\u0000\u0000\u0a69\u0a6a\u0007\r\u0000\u0000\u0a6a\u0a6b"+ - "\u0007\r\u0000\u0000\u0a6b\u0a6c\u0007\n\u0000\u0000\u0a6c\u0a6d\u0007"+ - "\f\u0000\u0000\u0a6d\u017a\u0001\u0000\u0000\u0000\u0a6e\u0a6f\u0007\f"+ - "\u0000\u0000\u0a6f\u0a70\u0007\n\u0000\u0000\u0a70\u0a71\u0007\u0019\u0000"+ - "\u0000\u0a71\u0a72\u0007\u0011\u0000\u0000\u0a72\u0a73\u0007\u0007\u0000"+ - "\u0000\u0a73\u0a74\u0007\n\u0000\u0000\u0a74\u0a75\u0007\r\u0000\u0000"+ - "\u0a75\u017c\u0001\u0000\u0000\u0000\u0a76\u0a77\u0007\f\u0000\u0000\u0a77"+ - "\u0a78\u0007\n\u0000\u0000\u0a78\u0a79\u0007\u0006\u0000\u0000\u0a79\u0a7a"+ - "\u0007\n\u0000\u0000\u0a7a\u0a7b\u0007\u0010\u0000\u0000\u0a7b\u0a7c\u0007"+ - "\n\u0000\u0000\u0a7c\u017e\u0001\u0000\u0000\u0000\u0a7d\u0a7e\u0007\f"+ - "\u0000\u0000\u0a7e\u0a7f\u0007\n\u0000\u0000\u0a7f\u0a80\u0007\u0006\u0000"+ - "\u0000\u0a80\u0a81\u0007\u0011\u0000\u0000\u0a81\u0a82\u0007\u000f\u0000"+ - "\u0000\u0a82\u0a83\u0007\u0011\u0000\u0000\u0a83\u0a84\u0007\u0010\u0000"+ - "\u0000\u0a84\u0a85\u0007\n\u0000\u0000\u0a85\u0a86\u0007\r\u0000\u0000"+ - "\u0a86\u0180\u0001\u0000\u0000\u0000\u0a87\u0a88\u0007\f\u0000\u0000\u0a88"+ - "\u0a89\u0007\n\u0000\u0000\u0a89\u0a8a\u0007\u0006\u0000\u0000\u0a8a\u0a8b"+ - "\u0007\u0011\u0000\u0000\u0a8b\u0a8c\u0007\u000f\u0000\u0000\u0a8c\u0a8d"+ - "\u0007\u0011\u0000\u0000\u0a8d\u0a8e\u0007\u0010\u0000\u0000\u0a8e\u0a8f"+ - "\u0007\n\u0000\u0000\u0a8f\u0a90\u0007\r\u0000\u0000\u0a90\u0a91\u0007"+ - "\t\u0000\u0000\u0a91\u0182\u0001\u0000\u0000\u0000\u0a92\u0a93\u0007\f"+ - "\u0000\u0000\u0a93\u0a94\u0007\u0011\u0000\u0000\u0a94\u0a95\u0007\u000e"+ - "\u0000\u0000\u0a95\u0a96\u0007\u0010\u0000\u0000\u0a96\u0a97\u0007\u0011"+ - "\u0000\u0000\u0a97\u0a98\u0007\u0013\u0000\u0000\u0a98\u0a99\u0007\u0007"+ - "\u0000\u0000\u0a99\u0a9a\u0007\u0005\u0000\u0000\u0a9a\u0a9b\u0007\r\u0000"+ - "\u0000\u0a9b\u0a9c\u0007\b\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\u0005\u0000\u0000\u0aa1\u0aa2"+ - "\u0007\u0012\u0000\u0000\u0aa2\u0aa3\u0007\u0006\u0000\u0000\u0aa3\u0aa4"+ - "\u0007\n\u0000\u0000\u0aa4\u0186\u0001\u0000\u0000\u0000\u0aa5\u0aa6\u0007"+ - "\f\u0000\u0000\u0aa6\u0aa7\u0007\u0011\u0000\u0000\u0aa7\u0aa8\u0007\t"+ - "\u0000\u0000\u0aa8\u0aa9\u0007\u000e\u0000\u0000\u0aa9\u0aaa\u0007\u0005"+ - "\u0000\u0000\u0aaa\u0aab\u0007\r\u0000\u0000\u0aab\u0aac\u0007\f\u0000"+ - "\u0000\u0aac\u0188\u0001\u0000\u0000\u0000\u0aad\u0aae\u0007\f\u0000\u0000"+ - "\u0aae\u0aaf\u0007\u0013\u0000\u0000\u0aaf\u0ab0\u0007\u000e\u0000\u0000"+ - "\u0ab0\u0ab1\u0007\u0016\u0000\u0000\u0ab1\u0ab2\u0007\u000f\u0000\u0000"+ - "\u0ab2\u0ab3\u0007\n\u0000\u0000\u0ab3\u0ab4\u0007\u0007\u0000\u0000\u0ab4"+ - "\u0ab5\u0007\u0010\u0000\u0000\u0ab5\u018a\u0001\u0000\u0000\u0000\u0ab6"+ - "\u0ab7\u0007\f\u0000\u0000\u0ab7\u0ab8\u0007\u0013\u0000\u0000\u0ab8\u0ab9"+ - "\u0007\u000f\u0000\u0000\u0ab9\u0aba\u0007\u0005\u0000\u0000\u0aba\u0abb"+ - "\u0007\u0011\u0000\u0000\u0abb\u0abc\u0007\u0007\u0000\u0000\u0abc\u018c"+ - "\u0001\u0000\u0000\u0000\u0abd\u0abe\u0007\f\u0000\u0000\u0abe\u0abf\u0007"+ - "\u0013\u0000\u0000\u0abf\u0ac0\u0007\u0016\u0000\u0000\u0ac0\u0ac1\u0007"+ - "\u0012\u0000\u0000\u0ac1\u0ac2\u0007\u0006\u0000\u0000\u0ac2\u0ac3\u0007"+ - "\n\u0000\u0000\u0ac3\u018e\u0001\u0000\u0000\u0000\u0ac4\u0ac5\u0007\f"+ - "\u0000\u0000\u0ac5\u0ac6\u0007\r\u0000\u0000\u0ac6\u0ac7\u0007\u0013\u0000"+ - "\u0000\u0ac7\u0ac8\u0007\u0018\u0000\u0000\u0ac8\u0190\u0001\u0000\u0000"+ - "\u0000\u0ac9\u0aca\u0007\n\u0000\u0000\u0aca\u0acb\u0007\u0005\u0000\u0000"+ - "\u0acb\u0acc\u0007\u000e\u0000\u0000\u0acc\u0acd\u0007\u0014\u0000\u0000"+ - "\u0acd\u0192\u0001\u0000\u0000\u0000\u0ace\u0acf\u0007\n\u0000\u0000\u0acf"+ - "\u0ad0\u0007\u0007\u0000\u0000\u0ad0\u0ad1\u0007\u0005\u0000\u0000\u0ad1"+ - "\u0ad2\u0007\u0012\u0000\u0000\u0ad2\u0ad3\u0007\u0006\u0000\u0000\u0ad3"+ - "\u0ad4\u0007\n\u0000\u0000\u0ad4\u0194\u0001\u0000\u0000\u0000\u0ad5\u0ad6"+ - "\u0007\n\u0000\u0000\u0ad6\u0ad7\u0007\u0007\u0000\u0000\u0ad7\u0ad8\u0007"+ - "\u000e\u0000\u0000\u0ad8\u0ad9\u0007\u0013\u0000\u0000\u0ad9\u0ada\u0007"+ - "\f\u0000\u0000\u0ada\u0adb\u0007\u0011\u0000\u0000\u0adb\u0adc\u0007\u0007"+ - "\u0000\u0000\u0adc\u0add\u0007\u0017\u0000\u0000\u0add\u0196\u0001\u0000"+ - "\u0000\u0000\u0ade\u0adf\u0007\n\u0000\u0000\u0adf\u0ae0\u0007\u0007\u0000"+ - "\u0000\u0ae0\u0ae1\u0007\u000e\u0000\u0000\u0ae1\u0ae2\u0007\r\u0000\u0000"+ - "\u0ae2\u0ae3\u0007\b\u0000\u0000\u0ae3\u0ae4\u0007\u0018\u0000\u0000\u0ae4"+ - "\u0ae5\u0007\u0010\u0000\u0000\u0ae5\u0ae6\u0007\n\u0000\u0000\u0ae6\u0ae7"+ - "\u0007\f\u0000\u0000\u0ae7\u0198\u0001\u0000\u0000\u0000\u0ae8\u0ae9\u0007"+ - "\n\u0000\u0000\u0ae9\u0aea\u0007\u0007\u0000\u0000\u0aea\u0aeb\u0007\u0016"+ - "\u0000\u0000\u0aeb\u0aec\u0007\u000f\u0000\u0000\u0aec\u019a\u0001\u0000"+ - "\u0000\u0000\u0aed\u0aee\u0007\n\u0000\u0000\u0aee\u0aef\u0007\t\u0000"+ - "\u0000\u0aef\u0af0\u0007\u000e\u0000\u0000\u0af0\u0af1\u0007\u0005\u0000"+ - "\u0000\u0af1\u0af2\u0007\u0018\u0000\u0000\u0af2\u0af3\u0007\n\u0000\u0000"+ - "\u0af3\u019c\u0001\u0000\u0000\u0000\u0af4\u0af5\u0007\n\u0000\u0000\u0af5"+ - "\u0af6\u0007\u001b\u0000\u0000\u0af6\u0af7\u0007\n\u0000\u0000\u0af7\u0af8"+ - "\u0007\u0007\u0000\u0000\u0af8\u0af9\u0007\u0010\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\n\u0000\u0000\u0b01\u01a0\u0001\u0000"+ - "\u0000\u0000\u0b02\u0b03\u0007\n\u0000\u0000\u0b03\u0b04\u0007\u001a\u0000"+ - "\u0000\u0b04\u0b05\u0007\u000e\u0000\u0000\u0b05\u0b06\u0007\u0006\u0000"+ - "\u0000\u0b06\u0b07\u0007\u0016\u0000\u0000\u0b07\u0b08\u0007\f\u0000\u0000"+ - "\u0b08\u0b09\u0007\u0011\u0000\u0000\u0b09\u0b0a\u0007\u0007\u0000\u0000"+ - "\u0b0a\u0b0b\u0007\u0017\u0000\u0000\u0b0b\u01a2\u0001\u0000\u0000\u0000"+ - "\u0b0c\u0b0d\u0007\n\u0000\u0000\u0b0d\u0b0e\u0007\u001a\u0000\u0000\u0b0e"+ - "\u0b0f\u0007\u000e\u0000\u0000\u0b0f\u0b10\u0007\u0006\u0000\u0000\u0b10"+ - "\u0b11\u0007\u0016\u0000\u0000\u0b11\u0b12\u0007\t\u0000\u0000\u0b12\u0b13"+ - "\u0007\u0011\u0000\u0000\u0b13\u0b14\u0007\u001b\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\n"+ - "\u0000\u0000\u0b19\u0b1a\u0007\u000e\u0000\u0000\u0b1a\u0b1b\u0007\u0016"+ - "\u0000\u0000\u0b1b\u0b1c\u0007\u0010\u0000\u0000\u0b1c\u0b1d\u0007\n\u0000"+ - "\u0000\u0b1d\u01a6\u0001\u0000\u0000\u0000\u0b1e\u0b1f\u0007\n\u0000\u0000"+ - "\u0b1f\u0b20\u0007\u001a\u0000\u0000\u0b20\u0b21\u0007\u0018\u0000\u0000"+ - "\u0b21\u0b22\u0007\u0006\u0000\u0000\u0b22\u0b23\u0007\u0005\u0000\u0000"+ - "\u0b23\u0b24\u0007\u0011\u0000\u0000\u0b24\u0b25\u0007\u0007\u0000\u0000"+ - "\u0b25\u01a8\u0001\u0000\u0000\u0000\u0b26\u0b27\u0007\n\u0000\u0000\u0b27"+ - "\u0b28\u0007\u001a\u0000\u0000\u0b28\u0b29\u0007\u0010\u0000\u0000\u0b29"+ - "\u0b2a\u0007\n\u0000\u0000\u0b2a\u0b2b\u0007\u0007\u0000\u0000\u0b2b\u0b2c"+ - "\u0007\t\u0000\u0000\u0b2c\u0b2d\u0007\u0011\u0000\u0000\u0b2d\u0b2e\u0007"+ - "\u0013\u0000\u0000\u0b2e\u0b2f\u0007\u0007\u0000\u0000\u0b2f\u01aa\u0001"+ - "\u0000\u0000\u0000\u0b30\u0b31\u0007\n\u0000\u0000\u0b31\u0b32\u0007\u001a"+ - "\u0000\u0000\u0b32\u0b33\u0007\u0010\u0000\u0000\u0b33\u0b34\u0007\n\u0000"+ - "\u0000\u0b34\u0b35\u0007\r\u0000\u0000\u0b35\u0b36\u0007\u0007\u0000\u0000"+ - "\u0b36\u0b37\u0007\u0005\u0000\u0000\u0b37\u0b38\u0007\u0006\u0000\u0000"+ - "\u0b38\u01ac\u0001\u0000\u0000\u0000\u0b39\u0b3a\u0007\u0019\u0000\u0000"+ - "\u0b3a\u0b3b\u0007\u0005\u0000\u0000\u0b3b\u0b3c\u0007\u000f\u0000\u0000"+ - "\u0b3c\u0b3d\u0007\u0011\u0000\u0000\u0b3d\u0b3e\u0007\u0006\u0000\u0000"+ - "\u0b3e\u0b3f\u0007\b\u0000\u0000\u0b3f\u01ae\u0001\u0000\u0000\u0000\u0b40"+ - "\u0b41\u0007\u0019\u0000\u0000\u0b41\u0b42\u0007\u0011\u0000\u0000\u0b42"+ - "\u0b43\u0007\r\u0000\u0000\u0b43\u0b44\u0007\t\u0000\u0000\u0b44\u0b45"+ - "\u0007\u0010\u0000\u0000\u0b45\u01b0\u0001\u0000\u0000\u0000\u0b46\u0b47"+ - "\u0007\u0019\u0000\u0000\u0b47\u0b48\u0007\u0013\u0000\u0000\u0b48\u0b49"+ - "\u0007\u0006\u0000\u0000\u0b49\u0b4a\u0007\u0006\u0000\u0000\u0b4a\u0b4b"+ - "\u0007\u0013\u0000\u0000\u0b4b\u0b4c\u0007\u001c\u0000\u0000\u0b4c\u0b4d"+ - "\u0007\u0011\u0000\u0000\u0b4d\u0b4e\u0007\u0007\u0000\u0000\u0b4e\u0b4f"+ - "\u0007\u0017\u0000\u0000\u0b4f\u01b2\u0001\u0000\u0000\u0000\u0b50\u0b51"+ - "\u0007\u0019\u0000\u0000\u0b51\u0b52\u0007\u0013\u0000\u0000\u0b52\u0b53"+ - "\u0007\r\u0000\u0000\u0b53\u0b54\u0007\u000e\u0000\u0000\u0b54\u0b55\u0007"+ - "\n\u0000\u0000\u0b55\u01b4\u0001\u0000\u0000\u0000\u0b56\u0b57\u0007\u0019"+ - "\u0000\u0000\u0b57\u0b58\u0007\u0013\u0000\u0000\u0b58\u0b59\u0007\r\u0000"+ - "\u0000\u0b59\u0b5a\u0007\u001c\u0000\u0000\u0b5a\u0b5b\u0007\u0005\u0000"+ - "\u0000\u0b5b\u0b5c\u0007\r\u0000\u0000\u0b5c\u0b5d\u0007\f\u0000\u0000"+ - "\u0b5d\u01b6\u0001\u0000\u0000\u0000\u0b5e\u0b5f\u0007\u0019\u0000\u0000"+ - "\u0b5f\u0b60\u0007\u0016\u0000\u0000\u0b60\u0b61\u0007\u0007\u0000\u0000"+ - "\u0b61\u0b62\u0007\u000e\u0000\u0000\u0b62\u0b63\u0007\u0010\u0000\u0000"+ - "\u0b63\u0b64\u0007\u0011\u0000\u0000\u0b64\u0b65\u0007\u0013\u0000\u0000"+ - "\u0b65\u0b66\u0007\u0007\u0000\u0000\u0b66\u01b8\u0001\u0000\u0000\u0000"+ - "\u0b67\u0b68\u0007\u0019\u0000\u0000\u0b68\u0b69\u0007\u0016\u0000\u0000"+ - "\u0b69\u0b6a\u0007\u0007\u0000\u0000\u0b6a\u0b6b\u0007\u000e\u0000\u0000"+ - "\u0b6b\u0b6c\u0007\u0010\u0000\u0000\u0b6c\u0b6d\u0007\u0011\u0000\u0000"+ - "\u0b6d\u0b6e\u0007\u0013\u0000\u0000\u0b6e\u0b6f\u0007\u0007\u0000\u0000"+ - "\u0b6f\u0b70\u0007\t\u0000\u0000\u0b70\u01ba\u0001\u0000\u0000\u0000\u0b71"+ - "\u0b72\u0007\u0017\u0000\u0000\u0b72\u0b73\u0007\u0006\u0000\u0000\u0b73"+ - "\u0b74\u0007\u0013\u0000\u0000\u0b74\u0b75\u0007\u0012\u0000\u0000\u0b75"+ - "\u0b76\u0007\u0005\u0000\u0000\u0b76\u0b77\u0007\u0006\u0000\u0000\u0b77"+ - "\u01bc\u0001\u0000\u0000\u0000\u0b78\u0b79\u0007\u0017\u0000\u0000\u0b79"+ - "\u0b7a\u0007\r\u0000\u0000\u0b7a\u0b7b\u0007\u0005\u0000\u0000\u0b7b\u0b7c"+ - "\u0007\u0007\u0000\u0000\u0b7c\u0b7d\u0007\u0010\u0000\u0000\u0b7d\u0b7e"+ - "\u0007\n\u0000\u0000\u0b7e\u0b7f\u0007\f\u0000\u0000\u0b7f\u01be\u0001"+ - "\u0000\u0000\u0000\u0b80\u0b81\u0007\u0014\u0000\u0000\u0b81\u0b82\u0007"+ - "\u0005\u0000\u0000\u0b82\u0b83\u0007\u0007\u0000\u0000\u0b83\u0b84\u0007"+ - "\f\u0000\u0000\u0b84\u0b85\u0007\u0006\u0000\u0000\u0b85\u0b86\u0007\n"+ - "\u0000\u0000\u0b86\u0b87\u0007\r\u0000\u0000\u0b87\u01c0\u0001\u0000\u0000"+ - "\u0000\u0b88\u0b89\u0007\u0014\u0000\u0000\u0b89\u0b8a\u0007\n\u0000\u0000"+ - "\u0b8a\u0b8b\u0007\u0005\u0000\u0000\u0b8b\u0b8c\u0007\f\u0000\u0000\u0b8c"+ - "\u0b8d\u0007\n\u0000\u0000\u0b8d\u0b8e\u0007\r\u0000\u0000\u0b8e\u01c2"+ - "\u0001\u0000\u0000\u0000\u0b8f\u0b90\u0007\u0014\u0000\u0000\u0b90\u0b91"+ - "\u0007\u0013\u0000\u0000\u0b91\u0b92\u0007\u0006\u0000\u0000\u0b92\u0b93"+ - "\u0007\f\u0000\u0000\u0b93\u01c4\u0001\u0000\u0000\u0000\u0b94\u0b95\u0007"+ - "\u0014\u0000\u0000\u0b95\u0b96\u0007\u0013\u0000\u0000\u0b96\u0b97\u0007"+ - "\u0016\u0000\u0000\u0b97\u0b98\u0007\r\u0000\u0000\u0b98\u01c6\u0001\u0000"+ - "\u0000\u0000\u0b99\u0b9a\u0007\u0011\u0000\u0000\u0b9a\u0b9b\u0007\f\u0000"+ - "\u0000\u0b9b\u0b9c\u0007\n\u0000\u0000\u0b9c\u0b9d\u0007\u0007\u0000\u0000"+ - "\u0b9d\u0b9e\u0007\u0010\u0000\u0000\u0b9e\u0b9f\u0007\u0011\u0000\u0000"+ - "\u0b9f\u0ba0\u0007\u0010\u0000\u0000\u0ba0\u0ba1\u0007\b\u0000\u0000\u0ba1"+ - "\u01c8\u0001\u0000\u0000\u0000\u0ba2\u0ba3\u0007\u0011\u0000\u0000\u0ba3"+ - "\u0ba4\u0007\u0019\u0000\u0000\u0ba4\u01ca\u0001\u0000\u0000\u0000\u0ba5"+ - "\u0ba6\u0007\u0011\u0000\u0000\u0ba6\u0ba7\u0007\u000f\u0000\u0000\u0ba7"+ - "\u0ba8\u0007\u000f\u0000\u0000\u0ba8\u0ba9\u0007\n\u0000\u0000\u0ba9\u0baa"+ - "\u0007\f\u0000\u0000\u0baa\u0bab\u0007\u0011\u0000\u0000\u0bab\u0bac\u0007"+ - "\u0005\u0000\u0000\u0bac\u0bad\u0007\u0010\u0000\u0000\u0bad\u0bae\u0007"+ - "\n\u0000\u0000\u0bae\u01cc\u0001\u0000\u0000\u0000\u0baf\u0bb0\u0007\u0011"+ - "\u0000\u0000\u0bb0\u0bb1\u0007\u000f\u0000\u0000\u0bb1\u0bb2\u0007\u000f"+ - "\u0000\u0000\u0bb2\u0bb3\u0007\u0016\u0000\u0000\u0bb3\u0bb4\u0007\u0010"+ - "\u0000\u0000\u0bb4\u0bb5\u0007\u0005\u0000\u0000\u0bb5\u0bb6\u0007\u0012"+ - "\u0000\u0000\u0bb6\u0bb7\u0007\u0006\u0000\u0000\u0bb7\u0bb8\u0007\n\u0000"+ - "\u0000\u0bb8\u01ce\u0001\u0000\u0000\u0000\u0bb9\u0bba\u0007\u0011\u0000"+ - "\u0000\u0bba\u0bbb\u0007\u000f\u0000\u0000\u0bbb\u0bbc\u0007\u0018\u0000"+ - "\u0000\u0bbc\u0bbd\u0007\u0006\u0000\u0000\u0bbd\u0bbe\u0007\u0011\u0000"+ - "\u0000\u0bbe\u0bbf\u0007\u000e\u0000\u0000\u0bbf\u0bc0\u0007\u0011\u0000"+ - "\u0000\u0bc0\u0bc1\u0007\u0010\u0000\u0000\u0bc1\u01d0\u0001\u0000\u0000"+ - "\u0000\u0bc2\u0bc3\u0007\u0011\u0000\u0000\u0bc3\u0bc4\u0007\u0007\u0000"+ - "\u0000\u0bc4\u0bc5\u0007\u000e\u0000\u0000\u0bc5\u0bc6\u0007\u0006\u0000"+ - "\u0000\u0bc6\u0bc7\u0007\u0016\u0000\u0000\u0bc7\u0bc8\u0007\f\u0000\u0000"+ - "\u0bc8\u0bc9\u0007\u0011\u0000\u0000\u0bc9\u0bca\u0007\u0007\u0000\u0000"+ - "\u0bca\u0bcb\u0007\u0017\u0000\u0000\u0bcb\u01d2\u0001\u0000\u0000\u0000"+ - "\u0bcc\u0bcd\u0007\u0011\u0000\u0000\u0bcd\u0bce\u0007\u0007\u0000\u0000"+ - "\u0bce\u0bcf\u0007\u000e\u0000\u0000\u0bcf\u0bd0\u0007\r\u0000\u0000\u0bd0"+ - "\u0bd1\u0007\n\u0000\u0000\u0bd1\u0bd2\u0007\u000f\u0000\u0000\u0bd2\u0bd3"+ - "\u0007\n\u0000\u0000\u0bd3\u0bd4\u0007\u0007\u0000\u0000\u0bd4\u0bd5\u0007"+ - "\u0010\u0000\u0000\u0bd5\u01d4\u0001\u0000\u0000\u0000\u0bd6\u0bd7\u0007"+ - "\u0011\u0000\u0000\u0bd7\u0bd8\u0007\u0007\u0000\u0000\u0bd8\u0bd9\u0007"+ - "\f\u0000\u0000\u0bd9\u0bda\u0007\n\u0000\u0000\u0bda\u0bdb\u0007\u001a"+ - "\u0000\u0000\u0bdb\u01d6\u0001\u0000\u0000\u0000\u0bdc\u0bdd\u0007\u0011"+ - "\u0000\u0000\u0bdd\u0bde\u0007\u0007\u0000\u0000\u0bde\u0bdf\u0007\f\u0000"+ - "\u0000\u0bdf\u0be0\u0007\n\u0000\u0000\u0be0\u0be1\u0007\u001a\u0000\u0000"+ - "\u0be1\u0be2\u0007\n\u0000\u0000\u0be2\u0be3\u0007\t\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\u01da"+ - "\u0001\u0000\u0000\u0000\u0bec\u0bed\u0007\u0011\u0000\u0000\u0bed\u0bee"+ - "\u0007\u0007\u0000\u0000\u0bee\u0bef\u0007\u0014\u0000\u0000\u0bef\u0bf0"+ - "\u0007\n\u0000\u0000\u0bf0\u0bf1\u0007\r\u0000\u0000\u0bf1\u0bf2\u0007"+ - "\u0011\u0000\u0000\u0bf2\u0bf3\u0007\u0010\u0000\u0000\u0bf3\u0bf4\u0007"+ - "\t\u0000\u0000\u0bf4\u01dc\u0001\u0000\u0000\u0000\u0bf5\u0bf6\u0007\u0011"+ - "\u0000\u0000\u0bf6\u0bf7\u0007\u0007\u0000\u0000\u0bf7\u0bf8\u0007\u0006"+ - "\u0000\u0000\u0bf8\u0bf9\u0007\u0011\u0000\u0000\u0bf9\u0bfa\u0007\u0007"+ - "\u0000\u0000\u0bfa\u0bfb\u0007\n\u0000\u0000\u0bfb\u01de\u0001\u0000\u0000"+ - "\u0000\u0bfc\u0bfd\u0007\u0011\u0000\u0000\u0bfd\u0bfe\u0007\u0007\u0000"+ - "\u0000\u0bfe\u0bff\u0007\t\u0000\u0000\u0bff\u0c00\u0007\n\u0000\u0000"+ - "\u0c00\u0c01\u0007\u0007\u0000\u0000\u0c01\u0c02\u0007\t\u0000\u0000\u0c02"+ - "\u0c03\u0007\u0011\u0000\u0000\u0c03\u0c04\u0007\u0010\u0000\u0000\u0c04"+ - "\u0c05\u0007\u0011\u0000\u0000\u0c05\u0c06\u0007\u001b\u0000\u0000\u0c06"+ - "\u0c07\u0007\n\u0000\u0000\u0c07\u01e0\u0001\u0000\u0000\u0000\u0c08\u0c09"+ - "\u0007\u0011\u0000\u0000\u0c09\u0c0a\u0007\u0007\u0000\u0000\u0c0a\u0c0b"+ - "\u0007\t\u0000\u0000\u0c0b\u0c0c\u0007\n\u0000\u0000\u0c0c\u0c0d\u0007"+ - "\r\u0000\u0000\u0c0d\u0c0e\u0007\u0010\u0000\u0000\u0c0e\u01e2\u0001\u0000"+ - "\u0000\u0000\u0c0f\u0c10\u0007\u0011\u0000\u0000\u0c10\u0c11\u0007\u0007"+ - "\u0000\u0000\u0c11\u0c12\u0007\t\u0000\u0000\u0c12\u0c13\u0007\u0010\u0000"+ - "\u0000\u0c13\u0c14\u0007\n\u0000\u0000\u0c14\u0c15\u0007\u0005\u0000\u0000"+ - "\u0c15\u0c16\u0007\f\u0000\u0000\u0c16\u01e4\u0001\u0000\u0000\u0000\u0c17"+ - "\u0c18\u0007\u0011\u0000\u0000\u0c18\u0c19\u0007\u0007\u0000\u0000\u0c19"+ - "\u0c1a\u0007\u001b\u0000\u0000\u0c1a\u0c1b\u0007\u0013\u0000\u0000\u0c1b"+ - "\u0c1c\u0007\u0015\u0000\u0000\u0c1c\u0c1d\u0007\n\u0000\u0000\u0c1d\u0c1e"+ - "\u0007\r\u0000\u0000\u0c1e\u01e6\u0001\u0000\u0000\u0000\u0c1f\u0c20\u0007"+ - "\u0011\u0000\u0000\u0c20\u0c21\u0007\t\u0000\u0000\u0c21\u0c22\u0007\u0013"+ - "\u0000\u0000\u0c22\u0c23\u0007\u0006\u0000\u0000\u0c23\u0c24\u0007\u0005"+ - "\u0000\u0000\u0c24\u0c25\u0007\u0010\u0000\u0000\u0c25\u0c26\u0007\u0011"+ - "\u0000\u0000\u0c26\u0c27\u0007\u0013\u0000\u0000\u0c27\u0c28\u0007\u0007"+ - "\u0000\u0000\u0c28\u01e8\u0001\u0000\u0000\u0000\u0c29\u0c2a\u0007\u0015"+ - "\u0000\u0000\u0c2a\u0c2b\u0007\n\u0000\u0000\u0c2b\u0c2c\u0007\b\u0000"+ - "\u0000\u0c2c\u01ea\u0001\u0000\u0000\u0000\u0c2d\u0c2e\u0007\u0006\u0000"+ - "\u0000\u0c2e\u0c2f\u0007\u0005\u0000\u0000\u0c2f\u0c30\u0007\u0012\u0000"+ - "\u0000\u0c30\u0c31\u0007\n\u0000\u0000\u0c31\u0c32\u0007\u0006\u0000\u0000"+ - "\u0c32\u01ec\u0001\u0000\u0000\u0000\u0c33\u0c34\u0007\u0006\u0000\u0000"+ - "\u0c34\u0c35\u0007\u0005\u0000\u0000\u0c35\u0c36\u0007\u0007\u0000\u0000"+ - "\u0c36\u0c37\u0007\u0017\u0000\u0000\u0c37\u0c38\u0007\u0016\u0000\u0000"+ - "\u0c38\u0c39\u0007\u0005\u0000\u0000\u0c39\u0c3a\u0007\u0017\u0000\u0000"+ - "\u0c3a\u0c3b\u0007\n\u0000\u0000\u0c3b\u01ee\u0001\u0000\u0000\u0000\u0c3c"+ - "\u0c3d\u0007\u0006\u0000\u0000\u0c3d\u0c3e\u0007\u0005\u0000\u0000\u0c3e"+ - "\u0c3f\u0007\r\u0000\u0000\u0c3f\u0c40\u0007\u0017\u0000\u0000\u0c40\u0c41"+ - "\u0007\n\u0000\u0000\u0c41\u01f0\u0001\u0000\u0000\u0000\u0c42\u0c43\u0007"+ - "\u0006\u0000\u0000\u0c43\u0c44\u0007\u0005\u0000\u0000\u0c44\u0c45\u0007"+ - "\t\u0000\u0000\u0c45\u0c46\u0007\u0010\u0000\u0000\u0c46\u01f2\u0001\u0000"+ - "\u0000\u0000\u0c47\u0c48\u0007\u0006\u0000\u0000\u0c48\u0c49\u0007\n\u0000"+ - "\u0000\u0c49\u0c4a\u0007\u0005\u0000\u0000\u0c4a\u0c4b\u0007\u0015\u0000"+ - "\u0000\u0c4b\u0c4c\u0007\u0018\u0000\u0000\u0c4c\u0c4d\u0007\r\u0000\u0000"+ - "\u0c4d\u0c4e\u0007\u0013\u0000\u0000\u0c4e\u0c4f\u0007\u0013\u0000\u0000"+ - "\u0c4f\u0c50\u0007\u0019\u0000\u0000\u0c50\u01f4\u0001\u0000\u0000\u0000"+ - "\u0c51\u0c52\u0007\u0006\u0000\u0000\u0c52\u0c53\u0007\n\u0000\u0000\u0c53"+ - "\u0c54\u0007\u001b\u0000\u0000\u0c54\u0c55\u0007\n\u0000\u0000\u0c55\u0c56"+ - "\u0007\u0006\u0000\u0000\u0c56\u01f6\u0001\u0000\u0000\u0000\u0c57\u0c58"+ - "\u0007\u0006\u0000\u0000\u0c58\u0c59\u0007\u0011\u0000\u0000\u0c59\u0c5a"+ - "\u0007\t\u0000\u0000\u0c5a\u0c5b\u0007\u0010\u0000\u0000\u0c5b\u0c5c\u0007"+ - "\n\u0000\u0000\u0c5c\u0c5d\u0007\u0007\u0000\u0000\u0c5d\u01f8\u0001\u0000"+ - "\u0000\u0000\u0c5e\u0c5f\u0007\u0006\u0000\u0000\u0c5f\u0c60\u0007\u0013"+ - "\u0000\u0000\u0c60\u0c61\u0007\u0005\u0000\u0000\u0c61\u0c62\u0007\f\u0000"+ - "\u0000\u0c62\u01fa\u0001\u0000\u0000\u0000\u0c63\u0c64\u0007\u0006\u0000"+ - "\u0000\u0c64\u0c65\u0007\u0013\u0000\u0000\u0c65\u0c66\u0007\u000e\u0000"+ - "\u0000\u0c66\u0c67\u0007\u0005\u0000\u0000\u0c67\u0c68\u0007\u0006\u0000"+ - "\u0000\u0c68\u01fc\u0001\u0000\u0000\u0000\u0c69\u0c6a\u0007\u0006\u0000"+ - "\u0000\u0c6a\u0c6b\u0007\u0013\u0000\u0000\u0c6b\u0c6c\u0007\u000e\u0000"+ - "\u0000\u0c6c\u0c6d\u0007\u0005\u0000\u0000\u0c6d\u0c6e\u0007\u0010\u0000"+ - "\u0000\u0c6e\u0c6f\u0007\u0011\u0000\u0000\u0c6f\u0c70\u0007\u0013\u0000"+ - "\u0000\u0c70\u0c71\u0007\u0007\u0000\u0000\u0c71\u01fe\u0001\u0000\u0000"+ - "\u0000\u0c72\u0c73\u0007\u0006\u0000\u0000\u0c73\u0c74\u0007\u0013\u0000"+ - "\u0000\u0c74\u0c75\u0007\u000e\u0000\u0000\u0c75\u0c76\u0007\u0015\u0000"+ - "\u0000\u0c76\u0200\u0001\u0000\u0000\u0000\u0c77\u0c78\u0007\u000f\u0000"+ - "\u0000\u0c78\u0c79\u0007\u0005\u0000\u0000\u0c79\u0c7a\u0007\u0018\u0000"+ - "\u0000\u0c7a\u0c7b\u0007\u0018\u0000\u0000\u0c7b\u0c7c\u0007\u0011\u0000"+ - "\u0000\u0c7c\u0c7d\u0007\u0007\u0000\u0000\u0c7d\u0c7e\u0007\u0017\u0000"+ - "\u0000\u0c7e\u0202\u0001\u0000\u0000\u0000\u0c7f\u0c80\u0007\u000f\u0000"+ - "\u0000\u0c80\u0c81\u0007\u0005\u0000\u0000\u0c81\u0c82\u0007\u0010\u0000"+ - "\u0000\u0c82\u0c83\u0007\u000e\u0000\u0000\u0c83\u0c84\u0007\u0014\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\u000e\u0000\u0000\u0c89\u0c8a\u0007\u0014\u0000"+ - "\u0000\u0c8a\u0c8b\u0007\n\u0000\u0000\u0c8b\u0c8c\u0007\f\u0000\u0000"+ - "\u0c8c\u0206\u0001\u0000\u0000\u0000\u0c8d\u0c8e\u0007\u000f\u0000\u0000"+ - "\u0c8e\u0c8f\u0007\u0005\u0000\u0000\u0c8f\u0c90\u0007\u0010\u0000\u0000"+ - "\u0c90\u0c91\u0007\n\u0000\u0000\u0c91\u0c92\u0007\r\u0000\u0000\u0c92"+ - "\u0c93\u0007\u0011\u0000\u0000\u0c93\u0c94\u0007\u0005\u0000\u0000\u0c94"+ - "\u0c95\u0007\u0006\u0000\u0000\u0c95\u0c96\u0007\u0011\u0000\u0000\u0c96"+ - "\u0c97\u0007\u000b\u0000\u0000\u0c97\u0c98\u0007\n\u0000\u0000\u0c98\u0c99"+ - "\u0007\f\u0000\u0000\u0c99\u0208\u0001\u0000\u0000\u0000\u0c9a\u0c9b\u0007"+ - "\u000f\u0000\u0000\u0c9b\u0c9c\u0007\u0005\u0000\u0000\u0c9c\u0c9d\u0007"+ - "\u001a\u0000\u0000\u0c9d\u0c9e\u0007\u001b\u0000\u0000\u0c9e\u0c9f\u0007"+ - "\u0005\u0000\u0000\u0c9f\u0ca0\u0007\u0006\u0000\u0000\u0ca0\u0ca1\u0007"+ - "\u0016\u0000\u0000\u0ca1\u0ca2\u0007\n\u0000\u0000\u0ca2\u020a\u0001\u0000"+ - "\u0000\u0000\u0ca3\u0ca4\u0007\u000f\u0000\u0000\u0ca4\u0ca5\u0007\n\u0000"+ - "\u0000\u0ca5\u0ca6\u0007\r\u0000\u0000\u0ca6\u0ca7\u0007\u0017\u0000\u0000"+ - "\u0ca7\u0ca8\u0007\n\u0000\u0000\u0ca8\u020c\u0001\u0000\u0000\u0000\u0ca9"+ - "\u0caa\u0007\u000f\u0000\u0000\u0caa\u0cab\u0007\u0011\u0000\u0000\u0cab"+ - "\u0cac\u0007\u0007\u0000\u0000\u0cac\u0cad\u0007\u0016\u0000\u0000\u0cad"+ - "\u0cae\u0007\u0010\u0000\u0000\u0cae\u0caf\u0007\n\u0000\u0000\u0caf\u020e"+ - "\u0001\u0000\u0000\u0000\u0cb0\u0cb1\u0007\u000f\u0000\u0000\u0cb1\u0cb2"+ - "\u0007\u0011\u0000\u0000\u0cb2\u0cb3\u0007\u0007\u0000\u0000\u0cb3\u0cb4"+ - "\u0007\u001b\u0000\u0000\u0cb4\u0cb5\u0007\u0005\u0000\u0000\u0cb5\u0cb6"+ - "\u0007\u0006\u0000\u0000\u0cb6\u0cb7\u0007\u0016\u0000\u0000\u0cb7\u0cb8"+ - "\u0007\n\u0000\u0000\u0cb8\u0210\u0001\u0000\u0000\u0000\u0cb9\u0cba\u0007"+ - "\u000f\u0000\u0000\u0cba\u0cbb\u0007\u0013\u0000\u0000\u0cbb\u0cbc\u0007"+ - "\f\u0000\u0000\u0cbc\u0cbd\u0007\n\u0000\u0000\u0cbd\u0212\u0001\u0000"+ - "\u0000\u0000\u0cbe\u0cbf\u0007\u000f\u0000\u0000\u0cbf\u0cc0\u0007\u0013"+ - "\u0000\u0000\u0cc0\u0cc1\u0007\u0007\u0000\u0000\u0cc1\u0cc2\u0007\u0010"+ - "\u0000\u0000\u0cc2\u0cc3\u0007\u0014\u0000\u0000\u0cc3\u0214\u0001\u0000"+ - "\u0000\u0000\u0cc4\u0cc5\u0007\u000f\u0000\u0000\u0cc5\u0cc6\u0007\u0013"+ - "\u0000\u0000\u0cc6\u0cc7\u0007\u001b\u0000\u0000\u0cc7\u0cc8\u0007\n\u0000"+ - "\u0000\u0cc8\u0216\u0001\u0000\u0000\u0000\u0cc9\u0cca\u0007\u0007\u0000"+ - "\u0000\u0cca\u0ccb\u0007\u0005\u0000\u0000\u0ccb\u0ccc\u0007\u000f\u0000"+ - "\u0000\u0ccc\u0ccd\u0007\n\u0000\u0000\u0ccd\u0218\u0001\u0000\u0000\u0000"+ - "\u0cce\u0ccf\u0007\u0007\u0000\u0000\u0ccf\u0cd0\u0007\u0005\u0000\u0000"+ - "\u0cd0\u0cd1\u0007\u000f\u0000\u0000\u0cd1\u0cd2\u0007\n\u0000\u0000\u0cd2"+ - "\u0cd3\u0007\t\u0000\u0000\u0cd3\u021a\u0001\u0000\u0000\u0000\u0cd4\u0cd5"+ - "\u0007\u0007\u0000\u0000\u0cd5\u0cd6\u0007\n\u0000\u0000\u0cd6\u0cd7\u0007"+ - "\u001a\u0000\u0000\u0cd7\u0cd8\u0007\u0010\u0000\u0000\u0cd8\u021c\u0001"+ - "\u0000\u0000\u0000\u0cd9\u0cda\u0007\u0007\u0000\u0000\u0cda\u0cdb\u0007"+ - "\u0013\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\u0014\u0000\u0000\u0ce0\u0ce1\u0007"+ - "\u0011\u0000\u0000\u0ce1\u0ce2\u0007\u0007\u0000\u0000\u0ce2\u0ce3\u0007"+ - "\u0017\u0000\u0000\u0ce3\u0220\u0001\u0000\u0000\u0000\u0ce4\u0ce5\u0007"+ - "\u0007\u0000\u0000\u0ce5\u0ce6\u0007\u0013\u0000\u0000\u0ce6\u0ce7\u0007"+ - "\u0010\u0000\u0000\u0ce7\u0ce8\u0007\u0011\u0000\u0000\u0ce8\u0ce9\u0007"+ - "\u0019\u0000\u0000\u0ce9\u0cea\u0007\b\u0000\u0000\u0cea\u0222\u0001\u0000"+ - "\u0000\u0000\u0ceb\u0cec\u0007\u0007\u0000\u0000\u0cec\u0ced\u0007\u0013"+ - "\u0000\u0000\u0ced\u0cee\u0007\u001c\u0000\u0000\u0cee\u0cef\u0007\u0005"+ - "\u0000\u0000\u0cef\u0cf0\u0007\u0011\u0000\u0000\u0cf0\u0cf1\u0007\u0010"+ - "\u0000\u0000\u0cf1\u0224\u0001\u0000\u0000\u0000\u0cf2\u0cf3\u0007\u0007"+ - "\u0000\u0000\u0cf3\u0cf4\u0007\u0016\u0000\u0000\u0cf4\u0cf5\u0007\u0006"+ - "\u0000\u0000\u0cf5\u0cf6\u0007\u0006\u0000\u0000\u0cf6\u0cf7\u0007\t\u0000"+ - "\u0000\u0cf7\u0226\u0001\u0000\u0000\u0000\u0cf8\u0cf9\u0007\u0013\u0000"+ - "\u0000\u0cf9\u0cfa\u0007\u0012\u0000\u0000\u0cfa\u0cfb\u0007\u001e\u0000"+ - "\u0000\u0cfb\u0cfc\u0007\n\u0000\u0000\u0cfc\u0cfd\u0007\u000e\u0000\u0000"+ - "\u0cfd\u0cfe\u0007\u0010\u0000\u0000\u0cfe\u0228\u0001\u0000\u0000\u0000"+ - "\u0cff\u0d00\u0007\u0013\u0000\u0000\u0d00\u0d01\u0007\u0019\u0000\u0000"+ - "\u0d01\u022a\u0001\u0000\u0000\u0000\u0d02\u0d03\u0007\u0013\u0000\u0000"+ - "\u0d03\u0d04\u0007\u0019\u0000\u0000\u0d04\u0d05\u0007\u0019\u0000\u0000"+ - "\u0d05\u022c\u0001\u0000\u0000\u0000\u0d06\u0d07\u0007\u0013\u0000\u0000"+ - "\u0d07\u0d08\u0007\u0011\u0000\u0000\u0d08\u0d09\u0007\f\u0000\u0000\u0d09"+ - "\u0d0a\u0007\t\u0000\u0000\u0d0a\u022e\u0001\u0000\u0000\u0000\u0d0b\u0d0c"+ - "\u0007\u0013\u0000\u0000\u0d0c\u0d0d\u0007\u0018\u0000\u0000\u0d0d\u0d0e"+ - "\u0007\n\u0000\u0000\u0d0e\u0d0f\u0007\r\u0000\u0000\u0d0f\u0d10\u0007"+ - "\u0005\u0000\u0000\u0d10\u0d11\u0007\u0010\u0000\u0000\u0d11\u0d12\u0007"+ - "\u0013\u0000\u0000\u0d12\u0d13\u0007\r\u0000\u0000\u0d13\u0230\u0001\u0000"+ - "\u0000\u0000\u0d14\u0d15\u0007\u0013\u0000\u0000\u0d15\u0d16\u0007\u0018"+ - "\u0000\u0000\u0d16\u0d17\u0007\u0010\u0000\u0000\u0d17\u0d18\u0007\u0011"+ - "\u0000\u0000\u0d18\u0d19\u0007\u0013\u0000\u0000\u0d19\u0d1a\u0007\u0007"+ - "\u0000\u0000\u0d1a\u0232\u0001\u0000\u0000\u0000\u0d1b\u0d1c\u0007\u0013"+ - "\u0000\u0000\u0d1c\u0d1d\u0007\u0018\u0000\u0000\u0d1d\u0d1e\u0007\u0010"+ - "\u0000\u0000\u0d1e\u0d1f\u0007\u0011\u0000\u0000\u0d1f\u0d20\u0007\u0013"+ - "\u0000\u0000\u0d20\u0d21\u0007\u0007\u0000\u0000\u0d21\u0d22\u0007\t\u0000"+ - "\u0000\u0d22\u0234\u0001\u0000\u0000\u0000\u0d23\u0d24\u0007\u0013\u0000"+ - "\u0000\u0d24\u0d25\u0007\u001c\u0000\u0000\u0d25\u0d26\u0007\u0007\u0000"+ - "\u0000\u0d26\u0d27\u0007\n\u0000\u0000\u0d27\u0d28\u0007\f\u0000\u0000"+ - "\u0d28\u0236\u0001\u0000\u0000\u0000\u0d29\u0d2a\u0007\u0013\u0000\u0000"+ - "\u0d2a\u0d2b\u0007\u001c\u0000\u0000\u0d2b\u0d2c\u0007\u0007\u0000\u0000"+ - "\u0d2c\u0d2d\u0007\n\u0000\u0000\u0d2d\u0d2e\u0007\r\u0000\u0000\u0d2e"+ - "\u0238\u0001\u0000\u0000\u0000\u0d2f\u0d30\u0007\u0018\u0000\u0000\u0d30"+ - "\u0d31\u0007\u0005\u0000\u0000\u0d31\u0d32\u0007\r\u0000\u0000\u0d32\u0d33"+ - "\u0007\t\u0000\u0000\u0d33\u0d34\u0007\n\u0000\u0000\u0d34\u0d35\u0007"+ - "\r\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\u0005\u0000\u0000\u0d3c\u0d3d\u0007\u0006\u0000"+ - "\u0000\u0d3d\u023c\u0001\u0000\u0000\u0000\u0d3e\u0d3f\u0007\u0018\u0000"+ - "\u0000\u0d3f\u0d40\u0007\u0005\u0000\u0000\u0d40\u0d41\u0007\r\u0000\u0000"+ - "\u0d41\u0d42\u0007\u0010\u0000\u0000\u0d42\u0d43\u0007\u0011\u0000\u0000"+ - "\u0d43\u0d44\u0007\u0010\u0000\u0000\u0d44\u0d45\u0007\u0011\u0000\u0000"+ - "\u0d45\u0d46\u0007\u0013\u0000\u0000\u0d46\u0d47\u0007\u0007\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\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\u0005\u0000\u0000\u0d52\u0d53\u0007\t\u0000\u0000\u0d53\u0d54\u0007"+ - "\t\u0000\u0000\u0d54\u0d55\u0007\u001c\u0000\u0000\u0d55\u0d56\u0007\u0013"+ - "\u0000\u0000\u0d56\u0d57\u0007\r\u0000\u0000\u0d57\u0d58\u0007\f\u0000"+ - "\u0000\u0d58\u0242\u0001\u0000\u0000\u0000\u0d59\u0d5a\u0007\u0018\u0000"+ - "\u0000\u0d5a\u0d5b\u0007\u0006\u0000\u0000\u0d5b\u0d5c\u0007\u0005\u0000"+ - "\u0000\u0d5c\u0d5d\u0007\u0007\u0000\u0000\u0d5d\u0d5e\u0007\t\u0000\u0000"+ - "\u0d5e\u0244\u0001\u0000\u0000\u0000\u0d5f\u0d60\u0007\u0018\u0000\u0000"+ - "\u0d60\u0d61\u0007\r\u0000\u0000\u0d61\u0d62\u0007\n\u0000\u0000\u0d62"+ - "\u0d63\u0007\u000e\u0000\u0000\u0d63\u0d64\u0007\n\u0000\u0000\u0d64\u0d65"+ - "\u0007\f\u0000\u0000\u0d65\u0d66\u0007\u0011\u0000\u0000\u0d66\u0d67\u0007"+ - "\u0007\u0000\u0000\u0d67\u0d68\u0007\u0017\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\u0248\u0001\u0000\u0000\u0000"+ - "\u0d71\u0d72\u0007\u0018\u0000\u0000\u0d72\u0d73\u0007\r\u0000\u0000\u0d73"+ - "\u0d74\u0007\n\u0000\u0000\u0d74\u0d75\u0007\u0018\u0000\u0000\u0d75\u0d76"+ - "\u0007\u0005\u0000\u0000\u0d76\u0d77\u0007\r\u0000\u0000\u0d77\u0d78\u0007"+ - "\n\u0000\u0000\u0d78\u0d79\u0007\f\u0000\u0000\u0d79\u024a\u0001\u0000"+ - "\u0000\u0000\u0d7a\u0d7b\u0007\u0018\u0000\u0000\u0d7b\u0d7c\u0007\r\u0000"+ - "\u0000\u0d7c\u0d7d\u0007\n\u0000\u0000\u0d7d\u0d7e\u0007\t\u0000\u0000"+ - "\u0d7e\u0d7f\u0007\n\u0000\u0000\u0d7f\u0d80\u0007\r\u0000\u0000\u0d80"+ - "\u0d81\u0007\u001b\u0000\u0000\u0d81\u0d82\u0007\n\u0000\u0000\u0d82\u024c"+ - "\u0001\u0000\u0000\u0000\u0d83\u0d84\u0007\u0018\u0000\u0000\u0d84\u0d85"+ - "\u0007\r\u0000\u0000\u0d85\u0d86\u0007\u0011\u0000\u0000\u0d86\u0d87\u0007"+ - "\u0013\u0000\u0000\u0d87\u0d88\u0007\r\u0000\u0000\u0d88\u024e\u0001\u0000"+ - "\u0000\u0000\u0d89\u0d8a\u0007\u0018\u0000\u0000\u0d8a\u0d8b\u0007\r\u0000"+ - "\u0000\u0d8b\u0d8c\u0007\u0011\u0000\u0000\u0d8c\u0d8d\u0007\u001b\u0000"+ - "\u0000\u0d8d\u0d8e\u0007\u0011\u0000\u0000\u0d8e\u0d8f\u0007\u0006\u0000"+ - "\u0000\u0d8f\u0d90\u0007\n\u0000\u0000\u0d90\u0d91\u0007\u0017\u0000\u0000"+ - "\u0d91\u0d92\u0007\n\u0000\u0000\u0d92\u0d93\u0007\t\u0000\u0000\u0d93"+ - "\u0250\u0001\u0000\u0000\u0000\u0d94\u0d95\u0007\u0018\u0000\u0000\u0d95"+ - "\u0d96\u0007\r\u0000\u0000\u0d96\u0d97\u0007\u0013\u0000\u0000\u0d97\u0d98"+ - "\u0007\u000e\u0000\u0000\u0d98\u0d99\u0007\n\u0000\u0000\u0d99\u0d9a\u0007"+ - "\f\u0000\u0000\u0d9a\u0d9b\u0007\u0016\u0000\u0000\u0d9b\u0d9c\u0007\r"+ - "\u0000\u0000\u0d9c\u0d9d\u0007\u0005\u0000\u0000\u0d9d\u0d9e\u0007\u0006"+ - "\u0000\u0000\u0d9e\u0252\u0001\u0000\u0000\u0000\u0d9f\u0da0\u0007\u0018"+ - "\u0000\u0000\u0da0\u0da1\u0007\r\u0000\u0000\u0da1\u0da2\u0007\u0013\u0000"+ - "\u0000\u0da2\u0da3\u0007\u000e\u0000\u0000\u0da3\u0da4\u0007\n\u0000\u0000"+ - "\u0da4\u0da5\u0007\f\u0000\u0000\u0da5\u0da6\u0007\u0016\u0000\u0000\u0da6"+ - "\u0da7\u0007\r\u0000\u0000\u0da7\u0da8\u0007\n\u0000\u0000\u0da8\u0254"+ - "\u0001\u0000\u0000\u0000\u0da9\u0daa\u0007\u0018\u0000\u0000\u0daa\u0dab"+ - "\u0007\r\u0000\u0000\u0dab\u0dac\u0007\u0013\u0000\u0000\u0dac\u0dad\u0007"+ - "\u0017\u0000\u0000\u0dad\u0dae\u0007\r\u0000\u0000\u0dae\u0daf\u0007\u0005"+ - "\u0000\u0000\u0daf\u0db0\u0007\u000f\u0000\u0000\u0db0\u0256\u0001\u0000"+ - "\u0000\u0000\u0db1\u0db2\u0007\u001d\u0000\u0000\u0db2\u0db3\u0007\u0016"+ - "\u0000\u0000\u0db3\u0db4\u0007\u0013\u0000\u0000\u0db4\u0db5\u0007\u0010"+ - "\u0000\u0000\u0db5\u0db6\u0007\n\u0000\u0000\u0db6\u0258\u0001\u0000\u0000"+ - "\u0000\u0db7\u0db8\u0007\r\u0000\u0000\u0db8\u0db9\u0007\u0005\u0000\u0000"+ - "\u0db9\u0dba\u0007\u0007\u0000\u0000\u0dba\u0dbb\u0007\u0017\u0000\u0000"+ - "\u0dbb\u0dbc\u0007\n\u0000\u0000\u0dbc\u025a\u0001\u0000\u0000\u0000\u0dbd"+ - "\u0dbe\u0007\r\u0000\u0000\u0dbe\u0dbf\u0007\n\u0000\u0000\u0dbf\u0dc0"+ - "\u0007\u0005\u0000\u0000\u0dc0\u0dc1\u0007\f\u0000\u0000\u0dc1\u025c\u0001"+ - "\u0000\u0000\u0000\u0dc2\u0dc3\u0007\r\u0000\u0000\u0dc3\u0dc4\u0007\n"+ - "\u0000\u0000\u0dc4\u0dc5\u0007\u0005\u0000\u0000\u0dc5\u0dc6\u0007\t\u0000"+ - "\u0000\u0dc6\u0dc7\u0007\t\u0000\u0000\u0dc7\u0dc8\u0007\u0011\u0000\u0000"+ - "\u0dc8\u0dc9\u0007\u0017\u0000\u0000\u0dc9\u0dca\u0007\u0007\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\u0014\u0000\u0000\u0dcf\u0dd0\u0007\n\u0000\u0000\u0dd0\u0dd1\u0007"+ - "\u000e\u0000\u0000\u0dd1\u0dd2\u0007\u0015\u0000\u0000\u0dd2\u0260\u0001"+ - "\u0000\u0000\u0000\u0dd3\u0dd4\u0007\r\u0000\u0000\u0dd4\u0dd5\u0007\n"+ - "\u0000\u0000\u0dd5\u0dd6\u0007\u000e\u0000\u0000\u0dd6\u0dd7\u0007\u0016"+ - "\u0000\u0000\u0dd7\u0dd8\u0007\r\u0000\u0000\u0dd8\u0dd9\u0007\t\u0000"+ - "\u0000\u0dd9\u0dda\u0007\u0011\u0000\u0000\u0dda\u0ddb\u0007\u001b\u0000"+ - "\u0000\u0ddb\u0ddc\u0007\n\u0000\u0000\u0ddc\u0262\u0001\u0000\u0000\u0000"+ - "\u0ddd\u0dde\u0007\r\u0000\u0000\u0dde\u0ddf\u0007\n\u0000\u0000\u0ddf"+ - "\u0de0\u0007\u0019\u0000\u0000\u0de0\u0264\u0001\u0000\u0000\u0000\u0de1"+ - "\u0de2\u0007\r\u0000\u0000\u0de2\u0de3\u0007\n\u0000\u0000\u0de3\u0de4"+ - "\u0007\u0019\u0000\u0000\u0de4\u0de5\u0007\r\u0000\u0000\u0de5\u0de6\u0007"+ - "\n\u0000\u0000\u0de6\u0de7\u0007\t\u0000\u0000\u0de7\u0de8\u0007\u0014"+ - "\u0000\u0000\u0de8\u0266\u0001\u0000\u0000\u0000\u0de9\u0dea\u0007\r\u0000"+ - "\u0000\u0dea\u0deb\u0007\n\u0000\u0000\u0deb\u0dec\u0007\u0011\u0000\u0000"+ - "\u0dec\u0ded\u0007\u0007\u0000\u0000\u0ded\u0dee\u0007\f\u0000\u0000\u0dee"+ - "\u0def\u0007\n\u0000\u0000\u0def\u0df0\u0007\u001a\u0000\u0000\u0df0\u0268"+ - "\u0001\u0000\u0000\u0000\u0df1\u0df2\u0007\r\u0000\u0000\u0df2\u0df3\u0007"+ - "\n\u0000\u0000\u0df3\u0df4\u0007\u0006\u0000\u0000\u0df4\u0df5\u0007\u0005"+ - "\u0000\u0000\u0df5\u0df6\u0007\u0010\u0000\u0000\u0df6\u0df7\u0007\u0011"+ - "\u0000\u0000\u0df7\u0df8\u0007\u001b\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\u0006\u0000\u0000\u0dfd"+ - "\u0dfe\u0007\n\u0000\u0000\u0dfe\u0dff\u0007\u0005\u0000\u0000\u0dff\u0e00"+ - "\u0007\t\u0000\u0000\u0e00\u0e01\u0007\n\u0000\u0000\u0e01\u026c\u0001"+ - "\u0000\u0000\u0000\u0e02\u0e03\u0007\r\u0000\u0000\u0e03\u0e04\u0007\n"+ - "\u0000\u0000\u0e04\u0e05\u0007\u0007\u0000\u0000\u0e05\u0e06\u0007\u0005"+ - "\u0000\u0000\u0e06\u0e07\u0007\u000f\u0000\u0000\u0e07\u0e08\u0007\n\u0000"+ - "\u0000\u0e08\u026e\u0001\u0000\u0000\u0000\u0e09\u0e0a\u0007\r\u0000\u0000"+ - "\u0e0a\u0e0b\u0007\n\u0000\u0000\u0e0b\u0e0c\u0007\u0018\u0000\u0000\u0e0c"+ - "\u0e0d\u0007\n\u0000\u0000\u0e0d\u0e0e\u0007\u0005\u0000\u0000\u0e0e\u0e0f"+ - "\u0007\u0010\u0000\u0000\u0e0f\u0e10\u0007\u0005\u0000\u0000\u0e10\u0e11"+ - "\u0007\u0012\u0000\u0000\u0e11\u0e12\u0007\u0006\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\u0005"+ - "\u0000\u0000\u0e19\u0e1a\u0007\u000e\u0000\u0000\u0e1a\u0e1b\u0007\n\u0000"+ - "\u0000\u0e1b\u0272\u0001\u0000\u0000\u0000\u0e1c\u0e1d\u0007\r\u0000\u0000"+ - "\u0e1d\u0e1e\u0007\n\u0000\u0000\u0e1e\u0e1f\u0007\u0018\u0000\u0000\u0e1f"+ - "\u0e20\u0007\u0006\u0000\u0000\u0e20\u0e21\u0007\u0011\u0000\u0000\u0e21"+ - "\u0e22\u0007\u000e\u0000\u0000\u0e22\u0e23\u0007\u0005\u0000\u0000\u0e23"+ - "\u0274\u0001\u0000\u0000\u0000\u0e24\u0e25\u0007\r\u0000\u0000\u0e25\u0e26"+ - "\u0007\n\u0000\u0000\u0e26\u0e27\u0007\t\u0000\u0000\u0e27\u0e28\u0007"+ - "\n\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\u0005\u0000\u0000\u0e2f\u0e30\u0007\r\u0000\u0000\u0e30"+ - "\u0e31\u0007\u0010\u0000\u0000\u0e31\u0278\u0001\u0000\u0000\u0000\u0e32"+ - "\u0e33\u0007\r\u0000\u0000\u0e33\u0e34\u0007\n\u0000\u0000\u0e34\u0e35"+ - "\u0007\t\u0000\u0000\u0e35\u0e36\u0007\u0010\u0000\u0000\u0e36\u0e37\u0007"+ - "\r\u0000\u0000\u0e37\u0e38\u0007\u0011\u0000\u0000\u0e38\u0e39\u0007\u000e"+ - "\u0000\u0000\u0e39\u0e3a\u0007\u0010\u0000\u0000\u0e3a\u027a\u0001\u0000"+ - "\u0000\u0000\u0e3b\u0e3c\u0007\r\u0000\u0000\u0e3c\u0e3d\u0007\n\u0000"+ - "\u0000\u0e3d\u0e3e\u0007\u0010\u0000\u0000\u0e3e\u0e3f\u0007\u0016\u0000"+ - "\u0000\u0e3f\u0e40\u0007\r\u0000\u0000\u0e40\u0e41\u0007\u0007\u0000\u0000"+ - "\u0e41\u0e42\u0007\t\u0000\u0000\u0e42\u027c\u0001\u0000\u0000\u0000\u0e43"+ - "\u0e44\u0007\r\u0000\u0000\u0e44\u0e45\u0007\n\u0000\u0000\u0e45\u0e46"+ - "\u0007\u001b\u0000\u0000\u0e46\u0e47\u0007\u0013\u0000\u0000\u0e47\u0e48"+ - "\u0007\u0015\u0000\u0000\u0e48\u0e49\u0007\n\u0000\u0000\u0e49\u027e\u0001"+ - "\u0000\u0000\u0000\u0e4a\u0e4b\u0007\r\u0000\u0000\u0e4b\u0e4c\u0007\u0013"+ - "\u0000\u0000\u0e4c\u0e4d\u0007\u0006\u0000\u0000\u0e4d\u0e4e\u0007\n\u0000"+ - "\u0000\u0e4e\u0280\u0001\u0000\u0000\u0000\u0e4f\u0e50\u0007\r\u0000\u0000"+ - "\u0e50\u0e51\u0007\u0013\u0000\u0000\u0e51\u0e52\u0007\u0006\u0000\u0000"+ - "\u0e52\u0e53\u0007\u0006\u0000\u0000\u0e53\u0e54\u0007\u0012\u0000\u0000"+ - "\u0e54\u0e55\u0007\u0005\u0000\u0000\u0e55\u0e56\u0007\u000e\u0000\u0000"+ - "\u0e56\u0e57\u0007\u0015\u0000\u0000\u0e57\u0282\u0001\u0000\u0000\u0000"+ - "\u0e58\u0e59\u0007\r\u0000\u0000\u0e59\u0e5a\u0007\u0013\u0000\u0000\u0e5a"+ - "\u0e5b\u0007\u001c\u0000\u0000\u0e5b\u0e5c\u0007\t\u0000\u0000\u0e5c\u0284"+ - "\u0001\u0000\u0000\u0000\u0e5d\u0e5e\u0007\r\u0000\u0000\u0e5e\u0e5f\u0007"+ - "\u0016\u0000\u0000\u0e5f\u0e60\u0007\u0006\u0000\u0000\u0e60\u0e61\u0007"+ - "\n\u0000\u0000\u0e61\u0286\u0001\u0000\u0000\u0000\u0e62\u0e63\u0007\t"+ - "\u0000\u0000\u0e63\u0e64\u0007\u0005\u0000\u0000\u0e64\u0e65\u0007\u001b"+ - "\u0000\u0000\u0e65\u0e66\u0007\n\u0000\u0000\u0e66\u0e67\u0007\u0018\u0000"+ - "\u0000\u0e67\u0e68\u0007\u0013\u0000\u0000\u0e68\u0e69\u0007\u0011\u0000"+ - "\u0000\u0e69\u0e6a\u0007\u0007\u0000\u0000\u0e6a\u0e6b\u0007\u0010\u0000"+ - "\u0000\u0e6b\u0288\u0001\u0000\u0000\u0000\u0e6c\u0e6d\u0007\t\u0000\u0000"+ - "\u0e6d\u0e6e\u0007\u000e\u0000\u0000\u0e6e\u0e6f\u0007\u0014\u0000\u0000"+ - "\u0e6f\u0e70\u0007\n\u0000\u0000\u0e70\u0e71\u0007\u000f\u0000\u0000\u0e71"+ - "\u0e72\u0007\u0005\u0000\u0000\u0e72\u028a\u0001\u0000\u0000\u0000\u0e73"+ - "\u0e74\u0007\t\u0000\u0000\u0e74\u0e75\u0007\u000e\u0000\u0000\u0e75\u0e76"+ - "\u0007\r\u0000\u0000\u0e76\u0e77\u0007\u0013\u0000\u0000\u0e77\u0e78\u0007"+ - "\u0006\u0000\u0000\u0e78\u0e79\u0007\u0006\u0000\u0000\u0e79\u028c\u0001"+ - "\u0000\u0000\u0000\u0e7a\u0e7b\u0007\t\u0000\u0000\u0e7b\u0e7c\u0007\n"+ - "\u0000\u0000\u0e7c\u0e7d\u0007\u0005\u0000\u0000\u0e7d\u0e7e\u0007\r\u0000"+ - "\u0000\u0e7e\u0e7f\u0007\u000e\u0000\u0000\u0e7f\u0e80\u0007\u0014\u0000"+ - "\u0000\u0e80\u028e\u0001\u0000\u0000\u0000\u0e81\u0e82\u0007\t\u0000\u0000"+ - "\u0e82\u0e83\u0007\n\u0000\u0000\u0e83\u0e84\u0007\u000e\u0000\u0000\u0e84"+ - "\u0e85\u0007\u0013\u0000\u0000\u0e85\u0e86\u0007\u0007\u0000\u0000\u0e86"+ - "\u0e87\u0007\f\u0000\u0000\u0e87\u0290\u0001\u0000\u0000\u0000\u0e88\u0e89"+ - "\u0007\t\u0000\u0000\u0e89\u0e8a\u0007\n\u0000\u0000\u0e8a\u0e8b\u0007"+ - "\u000e\u0000\u0000\u0e8b\u0e8c\u0007\u0016\u0000\u0000\u0e8c\u0e8d\u0007"+ - "\r\u0000\u0000\u0e8d\u0e8e\u0007\u0011\u0000\u0000\u0e8e\u0e8f\u0007\u0010"+ - "\u0000\u0000\u0e8f\u0e90\u0007\b\u0000\u0000\u0e90\u0292\u0001\u0000\u0000"+ - "\u0000\u0e91\u0e92\u0007\t\u0000\u0000\u0e92\u0e93\u0007\n\u0000\u0000"+ - "\u0e93\u0e94\u0007\u001d\u0000\u0000\u0e94\u0e95\u0007\u0016\u0000\u0000"+ - "\u0e95\u0e96\u0007\n\u0000\u0000\u0e96\u0e97\u0007\u0007\u0000\u0000\u0e97"+ - "\u0e98\u0007\u000e\u0000\u0000\u0e98\u0e99\u0007\n\u0000\u0000\u0e99\u0294"+ - "\u0001\u0000\u0000\u0000\u0e9a\u0e9b\u0007\t\u0000\u0000\u0e9b\u0e9c\u0007"+ - "\n\u0000\u0000\u0e9c\u0e9d\u0007\u001d\u0000\u0000\u0e9d\u0e9e\u0007\u0016"+ - "\u0000\u0000\u0e9e\u0e9f\u0007\n\u0000\u0000\u0e9f\u0ea0\u0007\u0007\u0000"+ - "\u0000\u0ea0\u0ea1\u0007\u000e\u0000\u0000\u0ea1\u0ea2\u0007\n\u0000\u0000"+ - "\u0ea2\u0ea3\u0007\t\u0000\u0000\u0ea3\u0296\u0001\u0000\u0000\u0000\u0ea4"+ - "\u0ea5\u0007\t\u0000\u0000\u0ea5\u0ea6\u0007\n\u0000\u0000\u0ea6\u0ea7"+ - "\u0007\r\u0000\u0000\u0ea7\u0ea8\u0007\u0011\u0000\u0000\u0ea8\u0ea9\u0007"+ - "\u0005\u0000\u0000\u0ea9\u0eaa\u0007\u0006\u0000\u0000\u0eaa\u0eab\u0007"+ - "\u0011\u0000\u0000\u0eab\u0eac\u0007\u000b\u0000\u0000\u0eac\u0ead\u0007"+ - "\u0005\u0000\u0000\u0ead\u0eae\u0007\u0012\u0000\u0000\u0eae\u0eaf\u0007"+ - "\u0006\u0000\u0000\u0eaf\u0eb0\u0007\n\u0000\u0000\u0eb0\u0298\u0001\u0000"+ - "\u0000\u0000\u0eb1\u0eb2\u0007\t\u0000\u0000\u0eb2\u0eb3\u0007\n\u0000"+ - "\u0000\u0eb3\u0eb4\u0007\r\u0000\u0000\u0eb4\u0eb5\u0007\u001b\u0000\u0000"+ - "\u0eb5\u0eb6\u0007\n\u0000\u0000\u0eb6\u0eb7\u0007\r\u0000\u0000\u0eb7"+ - "\u029a\u0001\u0000\u0000\u0000\u0eb8\u0eb9\u0007\t\u0000\u0000\u0eb9\u0eba"+ - "\u0007\n\u0000\u0000\u0eba\u0ebb\u0007\t\u0000\u0000\u0ebb\u0ebc\u0007"+ - "\t\u0000\u0000\u0ebc\u0ebd\u0007\u0011\u0000\u0000\u0ebd\u0ebe\u0007\u0013"+ - "\u0000\u0000\u0ebe\u0ebf\u0007\u0007\u0000\u0000\u0ebf\u029c\u0001\u0000"+ - "\u0000\u0000\u0ec0\u0ec1\u0007\t\u0000\u0000\u0ec1\u0ec2\u0007\n\u0000"+ - "\u0000\u0ec2\u0ec3\u0007\u0010\u0000\u0000\u0ec3\u029e\u0001\u0000\u0000"+ - "\u0000\u0ec4\u0ec5\u0007\t\u0000\u0000\u0ec5\u0ec6\u0007\u0014\u0000\u0000"+ - "\u0ec6\u0ec7\u0007\u0005\u0000\u0000\u0ec7\u0ec8\u0007\r\u0000\u0000\u0ec8"+ - "\u0ec9\u0007\n\u0000\u0000\u0ec9\u02a0\u0001\u0000\u0000\u0000\u0eca\u0ecb"+ - "\u0007\t\u0000\u0000\u0ecb\u0ecc\u0007\u0014\u0000\u0000\u0ecc\u0ecd\u0007"+ - "\u0013\u0000\u0000\u0ecd\u0ece\u0007\u001c\u0000\u0000\u0ece\u02a2\u0001"+ - "\u0000\u0000\u0000\u0ecf\u0ed0\u0007\t\u0000\u0000\u0ed0\u0ed1\u0007\u0011"+ - "\u0000\u0000\u0ed1\u0ed2\u0007\u000f\u0000\u0000\u0ed2\u0ed3\u0007\u0018"+ - "\u0000\u0000\u0ed3\u0ed4\u0007\u0006\u0000\u0000\u0ed4\u0ed5\u0007\n\u0000"+ - "\u0000\u0ed5\u02a4\u0001\u0000\u0000\u0000\u0ed6\u0ed7\u0007\t\u0000\u0000"+ - "\u0ed7\u0ed8\u0007\u0007\u0000\u0000\u0ed8\u0ed9\u0007\u0005\u0000\u0000"+ - "\u0ed9\u0eda\u0007\u0018\u0000\u0000\u0eda\u0edb\u0007\t\u0000\u0000\u0edb"+ - "\u0edc\u0007\u0014\u0000\u0000\u0edc\u0edd\u0007\u0013\u0000\u0000\u0edd"+ - "\u0ede\u0007\u0010\u0000\u0000\u0ede\u02a6\u0001\u0000\u0000\u0000\u0edf"+ - "\u0ee0\u0007\t\u0000\u0000\u0ee0\u0ee1\u0007\u0010\u0000\u0000\u0ee1\u0ee2"+ - "\u0007\u0005\u0000\u0000\u0ee2\u0ee3\u0007\u0012\u0000\u0000\u0ee3\u0ee4"+ - "\u0007\u0006\u0000\u0000\u0ee4\u0ee5\u0007\n\u0000\u0000\u0ee5\u02a8\u0001"+ - "\u0000\u0000\u0000\u0ee6\u0ee7\u0007\t\u0000\u0000\u0ee7\u0ee8\u0007\u0010"+ - "\u0000\u0000\u0ee8\u0ee9\u0007\u0005\u0000\u0000\u0ee9\u0eea\u0007\u0007"+ - "\u0000\u0000\u0eea\u0eeb\u0007\f\u0000\u0000\u0eeb\u0eec\u0007\u0005\u0000"+ - "\u0000\u0eec\u0eed\u0007\u0006\u0000\u0000\u0eed\u0eee\u0007\u0013\u0000"+ - "\u0000\u0eee\u0eef\u0007\u0007\u0000\u0000\u0eef\u0ef0\u0007\n\u0000\u0000"+ - "\u0ef0\u02aa\u0001\u0000\u0000\u0000\u0ef1\u0ef2\u0007\t\u0000\u0000\u0ef2"+ - "\u0ef3\u0007\u0010\u0000\u0000\u0ef3\u0ef4\u0007\u0005\u0000\u0000\u0ef4"+ - "\u0ef5\u0007\r\u0000\u0000\u0ef5\u0ef6\u0007\u0010\u0000\u0000\u0ef6\u02ac"+ - "\u0001\u0000\u0000\u0000\u0ef7\u0ef8\u0007\t\u0000\u0000\u0ef8\u0ef9\u0007"+ - "\u0010\u0000\u0000\u0ef9\u0efa\u0007\u0005\u0000\u0000\u0efa\u0efb\u0007"+ - "\u0010\u0000\u0000\u0efb\u0efc\u0007\n\u0000\u0000\u0efc\u0efd\u0007\u000f"+ - "\u0000\u0000\u0efd\u0efe\u0007\n\u0000\u0000\u0efe\u0eff\u0007\u0007\u0000"+ - "\u0000\u0eff\u0f00\u0007\u0010\u0000\u0000\u0f00\u02ae\u0001\u0000\u0000"+ - "\u0000\u0f01\u0f02\u0007\t\u0000\u0000\u0f02\u0f03\u0007\u0010\u0000\u0000"+ - "\u0f03\u0f04\u0007\u0005\u0000\u0000\u0f04\u0f05\u0007\u0010\u0000\u0000"+ - "\u0f05\u0f06\u0007\u0011\u0000\u0000\u0f06\u0f07\u0007\t\u0000\u0000\u0f07"+ - "\u0f08\u0007\u0010\u0000\u0000\u0f08\u0f09\u0007\u0011\u0000\u0000\u0f09"+ - "\u0f0a\u0007\u000e\u0000\u0000\u0f0a\u0f0b\u0007\t\u0000\u0000\u0f0b\u02b0"+ - "\u0001\u0000\u0000\u0000\u0f0c\u0f0d\u0007\t\u0000\u0000\u0f0d\u0f0e\u0007"+ - "\u0010\u0000\u0000\u0f0e\u0f0f\u0007\f\u0000\u0000\u0f0f\u0f10\u0007\u0011"+ - "\u0000\u0000\u0f10\u0f11\u0007\u0007\u0000\u0000\u0f11\u02b2\u0001\u0000"+ - "\u0000\u0000\u0f12\u0f13\u0007\t\u0000\u0000\u0f13\u0f14\u0007\u0010\u0000"+ - "\u0000\u0f14\u0f15\u0007\f\u0000\u0000\u0f15\u0f16\u0007\u0013\u0000\u0000"+ - "\u0f16\u0f17\u0007\u0016\u0000\u0000\u0f17\u0f18\u0007\u0010\u0000\u0000"+ - "\u0f18\u02b4\u0001\u0000\u0000\u0000\u0f19\u0f1a\u0007\t\u0000\u0000\u0f1a"+ - "\u0f1b\u0007\u0010\u0000\u0000\u0f1b\u0f1c\u0007\u0013\u0000\u0000\u0f1c"+ - "\u0f1d\u0007\r\u0000\u0000\u0f1d\u0f1e\u0007\u0005\u0000\u0000\u0f1e\u0f1f"+ - "\u0007\u0017\u0000\u0000\u0f1f\u0f20\u0007\n\u0000\u0000\u0f20\u02b6\u0001"+ - "\u0000\u0000\u0000\u0f21\u0f22\u0007\t\u0000\u0000\u0f22\u0f23\u0007\u0010"+ - "\u0000\u0000\u0f23\u0f24\u0007\r\u0000\u0000\u0f24\u0f25\u0007\u0011\u0000"+ - "\u0000\u0f25\u0f26\u0007\u000e\u0000\u0000\u0f26\u0f27\u0007\u0010\u0000"+ - "\u0000\u0f27\u02b8\u0001\u0000\u0000\u0000\u0f28\u0f29\u0007\t\u0000\u0000"+ - "\u0f29\u0f2a\u0007\u0010\u0000\u0000\u0f2a\u0f2b\u0007\r\u0000\u0000\u0f2b"+ - "\u0f2c\u0007\u0011\u0000\u0000\u0f2c\u0f2d\u0007\u0018\u0000\u0000\u0f2d"+ - "\u02ba\u0001\u0000\u0000\u0000\u0f2e\u0f2f\u0007\t\u0000\u0000\u0f2f\u0f30"+ - "\u0007\b\u0000\u0000\u0f30\u0f31\u0007\t\u0000\u0000\u0f31\u0f32\u0007"+ - "\u0011\u0000\u0000\u0f32\u0f33\u0007\f\u0000\u0000\u0f33\u02bc\u0001\u0000"+ - "\u0000\u0000\u0f34\u0f35\u0007\t\u0000\u0000\u0f35\u0f36\u0007\b\u0000"+ - "\u0000\u0f36\u0f37\u0007\t\u0000\u0000\u0f37\u0f38\u0007\u0010\u0000\u0000"+ - "\u0f38\u0f39\u0007\n\u0000\u0000\u0f39\u0f3a\u0007\u000f\u0000\u0000\u0f3a"+ - "\u02be\u0001\u0000\u0000\u0000\u0f3b\u0f3c\u0007\u0010\u0000\u0000\u0f3c"+ - "\u0f3d\u0007\u0005\u0000\u0000\u0f3d\u0f3e\u0007\u0012\u0000\u0000\u0f3e"+ - "\u0f3f\u0007\u0006\u0000\u0000\u0f3f\u0f40\u0007\n\u0000\u0000\u0f40\u0f41"+ - "\u0007\t\u0000\u0000\u0f41\u02c0\u0001\u0000\u0000\u0000\u0f42\u0f43\u0007"+ - "\u0010\u0000\u0000\u0f43\u0f44\u0007\u0005\u0000\u0000\u0f44\u0f45\u0007"+ - "\u0012\u0000\u0000\u0f45\u0f46\u0007\u0006\u0000\u0000\u0f46\u0f47\u0007"+ - "\n\u0000\u0000\u0f47\u0f48\u0007\t\u0000\u0000\u0f48\u0f49\u0007\u0018"+ - "\u0000\u0000\u0f49\u0f4a\u0007\u0005\u0000\u0000\u0f4a\u0f4b\u0007\u000e"+ - "\u0000\u0000\u0f4b\u0f4c\u0007\n\u0000\u0000\u0f4c\u02c2\u0001\u0000\u0000"+ - "\u0000\u0f4d\u0f4e\u0007\u0010\u0000\u0000\u0f4e\u0f4f\u0007\n\u0000\u0000"+ - "\u0f4f\u0f50\u0007\u000f\u0000\u0000\u0f50\u0f51\u0007\u0018\u0000\u0000"+ - "\u0f51\u02c4\u0001\u0000\u0000\u0000\u0f52\u0f53\u0007\u0010\u0000\u0000"+ - "\u0f53\u0f54\u0007\n\u0000\u0000\u0f54\u0f55\u0007\u000f\u0000\u0000\u0f55"+ - "\u0f56\u0007\u0018\u0000\u0000\u0f56\u0f57\u0007\u0006\u0000\u0000\u0f57"+ - "\u0f58\u0007\u0005\u0000\u0000\u0f58\u0f59\u0007\u0010\u0000\u0000\u0f59"+ - "\u0f5a\u0007\n\u0000\u0000\u0f5a\u02c6\u0001\u0000\u0000\u0000\u0f5b\u0f5c"+ - "\u0007\u0010\u0000\u0000\u0f5c\u0f5d\u0007\n\u0000\u0000\u0f5d\u0f5e\u0007"+ - "\u000f\u0000\u0000\u0f5e\u0f5f\u0007\u0018\u0000\u0000\u0f5f\u0f60\u0007"+ - "\u0013\u0000\u0000\u0f60\u0f61\u0007\r\u0000\u0000\u0f61\u0f62\u0007\u0005"+ - "\u0000\u0000\u0f62\u0f63\u0007\r\u0000\u0000\u0f63\u0f64\u0007\b\u0000"+ - "\u0000\u0f64\u02c8\u0001\u0000\u0000\u0000\u0f65\u0f66\u0007\u0010\u0000"+ - "\u0000\u0f66\u0f67\u0007\n\u0000\u0000\u0f67\u0f68\u0007\u001a\u0000\u0000"+ - "\u0f68\u0f69\u0007\u0010\u0000\u0000\u0f69\u02ca\u0001\u0000\u0000\u0000"+ - "\u0f6a\u0f6b\u0007\u0010\u0000\u0000\u0f6b\u0f6c\u0007\r\u0000\u0000\u0f6c"+ - "\u0f6d\u0007\u0005\u0000\u0000\u0f6d\u0f6e\u0007\u0007\u0000\u0000\u0f6e"+ - "\u0f6f\u0007\t\u0000\u0000\u0f6f\u0f70\u0007\u0005\u0000\u0000\u0f70\u0f71"+ - "\u0007\u000e\u0000\u0000\u0f71\u0f72\u0007\u0010\u0000\u0000\u0f72\u0f73"+ - "\u0007\u0011\u0000\u0000\u0f73\u0f74\u0007\u0013\u0000\u0000\u0f74\u0f75"+ - "\u0007\u0007\u0000\u0000\u0f75\u02cc\u0001\u0000\u0000\u0000\u0f76\u0f77"+ - "\u0007\u0010\u0000\u0000\u0f77\u0f78\u0007\r\u0000\u0000\u0f78\u0f79\u0007"+ - "\u0011\u0000\u0000\u0f79\u0f7a\u0007\u0017\u0000\u0000\u0f7a\u0f7b\u0007"+ - "\u0017\u0000\u0000\u0f7b\u0f7c\u0007\n\u0000\u0000\u0f7c\u0f7d\u0007\r"+ - "\u0000\u0000\u0f7d\u02ce\u0001\u0000\u0000\u0000\u0f7e\u0f7f\u0007\u0010"+ - "\u0000\u0000\u0f7f\u0f80\u0007\r\u0000\u0000\u0f80\u0f81\u0007\u0016\u0000"+ - "\u0000\u0f81\u0f82\u0007\u0007\u0000\u0000\u0f82\u0f83\u0007\u000e\u0000"+ - "\u0000\u0f83\u0f84\u0007\u0005\u0000\u0000\u0f84\u0f85\u0007\u0010\u0000"+ - "\u0000\u0f85\u0f86\u0007\n\u0000\u0000\u0f86\u02d0\u0001\u0000\u0000\u0000"+ - "\u0f87\u0f88\u0007\u0010\u0000\u0000\u0f88\u0f89\u0007\r\u0000\u0000\u0f89"+ - "\u0f8a\u0007\u0016\u0000\u0000\u0f8a\u0f8b\u0007\t\u0000\u0000\u0f8b\u0f8c"+ - "\u0007\u0010\u0000\u0000\u0f8c\u0f8d\u0007\n\u0000\u0000\u0f8d\u0f8e\u0007"+ - "\f\u0000\u0000\u0f8e\u02d2\u0001\u0000\u0000\u0000\u0f8f\u0f90\u0007\u0010"+ - "\u0000\u0000\u0f90\u0f91\u0007\b\u0000\u0000\u0f91\u0f92\u0007\u0018\u0000"+ - "\u0000\u0f92\u0f93\u0007\n\u0000\u0000\u0f93\u02d4\u0001\u0000\u0000\u0000"+ - "\u0f94\u0f95\u0007\u0010\u0000\u0000\u0f95\u0f96\u0007\b\u0000\u0000\u0f96"+ - "\u0f97\u0007\u0018\u0000\u0000\u0f97\u0f98\u0007\n\u0000\u0000\u0f98\u0f99"+ - "\u0007\t\u0000\u0000\u0f99\u02d6\u0001\u0000\u0000\u0000\u0f9a\u0f9b\u0007"+ - "\u0016\u0000\u0000\u0f9b\u0f9c\u0007\u0007\u0000\u0000\u0f9c\u0f9d\u0007"+ - "\u0012\u0000\u0000\u0f9d\u0f9e\u0007\u0013\u0000\u0000\u0f9e\u0f9f\u0007"+ - "\u0016\u0000\u0000\u0f9f\u0fa0\u0007\u0007\u0000\u0000\u0fa0\u0fa1\u0007"+ - "\f\u0000\u0000\u0fa1\u0fa2\u0007\n\u0000\u0000\u0fa2\u0fa3\u0007\f\u0000"+ - "\u0000\u0fa3\u02d8\u0001\u0000\u0000\u0000\u0fa4\u0fa5\u0007\u0016\u0000"+ - "\u0000\u0fa5\u0fa6\u0007\u0007\u0000\u0000\u0fa6\u0fa7\u0007\u000e\u0000"+ - "\u0000\u0fa7\u0fa8\u0007\u0013\u0000\u0000\u0fa8\u0fa9\u0007\u000f\u0000"+ - "\u0000\u0fa9\u0faa\u0007\u000f\u0000\u0000\u0faa\u0fab\u0007\u0011\u0000"+ - "\u0000\u0fab\u0fac\u0007\u0010\u0000\u0000\u0fac\u0fad\u0007\u0010\u0000"+ - "\u0000\u0fad\u0fae\u0007\n\u0000\u0000\u0fae\u0faf\u0007\f\u0000\u0000"+ - "\u0faf\u02da\u0001\u0000\u0000\u0000\u0fb0\u0fb1\u0007\u0016\u0000\u0000"+ - "\u0fb1\u0fb2\u0007\u0007\u0000\u0000\u0fb2\u0fb3\u0007\n\u0000\u0000\u0fb3"+ - "\u0fb4\u0007\u0007\u0000\u0000\u0fb4\u0fb5\u0007\u000e\u0000\u0000\u0fb5"+ - "\u0fb6\u0007\r\u0000\u0000\u0fb6\u0fb7\u0007\b\u0000\u0000\u0fb7\u0fb8"+ - "\u0007\u0018\u0000\u0000\u0fb8\u0fb9\u0007\u0010\u0000\u0000\u0fb9\u0fba"+ - "\u0007\n\u0000\u0000\u0fba\u0fbb\u0007\f\u0000\u0000\u0fbb\u02dc\u0001"+ - "\u0000\u0000\u0000\u0fbc\u0fbd\u0007\u0016\u0000\u0000\u0fbd\u0fbe\u0007"+ - "\u0007\u0000\u0000\u0fbe\u0fbf\u0007\u0015\u0000\u0000\u0fbf\u0fc0\u0007"+ - "\u0007\u0000\u0000\u0fc0\u0fc1\u0007\u0013\u0000\u0000\u0fc1\u0fc2\u0007"+ - "\u001c\u0000\u0000\u0fc2\u0fc3\u0007\u0007\u0000\u0000\u0fc3\u02de\u0001"+ - "\u0000\u0000\u0000\u0fc4\u0fc5\u0007\u0016\u0000\u0000\u0fc5\u0fc6\u0007"+ - "\u0007\u0000\u0000\u0fc6\u0fc7\u0007\u0006\u0000\u0000\u0fc7\u0fc8\u0007"+ - "\u0011\u0000\u0000\u0fc8\u0fc9\u0007\t\u0000\u0000\u0fc9\u0fca\u0007\u0010"+ - "\u0000\u0000\u0fca\u0fcb\u0007\n\u0000\u0000\u0fcb\u0fcc\u0007\u0007\u0000"+ - "\u0000\u0fcc\u02e0\u0001\u0000\u0000\u0000\u0fcd\u0fce\u0007\u0016\u0000"+ - "\u0000\u0fce\u0fcf\u0007\u0007\u0000\u0000\u0fcf\u0fd0\u0007\u0006\u0000"+ - "\u0000\u0fd0\u0fd1\u0007\u0013\u0000\u0000\u0fd1\u0fd2\u0007\u0017\u0000"+ - "\u0000\u0fd2\u0fd3\u0007\u0017\u0000\u0000\u0fd3\u0fd4\u0007\n\u0000\u0000"+ - "\u0fd4\u0fd5\u0007\f\u0000\u0000\u0fd5\u02e2\u0001\u0000\u0000\u0000\u0fd6"+ - "\u0fd7\u0007\u0016\u0000\u0000\u0fd7\u0fd8\u0007\u0007\u0000\u0000\u0fd8"+ - "\u0fd9\u0007\u0010\u0000\u0000\u0fd9\u0fda\u0007\u0011\u0000\u0000\u0fda"+ - "\u0fdb\u0007\u0006\u0000\u0000\u0fdb\u02e4\u0001\u0000\u0000\u0000\u0fdc"+ - "\u0fdd\u0007\u0016\u0000\u0000\u0fdd\u0fde\u0007\u0018\u0000\u0000\u0fde"+ - "\u0fdf\u0007\f\u0000\u0000\u0fdf\u0fe0\u0007\u0005\u0000\u0000\u0fe0\u0fe1"+ - "\u0007\u0010\u0000\u0000\u0fe1\u0fe2\u0007\n\u0000\u0000\u0fe2\u02e6\u0001"+ - "\u0000\u0000\u0000\u0fe3\u0fe4\u0007\u001b\u0000\u0000\u0fe4\u0fe5\u0007"+ - "\u0005\u0000\u0000\u0fe5\u0fe6\u0007\u000e\u0000\u0000\u0fe6\u0fe7\u0007"+ - "\u0016\u0000\u0000\u0fe7\u0fe8\u0007\u0016\u0000\u0000\u0fe8\u0fe9\u0007"+ - "\u000f\u0000\u0000\u0fe9\u02e8\u0001\u0000\u0000\u0000\u0fea\u0feb\u0007"+ - "\u001b\u0000\u0000\u0feb\u0fec\u0007\u0005\u0000\u0000\u0fec\u0fed\u0007"+ - "\u0006\u0000\u0000\u0fed\u0fee\u0007\u0011\u0000\u0000\u0fee\u0fef\u0007"+ - "\f\u0000\u0000\u0fef\u02ea\u0001\u0000\u0000\u0000\u0ff0\u0ff1\u0007\u001b"+ - "\u0000\u0000\u0ff1\u0ff2\u0007\u0005\u0000\u0000\u0ff2\u0ff3\u0007\u0006"+ - "\u0000\u0000\u0ff3\u0ff4\u0007\u0011\u0000\u0000\u0ff4\u0ff5\u0007\f\u0000"+ - "\u0000\u0ff5\u0ff6\u0007\u0005\u0000\u0000\u0ff6\u0ff7\u0007\u0010\u0000"+ - "\u0000\u0ff7\u0ff8\u0007\n\u0000\u0000\u0ff8\u02ec\u0001\u0000\u0000\u0000"+ - "\u0ff9\u0ffa\u0007\u001b\u0000\u0000\u0ffa\u0ffb\u0007\u0005\u0000\u0000"+ - "\u0ffb\u0ffc\u0007\u0006\u0000\u0000\u0ffc\u0ffd\u0007\u0011\u0000\u0000"+ - "\u0ffd\u0ffe\u0007\f\u0000\u0000\u0ffe\u0fff\u0007\u0005\u0000\u0000\u0fff"+ - "\u1000\u0007\u0010\u0000\u0000\u1000\u1001\u0007\u0013\u0000\u0000\u1001"+ - "\u1002\u0007\r\u0000\u0000\u1002\u02ee\u0001\u0000\u0000\u0000\u1003\u1004"+ - "\u0007\u001b\u0000\u0000\u1004\u1005\u0007\u0005\u0000\u0000\u1005\u1006"+ - "\u0007\r\u0000\u0000\u1006\u1007\u0007\b\u0000\u0000\u1007\u1008\u0007"+ - "\u0011\u0000\u0000\u1008\u1009\u0007\u0007\u0000\u0000\u1009\u100a\u0007"+ - "\u0017\u0000\u0000\u100a\u02f0\u0001\u0000\u0000\u0000\u100b\u100c\u0007"+ - "\u001b\u0000\u0000\u100c\u100d\u0007\n\u0000\u0000\u100d\u100e\u0007\r"+ - "\u0000\u0000\u100e\u100f\u0007\t\u0000\u0000\u100f\u1010\u0007\u0011\u0000"+ - "\u0000\u1010\u1011\u0007\u0013\u0000\u0000\u1011\u1012\u0007\u0007\u0000"+ - "\u0000\u1012\u02f2\u0001\u0000\u0000\u0000\u1013\u1014\u0007\u001b\u0000"+ - "\u0000\u1014\u1015\u0007\u0011\u0000\u0000\u1015\u1016\u0007\n\u0000\u0000"+ - "\u1016\u1017\u0007\u001c\u0000\u0000\u1017\u02f4\u0001\u0000\u0000\u0000"+ - "\u1018\u1019\u0007\u001b\u0000\u0000\u1019\u101a\u0007\u0013\u0000\u0000"+ - "\u101a\u101b\u0007\u0006\u0000\u0000\u101b\u101c\u0007\u0005\u0000\u0000"+ - "\u101c\u101d\u0007\u0010\u0000\u0000\u101d\u101e\u0007\u0011\u0000\u0000"+ - "\u101e\u101f\u0007\u0006\u0000\u0000\u101f\u1020\u0007\n\u0000\u0000\u1020"+ - "\u02f6\u0001\u0000\u0000\u0000\u1021\u1022\u0007\u001c\u0000\u0000\u1022"+ - "\u1023\u0007\u0014\u0000\u0000\u1023\u1024\u0007\u0011\u0000\u0000\u1024"+ - "\u1025\u0007\u0010\u0000\u0000\u1025\u1026\u0007\n\u0000\u0000\u1026\u1027"+ - "\u0007\t\u0000\u0000\u1027\u1028\u0007\u0018\u0000\u0000\u1028\u1029\u0007"+ - "\u0005\u0000\u0000\u1029\u102a\u0007\u000e\u0000\u0000\u102a\u102b\u0007"+ - "\n\u0000\u0000\u102b\u02f8\u0001\u0000\u0000\u0000\u102c\u102d\u0007\u001c"+ - "\u0000\u0000\u102d\u102e\u0007\u0011\u0000\u0000\u102e\u102f\u0007\u0010"+ - "\u0000\u0000\u102f\u1030\u0007\u0014\u0000\u0000\u1030\u1031\u0007\u0013"+ - "\u0000\u0000\u1031\u1032\u0007\u0016\u0000\u0000\u1032\u1033\u0007\u0010"+ - "\u0000\u0000\u1033\u02fa\u0001\u0000\u0000\u0000\u1034\u1035\u0007\u001c"+ - "\u0000\u0000\u1035\u1036\u0007\u0013\u0000\u0000\u1036\u1037\u0007\r\u0000"+ - "\u0000\u1037\u1038\u0007\u0015\u0000\u0000\u1038\u02fc\u0001\u0000\u0000"+ - "\u0000\u1039\u103a\u0007\u001c\u0000\u0000\u103a\u103b\u0007\r\u0000\u0000"+ - "\u103b\u103c\u0007\u0005\u0000\u0000\u103c\u103d\u0007\u0018\u0000\u0000"+ - "\u103d\u103e\u0007\u0018\u0000\u0000\u103e\u103f\u0007\n\u0000\u0000\u103f"+ - "\u1040\u0007\r\u0000\u0000\u1040\u02fe\u0001\u0000\u0000\u0000\u1041\u1042"+ - "\u0007\u001c\u0000\u0000\u1042\u1043\u0007\r\u0000\u0000\u1043\u1044\u0007"+ - "\u0011\u0000\u0000\u1044\u1045\u0007\u0010\u0000\u0000\u1045\u1046\u0007"+ - "\n\u0000\u0000\u1046\u0300\u0001\u0000\u0000\u0000\u1047\u1048\u0007\u001a"+ - "\u0000\u0000\u1048\u1049\u0007\u000f\u0000\u0000\u1049\u104a\u0007\u0006"+ - "\u0000\u0000\u104a\u0302\u0001\u0000\u0000\u0000\u104b\u104c\u0007\b\u0000"+ - "\u0000\u104c\u104d\u0007\n\u0000\u0000\u104d\u104e\u0007\u0005\u0000\u0000"+ - "\u104e\u104f\u0007\r\u0000\u0000\u104f\u0304\u0001\u0000\u0000\u0000\u1050"+ - "\u1051\u0007\b\u0000\u0000\u1051\u1052\u0007\n\u0000\u0000\u1052\u1053"+ - "\u0007\t\u0000\u0000\u1053\u0306\u0001\u0000\u0000\u0000\u1054\u1055\u0007"+ - "\u000b\u0000\u0000\u1055\u1056\u0007\u0013\u0000\u0000\u1056\u1057\u0007"+ - "\u0007\u0000\u0000\u1057\u1058\u0007\n\u0000\u0000\u1058\u0308\u0001\u0000"+ - "\u0000\u0000\u1059\u105a\u0007\u0012\u0000\u0000\u105a\u105b\u0007\n\u0000"+ - "\u0000\u105b\u105c\u0007\u0010\u0000\u0000\u105c\u105d\u0007\u001c\u0000"+ - "\u0000\u105d\u105e\u0007\n\u0000\u0000\u105e\u105f\u0007\n\u0000\u0000"+ - "\u105f\u1060\u0007\u0007\u0000\u0000\u1060\u030a\u0001\u0000\u0000\u0000"+ - "\u1061\u1062\u0007\u0012\u0000\u0000\u1062\u1063\u0007\u0011\u0000\u0000"+ - "\u1063\u1064\u0007\u0017\u0000\u0000\u1064\u1065\u0007\u0011\u0000\u0000"+ - "\u1065\u1066\u0007\u0007\u0000\u0000\u1066\u1067\u0007\u0010\u0000\u0000"+ - "\u1067\u030c\u0001\u0000\u0000\u0000\u1068\u1069\u0007\u0012\u0000\u0000"+ - "\u1069\u106a\u0007\u0011\u0000\u0000\u106a\u106b\u0007\u0010\u0000\u0000"+ - "\u106b\u030e\u0001\u0000\u0000\u0000\u106c\u106d\u0007\u0012\u0000\u0000"+ - "\u106d\u106e\u0007\u0013\u0000\u0000\u106e\u106f\u0007\u0013\u0000\u0000"+ - "\u106f\u1070\u0007\u0006\u0000\u0000\u1070\u1071\u0007\n\u0000\u0000\u1071"+ - "\u1072\u0007\u0005\u0000\u0000\u1072\u1073\u0007\u0007\u0000\u0000\u1073"+ - "\u0310\u0001\u0000\u0000\u0000\u1074\u1075\u0007\u000e\u0000\u0000\u1075"+ - "\u1076\u0007\u0014\u0000\u0000\u1076\u1077\u0007\u0005\u0000\u0000\u1077"+ - "\u1078\u0007\r\u0000\u0000\u1078\u0312\u0001\u0000\u0000\u0000\u1079\u107a"+ - "\u0007\u000e\u0000\u0000\u107a\u107b\u0007\u0014\u0000\u0000\u107b\u107c"+ - "\u0007\u0005\u0000\u0000\u107c\u107d\u0007\r\u0000\u0000\u107d\u107e\u0007"+ - "\u0005\u0000\u0000\u107e\u107f\u0007\u000e\u0000\u0000\u107f\u1080\u0007"+ - "\u0010\u0000\u0000\u1080\u1081\u0007\n\u0000\u0000\u1081\u1082\u0007\r"+ - "\u0000\u0000\u1082\u0314\u0001\u0000\u0000\u0000\u1083\u1084\u0007\u000e"+ - "\u0000\u0000\u1084\u1085\u0007\u0013\u0000\u0000\u1085\u1086\u0007\u0005"+ - "\u0000\u0000\u1086\u1087\u0007\u0006\u0000\u0000\u1087\u1088\u0007\n\u0000"+ - "\u0000\u1088\u1089\u0007\t\u0000\u0000\u1089\u108a\u0007\u000e\u0000\u0000"+ - "\u108a\u108b\u0007\n\u0000\u0000\u108b\u0316\u0001\u0000\u0000\u0000\u108c"+ - "\u108d\u0007\f\u0000\u0000\u108d\u108e\u0007\n\u0000\u0000\u108e\u108f"+ - "\u0007\u000e\u0000\u0000\u108f\u0318\u0001\u0000\u0000\u0000\u1090\u1091"+ - "\u0007\f\u0000\u0000\u1091\u1092\u0007\n\u0000\u0000\u1092\u1093\u0007"+ - "\u000e\u0000\u0000\u1093\u1094\u0007\u0011\u0000\u0000\u1094\u1095\u0007"+ - "\u000f\u0000\u0000\u1095\u1096\u0007\u0005\u0000\u0000\u1096\u1097\u0007"+ - "\u0006\u0000\u0000\u1097\u031a\u0001\u0000\u0000\u0000\u1098\u1099\u0007"+ - "\n\u0000\u0000\u1099\u109a\u0007\u001a\u0000\u0000\u109a\u109b\u0007\u0011"+ - "\u0000\u0000\u109b\u109c\u0007\t\u0000\u0000\u109c\u109d\u0007\u0010\u0000"+ - "\u0000\u109d\u109e\u0007\t\u0000\u0000\u109e\u031c\u0001\u0000\u0000\u0000"+ - "\u109f\u10a0\u0007\n\u0000\u0000\u10a0\u10a1\u0007\u001a\u0000\u0000\u10a1"+ - "\u10a2\u0007\u0010\u0000\u0000\u10a2\u10a3\u0007\r\u0000\u0000\u10a3\u10a4"+ - "\u0007\u0005\u0000\u0000\u10a4\u10a5\u0007\u000e\u0000\u0000\u10a5\u10a6"+ - "\u0007\u0010\u0000\u0000\u10a6\u031e\u0001\u0000\u0000\u0000\u10a7\u10a8"+ - "\u0007\u0019\u0000\u0000\u10a8\u10a9\u0007\u0006\u0000\u0000\u10a9\u10aa"+ - "\u0007\u0013\u0000\u0000\u10aa\u10ab\u0007\u0005\u0000\u0000\u10ab\u10ac"+ - "\u0007\u0010\u0000\u0000\u10ac\u0320\u0001\u0000\u0000\u0000\u10ad\u10ae"+ - "\u0007\u0017\u0000\u0000\u10ae\u10af\u0007\r\u0000\u0000\u10af\u10b0\u0007"+ - "\n\u0000\u0000\u10b0\u10b1\u0007\u0005\u0000\u0000\u10b1\u10b2\u0007\u0010"+ - "\u0000\u0000\u10b2\u10b3\u0007\n\u0000\u0000\u10b3\u10b4\u0007\t\u0000"+ - "\u0000\u10b4\u10b5\u0007\u0010\u0000\u0000\u10b5\u0322\u0001\u0000\u0000"+ - "\u0000\u10b6\u10b7\u0007\u0011\u0000\u0000\u10b7\u10b8\u0007\u0007\u0000"+ - "\u0000\u10b8\u10b9\u0007\u0013\u0000\u0000\u10b9\u10ba\u0007\u0016\u0000"+ - "\u0000\u10ba\u10bb\u0007\u0010\u0000\u0000\u10bb\u0324\u0001\u0000\u0000"+ - "\u0000\u10bc\u10bd\u0007\u0011\u0000\u0000\u10bd\u10be\u0007\u0007\u0000"+ - "\u0000\u10be\u10bf\u0007\u0010\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\u0017\u0000\u0000\u10c5\u10c6\u0007\n\u0000\u0000\u10c6"+ - "\u10c7\u0007\r\u0000\u0000\u10c7\u0328\u0001\u0000\u0000\u0000\u10c8\u10c9"+ - "\u0007\u0011\u0000\u0000\u10c9\u10ca\u0007\u0007\u0000\u0000\u10ca\u10cb"+ - "\u0007\u0010\u0000\u0000\u10cb\u10cc\u0007\n\u0000\u0000\u10cc\u10cd\u0007"+ - "\r\u0000\u0000\u10cd\u10ce\u0007\u001b\u0000\u0000\u10ce\u10cf\u0007\u0005"+ - "\u0000\u0000\u10cf\u10d0\u0007\u0006\u0000\u0000\u10d0\u032a\u0001\u0000"+ - "\u0000\u0000\u10d1\u10d2\u0007\u0006\u0000\u0000\u10d2\u10d3\u0007\n\u0000"+ - "\u0000\u10d3\u10d4\u0007\u0005\u0000\u0000\u10d4\u10d5\u0007\t\u0000\u0000"+ - "\u10d5\u10d6\u0007\u0010\u0000\u0000\u10d6\u032c\u0001\u0000\u0000\u0000"+ - "\u10d7\u10d8\u0007\u0007\u0000\u0000\u10d8\u10d9\u0007\u0005\u0000\u0000"+ - "\u10d9\u10da\u0007\u0010\u0000\u0000\u10da\u10db\u0007\u0011\u0000\u0000"+ - "\u10db\u10dc\u0007\u0013\u0000\u0000\u10dc\u10dd\u0007\u0007\u0000\u0000"+ - "\u10dd\u10de\u0007\u0005\u0000\u0000\u10de\u10df\u0007\u0006\u0000\u0000"+ - "\u10df\u032e\u0001\u0000\u0000\u0000\u10e0\u10e1\u0007\u0007\u0000\u0000"+ - "\u10e1\u10e2\u0007\u000e\u0000\u0000\u10e2\u10e3\u0007\u0014\u0000\u0000"+ - "\u10e3\u10e4\u0007\u0005\u0000\u0000\u10e4\u10e5\u0007\r\u0000\u0000\u10e5"+ - "\u0330\u0001\u0000\u0000\u0000\u10e6\u10e7\u0007\u0007\u0000\u0000\u10e7"+ - "\u10e8\u0007\u0013\u0000\u0000\u10e8\u10e9\u0007\u0007\u0000\u0000\u10e9"+ - "\u10ea\u0007\n\u0000\u0000\u10ea\u0332\u0001\u0000\u0000\u0000\u10eb\u10ec"+ - "\u0007\u0007\u0000\u0000\u10ec\u10ed\u0007\u0016\u0000\u0000\u10ed\u10ee"+ - "\u0007\u0006\u0000\u0000\u10ee\u10ef\u0007\u0006\u0000\u0000\u10ef\u10f0"+ - "\u0007\u0011\u0000\u0000\u10f0\u10f1\u0007\u0019\u0000\u0000\u10f1\u0334"+ - "\u0001\u0000\u0000\u0000\u10f2\u10f3\u0007\u0007\u0000\u0000\u10f3\u10f4"+ - "\u0007\u0016\u0000\u0000\u10f4\u10f5\u0007\u000f\u0000\u0000\u10f5\u10f6"+ - "\u0007\n\u0000\u0000\u10f6\u10f7\u0007\r\u0000\u0000\u10f7\u10f8\u0007"+ - "\u0011\u0000\u0000\u10f8\u10f9\u0007\u000e\u0000\u0000\u10f9\u0336\u0001"+ - "\u0000\u0000\u0000\u10fa\u10fb\u0007\u0013\u0000\u0000\u10fb\u10fc\u0007"+ - "\u001b\u0000\u0000\u10fc\u10fd\u0007\n\u0000\u0000\u10fd\u10fe\u0007\r"+ - "\u0000\u0000\u10fe\u10ff\u0007\u0006\u0000\u0000\u10ff\u1100\u0007\u0005"+ - "\u0000\u0000\u1100\u1101\u0007\b\u0000\u0000\u1101\u0338\u0001\u0000\u0000"+ - "\u0000\u1102\u1103\u0007\u0018\u0000\u0000\u1103\u1104\u0007\u0013\u0000"+ - "\u0000\u1104\u1105\u0007\t\u0000\u0000\u1105\u1106\u0007\u0011\u0000\u0000"+ - "\u1106\u1107\u0007\u0010\u0000\u0000\u1107\u1108\u0007\u0011\u0000\u0000"+ - "\u1108\u1109\u0007\u0013\u0000\u0000\u1109\u110a\u0007\u0007\u0000\u0000"+ - "\u110a\u033a\u0001\u0000\u0000\u0000\u110b\u110c\u0007\u0018\u0000\u0000"+ - "\u110c\u110d\u0007\r\u0000\u0000\u110d\u110e\u0007\n\u0000\u0000\u110e"+ - "\u110f\u0007\u000e\u0000\u0000\u110f\u1110\u0007\u0011\u0000\u0000\u1110"+ - "\u1111\u0007\t\u0000\u0000\u1111\u1112\u0007\u0011\u0000\u0000\u1112\u1113"+ - "\u0007\u0013\u0000\u0000\u1113\u1114\u0007\u0007\u0000\u0000\u1114\u033c"+ - "\u0001\u0000\u0000\u0000\u1115\u1116\u0007\r\u0000\u0000\u1116\u1117\u0007"+ - "\n\u0000\u0000\u1117\u1118\u0007\u0005\u0000\u0000\u1118\u1119\u0007\u0006"+ - "\u0000\u0000\u1119\u033e\u0001\u0000\u0000\u0000\u111a\u111b\u0007\r\u0000"+ - "\u0000\u111b\u111c\u0007\u0013\u0000\u0000\u111c\u111d\u0007\u001c\u0000"+ - "\u0000\u111d\u0340\u0001\u0000\u0000\u0000\u111e\u111f\u0007\t\u0000\u0000"+ - "\u111f\u1120\u0007\n\u0000\u0000\u1120\u1121\u0007\u0010\u0000\u0000\u1121"+ - "\u1122\u0007\u0013\u0000\u0000\u1122\u1123\u0007\u0019\u0000\u0000\u1123"+ - "\u0342\u0001\u0000\u0000\u0000\u1124\u1125\u0007\t\u0000\u0000\u1125\u1126"+ - "\u0007\u000f\u0000\u0000\u1126\u1127\u0007\u0005\u0000\u0000\u1127\u1128"+ - "\u0007\u0006\u0000\u0000\u1128\u1129\u0007\u0006\u0000\u0000\u1129\u112a"+ - "\u0007\u0011\u0000\u0000\u112a\u112b\u0007\u0007\u0000\u0000\u112b\u112c"+ - "\u0007\u0010\u0000\u0000\u112c\u0344\u0001\u0000\u0000\u0000\u112d\u112e"+ - "\u0007\t\u0000\u0000\u112e\u112f\u0007\u0016\u0000\u0000\u112f\u1130\u0007"+ - "\u0012\u0000\u0000\u1130\u1131\u0007\t\u0000\u0000\u1131\u1132\u0007\u0010"+ - "\u0000\u0000\u1132\u1133\u0007\r\u0000\u0000\u1133\u1134\u0007\u0011\u0000"+ - "\u0000\u1134\u1135\u0007\u0007\u0000\u0000\u1135\u1136\u0007\u0017\u0000"+ - "\u0000\u1136\u0346\u0001\u0000\u0000\u0000\u1137\u1138\u0007\u0010\u0000"+ - "\u0000\u1138\u1139\u0007\u0011\u0000\u0000\u1139\u113a\u0007\u000f\u0000"+ - "\u0000\u113a\u113b\u0007\n\u0000\u0000\u113b\u0348\u0001\u0000\u0000\u0000"+ - "\u113c\u113d\u0007\u0010\u0000\u0000\u113d\u113e\u0007\u0011\u0000\u0000"+ - "\u113e\u113f\u0007\u000f\u0000\u0000\u113f\u1140\u0007\n\u0000\u0000\u1140"+ - "\u1141\u0007\t\u0000\u0000\u1141\u1142\u0007\u0010\u0000\u0000\u1142\u1143"+ - "\u0007\u0005\u0000\u0000\u1143\u1144\u0007\u000f\u0000\u0000\u1144\u1145"+ - "\u0007\u0018\u0000\u0000\u1145\u034a\u0001\u0000\u0000\u0000\u1146\u1147"+ - "\u0007\u0010\u0000\u0000\u1147\u1148\u0007\r\u0000\u0000\u1148\u1149\u0007"+ - "\n\u0000\u0000\u1149\u114a\u0007\u0005\u0000\u0000\u114a\u114b\u0007\u0010"+ - "\u0000\u0000\u114b\u034c\u0001\u0000\u0000\u0000\u114c\u114d\u0007\u0010"+ - "\u0000\u0000\u114d\u114e\u0007\r\u0000\u0000\u114e\u114f\u0007\u0011\u0000"+ - "\u0000\u114f\u1150\u0007\u000f\u0000\u0000\u1150\u034e\u0001\u0000\u0000"+ - "\u0000\u1151\u1152\u0007\u001b\u0000\u0000\u1152\u1153\u0007\u0005\u0000"+ - "\u0000\u1153\u1154\u0007\u0006\u0000\u0000\u1154\u1155\u0007\u0016\u0000"+ - "\u0000\u1155\u1156\u0007\n\u0000\u0000\u1156\u1157\u0007\t\u0000\u0000"+ - "\u1157\u0350\u0001\u0000\u0000\u0000\u1158\u1159\u0007\u001b\u0000\u0000"+ - "\u1159\u115a\u0007\u0005\u0000\u0000\u115a\u115b\u0007\r\u0000\u0000\u115b"+ - "\u115c\u0007\u000e\u0000\u0000\u115c\u115d\u0007\u0014\u0000\u0000\u115d"+ - "\u115e\u0007\u0005\u0000\u0000\u115e\u115f\u0007\r\u0000\u0000\u115f\u0352"+ - "\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\u0010\u0000\u0000\u1165\u1166"+ - "\u0007\u0010\u0000\u0000\u1166\u1167\u0007\r\u0000\u0000\u1167\u1168\u0007"+ - "\u0011\u0000\u0000\u1168\u1169\u0007\u0012\u0000\u0000\u1169\u116a\u0007"+ - "\u0016\u0000\u0000\u116a\u116b\u0007\u0010\u0000\u0000\u116b\u116c\u0007"+ - "\n\u0000\u0000\u116c\u116d\u0007\t\u0000\u0000\u116d\u0354\u0001\u0000"+ - "\u0000\u0000\u116e\u116f\u0007\u001a\u0000\u0000\u116f\u1170\u0007\u000f"+ - "\u0000\u0000\u1170\u1171\u0007\u0006\u0000\u0000\u1171\u1172\u0007\u000e"+ - "\u0000\u0000\u1172\u1173\u0007\u0013\u0000\u0000\u1173\u1174\u0007\u000f"+ - "\u0000\u0000\u1174\u1175\u0007\u000f\u0000\u0000\u1175\u1176\u0007\n\u0000"+ - "\u0000\u1176\u1177\u0007\u0007\u0000\u0000\u1177\u1178\u0007\u0010\u0000"+ - "\u0000\u1178\u0356\u0001\u0000\u0000\u0000\u1179\u117a\u0007\u001a\u0000"+ - "\u0000\u117a\u117b\u0007\u000f\u0000\u0000\u117b\u117c\u0007\u0006\u0000"+ - "\u0000\u117c\u117d\u0007\u0005\u0000\u0000\u117d\u117e\u0007\u0017\u0000"+ - "\u0000\u117e\u117f\u0007\u0017\u0000\u0000\u117f\u0358\u0001\u0000\u0000"+ - "\u0000\u1180\u1181\u0007\u001a\u0000\u0000\u1181\u1182\u0007\u000f\u0000"+ - "\u0000\u1182\u1183\u0007\u0006\u0000\u0000\u1183\u1184\u0005_\u0000\u0000"+ - "\u1184\u1185\u0007\u0011\u0000\u0000\u1185\u1186\u0007\t\u0000\u0000\u1186"+ - "\u1187\u0005_\u0000\u0000\u1187\u1188\u0007\u001c\u0000\u0000\u1188\u1189"+ - "\u0007\n\u0000\u0000\u1189\u118a\u0007\u0006\u0000\u0000\u118a\u118b\u0007"+ - "\u0006\u0000\u0000\u118b\u118c\u0005_\u0000\u0000\u118c\u118d\u0007\u0019"+ - "\u0000\u0000\u118d\u118e\u0007\u0013\u0000\u0000\u118e\u118f\u0007\r\u0000"+ - "\u0000\u118f\u1190\u0007\u000f\u0000\u0000\u1190\u1191\u0007\n\u0000\u0000"+ - "\u1191\u1192\u0007\f\u0000\u0000\u1192\u035a\u0001\u0000\u0000\u0000\u1193"+ - "\u1194\u0007\u001a\u0000\u0000\u1194\u1195\u0007\u000f\u0000\u0000\u1195"+ - "\u1196\u0007\u0006\u0000\u0000\u1196\u1197\u0005_\u0000\u0000\u1197\u1198"+ - "\u0007\u0011\u0000\u0000\u1198\u1199\u0007\t\u0000\u0000\u1199\u119a\u0005"+ - "_\u0000\u0000\u119a\u119b\u0007\u001c\u0000\u0000\u119b\u119c\u0007\n"+ - "\u0000\u0000\u119c\u119d\u0007\u0006\u0000\u0000\u119d\u119e\u0007\u0006"+ - "\u0000\u0000\u119e\u119f\u0005_\u0000\u0000\u119f\u11a0\u0007\u0019\u0000"+ - "\u0000\u11a0\u11a1\u0007\u0013\u0000\u0000\u11a1\u11a2\u0007\r\u0000\u0000"+ - "\u11a2\u11a3\u0007\u000f\u0000\u0000\u11a3\u11a4\u0007\n\u0000\u0000\u11a4"+ - "\u11a5\u0007\f\u0000\u0000\u11a5\u11a6\u0005_\u0000\u0000\u11a6\u11a7"+ - "\u0007\f\u0000\u0000\u11a7\u11a8\u0007\u0013\u0000\u0000\u11a8\u11a9\u0007"+ - "\u000e\u0000\u0000\u11a9\u11aa\u0007\u0016\u0000\u0000\u11aa\u11ab\u0007"+ - "\u000f\u0000\u0000\u11ab\u11ac\u0007\n\u0000\u0000\u11ac\u11ad\u0007\u0007"+ - "\u0000\u0000\u11ad\u11ae\u0007\u0010\u0000\u0000\u11ae\u035c\u0001\u0000"+ - "\u0000\u0000\u11af\u11b0\u0007\u001a\u0000\u0000\u11b0\u11b1\u0007\u000f"+ - "\u0000\u0000\u11b1\u11b2\u0007\u0006\u0000\u0000\u11b2\u11b3\u0005_\u0000"+ - "\u0000\u11b3\u11b4\u0007\u0011\u0000\u0000\u11b4\u11b5\u0007\t\u0000\u0000"+ - "\u11b5\u11b6\u0005_\u0000\u0000\u11b6\u11b7\u0007\u001c\u0000\u0000\u11b7"+ - "\u11b8\u0007\n\u0000\u0000\u11b8\u11b9\u0007\u0006\u0000\u0000\u11b9\u11ba"+ - "\u0007\u0006\u0000\u0000\u11ba\u11bb\u0005_\u0000\u0000\u11bb\u11bc\u0007"+ - "\u0019\u0000\u0000\u11bc\u11bd\u0007\u0013\u0000\u0000\u11bd\u11be\u0007"+ - "\r\u0000\u0000\u11be\u11bf\u0007\u000f\u0000\u0000\u11bf\u11c0\u0007\n"+ - "\u0000\u0000\u11c0\u11c1\u0007\f\u0000\u0000\u11c1\u11c2\u0005_\u0000"+ - "\u0000\u11c2\u11c3\u0007\u000e\u0000\u0000\u11c3\u11c4\u0007\u0013\u0000"+ - "\u0000\u11c4\u11c5\u0007\u0007\u0000\u0000\u11c5\u11c6\u0007\u0010\u0000"+ - "\u0000\u11c6\u11c7\u0007\n\u0000\u0000\u11c7\u11c8\u0007\u0007\u0000\u0000"+ - "\u11c8\u11c9\u0007\u0010\u0000\u0000\u11c9\u035e\u0001\u0000\u0000\u0000"+ - "\u11ca\u11cb\u0007\u001a\u0000\u0000\u11cb\u11cc\u0007\u0018\u0000\u0000"+ - "\u11cc\u11cd\u0007\u0005\u0000\u0000\u11cd\u11ce\u0007\u0010\u0000\u0000"+ - "\u11ce\u11cf\u0007\u0014\u0000\u0000\u11cf\u0360\u0001\u0000\u0000\u0000"+ - "\u11d0\u11d1\u0007\u001a\u0000\u0000\u11d1\u11d2\u0007\u0018\u0000\u0000"+ - "\u11d2\u11d3\u0007\u0005\u0000\u0000\u11d3\u11d4\u0007\u0010\u0000\u0000"+ - "\u11d4\u11d5\u0007\u0014\u0000\u0000\u11d5\u11d6\u0005_\u0000\u0000\u11d6"+ - "\u11d7\u0007\n\u0000\u0000\u11d7\u11d8\u0007\u001a\u0000\u0000\u11d8\u11d9"+ - "\u0007\u0011\u0000\u0000\u11d9\u11da\u0007\t\u0000\u0000\u11da\u11db\u0007"+ - "\u0010\u0000\u0000\u11db\u11dc\u0007\t\u0000\u0000\u11dc\u0362\u0001\u0000"+ - "\u0000\u0000\u11dd\u11de\u0007\u001a\u0000\u0000\u11de\u11df\u0007\u000f"+ - "\u0000\u0000\u11df\u11e0\u0007\u0006\u0000\u0000\u11e0\u11e1\u0007\u000e"+ - "\u0000\u0000\u11e1\u11e2\u0007\u0013\u0000\u0000\u11e2\u11e3\u0007\u0007"+ - "\u0000\u0000\u11e3\u11e4\u0007\u000e\u0000\u0000\u11e4\u11e5\u0007\u0005"+ - "\u0000\u0000\u11e5\u11e6\u0007\u0010\u0000\u0000\u11e6\u0364\u0001\u0000"+ - "\u0000\u0000\u11e7\u11e8\u0007\u001a\u0000\u0000\u11e8\u11e9\u0007\u000f"+ - "\u0000\u0000\u11e9\u11ea\u0007\u0006\u0000\u0000\u11ea\u11eb\u0007\n\u0000"+ - "\u0000\u11eb\u11ec\u0007\u0006\u0000\u0000\u11ec\u11ed\u0007\n\u0000\u0000"+ - "\u11ed\u11ee\u0007\u000f\u0000\u0000\u11ee\u11ef\u0007\n\u0000\u0000\u11ef"+ - "\u11f0\u0007\u0007\u0000\u0000\u11f0\u11f1\u0007\u0010\u0000\u0000\u11f1"+ - "\u0366\u0001\u0000\u0000\u0000\u11f2\u11f3\u0007\u001a\u0000\u0000\u11f3"+ - "\u11f4\u0007\u000f\u0000\u0000\u11f4\u11f5\u0007\u0006\u0000\u0000\u11f5"+ - "\u11f6\u0007\n\u0000\u0000\u11f6\u11f7\u0007\u001a\u0000\u0000\u11f7\u11f8"+ - "\u0007\u0011\u0000\u0000\u11f8\u11f9\u0007\t\u0000\u0000\u11f9\u11fa\u0007"+ - "\u0010\u0000\u0000\u11fa\u11fb\u0007\t\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\u0019"+ - "\u0000\u0000\u1200\u1201\u0007\u0013\u0000\u0000\u1201\u1202\u0007\r\u0000"+ - "\u0000\u1202\u1203\u0007\n\u0000\u0000\u1203\u1204\u0007\t\u0000\u0000"+ - "\u1204\u1205\u0007\u0010\u0000\u0000\u1205\u036a\u0001\u0000\u0000\u0000"+ - "\u1206\u1207\u0007\u001a\u0000\u0000\u1207\u1208\u0007\u000f\u0000\u0000"+ - "\u1208\u1209\u0007\u0006\u0000\u0000\u1209\u120a\u0007\u0018\u0000\u0000"+ - "\u120a\u120b\u0007\u0005\u0000\u0000\u120b\u120c\u0007\r\u0000\u0000\u120c"+ - "\u120d\u0007\t\u0000\u0000\u120d\u120e\u0007\n\u0000\u0000\u120e\u036c"+ - "\u0001\u0000\u0000\u0000\u120f\u1210\u0007\u001a\u0000\u0000\u1210\u1211"+ - "\u0007\u000f\u0000\u0000\u1211\u1212\u0007\u0006\u0000\u0000\u1212\u1213"+ - "\u0007\u0018\u0000\u0000\u1213\u1214\u0007\u0011\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\r\u0000\u0000\u1219\u121a\u0007\u0013\u0000\u0000\u121a\u121b\u0007"+ - "\u0013\u0000\u0000\u121b\u121c\u0007\u0010\u0000\u0000\u121c\u0370\u0001"+ - "\u0000\u0000\u0000\u121d\u121e\u0007\u001a\u0000\u0000\u121e\u121f\u0007"+ - "\u000f\u0000\u0000\u121f\u1220\u0007\u0006\u0000\u0000\u1220\u1221\u0007"+ - "\t\u0000\u0000\u1221\u1222\u0007\n\u0000\u0000\u1222\u1223\u0007\r\u0000"+ - "\u0000\u1223\u1224\u0007\u0011\u0000\u0000\u1224\u1225\u0007\u0005\u0000"+ - "\u0000\u1225\u1226\u0007\u0006\u0000\u0000\u1226\u1227\u0007\u0011\u0000"+ - "\u0000\u1227\u1228\u0007\u000b\u0000\u0000\u1228\u1229\u0007\n\u0000\u0000"+ - "\u1229\u0372\u0001\u0000\u0000\u0000\u122a\u122b\u0007\u000e\u0000\u0000"+ - "\u122b\u122c\u0007\u0005\u0000\u0000\u122c\u122d\u0007\u0006\u0000\u0000"+ - "\u122d\u122e\u0007\u0006\u0000\u0000\u122e\u0374\u0001\u0000\u0000\u0000"+ - "\u122f\u1230\u0007\u000e\u0000\u0000\u1230\u1231\u0007\u0016\u0000\u0000"+ - "\u1231\u1232\u0007\r\u0000\u0000\u1232\u1233\u0007\r\u0000\u0000\u1233"+ - "\u1234\u0007\n\u0000\u0000\u1234\u1235\u0007\u0007\u0000\u0000\u1235\u1236"+ - "\u0007\u0010\u0000\u0000\u1236\u0376\u0001\u0000\u0000\u0000\u1237\u1238"+ - "\u0007\u0005\u0000\u0000\u1238\u1239\u0007\u0010\u0000\u0000\u1239\u123a"+ - "\u0007\u0010\u0000\u0000\u123a\u123b\u0007\u0005\u0000\u0000\u123b\u123c"+ - "\u0007\u000e\u0000\u0000\u123c\u123d\u0007\u0014\u0000\u0000\u123d\u0378"+ - "\u0001\u0000\u0000\u0000\u123e\u123f\u0007\f\u0000\u0000\u123f\u1240\u0007"+ - "\n\u0000\u0000\u1240\u1241\u0007\u0010\u0000\u0000\u1241\u1242\u0007\u0005"+ - "\u0000\u0000\u1242\u1243\u0007\u000e\u0000\u0000\u1243\u1244\u0007\u0014"+ - "\u0000\u0000\u1244\u037a\u0001\u0000\u0000\u0000\u1245\u1246\u0007\n\u0000"+ - "\u0000\u1246\u1247\u0007\u001a\u0000\u0000\u1247\u1248\u0007\u0018\u0000"+ - "\u0000\u1248\u1249\u0007\r\u0000\u0000\u1249\u124a\u0007\n\u0000\u0000"+ - "\u124a\u124b\u0007\t\u0000\u0000\u124b\u124c\u0007\t\u0000\u0000\u124c"+ - "\u124d\u0007\u0011\u0000\u0000\u124d\u124e\u0007\u0013\u0000\u0000\u124e"+ - "\u124f\u0007\u0007\u0000\u0000\u124f\u037c\u0001\u0000\u0000\u0000\u1250"+ - "\u1251\u0007\u0017\u0000\u0000\u1251\u1252\u0007\n\u0000\u0000\u1252\u1253"+ - "\u0007\u0007\u0000\u0000\u1253\u1254\u0007\n\u0000\u0000\u1254\u1255\u0007"+ - "\r\u0000\u0000\u1255\u1256\u0007\u0005\u0000\u0000\u1256\u1257\u0007\u0010"+ - "\u0000\u0000\u1257\u1258\u0007\n\u0000\u0000\u1258\u1259\u0007\f\u0000"+ - "\u0000\u1259\u037e\u0001\u0000\u0000\u0000\u125a\u125b\u0007\u0006\u0000"+ - "\u0000\u125b"; - private static final String _serializedATNSegment2 = - "\u125c\u0007\u0013\u0000\u0000\u125c\u125d\u0007\u0017\u0000\u0000\u125d"+ - "\u125e\u0007\u0017\u0000\u0000\u125e\u125f\u0007\n\u0000\u0000\u125f\u1260"+ - "\u0007\f\u0000\u0000\u1260\u0380\u0001\u0000\u0000\u0000\u1261\u1262\u0007"+ - "\t\u0000\u0000\u1262\u1263\u0007\u0010\u0000\u0000\u1263\u1264\u0007\u0013"+ - "\u0000\u0000\u1264\u1265\u0007\r\u0000\u0000\u1265\u1266\u0007\n\u0000"+ - "\u0000\u1266\u1267\u0007\f\u0000\u0000\u1267\u0382\u0001\u0000\u0000\u0000"+ - "\u1268\u1269\u0007\u0011\u0000\u0000\u1269\u126a\u0007\u0007\u0000\u0000"+ - "\u126a\u126b\u0007\u000e\u0000\u0000\u126b\u126c\u0007\u0006\u0000\u0000"+ - "\u126c\u126d\u0007\u0016\u0000\u0000\u126d\u126e\u0007\f\u0000\u0000\u126e"+ - "\u126f\u0007\n\u0000\u0000\u126f\u0384\u0001\u0000\u0000\u0000\u1270\u1271"+ - "\u0007\r\u0000\u0000\u1271\u1272\u0007\u0013\u0000\u0000\u1272\u1273\u0007"+ - "\u0016\u0000\u0000\u1273\u1274\u0007\u0010\u0000\u0000\u1274\u1275\u0007"+ - "\u0011\u0000\u0000\u1275\u1276\u0007\u0007\u0000\u0000\u1276\u1277\u0007"+ - "\n\u0000\u0000\u1277\u0386\u0001\u0000\u0000\u0000\u1278\u1279\u0007\u0010"+ - "\u0000\u0000\u1279\u127a\u0007\r\u0000\u0000\u127a\u127b\u0007\u0005\u0000"+ - "\u0000\u127b\u127c\u0007\u0007\u0000\u0000\u127c\u127d\u0007\t\u0000\u0000"+ - "\u127d\u127e\u0007\u0019\u0000\u0000\u127e\u127f\u0007\u0013\u0000\u0000"+ - "\u127f\u1280\u0007\r\u0000\u0000\u1280\u1281\u0007\u000f\u0000\u0000\u1281"+ - "\u0388\u0001\u0000\u0000\u0000\u1282\u1283\u0007\u0011\u0000\u0000\u1283"+ - "\u1284\u0007\u000f\u0000\u0000\u1284\u1285\u0007\u0018\u0000\u0000\u1285"+ - "\u1286\u0007\u0013\u0000\u0000\u1286\u1287\u0007\r\u0000\u0000\u1287\u1288"+ - "\u0007\u0010\u0000\u0000\u1288\u038a\u0001\u0000\u0000\u0000\u1289\u128a"+ - "\u0007\u0018\u0000\u0000\u128a\u128b\u0007\u0013\u0000\u0000\u128b\u128c"+ - "\u0007\u0006\u0000\u0000\u128c\u128d\u0007\u0011\u0000\u0000\u128d\u128e"+ - "\u0007\u000e\u0000\u0000\u128e\u128f\u0007\b\u0000\u0000\u128f\u038c\u0001"+ - "\u0000\u0000\u0000\u1290\u1291\u0007\u000f\u0000\u0000\u1291\u1292\u0007"+ - "\n\u0000\u0000\u1292\u1293\u0007\u0010\u0000\u0000\u1293\u1294\u0007\u0014"+ - "\u0000\u0000\u1294\u1295\u0007\u0013\u0000\u0000\u1295\u1296\u0007\f\u0000"+ - "\u0000\u1296\u038e\u0001\u0000\u0000\u0000\u1297\u1298\u0007\r\u0000\u0000"+ - "\u1298\u1299\u0007\n\u0000\u0000\u1299\u129a\u0007\u0019\u0000\u0000\u129a"+ - "\u129b\u0007\n\u0000\u0000\u129b\u129c\u0007\r\u0000\u0000\u129c\u129d"+ - "\u0007\n\u0000\u0000\u129d\u129e\u0007\u0007\u0000\u0000\u129e\u129f\u0007"+ - "\u000e\u0000\u0000\u129f\u12a0\u0007\u0011\u0000\u0000\u12a0\u12a1\u0007"+ - "\u0007\u0000\u0000\u12a1\u12a2\u0007\u0017\u0000\u0000\u12a2\u0390\u0001"+ - "\u0000\u0000\u0000\u12a3\u12a4\u0007\u0007\u0000\u0000\u12a4\u12a5\u0007"+ - "\n\u0000\u0000\u12a5\u12a6\u0007\u001c\u0000\u0000\u12a6\u0392\u0001\u0000"+ - "\u0000\u0000\u12a7\u12a8\u0007\u0013\u0000\u0000\u12a8\u12a9\u0007\u0006"+ - "\u0000\u0000\u12a9\u12aa\u0007\f\u0000\u0000\u12aa\u0394\u0001\u0000\u0000"+ - "\u0000\u12ab\u12ac\u0007\u001b\u0000\u0000\u12ac\u12ad\u0007\u0005\u0000"+ - "\u0000\u12ad\u12ae\u0007\u0006\u0000\u0000\u12ae\u12af\u0007\u0016\u0000"+ - "\u0000\u12af\u12b0\u0007\n\u0000\u0000\u12b0\u0396\u0001\u0000\u0000\u0000"+ - "\u12b1\u12b2\u0007\t\u0000\u0000\u12b2\u12b3\u0007\u0016\u0000\u0000\u12b3"+ - "\u12b4\u0007\u0012\u0000\u0000\u12b4\u12b5\u0007\t\u0000\u0000\u12b5\u12b6"+ - "\u0007\u000e\u0000\u0000\u12b6\u12b7\u0007\r\u0000\u0000\u12b7\u12b8\u0007"+ - "\u0011\u0000\u0000\u12b8\u12b9\u0007\u0018\u0000\u0000\u12b9\u12ba\u0007"+ - "\u0010\u0000\u0000\u12ba\u12bb\u0007\u0011\u0000\u0000\u12bb\u12bc\u0007"+ - "\u0013\u0000\u0000\u12bc\u12bd\u0007\u0007\u0000\u0000\u12bd\u0398\u0001"+ - "\u0000\u0000\u0000\u12be\u12bf\u0007\u0018\u0000\u0000\u12bf\u12c0\u0007"+ - "\u0016\u0000\u0000\u12c0\u12c1\u0007\u0012\u0000\u0000\u12c1\u12c2\u0007"+ - "\u0006\u0000\u0000\u12c2\u12c3\u0007\u0011\u0000\u0000\u12c3\u12c4\u0007"+ - "\u000e\u0000\u0000\u12c4\u12c5\u0007\u0005\u0000\u0000\u12c5\u12c6\u0007"+ - "\u0010\u0000\u0000\u12c6\u12c7\u0007\u0011\u0000\u0000\u12c7\u12c8\u0007"+ - "\u0013\u0000\u0000\u12c8\u12c9\u0007\u0007\u0000\u0000\u12c9\u039a\u0001"+ - "\u0000\u0000\u0000\u12ca\u12cb\u0007\u0013\u0000\u0000\u12cb\u12cc\u0007"+ - "\u0016\u0000\u0000\u12cc\u12cd\u0007\u0010\u0000\u0000\u12cd\u039c\u0001"+ - "\u0000\u0000\u0000\u12ce\u12cf\u0007\n\u0000\u0000\u12cf\u12d0\u0007\u0007"+ - "\u0000\u0000\u12d0\u12d1\u0007\f\u0000\u0000\u12d1\u039e\u0001\u0000\u0000"+ - "\u0000\u12d2\u12d3\u0007\r\u0000\u0000\u12d3\u12d4\u0007\u0013\u0000\u0000"+ - "\u12d4\u12d5\u0007\u0016\u0000\u0000\u12d5\u12d6\u0007\u0010\u0000\u0000"+ - "\u12d6\u12d7\u0007\u0011\u0000\u0000\u12d7\u12d8\u0007\u0007\u0000\u0000"+ - "\u12d8\u12d9\u0007\n\u0000\u0000\u12d9\u12da\u0007\t\u0000\u0000\u12da"+ - "\u03a0\u0001\u0000\u0000\u0000\u12db\u12dc\u0007\t\u0000\u0000\u12dc\u12dd"+ - "\u0007\u000e\u0000\u0000\u12dd\u12de\u0007\u0014\u0000\u0000\u12de\u12df"+ - "\u0007\n\u0000\u0000\u12df\u12e0\u0007\u000f\u0000\u0000\u12e0\u12e1\u0007"+ - "\u0005\u0000\u0000\u12e1\u12e2\u0007\t\u0000\u0000\u12e2\u03a2\u0001\u0000"+ - "\u0000\u0000\u12e3\u12e4\u0007\u0018\u0000\u0000\u12e4\u12e5\u0007\r\u0000"+ - "\u0000\u12e5\u12e6\u0007\u0013\u0000\u0000\u12e6\u12e7\u0007\u000e\u0000"+ - "\u0000\u12e7\u12e8\u0007\n\u0000\u0000\u12e8\u12e9\u0007\f\u0000\u0000"+ - "\u12e9\u12ea\u0007\u0016\u0000\u0000\u12ea\u12eb\u0007\r\u0000\u0000\u12eb"+ - "\u12ec\u0007\n\u0000\u0000\u12ec\u12ed\u0007\t\u0000\u0000\u12ed\u03a4"+ - "\u0001\u0000\u0000\u0000\u12ee\u12ef\u0007\u0011\u0000\u0000\u12ef\u12f0"+ - "\u0007\u0007\u0000\u0000\u12f0\u12f1\u0007\u0018\u0000\u0000\u12f1\u12f2"+ - "\u0007\u0016\u0000\u0000\u12f2\u12f3\u0007\u0010\u0000\u0000\u12f3\u03a6"+ - "\u0001\u0000\u0000\u0000\u12f4\u12f5\u0007\t\u0000\u0000\u12f5\u12f6\u0007"+ - "\u0016\u0000\u0000\u12f6\u12f7\u0007\u0018\u0000\u0000\u12f7\u12f8\u0007"+ - "\u0018\u0000\u0000\u12f8\u12f9\u0007\u0013\u0000\u0000\u12f9\u12fa\u0007"+ - "\r\u0000\u0000\u12fa\u12fb\u0007\u0010\u0000\u0000\u12fb\u03a8\u0001\u0000"+ - "\u0000\u0000\u12fc\u12fd\u0007\u0018\u0000\u0000\u12fd\u12fe\u0007\u0005"+ - "\u0000\u0000\u12fe\u12ff\u0007\r\u0000\u0000\u12ff\u1300\u0007\u0005\u0000"+ - "\u0000\u1300\u1301\u0007\u0006\u0000\u0000\u1301\u1302\u0007\u0006\u0000"+ - "\u0000\u1302\u1303\u0007\n\u0000\u0000\u1303\u1304\u0007\u0006\u0000\u0000"+ - "\u1304\u03aa\u0001\u0000\u0000\u0000\u1305\u1306\u0007\t\u0000\u0000\u1306"+ - "\u1307\u0007\u001d\u0000\u0000\u1307\u1308\u0007\u0006\u0000\u0000\u1308"+ - "\u03ac\u0001\u0000\u0000\u0000\u1309\u130a\u0007\f\u0000\u0000\u130a\u130b"+ - "\u0007\n\u0000\u0000\u130b\u130c\u0007\u0018\u0000\u0000\u130c\u130d\u0007"+ - "\n\u0000\u0000\u130d\u130e\u0007\u0007\u0000\u0000\u130e\u130f\u0007\f"+ - "\u0000\u0000\u130f\u1310\u0007\t\u0000\u0000\u1310\u03ae\u0001\u0000\u0000"+ - "\u0000\u1311\u1312\u0007\u0013\u0000\u0000\u1312\u1313\u0007\u001b\u0000"+ - "\u0000\u1313\u1314\u0007\n\u0000\u0000\u1314\u1315\u0007\r\u0000\u0000"+ - "\u1315\u1316\u0007\r\u0000\u0000\u1316\u1317\u0007\u0011\u0000\u0000\u1317"+ - "\u1318\u0007\f\u0000\u0000\u1318\u1319\u0007\u0011\u0000\u0000\u1319\u131a"+ - "\u0007\u0007\u0000\u0000\u131a\u131b\u0007\u0017\u0000\u0000\u131b\u03b0"+ - "\u0001\u0000\u0000\u0000\u131c\u131d\u0007\u000e\u0000\u0000\u131d\u131e"+ - "\u0007\u0013\u0000\u0000\u131e\u131f\u0007\u0007\u0000\u0000\u131f\u1320"+ - "\u0007\u0019\u0000\u0000\u1320\u1321\u0007\u0006\u0000\u0000\u1321\u1322"+ - "\u0007\u0011\u0000\u0000\u1322\u1323\u0007\u000e\u0000\u0000\u1323\u1324"+ - "\u0007\u0010\u0000\u0000\u1324\u03b2\u0001\u0000\u0000\u0000\u1325\u1326"+ - "\u0007\t\u0000\u0000\u1326\u1327\u0007\u0015\u0000\u0000\u1327\u1328\u0007"+ - "\u0011\u0000\u0000\u1328\u1329\u0007\u0018\u0000\u0000\u1329\u03b4\u0001"+ - "\u0000\u0000\u0000\u132a\u132b\u0007\u0006\u0000\u0000\u132b\u132c\u0007"+ - "\u0013\u0000\u0000\u132c\u132d\u0007\u000e\u0000\u0000\u132d\u132e\u0007"+ - "\u0015\u0000\u0000\u132e\u132f\u0007\n\u0000\u0000\u132f\u1330\u0007\f"+ - "\u0000\u0000\u1330\u03b6\u0001\u0000\u0000\u0000\u1331\u1332\u0007\u0010"+ - "\u0000\u0000\u1332\u1333\u0007\u0011\u0000\u0000\u1333\u1334\u0007\n\u0000"+ - "\u0000\u1334\u1335\u0007\t\u0000\u0000\u1335\u03b8\u0001\u0000\u0000\u0000"+ - "\u1336\u1337\u0007\r\u0000\u0000\u1337\u1338\u0007\u0013\u0000\u0000\u1338"+ - "\u1339\u0007\u0006\u0000\u0000\u1339\u133a\u0007\u0006\u0000\u0000\u133a"+ - "\u133b\u0007\u0016\u0000\u0000\u133b\u133c\u0007\u0018\u0000\u0000\u133c"+ - "\u03ba\u0001\u0000\u0000\u0000\u133d\u133e\u0007\u000e\u0000\u0000\u133e"+ - "\u133f\u0007\u0016\u0000\u0000\u133f\u1340\u0007\u0012\u0000\u0000\u1340"+ - "\u1341\u0007\n\u0000\u0000\u1341\u03bc\u0001\u0000\u0000\u0000\u1342\u1343"+ - "\u0007\u0017\u0000\u0000\u1343\u1344\u0007\r\u0000\u0000\u1344\u1345\u0007"+ - "\u0013\u0000\u0000\u1345\u1346\u0007\u0016\u0000\u0000\u1346\u1347\u0007"+ - "\u0018\u0000\u0000\u1347\u1348\u0007\u0011\u0000\u0000\u1348\u1349\u0007"+ - "\u0007\u0000\u0000\u1349\u134a\u0007\u0017\u0000\u0000\u134a\u03be\u0001"+ - "\u0000\u0000\u0000\u134b\u134c\u0007\t\u0000\u0000\u134c\u134d\u0007\n"+ - "\u0000\u0000\u134d\u134e\u0007\u0010\u0000\u0000\u134e\u134f\u0007\t\u0000"+ - "\u0000\u134f\u03c0\u0001\u0000\u0000\u0000\u1350\u1351\u0007\u0010\u0000"+ - "\u0000\u1351\u1352\u0007\u0005\u0000\u0000\u1352\u1353\u0007\u0012\u0000"+ - "\u0000\u1353\u1354\u0007\u0006\u0000\u0000\u1354\u1355\u0007\n\u0000\u0000"+ - "\u1355\u1356\u0007\t\u0000\u0000\u1356\u1357\u0007\u0005\u0000\u0000\u1357"+ - "\u1358\u0007\u000f\u0000\u0000\u1358\u1359\u0007\u0018\u0000\u0000\u1359"+ - "\u135a\u0007\u0006\u0000\u0000\u135a\u135b\u0007\n\u0000\u0000\u135b\u03c2"+ - "\u0001\u0000\u0000\u0000\u135c\u135d\u0007\u0013\u0000\u0000\u135d\u135e"+ - "\u0007\r\u0000\u0000\u135e\u135f\u0007\f\u0000\u0000\u135f\u1360\u0007"+ - "\u0011\u0000\u0000\u1360\u1361\u0007\u0007\u0000\u0000\u1361\u1362\u0007"+ - "\u0005\u0000\u0000\u1362\u1363\u0007\u0006\u0000\u0000\u1363\u1364\u0007"+ - "\u0011\u0000\u0000\u1364\u1365\u0007\u0010\u0000\u0000\u1365\u1366\u0007"+ - "\b\u0000\u0000\u1366\u03c4\u0001\u0000\u0000\u0000\u1367\u1368\u0007\u001a"+ - "\u0000\u0000\u1368\u1369\u0007\u000f\u0000\u0000\u1369\u136a\u0007\u0006"+ - "\u0000\u0000\u136a\u136b\u0007\u0010\u0000\u0000\u136b\u136c\u0007\u0005"+ - "\u0000\u0000\u136c\u136d\u0007\u0012\u0000\u0000\u136d\u136e\u0007\u0006"+ - "\u0000\u0000\u136e\u136f\u0007\n\u0000\u0000\u136f\u03c6\u0001\u0000\u0000"+ - "\u0000\u1370\u1371\u0007\u000e\u0000\u0000\u1371\u1372\u0007\u0013\u0000"+ - "\u0000\u1372\u1373\u0007\u0006\u0000\u0000\u1373\u1374\u0007\u0016\u0000"+ - "\u0000\u1374\u1375\u0007\u000f\u0000\u0000\u1375\u1376\u0007\u0007\u0000"+ - "\u0000\u1376\u1377\u0007\t\u0000\u0000\u1377\u03c8\u0001\u0000\u0000\u0000"+ - "\u1378\u1379\u0007\u001a\u0000\u0000\u1379\u137a\u0007\u000f\u0000\u0000"+ - "\u137a\u137b\u0007\u0006\u0000\u0000\u137b\u137c\u0007\u0007\u0000\u0000"+ - "\u137c\u137d\u0007\u0005\u0000\u0000\u137d\u137e\u0007\u000f\u0000\u0000"+ - "\u137e\u137f\u0007\n\u0000\u0000\u137f\u1380\u0007\t\u0000\u0000\u1380"+ - "\u1381\u0007\u0018\u0000\u0000\u1381\u1382\u0007\u0005\u0000\u0000\u1382"+ - "\u1383\u0007\u000e\u0000\u0000\u1383\u1384\u0007\n\u0000\u0000\u1384\u1385"+ - "\u0007\t\u0000\u0000\u1385\u03ca\u0001\u0000\u0000\u0000\u1386\u1387\u0007"+ - "\r\u0000\u0000\u1387\u1388\u0007\u0013\u0000\u0000\u1388\u1389\u0007\u001c"+ - "\u0000\u0000\u1389\u138a\u0007\u0010\u0000\u0000\u138a\u138b\u0007\b\u0000"+ - "\u0000\u138b\u138c\u0007\u0018\u0000\u0000\u138c\u138d\u0007\n\u0000\u0000"+ - "\u138d\u03cc\u0001\u0000\u0000\u0000\u138e\u138f\u0007\u0007\u0000\u0000"+ - "\u138f\u1390\u0007\u0013\u0000\u0000\u1390\u1391\u0007\r\u0000\u0000\u1391"+ - "\u1392\u0007\u000f\u0000\u0000\u1392\u1393\u0007\u0005\u0000\u0000\u1393"+ - "\u1394\u0007\u0006\u0000\u0000\u1394\u1395\u0007\u0011\u0000\u0000\u1395"+ - "\u1396\u0007\u000b\u0000\u0000\u1396\u1397\u0007\n\u0000\u0000\u1397\u1398"+ - "\u0007\f\u0000\u0000\u1398\u03ce\u0001\u0000\u0000\u0000\u1399\u139a\u0007"+ - "\u001c\u0000\u0000\u139a\u139b\u0007\u0011\u0000\u0000\u139b\u139c\u0007"+ - "\u0010\u0000\u0000\u139c\u139d\u0007\u0014\u0000\u0000\u139d\u139e\u0007"+ - "\u0011\u0000\u0000\u139e\u139f\u0007\u0007\u0000\u0000\u139f\u03d0\u0001"+ - "\u0000\u0000\u0000\u13a0\u13a1\u0007\u0019\u0000\u0000\u13a1\u13a2\u0007"+ - "\u0011\u0000\u0000\u13a2\u13a3\u0007\u0006\u0000\u0000\u13a3\u13a4\u0007"+ - "\u0010\u0000\u0000\u13a4\u13a5\u0007\n\u0000\u0000\u13a5\u13a6\u0007\r"+ - "\u0000\u0000\u13a6\u03d2\u0001\u0000\u0000\u0000\u13a7\u13a8\u0007\u0017"+ - "\u0000\u0000\u13a8\u13a9\u0007\r\u0000\u0000\u13a9\u13aa\u0007\u0013\u0000"+ - "\u0000\u13aa\u13ab\u0007\u0016\u0000\u0000\u13ab\u13ac\u0007\u0018\u0000"+ - "\u0000\u13ac\u13ad\u0007\t\u0000\u0000\u13ad\u03d4\u0001\u0000\u0000\u0000"+ - "\u13ae\u13af\u0007\u0013\u0000\u0000\u13af\u13b0\u0007\u0010\u0000\u0000"+ - "\u13b0\u13b1\u0007\u0014\u0000\u0000\u13b1\u13b2\u0007\n\u0000\u0000\u13b2"+ - "\u13b3\u0007\r\u0000\u0000\u13b3\u13b4\u0007\t\u0000\u0000\u13b4\u03d6"+ - "\u0001\u0000\u0000\u0000\u13b5\u13b6\u0007\u0007\u0000\u0000\u13b6\u13b7"+ - "\u0007\u0019\u0000\u0000\u13b7\u13b8\u0007\u000e\u0000\u0000\u13b8\u03d8"+ - "\u0001\u0000\u0000\u0000\u13b9\u13ba\u0007\u0007\u0000\u0000\u13ba\u13bb"+ - "\u0007\u0019\u0000\u0000\u13bb\u13bc\u0007\f\u0000\u0000\u13bc\u03da\u0001"+ - "\u0000\u0000\u0000\u13bd\u13be\u0007\u0007\u0000\u0000\u13be\u13bf\u0007"+ - "\u0019\u0000\u0000\u13bf\u13c0\u0007\u0015\u0000\u0000\u13c0\u13c1\u0007"+ - "\u000e\u0000\u0000\u13c1\u03dc\u0001\u0000\u0000\u0000\u13c2\u13c3\u0007"+ - "\u0007\u0000\u0000\u13c3\u13c4\u0007\u0019\u0000\u0000\u13c4\u13c5\u0007"+ - "\u0015\u0000\u0000\u13c5\u13c6\u0007\f\u0000\u0000\u13c6\u03de\u0001\u0000"+ - "\u0000\u0000\u13c7\u13c8\u0007\u0016\u0000\u0000\u13c8\u13c9\u0007\n\u0000"+ - "\u0000\u13c9\u13ca\u0007\t\u0000\u0000\u13ca\u13cb\u0007\u000e\u0000\u0000"+ - "\u13cb\u13cc\u0007\u0005\u0000\u0000\u13cc\u13cd\u0007\u0018\u0000\u0000"+ - "\u13cd\u13ce\u0007\n\u0000\u0000\u13ce\u03e0\u0001\u0000\u0000\u0000\u13cf"+ - "\u13d0\u0007\u001b\u0000\u0000\u13d0\u13d1\u0007\u0011\u0000\u0000\u13d1"+ - "\u13d2\u0007\n\u0000\u0000\u13d2\u13d3\u0007\u001c\u0000\u0000\u13d3\u13d4"+ - "\u0007\t\u0000\u0000\u13d4\u03e2\u0001\u0000\u0000\u0000\u13d5\u13d6\u0007"+ - "\u0007\u0000\u0000\u13d6\u13d7\u0007\u0013\u0000\u0000\u13d7\u13d8\u0007"+ - "\r\u0000\u0000\u13d8\u13d9\u0007\u000f\u0000\u0000\u13d9\u13da\u0007\u0005"+ - "\u0000\u0000\u13da\u13db\u0007\u0006\u0000\u0000\u13db\u13dc\u0007\u0011"+ - "\u0000\u0000\u13dc\u13dd\u0007\u000b\u0000\u0000\u13dd\u13de\u0007\n\u0000"+ - "\u0000\u13de\u03e4\u0001\u0000\u0000\u0000\u13df\u13e0\u0007\f\u0000\u0000"+ - "\u13e0\u13e1\u0007\u0016\u0000\u0000\u13e1\u13e2\u0007\u000f\u0000\u0000"+ - "\u13e2\u13e3\u0007\u0018\u0000\u0000\u13e3\u03e6\u0001\u0000\u0000\u0000"+ - "\u13e4\u13e5\u0007\u0018\u0000\u0000\u13e5\u13e6\u0007\r\u0000\u0000\u13e6"+ - "\u13e7\u0007\u0011\u0000\u0000\u13e7\u13e8\u0007\u0007\u0000\u0000\u13e8"+ - "\u13e9\u0007\u0010\u0000\u0000\u13e9\u13ea\u0005_\u0000\u0000\u13ea\u13eb"+ - "\u0007\t\u0000\u0000\u13eb\u13ec\u0007\u0010\u0000\u0000\u13ec\u13ed\u0007"+ - "\r\u0000\u0000\u13ed\u13ee\u0007\u0011\u0000\u0000\u13ee\u13ef\u0007\u000e"+ - "\u0000\u0000\u13ef\u13f0\u0007\u0010\u0000\u0000\u13f0\u13f1\u0005_\u0000"+ - "\u0000\u13f1\u13f2\u0007\u0018\u0000\u0000\u13f2\u13f3\u0007\u0005\u0000"+ - "\u0000\u13f3\u13f4\u0007\r\u0000\u0000\u13f4\u13f5\u0007\u0005\u0000\u0000"+ - "\u13f5\u13f6\u0007\u000f\u0000\u0000\u13f6\u13f7\u0007\t\u0000\u0000\u13f7"+ - "\u03e8\u0001\u0000\u0000\u0000\u13f8\u13f9\u0007\u001b\u0000\u0000\u13f9"+ - "\u13fa\u0007\u0005\u0000\u0000\u13fa\u13fb\u0007\r\u0000\u0000\u13fb\u13fc"+ - "\u0007\u0011\u0000\u0000\u13fc\u13fd\u0007\u0005\u0000\u0000\u13fd\u13fe"+ - "\u0007\u0012\u0000\u0000\u13fe\u13ff\u0007\u0006\u0000\u0000\u13ff\u1400"+ - "\u0007\n\u0000\u0000\u1400\u1401\u0005_\u0000\u0000\u1401\u1402\u0007"+ - "\u000e\u0000\u0000\u1402\u1403\u0007\u0013\u0000\u0000\u1403\u1404\u0007"+ - "\u0007\u0000\u0000\u1404\u1405\u0007\u0019\u0000\u0000\u1405\u1406\u0007"+ - "\u0006\u0000\u0000\u1406\u1407\u0007\u0011\u0000\u0000\u1407\u1408\u0007"+ - "\u000e\u0000\u0000\u1408\u1409\u0007\u0010\u0000\u0000\u1409\u03ea\u0001"+ - "\u0000\u0000\u0000\u140a\u140b\u0007\n\u0000\u0000\u140b\u140c\u0007\r"+ - "\u0000\u0000\u140c\u140d\u0007\r\u0000\u0000\u140d\u140e\u0007\u0013\u0000"+ - "\u0000\u140e\u140f\u0007\r\u0000\u0000\u140f\u03ec\u0001\u0000\u0000\u0000"+ - "\u1410\u1411\u0007\u0016\u0000\u0000\u1411\u1412\u0007\t\u0000\u0000\u1412"+ - "\u1413\u0007\n\u0000\u0000\u1413\u1414\u0005_\u0000\u0000\u1414\u1415"+ - "\u0007\u001b\u0000\u0000\u1415\u1416\u0007\u0005\u0000\u0000\u1416\u1417"+ - "\u0007\r\u0000\u0000\u1417\u1418\u0007\u0011\u0000\u0000\u1418\u1419\u0007"+ - "\u0005\u0000\u0000\u1419\u141a\u0007\u0012\u0000\u0000\u141a\u141b\u0007"+ - "\u0006\u0000\u0000\u141b\u141c\u0007\n\u0000\u0000\u141c\u03ee\u0001\u0000"+ - "\u0000\u0000\u141d\u141e\u0007\u0016\u0000\u0000\u141e\u141f\u0007\t\u0000"+ - "\u0000\u141f\u1420\u0007\n\u0000\u0000\u1420\u1421\u0005_\u0000\u0000"+ - "\u1421\u1422\u0007\u000e\u0000\u0000\u1422\u1423\u0007\u0013\u0000\u0000"+ - "\u1423\u1424\u0007\u0006\u0000\u0000\u1424\u1425\u0007\u0016\u0000\u0000"+ - "\u1425\u1426\u0007\u000f\u0000\u0000\u1426\u1427\u0007\u0007\u0000\u0000"+ - "\u1427\u03f0\u0001\u0000\u0000\u0000\u1428\u1429\u0007\u0005\u0000\u0000"+ - "\u1429\u142a\u0007\u0006\u0000\u0000\u142a\u142b\u0007\u0011\u0000\u0000"+ - "\u142b\u142c\u0007\u0005\u0000\u0000\u142c\u142d\u0007\t\u0000\u0000\u142d"+ - "\u03f2\u0001\u0000\u0000\u0000\u142e\u142f\u0007\u000e\u0000\u0000\u142f"+ - "\u1430\u0007\u0013\u0000\u0000\u1430\u1431\u0007\u0007\u0000\u0000\u1431"+ - "\u1432\u0007\t\u0000\u0000\u1432\u1433\u0007\u0010\u0000\u0000\u1433\u1434"+ - "\u0007\u0005\u0000\u0000\u1434\u1435\u0007\u0007\u0000\u0000\u1435\u1436"+ - "\u0007\u0010\u0000\u0000\u1436\u03f4\u0001\u0000\u0000\u0000\u1437\u1438"+ - "\u0007\u0018\u0000\u0000\u1438\u1439\u0007\n\u0000\u0000\u1439\u143a\u0007"+ - "\r\u0000\u0000\u143a\u143b\u0007\u0019\u0000\u0000\u143b\u143c\u0007\u0013"+ - "\u0000\u0000\u143c\u143d\u0007\r\u0000\u0000\u143d\u143e\u0007\u000f\u0000"+ - "\u0000\u143e\u03f6\u0001\u0000\u0000\u0000\u143f\u1440\u0007\u0017\u0000"+ - "\u0000\u1440\u1441\u0007\n\u0000\u0000\u1441\u1442\u0007\u0010\u0000\u0000"+ - "\u1442\u03f8\u0001\u0000\u0000\u0000\u1443\u1444\u0007\f\u0000\u0000\u1444"+ - "\u1445\u0007\u0011\u0000\u0000\u1445\u1446\u0007\u0005\u0000\u0000\u1446"+ - "\u1447\u0007\u0017\u0000\u0000\u1447\u1448\u0007\u0007\u0000\u0000\u1448"+ - "\u1449\u0007\u0013\u0000\u0000\u1449\u144a\u0007\t\u0000\u0000\u144a\u144b"+ - "\u0007\u0010\u0000\u0000\u144b\u144c\u0007\u0011\u0000\u0000\u144c\u144d"+ - "\u0007\u000e\u0000\u0000\u144d\u144e\u0007\t\u0000\u0000\u144e\u03fa\u0001"+ - "\u0000\u0000\u0000\u144f\u1450\u0007\t\u0000\u0000\u1450\u1451\u0007\u0010"+ - "\u0000\u0000\u1451\u1452\u0007\u0005\u0000\u0000\u1452\u1453\u0007\u000e"+ - "\u0000\u0000\u1453\u1454\u0007\u0015\u0000\u0000\u1454\u1455\u0007\n\u0000"+ - "\u0000\u1455\u1456\u0007\f\u0000\u0000\u1456\u03fc\u0001\u0000\u0000\u0000"+ - "\u1457\u1458\u0007\n\u0000\u0000\u1458\u1459\u0007\u0006\u0000\u0000\u1459"+ - "\u145a\u0007\t\u0000\u0000\u145a\u145b\u0007\u0011\u0000\u0000\u145b\u145c"+ - "\u0007\u0019\u0000\u0000\u145c\u03fe\u0001\u0000\u0000\u0000\u145d\u145e"+ - "\u0007\u001c\u0000\u0000\u145e\u145f\u0007\u0014\u0000\u0000\u145f\u1460"+ - "\u0007\u0011\u0000\u0000\u1460\u1461\u0007\u0006\u0000\u0000\u1461\u1462"+ - "\u0007\n\u0000\u0000\u1462\u0400\u0001\u0000\u0000\u0000\u1463\u1464\u0007"+ - "\r\u0000\u0000\u1464\u1465\u0007\n\u0000\u0000\u1465\u1466\u0007\u001b"+ - "\u0000\u0000\u1466\u1467\u0007\n\u0000\u0000\u1467\u1468\u0007\r\u0000"+ - "\u0000\u1468\u1469\u0007\t\u0000\u0000\u1469\u146a\u0007\n\u0000\u0000"+ - "\u146a\u0402\u0001\u0000\u0000\u0000\u146b\u146c\u0007\u0019\u0000\u0000"+ - "\u146c\u146d\u0007\u0013\u0000\u0000\u146d\u146e\u0007\r\u0000\u0000\u146e"+ - "\u146f\u0007\n\u0000\u0000\u146f\u1470\u0007\u0005\u0000\u0000\u1470\u1471"+ - "\u0007\u000e\u0000\u0000\u1471\u1472\u0007\u0014\u0000\u0000\u1472\u0404"+ - "\u0001\u0000\u0000\u0000\u1473\u1474\u0007\t\u0000\u0000\u1474\u1475\u0007"+ - "\u0006\u0000\u0000\u1475\u1476\u0007\u0011\u0000\u0000\u1476\u1477\u0007"+ - "\u000e\u0000\u0000\u1477\u1478\u0007\n\u0000\u0000\u1478\u0406\u0001\u0000"+ - "\u0000\u0000\u1479\u147a\u0007\n\u0000\u0000\u147a\u147b\u0007\u001a\u0000"+ - "\u0000\u147b\u147c\u0007\u0011\u0000\u0000\u147c\u147d\u0007\u0010\u0000"+ - "\u0000\u147d\u0408\u0001\u0000\u0000\u0000\u147e\u147f\u0007\r\u0000\u0000"+ - "\u147f\u1480\u0007\n\u0000\u0000\u1480\u1481\u0007\u0010\u0000\u0000\u1481"+ - "\u1482\u0007\u0016\u0000\u0000\u1482\u1483\u0007\r\u0000\u0000\u1483\u1484"+ - "\u0007\u0007\u0000\u0000\u1484\u040a\u0001\u0000\u0000\u0000\u1485\u1486"+ - "\u0007\u001d\u0000\u0000\u1486\u1487\u0007\u0016\u0000\u0000\u1487\u1488"+ - "\u0007\n\u0000\u0000\u1488\u1489\u0007\r\u0000\u0000\u1489\u148a\u0007"+ - "\b\u0000\u0000\u148a\u040c\u0001\u0000\u0000\u0000\u148b\u148c\u0007\r"+ - "\u0000\u0000\u148c\u148d\u0007\u0005\u0000\u0000\u148d\u148e\u0007\u0011"+ - "\u0000\u0000\u148e\u148f\u0007\t\u0000\u0000\u148f\u1490\u0007\n\u0000"+ - "\u0000\u1490\u040e\u0001\u0000\u0000\u0000\u1491\u1492\u0007\t\u0000\u0000"+ - "\u1492\u1493\u0007\u001d\u0000\u0000\u1493\u1494\u0007\u0006\u0000\u0000"+ - "\u1494\u1495\u0007\t\u0000\u0000\u1495\u1496\u0007\u0010\u0000\u0000\u1496"+ - "\u1497\u0007\u0005\u0000\u0000\u1497\u1498\u0007\u0010\u0000\u0000\u1498"+ - "\u1499\u0007\n\u0000\u0000\u1499\u0410\u0001\u0000\u0000\u0000\u149a\u149b"+ - "\u0007\f\u0000\u0000\u149b\u149c\u0007\n\u0000\u0000\u149c\u149d\u0007"+ - "\u0012\u0000\u0000\u149d\u149e\u0007\u0016\u0000\u0000\u149e\u149f\u0007"+ - "\u0017\u0000\u0000\u149f\u0412\u0001\u0000\u0000\u0000\u14a0\u14a1\u0007"+ - "\u0006\u0000\u0000\u14a1\u14a2\u0007\u0013\u0000\u0000\u14a2\u14a3\u0007"+ - "\u0017\u0000\u0000\u14a3\u0414\u0001\u0000\u0000\u0000\u14a4\u14a5\u0007"+ - "\u0011\u0000\u0000\u14a5\u14a6\u0007\u0007\u0000\u0000\u14a6\u14a7\u0007"+ - "\u0019\u0000\u0000\u14a7\u14a8\u0007\u0013\u0000\u0000\u14a8\u0416\u0001"+ - "\u0000\u0000\u0000\u14a9\u14aa\u0007\u0007\u0000\u0000\u14aa\u14ab\u0007"+ - "\u0013\u0000\u0000\u14ab\u14ac\u0007\u0010\u0000\u0000\u14ac\u14ad\u0007"+ - "\u0011\u0000\u0000\u14ad\u14ae\u0007\u000e\u0000\u0000\u14ae\u14af\u0007"+ - "\n\u0000\u0000\u14af\u0418\u0001\u0000\u0000\u0000\u14b0\u14b1\u0007\u001c"+ - "\u0000\u0000\u14b1\u14b2\u0007\u0005\u0000\u0000\u14b2\u14b3\u0007\r\u0000"+ - "\u0000\u14b3\u14b4\u0007\u0007\u0000\u0000\u14b4\u14b5\u0007\u0011\u0000"+ - "\u0000\u14b5\u14b6\u0007\u0007\u0000\u0000\u14b6\u14b7\u0007\u0017\u0000"+ - "\u0000\u14b7\u041a\u0001\u0000\u0000\u0000\u14b8\u14b9\u0007\n\u0000\u0000"+ - "\u14b9\u14ba\u0007\u001a\u0000\u0000\u14ba\u14bb\u0007\u000e\u0000\u0000"+ - "\u14bb\u14bc\u0007\n\u0000\u0000\u14bc\u14bd\u0007\u0018\u0000\u0000\u14bd"+ - "\u14be\u0007\u0010\u0000\u0000\u14be\u14bf\u0007\u0011\u0000\u0000\u14bf"+ - "\u14c0\u0007\u0013\u0000\u0000\u14c0\u14c1\u0007\u0007\u0000\u0000\u14c1"+ - "\u041c\u0001\u0000\u0000\u0000\u14c2\u14c3\u0007\u0005\u0000\u0000\u14c3"+ - "\u14c4\u0007\t\u0000\u0000\u14c4\u14c5\u0007\t\u0000\u0000\u14c5\u14c6"+ - "\u0007\n\u0000\u0000\u14c6\u14c7\u0007\r\u0000\u0000\u14c7\u14c8\u0007"+ - "\u0010\u0000\u0000\u14c8\u041e\u0001\u0000\u0000\u0000\u14c9\u14ca\u0007"+ - "\u0006\u0000\u0000\u14ca\u14cb\u0007\u0013\u0000\u0000\u14cb\u14cc\u0007"+ - "\u0013\u0000\u0000\u14cc\u14cd\u0007\u0018\u0000\u0000\u14cd\u0420\u0001"+ - "\u0000\u0000\u0000\u14ce\u14cf\u0007\u0013\u0000\u0000\u14cf\u14d0\u0007"+ - "\u0018\u0000\u0000\u14d0\u14d1\u0007\n\u0000\u0000\u14d1\u14d2\u0007\u0007"+ - "\u0000\u0000\u14d2\u0422\u0001\u0000\u0000\u0000\u14d3\u14d4\u0007\u0005"+ - "\u0000\u0000\u14d4\u14d5\u0007\u0012\u0000\u0000\u14d5\u14d6\u0007\t\u0000"+ - "\u0000\u14d6\u0424\u0001\u0000\u0000\u0000\u14d7\u14d8\u0007\u000e\u0000"+ - "\u0000\u14d8\u14d9\u0007\u0012\u0000\u0000\u14d9\u14da\u0007\r\u0000\u0000"+ - "\u14da\u14db\u0007\u0010\u0000\u0000\u14db\u0426\u0001\u0000\u0000\u0000"+ - "\u14dc\u14dd\u0007\u000e\u0000\u0000\u14dd\u14de\u0007\n\u0000\u0000\u14de"+ - "\u14df\u0007\u0011\u0000\u0000\u14df\u14e0\u0007\u0006\u0000\u0000\u14e0"+ - "\u0428\u0001\u0000\u0000\u0000\u14e1\u14e2\u0007\u000e\u0000\u0000\u14e2"+ - "\u14e3\u0007\n\u0000\u0000\u14e3\u14e4\u0007\u0011\u0000\u0000\u14e4\u14e5"+ - "\u0007\u0006\u0000\u0000\u14e5\u14e6\u0007\u0011\u0000\u0000\u14e6\u14e7"+ - "\u0007\u0007\u0000\u0000\u14e7\u14e8\u0007\u0017\u0000\u0000\u14e8\u042a"+ - "\u0001\u0000\u0000\u0000\u14e9\u14ea\u0007\f\u0000\u0000\u14ea\u14eb\u0007"+ - "\n\u0000\u0000\u14eb\u14ec\u0007\u0017\u0000\u0000\u14ec\u14ed\u0007\r"+ - "\u0000\u0000\u14ed\u14ee\u0007\n\u0000\u0000\u14ee\u14ef\u0007\n\u0000"+ - "\u0000\u14ef\u14f0\u0007\t\u0000\u0000\u14f0\u042c\u0001\u0000\u0000\u0000"+ - "\u14f1\u14f2\u0007\f\u0000\u0000\u14f2\u14f3\u0007\u0011\u0000\u0000\u14f3"+ - "\u14f4\u0007\u001b\u0000\u0000\u14f4\u042e\u0001\u0000\u0000\u0000\u14f5"+ - "\u14f6\u0007\n\u0000\u0000\u14f6\u14f7\u0007\u001a\u0000\u0000\u14f7\u14f8"+ - "\u0007\u0018\u0000\u0000\u14f8\u0430\u0001\u0000\u0000\u0000\u14f9\u14fa"+ - "\u0007\u0019\u0000\u0000\u14fa\u14fb\u0007\u0005\u0000\u0000\u14fb\u14fc"+ - "\u0007\u000e\u0000\u0000\u14fc\u14fd\u0007\u0010\u0000\u0000\u14fd\u14fe"+ - "\u0007\u0013\u0000\u0000\u14fe\u14ff\u0007\r\u0000\u0000\u14ff\u1500\u0007"+ - "\u0011\u0000\u0000\u1500\u1501\u0007\u0005\u0000\u0000\u1501\u1502\u0007"+ - "\u0006\u0000\u0000\u1502\u0432\u0001\u0000\u0000\u0000\u1503\u1504\u0007"+ - "\u0019\u0000\u0000\u1504\u1505\u0007\u0006\u0000\u0000\u1505\u1506\u0007"+ - "\u0013\u0000\u0000\u1506\u1507\u0007\u0013\u0000\u0000\u1507\u1508\u0007"+ - "\r\u0000\u0000\u1508\u0434\u0001\u0000\u0000\u0000\u1509\u150a\u0007\u0017"+ - "\u0000\u0000\u150a\u150b\u0007\u000e\u0000\u0000\u150b\u150c\u0007\f\u0000"+ - "\u0000\u150c\u0436\u0001\u0000\u0000\u0000\u150d\u150e\u0007\u0006\u0000"+ - "\u0000\u150e\u150f\u0007\u000e\u0000\u0000\u150f\u1510\u0007\u000f\u0000"+ - "\u0000\u1510\u0438\u0001\u0000\u0000\u0000\u1511\u1512\u0007\u0006\u0000"+ - "\u0000\u1512\u1513\u0007\u0007\u0000\u0000\u1513\u043a\u0001\u0000\u0000"+ - "\u0000\u1514\u1515\u0007\u0006\u0000\u0000\u1515\u1516\u0007\u0013\u0000"+ - "\u0000\u1516\u1517\u0007\u0017\u0000\u0000\u1517\u1518\u00051\u0000\u0000"+ - "\u1518\u1519\u00050\u0000\u0000\u1519\u043c\u0001\u0000\u0000\u0000\u151a"+ - "\u151b\u0007\u000f\u0000\u0000\u151b\u151c\u0007\u0011\u0000\u0000\u151c"+ - "\u151d\u0007\u0007\u0000\u0000\u151d\u151e\u0005_\u0000\u0000\u151e\u151f"+ - "\u0007\t\u0000\u0000\u151f\u1520\u0007\u000e\u0000\u0000\u1520\u1521\u0007"+ - "\u0005\u0000\u0000\u1521\u1522\u0007\u0006\u0000\u0000\u1522\u1523\u0007"+ - "\n\u0000\u0000\u1523\u043e\u0001\u0000\u0000\u0000\u1524\u1525\u0007\u000f"+ - "\u0000\u0000\u1525\u1526\u0007\u0013\u0000\u0000\u1526\u1527\u0007\f\u0000"+ - "\u0000\u1527\u0440\u0001\u0000\u0000\u0000\u1528\u1529\u0007\u0018\u0000"+ - "\u0000\u1529\u152a\u0007\u0011\u0000\u0000\u152a\u0442\u0001\u0000\u0000"+ - "\u0000\u152b\u152c\u0007\u0018\u0000\u0000\u152c\u152d\u0007\u0013\u0000"+ - "\u0000\u152d\u152e\u0007\u001c\u0000\u0000\u152e\u152f\u0007\n\u0000\u0000"+ - "\u152f\u1530\u0007\r\u0000\u0000\u1530\u0444\u0001\u0000\u0000\u0000\u1531"+ - "\u1532\u0007\r\u0000\u0000\u1532\u1533\u0007\u0005\u0000\u0000\u1533\u1534"+ - "\u0007\f\u0000\u0000\u1534\u1535\u0007\u0011\u0000\u0000\u1535\u1536\u0007"+ - "\u0005\u0000\u0000\u1536\u1537\u0007\u0007\u0000\u0000\u1537\u1538\u0007"+ - "\t\u0000\u0000\u1538\u0446\u0001\u0000\u0000\u0000\u1539\u153a\u0007\r"+ - "\u0000\u0000\u153a\u153b\u0007\u0013\u0000\u0000\u153b\u153c\u0007\u0016"+ - "\u0000\u0000\u153c\u153d\u0007\u0007\u0000\u0000\u153d\u153e\u0007\f\u0000"+ - "\u0000\u153e\u0448\u0001\u0000\u0000\u0000\u153f\u1540\u0007\t\u0000\u0000"+ - "\u1540\u1541\u0007\u000e\u0000\u0000\u1541\u1542\u0007\u0005\u0000\u0000"+ - "\u1542\u1543\u0007\u0006\u0000\u0000\u1543\u1544\u0007\n\u0000\u0000\u1544"+ - "\u044a\u0001\u0000\u0000\u0000\u1545\u1546\u0007\t\u0000\u0000\u1546\u1547"+ - "\u0007\u0011\u0000\u0000\u1547\u1548\u0007\u0017\u0000\u0000\u1548\u1549"+ - "\u0007\u0007\u0000\u0000\u1549\u044c\u0001\u0000\u0000\u0000\u154a\u154b"+ - "\u0007\t\u0000\u0000\u154b\u154c\u0007\u001d\u0000\u0000\u154c\u154d\u0007"+ - "\r\u0000\u0000\u154d\u154e\u0007\u0010\u0000\u0000\u154e\u044e\u0001\u0000"+ - "\u0000\u0000\u154f\u1550\u0007\u0010\u0000\u0000\u1550\u1551\u0007\r\u0000"+ - "\u0000\u1551\u1552\u0007\u0011\u0000\u0000\u1552\u1553\u0007\u000f\u0000"+ - "\u0000\u1553\u1554\u0005_\u0000\u0000\u1554\u1555\u0007\t\u0000\u0000"+ - "\u1555\u1556\u0007\u000e\u0000\u0000\u1556\u1557\u0007\u0005\u0000\u0000"+ - "\u1557\u1558\u0007\u0006\u0000\u0000\u1558\u1559\u0007\n\u0000\u0000\u1559"+ - "\u0450\u0001\u0000\u0000\u0000\u155a\u155b\u0007\u0010\u0000\u0000\u155b"+ - "\u155c\u0007\r\u0000\u0000\u155c\u155d\u0007\u0016\u0000\u0000\u155d\u155e"+ - "\u0007\u0007\u0000\u0000\u155e\u155f\u0007\u000e\u0000\u0000\u155f\u0452"+ - "\u0001\u0000\u0000\u0000\u1560\u1561\u0007\u001c\u0000\u0000\u1561\u1562"+ - "\u0007\u0011\u0000\u0000\u1562\u1563\u0007\f\u0000\u0000\u1563\u1564\u0007"+ - "\u0010\u0000\u0000\u1564\u1565\u0007\u0014\u0000\u0000\u1565\u1566\u0005"+ - "_\u0000\u0000\u1566\u1567\u0007\u0012\u0000\u0000\u1567\u1568\u0007\u0016"+ - "\u0000\u0000\u1568\u1569\u0007\u000e\u0000\u0000\u1569\u156a\u0007\u0015"+ - "\u0000\u0000\u156a\u156b\u0007\n\u0000\u0000\u156b\u156c\u0007\u0010\u0000"+ - "\u0000\u156c\u0454\u0001\u0000\u0000\u0000\u156d\u156e\u0007\r\u0000\u0000"+ - "\u156e\u156f\u0007\u0005\u0000\u0000\u156f\u1570\u0007\u0007\u0000\u0000"+ - "\u1570\u1571\u0007\f\u0000\u0000\u1571\u1572\u0007\u0013\u0000\u0000\u1572"+ - "\u1573\u0007\u000f\u0000\u0000\u1573\u0456\u0001\u0000\u0000\u0000\u1574"+ - "\u1575\u0007\t\u0000\u0000\u1575\u1576\u0007\n\u0000\u0000\u1576\u1577"+ - "\u0007\u0010\u0000\u0000\u1577\u1578\u0007\t\u0000\u0000\u1578\u1579\u0007"+ - "\n\u0000\u0000\u1579\u157a\u0007\n\u0000\u0000\u157a\u157b\u0007\f\u0000"+ - "\u0000\u157b\u0458\u0001\u0000\u0000\u0000\u157c\u157d\u0007\u0005\u0000"+ - "\u0000\u157d\u157e\u0007\u000e\u0000\u0000\u157e\u157f\u0007\u0013\u0000"+ - "\u0000\u157f\u1580\u0007\t\u0000\u0000\u1580\u045a\u0001\u0000\u0000\u0000"+ - "\u1581\u1582\u0007\u0005\u0000\u0000\u1582\u1583\u0007\u000e\u0000\u0000"+ - "\u1583\u1584\u0007\u0013\u0000\u0000\u1584\u1585\u0007\t\u0000\u0000\u1585"+ - "\u1586\u0007\f\u0000\u0000\u1586\u045c\u0001\u0000\u0000\u0000\u1587\u1588"+ - "\u0007\u0005\u0000\u0000\u1588\u1589\u0007\t\u0000\u0000\u1589\u158a\u0007"+ - "\u0011\u0000\u0000\u158a\u158b\u0007\u0007\u0000\u0000\u158b\u045e\u0001"+ - "\u0000\u0000\u0000\u158c\u158d\u0007\u0005\u0000\u0000\u158d\u158e\u0007"+ - "\t\u0000\u0000\u158e\u158f\u0007\u0011\u0000\u0000\u158f\u1590\u0007\u0007"+ - "\u0000\u0000\u1590\u1591\u0007\f\u0000\u0000\u1591\u0460\u0001\u0000\u0000"+ - "\u0000\u1592\u1593\u0007\u0005\u0000\u0000\u1593\u1594\u0007\u0010\u0000"+ - "\u0000\u1594\u1595\u0007\u0005\u0000\u0000\u1595\u1596\u0007\u0007\u0000"+ - "\u0000\u1596\u0462\u0001\u0000\u0000\u0000\u1597\u1598\u0007\u0005\u0000"+ - "\u0000\u1598\u1599\u0007\u0010\u0000\u0000\u1599\u159a\u0007\u0005\u0000"+ - "\u0000\u159a\u159b\u0007\u0007\u0000\u0000\u159b\u159c\u0007\f\u0000\u0000"+ - "\u159c\u0464\u0001\u0000\u0000\u0000\u159d\u159e\u0007\u0005\u0000\u0000"+ - "\u159e\u159f\u0007\u0010\u0000\u0000\u159f\u15a0\u0007\u0005\u0000\u0000"+ - "\u15a0\u15a1\u0007\u0007\u0000\u0000\u15a1\u15a2\u00052\u0000\u0000\u15a2"+ - "\u0466\u0001\u0000\u0000\u0000\u15a3\u15a4\u0007\u0005\u0000\u0000\u15a4"+ - "\u15a5\u0007\u0010\u0000\u0000\u15a5\u15a6\u0007\u0005\u0000\u0000\u15a6"+ - "\u15a7\u0007\u0007\u0000\u0000\u15a7\u15a8\u00052\u0000\u0000\u15a8\u15a9"+ - "\u0007\f\u0000\u0000\u15a9\u0468\u0001\u0000\u0000\u0000\u15aa\u15ab\u0007"+ - "\u000e\u0000\u0000\u15ab\u15ac\u0007\u0013\u0000\u0000\u15ac\u15ad\u0007"+ - "\t\u0000\u0000\u15ad\u046a\u0001\u0000\u0000\u0000\u15ae\u15af\u0007\u000e"+ - "\u0000\u0000\u15af\u15b0\u0007\u0013\u0000\u0000\u15b0\u15b1\u0007\t\u0000"+ - "\u0000\u15b1\u15b2\u0007\f\u0000\u0000\u15b2\u046c\u0001\u0000\u0000\u0000"+ - "\u15b3\u15b4\u0007\u000e\u0000\u0000\u15b4\u15b5\u0007\u0013\u0000\u0000"+ - "\u15b5\u15b6\u0007\u0010\u0000\u0000\u15b6\u046e\u0001\u0000\u0000\u0000"+ - "\u15b7\u15b8\u0007\u000e\u0000\u0000\u15b8\u15b9\u0007\u0013\u0000\u0000"+ - "\u15b9\u15ba\u0007\u0010\u0000\u0000\u15ba\u15bb\u0007\f\u0000\u0000\u15bb"+ - "\u0470\u0001\u0000\u0000\u0000\u15bc\u15bd\u0007\t\u0000\u0000\u15bd\u15be"+ - "\u0007\u0011\u0000\u0000\u15be\u15bf\u0007\u0007\u0000\u0000\u15bf\u0472"+ - "\u0001\u0000\u0000\u0000\u15c0\u15c1\u0007\t\u0000\u0000\u15c1\u15c2\u0007"+ - "\u0011\u0000\u0000\u15c2\u15c3\u0007\u0007\u0000\u0000\u15c3\u15c4\u0007"+ - "\f\u0000\u0000\u15c4\u0474\u0001\u0000\u0000\u0000\u15c5\u15c6\u0007\u0010"+ - "\u0000\u0000\u15c6\u15c7\u0007\u0005\u0000\u0000\u15c7\u15c8\u0007\u0007"+ - "\u0000\u0000\u15c8\u0476\u0001\u0000\u0000\u0000\u15c9\u15ca\u0007\u0010"+ - "\u0000\u0000\u15ca\u15cb\u0007\u0005\u0000\u0000\u15cb\u15cc\u0007\u0007"+ - "\u0000\u0000\u15cc\u15cd\u0007\f\u0000\u0000\u15cd\u0478\u0001\u0000\u0000"+ - "\u0000\u15ce\u15cf\u0007\t\u0000\u0000\u15cf\u15d0\u0007\u0011\u0000\u0000"+ - "\u15d0\u15d1\u0007\u0007\u0000\u0000\u15d1\u15d2\u0007\u0014\u0000\u0000"+ - "\u15d2\u047a\u0001\u0000\u0000\u0000\u15d3\u15d4\u0007\u000e\u0000\u0000"+ - "\u15d4\u15d5\u0007\u0013\u0000\u0000\u15d5\u15d6\u0007\t\u0000\u0000\u15d6"+ - "\u15d7\u0007\u0014\u0000\u0000\u15d7\u047c\u0001\u0000\u0000\u0000\u15d8"+ - "\u15d9\u0007\u0010\u0000\u0000\u15d9\u15da\u0007\u0005\u0000\u0000\u15da"+ - "\u15db\u0007\u0007\u0000\u0000\u15db\u15dc\u0007\u0014\u0000\u0000\u15dc"+ - "\u047e\u0001\u0000\u0000\u0000\u15dd\u15de\u0007\u0005\u0000\u0000\u15de"+ - "\u15df\u0007\t\u0000\u0000\u15df\u15e0\u0007\u0011\u0000\u0000\u15e0\u15e1"+ - "\u0007\u0007\u0000\u0000\u15e1\u15e2\u0007\u0014\u0000\u0000\u15e2\u0480"+ - "\u0001\u0000\u0000\u0000\u15e3\u15e4\u0007\u0005\u0000\u0000\u15e4\u15e5"+ - "\u0007\u000e\u0000\u0000\u15e5\u15e6\u0007\u0013\u0000\u0000\u15e6\u15e7"+ - "\u0007\t\u0000\u0000\u15e7\u15e8\u0007\u0014\u0000\u0000\u15e8\u0482\u0001"+ - "\u0000\u0000\u0000\u15e9\u15ea\u0007\u0005\u0000\u0000\u15ea\u15eb\u0007"+ - "\u0010\u0000\u0000\u15eb\u15ec\u0007\u0005\u0000\u0000\u15ec\u15ed\u0007"+ - "\u0007\u0000\u0000\u15ed\u15ee\u0007\u0014\u0000\u0000\u15ee\u0484\u0001"+ - "\u0000\u0000\u0000\u15ef\u15f0\u0007\u0012\u0000\u0000\u15f0\u15f1\u0007"+ - "\u0011\u0000\u0000\u15f1\u15f2\u0007\u0010\u0000\u0000\u15f2\u15f3\u0005"+ - "_\u0000\u0000\u15f3\u15f4\u0007\u0006\u0000\u0000\u15f4\u15f5\u0007\n"+ - "\u0000\u0000\u15f5\u15f6\u0007\u0007\u0000\u0000\u15f6\u15f7\u0007\u0017"+ - "\u0000\u0000\u15f7\u15f8\u0007\u0010\u0000\u0000\u15f8\u15f9\u0007\u0014"+ - "\u0000\u0000\u15f9\u0486\u0001\u0000\u0000\u0000\u15fa\u15fb\u0007\u000e"+ - "\u0000\u0000\u15fb\u15fc\u0007\u0014\u0000\u0000\u15fc\u15fd\u0007\u0005"+ - "\u0000\u0000\u15fd\u15fe\u0007\r\u0000\u0000\u15fe\u15ff\u0005_\u0000"+ - "\u0000\u15ff\u1600\u0007\u0006\u0000\u0000\u1600\u1601\u0007\n\u0000\u0000"+ - "\u1601\u1602\u0007\u0007\u0000\u0000\u1602\u1603\u0007\u0017\u0000\u0000"+ - "\u1603\u1604\u0007\u0010\u0000\u0000\u1604\u1605\u0007\u0014\u0000\u0000"+ - "\u1605\u0488\u0001\u0000\u0000\u0000\u1606\u1607\u0007\u000e\u0000\u0000"+ - "\u1607\u1608\u0007\u0014\u0000\u0000\u1608\u1609\u0007\u0005\u0000\u0000"+ - "\u1609\u160a\u0007\r\u0000\u0000\u160a\u160b\u0007\u0005\u0000\u0000\u160b"+ - "\u160c\u0007\u000e\u0000\u0000\u160c\u160d\u0007\u0010\u0000\u0000\u160d"+ - "\u160e\u0007\n\u0000\u0000\u160e\u160f\u0007\r\u0000\u0000\u160f\u1610"+ - "\u0005_\u0000\u0000\u1610\u1611\u0007\u0006\u0000\u0000\u1611\u1612\u0007"+ - "\n\u0000\u0000\u1612\u1613\u0007\u0007\u0000\u0000\u1613\u1614\u0007\u0017"+ - "\u0000\u0000\u1614\u1615\u0007\u0010\u0000\u0000\u1615\u1616\u0007\u0014"+ - "\u0000\u0000\u1616\u048a\u0001\u0000\u0000\u0000\u1617\u1618\u0007\u0006"+ - "\u0000\u0000\u1618\u1619\u0007\u0013\u0000\u0000\u1619\u161a\u0007\u001c"+ - "\u0000\u0000\u161a\u161b\u0007\n\u0000\u0000\u161b\u161c\u0007\r\u0000"+ - "\u0000\u161c\u048c\u0001\u0000\u0000\u0000\u161d\u161e\u0007\u0013\u0000"+ - "\u0000\u161e\u161f\u0007\u000e\u0000\u0000\u161f\u1620\u0007\u0010\u0000"+ - "\u0000\u1620\u1621\u0007\n\u0000\u0000\u1621\u1622\u0007\u0010\u0000\u0000"+ - "\u1622\u1623\u0005_\u0000\u0000\u1623\u1624\u0007\u0006\u0000\u0000\u1624"+ - "\u1625\u0007\n\u0000\u0000\u1625\u1626\u0007\u0007\u0000\u0000\u1626\u1627"+ - "\u0007\u0017\u0000\u0000\u1627\u1628\u0007\u0010\u0000\u0000\u1628\u1629"+ - "\u0007\u0014\u0000\u0000\u1629\u048e\u0001\u0000\u0000\u0000\u162a\u162b"+ - "\u0007\u0016\u0000\u0000\u162b\u162c\u0007\u0018\u0000\u0000\u162c\u162d"+ - "\u0007\u0018\u0000\u0000\u162d\u162e\u0007\n\u0000\u0000\u162e\u162f\u0007"+ - "\r\u0000\u0000\u162f\u0490\u0001\u0000\u0000\u0000\u1630\u1631\u0007\u0005"+ - "\u0000\u0000\u1631\u1632\u0007\t\u0000\u0000\u1632\u1633\u0007\u000e\u0000"+ - "\u0000\u1633\u1634\u0007\u0011\u0000\u0000\u1634\u1635\u0007\u0011\u0000"+ - "\u0000\u1635\u0492\u0001\u0000\u0000\u0000\u1636\u1637\u0007\u0012\u0000"+ - "\u0000\u1637\u1638\u0007\u0010\u0000\u0000\u1638\u1639\u0007\r\u0000\u0000"+ - "\u1639\u163a\u0007\u0011\u0000\u0000\u163a\u163b\u0007\u000f\u0000\u0000"+ - "\u163b\u0494\u0001\u0000\u0000\u0000\u163c\u163d\u0007\u000e\u0000\u0000"+ - "\u163d\u163e\u0007\u0014\u0000\u0000\u163e\u163f\u0007\r\u0000\u0000\u163f"+ - "\u0496\u0001\u0000\u0000\u0000\u1640\u1641\u0007\u000e\u0000\u0000\u1641"+ - "\u1642\u0007\u0013\u0000\u0000\u1642\u1643\u0007\u0007\u0000\u0000\u1643"+ - "\u1644\u0007\u000e\u0000\u0000\u1644\u1645\u0007\u0005\u0000\u0000\u1645"+ - "\u1646\u0007\u0010\u0000\u0000\u1646\u0498\u0001\u0000\u0000\u0000\u1647"+ - "\u1648\u0007\u000e\u0000\u0000\u1648\u1649\u0007\u0013\u0000\u0000\u1649"+ - "\u164a\u0007\u0007\u0000\u0000\u164a\u164b\u0007\u000e\u0000\u0000\u164b"+ - "\u164c\u0007\u0005\u0000\u0000\u164c\u164d\u0007\u0010\u0000\u0000\u164d"+ - "\u164e\u0005_\u0000\u0000\u164e\u164f\u0007\u001c\u0000\u0000\u164f\u1650"+ - "\u0007\t\u0000\u0000\u1650\u049a\u0001\u0000\u0000\u0000\u1651\u1652\u0007"+ - "\u0019\u0000\u0000\u1652\u1653\u0007\u0013\u0000\u0000\u1653\u1654\u0007"+ - "\r\u0000\u0000\u1654\u1655\u0007\u000f\u0000\u0000\u1655\u1656\u0007\u0005"+ - "\u0000\u0000\u1656\u1657\u0007\u0010\u0000\u0000\u1657\u049c\u0001\u0000"+ - "\u0000\u0000\u1658\u1659\u0007\u0011\u0000\u0000\u1659\u165a\u0007\u0007"+ - "\u0000\u0000\u165a\u165b\u0007\u0011\u0000\u0000\u165b\u165c\u0007\u0010"+ - "\u0000\u0000\u165c\u165d\u0007\u000e\u0000\u0000\u165d\u165e\u0007\u0005"+ - "\u0000\u0000\u165e\u165f\u0007\u0018\u0000\u0000\u165f\u049e\u0001\u0000"+ - "\u0000\u0000\u1660\u1661\u0007\u0006\u0000\u0000\u1661\u1662\u0007\n\u0000"+ - "\u0000\u1662\u1663\u0007\u0007\u0000\u0000\u1663\u1664\u0007\u0017\u0000"+ - "\u0000\u1664\u1665\u0007\u0010\u0000\u0000\u1665\u1666\u0007\u0014\u0000"+ - "\u0000\u1666\u04a0\u0001\u0000\u0000\u0000\u1667\u1668\u0007\u0006\u0000"+ - "\u0000\u1668\u1669\u0007\u0018\u0000\u0000\u1669\u166a\u0007\u0005\u0000"+ - "\u0000\u166a\u166b\u0007\f\u0000\u0000\u166b\u04a2\u0001\u0000\u0000\u0000"+ - "\u166c\u166d\u0007\u0006\u0000\u0000\u166d\u166e\u0007\u0010\u0000\u0000"+ - "\u166e\u166f\u0007\r\u0000\u0000\u166f\u1670\u0007\u0011\u0000\u0000\u1670"+ - "\u1671\u0007\u000f\u0000\u0000\u1671\u04a4\u0001\u0000\u0000\u0000\u1672"+ - "\u1673\u0007\u000f\u0000\u0000\u1673\u1674\u0007\f\u0000\u0000\u1674\u1675"+ - "\u00055\u0000\u0000\u1675\u04a6\u0001\u0000\u0000\u0000\u1676\u1677\u0007"+ - "\u0018\u0000\u0000\u1677\u1678\u0007\u0005\u0000\u0000\u1678\u1679\u0007"+ - "\r\u0000\u0000\u1679\u167a\u0007\t\u0000\u0000\u167a\u167b\u0007\n\u0000"+ - "\u0000\u167b\u167c\u0005_\u0000\u0000\u167c\u167d\u0007\u0011\u0000\u0000"+ - "\u167d\u167e\u0007\f\u0000\u0000\u167e\u167f\u0007\n\u0000\u0000\u167f"+ - "\u1680\u0007\u0007\u0000\u0000\u1680\u1681\u0007\u0010\u0000\u0000\u1681"+ - "\u04a8\u0001\u0000\u0000\u0000\u1682\u1683\u0007\u0018\u0000\u0000\u1683"+ - "\u1684\u0007\u0017\u0000\u0000\u1684\u1685\u0005_\u0000\u0000\u1685\u1686"+ - "\u0007\u000e\u0000\u0000\u1686\u1687\u0007\u0006\u0000\u0000\u1687\u1688"+ - "\u0007\u0011\u0000\u0000\u1688\u1689\u0007\n\u0000\u0000\u1689\u168a\u0007"+ - "\u0007\u0000\u0000\u168a\u168b\u0007\u0010\u0000\u0000\u168b\u168c\u0005"+ - "_\u0000\u0000\u168c\u168d\u0007\n\u0000\u0000\u168d\u168e\u0007\u0007"+ - "\u0000\u0000\u168e\u168f\u0007\u000e\u0000\u0000\u168f\u1690\u0007\u0013"+ - "\u0000\u0000\u1690\u1691\u0007\f\u0000\u0000\u1691\u1692\u0007\u0011\u0000"+ - "\u0000\u1692\u1693\u0007\u0007\u0000\u0000\u1693\u1694\u0007\u0017\u0000"+ - "\u0000\u1694\u04aa\u0001\u0000\u0000\u0000\u1695\u1696\u0007\u001d\u0000"+ - "\u0000\u1696\u1697\u0007\u0016\u0000\u0000\u1697\u1698\u0007\u0013\u0000"+ - "\u0000\u1698\u1699\u0007\u0010\u0000\u0000\u1699\u169a\u0007\n\u0000\u0000"+ - "\u169a\u169b\u0005_\u0000\u0000\u169b\u169c\u0007\u0011\u0000\u0000\u169c"+ - "\u169d\u0007\f\u0000\u0000\u169d\u169e\u0007\n\u0000\u0000\u169e\u169f"+ - "\u0007\u0007\u0000\u0000\u169f\u16a0\u0007\u0010\u0000\u0000\u16a0\u04ac"+ - "\u0001\u0000\u0000\u0000\u16a1\u16a2\u0007\u001d\u0000\u0000\u16a2\u16a3"+ - "\u0007\u0016\u0000\u0000\u16a3\u16a4\u0007\u0013\u0000\u0000\u16a4\u16a5"+ - "\u0007\u0010\u0000\u0000\u16a5\u16a6\u0007\n\u0000\u0000\u16a6\u16a7\u0005"+ - "_\u0000\u0000\u16a7\u16a8\u0007\u0006\u0000\u0000\u16a8\u16a9\u0007\u0011"+ - "\u0000\u0000\u16a9\u16aa\u0007\u0010\u0000\u0000\u16aa\u16ab\u0007\n\u0000"+ - "\u0000\u16ab\u16ac\u0007\r\u0000\u0000\u16ac\u16ad\u0007\u0005\u0000\u0000"+ - "\u16ad\u16ae\u0007\u0006\u0000\u0000\u16ae\u04ae\u0001\u0000\u0000\u0000"+ - "\u16af\u16b0\u0007\u001d\u0000\u0000\u16b0\u16b1\u0007\u0016\u0000\u0000"+ - "\u16b1\u16b2\u0007\u0013\u0000\u0000\u16b2\u16b3\u0007\u0010\u0000\u0000"+ - "\u16b3\u16b4\u0007\n\u0000\u0000\u16b4\u16b5\u0005_\u0000\u0000\u16b5"+ - "\u16b6\u0007\u0007\u0000\u0000\u16b6\u16b7\u0007\u0016\u0000\u0000\u16b7"+ - "\u16b8\u0007\u0006\u0000\u0000\u16b8\u16b9\u0007\u0006\u0000\u0000\u16b9"+ - "\u16ba\u0007\u0005\u0000\u0000\u16ba\u16bb\u0007\u0012\u0000\u0000\u16bb"+ - "\u16bc\u0007\u0006\u0000\u0000\u16bc\u16bd\u0007\n\u0000\u0000\u16bd\u04b0"+ - "\u0001\u0000\u0000\u0000\u16be\u16bf\u0007\r\u0000\u0000\u16bf\u16c0\u0007"+ - "\n\u0000\u0000\u16c0\u16c1\u0007\u0017\u0000\u0000\u16c1\u16c2\u0007\n"+ - "\u0000\u0000\u16c2\u16c3\u0007\u001a\u0000\u0000\u16c3\u16c4\u0007\u0018"+ - "\u0000\u0000\u16c4\u16c5\u0005_\u0000\u0000\u16c5\u16c6\u0007\u000e\u0000"+ - "\u0000\u16c6\u16c7\u0007\u0013\u0000\u0000\u16c7\u16c8\u0007\u0016\u0000"+ - "\u0000\u16c8\u16c9\u0007\u0007\u0000\u0000\u16c9\u16ca\u0007\u0010\u0000"+ - "\u0000\u16ca\u04b2\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"+ - "\u0011\u0000\u0000\u16d3\u16d4\u0007\u0007\u0000\u0000\u16d4\u16d5\u0007"+ - "\t\u0000\u0000\u16d5\u16d6\u0007\u0010\u0000\u0000\u16d6\u16d7\u0007\r"+ - "\u0000\u0000\u16d7\u04b4\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\u0006\u0000\u0000\u16e0\u16e1\u0007\u0011\u0000\u0000\u16e1\u16e2"+ - "\u0007\u0015\u0000\u0000\u16e2\u16e3\u0007\n\u0000\u0000\u16e3\u04b6\u0001"+ - "\u0000\u0000\u0000\u16e4\u16e5\u0007\r\u0000\u0000\u16e5\u16e6\u0007\n"+ - "\u0000\u0000\u16e6\u16e7\u0007\u0017\u0000\u0000\u16e7\u16e8\u0007\n\u0000"+ - "\u0000\u16e8\u16e9\u0007\u001a\u0000\u0000\u16e9\u16ea\u0007\u0018\u0000"+ - "\u0000\u16ea\u16eb\u0005_\u0000\u0000\u16eb\u16ec\u0007\u000f\u0000\u0000"+ - "\u16ec\u16ed\u0007\u0005\u0000\u0000\u16ed\u16ee\u0007\u0010\u0000\u0000"+ - "\u16ee\u16ef\u0007\u000e\u0000\u0000\u16ef\u16f0\u0007\u0014\u0000\u0000"+ - "\u16f0\u04b8\u0001\u0000\u0000\u0000\u16f1\u16f2\u0007\r\u0000\u0000\u16f2"+ - "\u16f3\u0007\n\u0000\u0000\u16f3\u16f4\u0007\u0017\u0000\u0000\u16f4\u16f5"+ - "\u0007\n\u0000\u0000\u16f5\u16f6\u0007\u001a\u0000\u0000\u16f6\u16f7\u0007"+ - "\u0018\u0000\u0000\u16f7\u16f8\u0005_\u0000\u0000\u16f8\u16f9\u0007\u000f"+ - "\u0000\u0000\u16f9\u16fa\u0007\u0005\u0000\u0000\u16fa\u16fb\u0007\u0010"+ - "\u0000\u0000\u16fb\u16fc\u0007\u000e\u0000\u0000\u16fc\u16fd\u0007\u0014"+ - "\u0000\u0000\u16fd\u16fe\u0007\n\u0000\u0000\u16fe\u16ff\u0007\t\u0000"+ - "\u0000\u16ff\u04ba\u0001\u0000\u0000\u0000\u1700\u1701\u0007\r\u0000\u0000"+ - "\u1701\u1702\u0007\n\u0000\u0000\u1702\u1703\u0007\u0017\u0000\u0000\u1703"+ - "\u1704\u0007\n\u0000\u0000\u1704\u1705\u0007\u001a\u0000\u0000\u1705\u1706"+ - "\u0007\u0018\u0000\u0000\u1706\u1707\u0005_\u0000\u0000\u1707\u1708\u0007"+ - "\r\u0000\u0000\u1708\u1709\u0007\n\u0000\u0000\u1709\u170a\u0007\u0018"+ - "\u0000\u0000\u170a\u170b\u0007\u0006\u0000\u0000\u170b\u170c\u0007\u0005"+ - "\u0000\u0000\u170c\u170d\u0007\u000e\u0000\u0000\u170d\u170e\u0007\n\u0000"+ - "\u0000\u170e\u04bc\u0001\u0000\u0000\u0000\u170f\u1710\u0007\r\u0000\u0000"+ - "\u1710\u1711\u0007\n\u0000\u0000\u1711\u1712\u0007\u0017\u0000\u0000\u1712"+ - "\u1713\u0007\n\u0000\u0000\u1713\u1714\u0007\u001a\u0000\u0000\u1714\u1715"+ - "\u0007\u0018\u0000\u0000\u1715\u1716\u0005_\u0000\u0000\u1716\u1717\u0007"+ - "\t\u0000\u0000\u1717\u1718\u0007\u0018\u0000\u0000\u1718\u1719\u0007\u0006"+ - "\u0000\u0000\u1719\u171a\u0007\u0011\u0000\u0000\u171a\u171b\u0007\u0010"+ - "\u0000\u0000\u171b\u171c\u0005_\u0000\u0000\u171c\u171d\u0007\u0010\u0000"+ - "\u0000\u171d\u171e\u0007\u0013\u0000\u0000\u171e\u171f\u0005_\u0000\u0000"+ - "\u171f\u1720\u0007\u0005\u0000\u0000\u1720\u1721\u0007\r\u0000\u0000\u1721"+ - "\u1722\u0007\r\u0000\u0000\u1722\u1723\u0007\u0005\u0000\u0000\u1723\u1724"+ - "\u0007\b\u0000\u0000\u1724\u04be\u0001\u0000\u0000\u0000\u1725\u1726\u0007"+ - "\r\u0000\u0000\u1726\u1727\u0007\n\u0000\u0000\u1727\u1728\u0007\u0017"+ - "\u0000\u0000\u1728\u1729\u0007\n\u0000\u0000\u1729\u172a\u0007\u001a\u0000"+ - "\u0000\u172a\u172b\u0007\u0018\u0000\u0000\u172b\u172c\u0005_\u0000\u0000"+ - "\u172c\u172d\u0007\t\u0000\u0000\u172d\u172e\u0007\u0018\u0000\u0000\u172e"+ - "\u172f\u0007\u0006\u0000\u0000\u172f\u1730\u0007\u0011\u0000\u0000\u1730"+ - "\u1731\u0007\u0010\u0000\u0000\u1731\u1732\u0005_\u0000\u0000\u1732\u1733"+ - "\u0007\u0010\u0000\u0000\u1733\u1734\u0007\u0013\u0000\u0000\u1734\u1735"+ - "\u0005_\u0000\u0000\u1735\u1736\u0007\u0010\u0000\u0000\u1736\u1737\u0007"+ - "\u0005\u0000\u0000\u1737\u1738\u0007\u0012\u0000\u0000\u1738\u1739\u0007"+ - "\u0006\u0000\u0000\u1739\u173a\u0007\n\u0000\u0000\u173a\u04c0\u0001\u0000"+ - "\u0000\u0000\u173b\u173c\u0007\r\u0000\u0000\u173c\u173d\u0007\n\u0000"+ - "\u0000\u173d\u173e\u0007\u0017\u0000\u0000\u173e\u173f\u0007\n\u0000\u0000"+ - "\u173f\u1740\u0007\u001a\u0000\u0000\u1740\u1741\u0007\u0018\u0000\u0000"+ - "\u1741\u1742\u0005_\u0000\u0000\u1742\u1743\u0007\t\u0000\u0000\u1743"+ - "\u1744\u0007\u0016\u0000\u0000\u1744\u1745\u0007\u0012\u0000\u0000\u1745"+ - "\u1746\u0007\t\u0000\u0000\u1746\u1747\u0007\u0010\u0000\u0000\u1747\u1748"+ - "\u0007\r\u0000\u0000\u1748\u04c2\u0001\u0000\u0000\u0000\u1749\u174a\u0007"+ - "\r\u0000\u0000\u174a\u174b\u0007\n\u0000\u0000\u174b\u174c\u0007\u0018"+ - "\u0000\u0000\u174c\u174d\u0007\n\u0000\u0000\u174d\u174e\u0007\u0005\u0000"+ - "\u0000\u174e\u174f\u0007\u0010\u0000\u0000\u174f\u04c4\u0001\u0000\u0000"+ - "\u0000\u1750\u1751\u0007\r\u0000\u0000\u1751\u1752\u0007\u0018\u0000\u0000"+ - "\u1752\u1753\u0007\u0005\u0000\u0000\u1753\u1754\u0007\f\u0000\u0000\u1754"+ - "\u04c6\u0001\u0000\u0000\u0000\u1755\u1756\u0007\r\u0000\u0000\u1756\u1757"+ - "\u0007\u0010\u0000\u0000\u1757\u1758\u0007\r\u0000\u0000\u1758\u1759\u0007"+ - "\u0011\u0000\u0000\u1759\u175a\u0007\u000f\u0000\u0000\u175a\u04c8\u0001"+ - "\u0000\u0000\u0000\u175b\u175c\u0007\t\u0000\u0000\u175c\u175d\u0007\u0018"+ - "\u0000\u0000\u175d\u175e\u0007\u0006\u0000\u0000\u175e\u175f\u0007\u0011"+ - "\u0000\u0000\u175f\u1760\u0007\u0010\u0000\u0000\u1760\u1761\u0005_\u0000"+ - "\u0000\u1761\u1762\u0007\u0018\u0000\u0000\u1762\u1763\u0007\u0005\u0000"+ - "\u0000\u1763\u1764\u0007\r\u0000\u0000\u1764\u1765\u0007\u0010\u0000\u0000"+ - "\u1765\u04ca\u0001\u0000\u0000\u0000\u1766\u1767\u0007\t\u0000\u0000\u1767"+ - "\u1768\u0007\u0010\u0000\u0000\u1768\u1769\u0007\u0005\u0000\u0000\u1769"+ - "\u176a\u0007\r\u0000\u0000\u176a\u176b\u0007\u0010\u0000\u0000\u176b\u176c"+ - "\u0007\t\u0000\u0000\u176c\u176d\u0005_\u0000\u0000\u176d\u176e\u0007"+ - "\u001c\u0000\u0000\u176e\u176f\u0007\u0011\u0000\u0000\u176f\u1770\u0007"+ - "\u0010\u0000\u0000\u1770\u1771\u0007\u0014\u0000\u0000\u1771\u04cc\u0001"+ - "\u0000\u0000\u0000\u1772\u1773\u0007\t\u0000\u0000\u1773\u1774\u0007\u0010"+ - "\u0000\u0000\u1774\u1775\u0007\r\u0000\u0000\u1775\u1776\u0007\u0011\u0000"+ - "\u0000\u1776\u1777\u0007\u0007\u0000\u0000\u1777\u1778\u0007\u0017\u0000"+ - "\u0000\u1778\u1779\u0005_\u0000\u0000\u1779\u177a\u0007\u0010\u0000\u0000"+ - "\u177a\u177b\u0007\u0013\u0000\u0000\u177b\u177c\u0005_\u0000\u0000\u177c"+ - "\u177d\u0007\u0005\u0000\u0000\u177d\u177e\u0007\r\u0000\u0000\u177e\u177f"+ - "\u0007\r\u0000\u0000\u177f\u1780\u0007\u0005\u0000\u0000\u1780\u1781\u0007"+ - "\b\u0000\u0000\u1781\u04ce\u0001\u0000\u0000\u0000\u1782\u1783\u0007\t"+ - "\u0000\u0000\u1783\u1784\u0007\u0010\u0000\u0000\u1784\u1785\u0007\r\u0000"+ - "\u0000\u1785\u1786\u0007\u0011\u0000\u0000\u1786\u1787\u0007\u0007\u0000"+ - "\u0000\u1787\u1788\u0007\u0017\u0000\u0000\u1788\u1789\u0005_\u0000\u0000"+ - "\u1789\u178a\u0007\u0010\u0000\u0000\u178a\u178b\u0007\u0013\u0000\u0000"+ - "\u178b\u178c\u0005_\u0000\u0000\u178c\u178d\u0007\u0010\u0000\u0000\u178d"+ - "\u178e\u0007\u0005\u0000\u0000\u178e\u178f\u0007\u0012\u0000\u0000\u178f"+ - "\u1790\u0007\u0006\u0000\u0000\u1790\u1791\u0007\n\u0000\u0000\u1791\u04d0"+ - "\u0001\u0000\u0000\u0000\u1792\u1793\u0007\t\u0000\u0000\u1793\u1794\u0007"+ - "\u0010\u0000\u0000\u1794\u1795\u0007\r\u0000\u0000\u1795\u1796\u0007\u0018"+ - "\u0000\u0000\u1796\u1797\u0007\u0013\u0000\u0000\u1797\u1798\u0007\t\u0000"+ - "\u0000\u1798\u04d2\u0001\u0000\u0000\u0000\u1799\u179a\u0007\t\u0000\u0000"+ - "\u179a\u179b\u0007\u0016\u0000\u0000\u179b\u179c\u0007\u0012\u0000\u0000"+ - "\u179c\u179d\u0007\t\u0000\u0000\u179d\u179e\u0007\u0010\u0000\u0000\u179e"+ - "\u179f\u0007\r\u0000\u0000\u179f\u04d4\u0001\u0000\u0000\u0000\u17a0\u17a1"+ - "\u0007\u0010\u0000\u0000\u17a1\u17a2\u0007\u0013\u0000\u0000\u17a2\u17a3"+ - "\u0005_\u0000\u0000\u17a3\u17a4\u0007\u0005\u0000\u0000\u17a4\u17a5\u0007"+ - "\t\u0000\u0000\u17a5\u17a6\u0007\u000e\u0000\u0000\u17a6\u17a7\u0007\u0011"+ - "\u0000\u0000\u17a7\u17a8\u0007\u0011\u0000\u0000\u17a8\u04d6\u0001\u0000"+ - "\u0000\u0000\u17a9\u17aa\u0007\u0010\u0000\u0000\u17aa\u17ab\u0007\u0013"+ - "\u0000\u0000\u17ab\u17ac\u0005_\u0000\u0000\u17ac\u17ad\u0007\u0014\u0000"+ - "\u0000\u17ad\u17ae\u0007\n\u0000\u0000\u17ae\u17af\u0007\u001a\u0000\u0000"+ - "\u17af\u04d8\u0001\u0000\u0000\u0000\u17b0\u17b1\u0007\u0010\u0000\u0000"+ - "\u17b1\u17b2\u0007\r\u0000\u0000\u17b2\u17b3\u0007\u0005\u0000\u0000\u17b3"+ - "\u17b4\u0007\u0007\u0000\u0000\u17b4\u17b5\u0007\t\u0000\u0000\u17b5\u17b6"+ - "\u0007\u0006\u0000\u0000\u17b6\u17b7\u0007\u0005\u0000\u0000\u17b7\u17b8"+ - "\u0007\u0010\u0000\u0000\u17b8\u17b9\u0007\n\u0000\u0000\u17b9\u04da\u0001"+ - "\u0000\u0000\u0000\u17ba\u17bb\u0007\u0016\u0000\u0000\u17bb\u17bc\u0007"+ - "\u0007\u0000\u0000\u17bc\u17bd\u0007\u0011\u0000\u0000\u17bd\u17be\u0007"+ - "\t\u0000\u0000\u17be\u17bf\u0007\u0010\u0000\u0000\u17bf\u17c0\u0007\r"+ - "\u0000\u0000\u17c0\u04dc\u0001\u0000\u0000\u0000\u17c1\u17c2\u0007\u0005"+ - "\u0000\u0000\u17c2\u17c3\u0007\u0017\u0000\u0000\u17c3\u17c4\u0007\n\u0000"+ - "\u0000\u17c4\u04de\u0001\u0000\u0000\u0000\u17c5\u17c6\u0007\u000e\u0000"+ - "\u0000\u17c6\u17c7\u0007\u0006\u0000\u0000\u17c7\u17c8\u0007\u0013\u0000"+ - "\u0000\u17c8\u17c9\u0007\u000e\u0000\u0000\u17c9\u17ca\u0007\u0015\u0000"+ - "\u0000\u17ca\u17cb\u0005_\u0000\u0000\u17cb\u17cc\u0007\u0010\u0000\u0000"+ - "\u17cc\u17cd\u0007\u0011\u0000\u0000\u17cd\u17ce\u0007\u000f\u0000\u0000"+ - "\u17ce\u17cf\u0007\n\u0000\u0000\u17cf\u17d0\u0007\t\u0000\u0000\u17d0"+ - "\u17d1\u0007\u0010\u0000\u0000\u17d1\u17d2\u0007\u0005\u0000\u0000\u17d2"+ - "\u17d3\u0007\u000f\u0000\u0000\u17d3\u17d4\u0007\u0018\u0000\u0000\u17d4"+ - "\u04e0\u0001\u0000\u0000\u0000\u17d5\u17d6\u0007\f\u0000\u0000\u17d6\u17d7"+ - "\u0007\u0005\u0000\u0000\u17d7\u17d8\u0007\u0010\u0000\u0000\u17d8\u17d9"+ - "\u0007\n\u0000\u0000\u17d9\u17da\u0005_\u0000\u0000\u17da\u17db\u0007"+ - "\u0012\u0000\u0000\u17db\u17dc\u0007\u0011\u0000\u0000\u17dc\u17dd\u0007"+ - "\u0007\u0000\u0000\u17dd\u04e2\u0001\u0000\u0000\u0000\u17de\u17df\u0007"+ - "\f\u0000\u0000\u17df\u17e0\u0007\u0005\u0000\u0000\u17e0\u17e1\u0007\u0010"+ - "\u0000\u0000\u17e1\u17e2\u0007\n\u0000\u0000\u17e2\u17e3\u0005_\u0000"+ - "\u0000\u17e3\u17e4\u0007\u0018\u0000\u0000\u17e4\u17e5\u0007\u0005\u0000"+ - "\u0000\u17e5\u17e6\u0007\r\u0000\u0000\u17e6\u17e7\u0007\u0010\u0000\u0000"+ - "\u17e7\u04e4\u0001\u0000\u0000\u0000\u17e8\u17e9\u0007\f\u0000\u0000\u17e9"+ - "\u17ea\u0007\u0005\u0000\u0000\u17ea\u17eb\u0007\u0010\u0000\u0000\u17eb"+ - "\u17ec\u0007\n\u0000\u0000\u17ec\u17ed\u0005_\u0000\u0000\u17ed\u17ee"+ - "\u0007\u0010\u0000\u0000\u17ee\u17ef\u0007\r\u0000\u0000\u17ef\u17f0\u0007"+ - "\u0016\u0000\u0000\u17f0\u17f1\u0007\u0007\u0000\u0000\u17f1\u17f2\u0007"+ - "\u000e\u0000\u0000\u17f2\u04e6\u0001\u0000\u0000\u0000\u17f3\u17f4\u0007"+ - "\u0011\u0000\u0000\u17f4\u17f5\u0007\t\u0000\u0000\u17f5\u17f6\u0007\u0019"+ - "\u0000\u0000\u17f6\u17f7\u0007\u0011\u0000\u0000\u17f7\u17f8\u0007\u0007"+ - "\u0000\u0000\u17f8\u17f9\u0007\u0011\u0000\u0000\u17f9\u17fa\u0007\u0010"+ - "\u0000\u0000\u17fa\u17fb\u0007\n\u0000\u0000\u17fb\u04e8\u0001\u0000\u0000"+ - "\u0000\u17fc\u17fd\u0007\u001e\u0000\u0000\u17fd\u17fe\u0007\u0016\u0000"+ - "\u0000\u17fe\u17ff\u0007\t\u0000\u0000\u17ff\u1800\u0007\u0010\u0000\u0000"+ - "\u1800\u1801\u0007\u0011\u0000\u0000\u1801\u1802\u0007\u0019\u0000\u0000"+ - "\u1802\u1803\u0007\b\u0000\u0000\u1803\u1804\u0005_\u0000\u0000\u1804"+ - "\u1805\u0007\f\u0000\u0000\u1805\u1806\u0007\u0005\u0000\u0000\u1806\u1807"+ - "\u0007\b\u0000\u0000\u1807\u1808\u0007\t\u0000\u0000\u1808\u04ea\u0001"+ - "\u0000\u0000\u0000\u1809\u180a\u0007\u001e\u0000\u0000\u180a\u180b\u0007"+ - "\u0016\u0000\u0000\u180b\u180c\u0007\t\u0000\u0000\u180c\u180d\u0007\u0010"+ - "\u0000\u0000\u180d\u180e\u0007\u0011\u0000\u0000\u180e\u180f\u0007\u0019"+ - "\u0000\u0000\u180f\u1810\u0007\b\u0000\u0000\u1810\u1811\u0005_\u0000"+ - "\u0000\u1811\u1812\u0007\u0014\u0000\u0000\u1812\u1813\u0007\u0013\u0000"+ - "\u0000\u1813\u1814\u0007\u0016\u0000\u0000\u1814\u1815\u0007\r\u0000\u0000"+ - "\u1815\u1816\u0007\t\u0000\u0000\u1816\u04ec\u0001\u0000\u0000\u0000\u1817"+ - "\u1818\u0007\u001e\u0000\u0000\u1818\u1819\u0007\u0016\u0000\u0000\u1819"+ - "\u181a\u0007\t\u0000\u0000\u181a\u181b\u0007\u0010\u0000\u0000\u181b\u181c"+ - "\u0007\u0011\u0000\u0000\u181c\u181d\u0007\u0019\u0000\u0000\u181d\u181e"+ - "\u0007\b\u0000\u0000\u181e\u181f\u0005_\u0000\u0000\u181f\u1820\u0007"+ - "\u0011\u0000\u0000\u1820\u1821\u0007\u0007\u0000\u0000\u1821\u1822\u0007"+ - "\u0010\u0000\u0000\u1822\u1823\u0007\n\u0000\u0000\u1823\u1824\u0007\r"+ - "\u0000\u0000\u1824\u1825\u0007\u001b\u0000\u0000\u1825\u1826\u0007\u0005"+ - "\u0000\u0000\u1826\u1827\u0007\u0006\u0000\u0000\u1827\u04ee\u0001\u0000"+ - "\u0000\u0000\u1828\u1829\u0007\u000f\u0000\u0000\u1829\u182a\u0007\u0005"+ - "\u0000\u0000\u182a\u182b\u0007\u0015\u0000\u0000\u182b\u182c\u0007\n\u0000"+ - "\u0000\u182c\u182d\u0005_\u0000\u0000\u182d\u182e\u0007\f\u0000\u0000"+ - "\u182e\u182f\u0007\u0005\u0000\u0000\u182f\u1830\u0007\u0010\u0000\u0000"+ - "\u1830\u1831\u0007\n\u0000\u0000\u1831\u04f0\u0001\u0000\u0000\u0000\u1832"+ - "\u1833\u0007\u000f\u0000\u0000\u1833\u1834\u0007\u0005\u0000\u0000\u1834"+ - "\u1835\u0007\u0015\u0000\u0000\u1835\u1836\u0007\n\u0000\u0000\u1836\u1837"+ - "\u0005_\u0000\u0000\u1837\u1838\u0007\u0011\u0000\u0000\u1838\u1839\u0007"+ - "\u0007\u0000\u0000\u1839\u183a\u0007\u0010\u0000\u0000\u183a\u183b\u0007"+ - "\n\u0000\u0000\u183b\u183c\u0007\r\u0000\u0000\u183c\u183d\u0007\u001b"+ - "\u0000\u0000\u183d\u183e\u0007\u0005\u0000\u0000\u183e\u183f\u0007\u0006"+ - "\u0000\u0000\u183f\u04f2\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\u04f4\u0001\u0000\u0000\u0000\u184a\u184b\u0007\u000f\u0000\u0000"+ - "\u184b\u184c\u0007\u0005\u0000\u0000\u184c\u184d\u0007\u0015\u0000\u0000"+ - "\u184d\u184e\u0007\n\u0000\u0000\u184e\u184f\u0005_\u0000\u0000\u184f"+ - "\u1850\u0007\u0010\u0000\u0000\u1850\u1851\u0007\u0011\u0000\u0000\u1851"+ - "\u1852\u0007\u000f\u0000\u0000\u1852\u1853\u0007\n\u0000\u0000\u1853\u1854"+ - "\u0007\t\u0000\u0000\u1854\u1855\u0007\u0010\u0000\u0000\u1855\u1856\u0007"+ - "\u0005\u0000\u0000\u1856\u1857\u0007\u000f\u0000\u0000\u1857\u1858\u0007"+ - "\u0018\u0000\u0000\u1858\u04f6\u0001\u0000\u0000\u0000\u1859\u185a\u0007"+ - "\u000f\u0000\u0000\u185a\u185b\u0007\u0005\u0000\u0000\u185b\u185c\u0007"+ - "\u0015\u0000\u0000\u185c\u185d\u0007\n\u0000\u0000\u185d\u185e\u0005_"+ - "\u0000\u0000\u185e\u185f\u0007\u0010\u0000\u0000\u185f\u1860\u0007\u0011"+ - "\u0000\u0000\u1860\u1861\u0007\u000f\u0000\u0000\u1861\u1862\u0007\n\u0000"+ - "\u0000\u1862\u1863\u0007\t\u0000\u0000\u1863\u1864\u0007\u0010\u0000\u0000"+ - "\u1864\u1865\u0007\u0005\u0000\u0000\u1865\u1866\u0007\u000f\u0000\u0000"+ - "\u1866\u1867\u0007\u0018\u0000\u0000\u1867\u1868\u0007\u0010\u0000\u0000"+ - "\u1868\u1869\u0007\u000b\u0000\u0000\u1869\u04f8\u0001\u0000\u0000\u0000"+ - "\u186a\u186b\u0007\u0007\u0000\u0000\u186b\u186c\u0007\u0013\u0000\u0000"+ - "\u186c\u186d\u0007\u001c\u0000\u0000\u186d\u04fa\u0001\u0000\u0000\u0000"+ - "\u186e\u186f\u0007\t\u0000\u0000\u186f\u1870\u0007\u0010\u0000\u0000\u1870"+ - "\u1871\u0007\u0005\u0000\u0000\u1871\u1872\u0007\u0010\u0000\u0000\u1872"+ - "\u1873\u0007\n\u0000\u0000\u1873\u1874\u0007\u000f\u0000\u0000\u1874\u1875"+ - "\u0007\n\u0000\u0000\u1875\u1876\u0007\u0007\u0000\u0000\u1876\u1877\u0007"+ - "\u0010\u0000\u0000\u1877\u1878\u0005_\u0000\u0000\u1878\u1879\u0007\u0010"+ - "\u0000\u0000\u1879\u187a\u0007\u0011\u0000\u0000\u187a\u187b\u0007\u000f"+ - "\u0000\u0000\u187b\u187c\u0007\n\u0000\u0000\u187c\u187d\u0007\t\u0000"+ - "\u0000\u187d\u187e\u0007\u0010\u0000\u0000\u187e\u187f\u0007\u0005\u0000"+ - "\u0000\u187f\u1880\u0007\u000f\u0000\u0000\u1880\u1881\u0007\u0018\u0000"+ - "\u0000\u1881\u04fc\u0001\u0000\u0000\u0000\u1882\u1883\u0007\u0010\u0000"+ - "\u0000\u1883\u1884\u0007\u0011\u0000\u0000\u1884\u1885\u0007\u000f\u0000"+ - "\u0000\u1885\u1886\u0007\n\u0000\u0000\u1886\u1887\u0007\u0013\u0000\u0000"+ - "\u1887\u1888\u0007\u0019\u0000\u0000\u1888\u1889\u0007\f\u0000\u0000\u1889"+ - "\u188a\u0007\u0005\u0000\u0000\u188a\u188b\u0007\b\u0000\u0000\u188b\u04fe"+ - "\u0001\u0000\u0000\u0000\u188c\u188d\u0007\u0010\u0000\u0000\u188d\u188e"+ - "\u0007\r\u0000\u0000\u188e\u188f\u0007\u0005\u0000\u0000\u188f\u1890\u0007"+ - "\u0007\u0000\u0000\u1890\u1891\u0007\t\u0000\u0000\u1891\u1892\u0007\u0005"+ - "\u0000\u0000\u1892\u1893\u0007\u000e\u0000\u0000\u1893\u1894\u0007\u0010"+ - "\u0000\u0000\u1894\u1895\u0007\u0011\u0000\u0000\u1895\u1896\u0007\u0013"+ - "\u0000\u0000\u1896\u1897\u0007\u0007\u0000\u0000\u1897\u1898\u0005_\u0000"+ - "\u0000\u1898\u1899\u0007\u0010\u0000\u0000\u1899\u189a\u0007\u0011\u0000"+ - "\u0000\u189a\u189b\u0007\u000f\u0000\u0000\u189b\u189c\u0007\n\u0000\u0000"+ - "\u189c\u189d\u0007\t\u0000\u0000\u189d\u189e\u0007\u0010\u0000\u0000\u189e"+ - "\u189f\u0007\u0005\u0000\u0000\u189f\u18a0\u0007\u000f\u0000\u0000\u18a0"+ - "\u18a1\u0007\u0018\u0000\u0000\u18a1\u0500\u0001\u0000\u0000\u0000\u18a2"+ - "\u18a3\u0007\u0010\u0000\u0000\u18a3\u18a4\u0007\u0013\u0000\u0000\u18a4"+ - "\u18a5\u0005_\u0000\u0000\u18a5\u18a6\u0007\u0010\u0000\u0000\u18a6\u18a7"+ - "\u0007\u0011\u0000\u0000\u18a7\u18a8\u0007\u000f\u0000\u0000\u18a8\u18a9"+ - "\u0007\n\u0000\u0000\u18a9\u18aa\u0007\t\u0000\u0000\u18aa\u18ab\u0007"+ - "\u0010\u0000\u0000\u18ab\u18ac\u0007\u0005\u0000\u0000\u18ac\u18ad\u0007"+ - "\u000f\u0000\u0000\u18ad\u18ae\u0007\u0018\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\u000e"+ - "\u0000\u0000\u18b3\u18b4\u0007\u0014\u0000\u0000\u18b4\u18b5\u0007\u0005"+ - "\u0000\u0000\u18b5\u18b6\u0007\r\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\f\u0000\u0000"+ - "\u18bb\u18bc\u0007\u0005\u0000\u0000\u18bc\u18bd\u0007\u0010\u0000\u0000"+ - "\u18bd\u18be\u0007\n\u0000\u0000\u18be\u0506\u0001\u0000\u0000\u0000\u18bf"+ - "\u18c0\u0007\u0010\u0000\u0000\u18c0\u18c1\u0007\u0013\u0000\u0000\u18c1"+ - "\u18c2\u0005_\u0000\u0000\u18c2\u18c3\u0007\u0007\u0000\u0000\u18c3\u18c4"+ - "\u0007\u0016\u0000\u0000\u18c4\u18c5\u0007\u000f\u0000\u0000\u18c5\u18c6"+ - "\u0007\u0012\u0000\u0000\u18c6\u18c7\u0007\n\u0000\u0000\u18c7\u18c8\u0007"+ - "\r\u0000\u0000\u18c8\u0508\u0001\u0000\u0000\u0000\u18c9\u18cd\u0003\u050b"+ - "\u0283\u0000\u18ca\u18cc\u0003\u050d\u0284\u0000\u18cb\u18ca\u0001\u0000"+ - "\u0000\u0000\u18cc\u18cf\u0001\u0000\u0000\u0000\u18cd\u18cb\u0001\u0000"+ - "\u0000\u0000\u18cd\u18ce\u0001\u0000\u0000\u0000\u18ce\u050a\u0001\u0000"+ - "\u0000\u0000\u18cf\u18cd\u0001\u0000\u0000\u0000\u18d0\u18d7\u0007\u001f"+ - "\u0000\u0000\u18d1\u18d2\u0007 \u0000\u0000\u18d2\u18d7\u0004\u0283\u0006"+ - "\u0000\u18d3\u18d4\u0007!\u0000\u0000\u18d4\u18d5\u0007\"\u0000\u0000"+ - "\u18d5\u18d7\u0004\u0283\u0007\u0000\u18d6\u18d0\u0001\u0000\u0000\u0000"+ - "\u18d6\u18d1\u0001\u0000\u0000\u0000\u18d6\u18d3\u0001\u0000\u0000\u0000"+ - "\u18d7\u050c\u0001\u0000\u0000\u0000\u18d8\u18db\u0003\u050f\u0285\u0000"+ - "\u18d9\u18db\u0005$\u0000\u0000\u18da\u18d8\u0001\u0000\u0000\u0000\u18da"+ - "\u18d9\u0001\u0000\u0000\u0000\u18db\u050e\u0001\u0000\u0000\u0000\u18dc"+ - "\u18df\u0003\u050b\u0283\u0000\u18dd\u18df\u0007\u0000\u0000\u0000\u18de"+ - "\u18dc\u0001\u0000\u0000\u0000\u18de\u18dd\u0001\u0000\u0000\u0000\u18df"+ - "\u0510\u0001\u0000\u0000\u0000\u18e0\u18e1\u0003\u0513\u0287\u0000\u18e1"+ - "\u18e2\u0005\"\u0000\u0000\u18e2\u0512\u0001\u0000\u0000\u0000\u18e3\u18e9"+ - "\u0005\"\u0000\u0000\u18e4\u18e5\u0005\"\u0000\u0000\u18e5\u18e8\u0005"+ - "\"\u0000\u0000\u18e6\u18e8\b#\u0000\u0000\u18e7\u18e4\u0001\u0000\u0000"+ - "\u0000\u18e7\u18e6\u0001\u0000\u0000\u0000\u18e8\u18eb\u0001\u0000\u0000"+ - "\u0000\u18e9\u18e7\u0001\u0000\u0000\u0000\u18e9\u18ea\u0001\u0000\u0000"+ - "\u0000\u18ea\u0514\u0001\u0000\u0000\u0000\u18eb\u18e9\u0001\u0000\u0000"+ - "\u0000\u18ec\u18ed\u0003\u0517\u0289\u0000\u18ed\u18ee\u0005\"\u0000\u0000"+ - "\u18ee\u0516\u0001\u0000\u0000\u0000\u18ef\u18f5\u0005\"\u0000\u0000\u18f0"+ - "\u18f1\u0005\"\u0000\u0000\u18f1\u18f4\u0005\"\u0000\u0000\u18f2\u18f4"+ - "\b$\u0000\u0000\u18f3\u18f0\u0001\u0000\u0000\u0000\u18f3\u18f2\u0001"+ - "\u0000\u0000\u0000\u18f4\u18f7\u0001\u0000\u0000\u0000\u18f5\u18f3\u0001"+ - "\u0000\u0000\u0000\u18f5\u18f6\u0001\u0000\u0000\u0000\u18f6\u0518\u0001"+ - "\u0000\u0000\u0000\u18f7\u18f5\u0001\u0000\u0000\u0000\u18f8\u18f9\u0007"+ - "\u0016\u0000\u0000\u18f9\u18fa\u0005&\u0000\u0000\u18fa\u18fb\u0003\u0511"+ - "\u0286\u0000\u18fb\u051a\u0001\u0000\u0000\u0000\u18fc\u18fd\u0007\u0016"+ - "\u0000\u0000\u18fd\u18fe\u0005&\u0000\u0000\u18fe\u18ff\u0003\u0513\u0287"+ - "\u0000\u18ff\u051c\u0001\u0000\u0000\u0000\u1900\u1901\u0007\u0016\u0000"+ - "\u0000\u1901\u1902\u0005&\u0000\u0000\u1902\u1903\u0003\u0515\u0288\u0000"+ - "\u1903\u051e\u0001\u0000\u0000\u0000\u1904\u1905\u0007\u0016\u0000\u0000"+ - "\u1905\u1906\u0005&\u0000\u0000\u1906\u1907\u0003\u0517\u0289\u0000\u1907"+ - "\u0520\u0001\u0000\u0000\u0000\u1908\u1909\u0003\u0523\u028f\u0000\u1909"+ - "\u190a\u0005\'\u0000\u0000\u190a\u0522\u0001\u0000\u0000\u0000\u190b\u1911"+ - "\u0005\'\u0000\u0000\u190c\u190d\u0005\'\u0000\u0000\u190d\u1910\u0005"+ - "\'\u0000\u0000\u190e\u1910\b%\u0000\u0000\u190f\u190c\u0001\u0000\u0000"+ - "\u0000\u190f\u190e\u0001\u0000\u0000\u0000\u1910\u1913\u0001\u0000\u0000"+ - "\u0000\u1911\u190f\u0001\u0000\u0000\u0000\u1911\u1912\u0001\u0000\u0000"+ - "\u0000\u1912\u0524\u0001\u0000\u0000\u0000\u1913\u1911\u0001\u0000\u0000"+ - "\u0000\u1914\u1915\u0007\n\u0000\u0000\u1915\u1916\u0005\'\u0000\u0000"+ - "\u1916\u1917\u0001\u0000\u0000\u0000\u1917\u1918\u0006\u0290\u0002\u0000"+ - "\u1918\u1919\u0006\u0290\u0003\u0000\u1919\u0526\u0001\u0000\u0000\u0000"+ - "\u191a\u191b\u0003\u0529\u0292\u0000\u191b\u191c\u0005\'\u0000\u0000\u191c"+ - "\u0528\u0001\u0000\u0000\u0000\u191d\u191e\u0007\u0016\u0000\u0000\u191e"+ - "\u191f\u0005&\u0000\u0000\u191f\u1920\u0003\u0523\u028f\u0000\u1920\u052a"+ - "\u0001\u0000\u0000\u0000\u1921\u1923\u0005$\u0000\u0000\u1922\u1924\u0003"+ - "\u052d\u0294\u0000\u1923\u1922\u0001\u0000\u0000\u0000\u1923\u1924\u0001"+ - "\u0000\u0000\u0000\u1924\u1925\u0001\u0000\u0000\u0000\u1925\u1926\u0005"+ - "$\u0000\u0000\u1926\u1927\u0006\u0293\u0004\u0000\u1927\u1928\u0001\u0000"+ - "\u0000\u0000\u1928\u1929\u0006\u0293\u0005\u0000\u1929\u052c\u0001\u0000"+ - "\u0000\u0000\u192a\u192e\u0003\u050b\u0283\u0000\u192b\u192d\u0003\u050f"+ - "\u0285\u0000\u192c\u192b\u0001\u0000\u0000\u0000\u192d\u1930\u0001\u0000"+ - "\u0000\u0000\u192e\u192c\u0001\u0000\u0000\u0000\u192e\u192f\u0001\u0000"+ - "\u0000\u0000\u192f\u052e\u0001\u0000\u0000\u0000\u1930\u192e\u0001\u0000"+ - "\u0000\u0000\u1931\u1932\u0003\u0531\u0296\u0000\u1932\u1933\u0005\'\u0000"+ - "\u0000\u1933\u0530\u0001\u0000\u0000\u0000\u1934\u1935\u0007\u0012\u0000"+ - "\u0000\u1935\u1939\u0005\'\u0000\u0000\u1936\u1938\u0007&\u0000\u0000"+ - "\u1937\u1936\u0001\u0000\u0000\u0000\u1938\u193b\u0001\u0000\u0000\u0000"+ - "\u1939\u1937\u0001\u0000\u0000\u0000\u1939\u193a\u0001\u0000\u0000\u0000"+ - "\u193a\u0532\u0001\u0000\u0000\u0000\u193b\u1939\u0001\u0000\u0000\u0000"+ - "\u193c\u193d\u0003\u0535\u0298\u0000\u193d\u193e\u0005\'\u0000\u0000\u193e"+ - "\u0534\u0001\u0000\u0000\u0000\u193f\u1940\u0007\u0012\u0000\u0000\u1940"+ - "\u1941\u0003\u0523\u028f\u0000\u1941\u0536\u0001\u0000\u0000\u0000\u1942"+ - "\u1943\u0003\u0539\u029a\u0000\u1943\u1944\u0005\'\u0000\u0000\u1944\u0538"+ - "\u0001\u0000\u0000\u0000\u1945\u1946\u0007\u001a\u0000\u0000\u1946\u194a"+ - "\u0005\'\u0000\u0000\u1947\u1949\u0007\'\u0000\u0000\u1948\u1947\u0001"+ - "\u0000\u0000\u0000\u1949\u194c\u0001\u0000\u0000\u0000\u194a\u1948\u0001"+ - "\u0000\u0000\u0000\u194a\u194b\u0001\u0000\u0000\u0000\u194b\u053a\u0001"+ - "\u0000\u0000\u0000\u194c\u194a\u0001\u0000\u0000\u0000\u194d\u194e\u0003"+ - "\u053d\u029c\u0000\u194e\u194f\u0005\'\u0000\u0000\u194f\u053c\u0001\u0000"+ - "\u0000\u0000\u1950\u1951\u0007\u001a\u0000\u0000\u1951\u1952\u0003\u0523"+ - "\u028f\u0000\u1952\u053e\u0001\u0000\u0000\u0000\u1953\u1954\u0003\u0545"+ - "\u02a0\u0000\u1954\u0540\u0001\u0000\u0000\u0000\u1955\u1956\u0003\u0545"+ - "\u02a0\u0000\u1956\u1957\u0005.\u0000\u0000\u1957\u1958\u0005.\u0000\u0000"+ - "\u1958\u1959\u0001\u0000\u0000\u0000\u1959\u195a\u0006\u029e\u0006\u0000"+ - "\u195a\u0542\u0001\u0000\u0000\u0000\u195b\u195c\u0003\u0545\u02a0\u0000"+ - "\u195c\u195e\u0005.\u0000\u0000\u195d\u195f\u0003\u0545\u02a0\u0000\u195e"+ - "\u195d\u0001\u0000\u0000\u0000\u195e\u195f\u0001\u0000\u0000\u0000\u195f"+ - "\u1965\u0001\u0000\u0000\u0000\u1960\u1962\u0007\n\u0000\u0000\u1961\u1963"+ - "\u0007\u0001\u0000\u0000\u1962\u1961\u0001\u0000\u0000\u0000\u1962\u1963"+ - "\u0001\u0000\u0000\u0000\u1963\u1964\u0001\u0000\u0000\u0000\u1964\u1966"+ - "\u0003\u0545\u02a0\u0000\u1965\u1960\u0001\u0000\u0000\u0000\u1965\u1966"+ - "\u0001\u0000\u0000\u0000\u1966\u1978\u0001\u0000\u0000\u0000\u1967\u1968"+ - "\u0005.\u0000\u0000\u1968\u196e\u0003\u0545\u02a0\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\u196f\u0003\u0545\u02a0\u0000\u196e\u1969\u0001\u0000"+ - "\u0000\u0000\u196e\u196f\u0001\u0000\u0000\u0000\u196f\u1978\u0001\u0000"+ - "\u0000\u0000\u1970\u1971\u0003\u0545\u02a0\u0000\u1971\u1973\u0007\n\u0000"+ - "\u0000\u1972\u1974\u0007\u0001\u0000\u0000\u1973\u1972\u0001\u0000\u0000"+ - "\u0000\u1973\u1974\u0001\u0000\u0000\u0000\u1974\u1975\u0001\u0000\u0000"+ - "\u0000\u1975\u1976\u0003\u0545\u02a0\u0000\u1976\u1978\u0001\u0000\u0000"+ - "\u0000\u1977\u195b\u0001\u0000\u0000\u0000\u1977\u1967\u0001\u0000\u0000"+ - "\u0000\u1977\u1970\u0001\u0000\u0000\u0000\u1978\u0544\u0001\u0000\u0000"+ - "\u0000\u1979\u197b\u0007\u0000\u0000\u0000\u197a\u1979\u0001\u0000\u0000"+ - "\u0000\u197b\u197c\u0001\u0000\u0000\u0000\u197c\u197a\u0001\u0000\u0000"+ - "\u0000\u197c\u197d\u0001\u0000\u0000\u0000\u197d\u0546\u0001\u0000\u0000"+ - "\u0000\u197e\u197f\u0005:\u0000\u0000\u197f\u1983\u0007(\u0000\u0000\u1980"+ - "\u1982\u0007)\u0000\u0000\u1981\u1980\u0001\u0000\u0000\u0000\u1982\u1985"+ - "\u0001\u0000\u0000\u0000\u1983\u1981\u0001\u0000\u0000\u0000\u1983\u1984"+ - "\u0001\u0000\u0000\u0000\u1984\u0548\u0001\u0000\u0000\u0000\u1985\u1983"+ - "\u0001\u0000\u0000\u0000\u1986\u1987\u0005:\u0000\u0000\u1987\u1988\u0005"+ - "\"\u0000\u0000\u1988\u1990\u0001\u0000\u0000\u0000\u1989\u198a\u0005\\"+ - "\u0000\u0000\u198a\u198f\t\u0000\u0000\u0000\u198b\u198c\u0005\"\u0000"+ - "\u0000\u198c\u198f\u0005\"\u0000\u0000\u198d\u198f\b*\u0000\u0000\u198e"+ - "\u1989\u0001\u0000\u0000\u0000\u198e\u198b\u0001\u0000\u0000\u0000\u198e"+ - "\u198d\u0001\u0000\u0000\u0000\u198f\u1992\u0001\u0000\u0000\u0000\u1990"+ - "\u198e\u0001\u0000\u0000\u0000\u1990\u1991\u0001\u0000\u0000\u0000\u1991"+ - "\u1993\u0001\u0000\u0000\u0000\u1992\u1990\u0001\u0000\u0000\u0000\u1993"+ - "\u1994\u0005\"\u0000\u0000\u1994\u054a\u0001\u0000\u0000\u0000\u1995\u1997"+ - "\u0007+\u0000\u0000\u1996\u1995\u0001\u0000\u0000\u0000\u1997\u1998\u0001"+ - "\u0000\u0000\u0000\u1998\u1996\u0001\u0000\u0000\u0000\u1998\u1999\u0001"+ - "\u0000\u0000\u0000\u1999\u199a\u0001\u0000\u0000\u0000\u199a\u199b\u0006"+ - "\u02a3\u0007\u0000\u199b\u054c\u0001\u0000\u0000\u0000\u199c\u199e\u0005"+ - "\r\u0000\u0000\u199d\u199f\u0005\n\u0000\u0000\u199e\u199d\u0001\u0000"+ - "\u0000\u0000\u199e\u199f\u0001\u0000\u0000\u0000\u199f\u19a2\u0001\u0000"+ - "\u0000\u0000\u19a0\u19a2\u0005\n\u0000\u0000\u19a1\u199c\u0001\u0000\u0000"+ - "\u0000\u19a1\u19a0\u0001\u0000\u0000\u0000\u19a2\u19a3\u0001\u0000\u0000"+ - "\u0000\u19a3\u19a4\u0006\u02a4\u0007\u0000\u19a4\u054e\u0001\u0000\u0000"+ - "\u0000\u19a5\u19a6\u0005-\u0000\u0000\u19a6\u19a7\u0005-\u0000\u0000\u19a7"+ - "\u19ab\u0001\u0000\u0000\u0000\u19a8\u19aa\b,\u0000\u0000\u19a9\u19a8"+ - "\u0001\u0000\u0000\u0000\u19aa\u19ad\u0001\u0000\u0000\u0000\u19ab\u19a9"+ - "\u0001\u0000\u0000\u0000\u19ab\u19ac\u0001\u0000\u0000\u0000\u19ac\u19ae"+ - "\u0001\u0000\u0000\u0000\u19ad\u19ab\u0001\u0000\u0000\u0000\u19ae\u19af"+ - "\u0006\u02a5\u0007\u0000\u19af\u0550\u0001\u0000\u0000\u0000\u19b0\u19b1"+ - "\u0005/\u0000\u0000\u19b1\u19b2\u0005*\u0000\u0000\u19b2\u19c9\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\u19c8\u0003\u0551\u02a6"+ - "\u0000\u19ba\u19c8\b-\u0000\u0000\u19bb\u19bd\u0005/\u0000\u0000\u19bc"+ - "\u19bb\u0001\u0000\u0000\u0000\u19bd\u19be\u0001\u0000\u0000\u0000\u19be"+ - "\u19bc\u0001\u0000\u0000\u0000\u19be\u19bf\u0001\u0000\u0000\u0000\u19bf"+ - "\u19c0\u0001\u0000\u0000\u0000\u19c0\u19c8\b-\u0000\u0000\u19c1\u19c3"+ - "\u0005*\u0000\u0000\u19c2\u19c1\u0001\u0000\u0000\u0000\u19c3\u19c4\u0001"+ - "\u0000\u0000\u0000\u19c4\u19c2\u0001\u0000\u0000\u0000\u19c4\u19c5\u0001"+ - "\u0000\u0000\u0000\u19c5\u19c6\u0001\u0000\u0000\u0000\u19c6\u19c8\b-"+ - "\u0000\u0000\u19c7\u19b6\u0001\u0000\u0000\u0000\u19c7\u19ba\u0001\u0000"+ - "\u0000\u0000\u19c7\u19bc\u0001\u0000\u0000\u0000\u19c7\u19c2\u0001\u0000"+ - "\u0000\u0000\u19c8\u19cb\u0001\u0000\u0000\u0000\u19c9\u19c7\u0001\u0000"+ - "\u0000\u0000\u19c9\u19ca\u0001\u0000\u0000\u0000\u19ca\u19cf\u0001\u0000"+ - "\u0000\u0000\u19cb\u19c9\u0001\u0000\u0000\u0000\u19cc\u19ce\u0005*\u0000"+ - "\u0000\u19cd\u19cc\u0001\u0000\u0000\u0000\u19ce\u19d1\u0001\u0000\u0000"+ - "\u0000\u19cf\u19cd\u0001\u0000\u0000\u0000\u19cf\u19d0\u0001\u0000\u0000"+ - "\u0000\u19d0\u19d2\u0001\u0000\u0000\u0000\u19d1\u19cf\u0001\u0000\u0000"+ - "\u0000\u19d2\u19d3\u0005*\u0000\u0000\u19d3\u19d4\u0005/\u0000\u0000\u19d4"+ - "\u19d5\u0001\u0000\u0000\u0000\u19d5\u19d6\u0006\u02a6\u0007\u0000\u19d6"+ - "\u0552\u0001\u0000\u0000\u0000\u19d7\u19d8\u0005/\u0000\u0000\u19d8\u19d9"+ - "\u0005*\u0000\u0000\u19d9\u19f2\u0001\u0000\u0000\u0000\u19da\u19dc\u0005"+ - "/\u0000\u0000\u19db\u19da\u0001\u0000\u0000\u0000\u19dc\u19df\u0001\u0000"+ - "\u0000\u0000\u19dd\u19db\u0001\u0000\u0000\u0000\u19dd\u19de\u0001\u0000"+ - "\u0000\u0000\u19de\u19e0\u0001\u0000\u0000\u0000\u19df\u19dd\u0001\u0000"+ - "\u0000\u0000\u19e0\u19f1\u0003\u0551\u02a6\u0000\u19e1\u19f1\b-\u0000"+ - "\u0000\u19e2\u19e4\u0005/\u0000\u0000\u19e3\u19e2\u0001\u0000\u0000\u0000"+ - "\u19e4\u19e5\u0001\u0000\u0000\u0000\u19e5\u19e3\u0001\u0000\u0000\u0000"+ - "\u19e5\u19e6\u0001\u0000\u0000\u0000\u19e6\u19e7\u0001\u0000\u0000\u0000"+ - "\u19e7\u19ef\b-\u0000\u0000\u19e8\u19ea\u0005*\u0000\u0000\u19e9\u19e8"+ - "\u0001\u0000\u0000\u0000\u19ea\u19eb\u0001\u0000\u0000\u0000\u19eb\u19e9"+ - "\u0001\u0000\u0000\u0000\u19eb\u19ec\u0001\u0000\u0000\u0000\u19ec\u19ed"+ - "\u0001\u0000\u0000\u0000\u19ed\u19ef\b-\u0000\u0000\u19ee\u19e3\u0001"+ - "\u0000\u0000\u0000\u19ee\u19e9\u0001\u0000\u0000\u0000\u19ef\u19f1\u0001"+ - "\u0000\u0000\u0000\u19f0\u19dd\u0001\u0000\u0000\u0000\u19f0\u19e1\u0001"+ - "\u0000\u0000\u0000\u19f0\u19ee\u0001\u0000\u0000\u0000\u19f1\u19f4\u0001"+ - "\u0000\u0000\u0000\u19f2\u19f0\u0001\u0000\u0000\u0000\u19f2\u19f3\u0001"+ - "\u0000\u0000\u0000\u19f3\u1a06\u0001\u0000\u0000\u0000\u19f4\u19f2\u0001"+ - "\u0000\u0000\u0000\u19f5\u19f7\u0005/\u0000\u0000\u19f6\u19f5\u0001\u0000"+ - "\u0000\u0000\u19f7\u19f8\u0001\u0000\u0000\u0000\u19f8\u19f6\u0001\u0000"+ - "\u0000\u0000\u19f8\u19f9\u0001\u0000\u0000\u0000\u19f9\u1a07\u0001\u0000"+ - "\u0000\u0000\u19fa\u19fc\u0005*\u0000\u0000\u19fb\u19fa\u0001\u0000\u0000"+ - "\u0000\u19fc\u19fd\u0001\u0000\u0000\u0000\u19fd\u19fb\u0001\u0000\u0000"+ - "\u0000\u19fd\u19fe\u0001\u0000\u0000\u0000\u19fe\u1a07\u0001\u0000\u0000"+ - "\u0000\u19ff\u1a01\u0005/\u0000\u0000\u1a00\u19ff\u0001\u0000\u0000\u0000"+ - "\u1a01\u1a04\u0001\u0000\u0000\u0000\u1a02\u1a00\u0001\u0000\u0000\u0000"+ - "\u1a02\u1a03\u0001\u0000\u0000\u0000\u1a03\u1a05\u0001\u0000\u0000\u0000"+ - "\u1a04\u1a02\u0001\u0000\u0000\u0000\u1a05\u1a07\u0003\u0553\u02a7\u0000"+ - "\u1a06\u19f6\u0001\u0000\u0000\u0000\u1a06\u19fb\u0001\u0000\u0000\u0000"+ - "\u1a06\u1a02\u0001\u0000\u0000\u0000\u1a06\u1a07\u0001\u0000\u0000\u0000"+ - "\u1a07\u1a08\u0001\u0000\u0000\u0000\u1a08\u1a09\u0006\u02a7\b\u0000\u1a09"+ - "\u0554\u0001\u0000\u0000\u0000\u1a0a\u1a16\u0005\\\u0000\u0000\u1a0b\u1a15"+ - "\b.\u0000\u0000\u1a0c\u1a10\u0005\"\u0000\u0000\u1a0d\u1a0f\b/\u0000\u0000"+ - "\u1a0e\u1a0d\u0001\u0000\u0000\u0000\u1a0f\u1a12\u0001\u0000\u0000\u0000"+ - "\u1a10\u1a0e\u0001\u0000\u0000\u0000\u1a10\u1a11\u0001\u0000\u0000\u0000"+ - "\u1a11\u1a13\u0001\u0000\u0000\u0000\u1a12\u1a10\u0001\u0000\u0000\u0000"+ - "\u1a13\u1a15\u0005\"\u0000\u0000\u1a14\u1a0b\u0001\u0000\u0000\u0000\u1a14"+ - "\u1a0c\u0001\u0000\u0000\u0000\u1a15\u1a18\u0001\u0000\u0000\u0000\u1a16"+ - "\u1a14\u0001\u0000\u0000\u0000\u1a16\u1a17\u0001\u0000\u0000\u0000\u1a17"+ - "\u1a20\u0001\u0000\u0000\u0000\u1a18\u1a16\u0001\u0000\u0000\u0000\u1a19"+ - "\u1a1d\u0005\"\u0000\u0000\u1a1a\u1a1c\b/\u0000\u0000\u1a1b\u1a1a\u0001"+ - "\u0000\u0000\u0000\u1a1c\u1a1f\u0001\u0000\u0000\u0000\u1a1d\u1a1b\u0001"+ - "\u0000\u0000\u0000\u1a1d\u1a1e\u0001\u0000\u0000\u0000\u1a1e\u1a21\u0001"+ - "\u0000\u0000\u0000\u1a1f\u1a1d\u0001\u0000\u0000\u0000\u1a20\u1a19\u0001"+ - "\u0000\u0000\u0000\u1a20\u1a21\u0001\u0000\u0000\u0000\u1a21\u0556\u0001"+ - "\u0000\u0000\u0000\u1a22\u1a23\u0005\\\u0000\u0000\u1a23\u1a24\u0005\\"+ - "\u0000\u0000\u1a24\u0558\u0001\u0000\u0000\u0000\u1a25\u1a26\t\u0000\u0000"+ - "\u0000\u1a26\u055a\u0001\u0000\u0000\u0000\u1a27\u1a28\u0003\u055f\u02ad"+ - "\u0000\u1a28\u1a29\u0005\'\u0000\u0000\u1a29\u1a2a\u0001\u0000\u0000\u0000"+ - "\u1a2a\u1a2b\u0006\u02ab\t\u0000\u1a2b\u055c\u0001\u0000\u0000\u0000\u1a2c"+ - "\u1a2e\u0003\u055f\u02ad\u0000\u1a2d\u1a2f\u0005\\\u0000\u0000\u1a2e\u1a2d"+ - "\u0001\u0000\u0000\u0000\u1a2e\u1a2f\u0001\u0000\u0000\u0000\u1a2f\u1a30"+ - "\u0001\u0000\u0000\u0000\u1a30\u1a31\u0005\u0000\u0000\u0001\u1a31\u055e"+ - "\u0001\u0000\u0000\u0000\u1a32\u1a33\u0005\'\u0000\u0000\u1a33\u1a4a\u0005"+ - "\'\u0000\u0000\u1a34\u1a46\u0005\\\u0000\u0000\u1a35\u1a36\u0005x\u0000"+ - "\u0000\u1a36\u1a47\u0007\'\u0000\u0000\u1a37\u1a38\u0005u\u0000\u0000"+ - "\u1a38\u1a39\u0007\'\u0000\u0000\u1a39\u1a3a\u0007\'\u0000\u0000\u1a3a"+ - "\u1a3b\u0007\'\u0000\u0000\u1a3b\u1a47\u0007\'\u0000\u0000\u1a3c\u1a3d"+ - "\u0005U\u0000\u0000\u1a3d\u1a3e\u0007\'\u0000\u0000\u1a3e\u1a3f\u0007"+ - "\'\u0000\u0000\u1a3f\u1a40\u0007\'\u0000\u0000\u1a40\u1a41\u0007\'\u0000"+ - "\u0000\u1a41\u1a42\u0007\'\u0000\u0000\u1a42\u1a43\u0007\'\u0000\u0000"+ - "\u1a43\u1a44\u0007\'\u0000\u0000\u1a44\u1a47\u0007\'\u0000\u0000\u1a45"+ - "\u1a47\b0\u0000\u0000\u1a46\u1a35\u0001\u0000\u0000\u0000\u1a46\u1a37"+ - "\u0001\u0000\u0000\u0000\u1a46\u1a3c\u0001\u0000\u0000\u0000\u1a46\u1a45"+ - "\u0001\u0000\u0000\u0000\u1a47\u1a4a\u0001\u0000\u0000\u0000\u1a48\u1a4a"+ - "\b1\u0000\u0000\u1a49\u1a32\u0001\u0000\u0000\u0000\u1a49\u1a34\u0001"+ - "\u0000\u0000\u0000\u1a49\u1a48\u0001\u0000\u0000\u0000\u1a4a\u1a4d\u0001"+ - "\u0000\u0000\u0000\u1a4b\u1a49\u0001\u0000\u0000\u0000\u1a4b\u1a4c\u0001"+ - "\u0000\u0000\u0000\u1a4c\u0560\u0001\u0000\u0000\u0000\u1a4d\u1a4b\u0001"+ - "\u0000\u0000\u0000\u1a4e\u1a4f\u0003\u0565\u02b0\u0000\u1a4f\u1a50\u0005"+ - "\'\u0000\u0000\u1a50\u1a51\u0001\u0000\u0000\u0000\u1a51\u1a52\u0006\u02ae"+ - "\t\u0000\u1a52\u0562\u0001\u0000\u0000\u0000\u1a53\u1a55\u0003\u0565\u02b0"+ - "\u0000\u1a54\u1a56\u0005\\\u0000\u0000\u1a55\u1a54\u0001\u0000\u0000\u0000"+ - "\u1a55\u1a56\u0001\u0000\u0000\u0000\u1a56\u1a57\u0001\u0000\u0000\u0000"+ - "\u1a57\u1a58\u0005\u0000\u0000\u0001\u1a58\u0564\u0001\u0000\u0000\u0000"+ - "\u1a59\u1a5a\u0005\'\u0000\u0000\u1a5a\u1a5f\u0005\'\u0000\u0000\u1a5b"+ - "\u1a5c\u0005\\\u0000\u0000\u1a5c\u1a5f\t\u0000\u0000\u0000\u1a5d\u1a5f"+ - "\b1\u0000\u0000\u1a5e\u1a59\u0001\u0000\u0000\u0000\u1a5e\u1a5b\u0001"+ - "\u0000\u0000\u0000\u1a5e\u1a5d\u0001\u0000\u0000\u0000\u1a5f\u1a62\u0001"+ - "\u0000\u0000\u0000\u1a60\u1a5e\u0001\u0000\u0000\u0000\u1a60\u1a61\u0001"+ - "\u0000\u0000\u0000\u1a61\u0566\u0001\u0000\u0000\u0000\u1a62\u1a60\u0001"+ - "\u0000\u0000\u0000\u1a63\u1a64\u0003\u054b\u02a3\u0000\u1a64\u1a65\u0001"+ - "\u0000\u0000\u0000\u1a65\u1a66\u0006\u02b1\n\u0000\u1a66\u1a67\u0006\u02b1"+ - "\u0007\u0000\u1a67\u0568\u0001\u0000\u0000\u0000\u1a68\u1a69\u0003\u054d"+ - "\u02a4\u0000\u1a69\u1a6a\u0001\u0000\u0000\u0000\u1a6a\u1a6b\u0006\u02b2"+ - "\u000b\u0000\u1a6b\u1a6c\u0006\u02b2\u0007\u0000\u1a6c\u1a6d\u0006\u02b2"+ - "\f\u0000\u1a6d\u056a\u0001\u0000\u0000\u0000\u1a6e\u1a6f\u0006\u02b3\r"+ - "\u0000\u1a6f\u1a70\u0001\u0000\u0000\u0000\u1a70\u1a71\u0006\u02b3\u000e"+ - "\u0000\u1a71\u1a72\u0006\u02b3\u000f\u0000\u1a72\u056c\u0001\u0000\u0000"+ - "\u0000\u1a73\u1a74\u0003\u054b\u02a3\u0000\u1a74\u1a75\u0001\u0000\u0000"+ - "\u0000\u1a75\u1a76\u0006\u02b4\n\u0000\u1a76\u1a77\u0006\u02b4\u0007\u0000"+ - "\u1a77\u056e\u0001\u0000\u0000\u0000\u1a78\u1a79\u0003\u054d\u02a4\u0000"+ - "\u1a79\u1a7a\u0001\u0000\u0000\u0000\u1a7a\u1a7b\u0006\u02b5\u000b\u0000"+ - "\u1a7b\u1a7c\u0006\u02b5\u0007\u0000\u1a7c\u0570\u0001\u0000\u0000\u0000"+ - "\u1a7d\u1a7e\u0005\'\u0000\u0000\u1a7e\u1a7f\u0001\u0000\u0000\u0000\u1a7f"+ - "\u1a80\u0006\u02b6\u0002\u0000\u1a80\u1a81\u0006\u02b6\u0010\u0000\u1a81"+ - "\u0572\u0001\u0000\u0000\u0000\u1a82\u1a83\u0006\u02b7\u0011\u0000\u1a83"+ - "\u1a84\u0001\u0000\u0000\u0000\u1a84\u1a85\u0006\u02b7\u000e\u0000\u1a85"+ - "\u1a86\u0006\u02b7\u000f\u0000\u1a86\u0574\u0001\u0000\u0000\u0000\u1a87"+ - "\u1a89\b2\u0000\u0000\u1a88\u1a87\u0001\u0000\u0000\u0000\u1a89\u1a8a"+ - "\u0001\u0000\u0000\u0000\u1a8a\u1a88\u0001\u0000\u0000\u0000\u1a8a\u1a8b"+ - "\u0001\u0000\u0000\u0000\u1a8b\u1a94\u0001\u0000\u0000\u0000\u1a8c\u1a90"+ - "\u0005$\u0000\u0000\u1a8d\u1a8f\b2\u0000\u0000\u1a8e\u1a8d\u0001\u0000"+ - "\u0000\u0000\u1a8f\u1a92\u0001\u0000\u0000\u0000\u1a90\u1a8e\u0001\u0000"+ - "\u0000\u0000\u1a90\u1a91\u0001\u0000\u0000\u0000\u1a91\u1a94\u0001\u0000"+ - "\u0000\u0000\u1a92\u1a90\u0001\u0000\u0000\u0000\u1a93\u1a88\u0001\u0000"+ - "\u0000\u0000\u1a93\u1a8c\u0001\u0000\u0000\u0000\u1a94\u0576\u0001\u0000"+ - "\u0000\u0000\u1a95\u1a97\u0005$\u0000\u0000\u1a96\u1a98\u0003\u052d\u0294"+ - "\u0000\u1a97\u1a96\u0001\u0000\u0000\u0000\u1a97\u1a98\u0001\u0000\u0000"+ - "\u0000\u1a98\u1a99\u0001\u0000\u0000\u0000\u1a99\u1a9a\u0005$\u0000\u0000"+ - "\u1a9a\u1a9b\u0001\u0000\u0000\u0000\u1a9b\u1a9c\u0004\u02b9\b\u0000\u1a9c"+ - "\u1a9d\u0006\u02b9\u0012\u0000\u1a9d\u1a9e\u0001\u0000\u0000\u0000\u1a9e"+ - "\u1a9f\u0006\u02b9\u000f\u0000\u1a9f\u0578\u0001\u0000\u0000\u0000N\u0000"+ - "\u0001\u0002\u0003\u0004\u05bc\u05c2\u05c4\u05c9\u05cd\u05cf\u05d2\u05db"+ - "\u05dd\u05e2\u05e7\u05e9\u18cd\u18d6\u18da\u18de\u18e7\u18e9\u18f3\u18f5"+ - "\u190f\u1911\u1923\u192e\u1939\u194a\u195e\u1962\u1965\u196b\u196e\u1973"+ - "\u1977\u197c\u1983\u198e\u1990\u1998\u199e\u19a1\u19ab\u19b6\u19be\u19c4"+ - "\u19c7\u19c9\u19cf\u19dd\u19e5\u19eb\u19ee\u19f0\u19f2\u19f8\u19fd\u1a02"+ - "\u1a06\u1a10\u1a14\u1a16\u1a1d\u1a20\u1a2e\u1a46\u1a49\u1a4b\u1a55\u1a5e"+ - "\u1a60\u1a8a\u1a90\u1a93\u1a97\u0013\u0001\u001c\u0000\u0007\u001d\u0000"+ - "\u0003\u0000\u0000\u0005\u0001\u0000\u0001\u0293\u0001\u0005\u0004\u0000"+ - "\u0001\u029e\u0002\u0000\u0001\u0000\u0001\u02a7\u0003\u0002\u0002\u0000"+ - "\u0007\u029a\u0000\u0007\u029b\u0000\u0002\u0003\u0000\u0001\u02b3\u0004"+ - "\u0006\u0000\u0000\u0004\u0000\u0000\u0002\u0001\u0000\u0001\u02b7\u0005"+ - "\u0001\u02b9\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 3480397b09..0000000000 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens +++ /dev/null @@ -1,1320 +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 -ZVIEW=97 -TRAILING=98 -TRUE_P=99 -UNION=100 -UNIQUE=101 -USER=102 -USING=103 -VARIADIC=104 -WHEN=105 -WHERE=106 -WINDOW=107 -WITH=108 -AUTHORIZATION=109 -BINARY=110 -COLLATION=111 -CONCURRENTLY=112 -CROSS=113 -CURRENT_SCHEMA=114 -FREEZE=115 -FULL=116 -ILIKE=117 -INNER_P=118 -IS=119 -ISNULL=120 -JOIN=121 -LEFT=122 -LIKE=123 -NATURAL=124 -NOTNULL=125 -OUTER_P=126 -OVER=127 -OVERLAPS=128 -RIGHT=129 -SIMILAR=130 -VERBOSE=131 -ABORT_P=132 -ABSOLUTE_P=133 -ACCESS=134 -ACTION=135 -ADD_P=136 -ADMIN=137 -AFTER=138 -AGGREGATE=139 -ALSO=140 -ALTER=141 -ALWAYS=142 -ASSERTION=143 -ASSIGNMENT=144 -AT=145 -ATTRIBUTE=146 -BACKWARD=147 -BEFORE=148 -BEGIN_P=149 -BY=150 -CACHE=151 -CALLED=152 -CASCADE=153 -CASCADED=154 -CATALOG=155 -CHAIN=156 -CHARACTERISTICS=157 -CHECKPOINT=158 -CLASS=159 -CLOSE=160 -CLUSTER=161 -COMMENT=162 -COMMENTS=163 -COMMIT=164 -COMMITTED=165 -CONFIGURATION=166 -CONNECTION=167 -CONSTRAINTS=168 -CONTENT_P=169 -CONTINUE_P=170 -CONVERSION_P=171 -COPY=172 -COST=173 -CSV=174 -CURSOR=175 -CYCLE=176 -DATA_P=177 -DATABASE=178 -DAY_P=179 -DEALLOCATE=180 -DECLARE=181 -DEFAULTS=182 -DEFERRED=183 -DEFINER=184 -DELETE_P=185 -DELIMITER=186 -DELIMITERS=187 -DICTIONARY=188 -DISABLE_P=189 -DISCARD=190 -DOCUMENT_P=191 -DOMAIN_P=192 -DOUBLE_P=193 -DROP=194 -EACH=195 -ENABLE_P=196 -ENCODING=197 -ENCRYPTED=198 -ENUM_P=199 -ESCAPE=200 -EVENT=201 -EXCLUDE=202 -EXCLUDING=203 -EXCLUSIVE=204 -EXECUTE=205 -EXPLAIN=206 -EXTENSION=207 -EXTERNAL=208 -FAMILY=209 -FIRST_P=210 -FOLLOWING=211 -FORCE=212 -FORWARD=213 -FUNCTION=214 -FUNCTIONS=215 -GLOBAL=216 -GRANTED=217 -HANDLER=218 -HEADER_P=219 -HOLD=220 -HOUR_P=221 -IDENTITY_P=222 -IF_P=223 -IMMEDIATE=224 -IMMUTABLE=225 -IMPLICIT_P=226 -INCLUDING=227 -INCREMENT=228 -INDEX=229 -INDEXES=230 -INHERIT=231 -INHERITS=232 -INLINE_P=233 -INSENSITIVE=234 -INSERT=235 -INSTEAD=236 -INVOKER=237 -ISOLATION=238 -KEY=239 -LABEL=240 -LANGUAGE=241 -LARGE_P=242 -LAST_P=243 -LEAKPROOF=244 -LEVEL=245 -LISTEN=246 -LOAD=247 -LOCAL=248 -LOCATION=249 -LOCK_P=250 -MAPPING=251 -MATCH=252 -MATCHED=253 -MATERIALIZED=254 -MAXVALUE=255 -MERGE=256 -MINUTE_P=257 -MINVALUE=258 -MODE=259 -MONTH_P=260 -MOVE=261 -NAME_P=262 -NAMES=263 -NEXT=264 -NO=265 -NOTHING=266 -NOTIFY=267 -NOWAIT=268 -NULLS_P=269 -OBJECT_P=270 -OF=271 -OFF=272 -OIDS=273 -OPERATOR=274 -OPTION=275 -OPTIONS=276 -OWNED=277 -OWNER=278 -PARSER=279 -PARTIAL=280 -PARTITION=281 -PASSING=282 -PASSWORD=283 -PLANS=284 -PRECEDING=285 -PREPARE=286 -PREPARED=287 -PRESERVE=288 -PRIOR=289 -PRIVILEGES=290 -PROCEDURAL=291 -PROCEDURE=292 -PROGRAM=293 -QUOTE=294 -RANGE=295 -READ=296 -REASSIGN=297 -RECHECK=298 -RECURSIVE=299 -REF=300 -REFRESH=301 -REINDEX=302 -RELATIVE_P=303 -RELEASE=304 -RENAME=305 -REPEATABLE=306 -REPLACE=307 -REPLICA=308 -RESET=309 -RESTART=310 -RESTRICT=311 -RETURNS=312 -REVOKE=313 -ROLE=314 -ROLLBACK=315 -ROWS=316 -RULE=317 -SAVEPOINT=318 -SCHEMA=319 -SCROLL=320 -SEARCH=321 -SECOND_P=322 -SECURITY=323 -SEQUENCE=324 -SEQUENCES=325 -SERIALIZABLE=326 -SERVER=327 -SESSION=328 -SET=329 -SHARE=330 -SHOW=331 -SIMPLE=332 -SNAPSHOT=333 -STABLE=334 -STANDALONE_P=335 -START=336 -STATEMENT=337 -STATISTICS=338 -STDIN=339 -STDOUT=340 -STORAGE=341 -STRICT_P=342 -STRIP_P=343 -SYSID=344 -SYSTEM_P=345 -TABLES=346 -TABLESPACE=347 -TEMP=348 -TEMPLATE=349 -TEMPORARY=350 -TEXT_P=351 -TRANSACTION=352 -TRIGGER=353 -TRUNCATE=354 -TRUSTED=355 -TYPE_P=356 -TYPES_P=357 -UNBOUNDED=358 -UNCOMMITTED=359 -UNENCRYPTED=360 -UNKNOWN=361 -UNLISTEN=362 -UNLOGGED=363 -UNTIL=364 -UPDATE=365 -VACUUM=366 -VALID=367 -VALIDATE=368 -VALIDATOR=369 -VARYING=370 -VERSION_P=371 -VIEW=372 -VOLATILE=373 -WHITESPACE_P=374 -WITHOUT=375 -WORK=376 -WRAPPER=377 -WRITE=378 -XML_P=379 -YEAR_P=380 -YES_P=381 -ZONE=382 -BETWEEN=383 -BIGINT=384 -BIT=385 -BOOLEAN_P=386 -CHAR_P=387 -CHARACTER=388 -COALESCE=389 -DEC=390 -DECIMAL_P=391 -EXISTS=392 -EXTRACT=393 -FLOAT_P=394 -GREATEST=395 -INOUT=396 -INT_P=397 -INTEGER=398 -INTERVAL=399 -LEAST=400 -NATIONAL=401 -NCHAR=402 -NONE=403 -NULLIF=404 -NUMERIC=405 -OVERLAY=406 -POSITION=407 -PRECISION=408 -REAL=409 -ROW=410 -SETOF=411 -SMALLINT=412 -SUBSTRING=413 -TIME=414 -TIMESTAMP=415 -TREAT=416 -TRIM=417 -VALUES=418 -VARCHAR=419 -XMLATTRIBUTES=420 -XMLCOMMENT=421 -XMLAGG=422 -XML_IS_WELL_FORMED=423 -XML_IS_WELL_FORMED_DOCUMENT=424 -XML_IS_WELL_FORMED_CONTENT=425 -XPATH=426 -XPATH_EXISTS=427 -XMLCONCAT=428 -XMLELEMENT=429 -XMLEXISTS=430 -XMLFOREST=431 -XMLPARSE=432 -XMLPI=433 -XMLROOT=434 -XMLSERIALIZE=435 -CALL=436 -CURRENT_P=437 -ATTACH=438 -DETACH=439 -EXPRESSION=440 -GENERATED=441 -LOGGED=442 -STORED=443 -INCLUDE=444 -ROUTINE=445 -TRANSFORM=446 -IMPORT_P=447 -POLICY=448 -METHOD=449 -REFERENCING=450 -NEW=451 -OLD=452 -VALUE_P=453 -SUBSCRIPTION=454 -PUBLICATION=455 -OUT_P=456 -END_P=457 -ROUTINES=458 -SCHEMAS=459 -PROCEDURES=460 -INPUT_P=461 -SUPPORT=462 -PARALLEL=463 -SQL_P=464 -DEPENDS=465 -OVERRIDING=466 -CONFLICT=467 -SKIP_P=468 -LOCKED=469 -TIES=470 -ROLLUP=471 -CUBE=472 -GROUPING=473 -SETS=474 -TABLESAMPLE=475 -ORDINALITY=476 -XMLTABLE=477 -COLUMNS=478 -XMLNAMESPACES=479 -ROWTYPE=480 -NORMALIZED=481 -WITHIN=482 -FILTER=483 -GROUPS=484 -OTHERS=485 -NFC=486 -NFD=487 -NFKC=488 -NFKD=489 -UESCAPE=490 -VIEWS=491 -NORMALIZE=492 -DUMP=493 -PRINT_STRICT_PARAMS=494 -VARIABLE_CONFLICT=495 -ERROR=496 -USE_VARIABLE=497 -USE_COLUMN=498 -ALIAS=499 -CONSTANT=500 -PERFORM=501 -GET=502 -DIAGNOSTICS=503 -STACKED=504 -ELSIF=505 -WHILE=506 -REVERSE=507 -FOREACH=508 -SLICE=509 -EXIT=510 -RETURN=511 -QUERY=512 -RAISE=513 -SQLSTATE=514 -DEBUG=515 -LOG=516 -INFO=517 -NOTICE=518 -WARNING=519 -EXCEPTION=520 -ASSERT=521 -LOOP=522 -OPEN=523 -ABS=524 -CBRT=525 -CEIL=526 -CEILING=527 -DEGREES=528 -DIV=529 -EXP=530 -FACTORIAL=531 -FLOOR=532 -GCD=533 -LCM=534 -LN=535 -LOG10=536 -MIN_SCALE=537 -MOD=538 -PI=539 -POWER=540 -RADIANS=541 -ROUND=542 -SCALE=543 -SIGN=544 -SQRT=545 -TRIM_SCALE=546 -TRUNC=547 -WIDTH_BUCKET=548 -RANDOM=549 -SETSEED=550 -ACOS=551 -ACOSD=552 -ASIN=553 -ASIND=554 -ATAN=555 -ATAND=556 -ATAN2=557 -ATAN2D=558 -COS=559 -COSD=560 -COT=561 -COTD=562 -SIN=563 -SIND=564 -TAN=565 -TAND=566 -SINH=567 -COSH=568 -TANH=569 -ASINH=570 -ACOSH=571 -ATANH=572 -BIT_LENGTH=573 -CHAR_LENGTH=574 -CHARACTER_LENGTH=575 -LOWER=576 -OCTET_LENGTH=577 -UPPER=578 -ASCII=579 -BTRIM=580 -CHR=581 -CONCAT=582 -CONCAT_WS=583 -FORMAT=584 -INITCAP=585 -LENGTH=586 -LPAD=587 -LTRIM=588 -MD5=589 -PARSE_IDENT=590 -PG_CLIENT_ENCODING=591 -QUOTE_IDENT=592 -QUOTE_LITERAL=593 -QUOTE_NULLABLE=594 -REGEXP_COUNT=595 -REGEXP_INSTR=596 -REGEXP_LIKE=597 -REGEXP_MATCH=598 -REGEXP_MATCHES=599 -REGEXP_REPLACE=600 -REGEXP_SPLIT_TO_ARRAY=601 -REGEXP_SPLIT_TO_TABLE=602 -REGEXP_SUBSTR=603 -REPEAT=604 -RPAD=605 -RTRIM=606 -SPLIT_PART=607 -STARTS_WITH=608 -STRING_TO_ARRAY=609 -STRING_TO_TABLE=610 -STRPOS=611 -SUBSTR=612 -TO_ASCII=613 -TO_HEX=614 -TRANSLATE=615 -UNISTR=616 -AGE=617 -CLOCK_TIMESTAMP=618 -DATE_BIN=619 -DATE_PART=620 -DATE_TRUNC=621 -ISFINITE=622 -JUSTIFY_DAYS=623 -JUSTIFY_HOURS=624 -JUSTIFY_INTERVAL=625 -MAKE_DATE=626 -MAKE_INTERVAL=627 -MAKE_TIME=628 -MAKE_TIMESTAMP=629 -MAKE_TIMESTAMPTZ=630 -NOW=631 -STATEMENT_TIMESTAMP=632 -TIMEOFDAY=633 -TRANSACTION_TIMESTAMP=634 -TO_TIMESTAMP=635 -TO_CHAR=636 -TO_DATE=637 -TO_NUMBER=638 -Identifier=639 -QuotedIdentifier=640 -UnterminatedQuotedIdentifier=641 -InvalidQuotedIdentifier=642 -InvalidUnterminatedQuotedIdentifier=643 -UnicodeQuotedIdentifier=644 -UnterminatedUnicodeQuotedIdentifier=645 -InvalidUnicodeQuotedIdentifier=646 -InvalidUnterminatedUnicodeQuotedIdentifier=647 -StringConstant=648 -UnterminatedStringConstant=649 -UnicodeEscapeStringConstant=650 -UnterminatedUnicodeEscapeStringConstant=651 -BeginDollarStringConstant=652 -BinaryStringConstant=653 -UnterminatedBinaryStringConstant=654 -InvalidBinaryStringConstant=655 -InvalidUnterminatedBinaryStringConstant=656 -HexadecimalStringConstant=657 -UnterminatedHexadecimalStringConstant=658 -InvalidHexadecimalStringConstant=659 -InvalidUnterminatedHexadecimalStringConstant=660 -Integral=661 -NumericFail=662 -Numeric=663 -PLSQLVARIABLENAME=664 -PLSQLIDENTIFIER=665 -Whitespace=666 -Newline=667 -LineComment=668 -BlockComment=669 -UnterminatedBlockComment=670 -MetaCommand=671 -EndMetaCommand=672 -ErrorCharacter=673 -EscapeStringConstant=674 -UnterminatedEscapeStringConstant=675 -InvalidEscapeStringConstant=676 -InvalidUnterminatedEscapeStringConstant=677 -AfterEscapeStringConstantMode_NotContinued=678 -AfterEscapeStringConstantWithNewlineMode_NotContinued=679 -DollarText=680 -EndDollarStringConstant=681 -AfterEscapeStringConstantWithNewlineMode_Continued=682 -'$'=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 -'ZVIEW'=97 -'TRAILING'=98 -'TRUE'=99 -'UNION'=100 -'UNIQUE'=101 -'USER'=102 -'USING'=103 -'VARIADIC'=104 -'WHEN'=105 -'WHERE'=106 -'WINDOW'=107 -'WITH'=108 -'AUTHORIZATION'=109 -'BINARY'=110 -'COLLATION'=111 -'CONCURRENTLY'=112 -'CROSS'=113 -'CURRENT_SCHEMA'=114 -'FREEZE'=115 -'FULL'=116 -'ILIKE'=117 -'INNER'=118 -'IS'=119 -'ISNULL'=120 -'JOIN'=121 -'LEFT'=122 -'LIKE'=123 -'NATURAL'=124 -'NOTNULL'=125 -'OUTER'=126 -'OVER'=127 -'OVERLAPS'=128 -'RIGHT'=129 -'SIMILAR'=130 -'VERBOSE'=131 -'ABORT'=132 -'ABSOLUTE'=133 -'ACCESS'=134 -'ACTION'=135 -'ADD'=136 -'ADMIN'=137 -'AFTER'=138 -'AGGREGATE'=139 -'ALSO'=140 -'ALTER'=141 -'ALWAYS'=142 -'ASSERTION'=143 -'ASSIGNMENT'=144 -'AT'=145 -'ATTRIBUTE'=146 -'BACKWARD'=147 -'BEFORE'=148 -'BEGIN'=149 -'BY'=150 -'CACHE'=151 -'CALLED'=152 -'CASCADE'=153 -'CASCADED'=154 -'CATALOG'=155 -'CHAIN'=156 -'CHARACTERISTICS'=157 -'CHECKPOINT'=158 -'CLASS'=159 -'CLOSE'=160 -'CLUSTER'=161 -'COMMENT'=162 -'COMMENTS'=163 -'COMMIT'=164 -'COMMITTED'=165 -'CONFIGURATION'=166 -'CONNECTION'=167 -'CONSTRAINTS'=168 -'CONTENT'=169 -'CONTINUE'=170 -'CONVERSION'=171 -'COPY'=172 -'COST'=173 -'CSV'=174 -'CURSOR'=175 -'CYCLE'=176 -'DATA'=177 -'DATABASE'=178 -'DAY'=179 -'DEALLOCATE'=180 -'DECLARE'=181 -'DEFAULTS'=182 -'DEFERRED'=183 -'DEFINER'=184 -'DELETE'=185 -'DELIMITER'=186 -'DELIMITERS'=187 -'DICTIONARY'=188 -'DISABLE'=189 -'DISCARD'=190 -'DOCUMENT'=191 -'DOMAIN'=192 -'DOUBLE'=193 -'DROP'=194 -'EACH'=195 -'ENABLE'=196 -'ENCODING'=197 -'ENCRYPTED'=198 -'ENUM'=199 -'ESCAPE'=200 -'EVENT'=201 -'EXCLUDE'=202 -'EXCLUDING'=203 -'EXCLUSIVE'=204 -'EXECUTE'=205 -'EXPLAIN'=206 -'EXTENSION'=207 -'EXTERNAL'=208 -'FAMILY'=209 -'FIRST'=210 -'FOLLOWING'=211 -'FORCE'=212 -'FORWARD'=213 -'FUNCTION'=214 -'FUNCTIONS'=215 -'GLOBAL'=216 -'GRANTED'=217 -'HANDLER'=218 -'HEADER'=219 -'HOLD'=220 -'HOUR'=221 -'IDENTITY'=222 -'IF'=223 -'IMMEDIATE'=224 -'IMMUTABLE'=225 -'IMPLICIT'=226 -'INCLUDING'=227 -'INCREMENT'=228 -'INDEX'=229 -'INDEXES'=230 -'INHERIT'=231 -'INHERITS'=232 -'INLINE'=233 -'INSENSITIVE'=234 -'INSERT'=235 -'INSTEAD'=236 -'INVOKER'=237 -'ISOLATION'=238 -'KEY'=239 -'LABEL'=240 -'LANGUAGE'=241 -'LARGE'=242 -'LAST'=243 -'LEAKPROOF'=244 -'LEVEL'=245 -'LISTEN'=246 -'LOAD'=247 -'LOCAL'=248 -'LOCATION'=249 -'LOCK'=250 -'MAPPING'=251 -'MATCH'=252 -'MATCHED'=253 -'MATERIALIZED'=254 -'MAXVALUE'=255 -'MERGE'=256 -'MINUTE'=257 -'MINVALUE'=258 -'MODE'=259 -'MONTH'=260 -'MOVE'=261 -'NAME'=262 -'NAMES'=263 -'NEXT'=264 -'NO'=265 -'NOTHING'=266 -'NOTIFY'=267 -'NOWAIT'=268 -'NULLS'=269 -'OBJECT'=270 -'OF'=271 -'OFF'=272 -'OIDS'=273 -'OPERATOR'=274 -'OPTION'=275 -'OPTIONS'=276 -'OWNED'=277 -'OWNER'=278 -'PARSER'=279 -'PARTIAL'=280 -'PARTITION'=281 -'PASSING'=282 -'PASSWORD'=283 -'PLANS'=284 -'PRECEDING'=285 -'PREPARE'=286 -'PREPARED'=287 -'PRESERVE'=288 -'PRIOR'=289 -'PRIVILEGES'=290 -'PROCEDURAL'=291 -'PROCEDURE'=292 -'PROGRAM'=293 -'QUOTE'=294 -'RANGE'=295 -'READ'=296 -'REASSIGN'=297 -'RECHECK'=298 -'RECURSIVE'=299 -'REF'=300 -'REFRESH'=301 -'REINDEX'=302 -'RELATIVE'=303 -'RELEASE'=304 -'RENAME'=305 -'REPEATABLE'=306 -'REPLACE'=307 -'REPLICA'=308 -'RESET'=309 -'RESTART'=310 -'RESTRICT'=311 -'RETURNS'=312 -'REVOKE'=313 -'ROLE'=314 -'ROLLBACK'=315 -'ROWS'=316 -'RULE'=317 -'SAVEPOINT'=318 -'SCHEMA'=319 -'SCROLL'=320 -'SEARCH'=321 -'SECOND'=322 -'SECURITY'=323 -'SEQUENCE'=324 -'SEQUENCES'=325 -'SERIALIZABLE'=326 -'SERVER'=327 -'SESSION'=328 -'SET'=329 -'SHARE'=330 -'SHOW'=331 -'SIMPLE'=332 -'SNAPSHOT'=333 -'STABLE'=334 -'STANDALONE'=335 -'START'=336 -'STATEMENT'=337 -'STATISTICS'=338 -'STDIN'=339 -'STDOUT'=340 -'STORAGE'=341 -'STRICT'=342 -'STRIP'=343 -'SYSID'=344 -'SYSTEM'=345 -'TABLES'=346 -'TABLESPACE'=347 -'TEMP'=348 -'TEMPLATE'=349 -'TEMPORARY'=350 -'TEXT'=351 -'TRANSACTION'=352 -'TRIGGER'=353 -'TRUNCATE'=354 -'TRUSTED'=355 -'TYPE'=356 -'TYPES'=357 -'UNBOUNDED'=358 -'UNCOMMITTED'=359 -'UNENCRYPTED'=360 -'UNKNOWN'=361 -'UNLISTEN'=362 -'UNLOGGED'=363 -'UNTIL'=364 -'UPDATE'=365 -'VACUUM'=366 -'VALID'=367 -'VALIDATE'=368 -'VALIDATOR'=369 -'VARYING'=370 -'VERSION'=371 -'VIEW'=372 -'VOLATILE'=373 -'WHITESPACE'=374 -'WITHOUT'=375 -'WORK'=376 -'WRAPPER'=377 -'WRITE'=378 -'XML'=379 -'YEAR'=380 -'YES'=381 -'ZONE'=382 -'BETWEEN'=383 -'BIGINT'=384 -'BIT'=385 -'BOOLEAN'=386 -'CHAR'=387 -'CHARACTER'=388 -'COALESCE'=389 -'DEC'=390 -'DECIMAL'=391 -'EXISTS'=392 -'EXTRACT'=393 -'FLOAT'=394 -'GREATEST'=395 -'INOUT'=396 -'INT'=397 -'INTEGER'=398 -'INTERVAL'=399 -'LEAST'=400 -'NATIONAL'=401 -'NCHAR'=402 -'NONE'=403 -'NULLIF'=404 -'NUMERIC'=405 -'OVERLAY'=406 -'POSITION'=407 -'PRECISION'=408 -'REAL'=409 -'ROW'=410 -'SETOF'=411 -'SMALLINT'=412 -'SUBSTRING'=413 -'TIME'=414 -'TIMESTAMP'=415 -'TREAT'=416 -'TRIM'=417 -'VALUES'=418 -'VARCHAR'=419 -'XMLATTRIBUTES'=420 -'XMLCOMMENT'=421 -'XMLAGG'=422 -'XML_IS_WELL_FORMED'=423 -'XML_IS_WELL_FORMED_DOCUMENT'=424 -'XML_IS_WELL_FORMED_CONTENT'=425 -'XPATH'=426 -'XPATH_EXISTS'=427 -'XMLCONCAT'=428 -'XMLELEMENT'=429 -'XMLEXISTS'=430 -'XMLFOREST'=431 -'XMLPARSE'=432 -'XMLPI'=433 -'XMLROOT'=434 -'XMLSERIALIZE'=435 -'CALL'=436 -'CURRENT'=437 -'ATTACH'=438 -'DETACH'=439 -'EXPRESSION'=440 -'GENERATED'=441 -'LOGGED'=442 -'STORED'=443 -'INCLUDE'=444 -'ROUTINE'=445 -'TRANSFORM'=446 -'IMPORT'=447 -'POLICY'=448 -'METHOD'=449 -'REFERENCING'=450 -'NEW'=451 -'OLD'=452 -'VALUE'=453 -'SUBSCRIPTION'=454 -'PUBLICATION'=455 -'OUT'=456 -'END'=457 -'ROUTINES'=458 -'SCHEMAS'=459 -'PROCEDURES'=460 -'INPUT'=461 -'SUPPORT'=462 -'PARALLEL'=463 -'SQL'=464 -'DEPENDS'=465 -'OVERRIDING'=466 -'CONFLICT'=467 -'SKIP'=468 -'LOCKED'=469 -'TIES'=470 -'ROLLUP'=471 -'CUBE'=472 -'GROUPING'=473 -'SETS'=474 -'TABLESAMPLE'=475 -'ORDINALITY'=476 -'XMLTABLE'=477 -'COLUMNS'=478 -'XMLNAMESPACES'=479 -'ROWTYPE'=480 -'NORMALIZED'=481 -'WITHIN'=482 -'FILTER'=483 -'GROUPS'=484 -'OTHERS'=485 -'NFC'=486 -'NFD'=487 -'NFKC'=488 -'NFKD'=489 -'UESCAPE'=490 -'VIEWS'=491 -'NORMALIZE'=492 -'DUMP'=493 -'PRINT_STRICT_PARAMS'=494 -'VARIABLE_CONFLICT'=495 -'ERROR'=496 -'USE_VARIABLE'=497 -'USE_COLUMN'=498 -'ALIAS'=499 -'CONSTANT'=500 -'PERFORM'=501 -'GET'=502 -'DIAGNOSTICS'=503 -'STACKED'=504 -'ELSIF'=505 -'WHILE'=506 -'REVERSE'=507 -'FOREACH'=508 -'SLICE'=509 -'EXIT'=510 -'RETURN'=511 -'QUERY'=512 -'RAISE'=513 -'SQLSTATE'=514 -'DEBUG'=515 -'LOG'=516 -'INFO'=517 -'NOTICE'=518 -'WARNING'=519 -'EXCEPTION'=520 -'ASSERT'=521 -'LOOP'=522 -'OPEN'=523 -'ABS'=524 -'CBRT'=525 -'CEIL'=526 -'CEILING'=527 -'DEGREES'=528 -'DIV'=529 -'EXP'=530 -'FACTORIAL'=531 -'FLOOR'=532 -'GCD'=533 -'LCM'=534 -'LN'=535 -'LOG10'=536 -'MIN_SCALE'=537 -'MOD'=538 -'PI'=539 -'POWER'=540 -'RADIANS'=541 -'ROUND'=542 -'SCALE'=543 -'SIGN'=544 -'SQRT'=545 -'TRIM_SCALE'=546 -'TRUNC'=547 -'WIDTH_BUCKET'=548 -'RANDOM'=549 -'SETSEED'=550 -'ACOS'=551 -'ACOSD'=552 -'ASIN'=553 -'ASIND'=554 -'ATAN'=555 -'ATAND'=556 -'ATAN2'=557 -'ATAN2D'=558 -'COS'=559 -'COSD'=560 -'COT'=561 -'COTD'=562 -'SIN'=563 -'SIND'=564 -'TAN'=565 -'TAND'=566 -'SINH'=567 -'COSH'=568 -'TANH'=569 -'ASINH'=570 -'ACOSH'=571 -'ATANH'=572 -'BIT_LENGTH'=573 -'CHAR_LENGTH'=574 -'CHARACTER_LENGTH'=575 -'LOWER'=576 -'OCTET_LENGTH'=577 -'UPPER'=578 -'ASCII'=579 -'BTRIM'=580 -'CHR'=581 -'CONCAT'=582 -'CONCAT_WS'=583 -'FORMAT'=584 -'INITCAP'=585 -'LENGTH'=586 -'LPAD'=587 -'LTRIM'=588 -'MD5'=589 -'PARSE_IDENT'=590 -'PG_CLIENT_ENCODING'=591 -'QUOTE_IDENT'=592 -'QUOTE_LITERAL'=593 -'QUOTE_NULLABLE'=594 -'REGEXP_COUNT'=595 -'REGEXP_INSTR'=596 -'REGEXP_LIKE'=597 -'REGEXP_MATCH'=598 -'REGEXP_MATCHES'=599 -'REGEXP_REPLACE'=600 -'REGEXP_SPLIT_TO_ARRAY'=601 -'REGEXP_SPLIT_TO_TABLE'=602 -'REGEXP_SUBSTR'=603 -'REPEAT'=604 -'RPAD'=605 -'RTRIM'=606 -'SPLIT_PART'=607 -'STARTS_WITH'=608 -'STRING_TO_ARRAY'=609 -'STRING_TO_TABLE'=610 -'STRPOS'=611 -'SUBSTR'=612 -'TO_ASCII'=613 -'TO_HEX'=614 -'TRANSLATE'=615 -'UNISTR'=616 -'AGE'=617 -'CLOCK_TIMESTAMP'=618 -'DATE_BIN'=619 -'DATE_PART'=620 -'DATE_TRUNC'=621 -'ISFINITE'=622 -'JUSTIFY_DAYS'=623 -'JUSTIFY_HOURS'=624 -'JUSTIFY_INTERVAL'=625 -'MAKE_DATE'=626 -'MAKE_INTERVAL'=627 -'MAKE_TIME'=628 -'MAKE_TIMESTAMP'=629 -'MAKE_TIMESTAMPTZ'=630 -'NOW'=631 -'STATEMENT_TIMESTAMP'=632 -'TIMEOFDAY'=633 -'TRANSACTION_TIMESTAMP'=634 -'TO_TIMESTAMP'=635 -'TO_CHAR'=636 -'TO_DATE'=637 -'TO_NUMBER'=638 -'\\\\'=672 -'\''=682 From f6435a37e84cf4afd4871fc1e9dadf122ef87e20 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 27 Nov 2024 15:26:17 -0800 Subject: [PATCH 022/104] WIP --- .../binding/pgsql/kafka/config/proxy.yaml | 2 +- .../streams/kafka/create.topic/client.rpt | 4 +-- .../streams/kafka/create.topic/server.rpt | 4 +-- .../kafka/streams/kafka/drop.topic/client.rpt | 4 +-- .../kafka/streams/kafka/drop.topic/server.rpt | 4 +-- .../PgsqlKafkaValueAvroSchemaTemplate.java | 3 +- .../stream/PgsqlKafkaProxyFactory.java | 24 ++++++++------- .../binding/pgsql/parser/PgsqlParser.java | 3 +- .../listener/SqlAlterStreamTopicListener.java | 9 ++++-- .../listener/SqlAlterTableTopicListener.java | 9 ++++-- .../listener/SqlCreateFunctionListener.java | 9 ++++-- .../listener/SqlCreateStreamListener.java | 8 +++-- .../listener/SqlCreateTableTopicListener.java | 9 ++++-- .../listener/SqlCreateZviewListener.java | 9 ++++-- .../parser/listener/SqlDropListener.java | 14 +++++++-- .../binding/pgsql/parser/model/Alter.java | 1 + .../binding/pgsql/parser/model/Drop.java | 21 +++++++++++++ .../binding/pgsql/parser/model/Function.java | 1 + .../binding/pgsql/parser/model/Stream.java | 1 + .../binding/pgsql/parser/model/Table.java | 1 + .../binding/pgsql/parser/model/View.java | 1 + .../binding/pgsql/parser/PgsqlParserTest.java | 29 ++++++++++-------- .../client.stream.established/client.rpt | 2 +- .../create.stream.with.includes/client.rpt | 2 +- .../create.stream.with.includes/server.rpt | 2 +- .../effective/create.stream/client.rpt | 2 +- .../effective/create.stream/server.rpt | 2 +- .../effective/create.streams/client.rpt | 4 +-- .../effective/create.streams/server.rpt | 4 +-- .../client.rpt | 2 +- .../server.rpt | 2 +- .../create.table.with.primary.key/client.rpt | 2 +- .../create.table.with.primary.key/server.rpt | 2 +- .../client.rpt | 2 +- .../server.rpt | 2 +- .../query.with.multiple.statements/client.rpt | 2 +- .../query.with.multiple.statements/server.rpt | 2 +- .../RisingwaveCreateSourceTemplate.java | 8 ++--- .../RisingwaveDeleteFromCatalogTemplate.java | 6 ++-- ...isingwaveDropMaterializedViewTemplate.java | 8 +++-- .../statement/RisingwaveDropSinkTemplate.java | 8 +++-- .../RisingwaveDropSourceTemplate.java | 8 +++-- .../RisingwaveDropTableTemplate.java | 6 ++-- .../RisingwaveDropTopicTemplate.java | 6 ++-- .../stream/RisingwaveProxyFactory.java | 15 ++++------ .../RisingwaveCreateFunctionTemplateTest.java | 6 ++++ ...aveCreateMaterializedViewTemplateTest.java | 7 +++-- .../RisingwaveCreateSourceTemplateTest.java | 30 +++++++++---------- .../RisingwaveCreateTableTemplateTest.java | 3 ++ 49 files changed, 203 insertions(+), 112 deletions(-) create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Drop.java 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 f181577206..19451189a8 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 @@ -23,7 +23,7 @@ catalogs: id: 1 schema: |- { - "schema": "{\"fields\":[{\"name\":\"id\",\"type\":[\"null\",{\"type\":\"string\"}]},{\"name\":\"city\",\"type\":[\"null\",{\"type\":\"string\"}]}],\"name\":\"cities\",\"namespace\":\"dev\",\"type\":\"record\"}", + "schema": "{\"fields\":[{\"name\":\"id\",\"type\":[\"null\",{\"type\":\"string\"}]},{\"name\":\"city\",\"type\":[\"null\",{\"type\":\"string\"}]}],\"name\":\"cities\",\"namespace\":\"public\",\"type\":\"record\"}", "schemaType": "AVRO" } bindings: diff --git a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/kafka/create.topic/client.rpt b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/kafka/create.topic/client.rpt index 237f23d89c..be9afd7d84 100644 --- a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/kafka/create.topic/client.rpt +++ b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/kafka/create.topic/client.rpt @@ -22,7 +22,7 @@ write zilla:begin.ext ${kafka:beginEx() .request() .createTopics() .topic() - .name("dev.cities") + .name("public.cities") .partitionCount(1) .replicas(1) .config("cleanup.policy", "delete") @@ -40,7 +40,7 @@ read zilla:begin.ext ${kafka:matchBeginEx() .createTopics() .throttle(0) .topic() - .name("dev.cities") + .name("public.cities") .error(0) .build() .build() diff --git a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/kafka/create.topic/server.rpt b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/kafka/create.topic/server.rpt index f3c9a0a897..e9ac171d72 100644 --- a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/kafka/create.topic/server.rpt +++ b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/kafka/create.topic/server.rpt @@ -26,7 +26,7 @@ read zilla:begin.ext ${kafka:matchBeginEx() .request() .createTopics() .topic() - .name("dev.cities") + .name("public.cities") .partitionCount(1) .replicas(1) .config("cleanup.policy", "delete") @@ -44,7 +44,7 @@ write zilla:begin.ext ${kafka:beginEx() .createTopics() .throttle(0) .topic() - .name("dev.cities") + .name("public.cities") .error(0) .build() .build() diff --git a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/kafka/drop.topic/client.rpt b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/kafka/drop.topic/client.rpt index 9aed5593ee..d6c043fd19 100644 --- a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/kafka/drop.topic/client.rpt +++ b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/kafka/drop.topic/client.rpt @@ -21,7 +21,7 @@ write zilla:begin.ext ${kafka:beginEx() .typeId(zilla:id("kafka")) .request() .deleteTopics() - .topic("dev.cities") + .topic("public.cities") .timeout(30000) .build() .build()} @@ -34,7 +34,7 @@ read zilla:begin.ext ${kafka:matchBeginEx() .deleteTopics() .throttle(0) .topic() - .name("dev.cities") + .name("public.cities") .error(0) .build() .build() diff --git a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/kafka/drop.topic/server.rpt b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/kafka/drop.topic/server.rpt index 83ebc6e3d0..f908bd9e2a 100644 --- a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/kafka/drop.topic/server.rpt +++ b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/kafka/drop.topic/server.rpt @@ -25,7 +25,7 @@ read zilla:begin.ext ${kafka:matchBeginEx() .typeId(zilla:id("kafka")) .request() .deleteTopics() - .topic("dev.cities") + .topic("public.cities") .timeout(30000) .build() .build()} @@ -38,7 +38,7 @@ write zilla:begin.ext ${kafka:beginEx() .deleteTopics() .throttle(0) .topic() - .name("dev.cities") + .name("public.cities") .error(0) .build() .build() 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 4ffa6addde..b78b87dc58 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 @@ -39,10 +39,9 @@ public PgsqlKafkaValueAvroSchemaTemplate( } public String generate( - String database, Table table) { - final String newNamespace = namespace.replace(DATABASE_PLACEHOLDER, database); + final String newNamespace = namespace.replace(DATABASE_PLACEHOLDER, table.schema()); List fields = table.columns().stream() .map(column -> 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 16d8ed2b25..3c04e747e8 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 @@ -55,6 +55,7 @@ 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.model.Alter; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; import io.aklivity.zilla.runtime.engine.EngineContext; import io.aklivity.zilla.runtime.engine.binding.BindingHandler; @@ -1336,10 +1337,11 @@ private void decodeCreateTopicCommand( else if (server.commandsProcessed == 0) { final Table createTopic = parser.parseCreateTable(statement); + final String schema = createTopic.schema(); final String topic = createTopic.name(); topics.clear(); - topics.add(String.format("%s.%s", server.database, topic)); + topics.add(String.format("%s.%s", schema, topic)); final PgsqlKafkaBindingConfig binding = server.binding; @@ -1348,7 +1350,7 @@ else if (server.commandsProcessed == 0) if (!primaryKeys.isEmpty()) { //TODO: assign versionId to avoid test failure - final String subjectKey = String.format("%s.%s-key", server.database, topic); + final String subjectKey = String.format("%s.%s-key", schema, topic); String keySchema = primaryKeys.size() > 1 ? binding.avroKeySchema.generate(server.database, createTopic) @@ -1358,8 +1360,8 @@ else if (server.commandsProcessed == 0) if (versionId != NO_VERSION_ID) { - final String subjectValue = String.format("%s.%s-value", server.database, topic); - final String schemaValue = binding.avroValueSchema.generate(server.database, createTopic); + final String subjectValue = String.format("%s.%s-value", schema, topic); + final String schemaValue = binding.avroValueSchema.generate(createTopic); versionId = binding.catalog.register(subjectValue, schemaValue); } @@ -1386,15 +1388,16 @@ private void decodeAlterTopicCommand( String statement) { final Alter alter = parser.parseAlterTable(statement); + final String schema = alter.schema(); final String topic = alter.name(); topics.clear(); - topics.add(String.format("%s.%s", server.database, topic)); + topics.add(String.format("%s.%s", schema, topic)); final PgsqlKafkaBindingConfig binding = server.binding; final CatalogHandler catalog = binding.catalog; - final String subjectValue = String.format("%s.%s-value", server.database, topic); + final String subjectValue = String.format("%s.%s-value", schema, topic); final int schemaId = catalog.resolve(subjectValue, "latest"); final String existingSchemaJson = catalog.resolve(schemaId); final String schemaValue = binding.avroValueSchema.generate(existingSchemaJson, alter); @@ -1428,20 +1431,21 @@ private void decodeDropTopicCommand( } else if (server.commandsProcessed == 0) { - List drops = parser.parseDrop(statement); + List 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); + final String subjectKey = String.format("%s.%s-key", d.schema(), d.name()); + final String subjectValue = String.format("%s.%s-value", d.schema(), d.name()); binding.catalog.unregister(subjectKey); binding.catalog.unregister(subjectValue); final KafkaDeleteTopicsProxy deleteTopicsProxy = server.deleteTopicsProxy; - deleteTopicsProxy.doKafkaBegin(traceId, authorization, List.of("%s.%s".formatted(server.database, d))); + deleteTopicsProxy.doKafkaBegin( + traceId, authorization, List.of("%s.%s".formatted(d.schema(), d.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 a299e74e9c..773dfdb373 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 @@ -31,6 +31,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateZviewListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlDropListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Stream; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; @@ -119,7 +120,7 @@ public View parseCreateZView( return createMaterializedViewListener.view(); } - public List 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/SqlAlterStreamTopicListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterStreamTopicListener.java index 329f5b6ca9..ed1cd24f08 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterStreamTopicListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterStreamTopicListener.java @@ -29,6 +29,7 @@ public class SqlAlterStreamTopicListener extends PostgreSqlParserBaseListener { private final TokenStream tokens; + private String schema; private String name; private final List alterExpressions = new ArrayList<>(); @@ -40,13 +41,14 @@ public SqlAlterStreamTopicListener( public Alter alter() { - return new Alter(name, alterExpressions); + return new Alter(schema, name, alterExpressions); } @Override public void enterRoot( PostgreSqlParser.RootContext ctx) { + schema = null; name = null; alterExpressions.clear(); } @@ -55,7 +57,10 @@ public void enterRoot( public void enterQualified_name( PostgreSqlParser.Qualified_nameContext ctx) { - name = ctx.getText(); + String text = ctx.getText(); + String[] split = text.split("\\."); + schema = split.length > 1 ? split[0] : "public"; + name = split.length > 1 ? split[1] : text; } @Override diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterTableTopicListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterTableTopicListener.java index b5b8ae4d99..8498a01c09 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterTableTopicListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterTableTopicListener.java @@ -29,6 +29,7 @@ public class SqlAlterTableTopicListener extends PostgreSqlParserBaseListener { private final TokenStream tokens; + private String schema; private String name; private final List alterExpressions = new ArrayList<>(); @@ -40,13 +41,14 @@ public SqlAlterTableTopicListener( public Alter alter() { - return new Alter(name, alterExpressions); + return new Alter(schema, name, alterExpressions); } @Override public void enterRoot( PostgreSqlParser.RootContext ctx) { + schema = null; name = null; alterExpressions.clear(); } @@ -55,7 +57,10 @@ public void enterRoot( public void enterQualified_name( PostgreSqlParser.Qualified_nameContext ctx) { - name = ctx.getText(); + String text = ctx.getText(); + String[] split = text.split("\\."); + schema = split.length > 1 ? split[0] : "public"; + name = split.length > 1 ? split[1] : text; } @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 4ae8507953..193b961d08 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 @@ -31,6 +31,7 @@ public class SqlCreateFunctionListener extends PostgreSqlParserBaseListener private final TokenStream tokens; + private String schema; private String name; private String returnType; private String asFunction; @@ -44,13 +45,14 @@ public SqlCreateFunctionListener( public Function function() { - return new Function(name, arguments, returnType, tables, asFunction, language); + return new Function(schema, name, arguments, returnType, tables, asFunction, language); } @Override public void enterRoot( PostgreSqlParser.RootContext ctx) { + schema = null; name = null; returnType = null; asFunction = null; @@ -63,7 +65,10 @@ public void enterRoot( public void enterCreatefunctionstmt( PostgreSqlParser.CreatefunctionstmtContext ctx) { - name = ctx.func_name().getText(); + String text = ctx.func_name().getText(); + String[] split = text.split("\\."); + schema = split.length > 1 ? split[0] : "public"; + name = split.length > 1 ? split[1] : text; } @Override 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 6f5e462103..8f1a029d17 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 @@ -28,6 +28,7 @@ public class SqlCreateStreamListener extends PostgreSqlParserBaseListener private final Map columns = new LinkedHashMap<>(); private final TokenStream tokens; + private String schema; private String name; public SqlCreateStreamListener( @@ -38,7 +39,7 @@ public SqlCreateStreamListener( public Stream stream() { - return new Stream(name, columns); + return new Stream(schema, name, columns); } @Override @@ -53,7 +54,10 @@ public void enterRoot( public void enterQualified_name( PostgreSqlParser.Qualified_nameContext ctx) { - name = ctx.getText(); + String text = ctx.getText(); + String[] split = text.split("\\."); + schema = split.length > 1 ? split[0] : "public"; + name = split.length > 1 ? split[1] : text; } @Override 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 bda81c70f8..c1fa5721a7 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 @@ -32,6 +32,7 @@ public class SqlCreateTableTopicListener extends PostgreSqlParserBaseListener private final Set primaryKeys = new ObjectHashSet<>(); private final TokenStream tokens; + private String schema; private String name; public SqlCreateTableTopicListener( @@ -42,13 +43,14 @@ public SqlCreateTableTopicListener( public Table table() { - return new Table(name, columns, primaryKeys); + return new Table(schema, name, columns, primaryKeys); } @Override public void enterRoot( PostgreSqlParser.RootContext ctx) { + schema = null; name = null; columns.clear(); primaryKeys.clear(); @@ -58,7 +60,10 @@ public void enterRoot( public void enterQualified_name( PostgreSqlParser.Qualified_nameContext ctx) { - name = ctx.getText(); + String text = ctx.getText(); + String[] split = text.split("\\."); + schema = split.length > 1 ? split[0] : "public"; + name = split.length > 1 ? split[1] : text; } @Override diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZviewListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZviewListener.java index 9ec800a663..05099b9125 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZviewListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZviewListener.java @@ -24,6 +24,7 @@ public class SqlCreateZviewListener extends PostgreSqlParserBaseListener { private final TokenStream tokens; + private String schema; private String name; private String select; @@ -35,13 +36,14 @@ public SqlCreateZviewListener( public View view() { - return new View(name, select); + return new View(schema, name, select); } @Override public void enterRoot( PostgreSqlParser.RootContext ctx) { + schema = null; name = null; select = null; } @@ -50,7 +52,10 @@ public void enterRoot( public void enterCreatezviewstmt( PostgreSqlParser.CreatezviewstmtContext ctx) { - name = ctx.create_mv_target().qualified_name().getText(); + String text = ctx.create_mv_target().qualified_name().getText(); + String[] split = text.split("\\."); + schema = split.length > 1 ? split[0] : "public"; + name = split.length > 1 ? split[1] : text; } @Override 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 bfaedce025..4b72e72c8f 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 @@ -19,12 +19,13 @@ 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.model.Drop; public class SqlDropListener extends PostgreSqlParserBaseListener { - private final List drops = new ArrayList<>(); + private final List drops = new ArrayList<>(); - public List drops() + public List drops() { return drops; } @@ -40,6 +41,13 @@ public void enterRoot( public void enterDropstmt( PostgreSqlParser.DropstmtContext ctx) { - ctx.any_name_list().any_name().forEach(name -> drops.add(name.getText())); + ctx.any_name_list().any_name().forEach(n -> + { + String text = n.getText(); + String[] split = text.split("\\."); + String schema = split.length > 1 ? split[0] : "public"; + String name = split.length > 1 ? split[1] : text; + drops.add(new Drop(schema, name)); + }); } } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Alter.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Alter.java index 6d1dbadbbb..883dda57b1 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Alter.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Alter.java @@ -17,6 +17,7 @@ import java.util.List; public record Alter( + String schema, String name, List expressions) { diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Drop.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Drop.java new file mode 100644 index 0000000000..e8d5cf70e7 --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Drop.java @@ -0,0 +1,21 @@ +/* + * Copyright 2021-2024 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.model; + +public record Drop( + String schema, + String name) +{ +} diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Function.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Function.java index 5593f2be83..2c3d96fa76 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Function.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Function.java @@ -17,6 +17,7 @@ import java.util.List; public record Function( + String schema, String name, List arguments, String returnType, diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Stream.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Stream.java index a16fddfcab..47524e7349 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Stream.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Stream.java @@ -17,6 +17,7 @@ import java.util.Map; public record Stream( + String schema, String name, Map columns) { diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Table.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Table.java index f89f701c78..d556ad7136 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Table.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Table.java @@ -18,6 +18,7 @@ import java.util.Set; public record Table( + String schema, String name, List columns, Set primaryKeys) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/View.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/View.java index 4a1f9abc08..d03bf04542 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/View.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/View.java @@ -15,6 +15,7 @@ package io.aklivity.zilla.runtime.binding.pgsql.parser.model; public record View( + String schema, 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 index f156d758f8..0230515dba 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 @@ -25,6 +25,7 @@ import org.junit.Test; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Stream; @@ -178,28 +179,31 @@ public void shouldHandleInvalidCreateTable() public void shouldParseDropSingleTable() { String sql = "DROP TABLE test_table;"; - List drops = parser.parseDrop(sql); + List drops = parser.parseDrop(sql); assertEquals(1, drops.size()); - assertTrue(drops.contains("test_table")); + assertEquals("public", drops.get(0).schema()); + assertEquals("test_table", drops.get(0).name()); } @Test public void shouldParseDropMultipleTables() { String sql = "DROP TABLE table1, table2;"; - List drops = parser.parseDrop(sql); + List drops = parser.parseDrop(sql); assertEquals(2, drops.size()); - assertTrue(drops.contains("table1")); - assertTrue(drops.contains("table2")); + assertEquals("public", drops.get(0).schema()); + assertEquals("table1", drops.get(0).name()); + assertEquals("public", drops.get(1).schema()); + assertEquals("table2", drops.get(1).name()); } @Test(expected = ParseCancellationException.class) public void shouldHandleEmptyDropStatement() { String sql = "DROP TABLE;"; - List drops = parser.parseDrop(sql); + List drops = parser.parseDrop(sql); assertEquals(0, drops.size()); } @@ -207,21 +211,22 @@ public void shouldHandleEmptyDropStatement() @Test public void shouldParseDropView() { - String sql = "DROP ZVIEW test_view;"; - List drops = parser.parseDrop(sql); + String sql = "DROP VIEW test_view;"; + List drops = parser.parseDrop(sql); assertEquals(1, drops.size()); - assertTrue(drops.contains("test_view")); + assertEquals("public", drops.get(0).schema()); + assertEquals("test_view", drops.get(0).name()); } @Test - public void shouldParseDropZView() + public void shouldParseDropZview() { String sql = "DROP ZVIEW test_materialized_view;"; - List drops = parser.parseDrop(sql); + List drops = parser.parseDrop(sql); assertEquals(1, drops.size()); - assertTrue(drops.contains("test_materialized_view")); + assertTrue(drops.get(0).name().equals("test_materialized_view")); } @Test diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt index 1083f54078..503fafcb9d 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt @@ -50,7 +50,7 @@ write "CREATE SOURCE IF NOT EXISTS weather (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather',\n" + " topic='public.weather',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" 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 952031e1bd..f71cd7d9e8 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 @@ -53,7 +53,7 @@ write "CREATE SOURCE IF NOT EXISTS weather (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather',\n" + " topic='public.weather',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" 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 8e583c6e96..6d10e6bc52 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 @@ -55,7 +55,7 @@ read "CREATE SOURCE IF NOT EXISTS weather (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather',\n" + " topic='public.weather',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt index 1083f54078..503fafcb9d 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt @@ -50,7 +50,7 @@ write "CREATE SOURCE IF NOT EXISTS weather (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather',\n" + " topic='public.weather',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt index dc6b08f826..f69e8b3904 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt @@ -52,7 +52,7 @@ read "CREATE SOURCE IF NOT EXISTS weather (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather',\n" + " topic='public.weather',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt index de38517efe..35d3872588 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt @@ -50,7 +50,7 @@ write "CREATE SOURCE IF NOT EXISTS weather_c (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather_c',\n" + " topic='public.weather_c',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" @@ -82,7 +82,7 @@ write "CREATE SOURCE IF NOT EXISTS weather_f (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather_f',\n" + " topic='public.weather_f',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt index d6942ed1af..d93dc8af61 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt @@ -52,7 +52,7 @@ read "CREATE SOURCE IF NOT EXISTS weather_c (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather_c',\n" + " topic='public.weather_c',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" @@ -83,7 +83,7 @@ read "CREATE SOURCE IF NOT EXISTS weather_f (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.weather_f',\n" + " topic='public.weather_f',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" 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 4b3359322d..a95739adf5 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 @@ -53,7 +53,7 @@ write "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.cities',\n" + " topic='public.cities',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" 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 fd3c87a022..d74501929c 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 @@ -55,7 +55,7 @@ read "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.cities',\n" + " topic='public.cities',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt index 4c9f82ff6c..c2d337b679 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt @@ -50,7 +50,7 @@ write "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.cities',\n" + " topic='public.cities',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt index 15be29f503..ce60e47a8d 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt @@ -52,7 +52,7 @@ read "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.cities',\n" + " topic='public.cities',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt index 8398f5e5c3..1a0786dadb 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt @@ -50,7 +50,7 @@ write "CREATE SOURCE IF NOT EXISTS cities (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.cities',\n" + " topic='public.cities',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt index 979f5b00f8..677c2837d8 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt @@ -52,7 +52,7 @@ read "CREATE SOURCE IF NOT EXISTS cities (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.cities',\n" + " topic='public.cities',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt index ec1f19c820..6f7e84082b 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt @@ -50,7 +50,7 @@ write "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.cities',\n" + " topic='public.cities',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt index c2b6132505..9b0f511b14 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt @@ -52,7 +52,7 @@ read "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='dev.cities',\n" + " topic='public.cities',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" 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 03371ff2cf..5fbcee4b4d 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 @@ -53,9 +53,9 @@ public RisingwaveCreateSourceTemplate( } public String generateStreamSource( - String database, Stream stream) { + String schema = stream.schema(); String table = stream.name(); includeBuilder.setLength(0); @@ -70,13 +70,13 @@ public String generateStreamSource( includeBuilder.delete(includeBuilder.length() - 1, includeBuilder.length()); } - return String.format(sqlFormat, table, includeBuilder, bootstrapServer, database, table, scanStartupMil, schemaRegistry); + return String.format(sqlFormat, table, includeBuilder, bootstrapServer, schema, table, scanStartupMil, schemaRegistry); } public String generateTableSource( - String database, Table tableInfo) { + String schema = tableInfo.schema(); String table = tableInfo.name(); String sourceName = "%s_source".formatted(table); @@ -104,6 +104,6 @@ public String generateTableSource( } return String.format(sqlFormat, sourceName, includeBuilder, bootstrapServer, - database, table, scanStartupMil, schemaRegistry); + schema, table, scanStartupMil, schemaRegistry); } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDeleteFromCatalogTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDeleteFromCatalogTemplate.java index 16109e87ad..6a9a7b07ac 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDeleteFromCatalogTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDeleteFromCatalogTemplate.java @@ -14,6 +14,8 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; + public class RisingwaveDeleteFromCatalogTemplate extends RisingwaveCommandTemplate { private final String sqlFormat = """ @@ -28,8 +30,8 @@ public RisingwaveDeleteFromCatalogTemplate( public String generate( String catalog, - String name) + Drop drop) { - return String.format(sqlFormat, schema, catalog, name); + return String.format(sqlFormat, schema, catalog, drop.name()); } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropMaterializedViewTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropMaterializedViewTemplate.java index 4692394e60..174aa94fb6 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropMaterializedViewTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropMaterializedViewTemplate.java @@ -14,22 +14,24 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; + public class RisingwaveDropMaterializedViewTemplate extends RisingwaveCommandTemplate { private final String sqlFormat = """ DROP MATERIALIZED VIEW %s;\u0000"""; public String generate( - String drop) + Drop drop) { return generate(drop, ""); } public String generate( - String drop, + Drop drop, String suffix) { - String source = "%s%s".formatted(drop, suffix); + String source = "%s%s".formatted(drop.name(), suffix); return String.format(sqlFormat, source); } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSinkTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSinkTemplate.java index 166d265353..caf291b932 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSinkTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSinkTemplate.java @@ -14,6 +14,8 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; + public class RisingwaveDropSinkTemplate extends RisingwaveCommandTemplate { private final String sqlFormat = """ @@ -27,15 +29,15 @@ public RisingwaveDropSinkTemplate( } public String generate( - String drop) + Drop drop) { return generate(drop, "_sink"); } public String generate( - String drop, + Drop drop, String suffix) { - return String.format(sqlFormat, schema, drop, suffix); + return String.format(sqlFormat, schema, drop.name(), suffix); } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSourceTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSourceTemplate.java index 853aaf8e01..0e880f291d 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSourceTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSourceTemplate.java @@ -14,22 +14,24 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; + public class RisingwaveDropSourceTemplate extends RisingwaveCommandTemplate { private final String sqlFormat = """ DROP SOURCE %s;\u0000"""; public String generate( - String drop) + Drop drop) { return generate(drop, ""); } public String generate( - String drop, + Drop drop, String suffix) { - String source = "%s%s".formatted(drop, suffix); + String source = "%s%s".formatted(drop.name(), suffix); return String.format(sqlFormat, source); } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropTableTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropTableTemplate.java index cc789491c4..05e506dc3d 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropTableTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropTableTemplate.java @@ -14,14 +14,16 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; + public class RisingwaveDropTableTemplate extends RisingwaveCommandTemplate { private final String sqlFormat = """ DROP TABLE %s;\u0000"""; public String generate( - String drop) + Drop drop) { - return String.format(sqlFormat, drop); + return String.format(sqlFormat, drop.name()); } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropTopicTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropTopicTemplate.java index 98eaeb4570..0f6c9f9531 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropTopicTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropTopicTemplate.java @@ -14,14 +14,16 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.statement; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; + public class RisingwaveDropTopicTemplate extends RisingwaveCommandTemplate { private final String sqlFormat = """ DROP TOPIC %s;\u0000"""; public String generate( - String drop) + Drop drop) { - return String.format(sqlFormat, drop); + return String.format(sqlFormat, drop.name()); } } 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 d2715d0f0b..dd5283dfe1 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 @@ -36,6 +36,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PgsqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Stream; @@ -254,7 +255,6 @@ private final class PgsqlServer private final List columnTypes; private final List columnDescriptions; private final Map columns; - private final String database; private final long initialId; private final long replyId; @@ -299,9 +299,6 @@ private PgsqlServer( this.binding = bindings.get(routedId); this.parameters = parameters; - String dbValue = parameters.get("database\u0000"); - this.database = dbValue.substring(0, dbValue.length() - 1); - this.columns = new Object2ObjectHashMap<>(); this.columnTypes = new ArrayList<>(); this.columnDescriptions = new ArrayList<>(); @@ -1571,7 +1568,7 @@ private void decodeCreateTableCommand( } else if (server.commandsProcessed == 1) { - newStatement = binding.createSource.generateTableSource(server.database, table); + newStatement = binding.createSource.generateTableSource(table); } else if (server.commandsProcessed == 2) { @@ -1628,7 +1625,7 @@ private void decodeCreateStreamCommand( } else if (server.commandsProcessed == 1) { - newStatement = binding.createSource.generateStreamSource(server.database, stream); + newStatement = binding.createSource.generateStreamSource(stream); } statementBuffer.putBytes(progress, newStatement.getBytes()); @@ -1863,7 +1860,7 @@ private void decodeDropTableCommand( else { final RisingwaveBindingConfig binding = server.binding; - final String table = parser.parseDrop(statement).get(0); + final Drop table = parser.parseDrop(statement).get(0); String newStatement = ""; int progress = 0; @@ -1919,7 +1916,7 @@ private void decodeDropStreamCommand( else { final RisingwaveBindingConfig binding = server.binding; - final String stream = parser.parseDrop(statement).get(0); + final Drop stream = parser.parseDrop(statement).get(0); String newStatement = ""; int progress = 0; @@ -1960,7 +1957,7 @@ private void decodeDropZviewCommand( else { final RisingwaveBindingConfig binding = server.binding; - final String view = parser.parseDrop(statement).get(0); + final Drop view = parser.parseDrop(statement).get(0); String newStatement = ""; int progress = 0; 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 584c45faf6..9ee286699f 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 @@ -41,6 +41,7 @@ public static void setUp() public void shouldGenerateFunctionWithValidFunctionInfo() { Function function = new Function( + "public", "test_function", List.of(new FunctionArgument("arg1", "INT")), "INT", @@ -63,6 +64,7 @@ CREATE FUNCTION test_function(arg1 INT) public void shouldGenerateFunctionWithTableReturnType() { Function functionInfo = new Function( + "public", "test_function", List.of(new FunctionArgument("arg1", "INT")), "INT", @@ -86,6 +88,7 @@ RETURNS TABLE (tab1 INT) public void shouldGenerateFunctionWithTableAsReturnType() { Function functionInfo = new Function( + "public", "test_function", List.of(new FunctionArgument("arg1", "INT")), "INT", @@ -109,6 +112,7 @@ CREATE FUNCTION test_function(arg1 INT) public void shouldGenerateFunctionWithMultipleArguments() { Function function = new Function( + "public", "test_function", List.of(new FunctionArgument("arg1", "INT"), new FunctionArgument("arg2", "STRING")), "STRING", @@ -132,6 +136,7 @@ CREATE FUNCTION test_function(arg1 INT, arg2 STRING) public void shouldGenerateFunctionWithUnnamedArguments() { Function function = new Function( + "public", "test_function", List.of(new FunctionArgument(null, "INT"), new FunctionArgument(null, "STRING")), "STRING", @@ -155,6 +160,7 @@ CREATE FUNCTION test_function(INT, STRING) public void shouldGenerateFunctionWithEmptyArguments() { Function function = new Function( + "public", "test_function", List.of(), "VOID", 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 6a2af196ba..b5bc2d3255 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 @@ -34,7 +34,7 @@ public class RisingwaveCreateMaterializedViewTemplateTest @Test public void shouldGenerateMaterializedViewWithValidViewInfo() { - View view = new View("test_view", "SELECT * FROM test_table"); + View view = new View("public", "test_view", "SELECT * FROM test_table"); String expectedSQL = """ CREATE MATERIALIZED VIEW IF NOT EXISTS test_view AS SELECT * FROM test_table;\u0000"""; @@ -48,6 +48,7 @@ public void shouldGenerateMaterializedViewWithValidViewInfo() public void shouldGenerateMaterializedViewWithValidTableInfo() { Table table = new Table( + "public", "test_table", List.of(new TableColumn("id", "INT", List.of()), new TableColumn("name", "STRING", List.of())), @@ -63,7 +64,7 @@ public void shouldGenerateMaterializedViewWithValidTableInfo() @Test public void shouldGenerateMaterializedViewWithEmptyColumns() { - Table table = new Table("empty_table", List.of(), Set.of()); + Table table = new Table("public", "empty_table", List.of(), Set.of()); String expectedSQL = """ CREATE MATERIALIZED VIEW IF NOT EXISTS empty_table_view AS SELECT * FROM empty_table_source;\u0000"""; @@ -81,7 +82,7 @@ public void shouldGenerateMaterializedViewWithIncludes() columns.add(new TableColumn("zilla_identity", "VARCHAR", List.of())); columns.add(new TableColumn("zilla_timestamp", "TIMESTAMP", List.of())); - Table table = new Table("test_table", columns, Set.of("id")); + Table table = new Table("public", "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," + 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 93ede58a8f..fe5dad9500 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 @@ -42,20 +42,20 @@ public static void setUp() @Test public void shouldGenerateStreamSourceWithValidStreamInfo() { - Stream stream = new Stream("test_stream", Map.of("id", "INT", "name", "STRING")); + Stream stream = new Stream("public", "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', + topic='public.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", stream); + String actualSQL = template.generateStreamSource(stream); assertEquals(expectedSQL, actualSQL); } @@ -70,7 +70,7 @@ public void shouldGenerateTableSourceWithValidTableInfoAndIncludes() columns.add(new TableColumn("zilla_timestamp", "TIMESTAMP", List.of())); Table table = new Table( - "test_table", columns, Set.of("id")); + "public", "test_table", columns, Set.of("id")); String expectedSQL = """ CREATE SOURCE IF NOT EXISTS test_table_source (*) INCLUDE header 'zilla:correlation-id' AS zilla_correlation_id_header @@ -79,14 +79,14 @@ CREATE SOURCE IF NOT EXISTS test_table_source (*) WITH ( connector='kafka', properties.bootstrap.server='localhost:9092', - topic='test_db.test_table', + topic='public.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", table); + String actualSQL = template.generateTableSource(table); assertEquals(expectedSQL, actualSQL); } @@ -94,20 +94,20 @@ CREATE SOURCE IF NOT EXISTS test_table_source (*) @Test public void shouldGenerateStreamSourceWithEmptyColumnsReturnsSQLWithoutIncludes() { - Stream stream = new Stream("empty_stream", Map.of()); + Stream stream = new Stream("public", "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', + topic='public.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", stream); + String actualSQL = template.generateStreamSource(stream); assertEquals(expectedSQL, actualSQL); } @@ -129,15 +129,15 @@ CREATE SOURCE IF NOT EXISTS include_stream (*) WITH ( connector='kafka', properties.bootstrap.server='localhost:9092', - topic='test_db.include_stream', + topic='public.include_stream', scan.startup.mode='latest', scan.startup.timestamp.millis='1627846260000' ) FORMAT PLAIN ENCODE AVRO ( schema.registry = 'http://localhost:8081' );\u0000"""; - Stream stream = new Stream("include_stream", columns); + Stream stream = new Stream("public", "include_stream", columns); - String actualSQL = template.generateStreamSource("test_db", stream); + String actualSQL = template.generateStreamSource(stream); assertEquals(expectedSQL, actualSQL); } @@ -145,20 +145,20 @@ CREATE SOURCE IF NOT EXISTS include_stream (*) @Test public void shouldGenerateTableSourceWithEmptyColumnsAndWithoutIncludes() { - Table table = new Table("empty_table", List.of(), Set.of()); + Table table = new Table("public", "empty_table", List.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', + topic='public.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", table); + String actualSQL = template.generateTableSource(table); 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 index 2cb163efc4..f77d7a7757 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 @@ -45,6 +45,7 @@ public void shouldGenerateTableWithValidTableInfo() columns.add(new TableColumn("name", "STRING", List.of())); Table table = new Table( + "public", "test_table", columns, Set.of("id")); @@ -64,6 +65,7 @@ public void shouldGenerateTableWithoutPrimaryKey() columns.add(new TableColumn("name", "STRING", List.of())); Table table = new Table( + "public", "test_table", columns, Set.of()); @@ -84,6 +86,7 @@ public void shouldGenerateTableWithMultiplePrimaryKeys() columns.add(new TableColumn("name", "STRING", List.of())); Table table = new Table( + "public", "test_table", columns, Set.of("id", "name")); From 4bbc4aa042fc2b2f5a5a493758b92faff263c0a2 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 28 Nov 2024 10:56:56 -0800 Subject: [PATCH 023/104] WIP --- .../client.rpt | 106 +++++++++--------- .../server.rpt | 106 +++++++++--------- .../create.table.with.primary.key/client.rpt | 96 ++++++++-------- .../create.table.with.primary.key/server.rpt | 94 ++++++++-------- .../query.with.multiple.statements/client.rpt | 96 ++++++++-------- .../query.with.multiple.statements/server.rpt | 94 ++++++++-------- .../RisingwaveCreateSinkTemplate.java | 8 +- .../stream/RisingwaveProxyFactory.java | 23 ++-- 8 files changed, 309 insertions(+), 314 deletions(-) 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 a95739adf5..f9bb6df3db 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 @@ -27,45 +27,19 @@ write zilla:begin.ext ${pgsql:beginEx() connected -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -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 zilla_timestamp_timestamp\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" +write "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SOURCE") + .tag("CREATE_SINK") .build() .build()} @@ -81,19 +55,23 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -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," - " COALESCE(zilla_timestamp, zilla_timestamp_timestamp::varchar) as zilla_timestamp" - " FROM cities_source;" +write "CREATE SINK zb_catalog.cities_sink\n" + "FROM cities\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " primary_key='id'\n" + ") FORMAT UPSERT ENCODE AVRO (\n" + " schema.registry='http://localhost:8081'\n" + ") KEY ENCODE TEXT;" [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_MATERIALIZED_VIEW") + .tag("CREATE_SINK") .build() .build()} @@ -104,22 +82,45 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -write "CREATE TABLE IF NOT EXISTS cities" - " (id VARCHAR, name VARCHAR, description VARCHAR," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," - " PRIMARY KEY (id));" +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 zilla_timestamp_timestamp\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " scan.startup.mode='latest',\n" + " scan.startup.timestamp.millis='140000000'\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " schema.registry = 'http://localhost:8081'\n" + ");" [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TABLE") + .tag("CREATE_SOURCE") .build() .build()} @@ -135,14 +136,19 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" +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," + " COALESCE(zilla_timestamp, zilla_timestamp_timestamp::varchar) as zilla_timestamp" + " FROM cities_source;" [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_MATERIALIZED_VIEW") .build() .build()} @@ -158,23 +164,17 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK zb_catalog.cities_sink\n" - "FROM cities\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " primary_key='id'\n" - ") FORMAT UPSERT ENCODE AVRO (\n" - " schema.registry='http://localhost:8081'\n" - ") KEY ENCODE TEXT;" +write "CREATE TABLE IF NOT EXISTS cities" + " (id VARCHAR, name VARCHAR, description VARCHAR," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," + " PRIMARY KEY (id));" [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_TABLE") .build() .build()} 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 d74501929c..d04935bdf6 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 @@ -29,6 +29,59 @@ read zilla:begin.ext ${pgsql:beginEx() connected +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_SINK") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "CREATE SINK zb_catalog.cities_sink\n" + "FROM cities\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " primary_key='id'\n" + ") FORMAT UPSERT ENCODE AVRO (\n" + " schema.registry='http://localhost:8081'\n" + ") KEY ENCODE TEXT;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_SINK") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + accepted read zilla:begin.ext ${pgsql:beginEx() @@ -129,59 +182,6 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_SINK") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "CREATE SINK zb_catalog.cities_sink\n" - "FROM cities\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " primary_key='id'\n" - ") FORMAT UPSERT ENCODE AVRO (\n" - " schema.registry='http://localhost:8081'\n" - ") KEY ENCODE TEXT;" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_SINK") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - accept "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt index c2d337b679..bd03d1b4ce 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt @@ -27,42 +27,19 @@ write zilla:begin.ext ${pgsql:beginEx() connected -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -write "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] +write "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SOURCE") + .tag("CREATE_SINK") .build() .build()} @@ -78,14 +55,23 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS SELECT * FROM cities_source;" - [0x00] +write "CREATE SINK zb_catalog.cities_sink\n" + "FROM cities\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " primary_key='id'\n" + ") FORMAT UPSERT ENCODE AVRO (\n" + " schema.registry='http://localhost:8081'\n" + ") KEY ENCODE TEXT;" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_MATERIALIZED_VIEW") + .tag("CREATE_SINK") .build() .build()} @@ -96,20 +82,42 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -write "CREATE TABLE IF NOT EXISTS cities " - "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" - [0x00] +write "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " scan.startup.mode='latest',\n" + " scan.startup.timestamp.millis='140000000'\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " schema.registry = 'http://localhost:8081'\n" + ");" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TABLE") + .tag("CREATE_SOURCE") .build() .build()} @@ -125,14 +133,14 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" - [0x00] +write "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS SELECT * FROM cities_source;" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_MATERIALIZED_VIEW") .build() .build()} @@ -148,23 +156,15 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK zb_catalog.cities_sink\n" - "FROM cities\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " primary_key='id'\n" - ") FORMAT UPSERT ENCODE AVRO (\n" - " schema.registry='http://localhost:8081'\n" - ") KEY ENCODE TEXT;" - [0x00] +write "CREATE TABLE IF NOT EXISTS cities " + "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_TABLE") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt index ce60e47a8d..d31c8e3a62 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt @@ -29,41 +29,18 @@ read zilla:begin.ext ${pgsql:beginEx() connected -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read await CREATE_TOPIC_COMPLETED - read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -read "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] +read "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SOURCE") + .tag("CREATE_SINK") .build() .build()} @@ -79,13 +56,22 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS SELECT * FROM cities_source;" - [0x00] +read "CREATE SINK zb_catalog.cities_sink\n" + "FROM cities\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " primary_key='id'\n" + ") FORMAT UPSERT ENCODE AVRO (\n" + " schema.registry='http://localhost:8081'\n" + ") KEY ENCODE TEXT;" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_MATERIALIZED_VIEW") + .tag("CREATE_SINK") .build() .build()} @@ -96,19 +82,41 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read await CREATE_TOPIC_COMPLETED + read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -read "CREATE TABLE IF NOT EXISTS cities " - "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" - [0x00] +read "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " scan.startup.mode='latest',\n" + " scan.startup.timestamp.millis='140000000'\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " schema.registry = 'http://localhost:8081'\n" + ");" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TABLE") + .tag("CREATE_SOURCE") .build() .build()} @@ -124,13 +132,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" +read "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS SELECT * FROM cities_source;" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_MATERIALIZED_VIEW") .build() .build()} @@ -146,22 +154,14 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK zb_catalog.cities_sink\n" - "FROM cities\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " primary_key='id'\n" - ") FORMAT UPSERT ENCODE AVRO (\n" - " schema.registry='http://localhost:8081'\n" - ") KEY ENCODE TEXT;" - [0x00] +read "CREATE TABLE IF NOT EXISTS cities " + "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_TABLE") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt index 6f7e84082b..e6ead09eab 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt @@ -27,42 +27,19 @@ write zilla:begin.ext ${pgsql:beginEx() connected -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -write "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] +write "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SOURCE") + .tag("CREATE_SINK") .build() .build()} @@ -78,14 +55,23 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS SELECT * FROM cities_source;" - [0x00] +write "CREATE SINK zb_catalog.cities_sink\n" + "FROM cities\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " primary_key='id'\n" + ") FORMAT UPSERT ENCODE AVRO (\n" + " schema.registry='http://localhost:8081'\n" + ") KEY ENCODE TEXT;" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_MATERIALIZED_VIEW") + .tag("CREATE_SINK") .build() .build()} @@ -96,20 +82,42 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -write "CREATE TABLE IF NOT EXISTS cities " - "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" - [0x00] +write "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " scan.startup.mode='latest',\n" + " scan.startup.timestamp.millis='140000000'\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " schema.registry = 'http://localhost:8081'\n" + ");" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TABLE") + .tag("CREATE_SOURCE") .build() .build()} @@ -125,14 +133,14 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" - [0x00] +write "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS SELECT * FROM cities_source;" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_MATERIALIZED_VIEW") .build() .build()} @@ -148,23 +156,15 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK zb_catalog.cities_sink\n" - "FROM cities\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " primary_key='id'\n" - ") FORMAT UPSERT ENCODE AVRO (\n" - " schema.registry='http://localhost:8081'\n" - ") KEY ENCODE TEXT;" - [0x00] +write "CREATE TABLE IF NOT EXISTS cities " + "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_TABLE") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt index 9b0f511b14..c4ba6b89e4 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt @@ -29,41 +29,18 @@ read zilla:begin.ext ${pgsql:beginEx() connected -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read await CREATE_TOPIC_COMPLETED - read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -read "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] +read "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SOURCE") + .tag("CREATE_SINK") .build() .build()} @@ -79,13 +56,22 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS SELECT * FROM cities_source;" - [0x00] +read "CREATE SINK zb_catalog.cities_sink\n" + "FROM cities\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " primary_key='id'\n" + ") FORMAT UPSERT ENCODE AVRO (\n" + " schema.registry='http://localhost:8081'\n" + ") KEY ENCODE TEXT;" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_MATERIALIZED_VIEW") + .tag("CREATE_SINK") .build() .build()} @@ -96,19 +82,41 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read await CREATE_TOPIC_COMPLETED + read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -read "CREATE TABLE IF NOT EXISTS cities " - "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" - [0x00] +read "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " scan.startup.mode='latest',\n" + " scan.startup.timestamp.millis='140000000'\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " schema.registry = 'http://localhost:8081'\n" + ");" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TABLE") + .tag("CREATE_SOURCE") .build() .build()} @@ -124,13 +132,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" +read "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS SELECT * FROM cities_source;" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_MATERIALIZED_VIEW") .build() .build()} @@ -146,22 +154,14 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK zb_catalog.cities_sink\n" - "FROM cities\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " primary_key='id'\n" - ") FORMAT UPSERT ENCODE AVRO (\n" - " schema.registry='http://localhost:8081'\n" - ") KEY ENCODE TEXT;" - [0x00] +read "CREATE TABLE IF NOT EXISTS cities " + "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_TABLE") .build() .build()} 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 7d576fad74..d44f5a3416 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 @@ -55,6 +55,7 @@ public String generateOutgress( Map columns, View view) { + String topicSchema = view.schema(); String viewName = view.name(); Optional> primaryKeyMatch = columns.entrySet().stream() @@ -71,18 +72,17 @@ public String generateOutgress( String textPrimaryKey = primaryKeyMatch.map(Map.Entry::getKey).orElse(null); String primaryKey = textPrimaryKey != null ? primaryKeyFormat.formatted(textPrimaryKey) : ""; - // TODO: Replace 'public' with actual schema return String.format(sqlKafkaFormat, schema, viewName, viewName, bootstrapServer, - "public", viewName, primaryKey, schemaRegistry); + topicSchema, viewName, primaryKey, schemaRegistry); } public String generateOutgress( Table tableInfo) { + String topicSchema = tableInfo.schema(); String table = tableInfo.name(); - // TODO: Replace 'public' with actual schema - return String.format(sqlKafkaFormat, schema, table, table, bootstrapServer, "public", table, + return String.format(sqlKafkaFormat, schema, table, table, bootstrapServer, topicSchema, table, primaryKeyFormat.formatted(tableInfo.primaryKeys().stream().findFirst().get()), schemaRegistry); } 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 dd5283dfe1..5afdc3418e 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 @@ -1593,7 +1593,7 @@ else if (server.commandsProcessed == 5) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1634,7 +1634,7 @@ else if (server.commandsProcessed == 1) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1681,12 +1681,10 @@ else if (server.commandsProcessed == 2) } else if (server.commandsProcessed == 3) { - user = ZILLABASE_USER_HASH; newStatement = binding.createSink.generateOutgress(server.columns, view); } else if (server.commandsProcessed == 4) { - user = ZILLABASE_USER_HASH; newStatement = binding.catalogInsert.generate(ZVIEW_TABLE_NAME, view.name(), statement); } @@ -1696,7 +1694,7 @@ else if (server.commandsProcessed == 4) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = typeCommand; client.dataCommand = dataCommand; @@ -1735,7 +1733,7 @@ private void decodeCreateFunctionCommand( final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1784,7 +1782,7 @@ else if (server.commandsProcessed == 1) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1824,7 +1822,7 @@ else if (server.commandsProcessed == 0) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1896,7 +1894,7 @@ else if (server.commandsProcessed == 5) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1936,7 +1934,7 @@ else if (server.commandsProcessed == 1) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1962,19 +1960,16 @@ private void decodeDropZviewCommand( String newStatement = ""; int progress = 0; - int user = DEFAULT_USER_HASH; if (server.commandsProcessed == 0) { newStatement = binding.dropTopic.generate(view); } else if (server.commandsProcessed == 1) { - user = ZILLABASE_USER_HASH; newStatement = binding.dropSink.generate(view); } else if (server.commandsProcessed == 2) { - user = ZILLABASE_USER_HASH; newStatement = binding.catalogDelete.generate(ZVIEW_TABLE_NAME, view); } else if (server.commandsProcessed == 3) @@ -1988,7 +1983,7 @@ else if (server.commandsProcessed == 3) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.completionCommand = ignoreFlushCommand; } From 8971b8713b515323937fabc0d852c0eb8bfe0734 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 28 Nov 2024 11:58:26 -0800 Subject: [PATCH 024/104] WIP --- .../alter.table.add.column/client.rpt | 28 ++-- .../alter.table.add.column/server.rpt | 24 +-- .../client.stream.established/client.rpt | 28 ++-- .../create.function.python/client.rpt | 28 ++-- .../create.function.python/server.rpt | 23 ++- .../create.function.return.struct/client.rpt | 27 ++-- .../create.function.return.struct/server.rpt | 24 +-- .../create.function.return.table/client.rpt | 28 ++-- .../create.function.return.table/server.rpt | 23 ++- .../effective/create.function/client.rpt | 27 ++-- .../effective/create.function/server.rpt | 23 ++- .../create.stream.with.includes/client.rpt | 28 ++-- .../create.stream.with.includes/server.rpt | 23 ++- .../effective/create.stream/client.rpt | 28 ++-- .../effective/create.stream/server.rpt | 23 ++- .../effective/create.streams/client.rpt | 28 ++-- .../effective/create.streams/server.rpt | 23 ++- .../client.rpt | 106 ++++++------- .../server.rpt | 110 ++++++------- .../create.table.with.primary.key/client.rpt | 96 ++++++------ .../create.table.with.primary.key/server.rpt | 94 ++++++------ .../streams/effective/create.zview/client.rpt | 144 +++++++++--------- .../streams/effective/create.zview/server.rpt | 138 ++++++++--------- .../streams/effective/drop.stream/client.rpt | 28 ++-- .../streams/effective/drop.stream/server.rpt | 23 ++- .../streams/effective/drop.table/client.rpt | 28 ++-- .../streams/effective/drop.table/server.rpt | 24 +-- .../streams/effective/drop.zview/client.rpt | 29 ++-- .../streams/effective/drop.zview/server.rpt | 24 +-- .../client.rpt | 28 ++-- .../server.rpt | 24 +-- .../query.with.multiple.statements/client.rpt | 96 ++++++------ .../query.with.multiple.statements/server.rpt | 94 ++++++------ .../stream/RisingwaveProxyFactory.java | 31 ++-- 34 files changed, 779 insertions(+), 774 deletions(-) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt index 1c54dd1a17..6f0eb73163 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt @@ -27,20 +27,6 @@ write zilla:begin.ext ${pgsql:beginEx() connected -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -64,6 +50,20 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt index 39ecd61f49..d0f8a4bf0d 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt @@ -29,18 +29,6 @@ read zilla:begin.ext ${pgsql:beginEx() connected -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - read await ALTER_TOPIC_COMPLETED read zilla:data.ext ${pgsql:dataEx() @@ -65,6 +53,18 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + accept "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt index 503fafcb9d..09fbfd412f 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt @@ -27,20 +27,6 @@ write zilla:begin.ext ${pgsql:beginEx() connected -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -73,6 +59,20 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" 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 78e7087b97..c07a6d60cf 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 @@ -27,20 +27,6 @@ write zilla:begin.ext ${pgsql:beginEx() connected -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -69,3 +55,17 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + 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 d85d807c12..26066d715d 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 @@ -29,18 +29,6 @@ read zilla:begin.ext ${pgsql:beginEx() connected -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -67,3 +55,14 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected 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 f0cc5c7a36..4431de2d07 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 @@ -27,20 +27,6 @@ write zilla:begin.ext ${pgsql:beginEx() connected -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -69,3 +55,16 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected 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 e354bef80e..20eab76c11 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 @@ -29,18 +29,6 @@ read zilla:begin.ext ${pgsql:beginEx() connected -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -67,3 +55,15 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected 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 2a76dc3a41..8932399509 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 @@ -27,20 +27,6 @@ write zilla:begin.ext ${pgsql:beginEx() connected -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -52,7 +38,6 @@ write "CREATE FUNCTION series(int)\n" "LANGUAGE java\n" "USING LINK 'http://localhost:8815';" [0x00] - write flush read advised zilla:flush ${pgsql:flushEx() @@ -69,3 +54,16 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected 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 bc8d9924bd..6af6976df9 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 @@ -29,18 +29,6 @@ read zilla:begin.ext ${pgsql:beginEx() connected -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -67,3 +55,14 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected 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 6434d5ccb6..d86c5c3f38 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 @@ -27,20 +27,6 @@ write zilla:begin.ext ${pgsql:beginEx() connected -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -69,3 +55,16 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected 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 801581000f..911b21c7b6 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 @@ -29,18 +29,6 @@ read zilla:begin.ext ${pgsql:beginEx() connected -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -67,3 +55,14 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected 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 f71cd7d9e8..66cac4a7ae 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 @@ -27,20 +27,6 @@ write zilla:begin.ext ${pgsql:beginEx() connected -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -76,6 +62,20 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" 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 6d10e6bc52..cb579f8b54 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 @@ -29,18 +29,6 @@ read zilla:begin.ext ${pgsql:beginEx() connected -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - read await CREATE_TOPIC_COMPLETED read zilla:data.ext ${pgsql:dataEx() @@ -77,6 +65,17 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected accept "zilla://streams/app2" option zilla:window 8192 diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt index 503fafcb9d..09fbfd412f 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt @@ -27,20 +27,6 @@ write zilla:begin.ext ${pgsql:beginEx() connected -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -73,6 +59,20 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt index f69e8b3904..8331671cb7 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt @@ -29,18 +29,6 @@ read zilla:begin.ext ${pgsql:beginEx() connected -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - read await CREATE_TOPIC_COMPLETED read zilla:data.ext ${pgsql:dataEx() @@ -74,6 +62,17 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected accept "zilla://streams/app2" option zilla:window 8192 diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt index 35d3872588..4be0abc0fa 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt @@ -27,20 +27,6 @@ write zilla:begin.ext ${pgsql:beginEx() connected -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -105,6 +91,20 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt index d93dc8af61..ea466ea88b 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt @@ -29,18 +29,6 @@ read zilla:begin.ext ${pgsql:beginEx() connected -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - read await CREATE_TOPIC_COMPLETED read zilla:data.ext ${pgsql:dataEx() @@ -105,6 +93,17 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected accept "zilla://streams/app2" option zilla:window 8192 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 f9bb6df3db..544876edc3 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 @@ -32,14 +32,26 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" +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 zilla_timestamp_timestamp\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " scan.startup.mode='latest',\n" + " scan.startup.timestamp.millis='140000000'\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " schema.registry = 'http://localhost:8081'\n" + ");" [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_SOURCE") .build() .build()} @@ -55,23 +67,19 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK zb_catalog.cities_sink\n" - "FROM cities\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " primary_key='id'\n" - ") FORMAT UPSERT ENCODE AVRO (\n" - " schema.registry='http://localhost:8081'\n" - ") KEY ENCODE TEXT;" +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," + " COALESCE(zilla_timestamp, zilla_timestamp_timestamp::varchar) as zilla_timestamp" + " FROM cities_source;" [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_MATERIALIZED_VIEW") .build() .build()} @@ -82,45 +90,22 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -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 zilla_timestamp_timestamp\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" +write "CREATE TABLE IF NOT EXISTS cities" + " (id VARCHAR, name VARCHAR, description VARCHAR," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," + " PRIMARY KEY (id));" [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SOURCE") + .tag("CREATE_TABLE") .build() .build()} @@ -136,19 +121,14 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -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," - " COALESCE(zilla_timestamp, zilla_timestamp_timestamp::varchar) as zilla_timestamp" - " FROM cities_source;" +write "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_MATERIALIZED_VIEW") + .tag("CREATE_SINK") .build() .build()} @@ -164,17 +144,23 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE TABLE IF NOT EXISTS cities" - " (id VARCHAR, name VARCHAR, description VARCHAR," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," - " PRIMARY KEY (id));" +write "CREATE SINK zb_catalog.cities_sink\n" + "FROM cities\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " primary_key='id'\n" + ") FORMAT UPSERT ENCODE AVRO (\n" + " schema.registry='http://localhost:8081'\n" + ") KEY ENCODE TEXT;" [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TABLE") + .tag("CREATE_SINK") .build() .build()} @@ -185,6 +171,20 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" 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 d04935bdf6..5d9111c8bc 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 @@ -29,18 +29,32 @@ read zilla:begin.ext ${pgsql:beginEx() connected +read await CREATE_TOPIC_COMPLETED + read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -read "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" - [0x00] +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 zilla_timestamp_timestamp\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " scan.startup.mode='latest',\n" + " scan.startup.timestamp.millis='140000000'\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " schema.registry = 'http://localhost:8081'\n" + ");" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_SOURCE") .build() .build()} @@ -56,22 +70,18 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK zb_catalog.cities_sink\n" - "FROM cities\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " primary_key='id'\n" - ") FORMAT UPSERT ENCODE AVRO (\n" - " schema.registry='http://localhost:8081'\n" - ") KEY ENCODE TEXT;" +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," + " COALESCE(zilla_timestamp, zilla_timestamp_timestamp::varchar) as zilla_timestamp" + " FROM cities_source;" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_MATERIALIZED_VIEW") .build() .build()} @@ -82,44 +92,21 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read await CREATE_TOPIC_COMPLETED - read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -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 zilla_timestamp_timestamp\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] +read "CREATE TABLE IF NOT EXISTS cities" + " (id VARCHAR, name VARCHAR, description VARCHAR," + " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," + " PRIMARY KEY (id));" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SOURCE") + .tag("CREATE_TABLE") .build() .build()} @@ -135,18 +122,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -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," - " COALESCE(zilla_timestamp, zilla_timestamp_timestamp::varchar) as zilla_timestamp" - " FROM cities_source;" +read "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_MATERIALIZED_VIEW") + .tag("CREATE_SINK") .build() .build()} @@ -162,16 +144,22 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE TABLE IF NOT EXISTS cities" - " (id VARCHAR, name VARCHAR, description VARCHAR," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," - " PRIMARY KEY (id));" +read "CREATE SINK zb_catalog.cities_sink\n" + "FROM cities\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " primary_key='id'\n" + ") FORMAT UPSERT ENCODE AVRO (\n" + " schema.registry='http://localhost:8081'\n" + ") KEY ENCODE TEXT;" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TABLE") + .tag("CREATE_SINK") .build() .build()} @@ -182,6 +170,18 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + accept "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt index bd03d1b4ce..58a8677204 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt @@ -32,14 +32,23 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" - [0x00] +write "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " scan.startup.mode='latest',\n" + " scan.startup.timestamp.millis='140000000'\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " schema.registry = 'http://localhost:8081'\n" + ");" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_SOURCE") .build() .build()} @@ -55,23 +64,14 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK zb_catalog.cities_sink\n" - "FROM cities\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " primary_key='id'\n" - ") FORMAT UPSERT ENCODE AVRO (\n" - " schema.registry='http://localhost:8081'\n" - ") KEY ENCODE TEXT;" - [0x00] +write "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS SELECT * FROM cities_source;" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_MATERIALIZED_VIEW") .build() .build()} @@ -82,42 +82,20 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -write "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] +write "CREATE TABLE IF NOT EXISTS cities " + "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SOURCE") + .tag("CREATE_TABLE") .build() .build()} @@ -133,14 +111,14 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS SELECT * FROM cities_source;" - [0x00] +write "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_MATERIALIZED_VIEW") + .tag("CREATE_SINK") .build() .build()} @@ -156,15 +134,23 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE TABLE IF NOT EXISTS cities " - "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" - [0x00] +write "CREATE SINK zb_catalog.cities_sink\n" + "FROM cities\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " primary_key='id'\n" + ") FORMAT UPSERT ENCODE AVRO (\n" + " schema.registry='http://localhost:8081'\n" + ") KEY ENCODE TEXT;" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TABLE") + .tag("CREATE_SINK") .build() .build()} @@ -175,6 +161,20 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt index d31c8e3a62..395a60ed69 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt @@ -29,18 +29,29 @@ read zilla:begin.ext ${pgsql:beginEx() connected +read await CREATE_TOPIC_COMPLETED + read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -read "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" - [0x00] +read "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " scan.startup.mode='latest',\n" + " scan.startup.timestamp.millis='140000000'\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " schema.registry = 'http://localhost:8081'\n" + ");" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_SOURCE") .build() .build()} @@ -56,22 +67,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK zb_catalog.cities_sink\n" - "FROM cities\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " primary_key='id'\n" - ") FORMAT UPSERT ENCODE AVRO (\n" - " schema.registry='http://localhost:8081'\n" - ") KEY ENCODE TEXT;" - [0x00] +read "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS SELECT * FROM cities_source;" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_MATERIALIZED_VIEW") .build() .build()} @@ -82,41 +84,19 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read await CREATE_TOPIC_COMPLETED - read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -read "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] +read "CREATE TABLE IF NOT EXISTS cities " + "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SOURCE") + .tag("CREATE_TABLE") .build() .build()} @@ -132,13 +112,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS SELECT * FROM cities_source;" +read "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_MATERIALIZED_VIEW") + .tag("CREATE_SINK") .build() .build()} @@ -154,14 +134,22 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE TABLE IF NOT EXISTS cities " - "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" - [0x00] +read "CREATE SINK zb_catalog.cities_sink\n" + "FROM cities\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " primary_key='id'\n" + ") FORMAT UPSERT ENCODE AVRO (\n" + " schema.registry='http://localhost:8081'\n" + ") KEY ENCODE TEXT;" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TABLE") + .tag("CREATE_SINK") .build() .build()} @@ -172,6 +160,18 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + accept "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt index 9c55d70962..bdfce8aeeb 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt @@ -27,78 +27,6 @@ write zilla:begin.ext ${pgsql:beginEx() connected -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "CREATE SINK zb_catalog.distinct_cities_sink\n" - "FROM distinct_cities\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.distinct_cities',\n" - " primary_key='id'\n" - ") FORMAT UPSERT ENCODE AVRO (\n" - " schema.registry='http://localhost:8081'\n" - ") KEY ENCODE TEXT;" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_SINK") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "INSERT INTO zb_catalog.zviews (name, sql) VALUES " - "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;" - [0x00] - "');" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("INSERT 0 2") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -215,6 +143,78 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "CREATE SINK zb_catalog.distinct_cities_sink\n" + "FROM distinct_cities\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.distinct_cities',\n" + " primary_key='id'\n" + ") FORMAT UPSERT ENCODE AVRO (\n" + " schema.registry='http://localhost:8081'\n" + ") KEY ENCODE TEXT;" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_SINK") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "INSERT INTO zb_catalog.zviews (name, sql) VALUES " + "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;" + [0x00] + "');" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("INSERT 0 2") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt index aca051e9e5..239bad85ab 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt @@ -29,75 +29,6 @@ read zilla:begin.ext ${pgsql:beginEx() connected -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "CREATE SINK zb_catalog.distinct_cities_sink\n" - "FROM distinct_cities\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.distinct_cities',\n" - " primary_key='id'\n" - ") FORMAT UPSERT ENCODE AVRO (\n" - " schema.registry='http://localhost:8081'\n" - ") KEY ENCODE TEXT;" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_SINK") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "INSERT INTO zb_catalog.zviews (name, sql) VALUES " - "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;" - [0x00] - "');" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("INSERT 0 2") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -accepted - - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -218,6 +149,75 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "CREATE SINK zb_catalog.distinct_cities_sink\n" + "FROM distinct_cities\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.distinct_cities',\n" + " primary_key='id'\n" + ") FORMAT UPSERT ENCODE AVRO (\n" + " schema.registry='http://localhost:8081'\n" + ") KEY ENCODE TEXT;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_SINK") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "INSERT INTO zb_catalog.zviews (name, sql) VALUES " + "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;" + [0x00] + "');" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("INSERT 0 2") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +accepted + + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + accept "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt index 83f08efde2..528ef6b712 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt @@ -27,20 +27,6 @@ write zilla:begin.ext ${pgsql:beginEx() connected -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -64,6 +50,20 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt index 002bf44a12..d4c410b98f 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt @@ -29,18 +29,6 @@ read zilla:begin.ext ${pgsql:beginEx() connected -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - read await CREATE_TOPIC_COMPLETED read zilla:data.ext ${pgsql:dataEx() @@ -65,6 +53,17 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected accept "zilla://streams/app2" option zilla:window 8192 diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt index dd51a58471..90d9ff27f6 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt @@ -27,20 +27,6 @@ write zilla:begin.ext ${pgsql:beginEx() connected -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -156,6 +142,20 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt index 9c3a0a1d53..ba494fc089 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt @@ -29,18 +29,6 @@ read zilla:begin.ext ${pgsql:beginEx() connected -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - read await DROP_TOPIC_COMPLETED read zilla:data.ext ${pgsql:dataEx() @@ -153,6 +141,18 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + accept "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt index 4722497836..2c02827908 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt @@ -73,20 +73,6 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -110,6 +96,21 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} + +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + connect "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt index 03d86a91cb..01b3ee53f0 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt @@ -72,17 +72,6 @@ write advise zilla:flush ${pgsql:flushEx() .status("IDLE") .build() .build()} -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) @@ -106,6 +95,19 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + accept "zilla://streams/app2" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt index 1a0786dadb..12e6426ebf 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt @@ -27,20 +27,6 @@ write zilla:begin.ext ${pgsql:beginEx() connected -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -75,6 +61,20 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt index 677c2837d8..12f8316abe 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt @@ -29,18 +29,6 @@ read zilla:begin.ext ${pgsql:beginEx() connected -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - read await CREATE_TOPIC_COMPLETED read zilla:data.ext ${pgsql:dataEx() @@ -76,6 +64,18 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt index e6ead09eab..f8acf2ef3b 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt @@ -32,14 +32,23 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" - [0x00] +write "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " scan.startup.mode='latest',\n" + " scan.startup.timestamp.millis='140000000'\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " schema.registry = 'http://localhost:8081'\n" + ");" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_SOURCE") .build() .build()} @@ -55,23 +64,14 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK zb_catalog.cities_sink\n" - "FROM cities\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " primary_key='id'\n" - ") FORMAT UPSERT ENCODE AVRO (\n" - " schema.registry='http://localhost:8081'\n" - ") KEY ENCODE TEXT;" - [0x00] +write "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS SELECT * FROM cities_source;" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_MATERIALIZED_VIEW") .build() .build()} @@ -82,42 +82,20 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -write "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] +write "CREATE TABLE IF NOT EXISTS cities " + "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SOURCE") + .tag("CREATE_TABLE") .build() .build()} @@ -133,14 +111,14 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS SELECT * FROM cities_source;" - [0x00] +write "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_MATERIALIZED_VIEW") + .tag("CREATE_SINK") .build() .build()} @@ -156,15 +134,23 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE TABLE IF NOT EXISTS cities " - "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" - [0x00] +write "CREATE SINK zb_catalog.cities_sink\n" + "FROM cities\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " primary_key='id'\n" + ") FORMAT UPSERT ENCODE AVRO (\n" + " schema.registry='http://localhost:8081'\n" + ") KEY ENCODE TEXT;" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TABLE") + .tag("CREATE_SINK") .build() .build()} @@ -175,6 +161,20 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt index c4ba6b89e4..3b68df2a48 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt @@ -29,18 +29,29 @@ read zilla:begin.ext ${pgsql:beginEx() connected +read await CREATE_TOPIC_COMPLETED + read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -read "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" - [0x00] +read "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " scan.startup.mode='latest',\n" + " scan.startup.timestamp.millis='140000000'\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " schema.registry = 'http://localhost:8081'\n" + ");" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_SOURCE") .build() .build()} @@ -56,22 +67,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK zb_catalog.cities_sink\n" - "FROM cities\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " primary_key='id'\n" - ") FORMAT UPSERT ENCODE AVRO (\n" - " schema.registry='http://localhost:8081'\n" - ") KEY ENCODE TEXT;" - [0x00] +read "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS SELECT * FROM cities_source;" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SINK") + .tag("CREATE_MATERIALIZED_VIEW") .build() .build()} @@ -82,41 +84,19 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "root") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read await CREATE_TOPIC_COMPLETED - read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -read "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] +read "CREATE TABLE IF NOT EXISTS cities " + "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_SOURCE") + .tag("CREATE_TABLE") .build() .build()} @@ -132,13 +112,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE MATERIALIZED VIEW IF NOT EXISTS cities_view AS SELECT * FROM cities_source;" +read "CREATE SINK zb_catalog.cities_view_sink INTO cities FROM cities_view;" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_MATERIALIZED_VIEW") + .tag("CREATE_SINK") .build() .build()} @@ -154,14 +134,22 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE TABLE IF NOT EXISTS cities " - "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" - [0x00] +read "CREATE SINK zb_catalog.cities_sink\n" + "FROM cities\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " primary_key='id'\n" + ") FORMAT UPSERT ENCODE AVRO (\n" + " schema.registry='http://localhost:8081'\n" + ") KEY ENCODE TEXT;" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TABLE") + .tag("CREATE_SINK") .build() .build()} @@ -172,6 +160,18 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() 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 5afdc3418e..5506438e3e 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 @@ -1562,8 +1562,10 @@ private void decodeCreateTableCommand( String newStatement = ""; int progress = 0; + int user = ZILLABASE_USER_HASH; if (server.commandsProcessed == 0) { + user = DEFAULT_USER_HASH; newStatement = binding.createTopic.generate(table); } else if (server.commandsProcessed == 1) @@ -1593,7 +1595,7 @@ else if (server.commandsProcessed == 5) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1619,8 +1621,10 @@ private void decodeCreateStreamCommand( String newStatement = ""; int progress = 0; + int user = ZILLABASE_USER_HASH; if (server.commandsProcessed == 0) { + user = DEFAULT_USER_HASH; newStatement = binding.createTopic.generate(stream); } else if (server.commandsProcessed == 1) @@ -1634,7 +1638,7 @@ else if (server.commandsProcessed == 1) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1655,7 +1659,6 @@ private void decodeCreateZviewCommand( } else { - int user = DEFAULT_USER_HASH; final RisingwaveBindingConfig binding = server.binding; final View view = parser.parseCreateZView(statement); PgsqlFlushCommand typeCommand = ignoreFlushCommand; @@ -1664,6 +1667,7 @@ private void decodeCreateZviewCommand( String newStatement = ""; int progress = 0; + int user = ZILLABASE_USER_HASH; if (server.commandsProcessed == 0) { newStatement = binding.createView.generate(view); @@ -1677,6 +1681,7 @@ else if (server.commandsProcessed == 1) } else if (server.commandsProcessed == 2) { + user = DEFAULT_USER_HASH; newStatement = binding.createTopic.generate(view, server.columns); } else if (server.commandsProcessed == 3) @@ -1694,7 +1699,7 @@ else if (server.commandsProcessed == 4) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = typeCommand; client.dataCommand = dataCommand; @@ -1767,8 +1772,10 @@ else if (server.commandsProcessed == 2 || String newStatement = ""; int progress = 0; + int user = ZILLABASE_USER_HASH; if (server.commandsProcessed == 0) { + user = DEFAULT_USER_HASH; newStatement = binding.alterTopic.generate(alter); } else if (server.commandsProcessed == 1) @@ -1782,7 +1789,7 @@ else if (server.commandsProcessed == 1) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1822,7 +1829,7 @@ else if (server.commandsProcessed == 0) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1863,8 +1870,10 @@ private void decodeDropTableCommand( String newStatement = ""; int progress = 0; + int user = ZILLABASE_USER_HASH; if (server.commandsProcessed == 0) { + user = DEFAULT_USER_HASH; newStatement = binding.dropTopic.generate(table); } else if (server.commandsProcessed == 1) @@ -1894,7 +1903,7 @@ else if (server.commandsProcessed == 5) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1919,8 +1928,10 @@ private void decodeDropStreamCommand( String newStatement = ""; int progress = 0; + int user = ZILLABASE_USER_HASH; if (server.commandsProcessed == 0) { + user = DEFAULT_USER_HASH; newStatement = binding.dropTopic.generate(stream); } else if (server.commandsProcessed == 1) @@ -1934,7 +1945,7 @@ else if (server.commandsProcessed == 1) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1960,8 +1971,10 @@ private void decodeDropZviewCommand( String newStatement = ""; int progress = 0; + int user = ZILLABASE_USER_HASH; if (server.commandsProcessed == 0) { + user = DEFAULT_USER_HASH; newStatement = binding.dropTopic.generate(view); } else if (server.commandsProcessed == 1) @@ -1983,7 +1996,7 @@ else if (server.commandsProcessed == 3) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); + final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.completionCommand = ignoreFlushCommand; } From 9dee81271ab91f0ac49e987df11646f56b4e303b Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 28 Nov 2024 12:43:56 -0800 Subject: [PATCH 025/104] WIP --- .../client.rpt | 23 ++++++++++++++ .../server.rpt | 22 ++++++++++++++ .../create.table.with.primary.key/client.rpt | 23 ++++++++++++++ .../create.table.with.primary.key/server.rpt | 22 ++++++++++++++ .../query.with.multiple.statements/client.rpt | 23 ++++++++++++++ .../query.with.multiple.statements/server.rpt | 22 ++++++++++++++ .../config/RisingwaveBindingConfig.java | 3 ++ .../RisingwaveGrantToSourceTemplate.java | 30 +++++++++++++++++++ .../stream/RisingwaveProxyFactory.java | 12 ++++++-- 9 files changed, 178 insertions(+), 2 deletions(-) create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveGrantToSourceTemplate.java 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 544876edc3..e58d3f75e1 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 @@ -116,6 +116,29 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "GRANT ALL PRIVILEGES ON TABLE public.cities TO root;" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() 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 5d9111c8bc..186ecdf18e 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 @@ -117,6 +117,28 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "GRANT ALL PRIVILEGES ON TABLE public.cities TO root;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt index 58a8677204..fee300fe55 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt @@ -106,6 +106,29 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "GRANT ALL PRIVILEGES ON TABLE public.cities TO root;" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt index 395a60ed69..f2a7df5bd0 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt @@ -107,6 +107,28 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "GRANT ALL PRIVILEGES ON TABLE public.cities TO root;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt index f8acf2ef3b..bf651b43af 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt @@ -106,6 +106,29 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "GRANT ALL PRIVILEGES ON TABLE public.cities TO root;" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt index 3b68df2a48..b029429758 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt @@ -107,6 +107,28 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "GRANT ALL PRIVILEGES ON TABLE public.cities TO root;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java index 0592d701d2..86acfb2c95 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java @@ -39,6 +39,7 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDropSourceTemplate; import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDropTableTemplate; import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDropTopicTemplate; +import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveGrantToSourceTemplate; import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveInsertIntoCatalogTemplate; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; import io.aklivity.zilla.runtime.engine.config.BindingConfig; @@ -71,6 +72,7 @@ public final class RisingwaveBindingConfig public final RisingwaveDropSinkTemplate dropSink; public final RisingwaveInsertIntoCatalogTemplate catalogInsert; public final RisingwaveDeleteFromCatalogTemplate catalogDelete; + public final RisingwaveGrantToSourceTemplate grantSource; public RisingwaveBindingConfig( RisingwaveConfiguration config, @@ -114,6 +116,7 @@ public RisingwaveBindingConfig( this.createFunction = new RisingwaveCreateFunctionTemplate(options.udfs); this.catalogInsert = new RisingwaveInsertIntoCatalogTemplate(INTERNAL_SCHEMA); this.catalogDelete = new RisingwaveDeleteFromCatalogTemplate(INTERNAL_SCHEMA); + this.grantSource = new RisingwaveGrantToSourceTemplate(); } public RisingwaveRouteConfig resolve( diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveGrantToSourceTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveGrantToSourceTemplate.java new file mode 100644 index 0000000000..963281df2c --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveGrantToSourceTemplate.java @@ -0,0 +1,30 @@ +/* + * Copyright 2021-2024 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; + +public class RisingwaveGrantToSourceTemplate extends RisingwaveCommandTemplate +{ + private final String sqlFormat = """ + GRANT ALL PRIVILEGES ON %s %s.%s TO %s;\u0000"""; + + public String generate( + String source, + String schema, + String name, + String user) + { + return String.format(sqlFormat, source, schema, name, user); + } +} 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 5506438e3e..948086f95d 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 @@ -255,6 +255,7 @@ private final class PgsqlServer private final List columnTypes; private final List columnDescriptions; private final Map columns; + private final String user; private final long initialId; private final long replyId; @@ -317,6 +318,9 @@ private PgsqlServer( streamsByRouteIds.put(clientId, new PgsqlClient(this, routedId, risingwaveRouteId, clientId, ZILLABASE_USER)); + String userValue = parameters.get("user\u0000"); + this.user = userValue.substring(0, userValue.length() - 1); + } private void onAppMessage( @@ -1548,7 +1552,7 @@ private void decodeCreateTableCommand( long authorization, String statement) { - if (server.commandsProcessed == 6 || + if (server.commandsProcessed == 7 || server.commandsProcessed == COMMAND_PROCESSED_ERRORED) { final int length = statement.length(); @@ -1582,9 +1586,13 @@ else if (server.commandsProcessed == 3) } else if (server.commandsProcessed == 4) { - newStatement = binding.createSink.generateInto(table); + newStatement = binding.grantSource.generate("TABLE", table.schema(), table.name(), server.user); } else if (server.commandsProcessed == 5) + { + newStatement = binding.createSink.generateInto(table); + } + else if (server.commandsProcessed == 6) { newStatement = binding.createSink.generateOutgress(table); } From cc6c80e5ead8b3ef6704e5c58ff9a22c5e4be927 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 28 Nov 2024 13:04:46 -0800 Subject: [PATCH 026/104] WIP --- .../create.function.python/client.rpt | 24 +++++++++++++++++++ .../create.function.python/server.rpt | 22 +++++++++++++++++ .../create.function.return.struct/client.rpt | 24 +++++++++++++++++++ .../create.function.return.struct/server.rpt | 21 ++++++++++++++++ .../create.function.return.table/client.rpt | 23 ++++++++++++++++++ .../create.function.return.table/server.rpt | 22 +++++++++++++++++ .../effective/create.function/client.rpt | 23 ++++++++++++++++++ .../effective/create.function/server.rpt | 23 ++++++++++++++++++ .../stream/RisingwaveProxyFactory.java | 6 ++++- 9 files changed, 187 insertions(+), 1 deletion(-) 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 c07a6d60cf..815de6e304 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 @@ -55,6 +55,30 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO root;" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" 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 26066d715d..0a95d3acea 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 @@ -55,6 +55,28 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO root;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + accepted read zilla:begin.ext ${pgsql:beginEx() 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 4431de2d07..d1d78bf81b 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 @@ -55,6 +55,30 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "GRANT ALL PRIVILEGES ON FUNCTION public.key_value TO root;" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" 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 20eab76c11..8bb8aa3c0f 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 @@ -55,6 +55,27 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "GRANT ALL PRIVILEGES ON FUNCTION public.key_value TO root;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} accepted 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 8932399509..e6bf557a4f 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 @@ -54,6 +54,29 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "GRANT ALL PRIVILEGES ON FUNCTION public.series TO root;" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" 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 6af6976df9..fe9263967c 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 @@ -55,6 +55,28 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "GRANT ALL PRIVILEGES ON FUNCTION public.series TO root;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + accepted read zilla:begin.ext ${pgsql:beginEx() 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 d86c5c3f38..7048a796e6 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 @@ -55,6 +55,29 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO root;" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" 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 911b21c7b6..eef65bbf95 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 @@ -55,6 +55,29 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO root;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + accepted read zilla:begin.ext ${pgsql:beginEx() 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 948086f95d..822e22d79b 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 @@ -1721,7 +1721,7 @@ private void decodeCreateFunctionCommand( long authorization, String statement) { - if (server.commandsProcessed == 1 || + if (server.commandsProcessed == 2 || server.commandsProcessed == COMMAND_PROCESSED_ERRORED) { final int length = statement.length(); @@ -1739,6 +1739,10 @@ private void decodeCreateFunctionCommand( { newStatement = binding.createFunction.generate(function); } + else if (server.commandsProcessed == 1) + { + newStatement = binding.grantSource.generate("FUNCTION", function.schema(), function.name(), server.user); + } statementBuffer.putBytes(progress, newStatement.getBytes()); progress += newStatement.length(); From 212872d4cfc0c43de8e50f8b0fd1310123dfe72f Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 28 Nov 2024 13:05:51 -0800 Subject: [PATCH 027/104] Change user --- .../streams/effective/alter.stream.add.column/client.rpt | 4 ++-- .../streams/effective/alter.stream.add.column/server.rpt | 4 ++-- .../streams/effective/alter.table.add.column/client.rpt | 4 ++-- .../streams/effective/alter.table.add.column/server.rpt | 4 ++-- .../streams/effective/client.stream.established/client.rpt | 4 ++-- .../streams/effective/client.stream.established/server.rpt | 4 ++-- .../effective/create.function.embedded.python/client.rpt | 2 +- .../effective/create.function.embedded.python/server.rpt | 2 +- .../streams/effective/create.function.embedded/client.rpt | 2 +- .../streams/effective/create.function.embedded/server.rpt | 2 +- .../streams/effective/create.function.python/client.rpt | 4 ++-- .../streams/effective/create.function.python/server.rpt | 4 ++-- .../effective/create.function.return.struct/client.rpt | 4 ++-- .../effective/create.function.return.struct/server.rpt | 4 ++-- .../effective/create.function.return.table/client.rpt | 4 ++-- .../effective/create.function.return.table/server.rpt | 4 ++-- .../risingwave/streams/effective/create.function/client.rpt | 4 ++-- .../risingwave/streams/effective/create.function/server.rpt | 4 ++-- .../effective/create.stream.with.includes/client.rpt | 4 ++-- .../effective/create.stream.with.includes/server.rpt | 4 ++-- .../risingwave/streams/effective/create.stream/client.rpt | 4 ++-- .../risingwave/streams/effective/create.stream/server.rpt | 4 ++-- .../risingwave/streams/effective/create.streams/client.rpt | 4 ++-- .../risingwave/streams/effective/create.streams/server.rpt | 4 ++-- .../create.table.with.primary.key.and.includes/client.rpt | 6 +++--- .../create.table.with.primary.key.and.includes/server.rpt | 6 +++--- .../effective/create.table.with.primary.key/client.rpt | 6 +++--- .../effective/create.table.with.primary.key/server.rpt | 6 +++--- .../risingwave/streams/effective/create.zview/client.rpt | 4 ++-- .../risingwave/streams/effective/create.zview/server.rpt | 4 ++-- .../risingwave/streams/effective/drop.stream/client.rpt | 4 ++-- .../risingwave/streams/effective/drop.stream/server.rpt | 4 ++-- .../risingwave/streams/effective/drop.table/client.rpt | 4 ++-- .../risingwave/streams/effective/drop.table/server.rpt | 4 ++-- .../risingwave/streams/effective/drop.zview/client.rpt | 4 ++-- .../risingwave/streams/effective/drop.zview/server.rpt | 4 ++-- .../query.with.multiple.statements.errored/client.rpt | 4 ++-- .../query.with.multiple.statements.errored/server.rpt | 4 ++-- .../effective/query.with.multiple.statements/client.rpt | 6 +++--- .../effective/query.with.multiple.statements/server.rpt | 6 +++--- .../risingwave/streams/effective/set.variable/client.rpt | 2 +- .../risingwave/streams/effective/set.variable/server.rpt | 2 +- .../streams/effective/show.tables.with.newline/client.rpt | 2 +- .../streams/effective/show.tables.with.newline/server.rpt | 2 +- .../streams/pgsql/alter.stream.add.column/client.rpt | 2 +- .../streams/pgsql/alter.stream.add.column/server.rpt | 2 +- .../pgsql/alter.stream.modify.column.rejected/client.rpt | 2 +- .../pgsql/alter.stream.modify.column.rejected/server.rpt | 2 +- .../streams/pgsql/alter.table.add.column/client.rpt | 2 +- .../streams/pgsql/alter.table.add.column/server.rpt | 2 +- .../pgsql/alter.table.modify.column.rejected/client.rpt | 2 +- .../pgsql/alter.table.modify.column.rejected/server.rpt | 2 +- .../pgsql/create.function.embedded.python/client.rpt | 2 +- .../pgsql/create.function.embedded.python/server.rpt | 2 +- .../streams/pgsql/create.function.embedded/client.rpt | 2 +- .../streams/pgsql/create.function.embedded/server.rpt | 2 +- .../streams/pgsql/create.function.python/client.rpt | 2 +- .../streams/pgsql/create.function.python/server.rpt | 2 +- .../streams/pgsql/create.function.return.struct/client.rpt | 2 +- .../streams/pgsql/create.function.return.struct/server.rpt | 2 +- .../streams/pgsql/create.function.return.table/client.rpt | 2 +- .../streams/pgsql/create.function.return.table/server.rpt | 2 +- .../risingwave/streams/pgsql/create.function/client.rpt | 2 +- .../risingwave/streams/pgsql/create.function/server.rpt | 2 +- .../streams/pgsql/create.stream.with.includes/client.rpt | 2 +- .../streams/pgsql/create.stream.with.includes/server.rpt | 2 +- .../risingwave/streams/pgsql/create.stream/client.rpt | 2 +- .../risingwave/streams/pgsql/create.stream/server.rpt | 2 +- .../risingwave/streams/pgsql/create.streams/client.rpt | 2 +- .../risingwave/streams/pgsql/create.streams/server.rpt | 2 +- .../create.table.with.primary.key.and.includes/client.rpt | 2 +- .../create.table.with.primary.key.and.includes/server.rpt | 2 +- .../streams/pgsql/create.table.with.primary.key/client.rpt | 2 +- .../streams/pgsql/create.table.with.primary.key/server.rpt | 2 +- .../risingwave/streams/pgsql/create.zview/client.rpt | 2 +- .../risingwave/streams/pgsql/create.zview/server.rpt | 2 +- .../binding/risingwave/streams/pgsql/drop.stream/client.rpt | 2 +- .../binding/risingwave/streams/pgsql/drop.stream/server.rpt | 2 +- .../binding/risingwave/streams/pgsql/drop.table/client.rpt | 2 +- .../binding/risingwave/streams/pgsql/drop.table/server.rpt | 2 +- .../binding/risingwave/streams/pgsql/drop.zview/client.rpt | 2 +- .../binding/risingwave/streams/pgsql/drop.zview/server.rpt | 2 +- .../pgsql/query.with.multiple.statements.errored/client.rpt | 2 +- .../pgsql/query.with.multiple.statements.errored/server.rpt | 2 +- .../streams/pgsql/query.with.multiple.statements/client.rpt | 2 +- .../streams/pgsql/query.with.multiple.statements/server.rpt | 2 +- .../risingwave/streams/pgsql/set.variable/client.rpt | 2 +- .../risingwave/streams/pgsql/set.variable/server.rpt | 2 +- .../streams/pgsql/show.tables.with.newline/client.rpt | 2 +- .../streams/pgsql/show.tables.with.newline/server.rpt | 2 +- 90 files changed, 132 insertions(+), 132 deletions(-) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt index 4b3d9e6bd3..db81442dff 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt @@ -33,7 +33,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -47,7 +47,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt index 9db50357d7..d1b12252e0 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt @@ -33,7 +33,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -50,7 +50,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt index 6f0eb73163..02130cffe1 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt @@ -56,7 +56,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -70,7 +70,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt index d0f8a4bf0d..4c12efaea1 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt @@ -57,7 +57,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -73,7 +73,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt index 09fbfd412f..864b56fd5e 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt @@ -65,7 +65,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -79,7 +79,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/server.rpt index 2d378b0343..2c0eb87d14 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/server.rpt @@ -33,7 +33,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -49,7 +49,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/client.rpt index 758510cac0..15d845c9d9 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/client.rpt @@ -33,7 +33,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/server.rpt index 2b3434f7ec..ec8efafccc 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/server.rpt @@ -33,7 +33,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/client.rpt index 14e8834ca5..3811b7a5ab 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/client.rpt @@ -33,7 +33,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/server.rpt index c559e69ece..87c83e01fc 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/server.rpt @@ -33,7 +33,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 815de6e304..a1aef923d1 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 @@ -61,7 +61,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO root;" +write "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO app;" [0x00] write flush @@ -85,7 +85,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 0a95d3acea..8a6e6d8b70 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 @@ -60,7 +60,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO root;" +read "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO app;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -81,7 +81,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 d1d78bf81b..43bdf1b732 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 @@ -61,7 +61,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "GRANT ALL PRIVILEGES ON FUNCTION public.key_value TO root;" +write "GRANT ALL PRIVILEGES ON FUNCTION public.key_value TO app;" [0x00] write flush @@ -85,7 +85,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 8bb8aa3c0f..c4a5d1520b 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 @@ -60,7 +60,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "GRANT ALL PRIVILEGES ON FUNCTION public.key_value TO root;" +read "GRANT ALL PRIVILEGES ON FUNCTION public.key_value TO app;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -81,7 +81,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 e6bf557a4f..577eab5609 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 @@ -59,7 +59,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "GRANT ALL PRIVILEGES ON FUNCTION public.series TO root;" +write "GRANT ALL PRIVILEGES ON FUNCTION public.series TO app;" [0x00] write flush @@ -83,7 +83,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 fe9263967c..c5a0bfab9f 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 @@ -60,7 +60,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "GRANT ALL PRIVILEGES ON FUNCTION public.series TO root;" +read "GRANT ALL PRIVILEGES ON FUNCTION public.series TO app;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -81,7 +81,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 7048a796e6..543513a4ef 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 @@ -60,7 +60,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO root;" +write "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO app;" [0x00] write flush @@ -84,7 +84,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 eef65bbf95..cdab9ac648 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 @@ -61,7 +61,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO root;" +read "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO app;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -82,7 +82,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 66cac4a7ae..2a4f7d818a 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 @@ -68,7 +68,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -82,7 +82,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 cb579f8b54..cead1c1e0b 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 @@ -69,7 +69,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -85,7 +85,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt index 09fbfd412f..864b56fd5e 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt @@ -65,7 +65,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -79,7 +79,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt index 8331671cb7..8122b406e3 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt @@ -66,7 +66,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -82,7 +82,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt index 4be0abc0fa..dc61f2cea2 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt @@ -97,7 +97,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -111,7 +111,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt index ea466ea88b..645d1c85d3 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt @@ -97,7 +97,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -113,7 +113,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 e58d3f75e1..aea654d790 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 @@ -121,7 +121,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "GRANT ALL PRIVILEGES ON TABLE public.cities TO root;" +write "GRANT ALL PRIVILEGES ON TABLE public.cities TO app;" [0x00] write flush @@ -200,7 +200,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -214,7 +214,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 186ecdf18e..1c08badfc6 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 @@ -122,7 +122,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "GRANT ALL PRIVILEGES ON TABLE public.cities TO root;" +read "GRANT ALL PRIVILEGES ON TABLE public.cities TO app;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -196,7 +196,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -212,7 +212,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt index fee300fe55..8e1a9a7bbf 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt @@ -111,7 +111,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "GRANT ALL PRIVILEGES ON TABLE public.cities TO root;" +write "GRANT ALL PRIVILEGES ON TABLE public.cities TO app;" [0x00] write flush @@ -190,7 +190,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -204,7 +204,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt index f2a7df5bd0..9c73ff870c 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt @@ -112,7 +112,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "GRANT ALL PRIVILEGES ON TABLE public.cities TO root;" +read "GRANT ALL PRIVILEGES ON TABLE public.cities TO app;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -186,7 +186,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -202,7 +202,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt index bdfce8aeeb..be8d157cb9 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt @@ -207,7 +207,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -221,7 +221,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt index 239bad85ab..2fc1bd6125 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt @@ -210,7 +210,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -226,7 +226,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt index 528ef6b712..ce29d13d64 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt @@ -56,7 +56,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -70,7 +70,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt index d4c410b98f..bd61f7ed72 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt @@ -57,7 +57,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -73,7 +73,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt index 90d9ff27f6..d8d5287cad 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt @@ -148,7 +148,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -162,7 +162,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt index ba494fc089..e7c074d951 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt @@ -145,7 +145,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -161,7 +161,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt index 2c02827908..b17302ad3a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt @@ -103,7 +103,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -117,7 +117,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt index 01b3ee53f0..72b5052705 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt @@ -100,7 +100,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -116,7 +116,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt index 12e6426ebf..a94ca0b89d 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt @@ -67,7 +67,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -104,7 +104,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt index 12f8316abe..60eaa5fc85 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt @@ -68,7 +68,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -106,7 +106,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt index bf651b43af..6be23273f2 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt @@ -111,7 +111,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "GRANT ALL PRIVILEGES ON TABLE public.cities TO root;" +write "GRANT ALL PRIVILEGES ON TABLE public.cities TO app;" [0x00] write flush @@ -190,7 +190,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -227,7 +227,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt index b029429758..e46fc529b0 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt @@ -112,7 +112,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "GRANT ALL PRIVILEGES ON TABLE public.cities TO root;" +read "GRANT ALL PRIVILEGES ON TABLE public.cities TO app;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -186,7 +186,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -224,7 +224,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/client.rpt index 4946ad0270..c953e14921 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/client.rpt @@ -33,7 +33,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/server.rpt index 5cfc11bd9a..413947e6a0 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/server.rpt @@ -33,7 +33,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/client.rpt index 072fc5f0ee..973ef5e4ab 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/client.rpt @@ -33,7 +33,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/server.rpt index 7e1aa68965..3d55f1cf56 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/server.rpt @@ -33,7 +33,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/client.rpt index d8e6bd61ca..c5718e47ff 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/client.rpt @@ -20,7 +20,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt index 4df84e0ded..2135e6de29 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt index f58bf8df76..d3ac322ab9 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt index 662bb8b49a..c4e764908a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.add.column/client.rpt index f31e76f034..426ab704cd 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.add.column/client.rpt @@ -20,7 +20,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.add.column/server.rpt index 51f438ae19..9d92c3f447 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.add.column/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.modify.column.rejected/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.modify.column.rejected/client.rpt index 1eb6564d53..3089f09f9c 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.modify.column.rejected/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.modify.column.rejected/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.modify.column.rejected/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.modify.column.rejected/server.rpt index c9bfe3afe8..51af902532 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.modify.column.rejected/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.modify.column.rejected/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded.python/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded.python/client.rpt index de81506c34..d5bd599d07 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded.python/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded.python/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded.python/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded.python/server.rpt index 0a3034a34a..443f0a0789 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded.python/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded.python/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded/client.rpt index 1c5bc98ed1..da966e7de3 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded/server.rpt index 11763f41ae..61f02331cb 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 cdb9e17590..5743663f5b 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 @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 cf3446bb03..17a18c0a37 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 @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 ebeff003a0..ecb1a85122 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 @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 837b07f25d..e935a29277 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 @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 2fbd1f484d..2994e3e31a 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 @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 1d917a8a02..1a41a2beb6 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 @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 14dd75624c..602e61dc72 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 @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 ee0683d601..a7a67bb86e 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 @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 27db8e7f31..d6e72191a1 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 @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 8237e5affb..2f6ace88dc 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 @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/client.rpt index 22a5814c91..ddf2c5c990 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/server.rpt index 5a671eac54..81cbbcfd7f 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/client.rpt index 654a80b42c..da276503e5 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/server.rpt index a554504f89..952efb6b8a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 d8dc7a3d26..2bf28eebab 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 @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 82d2b95e88..c4adad606f 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 @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key/client.rpt index e5e6a32c39..9a4f417a13 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key/server.rpt index 4a86cf41ea..6c172b0db7 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/client.rpt index d1f4c57a5e..a47f3d74b2 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/server.rpt index 65c9832011..a001a3e0a5 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/client.rpt index 6719ed9414..4fa3fc1ef3 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/server.rpt index 271d2431c8..60c210249c 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.table/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.table/client.rpt index 8006349e0d..593846bdfb 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.table/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.table/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.table/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.table/server.rpt index 36ac9ec3df..fdc6bce367 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.table/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.table/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/client.rpt index 506debfee0..51142ae4ae 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/server.rpt index 1f3866c15c..f61c2b2d6f 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/client.rpt index 7eacb2a446..aebeed5450 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/server.rpt index 445e7426ce..de6655efd6 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/client.rpt index 406e29d5fd..6838351c29 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/server.rpt index ffb1607413..742ea02bb7 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/set.variable/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/set.variable/client.rpt index 7639e15634..47da738c0e 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/set.variable/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/set.variable/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/set.variable/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/set.variable/server.rpt index 32af983000..bc89f126ce 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/set.variable/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/set.variable/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.tables.with.newline/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.tables.with.newline/client.rpt index 32eb06f805..0c739d5226 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.tables.with.newline/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.tables.with.newline/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.tables.with.newline/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.tables.with.newline/server.rpt index 1bb91dbd31..f0d34142f6 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.tables.with.newline/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.tables.with.newline/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "root") + .parameter("user", "app") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") From 21e6963770f993a71ff26da827394405e9047bf7 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 28 Nov 2024 13:30:02 -0800 Subject: [PATCH 028/104] Checkpoint --- .../internal/statement/RisingwaveInsertIntoCatalogTemplate.java | 1 + 1 file changed, 1 insertion(+) diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveInsertIntoCatalogTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveInsertIntoCatalogTemplate.java index 61fb569586..772b921f3d 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveInsertIntoCatalogTemplate.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveInsertIntoCatalogTemplate.java @@ -32,6 +32,7 @@ public String generate( String statement) { statement = statement.replace("ZVIEW", "MATERIALIZED VIEW"); + statement = statement.replace("\u0000", ""); return String.format(sqlFormat, schema, catalog, name, statement); } } From e4377a0886d47dca1961cd62a9c31c87937e6908 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 28 Nov 2024 13:33:13 -0800 Subject: [PATCH 029/104] Update the script --- .../risingwave/streams/effective/create.zview/client.rpt | 4 +--- .../risingwave/streams/effective/create.zview/server.rpt | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt index be8d157cb9..75968ad335 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt @@ -181,9 +181,7 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "INSERT INTO zb_catalog.zviews (name, sql) VALUES " - "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;" - [0x00] - "');" + "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;');" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt index 2fc1bd6125..b5c4bbd1e8 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt @@ -186,9 +186,7 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read "INSERT INTO zb_catalog.zviews (name, sql) VALUES " - "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;" - [0x00] - "');" + "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;');" [0x00] write advise zilla:flush ${pgsql:flushEx() From b052c586389c2cbcd64475db873486244819fb0c Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Fri, 29 Nov 2024 14:14:57 -0800 Subject: [PATCH 030/104] WIP --- .../application/select.table/server.rpt | 12 +- .../streams/effective/show.zviews/client.rpt | 101 +++++++++++++++++ .../streams/effective/show.zviews/server.rpt | 103 ++++++++++++++++++ .../streams/pgsql/show.zviews/client.rpt | 77 +++++++++++++ .../streams/pgsql/show.zviews/server.rpt | 79 ++++++++++++++ .../risingwave/streams/EffectiveIT.java | 9 ++ .../binding/risingwave/streams/PgsqlIT.java | 9 ++ 7 files changed, 384 insertions(+), 6 deletions(-) create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/client.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/server.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/client.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/server.rpt diff --git a/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/select.table/server.rpt b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/select.table/server.rpt index f5a592fa37..69b632d900 100644 --- a/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/select.table/server.rpt +++ b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/select.table/server.rpt @@ -78,12 +78,12 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write [0x00 0x03] # Field Count - [0x00 0x00 0x00 0x04] # Length - [0x31 0x39 0x36 0x34] # Data - [0x00 0x00 0x00 0x0a] # Length - [0x31 0x37 0x32 0x33 0x35 0x39 0x33 0x31 0x31 0x33] # Data - [0x00 0x00 0x00 0x04] # Length - [0x5c 0x78 0x33 0x31] # Data + [0x00 0x00 0x00 0x04] # Length + [0x31 0x39 0x36 0x34] # Data + [0x00 0x00 0x00 0x0a] # Length + [0x31 0x37 0x32 0x33 0x35 0x39 0x33 0x31 0x31 0x33] # Data + [0x00 0x00 0x00 0x04] # Length + [0x5c 0x78 0x33 0x31] # Data write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/client.rpt new file mode 100644 index 0000000000..20d67ffb4a --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/client.rpt @@ -0,0 +1,101 @@ +# +# Copyright 2021-2024 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. +# + +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "SELECT * FROM zb_catalog.zviews;" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("sql") + .tableOid(0) + .index(0) + .typeOid(20) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +read [0x00 0x02] # Field Count + [0x00 0x00 0x00 0x04] # Length + [0x31 0x39 0x36 0x34] # Data + [0x00 0x00 0x00 0x65] # Length + "CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS" # Data + " SELECT id, city FROM weather GROUP BY city;" + + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SELECT 1") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "app") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/server.rpt new file mode 100644 index 0000000000..b5812754a4 --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/server.rpt @@ -0,0 +1,103 @@ +# +# Copyright 2021-2024 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. +# + +accept "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "SELECT * FROM zb_catalog.zviews;" +read [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("sql") + .tableOid(0) + .index(0) + .typeOid(20) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +write [0x00 0x02] # Field Count + [0x00 0x00 0x00 0x04] # Length + [0x31 0x39 0x36 0x34] # Data + [0x00 0x00 0x00 0x65] # Length + "CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS" # Data + " SELECT id, city FROM weather GROUP BY city;" +write flush + + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SELECT 1") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "app") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/client.rpt new file mode 100644 index 0000000000..003744808c --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/client.rpt @@ -0,0 +1,77 @@ +# +# Copyright 2021-2024 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. +# + +connect "zilla://streams/app0" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "app") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "SHOW ZVIEWS;" + [0x00] + +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("Name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +read [0x00 0x01] # Field Count + [0x00 0x00 0x00 0x04] # Length + [0x31 0x39 0x36 0x34] # Data + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SHOW_COMMAND") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/server.rpt new file mode 100644 index 0000000000..af0d84f26e --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/server.rpt @@ -0,0 +1,79 @@ +# +# Copyright 2021-2024 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. +# + +property serverAddress "zilla://streams/app0" + +accept ${serverAddress} + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "app") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "SHOW ZVIEWS;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("Name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} +write flush + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +write [0x00 0x01] # Field Count + [0x00 0x00 0x00 0x04] # Length + [0x31 0x39 0x36 0x34] # Data + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SHOW_COMMAND") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java index 0f07415379..5dfa9a0fd5 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java @@ -235,4 +235,13 @@ public void shouldAlterStreamAddColumn() throws Exception { k3po.finish(); } + + @Test + @Specification({ + "${app}/show.zviews/client", + "${app}/show.zviews/server" }) + public void shouldShowZviews() throws Exception + { + k3po.finish(); + } } diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java index e29f493769..6c0303d11b 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java @@ -251,4 +251,13 @@ public void shouldNotAlterStreamModifyColumn() throws Exception { k3po.finish(); } + + @Test + @Specification({ + "${app}/show.zviews/client", + "${app}/show.zviews/server" }) + public void shouldShowZviews() throws Exception + { + k3po.finish(); + } } From 5401488a612f428a076d173a826770e87a05af86 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Fri, 29 Nov 2024 15:14:00 -0800 Subject: [PATCH 031/104] WIP --- .../binding/pgsql/parser/PostgreSqlLexer.g4 | 4 ++ .../binding/pgsql/parser/PostgreSqlParser.g4 | 13 ++++++ .../binding/pgsql/parser/PgsqlParser.java | 10 +++++ .../parser/listener/SqlShowListener.java | 42 +++++++++++++++++++ .../binding/pgsql/parser/PgsqlParserTest.java | 9 ++++ 5 files changed, 78 insertions(+) create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlShowListener.java 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 4a399379c8..bb14a03af0 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 @@ -289,10 +289,14 @@ TO: 'TO'; TOPIC: 'TOPIC'; +TOPICS: 'TOPICS'; + STREAM: 'STREAM'; ZVIEW: 'ZVIEW'; +ZVIEWS: 'ZVIEWS'; + 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 c7f6c509a7..7c755c1fb6 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 @@ -121,6 +121,7 @@ stmt | definestmt | deletestmt | discardstmt + | showstmt | dostmt | dropcaststmt | dropopclassstmt @@ -1613,6 +1614,18 @@ reassignownedstmt : REASSIGN OWNED BY role_list TO rolespec ; +showstmt + : SHOW show_object_type_name + ; + +show_object_type_name + : TABLES + | VIEWS + | MATERIALIZED VIEWS + | TOPICS + | ZVIEWS + ; + 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 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 773dfdb373..d94217b133 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 @@ -30,6 +30,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateTableTopicListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateZviewListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlDropListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlShowListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; @@ -51,6 +52,7 @@ public final class PgsqlParser private final SqlAlterStreamTopicListener alterStreamListener; private final SqlCreateFunctionListener createFunctionListener; private final SqlCreateZviewListener createMaterializedViewListener; + private final SqlShowListener showListener; private final SqlDropListener dropListener; public PgsqlParser() @@ -68,6 +70,7 @@ public PgsqlParser() this.createFunctionListener = new SqlCreateFunctionListener(tokens); this.createMaterializedViewListener = new SqlCreateZviewListener(tokens); this.dropListener = new SqlDropListener(); + this.showListener = new SqlShowListener(); parser.setErrorHandler(errorStrategy); } @@ -127,6 +130,13 @@ public List parseDrop( return dropListener.drops(); } + public String parseShow( + String sql) + { + parser(sql, showListener); + return showListener.type(); + } + private void parser( String sql, PostgreSqlParserBaseListener listener) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlShowListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlShowListener.java new file mode 100644 index 0000000000..1e22a5fbdb --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlShowListener.java @@ -0,0 +1,42 @@ +/* + * Copyright 2021-2024 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 SqlShowListener extends PostgreSqlParserBaseListener +{ + private String type; + + public String type() + { + return type; + } + + @Override + public void enterRoot( + PostgreSqlParser.RootContext ctx) + { + this.type = null; + } + + @Override + public void enterShowstmt( + PostgreSqlParser.ShowstmtContext ctx) + { + this.type = ctx.show_object_type_name().getText(); + } +} 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 0230515dba..d64102057d 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 @@ -506,4 +506,13 @@ public void shouldParseAlterStreamModifyColumn() assertEquals("existing_column", alter.expressions().get(0).columnName()); assertEquals("VARCHAR(100)", alter.expressions().get(0).columnType()); } + + @Test + public void shouldParseShowZviews() + { + String sql = "SHOW ZVIEWS;"; + String type = parser.parseShow(sql); + + assertEquals("ZVIEWS", type); + } } From 7fc64be4dcb52cc793ca77666fcccf127f243965 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Sat, 30 Nov 2024 12:35:13 -0800 Subject: [PATCH 032/104] WIP --- .../parser/listener/SqlCommandListener.java | 12 ++ .../streams/pgsql/show.zviews/client.rpt | 46 +++---- incubator/binding-risingwave/pom.xml | 2 +- .../config/RisingwaveBindingConfig.java | 3 + .../config/RisingwaveCommandType.java | 1 + .../statement/RisingwaveShowTypeTemplate.java | 27 ++++ .../stream/RisingwaveCompletionCommand.java | 3 +- .../stream/RisingwaveProxyFactory.java | 126 ++++++++++++++++-- .../src/main/zilla/protocol.idl | 32 +++++ .../risingwave/internal/stream/ProxyIT.java | 10 ++ 10 files changed, 228 insertions(+), 34 deletions(-) create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveShowTypeTemplate.java create mode 100644 incubator/binding-risingwave/src/main/zilla/protocol.idl 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 a5240d9ec9..cbe323f002 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 @@ -82,6 +82,18 @@ public void enterCreatezviewstmt( command = "CREATE ZVIEW"; } + @Override + public void enterShowstmt( + PostgreSqlParser.ShowstmtContext ctx) + { + String type = ctx.show_object_type_name().getText(); + + if ("ZVIEWS".equals(type)) + { + command = "SHOW ZVIEWS"; + } + } + @Override public void enterCreatefunctionstmt( PostgreSqlParser.CreatefunctionstmtContext ctx) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/client.rpt index 003744808c..60fd90f078 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/client.rpt @@ -45,33 +45,33 @@ read advised zilla:flush ${pgsql:flushEx() .tableOid(0) .index(0) .typeOid(701) - .length(8) + .length(4) .modifier(-1) .format("TEXT") .build() .build() .build()} -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .row() - .build() - .build()} -read [0x00 0x01] # Field Count - [0x00 0x00 0x00 0x04] # Length - [0x31 0x39 0x36 0x34] # Data - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("SHOW_COMMAND") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} +#read zilla:data.ext ${pgsql:dataEx() +# .typeId(zilla:id("pgsql")) +# .row() +# .build() +# .build()} +#read [0x00 0x01] # Field Count +# [0x00 0x00 0x00 0x04] # Length +# [0x31 0x39 0x36 0x34] # Data +# +#read advised zilla:flush ${pgsql:flushEx() +# .typeId(zilla:id("pgsql")) +# .completion() +# .tag("SHOW_COMMAND") +# .build() +# .build()} +# +#read advised zilla:flush ${pgsql:flushEx() +# .typeId(zilla:id("pgsql")) +# .ready() +# .status("IDLE") +# .build() +# .build()} diff --git a/incubator/binding-risingwave/pom.xml b/incubator/binding-risingwave/pom.xml index a087cd9681..40224a7ec0 100644 --- a/incubator/binding-risingwave/pom.xml +++ b/incubator/binding-risingwave/pom.xml @@ -100,7 +100,7 @@ flyweight-maven-plugin ${project.version} - core pgsql + core pgsql protocol io.aklivity.zilla.runtime.binding.risingwave.internal.types diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java index 86acfb2c95..b2de83dfd7 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java @@ -41,6 +41,7 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDropTopicTemplate; import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveGrantToSourceTemplate; import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveInsertIntoCatalogTemplate; +import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveShowTypeTemplate; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; import io.aklivity.zilla.runtime.engine.config.BindingConfig; import io.aklivity.zilla.runtime.engine.config.CatalogedConfig; @@ -73,6 +74,7 @@ public final class RisingwaveBindingConfig public final RisingwaveInsertIntoCatalogTemplate catalogInsert; public final RisingwaveDeleteFromCatalogTemplate catalogDelete; public final RisingwaveGrantToSourceTemplate grantSource; + public final RisingwaveShowTypeTemplate showType; public RisingwaveBindingConfig( RisingwaveConfiguration config, @@ -117,6 +119,7 @@ public RisingwaveBindingConfig( this.catalogInsert = new RisingwaveInsertIntoCatalogTemplate(INTERNAL_SCHEMA); this.catalogDelete = new RisingwaveDeleteFromCatalogTemplate(INTERNAL_SCHEMA); this.grantSource = new RisingwaveGrantToSourceTemplate(); + this.showType = new RisingwaveShowTypeTemplate(); } public RisingwaveRouteConfig resolve( diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java index bfdacdd9e2..65297a968c 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java @@ -30,6 +30,7 @@ public enum RisingwaveCommandType DROP_TABLE_COMMAND("DROP TABLE".getBytes()), DROP_STREAM_COMMAND("DROP STREAM".getBytes()), DROP_ZVIEW_COMMAND("DROP ZVIEW".getBytes()), + SHOW_ZVIEWS_COMMAND("SHOW ZVIEWS".getBytes()), UNKNOWN_COMMAND("UNKNOWN".getBytes()); private final byte[] value; diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveShowTypeTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveShowTypeTemplate.java new file mode 100644 index 0000000000..e911054200 --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveShowTypeTemplate.java @@ -0,0 +1,27 @@ +/* + * Copyright 2021-2024 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; + +public class RisingwaveShowTypeTemplate extends RisingwaveCommandTemplate +{ + private final String sqlFormat = """ + SELECT * FROM zb_catalog.%s;\u0000"""; + + public String generate( + String type) + { + return String.format(sqlFormat, type.toLowerCase()); + } +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java index f22669e190..2311884711 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java @@ -25,7 +25,8 @@ public enum RisingwaveCompletionCommand ALTER_STREAM_COMMAND("ALTER_STREAM".getBytes()), DROP_TABLE_COMMAND("DROP_TABLE".getBytes()), DROP_STREAM_COMMAND("DROP_STREAM".getBytes()), - DROP_ZVIEW_COMMAND("DROP_ZVIEW".getBytes()); + DROP_ZVIEW_COMMAND("DROP_ZVIEW".getBytes()), + SHOW_COMMAND("SHOW_ZVIEW".getBytes()); private final byte[] value; 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 822e22d79b..0cbf391aa3 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 @@ -49,6 +49,8 @@ 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; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.codec.RisingwaveDataRowFW; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.codec.RisingwaveDataRowFieldFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.AbortFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.BeginFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.DataFW; @@ -58,6 +60,7 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlBeginExFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlDataExFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFormat; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlStatus; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.ResetFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.WindowFW; @@ -128,6 +131,9 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory private final ResetFW.Builder resetRW = new ResetFW.Builder(); private final WindowFW.Builder windowRW = new WindowFW.Builder(); + private final RisingwaveDataRowFW.Builder dataRowRW = new RisingwaveDataRowFW.Builder(); + private final RisingwaveDataRowFieldFW.Builder dataRowFieldRW = new RisingwaveDataRowFieldFW.Builder(); + private final BufferPool bufferPool; private final RisingwaveConfiguration config; private final MutableDirectBuffer writeBuffer; @@ -143,12 +149,14 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory private final Long2ObjectHashMap bindings; private final int pgsqlTypeId; + private final PgsqlFlushCommand showColumnFlushCommand = this::showColumnFlushCommand; private final PgsqlFlushCommand typeFlushCommand = this::typeFlushCommand; private final PgsqlFlushCommand proxyFlushCommand = this::proxyFlushCommand; private final PgsqlFlushCommand ignoreFlushCommand = this::ignoreFlushCommand; private final PgsqlDataCommand proxyDataCommand = this::proxyDataCommand; private final PgsqlDataCommand rowDataCommand = this::rowDataCommand; + private final PgsqlDataCommand showColumnDataCommand = this::showColumnDataCommand; private final Object2ObjectHashMap clientTransforms; { @@ -163,6 +171,7 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory clientTransforms.put(RisingwaveCommandType.DROP_STREAM_COMMAND, this::decodeDropStreamCommand); clientTransforms.put(RisingwaveCommandType.DROP_TABLE_COMMAND, this::decodeDropTableCommand); clientTransforms.put(RisingwaveCommandType.DROP_ZVIEW_COMMAND, this::decodeDropZviewCommand); + clientTransforms.put(RisingwaveCommandType.SHOW_ZVIEWS_COMMAND, this::decodeShowCommand); clientTransforms.put(RisingwaveCommandType.UNKNOWN_COMMAND, this::decodeUnknownCommand); this.clientTransforms = clientTransforms; } @@ -495,16 +504,16 @@ private void onAppWindow( final long budgetId = window.budgetId(); final int padding = window.padding(); - assert acknowledge <= sequence; - assert acknowledge >= replyAck; - assert maximum + acknowledge >= replyMax + replyAck; + //assert acknowledge <= sequence; + //assert acknowledge >= replyAck; + //assert maximum + acknowledge >= replyMax + replyAck; replyBudgetId = budgetId; replyAck = acknowledge; replyMax = maximum; replyPadding = padding; - assert replyAck <= replySeq; + //assert replyAck <= replySeq; state = RisingwaveState.openReply(state); @@ -615,7 +624,7 @@ private void doAppData( DirectBuffer buffer, int offset, int limit, - OctetsFW extension) + Flyweight extension) { responses.add(clientId); @@ -1077,10 +1086,10 @@ private void onAppCompletionFlush( private void onAppErrorFlush( long traceId, long authorization, - PgsqlFlushExFW pgsqlFlushEx) + PgsqlFlushExFW flushEx) { messageOffset = 0; - server.doAppFlush(traceId, authorization, pgsqlFlushEx); + server.doAppFlush(traceId, authorization, flushEx); server.commandsProcessed = COMMAND_PROCESSED_ERRORED; } @@ -1353,7 +1362,7 @@ private void doData( DirectBuffer buffer, int offset, int length, - OctetsFW extension) + Flyweight extension) { final DataFW data = dataRW.wrap(writeBuffer, 0, writeBuffer.capacity()) .originId(originId) @@ -1368,7 +1377,7 @@ private void doData( .budgetId(budgetId) .reserved(reserved) .payload(buffer, offset, length) - .extension(extension) + .extension(extension.buffer(), extension.offset(), extension.sizeof()) .build(); receiver.accept(data.typeId(), data.buffer(), data.offset(), data.sizeof()); @@ -2014,6 +2023,38 @@ else if (server.commandsProcessed == 3) } } + private void decodeShowCommand( + PgsqlServer server, + long traceId, + long authorization, + String statement) + { + if (server.commandsProcessed == 1) + { + final int length = statement.length(); + server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.SHOW_COMMAND); + } + else + { + final RisingwaveBindingConfig binding = server.binding; + final String type = parser.parseShow(statement); + + int progress = 0; + String newStatement = binding.showType.generate(type); + + statementBuffer.putBytes(progress, newStatement.getBytes()); + progress += newStatement.length(); + + final RisingwaveRouteConfig route = + server.binding.resolve(authorization, statementBuffer, 0, progress); + + final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); + client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); + client.typeCommand = showColumnFlushCommand; + client.dataCommand = showColumnDataCommand; + } + } + private void decodeUnknownCommand( PgsqlServer server, long traceId, @@ -2074,6 +2115,30 @@ private void typeFlushCommand( }); } + private void showColumnFlushCommand( + PgsqlServer server, + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + PgsqlFlushExFW descriptionEx = flushExRW.wrap(extBuffer, 0, extBuffer.capacity()) + .typeId(pgsqlTypeId) + .type(t -> t + .columns(c -> c + .item(s -> s + .name("Name") + .tableOid(0) + .index((short) 0) + .typeOid(701) + .length((short) 4) + .modifier(-1) + .format(f -> f.set(PgsqlFormat.TEXT)) + ))) + .build(); + + server.doAppFlush(traceId, authorization, descriptionEx); + } + private void rowDataCommand( PgsqlServer server, long clientId, @@ -2119,7 +2184,50 @@ private void rowDataCommand( { server.columns.put(columnDescriptions.get(nameIndex), columnDescriptions.get(typeIndex)); } + } + + private void showColumnDataCommand( + PgsqlServer server, + long clientId, + long traceId, + long authorization, + long routedId, + int flags, + DirectBuffer buffer, + int offset, + int limit, + OctetsFW extension) + { + int progress = offset; + + if ((flags & FLAGS_INIT) != 0x00) + { + progress += Short.BYTES; + } + + String32FW column = columnRO.tryWrap(buffer, progress, limit); + if (column != null) + { + PgsqlDataExFW dataEx = dataExRW.wrap(extBuffer, 0, extBuffer.capacity()) + .typeId(pgsqlTypeId) + .row(q -> q.deferred(0)) + .build(); + + int dataRowProgress = 0; + RisingwaveDataRowFW row = dataRowRW.wrap(statementBuffer, dataRowProgress, statementBuffer.capacity()) + .fields((short) 1) + .build(); + dataRowProgress = row.limit(); + + final int length = column.length(); + RisingwaveDataRowFieldFW field = dataRowFieldRW.wrap(statementBuffer, dataRowProgress, statementBuffer.capacity()) + .fieldLenght(length) + .field(column.value(), 0, length) + .build(); + + server.doAppData(clientId, routedId, traceId, authorization, flags, statementBuffer, 0, field.limit(), dataEx); + } } private void proxyDataCommand( diff --git a/incubator/binding-risingwave/src/main/zilla/protocol.idl b/incubator/binding-risingwave/src/main/zilla/protocol.idl new file mode 100644 index 0000000000..00a1f9fa83 --- /dev/null +++ b/incubator/binding-risingwave/src/main/zilla/protocol.idl @@ -0,0 +1,32 @@ +/* + * Copyright 2021-2024 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. + */ +scope protocol +{ + option byteorder network; + + scope codec + { + struct RisingwaveDataRow + { + int16 fields; + } + + struct RisingwaveDataRowField + { + varint32 fieldLenght; + octets[fieldLenght] field; + } + } +} diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java index 6254a17b18..2cbd735aba 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java @@ -281,4 +281,14 @@ public void shouldNotAlterStreamModifyColumn() throws Exception { k3po.finish(); } + + @Test + @Configuration("proxy.risingwave.yaml") + @Specification({ + "${pgsql}/show.zviews/client", + "${effective}/show.zviews/server" }) + public void shouldShowZviews() throws Exception + { + k3po.finish(); + } } From 5a286cc43060415ea05b43274b59bf4934c4d142 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Sun, 1 Dec 2024 00:22:57 -0800 Subject: [PATCH 033/104] WIP --- .../application/select.table/client.rpt | 12 +- .../binding-pgsql/gen/PostgreSqlLexer.interp | 2089 +++++++ .../binding-pgsql/gen/PostgreSqlLexer.java | 5276 +++++++++++++++++ .../binding-pgsql/gen/PostgreSqlLexer.tokens | 1324 +++++ .../streams/effective/show.zviews/client.rpt | 4 +- .../streams/effective/show.zviews/server.rpt | 4 +- .../streams/pgsql/show.zviews/client.rpt | 45 +- .../streams/pgsql/show.zviews/server.rpt | 6 +- incubator/binding-risingwave/pom.xml | 2 +- .../stream/RisingwaveCompletionCommand.java | 2 +- .../stream/RisingwaveProxyFactory.java | 49 +- .../src/main/zilla/protocol.idl | 32 - 12 files changed, 8749 insertions(+), 96 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 delete mode 100644 incubator/binding-risingwave/src/main/zilla/protocol.idl diff --git a/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/select.table/client.rpt b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/select.table/client.rpt index 166e96cfec..379c9085b1 100644 --- a/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/select.table/client.rpt +++ b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/select.table/client.rpt @@ -74,12 +74,12 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read [0x00 0x03] # Field Count - [0x00 0x00 0x00 0x04] # Length - [0x31 0x39 0x36 0x34] # Data - [0x00 0x00 0x00 0x0a] # Length - [0x31 0x37 0x32 0x33 0x35 0x39 0x33 0x31 0x31 0x33] # Data - [0x00 0x00 0x00 0x04] # Length - [0x5c 0x78 0x33 0x31] # Data + [0x00 0x00 0x00 0x04] # Length + [0x31 0x39 0x36 0x34] # Data + [0x00 0x00 0x00 0x0a] # Length + [0x31 0x37 0x32 0x33 0x35 0x39 0x33 0x31 0x31 0x33] # Data + [0x00 0x00 0x00 0x04] # Length + [0x5c 0x78 0x33 0x31] # Data read advised zilla:flush ${pgsql:flushEx() diff --git a/incubator/binding-pgsql/gen/PostgreSqlLexer.interp b/incubator/binding-pgsql/gen/PostgreSqlLexer.interp new file mode 100644 index 0000000000..2acc348e46 --- /dev/null +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.interp @@ -0,0 +1,2089 @@ +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' +'TOPICS' +'STREAM' +'ZVIEW' +'ZVIEWS' +'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 +TOPICS +STREAM +ZVIEW +ZVIEWS +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 +TOPICS +STREAM +ZVIEW +ZVIEWS +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, 684, 6834, 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, 2, 697, 7, 697, 2, 698, 7, 698, 2, 699, 7, 699, 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, 1471, 8, 27, 11, 27, 12, 27, 1472, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1479, 8, 28, 11, 28, 12, 28, 1480, 1, 28, 1, 28, 1, 28, 3, 28, 1486, 8, 28, 1, 28, 1, 28, 4, 28, 1490, 8, 28, 11, 28, 12, 28, 1491, 1, 28, 3, 28, 1495, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1504, 8, 29, 10, 29, 12, 29, 1507, 9, 29, 1, 29, 1, 29, 3, 29, 1511, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1516, 8, 29, 11, 29, 12, 29, 1517, 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, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 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, 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, 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, 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, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 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, 115, 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, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 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, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 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, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 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, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 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, 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, 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, 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, 138, 1, 138, 1, 138, 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, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 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, 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, 145, 1, 145, 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, 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, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 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, 152, 1, 152, 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, 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, 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, 159, 1, 159, 1, 159, 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, 162, 1, 162, 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, 163, 1, 163, 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, 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, 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, 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, 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, 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, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 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, 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, 179, 1, 179, 1, 179, 1, 179, 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, 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, 185, 1, 185, 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, 187, 1, 187, 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, 191, 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, 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, 193, 1, 193, 1, 194, 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, 195, 1, 196, 1, 196, 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, 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, 201, 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, 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, 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, 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, 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, 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, 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, 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, 216, 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, 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, 219, 1, 219, 1, 220, 1, 220, 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, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 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, 225, 1, 225, 1, 225, 1, 225, 1, 225, 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, 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, 231, 1, 231, 1, 231, 1, 232, 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, 233, 1, 233, 1, 233, 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, 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, 237, 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, 239, 1, 239, 1, 239, 1, 239, 1, 240, 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, 242, 1, 242, 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, 243, 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, 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, 249, 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, 250, 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, 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, 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, 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, 259, 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, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 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, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 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, 273, 1, 273, 1, 273, 1, 273, 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, 277, 1, 277, 1, 277, 1, 277, 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, 279, 1, 279, 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, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 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, 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, 286, 1, 286, 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, 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, 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, 295, 1, 295, 1, 295, 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, 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, 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, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 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, 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, 304, 1, 304, 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, 307, 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, 311, 1, 311, 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, 313, 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, 315, 1, 316, 1, 316, 1, 316, 1, 316, 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, 318, 1, 318, 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, 321, 1, 321, 1, 321, 1, 321, 1, 321, 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, 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, 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, 328, 1, 329, 1, 329, 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, 330, 1, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 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, 334, 1, 334, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 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, 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, 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, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 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, 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, 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, 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, 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, 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, 355, 1, 355, 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, 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, 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, 361, 1, 361, 1, 361, 1, 361, 1, 361, 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, 363, 1, 364, 1, 364, 1, 364, 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, 365, 1, 365, 1, 365, 1, 366, 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, 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, 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, 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, 373, 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, 376, 1, 376, 1, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 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, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 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, 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, 393, 1, 393, 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, 394, 1, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 396, 1, 396, 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, 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, 400, 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, 402, 1, 402, 1, 402, 1, 402, 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, 404, 1, 404, 1, 404, 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, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 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, 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, 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, 416, 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, 418, 1, 418, 1, 418, 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, 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, 422, 1, 422, 1, 422, 1, 422, 1, 422, 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, 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, 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, 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, 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, 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, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 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, 432, 1, 432, 1, 432, 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, 434, 1, 434, 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, 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, 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, 439, 1, 440, 1, 440, 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, 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, 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, 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, 449, 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, 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, 453, 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, 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, 459, 1, 459, 1, 459, 1, 459, 1, 459, 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, 460, 1, 461, 1, 461, 1, 461, 1, 461, 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, 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, 465, 1, 465, 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, 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, 470, 1, 470, 1, 470, 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, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 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, 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, 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, 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, 482, 1, 482, 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, 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, 485, 1, 486, 1, 486, 1, 486, 1, 486, 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, 488, 1, 488, 1, 488, 1, 489, 1, 489, 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, 491, 1, 491, 1, 491, 1, 491, 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, 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, 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, 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, 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, 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, 504, 1, 504, 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, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 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, 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, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 512, 1, 512, 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, 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, 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, 518, 1, 518, 1, 519, 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, 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, 523, 1, 523, 1, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 526, 1, 526, 1, 526, 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, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 532, 1, 532, 1, 532, 1, 532, 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, 534, 1, 534, 1, 534, 1, 534, 1, 535, 1, 535, 1, 535, 1, 535, 1, 536, 1, 536, 1, 536, 1, 536, 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, 538, 1, 538, 1, 538, 1, 538, 1, 539, 1, 539, 1, 539, 1, 539, 1, 540, 1, 540, 1, 540, 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, 542, 1, 542, 1, 542, 1, 542, 1, 543, 1, 543, 1, 543, 1, 543, 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, 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, 549, 1, 549, 1, 549, 1, 549, 1, 549, 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, 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, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 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, 559, 1, 559, 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, 561, 1, 561, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 563, 1, 563, 1, 563, 1, 563, 1, 563, 1, 563, 1, 563, 1, 564, 1, 564, 1, 564, 1, 564, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 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, 569, 1, 569, 1, 569, 1, 569, 1, 569, 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, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 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, 578, 1, 578, 1, 578, 1, 578, 1, 578, 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, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 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, 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, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 586, 1, 586, 1, 586, 1, 586, 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, 588, 1, 588, 1, 588, 1, 589, 1, 589, 1, 589, 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, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 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, 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, 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, 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, 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, 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, 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, 605, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 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, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 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, 608, 1, 608, 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, 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, 613, 1, 613, 1, 613, 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, 614, 1, 614, 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, 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, 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, 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, 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, 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, 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, 628, 1, 628, 1, 628, 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, 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, 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, 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, 635, 1, 635, 1, 635, 1, 635, 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, 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, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 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, 640, 1, 640, 1, 640, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 644, 1, 644, 5, 644, 6366, 8, 644, 10, 644, 12, 644, 6369, 9, 644, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 3, 645, 6377, 8, 645, 1, 646, 1, 646, 3, 646, 6381, 8, 646, 1, 647, 1, 647, 3, 647, 6385, 8, 647, 1, 648, 1, 648, 1, 648, 1, 649, 1, 649, 1, 649, 1, 649, 5, 649, 6394, 8, 649, 10, 649, 12, 649, 6397, 9, 649, 1, 650, 1, 650, 1, 650, 1, 651, 1, 651, 1, 651, 1, 651, 5, 651, 6406, 8, 651, 10, 651, 12, 651, 6409, 9, 651, 1, 652, 1, 652, 1, 652, 1, 652, 1, 653, 1, 653, 1, 653, 1, 653, 1, 654, 1, 654, 1, 654, 1, 654, 1, 655, 1, 655, 1, 655, 1, 655, 1, 656, 1, 656, 1, 656, 1, 657, 1, 657, 1, 657, 1, 657, 5, 657, 6434, 8, 657, 10, 657, 12, 657, 6437, 9, 657, 1, 658, 1, 658, 1, 658, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 1, 659, 1, 660, 1, 660, 1, 660, 1, 660, 1, 661, 1, 661, 3, 661, 6454, 8, 661, 1, 661, 1, 661, 1, 661, 1, 661, 1, 661, 1, 662, 1, 662, 5, 662, 6463, 8, 662, 10, 662, 12, 662, 6466, 9, 662, 1, 663, 1, 663, 1, 663, 1, 664, 1, 664, 1, 664, 5, 664, 6474, 8, 664, 10, 664, 12, 664, 6477, 9, 664, 1, 665, 1, 665, 1, 665, 1, 666, 1, 666, 1, 666, 1, 667, 1, 667, 1, 667, 1, 668, 1, 668, 1, 668, 5, 668, 6491, 8, 668, 10, 668, 12, 668, 6494, 9, 668, 1, 669, 1, 669, 1, 669, 1, 670, 1, 670, 1, 670, 1, 671, 1, 671, 1, 672, 1, 672, 1, 672, 1, 672, 1, 672, 1, 672, 1, 673, 1, 673, 1, 673, 3, 673, 6513, 8, 673, 1, 673, 1, 673, 3, 673, 6517, 8, 673, 1, 673, 3, 673, 6520, 8, 673, 1, 673, 1, 673, 1, 673, 1, 673, 3, 673, 6526, 8, 673, 1, 673, 3, 673, 6529, 8, 673, 1, 673, 1, 673, 1, 673, 3, 673, 6534, 8, 673, 1, 673, 1, 673, 3, 673, 6538, 8, 673, 1, 674, 4, 674, 6541, 8, 674, 11, 674, 12, 674, 6542, 1, 675, 1, 675, 1, 675, 5, 675, 6548, 8, 675, 10, 675, 12, 675, 6551, 9, 675, 1, 676, 1, 676, 1, 676, 1, 676, 1, 676, 1, 676, 1, 676, 1, 676, 5, 676, 6561, 8, 676, 10, 676, 12, 676, 6564, 9, 676, 1, 676, 1, 676, 1, 677, 4, 677, 6569, 8, 677, 11, 677, 12, 677, 6570, 1, 677, 1, 677, 1, 678, 1, 678, 3, 678, 6577, 8, 678, 1, 678, 3, 678, 6580, 8, 678, 1, 678, 1, 678, 1, 679, 1, 679, 1, 679, 1, 679, 5, 679, 6588, 8, 679, 10, 679, 12, 679, 6591, 9, 679, 1, 679, 1, 679, 1, 680, 1, 680, 1, 680, 1, 680, 5, 680, 6599, 8, 680, 10, 680, 12, 680, 6602, 9, 680, 1, 680, 1, 680, 1, 680, 4, 680, 6607, 8, 680, 11, 680, 12, 680, 6608, 1, 680, 1, 680, 4, 680, 6613, 8, 680, 11, 680, 12, 680, 6614, 1, 680, 5, 680, 6618, 8, 680, 10, 680, 12, 680, 6621, 9, 680, 1, 680, 5, 680, 6624, 8, 680, 10, 680, 12, 680, 6627, 9, 680, 1, 680, 1, 680, 1, 680, 1, 680, 1, 680, 1, 681, 1, 681, 1, 681, 1, 681, 5, 681, 6638, 8, 681, 10, 681, 12, 681, 6641, 9, 681, 1, 681, 1, 681, 1, 681, 4, 681, 6646, 8, 681, 11, 681, 12, 681, 6647, 1, 681, 1, 681, 4, 681, 6652, 8, 681, 11, 681, 12, 681, 6653, 1, 681, 3, 681, 6657, 8, 681, 5, 681, 6659, 8, 681, 10, 681, 12, 681, 6662, 9, 681, 1, 681, 4, 681, 6665, 8, 681, 11, 681, 12, 681, 6666, 1, 681, 4, 681, 6670, 8, 681, 11, 681, 12, 681, 6671, 1, 681, 5, 681, 6675, 8, 681, 10, 681, 12, 681, 6678, 9, 681, 1, 681, 3, 681, 6681, 8, 681, 1, 681, 1, 681, 1, 682, 1, 682, 1, 682, 1, 682, 5, 682, 6689, 8, 682, 10, 682, 12, 682, 6692, 9, 682, 1, 682, 5, 682, 6695, 8, 682, 10, 682, 12, 682, 6698, 9, 682, 1, 682, 1, 682, 5, 682, 6702, 8, 682, 10, 682, 12, 682, 6705, 9, 682, 3, 682, 6707, 8, 682, 1, 683, 1, 683, 1, 683, 1, 684, 1, 684, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 686, 1, 686, 3, 686, 6721, 8, 686, 1, 686, 1, 686, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 3, 687, 6745, 8, 687, 1, 687, 5, 687, 6748, 8, 687, 10, 687, 12, 687, 6751, 9, 687, 1, 688, 1, 688, 1, 688, 1, 688, 1, 688, 1, 689, 1, 689, 3, 689, 6760, 8, 689, 1, 689, 1, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 5, 690, 6769, 8, 690, 10, 690, 12, 690, 6772, 9, 690, 1, 691, 1, 691, 1, 691, 1, 691, 1, 691, 1, 692, 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, 1, 695, 1, 695, 1, 695, 1, 695, 1, 696, 1, 696, 1, 696, 1, 696, 1, 696, 1, 697, 1, 697, 1, 697, 1, 697, 1, 697, 1, 698, 4, 698, 6811, 8, 698, 11, 698, 12, 698, 6812, 1, 698, 1, 698, 5, 698, 6817, 8, 698, 10, 698, 12, 698, 6820, 9, 698, 3, 698, 6822, 8, 698, 1, 699, 1, 699, 3, 699, 6826, 8, 699, 1, 699, 1, 699, 1, 699, 1, 699, 1, 699, 1, 699, 1, 699, 0, 0, 700, 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, 639, 1291, 640, 1293, 641, 1295, 0, 1297, 0, 1299, 0, 1301, 642, 1303, 643, 1305, 644, 1307, 645, 1309, 646, 1311, 647, 1313, 648, 1315, 649, 1317, 650, 1319, 651, 1321, 0, 1323, 652, 1325, 653, 1327, 654, 1329, 0, 1331, 655, 1333, 656, 1335, 657, 1337, 658, 1339, 659, 1341, 660, 1343, 661, 1345, 662, 1347, 663, 1349, 664, 1351, 665, 1353, 0, 1355, 666, 1357, 667, 1359, 668, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 673, 1371, 674, 1373, 675, 1375, 676, 1377, 677, 1379, 0, 1381, 678, 1383, 679, 1385, 0, 1387, 0, 1389, 0, 1391, 680, 1393, 0, 1395, 0, 1397, 684, 1399, 681, 1401, 682, 1403, 683, 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, 87, 87, 119, 119, 2, 0, 81, 81, 113, 113, 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, 6906, 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, 1289, 1, 0, 0, 0, 0, 1291, 1, 0, 0, 0, 0, 1293, 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, 1323, 1, 0, 0, 0, 0, 1325, 1, 0, 0, 0, 0, 1327, 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, 1347, 1, 0, 0, 0, 0, 1349, 1, 0, 0, 0, 0, 1351, 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, 0, 1369, 1, 0, 0, 0, 0, 1371, 1, 0, 0, 0, 0, 1373, 1, 0, 0, 0, 1, 1375, 1, 0, 0, 0, 1, 1377, 1, 0, 0, 0, 1, 1381, 1, 0, 0, 0, 1, 1383, 1, 0, 0, 0, 2, 1387, 1, 0, 0, 0, 2, 1389, 1, 0, 0, 0, 2, 1391, 1, 0, 0, 0, 3, 1393, 1, 0, 0, 0, 3, 1395, 1, 0, 0, 0, 3, 1397, 1, 0, 0, 0, 3, 1399, 1, 0, 0, 0, 4, 1401, 1, 0, 0, 0, 4, 1403, 1, 0, 0, 0, 5, 1405, 1, 0, 0, 0, 7, 1407, 1, 0, 0, 0, 9, 1409, 1, 0, 0, 0, 11, 1411, 1, 0, 0, 0, 13, 1413, 1, 0, 0, 0, 15, 1415, 1, 0, 0, 0, 17, 1417, 1, 0, 0, 0, 19, 1419, 1, 0, 0, 0, 21, 1421, 1, 0, 0, 0, 23, 1423, 1, 0, 0, 0, 25, 1425, 1, 0, 0, 0, 27, 1427, 1, 0, 0, 0, 29, 1429, 1, 0, 0, 0, 31, 1431, 1, 0, 0, 0, 33, 1433, 1, 0, 0, 0, 35, 1435, 1, 0, 0, 0, 37, 1437, 1, 0, 0, 0, 39, 1439, 1, 0, 0, 0, 41, 1442, 1, 0, 0, 0, 43, 1445, 1, 0, 0, 0, 45, 1448, 1, 0, 0, 0, 47, 1451, 1, 0, 0, 0, 49, 1454, 1, 0, 0, 0, 51, 1457, 1, 0, 0, 0, 53, 1460, 1, 0, 0, 0, 55, 1463, 1, 0, 0, 0, 57, 1466, 1, 0, 0, 0, 59, 1468, 1, 0, 0, 0, 61, 1494, 1, 0, 0, 0, 63, 1505, 1, 0, 0, 0, 65, 1521, 1, 0, 0, 0, 67, 1523, 1, 0, 0, 0, 69, 1525, 1, 0, 0, 0, 71, 1527, 1, 0, 0, 0, 73, 1531, 1, 0, 0, 0, 75, 1539, 1, 0, 0, 0, 77, 1547, 1, 0, 0, 0, 79, 1551, 1, 0, 0, 0, 81, 1555, 1, 0, 0, 0, 83, 1561, 1, 0, 0, 0, 85, 1564, 1, 0, 0, 0, 87, 1568, 1, 0, 0, 0, 89, 1579, 1, 0, 0, 0, 91, 1584, 1, 0, 0, 0, 93, 1589, 1, 0, 0, 0, 95, 1594, 1, 0, 0, 0, 97, 1600, 1, 0, 0, 0, 99, 1608, 1, 0, 0, 0, 101, 1615, 1, 0, 0, 0, 103, 1626, 1, 0, 0, 0, 105, 1633, 1, 0, 0, 0, 107, 1649, 1, 0, 0, 0, 109, 1662, 1, 0, 0, 0, 111, 1675, 1, 0, 0, 0, 113, 1688, 1, 0, 0, 0, 115, 1706, 1, 0, 0, 0, 117, 1719, 1, 0, 0, 0, 119, 1727, 1, 0, 0, 0, 121, 1738, 1, 0, 0, 0, 123, 1743, 1, 0, 0, 0, 125, 1752, 1, 0, 0, 0, 127, 1755, 1, 0, 0, 0, 129, 1760, 1, 0, 0, 0, 131, 1767, 1, 0, 0, 0, 133, 1773, 1, 0, 0, 0, 135, 1779, 1, 0, 0, 0, 137, 1783, 1, 0, 0, 0, 139, 1791, 1, 0, 0, 0, 141, 1796, 1, 0, 0, 0, 143, 1802, 1, 0, 0, 0, 145, 1808, 1, 0, 0, 0, 147, 1815, 1, 0, 0, 0, 149, 1818, 1, 0, 0, 0, 151, 1828, 1, 0, 0, 0, 153, 1838, 1, 0, 0, 0, 155, 1843, 1, 0, 0, 0, 157, 1851, 1, 0, 0, 0, 159, 1859, 1, 0, 0, 0, 161, 1865, 1, 0, 0, 0, 163, 1875, 1, 0, 0, 0, 165, 1890, 1, 0, 0, 0, 167, 1894, 1, 0, 0, 0, 169, 1899, 1, 0, 0, 0, 171, 1906, 1, 0, 0, 0, 173, 1909, 1, 0, 0, 0, 175, 1914, 1, 0, 0, 0, 177, 1917, 1, 0, 0, 0, 179, 1923, 1, 0, 0, 0, 181, 1931, 1, 0, 0, 0, 183, 1939, 1, 0, 0, 0, 185, 1950, 1, 0, 0, 0, 187, 1960, 1, 0, 0, 0, 189, 1967, 1, 0, 0, 0, 191, 1980, 1, 0, 0, 0, 193, 1985, 1, 0, 0, 0, 195, 1995, 1, 0, 0, 0, 197, 2001, 1, 0, 0, 0, 199, 2006, 1, 0, 0, 0, 201, 2009, 1, 0, 0, 0, 203, 2015, 1, 0, 0, 0, 205, 2022, 1, 0, 0, 0, 207, 2029, 1, 0, 0, 0, 209, 2035, 1, 0, 0, 0, 211, 2042, 1, 0, 0, 0, 213, 2051, 1, 0, 0, 0, 215, 2056, 1, 0, 0, 0, 217, 2062, 1, 0, 0, 0, 219, 2069, 1, 0, 0, 0, 221, 2074, 1, 0, 0, 0, 223, 2080, 1, 0, 0, 0, 225, 2089, 1, 0, 0, 0, 227, 2094, 1, 0, 0, 0, 229, 2100, 1, 0, 0, 0, 231, 2107, 1, 0, 0, 0, 233, 2112, 1, 0, 0, 0, 235, 2126, 1, 0, 0, 0, 237, 2133, 1, 0, 0, 0, 239, 2143, 1, 0, 0, 0, 241, 2156, 1, 0, 0, 0, 243, 2162, 1, 0, 0, 0, 245, 2177, 1, 0, 0, 0, 247, 2184, 1, 0, 0, 0, 249, 2189, 1, 0, 0, 0, 251, 2195, 1, 0, 0, 0, 253, 2201, 1, 0, 0, 0, 255, 2204, 1, 0, 0, 0, 257, 2211, 1, 0, 0, 0, 259, 2216, 1, 0, 0, 0, 261, 2221, 1, 0, 0, 0, 263, 2226, 1, 0, 0, 0, 265, 2234, 1, 0, 0, 0, 267, 2242, 1, 0, 0, 0, 269, 2248, 1, 0, 0, 0, 271, 2253, 1, 0, 0, 0, 273, 2262, 1, 0, 0, 0, 275, 2268, 1, 0, 0, 0, 277, 2276, 1, 0, 0, 0, 279, 2284, 1, 0, 0, 0, 281, 2290, 1, 0, 0, 0, 283, 2299, 1, 0, 0, 0, 285, 2306, 1, 0, 0, 0, 287, 2313, 1, 0, 0, 0, 289, 2317, 1, 0, 0, 0, 291, 2323, 1, 0, 0, 0, 293, 2329, 1, 0, 0, 0, 295, 2339, 1, 0, 0, 0, 297, 2344, 1, 0, 0, 0, 299, 2350, 1, 0, 0, 0, 301, 2357, 1, 0, 0, 0, 303, 2367, 1, 0, 0, 0, 305, 2378, 1, 0, 0, 0, 307, 2381, 1, 0, 0, 0, 309, 2391, 1, 0, 0, 0, 311, 2400, 1, 0, 0, 0, 313, 2407, 1, 0, 0, 0, 315, 2413, 1, 0, 0, 0, 317, 2416, 1, 0, 0, 0, 319, 2422, 1, 0, 0, 0, 321, 2429, 1, 0, 0, 0, 323, 2437, 1, 0, 0, 0, 325, 2446, 1, 0, 0, 0, 327, 2454, 1, 0, 0, 0, 329, 2460, 1, 0, 0, 0, 331, 2476, 1, 0, 0, 0, 333, 2487, 1, 0, 0, 0, 335, 2493, 1, 0, 0, 0, 337, 2499, 1, 0, 0, 0, 339, 2507, 1, 0, 0, 0, 341, 2515, 1, 0, 0, 0, 343, 2524, 1, 0, 0, 0, 345, 2531, 1, 0, 0, 0, 347, 2541, 1, 0, 0, 0, 349, 2555, 1, 0, 0, 0, 351, 2566, 1, 0, 0, 0, 353, 2578, 1, 0, 0, 0, 355, 2586, 1, 0, 0, 0, 357, 2595, 1, 0, 0, 0, 359, 2606, 1, 0, 0, 0, 361, 2611, 1, 0, 0, 0, 363, 2616, 1, 0, 0, 0, 365, 2620, 1, 0, 0, 0, 367, 2627, 1, 0, 0, 0, 369, 2633, 1, 0, 0, 0, 371, 2638, 1, 0, 0, 0, 373, 2647, 1, 0, 0, 0, 375, 2651, 1, 0, 0, 0, 377, 2662, 1, 0, 0, 0, 379, 2670, 1, 0, 0, 0, 381, 2679, 1, 0, 0, 0, 383, 2688, 1, 0, 0, 0, 385, 2696, 1, 0, 0, 0, 387, 2703, 1, 0, 0, 0, 389, 2713, 1, 0, 0, 0, 391, 2724, 1, 0, 0, 0, 393, 2735, 1, 0, 0, 0, 395, 2743, 1, 0, 0, 0, 397, 2751, 1, 0, 0, 0, 399, 2760, 1, 0, 0, 0, 401, 2767, 1, 0, 0, 0, 403, 2774, 1, 0, 0, 0, 405, 2779, 1, 0, 0, 0, 407, 2784, 1, 0, 0, 0, 409, 2791, 1, 0, 0, 0, 411, 2800, 1, 0, 0, 0, 413, 2810, 1, 0, 0, 0, 415, 2815, 1, 0, 0, 0, 417, 2822, 1, 0, 0, 0, 419, 2828, 1, 0, 0, 0, 421, 2836, 1, 0, 0, 0, 423, 2846, 1, 0, 0, 0, 425, 2856, 1, 0, 0, 0, 427, 2864, 1, 0, 0, 0, 429, 2872, 1, 0, 0, 0, 431, 2882, 1, 0, 0, 0, 433, 2891, 1, 0, 0, 0, 435, 2898, 1, 0, 0, 0, 437, 2904, 1, 0, 0, 0, 439, 2914, 1, 0, 0, 0, 441, 2920, 1, 0, 0, 0, 443, 2928, 1, 0, 0, 0, 445, 2937, 1, 0, 0, 0, 447, 2947, 1, 0, 0, 0, 449, 2954, 1, 0, 0, 0, 451, 2962, 1, 0, 0, 0, 453, 2970, 1, 0, 0, 0, 455, 2977, 1, 0, 0, 0, 457, 2982, 1, 0, 0, 0, 459, 2987, 1, 0, 0, 0, 461, 2996, 1, 0, 0, 0, 463, 2999, 1, 0, 0, 0, 465, 3009, 1, 0, 0, 0, 467, 3019, 1, 0, 0, 0, 469, 3028, 1, 0, 0, 0, 471, 3038, 1, 0, 0, 0, 473, 3048, 1, 0, 0, 0, 475, 3054, 1, 0, 0, 0, 477, 3062, 1, 0, 0, 0, 479, 3070, 1, 0, 0, 0, 481, 3079, 1, 0, 0, 0, 483, 3086, 1, 0, 0, 0, 485, 3098, 1, 0, 0, 0, 487, 3105, 1, 0, 0, 0, 489, 3113, 1, 0, 0, 0, 491, 3121, 1, 0, 0, 0, 493, 3131, 1, 0, 0, 0, 495, 3135, 1, 0, 0, 0, 497, 3141, 1, 0, 0, 0, 499, 3150, 1, 0, 0, 0, 501, 3156, 1, 0, 0, 0, 503, 3161, 1, 0, 0, 0, 505, 3171, 1, 0, 0, 0, 507, 3177, 1, 0, 0, 0, 509, 3184, 1, 0, 0, 0, 511, 3189, 1, 0, 0, 0, 513, 3195, 1, 0, 0, 0, 515, 3204, 1, 0, 0, 0, 517, 3209, 1, 0, 0, 0, 519, 3217, 1, 0, 0, 0, 521, 3223, 1, 0, 0, 0, 523, 3231, 1, 0, 0, 0, 525, 3244, 1, 0, 0, 0, 527, 3253, 1, 0, 0, 0, 529, 3259, 1, 0, 0, 0, 531, 3266, 1, 0, 0, 0, 533, 3275, 1, 0, 0, 0, 535, 3280, 1, 0, 0, 0, 537, 3286, 1, 0, 0, 0, 539, 3291, 1, 0, 0, 0, 541, 3296, 1, 0, 0, 0, 543, 3302, 1, 0, 0, 0, 545, 3307, 1, 0, 0, 0, 547, 3310, 1, 0, 0, 0, 549, 3318, 1, 0, 0, 0, 551, 3325, 1, 0, 0, 0, 553, 3332, 1, 0, 0, 0, 555, 3338, 1, 0, 0, 0, 557, 3345, 1, 0, 0, 0, 559, 3348, 1, 0, 0, 0, 561, 3352, 1, 0, 0, 0, 563, 3357, 1, 0, 0, 0, 565, 3366, 1, 0, 0, 0, 567, 3373, 1, 0, 0, 0, 569, 3381, 1, 0, 0, 0, 571, 3387, 1, 0, 0, 0, 573, 3393, 1, 0, 0, 0, 575, 3400, 1, 0, 0, 0, 577, 3408, 1, 0, 0, 0, 579, 3418, 1, 0, 0, 0, 581, 3426, 1, 0, 0, 0, 583, 3435, 1, 0, 0, 0, 585, 3441, 1, 0, 0, 0, 587, 3451, 1, 0, 0, 0, 589, 3459, 1, 0, 0, 0, 591, 3468, 1, 0, 0, 0, 593, 3477, 1, 0, 0, 0, 595, 3483, 1, 0, 0, 0, 597, 3494, 1, 0, 0, 0, 599, 3505, 1, 0, 0, 0, 601, 3515, 1, 0, 0, 0, 603, 3523, 1, 0, 0, 0, 605, 3529, 1, 0, 0, 0, 607, 3535, 1, 0, 0, 0, 609, 3540, 1, 0, 0, 0, 611, 3549, 1, 0, 0, 0, 613, 3557, 1, 0, 0, 0, 615, 3567, 1, 0, 0, 0, 617, 3571, 1, 0, 0, 0, 619, 3579, 1, 0, 0, 0, 621, 3587, 1, 0, 0, 0, 623, 3596, 1, 0, 0, 0, 625, 3604, 1, 0, 0, 0, 627, 3611, 1, 0, 0, 0, 629, 3622, 1, 0, 0, 0, 631, 3630, 1, 0, 0, 0, 633, 3638, 1, 0, 0, 0, 635, 3644, 1, 0, 0, 0, 637, 3652, 1, 0, 0, 0, 639, 3661, 1, 0, 0, 0, 641, 3669, 1, 0, 0, 0, 643, 3676, 1, 0, 0, 0, 645, 3681, 1, 0, 0, 0, 647, 3690, 1, 0, 0, 0, 649, 3695, 1, 0, 0, 0, 651, 3700, 1, 0, 0, 0, 653, 3710, 1, 0, 0, 0, 655, 3717, 1, 0, 0, 0, 657, 3724, 1, 0, 0, 0, 659, 3731, 1, 0, 0, 0, 661, 3738, 1, 0, 0, 0, 663, 3747, 1, 0, 0, 0, 665, 3756, 1, 0, 0, 0, 667, 3766, 1, 0, 0, 0, 669, 3779, 1, 0, 0, 0, 671, 3786, 1, 0, 0, 0, 673, 3794, 1, 0, 0, 0, 675, 3798, 1, 0, 0, 0, 677, 3804, 1, 0, 0, 0, 679, 3809, 1, 0, 0, 0, 681, 3816, 1, 0, 0, 0, 683, 3825, 1, 0, 0, 0, 685, 3832, 1, 0, 0, 0, 687, 3843, 1, 0, 0, 0, 689, 3849, 1, 0, 0, 0, 691, 3859, 1, 0, 0, 0, 693, 3870, 1, 0, 0, 0, 695, 3876, 1, 0, 0, 0, 697, 3883, 1, 0, 0, 0, 699, 3891, 1, 0, 0, 0, 701, 3898, 1, 0, 0, 0, 703, 3904, 1, 0, 0, 0, 705, 3910, 1, 0, 0, 0, 707, 3917, 1, 0, 0, 0, 709, 3924, 1, 0, 0, 0, 711, 3935, 1, 0, 0, 0, 713, 3940, 1, 0, 0, 0, 715, 3949, 1, 0, 0, 0, 717, 3959, 1, 0, 0, 0, 719, 3964, 1, 0, 0, 0, 721, 3976, 1, 0, 0, 0, 723, 3984, 1, 0, 0, 0, 725, 3993, 1, 0, 0, 0, 727, 4001, 1, 0, 0, 0, 729, 4006, 1, 0, 0, 0, 731, 4012, 1, 0, 0, 0, 733, 4022, 1, 0, 0, 0, 735, 4034, 1, 0, 0, 0, 737, 4046, 1, 0, 0, 0, 739, 4054, 1, 0, 0, 0, 741, 4063, 1, 0, 0, 0, 743, 4072, 1, 0, 0, 0, 745, 4078, 1, 0, 0, 0, 747, 4085, 1, 0, 0, 0, 749, 4092, 1, 0, 0, 0, 751, 4098, 1, 0, 0, 0, 753, 4107, 1, 0, 0, 0, 755, 4117, 1, 0, 0, 0, 757, 4125, 1, 0, 0, 0, 759, 4133, 1, 0, 0, 0, 761, 4138, 1, 0, 0, 0, 763, 4147, 1, 0, 0, 0, 765, 4158, 1, 0, 0, 0, 767, 4166, 1, 0, 0, 0, 769, 4171, 1, 0, 0, 0, 771, 4179, 1, 0, 0, 0, 773, 4185, 1, 0, 0, 0, 775, 4189, 1, 0, 0, 0, 777, 4194, 1, 0, 0, 0, 779, 4198, 1, 0, 0, 0, 781, 4203, 1, 0, 0, 0, 783, 4211, 1, 0, 0, 0, 785, 4218, 1, 0, 0, 0, 787, 4222, 1, 0, 0, 0, 789, 4230, 1, 0, 0, 0, 791, 4235, 1, 0, 0, 0, 793, 4245, 1, 0, 0, 0, 795, 4254, 1, 0, 0, 0, 797, 4258, 1, 0, 0, 0, 799, 4266, 1, 0, 0, 0, 801, 4273, 1, 0, 0, 0, 803, 4281, 1, 0, 0, 0, 805, 4287, 1, 0, 0, 0, 807, 4296, 1, 0, 0, 0, 809, 4302, 1, 0, 0, 0, 811, 4306, 1, 0, 0, 0, 813, 4314, 1, 0, 0, 0, 815, 4323, 1, 0, 0, 0, 817, 4329, 1, 0, 0, 0, 819, 4338, 1, 0, 0, 0, 821, 4344, 1, 0, 0, 0, 823, 4349, 1, 0, 0, 0, 825, 4356, 1, 0, 0, 0, 827, 4364, 1, 0, 0, 0, 829, 4372, 1, 0, 0, 0, 831, 4381, 1, 0, 0, 0, 833, 4391, 1, 0, 0, 0, 835, 4396, 1, 0, 0, 0, 837, 4400, 1, 0, 0, 0, 839, 4406, 1, 0, 0, 0, 841, 4415, 1, 0, 0, 0, 843, 4425, 1, 0, 0, 0, 845, 4430, 1, 0, 0, 0, 847, 4440, 1, 0, 0, 0, 849, 4446, 1, 0, 0, 0, 851, 4451, 1, 0, 0, 0, 853, 4458, 1, 0, 0, 0, 855, 4466, 1, 0, 0, 0, 857, 4480, 1, 0, 0, 0, 859, 4491, 1, 0, 0, 0, 861, 4498, 1, 0, 0, 0, 863, 4517, 1, 0, 0, 0, 865, 4545, 1, 0, 0, 0, 867, 4572, 1, 0, 0, 0, 869, 4578, 1, 0, 0, 0, 871, 4591, 1, 0, 0, 0, 873, 4601, 1, 0, 0, 0, 875, 4612, 1, 0, 0, 0, 877, 4622, 1, 0, 0, 0, 879, 4632, 1, 0, 0, 0, 881, 4641, 1, 0, 0, 0, 883, 4647, 1, 0, 0, 0, 885, 4655, 1, 0, 0, 0, 887, 4668, 1, 0, 0, 0, 889, 4673, 1, 0, 0, 0, 891, 4681, 1, 0, 0, 0, 893, 4688, 1, 0, 0, 0, 895, 4695, 1, 0, 0, 0, 897, 4706, 1, 0, 0, 0, 899, 4716, 1, 0, 0, 0, 901, 4723, 1, 0, 0, 0, 903, 4730, 1, 0, 0, 0, 905, 4738, 1, 0, 0, 0, 907, 4746, 1, 0, 0, 0, 909, 4756, 1, 0, 0, 0, 911, 4763, 1, 0, 0, 0, 913, 4770, 1, 0, 0, 0, 915, 4777, 1, 0, 0, 0, 917, 4789, 1, 0, 0, 0, 919, 4793, 1, 0, 0, 0, 921, 4797, 1, 0, 0, 0, 923, 4803, 1, 0, 0, 0, 925, 4816, 1, 0, 0, 0, 927, 4828, 1, 0, 0, 0, 929, 4832, 1, 0, 0, 0, 931, 4836, 1, 0, 0, 0, 933, 4845, 1, 0, 0, 0, 935, 4853, 1, 0, 0, 0, 937, 4864, 1, 0, 0, 0, 939, 4870, 1, 0, 0, 0, 941, 4878, 1, 0, 0, 0, 943, 4887, 1, 0, 0, 0, 945, 4891, 1, 0, 0, 0, 947, 4899, 1, 0, 0, 0, 949, 4910, 1, 0, 0, 0, 951, 4919, 1, 0, 0, 0, 953, 4924, 1, 0, 0, 0, 955, 4931, 1, 0, 0, 0, 957, 4936, 1, 0, 0, 0, 959, 4943, 1, 0, 0, 0, 961, 4948, 1, 0, 0, 0, 963, 4957, 1, 0, 0, 0, 965, 4962, 1, 0, 0, 0, 967, 4974, 1, 0, 0, 0, 969, 4985, 1, 0, 0, 0, 971, 4994, 1, 0, 0, 0, 973, 5002, 1, 0, 0, 0, 975, 5016, 1, 0, 0, 0, 977, 5024, 1, 0, 0, 0, 979, 5035, 1, 0, 0, 0, 981, 5042, 1, 0, 0, 0, 983, 5049, 1, 0, 0, 0, 985, 5056, 1, 0, 0, 0, 987, 5063, 1, 0, 0, 0, 989, 5067, 1, 0, 0, 0, 991, 5071, 1, 0, 0, 0, 993, 5076, 1, 0, 0, 0, 995, 5081, 1, 0, 0, 0, 997, 5089, 1, 0, 0, 0, 999, 5095, 1, 0, 0, 0, 1001, 5105, 1, 0, 0, 0, 1003, 5110, 1, 0, 0, 0, 1005, 5130, 1, 0, 0, 0, 1007, 5148, 1, 0, 0, 0, 1009, 5154, 1, 0, 0, 0, 1011, 5167, 1, 0, 0, 0, 1013, 5178, 1, 0, 0, 0, 1015, 5184, 1, 0, 0, 0, 1017, 5193, 1, 0, 0, 0, 1019, 5201, 1, 0, 0, 0, 1021, 5205, 1, 0, 0, 0, 1023, 5217, 1, 0, 0, 0, 1025, 5225, 1, 0, 0, 0, 1027, 5231, 1, 0, 0, 0, 1029, 5237, 1, 0, 0, 0, 1031, 5245, 1, 0, 0, 0, 1033, 5253, 1, 0, 0, 0, 1035, 5259, 1, 0, 0, 0, 1037, 5264, 1, 0, 0, 0, 1039, 5271, 1, 0, 0, 0, 1041, 5277, 1, 0, 0, 0, 1043, 5283, 1, 0, 0, 0, 1045, 5292, 1, 0, 0, 0, 1047, 5298, 1, 0, 0, 0, 1049, 5302, 1, 0, 0, 0, 1051, 5307, 1, 0, 0, 0, 1053, 5314, 1, 0, 0, 0, 1055, 5322, 1, 0, 0, 0, 1057, 5332, 1, 0, 0, 0, 1059, 5339, 1, 0, 0, 0, 1061, 5344, 1, 0, 0, 0, 1063, 5349, 1, 0, 0, 0, 1065, 5353, 1, 0, 0, 0, 1067, 5358, 1, 0, 0, 0, 1069, 5363, 1, 0, 0, 0, 1071, 5371, 1, 0, 0, 0, 1073, 5379, 1, 0, 0, 0, 1075, 5383, 1, 0, 0, 0, 1077, 5387, 1, 0, 0, 0, 1079, 5397, 1, 0, 0, 0, 1081, 5403, 1, 0, 0, 0, 1083, 5407, 1, 0, 0, 0, 1085, 5411, 1, 0, 0, 0, 1087, 5414, 1, 0, 0, 0, 1089, 5420, 1, 0, 0, 0, 1091, 5430, 1, 0, 0, 0, 1093, 5434, 1, 0, 0, 0, 1095, 5437, 1, 0, 0, 0, 1097, 5443, 1, 0, 0, 0, 1099, 5451, 1, 0, 0, 0, 1101, 5457, 1, 0, 0, 0, 1103, 5463, 1, 0, 0, 0, 1105, 5468, 1, 0, 0, 0, 1107, 5473, 1, 0, 0, 0, 1109, 5484, 1, 0, 0, 0, 1111, 5490, 1, 0, 0, 0, 1113, 5503, 1, 0, 0, 0, 1115, 5510, 1, 0, 0, 0, 1117, 5518, 1, 0, 0, 0, 1119, 5523, 1, 0, 0, 0, 1121, 5529, 1, 0, 0, 0, 1123, 5534, 1, 0, 0, 0, 1125, 5540, 1, 0, 0, 0, 1127, 5545, 1, 0, 0, 0, 1129, 5551, 1, 0, 0, 0, 1131, 5557, 1, 0, 0, 0, 1133, 5564, 1, 0, 0, 0, 1135, 5568, 1, 0, 0, 0, 1137, 5573, 1, 0, 0, 0, 1139, 5577, 1, 0, 0, 0, 1141, 5582, 1, 0, 0, 0, 1143, 5586, 1, 0, 0, 0, 1145, 5591, 1, 0, 0, 0, 1147, 5595, 1, 0, 0, 0, 1149, 5600, 1, 0, 0, 0, 1151, 5605, 1, 0, 0, 0, 1153, 5610, 1, 0, 0, 0, 1155, 5615, 1, 0, 0, 0, 1157, 5621, 1, 0, 0, 0, 1159, 5627, 1, 0, 0, 0, 1161, 5633, 1, 0, 0, 0, 1163, 5644, 1, 0, 0, 0, 1165, 5656, 1, 0, 0, 0, 1167, 5673, 1, 0, 0, 0, 1169, 5679, 1, 0, 0, 0, 1171, 5692, 1, 0, 0, 0, 1173, 5698, 1, 0, 0, 0, 1175, 5704, 1, 0, 0, 0, 1177, 5710, 1, 0, 0, 0, 1179, 5714, 1, 0, 0, 0, 1181, 5721, 1, 0, 0, 0, 1183, 5731, 1, 0, 0, 0, 1185, 5738, 1, 0, 0, 0, 1187, 5746, 1, 0, 0, 0, 1189, 5753, 1, 0, 0, 0, 1191, 5758, 1, 0, 0, 0, 1193, 5764, 1, 0, 0, 0, 1195, 5768, 1, 0, 0, 0, 1197, 5780, 1, 0, 0, 0, 1199, 5799, 1, 0, 0, 0, 1201, 5811, 1, 0, 0, 0, 1203, 5825, 1, 0, 0, 0, 1205, 5840, 1, 0, 0, 0, 1207, 5853, 1, 0, 0, 0, 1209, 5866, 1, 0, 0, 0, 1211, 5878, 1, 0, 0, 0, 1213, 5891, 1, 0, 0, 0, 1215, 5906, 1, 0, 0, 0, 1217, 5921, 1, 0, 0, 0, 1219, 5943, 1, 0, 0, 0, 1221, 5965, 1, 0, 0, 0, 1223, 5979, 1, 0, 0, 0, 1225, 5986, 1, 0, 0, 0, 1227, 5991, 1, 0, 0, 0, 1229, 5997, 1, 0, 0, 0, 1231, 6008, 1, 0, 0, 0, 1233, 6020, 1, 0, 0, 0, 1235, 6036, 1, 0, 0, 0, 1237, 6052, 1, 0, 0, 0, 1239, 6059, 1, 0, 0, 0, 1241, 6066, 1, 0, 0, 0, 1243, 6075, 1, 0, 0, 0, 1245, 6082, 1, 0, 0, 0, 1247, 6092, 1, 0, 0, 0, 1249, 6099, 1, 0, 0, 0, 1251, 6103, 1, 0, 0, 0, 1253, 6119, 1, 0, 0, 0, 1255, 6128, 1, 0, 0, 0, 1257, 6138, 1, 0, 0, 0, 1259, 6149, 1, 0, 0, 0, 1261, 6158, 1, 0, 0, 0, 1263, 6171, 1, 0, 0, 0, 1265, 6185, 1, 0, 0, 0, 1267, 6202, 1, 0, 0, 0, 1269, 6212, 1, 0, 0, 0, 1271, 6226, 1, 0, 0, 0, 1273, 6236, 1, 0, 0, 0, 1275, 6251, 1, 0, 0, 0, 1277, 6268, 1, 0, 0, 0, 1279, 6272, 1, 0, 0, 0, 1281, 6292, 1, 0, 0, 0, 1283, 6302, 1, 0, 0, 0, 1285, 6324, 1, 0, 0, 0, 1287, 6337, 1, 0, 0, 0, 1289, 6345, 1, 0, 0, 0, 1291, 6353, 1, 0, 0, 0, 1293, 6363, 1, 0, 0, 0, 1295, 6376, 1, 0, 0, 0, 1297, 6380, 1, 0, 0, 0, 1299, 6384, 1, 0, 0, 0, 1301, 6386, 1, 0, 0, 0, 1303, 6389, 1, 0, 0, 0, 1305, 6398, 1, 0, 0, 0, 1307, 6401, 1, 0, 0, 0, 1309, 6410, 1, 0, 0, 0, 1311, 6414, 1, 0, 0, 0, 1313, 6418, 1, 0, 0, 0, 1315, 6422, 1, 0, 0, 0, 1317, 6426, 1, 0, 0, 0, 1319, 6429, 1, 0, 0, 0, 1321, 6438, 1, 0, 0, 0, 1323, 6444, 1, 0, 0, 0, 1325, 6447, 1, 0, 0, 0, 1327, 6451, 1, 0, 0, 0, 1329, 6460, 1, 0, 0, 0, 1331, 6467, 1, 0, 0, 0, 1333, 6470, 1, 0, 0, 0, 1335, 6478, 1, 0, 0, 0, 1337, 6481, 1, 0, 0, 0, 1339, 6484, 1, 0, 0, 0, 1341, 6487, 1, 0, 0, 0, 1343, 6495, 1, 0, 0, 0, 1345, 6498, 1, 0, 0, 0, 1347, 6501, 1, 0, 0, 0, 1349, 6503, 1, 0, 0, 0, 1351, 6537, 1, 0, 0, 0, 1353, 6540, 1, 0, 0, 0, 1355, 6544, 1, 0, 0, 0, 1357, 6552, 1, 0, 0, 0, 1359, 6568, 1, 0, 0, 0, 1361, 6579, 1, 0, 0, 0, 1363, 6583, 1, 0, 0, 0, 1365, 6594, 1, 0, 0, 0, 1367, 6633, 1, 0, 0, 0, 1369, 6684, 1, 0, 0, 0, 1371, 6708, 1, 0, 0, 0, 1373, 6711, 1, 0, 0, 0, 1375, 6713, 1, 0, 0, 0, 1377, 6718, 1, 0, 0, 0, 1379, 6749, 1, 0, 0, 0, 1381, 6752, 1, 0, 0, 0, 1383, 6757, 1, 0, 0, 0, 1385, 6770, 1, 0, 0, 0, 1387, 6773, 1, 0, 0, 0, 1389, 6778, 1, 0, 0, 0, 1391, 6784, 1, 0, 0, 0, 1393, 6789, 1, 0, 0, 0, 1395, 6794, 1, 0, 0, 0, 1397, 6799, 1, 0, 0, 0, 1399, 6804, 1, 0, 0, 0, 1401, 6821, 1, 0, 0, 0, 1403, 6823, 1, 0, 0, 0, 1405, 1406, 5, 36, 0, 0, 1406, 6, 1, 0, 0, 0, 1407, 1408, 5, 40, 0, 0, 1408, 8, 1, 0, 0, 0, 1409, 1410, 5, 41, 0, 0, 1410, 10, 1, 0, 0, 0, 1411, 1412, 5, 91, 0, 0, 1412, 12, 1, 0, 0, 0, 1413, 1414, 5, 93, 0, 0, 1414, 14, 1, 0, 0, 0, 1415, 1416, 5, 44, 0, 0, 1416, 16, 1, 0, 0, 0, 1417, 1418, 5, 59, 0, 0, 1418, 18, 1, 0, 0, 0, 1419, 1420, 5, 58, 0, 0, 1420, 20, 1, 0, 0, 0, 1421, 1422, 5, 42, 0, 0, 1422, 22, 1, 0, 0, 0, 1423, 1424, 5, 61, 0, 0, 1424, 24, 1, 0, 0, 0, 1425, 1426, 5, 46, 0, 0, 1426, 26, 1, 0, 0, 0, 1427, 1428, 5, 43, 0, 0, 1428, 28, 1, 0, 0, 0, 1429, 1430, 5, 45, 0, 0, 1430, 30, 1, 0, 0, 0, 1431, 1432, 5, 47, 0, 0, 1432, 32, 1, 0, 0, 0, 1433, 1434, 5, 94, 0, 0, 1434, 34, 1, 0, 0, 0, 1435, 1436, 5, 60, 0, 0, 1436, 36, 1, 0, 0, 0, 1437, 1438, 5, 62, 0, 0, 1438, 38, 1, 0, 0, 0, 1439, 1440, 5, 60, 0, 0, 1440, 1441, 5, 60, 0, 0, 1441, 40, 1, 0, 0, 0, 1442, 1443, 5, 62, 0, 0, 1443, 1444, 5, 62, 0, 0, 1444, 42, 1, 0, 0, 0, 1445, 1446, 5, 58, 0, 0, 1446, 1447, 5, 61, 0, 0, 1447, 44, 1, 0, 0, 0, 1448, 1449, 5, 60, 0, 0, 1449, 1450, 5, 61, 0, 0, 1450, 46, 1, 0, 0, 0, 1451, 1452, 5, 61, 0, 0, 1452, 1453, 5, 62, 0, 0, 1453, 48, 1, 0, 0, 0, 1454, 1455, 5, 62, 0, 0, 1455, 1456, 5, 61, 0, 0, 1456, 50, 1, 0, 0, 0, 1457, 1458, 5, 46, 0, 0, 1458, 1459, 5, 46, 0, 0, 1459, 52, 1, 0, 0, 0, 1460, 1461, 5, 60, 0, 0, 1461, 1462, 5, 62, 0, 0, 1462, 54, 1, 0, 0, 0, 1463, 1464, 5, 58, 0, 0, 1464, 1465, 5, 58, 0, 0, 1465, 56, 1, 0, 0, 0, 1466, 1467, 5, 37, 0, 0, 1467, 58, 1, 0, 0, 0, 1468, 1470, 5, 36, 0, 0, 1469, 1471, 7, 0, 0, 0, 1470, 1469, 1, 0, 0, 0, 1471, 1472, 1, 0, 0, 0, 1472, 1470, 1, 0, 0, 0, 1472, 1473, 1, 0, 0, 0, 1473, 60, 1, 0, 0, 0, 1474, 1490, 3, 65, 30, 0, 1475, 1479, 5, 43, 0, 0, 1476, 1477, 5, 45, 0, 0, 1477, 1479, 4, 28, 0, 0, 1478, 1475, 1, 0, 0, 0, 1478, 1476, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1478, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1485, 1, 0, 0, 0, 1482, 1486, 3, 65, 30, 0, 1483, 1484, 5, 47, 0, 0, 1484, 1486, 4, 28, 1, 0, 1485, 1482, 1, 0, 0, 0, 1485, 1483, 1, 0, 0, 0, 1486, 1490, 1, 0, 0, 0, 1487, 1488, 5, 47, 0, 0, 1488, 1490, 4, 28, 2, 0, 1489, 1474, 1, 0, 0, 0, 1489, 1478, 1, 0, 0, 0, 1489, 1487, 1, 0, 0, 0, 1490, 1491, 1, 0, 0, 0, 1491, 1489, 1, 0, 0, 0, 1491, 1492, 1, 0, 0, 0, 1492, 1495, 1, 0, 0, 0, 1493, 1495, 7, 1, 0, 0, 1494, 1489, 1, 0, 0, 0, 1494, 1493, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1497, 6, 28, 0, 0, 1497, 62, 1, 0, 0, 0, 1498, 1504, 3, 67, 31, 0, 1499, 1500, 5, 45, 0, 0, 1500, 1504, 4, 29, 3, 0, 1501, 1502, 5, 47, 0, 0, 1502, 1504, 4, 29, 4, 0, 1503, 1498, 1, 0, 0, 0, 1503, 1499, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1504, 1507, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1505, 1506, 1, 0, 0, 0, 1506, 1508, 1, 0, 0, 0, 1507, 1505, 1, 0, 0, 0, 1508, 1510, 3, 69, 32, 0, 1509, 1511, 3, 61, 28, 0, 1510, 1509, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1515, 1, 0, 0, 0, 1512, 1516, 5, 43, 0, 0, 1513, 1514, 5, 45, 0, 0, 1514, 1516, 4, 29, 5, 0, 1515, 1512, 1, 0, 0, 0, 1515, 1513, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1515, 1, 0, 0, 0, 1517, 1518, 1, 0, 0, 0, 1518, 1519, 1, 0, 0, 0, 1519, 1520, 6, 29, 1, 0, 1520, 64, 1, 0, 0, 0, 1521, 1522, 7, 2, 0, 0, 1522, 66, 1, 0, 0, 0, 1523, 1524, 7, 3, 0, 0, 1524, 68, 1, 0, 0, 0, 1525, 1526, 7, 4, 0, 0, 1526, 70, 1, 0, 0, 0, 1527, 1528, 7, 5, 0, 0, 1528, 1529, 7, 6, 0, 0, 1529, 1530, 7, 6, 0, 0, 1530, 72, 1, 0, 0, 0, 1531, 1532, 7, 5, 0, 0, 1532, 1533, 7, 7, 0, 0, 1533, 1534, 7, 5, 0, 0, 1534, 1535, 7, 6, 0, 0, 1535, 1536, 7, 8, 0, 0, 1536, 1537, 7, 9, 0, 0, 1537, 1538, 7, 10, 0, 0, 1538, 74, 1, 0, 0, 0, 1539, 1540, 7, 5, 0, 0, 1540, 1541, 7, 7, 0, 0, 1541, 1542, 7, 5, 0, 0, 1542, 1543, 7, 6, 0, 0, 1543, 1544, 7, 8, 0, 0, 1544, 1545, 7, 11, 0, 0, 1545, 1546, 7, 10, 0, 0, 1546, 76, 1, 0, 0, 0, 1547, 1548, 7, 5, 0, 0, 1548, 1549, 7, 7, 0, 0, 1549, 1550, 7, 12, 0, 0, 1550, 78, 1, 0, 0, 0, 1551, 1552, 7, 5, 0, 0, 1552, 1553, 7, 7, 0, 0, 1553, 1554, 7, 8, 0, 0, 1554, 80, 1, 0, 0, 0, 1555, 1556, 7, 5, 0, 0, 1556, 1557, 7, 13, 0, 0, 1557, 1558, 7, 13, 0, 0, 1558, 1559, 7, 5, 0, 0, 1559, 1560, 7, 8, 0, 0, 1560, 82, 1, 0, 0, 0, 1561, 1562, 7, 5, 0, 0, 1562, 1563, 7, 9, 0, 0, 1563, 84, 1, 0, 0, 0, 1564, 1565, 7, 5, 0, 0, 1565, 1566, 7, 9, 0, 0, 1566, 1567, 7, 14, 0, 0, 1567, 86, 1, 0, 0, 0, 1568, 1569, 7, 5, 0, 0, 1569, 1570, 7, 9, 0, 0, 1570, 1571, 7, 8, 0, 0, 1571, 1572, 7, 15, 0, 0, 1572, 1573, 7, 15, 0, 0, 1573, 1574, 7, 10, 0, 0, 1574, 1575, 7, 16, 0, 0, 1575, 1576, 7, 13, 0, 0, 1576, 1577, 7, 17, 0, 0, 1577, 1578, 7, 14, 0, 0, 1578, 88, 1, 0, 0, 0, 1579, 1580, 7, 18, 0, 0, 1580, 1581, 7, 19, 0, 0, 1581, 1582, 7, 16, 0, 0, 1582, 1583, 7, 20, 0, 0, 1583, 90, 1, 0, 0, 0, 1584, 1585, 7, 14, 0, 0, 1585, 1586, 7, 5, 0, 0, 1586, 1587, 7, 9, 0, 0, 1587, 1588, 7, 10, 0, 0, 1588, 92, 1, 0, 0, 0, 1589, 1590, 7, 14, 0, 0, 1590, 1591, 7, 5, 0, 0, 1591, 1592, 7, 9, 0, 0, 1592, 1593, 7, 16, 0, 0, 1593, 94, 1, 0, 0, 0, 1594, 1595, 7, 14, 0, 0, 1595, 1596, 7, 20, 0, 0, 1596, 1597, 7, 10, 0, 0, 1597, 1598, 7, 14, 0, 0, 1598, 1599, 7, 21, 0, 0, 1599, 96, 1, 0, 0, 0, 1600, 1601, 7, 14, 0, 0, 1601, 1602, 7, 19, 0, 0, 1602, 1603, 7, 6, 0, 0, 1603, 1604, 7, 6, 0, 0, 1604, 1605, 7, 5, 0, 0, 1605, 1606, 7, 16, 0, 0, 1606, 1607, 7, 10, 0, 0, 1607, 98, 1, 0, 0, 0, 1608, 1609, 7, 14, 0, 0, 1609, 1610, 7, 19, 0, 0, 1610, 1611, 7, 6, 0, 0, 1611, 1612, 7, 22, 0, 0, 1612, 1613, 7, 15, 0, 0, 1613, 1614, 7, 7, 0, 0, 1614, 100, 1, 0, 0, 0, 1615, 1616, 7, 14, 0, 0, 1616, 1617, 7, 19, 0, 0, 1617, 1618, 7, 7, 0, 0, 1618, 1619, 7, 9, 0, 0, 1619, 1620, 7, 16, 0, 0, 1620, 1621, 7, 13, 0, 0, 1621, 1622, 7, 5, 0, 0, 1622, 1623, 7, 17, 0, 0, 1623, 1624, 7, 7, 0, 0, 1624, 1625, 7, 16, 0, 0, 1625, 102, 1, 0, 0, 0, 1626, 1627, 7, 14, 0, 0, 1627, 1628, 7, 13, 0, 0, 1628, 1629, 7, 10, 0, 0, 1629, 1630, 7, 5, 0, 0, 1630, 1631, 7, 16, 0, 0, 1631, 1632, 7, 10, 0, 0, 1632, 104, 1, 0, 0, 0, 1633, 1634, 7, 14, 0, 0, 1634, 1635, 7, 22, 0, 0, 1635, 1636, 7, 13, 0, 0, 1636, 1637, 7, 13, 0, 0, 1637, 1638, 7, 10, 0, 0, 1638, 1639, 7, 7, 0, 0, 1639, 1640, 7, 16, 0, 0, 1640, 1641, 5, 95, 0, 0, 1641, 1642, 7, 14, 0, 0, 1642, 1643, 7, 5, 0, 0, 1643, 1644, 7, 16, 0, 0, 1644, 1645, 7, 5, 0, 0, 1645, 1646, 7, 6, 0, 0, 1646, 1647, 7, 19, 0, 0, 1647, 1648, 7, 23, 0, 0, 1648, 106, 1, 0, 0, 0, 1649, 1650, 7, 14, 0, 0, 1650, 1651, 7, 22, 0, 0, 1651, 1652, 7, 13, 0, 0, 1652, 1653, 7, 13, 0, 0, 1653, 1654, 7, 10, 0, 0, 1654, 1655, 7, 7, 0, 0, 1655, 1656, 7, 16, 0, 0, 1656, 1657, 5, 95, 0, 0, 1657, 1658, 7, 12, 0, 0, 1658, 1659, 7, 5, 0, 0, 1659, 1660, 7, 16, 0, 0, 1660, 1661, 7, 10, 0, 0, 1661, 108, 1, 0, 0, 0, 1662, 1663, 7, 14, 0, 0, 1663, 1664, 7, 22, 0, 0, 1664, 1665, 7, 13, 0, 0, 1665, 1666, 7, 13, 0, 0, 1666, 1667, 7, 10, 0, 0, 1667, 1668, 7, 7, 0, 0, 1668, 1669, 7, 16, 0, 0, 1669, 1670, 5, 95, 0, 0, 1670, 1671, 7, 13, 0, 0, 1671, 1672, 7, 19, 0, 0, 1672, 1673, 7, 6, 0, 0, 1673, 1674, 7, 10, 0, 0, 1674, 110, 1, 0, 0, 0, 1675, 1676, 7, 14, 0, 0, 1676, 1677, 7, 22, 0, 0, 1677, 1678, 7, 13, 0, 0, 1678, 1679, 7, 13, 0, 0, 1679, 1680, 7, 10, 0, 0, 1680, 1681, 7, 7, 0, 0, 1681, 1682, 7, 16, 0, 0, 1682, 1683, 5, 95, 0, 0, 1683, 1684, 7, 16, 0, 0, 1684, 1685, 7, 17, 0, 0, 1685, 1686, 7, 15, 0, 0, 1686, 1687, 7, 10, 0, 0, 1687, 112, 1, 0, 0, 0, 1688, 1689, 7, 14, 0, 0, 1689, 1690, 7, 22, 0, 0, 1690, 1691, 7, 13, 0, 0, 1691, 1692, 7, 13, 0, 0, 1692, 1693, 7, 10, 0, 0, 1693, 1694, 7, 7, 0, 0, 1694, 1695, 7, 16, 0, 0, 1695, 1696, 5, 95, 0, 0, 1696, 1697, 7, 16, 0, 0, 1697, 1698, 7, 17, 0, 0, 1698, 1699, 7, 15, 0, 0, 1699, 1700, 7, 10, 0, 0, 1700, 1701, 7, 9, 0, 0, 1701, 1702, 7, 16, 0, 0, 1702, 1703, 7, 5, 0, 0, 1703, 1704, 7, 15, 0, 0, 1704, 1705, 7, 24, 0, 0, 1705, 114, 1, 0, 0, 0, 1706, 1707, 7, 14, 0, 0, 1707, 1708, 7, 22, 0, 0, 1708, 1709, 7, 13, 0, 0, 1709, 1710, 7, 13, 0, 0, 1710, 1711, 7, 10, 0, 0, 1711, 1712, 7, 7, 0, 0, 1712, 1713, 7, 16, 0, 0, 1713, 1714, 5, 95, 0, 0, 1714, 1715, 7, 22, 0, 0, 1715, 1716, 7, 9, 0, 0, 1716, 1717, 7, 10, 0, 0, 1717, 1718, 7, 13, 0, 0, 1718, 116, 1, 0, 0, 0, 1719, 1720, 7, 12, 0, 0, 1720, 1721, 7, 10, 0, 0, 1721, 1722, 7, 25, 0, 0, 1722, 1723, 7, 5, 0, 0, 1723, 1724, 7, 22, 0, 0, 1724, 1725, 7, 6, 0, 0, 1725, 1726, 7, 16, 0, 0, 1726, 118, 1, 0, 0, 0, 1727, 1728, 7, 12, 0, 0, 1728, 1729, 7, 10, 0, 0, 1729, 1730, 7, 25, 0, 0, 1730, 1731, 7, 10, 0, 0, 1731, 1732, 7, 13, 0, 0, 1732, 1733, 7, 13, 0, 0, 1733, 1734, 7, 5, 0, 0, 1734, 1735, 7, 18, 0, 0, 1735, 1736, 7, 6, 0, 0, 1736, 1737, 7, 10, 0, 0, 1737, 120, 1, 0, 0, 0, 1738, 1739, 7, 12, 0, 0, 1739, 1740, 7, 10, 0, 0, 1740, 1741, 7, 9, 0, 0, 1741, 1742, 7, 14, 0, 0, 1742, 122, 1, 0, 0, 0, 1743, 1744, 7, 12, 0, 0, 1744, 1745, 7, 17, 0, 0, 1745, 1746, 7, 9, 0, 0, 1746, 1747, 7, 16, 0, 0, 1747, 1748, 7, 17, 0, 0, 1748, 1749, 7, 7, 0, 0, 1749, 1750, 7, 14, 0, 0, 1750, 1751, 7, 16, 0, 0, 1751, 124, 1, 0, 0, 0, 1752, 1753, 7, 12, 0, 0, 1753, 1754, 7, 19, 0, 0, 1754, 126, 1, 0, 0, 0, 1755, 1756, 7, 10, 0, 0, 1756, 1757, 7, 6, 0, 0, 1757, 1758, 7, 9, 0, 0, 1758, 1759, 7, 10, 0, 0, 1759, 128, 1, 0, 0, 0, 1760, 1761, 7, 10, 0, 0, 1761, 1762, 7, 26, 0, 0, 1762, 1763, 7, 14, 0, 0, 1763, 1764, 7, 10, 0, 0, 1764, 1765, 7, 24, 0, 0, 1765, 1766, 7, 16, 0, 0, 1766, 130, 1, 0, 0, 0, 1767, 1768, 7, 25, 0, 0, 1768, 1769, 7, 5, 0, 0, 1769, 1770, 7, 6, 0, 0, 1770, 1771, 7, 9, 0, 0, 1771, 1772, 7, 10, 0, 0, 1772, 132, 1, 0, 0, 0, 1773, 1774, 7, 25, 0, 0, 1774, 1775, 7, 10, 0, 0, 1775, 1776, 7, 16, 0, 0, 1776, 1777, 7, 14, 0, 0, 1777, 1778, 7, 20, 0, 0, 1778, 134, 1, 0, 0, 0, 1779, 1780, 7, 25, 0, 0, 1780, 1781, 7, 19, 0, 0, 1781, 1782, 7, 13, 0, 0, 1782, 136, 1, 0, 0, 0, 1783, 1784, 7, 25, 0, 0, 1784, 1785, 7, 19, 0, 0, 1785, 1786, 7, 13, 0, 0, 1786, 1787, 7, 10, 0, 0, 1787, 1788, 7, 17, 0, 0, 1788, 1789, 7, 23, 0, 0, 1789, 1790, 7, 7, 0, 0, 1790, 138, 1, 0, 0, 0, 1791, 1792, 7, 25, 0, 0, 1792, 1793, 7, 13, 0, 0, 1793, 1794, 7, 19, 0, 0, 1794, 1795, 7, 15, 0, 0, 1795, 140, 1, 0, 0, 0, 1796, 1797, 7, 23, 0, 0, 1797, 1798, 7, 13, 0, 0, 1798, 1799, 7, 5, 0, 0, 1799, 1800, 7, 7, 0, 0, 1800, 1801, 7, 16, 0, 0, 1801, 142, 1, 0, 0, 0, 1802, 1803, 7, 23, 0, 0, 1803, 1804, 7, 13, 0, 0, 1804, 1805, 7, 19, 0, 0, 1805, 1806, 7, 22, 0, 0, 1806, 1807, 7, 24, 0, 0, 1807, 144, 1, 0, 0, 0, 1808, 1809, 7, 20, 0, 0, 1809, 1810, 7, 5, 0, 0, 1810, 1811, 7, 27, 0, 0, 1811, 1812, 7, 17, 0, 0, 1812, 1813, 7, 7, 0, 0, 1813, 1814, 7, 23, 0, 0, 1814, 146, 1, 0, 0, 0, 1815, 1816, 7, 17, 0, 0, 1816, 1817, 7, 7, 0, 0, 1817, 148, 1, 0, 0, 0, 1818, 1819, 7, 17, 0, 0, 1819, 1820, 7, 7, 0, 0, 1820, 1821, 7, 17, 0, 0, 1821, 1822, 7, 16, 0, 0, 1822, 1823, 7, 17, 0, 0, 1823, 1824, 7, 5, 0, 0, 1824, 1825, 7, 6, 0, 0, 1825, 1826, 7, 6, 0, 0, 1826, 1827, 7, 8, 0, 0, 1827, 150, 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, 10, 0, 0, 1832, 1833, 7, 13, 0, 0, 1833, 1834, 7, 9, 0, 0, 1834, 1835, 7, 10, 0, 0, 1835, 1836, 7, 14, 0, 0, 1836, 1837, 7, 16, 0, 0, 1837, 152, 1, 0, 0, 0, 1838, 1839, 7, 17, 0, 0, 1839, 1840, 7, 7, 0, 0, 1840, 1841, 7, 16, 0, 0, 1841, 1842, 7, 19, 0, 0, 1842, 154, 1, 0, 0, 0, 1843, 1844, 7, 6, 0, 0, 1844, 1845, 7, 5, 0, 0, 1845, 1846, 7, 16, 0, 0, 1846, 1847, 7, 10, 0, 0, 1847, 1848, 7, 13, 0, 0, 1848, 1849, 7, 5, 0, 0, 1849, 1850, 7, 6, 0, 0, 1850, 156, 1, 0, 0, 0, 1851, 1852, 7, 6, 0, 0, 1852, 1853, 7, 10, 0, 0, 1853, 1854, 7, 5, 0, 0, 1854, 1855, 7, 12, 0, 0, 1855, 1856, 7, 17, 0, 0, 1856, 1857, 7, 7, 0, 0, 1857, 1858, 7, 23, 0, 0, 1858, 158, 1, 0, 0, 0, 1859, 1860, 7, 6, 0, 0, 1860, 1861, 7, 17, 0, 0, 1861, 1862, 7, 15, 0, 0, 1862, 1863, 7, 17, 0, 0, 1863, 1864, 7, 16, 0, 0, 1864, 160, 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, 162, 1, 0, 0, 0, 1875, 1876, 7, 6, 0, 0, 1876, 1877, 7, 19, 0, 0, 1877, 1878, 7, 14, 0, 0, 1878, 1879, 7, 5, 0, 0, 1879, 1880, 7, 6, 0, 0, 1880, 1881, 7, 16, 0, 0, 1881, 1882, 7, 17, 0, 0, 1882, 1883, 7, 15, 0, 0, 1883, 1884, 7, 10, 0, 0, 1884, 1885, 7, 9, 0, 0, 1885, 1886, 7, 16, 0, 0, 1886, 1887, 7, 5, 0, 0, 1887, 1888, 7, 15, 0, 0, 1888, 1889, 7, 24, 0, 0, 1889, 164, 1, 0, 0, 0, 1890, 1891, 7, 7, 0, 0, 1891, 1892, 7, 19, 0, 0, 1892, 1893, 7, 16, 0, 0, 1893, 166, 1, 0, 0, 0, 1894, 1895, 7, 7, 0, 0, 1895, 1896, 7, 22, 0, 0, 1896, 1897, 7, 6, 0, 0, 1897, 1898, 7, 6, 0, 0, 1898, 168, 1, 0, 0, 0, 1899, 1900, 7, 19, 0, 0, 1900, 1901, 7, 25, 0, 0, 1901, 1902, 7, 25, 0, 0, 1902, 1903, 7, 9, 0, 0, 1903, 1904, 7, 10, 0, 0, 1904, 1905, 7, 16, 0, 0, 1905, 170, 1, 0, 0, 0, 1906, 1907, 7, 19, 0, 0, 1907, 1908, 7, 7, 0, 0, 1908, 172, 1, 0, 0, 0, 1909, 1910, 7, 19, 0, 0, 1910, 1911, 7, 7, 0, 0, 1911, 1912, 7, 6, 0, 0, 1912, 1913, 7, 8, 0, 0, 1913, 174, 1, 0, 0, 0, 1914, 1915, 7, 19, 0, 0, 1915, 1916, 7, 13, 0, 0, 1916, 176, 1, 0, 0, 0, 1917, 1918, 7, 19, 0, 0, 1918, 1919, 7, 13, 0, 0, 1919, 1920, 7, 12, 0, 0, 1920, 1921, 7, 10, 0, 0, 1921, 1922, 7, 13, 0, 0, 1922, 178, 1, 0, 0, 0, 1923, 1924, 7, 24, 0, 0, 1924, 1925, 7, 6, 0, 0, 1925, 1926, 7, 5, 0, 0, 1926, 1927, 7, 14, 0, 0, 1927, 1928, 7, 17, 0, 0, 1928, 1929, 7, 7, 0, 0, 1929, 1930, 7, 23, 0, 0, 1930, 180, 1, 0, 0, 0, 1931, 1932, 7, 24, 0, 0, 1932, 1933, 7, 13, 0, 0, 1933, 1934, 7, 17, 0, 0, 1934, 1935, 7, 15, 0, 0, 1935, 1936, 7, 5, 0, 0, 1936, 1937, 7, 13, 0, 0, 1937, 1938, 7, 8, 0, 0, 1938, 182, 1, 0, 0, 0, 1939, 1940, 7, 13, 0, 0, 1940, 1941, 7, 10, 0, 0, 1941, 1942, 7, 25, 0, 0, 1942, 1943, 7, 10, 0, 0, 1943, 1944, 7, 13, 0, 0, 1944, 1945, 7, 10, 0, 0, 1945, 1946, 7, 7, 0, 0, 1946, 1947, 7, 14, 0, 0, 1947, 1948, 7, 10, 0, 0, 1948, 1949, 7, 9, 0, 0, 1949, 184, 1, 0, 0, 0, 1950, 1951, 7, 13, 0, 0, 1951, 1952, 7, 10, 0, 0, 1952, 1953, 7, 16, 0, 0, 1953, 1954, 7, 22, 0, 0, 1954, 1955, 7, 13, 0, 0, 1955, 1956, 7, 7, 0, 0, 1956, 1957, 7, 17, 0, 0, 1957, 1958, 7, 7, 0, 0, 1958, 1959, 7, 23, 0, 0, 1959, 186, 1, 0, 0, 0, 1960, 1961, 7, 9, 0, 0, 1961, 1962, 7, 10, 0, 0, 1962, 1963, 7, 6, 0, 0, 1963, 1964, 7, 10, 0, 0, 1964, 1965, 7, 14, 0, 0, 1965, 1966, 7, 16, 0, 0, 1966, 188, 1, 0, 0, 0, 1967, 1968, 7, 9, 0, 0, 1968, 1969, 7, 10, 0, 0, 1969, 1970, 7, 9, 0, 0, 1970, 1971, 7, 9, 0, 0, 1971, 1972, 7, 17, 0, 0, 1972, 1973, 7, 19, 0, 0, 1973, 1974, 7, 7, 0, 0, 1974, 1975, 5, 95, 0, 0, 1975, 1976, 7, 22, 0, 0, 1976, 1977, 7, 9, 0, 0, 1977, 1978, 7, 10, 0, 0, 1978, 1979, 7, 13, 0, 0, 1979, 190, 1, 0, 0, 0, 1980, 1981, 7, 9, 0, 0, 1981, 1982, 7, 19, 0, 0, 1982, 1983, 7, 15, 0, 0, 1983, 1984, 7, 10, 0, 0, 1984, 192, 1, 0, 0, 0, 1985, 1986, 7, 9, 0, 0, 1986, 1987, 7, 8, 0, 0, 1987, 1988, 7, 15, 0, 0, 1988, 1989, 7, 15, 0, 0, 1989, 1990, 7, 10, 0, 0, 1990, 1991, 7, 16, 0, 0, 1991, 1992, 7, 13, 0, 0, 1992, 1993, 7, 17, 0, 0, 1993, 1994, 7, 14, 0, 0, 1994, 194, 1, 0, 0, 0, 1995, 1996, 7, 16, 0, 0, 1996, 1997, 7, 5, 0, 0, 1997, 1998, 7, 18, 0, 0, 1998, 1999, 7, 6, 0, 0, 1999, 2000, 7, 10, 0, 0, 2000, 196, 1, 0, 0, 0, 2001, 2002, 7, 16, 0, 0, 2002, 2003, 7, 20, 0, 0, 2003, 2004, 7, 10, 0, 0, 2004, 2005, 7, 7, 0, 0, 2005, 198, 1, 0, 0, 0, 2006, 2007, 7, 16, 0, 0, 2007, 2008, 7, 19, 0, 0, 2008, 200, 1, 0, 0, 0, 2009, 2010, 7, 16, 0, 0, 2010, 2011, 7, 19, 0, 0, 2011, 2012, 7, 24, 0, 0, 2012, 2013, 7, 17, 0, 0, 2013, 2014, 7, 14, 0, 0, 2014, 202, 1, 0, 0, 0, 2015, 2016, 7, 16, 0, 0, 2016, 2017, 7, 19, 0, 0, 2017, 2018, 7, 24, 0, 0, 2018, 2019, 7, 17, 0, 0, 2019, 2020, 7, 14, 0, 0, 2020, 2021, 7, 9, 0, 0, 2021, 204, 1, 0, 0, 0, 2022, 2023, 7, 9, 0, 0, 2023, 2024, 7, 16, 0, 0, 2024, 2025, 7, 13, 0, 0, 2025, 2026, 7, 10, 0, 0, 2026, 2027, 7, 5, 0, 0, 2027, 2028, 7, 15, 0, 0, 2028, 206, 1, 0, 0, 0, 2029, 2030, 7, 11, 0, 0, 2030, 2031, 7, 27, 0, 0, 2031, 2032, 7, 17, 0, 0, 2032, 2033, 7, 10, 0, 0, 2033, 2034, 7, 28, 0, 0, 2034, 208, 1, 0, 0, 0, 2035, 2036, 7, 11, 0, 0, 2036, 2037, 7, 27, 0, 0, 2037, 2038, 7, 17, 0, 0, 2038, 2039, 7, 10, 0, 0, 2039, 2040, 7, 28, 0, 0, 2040, 2041, 7, 9, 0, 0, 2041, 210, 1, 0, 0, 0, 2042, 2043, 7, 16, 0, 0, 2043, 2044, 7, 13, 0, 0, 2044, 2045, 7, 5, 0, 0, 2045, 2046, 7, 17, 0, 0, 2046, 2047, 7, 6, 0, 0, 2047, 2048, 7, 17, 0, 0, 2048, 2049, 7, 7, 0, 0, 2049, 2050, 7, 23, 0, 0, 2050, 212, 1, 0, 0, 0, 2051, 2052, 7, 16, 0, 0, 2052, 2053, 7, 13, 0, 0, 2053, 2054, 7, 22, 0, 0, 2054, 2055, 7, 10, 0, 0, 2055, 214, 1, 0, 0, 0, 2056, 2057, 7, 22, 0, 0, 2057, 2058, 7, 7, 0, 0, 2058, 2059, 7, 17, 0, 0, 2059, 2060, 7, 19, 0, 0, 2060, 2061, 7, 7, 0, 0, 2061, 216, 1, 0, 0, 0, 2062, 2063, 7, 22, 0, 0, 2063, 2064, 7, 7, 0, 0, 2064, 2065, 7, 17, 0, 0, 2065, 2066, 7, 29, 0, 0, 2066, 2067, 7, 22, 0, 0, 2067, 2068, 7, 10, 0, 0, 2068, 218, 1, 0, 0, 0, 2069, 2070, 7, 22, 0, 0, 2070, 2071, 7, 9, 0, 0, 2071, 2072, 7, 10, 0, 0, 2072, 2073, 7, 13, 0, 0, 2073, 220, 1, 0, 0, 0, 2074, 2075, 7, 22, 0, 0, 2075, 2076, 7, 9, 0, 0, 2076, 2077, 7, 17, 0, 0, 2077, 2078, 7, 7, 0, 0, 2078, 2079, 7, 23, 0, 0, 2079, 222, 1, 0, 0, 0, 2080, 2081, 7, 27, 0, 0, 2081, 2082, 7, 5, 0, 0, 2082, 2083, 7, 13, 0, 0, 2083, 2084, 7, 17, 0, 0, 2084, 2085, 7, 5, 0, 0, 2085, 2086, 7, 12, 0, 0, 2086, 2087, 7, 17, 0, 0, 2087, 2088, 7, 14, 0, 0, 2088, 224, 1, 0, 0, 0, 2089, 2090, 7, 28, 0, 0, 2090, 2091, 7, 20, 0, 0, 2091, 2092, 7, 10, 0, 0, 2092, 2093, 7, 7, 0, 0, 2093, 226, 1, 0, 0, 0, 2094, 2095, 7, 28, 0, 0, 2095, 2096, 7, 20, 0, 0, 2096, 2097, 7, 10, 0, 0, 2097, 2098, 7, 13, 0, 0, 2098, 2099, 7, 10, 0, 0, 2099, 228, 1, 0, 0, 0, 2100, 2101, 7, 28, 0, 0, 2101, 2102, 7, 17, 0, 0, 2102, 2103, 7, 7, 0, 0, 2103, 2104, 7, 12, 0, 0, 2104, 2105, 7, 19, 0, 0, 2105, 2106, 7, 28, 0, 0, 2106, 230, 1, 0, 0, 0, 2107, 2108, 7, 28, 0, 0, 2108, 2109, 7, 17, 0, 0, 2109, 2110, 7, 16, 0, 0, 2110, 2111, 7, 20, 0, 0, 2111, 232, 1, 0, 0, 0, 2112, 2113, 7, 5, 0, 0, 2113, 2114, 7, 22, 0, 0, 2114, 2115, 7, 16, 0, 0, 2115, 2116, 7, 20, 0, 0, 2116, 2117, 7, 19, 0, 0, 2117, 2118, 7, 13, 0, 0, 2118, 2119, 7, 17, 0, 0, 2119, 2120, 7, 11, 0, 0, 2120, 2121, 7, 5, 0, 0, 2121, 2122, 7, 16, 0, 0, 2122, 2123, 7, 17, 0, 0, 2123, 2124, 7, 19, 0, 0, 2124, 2125, 7, 7, 0, 0, 2125, 234, 1, 0, 0, 0, 2126, 2127, 7, 18, 0, 0, 2127, 2128, 7, 17, 0, 0, 2128, 2129, 7, 7, 0, 0, 2129, 2130, 7, 5, 0, 0, 2130, 2131, 7, 13, 0, 0, 2131, 2132, 7, 8, 0, 0, 2132, 236, 1, 0, 0, 0, 2133, 2134, 7, 14, 0, 0, 2134, 2135, 7, 19, 0, 0, 2135, 2136, 7, 6, 0, 0, 2136, 2137, 7, 6, 0, 0, 2137, 2138, 7, 5, 0, 0, 2138, 2139, 7, 16, 0, 0, 2139, 2140, 7, 17, 0, 0, 2140, 2141, 7, 19, 0, 0, 2141, 2142, 7, 7, 0, 0, 2142, 238, 1, 0, 0, 0, 2143, 2144, 7, 14, 0, 0, 2144, 2145, 7, 19, 0, 0, 2145, 2146, 7, 7, 0, 0, 2146, 2147, 7, 14, 0, 0, 2147, 2148, 7, 22, 0, 0, 2148, 2149, 7, 13, 0, 0, 2149, 2150, 7, 13, 0, 0, 2150, 2151, 7, 10, 0, 0, 2151, 2152, 7, 7, 0, 0, 2152, 2153, 7, 16, 0, 0, 2153, 2154, 7, 6, 0, 0, 2154, 2155, 7, 8, 0, 0, 2155, 240, 1, 0, 0, 0, 2156, 2157, 7, 14, 0, 0, 2157, 2158, 7, 13, 0, 0, 2158, 2159, 7, 19, 0, 0, 2159, 2160, 7, 9, 0, 0, 2160, 2161, 7, 9, 0, 0, 2161, 242, 1, 0, 0, 0, 2162, 2163, 7, 14, 0, 0, 2163, 2164, 7, 22, 0, 0, 2164, 2165, 7, 13, 0, 0, 2165, 2166, 7, 13, 0, 0, 2166, 2167, 7, 10, 0, 0, 2167, 2168, 7, 7, 0, 0, 2168, 2169, 7, 16, 0, 0, 2169, 2170, 5, 95, 0, 0, 2170, 2171, 7, 9, 0, 0, 2171, 2172, 7, 14, 0, 0, 2172, 2173, 7, 20, 0, 0, 2173, 2174, 7, 10, 0, 0, 2174, 2175, 7, 15, 0, 0, 2175, 2176, 7, 5, 0, 0, 2176, 244, 1, 0, 0, 0, 2177, 2178, 7, 25, 0, 0, 2178, 2179, 7, 13, 0, 0, 2179, 2180, 7, 10, 0, 0, 2180, 2181, 7, 10, 0, 0, 2181, 2182, 7, 11, 0, 0, 2182, 2183, 7, 10, 0, 0, 2183, 246, 1, 0, 0, 0, 2184, 2185, 7, 25, 0, 0, 2185, 2186, 7, 22, 0, 0, 2186, 2187, 7, 6, 0, 0, 2187, 2188, 7, 6, 0, 0, 2188, 248, 1, 0, 0, 0, 2189, 2190, 7, 17, 0, 0, 2190, 2191, 7, 6, 0, 0, 2191, 2192, 7, 17, 0, 0, 2192, 2193, 7, 21, 0, 0, 2193, 2194, 7, 10, 0, 0, 2194, 250, 1, 0, 0, 0, 2195, 2196, 7, 17, 0, 0, 2196, 2197, 7, 7, 0, 0, 2197, 2198, 7, 7, 0, 0, 2198, 2199, 7, 10, 0, 0, 2199, 2200, 7, 13, 0, 0, 2200, 252, 1, 0, 0, 0, 2201, 2202, 7, 17, 0, 0, 2202, 2203, 7, 9, 0, 0, 2203, 254, 1, 0, 0, 0, 2204, 2205, 7, 17, 0, 0, 2205, 2206, 7, 9, 0, 0, 2206, 2207, 7, 7, 0, 0, 2207, 2208, 7, 22, 0, 0, 2208, 2209, 7, 6, 0, 0, 2209, 2210, 7, 6, 0, 0, 2210, 256, 1, 0, 0, 0, 2211, 2212, 7, 30, 0, 0, 2212, 2213, 7, 19, 0, 0, 2213, 2214, 7, 17, 0, 0, 2214, 2215, 7, 7, 0, 0, 2215, 258, 1, 0, 0, 0, 2216, 2217, 7, 6, 0, 0, 2217, 2218, 7, 10, 0, 0, 2218, 2219, 7, 25, 0, 0, 2219, 2220, 7, 16, 0, 0, 2220, 260, 1, 0, 0, 0, 2221, 2222, 7, 6, 0, 0, 2222, 2223, 7, 17, 0, 0, 2223, 2224, 7, 21, 0, 0, 2224, 2225, 7, 10, 0, 0, 2225, 262, 1, 0, 0, 0, 2226, 2227, 7, 7, 0, 0, 2227, 2228, 7, 5, 0, 0, 2228, 2229, 7, 16, 0, 0, 2229, 2230, 7, 22, 0, 0, 2230, 2231, 7, 13, 0, 0, 2231, 2232, 7, 5, 0, 0, 2232, 2233, 7, 6, 0, 0, 2233, 264, 1, 0, 0, 0, 2234, 2235, 7, 7, 0, 0, 2235, 2236, 7, 19, 0, 0, 2236, 2237, 7, 16, 0, 0, 2237, 2238, 7, 7, 0, 0, 2238, 2239, 7, 22, 0, 0, 2239, 2240, 7, 6, 0, 0, 2240, 2241, 7, 6, 0, 0, 2241, 266, 1, 0, 0, 0, 2242, 2243, 7, 19, 0, 0, 2243, 2244, 7, 22, 0, 0, 2244, 2245, 7, 16, 0, 0, 2245, 2246, 7, 10, 0, 0, 2246, 2247, 7, 13, 0, 0, 2247, 268, 1, 0, 0, 0, 2248, 2249, 7, 19, 0, 0, 2249, 2250, 7, 27, 0, 0, 2250, 2251, 7, 10, 0, 0, 2251, 2252, 7, 13, 0, 0, 2252, 270, 1, 0, 0, 0, 2253, 2254, 7, 19, 0, 0, 2254, 2255, 7, 27, 0, 0, 2255, 2256, 7, 10, 0, 0, 2256, 2257, 7, 13, 0, 0, 2257, 2258, 7, 6, 0, 0, 2258, 2259, 7, 5, 0, 0, 2259, 2260, 7, 24, 0, 0, 2260, 2261, 7, 9, 0, 0, 2261, 272, 1, 0, 0, 0, 2262, 2263, 7, 13, 0, 0, 2263, 2264, 7, 17, 0, 0, 2264, 2265, 7, 23, 0, 0, 2265, 2266, 7, 20, 0, 0, 2266, 2267, 7, 16, 0, 0, 2267, 274, 1, 0, 0, 0, 2268, 2269, 7, 9, 0, 0, 2269, 2270, 7, 17, 0, 0, 2270, 2271, 7, 15, 0, 0, 2271, 2272, 7, 17, 0, 0, 2272, 2273, 7, 6, 0, 0, 2273, 2274, 7, 5, 0, 0, 2274, 2275, 7, 13, 0, 0, 2275, 276, 1, 0, 0, 0, 2276, 2277, 7, 27, 0, 0, 2277, 2278, 7, 10, 0, 0, 2278, 2279, 7, 13, 0, 0, 2279, 2280, 7, 18, 0, 0, 2280, 2281, 7, 19, 0, 0, 2281, 2282, 7, 9, 0, 0, 2282, 2283, 7, 10, 0, 0, 2283, 278, 1, 0, 0, 0, 2284, 2285, 7, 5, 0, 0, 2285, 2286, 7, 18, 0, 0, 2286, 2287, 7, 19, 0, 0, 2287, 2288, 7, 13, 0, 0, 2288, 2289, 7, 16, 0, 0, 2289, 280, 1, 0, 0, 0, 2290, 2291, 7, 5, 0, 0, 2291, 2292, 7, 18, 0, 0, 2292, 2293, 7, 9, 0, 0, 2293, 2294, 7, 19, 0, 0, 2294, 2295, 7, 6, 0, 0, 2295, 2296, 7, 22, 0, 0, 2296, 2297, 7, 16, 0, 0, 2297, 2298, 7, 10, 0, 0, 2298, 282, 1, 0, 0, 0, 2299, 2300, 7, 5, 0, 0, 2300, 2301, 7, 14, 0, 0, 2301, 2302, 7, 14, 0, 0, 2302, 2303, 7, 10, 0, 0, 2303, 2304, 7, 9, 0, 0, 2304, 2305, 7, 9, 0, 0, 2305, 284, 1, 0, 0, 0, 2306, 2307, 7, 5, 0, 0, 2307, 2308, 7, 14, 0, 0, 2308, 2309, 7, 16, 0, 0, 2309, 2310, 7, 17, 0, 0, 2310, 2311, 7, 19, 0, 0, 2311, 2312, 7, 7, 0, 0, 2312, 286, 1, 0, 0, 0, 2313, 2314, 7, 5, 0, 0, 2314, 2315, 7, 12, 0, 0, 2315, 2316, 7, 12, 0, 0, 2316, 288, 1, 0, 0, 0, 2317, 2318, 7, 5, 0, 0, 2318, 2319, 7, 12, 0, 0, 2319, 2320, 7, 15, 0, 0, 2320, 2321, 7, 17, 0, 0, 2321, 2322, 7, 7, 0, 0, 2322, 290, 1, 0, 0, 0, 2323, 2324, 7, 5, 0, 0, 2324, 2325, 7, 25, 0, 0, 2325, 2326, 7, 16, 0, 0, 2326, 2327, 7, 10, 0, 0, 2327, 2328, 7, 13, 0, 0, 2328, 292, 1, 0, 0, 0, 2329, 2330, 7, 5, 0, 0, 2330, 2331, 7, 23, 0, 0, 2331, 2332, 7, 23, 0, 0, 2332, 2333, 7, 13, 0, 0, 2333, 2334, 7, 10, 0, 0, 2334, 2335, 7, 23, 0, 0, 2335, 2336, 7, 5, 0, 0, 2336, 2337, 7, 16, 0, 0, 2337, 2338, 7, 10, 0, 0, 2338, 294, 1, 0, 0, 0, 2339, 2340, 7, 5, 0, 0, 2340, 2341, 7, 6, 0, 0, 2341, 2342, 7, 9, 0, 0, 2342, 2343, 7, 19, 0, 0, 2343, 296, 1, 0, 0, 0, 2344, 2345, 7, 5, 0, 0, 2345, 2346, 7, 6, 0, 0, 2346, 2347, 7, 16, 0, 0, 2347, 2348, 7, 10, 0, 0, 2348, 2349, 7, 13, 0, 0, 2349, 298, 1, 0, 0, 0, 2350, 2351, 7, 5, 0, 0, 2351, 2352, 7, 6, 0, 0, 2352, 2353, 7, 28, 0, 0, 2353, 2354, 7, 5, 0, 0, 2354, 2355, 7, 8, 0, 0, 2355, 2356, 7, 9, 0, 0, 2356, 300, 1, 0, 0, 0, 2357, 2358, 7, 5, 0, 0, 2358, 2359, 7, 9, 0, 0, 2359, 2360, 7, 9, 0, 0, 2360, 2361, 7, 10, 0, 0, 2361, 2362, 7, 13, 0, 0, 2362, 2363, 7, 16, 0, 0, 2363, 2364, 7, 17, 0, 0, 2364, 2365, 7, 19, 0, 0, 2365, 2366, 7, 7, 0, 0, 2366, 302, 1, 0, 0, 0, 2367, 2368, 7, 5, 0, 0, 2368, 2369, 7, 9, 0, 0, 2369, 2370, 7, 9, 0, 0, 2370, 2371, 7, 17, 0, 0, 2371, 2372, 7, 23, 0, 0, 2372, 2373, 7, 7, 0, 0, 2373, 2374, 7, 15, 0, 0, 2374, 2375, 7, 10, 0, 0, 2375, 2376, 7, 7, 0, 0, 2376, 2377, 7, 16, 0, 0, 2377, 304, 1, 0, 0, 0, 2378, 2379, 7, 5, 0, 0, 2379, 2380, 7, 16, 0, 0, 2380, 306, 1, 0, 0, 0, 2381, 2382, 7, 5, 0, 0, 2382, 2383, 7, 16, 0, 0, 2383, 2384, 7, 16, 0, 0, 2384, 2385, 7, 13, 0, 0, 2385, 2386, 7, 17, 0, 0, 2386, 2387, 7, 18, 0, 0, 2387, 2388, 7, 22, 0, 0, 2388, 2389, 7, 16, 0, 0, 2389, 2390, 7, 10, 0, 0, 2390, 308, 1, 0, 0, 0, 2391, 2392, 7, 18, 0, 0, 2392, 2393, 7, 5, 0, 0, 2393, 2394, 7, 14, 0, 0, 2394, 2395, 7, 21, 0, 0, 2395, 2396, 7, 28, 0, 0, 2396, 2397, 7, 5, 0, 0, 2397, 2398, 7, 13, 0, 0, 2398, 2399, 7, 12, 0, 0, 2399, 310, 1, 0, 0, 0, 2400, 2401, 7, 18, 0, 0, 2401, 2402, 7, 10, 0, 0, 2402, 2403, 7, 25, 0, 0, 2403, 2404, 7, 19, 0, 0, 2404, 2405, 7, 13, 0, 0, 2405, 2406, 7, 10, 0, 0, 2406, 312, 1, 0, 0, 0, 2407, 2408, 7, 18, 0, 0, 2408, 2409, 7, 10, 0, 0, 2409, 2410, 7, 23, 0, 0, 2410, 2411, 7, 17, 0, 0, 2411, 2412, 7, 7, 0, 0, 2412, 314, 1, 0, 0, 0, 2413, 2414, 7, 18, 0, 0, 2414, 2415, 7, 8, 0, 0, 2415, 316, 1, 0, 0, 0, 2416, 2417, 7, 14, 0, 0, 2417, 2418, 7, 5, 0, 0, 2418, 2419, 7, 14, 0, 0, 2419, 2420, 7, 20, 0, 0, 2420, 2421, 7, 10, 0, 0, 2421, 318, 1, 0, 0, 0, 2422, 2423, 7, 14, 0, 0, 2423, 2424, 7, 5, 0, 0, 2424, 2425, 7, 6, 0, 0, 2425, 2426, 7, 6, 0, 0, 2426, 2427, 7, 10, 0, 0, 2427, 2428, 7, 12, 0, 0, 2428, 320, 1, 0, 0, 0, 2429, 2430, 7, 14, 0, 0, 2430, 2431, 7, 5, 0, 0, 2431, 2432, 7, 9, 0, 0, 2432, 2433, 7, 14, 0, 0, 2433, 2434, 7, 5, 0, 0, 2434, 2435, 7, 12, 0, 0, 2435, 2436, 7, 10, 0, 0, 2436, 322, 1, 0, 0, 0, 2437, 2438, 7, 14, 0, 0, 2438, 2439, 7, 5, 0, 0, 2439, 2440, 7, 9, 0, 0, 2440, 2441, 7, 14, 0, 0, 2441, 2442, 7, 5, 0, 0, 2442, 2443, 7, 12, 0, 0, 2443, 2444, 7, 10, 0, 0, 2444, 2445, 7, 12, 0, 0, 2445, 324, 1, 0, 0, 0, 2446, 2447, 7, 14, 0, 0, 2447, 2448, 7, 5, 0, 0, 2448, 2449, 7, 16, 0, 0, 2449, 2450, 7, 5, 0, 0, 2450, 2451, 7, 6, 0, 0, 2451, 2452, 7, 19, 0, 0, 2452, 2453, 7, 23, 0, 0, 2453, 326, 1, 0, 0, 0, 2454, 2455, 7, 14, 0, 0, 2455, 2456, 7, 20, 0, 0, 2456, 2457, 7, 5, 0, 0, 2457, 2458, 7, 17, 0, 0, 2458, 2459, 7, 7, 0, 0, 2459, 328, 1, 0, 0, 0, 2460, 2461, 7, 14, 0, 0, 2461, 2462, 7, 20, 0, 0, 2462, 2463, 7, 5, 0, 0, 2463, 2464, 7, 13, 0, 0, 2464, 2465, 7, 5, 0, 0, 2465, 2466, 7, 14, 0, 0, 2466, 2467, 7, 16, 0, 0, 2467, 2468, 7, 10, 0, 0, 2468, 2469, 7, 13, 0, 0, 2469, 2470, 7, 17, 0, 0, 2470, 2471, 7, 9, 0, 0, 2471, 2472, 7, 16, 0, 0, 2472, 2473, 7, 17, 0, 0, 2473, 2474, 7, 14, 0, 0, 2474, 2475, 7, 9, 0, 0, 2475, 330, 1, 0, 0, 0, 2476, 2477, 7, 14, 0, 0, 2477, 2478, 7, 20, 0, 0, 2478, 2479, 7, 10, 0, 0, 2479, 2480, 7, 14, 0, 0, 2480, 2481, 7, 21, 0, 0, 2481, 2482, 7, 24, 0, 0, 2482, 2483, 7, 19, 0, 0, 2483, 2484, 7, 17, 0, 0, 2484, 2485, 7, 7, 0, 0, 2485, 2486, 7, 16, 0, 0, 2486, 332, 1, 0, 0, 0, 2487, 2488, 7, 14, 0, 0, 2488, 2489, 7, 6, 0, 0, 2489, 2490, 7, 5, 0, 0, 2490, 2491, 7, 9, 0, 0, 2491, 2492, 7, 9, 0, 0, 2492, 334, 1, 0, 0, 0, 2493, 2494, 7, 14, 0, 0, 2494, 2495, 7, 6, 0, 0, 2495, 2496, 7, 19, 0, 0, 2496, 2497, 7, 9, 0, 0, 2497, 2498, 7, 10, 0, 0, 2498, 336, 1, 0, 0, 0, 2499, 2500, 7, 14, 0, 0, 2500, 2501, 7, 6, 0, 0, 2501, 2502, 7, 22, 0, 0, 2502, 2503, 7, 9, 0, 0, 2503, 2504, 7, 16, 0, 0, 2504, 2505, 7, 10, 0, 0, 2505, 2506, 7, 13, 0, 0, 2506, 338, 1, 0, 0, 0, 2507, 2508, 7, 14, 0, 0, 2508, 2509, 7, 19, 0, 0, 2509, 2510, 7, 15, 0, 0, 2510, 2511, 7, 15, 0, 0, 2511, 2512, 7, 10, 0, 0, 2512, 2513, 7, 7, 0, 0, 2513, 2514, 7, 16, 0, 0, 2514, 340, 1, 0, 0, 0, 2515, 2516, 7, 14, 0, 0, 2516, 2517, 7, 19, 0, 0, 2517, 2518, 7, 15, 0, 0, 2518, 2519, 7, 15, 0, 0, 2519, 2520, 7, 10, 0, 0, 2520, 2521, 7, 7, 0, 0, 2521, 2522, 7, 16, 0, 0, 2522, 2523, 7, 9, 0, 0, 2523, 342, 1, 0, 0, 0, 2524, 2525, 7, 14, 0, 0, 2525, 2526, 7, 19, 0, 0, 2526, 2527, 7, 15, 0, 0, 2527, 2528, 7, 15, 0, 0, 2528, 2529, 7, 17, 0, 0, 2529, 2530, 7, 16, 0, 0, 2530, 344, 1, 0, 0, 0, 2531, 2532, 7, 14, 0, 0, 2532, 2533, 7, 19, 0, 0, 2533, 2534, 7, 15, 0, 0, 2534, 2535, 7, 15, 0, 0, 2535, 2536, 7, 17, 0, 0, 2536, 2537, 7, 16, 0, 0, 2537, 2538, 7, 16, 0, 0, 2538, 2539, 7, 10, 0, 0, 2539, 2540, 7, 12, 0, 0, 2540, 346, 1, 0, 0, 0, 2541, 2542, 7, 14, 0, 0, 2542, 2543, 7, 19, 0, 0, 2543, 2544, 7, 7, 0, 0, 2544, 2545, 7, 25, 0, 0, 2545, 2546, 7, 17, 0, 0, 2546, 2547, 7, 23, 0, 0, 2547, 2548, 7, 22, 0, 0, 2548, 2549, 7, 13, 0, 0, 2549, 2550, 7, 5, 0, 0, 2550, 2551, 7, 16, 0, 0, 2551, 2552, 7, 17, 0, 0, 2552, 2553, 7, 19, 0, 0, 2553, 2554, 7, 7, 0, 0, 2554, 348, 1, 0, 0, 0, 2555, 2556, 7, 14, 0, 0, 2556, 2557, 7, 19, 0, 0, 2557, 2558, 7, 7, 0, 0, 2558, 2559, 7, 7, 0, 0, 2559, 2560, 7, 10, 0, 0, 2560, 2561, 7, 14, 0, 0, 2561, 2562, 7, 16, 0, 0, 2562, 2563, 7, 17, 0, 0, 2563, 2564, 7, 19, 0, 0, 2564, 2565, 7, 7, 0, 0, 2565, 350, 1, 0, 0, 0, 2566, 2567, 7, 14, 0, 0, 2567, 2568, 7, 19, 0, 0, 2568, 2569, 7, 7, 0, 0, 2569, 2570, 7, 9, 0, 0, 2570, 2571, 7, 16, 0, 0, 2571, 2572, 7, 13, 0, 0, 2572, 2573, 7, 5, 0, 0, 2573, 2574, 7, 17, 0, 0, 2574, 2575, 7, 7, 0, 0, 2575, 2576, 7, 16, 0, 0, 2576, 2577, 7, 9, 0, 0, 2577, 352, 1, 0, 0, 0, 2578, 2579, 7, 14, 0, 0, 2579, 2580, 7, 19, 0, 0, 2580, 2581, 7, 7, 0, 0, 2581, 2582, 7, 16, 0, 0, 2582, 2583, 7, 10, 0, 0, 2583, 2584, 7, 7, 0, 0, 2584, 2585, 7, 16, 0, 0, 2585, 354, 1, 0, 0, 0, 2586, 2587, 7, 14, 0, 0, 2587, 2588, 7, 19, 0, 0, 2588, 2589, 7, 7, 0, 0, 2589, 2590, 7, 16, 0, 0, 2590, 2591, 7, 17, 0, 0, 2591, 2592, 7, 7, 0, 0, 2592, 2593, 7, 22, 0, 0, 2593, 2594, 7, 10, 0, 0, 2594, 356, 1, 0, 0, 0, 2595, 2596, 7, 14, 0, 0, 2596, 2597, 7, 19, 0, 0, 2597, 2598, 7, 7, 0, 0, 2598, 2599, 7, 27, 0, 0, 2599, 2600, 7, 10, 0, 0, 2600, 2601, 7, 13, 0, 0, 2601, 2602, 7, 9, 0, 0, 2602, 2603, 7, 17, 0, 0, 2603, 2604, 7, 19, 0, 0, 2604, 2605, 7, 7, 0, 0, 2605, 358, 1, 0, 0, 0, 2606, 2607, 7, 14, 0, 0, 2607, 2608, 7, 19, 0, 0, 2608, 2609, 7, 24, 0, 0, 2609, 2610, 7, 8, 0, 0, 2610, 360, 1, 0, 0, 0, 2611, 2612, 7, 14, 0, 0, 2612, 2613, 7, 19, 0, 0, 2613, 2614, 7, 9, 0, 0, 2614, 2615, 7, 16, 0, 0, 2615, 362, 1, 0, 0, 0, 2616, 2617, 7, 14, 0, 0, 2617, 2618, 7, 9, 0, 0, 2618, 2619, 7, 27, 0, 0, 2619, 364, 1, 0, 0, 0, 2620, 2621, 7, 14, 0, 0, 2621, 2622, 7, 22, 0, 0, 2622, 2623, 7, 13, 0, 0, 2623, 2624, 7, 9, 0, 0, 2624, 2625, 7, 19, 0, 0, 2625, 2626, 7, 13, 0, 0, 2626, 366, 1, 0, 0, 0, 2627, 2628, 7, 14, 0, 0, 2628, 2629, 7, 8, 0, 0, 2629, 2630, 7, 14, 0, 0, 2630, 2631, 7, 6, 0, 0, 2631, 2632, 7, 10, 0, 0, 2632, 368, 1, 0, 0, 0, 2633, 2634, 7, 12, 0, 0, 2634, 2635, 7, 5, 0, 0, 2635, 2636, 7, 16, 0, 0, 2636, 2637, 7, 5, 0, 0, 2637, 370, 1, 0, 0, 0, 2638, 2639, 7, 12, 0, 0, 2639, 2640, 7, 5, 0, 0, 2640, 2641, 7, 16, 0, 0, 2641, 2642, 7, 5, 0, 0, 2642, 2643, 7, 18, 0, 0, 2643, 2644, 7, 5, 0, 0, 2644, 2645, 7, 9, 0, 0, 2645, 2646, 7, 10, 0, 0, 2646, 372, 1, 0, 0, 0, 2647, 2648, 7, 12, 0, 0, 2648, 2649, 7, 5, 0, 0, 2649, 2650, 7, 8, 0, 0, 2650, 374, 1, 0, 0, 0, 2651, 2652, 7, 12, 0, 0, 2652, 2653, 7, 10, 0, 0, 2653, 2654, 7, 5, 0, 0, 2654, 2655, 7, 6, 0, 0, 2655, 2656, 7, 6, 0, 0, 2656, 2657, 7, 19, 0, 0, 2657, 2658, 7, 14, 0, 0, 2658, 2659, 7, 5, 0, 0, 2659, 2660, 7, 16, 0, 0, 2660, 2661, 7, 10, 0, 0, 2661, 376, 1, 0, 0, 0, 2662, 2663, 7, 12, 0, 0, 2663, 2664, 7, 10, 0, 0, 2664, 2665, 7, 14, 0, 0, 2665, 2666, 7, 6, 0, 0, 2666, 2667, 7, 5, 0, 0, 2667, 2668, 7, 13, 0, 0, 2668, 2669, 7, 10, 0, 0, 2669, 378, 1, 0, 0, 0, 2670, 2671, 7, 12, 0, 0, 2671, 2672, 7, 10, 0, 0, 2672, 2673, 7, 25, 0, 0, 2673, 2674, 7, 5, 0, 0, 2674, 2675, 7, 22, 0, 0, 2675, 2676, 7, 6, 0, 0, 2676, 2677, 7, 16, 0, 0, 2677, 2678, 7, 9, 0, 0, 2678, 380, 1, 0, 0, 0, 2679, 2680, 7, 12, 0, 0, 2680, 2681, 7, 10, 0, 0, 2681, 2682, 7, 25, 0, 0, 2682, 2683, 7, 10, 0, 0, 2683, 2684, 7, 13, 0, 0, 2684, 2685, 7, 13, 0, 0, 2685, 2686, 7, 10, 0, 0, 2686, 2687, 7, 12, 0, 0, 2687, 382, 1, 0, 0, 0, 2688, 2689, 7, 12, 0, 0, 2689, 2690, 7, 10, 0, 0, 2690, 2691, 7, 25, 0, 0, 2691, 2692, 7, 17, 0, 0, 2692, 2693, 7, 7, 0, 0, 2693, 2694, 7, 10, 0, 0, 2694, 2695, 7, 13, 0, 0, 2695, 384, 1, 0, 0, 0, 2696, 2697, 7, 12, 0, 0, 2697, 2698, 7, 10, 0, 0, 2698, 2699, 7, 6, 0, 0, 2699, 2700, 7, 10, 0, 0, 2700, 2701, 7, 16, 0, 0, 2701, 2702, 7, 10, 0, 0, 2702, 386, 1, 0, 0, 0, 2703, 2704, 7, 12, 0, 0, 2704, 2705, 7, 10, 0, 0, 2705, 2706, 7, 6, 0, 0, 2706, 2707, 7, 17, 0, 0, 2707, 2708, 7, 15, 0, 0, 2708, 2709, 7, 17, 0, 0, 2709, 2710, 7, 16, 0, 0, 2710, 2711, 7, 10, 0, 0, 2711, 2712, 7, 13, 0, 0, 2712, 388, 1, 0, 0, 0, 2713, 2714, 7, 12, 0, 0, 2714, 2715, 7, 10, 0, 0, 2715, 2716, 7, 6, 0, 0, 2716, 2717, 7, 17, 0, 0, 2717, 2718, 7, 15, 0, 0, 2718, 2719, 7, 17, 0, 0, 2719, 2720, 7, 16, 0, 0, 2720, 2721, 7, 10, 0, 0, 2721, 2722, 7, 13, 0, 0, 2722, 2723, 7, 9, 0, 0, 2723, 390, 1, 0, 0, 0, 2724, 2725, 7, 12, 0, 0, 2725, 2726, 7, 17, 0, 0, 2726, 2727, 7, 14, 0, 0, 2727, 2728, 7, 16, 0, 0, 2728, 2729, 7, 17, 0, 0, 2729, 2730, 7, 19, 0, 0, 2730, 2731, 7, 7, 0, 0, 2731, 2732, 7, 5, 0, 0, 2732, 2733, 7, 13, 0, 0, 2733, 2734, 7, 8, 0, 0, 2734, 392, 1, 0, 0, 0, 2735, 2736, 7, 12, 0, 0, 2736, 2737, 7, 17, 0, 0, 2737, 2738, 7, 9, 0, 0, 2738, 2739, 7, 5, 0, 0, 2739, 2740, 7, 18, 0, 0, 2740, 2741, 7, 6, 0, 0, 2741, 2742, 7, 10, 0, 0, 2742, 394, 1, 0, 0, 0, 2743, 2744, 7, 12, 0, 0, 2744, 2745, 7, 17, 0, 0, 2745, 2746, 7, 9, 0, 0, 2746, 2747, 7, 14, 0, 0, 2747, 2748, 7, 5, 0, 0, 2748, 2749, 7, 13, 0, 0, 2749, 2750, 7, 12, 0, 0, 2750, 396, 1, 0, 0, 0, 2751, 2752, 7, 12, 0, 0, 2752, 2753, 7, 19, 0, 0, 2753, 2754, 7, 14, 0, 0, 2754, 2755, 7, 22, 0, 0, 2755, 2756, 7, 15, 0, 0, 2756, 2757, 7, 10, 0, 0, 2757, 2758, 7, 7, 0, 0, 2758, 2759, 7, 16, 0, 0, 2759, 398, 1, 0, 0, 0, 2760, 2761, 7, 12, 0, 0, 2761, 2762, 7, 19, 0, 0, 2762, 2763, 7, 15, 0, 0, 2763, 2764, 7, 5, 0, 0, 2764, 2765, 7, 17, 0, 0, 2765, 2766, 7, 7, 0, 0, 2766, 400, 1, 0, 0, 0, 2767, 2768, 7, 12, 0, 0, 2768, 2769, 7, 19, 0, 0, 2769, 2770, 7, 22, 0, 0, 2770, 2771, 7, 18, 0, 0, 2771, 2772, 7, 6, 0, 0, 2772, 2773, 7, 10, 0, 0, 2773, 402, 1, 0, 0, 0, 2774, 2775, 7, 12, 0, 0, 2775, 2776, 7, 13, 0, 0, 2776, 2777, 7, 19, 0, 0, 2777, 2778, 7, 24, 0, 0, 2778, 404, 1, 0, 0, 0, 2779, 2780, 7, 10, 0, 0, 2780, 2781, 7, 5, 0, 0, 2781, 2782, 7, 14, 0, 0, 2782, 2783, 7, 20, 0, 0, 2783, 406, 1, 0, 0, 0, 2784, 2785, 7, 10, 0, 0, 2785, 2786, 7, 7, 0, 0, 2786, 2787, 7, 5, 0, 0, 2787, 2788, 7, 18, 0, 0, 2788, 2789, 7, 6, 0, 0, 2789, 2790, 7, 10, 0, 0, 2790, 408, 1, 0, 0, 0, 2791, 2792, 7, 10, 0, 0, 2792, 2793, 7, 7, 0, 0, 2793, 2794, 7, 14, 0, 0, 2794, 2795, 7, 19, 0, 0, 2795, 2796, 7, 12, 0, 0, 2796, 2797, 7, 17, 0, 0, 2797, 2798, 7, 7, 0, 0, 2798, 2799, 7, 23, 0, 0, 2799, 410, 1, 0, 0, 0, 2800, 2801, 7, 10, 0, 0, 2801, 2802, 7, 7, 0, 0, 2802, 2803, 7, 14, 0, 0, 2803, 2804, 7, 13, 0, 0, 2804, 2805, 7, 8, 0, 0, 2805, 2806, 7, 24, 0, 0, 2806, 2807, 7, 16, 0, 0, 2807, 2808, 7, 10, 0, 0, 2808, 2809, 7, 12, 0, 0, 2809, 412, 1, 0, 0, 0, 2810, 2811, 7, 10, 0, 0, 2811, 2812, 7, 7, 0, 0, 2812, 2813, 7, 22, 0, 0, 2813, 2814, 7, 15, 0, 0, 2814, 414, 1, 0, 0, 0, 2815, 2816, 7, 10, 0, 0, 2816, 2817, 7, 9, 0, 0, 2817, 2818, 7, 14, 0, 0, 2818, 2819, 7, 5, 0, 0, 2819, 2820, 7, 24, 0, 0, 2820, 2821, 7, 10, 0, 0, 2821, 416, 1, 0, 0, 0, 2822, 2823, 7, 10, 0, 0, 2823, 2824, 7, 27, 0, 0, 2824, 2825, 7, 10, 0, 0, 2825, 2826, 7, 7, 0, 0, 2826, 2827, 7, 16, 0, 0, 2827, 418, 1, 0, 0, 0, 2828, 2829, 7, 10, 0, 0, 2829, 2830, 7, 26, 0, 0, 2830, 2831, 7, 14, 0, 0, 2831, 2832, 7, 6, 0, 0, 2832, 2833, 7, 22, 0, 0, 2833, 2834, 7, 12, 0, 0, 2834, 2835, 7, 10, 0, 0, 2835, 420, 1, 0, 0, 0, 2836, 2837, 7, 10, 0, 0, 2837, 2838, 7, 26, 0, 0, 2838, 2839, 7, 14, 0, 0, 2839, 2840, 7, 6, 0, 0, 2840, 2841, 7, 22, 0, 0, 2841, 2842, 7, 12, 0, 0, 2842, 2843, 7, 17, 0, 0, 2843, 2844, 7, 7, 0, 0, 2844, 2845, 7, 23, 0, 0, 2845, 422, 1, 0, 0, 0, 2846, 2847, 7, 10, 0, 0, 2847, 2848, 7, 26, 0, 0, 2848, 2849, 7, 14, 0, 0, 2849, 2850, 7, 6, 0, 0, 2850, 2851, 7, 22, 0, 0, 2851, 2852, 7, 9, 0, 0, 2852, 2853, 7, 17, 0, 0, 2853, 2854, 7, 27, 0, 0, 2854, 2855, 7, 10, 0, 0, 2855, 424, 1, 0, 0, 0, 2856, 2857, 7, 10, 0, 0, 2857, 2858, 7, 26, 0, 0, 2858, 2859, 7, 10, 0, 0, 2859, 2860, 7, 14, 0, 0, 2860, 2861, 7, 22, 0, 0, 2861, 2862, 7, 16, 0, 0, 2862, 2863, 7, 10, 0, 0, 2863, 426, 1, 0, 0, 0, 2864, 2865, 7, 10, 0, 0, 2865, 2866, 7, 26, 0, 0, 2866, 2867, 7, 24, 0, 0, 2867, 2868, 7, 6, 0, 0, 2868, 2869, 7, 5, 0, 0, 2869, 2870, 7, 17, 0, 0, 2870, 2871, 7, 7, 0, 0, 2871, 428, 1, 0, 0, 0, 2872, 2873, 7, 10, 0, 0, 2873, 2874, 7, 26, 0, 0, 2874, 2875, 7, 16, 0, 0, 2875, 2876, 7, 10, 0, 0, 2876, 2877, 7, 7, 0, 0, 2877, 2878, 7, 9, 0, 0, 2878, 2879, 7, 17, 0, 0, 2879, 2880, 7, 19, 0, 0, 2880, 2881, 7, 7, 0, 0, 2881, 430, 1, 0, 0, 0, 2882, 2883, 7, 10, 0, 0, 2883, 2884, 7, 26, 0, 0, 2884, 2885, 7, 16, 0, 0, 2885, 2886, 7, 10, 0, 0, 2886, 2887, 7, 13, 0, 0, 2887, 2888, 7, 7, 0, 0, 2888, 2889, 7, 5, 0, 0, 2889, 2890, 7, 6, 0, 0, 2890, 432, 1, 0, 0, 0, 2891, 2892, 7, 25, 0, 0, 2892, 2893, 7, 5, 0, 0, 2893, 2894, 7, 15, 0, 0, 2894, 2895, 7, 17, 0, 0, 2895, 2896, 7, 6, 0, 0, 2896, 2897, 7, 8, 0, 0, 2897, 434, 1, 0, 0, 0, 2898, 2899, 7, 25, 0, 0, 2899, 2900, 7, 17, 0, 0, 2900, 2901, 7, 13, 0, 0, 2901, 2902, 7, 9, 0, 0, 2902, 2903, 7, 16, 0, 0, 2903, 436, 1, 0, 0, 0, 2904, 2905, 7, 25, 0, 0, 2905, 2906, 7, 19, 0, 0, 2906, 2907, 7, 6, 0, 0, 2907, 2908, 7, 6, 0, 0, 2908, 2909, 7, 19, 0, 0, 2909, 2910, 7, 28, 0, 0, 2910, 2911, 7, 17, 0, 0, 2911, 2912, 7, 7, 0, 0, 2912, 2913, 7, 23, 0, 0, 2913, 438, 1, 0, 0, 0, 2914, 2915, 7, 25, 0, 0, 2915, 2916, 7, 19, 0, 0, 2916, 2917, 7, 13, 0, 0, 2917, 2918, 7, 14, 0, 0, 2918, 2919, 7, 10, 0, 0, 2919, 440, 1, 0, 0, 0, 2920, 2921, 7, 25, 0, 0, 2921, 2922, 7, 19, 0, 0, 2922, 2923, 7, 13, 0, 0, 2923, 2924, 7, 28, 0, 0, 2924, 2925, 7, 5, 0, 0, 2925, 2926, 7, 13, 0, 0, 2926, 2927, 7, 12, 0, 0, 2927, 442, 1, 0, 0, 0, 2928, 2929, 7, 25, 0, 0, 2929, 2930, 7, 22, 0, 0, 2930, 2931, 7, 7, 0, 0, 2931, 2932, 7, 14, 0, 0, 2932, 2933, 7, 16, 0, 0, 2933, 2934, 7, 17, 0, 0, 2934, 2935, 7, 19, 0, 0, 2935, 2936, 7, 7, 0, 0, 2936, 444, 1, 0, 0, 0, 2937, 2938, 7, 25, 0, 0, 2938, 2939, 7, 22, 0, 0, 2939, 2940, 7, 7, 0, 0, 2940, 2941, 7, 14, 0, 0, 2941, 2942, 7, 16, 0, 0, 2942, 2943, 7, 17, 0, 0, 2943, 2944, 7, 19, 0, 0, 2944, 2945, 7, 7, 0, 0, 2945, 2946, 7, 9, 0, 0, 2946, 446, 1, 0, 0, 0, 2947, 2948, 7, 23, 0, 0, 2948, 2949, 7, 6, 0, 0, 2949, 2950, 7, 19, 0, 0, 2950, 2951, 7, 18, 0, 0, 2951, 2952, 7, 5, 0, 0, 2952, 2953, 7, 6, 0, 0, 2953, 448, 1, 0, 0, 0, 2954, 2955, 7, 23, 0, 0, 2955, 2956, 7, 13, 0, 0, 2956, 2957, 7, 5, 0, 0, 2957, 2958, 7, 7, 0, 0, 2958, 2959, 7, 16, 0, 0, 2959, 2960, 7, 10, 0, 0, 2960, 2961, 7, 12, 0, 0, 2961, 450, 1, 0, 0, 0, 2962, 2963, 7, 20, 0, 0, 2963, 2964, 7, 5, 0, 0, 2964, 2965, 7, 7, 0, 0, 2965, 2966, 7, 12, 0, 0, 2966, 2967, 7, 6, 0, 0, 2967, 2968, 7, 10, 0, 0, 2968, 2969, 7, 13, 0, 0, 2969, 452, 1, 0, 0, 0, 2970, 2971, 7, 20, 0, 0, 2971, 2972, 7, 10, 0, 0, 2972, 2973, 7, 5, 0, 0, 2973, 2974, 7, 12, 0, 0, 2974, 2975, 7, 10, 0, 0, 2975, 2976, 7, 13, 0, 0, 2976, 454, 1, 0, 0, 0, 2977, 2978, 7, 20, 0, 0, 2978, 2979, 7, 19, 0, 0, 2979, 2980, 7, 6, 0, 0, 2980, 2981, 7, 12, 0, 0, 2981, 456, 1, 0, 0, 0, 2982, 2983, 7, 20, 0, 0, 2983, 2984, 7, 19, 0, 0, 2984, 2985, 7, 22, 0, 0, 2985, 2986, 7, 13, 0, 0, 2986, 458, 1, 0, 0, 0, 2987, 2988, 7, 17, 0, 0, 2988, 2989, 7, 12, 0, 0, 2989, 2990, 7, 10, 0, 0, 2990, 2991, 7, 7, 0, 0, 2991, 2992, 7, 16, 0, 0, 2992, 2993, 7, 17, 0, 0, 2993, 2994, 7, 16, 0, 0, 2994, 2995, 7, 8, 0, 0, 2995, 460, 1, 0, 0, 0, 2996, 2997, 7, 17, 0, 0, 2997, 2998, 7, 25, 0, 0, 2998, 462, 1, 0, 0, 0, 2999, 3000, 7, 17, 0, 0, 3000, 3001, 7, 15, 0, 0, 3001, 3002, 7, 15, 0, 0, 3002, 3003, 7, 10, 0, 0, 3003, 3004, 7, 12, 0, 0, 3004, 3005, 7, 17, 0, 0, 3005, 3006, 7, 5, 0, 0, 3006, 3007, 7, 16, 0, 0, 3007, 3008, 7, 10, 0, 0, 3008, 464, 1, 0, 0, 0, 3009, 3010, 7, 17, 0, 0, 3010, 3011, 7, 15, 0, 0, 3011, 3012, 7, 15, 0, 0, 3012, 3013, 7, 22, 0, 0, 3013, 3014, 7, 16, 0, 0, 3014, 3015, 7, 5, 0, 0, 3015, 3016, 7, 18, 0, 0, 3016, 3017, 7, 6, 0, 0, 3017, 3018, 7, 10, 0, 0, 3018, 466, 1, 0, 0, 0, 3019, 3020, 7, 17, 0, 0, 3020, 3021, 7, 15, 0, 0, 3021, 3022, 7, 24, 0, 0, 3022, 3023, 7, 6, 0, 0, 3023, 3024, 7, 17, 0, 0, 3024, 3025, 7, 14, 0, 0, 3025, 3026, 7, 17, 0, 0, 3026, 3027, 7, 16, 0, 0, 3027, 468, 1, 0, 0, 0, 3028, 3029, 7, 17, 0, 0, 3029, 3030, 7, 7, 0, 0, 3030, 3031, 7, 14, 0, 0, 3031, 3032, 7, 6, 0, 0, 3032, 3033, 7, 22, 0, 0, 3033, 3034, 7, 12, 0, 0, 3034, 3035, 7, 17, 0, 0, 3035, 3036, 7, 7, 0, 0, 3036, 3037, 7, 23, 0, 0, 3037, 470, 1, 0, 0, 0, 3038, 3039, 7, 17, 0, 0, 3039, 3040, 7, 7, 0, 0, 3040, 3041, 7, 14, 0, 0, 3041, 3042, 7, 13, 0, 0, 3042, 3043, 7, 10, 0, 0, 3043, 3044, 7, 15, 0, 0, 3044, 3045, 7, 10, 0, 0, 3045, 3046, 7, 7, 0, 0, 3046, 3047, 7, 16, 0, 0, 3047, 472, 1, 0, 0, 0, 3048, 3049, 7, 17, 0, 0, 3049, 3050, 7, 7, 0, 0, 3050, 3051, 7, 12, 0, 0, 3051, 3052, 7, 10, 0, 0, 3052, 3053, 7, 26, 0, 0, 3053, 474, 1, 0, 0, 0, 3054, 3055, 7, 17, 0, 0, 3055, 3056, 7, 7, 0, 0, 3056, 3057, 7, 12, 0, 0, 3057, 3058, 7, 10, 0, 0, 3058, 3059, 7, 26, 0, 0, 3059, 3060, 7, 10, 0, 0, 3060, 3061, 7, 9, 0, 0, 3061, 476, 1, 0, 0, 0, 3062, 3063, 7, 17, 0, 0, 3063, 3064, 7, 7, 0, 0, 3064, 3065, 7, 20, 0, 0, 3065, 3066, 7, 10, 0, 0, 3066, 3067, 7, 13, 0, 0, 3067, 3068, 7, 17, 0, 0, 3068, 3069, 7, 16, 0, 0, 3069, 478, 1, 0, 0, 0, 3070, 3071, 7, 17, 0, 0, 3071, 3072, 7, 7, 0, 0, 3072, 3073, 7, 20, 0, 0, 3073, 3074, 7, 10, 0, 0, 3074, 3075, 7, 13, 0, 0, 3075, 3076, 7, 17, 0, 0, 3076, 3077, 7, 16, 0, 0, 3077, 3078, 7, 9, 0, 0, 3078, 480, 1, 0, 0, 0, 3079, 3080, 7, 17, 0, 0, 3080, 3081, 7, 7, 0, 0, 3081, 3082, 7, 6, 0, 0, 3082, 3083, 7, 17, 0, 0, 3083, 3084, 7, 7, 0, 0, 3084, 3085, 7, 10, 0, 0, 3085, 482, 1, 0, 0, 0, 3086, 3087, 7, 17, 0, 0, 3087, 3088, 7, 7, 0, 0, 3088, 3089, 7, 9, 0, 0, 3089, 3090, 7, 10, 0, 0, 3090, 3091, 7, 7, 0, 0, 3091, 3092, 7, 9, 0, 0, 3092, 3093, 7, 17, 0, 0, 3093, 3094, 7, 16, 0, 0, 3094, 3095, 7, 17, 0, 0, 3095, 3096, 7, 27, 0, 0, 3096, 3097, 7, 10, 0, 0, 3097, 484, 1, 0, 0, 0, 3098, 3099, 7, 17, 0, 0, 3099, 3100, 7, 7, 0, 0, 3100, 3101, 7, 9, 0, 0, 3101, 3102, 7, 10, 0, 0, 3102, 3103, 7, 13, 0, 0, 3103, 3104, 7, 16, 0, 0, 3104, 486, 1, 0, 0, 0, 3105, 3106, 7, 17, 0, 0, 3106, 3107, 7, 7, 0, 0, 3107, 3108, 7, 9, 0, 0, 3108, 3109, 7, 16, 0, 0, 3109, 3110, 7, 10, 0, 0, 3110, 3111, 7, 5, 0, 0, 3111, 3112, 7, 12, 0, 0, 3112, 488, 1, 0, 0, 0, 3113, 3114, 7, 17, 0, 0, 3114, 3115, 7, 7, 0, 0, 3115, 3116, 7, 27, 0, 0, 3116, 3117, 7, 19, 0, 0, 3117, 3118, 7, 21, 0, 0, 3118, 3119, 7, 10, 0, 0, 3119, 3120, 7, 13, 0, 0, 3120, 490, 1, 0, 0, 0, 3121, 3122, 7, 17, 0, 0, 3122, 3123, 7, 9, 0, 0, 3123, 3124, 7, 19, 0, 0, 3124, 3125, 7, 6, 0, 0, 3125, 3126, 7, 5, 0, 0, 3126, 3127, 7, 16, 0, 0, 3127, 3128, 7, 17, 0, 0, 3128, 3129, 7, 19, 0, 0, 3129, 3130, 7, 7, 0, 0, 3130, 492, 1, 0, 0, 0, 3131, 3132, 7, 21, 0, 0, 3132, 3133, 7, 10, 0, 0, 3133, 3134, 7, 8, 0, 0, 3134, 494, 1, 0, 0, 0, 3135, 3136, 7, 6, 0, 0, 3136, 3137, 7, 5, 0, 0, 3137, 3138, 7, 18, 0, 0, 3138, 3139, 7, 10, 0, 0, 3139, 3140, 7, 6, 0, 0, 3140, 496, 1, 0, 0, 0, 3141, 3142, 7, 6, 0, 0, 3142, 3143, 7, 5, 0, 0, 3143, 3144, 7, 7, 0, 0, 3144, 3145, 7, 23, 0, 0, 3145, 3146, 7, 22, 0, 0, 3146, 3147, 7, 5, 0, 0, 3147, 3148, 7, 23, 0, 0, 3148, 3149, 7, 10, 0, 0, 3149, 498, 1, 0, 0, 0, 3150, 3151, 7, 6, 0, 0, 3151, 3152, 7, 5, 0, 0, 3152, 3153, 7, 13, 0, 0, 3153, 3154, 7, 23, 0, 0, 3154, 3155, 7, 10, 0, 0, 3155, 500, 1, 0, 0, 0, 3156, 3157, 7, 6, 0, 0, 3157, 3158, 7, 5, 0, 0, 3158, 3159, 7, 9, 0, 0, 3159, 3160, 7, 16, 0, 0, 3160, 502, 1, 0, 0, 0, 3161, 3162, 7, 6, 0, 0, 3162, 3163, 7, 10, 0, 0, 3163, 3164, 7, 5, 0, 0, 3164, 3165, 7, 21, 0, 0, 3165, 3166, 7, 24, 0, 0, 3166, 3167, 7, 13, 0, 0, 3167, 3168, 7, 19, 0, 0, 3168, 3169, 7, 19, 0, 0, 3169, 3170, 7, 25, 0, 0, 3170, 504, 1, 0, 0, 0, 3171, 3172, 7, 6, 0, 0, 3172, 3173, 7, 10, 0, 0, 3173, 3174, 7, 27, 0, 0, 3174, 3175, 7, 10, 0, 0, 3175, 3176, 7, 6, 0, 0, 3176, 506, 1, 0, 0, 0, 3177, 3178, 7, 6, 0, 0, 3178, 3179, 7, 17, 0, 0, 3179, 3180, 7, 9, 0, 0, 3180, 3181, 7, 16, 0, 0, 3181, 3182, 7, 10, 0, 0, 3182, 3183, 7, 7, 0, 0, 3183, 508, 1, 0, 0, 0, 3184, 3185, 7, 6, 0, 0, 3185, 3186, 7, 19, 0, 0, 3186, 3187, 7, 5, 0, 0, 3187, 3188, 7, 12, 0, 0, 3188, 510, 1, 0, 0, 0, 3189, 3190, 7, 6, 0, 0, 3190, 3191, 7, 19, 0, 0, 3191, 3192, 7, 14, 0, 0, 3192, 3193, 7, 5, 0, 0, 3193, 3194, 7, 6, 0, 0, 3194, 512, 1, 0, 0, 0, 3195, 3196, 7, 6, 0, 0, 3196, 3197, 7, 19, 0, 0, 3197, 3198, 7, 14, 0, 0, 3198, 3199, 7, 5, 0, 0, 3199, 3200, 7, 16, 0, 0, 3200, 3201, 7, 17, 0, 0, 3201, 3202, 7, 19, 0, 0, 3202, 3203, 7, 7, 0, 0, 3203, 514, 1, 0, 0, 0, 3204, 3205, 7, 6, 0, 0, 3205, 3206, 7, 19, 0, 0, 3206, 3207, 7, 14, 0, 0, 3207, 3208, 7, 21, 0, 0, 3208, 516, 1, 0, 0, 0, 3209, 3210, 7, 15, 0, 0, 3210, 3211, 7, 5, 0, 0, 3211, 3212, 7, 24, 0, 0, 3212, 3213, 7, 24, 0, 0, 3213, 3214, 7, 17, 0, 0, 3214, 3215, 7, 7, 0, 0, 3215, 3216, 7, 23, 0, 0, 3216, 518, 1, 0, 0, 0, 3217, 3218, 7, 15, 0, 0, 3218, 3219, 7, 5, 0, 0, 3219, 3220, 7, 16, 0, 0, 3220, 3221, 7, 14, 0, 0, 3221, 3222, 7, 20, 0, 0, 3222, 520, 1, 0, 0, 0, 3223, 3224, 7, 15, 0, 0, 3224, 3225, 7, 5, 0, 0, 3225, 3226, 7, 16, 0, 0, 3226, 3227, 7, 14, 0, 0, 3227, 3228, 7, 20, 0, 0, 3228, 3229, 7, 10, 0, 0, 3229, 3230, 7, 12, 0, 0, 3230, 522, 1, 0, 0, 0, 3231, 3232, 7, 15, 0, 0, 3232, 3233, 7, 5, 0, 0, 3233, 3234, 7, 16, 0, 0, 3234, 3235, 7, 10, 0, 0, 3235, 3236, 7, 13, 0, 0, 3236, 3237, 7, 17, 0, 0, 3237, 3238, 7, 5, 0, 0, 3238, 3239, 7, 6, 0, 0, 3239, 3240, 7, 17, 0, 0, 3240, 3241, 7, 11, 0, 0, 3241, 3242, 7, 10, 0, 0, 3242, 3243, 7, 12, 0, 0, 3243, 524, 1, 0, 0, 0, 3244, 3245, 7, 15, 0, 0, 3245, 3246, 7, 5, 0, 0, 3246, 3247, 7, 26, 0, 0, 3247, 3248, 7, 27, 0, 0, 3248, 3249, 7, 5, 0, 0, 3249, 3250, 7, 6, 0, 0, 3250, 3251, 7, 22, 0, 0, 3251, 3252, 7, 10, 0, 0, 3252, 526, 1, 0, 0, 0, 3253, 3254, 7, 15, 0, 0, 3254, 3255, 7, 10, 0, 0, 3255, 3256, 7, 13, 0, 0, 3256, 3257, 7, 23, 0, 0, 3257, 3258, 7, 10, 0, 0, 3258, 528, 1, 0, 0, 0, 3259, 3260, 7, 15, 0, 0, 3260, 3261, 7, 17, 0, 0, 3261, 3262, 7, 7, 0, 0, 3262, 3263, 7, 22, 0, 0, 3263, 3264, 7, 16, 0, 0, 3264, 3265, 7, 10, 0, 0, 3265, 530, 1, 0, 0, 0, 3266, 3267, 7, 15, 0, 0, 3267, 3268, 7, 17, 0, 0, 3268, 3269, 7, 7, 0, 0, 3269, 3270, 7, 27, 0, 0, 3270, 3271, 7, 5, 0, 0, 3271, 3272, 7, 6, 0, 0, 3272, 3273, 7, 22, 0, 0, 3273, 3274, 7, 10, 0, 0, 3274, 532, 1, 0, 0, 0, 3275, 3276, 7, 15, 0, 0, 3276, 3277, 7, 19, 0, 0, 3277, 3278, 7, 12, 0, 0, 3278, 3279, 7, 10, 0, 0, 3279, 534, 1, 0, 0, 0, 3280, 3281, 7, 15, 0, 0, 3281, 3282, 7, 19, 0, 0, 3282, 3283, 7, 7, 0, 0, 3283, 3284, 7, 16, 0, 0, 3284, 3285, 7, 20, 0, 0, 3285, 536, 1, 0, 0, 0, 3286, 3287, 7, 15, 0, 0, 3287, 3288, 7, 19, 0, 0, 3288, 3289, 7, 27, 0, 0, 3289, 3290, 7, 10, 0, 0, 3290, 538, 1, 0, 0, 0, 3291, 3292, 7, 7, 0, 0, 3292, 3293, 7, 5, 0, 0, 3293, 3294, 7, 15, 0, 0, 3294, 3295, 7, 10, 0, 0, 3295, 540, 1, 0, 0, 0, 3296, 3297, 7, 7, 0, 0, 3297, 3298, 7, 5, 0, 0, 3298, 3299, 7, 15, 0, 0, 3299, 3300, 7, 10, 0, 0, 3300, 3301, 7, 9, 0, 0, 3301, 542, 1, 0, 0, 0, 3302, 3303, 7, 7, 0, 0, 3303, 3304, 7, 10, 0, 0, 3304, 3305, 7, 26, 0, 0, 3305, 3306, 7, 16, 0, 0, 3306, 544, 1, 0, 0, 0, 3307, 3308, 7, 7, 0, 0, 3308, 3309, 7, 19, 0, 0, 3309, 546, 1, 0, 0, 0, 3310, 3311, 7, 7, 0, 0, 3311, 3312, 7, 19, 0, 0, 3312, 3313, 7, 16, 0, 0, 3313, 3314, 7, 20, 0, 0, 3314, 3315, 7, 17, 0, 0, 3315, 3316, 7, 7, 0, 0, 3316, 3317, 7, 23, 0, 0, 3317, 548, 1, 0, 0, 0, 3318, 3319, 7, 7, 0, 0, 3319, 3320, 7, 19, 0, 0, 3320, 3321, 7, 16, 0, 0, 3321, 3322, 7, 17, 0, 0, 3322, 3323, 7, 25, 0, 0, 3323, 3324, 7, 8, 0, 0, 3324, 550, 1, 0, 0, 0, 3325, 3326, 7, 7, 0, 0, 3326, 3327, 7, 19, 0, 0, 3327, 3328, 7, 28, 0, 0, 3328, 3329, 7, 5, 0, 0, 3329, 3330, 7, 17, 0, 0, 3330, 3331, 7, 16, 0, 0, 3331, 552, 1, 0, 0, 0, 3332, 3333, 7, 7, 0, 0, 3333, 3334, 7, 22, 0, 0, 3334, 3335, 7, 6, 0, 0, 3335, 3336, 7, 6, 0, 0, 3336, 3337, 7, 9, 0, 0, 3337, 554, 1, 0, 0, 0, 3338, 3339, 7, 19, 0, 0, 3339, 3340, 7, 18, 0, 0, 3340, 3341, 7, 30, 0, 0, 3341, 3342, 7, 10, 0, 0, 3342, 3343, 7, 14, 0, 0, 3343, 3344, 7, 16, 0, 0, 3344, 556, 1, 0, 0, 0, 3345, 3346, 7, 19, 0, 0, 3346, 3347, 7, 25, 0, 0, 3347, 558, 1, 0, 0, 0, 3348, 3349, 7, 19, 0, 0, 3349, 3350, 7, 25, 0, 0, 3350, 3351, 7, 25, 0, 0, 3351, 560, 1, 0, 0, 0, 3352, 3353, 7, 19, 0, 0, 3353, 3354, 7, 17, 0, 0, 3354, 3355, 7, 12, 0, 0, 3355, 3356, 7, 9, 0, 0, 3356, 562, 1, 0, 0, 0, 3357, 3358, 7, 19, 0, 0, 3358, 3359, 7, 24, 0, 0, 3359, 3360, 7, 10, 0, 0, 3360, 3361, 7, 13, 0, 0, 3361, 3362, 7, 5, 0, 0, 3362, 3363, 7, 16, 0, 0, 3363, 3364, 7, 19, 0, 0, 3364, 3365, 7, 13, 0, 0, 3365, 564, 1, 0, 0, 0, 3366, 3367, 7, 19, 0, 0, 3367, 3368, 7, 24, 0, 0, 3368, 3369, 7, 16, 0, 0, 3369, 3370, 7, 17, 0, 0, 3370, 3371, 7, 19, 0, 0, 3371, 3372, 7, 7, 0, 0, 3372, 566, 1, 0, 0, 0, 3373, 3374, 7, 19, 0, 0, 3374, 3375, 7, 24, 0, 0, 3375, 3376, 7, 16, 0, 0, 3376, 3377, 7, 17, 0, 0, 3377, 3378, 7, 19, 0, 0, 3378, 3379, 7, 7, 0, 0, 3379, 3380, 7, 9, 0, 0, 3380, 568, 1, 0, 0, 0, 3381, 3382, 7, 19, 0, 0, 3382, 3383, 7, 28, 0, 0, 3383, 3384, 7, 7, 0, 0, 3384, 3385, 7, 10, 0, 0, 3385, 3386, 7, 12, 0, 0, 3386, 570, 1, 0, 0, 0, 3387, 3388, 7, 19, 0, 0, 3388, 3389, 7, 28, 0, 0, 3389, 3390, 7, 7, 0, 0, 3390, 3391, 7, 10, 0, 0, 3391, 3392, 7, 13, 0, 0, 3392, 572, 1, 0, 0, 0, 3393, 3394, 7, 24, 0, 0, 3394, 3395, 7, 5, 0, 0, 3395, 3396, 7, 13, 0, 0, 3396, 3397, 7, 9, 0, 0, 3397, 3398, 7, 10, 0, 0, 3398, 3399, 7, 13, 0, 0, 3399, 574, 1, 0, 0, 0, 3400, 3401, 7, 24, 0, 0, 3401, 3402, 7, 5, 0, 0, 3402, 3403, 7, 13, 0, 0, 3403, 3404, 7, 16, 0, 0, 3404, 3405, 7, 17, 0, 0, 3405, 3406, 7, 5, 0, 0, 3406, 3407, 7, 6, 0, 0, 3407, 576, 1, 0, 0, 0, 3408, 3409, 7, 24, 0, 0, 3409, 3410, 7, 5, 0, 0, 3410, 3411, 7, 13, 0, 0, 3411, 3412, 7, 16, 0, 0, 3412, 3413, 7, 17, 0, 0, 3413, 3414, 7, 16, 0, 0, 3414, 3415, 7, 17, 0, 0, 3415, 3416, 7, 19, 0, 0, 3416, 3417, 7, 7, 0, 0, 3417, 578, 1, 0, 0, 0, 3418, 3419, 7, 24, 0, 0, 3419, 3420, 7, 5, 0, 0, 3420, 3421, 7, 9, 0, 0, 3421, 3422, 7, 9, 0, 0, 3422, 3423, 7, 17, 0, 0, 3423, 3424, 7, 7, 0, 0, 3424, 3425, 7, 23, 0, 0, 3425, 580, 1, 0, 0, 0, 3426, 3427, 7, 24, 0, 0, 3427, 3428, 7, 5, 0, 0, 3428, 3429, 7, 9, 0, 0, 3429, 3430, 7, 9, 0, 0, 3430, 3431, 7, 28, 0, 0, 3431, 3432, 7, 19, 0, 0, 3432, 3433, 7, 13, 0, 0, 3433, 3434, 7, 12, 0, 0, 3434, 582, 1, 0, 0, 0, 3435, 3436, 7, 24, 0, 0, 3436, 3437, 7, 6, 0, 0, 3437, 3438, 7, 5, 0, 0, 3438, 3439, 7, 7, 0, 0, 3439, 3440, 7, 9, 0, 0, 3440, 584, 1, 0, 0, 0, 3441, 3442, 7, 24, 0, 0, 3442, 3443, 7, 13, 0, 0, 3443, 3444, 7, 10, 0, 0, 3444, 3445, 7, 14, 0, 0, 3445, 3446, 7, 10, 0, 0, 3446, 3447, 7, 12, 0, 0, 3447, 3448, 7, 17, 0, 0, 3448, 3449, 7, 7, 0, 0, 3449, 3450, 7, 23, 0, 0, 3450, 586, 1, 0, 0, 0, 3451, 3452, 7, 24, 0, 0, 3452, 3453, 7, 13, 0, 0, 3453, 3454, 7, 10, 0, 0, 3454, 3455, 7, 24, 0, 0, 3455, 3456, 7, 5, 0, 0, 3456, 3457, 7, 13, 0, 0, 3457, 3458, 7, 10, 0, 0, 3458, 588, 1, 0, 0, 0, 3459, 3460, 7, 24, 0, 0, 3460, 3461, 7, 13, 0, 0, 3461, 3462, 7, 10, 0, 0, 3462, 3463, 7, 24, 0, 0, 3463, 3464, 7, 5, 0, 0, 3464, 3465, 7, 13, 0, 0, 3465, 3466, 7, 10, 0, 0, 3466, 3467, 7, 12, 0, 0, 3467, 590, 1, 0, 0, 0, 3468, 3469, 7, 24, 0, 0, 3469, 3470, 7, 13, 0, 0, 3470, 3471, 7, 10, 0, 0, 3471, 3472, 7, 9, 0, 0, 3472, 3473, 7, 10, 0, 0, 3473, 3474, 7, 13, 0, 0, 3474, 3475, 7, 27, 0, 0, 3475, 3476, 7, 10, 0, 0, 3476, 592, 1, 0, 0, 0, 3477, 3478, 7, 24, 0, 0, 3478, 3479, 7, 13, 0, 0, 3479, 3480, 7, 17, 0, 0, 3480, 3481, 7, 19, 0, 0, 3481, 3482, 7, 13, 0, 0, 3482, 594, 1, 0, 0, 0, 3483, 3484, 7, 24, 0, 0, 3484, 3485, 7, 13, 0, 0, 3485, 3486, 7, 17, 0, 0, 3486, 3487, 7, 27, 0, 0, 3487, 3488, 7, 17, 0, 0, 3488, 3489, 7, 6, 0, 0, 3489, 3490, 7, 10, 0, 0, 3490, 3491, 7, 23, 0, 0, 3491, 3492, 7, 10, 0, 0, 3492, 3493, 7, 9, 0, 0, 3493, 596, 1, 0, 0, 0, 3494, 3495, 7, 24, 0, 0, 3495, 3496, 7, 13, 0, 0, 3496, 3497, 7, 19, 0, 0, 3497, 3498, 7, 14, 0, 0, 3498, 3499, 7, 10, 0, 0, 3499, 3500, 7, 12, 0, 0, 3500, 3501, 7, 22, 0, 0, 3501, 3502, 7, 13, 0, 0, 3502, 3503, 7, 5, 0, 0, 3503, 3504, 7, 6, 0, 0, 3504, 598, 1, 0, 0, 0, 3505, 3506, 7, 24, 0, 0, 3506, 3507, 7, 13, 0, 0, 3507, 3508, 7, 19, 0, 0, 3508, 3509, 7, 14, 0, 0, 3509, 3510, 7, 10, 0, 0, 3510, 3511, 7, 12, 0, 0, 3511, 3512, 7, 22, 0, 0, 3512, 3513, 7, 13, 0, 0, 3513, 3514, 7, 10, 0, 0, 3514, 600, 1, 0, 0, 0, 3515, 3516, 7, 24, 0, 0, 3516, 3517, 7, 13, 0, 0, 3517, 3518, 7, 19, 0, 0, 3518, 3519, 7, 23, 0, 0, 3519, 3520, 7, 13, 0, 0, 3520, 3521, 7, 5, 0, 0, 3521, 3522, 7, 15, 0, 0, 3522, 602, 1, 0, 0, 0, 3523, 3524, 7, 29, 0, 0, 3524, 3525, 7, 22, 0, 0, 3525, 3526, 7, 19, 0, 0, 3526, 3527, 7, 16, 0, 0, 3527, 3528, 7, 10, 0, 0, 3528, 604, 1, 0, 0, 0, 3529, 3530, 7, 13, 0, 0, 3530, 3531, 7, 5, 0, 0, 3531, 3532, 7, 7, 0, 0, 3532, 3533, 7, 23, 0, 0, 3533, 3534, 7, 10, 0, 0, 3534, 606, 1, 0, 0, 0, 3535, 3536, 7, 13, 0, 0, 3536, 3537, 7, 10, 0, 0, 3537, 3538, 7, 5, 0, 0, 3538, 3539, 7, 12, 0, 0, 3539, 608, 1, 0, 0, 0, 3540, 3541, 7, 13, 0, 0, 3541, 3542, 7, 10, 0, 0, 3542, 3543, 7, 5, 0, 0, 3543, 3544, 7, 9, 0, 0, 3544, 3545, 7, 9, 0, 0, 3545, 3546, 7, 17, 0, 0, 3546, 3547, 7, 23, 0, 0, 3547, 3548, 7, 7, 0, 0, 3548, 610, 1, 0, 0, 0, 3549, 3550, 7, 13, 0, 0, 3550, 3551, 7, 10, 0, 0, 3551, 3552, 7, 14, 0, 0, 3552, 3553, 7, 20, 0, 0, 3553, 3554, 7, 10, 0, 0, 3554, 3555, 7, 14, 0, 0, 3555, 3556, 7, 21, 0, 0, 3556, 612, 1, 0, 0, 0, 3557, 3558, 7, 13, 0, 0, 3558, 3559, 7, 10, 0, 0, 3559, 3560, 7, 14, 0, 0, 3560, 3561, 7, 22, 0, 0, 3561, 3562, 7, 13, 0, 0, 3562, 3563, 7, 9, 0, 0, 3563, 3564, 7, 17, 0, 0, 3564, 3565, 7, 27, 0, 0, 3565, 3566, 7, 10, 0, 0, 3566, 614, 1, 0, 0, 0, 3567, 3568, 7, 13, 0, 0, 3568, 3569, 7, 10, 0, 0, 3569, 3570, 7, 25, 0, 0, 3570, 616, 1, 0, 0, 0, 3571, 3572, 7, 13, 0, 0, 3572, 3573, 7, 10, 0, 0, 3573, 3574, 7, 25, 0, 0, 3574, 3575, 7, 13, 0, 0, 3575, 3576, 7, 10, 0, 0, 3576, 3577, 7, 9, 0, 0, 3577, 3578, 7, 20, 0, 0, 3578, 618, 1, 0, 0, 0, 3579, 3580, 7, 13, 0, 0, 3580, 3581, 7, 10, 0, 0, 3581, 3582, 7, 17, 0, 0, 3582, 3583, 7, 7, 0, 0, 3583, 3584, 7, 12, 0, 0, 3584, 3585, 7, 10, 0, 0, 3585, 3586, 7, 26, 0, 0, 3586, 620, 1, 0, 0, 0, 3587, 3588, 7, 13, 0, 0, 3588, 3589, 7, 10, 0, 0, 3589, 3590, 7, 6, 0, 0, 3590, 3591, 7, 5, 0, 0, 3591, 3592, 7, 16, 0, 0, 3592, 3593, 7, 17, 0, 0, 3593, 3594, 7, 27, 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, 6, 0, 0, 3599, 3600, 7, 10, 0, 0, 3600, 3601, 7, 5, 0, 0, 3601, 3602, 7, 9, 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, 7, 0, 0, 3607, 3608, 7, 5, 0, 0, 3608, 3609, 7, 15, 0, 0, 3609, 3610, 7, 10, 0, 0, 3610, 626, 1, 0, 0, 0, 3611, 3612, 7, 13, 0, 0, 3612, 3613, 7, 10, 0, 0, 3613, 3614, 7, 24, 0, 0, 3614, 3615, 7, 10, 0, 0, 3615, 3616, 7, 5, 0, 0, 3616, 3617, 7, 16, 0, 0, 3617, 3618, 7, 5, 0, 0, 3618, 3619, 7, 18, 0, 0, 3619, 3620, 7, 6, 0, 0, 3620, 3621, 7, 10, 0, 0, 3621, 628, 1, 0, 0, 0, 3622, 3623, 7, 13, 0, 0, 3623, 3624, 7, 10, 0, 0, 3624, 3625, 7, 24, 0, 0, 3625, 3626, 7, 6, 0, 0, 3626, 3627, 7, 5, 0, 0, 3627, 3628, 7, 14, 0, 0, 3628, 3629, 7, 10, 0, 0, 3629, 630, 1, 0, 0, 0, 3630, 3631, 7, 13, 0, 0, 3631, 3632, 7, 10, 0, 0, 3632, 3633, 7, 24, 0, 0, 3633, 3634, 7, 6, 0, 0, 3634, 3635, 7, 17, 0, 0, 3635, 3636, 7, 14, 0, 0, 3636, 3637, 7, 5, 0, 0, 3637, 632, 1, 0, 0, 0, 3638, 3639, 7, 13, 0, 0, 3639, 3640, 7, 10, 0, 0, 3640, 3641, 7, 9, 0, 0, 3641, 3642, 7, 10, 0, 0, 3642, 3643, 7, 16, 0, 0, 3643, 634, 1, 0, 0, 0, 3644, 3645, 7, 13, 0, 0, 3645, 3646, 7, 10, 0, 0, 3646, 3647, 7, 9, 0, 0, 3647, 3648, 7, 16, 0, 0, 3648, 3649, 7, 5, 0, 0, 3649, 3650, 7, 13, 0, 0, 3650, 3651, 7, 16, 0, 0, 3651, 636, 1, 0, 0, 0, 3652, 3653, 7, 13, 0, 0, 3653, 3654, 7, 10, 0, 0, 3654, 3655, 7, 9, 0, 0, 3655, 3656, 7, 16, 0, 0, 3656, 3657, 7, 13, 0, 0, 3657, 3658, 7, 17, 0, 0, 3658, 3659, 7, 14, 0, 0, 3659, 3660, 7, 16, 0, 0, 3660, 638, 1, 0, 0, 0, 3661, 3662, 7, 13, 0, 0, 3662, 3663, 7, 10, 0, 0, 3663, 3664, 7, 16, 0, 0, 3664, 3665, 7, 22, 0, 0, 3665, 3666, 7, 13, 0, 0, 3666, 3667, 7, 7, 0, 0, 3667, 3668, 7, 9, 0, 0, 3668, 640, 1, 0, 0, 0, 3669, 3670, 7, 13, 0, 0, 3670, 3671, 7, 10, 0, 0, 3671, 3672, 7, 27, 0, 0, 3672, 3673, 7, 19, 0, 0, 3673, 3674, 7, 21, 0, 0, 3674, 3675, 7, 10, 0, 0, 3675, 642, 1, 0, 0, 0, 3676, 3677, 7, 13, 0, 0, 3677, 3678, 7, 19, 0, 0, 3678, 3679, 7, 6, 0, 0, 3679, 3680, 7, 10, 0, 0, 3680, 644, 1, 0, 0, 0, 3681, 3682, 7, 13, 0, 0, 3682, 3683, 7, 19, 0, 0, 3683, 3684, 7, 6, 0, 0, 3684, 3685, 7, 6, 0, 0, 3685, 3686, 7, 18, 0, 0, 3686, 3687, 7, 5, 0, 0, 3687, 3688, 7, 14, 0, 0, 3688, 3689, 7, 21, 0, 0, 3689, 646, 1, 0, 0, 0, 3690, 3691, 7, 13, 0, 0, 3691, 3692, 7, 19, 0, 0, 3692, 3693, 7, 28, 0, 0, 3693, 3694, 7, 9, 0, 0, 3694, 648, 1, 0, 0, 0, 3695, 3696, 7, 13, 0, 0, 3696, 3697, 7, 22, 0, 0, 3697, 3698, 7, 6, 0, 0, 3698, 3699, 7, 10, 0, 0, 3699, 650, 1, 0, 0, 0, 3700, 3701, 7, 9, 0, 0, 3701, 3702, 7, 5, 0, 0, 3702, 3703, 7, 27, 0, 0, 3703, 3704, 7, 10, 0, 0, 3704, 3705, 7, 24, 0, 0, 3705, 3706, 7, 19, 0, 0, 3706, 3707, 7, 17, 0, 0, 3707, 3708, 7, 7, 0, 0, 3708, 3709, 7, 16, 0, 0, 3709, 652, 1, 0, 0, 0, 3710, 3711, 7, 9, 0, 0, 3711, 3712, 7, 14, 0, 0, 3712, 3713, 7, 20, 0, 0, 3713, 3714, 7, 10, 0, 0, 3714, 3715, 7, 15, 0, 0, 3715, 3716, 7, 5, 0, 0, 3716, 654, 1, 0, 0, 0, 3717, 3718, 7, 9, 0, 0, 3718, 3719, 7, 14, 0, 0, 3719, 3720, 7, 13, 0, 0, 3720, 3721, 7, 19, 0, 0, 3721, 3722, 7, 6, 0, 0, 3722, 3723, 7, 6, 0, 0, 3723, 656, 1, 0, 0, 0, 3724, 3725, 7, 9, 0, 0, 3725, 3726, 7, 10, 0, 0, 3726, 3727, 7, 5, 0, 0, 3727, 3728, 7, 13, 0, 0, 3728, 3729, 7, 14, 0, 0, 3729, 3730, 7, 20, 0, 0, 3730, 658, 1, 0, 0, 0, 3731, 3732, 7, 9, 0, 0, 3732, 3733, 7, 10, 0, 0, 3733, 3734, 7, 14, 0, 0, 3734, 3735, 7, 19, 0, 0, 3735, 3736, 7, 7, 0, 0, 3736, 3737, 7, 12, 0, 0, 3737, 660, 1, 0, 0, 0, 3738, 3739, 7, 9, 0, 0, 3739, 3740, 7, 10, 0, 0, 3740, 3741, 7, 14, 0, 0, 3741, 3742, 7, 22, 0, 0, 3742, 3743, 7, 13, 0, 0, 3743, 3744, 7, 17, 0, 0, 3744, 3745, 7, 16, 0, 0, 3745, 3746, 7, 8, 0, 0, 3746, 662, 1, 0, 0, 0, 3747, 3748, 7, 9, 0, 0, 3748, 3749, 7, 10, 0, 0, 3749, 3750, 7, 29, 0, 0, 3750, 3751, 7, 22, 0, 0, 3751, 3752, 7, 10, 0, 0, 3752, 3753, 7, 7, 0, 0, 3753, 3754, 7, 14, 0, 0, 3754, 3755, 7, 10, 0, 0, 3755, 664, 1, 0, 0, 0, 3756, 3757, 7, 9, 0, 0, 3757, 3758, 7, 10, 0, 0, 3758, 3759, 7, 29, 0, 0, 3759, 3760, 7, 22, 0, 0, 3760, 3761, 7, 10, 0, 0, 3761, 3762, 7, 7, 0, 0, 3762, 3763, 7, 14, 0, 0, 3763, 3764, 7, 10, 0, 0, 3764, 3765, 7, 9, 0, 0, 3765, 666, 1, 0, 0, 0, 3766, 3767, 7, 9, 0, 0, 3767, 3768, 7, 10, 0, 0, 3768, 3769, 7, 13, 0, 0, 3769, 3770, 7, 17, 0, 0, 3770, 3771, 7, 5, 0, 0, 3771, 3772, 7, 6, 0, 0, 3772, 3773, 7, 17, 0, 0, 3773, 3774, 7, 11, 0, 0, 3774, 3775, 7, 5, 0, 0, 3775, 3776, 7, 18, 0, 0, 3776, 3777, 7, 6, 0, 0, 3777, 3778, 7, 10, 0, 0, 3778, 668, 1, 0, 0, 0, 3779, 3780, 7, 9, 0, 0, 3780, 3781, 7, 10, 0, 0, 3781, 3782, 7, 13, 0, 0, 3782, 3783, 7, 27, 0, 0, 3783, 3784, 7, 10, 0, 0, 3784, 3785, 7, 13, 0, 0, 3785, 670, 1, 0, 0, 0, 3786, 3787, 7, 9, 0, 0, 3787, 3788, 7, 10, 0, 0, 3788, 3789, 7, 9, 0, 0, 3789, 3790, 7, 9, 0, 0, 3790, 3791, 7, 17, 0, 0, 3791, 3792, 7, 19, 0, 0, 3792, 3793, 7, 7, 0, 0, 3793, 672, 1, 0, 0, 0, 3794, 3795, 7, 9, 0, 0, 3795, 3796, 7, 10, 0, 0, 3796, 3797, 7, 16, 0, 0, 3797, 674, 1, 0, 0, 0, 3798, 3799, 7, 9, 0, 0, 3799, 3800, 7, 20, 0, 0, 3800, 3801, 7, 5, 0, 0, 3801, 3802, 7, 13, 0, 0, 3802, 3803, 7, 10, 0, 0, 3803, 676, 1, 0, 0, 0, 3804, 3805, 7, 9, 0, 0, 3805, 3806, 7, 20, 0, 0, 3806, 3807, 7, 19, 0, 0, 3807, 3808, 7, 28, 0, 0, 3808, 678, 1, 0, 0, 0, 3809, 3810, 7, 9, 0, 0, 3810, 3811, 7, 17, 0, 0, 3811, 3812, 7, 15, 0, 0, 3812, 3813, 7, 24, 0, 0, 3813, 3814, 7, 6, 0, 0, 3814, 3815, 7, 10, 0, 0, 3815, 680, 1, 0, 0, 0, 3816, 3817, 7, 9, 0, 0, 3817, 3818, 7, 7, 0, 0, 3818, 3819, 7, 5, 0, 0, 3819, 3820, 7, 24, 0, 0, 3820, 3821, 7, 9, 0, 0, 3821, 3822, 7, 20, 0, 0, 3822, 3823, 7, 19, 0, 0, 3823, 3824, 7, 16, 0, 0, 3824, 682, 1, 0, 0, 0, 3825, 3826, 7, 9, 0, 0, 3826, 3827, 7, 16, 0, 0, 3827, 3828, 7, 5, 0, 0, 3828, 3829, 7, 18, 0, 0, 3829, 3830, 7, 6, 0, 0, 3830, 3831, 7, 10, 0, 0, 3831, 684, 1, 0, 0, 0, 3832, 3833, 7, 9, 0, 0, 3833, 3834, 7, 16, 0, 0, 3834, 3835, 7, 5, 0, 0, 3835, 3836, 7, 7, 0, 0, 3836, 3837, 7, 12, 0, 0, 3837, 3838, 7, 5, 0, 0, 3838, 3839, 7, 6, 0, 0, 3839, 3840, 7, 19, 0, 0, 3840, 3841, 7, 7, 0, 0, 3841, 3842, 7, 10, 0, 0, 3842, 686, 1, 0, 0, 0, 3843, 3844, 7, 9, 0, 0, 3844, 3845, 7, 16, 0, 0, 3845, 3846, 7, 5, 0, 0, 3846, 3847, 7, 13, 0, 0, 3847, 3848, 7, 16, 0, 0, 3848, 688, 1, 0, 0, 0, 3849, 3850, 7, 9, 0, 0, 3850, 3851, 7, 16, 0, 0, 3851, 3852, 7, 5, 0, 0, 3852, 3853, 7, 16, 0, 0, 3853, 3854, 7, 10, 0, 0, 3854, 3855, 7, 15, 0, 0, 3855, 3856, 7, 10, 0, 0, 3856, 3857, 7, 7, 0, 0, 3857, 3858, 7, 16, 0, 0, 3858, 690, 1, 0, 0, 0, 3859, 3860, 7, 9, 0, 0, 3860, 3861, 7, 16, 0, 0, 3861, 3862, 7, 5, 0, 0, 3862, 3863, 7, 16, 0, 0, 3863, 3864, 7, 17, 0, 0, 3864, 3865, 7, 9, 0, 0, 3865, 3866, 7, 16, 0, 0, 3866, 3867, 7, 17, 0, 0, 3867, 3868, 7, 14, 0, 0, 3868, 3869, 7, 9, 0, 0, 3869, 692, 1, 0, 0, 0, 3870, 3871, 7, 9, 0, 0, 3871, 3872, 7, 16, 0, 0, 3872, 3873, 7, 12, 0, 0, 3873, 3874, 7, 17, 0, 0, 3874, 3875, 7, 7, 0, 0, 3875, 694, 1, 0, 0, 0, 3876, 3877, 7, 9, 0, 0, 3877, 3878, 7, 16, 0, 0, 3878, 3879, 7, 12, 0, 0, 3879, 3880, 7, 19, 0, 0, 3880, 3881, 7, 22, 0, 0, 3881, 3882, 7, 16, 0, 0, 3882, 696, 1, 0, 0, 0, 3883, 3884, 7, 9, 0, 0, 3884, 3885, 7, 16, 0, 0, 3885, 3886, 7, 19, 0, 0, 3886, 3887, 7, 13, 0, 0, 3887, 3888, 7, 5, 0, 0, 3888, 3889, 7, 23, 0, 0, 3889, 3890, 7, 10, 0, 0, 3890, 698, 1, 0, 0, 0, 3891, 3892, 7, 9, 0, 0, 3892, 3893, 7, 16, 0, 0, 3893, 3894, 7, 13, 0, 0, 3894, 3895, 7, 17, 0, 0, 3895, 3896, 7, 14, 0, 0, 3896, 3897, 7, 16, 0, 0, 3897, 700, 1, 0, 0, 0, 3898, 3899, 7, 9, 0, 0, 3899, 3900, 7, 16, 0, 0, 3900, 3901, 7, 13, 0, 0, 3901, 3902, 7, 17, 0, 0, 3902, 3903, 7, 24, 0, 0, 3903, 702, 1, 0, 0, 0, 3904, 3905, 7, 9, 0, 0, 3905, 3906, 7, 8, 0, 0, 3906, 3907, 7, 9, 0, 0, 3907, 3908, 7, 17, 0, 0, 3908, 3909, 7, 12, 0, 0, 3909, 704, 1, 0, 0, 0, 3910, 3911, 7, 9, 0, 0, 3911, 3912, 7, 8, 0, 0, 3912, 3913, 7, 9, 0, 0, 3913, 3914, 7, 16, 0, 0, 3914, 3915, 7, 10, 0, 0, 3915, 3916, 7, 15, 0, 0, 3916, 706, 1, 0, 0, 0, 3917, 3918, 7, 16, 0, 0, 3918, 3919, 7, 5, 0, 0, 3919, 3920, 7, 18, 0, 0, 3920, 3921, 7, 6, 0, 0, 3921, 3922, 7, 10, 0, 0, 3922, 3923, 7, 9, 0, 0, 3923, 708, 1, 0, 0, 0, 3924, 3925, 7, 16, 0, 0, 3925, 3926, 7, 5, 0, 0, 3926, 3927, 7, 18, 0, 0, 3927, 3928, 7, 6, 0, 0, 3928, 3929, 7, 10, 0, 0, 3929, 3930, 7, 9, 0, 0, 3930, 3931, 7, 24, 0, 0, 3931, 3932, 7, 5, 0, 0, 3932, 3933, 7, 14, 0, 0, 3933, 3934, 7, 10, 0, 0, 3934, 710, 1, 0, 0, 0, 3935, 3936, 7, 16, 0, 0, 3936, 3937, 7, 10, 0, 0, 3937, 3938, 7, 15, 0, 0, 3938, 3939, 7, 24, 0, 0, 3939, 712, 1, 0, 0, 0, 3940, 3941, 7, 16, 0, 0, 3941, 3942, 7, 10, 0, 0, 3942, 3943, 7, 15, 0, 0, 3943, 3944, 7, 24, 0, 0, 3944, 3945, 7, 6, 0, 0, 3945, 3946, 7, 5, 0, 0, 3946, 3947, 7, 16, 0, 0, 3947, 3948, 7, 10, 0, 0, 3948, 714, 1, 0, 0, 0, 3949, 3950, 7, 16, 0, 0, 3950, 3951, 7, 10, 0, 0, 3951, 3952, 7, 15, 0, 0, 3952, 3953, 7, 24, 0, 0, 3953, 3954, 7, 19, 0, 0, 3954, 3955, 7, 13, 0, 0, 3955, 3956, 7, 5, 0, 0, 3956, 3957, 7, 13, 0, 0, 3957, 3958, 7, 8, 0, 0, 3958, 716, 1, 0, 0, 0, 3959, 3960, 7, 16, 0, 0, 3960, 3961, 7, 10, 0, 0, 3961, 3962, 7, 26, 0, 0, 3962, 3963, 7, 16, 0, 0, 3963, 718, 1, 0, 0, 0, 3964, 3965, 7, 16, 0, 0, 3965, 3966, 7, 13, 0, 0, 3966, 3967, 7, 5, 0, 0, 3967, 3968, 7, 7, 0, 0, 3968, 3969, 7, 9, 0, 0, 3969, 3970, 7, 5, 0, 0, 3970, 3971, 7, 14, 0, 0, 3971, 3972, 7, 16, 0, 0, 3972, 3973, 7, 17, 0, 0, 3973, 3974, 7, 19, 0, 0, 3974, 3975, 7, 7, 0, 0, 3975, 720, 1, 0, 0, 0, 3976, 3977, 7, 16, 0, 0, 3977, 3978, 7, 13, 0, 0, 3978, 3979, 7, 17, 0, 0, 3979, 3980, 7, 23, 0, 0, 3980, 3981, 7, 23, 0, 0, 3981, 3982, 7, 10, 0, 0, 3982, 3983, 7, 13, 0, 0, 3983, 722, 1, 0, 0, 0, 3984, 3985, 7, 16, 0, 0, 3985, 3986, 7, 13, 0, 0, 3986, 3987, 7, 22, 0, 0, 3987, 3988, 7, 7, 0, 0, 3988, 3989, 7, 14, 0, 0, 3989, 3990, 7, 5, 0, 0, 3990, 3991, 7, 16, 0, 0, 3991, 3992, 7, 10, 0, 0, 3992, 724, 1, 0, 0, 0, 3993, 3994, 7, 16, 0, 0, 3994, 3995, 7, 13, 0, 0, 3995, 3996, 7, 22, 0, 0, 3996, 3997, 7, 9, 0, 0, 3997, 3998, 7, 16, 0, 0, 3998, 3999, 7, 10, 0, 0, 3999, 4000, 7, 12, 0, 0, 4000, 726, 1, 0, 0, 0, 4001, 4002, 7, 16, 0, 0, 4002, 4003, 7, 8, 0, 0, 4003, 4004, 7, 24, 0, 0, 4004, 4005, 7, 10, 0, 0, 4005, 728, 1, 0, 0, 0, 4006, 4007, 7, 16, 0, 0, 4007, 4008, 7, 8, 0, 0, 4008, 4009, 7, 24, 0, 0, 4009, 4010, 7, 10, 0, 0, 4010, 4011, 7, 9, 0, 0, 4011, 730, 1, 0, 0, 0, 4012, 4013, 7, 22, 0, 0, 4013, 4014, 7, 7, 0, 0, 4014, 4015, 7, 18, 0, 0, 4015, 4016, 7, 19, 0, 0, 4016, 4017, 7, 22, 0, 0, 4017, 4018, 7, 7, 0, 0, 4018, 4019, 7, 12, 0, 0, 4019, 4020, 7, 10, 0, 0, 4020, 4021, 7, 12, 0, 0, 4021, 732, 1, 0, 0, 0, 4022, 4023, 7, 22, 0, 0, 4023, 4024, 7, 7, 0, 0, 4024, 4025, 7, 14, 0, 0, 4025, 4026, 7, 19, 0, 0, 4026, 4027, 7, 15, 0, 0, 4027, 4028, 7, 15, 0, 0, 4028, 4029, 7, 17, 0, 0, 4029, 4030, 7, 16, 0, 0, 4030, 4031, 7, 16, 0, 0, 4031, 4032, 7, 10, 0, 0, 4032, 4033, 7, 12, 0, 0, 4033, 734, 1, 0, 0, 0, 4034, 4035, 7, 22, 0, 0, 4035, 4036, 7, 7, 0, 0, 4036, 4037, 7, 10, 0, 0, 4037, 4038, 7, 7, 0, 0, 4038, 4039, 7, 14, 0, 0, 4039, 4040, 7, 13, 0, 0, 4040, 4041, 7, 8, 0, 0, 4041, 4042, 7, 24, 0, 0, 4042, 4043, 7, 16, 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, 21, 0, 0, 4049, 4050, 7, 7, 0, 0, 4050, 4051, 7, 19, 0, 0, 4051, 4052, 7, 28, 0, 0, 4052, 4053, 7, 7, 0, 0, 4053, 738, 1, 0, 0, 0, 4054, 4055, 7, 22, 0, 0, 4055, 4056, 7, 7, 0, 0, 4056, 4057, 7, 6, 0, 0, 4057, 4058, 7, 17, 0, 0, 4058, 4059, 7, 9, 0, 0, 4059, 4060, 7, 16, 0, 0, 4060, 4061, 7, 10, 0, 0, 4061, 4062, 7, 7, 0, 0, 4062, 740, 1, 0, 0, 0, 4063, 4064, 7, 22, 0, 0, 4064, 4065, 7, 7, 0, 0, 4065, 4066, 7, 6, 0, 0, 4066, 4067, 7, 19, 0, 0, 4067, 4068, 7, 23, 0, 0, 4068, 4069, 7, 23, 0, 0, 4069, 4070, 7, 10, 0, 0, 4070, 4071, 7, 12, 0, 0, 4071, 742, 1, 0, 0, 0, 4072, 4073, 7, 22, 0, 0, 4073, 4074, 7, 7, 0, 0, 4074, 4075, 7, 16, 0, 0, 4075, 4076, 7, 17, 0, 0, 4076, 4077, 7, 6, 0, 0, 4077, 744, 1, 0, 0, 0, 4078, 4079, 7, 22, 0, 0, 4079, 4080, 7, 24, 0, 0, 4080, 4081, 7, 12, 0, 0, 4081, 4082, 7, 5, 0, 0, 4082, 4083, 7, 16, 0, 0, 4083, 4084, 7, 10, 0, 0, 4084, 746, 1, 0, 0, 0, 4085, 4086, 7, 27, 0, 0, 4086, 4087, 7, 5, 0, 0, 4087, 4088, 7, 14, 0, 0, 4088, 4089, 7, 22, 0, 0, 4089, 4090, 7, 22, 0, 0, 4090, 4091, 7, 15, 0, 0, 4091, 748, 1, 0, 0, 0, 4092, 4093, 7, 27, 0, 0, 4093, 4094, 7, 5, 0, 0, 4094, 4095, 7, 6, 0, 0, 4095, 4096, 7, 17, 0, 0, 4096, 4097, 7, 12, 0, 0, 4097, 750, 1, 0, 0, 0, 4098, 4099, 7, 27, 0, 0, 4099, 4100, 7, 5, 0, 0, 4100, 4101, 7, 6, 0, 0, 4101, 4102, 7, 17, 0, 0, 4102, 4103, 7, 12, 0, 0, 4103, 4104, 7, 5, 0, 0, 4104, 4105, 7, 16, 0, 0, 4105, 4106, 7, 10, 0, 0, 4106, 752, 1, 0, 0, 0, 4107, 4108, 7, 27, 0, 0, 4108, 4109, 7, 5, 0, 0, 4109, 4110, 7, 6, 0, 0, 4110, 4111, 7, 17, 0, 0, 4111, 4112, 7, 12, 0, 0, 4112, 4113, 7, 5, 0, 0, 4113, 4114, 7, 16, 0, 0, 4114, 4115, 7, 19, 0, 0, 4115, 4116, 7, 13, 0, 0, 4116, 754, 1, 0, 0, 0, 4117, 4118, 7, 27, 0, 0, 4118, 4119, 7, 5, 0, 0, 4119, 4120, 7, 13, 0, 0, 4120, 4121, 7, 8, 0, 0, 4121, 4122, 7, 17, 0, 0, 4122, 4123, 7, 7, 0, 0, 4123, 4124, 7, 23, 0, 0, 4124, 756, 1, 0, 0, 0, 4125, 4126, 7, 27, 0, 0, 4126, 4127, 7, 10, 0, 0, 4127, 4128, 7, 13, 0, 0, 4128, 4129, 7, 9, 0, 0, 4129, 4130, 7, 17, 0, 0, 4130, 4131, 7, 19, 0, 0, 4131, 4132, 7, 7, 0, 0, 4132, 758, 1, 0, 0, 0, 4133, 4134, 7, 27, 0, 0, 4134, 4135, 7, 17, 0, 0, 4135, 4136, 7, 10, 0, 0, 4136, 4137, 7, 28, 0, 0, 4137, 760, 1, 0, 0, 0, 4138, 4139, 7, 27, 0, 0, 4139, 4140, 7, 19, 0, 0, 4140, 4141, 7, 6, 0, 0, 4141, 4142, 7, 5, 0, 0, 4142, 4143, 7, 16, 0, 0, 4143, 4144, 7, 17, 0, 0, 4144, 4145, 7, 6, 0, 0, 4145, 4146, 7, 10, 0, 0, 4146, 762, 1, 0, 0, 0, 4147, 4148, 7, 28, 0, 0, 4148, 4149, 7, 20, 0, 0, 4149, 4150, 7, 17, 0, 0, 4150, 4151, 7, 16, 0, 0, 4151, 4152, 7, 10, 0, 0, 4152, 4153, 7, 9, 0, 0, 4153, 4154, 7, 24, 0, 0, 4154, 4155, 7, 5, 0, 0, 4155, 4156, 7, 14, 0, 0, 4156, 4157, 7, 10, 0, 0, 4157, 764, 1, 0, 0, 0, 4158, 4159, 7, 28, 0, 0, 4159, 4160, 7, 17, 0, 0, 4160, 4161, 7, 16, 0, 0, 4161, 4162, 7, 20, 0, 0, 4162, 4163, 7, 19, 0, 0, 4163, 4164, 7, 22, 0, 0, 4164, 4165, 7, 16, 0, 0, 4165, 766, 1, 0, 0, 0, 4166, 4167, 7, 28, 0, 0, 4167, 4168, 7, 19, 0, 0, 4168, 4169, 7, 13, 0, 0, 4169, 4170, 7, 21, 0, 0, 4170, 768, 1, 0, 0, 0, 4171, 4172, 7, 28, 0, 0, 4172, 4173, 7, 13, 0, 0, 4173, 4174, 7, 5, 0, 0, 4174, 4175, 7, 24, 0, 0, 4175, 4176, 7, 24, 0, 0, 4176, 4177, 7, 10, 0, 0, 4177, 4178, 7, 13, 0, 0, 4178, 770, 1, 0, 0, 0, 4179, 4180, 7, 28, 0, 0, 4180, 4181, 7, 13, 0, 0, 4181, 4182, 7, 17, 0, 0, 4182, 4183, 7, 16, 0, 0, 4183, 4184, 7, 10, 0, 0, 4184, 772, 1, 0, 0, 0, 4185, 4186, 7, 26, 0, 0, 4186, 4187, 7, 15, 0, 0, 4187, 4188, 7, 6, 0, 0, 4188, 774, 1, 0, 0, 0, 4189, 4190, 7, 8, 0, 0, 4190, 4191, 7, 10, 0, 0, 4191, 4192, 7, 5, 0, 0, 4192, 4193, 7, 13, 0, 0, 4193, 776, 1, 0, 0, 0, 4194, 4195, 7, 8, 0, 0, 4195, 4196, 7, 10, 0, 0, 4196, 4197, 7, 9, 0, 0, 4197, 778, 1, 0, 0, 0, 4198, 4199, 7, 11, 0, 0, 4199, 4200, 7, 19, 0, 0, 4200, 4201, 7, 7, 0, 0, 4201, 4202, 7, 10, 0, 0, 4202, 780, 1, 0, 0, 0, 4203, 4204, 7, 18, 0, 0, 4204, 4205, 7, 10, 0, 0, 4205, 4206, 7, 16, 0, 0, 4206, 4207, 7, 28, 0, 0, 4207, 4208, 7, 10, 0, 0, 4208, 4209, 7, 10, 0, 0, 4209, 4210, 7, 7, 0, 0, 4210, 782, 1, 0, 0, 0, 4211, 4212, 7, 18, 0, 0, 4212, 4213, 7, 17, 0, 0, 4213, 4214, 7, 23, 0, 0, 4214, 4215, 7, 17, 0, 0, 4215, 4216, 7, 7, 0, 0, 4216, 4217, 7, 16, 0, 0, 4217, 784, 1, 0, 0, 0, 4218, 4219, 7, 18, 0, 0, 4219, 4220, 7, 17, 0, 0, 4220, 4221, 7, 16, 0, 0, 4221, 786, 1, 0, 0, 0, 4222, 4223, 7, 18, 0, 0, 4223, 4224, 7, 19, 0, 0, 4224, 4225, 7, 19, 0, 0, 4225, 4226, 7, 6, 0, 0, 4226, 4227, 7, 10, 0, 0, 4227, 4228, 7, 5, 0, 0, 4228, 4229, 7, 7, 0, 0, 4229, 788, 1, 0, 0, 0, 4230, 4231, 7, 14, 0, 0, 4231, 4232, 7, 20, 0, 0, 4232, 4233, 7, 5, 0, 0, 4233, 4234, 7, 13, 0, 0, 4234, 790, 1, 0, 0, 0, 4235, 4236, 7, 14, 0, 0, 4236, 4237, 7, 20, 0, 0, 4237, 4238, 7, 5, 0, 0, 4238, 4239, 7, 13, 0, 0, 4239, 4240, 7, 5, 0, 0, 4240, 4241, 7, 14, 0, 0, 4241, 4242, 7, 16, 0, 0, 4242, 4243, 7, 10, 0, 0, 4243, 4244, 7, 13, 0, 0, 4244, 792, 1, 0, 0, 0, 4245, 4246, 7, 14, 0, 0, 4246, 4247, 7, 19, 0, 0, 4247, 4248, 7, 5, 0, 0, 4248, 4249, 7, 6, 0, 0, 4249, 4250, 7, 10, 0, 0, 4250, 4251, 7, 9, 0, 0, 4251, 4252, 7, 14, 0, 0, 4252, 4253, 7, 10, 0, 0, 4253, 794, 1, 0, 0, 0, 4254, 4255, 7, 12, 0, 0, 4255, 4256, 7, 10, 0, 0, 4256, 4257, 7, 14, 0, 0, 4257, 796, 1, 0, 0, 0, 4258, 4259, 7, 12, 0, 0, 4259, 4260, 7, 10, 0, 0, 4260, 4261, 7, 14, 0, 0, 4261, 4262, 7, 17, 0, 0, 4262, 4263, 7, 15, 0, 0, 4263, 4264, 7, 5, 0, 0, 4264, 4265, 7, 6, 0, 0, 4265, 798, 1, 0, 0, 0, 4266, 4267, 7, 10, 0, 0, 4267, 4268, 7, 26, 0, 0, 4268, 4269, 7, 17, 0, 0, 4269, 4270, 7, 9, 0, 0, 4270, 4271, 7, 16, 0, 0, 4271, 4272, 7, 9, 0, 0, 4272, 800, 1, 0, 0, 0, 4273, 4274, 7, 10, 0, 0, 4274, 4275, 7, 26, 0, 0, 4275, 4276, 7, 16, 0, 0, 4276, 4277, 7, 13, 0, 0, 4277, 4278, 7, 5, 0, 0, 4278, 4279, 7, 14, 0, 0, 4279, 4280, 7, 16, 0, 0, 4280, 802, 1, 0, 0, 0, 4281, 4282, 7, 25, 0, 0, 4282, 4283, 7, 6, 0, 0, 4283, 4284, 7, 19, 0, 0, 4284, 4285, 7, 5, 0, 0, 4285, 4286, 7, 16, 0, 0, 4286, 804, 1, 0, 0, 0, 4287, 4288, 7, 23, 0, 0, 4288, 4289, 7, 13, 0, 0, 4289, 4290, 7, 10, 0, 0, 4290, 4291, 7, 5, 0, 0, 4291, 4292, 7, 16, 0, 0, 4292, 4293, 7, 10, 0, 0, 4293, 4294, 7, 9, 0, 0, 4294, 4295, 7, 16, 0, 0, 4295, 806, 1, 0, 0, 0, 4296, 4297, 7, 17, 0, 0, 4297, 4298, 7, 7, 0, 0, 4298, 4299, 7, 19, 0, 0, 4299, 4300, 7, 22, 0, 0, 4300, 4301, 7, 16, 0, 0, 4301, 808, 1, 0, 0, 0, 4302, 4303, 7, 17, 0, 0, 4303, 4304, 7, 7, 0, 0, 4304, 4305, 7, 16, 0, 0, 4305, 810, 1, 0, 0, 0, 4306, 4307, 7, 17, 0, 0, 4307, 4308, 7, 7, 0, 0, 4308, 4309, 7, 16, 0, 0, 4309, 4310, 7, 10, 0, 0, 4310, 4311, 7, 23, 0, 0, 4311, 4312, 7, 10, 0, 0, 4312, 4313, 7, 13, 0, 0, 4313, 812, 1, 0, 0, 0, 4314, 4315, 7, 17, 0, 0, 4315, 4316, 7, 7, 0, 0, 4316, 4317, 7, 16, 0, 0, 4317, 4318, 7, 10, 0, 0, 4318, 4319, 7, 13, 0, 0, 4319, 4320, 7, 27, 0, 0, 4320, 4321, 7, 5, 0, 0, 4321, 4322, 7, 6, 0, 0, 4322, 814, 1, 0, 0, 0, 4323, 4324, 7, 6, 0, 0, 4324, 4325, 7, 10, 0, 0, 4325, 4326, 7, 5, 0, 0, 4326, 4327, 7, 9, 0, 0, 4327, 4328, 7, 16, 0, 0, 4328, 816, 1, 0, 0, 0, 4329, 4330, 7, 7, 0, 0, 4330, 4331, 7, 5, 0, 0, 4331, 4332, 7, 16, 0, 0, 4332, 4333, 7, 17, 0, 0, 4333, 4334, 7, 19, 0, 0, 4334, 4335, 7, 7, 0, 0, 4335, 4336, 7, 5, 0, 0, 4336, 4337, 7, 6, 0, 0, 4337, 818, 1, 0, 0, 0, 4338, 4339, 7, 7, 0, 0, 4339, 4340, 7, 14, 0, 0, 4340, 4341, 7, 20, 0, 0, 4341, 4342, 7, 5, 0, 0, 4342, 4343, 7, 13, 0, 0, 4343, 820, 1, 0, 0, 0, 4344, 4345, 7, 7, 0, 0, 4345, 4346, 7, 19, 0, 0, 4346, 4347, 7, 7, 0, 0, 4347, 4348, 7, 10, 0, 0, 4348, 822, 1, 0, 0, 0, 4349, 4350, 7, 7, 0, 0, 4350, 4351, 7, 22, 0, 0, 4351, 4352, 7, 6, 0, 0, 4352, 4353, 7, 6, 0, 0, 4353, 4354, 7, 17, 0, 0, 4354, 4355, 7, 25, 0, 0, 4355, 824, 1, 0, 0, 0, 4356, 4357, 7, 7, 0, 0, 4357, 4358, 7, 22, 0, 0, 4358, 4359, 7, 15, 0, 0, 4359, 4360, 7, 10, 0, 0, 4360, 4361, 7, 13, 0, 0, 4361, 4362, 7, 17, 0, 0, 4362, 4363, 7, 14, 0, 0, 4363, 826, 1, 0, 0, 0, 4364, 4365, 7, 19, 0, 0, 4365, 4366, 7, 27, 0, 0, 4366, 4367, 7, 10, 0, 0, 4367, 4368, 7, 13, 0, 0, 4368, 4369, 7, 6, 0, 0, 4369, 4370, 7, 5, 0, 0, 4370, 4371, 7, 8, 0, 0, 4371, 828, 1, 0, 0, 0, 4372, 4373, 7, 24, 0, 0, 4373, 4374, 7, 19, 0, 0, 4374, 4375, 7, 9, 0, 0, 4375, 4376, 7, 17, 0, 0, 4376, 4377, 7, 16, 0, 0, 4377, 4378, 7, 17, 0, 0, 4378, 4379, 7, 19, 0, 0, 4379, 4380, 7, 7, 0, 0, 4380, 830, 1, 0, 0, 0, 4381, 4382, 7, 24, 0, 0, 4382, 4383, 7, 13, 0, 0, 4383, 4384, 7, 10, 0, 0, 4384, 4385, 7, 14, 0, 0, 4385, 4386, 7, 17, 0, 0, 4386, 4387, 7, 9, 0, 0, 4387, 4388, 7, 17, 0, 0, 4388, 4389, 7, 19, 0, 0, 4389, 4390, 7, 7, 0, 0, 4390, 832, 1, 0, 0, 0, 4391, 4392, 7, 13, 0, 0, 4392, 4393, 7, 10, 0, 0, 4393, 4394, 7, 5, 0, 0, 4394, 4395, 7, 6, 0, 0, 4395, 834, 1, 0, 0, 0, 4396, 4397, 7, 13, 0, 0, 4397, 4398, 7, 19, 0, 0, 4398, 4399, 7, 28, 0, 0, 4399, 836, 1, 0, 0, 0, 4400, 4401, 7, 9, 0, 0, 4401, 4402, 7, 10, 0, 0, 4402, 4403, 7, 16, 0, 0, 4403, 4404, 7, 19, 0, 0, 4404, 4405, 7, 25, 0, 0, 4405, 838, 1, 0, 0, 0, 4406, 4407, 7, 9, 0, 0, 4407, 4408, 7, 15, 0, 0, 4408, 4409, 7, 5, 0, 0, 4409, 4410, 7, 6, 0, 0, 4410, 4411, 7, 6, 0, 0, 4411, 4412, 7, 17, 0, 0, 4412, 4413, 7, 7, 0, 0, 4413, 4414, 7, 16, 0, 0, 4414, 840, 1, 0, 0, 0, 4415, 4416, 7, 9, 0, 0, 4416, 4417, 7, 22, 0, 0, 4417, 4418, 7, 18, 0, 0, 4418, 4419, 7, 9, 0, 0, 4419, 4420, 7, 16, 0, 0, 4420, 4421, 7, 13, 0, 0, 4421, 4422, 7, 17, 0, 0, 4422, 4423, 7, 7, 0, 0, 4423, 4424, 7, 23, 0, 0, 4424, 842, 1, 0, 0, 0, 4425, 4426, 7, 16, 0, 0, 4426, 4427, 7, 17, 0, 0, 4427, 4428, 7, 15, 0, 0, 4428, 4429, 7, 10, 0, 0, 4429, 844, 1, 0, 0, 0, 4430, 4431, 7, 16, 0, 0, 4431, 4432, 7, 17, 0, 0, 4432, 4433, 7, 15, 0, 0, 4433, 4434, 7, 10, 0, 0, 4434, 4435, 7, 9, 0, 0, 4435, 4436, 7, 16, 0, 0, 4436, 4437, 7, 5, 0, 0, 4437, 4438, 7, 15, 0, 0, 4438, 4439, 7, 24, 0, 0, 4439, 846, 1, 0, 0, 0, 4440, 4441, 7, 16, 0, 0, 4441, 4442, 7, 13, 0, 0, 4442, 4443, 7, 10, 0, 0, 4443, 4444, 7, 5, 0, 0, 4444, 4445, 7, 16, 0, 0, 4445, 848, 1, 0, 0, 0, 4446, 4447, 7, 16, 0, 0, 4447, 4448, 7, 13, 0, 0, 4448, 4449, 7, 17, 0, 0, 4449, 4450, 7, 15, 0, 0, 4450, 850, 1, 0, 0, 0, 4451, 4452, 7, 27, 0, 0, 4452, 4453, 7, 5, 0, 0, 4453, 4454, 7, 6, 0, 0, 4454, 4455, 7, 22, 0, 0, 4455, 4456, 7, 10, 0, 0, 4456, 4457, 7, 9, 0, 0, 4457, 852, 1, 0, 0, 0, 4458, 4459, 7, 27, 0, 0, 4459, 4460, 7, 5, 0, 0, 4460, 4461, 7, 13, 0, 0, 4461, 4462, 7, 14, 0, 0, 4462, 4463, 7, 20, 0, 0, 4463, 4464, 7, 5, 0, 0, 4464, 4465, 7, 13, 0, 0, 4465, 854, 1, 0, 0, 0, 4466, 4467, 7, 26, 0, 0, 4467, 4468, 7, 15, 0, 0, 4468, 4469, 7, 6, 0, 0, 4469, 4470, 7, 5, 0, 0, 4470, 4471, 7, 16, 0, 0, 4471, 4472, 7, 16, 0, 0, 4472, 4473, 7, 13, 0, 0, 4473, 4474, 7, 17, 0, 0, 4474, 4475, 7, 18, 0, 0, 4475, 4476, 7, 22, 0, 0, 4476, 4477, 7, 16, 0, 0, 4477, 4478, 7, 10, 0, 0, 4478, 4479, 7, 9, 0, 0, 4479, 856, 1, 0, 0, 0, 4480, 4481, 7, 26, 0, 0, 4481, 4482, 7, 15, 0, 0, 4482, 4483, 7, 6, 0, 0, 4483, 4484, 7, 14, 0, 0, 4484, 4485, 7, 19, 0, 0, 4485, 4486, 7, 15, 0, 0, 4486, 4487, 7, 15, 0, 0, 4487, 4488, 7, 10, 0, 0, 4488, 4489, 7, 7, 0, 0, 4489, 4490, 7, 16, 0, 0, 4490, 858, 1, 0, 0, 0, 4491, 4492, 7, 26, 0, 0, 4492, 4493, 7, 15, 0, 0, 4493, 4494, 7, 6, 0, 0, 4494, 4495, 7, 5, 0, 0, 4495, 4496, 7, 23, 0, 0, 4496, 4497, 7, 23, 0, 0, 4497, 860, 1, 0, 0, 0, 4498, 4499, 7, 26, 0, 0, 4499, 4500, 7, 15, 0, 0, 4500, 4501, 7, 6, 0, 0, 4501, 4502, 5, 95, 0, 0, 4502, 4503, 7, 17, 0, 0, 4503, 4504, 7, 9, 0, 0, 4504, 4505, 5, 95, 0, 0, 4505, 4506, 7, 28, 0, 0, 4506, 4507, 7, 10, 0, 0, 4507, 4508, 7, 6, 0, 0, 4508, 4509, 7, 6, 0, 0, 4509, 4510, 5, 95, 0, 0, 4510, 4511, 7, 25, 0, 0, 4511, 4512, 7, 19, 0, 0, 4512, 4513, 7, 13, 0, 0, 4513, 4514, 7, 15, 0, 0, 4514, 4515, 7, 10, 0, 0, 4515, 4516, 7, 12, 0, 0, 4516, 862, 1, 0, 0, 0, 4517, 4518, 7, 26, 0, 0, 4518, 4519, 7, 15, 0, 0, 4519, 4520, 7, 6, 0, 0, 4520, 4521, 5, 95, 0, 0, 4521, 4522, 7, 17, 0, 0, 4522, 4523, 7, 9, 0, 0, 4523, 4524, 5, 95, 0, 0, 4524, 4525, 7, 28, 0, 0, 4525, 4526, 7, 10, 0, 0, 4526, 4527, 7, 6, 0, 0, 4527, 4528, 7, 6, 0, 0, 4528, 4529, 5, 95, 0, 0, 4529, 4530, 7, 25, 0, 0, 4530, 4531, 7, 19, 0, 0, 4531, 4532, 7, 13, 0, 0, 4532, 4533, 7, 15, 0, 0, 4533, 4534, 7, 10, 0, 0, 4534, 4535, 7, 12, 0, 0, 4535, 4536, 5, 95, 0, 0, 4536, 4537, 7, 12, 0, 0, 4537, 4538, 7, 19, 0, 0, 4538, 4539, 7, 14, 0, 0, 4539, 4540, 7, 22, 0, 0, 4540, 4541, 7, 15, 0, 0, 4541, 4542, 7, 10, 0, 0, 4542, 4543, 7, 7, 0, 0, 4543, 4544, 7, 16, 0, 0, 4544, 864, 1, 0, 0, 0, 4545, 4546, 7, 26, 0, 0, 4546, 4547, 7, 15, 0, 0, 4547, 4548, 7, 6, 0, 0, 4548, 4549, 5, 95, 0, 0, 4549, 4550, 7, 17, 0, 0, 4550, 4551, 7, 9, 0, 0, 4551, 4552, 5, 95, 0, 0, 4552, 4553, 7, 28, 0, 0, 4553, 4554, 7, 10, 0, 0, 4554, 4555, 7, 6, 0, 0, 4555, 4556, 7, 6, 0, 0, 4556, 4557, 5, 95, 0, 0, 4557, 4558, 7, 25, 0, 0, 4558, 4559, 7, 19, 0, 0, 4559, 4560, 7, 13, 0, 0, 4560, 4561, 7, 15, 0, 0, 4561, 4562, 7, 10, 0, 0, 4562, 4563, 7, 12, 0, 0, 4563, 4564, 5, 95, 0, 0, 4564, 4565, 7, 14, 0, 0, 4565, 4566, 7, 19, 0, 0, 4566, 4567, 7, 7, 0, 0, 4567, 4568, 7, 16, 0, 0, 4568, 4569, 7, 10, 0, 0, 4569, 4570, 7, 7, 0, 0, 4570, 4571, 7, 16, 0, 0, 4571, 866, 1, 0, 0, 0, 4572, 4573, 7, 26, 0, 0, 4573, 4574, 7, 24, 0, 0, 4574, 4575, 7, 5, 0, 0, 4575, 4576, 7, 16, 0, 0, 4576, 4577, 7, 20, 0, 0, 4577, 868, 1, 0, 0, 0, 4578, 4579, 7, 26, 0, 0, 4579, 4580, 7, 24, 0, 0, 4580, 4581, 7, 5, 0, 0, 4581, 4582, 7, 16, 0, 0, 4582, 4583, 7, 20, 0, 0, 4583, 4584, 5, 95, 0, 0, 4584, 4585, 7, 10, 0, 0, 4585, 4586, 7, 26, 0, 0, 4586, 4587, 7, 17, 0, 0, 4587, 4588, 7, 9, 0, 0, 4588, 4589, 7, 16, 0, 0, 4589, 4590, 7, 9, 0, 0, 4590, 870, 1, 0, 0, 0, 4591, 4592, 7, 26, 0, 0, 4592, 4593, 7, 15, 0, 0, 4593, 4594, 7, 6, 0, 0, 4594, 4595, 7, 14, 0, 0, 4595, 4596, 7, 19, 0, 0, 4596, 4597, 7, 7, 0, 0, 4597, 4598, 7, 14, 0, 0, 4598, 4599, 7, 5, 0, 0, 4599, 4600, 7, 16, 0, 0, 4600, 872, 1, 0, 0, 0, 4601, 4602, 7, 26, 0, 0, 4602, 4603, 7, 15, 0, 0, 4603, 4604, 7, 6, 0, 0, 4604, 4605, 7, 10, 0, 0, 4605, 4606, 7, 6, 0, 0, 4606, 4607, 7, 10, 0, 0, 4607, 4608, 7, 15, 0, 0, 4608, 4609, 7, 10, 0, 0, 4609, 4610, 7, 7, 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, 10, 0, 0, 4616, 4617, 7, 26, 0, 0, 4617, 4618, 7, 17, 0, 0, 4618, 4619, 7, 9, 0, 0, 4619, 4620, 7, 16, 0, 0, 4620, 4621, 7, 9, 0, 0, 4621, 876, 1, 0, 0, 0, 4622, 4623, 7, 26, 0, 0, 4623, 4624, 7, 15, 0, 0, 4624, 4625, 7, 6, 0, 0, 4625, 4626, 7, 25, 0, 0, 4626, 4627, 7, 19, 0, 0, 4627, 4628, 7, 13, 0, 0, 4628, 4629, 7, 10, 0, 0, 4629, 4630, 7, 9, 0, 0, 4630, 4631, 7, 16, 0, 0, 4631, 878, 1, 0, 0, 0, 4632, 4633, 7, 26, 0, 0, 4633, 4634, 7, 15, 0, 0, 4634, 4635, 7, 6, 0, 0, 4635, 4636, 7, 24, 0, 0, 4636, 4637, 7, 5, 0, 0, 4637, 4638, 7, 13, 0, 0, 4638, 4639, 7, 9, 0, 0, 4639, 4640, 7, 10, 0, 0, 4640, 880, 1, 0, 0, 0, 4641, 4642, 7, 26, 0, 0, 4642, 4643, 7, 15, 0, 0, 4643, 4644, 7, 6, 0, 0, 4644, 4645, 7, 24, 0, 0, 4645, 4646, 7, 17, 0, 0, 4646, 882, 1, 0, 0, 0, 4647, 4648, 7, 26, 0, 0, 4648, 4649, 7, 15, 0, 0, 4649, 4650, 7, 6, 0, 0, 4650, 4651, 7, 13, 0, 0, 4651, 4652, 7, 19, 0, 0, 4652, 4653, 7, 19, 0, 0, 4653, 4654, 7, 16, 0, 0, 4654, 884, 1, 0, 0, 0, 4655, 4656, 7, 26, 0, 0, 4656, 4657, 7, 15, 0, 0, 4657, 4658, 7, 6, 0, 0, 4658, 4659, 7, 9, 0, 0, 4659, 4660, 7, 10, 0, 0, 4660, 4661, 7, 13, 0, 0, 4661, 4662, 7, 17, 0, 0, 4662, 4663, 7, 5, 0, 0, 4663, 4664, 7, 6, 0, 0, 4664, 4665, 7, 17, 0, 0, 4665, 4666, 7, 11, 0, 0, 4666, 4667, 7, 10, 0, 0, 4667, 886, 1, 0, 0, 0, 4668, 4669, 7, 14, 0, 0, 4669, 4670, 7, 5, 0, 0, 4670, 4671, 7, 6, 0, 0, 4671, 4672, 7, 6, 0, 0, 4672, 888, 1, 0, 0, 0, 4673, 4674, 7, 14, 0, 0, 4674, 4675, 7, 22, 0, 0, 4675, 4676, 7, 13, 0, 0, 4676, 4677, 7, 13, 0, 0, 4677, 4678, 7, 10, 0, 0, 4678, 4679, 7, 7, 0, 0, 4679, 4680, 7, 16, 0, 0, 4680, 890, 1, 0, 0, 0, 4681, 4682, 7, 5, 0, 0, 4682, 4683, 7, 16, 0, 0, 4683, 4684, 7, 16, 0, 0, 4684, 4685, 7, 5, 0, 0, 4685, 4686, 7, 14, 0, 0, 4686, 4687, 7, 20, 0, 0, 4687, 892, 1, 0, 0, 0, 4688, 4689, 7, 12, 0, 0, 4689, 4690, 7, 10, 0, 0, 4690, 4691, 7, 16, 0, 0, 4691, 4692, 7, 5, 0, 0, 4692, 4693, 7, 14, 0, 0, 4693, 4694, 7, 20, 0, 0, 4694, 894, 1, 0, 0, 0, 4695, 4696, 7, 10, 0, 0, 4696, 4697, 7, 26, 0, 0, 4697, 4698, 7, 24, 0, 0, 4698, 4699, 7, 13, 0, 0, 4699, 4700, 7, 10, 0, 0, 4700, 4701, 7, 9, 0, 0, 4701, 4702, 7, 9, 0, 0, 4702, 4703, 7, 17, 0, 0, 4703, 4704, 7, 19, 0, 0, 4704, 4705, 7, 7, 0, 0, 4705, 896, 1, 0, 0, 0, 4706, 4707, 7, 23, 0, 0, 4707, 4708, 7, 10, 0, 0, 4708, 4709, 7, 7, 0, 0, 4709, 4710, 7, 10, 0, 0, 4710, 4711, 7, 13, 0, 0, 4711, 4712, 7, 5, 0, 0, 4712, 4713, 7, 16, 0, 0, 4713, 4714, 7, 10, 0, 0, 4714, 4715, 7, 12, 0, 0, 4715, 898, 1, 0, 0, 0, 4716, 4717, 7, 6, 0, 0, 4717, 4718, 7, 19, 0, 0, 4718, 4719, 7, 23, 0, 0, 4719, 4720, 7, 23, 0, 0, 4720, 4721, 7, 10, 0, 0, 4721, 4722, 7, 12, 0, 0, 4722, 900, 1, 0, 0, 0, 4723, 4724, 7, 9, 0, 0, 4724, 4725, 7, 16, 0, 0, 4725, 4726, 7, 19, 0, 0, 4726, 4727, 7, 13, 0, 0, 4727, 4728, 7, 10, 0, 0, 4728, 4729, 7, 12, 0, 0, 4729, 902, 1, 0, 0, 0, 4730, 4731, 7, 17, 0, 0, 4731, 4732, 7, 7, 0, 0, 4732, 4733, 7, 14, 0, 0, 4733, 4734, 7, 6, 0, 0, 4734, 4735, 7, 22, 0, 0, 4735, 4736, 7, 12, 0, 0, 4736, 4737, 7, 10, 0, 0, 4737, 904, 1, 0, 0, 0, 4738, 4739, 7, 13, 0, 0, 4739, 4740, 7, 19, 0, 0, 4740, 4741, 7, 22, 0, 0, 4741, 4742, 7, 16, 0, 0, 4742, 4743, 7, 17, 0, 0, 4743, 4744, 7, 7, 0, 0, 4744, 4745, 7, 10, 0, 0, 4745, 906, 1, 0, 0, 0, 4746, 4747, 7, 16, 0, 0, 4747, 4748, 7, 13, 0, 0, 4748, 4749, 7, 5, 0, 0, 4749, 4750, 7, 7, 0, 0, 4750, 4751, 7, 9, 0, 0, 4751, 4752, 7, 25, 0, 0, 4752, 4753, 7, 19, 0, 0, 4753, 4754, 7, 13, 0, 0, 4754, 4755, 7, 15, 0, 0, 4755, 908, 1, 0, 0, 0, 4756, 4757, 7, 17, 0, 0, 4757, 4758, 7, 15, 0, 0, 4758, 4759, 7, 24, 0, 0, 4759, 4760, 7, 19, 0, 0, 4760, 4761, 7, 13, 0, 0, 4761, 4762, 7, 16, 0, 0, 4762, 910, 1, 0, 0, 0, 4763, 4764, 7, 24, 0, 0, 4764, 4765, 7, 19, 0, 0, 4765, 4766, 7, 6, 0, 0, 4766, 4767, 7, 17, 0, 0, 4767, 4768, 7, 14, 0, 0, 4768, 4769, 7, 8, 0, 0, 4769, 912, 1, 0, 0, 0, 4770, 4771, 7, 15, 0, 0, 4771, 4772, 7, 10, 0, 0, 4772, 4773, 7, 16, 0, 0, 4773, 4774, 7, 20, 0, 0, 4774, 4775, 7, 19, 0, 0, 4775, 4776, 7, 12, 0, 0, 4776, 914, 1, 0, 0, 0, 4777, 4778, 7, 13, 0, 0, 4778, 4779, 7, 10, 0, 0, 4779, 4780, 7, 25, 0, 0, 4780, 4781, 7, 10, 0, 0, 4781, 4782, 7, 13, 0, 0, 4782, 4783, 7, 10, 0, 0, 4783, 4784, 7, 7, 0, 0, 4784, 4785, 7, 14, 0, 0, 4785, 4786, 7, 17, 0, 0, 4786, 4787, 7, 7, 0, 0, 4787, 4788, 7, 23, 0, 0, 4788, 916, 1, 0, 0, 0, 4789, 4790, 7, 7, 0, 0, 4790, 4791, 7, 10, 0, 0, 4791, 4792, 7, 28, 0, 0, 4792, 918, 1, 0, 0, 0, 4793, 4794, 7, 19, 0, 0, 4794, 4795, 7, 6, 0, 0, 4795, 4796, 7, 12, 0, 0, 4796, 920, 1, 0, 0, 0, 4797, 4798, 7, 27, 0, 0, 4798, 4799, 7, 5, 0, 0, 4799, 4800, 7, 6, 0, 0, 4800, 4801, 7, 22, 0, 0, 4801, 4802, 7, 10, 0, 0, 4802, 922, 1, 0, 0, 0, 4803, 4804, 7, 9, 0, 0, 4804, 4805, 7, 22, 0, 0, 4805, 4806, 7, 18, 0, 0, 4806, 4807, 7, 9, 0, 0, 4807, 4808, 7, 14, 0, 0, 4808, 4809, 7, 13, 0, 0, 4809, 4810, 7, 17, 0, 0, 4810, 4811, 7, 24, 0, 0, 4811, 4812, 7, 16, 0, 0, 4812, 4813, 7, 17, 0, 0, 4813, 4814, 7, 19, 0, 0, 4814, 4815, 7, 7, 0, 0, 4815, 924, 1, 0, 0, 0, 4816, 4817, 7, 24, 0, 0, 4817, 4818, 7, 22, 0, 0, 4818, 4819, 7, 18, 0, 0, 4819, 4820, 7, 6, 0, 0, 4820, 4821, 7, 17, 0, 0, 4821, 4822, 7, 14, 0, 0, 4822, 4823, 7, 5, 0, 0, 4823, 4824, 7, 16, 0, 0, 4824, 4825, 7, 17, 0, 0, 4825, 4826, 7, 19, 0, 0, 4826, 4827, 7, 7, 0, 0, 4827, 926, 1, 0, 0, 0, 4828, 4829, 7, 19, 0, 0, 4829, 4830, 7, 22, 0, 0, 4830, 4831, 7, 16, 0, 0, 4831, 928, 1, 0, 0, 0, 4832, 4833, 7, 10, 0, 0, 4833, 4834, 7, 7, 0, 0, 4834, 4835, 7, 12, 0, 0, 4835, 930, 1, 0, 0, 0, 4836, 4837, 7, 13, 0, 0, 4837, 4838, 7, 19, 0, 0, 4838, 4839, 7, 22, 0, 0, 4839, 4840, 7, 16, 0, 0, 4840, 4841, 7, 17, 0, 0, 4841, 4842, 7, 7, 0, 0, 4842, 4843, 7, 10, 0, 0, 4843, 4844, 7, 9, 0, 0, 4844, 932, 1, 0, 0, 0, 4845, 4846, 7, 9, 0, 0, 4846, 4847, 7, 14, 0, 0, 4847, 4848, 7, 20, 0, 0, 4848, 4849, 7, 10, 0, 0, 4849, 4850, 7, 15, 0, 0, 4850, 4851, 7, 5, 0, 0, 4851, 4852, 7, 9, 0, 0, 4852, 934, 1, 0, 0, 0, 4853, 4854, 7, 24, 0, 0, 4854, 4855, 7, 13, 0, 0, 4855, 4856, 7, 19, 0, 0, 4856, 4857, 7, 14, 0, 0, 4857, 4858, 7, 10, 0, 0, 4858, 4859, 7, 12, 0, 0, 4859, 4860, 7, 22, 0, 0, 4860, 4861, 7, 13, 0, 0, 4861, 4862, 7, 10, 0, 0, 4862, 4863, 7, 9, 0, 0, 4863, 936, 1, 0, 0, 0, 4864, 4865, 7, 17, 0, 0, 4865, 4866, 7, 7, 0, 0, 4866, 4867, 7, 24, 0, 0, 4867, 4868, 7, 22, 0, 0, 4868, 4869, 7, 16, 0, 0, 4869, 938, 1, 0, 0, 0, 4870, 4871, 7, 9, 0, 0, 4871, 4872, 7, 22, 0, 0, 4872, 4873, 7, 24, 0, 0, 4873, 4874, 7, 24, 0, 0, 4874, 4875, 7, 19, 0, 0, 4875, 4876, 7, 13, 0, 0, 4876, 4877, 7, 16, 0, 0, 4877, 940, 1, 0, 0, 0, 4878, 4879, 7, 24, 0, 0, 4879, 4880, 7, 5, 0, 0, 4880, 4881, 7, 13, 0, 0, 4881, 4882, 7, 5, 0, 0, 4882, 4883, 7, 6, 0, 0, 4883, 4884, 7, 6, 0, 0, 4884, 4885, 7, 10, 0, 0, 4885, 4886, 7, 6, 0, 0, 4886, 942, 1, 0, 0, 0, 4887, 4888, 7, 9, 0, 0, 4888, 4889, 7, 29, 0, 0, 4889, 4890, 7, 6, 0, 0, 4890, 944, 1, 0, 0, 0, 4891, 4892, 7, 12, 0, 0, 4892, 4893, 7, 10, 0, 0, 4893, 4894, 7, 24, 0, 0, 4894, 4895, 7, 10, 0, 0, 4895, 4896, 7, 7, 0, 0, 4896, 4897, 7, 12, 0, 0, 4897, 4898, 7, 9, 0, 0, 4898, 946, 1, 0, 0, 0, 4899, 4900, 7, 19, 0, 0, 4900, 4901, 7, 27, 0, 0, 4901, 4902, 7, 10, 0, 0, 4902, 4903, 7, 13, 0, 0, 4903, 4904, 7, 13, 0, 0, 4904, 4905, 7, 17, 0, 0, 4905, 4906, 7, 12, 0, 0, 4906, 4907, 7, 17, 0, 0, 4907, 4908, 7, 7, 0, 0, 4908, 4909, 7, 23, 0, 0, 4909, 948, 1, 0, 0, 0, 4910, 4911, 7, 14, 0, 0, 4911, 4912, 7, 19, 0, 0, 4912, 4913, 7, 7, 0, 0, 4913, 4914, 7, 25, 0, 0, 4914, 4915, 7, 6, 0, 0, 4915, 4916, 7, 17, 0, 0, 4916, 4917, 7, 14, 0, 0, 4917, 4918, 7, 16, 0, 0, 4918, 950, 1, 0, 0, 0, 4919, 4920, 7, 9, 0, 0, 4920, 4921, 7, 21, 0, 0, 4921, 4922, 7, 17, 0, 0, 4922, 4923, 7, 24, 0, 0, 4923, 952, 1, 0, 0, 0, 4924, 4925, 7, 6, 0, 0, 4925, 4926, 7, 19, 0, 0, 4926, 4927, 7, 14, 0, 0, 4927, 4928, 7, 21, 0, 0, 4928, 4929, 7, 10, 0, 0, 4929, 4930, 7, 12, 0, 0, 4930, 954, 1, 0, 0, 0, 4931, 4932, 7, 16, 0, 0, 4932, 4933, 7, 17, 0, 0, 4933, 4934, 7, 10, 0, 0, 4934, 4935, 7, 9, 0, 0, 4935, 956, 1, 0, 0, 0, 4936, 4937, 7, 13, 0, 0, 4937, 4938, 7, 19, 0, 0, 4938, 4939, 7, 6, 0, 0, 4939, 4940, 7, 6, 0, 0, 4940, 4941, 7, 22, 0, 0, 4941, 4942, 7, 24, 0, 0, 4942, 958, 1, 0, 0, 0, 4943, 4944, 7, 14, 0, 0, 4944, 4945, 7, 22, 0, 0, 4945, 4946, 7, 18, 0, 0, 4946, 4947, 7, 10, 0, 0, 4947, 960, 1, 0, 0, 0, 4948, 4949, 7, 23, 0, 0, 4949, 4950, 7, 13, 0, 0, 4950, 4951, 7, 19, 0, 0, 4951, 4952, 7, 22, 0, 0, 4952, 4953, 7, 24, 0, 0, 4953, 4954, 7, 17, 0, 0, 4954, 4955, 7, 7, 0, 0, 4955, 4956, 7, 23, 0, 0, 4956, 962, 1, 0, 0, 0, 4957, 4958, 7, 9, 0, 0, 4958, 4959, 7, 10, 0, 0, 4959, 4960, 7, 16, 0, 0, 4960, 4961, 7, 9, 0, 0, 4961, 964, 1, 0, 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, 4968, 7, 9, 0, 0, 4968, 4969, 7, 5, 0, 0, 4969, 4970, 7, 15, 0, 0, 4970, 4971, 7, 24, 0, 0, 4971, 4972, 7, 6, 0, 0, 4972, 4973, 7, 10, 0, 0, 4973, 966, 1, 0, 0, 0, 4974, 4975, 7, 19, 0, 0, 4975, 4976, 7, 13, 0, 0, 4976, 4977, 7, 12, 0, 0, 4977, 4978, 7, 17, 0, 0, 4978, 4979, 7, 7, 0, 0, 4979, 4980, 7, 5, 0, 0, 4980, 4981, 7, 6, 0, 0, 4981, 4982, 7, 17, 0, 0, 4982, 4983, 7, 16, 0, 0, 4983, 4984, 7, 8, 0, 0, 4984, 968, 1, 0, 0, 0, 4985, 4986, 7, 26, 0, 0, 4986, 4987, 7, 15, 0, 0, 4987, 4988, 7, 6, 0, 0, 4988, 4989, 7, 16, 0, 0, 4989, 4990, 7, 5, 0, 0, 4990, 4991, 7, 18, 0, 0, 4991, 4992, 7, 6, 0, 0, 4992, 4993, 7, 10, 0, 0, 4993, 970, 1, 0, 0, 0, 4994, 4995, 7, 14, 0, 0, 4995, 4996, 7, 19, 0, 0, 4996, 4997, 7, 6, 0, 0, 4997, 4998, 7, 22, 0, 0, 4998, 4999, 7, 15, 0, 0, 4999, 5000, 7, 7, 0, 0, 5000, 5001, 7, 9, 0, 0, 5001, 972, 1, 0, 0, 0, 5002, 5003, 7, 26, 0, 0, 5003, 5004, 7, 15, 0, 0, 5004, 5005, 7, 6, 0, 0, 5005, 5006, 7, 7, 0, 0, 5006, 5007, 7, 5, 0, 0, 5007, 5008, 7, 15, 0, 0, 5008, 5009, 7, 10, 0, 0, 5009, 5010, 7, 9, 0, 0, 5010, 5011, 7, 24, 0, 0, 5011, 5012, 7, 5, 0, 0, 5012, 5013, 7, 14, 0, 0, 5013, 5014, 7, 10, 0, 0, 5014, 5015, 7, 9, 0, 0, 5015, 974, 1, 0, 0, 0, 5016, 5017, 7, 13, 0, 0, 5017, 5018, 7, 19, 0, 0, 5018, 5019, 7, 28, 0, 0, 5019, 5020, 7, 16, 0, 0, 5020, 5021, 7, 8, 0, 0, 5021, 5022, 7, 24, 0, 0, 5022, 5023, 7, 10, 0, 0, 5023, 976, 1, 0, 0, 0, 5024, 5025, 7, 7, 0, 0, 5025, 5026, 7, 19, 0, 0, 5026, 5027, 7, 13, 0, 0, 5027, 5028, 7, 15, 0, 0, 5028, 5029, 7, 5, 0, 0, 5029, 5030, 7, 6, 0, 0, 5030, 5031, 7, 17, 0, 0, 5031, 5032, 7, 11, 0, 0, 5032, 5033, 7, 10, 0, 0, 5033, 5034, 7, 12, 0, 0, 5034, 978, 1, 0, 0, 0, 5035, 5036, 7, 28, 0, 0, 5036, 5037, 7, 17, 0, 0, 5037, 5038, 7, 16, 0, 0, 5038, 5039, 7, 20, 0, 0, 5039, 5040, 7, 17, 0, 0, 5040, 5041, 7, 7, 0, 0, 5041, 980, 1, 0, 0, 0, 5042, 5043, 7, 25, 0, 0, 5043, 5044, 7, 17, 0, 0, 5044, 5045, 7, 6, 0, 0, 5045, 5046, 7, 16, 0, 0, 5046, 5047, 7, 10, 0, 0, 5047, 5048, 7, 13, 0, 0, 5048, 982, 1, 0, 0, 0, 5049, 5050, 7, 23, 0, 0, 5050, 5051, 7, 13, 0, 0, 5051, 5052, 7, 19, 0, 0, 5052, 5053, 7, 22, 0, 0, 5053, 5054, 7, 24, 0, 0, 5054, 5055, 7, 9, 0, 0, 5055, 984, 1, 0, 0, 0, 5056, 5057, 7, 19, 0, 0, 5057, 5058, 7, 16, 0, 0, 5058, 5059, 7, 20, 0, 0, 5059, 5060, 7, 10, 0, 0, 5060, 5061, 7, 13, 0, 0, 5061, 5062, 7, 9, 0, 0, 5062, 986, 1, 0, 0, 0, 5063, 5064, 7, 7, 0, 0, 5064, 5065, 7, 25, 0, 0, 5065, 5066, 7, 14, 0, 0, 5066, 988, 1, 0, 0, 0, 5067, 5068, 7, 7, 0, 0, 5068, 5069, 7, 25, 0, 0, 5069, 5070, 7, 12, 0, 0, 5070, 990, 1, 0, 0, 0, 5071, 5072, 7, 7, 0, 0, 5072, 5073, 7, 25, 0, 0, 5073, 5074, 7, 21, 0, 0, 5074, 5075, 7, 14, 0, 0, 5075, 992, 1, 0, 0, 0, 5076, 5077, 7, 7, 0, 0, 5077, 5078, 7, 25, 0, 0, 5078, 5079, 7, 21, 0, 0, 5079, 5080, 7, 12, 0, 0, 5080, 994, 1, 0, 0, 0, 5081, 5082, 7, 22, 0, 0, 5082, 5083, 7, 10, 0, 0, 5083, 5084, 7, 9, 0, 0, 5084, 5085, 7, 14, 0, 0, 5085, 5086, 7, 5, 0, 0, 5086, 5087, 7, 24, 0, 0, 5087, 5088, 7, 10, 0, 0, 5088, 996, 1, 0, 0, 0, 5089, 5090, 7, 27, 0, 0, 5090, 5091, 7, 17, 0, 0, 5091, 5092, 7, 10, 0, 0, 5092, 5093, 7, 28, 0, 0, 5093, 5094, 7, 9, 0, 0, 5094, 998, 1, 0, 0, 0, 5095, 5096, 7, 7, 0, 0, 5096, 5097, 7, 19, 0, 0, 5097, 5098, 7, 13, 0, 0, 5098, 5099, 7, 15, 0, 0, 5099, 5100, 7, 5, 0, 0, 5100, 5101, 7, 6, 0, 0, 5101, 5102, 7, 17, 0, 0, 5102, 5103, 7, 11, 0, 0, 5103, 5104, 7, 10, 0, 0, 5104, 1000, 1, 0, 0, 0, 5105, 5106, 7, 12, 0, 0, 5106, 5107, 7, 22, 0, 0, 5107, 5108, 7, 15, 0, 0, 5108, 5109, 7, 24, 0, 0, 5109, 1002, 1, 0, 0, 0, 5110, 5111, 7, 24, 0, 0, 5111, 5112, 7, 13, 0, 0, 5112, 5113, 7, 17, 0, 0, 5113, 5114, 7, 7, 0, 0, 5114, 5115, 7, 16, 0, 0, 5115, 5116, 5, 95, 0, 0, 5116, 5117, 7, 9, 0, 0, 5117, 5118, 7, 16, 0, 0, 5118, 5119, 7, 13, 0, 0, 5119, 5120, 7, 17, 0, 0, 5120, 5121, 7, 14, 0, 0, 5121, 5122, 7, 16, 0, 0, 5122, 5123, 5, 95, 0, 0, 5123, 5124, 7, 24, 0, 0, 5124, 5125, 7, 5, 0, 0, 5125, 5126, 7, 13, 0, 0, 5126, 5127, 7, 5, 0, 0, 5127, 5128, 7, 15, 0, 0, 5128, 5129, 7, 9, 0, 0, 5129, 1004, 1, 0, 0, 0, 5130, 5131, 7, 27, 0, 0, 5131, 5132, 7, 5, 0, 0, 5132, 5133, 7, 13, 0, 0, 5133, 5134, 7, 17, 0, 0, 5134, 5135, 7, 5, 0, 0, 5135, 5136, 7, 18, 0, 0, 5136, 5137, 7, 6, 0, 0, 5137, 5138, 7, 10, 0, 0, 5138, 5139, 5, 95, 0, 0, 5139, 5140, 7, 14, 0, 0, 5140, 5141, 7, 19, 0, 0, 5141, 5142, 7, 7, 0, 0, 5142, 5143, 7, 25, 0, 0, 5143, 5144, 7, 6, 0, 0, 5144, 5145, 7, 17, 0, 0, 5145, 5146, 7, 14, 0, 0, 5146, 5147, 7, 16, 0, 0, 5147, 1006, 1, 0, 0, 0, 5148, 5149, 7, 10, 0, 0, 5149, 5150, 7, 13, 0, 0, 5150, 5151, 7, 13, 0, 0, 5151, 5152, 7, 19, 0, 0, 5152, 5153, 7, 13, 0, 0, 5153, 1008, 1, 0, 0, 0, 5154, 5155, 7, 22, 0, 0, 5155, 5156, 7, 9, 0, 0, 5156, 5157, 7, 10, 0, 0, 5157, 5158, 5, 95, 0, 0, 5158, 5159, 7, 27, 0, 0, 5159, 5160, 7, 5, 0, 0, 5160, 5161, 7, 13, 0, 0, 5161, 5162, 7, 17, 0, 0, 5162, 5163, 7, 5, 0, 0, 5163, 5164, 7, 18, 0, 0, 5164, 5165, 7, 6, 0, 0, 5165, 5166, 7, 10, 0, 0, 5166, 1010, 1, 0, 0, 0, 5167, 5168, 7, 22, 0, 0, 5168, 5169, 7, 9, 0, 0, 5169, 5170, 7, 10, 0, 0, 5170, 5171, 5, 95, 0, 0, 5171, 5172, 7, 14, 0, 0, 5172, 5173, 7, 19, 0, 0, 5173, 5174, 7, 6, 0, 0, 5174, 5175, 7, 22, 0, 0, 5175, 5176, 7, 15, 0, 0, 5176, 5177, 7, 7, 0, 0, 5177, 1012, 1, 0, 0, 0, 5178, 5179, 7, 5, 0, 0, 5179, 5180, 7, 6, 0, 0, 5180, 5181, 7, 17, 0, 0, 5181, 5182, 7, 5, 0, 0, 5182, 5183, 7, 9, 0, 0, 5183, 1014, 1, 0, 0, 0, 5184, 5185, 7, 14, 0, 0, 5185, 5186, 7, 19, 0, 0, 5186, 5187, 7, 7, 0, 0, 5187, 5188, 7, 9, 0, 0, 5188, 5189, 7, 16, 0, 0, 5189, 5190, 7, 5, 0, 0, 5190, 5191, 7, 7, 0, 0, 5191, 5192, 7, 16, 0, 0, 5192, 1016, 1, 0, 0, 0, 5193, 5194, 7, 24, 0, 0, 5194, 5195, 7, 10, 0, 0, 5195, 5196, 7, 13, 0, 0, 5196, 5197, 7, 25, 0, 0, 5197, 5198, 7, 19, 0, 0, 5198, 5199, 7, 13, 0, 0, 5199, 5200, 7, 15, 0, 0, 5200, 1018, 1, 0, 0, 0, 5201, 5202, 7, 23, 0, 0, 5202, 5203, 7, 10, 0, 0, 5203, 5204, 7, 16, 0, 0, 5204, 1020, 1, 0, 0, 0, 5205, 5206, 7, 12, 0, 0, 5206, 5207, 7, 17, 0, 0, 5207, 5208, 7, 5, 0, 0, 5208, 5209, 7, 23, 0, 0, 5209, 5210, 7, 7, 0, 0, 5210, 5211, 7, 19, 0, 0, 5211, 5212, 7, 9, 0, 0, 5212, 5213, 7, 16, 0, 0, 5213, 5214, 7, 17, 0, 0, 5214, 5215, 7, 14, 0, 0, 5215, 5216, 7, 9, 0, 0, 5216, 1022, 1, 0, 0, 0, 5217, 5218, 7, 9, 0, 0, 5218, 5219, 7, 16, 0, 0, 5219, 5220, 7, 5, 0, 0, 5220, 5221, 7, 14, 0, 0, 5221, 5222, 7, 21, 0, 0, 5222, 5223, 7, 10, 0, 0, 5223, 5224, 7, 12, 0, 0, 5224, 1024, 1, 0, 0, 0, 5225, 5226, 7, 10, 0, 0, 5226, 5227, 7, 6, 0, 0, 5227, 5228, 7, 9, 0, 0, 5228, 5229, 7, 17, 0, 0, 5229, 5230, 7, 25, 0, 0, 5230, 1026, 1, 0, 0, 0, 5231, 5232, 7, 28, 0, 0, 5232, 5233, 7, 20, 0, 0, 5233, 5234, 7, 17, 0, 0, 5234, 5235, 7, 6, 0, 0, 5235, 5236, 7, 10, 0, 0, 5236, 1028, 1, 0, 0, 0, 5237, 5238, 7, 13, 0, 0, 5238, 5239, 7, 10, 0, 0, 5239, 5240, 7, 27, 0, 0, 5240, 5241, 7, 10, 0, 0, 5241, 5242, 7, 13, 0, 0, 5242, 5243, 7, 9, 0, 0, 5243, 5244, 7, 10, 0, 0, 5244, 1030, 1, 0, 0, 0, 5245, 5246, 7, 25, 0, 0, 5246, 5247, 7, 19, 0, 0, 5247, 5248, 7, 13, 0, 0, 5248, 5249, 7, 10, 0, 0, 5249, 5250, 7, 5, 0, 0, 5250, 5251, 7, 14, 0, 0, 5251, 5252, 7, 20, 0, 0, 5252, 1032, 1, 0, 0, 0, 5253, 5254, 7, 9, 0, 0, 5254, 5255, 7, 6, 0, 0, 5255, 5256, 7, 17, 0, 0, 5256, 5257, 7, 14, 0, 0, 5257, 5258, 7, 10, 0, 0, 5258, 1034, 1, 0, 0, 0, 5259, 5260, 7, 10, 0, 0, 5260, 5261, 7, 26, 0, 0, 5261, 5262, 7, 17, 0, 0, 5262, 5263, 7, 16, 0, 0, 5263, 1036, 1, 0, 0, 0, 5264, 5265, 7, 13, 0, 0, 5265, 5266, 7, 10, 0, 0, 5266, 5267, 7, 16, 0, 0, 5267, 5268, 7, 22, 0, 0, 5268, 5269, 7, 13, 0, 0, 5269, 5270, 7, 7, 0, 0, 5270, 1038, 1, 0, 0, 0, 5271, 5272, 7, 29, 0, 0, 5272, 5273, 7, 22, 0, 0, 5273, 5274, 7, 10, 0, 0, 5274, 5275, 7, 13, 0, 0, 5275, 5276, 7, 8, 0, 0, 5276, 1040, 1, 0, 0, 0, 5277, 5278, 7, 13, 0, 0, 5278, 5279, 7, 5, 0, 0, 5279, 5280, 7, 17, 0, 0, 5280, 5281, 7, 9, 0, 0, 5281, 5282, 7, 10, 0, 0, 5282, 1042, 1, 0, 0, 0, 5283, 5284, 7, 9, 0, 0, 5284, 5285, 7, 29, 0, 0, 5285, 5286, 7, 6, 0, 0, 5286, 5287, 7, 9, 0, 0, 5287, 5288, 7, 16, 0, 0, 5288, 5289, 7, 5, 0, 0, 5289, 5290, 7, 16, 0, 0, 5290, 5291, 7, 10, 0, 0, 5291, 1044, 1, 0, 0, 0, 5292, 5293, 7, 12, 0, 0, 5293, 5294, 7, 10, 0, 0, 5294, 5295, 7, 18, 0, 0, 5295, 5296, 7, 22, 0, 0, 5296, 5297, 7, 23, 0, 0, 5297, 1046, 1, 0, 0, 0, 5298, 5299, 7, 6, 0, 0, 5299, 5300, 7, 19, 0, 0, 5300, 5301, 7, 23, 0, 0, 5301, 1048, 1, 0, 0, 0, 5302, 5303, 7, 17, 0, 0, 5303, 5304, 7, 7, 0, 0, 5304, 5305, 7, 25, 0, 0, 5305, 5306, 7, 19, 0, 0, 5306, 1050, 1, 0, 0, 0, 5307, 5308, 7, 7, 0, 0, 5308, 5309, 7, 19, 0, 0, 5309, 5310, 7, 16, 0, 0, 5310, 5311, 7, 17, 0, 0, 5311, 5312, 7, 14, 0, 0, 5312, 5313, 7, 10, 0, 0, 5313, 1052, 1, 0, 0, 0, 5314, 5315, 7, 28, 0, 0, 5315, 5316, 7, 5, 0, 0, 5316, 5317, 7, 13, 0, 0, 5317, 5318, 7, 7, 0, 0, 5318, 5319, 7, 17, 0, 0, 5319, 5320, 7, 7, 0, 0, 5320, 5321, 7, 23, 0, 0, 5321, 1054, 1, 0, 0, 0, 5322, 5323, 7, 10, 0, 0, 5323, 5324, 7, 26, 0, 0, 5324, 5325, 7, 14, 0, 0, 5325, 5326, 7, 10, 0, 0, 5326, 5327, 7, 24, 0, 0, 5327, 5328, 7, 16, 0, 0, 5328, 5329, 7, 17, 0, 0, 5329, 5330, 7, 19, 0, 0, 5330, 5331, 7, 7, 0, 0, 5331, 1056, 1, 0, 0, 0, 5332, 5333, 7, 5, 0, 0, 5333, 5334, 7, 9, 0, 0, 5334, 5335, 7, 9, 0, 0, 5335, 5336, 7, 10, 0, 0, 5336, 5337, 7, 13, 0, 0, 5337, 5338, 7, 16, 0, 0, 5338, 1058, 1, 0, 0, 0, 5339, 5340, 7, 6, 0, 0, 5340, 5341, 7, 19, 0, 0, 5341, 5342, 7, 19, 0, 0, 5342, 5343, 7, 24, 0, 0, 5343, 1060, 1, 0, 0, 0, 5344, 5345, 7, 19, 0, 0, 5345, 5346, 7, 24, 0, 0, 5346, 5347, 7, 10, 0, 0, 5347, 5348, 7, 7, 0, 0, 5348, 1062, 1, 0, 0, 0, 5349, 5350, 7, 5, 0, 0, 5350, 5351, 7, 18, 0, 0, 5351, 5352, 7, 9, 0, 0, 5352, 1064, 1, 0, 0, 0, 5353, 5354, 7, 14, 0, 0, 5354, 5355, 7, 18, 0, 0, 5355, 5356, 7, 13, 0, 0, 5356, 5357, 7, 16, 0, 0, 5357, 1066, 1, 0, 0, 0, 5358, 5359, 7, 14, 0, 0, 5359, 5360, 7, 10, 0, 0, 5360, 5361, 7, 17, 0, 0, 5361, 5362, 7, 6, 0, 0, 5362, 1068, 1, 0, 0, 0, 5363, 5364, 7, 14, 0, 0, 5364, 5365, 7, 10, 0, 0, 5365, 5366, 7, 17, 0, 0, 5366, 5367, 7, 6, 0, 0, 5367, 5368, 7, 17, 0, 0, 5368, 5369, 7, 7, 0, 0, 5369, 5370, 7, 23, 0, 0, 5370, 1070, 1, 0, 0, 0, 5371, 5372, 7, 12, 0, 0, 5372, 5373, 7, 10, 0, 0, 5373, 5374, 7, 23, 0, 0, 5374, 5375, 7, 13, 0, 0, 5375, 5376, 7, 10, 0, 0, 5376, 5377, 7, 10, 0, 0, 5377, 5378, 7, 9, 0, 0, 5378, 1072, 1, 0, 0, 0, 5379, 5380, 7, 12, 0, 0, 5380, 5381, 7, 17, 0, 0, 5381, 5382, 7, 27, 0, 0, 5382, 1074, 1, 0, 0, 0, 5383, 5384, 7, 10, 0, 0, 5384, 5385, 7, 26, 0, 0, 5385, 5386, 7, 24, 0, 0, 5386, 1076, 1, 0, 0, 0, 5387, 5388, 7, 25, 0, 0, 5388, 5389, 7, 5, 0, 0, 5389, 5390, 7, 14, 0, 0, 5390, 5391, 7, 16, 0, 0, 5391, 5392, 7, 19, 0, 0, 5392, 5393, 7, 13, 0, 0, 5393, 5394, 7, 17, 0, 0, 5394, 5395, 7, 5, 0, 0, 5395, 5396, 7, 6, 0, 0, 5396, 1078, 1, 0, 0, 0, 5397, 5398, 7, 25, 0, 0, 5398, 5399, 7, 6, 0, 0, 5399, 5400, 7, 19, 0, 0, 5400, 5401, 7, 19, 0, 0, 5401, 5402, 7, 13, 0, 0, 5402, 1080, 1, 0, 0, 0, 5403, 5404, 7, 23, 0, 0, 5404, 5405, 7, 14, 0, 0, 5405, 5406, 7, 12, 0, 0, 5406, 1082, 1, 0, 0, 0, 5407, 5408, 7, 6, 0, 0, 5408, 5409, 7, 14, 0, 0, 5409, 5410, 7, 15, 0, 0, 5410, 1084, 1, 0, 0, 0, 5411, 5412, 7, 6, 0, 0, 5412, 5413, 7, 7, 0, 0, 5413, 1086, 1, 0, 0, 0, 5414, 5415, 7, 6, 0, 0, 5415, 5416, 7, 19, 0, 0, 5416, 5417, 7, 23, 0, 0, 5417, 5418, 5, 49, 0, 0, 5418, 5419, 5, 48, 0, 0, 5419, 1088, 1, 0, 0, 0, 5420, 5421, 7, 15, 0, 0, 5421, 5422, 7, 17, 0, 0, 5422, 5423, 7, 7, 0, 0, 5423, 5424, 5, 95, 0, 0, 5424, 5425, 7, 9, 0, 0, 5425, 5426, 7, 14, 0, 0, 5426, 5427, 7, 5, 0, 0, 5427, 5428, 7, 6, 0, 0, 5428, 5429, 7, 10, 0, 0, 5429, 1090, 1, 0, 0, 0, 5430, 5431, 7, 15, 0, 0, 5431, 5432, 7, 19, 0, 0, 5432, 5433, 7, 12, 0, 0, 5433, 1092, 1, 0, 0, 0, 5434, 5435, 7, 24, 0, 0, 5435, 5436, 7, 17, 0, 0, 5436, 1094, 1, 0, 0, 0, 5437, 5438, 7, 24, 0, 0, 5438, 5439, 7, 19, 0, 0, 5439, 5440, 7, 28, 0, 0, 5440, 5441, 7, 10, 0, 0, 5441, 5442, 7, 13, 0, 0, 5442, 1096, 1, 0, 0, 0, 5443, 5444, 7, 13, 0, 0, 5444, 5445, 7, 5, 0, 0, 5445, 5446, 7, 12, 0, 0, 5446, 5447, 7, 17, 0, 0, 5447, 5448, 7, 5, 0, 0, 5448, 5449, 7, 7, 0, 0, 5449, 5450, 7, 9, 0, 0, 5450, 1098, 1, 0, 0, 0, 5451, 5452, 7, 13, 0, 0, 5452, 5453, 7, 19, 0, 0, 5453, 5454, 7, 22, 0, 0, 5454, 5455, 7, 7, 0, 0, 5455, 5456, 7, 12, 0, 0, 5456, 1100, 1, 0, 0, 0, 5457, 5458, 7, 9, 0, 0, 5458, 5459, 7, 14, 0, 0, 5459, 5460, 7, 5, 0, 0, 5460, 5461, 7, 6, 0, 0, 5461, 5462, 7, 10, 0, 0, 5462, 1102, 1, 0, 0, 0, 5463, 5464, 7, 9, 0, 0, 5464, 5465, 7, 17, 0, 0, 5465, 5466, 7, 23, 0, 0, 5466, 5467, 7, 7, 0, 0, 5467, 1104, 1, 0, 0, 0, 5468, 5469, 7, 9, 0, 0, 5469, 5470, 7, 29, 0, 0, 5470, 5471, 7, 13, 0, 0, 5471, 5472, 7, 16, 0, 0, 5472, 1106, 1, 0, 0, 0, 5473, 5474, 7, 16, 0, 0, 5474, 5475, 7, 13, 0, 0, 5475, 5476, 7, 17, 0, 0, 5476, 5477, 7, 15, 0, 0, 5477, 5478, 5, 95, 0, 0, 5478, 5479, 7, 9, 0, 0, 5479, 5480, 7, 14, 0, 0, 5480, 5481, 7, 5, 0, 0, 5481, 5482, 7, 6, 0, 0, 5482, 5483, 7, 10, 0, 0, 5483, 1108, 1, 0, 0, 0, 5484, 5485, 7, 16, 0, 0, 5485, 5486, 7, 13, 0, 0, 5486, 5487, 7, 22, 0, 0, 5487, 5488, 7, 7, 0, 0, 5488, 5489, 7, 14, 0, 0, 5489, 1110, 1, 0, 0, 0, 5490, 5491, 7, 28, 0, 0, 5491, 5492, 7, 17, 0, 0, 5492, 5493, 7, 12, 0, 0, 5493, 5494, 7, 16, 0, 0, 5494, 5495, 7, 20, 0, 0, 5495, 5496, 5, 95, 0, 0, 5496, 5497, 7, 18, 0, 0, 5497, 5498, 7, 22, 0, 0, 5498, 5499, 7, 14, 0, 0, 5499, 5500, 7, 21, 0, 0, 5500, 5501, 7, 10, 0, 0, 5501, 5502, 7, 16, 0, 0, 5502, 1112, 1, 0, 0, 0, 5503, 5504, 7, 13, 0, 0, 5504, 5505, 7, 5, 0, 0, 5505, 5506, 7, 7, 0, 0, 5506, 5507, 7, 12, 0, 0, 5507, 5508, 7, 19, 0, 0, 5508, 5509, 7, 15, 0, 0, 5509, 1114, 1, 0, 0, 0, 5510, 5511, 7, 9, 0, 0, 5511, 5512, 7, 10, 0, 0, 5512, 5513, 7, 16, 0, 0, 5513, 5514, 7, 9, 0, 0, 5514, 5515, 7, 10, 0, 0, 5515, 5516, 7, 10, 0, 0, 5516, 5517, 7, 12, 0, 0, 5517, 1116, 1, 0, 0, 0, 5518, 5519, 7, 5, 0, 0, 5519, 5520, 7, 14, 0, 0, 5520, 5521, 7, 19, 0, 0, 5521, 5522, 7, 9, 0, 0, 5522, 1118, 1, 0, 0, 0, 5523, 5524, 7, 5, 0, 0, 5524, 5525, 7, 14, 0, 0, 5525, 5526, 7, 19, 0, 0, 5526, 5527, 7, 9, 0, 0, 5527, 5528, 7, 12, 0, 0, 5528, 1120, 1, 0, 0, 0, 5529, 5530, 7, 5, 0, 0, 5530, 5531, 7, 9, 0, 0, 5531, 5532, 7, 17, 0, 0, 5532, 5533, 7, 7, 0, 0, 5533, 1122, 1, 0, 0, 0, 5534, 5535, 7, 5, 0, 0, 5535, 5536, 7, 9, 0, 0, 5536, 5537, 7, 17, 0, 0, 5537, 5538, 7, 7, 0, 0, 5538, 5539, 7, 12, 0, 0, 5539, 1124, 1, 0, 0, 0, 5540, 5541, 7, 5, 0, 0, 5541, 5542, 7, 16, 0, 0, 5542, 5543, 7, 5, 0, 0, 5543, 5544, 7, 7, 0, 0, 5544, 1126, 1, 0, 0, 0, 5545, 5546, 7, 5, 0, 0, 5546, 5547, 7, 16, 0, 0, 5547, 5548, 7, 5, 0, 0, 5548, 5549, 7, 7, 0, 0, 5549, 5550, 7, 12, 0, 0, 5550, 1128, 1, 0, 0, 0, 5551, 5552, 7, 5, 0, 0, 5552, 5553, 7, 16, 0, 0, 5553, 5554, 7, 5, 0, 0, 5554, 5555, 7, 7, 0, 0, 5555, 5556, 5, 50, 0, 0, 5556, 1130, 1, 0, 0, 0, 5557, 5558, 7, 5, 0, 0, 5558, 5559, 7, 16, 0, 0, 5559, 5560, 7, 5, 0, 0, 5560, 5561, 7, 7, 0, 0, 5561, 5562, 5, 50, 0, 0, 5562, 5563, 7, 12, 0, 0, 5563, 1132, 1, 0, 0, 0, 5564, 5565, 7, 14, 0, 0, 5565, 5566, 7, 19, 0, 0, 5566, 5567, 7, 9, 0, 0, 5567, 1134, 1, 0, 0, 0, 5568, 5569, 7, 14, 0, 0, 5569, 5570, 7, 19, 0, 0, 5570, 5571, 7, 9, 0, 0, 5571, 5572, 7, 12, 0, 0, 5572, 1136, 1, 0, 0, 0, 5573, 5574, 7, 14, 0, 0, 5574, 5575, 7, 19, 0, 0, 5575, 5576, 7, 16, 0, 0, 5576, 1138, 1, 0, 0, 0, 5577, 5578, 7, 14, 0, 0, 5578, 5579, 7, 19, 0, 0, 5579, 5580, 7, 16, 0, 0, 5580, 5581, 7, 12, 0, 0, 5581, 1140, 1, 0, 0, 0, 5582, 5583, 7, 9, 0, 0, 5583, 5584, 7, 17, 0, 0, 5584, 5585, 7, 7, 0, 0, 5585, 1142, 1, 0, 0, 0, 5586, 5587, 7, 9, 0, 0, 5587, 5588, 7, 17, 0, 0, 5588, 5589, 7, 7, 0, 0, 5589, 5590, 7, 12, 0, 0, 5590, 1144, 1, 0, 0, 0, 5591, 5592, 7, 16, 0, 0, 5592, 5593, 7, 5, 0, 0, 5593, 5594, 7, 7, 0, 0, 5594, 1146, 1, 0, 0, 0, 5595, 5596, 7, 16, 0, 0, 5596, 5597, 7, 5, 0, 0, 5597, 5598, 7, 7, 0, 0, 5598, 5599, 7, 12, 0, 0, 5599, 1148, 1, 0, 0, 0, 5600, 5601, 7, 9, 0, 0, 5601, 5602, 7, 17, 0, 0, 5602, 5603, 7, 7, 0, 0, 5603, 5604, 7, 20, 0, 0, 5604, 1150, 1, 0, 0, 0, 5605, 5606, 7, 14, 0, 0, 5606, 5607, 7, 19, 0, 0, 5607, 5608, 7, 9, 0, 0, 5608, 5609, 7, 20, 0, 0, 5609, 1152, 1, 0, 0, 0, 5610, 5611, 7, 16, 0, 0, 5611, 5612, 7, 5, 0, 0, 5612, 5613, 7, 7, 0, 0, 5613, 5614, 7, 20, 0, 0, 5614, 1154, 1, 0, 0, 0, 5615, 5616, 7, 5, 0, 0, 5616, 5617, 7, 9, 0, 0, 5617, 5618, 7, 17, 0, 0, 5618, 5619, 7, 7, 0, 0, 5619, 5620, 7, 20, 0, 0, 5620, 1156, 1, 0, 0, 0, 5621, 5622, 7, 5, 0, 0, 5622, 5623, 7, 14, 0, 0, 5623, 5624, 7, 19, 0, 0, 5624, 5625, 7, 9, 0, 0, 5625, 5626, 7, 20, 0, 0, 5626, 1158, 1, 0, 0, 0, 5627, 5628, 7, 5, 0, 0, 5628, 5629, 7, 16, 0, 0, 5629, 5630, 7, 5, 0, 0, 5630, 5631, 7, 7, 0, 0, 5631, 5632, 7, 20, 0, 0, 5632, 1160, 1, 0, 0, 0, 5633, 5634, 7, 18, 0, 0, 5634, 5635, 7, 17, 0, 0, 5635, 5636, 7, 16, 0, 0, 5636, 5637, 5, 95, 0, 0, 5637, 5638, 7, 6, 0, 0, 5638, 5639, 7, 10, 0, 0, 5639, 5640, 7, 7, 0, 0, 5640, 5641, 7, 23, 0, 0, 5641, 5642, 7, 16, 0, 0, 5642, 5643, 7, 20, 0, 0, 5643, 1162, 1, 0, 0, 0, 5644, 5645, 7, 14, 0, 0, 5645, 5646, 7, 20, 0, 0, 5646, 5647, 7, 5, 0, 0, 5647, 5648, 7, 13, 0, 0, 5648, 5649, 5, 95, 0, 0, 5649, 5650, 7, 6, 0, 0, 5650, 5651, 7, 10, 0, 0, 5651, 5652, 7, 7, 0, 0, 5652, 5653, 7, 23, 0, 0, 5653, 5654, 7, 16, 0, 0, 5654, 5655, 7, 20, 0, 0, 5655, 1164, 1, 0, 0, 0, 5656, 5657, 7, 14, 0, 0, 5657, 5658, 7, 20, 0, 0, 5658, 5659, 7, 5, 0, 0, 5659, 5660, 7, 13, 0, 0, 5660, 5661, 7, 5, 0, 0, 5661, 5662, 7, 14, 0, 0, 5662, 5663, 7, 16, 0, 0, 5663, 5664, 7, 10, 0, 0, 5664, 5665, 7, 13, 0, 0, 5665, 5666, 5, 95, 0, 0, 5666, 5667, 7, 6, 0, 0, 5667, 5668, 7, 10, 0, 0, 5668, 5669, 7, 7, 0, 0, 5669, 5670, 7, 23, 0, 0, 5670, 5671, 7, 16, 0, 0, 5671, 5672, 7, 20, 0, 0, 5672, 1166, 1, 0, 0, 0, 5673, 5674, 7, 6, 0, 0, 5674, 5675, 7, 19, 0, 0, 5675, 5676, 7, 28, 0, 0, 5676, 5677, 7, 10, 0, 0, 5677, 5678, 7, 13, 0, 0, 5678, 1168, 1, 0, 0, 0, 5679, 5680, 7, 19, 0, 0, 5680, 5681, 7, 14, 0, 0, 5681, 5682, 7, 16, 0, 0, 5682, 5683, 7, 10, 0, 0, 5683, 5684, 7, 16, 0, 0, 5684, 5685, 5, 95, 0, 0, 5685, 5686, 7, 6, 0, 0, 5686, 5687, 7, 10, 0, 0, 5687, 5688, 7, 7, 0, 0, 5688, 5689, 7, 23, 0, 0, 5689, 5690, 7, 16, 0, 0, 5690, 5691, 7, 20, 0, 0, 5691, 1170, 1, 0, 0, 0, 5692, 5693, 7, 22, 0, 0, 5693, 5694, 7, 24, 0, 0, 5694, 5695, 7, 24, 0, 0, 5695, 5696, 7, 10, 0, 0, 5696, 5697, 7, 13, 0, 0, 5697, 1172, 1, 0, 0, 0, 5698, 5699, 7, 5, 0, 0, 5699, 5700, 7, 9, 0, 0, 5700, 5701, 7, 14, 0, 0, 5701, 5702, 7, 17, 0, 0, 5702, 5703, 7, 17, 0, 0, 5703, 1174, 1, 0, 0, 0, 5704, 5705, 7, 18, 0, 0, 5705, 5706, 7, 16, 0, 0, 5706, 5707, 7, 13, 0, 0, 5707, 5708, 7, 17, 0, 0, 5708, 5709, 7, 15, 0, 0, 5709, 1176, 1, 0, 0, 0, 5710, 5711, 7, 14, 0, 0, 5711, 5712, 7, 20, 0, 0, 5712, 5713, 7, 13, 0, 0, 5713, 1178, 1, 0, 0, 0, 5714, 5715, 7, 14, 0, 0, 5715, 5716, 7, 19, 0, 0, 5716, 5717, 7, 7, 0, 0, 5717, 5718, 7, 14, 0, 0, 5718, 5719, 7, 5, 0, 0, 5719, 5720, 7, 16, 0, 0, 5720, 1180, 1, 0, 0, 0, 5721, 5722, 7, 14, 0, 0, 5722, 5723, 7, 19, 0, 0, 5723, 5724, 7, 7, 0, 0, 5724, 5725, 7, 14, 0, 0, 5725, 5726, 7, 5, 0, 0, 5726, 5727, 7, 16, 0, 0, 5727, 5728, 5, 95, 0, 0, 5728, 5729, 7, 28, 0, 0, 5729, 5730, 7, 9, 0, 0, 5730, 1182, 1, 0, 0, 0, 5731, 5732, 7, 25, 0, 0, 5732, 5733, 7, 19, 0, 0, 5733, 5734, 7, 13, 0, 0, 5734, 5735, 7, 15, 0, 0, 5735, 5736, 7, 5, 0, 0, 5736, 5737, 7, 16, 0, 0, 5737, 1184, 1, 0, 0, 0, 5738, 5739, 7, 17, 0, 0, 5739, 5740, 7, 7, 0, 0, 5740, 5741, 7, 17, 0, 0, 5741, 5742, 7, 16, 0, 0, 5742, 5743, 7, 14, 0, 0, 5743, 5744, 7, 5, 0, 0, 5744, 5745, 7, 24, 0, 0, 5745, 1186, 1, 0, 0, 0, 5746, 5747, 7, 6, 0, 0, 5747, 5748, 7, 10, 0, 0, 5748, 5749, 7, 7, 0, 0, 5749, 5750, 7, 23, 0, 0, 5750, 5751, 7, 16, 0, 0, 5751, 5752, 7, 20, 0, 0, 5752, 1188, 1, 0, 0, 0, 5753, 5754, 7, 6, 0, 0, 5754, 5755, 7, 24, 0, 0, 5755, 5756, 7, 5, 0, 0, 5756, 5757, 7, 12, 0, 0, 5757, 1190, 1, 0, 0, 0, 5758, 5759, 7, 6, 0, 0, 5759, 5760, 7, 16, 0, 0, 5760, 5761, 7, 13, 0, 0, 5761, 5762, 7, 17, 0, 0, 5762, 5763, 7, 15, 0, 0, 5763, 1192, 1, 0, 0, 0, 5764, 5765, 7, 15, 0, 0, 5765, 5766, 7, 12, 0, 0, 5766, 5767, 5, 53, 0, 0, 5767, 1194, 1, 0, 0, 0, 5768, 5769, 7, 24, 0, 0, 5769, 5770, 7, 5, 0, 0, 5770, 5771, 7, 13, 0, 0, 5771, 5772, 7, 9, 0, 0, 5772, 5773, 7, 10, 0, 0, 5773, 5774, 5, 95, 0, 0, 5774, 5775, 7, 17, 0, 0, 5775, 5776, 7, 12, 0, 0, 5776, 5777, 7, 10, 0, 0, 5777, 5778, 7, 7, 0, 0, 5778, 5779, 7, 16, 0, 0, 5779, 1196, 1, 0, 0, 0, 5780, 5781, 7, 24, 0, 0, 5781, 5782, 7, 23, 0, 0, 5782, 5783, 5, 95, 0, 0, 5783, 5784, 7, 14, 0, 0, 5784, 5785, 7, 6, 0, 0, 5785, 5786, 7, 17, 0, 0, 5786, 5787, 7, 10, 0, 0, 5787, 5788, 7, 7, 0, 0, 5788, 5789, 7, 16, 0, 0, 5789, 5790, 5, 95, 0, 0, 5790, 5791, 7, 10, 0, 0, 5791, 5792, 7, 7, 0, 0, 5792, 5793, 7, 14, 0, 0, 5793, 5794, 7, 19, 0, 0, 5794, 5795, 7, 12, 0, 0, 5795, 5796, 7, 17, 0, 0, 5796, 5797, 7, 7, 0, 0, 5797, 5798, 7, 23, 0, 0, 5798, 1198, 1, 0, 0, 0, 5799, 5800, 7, 29, 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, 17, 0, 0, 5806, 5807, 7, 12, 0, 0, 5807, 5808, 7, 10, 0, 0, 5808, 5809, 7, 7, 0, 0, 5809, 5810, 7, 16, 0, 0, 5810, 1200, 1, 0, 0, 0, 5811, 5812, 7, 29, 0, 0, 5812, 5813, 7, 22, 0, 0, 5813, 5814, 7, 19, 0, 0, 5814, 5815, 7, 16, 0, 0, 5815, 5816, 7, 10, 0, 0, 5816, 5817, 5, 95, 0, 0, 5817, 5818, 7, 6, 0, 0, 5818, 5819, 7, 17, 0, 0, 5819, 5820, 7, 16, 0, 0, 5820, 5821, 7, 10, 0, 0, 5821, 5822, 7, 13, 0, 0, 5822, 5823, 7, 5, 0, 0, 5823, 5824, 7, 6, 0, 0, 5824, 1202, 1, 0, 0, 0, 5825, 5826, 7, 29, 0, 0, 5826, 5827, 7, 22, 0, 0, 5827, 5828, 7, 19, 0, 0, 5828, 5829, 7, 16, 0, 0, 5829, 5830, 7, 10, 0, 0, 5830, 5831, 5, 95, 0, 0, 5831, 5832, 7, 7, 0, 0, 5832, 5833, 7, 22, 0, 0, 5833, 5834, 7, 6, 0, 0, 5834, 5835, 7, 6, 0, 0, 5835, 5836, 7, 5, 0, 0, 5836, 5837, 7, 18, 0, 0, 5837, 5838, 7, 6, 0, 0, 5838, 5839, 7, 10, 0, 0, 5839, 1204, 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, 14, 0, 0, 5848, 5849, 7, 19, 0, 0, 5849, 5850, 7, 22, 0, 0, 5850, 5851, 7, 7, 0, 0, 5851, 5852, 7, 16, 0, 0, 5852, 1206, 1, 0, 0, 0, 5853, 5854, 7, 13, 0, 0, 5854, 5855, 7, 10, 0, 0, 5855, 5856, 7, 23, 0, 0, 5856, 5857, 7, 10, 0, 0, 5857, 5858, 7, 26, 0, 0, 5858, 5859, 7, 24, 0, 0, 5859, 5860, 5, 95, 0, 0, 5860, 5861, 7, 17, 0, 0, 5861, 5862, 7, 7, 0, 0, 5862, 5863, 7, 9, 0, 0, 5863, 5864, 7, 16, 0, 0, 5864, 5865, 7, 13, 0, 0, 5865, 1208, 1, 0, 0, 0, 5866, 5867, 7, 13, 0, 0, 5867, 5868, 7, 10, 0, 0, 5868, 5869, 7, 23, 0, 0, 5869, 5870, 7, 10, 0, 0, 5870, 5871, 7, 26, 0, 0, 5871, 5872, 7, 24, 0, 0, 5872, 5873, 5, 95, 0, 0, 5873, 5874, 7, 6, 0, 0, 5874, 5875, 7, 17, 0, 0, 5875, 5876, 7, 21, 0, 0, 5876, 5877, 7, 10, 0, 0, 5877, 1210, 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, 15, 0, 0, 5886, 5887, 7, 5, 0, 0, 5887, 5888, 7, 16, 0, 0, 5888, 5889, 7, 14, 0, 0, 5889, 5890, 7, 20, 0, 0, 5890, 1212, 1, 0, 0, 0, 5891, 5892, 7, 13, 0, 0, 5892, 5893, 7, 10, 0, 0, 5893, 5894, 7, 23, 0, 0, 5894, 5895, 7, 10, 0, 0, 5895, 5896, 7, 26, 0, 0, 5896, 5897, 7, 24, 0, 0, 5897, 5898, 5, 95, 0, 0, 5898, 5899, 7, 15, 0, 0, 5899, 5900, 7, 5, 0, 0, 5900, 5901, 7, 16, 0, 0, 5901, 5902, 7, 14, 0, 0, 5902, 5903, 7, 20, 0, 0, 5903, 5904, 7, 10, 0, 0, 5904, 5905, 7, 9, 0, 0, 5905, 1214, 1, 0, 0, 0, 5906, 5907, 7, 13, 0, 0, 5907, 5908, 7, 10, 0, 0, 5908, 5909, 7, 23, 0, 0, 5909, 5910, 7, 10, 0, 0, 5910, 5911, 7, 26, 0, 0, 5911, 5912, 7, 24, 0, 0, 5912, 5913, 5, 95, 0, 0, 5913, 5914, 7, 13, 0, 0, 5914, 5915, 7, 10, 0, 0, 5915, 5916, 7, 24, 0, 0, 5916, 5917, 7, 6, 0, 0, 5917, 5918, 7, 5, 0, 0, 5918, 5919, 7, 14, 0, 0, 5919, 5920, 7, 10, 0, 0, 5920, 1216, 1, 0, 0, 0, 5921, 5922, 7, 13, 0, 0, 5922, 5923, 7, 10, 0, 0, 5923, 5924, 7, 23, 0, 0, 5924, 5925, 7, 10, 0, 0, 5925, 5926, 7, 26, 0, 0, 5926, 5927, 7, 24, 0, 0, 5927, 5928, 5, 95, 0, 0, 5928, 5929, 7, 9, 0, 0, 5929, 5930, 7, 24, 0, 0, 5930, 5931, 7, 6, 0, 0, 5931, 5932, 7, 17, 0, 0, 5932, 5933, 7, 16, 0, 0, 5933, 5934, 5, 95, 0, 0, 5934, 5935, 7, 16, 0, 0, 5935, 5936, 7, 19, 0, 0, 5936, 5937, 5, 95, 0, 0, 5937, 5938, 7, 5, 0, 0, 5938, 5939, 7, 13, 0, 0, 5939, 5940, 7, 13, 0, 0, 5940, 5941, 7, 5, 0, 0, 5941, 5942, 7, 8, 0, 0, 5942, 1218, 1, 0, 0, 0, 5943, 5944, 7, 13, 0, 0, 5944, 5945, 7, 10, 0, 0, 5945, 5946, 7, 23, 0, 0, 5946, 5947, 7, 10, 0, 0, 5947, 5948, 7, 26, 0, 0, 5948, 5949, 7, 24, 0, 0, 5949, 5950, 5, 95, 0, 0, 5950, 5951, 7, 9, 0, 0, 5951, 5952, 7, 24, 0, 0, 5952, 5953, 7, 6, 0, 0, 5953, 5954, 7, 17, 0, 0, 5954, 5955, 7, 16, 0, 0, 5955, 5956, 5, 95, 0, 0, 5956, 5957, 7, 16, 0, 0, 5957, 5958, 7, 19, 0, 0, 5958, 5959, 5, 95, 0, 0, 5959, 5960, 7, 16, 0, 0, 5960, 5961, 7, 5, 0, 0, 5961, 5962, 7, 18, 0, 0, 5962, 5963, 7, 6, 0, 0, 5963, 5964, 7, 10, 0, 0, 5964, 1220, 1, 0, 0, 0, 5965, 5966, 7, 13, 0, 0, 5966, 5967, 7, 10, 0, 0, 5967, 5968, 7, 23, 0, 0, 5968, 5969, 7, 10, 0, 0, 5969, 5970, 7, 26, 0, 0, 5970, 5971, 7, 24, 0, 0, 5971, 5972, 5, 95, 0, 0, 5972, 5973, 7, 9, 0, 0, 5973, 5974, 7, 22, 0, 0, 5974, 5975, 7, 18, 0, 0, 5975, 5976, 7, 9, 0, 0, 5976, 5977, 7, 16, 0, 0, 5977, 5978, 7, 13, 0, 0, 5978, 1222, 1, 0, 0, 0, 5979, 5980, 7, 13, 0, 0, 5980, 5981, 7, 10, 0, 0, 5981, 5982, 7, 24, 0, 0, 5982, 5983, 7, 10, 0, 0, 5983, 5984, 7, 5, 0, 0, 5984, 5985, 7, 16, 0, 0, 5985, 1224, 1, 0, 0, 0, 5986, 5987, 7, 13, 0, 0, 5987, 5988, 7, 24, 0, 0, 5988, 5989, 7, 5, 0, 0, 5989, 5990, 7, 12, 0, 0, 5990, 1226, 1, 0, 0, 0, 5991, 5992, 7, 13, 0, 0, 5992, 5993, 7, 16, 0, 0, 5993, 5994, 7, 13, 0, 0, 5994, 5995, 7, 17, 0, 0, 5995, 5996, 7, 15, 0, 0, 5996, 1228, 1, 0, 0, 0, 5997, 5998, 7, 9, 0, 0, 5998, 5999, 7, 24, 0, 0, 5999, 6000, 7, 6, 0, 0, 6000, 6001, 7, 17, 0, 0, 6001, 6002, 7, 16, 0, 0, 6002, 6003, 5, 95, 0, 0, 6003, 6004, 7, 24, 0, 0, 6004, 6005, 7, 5, 0, 0, 6005, 6006, 7, 13, 0, 0, 6006, 6007, 7, 16, 0, 0, 6007, 1230, 1, 0, 0, 0, 6008, 6009, 7, 9, 0, 0, 6009, 6010, 7, 16, 0, 0, 6010, 6011, 7, 5, 0, 0, 6011, 6012, 7, 13, 0, 0, 6012, 6013, 7, 16, 0, 0, 6013, 6014, 7, 9, 0, 0, 6014, 6015, 5, 95, 0, 0, 6015, 6016, 7, 28, 0, 0, 6016, 6017, 7, 17, 0, 0, 6017, 6018, 7, 16, 0, 0, 6018, 6019, 7, 20, 0, 0, 6019, 1232, 1, 0, 0, 0, 6020, 6021, 7, 9, 0, 0, 6021, 6022, 7, 16, 0, 0, 6022, 6023, 7, 13, 0, 0, 6023, 6024, 7, 17, 0, 0, 6024, 6025, 7, 7, 0, 0, 6025, 6026, 7, 23, 0, 0, 6026, 6027, 5, 95, 0, 0, 6027, 6028, 7, 16, 0, 0, 6028, 6029, 7, 19, 0, 0, 6029, 6030, 5, 95, 0, 0, 6030, 6031, 7, 5, 0, 0, 6031, 6032, 7, 13, 0, 0, 6032, 6033, 7, 13, 0, 0, 6033, 6034, 7, 5, 0, 0, 6034, 6035, 7, 8, 0, 0, 6035, 1234, 1, 0, 0, 0, 6036, 6037, 7, 9, 0, 0, 6037, 6038, 7, 16, 0, 0, 6038, 6039, 7, 13, 0, 0, 6039, 6040, 7, 17, 0, 0, 6040, 6041, 7, 7, 0, 0, 6041, 6042, 7, 23, 0, 0, 6042, 6043, 5, 95, 0, 0, 6043, 6044, 7, 16, 0, 0, 6044, 6045, 7, 19, 0, 0, 6045, 6046, 5, 95, 0, 0, 6046, 6047, 7, 16, 0, 0, 6047, 6048, 7, 5, 0, 0, 6048, 6049, 7, 18, 0, 0, 6049, 6050, 7, 6, 0, 0, 6050, 6051, 7, 10, 0, 0, 6051, 1236, 1, 0, 0, 0, 6052, 6053, 7, 9, 0, 0, 6053, 6054, 7, 16, 0, 0, 6054, 6055, 7, 13, 0, 0, 6055, 6056, 7, 24, 0, 0, 6056, 6057, 7, 19, 0, 0, 6057, 6058, 7, 9, 0, 0, 6058, 1238, 1, 0, 0, 0, 6059, 6060, 7, 9, 0, 0, 6060, 6061, 7, 22, 0, 0, 6061, 6062, 7, 18, 0, 0, 6062, 6063, 7, 9, 0, 0, 6063, 6064, 7, 16, 0, 0, 6064, 6065, 7, 13, 0, 0, 6065, 1240, 1, 0, 0, 0, 6066, 6067, 7, 16, 0, 0, 6067, 6068, 7, 19, 0, 0, 6068, 6069, 5, 95, 0, 0, 6069, 6070, 7, 5, 0, 0, 6070, 6071, 7, 9, 0, 0, 6071, 6072, 7, 14, 0, 0, 6072, 6073, 7, 17, 0, 0, 6073, 6074, 7, 17, 0, 0, 6074, 1242, 1, 0, 0, 0, 6075, 6076, 7, 16, 0, 0, 6076, 6077, 7, 19, 0, 0, 6077, 6078, 5, 95, 0, 0, 6078, 6079, 7, 20, 0, 0, 6079, 6080, 7, 10, 0, 0, 6080, 6081, 7, 26, 0, 0, 6081, 1244, 1, 0, 0, 0, 6082, 6083, 7, 16, 0, 0, 6083, 6084, 7, 13, 0, 0, 6084, 6085, 7, 5, 0, 0, 6085, 6086, 7, 7, 0, 0, 6086, 6087, 7, 9, 0, 0, 6087, 6088, 7, 6, 0, 0, 6088, 6089, 7, 5, 0, 0, 6089, 6090, 7, 16, 0, 0, 6090, 6091, 7, 10, 0, 0, 6091, 1246, 1, 0, 0, 0, 6092, 6093, 7, 22, 0, 0, 6093, 6094, 7, 7, 0, 0, 6094, 6095, 7, 17, 0, 0, 6095, 6096, 7, 9, 0, 0, 6096, 6097, 7, 16, 0, 0, 6097, 6098, 7, 13, 0, 0, 6098, 1248, 1, 0, 0, 0, 6099, 6100, 7, 5, 0, 0, 6100, 6101, 7, 23, 0, 0, 6101, 6102, 7, 10, 0, 0, 6102, 1250, 1, 0, 0, 0, 6103, 6104, 7, 14, 0, 0, 6104, 6105, 7, 6, 0, 0, 6105, 6106, 7, 19, 0, 0, 6106, 6107, 7, 14, 0, 0, 6107, 6108, 7, 21, 0, 0, 6108, 6109, 5, 95, 0, 0, 6109, 6110, 7, 16, 0, 0, 6110, 6111, 7, 17, 0, 0, 6111, 6112, 7, 15, 0, 0, 6112, 6113, 7, 10, 0, 0, 6113, 6114, 7, 9, 0, 0, 6114, 6115, 7, 16, 0, 0, 6115, 6116, 7, 5, 0, 0, 6116, 6117, 7, 15, 0, 0, 6117, 6118, 7, 24, 0, 0, 6118, 1252, 1, 0, 0, 0, 6119, 6120, 7, 12, 0, 0, 6120, 6121, 7, 5, 0, 0, 6121, 6122, 7, 16, 0, 0, 6122, 6123, 7, 10, 0, 0, 6123, 6124, 5, 95, 0, 0, 6124, 6125, 7, 18, 0, 0, 6125, 6126, 7, 17, 0, 0, 6126, 6127, 7, 7, 0, 0, 6127, 1254, 1, 0, 0, 0, 6128, 6129, 7, 12, 0, 0, 6129, 6130, 7, 5, 0, 0, 6130, 6131, 7, 16, 0, 0, 6131, 6132, 7, 10, 0, 0, 6132, 6133, 5, 95, 0, 0, 6133, 6134, 7, 24, 0, 0, 6134, 6135, 7, 5, 0, 0, 6135, 6136, 7, 13, 0, 0, 6136, 6137, 7, 16, 0, 0, 6137, 1256, 1, 0, 0, 0, 6138, 6139, 7, 12, 0, 0, 6139, 6140, 7, 5, 0, 0, 6140, 6141, 7, 16, 0, 0, 6141, 6142, 7, 10, 0, 0, 6142, 6143, 5, 95, 0, 0, 6143, 6144, 7, 16, 0, 0, 6144, 6145, 7, 13, 0, 0, 6145, 6146, 7, 22, 0, 0, 6146, 6147, 7, 7, 0, 0, 6147, 6148, 7, 14, 0, 0, 6148, 1258, 1, 0, 0, 0, 6149, 6150, 7, 17, 0, 0, 6150, 6151, 7, 9, 0, 0, 6151, 6152, 7, 25, 0, 0, 6152, 6153, 7, 17, 0, 0, 6153, 6154, 7, 7, 0, 0, 6154, 6155, 7, 17, 0, 0, 6155, 6156, 7, 16, 0, 0, 6156, 6157, 7, 10, 0, 0, 6157, 1260, 1, 0, 0, 0, 6158, 6159, 7, 30, 0, 0, 6159, 6160, 7, 22, 0, 0, 6160, 6161, 7, 9, 0, 0, 6161, 6162, 7, 16, 0, 0, 6162, 6163, 7, 17, 0, 0, 6163, 6164, 7, 25, 0, 0, 6164, 6165, 7, 8, 0, 0, 6165, 6166, 5, 95, 0, 0, 6166, 6167, 7, 12, 0, 0, 6167, 6168, 7, 5, 0, 0, 6168, 6169, 7, 8, 0, 0, 6169, 6170, 7, 9, 0, 0, 6170, 1262, 1, 0, 0, 0, 6171, 6172, 7, 30, 0, 0, 6172, 6173, 7, 22, 0, 0, 6173, 6174, 7, 9, 0, 0, 6174, 6175, 7, 16, 0, 0, 6175, 6176, 7, 17, 0, 0, 6176, 6177, 7, 25, 0, 0, 6177, 6178, 7, 8, 0, 0, 6178, 6179, 5, 95, 0, 0, 6179, 6180, 7, 20, 0, 0, 6180, 6181, 7, 19, 0, 0, 6181, 6182, 7, 22, 0, 0, 6182, 6183, 7, 13, 0, 0, 6183, 6184, 7, 9, 0, 0, 6184, 1264, 1, 0, 0, 0, 6185, 6186, 7, 30, 0, 0, 6186, 6187, 7, 22, 0, 0, 6187, 6188, 7, 9, 0, 0, 6188, 6189, 7, 16, 0, 0, 6189, 6190, 7, 17, 0, 0, 6190, 6191, 7, 25, 0, 0, 6191, 6192, 7, 8, 0, 0, 6192, 6193, 5, 95, 0, 0, 6193, 6194, 7, 17, 0, 0, 6194, 6195, 7, 7, 0, 0, 6195, 6196, 7, 16, 0, 0, 6196, 6197, 7, 10, 0, 0, 6197, 6198, 7, 13, 0, 0, 6198, 6199, 7, 27, 0, 0, 6199, 6200, 7, 5, 0, 0, 6200, 6201, 7, 6, 0, 0, 6201, 1266, 1, 0, 0, 0, 6202, 6203, 7, 15, 0, 0, 6203, 6204, 7, 5, 0, 0, 6204, 6205, 7, 21, 0, 0, 6205, 6206, 7, 10, 0, 0, 6206, 6207, 5, 95, 0, 0, 6207, 6208, 7, 12, 0, 0, 6208, 6209, 7, 5, 0, 0, 6209, 6210, 7, 16, 0, 0, 6210, 6211, 7, 10, 0, 0, 6211, 1268, 1, 0, 0, 0, 6212, 6213, 7, 15, 0, 0, 6213, 6214, 7, 5, 0, 0, 6214, 6215, 7, 21, 0, 0, 6215, 6216, 7, 10, 0, 0, 6216, 6217, 5, 95, 0, 0, 6217, 6218, 7, 17, 0, 0, 6218, 6219, 7, 7, 0, 0, 6219, 6220, 7, 16, 0, 0, 6220, 6221, 7, 10, 0, 0, 6221, 6222, 7, 13, 0, 0, 6222, 6223, 7, 27, 0, 0, 6223, 6224, 7, 5, 0, 0, 6224, 6225, 7, 6, 0, 0, 6225, 1270, 1, 0, 0, 0, 6226, 6227, 7, 15, 0, 0, 6227, 6228, 7, 5, 0, 0, 6228, 6229, 7, 21, 0, 0, 6229, 6230, 7, 10, 0, 0, 6230, 6231, 5, 95, 0, 0, 6231, 6232, 7, 16, 0, 0, 6232, 6233, 7, 17, 0, 0, 6233, 6234, 7, 15, 0, 0, 6234, 6235, 7, 10, 0, 0, 6235, 1272, 1, 0, 0, 0, 6236, 6237, 7, 15, 0, 0, 6237, 6238, 7, 5, 0, 0, 6238, 6239, 7, 21, 0, 0, 6239, 6240, 7, 10, 0, 0, 6240, 6241, 5, 95, 0, 0, 6241, 6242, 7, 16, 0, 0, 6242, 6243, 7, 17, 0, 0, 6243, 6244, 7, 15, 0, 0, 6244, 6245, 7, 10, 0, 0, 6245, 6246, 7, 9, 0, 0, 6246, 6247, 7, 16, 0, 0, 6247, 6248, 7, 5, 0, 0, 6248, 6249, 7, 15, 0, 0, 6249, 6250, 7, 24, 0, 0, 6250, 1274, 1, 0, 0, 0, 6251, 6252, 7, 15, 0, 0, 6252, 6253, 7, 5, 0, 0, 6253, 6254, 7, 21, 0, 0, 6254, 6255, 7, 10, 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, 6266, 7, 16, 0, 0, 6266, 6267, 7, 11, 0, 0, 6267, 1276, 1, 0, 0, 0, 6268, 6269, 7, 7, 0, 0, 6269, 6270, 7, 19, 0, 0, 6270, 6271, 7, 28, 0, 0, 6271, 1278, 1, 0, 0, 0, 6272, 6273, 7, 9, 0, 0, 6273, 6274, 7, 16, 0, 0, 6274, 6275, 7, 5, 0, 0, 6275, 6276, 7, 16, 0, 0, 6276, 6277, 7, 10, 0, 0, 6277, 6278, 7, 15, 0, 0, 6278, 6279, 7, 10, 0, 0, 6279, 6280, 7, 7, 0, 0, 6280, 6281, 7, 16, 0, 0, 6281, 6282, 5, 95, 0, 0, 6282, 6283, 7, 16, 0, 0, 6283, 6284, 7, 17, 0, 0, 6284, 6285, 7, 15, 0, 0, 6285, 6286, 7, 10, 0, 0, 6286, 6287, 7, 9, 0, 0, 6287, 6288, 7, 16, 0, 0, 6288, 6289, 7, 5, 0, 0, 6289, 6290, 7, 15, 0, 0, 6290, 6291, 7, 24, 0, 0, 6291, 1280, 1, 0, 0, 0, 6292, 6293, 7, 16, 0, 0, 6293, 6294, 7, 17, 0, 0, 6294, 6295, 7, 15, 0, 0, 6295, 6296, 7, 10, 0, 0, 6296, 6297, 7, 19, 0, 0, 6297, 6298, 7, 25, 0, 0, 6298, 6299, 7, 12, 0, 0, 6299, 6300, 7, 5, 0, 0, 6300, 6301, 7, 8, 0, 0, 6301, 1282, 1, 0, 0, 0, 6302, 6303, 7, 16, 0, 0, 6303, 6304, 7, 13, 0, 0, 6304, 6305, 7, 5, 0, 0, 6305, 6306, 7, 7, 0, 0, 6306, 6307, 7, 9, 0, 0, 6307, 6308, 7, 5, 0, 0, 6308, 6309, 7, 14, 0, 0, 6309, 6310, 7, 16, 0, 0, 6310, 6311, 7, 17, 0, 0, 6311, 6312, 7, 19, 0, 0, 6312, 6313, 7, 7, 0, 0, 6313, 6314, 5, 95, 0, 0, 6314, 6315, 7, 16, 0, 0, 6315, 6316, 7, 17, 0, 0, 6316, 6317, 7, 15, 0, 0, 6317, 6318, 7, 10, 0, 0, 6318, 6319, 7, 9, 0, 0, 6319, 6320, 7, 16, 0, 0, 6320, 6321, 7, 5, 0, 0, 6321, 6322, 7, 15, 0, 0, 6322, 6323, 7, 24, 0, 0, 6323, 1284, 1, 0, 0, 0, 6324, 6325, 7, 16, 0, 0, 6325, 6326, 7, 19, 0, 0, 6326, 6327, 5, 95, 0, 0, 6327, 6328, 7, 16, 0, 0, 6328, 6329, 7, 17, 0, 0, 6329, 6330, 7, 15, 0, 0, 6330, 6331, 7, 10, 0, 0, 6331, 6332, 7, 9, 0, 0, 6332, 6333, 7, 16, 0, 0, 6333, 6334, 7, 5, 0, 0, 6334, 6335, 7, 15, 0, 0, 6335, 6336, 7, 24, 0, 0, 6336, 1286, 1, 0, 0, 0, 6337, 6338, 7, 16, 0, 0, 6338, 6339, 7, 19, 0, 0, 6339, 6340, 5, 95, 0, 0, 6340, 6341, 7, 14, 0, 0, 6341, 6342, 7, 20, 0, 0, 6342, 6343, 7, 5, 0, 0, 6343, 6344, 7, 13, 0, 0, 6344, 1288, 1, 0, 0, 0, 6345, 6346, 7, 16, 0, 0, 6346, 6347, 7, 19, 0, 0, 6347, 6348, 5, 95, 0, 0, 6348, 6349, 7, 12, 0, 0, 6349, 6350, 7, 5, 0, 0, 6350, 6351, 7, 16, 0, 0, 6351, 6352, 7, 10, 0, 0, 6352, 1290, 1, 0, 0, 0, 6353, 6354, 7, 16, 0, 0, 6354, 6355, 7, 19, 0, 0, 6355, 6356, 5, 95, 0, 0, 6356, 6357, 7, 7, 0, 0, 6357, 6358, 7, 22, 0, 0, 6358, 6359, 7, 15, 0, 0, 6359, 6360, 7, 18, 0, 0, 6360, 6361, 7, 10, 0, 0, 6361, 6362, 7, 13, 0, 0, 6362, 1292, 1, 0, 0, 0, 6363, 6367, 3, 1295, 645, 0, 6364, 6366, 3, 1297, 646, 0, 6365, 6364, 1, 0, 0, 0, 6366, 6369, 1, 0, 0, 0, 6367, 6365, 1, 0, 0, 0, 6367, 6368, 1, 0, 0, 0, 6368, 1294, 1, 0, 0, 0, 6369, 6367, 1, 0, 0, 0, 6370, 6377, 7, 31, 0, 0, 6371, 6372, 7, 32, 0, 0, 6372, 6377, 4, 645, 6, 0, 6373, 6374, 7, 33, 0, 0, 6374, 6375, 7, 34, 0, 0, 6375, 6377, 4, 645, 7, 0, 6376, 6370, 1, 0, 0, 0, 6376, 6371, 1, 0, 0, 0, 6376, 6373, 1, 0, 0, 0, 6377, 1296, 1, 0, 0, 0, 6378, 6381, 3, 1299, 647, 0, 6379, 6381, 5, 36, 0, 0, 6380, 6378, 1, 0, 0, 0, 6380, 6379, 1, 0, 0, 0, 6381, 1298, 1, 0, 0, 0, 6382, 6385, 3, 1295, 645, 0, 6383, 6385, 7, 0, 0, 0, 6384, 6382, 1, 0, 0, 0, 6384, 6383, 1, 0, 0, 0, 6385, 1300, 1, 0, 0, 0, 6386, 6387, 3, 1303, 649, 0, 6387, 6388, 5, 34, 0, 0, 6388, 1302, 1, 0, 0, 0, 6389, 6395, 5, 34, 0, 0, 6390, 6391, 5, 34, 0, 0, 6391, 6394, 5, 34, 0, 0, 6392, 6394, 8, 35, 0, 0, 6393, 6390, 1, 0, 0, 0, 6393, 6392, 1, 0, 0, 0, 6394, 6397, 1, 0, 0, 0, 6395, 6393, 1, 0, 0, 0, 6395, 6396, 1, 0, 0, 0, 6396, 1304, 1, 0, 0, 0, 6397, 6395, 1, 0, 0, 0, 6398, 6399, 3, 1307, 651, 0, 6399, 6400, 5, 34, 0, 0, 6400, 1306, 1, 0, 0, 0, 6401, 6407, 5, 34, 0, 0, 6402, 6403, 5, 34, 0, 0, 6403, 6406, 5, 34, 0, 0, 6404, 6406, 8, 36, 0, 0, 6405, 6402, 1, 0, 0, 0, 6405, 6404, 1, 0, 0, 0, 6406, 6409, 1, 0, 0, 0, 6407, 6405, 1, 0, 0, 0, 6407, 6408, 1, 0, 0, 0, 6408, 1308, 1, 0, 0, 0, 6409, 6407, 1, 0, 0, 0, 6410, 6411, 7, 22, 0, 0, 6411, 6412, 5, 38, 0, 0, 6412, 6413, 3, 1301, 648, 0, 6413, 1310, 1, 0, 0, 0, 6414, 6415, 7, 22, 0, 0, 6415, 6416, 5, 38, 0, 0, 6416, 6417, 3, 1303, 649, 0, 6417, 1312, 1, 0, 0, 0, 6418, 6419, 7, 22, 0, 0, 6419, 6420, 5, 38, 0, 0, 6420, 6421, 3, 1305, 650, 0, 6421, 1314, 1, 0, 0, 0, 6422, 6423, 7, 22, 0, 0, 6423, 6424, 5, 38, 0, 0, 6424, 6425, 3, 1307, 651, 0, 6425, 1316, 1, 0, 0, 0, 6426, 6427, 3, 1319, 657, 0, 6427, 6428, 5, 39, 0, 0, 6428, 1318, 1, 0, 0, 0, 6429, 6435, 5, 39, 0, 0, 6430, 6431, 5, 39, 0, 0, 6431, 6434, 5, 39, 0, 0, 6432, 6434, 8, 37, 0, 0, 6433, 6430, 1, 0, 0, 0, 6433, 6432, 1, 0, 0, 0, 6434, 6437, 1, 0, 0, 0, 6435, 6433, 1, 0, 0, 0, 6435, 6436, 1, 0, 0, 0, 6436, 1320, 1, 0, 0, 0, 6437, 6435, 1, 0, 0, 0, 6438, 6439, 7, 10, 0, 0, 6439, 6440, 5, 39, 0, 0, 6440, 6441, 1, 0, 0, 0, 6441, 6442, 6, 658, 2, 0, 6442, 6443, 6, 658, 3, 0, 6443, 1322, 1, 0, 0, 0, 6444, 6445, 3, 1325, 660, 0, 6445, 6446, 5, 39, 0, 0, 6446, 1324, 1, 0, 0, 0, 6447, 6448, 7, 22, 0, 0, 6448, 6449, 5, 38, 0, 0, 6449, 6450, 3, 1319, 657, 0, 6450, 1326, 1, 0, 0, 0, 6451, 6453, 5, 36, 0, 0, 6452, 6454, 3, 1329, 662, 0, 6453, 6452, 1, 0, 0, 0, 6453, 6454, 1, 0, 0, 0, 6454, 6455, 1, 0, 0, 0, 6455, 6456, 5, 36, 0, 0, 6456, 6457, 6, 661, 4, 0, 6457, 6458, 1, 0, 0, 0, 6458, 6459, 6, 661, 5, 0, 6459, 1328, 1, 0, 0, 0, 6460, 6464, 3, 1295, 645, 0, 6461, 6463, 3, 1299, 647, 0, 6462, 6461, 1, 0, 0, 0, 6463, 6466, 1, 0, 0, 0, 6464, 6462, 1, 0, 0, 0, 6464, 6465, 1, 0, 0, 0, 6465, 1330, 1, 0, 0, 0, 6466, 6464, 1, 0, 0, 0, 6467, 6468, 3, 1333, 664, 0, 6468, 6469, 5, 39, 0, 0, 6469, 1332, 1, 0, 0, 0, 6470, 6471, 7, 18, 0, 0, 6471, 6475, 5, 39, 0, 0, 6472, 6474, 7, 38, 0, 0, 6473, 6472, 1, 0, 0, 0, 6474, 6477, 1, 0, 0, 0, 6475, 6473, 1, 0, 0, 0, 6475, 6476, 1, 0, 0, 0, 6476, 1334, 1, 0, 0, 0, 6477, 6475, 1, 0, 0, 0, 6478, 6479, 3, 1337, 666, 0, 6479, 6480, 5, 39, 0, 0, 6480, 1336, 1, 0, 0, 0, 6481, 6482, 7, 18, 0, 0, 6482, 6483, 3, 1319, 657, 0, 6483, 1338, 1, 0, 0, 0, 6484, 6485, 3, 1341, 668, 0, 6485, 6486, 5, 39, 0, 0, 6486, 1340, 1, 0, 0, 0, 6487, 6488, 7, 26, 0, 0, 6488, 6492, 5, 39, 0, 0, 6489, 6491, 7, 39, 0, 0, 6490, 6489, 1, 0, 0, 0, 6491, 6494, 1, 0, 0, 0, 6492, 6490, 1, 0, 0, 0, 6492, 6493, 1, 0, 0, 0, 6493, 1342, 1, 0, 0, 0, 6494, 6492, 1, 0, 0, 0, 6495, 6496, 3, 1345, 670, 0, 6496, 6497, 5, 39, 0, 0, 6497, 1344, 1, 0, 0, 0, 6498, 6499, 7, 26, 0, 0, 6499, 6500, 3, 1319, 657, 0, 6500, 1346, 1, 0, 0, 0, 6501, 6502, 3, 1353, 674, 0, 6502, 1348, 1, 0, 0, 0, 6503, 6504, 3, 1353, 674, 0, 6504, 6505, 5, 46, 0, 0, 6505, 6506, 5, 46, 0, 0, 6506, 6507, 1, 0, 0, 0, 6507, 6508, 6, 672, 6, 0, 6508, 1350, 1, 0, 0, 0, 6509, 6510, 3, 1353, 674, 0, 6510, 6512, 5, 46, 0, 0, 6511, 6513, 3, 1353, 674, 0, 6512, 6511, 1, 0, 0, 0, 6512, 6513, 1, 0, 0, 0, 6513, 6519, 1, 0, 0, 0, 6514, 6516, 7, 10, 0, 0, 6515, 6517, 7, 1, 0, 0, 6516, 6515, 1, 0, 0, 0, 6516, 6517, 1, 0, 0, 0, 6517, 6518, 1, 0, 0, 0, 6518, 6520, 3, 1353, 674, 0, 6519, 6514, 1, 0, 0, 0, 6519, 6520, 1, 0, 0, 0, 6520, 6538, 1, 0, 0, 0, 6521, 6522, 5, 46, 0, 0, 6522, 6528, 3, 1353, 674, 0, 6523, 6525, 7, 10, 0, 0, 6524, 6526, 7, 1, 0, 0, 6525, 6524, 1, 0, 0, 0, 6525, 6526, 1, 0, 0, 0, 6526, 6527, 1, 0, 0, 0, 6527, 6529, 3, 1353, 674, 0, 6528, 6523, 1, 0, 0, 0, 6528, 6529, 1, 0, 0, 0, 6529, 6538, 1, 0, 0, 0, 6530, 6531, 3, 1353, 674, 0, 6531, 6533, 7, 10, 0, 0, 6532, 6534, 7, 1, 0, 0, 6533, 6532, 1, 0, 0, 0, 6533, 6534, 1, 0, 0, 0, 6534, 6535, 1, 0, 0, 0, 6535, 6536, 3, 1353, 674, 0, 6536, 6538, 1, 0, 0, 0, 6537, 6509, 1, 0, 0, 0, 6537, 6521, 1, 0, 0, 0, 6537, 6530, 1, 0, 0, 0, 6538, 1352, 1, 0, 0, 0, 6539, 6541, 7, 0, 0, 0, 6540, 6539, 1, 0, 0, 0, 6541, 6542, 1, 0, 0, 0, 6542, 6540, 1, 0, 0, 0, 6542, 6543, 1, 0, 0, 0, 6543, 1354, 1, 0, 0, 0, 6544, 6545, 5, 58, 0, 0, 6545, 6549, 7, 40, 0, 0, 6546, 6548, 7, 41, 0, 0, 6547, 6546, 1, 0, 0, 0, 6548, 6551, 1, 0, 0, 0, 6549, 6547, 1, 0, 0, 0, 6549, 6550, 1, 0, 0, 0, 6550, 1356, 1, 0, 0, 0, 6551, 6549, 1, 0, 0, 0, 6552, 6553, 5, 58, 0, 0, 6553, 6554, 5, 34, 0, 0, 6554, 6562, 1, 0, 0, 0, 6555, 6556, 5, 92, 0, 0, 6556, 6561, 9, 0, 0, 0, 6557, 6558, 5, 34, 0, 0, 6558, 6561, 5, 34, 0, 0, 6559, 6561, 8, 42, 0, 0, 6560, 6555, 1, 0, 0, 0, 6560, 6557, 1, 0, 0, 0, 6560, 6559, 1, 0, 0, 0, 6561, 6564, 1, 0, 0, 0, 6562, 6560, 1, 0, 0, 0, 6562, 6563, 1, 0, 0, 0, 6563, 6565, 1, 0, 0, 0, 6564, 6562, 1, 0, 0, 0, 6565, 6566, 5, 34, 0, 0, 6566, 1358, 1, 0, 0, 0, 6567, 6569, 7, 43, 0, 0, 6568, 6567, 1, 0, 0, 0, 6569, 6570, 1, 0, 0, 0, 6570, 6568, 1, 0, 0, 0, 6570, 6571, 1, 0, 0, 0, 6571, 6572, 1, 0, 0, 0, 6572, 6573, 6, 677, 7, 0, 6573, 1360, 1, 0, 0, 0, 6574, 6576, 5, 13, 0, 0, 6575, 6577, 5, 10, 0, 0, 6576, 6575, 1, 0, 0, 0, 6576, 6577, 1, 0, 0, 0, 6577, 6580, 1, 0, 0, 0, 6578, 6580, 5, 10, 0, 0, 6579, 6574, 1, 0, 0, 0, 6579, 6578, 1, 0, 0, 0, 6580, 6581, 1, 0, 0, 0, 6581, 6582, 6, 678, 7, 0, 6582, 1362, 1, 0, 0, 0, 6583, 6584, 5, 45, 0, 0, 6584, 6585, 5, 45, 0, 0, 6585, 6589, 1, 0, 0, 0, 6586, 6588, 8, 44, 0, 0, 6587, 6586, 1, 0, 0, 0, 6588, 6591, 1, 0, 0, 0, 6589, 6587, 1, 0, 0, 0, 6589, 6590, 1, 0, 0, 0, 6590, 6592, 1, 0, 0, 0, 6591, 6589, 1, 0, 0, 0, 6592, 6593, 6, 679, 7, 0, 6593, 1364, 1, 0, 0, 0, 6594, 6595, 5, 47, 0, 0, 6595, 6596, 5, 42, 0, 0, 6596, 6619, 1, 0, 0, 0, 6597, 6599, 5, 47, 0, 0, 6598, 6597, 1, 0, 0, 0, 6599, 6602, 1, 0, 0, 0, 6600, 6598, 1, 0, 0, 0, 6600, 6601, 1, 0, 0, 0, 6601, 6603, 1, 0, 0, 0, 6602, 6600, 1, 0, 0, 0, 6603, 6618, 3, 1365, 680, 0, 6604, 6618, 8, 45, 0, 0, 6605, 6607, 5, 47, 0, 0, 6606, 6605, 1, 0, 0, 0, 6607, 6608, 1, 0, 0, 0, 6608, 6606, 1, 0, 0, 0, 6608, 6609, 1, 0, 0, 0, 6609, 6610, 1, 0, 0, 0, 6610, 6618, 8, 45, 0, 0, 6611, 6613, 5, 42, 0, 0, 6612, 6611, 1, 0, 0, 0, 6613, 6614, 1, 0, 0, 0, 6614, 6612, 1, 0, 0, 0, 6614, 6615, 1, 0, 0, 0, 6615, 6616, 1, 0, 0, 0, 6616, 6618, 8, 45, 0, 0, 6617, 6600, 1, 0, 0, 0, 6617, 6604, 1, 0, 0, 0, 6617, 6606, 1, 0, 0, 0, 6617, 6612, 1, 0, 0, 0, 6618, 6621, 1, 0, 0, 0, 6619, 6617, 1, 0, 0, 0, 6619, 6620, 1, 0, 0, 0, 6620, 6625, 1, 0, 0, 0, 6621, 6619, 1, 0, 0, 0, 6622, 6624, 5, 42, 0, 0, 6623, 6622, 1, 0, 0, 0, 6624, 6627, 1, 0, 0, 0, 6625, 6623, 1, 0, 0, 0, 6625, 6626, 1, 0, 0, 0, 6626, 6628, 1, 0, 0, 0, 6627, 6625, 1, 0, 0, 0, 6628, 6629, 5, 42, 0, 0, 6629, 6630, 5, 47, 0, 0, 6630, 6631, 1, 0, 0, 0, 6631, 6632, 6, 680, 7, 0, 6632, 1366, 1, 0, 0, 0, 6633, 6634, 5, 47, 0, 0, 6634, 6635, 5, 42, 0, 0, 6635, 6660, 1, 0, 0, 0, 6636, 6638, 5, 47, 0, 0, 6637, 6636, 1, 0, 0, 0, 6638, 6641, 1, 0, 0, 0, 6639, 6637, 1, 0, 0, 0, 6639, 6640, 1, 0, 0, 0, 6640, 6642, 1, 0, 0, 0, 6641, 6639, 1, 0, 0, 0, 6642, 6659, 3, 1365, 680, 0, 6643, 6659, 8, 45, 0, 0, 6644, 6646, 5, 47, 0, 0, 6645, 6644, 1, 0, 0, 0, 6646, 6647, 1, 0, 0, 0, 6647, 6645, 1, 0, 0, 0, 6647, 6648, 1, 0, 0, 0, 6648, 6649, 1, 0, 0, 0, 6649, 6657, 8, 45, 0, 0, 6650, 6652, 5, 42, 0, 0, 6651, 6650, 1, 0, 0, 0, 6652, 6653, 1, 0, 0, 0, 6653, 6651, 1, 0, 0, 0, 6653, 6654, 1, 0, 0, 0, 6654, 6655, 1, 0, 0, 0, 6655, 6657, 8, 45, 0, 0, 6656, 6645, 1, 0, 0, 0, 6656, 6651, 1, 0, 0, 0, 6657, 6659, 1, 0, 0, 0, 6658, 6639, 1, 0, 0, 0, 6658, 6643, 1, 0, 0, 0, 6658, 6656, 1, 0, 0, 0, 6659, 6662, 1, 0, 0, 0, 6660, 6658, 1, 0, 0, 0, 6660, 6661, 1, 0, 0, 0, 6661, 6680, 1, 0, 0, 0, 6662, 6660, 1, 0, 0, 0, 6663, 6665, 5, 47, 0, 0, 6664, 6663, 1, 0, 0, 0, 6665, 6666, 1, 0, 0, 0, 6666, 6664, 1, 0, 0, 0, 6666, 6667, 1, 0, 0, 0, 6667, 6681, 1, 0, 0, 0, 6668, 6670, 5, 42, 0, 0, 6669, 6668, 1, 0, 0, 0, 6670, 6671, 1, 0, 0, 0, 6671, 6669, 1, 0, 0, 0, 6671, 6672, 1, 0, 0, 0, 6672, 6681, 1, 0, 0, 0, 6673, 6675, 5, 47, 0, 0, 6674, 6673, 1, 0, 0, 0, 6675, 6678, 1, 0, 0, 0, 6676, 6674, 1, 0, 0, 0, 6676, 6677, 1, 0, 0, 0, 6677, 6679, 1, 0, 0, 0, 6678, 6676, 1, 0, 0, 0, 6679, 6681, 3, 1367, 681, 0, 6680, 6664, 1, 0, 0, 0, 6680, 6669, 1, 0, 0, 0, 6680, 6676, 1, 0, 0, 0, 6680, 6681, 1, 0, 0, 0, 6681, 6682, 1, 0, 0, 0, 6682, 6683, 6, 681, 8, 0, 6683, 1368, 1, 0, 0, 0, 6684, 6696, 5, 92, 0, 0, 6685, 6695, 8, 46, 0, 0, 6686, 6690, 5, 34, 0, 0, 6687, 6689, 8, 47, 0, 0, 6688, 6687, 1, 0, 0, 0, 6689, 6692, 1, 0, 0, 0, 6690, 6688, 1, 0, 0, 0, 6690, 6691, 1, 0, 0, 0, 6691, 6693, 1, 0, 0, 0, 6692, 6690, 1, 0, 0, 0, 6693, 6695, 5, 34, 0, 0, 6694, 6685, 1, 0, 0, 0, 6694, 6686, 1, 0, 0, 0, 6695, 6698, 1, 0, 0, 0, 6696, 6694, 1, 0, 0, 0, 6696, 6697, 1, 0, 0, 0, 6697, 6706, 1, 0, 0, 0, 6698, 6696, 1, 0, 0, 0, 6699, 6703, 5, 34, 0, 0, 6700, 6702, 8, 47, 0, 0, 6701, 6700, 1, 0, 0, 0, 6702, 6705, 1, 0, 0, 0, 6703, 6701, 1, 0, 0, 0, 6703, 6704, 1, 0, 0, 0, 6704, 6707, 1, 0, 0, 0, 6705, 6703, 1, 0, 0, 0, 6706, 6699, 1, 0, 0, 0, 6706, 6707, 1, 0, 0, 0, 6707, 1370, 1, 0, 0, 0, 6708, 6709, 5, 92, 0, 0, 6709, 6710, 5, 92, 0, 0, 6710, 1372, 1, 0, 0, 0, 6711, 6712, 9, 0, 0, 0, 6712, 1374, 1, 0, 0, 0, 6713, 6714, 3, 1379, 687, 0, 6714, 6715, 5, 39, 0, 0, 6715, 6716, 1, 0, 0, 0, 6716, 6717, 6, 685, 9, 0, 6717, 1376, 1, 0, 0, 0, 6718, 6720, 3, 1379, 687, 0, 6719, 6721, 5, 92, 0, 0, 6720, 6719, 1, 0, 0, 0, 6720, 6721, 1, 0, 0, 0, 6721, 6722, 1, 0, 0, 0, 6722, 6723, 5, 0, 0, 1, 6723, 1378, 1, 0, 0, 0, 6724, 6725, 5, 39, 0, 0, 6725, 6748, 5, 39, 0, 0, 6726, 6744, 5, 92, 0, 0, 6727, 6728, 5, 120, 0, 0, 6728, 6745, 7, 39, 0, 0, 6729, 6730, 5, 117, 0, 0, 6730, 6731, 7, 39, 0, 0, 6731, 6732, 7, 39, 0, 0, 6732, 6733, 7, 39, 0, 0, 6733, 6745, 7, 39, 0, 0, 6734, 6735, 5, 85, 0, 0, 6735, 6736, 7, 39, 0, 0, 6736, 6737, 7, 39, 0, 0, 6737, 6738, 7, 39, 0, 0, 6738, 6739, 7, 39, 0, 0, 6739, 6740, 7, 39, 0, 0, 6740, 6741, 7, 39, 0, 0, 6741, 6742, 7, 39, 0, 0, 6742, 6745, 7, 39, 0, 0, 6743, 6745, 8, 48, 0, 0, 6744, 6727, 1, 0, 0, 0, 6744, 6729, 1, 0, 0, 0, 6744, 6734, 1, 0, 0, 0, 6744, 6743, 1, 0, 0, 0, 6745, 6748, 1, 0, 0, 0, 6746, 6748, 8, 49, 0, 0, 6747, 6724, 1, 0, 0, 0, 6747, 6726, 1, 0, 0, 0, 6747, 6746, 1, 0, 0, 0, 6748, 6751, 1, 0, 0, 0, 6749, 6747, 1, 0, 0, 0, 6749, 6750, 1, 0, 0, 0, 6750, 1380, 1, 0, 0, 0, 6751, 6749, 1, 0, 0, 0, 6752, 6753, 3, 1385, 690, 0, 6753, 6754, 5, 39, 0, 0, 6754, 6755, 1, 0, 0, 0, 6755, 6756, 6, 688, 9, 0, 6756, 1382, 1, 0, 0, 0, 6757, 6759, 3, 1385, 690, 0, 6758, 6760, 5, 92, 0, 0, 6759, 6758, 1, 0, 0, 0, 6759, 6760, 1, 0, 0, 0, 6760, 6761, 1, 0, 0, 0, 6761, 6762, 5, 0, 0, 1, 6762, 1384, 1, 0, 0, 0, 6763, 6764, 5, 39, 0, 0, 6764, 6769, 5, 39, 0, 0, 6765, 6766, 5, 92, 0, 0, 6766, 6769, 9, 0, 0, 0, 6767, 6769, 8, 49, 0, 0, 6768, 6763, 1, 0, 0, 0, 6768, 6765, 1, 0, 0, 0, 6768, 6767, 1, 0, 0, 0, 6769, 6772, 1, 0, 0, 0, 6770, 6768, 1, 0, 0, 0, 6770, 6771, 1, 0, 0, 0, 6771, 1386, 1, 0, 0, 0, 6772, 6770, 1, 0, 0, 0, 6773, 6774, 3, 1359, 677, 0, 6774, 6775, 1, 0, 0, 0, 6775, 6776, 6, 691, 10, 0, 6776, 6777, 6, 691, 7, 0, 6777, 1388, 1, 0, 0, 0, 6778, 6779, 3, 1361, 678, 0, 6779, 6780, 1, 0, 0, 0, 6780, 6781, 6, 692, 11, 0, 6781, 6782, 6, 692, 7, 0, 6782, 6783, 6, 692, 12, 0, 6783, 1390, 1, 0, 0, 0, 6784, 6785, 6, 693, 13, 0, 6785, 6786, 1, 0, 0, 0, 6786, 6787, 6, 693, 14, 0, 6787, 6788, 6, 693, 15, 0, 6788, 1392, 1, 0, 0, 0, 6789, 6790, 3, 1359, 677, 0, 6790, 6791, 1, 0, 0, 0, 6791, 6792, 6, 694, 10, 0, 6792, 6793, 6, 694, 7, 0, 6793, 1394, 1, 0, 0, 0, 6794, 6795, 3, 1361, 678, 0, 6795, 6796, 1, 0, 0, 0, 6796, 6797, 6, 695, 11, 0, 6797, 6798, 6, 695, 7, 0, 6798, 1396, 1, 0, 0, 0, 6799, 6800, 5, 39, 0, 0, 6800, 6801, 1, 0, 0, 0, 6801, 6802, 6, 696, 2, 0, 6802, 6803, 6, 696, 16, 0, 6803, 1398, 1, 0, 0, 0, 6804, 6805, 6, 697, 17, 0, 6805, 6806, 1, 0, 0, 0, 6806, 6807, 6, 697, 14, 0, 6807, 6808, 6, 697, 15, 0, 6808, 1400, 1, 0, 0, 0, 6809, 6811, 8, 50, 0, 0, 6810, 6809, 1, 0, 0, 0, 6811, 6812, 1, 0, 0, 0, 6812, 6810, 1, 0, 0, 0, 6812, 6813, 1, 0, 0, 0, 6813, 6822, 1, 0, 0, 0, 6814, 6818, 5, 36, 0, 0, 6815, 6817, 8, 50, 0, 0, 6816, 6815, 1, 0, 0, 0, 6817, 6820, 1, 0, 0, 0, 6818, 6816, 1, 0, 0, 0, 6818, 6819, 1, 0, 0, 0, 6819, 6822, 1, 0, 0, 0, 6820, 6818, 1, 0, 0, 0, 6821, 6810, 1, 0, 0, 0, 6821, 6814, 1, 0, 0, 0, 6822, 1402, 1, 0, 0, 0, 6823, 6825, 5, 36, 0, 0, 6824, 6826, 3, 1329, 662, 0, 6825, 6824, 1, 0, 0, 0, 6825, 6826, 1, 0, 0, 0, 6826, 6827, 1, 0, 0, 0, 6827, 6828, 5, 36, 0, 0, 6828, 6829, 1, 0, 0, 0, 6829, 6830, 4, 699, 8, 0, 6830, 6831, 6, 699, 18, 0, 6831, 6832, 1, 0, 0, 0, 6832, 6833, 6, 699, 15, 0, 6833, 1404, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1472, 1478, 1480, 1485, 1489, 1491, 1494, 1503, 1505, 1510, 1515, 1517, 6367, 6376, 6380, 6384, 6393, 6395, 6405, 6407, 6433, 6435, 6453, 6464, 6475, 6492, 6512, 6516, 6519, 6525, 6528, 6533, 6537, 6542, 6549, 6560, 6562, 6570, 6576, 6579, 6589, 6600, 6608, 6614, 6617, 6619, 6625, 6639, 6647, 6653, 6656, 6658, 6660, 6666, 6671, 6676, 6680, 6690, 6694, 6696, 6703, 6706, 6720, 6744, 6747, 6749, 6759, 6768, 6770, 6812, 6818, 6821, 6825, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 661, 1, 5, 4, 0, 1, 672, 2, 0, 1, 0, 1, 681, 3, 2, 2, 0, 7, 668, 0, 7, 669, 0, 2, 3, 0, 1, 693, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 697, 5, 1, 699, 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..1b20a09961 --- /dev/null +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.java @@ -0,0 +1,5276 @@ +// 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.2 + + +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.2", 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, TOPICS=96, STREAM=97, + ZVIEW=98, ZVIEWS=99, TRAILING=100, TRUE_P=101, UNION=102, UNIQUE=103, + USER=104, USING=105, VARIADIC=106, WHEN=107, WHERE=108, WINDOW=109, WITH=110, + AUTHORIZATION=111, BINARY=112, COLLATION=113, CONCURRENTLY=114, CROSS=115, + CURRENT_SCHEMA=116, FREEZE=117, FULL=118, ILIKE=119, INNER_P=120, IS=121, + ISNULL=122, JOIN=123, LEFT=124, LIKE=125, NATURAL=126, NOTNULL=127, OUTER_P=128, + OVER=129, OVERLAPS=130, RIGHT=131, SIMILAR=132, VERBOSE=133, ABORT_P=134, + ABSOLUTE_P=135, ACCESS=136, ACTION=137, ADD_P=138, ADMIN=139, AFTER=140, + AGGREGATE=141, ALSO=142, ALTER=143, ALWAYS=144, ASSERTION=145, ASSIGNMENT=146, + AT=147, ATTRIBUTE=148, BACKWARD=149, BEFORE=150, BEGIN_P=151, BY=152, + CACHE=153, CALLED=154, CASCADE=155, CASCADED=156, CATALOG=157, CHAIN=158, + CHARACTERISTICS=159, CHECKPOINT=160, CLASS=161, CLOSE=162, CLUSTER=163, + COMMENT=164, COMMENTS=165, COMMIT=166, COMMITTED=167, CONFIGURATION=168, + CONNECTION=169, CONSTRAINTS=170, CONTENT_P=171, CONTINUE_P=172, CONVERSION_P=173, + COPY=174, COST=175, CSV=176, CURSOR=177, CYCLE=178, DATA_P=179, DATABASE=180, + DAY_P=181, DEALLOCATE=182, DECLARE=183, DEFAULTS=184, DEFERRED=185, DEFINER=186, + DELETE_P=187, DELIMITER=188, DELIMITERS=189, DICTIONARY=190, DISABLE_P=191, + DISCARD=192, DOCUMENT_P=193, DOMAIN_P=194, DOUBLE_P=195, DROP=196, EACH=197, + ENABLE_P=198, ENCODING=199, ENCRYPTED=200, ENUM_P=201, ESCAPE=202, EVENT=203, + EXCLUDE=204, EXCLUDING=205, EXCLUSIVE=206, EXECUTE=207, EXPLAIN=208, EXTENSION=209, + EXTERNAL=210, FAMILY=211, FIRST_P=212, FOLLOWING=213, FORCE=214, FORWARD=215, + FUNCTION=216, FUNCTIONS=217, GLOBAL=218, GRANTED=219, HANDLER=220, HEADER_P=221, + HOLD=222, HOUR_P=223, IDENTITY_P=224, IF_P=225, IMMEDIATE=226, IMMUTABLE=227, + IMPLICIT_P=228, INCLUDING=229, INCREMENT=230, INDEX=231, INDEXES=232, + INHERIT=233, INHERITS=234, INLINE_P=235, INSENSITIVE=236, INSERT=237, + INSTEAD=238, INVOKER=239, ISOLATION=240, KEY=241, LABEL=242, LANGUAGE=243, + LARGE_P=244, LAST_P=245, LEAKPROOF=246, LEVEL=247, LISTEN=248, LOAD=249, + LOCAL=250, LOCATION=251, LOCK_P=252, MAPPING=253, MATCH=254, MATCHED=255, + MATERIALIZED=256, MAXVALUE=257, MERGE=258, MINUTE_P=259, MINVALUE=260, + MODE=261, MONTH_P=262, MOVE=263, NAME_P=264, NAMES=265, NEXT=266, NO=267, + NOTHING=268, NOTIFY=269, NOWAIT=270, NULLS_P=271, OBJECT_P=272, OF=273, + OFF=274, OIDS=275, OPERATOR=276, OPTION=277, OPTIONS=278, OWNED=279, OWNER=280, + PARSER=281, PARTIAL=282, PARTITION=283, PASSING=284, PASSWORD=285, PLANS=286, + PRECEDING=287, PREPARE=288, PREPARED=289, PRESERVE=290, PRIOR=291, PRIVILEGES=292, + PROCEDURAL=293, PROCEDURE=294, PROGRAM=295, QUOTE=296, RANGE=297, READ=298, + REASSIGN=299, RECHECK=300, RECURSIVE=301, REF=302, REFRESH=303, REINDEX=304, + RELATIVE_P=305, RELEASE=306, RENAME=307, REPEATABLE=308, REPLACE=309, + REPLICA=310, RESET=311, RESTART=312, RESTRICT=313, RETURNS=314, REVOKE=315, + ROLE=316, ROLLBACK=317, ROWS=318, RULE=319, SAVEPOINT=320, SCHEMA=321, + SCROLL=322, SEARCH=323, SECOND_P=324, SECURITY=325, SEQUENCE=326, SEQUENCES=327, + SERIALIZABLE=328, SERVER=329, SESSION=330, SET=331, SHARE=332, SHOW=333, + SIMPLE=334, SNAPSHOT=335, STABLE=336, STANDALONE_P=337, START=338, STATEMENT=339, + STATISTICS=340, STDIN=341, STDOUT=342, STORAGE=343, STRICT_P=344, STRIP_P=345, + SYSID=346, SYSTEM_P=347, TABLES=348, TABLESPACE=349, TEMP=350, TEMPLATE=351, + TEMPORARY=352, TEXT_P=353, TRANSACTION=354, TRIGGER=355, TRUNCATE=356, + TRUSTED=357, TYPE_P=358, TYPES_P=359, UNBOUNDED=360, UNCOMMITTED=361, + UNENCRYPTED=362, UNKNOWN=363, UNLISTEN=364, UNLOGGED=365, UNTIL=366, UPDATE=367, + VACUUM=368, VALID=369, VALIDATE=370, VALIDATOR=371, VARYING=372, VERSION_P=373, + VIEW=374, VOLATILE=375, WHITESPACE_P=376, WITHOUT=377, WORK=378, WRAPPER=379, + WRITE=380, XML_P=381, YEAR_P=382, YES_P=383, ZONE=384, BETWEEN=385, BIGINT=386, + BIT=387, BOOLEAN_P=388, CHAR_P=389, CHARACTER=390, COALESCE=391, DEC=392, + DECIMAL_P=393, EXISTS=394, EXTRACT=395, FLOAT_P=396, GREATEST=397, INOUT=398, + INT_P=399, INTEGER=400, INTERVAL=401, LEAST=402, NATIONAL=403, NCHAR=404, + NONE=405, NULLIF=406, NUMERIC=407, OVERLAY=408, POSITION=409, PRECISION=410, + REAL=411, ROW=412, SETOF=413, SMALLINT=414, SUBSTRING=415, TIME=416, TIMESTAMP=417, + TREAT=418, TRIM=419, VALUES=420, VARCHAR=421, XMLATTRIBUTES=422, XMLCOMMENT=423, + XMLAGG=424, XML_IS_WELL_FORMED=425, XML_IS_WELL_FORMED_DOCUMENT=426, XML_IS_WELL_FORMED_CONTENT=427, + XPATH=428, XPATH_EXISTS=429, XMLCONCAT=430, XMLELEMENT=431, XMLEXISTS=432, + XMLFOREST=433, XMLPARSE=434, XMLPI=435, XMLROOT=436, XMLSERIALIZE=437, + CALL=438, CURRENT_P=439, ATTACH=440, DETACH=441, EXPRESSION=442, GENERATED=443, + LOGGED=444, STORED=445, INCLUDE=446, ROUTINE=447, TRANSFORM=448, IMPORT_P=449, + POLICY=450, METHOD=451, REFERENCING=452, NEW=453, OLD=454, VALUE_P=455, + SUBSCRIPTION=456, PUBLICATION=457, OUT_P=458, END_P=459, ROUTINES=460, + SCHEMAS=461, PROCEDURES=462, INPUT_P=463, SUPPORT=464, PARALLEL=465, SQL_P=466, + DEPENDS=467, OVERRIDING=468, CONFLICT=469, SKIP_P=470, LOCKED=471, TIES=472, + ROLLUP=473, CUBE=474, GROUPING=475, SETS=476, TABLESAMPLE=477, ORDINALITY=478, + XMLTABLE=479, COLUMNS=480, XMLNAMESPACES=481, ROWTYPE=482, NORMALIZED=483, + WITHIN=484, FILTER=485, GROUPS=486, OTHERS=487, NFC=488, NFD=489, NFKC=490, + NFKD=491, UESCAPE=492, VIEWS=493, NORMALIZE=494, DUMP=495, PRINT_STRICT_PARAMS=496, + VARIABLE_CONFLICT=497, ERROR=498, USE_VARIABLE=499, USE_COLUMN=500, ALIAS=501, + CONSTANT=502, PERFORM=503, GET=504, DIAGNOSTICS=505, STACKED=506, ELSIF=507, + WHILE=508, REVERSE=509, FOREACH=510, SLICE=511, EXIT=512, RETURN=513, + QUERY=514, RAISE=515, SQLSTATE=516, DEBUG=517, LOG=518, INFO=519, NOTICE=520, + WARNING=521, EXCEPTION=522, ASSERT=523, LOOP=524, OPEN=525, ABS=526, CBRT=527, + CEIL=528, CEILING=529, DEGREES=530, DIV=531, EXP=532, FACTORIAL=533, FLOOR=534, + GCD=535, LCM=536, LN=537, LOG10=538, MIN_SCALE=539, MOD=540, PI=541, POWER=542, + RADIANS=543, ROUND=544, SCALE=545, SIGN=546, SQRT=547, TRIM_SCALE=548, + TRUNC=549, WIDTH_BUCKET=550, RANDOM=551, SETSEED=552, ACOS=553, ACOSD=554, + ASIN=555, ASIND=556, ATAN=557, ATAND=558, ATAN2=559, ATAN2D=560, COS=561, + COSD=562, COT=563, COTD=564, SIN=565, SIND=566, TAN=567, TAND=568, SINH=569, + COSH=570, TANH=571, ASINH=572, ACOSH=573, ATANH=574, BIT_LENGTH=575, CHAR_LENGTH=576, + CHARACTER_LENGTH=577, LOWER=578, OCTET_LENGTH=579, UPPER=580, ASCII=581, + BTRIM=582, CHR=583, CONCAT=584, CONCAT_WS=585, FORMAT=586, INITCAP=587, + LENGTH=588, LPAD=589, LTRIM=590, MD5=591, PARSE_IDENT=592, PG_CLIENT_ENCODING=593, + QUOTE_IDENT=594, QUOTE_LITERAL=595, QUOTE_NULLABLE=596, REGEXP_COUNT=597, + REGEXP_INSTR=598, REGEXP_LIKE=599, REGEXP_MATCH=600, REGEXP_MATCHES=601, + REGEXP_REPLACE=602, REGEXP_SPLIT_TO_ARRAY=603, REGEXP_SPLIT_TO_TABLE=604, + REGEXP_SUBSTR=605, REPEAT=606, RPAD=607, RTRIM=608, SPLIT_PART=609, STARTS_WITH=610, + STRING_TO_ARRAY=611, STRING_TO_TABLE=612, STRPOS=613, SUBSTR=614, TO_ASCII=615, + TO_HEX=616, TRANSLATE=617, UNISTR=618, AGE=619, CLOCK_TIMESTAMP=620, DATE_BIN=621, + DATE_PART=622, DATE_TRUNC=623, ISFINITE=624, JUSTIFY_DAYS=625, JUSTIFY_HOURS=626, + JUSTIFY_INTERVAL=627, MAKE_DATE=628, MAKE_INTERVAL=629, MAKE_TIME=630, + MAKE_TIMESTAMP=631, MAKE_TIMESTAMPTZ=632, NOW=633, STATEMENT_TIMESTAMP=634, + TIMEOFDAY=635, TRANSACTION_TIMESTAMP=636, TO_TIMESTAMP=637, TO_CHAR=638, + TO_DATE=639, TO_NUMBER=640, Identifier=641, QuotedIdentifier=642, UnterminatedQuotedIdentifier=643, + InvalidQuotedIdentifier=644, InvalidUnterminatedQuotedIdentifier=645, + UnicodeQuotedIdentifier=646, UnterminatedUnicodeQuotedIdentifier=647, + InvalidUnicodeQuotedIdentifier=648, InvalidUnterminatedUnicodeQuotedIdentifier=649, + StringConstant=650, UnterminatedStringConstant=651, UnicodeEscapeStringConstant=652, + UnterminatedUnicodeEscapeStringConstant=653, BeginDollarStringConstant=654, + BinaryStringConstant=655, UnterminatedBinaryStringConstant=656, InvalidBinaryStringConstant=657, + InvalidUnterminatedBinaryStringConstant=658, HexadecimalStringConstant=659, + UnterminatedHexadecimalStringConstant=660, InvalidHexadecimalStringConstant=661, + InvalidUnterminatedHexadecimalStringConstant=662, Integral=663, NumericFail=664, + Numeric=665, PLSQLVARIABLENAME=666, PLSQLIDENTIFIER=667, Whitespace=668, + Newline=669, LineComment=670, BlockComment=671, UnterminatedBlockComment=672, + MetaCommand=673, EndMetaCommand=674, ErrorCharacter=675, EscapeStringConstant=676, + UnterminatedEscapeStringConstant=677, InvalidEscapeStringConstant=678, + InvalidUnterminatedEscapeStringConstant=679, AfterEscapeStringConstantMode_NotContinued=680, + AfterEscapeStringConstantWithNewlineMode_NotContinued=681, DollarText=682, + EndDollarStringConstant=683, AfterEscapeStringConstantWithNewlineMode_Continued=684; + 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", "TOPICS", "STREAM", "ZVIEW", "ZVIEWS", "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'", "'TOPICS'", + "'STREAM'", "'ZVIEW'", "'ZVIEWS'", "'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", "TOPICS", "STREAM", "ZVIEW", "ZVIEWS", "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 661: + BeginDollarStringConstant_action((RuleContext)_localctx, actionIndex); + break; + case 672: + NumericFail_action((RuleContext)_localctx, actionIndex); + break; + case 681: + UnterminatedBlockComment_action((RuleContext)_localctx, actionIndex); + break; + case 693: + AfterEscapeStringConstantMode_NotContinued_action((RuleContext)_localctx, actionIndex); + break; + case 697: + AfterEscapeStringConstantWithNewlineMode_NotContinued_action((RuleContext)_localctx, actionIndex); + break; + case 699: + 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 645: + return IdentifierStartChar_sempred((RuleContext)_localctx, predIndex); + case 699: + 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\u02ac\u1ab2\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\u0002\u02b9\u0007\u02b9"+ + "\u0002\u02ba\u0007\u02ba\u0002\u02bb\u0007\u02bb\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\u05bf\b\u001b\u000b\u001b\f\u001b\u05c0\u0001\u001c\u0001"+ + "\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05c7\b\u001c\u000b\u001c\f"+ + "\u001c\u05c8\u0001\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u05ce\b\u001c"+ + "\u0001\u001c\u0001\u001c\u0004\u001c\u05d2\b\u001c\u000b\u001c\f\u001c"+ + "\u05d3\u0001\u001c\u0003\u001c\u05d7\b\u001c\u0001\u001c\u0001\u001c\u0001"+ + "\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0005\u001d\u05e0"+ + "\b\u001d\n\u001d\f\u001d\u05e3\t\u001d\u0001\u001d\u0001\u001d\u0003\u001d"+ + "\u05e7\b\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0004\u001d\u05ec\b"+ + "\u001d\u000b\u001d\f\u001d\u05ed\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\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001f\u0001f\u0001f\u0001"+ + "f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001g\u0001g\u0001g\u0001g\u0001"+ + "g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001i\u0001i\u0001"+ + "i\u0001i\u0001i\u0001i\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\u0001m\u0001"+ + "m\u0001n\u0001n\u0001n\u0001n\u0001n\u0001o\u0001o\u0001o\u0001o\u0001"+ + "o\u0001o\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001q\u0001"+ + "q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001"+ + "r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001"+ + "s\u0001s\u0001s\u0001s\u0001s\u0001t\u0001t\u0001t\u0001t\u0001t\u0001"+ + "t\u0001t\u0001t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001u\u0001"+ + "u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001v\u0001v\u0001"+ + "v\u0001v\u0001v\u0001v\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001"+ + "w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001x\u0001"+ + "x\u0001x\u0001x\u0001x\u0001x\u0001x\u0001y\u0001y\u0001y\u0001y\u0001"+ + "y\u0001z\u0001z\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\u007f\u0001\u007f"+ + "\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u0080\u0001\u0080\u0001\u0080"+ + "\u0001\u0080\u0001\u0080\u0001\u0081\u0001\u0081\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\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\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\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\u008a\u0001\u008a\u0001\u008a\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\u008c\u0001\u008c\u0001\u008d"+ + "\u0001\u008d\u0001\u008d\u0001\u008d\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\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\u0091\u0001\u0091"+ + "\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\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\u0095\u0001\u0095\u0001\u0096\u0001\u0096"+ + "\u0001\u0096\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\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\u0098\u0001\u0098\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\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\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\u009f\u0001\u009f\u0001\u009f"+ + "\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\u00a2\u0001\u00a2\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\u00a3\u0001\u00a3\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\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\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\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\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\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\u00ad"+ + "\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae"+ + "\u0001\u00ae\u0001\u00ae\u0001\u00af\u0001\u00af\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\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\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3"+ + "\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\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\u00b9\u0001\u00b9\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\u00bb\u0001\u00bb\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\u00bf"+ + "\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\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\u00c1"+ + "\u0001\u00c1\u0001\u00c2\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\u00c3\u0001\u00c4"+ + "\u0001\u00c4\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\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\u00c9\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\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\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\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\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\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\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\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\u00d8\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\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\u00db\u0001\u00db\u0001\u00dc"+ + "\u0001\u00dc\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\u00de\u0001\u00de\u0001\u00de"+ + "\u0001\u00df\u0001\u00df\u0001\u00df\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\u00e1\u0001\u00e1\u0001\u00e1"+ + "\u0001\u00e1\u0001\u00e1\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\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\u00e7\u0001\u00e7\u0001\u00e7"+ + "\u0001\u00e8\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\u00e9"+ + "\u0001\u00e9\u0001\u00e9\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\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\u00ed\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\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00f0\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\u00f2\u0001\u00f2\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\u00f3\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\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\u00f9\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\u00fa\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\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\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\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\u0103\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\u0105\u0001\u0106\u0001\u0106\u0001\u0106"+ + "\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0107\u0001\u0107"+ + "\u0001\u0107\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\u0109\u0001\u0109\u0001\u0109"+ + "\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010b"+ + "\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010c\u0001\u010c"+ + "\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010d\u0001\u010d"+ + "\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010e\u0001\u010e\u0001\u010e"+ + "\u0001\u010f\u0001\u010f\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\u0111\u0001\u0111\u0001\u0111\u0001\u0111\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\u0115\u0001\u0115\u0001\u0115\u0001\u0115"+ + "\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\u0117\u0001\u0117\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\u011a"+ + "\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\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\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\u011e\u0001\u011e"+ + "\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\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\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\u0127"+ + "\u0001\u0127\u0001\u0127\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\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\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\u012c\u0001\u012c\u0001\u012c"+ + "\u0001\u012c\u0001\u012c\u0001\u012c\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\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\u0130\u0001\u0130\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\u0133\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\u0137\u0001\u0137\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\u0139\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\u013b"+ + "\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\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\u013e"+ + "\u0001\u013e\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\u0141\u0001\u0141\u0001\u0141\u0001\u0141"+ + "\u0001\u0141\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\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\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\u0148\u0001\u0149"+ + "\u0001\u0149\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\u014a\u0001\u014a"+ + "\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b"+ + "\u0001\u014b\u0001\u014b\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\u014e\u0001\u014e"+ + "\u0001\u014e\u0001\u014e\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f"+ + "\u0001\u014f\u0001\u014f\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\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\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\u0156\u0001\u0156\u0001\u0156\u0001\u0157\u0001\u0157\u0001\u0157"+ + "\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\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\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\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\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\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\u0163\u0001\u0163\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\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\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\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169"+ + "\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\u016b\u0001\u016c\u0001\u016c"+ + "\u0001\u016c\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\u016d\u0001\u016d\u0001\u016d\u0001\u016e\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\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\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\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\u0175\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\u0178\u0001\u0178"+ + "\u0001\u0178\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179"+ + "\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\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\u017b"+ + "\u0001\u017b\u0001\u017b\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c"+ + "\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017d\u0001\u017d"+ + "\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017e\u0001\u017e\u0001\u017e"+ + "\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017f"+ + "\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u0180"+ + "\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0181\u0001\u0181\u0001\u0181"+ + "\u0001\u0181\u0001\u0181\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\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\u0189\u0001\u0189\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\u018a\u0001\u018a\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b"+ + "\u0001\u018c\u0001\u018c\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\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\u0190"+ + "\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\u0192\u0001\u0192\u0001\u0192\u0001\u0192"+ + "\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\u0194\u0001\u0194\u0001\u0194\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\u0196\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197"+ + "\u0001\u0197\u0001\u0197\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\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\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\u01a0\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\u01a2\u0001\u01a2\u0001\u01a2\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\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\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6"+ + "\u0001\u01a6\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\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\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\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\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\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\u01ae\u0001\u01ae\u0001\u01ae"+ + "\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\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\u01b0\u0001\u01b0\u0001\u01b0\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\u01b2\u0001\u01b2"+ + "\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\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\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\u01b7\u0001\u01b8\u0001\u01b8\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\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\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\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\u01c1"+ + "\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\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\u01c5\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\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\u01cb"+ + "\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb\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\u01cc"+ + "\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\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\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\u01d1\u0001\u01d1"+ + "\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\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\u01d6\u0001\u01d6\u0001\u01d6"+ + "\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\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d8\u0001\u01d8"+ + "\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8"+ + "\u0001\u01d8\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9"+ + "\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da"+ + "\u0001\u01da\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\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\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\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\u01e2\u0001\u01e2\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\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\u01e5\u0001\u01e6\u0001\u01e6"+ + "\u0001\u01e6\u0001\u01e6\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\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e9"+ + "\u0001\u01e9\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\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\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\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\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\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\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\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\u01f8\u0001\u01f8\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\u01fa"+ + "\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa"+ + "\u0001\u01fa\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\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\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff"+ + "\u0001\u01ff\u0001\u0200\u0001\u0200\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\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\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\u0206\u0001\u0206\u0001\u0207"+ + "\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\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\u020b\u0001\u020b"+ + "\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c"+ + "\u0001\u020c\u0001\u020c\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d"+ + "\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d"+ + "\u0001\u020e\u0001\u020e\u0001\u020e\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\u0212\u0001\u0212\u0001\u0212"+ + "\u0001\u0212\u0001\u0212\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213"+ + "\u0001\u0213\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\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\u0216"+ + "\u0001\u0216\u0001\u0216\u0001\u0216\u0001\u0217\u0001\u0217\u0001\u0217"+ + "\u0001\u0217\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218\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\u021a"+ + "\u0001\u021a\u0001\u021a\u0001\u021a\u0001\u021b\u0001\u021b\u0001\u021b"+ + "\u0001\u021b\u0001\u021c\u0001\u021c\u0001\u021c\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\u021e\u0001\u021e"+ + "\u0001\u021e\u0001\u021e\u0001\u021f\u0001\u021f\u0001\u021f\u0001\u021f"+ + "\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\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\u0225"+ + "\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0225\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\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\u0229\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u0229"+ + "\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u022a\u0001\u022a\u0001\u022a"+ + "\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022b\u0001\u022b"+ + "\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b"+ + "\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\u022f\u0001\u022f"+ + "\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\u0231\u0001\u0231\u0001\u0232\u0001\u0232\u0001\u0232"+ + "\u0001\u0232\u0001\u0232\u0001\u0232\u0001\u0233\u0001\u0233\u0001\u0233"+ + "\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0234\u0001\u0234"+ + "\u0001\u0234\u0001\u0234\u0001\u0235\u0001\u0235\u0001\u0235\u0001\u0235"+ + "\u0001\u0235\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\u0239\u0001\u0239\u0001\u0239\u0001\u0239"+ + "\u0001\u0239\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\u023d\u0001\u023d\u0001\u023d"+ + "\u0001\u023d\u0001\u023d\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e"+ + "\u0001\u023e\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\u0242\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0242"+ + "\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\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244"+ + "\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\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\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\u0248\u0001\u0248\u0001\u0248\u0001\u0248\u0001\u0248\u0001\u0248"+ + "\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249"+ + "\u0001\u024a\u0001\u024a\u0001\u024a\u0001\u024a\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\u024c\u0001\u024c\u0001\u024c\u0001\u024d\u0001\u024d\u0001\u024d"+ + "\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\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f"+ + "\u0001\u024f\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250"+ + "\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251"+ + "\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\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\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\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\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\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\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\u025d\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e"+ + "\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e"+ + "\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\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\u025f\u0001\u025f"+ + "\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u025f\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\u0260\u0001\u0260\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\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\u0265\u0001\u0265"+ + "\u0001\u0265\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\u0266"+ + "\u0001\u0266\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\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\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\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\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\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\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\u0274\u0001\u0274"+ + "\u0001\u0274\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\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\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\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\u027b\u0001\u027b\u0001\u027b\u0001\u027b"+ + "\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\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"+ + "\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f"+ + "\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f"+ + "\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\u0280\u0001\u0280\u0001\u0280\u0001\u0281\u0001\u0281\u0001\u0281"+ + "\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0282"+ + "\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282"+ + "\u0001\u0282\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283"+ + "\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0284"+ + "\u0001\u0284\u0005\u0284\u18de\b\u0284\n\u0284\f\u0284\u18e1\t\u0284\u0001"+ + "\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0003"+ + "\u0285\u18e9\b\u0285\u0001\u0286\u0001\u0286\u0003\u0286\u18ed\b\u0286"+ + "\u0001\u0287\u0001\u0287\u0003\u0287\u18f1\b\u0287\u0001\u0288\u0001\u0288"+ + "\u0001\u0288\u0001\u0289\u0001\u0289\u0001\u0289\u0001\u0289\u0005\u0289"+ + "\u18fa\b\u0289\n\u0289\f\u0289\u18fd\t\u0289\u0001\u028a\u0001\u028a\u0001"+ + "\u028a\u0001\u028b\u0001\u028b\u0001\u028b\u0001\u028b\u0005\u028b\u1906"+ + "\b\u028b\n\u028b\f\u028b\u1909\t\u028b\u0001\u028c\u0001\u028c\u0001\u028c"+ + "\u0001\u028c\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028e"+ + "\u0001\u028e\u0001\u028e\u0001\u028e\u0001\u028f\u0001\u028f\u0001\u028f"+ + "\u0001\u028f\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0291\u0001\u0291"+ + "\u0001\u0291\u0001\u0291\u0005\u0291\u1922\b\u0291\n\u0291\f\u0291\u1925"+ + "\t\u0291\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0292\u0001"+ + "\u0292\u0001\u0293\u0001\u0293\u0001\u0293\u0001\u0294\u0001\u0294\u0001"+ + "\u0294\u0001\u0294\u0001\u0295\u0001\u0295\u0003\u0295\u1936\b\u0295\u0001"+ + "\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0296\u0001"+ + "\u0296\u0005\u0296\u193f\b\u0296\n\u0296\f\u0296\u1942\t\u0296\u0001\u0297"+ + "\u0001\u0297\u0001\u0297\u0001\u0298\u0001\u0298\u0001\u0298\u0005\u0298"+ + "\u194a\b\u0298\n\u0298\f\u0298\u194d\t\u0298\u0001\u0299\u0001\u0299\u0001"+ + "\u0299\u0001\u029a\u0001\u029a\u0001\u029a\u0001\u029b\u0001\u029b\u0001"+ + "\u029b\u0001\u029c\u0001\u029c\u0001\u029c\u0005\u029c\u195b\b\u029c\n"+ + "\u029c\f\u029c\u195e\t\u029c\u0001\u029d\u0001\u029d\u0001\u029d\u0001"+ + "\u029e\u0001\u029e\u0001\u029e\u0001\u029f\u0001\u029f\u0001\u02a0\u0001"+ + "\u02a0\u0001\u02a0\u0001\u02a0\u0001\u02a0\u0001\u02a0\u0001\u02a1\u0001"+ + "\u02a1\u0001\u02a1\u0003\u02a1\u1971\b\u02a1\u0001\u02a1\u0001\u02a1\u0003"+ + "\u02a1\u1975\b\u02a1\u0001\u02a1\u0003\u02a1\u1978\b\u02a1\u0001\u02a1"+ + "\u0001\u02a1\u0001\u02a1\u0001\u02a1\u0003\u02a1\u197e\b\u02a1\u0001\u02a1"+ + "\u0003\u02a1\u1981\b\u02a1\u0001\u02a1\u0001\u02a1\u0001\u02a1\u0003\u02a1"+ + "\u1986\b\u02a1\u0001\u02a1\u0001\u02a1\u0003\u02a1\u198a\b\u02a1\u0001"+ + "\u02a2\u0004\u02a2\u198d\b\u02a2\u000b\u02a2\f\u02a2\u198e\u0001\u02a3"+ + "\u0001\u02a3\u0001\u02a3\u0005\u02a3\u1994\b\u02a3\n\u02a3\f\u02a3\u1997"+ + "\t\u02a3\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0001"+ + "\u02a4\u0001\u02a4\u0001\u02a4\u0005\u02a4\u19a1\b\u02a4\n\u02a4\f\u02a4"+ + "\u19a4\t\u02a4\u0001\u02a4\u0001\u02a4\u0001\u02a5\u0004\u02a5\u19a9\b"+ + "\u02a5\u000b\u02a5\f\u02a5\u19aa\u0001\u02a5\u0001\u02a5\u0001\u02a6\u0001"+ + "\u02a6\u0003\u02a6\u19b1\b\u02a6\u0001\u02a6\u0003\u02a6\u19b4\b\u02a6"+ + "\u0001\u02a6\u0001\u02a6\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7"+ + "\u0005\u02a7\u19bc\b\u02a7\n\u02a7\f\u02a7\u19bf\t\u02a7\u0001\u02a7\u0001"+ + "\u02a7\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0005\u02a8\u19c7"+ + "\b\u02a8\n\u02a8\f\u02a8\u19ca\t\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a8"+ + "\u0004\u02a8\u19cf\b\u02a8\u000b\u02a8\f\u02a8\u19d0\u0001\u02a8\u0001"+ + "\u02a8\u0004\u02a8\u19d5\b\u02a8\u000b\u02a8\f\u02a8\u19d6\u0001\u02a8"+ + "\u0005\u02a8\u19da\b\u02a8\n\u02a8\f\u02a8\u19dd\t\u02a8\u0001\u02a8\u0005"+ + "\u02a8\u19e0\b\u02a8\n\u02a8\f\u02a8\u19e3\t\u02a8\u0001\u02a8\u0001\u02a8"+ + "\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a9\u0001\u02a9\u0001\u02a9"+ + "\u0001\u02a9\u0005\u02a9\u19ee\b\u02a9\n\u02a9\f\u02a9\u19f1\t\u02a9\u0001"+ + "\u02a9\u0001\u02a9\u0001\u02a9\u0004\u02a9\u19f6\b\u02a9\u000b\u02a9\f"+ + "\u02a9\u19f7\u0001\u02a9\u0001\u02a9\u0004\u02a9\u19fc\b\u02a9\u000b\u02a9"+ + "\f\u02a9\u19fd\u0001\u02a9\u0003\u02a9\u1a01\b\u02a9\u0005\u02a9\u1a03"+ + "\b\u02a9\n\u02a9\f\u02a9\u1a06\t\u02a9\u0001\u02a9\u0004\u02a9\u1a09\b"+ + "\u02a9\u000b\u02a9\f\u02a9\u1a0a\u0001\u02a9\u0004\u02a9\u1a0e\b\u02a9"+ + "\u000b\u02a9\f\u02a9\u1a0f\u0001\u02a9\u0005\u02a9\u1a13\b\u02a9\n\u02a9"+ + "\f\u02a9\u1a16\t\u02a9\u0001\u02a9\u0003\u02a9\u1a19\b\u02a9\u0001\u02a9"+ + "\u0001\u02a9\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0005\u02aa"+ + "\u1a21\b\u02aa\n\u02aa\f\u02aa\u1a24\t\u02aa\u0001\u02aa\u0005\u02aa\u1a27"+ + "\b\u02aa\n\u02aa\f\u02aa\u1a2a\t\u02aa\u0001\u02aa\u0001\u02aa\u0005\u02aa"+ + "\u1a2e\b\u02aa\n\u02aa\f\u02aa\u1a31\t\u02aa\u0003\u02aa\u1a33\b\u02aa"+ + "\u0001\u02ab\u0001\u02ab\u0001\u02ab\u0001\u02ac\u0001\u02ac\u0001\u02ad"+ + "\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ae\u0001\u02ae"+ + "\u0003\u02ae\u1a41\b\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02af\u0001\u02af"+ + "\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af"+ + "\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af"+ + "\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af"+ + "\u0003\u02af\u1a59\b\u02af\u0001\u02af\u0005\u02af\u1a5c\b\u02af\n\u02af"+ + "\f\u02af\u1a5f\t\u02af\u0001\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b0"+ + "\u0001\u02b0\u0001\u02b1\u0001\u02b1\u0003\u02b1\u1a68\b\u02b1\u0001\u02b1"+ + "\u0001\u02b1\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2"+ + "\u0005\u02b2\u1a71\b\u02b2\n\u02b2\f\u02b2\u1a74\t\u02b2\u0001\u02b3\u0001"+ + "\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b4\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\u0001\u02b7\u0001\u02b7\u0001\u02b7\u0001"+ + "\u02b7\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001"+ + "\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02ba\u0004"+ + "\u02ba\u1a9b\b\u02ba\u000b\u02ba\f\u02ba\u1a9c\u0001\u02ba\u0001\u02ba"+ + "\u0005\u02ba\u1aa1\b\u02ba\n\u02ba\f\u02ba\u1aa4\t\u02ba\u0003\u02ba\u1aa6"+ + "\b\u02ba\u0001\u02bb\u0001\u02bb\u0003\u02bb\u1aaa\b\u02bb\u0001\u02bb"+ + "\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bb"+ + "\u0000\u0000\u02bc\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\u027f\u050b\u0280\u050d\u0281\u050f\u0000"+ + "\u0511\u0000\u0513\u0000\u0515\u0282\u0517\u0283\u0519\u0284\u051b\u0285"+ + "\u051d\u0286\u051f\u0287\u0521\u0288\u0523\u0289\u0525\u028a\u0527\u028b"+ + "\u0529\u0000\u052b\u028c\u052d\u028d\u052f\u028e\u0531\u0000\u0533\u028f"+ + "\u0535\u0290\u0537\u0291\u0539\u0292\u053b\u0293\u053d\u0294\u053f\u0295"+ + "\u0541\u0296\u0543\u0297\u0545\u0298\u0547\u0299\u0549\u0000\u054b\u029a"+ + "\u054d\u029b\u054f\u029c\u0551\u029d\u0553\u029e\u0555\u029f\u0557\u02a0"+ + "\u0559\u02a1\u055b\u02a2\u055d\u02a3\u055f\u02a4\u0561\u02a5\u0563\u0000"+ + "\u0565\u02a6\u0567\u02a7\u0569\u0000\u056b\u0000\u056d\u0000\u056f\u02a8"+ + "\u0571\u0000\u0573\u0000\u0575\u02ac\u0577\u02a9\u0579\u02aa\u057b\u02ab"+ + "\u0005\u0000\u0001\u0002\u0003\u00043\u0001\u000009\u0002\u0000++--\t"+ + "\u0000!!##%&**<@^^``||~~\u0002\u0000*+<>\b\u0000!!##%&?@^^``||~~\u0002"+ + "\u0000AAaa\u0002\u0000LLll\u0002\u0000NNnn\u0002\u0000YYyy\u0002\u0000"+ + "SSss\u0002\u0000EEee\u0002\u0000ZZzz\u0002\u0000DDdd\u0002\u0000RRrr\u0002"+ + "\u0000CCcc\u0002\u0000MMmm\u0002\u0000TTtt\u0002\u0000IIii\u0002\u0000"+ + "BBbb\u0002\u0000OOoo\u0002\u0000HHhh\u0002\u0000KKkk\u0002\u0000UUuu\u0002"+ + "\u0000GGgg\u0002\u0000PPpp\u0002\u0000FFff\u0002\u0000XXxx\u0002\u0000"+ + "VVvv\u0002\u0000WWww\u0002\u0000QQqq\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$"+ + "$\u1afa\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\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\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\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\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\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\u0509\u0001\u0000\u0000\u0000\u0000\u050b"+ + "\u0001\u0000\u0000\u0000\u0000\u050d\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\u052b\u0001\u0000\u0000\u0000\u0000\u052d"+ + "\u0001\u0000\u0000\u0000\u0000\u052f\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\u0543"+ + "\u0001\u0000\u0000\u0000\u0000\u0545\u0001\u0000\u0000\u0000\u0000\u0547"+ + "\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\u0000\u0559"+ + "\u0001\u0000\u0000\u0000\u0000\u055b\u0001\u0000\u0000\u0000\u0000\u055d"+ + "\u0001\u0000\u0000\u0000\u0001\u055f\u0001\u0000\u0000\u0000\u0001\u0561"+ + "\u0001\u0000\u0000\u0000\u0001\u0565\u0001\u0000\u0000\u0000\u0001\u0567"+ + "\u0001\u0000\u0000\u0000\u0002\u056b\u0001\u0000\u0000\u0000\u0002\u056d"+ + "\u0001\u0000\u0000\u0000\u0002\u056f\u0001\u0000\u0000\u0000\u0003\u0571"+ + "\u0001\u0000\u0000\u0000\u0003\u0573\u0001\u0000\u0000\u0000\u0003\u0575"+ + "\u0001\u0000\u0000\u0000\u0003\u0577\u0001\u0000\u0000\u0000\u0004\u0579"+ + "\u0001\u0000\u0000\u0000\u0004\u057b\u0001\u0000\u0000\u0000\u0005\u057d"+ + "\u0001\u0000\u0000\u0000\u0007\u057f\u0001\u0000\u0000\u0000\t\u0581\u0001"+ + "\u0000\u0000\u0000\u000b\u0583\u0001\u0000\u0000\u0000\r\u0585\u0001\u0000"+ + "\u0000\u0000\u000f\u0587\u0001\u0000\u0000\u0000\u0011\u0589\u0001\u0000"+ + "\u0000\u0000\u0013\u058b\u0001\u0000\u0000\u0000\u0015\u058d\u0001\u0000"+ + "\u0000\u0000\u0017\u058f\u0001\u0000\u0000\u0000\u0019\u0591\u0001\u0000"+ + "\u0000\u0000\u001b\u0593\u0001\u0000\u0000\u0000\u001d\u0595\u0001\u0000"+ + "\u0000\u0000\u001f\u0597\u0001\u0000\u0000\u0000!\u0599\u0001\u0000\u0000"+ + "\u0000#\u059b\u0001\u0000\u0000\u0000%\u059d\u0001\u0000\u0000\u0000\'"+ + "\u059f\u0001\u0000\u0000\u0000)\u05a2\u0001\u0000\u0000\u0000+\u05a5\u0001"+ + "\u0000\u0000\u0000-\u05a8\u0001\u0000\u0000\u0000/\u05ab\u0001\u0000\u0000"+ + "\u00001\u05ae\u0001\u0000\u0000\u00003\u05b1\u0001\u0000\u0000\u00005"+ + "\u05b4\u0001\u0000\u0000\u00007\u05b7\u0001\u0000\u0000\u00009\u05ba\u0001"+ + "\u0000\u0000\u0000;\u05bc\u0001\u0000\u0000\u0000=\u05d6\u0001\u0000\u0000"+ + "\u0000?\u05e1\u0001\u0000\u0000\u0000A\u05f1\u0001\u0000\u0000\u0000C"+ + "\u05f3\u0001\u0000\u0000\u0000E\u05f5\u0001\u0000\u0000\u0000G\u05f7\u0001"+ + "\u0000\u0000\u0000I\u05fb\u0001\u0000\u0000\u0000K\u0603\u0001\u0000\u0000"+ + "\u0000M\u060b\u0001\u0000\u0000\u0000O\u060f\u0001\u0000\u0000\u0000Q"+ + "\u0613\u0001\u0000\u0000\u0000S\u0619\u0001\u0000\u0000\u0000U\u061c\u0001"+ + "\u0000\u0000\u0000W\u0620\u0001\u0000\u0000\u0000Y\u062b\u0001\u0000\u0000"+ + "\u0000[\u0630\u0001\u0000\u0000\u0000]\u0635\u0001\u0000\u0000\u0000_"+ + "\u063a\u0001\u0000\u0000\u0000a\u0640\u0001\u0000\u0000\u0000c\u0648\u0001"+ + "\u0000\u0000\u0000e\u064f\u0001\u0000\u0000\u0000g\u065a\u0001\u0000\u0000"+ + "\u0000i\u0661\u0001\u0000\u0000\u0000k\u0671\u0001\u0000\u0000\u0000m"+ + "\u067e\u0001\u0000\u0000\u0000o\u068b\u0001\u0000\u0000\u0000q\u0698\u0001"+ + "\u0000\u0000\u0000s\u06aa\u0001\u0000\u0000\u0000u\u06b7\u0001\u0000\u0000"+ + "\u0000w\u06bf\u0001\u0000\u0000\u0000y\u06ca\u0001\u0000\u0000\u0000{"+ + "\u06cf\u0001\u0000\u0000\u0000}\u06d8\u0001\u0000\u0000\u0000\u007f\u06db"+ + "\u0001\u0000\u0000\u0000\u0081\u06e0\u0001\u0000\u0000\u0000\u0083\u06e7"+ + "\u0001\u0000\u0000\u0000\u0085\u06ed\u0001\u0000\u0000\u0000\u0087\u06f3"+ + "\u0001\u0000\u0000\u0000\u0089\u06f7\u0001\u0000\u0000\u0000\u008b\u06ff"+ + "\u0001\u0000\u0000\u0000\u008d\u0704\u0001\u0000\u0000\u0000\u008f\u070a"+ + "\u0001\u0000\u0000\u0000\u0091\u0710\u0001\u0000\u0000\u0000\u0093\u0717"+ + "\u0001\u0000\u0000\u0000\u0095\u071a\u0001\u0000\u0000\u0000\u0097\u0724"+ + "\u0001\u0000\u0000\u0000\u0099\u072e\u0001\u0000\u0000\u0000\u009b\u0733"+ + "\u0001\u0000\u0000\u0000\u009d\u073b\u0001\u0000\u0000\u0000\u009f\u0743"+ + "\u0001\u0000\u0000\u0000\u00a1\u0749\u0001\u0000\u0000\u0000\u00a3\u0753"+ + "\u0001\u0000\u0000\u0000\u00a5\u0762\u0001\u0000\u0000\u0000\u00a7\u0766"+ + "\u0001\u0000\u0000\u0000\u00a9\u076b\u0001\u0000\u0000\u0000\u00ab\u0772"+ + "\u0001\u0000\u0000\u0000\u00ad\u0775\u0001\u0000\u0000\u0000\u00af\u077a"+ + "\u0001\u0000\u0000\u0000\u00b1\u077d\u0001\u0000\u0000\u0000\u00b3\u0783"+ + "\u0001\u0000\u0000\u0000\u00b5\u078b\u0001\u0000\u0000\u0000\u00b7\u0793"+ + "\u0001\u0000\u0000\u0000\u00b9\u079e\u0001\u0000\u0000\u0000\u00bb\u07a8"+ + "\u0001\u0000\u0000\u0000\u00bd\u07af\u0001\u0000\u0000\u0000\u00bf\u07bc"+ + "\u0001\u0000\u0000\u0000\u00c1\u07c1\u0001\u0000\u0000\u0000\u00c3\u07cb"+ + "\u0001\u0000\u0000\u0000\u00c5\u07d1\u0001\u0000\u0000\u0000\u00c7\u07d6"+ + "\u0001\u0000\u0000\u0000\u00c9\u07d9\u0001\u0000\u0000\u0000\u00cb\u07df"+ + "\u0001\u0000\u0000\u0000\u00cd\u07e6\u0001\u0000\u0000\u0000\u00cf\u07ed"+ + "\u0001\u0000\u0000\u0000\u00d1\u07f3\u0001\u0000\u0000\u0000\u00d3\u07fa"+ + "\u0001\u0000\u0000\u0000\u00d5\u0803\u0001\u0000\u0000\u0000\u00d7\u0808"+ + "\u0001\u0000\u0000\u0000\u00d9\u080e\u0001\u0000\u0000\u0000\u00db\u0815"+ + "\u0001\u0000\u0000\u0000\u00dd\u081a\u0001\u0000\u0000\u0000\u00df\u0820"+ + "\u0001\u0000\u0000\u0000\u00e1\u0829\u0001\u0000\u0000\u0000\u00e3\u082e"+ + "\u0001\u0000\u0000\u0000\u00e5\u0834\u0001\u0000\u0000\u0000\u00e7\u083b"+ + "\u0001\u0000\u0000\u0000\u00e9\u0840\u0001\u0000\u0000\u0000\u00eb\u084e"+ + "\u0001\u0000\u0000\u0000\u00ed\u0855\u0001\u0000\u0000\u0000\u00ef\u085f"+ + "\u0001\u0000\u0000\u0000\u00f1\u086c\u0001\u0000\u0000\u0000\u00f3\u0872"+ + "\u0001\u0000\u0000\u0000\u00f5\u0881\u0001\u0000\u0000\u0000\u00f7\u0888"+ + "\u0001\u0000\u0000\u0000\u00f9\u088d\u0001\u0000\u0000\u0000\u00fb\u0893"+ + "\u0001\u0000\u0000\u0000\u00fd\u0899\u0001\u0000\u0000\u0000\u00ff\u089c"+ + "\u0001\u0000\u0000\u0000\u0101\u08a3\u0001\u0000\u0000\u0000\u0103\u08a8"+ + "\u0001\u0000\u0000\u0000\u0105\u08ad\u0001\u0000\u0000\u0000\u0107\u08b2"+ + "\u0001\u0000\u0000\u0000\u0109\u08ba\u0001\u0000\u0000\u0000\u010b\u08c2"+ + "\u0001\u0000\u0000\u0000\u010d\u08c8\u0001\u0000\u0000\u0000\u010f\u08cd"+ + "\u0001\u0000\u0000\u0000\u0111\u08d6\u0001\u0000\u0000\u0000\u0113\u08dc"+ + "\u0001\u0000\u0000\u0000\u0115\u08e4\u0001\u0000\u0000\u0000\u0117\u08ec"+ + "\u0001\u0000\u0000\u0000\u0119\u08f2\u0001\u0000\u0000\u0000\u011b\u08fb"+ + "\u0001\u0000\u0000\u0000\u011d\u0902\u0001\u0000\u0000\u0000\u011f\u0909"+ + "\u0001\u0000\u0000\u0000\u0121\u090d\u0001\u0000\u0000\u0000\u0123\u0913"+ + "\u0001\u0000\u0000\u0000\u0125\u0919\u0001\u0000\u0000\u0000\u0127\u0923"+ + "\u0001\u0000\u0000\u0000\u0129\u0928\u0001\u0000\u0000\u0000\u012b\u092e"+ + "\u0001\u0000\u0000\u0000\u012d\u0935\u0001\u0000\u0000\u0000\u012f\u093f"+ + "\u0001\u0000\u0000\u0000\u0131\u094a\u0001\u0000\u0000\u0000\u0133\u094d"+ + "\u0001\u0000\u0000\u0000\u0135\u0957\u0001\u0000\u0000\u0000\u0137\u0960"+ + "\u0001\u0000\u0000\u0000\u0139\u0967\u0001\u0000\u0000\u0000\u013b\u096d"+ + "\u0001\u0000\u0000\u0000\u013d\u0970\u0001\u0000\u0000\u0000\u013f\u0976"+ + "\u0001\u0000\u0000\u0000\u0141\u097d\u0001\u0000\u0000\u0000\u0143\u0985"+ + "\u0001\u0000\u0000\u0000\u0145\u098e\u0001\u0000\u0000\u0000\u0147\u0996"+ + "\u0001\u0000\u0000\u0000\u0149\u099c\u0001\u0000\u0000\u0000\u014b\u09ac"+ + "\u0001\u0000\u0000\u0000\u014d\u09b7\u0001\u0000\u0000\u0000\u014f\u09bd"+ + "\u0001\u0000\u0000\u0000\u0151\u09c3\u0001\u0000\u0000\u0000\u0153\u09cb"+ + "\u0001\u0000\u0000\u0000\u0155\u09d3\u0001\u0000\u0000\u0000\u0157\u09dc"+ + "\u0001\u0000\u0000\u0000\u0159\u09e3\u0001\u0000\u0000\u0000\u015b\u09ed"+ + "\u0001\u0000\u0000\u0000\u015d\u09fb\u0001\u0000\u0000\u0000\u015f\u0a06"+ + "\u0001\u0000\u0000\u0000\u0161\u0a12\u0001\u0000\u0000\u0000\u0163\u0a1a"+ + "\u0001\u0000\u0000\u0000\u0165\u0a23\u0001\u0000\u0000\u0000\u0167\u0a2e"+ + "\u0001\u0000\u0000\u0000\u0169\u0a33\u0001\u0000\u0000\u0000\u016b\u0a38"+ + "\u0001\u0000\u0000\u0000\u016d\u0a3c\u0001\u0000\u0000\u0000\u016f\u0a43"+ + "\u0001\u0000\u0000\u0000\u0171\u0a49\u0001\u0000\u0000\u0000\u0173\u0a4e"+ + "\u0001\u0000\u0000\u0000\u0175\u0a57\u0001\u0000\u0000\u0000\u0177\u0a5b"+ + "\u0001\u0000\u0000\u0000\u0179\u0a66\u0001\u0000\u0000\u0000\u017b\u0a6e"+ + "\u0001\u0000\u0000\u0000\u017d\u0a77\u0001\u0000\u0000\u0000\u017f\u0a80"+ + "\u0001\u0000\u0000\u0000\u0181\u0a88\u0001\u0000\u0000\u0000\u0183\u0a8f"+ + "\u0001\u0000\u0000\u0000\u0185\u0a99\u0001\u0000\u0000\u0000\u0187\u0aa4"+ + "\u0001\u0000\u0000\u0000\u0189\u0aaf\u0001\u0000\u0000\u0000\u018b\u0ab7"+ + "\u0001\u0000\u0000\u0000\u018d\u0abf\u0001\u0000\u0000\u0000\u018f\u0ac8"+ + "\u0001\u0000\u0000\u0000\u0191\u0acf\u0001\u0000\u0000\u0000\u0193\u0ad6"+ + "\u0001\u0000\u0000\u0000\u0195\u0adb\u0001\u0000\u0000\u0000\u0197\u0ae0"+ + "\u0001\u0000\u0000\u0000\u0199\u0ae7\u0001\u0000\u0000\u0000\u019b\u0af0"+ + "\u0001\u0000\u0000\u0000\u019d\u0afa\u0001\u0000\u0000\u0000\u019f\u0aff"+ + "\u0001\u0000\u0000\u0000\u01a1\u0b06\u0001\u0000\u0000\u0000\u01a3\u0b0c"+ + "\u0001\u0000\u0000\u0000\u01a5\u0b14\u0001\u0000\u0000\u0000\u01a7\u0b1e"+ + "\u0001\u0000\u0000\u0000\u01a9\u0b28\u0001\u0000\u0000\u0000\u01ab\u0b30"+ + "\u0001\u0000\u0000\u0000\u01ad\u0b38\u0001\u0000\u0000\u0000\u01af\u0b42"+ + "\u0001\u0000\u0000\u0000\u01b1\u0b4b\u0001\u0000\u0000\u0000\u01b3\u0b52"+ + "\u0001\u0000\u0000\u0000\u01b5\u0b58\u0001\u0000\u0000\u0000\u01b7\u0b62"+ + "\u0001\u0000\u0000\u0000\u01b9\u0b68\u0001\u0000\u0000\u0000\u01bb\u0b70"+ + "\u0001\u0000\u0000\u0000\u01bd\u0b79\u0001\u0000\u0000\u0000\u01bf\u0b83"+ + "\u0001\u0000\u0000\u0000\u01c1\u0b8a\u0001\u0000\u0000\u0000\u01c3\u0b92"+ + "\u0001\u0000\u0000\u0000\u01c5\u0b9a\u0001\u0000\u0000\u0000\u01c7\u0ba1"+ + "\u0001\u0000\u0000\u0000\u01c9\u0ba6\u0001\u0000\u0000\u0000\u01cb\u0bab"+ + "\u0001\u0000\u0000\u0000\u01cd\u0bb4\u0001\u0000\u0000\u0000\u01cf\u0bb7"+ + "\u0001\u0000\u0000\u0000\u01d1\u0bc1\u0001\u0000\u0000\u0000\u01d3\u0bcb"+ + "\u0001\u0000\u0000\u0000\u01d5\u0bd4\u0001\u0000\u0000\u0000\u01d7\u0bde"+ + "\u0001\u0000\u0000\u0000\u01d9\u0be8\u0001\u0000\u0000\u0000\u01db\u0bee"+ + "\u0001\u0000\u0000\u0000\u01dd\u0bf6\u0001\u0000\u0000\u0000\u01df\u0bfe"+ + "\u0001\u0000\u0000\u0000\u01e1\u0c07\u0001\u0000\u0000\u0000\u01e3\u0c0e"+ + "\u0001\u0000\u0000\u0000\u01e5\u0c1a\u0001\u0000\u0000\u0000\u01e7\u0c21"+ + "\u0001\u0000\u0000\u0000\u01e9\u0c29\u0001\u0000\u0000\u0000\u01eb\u0c31"+ + "\u0001\u0000\u0000\u0000\u01ed\u0c3b\u0001\u0000\u0000\u0000\u01ef\u0c3f"+ + "\u0001\u0000\u0000\u0000\u01f1\u0c45\u0001\u0000\u0000\u0000\u01f3\u0c4e"+ + "\u0001\u0000\u0000\u0000\u01f5\u0c54\u0001\u0000\u0000\u0000\u01f7\u0c59"+ + "\u0001\u0000\u0000\u0000\u01f9\u0c63\u0001\u0000\u0000\u0000\u01fb\u0c69"+ + "\u0001\u0000\u0000\u0000\u01fd\u0c70\u0001\u0000\u0000\u0000\u01ff\u0c75"+ + "\u0001\u0000\u0000\u0000\u0201\u0c7b\u0001\u0000\u0000\u0000\u0203\u0c84"+ + "\u0001\u0000\u0000\u0000\u0205\u0c89\u0001\u0000\u0000\u0000\u0207\u0c91"+ + "\u0001\u0000\u0000\u0000\u0209\u0c97\u0001\u0000\u0000\u0000\u020b\u0c9f"+ + "\u0001\u0000\u0000\u0000\u020d\u0cac\u0001\u0000\u0000\u0000\u020f\u0cb5"+ + "\u0001\u0000\u0000\u0000\u0211\u0cbb\u0001\u0000\u0000\u0000\u0213\u0cc2"+ + "\u0001\u0000\u0000\u0000\u0215\u0ccb\u0001\u0000\u0000\u0000\u0217\u0cd0"+ + "\u0001\u0000\u0000\u0000\u0219\u0cd6\u0001\u0000\u0000\u0000\u021b\u0cdb"+ + "\u0001\u0000\u0000\u0000\u021d\u0ce0\u0001\u0000\u0000\u0000\u021f\u0ce6"+ + "\u0001\u0000\u0000\u0000\u0221\u0ceb\u0001\u0000\u0000\u0000\u0223\u0cee"+ + "\u0001\u0000\u0000\u0000\u0225\u0cf6\u0001\u0000\u0000\u0000\u0227\u0cfd"+ + "\u0001\u0000\u0000\u0000\u0229\u0d04\u0001\u0000\u0000\u0000\u022b\u0d0a"+ + "\u0001\u0000\u0000\u0000\u022d\u0d11\u0001\u0000\u0000\u0000\u022f\u0d14"+ + "\u0001\u0000\u0000\u0000\u0231\u0d18\u0001\u0000\u0000\u0000\u0233\u0d1d"+ + "\u0001\u0000\u0000\u0000\u0235\u0d26\u0001\u0000\u0000\u0000\u0237\u0d2d"+ + "\u0001\u0000\u0000\u0000\u0239\u0d35\u0001\u0000\u0000\u0000\u023b\u0d3b"+ + "\u0001\u0000\u0000\u0000\u023d\u0d41\u0001\u0000\u0000\u0000\u023f\u0d48"+ + "\u0001\u0000\u0000\u0000\u0241\u0d50\u0001\u0000\u0000\u0000\u0243\u0d5a"+ + "\u0001\u0000\u0000\u0000\u0245\u0d62\u0001\u0000\u0000\u0000\u0247\u0d6b"+ + "\u0001\u0000\u0000\u0000\u0249\u0d71\u0001\u0000\u0000\u0000\u024b\u0d7b"+ + "\u0001\u0000\u0000\u0000\u024d\u0d83\u0001\u0000\u0000\u0000\u024f\u0d8c"+ + "\u0001\u0000\u0000\u0000\u0251\u0d95\u0001\u0000\u0000\u0000\u0253\u0d9b"+ + "\u0001\u0000\u0000\u0000\u0255\u0da6\u0001\u0000\u0000\u0000\u0257\u0db1"+ + "\u0001\u0000\u0000\u0000\u0259\u0dbb\u0001\u0000\u0000\u0000\u025b\u0dc3"+ + "\u0001\u0000\u0000\u0000\u025d\u0dc9\u0001\u0000\u0000\u0000\u025f\u0dcf"+ + "\u0001\u0000\u0000\u0000\u0261\u0dd4\u0001\u0000\u0000\u0000\u0263\u0ddd"+ + "\u0001\u0000\u0000\u0000\u0265\u0de5\u0001\u0000\u0000\u0000\u0267\u0def"+ + "\u0001\u0000\u0000\u0000\u0269\u0df3\u0001\u0000\u0000\u0000\u026b\u0dfb"+ + "\u0001\u0000\u0000\u0000\u026d\u0e03\u0001\u0000\u0000\u0000\u026f\u0e0c"+ + "\u0001\u0000\u0000\u0000\u0271\u0e14\u0001\u0000\u0000\u0000\u0273\u0e1b"+ + "\u0001\u0000\u0000\u0000\u0275\u0e26\u0001\u0000\u0000\u0000\u0277\u0e2e"+ + "\u0001\u0000\u0000\u0000\u0279\u0e36\u0001\u0000\u0000\u0000\u027b\u0e3c"+ + "\u0001\u0000\u0000\u0000\u027d\u0e44\u0001\u0000\u0000\u0000\u027f\u0e4d"+ + "\u0001\u0000\u0000\u0000\u0281\u0e55\u0001\u0000\u0000\u0000\u0283\u0e5c"+ + "\u0001\u0000\u0000\u0000\u0285\u0e61\u0001\u0000\u0000\u0000\u0287\u0e6a"+ + "\u0001\u0000\u0000\u0000\u0289\u0e6f\u0001\u0000\u0000\u0000\u028b\u0e74"+ + "\u0001\u0000\u0000\u0000\u028d\u0e7e\u0001\u0000\u0000\u0000\u028f\u0e85"+ + "\u0001\u0000\u0000\u0000\u0291\u0e8c\u0001\u0000\u0000\u0000\u0293\u0e93"+ + "\u0001\u0000\u0000\u0000\u0295\u0e9a\u0001\u0000\u0000\u0000\u0297\u0ea3"+ + "\u0001\u0000\u0000\u0000\u0299\u0eac\u0001\u0000\u0000\u0000\u029b\u0eb6"+ + "\u0001\u0000\u0000\u0000\u029d\u0ec3\u0001\u0000\u0000\u0000\u029f\u0eca"+ + "\u0001\u0000\u0000\u0000\u02a1\u0ed2\u0001\u0000\u0000\u0000\u02a3\u0ed6"+ + "\u0001\u0000\u0000\u0000\u02a5\u0edc\u0001\u0000\u0000\u0000\u02a7\u0ee1"+ + "\u0001\u0000\u0000\u0000\u02a9\u0ee8\u0001\u0000\u0000\u0000\u02ab\u0ef1"+ + "\u0001\u0000\u0000\u0000\u02ad\u0ef8\u0001\u0000\u0000\u0000\u02af\u0f03"+ + "\u0001\u0000\u0000\u0000\u02b1\u0f09\u0001\u0000\u0000\u0000\u02b3\u0f13"+ + "\u0001\u0000\u0000\u0000\u02b5\u0f1e\u0001\u0000\u0000\u0000\u02b7\u0f24"+ + "\u0001\u0000\u0000\u0000\u02b9\u0f2b\u0001\u0000\u0000\u0000\u02bb\u0f33"+ + "\u0001\u0000\u0000\u0000\u02bd\u0f3a\u0001\u0000\u0000\u0000\u02bf\u0f40"+ + "\u0001\u0000\u0000\u0000\u02c1\u0f46\u0001\u0000\u0000\u0000\u02c3\u0f4d"+ + "\u0001\u0000\u0000\u0000\u02c5\u0f54\u0001\u0000\u0000\u0000\u02c7\u0f5f"+ + "\u0001\u0000\u0000\u0000\u02c9\u0f64\u0001\u0000\u0000\u0000\u02cb\u0f6d"+ + "\u0001\u0000\u0000\u0000\u02cd\u0f77\u0001\u0000\u0000\u0000\u02cf\u0f7c"+ + "\u0001\u0000\u0000\u0000\u02d1\u0f88\u0001\u0000\u0000\u0000\u02d3\u0f90"+ + "\u0001\u0000\u0000\u0000\u02d5\u0f99\u0001\u0000"; + private static final String _serializedATNSegment1 = + "\u0000\u0000\u02d7\u0fa1\u0001\u0000\u0000\u0000\u02d9\u0fa6\u0001\u0000"+ + "\u0000\u0000\u02db\u0fac\u0001\u0000\u0000\u0000\u02dd\u0fb6\u0001\u0000"+ + "\u0000\u0000\u02df\u0fc2\u0001\u0000\u0000\u0000\u02e1\u0fce\u0001\u0000"+ + "\u0000\u0000\u02e3\u0fd6\u0001\u0000\u0000\u0000\u02e5\u0fdf\u0001\u0000"+ + "\u0000\u0000\u02e7\u0fe8\u0001\u0000\u0000\u0000\u02e9\u0fee\u0001\u0000"+ + "\u0000\u0000\u02eb\u0ff5\u0001\u0000\u0000\u0000\u02ed\u0ffc\u0001\u0000"+ + "\u0000\u0000\u02ef\u1002\u0001\u0000\u0000\u0000\u02f1\u100b\u0001\u0000"+ + "\u0000\u0000\u02f3\u1015\u0001\u0000\u0000\u0000\u02f5\u101d\u0001\u0000"+ + "\u0000\u0000\u02f7\u1025\u0001\u0000\u0000\u0000\u02f9\u102a\u0001\u0000"+ + "\u0000\u0000\u02fb\u1033\u0001\u0000\u0000\u0000\u02fd\u103e\u0001\u0000"+ + "\u0000\u0000\u02ff\u1046\u0001\u0000\u0000\u0000\u0301\u104b\u0001\u0000"+ + "\u0000\u0000\u0303\u1053\u0001\u0000\u0000\u0000\u0305\u1059\u0001\u0000"+ + "\u0000\u0000\u0307\u105d\u0001\u0000\u0000\u0000\u0309\u1062\u0001\u0000"+ + "\u0000\u0000\u030b\u1066\u0001\u0000\u0000\u0000\u030d\u106b\u0001\u0000"+ + "\u0000\u0000\u030f\u1073\u0001\u0000\u0000\u0000\u0311\u107a\u0001\u0000"+ + "\u0000\u0000\u0313\u107e\u0001\u0000\u0000\u0000\u0315\u1086\u0001\u0000"+ + "\u0000\u0000\u0317\u108b\u0001\u0000\u0000\u0000\u0319\u1095\u0001\u0000"+ + "\u0000\u0000\u031b\u109e\u0001\u0000\u0000\u0000\u031d\u10a2\u0001\u0000"+ + "\u0000\u0000\u031f\u10aa\u0001\u0000\u0000\u0000\u0321\u10b1\u0001\u0000"+ + "\u0000\u0000\u0323\u10b9\u0001\u0000\u0000\u0000\u0325\u10bf\u0001\u0000"+ + "\u0000\u0000\u0327\u10c8\u0001\u0000\u0000\u0000\u0329\u10ce\u0001\u0000"+ + "\u0000\u0000\u032b\u10d2\u0001\u0000\u0000\u0000\u032d\u10da\u0001\u0000"+ + "\u0000\u0000\u032f\u10e3\u0001\u0000\u0000\u0000\u0331\u10e9\u0001\u0000"+ + "\u0000\u0000\u0333\u10f2\u0001\u0000\u0000\u0000\u0335\u10f8\u0001\u0000"+ + "\u0000\u0000\u0337\u10fd\u0001\u0000\u0000\u0000\u0339\u1104\u0001\u0000"+ + "\u0000\u0000\u033b\u110c\u0001\u0000\u0000\u0000\u033d\u1114\u0001\u0000"+ + "\u0000\u0000\u033f\u111d\u0001\u0000\u0000\u0000\u0341\u1127\u0001\u0000"+ + "\u0000\u0000\u0343\u112c\u0001\u0000\u0000\u0000\u0345\u1130\u0001\u0000"+ + "\u0000\u0000\u0347\u1136\u0001\u0000\u0000\u0000\u0349\u113f\u0001\u0000"+ + "\u0000\u0000\u034b\u1149\u0001\u0000\u0000\u0000\u034d\u114e\u0001\u0000"+ + "\u0000\u0000\u034f\u1158\u0001\u0000\u0000\u0000\u0351\u115e\u0001\u0000"+ + "\u0000\u0000\u0353\u1163\u0001\u0000\u0000\u0000\u0355\u116a\u0001\u0000"+ + "\u0000\u0000\u0357\u1172\u0001\u0000\u0000\u0000\u0359\u1180\u0001\u0000"+ + "\u0000\u0000\u035b\u118b\u0001\u0000\u0000\u0000\u035d\u1192\u0001\u0000"+ + "\u0000\u0000\u035f\u11a5\u0001\u0000\u0000\u0000\u0361\u11c1\u0001\u0000"+ + "\u0000\u0000\u0363\u11dc\u0001\u0000\u0000\u0000\u0365\u11e2\u0001\u0000"+ + "\u0000\u0000\u0367\u11ef\u0001\u0000\u0000\u0000\u0369\u11f9\u0001\u0000"+ + "\u0000\u0000\u036b\u1204\u0001\u0000\u0000\u0000\u036d\u120e\u0001\u0000"+ + "\u0000\u0000\u036f\u1218\u0001\u0000\u0000\u0000\u0371\u1221\u0001\u0000"+ + "\u0000\u0000\u0373\u1227\u0001\u0000\u0000\u0000\u0375\u122f\u0001\u0000"+ + "\u0000\u0000\u0377\u123c\u0001\u0000\u0000\u0000\u0379\u1241\u0001\u0000"+ + "\u0000\u0000\u037b\u1249\u0001\u0000\u0000\u0000\u037d\u1250\u0001\u0000"+ + "\u0000\u0000\u037f\u1257\u0001\u0000\u0000\u0000\u0381\u1262\u0001\u0000"+ + "\u0000\u0000\u0383\u126c\u0001\u0000\u0000\u0000\u0385\u1273\u0001\u0000"+ + "\u0000\u0000\u0387\u127a\u0001\u0000\u0000\u0000\u0389\u1282\u0001\u0000"+ + "\u0000\u0000\u038b\u128a\u0001\u0000\u0000\u0000\u038d\u1294\u0001\u0000"+ + "\u0000\u0000\u038f\u129b\u0001\u0000\u0000\u0000\u0391\u12a2\u0001\u0000"+ + "\u0000\u0000\u0393\u12a9\u0001\u0000\u0000\u0000\u0395\u12b5\u0001\u0000"+ + "\u0000\u0000\u0397\u12b9\u0001\u0000\u0000\u0000\u0399\u12bd\u0001\u0000"+ + "\u0000\u0000\u039b\u12c3\u0001\u0000\u0000\u0000\u039d\u12d0\u0001\u0000"+ + "\u0000\u0000\u039f\u12dc\u0001\u0000\u0000\u0000\u03a1\u12e0\u0001\u0000"+ + "\u0000\u0000\u03a3\u12e4\u0001\u0000\u0000\u0000\u03a5\u12ed\u0001\u0000"+ + "\u0000\u0000\u03a7\u12f5\u0001\u0000\u0000\u0000\u03a9\u1300\u0001\u0000"+ + "\u0000\u0000\u03ab\u1306\u0001\u0000\u0000\u0000\u03ad\u130e\u0001\u0000"+ + "\u0000\u0000\u03af\u1317\u0001\u0000\u0000\u0000\u03b1\u131b\u0001\u0000"+ + "\u0000\u0000\u03b3\u1323\u0001\u0000\u0000\u0000\u03b5\u132e\u0001\u0000"+ + "\u0000\u0000\u03b7\u1337\u0001\u0000\u0000\u0000\u03b9\u133c\u0001\u0000"+ + "\u0000\u0000\u03bb\u1343\u0001\u0000\u0000\u0000\u03bd\u1348\u0001\u0000"+ + "\u0000\u0000\u03bf\u134f\u0001\u0000\u0000\u0000\u03c1\u1354\u0001\u0000"+ + "\u0000\u0000\u03c3\u135d\u0001\u0000\u0000\u0000\u03c5\u1362\u0001\u0000"+ + "\u0000\u0000\u03c7\u136e\u0001\u0000\u0000\u0000\u03c9\u1379\u0001\u0000"+ + "\u0000\u0000\u03cb\u1382\u0001\u0000\u0000\u0000\u03cd\u138a\u0001\u0000"+ + "\u0000\u0000\u03cf\u1398\u0001\u0000\u0000\u0000\u03d1\u13a0\u0001\u0000"+ + "\u0000\u0000\u03d3\u13ab\u0001\u0000\u0000\u0000\u03d5\u13b2\u0001\u0000"+ + "\u0000\u0000\u03d7\u13b9\u0001\u0000\u0000\u0000\u03d9\u13c0\u0001\u0000"+ + "\u0000\u0000\u03db\u13c7\u0001\u0000\u0000\u0000\u03dd\u13cb\u0001\u0000"+ + "\u0000\u0000\u03df\u13cf\u0001\u0000\u0000\u0000\u03e1\u13d4\u0001\u0000"+ + "\u0000\u0000\u03e3\u13d9\u0001\u0000\u0000\u0000\u03e5\u13e1\u0001\u0000"+ + "\u0000\u0000\u03e7\u13e7\u0001\u0000\u0000\u0000\u03e9\u13f1\u0001\u0000"+ + "\u0000\u0000\u03eb\u13f6\u0001\u0000\u0000\u0000\u03ed\u140a\u0001\u0000"+ + "\u0000\u0000\u03ef\u141c\u0001\u0000\u0000\u0000\u03f1\u1422\u0001\u0000"+ + "\u0000\u0000\u03f3\u142f\u0001\u0000\u0000\u0000\u03f5\u143a\u0001\u0000"+ + "\u0000\u0000\u03f7\u1440\u0001\u0000\u0000\u0000\u03f9\u1449\u0001\u0000"+ + "\u0000\u0000\u03fb\u1451\u0001\u0000\u0000\u0000\u03fd\u1455\u0001\u0000"+ + "\u0000\u0000\u03ff\u1461\u0001\u0000\u0000\u0000\u0401\u1469\u0001\u0000"+ + "\u0000\u0000\u0403\u146f\u0001\u0000\u0000\u0000\u0405\u1475\u0001\u0000"+ + "\u0000\u0000\u0407\u147d\u0001\u0000\u0000\u0000\u0409\u1485\u0001\u0000"+ + "\u0000\u0000\u040b\u148b\u0001\u0000\u0000\u0000\u040d\u1490\u0001\u0000"+ + "\u0000\u0000\u040f\u1497\u0001\u0000\u0000\u0000\u0411\u149d\u0001\u0000"+ + "\u0000\u0000\u0413\u14a3\u0001\u0000\u0000\u0000\u0415\u14ac\u0001\u0000"+ + "\u0000\u0000\u0417\u14b2\u0001\u0000\u0000\u0000\u0419\u14b6\u0001\u0000"+ + "\u0000\u0000\u041b\u14bb\u0001\u0000\u0000\u0000\u041d\u14c2\u0001\u0000"+ + "\u0000\u0000\u041f\u14ca\u0001\u0000\u0000\u0000\u0421\u14d4\u0001\u0000"+ + "\u0000\u0000\u0423\u14db\u0001\u0000\u0000\u0000\u0425\u14e0\u0001\u0000"+ + "\u0000\u0000\u0427\u14e5\u0001\u0000\u0000\u0000\u0429\u14e9\u0001\u0000"+ + "\u0000\u0000\u042b\u14ee\u0001\u0000\u0000\u0000\u042d\u14f3\u0001\u0000"+ + "\u0000\u0000\u042f\u14fb\u0001\u0000\u0000\u0000\u0431\u1503\u0001\u0000"+ + "\u0000\u0000\u0433\u1507\u0001\u0000\u0000\u0000\u0435\u150b\u0001\u0000"+ + "\u0000\u0000\u0437\u1515\u0001\u0000\u0000\u0000\u0439\u151b\u0001\u0000"+ + "\u0000\u0000\u043b\u151f\u0001\u0000\u0000\u0000\u043d\u1523\u0001\u0000"+ + "\u0000\u0000\u043f\u1526\u0001\u0000\u0000\u0000\u0441\u152c\u0001\u0000"+ + "\u0000\u0000\u0443\u1536\u0001\u0000\u0000\u0000\u0445\u153a\u0001\u0000"+ + "\u0000\u0000\u0447\u153d\u0001\u0000\u0000\u0000\u0449\u1543\u0001\u0000"+ + "\u0000\u0000\u044b\u154b\u0001\u0000\u0000\u0000\u044d\u1551\u0001\u0000"+ + "\u0000\u0000\u044f\u1557\u0001\u0000\u0000\u0000\u0451\u155c\u0001\u0000"+ + "\u0000\u0000\u0453\u1561\u0001\u0000\u0000\u0000\u0455\u156c\u0001\u0000"+ + "\u0000\u0000\u0457\u1572\u0001\u0000\u0000\u0000\u0459\u157f\u0001\u0000"+ + "\u0000\u0000\u045b\u1586\u0001\u0000\u0000\u0000\u045d\u158e\u0001\u0000"+ + "\u0000\u0000\u045f\u1593\u0001\u0000\u0000\u0000\u0461\u1599\u0001\u0000"+ + "\u0000\u0000\u0463\u159e\u0001\u0000\u0000\u0000\u0465\u15a4\u0001\u0000"+ + "\u0000\u0000\u0467\u15a9\u0001\u0000\u0000\u0000\u0469\u15af\u0001\u0000"+ + "\u0000\u0000\u046b\u15b5\u0001\u0000\u0000\u0000\u046d\u15bc\u0001\u0000"+ + "\u0000\u0000\u046f\u15c0\u0001\u0000\u0000\u0000\u0471\u15c5\u0001\u0000"+ + "\u0000\u0000\u0473\u15c9\u0001\u0000\u0000\u0000\u0475\u15ce\u0001\u0000"+ + "\u0000\u0000\u0477\u15d2\u0001\u0000\u0000\u0000\u0479\u15d7\u0001\u0000"+ + "\u0000\u0000\u047b\u15db\u0001\u0000\u0000\u0000\u047d\u15e0\u0001\u0000"+ + "\u0000\u0000\u047f\u15e5\u0001\u0000\u0000\u0000\u0481\u15ea\u0001\u0000"+ + "\u0000\u0000\u0483\u15ef\u0001\u0000\u0000\u0000\u0485\u15f5\u0001\u0000"+ + "\u0000\u0000\u0487\u15fb\u0001\u0000\u0000\u0000\u0489\u1601\u0001\u0000"+ + "\u0000\u0000\u048b\u160c\u0001\u0000\u0000\u0000\u048d\u1618\u0001\u0000"+ + "\u0000\u0000\u048f\u1629\u0001\u0000\u0000\u0000\u0491\u162f\u0001\u0000"+ + "\u0000\u0000\u0493\u163c\u0001\u0000\u0000\u0000\u0495\u1642\u0001\u0000"+ + "\u0000\u0000\u0497\u1648\u0001\u0000\u0000\u0000\u0499\u164e\u0001\u0000"+ + "\u0000\u0000\u049b\u1652\u0001\u0000\u0000\u0000\u049d\u1659\u0001\u0000"+ + "\u0000\u0000\u049f\u1663\u0001\u0000\u0000\u0000\u04a1\u166a\u0001\u0000"+ + "\u0000\u0000\u04a3\u1672\u0001\u0000\u0000\u0000\u04a5\u1679\u0001\u0000"+ + "\u0000\u0000\u04a7\u167e\u0001\u0000\u0000\u0000\u04a9\u1684\u0001\u0000"+ + "\u0000\u0000\u04ab\u1688\u0001\u0000\u0000\u0000\u04ad\u1694\u0001\u0000"+ + "\u0000\u0000\u04af\u16a7\u0001\u0000\u0000\u0000\u04b1\u16b3\u0001\u0000"+ + "\u0000\u0000\u04b3\u16c1\u0001\u0000\u0000\u0000\u04b5\u16d0\u0001\u0000"+ + "\u0000\u0000\u04b7\u16dd\u0001\u0000\u0000\u0000\u04b9\u16ea\u0001\u0000"+ + "\u0000\u0000\u04bb\u16f6\u0001\u0000\u0000\u0000\u04bd\u1703\u0001\u0000"+ + "\u0000\u0000\u04bf\u1712\u0001\u0000\u0000\u0000\u04c1\u1721\u0001\u0000"+ + "\u0000\u0000\u04c3\u1737\u0001\u0000\u0000\u0000\u04c5\u174d\u0001\u0000"+ + "\u0000\u0000\u04c7\u175b\u0001\u0000\u0000\u0000\u04c9\u1762\u0001\u0000"+ + "\u0000\u0000\u04cb\u1767\u0001\u0000\u0000\u0000\u04cd\u176d\u0001\u0000"+ + "\u0000\u0000\u04cf\u1778\u0001\u0000\u0000\u0000\u04d1\u1784\u0001\u0000"+ + "\u0000\u0000\u04d3\u1794\u0001\u0000\u0000\u0000\u04d5\u17a4\u0001\u0000"+ + "\u0000\u0000\u04d7\u17ab\u0001\u0000\u0000\u0000\u04d9\u17b2\u0001\u0000"+ + "\u0000\u0000\u04db\u17bb\u0001\u0000\u0000\u0000\u04dd\u17c2\u0001\u0000"+ + "\u0000\u0000\u04df\u17cc\u0001\u0000\u0000\u0000\u04e1\u17d3\u0001\u0000"+ + "\u0000\u0000\u04e3\u17d7\u0001\u0000\u0000\u0000\u04e5\u17e7\u0001\u0000"+ + "\u0000\u0000\u04e7\u17f0\u0001\u0000\u0000\u0000\u04e9\u17fa\u0001\u0000"+ + "\u0000\u0000\u04eb\u1805\u0001\u0000\u0000\u0000\u04ed\u180e\u0001\u0000"+ + "\u0000\u0000\u04ef\u181b\u0001\u0000\u0000\u0000\u04f1\u1829\u0001\u0000"+ + "\u0000\u0000\u04f3\u183a\u0001\u0000\u0000\u0000\u04f5\u1844\u0001\u0000"+ + "\u0000\u0000\u04f7\u1852\u0001\u0000\u0000\u0000\u04f9\u185c\u0001\u0000"+ + "\u0000\u0000\u04fb\u186b\u0001\u0000\u0000\u0000\u04fd\u187c\u0001\u0000"+ + "\u0000\u0000\u04ff\u1880\u0001\u0000\u0000\u0000\u0501\u1894\u0001\u0000"+ + "\u0000\u0000\u0503\u189e\u0001\u0000\u0000\u0000\u0505\u18b4\u0001\u0000"+ + "\u0000\u0000\u0507\u18c1\u0001\u0000\u0000\u0000\u0509\u18c9\u0001\u0000"+ + "\u0000\u0000\u050b\u18d1\u0001\u0000\u0000\u0000\u050d\u18db\u0001\u0000"+ + "\u0000\u0000\u050f\u18e8\u0001\u0000\u0000\u0000\u0511\u18ec\u0001\u0000"+ + "\u0000\u0000\u0513\u18f0\u0001\u0000\u0000\u0000\u0515\u18f2\u0001\u0000"+ + "\u0000\u0000\u0517\u18f5\u0001\u0000\u0000\u0000\u0519\u18fe\u0001\u0000"+ + "\u0000\u0000\u051b\u1901\u0001\u0000\u0000\u0000\u051d\u190a\u0001\u0000"+ + "\u0000\u0000\u051f\u190e\u0001\u0000\u0000\u0000\u0521\u1912\u0001\u0000"+ + "\u0000\u0000\u0523\u1916\u0001\u0000\u0000\u0000\u0525\u191a\u0001\u0000"+ + "\u0000\u0000\u0527\u191d\u0001\u0000\u0000\u0000\u0529\u1926\u0001\u0000"+ + "\u0000\u0000\u052b\u192c\u0001\u0000\u0000\u0000\u052d\u192f\u0001\u0000"+ + "\u0000\u0000\u052f\u1933\u0001\u0000\u0000\u0000\u0531\u193c\u0001\u0000"+ + "\u0000\u0000\u0533\u1943\u0001\u0000\u0000\u0000\u0535\u1946\u0001\u0000"+ + "\u0000\u0000\u0537\u194e\u0001\u0000\u0000\u0000\u0539\u1951\u0001\u0000"+ + "\u0000\u0000\u053b\u1954\u0001\u0000\u0000\u0000\u053d\u1957\u0001\u0000"+ + "\u0000\u0000\u053f\u195f\u0001\u0000\u0000\u0000\u0541\u1962\u0001\u0000"+ + "\u0000\u0000\u0543\u1965\u0001\u0000\u0000\u0000\u0545\u1967\u0001\u0000"+ + "\u0000\u0000\u0547\u1989\u0001\u0000\u0000\u0000\u0549\u198c\u0001\u0000"+ + "\u0000\u0000\u054b\u1990\u0001\u0000\u0000\u0000\u054d\u1998\u0001\u0000"+ + "\u0000\u0000\u054f\u19a8\u0001\u0000\u0000\u0000\u0551\u19b3\u0001\u0000"+ + "\u0000\u0000\u0553\u19b7\u0001\u0000\u0000\u0000\u0555\u19c2\u0001\u0000"+ + "\u0000\u0000\u0557\u19e9\u0001\u0000\u0000\u0000\u0559\u1a1c\u0001\u0000"+ + "\u0000\u0000\u055b\u1a34\u0001\u0000\u0000\u0000\u055d\u1a37\u0001\u0000"+ + "\u0000\u0000\u055f\u1a39\u0001\u0000\u0000\u0000\u0561\u1a3e\u0001\u0000"+ + "\u0000\u0000\u0563\u1a5d\u0001\u0000\u0000\u0000\u0565\u1a60\u0001\u0000"+ + "\u0000\u0000\u0567\u1a65\u0001\u0000\u0000\u0000\u0569\u1a72\u0001\u0000"+ + "\u0000\u0000\u056b\u1a75\u0001\u0000\u0000\u0000\u056d\u1a7a\u0001\u0000"+ + "\u0000\u0000\u056f\u1a80\u0001\u0000\u0000\u0000\u0571\u1a85\u0001\u0000"+ + "\u0000\u0000\u0573\u1a8a\u0001\u0000\u0000\u0000\u0575\u1a8f\u0001\u0000"+ + "\u0000\u0000\u0577\u1a94\u0001\u0000\u0000\u0000\u0579\u1aa5\u0001\u0000"+ + "\u0000\u0000\u057b\u1aa7\u0001\u0000\u0000\u0000\u057d\u057e\u0005$\u0000"+ + "\u0000\u057e\u0006\u0001\u0000\u0000\u0000\u057f\u0580\u0005(\u0000\u0000"+ + "\u0580\b\u0001\u0000\u0000\u0000\u0581\u0582\u0005)\u0000\u0000\u0582"+ + "\n\u0001\u0000\u0000\u0000\u0583\u0584\u0005[\u0000\u0000\u0584\f\u0001"+ + "\u0000\u0000\u0000\u0585\u0586\u0005]\u0000\u0000\u0586\u000e\u0001\u0000"+ + "\u0000\u0000\u0587\u0588\u0005,\u0000\u0000\u0588\u0010\u0001\u0000\u0000"+ + "\u0000\u0589\u058a\u0005;\u0000\u0000\u058a\u0012\u0001\u0000\u0000\u0000"+ + "\u058b\u058c\u0005:\u0000\u0000\u058c\u0014\u0001\u0000\u0000\u0000\u058d"+ + "\u058e\u0005*\u0000\u0000\u058e\u0016\u0001\u0000\u0000\u0000\u058f\u0590"+ + "\u0005=\u0000\u0000\u0590\u0018\u0001\u0000\u0000\u0000\u0591\u0592\u0005"+ + ".\u0000\u0000\u0592\u001a\u0001\u0000\u0000\u0000\u0593\u0594\u0005+\u0000"+ + "\u0000\u0594\u001c\u0001\u0000\u0000\u0000\u0595\u0596\u0005-\u0000\u0000"+ + "\u0596\u001e\u0001\u0000\u0000\u0000\u0597\u0598\u0005/\u0000\u0000\u0598"+ + " \u0001\u0000\u0000\u0000\u0599\u059a\u0005^\u0000\u0000\u059a\"\u0001"+ + "\u0000\u0000\u0000\u059b\u059c\u0005<\u0000\u0000\u059c$\u0001\u0000\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\u05a7,\u0001\u0000\u0000\u0000\u05a8\u05a9\u0005"+ + "<\u0000\u0000\u05a9\u05aa\u0005=\u0000\u0000\u05aa.\u0001\u0000\u0000"+ + "\u0000\u05ab\u05ac\u0005=\u0000\u0000\u05ac\u05ad\u0005>\u0000\u0000\u05ad"+ + "0\u0001\u0000\u0000\u0000\u05ae\u05af\u0005>\u0000\u0000\u05af\u05b0\u0005"+ + "=\u0000\u0000\u05b02\u0001\u0000\u0000\u0000\u05b1\u05b2\u0005.\u0000"+ + "\u0000\u05b2\u05b3\u0005.\u0000\u0000\u05b34\u0001\u0000\u0000\u0000\u05b4"+ + "\u05b5\u0005<\u0000\u0000\u05b5\u05b6\u0005>\u0000\u0000\u05b66\u0001"+ + "\u0000\u0000\u0000\u05b7\u05b8\u0005:\u0000\u0000\u05b8\u05b9\u0005:\u0000"+ + "\u0000\u05b98\u0001\u0000\u0000\u0000\u05ba\u05bb\u0005%\u0000\u0000\u05bb"+ + ":\u0001\u0000\u0000\u0000\u05bc\u05be\u0005$\u0000\u0000\u05bd\u05bf\u0007"+ + "\u0000\u0000\u0000\u05be\u05bd\u0001\u0000\u0000\u0000\u05bf\u05c0\u0001"+ + "\u0000\u0000\u0000\u05c0\u05be\u0001\u0000\u0000\u0000\u05c0\u05c1\u0001"+ + "\u0000\u0000\u0000\u05c1<\u0001\u0000\u0000\u0000\u05c2\u05d2\u0003A\u001e"+ + "\u0000\u05c3\u05c7\u0005+\u0000\u0000\u05c4\u05c5\u0005-\u0000\u0000\u05c5"+ + "\u05c7\u0004\u001c\u0000\u0000\u05c6\u05c3\u0001\u0000\u0000\u0000\u05c6"+ + "\u05c4\u0001\u0000\u0000\u0000\u05c7\u05c8\u0001\u0000\u0000\u0000\u05c8"+ + "\u05c6\u0001\u0000\u0000\u0000\u05c8\u05c9\u0001\u0000\u0000\u0000\u05c9"+ + "\u05cd\u0001\u0000\u0000\u0000\u05ca\u05ce\u0003A\u001e\u0000\u05cb\u05cc"+ + "\u0005/\u0000\u0000\u05cc\u05ce\u0004\u001c\u0001\u0000\u05cd\u05ca\u0001"+ + "\u0000\u0000\u0000\u05cd\u05cb\u0001\u0000\u0000\u0000\u05ce\u05d2\u0001"+ + "\u0000\u0000\u0000\u05cf\u05d0\u0005/\u0000\u0000\u05d0\u05d2\u0004\u001c"+ + "\u0002\u0000\u05d1\u05c2\u0001\u0000\u0000\u0000\u05d1\u05c6\u0001\u0000"+ + "\u0000\u0000\u05d1\u05cf\u0001\u0000\u0000\u0000\u05d2\u05d3\u0001\u0000"+ + "\u0000\u0000\u05d3\u05d1\u0001\u0000\u0000\u0000\u05d3\u05d4\u0001\u0000"+ + "\u0000\u0000\u05d4\u05d7\u0001\u0000\u0000\u0000\u05d5\u05d7\u0007\u0001"+ + "\u0000\u0000\u05d6\u05d1\u0001\u0000\u0000\u0000\u05d6\u05d5\u0001\u0000"+ + "\u0000\u0000\u05d7\u05d8\u0001\u0000\u0000\u0000\u05d8\u05d9\u0006\u001c"+ + "\u0000\u0000\u05d9>\u0001\u0000\u0000\u0000\u05da\u05e0\u0003C\u001f\u0000"+ + "\u05db\u05dc\u0005-\u0000\u0000\u05dc\u05e0\u0004\u001d\u0003\u0000\u05dd"+ + "\u05de\u0005/\u0000\u0000\u05de\u05e0\u0004\u001d\u0004\u0000\u05df\u05da"+ + "\u0001\u0000\u0000\u0000\u05df\u05db\u0001\u0000\u0000\u0000\u05df\u05dd"+ + "\u0001\u0000\u0000\u0000\u05e0\u05e3\u0001\u0000\u0000\u0000\u05e1\u05df"+ + "\u0001\u0000\u0000\u0000\u05e1\u05e2\u0001\u0000\u0000\u0000\u05e2\u05e4"+ + "\u0001\u0000\u0000\u0000\u05e3\u05e1\u0001\u0000\u0000\u0000\u05e4\u05e6"+ + "\u0003E \u0000\u05e5\u05e7\u0003=\u001c\u0000\u05e6\u05e5\u0001\u0000"+ + "\u0000\u0000\u05e6\u05e7\u0001\u0000\u0000\u0000\u05e7\u05eb\u0001\u0000"+ + "\u0000\u0000\u05e8\u05ec\u0005+\u0000\u0000\u05e9\u05ea\u0005-\u0000\u0000"+ + "\u05ea\u05ec\u0004\u001d\u0005\u0000\u05eb\u05e8\u0001\u0000\u0000\u0000"+ + "\u05eb\u05e9\u0001\u0000\u0000\u0000\u05ec\u05ed\u0001\u0000\u0000\u0000"+ + "\u05ed\u05eb\u0001\u0000\u0000\u0000\u05ed\u05ee\u0001\u0000\u0000\u0000"+ + "\u05ee\u05ef\u0001\u0000\u0000\u0000\u05ef\u05f0\u0006\u001d\u0001\u0000"+ + "\u05f0@\u0001\u0000\u0000\u0000\u05f1\u05f2\u0007\u0002\u0000\u0000\u05f2"+ + "B\u0001\u0000\u0000\u0000\u05f3\u05f4\u0007\u0003\u0000\u0000\u05f4D\u0001"+ + "\u0000\u0000\u0000\u05f5\u05f6\u0007\u0004\u0000\u0000\u05f6F\u0001\u0000"+ + "\u0000\u0000\u05f7\u05f8\u0007\u0005\u0000\u0000\u05f8\u05f9\u0007\u0006"+ + "\u0000\u0000\u05f9\u05fa\u0007\u0006\u0000\u0000\u05faH\u0001\u0000\u0000"+ + "\u0000\u05fb\u05fc\u0007\u0005\u0000\u0000\u05fc\u05fd\u0007\u0007\u0000"+ + "\u0000\u05fd\u05fe\u0007\u0005\u0000\u0000\u05fe\u05ff\u0007\u0006\u0000"+ + "\u0000\u05ff\u0600\u0007\b\u0000\u0000\u0600\u0601\u0007\t\u0000\u0000"+ + "\u0601\u0602\u0007\n\u0000\u0000\u0602J\u0001\u0000\u0000\u0000\u0603"+ + "\u0604\u0007\u0005\u0000\u0000\u0604\u0605\u0007\u0007\u0000\u0000\u0605"+ + "\u0606\u0007\u0005\u0000\u0000\u0606\u0607\u0007\u0006\u0000\u0000\u0607"+ + "\u0608\u0007\b\u0000\u0000\u0608\u0609\u0007\u000b\u0000\u0000\u0609\u060a"+ + "\u0007\n\u0000\u0000\u060aL\u0001\u0000\u0000\u0000\u060b\u060c\u0007"+ + "\u0005\u0000\u0000\u060c\u060d\u0007\u0007\u0000\u0000\u060d\u060e\u0007"+ + "\f\u0000\u0000\u060eN\u0001\u0000\u0000\u0000\u060f\u0610\u0007\u0005"+ + "\u0000\u0000\u0610\u0611\u0007\u0007\u0000\u0000\u0611\u0612\u0007\b\u0000"+ + "\u0000\u0612P\u0001\u0000\u0000\u0000\u0613\u0614\u0007\u0005\u0000\u0000"+ + "\u0614\u0615\u0007\r\u0000\u0000\u0615\u0616\u0007\r\u0000\u0000\u0616"+ + "\u0617\u0007\u0005\u0000\u0000\u0617\u0618\u0007\b\u0000\u0000\u0618R"+ + "\u0001\u0000\u0000\u0000\u0619\u061a\u0007\u0005\u0000\u0000\u061a\u061b"+ + "\u0007\t\u0000\u0000\u061bT\u0001\u0000\u0000\u0000\u061c\u061d\u0007"+ + "\u0005\u0000\u0000\u061d\u061e\u0007\t\u0000\u0000\u061e\u061f\u0007\u000e"+ + "\u0000\u0000\u061fV\u0001\u0000\u0000\u0000\u0620\u0621\u0007\u0005\u0000"+ + "\u0000\u0621\u0622\u0007\t\u0000\u0000\u0622\u0623\u0007\b\u0000\u0000"+ + "\u0623\u0624\u0007\u000f\u0000\u0000\u0624\u0625\u0007\u000f\u0000\u0000"+ + "\u0625\u0626\u0007\n\u0000\u0000\u0626\u0627\u0007\u0010\u0000\u0000\u0627"+ + "\u0628\u0007\r\u0000\u0000\u0628\u0629\u0007\u0011\u0000\u0000\u0629\u062a"+ + "\u0007\u000e\u0000\u0000\u062aX\u0001\u0000\u0000\u0000\u062b\u062c\u0007"+ + "\u0012\u0000\u0000\u062c\u062d\u0007\u0013\u0000\u0000\u062d\u062e\u0007"+ + "\u0010\u0000\u0000\u062e\u062f\u0007\u0014\u0000\u0000\u062fZ\u0001\u0000"+ + "\u0000\u0000\u0630\u0631\u0007\u000e\u0000\u0000\u0631\u0632\u0007\u0005"+ + "\u0000\u0000\u0632\u0633\u0007\t\u0000\u0000\u0633\u0634\u0007\n\u0000"+ + "\u0000\u0634\\\u0001\u0000\u0000\u0000\u0635\u0636\u0007\u000e\u0000\u0000"+ + "\u0636\u0637\u0007\u0005\u0000\u0000\u0637\u0638\u0007\t\u0000\u0000\u0638"+ + "\u0639\u0007\u0010\u0000\u0000\u0639^\u0001\u0000\u0000\u0000\u063a\u063b"+ + "\u0007\u000e\u0000\u0000\u063b\u063c\u0007\u0014\u0000\u0000\u063c\u063d"+ + "\u0007\n\u0000\u0000\u063d\u063e\u0007\u000e\u0000\u0000\u063e\u063f\u0007"+ + "\u0015\u0000\u0000\u063f`\u0001\u0000\u0000\u0000\u0640\u0641\u0007\u000e"+ + "\u0000\u0000\u0641\u0642\u0007\u0013\u0000\u0000\u0642\u0643\u0007\u0006"+ + "\u0000\u0000\u0643\u0644\u0007\u0006\u0000\u0000\u0644\u0645\u0007\u0005"+ + "\u0000\u0000\u0645\u0646\u0007\u0010\u0000\u0000\u0646\u0647\u0007\n\u0000"+ + "\u0000\u0647b\u0001\u0000\u0000\u0000\u0648\u0649\u0007\u000e\u0000\u0000"+ + "\u0649\u064a\u0007\u0013\u0000\u0000\u064a\u064b\u0007\u0006\u0000\u0000"+ + "\u064b\u064c\u0007\u0016\u0000\u0000\u064c\u064d\u0007\u000f\u0000\u0000"+ + "\u064d\u064e\u0007\u0007\u0000\u0000\u064ed\u0001\u0000\u0000\u0000\u064f"+ + "\u0650\u0007\u000e\u0000\u0000\u0650\u0651\u0007\u0013\u0000\u0000\u0651"+ + "\u0652\u0007\u0007\u0000\u0000\u0652\u0653\u0007\t\u0000\u0000\u0653\u0654"+ + "\u0007\u0010\u0000\u0000\u0654\u0655\u0007\r\u0000\u0000\u0655\u0656\u0007"+ + "\u0005\u0000\u0000\u0656\u0657\u0007\u0011\u0000\u0000\u0657\u0658\u0007"+ + "\u0007\u0000\u0000\u0658\u0659\u0007\u0010\u0000\u0000\u0659f\u0001\u0000"+ + "\u0000\u0000\u065a\u065b\u0007\u000e\u0000\u0000\u065b\u065c\u0007\r\u0000"+ + "\u0000\u065c\u065d\u0007\n\u0000\u0000\u065d\u065e\u0007\u0005\u0000\u0000"+ + "\u065e\u065f\u0007\u0010\u0000\u0000\u065f\u0660\u0007\n\u0000\u0000\u0660"+ + "h\u0001\u0000\u0000\u0000\u0661\u0662\u0007\u000e\u0000\u0000\u0662\u0663"+ + "\u0007\u0016\u0000\u0000\u0663\u0664\u0007\r\u0000\u0000\u0664\u0665\u0007"+ + "\r\u0000\u0000\u0665\u0666\u0007\n\u0000\u0000\u0666\u0667\u0007\u0007"+ + "\u0000\u0000\u0667\u0668\u0007\u0010\u0000\u0000\u0668\u0669\u0005_\u0000"+ + "\u0000\u0669\u066a\u0007\u000e\u0000\u0000\u066a\u066b\u0007\u0005\u0000"+ + "\u0000\u066b\u066c\u0007\u0010\u0000\u0000\u066c\u066d\u0007\u0005\u0000"+ + "\u0000\u066d\u066e\u0007\u0006\u0000\u0000\u066e\u066f\u0007\u0013\u0000"+ + "\u0000\u066f\u0670\u0007\u0017\u0000\u0000\u0670j\u0001\u0000\u0000\u0000"+ + "\u0671\u0672\u0007\u000e\u0000\u0000\u0672\u0673\u0007\u0016\u0000\u0000"+ + "\u0673\u0674\u0007\r\u0000\u0000\u0674\u0675\u0007\r\u0000\u0000\u0675"+ + "\u0676\u0007\n\u0000\u0000\u0676\u0677\u0007\u0007\u0000\u0000\u0677\u0678"+ + "\u0007\u0010\u0000\u0000\u0678\u0679\u0005_\u0000\u0000\u0679\u067a\u0007"+ + "\f\u0000\u0000\u067a\u067b\u0007\u0005\u0000\u0000\u067b\u067c\u0007\u0010"+ + "\u0000\u0000\u067c\u067d\u0007\n\u0000\u0000\u067dl\u0001\u0000\u0000"+ + "\u0000\u067e\u067f\u0007\u000e\u0000\u0000\u067f\u0680\u0007\u0016\u0000"+ + "\u0000\u0680\u0681\u0007\r\u0000\u0000\u0681\u0682\u0007\r\u0000\u0000"+ + "\u0682\u0683\u0007\n\u0000\u0000\u0683\u0684\u0007\u0007\u0000\u0000\u0684"+ + "\u0685\u0007\u0010\u0000\u0000\u0685\u0686\u0005_\u0000\u0000\u0686\u0687"+ + "\u0007\r\u0000\u0000\u0687\u0688\u0007\u0013\u0000\u0000\u0688\u0689\u0007"+ + "\u0006\u0000\u0000\u0689\u068a\u0007\n\u0000\u0000\u068an\u0001\u0000"+ + "\u0000\u0000\u068b\u068c\u0007\u000e\u0000\u0000\u068c\u068d\u0007\u0016"+ + "\u0000\u0000\u068d\u068e\u0007\r\u0000\u0000\u068e\u068f\u0007\r\u0000"+ + "\u0000\u068f\u0690\u0007\n\u0000\u0000\u0690\u0691\u0007\u0007\u0000\u0000"+ + "\u0691\u0692\u0007\u0010\u0000\u0000\u0692\u0693\u0005_\u0000\u0000\u0693"+ + "\u0694\u0007\u0010\u0000\u0000\u0694\u0695\u0007\u0011\u0000\u0000\u0695"+ + "\u0696\u0007\u000f\u0000\u0000\u0696\u0697\u0007\n\u0000\u0000\u0697p"+ + "\u0001\u0000\u0000\u0000\u0698\u0699\u0007\u000e\u0000\u0000\u0699\u069a"+ + "\u0007\u0016\u0000\u0000\u069a\u069b\u0007\r\u0000\u0000\u069b\u069c\u0007"+ + "\r\u0000\u0000\u069c\u069d\u0007\n\u0000\u0000\u069d\u069e\u0007\u0007"+ + "\u0000\u0000\u069e\u069f\u0007\u0010\u0000\u0000\u069f\u06a0\u0005_\u0000"+ + "\u0000\u06a0\u06a1\u0007\u0010\u0000\u0000\u06a1\u06a2\u0007\u0011\u0000"+ + "\u0000\u06a2\u06a3\u0007\u000f\u0000\u0000\u06a3\u06a4\u0007\n\u0000\u0000"+ + "\u06a4\u06a5\u0007\t\u0000\u0000\u06a5\u06a6\u0007\u0010\u0000\u0000\u06a6"+ + "\u06a7\u0007\u0005\u0000\u0000\u06a7\u06a8\u0007\u000f\u0000\u0000\u06a8"+ + "\u06a9\u0007\u0018\u0000\u0000\u06a9r\u0001\u0000\u0000\u0000\u06aa\u06ab"+ + "\u0007\u000e\u0000\u0000\u06ab\u06ac\u0007\u0016\u0000\u0000\u06ac\u06ad"+ + "\u0007\r\u0000\u0000\u06ad\u06ae\u0007\r\u0000\u0000\u06ae\u06af\u0007"+ + "\n\u0000\u0000\u06af\u06b0\u0007\u0007\u0000\u0000\u06b0\u06b1\u0007\u0010"+ + "\u0000\u0000\u06b1\u06b2\u0005_\u0000\u0000\u06b2\u06b3\u0007\u0016\u0000"+ + "\u0000\u06b3\u06b4\u0007\t\u0000\u0000\u06b4\u06b5\u0007\n\u0000\u0000"+ + "\u06b5\u06b6\u0007\r\u0000\u0000\u06b6t\u0001\u0000\u0000\u0000\u06b7"+ + "\u06b8\u0007\f\u0000\u0000\u06b8\u06b9\u0007\n\u0000\u0000\u06b9\u06ba"+ + "\u0007\u0019\u0000\u0000\u06ba\u06bb\u0007\u0005\u0000\u0000\u06bb\u06bc"+ + "\u0007\u0016\u0000\u0000\u06bc\u06bd\u0007\u0006\u0000\u0000\u06bd\u06be"+ + "\u0007\u0010\u0000\u0000\u06bev\u0001\u0000\u0000\u0000\u06bf\u06c0\u0007"+ + "\f\u0000\u0000\u06c0\u06c1\u0007\n\u0000\u0000\u06c1\u06c2\u0007\u0019"+ + "\u0000\u0000\u06c2\u06c3\u0007\n\u0000\u0000\u06c3\u06c4\u0007\r\u0000"+ + "\u0000\u06c4\u06c5\u0007\r\u0000\u0000\u06c5\u06c6\u0007\u0005\u0000\u0000"+ + "\u06c6\u06c7\u0007\u0012\u0000\u0000\u06c7\u06c8\u0007\u0006\u0000\u0000"+ + "\u06c8\u06c9\u0007\n\u0000\u0000\u06c9x\u0001\u0000\u0000\u0000\u06ca"+ + "\u06cb\u0007\f\u0000\u0000\u06cb\u06cc\u0007\n\u0000\u0000\u06cc\u06cd"+ + "\u0007\t\u0000\u0000\u06cd\u06ce\u0007\u000e\u0000\u0000\u06cez\u0001"+ + "\u0000\u0000\u0000\u06cf\u06d0\u0007\f\u0000\u0000\u06d0\u06d1\u0007\u0011"+ + "\u0000\u0000\u06d1\u06d2\u0007\t\u0000\u0000\u06d2\u06d3\u0007\u0010\u0000"+ + "\u0000\u06d3\u06d4\u0007\u0011\u0000\u0000\u06d4\u06d5\u0007\u0007\u0000"+ + "\u0000\u06d5\u06d6\u0007\u000e\u0000\u0000\u06d6\u06d7\u0007\u0010\u0000"+ + "\u0000\u06d7|\u0001\u0000\u0000\u0000\u06d8\u06d9\u0007\f\u0000\u0000"+ + "\u06d9\u06da\u0007\u0013\u0000\u0000\u06da~\u0001\u0000\u0000\u0000\u06db"+ + "\u06dc\u0007\n\u0000\u0000\u06dc\u06dd\u0007\u0006\u0000\u0000\u06dd\u06de"+ + "\u0007\t\u0000\u0000\u06de\u06df\u0007\n\u0000\u0000\u06df\u0080\u0001"+ + "\u0000\u0000\u0000\u06e0\u06e1\u0007\n\u0000\u0000\u06e1\u06e2\u0007\u001a"+ + "\u0000\u0000\u06e2\u06e3\u0007\u000e\u0000\u0000\u06e3\u06e4\u0007\n\u0000"+ + "\u0000\u06e4\u06e5\u0007\u0018\u0000\u0000\u06e5\u06e6\u0007\u0010\u0000"+ + "\u0000\u06e6\u0082\u0001\u0000\u0000\u0000\u06e7\u06e8\u0007\u0019\u0000"+ + "\u0000\u06e8\u06e9\u0007\u0005\u0000\u0000\u06e9\u06ea\u0007\u0006\u0000"+ + "\u0000\u06ea\u06eb\u0007\t\u0000\u0000\u06eb\u06ec\u0007\n\u0000\u0000"+ + "\u06ec\u0084\u0001\u0000\u0000\u0000\u06ed\u06ee\u0007\u0019\u0000\u0000"+ + "\u06ee\u06ef\u0007\n\u0000\u0000\u06ef\u06f0\u0007\u0010\u0000\u0000\u06f0"+ + "\u06f1\u0007\u000e\u0000\u0000\u06f1\u06f2\u0007\u0014\u0000\u0000\u06f2"+ + "\u0086\u0001\u0000\u0000\u0000\u06f3\u06f4\u0007\u0019\u0000\u0000\u06f4"+ + "\u06f5\u0007\u0013\u0000\u0000\u06f5\u06f6\u0007\r\u0000\u0000\u06f6\u0088"+ + "\u0001\u0000\u0000\u0000\u06f7\u06f8\u0007\u0019\u0000\u0000\u06f8\u06f9"+ + "\u0007\u0013\u0000\u0000\u06f9\u06fa\u0007\r\u0000\u0000\u06fa\u06fb\u0007"+ + "\n\u0000\u0000\u06fb\u06fc\u0007\u0011\u0000\u0000\u06fc\u06fd\u0007\u0017"+ + "\u0000\u0000\u06fd\u06fe\u0007\u0007\u0000\u0000\u06fe\u008a\u0001\u0000"+ + "\u0000\u0000\u06ff\u0700\u0007\u0019\u0000\u0000\u0700\u0701\u0007\r\u0000"+ + "\u0000\u0701\u0702\u0007\u0013\u0000\u0000\u0702\u0703\u0007\u000f\u0000"+ + "\u0000\u0703\u008c\u0001\u0000\u0000\u0000\u0704\u0705\u0007\u0017\u0000"+ + "\u0000\u0705\u0706\u0007\r\u0000\u0000\u0706\u0707\u0007\u0005\u0000\u0000"+ + "\u0707\u0708\u0007\u0007\u0000\u0000\u0708\u0709\u0007\u0010\u0000\u0000"+ + "\u0709\u008e\u0001\u0000\u0000\u0000\u070a\u070b\u0007\u0017\u0000\u0000"+ + "\u070b\u070c\u0007\r\u0000\u0000\u070c\u070d\u0007\u0013\u0000\u0000\u070d"+ + "\u070e\u0007\u0016\u0000\u0000\u070e\u070f\u0007\u0018\u0000\u0000\u070f"+ + "\u0090\u0001\u0000\u0000\u0000\u0710\u0711\u0007\u0014\u0000\u0000\u0711"+ + "\u0712\u0007\u0005\u0000\u0000\u0712\u0713\u0007\u001b\u0000\u0000\u0713"+ + "\u0714\u0007\u0011\u0000\u0000\u0714\u0715\u0007\u0007\u0000\u0000\u0715"+ + "\u0716\u0007\u0017\u0000\u0000\u0716\u0092\u0001\u0000\u0000\u0000\u0717"+ + "\u0718\u0007\u0011\u0000\u0000\u0718\u0719\u0007\u0007\u0000\u0000\u0719"+ + "\u0094\u0001\u0000\u0000\u0000\u071a\u071b\u0007\u0011\u0000\u0000\u071b"+ + "\u071c\u0007\u0007\u0000\u0000\u071c\u071d\u0007\u0011\u0000\u0000\u071d"+ + "\u071e\u0007\u0010\u0000\u0000\u071e\u071f\u0007\u0011\u0000\u0000\u071f"+ + "\u0720\u0007\u0005\u0000\u0000\u0720\u0721\u0007\u0006\u0000\u0000\u0721"+ + "\u0722\u0007\u0006\u0000\u0000\u0722\u0723\u0007\b\u0000\u0000\u0723\u0096"+ + "\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\n\u0000\u0000\u0728\u0729\u0007\r\u0000\u0000\u0729\u072a\u0007"+ + "\t\u0000\u0000\u072a\u072b\u0007\n\u0000\u0000\u072b\u072c\u0007\u000e"+ + "\u0000\u0000\u072c\u072d\u0007\u0010\u0000\u0000\u072d\u0098\u0001\u0000"+ + "\u0000\u0000\u072e\u072f\u0007\u0011\u0000\u0000\u072f\u0730\u0007\u0007"+ + "\u0000\u0000\u0730\u0731\u0007\u0010\u0000\u0000\u0731\u0732\u0007\u0013"+ + "\u0000\u0000\u0732\u009a\u0001\u0000\u0000\u0000\u0733\u0734\u0007\u0006"+ + "\u0000\u0000\u0734\u0735\u0007\u0005\u0000\u0000\u0735\u0736\u0007\u0010"+ + "\u0000\u0000\u0736\u0737\u0007\n\u0000\u0000\u0737\u0738\u0007\r\u0000"+ + "\u0000\u0738\u0739\u0007\u0005\u0000\u0000\u0739\u073a\u0007\u0006\u0000"+ + "\u0000\u073a\u009c\u0001\u0000\u0000\u0000\u073b\u073c\u0007\u0006\u0000"+ + "\u0000\u073c\u073d\u0007\n\u0000\u0000\u073d\u073e\u0007\u0005\u0000\u0000"+ + "\u073e\u073f\u0007\f\u0000\u0000\u073f\u0740\u0007\u0011\u0000\u0000\u0740"+ + "\u0741\u0007\u0007\u0000\u0000\u0741\u0742\u0007\u0017\u0000\u0000\u0742"+ + "\u009e\u0001\u0000\u0000\u0000\u0743\u0744\u0007\u0006\u0000\u0000\u0744"+ + "\u0745\u0007\u0011\u0000\u0000\u0745\u0746\u0007\u000f\u0000\u0000\u0746"+ + "\u0747\u0007\u0011\u0000\u0000\u0747\u0748\u0007\u0010\u0000\u0000\u0748"+ + "\u00a0\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\u00a2"+ + "\u0001\u0000\u0000\u0000\u0753\u0754\u0007\u0006\u0000\u0000\u0754\u0755"+ + "\u0007\u0013\u0000\u0000\u0755\u0756\u0007\u000e\u0000\u0000\u0756\u0757"+ + "\u0007\u0005\u0000\u0000\u0757\u0758\u0007\u0006\u0000\u0000\u0758\u0759"+ + "\u0007\u0010\u0000\u0000\u0759\u075a\u0007\u0011\u0000\u0000\u075a\u075b"+ + "\u0007\u000f\u0000\u0000\u075b\u075c\u0007\n\u0000\u0000\u075c\u075d\u0007"+ + "\t\u0000\u0000\u075d\u075e\u0007\u0010\u0000\u0000\u075e\u075f\u0007\u0005"+ + "\u0000\u0000\u075f\u0760\u0007\u000f\u0000\u0000\u0760\u0761\u0007\u0018"+ + "\u0000\u0000\u0761\u00a4\u0001\u0000\u0000\u0000\u0762\u0763\u0007\u0007"+ + "\u0000\u0000\u0763\u0764\u0007\u0013\u0000\u0000\u0764\u0765\u0007\u0010"+ + "\u0000\u0000\u0765\u00a6\u0001\u0000\u0000\u0000\u0766\u0767\u0007\u0007"+ + "\u0000\u0000\u0767\u0768\u0007\u0016\u0000\u0000\u0768\u0769\u0007\u0006"+ + "\u0000\u0000\u0769\u076a\u0007\u0006\u0000\u0000\u076a\u00a8\u0001\u0000"+ + "\u0000\u0000\u076b\u076c\u0007\u0013\u0000\u0000\u076c\u076d\u0007\u0019"+ + "\u0000\u0000\u076d\u076e\u0007\u0019\u0000\u0000\u076e\u076f\u0007\t\u0000"+ + "\u0000\u076f\u0770\u0007\n\u0000\u0000\u0770\u0771\u0007\u0010\u0000\u0000"+ + "\u0771\u00aa\u0001\u0000\u0000\u0000\u0772\u0773\u0007\u0013\u0000\u0000"+ + "\u0773\u0774\u0007\u0007\u0000\u0000\u0774\u00ac\u0001\u0000\u0000\u0000"+ + "\u0775\u0776\u0007\u0013\u0000\u0000\u0776\u0777\u0007\u0007\u0000\u0000"+ + "\u0777\u0778\u0007\u0006\u0000\u0000\u0778\u0779\u0007\b\u0000\u0000\u0779"+ + "\u00ae\u0001\u0000\u0000\u0000\u077a\u077b\u0007\u0013\u0000\u0000\u077b"+ + "\u077c\u0007\r\u0000\u0000\u077c\u00b0\u0001\u0000\u0000\u0000\u077d\u077e"+ + "\u0007\u0013\u0000\u0000\u077e\u077f\u0007\r\u0000\u0000\u077f\u0780\u0007"+ + "\f\u0000\u0000\u0780\u0781\u0007\n\u0000\u0000\u0781\u0782\u0007\r\u0000"+ + "\u0000\u0782\u00b2\u0001\u0000\u0000\u0000\u0783\u0784\u0007\u0018\u0000"+ + "\u0000\u0784\u0785\u0007\u0006\u0000\u0000\u0785\u0786\u0007\u0005\u0000"+ + "\u0000\u0786\u0787\u0007\u000e\u0000\u0000\u0787\u0788\u0007\u0011\u0000"+ + "\u0000\u0788\u0789\u0007\u0007\u0000\u0000\u0789\u078a\u0007\u0017\u0000"+ + "\u0000\u078a\u00b4\u0001\u0000\u0000\u0000\u078b\u078c\u0007\u0018\u0000"+ + "\u0000\u078c\u078d\u0007\r\u0000\u0000\u078d\u078e\u0007\u0011\u0000\u0000"+ + "\u078e\u078f\u0007\u000f\u0000\u0000\u078f\u0790\u0007\u0005\u0000\u0000"+ + "\u0790\u0791\u0007\r\u0000\u0000\u0791\u0792\u0007\b\u0000\u0000\u0792"+ + "\u00b6\u0001\u0000\u0000\u0000\u0793\u0794\u0007\r\u0000\u0000\u0794\u0795"+ + "\u0007\n\u0000\u0000\u0795\u0796\u0007\u0019\u0000\u0000\u0796\u0797\u0007"+ + "\n\u0000\u0000\u0797\u0798\u0007\r\u0000\u0000\u0798\u0799\u0007\n\u0000"+ + "\u0000\u0799\u079a\u0007\u0007\u0000\u0000\u079a\u079b\u0007\u000e\u0000"+ + "\u0000\u079b\u079c\u0007\n\u0000\u0000\u079c\u079d\u0007\t\u0000\u0000"+ + "\u079d\u00b8\u0001\u0000\u0000\u0000\u079e\u079f\u0007\r\u0000\u0000\u079f"+ + "\u07a0\u0007\n\u0000\u0000\u07a0\u07a1\u0007\u0010\u0000\u0000\u07a1\u07a2"+ + "\u0007\u0016\u0000\u0000\u07a2\u07a3\u0007\r\u0000\u0000\u07a3\u07a4\u0007"+ + "\u0007\u0000\u0000\u07a4\u07a5\u0007\u0011\u0000\u0000\u07a5\u07a6\u0007"+ + "\u0007\u0000\u0000\u07a6\u07a7\u0007\u0017\u0000\u0000\u07a7\u00ba\u0001"+ + "\u0000\u0000\u0000\u07a8\u07a9\u0007\t\u0000\u0000\u07a9\u07aa\u0007\n"+ + "\u0000\u0000\u07aa\u07ab\u0007\u0006\u0000\u0000\u07ab\u07ac\u0007\n\u0000"+ + "\u0000\u07ac\u07ad\u0007\u000e\u0000\u0000\u07ad\u07ae\u0007\u0010\u0000"+ + "\u0000\u07ae\u00bc\u0001\u0000\u0000\u0000\u07af\u07b0\u0007\t\u0000\u0000"+ + "\u07b0\u07b1\u0007\n\u0000\u0000\u07b1\u07b2\u0007\t\u0000\u0000\u07b2"+ + "\u07b3\u0007\t\u0000\u0000\u07b3\u07b4\u0007\u0011\u0000\u0000\u07b4\u07b5"+ + "\u0007\u0013\u0000\u0000\u07b5\u07b6\u0007\u0007\u0000\u0000\u07b6\u07b7"+ + "\u0005_\u0000\u0000\u07b7\u07b8\u0007\u0016\u0000\u0000\u07b8\u07b9\u0007"+ + "\t\u0000\u0000\u07b9\u07ba\u0007\n\u0000\u0000\u07ba\u07bb\u0007\r\u0000"+ + "\u0000\u07bb\u00be\u0001\u0000\u0000\u0000\u07bc\u07bd\u0007\t\u0000\u0000"+ + "\u07bd\u07be\u0007\u0013\u0000\u0000\u07be\u07bf\u0007\u000f\u0000\u0000"+ + "\u07bf\u07c0\u0007\n\u0000\u0000\u07c0\u00c0\u0001\u0000\u0000\u0000\u07c1"+ + "\u07c2\u0007\t\u0000\u0000\u07c2\u07c3\u0007\b\u0000\u0000\u07c3\u07c4"+ + "\u0007\u000f\u0000\u0000\u07c4\u07c5\u0007\u000f\u0000\u0000\u07c5\u07c6"+ + "\u0007\n\u0000\u0000\u07c6\u07c7\u0007\u0010\u0000\u0000\u07c7\u07c8\u0007"+ + "\r\u0000\u0000\u07c8\u07c9\u0007\u0011\u0000\u0000\u07c9\u07ca\u0007\u000e"+ + "\u0000\u0000\u07ca\u00c2\u0001\u0000\u0000\u0000\u07cb\u07cc\u0007\u0010"+ + "\u0000\u0000\u07cc\u07cd\u0007\u0005\u0000\u0000\u07cd\u07ce\u0007\u0012"+ + "\u0000\u0000\u07ce\u07cf\u0007\u0006\u0000\u0000\u07cf\u07d0\u0007\n\u0000"+ + "\u0000\u07d0\u00c4\u0001\u0000\u0000\u0000\u07d1\u07d2\u0007\u0010\u0000"+ + "\u0000\u07d2\u07d3\u0007\u0014\u0000\u0000\u07d3\u07d4\u0007\n\u0000\u0000"+ + "\u07d4\u07d5\u0007\u0007\u0000\u0000\u07d5\u00c6\u0001\u0000\u0000\u0000"+ + "\u07d6\u07d7\u0007\u0010\u0000\u0000\u07d7\u07d8\u0007\u0013\u0000\u0000"+ + "\u07d8\u00c8\u0001\u0000\u0000\u0000\u07d9\u07da\u0007\u0010\u0000\u0000"+ + "\u07da\u07db\u0007\u0013\u0000\u0000\u07db\u07dc\u0007\u0018\u0000\u0000"+ + "\u07dc\u07dd\u0007\u0011\u0000\u0000\u07dd\u07de\u0007\u000e\u0000\u0000"+ + "\u07de\u00ca\u0001\u0000\u0000\u0000\u07df\u07e0\u0007\u0010\u0000\u0000"+ + "\u07e0\u07e1\u0007\u0013\u0000\u0000\u07e1\u07e2\u0007\u0018\u0000\u0000"+ + "\u07e2\u07e3\u0007\u0011\u0000\u0000\u07e3\u07e4\u0007\u000e\u0000\u0000"+ + "\u07e4\u07e5\u0007\t\u0000\u0000\u07e5\u00cc\u0001\u0000\u0000\u0000\u07e6"+ + "\u07e7\u0007\t\u0000\u0000\u07e7\u07e8\u0007\u0010\u0000\u0000\u07e8\u07e9"+ + "\u0007\r\u0000\u0000\u07e9\u07ea\u0007\n\u0000\u0000\u07ea\u07eb\u0007"+ + "\u0005\u0000\u0000\u07eb\u07ec\u0007\u000f\u0000\u0000\u07ec\u00ce\u0001"+ + "\u0000\u0000\u0000\u07ed\u07ee\u0007\u000b\u0000\u0000\u07ee\u07ef\u0007"+ + "\u001b\u0000\u0000\u07ef\u07f0\u0007\u0011\u0000\u0000\u07f0\u07f1\u0007"+ + "\n\u0000\u0000\u07f1\u07f2\u0007\u001c\u0000\u0000\u07f2\u00d0\u0001\u0000"+ + "\u0000\u0000\u07f3\u07f4\u0007\u000b\u0000\u0000\u07f4\u07f5\u0007\u001b"+ + "\u0000\u0000\u07f5\u07f6\u0007\u0011\u0000\u0000\u07f6\u07f7\u0007\n\u0000"+ + "\u0000\u07f7\u07f8\u0007\u001c\u0000\u0000\u07f8\u07f9\u0007\t\u0000\u0000"+ + "\u07f9\u00d2\u0001\u0000\u0000\u0000\u07fa\u07fb\u0007\u0010\u0000\u0000"+ + "\u07fb\u07fc\u0007\r\u0000\u0000\u07fc\u07fd\u0007\u0005\u0000\u0000\u07fd"+ + "\u07fe\u0007\u0011\u0000\u0000\u07fe\u07ff\u0007\u0006\u0000\u0000\u07ff"+ + "\u0800\u0007\u0011\u0000\u0000\u0800\u0801\u0007\u0007\u0000\u0000\u0801"+ + "\u0802\u0007\u0017\u0000\u0000\u0802\u00d4\u0001\u0000\u0000\u0000\u0803"+ + "\u0804\u0007\u0010\u0000\u0000\u0804\u0805\u0007\r\u0000\u0000\u0805\u0806"+ + "\u0007\u0016\u0000\u0000\u0806\u0807\u0007\n\u0000\u0000\u0807\u00d6\u0001"+ + "\u0000\u0000\u0000\u0808\u0809\u0007\u0016\u0000\u0000\u0809\u080a\u0007"+ + "\u0007\u0000\u0000\u080a\u080b\u0007\u0011\u0000\u0000\u080b\u080c\u0007"+ + "\u0013\u0000\u0000\u080c\u080d\u0007\u0007\u0000\u0000\u080d\u00d8\u0001"+ + "\u0000\u0000\u0000\u080e\u080f\u0007\u0016\u0000\u0000\u080f\u0810\u0007"+ + "\u0007\u0000\u0000\u0810\u0811\u0007\u0011\u0000\u0000\u0811\u0812\u0007"+ + "\u001d\u0000\u0000\u0812\u0813\u0007\u0016\u0000\u0000\u0813\u0814\u0007"+ + "\n\u0000\u0000\u0814\u00da\u0001\u0000\u0000\u0000\u0815\u0816\u0007\u0016"+ + "\u0000\u0000\u0816\u0817\u0007\t\u0000\u0000\u0817\u0818\u0007\n\u0000"+ + "\u0000\u0818\u0819\u0007\r\u0000\u0000\u0819\u00dc\u0001\u0000\u0000\u0000"+ + "\u081a\u081b\u0007\u0016\u0000\u0000\u081b\u081c\u0007\t\u0000\u0000\u081c"+ + "\u081d\u0007\u0011\u0000\u0000\u081d\u081e\u0007\u0007\u0000\u0000\u081e"+ + "\u081f\u0007\u0017\u0000\u0000\u081f\u00de\u0001\u0000\u0000\u0000\u0820"+ + "\u0821\u0007\u001b\u0000\u0000\u0821\u0822\u0007\u0005\u0000\u0000\u0822"+ + "\u0823\u0007\r\u0000\u0000\u0823\u0824\u0007\u0011\u0000\u0000\u0824\u0825"+ + "\u0007\u0005\u0000\u0000\u0825\u0826\u0007\f\u0000\u0000\u0826\u0827\u0007"+ + "\u0011\u0000\u0000\u0827\u0828\u0007\u000e\u0000\u0000\u0828\u00e0\u0001"+ + "\u0000\u0000\u0000\u0829\u082a\u0007\u001c\u0000\u0000\u082a\u082b\u0007"+ + "\u0014\u0000\u0000\u082b\u082c\u0007\n\u0000\u0000\u082c\u082d\u0007\u0007"+ + "\u0000\u0000\u082d\u00e2\u0001\u0000\u0000\u0000\u082e\u082f\u0007\u001c"+ + "\u0000\u0000\u082f\u0830\u0007\u0014\u0000\u0000\u0830\u0831\u0007\n\u0000"+ + "\u0000\u0831\u0832\u0007\r\u0000\u0000\u0832\u0833\u0007\n\u0000\u0000"+ + "\u0833\u00e4\u0001\u0000\u0000\u0000\u0834\u0835\u0007\u001c\u0000\u0000"+ + "\u0835\u0836\u0007\u0011\u0000\u0000\u0836\u0837\u0007\u0007\u0000\u0000"+ + "\u0837\u0838\u0007\f\u0000\u0000\u0838\u0839\u0007\u0013\u0000\u0000\u0839"+ + "\u083a\u0007\u001c\u0000\u0000\u083a\u00e6\u0001\u0000\u0000\u0000\u083b"+ + "\u083c\u0007\u001c\u0000\u0000\u083c\u083d\u0007\u0011\u0000\u0000\u083d"+ + "\u083e\u0007\u0010\u0000\u0000\u083e\u083f\u0007\u0014\u0000\u0000\u083f"+ + "\u00e8\u0001\u0000\u0000\u0000\u0840\u0841\u0007\u0005\u0000\u0000\u0841"+ + "\u0842\u0007\u0016\u0000\u0000\u0842\u0843\u0007\u0010\u0000\u0000\u0843"+ + "\u0844\u0007\u0014\u0000\u0000\u0844\u0845\u0007\u0013\u0000\u0000\u0845"+ + "\u0846\u0007\r\u0000\u0000\u0846\u0847\u0007\u0011\u0000\u0000\u0847\u0848"+ + "\u0007\u000b\u0000\u0000\u0848\u0849\u0007\u0005\u0000\u0000\u0849\u084a"+ + "\u0007\u0010\u0000\u0000\u084a\u084b\u0007\u0011\u0000\u0000\u084b\u084c"+ + "\u0007\u0013\u0000\u0000\u084c\u084d\u0007\u0007\u0000\u0000\u084d\u00ea"+ + "\u0001\u0000\u0000\u0000\u084e\u084f\u0007\u0012\u0000\u0000\u084f\u0850"+ + "\u0007\u0011\u0000\u0000\u0850\u0851\u0007\u0007\u0000\u0000\u0851\u0852"+ + "\u0007\u0005\u0000\u0000\u0852\u0853\u0007\r\u0000\u0000\u0853\u0854\u0007"+ + "\b\u0000\u0000\u0854\u00ec\u0001\u0000\u0000\u0000\u0855\u0856\u0007\u000e"+ + "\u0000\u0000\u0856\u0857\u0007\u0013\u0000\u0000\u0857\u0858\u0007\u0006"+ + "\u0000\u0000\u0858\u0859\u0007\u0006\u0000\u0000\u0859\u085a\u0007\u0005"+ + "\u0000\u0000\u085a\u085b\u0007\u0010\u0000\u0000\u085b\u085c\u0007\u0011"+ + "\u0000\u0000\u085c\u085d\u0007\u0013\u0000\u0000\u085d\u085e\u0007\u0007"+ + "\u0000\u0000\u085e\u00ee\u0001\u0000\u0000\u0000\u085f\u0860\u0007\u000e"+ + "\u0000\u0000\u0860\u0861\u0007\u0013\u0000\u0000\u0861\u0862\u0007\u0007"+ + "\u0000\u0000\u0862\u0863\u0007\u000e\u0000\u0000\u0863\u0864\u0007\u0016"+ + "\u0000\u0000\u0864\u0865\u0007\r\u0000\u0000\u0865\u0866\u0007\r\u0000"+ + "\u0000\u0866\u0867\u0007\n\u0000\u0000\u0867\u0868\u0007\u0007\u0000\u0000"+ + "\u0868\u0869\u0007\u0010\u0000\u0000\u0869\u086a\u0007\u0006\u0000\u0000"+ + "\u086a\u086b\u0007\b\u0000\u0000\u086b\u00f0\u0001\u0000\u0000\u0000\u086c"+ + "\u086d\u0007\u000e\u0000\u0000\u086d\u086e\u0007\r\u0000\u0000\u086e\u086f"+ + "\u0007\u0013\u0000\u0000\u086f\u0870\u0007\t\u0000\u0000\u0870\u0871\u0007"+ + "\t\u0000\u0000\u0871\u00f2\u0001\u0000\u0000\u0000\u0872\u0873\u0007\u000e"+ + "\u0000\u0000\u0873\u0874\u0007\u0016\u0000\u0000\u0874\u0875\u0007\r\u0000"+ + "\u0000\u0875\u0876\u0007\r\u0000\u0000\u0876\u0877\u0007\n\u0000\u0000"+ + "\u0877\u0878\u0007\u0007\u0000\u0000\u0878\u0879\u0007\u0010\u0000\u0000"+ + "\u0879\u087a\u0005_\u0000\u0000\u087a\u087b\u0007\t\u0000\u0000\u087b"+ + "\u087c\u0007\u000e\u0000\u0000\u087c\u087d\u0007\u0014\u0000\u0000\u087d"+ + "\u087e\u0007\n\u0000\u0000\u087e\u087f\u0007\u000f\u0000\u0000\u087f\u0880"+ + "\u0007\u0005\u0000\u0000\u0880\u00f4\u0001\u0000\u0000\u0000\u0881\u0882"+ + "\u0007\u0019\u0000\u0000\u0882\u0883\u0007\r\u0000\u0000\u0883\u0884\u0007"+ + "\n\u0000\u0000\u0884\u0885\u0007\n\u0000\u0000\u0885\u0886\u0007\u000b"+ + "\u0000\u0000\u0886\u0887\u0007\n\u0000\u0000\u0887\u00f6\u0001\u0000\u0000"+ + "\u0000\u0888\u0889\u0007\u0019\u0000\u0000\u0889\u088a\u0007\u0016\u0000"+ + "\u0000\u088a\u088b\u0007\u0006\u0000\u0000\u088b\u088c\u0007\u0006\u0000"+ + "\u0000\u088c\u00f8\u0001\u0000\u0000\u0000\u088d\u088e\u0007\u0011\u0000"+ + "\u0000\u088e\u088f\u0007\u0006\u0000\u0000\u088f\u0890\u0007\u0011\u0000"+ + "\u0000\u0890\u0891\u0007\u0015\u0000\u0000\u0891\u0892\u0007\n\u0000\u0000"+ + "\u0892\u00fa\u0001\u0000\u0000\u0000\u0893\u0894\u0007\u0011\u0000\u0000"+ + "\u0894\u0895\u0007\u0007\u0000\u0000\u0895\u0896\u0007\u0007\u0000\u0000"+ + "\u0896\u0897\u0007\n\u0000\u0000\u0897\u0898\u0007\r\u0000\u0000\u0898"+ + "\u00fc\u0001\u0000\u0000\u0000\u0899\u089a\u0007\u0011\u0000\u0000\u089a"+ + "\u089b\u0007\t\u0000\u0000\u089b\u00fe\u0001\u0000\u0000\u0000\u089c\u089d"+ + "\u0007\u0011\u0000\u0000\u089d\u089e\u0007\t\u0000\u0000\u089e\u089f\u0007"+ + "\u0007\u0000\u0000\u089f\u08a0\u0007\u0016\u0000\u0000\u08a0\u08a1\u0007"+ + "\u0006\u0000\u0000\u08a1\u08a2\u0007\u0006\u0000\u0000\u08a2\u0100\u0001"+ + "\u0000\u0000\u0000\u08a3\u08a4\u0007\u001e\u0000\u0000\u08a4\u08a5\u0007"+ + "\u0013\u0000\u0000\u08a5\u08a6\u0007\u0011\u0000\u0000\u08a6\u08a7\u0007"+ + "\u0007\u0000\u0000\u08a7\u0102\u0001\u0000\u0000\u0000\u08a8\u08a9\u0007"+ + "\u0006\u0000\u0000\u08a9\u08aa\u0007\n\u0000\u0000\u08aa\u08ab\u0007\u0019"+ + "\u0000\u0000\u08ab\u08ac\u0007\u0010\u0000\u0000\u08ac\u0104\u0001\u0000"+ + "\u0000\u0000\u08ad\u08ae\u0007\u0006\u0000\u0000\u08ae\u08af\u0007\u0011"+ + "\u0000\u0000\u08af\u08b0\u0007\u0015\u0000\u0000\u08b0\u08b1\u0007\n\u0000"+ + "\u0000\u08b1\u0106\u0001\u0000\u0000\u0000\u08b2\u08b3\u0007\u0007\u0000"+ + "\u0000\u08b3\u08b4\u0007\u0005\u0000\u0000\u08b4\u08b5\u0007\u0010\u0000"+ + "\u0000\u08b5\u08b6\u0007\u0016\u0000\u0000\u08b6\u08b7\u0007\r\u0000\u0000"+ + "\u08b7\u08b8\u0007\u0005\u0000\u0000\u08b8\u08b9\u0007\u0006\u0000\u0000"+ + "\u08b9\u0108\u0001\u0000\u0000\u0000\u08ba\u08bb\u0007\u0007\u0000\u0000"+ + "\u08bb\u08bc\u0007\u0013\u0000\u0000\u08bc\u08bd\u0007\u0010\u0000\u0000"+ + "\u08bd\u08be\u0007\u0007\u0000\u0000\u08be\u08bf\u0007\u0016\u0000\u0000"+ + "\u08bf\u08c0\u0007\u0006\u0000\u0000\u08c0\u08c1\u0007\u0006\u0000\u0000"+ + "\u08c1\u010a\u0001\u0000\u0000\u0000\u08c2\u08c3\u0007\u0013\u0000\u0000"+ + "\u08c3\u08c4\u0007\u0016\u0000\u0000\u08c4\u08c5\u0007\u0010\u0000\u0000"+ + "\u08c5\u08c6\u0007\n\u0000\u0000\u08c6\u08c7\u0007\r\u0000\u0000\u08c7"+ + "\u010c\u0001\u0000\u0000\u0000\u08c8\u08c9\u0007\u0013\u0000\u0000\u08c9"+ + "\u08ca\u0007\u001b\u0000\u0000\u08ca\u08cb\u0007\n\u0000\u0000\u08cb\u08cc"+ + "\u0007\r\u0000\u0000\u08cc\u010e\u0001\u0000\u0000\u0000\u08cd\u08ce\u0007"+ + "\u0013\u0000\u0000\u08ce\u08cf\u0007\u001b\u0000\u0000\u08cf\u08d0\u0007"+ + "\n\u0000\u0000\u08d0\u08d1\u0007\r\u0000\u0000\u08d1\u08d2\u0007\u0006"+ + "\u0000\u0000\u08d2\u08d3\u0007\u0005\u0000\u0000\u08d3\u08d4\u0007\u0018"+ + "\u0000\u0000\u08d4\u08d5\u0007\t\u0000\u0000\u08d5\u0110\u0001\u0000\u0000"+ + "\u0000\u08d6\u08d7\u0007\r\u0000\u0000\u08d7\u08d8\u0007\u0011\u0000\u0000"+ + "\u08d8\u08d9\u0007\u0017\u0000\u0000\u08d9\u08da\u0007\u0014\u0000\u0000"+ + "\u08da\u08db\u0007\u0010\u0000\u0000\u08db\u0112\u0001\u0000\u0000\u0000"+ + "\u08dc\u08dd\u0007\t\u0000\u0000\u08dd\u08de\u0007\u0011\u0000\u0000\u08de"+ + "\u08df\u0007\u000f\u0000\u0000\u08df\u08e0\u0007\u0011\u0000\u0000\u08e0"+ + "\u08e1\u0007\u0006\u0000\u0000\u08e1\u08e2\u0007\u0005\u0000\u0000\u08e2"+ + "\u08e3\u0007\r\u0000\u0000\u08e3\u0114\u0001\u0000\u0000\u0000\u08e4\u08e5"+ + "\u0007\u001b\u0000\u0000\u08e5\u08e6\u0007\n\u0000\u0000\u08e6\u08e7\u0007"+ + "\r\u0000\u0000\u08e7\u08e8\u0007\u0012\u0000\u0000\u08e8\u08e9\u0007\u0013"+ + "\u0000\u0000\u08e9\u08ea\u0007\t\u0000\u0000\u08ea\u08eb\u0007\n\u0000"+ + "\u0000\u08eb\u0116\u0001\u0000\u0000\u0000\u08ec\u08ed\u0007\u0005\u0000"+ + "\u0000\u08ed\u08ee\u0007\u0012\u0000\u0000\u08ee\u08ef\u0007\u0013\u0000"+ + "\u0000\u08ef\u08f0\u0007\r\u0000\u0000\u08f0\u08f1\u0007\u0010\u0000\u0000"+ + "\u08f1\u0118\u0001\u0000\u0000\u0000\u08f2\u08f3\u0007\u0005\u0000\u0000"+ + "\u08f3\u08f4\u0007\u0012\u0000\u0000\u08f4\u08f5\u0007\t\u0000\u0000\u08f5"+ + "\u08f6\u0007\u0013\u0000\u0000\u08f6\u08f7\u0007\u0006\u0000\u0000\u08f7"+ + "\u08f8\u0007\u0016\u0000\u0000\u08f8\u08f9\u0007\u0010\u0000\u0000\u08f9"+ + "\u08fa\u0007\n\u0000\u0000\u08fa\u011a\u0001\u0000\u0000\u0000\u08fb\u08fc"+ + "\u0007\u0005\u0000\u0000\u08fc\u08fd\u0007\u000e\u0000\u0000\u08fd\u08fe"+ + "\u0007\u000e\u0000\u0000\u08fe\u08ff\u0007\n\u0000\u0000\u08ff\u0900\u0007"+ + "\t\u0000\u0000\u0900\u0901\u0007\t\u0000\u0000\u0901\u011c\u0001\u0000"+ + "\u0000\u0000\u0902\u0903\u0007\u0005\u0000\u0000\u0903\u0904\u0007\u000e"+ + "\u0000\u0000\u0904\u0905\u0007\u0010\u0000\u0000\u0905\u0906\u0007\u0011"+ + "\u0000\u0000\u0906\u0907\u0007\u0013\u0000\u0000\u0907\u0908\u0007\u0007"+ + "\u0000\u0000\u0908\u011e\u0001\u0000\u0000\u0000\u0909\u090a\u0007\u0005"+ + "\u0000\u0000\u090a\u090b\u0007\f\u0000\u0000\u090b\u090c\u0007\f\u0000"+ + "\u0000\u090c\u0120\u0001\u0000\u0000\u0000\u090d\u090e\u0007\u0005\u0000"+ + "\u0000\u090e\u090f\u0007\f\u0000\u0000\u090f\u0910\u0007\u000f\u0000\u0000"+ + "\u0910\u0911\u0007\u0011\u0000\u0000\u0911\u0912\u0007\u0007\u0000\u0000"+ + "\u0912\u0122\u0001\u0000\u0000\u0000\u0913\u0914\u0007\u0005\u0000\u0000"+ + "\u0914\u0915\u0007\u0019\u0000\u0000\u0915\u0916\u0007\u0010\u0000\u0000"+ + "\u0916\u0917\u0007\n\u0000\u0000\u0917\u0918\u0007\r\u0000\u0000\u0918"+ + "\u0124\u0001\u0000\u0000\u0000\u0919\u091a\u0007\u0005\u0000\u0000\u091a"+ + "\u091b\u0007\u0017\u0000\u0000\u091b\u091c\u0007\u0017\u0000\u0000\u091c"+ + "\u091d\u0007\r\u0000\u0000\u091d\u091e\u0007\n\u0000\u0000\u091e\u091f"+ + "\u0007\u0017\u0000\u0000\u091f\u0920\u0007\u0005\u0000\u0000\u0920\u0921"+ + "\u0007\u0010\u0000\u0000\u0921\u0922\u0007\n\u0000\u0000\u0922\u0126\u0001"+ + "\u0000\u0000\u0000\u0923\u0924\u0007\u0005\u0000\u0000\u0924\u0925\u0007"+ + "\u0006\u0000\u0000\u0925\u0926\u0007\t\u0000\u0000\u0926\u0927\u0007\u0013"+ + "\u0000\u0000\u0927\u0128\u0001\u0000\u0000\u0000\u0928\u0929\u0007\u0005"+ + "\u0000\u0000\u0929\u092a\u0007\u0006\u0000\u0000\u092a\u092b\u0007\u0010"+ + "\u0000\u0000\u092b\u092c\u0007\n\u0000\u0000\u092c\u092d\u0007\r\u0000"+ + "\u0000\u092d\u012a\u0001\u0000\u0000\u0000\u092e\u092f\u0007\u0005\u0000"+ + "\u0000\u092f\u0930\u0007\u0006\u0000\u0000\u0930\u0931\u0007\u001c\u0000"+ + "\u0000\u0931\u0932\u0007\u0005\u0000\u0000\u0932\u0933\u0007\b\u0000\u0000"+ + "\u0933\u0934\u0007\t\u0000\u0000\u0934\u012c\u0001\u0000\u0000\u0000\u0935"+ + "\u0936\u0007\u0005\u0000\u0000\u0936\u0937\u0007\t\u0000\u0000\u0937\u0938"+ + "\u0007\t\u0000\u0000\u0938\u0939\u0007\n\u0000\u0000\u0939\u093a\u0007"+ + "\r\u0000\u0000\u093a\u093b\u0007\u0010\u0000\u0000\u093b\u093c\u0007\u0011"+ + "\u0000\u0000\u093c\u093d\u0007\u0013\u0000\u0000\u093d\u093e\u0007\u0007"+ + "\u0000\u0000\u093e\u012e\u0001\u0000\u0000\u0000\u093f\u0940\u0007\u0005"+ + "\u0000\u0000\u0940\u0941\u0007\t\u0000\u0000\u0941\u0942\u0007\t\u0000"+ + "\u0000\u0942\u0943\u0007\u0011\u0000\u0000\u0943\u0944\u0007\u0017\u0000"+ + "\u0000\u0944\u0945\u0007\u0007\u0000\u0000\u0945\u0946\u0007\u000f\u0000"+ + "\u0000\u0946\u0947\u0007\n\u0000\u0000\u0947\u0948\u0007\u0007\u0000\u0000"+ + "\u0948\u0949\u0007\u0010\u0000\u0000\u0949\u0130\u0001\u0000\u0000\u0000"+ + "\u094a\u094b\u0007\u0005\u0000\u0000\u094b\u094c\u0007\u0010\u0000\u0000"+ + "\u094c\u0132\u0001\u0000\u0000\u0000\u094d\u094e\u0007\u0005\u0000\u0000"+ + "\u094e\u094f\u0007\u0010\u0000\u0000\u094f\u0950\u0007\u0010\u0000\u0000"+ + "\u0950\u0951\u0007\r\u0000\u0000\u0951\u0952\u0007\u0011\u0000\u0000\u0952"+ + "\u0953\u0007\u0012\u0000\u0000\u0953\u0954\u0007\u0016\u0000\u0000\u0954"+ + "\u0955\u0007\u0010\u0000\u0000\u0955\u0956\u0007\n\u0000\u0000\u0956\u0134"+ + "\u0001\u0000\u0000\u0000\u0957\u0958\u0007\u0012\u0000\u0000\u0958\u0959"+ + "\u0007\u0005\u0000\u0000\u0959\u095a\u0007\u000e\u0000\u0000\u095a\u095b"+ + "\u0007\u0015\u0000\u0000\u095b\u095c\u0007\u001c\u0000\u0000\u095c\u095d"+ + "\u0007\u0005\u0000\u0000\u095d\u095e\u0007\r\u0000\u0000\u095e\u095f\u0007"+ + "\f\u0000\u0000\u095f\u0136\u0001\u0000\u0000\u0000\u0960\u0961\u0007\u0012"+ + "\u0000\u0000\u0961\u0962\u0007\n\u0000\u0000\u0962\u0963\u0007\u0019\u0000"+ + "\u0000\u0963\u0964\u0007\u0013\u0000\u0000\u0964\u0965\u0007\r\u0000\u0000"+ + "\u0965\u0966\u0007\n\u0000\u0000\u0966\u0138\u0001\u0000\u0000\u0000\u0967"+ + "\u0968\u0007\u0012\u0000\u0000\u0968\u0969\u0007\n\u0000\u0000\u0969\u096a"+ + "\u0007\u0017\u0000\u0000\u096a\u096b\u0007\u0011\u0000\u0000\u096b\u096c"+ + "\u0007\u0007\u0000\u0000\u096c\u013a\u0001\u0000\u0000\u0000\u096d\u096e"+ + "\u0007\u0012\u0000\u0000\u096e\u096f\u0007\b\u0000\u0000\u096f\u013c\u0001"+ + "\u0000\u0000\u0000\u0970\u0971\u0007\u000e\u0000\u0000\u0971\u0972\u0007"+ + "\u0005\u0000\u0000\u0972\u0973\u0007\u000e\u0000\u0000\u0973\u0974\u0007"+ + "\u0014\u0000\u0000\u0974\u0975\u0007\n\u0000\u0000\u0975\u013e\u0001\u0000"+ + "\u0000\u0000\u0976\u0977\u0007\u000e\u0000\u0000\u0977\u0978\u0007\u0005"+ + "\u0000\u0000\u0978\u0979\u0007\u0006\u0000\u0000\u0979\u097a\u0007\u0006"+ + "\u0000\u0000\u097a\u097b\u0007\n\u0000\u0000\u097b\u097c\u0007\f\u0000"+ + "\u0000\u097c\u0140\u0001\u0000\u0000\u0000\u097d\u097e\u0007\u000e\u0000"+ + "\u0000\u097e\u097f\u0007\u0005\u0000\u0000\u097f\u0980\u0007\t\u0000\u0000"+ + "\u0980\u0981\u0007\u000e\u0000\u0000\u0981\u0982\u0007\u0005\u0000\u0000"+ + "\u0982\u0983\u0007\f\u0000\u0000\u0983\u0984\u0007\n\u0000\u0000\u0984"+ + "\u0142\u0001\u0000\u0000\u0000\u0985\u0986\u0007\u000e\u0000\u0000\u0986"+ + "\u0987\u0007\u0005\u0000\u0000\u0987\u0988\u0007\t\u0000\u0000\u0988\u0989"+ + "\u0007\u000e\u0000\u0000\u0989\u098a\u0007\u0005\u0000\u0000\u098a\u098b"+ + "\u0007\f\u0000\u0000\u098b\u098c\u0007\n\u0000\u0000\u098c\u098d\u0007"+ + "\f\u0000\u0000\u098d\u0144\u0001\u0000\u0000\u0000\u098e\u098f\u0007\u000e"+ + "\u0000\u0000\u098f\u0990\u0007\u0005\u0000\u0000\u0990\u0991\u0007\u0010"+ + "\u0000\u0000\u0991\u0992\u0007\u0005\u0000\u0000\u0992\u0993\u0007\u0006"+ + "\u0000\u0000\u0993\u0994\u0007\u0013\u0000\u0000\u0994\u0995\u0007\u0017"+ + "\u0000\u0000\u0995\u0146\u0001\u0000\u0000\u0000\u0996\u0997\u0007\u000e"+ + "\u0000\u0000\u0997\u0998\u0007\u0014\u0000\u0000\u0998\u0999\u0007\u0005"+ + "\u0000\u0000\u0999\u099a\u0007\u0011\u0000\u0000\u099a\u099b\u0007\u0007"+ + "\u0000\u0000\u099b\u0148\u0001\u0000\u0000\u0000\u099c\u099d\u0007\u000e"+ + "\u0000\u0000\u099d\u099e\u0007\u0014\u0000\u0000\u099e\u099f\u0007\u0005"+ + "\u0000\u0000\u099f\u09a0\u0007\r\u0000\u0000\u09a0\u09a1\u0007\u0005\u0000"+ + "\u0000\u09a1\u09a2\u0007\u000e\u0000\u0000\u09a2\u09a3\u0007\u0010\u0000"+ + "\u0000\u09a3\u09a4\u0007\n\u0000\u0000\u09a4\u09a5\u0007\r\u0000\u0000"+ + "\u09a5\u09a6\u0007\u0011\u0000\u0000\u09a6\u09a7\u0007\t\u0000\u0000\u09a7"+ + "\u09a8\u0007\u0010\u0000\u0000\u09a8\u09a9\u0007\u0011\u0000\u0000\u09a9"+ + "\u09aa\u0007\u000e\u0000\u0000\u09aa\u09ab\u0007\t\u0000\u0000\u09ab\u014a"+ + "\u0001\u0000\u0000\u0000\u09ac\u09ad\u0007\u000e\u0000\u0000\u09ad\u09ae"+ + "\u0007\u0014\u0000\u0000\u09ae\u09af\u0007\n\u0000\u0000\u09af\u09b0\u0007"+ + "\u000e\u0000\u0000\u09b0\u09b1\u0007\u0015\u0000\u0000\u09b1\u09b2\u0007"+ + "\u0018\u0000\u0000\u09b2\u09b3\u0007\u0013\u0000\u0000\u09b3\u09b4\u0007"+ + "\u0011\u0000\u0000\u09b4\u09b5\u0007\u0007\u0000\u0000\u09b5\u09b6\u0007"+ + "\u0010\u0000\u0000\u09b6\u014c\u0001\u0000\u0000\u0000\u09b7\u09b8\u0007"+ + "\u000e\u0000\u0000\u09b8\u09b9\u0007\u0006\u0000\u0000\u09b9\u09ba\u0007"+ + "\u0005\u0000\u0000\u09ba\u09bb\u0007\t\u0000\u0000\u09bb\u09bc\u0007\t"+ + "\u0000\u0000\u09bc\u014e\u0001\u0000\u0000\u0000\u09bd\u09be\u0007\u000e"+ + "\u0000\u0000\u09be\u09bf\u0007\u0006\u0000\u0000\u09bf\u09c0\u0007\u0013"+ + "\u0000\u0000\u09c0\u09c1\u0007\t\u0000\u0000\u09c1\u09c2\u0007\n\u0000"+ + "\u0000\u09c2\u0150\u0001\u0000\u0000\u0000\u09c3\u09c4\u0007\u000e\u0000"+ + "\u0000\u09c4\u09c5\u0007\u0006\u0000\u0000\u09c5\u09c6\u0007\u0016\u0000"+ + "\u0000\u09c6\u09c7\u0007\t\u0000\u0000\u09c7\u09c8\u0007\u0010\u0000\u0000"+ + "\u09c8\u09c9\u0007\n\u0000\u0000\u09c9\u09ca\u0007\r\u0000\u0000\u09ca"+ + "\u0152\u0001\u0000\u0000\u0000\u09cb\u09cc\u0007\u000e\u0000\u0000\u09cc"+ + "\u09cd\u0007\u0013\u0000\u0000\u09cd\u09ce\u0007\u000f\u0000\u0000\u09ce"+ + "\u09cf\u0007\u000f\u0000\u0000\u09cf\u09d0\u0007\n\u0000\u0000\u09d0\u09d1"+ + "\u0007\u0007\u0000\u0000\u09d1\u09d2\u0007\u0010\u0000\u0000\u09d2\u0154"+ + "\u0001\u0000\u0000\u0000\u09d3\u09d4\u0007\u000e\u0000\u0000\u09d4\u09d5"+ + "\u0007\u0013\u0000\u0000\u09d5\u09d6\u0007\u000f\u0000\u0000\u09d6\u09d7"+ + "\u0007\u000f\u0000\u0000\u09d7\u09d8\u0007\n\u0000\u0000\u09d8\u09d9\u0007"+ + "\u0007\u0000\u0000\u09d9\u09da\u0007\u0010\u0000\u0000\u09da\u09db\u0007"+ + "\t\u0000\u0000\u09db\u0156\u0001\u0000\u0000\u0000\u09dc\u09dd\u0007\u000e"+ + "\u0000\u0000\u09dd\u09de\u0007\u0013\u0000\u0000\u09de\u09df\u0007\u000f"+ + "\u0000\u0000\u09df\u09e0\u0007\u000f\u0000\u0000\u09e0\u09e1\u0007\u0011"+ + "\u0000\u0000\u09e1\u09e2\u0007\u0010\u0000\u0000\u09e2\u0158\u0001\u0000"+ + "\u0000\u0000\u09e3\u09e4\u0007\u000e\u0000\u0000\u09e4\u09e5\u0007\u0013"+ + "\u0000\u0000\u09e5\u09e6\u0007\u000f\u0000\u0000\u09e6\u09e7\u0007\u000f"+ + "\u0000\u0000\u09e7\u09e8\u0007\u0011\u0000\u0000\u09e8\u09e9\u0007\u0010"+ + "\u0000\u0000\u09e9\u09ea\u0007\u0010\u0000\u0000\u09ea\u09eb\u0007\n\u0000"+ + "\u0000\u09eb\u09ec\u0007\f\u0000\u0000\u09ec\u015a\u0001\u0000\u0000\u0000"+ + "\u09ed\u09ee\u0007\u000e\u0000\u0000\u09ee\u09ef\u0007\u0013\u0000\u0000"+ + "\u09ef\u09f0\u0007\u0007\u0000\u0000\u09f0\u09f1\u0007\u0019\u0000\u0000"+ + "\u09f1\u09f2\u0007\u0011\u0000\u0000\u09f2\u09f3\u0007\u0017\u0000\u0000"+ + "\u09f3\u09f4\u0007\u0016\u0000\u0000\u09f4\u09f5\u0007\r\u0000\u0000\u09f5"+ + "\u09f6\u0007\u0005\u0000\u0000\u09f6\u09f7\u0007\u0010\u0000\u0000\u09f7"+ + "\u09f8\u0007\u0011\u0000\u0000\u09f8\u09f9\u0007\u0013\u0000\u0000\u09f9"+ + "\u09fa\u0007\u0007\u0000\u0000\u09fa\u015c\u0001\u0000\u0000\u0000\u09fb"+ + "\u09fc\u0007\u000e\u0000\u0000\u09fc\u09fd\u0007\u0013\u0000\u0000\u09fd"+ + "\u09fe\u0007\u0007\u0000\u0000\u09fe\u09ff\u0007\u0007\u0000\u0000\u09ff"+ + "\u0a00\u0007\n\u0000\u0000\u0a00\u0a01\u0007\u000e\u0000\u0000\u0a01\u0a02"+ + "\u0007\u0010\u0000\u0000\u0a02\u0a03\u0007\u0011\u0000\u0000\u0a03\u0a04"+ + "\u0007\u0013\u0000\u0000\u0a04\u0a05\u0007\u0007\u0000\u0000\u0a05\u015e"+ + "\u0001\u0000\u0000\u0000\u0a06\u0a07\u0007\u000e\u0000\u0000\u0a07\u0a08"+ + "\u0007\u0013\u0000\u0000\u0a08\u0a09\u0007\u0007\u0000\u0000\u0a09\u0a0a"+ + "\u0007\t\u0000\u0000\u0a0a\u0a0b\u0007\u0010\u0000\u0000\u0a0b\u0a0c\u0007"+ + "\r\u0000\u0000\u0a0c\u0a0d\u0007\u0005\u0000\u0000\u0a0d\u0a0e\u0007\u0011"+ + "\u0000\u0000\u0a0e\u0a0f\u0007\u0007\u0000\u0000\u0a0f\u0a10\u0007\u0010"+ + "\u0000\u0000\u0a10\u0a11\u0007\t\u0000\u0000\u0a11\u0160\u0001\u0000\u0000"+ + "\u0000\u0a12\u0a13\u0007\u000e\u0000\u0000\u0a13\u0a14\u0007\u0013\u0000"+ + "\u0000\u0a14\u0a15\u0007\u0007\u0000\u0000\u0a15\u0a16\u0007\u0010\u0000"+ + "\u0000\u0a16\u0a17\u0007\n\u0000\u0000\u0a17\u0a18\u0007\u0007\u0000\u0000"+ + "\u0a18\u0a19\u0007\u0010\u0000\u0000\u0a19\u0162\u0001\u0000\u0000\u0000"+ + "\u0a1a\u0a1b\u0007\u000e\u0000\u0000\u0a1b\u0a1c\u0007\u0013\u0000\u0000"+ + "\u0a1c\u0a1d\u0007\u0007\u0000\u0000\u0a1d\u0a1e\u0007\u0010\u0000\u0000"+ + "\u0a1e\u0a1f\u0007\u0011\u0000\u0000\u0a1f\u0a20\u0007\u0007\u0000\u0000"+ + "\u0a20\u0a21\u0007\u0016\u0000\u0000\u0a21\u0a22\u0007\n\u0000\u0000\u0a22"+ + "\u0164\u0001\u0000\u0000\u0000\u0a23\u0a24\u0007\u000e\u0000\u0000\u0a24"+ + "\u0a25\u0007\u0013\u0000\u0000\u0a25\u0a26\u0007\u0007\u0000\u0000\u0a26"+ + "\u0a27\u0007\u001b\u0000\u0000\u0a27\u0a28\u0007\n\u0000\u0000\u0a28\u0a29"+ + "\u0007\r\u0000\u0000\u0a29\u0a2a\u0007\t\u0000\u0000\u0a2a\u0a2b\u0007"+ + "\u0011\u0000\u0000\u0a2b\u0a2c\u0007\u0013\u0000\u0000\u0a2c\u0a2d\u0007"+ + "\u0007\u0000\u0000\u0a2d\u0166\u0001\u0000\u0000\u0000\u0a2e\u0a2f\u0007"+ + "\u000e\u0000\u0000\u0a2f\u0a30\u0007\u0013\u0000\u0000\u0a30\u0a31\u0007"+ + "\u0018\u0000\u0000\u0a31\u0a32\u0007\b\u0000\u0000\u0a32\u0168\u0001\u0000"+ + "\u0000\u0000\u0a33\u0a34\u0007\u000e\u0000\u0000\u0a34\u0a35\u0007\u0013"+ + "\u0000\u0000\u0a35\u0a36\u0007\t\u0000\u0000\u0a36\u0a37\u0007\u0010\u0000"+ + "\u0000\u0a37\u016a\u0001\u0000\u0000\u0000\u0a38\u0a39\u0007\u000e\u0000"+ + "\u0000\u0a39\u0a3a\u0007\t\u0000\u0000\u0a3a\u0a3b\u0007\u001b\u0000\u0000"+ + "\u0a3b\u016c\u0001\u0000\u0000\u0000\u0a3c\u0a3d\u0007\u000e\u0000\u0000"+ + "\u0a3d\u0a3e\u0007\u0016\u0000\u0000\u0a3e\u0a3f\u0007\r\u0000\u0000\u0a3f"+ + "\u0a40\u0007\t\u0000\u0000\u0a40\u0a41\u0007\u0013\u0000\u0000\u0a41\u0a42"+ + "\u0007\r\u0000\u0000\u0a42\u016e\u0001\u0000\u0000\u0000\u0a43\u0a44\u0007"+ + "\u000e\u0000\u0000\u0a44\u0a45\u0007\b\u0000\u0000\u0a45\u0a46\u0007\u000e"+ + "\u0000\u0000\u0a46\u0a47\u0007\u0006\u0000\u0000\u0a47\u0a48\u0007\n\u0000"+ + "\u0000\u0a48\u0170\u0001\u0000\u0000\u0000\u0a49\u0a4a\u0007\f\u0000\u0000"+ + "\u0a4a\u0a4b\u0007\u0005\u0000\u0000\u0a4b\u0a4c\u0007\u0010\u0000\u0000"+ + "\u0a4c\u0a4d\u0007\u0005\u0000\u0000\u0a4d\u0172\u0001\u0000\u0000\u0000"+ + "\u0a4e\u0a4f\u0007\f\u0000\u0000\u0a4f\u0a50\u0007\u0005\u0000\u0000\u0a50"+ + "\u0a51\u0007\u0010\u0000\u0000\u0a51\u0a52\u0007\u0005\u0000\u0000\u0a52"+ + "\u0a53\u0007\u0012\u0000\u0000\u0a53\u0a54\u0007\u0005\u0000\u0000\u0a54"+ + "\u0a55\u0007\t\u0000\u0000\u0a55\u0a56\u0007\n\u0000\u0000\u0a56\u0174"+ + "\u0001\u0000\u0000\u0000\u0a57\u0a58\u0007\f\u0000\u0000\u0a58\u0a59\u0007"+ + "\u0005\u0000\u0000\u0a59\u0a5a\u0007\b\u0000\u0000\u0a5a\u0176\u0001\u0000"+ + "\u0000\u0000\u0a5b\u0a5c\u0007\f\u0000\u0000\u0a5c\u0a5d\u0007\n\u0000"+ + "\u0000\u0a5d\u0a5e\u0007\u0005\u0000\u0000\u0a5e\u0a5f\u0007\u0006\u0000"+ + "\u0000\u0a5f\u0a60\u0007\u0006\u0000\u0000\u0a60\u0a61\u0007\u0013\u0000"+ + "\u0000\u0a61\u0a62\u0007\u000e\u0000\u0000\u0a62\u0a63\u0007\u0005\u0000"+ + "\u0000\u0a63\u0a64\u0007\u0010\u0000\u0000\u0a64\u0a65\u0007\n\u0000\u0000"+ + "\u0a65\u0178\u0001\u0000\u0000\u0000\u0a66\u0a67\u0007\f\u0000\u0000\u0a67"+ + "\u0a68\u0007\n\u0000\u0000\u0a68\u0a69\u0007\u000e\u0000\u0000\u0a69\u0a6a"+ + "\u0007\u0006\u0000\u0000\u0a6a\u0a6b\u0007\u0005\u0000\u0000\u0a6b\u0a6c"+ + "\u0007\r\u0000\u0000\u0a6c\u0a6d\u0007\n\u0000\u0000\u0a6d\u017a\u0001"+ + "\u0000\u0000\u0000\u0a6e\u0a6f\u0007\f\u0000\u0000\u0a6f\u0a70\u0007\n"+ + "\u0000\u0000\u0a70\u0a71\u0007\u0019\u0000\u0000\u0a71\u0a72\u0007\u0005"+ + "\u0000\u0000\u0a72\u0a73\u0007\u0016\u0000\u0000\u0a73\u0a74\u0007\u0006"+ + "\u0000\u0000\u0a74\u0a75\u0007\u0010\u0000\u0000\u0a75\u0a76\u0007\t\u0000"+ + "\u0000\u0a76\u017c\u0001\u0000\u0000\u0000\u0a77\u0a78\u0007\f\u0000\u0000"+ + "\u0a78\u0a79\u0007\n\u0000\u0000\u0a79\u0a7a\u0007\u0019\u0000\u0000\u0a7a"+ + "\u0a7b\u0007\n\u0000\u0000\u0a7b\u0a7c\u0007\r\u0000\u0000\u0a7c\u0a7d"+ + "\u0007\r\u0000\u0000\u0a7d\u0a7e\u0007\n\u0000\u0000\u0a7e\u0a7f\u0007"+ + "\f\u0000\u0000\u0a7f\u017e\u0001\u0000\u0000\u0000\u0a80\u0a81\u0007\f"+ + "\u0000\u0000\u0a81\u0a82\u0007\n\u0000\u0000\u0a82\u0a83\u0007\u0019\u0000"+ + "\u0000\u0a83\u0a84\u0007\u0011\u0000\u0000\u0a84\u0a85\u0007\u0007\u0000"+ + "\u0000\u0a85\u0a86\u0007\n\u0000\u0000\u0a86\u0a87\u0007\r\u0000\u0000"+ + "\u0a87\u0180\u0001\u0000\u0000\u0000\u0a88\u0a89\u0007\f\u0000\u0000\u0a89"+ + "\u0a8a\u0007\n\u0000\u0000\u0a8a\u0a8b\u0007\u0006\u0000\u0000\u0a8b\u0a8c"+ + "\u0007\n\u0000\u0000\u0a8c\u0a8d\u0007\u0010\u0000\u0000\u0a8d\u0a8e\u0007"+ + "\n\u0000\u0000\u0a8e\u0182\u0001\u0000\u0000\u0000\u0a8f\u0a90\u0007\f"+ + "\u0000\u0000\u0a90\u0a91\u0007\n\u0000\u0000\u0a91\u0a92\u0007\u0006\u0000"+ + "\u0000\u0a92\u0a93\u0007\u0011\u0000\u0000\u0a93\u0a94\u0007\u000f\u0000"+ + "\u0000\u0a94\u0a95\u0007\u0011\u0000\u0000\u0a95\u0a96\u0007\u0010\u0000"+ + "\u0000\u0a96\u0a97\u0007\n\u0000\u0000\u0a97\u0a98\u0007\r\u0000\u0000"+ + "\u0a98\u0184\u0001\u0000\u0000\u0000\u0a99\u0a9a\u0007\f\u0000\u0000\u0a9a"+ + "\u0a9b\u0007\n\u0000\u0000\u0a9b\u0a9c\u0007\u0006\u0000\u0000\u0a9c\u0a9d"+ + "\u0007\u0011\u0000\u0000\u0a9d\u0a9e\u0007\u000f\u0000\u0000\u0a9e\u0a9f"+ + "\u0007\u0011\u0000\u0000\u0a9f\u0aa0\u0007\u0010\u0000\u0000\u0aa0\u0aa1"+ + "\u0007\n\u0000\u0000\u0aa1\u0aa2\u0007\r\u0000\u0000\u0aa2\u0aa3\u0007"+ + "\t\u0000\u0000\u0aa3\u0186\u0001\u0000\u0000\u0000\u0aa4\u0aa5\u0007\f"+ + "\u0000\u0000\u0aa5\u0aa6\u0007\u0011\u0000\u0000\u0aa6\u0aa7\u0007\u000e"+ + "\u0000\u0000\u0aa7\u0aa8\u0007\u0010\u0000\u0000\u0aa8\u0aa9\u0007\u0011"+ + "\u0000\u0000\u0aa9\u0aaa\u0007\u0013\u0000\u0000\u0aaa\u0aab\u0007\u0007"+ + "\u0000\u0000\u0aab\u0aac\u0007\u0005\u0000\u0000\u0aac\u0aad\u0007\r\u0000"+ + "\u0000\u0aad\u0aae\u0007\b\u0000\u0000\u0aae\u0188\u0001\u0000\u0000\u0000"+ + "\u0aaf\u0ab0\u0007\f\u0000\u0000\u0ab0\u0ab1\u0007\u0011\u0000\u0000\u0ab1"+ + "\u0ab2\u0007\t\u0000\u0000\u0ab2\u0ab3\u0007\u0005\u0000\u0000\u0ab3\u0ab4"+ + "\u0007\u0012\u0000\u0000\u0ab4\u0ab5\u0007\u0006\u0000\u0000\u0ab5\u0ab6"+ + "\u0007\n\u0000\u0000\u0ab6\u018a\u0001\u0000\u0000\u0000\u0ab7\u0ab8\u0007"+ + "\f\u0000\u0000\u0ab8\u0ab9\u0007\u0011\u0000\u0000\u0ab9\u0aba\u0007\t"+ + "\u0000\u0000\u0aba\u0abb\u0007\u000e\u0000\u0000\u0abb\u0abc\u0007\u0005"+ + "\u0000\u0000\u0abc\u0abd\u0007\r\u0000\u0000\u0abd\u0abe\u0007\f\u0000"+ + "\u0000\u0abe\u018c\u0001\u0000\u0000\u0000\u0abf\u0ac0\u0007\f\u0000\u0000"+ + "\u0ac0\u0ac1\u0007\u0013\u0000\u0000\u0ac1\u0ac2\u0007\u000e\u0000\u0000"+ + "\u0ac2\u0ac3\u0007\u0016\u0000\u0000\u0ac3\u0ac4\u0007\u000f\u0000\u0000"+ + "\u0ac4\u0ac5\u0007\n\u0000\u0000\u0ac5\u0ac6\u0007\u0007\u0000\u0000\u0ac6"+ + "\u0ac7\u0007\u0010\u0000\u0000\u0ac7\u018e\u0001\u0000\u0000\u0000\u0ac8"+ + "\u0ac9\u0007\f\u0000\u0000\u0ac9\u0aca\u0007\u0013\u0000\u0000\u0aca\u0acb"+ + "\u0007\u000f\u0000\u0000\u0acb\u0acc\u0007\u0005\u0000\u0000\u0acc\u0acd"+ + "\u0007\u0011\u0000\u0000\u0acd\u0ace\u0007\u0007\u0000\u0000\u0ace\u0190"+ + "\u0001\u0000\u0000\u0000\u0acf\u0ad0\u0007\f\u0000\u0000\u0ad0\u0ad1\u0007"+ + "\u0013\u0000\u0000\u0ad1\u0ad2\u0007\u0016\u0000\u0000\u0ad2\u0ad3\u0007"+ + "\u0012\u0000\u0000\u0ad3\u0ad4\u0007\u0006\u0000\u0000\u0ad4\u0ad5\u0007"+ + "\n\u0000\u0000\u0ad5\u0192\u0001\u0000\u0000\u0000\u0ad6\u0ad7\u0007\f"+ + "\u0000\u0000\u0ad7\u0ad8\u0007\r\u0000\u0000\u0ad8\u0ad9\u0007\u0013\u0000"+ + "\u0000\u0ad9\u0ada\u0007\u0018\u0000\u0000\u0ada\u0194\u0001\u0000\u0000"+ + "\u0000\u0adb\u0adc\u0007\n\u0000\u0000\u0adc\u0add\u0007\u0005\u0000\u0000"+ + "\u0add\u0ade\u0007\u000e\u0000\u0000\u0ade\u0adf\u0007\u0014\u0000\u0000"+ + "\u0adf\u0196\u0001\u0000\u0000\u0000\u0ae0\u0ae1\u0007\n\u0000\u0000\u0ae1"+ + "\u0ae2\u0007\u0007\u0000\u0000\u0ae2\u0ae3\u0007\u0005\u0000\u0000\u0ae3"+ + "\u0ae4\u0007\u0012\u0000\u0000\u0ae4\u0ae5\u0007\u0006\u0000\u0000\u0ae5"+ + "\u0ae6\u0007\n\u0000\u0000\u0ae6\u0198\u0001\u0000\u0000\u0000\u0ae7\u0ae8"+ + "\u0007\n\u0000\u0000\u0ae8\u0ae9\u0007\u0007\u0000\u0000\u0ae9\u0aea\u0007"+ + "\u000e\u0000\u0000\u0aea\u0aeb\u0007\u0013\u0000\u0000\u0aeb\u0aec\u0007"+ + "\f\u0000\u0000\u0aec\u0aed\u0007\u0011\u0000\u0000\u0aed\u0aee\u0007\u0007"+ + "\u0000\u0000\u0aee\u0aef\u0007\u0017\u0000\u0000\u0aef\u019a\u0001\u0000"+ + "\u0000\u0000\u0af0\u0af1\u0007\n\u0000\u0000\u0af1\u0af2\u0007\u0007\u0000"+ + "\u0000\u0af2\u0af3\u0007\u000e\u0000\u0000\u0af3\u0af4\u0007\r\u0000\u0000"+ + "\u0af4\u0af5\u0007\b\u0000\u0000\u0af5\u0af6\u0007\u0018\u0000\u0000\u0af6"+ + "\u0af7\u0007\u0010\u0000\u0000\u0af7\u0af8\u0007\n\u0000\u0000\u0af8\u0af9"+ + "\u0007\f\u0000\u0000\u0af9\u019c\u0001\u0000\u0000\u0000\u0afa\u0afb\u0007"+ + "\n\u0000\u0000\u0afb\u0afc\u0007\u0007\u0000\u0000\u0afc\u0afd\u0007\u0016"+ + "\u0000\u0000\u0afd\u0afe\u0007\u000f\u0000\u0000\u0afe\u019e\u0001\u0000"+ + "\u0000\u0000\u0aff\u0b00\u0007\n\u0000\u0000\u0b00\u0b01\u0007\t\u0000"+ + "\u0000\u0b01\u0b02\u0007\u000e\u0000\u0000\u0b02\u0b03\u0007\u0005\u0000"+ + "\u0000\u0b03\u0b04\u0007\u0018\u0000\u0000\u0b04\u0b05\u0007\n\u0000\u0000"+ + "\u0b05\u01a0\u0001\u0000\u0000\u0000\u0b06\u0b07\u0007\n\u0000\u0000\u0b07"+ + "\u0b08\u0007\u001b\u0000\u0000\u0b08\u0b09\u0007\n\u0000\u0000\u0b09\u0b0a"+ + "\u0007\u0007\u0000\u0000\u0b0a\u0b0b\u0007\u0010\u0000\u0000\u0b0b\u01a2"+ + "\u0001\u0000\u0000\u0000\u0b0c\u0b0d\u0007\n\u0000\u0000\u0b0d\u0b0e\u0007"+ + "\u001a\u0000\u0000\u0b0e\u0b0f\u0007\u000e\u0000\u0000\u0b0f\u0b10\u0007"+ + "\u0006\u0000\u0000\u0b10\u0b11\u0007\u0016\u0000\u0000\u0b11\u0b12\u0007"+ + "\f\u0000\u0000\u0b12\u0b13\u0007\n\u0000\u0000\u0b13\u01a4\u0001\u0000"+ + "\u0000\u0000\u0b14\u0b15\u0007\n\u0000\u0000\u0b15\u0b16\u0007\u001a\u0000"+ + "\u0000\u0b16\u0b17\u0007\u000e\u0000\u0000\u0b17\u0b18\u0007\u0006\u0000"+ + "\u0000\u0b18\u0b19\u0007\u0016\u0000\u0000\u0b19\u0b1a\u0007\f\u0000\u0000"+ + "\u0b1a\u0b1b\u0007\u0011\u0000\u0000\u0b1b\u0b1c\u0007\u0007\u0000\u0000"+ + "\u0b1c\u0b1d\u0007\u0017\u0000\u0000\u0b1d\u01a6\u0001\u0000\u0000\u0000"+ + "\u0b1e\u0b1f\u0007\n\u0000\u0000\u0b1f\u0b20\u0007\u001a\u0000\u0000\u0b20"+ + "\u0b21\u0007\u000e\u0000\u0000\u0b21\u0b22\u0007\u0006\u0000\u0000\u0b22"+ + "\u0b23\u0007\u0016\u0000\u0000\u0b23\u0b24\u0007\t\u0000\u0000\u0b24\u0b25"+ + "\u0007\u0011\u0000\u0000\u0b25\u0b26\u0007\u001b\u0000\u0000\u0b26\u0b27"+ + "\u0007\n\u0000\u0000\u0b27\u01a8\u0001\u0000\u0000\u0000\u0b28\u0b29\u0007"+ + "\n\u0000\u0000\u0b29\u0b2a\u0007\u001a\u0000\u0000\u0b2a\u0b2b\u0007\n"+ + "\u0000\u0000\u0b2b\u0b2c\u0007\u000e\u0000\u0000\u0b2c\u0b2d\u0007\u0016"+ + "\u0000\u0000\u0b2d\u0b2e\u0007\u0010\u0000\u0000\u0b2e\u0b2f\u0007\n\u0000"+ + "\u0000\u0b2f\u01aa\u0001\u0000\u0000\u0000\u0b30\u0b31\u0007\n\u0000\u0000"+ + "\u0b31\u0b32\u0007\u001a\u0000\u0000\u0b32\u0b33\u0007\u0018\u0000\u0000"+ + "\u0b33\u0b34\u0007\u0006\u0000\u0000\u0b34\u0b35\u0007\u0005\u0000\u0000"+ + "\u0b35\u0b36\u0007\u0011\u0000\u0000\u0b36\u0b37\u0007\u0007\u0000\u0000"+ + "\u0b37\u01ac\u0001\u0000\u0000\u0000\u0b38\u0b39\u0007\n\u0000\u0000\u0b39"+ + "\u0b3a\u0007\u001a\u0000\u0000\u0b3a\u0b3b\u0007\u0010\u0000\u0000\u0b3b"+ + "\u0b3c\u0007\n\u0000\u0000\u0b3c\u0b3d\u0007\u0007\u0000\u0000\u0b3d\u0b3e"+ + "\u0007\t\u0000\u0000\u0b3e\u0b3f\u0007\u0011\u0000\u0000\u0b3f\u0b40\u0007"+ + "\u0013\u0000\u0000\u0b40\u0b41\u0007\u0007\u0000\u0000\u0b41\u01ae\u0001"+ + "\u0000\u0000\u0000\u0b42\u0b43\u0007\n\u0000\u0000\u0b43\u0b44\u0007\u001a"+ + "\u0000\u0000\u0b44\u0b45\u0007\u0010\u0000\u0000\u0b45\u0b46\u0007\n\u0000"+ + "\u0000\u0b46\u0b47\u0007\r\u0000\u0000\u0b47\u0b48\u0007\u0007\u0000\u0000"+ + "\u0b48\u0b49\u0007\u0005\u0000\u0000\u0b49\u0b4a\u0007\u0006\u0000\u0000"+ + "\u0b4a\u01b0\u0001\u0000\u0000\u0000\u0b4b\u0b4c\u0007\u0019\u0000\u0000"+ + "\u0b4c\u0b4d\u0007\u0005\u0000\u0000\u0b4d\u0b4e\u0007\u000f\u0000\u0000"+ + "\u0b4e\u0b4f\u0007\u0011\u0000\u0000\u0b4f\u0b50\u0007\u0006\u0000\u0000"+ + "\u0b50\u0b51\u0007\b\u0000\u0000\u0b51\u01b2\u0001\u0000\u0000\u0000\u0b52"+ + "\u0b53\u0007\u0019\u0000\u0000\u0b53\u0b54\u0007\u0011\u0000\u0000\u0b54"+ + "\u0b55\u0007\r\u0000\u0000\u0b55\u0b56\u0007\t\u0000\u0000\u0b56\u0b57"+ + "\u0007\u0010\u0000\u0000\u0b57\u01b4\u0001\u0000\u0000\u0000\u0b58\u0b59"+ + "\u0007\u0019\u0000\u0000\u0b59\u0b5a\u0007\u0013\u0000\u0000\u0b5a\u0b5b"+ + "\u0007\u0006\u0000\u0000\u0b5b\u0b5c\u0007\u0006\u0000\u0000\u0b5c\u0b5d"+ + "\u0007\u0013\u0000\u0000\u0b5d\u0b5e\u0007\u001c\u0000\u0000\u0b5e\u0b5f"+ + "\u0007\u0011\u0000\u0000\u0b5f\u0b60\u0007\u0007\u0000\u0000\u0b60\u0b61"+ + "\u0007\u0017\u0000\u0000\u0b61\u01b6\u0001\u0000\u0000\u0000\u0b62\u0b63"+ + "\u0007\u0019\u0000\u0000\u0b63\u0b64\u0007\u0013\u0000\u0000\u0b64\u0b65"+ + "\u0007\r\u0000\u0000\u0b65\u0b66\u0007\u000e\u0000\u0000\u0b66\u0b67\u0007"+ + "\n\u0000\u0000\u0b67\u01b8\u0001\u0000\u0000\u0000\u0b68\u0b69\u0007\u0019"+ + "\u0000\u0000\u0b69\u0b6a\u0007\u0013\u0000\u0000\u0b6a\u0b6b\u0007\r\u0000"+ + "\u0000\u0b6b\u0b6c\u0007\u001c\u0000\u0000\u0b6c\u0b6d\u0007\u0005\u0000"+ + "\u0000\u0b6d\u0b6e\u0007\r\u0000\u0000\u0b6e\u0b6f\u0007\f\u0000\u0000"+ + "\u0b6f\u01ba\u0001\u0000\u0000\u0000\u0b70\u0b71\u0007\u0019\u0000\u0000"+ + "\u0b71\u0b72\u0007\u0016\u0000\u0000\u0b72\u0b73\u0007\u0007\u0000\u0000"+ + "\u0b73\u0b74\u0007\u000e\u0000\u0000\u0b74\u0b75\u0007\u0010\u0000\u0000"+ + "\u0b75\u0b76\u0007\u0011\u0000\u0000\u0b76\u0b77\u0007\u0013\u0000\u0000"+ + "\u0b77\u0b78\u0007\u0007\u0000\u0000\u0b78\u01bc\u0001\u0000\u0000\u0000"+ + "\u0b79\u0b7a\u0007\u0019\u0000\u0000\u0b7a\u0b7b\u0007\u0016\u0000\u0000"+ + "\u0b7b\u0b7c\u0007\u0007\u0000\u0000\u0b7c\u0b7d\u0007\u000e\u0000\u0000"+ + "\u0b7d\u0b7e\u0007\u0010\u0000\u0000\u0b7e\u0b7f\u0007\u0011\u0000\u0000"+ + "\u0b7f\u0b80\u0007\u0013\u0000\u0000\u0b80\u0b81\u0007\u0007\u0000\u0000"+ + "\u0b81\u0b82\u0007\t\u0000\u0000\u0b82\u01be\u0001\u0000\u0000\u0000\u0b83"+ + "\u0b84\u0007\u0017\u0000\u0000\u0b84\u0b85\u0007\u0006\u0000\u0000\u0b85"+ + "\u0b86\u0007\u0013\u0000\u0000\u0b86\u0b87\u0007\u0012\u0000\u0000\u0b87"+ + "\u0b88\u0007\u0005\u0000\u0000\u0b88\u0b89\u0007\u0006\u0000\u0000\u0b89"+ + "\u01c0\u0001\u0000\u0000\u0000\u0b8a\u0b8b\u0007\u0017\u0000\u0000\u0b8b"+ + "\u0b8c\u0007\r\u0000\u0000\u0b8c\u0b8d\u0007\u0005\u0000\u0000\u0b8d\u0b8e"+ + "\u0007\u0007\u0000\u0000\u0b8e\u0b8f\u0007\u0010\u0000\u0000\u0b8f\u0b90"+ + "\u0007\n\u0000\u0000\u0b90\u0b91\u0007\f\u0000\u0000\u0b91\u01c2\u0001"+ + "\u0000\u0000\u0000\u0b92\u0b93\u0007\u0014\u0000\u0000\u0b93\u0b94\u0007"+ + "\u0005\u0000\u0000\u0b94\u0b95\u0007\u0007\u0000\u0000\u0b95\u0b96\u0007"+ + "\f\u0000\u0000\u0b96\u0b97\u0007\u0006\u0000\u0000\u0b97\u0b98\u0007\n"+ + "\u0000\u0000\u0b98\u0b99\u0007\r\u0000\u0000\u0b99\u01c4\u0001\u0000\u0000"+ + "\u0000\u0b9a\u0b9b\u0007\u0014\u0000\u0000\u0b9b\u0b9c\u0007\n\u0000\u0000"+ + "\u0b9c\u0b9d\u0007\u0005\u0000\u0000\u0b9d\u0b9e\u0007\f\u0000\u0000\u0b9e"+ + "\u0b9f\u0007\n\u0000\u0000\u0b9f\u0ba0\u0007\r\u0000\u0000\u0ba0\u01c6"+ + "\u0001\u0000\u0000\u0000\u0ba1\u0ba2\u0007\u0014\u0000\u0000\u0ba2\u0ba3"+ + "\u0007\u0013\u0000\u0000\u0ba3\u0ba4\u0007\u0006\u0000\u0000\u0ba4\u0ba5"+ + "\u0007\f\u0000\u0000\u0ba5\u01c8\u0001\u0000\u0000\u0000\u0ba6\u0ba7\u0007"+ + "\u0014\u0000\u0000\u0ba7\u0ba8\u0007\u0013\u0000\u0000\u0ba8\u0ba9\u0007"+ + "\u0016\u0000\u0000\u0ba9\u0baa\u0007\r\u0000\u0000\u0baa\u01ca\u0001\u0000"+ + "\u0000\u0000\u0bab\u0bac\u0007\u0011\u0000\u0000\u0bac\u0bad\u0007\f\u0000"+ + "\u0000\u0bad\u0bae\u0007\n\u0000\u0000\u0bae\u0baf\u0007\u0007\u0000\u0000"+ + "\u0baf\u0bb0\u0007\u0010\u0000\u0000\u0bb0\u0bb1\u0007\u0011\u0000\u0000"+ + "\u0bb1\u0bb2\u0007\u0010\u0000\u0000\u0bb2\u0bb3\u0007\b\u0000\u0000\u0bb3"+ + "\u01cc\u0001\u0000\u0000\u0000\u0bb4\u0bb5\u0007\u0011\u0000\u0000\u0bb5"+ + "\u0bb6\u0007\u0019\u0000\u0000\u0bb6\u01ce\u0001\u0000\u0000\u0000\u0bb7"+ + "\u0bb8\u0007\u0011\u0000\u0000\u0bb8\u0bb9\u0007\u000f\u0000\u0000\u0bb9"+ + "\u0bba\u0007\u000f\u0000\u0000\u0bba\u0bbb\u0007\n\u0000\u0000\u0bbb\u0bbc"+ + "\u0007\f\u0000\u0000\u0bbc\u0bbd\u0007\u0011\u0000\u0000\u0bbd\u0bbe\u0007"+ + "\u0005\u0000\u0000\u0bbe\u0bbf\u0007\u0010\u0000\u0000\u0bbf\u0bc0\u0007"+ + "\n\u0000\u0000\u0bc0\u01d0\u0001\u0000\u0000\u0000\u0bc1\u0bc2\u0007\u0011"+ + "\u0000\u0000\u0bc2\u0bc3\u0007\u000f\u0000\u0000\u0bc3\u0bc4\u0007\u000f"+ + "\u0000\u0000\u0bc4\u0bc5\u0007\u0016\u0000\u0000\u0bc5\u0bc6\u0007\u0010"+ + "\u0000\u0000\u0bc6\u0bc7\u0007\u0005\u0000\u0000\u0bc7\u0bc8\u0007\u0012"+ + "\u0000\u0000\u0bc8\u0bc9\u0007\u0006\u0000\u0000\u0bc9\u0bca\u0007\n\u0000"+ + "\u0000\u0bca\u01d2\u0001\u0000\u0000\u0000\u0bcb\u0bcc\u0007\u0011\u0000"+ + "\u0000\u0bcc\u0bcd\u0007\u000f\u0000\u0000\u0bcd\u0bce\u0007\u0018\u0000"+ + "\u0000\u0bce\u0bcf\u0007\u0006\u0000\u0000\u0bcf\u0bd0\u0007\u0011\u0000"+ + "\u0000\u0bd0\u0bd1\u0007\u000e\u0000\u0000\u0bd1\u0bd2\u0007\u0011\u0000"+ + "\u0000\u0bd2\u0bd3\u0007\u0010\u0000\u0000\u0bd3\u01d4\u0001\u0000\u0000"+ + "\u0000\u0bd4\u0bd5\u0007\u0011\u0000\u0000\u0bd5\u0bd6\u0007\u0007\u0000"+ + "\u0000\u0bd6\u0bd7\u0007\u000e\u0000\u0000\u0bd7\u0bd8\u0007\u0006\u0000"+ + "\u0000\u0bd8\u0bd9\u0007\u0016\u0000\u0000\u0bd9\u0bda\u0007\f\u0000\u0000"+ + "\u0bda\u0bdb\u0007\u0011\u0000\u0000\u0bdb\u0bdc\u0007\u0007\u0000\u0000"+ + "\u0bdc\u0bdd\u0007\u0017\u0000\u0000\u0bdd\u01d6\u0001\u0000\u0000\u0000"+ + "\u0bde\u0bdf\u0007\u0011\u0000\u0000\u0bdf\u0be0\u0007\u0007\u0000\u0000"+ + "\u0be0\u0be1\u0007\u000e\u0000\u0000\u0be1\u0be2\u0007\r\u0000\u0000\u0be2"+ + "\u0be3\u0007\n\u0000\u0000\u0be3\u0be4\u0007\u000f\u0000\u0000\u0be4\u0be5"+ + "\u0007\n\u0000\u0000\u0be5\u0be6\u0007\u0007\u0000\u0000\u0be6\u0be7\u0007"+ + "\u0010\u0000\u0000\u0be7\u01d8\u0001\u0000\u0000\u0000\u0be8\u0be9\u0007"+ + "\u0011\u0000\u0000\u0be9\u0bea\u0007\u0007\u0000\u0000\u0bea\u0beb\u0007"+ + "\f\u0000\u0000\u0beb\u0bec\u0007\n\u0000\u0000\u0bec\u0bed\u0007\u001a"+ + "\u0000\u0000\u0bed\u01da\u0001\u0000\u0000\u0000\u0bee\u0bef\u0007\u0011"+ + "\u0000\u0000\u0bef\u0bf0\u0007\u0007\u0000\u0000\u0bf0\u0bf1\u0007\f\u0000"+ + "\u0000\u0bf1\u0bf2\u0007\n\u0000\u0000\u0bf2\u0bf3\u0007\u001a\u0000\u0000"+ + "\u0bf3\u0bf4\u0007\n\u0000\u0000\u0bf4\u0bf5\u0007\t\u0000\u0000\u0bf5"+ + "\u01dc\u0001\u0000\u0000\u0000\u0bf6\u0bf7\u0007\u0011\u0000\u0000\u0bf7"+ + "\u0bf8\u0007\u0007\u0000\u0000\u0bf8\u0bf9\u0007\u0014\u0000\u0000\u0bf9"+ + "\u0bfa\u0007\n\u0000\u0000\u0bfa\u0bfb\u0007\r\u0000\u0000\u0bfb\u0bfc"+ + "\u0007\u0011\u0000\u0000\u0bfc\u0bfd\u0007\u0010\u0000\u0000\u0bfd\u01de"+ + "\u0001\u0000\u0000\u0000\u0bfe\u0bff\u0007\u0011\u0000\u0000\u0bff\u0c00"+ + "\u0007\u0007\u0000\u0000\u0c00\u0c01\u0007\u0014\u0000\u0000\u0c01\u0c02"+ + "\u0007\n\u0000\u0000\u0c02\u0c03\u0007\r\u0000\u0000\u0c03\u0c04\u0007"+ + "\u0011\u0000\u0000\u0c04\u0c05\u0007\u0010\u0000\u0000\u0c05\u0c06\u0007"+ + "\t\u0000\u0000\u0c06\u01e0\u0001\u0000\u0000\u0000\u0c07\u0c08\u0007\u0011"+ + "\u0000\u0000\u0c08\u0c09\u0007\u0007\u0000\u0000\u0c09\u0c0a\u0007\u0006"+ + "\u0000\u0000\u0c0a\u0c0b\u0007\u0011\u0000\u0000\u0c0b\u0c0c\u0007\u0007"+ + "\u0000\u0000\u0c0c\u0c0d\u0007\n\u0000\u0000\u0c0d\u01e2\u0001\u0000\u0000"+ + "\u0000\u0c0e\u0c0f\u0007\u0011\u0000\u0000\u0c0f\u0c10\u0007\u0007\u0000"+ + "\u0000\u0c10\u0c11\u0007\t\u0000\u0000\u0c11\u0c12\u0007\n\u0000\u0000"+ + "\u0c12\u0c13\u0007\u0007\u0000\u0000\u0c13\u0c14\u0007\t\u0000\u0000\u0c14"+ + "\u0c15\u0007\u0011\u0000\u0000\u0c15\u0c16\u0007\u0010\u0000\u0000\u0c16"+ + "\u0c17\u0007\u0011\u0000\u0000\u0c17\u0c18\u0007\u001b\u0000\u0000\u0c18"+ + "\u0c19\u0007\n\u0000\u0000\u0c19\u01e4\u0001\u0000\u0000\u0000\u0c1a\u0c1b"+ + "\u0007\u0011\u0000\u0000\u0c1b\u0c1c\u0007\u0007\u0000\u0000\u0c1c\u0c1d"+ + "\u0007\t\u0000\u0000\u0c1d\u0c1e\u0007\n\u0000\u0000\u0c1e\u0c1f\u0007"+ + "\r\u0000\u0000\u0c1f\u0c20\u0007\u0010\u0000\u0000\u0c20\u01e6\u0001\u0000"+ + "\u0000\u0000\u0c21\u0c22\u0007\u0011\u0000\u0000\u0c22\u0c23\u0007\u0007"+ + "\u0000\u0000\u0c23\u0c24\u0007\t\u0000\u0000\u0c24\u0c25\u0007\u0010\u0000"+ + "\u0000\u0c25\u0c26\u0007\n\u0000\u0000\u0c26\u0c27\u0007\u0005\u0000\u0000"+ + "\u0c27\u0c28\u0007\f\u0000\u0000\u0c28\u01e8\u0001\u0000\u0000\u0000\u0c29"+ + "\u0c2a\u0007\u0011\u0000\u0000\u0c2a\u0c2b\u0007\u0007\u0000\u0000\u0c2b"+ + "\u0c2c\u0007\u001b\u0000\u0000\u0c2c\u0c2d\u0007\u0013\u0000\u0000\u0c2d"+ + "\u0c2e\u0007\u0015\u0000\u0000\u0c2e\u0c2f\u0007\n\u0000\u0000\u0c2f\u0c30"+ + "\u0007\r\u0000\u0000\u0c30\u01ea\u0001\u0000\u0000\u0000\u0c31\u0c32\u0007"+ + "\u0011\u0000\u0000\u0c32\u0c33\u0007\t\u0000\u0000\u0c33\u0c34\u0007\u0013"+ + "\u0000\u0000\u0c34\u0c35\u0007\u0006\u0000\u0000\u0c35\u0c36\u0007\u0005"+ + "\u0000\u0000\u0c36\u0c37\u0007\u0010\u0000\u0000\u0c37\u0c38\u0007\u0011"+ + "\u0000\u0000\u0c38\u0c39\u0007\u0013\u0000\u0000\u0c39\u0c3a\u0007\u0007"+ + "\u0000\u0000\u0c3a\u01ec\u0001\u0000\u0000\u0000\u0c3b\u0c3c\u0007\u0015"+ + "\u0000\u0000\u0c3c\u0c3d\u0007\n\u0000\u0000\u0c3d\u0c3e\u0007\b\u0000"+ + "\u0000\u0c3e\u01ee\u0001\u0000\u0000\u0000\u0c3f\u0c40\u0007\u0006\u0000"+ + "\u0000\u0c40\u0c41\u0007\u0005\u0000\u0000\u0c41\u0c42\u0007\u0012\u0000"+ + "\u0000\u0c42\u0c43\u0007\n\u0000\u0000\u0c43\u0c44\u0007\u0006\u0000\u0000"+ + "\u0c44\u01f0\u0001\u0000\u0000\u0000\u0c45\u0c46\u0007\u0006\u0000\u0000"+ + "\u0c46\u0c47\u0007\u0005\u0000\u0000\u0c47\u0c48\u0007\u0007\u0000\u0000"+ + "\u0c48\u0c49\u0007\u0017\u0000\u0000\u0c49\u0c4a\u0007\u0016\u0000\u0000"+ + "\u0c4a\u0c4b\u0007\u0005\u0000\u0000\u0c4b\u0c4c\u0007\u0017\u0000\u0000"+ + "\u0c4c\u0c4d\u0007\n\u0000\u0000\u0c4d\u01f2\u0001\u0000\u0000\u0000\u0c4e"+ + "\u0c4f\u0007\u0006\u0000\u0000\u0c4f\u0c50\u0007\u0005\u0000\u0000\u0c50"+ + "\u0c51\u0007\r\u0000\u0000\u0c51\u0c52\u0007\u0017\u0000\u0000\u0c52\u0c53"+ + "\u0007\n\u0000\u0000\u0c53\u01f4\u0001\u0000\u0000\u0000\u0c54\u0c55\u0007"+ + "\u0006\u0000\u0000\u0c55\u0c56\u0007\u0005\u0000\u0000\u0c56\u0c57\u0007"+ + "\t\u0000\u0000\u0c57\u0c58\u0007\u0010\u0000\u0000\u0c58\u01f6\u0001\u0000"+ + "\u0000\u0000\u0c59\u0c5a\u0007\u0006\u0000\u0000\u0c5a\u0c5b\u0007\n\u0000"+ + "\u0000\u0c5b\u0c5c\u0007\u0005\u0000\u0000\u0c5c\u0c5d\u0007\u0015\u0000"+ + "\u0000\u0c5d\u0c5e\u0007\u0018\u0000\u0000\u0c5e\u0c5f\u0007\r\u0000\u0000"+ + "\u0c5f\u0c60\u0007\u0013\u0000\u0000\u0c60\u0c61\u0007\u0013\u0000\u0000"+ + "\u0c61\u0c62\u0007\u0019\u0000\u0000\u0c62\u01f8\u0001\u0000\u0000\u0000"+ + "\u0c63\u0c64\u0007\u0006\u0000\u0000\u0c64\u0c65\u0007\n\u0000\u0000\u0c65"+ + "\u0c66\u0007\u001b\u0000\u0000\u0c66\u0c67\u0007\n\u0000\u0000\u0c67\u0c68"+ + "\u0007\u0006\u0000\u0000\u0c68\u01fa\u0001\u0000\u0000\u0000\u0c69\u0c6a"+ + "\u0007\u0006\u0000\u0000\u0c6a\u0c6b\u0007\u0011\u0000\u0000\u0c6b\u0c6c"+ + "\u0007\t\u0000\u0000\u0c6c\u0c6d\u0007\u0010\u0000\u0000\u0c6d\u0c6e\u0007"+ + "\n\u0000\u0000\u0c6e\u0c6f\u0007\u0007\u0000\u0000\u0c6f\u01fc\u0001\u0000"+ + "\u0000\u0000\u0c70\u0c71\u0007\u0006\u0000\u0000\u0c71\u0c72\u0007\u0013"+ + "\u0000\u0000\u0c72\u0c73\u0007\u0005\u0000\u0000\u0c73\u0c74\u0007\f\u0000"+ + "\u0000\u0c74\u01fe\u0001\u0000\u0000\u0000\u0c75\u0c76\u0007\u0006\u0000"+ + "\u0000\u0c76\u0c77\u0007\u0013\u0000\u0000\u0c77\u0c78\u0007\u000e\u0000"+ + "\u0000\u0c78\u0c79\u0007\u0005\u0000\u0000\u0c79\u0c7a\u0007\u0006\u0000"+ + "\u0000\u0c7a\u0200\u0001\u0000\u0000\u0000\u0c7b\u0c7c\u0007\u0006\u0000"+ + "\u0000\u0c7c\u0c7d\u0007\u0013\u0000\u0000\u0c7d\u0c7e\u0007\u000e\u0000"+ + "\u0000\u0c7e\u0c7f\u0007\u0005\u0000\u0000\u0c7f\u0c80\u0007\u0010\u0000"+ + "\u0000\u0c80\u0c81\u0007\u0011\u0000\u0000\u0c81\u0c82\u0007\u0013\u0000"+ + "\u0000\u0c82\u0c83\u0007\u0007\u0000\u0000\u0c83\u0202\u0001\u0000\u0000"+ + "\u0000\u0c84\u0c85\u0007\u0006\u0000\u0000\u0c85\u0c86\u0007\u0013\u0000"+ + "\u0000\u0c86\u0c87\u0007\u000e\u0000\u0000\u0c87\u0c88\u0007\u0015\u0000"+ + "\u0000\u0c88\u0204\u0001\u0000\u0000\u0000\u0c89\u0c8a\u0007\u000f\u0000"+ + "\u0000\u0c8a\u0c8b\u0007\u0005\u0000\u0000\u0c8b\u0c8c\u0007\u0018\u0000"+ + "\u0000\u0c8c\u0c8d\u0007\u0018\u0000\u0000\u0c8d\u0c8e\u0007\u0011\u0000"+ + "\u0000\u0c8e\u0c8f\u0007\u0007\u0000\u0000\u0c8f\u0c90\u0007\u0017\u0000"+ + "\u0000\u0c90\u0206\u0001\u0000\u0000\u0000\u0c91\u0c92\u0007\u000f\u0000"+ + "\u0000\u0c92\u0c93\u0007\u0005\u0000\u0000\u0c93\u0c94\u0007\u0010\u0000"+ + "\u0000\u0c94\u0c95\u0007\u000e\u0000\u0000\u0c95\u0c96\u0007\u0014\u0000"+ + "\u0000\u0c96\u0208\u0001\u0000\u0000\u0000\u0c97\u0c98\u0007\u000f\u0000"+ + "\u0000\u0c98\u0c99\u0007\u0005\u0000\u0000\u0c99\u0c9a\u0007\u0010\u0000"+ + "\u0000\u0c9a\u0c9b\u0007\u000e\u0000\u0000\u0c9b\u0c9c\u0007\u0014\u0000"+ + "\u0000\u0c9c\u0c9d\u0007\n\u0000\u0000\u0c9d\u0c9e\u0007\f\u0000\u0000"+ + "\u0c9e\u020a\u0001\u0000\u0000\u0000\u0c9f\u0ca0\u0007\u000f\u0000\u0000"+ + "\u0ca0\u0ca1\u0007\u0005\u0000\u0000\u0ca1\u0ca2\u0007\u0010\u0000\u0000"+ + "\u0ca2\u0ca3\u0007\n\u0000\u0000\u0ca3\u0ca4\u0007\r\u0000\u0000\u0ca4"+ + "\u0ca5\u0007\u0011\u0000\u0000\u0ca5\u0ca6\u0007\u0005\u0000\u0000\u0ca6"+ + "\u0ca7\u0007\u0006\u0000\u0000\u0ca7\u0ca8\u0007\u0011\u0000\u0000\u0ca8"+ + "\u0ca9\u0007\u000b\u0000\u0000\u0ca9\u0caa\u0007\n\u0000\u0000\u0caa\u0cab"+ + "\u0007\f\u0000\u0000\u0cab\u020c\u0001\u0000\u0000\u0000\u0cac\u0cad\u0007"+ + "\u000f\u0000\u0000\u0cad\u0cae\u0007\u0005\u0000\u0000\u0cae\u0caf\u0007"+ + "\u001a\u0000\u0000\u0caf\u0cb0\u0007\u001b\u0000\u0000\u0cb0\u0cb1\u0007"+ + "\u0005\u0000\u0000\u0cb1\u0cb2\u0007\u0006\u0000\u0000\u0cb2\u0cb3\u0007"+ + "\u0016\u0000\u0000\u0cb3\u0cb4\u0007\n\u0000\u0000\u0cb4\u020e\u0001\u0000"+ + "\u0000\u0000\u0cb5\u0cb6\u0007\u000f\u0000\u0000\u0cb6\u0cb7\u0007\n\u0000"+ + "\u0000\u0cb7\u0cb8\u0007\r\u0000\u0000\u0cb8\u0cb9\u0007\u0017\u0000\u0000"+ + "\u0cb9\u0cba\u0007\n\u0000\u0000\u0cba\u0210\u0001\u0000\u0000\u0000\u0cbb"+ + "\u0cbc\u0007\u000f\u0000\u0000\u0cbc\u0cbd\u0007\u0011\u0000\u0000\u0cbd"+ + "\u0cbe\u0007\u0007\u0000\u0000\u0cbe\u0cbf\u0007\u0016\u0000\u0000\u0cbf"+ + "\u0cc0\u0007\u0010\u0000\u0000\u0cc0\u0cc1\u0007\n\u0000\u0000\u0cc1\u0212"+ + "\u0001\u0000\u0000\u0000\u0cc2\u0cc3\u0007\u000f\u0000\u0000\u0cc3\u0cc4"+ + "\u0007\u0011\u0000\u0000\u0cc4\u0cc5\u0007\u0007\u0000\u0000\u0cc5\u0cc6"+ + "\u0007\u001b\u0000\u0000\u0cc6\u0cc7\u0007\u0005\u0000\u0000\u0cc7\u0cc8"+ + "\u0007\u0006\u0000\u0000\u0cc8\u0cc9\u0007\u0016\u0000\u0000\u0cc9\u0cca"+ + "\u0007\n\u0000\u0000\u0cca\u0214\u0001\u0000\u0000\u0000\u0ccb\u0ccc\u0007"+ + "\u000f\u0000\u0000\u0ccc\u0ccd\u0007\u0013\u0000\u0000\u0ccd\u0cce\u0007"+ + "\f\u0000\u0000\u0cce\u0ccf\u0007\n\u0000\u0000\u0ccf\u0216\u0001\u0000"+ + "\u0000\u0000\u0cd0\u0cd1\u0007\u000f\u0000\u0000\u0cd1\u0cd2\u0007\u0013"+ + "\u0000\u0000\u0cd2\u0cd3\u0007\u0007\u0000\u0000\u0cd3\u0cd4\u0007\u0010"+ + "\u0000\u0000\u0cd4\u0cd5\u0007\u0014\u0000\u0000\u0cd5\u0218\u0001\u0000"+ + "\u0000\u0000\u0cd6\u0cd7\u0007\u000f\u0000\u0000\u0cd7\u0cd8\u0007\u0013"+ + "\u0000\u0000\u0cd8\u0cd9\u0007\u001b\u0000\u0000\u0cd9\u0cda\u0007\n\u0000"+ + "\u0000\u0cda\u021a\u0001\u0000\u0000\u0000\u0cdb\u0cdc\u0007\u0007\u0000"+ + "\u0000\u0cdc\u0cdd\u0007\u0005\u0000\u0000\u0cdd\u0cde\u0007\u000f\u0000"+ + "\u0000\u0cde\u0cdf\u0007\n\u0000\u0000\u0cdf\u021c\u0001\u0000\u0000\u0000"+ + "\u0ce0\u0ce1\u0007\u0007\u0000\u0000\u0ce1\u0ce2\u0007\u0005\u0000\u0000"+ + "\u0ce2\u0ce3\u0007\u000f\u0000\u0000\u0ce3\u0ce4\u0007\n\u0000\u0000\u0ce4"+ + "\u0ce5\u0007\t\u0000\u0000\u0ce5\u021e\u0001\u0000\u0000\u0000\u0ce6\u0ce7"+ + "\u0007\u0007\u0000\u0000\u0ce7\u0ce8\u0007\n\u0000\u0000\u0ce8\u0ce9\u0007"+ + "\u001a\u0000\u0000\u0ce9\u0cea\u0007\u0010\u0000\u0000\u0cea\u0220\u0001"+ + "\u0000\u0000\u0000\u0ceb\u0cec\u0007\u0007\u0000\u0000\u0cec\u0ced\u0007"+ + "\u0013\u0000\u0000\u0ced\u0222\u0001\u0000\u0000\u0000\u0cee\u0cef\u0007"+ + "\u0007\u0000\u0000\u0cef\u0cf0\u0007\u0013\u0000\u0000\u0cf0\u0cf1\u0007"+ + "\u0010\u0000\u0000\u0cf1\u0cf2\u0007\u0014\u0000\u0000\u0cf2\u0cf3\u0007"+ + "\u0011\u0000\u0000\u0cf3\u0cf4\u0007\u0007\u0000\u0000\u0cf4\u0cf5\u0007"+ + "\u0017\u0000\u0000\u0cf5\u0224\u0001\u0000\u0000\u0000\u0cf6\u0cf7\u0007"+ + "\u0007\u0000\u0000\u0cf7\u0cf8\u0007\u0013\u0000\u0000\u0cf8\u0cf9\u0007"+ + "\u0010\u0000\u0000\u0cf9\u0cfa\u0007\u0011\u0000\u0000\u0cfa\u0cfb\u0007"+ + "\u0019\u0000\u0000\u0cfb\u0cfc\u0007\b\u0000\u0000\u0cfc\u0226\u0001\u0000"+ + "\u0000\u0000\u0cfd\u0cfe\u0007\u0007\u0000\u0000\u0cfe\u0cff\u0007\u0013"+ + "\u0000\u0000\u0cff\u0d00\u0007\u001c\u0000\u0000\u0d00\u0d01\u0007\u0005"+ + "\u0000\u0000\u0d01\u0d02\u0007\u0011\u0000\u0000\u0d02\u0d03\u0007\u0010"+ + "\u0000\u0000\u0d03\u0228\u0001\u0000\u0000\u0000\u0d04\u0d05\u0007\u0007"+ + "\u0000\u0000\u0d05\u0d06\u0007\u0016\u0000\u0000\u0d06\u0d07\u0007\u0006"+ + "\u0000\u0000\u0d07\u0d08\u0007\u0006\u0000\u0000\u0d08\u0d09\u0007\t\u0000"+ + "\u0000\u0d09\u022a\u0001\u0000\u0000\u0000\u0d0a\u0d0b\u0007\u0013\u0000"+ + "\u0000\u0d0b\u0d0c\u0007\u0012\u0000\u0000\u0d0c\u0d0d\u0007\u001e\u0000"+ + "\u0000\u0d0d\u0d0e\u0007\n\u0000\u0000\u0d0e\u0d0f\u0007\u000e\u0000\u0000"+ + "\u0d0f\u0d10\u0007\u0010\u0000\u0000\u0d10\u022c\u0001\u0000\u0000\u0000"+ + "\u0d11\u0d12\u0007\u0013\u0000\u0000\u0d12\u0d13\u0007\u0019\u0000\u0000"+ + "\u0d13\u022e\u0001\u0000\u0000\u0000\u0d14\u0d15\u0007\u0013\u0000\u0000"+ + "\u0d15\u0d16\u0007\u0019\u0000\u0000\u0d16\u0d17\u0007\u0019\u0000\u0000"+ + "\u0d17\u0230\u0001\u0000\u0000\u0000\u0d18\u0d19\u0007\u0013\u0000\u0000"+ + "\u0d19\u0d1a\u0007\u0011\u0000\u0000\u0d1a\u0d1b\u0007\f\u0000\u0000\u0d1b"+ + "\u0d1c\u0007\t\u0000\u0000\u0d1c\u0232\u0001\u0000\u0000\u0000\u0d1d\u0d1e"+ + "\u0007\u0013\u0000\u0000\u0d1e\u0d1f\u0007\u0018\u0000\u0000\u0d1f\u0d20"+ + "\u0007\n\u0000\u0000\u0d20\u0d21\u0007\r\u0000\u0000\u0d21\u0d22\u0007"+ + "\u0005\u0000\u0000\u0d22\u0d23\u0007\u0010\u0000\u0000\u0d23\u0d24\u0007"+ + "\u0013\u0000\u0000\u0d24\u0d25\u0007\r\u0000\u0000\u0d25\u0234\u0001\u0000"+ + "\u0000\u0000\u0d26\u0d27\u0007\u0013\u0000\u0000\u0d27\u0d28\u0007\u0018"+ + "\u0000\u0000\u0d28\u0d29\u0007\u0010\u0000\u0000\u0d29\u0d2a\u0007\u0011"+ + "\u0000\u0000\u0d2a\u0d2b\u0007\u0013\u0000\u0000\u0d2b\u0d2c\u0007\u0007"+ + "\u0000\u0000\u0d2c\u0236\u0001\u0000\u0000\u0000\u0d2d\u0d2e\u0007\u0013"+ + "\u0000\u0000\u0d2e\u0d2f\u0007\u0018\u0000\u0000\u0d2f\u0d30\u0007\u0010"+ + "\u0000\u0000\u0d30\u0d31\u0007\u0011\u0000\u0000\u0d31\u0d32\u0007\u0013"+ + "\u0000\u0000\u0d32\u0d33\u0007\u0007\u0000\u0000\u0d33\u0d34\u0007\t\u0000"+ + "\u0000\u0d34\u0238\u0001\u0000\u0000\u0000\u0d35\u0d36\u0007\u0013\u0000"+ + "\u0000\u0d36\u0d37\u0007\u001c\u0000\u0000\u0d37\u0d38\u0007\u0007\u0000"+ + "\u0000\u0d38\u0d39\u0007\n\u0000\u0000\u0d39\u0d3a\u0007\f\u0000\u0000"+ + "\u0d3a\u023a\u0001\u0000\u0000\u0000\u0d3b\u0d3c\u0007\u0013\u0000\u0000"+ + "\u0d3c\u0d3d\u0007\u001c\u0000\u0000\u0d3d\u0d3e\u0007\u0007\u0000\u0000"+ + "\u0d3e\u0d3f\u0007\n\u0000\u0000\u0d3f\u0d40\u0007\r\u0000\u0000\u0d40"+ + "\u023c\u0001\u0000\u0000\u0000\u0d41\u0d42\u0007\u0018\u0000\u0000\u0d42"+ + "\u0d43\u0007\u0005\u0000\u0000\u0d43\u0d44\u0007\r\u0000\u0000\u0d44\u0d45"+ + "\u0007\t\u0000\u0000\u0d45\u0d46\u0007\n\u0000\u0000\u0d46\u0d47\u0007"+ + "\r\u0000\u0000\u0d47\u023e\u0001\u0000\u0000\u0000\u0d48\u0d49\u0007\u0018"+ + "\u0000\u0000\u0d49\u0d4a\u0007\u0005\u0000\u0000\u0d4a\u0d4b\u0007\r\u0000"+ + "\u0000\u0d4b\u0d4c\u0007\u0010\u0000\u0000\u0d4c\u0d4d\u0007\u0011\u0000"+ + "\u0000\u0d4d\u0d4e\u0007\u0005\u0000\u0000\u0d4e\u0d4f\u0007\u0006\u0000"+ + "\u0000\u0d4f\u0240\u0001\u0000\u0000\u0000\u0d50\u0d51\u0007\u0018\u0000"+ + "\u0000\u0d51\u0d52\u0007\u0005\u0000\u0000\u0d52\u0d53\u0007\r\u0000\u0000"+ + "\u0d53\u0d54\u0007\u0010\u0000\u0000\u0d54\u0d55\u0007\u0011\u0000\u0000"+ + "\u0d55\u0d56\u0007\u0010\u0000\u0000\u0d56\u0d57\u0007\u0011\u0000\u0000"+ + "\u0d57\u0d58\u0007\u0013\u0000\u0000\u0d58\u0d59\u0007\u0007\u0000\u0000"+ + "\u0d59\u0242\u0001\u0000\u0000\u0000\u0d5a\u0d5b\u0007\u0018\u0000\u0000"+ + "\u0d5b\u0d5c\u0007\u0005\u0000\u0000\u0d5c\u0d5d\u0007\t\u0000\u0000\u0d5d"+ + "\u0d5e\u0007\t\u0000\u0000\u0d5e\u0d5f\u0007\u0011\u0000\u0000\u0d5f\u0d60"+ + "\u0007\u0007\u0000\u0000\u0d60\u0d61\u0007\u0017\u0000\u0000\u0d61\u0244"+ + "\u0001\u0000\u0000\u0000\u0d62\u0d63\u0007\u0018\u0000\u0000\u0d63\u0d64"+ + "\u0007\u0005\u0000\u0000\u0d64\u0d65\u0007\t\u0000\u0000\u0d65\u0d66\u0007"+ + "\t\u0000\u0000\u0d66\u0d67\u0007\u001c\u0000\u0000\u0d67\u0d68\u0007\u0013"+ + "\u0000\u0000\u0d68\u0d69\u0007\r\u0000\u0000\u0d69\u0d6a\u0007\f\u0000"+ + "\u0000\u0d6a\u0246\u0001\u0000\u0000\u0000\u0d6b\u0d6c\u0007\u0018\u0000"+ + "\u0000\u0d6c\u0d6d\u0007\u0006\u0000\u0000\u0d6d\u0d6e\u0007\u0005\u0000"+ + "\u0000\u0d6e\u0d6f\u0007\u0007\u0000\u0000\u0d6f\u0d70\u0007\t\u0000\u0000"+ + "\u0d70\u0248\u0001\u0000\u0000\u0000\u0d71\u0d72\u0007\u0018\u0000\u0000"+ + "\u0d72\u0d73\u0007\r\u0000\u0000\u0d73\u0d74\u0007\n\u0000\u0000\u0d74"+ + "\u0d75\u0007\u000e\u0000\u0000\u0d75\u0d76\u0007\n\u0000\u0000\u0d76\u0d77"+ + "\u0007\f\u0000\u0000\u0d77\u0d78\u0007\u0011\u0000\u0000\u0d78\u0d79\u0007"+ + "\u0007\u0000\u0000\u0d79\u0d7a\u0007\u0017\u0000\u0000\u0d7a\u024a\u0001"+ + "\u0000\u0000\u0000\u0d7b\u0d7c\u0007\u0018\u0000\u0000\u0d7c\u0d7d\u0007"+ + "\r\u0000\u0000\u0d7d\u0d7e\u0007\n\u0000\u0000\u0d7e\u0d7f\u0007\u0018"+ + "\u0000\u0000\u0d7f\u0d80\u0007\u0005\u0000\u0000\u0d80\u0d81\u0007\r\u0000"+ + "\u0000\u0d81\u0d82\u0007\n\u0000\u0000\u0d82\u024c\u0001\u0000\u0000\u0000"+ + "\u0d83\u0d84\u0007\u0018\u0000\u0000\u0d84\u0d85\u0007\r\u0000\u0000\u0d85"+ + "\u0d86\u0007\n\u0000\u0000\u0d86\u0d87\u0007\u0018\u0000\u0000\u0d87\u0d88"+ + "\u0007\u0005\u0000\u0000\u0d88\u0d89\u0007\r\u0000\u0000\u0d89\u0d8a\u0007"+ + "\n\u0000\u0000\u0d8a\u0d8b\u0007\f\u0000\u0000\u0d8b\u024e\u0001\u0000"+ + "\u0000\u0000\u0d8c\u0d8d\u0007\u0018\u0000\u0000\u0d8d\u0d8e\u0007\r\u0000"+ + "\u0000\u0d8e\u0d8f\u0007\n\u0000\u0000\u0d8f\u0d90\u0007\t\u0000\u0000"+ + "\u0d90\u0d91\u0007\n\u0000\u0000\u0d91\u0d92\u0007\r\u0000\u0000\u0d92"+ + "\u0d93\u0007\u001b\u0000\u0000\u0d93\u0d94\u0007\n\u0000\u0000\u0d94\u0250"+ + "\u0001\u0000\u0000\u0000\u0d95\u0d96\u0007\u0018\u0000\u0000\u0d96\u0d97"+ + "\u0007\r\u0000\u0000\u0d97\u0d98\u0007\u0011\u0000\u0000\u0d98\u0d99\u0007"+ + "\u0013\u0000\u0000\u0d99\u0d9a\u0007\r\u0000\u0000\u0d9a\u0252\u0001\u0000"+ + "\u0000\u0000\u0d9b\u0d9c\u0007\u0018\u0000\u0000\u0d9c\u0d9d\u0007\r\u0000"+ + "\u0000\u0d9d\u0d9e\u0007\u0011\u0000\u0000\u0d9e\u0d9f\u0007\u001b\u0000"+ + "\u0000\u0d9f\u0da0\u0007\u0011\u0000\u0000\u0da0\u0da1\u0007\u0006\u0000"+ + "\u0000\u0da1\u0da2\u0007\n\u0000\u0000\u0da2\u0da3\u0007\u0017\u0000\u0000"+ + "\u0da3\u0da4\u0007\n\u0000\u0000\u0da4\u0da5\u0007\t\u0000\u0000\u0da5"+ + "\u0254\u0001\u0000\u0000\u0000\u0da6\u0da7\u0007\u0018\u0000\u0000\u0da7"+ + "\u0da8\u0007\r\u0000\u0000\u0da8\u0da9\u0007\u0013\u0000\u0000\u0da9\u0daa"+ + "\u0007\u000e\u0000\u0000\u0daa\u0dab\u0007\n\u0000\u0000\u0dab\u0dac\u0007"+ + "\f\u0000\u0000\u0dac\u0dad\u0007\u0016\u0000\u0000\u0dad\u0dae\u0007\r"+ + "\u0000\u0000\u0dae\u0daf\u0007\u0005\u0000\u0000\u0daf\u0db0\u0007\u0006"+ + "\u0000\u0000\u0db0\u0256\u0001\u0000\u0000\u0000\u0db1\u0db2\u0007\u0018"+ + "\u0000\u0000\u0db2\u0db3\u0007\r\u0000\u0000\u0db3\u0db4\u0007\u0013\u0000"+ + "\u0000\u0db4\u0db5\u0007\u000e\u0000\u0000\u0db5\u0db6\u0007\n\u0000\u0000"+ + "\u0db6\u0db7\u0007\f\u0000\u0000\u0db7\u0db8\u0007\u0016\u0000\u0000\u0db8"+ + "\u0db9\u0007\r\u0000\u0000\u0db9\u0dba\u0007\n\u0000\u0000\u0dba\u0258"+ + "\u0001\u0000\u0000\u0000\u0dbb\u0dbc\u0007\u0018\u0000\u0000\u0dbc\u0dbd"+ + "\u0007\r\u0000\u0000\u0dbd\u0dbe\u0007\u0013\u0000\u0000\u0dbe\u0dbf\u0007"+ + "\u0017\u0000\u0000\u0dbf\u0dc0\u0007\r\u0000\u0000\u0dc0\u0dc1\u0007\u0005"+ + "\u0000\u0000\u0dc1\u0dc2\u0007\u000f\u0000\u0000\u0dc2\u025a\u0001\u0000"+ + "\u0000\u0000\u0dc3\u0dc4\u0007\u001d\u0000\u0000\u0dc4\u0dc5\u0007\u0016"+ + "\u0000\u0000\u0dc5\u0dc6\u0007\u0013\u0000\u0000\u0dc6\u0dc7\u0007\u0010"+ + "\u0000\u0000\u0dc7\u0dc8\u0007\n\u0000\u0000\u0dc8\u025c\u0001\u0000\u0000"+ + "\u0000\u0dc9\u0dca\u0007\r\u0000\u0000\u0dca\u0dcb\u0007\u0005\u0000\u0000"+ + "\u0dcb\u0dcc\u0007\u0007\u0000\u0000\u0dcc\u0dcd\u0007\u0017\u0000\u0000"+ + "\u0dcd\u0dce\u0007\n\u0000\u0000\u0dce\u025e\u0001\u0000\u0000\u0000\u0dcf"+ + "\u0dd0\u0007\r\u0000\u0000\u0dd0\u0dd1\u0007\n\u0000\u0000\u0dd1\u0dd2"+ + "\u0007\u0005\u0000\u0000\u0dd2\u0dd3\u0007\f\u0000\u0000\u0dd3\u0260\u0001"+ + "\u0000\u0000\u0000\u0dd4\u0dd5\u0007\r\u0000\u0000\u0dd5\u0dd6\u0007\n"+ + "\u0000\u0000\u0dd6\u0dd7\u0007\u0005\u0000\u0000\u0dd7\u0dd8\u0007\t\u0000"+ + "\u0000\u0dd8\u0dd9\u0007\t\u0000\u0000\u0dd9\u0dda\u0007\u0011\u0000\u0000"+ + "\u0dda\u0ddb\u0007\u0017\u0000\u0000\u0ddb\u0ddc\u0007\u0007\u0000\u0000"+ + "\u0ddc\u0262\u0001\u0000\u0000\u0000\u0ddd\u0dde\u0007\r\u0000\u0000\u0dde"+ + "\u0ddf\u0007\n\u0000\u0000\u0ddf\u0de0\u0007\u000e\u0000\u0000\u0de0\u0de1"+ + "\u0007\u0014\u0000\u0000\u0de1\u0de2\u0007\n\u0000\u0000\u0de2\u0de3\u0007"+ + "\u000e\u0000\u0000\u0de3\u0de4\u0007\u0015\u0000\u0000\u0de4\u0264\u0001"+ + "\u0000\u0000\u0000\u0de5\u0de6\u0007\r\u0000\u0000\u0de6\u0de7\u0007\n"+ + "\u0000\u0000\u0de7\u0de8\u0007\u000e\u0000\u0000\u0de8\u0de9\u0007\u0016"+ + "\u0000\u0000\u0de9\u0dea\u0007\r\u0000\u0000\u0dea\u0deb\u0007\t\u0000"+ + "\u0000\u0deb\u0dec\u0007\u0011\u0000\u0000\u0dec\u0ded\u0007\u001b\u0000"+ + "\u0000\u0ded\u0dee\u0007\n\u0000\u0000\u0dee\u0266\u0001\u0000\u0000\u0000"+ + "\u0def\u0df0\u0007\r\u0000\u0000\u0df0\u0df1\u0007\n\u0000\u0000\u0df1"+ + "\u0df2\u0007\u0019\u0000\u0000\u0df2\u0268\u0001\u0000\u0000\u0000\u0df3"+ + "\u0df4\u0007\r\u0000\u0000\u0df4\u0df5\u0007\n\u0000\u0000\u0df5\u0df6"+ + "\u0007\u0019\u0000\u0000\u0df6\u0df7\u0007\r\u0000\u0000\u0df7\u0df8\u0007"+ + "\n\u0000\u0000\u0df8\u0df9\u0007\t\u0000\u0000\u0df9\u0dfa\u0007\u0014"+ + "\u0000\u0000\u0dfa\u026a\u0001\u0000\u0000\u0000\u0dfb\u0dfc\u0007\r\u0000"+ + "\u0000\u0dfc\u0dfd\u0007\n\u0000\u0000\u0dfd\u0dfe\u0007\u0011\u0000\u0000"+ + "\u0dfe\u0dff\u0007\u0007\u0000\u0000\u0dff\u0e00\u0007\f\u0000\u0000\u0e00"+ + "\u0e01\u0007\n\u0000\u0000\u0e01\u0e02\u0007\u001a\u0000\u0000\u0e02\u026c"+ + "\u0001\u0000\u0000\u0000\u0e03\u0e04\u0007\r\u0000\u0000\u0e04\u0e05\u0007"+ + "\n\u0000\u0000\u0e05\u0e06\u0007\u0006\u0000\u0000\u0e06\u0e07\u0007\u0005"+ + "\u0000\u0000\u0e07\u0e08\u0007\u0010\u0000\u0000\u0e08\u0e09\u0007\u0011"+ + "\u0000\u0000\u0e09\u0e0a\u0007\u001b\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\u0006\u0000\u0000\u0e0f"+ + "\u0e10\u0007\n\u0000\u0000\u0e10\u0e11\u0007\u0005\u0000\u0000\u0e11\u0e12"+ + "\u0007\t\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\u0007\u0000\u0000\u0e17\u0e18\u0007\u0005"+ + "\u0000\u0000\u0e18\u0e19\u0007\u000f\u0000\u0000\u0e19\u0e1a\u0007\n\u0000"+ + "\u0000\u0e1a\u0272\u0001\u0000\u0000\u0000\u0e1b\u0e1c\u0007\r\u0000\u0000"+ + "\u0e1c\u0e1d\u0007\n\u0000\u0000\u0e1d\u0e1e\u0007\u0018\u0000\u0000\u0e1e"+ + "\u0e1f\u0007\n\u0000\u0000\u0e1f\u0e20\u0007\u0005\u0000\u0000\u0e20\u0e21"+ + "\u0007\u0010\u0000\u0000\u0e21\u0e22\u0007\u0005\u0000\u0000\u0e22\u0e23"+ + "\u0007\u0012\u0000\u0000\u0e23\u0e24\u0007\u0006\u0000\u0000\u0e24\u0e25"+ + "\u0007\n\u0000\u0000\u0e25\u0274\u0001\u0000\u0000\u0000\u0e26\u0e27\u0007"+ + "\r\u0000\u0000\u0e27\u0e28\u0007\n\u0000\u0000\u0e28\u0e29\u0007\u0018"+ + "\u0000\u0000\u0e29\u0e2a\u0007\u0006\u0000\u0000\u0e2a\u0e2b\u0007\u0005"+ + "\u0000\u0000\u0e2b\u0e2c\u0007\u000e\u0000\u0000\u0e2c\u0e2d\u0007\n\u0000"+ + "\u0000\u0e2d\u0276\u0001\u0000\u0000\u0000\u0e2e\u0e2f\u0007\r\u0000\u0000"+ + "\u0e2f\u0e30\u0007\n\u0000\u0000\u0e30\u0e31\u0007\u0018\u0000\u0000\u0e31"+ + "\u0e32\u0007\u0006\u0000\u0000\u0e32\u0e33\u0007\u0011\u0000\u0000\u0e33"+ + "\u0e34\u0007\u000e\u0000\u0000\u0e34\u0e35\u0007\u0005\u0000\u0000\u0e35"+ + "\u0278\u0001\u0000\u0000\u0000\u0e36\u0e37\u0007\r\u0000\u0000\u0e37\u0e38"+ + "\u0007\n\u0000\u0000\u0e38\u0e39\u0007\t\u0000\u0000\u0e39\u0e3a\u0007"+ + "\n\u0000\u0000\u0e3a\u0e3b\u0007\u0010\u0000\u0000\u0e3b\u027a\u0001\u0000"+ + "\u0000\u0000\u0e3c\u0e3d\u0007\r\u0000\u0000\u0e3d\u0e3e\u0007\n\u0000"+ + "\u0000\u0e3e\u0e3f\u0007\t\u0000\u0000\u0e3f\u0e40\u0007\u0010\u0000\u0000"+ + "\u0e40\u0e41\u0007\u0005\u0000\u0000\u0e41\u0e42\u0007\r\u0000\u0000\u0e42"+ + "\u0e43\u0007\u0010\u0000\u0000\u0e43\u027c\u0001\u0000\u0000\u0000\u0e44"+ + "\u0e45\u0007\r\u0000\u0000\u0e45\u0e46\u0007\n\u0000\u0000\u0e46\u0e47"+ + "\u0007\t\u0000\u0000\u0e47\u0e48\u0007\u0010\u0000\u0000\u0e48\u0e49\u0007"+ + "\r\u0000\u0000\u0e49\u0e4a\u0007\u0011\u0000\u0000\u0e4a\u0e4b\u0007\u000e"+ + "\u0000\u0000\u0e4b\u0e4c\u0007\u0010\u0000\u0000\u0e4c\u027e\u0001\u0000"+ + "\u0000\u0000\u0e4d\u0e4e\u0007\r\u0000\u0000\u0e4e\u0e4f\u0007\n\u0000"+ + "\u0000\u0e4f\u0e50\u0007\u0010\u0000\u0000\u0e50\u0e51\u0007\u0016\u0000"+ + "\u0000\u0e51\u0e52\u0007\r\u0000\u0000\u0e52\u0e53\u0007\u0007\u0000\u0000"+ + "\u0e53\u0e54\u0007\t\u0000\u0000\u0e54\u0280\u0001\u0000\u0000\u0000\u0e55"+ + "\u0e56\u0007\r\u0000\u0000\u0e56\u0e57\u0007\n\u0000\u0000\u0e57\u0e58"+ + "\u0007\u001b\u0000\u0000\u0e58\u0e59\u0007\u0013\u0000\u0000\u0e59\u0e5a"+ + "\u0007\u0015\u0000\u0000\u0e5a\u0e5b\u0007\n\u0000\u0000\u0e5b\u0282\u0001"+ + "\u0000\u0000\u0000\u0e5c\u0e5d\u0007\r\u0000\u0000\u0e5d\u0e5e\u0007\u0013"+ + "\u0000\u0000\u0e5e\u0e5f\u0007\u0006\u0000\u0000\u0e5f\u0e60\u0007\n\u0000"+ + "\u0000\u0e60\u0284\u0001\u0000\u0000\u0000\u0e61\u0e62\u0007\r\u0000\u0000"+ + "\u0e62\u0e63\u0007\u0013\u0000\u0000\u0e63\u0e64\u0007\u0006\u0000\u0000"+ + "\u0e64\u0e65\u0007\u0006\u0000\u0000\u0e65\u0e66\u0007\u0012\u0000\u0000"+ + "\u0e66\u0e67\u0007\u0005\u0000\u0000\u0e67\u0e68\u0007\u000e\u0000\u0000"+ + "\u0e68\u0e69\u0007\u0015\u0000\u0000\u0e69\u0286\u0001\u0000\u0000\u0000"+ + "\u0e6a\u0e6b\u0007\r\u0000\u0000\u0e6b\u0e6c\u0007\u0013\u0000\u0000\u0e6c"+ + "\u0e6d\u0007\u001c\u0000\u0000\u0e6d\u0e6e\u0007\t\u0000\u0000\u0e6e\u0288"+ + "\u0001\u0000\u0000\u0000\u0e6f\u0e70\u0007\r\u0000\u0000\u0e70\u0e71\u0007"+ + "\u0016\u0000\u0000\u0e71\u0e72\u0007\u0006\u0000\u0000\u0e72\u0e73\u0007"+ + "\n\u0000\u0000\u0e73\u028a\u0001\u0000\u0000\u0000\u0e74\u0e75\u0007\t"+ + "\u0000\u0000\u0e75\u0e76\u0007\u0005\u0000\u0000\u0e76\u0e77\u0007\u001b"+ + "\u0000\u0000\u0e77\u0e78\u0007\n\u0000\u0000\u0e78\u0e79\u0007\u0018\u0000"+ + "\u0000\u0e79\u0e7a\u0007\u0013\u0000\u0000\u0e7a\u0e7b\u0007\u0011\u0000"+ + "\u0000\u0e7b\u0e7c\u0007\u0007\u0000\u0000\u0e7c\u0e7d\u0007\u0010\u0000"+ + "\u0000\u0e7d\u028c\u0001\u0000\u0000\u0000\u0e7e\u0e7f\u0007\t\u0000\u0000"+ + "\u0e7f\u0e80\u0007\u000e\u0000\u0000\u0e80\u0e81\u0007\u0014\u0000\u0000"+ + "\u0e81\u0e82\u0007\n\u0000\u0000\u0e82\u0e83\u0007\u000f\u0000\u0000\u0e83"+ + "\u0e84\u0007\u0005\u0000\u0000\u0e84\u028e\u0001\u0000\u0000\u0000\u0e85"+ + "\u0e86\u0007\t\u0000\u0000\u0e86\u0e87\u0007\u000e\u0000\u0000\u0e87\u0e88"+ + "\u0007\r\u0000\u0000\u0e88\u0e89\u0007\u0013\u0000\u0000\u0e89\u0e8a\u0007"+ + "\u0006\u0000\u0000\u0e8a\u0e8b\u0007\u0006\u0000\u0000\u0e8b\u0290\u0001"+ + "\u0000\u0000\u0000\u0e8c\u0e8d\u0007\t\u0000\u0000\u0e8d\u0e8e\u0007\n"+ + "\u0000\u0000\u0e8e\u0e8f\u0007\u0005\u0000\u0000\u0e8f\u0e90\u0007\r\u0000"+ + "\u0000\u0e90\u0e91\u0007\u000e\u0000\u0000\u0e91\u0e92\u0007\u0014\u0000"+ + "\u0000\u0e92\u0292\u0001\u0000\u0000\u0000\u0e93\u0e94\u0007\t\u0000\u0000"+ + "\u0e94\u0e95\u0007\n\u0000\u0000\u0e95\u0e96\u0007\u000e\u0000\u0000\u0e96"+ + "\u0e97\u0007\u0013\u0000\u0000\u0e97\u0e98\u0007\u0007\u0000\u0000\u0e98"+ + "\u0e99\u0007\f\u0000\u0000\u0e99\u0294\u0001\u0000\u0000\u0000\u0e9a\u0e9b"+ + "\u0007\t\u0000\u0000\u0e9b\u0e9c\u0007\n\u0000\u0000\u0e9c\u0e9d\u0007"+ + "\u000e\u0000\u0000\u0e9d\u0e9e\u0007\u0016\u0000\u0000\u0e9e\u0e9f\u0007"+ + "\r\u0000\u0000\u0e9f\u0ea0\u0007\u0011\u0000\u0000\u0ea0\u0ea1\u0007\u0010"+ + "\u0000\u0000\u0ea1\u0ea2\u0007\b\u0000\u0000\u0ea2\u0296\u0001\u0000\u0000"+ + "\u0000\u0ea3\u0ea4\u0007\t\u0000\u0000\u0ea4\u0ea5\u0007\n\u0000\u0000"+ + "\u0ea5\u0ea6\u0007\u001d\u0000\u0000\u0ea6\u0ea7\u0007\u0016\u0000\u0000"+ + "\u0ea7\u0ea8\u0007\n\u0000\u0000\u0ea8\u0ea9\u0007\u0007\u0000\u0000\u0ea9"+ + "\u0eaa\u0007\u000e\u0000\u0000\u0eaa\u0eab\u0007\n\u0000\u0000\u0eab\u0298"+ + "\u0001\u0000\u0000\u0000\u0eac\u0ead\u0007\t\u0000\u0000\u0ead\u0eae\u0007"+ + "\n\u0000\u0000\u0eae\u0eaf\u0007\u001d\u0000\u0000\u0eaf\u0eb0\u0007\u0016"+ + "\u0000\u0000\u0eb0\u0eb1\u0007\n\u0000\u0000\u0eb1\u0eb2\u0007\u0007\u0000"+ + "\u0000\u0eb2\u0eb3\u0007\u000e\u0000\u0000\u0eb3\u0eb4\u0007\n\u0000\u0000"+ + "\u0eb4\u0eb5\u0007\t\u0000\u0000\u0eb5\u029a\u0001\u0000\u0000\u0000\u0eb6"+ + "\u0eb7\u0007\t\u0000\u0000\u0eb7\u0eb8\u0007\n\u0000\u0000\u0eb8\u0eb9"+ + "\u0007\r\u0000\u0000\u0eb9\u0eba\u0007\u0011\u0000\u0000\u0eba\u0ebb\u0007"+ + "\u0005\u0000\u0000\u0ebb\u0ebc\u0007\u0006\u0000\u0000\u0ebc\u0ebd\u0007"+ + "\u0011\u0000\u0000\u0ebd\u0ebe\u0007\u000b\u0000\u0000\u0ebe\u0ebf\u0007"+ + "\u0005\u0000\u0000\u0ebf\u0ec0\u0007\u0012\u0000\u0000\u0ec0\u0ec1\u0007"+ + "\u0006\u0000\u0000\u0ec1\u0ec2\u0007\n\u0000\u0000\u0ec2\u029c\u0001\u0000"+ + "\u0000\u0000\u0ec3\u0ec4\u0007\t\u0000\u0000\u0ec4\u0ec5\u0007\n\u0000"+ + "\u0000\u0ec5\u0ec6\u0007\r\u0000\u0000\u0ec6\u0ec7\u0007\u001b\u0000\u0000"+ + "\u0ec7\u0ec8\u0007\n\u0000\u0000\u0ec8\u0ec9\u0007\r\u0000\u0000\u0ec9"+ + "\u029e\u0001\u0000\u0000\u0000\u0eca\u0ecb\u0007\t\u0000\u0000\u0ecb\u0ecc"+ + "\u0007\n\u0000\u0000\u0ecc\u0ecd\u0007\t\u0000\u0000\u0ecd\u0ece\u0007"+ + "\t\u0000\u0000\u0ece\u0ecf\u0007\u0011\u0000\u0000\u0ecf\u0ed0\u0007\u0013"+ + "\u0000\u0000\u0ed0\u0ed1\u0007\u0007\u0000\u0000\u0ed1\u02a0\u0001\u0000"+ + "\u0000\u0000\u0ed2\u0ed3\u0007\t\u0000\u0000\u0ed3\u0ed4\u0007\n\u0000"+ + "\u0000\u0ed4\u0ed5\u0007\u0010\u0000\u0000\u0ed5\u02a2\u0001\u0000\u0000"+ + "\u0000\u0ed6\u0ed7\u0007\t\u0000\u0000\u0ed7\u0ed8\u0007\u0014\u0000\u0000"+ + "\u0ed8\u0ed9\u0007\u0005\u0000\u0000\u0ed9\u0eda\u0007\r\u0000\u0000\u0eda"+ + "\u0edb\u0007\n\u0000\u0000\u0edb\u02a4\u0001\u0000\u0000\u0000\u0edc\u0edd"+ + "\u0007\t\u0000\u0000\u0edd\u0ede\u0007\u0014\u0000\u0000\u0ede\u0edf\u0007"+ + "\u0013\u0000\u0000\u0edf\u0ee0\u0007\u001c\u0000\u0000\u0ee0\u02a6\u0001"+ + "\u0000\u0000\u0000\u0ee1\u0ee2\u0007\t\u0000\u0000\u0ee2\u0ee3\u0007\u0011"+ + "\u0000\u0000\u0ee3\u0ee4\u0007\u000f\u0000\u0000\u0ee4\u0ee5\u0007\u0018"+ + "\u0000\u0000\u0ee5\u0ee6\u0007\u0006\u0000\u0000\u0ee6\u0ee7\u0007\n\u0000"+ + "\u0000\u0ee7\u02a8\u0001\u0000\u0000\u0000\u0ee8\u0ee9\u0007\t\u0000\u0000"+ + "\u0ee9\u0eea\u0007\u0007\u0000\u0000\u0eea\u0eeb\u0007\u0005\u0000\u0000"+ + "\u0eeb\u0eec\u0007\u0018\u0000\u0000\u0eec\u0eed\u0007\t\u0000\u0000\u0eed"+ + "\u0eee\u0007\u0014\u0000\u0000\u0eee\u0eef\u0007\u0013\u0000\u0000\u0eef"+ + "\u0ef0\u0007\u0010\u0000\u0000\u0ef0\u02aa\u0001\u0000\u0000\u0000\u0ef1"+ + "\u0ef2\u0007\t\u0000\u0000\u0ef2\u0ef3\u0007\u0010\u0000\u0000\u0ef3\u0ef4"+ + "\u0007\u0005\u0000\u0000\u0ef4\u0ef5\u0007\u0012\u0000\u0000\u0ef5\u0ef6"+ + "\u0007\u0006\u0000\u0000\u0ef6\u0ef7\u0007\n\u0000\u0000\u0ef7\u02ac\u0001"+ + "\u0000\u0000\u0000\u0ef8\u0ef9\u0007\t\u0000\u0000\u0ef9\u0efa\u0007\u0010"+ + "\u0000\u0000\u0efa\u0efb\u0007\u0005\u0000\u0000\u0efb\u0efc\u0007\u0007"+ + "\u0000\u0000\u0efc\u0efd\u0007\f\u0000\u0000\u0efd\u0efe\u0007\u0005\u0000"+ + "\u0000\u0efe\u0eff\u0007\u0006\u0000\u0000\u0eff\u0f00\u0007\u0013\u0000"+ + "\u0000\u0f00\u0f01\u0007\u0007\u0000\u0000\u0f01\u0f02\u0007\n\u0000\u0000"+ + "\u0f02\u02ae\u0001\u0000\u0000\u0000\u0f03\u0f04\u0007\t\u0000\u0000\u0f04"+ + "\u0f05\u0007\u0010\u0000\u0000\u0f05\u0f06\u0007\u0005\u0000\u0000\u0f06"+ + "\u0f07\u0007\r\u0000\u0000\u0f07\u0f08\u0007\u0010\u0000\u0000\u0f08\u02b0"+ + "\u0001\u0000\u0000\u0000\u0f09\u0f0a\u0007\t\u0000\u0000\u0f0a\u0f0b\u0007"+ + "\u0010\u0000\u0000\u0f0b\u0f0c\u0007\u0005\u0000\u0000\u0f0c\u0f0d\u0007"+ + "\u0010\u0000\u0000\u0f0d\u0f0e\u0007\n\u0000\u0000\u0f0e\u0f0f\u0007\u000f"+ + "\u0000\u0000\u0f0f\u0f10\u0007\n\u0000\u0000\u0f10\u0f11\u0007\u0007\u0000"+ + "\u0000\u0f11\u0f12\u0007\u0010\u0000\u0000\u0f12\u02b2\u0001\u0000\u0000"+ + "\u0000\u0f13\u0f14\u0007\t\u0000\u0000\u0f14\u0f15\u0007\u0010\u0000\u0000"+ + "\u0f15\u0f16\u0007\u0005\u0000\u0000\u0f16\u0f17\u0007\u0010\u0000\u0000"+ + "\u0f17\u0f18\u0007\u0011\u0000\u0000\u0f18\u0f19\u0007\t\u0000\u0000\u0f19"+ + "\u0f1a\u0007\u0010\u0000\u0000\u0f1a\u0f1b\u0007\u0011\u0000\u0000\u0f1b"+ + "\u0f1c\u0007\u000e\u0000\u0000\u0f1c\u0f1d\u0007\t\u0000\u0000\u0f1d\u02b4"+ + "\u0001\u0000\u0000\u0000\u0f1e\u0f1f\u0007\t\u0000\u0000\u0f1f\u0f20\u0007"+ + "\u0010\u0000\u0000\u0f20\u0f21\u0007\f\u0000\u0000\u0f21\u0f22\u0007\u0011"+ + "\u0000\u0000\u0f22\u0f23\u0007\u0007\u0000\u0000\u0f23\u02b6\u0001\u0000"+ + "\u0000\u0000\u0f24\u0f25\u0007\t\u0000\u0000\u0f25\u0f26\u0007\u0010\u0000"+ + "\u0000\u0f26\u0f27\u0007\f\u0000\u0000\u0f27\u0f28\u0007\u0013\u0000\u0000"+ + "\u0f28\u0f29\u0007\u0016\u0000\u0000\u0f29\u0f2a\u0007\u0010\u0000\u0000"+ + "\u0f2a\u02b8\u0001\u0000\u0000\u0000\u0f2b\u0f2c\u0007\t\u0000\u0000\u0f2c"+ + "\u0f2d\u0007\u0010\u0000\u0000\u0f2d\u0f2e\u0007\u0013\u0000\u0000\u0f2e"+ + "\u0f2f\u0007\r\u0000\u0000\u0f2f\u0f30\u0007\u0005\u0000\u0000\u0f30\u0f31"+ + "\u0007\u0017\u0000\u0000\u0f31\u0f32\u0007\n\u0000\u0000\u0f32\u02ba\u0001"+ + "\u0000\u0000\u0000\u0f33\u0f34\u0007\t\u0000\u0000\u0f34\u0f35\u0007\u0010"+ + "\u0000\u0000\u0f35\u0f36\u0007\r\u0000\u0000\u0f36\u0f37\u0007\u0011\u0000"+ + "\u0000\u0f37\u0f38\u0007\u000e\u0000\u0000\u0f38\u0f39\u0007\u0010\u0000"+ + "\u0000\u0f39\u02bc\u0001\u0000\u0000\u0000\u0f3a\u0f3b\u0007\t\u0000\u0000"+ + "\u0f3b\u0f3c\u0007\u0010\u0000\u0000\u0f3c\u0f3d\u0007\r\u0000\u0000\u0f3d"+ + "\u0f3e\u0007\u0011\u0000\u0000\u0f3e\u0f3f\u0007\u0018\u0000\u0000\u0f3f"+ + "\u02be\u0001\u0000\u0000\u0000\u0f40\u0f41\u0007\t\u0000\u0000\u0f41\u0f42"+ + "\u0007\b\u0000\u0000\u0f42\u0f43\u0007\t\u0000\u0000\u0f43\u0f44\u0007"+ + "\u0011\u0000\u0000\u0f44\u0f45\u0007\f\u0000\u0000\u0f45\u02c0\u0001\u0000"+ + "\u0000\u0000\u0f46\u0f47\u0007\t\u0000\u0000\u0f47\u0f48\u0007\b\u0000"+ + "\u0000\u0f48\u0f49\u0007\t\u0000\u0000\u0f49\u0f4a\u0007\u0010\u0000\u0000"+ + "\u0f4a\u0f4b\u0007\n\u0000\u0000\u0f4b\u0f4c\u0007\u000f\u0000\u0000\u0f4c"+ + "\u02c2\u0001\u0000\u0000\u0000\u0f4d\u0f4e\u0007\u0010\u0000\u0000\u0f4e"+ + "\u0f4f\u0007\u0005\u0000\u0000\u0f4f\u0f50\u0007\u0012\u0000\u0000\u0f50"+ + "\u0f51\u0007\u0006\u0000\u0000\u0f51\u0f52\u0007\n\u0000\u0000\u0f52\u0f53"+ + "\u0007\t\u0000\u0000\u0f53\u02c4\u0001\u0000\u0000\u0000\u0f54\u0f55\u0007"+ + "\u0010\u0000\u0000\u0f55\u0f56\u0007\u0005\u0000\u0000\u0f56\u0f57\u0007"+ + "\u0012\u0000\u0000\u0f57\u0f58\u0007\u0006\u0000\u0000\u0f58\u0f59\u0007"+ + "\n\u0000\u0000\u0f59\u0f5a\u0007\t\u0000\u0000\u0f5a\u0f5b\u0007\u0018"+ + "\u0000\u0000\u0f5b\u0f5c\u0007\u0005\u0000\u0000\u0f5c\u0f5d\u0007\u000e"+ + "\u0000\u0000\u0f5d\u0f5e\u0007\n\u0000\u0000\u0f5e\u02c6\u0001\u0000\u0000"+ + "\u0000\u0f5f\u0f60\u0007\u0010\u0000\u0000\u0f60\u0f61\u0007\n\u0000\u0000"+ + "\u0f61\u0f62\u0007\u000f\u0000\u0000\u0f62\u0f63\u0007\u0018\u0000\u0000"+ + "\u0f63\u02c8\u0001\u0000\u0000\u0000\u0f64\u0f65\u0007\u0010\u0000\u0000"+ + "\u0f65\u0f66\u0007\n\u0000\u0000\u0f66\u0f67\u0007\u000f\u0000\u0000\u0f67"+ + "\u0f68\u0007\u0018\u0000\u0000\u0f68\u0f69\u0007\u0006\u0000\u0000\u0f69"+ + "\u0f6a\u0007\u0005\u0000\u0000\u0f6a\u0f6b\u0007\u0010\u0000\u0000\u0f6b"+ + "\u0f6c\u0007\n\u0000\u0000\u0f6c\u02ca\u0001\u0000\u0000\u0000\u0f6d\u0f6e"+ + "\u0007\u0010\u0000\u0000\u0f6e\u0f6f\u0007\n\u0000\u0000\u0f6f\u0f70\u0007"+ + "\u000f\u0000\u0000\u0f70\u0f71\u0007\u0018\u0000\u0000\u0f71\u0f72\u0007"+ + "\u0013\u0000\u0000\u0f72\u0f73\u0007\r\u0000\u0000\u0f73\u0f74\u0007\u0005"+ + "\u0000\u0000\u0f74\u0f75\u0007\r\u0000\u0000\u0f75\u0f76\u0007\b\u0000"+ + "\u0000\u0f76\u02cc\u0001\u0000\u0000\u0000\u0f77\u0f78\u0007\u0010\u0000"+ + "\u0000\u0f78\u0f79\u0007\n\u0000\u0000\u0f79\u0f7a\u0007\u001a\u0000\u0000"+ + "\u0f7a\u0f7b\u0007\u0010\u0000\u0000\u0f7b\u02ce\u0001\u0000\u0000\u0000"+ + "\u0f7c\u0f7d\u0007\u0010\u0000\u0000\u0f7d\u0f7e\u0007\r\u0000\u0000\u0f7e"+ + "\u0f7f\u0007\u0005\u0000\u0000\u0f7f\u0f80\u0007\u0007\u0000\u0000\u0f80"+ + "\u0f81\u0007\t\u0000\u0000\u0f81\u0f82\u0007\u0005\u0000\u0000\u0f82\u0f83"+ + "\u0007\u000e\u0000\u0000\u0f83\u0f84\u0007\u0010\u0000\u0000\u0f84\u0f85"+ + "\u0007\u0011\u0000\u0000\u0f85\u0f86\u0007\u0013\u0000\u0000\u0f86\u0f87"+ + "\u0007\u0007\u0000\u0000\u0f87\u02d0\u0001\u0000\u0000\u0000\u0f88\u0f89"+ + "\u0007\u0010\u0000\u0000\u0f89\u0f8a\u0007\r\u0000\u0000\u0f8a\u0f8b\u0007"+ + "\u0011\u0000\u0000\u0f8b\u0f8c\u0007\u0017\u0000\u0000\u0f8c\u0f8d\u0007"+ + "\u0017\u0000\u0000\u0f8d\u0f8e\u0007\n\u0000\u0000\u0f8e\u0f8f\u0007\r"+ + "\u0000\u0000\u0f8f\u02d2\u0001\u0000\u0000\u0000\u0f90\u0f91\u0007\u0010"+ + "\u0000\u0000\u0f91\u0f92\u0007\r\u0000\u0000\u0f92\u0f93\u0007\u0016\u0000"+ + "\u0000\u0f93\u0f94\u0007\u0007\u0000\u0000\u0f94\u0f95\u0007\u000e\u0000"+ + "\u0000\u0f95\u0f96\u0007\u0005\u0000\u0000\u0f96\u0f97\u0007\u0010\u0000"+ + "\u0000\u0f97\u0f98\u0007\n\u0000\u0000\u0f98\u02d4\u0001\u0000\u0000\u0000"+ + "\u0f99\u0f9a\u0007\u0010\u0000\u0000\u0f9a\u0f9b\u0007\r\u0000\u0000\u0f9b"+ + "\u0f9c\u0007\u0016\u0000\u0000\u0f9c\u0f9d\u0007\t\u0000\u0000\u0f9d\u0f9e"+ + "\u0007\u0010\u0000\u0000\u0f9e\u0f9f\u0007\n\u0000\u0000\u0f9f\u0fa0\u0007"+ + "\f\u0000\u0000\u0fa0\u02d6\u0001\u0000\u0000\u0000\u0fa1\u0fa2\u0007\u0010"+ + "\u0000\u0000\u0fa2\u0fa3\u0007\b\u0000\u0000\u0fa3\u0fa4\u0007\u0018\u0000"+ + "\u0000\u0fa4\u0fa5\u0007\n\u0000\u0000\u0fa5\u02d8\u0001\u0000\u0000\u0000"+ + "\u0fa6\u0fa7\u0007\u0010\u0000\u0000\u0fa7\u0fa8\u0007\b\u0000\u0000\u0fa8"+ + "\u0fa9\u0007\u0018\u0000\u0000\u0fa9\u0faa\u0007\n\u0000\u0000\u0faa\u0fab"+ + "\u0007\t\u0000\u0000\u0fab\u02da\u0001\u0000\u0000\u0000\u0fac\u0fad\u0007"+ + "\u0016\u0000\u0000\u0fad\u0fae\u0007\u0007\u0000\u0000\u0fae\u0faf\u0007"+ + "\u0012\u0000\u0000\u0faf\u0fb0\u0007\u0013\u0000\u0000\u0fb0\u0fb1\u0007"+ + "\u0016\u0000\u0000\u0fb1\u0fb2\u0007\u0007\u0000\u0000\u0fb2\u0fb3\u0007"+ + "\f\u0000\u0000\u0fb3\u0fb4\u0007\n\u0000\u0000\u0fb4\u0fb5\u0007\f\u0000"+ + "\u0000\u0fb5\u02dc\u0001\u0000\u0000\u0000\u0fb6\u0fb7\u0007\u0016\u0000"+ + "\u0000\u0fb7\u0fb8\u0007\u0007\u0000\u0000\u0fb8\u0fb9\u0007\u000e\u0000"+ + "\u0000\u0fb9\u0fba\u0007\u0013\u0000\u0000\u0fba\u0fbb\u0007\u000f\u0000"+ + "\u0000\u0fbb\u0fbc\u0007\u000f\u0000\u0000\u0fbc\u0fbd\u0007\u0011\u0000"+ + "\u0000\u0fbd\u0fbe\u0007\u0010\u0000\u0000\u0fbe\u0fbf\u0007\u0010\u0000"+ + "\u0000\u0fbf\u0fc0\u0007\n\u0000\u0000\u0fc0\u0fc1\u0007\f\u0000\u0000"+ + "\u0fc1\u02de\u0001\u0000\u0000\u0000\u0fc2\u0fc3\u0007\u0016\u0000\u0000"+ + "\u0fc3\u0fc4\u0007\u0007\u0000\u0000\u0fc4\u0fc5\u0007\n\u0000\u0000\u0fc5"+ + "\u0fc6\u0007\u0007\u0000\u0000\u0fc6\u0fc7\u0007\u000e\u0000\u0000\u0fc7"+ + "\u0fc8\u0007\r\u0000\u0000\u0fc8\u0fc9\u0007\b\u0000\u0000\u0fc9\u0fca"+ + "\u0007\u0018\u0000\u0000\u0fca\u0fcb\u0007\u0010\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\u0015\u0000\u0000\u0fd1\u0fd2\u0007"+ + "\u0007\u0000\u0000\u0fd2\u0fd3\u0007\u0013\u0000\u0000\u0fd3\u0fd4\u0007"+ + "\u001c\u0000\u0000\u0fd4\u0fd5\u0007\u0007\u0000\u0000\u0fd5\u02e2\u0001"+ + "\u0000\u0000\u0000\u0fd6\u0fd7\u0007\u0016\u0000\u0000\u0fd7\u0fd8\u0007"+ + "\u0007\u0000\u0000\u0fd8\u0fd9\u0007\u0006\u0000\u0000\u0fd9\u0fda\u0007"+ + "\u0011\u0000\u0000\u0fda\u0fdb\u0007\t\u0000\u0000\u0fdb\u0fdc\u0007\u0010"+ + "\u0000\u0000\u0fdc\u0fdd\u0007\n\u0000\u0000\u0fdd\u0fde\u0007\u0007\u0000"+ + "\u0000\u0fde\u02e4\u0001\u0000\u0000\u0000\u0fdf\u0fe0\u0007\u0016\u0000"+ + "\u0000\u0fe0\u0fe1\u0007\u0007\u0000\u0000\u0fe1\u0fe2\u0007\u0006\u0000"+ + "\u0000\u0fe2\u0fe3\u0007\u0013\u0000\u0000\u0fe3\u0fe4\u0007\u0017\u0000"+ + "\u0000\u0fe4\u0fe5\u0007\u0017\u0000\u0000\u0fe5\u0fe6\u0007\n\u0000\u0000"+ + "\u0fe6\u0fe7\u0007\f\u0000\u0000\u0fe7\u02e6\u0001\u0000\u0000\u0000\u0fe8"+ + "\u0fe9\u0007\u0016\u0000\u0000\u0fe9\u0fea\u0007\u0007\u0000\u0000\u0fea"+ + "\u0feb\u0007\u0010\u0000\u0000\u0feb\u0fec\u0007\u0011\u0000\u0000\u0fec"+ + "\u0fed\u0007\u0006\u0000\u0000\u0fed\u02e8\u0001\u0000\u0000\u0000\u0fee"+ + "\u0fef\u0007\u0016\u0000\u0000\u0fef\u0ff0\u0007\u0018\u0000\u0000\u0ff0"+ + "\u0ff1\u0007\f\u0000\u0000\u0ff1\u0ff2\u0007\u0005\u0000\u0000\u0ff2\u0ff3"+ + "\u0007\u0010\u0000\u0000\u0ff3\u0ff4\u0007\n\u0000\u0000\u0ff4\u02ea\u0001"+ + "\u0000\u0000\u0000\u0ff5\u0ff6\u0007\u001b\u0000\u0000\u0ff6\u0ff7\u0007"+ + "\u0005\u0000\u0000\u0ff7\u0ff8\u0007\u000e\u0000\u0000\u0ff8\u0ff9\u0007"+ + "\u0016\u0000\u0000\u0ff9\u0ffa\u0007\u0016\u0000\u0000\u0ffa\u0ffb\u0007"+ + "\u000f\u0000\u0000\u0ffb\u02ec\u0001\u0000\u0000\u0000\u0ffc\u0ffd\u0007"+ + "\u001b\u0000\u0000\u0ffd\u0ffe\u0007\u0005\u0000\u0000\u0ffe\u0fff\u0007"+ + "\u0006\u0000\u0000\u0fff\u1000\u0007\u0011\u0000\u0000\u1000\u1001\u0007"+ + "\f\u0000\u0000\u1001\u02ee\u0001\u0000\u0000\u0000\u1002\u1003\u0007\u001b"+ + "\u0000\u0000\u1003\u1004\u0007\u0005\u0000\u0000\u1004\u1005\u0007\u0006"+ + "\u0000\u0000\u1005\u1006\u0007\u0011\u0000\u0000\u1006\u1007\u0007\f\u0000"+ + "\u0000\u1007\u1008\u0007\u0005\u0000\u0000\u1008\u1009\u0007\u0010\u0000"+ + "\u0000\u1009\u100a\u0007\n\u0000\u0000\u100a\u02f0\u0001\u0000\u0000\u0000"+ + "\u100b\u100c\u0007\u001b\u0000\u0000\u100c\u100d\u0007\u0005\u0000\u0000"+ + "\u100d\u100e\u0007\u0006\u0000\u0000\u100e\u100f\u0007\u0011\u0000\u0000"+ + "\u100f\u1010\u0007\f\u0000\u0000\u1010\u1011\u0007\u0005\u0000\u0000\u1011"+ + "\u1012\u0007\u0010\u0000\u0000\u1012\u1013\u0007\u0013\u0000\u0000\u1013"+ + "\u1014\u0007\r\u0000\u0000\u1014\u02f2\u0001\u0000\u0000\u0000\u1015\u1016"+ + "\u0007\u001b\u0000\u0000\u1016\u1017\u0007\u0005\u0000\u0000\u1017\u1018"+ + "\u0007\r\u0000\u0000\u1018\u1019\u0007\b\u0000\u0000\u1019\u101a\u0007"+ + "\u0011\u0000\u0000\u101a\u101b\u0007\u0007\u0000\u0000\u101b\u101c\u0007"+ + "\u0017\u0000\u0000\u101c\u02f4\u0001\u0000\u0000\u0000\u101d\u101e\u0007"+ + "\u001b\u0000\u0000\u101e\u101f\u0007\n\u0000\u0000\u101f\u1020\u0007\r"+ + "\u0000\u0000\u1020\u1021\u0007\t\u0000\u0000\u1021\u1022\u0007\u0011\u0000"+ + "\u0000\u1022\u1023\u0007\u0013\u0000\u0000\u1023\u1024\u0007\u0007\u0000"+ + "\u0000\u1024\u02f6\u0001\u0000\u0000\u0000\u1025\u1026\u0007\u001b\u0000"+ + "\u0000\u1026\u1027\u0007\u0011\u0000\u0000\u1027\u1028\u0007\n\u0000\u0000"+ + "\u1028\u1029\u0007\u001c\u0000\u0000\u1029\u02f8\u0001\u0000\u0000\u0000"+ + "\u102a\u102b\u0007\u001b\u0000\u0000\u102b\u102c\u0007\u0013\u0000\u0000"+ + "\u102c\u102d\u0007\u0006\u0000\u0000\u102d\u102e\u0007\u0005\u0000\u0000"+ + "\u102e\u102f\u0007\u0010\u0000\u0000\u102f\u1030\u0007\u0011\u0000\u0000"+ + "\u1030\u1031\u0007\u0006\u0000\u0000\u1031\u1032\u0007\n\u0000\u0000\u1032"+ + "\u02fa\u0001\u0000\u0000\u0000\u1033\u1034\u0007\u001c\u0000\u0000\u1034"+ + "\u1035\u0007\u0014\u0000\u0000\u1035\u1036\u0007\u0011\u0000\u0000\u1036"+ + "\u1037\u0007\u0010\u0000\u0000\u1037\u1038\u0007\n\u0000\u0000\u1038\u1039"+ + "\u0007\t\u0000\u0000\u1039\u103a\u0007\u0018\u0000\u0000\u103a\u103b\u0007"+ + "\u0005\u0000\u0000\u103b\u103c\u0007\u000e\u0000\u0000\u103c\u103d\u0007"+ + "\n\u0000\u0000\u103d\u02fc\u0001\u0000\u0000\u0000\u103e\u103f\u0007\u001c"+ + "\u0000\u0000\u103f\u1040\u0007\u0011\u0000\u0000\u1040\u1041\u0007\u0010"+ + "\u0000\u0000\u1041\u1042\u0007\u0014\u0000\u0000\u1042\u1043\u0007\u0013"+ + "\u0000\u0000\u1043\u1044\u0007\u0016\u0000\u0000\u1044\u1045\u0007\u0010"+ + "\u0000\u0000\u1045\u02fe\u0001\u0000\u0000\u0000\u1046\u1047\u0007\u001c"+ + "\u0000\u0000\u1047\u1048\u0007\u0013\u0000\u0000\u1048\u1049\u0007\r\u0000"+ + "\u0000\u1049\u104a\u0007\u0015\u0000\u0000\u104a\u0300\u0001\u0000\u0000"+ + "\u0000\u104b\u104c\u0007\u001c\u0000\u0000\u104c\u104d\u0007\r\u0000\u0000"+ + "\u104d\u104e\u0007\u0005\u0000\u0000\u104e\u104f\u0007\u0018\u0000\u0000"+ + "\u104f\u1050\u0007\u0018\u0000\u0000\u1050\u1051\u0007\n\u0000\u0000\u1051"+ + "\u1052\u0007\r\u0000\u0000\u1052\u0302\u0001\u0000\u0000\u0000\u1053\u1054"+ + "\u0007\u001c\u0000\u0000\u1054\u1055\u0007\r\u0000\u0000\u1055\u1056\u0007"+ + "\u0011\u0000\u0000\u1056\u1057\u0007\u0010\u0000\u0000\u1057\u1058\u0007"+ + "\n\u0000\u0000\u1058\u0304\u0001\u0000\u0000\u0000\u1059\u105a\u0007\u001a"+ + "\u0000\u0000\u105a\u105b\u0007\u000f\u0000\u0000\u105b\u105c\u0007\u0006"+ + "\u0000\u0000\u105c\u0306\u0001\u0000\u0000\u0000\u105d\u105e\u0007\b\u0000"+ + "\u0000\u105e\u105f\u0007\n\u0000\u0000\u105f\u1060\u0007\u0005\u0000\u0000"+ + "\u1060\u1061\u0007\r\u0000\u0000\u1061\u0308\u0001\u0000\u0000\u0000\u1062"+ + "\u1063\u0007\b\u0000\u0000\u1063\u1064\u0007\n\u0000\u0000\u1064\u1065"+ + "\u0007\t\u0000\u0000\u1065\u030a\u0001\u0000\u0000\u0000\u1066\u1067\u0007"+ + "\u000b\u0000\u0000\u1067\u1068\u0007\u0013\u0000\u0000\u1068\u1069\u0007"+ + "\u0007\u0000\u0000\u1069\u106a\u0007\n\u0000\u0000\u106a\u030c\u0001\u0000"+ + "\u0000\u0000\u106b\u106c\u0007\u0012\u0000\u0000\u106c\u106d\u0007\n\u0000"+ + "\u0000\u106d\u106e\u0007\u0010\u0000\u0000\u106e\u106f\u0007\u001c\u0000"+ + "\u0000\u106f\u1070\u0007\n\u0000\u0000\u1070\u1071\u0007\n\u0000\u0000"+ + "\u1071\u1072\u0007\u0007\u0000\u0000\u1072\u030e\u0001\u0000\u0000\u0000"+ + "\u1073\u1074\u0007\u0012\u0000\u0000\u1074\u1075\u0007\u0011\u0000\u0000"+ + "\u1075\u1076\u0007\u0017\u0000\u0000\u1076\u1077\u0007\u0011\u0000\u0000"+ + "\u1077\u1078\u0007\u0007\u0000\u0000\u1078\u1079\u0007\u0010\u0000\u0000"+ + "\u1079\u0310\u0001\u0000\u0000\u0000\u107a\u107b\u0007\u0012\u0000\u0000"+ + "\u107b\u107c\u0007\u0011\u0000\u0000\u107c\u107d\u0007\u0010\u0000\u0000"+ + "\u107d\u0312\u0001\u0000\u0000\u0000\u107e\u107f\u0007\u0012\u0000\u0000"+ + "\u107f\u1080\u0007\u0013\u0000\u0000\u1080\u1081\u0007\u0013\u0000\u0000"+ + "\u1081\u1082\u0007\u0006\u0000\u0000\u1082\u1083\u0007\n\u0000\u0000\u1083"+ + "\u1084\u0007\u0005\u0000\u0000\u1084\u1085\u0007\u0007\u0000\u0000\u1085"+ + "\u0314\u0001\u0000\u0000\u0000\u1086\u1087\u0007\u000e\u0000\u0000\u1087"+ + "\u1088\u0007\u0014\u0000\u0000\u1088\u1089\u0007\u0005\u0000\u0000\u1089"+ + "\u108a\u0007\r\u0000\u0000\u108a\u0316\u0001\u0000\u0000\u0000\u108b\u108c"+ + "\u0007\u000e\u0000\u0000\u108c\u108d\u0007\u0014\u0000\u0000\u108d\u108e"+ + "\u0007\u0005\u0000\u0000\u108e\u108f\u0007\r\u0000\u0000\u108f\u1090\u0007"+ + "\u0005\u0000\u0000\u1090\u1091\u0007\u000e\u0000\u0000\u1091\u1092\u0007"+ + "\u0010\u0000\u0000\u1092\u1093\u0007\n\u0000\u0000\u1093\u1094\u0007\r"+ + "\u0000\u0000\u1094\u0318\u0001\u0000\u0000\u0000\u1095\u1096\u0007\u000e"+ + "\u0000\u0000\u1096\u1097\u0007\u0013\u0000\u0000\u1097\u1098\u0007\u0005"+ + "\u0000\u0000\u1098\u1099\u0007\u0006\u0000\u0000\u1099\u109a\u0007\n\u0000"+ + "\u0000\u109a\u109b\u0007\t\u0000\u0000\u109b\u109c\u0007\u000e\u0000\u0000"+ + "\u109c\u109d\u0007\n\u0000\u0000\u109d\u031a\u0001\u0000\u0000\u0000\u109e"+ + "\u109f\u0007\f\u0000\u0000\u109f\u10a0\u0007\n\u0000\u0000\u10a0\u10a1"+ + "\u0007\u000e\u0000\u0000\u10a1\u031c\u0001\u0000\u0000\u0000\u10a2\u10a3"+ + "\u0007\f\u0000\u0000\u10a3\u10a4\u0007\n\u0000\u0000\u10a4\u10a5\u0007"+ + "\u000e\u0000\u0000\u10a5\u10a6\u0007\u0011\u0000\u0000\u10a6\u10a7\u0007"+ + "\u000f\u0000\u0000\u10a7\u10a8\u0007\u0005\u0000\u0000\u10a8\u10a9\u0007"+ + "\u0006\u0000\u0000\u10a9\u031e\u0001\u0000\u0000\u0000\u10aa\u10ab\u0007"+ + "\n\u0000\u0000\u10ab\u10ac\u0007\u001a\u0000\u0000\u10ac\u10ad\u0007\u0011"+ + "\u0000\u0000\u10ad\u10ae\u0007\t\u0000\u0000\u10ae\u10af\u0007\u0010\u0000"+ + "\u0000\u10af\u10b0\u0007\t\u0000\u0000\u10b0\u0320\u0001\u0000\u0000\u0000"+ + "\u10b1\u10b2\u0007\n\u0000\u0000\u10b2\u10b3\u0007\u001a\u0000\u0000\u10b3"+ + "\u10b4\u0007\u0010\u0000\u0000\u10b4\u10b5\u0007\r\u0000\u0000\u10b5\u10b6"+ + "\u0007\u0005\u0000\u0000\u10b6\u10b7\u0007\u000e\u0000\u0000\u10b7\u10b8"+ + "\u0007\u0010\u0000\u0000\u10b8\u0322\u0001\u0000\u0000\u0000\u10b9\u10ba"+ + "\u0007\u0019\u0000\u0000\u10ba\u10bb\u0007\u0006\u0000\u0000\u10bb\u10bc"+ + "\u0007\u0013\u0000\u0000\u10bc\u10bd\u0007\u0005\u0000\u0000\u10bd\u10be"+ + "\u0007\u0010\u0000\u0000\u10be\u0324\u0001\u0000\u0000\u0000\u10bf\u10c0"+ + "\u0007\u0017\u0000\u0000\u10c0\u10c1\u0007\r\u0000\u0000\u10c1\u10c2\u0007"+ + "\n\u0000\u0000\u10c2\u10c3\u0007\u0005\u0000\u0000\u10c3\u10c4\u0007\u0010"+ + "\u0000\u0000\u10c4\u10c5\u0007\n\u0000\u0000\u10c5\u10c6\u0007\t\u0000"+ + "\u0000\u10c6\u10c7\u0007\u0010\u0000\u0000\u10c7\u0326\u0001\u0000\u0000"+ + "\u0000\u10c8\u10c9\u0007\u0011\u0000\u0000\u10c9\u10ca\u0007\u0007\u0000"+ + "\u0000\u10ca\u10cb\u0007\u0013\u0000\u0000\u10cb\u10cc\u0007\u0016\u0000"+ + "\u0000\u10cc\u10cd\u0007\u0010\u0000\u0000\u10cd\u0328\u0001\u0000\u0000"+ + "\u0000\u10ce\u10cf\u0007\u0011\u0000\u0000\u10cf\u10d0\u0007\u0007\u0000"+ + "\u0000\u10d0\u10d1\u0007\u0010\u0000\u0000\u10d1\u032a\u0001\u0000\u0000"+ + "\u0000\u10d2\u10d3\u0007\u0011\u0000\u0000\u10d3\u10d4\u0007\u0007\u0000"+ + "\u0000\u10d4\u10d5\u0007\u0010\u0000\u0000\u10d5\u10d6\u0007\n\u0000\u0000"+ + "\u10d6\u10d7\u0007\u0017\u0000\u0000\u10d7\u10d8\u0007\n\u0000\u0000\u10d8"+ + "\u10d9\u0007\r\u0000\u0000\u10d9\u032c\u0001\u0000\u0000\u0000\u10da\u10db"+ + "\u0007\u0011\u0000\u0000\u10db\u10dc\u0007\u0007\u0000\u0000\u10dc\u10dd"+ + "\u0007\u0010\u0000\u0000\u10dd\u10de\u0007\n\u0000\u0000\u10de\u10df\u0007"+ + "\r\u0000\u0000\u10df\u10e0\u0007\u001b\u0000\u0000\u10e0\u10e1\u0007\u0005"+ + "\u0000\u0000\u10e1\u10e2\u0007\u0006\u0000\u0000\u10e2\u032e\u0001\u0000"+ + "\u0000\u0000\u10e3\u10e4\u0007\u0006\u0000\u0000\u10e4\u10e5\u0007\n\u0000"+ + "\u0000\u10e5\u10e6\u0007\u0005\u0000\u0000\u10e6\u10e7\u0007\t\u0000\u0000"+ + "\u10e7\u10e8\u0007\u0010\u0000\u0000\u10e8\u0330\u0001\u0000\u0000\u0000"+ + "\u10e9\u10ea\u0007\u0007\u0000\u0000\u10ea\u10eb\u0007\u0005\u0000\u0000"+ + "\u10eb\u10ec\u0007\u0010\u0000\u0000\u10ec\u10ed\u0007\u0011\u0000\u0000"+ + "\u10ed\u10ee\u0007\u0013\u0000\u0000\u10ee\u10ef\u0007\u0007\u0000\u0000"+ + "\u10ef\u10f0\u0007\u0005\u0000\u0000\u10f0\u10f1\u0007\u0006\u0000\u0000"+ + "\u10f1\u0332\u0001\u0000\u0000\u0000\u10f2\u10f3\u0007\u0007\u0000\u0000"+ + "\u10f3\u10f4\u0007\u000e\u0000\u0000\u10f4\u10f5\u0007\u0014\u0000\u0000"+ + "\u10f5\u10f6\u0007\u0005\u0000\u0000\u10f6\u10f7\u0007\r\u0000\u0000\u10f7"+ + "\u0334\u0001\u0000\u0000\u0000\u10f8\u10f9\u0007\u0007\u0000\u0000\u10f9"+ + "\u10fa\u0007\u0013\u0000\u0000\u10fa\u10fb\u0007\u0007\u0000\u0000\u10fb"+ + "\u10fc\u0007\n\u0000\u0000\u10fc\u0336\u0001\u0000\u0000\u0000\u10fd\u10fe"+ + "\u0007\u0007\u0000\u0000\u10fe\u10ff\u0007\u0016\u0000\u0000\u10ff\u1100"+ + "\u0007\u0006\u0000\u0000\u1100\u1101\u0007\u0006\u0000\u0000\u1101\u1102"+ + "\u0007\u0011\u0000\u0000\u1102\u1103\u0007\u0019\u0000\u0000\u1103\u0338"+ + "\u0001\u0000\u0000\u0000\u1104\u1105\u0007\u0007\u0000\u0000\u1105\u1106"+ + "\u0007\u0016\u0000\u0000\u1106\u1107\u0007\u000f\u0000\u0000\u1107\u1108"+ + "\u0007\n\u0000\u0000\u1108\u1109\u0007\r\u0000\u0000\u1109\u110a\u0007"+ + "\u0011\u0000\u0000\u110a\u110b\u0007\u000e\u0000\u0000\u110b\u033a\u0001"+ + "\u0000\u0000\u0000\u110c\u110d\u0007\u0013\u0000\u0000\u110d\u110e\u0007"+ + "\u001b\u0000\u0000\u110e\u110f\u0007\n\u0000\u0000\u110f\u1110\u0007\r"+ + "\u0000\u0000\u1110\u1111\u0007\u0006\u0000\u0000\u1111\u1112\u0007\u0005"+ + "\u0000\u0000\u1112\u1113\u0007\b\u0000\u0000\u1113\u033c\u0001\u0000\u0000"+ + "\u0000\u1114\u1115\u0007\u0018\u0000\u0000\u1115\u1116\u0007\u0013\u0000"+ + "\u0000\u1116\u1117\u0007\t\u0000\u0000\u1117\u1118\u0007\u0011\u0000\u0000"+ + "\u1118\u1119\u0007\u0010\u0000\u0000\u1119\u111a\u0007\u0011\u0000\u0000"+ + "\u111a\u111b\u0007\u0013\u0000\u0000\u111b\u111c\u0007\u0007\u0000\u0000"+ + "\u111c\u033e\u0001\u0000\u0000\u0000\u111d\u111e\u0007\u0018\u0000\u0000"+ + "\u111e\u111f\u0007\r\u0000\u0000\u111f\u1120\u0007\n\u0000\u0000\u1120"+ + "\u1121\u0007\u000e\u0000\u0000\u1121\u1122\u0007\u0011\u0000\u0000\u1122"+ + "\u1123\u0007\t\u0000\u0000\u1123\u1124\u0007\u0011\u0000\u0000\u1124\u1125"+ + "\u0007\u0013\u0000\u0000\u1125\u1126\u0007\u0007\u0000\u0000\u1126\u0340"+ + "\u0001\u0000\u0000\u0000\u1127\u1128\u0007\r\u0000\u0000\u1128\u1129\u0007"+ + "\n\u0000\u0000\u1129\u112a\u0007\u0005\u0000\u0000\u112a\u112b\u0007\u0006"+ + "\u0000\u0000\u112b\u0342\u0001\u0000\u0000\u0000\u112c\u112d\u0007\r\u0000"+ + "\u0000\u112d\u112e\u0007\u0013\u0000\u0000\u112e\u112f\u0007\u001c\u0000"+ + "\u0000\u112f\u0344\u0001\u0000\u0000\u0000\u1130\u1131\u0007\t\u0000\u0000"+ + "\u1131\u1132\u0007\n\u0000\u0000\u1132\u1133\u0007\u0010\u0000\u0000\u1133"+ + "\u1134\u0007\u0013\u0000\u0000\u1134\u1135\u0007\u0019\u0000\u0000\u1135"+ + "\u0346\u0001\u0000\u0000\u0000\u1136\u1137\u0007\t\u0000\u0000\u1137\u1138"+ + "\u0007\u000f\u0000\u0000\u1138\u1139\u0007\u0005\u0000\u0000\u1139\u113a"+ + "\u0007\u0006\u0000\u0000\u113a\u113b\u0007\u0006\u0000\u0000\u113b\u113c"+ + "\u0007\u0011\u0000\u0000\u113c\u113d\u0007\u0007\u0000\u0000\u113d\u113e"+ + "\u0007\u0010\u0000\u0000\u113e\u0348\u0001\u0000\u0000\u0000\u113f\u1140"+ + "\u0007\t\u0000\u0000\u1140\u1141\u0007\u0016\u0000\u0000\u1141\u1142\u0007"+ + "\u0012\u0000\u0000\u1142\u1143\u0007\t\u0000\u0000\u1143\u1144\u0007\u0010"+ + "\u0000\u0000\u1144\u1145\u0007\r\u0000\u0000\u1145\u1146\u0007\u0011\u0000"+ + "\u0000\u1146\u1147\u0007\u0007\u0000\u0000\u1147\u1148\u0007\u0017\u0000"+ + "\u0000\u1148\u034a\u0001\u0000\u0000\u0000\u1149\u114a\u0007\u0010\u0000"+ + "\u0000\u114a\u114b\u0007\u0011\u0000\u0000\u114b\u114c\u0007\u000f\u0000"+ + "\u0000\u114c\u114d\u0007\n\u0000\u0000\u114d\u034c\u0001\u0000\u0000\u0000"+ + "\u114e\u114f\u0007\u0010\u0000\u0000\u114f\u1150\u0007\u0011\u0000\u0000"+ + "\u1150\u1151\u0007\u000f\u0000\u0000\u1151\u1152\u0007\n\u0000\u0000\u1152"+ + "\u1153\u0007\t\u0000\u0000\u1153\u1154\u0007\u0010\u0000\u0000\u1154\u1155"+ + "\u0007\u0005\u0000\u0000\u1155\u1156\u0007\u000f\u0000\u0000\u1156\u1157"+ + "\u0007\u0018\u0000\u0000\u1157\u034e\u0001\u0000\u0000\u0000\u1158\u1159"+ + "\u0007\u0010\u0000\u0000\u1159\u115a\u0007\r\u0000\u0000\u115a\u115b\u0007"+ + "\n\u0000\u0000\u115b\u115c\u0007\u0005\u0000\u0000\u115c\u115d\u0007\u0010"+ + "\u0000\u0000\u115d\u0350\u0001\u0000\u0000\u0000\u115e\u115f\u0007\u0010"+ + "\u0000\u0000\u115f\u1160\u0007\r\u0000\u0000\u1160\u1161\u0007\u0011\u0000"+ + "\u0000\u1161\u1162\u0007\u000f\u0000\u0000\u1162\u0352\u0001\u0000\u0000"+ + "\u0000\u1163\u1164\u0007\u001b\u0000\u0000\u1164\u1165\u0007\u0005\u0000"+ + "\u0000\u1165\u1166\u0007\u0006\u0000\u0000\u1166\u1167\u0007\u0016\u0000"+ + "\u0000\u1167\u1168\u0007\n\u0000\u0000\u1168\u1169\u0007\t\u0000\u0000"+ + "\u1169\u0354\u0001\u0000\u0000\u0000\u116a\u116b\u0007\u001b\u0000\u0000"+ + "\u116b\u116c\u0007\u0005\u0000\u0000\u116c\u116d\u0007\r\u0000\u0000\u116d"+ + "\u116e\u0007\u000e\u0000\u0000\u116e\u116f\u0007\u0014\u0000\u0000\u116f"+ + "\u1170\u0007\u0005\u0000\u0000\u1170\u1171\u0007\r\u0000\u0000\u1171\u0356"+ + "\u0001\u0000\u0000\u0000\u1172\u1173\u0007\u001a\u0000\u0000\u1173\u1174"+ + "\u0007\u000f\u0000\u0000\u1174\u1175\u0007\u0006\u0000\u0000\u1175\u1176"+ + "\u0007\u0005\u0000\u0000\u1176\u1177\u0007\u0010\u0000\u0000\u1177\u1178"+ + "\u0007\u0010\u0000\u0000\u1178\u1179\u0007\r\u0000\u0000\u1179\u117a\u0007"+ + "\u0011\u0000\u0000\u117a\u117b\u0007\u0012\u0000\u0000\u117b\u117c\u0007"+ + "\u0016\u0000\u0000\u117c\u117d\u0007\u0010\u0000\u0000\u117d\u117e\u0007"+ + "\n\u0000\u0000\u117e\u117f\u0007\t\u0000\u0000\u117f\u0358\u0001\u0000"+ + "\u0000\u0000\u1180\u1181\u0007\u001a\u0000\u0000\u1181\u1182\u0007\u000f"+ + "\u0000\u0000\u1182\u1183\u0007\u0006\u0000\u0000\u1183\u1184\u0007\u000e"+ + "\u0000\u0000\u1184\u1185\u0007\u0013\u0000\u0000\u1185\u1186\u0007\u000f"+ + "\u0000\u0000\u1186\u1187\u0007\u000f\u0000\u0000\u1187\u1188\u0007\n\u0000"+ + "\u0000\u1188\u1189\u0007\u0007\u0000\u0000\u1189\u118a\u0007\u0010\u0000"+ + "\u0000\u118a\u035a\u0001\u0000\u0000\u0000\u118b\u118c\u0007\u001a\u0000"+ + "\u0000\u118c\u118d\u0007\u000f\u0000\u0000\u118d\u118e\u0007\u0006\u0000"+ + "\u0000\u118e\u118f\u0007\u0005\u0000\u0000\u118f\u1190\u0007\u0017\u0000"+ + "\u0000\u1190\u1191\u0007\u0017\u0000\u0000\u1191\u035c\u0001\u0000\u0000"+ + "\u0000\u1192\u1193\u0007\u001a\u0000\u0000\u1193\u1194\u0007\u000f\u0000"+ + "\u0000\u1194\u1195\u0007\u0006\u0000\u0000\u1195\u1196\u0005_\u0000\u0000"+ + "\u1196\u1197\u0007\u0011\u0000\u0000\u1197\u1198\u0007\t\u0000\u0000\u1198"+ + "\u1199\u0005_\u0000\u0000\u1199\u119a\u0007\u001c\u0000\u0000\u119a\u119b"+ + "\u0007\n\u0000\u0000\u119b\u119c\u0007\u0006\u0000\u0000\u119c\u119d\u0007"+ + "\u0006\u0000\u0000\u119d\u119e\u0005_\u0000\u0000\u119e\u119f\u0007\u0019"+ + "\u0000\u0000\u119f\u11a0\u0007\u0013\u0000\u0000\u11a0\u11a1\u0007\r\u0000"+ + "\u0000\u11a1\u11a2\u0007\u000f\u0000\u0000\u11a2\u11a3\u0007\n\u0000\u0000"+ + "\u11a3\u11a4\u0007\f\u0000\u0000\u11a4\u035e\u0001\u0000\u0000\u0000\u11a5"+ + "\u11a6\u0007\u001a\u0000\u0000\u11a6\u11a7\u0007\u000f\u0000\u0000\u11a7"+ + "\u11a8\u0007\u0006\u0000\u0000\u11a8\u11a9\u0005_\u0000\u0000\u11a9\u11aa"+ + "\u0007\u0011\u0000\u0000\u11aa\u11ab\u0007\t\u0000\u0000\u11ab\u11ac\u0005"+ + "_\u0000\u0000\u11ac\u11ad\u0007\u001c\u0000\u0000\u11ad\u11ae\u0007\n"+ + "\u0000\u0000\u11ae\u11af\u0007\u0006\u0000\u0000\u11af\u11b0\u0007\u0006"+ + "\u0000\u0000\u11b0\u11b1\u0005_\u0000\u0000\u11b1\u11b2\u0007\u0019\u0000"+ + "\u0000\u11b2\u11b3\u0007\u0013\u0000\u0000\u11b3\u11b4\u0007\r\u0000\u0000"+ + "\u11b4\u11b5\u0007\u000f\u0000\u0000\u11b5\u11b6\u0007\n\u0000\u0000\u11b6"+ + "\u11b7\u0007\f\u0000\u0000\u11b7\u11b8\u0005_\u0000\u0000\u11b8\u11b9"+ + "\u0007\f\u0000\u0000\u11b9\u11ba\u0007\u0013\u0000\u0000\u11ba\u11bb\u0007"+ + "\u000e\u0000\u0000\u11bb\u11bc\u0007\u0016\u0000\u0000\u11bc\u11bd\u0007"+ + "\u000f\u0000\u0000\u11bd\u11be\u0007\n\u0000\u0000\u11be\u11bf\u0007\u0007"+ + "\u0000\u0000\u11bf\u11c0\u0007\u0010\u0000\u0000\u11c0\u0360\u0001\u0000"+ + "\u0000\u0000\u11c1\u11c2\u0007\u001a\u0000\u0000\u11c2\u11c3\u0007\u000f"+ + "\u0000\u0000\u11c3\u11c4\u0007\u0006\u0000\u0000\u11c4\u11c5\u0005_\u0000"+ + "\u0000\u11c5\u11c6\u0007\u0011\u0000\u0000\u11c6\u11c7\u0007\t\u0000\u0000"+ + "\u11c7\u11c8\u0005_\u0000\u0000\u11c8\u11c9\u0007\u001c\u0000\u0000\u11c9"+ + "\u11ca\u0007\n\u0000\u0000\u11ca\u11cb\u0007\u0006\u0000\u0000\u11cb\u11cc"+ + "\u0007\u0006\u0000\u0000\u11cc\u11cd\u0005_\u0000\u0000\u11cd\u11ce\u0007"+ + "\u0019\u0000\u0000\u11ce\u11cf\u0007\u0013\u0000\u0000\u11cf\u11d0\u0007"+ + "\r\u0000\u0000\u11d0\u11d1\u0007\u000f\u0000\u0000\u11d1\u11d2\u0007\n"+ + "\u0000\u0000\u11d2\u11d3\u0007\f\u0000\u0000\u11d3\u11d4\u0005_\u0000"+ + "\u0000\u11d4\u11d5\u0007\u000e\u0000\u0000\u11d5\u11d6\u0007\u0013\u0000"+ + "\u0000\u11d6\u11d7\u0007\u0007\u0000\u0000\u11d7\u11d8\u0007\u0010\u0000"+ + "\u0000\u11d8\u11d9\u0007\n\u0000\u0000\u11d9\u11da\u0007\u0007\u0000\u0000"+ + "\u11da\u11db\u0007\u0010\u0000\u0000\u11db\u0362\u0001\u0000\u0000\u0000"+ + "\u11dc\u11dd\u0007\u001a\u0000\u0000\u11dd\u11de\u0007\u0018\u0000\u0000"+ + "\u11de\u11df\u0007\u0005\u0000\u0000\u11df\u11e0\u0007\u0010\u0000\u0000"+ + "\u11e0\u11e1\u0007\u0014\u0000\u0000\u11e1\u0364\u0001\u0000\u0000\u0000"+ + "\u11e2\u11e3\u0007\u001a\u0000\u0000\u11e3\u11e4\u0007\u0018\u0000\u0000"+ + "\u11e4\u11e5\u0007\u0005\u0000\u0000\u11e5\u11e6\u0007\u0010\u0000\u0000"+ + "\u11e6\u11e7\u0007\u0014\u0000\u0000\u11e7\u11e8\u0005_\u0000\u0000\u11e8"+ + "\u11e9\u0007\n\u0000\u0000\u11e9\u11ea\u0007\u001a\u0000\u0000\u11ea\u11eb"+ + "\u0007\u0011\u0000\u0000\u11eb\u11ec\u0007\t\u0000\u0000\u11ec\u11ed\u0007"+ + "\u0010\u0000\u0000\u11ed\u11ee\u0007\t\u0000\u0000\u11ee\u0366\u0001\u0000"+ + "\u0000\u0000\u11ef\u11f0\u0007\u001a\u0000\u0000\u11f0\u11f1\u0007\u000f"+ + "\u0000\u0000\u11f1\u11f2\u0007\u0006\u0000\u0000\u11f2\u11f3\u0007\u000e"+ + "\u0000\u0000\u11f3\u11f4\u0007\u0013\u0000\u0000\u11f4\u11f5\u0007\u0007"+ + "\u0000\u0000\u11f5\u11f6\u0007\u000e\u0000\u0000\u11f6\u11f7\u0007\u0005"+ + "\u0000\u0000\u11f7\u11f8\u0007\u0010\u0000\u0000\u11f8\u0368\u0001\u0000"+ + "\u0000\u0000\u11f9\u11fa\u0007\u001a\u0000\u0000\u11fa\u11fb\u0007\u000f"+ + "\u0000\u0000\u11fb\u11fc\u0007\u0006\u0000\u0000\u11fc\u11fd\u0007\n\u0000"+ + "\u0000\u11fd\u11fe\u0007\u0006\u0000\u0000\u11fe\u11ff\u0007\n\u0000\u0000"+ + "\u11ff\u1200\u0007\u000f\u0000\u0000\u1200\u1201\u0007\n\u0000\u0000\u1201"+ + "\u1202\u0007\u0007\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\n\u0000\u0000\u1208\u1209\u0007\u001a\u0000\u0000\u1209\u120a"+ + "\u0007\u0011\u0000\u0000\u120a\u120b\u0007\t\u0000\u0000\u120b\u120c\u0007"+ + "\u0010\u0000\u0000\u120c\u120d\u0007\t\u0000\u0000\u120d\u036c\u0001\u0000"+ + "\u0000\u0000\u120e\u120f\u0007\u001a\u0000\u0000\u120f\u1210\u0007\u000f"+ + "\u0000\u0000\u1210\u1211\u0007\u0006\u0000\u0000\u1211\u1212\u0007\u0019"+ + "\u0000\u0000\u1212\u1213\u0007\u0013\u0000\u0000\u1213\u1214\u0007\r\u0000"+ + "\u0000\u1214\u1215\u0007\n\u0000\u0000\u1215\u1216\u0007\t\u0000\u0000"+ + "\u1216\u1217\u0007\u0010\u0000\u0000\u1217\u036e\u0001\u0000\u0000\u0000"+ + "\u1218\u1219\u0007\u001a\u0000\u0000\u1219\u121a\u0007\u000f\u0000\u0000"+ + "\u121a\u121b\u0007\u0006\u0000\u0000\u121b\u121c\u0007\u0018\u0000\u0000"+ + "\u121c\u121d\u0007\u0005\u0000\u0000\u121d\u121e\u0007\r\u0000\u0000\u121e"+ + "\u121f\u0007\t\u0000\u0000\u121f\u1220\u0007\n\u0000\u0000\u1220\u0370"+ + "\u0001\u0000\u0000\u0000\u1221\u1222\u0007\u001a\u0000\u0000\u1222\u1223"+ + "\u0007\u000f\u0000\u0000\u1223\u1224\u0007\u0006\u0000\u0000\u1224\u1225"+ + "\u0007\u0018\u0000\u0000\u1225\u1226\u0007\u0011\u0000\u0000\u1226\u0372"+ + "\u0001\u0000\u0000\u0000\u1227\u1228\u0007\u001a\u0000\u0000\u1228\u1229"+ + "\u0007\u000f\u0000\u0000\u1229\u122a\u0007\u0006\u0000\u0000\u122a\u122b"+ + "\u0007\r\u0000\u0000\u122b\u122c\u0007\u0013\u0000\u0000\u122c\u122d\u0007"+ + "\u0013\u0000\u0000\u122d\u122e\u0007\u0010\u0000\u0000\u122e\u0374\u0001"+ + "\u0000\u0000\u0000\u122f\u1230\u0007\u001a\u0000\u0000\u1230\u1231\u0007"+ + "\u000f\u0000\u0000\u1231\u1232\u0007\u0006\u0000\u0000\u1232\u1233\u0007"+ + "\t\u0000\u0000\u1233\u1234\u0007\n\u0000\u0000\u1234\u1235\u0007\r\u0000"+ + "\u0000\u1235\u1236\u0007\u0011\u0000\u0000\u1236\u1237\u0007\u0005\u0000"+ + "\u0000\u1237\u1238\u0007\u0006\u0000\u0000\u1238\u1239\u0007\u0011\u0000"+ + "\u0000\u1239\u123a\u0007\u000b\u0000\u0000\u123a\u123b\u0007\n\u0000\u0000"+ + "\u123b\u0376\u0001\u0000\u0000\u0000\u123c\u123d\u0007\u000e\u0000\u0000"+ + "\u123d\u123e\u0007\u0005\u0000\u0000\u123e\u123f\u0007\u0006\u0000\u0000"+ + "\u123f\u1240\u0007\u0006\u0000\u0000\u1240\u0378\u0001\u0000\u0000\u0000"+ + "\u1241\u1242\u0007\u000e\u0000\u0000\u1242\u1243\u0007\u0016\u0000\u0000"+ + "\u1243\u1244\u0007\r\u0000\u0000\u1244\u1245\u0007\r\u0000\u0000\u1245"+ + "\u1246\u0007\n\u0000\u0000\u1246\u1247\u0007\u0007\u0000\u0000\u1247\u1248"+ + "\u0007\u0010\u0000\u0000\u1248\u037a\u0001\u0000\u0000\u0000\u1249\u124a"+ + "\u0007\u0005\u0000\u0000\u124a\u124b\u0007\u0010\u0000\u0000\u124b\u124c"+ + "\u0007\u0010\u0000\u0000\u124c\u124d\u0007\u0005\u0000\u0000\u124d\u124e"+ + "\u0007\u000e\u0000\u0000\u124e\u124f\u0007\u0014\u0000\u0000\u124f\u037c"+ + "\u0001\u0000\u0000\u0000\u1250\u1251\u0007\f\u0000\u0000\u1251\u1252\u0007"+ + "\n\u0000\u0000\u1252\u1253\u0007\u0010\u0000\u0000\u1253\u1254\u0007\u0005"+ + "\u0000\u0000\u1254\u1255\u0007"; + private static final String _serializedATNSegment2 = + "\u000e\u0000\u0000\u1255\u1256\u0007\u0014\u0000\u0000\u1256\u037e\u0001"+ + "\u0000\u0000\u0000\u1257\u1258\u0007\n\u0000\u0000\u1258\u1259\u0007\u001a"+ + "\u0000\u0000\u1259\u125a\u0007\u0018\u0000\u0000\u125a\u125b\u0007\r\u0000"+ + "\u0000\u125b\u125c\u0007\n\u0000\u0000\u125c\u125d\u0007\t\u0000\u0000"+ + "\u125d\u125e\u0007\t\u0000\u0000\u125e\u125f\u0007\u0011\u0000\u0000\u125f"+ + "\u1260\u0007\u0013\u0000\u0000\u1260\u1261\u0007\u0007\u0000\u0000\u1261"+ + "\u0380\u0001\u0000\u0000\u0000\u1262\u1263\u0007\u0017\u0000\u0000\u1263"+ + "\u1264\u0007\n\u0000\u0000\u1264\u1265\u0007\u0007\u0000\u0000\u1265\u1266"+ + "\u0007\n\u0000\u0000\u1266\u1267\u0007\r\u0000\u0000\u1267\u1268\u0007"+ + "\u0005\u0000\u0000\u1268\u1269\u0007\u0010\u0000\u0000\u1269\u126a\u0007"+ + "\n\u0000\u0000\u126a\u126b\u0007\f\u0000\u0000\u126b\u0382\u0001\u0000"+ + "\u0000\u0000\u126c\u126d\u0007\u0006\u0000\u0000\u126d\u126e\u0007\u0013"+ + "\u0000\u0000\u126e\u126f\u0007\u0017\u0000\u0000\u126f\u1270\u0007\u0017"+ + "\u0000\u0000\u1270\u1271\u0007\n\u0000\u0000\u1271\u1272\u0007\f\u0000"+ + "\u0000\u1272\u0384\u0001\u0000\u0000\u0000\u1273\u1274\u0007\t\u0000\u0000"+ + "\u1274\u1275\u0007\u0010\u0000\u0000\u1275\u1276\u0007\u0013\u0000\u0000"+ + "\u1276\u1277\u0007\r\u0000\u0000\u1277\u1278\u0007\n\u0000\u0000\u1278"+ + "\u1279\u0007\f\u0000\u0000\u1279\u0386\u0001\u0000\u0000\u0000\u127a\u127b"+ + "\u0007\u0011\u0000\u0000\u127b\u127c\u0007\u0007\u0000\u0000\u127c\u127d"+ + "\u0007\u000e\u0000\u0000\u127d\u127e\u0007\u0006\u0000\u0000\u127e\u127f"+ + "\u0007\u0016\u0000\u0000\u127f\u1280\u0007\f\u0000\u0000\u1280\u1281\u0007"+ + "\n\u0000\u0000\u1281\u0388\u0001\u0000\u0000\u0000\u1282\u1283\u0007\r"+ + "\u0000\u0000\u1283\u1284\u0007\u0013\u0000\u0000\u1284\u1285\u0007\u0016"+ + "\u0000\u0000\u1285\u1286\u0007\u0010\u0000\u0000\u1286\u1287\u0007\u0011"+ + "\u0000\u0000\u1287\u1288\u0007\u0007\u0000\u0000\u1288\u1289\u0007\n\u0000"+ + "\u0000\u1289\u038a\u0001\u0000\u0000\u0000\u128a\u128b\u0007\u0010\u0000"+ + "\u0000\u128b\u128c\u0007\r\u0000\u0000\u128c\u128d\u0007\u0005\u0000\u0000"+ + "\u128d\u128e\u0007\u0007\u0000\u0000\u128e\u128f\u0007\t\u0000\u0000\u128f"+ + "\u1290\u0007\u0019\u0000\u0000\u1290\u1291\u0007\u0013\u0000\u0000\u1291"+ + "\u1292\u0007\r\u0000\u0000\u1292\u1293\u0007\u000f\u0000\u0000\u1293\u038c"+ + "\u0001\u0000\u0000\u0000\u1294\u1295\u0007\u0011\u0000\u0000\u1295\u1296"+ + "\u0007\u000f\u0000\u0000\u1296\u1297\u0007\u0018\u0000\u0000\u1297\u1298"+ + "\u0007\u0013\u0000\u0000\u1298\u1299\u0007\r\u0000\u0000\u1299\u129a\u0007"+ + "\u0010\u0000\u0000\u129a\u038e\u0001\u0000\u0000\u0000\u129b\u129c\u0007"+ + "\u0018\u0000\u0000\u129c\u129d\u0007\u0013\u0000\u0000\u129d\u129e\u0007"+ + "\u0006\u0000\u0000\u129e\u129f\u0007\u0011\u0000\u0000\u129f\u12a0\u0007"+ + "\u000e\u0000\u0000\u12a0\u12a1\u0007\b\u0000\u0000\u12a1\u0390\u0001\u0000"+ + "\u0000\u0000\u12a2\u12a3\u0007\u000f\u0000\u0000\u12a3\u12a4\u0007\n\u0000"+ + "\u0000\u12a4\u12a5\u0007\u0010\u0000\u0000\u12a5\u12a6\u0007\u0014\u0000"+ + "\u0000\u12a6\u12a7\u0007\u0013\u0000\u0000\u12a7\u12a8\u0007\f\u0000\u0000"+ + "\u12a8\u0392\u0001\u0000\u0000\u0000\u12a9\u12aa\u0007\r\u0000\u0000\u12aa"+ + "\u12ab\u0007\n\u0000\u0000\u12ab\u12ac\u0007\u0019\u0000\u0000\u12ac\u12ad"+ + "\u0007\n\u0000\u0000\u12ad\u12ae\u0007\r\u0000\u0000\u12ae\u12af\u0007"+ + "\n\u0000\u0000\u12af\u12b0\u0007\u0007\u0000\u0000\u12b0\u12b1\u0007\u000e"+ + "\u0000\u0000\u12b1\u12b2\u0007\u0011\u0000\u0000\u12b2\u12b3\u0007\u0007"+ + "\u0000\u0000\u12b3\u12b4\u0007\u0017\u0000\u0000\u12b4\u0394\u0001\u0000"+ + "\u0000\u0000\u12b5\u12b6\u0007\u0007\u0000\u0000\u12b6\u12b7\u0007\n\u0000"+ + "\u0000\u12b7\u12b8\u0007\u001c\u0000\u0000\u12b8\u0396\u0001\u0000\u0000"+ + "\u0000\u12b9\u12ba\u0007\u0013\u0000\u0000\u12ba\u12bb\u0007\u0006\u0000"+ + "\u0000\u12bb\u12bc\u0007\f\u0000\u0000\u12bc\u0398\u0001\u0000\u0000\u0000"+ + "\u12bd\u12be\u0007\u001b\u0000\u0000\u12be\u12bf\u0007\u0005\u0000\u0000"+ + "\u12bf\u12c0\u0007\u0006\u0000\u0000\u12c0\u12c1\u0007\u0016\u0000\u0000"+ + "\u12c1\u12c2\u0007\n\u0000\u0000\u12c2\u039a\u0001\u0000\u0000\u0000\u12c3"+ + "\u12c4\u0007\t\u0000\u0000\u12c4\u12c5\u0007\u0016\u0000\u0000\u12c5\u12c6"+ + "\u0007\u0012\u0000\u0000\u12c6\u12c7\u0007\t\u0000\u0000\u12c7\u12c8\u0007"+ + "\u000e\u0000\u0000\u12c8\u12c9\u0007\r\u0000\u0000\u12c9\u12ca\u0007\u0011"+ + "\u0000\u0000\u12ca\u12cb\u0007\u0018\u0000\u0000\u12cb\u12cc\u0007\u0010"+ + "\u0000\u0000\u12cc\u12cd\u0007\u0011\u0000\u0000\u12cd\u12ce\u0007\u0013"+ + "\u0000\u0000\u12ce\u12cf\u0007\u0007\u0000\u0000\u12cf\u039c\u0001\u0000"+ + "\u0000\u0000\u12d0\u12d1\u0007\u0018\u0000\u0000\u12d1\u12d2\u0007\u0016"+ + "\u0000\u0000\u12d2\u12d3\u0007\u0012\u0000\u0000\u12d3\u12d4\u0007\u0006"+ + "\u0000\u0000\u12d4\u12d5\u0007\u0011\u0000\u0000\u12d5\u12d6\u0007\u000e"+ + "\u0000\u0000\u12d6\u12d7\u0007\u0005\u0000\u0000\u12d7\u12d8\u0007\u0010"+ + "\u0000\u0000\u12d8\u12d9\u0007\u0011\u0000\u0000\u12d9\u12da\u0007\u0013"+ + "\u0000\u0000\u12da\u12db\u0007\u0007\u0000\u0000\u12db\u039e\u0001\u0000"+ + "\u0000\u0000\u12dc\u12dd\u0007\u0013\u0000\u0000\u12dd\u12de\u0007\u0016"+ + "\u0000\u0000\u12de\u12df\u0007\u0010\u0000\u0000\u12df\u03a0\u0001\u0000"+ + "\u0000\u0000\u12e0\u12e1\u0007\n\u0000\u0000\u12e1\u12e2\u0007\u0007\u0000"+ + "\u0000\u12e2\u12e3\u0007\f\u0000\u0000\u12e3\u03a2\u0001\u0000\u0000\u0000"+ + "\u12e4\u12e5\u0007\r\u0000\u0000\u12e5\u12e6\u0007\u0013\u0000\u0000\u12e6"+ + "\u12e7\u0007\u0016\u0000\u0000\u12e7\u12e8\u0007\u0010\u0000\u0000\u12e8"+ + "\u12e9\u0007\u0011\u0000\u0000\u12e9\u12ea\u0007\u0007\u0000\u0000\u12ea"+ + "\u12eb\u0007\n\u0000\u0000\u12eb\u12ec\u0007\t\u0000\u0000\u12ec\u03a4"+ + "\u0001\u0000\u0000\u0000\u12ed\u12ee\u0007\t\u0000\u0000\u12ee\u12ef\u0007"+ + "\u000e\u0000\u0000\u12ef\u12f0\u0007\u0014\u0000\u0000\u12f0\u12f1\u0007"+ + "\n\u0000\u0000\u12f1\u12f2\u0007\u000f\u0000\u0000\u12f2\u12f3\u0007\u0005"+ + "\u0000\u0000\u12f3\u12f4\u0007\t\u0000\u0000\u12f4\u03a6\u0001\u0000\u0000"+ + "\u0000\u12f5\u12f6\u0007\u0018\u0000\u0000\u12f6\u12f7\u0007\r\u0000\u0000"+ + "\u12f7\u12f8\u0007\u0013\u0000\u0000\u12f8\u12f9\u0007\u000e\u0000\u0000"+ + "\u12f9\u12fa\u0007\n\u0000\u0000\u12fa\u12fb\u0007\f\u0000\u0000\u12fb"+ + "\u12fc\u0007\u0016\u0000\u0000\u12fc\u12fd\u0007\r\u0000\u0000\u12fd\u12fe"+ + "\u0007\n\u0000\u0000\u12fe\u12ff\u0007\t\u0000\u0000\u12ff\u03a8\u0001"+ + "\u0000\u0000\u0000\u1300\u1301\u0007\u0011\u0000\u0000\u1301\u1302\u0007"+ + "\u0007\u0000\u0000\u1302\u1303\u0007\u0018\u0000\u0000\u1303\u1304\u0007"+ + "\u0016\u0000\u0000\u1304\u1305\u0007\u0010\u0000\u0000\u1305\u03aa\u0001"+ + "\u0000\u0000\u0000\u1306\u1307\u0007\t\u0000\u0000\u1307\u1308\u0007\u0016"+ + "\u0000\u0000\u1308\u1309\u0007\u0018\u0000\u0000\u1309\u130a\u0007\u0018"+ + "\u0000\u0000\u130a\u130b\u0007\u0013\u0000\u0000\u130b\u130c\u0007\r\u0000"+ + "\u0000\u130c\u130d\u0007\u0010\u0000\u0000\u130d\u03ac\u0001\u0000\u0000"+ + "\u0000\u130e\u130f\u0007\u0018\u0000\u0000\u130f\u1310\u0007\u0005\u0000"+ + "\u0000\u1310\u1311\u0007\r\u0000\u0000\u1311\u1312\u0007\u0005\u0000\u0000"+ + "\u1312\u1313\u0007\u0006\u0000\u0000\u1313\u1314\u0007\u0006\u0000\u0000"+ + "\u1314\u1315\u0007\n\u0000\u0000\u1315\u1316\u0007\u0006\u0000\u0000\u1316"+ + "\u03ae\u0001\u0000\u0000\u0000\u1317\u1318\u0007\t\u0000\u0000\u1318\u1319"+ + "\u0007\u001d\u0000\u0000\u1319\u131a\u0007\u0006\u0000\u0000\u131a\u03b0"+ + "\u0001\u0000\u0000\u0000\u131b\u131c\u0007\f\u0000\u0000\u131c\u131d\u0007"+ + "\n\u0000\u0000\u131d\u131e\u0007\u0018\u0000\u0000\u131e\u131f\u0007\n"+ + "\u0000\u0000\u131f\u1320\u0007\u0007\u0000\u0000\u1320\u1321\u0007\f\u0000"+ + "\u0000\u1321\u1322\u0007\t\u0000\u0000\u1322\u03b2\u0001\u0000\u0000\u0000"+ + "\u1323\u1324\u0007\u0013\u0000\u0000\u1324\u1325\u0007\u001b\u0000\u0000"+ + "\u1325\u1326\u0007\n\u0000\u0000\u1326\u1327\u0007\r\u0000\u0000\u1327"+ + "\u1328\u0007\r\u0000\u0000\u1328\u1329\u0007\u0011\u0000\u0000\u1329\u132a"+ + "\u0007\f\u0000\u0000\u132a\u132b\u0007\u0011\u0000\u0000\u132b\u132c\u0007"+ + "\u0007\u0000\u0000\u132c\u132d\u0007\u0017\u0000\u0000\u132d\u03b4\u0001"+ + "\u0000\u0000\u0000\u132e\u132f\u0007\u000e\u0000\u0000\u132f\u1330\u0007"+ + "\u0013\u0000\u0000\u1330\u1331\u0007\u0007\u0000\u0000\u1331\u1332\u0007"+ + "\u0019\u0000\u0000\u1332\u1333\u0007\u0006\u0000\u0000\u1333\u1334\u0007"+ + "\u0011\u0000\u0000\u1334\u1335\u0007\u000e\u0000\u0000\u1335\u1336\u0007"+ + "\u0010\u0000\u0000\u1336\u03b6\u0001\u0000\u0000\u0000\u1337\u1338\u0007"+ + "\t\u0000\u0000\u1338\u1339\u0007\u0015\u0000\u0000\u1339\u133a\u0007\u0011"+ + "\u0000\u0000\u133a\u133b\u0007\u0018\u0000\u0000\u133b\u03b8\u0001\u0000"+ + "\u0000\u0000\u133c\u133d\u0007\u0006\u0000\u0000\u133d\u133e\u0007\u0013"+ + "\u0000\u0000\u133e\u133f\u0007\u000e\u0000\u0000\u133f\u1340\u0007\u0015"+ + "\u0000\u0000\u1340\u1341\u0007\n\u0000\u0000\u1341\u1342\u0007\f\u0000"+ + "\u0000\u1342\u03ba\u0001\u0000\u0000\u0000\u1343\u1344\u0007\u0010\u0000"+ + "\u0000\u1344\u1345\u0007\u0011\u0000\u0000\u1345\u1346\u0007\n\u0000\u0000"+ + "\u1346\u1347\u0007\t\u0000\u0000\u1347\u03bc\u0001\u0000\u0000\u0000\u1348"+ + "\u1349\u0007\r\u0000\u0000\u1349\u134a\u0007\u0013\u0000\u0000\u134a\u134b"+ + "\u0007\u0006\u0000\u0000\u134b\u134c\u0007\u0006\u0000\u0000\u134c\u134d"+ + "\u0007\u0016\u0000\u0000\u134d\u134e\u0007\u0018\u0000\u0000\u134e\u03be"+ + "\u0001\u0000\u0000\u0000\u134f\u1350\u0007\u000e\u0000\u0000\u1350\u1351"+ + "\u0007\u0016\u0000\u0000\u1351\u1352\u0007\u0012\u0000\u0000\u1352\u1353"+ + "\u0007\n\u0000\u0000\u1353\u03c0\u0001\u0000\u0000\u0000\u1354\u1355\u0007"+ + "\u0017\u0000\u0000\u1355\u1356\u0007\r\u0000\u0000\u1356\u1357\u0007\u0013"+ + "\u0000\u0000\u1357\u1358\u0007\u0016\u0000\u0000\u1358\u1359\u0007\u0018"+ + "\u0000\u0000\u1359\u135a\u0007\u0011\u0000\u0000\u135a\u135b\u0007\u0007"+ + "\u0000\u0000\u135b\u135c\u0007\u0017\u0000\u0000\u135c\u03c2\u0001\u0000"+ + "\u0000\u0000\u135d\u135e\u0007\t\u0000\u0000\u135e\u135f\u0007\n\u0000"+ + "\u0000\u135f\u1360\u0007\u0010\u0000\u0000\u1360\u1361\u0007\t\u0000\u0000"+ + "\u1361\u03c4\u0001\u0000\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"+ + "\u1368\u0007\t\u0000\u0000\u1368\u1369\u0007\u0005\u0000\u0000\u1369\u136a"+ + "\u0007\u000f\u0000\u0000\u136a\u136b\u0007\u0018\u0000\u0000\u136b\u136c"+ + "\u0007\u0006\u0000\u0000\u136c\u136d\u0007\n\u0000\u0000\u136d\u03c6\u0001"+ + "\u0000\u0000\u0000\u136e\u136f\u0007\u0013\u0000\u0000\u136f\u1370\u0007"+ + "\r\u0000\u0000\u1370\u1371\u0007\f\u0000\u0000\u1371\u1372\u0007\u0011"+ + "\u0000\u0000\u1372\u1373\u0007\u0007\u0000\u0000\u1373\u1374\u0007\u0005"+ + "\u0000\u0000\u1374\u1375\u0007\u0006\u0000\u0000\u1375\u1376\u0007\u0011"+ + "\u0000\u0000\u1376\u1377\u0007\u0010\u0000\u0000\u1377\u1378\u0007\b\u0000"+ + "\u0000\u1378\u03c8\u0001\u0000\u0000\u0000\u1379\u137a\u0007\u001a\u0000"+ + "\u0000\u137a\u137b\u0007\u000f\u0000\u0000\u137b\u137c\u0007\u0006\u0000"+ + "\u0000\u137c\u137d\u0007\u0010\u0000\u0000\u137d\u137e\u0007\u0005\u0000"+ + "\u0000\u137e\u137f\u0007\u0012\u0000\u0000\u137f\u1380\u0007\u0006\u0000"+ + "\u0000\u1380\u1381\u0007\n\u0000\u0000\u1381\u03ca\u0001\u0000\u0000\u0000"+ + "\u1382\u1383\u0007\u000e\u0000\u0000\u1383\u1384\u0007\u0013\u0000\u0000"+ + "\u1384\u1385\u0007\u0006\u0000\u0000\u1385\u1386\u0007\u0016\u0000\u0000"+ + "\u1386\u1387\u0007\u000f\u0000\u0000\u1387\u1388\u0007\u0007\u0000\u0000"+ + "\u1388\u1389\u0007\t\u0000\u0000\u1389\u03cc\u0001\u0000\u0000\u0000\u138a"+ + "\u138b\u0007\u001a\u0000\u0000\u138b\u138c\u0007\u000f\u0000\u0000\u138c"+ + "\u138d\u0007\u0006\u0000\u0000\u138d\u138e\u0007\u0007\u0000\u0000\u138e"+ + "\u138f\u0007\u0005\u0000\u0000\u138f\u1390\u0007\u000f\u0000\u0000\u1390"+ + "\u1391\u0007\n\u0000\u0000\u1391\u1392\u0007\t\u0000\u0000\u1392\u1393"+ + "\u0007\u0018\u0000\u0000\u1393\u1394\u0007\u0005\u0000\u0000\u1394\u1395"+ + "\u0007\u000e\u0000\u0000\u1395\u1396\u0007\n\u0000\u0000\u1396\u1397\u0007"+ + "\t\u0000\u0000\u1397\u03ce\u0001\u0000\u0000\u0000\u1398\u1399\u0007\r"+ + "\u0000\u0000\u1399\u139a\u0007\u0013\u0000\u0000\u139a\u139b\u0007\u001c"+ + "\u0000\u0000\u139b\u139c\u0007\u0010\u0000\u0000\u139c\u139d\u0007\b\u0000"+ + "\u0000\u139d\u139e\u0007\u0018\u0000\u0000\u139e\u139f\u0007\n\u0000\u0000"+ + "\u139f\u03d0\u0001\u0000\u0000\u0000\u13a0\u13a1\u0007\u0007\u0000\u0000"+ + "\u13a1\u13a2\u0007\u0013\u0000\u0000\u13a2\u13a3\u0007\r\u0000\u0000\u13a3"+ + "\u13a4\u0007\u000f\u0000\u0000\u13a4\u13a5\u0007\u0005\u0000\u0000\u13a5"+ + "\u13a6\u0007\u0006\u0000\u0000\u13a6\u13a7\u0007\u0011\u0000\u0000\u13a7"+ + "\u13a8\u0007\u000b\u0000\u0000\u13a8\u13a9\u0007\n\u0000\u0000\u13a9\u13aa"+ + "\u0007\f\u0000\u0000\u13aa\u03d2\u0001\u0000\u0000\u0000\u13ab\u13ac\u0007"+ + "\u001c\u0000\u0000\u13ac\u13ad\u0007\u0011\u0000\u0000\u13ad\u13ae\u0007"+ + "\u0010\u0000\u0000\u13ae\u13af\u0007\u0014\u0000\u0000\u13af\u13b0\u0007"+ + "\u0011\u0000\u0000\u13b0\u13b1\u0007\u0007\u0000\u0000\u13b1\u03d4\u0001"+ + "\u0000\u0000\u0000\u13b2\u13b3\u0007\u0019\u0000\u0000\u13b3\u13b4\u0007"+ + "\u0011\u0000\u0000\u13b4\u13b5\u0007\u0006\u0000\u0000\u13b5\u13b6\u0007"+ + "\u0010\u0000\u0000\u13b6\u13b7\u0007\n\u0000\u0000\u13b7\u13b8\u0007\r"+ + "\u0000\u0000\u13b8\u03d6\u0001\u0000\u0000\u0000\u13b9\u13ba\u0007\u0017"+ + "\u0000\u0000\u13ba\u13bb\u0007\r\u0000\u0000\u13bb\u13bc\u0007\u0013\u0000"+ + "\u0000\u13bc\u13bd\u0007\u0016\u0000\u0000\u13bd\u13be\u0007\u0018\u0000"+ + "\u0000\u13be\u13bf\u0007\t\u0000\u0000\u13bf\u03d8\u0001\u0000\u0000\u0000"+ + "\u13c0\u13c1\u0007\u0013\u0000\u0000\u13c1\u13c2\u0007\u0010\u0000\u0000"+ + "\u13c2\u13c3\u0007\u0014\u0000\u0000\u13c3\u13c4\u0007\n\u0000\u0000\u13c4"+ + "\u13c5\u0007\r\u0000\u0000\u13c5\u13c6\u0007\t\u0000\u0000\u13c6\u03da"+ + "\u0001\u0000\u0000\u0000\u13c7\u13c8\u0007\u0007\u0000\u0000\u13c8\u13c9"+ + "\u0007\u0019\u0000\u0000\u13c9\u13ca\u0007\u000e\u0000\u0000\u13ca\u03dc"+ + "\u0001\u0000\u0000\u0000\u13cb\u13cc\u0007\u0007\u0000\u0000\u13cc\u13cd"+ + "\u0007\u0019\u0000\u0000\u13cd\u13ce\u0007\f\u0000\u0000\u13ce\u03de\u0001"+ + "\u0000\u0000\u0000\u13cf\u13d0\u0007\u0007\u0000\u0000\u13d0\u13d1\u0007"+ + "\u0019\u0000\u0000\u13d1\u13d2\u0007\u0015\u0000\u0000\u13d2\u13d3\u0007"+ + "\u000e\u0000\u0000\u13d3\u03e0\u0001\u0000\u0000\u0000\u13d4\u13d5\u0007"+ + "\u0007\u0000\u0000\u13d5\u13d6\u0007\u0019\u0000\u0000\u13d6\u13d7\u0007"+ + "\u0015\u0000\u0000\u13d7\u13d8\u0007\f\u0000\u0000\u13d8\u03e2\u0001\u0000"+ + "\u0000\u0000\u13d9\u13da\u0007\u0016\u0000\u0000\u13da\u13db\u0007\n\u0000"+ + "\u0000\u13db\u13dc\u0007\t\u0000\u0000\u13dc\u13dd\u0007\u000e\u0000\u0000"+ + "\u13dd\u13de\u0007\u0005\u0000\u0000\u13de\u13df\u0007\u0018\u0000\u0000"+ + "\u13df\u13e0\u0007\n\u0000\u0000\u13e0\u03e4\u0001\u0000\u0000\u0000\u13e1"+ + "\u13e2\u0007\u001b\u0000\u0000\u13e2\u13e3\u0007\u0011\u0000\u0000\u13e3"+ + "\u13e4\u0007\n\u0000\u0000\u13e4\u13e5\u0007\u001c\u0000\u0000\u13e5\u13e6"+ + "\u0007\t\u0000\u0000\u13e6\u03e6\u0001\u0000\u0000\u0000\u13e7\u13e8\u0007"+ + "\u0007\u0000\u0000\u13e8\u13e9\u0007\u0013\u0000\u0000\u13e9\u13ea\u0007"+ + "\r\u0000\u0000\u13ea\u13eb\u0007\u000f\u0000\u0000\u13eb\u13ec\u0007\u0005"+ + "\u0000\u0000\u13ec\u13ed\u0007\u0006\u0000\u0000\u13ed\u13ee\u0007\u0011"+ + "\u0000\u0000\u13ee\u13ef\u0007\u000b\u0000\u0000\u13ef\u13f0\u0007\n\u0000"+ + "\u0000\u13f0\u03e8\u0001\u0000\u0000\u0000\u13f1\u13f2\u0007\f\u0000\u0000"+ + "\u13f2\u13f3\u0007\u0016\u0000\u0000\u13f3\u13f4\u0007\u000f\u0000\u0000"+ + "\u13f4\u13f5\u0007\u0018\u0000\u0000\u13f5\u03ea\u0001\u0000\u0000\u0000"+ + "\u13f6\u13f7\u0007\u0018\u0000\u0000\u13f7\u13f8\u0007\r\u0000\u0000\u13f8"+ + "\u13f9\u0007\u0011\u0000\u0000\u13f9\u13fa\u0007\u0007\u0000\u0000\u13fa"+ + "\u13fb\u0007\u0010\u0000\u0000\u13fb\u13fc\u0005_\u0000\u0000\u13fc\u13fd"+ + "\u0007\t\u0000\u0000\u13fd\u13fe\u0007\u0010\u0000\u0000\u13fe\u13ff\u0007"+ + "\r\u0000\u0000\u13ff\u1400\u0007\u0011\u0000\u0000\u1400\u1401\u0007\u000e"+ + "\u0000\u0000\u1401\u1402\u0007\u0010\u0000\u0000\u1402\u1403\u0005_\u0000"+ + "\u0000\u1403\u1404\u0007\u0018\u0000\u0000\u1404\u1405\u0007\u0005\u0000"+ + "\u0000\u1405\u1406\u0007\r\u0000\u0000\u1406\u1407\u0007\u0005\u0000\u0000"+ + "\u1407\u1408\u0007\u000f\u0000\u0000\u1408\u1409\u0007\t\u0000\u0000\u1409"+ + "\u03ec\u0001\u0000\u0000\u0000\u140a\u140b\u0007\u001b\u0000\u0000\u140b"+ + "\u140c\u0007\u0005\u0000\u0000\u140c\u140d\u0007\r\u0000\u0000\u140d\u140e"+ + "\u0007\u0011\u0000\u0000\u140e\u140f\u0007\u0005\u0000\u0000\u140f\u1410"+ + "\u0007\u0012\u0000\u0000\u1410\u1411\u0007\u0006\u0000\u0000\u1411\u1412"+ + "\u0007\n\u0000\u0000\u1412\u1413\u0005_\u0000\u0000\u1413\u1414\u0007"+ + "\u000e\u0000\u0000\u1414\u1415\u0007\u0013\u0000\u0000\u1415\u1416\u0007"+ + "\u0007\u0000\u0000\u1416\u1417\u0007\u0019\u0000\u0000\u1417\u1418\u0007"+ + "\u0006\u0000\u0000\u1418\u1419\u0007\u0011\u0000\u0000\u1419\u141a\u0007"+ + "\u000e\u0000\u0000\u141a\u141b\u0007\u0010\u0000\u0000\u141b\u03ee\u0001"+ + "\u0000\u0000\u0000\u141c\u141d\u0007\n\u0000\u0000\u141d\u141e\u0007\r"+ + "\u0000\u0000\u141e\u141f\u0007\r\u0000\u0000\u141f\u1420\u0007\u0013\u0000"+ + "\u0000\u1420\u1421\u0007\r\u0000\u0000\u1421\u03f0\u0001\u0000\u0000\u0000"+ + "\u1422\u1423\u0007\u0016\u0000\u0000\u1423\u1424\u0007\t\u0000\u0000\u1424"+ + "\u1425\u0007\n\u0000\u0000\u1425\u1426\u0005_\u0000\u0000\u1426\u1427"+ + "\u0007\u001b\u0000\u0000\u1427\u1428\u0007\u0005\u0000\u0000\u1428\u1429"+ + "\u0007\r\u0000\u0000\u1429\u142a\u0007\u0011\u0000\u0000\u142a\u142b\u0007"+ + "\u0005\u0000\u0000\u142b\u142c\u0007\u0012\u0000\u0000\u142c\u142d\u0007"+ + "\u0006\u0000\u0000\u142d\u142e\u0007\n\u0000\u0000\u142e\u03f2\u0001\u0000"+ + "\u0000\u0000\u142f\u1430\u0007\u0016\u0000\u0000\u1430\u1431\u0007\t\u0000"+ + "\u0000\u1431\u1432\u0007\n\u0000\u0000\u1432\u1433\u0005_\u0000\u0000"+ + "\u1433\u1434\u0007\u000e\u0000\u0000\u1434\u1435\u0007\u0013\u0000\u0000"+ + "\u1435\u1436\u0007\u0006\u0000\u0000\u1436\u1437\u0007\u0016\u0000\u0000"+ + "\u1437\u1438\u0007\u000f\u0000\u0000\u1438\u1439\u0007\u0007\u0000\u0000"+ + "\u1439\u03f4\u0001\u0000\u0000\u0000\u143a\u143b\u0007\u0005\u0000\u0000"+ + "\u143b\u143c\u0007\u0006\u0000\u0000\u143c\u143d\u0007\u0011\u0000\u0000"+ + "\u143d\u143e\u0007\u0005\u0000\u0000\u143e\u143f\u0007\t\u0000\u0000\u143f"+ + "\u03f6\u0001\u0000\u0000\u0000\u1440\u1441\u0007\u000e\u0000\u0000\u1441"+ + "\u1442\u0007\u0013\u0000\u0000\u1442\u1443\u0007\u0007\u0000\u0000\u1443"+ + "\u1444\u0007\t\u0000\u0000\u1444\u1445\u0007\u0010\u0000\u0000\u1445\u1446"+ + "\u0007\u0005\u0000\u0000\u1446\u1447\u0007\u0007\u0000\u0000\u1447\u1448"+ + "\u0007\u0010\u0000\u0000\u1448\u03f8\u0001\u0000\u0000\u0000\u1449\u144a"+ + "\u0007\u0018\u0000\u0000\u144a\u144b\u0007\n\u0000\u0000\u144b\u144c\u0007"+ + "\r\u0000\u0000\u144c\u144d\u0007\u0019\u0000\u0000\u144d\u144e\u0007\u0013"+ + "\u0000\u0000\u144e\u144f\u0007\r\u0000\u0000\u144f\u1450\u0007\u000f\u0000"+ + "\u0000\u1450\u03fa\u0001\u0000\u0000\u0000\u1451\u1452\u0007\u0017\u0000"+ + "\u0000\u1452\u1453\u0007\n\u0000\u0000\u1453\u1454\u0007\u0010\u0000\u0000"+ + "\u1454\u03fc\u0001\u0000\u0000\u0000\u1455\u1456\u0007\f\u0000\u0000\u1456"+ + "\u1457\u0007\u0011\u0000\u0000\u1457\u1458\u0007\u0005\u0000\u0000\u1458"+ + "\u1459\u0007\u0017\u0000\u0000\u1459\u145a\u0007\u0007\u0000\u0000\u145a"+ + "\u145b\u0007\u0013\u0000\u0000\u145b\u145c\u0007\t\u0000\u0000\u145c\u145d"+ + "\u0007\u0010\u0000\u0000\u145d\u145e\u0007\u0011\u0000\u0000\u145e\u145f"+ + "\u0007\u000e\u0000\u0000\u145f\u1460\u0007\t\u0000\u0000\u1460\u03fe\u0001"+ + "\u0000\u0000\u0000\u1461\u1462\u0007\t\u0000\u0000\u1462\u1463\u0007\u0010"+ + "\u0000\u0000\u1463\u1464\u0007\u0005\u0000\u0000\u1464\u1465\u0007\u000e"+ + "\u0000\u0000\u1465\u1466\u0007\u0015\u0000\u0000\u1466\u1467\u0007\n\u0000"+ + "\u0000\u1467\u1468\u0007\f\u0000\u0000\u1468\u0400\u0001\u0000\u0000\u0000"+ + "\u1469\u146a\u0007\n\u0000\u0000\u146a\u146b\u0007\u0006\u0000\u0000\u146b"+ + "\u146c\u0007\t\u0000\u0000\u146c\u146d\u0007\u0011\u0000\u0000\u146d\u146e"+ + "\u0007\u0019\u0000\u0000\u146e\u0402\u0001\u0000\u0000\u0000\u146f\u1470"+ + "\u0007\u001c\u0000\u0000\u1470\u1471\u0007\u0014\u0000\u0000\u1471\u1472"+ + "\u0007\u0011\u0000\u0000\u1472\u1473\u0007\u0006\u0000\u0000\u1473\u1474"+ + "\u0007\n\u0000\u0000\u1474\u0404\u0001\u0000\u0000\u0000\u1475\u1476\u0007"+ + "\r\u0000\u0000\u1476\u1477\u0007\n\u0000\u0000\u1477\u1478\u0007\u001b"+ + "\u0000\u0000\u1478\u1479\u0007\n\u0000\u0000\u1479\u147a\u0007\r\u0000"+ + "\u0000\u147a\u147b\u0007\t\u0000\u0000\u147b\u147c\u0007\n\u0000\u0000"+ + "\u147c\u0406\u0001\u0000\u0000\u0000\u147d\u147e\u0007\u0019\u0000\u0000"+ + "\u147e\u147f\u0007\u0013\u0000\u0000\u147f\u1480\u0007\r\u0000\u0000\u1480"+ + "\u1481\u0007\n\u0000\u0000\u1481\u1482\u0007\u0005\u0000\u0000\u1482\u1483"+ + "\u0007\u000e\u0000\u0000\u1483\u1484\u0007\u0014\u0000\u0000\u1484\u0408"+ + "\u0001\u0000\u0000\u0000\u1485\u1486\u0007\t\u0000\u0000\u1486\u1487\u0007"+ + "\u0006\u0000\u0000\u1487\u1488\u0007\u0011\u0000\u0000\u1488\u1489\u0007"+ + "\u000e\u0000\u0000\u1489\u148a\u0007\n\u0000\u0000\u148a\u040a\u0001\u0000"+ + "\u0000\u0000\u148b\u148c\u0007\n\u0000\u0000\u148c\u148d\u0007\u001a\u0000"+ + "\u0000\u148d\u148e\u0007\u0011\u0000\u0000\u148e\u148f\u0007\u0010\u0000"+ + "\u0000\u148f\u040c\u0001\u0000\u0000\u0000\u1490\u1491\u0007\r\u0000\u0000"+ + "\u1491\u1492\u0007\n\u0000\u0000\u1492\u1493\u0007\u0010\u0000\u0000\u1493"+ + "\u1494\u0007\u0016\u0000\u0000\u1494\u1495\u0007\r\u0000\u0000\u1495\u1496"+ + "\u0007\u0007\u0000\u0000\u1496\u040e\u0001\u0000\u0000\u0000\u1497\u1498"+ + "\u0007\u001d\u0000\u0000\u1498\u1499\u0007\u0016\u0000\u0000\u1499\u149a"+ + "\u0007\n\u0000\u0000\u149a\u149b\u0007\r\u0000\u0000\u149b\u149c\u0007"+ + "\b\u0000\u0000\u149c\u0410\u0001\u0000\u0000\u0000\u149d\u149e\u0007\r"+ + "\u0000\u0000\u149e\u149f\u0007\u0005\u0000\u0000\u149f\u14a0\u0007\u0011"+ + "\u0000\u0000\u14a0\u14a1\u0007\t\u0000\u0000\u14a1\u14a2\u0007\n\u0000"+ + "\u0000\u14a2\u0412\u0001\u0000\u0000\u0000\u14a3\u14a4\u0007\t\u0000\u0000"+ + "\u14a4\u14a5\u0007\u001d\u0000\u0000\u14a5\u14a6\u0007\u0006\u0000\u0000"+ + "\u14a6\u14a7\u0007\t\u0000\u0000\u14a7\u14a8\u0007\u0010\u0000\u0000\u14a8"+ + "\u14a9\u0007\u0005\u0000\u0000\u14a9\u14aa\u0007\u0010\u0000\u0000\u14aa"+ + "\u14ab\u0007\n\u0000\u0000\u14ab\u0414\u0001\u0000\u0000\u0000\u14ac\u14ad"+ + "\u0007\f\u0000\u0000\u14ad\u14ae\u0007\n\u0000\u0000\u14ae\u14af\u0007"+ + "\u0012\u0000\u0000\u14af\u14b0\u0007\u0016\u0000\u0000\u14b0\u14b1\u0007"+ + "\u0017\u0000\u0000\u14b1\u0416\u0001\u0000\u0000\u0000\u14b2\u14b3\u0007"+ + "\u0006\u0000\u0000\u14b3\u14b4\u0007\u0013\u0000\u0000\u14b4\u14b5\u0007"+ + "\u0017\u0000\u0000\u14b5\u0418\u0001\u0000\u0000\u0000\u14b6\u14b7\u0007"+ + "\u0011\u0000\u0000\u14b7\u14b8\u0007\u0007\u0000\u0000\u14b8\u14b9\u0007"+ + "\u0019\u0000\u0000\u14b9\u14ba\u0007\u0013\u0000\u0000\u14ba\u041a\u0001"+ + "\u0000\u0000\u0000\u14bb\u14bc\u0007\u0007\u0000\u0000\u14bc\u14bd\u0007"+ + "\u0013\u0000\u0000\u14bd\u14be\u0007\u0010\u0000\u0000\u14be\u14bf\u0007"+ + "\u0011\u0000\u0000\u14bf\u14c0\u0007\u000e\u0000\u0000\u14c0\u14c1\u0007"+ + "\n\u0000\u0000\u14c1\u041c\u0001\u0000\u0000\u0000\u14c2\u14c3\u0007\u001c"+ + "\u0000\u0000\u14c3\u14c4\u0007\u0005\u0000\u0000\u14c4\u14c5\u0007\r\u0000"+ + "\u0000\u14c5\u14c6\u0007\u0007\u0000\u0000\u14c6\u14c7\u0007\u0011\u0000"+ + "\u0000\u14c7\u14c8\u0007\u0007\u0000\u0000\u14c8\u14c9\u0007\u0017\u0000"+ + "\u0000\u14c9\u041e\u0001\u0000\u0000\u0000\u14ca\u14cb\u0007\n\u0000\u0000"+ + "\u14cb\u14cc\u0007\u001a\u0000\u0000\u14cc\u14cd\u0007\u000e\u0000\u0000"+ + "\u14cd\u14ce\u0007\n\u0000\u0000\u14ce\u14cf\u0007\u0018\u0000\u0000\u14cf"+ + "\u14d0\u0007\u0010\u0000\u0000\u14d0\u14d1\u0007\u0011\u0000\u0000\u14d1"+ + "\u14d2\u0007\u0013\u0000\u0000\u14d2\u14d3\u0007\u0007\u0000\u0000\u14d3"+ + "\u0420\u0001\u0000\u0000\u0000\u14d4\u14d5\u0007\u0005\u0000\u0000\u14d5"+ + "\u14d6\u0007\t\u0000\u0000\u14d6\u14d7\u0007\t\u0000\u0000\u14d7\u14d8"+ + "\u0007\n\u0000\u0000\u14d8\u14d9\u0007\r\u0000\u0000\u14d9\u14da\u0007"+ + "\u0010\u0000\u0000\u14da\u0422\u0001\u0000\u0000\u0000\u14db\u14dc\u0007"+ + "\u0006\u0000\u0000\u14dc\u14dd\u0007\u0013\u0000\u0000\u14dd\u14de\u0007"+ + "\u0013\u0000\u0000\u14de\u14df\u0007\u0018\u0000\u0000\u14df\u0424\u0001"+ + "\u0000\u0000\u0000\u14e0\u14e1\u0007\u0013\u0000\u0000\u14e1\u14e2\u0007"+ + "\u0018\u0000\u0000\u14e2\u14e3\u0007\n\u0000\u0000\u14e3\u14e4\u0007\u0007"+ + "\u0000\u0000\u14e4\u0426\u0001\u0000\u0000\u0000\u14e5\u14e6\u0007\u0005"+ + "\u0000\u0000\u14e6\u14e7\u0007\u0012\u0000\u0000\u14e7\u14e8\u0007\t\u0000"+ + "\u0000\u14e8\u0428\u0001\u0000\u0000\u0000\u14e9\u14ea\u0007\u000e\u0000"+ + "\u0000\u14ea\u14eb\u0007\u0012\u0000\u0000\u14eb\u14ec\u0007\r\u0000\u0000"+ + "\u14ec\u14ed\u0007\u0010\u0000\u0000\u14ed\u042a\u0001\u0000\u0000\u0000"+ + "\u14ee\u14ef\u0007\u000e\u0000\u0000\u14ef\u14f0\u0007\n\u0000\u0000\u14f0"+ + "\u14f1\u0007\u0011\u0000\u0000\u14f1\u14f2\u0007\u0006\u0000\u0000\u14f2"+ + "\u042c\u0001\u0000\u0000\u0000\u14f3\u14f4\u0007\u000e\u0000\u0000\u14f4"+ + "\u14f5\u0007\n\u0000\u0000\u14f5\u14f6\u0007\u0011\u0000\u0000\u14f6\u14f7"+ + "\u0007\u0006\u0000\u0000\u14f7\u14f8\u0007\u0011\u0000\u0000\u14f8\u14f9"+ + "\u0007\u0007\u0000\u0000\u14f9\u14fa\u0007\u0017\u0000\u0000\u14fa\u042e"+ + "\u0001\u0000\u0000\u0000\u14fb\u14fc\u0007\f\u0000\u0000\u14fc\u14fd\u0007"+ + "\n\u0000\u0000\u14fd\u14fe\u0007\u0017\u0000\u0000\u14fe\u14ff\u0007\r"+ + "\u0000\u0000\u14ff\u1500\u0007\n\u0000\u0000\u1500\u1501\u0007\n\u0000"+ + "\u0000\u1501\u1502\u0007\t\u0000\u0000\u1502\u0430\u0001\u0000\u0000\u0000"+ + "\u1503\u1504\u0007\f\u0000\u0000\u1504\u1505\u0007\u0011\u0000\u0000\u1505"+ + "\u1506\u0007\u001b\u0000\u0000\u1506\u0432\u0001\u0000\u0000\u0000\u1507"+ + "\u1508\u0007\n\u0000\u0000\u1508\u1509\u0007\u001a\u0000\u0000\u1509\u150a"+ + "\u0007\u0018\u0000\u0000\u150a\u0434\u0001\u0000\u0000\u0000\u150b\u150c"+ + "\u0007\u0019\u0000\u0000\u150c\u150d\u0007\u0005\u0000\u0000\u150d\u150e"+ + "\u0007\u000e\u0000\u0000\u150e\u150f\u0007\u0010\u0000\u0000\u150f\u1510"+ + "\u0007\u0013\u0000\u0000\u1510\u1511\u0007\r\u0000\u0000\u1511\u1512\u0007"+ + "\u0011\u0000\u0000\u1512\u1513\u0007\u0005\u0000\u0000\u1513\u1514\u0007"+ + "\u0006\u0000\u0000\u1514\u0436\u0001\u0000\u0000\u0000\u1515\u1516\u0007"+ + "\u0019\u0000\u0000\u1516\u1517\u0007\u0006\u0000\u0000\u1517\u1518\u0007"+ + "\u0013\u0000\u0000\u1518\u1519\u0007\u0013\u0000\u0000\u1519\u151a\u0007"+ + "\r\u0000\u0000\u151a\u0438\u0001\u0000\u0000\u0000\u151b\u151c\u0007\u0017"+ + "\u0000\u0000\u151c\u151d\u0007\u000e\u0000\u0000\u151d\u151e\u0007\f\u0000"+ + "\u0000\u151e\u043a\u0001\u0000\u0000\u0000\u151f\u1520\u0007\u0006\u0000"+ + "\u0000\u1520\u1521\u0007\u000e\u0000\u0000\u1521\u1522\u0007\u000f\u0000"+ + "\u0000\u1522\u043c\u0001\u0000\u0000\u0000\u1523\u1524\u0007\u0006\u0000"+ + "\u0000\u1524\u1525\u0007\u0007\u0000\u0000\u1525\u043e\u0001\u0000\u0000"+ + "\u0000\u1526\u1527\u0007\u0006\u0000\u0000\u1527\u1528\u0007\u0013\u0000"+ + "\u0000\u1528\u1529\u0007\u0017\u0000\u0000\u1529\u152a\u00051\u0000\u0000"+ + "\u152a\u152b\u00050\u0000\u0000\u152b\u0440\u0001\u0000\u0000\u0000\u152c"+ + "\u152d\u0007\u000f\u0000\u0000\u152d\u152e\u0007\u0011\u0000\u0000\u152e"+ + "\u152f\u0007\u0007\u0000\u0000\u152f\u1530\u0005_\u0000\u0000\u1530\u1531"+ + "\u0007\t\u0000\u0000\u1531\u1532\u0007\u000e\u0000\u0000\u1532\u1533\u0007"+ + "\u0005\u0000\u0000\u1533\u1534\u0007\u0006\u0000\u0000\u1534\u1535\u0007"+ + "\n\u0000\u0000\u1535\u0442\u0001\u0000\u0000\u0000\u1536\u1537\u0007\u000f"+ + "\u0000\u0000\u1537\u1538\u0007\u0013\u0000\u0000\u1538\u1539\u0007\f\u0000"+ + "\u0000\u1539\u0444\u0001\u0000\u0000\u0000\u153a\u153b\u0007\u0018\u0000"+ + "\u0000\u153b\u153c\u0007\u0011\u0000\u0000\u153c\u0446\u0001\u0000\u0000"+ + "\u0000\u153d\u153e\u0007\u0018\u0000\u0000\u153e\u153f\u0007\u0013\u0000"+ + "\u0000\u153f\u1540\u0007\u001c\u0000\u0000\u1540\u1541\u0007\n\u0000\u0000"+ + "\u1541\u1542\u0007\r\u0000\u0000\u1542\u0448\u0001\u0000\u0000\u0000\u1543"+ + "\u1544\u0007\r\u0000\u0000\u1544\u1545\u0007\u0005\u0000\u0000\u1545\u1546"+ + "\u0007\f\u0000\u0000\u1546\u1547\u0007\u0011\u0000\u0000\u1547\u1548\u0007"+ + "\u0005\u0000\u0000\u1548\u1549\u0007\u0007\u0000\u0000\u1549\u154a\u0007"+ + "\t\u0000\u0000\u154a\u044a\u0001\u0000\u0000\u0000\u154b\u154c\u0007\r"+ + "\u0000\u0000\u154c\u154d\u0007\u0013\u0000\u0000\u154d\u154e\u0007\u0016"+ + "\u0000\u0000\u154e\u154f\u0007\u0007\u0000\u0000\u154f\u1550\u0007\f\u0000"+ + "\u0000\u1550\u044c\u0001\u0000\u0000\u0000\u1551\u1552\u0007\t\u0000\u0000"+ + "\u1552\u1553\u0007\u000e\u0000\u0000\u1553\u1554\u0007\u0005\u0000\u0000"+ + "\u1554\u1555\u0007\u0006\u0000\u0000\u1555\u1556\u0007\n\u0000\u0000\u1556"+ + "\u044e\u0001\u0000\u0000\u0000\u1557\u1558\u0007\t\u0000\u0000\u1558\u1559"+ + "\u0007\u0011\u0000\u0000\u1559\u155a\u0007\u0017\u0000\u0000\u155a\u155b"+ + "\u0007\u0007\u0000\u0000\u155b\u0450\u0001\u0000\u0000\u0000\u155c\u155d"+ + "\u0007\t\u0000\u0000\u155d\u155e\u0007\u001d\u0000\u0000\u155e\u155f\u0007"+ + "\r\u0000\u0000\u155f\u1560\u0007\u0010\u0000\u0000\u1560\u0452\u0001\u0000"+ + "\u0000\u0000\u1561\u1562\u0007\u0010\u0000\u0000\u1562\u1563\u0007\r\u0000"+ + "\u0000\u1563\u1564\u0007\u0011\u0000\u0000\u1564\u1565\u0007\u000f\u0000"+ + "\u0000\u1565\u1566\u0005_\u0000\u0000\u1566\u1567\u0007\t\u0000\u0000"+ + "\u1567\u1568\u0007\u000e\u0000\u0000\u1568\u1569\u0007\u0005\u0000\u0000"+ + "\u1569\u156a\u0007\u0006\u0000\u0000\u156a\u156b\u0007\n\u0000\u0000\u156b"+ + "\u0454\u0001\u0000\u0000\u0000\u156c\u156d\u0007\u0010\u0000\u0000\u156d"+ + "\u156e\u0007\r\u0000\u0000\u156e\u156f\u0007\u0016\u0000\u0000\u156f\u1570"+ + "\u0007\u0007\u0000\u0000\u1570\u1571\u0007\u000e\u0000\u0000\u1571\u0456"+ + "\u0001\u0000\u0000\u0000\u1572\u1573\u0007\u001c\u0000\u0000\u1573\u1574"+ + "\u0007\u0011\u0000\u0000\u1574\u1575\u0007\f\u0000\u0000\u1575\u1576\u0007"+ + "\u0010\u0000\u0000\u1576\u1577\u0007\u0014\u0000\u0000\u1577\u1578\u0005"+ + "_\u0000\u0000\u1578\u1579\u0007\u0012\u0000\u0000\u1579\u157a\u0007\u0016"+ + "\u0000\u0000\u157a\u157b\u0007\u000e\u0000\u0000\u157b\u157c\u0007\u0015"+ + "\u0000\u0000\u157c\u157d\u0007\n\u0000\u0000\u157d\u157e\u0007\u0010\u0000"+ + "\u0000\u157e\u0458\u0001\u0000\u0000\u0000\u157f\u1580\u0007\r\u0000\u0000"+ + "\u1580\u1581\u0007\u0005\u0000\u0000\u1581\u1582\u0007\u0007\u0000\u0000"+ + "\u1582\u1583\u0007\f\u0000\u0000\u1583\u1584\u0007\u0013\u0000\u0000\u1584"+ + "\u1585\u0007\u000f\u0000\u0000\u1585\u045a\u0001\u0000\u0000\u0000\u1586"+ + "\u1587\u0007\t\u0000\u0000\u1587\u1588\u0007\n\u0000\u0000\u1588\u1589"+ + "\u0007\u0010\u0000\u0000\u1589\u158a\u0007\t\u0000\u0000\u158a\u158b\u0007"+ + "\n\u0000\u0000\u158b\u158c\u0007\n\u0000\u0000\u158c\u158d\u0007\f\u0000"+ + "\u0000\u158d\u045c\u0001\u0000\u0000\u0000\u158e\u158f\u0007\u0005\u0000"+ + "\u0000\u158f\u1590\u0007\u000e\u0000\u0000\u1590\u1591\u0007\u0013\u0000"+ + "\u0000\u1591\u1592\u0007\t\u0000\u0000\u1592\u045e\u0001\u0000\u0000\u0000"+ + "\u1593\u1594\u0007\u0005\u0000\u0000\u1594\u1595\u0007\u000e\u0000\u0000"+ + "\u1595\u1596\u0007\u0013\u0000\u0000\u1596\u1597\u0007\t\u0000\u0000\u1597"+ + "\u1598\u0007\f\u0000\u0000\u1598\u0460\u0001\u0000\u0000\u0000\u1599\u159a"+ + "\u0007\u0005\u0000\u0000\u159a\u159b\u0007\t\u0000\u0000\u159b\u159c\u0007"+ + "\u0011\u0000\u0000\u159c\u159d\u0007\u0007\u0000\u0000\u159d\u0462\u0001"+ + "\u0000\u0000\u0000\u159e\u159f\u0007\u0005\u0000\u0000\u159f\u15a0\u0007"+ + "\t\u0000\u0000\u15a0\u15a1\u0007\u0011\u0000\u0000\u15a1\u15a2\u0007\u0007"+ + "\u0000\u0000\u15a2\u15a3\u0007\f\u0000\u0000\u15a3\u0464\u0001\u0000\u0000"+ + "\u0000\u15a4\u15a5\u0007\u0005\u0000\u0000\u15a5\u15a6\u0007\u0010\u0000"+ + "\u0000\u15a6\u15a7\u0007\u0005\u0000\u0000\u15a7\u15a8\u0007\u0007\u0000"+ + "\u0000\u15a8\u0466\u0001\u0000\u0000\u0000\u15a9\u15aa\u0007\u0005\u0000"+ + "\u0000\u15aa\u15ab\u0007\u0010\u0000\u0000\u15ab\u15ac\u0007\u0005\u0000"+ + "\u0000\u15ac\u15ad\u0007\u0007\u0000\u0000\u15ad\u15ae\u0007\f\u0000\u0000"+ + "\u15ae\u0468\u0001\u0000\u0000\u0000\u15af\u15b0\u0007\u0005\u0000\u0000"+ + "\u15b0\u15b1\u0007\u0010\u0000\u0000\u15b1\u15b2\u0007\u0005\u0000\u0000"+ + "\u15b2\u15b3\u0007\u0007\u0000\u0000\u15b3\u15b4\u00052\u0000\u0000\u15b4"+ + "\u046a\u0001\u0000\u0000\u0000\u15b5\u15b6\u0007\u0005\u0000\u0000\u15b6"+ + "\u15b7\u0007\u0010\u0000\u0000\u15b7\u15b8\u0007\u0005\u0000\u0000\u15b8"+ + "\u15b9\u0007\u0007\u0000\u0000\u15b9\u15ba\u00052\u0000\u0000\u15ba\u15bb"+ + "\u0007\f\u0000\u0000\u15bb\u046c\u0001\u0000\u0000\u0000\u15bc\u15bd\u0007"+ + "\u000e\u0000\u0000\u15bd\u15be\u0007\u0013\u0000\u0000\u15be\u15bf\u0007"+ + "\t\u0000\u0000\u15bf\u046e\u0001\u0000\u0000\u0000\u15c0\u15c1\u0007\u000e"+ + "\u0000\u0000\u15c1\u15c2\u0007\u0013\u0000\u0000\u15c2\u15c3\u0007\t\u0000"+ + "\u0000\u15c3\u15c4\u0007\f\u0000\u0000\u15c4\u0470\u0001\u0000\u0000\u0000"+ + "\u15c5\u15c6\u0007\u000e\u0000\u0000\u15c6\u15c7\u0007\u0013\u0000\u0000"+ + "\u15c7\u15c8\u0007\u0010\u0000\u0000\u15c8\u0472\u0001\u0000\u0000\u0000"+ + "\u15c9\u15ca\u0007\u000e\u0000\u0000\u15ca\u15cb\u0007\u0013\u0000\u0000"+ + "\u15cb\u15cc\u0007\u0010\u0000\u0000\u15cc\u15cd\u0007\f\u0000\u0000\u15cd"+ + "\u0474\u0001\u0000\u0000\u0000\u15ce\u15cf\u0007\t\u0000\u0000\u15cf\u15d0"+ + "\u0007\u0011\u0000\u0000\u15d0\u15d1\u0007\u0007\u0000\u0000\u15d1\u0476"+ + "\u0001\u0000\u0000\u0000\u15d2\u15d3\u0007\t\u0000\u0000\u15d3\u15d4\u0007"+ + "\u0011\u0000\u0000\u15d4\u15d5\u0007\u0007\u0000\u0000\u15d5\u15d6\u0007"+ + "\f\u0000\u0000\u15d6\u0478\u0001\u0000\u0000\u0000\u15d7\u15d8\u0007\u0010"+ + "\u0000\u0000\u15d8\u15d9\u0007\u0005\u0000\u0000\u15d9\u15da\u0007\u0007"+ + "\u0000\u0000\u15da\u047a\u0001\u0000\u0000\u0000\u15db\u15dc\u0007\u0010"+ + "\u0000\u0000\u15dc\u15dd\u0007\u0005\u0000\u0000\u15dd\u15de\u0007\u0007"+ + "\u0000\u0000\u15de\u15df\u0007\f\u0000\u0000\u15df\u047c\u0001\u0000\u0000"+ + "\u0000\u15e0\u15e1\u0007\t\u0000\u0000\u15e1\u15e2\u0007\u0011\u0000\u0000"+ + "\u15e2\u15e3\u0007\u0007\u0000\u0000\u15e3\u15e4\u0007\u0014\u0000\u0000"+ + "\u15e4\u047e\u0001\u0000\u0000\u0000\u15e5\u15e6\u0007\u000e\u0000\u0000"+ + "\u15e6\u15e7\u0007\u0013\u0000\u0000\u15e7\u15e8\u0007\t\u0000\u0000\u15e8"+ + "\u15e9\u0007\u0014\u0000\u0000\u15e9\u0480\u0001\u0000\u0000\u0000\u15ea"+ + "\u15eb\u0007\u0010\u0000\u0000\u15eb\u15ec\u0007\u0005\u0000\u0000\u15ec"+ + "\u15ed\u0007\u0007\u0000\u0000\u15ed\u15ee\u0007\u0014\u0000\u0000\u15ee"+ + "\u0482\u0001\u0000\u0000\u0000\u15ef\u15f0\u0007\u0005\u0000\u0000\u15f0"+ + "\u15f1\u0007\t\u0000\u0000\u15f1\u15f2\u0007\u0011\u0000\u0000\u15f2\u15f3"+ + "\u0007\u0007\u0000\u0000\u15f3\u15f4\u0007\u0014\u0000\u0000\u15f4\u0484"+ + "\u0001\u0000\u0000\u0000\u15f5\u15f6\u0007\u0005\u0000\u0000\u15f6\u15f7"+ + "\u0007\u000e\u0000\u0000\u15f7\u15f8\u0007\u0013\u0000\u0000\u15f8\u15f9"+ + "\u0007\t\u0000\u0000\u15f9\u15fa\u0007\u0014\u0000\u0000\u15fa\u0486\u0001"+ + "\u0000\u0000\u0000\u15fb\u15fc\u0007\u0005\u0000\u0000\u15fc\u15fd\u0007"+ + "\u0010\u0000\u0000\u15fd\u15fe\u0007\u0005\u0000\u0000\u15fe\u15ff\u0007"+ + "\u0007\u0000\u0000\u15ff\u1600\u0007\u0014\u0000\u0000\u1600\u0488\u0001"+ + "\u0000\u0000\u0000\u1601\u1602\u0007\u0012\u0000\u0000\u1602\u1603\u0007"+ + "\u0011\u0000\u0000\u1603\u1604\u0007\u0010\u0000\u0000\u1604\u1605\u0005"+ + "_\u0000\u0000\u1605\u1606\u0007\u0006\u0000\u0000\u1606\u1607\u0007\n"+ + "\u0000\u0000\u1607\u1608\u0007\u0007\u0000\u0000\u1608\u1609\u0007\u0017"+ + "\u0000\u0000\u1609\u160a\u0007\u0010\u0000\u0000\u160a\u160b\u0007\u0014"+ + "\u0000\u0000\u160b\u048a\u0001\u0000\u0000\u0000\u160c\u160d\u0007\u000e"+ + "\u0000\u0000\u160d\u160e\u0007\u0014\u0000\u0000\u160e\u160f\u0007\u0005"+ + "\u0000\u0000\u160f\u1610\u0007\r\u0000\u0000\u1610\u1611\u0005_\u0000"+ + "\u0000\u1611\u1612\u0007\u0006\u0000\u0000\u1612\u1613\u0007\n\u0000\u0000"+ + "\u1613\u1614\u0007\u0007\u0000\u0000\u1614\u1615\u0007\u0017\u0000\u0000"+ + "\u1615\u1616\u0007\u0010\u0000\u0000\u1616\u1617\u0007\u0014\u0000\u0000"+ + "\u1617\u048c\u0001\u0000\u0000\u0000\u1618\u1619\u0007\u000e\u0000\u0000"+ + "\u1619\u161a\u0007\u0014\u0000\u0000\u161a\u161b\u0007\u0005\u0000\u0000"+ + "\u161b\u161c\u0007\r\u0000\u0000\u161c\u161d\u0007\u0005\u0000\u0000\u161d"+ + "\u161e\u0007\u000e\u0000\u0000\u161e\u161f\u0007\u0010\u0000\u0000\u161f"+ + "\u1620\u0007\n\u0000\u0000\u1620\u1621\u0007\r\u0000\u0000\u1621\u1622"+ + "\u0005_\u0000\u0000\u1622\u1623\u0007\u0006\u0000\u0000\u1623\u1624\u0007"+ + "\n\u0000\u0000\u1624\u1625\u0007\u0007\u0000\u0000\u1625\u1626\u0007\u0017"+ + "\u0000\u0000\u1626\u1627\u0007\u0010\u0000\u0000\u1627\u1628\u0007\u0014"+ + "\u0000\u0000\u1628\u048e\u0001\u0000\u0000\u0000\u1629\u162a\u0007\u0006"+ + "\u0000\u0000\u162a\u162b\u0007\u0013\u0000\u0000\u162b\u162c\u0007\u001c"+ + "\u0000\u0000\u162c\u162d\u0007\n\u0000\u0000\u162d\u162e\u0007\r\u0000"+ + "\u0000\u162e\u0490\u0001\u0000\u0000\u0000\u162f\u1630\u0007\u0013\u0000"+ + "\u0000\u1630\u1631\u0007\u000e\u0000\u0000\u1631\u1632\u0007\u0010\u0000"+ + "\u0000\u1632\u1633\u0007\n\u0000\u0000\u1633\u1634\u0007\u0010\u0000\u0000"+ + "\u1634\u1635\u0005_\u0000\u0000\u1635\u1636\u0007\u0006\u0000\u0000\u1636"+ + "\u1637\u0007\n\u0000\u0000\u1637\u1638\u0007\u0007\u0000\u0000\u1638\u1639"+ + "\u0007\u0017\u0000\u0000\u1639\u163a\u0007\u0010\u0000\u0000\u163a\u163b"+ + "\u0007\u0014\u0000\u0000\u163b\u0492\u0001\u0000\u0000\u0000\u163c\u163d"+ + "\u0007\u0016\u0000\u0000\u163d\u163e\u0007\u0018\u0000\u0000\u163e\u163f"+ + "\u0007\u0018\u0000\u0000\u163f\u1640\u0007\n\u0000\u0000\u1640\u1641\u0007"+ + "\r\u0000\u0000\u1641\u0494\u0001\u0000\u0000\u0000\u1642\u1643\u0007\u0005"+ + "\u0000\u0000\u1643\u1644\u0007\t\u0000\u0000\u1644\u1645\u0007\u000e\u0000"+ + "\u0000\u1645\u1646\u0007\u0011\u0000\u0000\u1646\u1647\u0007\u0011\u0000"+ + "\u0000\u1647\u0496\u0001\u0000\u0000\u0000\u1648\u1649\u0007\u0012\u0000"+ + "\u0000\u1649\u164a\u0007\u0010\u0000\u0000\u164a\u164b\u0007\r\u0000\u0000"+ + "\u164b\u164c\u0007\u0011\u0000\u0000\u164c\u164d\u0007\u000f\u0000\u0000"+ + "\u164d\u0498\u0001\u0000\u0000\u0000\u164e\u164f\u0007\u000e\u0000\u0000"+ + "\u164f\u1650\u0007\u0014\u0000\u0000\u1650\u1651\u0007\r\u0000\u0000\u1651"+ + "\u049a\u0001\u0000\u0000\u0000\u1652\u1653\u0007\u000e\u0000\u0000\u1653"+ + "\u1654\u0007\u0013\u0000\u0000\u1654\u1655\u0007\u0007\u0000\u0000\u1655"+ + "\u1656\u0007\u000e\u0000\u0000\u1656\u1657\u0007\u0005\u0000\u0000\u1657"+ + "\u1658\u0007\u0010\u0000\u0000\u1658\u049c\u0001\u0000\u0000\u0000\u1659"+ + "\u165a\u0007\u000e\u0000\u0000\u165a\u165b\u0007\u0013\u0000\u0000\u165b"+ + "\u165c\u0007\u0007\u0000\u0000\u165c\u165d\u0007\u000e\u0000\u0000\u165d"+ + "\u165e\u0007\u0005\u0000\u0000\u165e\u165f\u0007\u0010\u0000\u0000\u165f"+ + "\u1660\u0005_\u0000\u0000\u1660\u1661\u0007\u001c\u0000\u0000\u1661\u1662"+ + "\u0007\t\u0000\u0000\u1662\u049e\u0001\u0000\u0000\u0000\u1663\u1664\u0007"+ + "\u0019\u0000\u0000\u1664\u1665\u0007\u0013\u0000\u0000\u1665\u1666\u0007"+ + "\r\u0000\u0000\u1666\u1667\u0007\u000f\u0000\u0000\u1667\u1668\u0007\u0005"+ + "\u0000\u0000\u1668\u1669\u0007\u0010\u0000\u0000\u1669\u04a0\u0001\u0000"+ + "\u0000\u0000\u166a\u166b\u0007\u0011\u0000\u0000\u166b\u166c\u0007\u0007"+ + "\u0000\u0000\u166c\u166d\u0007\u0011\u0000\u0000\u166d\u166e\u0007\u0010"+ + "\u0000\u0000\u166e\u166f\u0007\u000e\u0000\u0000\u166f\u1670\u0007\u0005"+ + "\u0000\u0000\u1670\u1671\u0007\u0018\u0000\u0000\u1671\u04a2\u0001\u0000"+ + "\u0000\u0000\u1672\u1673\u0007\u0006\u0000\u0000\u1673\u1674\u0007\n\u0000"+ + "\u0000\u1674\u1675\u0007\u0007\u0000\u0000\u1675\u1676\u0007\u0017\u0000"+ + "\u0000\u1676\u1677\u0007\u0010\u0000\u0000\u1677\u1678\u0007\u0014\u0000"+ + "\u0000\u1678\u04a4\u0001\u0000\u0000\u0000\u1679\u167a\u0007\u0006\u0000"+ + "\u0000\u167a\u167b\u0007\u0018\u0000\u0000\u167b\u167c\u0007\u0005\u0000"+ + "\u0000\u167c\u167d\u0007\f\u0000\u0000\u167d\u04a6\u0001\u0000\u0000\u0000"+ + "\u167e\u167f\u0007\u0006\u0000\u0000\u167f\u1680\u0007\u0010\u0000\u0000"+ + "\u1680\u1681\u0007\r\u0000\u0000\u1681\u1682\u0007\u0011\u0000\u0000\u1682"+ + "\u1683\u0007\u000f\u0000\u0000\u1683\u04a8\u0001\u0000\u0000\u0000\u1684"+ + "\u1685\u0007\u000f\u0000\u0000\u1685\u1686\u0007\f\u0000\u0000\u1686\u1687"+ + "\u00055\u0000\u0000\u1687\u04aa\u0001\u0000\u0000\u0000\u1688\u1689\u0007"+ + "\u0018\u0000\u0000\u1689\u168a\u0007\u0005\u0000\u0000\u168a\u168b\u0007"+ + "\r\u0000\u0000\u168b\u168c\u0007\t\u0000\u0000\u168c\u168d\u0007\n\u0000"+ + "\u0000\u168d\u168e\u0005_\u0000\u0000\u168e\u168f\u0007\u0011\u0000\u0000"+ + "\u168f\u1690\u0007\f\u0000\u0000\u1690\u1691\u0007\n\u0000\u0000\u1691"+ + "\u1692\u0007\u0007\u0000\u0000\u1692\u1693\u0007\u0010\u0000\u0000\u1693"+ + "\u04ac\u0001\u0000\u0000\u0000\u1694\u1695\u0007\u0018\u0000\u0000\u1695"+ + "\u1696\u0007\u0017\u0000\u0000\u1696\u1697\u0005_\u0000\u0000\u1697\u1698"+ + "\u0007\u000e\u0000\u0000\u1698\u1699\u0007\u0006\u0000\u0000\u1699\u169a"+ + "\u0007\u0011\u0000\u0000\u169a\u169b\u0007\n\u0000\u0000\u169b\u169c\u0007"+ + "\u0007\u0000\u0000\u169c\u169d\u0007\u0010\u0000\u0000\u169d\u169e\u0005"+ + "_\u0000\u0000\u169e\u169f\u0007\n\u0000\u0000\u169f\u16a0\u0007\u0007"+ + "\u0000\u0000\u16a0\u16a1\u0007\u000e\u0000\u0000\u16a1\u16a2\u0007\u0013"+ + "\u0000\u0000\u16a2\u16a3\u0007\f\u0000\u0000\u16a3\u16a4\u0007\u0011\u0000"+ + "\u0000\u16a4\u16a5\u0007\u0007\u0000\u0000\u16a5\u16a6\u0007\u0017\u0000"+ + "\u0000\u16a6\u04ae\u0001\u0000\u0000\u0000\u16a7\u16a8\u0007\u001d\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\u0011\u0000\u0000\u16ae"+ + "\u16af\u0007\f\u0000\u0000\u16af\u16b0\u0007\n\u0000\u0000\u16b0\u16b1"+ + "\u0007\u0007\u0000\u0000\u16b1\u16b2\u0007\u0010\u0000\u0000\u16b2\u04b0"+ + "\u0001\u0000\u0000\u0000\u16b3\u16b4\u0007\u001d\u0000\u0000\u16b4\u16b5"+ + "\u0007\u0016\u0000\u0000\u16b5\u16b6\u0007\u0013\u0000\u0000\u16b6\u16b7"+ + "\u0007\u0010\u0000\u0000\u16b7\u16b8\u0007\n\u0000\u0000\u16b8\u16b9\u0005"+ + "_\u0000\u0000\u16b9\u16ba\u0007\u0006\u0000\u0000\u16ba\u16bb\u0007\u0011"+ + "\u0000\u0000\u16bb\u16bc\u0007\u0010\u0000\u0000\u16bc\u16bd\u0007\n\u0000"+ + "\u0000\u16bd\u16be\u0007\r\u0000\u0000\u16be\u16bf\u0007\u0005\u0000\u0000"+ + "\u16bf\u16c0\u0007\u0006\u0000\u0000\u16c0\u04b2\u0001\u0000\u0000\u0000"+ + "\u16c1\u16c2\u0007\u001d\u0000\u0000\u16c2\u16c3\u0007\u0016\u0000\u0000"+ + "\u16c3\u16c4\u0007\u0013\u0000\u0000\u16c4\u16c5\u0007\u0010\u0000\u0000"+ + "\u16c5\u16c6\u0007\n\u0000\u0000\u16c6\u16c7\u0005_\u0000\u0000\u16c7"+ + "\u16c8\u0007\u0007\u0000\u0000\u16c8\u16c9\u0007\u0016\u0000\u0000\u16c9"+ + "\u16ca\u0007\u0006\u0000\u0000\u16ca\u16cb\u0007\u0006\u0000\u0000\u16cb"+ + "\u16cc\u0007\u0005\u0000\u0000\u16cc\u16cd\u0007\u0012\u0000\u0000\u16cd"+ + "\u16ce\u0007\u0006\u0000\u0000\u16ce\u16cf\u0007\n\u0000\u0000\u16cf\u04b4"+ + "\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\u000e\u0000"+ + "\u0000\u16d8\u16d9\u0007\u0013\u0000\u0000\u16d9\u16da\u0007\u0016\u0000"+ + "\u0000\u16da\u16db\u0007\u0007\u0000\u0000\u16db\u16dc\u0007\u0010\u0000"+ + "\u0000\u16dc\u04b6\u0001\u0000\u0000\u0000\u16dd\u16de\u0007\r\u0000\u0000"+ + "\u16de\u16df\u0007\n\u0000\u0000\u16df\u16e0\u0007\u0017\u0000\u0000\u16e0"+ + "\u16e1\u0007\n\u0000\u0000\u16e1\u16e2\u0007\u001a\u0000\u0000\u16e2\u16e3"+ + "\u0007\u0018\u0000\u0000\u16e3\u16e4\u0005_\u0000\u0000\u16e4\u16e5\u0007"+ + "\u0011\u0000\u0000\u16e5\u16e6\u0007\u0007\u0000\u0000\u16e6\u16e7\u0007"+ + "\t\u0000\u0000\u16e7\u16e8\u0007\u0010\u0000\u0000\u16e8\u16e9\u0007\r"+ + "\u0000\u0000\u16e9\u04b8\u0001\u0000\u0000\u0000\u16ea\u16eb\u0007\r\u0000"+ + "\u0000\u16eb\u16ec\u0007\n\u0000\u0000\u16ec\u16ed\u0007\u0017\u0000\u0000"+ + "\u16ed\u16ee\u0007\n\u0000\u0000\u16ee\u16ef\u0007\u001a\u0000\u0000\u16ef"+ + "\u16f0\u0007\u0018\u0000\u0000\u16f0\u16f1\u0005_\u0000\u0000\u16f1\u16f2"+ + "\u0007\u0006\u0000\u0000\u16f2\u16f3\u0007\u0011\u0000\u0000\u16f3\u16f4"+ + "\u0007\u0015\u0000\u0000\u16f4\u16f5\u0007\n\u0000\u0000\u16f5\u04ba\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\u000f\u0000\u0000"+ + "\u16fe\u16ff\u0007\u0005\u0000\u0000\u16ff\u1700\u0007\u0010\u0000\u0000"+ + "\u1700\u1701\u0007\u000e\u0000\u0000\u1701\u1702\u0007\u0014\u0000\u0000"+ + "\u1702\u04bc\u0001\u0000\u0000\u0000\u1703\u1704\u0007\r\u0000\u0000\u1704"+ + "\u1705\u0007\n\u0000\u0000\u1705\u1706\u0007\u0017\u0000\u0000\u1706\u1707"+ + "\u0007\n\u0000\u0000\u1707\u1708\u0007\u001a\u0000\u0000\u1708\u1709\u0007"+ + "\u0018\u0000\u0000\u1709\u170a\u0005_\u0000\u0000\u170a\u170b\u0007\u000f"+ + "\u0000\u0000\u170b\u170c\u0007\u0005\u0000\u0000\u170c\u170d\u0007\u0010"+ + "\u0000\u0000\u170d\u170e\u0007\u000e\u0000\u0000\u170e\u170f\u0007\u0014"+ + "\u0000\u0000\u170f\u1710\u0007\n\u0000\u0000\u1710\u1711\u0007\t\u0000"+ + "\u0000\u1711\u04be\u0001\u0000\u0000\u0000\u1712\u1713\u0007\r\u0000\u0000"+ + "\u1713\u1714\u0007\n\u0000\u0000\u1714\u1715\u0007\u0017\u0000\u0000\u1715"+ + "\u1716\u0007\n\u0000\u0000\u1716\u1717\u0007\u001a\u0000\u0000\u1717\u1718"+ + "\u0007\u0018\u0000\u0000\u1718\u1719\u0005_\u0000\u0000\u1719\u171a\u0007"+ + "\r\u0000\u0000\u171a\u171b\u0007\n\u0000\u0000\u171b\u171c\u0007\u0018"+ + "\u0000\u0000\u171c\u171d\u0007\u0006\u0000\u0000\u171d\u171e\u0007\u0005"+ + "\u0000\u0000\u171e\u171f\u0007\u000e\u0000\u0000\u171f\u1720\u0007\n\u0000"+ + "\u0000\u1720\u04c0\u0001\u0000\u0000\u0000\u1721\u1722\u0007\r\u0000\u0000"+ + "\u1722\u1723\u0007\n\u0000\u0000\u1723\u1724\u0007\u0017\u0000\u0000\u1724"+ + "\u1725\u0007\n\u0000\u0000\u1725\u1726\u0007\u001a\u0000\u0000\u1726\u1727"+ + "\u0007\u0018\u0000\u0000\u1727\u1728\u0005_\u0000\u0000\u1728\u1729\u0007"+ + "\t\u0000\u0000\u1729\u172a\u0007\u0018\u0000\u0000\u172a\u172b\u0007\u0006"+ + "\u0000\u0000\u172b\u172c\u0007\u0011\u0000\u0000\u172c\u172d\u0007\u0010"+ + "\u0000\u0000\u172d\u172e\u0005_\u0000\u0000\u172e\u172f\u0007\u0010\u0000"+ + "\u0000\u172f\u1730\u0007\u0013\u0000\u0000\u1730\u1731\u0005_\u0000\u0000"+ + "\u1731\u1732\u0007\u0005\u0000\u0000\u1732\u1733\u0007\r\u0000\u0000\u1733"+ + "\u1734\u0007\r\u0000\u0000\u1734\u1735\u0007\u0005\u0000\u0000\u1735\u1736"+ + "\u0007\b\u0000\u0000\u1736\u04c2\u0001\u0000\u0000\u0000\u1737\u1738\u0007"+ + "\r\u0000\u0000\u1738\u1739\u0007\n\u0000\u0000\u1739\u173a\u0007\u0017"+ + "\u0000\u0000\u173a\u173b\u0007\n\u0000\u0000\u173b\u173c\u0007\u001a\u0000"+ + "\u0000\u173c\u173d\u0007\u0018\u0000\u0000\u173d\u173e\u0005_\u0000\u0000"+ + "\u173e\u173f\u0007\t\u0000\u0000\u173f\u1740\u0007\u0018\u0000\u0000\u1740"+ + "\u1741\u0007\u0006\u0000\u0000\u1741\u1742\u0007\u0011\u0000\u0000\u1742"+ + "\u1743\u0007\u0010\u0000\u0000\u1743\u1744\u0005_\u0000\u0000\u1744\u1745"+ + "\u0007\u0010\u0000\u0000\u1745\u1746\u0007\u0013\u0000\u0000\u1746\u1747"+ + "\u0005_\u0000\u0000\u1747\u1748\u0007\u0010\u0000\u0000\u1748\u1749\u0007"+ + "\u0005\u0000\u0000\u1749\u174a\u0007\u0012\u0000\u0000\u174a\u174b\u0007"+ + "\u0006\u0000\u0000\u174b\u174c\u0007\n\u0000\u0000\u174c\u04c4\u0001\u0000"+ + "\u0000\u0000\u174d\u174e\u0007\r\u0000\u0000\u174e\u174f\u0007\n\u0000"+ + "\u0000\u174f\u1750\u0007\u0017\u0000\u0000\u1750\u1751\u0007\n\u0000\u0000"+ + "\u1751\u1752\u0007\u001a\u0000\u0000\u1752\u1753\u0007\u0018\u0000\u0000"+ + "\u1753\u1754\u0005_\u0000\u0000\u1754\u1755\u0007\t\u0000\u0000\u1755"+ + "\u1756\u0007\u0016\u0000\u0000\u1756\u1757\u0007\u0012\u0000\u0000\u1757"+ + "\u1758\u0007\t\u0000\u0000\u1758\u1759\u0007\u0010\u0000\u0000\u1759\u175a"+ + "\u0007\r\u0000\u0000\u175a\u04c6\u0001\u0000\u0000\u0000\u175b\u175c\u0007"+ + "\r\u0000\u0000\u175c\u175d\u0007\n\u0000\u0000\u175d\u175e\u0007\u0018"+ + "\u0000\u0000\u175e\u175f\u0007\n\u0000\u0000\u175f\u1760\u0007\u0005\u0000"+ + "\u0000\u1760\u1761\u0007\u0010\u0000\u0000\u1761\u04c8\u0001\u0000\u0000"+ + "\u0000\u1762\u1763\u0007\r\u0000\u0000\u1763\u1764\u0007\u0018\u0000\u0000"+ + "\u1764\u1765\u0007\u0005\u0000\u0000\u1765\u1766\u0007\f\u0000\u0000\u1766"+ + "\u04ca\u0001\u0000\u0000\u0000\u1767\u1768\u0007\r\u0000\u0000\u1768\u1769"+ + "\u0007\u0010\u0000\u0000\u1769\u176a\u0007\r\u0000\u0000\u176a\u176b\u0007"+ + "\u0011\u0000\u0000\u176b\u176c\u0007\u000f\u0000\u0000\u176c\u04cc\u0001"+ + "\u0000\u0000\u0000\u176d\u176e\u0007\t\u0000\u0000\u176e\u176f\u0007\u0018"+ + "\u0000\u0000\u176f\u1770\u0007\u0006\u0000\u0000\u1770\u1771\u0007\u0011"+ + "\u0000\u0000\u1771\u1772\u0007\u0010\u0000\u0000\u1772\u1773\u0005_\u0000"+ + "\u0000\u1773\u1774\u0007\u0018\u0000\u0000\u1774\u1775\u0007\u0005\u0000"+ + "\u0000\u1775\u1776\u0007\r\u0000\u0000\u1776\u1777\u0007\u0010\u0000\u0000"+ + "\u1777\u04ce\u0001\u0000\u0000\u0000\u1778\u1779\u0007\t\u0000\u0000\u1779"+ + "\u177a\u0007\u0010\u0000\u0000\u177a\u177b\u0007\u0005\u0000\u0000\u177b"+ + "\u177c\u0007\r\u0000\u0000\u177c\u177d\u0007\u0010\u0000\u0000\u177d\u177e"+ + "\u0007\t\u0000\u0000\u177e\u177f\u0005_\u0000\u0000\u177f\u1780\u0007"+ + "\u001c\u0000\u0000\u1780\u1781\u0007\u0011\u0000\u0000\u1781\u1782\u0007"+ + "\u0010\u0000\u0000\u1782\u1783\u0007\u0014\u0000\u0000\u1783\u04d0\u0001"+ + "\u0000\u0000\u0000\u1784\u1785\u0007\t\u0000\u0000\u1785\u1786\u0007\u0010"+ + "\u0000\u0000\u1786\u1787\u0007\r\u0000\u0000\u1787\u1788\u0007\u0011\u0000"+ + "\u0000\u1788\u1789\u0007\u0007\u0000\u0000\u1789\u178a\u0007\u0017\u0000"+ + "\u0000\u178a\u178b\u0005_\u0000\u0000\u178b\u178c\u0007\u0010\u0000\u0000"+ + "\u178c\u178d\u0007\u0013\u0000\u0000\u178d\u178e\u0005_\u0000\u0000\u178e"+ + "\u178f\u0007\u0005\u0000\u0000\u178f\u1790\u0007\r\u0000\u0000\u1790\u1791"+ + "\u0007\r\u0000\u0000\u1791\u1792\u0007\u0005\u0000\u0000\u1792\u1793\u0007"+ + "\b\u0000\u0000\u1793\u04d2\u0001\u0000\u0000\u0000\u1794\u1795\u0007\t"+ + "\u0000\u0000\u1795\u1796\u0007\u0010\u0000\u0000\u1796\u1797\u0007\r\u0000"+ + "\u0000\u1797\u1798\u0007\u0011\u0000\u0000\u1798\u1799\u0007\u0007\u0000"+ + "\u0000\u1799\u179a\u0007\u0017\u0000\u0000\u179a\u179b\u0005_\u0000\u0000"+ + "\u179b\u179c\u0007\u0010\u0000\u0000\u179c\u179d\u0007\u0013\u0000\u0000"+ + "\u179d\u179e\u0005_\u0000\u0000\u179e\u179f\u0007\u0010\u0000\u0000\u179f"+ + "\u17a0\u0007\u0005\u0000\u0000\u17a0\u17a1\u0007\u0012\u0000\u0000\u17a1"+ + "\u17a2\u0007\u0006\u0000\u0000\u17a2\u17a3\u0007\n\u0000\u0000\u17a3\u04d4"+ + "\u0001\u0000\u0000\u0000\u17a4\u17a5\u0007\t\u0000\u0000\u17a5\u17a6\u0007"+ + "\u0010\u0000\u0000\u17a6\u17a7\u0007\r\u0000\u0000\u17a7\u17a8\u0007\u0018"+ + "\u0000\u0000\u17a8\u17a9\u0007\u0013\u0000\u0000\u17a9\u17aa\u0007\t\u0000"+ + "\u0000\u17aa\u04d6\u0001\u0000\u0000\u0000\u17ab\u17ac\u0007\t\u0000\u0000"+ + "\u17ac\u17ad\u0007\u0016\u0000\u0000\u17ad\u17ae\u0007\u0012\u0000\u0000"+ + "\u17ae\u17af\u0007\t\u0000\u0000\u17af\u17b0\u0007\u0010\u0000\u0000\u17b0"+ + "\u17b1\u0007\r\u0000\u0000\u17b1\u04d8\u0001\u0000\u0000\u0000\u17b2\u17b3"+ + "\u0007\u0010\u0000\u0000\u17b3\u17b4\u0007\u0013\u0000\u0000\u17b4\u17b5"+ + "\u0005_\u0000\u0000\u17b5\u17b6\u0007\u0005\u0000\u0000\u17b6\u17b7\u0007"+ + "\t\u0000\u0000\u17b7\u17b8\u0007\u000e\u0000\u0000\u17b8\u17b9\u0007\u0011"+ + "\u0000\u0000\u17b9\u17ba\u0007\u0011\u0000\u0000\u17ba\u04da\u0001\u0000"+ + "\u0000\u0000\u17bb\u17bc\u0007\u0010\u0000\u0000\u17bc\u17bd\u0007\u0013"+ + "\u0000\u0000\u17bd\u17be\u0005_\u0000\u0000\u17be\u17bf\u0007\u0014\u0000"+ + "\u0000\u17bf\u17c0\u0007\n\u0000\u0000\u17c0\u17c1\u0007\u001a\u0000\u0000"+ + "\u17c1\u04dc\u0001\u0000\u0000\u0000\u17c2\u17c3\u0007\u0010\u0000\u0000"+ + "\u17c3\u17c4\u0007\r\u0000\u0000\u17c4\u17c5\u0007\u0005\u0000\u0000\u17c5"+ + "\u17c6\u0007\u0007\u0000\u0000\u17c6\u17c7\u0007\t\u0000\u0000\u17c7\u17c8"+ + "\u0007\u0006\u0000\u0000\u17c8\u17c9\u0007\u0005\u0000\u0000\u17c9\u17ca"+ + "\u0007\u0010\u0000\u0000\u17ca\u17cb\u0007\n\u0000\u0000\u17cb\u04de\u0001"+ + "\u0000\u0000\u0000\u17cc\u17cd\u0007\u0016\u0000\u0000\u17cd\u17ce\u0007"+ + "\u0007\u0000\u0000\u17ce\u17cf\u0007\u0011\u0000\u0000\u17cf\u17d0\u0007"+ + "\t\u0000\u0000\u17d0\u17d1\u0007\u0010\u0000\u0000\u17d1\u17d2\u0007\r"+ + "\u0000\u0000\u17d2\u04e0\u0001\u0000\u0000\u0000\u17d3\u17d4\u0007\u0005"+ + "\u0000\u0000\u17d4\u17d5\u0007\u0017\u0000\u0000\u17d5\u17d6\u0007\n\u0000"+ + "\u0000\u17d6\u04e2\u0001\u0000\u0000\u0000\u17d7\u17d8\u0007\u000e\u0000"+ + "\u0000\u17d8\u17d9\u0007\u0006\u0000\u0000\u17d9\u17da\u0007\u0013\u0000"+ + "\u0000\u17da\u17db\u0007\u000e\u0000\u0000\u17db\u17dc\u0007\u0015\u0000"+ + "\u0000\u17dc\u17dd\u0005_\u0000\u0000\u17dd\u17de\u0007\u0010\u0000\u0000"+ + "\u17de\u17df\u0007\u0011\u0000\u0000\u17df\u17e0\u0007\u000f\u0000\u0000"+ + "\u17e0\u17e1\u0007\n\u0000\u0000\u17e1\u17e2\u0007\t\u0000\u0000\u17e2"+ + "\u17e3\u0007\u0010\u0000\u0000\u17e3\u17e4\u0007\u0005\u0000\u0000\u17e4"+ + "\u17e5\u0007\u000f\u0000\u0000\u17e5\u17e6\u0007\u0018\u0000\u0000\u17e6"+ + "\u04e4\u0001\u0000\u0000\u0000\u17e7\u17e8\u0007\f\u0000\u0000\u17e8\u17e9"+ + "\u0007\u0005\u0000\u0000\u17e9\u17ea\u0007\u0010\u0000\u0000\u17ea\u17eb"+ + "\u0007\n\u0000\u0000\u17eb\u17ec\u0005_\u0000\u0000\u17ec\u17ed\u0007"+ + "\u0012\u0000\u0000\u17ed\u17ee\u0007\u0011\u0000\u0000\u17ee\u17ef\u0007"+ + "\u0007\u0000\u0000\u17ef\u04e6\u0001\u0000\u0000\u0000\u17f0\u17f1\u0007"+ + "\f\u0000\u0000\u17f1\u17f2\u0007\u0005\u0000\u0000\u17f2\u17f3\u0007\u0010"+ + "\u0000\u0000\u17f3\u17f4\u0007\n\u0000\u0000\u17f4\u17f5\u0005_\u0000"+ + "\u0000\u17f5\u17f6\u0007\u0018\u0000\u0000\u17f6\u17f7\u0007\u0005\u0000"+ + "\u0000\u17f7\u17f8\u0007\r\u0000\u0000\u17f8\u17f9\u0007\u0010\u0000\u0000"+ + "\u17f9\u04e8\u0001\u0000\u0000\u0000\u17fa\u17fb\u0007\f\u0000\u0000\u17fb"+ + "\u17fc\u0007\u0005\u0000\u0000\u17fc\u17fd\u0007\u0010\u0000\u0000\u17fd"+ + "\u17fe\u0007\n\u0000\u0000\u17fe\u17ff\u0005_\u0000\u0000\u17ff\u1800"+ + "\u0007\u0010\u0000\u0000\u1800\u1801\u0007\r\u0000\u0000\u1801\u1802\u0007"+ + "\u0016\u0000\u0000\u1802\u1803\u0007\u0007\u0000\u0000\u1803\u1804\u0007"+ + "\u000e\u0000\u0000\u1804\u04ea\u0001\u0000\u0000\u0000\u1805\u1806\u0007"+ + "\u0011\u0000\u0000\u1806\u1807\u0007\t\u0000\u0000\u1807\u1808\u0007\u0019"+ + "\u0000\u0000\u1808\u1809\u0007\u0011\u0000\u0000\u1809\u180a\u0007\u0007"+ + "\u0000\u0000\u180a\u180b\u0007\u0011\u0000\u0000\u180b\u180c\u0007\u0010"+ + "\u0000\u0000\u180c\u180d\u0007\n\u0000\u0000\u180d\u04ec\u0001\u0000\u0000"+ + "\u0000\u180e\u180f\u0007\u001e\u0000\u0000\u180f\u1810\u0007\u0016\u0000"+ + "\u0000\u1810\u1811\u0007\t\u0000\u0000\u1811\u1812\u0007\u0010\u0000\u0000"+ + "\u1812\u1813\u0007\u0011\u0000\u0000\u1813\u1814\u0007\u0019\u0000\u0000"+ + "\u1814\u1815\u0007\b\u0000\u0000\u1815\u1816\u0005_\u0000\u0000\u1816"+ + "\u1817\u0007\f\u0000\u0000\u1817\u1818\u0007\u0005\u0000\u0000\u1818\u1819"+ + "\u0007\b\u0000\u0000\u1819\u181a\u0007\t\u0000\u0000\u181a\u04ee\u0001"+ + "\u0000\u0000\u0000\u181b\u181c\u0007\u001e\u0000\u0000\u181c\u181d\u0007"+ + "\u0016\u0000\u0000\u181d\u181e\u0007\t\u0000\u0000\u181e\u181f\u0007\u0010"+ + "\u0000\u0000\u181f\u1820\u0007\u0011\u0000\u0000\u1820\u1821\u0007\u0019"+ + "\u0000\u0000\u1821\u1822\u0007\b\u0000\u0000\u1822\u1823\u0005_\u0000"+ + "\u0000\u1823\u1824\u0007\u0014\u0000\u0000\u1824\u1825\u0007\u0013\u0000"+ + "\u0000\u1825\u1826\u0007\u0016\u0000\u0000\u1826\u1827\u0007\r\u0000\u0000"+ + "\u1827\u1828\u0007\t\u0000\u0000\u1828\u04f0\u0001\u0000\u0000\u0000\u1829"+ + "\u182a\u0007\u001e\u0000\u0000\u182a\u182b\u0007\u0016\u0000\u0000\u182b"+ + "\u182c\u0007\t\u0000\u0000\u182c\u182d\u0007\u0010\u0000\u0000\u182d\u182e"+ + "\u0007\u0011\u0000\u0000\u182e\u182f\u0007\u0019\u0000\u0000\u182f\u1830"+ + "\u0007\b\u0000\u0000\u1830\u1831\u0005_\u0000\u0000\u1831\u1832\u0007"+ + "\u0011\u0000\u0000\u1832\u1833\u0007\u0007\u0000\u0000\u1833\u1834\u0007"+ + "\u0010\u0000\u0000\u1834\u1835\u0007\n\u0000\u0000\u1835\u1836\u0007\r"+ + "\u0000\u0000\u1836\u1837\u0007\u001b\u0000\u0000\u1837\u1838\u0007\u0005"+ + "\u0000\u0000\u1838\u1839\u0007\u0006\u0000\u0000\u1839\u04f2\u0001\u0000"+ + "\u0000\u0000\u183a\u183b\u0007\u000f\u0000\u0000\u183b\u183c\u0007\u0005"+ + "\u0000\u0000\u183c\u183d\u0007\u0015\u0000\u0000\u183d\u183e\u0007\n\u0000"+ + "\u0000\u183e\u183f\u0005_\u0000\u0000\u183f\u1840\u0007\f\u0000\u0000"+ + "\u1840\u1841\u0007\u0005\u0000\u0000\u1841\u1842\u0007\u0010\u0000\u0000"+ + "\u1842\u1843\u0007\n\u0000\u0000\u1843\u04f4\u0001\u0000\u0000\u0000\u1844"+ + "\u1845\u0007\u000f\u0000\u0000\u1845\u1846\u0007\u0005\u0000\u0000\u1846"+ + "\u1847\u0007\u0015\u0000\u0000\u1847\u1848\u0007\n\u0000\u0000\u1848\u1849"+ + "\u0005_\u0000\u0000\u1849\u184a\u0007\u0011\u0000\u0000\u184a\u184b\u0007"+ + "\u0007\u0000\u0000\u184b\u184c\u0007\u0010\u0000\u0000\u184c\u184d\u0007"+ + "\n\u0000\u0000\u184d\u184e\u0007\r\u0000\u0000\u184e\u184f\u0007\u001b"+ + "\u0000\u0000\u184f\u1850\u0007\u0005\u0000\u0000\u1850\u1851\u0007\u0006"+ + "\u0000\u0000\u1851\u04f6\u0001\u0000\u0000\u0000\u1852\u1853\u0007\u000f"+ + "\u0000\u0000\u1853\u1854\u0007\u0005\u0000\u0000\u1854\u1855\u0007\u0015"+ + "\u0000\u0000\u1855\u1856\u0007\n\u0000\u0000\u1856\u1857\u0005_\u0000"+ + "\u0000\u1857\u1858\u0007\u0010\u0000\u0000\u1858\u1859\u0007\u0011\u0000"+ + "\u0000\u1859\u185a\u0007\u000f\u0000\u0000\u185a\u185b\u0007\n\u0000\u0000"+ + "\u185b\u04f8\u0001\u0000\u0000\u0000\u185c\u185d\u0007\u000f\u0000\u0000"+ + "\u185d\u185e\u0007\u0005\u0000\u0000\u185e\u185f\u0007\u0015\u0000\u0000"+ + "\u185f\u1860\u0007\n\u0000\u0000\u1860\u1861\u0005_\u0000\u0000\u1861"+ + "\u1862\u0007\u0010\u0000\u0000\u1862\u1863\u0007\u0011\u0000\u0000\u1863"+ + "\u1864\u0007\u000f\u0000\u0000\u1864\u1865\u0007\n\u0000\u0000\u1865\u1866"+ + "\u0007\t\u0000\u0000\u1866\u1867\u0007\u0010\u0000\u0000\u1867\u1868\u0007"+ + "\u0005\u0000\u0000\u1868\u1869\u0007\u000f\u0000\u0000\u1869\u186a\u0007"+ + "\u0018\u0000\u0000\u186a\u04fa\u0001\u0000\u0000\u0000\u186b\u186c\u0007"+ + "\u000f\u0000\u0000\u186c\u186d\u0007\u0005\u0000\u0000\u186d\u186e\u0007"+ + "\u0015\u0000\u0000\u186e\u186f\u0007\n\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\u187a\u0007\u0010\u0000\u0000"+ + "\u187a\u187b\u0007\u000b\u0000\u0000\u187b\u04fc\u0001\u0000\u0000\u0000"+ + "\u187c\u187d\u0007\u0007\u0000\u0000\u187d\u187e\u0007\u0013\u0000\u0000"+ + "\u187e\u187f\u0007\u001c\u0000\u0000\u187f\u04fe\u0001\u0000\u0000\u0000"+ + "\u1880\u1881\u0007\t\u0000\u0000\u1881\u1882\u0007\u0010\u0000\u0000\u1882"+ + "\u1883\u0007\u0005\u0000\u0000\u1883\u1884\u0007\u0010\u0000\u0000\u1884"+ + "\u1885\u0007\n\u0000\u0000\u1885\u1886\u0007\u000f\u0000\u0000\u1886\u1887"+ + "\u0007\n\u0000\u0000\u1887\u1888\u0007\u0007\u0000\u0000\u1888\u1889\u0007"+ + "\u0010\u0000\u0000\u1889\u188a\u0005_\u0000\u0000\u188a\u188b\u0007\u0010"+ + "\u0000\u0000\u188b\u188c\u0007\u0011\u0000\u0000\u188c\u188d\u0007\u000f"+ + "\u0000\u0000\u188d\u188e\u0007\n\u0000\u0000\u188e\u188f\u0007\t\u0000"+ + "\u0000\u188f\u1890\u0007\u0010\u0000\u0000\u1890\u1891\u0007\u0005\u0000"+ + "\u0000\u1891\u1892\u0007\u000f\u0000\u0000\u1892\u1893\u0007\u0018\u0000"+ + "\u0000\u1893\u0500\u0001\u0000\u0000\u0000\u1894\u1895\u0007\u0010\u0000"+ + "\u0000\u1895\u1896\u0007\u0011\u0000\u0000\u1896\u1897\u0007\u000f\u0000"+ + "\u0000\u1897\u1898\u0007\n\u0000\u0000\u1898\u1899\u0007\u0013\u0000\u0000"+ + "\u1899\u189a\u0007\u0019\u0000\u0000\u189a\u189b\u0007\f\u0000\u0000\u189b"+ + "\u189c\u0007\u0005\u0000\u0000\u189c\u189d\u0007\b\u0000\u0000\u189d\u0502"+ + "\u0001\u0000\u0000\u0000\u189e\u189f\u0007\u0010\u0000\u0000\u189f\u18a0"+ + "\u0007\r\u0000\u0000\u18a0\u18a1\u0007\u0005\u0000\u0000\u18a1\u18a2\u0007"+ + "\u0007\u0000\u0000\u18a2\u18a3\u0007\t\u0000\u0000\u18a3\u18a4\u0007\u0005"+ + "\u0000\u0000\u18a4\u18a5\u0007\u000e\u0000\u0000\u18a5\u18a6\u0007\u0010"+ + "\u0000\u0000\u18a6\u18a7\u0007\u0011\u0000\u0000\u18a7\u18a8\u0007\u0013"+ + "\u0000\u0000\u18a8\u18a9\u0007\u0007\u0000\u0000\u18a9\u18aa\u0005_\u0000"+ + "\u0000\u18aa\u18ab\u0007\u0010\u0000\u0000\u18ab\u18ac\u0007\u0011\u0000"+ + "\u0000\u18ac\u18ad\u0007\u000f\u0000\u0000\u18ad\u18ae\u0007\n\u0000\u0000"+ + "\u18ae\u18af\u0007\t\u0000\u0000\u18af\u18b0\u0007\u0010\u0000\u0000\u18b0"+ + "\u18b1\u0007\u0005\u0000\u0000\u18b1\u18b2\u0007\u000f\u0000\u0000\u18b2"+ + "\u18b3\u0007\u0018\u0000\u0000\u18b3\u0504\u0001\u0000\u0000\u0000\u18b4"+ + "\u18b5\u0007\u0010\u0000\u0000\u18b5\u18b6\u0007\u0013\u0000\u0000\u18b6"+ + "\u18b7\u0005_\u0000\u0000\u18b7\u18b8\u0007\u0010\u0000\u0000\u18b8\u18b9"+ + "\u0007\u0011\u0000\u0000\u18b9\u18ba\u0007\u000f\u0000\u0000\u18ba\u18bb"+ + "\u0007\n\u0000\u0000\u18bb\u18bc\u0007\t\u0000\u0000\u18bc\u18bd\u0007"+ + "\u0010\u0000\u0000\u18bd\u18be\u0007\u0005\u0000\u0000\u18be\u18bf\u0007"+ + "\u000f\u0000\u0000\u18bf\u18c0\u0007\u0018\u0000\u0000\u18c0\u0506\u0001"+ + "\u0000\u0000\u0000\u18c1\u18c2\u0007\u0010\u0000\u0000\u18c2\u18c3\u0007"+ + "\u0013\u0000\u0000\u18c3\u18c4\u0005_\u0000\u0000\u18c4\u18c5\u0007\u000e"+ + "\u0000\u0000\u18c5\u18c6\u0007\u0014\u0000\u0000\u18c6\u18c7\u0007\u0005"+ + "\u0000\u0000\u18c7\u18c8\u0007\r\u0000\u0000\u18c8\u0508\u0001\u0000\u0000"+ + "\u0000\u18c9\u18ca\u0007\u0010\u0000\u0000\u18ca\u18cb\u0007\u0013\u0000"+ + "\u0000\u18cb\u18cc\u0005_\u0000\u0000\u18cc\u18cd\u0007\f\u0000\u0000"+ + "\u18cd\u18ce\u0007\u0005\u0000\u0000\u18ce\u18cf\u0007\u0010\u0000\u0000"+ + "\u18cf\u18d0\u0007\n\u0000\u0000\u18d0\u050a\u0001\u0000\u0000\u0000\u18d1"+ + "\u18d2\u0007\u0010\u0000\u0000\u18d2\u18d3\u0007\u0013\u0000\u0000\u18d3"+ + "\u18d4\u0005_\u0000\u0000\u18d4\u18d5\u0007\u0007\u0000\u0000\u18d5\u18d6"+ + "\u0007\u0016\u0000\u0000\u18d6\u18d7\u0007\u000f\u0000\u0000\u18d7\u18d8"+ + "\u0007\u0012\u0000\u0000\u18d8\u18d9\u0007\n\u0000\u0000\u18d9\u18da\u0007"+ + "\r\u0000\u0000\u18da\u050c\u0001\u0000\u0000\u0000\u18db\u18df\u0003\u050f"+ + "\u0285\u0000\u18dc\u18de\u0003\u0511\u0286\u0000\u18dd\u18dc\u0001\u0000"+ + "\u0000\u0000\u18de\u18e1\u0001\u0000\u0000\u0000\u18df\u18dd\u0001\u0000"+ + "\u0000\u0000\u18df\u18e0\u0001\u0000\u0000\u0000\u18e0\u050e\u0001\u0000"+ + "\u0000\u0000\u18e1\u18df\u0001\u0000\u0000\u0000\u18e2\u18e9\u0007\u001f"+ + "\u0000\u0000\u18e3\u18e4\u0007 \u0000\u0000\u18e4\u18e9\u0004\u0285\u0006"+ + "\u0000\u18e5\u18e6\u0007!\u0000\u0000\u18e6\u18e7\u0007\"\u0000\u0000"+ + "\u18e7\u18e9\u0004\u0285\u0007\u0000\u18e8\u18e2\u0001\u0000\u0000\u0000"+ + "\u18e8\u18e3\u0001\u0000\u0000\u0000\u18e8\u18e5\u0001\u0000\u0000\u0000"+ + "\u18e9\u0510\u0001\u0000\u0000\u0000\u18ea\u18ed\u0003\u0513\u0287\u0000"+ + "\u18eb\u18ed\u0005$\u0000\u0000\u18ec\u18ea\u0001\u0000\u0000\u0000\u18ec"+ + "\u18eb\u0001\u0000\u0000\u0000\u18ed\u0512\u0001\u0000\u0000\u0000\u18ee"+ + "\u18f1\u0003\u050f\u0285\u0000\u18ef\u18f1\u0007\u0000\u0000\u0000\u18f0"+ + "\u18ee\u0001\u0000\u0000\u0000\u18f0\u18ef\u0001\u0000\u0000\u0000\u18f1"+ + "\u0514\u0001\u0000\u0000\u0000\u18f2\u18f3\u0003\u0517\u0289\u0000\u18f3"+ + "\u18f4\u0005\"\u0000\u0000\u18f4\u0516\u0001\u0000\u0000\u0000\u18f5\u18fb"+ + "\u0005\"\u0000\u0000\u18f6\u18f7\u0005\"\u0000\u0000\u18f7\u18fa\u0005"+ + "\"\u0000\u0000\u18f8\u18fa\b#\u0000\u0000\u18f9\u18f6\u0001\u0000\u0000"+ + "\u0000\u18f9\u18f8\u0001\u0000\u0000\u0000\u18fa\u18fd\u0001\u0000\u0000"+ + "\u0000\u18fb\u18f9\u0001\u0000\u0000\u0000\u18fb\u18fc\u0001\u0000\u0000"+ + "\u0000\u18fc\u0518\u0001\u0000\u0000\u0000\u18fd\u18fb\u0001\u0000\u0000"+ + "\u0000\u18fe\u18ff\u0003\u051b\u028b\u0000\u18ff\u1900\u0005\"\u0000\u0000"+ + "\u1900\u051a\u0001\u0000\u0000\u0000\u1901\u1907\u0005\"\u0000\u0000\u1902"+ + "\u1903\u0005\"\u0000\u0000\u1903\u1906\u0005\"\u0000\u0000\u1904\u1906"+ + "\b$\u0000\u0000\u1905\u1902\u0001\u0000\u0000\u0000\u1905\u1904\u0001"+ + "\u0000\u0000\u0000\u1906\u1909\u0001\u0000\u0000\u0000\u1907\u1905\u0001"+ + "\u0000\u0000\u0000\u1907\u1908\u0001\u0000\u0000\u0000\u1908\u051c\u0001"+ + "\u0000\u0000\u0000\u1909\u1907\u0001\u0000\u0000\u0000\u190a\u190b\u0007"+ + "\u0016\u0000\u0000\u190b\u190c\u0005&\u0000\u0000\u190c\u190d\u0003\u0515"+ + "\u0288\u0000\u190d\u051e\u0001\u0000\u0000\u0000\u190e\u190f\u0007\u0016"+ + "\u0000\u0000\u190f\u1910\u0005&\u0000\u0000\u1910\u1911\u0003\u0517\u0289"+ + "\u0000\u1911\u0520\u0001\u0000\u0000\u0000\u1912\u1913\u0007\u0016\u0000"+ + "\u0000\u1913\u1914\u0005&\u0000\u0000\u1914\u1915\u0003\u0519\u028a\u0000"+ + "\u1915\u0522\u0001\u0000\u0000\u0000\u1916\u1917\u0007\u0016\u0000\u0000"+ + "\u1917\u1918\u0005&\u0000\u0000\u1918\u1919\u0003\u051b\u028b\u0000\u1919"+ + "\u0524\u0001\u0000\u0000\u0000\u191a\u191b\u0003\u0527\u0291\u0000\u191b"+ + "\u191c\u0005\'\u0000\u0000\u191c\u0526\u0001\u0000\u0000\u0000\u191d\u1923"+ + "\u0005\'\u0000\u0000\u191e\u191f\u0005\'\u0000\u0000\u191f\u1922\u0005"+ + "\'\u0000\u0000\u1920\u1922\b%\u0000\u0000\u1921\u191e\u0001\u0000\u0000"+ + "\u0000\u1921\u1920\u0001\u0000\u0000\u0000\u1922\u1925\u0001\u0000\u0000"+ + "\u0000\u1923\u1921\u0001\u0000\u0000\u0000\u1923\u1924\u0001\u0000\u0000"+ + "\u0000\u1924\u0528\u0001\u0000\u0000\u0000\u1925\u1923\u0001\u0000\u0000"+ + "\u0000\u1926\u1927\u0007\n\u0000\u0000\u1927\u1928\u0005\'\u0000\u0000"+ + "\u1928\u1929\u0001\u0000\u0000\u0000\u1929\u192a\u0006\u0292\u0002\u0000"+ + "\u192a\u192b\u0006\u0292\u0003\u0000\u192b\u052a\u0001\u0000\u0000\u0000"+ + "\u192c\u192d\u0003\u052d\u0294\u0000\u192d\u192e\u0005\'\u0000\u0000\u192e"+ + "\u052c\u0001\u0000\u0000\u0000\u192f\u1930\u0007\u0016\u0000\u0000\u1930"+ + "\u1931\u0005&\u0000\u0000\u1931\u1932\u0003\u0527\u0291\u0000\u1932\u052e"+ + "\u0001\u0000\u0000\u0000\u1933\u1935\u0005$\u0000\u0000\u1934\u1936\u0003"+ + "\u0531\u0296\u0000\u1935\u1934\u0001\u0000\u0000\u0000\u1935\u1936\u0001"+ + "\u0000\u0000\u0000\u1936\u1937\u0001\u0000\u0000\u0000\u1937\u1938\u0005"+ + "$\u0000\u0000\u1938\u1939\u0006\u0295\u0004\u0000\u1939\u193a\u0001\u0000"+ + "\u0000\u0000\u193a\u193b\u0006\u0295\u0005\u0000\u193b\u0530\u0001\u0000"+ + "\u0000\u0000\u193c\u1940\u0003\u050f\u0285\u0000\u193d\u193f\u0003\u0513"+ + "\u0287\u0000\u193e\u193d\u0001\u0000\u0000\u0000\u193f\u1942\u0001\u0000"+ + "\u0000\u0000\u1940\u193e\u0001\u0000\u0000\u0000\u1940\u1941\u0001\u0000"+ + "\u0000\u0000\u1941\u0532\u0001\u0000\u0000\u0000\u1942\u1940\u0001\u0000"+ + "\u0000\u0000\u1943\u1944\u0003\u0535\u0298\u0000\u1944\u1945\u0005\'\u0000"+ + "\u0000\u1945\u0534\u0001\u0000\u0000\u0000\u1946\u1947\u0007\u0012\u0000"+ + "\u0000\u1947\u194b\u0005\'\u0000\u0000\u1948\u194a\u0007&\u0000\u0000"+ + "\u1949\u1948\u0001\u0000\u0000\u0000\u194a\u194d\u0001\u0000\u0000\u0000"+ + "\u194b\u1949\u0001\u0000\u0000\u0000\u194b\u194c\u0001\u0000\u0000\u0000"+ + "\u194c\u0536\u0001\u0000\u0000\u0000\u194d\u194b\u0001\u0000\u0000\u0000"+ + "\u194e\u194f\u0003\u0539\u029a\u0000\u194f\u1950\u0005\'\u0000\u0000\u1950"+ + "\u0538\u0001\u0000\u0000\u0000\u1951\u1952\u0007\u0012\u0000\u0000\u1952"+ + "\u1953\u0003\u0527\u0291\u0000\u1953\u053a\u0001\u0000\u0000\u0000\u1954"+ + "\u1955\u0003\u053d\u029c\u0000\u1955\u1956\u0005\'\u0000\u0000\u1956\u053c"+ + "\u0001\u0000\u0000\u0000\u1957\u1958\u0007\u001a\u0000\u0000\u1958\u195c"+ + "\u0005\'\u0000\u0000\u1959\u195b\u0007\'\u0000\u0000\u195a\u1959\u0001"+ + "\u0000\u0000\u0000\u195b\u195e\u0001\u0000\u0000\u0000\u195c\u195a\u0001"+ + "\u0000\u0000\u0000\u195c\u195d\u0001\u0000\u0000\u0000\u195d\u053e\u0001"+ + "\u0000\u0000\u0000\u195e\u195c\u0001\u0000\u0000\u0000\u195f\u1960\u0003"+ + "\u0541\u029e\u0000\u1960\u1961\u0005\'\u0000\u0000\u1961\u0540\u0001\u0000"+ + "\u0000\u0000\u1962\u1963\u0007\u001a\u0000\u0000\u1963\u1964\u0003\u0527"+ + "\u0291\u0000\u1964\u0542\u0001\u0000\u0000\u0000\u1965\u1966\u0003\u0549"+ + "\u02a2\u0000\u1966\u0544\u0001\u0000\u0000\u0000\u1967\u1968\u0003\u0549"+ + "\u02a2\u0000\u1968\u1969\u0005.\u0000\u0000\u1969\u196a\u0005.\u0000\u0000"+ + "\u196a\u196b\u0001\u0000\u0000\u0000\u196b\u196c\u0006\u02a0\u0006\u0000"+ + "\u196c\u0546\u0001\u0000\u0000\u0000\u196d\u196e\u0003\u0549\u02a2\u0000"+ + "\u196e\u1970\u0005.\u0000\u0000\u196f\u1971\u0003\u0549\u02a2\u0000\u1970"+ + "\u196f\u0001\u0000\u0000\u0000\u1970\u1971\u0001\u0000\u0000\u0000\u1971"+ + "\u1977\u0001\u0000\u0000\u0000\u1972\u1974\u0007\n\u0000\u0000\u1973\u1975"+ + "\u0007\u0001\u0000\u0000\u1974\u1973\u0001\u0000\u0000\u0000\u1974\u1975"+ + "\u0001\u0000\u0000\u0000\u1975\u1976\u0001\u0000\u0000\u0000\u1976\u1978"+ + "\u0003\u0549\u02a2\u0000\u1977\u1972\u0001\u0000\u0000\u0000\u1977\u1978"+ + "\u0001\u0000\u0000\u0000\u1978\u198a\u0001\u0000\u0000\u0000\u1979\u197a"+ + "\u0005.\u0000\u0000\u197a\u1980\u0003\u0549\u02a2\u0000\u197b\u197d\u0007"+ + "\n\u0000\u0000\u197c\u197e\u0007\u0001\u0000\u0000\u197d\u197c\u0001\u0000"+ + "\u0000\u0000\u197d\u197e\u0001\u0000\u0000\u0000\u197e\u197f\u0001\u0000"+ + "\u0000\u0000\u197f\u1981\u0003\u0549\u02a2\u0000\u1980\u197b\u0001\u0000"+ + "\u0000\u0000\u1980\u1981\u0001\u0000\u0000\u0000\u1981\u198a\u0001\u0000"+ + "\u0000\u0000\u1982\u1983\u0003\u0549\u02a2\u0000\u1983\u1985\u0007\n\u0000"+ + "\u0000\u1984\u1986\u0007\u0001\u0000\u0000\u1985\u1984\u0001\u0000\u0000"+ + "\u0000\u1985\u1986\u0001\u0000\u0000\u0000\u1986\u1987\u0001\u0000\u0000"+ + "\u0000\u1987\u1988\u0003\u0549\u02a2\u0000\u1988\u198a\u0001\u0000\u0000"+ + "\u0000\u1989\u196d\u0001\u0000\u0000\u0000\u1989\u1979\u0001\u0000\u0000"+ + "\u0000\u1989\u1982\u0001\u0000\u0000\u0000\u198a\u0548\u0001\u0000\u0000"+ + "\u0000\u198b\u198d\u0007\u0000\u0000\u0000\u198c\u198b\u0001\u0000\u0000"+ + "\u0000\u198d\u198e\u0001\u0000\u0000\u0000\u198e\u198c\u0001\u0000\u0000"+ + "\u0000\u198e\u198f\u0001\u0000\u0000\u0000\u198f\u054a\u0001\u0000\u0000"+ + "\u0000\u1990\u1991\u0005:\u0000\u0000\u1991\u1995\u0007(\u0000\u0000\u1992"+ + "\u1994\u0007)\u0000\u0000\u1993\u1992\u0001\u0000\u0000\u0000\u1994\u1997"+ + "\u0001\u0000\u0000\u0000\u1995\u1993\u0001\u0000\u0000\u0000\u1995\u1996"+ + "\u0001\u0000\u0000\u0000\u1996\u054c\u0001\u0000\u0000\u0000\u1997\u1995"+ + "\u0001\u0000\u0000\u0000\u1998\u1999\u0005:\u0000\u0000\u1999\u199a\u0005"+ + "\"\u0000\u0000\u199a\u19a2\u0001\u0000\u0000\u0000\u199b\u199c\u0005\\"+ + "\u0000\u0000\u199c\u19a1\t\u0000\u0000\u0000\u199d\u199e\u0005\"\u0000"+ + "\u0000\u199e\u19a1\u0005\"\u0000\u0000\u199f\u19a1\b*\u0000\u0000\u19a0"+ + "\u199b\u0001\u0000\u0000\u0000\u19a0\u199d\u0001\u0000\u0000\u0000\u19a0"+ + "\u199f\u0001\u0000\u0000\u0000\u19a1\u19a4\u0001\u0000\u0000\u0000\u19a2"+ + "\u19a0\u0001\u0000\u0000\u0000\u19a2\u19a3\u0001\u0000\u0000\u0000\u19a3"+ + "\u19a5\u0001\u0000\u0000\u0000\u19a4\u19a2\u0001\u0000\u0000\u0000\u19a5"+ + "\u19a6\u0005\"\u0000\u0000\u19a6\u054e\u0001\u0000\u0000\u0000\u19a7\u19a9"+ + "\u0007+\u0000\u0000\u19a8\u19a7\u0001\u0000\u0000\u0000\u19a9\u19aa\u0001"+ + "\u0000\u0000\u0000\u19aa\u19a8\u0001\u0000\u0000\u0000\u19aa\u19ab\u0001"+ + "\u0000\u0000\u0000\u19ab\u19ac\u0001\u0000\u0000\u0000\u19ac\u19ad\u0006"+ + "\u02a5\u0007\u0000\u19ad\u0550\u0001\u0000\u0000\u0000\u19ae\u19b0\u0005"+ + "\r\u0000\u0000\u19af\u19b1\u0005\n\u0000\u0000\u19b0\u19af\u0001\u0000"+ + "\u0000\u0000\u19b0\u19b1\u0001\u0000\u0000\u0000\u19b1\u19b4\u0001\u0000"+ + "\u0000\u0000\u19b2\u19b4\u0005\n\u0000\u0000\u19b3\u19ae\u0001\u0000\u0000"+ + "\u0000\u19b3\u19b2\u0001\u0000\u0000\u0000\u19b4\u19b5\u0001\u0000\u0000"+ + "\u0000\u19b5\u19b6\u0006\u02a6\u0007\u0000\u19b6\u0552\u0001\u0000\u0000"+ + "\u0000\u19b7\u19b8\u0005-\u0000\u0000\u19b8\u19b9\u0005-\u0000\u0000\u19b9"+ + "\u19bd\u0001\u0000\u0000\u0000\u19ba\u19bc\b,\u0000\u0000\u19bb\u19ba"+ + "\u0001\u0000\u0000\u0000\u19bc\u19bf\u0001\u0000\u0000\u0000\u19bd\u19bb"+ + "\u0001\u0000\u0000\u0000\u19bd\u19be\u0001\u0000\u0000\u0000\u19be\u19c0"+ + "\u0001\u0000\u0000\u0000\u19bf\u19bd\u0001\u0000\u0000\u0000\u19c0\u19c1"+ + "\u0006\u02a7\u0007\u0000\u19c1\u0554\u0001\u0000\u0000\u0000\u19c2\u19c3"+ + "\u0005/\u0000\u0000\u19c3\u19c4\u0005*\u0000\u0000\u19c4\u19db\u0001\u0000"+ + "\u0000\u0000\u19c5\u19c7\u0005/\u0000\u0000\u19c6\u19c5\u0001\u0000\u0000"+ + "\u0000\u19c7\u19ca\u0001\u0000\u0000\u0000\u19c8\u19c6\u0001\u0000\u0000"+ + "\u0000\u19c8\u19c9\u0001\u0000\u0000\u0000\u19c9\u19cb\u0001\u0000\u0000"+ + "\u0000\u19ca\u19c8\u0001\u0000\u0000\u0000\u19cb\u19da\u0003\u0555\u02a8"+ + "\u0000\u19cc\u19da\b-\u0000\u0000\u19cd\u19cf\u0005/\u0000\u0000\u19ce"+ + "\u19cd\u0001\u0000\u0000\u0000\u19cf\u19d0\u0001\u0000\u0000\u0000\u19d0"+ + "\u19ce\u0001\u0000\u0000\u0000\u19d0\u19d1\u0001\u0000\u0000\u0000\u19d1"+ + "\u19d2\u0001\u0000\u0000\u0000\u19d2\u19da\b-\u0000\u0000\u19d3\u19d5"+ + "\u0005*\u0000\u0000\u19d4\u19d3\u0001\u0000\u0000\u0000\u19d5\u19d6\u0001"+ + "\u0000\u0000\u0000\u19d6\u19d4\u0001\u0000\u0000\u0000\u19d6\u19d7\u0001"+ + "\u0000\u0000\u0000\u19d7\u19d8\u0001\u0000\u0000\u0000\u19d8\u19da\b-"+ + "\u0000\u0000\u19d9\u19c8\u0001\u0000\u0000\u0000\u19d9\u19cc\u0001\u0000"+ + "\u0000\u0000\u19d9\u19ce\u0001\u0000\u0000\u0000\u19d9\u19d4\u0001\u0000"+ + "\u0000\u0000\u19da\u19dd\u0001\u0000\u0000\u0000\u19db\u19d9\u0001\u0000"+ + "\u0000\u0000\u19db\u19dc\u0001\u0000\u0000\u0000\u19dc\u19e1\u0001\u0000"+ + "\u0000\u0000\u19dd\u19db\u0001\u0000\u0000\u0000\u19de\u19e0\u0005*\u0000"+ + "\u0000\u19df\u19de\u0001\u0000\u0000\u0000\u19e0\u19e3\u0001\u0000\u0000"+ + "\u0000\u19e1\u19df\u0001\u0000\u0000\u0000\u19e1\u19e2\u0001\u0000\u0000"+ + "\u0000\u19e2\u19e4\u0001\u0000\u0000\u0000\u19e3\u19e1\u0001\u0000\u0000"+ + "\u0000\u19e4\u19e5\u0005*\u0000\u0000\u19e5\u19e6\u0005/\u0000\u0000\u19e6"+ + "\u19e7\u0001\u0000\u0000\u0000\u19e7\u19e8\u0006\u02a8\u0007\u0000\u19e8"+ + "\u0556\u0001\u0000\u0000\u0000\u19e9\u19ea\u0005/\u0000\u0000\u19ea\u19eb"+ + "\u0005*\u0000\u0000\u19eb\u1a04\u0001\u0000\u0000\u0000\u19ec\u19ee\u0005"+ + "/\u0000\u0000\u19ed\u19ec\u0001\u0000\u0000\u0000\u19ee\u19f1\u0001\u0000"+ + "\u0000\u0000\u19ef\u19ed\u0001\u0000\u0000\u0000\u19ef\u19f0\u0001\u0000"+ + "\u0000\u0000\u19f0\u19f2\u0001\u0000\u0000\u0000\u19f1\u19ef\u0001\u0000"+ + "\u0000\u0000\u19f2\u1a03\u0003\u0555\u02a8\u0000\u19f3\u1a03\b-\u0000"+ + "\u0000\u19f4\u19f6\u0005/\u0000\u0000\u19f5\u19f4\u0001\u0000\u0000\u0000"+ + "\u19f6\u19f7\u0001\u0000\u0000\u0000\u19f7\u19f5\u0001\u0000\u0000\u0000"+ + "\u19f7\u19f8\u0001\u0000\u0000\u0000\u19f8\u19f9\u0001\u0000\u0000\u0000"+ + "\u19f9\u1a01\b-\u0000\u0000\u19fa\u19fc\u0005*\u0000\u0000\u19fb\u19fa"+ + "\u0001\u0000\u0000\u0000\u19fc\u19fd\u0001\u0000\u0000\u0000\u19fd\u19fb"+ + "\u0001\u0000\u0000\u0000\u19fd\u19fe\u0001\u0000\u0000\u0000\u19fe\u19ff"+ + "\u0001\u0000\u0000\u0000\u19ff\u1a01\b-\u0000\u0000\u1a00\u19f5\u0001"+ + "\u0000\u0000\u0000\u1a00\u19fb\u0001\u0000\u0000\u0000\u1a01\u1a03\u0001"+ + "\u0000\u0000\u0000\u1a02\u19ef\u0001\u0000\u0000\u0000\u1a02\u19f3\u0001"+ + "\u0000\u0000\u0000\u1a02\u1a00\u0001\u0000\u0000\u0000\u1a03\u1a06\u0001"+ + "\u0000\u0000\u0000\u1a04\u1a02\u0001\u0000\u0000\u0000\u1a04\u1a05\u0001"+ + "\u0000\u0000\u0000\u1a05\u1a18\u0001\u0000\u0000\u0000\u1a06\u1a04\u0001"+ + "\u0000\u0000\u0000\u1a07\u1a09\u0005/\u0000\u0000\u1a08\u1a07\u0001\u0000"+ + "\u0000\u0000\u1a09\u1a0a\u0001\u0000\u0000\u0000\u1a0a\u1a08\u0001\u0000"+ + "\u0000\u0000\u1a0a\u1a0b\u0001\u0000\u0000\u0000\u1a0b\u1a19\u0001\u0000"+ + "\u0000\u0000\u1a0c\u1a0e\u0005*\u0000\u0000\u1a0d\u1a0c\u0001\u0000\u0000"+ + "\u0000\u1a0e\u1a0f\u0001\u0000\u0000\u0000\u1a0f\u1a0d\u0001\u0000\u0000"+ + "\u0000\u1a0f\u1a10\u0001\u0000\u0000\u0000\u1a10\u1a19\u0001\u0000\u0000"+ + "\u0000\u1a11\u1a13\u0005/\u0000\u0000\u1a12\u1a11\u0001\u0000\u0000\u0000"+ + "\u1a13\u1a16\u0001\u0000\u0000\u0000\u1a14\u1a12\u0001\u0000\u0000\u0000"+ + "\u1a14\u1a15\u0001\u0000\u0000\u0000\u1a15\u1a17\u0001\u0000\u0000\u0000"+ + "\u1a16\u1a14\u0001\u0000\u0000\u0000\u1a17\u1a19\u0003\u0557\u02a9\u0000"+ + "\u1a18\u1a08\u0001\u0000\u0000\u0000\u1a18\u1a0d\u0001\u0000\u0000\u0000"+ + "\u1a18\u1a14\u0001\u0000\u0000\u0000\u1a18\u1a19\u0001\u0000\u0000\u0000"+ + "\u1a19\u1a1a\u0001\u0000\u0000\u0000\u1a1a\u1a1b\u0006\u02a9\b\u0000\u1a1b"+ + "\u0558\u0001\u0000\u0000\u0000\u1a1c\u1a28\u0005\\\u0000\u0000\u1a1d\u1a27"+ + "\b.\u0000\u0000\u1a1e\u1a22\u0005\"\u0000\u0000\u1a1f\u1a21\b/\u0000\u0000"+ + "\u1a20\u1a1f\u0001\u0000\u0000\u0000\u1a21\u1a24\u0001\u0000\u0000\u0000"+ + "\u1a22\u1a20\u0001\u0000\u0000\u0000\u1a22\u1a23\u0001\u0000\u0000\u0000"+ + "\u1a23\u1a25\u0001\u0000\u0000\u0000\u1a24\u1a22\u0001\u0000\u0000\u0000"+ + "\u1a25\u1a27\u0005\"\u0000\u0000\u1a26\u1a1d\u0001\u0000\u0000\u0000\u1a26"+ + "\u1a1e\u0001\u0000\u0000\u0000\u1a27\u1a2a\u0001\u0000\u0000\u0000\u1a28"+ + "\u1a26\u0001\u0000\u0000\u0000\u1a28\u1a29\u0001\u0000\u0000\u0000\u1a29"+ + "\u1a32\u0001\u0000\u0000\u0000\u1a2a\u1a28\u0001\u0000\u0000\u0000\u1a2b"+ + "\u1a2f\u0005\"\u0000\u0000\u1a2c\u1a2e\b/\u0000\u0000\u1a2d\u1a2c\u0001"+ + "\u0000\u0000\u0000\u1a2e\u1a31\u0001\u0000\u0000\u0000\u1a2f\u1a2d\u0001"+ + "\u0000\u0000\u0000\u1a2f\u1a30\u0001\u0000\u0000\u0000\u1a30\u1a33\u0001"+ + "\u0000\u0000\u0000\u1a31\u1a2f\u0001\u0000\u0000\u0000\u1a32\u1a2b\u0001"+ + "\u0000\u0000\u0000\u1a32\u1a33\u0001\u0000\u0000\u0000\u1a33\u055a\u0001"+ + "\u0000\u0000\u0000\u1a34\u1a35\u0005\\\u0000\u0000\u1a35\u1a36\u0005\\"+ + "\u0000\u0000\u1a36\u055c\u0001\u0000\u0000\u0000\u1a37\u1a38\t\u0000\u0000"+ + "\u0000\u1a38\u055e\u0001\u0000\u0000\u0000\u1a39\u1a3a\u0003\u0563\u02af"+ + "\u0000\u1a3a\u1a3b\u0005\'\u0000\u0000\u1a3b\u1a3c\u0001\u0000\u0000\u0000"+ + "\u1a3c\u1a3d\u0006\u02ad\t\u0000\u1a3d\u0560\u0001\u0000\u0000\u0000\u1a3e"+ + "\u1a40\u0003\u0563\u02af\u0000\u1a3f\u1a41\u0005\\\u0000\u0000\u1a40\u1a3f"+ + "\u0001\u0000\u0000\u0000\u1a40\u1a41\u0001\u0000\u0000\u0000\u1a41\u1a42"+ + "\u0001\u0000\u0000\u0000\u1a42\u1a43\u0005\u0000\u0000\u0001\u1a43\u0562"+ + "\u0001\u0000\u0000\u0000\u1a44\u1a45\u0005\'\u0000\u0000\u1a45\u1a5c\u0005"+ + "\'\u0000\u0000\u1a46\u1a58\u0005\\\u0000\u0000\u1a47\u1a48\u0005x\u0000"+ + "\u0000\u1a48\u1a59\u0007\'\u0000\u0000\u1a49\u1a4a\u0005u\u0000\u0000"+ + "\u1a4a\u1a4b\u0007\'\u0000\u0000\u1a4b\u1a4c\u0007\'\u0000\u0000\u1a4c"+ + "\u1a4d\u0007\'\u0000\u0000\u1a4d\u1a59\u0007\'\u0000\u0000\u1a4e\u1a4f"+ + "\u0005U\u0000\u0000\u1a4f\u1a50\u0007\'\u0000\u0000\u1a50\u1a51\u0007"+ + "\'\u0000\u0000\u1a51\u1a52\u0007\'\u0000\u0000\u1a52\u1a53\u0007\'\u0000"+ + "\u0000\u1a53\u1a54\u0007\'\u0000\u0000\u1a54\u1a55\u0007\'\u0000\u0000"+ + "\u1a55\u1a56\u0007\'\u0000\u0000\u1a56\u1a59\u0007\'\u0000\u0000\u1a57"+ + "\u1a59\b0\u0000\u0000\u1a58\u1a47\u0001\u0000\u0000\u0000\u1a58\u1a49"+ + "\u0001\u0000\u0000\u0000\u1a58\u1a4e\u0001\u0000\u0000\u0000\u1a58\u1a57"+ + "\u0001\u0000\u0000\u0000\u1a59\u1a5c\u0001\u0000\u0000\u0000\u1a5a\u1a5c"+ + "\b1\u0000\u0000\u1a5b\u1a44\u0001\u0000\u0000\u0000\u1a5b\u1a46\u0001"+ + "\u0000\u0000\u0000\u1a5b\u1a5a\u0001\u0000\u0000\u0000\u1a5c\u1a5f\u0001"+ + "\u0000\u0000\u0000\u1a5d\u1a5b\u0001\u0000\u0000\u0000\u1a5d\u1a5e\u0001"+ + "\u0000\u0000\u0000\u1a5e\u0564\u0001\u0000\u0000\u0000\u1a5f\u1a5d\u0001"+ + "\u0000\u0000\u0000\u1a60\u1a61\u0003\u0569\u02b2\u0000\u1a61\u1a62\u0005"+ + "\'\u0000\u0000\u1a62\u1a63\u0001\u0000\u0000\u0000\u1a63\u1a64\u0006\u02b0"+ + "\t\u0000\u1a64\u0566\u0001\u0000\u0000\u0000\u1a65\u1a67\u0003\u0569\u02b2"+ + "\u0000\u1a66\u1a68\u0005\\\u0000\u0000\u1a67\u1a66\u0001\u0000\u0000\u0000"+ + "\u1a67\u1a68\u0001\u0000\u0000\u0000\u1a68\u1a69\u0001\u0000\u0000\u0000"+ + "\u1a69\u1a6a\u0005\u0000\u0000\u0001\u1a6a\u0568\u0001\u0000\u0000\u0000"+ + "\u1a6b\u1a6c\u0005\'\u0000\u0000\u1a6c\u1a71\u0005\'\u0000\u0000\u1a6d"+ + "\u1a6e\u0005\\\u0000\u0000\u1a6e\u1a71\t\u0000\u0000\u0000\u1a6f\u1a71"+ + "\b1\u0000\u0000\u1a70\u1a6b\u0001\u0000\u0000\u0000\u1a70\u1a6d\u0001"+ + "\u0000\u0000\u0000\u1a70\u1a6f\u0001\u0000\u0000\u0000\u1a71\u1a74\u0001"+ + "\u0000\u0000\u0000\u1a72\u1a70\u0001\u0000\u0000\u0000\u1a72\u1a73\u0001"+ + "\u0000\u0000\u0000\u1a73\u056a\u0001\u0000\u0000\u0000\u1a74\u1a72\u0001"+ + "\u0000\u0000\u0000\u1a75\u1a76\u0003\u054f\u02a5\u0000\u1a76\u1a77\u0001"+ + "\u0000\u0000\u0000\u1a77\u1a78\u0006\u02b3\n\u0000\u1a78\u1a79\u0006\u02b3"+ + "\u0007\u0000\u1a79\u056c\u0001\u0000\u0000\u0000\u1a7a\u1a7b\u0003\u0551"+ + "\u02a6\u0000\u1a7b\u1a7c\u0001\u0000\u0000\u0000\u1a7c\u1a7d\u0006\u02b4"+ + "\u000b\u0000\u1a7d\u1a7e\u0006\u02b4\u0007\u0000\u1a7e\u1a7f\u0006\u02b4"+ + "\f\u0000\u1a7f\u056e\u0001\u0000\u0000\u0000\u1a80\u1a81\u0006\u02b5\r"+ + "\u0000\u1a81\u1a82\u0001\u0000\u0000\u0000\u1a82\u1a83\u0006\u02b5\u000e"+ + "\u0000\u1a83\u1a84\u0006\u02b5\u000f\u0000\u1a84\u0570\u0001\u0000\u0000"+ + "\u0000\u1a85\u1a86\u0003\u054f\u02a5\u0000\u1a86\u1a87\u0001\u0000\u0000"+ + "\u0000\u1a87\u1a88\u0006\u02b6\n\u0000\u1a88\u1a89\u0006\u02b6\u0007\u0000"+ + "\u1a89\u0572\u0001\u0000\u0000\u0000\u1a8a\u1a8b\u0003\u0551\u02a6\u0000"+ + "\u1a8b\u1a8c\u0001\u0000\u0000\u0000\u1a8c\u1a8d\u0006\u02b7\u000b\u0000"+ + "\u1a8d\u1a8e\u0006\u02b7\u0007\u0000\u1a8e\u0574\u0001\u0000\u0000\u0000"+ + "\u1a8f\u1a90\u0005\'\u0000\u0000\u1a90\u1a91\u0001\u0000\u0000\u0000\u1a91"+ + "\u1a92\u0006\u02b8\u0002\u0000\u1a92\u1a93\u0006\u02b8\u0010\u0000\u1a93"+ + "\u0576\u0001\u0000\u0000\u0000\u1a94\u1a95\u0006\u02b9\u0011\u0000\u1a95"+ + "\u1a96\u0001\u0000\u0000\u0000\u1a96\u1a97\u0006\u02b9\u000e\u0000\u1a97"+ + "\u1a98\u0006\u02b9\u000f\u0000\u1a98\u0578\u0001\u0000\u0000\u0000\u1a99"+ + "\u1a9b\b2\u0000\u0000\u1a9a\u1a99\u0001\u0000\u0000\u0000\u1a9b\u1a9c"+ + "\u0001\u0000\u0000\u0000\u1a9c\u1a9a\u0001\u0000\u0000\u0000\u1a9c\u1a9d"+ + "\u0001\u0000\u0000\u0000\u1a9d\u1aa6\u0001\u0000\u0000\u0000\u1a9e\u1aa2"+ + "\u0005$\u0000\u0000\u1a9f\u1aa1\b2\u0000\u0000\u1aa0\u1a9f\u0001\u0000"+ + "\u0000\u0000\u1aa1\u1aa4\u0001\u0000\u0000\u0000\u1aa2\u1aa0\u0001\u0000"+ + "\u0000\u0000\u1aa2\u1aa3\u0001\u0000\u0000\u0000\u1aa3\u1aa6\u0001\u0000"+ + "\u0000\u0000\u1aa4\u1aa2\u0001\u0000\u0000\u0000\u1aa5\u1a9a\u0001\u0000"+ + "\u0000\u0000\u1aa5\u1a9e\u0001\u0000\u0000\u0000\u1aa6\u057a\u0001\u0000"+ + "\u0000\u0000\u1aa7\u1aa9\u0005$\u0000\u0000\u1aa8\u1aaa\u0003\u0531\u0296"+ + "\u0000\u1aa9\u1aa8\u0001\u0000\u0000\u0000\u1aa9\u1aaa\u0001\u0000\u0000"+ + "\u0000\u1aaa\u1aab\u0001\u0000\u0000\u0000\u1aab\u1aac\u0005$\u0000\u0000"+ + "\u1aac\u1aad\u0001\u0000\u0000\u0000\u1aad\u1aae\u0004\u02bb\b\u0000\u1aae"+ + "\u1aaf\u0006\u02bb\u0012\u0000\u1aaf\u1ab0\u0001\u0000\u0000\u0000\u1ab0"+ + "\u1ab1\u0006\u02bb\u000f\u0000\u1ab1\u057c\u0001\u0000\u0000\u0000N\u0000"+ + "\u0001\u0002\u0003\u0004\u05c0\u05c6\u05c8\u05cd\u05d1\u05d3\u05d6\u05df"+ + "\u05e1\u05e6\u05eb\u05ed\u18df\u18e8\u18ec\u18f0\u18f9\u18fb\u1905\u1907"+ + "\u1921\u1923\u1935\u1940\u194b\u195c\u1970\u1974\u1977\u197d\u1980\u1985"+ + "\u1989\u198e\u1995\u19a0\u19a2\u19aa\u19b0\u19b3\u19bd\u19c8\u19d0\u19d6"+ + "\u19d9\u19db\u19e1\u19ef\u19f7\u19fd\u1a00\u1a02\u1a04\u1a0a\u1a0f\u1a14"+ + "\u1a18\u1a22\u1a26\u1a28\u1a2f\u1a32\u1a40\u1a58\u1a5b\u1a5d\u1a67\u1a70"+ + "\u1a72\u1a9c\u1aa2\u1aa5\u1aa9\u0013\u0001\u001c\u0000\u0007\u001d\u0000"+ + "\u0003\u0000\u0000\u0005\u0001\u0000\u0001\u0295\u0001\u0005\u0004\u0000"+ + "\u0001\u02a0\u0002\u0000\u0001\u0000\u0001\u02a9\u0003\u0002\u0002\u0000"+ + "\u0007\u029c\u0000\u0007\u029d\u0000\u0002\u0003\u0000\u0001\u02b5\u0004"+ + "\u0006\u0000\u0000\u0004\u0000\u0000\u0002\u0001\u0000\u0001\u02b9\u0005"+ + "\u0001\u02bb\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..5f0f567336 --- /dev/null +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens @@ -0,0 +1,1324 @@ +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 +TOPICS=96 +STREAM=97 +ZVIEW=98 +ZVIEWS=99 +TRAILING=100 +TRUE_P=101 +UNION=102 +UNIQUE=103 +USER=104 +USING=105 +VARIADIC=106 +WHEN=107 +WHERE=108 +WINDOW=109 +WITH=110 +AUTHORIZATION=111 +BINARY=112 +COLLATION=113 +CONCURRENTLY=114 +CROSS=115 +CURRENT_SCHEMA=116 +FREEZE=117 +FULL=118 +ILIKE=119 +INNER_P=120 +IS=121 +ISNULL=122 +JOIN=123 +LEFT=124 +LIKE=125 +NATURAL=126 +NOTNULL=127 +OUTER_P=128 +OVER=129 +OVERLAPS=130 +RIGHT=131 +SIMILAR=132 +VERBOSE=133 +ABORT_P=134 +ABSOLUTE_P=135 +ACCESS=136 +ACTION=137 +ADD_P=138 +ADMIN=139 +AFTER=140 +AGGREGATE=141 +ALSO=142 +ALTER=143 +ALWAYS=144 +ASSERTION=145 +ASSIGNMENT=146 +AT=147 +ATTRIBUTE=148 +BACKWARD=149 +BEFORE=150 +BEGIN_P=151 +BY=152 +CACHE=153 +CALLED=154 +CASCADE=155 +CASCADED=156 +CATALOG=157 +CHAIN=158 +CHARACTERISTICS=159 +CHECKPOINT=160 +CLASS=161 +CLOSE=162 +CLUSTER=163 +COMMENT=164 +COMMENTS=165 +COMMIT=166 +COMMITTED=167 +CONFIGURATION=168 +CONNECTION=169 +CONSTRAINTS=170 +CONTENT_P=171 +CONTINUE_P=172 +CONVERSION_P=173 +COPY=174 +COST=175 +CSV=176 +CURSOR=177 +CYCLE=178 +DATA_P=179 +DATABASE=180 +DAY_P=181 +DEALLOCATE=182 +DECLARE=183 +DEFAULTS=184 +DEFERRED=185 +DEFINER=186 +DELETE_P=187 +DELIMITER=188 +DELIMITERS=189 +DICTIONARY=190 +DISABLE_P=191 +DISCARD=192 +DOCUMENT_P=193 +DOMAIN_P=194 +DOUBLE_P=195 +DROP=196 +EACH=197 +ENABLE_P=198 +ENCODING=199 +ENCRYPTED=200 +ENUM_P=201 +ESCAPE=202 +EVENT=203 +EXCLUDE=204 +EXCLUDING=205 +EXCLUSIVE=206 +EXECUTE=207 +EXPLAIN=208 +EXTENSION=209 +EXTERNAL=210 +FAMILY=211 +FIRST_P=212 +FOLLOWING=213 +FORCE=214 +FORWARD=215 +FUNCTION=216 +FUNCTIONS=217 +GLOBAL=218 +GRANTED=219 +HANDLER=220 +HEADER_P=221 +HOLD=222 +HOUR_P=223 +IDENTITY_P=224 +IF_P=225 +IMMEDIATE=226 +IMMUTABLE=227 +IMPLICIT_P=228 +INCLUDING=229 +INCREMENT=230 +INDEX=231 +INDEXES=232 +INHERIT=233 +INHERITS=234 +INLINE_P=235 +INSENSITIVE=236 +INSERT=237 +INSTEAD=238 +INVOKER=239 +ISOLATION=240 +KEY=241 +LABEL=242 +LANGUAGE=243 +LARGE_P=244 +LAST_P=245 +LEAKPROOF=246 +LEVEL=247 +LISTEN=248 +LOAD=249 +LOCAL=250 +LOCATION=251 +LOCK_P=252 +MAPPING=253 +MATCH=254 +MATCHED=255 +MATERIALIZED=256 +MAXVALUE=257 +MERGE=258 +MINUTE_P=259 +MINVALUE=260 +MODE=261 +MONTH_P=262 +MOVE=263 +NAME_P=264 +NAMES=265 +NEXT=266 +NO=267 +NOTHING=268 +NOTIFY=269 +NOWAIT=270 +NULLS_P=271 +OBJECT_P=272 +OF=273 +OFF=274 +OIDS=275 +OPERATOR=276 +OPTION=277 +OPTIONS=278 +OWNED=279 +OWNER=280 +PARSER=281 +PARTIAL=282 +PARTITION=283 +PASSING=284 +PASSWORD=285 +PLANS=286 +PRECEDING=287 +PREPARE=288 +PREPARED=289 +PRESERVE=290 +PRIOR=291 +PRIVILEGES=292 +PROCEDURAL=293 +PROCEDURE=294 +PROGRAM=295 +QUOTE=296 +RANGE=297 +READ=298 +REASSIGN=299 +RECHECK=300 +RECURSIVE=301 +REF=302 +REFRESH=303 +REINDEX=304 +RELATIVE_P=305 +RELEASE=306 +RENAME=307 +REPEATABLE=308 +REPLACE=309 +REPLICA=310 +RESET=311 +RESTART=312 +RESTRICT=313 +RETURNS=314 +REVOKE=315 +ROLE=316 +ROLLBACK=317 +ROWS=318 +RULE=319 +SAVEPOINT=320 +SCHEMA=321 +SCROLL=322 +SEARCH=323 +SECOND_P=324 +SECURITY=325 +SEQUENCE=326 +SEQUENCES=327 +SERIALIZABLE=328 +SERVER=329 +SESSION=330 +SET=331 +SHARE=332 +SHOW=333 +SIMPLE=334 +SNAPSHOT=335 +STABLE=336 +STANDALONE_P=337 +START=338 +STATEMENT=339 +STATISTICS=340 +STDIN=341 +STDOUT=342 +STORAGE=343 +STRICT_P=344 +STRIP_P=345 +SYSID=346 +SYSTEM_P=347 +TABLES=348 +TABLESPACE=349 +TEMP=350 +TEMPLATE=351 +TEMPORARY=352 +TEXT_P=353 +TRANSACTION=354 +TRIGGER=355 +TRUNCATE=356 +TRUSTED=357 +TYPE_P=358 +TYPES_P=359 +UNBOUNDED=360 +UNCOMMITTED=361 +UNENCRYPTED=362 +UNKNOWN=363 +UNLISTEN=364 +UNLOGGED=365 +UNTIL=366 +UPDATE=367 +VACUUM=368 +VALID=369 +VALIDATE=370 +VALIDATOR=371 +VARYING=372 +VERSION_P=373 +VIEW=374 +VOLATILE=375 +WHITESPACE_P=376 +WITHOUT=377 +WORK=378 +WRAPPER=379 +WRITE=380 +XML_P=381 +YEAR_P=382 +YES_P=383 +ZONE=384 +BETWEEN=385 +BIGINT=386 +BIT=387 +BOOLEAN_P=388 +CHAR_P=389 +CHARACTER=390 +COALESCE=391 +DEC=392 +DECIMAL_P=393 +EXISTS=394 +EXTRACT=395 +FLOAT_P=396 +GREATEST=397 +INOUT=398 +INT_P=399 +INTEGER=400 +INTERVAL=401 +LEAST=402 +NATIONAL=403 +NCHAR=404 +NONE=405 +NULLIF=406 +NUMERIC=407 +OVERLAY=408 +POSITION=409 +PRECISION=410 +REAL=411 +ROW=412 +SETOF=413 +SMALLINT=414 +SUBSTRING=415 +TIME=416 +TIMESTAMP=417 +TREAT=418 +TRIM=419 +VALUES=420 +VARCHAR=421 +XMLATTRIBUTES=422 +XMLCOMMENT=423 +XMLAGG=424 +XML_IS_WELL_FORMED=425 +XML_IS_WELL_FORMED_DOCUMENT=426 +XML_IS_WELL_FORMED_CONTENT=427 +XPATH=428 +XPATH_EXISTS=429 +XMLCONCAT=430 +XMLELEMENT=431 +XMLEXISTS=432 +XMLFOREST=433 +XMLPARSE=434 +XMLPI=435 +XMLROOT=436 +XMLSERIALIZE=437 +CALL=438 +CURRENT_P=439 +ATTACH=440 +DETACH=441 +EXPRESSION=442 +GENERATED=443 +LOGGED=444 +STORED=445 +INCLUDE=446 +ROUTINE=447 +TRANSFORM=448 +IMPORT_P=449 +POLICY=450 +METHOD=451 +REFERENCING=452 +NEW=453 +OLD=454 +VALUE_P=455 +SUBSCRIPTION=456 +PUBLICATION=457 +OUT_P=458 +END_P=459 +ROUTINES=460 +SCHEMAS=461 +PROCEDURES=462 +INPUT_P=463 +SUPPORT=464 +PARALLEL=465 +SQL_P=466 +DEPENDS=467 +OVERRIDING=468 +CONFLICT=469 +SKIP_P=470 +LOCKED=471 +TIES=472 +ROLLUP=473 +CUBE=474 +GROUPING=475 +SETS=476 +TABLESAMPLE=477 +ORDINALITY=478 +XMLTABLE=479 +COLUMNS=480 +XMLNAMESPACES=481 +ROWTYPE=482 +NORMALIZED=483 +WITHIN=484 +FILTER=485 +GROUPS=486 +OTHERS=487 +NFC=488 +NFD=489 +NFKC=490 +NFKD=491 +UESCAPE=492 +VIEWS=493 +NORMALIZE=494 +DUMP=495 +PRINT_STRICT_PARAMS=496 +VARIABLE_CONFLICT=497 +ERROR=498 +USE_VARIABLE=499 +USE_COLUMN=500 +ALIAS=501 +CONSTANT=502 +PERFORM=503 +GET=504 +DIAGNOSTICS=505 +STACKED=506 +ELSIF=507 +WHILE=508 +REVERSE=509 +FOREACH=510 +SLICE=511 +EXIT=512 +RETURN=513 +QUERY=514 +RAISE=515 +SQLSTATE=516 +DEBUG=517 +LOG=518 +INFO=519 +NOTICE=520 +WARNING=521 +EXCEPTION=522 +ASSERT=523 +LOOP=524 +OPEN=525 +ABS=526 +CBRT=527 +CEIL=528 +CEILING=529 +DEGREES=530 +DIV=531 +EXP=532 +FACTORIAL=533 +FLOOR=534 +GCD=535 +LCM=536 +LN=537 +LOG10=538 +MIN_SCALE=539 +MOD=540 +PI=541 +POWER=542 +RADIANS=543 +ROUND=544 +SCALE=545 +SIGN=546 +SQRT=547 +TRIM_SCALE=548 +TRUNC=549 +WIDTH_BUCKET=550 +RANDOM=551 +SETSEED=552 +ACOS=553 +ACOSD=554 +ASIN=555 +ASIND=556 +ATAN=557 +ATAND=558 +ATAN2=559 +ATAN2D=560 +COS=561 +COSD=562 +COT=563 +COTD=564 +SIN=565 +SIND=566 +TAN=567 +TAND=568 +SINH=569 +COSH=570 +TANH=571 +ASINH=572 +ACOSH=573 +ATANH=574 +BIT_LENGTH=575 +CHAR_LENGTH=576 +CHARACTER_LENGTH=577 +LOWER=578 +OCTET_LENGTH=579 +UPPER=580 +ASCII=581 +BTRIM=582 +CHR=583 +CONCAT=584 +CONCAT_WS=585 +FORMAT=586 +INITCAP=587 +LENGTH=588 +LPAD=589 +LTRIM=590 +MD5=591 +PARSE_IDENT=592 +PG_CLIENT_ENCODING=593 +QUOTE_IDENT=594 +QUOTE_LITERAL=595 +QUOTE_NULLABLE=596 +REGEXP_COUNT=597 +REGEXP_INSTR=598 +REGEXP_LIKE=599 +REGEXP_MATCH=600 +REGEXP_MATCHES=601 +REGEXP_REPLACE=602 +REGEXP_SPLIT_TO_ARRAY=603 +REGEXP_SPLIT_TO_TABLE=604 +REGEXP_SUBSTR=605 +REPEAT=606 +RPAD=607 +RTRIM=608 +SPLIT_PART=609 +STARTS_WITH=610 +STRING_TO_ARRAY=611 +STRING_TO_TABLE=612 +STRPOS=613 +SUBSTR=614 +TO_ASCII=615 +TO_HEX=616 +TRANSLATE=617 +UNISTR=618 +AGE=619 +CLOCK_TIMESTAMP=620 +DATE_BIN=621 +DATE_PART=622 +DATE_TRUNC=623 +ISFINITE=624 +JUSTIFY_DAYS=625 +JUSTIFY_HOURS=626 +JUSTIFY_INTERVAL=627 +MAKE_DATE=628 +MAKE_INTERVAL=629 +MAKE_TIME=630 +MAKE_TIMESTAMP=631 +MAKE_TIMESTAMPTZ=632 +NOW=633 +STATEMENT_TIMESTAMP=634 +TIMEOFDAY=635 +TRANSACTION_TIMESTAMP=636 +TO_TIMESTAMP=637 +TO_CHAR=638 +TO_DATE=639 +TO_NUMBER=640 +Identifier=641 +QuotedIdentifier=642 +UnterminatedQuotedIdentifier=643 +InvalidQuotedIdentifier=644 +InvalidUnterminatedQuotedIdentifier=645 +UnicodeQuotedIdentifier=646 +UnterminatedUnicodeQuotedIdentifier=647 +InvalidUnicodeQuotedIdentifier=648 +InvalidUnterminatedUnicodeQuotedIdentifier=649 +StringConstant=650 +UnterminatedStringConstant=651 +UnicodeEscapeStringConstant=652 +UnterminatedUnicodeEscapeStringConstant=653 +BeginDollarStringConstant=654 +BinaryStringConstant=655 +UnterminatedBinaryStringConstant=656 +InvalidBinaryStringConstant=657 +InvalidUnterminatedBinaryStringConstant=658 +HexadecimalStringConstant=659 +UnterminatedHexadecimalStringConstant=660 +InvalidHexadecimalStringConstant=661 +InvalidUnterminatedHexadecimalStringConstant=662 +Integral=663 +NumericFail=664 +Numeric=665 +PLSQLVARIABLENAME=666 +PLSQLIDENTIFIER=667 +Whitespace=668 +Newline=669 +LineComment=670 +BlockComment=671 +UnterminatedBlockComment=672 +MetaCommand=673 +EndMetaCommand=674 +ErrorCharacter=675 +EscapeStringConstant=676 +UnterminatedEscapeStringConstant=677 +InvalidEscapeStringConstant=678 +InvalidUnterminatedEscapeStringConstant=679 +AfterEscapeStringConstantMode_NotContinued=680 +AfterEscapeStringConstantWithNewlineMode_NotContinued=681 +DollarText=682 +EndDollarStringConstant=683 +AfterEscapeStringConstantWithNewlineMode_Continued=684 +'$'=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 +'TOPICS'=96 +'STREAM'=97 +'ZVIEW'=98 +'ZVIEWS'=99 +'TRAILING'=100 +'TRUE'=101 +'UNION'=102 +'UNIQUE'=103 +'USER'=104 +'USING'=105 +'VARIADIC'=106 +'WHEN'=107 +'WHERE'=108 +'WINDOW'=109 +'WITH'=110 +'AUTHORIZATION'=111 +'BINARY'=112 +'COLLATION'=113 +'CONCURRENTLY'=114 +'CROSS'=115 +'CURRENT_SCHEMA'=116 +'FREEZE'=117 +'FULL'=118 +'ILIKE'=119 +'INNER'=120 +'IS'=121 +'ISNULL'=122 +'JOIN'=123 +'LEFT'=124 +'LIKE'=125 +'NATURAL'=126 +'NOTNULL'=127 +'OUTER'=128 +'OVER'=129 +'OVERLAPS'=130 +'RIGHT'=131 +'SIMILAR'=132 +'VERBOSE'=133 +'ABORT'=134 +'ABSOLUTE'=135 +'ACCESS'=136 +'ACTION'=137 +'ADD'=138 +'ADMIN'=139 +'AFTER'=140 +'AGGREGATE'=141 +'ALSO'=142 +'ALTER'=143 +'ALWAYS'=144 +'ASSERTION'=145 +'ASSIGNMENT'=146 +'AT'=147 +'ATTRIBUTE'=148 +'BACKWARD'=149 +'BEFORE'=150 +'BEGIN'=151 +'BY'=152 +'CACHE'=153 +'CALLED'=154 +'CASCADE'=155 +'CASCADED'=156 +'CATALOG'=157 +'CHAIN'=158 +'CHARACTERISTICS'=159 +'CHECKPOINT'=160 +'CLASS'=161 +'CLOSE'=162 +'CLUSTER'=163 +'COMMENT'=164 +'COMMENTS'=165 +'COMMIT'=166 +'COMMITTED'=167 +'CONFIGURATION'=168 +'CONNECTION'=169 +'CONSTRAINTS'=170 +'CONTENT'=171 +'CONTINUE'=172 +'CONVERSION'=173 +'COPY'=174 +'COST'=175 +'CSV'=176 +'CURSOR'=177 +'CYCLE'=178 +'DATA'=179 +'DATABASE'=180 +'DAY'=181 +'DEALLOCATE'=182 +'DECLARE'=183 +'DEFAULTS'=184 +'DEFERRED'=185 +'DEFINER'=186 +'DELETE'=187 +'DELIMITER'=188 +'DELIMITERS'=189 +'DICTIONARY'=190 +'DISABLE'=191 +'DISCARD'=192 +'DOCUMENT'=193 +'DOMAIN'=194 +'DOUBLE'=195 +'DROP'=196 +'EACH'=197 +'ENABLE'=198 +'ENCODING'=199 +'ENCRYPTED'=200 +'ENUM'=201 +'ESCAPE'=202 +'EVENT'=203 +'EXCLUDE'=204 +'EXCLUDING'=205 +'EXCLUSIVE'=206 +'EXECUTE'=207 +'EXPLAIN'=208 +'EXTENSION'=209 +'EXTERNAL'=210 +'FAMILY'=211 +'FIRST'=212 +'FOLLOWING'=213 +'FORCE'=214 +'FORWARD'=215 +'FUNCTION'=216 +'FUNCTIONS'=217 +'GLOBAL'=218 +'GRANTED'=219 +'HANDLER'=220 +'HEADER'=221 +'HOLD'=222 +'HOUR'=223 +'IDENTITY'=224 +'IF'=225 +'IMMEDIATE'=226 +'IMMUTABLE'=227 +'IMPLICIT'=228 +'INCLUDING'=229 +'INCREMENT'=230 +'INDEX'=231 +'INDEXES'=232 +'INHERIT'=233 +'INHERITS'=234 +'INLINE'=235 +'INSENSITIVE'=236 +'INSERT'=237 +'INSTEAD'=238 +'INVOKER'=239 +'ISOLATION'=240 +'KEY'=241 +'LABEL'=242 +'LANGUAGE'=243 +'LARGE'=244 +'LAST'=245 +'LEAKPROOF'=246 +'LEVEL'=247 +'LISTEN'=248 +'LOAD'=249 +'LOCAL'=250 +'LOCATION'=251 +'LOCK'=252 +'MAPPING'=253 +'MATCH'=254 +'MATCHED'=255 +'MATERIALIZED'=256 +'MAXVALUE'=257 +'MERGE'=258 +'MINUTE'=259 +'MINVALUE'=260 +'MODE'=261 +'MONTH'=262 +'MOVE'=263 +'NAME'=264 +'NAMES'=265 +'NEXT'=266 +'NO'=267 +'NOTHING'=268 +'NOTIFY'=269 +'NOWAIT'=270 +'NULLS'=271 +'OBJECT'=272 +'OF'=273 +'OFF'=274 +'OIDS'=275 +'OPERATOR'=276 +'OPTION'=277 +'OPTIONS'=278 +'OWNED'=279 +'OWNER'=280 +'PARSER'=281 +'PARTIAL'=282 +'PARTITION'=283 +'PASSING'=284 +'PASSWORD'=285 +'PLANS'=286 +'PRECEDING'=287 +'PREPARE'=288 +'PREPARED'=289 +'PRESERVE'=290 +'PRIOR'=291 +'PRIVILEGES'=292 +'PROCEDURAL'=293 +'PROCEDURE'=294 +'PROGRAM'=295 +'QUOTE'=296 +'RANGE'=297 +'READ'=298 +'REASSIGN'=299 +'RECHECK'=300 +'RECURSIVE'=301 +'REF'=302 +'REFRESH'=303 +'REINDEX'=304 +'RELATIVE'=305 +'RELEASE'=306 +'RENAME'=307 +'REPEATABLE'=308 +'REPLACE'=309 +'REPLICA'=310 +'RESET'=311 +'RESTART'=312 +'RESTRICT'=313 +'RETURNS'=314 +'REVOKE'=315 +'ROLE'=316 +'ROLLBACK'=317 +'ROWS'=318 +'RULE'=319 +'SAVEPOINT'=320 +'SCHEMA'=321 +'SCROLL'=322 +'SEARCH'=323 +'SECOND'=324 +'SECURITY'=325 +'SEQUENCE'=326 +'SEQUENCES'=327 +'SERIALIZABLE'=328 +'SERVER'=329 +'SESSION'=330 +'SET'=331 +'SHARE'=332 +'SHOW'=333 +'SIMPLE'=334 +'SNAPSHOT'=335 +'STABLE'=336 +'STANDALONE'=337 +'START'=338 +'STATEMENT'=339 +'STATISTICS'=340 +'STDIN'=341 +'STDOUT'=342 +'STORAGE'=343 +'STRICT'=344 +'STRIP'=345 +'SYSID'=346 +'SYSTEM'=347 +'TABLES'=348 +'TABLESPACE'=349 +'TEMP'=350 +'TEMPLATE'=351 +'TEMPORARY'=352 +'TEXT'=353 +'TRANSACTION'=354 +'TRIGGER'=355 +'TRUNCATE'=356 +'TRUSTED'=357 +'TYPE'=358 +'TYPES'=359 +'UNBOUNDED'=360 +'UNCOMMITTED'=361 +'UNENCRYPTED'=362 +'UNKNOWN'=363 +'UNLISTEN'=364 +'UNLOGGED'=365 +'UNTIL'=366 +'UPDATE'=367 +'VACUUM'=368 +'VALID'=369 +'VALIDATE'=370 +'VALIDATOR'=371 +'VARYING'=372 +'VERSION'=373 +'VIEW'=374 +'VOLATILE'=375 +'WHITESPACE'=376 +'WITHOUT'=377 +'WORK'=378 +'WRAPPER'=379 +'WRITE'=380 +'XML'=381 +'YEAR'=382 +'YES'=383 +'ZONE'=384 +'BETWEEN'=385 +'BIGINT'=386 +'BIT'=387 +'BOOLEAN'=388 +'CHAR'=389 +'CHARACTER'=390 +'COALESCE'=391 +'DEC'=392 +'DECIMAL'=393 +'EXISTS'=394 +'EXTRACT'=395 +'FLOAT'=396 +'GREATEST'=397 +'INOUT'=398 +'INT'=399 +'INTEGER'=400 +'INTERVAL'=401 +'LEAST'=402 +'NATIONAL'=403 +'NCHAR'=404 +'NONE'=405 +'NULLIF'=406 +'NUMERIC'=407 +'OVERLAY'=408 +'POSITION'=409 +'PRECISION'=410 +'REAL'=411 +'ROW'=412 +'SETOF'=413 +'SMALLINT'=414 +'SUBSTRING'=415 +'TIME'=416 +'TIMESTAMP'=417 +'TREAT'=418 +'TRIM'=419 +'VALUES'=420 +'VARCHAR'=421 +'XMLATTRIBUTES'=422 +'XMLCOMMENT'=423 +'XMLAGG'=424 +'XML_IS_WELL_FORMED'=425 +'XML_IS_WELL_FORMED_DOCUMENT'=426 +'XML_IS_WELL_FORMED_CONTENT'=427 +'XPATH'=428 +'XPATH_EXISTS'=429 +'XMLCONCAT'=430 +'XMLELEMENT'=431 +'XMLEXISTS'=432 +'XMLFOREST'=433 +'XMLPARSE'=434 +'XMLPI'=435 +'XMLROOT'=436 +'XMLSERIALIZE'=437 +'CALL'=438 +'CURRENT'=439 +'ATTACH'=440 +'DETACH'=441 +'EXPRESSION'=442 +'GENERATED'=443 +'LOGGED'=444 +'STORED'=445 +'INCLUDE'=446 +'ROUTINE'=447 +'TRANSFORM'=448 +'IMPORT'=449 +'POLICY'=450 +'METHOD'=451 +'REFERENCING'=452 +'NEW'=453 +'OLD'=454 +'VALUE'=455 +'SUBSCRIPTION'=456 +'PUBLICATION'=457 +'OUT'=458 +'END'=459 +'ROUTINES'=460 +'SCHEMAS'=461 +'PROCEDURES'=462 +'INPUT'=463 +'SUPPORT'=464 +'PARALLEL'=465 +'SQL'=466 +'DEPENDS'=467 +'OVERRIDING'=468 +'CONFLICT'=469 +'SKIP'=470 +'LOCKED'=471 +'TIES'=472 +'ROLLUP'=473 +'CUBE'=474 +'GROUPING'=475 +'SETS'=476 +'TABLESAMPLE'=477 +'ORDINALITY'=478 +'XMLTABLE'=479 +'COLUMNS'=480 +'XMLNAMESPACES'=481 +'ROWTYPE'=482 +'NORMALIZED'=483 +'WITHIN'=484 +'FILTER'=485 +'GROUPS'=486 +'OTHERS'=487 +'NFC'=488 +'NFD'=489 +'NFKC'=490 +'NFKD'=491 +'UESCAPE'=492 +'VIEWS'=493 +'NORMALIZE'=494 +'DUMP'=495 +'PRINT_STRICT_PARAMS'=496 +'VARIABLE_CONFLICT'=497 +'ERROR'=498 +'USE_VARIABLE'=499 +'USE_COLUMN'=500 +'ALIAS'=501 +'CONSTANT'=502 +'PERFORM'=503 +'GET'=504 +'DIAGNOSTICS'=505 +'STACKED'=506 +'ELSIF'=507 +'WHILE'=508 +'REVERSE'=509 +'FOREACH'=510 +'SLICE'=511 +'EXIT'=512 +'RETURN'=513 +'QUERY'=514 +'RAISE'=515 +'SQLSTATE'=516 +'DEBUG'=517 +'LOG'=518 +'INFO'=519 +'NOTICE'=520 +'WARNING'=521 +'EXCEPTION'=522 +'ASSERT'=523 +'LOOP'=524 +'OPEN'=525 +'ABS'=526 +'CBRT'=527 +'CEIL'=528 +'CEILING'=529 +'DEGREES'=530 +'DIV'=531 +'EXP'=532 +'FACTORIAL'=533 +'FLOOR'=534 +'GCD'=535 +'LCM'=536 +'LN'=537 +'LOG10'=538 +'MIN_SCALE'=539 +'MOD'=540 +'PI'=541 +'POWER'=542 +'RADIANS'=543 +'ROUND'=544 +'SCALE'=545 +'SIGN'=546 +'SQRT'=547 +'TRIM_SCALE'=548 +'TRUNC'=549 +'WIDTH_BUCKET'=550 +'RANDOM'=551 +'SETSEED'=552 +'ACOS'=553 +'ACOSD'=554 +'ASIN'=555 +'ASIND'=556 +'ATAN'=557 +'ATAND'=558 +'ATAN2'=559 +'ATAN2D'=560 +'COS'=561 +'COSD'=562 +'COT'=563 +'COTD'=564 +'SIN'=565 +'SIND'=566 +'TAN'=567 +'TAND'=568 +'SINH'=569 +'COSH'=570 +'TANH'=571 +'ASINH'=572 +'ACOSH'=573 +'ATANH'=574 +'BIT_LENGTH'=575 +'CHAR_LENGTH'=576 +'CHARACTER_LENGTH'=577 +'LOWER'=578 +'OCTET_LENGTH'=579 +'UPPER'=580 +'ASCII'=581 +'BTRIM'=582 +'CHR'=583 +'CONCAT'=584 +'CONCAT_WS'=585 +'FORMAT'=586 +'INITCAP'=587 +'LENGTH'=588 +'LPAD'=589 +'LTRIM'=590 +'MD5'=591 +'PARSE_IDENT'=592 +'PG_CLIENT_ENCODING'=593 +'QUOTE_IDENT'=594 +'QUOTE_LITERAL'=595 +'QUOTE_NULLABLE'=596 +'REGEXP_COUNT'=597 +'REGEXP_INSTR'=598 +'REGEXP_LIKE'=599 +'REGEXP_MATCH'=600 +'REGEXP_MATCHES'=601 +'REGEXP_REPLACE'=602 +'REGEXP_SPLIT_TO_ARRAY'=603 +'REGEXP_SPLIT_TO_TABLE'=604 +'REGEXP_SUBSTR'=605 +'REPEAT'=606 +'RPAD'=607 +'RTRIM'=608 +'SPLIT_PART'=609 +'STARTS_WITH'=610 +'STRING_TO_ARRAY'=611 +'STRING_TO_TABLE'=612 +'STRPOS'=613 +'SUBSTR'=614 +'TO_ASCII'=615 +'TO_HEX'=616 +'TRANSLATE'=617 +'UNISTR'=618 +'AGE'=619 +'CLOCK_TIMESTAMP'=620 +'DATE_BIN'=621 +'DATE_PART'=622 +'DATE_TRUNC'=623 +'ISFINITE'=624 +'JUSTIFY_DAYS'=625 +'JUSTIFY_HOURS'=626 +'JUSTIFY_INTERVAL'=627 +'MAKE_DATE'=628 +'MAKE_INTERVAL'=629 +'MAKE_TIME'=630 +'MAKE_TIMESTAMP'=631 +'MAKE_TIMESTAMPTZ'=632 +'NOW'=633 +'STATEMENT_TIMESTAMP'=634 +'TIMEOFDAY'=635 +'TRANSACTION_TIMESTAMP'=636 +'TO_TIMESTAMP'=637 +'TO_CHAR'=638 +'TO_DATE'=639 +'TO_NUMBER'=640 +'\\\\'=674 +'\''=684 diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/client.rpt index 20d67ffb4a..47139b40a5 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/client.rpt @@ -65,8 +65,8 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read [0x00 0x02] # Field Count - [0x00 0x00 0x00 0x04] # Length - [0x31 0x39 0x36 0x34] # Data + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data [0x00 0x00 0x00 0x65] # Length "CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS" # Data " SELECT id, city FROM weather GROUP BY city;" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/server.rpt index b5812754a4..050011cf75 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/server.rpt @@ -67,8 +67,8 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write [0x00 0x02] # Field Count - [0x00 0x00 0x00 0x04] # Length - [0x31 0x39 0x36 0x34] # Data + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data [0x00 0x00 0x00 0x65] # Length "CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS" # Data " SELECT id, city FROM weather GROUP BY city;" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/client.rpt index 60fd90f078..6a7a998074 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/client.rpt @@ -34,7 +34,6 @@ write zilla:data.ext ${pgsql:dataEx() .build()} write "SHOW ZVIEWS;" [0x00] - write flush read advised zilla:flush ${pgsql:flushEx() @@ -52,26 +51,26 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} -#read zilla:data.ext ${pgsql:dataEx() -# .typeId(zilla:id("pgsql")) -# .row() -# .build() -# .build()} -#read [0x00 0x01] # Field Count -# [0x00 0x00 0x00 0x04] # Length -# [0x31 0x39 0x36 0x34] # Data -# -#read advised zilla:flush ${pgsql:flushEx() -# .typeId(zilla:id("pgsql")) -# .completion() -# .tag("SHOW_COMMAND") -# .build() -# .build()} -# -#read advised zilla:flush ${pgsql:flushEx() -# .typeId(zilla:id("pgsql")) -# .ready() -# .status("IDLE") -# .build() -# .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +read [0x00 0x01] # Field Count + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SHOW_COMMAND") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/server.rpt index af0d84f26e..cd25c522eb 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/server.rpt @@ -47,7 +47,7 @@ write advise zilla:flush ${pgsql:flushEx() .tableOid(0) .index(0) .typeOid(701) - .length(8) + .length(4) .modifier(-1) .format("TEXT") .build() @@ -61,8 +61,8 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write [0x00 0x01] # Field Count - [0x00 0x00 0x00 0x04] # Length - [0x31 0x39 0x36 0x34] # Data + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) diff --git a/incubator/binding-risingwave/pom.xml b/incubator/binding-risingwave/pom.xml index 40224a7ec0..a087cd9681 100644 --- a/incubator/binding-risingwave/pom.xml +++ b/incubator/binding-risingwave/pom.xml @@ -100,7 +100,7 @@ flyweight-maven-plugin ${project.version} - core pgsql protocol + core pgsql io.aklivity.zilla.runtime.binding.risingwave.internal.types diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java index 2311884711..d13e4fc9ec 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java @@ -26,7 +26,7 @@ public enum RisingwaveCompletionCommand DROP_TABLE_COMMAND("DROP_TABLE".getBytes()), DROP_STREAM_COMMAND("DROP_STREAM".getBytes()), DROP_ZVIEW_COMMAND("DROP_ZVIEW".getBytes()), - SHOW_COMMAND("SHOW_ZVIEW".getBytes()); + SHOW_COMMAND("SHOW_COMMAND".getBytes()); private final byte[] value; 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 0cbf391aa3..8a68b70ad8 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 @@ -49,8 +49,6 @@ 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; -import io.aklivity.zilla.runtime.binding.risingwave.internal.types.codec.RisingwaveDataRowFW; -import io.aklivity.zilla.runtime.binding.risingwave.internal.types.codec.RisingwaveDataRowFieldFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.AbortFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.BeginFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.DataFW; @@ -131,9 +129,6 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory private final ResetFW.Builder resetRW = new ResetFW.Builder(); private final WindowFW.Builder windowRW = new WindowFW.Builder(); - private final RisingwaveDataRowFW.Builder dataRowRW = new RisingwaveDataRowFW.Builder(); - private final RisingwaveDataRowFieldFW.Builder dataRowFieldRW = new RisingwaveDataRowFieldFW.Builder(); - private final BufferPool bufferPool; private final RisingwaveConfiguration config; private final MutableDirectBuffer writeBuffer; @@ -504,16 +499,18 @@ private void onAppWindow( final long budgetId = window.budgetId(); final int padding = window.padding(); - //assert acknowledge <= sequence; - //assert acknowledge >= replyAck; - //assert maximum + acknowledge >= replyMax + replyAck; + assert acknowledge <= sequence; + assert acknowledge >= replyAck; + assert maximum + acknowledge >= replyMax + replyAck; + + int credit = (int)(acknowledge - replyAck) + (maximum - replyMax); replyBudgetId = budgetId; replyAck = acknowledge; replyMax = maximum; replyPadding = padding; - //assert replyAck <= replySeq; + assert replyAck <= replySeq; state = RisingwaveState.openReply(state); @@ -522,8 +519,6 @@ private void onAppWindow( streamsByRouteIds.values().forEach(c -> c.doAppWindow(authorization, traceId)); } - int credit = (int)(acknowledge - initialAck) + (maximum - initialMax); - while (credit > 0 && !responses.isEmpty()) { final long routeId = responses.peekLong(); @@ -535,9 +530,9 @@ private void onAppWindow( client.doAppWindow(authorization, traceId); - credit = Math.max(credit - (int)(client.initialAck - streamAckSnapshot), 0); + credit = Math.max(credit - (int)(client.replyAck - streamAckSnapshot), 0); - if (client.initialAck != client.initialSeq) + if (client.replyAck != client.replySeq) { break; } @@ -635,6 +630,7 @@ private void doAppData( flags, replyBudgetId, reserved, buffer, offset, length, extension); replySeq += reserved; + assert replySeq <= replyAck + replyMax; } @@ -731,6 +727,8 @@ private void doAppFlush( doFlush(app, originId, routedId, replyId, replySeq, replyAck, replyMax, traceId, authorization, replyBudgetId, reserved, extension); + + replySeq += reserved; } private void doAppFlush( @@ -742,6 +740,8 @@ private void doAppFlush( doFlush(app, originId, routedId, replyId, replySeq, replyAck, replyMax, traceId, authorization, replyBudgetId, reserved, extension); + + replySeq += reserved; } private void doCommandCompletion( @@ -756,7 +756,6 @@ private void doCommandCompletion( Consumer completionEx = e -> e.set((b, o, l) -> flushExRW.wrap(b, o, l) .typeId(pgsqlTypeId) - .completion(c -> c.tag(extBuffer, 0, command.value().length + 1)) .build().sizeof()); @@ -1227,6 +1226,7 @@ private void doAppWindow( { state = RisingwaveState.openReply(state); + replyAck = Math.max(replySeq, server.replyAck); replyMax = server.replyMax; doWindow(app, originId, routedId, replyId, replySeq, replyAck, server.replyMax, @@ -2126,7 +2126,7 @@ private void showColumnFlushCommand( .type(t -> t .columns(c -> c .item(s -> s - .name("Name") + .name("Name\u0000") .tableOid(0) .index((short) 0) .typeOid(701) @@ -2214,19 +2214,16 @@ private void showColumnDataCommand( .row(q -> q.deferred(0)) .build(); - int dataRowProgress = 0; - RisingwaveDataRowFW row = dataRowRW.wrap(statementBuffer, dataRowProgress, statementBuffer.capacity()) - .fields((short) 1) - .build(); - dataRowProgress = row.limit(); + final int length = column.sizeof(); - final int length = column.length(); - RisingwaveDataRowFieldFW field = dataRowFieldRW.wrap(statementBuffer, dataRowProgress, statementBuffer.capacity()) - .fieldLenght(length) - .field(column.value(), 0, length) - .build(); + int statementProgress = 0; + statementBuffer.putShort(statementProgress, (short) 1, ByteOrder.BIG_ENDIAN); + statementProgress += Short.BYTES; + statementBuffer.putBytes(statementProgress, column.buffer(), column.offset(), length); + statementProgress += length; - server.doAppData(clientId, routedId, traceId, authorization, flags, statementBuffer, 0, field.limit(), dataEx); + server.doAppData(clientId, routedId, traceId, authorization, flags, + statementBuffer, 0, statementProgress, dataEx); } } diff --git a/incubator/binding-risingwave/src/main/zilla/protocol.idl b/incubator/binding-risingwave/src/main/zilla/protocol.idl deleted file mode 100644 index 00a1f9fa83..0000000000 --- a/incubator/binding-risingwave/src/main/zilla/protocol.idl +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2021-2024 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. - */ -scope protocol -{ - option byteorder network; - - scope codec - { - struct RisingwaveDataRow - { - int16 fields; - } - - struct RisingwaveDataRowField - { - varint32 fieldLenght; - octets[fieldLenght] field; - } - } -} From 38f7371141d55c654b6ace3936d1754f00ac57a1 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Sun, 1 Dec 2024 01:04:29 -0800 Subject: [PATCH 034/104] WIP --- .../zilla/runtime/binding/pgsql/parser/PostgreSqlLexer.g4 | 2 ++ .../zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 | 5 +++++ .../risingwave/internal/stream/RisingwaveProxyFactory.java | 3 +-- 3 files changed, 8 insertions(+), 2 deletions(-) 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 bb14a03af0..b93a78c845 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 @@ -287,6 +287,8 @@ THEN: 'THEN'; TO: 'TO'; +DESCRIBE: 'DESCRIBE'; + TOPIC: 'TOPIC'; TOPICS: 'TOPICS'; 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 7c755c1fb6..f394a0511a 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 @@ -122,6 +122,7 @@ stmt | deletestmt | discardstmt | showstmt + | describestmt | dostmt | dropcaststmt | dropopclassstmt @@ -1614,6 +1615,10 @@ reassignownedstmt : REASSIGN OWNED BY role_list TO rolespec ; +describestmt + : DESCRIBE any_name + ; + showstmt : SHOW show_object_type_name ; 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 8a68b70ad8..ad26723f40 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 @@ -787,9 +787,8 @@ private void doParseQuery( splitStatements(sql) .stream() .findFirst() - .ifPresent(s -> + .ifPresent(statement -> { - String statement = s; String command = parser.parseCommand(statement); final PgsqlTransform transform = clientTransforms.get(RisingwaveCommandType.valueOf(command.getBytes())); transform.transform(this, traceId, authorizationId, statement); From d1270a1edb5f31b5389ed6c18154806dfcb17a6d Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Sun, 1 Dec 2024 10:58:12 -0800 Subject: [PATCH 035/104] WIP --- .../binding-pgsql/gen/PostgreSqlLexer.interp | 11 +- .../binding-pgsql/gen/PostgreSqlLexer.java | 9075 +++++++++-------- .../binding-pgsql/gen/PostgreSqlLexer.tokens | 2290 ++--- .../binding/pgsql/parser/PostgreSqlLexer.g4 | 4 + .../binding/pgsql/parser/PostgreSqlParser.g4 | 1 + .../pgsql/parser/gen/PostgreSqlLexer.interp | 2098 ++++ .../pgsql/parser/gen/PostgreSqlLexer.java | 5297 ++++++++++ .../pgsql/parser/gen/PostgreSqlLexer.tokens | 1330 +++ .../binding/pgsql/parser/PgsqlParser.java | 6 +- ...java => SqlCreateZtableTopicListener.java} | 4 +- .../client.rpt | 4 +- .../server.rpt | 4 +- 12 files changed, 14445 insertions(+), 5679 deletions(-) create mode 100644 incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.interp create mode 100644 incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.java create mode 100644 incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.tokens rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/{SqlCreateTableTopicListener.java => SqlCreateZtableTopicListener.java} (97%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.table.with.primary.key => create.ztable.with.primary.key}/client.rpt (95%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.table.with.primary.key => create.ztable.with.primary.key}/server.rpt (95%) diff --git a/incubator/binding-pgsql/gen/PostgreSqlLexer.interp b/incubator/binding-pgsql/gen/PostgreSqlLexer.interp index 2acc348e46..82019f774b 100644 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.interp +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.interp @@ -92,8 +92,10 @@ null 'SOME' 'SYMMETRIC' 'TABLE' +'ZTABLE' 'THEN' 'TO' +'DESCRIBE' 'TOPIC' 'TOPICS' 'STREAM' @@ -348,6 +350,7 @@ null 'SYSID' 'SYSTEM' 'TABLES' +'ZTABLES' 'TABLESPACE' 'TEMP' 'TEMPLATE' @@ -779,8 +782,10 @@ SESSION_USER SOME SYMMETRIC TABLE +ZTABLE THEN TO +DESCRIBE TOPIC TOPICS STREAM @@ -1035,6 +1040,7 @@ STRIP_P SYSID SYSTEM_P TABLES +ZTABLES TABLESPACE TEMP TEMPLATE @@ -1469,8 +1475,10 @@ SESSION_USER SOME SYMMETRIC TABLE +ZTABLE THEN TO +DESCRIBE TOPIC TOPICS STREAM @@ -1725,6 +1733,7 @@ STRIP_P SYSID SYSTEM_P TABLES +ZTABLES TABLESPACE TEMP TEMPLATE @@ -2086,4 +2095,4 @@ AfterEscapeStringConstantWithNewlineMode DollarQuotedStringMode atn: -[4, 0, 684, 6834, 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, 2, 697, 7, 697, 2, 698, 7, 698, 2, 699, 7, 699, 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, 1471, 8, 27, 11, 27, 12, 27, 1472, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1479, 8, 28, 11, 28, 12, 28, 1480, 1, 28, 1, 28, 1, 28, 3, 28, 1486, 8, 28, 1, 28, 1, 28, 4, 28, 1490, 8, 28, 11, 28, 12, 28, 1491, 1, 28, 3, 28, 1495, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1504, 8, 29, 10, 29, 12, 29, 1507, 9, 29, 1, 29, 1, 29, 3, 29, 1511, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1516, 8, 29, 11, 29, 12, 29, 1517, 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, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 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, 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, 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, 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, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 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, 115, 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, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 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, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 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, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 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, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 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, 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, 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, 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, 138, 1, 138, 1, 138, 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, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 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, 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, 145, 1, 145, 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, 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, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 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, 152, 1, 152, 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, 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, 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, 159, 1, 159, 1, 159, 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, 162, 1, 162, 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, 163, 1, 163, 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, 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, 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, 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, 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, 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, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 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, 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, 179, 1, 179, 1, 179, 1, 179, 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, 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, 185, 1, 185, 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, 187, 1, 187, 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, 191, 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, 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, 193, 1, 193, 1, 194, 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, 195, 1, 196, 1, 196, 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, 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, 201, 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, 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, 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, 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, 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, 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, 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, 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, 216, 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, 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, 219, 1, 219, 1, 220, 1, 220, 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, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 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, 225, 1, 225, 1, 225, 1, 225, 1, 225, 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, 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, 231, 1, 231, 1, 231, 1, 232, 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, 233, 1, 233, 1, 233, 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, 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, 237, 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, 239, 1, 239, 1, 239, 1, 239, 1, 240, 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, 242, 1, 242, 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, 243, 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, 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, 249, 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, 250, 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, 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, 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, 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, 259, 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, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 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, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 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, 273, 1, 273, 1, 273, 1, 273, 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, 277, 1, 277, 1, 277, 1, 277, 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, 279, 1, 279, 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, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 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, 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, 286, 1, 286, 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, 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, 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, 295, 1, 295, 1, 295, 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, 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, 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, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 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, 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, 304, 1, 304, 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, 307, 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, 311, 1, 311, 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, 313, 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, 315, 1, 316, 1, 316, 1, 316, 1, 316, 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, 318, 1, 318, 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, 321, 1, 321, 1, 321, 1, 321, 1, 321, 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, 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, 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, 328, 1, 329, 1, 329, 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, 330, 1, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 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, 334, 1, 334, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 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, 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, 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, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 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, 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, 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, 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, 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, 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, 355, 1, 355, 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, 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, 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, 361, 1, 361, 1, 361, 1, 361, 1, 361, 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, 363, 1, 364, 1, 364, 1, 364, 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, 365, 1, 365, 1, 365, 1, 366, 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, 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, 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, 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, 373, 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, 376, 1, 376, 1, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 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, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 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, 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, 393, 1, 393, 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, 394, 1, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 396, 1, 396, 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, 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, 400, 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, 402, 1, 402, 1, 402, 1, 402, 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, 404, 1, 404, 1, 404, 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, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 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, 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, 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, 416, 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, 418, 1, 418, 1, 418, 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, 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, 422, 1, 422, 1, 422, 1, 422, 1, 422, 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, 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, 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, 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, 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, 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, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 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, 432, 1, 432, 1, 432, 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, 434, 1, 434, 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, 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, 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, 439, 1, 440, 1, 440, 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, 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, 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, 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, 449, 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, 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, 453, 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, 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, 459, 1, 459, 1, 459, 1, 459, 1, 459, 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, 460, 1, 461, 1, 461, 1, 461, 1, 461, 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, 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, 465, 1, 465, 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, 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, 470, 1, 470, 1, 470, 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, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 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, 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, 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, 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, 482, 1, 482, 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, 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, 485, 1, 486, 1, 486, 1, 486, 1, 486, 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, 488, 1, 488, 1, 488, 1, 489, 1, 489, 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, 491, 1, 491, 1, 491, 1, 491, 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, 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, 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, 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, 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, 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, 504, 1, 504, 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, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 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, 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, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 512, 1, 512, 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, 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, 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, 518, 1, 518, 1, 519, 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, 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, 523, 1, 523, 1, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 526, 1, 526, 1, 526, 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, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 532, 1, 532, 1, 532, 1, 532, 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, 534, 1, 534, 1, 534, 1, 534, 1, 535, 1, 535, 1, 535, 1, 535, 1, 536, 1, 536, 1, 536, 1, 536, 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, 538, 1, 538, 1, 538, 1, 538, 1, 539, 1, 539, 1, 539, 1, 539, 1, 540, 1, 540, 1, 540, 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, 542, 1, 542, 1, 542, 1, 542, 1, 543, 1, 543, 1, 543, 1, 543, 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, 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, 549, 1, 549, 1, 549, 1, 549, 1, 549, 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, 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, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 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, 559, 1, 559, 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, 561, 1, 561, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 563, 1, 563, 1, 563, 1, 563, 1, 563, 1, 563, 1, 563, 1, 564, 1, 564, 1, 564, 1, 564, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 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, 569, 1, 569, 1, 569, 1, 569, 1, 569, 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, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 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, 578, 1, 578, 1, 578, 1, 578, 1, 578, 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, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 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, 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, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 586, 1, 586, 1, 586, 1, 586, 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, 588, 1, 588, 1, 588, 1, 589, 1, 589, 1, 589, 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, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 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, 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, 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, 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, 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, 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, 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, 605, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 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, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 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, 608, 1, 608, 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, 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, 613, 1, 613, 1, 613, 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, 614, 1, 614, 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, 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, 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, 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, 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, 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, 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, 628, 1, 628, 1, 628, 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, 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, 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, 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, 635, 1, 635, 1, 635, 1, 635, 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, 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, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 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, 640, 1, 640, 1, 640, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 644, 1, 644, 5, 644, 6366, 8, 644, 10, 644, 12, 644, 6369, 9, 644, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 3, 645, 6377, 8, 645, 1, 646, 1, 646, 3, 646, 6381, 8, 646, 1, 647, 1, 647, 3, 647, 6385, 8, 647, 1, 648, 1, 648, 1, 648, 1, 649, 1, 649, 1, 649, 1, 649, 5, 649, 6394, 8, 649, 10, 649, 12, 649, 6397, 9, 649, 1, 650, 1, 650, 1, 650, 1, 651, 1, 651, 1, 651, 1, 651, 5, 651, 6406, 8, 651, 10, 651, 12, 651, 6409, 9, 651, 1, 652, 1, 652, 1, 652, 1, 652, 1, 653, 1, 653, 1, 653, 1, 653, 1, 654, 1, 654, 1, 654, 1, 654, 1, 655, 1, 655, 1, 655, 1, 655, 1, 656, 1, 656, 1, 656, 1, 657, 1, 657, 1, 657, 1, 657, 5, 657, 6434, 8, 657, 10, 657, 12, 657, 6437, 9, 657, 1, 658, 1, 658, 1, 658, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 1, 659, 1, 660, 1, 660, 1, 660, 1, 660, 1, 661, 1, 661, 3, 661, 6454, 8, 661, 1, 661, 1, 661, 1, 661, 1, 661, 1, 661, 1, 662, 1, 662, 5, 662, 6463, 8, 662, 10, 662, 12, 662, 6466, 9, 662, 1, 663, 1, 663, 1, 663, 1, 664, 1, 664, 1, 664, 5, 664, 6474, 8, 664, 10, 664, 12, 664, 6477, 9, 664, 1, 665, 1, 665, 1, 665, 1, 666, 1, 666, 1, 666, 1, 667, 1, 667, 1, 667, 1, 668, 1, 668, 1, 668, 5, 668, 6491, 8, 668, 10, 668, 12, 668, 6494, 9, 668, 1, 669, 1, 669, 1, 669, 1, 670, 1, 670, 1, 670, 1, 671, 1, 671, 1, 672, 1, 672, 1, 672, 1, 672, 1, 672, 1, 672, 1, 673, 1, 673, 1, 673, 3, 673, 6513, 8, 673, 1, 673, 1, 673, 3, 673, 6517, 8, 673, 1, 673, 3, 673, 6520, 8, 673, 1, 673, 1, 673, 1, 673, 1, 673, 3, 673, 6526, 8, 673, 1, 673, 3, 673, 6529, 8, 673, 1, 673, 1, 673, 1, 673, 3, 673, 6534, 8, 673, 1, 673, 1, 673, 3, 673, 6538, 8, 673, 1, 674, 4, 674, 6541, 8, 674, 11, 674, 12, 674, 6542, 1, 675, 1, 675, 1, 675, 5, 675, 6548, 8, 675, 10, 675, 12, 675, 6551, 9, 675, 1, 676, 1, 676, 1, 676, 1, 676, 1, 676, 1, 676, 1, 676, 1, 676, 5, 676, 6561, 8, 676, 10, 676, 12, 676, 6564, 9, 676, 1, 676, 1, 676, 1, 677, 4, 677, 6569, 8, 677, 11, 677, 12, 677, 6570, 1, 677, 1, 677, 1, 678, 1, 678, 3, 678, 6577, 8, 678, 1, 678, 3, 678, 6580, 8, 678, 1, 678, 1, 678, 1, 679, 1, 679, 1, 679, 1, 679, 5, 679, 6588, 8, 679, 10, 679, 12, 679, 6591, 9, 679, 1, 679, 1, 679, 1, 680, 1, 680, 1, 680, 1, 680, 5, 680, 6599, 8, 680, 10, 680, 12, 680, 6602, 9, 680, 1, 680, 1, 680, 1, 680, 4, 680, 6607, 8, 680, 11, 680, 12, 680, 6608, 1, 680, 1, 680, 4, 680, 6613, 8, 680, 11, 680, 12, 680, 6614, 1, 680, 5, 680, 6618, 8, 680, 10, 680, 12, 680, 6621, 9, 680, 1, 680, 5, 680, 6624, 8, 680, 10, 680, 12, 680, 6627, 9, 680, 1, 680, 1, 680, 1, 680, 1, 680, 1, 680, 1, 681, 1, 681, 1, 681, 1, 681, 5, 681, 6638, 8, 681, 10, 681, 12, 681, 6641, 9, 681, 1, 681, 1, 681, 1, 681, 4, 681, 6646, 8, 681, 11, 681, 12, 681, 6647, 1, 681, 1, 681, 4, 681, 6652, 8, 681, 11, 681, 12, 681, 6653, 1, 681, 3, 681, 6657, 8, 681, 5, 681, 6659, 8, 681, 10, 681, 12, 681, 6662, 9, 681, 1, 681, 4, 681, 6665, 8, 681, 11, 681, 12, 681, 6666, 1, 681, 4, 681, 6670, 8, 681, 11, 681, 12, 681, 6671, 1, 681, 5, 681, 6675, 8, 681, 10, 681, 12, 681, 6678, 9, 681, 1, 681, 3, 681, 6681, 8, 681, 1, 681, 1, 681, 1, 682, 1, 682, 1, 682, 1, 682, 5, 682, 6689, 8, 682, 10, 682, 12, 682, 6692, 9, 682, 1, 682, 5, 682, 6695, 8, 682, 10, 682, 12, 682, 6698, 9, 682, 1, 682, 1, 682, 5, 682, 6702, 8, 682, 10, 682, 12, 682, 6705, 9, 682, 3, 682, 6707, 8, 682, 1, 683, 1, 683, 1, 683, 1, 684, 1, 684, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 686, 1, 686, 3, 686, 6721, 8, 686, 1, 686, 1, 686, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 3, 687, 6745, 8, 687, 1, 687, 5, 687, 6748, 8, 687, 10, 687, 12, 687, 6751, 9, 687, 1, 688, 1, 688, 1, 688, 1, 688, 1, 688, 1, 689, 1, 689, 3, 689, 6760, 8, 689, 1, 689, 1, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 5, 690, 6769, 8, 690, 10, 690, 12, 690, 6772, 9, 690, 1, 691, 1, 691, 1, 691, 1, 691, 1, 691, 1, 692, 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, 1, 695, 1, 695, 1, 695, 1, 695, 1, 696, 1, 696, 1, 696, 1, 696, 1, 696, 1, 697, 1, 697, 1, 697, 1, 697, 1, 697, 1, 698, 4, 698, 6811, 8, 698, 11, 698, 12, 698, 6812, 1, 698, 1, 698, 5, 698, 6817, 8, 698, 10, 698, 12, 698, 6820, 9, 698, 3, 698, 6822, 8, 698, 1, 699, 1, 699, 3, 699, 6826, 8, 699, 1, 699, 1, 699, 1, 699, 1, 699, 1, 699, 1, 699, 1, 699, 0, 0, 700, 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, 639, 1291, 640, 1293, 641, 1295, 0, 1297, 0, 1299, 0, 1301, 642, 1303, 643, 1305, 644, 1307, 645, 1309, 646, 1311, 647, 1313, 648, 1315, 649, 1317, 650, 1319, 651, 1321, 0, 1323, 652, 1325, 653, 1327, 654, 1329, 0, 1331, 655, 1333, 656, 1335, 657, 1337, 658, 1339, 659, 1341, 660, 1343, 661, 1345, 662, 1347, 663, 1349, 664, 1351, 665, 1353, 0, 1355, 666, 1357, 667, 1359, 668, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 673, 1371, 674, 1373, 675, 1375, 676, 1377, 677, 1379, 0, 1381, 678, 1383, 679, 1385, 0, 1387, 0, 1389, 0, 1391, 680, 1393, 0, 1395, 0, 1397, 684, 1399, 681, 1401, 682, 1403, 683, 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, 87, 87, 119, 119, 2, 0, 81, 81, 113, 113, 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, 6906, 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, 1289, 1, 0, 0, 0, 0, 1291, 1, 0, 0, 0, 0, 1293, 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, 1323, 1, 0, 0, 0, 0, 1325, 1, 0, 0, 0, 0, 1327, 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, 1347, 1, 0, 0, 0, 0, 1349, 1, 0, 0, 0, 0, 1351, 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, 0, 1369, 1, 0, 0, 0, 0, 1371, 1, 0, 0, 0, 0, 1373, 1, 0, 0, 0, 1, 1375, 1, 0, 0, 0, 1, 1377, 1, 0, 0, 0, 1, 1381, 1, 0, 0, 0, 1, 1383, 1, 0, 0, 0, 2, 1387, 1, 0, 0, 0, 2, 1389, 1, 0, 0, 0, 2, 1391, 1, 0, 0, 0, 3, 1393, 1, 0, 0, 0, 3, 1395, 1, 0, 0, 0, 3, 1397, 1, 0, 0, 0, 3, 1399, 1, 0, 0, 0, 4, 1401, 1, 0, 0, 0, 4, 1403, 1, 0, 0, 0, 5, 1405, 1, 0, 0, 0, 7, 1407, 1, 0, 0, 0, 9, 1409, 1, 0, 0, 0, 11, 1411, 1, 0, 0, 0, 13, 1413, 1, 0, 0, 0, 15, 1415, 1, 0, 0, 0, 17, 1417, 1, 0, 0, 0, 19, 1419, 1, 0, 0, 0, 21, 1421, 1, 0, 0, 0, 23, 1423, 1, 0, 0, 0, 25, 1425, 1, 0, 0, 0, 27, 1427, 1, 0, 0, 0, 29, 1429, 1, 0, 0, 0, 31, 1431, 1, 0, 0, 0, 33, 1433, 1, 0, 0, 0, 35, 1435, 1, 0, 0, 0, 37, 1437, 1, 0, 0, 0, 39, 1439, 1, 0, 0, 0, 41, 1442, 1, 0, 0, 0, 43, 1445, 1, 0, 0, 0, 45, 1448, 1, 0, 0, 0, 47, 1451, 1, 0, 0, 0, 49, 1454, 1, 0, 0, 0, 51, 1457, 1, 0, 0, 0, 53, 1460, 1, 0, 0, 0, 55, 1463, 1, 0, 0, 0, 57, 1466, 1, 0, 0, 0, 59, 1468, 1, 0, 0, 0, 61, 1494, 1, 0, 0, 0, 63, 1505, 1, 0, 0, 0, 65, 1521, 1, 0, 0, 0, 67, 1523, 1, 0, 0, 0, 69, 1525, 1, 0, 0, 0, 71, 1527, 1, 0, 0, 0, 73, 1531, 1, 0, 0, 0, 75, 1539, 1, 0, 0, 0, 77, 1547, 1, 0, 0, 0, 79, 1551, 1, 0, 0, 0, 81, 1555, 1, 0, 0, 0, 83, 1561, 1, 0, 0, 0, 85, 1564, 1, 0, 0, 0, 87, 1568, 1, 0, 0, 0, 89, 1579, 1, 0, 0, 0, 91, 1584, 1, 0, 0, 0, 93, 1589, 1, 0, 0, 0, 95, 1594, 1, 0, 0, 0, 97, 1600, 1, 0, 0, 0, 99, 1608, 1, 0, 0, 0, 101, 1615, 1, 0, 0, 0, 103, 1626, 1, 0, 0, 0, 105, 1633, 1, 0, 0, 0, 107, 1649, 1, 0, 0, 0, 109, 1662, 1, 0, 0, 0, 111, 1675, 1, 0, 0, 0, 113, 1688, 1, 0, 0, 0, 115, 1706, 1, 0, 0, 0, 117, 1719, 1, 0, 0, 0, 119, 1727, 1, 0, 0, 0, 121, 1738, 1, 0, 0, 0, 123, 1743, 1, 0, 0, 0, 125, 1752, 1, 0, 0, 0, 127, 1755, 1, 0, 0, 0, 129, 1760, 1, 0, 0, 0, 131, 1767, 1, 0, 0, 0, 133, 1773, 1, 0, 0, 0, 135, 1779, 1, 0, 0, 0, 137, 1783, 1, 0, 0, 0, 139, 1791, 1, 0, 0, 0, 141, 1796, 1, 0, 0, 0, 143, 1802, 1, 0, 0, 0, 145, 1808, 1, 0, 0, 0, 147, 1815, 1, 0, 0, 0, 149, 1818, 1, 0, 0, 0, 151, 1828, 1, 0, 0, 0, 153, 1838, 1, 0, 0, 0, 155, 1843, 1, 0, 0, 0, 157, 1851, 1, 0, 0, 0, 159, 1859, 1, 0, 0, 0, 161, 1865, 1, 0, 0, 0, 163, 1875, 1, 0, 0, 0, 165, 1890, 1, 0, 0, 0, 167, 1894, 1, 0, 0, 0, 169, 1899, 1, 0, 0, 0, 171, 1906, 1, 0, 0, 0, 173, 1909, 1, 0, 0, 0, 175, 1914, 1, 0, 0, 0, 177, 1917, 1, 0, 0, 0, 179, 1923, 1, 0, 0, 0, 181, 1931, 1, 0, 0, 0, 183, 1939, 1, 0, 0, 0, 185, 1950, 1, 0, 0, 0, 187, 1960, 1, 0, 0, 0, 189, 1967, 1, 0, 0, 0, 191, 1980, 1, 0, 0, 0, 193, 1985, 1, 0, 0, 0, 195, 1995, 1, 0, 0, 0, 197, 2001, 1, 0, 0, 0, 199, 2006, 1, 0, 0, 0, 201, 2009, 1, 0, 0, 0, 203, 2015, 1, 0, 0, 0, 205, 2022, 1, 0, 0, 0, 207, 2029, 1, 0, 0, 0, 209, 2035, 1, 0, 0, 0, 211, 2042, 1, 0, 0, 0, 213, 2051, 1, 0, 0, 0, 215, 2056, 1, 0, 0, 0, 217, 2062, 1, 0, 0, 0, 219, 2069, 1, 0, 0, 0, 221, 2074, 1, 0, 0, 0, 223, 2080, 1, 0, 0, 0, 225, 2089, 1, 0, 0, 0, 227, 2094, 1, 0, 0, 0, 229, 2100, 1, 0, 0, 0, 231, 2107, 1, 0, 0, 0, 233, 2112, 1, 0, 0, 0, 235, 2126, 1, 0, 0, 0, 237, 2133, 1, 0, 0, 0, 239, 2143, 1, 0, 0, 0, 241, 2156, 1, 0, 0, 0, 243, 2162, 1, 0, 0, 0, 245, 2177, 1, 0, 0, 0, 247, 2184, 1, 0, 0, 0, 249, 2189, 1, 0, 0, 0, 251, 2195, 1, 0, 0, 0, 253, 2201, 1, 0, 0, 0, 255, 2204, 1, 0, 0, 0, 257, 2211, 1, 0, 0, 0, 259, 2216, 1, 0, 0, 0, 261, 2221, 1, 0, 0, 0, 263, 2226, 1, 0, 0, 0, 265, 2234, 1, 0, 0, 0, 267, 2242, 1, 0, 0, 0, 269, 2248, 1, 0, 0, 0, 271, 2253, 1, 0, 0, 0, 273, 2262, 1, 0, 0, 0, 275, 2268, 1, 0, 0, 0, 277, 2276, 1, 0, 0, 0, 279, 2284, 1, 0, 0, 0, 281, 2290, 1, 0, 0, 0, 283, 2299, 1, 0, 0, 0, 285, 2306, 1, 0, 0, 0, 287, 2313, 1, 0, 0, 0, 289, 2317, 1, 0, 0, 0, 291, 2323, 1, 0, 0, 0, 293, 2329, 1, 0, 0, 0, 295, 2339, 1, 0, 0, 0, 297, 2344, 1, 0, 0, 0, 299, 2350, 1, 0, 0, 0, 301, 2357, 1, 0, 0, 0, 303, 2367, 1, 0, 0, 0, 305, 2378, 1, 0, 0, 0, 307, 2381, 1, 0, 0, 0, 309, 2391, 1, 0, 0, 0, 311, 2400, 1, 0, 0, 0, 313, 2407, 1, 0, 0, 0, 315, 2413, 1, 0, 0, 0, 317, 2416, 1, 0, 0, 0, 319, 2422, 1, 0, 0, 0, 321, 2429, 1, 0, 0, 0, 323, 2437, 1, 0, 0, 0, 325, 2446, 1, 0, 0, 0, 327, 2454, 1, 0, 0, 0, 329, 2460, 1, 0, 0, 0, 331, 2476, 1, 0, 0, 0, 333, 2487, 1, 0, 0, 0, 335, 2493, 1, 0, 0, 0, 337, 2499, 1, 0, 0, 0, 339, 2507, 1, 0, 0, 0, 341, 2515, 1, 0, 0, 0, 343, 2524, 1, 0, 0, 0, 345, 2531, 1, 0, 0, 0, 347, 2541, 1, 0, 0, 0, 349, 2555, 1, 0, 0, 0, 351, 2566, 1, 0, 0, 0, 353, 2578, 1, 0, 0, 0, 355, 2586, 1, 0, 0, 0, 357, 2595, 1, 0, 0, 0, 359, 2606, 1, 0, 0, 0, 361, 2611, 1, 0, 0, 0, 363, 2616, 1, 0, 0, 0, 365, 2620, 1, 0, 0, 0, 367, 2627, 1, 0, 0, 0, 369, 2633, 1, 0, 0, 0, 371, 2638, 1, 0, 0, 0, 373, 2647, 1, 0, 0, 0, 375, 2651, 1, 0, 0, 0, 377, 2662, 1, 0, 0, 0, 379, 2670, 1, 0, 0, 0, 381, 2679, 1, 0, 0, 0, 383, 2688, 1, 0, 0, 0, 385, 2696, 1, 0, 0, 0, 387, 2703, 1, 0, 0, 0, 389, 2713, 1, 0, 0, 0, 391, 2724, 1, 0, 0, 0, 393, 2735, 1, 0, 0, 0, 395, 2743, 1, 0, 0, 0, 397, 2751, 1, 0, 0, 0, 399, 2760, 1, 0, 0, 0, 401, 2767, 1, 0, 0, 0, 403, 2774, 1, 0, 0, 0, 405, 2779, 1, 0, 0, 0, 407, 2784, 1, 0, 0, 0, 409, 2791, 1, 0, 0, 0, 411, 2800, 1, 0, 0, 0, 413, 2810, 1, 0, 0, 0, 415, 2815, 1, 0, 0, 0, 417, 2822, 1, 0, 0, 0, 419, 2828, 1, 0, 0, 0, 421, 2836, 1, 0, 0, 0, 423, 2846, 1, 0, 0, 0, 425, 2856, 1, 0, 0, 0, 427, 2864, 1, 0, 0, 0, 429, 2872, 1, 0, 0, 0, 431, 2882, 1, 0, 0, 0, 433, 2891, 1, 0, 0, 0, 435, 2898, 1, 0, 0, 0, 437, 2904, 1, 0, 0, 0, 439, 2914, 1, 0, 0, 0, 441, 2920, 1, 0, 0, 0, 443, 2928, 1, 0, 0, 0, 445, 2937, 1, 0, 0, 0, 447, 2947, 1, 0, 0, 0, 449, 2954, 1, 0, 0, 0, 451, 2962, 1, 0, 0, 0, 453, 2970, 1, 0, 0, 0, 455, 2977, 1, 0, 0, 0, 457, 2982, 1, 0, 0, 0, 459, 2987, 1, 0, 0, 0, 461, 2996, 1, 0, 0, 0, 463, 2999, 1, 0, 0, 0, 465, 3009, 1, 0, 0, 0, 467, 3019, 1, 0, 0, 0, 469, 3028, 1, 0, 0, 0, 471, 3038, 1, 0, 0, 0, 473, 3048, 1, 0, 0, 0, 475, 3054, 1, 0, 0, 0, 477, 3062, 1, 0, 0, 0, 479, 3070, 1, 0, 0, 0, 481, 3079, 1, 0, 0, 0, 483, 3086, 1, 0, 0, 0, 485, 3098, 1, 0, 0, 0, 487, 3105, 1, 0, 0, 0, 489, 3113, 1, 0, 0, 0, 491, 3121, 1, 0, 0, 0, 493, 3131, 1, 0, 0, 0, 495, 3135, 1, 0, 0, 0, 497, 3141, 1, 0, 0, 0, 499, 3150, 1, 0, 0, 0, 501, 3156, 1, 0, 0, 0, 503, 3161, 1, 0, 0, 0, 505, 3171, 1, 0, 0, 0, 507, 3177, 1, 0, 0, 0, 509, 3184, 1, 0, 0, 0, 511, 3189, 1, 0, 0, 0, 513, 3195, 1, 0, 0, 0, 515, 3204, 1, 0, 0, 0, 517, 3209, 1, 0, 0, 0, 519, 3217, 1, 0, 0, 0, 521, 3223, 1, 0, 0, 0, 523, 3231, 1, 0, 0, 0, 525, 3244, 1, 0, 0, 0, 527, 3253, 1, 0, 0, 0, 529, 3259, 1, 0, 0, 0, 531, 3266, 1, 0, 0, 0, 533, 3275, 1, 0, 0, 0, 535, 3280, 1, 0, 0, 0, 537, 3286, 1, 0, 0, 0, 539, 3291, 1, 0, 0, 0, 541, 3296, 1, 0, 0, 0, 543, 3302, 1, 0, 0, 0, 545, 3307, 1, 0, 0, 0, 547, 3310, 1, 0, 0, 0, 549, 3318, 1, 0, 0, 0, 551, 3325, 1, 0, 0, 0, 553, 3332, 1, 0, 0, 0, 555, 3338, 1, 0, 0, 0, 557, 3345, 1, 0, 0, 0, 559, 3348, 1, 0, 0, 0, 561, 3352, 1, 0, 0, 0, 563, 3357, 1, 0, 0, 0, 565, 3366, 1, 0, 0, 0, 567, 3373, 1, 0, 0, 0, 569, 3381, 1, 0, 0, 0, 571, 3387, 1, 0, 0, 0, 573, 3393, 1, 0, 0, 0, 575, 3400, 1, 0, 0, 0, 577, 3408, 1, 0, 0, 0, 579, 3418, 1, 0, 0, 0, 581, 3426, 1, 0, 0, 0, 583, 3435, 1, 0, 0, 0, 585, 3441, 1, 0, 0, 0, 587, 3451, 1, 0, 0, 0, 589, 3459, 1, 0, 0, 0, 591, 3468, 1, 0, 0, 0, 593, 3477, 1, 0, 0, 0, 595, 3483, 1, 0, 0, 0, 597, 3494, 1, 0, 0, 0, 599, 3505, 1, 0, 0, 0, 601, 3515, 1, 0, 0, 0, 603, 3523, 1, 0, 0, 0, 605, 3529, 1, 0, 0, 0, 607, 3535, 1, 0, 0, 0, 609, 3540, 1, 0, 0, 0, 611, 3549, 1, 0, 0, 0, 613, 3557, 1, 0, 0, 0, 615, 3567, 1, 0, 0, 0, 617, 3571, 1, 0, 0, 0, 619, 3579, 1, 0, 0, 0, 621, 3587, 1, 0, 0, 0, 623, 3596, 1, 0, 0, 0, 625, 3604, 1, 0, 0, 0, 627, 3611, 1, 0, 0, 0, 629, 3622, 1, 0, 0, 0, 631, 3630, 1, 0, 0, 0, 633, 3638, 1, 0, 0, 0, 635, 3644, 1, 0, 0, 0, 637, 3652, 1, 0, 0, 0, 639, 3661, 1, 0, 0, 0, 641, 3669, 1, 0, 0, 0, 643, 3676, 1, 0, 0, 0, 645, 3681, 1, 0, 0, 0, 647, 3690, 1, 0, 0, 0, 649, 3695, 1, 0, 0, 0, 651, 3700, 1, 0, 0, 0, 653, 3710, 1, 0, 0, 0, 655, 3717, 1, 0, 0, 0, 657, 3724, 1, 0, 0, 0, 659, 3731, 1, 0, 0, 0, 661, 3738, 1, 0, 0, 0, 663, 3747, 1, 0, 0, 0, 665, 3756, 1, 0, 0, 0, 667, 3766, 1, 0, 0, 0, 669, 3779, 1, 0, 0, 0, 671, 3786, 1, 0, 0, 0, 673, 3794, 1, 0, 0, 0, 675, 3798, 1, 0, 0, 0, 677, 3804, 1, 0, 0, 0, 679, 3809, 1, 0, 0, 0, 681, 3816, 1, 0, 0, 0, 683, 3825, 1, 0, 0, 0, 685, 3832, 1, 0, 0, 0, 687, 3843, 1, 0, 0, 0, 689, 3849, 1, 0, 0, 0, 691, 3859, 1, 0, 0, 0, 693, 3870, 1, 0, 0, 0, 695, 3876, 1, 0, 0, 0, 697, 3883, 1, 0, 0, 0, 699, 3891, 1, 0, 0, 0, 701, 3898, 1, 0, 0, 0, 703, 3904, 1, 0, 0, 0, 705, 3910, 1, 0, 0, 0, 707, 3917, 1, 0, 0, 0, 709, 3924, 1, 0, 0, 0, 711, 3935, 1, 0, 0, 0, 713, 3940, 1, 0, 0, 0, 715, 3949, 1, 0, 0, 0, 717, 3959, 1, 0, 0, 0, 719, 3964, 1, 0, 0, 0, 721, 3976, 1, 0, 0, 0, 723, 3984, 1, 0, 0, 0, 725, 3993, 1, 0, 0, 0, 727, 4001, 1, 0, 0, 0, 729, 4006, 1, 0, 0, 0, 731, 4012, 1, 0, 0, 0, 733, 4022, 1, 0, 0, 0, 735, 4034, 1, 0, 0, 0, 737, 4046, 1, 0, 0, 0, 739, 4054, 1, 0, 0, 0, 741, 4063, 1, 0, 0, 0, 743, 4072, 1, 0, 0, 0, 745, 4078, 1, 0, 0, 0, 747, 4085, 1, 0, 0, 0, 749, 4092, 1, 0, 0, 0, 751, 4098, 1, 0, 0, 0, 753, 4107, 1, 0, 0, 0, 755, 4117, 1, 0, 0, 0, 757, 4125, 1, 0, 0, 0, 759, 4133, 1, 0, 0, 0, 761, 4138, 1, 0, 0, 0, 763, 4147, 1, 0, 0, 0, 765, 4158, 1, 0, 0, 0, 767, 4166, 1, 0, 0, 0, 769, 4171, 1, 0, 0, 0, 771, 4179, 1, 0, 0, 0, 773, 4185, 1, 0, 0, 0, 775, 4189, 1, 0, 0, 0, 777, 4194, 1, 0, 0, 0, 779, 4198, 1, 0, 0, 0, 781, 4203, 1, 0, 0, 0, 783, 4211, 1, 0, 0, 0, 785, 4218, 1, 0, 0, 0, 787, 4222, 1, 0, 0, 0, 789, 4230, 1, 0, 0, 0, 791, 4235, 1, 0, 0, 0, 793, 4245, 1, 0, 0, 0, 795, 4254, 1, 0, 0, 0, 797, 4258, 1, 0, 0, 0, 799, 4266, 1, 0, 0, 0, 801, 4273, 1, 0, 0, 0, 803, 4281, 1, 0, 0, 0, 805, 4287, 1, 0, 0, 0, 807, 4296, 1, 0, 0, 0, 809, 4302, 1, 0, 0, 0, 811, 4306, 1, 0, 0, 0, 813, 4314, 1, 0, 0, 0, 815, 4323, 1, 0, 0, 0, 817, 4329, 1, 0, 0, 0, 819, 4338, 1, 0, 0, 0, 821, 4344, 1, 0, 0, 0, 823, 4349, 1, 0, 0, 0, 825, 4356, 1, 0, 0, 0, 827, 4364, 1, 0, 0, 0, 829, 4372, 1, 0, 0, 0, 831, 4381, 1, 0, 0, 0, 833, 4391, 1, 0, 0, 0, 835, 4396, 1, 0, 0, 0, 837, 4400, 1, 0, 0, 0, 839, 4406, 1, 0, 0, 0, 841, 4415, 1, 0, 0, 0, 843, 4425, 1, 0, 0, 0, 845, 4430, 1, 0, 0, 0, 847, 4440, 1, 0, 0, 0, 849, 4446, 1, 0, 0, 0, 851, 4451, 1, 0, 0, 0, 853, 4458, 1, 0, 0, 0, 855, 4466, 1, 0, 0, 0, 857, 4480, 1, 0, 0, 0, 859, 4491, 1, 0, 0, 0, 861, 4498, 1, 0, 0, 0, 863, 4517, 1, 0, 0, 0, 865, 4545, 1, 0, 0, 0, 867, 4572, 1, 0, 0, 0, 869, 4578, 1, 0, 0, 0, 871, 4591, 1, 0, 0, 0, 873, 4601, 1, 0, 0, 0, 875, 4612, 1, 0, 0, 0, 877, 4622, 1, 0, 0, 0, 879, 4632, 1, 0, 0, 0, 881, 4641, 1, 0, 0, 0, 883, 4647, 1, 0, 0, 0, 885, 4655, 1, 0, 0, 0, 887, 4668, 1, 0, 0, 0, 889, 4673, 1, 0, 0, 0, 891, 4681, 1, 0, 0, 0, 893, 4688, 1, 0, 0, 0, 895, 4695, 1, 0, 0, 0, 897, 4706, 1, 0, 0, 0, 899, 4716, 1, 0, 0, 0, 901, 4723, 1, 0, 0, 0, 903, 4730, 1, 0, 0, 0, 905, 4738, 1, 0, 0, 0, 907, 4746, 1, 0, 0, 0, 909, 4756, 1, 0, 0, 0, 911, 4763, 1, 0, 0, 0, 913, 4770, 1, 0, 0, 0, 915, 4777, 1, 0, 0, 0, 917, 4789, 1, 0, 0, 0, 919, 4793, 1, 0, 0, 0, 921, 4797, 1, 0, 0, 0, 923, 4803, 1, 0, 0, 0, 925, 4816, 1, 0, 0, 0, 927, 4828, 1, 0, 0, 0, 929, 4832, 1, 0, 0, 0, 931, 4836, 1, 0, 0, 0, 933, 4845, 1, 0, 0, 0, 935, 4853, 1, 0, 0, 0, 937, 4864, 1, 0, 0, 0, 939, 4870, 1, 0, 0, 0, 941, 4878, 1, 0, 0, 0, 943, 4887, 1, 0, 0, 0, 945, 4891, 1, 0, 0, 0, 947, 4899, 1, 0, 0, 0, 949, 4910, 1, 0, 0, 0, 951, 4919, 1, 0, 0, 0, 953, 4924, 1, 0, 0, 0, 955, 4931, 1, 0, 0, 0, 957, 4936, 1, 0, 0, 0, 959, 4943, 1, 0, 0, 0, 961, 4948, 1, 0, 0, 0, 963, 4957, 1, 0, 0, 0, 965, 4962, 1, 0, 0, 0, 967, 4974, 1, 0, 0, 0, 969, 4985, 1, 0, 0, 0, 971, 4994, 1, 0, 0, 0, 973, 5002, 1, 0, 0, 0, 975, 5016, 1, 0, 0, 0, 977, 5024, 1, 0, 0, 0, 979, 5035, 1, 0, 0, 0, 981, 5042, 1, 0, 0, 0, 983, 5049, 1, 0, 0, 0, 985, 5056, 1, 0, 0, 0, 987, 5063, 1, 0, 0, 0, 989, 5067, 1, 0, 0, 0, 991, 5071, 1, 0, 0, 0, 993, 5076, 1, 0, 0, 0, 995, 5081, 1, 0, 0, 0, 997, 5089, 1, 0, 0, 0, 999, 5095, 1, 0, 0, 0, 1001, 5105, 1, 0, 0, 0, 1003, 5110, 1, 0, 0, 0, 1005, 5130, 1, 0, 0, 0, 1007, 5148, 1, 0, 0, 0, 1009, 5154, 1, 0, 0, 0, 1011, 5167, 1, 0, 0, 0, 1013, 5178, 1, 0, 0, 0, 1015, 5184, 1, 0, 0, 0, 1017, 5193, 1, 0, 0, 0, 1019, 5201, 1, 0, 0, 0, 1021, 5205, 1, 0, 0, 0, 1023, 5217, 1, 0, 0, 0, 1025, 5225, 1, 0, 0, 0, 1027, 5231, 1, 0, 0, 0, 1029, 5237, 1, 0, 0, 0, 1031, 5245, 1, 0, 0, 0, 1033, 5253, 1, 0, 0, 0, 1035, 5259, 1, 0, 0, 0, 1037, 5264, 1, 0, 0, 0, 1039, 5271, 1, 0, 0, 0, 1041, 5277, 1, 0, 0, 0, 1043, 5283, 1, 0, 0, 0, 1045, 5292, 1, 0, 0, 0, 1047, 5298, 1, 0, 0, 0, 1049, 5302, 1, 0, 0, 0, 1051, 5307, 1, 0, 0, 0, 1053, 5314, 1, 0, 0, 0, 1055, 5322, 1, 0, 0, 0, 1057, 5332, 1, 0, 0, 0, 1059, 5339, 1, 0, 0, 0, 1061, 5344, 1, 0, 0, 0, 1063, 5349, 1, 0, 0, 0, 1065, 5353, 1, 0, 0, 0, 1067, 5358, 1, 0, 0, 0, 1069, 5363, 1, 0, 0, 0, 1071, 5371, 1, 0, 0, 0, 1073, 5379, 1, 0, 0, 0, 1075, 5383, 1, 0, 0, 0, 1077, 5387, 1, 0, 0, 0, 1079, 5397, 1, 0, 0, 0, 1081, 5403, 1, 0, 0, 0, 1083, 5407, 1, 0, 0, 0, 1085, 5411, 1, 0, 0, 0, 1087, 5414, 1, 0, 0, 0, 1089, 5420, 1, 0, 0, 0, 1091, 5430, 1, 0, 0, 0, 1093, 5434, 1, 0, 0, 0, 1095, 5437, 1, 0, 0, 0, 1097, 5443, 1, 0, 0, 0, 1099, 5451, 1, 0, 0, 0, 1101, 5457, 1, 0, 0, 0, 1103, 5463, 1, 0, 0, 0, 1105, 5468, 1, 0, 0, 0, 1107, 5473, 1, 0, 0, 0, 1109, 5484, 1, 0, 0, 0, 1111, 5490, 1, 0, 0, 0, 1113, 5503, 1, 0, 0, 0, 1115, 5510, 1, 0, 0, 0, 1117, 5518, 1, 0, 0, 0, 1119, 5523, 1, 0, 0, 0, 1121, 5529, 1, 0, 0, 0, 1123, 5534, 1, 0, 0, 0, 1125, 5540, 1, 0, 0, 0, 1127, 5545, 1, 0, 0, 0, 1129, 5551, 1, 0, 0, 0, 1131, 5557, 1, 0, 0, 0, 1133, 5564, 1, 0, 0, 0, 1135, 5568, 1, 0, 0, 0, 1137, 5573, 1, 0, 0, 0, 1139, 5577, 1, 0, 0, 0, 1141, 5582, 1, 0, 0, 0, 1143, 5586, 1, 0, 0, 0, 1145, 5591, 1, 0, 0, 0, 1147, 5595, 1, 0, 0, 0, 1149, 5600, 1, 0, 0, 0, 1151, 5605, 1, 0, 0, 0, 1153, 5610, 1, 0, 0, 0, 1155, 5615, 1, 0, 0, 0, 1157, 5621, 1, 0, 0, 0, 1159, 5627, 1, 0, 0, 0, 1161, 5633, 1, 0, 0, 0, 1163, 5644, 1, 0, 0, 0, 1165, 5656, 1, 0, 0, 0, 1167, 5673, 1, 0, 0, 0, 1169, 5679, 1, 0, 0, 0, 1171, 5692, 1, 0, 0, 0, 1173, 5698, 1, 0, 0, 0, 1175, 5704, 1, 0, 0, 0, 1177, 5710, 1, 0, 0, 0, 1179, 5714, 1, 0, 0, 0, 1181, 5721, 1, 0, 0, 0, 1183, 5731, 1, 0, 0, 0, 1185, 5738, 1, 0, 0, 0, 1187, 5746, 1, 0, 0, 0, 1189, 5753, 1, 0, 0, 0, 1191, 5758, 1, 0, 0, 0, 1193, 5764, 1, 0, 0, 0, 1195, 5768, 1, 0, 0, 0, 1197, 5780, 1, 0, 0, 0, 1199, 5799, 1, 0, 0, 0, 1201, 5811, 1, 0, 0, 0, 1203, 5825, 1, 0, 0, 0, 1205, 5840, 1, 0, 0, 0, 1207, 5853, 1, 0, 0, 0, 1209, 5866, 1, 0, 0, 0, 1211, 5878, 1, 0, 0, 0, 1213, 5891, 1, 0, 0, 0, 1215, 5906, 1, 0, 0, 0, 1217, 5921, 1, 0, 0, 0, 1219, 5943, 1, 0, 0, 0, 1221, 5965, 1, 0, 0, 0, 1223, 5979, 1, 0, 0, 0, 1225, 5986, 1, 0, 0, 0, 1227, 5991, 1, 0, 0, 0, 1229, 5997, 1, 0, 0, 0, 1231, 6008, 1, 0, 0, 0, 1233, 6020, 1, 0, 0, 0, 1235, 6036, 1, 0, 0, 0, 1237, 6052, 1, 0, 0, 0, 1239, 6059, 1, 0, 0, 0, 1241, 6066, 1, 0, 0, 0, 1243, 6075, 1, 0, 0, 0, 1245, 6082, 1, 0, 0, 0, 1247, 6092, 1, 0, 0, 0, 1249, 6099, 1, 0, 0, 0, 1251, 6103, 1, 0, 0, 0, 1253, 6119, 1, 0, 0, 0, 1255, 6128, 1, 0, 0, 0, 1257, 6138, 1, 0, 0, 0, 1259, 6149, 1, 0, 0, 0, 1261, 6158, 1, 0, 0, 0, 1263, 6171, 1, 0, 0, 0, 1265, 6185, 1, 0, 0, 0, 1267, 6202, 1, 0, 0, 0, 1269, 6212, 1, 0, 0, 0, 1271, 6226, 1, 0, 0, 0, 1273, 6236, 1, 0, 0, 0, 1275, 6251, 1, 0, 0, 0, 1277, 6268, 1, 0, 0, 0, 1279, 6272, 1, 0, 0, 0, 1281, 6292, 1, 0, 0, 0, 1283, 6302, 1, 0, 0, 0, 1285, 6324, 1, 0, 0, 0, 1287, 6337, 1, 0, 0, 0, 1289, 6345, 1, 0, 0, 0, 1291, 6353, 1, 0, 0, 0, 1293, 6363, 1, 0, 0, 0, 1295, 6376, 1, 0, 0, 0, 1297, 6380, 1, 0, 0, 0, 1299, 6384, 1, 0, 0, 0, 1301, 6386, 1, 0, 0, 0, 1303, 6389, 1, 0, 0, 0, 1305, 6398, 1, 0, 0, 0, 1307, 6401, 1, 0, 0, 0, 1309, 6410, 1, 0, 0, 0, 1311, 6414, 1, 0, 0, 0, 1313, 6418, 1, 0, 0, 0, 1315, 6422, 1, 0, 0, 0, 1317, 6426, 1, 0, 0, 0, 1319, 6429, 1, 0, 0, 0, 1321, 6438, 1, 0, 0, 0, 1323, 6444, 1, 0, 0, 0, 1325, 6447, 1, 0, 0, 0, 1327, 6451, 1, 0, 0, 0, 1329, 6460, 1, 0, 0, 0, 1331, 6467, 1, 0, 0, 0, 1333, 6470, 1, 0, 0, 0, 1335, 6478, 1, 0, 0, 0, 1337, 6481, 1, 0, 0, 0, 1339, 6484, 1, 0, 0, 0, 1341, 6487, 1, 0, 0, 0, 1343, 6495, 1, 0, 0, 0, 1345, 6498, 1, 0, 0, 0, 1347, 6501, 1, 0, 0, 0, 1349, 6503, 1, 0, 0, 0, 1351, 6537, 1, 0, 0, 0, 1353, 6540, 1, 0, 0, 0, 1355, 6544, 1, 0, 0, 0, 1357, 6552, 1, 0, 0, 0, 1359, 6568, 1, 0, 0, 0, 1361, 6579, 1, 0, 0, 0, 1363, 6583, 1, 0, 0, 0, 1365, 6594, 1, 0, 0, 0, 1367, 6633, 1, 0, 0, 0, 1369, 6684, 1, 0, 0, 0, 1371, 6708, 1, 0, 0, 0, 1373, 6711, 1, 0, 0, 0, 1375, 6713, 1, 0, 0, 0, 1377, 6718, 1, 0, 0, 0, 1379, 6749, 1, 0, 0, 0, 1381, 6752, 1, 0, 0, 0, 1383, 6757, 1, 0, 0, 0, 1385, 6770, 1, 0, 0, 0, 1387, 6773, 1, 0, 0, 0, 1389, 6778, 1, 0, 0, 0, 1391, 6784, 1, 0, 0, 0, 1393, 6789, 1, 0, 0, 0, 1395, 6794, 1, 0, 0, 0, 1397, 6799, 1, 0, 0, 0, 1399, 6804, 1, 0, 0, 0, 1401, 6821, 1, 0, 0, 0, 1403, 6823, 1, 0, 0, 0, 1405, 1406, 5, 36, 0, 0, 1406, 6, 1, 0, 0, 0, 1407, 1408, 5, 40, 0, 0, 1408, 8, 1, 0, 0, 0, 1409, 1410, 5, 41, 0, 0, 1410, 10, 1, 0, 0, 0, 1411, 1412, 5, 91, 0, 0, 1412, 12, 1, 0, 0, 0, 1413, 1414, 5, 93, 0, 0, 1414, 14, 1, 0, 0, 0, 1415, 1416, 5, 44, 0, 0, 1416, 16, 1, 0, 0, 0, 1417, 1418, 5, 59, 0, 0, 1418, 18, 1, 0, 0, 0, 1419, 1420, 5, 58, 0, 0, 1420, 20, 1, 0, 0, 0, 1421, 1422, 5, 42, 0, 0, 1422, 22, 1, 0, 0, 0, 1423, 1424, 5, 61, 0, 0, 1424, 24, 1, 0, 0, 0, 1425, 1426, 5, 46, 0, 0, 1426, 26, 1, 0, 0, 0, 1427, 1428, 5, 43, 0, 0, 1428, 28, 1, 0, 0, 0, 1429, 1430, 5, 45, 0, 0, 1430, 30, 1, 0, 0, 0, 1431, 1432, 5, 47, 0, 0, 1432, 32, 1, 0, 0, 0, 1433, 1434, 5, 94, 0, 0, 1434, 34, 1, 0, 0, 0, 1435, 1436, 5, 60, 0, 0, 1436, 36, 1, 0, 0, 0, 1437, 1438, 5, 62, 0, 0, 1438, 38, 1, 0, 0, 0, 1439, 1440, 5, 60, 0, 0, 1440, 1441, 5, 60, 0, 0, 1441, 40, 1, 0, 0, 0, 1442, 1443, 5, 62, 0, 0, 1443, 1444, 5, 62, 0, 0, 1444, 42, 1, 0, 0, 0, 1445, 1446, 5, 58, 0, 0, 1446, 1447, 5, 61, 0, 0, 1447, 44, 1, 0, 0, 0, 1448, 1449, 5, 60, 0, 0, 1449, 1450, 5, 61, 0, 0, 1450, 46, 1, 0, 0, 0, 1451, 1452, 5, 61, 0, 0, 1452, 1453, 5, 62, 0, 0, 1453, 48, 1, 0, 0, 0, 1454, 1455, 5, 62, 0, 0, 1455, 1456, 5, 61, 0, 0, 1456, 50, 1, 0, 0, 0, 1457, 1458, 5, 46, 0, 0, 1458, 1459, 5, 46, 0, 0, 1459, 52, 1, 0, 0, 0, 1460, 1461, 5, 60, 0, 0, 1461, 1462, 5, 62, 0, 0, 1462, 54, 1, 0, 0, 0, 1463, 1464, 5, 58, 0, 0, 1464, 1465, 5, 58, 0, 0, 1465, 56, 1, 0, 0, 0, 1466, 1467, 5, 37, 0, 0, 1467, 58, 1, 0, 0, 0, 1468, 1470, 5, 36, 0, 0, 1469, 1471, 7, 0, 0, 0, 1470, 1469, 1, 0, 0, 0, 1471, 1472, 1, 0, 0, 0, 1472, 1470, 1, 0, 0, 0, 1472, 1473, 1, 0, 0, 0, 1473, 60, 1, 0, 0, 0, 1474, 1490, 3, 65, 30, 0, 1475, 1479, 5, 43, 0, 0, 1476, 1477, 5, 45, 0, 0, 1477, 1479, 4, 28, 0, 0, 1478, 1475, 1, 0, 0, 0, 1478, 1476, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1478, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1485, 1, 0, 0, 0, 1482, 1486, 3, 65, 30, 0, 1483, 1484, 5, 47, 0, 0, 1484, 1486, 4, 28, 1, 0, 1485, 1482, 1, 0, 0, 0, 1485, 1483, 1, 0, 0, 0, 1486, 1490, 1, 0, 0, 0, 1487, 1488, 5, 47, 0, 0, 1488, 1490, 4, 28, 2, 0, 1489, 1474, 1, 0, 0, 0, 1489, 1478, 1, 0, 0, 0, 1489, 1487, 1, 0, 0, 0, 1490, 1491, 1, 0, 0, 0, 1491, 1489, 1, 0, 0, 0, 1491, 1492, 1, 0, 0, 0, 1492, 1495, 1, 0, 0, 0, 1493, 1495, 7, 1, 0, 0, 1494, 1489, 1, 0, 0, 0, 1494, 1493, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1497, 6, 28, 0, 0, 1497, 62, 1, 0, 0, 0, 1498, 1504, 3, 67, 31, 0, 1499, 1500, 5, 45, 0, 0, 1500, 1504, 4, 29, 3, 0, 1501, 1502, 5, 47, 0, 0, 1502, 1504, 4, 29, 4, 0, 1503, 1498, 1, 0, 0, 0, 1503, 1499, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1504, 1507, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1505, 1506, 1, 0, 0, 0, 1506, 1508, 1, 0, 0, 0, 1507, 1505, 1, 0, 0, 0, 1508, 1510, 3, 69, 32, 0, 1509, 1511, 3, 61, 28, 0, 1510, 1509, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1515, 1, 0, 0, 0, 1512, 1516, 5, 43, 0, 0, 1513, 1514, 5, 45, 0, 0, 1514, 1516, 4, 29, 5, 0, 1515, 1512, 1, 0, 0, 0, 1515, 1513, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1515, 1, 0, 0, 0, 1517, 1518, 1, 0, 0, 0, 1518, 1519, 1, 0, 0, 0, 1519, 1520, 6, 29, 1, 0, 1520, 64, 1, 0, 0, 0, 1521, 1522, 7, 2, 0, 0, 1522, 66, 1, 0, 0, 0, 1523, 1524, 7, 3, 0, 0, 1524, 68, 1, 0, 0, 0, 1525, 1526, 7, 4, 0, 0, 1526, 70, 1, 0, 0, 0, 1527, 1528, 7, 5, 0, 0, 1528, 1529, 7, 6, 0, 0, 1529, 1530, 7, 6, 0, 0, 1530, 72, 1, 0, 0, 0, 1531, 1532, 7, 5, 0, 0, 1532, 1533, 7, 7, 0, 0, 1533, 1534, 7, 5, 0, 0, 1534, 1535, 7, 6, 0, 0, 1535, 1536, 7, 8, 0, 0, 1536, 1537, 7, 9, 0, 0, 1537, 1538, 7, 10, 0, 0, 1538, 74, 1, 0, 0, 0, 1539, 1540, 7, 5, 0, 0, 1540, 1541, 7, 7, 0, 0, 1541, 1542, 7, 5, 0, 0, 1542, 1543, 7, 6, 0, 0, 1543, 1544, 7, 8, 0, 0, 1544, 1545, 7, 11, 0, 0, 1545, 1546, 7, 10, 0, 0, 1546, 76, 1, 0, 0, 0, 1547, 1548, 7, 5, 0, 0, 1548, 1549, 7, 7, 0, 0, 1549, 1550, 7, 12, 0, 0, 1550, 78, 1, 0, 0, 0, 1551, 1552, 7, 5, 0, 0, 1552, 1553, 7, 7, 0, 0, 1553, 1554, 7, 8, 0, 0, 1554, 80, 1, 0, 0, 0, 1555, 1556, 7, 5, 0, 0, 1556, 1557, 7, 13, 0, 0, 1557, 1558, 7, 13, 0, 0, 1558, 1559, 7, 5, 0, 0, 1559, 1560, 7, 8, 0, 0, 1560, 82, 1, 0, 0, 0, 1561, 1562, 7, 5, 0, 0, 1562, 1563, 7, 9, 0, 0, 1563, 84, 1, 0, 0, 0, 1564, 1565, 7, 5, 0, 0, 1565, 1566, 7, 9, 0, 0, 1566, 1567, 7, 14, 0, 0, 1567, 86, 1, 0, 0, 0, 1568, 1569, 7, 5, 0, 0, 1569, 1570, 7, 9, 0, 0, 1570, 1571, 7, 8, 0, 0, 1571, 1572, 7, 15, 0, 0, 1572, 1573, 7, 15, 0, 0, 1573, 1574, 7, 10, 0, 0, 1574, 1575, 7, 16, 0, 0, 1575, 1576, 7, 13, 0, 0, 1576, 1577, 7, 17, 0, 0, 1577, 1578, 7, 14, 0, 0, 1578, 88, 1, 0, 0, 0, 1579, 1580, 7, 18, 0, 0, 1580, 1581, 7, 19, 0, 0, 1581, 1582, 7, 16, 0, 0, 1582, 1583, 7, 20, 0, 0, 1583, 90, 1, 0, 0, 0, 1584, 1585, 7, 14, 0, 0, 1585, 1586, 7, 5, 0, 0, 1586, 1587, 7, 9, 0, 0, 1587, 1588, 7, 10, 0, 0, 1588, 92, 1, 0, 0, 0, 1589, 1590, 7, 14, 0, 0, 1590, 1591, 7, 5, 0, 0, 1591, 1592, 7, 9, 0, 0, 1592, 1593, 7, 16, 0, 0, 1593, 94, 1, 0, 0, 0, 1594, 1595, 7, 14, 0, 0, 1595, 1596, 7, 20, 0, 0, 1596, 1597, 7, 10, 0, 0, 1597, 1598, 7, 14, 0, 0, 1598, 1599, 7, 21, 0, 0, 1599, 96, 1, 0, 0, 0, 1600, 1601, 7, 14, 0, 0, 1601, 1602, 7, 19, 0, 0, 1602, 1603, 7, 6, 0, 0, 1603, 1604, 7, 6, 0, 0, 1604, 1605, 7, 5, 0, 0, 1605, 1606, 7, 16, 0, 0, 1606, 1607, 7, 10, 0, 0, 1607, 98, 1, 0, 0, 0, 1608, 1609, 7, 14, 0, 0, 1609, 1610, 7, 19, 0, 0, 1610, 1611, 7, 6, 0, 0, 1611, 1612, 7, 22, 0, 0, 1612, 1613, 7, 15, 0, 0, 1613, 1614, 7, 7, 0, 0, 1614, 100, 1, 0, 0, 0, 1615, 1616, 7, 14, 0, 0, 1616, 1617, 7, 19, 0, 0, 1617, 1618, 7, 7, 0, 0, 1618, 1619, 7, 9, 0, 0, 1619, 1620, 7, 16, 0, 0, 1620, 1621, 7, 13, 0, 0, 1621, 1622, 7, 5, 0, 0, 1622, 1623, 7, 17, 0, 0, 1623, 1624, 7, 7, 0, 0, 1624, 1625, 7, 16, 0, 0, 1625, 102, 1, 0, 0, 0, 1626, 1627, 7, 14, 0, 0, 1627, 1628, 7, 13, 0, 0, 1628, 1629, 7, 10, 0, 0, 1629, 1630, 7, 5, 0, 0, 1630, 1631, 7, 16, 0, 0, 1631, 1632, 7, 10, 0, 0, 1632, 104, 1, 0, 0, 0, 1633, 1634, 7, 14, 0, 0, 1634, 1635, 7, 22, 0, 0, 1635, 1636, 7, 13, 0, 0, 1636, 1637, 7, 13, 0, 0, 1637, 1638, 7, 10, 0, 0, 1638, 1639, 7, 7, 0, 0, 1639, 1640, 7, 16, 0, 0, 1640, 1641, 5, 95, 0, 0, 1641, 1642, 7, 14, 0, 0, 1642, 1643, 7, 5, 0, 0, 1643, 1644, 7, 16, 0, 0, 1644, 1645, 7, 5, 0, 0, 1645, 1646, 7, 6, 0, 0, 1646, 1647, 7, 19, 0, 0, 1647, 1648, 7, 23, 0, 0, 1648, 106, 1, 0, 0, 0, 1649, 1650, 7, 14, 0, 0, 1650, 1651, 7, 22, 0, 0, 1651, 1652, 7, 13, 0, 0, 1652, 1653, 7, 13, 0, 0, 1653, 1654, 7, 10, 0, 0, 1654, 1655, 7, 7, 0, 0, 1655, 1656, 7, 16, 0, 0, 1656, 1657, 5, 95, 0, 0, 1657, 1658, 7, 12, 0, 0, 1658, 1659, 7, 5, 0, 0, 1659, 1660, 7, 16, 0, 0, 1660, 1661, 7, 10, 0, 0, 1661, 108, 1, 0, 0, 0, 1662, 1663, 7, 14, 0, 0, 1663, 1664, 7, 22, 0, 0, 1664, 1665, 7, 13, 0, 0, 1665, 1666, 7, 13, 0, 0, 1666, 1667, 7, 10, 0, 0, 1667, 1668, 7, 7, 0, 0, 1668, 1669, 7, 16, 0, 0, 1669, 1670, 5, 95, 0, 0, 1670, 1671, 7, 13, 0, 0, 1671, 1672, 7, 19, 0, 0, 1672, 1673, 7, 6, 0, 0, 1673, 1674, 7, 10, 0, 0, 1674, 110, 1, 0, 0, 0, 1675, 1676, 7, 14, 0, 0, 1676, 1677, 7, 22, 0, 0, 1677, 1678, 7, 13, 0, 0, 1678, 1679, 7, 13, 0, 0, 1679, 1680, 7, 10, 0, 0, 1680, 1681, 7, 7, 0, 0, 1681, 1682, 7, 16, 0, 0, 1682, 1683, 5, 95, 0, 0, 1683, 1684, 7, 16, 0, 0, 1684, 1685, 7, 17, 0, 0, 1685, 1686, 7, 15, 0, 0, 1686, 1687, 7, 10, 0, 0, 1687, 112, 1, 0, 0, 0, 1688, 1689, 7, 14, 0, 0, 1689, 1690, 7, 22, 0, 0, 1690, 1691, 7, 13, 0, 0, 1691, 1692, 7, 13, 0, 0, 1692, 1693, 7, 10, 0, 0, 1693, 1694, 7, 7, 0, 0, 1694, 1695, 7, 16, 0, 0, 1695, 1696, 5, 95, 0, 0, 1696, 1697, 7, 16, 0, 0, 1697, 1698, 7, 17, 0, 0, 1698, 1699, 7, 15, 0, 0, 1699, 1700, 7, 10, 0, 0, 1700, 1701, 7, 9, 0, 0, 1701, 1702, 7, 16, 0, 0, 1702, 1703, 7, 5, 0, 0, 1703, 1704, 7, 15, 0, 0, 1704, 1705, 7, 24, 0, 0, 1705, 114, 1, 0, 0, 0, 1706, 1707, 7, 14, 0, 0, 1707, 1708, 7, 22, 0, 0, 1708, 1709, 7, 13, 0, 0, 1709, 1710, 7, 13, 0, 0, 1710, 1711, 7, 10, 0, 0, 1711, 1712, 7, 7, 0, 0, 1712, 1713, 7, 16, 0, 0, 1713, 1714, 5, 95, 0, 0, 1714, 1715, 7, 22, 0, 0, 1715, 1716, 7, 9, 0, 0, 1716, 1717, 7, 10, 0, 0, 1717, 1718, 7, 13, 0, 0, 1718, 116, 1, 0, 0, 0, 1719, 1720, 7, 12, 0, 0, 1720, 1721, 7, 10, 0, 0, 1721, 1722, 7, 25, 0, 0, 1722, 1723, 7, 5, 0, 0, 1723, 1724, 7, 22, 0, 0, 1724, 1725, 7, 6, 0, 0, 1725, 1726, 7, 16, 0, 0, 1726, 118, 1, 0, 0, 0, 1727, 1728, 7, 12, 0, 0, 1728, 1729, 7, 10, 0, 0, 1729, 1730, 7, 25, 0, 0, 1730, 1731, 7, 10, 0, 0, 1731, 1732, 7, 13, 0, 0, 1732, 1733, 7, 13, 0, 0, 1733, 1734, 7, 5, 0, 0, 1734, 1735, 7, 18, 0, 0, 1735, 1736, 7, 6, 0, 0, 1736, 1737, 7, 10, 0, 0, 1737, 120, 1, 0, 0, 0, 1738, 1739, 7, 12, 0, 0, 1739, 1740, 7, 10, 0, 0, 1740, 1741, 7, 9, 0, 0, 1741, 1742, 7, 14, 0, 0, 1742, 122, 1, 0, 0, 0, 1743, 1744, 7, 12, 0, 0, 1744, 1745, 7, 17, 0, 0, 1745, 1746, 7, 9, 0, 0, 1746, 1747, 7, 16, 0, 0, 1747, 1748, 7, 17, 0, 0, 1748, 1749, 7, 7, 0, 0, 1749, 1750, 7, 14, 0, 0, 1750, 1751, 7, 16, 0, 0, 1751, 124, 1, 0, 0, 0, 1752, 1753, 7, 12, 0, 0, 1753, 1754, 7, 19, 0, 0, 1754, 126, 1, 0, 0, 0, 1755, 1756, 7, 10, 0, 0, 1756, 1757, 7, 6, 0, 0, 1757, 1758, 7, 9, 0, 0, 1758, 1759, 7, 10, 0, 0, 1759, 128, 1, 0, 0, 0, 1760, 1761, 7, 10, 0, 0, 1761, 1762, 7, 26, 0, 0, 1762, 1763, 7, 14, 0, 0, 1763, 1764, 7, 10, 0, 0, 1764, 1765, 7, 24, 0, 0, 1765, 1766, 7, 16, 0, 0, 1766, 130, 1, 0, 0, 0, 1767, 1768, 7, 25, 0, 0, 1768, 1769, 7, 5, 0, 0, 1769, 1770, 7, 6, 0, 0, 1770, 1771, 7, 9, 0, 0, 1771, 1772, 7, 10, 0, 0, 1772, 132, 1, 0, 0, 0, 1773, 1774, 7, 25, 0, 0, 1774, 1775, 7, 10, 0, 0, 1775, 1776, 7, 16, 0, 0, 1776, 1777, 7, 14, 0, 0, 1777, 1778, 7, 20, 0, 0, 1778, 134, 1, 0, 0, 0, 1779, 1780, 7, 25, 0, 0, 1780, 1781, 7, 19, 0, 0, 1781, 1782, 7, 13, 0, 0, 1782, 136, 1, 0, 0, 0, 1783, 1784, 7, 25, 0, 0, 1784, 1785, 7, 19, 0, 0, 1785, 1786, 7, 13, 0, 0, 1786, 1787, 7, 10, 0, 0, 1787, 1788, 7, 17, 0, 0, 1788, 1789, 7, 23, 0, 0, 1789, 1790, 7, 7, 0, 0, 1790, 138, 1, 0, 0, 0, 1791, 1792, 7, 25, 0, 0, 1792, 1793, 7, 13, 0, 0, 1793, 1794, 7, 19, 0, 0, 1794, 1795, 7, 15, 0, 0, 1795, 140, 1, 0, 0, 0, 1796, 1797, 7, 23, 0, 0, 1797, 1798, 7, 13, 0, 0, 1798, 1799, 7, 5, 0, 0, 1799, 1800, 7, 7, 0, 0, 1800, 1801, 7, 16, 0, 0, 1801, 142, 1, 0, 0, 0, 1802, 1803, 7, 23, 0, 0, 1803, 1804, 7, 13, 0, 0, 1804, 1805, 7, 19, 0, 0, 1805, 1806, 7, 22, 0, 0, 1806, 1807, 7, 24, 0, 0, 1807, 144, 1, 0, 0, 0, 1808, 1809, 7, 20, 0, 0, 1809, 1810, 7, 5, 0, 0, 1810, 1811, 7, 27, 0, 0, 1811, 1812, 7, 17, 0, 0, 1812, 1813, 7, 7, 0, 0, 1813, 1814, 7, 23, 0, 0, 1814, 146, 1, 0, 0, 0, 1815, 1816, 7, 17, 0, 0, 1816, 1817, 7, 7, 0, 0, 1817, 148, 1, 0, 0, 0, 1818, 1819, 7, 17, 0, 0, 1819, 1820, 7, 7, 0, 0, 1820, 1821, 7, 17, 0, 0, 1821, 1822, 7, 16, 0, 0, 1822, 1823, 7, 17, 0, 0, 1823, 1824, 7, 5, 0, 0, 1824, 1825, 7, 6, 0, 0, 1825, 1826, 7, 6, 0, 0, 1826, 1827, 7, 8, 0, 0, 1827, 150, 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, 10, 0, 0, 1832, 1833, 7, 13, 0, 0, 1833, 1834, 7, 9, 0, 0, 1834, 1835, 7, 10, 0, 0, 1835, 1836, 7, 14, 0, 0, 1836, 1837, 7, 16, 0, 0, 1837, 152, 1, 0, 0, 0, 1838, 1839, 7, 17, 0, 0, 1839, 1840, 7, 7, 0, 0, 1840, 1841, 7, 16, 0, 0, 1841, 1842, 7, 19, 0, 0, 1842, 154, 1, 0, 0, 0, 1843, 1844, 7, 6, 0, 0, 1844, 1845, 7, 5, 0, 0, 1845, 1846, 7, 16, 0, 0, 1846, 1847, 7, 10, 0, 0, 1847, 1848, 7, 13, 0, 0, 1848, 1849, 7, 5, 0, 0, 1849, 1850, 7, 6, 0, 0, 1850, 156, 1, 0, 0, 0, 1851, 1852, 7, 6, 0, 0, 1852, 1853, 7, 10, 0, 0, 1853, 1854, 7, 5, 0, 0, 1854, 1855, 7, 12, 0, 0, 1855, 1856, 7, 17, 0, 0, 1856, 1857, 7, 7, 0, 0, 1857, 1858, 7, 23, 0, 0, 1858, 158, 1, 0, 0, 0, 1859, 1860, 7, 6, 0, 0, 1860, 1861, 7, 17, 0, 0, 1861, 1862, 7, 15, 0, 0, 1862, 1863, 7, 17, 0, 0, 1863, 1864, 7, 16, 0, 0, 1864, 160, 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, 162, 1, 0, 0, 0, 1875, 1876, 7, 6, 0, 0, 1876, 1877, 7, 19, 0, 0, 1877, 1878, 7, 14, 0, 0, 1878, 1879, 7, 5, 0, 0, 1879, 1880, 7, 6, 0, 0, 1880, 1881, 7, 16, 0, 0, 1881, 1882, 7, 17, 0, 0, 1882, 1883, 7, 15, 0, 0, 1883, 1884, 7, 10, 0, 0, 1884, 1885, 7, 9, 0, 0, 1885, 1886, 7, 16, 0, 0, 1886, 1887, 7, 5, 0, 0, 1887, 1888, 7, 15, 0, 0, 1888, 1889, 7, 24, 0, 0, 1889, 164, 1, 0, 0, 0, 1890, 1891, 7, 7, 0, 0, 1891, 1892, 7, 19, 0, 0, 1892, 1893, 7, 16, 0, 0, 1893, 166, 1, 0, 0, 0, 1894, 1895, 7, 7, 0, 0, 1895, 1896, 7, 22, 0, 0, 1896, 1897, 7, 6, 0, 0, 1897, 1898, 7, 6, 0, 0, 1898, 168, 1, 0, 0, 0, 1899, 1900, 7, 19, 0, 0, 1900, 1901, 7, 25, 0, 0, 1901, 1902, 7, 25, 0, 0, 1902, 1903, 7, 9, 0, 0, 1903, 1904, 7, 10, 0, 0, 1904, 1905, 7, 16, 0, 0, 1905, 170, 1, 0, 0, 0, 1906, 1907, 7, 19, 0, 0, 1907, 1908, 7, 7, 0, 0, 1908, 172, 1, 0, 0, 0, 1909, 1910, 7, 19, 0, 0, 1910, 1911, 7, 7, 0, 0, 1911, 1912, 7, 6, 0, 0, 1912, 1913, 7, 8, 0, 0, 1913, 174, 1, 0, 0, 0, 1914, 1915, 7, 19, 0, 0, 1915, 1916, 7, 13, 0, 0, 1916, 176, 1, 0, 0, 0, 1917, 1918, 7, 19, 0, 0, 1918, 1919, 7, 13, 0, 0, 1919, 1920, 7, 12, 0, 0, 1920, 1921, 7, 10, 0, 0, 1921, 1922, 7, 13, 0, 0, 1922, 178, 1, 0, 0, 0, 1923, 1924, 7, 24, 0, 0, 1924, 1925, 7, 6, 0, 0, 1925, 1926, 7, 5, 0, 0, 1926, 1927, 7, 14, 0, 0, 1927, 1928, 7, 17, 0, 0, 1928, 1929, 7, 7, 0, 0, 1929, 1930, 7, 23, 0, 0, 1930, 180, 1, 0, 0, 0, 1931, 1932, 7, 24, 0, 0, 1932, 1933, 7, 13, 0, 0, 1933, 1934, 7, 17, 0, 0, 1934, 1935, 7, 15, 0, 0, 1935, 1936, 7, 5, 0, 0, 1936, 1937, 7, 13, 0, 0, 1937, 1938, 7, 8, 0, 0, 1938, 182, 1, 0, 0, 0, 1939, 1940, 7, 13, 0, 0, 1940, 1941, 7, 10, 0, 0, 1941, 1942, 7, 25, 0, 0, 1942, 1943, 7, 10, 0, 0, 1943, 1944, 7, 13, 0, 0, 1944, 1945, 7, 10, 0, 0, 1945, 1946, 7, 7, 0, 0, 1946, 1947, 7, 14, 0, 0, 1947, 1948, 7, 10, 0, 0, 1948, 1949, 7, 9, 0, 0, 1949, 184, 1, 0, 0, 0, 1950, 1951, 7, 13, 0, 0, 1951, 1952, 7, 10, 0, 0, 1952, 1953, 7, 16, 0, 0, 1953, 1954, 7, 22, 0, 0, 1954, 1955, 7, 13, 0, 0, 1955, 1956, 7, 7, 0, 0, 1956, 1957, 7, 17, 0, 0, 1957, 1958, 7, 7, 0, 0, 1958, 1959, 7, 23, 0, 0, 1959, 186, 1, 0, 0, 0, 1960, 1961, 7, 9, 0, 0, 1961, 1962, 7, 10, 0, 0, 1962, 1963, 7, 6, 0, 0, 1963, 1964, 7, 10, 0, 0, 1964, 1965, 7, 14, 0, 0, 1965, 1966, 7, 16, 0, 0, 1966, 188, 1, 0, 0, 0, 1967, 1968, 7, 9, 0, 0, 1968, 1969, 7, 10, 0, 0, 1969, 1970, 7, 9, 0, 0, 1970, 1971, 7, 9, 0, 0, 1971, 1972, 7, 17, 0, 0, 1972, 1973, 7, 19, 0, 0, 1973, 1974, 7, 7, 0, 0, 1974, 1975, 5, 95, 0, 0, 1975, 1976, 7, 22, 0, 0, 1976, 1977, 7, 9, 0, 0, 1977, 1978, 7, 10, 0, 0, 1978, 1979, 7, 13, 0, 0, 1979, 190, 1, 0, 0, 0, 1980, 1981, 7, 9, 0, 0, 1981, 1982, 7, 19, 0, 0, 1982, 1983, 7, 15, 0, 0, 1983, 1984, 7, 10, 0, 0, 1984, 192, 1, 0, 0, 0, 1985, 1986, 7, 9, 0, 0, 1986, 1987, 7, 8, 0, 0, 1987, 1988, 7, 15, 0, 0, 1988, 1989, 7, 15, 0, 0, 1989, 1990, 7, 10, 0, 0, 1990, 1991, 7, 16, 0, 0, 1991, 1992, 7, 13, 0, 0, 1992, 1993, 7, 17, 0, 0, 1993, 1994, 7, 14, 0, 0, 1994, 194, 1, 0, 0, 0, 1995, 1996, 7, 16, 0, 0, 1996, 1997, 7, 5, 0, 0, 1997, 1998, 7, 18, 0, 0, 1998, 1999, 7, 6, 0, 0, 1999, 2000, 7, 10, 0, 0, 2000, 196, 1, 0, 0, 0, 2001, 2002, 7, 16, 0, 0, 2002, 2003, 7, 20, 0, 0, 2003, 2004, 7, 10, 0, 0, 2004, 2005, 7, 7, 0, 0, 2005, 198, 1, 0, 0, 0, 2006, 2007, 7, 16, 0, 0, 2007, 2008, 7, 19, 0, 0, 2008, 200, 1, 0, 0, 0, 2009, 2010, 7, 16, 0, 0, 2010, 2011, 7, 19, 0, 0, 2011, 2012, 7, 24, 0, 0, 2012, 2013, 7, 17, 0, 0, 2013, 2014, 7, 14, 0, 0, 2014, 202, 1, 0, 0, 0, 2015, 2016, 7, 16, 0, 0, 2016, 2017, 7, 19, 0, 0, 2017, 2018, 7, 24, 0, 0, 2018, 2019, 7, 17, 0, 0, 2019, 2020, 7, 14, 0, 0, 2020, 2021, 7, 9, 0, 0, 2021, 204, 1, 0, 0, 0, 2022, 2023, 7, 9, 0, 0, 2023, 2024, 7, 16, 0, 0, 2024, 2025, 7, 13, 0, 0, 2025, 2026, 7, 10, 0, 0, 2026, 2027, 7, 5, 0, 0, 2027, 2028, 7, 15, 0, 0, 2028, 206, 1, 0, 0, 0, 2029, 2030, 7, 11, 0, 0, 2030, 2031, 7, 27, 0, 0, 2031, 2032, 7, 17, 0, 0, 2032, 2033, 7, 10, 0, 0, 2033, 2034, 7, 28, 0, 0, 2034, 208, 1, 0, 0, 0, 2035, 2036, 7, 11, 0, 0, 2036, 2037, 7, 27, 0, 0, 2037, 2038, 7, 17, 0, 0, 2038, 2039, 7, 10, 0, 0, 2039, 2040, 7, 28, 0, 0, 2040, 2041, 7, 9, 0, 0, 2041, 210, 1, 0, 0, 0, 2042, 2043, 7, 16, 0, 0, 2043, 2044, 7, 13, 0, 0, 2044, 2045, 7, 5, 0, 0, 2045, 2046, 7, 17, 0, 0, 2046, 2047, 7, 6, 0, 0, 2047, 2048, 7, 17, 0, 0, 2048, 2049, 7, 7, 0, 0, 2049, 2050, 7, 23, 0, 0, 2050, 212, 1, 0, 0, 0, 2051, 2052, 7, 16, 0, 0, 2052, 2053, 7, 13, 0, 0, 2053, 2054, 7, 22, 0, 0, 2054, 2055, 7, 10, 0, 0, 2055, 214, 1, 0, 0, 0, 2056, 2057, 7, 22, 0, 0, 2057, 2058, 7, 7, 0, 0, 2058, 2059, 7, 17, 0, 0, 2059, 2060, 7, 19, 0, 0, 2060, 2061, 7, 7, 0, 0, 2061, 216, 1, 0, 0, 0, 2062, 2063, 7, 22, 0, 0, 2063, 2064, 7, 7, 0, 0, 2064, 2065, 7, 17, 0, 0, 2065, 2066, 7, 29, 0, 0, 2066, 2067, 7, 22, 0, 0, 2067, 2068, 7, 10, 0, 0, 2068, 218, 1, 0, 0, 0, 2069, 2070, 7, 22, 0, 0, 2070, 2071, 7, 9, 0, 0, 2071, 2072, 7, 10, 0, 0, 2072, 2073, 7, 13, 0, 0, 2073, 220, 1, 0, 0, 0, 2074, 2075, 7, 22, 0, 0, 2075, 2076, 7, 9, 0, 0, 2076, 2077, 7, 17, 0, 0, 2077, 2078, 7, 7, 0, 0, 2078, 2079, 7, 23, 0, 0, 2079, 222, 1, 0, 0, 0, 2080, 2081, 7, 27, 0, 0, 2081, 2082, 7, 5, 0, 0, 2082, 2083, 7, 13, 0, 0, 2083, 2084, 7, 17, 0, 0, 2084, 2085, 7, 5, 0, 0, 2085, 2086, 7, 12, 0, 0, 2086, 2087, 7, 17, 0, 0, 2087, 2088, 7, 14, 0, 0, 2088, 224, 1, 0, 0, 0, 2089, 2090, 7, 28, 0, 0, 2090, 2091, 7, 20, 0, 0, 2091, 2092, 7, 10, 0, 0, 2092, 2093, 7, 7, 0, 0, 2093, 226, 1, 0, 0, 0, 2094, 2095, 7, 28, 0, 0, 2095, 2096, 7, 20, 0, 0, 2096, 2097, 7, 10, 0, 0, 2097, 2098, 7, 13, 0, 0, 2098, 2099, 7, 10, 0, 0, 2099, 228, 1, 0, 0, 0, 2100, 2101, 7, 28, 0, 0, 2101, 2102, 7, 17, 0, 0, 2102, 2103, 7, 7, 0, 0, 2103, 2104, 7, 12, 0, 0, 2104, 2105, 7, 19, 0, 0, 2105, 2106, 7, 28, 0, 0, 2106, 230, 1, 0, 0, 0, 2107, 2108, 7, 28, 0, 0, 2108, 2109, 7, 17, 0, 0, 2109, 2110, 7, 16, 0, 0, 2110, 2111, 7, 20, 0, 0, 2111, 232, 1, 0, 0, 0, 2112, 2113, 7, 5, 0, 0, 2113, 2114, 7, 22, 0, 0, 2114, 2115, 7, 16, 0, 0, 2115, 2116, 7, 20, 0, 0, 2116, 2117, 7, 19, 0, 0, 2117, 2118, 7, 13, 0, 0, 2118, 2119, 7, 17, 0, 0, 2119, 2120, 7, 11, 0, 0, 2120, 2121, 7, 5, 0, 0, 2121, 2122, 7, 16, 0, 0, 2122, 2123, 7, 17, 0, 0, 2123, 2124, 7, 19, 0, 0, 2124, 2125, 7, 7, 0, 0, 2125, 234, 1, 0, 0, 0, 2126, 2127, 7, 18, 0, 0, 2127, 2128, 7, 17, 0, 0, 2128, 2129, 7, 7, 0, 0, 2129, 2130, 7, 5, 0, 0, 2130, 2131, 7, 13, 0, 0, 2131, 2132, 7, 8, 0, 0, 2132, 236, 1, 0, 0, 0, 2133, 2134, 7, 14, 0, 0, 2134, 2135, 7, 19, 0, 0, 2135, 2136, 7, 6, 0, 0, 2136, 2137, 7, 6, 0, 0, 2137, 2138, 7, 5, 0, 0, 2138, 2139, 7, 16, 0, 0, 2139, 2140, 7, 17, 0, 0, 2140, 2141, 7, 19, 0, 0, 2141, 2142, 7, 7, 0, 0, 2142, 238, 1, 0, 0, 0, 2143, 2144, 7, 14, 0, 0, 2144, 2145, 7, 19, 0, 0, 2145, 2146, 7, 7, 0, 0, 2146, 2147, 7, 14, 0, 0, 2147, 2148, 7, 22, 0, 0, 2148, 2149, 7, 13, 0, 0, 2149, 2150, 7, 13, 0, 0, 2150, 2151, 7, 10, 0, 0, 2151, 2152, 7, 7, 0, 0, 2152, 2153, 7, 16, 0, 0, 2153, 2154, 7, 6, 0, 0, 2154, 2155, 7, 8, 0, 0, 2155, 240, 1, 0, 0, 0, 2156, 2157, 7, 14, 0, 0, 2157, 2158, 7, 13, 0, 0, 2158, 2159, 7, 19, 0, 0, 2159, 2160, 7, 9, 0, 0, 2160, 2161, 7, 9, 0, 0, 2161, 242, 1, 0, 0, 0, 2162, 2163, 7, 14, 0, 0, 2163, 2164, 7, 22, 0, 0, 2164, 2165, 7, 13, 0, 0, 2165, 2166, 7, 13, 0, 0, 2166, 2167, 7, 10, 0, 0, 2167, 2168, 7, 7, 0, 0, 2168, 2169, 7, 16, 0, 0, 2169, 2170, 5, 95, 0, 0, 2170, 2171, 7, 9, 0, 0, 2171, 2172, 7, 14, 0, 0, 2172, 2173, 7, 20, 0, 0, 2173, 2174, 7, 10, 0, 0, 2174, 2175, 7, 15, 0, 0, 2175, 2176, 7, 5, 0, 0, 2176, 244, 1, 0, 0, 0, 2177, 2178, 7, 25, 0, 0, 2178, 2179, 7, 13, 0, 0, 2179, 2180, 7, 10, 0, 0, 2180, 2181, 7, 10, 0, 0, 2181, 2182, 7, 11, 0, 0, 2182, 2183, 7, 10, 0, 0, 2183, 246, 1, 0, 0, 0, 2184, 2185, 7, 25, 0, 0, 2185, 2186, 7, 22, 0, 0, 2186, 2187, 7, 6, 0, 0, 2187, 2188, 7, 6, 0, 0, 2188, 248, 1, 0, 0, 0, 2189, 2190, 7, 17, 0, 0, 2190, 2191, 7, 6, 0, 0, 2191, 2192, 7, 17, 0, 0, 2192, 2193, 7, 21, 0, 0, 2193, 2194, 7, 10, 0, 0, 2194, 250, 1, 0, 0, 0, 2195, 2196, 7, 17, 0, 0, 2196, 2197, 7, 7, 0, 0, 2197, 2198, 7, 7, 0, 0, 2198, 2199, 7, 10, 0, 0, 2199, 2200, 7, 13, 0, 0, 2200, 252, 1, 0, 0, 0, 2201, 2202, 7, 17, 0, 0, 2202, 2203, 7, 9, 0, 0, 2203, 254, 1, 0, 0, 0, 2204, 2205, 7, 17, 0, 0, 2205, 2206, 7, 9, 0, 0, 2206, 2207, 7, 7, 0, 0, 2207, 2208, 7, 22, 0, 0, 2208, 2209, 7, 6, 0, 0, 2209, 2210, 7, 6, 0, 0, 2210, 256, 1, 0, 0, 0, 2211, 2212, 7, 30, 0, 0, 2212, 2213, 7, 19, 0, 0, 2213, 2214, 7, 17, 0, 0, 2214, 2215, 7, 7, 0, 0, 2215, 258, 1, 0, 0, 0, 2216, 2217, 7, 6, 0, 0, 2217, 2218, 7, 10, 0, 0, 2218, 2219, 7, 25, 0, 0, 2219, 2220, 7, 16, 0, 0, 2220, 260, 1, 0, 0, 0, 2221, 2222, 7, 6, 0, 0, 2222, 2223, 7, 17, 0, 0, 2223, 2224, 7, 21, 0, 0, 2224, 2225, 7, 10, 0, 0, 2225, 262, 1, 0, 0, 0, 2226, 2227, 7, 7, 0, 0, 2227, 2228, 7, 5, 0, 0, 2228, 2229, 7, 16, 0, 0, 2229, 2230, 7, 22, 0, 0, 2230, 2231, 7, 13, 0, 0, 2231, 2232, 7, 5, 0, 0, 2232, 2233, 7, 6, 0, 0, 2233, 264, 1, 0, 0, 0, 2234, 2235, 7, 7, 0, 0, 2235, 2236, 7, 19, 0, 0, 2236, 2237, 7, 16, 0, 0, 2237, 2238, 7, 7, 0, 0, 2238, 2239, 7, 22, 0, 0, 2239, 2240, 7, 6, 0, 0, 2240, 2241, 7, 6, 0, 0, 2241, 266, 1, 0, 0, 0, 2242, 2243, 7, 19, 0, 0, 2243, 2244, 7, 22, 0, 0, 2244, 2245, 7, 16, 0, 0, 2245, 2246, 7, 10, 0, 0, 2246, 2247, 7, 13, 0, 0, 2247, 268, 1, 0, 0, 0, 2248, 2249, 7, 19, 0, 0, 2249, 2250, 7, 27, 0, 0, 2250, 2251, 7, 10, 0, 0, 2251, 2252, 7, 13, 0, 0, 2252, 270, 1, 0, 0, 0, 2253, 2254, 7, 19, 0, 0, 2254, 2255, 7, 27, 0, 0, 2255, 2256, 7, 10, 0, 0, 2256, 2257, 7, 13, 0, 0, 2257, 2258, 7, 6, 0, 0, 2258, 2259, 7, 5, 0, 0, 2259, 2260, 7, 24, 0, 0, 2260, 2261, 7, 9, 0, 0, 2261, 272, 1, 0, 0, 0, 2262, 2263, 7, 13, 0, 0, 2263, 2264, 7, 17, 0, 0, 2264, 2265, 7, 23, 0, 0, 2265, 2266, 7, 20, 0, 0, 2266, 2267, 7, 16, 0, 0, 2267, 274, 1, 0, 0, 0, 2268, 2269, 7, 9, 0, 0, 2269, 2270, 7, 17, 0, 0, 2270, 2271, 7, 15, 0, 0, 2271, 2272, 7, 17, 0, 0, 2272, 2273, 7, 6, 0, 0, 2273, 2274, 7, 5, 0, 0, 2274, 2275, 7, 13, 0, 0, 2275, 276, 1, 0, 0, 0, 2276, 2277, 7, 27, 0, 0, 2277, 2278, 7, 10, 0, 0, 2278, 2279, 7, 13, 0, 0, 2279, 2280, 7, 18, 0, 0, 2280, 2281, 7, 19, 0, 0, 2281, 2282, 7, 9, 0, 0, 2282, 2283, 7, 10, 0, 0, 2283, 278, 1, 0, 0, 0, 2284, 2285, 7, 5, 0, 0, 2285, 2286, 7, 18, 0, 0, 2286, 2287, 7, 19, 0, 0, 2287, 2288, 7, 13, 0, 0, 2288, 2289, 7, 16, 0, 0, 2289, 280, 1, 0, 0, 0, 2290, 2291, 7, 5, 0, 0, 2291, 2292, 7, 18, 0, 0, 2292, 2293, 7, 9, 0, 0, 2293, 2294, 7, 19, 0, 0, 2294, 2295, 7, 6, 0, 0, 2295, 2296, 7, 22, 0, 0, 2296, 2297, 7, 16, 0, 0, 2297, 2298, 7, 10, 0, 0, 2298, 282, 1, 0, 0, 0, 2299, 2300, 7, 5, 0, 0, 2300, 2301, 7, 14, 0, 0, 2301, 2302, 7, 14, 0, 0, 2302, 2303, 7, 10, 0, 0, 2303, 2304, 7, 9, 0, 0, 2304, 2305, 7, 9, 0, 0, 2305, 284, 1, 0, 0, 0, 2306, 2307, 7, 5, 0, 0, 2307, 2308, 7, 14, 0, 0, 2308, 2309, 7, 16, 0, 0, 2309, 2310, 7, 17, 0, 0, 2310, 2311, 7, 19, 0, 0, 2311, 2312, 7, 7, 0, 0, 2312, 286, 1, 0, 0, 0, 2313, 2314, 7, 5, 0, 0, 2314, 2315, 7, 12, 0, 0, 2315, 2316, 7, 12, 0, 0, 2316, 288, 1, 0, 0, 0, 2317, 2318, 7, 5, 0, 0, 2318, 2319, 7, 12, 0, 0, 2319, 2320, 7, 15, 0, 0, 2320, 2321, 7, 17, 0, 0, 2321, 2322, 7, 7, 0, 0, 2322, 290, 1, 0, 0, 0, 2323, 2324, 7, 5, 0, 0, 2324, 2325, 7, 25, 0, 0, 2325, 2326, 7, 16, 0, 0, 2326, 2327, 7, 10, 0, 0, 2327, 2328, 7, 13, 0, 0, 2328, 292, 1, 0, 0, 0, 2329, 2330, 7, 5, 0, 0, 2330, 2331, 7, 23, 0, 0, 2331, 2332, 7, 23, 0, 0, 2332, 2333, 7, 13, 0, 0, 2333, 2334, 7, 10, 0, 0, 2334, 2335, 7, 23, 0, 0, 2335, 2336, 7, 5, 0, 0, 2336, 2337, 7, 16, 0, 0, 2337, 2338, 7, 10, 0, 0, 2338, 294, 1, 0, 0, 0, 2339, 2340, 7, 5, 0, 0, 2340, 2341, 7, 6, 0, 0, 2341, 2342, 7, 9, 0, 0, 2342, 2343, 7, 19, 0, 0, 2343, 296, 1, 0, 0, 0, 2344, 2345, 7, 5, 0, 0, 2345, 2346, 7, 6, 0, 0, 2346, 2347, 7, 16, 0, 0, 2347, 2348, 7, 10, 0, 0, 2348, 2349, 7, 13, 0, 0, 2349, 298, 1, 0, 0, 0, 2350, 2351, 7, 5, 0, 0, 2351, 2352, 7, 6, 0, 0, 2352, 2353, 7, 28, 0, 0, 2353, 2354, 7, 5, 0, 0, 2354, 2355, 7, 8, 0, 0, 2355, 2356, 7, 9, 0, 0, 2356, 300, 1, 0, 0, 0, 2357, 2358, 7, 5, 0, 0, 2358, 2359, 7, 9, 0, 0, 2359, 2360, 7, 9, 0, 0, 2360, 2361, 7, 10, 0, 0, 2361, 2362, 7, 13, 0, 0, 2362, 2363, 7, 16, 0, 0, 2363, 2364, 7, 17, 0, 0, 2364, 2365, 7, 19, 0, 0, 2365, 2366, 7, 7, 0, 0, 2366, 302, 1, 0, 0, 0, 2367, 2368, 7, 5, 0, 0, 2368, 2369, 7, 9, 0, 0, 2369, 2370, 7, 9, 0, 0, 2370, 2371, 7, 17, 0, 0, 2371, 2372, 7, 23, 0, 0, 2372, 2373, 7, 7, 0, 0, 2373, 2374, 7, 15, 0, 0, 2374, 2375, 7, 10, 0, 0, 2375, 2376, 7, 7, 0, 0, 2376, 2377, 7, 16, 0, 0, 2377, 304, 1, 0, 0, 0, 2378, 2379, 7, 5, 0, 0, 2379, 2380, 7, 16, 0, 0, 2380, 306, 1, 0, 0, 0, 2381, 2382, 7, 5, 0, 0, 2382, 2383, 7, 16, 0, 0, 2383, 2384, 7, 16, 0, 0, 2384, 2385, 7, 13, 0, 0, 2385, 2386, 7, 17, 0, 0, 2386, 2387, 7, 18, 0, 0, 2387, 2388, 7, 22, 0, 0, 2388, 2389, 7, 16, 0, 0, 2389, 2390, 7, 10, 0, 0, 2390, 308, 1, 0, 0, 0, 2391, 2392, 7, 18, 0, 0, 2392, 2393, 7, 5, 0, 0, 2393, 2394, 7, 14, 0, 0, 2394, 2395, 7, 21, 0, 0, 2395, 2396, 7, 28, 0, 0, 2396, 2397, 7, 5, 0, 0, 2397, 2398, 7, 13, 0, 0, 2398, 2399, 7, 12, 0, 0, 2399, 310, 1, 0, 0, 0, 2400, 2401, 7, 18, 0, 0, 2401, 2402, 7, 10, 0, 0, 2402, 2403, 7, 25, 0, 0, 2403, 2404, 7, 19, 0, 0, 2404, 2405, 7, 13, 0, 0, 2405, 2406, 7, 10, 0, 0, 2406, 312, 1, 0, 0, 0, 2407, 2408, 7, 18, 0, 0, 2408, 2409, 7, 10, 0, 0, 2409, 2410, 7, 23, 0, 0, 2410, 2411, 7, 17, 0, 0, 2411, 2412, 7, 7, 0, 0, 2412, 314, 1, 0, 0, 0, 2413, 2414, 7, 18, 0, 0, 2414, 2415, 7, 8, 0, 0, 2415, 316, 1, 0, 0, 0, 2416, 2417, 7, 14, 0, 0, 2417, 2418, 7, 5, 0, 0, 2418, 2419, 7, 14, 0, 0, 2419, 2420, 7, 20, 0, 0, 2420, 2421, 7, 10, 0, 0, 2421, 318, 1, 0, 0, 0, 2422, 2423, 7, 14, 0, 0, 2423, 2424, 7, 5, 0, 0, 2424, 2425, 7, 6, 0, 0, 2425, 2426, 7, 6, 0, 0, 2426, 2427, 7, 10, 0, 0, 2427, 2428, 7, 12, 0, 0, 2428, 320, 1, 0, 0, 0, 2429, 2430, 7, 14, 0, 0, 2430, 2431, 7, 5, 0, 0, 2431, 2432, 7, 9, 0, 0, 2432, 2433, 7, 14, 0, 0, 2433, 2434, 7, 5, 0, 0, 2434, 2435, 7, 12, 0, 0, 2435, 2436, 7, 10, 0, 0, 2436, 322, 1, 0, 0, 0, 2437, 2438, 7, 14, 0, 0, 2438, 2439, 7, 5, 0, 0, 2439, 2440, 7, 9, 0, 0, 2440, 2441, 7, 14, 0, 0, 2441, 2442, 7, 5, 0, 0, 2442, 2443, 7, 12, 0, 0, 2443, 2444, 7, 10, 0, 0, 2444, 2445, 7, 12, 0, 0, 2445, 324, 1, 0, 0, 0, 2446, 2447, 7, 14, 0, 0, 2447, 2448, 7, 5, 0, 0, 2448, 2449, 7, 16, 0, 0, 2449, 2450, 7, 5, 0, 0, 2450, 2451, 7, 6, 0, 0, 2451, 2452, 7, 19, 0, 0, 2452, 2453, 7, 23, 0, 0, 2453, 326, 1, 0, 0, 0, 2454, 2455, 7, 14, 0, 0, 2455, 2456, 7, 20, 0, 0, 2456, 2457, 7, 5, 0, 0, 2457, 2458, 7, 17, 0, 0, 2458, 2459, 7, 7, 0, 0, 2459, 328, 1, 0, 0, 0, 2460, 2461, 7, 14, 0, 0, 2461, 2462, 7, 20, 0, 0, 2462, 2463, 7, 5, 0, 0, 2463, 2464, 7, 13, 0, 0, 2464, 2465, 7, 5, 0, 0, 2465, 2466, 7, 14, 0, 0, 2466, 2467, 7, 16, 0, 0, 2467, 2468, 7, 10, 0, 0, 2468, 2469, 7, 13, 0, 0, 2469, 2470, 7, 17, 0, 0, 2470, 2471, 7, 9, 0, 0, 2471, 2472, 7, 16, 0, 0, 2472, 2473, 7, 17, 0, 0, 2473, 2474, 7, 14, 0, 0, 2474, 2475, 7, 9, 0, 0, 2475, 330, 1, 0, 0, 0, 2476, 2477, 7, 14, 0, 0, 2477, 2478, 7, 20, 0, 0, 2478, 2479, 7, 10, 0, 0, 2479, 2480, 7, 14, 0, 0, 2480, 2481, 7, 21, 0, 0, 2481, 2482, 7, 24, 0, 0, 2482, 2483, 7, 19, 0, 0, 2483, 2484, 7, 17, 0, 0, 2484, 2485, 7, 7, 0, 0, 2485, 2486, 7, 16, 0, 0, 2486, 332, 1, 0, 0, 0, 2487, 2488, 7, 14, 0, 0, 2488, 2489, 7, 6, 0, 0, 2489, 2490, 7, 5, 0, 0, 2490, 2491, 7, 9, 0, 0, 2491, 2492, 7, 9, 0, 0, 2492, 334, 1, 0, 0, 0, 2493, 2494, 7, 14, 0, 0, 2494, 2495, 7, 6, 0, 0, 2495, 2496, 7, 19, 0, 0, 2496, 2497, 7, 9, 0, 0, 2497, 2498, 7, 10, 0, 0, 2498, 336, 1, 0, 0, 0, 2499, 2500, 7, 14, 0, 0, 2500, 2501, 7, 6, 0, 0, 2501, 2502, 7, 22, 0, 0, 2502, 2503, 7, 9, 0, 0, 2503, 2504, 7, 16, 0, 0, 2504, 2505, 7, 10, 0, 0, 2505, 2506, 7, 13, 0, 0, 2506, 338, 1, 0, 0, 0, 2507, 2508, 7, 14, 0, 0, 2508, 2509, 7, 19, 0, 0, 2509, 2510, 7, 15, 0, 0, 2510, 2511, 7, 15, 0, 0, 2511, 2512, 7, 10, 0, 0, 2512, 2513, 7, 7, 0, 0, 2513, 2514, 7, 16, 0, 0, 2514, 340, 1, 0, 0, 0, 2515, 2516, 7, 14, 0, 0, 2516, 2517, 7, 19, 0, 0, 2517, 2518, 7, 15, 0, 0, 2518, 2519, 7, 15, 0, 0, 2519, 2520, 7, 10, 0, 0, 2520, 2521, 7, 7, 0, 0, 2521, 2522, 7, 16, 0, 0, 2522, 2523, 7, 9, 0, 0, 2523, 342, 1, 0, 0, 0, 2524, 2525, 7, 14, 0, 0, 2525, 2526, 7, 19, 0, 0, 2526, 2527, 7, 15, 0, 0, 2527, 2528, 7, 15, 0, 0, 2528, 2529, 7, 17, 0, 0, 2529, 2530, 7, 16, 0, 0, 2530, 344, 1, 0, 0, 0, 2531, 2532, 7, 14, 0, 0, 2532, 2533, 7, 19, 0, 0, 2533, 2534, 7, 15, 0, 0, 2534, 2535, 7, 15, 0, 0, 2535, 2536, 7, 17, 0, 0, 2536, 2537, 7, 16, 0, 0, 2537, 2538, 7, 16, 0, 0, 2538, 2539, 7, 10, 0, 0, 2539, 2540, 7, 12, 0, 0, 2540, 346, 1, 0, 0, 0, 2541, 2542, 7, 14, 0, 0, 2542, 2543, 7, 19, 0, 0, 2543, 2544, 7, 7, 0, 0, 2544, 2545, 7, 25, 0, 0, 2545, 2546, 7, 17, 0, 0, 2546, 2547, 7, 23, 0, 0, 2547, 2548, 7, 22, 0, 0, 2548, 2549, 7, 13, 0, 0, 2549, 2550, 7, 5, 0, 0, 2550, 2551, 7, 16, 0, 0, 2551, 2552, 7, 17, 0, 0, 2552, 2553, 7, 19, 0, 0, 2553, 2554, 7, 7, 0, 0, 2554, 348, 1, 0, 0, 0, 2555, 2556, 7, 14, 0, 0, 2556, 2557, 7, 19, 0, 0, 2557, 2558, 7, 7, 0, 0, 2558, 2559, 7, 7, 0, 0, 2559, 2560, 7, 10, 0, 0, 2560, 2561, 7, 14, 0, 0, 2561, 2562, 7, 16, 0, 0, 2562, 2563, 7, 17, 0, 0, 2563, 2564, 7, 19, 0, 0, 2564, 2565, 7, 7, 0, 0, 2565, 350, 1, 0, 0, 0, 2566, 2567, 7, 14, 0, 0, 2567, 2568, 7, 19, 0, 0, 2568, 2569, 7, 7, 0, 0, 2569, 2570, 7, 9, 0, 0, 2570, 2571, 7, 16, 0, 0, 2571, 2572, 7, 13, 0, 0, 2572, 2573, 7, 5, 0, 0, 2573, 2574, 7, 17, 0, 0, 2574, 2575, 7, 7, 0, 0, 2575, 2576, 7, 16, 0, 0, 2576, 2577, 7, 9, 0, 0, 2577, 352, 1, 0, 0, 0, 2578, 2579, 7, 14, 0, 0, 2579, 2580, 7, 19, 0, 0, 2580, 2581, 7, 7, 0, 0, 2581, 2582, 7, 16, 0, 0, 2582, 2583, 7, 10, 0, 0, 2583, 2584, 7, 7, 0, 0, 2584, 2585, 7, 16, 0, 0, 2585, 354, 1, 0, 0, 0, 2586, 2587, 7, 14, 0, 0, 2587, 2588, 7, 19, 0, 0, 2588, 2589, 7, 7, 0, 0, 2589, 2590, 7, 16, 0, 0, 2590, 2591, 7, 17, 0, 0, 2591, 2592, 7, 7, 0, 0, 2592, 2593, 7, 22, 0, 0, 2593, 2594, 7, 10, 0, 0, 2594, 356, 1, 0, 0, 0, 2595, 2596, 7, 14, 0, 0, 2596, 2597, 7, 19, 0, 0, 2597, 2598, 7, 7, 0, 0, 2598, 2599, 7, 27, 0, 0, 2599, 2600, 7, 10, 0, 0, 2600, 2601, 7, 13, 0, 0, 2601, 2602, 7, 9, 0, 0, 2602, 2603, 7, 17, 0, 0, 2603, 2604, 7, 19, 0, 0, 2604, 2605, 7, 7, 0, 0, 2605, 358, 1, 0, 0, 0, 2606, 2607, 7, 14, 0, 0, 2607, 2608, 7, 19, 0, 0, 2608, 2609, 7, 24, 0, 0, 2609, 2610, 7, 8, 0, 0, 2610, 360, 1, 0, 0, 0, 2611, 2612, 7, 14, 0, 0, 2612, 2613, 7, 19, 0, 0, 2613, 2614, 7, 9, 0, 0, 2614, 2615, 7, 16, 0, 0, 2615, 362, 1, 0, 0, 0, 2616, 2617, 7, 14, 0, 0, 2617, 2618, 7, 9, 0, 0, 2618, 2619, 7, 27, 0, 0, 2619, 364, 1, 0, 0, 0, 2620, 2621, 7, 14, 0, 0, 2621, 2622, 7, 22, 0, 0, 2622, 2623, 7, 13, 0, 0, 2623, 2624, 7, 9, 0, 0, 2624, 2625, 7, 19, 0, 0, 2625, 2626, 7, 13, 0, 0, 2626, 366, 1, 0, 0, 0, 2627, 2628, 7, 14, 0, 0, 2628, 2629, 7, 8, 0, 0, 2629, 2630, 7, 14, 0, 0, 2630, 2631, 7, 6, 0, 0, 2631, 2632, 7, 10, 0, 0, 2632, 368, 1, 0, 0, 0, 2633, 2634, 7, 12, 0, 0, 2634, 2635, 7, 5, 0, 0, 2635, 2636, 7, 16, 0, 0, 2636, 2637, 7, 5, 0, 0, 2637, 370, 1, 0, 0, 0, 2638, 2639, 7, 12, 0, 0, 2639, 2640, 7, 5, 0, 0, 2640, 2641, 7, 16, 0, 0, 2641, 2642, 7, 5, 0, 0, 2642, 2643, 7, 18, 0, 0, 2643, 2644, 7, 5, 0, 0, 2644, 2645, 7, 9, 0, 0, 2645, 2646, 7, 10, 0, 0, 2646, 372, 1, 0, 0, 0, 2647, 2648, 7, 12, 0, 0, 2648, 2649, 7, 5, 0, 0, 2649, 2650, 7, 8, 0, 0, 2650, 374, 1, 0, 0, 0, 2651, 2652, 7, 12, 0, 0, 2652, 2653, 7, 10, 0, 0, 2653, 2654, 7, 5, 0, 0, 2654, 2655, 7, 6, 0, 0, 2655, 2656, 7, 6, 0, 0, 2656, 2657, 7, 19, 0, 0, 2657, 2658, 7, 14, 0, 0, 2658, 2659, 7, 5, 0, 0, 2659, 2660, 7, 16, 0, 0, 2660, 2661, 7, 10, 0, 0, 2661, 376, 1, 0, 0, 0, 2662, 2663, 7, 12, 0, 0, 2663, 2664, 7, 10, 0, 0, 2664, 2665, 7, 14, 0, 0, 2665, 2666, 7, 6, 0, 0, 2666, 2667, 7, 5, 0, 0, 2667, 2668, 7, 13, 0, 0, 2668, 2669, 7, 10, 0, 0, 2669, 378, 1, 0, 0, 0, 2670, 2671, 7, 12, 0, 0, 2671, 2672, 7, 10, 0, 0, 2672, 2673, 7, 25, 0, 0, 2673, 2674, 7, 5, 0, 0, 2674, 2675, 7, 22, 0, 0, 2675, 2676, 7, 6, 0, 0, 2676, 2677, 7, 16, 0, 0, 2677, 2678, 7, 9, 0, 0, 2678, 380, 1, 0, 0, 0, 2679, 2680, 7, 12, 0, 0, 2680, 2681, 7, 10, 0, 0, 2681, 2682, 7, 25, 0, 0, 2682, 2683, 7, 10, 0, 0, 2683, 2684, 7, 13, 0, 0, 2684, 2685, 7, 13, 0, 0, 2685, 2686, 7, 10, 0, 0, 2686, 2687, 7, 12, 0, 0, 2687, 382, 1, 0, 0, 0, 2688, 2689, 7, 12, 0, 0, 2689, 2690, 7, 10, 0, 0, 2690, 2691, 7, 25, 0, 0, 2691, 2692, 7, 17, 0, 0, 2692, 2693, 7, 7, 0, 0, 2693, 2694, 7, 10, 0, 0, 2694, 2695, 7, 13, 0, 0, 2695, 384, 1, 0, 0, 0, 2696, 2697, 7, 12, 0, 0, 2697, 2698, 7, 10, 0, 0, 2698, 2699, 7, 6, 0, 0, 2699, 2700, 7, 10, 0, 0, 2700, 2701, 7, 16, 0, 0, 2701, 2702, 7, 10, 0, 0, 2702, 386, 1, 0, 0, 0, 2703, 2704, 7, 12, 0, 0, 2704, 2705, 7, 10, 0, 0, 2705, 2706, 7, 6, 0, 0, 2706, 2707, 7, 17, 0, 0, 2707, 2708, 7, 15, 0, 0, 2708, 2709, 7, 17, 0, 0, 2709, 2710, 7, 16, 0, 0, 2710, 2711, 7, 10, 0, 0, 2711, 2712, 7, 13, 0, 0, 2712, 388, 1, 0, 0, 0, 2713, 2714, 7, 12, 0, 0, 2714, 2715, 7, 10, 0, 0, 2715, 2716, 7, 6, 0, 0, 2716, 2717, 7, 17, 0, 0, 2717, 2718, 7, 15, 0, 0, 2718, 2719, 7, 17, 0, 0, 2719, 2720, 7, 16, 0, 0, 2720, 2721, 7, 10, 0, 0, 2721, 2722, 7, 13, 0, 0, 2722, 2723, 7, 9, 0, 0, 2723, 390, 1, 0, 0, 0, 2724, 2725, 7, 12, 0, 0, 2725, 2726, 7, 17, 0, 0, 2726, 2727, 7, 14, 0, 0, 2727, 2728, 7, 16, 0, 0, 2728, 2729, 7, 17, 0, 0, 2729, 2730, 7, 19, 0, 0, 2730, 2731, 7, 7, 0, 0, 2731, 2732, 7, 5, 0, 0, 2732, 2733, 7, 13, 0, 0, 2733, 2734, 7, 8, 0, 0, 2734, 392, 1, 0, 0, 0, 2735, 2736, 7, 12, 0, 0, 2736, 2737, 7, 17, 0, 0, 2737, 2738, 7, 9, 0, 0, 2738, 2739, 7, 5, 0, 0, 2739, 2740, 7, 18, 0, 0, 2740, 2741, 7, 6, 0, 0, 2741, 2742, 7, 10, 0, 0, 2742, 394, 1, 0, 0, 0, 2743, 2744, 7, 12, 0, 0, 2744, 2745, 7, 17, 0, 0, 2745, 2746, 7, 9, 0, 0, 2746, 2747, 7, 14, 0, 0, 2747, 2748, 7, 5, 0, 0, 2748, 2749, 7, 13, 0, 0, 2749, 2750, 7, 12, 0, 0, 2750, 396, 1, 0, 0, 0, 2751, 2752, 7, 12, 0, 0, 2752, 2753, 7, 19, 0, 0, 2753, 2754, 7, 14, 0, 0, 2754, 2755, 7, 22, 0, 0, 2755, 2756, 7, 15, 0, 0, 2756, 2757, 7, 10, 0, 0, 2757, 2758, 7, 7, 0, 0, 2758, 2759, 7, 16, 0, 0, 2759, 398, 1, 0, 0, 0, 2760, 2761, 7, 12, 0, 0, 2761, 2762, 7, 19, 0, 0, 2762, 2763, 7, 15, 0, 0, 2763, 2764, 7, 5, 0, 0, 2764, 2765, 7, 17, 0, 0, 2765, 2766, 7, 7, 0, 0, 2766, 400, 1, 0, 0, 0, 2767, 2768, 7, 12, 0, 0, 2768, 2769, 7, 19, 0, 0, 2769, 2770, 7, 22, 0, 0, 2770, 2771, 7, 18, 0, 0, 2771, 2772, 7, 6, 0, 0, 2772, 2773, 7, 10, 0, 0, 2773, 402, 1, 0, 0, 0, 2774, 2775, 7, 12, 0, 0, 2775, 2776, 7, 13, 0, 0, 2776, 2777, 7, 19, 0, 0, 2777, 2778, 7, 24, 0, 0, 2778, 404, 1, 0, 0, 0, 2779, 2780, 7, 10, 0, 0, 2780, 2781, 7, 5, 0, 0, 2781, 2782, 7, 14, 0, 0, 2782, 2783, 7, 20, 0, 0, 2783, 406, 1, 0, 0, 0, 2784, 2785, 7, 10, 0, 0, 2785, 2786, 7, 7, 0, 0, 2786, 2787, 7, 5, 0, 0, 2787, 2788, 7, 18, 0, 0, 2788, 2789, 7, 6, 0, 0, 2789, 2790, 7, 10, 0, 0, 2790, 408, 1, 0, 0, 0, 2791, 2792, 7, 10, 0, 0, 2792, 2793, 7, 7, 0, 0, 2793, 2794, 7, 14, 0, 0, 2794, 2795, 7, 19, 0, 0, 2795, 2796, 7, 12, 0, 0, 2796, 2797, 7, 17, 0, 0, 2797, 2798, 7, 7, 0, 0, 2798, 2799, 7, 23, 0, 0, 2799, 410, 1, 0, 0, 0, 2800, 2801, 7, 10, 0, 0, 2801, 2802, 7, 7, 0, 0, 2802, 2803, 7, 14, 0, 0, 2803, 2804, 7, 13, 0, 0, 2804, 2805, 7, 8, 0, 0, 2805, 2806, 7, 24, 0, 0, 2806, 2807, 7, 16, 0, 0, 2807, 2808, 7, 10, 0, 0, 2808, 2809, 7, 12, 0, 0, 2809, 412, 1, 0, 0, 0, 2810, 2811, 7, 10, 0, 0, 2811, 2812, 7, 7, 0, 0, 2812, 2813, 7, 22, 0, 0, 2813, 2814, 7, 15, 0, 0, 2814, 414, 1, 0, 0, 0, 2815, 2816, 7, 10, 0, 0, 2816, 2817, 7, 9, 0, 0, 2817, 2818, 7, 14, 0, 0, 2818, 2819, 7, 5, 0, 0, 2819, 2820, 7, 24, 0, 0, 2820, 2821, 7, 10, 0, 0, 2821, 416, 1, 0, 0, 0, 2822, 2823, 7, 10, 0, 0, 2823, 2824, 7, 27, 0, 0, 2824, 2825, 7, 10, 0, 0, 2825, 2826, 7, 7, 0, 0, 2826, 2827, 7, 16, 0, 0, 2827, 418, 1, 0, 0, 0, 2828, 2829, 7, 10, 0, 0, 2829, 2830, 7, 26, 0, 0, 2830, 2831, 7, 14, 0, 0, 2831, 2832, 7, 6, 0, 0, 2832, 2833, 7, 22, 0, 0, 2833, 2834, 7, 12, 0, 0, 2834, 2835, 7, 10, 0, 0, 2835, 420, 1, 0, 0, 0, 2836, 2837, 7, 10, 0, 0, 2837, 2838, 7, 26, 0, 0, 2838, 2839, 7, 14, 0, 0, 2839, 2840, 7, 6, 0, 0, 2840, 2841, 7, 22, 0, 0, 2841, 2842, 7, 12, 0, 0, 2842, 2843, 7, 17, 0, 0, 2843, 2844, 7, 7, 0, 0, 2844, 2845, 7, 23, 0, 0, 2845, 422, 1, 0, 0, 0, 2846, 2847, 7, 10, 0, 0, 2847, 2848, 7, 26, 0, 0, 2848, 2849, 7, 14, 0, 0, 2849, 2850, 7, 6, 0, 0, 2850, 2851, 7, 22, 0, 0, 2851, 2852, 7, 9, 0, 0, 2852, 2853, 7, 17, 0, 0, 2853, 2854, 7, 27, 0, 0, 2854, 2855, 7, 10, 0, 0, 2855, 424, 1, 0, 0, 0, 2856, 2857, 7, 10, 0, 0, 2857, 2858, 7, 26, 0, 0, 2858, 2859, 7, 10, 0, 0, 2859, 2860, 7, 14, 0, 0, 2860, 2861, 7, 22, 0, 0, 2861, 2862, 7, 16, 0, 0, 2862, 2863, 7, 10, 0, 0, 2863, 426, 1, 0, 0, 0, 2864, 2865, 7, 10, 0, 0, 2865, 2866, 7, 26, 0, 0, 2866, 2867, 7, 24, 0, 0, 2867, 2868, 7, 6, 0, 0, 2868, 2869, 7, 5, 0, 0, 2869, 2870, 7, 17, 0, 0, 2870, 2871, 7, 7, 0, 0, 2871, 428, 1, 0, 0, 0, 2872, 2873, 7, 10, 0, 0, 2873, 2874, 7, 26, 0, 0, 2874, 2875, 7, 16, 0, 0, 2875, 2876, 7, 10, 0, 0, 2876, 2877, 7, 7, 0, 0, 2877, 2878, 7, 9, 0, 0, 2878, 2879, 7, 17, 0, 0, 2879, 2880, 7, 19, 0, 0, 2880, 2881, 7, 7, 0, 0, 2881, 430, 1, 0, 0, 0, 2882, 2883, 7, 10, 0, 0, 2883, 2884, 7, 26, 0, 0, 2884, 2885, 7, 16, 0, 0, 2885, 2886, 7, 10, 0, 0, 2886, 2887, 7, 13, 0, 0, 2887, 2888, 7, 7, 0, 0, 2888, 2889, 7, 5, 0, 0, 2889, 2890, 7, 6, 0, 0, 2890, 432, 1, 0, 0, 0, 2891, 2892, 7, 25, 0, 0, 2892, 2893, 7, 5, 0, 0, 2893, 2894, 7, 15, 0, 0, 2894, 2895, 7, 17, 0, 0, 2895, 2896, 7, 6, 0, 0, 2896, 2897, 7, 8, 0, 0, 2897, 434, 1, 0, 0, 0, 2898, 2899, 7, 25, 0, 0, 2899, 2900, 7, 17, 0, 0, 2900, 2901, 7, 13, 0, 0, 2901, 2902, 7, 9, 0, 0, 2902, 2903, 7, 16, 0, 0, 2903, 436, 1, 0, 0, 0, 2904, 2905, 7, 25, 0, 0, 2905, 2906, 7, 19, 0, 0, 2906, 2907, 7, 6, 0, 0, 2907, 2908, 7, 6, 0, 0, 2908, 2909, 7, 19, 0, 0, 2909, 2910, 7, 28, 0, 0, 2910, 2911, 7, 17, 0, 0, 2911, 2912, 7, 7, 0, 0, 2912, 2913, 7, 23, 0, 0, 2913, 438, 1, 0, 0, 0, 2914, 2915, 7, 25, 0, 0, 2915, 2916, 7, 19, 0, 0, 2916, 2917, 7, 13, 0, 0, 2917, 2918, 7, 14, 0, 0, 2918, 2919, 7, 10, 0, 0, 2919, 440, 1, 0, 0, 0, 2920, 2921, 7, 25, 0, 0, 2921, 2922, 7, 19, 0, 0, 2922, 2923, 7, 13, 0, 0, 2923, 2924, 7, 28, 0, 0, 2924, 2925, 7, 5, 0, 0, 2925, 2926, 7, 13, 0, 0, 2926, 2927, 7, 12, 0, 0, 2927, 442, 1, 0, 0, 0, 2928, 2929, 7, 25, 0, 0, 2929, 2930, 7, 22, 0, 0, 2930, 2931, 7, 7, 0, 0, 2931, 2932, 7, 14, 0, 0, 2932, 2933, 7, 16, 0, 0, 2933, 2934, 7, 17, 0, 0, 2934, 2935, 7, 19, 0, 0, 2935, 2936, 7, 7, 0, 0, 2936, 444, 1, 0, 0, 0, 2937, 2938, 7, 25, 0, 0, 2938, 2939, 7, 22, 0, 0, 2939, 2940, 7, 7, 0, 0, 2940, 2941, 7, 14, 0, 0, 2941, 2942, 7, 16, 0, 0, 2942, 2943, 7, 17, 0, 0, 2943, 2944, 7, 19, 0, 0, 2944, 2945, 7, 7, 0, 0, 2945, 2946, 7, 9, 0, 0, 2946, 446, 1, 0, 0, 0, 2947, 2948, 7, 23, 0, 0, 2948, 2949, 7, 6, 0, 0, 2949, 2950, 7, 19, 0, 0, 2950, 2951, 7, 18, 0, 0, 2951, 2952, 7, 5, 0, 0, 2952, 2953, 7, 6, 0, 0, 2953, 448, 1, 0, 0, 0, 2954, 2955, 7, 23, 0, 0, 2955, 2956, 7, 13, 0, 0, 2956, 2957, 7, 5, 0, 0, 2957, 2958, 7, 7, 0, 0, 2958, 2959, 7, 16, 0, 0, 2959, 2960, 7, 10, 0, 0, 2960, 2961, 7, 12, 0, 0, 2961, 450, 1, 0, 0, 0, 2962, 2963, 7, 20, 0, 0, 2963, 2964, 7, 5, 0, 0, 2964, 2965, 7, 7, 0, 0, 2965, 2966, 7, 12, 0, 0, 2966, 2967, 7, 6, 0, 0, 2967, 2968, 7, 10, 0, 0, 2968, 2969, 7, 13, 0, 0, 2969, 452, 1, 0, 0, 0, 2970, 2971, 7, 20, 0, 0, 2971, 2972, 7, 10, 0, 0, 2972, 2973, 7, 5, 0, 0, 2973, 2974, 7, 12, 0, 0, 2974, 2975, 7, 10, 0, 0, 2975, 2976, 7, 13, 0, 0, 2976, 454, 1, 0, 0, 0, 2977, 2978, 7, 20, 0, 0, 2978, 2979, 7, 19, 0, 0, 2979, 2980, 7, 6, 0, 0, 2980, 2981, 7, 12, 0, 0, 2981, 456, 1, 0, 0, 0, 2982, 2983, 7, 20, 0, 0, 2983, 2984, 7, 19, 0, 0, 2984, 2985, 7, 22, 0, 0, 2985, 2986, 7, 13, 0, 0, 2986, 458, 1, 0, 0, 0, 2987, 2988, 7, 17, 0, 0, 2988, 2989, 7, 12, 0, 0, 2989, 2990, 7, 10, 0, 0, 2990, 2991, 7, 7, 0, 0, 2991, 2992, 7, 16, 0, 0, 2992, 2993, 7, 17, 0, 0, 2993, 2994, 7, 16, 0, 0, 2994, 2995, 7, 8, 0, 0, 2995, 460, 1, 0, 0, 0, 2996, 2997, 7, 17, 0, 0, 2997, 2998, 7, 25, 0, 0, 2998, 462, 1, 0, 0, 0, 2999, 3000, 7, 17, 0, 0, 3000, 3001, 7, 15, 0, 0, 3001, 3002, 7, 15, 0, 0, 3002, 3003, 7, 10, 0, 0, 3003, 3004, 7, 12, 0, 0, 3004, 3005, 7, 17, 0, 0, 3005, 3006, 7, 5, 0, 0, 3006, 3007, 7, 16, 0, 0, 3007, 3008, 7, 10, 0, 0, 3008, 464, 1, 0, 0, 0, 3009, 3010, 7, 17, 0, 0, 3010, 3011, 7, 15, 0, 0, 3011, 3012, 7, 15, 0, 0, 3012, 3013, 7, 22, 0, 0, 3013, 3014, 7, 16, 0, 0, 3014, 3015, 7, 5, 0, 0, 3015, 3016, 7, 18, 0, 0, 3016, 3017, 7, 6, 0, 0, 3017, 3018, 7, 10, 0, 0, 3018, 466, 1, 0, 0, 0, 3019, 3020, 7, 17, 0, 0, 3020, 3021, 7, 15, 0, 0, 3021, 3022, 7, 24, 0, 0, 3022, 3023, 7, 6, 0, 0, 3023, 3024, 7, 17, 0, 0, 3024, 3025, 7, 14, 0, 0, 3025, 3026, 7, 17, 0, 0, 3026, 3027, 7, 16, 0, 0, 3027, 468, 1, 0, 0, 0, 3028, 3029, 7, 17, 0, 0, 3029, 3030, 7, 7, 0, 0, 3030, 3031, 7, 14, 0, 0, 3031, 3032, 7, 6, 0, 0, 3032, 3033, 7, 22, 0, 0, 3033, 3034, 7, 12, 0, 0, 3034, 3035, 7, 17, 0, 0, 3035, 3036, 7, 7, 0, 0, 3036, 3037, 7, 23, 0, 0, 3037, 470, 1, 0, 0, 0, 3038, 3039, 7, 17, 0, 0, 3039, 3040, 7, 7, 0, 0, 3040, 3041, 7, 14, 0, 0, 3041, 3042, 7, 13, 0, 0, 3042, 3043, 7, 10, 0, 0, 3043, 3044, 7, 15, 0, 0, 3044, 3045, 7, 10, 0, 0, 3045, 3046, 7, 7, 0, 0, 3046, 3047, 7, 16, 0, 0, 3047, 472, 1, 0, 0, 0, 3048, 3049, 7, 17, 0, 0, 3049, 3050, 7, 7, 0, 0, 3050, 3051, 7, 12, 0, 0, 3051, 3052, 7, 10, 0, 0, 3052, 3053, 7, 26, 0, 0, 3053, 474, 1, 0, 0, 0, 3054, 3055, 7, 17, 0, 0, 3055, 3056, 7, 7, 0, 0, 3056, 3057, 7, 12, 0, 0, 3057, 3058, 7, 10, 0, 0, 3058, 3059, 7, 26, 0, 0, 3059, 3060, 7, 10, 0, 0, 3060, 3061, 7, 9, 0, 0, 3061, 476, 1, 0, 0, 0, 3062, 3063, 7, 17, 0, 0, 3063, 3064, 7, 7, 0, 0, 3064, 3065, 7, 20, 0, 0, 3065, 3066, 7, 10, 0, 0, 3066, 3067, 7, 13, 0, 0, 3067, 3068, 7, 17, 0, 0, 3068, 3069, 7, 16, 0, 0, 3069, 478, 1, 0, 0, 0, 3070, 3071, 7, 17, 0, 0, 3071, 3072, 7, 7, 0, 0, 3072, 3073, 7, 20, 0, 0, 3073, 3074, 7, 10, 0, 0, 3074, 3075, 7, 13, 0, 0, 3075, 3076, 7, 17, 0, 0, 3076, 3077, 7, 16, 0, 0, 3077, 3078, 7, 9, 0, 0, 3078, 480, 1, 0, 0, 0, 3079, 3080, 7, 17, 0, 0, 3080, 3081, 7, 7, 0, 0, 3081, 3082, 7, 6, 0, 0, 3082, 3083, 7, 17, 0, 0, 3083, 3084, 7, 7, 0, 0, 3084, 3085, 7, 10, 0, 0, 3085, 482, 1, 0, 0, 0, 3086, 3087, 7, 17, 0, 0, 3087, 3088, 7, 7, 0, 0, 3088, 3089, 7, 9, 0, 0, 3089, 3090, 7, 10, 0, 0, 3090, 3091, 7, 7, 0, 0, 3091, 3092, 7, 9, 0, 0, 3092, 3093, 7, 17, 0, 0, 3093, 3094, 7, 16, 0, 0, 3094, 3095, 7, 17, 0, 0, 3095, 3096, 7, 27, 0, 0, 3096, 3097, 7, 10, 0, 0, 3097, 484, 1, 0, 0, 0, 3098, 3099, 7, 17, 0, 0, 3099, 3100, 7, 7, 0, 0, 3100, 3101, 7, 9, 0, 0, 3101, 3102, 7, 10, 0, 0, 3102, 3103, 7, 13, 0, 0, 3103, 3104, 7, 16, 0, 0, 3104, 486, 1, 0, 0, 0, 3105, 3106, 7, 17, 0, 0, 3106, 3107, 7, 7, 0, 0, 3107, 3108, 7, 9, 0, 0, 3108, 3109, 7, 16, 0, 0, 3109, 3110, 7, 10, 0, 0, 3110, 3111, 7, 5, 0, 0, 3111, 3112, 7, 12, 0, 0, 3112, 488, 1, 0, 0, 0, 3113, 3114, 7, 17, 0, 0, 3114, 3115, 7, 7, 0, 0, 3115, 3116, 7, 27, 0, 0, 3116, 3117, 7, 19, 0, 0, 3117, 3118, 7, 21, 0, 0, 3118, 3119, 7, 10, 0, 0, 3119, 3120, 7, 13, 0, 0, 3120, 490, 1, 0, 0, 0, 3121, 3122, 7, 17, 0, 0, 3122, 3123, 7, 9, 0, 0, 3123, 3124, 7, 19, 0, 0, 3124, 3125, 7, 6, 0, 0, 3125, 3126, 7, 5, 0, 0, 3126, 3127, 7, 16, 0, 0, 3127, 3128, 7, 17, 0, 0, 3128, 3129, 7, 19, 0, 0, 3129, 3130, 7, 7, 0, 0, 3130, 492, 1, 0, 0, 0, 3131, 3132, 7, 21, 0, 0, 3132, 3133, 7, 10, 0, 0, 3133, 3134, 7, 8, 0, 0, 3134, 494, 1, 0, 0, 0, 3135, 3136, 7, 6, 0, 0, 3136, 3137, 7, 5, 0, 0, 3137, 3138, 7, 18, 0, 0, 3138, 3139, 7, 10, 0, 0, 3139, 3140, 7, 6, 0, 0, 3140, 496, 1, 0, 0, 0, 3141, 3142, 7, 6, 0, 0, 3142, 3143, 7, 5, 0, 0, 3143, 3144, 7, 7, 0, 0, 3144, 3145, 7, 23, 0, 0, 3145, 3146, 7, 22, 0, 0, 3146, 3147, 7, 5, 0, 0, 3147, 3148, 7, 23, 0, 0, 3148, 3149, 7, 10, 0, 0, 3149, 498, 1, 0, 0, 0, 3150, 3151, 7, 6, 0, 0, 3151, 3152, 7, 5, 0, 0, 3152, 3153, 7, 13, 0, 0, 3153, 3154, 7, 23, 0, 0, 3154, 3155, 7, 10, 0, 0, 3155, 500, 1, 0, 0, 0, 3156, 3157, 7, 6, 0, 0, 3157, 3158, 7, 5, 0, 0, 3158, 3159, 7, 9, 0, 0, 3159, 3160, 7, 16, 0, 0, 3160, 502, 1, 0, 0, 0, 3161, 3162, 7, 6, 0, 0, 3162, 3163, 7, 10, 0, 0, 3163, 3164, 7, 5, 0, 0, 3164, 3165, 7, 21, 0, 0, 3165, 3166, 7, 24, 0, 0, 3166, 3167, 7, 13, 0, 0, 3167, 3168, 7, 19, 0, 0, 3168, 3169, 7, 19, 0, 0, 3169, 3170, 7, 25, 0, 0, 3170, 504, 1, 0, 0, 0, 3171, 3172, 7, 6, 0, 0, 3172, 3173, 7, 10, 0, 0, 3173, 3174, 7, 27, 0, 0, 3174, 3175, 7, 10, 0, 0, 3175, 3176, 7, 6, 0, 0, 3176, 506, 1, 0, 0, 0, 3177, 3178, 7, 6, 0, 0, 3178, 3179, 7, 17, 0, 0, 3179, 3180, 7, 9, 0, 0, 3180, 3181, 7, 16, 0, 0, 3181, 3182, 7, 10, 0, 0, 3182, 3183, 7, 7, 0, 0, 3183, 508, 1, 0, 0, 0, 3184, 3185, 7, 6, 0, 0, 3185, 3186, 7, 19, 0, 0, 3186, 3187, 7, 5, 0, 0, 3187, 3188, 7, 12, 0, 0, 3188, 510, 1, 0, 0, 0, 3189, 3190, 7, 6, 0, 0, 3190, 3191, 7, 19, 0, 0, 3191, 3192, 7, 14, 0, 0, 3192, 3193, 7, 5, 0, 0, 3193, 3194, 7, 6, 0, 0, 3194, 512, 1, 0, 0, 0, 3195, 3196, 7, 6, 0, 0, 3196, 3197, 7, 19, 0, 0, 3197, 3198, 7, 14, 0, 0, 3198, 3199, 7, 5, 0, 0, 3199, 3200, 7, 16, 0, 0, 3200, 3201, 7, 17, 0, 0, 3201, 3202, 7, 19, 0, 0, 3202, 3203, 7, 7, 0, 0, 3203, 514, 1, 0, 0, 0, 3204, 3205, 7, 6, 0, 0, 3205, 3206, 7, 19, 0, 0, 3206, 3207, 7, 14, 0, 0, 3207, 3208, 7, 21, 0, 0, 3208, 516, 1, 0, 0, 0, 3209, 3210, 7, 15, 0, 0, 3210, 3211, 7, 5, 0, 0, 3211, 3212, 7, 24, 0, 0, 3212, 3213, 7, 24, 0, 0, 3213, 3214, 7, 17, 0, 0, 3214, 3215, 7, 7, 0, 0, 3215, 3216, 7, 23, 0, 0, 3216, 518, 1, 0, 0, 0, 3217, 3218, 7, 15, 0, 0, 3218, 3219, 7, 5, 0, 0, 3219, 3220, 7, 16, 0, 0, 3220, 3221, 7, 14, 0, 0, 3221, 3222, 7, 20, 0, 0, 3222, 520, 1, 0, 0, 0, 3223, 3224, 7, 15, 0, 0, 3224, 3225, 7, 5, 0, 0, 3225, 3226, 7, 16, 0, 0, 3226, 3227, 7, 14, 0, 0, 3227, 3228, 7, 20, 0, 0, 3228, 3229, 7, 10, 0, 0, 3229, 3230, 7, 12, 0, 0, 3230, 522, 1, 0, 0, 0, 3231, 3232, 7, 15, 0, 0, 3232, 3233, 7, 5, 0, 0, 3233, 3234, 7, 16, 0, 0, 3234, 3235, 7, 10, 0, 0, 3235, 3236, 7, 13, 0, 0, 3236, 3237, 7, 17, 0, 0, 3237, 3238, 7, 5, 0, 0, 3238, 3239, 7, 6, 0, 0, 3239, 3240, 7, 17, 0, 0, 3240, 3241, 7, 11, 0, 0, 3241, 3242, 7, 10, 0, 0, 3242, 3243, 7, 12, 0, 0, 3243, 524, 1, 0, 0, 0, 3244, 3245, 7, 15, 0, 0, 3245, 3246, 7, 5, 0, 0, 3246, 3247, 7, 26, 0, 0, 3247, 3248, 7, 27, 0, 0, 3248, 3249, 7, 5, 0, 0, 3249, 3250, 7, 6, 0, 0, 3250, 3251, 7, 22, 0, 0, 3251, 3252, 7, 10, 0, 0, 3252, 526, 1, 0, 0, 0, 3253, 3254, 7, 15, 0, 0, 3254, 3255, 7, 10, 0, 0, 3255, 3256, 7, 13, 0, 0, 3256, 3257, 7, 23, 0, 0, 3257, 3258, 7, 10, 0, 0, 3258, 528, 1, 0, 0, 0, 3259, 3260, 7, 15, 0, 0, 3260, 3261, 7, 17, 0, 0, 3261, 3262, 7, 7, 0, 0, 3262, 3263, 7, 22, 0, 0, 3263, 3264, 7, 16, 0, 0, 3264, 3265, 7, 10, 0, 0, 3265, 530, 1, 0, 0, 0, 3266, 3267, 7, 15, 0, 0, 3267, 3268, 7, 17, 0, 0, 3268, 3269, 7, 7, 0, 0, 3269, 3270, 7, 27, 0, 0, 3270, 3271, 7, 5, 0, 0, 3271, 3272, 7, 6, 0, 0, 3272, 3273, 7, 22, 0, 0, 3273, 3274, 7, 10, 0, 0, 3274, 532, 1, 0, 0, 0, 3275, 3276, 7, 15, 0, 0, 3276, 3277, 7, 19, 0, 0, 3277, 3278, 7, 12, 0, 0, 3278, 3279, 7, 10, 0, 0, 3279, 534, 1, 0, 0, 0, 3280, 3281, 7, 15, 0, 0, 3281, 3282, 7, 19, 0, 0, 3282, 3283, 7, 7, 0, 0, 3283, 3284, 7, 16, 0, 0, 3284, 3285, 7, 20, 0, 0, 3285, 536, 1, 0, 0, 0, 3286, 3287, 7, 15, 0, 0, 3287, 3288, 7, 19, 0, 0, 3288, 3289, 7, 27, 0, 0, 3289, 3290, 7, 10, 0, 0, 3290, 538, 1, 0, 0, 0, 3291, 3292, 7, 7, 0, 0, 3292, 3293, 7, 5, 0, 0, 3293, 3294, 7, 15, 0, 0, 3294, 3295, 7, 10, 0, 0, 3295, 540, 1, 0, 0, 0, 3296, 3297, 7, 7, 0, 0, 3297, 3298, 7, 5, 0, 0, 3298, 3299, 7, 15, 0, 0, 3299, 3300, 7, 10, 0, 0, 3300, 3301, 7, 9, 0, 0, 3301, 542, 1, 0, 0, 0, 3302, 3303, 7, 7, 0, 0, 3303, 3304, 7, 10, 0, 0, 3304, 3305, 7, 26, 0, 0, 3305, 3306, 7, 16, 0, 0, 3306, 544, 1, 0, 0, 0, 3307, 3308, 7, 7, 0, 0, 3308, 3309, 7, 19, 0, 0, 3309, 546, 1, 0, 0, 0, 3310, 3311, 7, 7, 0, 0, 3311, 3312, 7, 19, 0, 0, 3312, 3313, 7, 16, 0, 0, 3313, 3314, 7, 20, 0, 0, 3314, 3315, 7, 17, 0, 0, 3315, 3316, 7, 7, 0, 0, 3316, 3317, 7, 23, 0, 0, 3317, 548, 1, 0, 0, 0, 3318, 3319, 7, 7, 0, 0, 3319, 3320, 7, 19, 0, 0, 3320, 3321, 7, 16, 0, 0, 3321, 3322, 7, 17, 0, 0, 3322, 3323, 7, 25, 0, 0, 3323, 3324, 7, 8, 0, 0, 3324, 550, 1, 0, 0, 0, 3325, 3326, 7, 7, 0, 0, 3326, 3327, 7, 19, 0, 0, 3327, 3328, 7, 28, 0, 0, 3328, 3329, 7, 5, 0, 0, 3329, 3330, 7, 17, 0, 0, 3330, 3331, 7, 16, 0, 0, 3331, 552, 1, 0, 0, 0, 3332, 3333, 7, 7, 0, 0, 3333, 3334, 7, 22, 0, 0, 3334, 3335, 7, 6, 0, 0, 3335, 3336, 7, 6, 0, 0, 3336, 3337, 7, 9, 0, 0, 3337, 554, 1, 0, 0, 0, 3338, 3339, 7, 19, 0, 0, 3339, 3340, 7, 18, 0, 0, 3340, 3341, 7, 30, 0, 0, 3341, 3342, 7, 10, 0, 0, 3342, 3343, 7, 14, 0, 0, 3343, 3344, 7, 16, 0, 0, 3344, 556, 1, 0, 0, 0, 3345, 3346, 7, 19, 0, 0, 3346, 3347, 7, 25, 0, 0, 3347, 558, 1, 0, 0, 0, 3348, 3349, 7, 19, 0, 0, 3349, 3350, 7, 25, 0, 0, 3350, 3351, 7, 25, 0, 0, 3351, 560, 1, 0, 0, 0, 3352, 3353, 7, 19, 0, 0, 3353, 3354, 7, 17, 0, 0, 3354, 3355, 7, 12, 0, 0, 3355, 3356, 7, 9, 0, 0, 3356, 562, 1, 0, 0, 0, 3357, 3358, 7, 19, 0, 0, 3358, 3359, 7, 24, 0, 0, 3359, 3360, 7, 10, 0, 0, 3360, 3361, 7, 13, 0, 0, 3361, 3362, 7, 5, 0, 0, 3362, 3363, 7, 16, 0, 0, 3363, 3364, 7, 19, 0, 0, 3364, 3365, 7, 13, 0, 0, 3365, 564, 1, 0, 0, 0, 3366, 3367, 7, 19, 0, 0, 3367, 3368, 7, 24, 0, 0, 3368, 3369, 7, 16, 0, 0, 3369, 3370, 7, 17, 0, 0, 3370, 3371, 7, 19, 0, 0, 3371, 3372, 7, 7, 0, 0, 3372, 566, 1, 0, 0, 0, 3373, 3374, 7, 19, 0, 0, 3374, 3375, 7, 24, 0, 0, 3375, 3376, 7, 16, 0, 0, 3376, 3377, 7, 17, 0, 0, 3377, 3378, 7, 19, 0, 0, 3378, 3379, 7, 7, 0, 0, 3379, 3380, 7, 9, 0, 0, 3380, 568, 1, 0, 0, 0, 3381, 3382, 7, 19, 0, 0, 3382, 3383, 7, 28, 0, 0, 3383, 3384, 7, 7, 0, 0, 3384, 3385, 7, 10, 0, 0, 3385, 3386, 7, 12, 0, 0, 3386, 570, 1, 0, 0, 0, 3387, 3388, 7, 19, 0, 0, 3388, 3389, 7, 28, 0, 0, 3389, 3390, 7, 7, 0, 0, 3390, 3391, 7, 10, 0, 0, 3391, 3392, 7, 13, 0, 0, 3392, 572, 1, 0, 0, 0, 3393, 3394, 7, 24, 0, 0, 3394, 3395, 7, 5, 0, 0, 3395, 3396, 7, 13, 0, 0, 3396, 3397, 7, 9, 0, 0, 3397, 3398, 7, 10, 0, 0, 3398, 3399, 7, 13, 0, 0, 3399, 574, 1, 0, 0, 0, 3400, 3401, 7, 24, 0, 0, 3401, 3402, 7, 5, 0, 0, 3402, 3403, 7, 13, 0, 0, 3403, 3404, 7, 16, 0, 0, 3404, 3405, 7, 17, 0, 0, 3405, 3406, 7, 5, 0, 0, 3406, 3407, 7, 6, 0, 0, 3407, 576, 1, 0, 0, 0, 3408, 3409, 7, 24, 0, 0, 3409, 3410, 7, 5, 0, 0, 3410, 3411, 7, 13, 0, 0, 3411, 3412, 7, 16, 0, 0, 3412, 3413, 7, 17, 0, 0, 3413, 3414, 7, 16, 0, 0, 3414, 3415, 7, 17, 0, 0, 3415, 3416, 7, 19, 0, 0, 3416, 3417, 7, 7, 0, 0, 3417, 578, 1, 0, 0, 0, 3418, 3419, 7, 24, 0, 0, 3419, 3420, 7, 5, 0, 0, 3420, 3421, 7, 9, 0, 0, 3421, 3422, 7, 9, 0, 0, 3422, 3423, 7, 17, 0, 0, 3423, 3424, 7, 7, 0, 0, 3424, 3425, 7, 23, 0, 0, 3425, 580, 1, 0, 0, 0, 3426, 3427, 7, 24, 0, 0, 3427, 3428, 7, 5, 0, 0, 3428, 3429, 7, 9, 0, 0, 3429, 3430, 7, 9, 0, 0, 3430, 3431, 7, 28, 0, 0, 3431, 3432, 7, 19, 0, 0, 3432, 3433, 7, 13, 0, 0, 3433, 3434, 7, 12, 0, 0, 3434, 582, 1, 0, 0, 0, 3435, 3436, 7, 24, 0, 0, 3436, 3437, 7, 6, 0, 0, 3437, 3438, 7, 5, 0, 0, 3438, 3439, 7, 7, 0, 0, 3439, 3440, 7, 9, 0, 0, 3440, 584, 1, 0, 0, 0, 3441, 3442, 7, 24, 0, 0, 3442, 3443, 7, 13, 0, 0, 3443, 3444, 7, 10, 0, 0, 3444, 3445, 7, 14, 0, 0, 3445, 3446, 7, 10, 0, 0, 3446, 3447, 7, 12, 0, 0, 3447, 3448, 7, 17, 0, 0, 3448, 3449, 7, 7, 0, 0, 3449, 3450, 7, 23, 0, 0, 3450, 586, 1, 0, 0, 0, 3451, 3452, 7, 24, 0, 0, 3452, 3453, 7, 13, 0, 0, 3453, 3454, 7, 10, 0, 0, 3454, 3455, 7, 24, 0, 0, 3455, 3456, 7, 5, 0, 0, 3456, 3457, 7, 13, 0, 0, 3457, 3458, 7, 10, 0, 0, 3458, 588, 1, 0, 0, 0, 3459, 3460, 7, 24, 0, 0, 3460, 3461, 7, 13, 0, 0, 3461, 3462, 7, 10, 0, 0, 3462, 3463, 7, 24, 0, 0, 3463, 3464, 7, 5, 0, 0, 3464, 3465, 7, 13, 0, 0, 3465, 3466, 7, 10, 0, 0, 3466, 3467, 7, 12, 0, 0, 3467, 590, 1, 0, 0, 0, 3468, 3469, 7, 24, 0, 0, 3469, 3470, 7, 13, 0, 0, 3470, 3471, 7, 10, 0, 0, 3471, 3472, 7, 9, 0, 0, 3472, 3473, 7, 10, 0, 0, 3473, 3474, 7, 13, 0, 0, 3474, 3475, 7, 27, 0, 0, 3475, 3476, 7, 10, 0, 0, 3476, 592, 1, 0, 0, 0, 3477, 3478, 7, 24, 0, 0, 3478, 3479, 7, 13, 0, 0, 3479, 3480, 7, 17, 0, 0, 3480, 3481, 7, 19, 0, 0, 3481, 3482, 7, 13, 0, 0, 3482, 594, 1, 0, 0, 0, 3483, 3484, 7, 24, 0, 0, 3484, 3485, 7, 13, 0, 0, 3485, 3486, 7, 17, 0, 0, 3486, 3487, 7, 27, 0, 0, 3487, 3488, 7, 17, 0, 0, 3488, 3489, 7, 6, 0, 0, 3489, 3490, 7, 10, 0, 0, 3490, 3491, 7, 23, 0, 0, 3491, 3492, 7, 10, 0, 0, 3492, 3493, 7, 9, 0, 0, 3493, 596, 1, 0, 0, 0, 3494, 3495, 7, 24, 0, 0, 3495, 3496, 7, 13, 0, 0, 3496, 3497, 7, 19, 0, 0, 3497, 3498, 7, 14, 0, 0, 3498, 3499, 7, 10, 0, 0, 3499, 3500, 7, 12, 0, 0, 3500, 3501, 7, 22, 0, 0, 3501, 3502, 7, 13, 0, 0, 3502, 3503, 7, 5, 0, 0, 3503, 3504, 7, 6, 0, 0, 3504, 598, 1, 0, 0, 0, 3505, 3506, 7, 24, 0, 0, 3506, 3507, 7, 13, 0, 0, 3507, 3508, 7, 19, 0, 0, 3508, 3509, 7, 14, 0, 0, 3509, 3510, 7, 10, 0, 0, 3510, 3511, 7, 12, 0, 0, 3511, 3512, 7, 22, 0, 0, 3512, 3513, 7, 13, 0, 0, 3513, 3514, 7, 10, 0, 0, 3514, 600, 1, 0, 0, 0, 3515, 3516, 7, 24, 0, 0, 3516, 3517, 7, 13, 0, 0, 3517, 3518, 7, 19, 0, 0, 3518, 3519, 7, 23, 0, 0, 3519, 3520, 7, 13, 0, 0, 3520, 3521, 7, 5, 0, 0, 3521, 3522, 7, 15, 0, 0, 3522, 602, 1, 0, 0, 0, 3523, 3524, 7, 29, 0, 0, 3524, 3525, 7, 22, 0, 0, 3525, 3526, 7, 19, 0, 0, 3526, 3527, 7, 16, 0, 0, 3527, 3528, 7, 10, 0, 0, 3528, 604, 1, 0, 0, 0, 3529, 3530, 7, 13, 0, 0, 3530, 3531, 7, 5, 0, 0, 3531, 3532, 7, 7, 0, 0, 3532, 3533, 7, 23, 0, 0, 3533, 3534, 7, 10, 0, 0, 3534, 606, 1, 0, 0, 0, 3535, 3536, 7, 13, 0, 0, 3536, 3537, 7, 10, 0, 0, 3537, 3538, 7, 5, 0, 0, 3538, 3539, 7, 12, 0, 0, 3539, 608, 1, 0, 0, 0, 3540, 3541, 7, 13, 0, 0, 3541, 3542, 7, 10, 0, 0, 3542, 3543, 7, 5, 0, 0, 3543, 3544, 7, 9, 0, 0, 3544, 3545, 7, 9, 0, 0, 3545, 3546, 7, 17, 0, 0, 3546, 3547, 7, 23, 0, 0, 3547, 3548, 7, 7, 0, 0, 3548, 610, 1, 0, 0, 0, 3549, 3550, 7, 13, 0, 0, 3550, 3551, 7, 10, 0, 0, 3551, 3552, 7, 14, 0, 0, 3552, 3553, 7, 20, 0, 0, 3553, 3554, 7, 10, 0, 0, 3554, 3555, 7, 14, 0, 0, 3555, 3556, 7, 21, 0, 0, 3556, 612, 1, 0, 0, 0, 3557, 3558, 7, 13, 0, 0, 3558, 3559, 7, 10, 0, 0, 3559, 3560, 7, 14, 0, 0, 3560, 3561, 7, 22, 0, 0, 3561, 3562, 7, 13, 0, 0, 3562, 3563, 7, 9, 0, 0, 3563, 3564, 7, 17, 0, 0, 3564, 3565, 7, 27, 0, 0, 3565, 3566, 7, 10, 0, 0, 3566, 614, 1, 0, 0, 0, 3567, 3568, 7, 13, 0, 0, 3568, 3569, 7, 10, 0, 0, 3569, 3570, 7, 25, 0, 0, 3570, 616, 1, 0, 0, 0, 3571, 3572, 7, 13, 0, 0, 3572, 3573, 7, 10, 0, 0, 3573, 3574, 7, 25, 0, 0, 3574, 3575, 7, 13, 0, 0, 3575, 3576, 7, 10, 0, 0, 3576, 3577, 7, 9, 0, 0, 3577, 3578, 7, 20, 0, 0, 3578, 618, 1, 0, 0, 0, 3579, 3580, 7, 13, 0, 0, 3580, 3581, 7, 10, 0, 0, 3581, 3582, 7, 17, 0, 0, 3582, 3583, 7, 7, 0, 0, 3583, 3584, 7, 12, 0, 0, 3584, 3585, 7, 10, 0, 0, 3585, 3586, 7, 26, 0, 0, 3586, 620, 1, 0, 0, 0, 3587, 3588, 7, 13, 0, 0, 3588, 3589, 7, 10, 0, 0, 3589, 3590, 7, 6, 0, 0, 3590, 3591, 7, 5, 0, 0, 3591, 3592, 7, 16, 0, 0, 3592, 3593, 7, 17, 0, 0, 3593, 3594, 7, 27, 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, 6, 0, 0, 3599, 3600, 7, 10, 0, 0, 3600, 3601, 7, 5, 0, 0, 3601, 3602, 7, 9, 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, 7, 0, 0, 3607, 3608, 7, 5, 0, 0, 3608, 3609, 7, 15, 0, 0, 3609, 3610, 7, 10, 0, 0, 3610, 626, 1, 0, 0, 0, 3611, 3612, 7, 13, 0, 0, 3612, 3613, 7, 10, 0, 0, 3613, 3614, 7, 24, 0, 0, 3614, 3615, 7, 10, 0, 0, 3615, 3616, 7, 5, 0, 0, 3616, 3617, 7, 16, 0, 0, 3617, 3618, 7, 5, 0, 0, 3618, 3619, 7, 18, 0, 0, 3619, 3620, 7, 6, 0, 0, 3620, 3621, 7, 10, 0, 0, 3621, 628, 1, 0, 0, 0, 3622, 3623, 7, 13, 0, 0, 3623, 3624, 7, 10, 0, 0, 3624, 3625, 7, 24, 0, 0, 3625, 3626, 7, 6, 0, 0, 3626, 3627, 7, 5, 0, 0, 3627, 3628, 7, 14, 0, 0, 3628, 3629, 7, 10, 0, 0, 3629, 630, 1, 0, 0, 0, 3630, 3631, 7, 13, 0, 0, 3631, 3632, 7, 10, 0, 0, 3632, 3633, 7, 24, 0, 0, 3633, 3634, 7, 6, 0, 0, 3634, 3635, 7, 17, 0, 0, 3635, 3636, 7, 14, 0, 0, 3636, 3637, 7, 5, 0, 0, 3637, 632, 1, 0, 0, 0, 3638, 3639, 7, 13, 0, 0, 3639, 3640, 7, 10, 0, 0, 3640, 3641, 7, 9, 0, 0, 3641, 3642, 7, 10, 0, 0, 3642, 3643, 7, 16, 0, 0, 3643, 634, 1, 0, 0, 0, 3644, 3645, 7, 13, 0, 0, 3645, 3646, 7, 10, 0, 0, 3646, 3647, 7, 9, 0, 0, 3647, 3648, 7, 16, 0, 0, 3648, 3649, 7, 5, 0, 0, 3649, 3650, 7, 13, 0, 0, 3650, 3651, 7, 16, 0, 0, 3651, 636, 1, 0, 0, 0, 3652, 3653, 7, 13, 0, 0, 3653, 3654, 7, 10, 0, 0, 3654, 3655, 7, 9, 0, 0, 3655, 3656, 7, 16, 0, 0, 3656, 3657, 7, 13, 0, 0, 3657, 3658, 7, 17, 0, 0, 3658, 3659, 7, 14, 0, 0, 3659, 3660, 7, 16, 0, 0, 3660, 638, 1, 0, 0, 0, 3661, 3662, 7, 13, 0, 0, 3662, 3663, 7, 10, 0, 0, 3663, 3664, 7, 16, 0, 0, 3664, 3665, 7, 22, 0, 0, 3665, 3666, 7, 13, 0, 0, 3666, 3667, 7, 7, 0, 0, 3667, 3668, 7, 9, 0, 0, 3668, 640, 1, 0, 0, 0, 3669, 3670, 7, 13, 0, 0, 3670, 3671, 7, 10, 0, 0, 3671, 3672, 7, 27, 0, 0, 3672, 3673, 7, 19, 0, 0, 3673, 3674, 7, 21, 0, 0, 3674, 3675, 7, 10, 0, 0, 3675, 642, 1, 0, 0, 0, 3676, 3677, 7, 13, 0, 0, 3677, 3678, 7, 19, 0, 0, 3678, 3679, 7, 6, 0, 0, 3679, 3680, 7, 10, 0, 0, 3680, 644, 1, 0, 0, 0, 3681, 3682, 7, 13, 0, 0, 3682, 3683, 7, 19, 0, 0, 3683, 3684, 7, 6, 0, 0, 3684, 3685, 7, 6, 0, 0, 3685, 3686, 7, 18, 0, 0, 3686, 3687, 7, 5, 0, 0, 3687, 3688, 7, 14, 0, 0, 3688, 3689, 7, 21, 0, 0, 3689, 646, 1, 0, 0, 0, 3690, 3691, 7, 13, 0, 0, 3691, 3692, 7, 19, 0, 0, 3692, 3693, 7, 28, 0, 0, 3693, 3694, 7, 9, 0, 0, 3694, 648, 1, 0, 0, 0, 3695, 3696, 7, 13, 0, 0, 3696, 3697, 7, 22, 0, 0, 3697, 3698, 7, 6, 0, 0, 3698, 3699, 7, 10, 0, 0, 3699, 650, 1, 0, 0, 0, 3700, 3701, 7, 9, 0, 0, 3701, 3702, 7, 5, 0, 0, 3702, 3703, 7, 27, 0, 0, 3703, 3704, 7, 10, 0, 0, 3704, 3705, 7, 24, 0, 0, 3705, 3706, 7, 19, 0, 0, 3706, 3707, 7, 17, 0, 0, 3707, 3708, 7, 7, 0, 0, 3708, 3709, 7, 16, 0, 0, 3709, 652, 1, 0, 0, 0, 3710, 3711, 7, 9, 0, 0, 3711, 3712, 7, 14, 0, 0, 3712, 3713, 7, 20, 0, 0, 3713, 3714, 7, 10, 0, 0, 3714, 3715, 7, 15, 0, 0, 3715, 3716, 7, 5, 0, 0, 3716, 654, 1, 0, 0, 0, 3717, 3718, 7, 9, 0, 0, 3718, 3719, 7, 14, 0, 0, 3719, 3720, 7, 13, 0, 0, 3720, 3721, 7, 19, 0, 0, 3721, 3722, 7, 6, 0, 0, 3722, 3723, 7, 6, 0, 0, 3723, 656, 1, 0, 0, 0, 3724, 3725, 7, 9, 0, 0, 3725, 3726, 7, 10, 0, 0, 3726, 3727, 7, 5, 0, 0, 3727, 3728, 7, 13, 0, 0, 3728, 3729, 7, 14, 0, 0, 3729, 3730, 7, 20, 0, 0, 3730, 658, 1, 0, 0, 0, 3731, 3732, 7, 9, 0, 0, 3732, 3733, 7, 10, 0, 0, 3733, 3734, 7, 14, 0, 0, 3734, 3735, 7, 19, 0, 0, 3735, 3736, 7, 7, 0, 0, 3736, 3737, 7, 12, 0, 0, 3737, 660, 1, 0, 0, 0, 3738, 3739, 7, 9, 0, 0, 3739, 3740, 7, 10, 0, 0, 3740, 3741, 7, 14, 0, 0, 3741, 3742, 7, 22, 0, 0, 3742, 3743, 7, 13, 0, 0, 3743, 3744, 7, 17, 0, 0, 3744, 3745, 7, 16, 0, 0, 3745, 3746, 7, 8, 0, 0, 3746, 662, 1, 0, 0, 0, 3747, 3748, 7, 9, 0, 0, 3748, 3749, 7, 10, 0, 0, 3749, 3750, 7, 29, 0, 0, 3750, 3751, 7, 22, 0, 0, 3751, 3752, 7, 10, 0, 0, 3752, 3753, 7, 7, 0, 0, 3753, 3754, 7, 14, 0, 0, 3754, 3755, 7, 10, 0, 0, 3755, 664, 1, 0, 0, 0, 3756, 3757, 7, 9, 0, 0, 3757, 3758, 7, 10, 0, 0, 3758, 3759, 7, 29, 0, 0, 3759, 3760, 7, 22, 0, 0, 3760, 3761, 7, 10, 0, 0, 3761, 3762, 7, 7, 0, 0, 3762, 3763, 7, 14, 0, 0, 3763, 3764, 7, 10, 0, 0, 3764, 3765, 7, 9, 0, 0, 3765, 666, 1, 0, 0, 0, 3766, 3767, 7, 9, 0, 0, 3767, 3768, 7, 10, 0, 0, 3768, 3769, 7, 13, 0, 0, 3769, 3770, 7, 17, 0, 0, 3770, 3771, 7, 5, 0, 0, 3771, 3772, 7, 6, 0, 0, 3772, 3773, 7, 17, 0, 0, 3773, 3774, 7, 11, 0, 0, 3774, 3775, 7, 5, 0, 0, 3775, 3776, 7, 18, 0, 0, 3776, 3777, 7, 6, 0, 0, 3777, 3778, 7, 10, 0, 0, 3778, 668, 1, 0, 0, 0, 3779, 3780, 7, 9, 0, 0, 3780, 3781, 7, 10, 0, 0, 3781, 3782, 7, 13, 0, 0, 3782, 3783, 7, 27, 0, 0, 3783, 3784, 7, 10, 0, 0, 3784, 3785, 7, 13, 0, 0, 3785, 670, 1, 0, 0, 0, 3786, 3787, 7, 9, 0, 0, 3787, 3788, 7, 10, 0, 0, 3788, 3789, 7, 9, 0, 0, 3789, 3790, 7, 9, 0, 0, 3790, 3791, 7, 17, 0, 0, 3791, 3792, 7, 19, 0, 0, 3792, 3793, 7, 7, 0, 0, 3793, 672, 1, 0, 0, 0, 3794, 3795, 7, 9, 0, 0, 3795, 3796, 7, 10, 0, 0, 3796, 3797, 7, 16, 0, 0, 3797, 674, 1, 0, 0, 0, 3798, 3799, 7, 9, 0, 0, 3799, 3800, 7, 20, 0, 0, 3800, 3801, 7, 5, 0, 0, 3801, 3802, 7, 13, 0, 0, 3802, 3803, 7, 10, 0, 0, 3803, 676, 1, 0, 0, 0, 3804, 3805, 7, 9, 0, 0, 3805, 3806, 7, 20, 0, 0, 3806, 3807, 7, 19, 0, 0, 3807, 3808, 7, 28, 0, 0, 3808, 678, 1, 0, 0, 0, 3809, 3810, 7, 9, 0, 0, 3810, 3811, 7, 17, 0, 0, 3811, 3812, 7, 15, 0, 0, 3812, 3813, 7, 24, 0, 0, 3813, 3814, 7, 6, 0, 0, 3814, 3815, 7, 10, 0, 0, 3815, 680, 1, 0, 0, 0, 3816, 3817, 7, 9, 0, 0, 3817, 3818, 7, 7, 0, 0, 3818, 3819, 7, 5, 0, 0, 3819, 3820, 7, 24, 0, 0, 3820, 3821, 7, 9, 0, 0, 3821, 3822, 7, 20, 0, 0, 3822, 3823, 7, 19, 0, 0, 3823, 3824, 7, 16, 0, 0, 3824, 682, 1, 0, 0, 0, 3825, 3826, 7, 9, 0, 0, 3826, 3827, 7, 16, 0, 0, 3827, 3828, 7, 5, 0, 0, 3828, 3829, 7, 18, 0, 0, 3829, 3830, 7, 6, 0, 0, 3830, 3831, 7, 10, 0, 0, 3831, 684, 1, 0, 0, 0, 3832, 3833, 7, 9, 0, 0, 3833, 3834, 7, 16, 0, 0, 3834, 3835, 7, 5, 0, 0, 3835, 3836, 7, 7, 0, 0, 3836, 3837, 7, 12, 0, 0, 3837, 3838, 7, 5, 0, 0, 3838, 3839, 7, 6, 0, 0, 3839, 3840, 7, 19, 0, 0, 3840, 3841, 7, 7, 0, 0, 3841, 3842, 7, 10, 0, 0, 3842, 686, 1, 0, 0, 0, 3843, 3844, 7, 9, 0, 0, 3844, 3845, 7, 16, 0, 0, 3845, 3846, 7, 5, 0, 0, 3846, 3847, 7, 13, 0, 0, 3847, 3848, 7, 16, 0, 0, 3848, 688, 1, 0, 0, 0, 3849, 3850, 7, 9, 0, 0, 3850, 3851, 7, 16, 0, 0, 3851, 3852, 7, 5, 0, 0, 3852, 3853, 7, 16, 0, 0, 3853, 3854, 7, 10, 0, 0, 3854, 3855, 7, 15, 0, 0, 3855, 3856, 7, 10, 0, 0, 3856, 3857, 7, 7, 0, 0, 3857, 3858, 7, 16, 0, 0, 3858, 690, 1, 0, 0, 0, 3859, 3860, 7, 9, 0, 0, 3860, 3861, 7, 16, 0, 0, 3861, 3862, 7, 5, 0, 0, 3862, 3863, 7, 16, 0, 0, 3863, 3864, 7, 17, 0, 0, 3864, 3865, 7, 9, 0, 0, 3865, 3866, 7, 16, 0, 0, 3866, 3867, 7, 17, 0, 0, 3867, 3868, 7, 14, 0, 0, 3868, 3869, 7, 9, 0, 0, 3869, 692, 1, 0, 0, 0, 3870, 3871, 7, 9, 0, 0, 3871, 3872, 7, 16, 0, 0, 3872, 3873, 7, 12, 0, 0, 3873, 3874, 7, 17, 0, 0, 3874, 3875, 7, 7, 0, 0, 3875, 694, 1, 0, 0, 0, 3876, 3877, 7, 9, 0, 0, 3877, 3878, 7, 16, 0, 0, 3878, 3879, 7, 12, 0, 0, 3879, 3880, 7, 19, 0, 0, 3880, 3881, 7, 22, 0, 0, 3881, 3882, 7, 16, 0, 0, 3882, 696, 1, 0, 0, 0, 3883, 3884, 7, 9, 0, 0, 3884, 3885, 7, 16, 0, 0, 3885, 3886, 7, 19, 0, 0, 3886, 3887, 7, 13, 0, 0, 3887, 3888, 7, 5, 0, 0, 3888, 3889, 7, 23, 0, 0, 3889, 3890, 7, 10, 0, 0, 3890, 698, 1, 0, 0, 0, 3891, 3892, 7, 9, 0, 0, 3892, 3893, 7, 16, 0, 0, 3893, 3894, 7, 13, 0, 0, 3894, 3895, 7, 17, 0, 0, 3895, 3896, 7, 14, 0, 0, 3896, 3897, 7, 16, 0, 0, 3897, 700, 1, 0, 0, 0, 3898, 3899, 7, 9, 0, 0, 3899, 3900, 7, 16, 0, 0, 3900, 3901, 7, 13, 0, 0, 3901, 3902, 7, 17, 0, 0, 3902, 3903, 7, 24, 0, 0, 3903, 702, 1, 0, 0, 0, 3904, 3905, 7, 9, 0, 0, 3905, 3906, 7, 8, 0, 0, 3906, 3907, 7, 9, 0, 0, 3907, 3908, 7, 17, 0, 0, 3908, 3909, 7, 12, 0, 0, 3909, 704, 1, 0, 0, 0, 3910, 3911, 7, 9, 0, 0, 3911, 3912, 7, 8, 0, 0, 3912, 3913, 7, 9, 0, 0, 3913, 3914, 7, 16, 0, 0, 3914, 3915, 7, 10, 0, 0, 3915, 3916, 7, 15, 0, 0, 3916, 706, 1, 0, 0, 0, 3917, 3918, 7, 16, 0, 0, 3918, 3919, 7, 5, 0, 0, 3919, 3920, 7, 18, 0, 0, 3920, 3921, 7, 6, 0, 0, 3921, 3922, 7, 10, 0, 0, 3922, 3923, 7, 9, 0, 0, 3923, 708, 1, 0, 0, 0, 3924, 3925, 7, 16, 0, 0, 3925, 3926, 7, 5, 0, 0, 3926, 3927, 7, 18, 0, 0, 3927, 3928, 7, 6, 0, 0, 3928, 3929, 7, 10, 0, 0, 3929, 3930, 7, 9, 0, 0, 3930, 3931, 7, 24, 0, 0, 3931, 3932, 7, 5, 0, 0, 3932, 3933, 7, 14, 0, 0, 3933, 3934, 7, 10, 0, 0, 3934, 710, 1, 0, 0, 0, 3935, 3936, 7, 16, 0, 0, 3936, 3937, 7, 10, 0, 0, 3937, 3938, 7, 15, 0, 0, 3938, 3939, 7, 24, 0, 0, 3939, 712, 1, 0, 0, 0, 3940, 3941, 7, 16, 0, 0, 3941, 3942, 7, 10, 0, 0, 3942, 3943, 7, 15, 0, 0, 3943, 3944, 7, 24, 0, 0, 3944, 3945, 7, 6, 0, 0, 3945, 3946, 7, 5, 0, 0, 3946, 3947, 7, 16, 0, 0, 3947, 3948, 7, 10, 0, 0, 3948, 714, 1, 0, 0, 0, 3949, 3950, 7, 16, 0, 0, 3950, 3951, 7, 10, 0, 0, 3951, 3952, 7, 15, 0, 0, 3952, 3953, 7, 24, 0, 0, 3953, 3954, 7, 19, 0, 0, 3954, 3955, 7, 13, 0, 0, 3955, 3956, 7, 5, 0, 0, 3956, 3957, 7, 13, 0, 0, 3957, 3958, 7, 8, 0, 0, 3958, 716, 1, 0, 0, 0, 3959, 3960, 7, 16, 0, 0, 3960, 3961, 7, 10, 0, 0, 3961, 3962, 7, 26, 0, 0, 3962, 3963, 7, 16, 0, 0, 3963, 718, 1, 0, 0, 0, 3964, 3965, 7, 16, 0, 0, 3965, 3966, 7, 13, 0, 0, 3966, 3967, 7, 5, 0, 0, 3967, 3968, 7, 7, 0, 0, 3968, 3969, 7, 9, 0, 0, 3969, 3970, 7, 5, 0, 0, 3970, 3971, 7, 14, 0, 0, 3971, 3972, 7, 16, 0, 0, 3972, 3973, 7, 17, 0, 0, 3973, 3974, 7, 19, 0, 0, 3974, 3975, 7, 7, 0, 0, 3975, 720, 1, 0, 0, 0, 3976, 3977, 7, 16, 0, 0, 3977, 3978, 7, 13, 0, 0, 3978, 3979, 7, 17, 0, 0, 3979, 3980, 7, 23, 0, 0, 3980, 3981, 7, 23, 0, 0, 3981, 3982, 7, 10, 0, 0, 3982, 3983, 7, 13, 0, 0, 3983, 722, 1, 0, 0, 0, 3984, 3985, 7, 16, 0, 0, 3985, 3986, 7, 13, 0, 0, 3986, 3987, 7, 22, 0, 0, 3987, 3988, 7, 7, 0, 0, 3988, 3989, 7, 14, 0, 0, 3989, 3990, 7, 5, 0, 0, 3990, 3991, 7, 16, 0, 0, 3991, 3992, 7, 10, 0, 0, 3992, 724, 1, 0, 0, 0, 3993, 3994, 7, 16, 0, 0, 3994, 3995, 7, 13, 0, 0, 3995, 3996, 7, 22, 0, 0, 3996, 3997, 7, 9, 0, 0, 3997, 3998, 7, 16, 0, 0, 3998, 3999, 7, 10, 0, 0, 3999, 4000, 7, 12, 0, 0, 4000, 726, 1, 0, 0, 0, 4001, 4002, 7, 16, 0, 0, 4002, 4003, 7, 8, 0, 0, 4003, 4004, 7, 24, 0, 0, 4004, 4005, 7, 10, 0, 0, 4005, 728, 1, 0, 0, 0, 4006, 4007, 7, 16, 0, 0, 4007, 4008, 7, 8, 0, 0, 4008, 4009, 7, 24, 0, 0, 4009, 4010, 7, 10, 0, 0, 4010, 4011, 7, 9, 0, 0, 4011, 730, 1, 0, 0, 0, 4012, 4013, 7, 22, 0, 0, 4013, 4014, 7, 7, 0, 0, 4014, 4015, 7, 18, 0, 0, 4015, 4016, 7, 19, 0, 0, 4016, 4017, 7, 22, 0, 0, 4017, 4018, 7, 7, 0, 0, 4018, 4019, 7, 12, 0, 0, 4019, 4020, 7, 10, 0, 0, 4020, 4021, 7, 12, 0, 0, 4021, 732, 1, 0, 0, 0, 4022, 4023, 7, 22, 0, 0, 4023, 4024, 7, 7, 0, 0, 4024, 4025, 7, 14, 0, 0, 4025, 4026, 7, 19, 0, 0, 4026, 4027, 7, 15, 0, 0, 4027, 4028, 7, 15, 0, 0, 4028, 4029, 7, 17, 0, 0, 4029, 4030, 7, 16, 0, 0, 4030, 4031, 7, 16, 0, 0, 4031, 4032, 7, 10, 0, 0, 4032, 4033, 7, 12, 0, 0, 4033, 734, 1, 0, 0, 0, 4034, 4035, 7, 22, 0, 0, 4035, 4036, 7, 7, 0, 0, 4036, 4037, 7, 10, 0, 0, 4037, 4038, 7, 7, 0, 0, 4038, 4039, 7, 14, 0, 0, 4039, 4040, 7, 13, 0, 0, 4040, 4041, 7, 8, 0, 0, 4041, 4042, 7, 24, 0, 0, 4042, 4043, 7, 16, 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, 21, 0, 0, 4049, 4050, 7, 7, 0, 0, 4050, 4051, 7, 19, 0, 0, 4051, 4052, 7, 28, 0, 0, 4052, 4053, 7, 7, 0, 0, 4053, 738, 1, 0, 0, 0, 4054, 4055, 7, 22, 0, 0, 4055, 4056, 7, 7, 0, 0, 4056, 4057, 7, 6, 0, 0, 4057, 4058, 7, 17, 0, 0, 4058, 4059, 7, 9, 0, 0, 4059, 4060, 7, 16, 0, 0, 4060, 4061, 7, 10, 0, 0, 4061, 4062, 7, 7, 0, 0, 4062, 740, 1, 0, 0, 0, 4063, 4064, 7, 22, 0, 0, 4064, 4065, 7, 7, 0, 0, 4065, 4066, 7, 6, 0, 0, 4066, 4067, 7, 19, 0, 0, 4067, 4068, 7, 23, 0, 0, 4068, 4069, 7, 23, 0, 0, 4069, 4070, 7, 10, 0, 0, 4070, 4071, 7, 12, 0, 0, 4071, 742, 1, 0, 0, 0, 4072, 4073, 7, 22, 0, 0, 4073, 4074, 7, 7, 0, 0, 4074, 4075, 7, 16, 0, 0, 4075, 4076, 7, 17, 0, 0, 4076, 4077, 7, 6, 0, 0, 4077, 744, 1, 0, 0, 0, 4078, 4079, 7, 22, 0, 0, 4079, 4080, 7, 24, 0, 0, 4080, 4081, 7, 12, 0, 0, 4081, 4082, 7, 5, 0, 0, 4082, 4083, 7, 16, 0, 0, 4083, 4084, 7, 10, 0, 0, 4084, 746, 1, 0, 0, 0, 4085, 4086, 7, 27, 0, 0, 4086, 4087, 7, 5, 0, 0, 4087, 4088, 7, 14, 0, 0, 4088, 4089, 7, 22, 0, 0, 4089, 4090, 7, 22, 0, 0, 4090, 4091, 7, 15, 0, 0, 4091, 748, 1, 0, 0, 0, 4092, 4093, 7, 27, 0, 0, 4093, 4094, 7, 5, 0, 0, 4094, 4095, 7, 6, 0, 0, 4095, 4096, 7, 17, 0, 0, 4096, 4097, 7, 12, 0, 0, 4097, 750, 1, 0, 0, 0, 4098, 4099, 7, 27, 0, 0, 4099, 4100, 7, 5, 0, 0, 4100, 4101, 7, 6, 0, 0, 4101, 4102, 7, 17, 0, 0, 4102, 4103, 7, 12, 0, 0, 4103, 4104, 7, 5, 0, 0, 4104, 4105, 7, 16, 0, 0, 4105, 4106, 7, 10, 0, 0, 4106, 752, 1, 0, 0, 0, 4107, 4108, 7, 27, 0, 0, 4108, 4109, 7, 5, 0, 0, 4109, 4110, 7, 6, 0, 0, 4110, 4111, 7, 17, 0, 0, 4111, 4112, 7, 12, 0, 0, 4112, 4113, 7, 5, 0, 0, 4113, 4114, 7, 16, 0, 0, 4114, 4115, 7, 19, 0, 0, 4115, 4116, 7, 13, 0, 0, 4116, 754, 1, 0, 0, 0, 4117, 4118, 7, 27, 0, 0, 4118, 4119, 7, 5, 0, 0, 4119, 4120, 7, 13, 0, 0, 4120, 4121, 7, 8, 0, 0, 4121, 4122, 7, 17, 0, 0, 4122, 4123, 7, 7, 0, 0, 4123, 4124, 7, 23, 0, 0, 4124, 756, 1, 0, 0, 0, 4125, 4126, 7, 27, 0, 0, 4126, 4127, 7, 10, 0, 0, 4127, 4128, 7, 13, 0, 0, 4128, 4129, 7, 9, 0, 0, 4129, 4130, 7, 17, 0, 0, 4130, 4131, 7, 19, 0, 0, 4131, 4132, 7, 7, 0, 0, 4132, 758, 1, 0, 0, 0, 4133, 4134, 7, 27, 0, 0, 4134, 4135, 7, 17, 0, 0, 4135, 4136, 7, 10, 0, 0, 4136, 4137, 7, 28, 0, 0, 4137, 760, 1, 0, 0, 0, 4138, 4139, 7, 27, 0, 0, 4139, 4140, 7, 19, 0, 0, 4140, 4141, 7, 6, 0, 0, 4141, 4142, 7, 5, 0, 0, 4142, 4143, 7, 16, 0, 0, 4143, 4144, 7, 17, 0, 0, 4144, 4145, 7, 6, 0, 0, 4145, 4146, 7, 10, 0, 0, 4146, 762, 1, 0, 0, 0, 4147, 4148, 7, 28, 0, 0, 4148, 4149, 7, 20, 0, 0, 4149, 4150, 7, 17, 0, 0, 4150, 4151, 7, 16, 0, 0, 4151, 4152, 7, 10, 0, 0, 4152, 4153, 7, 9, 0, 0, 4153, 4154, 7, 24, 0, 0, 4154, 4155, 7, 5, 0, 0, 4155, 4156, 7, 14, 0, 0, 4156, 4157, 7, 10, 0, 0, 4157, 764, 1, 0, 0, 0, 4158, 4159, 7, 28, 0, 0, 4159, 4160, 7, 17, 0, 0, 4160, 4161, 7, 16, 0, 0, 4161, 4162, 7, 20, 0, 0, 4162, 4163, 7, 19, 0, 0, 4163, 4164, 7, 22, 0, 0, 4164, 4165, 7, 16, 0, 0, 4165, 766, 1, 0, 0, 0, 4166, 4167, 7, 28, 0, 0, 4167, 4168, 7, 19, 0, 0, 4168, 4169, 7, 13, 0, 0, 4169, 4170, 7, 21, 0, 0, 4170, 768, 1, 0, 0, 0, 4171, 4172, 7, 28, 0, 0, 4172, 4173, 7, 13, 0, 0, 4173, 4174, 7, 5, 0, 0, 4174, 4175, 7, 24, 0, 0, 4175, 4176, 7, 24, 0, 0, 4176, 4177, 7, 10, 0, 0, 4177, 4178, 7, 13, 0, 0, 4178, 770, 1, 0, 0, 0, 4179, 4180, 7, 28, 0, 0, 4180, 4181, 7, 13, 0, 0, 4181, 4182, 7, 17, 0, 0, 4182, 4183, 7, 16, 0, 0, 4183, 4184, 7, 10, 0, 0, 4184, 772, 1, 0, 0, 0, 4185, 4186, 7, 26, 0, 0, 4186, 4187, 7, 15, 0, 0, 4187, 4188, 7, 6, 0, 0, 4188, 774, 1, 0, 0, 0, 4189, 4190, 7, 8, 0, 0, 4190, 4191, 7, 10, 0, 0, 4191, 4192, 7, 5, 0, 0, 4192, 4193, 7, 13, 0, 0, 4193, 776, 1, 0, 0, 0, 4194, 4195, 7, 8, 0, 0, 4195, 4196, 7, 10, 0, 0, 4196, 4197, 7, 9, 0, 0, 4197, 778, 1, 0, 0, 0, 4198, 4199, 7, 11, 0, 0, 4199, 4200, 7, 19, 0, 0, 4200, 4201, 7, 7, 0, 0, 4201, 4202, 7, 10, 0, 0, 4202, 780, 1, 0, 0, 0, 4203, 4204, 7, 18, 0, 0, 4204, 4205, 7, 10, 0, 0, 4205, 4206, 7, 16, 0, 0, 4206, 4207, 7, 28, 0, 0, 4207, 4208, 7, 10, 0, 0, 4208, 4209, 7, 10, 0, 0, 4209, 4210, 7, 7, 0, 0, 4210, 782, 1, 0, 0, 0, 4211, 4212, 7, 18, 0, 0, 4212, 4213, 7, 17, 0, 0, 4213, 4214, 7, 23, 0, 0, 4214, 4215, 7, 17, 0, 0, 4215, 4216, 7, 7, 0, 0, 4216, 4217, 7, 16, 0, 0, 4217, 784, 1, 0, 0, 0, 4218, 4219, 7, 18, 0, 0, 4219, 4220, 7, 17, 0, 0, 4220, 4221, 7, 16, 0, 0, 4221, 786, 1, 0, 0, 0, 4222, 4223, 7, 18, 0, 0, 4223, 4224, 7, 19, 0, 0, 4224, 4225, 7, 19, 0, 0, 4225, 4226, 7, 6, 0, 0, 4226, 4227, 7, 10, 0, 0, 4227, 4228, 7, 5, 0, 0, 4228, 4229, 7, 7, 0, 0, 4229, 788, 1, 0, 0, 0, 4230, 4231, 7, 14, 0, 0, 4231, 4232, 7, 20, 0, 0, 4232, 4233, 7, 5, 0, 0, 4233, 4234, 7, 13, 0, 0, 4234, 790, 1, 0, 0, 0, 4235, 4236, 7, 14, 0, 0, 4236, 4237, 7, 20, 0, 0, 4237, 4238, 7, 5, 0, 0, 4238, 4239, 7, 13, 0, 0, 4239, 4240, 7, 5, 0, 0, 4240, 4241, 7, 14, 0, 0, 4241, 4242, 7, 16, 0, 0, 4242, 4243, 7, 10, 0, 0, 4243, 4244, 7, 13, 0, 0, 4244, 792, 1, 0, 0, 0, 4245, 4246, 7, 14, 0, 0, 4246, 4247, 7, 19, 0, 0, 4247, 4248, 7, 5, 0, 0, 4248, 4249, 7, 6, 0, 0, 4249, 4250, 7, 10, 0, 0, 4250, 4251, 7, 9, 0, 0, 4251, 4252, 7, 14, 0, 0, 4252, 4253, 7, 10, 0, 0, 4253, 794, 1, 0, 0, 0, 4254, 4255, 7, 12, 0, 0, 4255, 4256, 7, 10, 0, 0, 4256, 4257, 7, 14, 0, 0, 4257, 796, 1, 0, 0, 0, 4258, 4259, 7, 12, 0, 0, 4259, 4260, 7, 10, 0, 0, 4260, 4261, 7, 14, 0, 0, 4261, 4262, 7, 17, 0, 0, 4262, 4263, 7, 15, 0, 0, 4263, 4264, 7, 5, 0, 0, 4264, 4265, 7, 6, 0, 0, 4265, 798, 1, 0, 0, 0, 4266, 4267, 7, 10, 0, 0, 4267, 4268, 7, 26, 0, 0, 4268, 4269, 7, 17, 0, 0, 4269, 4270, 7, 9, 0, 0, 4270, 4271, 7, 16, 0, 0, 4271, 4272, 7, 9, 0, 0, 4272, 800, 1, 0, 0, 0, 4273, 4274, 7, 10, 0, 0, 4274, 4275, 7, 26, 0, 0, 4275, 4276, 7, 16, 0, 0, 4276, 4277, 7, 13, 0, 0, 4277, 4278, 7, 5, 0, 0, 4278, 4279, 7, 14, 0, 0, 4279, 4280, 7, 16, 0, 0, 4280, 802, 1, 0, 0, 0, 4281, 4282, 7, 25, 0, 0, 4282, 4283, 7, 6, 0, 0, 4283, 4284, 7, 19, 0, 0, 4284, 4285, 7, 5, 0, 0, 4285, 4286, 7, 16, 0, 0, 4286, 804, 1, 0, 0, 0, 4287, 4288, 7, 23, 0, 0, 4288, 4289, 7, 13, 0, 0, 4289, 4290, 7, 10, 0, 0, 4290, 4291, 7, 5, 0, 0, 4291, 4292, 7, 16, 0, 0, 4292, 4293, 7, 10, 0, 0, 4293, 4294, 7, 9, 0, 0, 4294, 4295, 7, 16, 0, 0, 4295, 806, 1, 0, 0, 0, 4296, 4297, 7, 17, 0, 0, 4297, 4298, 7, 7, 0, 0, 4298, 4299, 7, 19, 0, 0, 4299, 4300, 7, 22, 0, 0, 4300, 4301, 7, 16, 0, 0, 4301, 808, 1, 0, 0, 0, 4302, 4303, 7, 17, 0, 0, 4303, 4304, 7, 7, 0, 0, 4304, 4305, 7, 16, 0, 0, 4305, 810, 1, 0, 0, 0, 4306, 4307, 7, 17, 0, 0, 4307, 4308, 7, 7, 0, 0, 4308, 4309, 7, 16, 0, 0, 4309, 4310, 7, 10, 0, 0, 4310, 4311, 7, 23, 0, 0, 4311, 4312, 7, 10, 0, 0, 4312, 4313, 7, 13, 0, 0, 4313, 812, 1, 0, 0, 0, 4314, 4315, 7, 17, 0, 0, 4315, 4316, 7, 7, 0, 0, 4316, 4317, 7, 16, 0, 0, 4317, 4318, 7, 10, 0, 0, 4318, 4319, 7, 13, 0, 0, 4319, 4320, 7, 27, 0, 0, 4320, 4321, 7, 5, 0, 0, 4321, 4322, 7, 6, 0, 0, 4322, 814, 1, 0, 0, 0, 4323, 4324, 7, 6, 0, 0, 4324, 4325, 7, 10, 0, 0, 4325, 4326, 7, 5, 0, 0, 4326, 4327, 7, 9, 0, 0, 4327, 4328, 7, 16, 0, 0, 4328, 816, 1, 0, 0, 0, 4329, 4330, 7, 7, 0, 0, 4330, 4331, 7, 5, 0, 0, 4331, 4332, 7, 16, 0, 0, 4332, 4333, 7, 17, 0, 0, 4333, 4334, 7, 19, 0, 0, 4334, 4335, 7, 7, 0, 0, 4335, 4336, 7, 5, 0, 0, 4336, 4337, 7, 6, 0, 0, 4337, 818, 1, 0, 0, 0, 4338, 4339, 7, 7, 0, 0, 4339, 4340, 7, 14, 0, 0, 4340, 4341, 7, 20, 0, 0, 4341, 4342, 7, 5, 0, 0, 4342, 4343, 7, 13, 0, 0, 4343, 820, 1, 0, 0, 0, 4344, 4345, 7, 7, 0, 0, 4345, 4346, 7, 19, 0, 0, 4346, 4347, 7, 7, 0, 0, 4347, 4348, 7, 10, 0, 0, 4348, 822, 1, 0, 0, 0, 4349, 4350, 7, 7, 0, 0, 4350, 4351, 7, 22, 0, 0, 4351, 4352, 7, 6, 0, 0, 4352, 4353, 7, 6, 0, 0, 4353, 4354, 7, 17, 0, 0, 4354, 4355, 7, 25, 0, 0, 4355, 824, 1, 0, 0, 0, 4356, 4357, 7, 7, 0, 0, 4357, 4358, 7, 22, 0, 0, 4358, 4359, 7, 15, 0, 0, 4359, 4360, 7, 10, 0, 0, 4360, 4361, 7, 13, 0, 0, 4361, 4362, 7, 17, 0, 0, 4362, 4363, 7, 14, 0, 0, 4363, 826, 1, 0, 0, 0, 4364, 4365, 7, 19, 0, 0, 4365, 4366, 7, 27, 0, 0, 4366, 4367, 7, 10, 0, 0, 4367, 4368, 7, 13, 0, 0, 4368, 4369, 7, 6, 0, 0, 4369, 4370, 7, 5, 0, 0, 4370, 4371, 7, 8, 0, 0, 4371, 828, 1, 0, 0, 0, 4372, 4373, 7, 24, 0, 0, 4373, 4374, 7, 19, 0, 0, 4374, 4375, 7, 9, 0, 0, 4375, 4376, 7, 17, 0, 0, 4376, 4377, 7, 16, 0, 0, 4377, 4378, 7, 17, 0, 0, 4378, 4379, 7, 19, 0, 0, 4379, 4380, 7, 7, 0, 0, 4380, 830, 1, 0, 0, 0, 4381, 4382, 7, 24, 0, 0, 4382, 4383, 7, 13, 0, 0, 4383, 4384, 7, 10, 0, 0, 4384, 4385, 7, 14, 0, 0, 4385, 4386, 7, 17, 0, 0, 4386, 4387, 7, 9, 0, 0, 4387, 4388, 7, 17, 0, 0, 4388, 4389, 7, 19, 0, 0, 4389, 4390, 7, 7, 0, 0, 4390, 832, 1, 0, 0, 0, 4391, 4392, 7, 13, 0, 0, 4392, 4393, 7, 10, 0, 0, 4393, 4394, 7, 5, 0, 0, 4394, 4395, 7, 6, 0, 0, 4395, 834, 1, 0, 0, 0, 4396, 4397, 7, 13, 0, 0, 4397, 4398, 7, 19, 0, 0, 4398, 4399, 7, 28, 0, 0, 4399, 836, 1, 0, 0, 0, 4400, 4401, 7, 9, 0, 0, 4401, 4402, 7, 10, 0, 0, 4402, 4403, 7, 16, 0, 0, 4403, 4404, 7, 19, 0, 0, 4404, 4405, 7, 25, 0, 0, 4405, 838, 1, 0, 0, 0, 4406, 4407, 7, 9, 0, 0, 4407, 4408, 7, 15, 0, 0, 4408, 4409, 7, 5, 0, 0, 4409, 4410, 7, 6, 0, 0, 4410, 4411, 7, 6, 0, 0, 4411, 4412, 7, 17, 0, 0, 4412, 4413, 7, 7, 0, 0, 4413, 4414, 7, 16, 0, 0, 4414, 840, 1, 0, 0, 0, 4415, 4416, 7, 9, 0, 0, 4416, 4417, 7, 22, 0, 0, 4417, 4418, 7, 18, 0, 0, 4418, 4419, 7, 9, 0, 0, 4419, 4420, 7, 16, 0, 0, 4420, 4421, 7, 13, 0, 0, 4421, 4422, 7, 17, 0, 0, 4422, 4423, 7, 7, 0, 0, 4423, 4424, 7, 23, 0, 0, 4424, 842, 1, 0, 0, 0, 4425, 4426, 7, 16, 0, 0, 4426, 4427, 7, 17, 0, 0, 4427, 4428, 7, 15, 0, 0, 4428, 4429, 7, 10, 0, 0, 4429, 844, 1, 0, 0, 0, 4430, 4431, 7, 16, 0, 0, 4431, 4432, 7, 17, 0, 0, 4432, 4433, 7, 15, 0, 0, 4433, 4434, 7, 10, 0, 0, 4434, 4435, 7, 9, 0, 0, 4435, 4436, 7, 16, 0, 0, 4436, 4437, 7, 5, 0, 0, 4437, 4438, 7, 15, 0, 0, 4438, 4439, 7, 24, 0, 0, 4439, 846, 1, 0, 0, 0, 4440, 4441, 7, 16, 0, 0, 4441, 4442, 7, 13, 0, 0, 4442, 4443, 7, 10, 0, 0, 4443, 4444, 7, 5, 0, 0, 4444, 4445, 7, 16, 0, 0, 4445, 848, 1, 0, 0, 0, 4446, 4447, 7, 16, 0, 0, 4447, 4448, 7, 13, 0, 0, 4448, 4449, 7, 17, 0, 0, 4449, 4450, 7, 15, 0, 0, 4450, 850, 1, 0, 0, 0, 4451, 4452, 7, 27, 0, 0, 4452, 4453, 7, 5, 0, 0, 4453, 4454, 7, 6, 0, 0, 4454, 4455, 7, 22, 0, 0, 4455, 4456, 7, 10, 0, 0, 4456, 4457, 7, 9, 0, 0, 4457, 852, 1, 0, 0, 0, 4458, 4459, 7, 27, 0, 0, 4459, 4460, 7, 5, 0, 0, 4460, 4461, 7, 13, 0, 0, 4461, 4462, 7, 14, 0, 0, 4462, 4463, 7, 20, 0, 0, 4463, 4464, 7, 5, 0, 0, 4464, 4465, 7, 13, 0, 0, 4465, 854, 1, 0, 0, 0, 4466, 4467, 7, 26, 0, 0, 4467, 4468, 7, 15, 0, 0, 4468, 4469, 7, 6, 0, 0, 4469, 4470, 7, 5, 0, 0, 4470, 4471, 7, 16, 0, 0, 4471, 4472, 7, 16, 0, 0, 4472, 4473, 7, 13, 0, 0, 4473, 4474, 7, 17, 0, 0, 4474, 4475, 7, 18, 0, 0, 4475, 4476, 7, 22, 0, 0, 4476, 4477, 7, 16, 0, 0, 4477, 4478, 7, 10, 0, 0, 4478, 4479, 7, 9, 0, 0, 4479, 856, 1, 0, 0, 0, 4480, 4481, 7, 26, 0, 0, 4481, 4482, 7, 15, 0, 0, 4482, 4483, 7, 6, 0, 0, 4483, 4484, 7, 14, 0, 0, 4484, 4485, 7, 19, 0, 0, 4485, 4486, 7, 15, 0, 0, 4486, 4487, 7, 15, 0, 0, 4487, 4488, 7, 10, 0, 0, 4488, 4489, 7, 7, 0, 0, 4489, 4490, 7, 16, 0, 0, 4490, 858, 1, 0, 0, 0, 4491, 4492, 7, 26, 0, 0, 4492, 4493, 7, 15, 0, 0, 4493, 4494, 7, 6, 0, 0, 4494, 4495, 7, 5, 0, 0, 4495, 4496, 7, 23, 0, 0, 4496, 4497, 7, 23, 0, 0, 4497, 860, 1, 0, 0, 0, 4498, 4499, 7, 26, 0, 0, 4499, 4500, 7, 15, 0, 0, 4500, 4501, 7, 6, 0, 0, 4501, 4502, 5, 95, 0, 0, 4502, 4503, 7, 17, 0, 0, 4503, 4504, 7, 9, 0, 0, 4504, 4505, 5, 95, 0, 0, 4505, 4506, 7, 28, 0, 0, 4506, 4507, 7, 10, 0, 0, 4507, 4508, 7, 6, 0, 0, 4508, 4509, 7, 6, 0, 0, 4509, 4510, 5, 95, 0, 0, 4510, 4511, 7, 25, 0, 0, 4511, 4512, 7, 19, 0, 0, 4512, 4513, 7, 13, 0, 0, 4513, 4514, 7, 15, 0, 0, 4514, 4515, 7, 10, 0, 0, 4515, 4516, 7, 12, 0, 0, 4516, 862, 1, 0, 0, 0, 4517, 4518, 7, 26, 0, 0, 4518, 4519, 7, 15, 0, 0, 4519, 4520, 7, 6, 0, 0, 4520, 4521, 5, 95, 0, 0, 4521, 4522, 7, 17, 0, 0, 4522, 4523, 7, 9, 0, 0, 4523, 4524, 5, 95, 0, 0, 4524, 4525, 7, 28, 0, 0, 4525, 4526, 7, 10, 0, 0, 4526, 4527, 7, 6, 0, 0, 4527, 4528, 7, 6, 0, 0, 4528, 4529, 5, 95, 0, 0, 4529, 4530, 7, 25, 0, 0, 4530, 4531, 7, 19, 0, 0, 4531, 4532, 7, 13, 0, 0, 4532, 4533, 7, 15, 0, 0, 4533, 4534, 7, 10, 0, 0, 4534, 4535, 7, 12, 0, 0, 4535, 4536, 5, 95, 0, 0, 4536, 4537, 7, 12, 0, 0, 4537, 4538, 7, 19, 0, 0, 4538, 4539, 7, 14, 0, 0, 4539, 4540, 7, 22, 0, 0, 4540, 4541, 7, 15, 0, 0, 4541, 4542, 7, 10, 0, 0, 4542, 4543, 7, 7, 0, 0, 4543, 4544, 7, 16, 0, 0, 4544, 864, 1, 0, 0, 0, 4545, 4546, 7, 26, 0, 0, 4546, 4547, 7, 15, 0, 0, 4547, 4548, 7, 6, 0, 0, 4548, 4549, 5, 95, 0, 0, 4549, 4550, 7, 17, 0, 0, 4550, 4551, 7, 9, 0, 0, 4551, 4552, 5, 95, 0, 0, 4552, 4553, 7, 28, 0, 0, 4553, 4554, 7, 10, 0, 0, 4554, 4555, 7, 6, 0, 0, 4555, 4556, 7, 6, 0, 0, 4556, 4557, 5, 95, 0, 0, 4557, 4558, 7, 25, 0, 0, 4558, 4559, 7, 19, 0, 0, 4559, 4560, 7, 13, 0, 0, 4560, 4561, 7, 15, 0, 0, 4561, 4562, 7, 10, 0, 0, 4562, 4563, 7, 12, 0, 0, 4563, 4564, 5, 95, 0, 0, 4564, 4565, 7, 14, 0, 0, 4565, 4566, 7, 19, 0, 0, 4566, 4567, 7, 7, 0, 0, 4567, 4568, 7, 16, 0, 0, 4568, 4569, 7, 10, 0, 0, 4569, 4570, 7, 7, 0, 0, 4570, 4571, 7, 16, 0, 0, 4571, 866, 1, 0, 0, 0, 4572, 4573, 7, 26, 0, 0, 4573, 4574, 7, 24, 0, 0, 4574, 4575, 7, 5, 0, 0, 4575, 4576, 7, 16, 0, 0, 4576, 4577, 7, 20, 0, 0, 4577, 868, 1, 0, 0, 0, 4578, 4579, 7, 26, 0, 0, 4579, 4580, 7, 24, 0, 0, 4580, 4581, 7, 5, 0, 0, 4581, 4582, 7, 16, 0, 0, 4582, 4583, 7, 20, 0, 0, 4583, 4584, 5, 95, 0, 0, 4584, 4585, 7, 10, 0, 0, 4585, 4586, 7, 26, 0, 0, 4586, 4587, 7, 17, 0, 0, 4587, 4588, 7, 9, 0, 0, 4588, 4589, 7, 16, 0, 0, 4589, 4590, 7, 9, 0, 0, 4590, 870, 1, 0, 0, 0, 4591, 4592, 7, 26, 0, 0, 4592, 4593, 7, 15, 0, 0, 4593, 4594, 7, 6, 0, 0, 4594, 4595, 7, 14, 0, 0, 4595, 4596, 7, 19, 0, 0, 4596, 4597, 7, 7, 0, 0, 4597, 4598, 7, 14, 0, 0, 4598, 4599, 7, 5, 0, 0, 4599, 4600, 7, 16, 0, 0, 4600, 872, 1, 0, 0, 0, 4601, 4602, 7, 26, 0, 0, 4602, 4603, 7, 15, 0, 0, 4603, 4604, 7, 6, 0, 0, 4604, 4605, 7, 10, 0, 0, 4605, 4606, 7, 6, 0, 0, 4606, 4607, 7, 10, 0, 0, 4607, 4608, 7, 15, 0, 0, 4608, 4609, 7, 10, 0, 0, 4609, 4610, 7, 7, 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, 10, 0, 0, 4616, 4617, 7, 26, 0, 0, 4617, 4618, 7, 17, 0, 0, 4618, 4619, 7, 9, 0, 0, 4619, 4620, 7, 16, 0, 0, 4620, 4621, 7, 9, 0, 0, 4621, 876, 1, 0, 0, 0, 4622, 4623, 7, 26, 0, 0, 4623, 4624, 7, 15, 0, 0, 4624, 4625, 7, 6, 0, 0, 4625, 4626, 7, 25, 0, 0, 4626, 4627, 7, 19, 0, 0, 4627, 4628, 7, 13, 0, 0, 4628, 4629, 7, 10, 0, 0, 4629, 4630, 7, 9, 0, 0, 4630, 4631, 7, 16, 0, 0, 4631, 878, 1, 0, 0, 0, 4632, 4633, 7, 26, 0, 0, 4633, 4634, 7, 15, 0, 0, 4634, 4635, 7, 6, 0, 0, 4635, 4636, 7, 24, 0, 0, 4636, 4637, 7, 5, 0, 0, 4637, 4638, 7, 13, 0, 0, 4638, 4639, 7, 9, 0, 0, 4639, 4640, 7, 10, 0, 0, 4640, 880, 1, 0, 0, 0, 4641, 4642, 7, 26, 0, 0, 4642, 4643, 7, 15, 0, 0, 4643, 4644, 7, 6, 0, 0, 4644, 4645, 7, 24, 0, 0, 4645, 4646, 7, 17, 0, 0, 4646, 882, 1, 0, 0, 0, 4647, 4648, 7, 26, 0, 0, 4648, 4649, 7, 15, 0, 0, 4649, 4650, 7, 6, 0, 0, 4650, 4651, 7, 13, 0, 0, 4651, 4652, 7, 19, 0, 0, 4652, 4653, 7, 19, 0, 0, 4653, 4654, 7, 16, 0, 0, 4654, 884, 1, 0, 0, 0, 4655, 4656, 7, 26, 0, 0, 4656, 4657, 7, 15, 0, 0, 4657, 4658, 7, 6, 0, 0, 4658, 4659, 7, 9, 0, 0, 4659, 4660, 7, 10, 0, 0, 4660, 4661, 7, 13, 0, 0, 4661, 4662, 7, 17, 0, 0, 4662, 4663, 7, 5, 0, 0, 4663, 4664, 7, 6, 0, 0, 4664, 4665, 7, 17, 0, 0, 4665, 4666, 7, 11, 0, 0, 4666, 4667, 7, 10, 0, 0, 4667, 886, 1, 0, 0, 0, 4668, 4669, 7, 14, 0, 0, 4669, 4670, 7, 5, 0, 0, 4670, 4671, 7, 6, 0, 0, 4671, 4672, 7, 6, 0, 0, 4672, 888, 1, 0, 0, 0, 4673, 4674, 7, 14, 0, 0, 4674, 4675, 7, 22, 0, 0, 4675, 4676, 7, 13, 0, 0, 4676, 4677, 7, 13, 0, 0, 4677, 4678, 7, 10, 0, 0, 4678, 4679, 7, 7, 0, 0, 4679, 4680, 7, 16, 0, 0, 4680, 890, 1, 0, 0, 0, 4681, 4682, 7, 5, 0, 0, 4682, 4683, 7, 16, 0, 0, 4683, 4684, 7, 16, 0, 0, 4684, 4685, 7, 5, 0, 0, 4685, 4686, 7, 14, 0, 0, 4686, 4687, 7, 20, 0, 0, 4687, 892, 1, 0, 0, 0, 4688, 4689, 7, 12, 0, 0, 4689, 4690, 7, 10, 0, 0, 4690, 4691, 7, 16, 0, 0, 4691, 4692, 7, 5, 0, 0, 4692, 4693, 7, 14, 0, 0, 4693, 4694, 7, 20, 0, 0, 4694, 894, 1, 0, 0, 0, 4695, 4696, 7, 10, 0, 0, 4696, 4697, 7, 26, 0, 0, 4697, 4698, 7, 24, 0, 0, 4698, 4699, 7, 13, 0, 0, 4699, 4700, 7, 10, 0, 0, 4700, 4701, 7, 9, 0, 0, 4701, 4702, 7, 9, 0, 0, 4702, 4703, 7, 17, 0, 0, 4703, 4704, 7, 19, 0, 0, 4704, 4705, 7, 7, 0, 0, 4705, 896, 1, 0, 0, 0, 4706, 4707, 7, 23, 0, 0, 4707, 4708, 7, 10, 0, 0, 4708, 4709, 7, 7, 0, 0, 4709, 4710, 7, 10, 0, 0, 4710, 4711, 7, 13, 0, 0, 4711, 4712, 7, 5, 0, 0, 4712, 4713, 7, 16, 0, 0, 4713, 4714, 7, 10, 0, 0, 4714, 4715, 7, 12, 0, 0, 4715, 898, 1, 0, 0, 0, 4716, 4717, 7, 6, 0, 0, 4717, 4718, 7, 19, 0, 0, 4718, 4719, 7, 23, 0, 0, 4719, 4720, 7, 23, 0, 0, 4720, 4721, 7, 10, 0, 0, 4721, 4722, 7, 12, 0, 0, 4722, 900, 1, 0, 0, 0, 4723, 4724, 7, 9, 0, 0, 4724, 4725, 7, 16, 0, 0, 4725, 4726, 7, 19, 0, 0, 4726, 4727, 7, 13, 0, 0, 4727, 4728, 7, 10, 0, 0, 4728, 4729, 7, 12, 0, 0, 4729, 902, 1, 0, 0, 0, 4730, 4731, 7, 17, 0, 0, 4731, 4732, 7, 7, 0, 0, 4732, 4733, 7, 14, 0, 0, 4733, 4734, 7, 6, 0, 0, 4734, 4735, 7, 22, 0, 0, 4735, 4736, 7, 12, 0, 0, 4736, 4737, 7, 10, 0, 0, 4737, 904, 1, 0, 0, 0, 4738, 4739, 7, 13, 0, 0, 4739, 4740, 7, 19, 0, 0, 4740, 4741, 7, 22, 0, 0, 4741, 4742, 7, 16, 0, 0, 4742, 4743, 7, 17, 0, 0, 4743, 4744, 7, 7, 0, 0, 4744, 4745, 7, 10, 0, 0, 4745, 906, 1, 0, 0, 0, 4746, 4747, 7, 16, 0, 0, 4747, 4748, 7, 13, 0, 0, 4748, 4749, 7, 5, 0, 0, 4749, 4750, 7, 7, 0, 0, 4750, 4751, 7, 9, 0, 0, 4751, 4752, 7, 25, 0, 0, 4752, 4753, 7, 19, 0, 0, 4753, 4754, 7, 13, 0, 0, 4754, 4755, 7, 15, 0, 0, 4755, 908, 1, 0, 0, 0, 4756, 4757, 7, 17, 0, 0, 4757, 4758, 7, 15, 0, 0, 4758, 4759, 7, 24, 0, 0, 4759, 4760, 7, 19, 0, 0, 4760, 4761, 7, 13, 0, 0, 4761, 4762, 7, 16, 0, 0, 4762, 910, 1, 0, 0, 0, 4763, 4764, 7, 24, 0, 0, 4764, 4765, 7, 19, 0, 0, 4765, 4766, 7, 6, 0, 0, 4766, 4767, 7, 17, 0, 0, 4767, 4768, 7, 14, 0, 0, 4768, 4769, 7, 8, 0, 0, 4769, 912, 1, 0, 0, 0, 4770, 4771, 7, 15, 0, 0, 4771, 4772, 7, 10, 0, 0, 4772, 4773, 7, 16, 0, 0, 4773, 4774, 7, 20, 0, 0, 4774, 4775, 7, 19, 0, 0, 4775, 4776, 7, 12, 0, 0, 4776, 914, 1, 0, 0, 0, 4777, 4778, 7, 13, 0, 0, 4778, 4779, 7, 10, 0, 0, 4779, 4780, 7, 25, 0, 0, 4780, 4781, 7, 10, 0, 0, 4781, 4782, 7, 13, 0, 0, 4782, 4783, 7, 10, 0, 0, 4783, 4784, 7, 7, 0, 0, 4784, 4785, 7, 14, 0, 0, 4785, 4786, 7, 17, 0, 0, 4786, 4787, 7, 7, 0, 0, 4787, 4788, 7, 23, 0, 0, 4788, 916, 1, 0, 0, 0, 4789, 4790, 7, 7, 0, 0, 4790, 4791, 7, 10, 0, 0, 4791, 4792, 7, 28, 0, 0, 4792, 918, 1, 0, 0, 0, 4793, 4794, 7, 19, 0, 0, 4794, 4795, 7, 6, 0, 0, 4795, 4796, 7, 12, 0, 0, 4796, 920, 1, 0, 0, 0, 4797, 4798, 7, 27, 0, 0, 4798, 4799, 7, 5, 0, 0, 4799, 4800, 7, 6, 0, 0, 4800, 4801, 7, 22, 0, 0, 4801, 4802, 7, 10, 0, 0, 4802, 922, 1, 0, 0, 0, 4803, 4804, 7, 9, 0, 0, 4804, 4805, 7, 22, 0, 0, 4805, 4806, 7, 18, 0, 0, 4806, 4807, 7, 9, 0, 0, 4807, 4808, 7, 14, 0, 0, 4808, 4809, 7, 13, 0, 0, 4809, 4810, 7, 17, 0, 0, 4810, 4811, 7, 24, 0, 0, 4811, 4812, 7, 16, 0, 0, 4812, 4813, 7, 17, 0, 0, 4813, 4814, 7, 19, 0, 0, 4814, 4815, 7, 7, 0, 0, 4815, 924, 1, 0, 0, 0, 4816, 4817, 7, 24, 0, 0, 4817, 4818, 7, 22, 0, 0, 4818, 4819, 7, 18, 0, 0, 4819, 4820, 7, 6, 0, 0, 4820, 4821, 7, 17, 0, 0, 4821, 4822, 7, 14, 0, 0, 4822, 4823, 7, 5, 0, 0, 4823, 4824, 7, 16, 0, 0, 4824, 4825, 7, 17, 0, 0, 4825, 4826, 7, 19, 0, 0, 4826, 4827, 7, 7, 0, 0, 4827, 926, 1, 0, 0, 0, 4828, 4829, 7, 19, 0, 0, 4829, 4830, 7, 22, 0, 0, 4830, 4831, 7, 16, 0, 0, 4831, 928, 1, 0, 0, 0, 4832, 4833, 7, 10, 0, 0, 4833, 4834, 7, 7, 0, 0, 4834, 4835, 7, 12, 0, 0, 4835, 930, 1, 0, 0, 0, 4836, 4837, 7, 13, 0, 0, 4837, 4838, 7, 19, 0, 0, 4838, 4839, 7, 22, 0, 0, 4839, 4840, 7, 16, 0, 0, 4840, 4841, 7, 17, 0, 0, 4841, 4842, 7, 7, 0, 0, 4842, 4843, 7, 10, 0, 0, 4843, 4844, 7, 9, 0, 0, 4844, 932, 1, 0, 0, 0, 4845, 4846, 7, 9, 0, 0, 4846, 4847, 7, 14, 0, 0, 4847, 4848, 7, 20, 0, 0, 4848, 4849, 7, 10, 0, 0, 4849, 4850, 7, 15, 0, 0, 4850, 4851, 7, 5, 0, 0, 4851, 4852, 7, 9, 0, 0, 4852, 934, 1, 0, 0, 0, 4853, 4854, 7, 24, 0, 0, 4854, 4855, 7, 13, 0, 0, 4855, 4856, 7, 19, 0, 0, 4856, 4857, 7, 14, 0, 0, 4857, 4858, 7, 10, 0, 0, 4858, 4859, 7, 12, 0, 0, 4859, 4860, 7, 22, 0, 0, 4860, 4861, 7, 13, 0, 0, 4861, 4862, 7, 10, 0, 0, 4862, 4863, 7, 9, 0, 0, 4863, 936, 1, 0, 0, 0, 4864, 4865, 7, 17, 0, 0, 4865, 4866, 7, 7, 0, 0, 4866, 4867, 7, 24, 0, 0, 4867, 4868, 7, 22, 0, 0, 4868, 4869, 7, 16, 0, 0, 4869, 938, 1, 0, 0, 0, 4870, 4871, 7, 9, 0, 0, 4871, 4872, 7, 22, 0, 0, 4872, 4873, 7, 24, 0, 0, 4873, 4874, 7, 24, 0, 0, 4874, 4875, 7, 19, 0, 0, 4875, 4876, 7, 13, 0, 0, 4876, 4877, 7, 16, 0, 0, 4877, 940, 1, 0, 0, 0, 4878, 4879, 7, 24, 0, 0, 4879, 4880, 7, 5, 0, 0, 4880, 4881, 7, 13, 0, 0, 4881, 4882, 7, 5, 0, 0, 4882, 4883, 7, 6, 0, 0, 4883, 4884, 7, 6, 0, 0, 4884, 4885, 7, 10, 0, 0, 4885, 4886, 7, 6, 0, 0, 4886, 942, 1, 0, 0, 0, 4887, 4888, 7, 9, 0, 0, 4888, 4889, 7, 29, 0, 0, 4889, 4890, 7, 6, 0, 0, 4890, 944, 1, 0, 0, 0, 4891, 4892, 7, 12, 0, 0, 4892, 4893, 7, 10, 0, 0, 4893, 4894, 7, 24, 0, 0, 4894, 4895, 7, 10, 0, 0, 4895, 4896, 7, 7, 0, 0, 4896, 4897, 7, 12, 0, 0, 4897, 4898, 7, 9, 0, 0, 4898, 946, 1, 0, 0, 0, 4899, 4900, 7, 19, 0, 0, 4900, 4901, 7, 27, 0, 0, 4901, 4902, 7, 10, 0, 0, 4902, 4903, 7, 13, 0, 0, 4903, 4904, 7, 13, 0, 0, 4904, 4905, 7, 17, 0, 0, 4905, 4906, 7, 12, 0, 0, 4906, 4907, 7, 17, 0, 0, 4907, 4908, 7, 7, 0, 0, 4908, 4909, 7, 23, 0, 0, 4909, 948, 1, 0, 0, 0, 4910, 4911, 7, 14, 0, 0, 4911, 4912, 7, 19, 0, 0, 4912, 4913, 7, 7, 0, 0, 4913, 4914, 7, 25, 0, 0, 4914, 4915, 7, 6, 0, 0, 4915, 4916, 7, 17, 0, 0, 4916, 4917, 7, 14, 0, 0, 4917, 4918, 7, 16, 0, 0, 4918, 950, 1, 0, 0, 0, 4919, 4920, 7, 9, 0, 0, 4920, 4921, 7, 21, 0, 0, 4921, 4922, 7, 17, 0, 0, 4922, 4923, 7, 24, 0, 0, 4923, 952, 1, 0, 0, 0, 4924, 4925, 7, 6, 0, 0, 4925, 4926, 7, 19, 0, 0, 4926, 4927, 7, 14, 0, 0, 4927, 4928, 7, 21, 0, 0, 4928, 4929, 7, 10, 0, 0, 4929, 4930, 7, 12, 0, 0, 4930, 954, 1, 0, 0, 0, 4931, 4932, 7, 16, 0, 0, 4932, 4933, 7, 17, 0, 0, 4933, 4934, 7, 10, 0, 0, 4934, 4935, 7, 9, 0, 0, 4935, 956, 1, 0, 0, 0, 4936, 4937, 7, 13, 0, 0, 4937, 4938, 7, 19, 0, 0, 4938, 4939, 7, 6, 0, 0, 4939, 4940, 7, 6, 0, 0, 4940, 4941, 7, 22, 0, 0, 4941, 4942, 7, 24, 0, 0, 4942, 958, 1, 0, 0, 0, 4943, 4944, 7, 14, 0, 0, 4944, 4945, 7, 22, 0, 0, 4945, 4946, 7, 18, 0, 0, 4946, 4947, 7, 10, 0, 0, 4947, 960, 1, 0, 0, 0, 4948, 4949, 7, 23, 0, 0, 4949, 4950, 7, 13, 0, 0, 4950, 4951, 7, 19, 0, 0, 4951, 4952, 7, 22, 0, 0, 4952, 4953, 7, 24, 0, 0, 4953, 4954, 7, 17, 0, 0, 4954, 4955, 7, 7, 0, 0, 4955, 4956, 7, 23, 0, 0, 4956, 962, 1, 0, 0, 0, 4957, 4958, 7, 9, 0, 0, 4958, 4959, 7, 10, 0, 0, 4959, 4960, 7, 16, 0, 0, 4960, 4961, 7, 9, 0, 0, 4961, 964, 1, 0, 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, 4968, 7, 9, 0, 0, 4968, 4969, 7, 5, 0, 0, 4969, 4970, 7, 15, 0, 0, 4970, 4971, 7, 24, 0, 0, 4971, 4972, 7, 6, 0, 0, 4972, 4973, 7, 10, 0, 0, 4973, 966, 1, 0, 0, 0, 4974, 4975, 7, 19, 0, 0, 4975, 4976, 7, 13, 0, 0, 4976, 4977, 7, 12, 0, 0, 4977, 4978, 7, 17, 0, 0, 4978, 4979, 7, 7, 0, 0, 4979, 4980, 7, 5, 0, 0, 4980, 4981, 7, 6, 0, 0, 4981, 4982, 7, 17, 0, 0, 4982, 4983, 7, 16, 0, 0, 4983, 4984, 7, 8, 0, 0, 4984, 968, 1, 0, 0, 0, 4985, 4986, 7, 26, 0, 0, 4986, 4987, 7, 15, 0, 0, 4987, 4988, 7, 6, 0, 0, 4988, 4989, 7, 16, 0, 0, 4989, 4990, 7, 5, 0, 0, 4990, 4991, 7, 18, 0, 0, 4991, 4992, 7, 6, 0, 0, 4992, 4993, 7, 10, 0, 0, 4993, 970, 1, 0, 0, 0, 4994, 4995, 7, 14, 0, 0, 4995, 4996, 7, 19, 0, 0, 4996, 4997, 7, 6, 0, 0, 4997, 4998, 7, 22, 0, 0, 4998, 4999, 7, 15, 0, 0, 4999, 5000, 7, 7, 0, 0, 5000, 5001, 7, 9, 0, 0, 5001, 972, 1, 0, 0, 0, 5002, 5003, 7, 26, 0, 0, 5003, 5004, 7, 15, 0, 0, 5004, 5005, 7, 6, 0, 0, 5005, 5006, 7, 7, 0, 0, 5006, 5007, 7, 5, 0, 0, 5007, 5008, 7, 15, 0, 0, 5008, 5009, 7, 10, 0, 0, 5009, 5010, 7, 9, 0, 0, 5010, 5011, 7, 24, 0, 0, 5011, 5012, 7, 5, 0, 0, 5012, 5013, 7, 14, 0, 0, 5013, 5014, 7, 10, 0, 0, 5014, 5015, 7, 9, 0, 0, 5015, 974, 1, 0, 0, 0, 5016, 5017, 7, 13, 0, 0, 5017, 5018, 7, 19, 0, 0, 5018, 5019, 7, 28, 0, 0, 5019, 5020, 7, 16, 0, 0, 5020, 5021, 7, 8, 0, 0, 5021, 5022, 7, 24, 0, 0, 5022, 5023, 7, 10, 0, 0, 5023, 976, 1, 0, 0, 0, 5024, 5025, 7, 7, 0, 0, 5025, 5026, 7, 19, 0, 0, 5026, 5027, 7, 13, 0, 0, 5027, 5028, 7, 15, 0, 0, 5028, 5029, 7, 5, 0, 0, 5029, 5030, 7, 6, 0, 0, 5030, 5031, 7, 17, 0, 0, 5031, 5032, 7, 11, 0, 0, 5032, 5033, 7, 10, 0, 0, 5033, 5034, 7, 12, 0, 0, 5034, 978, 1, 0, 0, 0, 5035, 5036, 7, 28, 0, 0, 5036, 5037, 7, 17, 0, 0, 5037, 5038, 7, 16, 0, 0, 5038, 5039, 7, 20, 0, 0, 5039, 5040, 7, 17, 0, 0, 5040, 5041, 7, 7, 0, 0, 5041, 980, 1, 0, 0, 0, 5042, 5043, 7, 25, 0, 0, 5043, 5044, 7, 17, 0, 0, 5044, 5045, 7, 6, 0, 0, 5045, 5046, 7, 16, 0, 0, 5046, 5047, 7, 10, 0, 0, 5047, 5048, 7, 13, 0, 0, 5048, 982, 1, 0, 0, 0, 5049, 5050, 7, 23, 0, 0, 5050, 5051, 7, 13, 0, 0, 5051, 5052, 7, 19, 0, 0, 5052, 5053, 7, 22, 0, 0, 5053, 5054, 7, 24, 0, 0, 5054, 5055, 7, 9, 0, 0, 5055, 984, 1, 0, 0, 0, 5056, 5057, 7, 19, 0, 0, 5057, 5058, 7, 16, 0, 0, 5058, 5059, 7, 20, 0, 0, 5059, 5060, 7, 10, 0, 0, 5060, 5061, 7, 13, 0, 0, 5061, 5062, 7, 9, 0, 0, 5062, 986, 1, 0, 0, 0, 5063, 5064, 7, 7, 0, 0, 5064, 5065, 7, 25, 0, 0, 5065, 5066, 7, 14, 0, 0, 5066, 988, 1, 0, 0, 0, 5067, 5068, 7, 7, 0, 0, 5068, 5069, 7, 25, 0, 0, 5069, 5070, 7, 12, 0, 0, 5070, 990, 1, 0, 0, 0, 5071, 5072, 7, 7, 0, 0, 5072, 5073, 7, 25, 0, 0, 5073, 5074, 7, 21, 0, 0, 5074, 5075, 7, 14, 0, 0, 5075, 992, 1, 0, 0, 0, 5076, 5077, 7, 7, 0, 0, 5077, 5078, 7, 25, 0, 0, 5078, 5079, 7, 21, 0, 0, 5079, 5080, 7, 12, 0, 0, 5080, 994, 1, 0, 0, 0, 5081, 5082, 7, 22, 0, 0, 5082, 5083, 7, 10, 0, 0, 5083, 5084, 7, 9, 0, 0, 5084, 5085, 7, 14, 0, 0, 5085, 5086, 7, 5, 0, 0, 5086, 5087, 7, 24, 0, 0, 5087, 5088, 7, 10, 0, 0, 5088, 996, 1, 0, 0, 0, 5089, 5090, 7, 27, 0, 0, 5090, 5091, 7, 17, 0, 0, 5091, 5092, 7, 10, 0, 0, 5092, 5093, 7, 28, 0, 0, 5093, 5094, 7, 9, 0, 0, 5094, 998, 1, 0, 0, 0, 5095, 5096, 7, 7, 0, 0, 5096, 5097, 7, 19, 0, 0, 5097, 5098, 7, 13, 0, 0, 5098, 5099, 7, 15, 0, 0, 5099, 5100, 7, 5, 0, 0, 5100, 5101, 7, 6, 0, 0, 5101, 5102, 7, 17, 0, 0, 5102, 5103, 7, 11, 0, 0, 5103, 5104, 7, 10, 0, 0, 5104, 1000, 1, 0, 0, 0, 5105, 5106, 7, 12, 0, 0, 5106, 5107, 7, 22, 0, 0, 5107, 5108, 7, 15, 0, 0, 5108, 5109, 7, 24, 0, 0, 5109, 1002, 1, 0, 0, 0, 5110, 5111, 7, 24, 0, 0, 5111, 5112, 7, 13, 0, 0, 5112, 5113, 7, 17, 0, 0, 5113, 5114, 7, 7, 0, 0, 5114, 5115, 7, 16, 0, 0, 5115, 5116, 5, 95, 0, 0, 5116, 5117, 7, 9, 0, 0, 5117, 5118, 7, 16, 0, 0, 5118, 5119, 7, 13, 0, 0, 5119, 5120, 7, 17, 0, 0, 5120, 5121, 7, 14, 0, 0, 5121, 5122, 7, 16, 0, 0, 5122, 5123, 5, 95, 0, 0, 5123, 5124, 7, 24, 0, 0, 5124, 5125, 7, 5, 0, 0, 5125, 5126, 7, 13, 0, 0, 5126, 5127, 7, 5, 0, 0, 5127, 5128, 7, 15, 0, 0, 5128, 5129, 7, 9, 0, 0, 5129, 1004, 1, 0, 0, 0, 5130, 5131, 7, 27, 0, 0, 5131, 5132, 7, 5, 0, 0, 5132, 5133, 7, 13, 0, 0, 5133, 5134, 7, 17, 0, 0, 5134, 5135, 7, 5, 0, 0, 5135, 5136, 7, 18, 0, 0, 5136, 5137, 7, 6, 0, 0, 5137, 5138, 7, 10, 0, 0, 5138, 5139, 5, 95, 0, 0, 5139, 5140, 7, 14, 0, 0, 5140, 5141, 7, 19, 0, 0, 5141, 5142, 7, 7, 0, 0, 5142, 5143, 7, 25, 0, 0, 5143, 5144, 7, 6, 0, 0, 5144, 5145, 7, 17, 0, 0, 5145, 5146, 7, 14, 0, 0, 5146, 5147, 7, 16, 0, 0, 5147, 1006, 1, 0, 0, 0, 5148, 5149, 7, 10, 0, 0, 5149, 5150, 7, 13, 0, 0, 5150, 5151, 7, 13, 0, 0, 5151, 5152, 7, 19, 0, 0, 5152, 5153, 7, 13, 0, 0, 5153, 1008, 1, 0, 0, 0, 5154, 5155, 7, 22, 0, 0, 5155, 5156, 7, 9, 0, 0, 5156, 5157, 7, 10, 0, 0, 5157, 5158, 5, 95, 0, 0, 5158, 5159, 7, 27, 0, 0, 5159, 5160, 7, 5, 0, 0, 5160, 5161, 7, 13, 0, 0, 5161, 5162, 7, 17, 0, 0, 5162, 5163, 7, 5, 0, 0, 5163, 5164, 7, 18, 0, 0, 5164, 5165, 7, 6, 0, 0, 5165, 5166, 7, 10, 0, 0, 5166, 1010, 1, 0, 0, 0, 5167, 5168, 7, 22, 0, 0, 5168, 5169, 7, 9, 0, 0, 5169, 5170, 7, 10, 0, 0, 5170, 5171, 5, 95, 0, 0, 5171, 5172, 7, 14, 0, 0, 5172, 5173, 7, 19, 0, 0, 5173, 5174, 7, 6, 0, 0, 5174, 5175, 7, 22, 0, 0, 5175, 5176, 7, 15, 0, 0, 5176, 5177, 7, 7, 0, 0, 5177, 1012, 1, 0, 0, 0, 5178, 5179, 7, 5, 0, 0, 5179, 5180, 7, 6, 0, 0, 5180, 5181, 7, 17, 0, 0, 5181, 5182, 7, 5, 0, 0, 5182, 5183, 7, 9, 0, 0, 5183, 1014, 1, 0, 0, 0, 5184, 5185, 7, 14, 0, 0, 5185, 5186, 7, 19, 0, 0, 5186, 5187, 7, 7, 0, 0, 5187, 5188, 7, 9, 0, 0, 5188, 5189, 7, 16, 0, 0, 5189, 5190, 7, 5, 0, 0, 5190, 5191, 7, 7, 0, 0, 5191, 5192, 7, 16, 0, 0, 5192, 1016, 1, 0, 0, 0, 5193, 5194, 7, 24, 0, 0, 5194, 5195, 7, 10, 0, 0, 5195, 5196, 7, 13, 0, 0, 5196, 5197, 7, 25, 0, 0, 5197, 5198, 7, 19, 0, 0, 5198, 5199, 7, 13, 0, 0, 5199, 5200, 7, 15, 0, 0, 5200, 1018, 1, 0, 0, 0, 5201, 5202, 7, 23, 0, 0, 5202, 5203, 7, 10, 0, 0, 5203, 5204, 7, 16, 0, 0, 5204, 1020, 1, 0, 0, 0, 5205, 5206, 7, 12, 0, 0, 5206, 5207, 7, 17, 0, 0, 5207, 5208, 7, 5, 0, 0, 5208, 5209, 7, 23, 0, 0, 5209, 5210, 7, 7, 0, 0, 5210, 5211, 7, 19, 0, 0, 5211, 5212, 7, 9, 0, 0, 5212, 5213, 7, 16, 0, 0, 5213, 5214, 7, 17, 0, 0, 5214, 5215, 7, 14, 0, 0, 5215, 5216, 7, 9, 0, 0, 5216, 1022, 1, 0, 0, 0, 5217, 5218, 7, 9, 0, 0, 5218, 5219, 7, 16, 0, 0, 5219, 5220, 7, 5, 0, 0, 5220, 5221, 7, 14, 0, 0, 5221, 5222, 7, 21, 0, 0, 5222, 5223, 7, 10, 0, 0, 5223, 5224, 7, 12, 0, 0, 5224, 1024, 1, 0, 0, 0, 5225, 5226, 7, 10, 0, 0, 5226, 5227, 7, 6, 0, 0, 5227, 5228, 7, 9, 0, 0, 5228, 5229, 7, 17, 0, 0, 5229, 5230, 7, 25, 0, 0, 5230, 1026, 1, 0, 0, 0, 5231, 5232, 7, 28, 0, 0, 5232, 5233, 7, 20, 0, 0, 5233, 5234, 7, 17, 0, 0, 5234, 5235, 7, 6, 0, 0, 5235, 5236, 7, 10, 0, 0, 5236, 1028, 1, 0, 0, 0, 5237, 5238, 7, 13, 0, 0, 5238, 5239, 7, 10, 0, 0, 5239, 5240, 7, 27, 0, 0, 5240, 5241, 7, 10, 0, 0, 5241, 5242, 7, 13, 0, 0, 5242, 5243, 7, 9, 0, 0, 5243, 5244, 7, 10, 0, 0, 5244, 1030, 1, 0, 0, 0, 5245, 5246, 7, 25, 0, 0, 5246, 5247, 7, 19, 0, 0, 5247, 5248, 7, 13, 0, 0, 5248, 5249, 7, 10, 0, 0, 5249, 5250, 7, 5, 0, 0, 5250, 5251, 7, 14, 0, 0, 5251, 5252, 7, 20, 0, 0, 5252, 1032, 1, 0, 0, 0, 5253, 5254, 7, 9, 0, 0, 5254, 5255, 7, 6, 0, 0, 5255, 5256, 7, 17, 0, 0, 5256, 5257, 7, 14, 0, 0, 5257, 5258, 7, 10, 0, 0, 5258, 1034, 1, 0, 0, 0, 5259, 5260, 7, 10, 0, 0, 5260, 5261, 7, 26, 0, 0, 5261, 5262, 7, 17, 0, 0, 5262, 5263, 7, 16, 0, 0, 5263, 1036, 1, 0, 0, 0, 5264, 5265, 7, 13, 0, 0, 5265, 5266, 7, 10, 0, 0, 5266, 5267, 7, 16, 0, 0, 5267, 5268, 7, 22, 0, 0, 5268, 5269, 7, 13, 0, 0, 5269, 5270, 7, 7, 0, 0, 5270, 1038, 1, 0, 0, 0, 5271, 5272, 7, 29, 0, 0, 5272, 5273, 7, 22, 0, 0, 5273, 5274, 7, 10, 0, 0, 5274, 5275, 7, 13, 0, 0, 5275, 5276, 7, 8, 0, 0, 5276, 1040, 1, 0, 0, 0, 5277, 5278, 7, 13, 0, 0, 5278, 5279, 7, 5, 0, 0, 5279, 5280, 7, 17, 0, 0, 5280, 5281, 7, 9, 0, 0, 5281, 5282, 7, 10, 0, 0, 5282, 1042, 1, 0, 0, 0, 5283, 5284, 7, 9, 0, 0, 5284, 5285, 7, 29, 0, 0, 5285, 5286, 7, 6, 0, 0, 5286, 5287, 7, 9, 0, 0, 5287, 5288, 7, 16, 0, 0, 5288, 5289, 7, 5, 0, 0, 5289, 5290, 7, 16, 0, 0, 5290, 5291, 7, 10, 0, 0, 5291, 1044, 1, 0, 0, 0, 5292, 5293, 7, 12, 0, 0, 5293, 5294, 7, 10, 0, 0, 5294, 5295, 7, 18, 0, 0, 5295, 5296, 7, 22, 0, 0, 5296, 5297, 7, 23, 0, 0, 5297, 1046, 1, 0, 0, 0, 5298, 5299, 7, 6, 0, 0, 5299, 5300, 7, 19, 0, 0, 5300, 5301, 7, 23, 0, 0, 5301, 1048, 1, 0, 0, 0, 5302, 5303, 7, 17, 0, 0, 5303, 5304, 7, 7, 0, 0, 5304, 5305, 7, 25, 0, 0, 5305, 5306, 7, 19, 0, 0, 5306, 1050, 1, 0, 0, 0, 5307, 5308, 7, 7, 0, 0, 5308, 5309, 7, 19, 0, 0, 5309, 5310, 7, 16, 0, 0, 5310, 5311, 7, 17, 0, 0, 5311, 5312, 7, 14, 0, 0, 5312, 5313, 7, 10, 0, 0, 5313, 1052, 1, 0, 0, 0, 5314, 5315, 7, 28, 0, 0, 5315, 5316, 7, 5, 0, 0, 5316, 5317, 7, 13, 0, 0, 5317, 5318, 7, 7, 0, 0, 5318, 5319, 7, 17, 0, 0, 5319, 5320, 7, 7, 0, 0, 5320, 5321, 7, 23, 0, 0, 5321, 1054, 1, 0, 0, 0, 5322, 5323, 7, 10, 0, 0, 5323, 5324, 7, 26, 0, 0, 5324, 5325, 7, 14, 0, 0, 5325, 5326, 7, 10, 0, 0, 5326, 5327, 7, 24, 0, 0, 5327, 5328, 7, 16, 0, 0, 5328, 5329, 7, 17, 0, 0, 5329, 5330, 7, 19, 0, 0, 5330, 5331, 7, 7, 0, 0, 5331, 1056, 1, 0, 0, 0, 5332, 5333, 7, 5, 0, 0, 5333, 5334, 7, 9, 0, 0, 5334, 5335, 7, 9, 0, 0, 5335, 5336, 7, 10, 0, 0, 5336, 5337, 7, 13, 0, 0, 5337, 5338, 7, 16, 0, 0, 5338, 1058, 1, 0, 0, 0, 5339, 5340, 7, 6, 0, 0, 5340, 5341, 7, 19, 0, 0, 5341, 5342, 7, 19, 0, 0, 5342, 5343, 7, 24, 0, 0, 5343, 1060, 1, 0, 0, 0, 5344, 5345, 7, 19, 0, 0, 5345, 5346, 7, 24, 0, 0, 5346, 5347, 7, 10, 0, 0, 5347, 5348, 7, 7, 0, 0, 5348, 1062, 1, 0, 0, 0, 5349, 5350, 7, 5, 0, 0, 5350, 5351, 7, 18, 0, 0, 5351, 5352, 7, 9, 0, 0, 5352, 1064, 1, 0, 0, 0, 5353, 5354, 7, 14, 0, 0, 5354, 5355, 7, 18, 0, 0, 5355, 5356, 7, 13, 0, 0, 5356, 5357, 7, 16, 0, 0, 5357, 1066, 1, 0, 0, 0, 5358, 5359, 7, 14, 0, 0, 5359, 5360, 7, 10, 0, 0, 5360, 5361, 7, 17, 0, 0, 5361, 5362, 7, 6, 0, 0, 5362, 1068, 1, 0, 0, 0, 5363, 5364, 7, 14, 0, 0, 5364, 5365, 7, 10, 0, 0, 5365, 5366, 7, 17, 0, 0, 5366, 5367, 7, 6, 0, 0, 5367, 5368, 7, 17, 0, 0, 5368, 5369, 7, 7, 0, 0, 5369, 5370, 7, 23, 0, 0, 5370, 1070, 1, 0, 0, 0, 5371, 5372, 7, 12, 0, 0, 5372, 5373, 7, 10, 0, 0, 5373, 5374, 7, 23, 0, 0, 5374, 5375, 7, 13, 0, 0, 5375, 5376, 7, 10, 0, 0, 5376, 5377, 7, 10, 0, 0, 5377, 5378, 7, 9, 0, 0, 5378, 1072, 1, 0, 0, 0, 5379, 5380, 7, 12, 0, 0, 5380, 5381, 7, 17, 0, 0, 5381, 5382, 7, 27, 0, 0, 5382, 1074, 1, 0, 0, 0, 5383, 5384, 7, 10, 0, 0, 5384, 5385, 7, 26, 0, 0, 5385, 5386, 7, 24, 0, 0, 5386, 1076, 1, 0, 0, 0, 5387, 5388, 7, 25, 0, 0, 5388, 5389, 7, 5, 0, 0, 5389, 5390, 7, 14, 0, 0, 5390, 5391, 7, 16, 0, 0, 5391, 5392, 7, 19, 0, 0, 5392, 5393, 7, 13, 0, 0, 5393, 5394, 7, 17, 0, 0, 5394, 5395, 7, 5, 0, 0, 5395, 5396, 7, 6, 0, 0, 5396, 1078, 1, 0, 0, 0, 5397, 5398, 7, 25, 0, 0, 5398, 5399, 7, 6, 0, 0, 5399, 5400, 7, 19, 0, 0, 5400, 5401, 7, 19, 0, 0, 5401, 5402, 7, 13, 0, 0, 5402, 1080, 1, 0, 0, 0, 5403, 5404, 7, 23, 0, 0, 5404, 5405, 7, 14, 0, 0, 5405, 5406, 7, 12, 0, 0, 5406, 1082, 1, 0, 0, 0, 5407, 5408, 7, 6, 0, 0, 5408, 5409, 7, 14, 0, 0, 5409, 5410, 7, 15, 0, 0, 5410, 1084, 1, 0, 0, 0, 5411, 5412, 7, 6, 0, 0, 5412, 5413, 7, 7, 0, 0, 5413, 1086, 1, 0, 0, 0, 5414, 5415, 7, 6, 0, 0, 5415, 5416, 7, 19, 0, 0, 5416, 5417, 7, 23, 0, 0, 5417, 5418, 5, 49, 0, 0, 5418, 5419, 5, 48, 0, 0, 5419, 1088, 1, 0, 0, 0, 5420, 5421, 7, 15, 0, 0, 5421, 5422, 7, 17, 0, 0, 5422, 5423, 7, 7, 0, 0, 5423, 5424, 5, 95, 0, 0, 5424, 5425, 7, 9, 0, 0, 5425, 5426, 7, 14, 0, 0, 5426, 5427, 7, 5, 0, 0, 5427, 5428, 7, 6, 0, 0, 5428, 5429, 7, 10, 0, 0, 5429, 1090, 1, 0, 0, 0, 5430, 5431, 7, 15, 0, 0, 5431, 5432, 7, 19, 0, 0, 5432, 5433, 7, 12, 0, 0, 5433, 1092, 1, 0, 0, 0, 5434, 5435, 7, 24, 0, 0, 5435, 5436, 7, 17, 0, 0, 5436, 1094, 1, 0, 0, 0, 5437, 5438, 7, 24, 0, 0, 5438, 5439, 7, 19, 0, 0, 5439, 5440, 7, 28, 0, 0, 5440, 5441, 7, 10, 0, 0, 5441, 5442, 7, 13, 0, 0, 5442, 1096, 1, 0, 0, 0, 5443, 5444, 7, 13, 0, 0, 5444, 5445, 7, 5, 0, 0, 5445, 5446, 7, 12, 0, 0, 5446, 5447, 7, 17, 0, 0, 5447, 5448, 7, 5, 0, 0, 5448, 5449, 7, 7, 0, 0, 5449, 5450, 7, 9, 0, 0, 5450, 1098, 1, 0, 0, 0, 5451, 5452, 7, 13, 0, 0, 5452, 5453, 7, 19, 0, 0, 5453, 5454, 7, 22, 0, 0, 5454, 5455, 7, 7, 0, 0, 5455, 5456, 7, 12, 0, 0, 5456, 1100, 1, 0, 0, 0, 5457, 5458, 7, 9, 0, 0, 5458, 5459, 7, 14, 0, 0, 5459, 5460, 7, 5, 0, 0, 5460, 5461, 7, 6, 0, 0, 5461, 5462, 7, 10, 0, 0, 5462, 1102, 1, 0, 0, 0, 5463, 5464, 7, 9, 0, 0, 5464, 5465, 7, 17, 0, 0, 5465, 5466, 7, 23, 0, 0, 5466, 5467, 7, 7, 0, 0, 5467, 1104, 1, 0, 0, 0, 5468, 5469, 7, 9, 0, 0, 5469, 5470, 7, 29, 0, 0, 5470, 5471, 7, 13, 0, 0, 5471, 5472, 7, 16, 0, 0, 5472, 1106, 1, 0, 0, 0, 5473, 5474, 7, 16, 0, 0, 5474, 5475, 7, 13, 0, 0, 5475, 5476, 7, 17, 0, 0, 5476, 5477, 7, 15, 0, 0, 5477, 5478, 5, 95, 0, 0, 5478, 5479, 7, 9, 0, 0, 5479, 5480, 7, 14, 0, 0, 5480, 5481, 7, 5, 0, 0, 5481, 5482, 7, 6, 0, 0, 5482, 5483, 7, 10, 0, 0, 5483, 1108, 1, 0, 0, 0, 5484, 5485, 7, 16, 0, 0, 5485, 5486, 7, 13, 0, 0, 5486, 5487, 7, 22, 0, 0, 5487, 5488, 7, 7, 0, 0, 5488, 5489, 7, 14, 0, 0, 5489, 1110, 1, 0, 0, 0, 5490, 5491, 7, 28, 0, 0, 5491, 5492, 7, 17, 0, 0, 5492, 5493, 7, 12, 0, 0, 5493, 5494, 7, 16, 0, 0, 5494, 5495, 7, 20, 0, 0, 5495, 5496, 5, 95, 0, 0, 5496, 5497, 7, 18, 0, 0, 5497, 5498, 7, 22, 0, 0, 5498, 5499, 7, 14, 0, 0, 5499, 5500, 7, 21, 0, 0, 5500, 5501, 7, 10, 0, 0, 5501, 5502, 7, 16, 0, 0, 5502, 1112, 1, 0, 0, 0, 5503, 5504, 7, 13, 0, 0, 5504, 5505, 7, 5, 0, 0, 5505, 5506, 7, 7, 0, 0, 5506, 5507, 7, 12, 0, 0, 5507, 5508, 7, 19, 0, 0, 5508, 5509, 7, 15, 0, 0, 5509, 1114, 1, 0, 0, 0, 5510, 5511, 7, 9, 0, 0, 5511, 5512, 7, 10, 0, 0, 5512, 5513, 7, 16, 0, 0, 5513, 5514, 7, 9, 0, 0, 5514, 5515, 7, 10, 0, 0, 5515, 5516, 7, 10, 0, 0, 5516, 5517, 7, 12, 0, 0, 5517, 1116, 1, 0, 0, 0, 5518, 5519, 7, 5, 0, 0, 5519, 5520, 7, 14, 0, 0, 5520, 5521, 7, 19, 0, 0, 5521, 5522, 7, 9, 0, 0, 5522, 1118, 1, 0, 0, 0, 5523, 5524, 7, 5, 0, 0, 5524, 5525, 7, 14, 0, 0, 5525, 5526, 7, 19, 0, 0, 5526, 5527, 7, 9, 0, 0, 5527, 5528, 7, 12, 0, 0, 5528, 1120, 1, 0, 0, 0, 5529, 5530, 7, 5, 0, 0, 5530, 5531, 7, 9, 0, 0, 5531, 5532, 7, 17, 0, 0, 5532, 5533, 7, 7, 0, 0, 5533, 1122, 1, 0, 0, 0, 5534, 5535, 7, 5, 0, 0, 5535, 5536, 7, 9, 0, 0, 5536, 5537, 7, 17, 0, 0, 5537, 5538, 7, 7, 0, 0, 5538, 5539, 7, 12, 0, 0, 5539, 1124, 1, 0, 0, 0, 5540, 5541, 7, 5, 0, 0, 5541, 5542, 7, 16, 0, 0, 5542, 5543, 7, 5, 0, 0, 5543, 5544, 7, 7, 0, 0, 5544, 1126, 1, 0, 0, 0, 5545, 5546, 7, 5, 0, 0, 5546, 5547, 7, 16, 0, 0, 5547, 5548, 7, 5, 0, 0, 5548, 5549, 7, 7, 0, 0, 5549, 5550, 7, 12, 0, 0, 5550, 1128, 1, 0, 0, 0, 5551, 5552, 7, 5, 0, 0, 5552, 5553, 7, 16, 0, 0, 5553, 5554, 7, 5, 0, 0, 5554, 5555, 7, 7, 0, 0, 5555, 5556, 5, 50, 0, 0, 5556, 1130, 1, 0, 0, 0, 5557, 5558, 7, 5, 0, 0, 5558, 5559, 7, 16, 0, 0, 5559, 5560, 7, 5, 0, 0, 5560, 5561, 7, 7, 0, 0, 5561, 5562, 5, 50, 0, 0, 5562, 5563, 7, 12, 0, 0, 5563, 1132, 1, 0, 0, 0, 5564, 5565, 7, 14, 0, 0, 5565, 5566, 7, 19, 0, 0, 5566, 5567, 7, 9, 0, 0, 5567, 1134, 1, 0, 0, 0, 5568, 5569, 7, 14, 0, 0, 5569, 5570, 7, 19, 0, 0, 5570, 5571, 7, 9, 0, 0, 5571, 5572, 7, 12, 0, 0, 5572, 1136, 1, 0, 0, 0, 5573, 5574, 7, 14, 0, 0, 5574, 5575, 7, 19, 0, 0, 5575, 5576, 7, 16, 0, 0, 5576, 1138, 1, 0, 0, 0, 5577, 5578, 7, 14, 0, 0, 5578, 5579, 7, 19, 0, 0, 5579, 5580, 7, 16, 0, 0, 5580, 5581, 7, 12, 0, 0, 5581, 1140, 1, 0, 0, 0, 5582, 5583, 7, 9, 0, 0, 5583, 5584, 7, 17, 0, 0, 5584, 5585, 7, 7, 0, 0, 5585, 1142, 1, 0, 0, 0, 5586, 5587, 7, 9, 0, 0, 5587, 5588, 7, 17, 0, 0, 5588, 5589, 7, 7, 0, 0, 5589, 5590, 7, 12, 0, 0, 5590, 1144, 1, 0, 0, 0, 5591, 5592, 7, 16, 0, 0, 5592, 5593, 7, 5, 0, 0, 5593, 5594, 7, 7, 0, 0, 5594, 1146, 1, 0, 0, 0, 5595, 5596, 7, 16, 0, 0, 5596, 5597, 7, 5, 0, 0, 5597, 5598, 7, 7, 0, 0, 5598, 5599, 7, 12, 0, 0, 5599, 1148, 1, 0, 0, 0, 5600, 5601, 7, 9, 0, 0, 5601, 5602, 7, 17, 0, 0, 5602, 5603, 7, 7, 0, 0, 5603, 5604, 7, 20, 0, 0, 5604, 1150, 1, 0, 0, 0, 5605, 5606, 7, 14, 0, 0, 5606, 5607, 7, 19, 0, 0, 5607, 5608, 7, 9, 0, 0, 5608, 5609, 7, 20, 0, 0, 5609, 1152, 1, 0, 0, 0, 5610, 5611, 7, 16, 0, 0, 5611, 5612, 7, 5, 0, 0, 5612, 5613, 7, 7, 0, 0, 5613, 5614, 7, 20, 0, 0, 5614, 1154, 1, 0, 0, 0, 5615, 5616, 7, 5, 0, 0, 5616, 5617, 7, 9, 0, 0, 5617, 5618, 7, 17, 0, 0, 5618, 5619, 7, 7, 0, 0, 5619, 5620, 7, 20, 0, 0, 5620, 1156, 1, 0, 0, 0, 5621, 5622, 7, 5, 0, 0, 5622, 5623, 7, 14, 0, 0, 5623, 5624, 7, 19, 0, 0, 5624, 5625, 7, 9, 0, 0, 5625, 5626, 7, 20, 0, 0, 5626, 1158, 1, 0, 0, 0, 5627, 5628, 7, 5, 0, 0, 5628, 5629, 7, 16, 0, 0, 5629, 5630, 7, 5, 0, 0, 5630, 5631, 7, 7, 0, 0, 5631, 5632, 7, 20, 0, 0, 5632, 1160, 1, 0, 0, 0, 5633, 5634, 7, 18, 0, 0, 5634, 5635, 7, 17, 0, 0, 5635, 5636, 7, 16, 0, 0, 5636, 5637, 5, 95, 0, 0, 5637, 5638, 7, 6, 0, 0, 5638, 5639, 7, 10, 0, 0, 5639, 5640, 7, 7, 0, 0, 5640, 5641, 7, 23, 0, 0, 5641, 5642, 7, 16, 0, 0, 5642, 5643, 7, 20, 0, 0, 5643, 1162, 1, 0, 0, 0, 5644, 5645, 7, 14, 0, 0, 5645, 5646, 7, 20, 0, 0, 5646, 5647, 7, 5, 0, 0, 5647, 5648, 7, 13, 0, 0, 5648, 5649, 5, 95, 0, 0, 5649, 5650, 7, 6, 0, 0, 5650, 5651, 7, 10, 0, 0, 5651, 5652, 7, 7, 0, 0, 5652, 5653, 7, 23, 0, 0, 5653, 5654, 7, 16, 0, 0, 5654, 5655, 7, 20, 0, 0, 5655, 1164, 1, 0, 0, 0, 5656, 5657, 7, 14, 0, 0, 5657, 5658, 7, 20, 0, 0, 5658, 5659, 7, 5, 0, 0, 5659, 5660, 7, 13, 0, 0, 5660, 5661, 7, 5, 0, 0, 5661, 5662, 7, 14, 0, 0, 5662, 5663, 7, 16, 0, 0, 5663, 5664, 7, 10, 0, 0, 5664, 5665, 7, 13, 0, 0, 5665, 5666, 5, 95, 0, 0, 5666, 5667, 7, 6, 0, 0, 5667, 5668, 7, 10, 0, 0, 5668, 5669, 7, 7, 0, 0, 5669, 5670, 7, 23, 0, 0, 5670, 5671, 7, 16, 0, 0, 5671, 5672, 7, 20, 0, 0, 5672, 1166, 1, 0, 0, 0, 5673, 5674, 7, 6, 0, 0, 5674, 5675, 7, 19, 0, 0, 5675, 5676, 7, 28, 0, 0, 5676, 5677, 7, 10, 0, 0, 5677, 5678, 7, 13, 0, 0, 5678, 1168, 1, 0, 0, 0, 5679, 5680, 7, 19, 0, 0, 5680, 5681, 7, 14, 0, 0, 5681, 5682, 7, 16, 0, 0, 5682, 5683, 7, 10, 0, 0, 5683, 5684, 7, 16, 0, 0, 5684, 5685, 5, 95, 0, 0, 5685, 5686, 7, 6, 0, 0, 5686, 5687, 7, 10, 0, 0, 5687, 5688, 7, 7, 0, 0, 5688, 5689, 7, 23, 0, 0, 5689, 5690, 7, 16, 0, 0, 5690, 5691, 7, 20, 0, 0, 5691, 1170, 1, 0, 0, 0, 5692, 5693, 7, 22, 0, 0, 5693, 5694, 7, 24, 0, 0, 5694, 5695, 7, 24, 0, 0, 5695, 5696, 7, 10, 0, 0, 5696, 5697, 7, 13, 0, 0, 5697, 1172, 1, 0, 0, 0, 5698, 5699, 7, 5, 0, 0, 5699, 5700, 7, 9, 0, 0, 5700, 5701, 7, 14, 0, 0, 5701, 5702, 7, 17, 0, 0, 5702, 5703, 7, 17, 0, 0, 5703, 1174, 1, 0, 0, 0, 5704, 5705, 7, 18, 0, 0, 5705, 5706, 7, 16, 0, 0, 5706, 5707, 7, 13, 0, 0, 5707, 5708, 7, 17, 0, 0, 5708, 5709, 7, 15, 0, 0, 5709, 1176, 1, 0, 0, 0, 5710, 5711, 7, 14, 0, 0, 5711, 5712, 7, 20, 0, 0, 5712, 5713, 7, 13, 0, 0, 5713, 1178, 1, 0, 0, 0, 5714, 5715, 7, 14, 0, 0, 5715, 5716, 7, 19, 0, 0, 5716, 5717, 7, 7, 0, 0, 5717, 5718, 7, 14, 0, 0, 5718, 5719, 7, 5, 0, 0, 5719, 5720, 7, 16, 0, 0, 5720, 1180, 1, 0, 0, 0, 5721, 5722, 7, 14, 0, 0, 5722, 5723, 7, 19, 0, 0, 5723, 5724, 7, 7, 0, 0, 5724, 5725, 7, 14, 0, 0, 5725, 5726, 7, 5, 0, 0, 5726, 5727, 7, 16, 0, 0, 5727, 5728, 5, 95, 0, 0, 5728, 5729, 7, 28, 0, 0, 5729, 5730, 7, 9, 0, 0, 5730, 1182, 1, 0, 0, 0, 5731, 5732, 7, 25, 0, 0, 5732, 5733, 7, 19, 0, 0, 5733, 5734, 7, 13, 0, 0, 5734, 5735, 7, 15, 0, 0, 5735, 5736, 7, 5, 0, 0, 5736, 5737, 7, 16, 0, 0, 5737, 1184, 1, 0, 0, 0, 5738, 5739, 7, 17, 0, 0, 5739, 5740, 7, 7, 0, 0, 5740, 5741, 7, 17, 0, 0, 5741, 5742, 7, 16, 0, 0, 5742, 5743, 7, 14, 0, 0, 5743, 5744, 7, 5, 0, 0, 5744, 5745, 7, 24, 0, 0, 5745, 1186, 1, 0, 0, 0, 5746, 5747, 7, 6, 0, 0, 5747, 5748, 7, 10, 0, 0, 5748, 5749, 7, 7, 0, 0, 5749, 5750, 7, 23, 0, 0, 5750, 5751, 7, 16, 0, 0, 5751, 5752, 7, 20, 0, 0, 5752, 1188, 1, 0, 0, 0, 5753, 5754, 7, 6, 0, 0, 5754, 5755, 7, 24, 0, 0, 5755, 5756, 7, 5, 0, 0, 5756, 5757, 7, 12, 0, 0, 5757, 1190, 1, 0, 0, 0, 5758, 5759, 7, 6, 0, 0, 5759, 5760, 7, 16, 0, 0, 5760, 5761, 7, 13, 0, 0, 5761, 5762, 7, 17, 0, 0, 5762, 5763, 7, 15, 0, 0, 5763, 1192, 1, 0, 0, 0, 5764, 5765, 7, 15, 0, 0, 5765, 5766, 7, 12, 0, 0, 5766, 5767, 5, 53, 0, 0, 5767, 1194, 1, 0, 0, 0, 5768, 5769, 7, 24, 0, 0, 5769, 5770, 7, 5, 0, 0, 5770, 5771, 7, 13, 0, 0, 5771, 5772, 7, 9, 0, 0, 5772, 5773, 7, 10, 0, 0, 5773, 5774, 5, 95, 0, 0, 5774, 5775, 7, 17, 0, 0, 5775, 5776, 7, 12, 0, 0, 5776, 5777, 7, 10, 0, 0, 5777, 5778, 7, 7, 0, 0, 5778, 5779, 7, 16, 0, 0, 5779, 1196, 1, 0, 0, 0, 5780, 5781, 7, 24, 0, 0, 5781, 5782, 7, 23, 0, 0, 5782, 5783, 5, 95, 0, 0, 5783, 5784, 7, 14, 0, 0, 5784, 5785, 7, 6, 0, 0, 5785, 5786, 7, 17, 0, 0, 5786, 5787, 7, 10, 0, 0, 5787, 5788, 7, 7, 0, 0, 5788, 5789, 7, 16, 0, 0, 5789, 5790, 5, 95, 0, 0, 5790, 5791, 7, 10, 0, 0, 5791, 5792, 7, 7, 0, 0, 5792, 5793, 7, 14, 0, 0, 5793, 5794, 7, 19, 0, 0, 5794, 5795, 7, 12, 0, 0, 5795, 5796, 7, 17, 0, 0, 5796, 5797, 7, 7, 0, 0, 5797, 5798, 7, 23, 0, 0, 5798, 1198, 1, 0, 0, 0, 5799, 5800, 7, 29, 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, 17, 0, 0, 5806, 5807, 7, 12, 0, 0, 5807, 5808, 7, 10, 0, 0, 5808, 5809, 7, 7, 0, 0, 5809, 5810, 7, 16, 0, 0, 5810, 1200, 1, 0, 0, 0, 5811, 5812, 7, 29, 0, 0, 5812, 5813, 7, 22, 0, 0, 5813, 5814, 7, 19, 0, 0, 5814, 5815, 7, 16, 0, 0, 5815, 5816, 7, 10, 0, 0, 5816, 5817, 5, 95, 0, 0, 5817, 5818, 7, 6, 0, 0, 5818, 5819, 7, 17, 0, 0, 5819, 5820, 7, 16, 0, 0, 5820, 5821, 7, 10, 0, 0, 5821, 5822, 7, 13, 0, 0, 5822, 5823, 7, 5, 0, 0, 5823, 5824, 7, 6, 0, 0, 5824, 1202, 1, 0, 0, 0, 5825, 5826, 7, 29, 0, 0, 5826, 5827, 7, 22, 0, 0, 5827, 5828, 7, 19, 0, 0, 5828, 5829, 7, 16, 0, 0, 5829, 5830, 7, 10, 0, 0, 5830, 5831, 5, 95, 0, 0, 5831, 5832, 7, 7, 0, 0, 5832, 5833, 7, 22, 0, 0, 5833, 5834, 7, 6, 0, 0, 5834, 5835, 7, 6, 0, 0, 5835, 5836, 7, 5, 0, 0, 5836, 5837, 7, 18, 0, 0, 5837, 5838, 7, 6, 0, 0, 5838, 5839, 7, 10, 0, 0, 5839, 1204, 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, 14, 0, 0, 5848, 5849, 7, 19, 0, 0, 5849, 5850, 7, 22, 0, 0, 5850, 5851, 7, 7, 0, 0, 5851, 5852, 7, 16, 0, 0, 5852, 1206, 1, 0, 0, 0, 5853, 5854, 7, 13, 0, 0, 5854, 5855, 7, 10, 0, 0, 5855, 5856, 7, 23, 0, 0, 5856, 5857, 7, 10, 0, 0, 5857, 5858, 7, 26, 0, 0, 5858, 5859, 7, 24, 0, 0, 5859, 5860, 5, 95, 0, 0, 5860, 5861, 7, 17, 0, 0, 5861, 5862, 7, 7, 0, 0, 5862, 5863, 7, 9, 0, 0, 5863, 5864, 7, 16, 0, 0, 5864, 5865, 7, 13, 0, 0, 5865, 1208, 1, 0, 0, 0, 5866, 5867, 7, 13, 0, 0, 5867, 5868, 7, 10, 0, 0, 5868, 5869, 7, 23, 0, 0, 5869, 5870, 7, 10, 0, 0, 5870, 5871, 7, 26, 0, 0, 5871, 5872, 7, 24, 0, 0, 5872, 5873, 5, 95, 0, 0, 5873, 5874, 7, 6, 0, 0, 5874, 5875, 7, 17, 0, 0, 5875, 5876, 7, 21, 0, 0, 5876, 5877, 7, 10, 0, 0, 5877, 1210, 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, 15, 0, 0, 5886, 5887, 7, 5, 0, 0, 5887, 5888, 7, 16, 0, 0, 5888, 5889, 7, 14, 0, 0, 5889, 5890, 7, 20, 0, 0, 5890, 1212, 1, 0, 0, 0, 5891, 5892, 7, 13, 0, 0, 5892, 5893, 7, 10, 0, 0, 5893, 5894, 7, 23, 0, 0, 5894, 5895, 7, 10, 0, 0, 5895, 5896, 7, 26, 0, 0, 5896, 5897, 7, 24, 0, 0, 5897, 5898, 5, 95, 0, 0, 5898, 5899, 7, 15, 0, 0, 5899, 5900, 7, 5, 0, 0, 5900, 5901, 7, 16, 0, 0, 5901, 5902, 7, 14, 0, 0, 5902, 5903, 7, 20, 0, 0, 5903, 5904, 7, 10, 0, 0, 5904, 5905, 7, 9, 0, 0, 5905, 1214, 1, 0, 0, 0, 5906, 5907, 7, 13, 0, 0, 5907, 5908, 7, 10, 0, 0, 5908, 5909, 7, 23, 0, 0, 5909, 5910, 7, 10, 0, 0, 5910, 5911, 7, 26, 0, 0, 5911, 5912, 7, 24, 0, 0, 5912, 5913, 5, 95, 0, 0, 5913, 5914, 7, 13, 0, 0, 5914, 5915, 7, 10, 0, 0, 5915, 5916, 7, 24, 0, 0, 5916, 5917, 7, 6, 0, 0, 5917, 5918, 7, 5, 0, 0, 5918, 5919, 7, 14, 0, 0, 5919, 5920, 7, 10, 0, 0, 5920, 1216, 1, 0, 0, 0, 5921, 5922, 7, 13, 0, 0, 5922, 5923, 7, 10, 0, 0, 5923, 5924, 7, 23, 0, 0, 5924, 5925, 7, 10, 0, 0, 5925, 5926, 7, 26, 0, 0, 5926, 5927, 7, 24, 0, 0, 5927, 5928, 5, 95, 0, 0, 5928, 5929, 7, 9, 0, 0, 5929, 5930, 7, 24, 0, 0, 5930, 5931, 7, 6, 0, 0, 5931, 5932, 7, 17, 0, 0, 5932, 5933, 7, 16, 0, 0, 5933, 5934, 5, 95, 0, 0, 5934, 5935, 7, 16, 0, 0, 5935, 5936, 7, 19, 0, 0, 5936, 5937, 5, 95, 0, 0, 5937, 5938, 7, 5, 0, 0, 5938, 5939, 7, 13, 0, 0, 5939, 5940, 7, 13, 0, 0, 5940, 5941, 7, 5, 0, 0, 5941, 5942, 7, 8, 0, 0, 5942, 1218, 1, 0, 0, 0, 5943, 5944, 7, 13, 0, 0, 5944, 5945, 7, 10, 0, 0, 5945, 5946, 7, 23, 0, 0, 5946, 5947, 7, 10, 0, 0, 5947, 5948, 7, 26, 0, 0, 5948, 5949, 7, 24, 0, 0, 5949, 5950, 5, 95, 0, 0, 5950, 5951, 7, 9, 0, 0, 5951, 5952, 7, 24, 0, 0, 5952, 5953, 7, 6, 0, 0, 5953, 5954, 7, 17, 0, 0, 5954, 5955, 7, 16, 0, 0, 5955, 5956, 5, 95, 0, 0, 5956, 5957, 7, 16, 0, 0, 5957, 5958, 7, 19, 0, 0, 5958, 5959, 5, 95, 0, 0, 5959, 5960, 7, 16, 0, 0, 5960, 5961, 7, 5, 0, 0, 5961, 5962, 7, 18, 0, 0, 5962, 5963, 7, 6, 0, 0, 5963, 5964, 7, 10, 0, 0, 5964, 1220, 1, 0, 0, 0, 5965, 5966, 7, 13, 0, 0, 5966, 5967, 7, 10, 0, 0, 5967, 5968, 7, 23, 0, 0, 5968, 5969, 7, 10, 0, 0, 5969, 5970, 7, 26, 0, 0, 5970, 5971, 7, 24, 0, 0, 5971, 5972, 5, 95, 0, 0, 5972, 5973, 7, 9, 0, 0, 5973, 5974, 7, 22, 0, 0, 5974, 5975, 7, 18, 0, 0, 5975, 5976, 7, 9, 0, 0, 5976, 5977, 7, 16, 0, 0, 5977, 5978, 7, 13, 0, 0, 5978, 1222, 1, 0, 0, 0, 5979, 5980, 7, 13, 0, 0, 5980, 5981, 7, 10, 0, 0, 5981, 5982, 7, 24, 0, 0, 5982, 5983, 7, 10, 0, 0, 5983, 5984, 7, 5, 0, 0, 5984, 5985, 7, 16, 0, 0, 5985, 1224, 1, 0, 0, 0, 5986, 5987, 7, 13, 0, 0, 5987, 5988, 7, 24, 0, 0, 5988, 5989, 7, 5, 0, 0, 5989, 5990, 7, 12, 0, 0, 5990, 1226, 1, 0, 0, 0, 5991, 5992, 7, 13, 0, 0, 5992, 5993, 7, 16, 0, 0, 5993, 5994, 7, 13, 0, 0, 5994, 5995, 7, 17, 0, 0, 5995, 5996, 7, 15, 0, 0, 5996, 1228, 1, 0, 0, 0, 5997, 5998, 7, 9, 0, 0, 5998, 5999, 7, 24, 0, 0, 5999, 6000, 7, 6, 0, 0, 6000, 6001, 7, 17, 0, 0, 6001, 6002, 7, 16, 0, 0, 6002, 6003, 5, 95, 0, 0, 6003, 6004, 7, 24, 0, 0, 6004, 6005, 7, 5, 0, 0, 6005, 6006, 7, 13, 0, 0, 6006, 6007, 7, 16, 0, 0, 6007, 1230, 1, 0, 0, 0, 6008, 6009, 7, 9, 0, 0, 6009, 6010, 7, 16, 0, 0, 6010, 6011, 7, 5, 0, 0, 6011, 6012, 7, 13, 0, 0, 6012, 6013, 7, 16, 0, 0, 6013, 6014, 7, 9, 0, 0, 6014, 6015, 5, 95, 0, 0, 6015, 6016, 7, 28, 0, 0, 6016, 6017, 7, 17, 0, 0, 6017, 6018, 7, 16, 0, 0, 6018, 6019, 7, 20, 0, 0, 6019, 1232, 1, 0, 0, 0, 6020, 6021, 7, 9, 0, 0, 6021, 6022, 7, 16, 0, 0, 6022, 6023, 7, 13, 0, 0, 6023, 6024, 7, 17, 0, 0, 6024, 6025, 7, 7, 0, 0, 6025, 6026, 7, 23, 0, 0, 6026, 6027, 5, 95, 0, 0, 6027, 6028, 7, 16, 0, 0, 6028, 6029, 7, 19, 0, 0, 6029, 6030, 5, 95, 0, 0, 6030, 6031, 7, 5, 0, 0, 6031, 6032, 7, 13, 0, 0, 6032, 6033, 7, 13, 0, 0, 6033, 6034, 7, 5, 0, 0, 6034, 6035, 7, 8, 0, 0, 6035, 1234, 1, 0, 0, 0, 6036, 6037, 7, 9, 0, 0, 6037, 6038, 7, 16, 0, 0, 6038, 6039, 7, 13, 0, 0, 6039, 6040, 7, 17, 0, 0, 6040, 6041, 7, 7, 0, 0, 6041, 6042, 7, 23, 0, 0, 6042, 6043, 5, 95, 0, 0, 6043, 6044, 7, 16, 0, 0, 6044, 6045, 7, 19, 0, 0, 6045, 6046, 5, 95, 0, 0, 6046, 6047, 7, 16, 0, 0, 6047, 6048, 7, 5, 0, 0, 6048, 6049, 7, 18, 0, 0, 6049, 6050, 7, 6, 0, 0, 6050, 6051, 7, 10, 0, 0, 6051, 1236, 1, 0, 0, 0, 6052, 6053, 7, 9, 0, 0, 6053, 6054, 7, 16, 0, 0, 6054, 6055, 7, 13, 0, 0, 6055, 6056, 7, 24, 0, 0, 6056, 6057, 7, 19, 0, 0, 6057, 6058, 7, 9, 0, 0, 6058, 1238, 1, 0, 0, 0, 6059, 6060, 7, 9, 0, 0, 6060, 6061, 7, 22, 0, 0, 6061, 6062, 7, 18, 0, 0, 6062, 6063, 7, 9, 0, 0, 6063, 6064, 7, 16, 0, 0, 6064, 6065, 7, 13, 0, 0, 6065, 1240, 1, 0, 0, 0, 6066, 6067, 7, 16, 0, 0, 6067, 6068, 7, 19, 0, 0, 6068, 6069, 5, 95, 0, 0, 6069, 6070, 7, 5, 0, 0, 6070, 6071, 7, 9, 0, 0, 6071, 6072, 7, 14, 0, 0, 6072, 6073, 7, 17, 0, 0, 6073, 6074, 7, 17, 0, 0, 6074, 1242, 1, 0, 0, 0, 6075, 6076, 7, 16, 0, 0, 6076, 6077, 7, 19, 0, 0, 6077, 6078, 5, 95, 0, 0, 6078, 6079, 7, 20, 0, 0, 6079, 6080, 7, 10, 0, 0, 6080, 6081, 7, 26, 0, 0, 6081, 1244, 1, 0, 0, 0, 6082, 6083, 7, 16, 0, 0, 6083, 6084, 7, 13, 0, 0, 6084, 6085, 7, 5, 0, 0, 6085, 6086, 7, 7, 0, 0, 6086, 6087, 7, 9, 0, 0, 6087, 6088, 7, 6, 0, 0, 6088, 6089, 7, 5, 0, 0, 6089, 6090, 7, 16, 0, 0, 6090, 6091, 7, 10, 0, 0, 6091, 1246, 1, 0, 0, 0, 6092, 6093, 7, 22, 0, 0, 6093, 6094, 7, 7, 0, 0, 6094, 6095, 7, 17, 0, 0, 6095, 6096, 7, 9, 0, 0, 6096, 6097, 7, 16, 0, 0, 6097, 6098, 7, 13, 0, 0, 6098, 1248, 1, 0, 0, 0, 6099, 6100, 7, 5, 0, 0, 6100, 6101, 7, 23, 0, 0, 6101, 6102, 7, 10, 0, 0, 6102, 1250, 1, 0, 0, 0, 6103, 6104, 7, 14, 0, 0, 6104, 6105, 7, 6, 0, 0, 6105, 6106, 7, 19, 0, 0, 6106, 6107, 7, 14, 0, 0, 6107, 6108, 7, 21, 0, 0, 6108, 6109, 5, 95, 0, 0, 6109, 6110, 7, 16, 0, 0, 6110, 6111, 7, 17, 0, 0, 6111, 6112, 7, 15, 0, 0, 6112, 6113, 7, 10, 0, 0, 6113, 6114, 7, 9, 0, 0, 6114, 6115, 7, 16, 0, 0, 6115, 6116, 7, 5, 0, 0, 6116, 6117, 7, 15, 0, 0, 6117, 6118, 7, 24, 0, 0, 6118, 1252, 1, 0, 0, 0, 6119, 6120, 7, 12, 0, 0, 6120, 6121, 7, 5, 0, 0, 6121, 6122, 7, 16, 0, 0, 6122, 6123, 7, 10, 0, 0, 6123, 6124, 5, 95, 0, 0, 6124, 6125, 7, 18, 0, 0, 6125, 6126, 7, 17, 0, 0, 6126, 6127, 7, 7, 0, 0, 6127, 1254, 1, 0, 0, 0, 6128, 6129, 7, 12, 0, 0, 6129, 6130, 7, 5, 0, 0, 6130, 6131, 7, 16, 0, 0, 6131, 6132, 7, 10, 0, 0, 6132, 6133, 5, 95, 0, 0, 6133, 6134, 7, 24, 0, 0, 6134, 6135, 7, 5, 0, 0, 6135, 6136, 7, 13, 0, 0, 6136, 6137, 7, 16, 0, 0, 6137, 1256, 1, 0, 0, 0, 6138, 6139, 7, 12, 0, 0, 6139, 6140, 7, 5, 0, 0, 6140, 6141, 7, 16, 0, 0, 6141, 6142, 7, 10, 0, 0, 6142, 6143, 5, 95, 0, 0, 6143, 6144, 7, 16, 0, 0, 6144, 6145, 7, 13, 0, 0, 6145, 6146, 7, 22, 0, 0, 6146, 6147, 7, 7, 0, 0, 6147, 6148, 7, 14, 0, 0, 6148, 1258, 1, 0, 0, 0, 6149, 6150, 7, 17, 0, 0, 6150, 6151, 7, 9, 0, 0, 6151, 6152, 7, 25, 0, 0, 6152, 6153, 7, 17, 0, 0, 6153, 6154, 7, 7, 0, 0, 6154, 6155, 7, 17, 0, 0, 6155, 6156, 7, 16, 0, 0, 6156, 6157, 7, 10, 0, 0, 6157, 1260, 1, 0, 0, 0, 6158, 6159, 7, 30, 0, 0, 6159, 6160, 7, 22, 0, 0, 6160, 6161, 7, 9, 0, 0, 6161, 6162, 7, 16, 0, 0, 6162, 6163, 7, 17, 0, 0, 6163, 6164, 7, 25, 0, 0, 6164, 6165, 7, 8, 0, 0, 6165, 6166, 5, 95, 0, 0, 6166, 6167, 7, 12, 0, 0, 6167, 6168, 7, 5, 0, 0, 6168, 6169, 7, 8, 0, 0, 6169, 6170, 7, 9, 0, 0, 6170, 1262, 1, 0, 0, 0, 6171, 6172, 7, 30, 0, 0, 6172, 6173, 7, 22, 0, 0, 6173, 6174, 7, 9, 0, 0, 6174, 6175, 7, 16, 0, 0, 6175, 6176, 7, 17, 0, 0, 6176, 6177, 7, 25, 0, 0, 6177, 6178, 7, 8, 0, 0, 6178, 6179, 5, 95, 0, 0, 6179, 6180, 7, 20, 0, 0, 6180, 6181, 7, 19, 0, 0, 6181, 6182, 7, 22, 0, 0, 6182, 6183, 7, 13, 0, 0, 6183, 6184, 7, 9, 0, 0, 6184, 1264, 1, 0, 0, 0, 6185, 6186, 7, 30, 0, 0, 6186, 6187, 7, 22, 0, 0, 6187, 6188, 7, 9, 0, 0, 6188, 6189, 7, 16, 0, 0, 6189, 6190, 7, 17, 0, 0, 6190, 6191, 7, 25, 0, 0, 6191, 6192, 7, 8, 0, 0, 6192, 6193, 5, 95, 0, 0, 6193, 6194, 7, 17, 0, 0, 6194, 6195, 7, 7, 0, 0, 6195, 6196, 7, 16, 0, 0, 6196, 6197, 7, 10, 0, 0, 6197, 6198, 7, 13, 0, 0, 6198, 6199, 7, 27, 0, 0, 6199, 6200, 7, 5, 0, 0, 6200, 6201, 7, 6, 0, 0, 6201, 1266, 1, 0, 0, 0, 6202, 6203, 7, 15, 0, 0, 6203, 6204, 7, 5, 0, 0, 6204, 6205, 7, 21, 0, 0, 6205, 6206, 7, 10, 0, 0, 6206, 6207, 5, 95, 0, 0, 6207, 6208, 7, 12, 0, 0, 6208, 6209, 7, 5, 0, 0, 6209, 6210, 7, 16, 0, 0, 6210, 6211, 7, 10, 0, 0, 6211, 1268, 1, 0, 0, 0, 6212, 6213, 7, 15, 0, 0, 6213, 6214, 7, 5, 0, 0, 6214, 6215, 7, 21, 0, 0, 6215, 6216, 7, 10, 0, 0, 6216, 6217, 5, 95, 0, 0, 6217, 6218, 7, 17, 0, 0, 6218, 6219, 7, 7, 0, 0, 6219, 6220, 7, 16, 0, 0, 6220, 6221, 7, 10, 0, 0, 6221, 6222, 7, 13, 0, 0, 6222, 6223, 7, 27, 0, 0, 6223, 6224, 7, 5, 0, 0, 6224, 6225, 7, 6, 0, 0, 6225, 1270, 1, 0, 0, 0, 6226, 6227, 7, 15, 0, 0, 6227, 6228, 7, 5, 0, 0, 6228, 6229, 7, 21, 0, 0, 6229, 6230, 7, 10, 0, 0, 6230, 6231, 5, 95, 0, 0, 6231, 6232, 7, 16, 0, 0, 6232, 6233, 7, 17, 0, 0, 6233, 6234, 7, 15, 0, 0, 6234, 6235, 7, 10, 0, 0, 6235, 1272, 1, 0, 0, 0, 6236, 6237, 7, 15, 0, 0, 6237, 6238, 7, 5, 0, 0, 6238, 6239, 7, 21, 0, 0, 6239, 6240, 7, 10, 0, 0, 6240, 6241, 5, 95, 0, 0, 6241, 6242, 7, 16, 0, 0, 6242, 6243, 7, 17, 0, 0, 6243, 6244, 7, 15, 0, 0, 6244, 6245, 7, 10, 0, 0, 6245, 6246, 7, 9, 0, 0, 6246, 6247, 7, 16, 0, 0, 6247, 6248, 7, 5, 0, 0, 6248, 6249, 7, 15, 0, 0, 6249, 6250, 7, 24, 0, 0, 6250, 1274, 1, 0, 0, 0, 6251, 6252, 7, 15, 0, 0, 6252, 6253, 7, 5, 0, 0, 6253, 6254, 7, 21, 0, 0, 6254, 6255, 7, 10, 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, 6266, 7, 16, 0, 0, 6266, 6267, 7, 11, 0, 0, 6267, 1276, 1, 0, 0, 0, 6268, 6269, 7, 7, 0, 0, 6269, 6270, 7, 19, 0, 0, 6270, 6271, 7, 28, 0, 0, 6271, 1278, 1, 0, 0, 0, 6272, 6273, 7, 9, 0, 0, 6273, 6274, 7, 16, 0, 0, 6274, 6275, 7, 5, 0, 0, 6275, 6276, 7, 16, 0, 0, 6276, 6277, 7, 10, 0, 0, 6277, 6278, 7, 15, 0, 0, 6278, 6279, 7, 10, 0, 0, 6279, 6280, 7, 7, 0, 0, 6280, 6281, 7, 16, 0, 0, 6281, 6282, 5, 95, 0, 0, 6282, 6283, 7, 16, 0, 0, 6283, 6284, 7, 17, 0, 0, 6284, 6285, 7, 15, 0, 0, 6285, 6286, 7, 10, 0, 0, 6286, 6287, 7, 9, 0, 0, 6287, 6288, 7, 16, 0, 0, 6288, 6289, 7, 5, 0, 0, 6289, 6290, 7, 15, 0, 0, 6290, 6291, 7, 24, 0, 0, 6291, 1280, 1, 0, 0, 0, 6292, 6293, 7, 16, 0, 0, 6293, 6294, 7, 17, 0, 0, 6294, 6295, 7, 15, 0, 0, 6295, 6296, 7, 10, 0, 0, 6296, 6297, 7, 19, 0, 0, 6297, 6298, 7, 25, 0, 0, 6298, 6299, 7, 12, 0, 0, 6299, 6300, 7, 5, 0, 0, 6300, 6301, 7, 8, 0, 0, 6301, 1282, 1, 0, 0, 0, 6302, 6303, 7, 16, 0, 0, 6303, 6304, 7, 13, 0, 0, 6304, 6305, 7, 5, 0, 0, 6305, 6306, 7, 7, 0, 0, 6306, 6307, 7, 9, 0, 0, 6307, 6308, 7, 5, 0, 0, 6308, 6309, 7, 14, 0, 0, 6309, 6310, 7, 16, 0, 0, 6310, 6311, 7, 17, 0, 0, 6311, 6312, 7, 19, 0, 0, 6312, 6313, 7, 7, 0, 0, 6313, 6314, 5, 95, 0, 0, 6314, 6315, 7, 16, 0, 0, 6315, 6316, 7, 17, 0, 0, 6316, 6317, 7, 15, 0, 0, 6317, 6318, 7, 10, 0, 0, 6318, 6319, 7, 9, 0, 0, 6319, 6320, 7, 16, 0, 0, 6320, 6321, 7, 5, 0, 0, 6321, 6322, 7, 15, 0, 0, 6322, 6323, 7, 24, 0, 0, 6323, 1284, 1, 0, 0, 0, 6324, 6325, 7, 16, 0, 0, 6325, 6326, 7, 19, 0, 0, 6326, 6327, 5, 95, 0, 0, 6327, 6328, 7, 16, 0, 0, 6328, 6329, 7, 17, 0, 0, 6329, 6330, 7, 15, 0, 0, 6330, 6331, 7, 10, 0, 0, 6331, 6332, 7, 9, 0, 0, 6332, 6333, 7, 16, 0, 0, 6333, 6334, 7, 5, 0, 0, 6334, 6335, 7, 15, 0, 0, 6335, 6336, 7, 24, 0, 0, 6336, 1286, 1, 0, 0, 0, 6337, 6338, 7, 16, 0, 0, 6338, 6339, 7, 19, 0, 0, 6339, 6340, 5, 95, 0, 0, 6340, 6341, 7, 14, 0, 0, 6341, 6342, 7, 20, 0, 0, 6342, 6343, 7, 5, 0, 0, 6343, 6344, 7, 13, 0, 0, 6344, 1288, 1, 0, 0, 0, 6345, 6346, 7, 16, 0, 0, 6346, 6347, 7, 19, 0, 0, 6347, 6348, 5, 95, 0, 0, 6348, 6349, 7, 12, 0, 0, 6349, 6350, 7, 5, 0, 0, 6350, 6351, 7, 16, 0, 0, 6351, 6352, 7, 10, 0, 0, 6352, 1290, 1, 0, 0, 0, 6353, 6354, 7, 16, 0, 0, 6354, 6355, 7, 19, 0, 0, 6355, 6356, 5, 95, 0, 0, 6356, 6357, 7, 7, 0, 0, 6357, 6358, 7, 22, 0, 0, 6358, 6359, 7, 15, 0, 0, 6359, 6360, 7, 18, 0, 0, 6360, 6361, 7, 10, 0, 0, 6361, 6362, 7, 13, 0, 0, 6362, 1292, 1, 0, 0, 0, 6363, 6367, 3, 1295, 645, 0, 6364, 6366, 3, 1297, 646, 0, 6365, 6364, 1, 0, 0, 0, 6366, 6369, 1, 0, 0, 0, 6367, 6365, 1, 0, 0, 0, 6367, 6368, 1, 0, 0, 0, 6368, 1294, 1, 0, 0, 0, 6369, 6367, 1, 0, 0, 0, 6370, 6377, 7, 31, 0, 0, 6371, 6372, 7, 32, 0, 0, 6372, 6377, 4, 645, 6, 0, 6373, 6374, 7, 33, 0, 0, 6374, 6375, 7, 34, 0, 0, 6375, 6377, 4, 645, 7, 0, 6376, 6370, 1, 0, 0, 0, 6376, 6371, 1, 0, 0, 0, 6376, 6373, 1, 0, 0, 0, 6377, 1296, 1, 0, 0, 0, 6378, 6381, 3, 1299, 647, 0, 6379, 6381, 5, 36, 0, 0, 6380, 6378, 1, 0, 0, 0, 6380, 6379, 1, 0, 0, 0, 6381, 1298, 1, 0, 0, 0, 6382, 6385, 3, 1295, 645, 0, 6383, 6385, 7, 0, 0, 0, 6384, 6382, 1, 0, 0, 0, 6384, 6383, 1, 0, 0, 0, 6385, 1300, 1, 0, 0, 0, 6386, 6387, 3, 1303, 649, 0, 6387, 6388, 5, 34, 0, 0, 6388, 1302, 1, 0, 0, 0, 6389, 6395, 5, 34, 0, 0, 6390, 6391, 5, 34, 0, 0, 6391, 6394, 5, 34, 0, 0, 6392, 6394, 8, 35, 0, 0, 6393, 6390, 1, 0, 0, 0, 6393, 6392, 1, 0, 0, 0, 6394, 6397, 1, 0, 0, 0, 6395, 6393, 1, 0, 0, 0, 6395, 6396, 1, 0, 0, 0, 6396, 1304, 1, 0, 0, 0, 6397, 6395, 1, 0, 0, 0, 6398, 6399, 3, 1307, 651, 0, 6399, 6400, 5, 34, 0, 0, 6400, 1306, 1, 0, 0, 0, 6401, 6407, 5, 34, 0, 0, 6402, 6403, 5, 34, 0, 0, 6403, 6406, 5, 34, 0, 0, 6404, 6406, 8, 36, 0, 0, 6405, 6402, 1, 0, 0, 0, 6405, 6404, 1, 0, 0, 0, 6406, 6409, 1, 0, 0, 0, 6407, 6405, 1, 0, 0, 0, 6407, 6408, 1, 0, 0, 0, 6408, 1308, 1, 0, 0, 0, 6409, 6407, 1, 0, 0, 0, 6410, 6411, 7, 22, 0, 0, 6411, 6412, 5, 38, 0, 0, 6412, 6413, 3, 1301, 648, 0, 6413, 1310, 1, 0, 0, 0, 6414, 6415, 7, 22, 0, 0, 6415, 6416, 5, 38, 0, 0, 6416, 6417, 3, 1303, 649, 0, 6417, 1312, 1, 0, 0, 0, 6418, 6419, 7, 22, 0, 0, 6419, 6420, 5, 38, 0, 0, 6420, 6421, 3, 1305, 650, 0, 6421, 1314, 1, 0, 0, 0, 6422, 6423, 7, 22, 0, 0, 6423, 6424, 5, 38, 0, 0, 6424, 6425, 3, 1307, 651, 0, 6425, 1316, 1, 0, 0, 0, 6426, 6427, 3, 1319, 657, 0, 6427, 6428, 5, 39, 0, 0, 6428, 1318, 1, 0, 0, 0, 6429, 6435, 5, 39, 0, 0, 6430, 6431, 5, 39, 0, 0, 6431, 6434, 5, 39, 0, 0, 6432, 6434, 8, 37, 0, 0, 6433, 6430, 1, 0, 0, 0, 6433, 6432, 1, 0, 0, 0, 6434, 6437, 1, 0, 0, 0, 6435, 6433, 1, 0, 0, 0, 6435, 6436, 1, 0, 0, 0, 6436, 1320, 1, 0, 0, 0, 6437, 6435, 1, 0, 0, 0, 6438, 6439, 7, 10, 0, 0, 6439, 6440, 5, 39, 0, 0, 6440, 6441, 1, 0, 0, 0, 6441, 6442, 6, 658, 2, 0, 6442, 6443, 6, 658, 3, 0, 6443, 1322, 1, 0, 0, 0, 6444, 6445, 3, 1325, 660, 0, 6445, 6446, 5, 39, 0, 0, 6446, 1324, 1, 0, 0, 0, 6447, 6448, 7, 22, 0, 0, 6448, 6449, 5, 38, 0, 0, 6449, 6450, 3, 1319, 657, 0, 6450, 1326, 1, 0, 0, 0, 6451, 6453, 5, 36, 0, 0, 6452, 6454, 3, 1329, 662, 0, 6453, 6452, 1, 0, 0, 0, 6453, 6454, 1, 0, 0, 0, 6454, 6455, 1, 0, 0, 0, 6455, 6456, 5, 36, 0, 0, 6456, 6457, 6, 661, 4, 0, 6457, 6458, 1, 0, 0, 0, 6458, 6459, 6, 661, 5, 0, 6459, 1328, 1, 0, 0, 0, 6460, 6464, 3, 1295, 645, 0, 6461, 6463, 3, 1299, 647, 0, 6462, 6461, 1, 0, 0, 0, 6463, 6466, 1, 0, 0, 0, 6464, 6462, 1, 0, 0, 0, 6464, 6465, 1, 0, 0, 0, 6465, 1330, 1, 0, 0, 0, 6466, 6464, 1, 0, 0, 0, 6467, 6468, 3, 1333, 664, 0, 6468, 6469, 5, 39, 0, 0, 6469, 1332, 1, 0, 0, 0, 6470, 6471, 7, 18, 0, 0, 6471, 6475, 5, 39, 0, 0, 6472, 6474, 7, 38, 0, 0, 6473, 6472, 1, 0, 0, 0, 6474, 6477, 1, 0, 0, 0, 6475, 6473, 1, 0, 0, 0, 6475, 6476, 1, 0, 0, 0, 6476, 1334, 1, 0, 0, 0, 6477, 6475, 1, 0, 0, 0, 6478, 6479, 3, 1337, 666, 0, 6479, 6480, 5, 39, 0, 0, 6480, 1336, 1, 0, 0, 0, 6481, 6482, 7, 18, 0, 0, 6482, 6483, 3, 1319, 657, 0, 6483, 1338, 1, 0, 0, 0, 6484, 6485, 3, 1341, 668, 0, 6485, 6486, 5, 39, 0, 0, 6486, 1340, 1, 0, 0, 0, 6487, 6488, 7, 26, 0, 0, 6488, 6492, 5, 39, 0, 0, 6489, 6491, 7, 39, 0, 0, 6490, 6489, 1, 0, 0, 0, 6491, 6494, 1, 0, 0, 0, 6492, 6490, 1, 0, 0, 0, 6492, 6493, 1, 0, 0, 0, 6493, 1342, 1, 0, 0, 0, 6494, 6492, 1, 0, 0, 0, 6495, 6496, 3, 1345, 670, 0, 6496, 6497, 5, 39, 0, 0, 6497, 1344, 1, 0, 0, 0, 6498, 6499, 7, 26, 0, 0, 6499, 6500, 3, 1319, 657, 0, 6500, 1346, 1, 0, 0, 0, 6501, 6502, 3, 1353, 674, 0, 6502, 1348, 1, 0, 0, 0, 6503, 6504, 3, 1353, 674, 0, 6504, 6505, 5, 46, 0, 0, 6505, 6506, 5, 46, 0, 0, 6506, 6507, 1, 0, 0, 0, 6507, 6508, 6, 672, 6, 0, 6508, 1350, 1, 0, 0, 0, 6509, 6510, 3, 1353, 674, 0, 6510, 6512, 5, 46, 0, 0, 6511, 6513, 3, 1353, 674, 0, 6512, 6511, 1, 0, 0, 0, 6512, 6513, 1, 0, 0, 0, 6513, 6519, 1, 0, 0, 0, 6514, 6516, 7, 10, 0, 0, 6515, 6517, 7, 1, 0, 0, 6516, 6515, 1, 0, 0, 0, 6516, 6517, 1, 0, 0, 0, 6517, 6518, 1, 0, 0, 0, 6518, 6520, 3, 1353, 674, 0, 6519, 6514, 1, 0, 0, 0, 6519, 6520, 1, 0, 0, 0, 6520, 6538, 1, 0, 0, 0, 6521, 6522, 5, 46, 0, 0, 6522, 6528, 3, 1353, 674, 0, 6523, 6525, 7, 10, 0, 0, 6524, 6526, 7, 1, 0, 0, 6525, 6524, 1, 0, 0, 0, 6525, 6526, 1, 0, 0, 0, 6526, 6527, 1, 0, 0, 0, 6527, 6529, 3, 1353, 674, 0, 6528, 6523, 1, 0, 0, 0, 6528, 6529, 1, 0, 0, 0, 6529, 6538, 1, 0, 0, 0, 6530, 6531, 3, 1353, 674, 0, 6531, 6533, 7, 10, 0, 0, 6532, 6534, 7, 1, 0, 0, 6533, 6532, 1, 0, 0, 0, 6533, 6534, 1, 0, 0, 0, 6534, 6535, 1, 0, 0, 0, 6535, 6536, 3, 1353, 674, 0, 6536, 6538, 1, 0, 0, 0, 6537, 6509, 1, 0, 0, 0, 6537, 6521, 1, 0, 0, 0, 6537, 6530, 1, 0, 0, 0, 6538, 1352, 1, 0, 0, 0, 6539, 6541, 7, 0, 0, 0, 6540, 6539, 1, 0, 0, 0, 6541, 6542, 1, 0, 0, 0, 6542, 6540, 1, 0, 0, 0, 6542, 6543, 1, 0, 0, 0, 6543, 1354, 1, 0, 0, 0, 6544, 6545, 5, 58, 0, 0, 6545, 6549, 7, 40, 0, 0, 6546, 6548, 7, 41, 0, 0, 6547, 6546, 1, 0, 0, 0, 6548, 6551, 1, 0, 0, 0, 6549, 6547, 1, 0, 0, 0, 6549, 6550, 1, 0, 0, 0, 6550, 1356, 1, 0, 0, 0, 6551, 6549, 1, 0, 0, 0, 6552, 6553, 5, 58, 0, 0, 6553, 6554, 5, 34, 0, 0, 6554, 6562, 1, 0, 0, 0, 6555, 6556, 5, 92, 0, 0, 6556, 6561, 9, 0, 0, 0, 6557, 6558, 5, 34, 0, 0, 6558, 6561, 5, 34, 0, 0, 6559, 6561, 8, 42, 0, 0, 6560, 6555, 1, 0, 0, 0, 6560, 6557, 1, 0, 0, 0, 6560, 6559, 1, 0, 0, 0, 6561, 6564, 1, 0, 0, 0, 6562, 6560, 1, 0, 0, 0, 6562, 6563, 1, 0, 0, 0, 6563, 6565, 1, 0, 0, 0, 6564, 6562, 1, 0, 0, 0, 6565, 6566, 5, 34, 0, 0, 6566, 1358, 1, 0, 0, 0, 6567, 6569, 7, 43, 0, 0, 6568, 6567, 1, 0, 0, 0, 6569, 6570, 1, 0, 0, 0, 6570, 6568, 1, 0, 0, 0, 6570, 6571, 1, 0, 0, 0, 6571, 6572, 1, 0, 0, 0, 6572, 6573, 6, 677, 7, 0, 6573, 1360, 1, 0, 0, 0, 6574, 6576, 5, 13, 0, 0, 6575, 6577, 5, 10, 0, 0, 6576, 6575, 1, 0, 0, 0, 6576, 6577, 1, 0, 0, 0, 6577, 6580, 1, 0, 0, 0, 6578, 6580, 5, 10, 0, 0, 6579, 6574, 1, 0, 0, 0, 6579, 6578, 1, 0, 0, 0, 6580, 6581, 1, 0, 0, 0, 6581, 6582, 6, 678, 7, 0, 6582, 1362, 1, 0, 0, 0, 6583, 6584, 5, 45, 0, 0, 6584, 6585, 5, 45, 0, 0, 6585, 6589, 1, 0, 0, 0, 6586, 6588, 8, 44, 0, 0, 6587, 6586, 1, 0, 0, 0, 6588, 6591, 1, 0, 0, 0, 6589, 6587, 1, 0, 0, 0, 6589, 6590, 1, 0, 0, 0, 6590, 6592, 1, 0, 0, 0, 6591, 6589, 1, 0, 0, 0, 6592, 6593, 6, 679, 7, 0, 6593, 1364, 1, 0, 0, 0, 6594, 6595, 5, 47, 0, 0, 6595, 6596, 5, 42, 0, 0, 6596, 6619, 1, 0, 0, 0, 6597, 6599, 5, 47, 0, 0, 6598, 6597, 1, 0, 0, 0, 6599, 6602, 1, 0, 0, 0, 6600, 6598, 1, 0, 0, 0, 6600, 6601, 1, 0, 0, 0, 6601, 6603, 1, 0, 0, 0, 6602, 6600, 1, 0, 0, 0, 6603, 6618, 3, 1365, 680, 0, 6604, 6618, 8, 45, 0, 0, 6605, 6607, 5, 47, 0, 0, 6606, 6605, 1, 0, 0, 0, 6607, 6608, 1, 0, 0, 0, 6608, 6606, 1, 0, 0, 0, 6608, 6609, 1, 0, 0, 0, 6609, 6610, 1, 0, 0, 0, 6610, 6618, 8, 45, 0, 0, 6611, 6613, 5, 42, 0, 0, 6612, 6611, 1, 0, 0, 0, 6613, 6614, 1, 0, 0, 0, 6614, 6612, 1, 0, 0, 0, 6614, 6615, 1, 0, 0, 0, 6615, 6616, 1, 0, 0, 0, 6616, 6618, 8, 45, 0, 0, 6617, 6600, 1, 0, 0, 0, 6617, 6604, 1, 0, 0, 0, 6617, 6606, 1, 0, 0, 0, 6617, 6612, 1, 0, 0, 0, 6618, 6621, 1, 0, 0, 0, 6619, 6617, 1, 0, 0, 0, 6619, 6620, 1, 0, 0, 0, 6620, 6625, 1, 0, 0, 0, 6621, 6619, 1, 0, 0, 0, 6622, 6624, 5, 42, 0, 0, 6623, 6622, 1, 0, 0, 0, 6624, 6627, 1, 0, 0, 0, 6625, 6623, 1, 0, 0, 0, 6625, 6626, 1, 0, 0, 0, 6626, 6628, 1, 0, 0, 0, 6627, 6625, 1, 0, 0, 0, 6628, 6629, 5, 42, 0, 0, 6629, 6630, 5, 47, 0, 0, 6630, 6631, 1, 0, 0, 0, 6631, 6632, 6, 680, 7, 0, 6632, 1366, 1, 0, 0, 0, 6633, 6634, 5, 47, 0, 0, 6634, 6635, 5, 42, 0, 0, 6635, 6660, 1, 0, 0, 0, 6636, 6638, 5, 47, 0, 0, 6637, 6636, 1, 0, 0, 0, 6638, 6641, 1, 0, 0, 0, 6639, 6637, 1, 0, 0, 0, 6639, 6640, 1, 0, 0, 0, 6640, 6642, 1, 0, 0, 0, 6641, 6639, 1, 0, 0, 0, 6642, 6659, 3, 1365, 680, 0, 6643, 6659, 8, 45, 0, 0, 6644, 6646, 5, 47, 0, 0, 6645, 6644, 1, 0, 0, 0, 6646, 6647, 1, 0, 0, 0, 6647, 6645, 1, 0, 0, 0, 6647, 6648, 1, 0, 0, 0, 6648, 6649, 1, 0, 0, 0, 6649, 6657, 8, 45, 0, 0, 6650, 6652, 5, 42, 0, 0, 6651, 6650, 1, 0, 0, 0, 6652, 6653, 1, 0, 0, 0, 6653, 6651, 1, 0, 0, 0, 6653, 6654, 1, 0, 0, 0, 6654, 6655, 1, 0, 0, 0, 6655, 6657, 8, 45, 0, 0, 6656, 6645, 1, 0, 0, 0, 6656, 6651, 1, 0, 0, 0, 6657, 6659, 1, 0, 0, 0, 6658, 6639, 1, 0, 0, 0, 6658, 6643, 1, 0, 0, 0, 6658, 6656, 1, 0, 0, 0, 6659, 6662, 1, 0, 0, 0, 6660, 6658, 1, 0, 0, 0, 6660, 6661, 1, 0, 0, 0, 6661, 6680, 1, 0, 0, 0, 6662, 6660, 1, 0, 0, 0, 6663, 6665, 5, 47, 0, 0, 6664, 6663, 1, 0, 0, 0, 6665, 6666, 1, 0, 0, 0, 6666, 6664, 1, 0, 0, 0, 6666, 6667, 1, 0, 0, 0, 6667, 6681, 1, 0, 0, 0, 6668, 6670, 5, 42, 0, 0, 6669, 6668, 1, 0, 0, 0, 6670, 6671, 1, 0, 0, 0, 6671, 6669, 1, 0, 0, 0, 6671, 6672, 1, 0, 0, 0, 6672, 6681, 1, 0, 0, 0, 6673, 6675, 5, 47, 0, 0, 6674, 6673, 1, 0, 0, 0, 6675, 6678, 1, 0, 0, 0, 6676, 6674, 1, 0, 0, 0, 6676, 6677, 1, 0, 0, 0, 6677, 6679, 1, 0, 0, 0, 6678, 6676, 1, 0, 0, 0, 6679, 6681, 3, 1367, 681, 0, 6680, 6664, 1, 0, 0, 0, 6680, 6669, 1, 0, 0, 0, 6680, 6676, 1, 0, 0, 0, 6680, 6681, 1, 0, 0, 0, 6681, 6682, 1, 0, 0, 0, 6682, 6683, 6, 681, 8, 0, 6683, 1368, 1, 0, 0, 0, 6684, 6696, 5, 92, 0, 0, 6685, 6695, 8, 46, 0, 0, 6686, 6690, 5, 34, 0, 0, 6687, 6689, 8, 47, 0, 0, 6688, 6687, 1, 0, 0, 0, 6689, 6692, 1, 0, 0, 0, 6690, 6688, 1, 0, 0, 0, 6690, 6691, 1, 0, 0, 0, 6691, 6693, 1, 0, 0, 0, 6692, 6690, 1, 0, 0, 0, 6693, 6695, 5, 34, 0, 0, 6694, 6685, 1, 0, 0, 0, 6694, 6686, 1, 0, 0, 0, 6695, 6698, 1, 0, 0, 0, 6696, 6694, 1, 0, 0, 0, 6696, 6697, 1, 0, 0, 0, 6697, 6706, 1, 0, 0, 0, 6698, 6696, 1, 0, 0, 0, 6699, 6703, 5, 34, 0, 0, 6700, 6702, 8, 47, 0, 0, 6701, 6700, 1, 0, 0, 0, 6702, 6705, 1, 0, 0, 0, 6703, 6701, 1, 0, 0, 0, 6703, 6704, 1, 0, 0, 0, 6704, 6707, 1, 0, 0, 0, 6705, 6703, 1, 0, 0, 0, 6706, 6699, 1, 0, 0, 0, 6706, 6707, 1, 0, 0, 0, 6707, 1370, 1, 0, 0, 0, 6708, 6709, 5, 92, 0, 0, 6709, 6710, 5, 92, 0, 0, 6710, 1372, 1, 0, 0, 0, 6711, 6712, 9, 0, 0, 0, 6712, 1374, 1, 0, 0, 0, 6713, 6714, 3, 1379, 687, 0, 6714, 6715, 5, 39, 0, 0, 6715, 6716, 1, 0, 0, 0, 6716, 6717, 6, 685, 9, 0, 6717, 1376, 1, 0, 0, 0, 6718, 6720, 3, 1379, 687, 0, 6719, 6721, 5, 92, 0, 0, 6720, 6719, 1, 0, 0, 0, 6720, 6721, 1, 0, 0, 0, 6721, 6722, 1, 0, 0, 0, 6722, 6723, 5, 0, 0, 1, 6723, 1378, 1, 0, 0, 0, 6724, 6725, 5, 39, 0, 0, 6725, 6748, 5, 39, 0, 0, 6726, 6744, 5, 92, 0, 0, 6727, 6728, 5, 120, 0, 0, 6728, 6745, 7, 39, 0, 0, 6729, 6730, 5, 117, 0, 0, 6730, 6731, 7, 39, 0, 0, 6731, 6732, 7, 39, 0, 0, 6732, 6733, 7, 39, 0, 0, 6733, 6745, 7, 39, 0, 0, 6734, 6735, 5, 85, 0, 0, 6735, 6736, 7, 39, 0, 0, 6736, 6737, 7, 39, 0, 0, 6737, 6738, 7, 39, 0, 0, 6738, 6739, 7, 39, 0, 0, 6739, 6740, 7, 39, 0, 0, 6740, 6741, 7, 39, 0, 0, 6741, 6742, 7, 39, 0, 0, 6742, 6745, 7, 39, 0, 0, 6743, 6745, 8, 48, 0, 0, 6744, 6727, 1, 0, 0, 0, 6744, 6729, 1, 0, 0, 0, 6744, 6734, 1, 0, 0, 0, 6744, 6743, 1, 0, 0, 0, 6745, 6748, 1, 0, 0, 0, 6746, 6748, 8, 49, 0, 0, 6747, 6724, 1, 0, 0, 0, 6747, 6726, 1, 0, 0, 0, 6747, 6746, 1, 0, 0, 0, 6748, 6751, 1, 0, 0, 0, 6749, 6747, 1, 0, 0, 0, 6749, 6750, 1, 0, 0, 0, 6750, 1380, 1, 0, 0, 0, 6751, 6749, 1, 0, 0, 0, 6752, 6753, 3, 1385, 690, 0, 6753, 6754, 5, 39, 0, 0, 6754, 6755, 1, 0, 0, 0, 6755, 6756, 6, 688, 9, 0, 6756, 1382, 1, 0, 0, 0, 6757, 6759, 3, 1385, 690, 0, 6758, 6760, 5, 92, 0, 0, 6759, 6758, 1, 0, 0, 0, 6759, 6760, 1, 0, 0, 0, 6760, 6761, 1, 0, 0, 0, 6761, 6762, 5, 0, 0, 1, 6762, 1384, 1, 0, 0, 0, 6763, 6764, 5, 39, 0, 0, 6764, 6769, 5, 39, 0, 0, 6765, 6766, 5, 92, 0, 0, 6766, 6769, 9, 0, 0, 0, 6767, 6769, 8, 49, 0, 0, 6768, 6763, 1, 0, 0, 0, 6768, 6765, 1, 0, 0, 0, 6768, 6767, 1, 0, 0, 0, 6769, 6772, 1, 0, 0, 0, 6770, 6768, 1, 0, 0, 0, 6770, 6771, 1, 0, 0, 0, 6771, 1386, 1, 0, 0, 0, 6772, 6770, 1, 0, 0, 0, 6773, 6774, 3, 1359, 677, 0, 6774, 6775, 1, 0, 0, 0, 6775, 6776, 6, 691, 10, 0, 6776, 6777, 6, 691, 7, 0, 6777, 1388, 1, 0, 0, 0, 6778, 6779, 3, 1361, 678, 0, 6779, 6780, 1, 0, 0, 0, 6780, 6781, 6, 692, 11, 0, 6781, 6782, 6, 692, 7, 0, 6782, 6783, 6, 692, 12, 0, 6783, 1390, 1, 0, 0, 0, 6784, 6785, 6, 693, 13, 0, 6785, 6786, 1, 0, 0, 0, 6786, 6787, 6, 693, 14, 0, 6787, 6788, 6, 693, 15, 0, 6788, 1392, 1, 0, 0, 0, 6789, 6790, 3, 1359, 677, 0, 6790, 6791, 1, 0, 0, 0, 6791, 6792, 6, 694, 10, 0, 6792, 6793, 6, 694, 7, 0, 6793, 1394, 1, 0, 0, 0, 6794, 6795, 3, 1361, 678, 0, 6795, 6796, 1, 0, 0, 0, 6796, 6797, 6, 695, 11, 0, 6797, 6798, 6, 695, 7, 0, 6798, 1396, 1, 0, 0, 0, 6799, 6800, 5, 39, 0, 0, 6800, 6801, 1, 0, 0, 0, 6801, 6802, 6, 696, 2, 0, 6802, 6803, 6, 696, 16, 0, 6803, 1398, 1, 0, 0, 0, 6804, 6805, 6, 697, 17, 0, 6805, 6806, 1, 0, 0, 0, 6806, 6807, 6, 697, 14, 0, 6807, 6808, 6, 697, 15, 0, 6808, 1400, 1, 0, 0, 0, 6809, 6811, 8, 50, 0, 0, 6810, 6809, 1, 0, 0, 0, 6811, 6812, 1, 0, 0, 0, 6812, 6810, 1, 0, 0, 0, 6812, 6813, 1, 0, 0, 0, 6813, 6822, 1, 0, 0, 0, 6814, 6818, 5, 36, 0, 0, 6815, 6817, 8, 50, 0, 0, 6816, 6815, 1, 0, 0, 0, 6817, 6820, 1, 0, 0, 0, 6818, 6816, 1, 0, 0, 0, 6818, 6819, 1, 0, 0, 0, 6819, 6822, 1, 0, 0, 0, 6820, 6818, 1, 0, 0, 0, 6821, 6810, 1, 0, 0, 0, 6821, 6814, 1, 0, 0, 0, 6822, 1402, 1, 0, 0, 0, 6823, 6825, 5, 36, 0, 0, 6824, 6826, 3, 1329, 662, 0, 6825, 6824, 1, 0, 0, 0, 6825, 6826, 1, 0, 0, 0, 6826, 6827, 1, 0, 0, 0, 6827, 6828, 5, 36, 0, 0, 6828, 6829, 1, 0, 0, 0, 6829, 6830, 4, 699, 8, 0, 6830, 6831, 6, 699, 18, 0, 6831, 6832, 1, 0, 0, 0, 6832, 6833, 6, 699, 15, 0, 6833, 1404, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1472, 1478, 1480, 1485, 1489, 1491, 1494, 1503, 1505, 1510, 1515, 1517, 6367, 6376, 6380, 6384, 6393, 6395, 6405, 6407, 6433, 6435, 6453, 6464, 6475, 6492, 6512, 6516, 6519, 6525, 6528, 6533, 6537, 6542, 6549, 6560, 6562, 6570, 6576, 6579, 6589, 6600, 6608, 6614, 6617, 6619, 6625, 6639, 6647, 6653, 6656, 6658, 6660, 6666, 6671, 6676, 6680, 6690, 6694, 6696, 6703, 6706, 6720, 6744, 6747, 6749, 6759, 6768, 6770, 6812, 6818, 6821, 6825, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 661, 1, 5, 4, 0, 1, 672, 2, 0, 1, 0, 1, 681, 3, 2, 2, 0, 7, 668, 0, 7, 669, 0, 2, 3, 0, 1, 693, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 697, 5, 1, 699, 6] \ No newline at end of file +[4, 0, 687, 6864, 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, 2, 697, 7, 697, 2, 698, 7, 698, 2, 699, 7, 699, 2, 700, 7, 700, 2, 701, 7, 701, 2, 702, 7, 702, 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, 1477, 8, 27, 11, 27, 12, 27, 1478, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1485, 8, 28, 11, 28, 12, 28, 1486, 1, 28, 1, 28, 1, 28, 3, 28, 1492, 8, 28, 1, 28, 1, 28, 4, 28, 1496, 8, 28, 11, 28, 12, 28, 1497, 1, 28, 3, 28, 1501, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1510, 8, 29, 10, 29, 12, 29, 1513, 9, 29, 1, 29, 1, 29, 3, 29, 1517, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1522, 8, 29, 11, 29, 12, 29, 1523, 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, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 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, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 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, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 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, 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, 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, 117, 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, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 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, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 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, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 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, 129, 1, 129, 1, 129, 1, 129, 1, 129, 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, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 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, 137, 1, 137, 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, 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, 140, 1, 140, 1, 140, 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, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 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, 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, 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, 150, 1, 150, 1, 150, 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, 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, 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, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 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, 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, 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, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 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, 165, 1, 165, 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, 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, 172, 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, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 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, 176, 1, 176, 1, 177, 1, 177, 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, 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, 181, 1, 181, 1, 181, 1, 181, 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, 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, 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, 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, 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, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 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, 195, 1, 195, 1, 195, 1, 195, 1, 196, 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, 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, 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, 202, 1, 202, 1, 202, 1, 202, 1, 202, 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, 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, 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, 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, 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, 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, 214, 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, 218, 1, 218, 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, 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, 221, 1, 221, 1, 222, 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, 223, 1, 223, 1, 223, 1, 223, 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, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 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, 230, 1, 230, 1, 230, 1, 231, 1, 231, 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, 232, 1, 233, 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, 234, 1, 235, 1, 235, 1, 235, 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, 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, 239, 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, 241, 1, 241, 1, 241, 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, 242, 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, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 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, 248, 1, 248, 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, 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, 254, 1, 254, 1, 254, 1, 254, 1, 254, 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, 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, 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, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 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, 264, 1, 264, 1, 265, 1, 265, 1, 265, 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, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 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, 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, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 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, 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, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 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, 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, 288, 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, 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, 295, 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, 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, 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, 300, 1, 300, 1, 300, 1, 300, 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, 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, 304, 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, 306, 1, 306, 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, 309, 1, 309, 1, 310, 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, 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, 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, 315, 1, 316, 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, 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, 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, 322, 1, 322, 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, 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, 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, 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, 330, 1, 331, 1, 331, 1, 331, 1, 331, 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, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 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, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 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, 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, 341, 1, 342, 1, 342, 1, 342, 1, 342, 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, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 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, 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, 348, 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, 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, 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, 355, 1, 355, 1, 355, 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, 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, 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, 364, 1, 364, 1, 364, 1, 364, 1, 364, 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, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 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, 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, 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, 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, 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, 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, 377, 1, 377, 1, 378, 1, 378, 1, 378, 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, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 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, 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, 387, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 1, 389, 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, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 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, 396, 1, 396, 1, 396, 1, 396, 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, 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, 400, 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, 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, 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, 411, 1, 411, 1, 411, 1, 411, 1, 411, 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, 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, 416, 1, 416, 1, 416, 1, 416, 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, 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, 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, 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, 425, 1, 425, 1, 425, 1, 425, 1, 425, 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, 428, 1, 428, 1, 428, 1, 428, 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, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 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, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 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, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 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, 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, 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, 438, 1, 438, 1, 438, 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, 439, 1, 439, 1, 439, 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, 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, 443, 1, 443, 1, 443, 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, 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, 448, 1, 449, 1, 449, 1, 449, 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, 453, 1, 453, 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, 455, 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, 457, 1, 457, 1, 457, 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, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 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, 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, 463, 1, 463, 1, 463, 1, 464, 1, 464, 1, 464, 1, 464, 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, 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, 470, 1, 470, 1, 470, 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, 471, 1, 471, 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, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 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, 478, 1, 478, 1, 478, 1, 478, 1, 478, 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, 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, 483, 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, 484, 1, 484, 1, 484, 1, 484, 1, 485, 1, 485, 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, 486, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 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, 491, 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, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 494, 1, 494, 1, 494, 1, 494, 1, 495, 1, 495, 1, 495, 1, 495, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 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, 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, 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, 502, 1, 502, 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, 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, 505, 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, 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, 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, 511, 1, 511, 1, 511, 1, 511, 1, 511, 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, 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, 515, 1, 515, 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, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 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, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 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, 523, 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, 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, 528, 1, 528, 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, 531, 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, 534, 1, 534, 1, 534, 1, 534, 1, 534, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 537, 1, 537, 1, 537, 1, 537, 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, 540, 1, 540, 1, 541, 1, 541, 1, 541, 1, 541, 1, 542, 1, 542, 1, 542, 1, 542, 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, 545, 1, 545, 1, 545, 1, 545, 1, 546, 1, 546, 1, 546, 1, 546, 1, 547, 1, 547, 1, 547, 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, 549, 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, 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, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 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, 557, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 559, 1, 559, 1, 559, 1, 559, 1, 559, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 563, 1, 563, 1, 563, 1, 563, 1, 563, 1, 564, 1, 564, 1, 564, 1, 564, 1, 564, 1, 564, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 566, 1, 566, 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, 570, 1, 570, 1, 570, 1, 570, 1, 570, 1, 571, 1, 571, 1, 571, 1, 571, 1, 572, 1, 572, 1, 572, 1, 572, 1, 572, 1, 573, 1, 573, 1, 573, 1, 573, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 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, 581, 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, 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, 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, 585, 1, 585, 1, 585, 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, 587, 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, 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, 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, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 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, 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, 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, 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, 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, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 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, 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, 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, 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, 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, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 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, 615, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 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, 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, 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, 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, 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, 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, 626, 1, 626, 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, 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, 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, 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, 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, 635, 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, 637, 1, 637, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 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, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 647, 1, 647, 5, 647, 6396, 8, 647, 10, 647, 12, 647, 6399, 9, 647, 1, 648, 1, 648, 1, 648, 1, 648, 1, 648, 1, 648, 3, 648, 6407, 8, 648, 1, 649, 1, 649, 3, 649, 6411, 8, 649, 1, 650, 1, 650, 3, 650, 6415, 8, 650, 1, 651, 1, 651, 1, 651, 1, 652, 1, 652, 1, 652, 1, 652, 5, 652, 6424, 8, 652, 10, 652, 12, 652, 6427, 9, 652, 1, 653, 1, 653, 1, 653, 1, 654, 1, 654, 1, 654, 1, 654, 5, 654, 6436, 8, 654, 10, 654, 12, 654, 6439, 9, 654, 1, 655, 1, 655, 1, 655, 1, 655, 1, 656, 1, 656, 1, 656, 1, 656, 1, 657, 1, 657, 1, 657, 1, 657, 1, 658, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 1, 659, 1, 660, 1, 660, 1, 660, 1, 660, 5, 660, 6464, 8, 660, 10, 660, 12, 660, 6467, 9, 660, 1, 661, 1, 661, 1, 661, 1, 661, 1, 661, 1, 661, 1, 662, 1, 662, 1, 662, 1, 663, 1, 663, 1, 663, 1, 663, 1, 664, 1, 664, 3, 664, 6484, 8, 664, 1, 664, 1, 664, 1, 664, 1, 664, 1, 664, 1, 665, 1, 665, 5, 665, 6493, 8, 665, 10, 665, 12, 665, 6496, 9, 665, 1, 666, 1, 666, 1, 666, 1, 667, 1, 667, 1, 667, 5, 667, 6504, 8, 667, 10, 667, 12, 667, 6507, 9, 667, 1, 668, 1, 668, 1, 668, 1, 669, 1, 669, 1, 669, 1, 670, 1, 670, 1, 670, 1, 671, 1, 671, 1, 671, 5, 671, 6521, 8, 671, 10, 671, 12, 671, 6524, 9, 671, 1, 672, 1, 672, 1, 672, 1, 673, 1, 673, 1, 673, 1, 674, 1, 674, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 676, 1, 676, 1, 676, 3, 676, 6543, 8, 676, 1, 676, 1, 676, 3, 676, 6547, 8, 676, 1, 676, 3, 676, 6550, 8, 676, 1, 676, 1, 676, 1, 676, 1, 676, 3, 676, 6556, 8, 676, 1, 676, 3, 676, 6559, 8, 676, 1, 676, 1, 676, 1, 676, 3, 676, 6564, 8, 676, 1, 676, 1, 676, 3, 676, 6568, 8, 676, 1, 677, 4, 677, 6571, 8, 677, 11, 677, 12, 677, 6572, 1, 678, 1, 678, 1, 678, 5, 678, 6578, 8, 678, 10, 678, 12, 678, 6581, 9, 678, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 5, 679, 6591, 8, 679, 10, 679, 12, 679, 6594, 9, 679, 1, 679, 1, 679, 1, 680, 4, 680, 6599, 8, 680, 11, 680, 12, 680, 6600, 1, 680, 1, 680, 1, 681, 1, 681, 3, 681, 6607, 8, 681, 1, 681, 3, 681, 6610, 8, 681, 1, 681, 1, 681, 1, 682, 1, 682, 1, 682, 1, 682, 5, 682, 6618, 8, 682, 10, 682, 12, 682, 6621, 9, 682, 1, 682, 1, 682, 1, 683, 1, 683, 1, 683, 1, 683, 5, 683, 6629, 8, 683, 10, 683, 12, 683, 6632, 9, 683, 1, 683, 1, 683, 1, 683, 4, 683, 6637, 8, 683, 11, 683, 12, 683, 6638, 1, 683, 1, 683, 4, 683, 6643, 8, 683, 11, 683, 12, 683, 6644, 1, 683, 5, 683, 6648, 8, 683, 10, 683, 12, 683, 6651, 9, 683, 1, 683, 5, 683, 6654, 8, 683, 10, 683, 12, 683, 6657, 9, 683, 1, 683, 1, 683, 1, 683, 1, 683, 1, 683, 1, 684, 1, 684, 1, 684, 1, 684, 5, 684, 6668, 8, 684, 10, 684, 12, 684, 6671, 9, 684, 1, 684, 1, 684, 1, 684, 4, 684, 6676, 8, 684, 11, 684, 12, 684, 6677, 1, 684, 1, 684, 4, 684, 6682, 8, 684, 11, 684, 12, 684, 6683, 1, 684, 3, 684, 6687, 8, 684, 5, 684, 6689, 8, 684, 10, 684, 12, 684, 6692, 9, 684, 1, 684, 4, 684, 6695, 8, 684, 11, 684, 12, 684, 6696, 1, 684, 4, 684, 6700, 8, 684, 11, 684, 12, 684, 6701, 1, 684, 5, 684, 6705, 8, 684, 10, 684, 12, 684, 6708, 9, 684, 1, 684, 3, 684, 6711, 8, 684, 1, 684, 1, 684, 1, 685, 1, 685, 1, 685, 1, 685, 5, 685, 6719, 8, 685, 10, 685, 12, 685, 6722, 9, 685, 1, 685, 5, 685, 6725, 8, 685, 10, 685, 12, 685, 6728, 9, 685, 1, 685, 1, 685, 5, 685, 6732, 8, 685, 10, 685, 12, 685, 6735, 9, 685, 3, 685, 6737, 8, 685, 1, 686, 1, 686, 1, 686, 1, 687, 1, 687, 1, 688, 1, 688, 1, 688, 1, 688, 1, 688, 1, 689, 1, 689, 3, 689, 6751, 8, 689, 1, 689, 1, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 3, 690, 6775, 8, 690, 1, 690, 5, 690, 6778, 8, 690, 10, 690, 12, 690, 6781, 9, 690, 1, 691, 1, 691, 1, 691, 1, 691, 1, 691, 1, 692, 1, 692, 3, 692, 6790, 8, 692, 1, 692, 1, 692, 1, 693, 1, 693, 1, 693, 1, 693, 1, 693, 5, 693, 6799, 8, 693, 10, 693, 12, 693, 6802, 9, 693, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 695, 1, 695, 1, 695, 1, 695, 1, 695, 1, 695, 1, 696, 1, 696, 1, 696, 1, 696, 1, 696, 1, 697, 1, 697, 1, 697, 1, 697, 1, 697, 1, 698, 1, 698, 1, 698, 1, 698, 1, 698, 1, 699, 1, 699, 1, 699, 1, 699, 1, 699, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 701, 4, 701, 6841, 8, 701, 11, 701, 12, 701, 6842, 1, 701, 1, 701, 5, 701, 6847, 8, 701, 10, 701, 12, 701, 6850, 9, 701, 3, 701, 6852, 8, 701, 1, 702, 1, 702, 3, 702, 6856, 8, 702, 1, 702, 1, 702, 1, 702, 1, 702, 1, 702, 1, 702, 1, 702, 0, 0, 703, 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, 639, 1291, 640, 1293, 641, 1295, 642, 1297, 643, 1299, 644, 1301, 0, 1303, 0, 1305, 0, 1307, 645, 1309, 646, 1311, 647, 1313, 648, 1315, 649, 1317, 650, 1319, 651, 1321, 652, 1323, 653, 1325, 654, 1327, 0, 1329, 655, 1331, 656, 1333, 657, 1335, 0, 1337, 658, 1339, 659, 1341, 660, 1343, 661, 1345, 662, 1347, 663, 1349, 664, 1351, 665, 1353, 666, 1355, 667, 1357, 668, 1359, 0, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 673, 1371, 674, 1373, 675, 1375, 676, 1377, 677, 1379, 678, 1381, 679, 1383, 680, 1385, 0, 1387, 681, 1389, 682, 1391, 0, 1393, 0, 1395, 0, 1397, 683, 1399, 0, 1401, 0, 1403, 687, 1405, 684, 1407, 685, 1409, 686, 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, 87, 87, 119, 119, 2, 0, 81, 81, 113, 113, 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, 6936, 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, 1289, 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, 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, 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, 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, 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, 1361, 1, 0, 0, 0, 0, 1363, 1, 0, 0, 0, 0, 1365, 1, 0, 0, 0, 0, 1367, 1, 0, 0, 0, 0, 1369, 1, 0, 0, 0, 0, 1371, 1, 0, 0, 0, 0, 1373, 1, 0, 0, 0, 0, 1375, 1, 0, 0, 0, 0, 1377, 1, 0, 0, 0, 0, 1379, 1, 0, 0, 0, 1, 1381, 1, 0, 0, 0, 1, 1383, 1, 0, 0, 0, 1, 1387, 1, 0, 0, 0, 1, 1389, 1, 0, 0, 0, 2, 1393, 1, 0, 0, 0, 2, 1395, 1, 0, 0, 0, 2, 1397, 1, 0, 0, 0, 3, 1399, 1, 0, 0, 0, 3, 1401, 1, 0, 0, 0, 3, 1403, 1, 0, 0, 0, 3, 1405, 1, 0, 0, 0, 4, 1407, 1, 0, 0, 0, 4, 1409, 1, 0, 0, 0, 5, 1411, 1, 0, 0, 0, 7, 1413, 1, 0, 0, 0, 9, 1415, 1, 0, 0, 0, 11, 1417, 1, 0, 0, 0, 13, 1419, 1, 0, 0, 0, 15, 1421, 1, 0, 0, 0, 17, 1423, 1, 0, 0, 0, 19, 1425, 1, 0, 0, 0, 21, 1427, 1, 0, 0, 0, 23, 1429, 1, 0, 0, 0, 25, 1431, 1, 0, 0, 0, 27, 1433, 1, 0, 0, 0, 29, 1435, 1, 0, 0, 0, 31, 1437, 1, 0, 0, 0, 33, 1439, 1, 0, 0, 0, 35, 1441, 1, 0, 0, 0, 37, 1443, 1, 0, 0, 0, 39, 1445, 1, 0, 0, 0, 41, 1448, 1, 0, 0, 0, 43, 1451, 1, 0, 0, 0, 45, 1454, 1, 0, 0, 0, 47, 1457, 1, 0, 0, 0, 49, 1460, 1, 0, 0, 0, 51, 1463, 1, 0, 0, 0, 53, 1466, 1, 0, 0, 0, 55, 1469, 1, 0, 0, 0, 57, 1472, 1, 0, 0, 0, 59, 1474, 1, 0, 0, 0, 61, 1500, 1, 0, 0, 0, 63, 1511, 1, 0, 0, 0, 65, 1527, 1, 0, 0, 0, 67, 1529, 1, 0, 0, 0, 69, 1531, 1, 0, 0, 0, 71, 1533, 1, 0, 0, 0, 73, 1537, 1, 0, 0, 0, 75, 1545, 1, 0, 0, 0, 77, 1553, 1, 0, 0, 0, 79, 1557, 1, 0, 0, 0, 81, 1561, 1, 0, 0, 0, 83, 1567, 1, 0, 0, 0, 85, 1570, 1, 0, 0, 0, 87, 1574, 1, 0, 0, 0, 89, 1585, 1, 0, 0, 0, 91, 1590, 1, 0, 0, 0, 93, 1595, 1, 0, 0, 0, 95, 1600, 1, 0, 0, 0, 97, 1606, 1, 0, 0, 0, 99, 1614, 1, 0, 0, 0, 101, 1621, 1, 0, 0, 0, 103, 1632, 1, 0, 0, 0, 105, 1639, 1, 0, 0, 0, 107, 1655, 1, 0, 0, 0, 109, 1668, 1, 0, 0, 0, 111, 1681, 1, 0, 0, 0, 113, 1694, 1, 0, 0, 0, 115, 1712, 1, 0, 0, 0, 117, 1725, 1, 0, 0, 0, 119, 1733, 1, 0, 0, 0, 121, 1744, 1, 0, 0, 0, 123, 1749, 1, 0, 0, 0, 125, 1758, 1, 0, 0, 0, 127, 1761, 1, 0, 0, 0, 129, 1766, 1, 0, 0, 0, 131, 1773, 1, 0, 0, 0, 133, 1779, 1, 0, 0, 0, 135, 1785, 1, 0, 0, 0, 137, 1789, 1, 0, 0, 0, 139, 1797, 1, 0, 0, 0, 141, 1802, 1, 0, 0, 0, 143, 1808, 1, 0, 0, 0, 145, 1814, 1, 0, 0, 0, 147, 1821, 1, 0, 0, 0, 149, 1824, 1, 0, 0, 0, 151, 1834, 1, 0, 0, 0, 153, 1844, 1, 0, 0, 0, 155, 1849, 1, 0, 0, 0, 157, 1857, 1, 0, 0, 0, 159, 1865, 1, 0, 0, 0, 161, 1871, 1, 0, 0, 0, 163, 1881, 1, 0, 0, 0, 165, 1896, 1, 0, 0, 0, 167, 1900, 1, 0, 0, 0, 169, 1905, 1, 0, 0, 0, 171, 1912, 1, 0, 0, 0, 173, 1915, 1, 0, 0, 0, 175, 1920, 1, 0, 0, 0, 177, 1923, 1, 0, 0, 0, 179, 1929, 1, 0, 0, 0, 181, 1937, 1, 0, 0, 0, 183, 1945, 1, 0, 0, 0, 185, 1956, 1, 0, 0, 0, 187, 1966, 1, 0, 0, 0, 189, 1973, 1, 0, 0, 0, 191, 1986, 1, 0, 0, 0, 193, 1991, 1, 0, 0, 0, 195, 2001, 1, 0, 0, 0, 197, 2007, 1, 0, 0, 0, 199, 2014, 1, 0, 0, 0, 201, 2019, 1, 0, 0, 0, 203, 2022, 1, 0, 0, 0, 205, 2031, 1, 0, 0, 0, 207, 2037, 1, 0, 0, 0, 209, 2044, 1, 0, 0, 0, 211, 2051, 1, 0, 0, 0, 213, 2057, 1, 0, 0, 0, 215, 2064, 1, 0, 0, 0, 217, 2073, 1, 0, 0, 0, 219, 2078, 1, 0, 0, 0, 221, 2084, 1, 0, 0, 0, 223, 2091, 1, 0, 0, 0, 225, 2096, 1, 0, 0, 0, 227, 2102, 1, 0, 0, 0, 229, 2111, 1, 0, 0, 0, 231, 2116, 1, 0, 0, 0, 233, 2122, 1, 0, 0, 0, 235, 2129, 1, 0, 0, 0, 237, 2134, 1, 0, 0, 0, 239, 2148, 1, 0, 0, 0, 241, 2155, 1, 0, 0, 0, 243, 2165, 1, 0, 0, 0, 245, 2178, 1, 0, 0, 0, 247, 2184, 1, 0, 0, 0, 249, 2199, 1, 0, 0, 0, 251, 2206, 1, 0, 0, 0, 253, 2211, 1, 0, 0, 0, 255, 2217, 1, 0, 0, 0, 257, 2223, 1, 0, 0, 0, 259, 2226, 1, 0, 0, 0, 261, 2233, 1, 0, 0, 0, 263, 2238, 1, 0, 0, 0, 265, 2243, 1, 0, 0, 0, 267, 2248, 1, 0, 0, 0, 269, 2256, 1, 0, 0, 0, 271, 2264, 1, 0, 0, 0, 273, 2270, 1, 0, 0, 0, 275, 2275, 1, 0, 0, 0, 277, 2284, 1, 0, 0, 0, 279, 2290, 1, 0, 0, 0, 281, 2298, 1, 0, 0, 0, 283, 2306, 1, 0, 0, 0, 285, 2312, 1, 0, 0, 0, 287, 2321, 1, 0, 0, 0, 289, 2328, 1, 0, 0, 0, 291, 2335, 1, 0, 0, 0, 293, 2339, 1, 0, 0, 0, 295, 2345, 1, 0, 0, 0, 297, 2351, 1, 0, 0, 0, 299, 2361, 1, 0, 0, 0, 301, 2366, 1, 0, 0, 0, 303, 2372, 1, 0, 0, 0, 305, 2379, 1, 0, 0, 0, 307, 2389, 1, 0, 0, 0, 309, 2400, 1, 0, 0, 0, 311, 2403, 1, 0, 0, 0, 313, 2413, 1, 0, 0, 0, 315, 2422, 1, 0, 0, 0, 317, 2429, 1, 0, 0, 0, 319, 2435, 1, 0, 0, 0, 321, 2438, 1, 0, 0, 0, 323, 2444, 1, 0, 0, 0, 325, 2451, 1, 0, 0, 0, 327, 2459, 1, 0, 0, 0, 329, 2468, 1, 0, 0, 0, 331, 2476, 1, 0, 0, 0, 333, 2482, 1, 0, 0, 0, 335, 2498, 1, 0, 0, 0, 337, 2509, 1, 0, 0, 0, 339, 2515, 1, 0, 0, 0, 341, 2521, 1, 0, 0, 0, 343, 2529, 1, 0, 0, 0, 345, 2537, 1, 0, 0, 0, 347, 2546, 1, 0, 0, 0, 349, 2553, 1, 0, 0, 0, 351, 2563, 1, 0, 0, 0, 353, 2577, 1, 0, 0, 0, 355, 2588, 1, 0, 0, 0, 357, 2600, 1, 0, 0, 0, 359, 2608, 1, 0, 0, 0, 361, 2617, 1, 0, 0, 0, 363, 2628, 1, 0, 0, 0, 365, 2633, 1, 0, 0, 0, 367, 2638, 1, 0, 0, 0, 369, 2642, 1, 0, 0, 0, 371, 2649, 1, 0, 0, 0, 373, 2655, 1, 0, 0, 0, 375, 2660, 1, 0, 0, 0, 377, 2669, 1, 0, 0, 0, 379, 2673, 1, 0, 0, 0, 381, 2684, 1, 0, 0, 0, 383, 2692, 1, 0, 0, 0, 385, 2701, 1, 0, 0, 0, 387, 2710, 1, 0, 0, 0, 389, 2718, 1, 0, 0, 0, 391, 2725, 1, 0, 0, 0, 393, 2735, 1, 0, 0, 0, 395, 2746, 1, 0, 0, 0, 397, 2757, 1, 0, 0, 0, 399, 2765, 1, 0, 0, 0, 401, 2773, 1, 0, 0, 0, 403, 2782, 1, 0, 0, 0, 405, 2789, 1, 0, 0, 0, 407, 2796, 1, 0, 0, 0, 409, 2801, 1, 0, 0, 0, 411, 2806, 1, 0, 0, 0, 413, 2813, 1, 0, 0, 0, 415, 2822, 1, 0, 0, 0, 417, 2832, 1, 0, 0, 0, 419, 2837, 1, 0, 0, 0, 421, 2844, 1, 0, 0, 0, 423, 2850, 1, 0, 0, 0, 425, 2858, 1, 0, 0, 0, 427, 2868, 1, 0, 0, 0, 429, 2878, 1, 0, 0, 0, 431, 2886, 1, 0, 0, 0, 433, 2894, 1, 0, 0, 0, 435, 2904, 1, 0, 0, 0, 437, 2913, 1, 0, 0, 0, 439, 2920, 1, 0, 0, 0, 441, 2926, 1, 0, 0, 0, 443, 2936, 1, 0, 0, 0, 445, 2942, 1, 0, 0, 0, 447, 2950, 1, 0, 0, 0, 449, 2959, 1, 0, 0, 0, 451, 2969, 1, 0, 0, 0, 453, 2976, 1, 0, 0, 0, 455, 2984, 1, 0, 0, 0, 457, 2992, 1, 0, 0, 0, 459, 2999, 1, 0, 0, 0, 461, 3004, 1, 0, 0, 0, 463, 3009, 1, 0, 0, 0, 465, 3018, 1, 0, 0, 0, 467, 3021, 1, 0, 0, 0, 469, 3031, 1, 0, 0, 0, 471, 3041, 1, 0, 0, 0, 473, 3050, 1, 0, 0, 0, 475, 3060, 1, 0, 0, 0, 477, 3070, 1, 0, 0, 0, 479, 3076, 1, 0, 0, 0, 481, 3084, 1, 0, 0, 0, 483, 3092, 1, 0, 0, 0, 485, 3101, 1, 0, 0, 0, 487, 3108, 1, 0, 0, 0, 489, 3120, 1, 0, 0, 0, 491, 3127, 1, 0, 0, 0, 493, 3135, 1, 0, 0, 0, 495, 3143, 1, 0, 0, 0, 497, 3153, 1, 0, 0, 0, 499, 3157, 1, 0, 0, 0, 501, 3163, 1, 0, 0, 0, 503, 3172, 1, 0, 0, 0, 505, 3178, 1, 0, 0, 0, 507, 3183, 1, 0, 0, 0, 509, 3193, 1, 0, 0, 0, 511, 3199, 1, 0, 0, 0, 513, 3206, 1, 0, 0, 0, 515, 3211, 1, 0, 0, 0, 517, 3217, 1, 0, 0, 0, 519, 3226, 1, 0, 0, 0, 521, 3231, 1, 0, 0, 0, 523, 3239, 1, 0, 0, 0, 525, 3245, 1, 0, 0, 0, 527, 3253, 1, 0, 0, 0, 529, 3266, 1, 0, 0, 0, 531, 3275, 1, 0, 0, 0, 533, 3281, 1, 0, 0, 0, 535, 3288, 1, 0, 0, 0, 537, 3297, 1, 0, 0, 0, 539, 3302, 1, 0, 0, 0, 541, 3308, 1, 0, 0, 0, 543, 3313, 1, 0, 0, 0, 545, 3318, 1, 0, 0, 0, 547, 3324, 1, 0, 0, 0, 549, 3329, 1, 0, 0, 0, 551, 3332, 1, 0, 0, 0, 553, 3340, 1, 0, 0, 0, 555, 3347, 1, 0, 0, 0, 557, 3354, 1, 0, 0, 0, 559, 3360, 1, 0, 0, 0, 561, 3367, 1, 0, 0, 0, 563, 3370, 1, 0, 0, 0, 565, 3374, 1, 0, 0, 0, 567, 3379, 1, 0, 0, 0, 569, 3388, 1, 0, 0, 0, 571, 3395, 1, 0, 0, 0, 573, 3403, 1, 0, 0, 0, 575, 3409, 1, 0, 0, 0, 577, 3415, 1, 0, 0, 0, 579, 3422, 1, 0, 0, 0, 581, 3430, 1, 0, 0, 0, 583, 3440, 1, 0, 0, 0, 585, 3448, 1, 0, 0, 0, 587, 3457, 1, 0, 0, 0, 589, 3463, 1, 0, 0, 0, 591, 3473, 1, 0, 0, 0, 593, 3481, 1, 0, 0, 0, 595, 3490, 1, 0, 0, 0, 597, 3499, 1, 0, 0, 0, 599, 3505, 1, 0, 0, 0, 601, 3516, 1, 0, 0, 0, 603, 3527, 1, 0, 0, 0, 605, 3537, 1, 0, 0, 0, 607, 3545, 1, 0, 0, 0, 609, 3551, 1, 0, 0, 0, 611, 3557, 1, 0, 0, 0, 613, 3562, 1, 0, 0, 0, 615, 3571, 1, 0, 0, 0, 617, 3579, 1, 0, 0, 0, 619, 3589, 1, 0, 0, 0, 621, 3593, 1, 0, 0, 0, 623, 3601, 1, 0, 0, 0, 625, 3609, 1, 0, 0, 0, 627, 3618, 1, 0, 0, 0, 629, 3626, 1, 0, 0, 0, 631, 3633, 1, 0, 0, 0, 633, 3644, 1, 0, 0, 0, 635, 3652, 1, 0, 0, 0, 637, 3660, 1, 0, 0, 0, 639, 3666, 1, 0, 0, 0, 641, 3674, 1, 0, 0, 0, 643, 3683, 1, 0, 0, 0, 645, 3691, 1, 0, 0, 0, 647, 3698, 1, 0, 0, 0, 649, 3703, 1, 0, 0, 0, 651, 3712, 1, 0, 0, 0, 653, 3717, 1, 0, 0, 0, 655, 3722, 1, 0, 0, 0, 657, 3732, 1, 0, 0, 0, 659, 3739, 1, 0, 0, 0, 661, 3746, 1, 0, 0, 0, 663, 3753, 1, 0, 0, 0, 665, 3760, 1, 0, 0, 0, 667, 3769, 1, 0, 0, 0, 669, 3778, 1, 0, 0, 0, 671, 3788, 1, 0, 0, 0, 673, 3801, 1, 0, 0, 0, 675, 3808, 1, 0, 0, 0, 677, 3816, 1, 0, 0, 0, 679, 3820, 1, 0, 0, 0, 681, 3826, 1, 0, 0, 0, 683, 3831, 1, 0, 0, 0, 685, 3838, 1, 0, 0, 0, 687, 3847, 1, 0, 0, 0, 689, 3854, 1, 0, 0, 0, 691, 3865, 1, 0, 0, 0, 693, 3871, 1, 0, 0, 0, 695, 3881, 1, 0, 0, 0, 697, 3892, 1, 0, 0, 0, 699, 3898, 1, 0, 0, 0, 701, 3905, 1, 0, 0, 0, 703, 3913, 1, 0, 0, 0, 705, 3920, 1, 0, 0, 0, 707, 3926, 1, 0, 0, 0, 709, 3932, 1, 0, 0, 0, 711, 3939, 1, 0, 0, 0, 713, 3946, 1, 0, 0, 0, 715, 3954, 1, 0, 0, 0, 717, 3965, 1, 0, 0, 0, 719, 3970, 1, 0, 0, 0, 721, 3979, 1, 0, 0, 0, 723, 3989, 1, 0, 0, 0, 725, 3994, 1, 0, 0, 0, 727, 4006, 1, 0, 0, 0, 729, 4014, 1, 0, 0, 0, 731, 4023, 1, 0, 0, 0, 733, 4031, 1, 0, 0, 0, 735, 4036, 1, 0, 0, 0, 737, 4042, 1, 0, 0, 0, 739, 4052, 1, 0, 0, 0, 741, 4064, 1, 0, 0, 0, 743, 4076, 1, 0, 0, 0, 745, 4084, 1, 0, 0, 0, 747, 4093, 1, 0, 0, 0, 749, 4102, 1, 0, 0, 0, 751, 4108, 1, 0, 0, 0, 753, 4115, 1, 0, 0, 0, 755, 4122, 1, 0, 0, 0, 757, 4128, 1, 0, 0, 0, 759, 4137, 1, 0, 0, 0, 761, 4147, 1, 0, 0, 0, 763, 4155, 1, 0, 0, 0, 765, 4163, 1, 0, 0, 0, 767, 4168, 1, 0, 0, 0, 769, 4177, 1, 0, 0, 0, 771, 4188, 1, 0, 0, 0, 773, 4196, 1, 0, 0, 0, 775, 4201, 1, 0, 0, 0, 777, 4209, 1, 0, 0, 0, 779, 4215, 1, 0, 0, 0, 781, 4219, 1, 0, 0, 0, 783, 4224, 1, 0, 0, 0, 785, 4228, 1, 0, 0, 0, 787, 4233, 1, 0, 0, 0, 789, 4241, 1, 0, 0, 0, 791, 4248, 1, 0, 0, 0, 793, 4252, 1, 0, 0, 0, 795, 4260, 1, 0, 0, 0, 797, 4265, 1, 0, 0, 0, 799, 4275, 1, 0, 0, 0, 801, 4284, 1, 0, 0, 0, 803, 4288, 1, 0, 0, 0, 805, 4296, 1, 0, 0, 0, 807, 4303, 1, 0, 0, 0, 809, 4311, 1, 0, 0, 0, 811, 4317, 1, 0, 0, 0, 813, 4326, 1, 0, 0, 0, 815, 4332, 1, 0, 0, 0, 817, 4336, 1, 0, 0, 0, 819, 4344, 1, 0, 0, 0, 821, 4353, 1, 0, 0, 0, 823, 4359, 1, 0, 0, 0, 825, 4368, 1, 0, 0, 0, 827, 4374, 1, 0, 0, 0, 829, 4379, 1, 0, 0, 0, 831, 4386, 1, 0, 0, 0, 833, 4394, 1, 0, 0, 0, 835, 4402, 1, 0, 0, 0, 837, 4411, 1, 0, 0, 0, 839, 4421, 1, 0, 0, 0, 841, 4426, 1, 0, 0, 0, 843, 4430, 1, 0, 0, 0, 845, 4436, 1, 0, 0, 0, 847, 4445, 1, 0, 0, 0, 849, 4455, 1, 0, 0, 0, 851, 4460, 1, 0, 0, 0, 853, 4470, 1, 0, 0, 0, 855, 4476, 1, 0, 0, 0, 857, 4481, 1, 0, 0, 0, 859, 4488, 1, 0, 0, 0, 861, 4496, 1, 0, 0, 0, 863, 4510, 1, 0, 0, 0, 865, 4521, 1, 0, 0, 0, 867, 4528, 1, 0, 0, 0, 869, 4547, 1, 0, 0, 0, 871, 4575, 1, 0, 0, 0, 873, 4602, 1, 0, 0, 0, 875, 4608, 1, 0, 0, 0, 877, 4621, 1, 0, 0, 0, 879, 4631, 1, 0, 0, 0, 881, 4642, 1, 0, 0, 0, 883, 4652, 1, 0, 0, 0, 885, 4662, 1, 0, 0, 0, 887, 4671, 1, 0, 0, 0, 889, 4677, 1, 0, 0, 0, 891, 4685, 1, 0, 0, 0, 893, 4698, 1, 0, 0, 0, 895, 4703, 1, 0, 0, 0, 897, 4711, 1, 0, 0, 0, 899, 4718, 1, 0, 0, 0, 901, 4725, 1, 0, 0, 0, 903, 4736, 1, 0, 0, 0, 905, 4746, 1, 0, 0, 0, 907, 4753, 1, 0, 0, 0, 909, 4760, 1, 0, 0, 0, 911, 4768, 1, 0, 0, 0, 913, 4776, 1, 0, 0, 0, 915, 4786, 1, 0, 0, 0, 917, 4793, 1, 0, 0, 0, 919, 4800, 1, 0, 0, 0, 921, 4807, 1, 0, 0, 0, 923, 4819, 1, 0, 0, 0, 925, 4823, 1, 0, 0, 0, 927, 4827, 1, 0, 0, 0, 929, 4833, 1, 0, 0, 0, 931, 4846, 1, 0, 0, 0, 933, 4858, 1, 0, 0, 0, 935, 4862, 1, 0, 0, 0, 937, 4866, 1, 0, 0, 0, 939, 4875, 1, 0, 0, 0, 941, 4883, 1, 0, 0, 0, 943, 4894, 1, 0, 0, 0, 945, 4900, 1, 0, 0, 0, 947, 4908, 1, 0, 0, 0, 949, 4917, 1, 0, 0, 0, 951, 4921, 1, 0, 0, 0, 953, 4929, 1, 0, 0, 0, 955, 4940, 1, 0, 0, 0, 957, 4949, 1, 0, 0, 0, 959, 4954, 1, 0, 0, 0, 961, 4961, 1, 0, 0, 0, 963, 4966, 1, 0, 0, 0, 965, 4973, 1, 0, 0, 0, 967, 4978, 1, 0, 0, 0, 969, 4987, 1, 0, 0, 0, 971, 4992, 1, 0, 0, 0, 973, 5004, 1, 0, 0, 0, 975, 5015, 1, 0, 0, 0, 977, 5024, 1, 0, 0, 0, 979, 5032, 1, 0, 0, 0, 981, 5046, 1, 0, 0, 0, 983, 5054, 1, 0, 0, 0, 985, 5065, 1, 0, 0, 0, 987, 5072, 1, 0, 0, 0, 989, 5079, 1, 0, 0, 0, 991, 5086, 1, 0, 0, 0, 993, 5093, 1, 0, 0, 0, 995, 5097, 1, 0, 0, 0, 997, 5101, 1, 0, 0, 0, 999, 5106, 1, 0, 0, 0, 1001, 5111, 1, 0, 0, 0, 1003, 5119, 1, 0, 0, 0, 1005, 5125, 1, 0, 0, 0, 1007, 5135, 1, 0, 0, 0, 1009, 5140, 1, 0, 0, 0, 1011, 5160, 1, 0, 0, 0, 1013, 5178, 1, 0, 0, 0, 1015, 5184, 1, 0, 0, 0, 1017, 5197, 1, 0, 0, 0, 1019, 5208, 1, 0, 0, 0, 1021, 5214, 1, 0, 0, 0, 1023, 5223, 1, 0, 0, 0, 1025, 5231, 1, 0, 0, 0, 1027, 5235, 1, 0, 0, 0, 1029, 5247, 1, 0, 0, 0, 1031, 5255, 1, 0, 0, 0, 1033, 5261, 1, 0, 0, 0, 1035, 5267, 1, 0, 0, 0, 1037, 5275, 1, 0, 0, 0, 1039, 5283, 1, 0, 0, 0, 1041, 5289, 1, 0, 0, 0, 1043, 5294, 1, 0, 0, 0, 1045, 5301, 1, 0, 0, 0, 1047, 5307, 1, 0, 0, 0, 1049, 5313, 1, 0, 0, 0, 1051, 5322, 1, 0, 0, 0, 1053, 5328, 1, 0, 0, 0, 1055, 5332, 1, 0, 0, 0, 1057, 5337, 1, 0, 0, 0, 1059, 5344, 1, 0, 0, 0, 1061, 5352, 1, 0, 0, 0, 1063, 5362, 1, 0, 0, 0, 1065, 5369, 1, 0, 0, 0, 1067, 5374, 1, 0, 0, 0, 1069, 5379, 1, 0, 0, 0, 1071, 5383, 1, 0, 0, 0, 1073, 5388, 1, 0, 0, 0, 1075, 5393, 1, 0, 0, 0, 1077, 5401, 1, 0, 0, 0, 1079, 5409, 1, 0, 0, 0, 1081, 5413, 1, 0, 0, 0, 1083, 5417, 1, 0, 0, 0, 1085, 5427, 1, 0, 0, 0, 1087, 5433, 1, 0, 0, 0, 1089, 5437, 1, 0, 0, 0, 1091, 5441, 1, 0, 0, 0, 1093, 5444, 1, 0, 0, 0, 1095, 5450, 1, 0, 0, 0, 1097, 5460, 1, 0, 0, 0, 1099, 5464, 1, 0, 0, 0, 1101, 5467, 1, 0, 0, 0, 1103, 5473, 1, 0, 0, 0, 1105, 5481, 1, 0, 0, 0, 1107, 5487, 1, 0, 0, 0, 1109, 5493, 1, 0, 0, 0, 1111, 5498, 1, 0, 0, 0, 1113, 5503, 1, 0, 0, 0, 1115, 5514, 1, 0, 0, 0, 1117, 5520, 1, 0, 0, 0, 1119, 5533, 1, 0, 0, 0, 1121, 5540, 1, 0, 0, 0, 1123, 5548, 1, 0, 0, 0, 1125, 5553, 1, 0, 0, 0, 1127, 5559, 1, 0, 0, 0, 1129, 5564, 1, 0, 0, 0, 1131, 5570, 1, 0, 0, 0, 1133, 5575, 1, 0, 0, 0, 1135, 5581, 1, 0, 0, 0, 1137, 5587, 1, 0, 0, 0, 1139, 5594, 1, 0, 0, 0, 1141, 5598, 1, 0, 0, 0, 1143, 5603, 1, 0, 0, 0, 1145, 5607, 1, 0, 0, 0, 1147, 5612, 1, 0, 0, 0, 1149, 5616, 1, 0, 0, 0, 1151, 5621, 1, 0, 0, 0, 1153, 5625, 1, 0, 0, 0, 1155, 5630, 1, 0, 0, 0, 1157, 5635, 1, 0, 0, 0, 1159, 5640, 1, 0, 0, 0, 1161, 5645, 1, 0, 0, 0, 1163, 5651, 1, 0, 0, 0, 1165, 5657, 1, 0, 0, 0, 1167, 5663, 1, 0, 0, 0, 1169, 5674, 1, 0, 0, 0, 1171, 5686, 1, 0, 0, 0, 1173, 5703, 1, 0, 0, 0, 1175, 5709, 1, 0, 0, 0, 1177, 5722, 1, 0, 0, 0, 1179, 5728, 1, 0, 0, 0, 1181, 5734, 1, 0, 0, 0, 1183, 5740, 1, 0, 0, 0, 1185, 5744, 1, 0, 0, 0, 1187, 5751, 1, 0, 0, 0, 1189, 5761, 1, 0, 0, 0, 1191, 5768, 1, 0, 0, 0, 1193, 5776, 1, 0, 0, 0, 1195, 5783, 1, 0, 0, 0, 1197, 5788, 1, 0, 0, 0, 1199, 5794, 1, 0, 0, 0, 1201, 5798, 1, 0, 0, 0, 1203, 5810, 1, 0, 0, 0, 1205, 5829, 1, 0, 0, 0, 1207, 5841, 1, 0, 0, 0, 1209, 5855, 1, 0, 0, 0, 1211, 5870, 1, 0, 0, 0, 1213, 5883, 1, 0, 0, 0, 1215, 5896, 1, 0, 0, 0, 1217, 5908, 1, 0, 0, 0, 1219, 5921, 1, 0, 0, 0, 1221, 5936, 1, 0, 0, 0, 1223, 5951, 1, 0, 0, 0, 1225, 5973, 1, 0, 0, 0, 1227, 5995, 1, 0, 0, 0, 1229, 6009, 1, 0, 0, 0, 1231, 6016, 1, 0, 0, 0, 1233, 6021, 1, 0, 0, 0, 1235, 6027, 1, 0, 0, 0, 1237, 6038, 1, 0, 0, 0, 1239, 6050, 1, 0, 0, 0, 1241, 6066, 1, 0, 0, 0, 1243, 6082, 1, 0, 0, 0, 1245, 6089, 1, 0, 0, 0, 1247, 6096, 1, 0, 0, 0, 1249, 6105, 1, 0, 0, 0, 1251, 6112, 1, 0, 0, 0, 1253, 6122, 1, 0, 0, 0, 1255, 6129, 1, 0, 0, 0, 1257, 6133, 1, 0, 0, 0, 1259, 6149, 1, 0, 0, 0, 1261, 6158, 1, 0, 0, 0, 1263, 6168, 1, 0, 0, 0, 1265, 6179, 1, 0, 0, 0, 1267, 6188, 1, 0, 0, 0, 1269, 6201, 1, 0, 0, 0, 1271, 6215, 1, 0, 0, 0, 1273, 6232, 1, 0, 0, 0, 1275, 6242, 1, 0, 0, 0, 1277, 6256, 1, 0, 0, 0, 1279, 6266, 1, 0, 0, 0, 1281, 6281, 1, 0, 0, 0, 1283, 6298, 1, 0, 0, 0, 1285, 6302, 1, 0, 0, 0, 1287, 6322, 1, 0, 0, 0, 1289, 6332, 1, 0, 0, 0, 1291, 6354, 1, 0, 0, 0, 1293, 6367, 1, 0, 0, 0, 1295, 6375, 1, 0, 0, 0, 1297, 6383, 1, 0, 0, 0, 1299, 6393, 1, 0, 0, 0, 1301, 6406, 1, 0, 0, 0, 1303, 6410, 1, 0, 0, 0, 1305, 6414, 1, 0, 0, 0, 1307, 6416, 1, 0, 0, 0, 1309, 6419, 1, 0, 0, 0, 1311, 6428, 1, 0, 0, 0, 1313, 6431, 1, 0, 0, 0, 1315, 6440, 1, 0, 0, 0, 1317, 6444, 1, 0, 0, 0, 1319, 6448, 1, 0, 0, 0, 1321, 6452, 1, 0, 0, 0, 1323, 6456, 1, 0, 0, 0, 1325, 6459, 1, 0, 0, 0, 1327, 6468, 1, 0, 0, 0, 1329, 6474, 1, 0, 0, 0, 1331, 6477, 1, 0, 0, 0, 1333, 6481, 1, 0, 0, 0, 1335, 6490, 1, 0, 0, 0, 1337, 6497, 1, 0, 0, 0, 1339, 6500, 1, 0, 0, 0, 1341, 6508, 1, 0, 0, 0, 1343, 6511, 1, 0, 0, 0, 1345, 6514, 1, 0, 0, 0, 1347, 6517, 1, 0, 0, 0, 1349, 6525, 1, 0, 0, 0, 1351, 6528, 1, 0, 0, 0, 1353, 6531, 1, 0, 0, 0, 1355, 6533, 1, 0, 0, 0, 1357, 6567, 1, 0, 0, 0, 1359, 6570, 1, 0, 0, 0, 1361, 6574, 1, 0, 0, 0, 1363, 6582, 1, 0, 0, 0, 1365, 6598, 1, 0, 0, 0, 1367, 6609, 1, 0, 0, 0, 1369, 6613, 1, 0, 0, 0, 1371, 6624, 1, 0, 0, 0, 1373, 6663, 1, 0, 0, 0, 1375, 6714, 1, 0, 0, 0, 1377, 6738, 1, 0, 0, 0, 1379, 6741, 1, 0, 0, 0, 1381, 6743, 1, 0, 0, 0, 1383, 6748, 1, 0, 0, 0, 1385, 6779, 1, 0, 0, 0, 1387, 6782, 1, 0, 0, 0, 1389, 6787, 1, 0, 0, 0, 1391, 6800, 1, 0, 0, 0, 1393, 6803, 1, 0, 0, 0, 1395, 6808, 1, 0, 0, 0, 1397, 6814, 1, 0, 0, 0, 1399, 6819, 1, 0, 0, 0, 1401, 6824, 1, 0, 0, 0, 1403, 6829, 1, 0, 0, 0, 1405, 6834, 1, 0, 0, 0, 1407, 6851, 1, 0, 0, 0, 1409, 6853, 1, 0, 0, 0, 1411, 1412, 5, 36, 0, 0, 1412, 6, 1, 0, 0, 0, 1413, 1414, 5, 40, 0, 0, 1414, 8, 1, 0, 0, 0, 1415, 1416, 5, 41, 0, 0, 1416, 10, 1, 0, 0, 0, 1417, 1418, 5, 91, 0, 0, 1418, 12, 1, 0, 0, 0, 1419, 1420, 5, 93, 0, 0, 1420, 14, 1, 0, 0, 0, 1421, 1422, 5, 44, 0, 0, 1422, 16, 1, 0, 0, 0, 1423, 1424, 5, 59, 0, 0, 1424, 18, 1, 0, 0, 0, 1425, 1426, 5, 58, 0, 0, 1426, 20, 1, 0, 0, 0, 1427, 1428, 5, 42, 0, 0, 1428, 22, 1, 0, 0, 0, 1429, 1430, 5, 61, 0, 0, 1430, 24, 1, 0, 0, 0, 1431, 1432, 5, 46, 0, 0, 1432, 26, 1, 0, 0, 0, 1433, 1434, 5, 43, 0, 0, 1434, 28, 1, 0, 0, 0, 1435, 1436, 5, 45, 0, 0, 1436, 30, 1, 0, 0, 0, 1437, 1438, 5, 47, 0, 0, 1438, 32, 1, 0, 0, 0, 1439, 1440, 5, 94, 0, 0, 1440, 34, 1, 0, 0, 0, 1441, 1442, 5, 60, 0, 0, 1442, 36, 1, 0, 0, 0, 1443, 1444, 5, 62, 0, 0, 1444, 38, 1, 0, 0, 0, 1445, 1446, 5, 60, 0, 0, 1446, 1447, 5, 60, 0, 0, 1447, 40, 1, 0, 0, 0, 1448, 1449, 5, 62, 0, 0, 1449, 1450, 5, 62, 0, 0, 1450, 42, 1, 0, 0, 0, 1451, 1452, 5, 58, 0, 0, 1452, 1453, 5, 61, 0, 0, 1453, 44, 1, 0, 0, 0, 1454, 1455, 5, 60, 0, 0, 1455, 1456, 5, 61, 0, 0, 1456, 46, 1, 0, 0, 0, 1457, 1458, 5, 61, 0, 0, 1458, 1459, 5, 62, 0, 0, 1459, 48, 1, 0, 0, 0, 1460, 1461, 5, 62, 0, 0, 1461, 1462, 5, 61, 0, 0, 1462, 50, 1, 0, 0, 0, 1463, 1464, 5, 46, 0, 0, 1464, 1465, 5, 46, 0, 0, 1465, 52, 1, 0, 0, 0, 1466, 1467, 5, 60, 0, 0, 1467, 1468, 5, 62, 0, 0, 1468, 54, 1, 0, 0, 0, 1469, 1470, 5, 58, 0, 0, 1470, 1471, 5, 58, 0, 0, 1471, 56, 1, 0, 0, 0, 1472, 1473, 5, 37, 0, 0, 1473, 58, 1, 0, 0, 0, 1474, 1476, 5, 36, 0, 0, 1475, 1477, 7, 0, 0, 0, 1476, 1475, 1, 0, 0, 0, 1477, 1478, 1, 0, 0, 0, 1478, 1476, 1, 0, 0, 0, 1478, 1479, 1, 0, 0, 0, 1479, 60, 1, 0, 0, 0, 1480, 1496, 3, 65, 30, 0, 1481, 1485, 5, 43, 0, 0, 1482, 1483, 5, 45, 0, 0, 1483, 1485, 4, 28, 0, 0, 1484, 1481, 1, 0, 0, 0, 1484, 1482, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 1484, 1, 0, 0, 0, 1486, 1487, 1, 0, 0, 0, 1487, 1491, 1, 0, 0, 0, 1488, 1492, 3, 65, 30, 0, 1489, 1490, 5, 47, 0, 0, 1490, 1492, 4, 28, 1, 0, 1491, 1488, 1, 0, 0, 0, 1491, 1489, 1, 0, 0, 0, 1492, 1496, 1, 0, 0, 0, 1493, 1494, 5, 47, 0, 0, 1494, 1496, 4, 28, 2, 0, 1495, 1480, 1, 0, 0, 0, 1495, 1484, 1, 0, 0, 0, 1495, 1493, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1495, 1, 0, 0, 0, 1497, 1498, 1, 0, 0, 0, 1498, 1501, 1, 0, 0, 0, 1499, 1501, 7, 1, 0, 0, 1500, 1495, 1, 0, 0, 0, 1500, 1499, 1, 0, 0, 0, 1501, 1502, 1, 0, 0, 0, 1502, 1503, 6, 28, 0, 0, 1503, 62, 1, 0, 0, 0, 1504, 1510, 3, 67, 31, 0, 1505, 1506, 5, 45, 0, 0, 1506, 1510, 4, 29, 3, 0, 1507, 1508, 5, 47, 0, 0, 1508, 1510, 4, 29, 4, 0, 1509, 1504, 1, 0, 0, 0, 1509, 1505, 1, 0, 0, 0, 1509, 1507, 1, 0, 0, 0, 1510, 1513, 1, 0, 0, 0, 1511, 1509, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1514, 1, 0, 0, 0, 1513, 1511, 1, 0, 0, 0, 1514, 1516, 3, 69, 32, 0, 1515, 1517, 3, 61, 28, 0, 1516, 1515, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1521, 1, 0, 0, 0, 1518, 1522, 5, 43, 0, 0, 1519, 1520, 5, 45, 0, 0, 1520, 1522, 4, 29, 5, 0, 1521, 1518, 1, 0, 0, 0, 1521, 1519, 1, 0, 0, 0, 1522, 1523, 1, 0, 0, 0, 1523, 1521, 1, 0, 0, 0, 1523, 1524, 1, 0, 0, 0, 1524, 1525, 1, 0, 0, 0, 1525, 1526, 6, 29, 1, 0, 1526, 64, 1, 0, 0, 0, 1527, 1528, 7, 2, 0, 0, 1528, 66, 1, 0, 0, 0, 1529, 1530, 7, 3, 0, 0, 1530, 68, 1, 0, 0, 0, 1531, 1532, 7, 4, 0, 0, 1532, 70, 1, 0, 0, 0, 1533, 1534, 7, 5, 0, 0, 1534, 1535, 7, 6, 0, 0, 1535, 1536, 7, 6, 0, 0, 1536, 72, 1, 0, 0, 0, 1537, 1538, 7, 5, 0, 0, 1538, 1539, 7, 7, 0, 0, 1539, 1540, 7, 5, 0, 0, 1540, 1541, 7, 6, 0, 0, 1541, 1542, 7, 8, 0, 0, 1542, 1543, 7, 9, 0, 0, 1543, 1544, 7, 10, 0, 0, 1544, 74, 1, 0, 0, 0, 1545, 1546, 7, 5, 0, 0, 1546, 1547, 7, 7, 0, 0, 1547, 1548, 7, 5, 0, 0, 1548, 1549, 7, 6, 0, 0, 1549, 1550, 7, 8, 0, 0, 1550, 1551, 7, 11, 0, 0, 1551, 1552, 7, 10, 0, 0, 1552, 76, 1, 0, 0, 0, 1553, 1554, 7, 5, 0, 0, 1554, 1555, 7, 7, 0, 0, 1555, 1556, 7, 12, 0, 0, 1556, 78, 1, 0, 0, 0, 1557, 1558, 7, 5, 0, 0, 1558, 1559, 7, 7, 0, 0, 1559, 1560, 7, 8, 0, 0, 1560, 80, 1, 0, 0, 0, 1561, 1562, 7, 5, 0, 0, 1562, 1563, 7, 13, 0, 0, 1563, 1564, 7, 13, 0, 0, 1564, 1565, 7, 5, 0, 0, 1565, 1566, 7, 8, 0, 0, 1566, 82, 1, 0, 0, 0, 1567, 1568, 7, 5, 0, 0, 1568, 1569, 7, 9, 0, 0, 1569, 84, 1, 0, 0, 0, 1570, 1571, 7, 5, 0, 0, 1571, 1572, 7, 9, 0, 0, 1572, 1573, 7, 14, 0, 0, 1573, 86, 1, 0, 0, 0, 1574, 1575, 7, 5, 0, 0, 1575, 1576, 7, 9, 0, 0, 1576, 1577, 7, 8, 0, 0, 1577, 1578, 7, 15, 0, 0, 1578, 1579, 7, 15, 0, 0, 1579, 1580, 7, 10, 0, 0, 1580, 1581, 7, 16, 0, 0, 1581, 1582, 7, 13, 0, 0, 1582, 1583, 7, 17, 0, 0, 1583, 1584, 7, 14, 0, 0, 1584, 88, 1, 0, 0, 0, 1585, 1586, 7, 18, 0, 0, 1586, 1587, 7, 19, 0, 0, 1587, 1588, 7, 16, 0, 0, 1588, 1589, 7, 20, 0, 0, 1589, 90, 1, 0, 0, 0, 1590, 1591, 7, 14, 0, 0, 1591, 1592, 7, 5, 0, 0, 1592, 1593, 7, 9, 0, 0, 1593, 1594, 7, 10, 0, 0, 1594, 92, 1, 0, 0, 0, 1595, 1596, 7, 14, 0, 0, 1596, 1597, 7, 5, 0, 0, 1597, 1598, 7, 9, 0, 0, 1598, 1599, 7, 16, 0, 0, 1599, 94, 1, 0, 0, 0, 1600, 1601, 7, 14, 0, 0, 1601, 1602, 7, 20, 0, 0, 1602, 1603, 7, 10, 0, 0, 1603, 1604, 7, 14, 0, 0, 1604, 1605, 7, 21, 0, 0, 1605, 96, 1, 0, 0, 0, 1606, 1607, 7, 14, 0, 0, 1607, 1608, 7, 19, 0, 0, 1608, 1609, 7, 6, 0, 0, 1609, 1610, 7, 6, 0, 0, 1610, 1611, 7, 5, 0, 0, 1611, 1612, 7, 16, 0, 0, 1612, 1613, 7, 10, 0, 0, 1613, 98, 1, 0, 0, 0, 1614, 1615, 7, 14, 0, 0, 1615, 1616, 7, 19, 0, 0, 1616, 1617, 7, 6, 0, 0, 1617, 1618, 7, 22, 0, 0, 1618, 1619, 7, 15, 0, 0, 1619, 1620, 7, 7, 0, 0, 1620, 100, 1, 0, 0, 0, 1621, 1622, 7, 14, 0, 0, 1622, 1623, 7, 19, 0, 0, 1623, 1624, 7, 7, 0, 0, 1624, 1625, 7, 9, 0, 0, 1625, 1626, 7, 16, 0, 0, 1626, 1627, 7, 13, 0, 0, 1627, 1628, 7, 5, 0, 0, 1628, 1629, 7, 17, 0, 0, 1629, 1630, 7, 7, 0, 0, 1630, 1631, 7, 16, 0, 0, 1631, 102, 1, 0, 0, 0, 1632, 1633, 7, 14, 0, 0, 1633, 1634, 7, 13, 0, 0, 1634, 1635, 7, 10, 0, 0, 1635, 1636, 7, 5, 0, 0, 1636, 1637, 7, 16, 0, 0, 1637, 1638, 7, 10, 0, 0, 1638, 104, 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, 14, 0, 0, 1648, 1649, 7, 5, 0, 0, 1649, 1650, 7, 16, 0, 0, 1650, 1651, 7, 5, 0, 0, 1651, 1652, 7, 6, 0, 0, 1652, 1653, 7, 19, 0, 0, 1653, 1654, 7, 23, 0, 0, 1654, 106, 1, 0, 0, 0, 1655, 1656, 7, 14, 0, 0, 1656, 1657, 7, 22, 0, 0, 1657, 1658, 7, 13, 0, 0, 1658, 1659, 7, 13, 0, 0, 1659, 1660, 7, 10, 0, 0, 1660, 1661, 7, 7, 0, 0, 1661, 1662, 7, 16, 0, 0, 1662, 1663, 5, 95, 0, 0, 1663, 1664, 7, 12, 0, 0, 1664, 1665, 7, 5, 0, 0, 1665, 1666, 7, 16, 0, 0, 1666, 1667, 7, 10, 0, 0, 1667, 108, 1, 0, 0, 0, 1668, 1669, 7, 14, 0, 0, 1669, 1670, 7, 22, 0, 0, 1670, 1671, 7, 13, 0, 0, 1671, 1672, 7, 13, 0, 0, 1672, 1673, 7, 10, 0, 0, 1673, 1674, 7, 7, 0, 0, 1674, 1675, 7, 16, 0, 0, 1675, 1676, 5, 95, 0, 0, 1676, 1677, 7, 13, 0, 0, 1677, 1678, 7, 19, 0, 0, 1678, 1679, 7, 6, 0, 0, 1679, 1680, 7, 10, 0, 0, 1680, 110, 1, 0, 0, 0, 1681, 1682, 7, 14, 0, 0, 1682, 1683, 7, 22, 0, 0, 1683, 1684, 7, 13, 0, 0, 1684, 1685, 7, 13, 0, 0, 1685, 1686, 7, 10, 0, 0, 1686, 1687, 7, 7, 0, 0, 1687, 1688, 7, 16, 0, 0, 1688, 1689, 5, 95, 0, 0, 1689, 1690, 7, 16, 0, 0, 1690, 1691, 7, 17, 0, 0, 1691, 1692, 7, 15, 0, 0, 1692, 1693, 7, 10, 0, 0, 1693, 112, 1, 0, 0, 0, 1694, 1695, 7, 14, 0, 0, 1695, 1696, 7, 22, 0, 0, 1696, 1697, 7, 13, 0, 0, 1697, 1698, 7, 13, 0, 0, 1698, 1699, 7, 10, 0, 0, 1699, 1700, 7, 7, 0, 0, 1700, 1701, 7, 16, 0, 0, 1701, 1702, 5, 95, 0, 0, 1702, 1703, 7, 16, 0, 0, 1703, 1704, 7, 17, 0, 0, 1704, 1705, 7, 15, 0, 0, 1705, 1706, 7, 10, 0, 0, 1706, 1707, 7, 9, 0, 0, 1707, 1708, 7, 16, 0, 0, 1708, 1709, 7, 5, 0, 0, 1709, 1710, 7, 15, 0, 0, 1710, 1711, 7, 24, 0, 0, 1711, 114, 1, 0, 0, 0, 1712, 1713, 7, 14, 0, 0, 1713, 1714, 7, 22, 0, 0, 1714, 1715, 7, 13, 0, 0, 1715, 1716, 7, 13, 0, 0, 1716, 1717, 7, 10, 0, 0, 1717, 1718, 7, 7, 0, 0, 1718, 1719, 7, 16, 0, 0, 1719, 1720, 5, 95, 0, 0, 1720, 1721, 7, 22, 0, 0, 1721, 1722, 7, 9, 0, 0, 1722, 1723, 7, 10, 0, 0, 1723, 1724, 7, 13, 0, 0, 1724, 116, 1, 0, 0, 0, 1725, 1726, 7, 12, 0, 0, 1726, 1727, 7, 10, 0, 0, 1727, 1728, 7, 25, 0, 0, 1728, 1729, 7, 5, 0, 0, 1729, 1730, 7, 22, 0, 0, 1730, 1731, 7, 6, 0, 0, 1731, 1732, 7, 16, 0, 0, 1732, 118, 1, 0, 0, 0, 1733, 1734, 7, 12, 0, 0, 1734, 1735, 7, 10, 0, 0, 1735, 1736, 7, 25, 0, 0, 1736, 1737, 7, 10, 0, 0, 1737, 1738, 7, 13, 0, 0, 1738, 1739, 7, 13, 0, 0, 1739, 1740, 7, 5, 0, 0, 1740, 1741, 7, 18, 0, 0, 1741, 1742, 7, 6, 0, 0, 1742, 1743, 7, 10, 0, 0, 1743, 120, 1, 0, 0, 0, 1744, 1745, 7, 12, 0, 0, 1745, 1746, 7, 10, 0, 0, 1746, 1747, 7, 9, 0, 0, 1747, 1748, 7, 14, 0, 0, 1748, 122, 1, 0, 0, 0, 1749, 1750, 7, 12, 0, 0, 1750, 1751, 7, 17, 0, 0, 1751, 1752, 7, 9, 0, 0, 1752, 1753, 7, 16, 0, 0, 1753, 1754, 7, 17, 0, 0, 1754, 1755, 7, 7, 0, 0, 1755, 1756, 7, 14, 0, 0, 1756, 1757, 7, 16, 0, 0, 1757, 124, 1, 0, 0, 0, 1758, 1759, 7, 12, 0, 0, 1759, 1760, 7, 19, 0, 0, 1760, 126, 1, 0, 0, 0, 1761, 1762, 7, 10, 0, 0, 1762, 1763, 7, 6, 0, 0, 1763, 1764, 7, 9, 0, 0, 1764, 1765, 7, 10, 0, 0, 1765, 128, 1, 0, 0, 0, 1766, 1767, 7, 10, 0, 0, 1767, 1768, 7, 26, 0, 0, 1768, 1769, 7, 14, 0, 0, 1769, 1770, 7, 10, 0, 0, 1770, 1771, 7, 24, 0, 0, 1771, 1772, 7, 16, 0, 0, 1772, 130, 1, 0, 0, 0, 1773, 1774, 7, 25, 0, 0, 1774, 1775, 7, 5, 0, 0, 1775, 1776, 7, 6, 0, 0, 1776, 1777, 7, 9, 0, 0, 1777, 1778, 7, 10, 0, 0, 1778, 132, 1, 0, 0, 0, 1779, 1780, 7, 25, 0, 0, 1780, 1781, 7, 10, 0, 0, 1781, 1782, 7, 16, 0, 0, 1782, 1783, 7, 14, 0, 0, 1783, 1784, 7, 20, 0, 0, 1784, 134, 1, 0, 0, 0, 1785, 1786, 7, 25, 0, 0, 1786, 1787, 7, 19, 0, 0, 1787, 1788, 7, 13, 0, 0, 1788, 136, 1, 0, 0, 0, 1789, 1790, 7, 25, 0, 0, 1790, 1791, 7, 19, 0, 0, 1791, 1792, 7, 13, 0, 0, 1792, 1793, 7, 10, 0, 0, 1793, 1794, 7, 17, 0, 0, 1794, 1795, 7, 23, 0, 0, 1795, 1796, 7, 7, 0, 0, 1796, 138, 1, 0, 0, 0, 1797, 1798, 7, 25, 0, 0, 1798, 1799, 7, 13, 0, 0, 1799, 1800, 7, 19, 0, 0, 1800, 1801, 7, 15, 0, 0, 1801, 140, 1, 0, 0, 0, 1802, 1803, 7, 23, 0, 0, 1803, 1804, 7, 13, 0, 0, 1804, 1805, 7, 5, 0, 0, 1805, 1806, 7, 7, 0, 0, 1806, 1807, 7, 16, 0, 0, 1807, 142, 1, 0, 0, 0, 1808, 1809, 7, 23, 0, 0, 1809, 1810, 7, 13, 0, 0, 1810, 1811, 7, 19, 0, 0, 1811, 1812, 7, 22, 0, 0, 1812, 1813, 7, 24, 0, 0, 1813, 144, 1, 0, 0, 0, 1814, 1815, 7, 20, 0, 0, 1815, 1816, 7, 5, 0, 0, 1816, 1817, 7, 27, 0, 0, 1817, 1818, 7, 17, 0, 0, 1818, 1819, 7, 7, 0, 0, 1819, 1820, 7, 23, 0, 0, 1820, 146, 1, 0, 0, 0, 1821, 1822, 7, 17, 0, 0, 1822, 1823, 7, 7, 0, 0, 1823, 148, 1, 0, 0, 0, 1824, 1825, 7, 17, 0, 0, 1825, 1826, 7, 7, 0, 0, 1826, 1827, 7, 17, 0, 0, 1827, 1828, 7, 16, 0, 0, 1828, 1829, 7, 17, 0, 0, 1829, 1830, 7, 5, 0, 0, 1830, 1831, 7, 6, 0, 0, 1831, 1832, 7, 6, 0, 0, 1832, 1833, 7, 8, 0, 0, 1833, 150, 1, 0, 0, 0, 1834, 1835, 7, 17, 0, 0, 1835, 1836, 7, 7, 0, 0, 1836, 1837, 7, 16, 0, 0, 1837, 1838, 7, 10, 0, 0, 1838, 1839, 7, 13, 0, 0, 1839, 1840, 7, 9, 0, 0, 1840, 1841, 7, 10, 0, 0, 1841, 1842, 7, 14, 0, 0, 1842, 1843, 7, 16, 0, 0, 1843, 152, 1, 0, 0, 0, 1844, 1845, 7, 17, 0, 0, 1845, 1846, 7, 7, 0, 0, 1846, 1847, 7, 16, 0, 0, 1847, 1848, 7, 19, 0, 0, 1848, 154, 1, 0, 0, 0, 1849, 1850, 7, 6, 0, 0, 1850, 1851, 7, 5, 0, 0, 1851, 1852, 7, 16, 0, 0, 1852, 1853, 7, 10, 0, 0, 1853, 1854, 7, 13, 0, 0, 1854, 1855, 7, 5, 0, 0, 1855, 1856, 7, 6, 0, 0, 1856, 156, 1, 0, 0, 0, 1857, 1858, 7, 6, 0, 0, 1858, 1859, 7, 10, 0, 0, 1859, 1860, 7, 5, 0, 0, 1860, 1861, 7, 12, 0, 0, 1861, 1862, 7, 17, 0, 0, 1862, 1863, 7, 7, 0, 0, 1863, 1864, 7, 23, 0, 0, 1864, 158, 1, 0, 0, 0, 1865, 1866, 7, 6, 0, 0, 1866, 1867, 7, 17, 0, 0, 1867, 1868, 7, 15, 0, 0, 1868, 1869, 7, 17, 0, 0, 1869, 1870, 7, 16, 0, 0, 1870, 160, 1, 0, 0, 0, 1871, 1872, 7, 6, 0, 0, 1872, 1873, 7, 19, 0, 0, 1873, 1874, 7, 14, 0, 0, 1874, 1875, 7, 5, 0, 0, 1875, 1876, 7, 6, 0, 0, 1876, 1877, 7, 16, 0, 0, 1877, 1878, 7, 17, 0, 0, 1878, 1879, 7, 15, 0, 0, 1879, 1880, 7, 10, 0, 0, 1880, 162, 1, 0, 0, 0, 1881, 1882, 7, 6, 0, 0, 1882, 1883, 7, 19, 0, 0, 1883, 1884, 7, 14, 0, 0, 1884, 1885, 7, 5, 0, 0, 1885, 1886, 7, 6, 0, 0, 1886, 1887, 7, 16, 0, 0, 1887, 1888, 7, 17, 0, 0, 1888, 1889, 7, 15, 0, 0, 1889, 1890, 7, 10, 0, 0, 1890, 1891, 7, 9, 0, 0, 1891, 1892, 7, 16, 0, 0, 1892, 1893, 7, 5, 0, 0, 1893, 1894, 7, 15, 0, 0, 1894, 1895, 7, 24, 0, 0, 1895, 164, 1, 0, 0, 0, 1896, 1897, 7, 7, 0, 0, 1897, 1898, 7, 19, 0, 0, 1898, 1899, 7, 16, 0, 0, 1899, 166, 1, 0, 0, 0, 1900, 1901, 7, 7, 0, 0, 1901, 1902, 7, 22, 0, 0, 1902, 1903, 7, 6, 0, 0, 1903, 1904, 7, 6, 0, 0, 1904, 168, 1, 0, 0, 0, 1905, 1906, 7, 19, 0, 0, 1906, 1907, 7, 25, 0, 0, 1907, 1908, 7, 25, 0, 0, 1908, 1909, 7, 9, 0, 0, 1909, 1910, 7, 10, 0, 0, 1910, 1911, 7, 16, 0, 0, 1911, 170, 1, 0, 0, 0, 1912, 1913, 7, 19, 0, 0, 1913, 1914, 7, 7, 0, 0, 1914, 172, 1, 0, 0, 0, 1915, 1916, 7, 19, 0, 0, 1916, 1917, 7, 7, 0, 0, 1917, 1918, 7, 6, 0, 0, 1918, 1919, 7, 8, 0, 0, 1919, 174, 1, 0, 0, 0, 1920, 1921, 7, 19, 0, 0, 1921, 1922, 7, 13, 0, 0, 1922, 176, 1, 0, 0, 0, 1923, 1924, 7, 19, 0, 0, 1924, 1925, 7, 13, 0, 0, 1925, 1926, 7, 12, 0, 0, 1926, 1927, 7, 10, 0, 0, 1927, 1928, 7, 13, 0, 0, 1928, 178, 1, 0, 0, 0, 1929, 1930, 7, 24, 0, 0, 1930, 1931, 7, 6, 0, 0, 1931, 1932, 7, 5, 0, 0, 1932, 1933, 7, 14, 0, 0, 1933, 1934, 7, 17, 0, 0, 1934, 1935, 7, 7, 0, 0, 1935, 1936, 7, 23, 0, 0, 1936, 180, 1, 0, 0, 0, 1937, 1938, 7, 24, 0, 0, 1938, 1939, 7, 13, 0, 0, 1939, 1940, 7, 17, 0, 0, 1940, 1941, 7, 15, 0, 0, 1941, 1942, 7, 5, 0, 0, 1942, 1943, 7, 13, 0, 0, 1943, 1944, 7, 8, 0, 0, 1944, 182, 1, 0, 0, 0, 1945, 1946, 7, 13, 0, 0, 1946, 1947, 7, 10, 0, 0, 1947, 1948, 7, 25, 0, 0, 1948, 1949, 7, 10, 0, 0, 1949, 1950, 7, 13, 0, 0, 1950, 1951, 7, 10, 0, 0, 1951, 1952, 7, 7, 0, 0, 1952, 1953, 7, 14, 0, 0, 1953, 1954, 7, 10, 0, 0, 1954, 1955, 7, 9, 0, 0, 1955, 184, 1, 0, 0, 0, 1956, 1957, 7, 13, 0, 0, 1957, 1958, 7, 10, 0, 0, 1958, 1959, 7, 16, 0, 0, 1959, 1960, 7, 22, 0, 0, 1960, 1961, 7, 13, 0, 0, 1961, 1962, 7, 7, 0, 0, 1962, 1963, 7, 17, 0, 0, 1963, 1964, 7, 7, 0, 0, 1964, 1965, 7, 23, 0, 0, 1965, 186, 1, 0, 0, 0, 1966, 1967, 7, 9, 0, 0, 1967, 1968, 7, 10, 0, 0, 1968, 1969, 7, 6, 0, 0, 1969, 1970, 7, 10, 0, 0, 1970, 1971, 7, 14, 0, 0, 1971, 1972, 7, 16, 0, 0, 1972, 188, 1, 0, 0, 0, 1973, 1974, 7, 9, 0, 0, 1974, 1975, 7, 10, 0, 0, 1975, 1976, 7, 9, 0, 0, 1976, 1977, 7, 9, 0, 0, 1977, 1978, 7, 17, 0, 0, 1978, 1979, 7, 19, 0, 0, 1979, 1980, 7, 7, 0, 0, 1980, 1981, 5, 95, 0, 0, 1981, 1982, 7, 22, 0, 0, 1982, 1983, 7, 9, 0, 0, 1983, 1984, 7, 10, 0, 0, 1984, 1985, 7, 13, 0, 0, 1985, 190, 1, 0, 0, 0, 1986, 1987, 7, 9, 0, 0, 1987, 1988, 7, 19, 0, 0, 1988, 1989, 7, 15, 0, 0, 1989, 1990, 7, 10, 0, 0, 1990, 192, 1, 0, 0, 0, 1991, 1992, 7, 9, 0, 0, 1992, 1993, 7, 8, 0, 0, 1993, 1994, 7, 15, 0, 0, 1994, 1995, 7, 15, 0, 0, 1995, 1996, 7, 10, 0, 0, 1996, 1997, 7, 16, 0, 0, 1997, 1998, 7, 13, 0, 0, 1998, 1999, 7, 17, 0, 0, 1999, 2000, 7, 14, 0, 0, 2000, 194, 1, 0, 0, 0, 2001, 2002, 7, 16, 0, 0, 2002, 2003, 7, 5, 0, 0, 2003, 2004, 7, 18, 0, 0, 2004, 2005, 7, 6, 0, 0, 2005, 2006, 7, 10, 0, 0, 2006, 196, 1, 0, 0, 0, 2007, 2008, 7, 11, 0, 0, 2008, 2009, 7, 16, 0, 0, 2009, 2010, 7, 5, 0, 0, 2010, 2011, 7, 18, 0, 0, 2011, 2012, 7, 6, 0, 0, 2012, 2013, 7, 10, 0, 0, 2013, 198, 1, 0, 0, 0, 2014, 2015, 7, 16, 0, 0, 2015, 2016, 7, 20, 0, 0, 2016, 2017, 7, 10, 0, 0, 2017, 2018, 7, 7, 0, 0, 2018, 200, 1, 0, 0, 0, 2019, 2020, 7, 16, 0, 0, 2020, 2021, 7, 19, 0, 0, 2021, 202, 1, 0, 0, 0, 2022, 2023, 7, 12, 0, 0, 2023, 2024, 7, 10, 0, 0, 2024, 2025, 7, 9, 0, 0, 2025, 2026, 7, 14, 0, 0, 2026, 2027, 7, 13, 0, 0, 2027, 2028, 7, 17, 0, 0, 2028, 2029, 7, 18, 0, 0, 2029, 2030, 7, 10, 0, 0, 2030, 204, 1, 0, 0, 0, 2031, 2032, 7, 16, 0, 0, 2032, 2033, 7, 19, 0, 0, 2033, 2034, 7, 24, 0, 0, 2034, 2035, 7, 17, 0, 0, 2035, 2036, 7, 14, 0, 0, 2036, 206, 1, 0, 0, 0, 2037, 2038, 7, 16, 0, 0, 2038, 2039, 7, 19, 0, 0, 2039, 2040, 7, 24, 0, 0, 2040, 2041, 7, 17, 0, 0, 2041, 2042, 7, 14, 0, 0, 2042, 2043, 7, 9, 0, 0, 2043, 208, 1, 0, 0, 0, 2044, 2045, 7, 9, 0, 0, 2045, 2046, 7, 16, 0, 0, 2046, 2047, 7, 13, 0, 0, 2047, 2048, 7, 10, 0, 0, 2048, 2049, 7, 5, 0, 0, 2049, 2050, 7, 15, 0, 0, 2050, 210, 1, 0, 0, 0, 2051, 2052, 7, 11, 0, 0, 2052, 2053, 7, 27, 0, 0, 2053, 2054, 7, 17, 0, 0, 2054, 2055, 7, 10, 0, 0, 2055, 2056, 7, 28, 0, 0, 2056, 212, 1, 0, 0, 0, 2057, 2058, 7, 11, 0, 0, 2058, 2059, 7, 27, 0, 0, 2059, 2060, 7, 17, 0, 0, 2060, 2061, 7, 10, 0, 0, 2061, 2062, 7, 28, 0, 0, 2062, 2063, 7, 9, 0, 0, 2063, 214, 1, 0, 0, 0, 2064, 2065, 7, 16, 0, 0, 2065, 2066, 7, 13, 0, 0, 2066, 2067, 7, 5, 0, 0, 2067, 2068, 7, 17, 0, 0, 2068, 2069, 7, 6, 0, 0, 2069, 2070, 7, 17, 0, 0, 2070, 2071, 7, 7, 0, 0, 2071, 2072, 7, 23, 0, 0, 2072, 216, 1, 0, 0, 0, 2073, 2074, 7, 16, 0, 0, 2074, 2075, 7, 13, 0, 0, 2075, 2076, 7, 22, 0, 0, 2076, 2077, 7, 10, 0, 0, 2077, 218, 1, 0, 0, 0, 2078, 2079, 7, 22, 0, 0, 2079, 2080, 7, 7, 0, 0, 2080, 2081, 7, 17, 0, 0, 2081, 2082, 7, 19, 0, 0, 2082, 2083, 7, 7, 0, 0, 2083, 220, 1, 0, 0, 0, 2084, 2085, 7, 22, 0, 0, 2085, 2086, 7, 7, 0, 0, 2086, 2087, 7, 17, 0, 0, 2087, 2088, 7, 29, 0, 0, 2088, 2089, 7, 22, 0, 0, 2089, 2090, 7, 10, 0, 0, 2090, 222, 1, 0, 0, 0, 2091, 2092, 7, 22, 0, 0, 2092, 2093, 7, 9, 0, 0, 2093, 2094, 7, 10, 0, 0, 2094, 2095, 7, 13, 0, 0, 2095, 224, 1, 0, 0, 0, 2096, 2097, 7, 22, 0, 0, 2097, 2098, 7, 9, 0, 0, 2098, 2099, 7, 17, 0, 0, 2099, 2100, 7, 7, 0, 0, 2100, 2101, 7, 23, 0, 0, 2101, 226, 1, 0, 0, 0, 2102, 2103, 7, 27, 0, 0, 2103, 2104, 7, 5, 0, 0, 2104, 2105, 7, 13, 0, 0, 2105, 2106, 7, 17, 0, 0, 2106, 2107, 7, 5, 0, 0, 2107, 2108, 7, 12, 0, 0, 2108, 2109, 7, 17, 0, 0, 2109, 2110, 7, 14, 0, 0, 2110, 228, 1, 0, 0, 0, 2111, 2112, 7, 28, 0, 0, 2112, 2113, 7, 20, 0, 0, 2113, 2114, 7, 10, 0, 0, 2114, 2115, 7, 7, 0, 0, 2115, 230, 1, 0, 0, 0, 2116, 2117, 7, 28, 0, 0, 2117, 2118, 7, 20, 0, 0, 2118, 2119, 7, 10, 0, 0, 2119, 2120, 7, 13, 0, 0, 2120, 2121, 7, 10, 0, 0, 2121, 232, 1, 0, 0, 0, 2122, 2123, 7, 28, 0, 0, 2123, 2124, 7, 17, 0, 0, 2124, 2125, 7, 7, 0, 0, 2125, 2126, 7, 12, 0, 0, 2126, 2127, 7, 19, 0, 0, 2127, 2128, 7, 28, 0, 0, 2128, 234, 1, 0, 0, 0, 2129, 2130, 7, 28, 0, 0, 2130, 2131, 7, 17, 0, 0, 2131, 2132, 7, 16, 0, 0, 2132, 2133, 7, 20, 0, 0, 2133, 236, 1, 0, 0, 0, 2134, 2135, 7, 5, 0, 0, 2135, 2136, 7, 22, 0, 0, 2136, 2137, 7, 16, 0, 0, 2137, 2138, 7, 20, 0, 0, 2138, 2139, 7, 19, 0, 0, 2139, 2140, 7, 13, 0, 0, 2140, 2141, 7, 17, 0, 0, 2141, 2142, 7, 11, 0, 0, 2142, 2143, 7, 5, 0, 0, 2143, 2144, 7, 16, 0, 0, 2144, 2145, 7, 17, 0, 0, 2145, 2146, 7, 19, 0, 0, 2146, 2147, 7, 7, 0, 0, 2147, 238, 1, 0, 0, 0, 2148, 2149, 7, 18, 0, 0, 2149, 2150, 7, 17, 0, 0, 2150, 2151, 7, 7, 0, 0, 2151, 2152, 7, 5, 0, 0, 2152, 2153, 7, 13, 0, 0, 2153, 2154, 7, 8, 0, 0, 2154, 240, 1, 0, 0, 0, 2155, 2156, 7, 14, 0, 0, 2156, 2157, 7, 19, 0, 0, 2157, 2158, 7, 6, 0, 0, 2158, 2159, 7, 6, 0, 0, 2159, 2160, 7, 5, 0, 0, 2160, 2161, 7, 16, 0, 0, 2161, 2162, 7, 17, 0, 0, 2162, 2163, 7, 19, 0, 0, 2163, 2164, 7, 7, 0, 0, 2164, 242, 1, 0, 0, 0, 2165, 2166, 7, 14, 0, 0, 2166, 2167, 7, 19, 0, 0, 2167, 2168, 7, 7, 0, 0, 2168, 2169, 7, 14, 0, 0, 2169, 2170, 7, 22, 0, 0, 2170, 2171, 7, 13, 0, 0, 2171, 2172, 7, 13, 0, 0, 2172, 2173, 7, 10, 0, 0, 2173, 2174, 7, 7, 0, 0, 2174, 2175, 7, 16, 0, 0, 2175, 2176, 7, 6, 0, 0, 2176, 2177, 7, 8, 0, 0, 2177, 244, 1, 0, 0, 0, 2178, 2179, 7, 14, 0, 0, 2179, 2180, 7, 13, 0, 0, 2180, 2181, 7, 19, 0, 0, 2181, 2182, 7, 9, 0, 0, 2182, 2183, 7, 9, 0, 0, 2183, 246, 1, 0, 0, 0, 2184, 2185, 7, 14, 0, 0, 2185, 2186, 7, 22, 0, 0, 2186, 2187, 7, 13, 0, 0, 2187, 2188, 7, 13, 0, 0, 2188, 2189, 7, 10, 0, 0, 2189, 2190, 7, 7, 0, 0, 2190, 2191, 7, 16, 0, 0, 2191, 2192, 5, 95, 0, 0, 2192, 2193, 7, 9, 0, 0, 2193, 2194, 7, 14, 0, 0, 2194, 2195, 7, 20, 0, 0, 2195, 2196, 7, 10, 0, 0, 2196, 2197, 7, 15, 0, 0, 2197, 2198, 7, 5, 0, 0, 2198, 248, 1, 0, 0, 0, 2199, 2200, 7, 25, 0, 0, 2200, 2201, 7, 13, 0, 0, 2201, 2202, 7, 10, 0, 0, 2202, 2203, 7, 10, 0, 0, 2203, 2204, 7, 11, 0, 0, 2204, 2205, 7, 10, 0, 0, 2205, 250, 1, 0, 0, 0, 2206, 2207, 7, 25, 0, 0, 2207, 2208, 7, 22, 0, 0, 2208, 2209, 7, 6, 0, 0, 2209, 2210, 7, 6, 0, 0, 2210, 252, 1, 0, 0, 0, 2211, 2212, 7, 17, 0, 0, 2212, 2213, 7, 6, 0, 0, 2213, 2214, 7, 17, 0, 0, 2214, 2215, 7, 21, 0, 0, 2215, 2216, 7, 10, 0, 0, 2216, 254, 1, 0, 0, 0, 2217, 2218, 7, 17, 0, 0, 2218, 2219, 7, 7, 0, 0, 2219, 2220, 7, 7, 0, 0, 2220, 2221, 7, 10, 0, 0, 2221, 2222, 7, 13, 0, 0, 2222, 256, 1, 0, 0, 0, 2223, 2224, 7, 17, 0, 0, 2224, 2225, 7, 9, 0, 0, 2225, 258, 1, 0, 0, 0, 2226, 2227, 7, 17, 0, 0, 2227, 2228, 7, 9, 0, 0, 2228, 2229, 7, 7, 0, 0, 2229, 2230, 7, 22, 0, 0, 2230, 2231, 7, 6, 0, 0, 2231, 2232, 7, 6, 0, 0, 2232, 260, 1, 0, 0, 0, 2233, 2234, 7, 30, 0, 0, 2234, 2235, 7, 19, 0, 0, 2235, 2236, 7, 17, 0, 0, 2236, 2237, 7, 7, 0, 0, 2237, 262, 1, 0, 0, 0, 2238, 2239, 7, 6, 0, 0, 2239, 2240, 7, 10, 0, 0, 2240, 2241, 7, 25, 0, 0, 2241, 2242, 7, 16, 0, 0, 2242, 264, 1, 0, 0, 0, 2243, 2244, 7, 6, 0, 0, 2244, 2245, 7, 17, 0, 0, 2245, 2246, 7, 21, 0, 0, 2246, 2247, 7, 10, 0, 0, 2247, 266, 1, 0, 0, 0, 2248, 2249, 7, 7, 0, 0, 2249, 2250, 7, 5, 0, 0, 2250, 2251, 7, 16, 0, 0, 2251, 2252, 7, 22, 0, 0, 2252, 2253, 7, 13, 0, 0, 2253, 2254, 7, 5, 0, 0, 2254, 2255, 7, 6, 0, 0, 2255, 268, 1, 0, 0, 0, 2256, 2257, 7, 7, 0, 0, 2257, 2258, 7, 19, 0, 0, 2258, 2259, 7, 16, 0, 0, 2259, 2260, 7, 7, 0, 0, 2260, 2261, 7, 22, 0, 0, 2261, 2262, 7, 6, 0, 0, 2262, 2263, 7, 6, 0, 0, 2263, 270, 1, 0, 0, 0, 2264, 2265, 7, 19, 0, 0, 2265, 2266, 7, 22, 0, 0, 2266, 2267, 7, 16, 0, 0, 2267, 2268, 7, 10, 0, 0, 2268, 2269, 7, 13, 0, 0, 2269, 272, 1, 0, 0, 0, 2270, 2271, 7, 19, 0, 0, 2271, 2272, 7, 27, 0, 0, 2272, 2273, 7, 10, 0, 0, 2273, 2274, 7, 13, 0, 0, 2274, 274, 1, 0, 0, 0, 2275, 2276, 7, 19, 0, 0, 2276, 2277, 7, 27, 0, 0, 2277, 2278, 7, 10, 0, 0, 2278, 2279, 7, 13, 0, 0, 2279, 2280, 7, 6, 0, 0, 2280, 2281, 7, 5, 0, 0, 2281, 2282, 7, 24, 0, 0, 2282, 2283, 7, 9, 0, 0, 2283, 276, 1, 0, 0, 0, 2284, 2285, 7, 13, 0, 0, 2285, 2286, 7, 17, 0, 0, 2286, 2287, 7, 23, 0, 0, 2287, 2288, 7, 20, 0, 0, 2288, 2289, 7, 16, 0, 0, 2289, 278, 1, 0, 0, 0, 2290, 2291, 7, 9, 0, 0, 2291, 2292, 7, 17, 0, 0, 2292, 2293, 7, 15, 0, 0, 2293, 2294, 7, 17, 0, 0, 2294, 2295, 7, 6, 0, 0, 2295, 2296, 7, 5, 0, 0, 2296, 2297, 7, 13, 0, 0, 2297, 280, 1, 0, 0, 0, 2298, 2299, 7, 27, 0, 0, 2299, 2300, 7, 10, 0, 0, 2300, 2301, 7, 13, 0, 0, 2301, 2302, 7, 18, 0, 0, 2302, 2303, 7, 19, 0, 0, 2303, 2304, 7, 9, 0, 0, 2304, 2305, 7, 10, 0, 0, 2305, 282, 1, 0, 0, 0, 2306, 2307, 7, 5, 0, 0, 2307, 2308, 7, 18, 0, 0, 2308, 2309, 7, 19, 0, 0, 2309, 2310, 7, 13, 0, 0, 2310, 2311, 7, 16, 0, 0, 2311, 284, 1, 0, 0, 0, 2312, 2313, 7, 5, 0, 0, 2313, 2314, 7, 18, 0, 0, 2314, 2315, 7, 9, 0, 0, 2315, 2316, 7, 19, 0, 0, 2316, 2317, 7, 6, 0, 0, 2317, 2318, 7, 22, 0, 0, 2318, 2319, 7, 16, 0, 0, 2319, 2320, 7, 10, 0, 0, 2320, 286, 1, 0, 0, 0, 2321, 2322, 7, 5, 0, 0, 2322, 2323, 7, 14, 0, 0, 2323, 2324, 7, 14, 0, 0, 2324, 2325, 7, 10, 0, 0, 2325, 2326, 7, 9, 0, 0, 2326, 2327, 7, 9, 0, 0, 2327, 288, 1, 0, 0, 0, 2328, 2329, 7, 5, 0, 0, 2329, 2330, 7, 14, 0, 0, 2330, 2331, 7, 16, 0, 0, 2331, 2332, 7, 17, 0, 0, 2332, 2333, 7, 19, 0, 0, 2333, 2334, 7, 7, 0, 0, 2334, 290, 1, 0, 0, 0, 2335, 2336, 7, 5, 0, 0, 2336, 2337, 7, 12, 0, 0, 2337, 2338, 7, 12, 0, 0, 2338, 292, 1, 0, 0, 0, 2339, 2340, 7, 5, 0, 0, 2340, 2341, 7, 12, 0, 0, 2341, 2342, 7, 15, 0, 0, 2342, 2343, 7, 17, 0, 0, 2343, 2344, 7, 7, 0, 0, 2344, 294, 1, 0, 0, 0, 2345, 2346, 7, 5, 0, 0, 2346, 2347, 7, 25, 0, 0, 2347, 2348, 7, 16, 0, 0, 2348, 2349, 7, 10, 0, 0, 2349, 2350, 7, 13, 0, 0, 2350, 296, 1, 0, 0, 0, 2351, 2352, 7, 5, 0, 0, 2352, 2353, 7, 23, 0, 0, 2353, 2354, 7, 23, 0, 0, 2354, 2355, 7, 13, 0, 0, 2355, 2356, 7, 10, 0, 0, 2356, 2357, 7, 23, 0, 0, 2357, 2358, 7, 5, 0, 0, 2358, 2359, 7, 16, 0, 0, 2359, 2360, 7, 10, 0, 0, 2360, 298, 1, 0, 0, 0, 2361, 2362, 7, 5, 0, 0, 2362, 2363, 7, 6, 0, 0, 2363, 2364, 7, 9, 0, 0, 2364, 2365, 7, 19, 0, 0, 2365, 300, 1, 0, 0, 0, 2366, 2367, 7, 5, 0, 0, 2367, 2368, 7, 6, 0, 0, 2368, 2369, 7, 16, 0, 0, 2369, 2370, 7, 10, 0, 0, 2370, 2371, 7, 13, 0, 0, 2371, 302, 1, 0, 0, 0, 2372, 2373, 7, 5, 0, 0, 2373, 2374, 7, 6, 0, 0, 2374, 2375, 7, 28, 0, 0, 2375, 2376, 7, 5, 0, 0, 2376, 2377, 7, 8, 0, 0, 2377, 2378, 7, 9, 0, 0, 2378, 304, 1, 0, 0, 0, 2379, 2380, 7, 5, 0, 0, 2380, 2381, 7, 9, 0, 0, 2381, 2382, 7, 9, 0, 0, 2382, 2383, 7, 10, 0, 0, 2383, 2384, 7, 13, 0, 0, 2384, 2385, 7, 16, 0, 0, 2385, 2386, 7, 17, 0, 0, 2386, 2387, 7, 19, 0, 0, 2387, 2388, 7, 7, 0, 0, 2388, 306, 1, 0, 0, 0, 2389, 2390, 7, 5, 0, 0, 2390, 2391, 7, 9, 0, 0, 2391, 2392, 7, 9, 0, 0, 2392, 2393, 7, 17, 0, 0, 2393, 2394, 7, 23, 0, 0, 2394, 2395, 7, 7, 0, 0, 2395, 2396, 7, 15, 0, 0, 2396, 2397, 7, 10, 0, 0, 2397, 2398, 7, 7, 0, 0, 2398, 2399, 7, 16, 0, 0, 2399, 308, 1, 0, 0, 0, 2400, 2401, 7, 5, 0, 0, 2401, 2402, 7, 16, 0, 0, 2402, 310, 1, 0, 0, 0, 2403, 2404, 7, 5, 0, 0, 2404, 2405, 7, 16, 0, 0, 2405, 2406, 7, 16, 0, 0, 2406, 2407, 7, 13, 0, 0, 2407, 2408, 7, 17, 0, 0, 2408, 2409, 7, 18, 0, 0, 2409, 2410, 7, 22, 0, 0, 2410, 2411, 7, 16, 0, 0, 2411, 2412, 7, 10, 0, 0, 2412, 312, 1, 0, 0, 0, 2413, 2414, 7, 18, 0, 0, 2414, 2415, 7, 5, 0, 0, 2415, 2416, 7, 14, 0, 0, 2416, 2417, 7, 21, 0, 0, 2417, 2418, 7, 28, 0, 0, 2418, 2419, 7, 5, 0, 0, 2419, 2420, 7, 13, 0, 0, 2420, 2421, 7, 12, 0, 0, 2421, 314, 1, 0, 0, 0, 2422, 2423, 7, 18, 0, 0, 2423, 2424, 7, 10, 0, 0, 2424, 2425, 7, 25, 0, 0, 2425, 2426, 7, 19, 0, 0, 2426, 2427, 7, 13, 0, 0, 2427, 2428, 7, 10, 0, 0, 2428, 316, 1, 0, 0, 0, 2429, 2430, 7, 18, 0, 0, 2430, 2431, 7, 10, 0, 0, 2431, 2432, 7, 23, 0, 0, 2432, 2433, 7, 17, 0, 0, 2433, 2434, 7, 7, 0, 0, 2434, 318, 1, 0, 0, 0, 2435, 2436, 7, 18, 0, 0, 2436, 2437, 7, 8, 0, 0, 2437, 320, 1, 0, 0, 0, 2438, 2439, 7, 14, 0, 0, 2439, 2440, 7, 5, 0, 0, 2440, 2441, 7, 14, 0, 0, 2441, 2442, 7, 20, 0, 0, 2442, 2443, 7, 10, 0, 0, 2443, 322, 1, 0, 0, 0, 2444, 2445, 7, 14, 0, 0, 2445, 2446, 7, 5, 0, 0, 2446, 2447, 7, 6, 0, 0, 2447, 2448, 7, 6, 0, 0, 2448, 2449, 7, 10, 0, 0, 2449, 2450, 7, 12, 0, 0, 2450, 324, 1, 0, 0, 0, 2451, 2452, 7, 14, 0, 0, 2452, 2453, 7, 5, 0, 0, 2453, 2454, 7, 9, 0, 0, 2454, 2455, 7, 14, 0, 0, 2455, 2456, 7, 5, 0, 0, 2456, 2457, 7, 12, 0, 0, 2457, 2458, 7, 10, 0, 0, 2458, 326, 1, 0, 0, 0, 2459, 2460, 7, 14, 0, 0, 2460, 2461, 7, 5, 0, 0, 2461, 2462, 7, 9, 0, 0, 2462, 2463, 7, 14, 0, 0, 2463, 2464, 7, 5, 0, 0, 2464, 2465, 7, 12, 0, 0, 2465, 2466, 7, 10, 0, 0, 2466, 2467, 7, 12, 0, 0, 2467, 328, 1, 0, 0, 0, 2468, 2469, 7, 14, 0, 0, 2469, 2470, 7, 5, 0, 0, 2470, 2471, 7, 16, 0, 0, 2471, 2472, 7, 5, 0, 0, 2472, 2473, 7, 6, 0, 0, 2473, 2474, 7, 19, 0, 0, 2474, 2475, 7, 23, 0, 0, 2475, 330, 1, 0, 0, 0, 2476, 2477, 7, 14, 0, 0, 2477, 2478, 7, 20, 0, 0, 2478, 2479, 7, 5, 0, 0, 2479, 2480, 7, 17, 0, 0, 2480, 2481, 7, 7, 0, 0, 2481, 332, 1, 0, 0, 0, 2482, 2483, 7, 14, 0, 0, 2483, 2484, 7, 20, 0, 0, 2484, 2485, 7, 5, 0, 0, 2485, 2486, 7, 13, 0, 0, 2486, 2487, 7, 5, 0, 0, 2487, 2488, 7, 14, 0, 0, 2488, 2489, 7, 16, 0, 0, 2489, 2490, 7, 10, 0, 0, 2490, 2491, 7, 13, 0, 0, 2491, 2492, 7, 17, 0, 0, 2492, 2493, 7, 9, 0, 0, 2493, 2494, 7, 16, 0, 0, 2494, 2495, 7, 17, 0, 0, 2495, 2496, 7, 14, 0, 0, 2496, 2497, 7, 9, 0, 0, 2497, 334, 1, 0, 0, 0, 2498, 2499, 7, 14, 0, 0, 2499, 2500, 7, 20, 0, 0, 2500, 2501, 7, 10, 0, 0, 2501, 2502, 7, 14, 0, 0, 2502, 2503, 7, 21, 0, 0, 2503, 2504, 7, 24, 0, 0, 2504, 2505, 7, 19, 0, 0, 2505, 2506, 7, 17, 0, 0, 2506, 2507, 7, 7, 0, 0, 2507, 2508, 7, 16, 0, 0, 2508, 336, 1, 0, 0, 0, 2509, 2510, 7, 14, 0, 0, 2510, 2511, 7, 6, 0, 0, 2511, 2512, 7, 5, 0, 0, 2512, 2513, 7, 9, 0, 0, 2513, 2514, 7, 9, 0, 0, 2514, 338, 1, 0, 0, 0, 2515, 2516, 7, 14, 0, 0, 2516, 2517, 7, 6, 0, 0, 2517, 2518, 7, 19, 0, 0, 2518, 2519, 7, 9, 0, 0, 2519, 2520, 7, 10, 0, 0, 2520, 340, 1, 0, 0, 0, 2521, 2522, 7, 14, 0, 0, 2522, 2523, 7, 6, 0, 0, 2523, 2524, 7, 22, 0, 0, 2524, 2525, 7, 9, 0, 0, 2525, 2526, 7, 16, 0, 0, 2526, 2527, 7, 10, 0, 0, 2527, 2528, 7, 13, 0, 0, 2528, 342, 1, 0, 0, 0, 2529, 2530, 7, 14, 0, 0, 2530, 2531, 7, 19, 0, 0, 2531, 2532, 7, 15, 0, 0, 2532, 2533, 7, 15, 0, 0, 2533, 2534, 7, 10, 0, 0, 2534, 2535, 7, 7, 0, 0, 2535, 2536, 7, 16, 0, 0, 2536, 344, 1, 0, 0, 0, 2537, 2538, 7, 14, 0, 0, 2538, 2539, 7, 19, 0, 0, 2539, 2540, 7, 15, 0, 0, 2540, 2541, 7, 15, 0, 0, 2541, 2542, 7, 10, 0, 0, 2542, 2543, 7, 7, 0, 0, 2543, 2544, 7, 16, 0, 0, 2544, 2545, 7, 9, 0, 0, 2545, 346, 1, 0, 0, 0, 2546, 2547, 7, 14, 0, 0, 2547, 2548, 7, 19, 0, 0, 2548, 2549, 7, 15, 0, 0, 2549, 2550, 7, 15, 0, 0, 2550, 2551, 7, 17, 0, 0, 2551, 2552, 7, 16, 0, 0, 2552, 348, 1, 0, 0, 0, 2553, 2554, 7, 14, 0, 0, 2554, 2555, 7, 19, 0, 0, 2555, 2556, 7, 15, 0, 0, 2556, 2557, 7, 15, 0, 0, 2557, 2558, 7, 17, 0, 0, 2558, 2559, 7, 16, 0, 0, 2559, 2560, 7, 16, 0, 0, 2560, 2561, 7, 10, 0, 0, 2561, 2562, 7, 12, 0, 0, 2562, 350, 1, 0, 0, 0, 2563, 2564, 7, 14, 0, 0, 2564, 2565, 7, 19, 0, 0, 2565, 2566, 7, 7, 0, 0, 2566, 2567, 7, 25, 0, 0, 2567, 2568, 7, 17, 0, 0, 2568, 2569, 7, 23, 0, 0, 2569, 2570, 7, 22, 0, 0, 2570, 2571, 7, 13, 0, 0, 2571, 2572, 7, 5, 0, 0, 2572, 2573, 7, 16, 0, 0, 2573, 2574, 7, 17, 0, 0, 2574, 2575, 7, 19, 0, 0, 2575, 2576, 7, 7, 0, 0, 2576, 352, 1, 0, 0, 0, 2577, 2578, 7, 14, 0, 0, 2578, 2579, 7, 19, 0, 0, 2579, 2580, 7, 7, 0, 0, 2580, 2581, 7, 7, 0, 0, 2581, 2582, 7, 10, 0, 0, 2582, 2583, 7, 14, 0, 0, 2583, 2584, 7, 16, 0, 0, 2584, 2585, 7, 17, 0, 0, 2585, 2586, 7, 19, 0, 0, 2586, 2587, 7, 7, 0, 0, 2587, 354, 1, 0, 0, 0, 2588, 2589, 7, 14, 0, 0, 2589, 2590, 7, 19, 0, 0, 2590, 2591, 7, 7, 0, 0, 2591, 2592, 7, 9, 0, 0, 2592, 2593, 7, 16, 0, 0, 2593, 2594, 7, 13, 0, 0, 2594, 2595, 7, 5, 0, 0, 2595, 2596, 7, 17, 0, 0, 2596, 2597, 7, 7, 0, 0, 2597, 2598, 7, 16, 0, 0, 2598, 2599, 7, 9, 0, 0, 2599, 356, 1, 0, 0, 0, 2600, 2601, 7, 14, 0, 0, 2601, 2602, 7, 19, 0, 0, 2602, 2603, 7, 7, 0, 0, 2603, 2604, 7, 16, 0, 0, 2604, 2605, 7, 10, 0, 0, 2605, 2606, 7, 7, 0, 0, 2606, 2607, 7, 16, 0, 0, 2607, 358, 1, 0, 0, 0, 2608, 2609, 7, 14, 0, 0, 2609, 2610, 7, 19, 0, 0, 2610, 2611, 7, 7, 0, 0, 2611, 2612, 7, 16, 0, 0, 2612, 2613, 7, 17, 0, 0, 2613, 2614, 7, 7, 0, 0, 2614, 2615, 7, 22, 0, 0, 2615, 2616, 7, 10, 0, 0, 2616, 360, 1, 0, 0, 0, 2617, 2618, 7, 14, 0, 0, 2618, 2619, 7, 19, 0, 0, 2619, 2620, 7, 7, 0, 0, 2620, 2621, 7, 27, 0, 0, 2621, 2622, 7, 10, 0, 0, 2622, 2623, 7, 13, 0, 0, 2623, 2624, 7, 9, 0, 0, 2624, 2625, 7, 17, 0, 0, 2625, 2626, 7, 19, 0, 0, 2626, 2627, 7, 7, 0, 0, 2627, 362, 1, 0, 0, 0, 2628, 2629, 7, 14, 0, 0, 2629, 2630, 7, 19, 0, 0, 2630, 2631, 7, 24, 0, 0, 2631, 2632, 7, 8, 0, 0, 2632, 364, 1, 0, 0, 0, 2633, 2634, 7, 14, 0, 0, 2634, 2635, 7, 19, 0, 0, 2635, 2636, 7, 9, 0, 0, 2636, 2637, 7, 16, 0, 0, 2637, 366, 1, 0, 0, 0, 2638, 2639, 7, 14, 0, 0, 2639, 2640, 7, 9, 0, 0, 2640, 2641, 7, 27, 0, 0, 2641, 368, 1, 0, 0, 0, 2642, 2643, 7, 14, 0, 0, 2643, 2644, 7, 22, 0, 0, 2644, 2645, 7, 13, 0, 0, 2645, 2646, 7, 9, 0, 0, 2646, 2647, 7, 19, 0, 0, 2647, 2648, 7, 13, 0, 0, 2648, 370, 1, 0, 0, 0, 2649, 2650, 7, 14, 0, 0, 2650, 2651, 7, 8, 0, 0, 2651, 2652, 7, 14, 0, 0, 2652, 2653, 7, 6, 0, 0, 2653, 2654, 7, 10, 0, 0, 2654, 372, 1, 0, 0, 0, 2655, 2656, 7, 12, 0, 0, 2656, 2657, 7, 5, 0, 0, 2657, 2658, 7, 16, 0, 0, 2658, 2659, 7, 5, 0, 0, 2659, 374, 1, 0, 0, 0, 2660, 2661, 7, 12, 0, 0, 2661, 2662, 7, 5, 0, 0, 2662, 2663, 7, 16, 0, 0, 2663, 2664, 7, 5, 0, 0, 2664, 2665, 7, 18, 0, 0, 2665, 2666, 7, 5, 0, 0, 2666, 2667, 7, 9, 0, 0, 2667, 2668, 7, 10, 0, 0, 2668, 376, 1, 0, 0, 0, 2669, 2670, 7, 12, 0, 0, 2670, 2671, 7, 5, 0, 0, 2671, 2672, 7, 8, 0, 0, 2672, 378, 1, 0, 0, 0, 2673, 2674, 7, 12, 0, 0, 2674, 2675, 7, 10, 0, 0, 2675, 2676, 7, 5, 0, 0, 2676, 2677, 7, 6, 0, 0, 2677, 2678, 7, 6, 0, 0, 2678, 2679, 7, 19, 0, 0, 2679, 2680, 7, 14, 0, 0, 2680, 2681, 7, 5, 0, 0, 2681, 2682, 7, 16, 0, 0, 2682, 2683, 7, 10, 0, 0, 2683, 380, 1, 0, 0, 0, 2684, 2685, 7, 12, 0, 0, 2685, 2686, 7, 10, 0, 0, 2686, 2687, 7, 14, 0, 0, 2687, 2688, 7, 6, 0, 0, 2688, 2689, 7, 5, 0, 0, 2689, 2690, 7, 13, 0, 0, 2690, 2691, 7, 10, 0, 0, 2691, 382, 1, 0, 0, 0, 2692, 2693, 7, 12, 0, 0, 2693, 2694, 7, 10, 0, 0, 2694, 2695, 7, 25, 0, 0, 2695, 2696, 7, 5, 0, 0, 2696, 2697, 7, 22, 0, 0, 2697, 2698, 7, 6, 0, 0, 2698, 2699, 7, 16, 0, 0, 2699, 2700, 7, 9, 0, 0, 2700, 384, 1, 0, 0, 0, 2701, 2702, 7, 12, 0, 0, 2702, 2703, 7, 10, 0, 0, 2703, 2704, 7, 25, 0, 0, 2704, 2705, 7, 10, 0, 0, 2705, 2706, 7, 13, 0, 0, 2706, 2707, 7, 13, 0, 0, 2707, 2708, 7, 10, 0, 0, 2708, 2709, 7, 12, 0, 0, 2709, 386, 1, 0, 0, 0, 2710, 2711, 7, 12, 0, 0, 2711, 2712, 7, 10, 0, 0, 2712, 2713, 7, 25, 0, 0, 2713, 2714, 7, 17, 0, 0, 2714, 2715, 7, 7, 0, 0, 2715, 2716, 7, 10, 0, 0, 2716, 2717, 7, 13, 0, 0, 2717, 388, 1, 0, 0, 0, 2718, 2719, 7, 12, 0, 0, 2719, 2720, 7, 10, 0, 0, 2720, 2721, 7, 6, 0, 0, 2721, 2722, 7, 10, 0, 0, 2722, 2723, 7, 16, 0, 0, 2723, 2724, 7, 10, 0, 0, 2724, 390, 1, 0, 0, 0, 2725, 2726, 7, 12, 0, 0, 2726, 2727, 7, 10, 0, 0, 2727, 2728, 7, 6, 0, 0, 2728, 2729, 7, 17, 0, 0, 2729, 2730, 7, 15, 0, 0, 2730, 2731, 7, 17, 0, 0, 2731, 2732, 7, 16, 0, 0, 2732, 2733, 7, 10, 0, 0, 2733, 2734, 7, 13, 0, 0, 2734, 392, 1, 0, 0, 0, 2735, 2736, 7, 12, 0, 0, 2736, 2737, 7, 10, 0, 0, 2737, 2738, 7, 6, 0, 0, 2738, 2739, 7, 17, 0, 0, 2739, 2740, 7, 15, 0, 0, 2740, 2741, 7, 17, 0, 0, 2741, 2742, 7, 16, 0, 0, 2742, 2743, 7, 10, 0, 0, 2743, 2744, 7, 13, 0, 0, 2744, 2745, 7, 9, 0, 0, 2745, 394, 1, 0, 0, 0, 2746, 2747, 7, 12, 0, 0, 2747, 2748, 7, 17, 0, 0, 2748, 2749, 7, 14, 0, 0, 2749, 2750, 7, 16, 0, 0, 2750, 2751, 7, 17, 0, 0, 2751, 2752, 7, 19, 0, 0, 2752, 2753, 7, 7, 0, 0, 2753, 2754, 7, 5, 0, 0, 2754, 2755, 7, 13, 0, 0, 2755, 2756, 7, 8, 0, 0, 2756, 396, 1, 0, 0, 0, 2757, 2758, 7, 12, 0, 0, 2758, 2759, 7, 17, 0, 0, 2759, 2760, 7, 9, 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, 398, 1, 0, 0, 0, 2765, 2766, 7, 12, 0, 0, 2766, 2767, 7, 17, 0, 0, 2767, 2768, 7, 9, 0, 0, 2768, 2769, 7, 14, 0, 0, 2769, 2770, 7, 5, 0, 0, 2770, 2771, 7, 13, 0, 0, 2771, 2772, 7, 12, 0, 0, 2772, 400, 1, 0, 0, 0, 2773, 2774, 7, 12, 0, 0, 2774, 2775, 7, 19, 0, 0, 2775, 2776, 7, 14, 0, 0, 2776, 2777, 7, 22, 0, 0, 2777, 2778, 7, 15, 0, 0, 2778, 2779, 7, 10, 0, 0, 2779, 2780, 7, 7, 0, 0, 2780, 2781, 7, 16, 0, 0, 2781, 402, 1, 0, 0, 0, 2782, 2783, 7, 12, 0, 0, 2783, 2784, 7, 19, 0, 0, 2784, 2785, 7, 15, 0, 0, 2785, 2786, 7, 5, 0, 0, 2786, 2787, 7, 17, 0, 0, 2787, 2788, 7, 7, 0, 0, 2788, 404, 1, 0, 0, 0, 2789, 2790, 7, 12, 0, 0, 2790, 2791, 7, 19, 0, 0, 2791, 2792, 7, 22, 0, 0, 2792, 2793, 7, 18, 0, 0, 2793, 2794, 7, 6, 0, 0, 2794, 2795, 7, 10, 0, 0, 2795, 406, 1, 0, 0, 0, 2796, 2797, 7, 12, 0, 0, 2797, 2798, 7, 13, 0, 0, 2798, 2799, 7, 19, 0, 0, 2799, 2800, 7, 24, 0, 0, 2800, 408, 1, 0, 0, 0, 2801, 2802, 7, 10, 0, 0, 2802, 2803, 7, 5, 0, 0, 2803, 2804, 7, 14, 0, 0, 2804, 2805, 7, 20, 0, 0, 2805, 410, 1, 0, 0, 0, 2806, 2807, 7, 10, 0, 0, 2807, 2808, 7, 7, 0, 0, 2808, 2809, 7, 5, 0, 0, 2809, 2810, 7, 18, 0, 0, 2810, 2811, 7, 6, 0, 0, 2811, 2812, 7, 10, 0, 0, 2812, 412, 1, 0, 0, 0, 2813, 2814, 7, 10, 0, 0, 2814, 2815, 7, 7, 0, 0, 2815, 2816, 7, 14, 0, 0, 2816, 2817, 7, 19, 0, 0, 2817, 2818, 7, 12, 0, 0, 2818, 2819, 7, 17, 0, 0, 2819, 2820, 7, 7, 0, 0, 2820, 2821, 7, 23, 0, 0, 2821, 414, 1, 0, 0, 0, 2822, 2823, 7, 10, 0, 0, 2823, 2824, 7, 7, 0, 0, 2824, 2825, 7, 14, 0, 0, 2825, 2826, 7, 13, 0, 0, 2826, 2827, 7, 8, 0, 0, 2827, 2828, 7, 24, 0, 0, 2828, 2829, 7, 16, 0, 0, 2829, 2830, 7, 10, 0, 0, 2830, 2831, 7, 12, 0, 0, 2831, 416, 1, 0, 0, 0, 2832, 2833, 7, 10, 0, 0, 2833, 2834, 7, 7, 0, 0, 2834, 2835, 7, 22, 0, 0, 2835, 2836, 7, 15, 0, 0, 2836, 418, 1, 0, 0, 0, 2837, 2838, 7, 10, 0, 0, 2838, 2839, 7, 9, 0, 0, 2839, 2840, 7, 14, 0, 0, 2840, 2841, 7, 5, 0, 0, 2841, 2842, 7, 24, 0, 0, 2842, 2843, 7, 10, 0, 0, 2843, 420, 1, 0, 0, 0, 2844, 2845, 7, 10, 0, 0, 2845, 2846, 7, 27, 0, 0, 2846, 2847, 7, 10, 0, 0, 2847, 2848, 7, 7, 0, 0, 2848, 2849, 7, 16, 0, 0, 2849, 422, 1, 0, 0, 0, 2850, 2851, 7, 10, 0, 0, 2851, 2852, 7, 26, 0, 0, 2852, 2853, 7, 14, 0, 0, 2853, 2854, 7, 6, 0, 0, 2854, 2855, 7, 22, 0, 0, 2855, 2856, 7, 12, 0, 0, 2856, 2857, 7, 10, 0, 0, 2857, 424, 1, 0, 0, 0, 2858, 2859, 7, 10, 0, 0, 2859, 2860, 7, 26, 0, 0, 2860, 2861, 7, 14, 0, 0, 2861, 2862, 7, 6, 0, 0, 2862, 2863, 7, 22, 0, 0, 2863, 2864, 7, 12, 0, 0, 2864, 2865, 7, 17, 0, 0, 2865, 2866, 7, 7, 0, 0, 2866, 2867, 7, 23, 0, 0, 2867, 426, 1, 0, 0, 0, 2868, 2869, 7, 10, 0, 0, 2869, 2870, 7, 26, 0, 0, 2870, 2871, 7, 14, 0, 0, 2871, 2872, 7, 6, 0, 0, 2872, 2873, 7, 22, 0, 0, 2873, 2874, 7, 9, 0, 0, 2874, 2875, 7, 17, 0, 0, 2875, 2876, 7, 27, 0, 0, 2876, 2877, 7, 10, 0, 0, 2877, 428, 1, 0, 0, 0, 2878, 2879, 7, 10, 0, 0, 2879, 2880, 7, 26, 0, 0, 2880, 2881, 7, 10, 0, 0, 2881, 2882, 7, 14, 0, 0, 2882, 2883, 7, 22, 0, 0, 2883, 2884, 7, 16, 0, 0, 2884, 2885, 7, 10, 0, 0, 2885, 430, 1, 0, 0, 0, 2886, 2887, 7, 10, 0, 0, 2887, 2888, 7, 26, 0, 0, 2888, 2889, 7, 24, 0, 0, 2889, 2890, 7, 6, 0, 0, 2890, 2891, 7, 5, 0, 0, 2891, 2892, 7, 17, 0, 0, 2892, 2893, 7, 7, 0, 0, 2893, 432, 1, 0, 0, 0, 2894, 2895, 7, 10, 0, 0, 2895, 2896, 7, 26, 0, 0, 2896, 2897, 7, 16, 0, 0, 2897, 2898, 7, 10, 0, 0, 2898, 2899, 7, 7, 0, 0, 2899, 2900, 7, 9, 0, 0, 2900, 2901, 7, 17, 0, 0, 2901, 2902, 7, 19, 0, 0, 2902, 2903, 7, 7, 0, 0, 2903, 434, 1, 0, 0, 0, 2904, 2905, 7, 10, 0, 0, 2905, 2906, 7, 26, 0, 0, 2906, 2907, 7, 16, 0, 0, 2907, 2908, 7, 10, 0, 0, 2908, 2909, 7, 13, 0, 0, 2909, 2910, 7, 7, 0, 0, 2910, 2911, 7, 5, 0, 0, 2911, 2912, 7, 6, 0, 0, 2912, 436, 1, 0, 0, 0, 2913, 2914, 7, 25, 0, 0, 2914, 2915, 7, 5, 0, 0, 2915, 2916, 7, 15, 0, 0, 2916, 2917, 7, 17, 0, 0, 2917, 2918, 7, 6, 0, 0, 2918, 2919, 7, 8, 0, 0, 2919, 438, 1, 0, 0, 0, 2920, 2921, 7, 25, 0, 0, 2921, 2922, 7, 17, 0, 0, 2922, 2923, 7, 13, 0, 0, 2923, 2924, 7, 9, 0, 0, 2924, 2925, 7, 16, 0, 0, 2925, 440, 1, 0, 0, 0, 2926, 2927, 7, 25, 0, 0, 2927, 2928, 7, 19, 0, 0, 2928, 2929, 7, 6, 0, 0, 2929, 2930, 7, 6, 0, 0, 2930, 2931, 7, 19, 0, 0, 2931, 2932, 7, 28, 0, 0, 2932, 2933, 7, 17, 0, 0, 2933, 2934, 7, 7, 0, 0, 2934, 2935, 7, 23, 0, 0, 2935, 442, 1, 0, 0, 0, 2936, 2937, 7, 25, 0, 0, 2937, 2938, 7, 19, 0, 0, 2938, 2939, 7, 13, 0, 0, 2939, 2940, 7, 14, 0, 0, 2940, 2941, 7, 10, 0, 0, 2941, 444, 1, 0, 0, 0, 2942, 2943, 7, 25, 0, 0, 2943, 2944, 7, 19, 0, 0, 2944, 2945, 7, 13, 0, 0, 2945, 2946, 7, 28, 0, 0, 2946, 2947, 7, 5, 0, 0, 2947, 2948, 7, 13, 0, 0, 2948, 2949, 7, 12, 0, 0, 2949, 446, 1, 0, 0, 0, 2950, 2951, 7, 25, 0, 0, 2951, 2952, 7, 22, 0, 0, 2952, 2953, 7, 7, 0, 0, 2953, 2954, 7, 14, 0, 0, 2954, 2955, 7, 16, 0, 0, 2955, 2956, 7, 17, 0, 0, 2956, 2957, 7, 19, 0, 0, 2957, 2958, 7, 7, 0, 0, 2958, 448, 1, 0, 0, 0, 2959, 2960, 7, 25, 0, 0, 2960, 2961, 7, 22, 0, 0, 2961, 2962, 7, 7, 0, 0, 2962, 2963, 7, 14, 0, 0, 2963, 2964, 7, 16, 0, 0, 2964, 2965, 7, 17, 0, 0, 2965, 2966, 7, 19, 0, 0, 2966, 2967, 7, 7, 0, 0, 2967, 2968, 7, 9, 0, 0, 2968, 450, 1, 0, 0, 0, 2969, 2970, 7, 23, 0, 0, 2970, 2971, 7, 6, 0, 0, 2971, 2972, 7, 19, 0, 0, 2972, 2973, 7, 18, 0, 0, 2973, 2974, 7, 5, 0, 0, 2974, 2975, 7, 6, 0, 0, 2975, 452, 1, 0, 0, 0, 2976, 2977, 7, 23, 0, 0, 2977, 2978, 7, 13, 0, 0, 2978, 2979, 7, 5, 0, 0, 2979, 2980, 7, 7, 0, 0, 2980, 2981, 7, 16, 0, 0, 2981, 2982, 7, 10, 0, 0, 2982, 2983, 7, 12, 0, 0, 2983, 454, 1, 0, 0, 0, 2984, 2985, 7, 20, 0, 0, 2985, 2986, 7, 5, 0, 0, 2986, 2987, 7, 7, 0, 0, 2987, 2988, 7, 12, 0, 0, 2988, 2989, 7, 6, 0, 0, 2989, 2990, 7, 10, 0, 0, 2990, 2991, 7, 13, 0, 0, 2991, 456, 1, 0, 0, 0, 2992, 2993, 7, 20, 0, 0, 2993, 2994, 7, 10, 0, 0, 2994, 2995, 7, 5, 0, 0, 2995, 2996, 7, 12, 0, 0, 2996, 2997, 7, 10, 0, 0, 2997, 2998, 7, 13, 0, 0, 2998, 458, 1, 0, 0, 0, 2999, 3000, 7, 20, 0, 0, 3000, 3001, 7, 19, 0, 0, 3001, 3002, 7, 6, 0, 0, 3002, 3003, 7, 12, 0, 0, 3003, 460, 1, 0, 0, 0, 3004, 3005, 7, 20, 0, 0, 3005, 3006, 7, 19, 0, 0, 3006, 3007, 7, 22, 0, 0, 3007, 3008, 7, 13, 0, 0, 3008, 462, 1, 0, 0, 0, 3009, 3010, 7, 17, 0, 0, 3010, 3011, 7, 12, 0, 0, 3011, 3012, 7, 10, 0, 0, 3012, 3013, 7, 7, 0, 0, 3013, 3014, 7, 16, 0, 0, 3014, 3015, 7, 17, 0, 0, 3015, 3016, 7, 16, 0, 0, 3016, 3017, 7, 8, 0, 0, 3017, 464, 1, 0, 0, 0, 3018, 3019, 7, 17, 0, 0, 3019, 3020, 7, 25, 0, 0, 3020, 466, 1, 0, 0, 0, 3021, 3022, 7, 17, 0, 0, 3022, 3023, 7, 15, 0, 0, 3023, 3024, 7, 15, 0, 0, 3024, 3025, 7, 10, 0, 0, 3025, 3026, 7, 12, 0, 0, 3026, 3027, 7, 17, 0, 0, 3027, 3028, 7, 5, 0, 0, 3028, 3029, 7, 16, 0, 0, 3029, 3030, 7, 10, 0, 0, 3030, 468, 1, 0, 0, 0, 3031, 3032, 7, 17, 0, 0, 3032, 3033, 7, 15, 0, 0, 3033, 3034, 7, 15, 0, 0, 3034, 3035, 7, 22, 0, 0, 3035, 3036, 7, 16, 0, 0, 3036, 3037, 7, 5, 0, 0, 3037, 3038, 7, 18, 0, 0, 3038, 3039, 7, 6, 0, 0, 3039, 3040, 7, 10, 0, 0, 3040, 470, 1, 0, 0, 0, 3041, 3042, 7, 17, 0, 0, 3042, 3043, 7, 15, 0, 0, 3043, 3044, 7, 24, 0, 0, 3044, 3045, 7, 6, 0, 0, 3045, 3046, 7, 17, 0, 0, 3046, 3047, 7, 14, 0, 0, 3047, 3048, 7, 17, 0, 0, 3048, 3049, 7, 16, 0, 0, 3049, 472, 1, 0, 0, 0, 3050, 3051, 7, 17, 0, 0, 3051, 3052, 7, 7, 0, 0, 3052, 3053, 7, 14, 0, 0, 3053, 3054, 7, 6, 0, 0, 3054, 3055, 7, 22, 0, 0, 3055, 3056, 7, 12, 0, 0, 3056, 3057, 7, 17, 0, 0, 3057, 3058, 7, 7, 0, 0, 3058, 3059, 7, 23, 0, 0, 3059, 474, 1, 0, 0, 0, 3060, 3061, 7, 17, 0, 0, 3061, 3062, 7, 7, 0, 0, 3062, 3063, 7, 14, 0, 0, 3063, 3064, 7, 13, 0, 0, 3064, 3065, 7, 10, 0, 0, 3065, 3066, 7, 15, 0, 0, 3066, 3067, 7, 10, 0, 0, 3067, 3068, 7, 7, 0, 0, 3068, 3069, 7, 16, 0, 0, 3069, 476, 1, 0, 0, 0, 3070, 3071, 7, 17, 0, 0, 3071, 3072, 7, 7, 0, 0, 3072, 3073, 7, 12, 0, 0, 3073, 3074, 7, 10, 0, 0, 3074, 3075, 7, 26, 0, 0, 3075, 478, 1, 0, 0, 0, 3076, 3077, 7, 17, 0, 0, 3077, 3078, 7, 7, 0, 0, 3078, 3079, 7, 12, 0, 0, 3079, 3080, 7, 10, 0, 0, 3080, 3081, 7, 26, 0, 0, 3081, 3082, 7, 10, 0, 0, 3082, 3083, 7, 9, 0, 0, 3083, 480, 1, 0, 0, 0, 3084, 3085, 7, 17, 0, 0, 3085, 3086, 7, 7, 0, 0, 3086, 3087, 7, 20, 0, 0, 3087, 3088, 7, 10, 0, 0, 3088, 3089, 7, 13, 0, 0, 3089, 3090, 7, 17, 0, 0, 3090, 3091, 7, 16, 0, 0, 3091, 482, 1, 0, 0, 0, 3092, 3093, 7, 17, 0, 0, 3093, 3094, 7, 7, 0, 0, 3094, 3095, 7, 20, 0, 0, 3095, 3096, 7, 10, 0, 0, 3096, 3097, 7, 13, 0, 0, 3097, 3098, 7, 17, 0, 0, 3098, 3099, 7, 16, 0, 0, 3099, 3100, 7, 9, 0, 0, 3100, 484, 1, 0, 0, 0, 3101, 3102, 7, 17, 0, 0, 3102, 3103, 7, 7, 0, 0, 3103, 3104, 7, 6, 0, 0, 3104, 3105, 7, 17, 0, 0, 3105, 3106, 7, 7, 0, 0, 3106, 3107, 7, 10, 0, 0, 3107, 486, 1, 0, 0, 0, 3108, 3109, 7, 17, 0, 0, 3109, 3110, 7, 7, 0, 0, 3110, 3111, 7, 9, 0, 0, 3111, 3112, 7, 10, 0, 0, 3112, 3113, 7, 7, 0, 0, 3113, 3114, 7, 9, 0, 0, 3114, 3115, 7, 17, 0, 0, 3115, 3116, 7, 16, 0, 0, 3116, 3117, 7, 17, 0, 0, 3117, 3118, 7, 27, 0, 0, 3118, 3119, 7, 10, 0, 0, 3119, 488, 1, 0, 0, 0, 3120, 3121, 7, 17, 0, 0, 3121, 3122, 7, 7, 0, 0, 3122, 3123, 7, 9, 0, 0, 3123, 3124, 7, 10, 0, 0, 3124, 3125, 7, 13, 0, 0, 3125, 3126, 7, 16, 0, 0, 3126, 490, 1, 0, 0, 0, 3127, 3128, 7, 17, 0, 0, 3128, 3129, 7, 7, 0, 0, 3129, 3130, 7, 9, 0, 0, 3130, 3131, 7, 16, 0, 0, 3131, 3132, 7, 10, 0, 0, 3132, 3133, 7, 5, 0, 0, 3133, 3134, 7, 12, 0, 0, 3134, 492, 1, 0, 0, 0, 3135, 3136, 7, 17, 0, 0, 3136, 3137, 7, 7, 0, 0, 3137, 3138, 7, 27, 0, 0, 3138, 3139, 7, 19, 0, 0, 3139, 3140, 7, 21, 0, 0, 3140, 3141, 7, 10, 0, 0, 3141, 3142, 7, 13, 0, 0, 3142, 494, 1, 0, 0, 0, 3143, 3144, 7, 17, 0, 0, 3144, 3145, 7, 9, 0, 0, 3145, 3146, 7, 19, 0, 0, 3146, 3147, 7, 6, 0, 0, 3147, 3148, 7, 5, 0, 0, 3148, 3149, 7, 16, 0, 0, 3149, 3150, 7, 17, 0, 0, 3150, 3151, 7, 19, 0, 0, 3151, 3152, 7, 7, 0, 0, 3152, 496, 1, 0, 0, 0, 3153, 3154, 7, 21, 0, 0, 3154, 3155, 7, 10, 0, 0, 3155, 3156, 7, 8, 0, 0, 3156, 498, 1, 0, 0, 0, 3157, 3158, 7, 6, 0, 0, 3158, 3159, 7, 5, 0, 0, 3159, 3160, 7, 18, 0, 0, 3160, 3161, 7, 10, 0, 0, 3161, 3162, 7, 6, 0, 0, 3162, 500, 1, 0, 0, 0, 3163, 3164, 7, 6, 0, 0, 3164, 3165, 7, 5, 0, 0, 3165, 3166, 7, 7, 0, 0, 3166, 3167, 7, 23, 0, 0, 3167, 3168, 7, 22, 0, 0, 3168, 3169, 7, 5, 0, 0, 3169, 3170, 7, 23, 0, 0, 3170, 3171, 7, 10, 0, 0, 3171, 502, 1, 0, 0, 0, 3172, 3173, 7, 6, 0, 0, 3173, 3174, 7, 5, 0, 0, 3174, 3175, 7, 13, 0, 0, 3175, 3176, 7, 23, 0, 0, 3176, 3177, 7, 10, 0, 0, 3177, 504, 1, 0, 0, 0, 3178, 3179, 7, 6, 0, 0, 3179, 3180, 7, 5, 0, 0, 3180, 3181, 7, 9, 0, 0, 3181, 3182, 7, 16, 0, 0, 3182, 506, 1, 0, 0, 0, 3183, 3184, 7, 6, 0, 0, 3184, 3185, 7, 10, 0, 0, 3185, 3186, 7, 5, 0, 0, 3186, 3187, 7, 21, 0, 0, 3187, 3188, 7, 24, 0, 0, 3188, 3189, 7, 13, 0, 0, 3189, 3190, 7, 19, 0, 0, 3190, 3191, 7, 19, 0, 0, 3191, 3192, 7, 25, 0, 0, 3192, 508, 1, 0, 0, 0, 3193, 3194, 7, 6, 0, 0, 3194, 3195, 7, 10, 0, 0, 3195, 3196, 7, 27, 0, 0, 3196, 3197, 7, 10, 0, 0, 3197, 3198, 7, 6, 0, 0, 3198, 510, 1, 0, 0, 0, 3199, 3200, 7, 6, 0, 0, 3200, 3201, 7, 17, 0, 0, 3201, 3202, 7, 9, 0, 0, 3202, 3203, 7, 16, 0, 0, 3203, 3204, 7, 10, 0, 0, 3204, 3205, 7, 7, 0, 0, 3205, 512, 1, 0, 0, 0, 3206, 3207, 7, 6, 0, 0, 3207, 3208, 7, 19, 0, 0, 3208, 3209, 7, 5, 0, 0, 3209, 3210, 7, 12, 0, 0, 3210, 514, 1, 0, 0, 0, 3211, 3212, 7, 6, 0, 0, 3212, 3213, 7, 19, 0, 0, 3213, 3214, 7, 14, 0, 0, 3214, 3215, 7, 5, 0, 0, 3215, 3216, 7, 6, 0, 0, 3216, 516, 1, 0, 0, 0, 3217, 3218, 7, 6, 0, 0, 3218, 3219, 7, 19, 0, 0, 3219, 3220, 7, 14, 0, 0, 3220, 3221, 7, 5, 0, 0, 3221, 3222, 7, 16, 0, 0, 3222, 3223, 7, 17, 0, 0, 3223, 3224, 7, 19, 0, 0, 3224, 3225, 7, 7, 0, 0, 3225, 518, 1, 0, 0, 0, 3226, 3227, 7, 6, 0, 0, 3227, 3228, 7, 19, 0, 0, 3228, 3229, 7, 14, 0, 0, 3229, 3230, 7, 21, 0, 0, 3230, 520, 1, 0, 0, 0, 3231, 3232, 7, 15, 0, 0, 3232, 3233, 7, 5, 0, 0, 3233, 3234, 7, 24, 0, 0, 3234, 3235, 7, 24, 0, 0, 3235, 3236, 7, 17, 0, 0, 3236, 3237, 7, 7, 0, 0, 3237, 3238, 7, 23, 0, 0, 3238, 522, 1, 0, 0, 0, 3239, 3240, 7, 15, 0, 0, 3240, 3241, 7, 5, 0, 0, 3241, 3242, 7, 16, 0, 0, 3242, 3243, 7, 14, 0, 0, 3243, 3244, 7, 20, 0, 0, 3244, 524, 1, 0, 0, 0, 3245, 3246, 7, 15, 0, 0, 3246, 3247, 7, 5, 0, 0, 3247, 3248, 7, 16, 0, 0, 3248, 3249, 7, 14, 0, 0, 3249, 3250, 7, 20, 0, 0, 3250, 3251, 7, 10, 0, 0, 3251, 3252, 7, 12, 0, 0, 3252, 526, 1, 0, 0, 0, 3253, 3254, 7, 15, 0, 0, 3254, 3255, 7, 5, 0, 0, 3255, 3256, 7, 16, 0, 0, 3256, 3257, 7, 10, 0, 0, 3257, 3258, 7, 13, 0, 0, 3258, 3259, 7, 17, 0, 0, 3259, 3260, 7, 5, 0, 0, 3260, 3261, 7, 6, 0, 0, 3261, 3262, 7, 17, 0, 0, 3262, 3263, 7, 11, 0, 0, 3263, 3264, 7, 10, 0, 0, 3264, 3265, 7, 12, 0, 0, 3265, 528, 1, 0, 0, 0, 3266, 3267, 7, 15, 0, 0, 3267, 3268, 7, 5, 0, 0, 3268, 3269, 7, 26, 0, 0, 3269, 3270, 7, 27, 0, 0, 3270, 3271, 7, 5, 0, 0, 3271, 3272, 7, 6, 0, 0, 3272, 3273, 7, 22, 0, 0, 3273, 3274, 7, 10, 0, 0, 3274, 530, 1, 0, 0, 0, 3275, 3276, 7, 15, 0, 0, 3276, 3277, 7, 10, 0, 0, 3277, 3278, 7, 13, 0, 0, 3278, 3279, 7, 23, 0, 0, 3279, 3280, 7, 10, 0, 0, 3280, 532, 1, 0, 0, 0, 3281, 3282, 7, 15, 0, 0, 3282, 3283, 7, 17, 0, 0, 3283, 3284, 7, 7, 0, 0, 3284, 3285, 7, 22, 0, 0, 3285, 3286, 7, 16, 0, 0, 3286, 3287, 7, 10, 0, 0, 3287, 534, 1, 0, 0, 0, 3288, 3289, 7, 15, 0, 0, 3289, 3290, 7, 17, 0, 0, 3290, 3291, 7, 7, 0, 0, 3291, 3292, 7, 27, 0, 0, 3292, 3293, 7, 5, 0, 0, 3293, 3294, 7, 6, 0, 0, 3294, 3295, 7, 22, 0, 0, 3295, 3296, 7, 10, 0, 0, 3296, 536, 1, 0, 0, 0, 3297, 3298, 7, 15, 0, 0, 3298, 3299, 7, 19, 0, 0, 3299, 3300, 7, 12, 0, 0, 3300, 3301, 7, 10, 0, 0, 3301, 538, 1, 0, 0, 0, 3302, 3303, 7, 15, 0, 0, 3303, 3304, 7, 19, 0, 0, 3304, 3305, 7, 7, 0, 0, 3305, 3306, 7, 16, 0, 0, 3306, 3307, 7, 20, 0, 0, 3307, 540, 1, 0, 0, 0, 3308, 3309, 7, 15, 0, 0, 3309, 3310, 7, 19, 0, 0, 3310, 3311, 7, 27, 0, 0, 3311, 3312, 7, 10, 0, 0, 3312, 542, 1, 0, 0, 0, 3313, 3314, 7, 7, 0, 0, 3314, 3315, 7, 5, 0, 0, 3315, 3316, 7, 15, 0, 0, 3316, 3317, 7, 10, 0, 0, 3317, 544, 1, 0, 0, 0, 3318, 3319, 7, 7, 0, 0, 3319, 3320, 7, 5, 0, 0, 3320, 3321, 7, 15, 0, 0, 3321, 3322, 7, 10, 0, 0, 3322, 3323, 7, 9, 0, 0, 3323, 546, 1, 0, 0, 0, 3324, 3325, 7, 7, 0, 0, 3325, 3326, 7, 10, 0, 0, 3326, 3327, 7, 26, 0, 0, 3327, 3328, 7, 16, 0, 0, 3328, 548, 1, 0, 0, 0, 3329, 3330, 7, 7, 0, 0, 3330, 3331, 7, 19, 0, 0, 3331, 550, 1, 0, 0, 0, 3332, 3333, 7, 7, 0, 0, 3333, 3334, 7, 19, 0, 0, 3334, 3335, 7, 16, 0, 0, 3335, 3336, 7, 20, 0, 0, 3336, 3337, 7, 17, 0, 0, 3337, 3338, 7, 7, 0, 0, 3338, 3339, 7, 23, 0, 0, 3339, 552, 1, 0, 0, 0, 3340, 3341, 7, 7, 0, 0, 3341, 3342, 7, 19, 0, 0, 3342, 3343, 7, 16, 0, 0, 3343, 3344, 7, 17, 0, 0, 3344, 3345, 7, 25, 0, 0, 3345, 3346, 7, 8, 0, 0, 3346, 554, 1, 0, 0, 0, 3347, 3348, 7, 7, 0, 0, 3348, 3349, 7, 19, 0, 0, 3349, 3350, 7, 28, 0, 0, 3350, 3351, 7, 5, 0, 0, 3351, 3352, 7, 17, 0, 0, 3352, 3353, 7, 16, 0, 0, 3353, 556, 1, 0, 0, 0, 3354, 3355, 7, 7, 0, 0, 3355, 3356, 7, 22, 0, 0, 3356, 3357, 7, 6, 0, 0, 3357, 3358, 7, 6, 0, 0, 3358, 3359, 7, 9, 0, 0, 3359, 558, 1, 0, 0, 0, 3360, 3361, 7, 19, 0, 0, 3361, 3362, 7, 18, 0, 0, 3362, 3363, 7, 30, 0, 0, 3363, 3364, 7, 10, 0, 0, 3364, 3365, 7, 14, 0, 0, 3365, 3366, 7, 16, 0, 0, 3366, 560, 1, 0, 0, 0, 3367, 3368, 7, 19, 0, 0, 3368, 3369, 7, 25, 0, 0, 3369, 562, 1, 0, 0, 0, 3370, 3371, 7, 19, 0, 0, 3371, 3372, 7, 25, 0, 0, 3372, 3373, 7, 25, 0, 0, 3373, 564, 1, 0, 0, 0, 3374, 3375, 7, 19, 0, 0, 3375, 3376, 7, 17, 0, 0, 3376, 3377, 7, 12, 0, 0, 3377, 3378, 7, 9, 0, 0, 3378, 566, 1, 0, 0, 0, 3379, 3380, 7, 19, 0, 0, 3380, 3381, 7, 24, 0, 0, 3381, 3382, 7, 10, 0, 0, 3382, 3383, 7, 13, 0, 0, 3383, 3384, 7, 5, 0, 0, 3384, 3385, 7, 16, 0, 0, 3385, 3386, 7, 19, 0, 0, 3386, 3387, 7, 13, 0, 0, 3387, 568, 1, 0, 0, 0, 3388, 3389, 7, 19, 0, 0, 3389, 3390, 7, 24, 0, 0, 3390, 3391, 7, 16, 0, 0, 3391, 3392, 7, 17, 0, 0, 3392, 3393, 7, 19, 0, 0, 3393, 3394, 7, 7, 0, 0, 3394, 570, 1, 0, 0, 0, 3395, 3396, 7, 19, 0, 0, 3396, 3397, 7, 24, 0, 0, 3397, 3398, 7, 16, 0, 0, 3398, 3399, 7, 17, 0, 0, 3399, 3400, 7, 19, 0, 0, 3400, 3401, 7, 7, 0, 0, 3401, 3402, 7, 9, 0, 0, 3402, 572, 1, 0, 0, 0, 3403, 3404, 7, 19, 0, 0, 3404, 3405, 7, 28, 0, 0, 3405, 3406, 7, 7, 0, 0, 3406, 3407, 7, 10, 0, 0, 3407, 3408, 7, 12, 0, 0, 3408, 574, 1, 0, 0, 0, 3409, 3410, 7, 19, 0, 0, 3410, 3411, 7, 28, 0, 0, 3411, 3412, 7, 7, 0, 0, 3412, 3413, 7, 10, 0, 0, 3413, 3414, 7, 13, 0, 0, 3414, 576, 1, 0, 0, 0, 3415, 3416, 7, 24, 0, 0, 3416, 3417, 7, 5, 0, 0, 3417, 3418, 7, 13, 0, 0, 3418, 3419, 7, 9, 0, 0, 3419, 3420, 7, 10, 0, 0, 3420, 3421, 7, 13, 0, 0, 3421, 578, 1, 0, 0, 0, 3422, 3423, 7, 24, 0, 0, 3423, 3424, 7, 5, 0, 0, 3424, 3425, 7, 13, 0, 0, 3425, 3426, 7, 16, 0, 0, 3426, 3427, 7, 17, 0, 0, 3427, 3428, 7, 5, 0, 0, 3428, 3429, 7, 6, 0, 0, 3429, 580, 1, 0, 0, 0, 3430, 3431, 7, 24, 0, 0, 3431, 3432, 7, 5, 0, 0, 3432, 3433, 7, 13, 0, 0, 3433, 3434, 7, 16, 0, 0, 3434, 3435, 7, 17, 0, 0, 3435, 3436, 7, 16, 0, 0, 3436, 3437, 7, 17, 0, 0, 3437, 3438, 7, 19, 0, 0, 3438, 3439, 7, 7, 0, 0, 3439, 582, 1, 0, 0, 0, 3440, 3441, 7, 24, 0, 0, 3441, 3442, 7, 5, 0, 0, 3442, 3443, 7, 9, 0, 0, 3443, 3444, 7, 9, 0, 0, 3444, 3445, 7, 17, 0, 0, 3445, 3446, 7, 7, 0, 0, 3446, 3447, 7, 23, 0, 0, 3447, 584, 1, 0, 0, 0, 3448, 3449, 7, 24, 0, 0, 3449, 3450, 7, 5, 0, 0, 3450, 3451, 7, 9, 0, 0, 3451, 3452, 7, 9, 0, 0, 3452, 3453, 7, 28, 0, 0, 3453, 3454, 7, 19, 0, 0, 3454, 3455, 7, 13, 0, 0, 3455, 3456, 7, 12, 0, 0, 3456, 586, 1, 0, 0, 0, 3457, 3458, 7, 24, 0, 0, 3458, 3459, 7, 6, 0, 0, 3459, 3460, 7, 5, 0, 0, 3460, 3461, 7, 7, 0, 0, 3461, 3462, 7, 9, 0, 0, 3462, 588, 1, 0, 0, 0, 3463, 3464, 7, 24, 0, 0, 3464, 3465, 7, 13, 0, 0, 3465, 3466, 7, 10, 0, 0, 3466, 3467, 7, 14, 0, 0, 3467, 3468, 7, 10, 0, 0, 3468, 3469, 7, 12, 0, 0, 3469, 3470, 7, 17, 0, 0, 3470, 3471, 7, 7, 0, 0, 3471, 3472, 7, 23, 0, 0, 3472, 590, 1, 0, 0, 0, 3473, 3474, 7, 24, 0, 0, 3474, 3475, 7, 13, 0, 0, 3475, 3476, 7, 10, 0, 0, 3476, 3477, 7, 24, 0, 0, 3477, 3478, 7, 5, 0, 0, 3478, 3479, 7, 13, 0, 0, 3479, 3480, 7, 10, 0, 0, 3480, 592, 1, 0, 0, 0, 3481, 3482, 7, 24, 0, 0, 3482, 3483, 7, 13, 0, 0, 3483, 3484, 7, 10, 0, 0, 3484, 3485, 7, 24, 0, 0, 3485, 3486, 7, 5, 0, 0, 3486, 3487, 7, 13, 0, 0, 3487, 3488, 7, 10, 0, 0, 3488, 3489, 7, 12, 0, 0, 3489, 594, 1, 0, 0, 0, 3490, 3491, 7, 24, 0, 0, 3491, 3492, 7, 13, 0, 0, 3492, 3493, 7, 10, 0, 0, 3493, 3494, 7, 9, 0, 0, 3494, 3495, 7, 10, 0, 0, 3495, 3496, 7, 13, 0, 0, 3496, 3497, 7, 27, 0, 0, 3497, 3498, 7, 10, 0, 0, 3498, 596, 1, 0, 0, 0, 3499, 3500, 7, 24, 0, 0, 3500, 3501, 7, 13, 0, 0, 3501, 3502, 7, 17, 0, 0, 3502, 3503, 7, 19, 0, 0, 3503, 3504, 7, 13, 0, 0, 3504, 598, 1, 0, 0, 0, 3505, 3506, 7, 24, 0, 0, 3506, 3507, 7, 13, 0, 0, 3507, 3508, 7, 17, 0, 0, 3508, 3509, 7, 27, 0, 0, 3509, 3510, 7, 17, 0, 0, 3510, 3511, 7, 6, 0, 0, 3511, 3512, 7, 10, 0, 0, 3512, 3513, 7, 23, 0, 0, 3513, 3514, 7, 10, 0, 0, 3514, 3515, 7, 9, 0, 0, 3515, 600, 1, 0, 0, 0, 3516, 3517, 7, 24, 0, 0, 3517, 3518, 7, 13, 0, 0, 3518, 3519, 7, 19, 0, 0, 3519, 3520, 7, 14, 0, 0, 3520, 3521, 7, 10, 0, 0, 3521, 3522, 7, 12, 0, 0, 3522, 3523, 7, 22, 0, 0, 3523, 3524, 7, 13, 0, 0, 3524, 3525, 7, 5, 0, 0, 3525, 3526, 7, 6, 0, 0, 3526, 602, 1, 0, 0, 0, 3527, 3528, 7, 24, 0, 0, 3528, 3529, 7, 13, 0, 0, 3529, 3530, 7, 19, 0, 0, 3530, 3531, 7, 14, 0, 0, 3531, 3532, 7, 10, 0, 0, 3532, 3533, 7, 12, 0, 0, 3533, 3534, 7, 22, 0, 0, 3534, 3535, 7, 13, 0, 0, 3535, 3536, 7, 10, 0, 0, 3536, 604, 1, 0, 0, 0, 3537, 3538, 7, 24, 0, 0, 3538, 3539, 7, 13, 0, 0, 3539, 3540, 7, 19, 0, 0, 3540, 3541, 7, 23, 0, 0, 3541, 3542, 7, 13, 0, 0, 3542, 3543, 7, 5, 0, 0, 3543, 3544, 7, 15, 0, 0, 3544, 606, 1, 0, 0, 0, 3545, 3546, 7, 29, 0, 0, 3546, 3547, 7, 22, 0, 0, 3547, 3548, 7, 19, 0, 0, 3548, 3549, 7, 16, 0, 0, 3549, 3550, 7, 10, 0, 0, 3550, 608, 1, 0, 0, 0, 3551, 3552, 7, 13, 0, 0, 3552, 3553, 7, 5, 0, 0, 3553, 3554, 7, 7, 0, 0, 3554, 3555, 7, 23, 0, 0, 3555, 3556, 7, 10, 0, 0, 3556, 610, 1, 0, 0, 0, 3557, 3558, 7, 13, 0, 0, 3558, 3559, 7, 10, 0, 0, 3559, 3560, 7, 5, 0, 0, 3560, 3561, 7, 12, 0, 0, 3561, 612, 1, 0, 0, 0, 3562, 3563, 7, 13, 0, 0, 3563, 3564, 7, 10, 0, 0, 3564, 3565, 7, 5, 0, 0, 3565, 3566, 7, 9, 0, 0, 3566, 3567, 7, 9, 0, 0, 3567, 3568, 7, 17, 0, 0, 3568, 3569, 7, 23, 0, 0, 3569, 3570, 7, 7, 0, 0, 3570, 614, 1, 0, 0, 0, 3571, 3572, 7, 13, 0, 0, 3572, 3573, 7, 10, 0, 0, 3573, 3574, 7, 14, 0, 0, 3574, 3575, 7, 20, 0, 0, 3575, 3576, 7, 10, 0, 0, 3576, 3577, 7, 14, 0, 0, 3577, 3578, 7, 21, 0, 0, 3578, 616, 1, 0, 0, 0, 3579, 3580, 7, 13, 0, 0, 3580, 3581, 7, 10, 0, 0, 3581, 3582, 7, 14, 0, 0, 3582, 3583, 7, 22, 0, 0, 3583, 3584, 7, 13, 0, 0, 3584, 3585, 7, 9, 0, 0, 3585, 3586, 7, 17, 0, 0, 3586, 3587, 7, 27, 0, 0, 3587, 3588, 7, 10, 0, 0, 3588, 618, 1, 0, 0, 0, 3589, 3590, 7, 13, 0, 0, 3590, 3591, 7, 10, 0, 0, 3591, 3592, 7, 25, 0, 0, 3592, 620, 1, 0, 0, 0, 3593, 3594, 7, 13, 0, 0, 3594, 3595, 7, 10, 0, 0, 3595, 3596, 7, 25, 0, 0, 3596, 3597, 7, 13, 0, 0, 3597, 3598, 7, 10, 0, 0, 3598, 3599, 7, 9, 0, 0, 3599, 3600, 7, 20, 0, 0, 3600, 622, 1, 0, 0, 0, 3601, 3602, 7, 13, 0, 0, 3602, 3603, 7, 10, 0, 0, 3603, 3604, 7, 17, 0, 0, 3604, 3605, 7, 7, 0, 0, 3605, 3606, 7, 12, 0, 0, 3606, 3607, 7, 10, 0, 0, 3607, 3608, 7, 26, 0, 0, 3608, 624, 1, 0, 0, 0, 3609, 3610, 7, 13, 0, 0, 3610, 3611, 7, 10, 0, 0, 3611, 3612, 7, 6, 0, 0, 3612, 3613, 7, 5, 0, 0, 3613, 3614, 7, 16, 0, 0, 3614, 3615, 7, 17, 0, 0, 3615, 3616, 7, 27, 0, 0, 3616, 3617, 7, 10, 0, 0, 3617, 626, 1, 0, 0, 0, 3618, 3619, 7, 13, 0, 0, 3619, 3620, 7, 10, 0, 0, 3620, 3621, 7, 6, 0, 0, 3621, 3622, 7, 10, 0, 0, 3622, 3623, 7, 5, 0, 0, 3623, 3624, 7, 9, 0, 0, 3624, 3625, 7, 10, 0, 0, 3625, 628, 1, 0, 0, 0, 3626, 3627, 7, 13, 0, 0, 3627, 3628, 7, 10, 0, 0, 3628, 3629, 7, 7, 0, 0, 3629, 3630, 7, 5, 0, 0, 3630, 3631, 7, 15, 0, 0, 3631, 3632, 7, 10, 0, 0, 3632, 630, 1, 0, 0, 0, 3633, 3634, 7, 13, 0, 0, 3634, 3635, 7, 10, 0, 0, 3635, 3636, 7, 24, 0, 0, 3636, 3637, 7, 10, 0, 0, 3637, 3638, 7, 5, 0, 0, 3638, 3639, 7, 16, 0, 0, 3639, 3640, 7, 5, 0, 0, 3640, 3641, 7, 18, 0, 0, 3641, 3642, 7, 6, 0, 0, 3642, 3643, 7, 10, 0, 0, 3643, 632, 1, 0, 0, 0, 3644, 3645, 7, 13, 0, 0, 3645, 3646, 7, 10, 0, 0, 3646, 3647, 7, 24, 0, 0, 3647, 3648, 7, 6, 0, 0, 3648, 3649, 7, 5, 0, 0, 3649, 3650, 7, 14, 0, 0, 3650, 3651, 7, 10, 0, 0, 3651, 634, 1, 0, 0, 0, 3652, 3653, 7, 13, 0, 0, 3653, 3654, 7, 10, 0, 0, 3654, 3655, 7, 24, 0, 0, 3655, 3656, 7, 6, 0, 0, 3656, 3657, 7, 17, 0, 0, 3657, 3658, 7, 14, 0, 0, 3658, 3659, 7, 5, 0, 0, 3659, 636, 1, 0, 0, 0, 3660, 3661, 7, 13, 0, 0, 3661, 3662, 7, 10, 0, 0, 3662, 3663, 7, 9, 0, 0, 3663, 3664, 7, 10, 0, 0, 3664, 3665, 7, 16, 0, 0, 3665, 638, 1, 0, 0, 0, 3666, 3667, 7, 13, 0, 0, 3667, 3668, 7, 10, 0, 0, 3668, 3669, 7, 9, 0, 0, 3669, 3670, 7, 16, 0, 0, 3670, 3671, 7, 5, 0, 0, 3671, 3672, 7, 13, 0, 0, 3672, 3673, 7, 16, 0, 0, 3673, 640, 1, 0, 0, 0, 3674, 3675, 7, 13, 0, 0, 3675, 3676, 7, 10, 0, 0, 3676, 3677, 7, 9, 0, 0, 3677, 3678, 7, 16, 0, 0, 3678, 3679, 7, 13, 0, 0, 3679, 3680, 7, 17, 0, 0, 3680, 3681, 7, 14, 0, 0, 3681, 3682, 7, 16, 0, 0, 3682, 642, 1, 0, 0, 0, 3683, 3684, 7, 13, 0, 0, 3684, 3685, 7, 10, 0, 0, 3685, 3686, 7, 16, 0, 0, 3686, 3687, 7, 22, 0, 0, 3687, 3688, 7, 13, 0, 0, 3688, 3689, 7, 7, 0, 0, 3689, 3690, 7, 9, 0, 0, 3690, 644, 1, 0, 0, 0, 3691, 3692, 7, 13, 0, 0, 3692, 3693, 7, 10, 0, 0, 3693, 3694, 7, 27, 0, 0, 3694, 3695, 7, 19, 0, 0, 3695, 3696, 7, 21, 0, 0, 3696, 3697, 7, 10, 0, 0, 3697, 646, 1, 0, 0, 0, 3698, 3699, 7, 13, 0, 0, 3699, 3700, 7, 19, 0, 0, 3700, 3701, 7, 6, 0, 0, 3701, 3702, 7, 10, 0, 0, 3702, 648, 1, 0, 0, 0, 3703, 3704, 7, 13, 0, 0, 3704, 3705, 7, 19, 0, 0, 3705, 3706, 7, 6, 0, 0, 3706, 3707, 7, 6, 0, 0, 3707, 3708, 7, 18, 0, 0, 3708, 3709, 7, 5, 0, 0, 3709, 3710, 7, 14, 0, 0, 3710, 3711, 7, 21, 0, 0, 3711, 650, 1, 0, 0, 0, 3712, 3713, 7, 13, 0, 0, 3713, 3714, 7, 19, 0, 0, 3714, 3715, 7, 28, 0, 0, 3715, 3716, 7, 9, 0, 0, 3716, 652, 1, 0, 0, 0, 3717, 3718, 7, 13, 0, 0, 3718, 3719, 7, 22, 0, 0, 3719, 3720, 7, 6, 0, 0, 3720, 3721, 7, 10, 0, 0, 3721, 654, 1, 0, 0, 0, 3722, 3723, 7, 9, 0, 0, 3723, 3724, 7, 5, 0, 0, 3724, 3725, 7, 27, 0, 0, 3725, 3726, 7, 10, 0, 0, 3726, 3727, 7, 24, 0, 0, 3727, 3728, 7, 19, 0, 0, 3728, 3729, 7, 17, 0, 0, 3729, 3730, 7, 7, 0, 0, 3730, 3731, 7, 16, 0, 0, 3731, 656, 1, 0, 0, 0, 3732, 3733, 7, 9, 0, 0, 3733, 3734, 7, 14, 0, 0, 3734, 3735, 7, 20, 0, 0, 3735, 3736, 7, 10, 0, 0, 3736, 3737, 7, 15, 0, 0, 3737, 3738, 7, 5, 0, 0, 3738, 658, 1, 0, 0, 0, 3739, 3740, 7, 9, 0, 0, 3740, 3741, 7, 14, 0, 0, 3741, 3742, 7, 13, 0, 0, 3742, 3743, 7, 19, 0, 0, 3743, 3744, 7, 6, 0, 0, 3744, 3745, 7, 6, 0, 0, 3745, 660, 1, 0, 0, 0, 3746, 3747, 7, 9, 0, 0, 3747, 3748, 7, 10, 0, 0, 3748, 3749, 7, 5, 0, 0, 3749, 3750, 7, 13, 0, 0, 3750, 3751, 7, 14, 0, 0, 3751, 3752, 7, 20, 0, 0, 3752, 662, 1, 0, 0, 0, 3753, 3754, 7, 9, 0, 0, 3754, 3755, 7, 10, 0, 0, 3755, 3756, 7, 14, 0, 0, 3756, 3757, 7, 19, 0, 0, 3757, 3758, 7, 7, 0, 0, 3758, 3759, 7, 12, 0, 0, 3759, 664, 1, 0, 0, 0, 3760, 3761, 7, 9, 0, 0, 3761, 3762, 7, 10, 0, 0, 3762, 3763, 7, 14, 0, 0, 3763, 3764, 7, 22, 0, 0, 3764, 3765, 7, 13, 0, 0, 3765, 3766, 7, 17, 0, 0, 3766, 3767, 7, 16, 0, 0, 3767, 3768, 7, 8, 0, 0, 3768, 666, 1, 0, 0, 0, 3769, 3770, 7, 9, 0, 0, 3770, 3771, 7, 10, 0, 0, 3771, 3772, 7, 29, 0, 0, 3772, 3773, 7, 22, 0, 0, 3773, 3774, 7, 10, 0, 0, 3774, 3775, 7, 7, 0, 0, 3775, 3776, 7, 14, 0, 0, 3776, 3777, 7, 10, 0, 0, 3777, 668, 1, 0, 0, 0, 3778, 3779, 7, 9, 0, 0, 3779, 3780, 7, 10, 0, 0, 3780, 3781, 7, 29, 0, 0, 3781, 3782, 7, 22, 0, 0, 3782, 3783, 7, 10, 0, 0, 3783, 3784, 7, 7, 0, 0, 3784, 3785, 7, 14, 0, 0, 3785, 3786, 7, 10, 0, 0, 3786, 3787, 7, 9, 0, 0, 3787, 670, 1, 0, 0, 0, 3788, 3789, 7, 9, 0, 0, 3789, 3790, 7, 10, 0, 0, 3790, 3791, 7, 13, 0, 0, 3791, 3792, 7, 17, 0, 0, 3792, 3793, 7, 5, 0, 0, 3793, 3794, 7, 6, 0, 0, 3794, 3795, 7, 17, 0, 0, 3795, 3796, 7, 11, 0, 0, 3796, 3797, 7, 5, 0, 0, 3797, 3798, 7, 18, 0, 0, 3798, 3799, 7, 6, 0, 0, 3799, 3800, 7, 10, 0, 0, 3800, 672, 1, 0, 0, 0, 3801, 3802, 7, 9, 0, 0, 3802, 3803, 7, 10, 0, 0, 3803, 3804, 7, 13, 0, 0, 3804, 3805, 7, 27, 0, 0, 3805, 3806, 7, 10, 0, 0, 3806, 3807, 7, 13, 0, 0, 3807, 674, 1, 0, 0, 0, 3808, 3809, 7, 9, 0, 0, 3809, 3810, 7, 10, 0, 0, 3810, 3811, 7, 9, 0, 0, 3811, 3812, 7, 9, 0, 0, 3812, 3813, 7, 17, 0, 0, 3813, 3814, 7, 19, 0, 0, 3814, 3815, 7, 7, 0, 0, 3815, 676, 1, 0, 0, 0, 3816, 3817, 7, 9, 0, 0, 3817, 3818, 7, 10, 0, 0, 3818, 3819, 7, 16, 0, 0, 3819, 678, 1, 0, 0, 0, 3820, 3821, 7, 9, 0, 0, 3821, 3822, 7, 20, 0, 0, 3822, 3823, 7, 5, 0, 0, 3823, 3824, 7, 13, 0, 0, 3824, 3825, 7, 10, 0, 0, 3825, 680, 1, 0, 0, 0, 3826, 3827, 7, 9, 0, 0, 3827, 3828, 7, 20, 0, 0, 3828, 3829, 7, 19, 0, 0, 3829, 3830, 7, 28, 0, 0, 3830, 682, 1, 0, 0, 0, 3831, 3832, 7, 9, 0, 0, 3832, 3833, 7, 17, 0, 0, 3833, 3834, 7, 15, 0, 0, 3834, 3835, 7, 24, 0, 0, 3835, 3836, 7, 6, 0, 0, 3836, 3837, 7, 10, 0, 0, 3837, 684, 1, 0, 0, 0, 3838, 3839, 7, 9, 0, 0, 3839, 3840, 7, 7, 0, 0, 3840, 3841, 7, 5, 0, 0, 3841, 3842, 7, 24, 0, 0, 3842, 3843, 7, 9, 0, 0, 3843, 3844, 7, 20, 0, 0, 3844, 3845, 7, 19, 0, 0, 3845, 3846, 7, 16, 0, 0, 3846, 686, 1, 0, 0, 0, 3847, 3848, 7, 9, 0, 0, 3848, 3849, 7, 16, 0, 0, 3849, 3850, 7, 5, 0, 0, 3850, 3851, 7, 18, 0, 0, 3851, 3852, 7, 6, 0, 0, 3852, 3853, 7, 10, 0, 0, 3853, 688, 1, 0, 0, 0, 3854, 3855, 7, 9, 0, 0, 3855, 3856, 7, 16, 0, 0, 3856, 3857, 7, 5, 0, 0, 3857, 3858, 7, 7, 0, 0, 3858, 3859, 7, 12, 0, 0, 3859, 3860, 7, 5, 0, 0, 3860, 3861, 7, 6, 0, 0, 3861, 3862, 7, 19, 0, 0, 3862, 3863, 7, 7, 0, 0, 3863, 3864, 7, 10, 0, 0, 3864, 690, 1, 0, 0, 0, 3865, 3866, 7, 9, 0, 0, 3866, 3867, 7, 16, 0, 0, 3867, 3868, 7, 5, 0, 0, 3868, 3869, 7, 13, 0, 0, 3869, 3870, 7, 16, 0, 0, 3870, 692, 1, 0, 0, 0, 3871, 3872, 7, 9, 0, 0, 3872, 3873, 7, 16, 0, 0, 3873, 3874, 7, 5, 0, 0, 3874, 3875, 7, 16, 0, 0, 3875, 3876, 7, 10, 0, 0, 3876, 3877, 7, 15, 0, 0, 3877, 3878, 7, 10, 0, 0, 3878, 3879, 7, 7, 0, 0, 3879, 3880, 7, 16, 0, 0, 3880, 694, 1, 0, 0, 0, 3881, 3882, 7, 9, 0, 0, 3882, 3883, 7, 16, 0, 0, 3883, 3884, 7, 5, 0, 0, 3884, 3885, 7, 16, 0, 0, 3885, 3886, 7, 17, 0, 0, 3886, 3887, 7, 9, 0, 0, 3887, 3888, 7, 16, 0, 0, 3888, 3889, 7, 17, 0, 0, 3889, 3890, 7, 14, 0, 0, 3890, 3891, 7, 9, 0, 0, 3891, 696, 1, 0, 0, 0, 3892, 3893, 7, 9, 0, 0, 3893, 3894, 7, 16, 0, 0, 3894, 3895, 7, 12, 0, 0, 3895, 3896, 7, 17, 0, 0, 3896, 3897, 7, 7, 0, 0, 3897, 698, 1, 0, 0, 0, 3898, 3899, 7, 9, 0, 0, 3899, 3900, 7, 16, 0, 0, 3900, 3901, 7, 12, 0, 0, 3901, 3902, 7, 19, 0, 0, 3902, 3903, 7, 22, 0, 0, 3903, 3904, 7, 16, 0, 0, 3904, 700, 1, 0, 0, 0, 3905, 3906, 7, 9, 0, 0, 3906, 3907, 7, 16, 0, 0, 3907, 3908, 7, 19, 0, 0, 3908, 3909, 7, 13, 0, 0, 3909, 3910, 7, 5, 0, 0, 3910, 3911, 7, 23, 0, 0, 3911, 3912, 7, 10, 0, 0, 3912, 702, 1, 0, 0, 0, 3913, 3914, 7, 9, 0, 0, 3914, 3915, 7, 16, 0, 0, 3915, 3916, 7, 13, 0, 0, 3916, 3917, 7, 17, 0, 0, 3917, 3918, 7, 14, 0, 0, 3918, 3919, 7, 16, 0, 0, 3919, 704, 1, 0, 0, 0, 3920, 3921, 7, 9, 0, 0, 3921, 3922, 7, 16, 0, 0, 3922, 3923, 7, 13, 0, 0, 3923, 3924, 7, 17, 0, 0, 3924, 3925, 7, 24, 0, 0, 3925, 706, 1, 0, 0, 0, 3926, 3927, 7, 9, 0, 0, 3927, 3928, 7, 8, 0, 0, 3928, 3929, 7, 9, 0, 0, 3929, 3930, 7, 17, 0, 0, 3930, 3931, 7, 12, 0, 0, 3931, 708, 1, 0, 0, 0, 3932, 3933, 7, 9, 0, 0, 3933, 3934, 7, 8, 0, 0, 3934, 3935, 7, 9, 0, 0, 3935, 3936, 7, 16, 0, 0, 3936, 3937, 7, 10, 0, 0, 3937, 3938, 7, 15, 0, 0, 3938, 710, 1, 0, 0, 0, 3939, 3940, 7, 16, 0, 0, 3940, 3941, 7, 5, 0, 0, 3941, 3942, 7, 18, 0, 0, 3942, 3943, 7, 6, 0, 0, 3943, 3944, 7, 10, 0, 0, 3944, 3945, 7, 9, 0, 0, 3945, 712, 1, 0, 0, 0, 3946, 3947, 7, 11, 0, 0, 3947, 3948, 7, 16, 0, 0, 3948, 3949, 7, 5, 0, 0, 3949, 3950, 7, 18, 0, 0, 3950, 3951, 7, 6, 0, 0, 3951, 3952, 7, 10, 0, 0, 3952, 3953, 7, 9, 0, 0, 3953, 714, 1, 0, 0, 0, 3954, 3955, 7, 16, 0, 0, 3955, 3956, 7, 5, 0, 0, 3956, 3957, 7, 18, 0, 0, 3957, 3958, 7, 6, 0, 0, 3958, 3959, 7, 10, 0, 0, 3959, 3960, 7, 9, 0, 0, 3960, 3961, 7, 24, 0, 0, 3961, 3962, 7, 5, 0, 0, 3962, 3963, 7, 14, 0, 0, 3963, 3964, 7, 10, 0, 0, 3964, 716, 1, 0, 0, 0, 3965, 3966, 7, 16, 0, 0, 3966, 3967, 7, 10, 0, 0, 3967, 3968, 7, 15, 0, 0, 3968, 3969, 7, 24, 0, 0, 3969, 718, 1, 0, 0, 0, 3970, 3971, 7, 16, 0, 0, 3971, 3972, 7, 10, 0, 0, 3972, 3973, 7, 15, 0, 0, 3973, 3974, 7, 24, 0, 0, 3974, 3975, 7, 6, 0, 0, 3975, 3976, 7, 5, 0, 0, 3976, 3977, 7, 16, 0, 0, 3977, 3978, 7, 10, 0, 0, 3978, 720, 1, 0, 0, 0, 3979, 3980, 7, 16, 0, 0, 3980, 3981, 7, 10, 0, 0, 3981, 3982, 7, 15, 0, 0, 3982, 3983, 7, 24, 0, 0, 3983, 3984, 7, 19, 0, 0, 3984, 3985, 7, 13, 0, 0, 3985, 3986, 7, 5, 0, 0, 3986, 3987, 7, 13, 0, 0, 3987, 3988, 7, 8, 0, 0, 3988, 722, 1, 0, 0, 0, 3989, 3990, 7, 16, 0, 0, 3990, 3991, 7, 10, 0, 0, 3991, 3992, 7, 26, 0, 0, 3992, 3993, 7, 16, 0, 0, 3993, 724, 1, 0, 0, 0, 3994, 3995, 7, 16, 0, 0, 3995, 3996, 7, 13, 0, 0, 3996, 3997, 7, 5, 0, 0, 3997, 3998, 7, 7, 0, 0, 3998, 3999, 7, 9, 0, 0, 3999, 4000, 7, 5, 0, 0, 4000, 4001, 7, 14, 0, 0, 4001, 4002, 7, 16, 0, 0, 4002, 4003, 7, 17, 0, 0, 4003, 4004, 7, 19, 0, 0, 4004, 4005, 7, 7, 0, 0, 4005, 726, 1, 0, 0, 0, 4006, 4007, 7, 16, 0, 0, 4007, 4008, 7, 13, 0, 0, 4008, 4009, 7, 17, 0, 0, 4009, 4010, 7, 23, 0, 0, 4010, 4011, 7, 23, 0, 0, 4011, 4012, 7, 10, 0, 0, 4012, 4013, 7, 13, 0, 0, 4013, 728, 1, 0, 0, 0, 4014, 4015, 7, 16, 0, 0, 4015, 4016, 7, 13, 0, 0, 4016, 4017, 7, 22, 0, 0, 4017, 4018, 7, 7, 0, 0, 4018, 4019, 7, 14, 0, 0, 4019, 4020, 7, 5, 0, 0, 4020, 4021, 7, 16, 0, 0, 4021, 4022, 7, 10, 0, 0, 4022, 730, 1, 0, 0, 0, 4023, 4024, 7, 16, 0, 0, 4024, 4025, 7, 13, 0, 0, 4025, 4026, 7, 22, 0, 0, 4026, 4027, 7, 9, 0, 0, 4027, 4028, 7, 16, 0, 0, 4028, 4029, 7, 10, 0, 0, 4029, 4030, 7, 12, 0, 0, 4030, 732, 1, 0, 0, 0, 4031, 4032, 7, 16, 0, 0, 4032, 4033, 7, 8, 0, 0, 4033, 4034, 7, 24, 0, 0, 4034, 4035, 7, 10, 0, 0, 4035, 734, 1, 0, 0, 0, 4036, 4037, 7, 16, 0, 0, 4037, 4038, 7, 8, 0, 0, 4038, 4039, 7, 24, 0, 0, 4039, 4040, 7, 10, 0, 0, 4040, 4041, 7, 9, 0, 0, 4041, 736, 1, 0, 0, 0, 4042, 4043, 7, 22, 0, 0, 4043, 4044, 7, 7, 0, 0, 4044, 4045, 7, 18, 0, 0, 4045, 4046, 7, 19, 0, 0, 4046, 4047, 7, 22, 0, 0, 4047, 4048, 7, 7, 0, 0, 4048, 4049, 7, 12, 0, 0, 4049, 4050, 7, 10, 0, 0, 4050, 4051, 7, 12, 0, 0, 4051, 738, 1, 0, 0, 0, 4052, 4053, 7, 22, 0, 0, 4053, 4054, 7, 7, 0, 0, 4054, 4055, 7, 14, 0, 0, 4055, 4056, 7, 19, 0, 0, 4056, 4057, 7, 15, 0, 0, 4057, 4058, 7, 15, 0, 0, 4058, 4059, 7, 17, 0, 0, 4059, 4060, 7, 16, 0, 0, 4060, 4061, 7, 16, 0, 0, 4061, 4062, 7, 10, 0, 0, 4062, 4063, 7, 12, 0, 0, 4063, 740, 1, 0, 0, 0, 4064, 4065, 7, 22, 0, 0, 4065, 4066, 7, 7, 0, 0, 4066, 4067, 7, 10, 0, 0, 4067, 4068, 7, 7, 0, 0, 4068, 4069, 7, 14, 0, 0, 4069, 4070, 7, 13, 0, 0, 4070, 4071, 7, 8, 0, 0, 4071, 4072, 7, 24, 0, 0, 4072, 4073, 7, 16, 0, 0, 4073, 4074, 7, 10, 0, 0, 4074, 4075, 7, 12, 0, 0, 4075, 742, 1, 0, 0, 0, 4076, 4077, 7, 22, 0, 0, 4077, 4078, 7, 7, 0, 0, 4078, 4079, 7, 21, 0, 0, 4079, 4080, 7, 7, 0, 0, 4080, 4081, 7, 19, 0, 0, 4081, 4082, 7, 28, 0, 0, 4082, 4083, 7, 7, 0, 0, 4083, 744, 1, 0, 0, 0, 4084, 4085, 7, 22, 0, 0, 4085, 4086, 7, 7, 0, 0, 4086, 4087, 7, 6, 0, 0, 4087, 4088, 7, 17, 0, 0, 4088, 4089, 7, 9, 0, 0, 4089, 4090, 7, 16, 0, 0, 4090, 4091, 7, 10, 0, 0, 4091, 4092, 7, 7, 0, 0, 4092, 746, 1, 0, 0, 0, 4093, 4094, 7, 22, 0, 0, 4094, 4095, 7, 7, 0, 0, 4095, 4096, 7, 6, 0, 0, 4096, 4097, 7, 19, 0, 0, 4097, 4098, 7, 23, 0, 0, 4098, 4099, 7, 23, 0, 0, 4099, 4100, 7, 10, 0, 0, 4100, 4101, 7, 12, 0, 0, 4101, 748, 1, 0, 0, 0, 4102, 4103, 7, 22, 0, 0, 4103, 4104, 7, 7, 0, 0, 4104, 4105, 7, 16, 0, 0, 4105, 4106, 7, 17, 0, 0, 4106, 4107, 7, 6, 0, 0, 4107, 750, 1, 0, 0, 0, 4108, 4109, 7, 22, 0, 0, 4109, 4110, 7, 24, 0, 0, 4110, 4111, 7, 12, 0, 0, 4111, 4112, 7, 5, 0, 0, 4112, 4113, 7, 16, 0, 0, 4113, 4114, 7, 10, 0, 0, 4114, 752, 1, 0, 0, 0, 4115, 4116, 7, 27, 0, 0, 4116, 4117, 7, 5, 0, 0, 4117, 4118, 7, 14, 0, 0, 4118, 4119, 7, 22, 0, 0, 4119, 4120, 7, 22, 0, 0, 4120, 4121, 7, 15, 0, 0, 4121, 754, 1, 0, 0, 0, 4122, 4123, 7, 27, 0, 0, 4123, 4124, 7, 5, 0, 0, 4124, 4125, 7, 6, 0, 0, 4125, 4126, 7, 17, 0, 0, 4126, 4127, 7, 12, 0, 0, 4127, 756, 1, 0, 0, 0, 4128, 4129, 7, 27, 0, 0, 4129, 4130, 7, 5, 0, 0, 4130, 4131, 7, 6, 0, 0, 4131, 4132, 7, 17, 0, 0, 4132, 4133, 7, 12, 0, 0, 4133, 4134, 7, 5, 0, 0, 4134, 4135, 7, 16, 0, 0, 4135, 4136, 7, 10, 0, 0, 4136, 758, 1, 0, 0, 0, 4137, 4138, 7, 27, 0, 0, 4138, 4139, 7, 5, 0, 0, 4139, 4140, 7, 6, 0, 0, 4140, 4141, 7, 17, 0, 0, 4141, 4142, 7, 12, 0, 0, 4142, 4143, 7, 5, 0, 0, 4143, 4144, 7, 16, 0, 0, 4144, 4145, 7, 19, 0, 0, 4145, 4146, 7, 13, 0, 0, 4146, 760, 1, 0, 0, 0, 4147, 4148, 7, 27, 0, 0, 4148, 4149, 7, 5, 0, 0, 4149, 4150, 7, 13, 0, 0, 4150, 4151, 7, 8, 0, 0, 4151, 4152, 7, 17, 0, 0, 4152, 4153, 7, 7, 0, 0, 4153, 4154, 7, 23, 0, 0, 4154, 762, 1, 0, 0, 0, 4155, 4156, 7, 27, 0, 0, 4156, 4157, 7, 10, 0, 0, 4157, 4158, 7, 13, 0, 0, 4158, 4159, 7, 9, 0, 0, 4159, 4160, 7, 17, 0, 0, 4160, 4161, 7, 19, 0, 0, 4161, 4162, 7, 7, 0, 0, 4162, 764, 1, 0, 0, 0, 4163, 4164, 7, 27, 0, 0, 4164, 4165, 7, 17, 0, 0, 4165, 4166, 7, 10, 0, 0, 4166, 4167, 7, 28, 0, 0, 4167, 766, 1, 0, 0, 0, 4168, 4169, 7, 27, 0, 0, 4169, 4170, 7, 19, 0, 0, 4170, 4171, 7, 6, 0, 0, 4171, 4172, 7, 5, 0, 0, 4172, 4173, 7, 16, 0, 0, 4173, 4174, 7, 17, 0, 0, 4174, 4175, 7, 6, 0, 0, 4175, 4176, 7, 10, 0, 0, 4176, 768, 1, 0, 0, 0, 4177, 4178, 7, 28, 0, 0, 4178, 4179, 7, 20, 0, 0, 4179, 4180, 7, 17, 0, 0, 4180, 4181, 7, 16, 0, 0, 4181, 4182, 7, 10, 0, 0, 4182, 4183, 7, 9, 0, 0, 4183, 4184, 7, 24, 0, 0, 4184, 4185, 7, 5, 0, 0, 4185, 4186, 7, 14, 0, 0, 4186, 4187, 7, 10, 0, 0, 4187, 770, 1, 0, 0, 0, 4188, 4189, 7, 28, 0, 0, 4189, 4190, 7, 17, 0, 0, 4190, 4191, 7, 16, 0, 0, 4191, 4192, 7, 20, 0, 0, 4192, 4193, 7, 19, 0, 0, 4193, 4194, 7, 22, 0, 0, 4194, 4195, 7, 16, 0, 0, 4195, 772, 1, 0, 0, 0, 4196, 4197, 7, 28, 0, 0, 4197, 4198, 7, 19, 0, 0, 4198, 4199, 7, 13, 0, 0, 4199, 4200, 7, 21, 0, 0, 4200, 774, 1, 0, 0, 0, 4201, 4202, 7, 28, 0, 0, 4202, 4203, 7, 13, 0, 0, 4203, 4204, 7, 5, 0, 0, 4204, 4205, 7, 24, 0, 0, 4205, 4206, 7, 24, 0, 0, 4206, 4207, 7, 10, 0, 0, 4207, 4208, 7, 13, 0, 0, 4208, 776, 1, 0, 0, 0, 4209, 4210, 7, 28, 0, 0, 4210, 4211, 7, 13, 0, 0, 4211, 4212, 7, 17, 0, 0, 4212, 4213, 7, 16, 0, 0, 4213, 4214, 7, 10, 0, 0, 4214, 778, 1, 0, 0, 0, 4215, 4216, 7, 26, 0, 0, 4216, 4217, 7, 15, 0, 0, 4217, 4218, 7, 6, 0, 0, 4218, 780, 1, 0, 0, 0, 4219, 4220, 7, 8, 0, 0, 4220, 4221, 7, 10, 0, 0, 4221, 4222, 7, 5, 0, 0, 4222, 4223, 7, 13, 0, 0, 4223, 782, 1, 0, 0, 0, 4224, 4225, 7, 8, 0, 0, 4225, 4226, 7, 10, 0, 0, 4226, 4227, 7, 9, 0, 0, 4227, 784, 1, 0, 0, 0, 4228, 4229, 7, 11, 0, 0, 4229, 4230, 7, 19, 0, 0, 4230, 4231, 7, 7, 0, 0, 4231, 4232, 7, 10, 0, 0, 4232, 786, 1, 0, 0, 0, 4233, 4234, 7, 18, 0, 0, 4234, 4235, 7, 10, 0, 0, 4235, 4236, 7, 16, 0, 0, 4236, 4237, 7, 28, 0, 0, 4237, 4238, 7, 10, 0, 0, 4238, 4239, 7, 10, 0, 0, 4239, 4240, 7, 7, 0, 0, 4240, 788, 1, 0, 0, 0, 4241, 4242, 7, 18, 0, 0, 4242, 4243, 7, 17, 0, 0, 4243, 4244, 7, 23, 0, 0, 4244, 4245, 7, 17, 0, 0, 4245, 4246, 7, 7, 0, 0, 4246, 4247, 7, 16, 0, 0, 4247, 790, 1, 0, 0, 0, 4248, 4249, 7, 18, 0, 0, 4249, 4250, 7, 17, 0, 0, 4250, 4251, 7, 16, 0, 0, 4251, 792, 1, 0, 0, 0, 4252, 4253, 7, 18, 0, 0, 4253, 4254, 7, 19, 0, 0, 4254, 4255, 7, 19, 0, 0, 4255, 4256, 7, 6, 0, 0, 4256, 4257, 7, 10, 0, 0, 4257, 4258, 7, 5, 0, 0, 4258, 4259, 7, 7, 0, 0, 4259, 794, 1, 0, 0, 0, 4260, 4261, 7, 14, 0, 0, 4261, 4262, 7, 20, 0, 0, 4262, 4263, 7, 5, 0, 0, 4263, 4264, 7, 13, 0, 0, 4264, 796, 1, 0, 0, 0, 4265, 4266, 7, 14, 0, 0, 4266, 4267, 7, 20, 0, 0, 4267, 4268, 7, 5, 0, 0, 4268, 4269, 7, 13, 0, 0, 4269, 4270, 7, 5, 0, 0, 4270, 4271, 7, 14, 0, 0, 4271, 4272, 7, 16, 0, 0, 4272, 4273, 7, 10, 0, 0, 4273, 4274, 7, 13, 0, 0, 4274, 798, 1, 0, 0, 0, 4275, 4276, 7, 14, 0, 0, 4276, 4277, 7, 19, 0, 0, 4277, 4278, 7, 5, 0, 0, 4278, 4279, 7, 6, 0, 0, 4279, 4280, 7, 10, 0, 0, 4280, 4281, 7, 9, 0, 0, 4281, 4282, 7, 14, 0, 0, 4282, 4283, 7, 10, 0, 0, 4283, 800, 1, 0, 0, 0, 4284, 4285, 7, 12, 0, 0, 4285, 4286, 7, 10, 0, 0, 4286, 4287, 7, 14, 0, 0, 4287, 802, 1, 0, 0, 0, 4288, 4289, 7, 12, 0, 0, 4289, 4290, 7, 10, 0, 0, 4290, 4291, 7, 14, 0, 0, 4291, 4292, 7, 17, 0, 0, 4292, 4293, 7, 15, 0, 0, 4293, 4294, 7, 5, 0, 0, 4294, 4295, 7, 6, 0, 0, 4295, 804, 1, 0, 0, 0, 4296, 4297, 7, 10, 0, 0, 4297, 4298, 7, 26, 0, 0, 4298, 4299, 7, 17, 0, 0, 4299, 4300, 7, 9, 0, 0, 4300, 4301, 7, 16, 0, 0, 4301, 4302, 7, 9, 0, 0, 4302, 806, 1, 0, 0, 0, 4303, 4304, 7, 10, 0, 0, 4304, 4305, 7, 26, 0, 0, 4305, 4306, 7, 16, 0, 0, 4306, 4307, 7, 13, 0, 0, 4307, 4308, 7, 5, 0, 0, 4308, 4309, 7, 14, 0, 0, 4309, 4310, 7, 16, 0, 0, 4310, 808, 1, 0, 0, 0, 4311, 4312, 7, 25, 0, 0, 4312, 4313, 7, 6, 0, 0, 4313, 4314, 7, 19, 0, 0, 4314, 4315, 7, 5, 0, 0, 4315, 4316, 7, 16, 0, 0, 4316, 810, 1, 0, 0, 0, 4317, 4318, 7, 23, 0, 0, 4318, 4319, 7, 13, 0, 0, 4319, 4320, 7, 10, 0, 0, 4320, 4321, 7, 5, 0, 0, 4321, 4322, 7, 16, 0, 0, 4322, 4323, 7, 10, 0, 0, 4323, 4324, 7, 9, 0, 0, 4324, 4325, 7, 16, 0, 0, 4325, 812, 1, 0, 0, 0, 4326, 4327, 7, 17, 0, 0, 4327, 4328, 7, 7, 0, 0, 4328, 4329, 7, 19, 0, 0, 4329, 4330, 7, 22, 0, 0, 4330, 4331, 7, 16, 0, 0, 4331, 814, 1, 0, 0, 0, 4332, 4333, 7, 17, 0, 0, 4333, 4334, 7, 7, 0, 0, 4334, 4335, 7, 16, 0, 0, 4335, 816, 1, 0, 0, 0, 4336, 4337, 7, 17, 0, 0, 4337, 4338, 7, 7, 0, 0, 4338, 4339, 7, 16, 0, 0, 4339, 4340, 7, 10, 0, 0, 4340, 4341, 7, 23, 0, 0, 4341, 4342, 7, 10, 0, 0, 4342, 4343, 7, 13, 0, 0, 4343, 818, 1, 0, 0, 0, 4344, 4345, 7, 17, 0, 0, 4345, 4346, 7, 7, 0, 0, 4346, 4347, 7, 16, 0, 0, 4347, 4348, 7, 10, 0, 0, 4348, 4349, 7, 13, 0, 0, 4349, 4350, 7, 27, 0, 0, 4350, 4351, 7, 5, 0, 0, 4351, 4352, 7, 6, 0, 0, 4352, 820, 1, 0, 0, 0, 4353, 4354, 7, 6, 0, 0, 4354, 4355, 7, 10, 0, 0, 4355, 4356, 7, 5, 0, 0, 4356, 4357, 7, 9, 0, 0, 4357, 4358, 7, 16, 0, 0, 4358, 822, 1, 0, 0, 0, 4359, 4360, 7, 7, 0, 0, 4360, 4361, 7, 5, 0, 0, 4361, 4362, 7, 16, 0, 0, 4362, 4363, 7, 17, 0, 0, 4363, 4364, 7, 19, 0, 0, 4364, 4365, 7, 7, 0, 0, 4365, 4366, 7, 5, 0, 0, 4366, 4367, 7, 6, 0, 0, 4367, 824, 1, 0, 0, 0, 4368, 4369, 7, 7, 0, 0, 4369, 4370, 7, 14, 0, 0, 4370, 4371, 7, 20, 0, 0, 4371, 4372, 7, 5, 0, 0, 4372, 4373, 7, 13, 0, 0, 4373, 826, 1, 0, 0, 0, 4374, 4375, 7, 7, 0, 0, 4375, 4376, 7, 19, 0, 0, 4376, 4377, 7, 7, 0, 0, 4377, 4378, 7, 10, 0, 0, 4378, 828, 1, 0, 0, 0, 4379, 4380, 7, 7, 0, 0, 4380, 4381, 7, 22, 0, 0, 4381, 4382, 7, 6, 0, 0, 4382, 4383, 7, 6, 0, 0, 4383, 4384, 7, 17, 0, 0, 4384, 4385, 7, 25, 0, 0, 4385, 830, 1, 0, 0, 0, 4386, 4387, 7, 7, 0, 0, 4387, 4388, 7, 22, 0, 0, 4388, 4389, 7, 15, 0, 0, 4389, 4390, 7, 10, 0, 0, 4390, 4391, 7, 13, 0, 0, 4391, 4392, 7, 17, 0, 0, 4392, 4393, 7, 14, 0, 0, 4393, 832, 1, 0, 0, 0, 4394, 4395, 7, 19, 0, 0, 4395, 4396, 7, 27, 0, 0, 4396, 4397, 7, 10, 0, 0, 4397, 4398, 7, 13, 0, 0, 4398, 4399, 7, 6, 0, 0, 4399, 4400, 7, 5, 0, 0, 4400, 4401, 7, 8, 0, 0, 4401, 834, 1, 0, 0, 0, 4402, 4403, 7, 24, 0, 0, 4403, 4404, 7, 19, 0, 0, 4404, 4405, 7, 9, 0, 0, 4405, 4406, 7, 17, 0, 0, 4406, 4407, 7, 16, 0, 0, 4407, 4408, 7, 17, 0, 0, 4408, 4409, 7, 19, 0, 0, 4409, 4410, 7, 7, 0, 0, 4410, 836, 1, 0, 0, 0, 4411, 4412, 7, 24, 0, 0, 4412, 4413, 7, 13, 0, 0, 4413, 4414, 7, 10, 0, 0, 4414, 4415, 7, 14, 0, 0, 4415, 4416, 7, 17, 0, 0, 4416, 4417, 7, 9, 0, 0, 4417, 4418, 7, 17, 0, 0, 4418, 4419, 7, 19, 0, 0, 4419, 4420, 7, 7, 0, 0, 4420, 838, 1, 0, 0, 0, 4421, 4422, 7, 13, 0, 0, 4422, 4423, 7, 10, 0, 0, 4423, 4424, 7, 5, 0, 0, 4424, 4425, 7, 6, 0, 0, 4425, 840, 1, 0, 0, 0, 4426, 4427, 7, 13, 0, 0, 4427, 4428, 7, 19, 0, 0, 4428, 4429, 7, 28, 0, 0, 4429, 842, 1, 0, 0, 0, 4430, 4431, 7, 9, 0, 0, 4431, 4432, 7, 10, 0, 0, 4432, 4433, 7, 16, 0, 0, 4433, 4434, 7, 19, 0, 0, 4434, 4435, 7, 25, 0, 0, 4435, 844, 1, 0, 0, 0, 4436, 4437, 7, 9, 0, 0, 4437, 4438, 7, 15, 0, 0, 4438, 4439, 7, 5, 0, 0, 4439, 4440, 7, 6, 0, 0, 4440, 4441, 7, 6, 0, 0, 4441, 4442, 7, 17, 0, 0, 4442, 4443, 7, 7, 0, 0, 4443, 4444, 7, 16, 0, 0, 4444, 846, 1, 0, 0, 0, 4445, 4446, 7, 9, 0, 0, 4446, 4447, 7, 22, 0, 0, 4447, 4448, 7, 18, 0, 0, 4448, 4449, 7, 9, 0, 0, 4449, 4450, 7, 16, 0, 0, 4450, 4451, 7, 13, 0, 0, 4451, 4452, 7, 17, 0, 0, 4452, 4453, 7, 7, 0, 0, 4453, 4454, 7, 23, 0, 0, 4454, 848, 1, 0, 0, 0, 4455, 4456, 7, 16, 0, 0, 4456, 4457, 7, 17, 0, 0, 4457, 4458, 7, 15, 0, 0, 4458, 4459, 7, 10, 0, 0, 4459, 850, 1, 0, 0, 0, 4460, 4461, 7, 16, 0, 0, 4461, 4462, 7, 17, 0, 0, 4462, 4463, 7, 15, 0, 0, 4463, 4464, 7, 10, 0, 0, 4464, 4465, 7, 9, 0, 0, 4465, 4466, 7, 16, 0, 0, 4466, 4467, 7, 5, 0, 0, 4467, 4468, 7, 15, 0, 0, 4468, 4469, 7, 24, 0, 0, 4469, 852, 1, 0, 0, 0, 4470, 4471, 7, 16, 0, 0, 4471, 4472, 7, 13, 0, 0, 4472, 4473, 7, 10, 0, 0, 4473, 4474, 7, 5, 0, 0, 4474, 4475, 7, 16, 0, 0, 4475, 854, 1, 0, 0, 0, 4476, 4477, 7, 16, 0, 0, 4477, 4478, 7, 13, 0, 0, 4478, 4479, 7, 17, 0, 0, 4479, 4480, 7, 15, 0, 0, 4480, 856, 1, 0, 0, 0, 4481, 4482, 7, 27, 0, 0, 4482, 4483, 7, 5, 0, 0, 4483, 4484, 7, 6, 0, 0, 4484, 4485, 7, 22, 0, 0, 4485, 4486, 7, 10, 0, 0, 4486, 4487, 7, 9, 0, 0, 4487, 858, 1, 0, 0, 0, 4488, 4489, 7, 27, 0, 0, 4489, 4490, 7, 5, 0, 0, 4490, 4491, 7, 13, 0, 0, 4491, 4492, 7, 14, 0, 0, 4492, 4493, 7, 20, 0, 0, 4493, 4494, 7, 5, 0, 0, 4494, 4495, 7, 13, 0, 0, 4495, 860, 1, 0, 0, 0, 4496, 4497, 7, 26, 0, 0, 4497, 4498, 7, 15, 0, 0, 4498, 4499, 7, 6, 0, 0, 4499, 4500, 7, 5, 0, 0, 4500, 4501, 7, 16, 0, 0, 4501, 4502, 7, 16, 0, 0, 4502, 4503, 7, 13, 0, 0, 4503, 4504, 7, 17, 0, 0, 4504, 4505, 7, 18, 0, 0, 4505, 4506, 7, 22, 0, 0, 4506, 4507, 7, 16, 0, 0, 4507, 4508, 7, 10, 0, 0, 4508, 4509, 7, 9, 0, 0, 4509, 862, 1, 0, 0, 0, 4510, 4511, 7, 26, 0, 0, 4511, 4512, 7, 15, 0, 0, 4512, 4513, 7, 6, 0, 0, 4513, 4514, 7, 14, 0, 0, 4514, 4515, 7, 19, 0, 0, 4515, 4516, 7, 15, 0, 0, 4516, 4517, 7, 15, 0, 0, 4517, 4518, 7, 10, 0, 0, 4518, 4519, 7, 7, 0, 0, 4519, 4520, 7, 16, 0, 0, 4520, 864, 1, 0, 0, 0, 4521, 4522, 7, 26, 0, 0, 4522, 4523, 7, 15, 0, 0, 4523, 4524, 7, 6, 0, 0, 4524, 4525, 7, 5, 0, 0, 4525, 4526, 7, 23, 0, 0, 4526, 4527, 7, 23, 0, 0, 4527, 866, 1, 0, 0, 0, 4528, 4529, 7, 26, 0, 0, 4529, 4530, 7, 15, 0, 0, 4530, 4531, 7, 6, 0, 0, 4531, 4532, 5, 95, 0, 0, 4532, 4533, 7, 17, 0, 0, 4533, 4534, 7, 9, 0, 0, 4534, 4535, 5, 95, 0, 0, 4535, 4536, 7, 28, 0, 0, 4536, 4537, 7, 10, 0, 0, 4537, 4538, 7, 6, 0, 0, 4538, 4539, 7, 6, 0, 0, 4539, 4540, 5, 95, 0, 0, 4540, 4541, 7, 25, 0, 0, 4541, 4542, 7, 19, 0, 0, 4542, 4543, 7, 13, 0, 0, 4543, 4544, 7, 15, 0, 0, 4544, 4545, 7, 10, 0, 0, 4545, 4546, 7, 12, 0, 0, 4546, 868, 1, 0, 0, 0, 4547, 4548, 7, 26, 0, 0, 4548, 4549, 7, 15, 0, 0, 4549, 4550, 7, 6, 0, 0, 4550, 4551, 5, 95, 0, 0, 4551, 4552, 7, 17, 0, 0, 4552, 4553, 7, 9, 0, 0, 4553, 4554, 5, 95, 0, 0, 4554, 4555, 7, 28, 0, 0, 4555, 4556, 7, 10, 0, 0, 4556, 4557, 7, 6, 0, 0, 4557, 4558, 7, 6, 0, 0, 4558, 4559, 5, 95, 0, 0, 4559, 4560, 7, 25, 0, 0, 4560, 4561, 7, 19, 0, 0, 4561, 4562, 7, 13, 0, 0, 4562, 4563, 7, 15, 0, 0, 4563, 4564, 7, 10, 0, 0, 4564, 4565, 7, 12, 0, 0, 4565, 4566, 5, 95, 0, 0, 4566, 4567, 7, 12, 0, 0, 4567, 4568, 7, 19, 0, 0, 4568, 4569, 7, 14, 0, 0, 4569, 4570, 7, 22, 0, 0, 4570, 4571, 7, 15, 0, 0, 4571, 4572, 7, 10, 0, 0, 4572, 4573, 7, 7, 0, 0, 4573, 4574, 7, 16, 0, 0, 4574, 870, 1, 0, 0, 0, 4575, 4576, 7, 26, 0, 0, 4576, 4577, 7, 15, 0, 0, 4577, 4578, 7, 6, 0, 0, 4578, 4579, 5, 95, 0, 0, 4579, 4580, 7, 17, 0, 0, 4580, 4581, 7, 9, 0, 0, 4581, 4582, 5, 95, 0, 0, 4582, 4583, 7, 28, 0, 0, 4583, 4584, 7, 10, 0, 0, 4584, 4585, 7, 6, 0, 0, 4585, 4586, 7, 6, 0, 0, 4586, 4587, 5, 95, 0, 0, 4587, 4588, 7, 25, 0, 0, 4588, 4589, 7, 19, 0, 0, 4589, 4590, 7, 13, 0, 0, 4590, 4591, 7, 15, 0, 0, 4591, 4592, 7, 10, 0, 0, 4592, 4593, 7, 12, 0, 0, 4593, 4594, 5, 95, 0, 0, 4594, 4595, 7, 14, 0, 0, 4595, 4596, 7, 19, 0, 0, 4596, 4597, 7, 7, 0, 0, 4597, 4598, 7, 16, 0, 0, 4598, 4599, 7, 10, 0, 0, 4599, 4600, 7, 7, 0, 0, 4600, 4601, 7, 16, 0, 0, 4601, 872, 1, 0, 0, 0, 4602, 4603, 7, 26, 0, 0, 4603, 4604, 7, 24, 0, 0, 4604, 4605, 7, 5, 0, 0, 4605, 4606, 7, 16, 0, 0, 4606, 4607, 7, 20, 0, 0, 4607, 874, 1, 0, 0, 0, 4608, 4609, 7, 26, 0, 0, 4609, 4610, 7, 24, 0, 0, 4610, 4611, 7, 5, 0, 0, 4611, 4612, 7, 16, 0, 0, 4612, 4613, 7, 20, 0, 0, 4613, 4614, 5, 95, 0, 0, 4614, 4615, 7, 10, 0, 0, 4615, 4616, 7, 26, 0, 0, 4616, 4617, 7, 17, 0, 0, 4617, 4618, 7, 9, 0, 0, 4618, 4619, 7, 16, 0, 0, 4619, 4620, 7, 9, 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, 14, 0, 0, 4625, 4626, 7, 19, 0, 0, 4626, 4627, 7, 7, 0, 0, 4627, 4628, 7, 14, 0, 0, 4628, 4629, 7, 5, 0, 0, 4629, 4630, 7, 16, 0, 0, 4630, 878, 1, 0, 0, 0, 4631, 4632, 7, 26, 0, 0, 4632, 4633, 7, 15, 0, 0, 4633, 4634, 7, 6, 0, 0, 4634, 4635, 7, 10, 0, 0, 4635, 4636, 7, 6, 0, 0, 4636, 4637, 7, 10, 0, 0, 4637, 4638, 7, 15, 0, 0, 4638, 4639, 7, 10, 0, 0, 4639, 4640, 7, 7, 0, 0, 4640, 4641, 7, 16, 0, 0, 4641, 880, 1, 0, 0, 0, 4642, 4643, 7, 26, 0, 0, 4643, 4644, 7, 15, 0, 0, 4644, 4645, 7, 6, 0, 0, 4645, 4646, 7, 10, 0, 0, 4646, 4647, 7, 26, 0, 0, 4647, 4648, 7, 17, 0, 0, 4648, 4649, 7, 9, 0, 0, 4649, 4650, 7, 16, 0, 0, 4650, 4651, 7, 9, 0, 0, 4651, 882, 1, 0, 0, 0, 4652, 4653, 7, 26, 0, 0, 4653, 4654, 7, 15, 0, 0, 4654, 4655, 7, 6, 0, 0, 4655, 4656, 7, 25, 0, 0, 4656, 4657, 7, 19, 0, 0, 4657, 4658, 7, 13, 0, 0, 4658, 4659, 7, 10, 0, 0, 4659, 4660, 7, 9, 0, 0, 4660, 4661, 7, 16, 0, 0, 4661, 884, 1, 0, 0, 0, 4662, 4663, 7, 26, 0, 0, 4663, 4664, 7, 15, 0, 0, 4664, 4665, 7, 6, 0, 0, 4665, 4666, 7, 24, 0, 0, 4666, 4667, 7, 5, 0, 0, 4667, 4668, 7, 13, 0, 0, 4668, 4669, 7, 9, 0, 0, 4669, 4670, 7, 10, 0, 0, 4670, 886, 1, 0, 0, 0, 4671, 4672, 7, 26, 0, 0, 4672, 4673, 7, 15, 0, 0, 4673, 4674, 7, 6, 0, 0, 4674, 4675, 7, 24, 0, 0, 4675, 4676, 7, 17, 0, 0, 4676, 888, 1, 0, 0, 0, 4677, 4678, 7, 26, 0, 0, 4678, 4679, 7, 15, 0, 0, 4679, 4680, 7, 6, 0, 0, 4680, 4681, 7, 13, 0, 0, 4681, 4682, 7, 19, 0, 0, 4682, 4683, 7, 19, 0, 0, 4683, 4684, 7, 16, 0, 0, 4684, 890, 1, 0, 0, 0, 4685, 4686, 7, 26, 0, 0, 4686, 4687, 7, 15, 0, 0, 4687, 4688, 7, 6, 0, 0, 4688, 4689, 7, 9, 0, 0, 4689, 4690, 7, 10, 0, 0, 4690, 4691, 7, 13, 0, 0, 4691, 4692, 7, 17, 0, 0, 4692, 4693, 7, 5, 0, 0, 4693, 4694, 7, 6, 0, 0, 4694, 4695, 7, 17, 0, 0, 4695, 4696, 7, 11, 0, 0, 4696, 4697, 7, 10, 0, 0, 4697, 892, 1, 0, 0, 0, 4698, 4699, 7, 14, 0, 0, 4699, 4700, 7, 5, 0, 0, 4700, 4701, 7, 6, 0, 0, 4701, 4702, 7, 6, 0, 0, 4702, 894, 1, 0, 0, 0, 4703, 4704, 7, 14, 0, 0, 4704, 4705, 7, 22, 0, 0, 4705, 4706, 7, 13, 0, 0, 4706, 4707, 7, 13, 0, 0, 4707, 4708, 7, 10, 0, 0, 4708, 4709, 7, 7, 0, 0, 4709, 4710, 7, 16, 0, 0, 4710, 896, 1, 0, 0, 0, 4711, 4712, 7, 5, 0, 0, 4712, 4713, 7, 16, 0, 0, 4713, 4714, 7, 16, 0, 0, 4714, 4715, 7, 5, 0, 0, 4715, 4716, 7, 14, 0, 0, 4716, 4717, 7, 20, 0, 0, 4717, 898, 1, 0, 0, 0, 4718, 4719, 7, 12, 0, 0, 4719, 4720, 7, 10, 0, 0, 4720, 4721, 7, 16, 0, 0, 4721, 4722, 7, 5, 0, 0, 4722, 4723, 7, 14, 0, 0, 4723, 4724, 7, 20, 0, 0, 4724, 900, 1, 0, 0, 0, 4725, 4726, 7, 10, 0, 0, 4726, 4727, 7, 26, 0, 0, 4727, 4728, 7, 24, 0, 0, 4728, 4729, 7, 13, 0, 0, 4729, 4730, 7, 10, 0, 0, 4730, 4731, 7, 9, 0, 0, 4731, 4732, 7, 9, 0, 0, 4732, 4733, 7, 17, 0, 0, 4733, 4734, 7, 19, 0, 0, 4734, 4735, 7, 7, 0, 0, 4735, 902, 1, 0, 0, 0, 4736, 4737, 7, 23, 0, 0, 4737, 4738, 7, 10, 0, 0, 4738, 4739, 7, 7, 0, 0, 4739, 4740, 7, 10, 0, 0, 4740, 4741, 7, 13, 0, 0, 4741, 4742, 7, 5, 0, 0, 4742, 4743, 7, 16, 0, 0, 4743, 4744, 7, 10, 0, 0, 4744, 4745, 7, 12, 0, 0, 4745, 904, 1, 0, 0, 0, 4746, 4747, 7, 6, 0, 0, 4747, 4748, 7, 19, 0, 0, 4748, 4749, 7, 23, 0, 0, 4749, 4750, 7, 23, 0, 0, 4750, 4751, 7, 10, 0, 0, 4751, 4752, 7, 12, 0, 0, 4752, 906, 1, 0, 0, 0, 4753, 4754, 7, 9, 0, 0, 4754, 4755, 7, 16, 0, 0, 4755, 4756, 7, 19, 0, 0, 4756, 4757, 7, 13, 0, 0, 4757, 4758, 7, 10, 0, 0, 4758, 4759, 7, 12, 0, 0, 4759, 908, 1, 0, 0, 0, 4760, 4761, 7, 17, 0, 0, 4761, 4762, 7, 7, 0, 0, 4762, 4763, 7, 14, 0, 0, 4763, 4764, 7, 6, 0, 0, 4764, 4765, 7, 22, 0, 0, 4765, 4766, 7, 12, 0, 0, 4766, 4767, 7, 10, 0, 0, 4767, 910, 1, 0, 0, 0, 4768, 4769, 7, 13, 0, 0, 4769, 4770, 7, 19, 0, 0, 4770, 4771, 7, 22, 0, 0, 4771, 4772, 7, 16, 0, 0, 4772, 4773, 7, 17, 0, 0, 4773, 4774, 7, 7, 0, 0, 4774, 4775, 7, 10, 0, 0, 4775, 912, 1, 0, 0, 0, 4776, 4777, 7, 16, 0, 0, 4777, 4778, 7, 13, 0, 0, 4778, 4779, 7, 5, 0, 0, 4779, 4780, 7, 7, 0, 0, 4780, 4781, 7, 9, 0, 0, 4781, 4782, 7, 25, 0, 0, 4782, 4783, 7, 19, 0, 0, 4783, 4784, 7, 13, 0, 0, 4784, 4785, 7, 15, 0, 0, 4785, 914, 1, 0, 0, 0, 4786, 4787, 7, 17, 0, 0, 4787, 4788, 7, 15, 0, 0, 4788, 4789, 7, 24, 0, 0, 4789, 4790, 7, 19, 0, 0, 4790, 4791, 7, 13, 0, 0, 4791, 4792, 7, 16, 0, 0, 4792, 916, 1, 0, 0, 0, 4793, 4794, 7, 24, 0, 0, 4794, 4795, 7, 19, 0, 0, 4795, 4796, 7, 6, 0, 0, 4796, 4797, 7, 17, 0, 0, 4797, 4798, 7, 14, 0, 0, 4798, 4799, 7, 8, 0, 0, 4799, 918, 1, 0, 0, 0, 4800, 4801, 7, 15, 0, 0, 4801, 4802, 7, 10, 0, 0, 4802, 4803, 7, 16, 0, 0, 4803, 4804, 7, 20, 0, 0, 4804, 4805, 7, 19, 0, 0, 4805, 4806, 7, 12, 0, 0, 4806, 920, 1, 0, 0, 0, 4807, 4808, 7, 13, 0, 0, 4808, 4809, 7, 10, 0, 0, 4809, 4810, 7, 25, 0, 0, 4810, 4811, 7, 10, 0, 0, 4811, 4812, 7, 13, 0, 0, 4812, 4813, 7, 10, 0, 0, 4813, 4814, 7, 7, 0, 0, 4814, 4815, 7, 14, 0, 0, 4815, 4816, 7, 17, 0, 0, 4816, 4817, 7, 7, 0, 0, 4817, 4818, 7, 23, 0, 0, 4818, 922, 1, 0, 0, 0, 4819, 4820, 7, 7, 0, 0, 4820, 4821, 7, 10, 0, 0, 4821, 4822, 7, 28, 0, 0, 4822, 924, 1, 0, 0, 0, 4823, 4824, 7, 19, 0, 0, 4824, 4825, 7, 6, 0, 0, 4825, 4826, 7, 12, 0, 0, 4826, 926, 1, 0, 0, 0, 4827, 4828, 7, 27, 0, 0, 4828, 4829, 7, 5, 0, 0, 4829, 4830, 7, 6, 0, 0, 4830, 4831, 7, 22, 0, 0, 4831, 4832, 7, 10, 0, 0, 4832, 928, 1, 0, 0, 0, 4833, 4834, 7, 9, 0, 0, 4834, 4835, 7, 22, 0, 0, 4835, 4836, 7, 18, 0, 0, 4836, 4837, 7, 9, 0, 0, 4837, 4838, 7, 14, 0, 0, 4838, 4839, 7, 13, 0, 0, 4839, 4840, 7, 17, 0, 0, 4840, 4841, 7, 24, 0, 0, 4841, 4842, 7, 16, 0, 0, 4842, 4843, 7, 17, 0, 0, 4843, 4844, 7, 19, 0, 0, 4844, 4845, 7, 7, 0, 0, 4845, 930, 1, 0, 0, 0, 4846, 4847, 7, 24, 0, 0, 4847, 4848, 7, 22, 0, 0, 4848, 4849, 7, 18, 0, 0, 4849, 4850, 7, 6, 0, 0, 4850, 4851, 7, 17, 0, 0, 4851, 4852, 7, 14, 0, 0, 4852, 4853, 7, 5, 0, 0, 4853, 4854, 7, 16, 0, 0, 4854, 4855, 7, 17, 0, 0, 4855, 4856, 7, 19, 0, 0, 4856, 4857, 7, 7, 0, 0, 4857, 932, 1, 0, 0, 0, 4858, 4859, 7, 19, 0, 0, 4859, 4860, 7, 22, 0, 0, 4860, 4861, 7, 16, 0, 0, 4861, 934, 1, 0, 0, 0, 4862, 4863, 7, 10, 0, 0, 4863, 4864, 7, 7, 0, 0, 4864, 4865, 7, 12, 0, 0, 4865, 936, 1, 0, 0, 0, 4866, 4867, 7, 13, 0, 0, 4867, 4868, 7, 19, 0, 0, 4868, 4869, 7, 22, 0, 0, 4869, 4870, 7, 16, 0, 0, 4870, 4871, 7, 17, 0, 0, 4871, 4872, 7, 7, 0, 0, 4872, 4873, 7, 10, 0, 0, 4873, 4874, 7, 9, 0, 0, 4874, 938, 1, 0, 0, 0, 4875, 4876, 7, 9, 0, 0, 4876, 4877, 7, 14, 0, 0, 4877, 4878, 7, 20, 0, 0, 4878, 4879, 7, 10, 0, 0, 4879, 4880, 7, 15, 0, 0, 4880, 4881, 7, 5, 0, 0, 4881, 4882, 7, 9, 0, 0, 4882, 940, 1, 0, 0, 0, 4883, 4884, 7, 24, 0, 0, 4884, 4885, 7, 13, 0, 0, 4885, 4886, 7, 19, 0, 0, 4886, 4887, 7, 14, 0, 0, 4887, 4888, 7, 10, 0, 0, 4888, 4889, 7, 12, 0, 0, 4889, 4890, 7, 22, 0, 0, 4890, 4891, 7, 13, 0, 0, 4891, 4892, 7, 10, 0, 0, 4892, 4893, 7, 9, 0, 0, 4893, 942, 1, 0, 0, 0, 4894, 4895, 7, 17, 0, 0, 4895, 4896, 7, 7, 0, 0, 4896, 4897, 7, 24, 0, 0, 4897, 4898, 7, 22, 0, 0, 4898, 4899, 7, 16, 0, 0, 4899, 944, 1, 0, 0, 0, 4900, 4901, 7, 9, 0, 0, 4901, 4902, 7, 22, 0, 0, 4902, 4903, 7, 24, 0, 0, 4903, 4904, 7, 24, 0, 0, 4904, 4905, 7, 19, 0, 0, 4905, 4906, 7, 13, 0, 0, 4906, 4907, 7, 16, 0, 0, 4907, 946, 1, 0, 0, 0, 4908, 4909, 7, 24, 0, 0, 4909, 4910, 7, 5, 0, 0, 4910, 4911, 7, 13, 0, 0, 4911, 4912, 7, 5, 0, 0, 4912, 4913, 7, 6, 0, 0, 4913, 4914, 7, 6, 0, 0, 4914, 4915, 7, 10, 0, 0, 4915, 4916, 7, 6, 0, 0, 4916, 948, 1, 0, 0, 0, 4917, 4918, 7, 9, 0, 0, 4918, 4919, 7, 29, 0, 0, 4919, 4920, 7, 6, 0, 0, 4920, 950, 1, 0, 0, 0, 4921, 4922, 7, 12, 0, 0, 4922, 4923, 7, 10, 0, 0, 4923, 4924, 7, 24, 0, 0, 4924, 4925, 7, 10, 0, 0, 4925, 4926, 7, 7, 0, 0, 4926, 4927, 7, 12, 0, 0, 4927, 4928, 7, 9, 0, 0, 4928, 952, 1, 0, 0, 0, 4929, 4930, 7, 19, 0, 0, 4930, 4931, 7, 27, 0, 0, 4931, 4932, 7, 10, 0, 0, 4932, 4933, 7, 13, 0, 0, 4933, 4934, 7, 13, 0, 0, 4934, 4935, 7, 17, 0, 0, 4935, 4936, 7, 12, 0, 0, 4936, 4937, 7, 17, 0, 0, 4937, 4938, 7, 7, 0, 0, 4938, 4939, 7, 23, 0, 0, 4939, 954, 1, 0, 0, 0, 4940, 4941, 7, 14, 0, 0, 4941, 4942, 7, 19, 0, 0, 4942, 4943, 7, 7, 0, 0, 4943, 4944, 7, 25, 0, 0, 4944, 4945, 7, 6, 0, 0, 4945, 4946, 7, 17, 0, 0, 4946, 4947, 7, 14, 0, 0, 4947, 4948, 7, 16, 0, 0, 4948, 956, 1, 0, 0, 0, 4949, 4950, 7, 9, 0, 0, 4950, 4951, 7, 21, 0, 0, 4951, 4952, 7, 17, 0, 0, 4952, 4953, 7, 24, 0, 0, 4953, 958, 1, 0, 0, 0, 4954, 4955, 7, 6, 0, 0, 4955, 4956, 7, 19, 0, 0, 4956, 4957, 7, 14, 0, 0, 4957, 4958, 7, 21, 0, 0, 4958, 4959, 7, 10, 0, 0, 4959, 4960, 7, 12, 0, 0, 4960, 960, 1, 0, 0, 0, 4961, 4962, 7, 16, 0, 0, 4962, 4963, 7, 17, 0, 0, 4963, 4964, 7, 10, 0, 0, 4964, 4965, 7, 9, 0, 0, 4965, 962, 1, 0, 0, 0, 4966, 4967, 7, 13, 0, 0, 4967, 4968, 7, 19, 0, 0, 4968, 4969, 7, 6, 0, 0, 4969, 4970, 7, 6, 0, 0, 4970, 4971, 7, 22, 0, 0, 4971, 4972, 7, 24, 0, 0, 4972, 964, 1, 0, 0, 0, 4973, 4974, 7, 14, 0, 0, 4974, 4975, 7, 22, 0, 0, 4975, 4976, 7, 18, 0, 0, 4976, 4977, 7, 10, 0, 0, 4977, 966, 1, 0, 0, 0, 4978, 4979, 7, 23, 0, 0, 4979, 4980, 7, 13, 0, 0, 4980, 4981, 7, 19, 0, 0, 4981, 4982, 7, 22, 0, 0, 4982, 4983, 7, 24, 0, 0, 4983, 4984, 7, 17, 0, 0, 4984, 4985, 7, 7, 0, 0, 4985, 4986, 7, 23, 0, 0, 4986, 968, 1, 0, 0, 0, 4987, 4988, 7, 9, 0, 0, 4988, 4989, 7, 10, 0, 0, 4989, 4990, 7, 16, 0, 0, 4990, 4991, 7, 9, 0, 0, 4991, 970, 1, 0, 0, 0, 4992, 4993, 7, 16, 0, 0, 4993, 4994, 7, 5, 0, 0, 4994, 4995, 7, 18, 0, 0, 4995, 4996, 7, 6, 0, 0, 4996, 4997, 7, 10, 0, 0, 4997, 4998, 7, 9, 0, 0, 4998, 4999, 7, 5, 0, 0, 4999, 5000, 7, 15, 0, 0, 5000, 5001, 7, 24, 0, 0, 5001, 5002, 7, 6, 0, 0, 5002, 5003, 7, 10, 0, 0, 5003, 972, 1, 0, 0, 0, 5004, 5005, 7, 19, 0, 0, 5005, 5006, 7, 13, 0, 0, 5006, 5007, 7, 12, 0, 0, 5007, 5008, 7, 17, 0, 0, 5008, 5009, 7, 7, 0, 0, 5009, 5010, 7, 5, 0, 0, 5010, 5011, 7, 6, 0, 0, 5011, 5012, 7, 17, 0, 0, 5012, 5013, 7, 16, 0, 0, 5013, 5014, 7, 8, 0, 0, 5014, 974, 1, 0, 0, 0, 5015, 5016, 7, 26, 0, 0, 5016, 5017, 7, 15, 0, 0, 5017, 5018, 7, 6, 0, 0, 5018, 5019, 7, 16, 0, 0, 5019, 5020, 7, 5, 0, 0, 5020, 5021, 7, 18, 0, 0, 5021, 5022, 7, 6, 0, 0, 5022, 5023, 7, 10, 0, 0, 5023, 976, 1, 0, 0, 0, 5024, 5025, 7, 14, 0, 0, 5025, 5026, 7, 19, 0, 0, 5026, 5027, 7, 6, 0, 0, 5027, 5028, 7, 22, 0, 0, 5028, 5029, 7, 15, 0, 0, 5029, 5030, 7, 7, 0, 0, 5030, 5031, 7, 9, 0, 0, 5031, 978, 1, 0, 0, 0, 5032, 5033, 7, 26, 0, 0, 5033, 5034, 7, 15, 0, 0, 5034, 5035, 7, 6, 0, 0, 5035, 5036, 7, 7, 0, 0, 5036, 5037, 7, 5, 0, 0, 5037, 5038, 7, 15, 0, 0, 5038, 5039, 7, 10, 0, 0, 5039, 5040, 7, 9, 0, 0, 5040, 5041, 7, 24, 0, 0, 5041, 5042, 7, 5, 0, 0, 5042, 5043, 7, 14, 0, 0, 5043, 5044, 7, 10, 0, 0, 5044, 5045, 7, 9, 0, 0, 5045, 980, 1, 0, 0, 0, 5046, 5047, 7, 13, 0, 0, 5047, 5048, 7, 19, 0, 0, 5048, 5049, 7, 28, 0, 0, 5049, 5050, 7, 16, 0, 0, 5050, 5051, 7, 8, 0, 0, 5051, 5052, 7, 24, 0, 0, 5052, 5053, 7, 10, 0, 0, 5053, 982, 1, 0, 0, 0, 5054, 5055, 7, 7, 0, 0, 5055, 5056, 7, 19, 0, 0, 5056, 5057, 7, 13, 0, 0, 5057, 5058, 7, 15, 0, 0, 5058, 5059, 7, 5, 0, 0, 5059, 5060, 7, 6, 0, 0, 5060, 5061, 7, 17, 0, 0, 5061, 5062, 7, 11, 0, 0, 5062, 5063, 7, 10, 0, 0, 5063, 5064, 7, 12, 0, 0, 5064, 984, 1, 0, 0, 0, 5065, 5066, 7, 28, 0, 0, 5066, 5067, 7, 17, 0, 0, 5067, 5068, 7, 16, 0, 0, 5068, 5069, 7, 20, 0, 0, 5069, 5070, 7, 17, 0, 0, 5070, 5071, 7, 7, 0, 0, 5071, 986, 1, 0, 0, 0, 5072, 5073, 7, 25, 0, 0, 5073, 5074, 7, 17, 0, 0, 5074, 5075, 7, 6, 0, 0, 5075, 5076, 7, 16, 0, 0, 5076, 5077, 7, 10, 0, 0, 5077, 5078, 7, 13, 0, 0, 5078, 988, 1, 0, 0, 0, 5079, 5080, 7, 23, 0, 0, 5080, 5081, 7, 13, 0, 0, 5081, 5082, 7, 19, 0, 0, 5082, 5083, 7, 22, 0, 0, 5083, 5084, 7, 24, 0, 0, 5084, 5085, 7, 9, 0, 0, 5085, 990, 1, 0, 0, 0, 5086, 5087, 7, 19, 0, 0, 5087, 5088, 7, 16, 0, 0, 5088, 5089, 7, 20, 0, 0, 5089, 5090, 7, 10, 0, 0, 5090, 5091, 7, 13, 0, 0, 5091, 5092, 7, 9, 0, 0, 5092, 992, 1, 0, 0, 0, 5093, 5094, 7, 7, 0, 0, 5094, 5095, 7, 25, 0, 0, 5095, 5096, 7, 14, 0, 0, 5096, 994, 1, 0, 0, 0, 5097, 5098, 7, 7, 0, 0, 5098, 5099, 7, 25, 0, 0, 5099, 5100, 7, 12, 0, 0, 5100, 996, 1, 0, 0, 0, 5101, 5102, 7, 7, 0, 0, 5102, 5103, 7, 25, 0, 0, 5103, 5104, 7, 21, 0, 0, 5104, 5105, 7, 14, 0, 0, 5105, 998, 1, 0, 0, 0, 5106, 5107, 7, 7, 0, 0, 5107, 5108, 7, 25, 0, 0, 5108, 5109, 7, 21, 0, 0, 5109, 5110, 7, 12, 0, 0, 5110, 1000, 1, 0, 0, 0, 5111, 5112, 7, 22, 0, 0, 5112, 5113, 7, 10, 0, 0, 5113, 5114, 7, 9, 0, 0, 5114, 5115, 7, 14, 0, 0, 5115, 5116, 7, 5, 0, 0, 5116, 5117, 7, 24, 0, 0, 5117, 5118, 7, 10, 0, 0, 5118, 1002, 1, 0, 0, 0, 5119, 5120, 7, 27, 0, 0, 5120, 5121, 7, 17, 0, 0, 5121, 5122, 7, 10, 0, 0, 5122, 5123, 7, 28, 0, 0, 5123, 5124, 7, 9, 0, 0, 5124, 1004, 1, 0, 0, 0, 5125, 5126, 7, 7, 0, 0, 5126, 5127, 7, 19, 0, 0, 5127, 5128, 7, 13, 0, 0, 5128, 5129, 7, 15, 0, 0, 5129, 5130, 7, 5, 0, 0, 5130, 5131, 7, 6, 0, 0, 5131, 5132, 7, 17, 0, 0, 5132, 5133, 7, 11, 0, 0, 5133, 5134, 7, 10, 0, 0, 5134, 1006, 1, 0, 0, 0, 5135, 5136, 7, 12, 0, 0, 5136, 5137, 7, 22, 0, 0, 5137, 5138, 7, 15, 0, 0, 5138, 5139, 7, 24, 0, 0, 5139, 1008, 1, 0, 0, 0, 5140, 5141, 7, 24, 0, 0, 5141, 5142, 7, 13, 0, 0, 5142, 5143, 7, 17, 0, 0, 5143, 5144, 7, 7, 0, 0, 5144, 5145, 7, 16, 0, 0, 5145, 5146, 5, 95, 0, 0, 5146, 5147, 7, 9, 0, 0, 5147, 5148, 7, 16, 0, 0, 5148, 5149, 7, 13, 0, 0, 5149, 5150, 7, 17, 0, 0, 5150, 5151, 7, 14, 0, 0, 5151, 5152, 7, 16, 0, 0, 5152, 5153, 5, 95, 0, 0, 5153, 5154, 7, 24, 0, 0, 5154, 5155, 7, 5, 0, 0, 5155, 5156, 7, 13, 0, 0, 5156, 5157, 7, 5, 0, 0, 5157, 5158, 7, 15, 0, 0, 5158, 5159, 7, 9, 0, 0, 5159, 1010, 1, 0, 0, 0, 5160, 5161, 7, 27, 0, 0, 5161, 5162, 7, 5, 0, 0, 5162, 5163, 7, 13, 0, 0, 5163, 5164, 7, 17, 0, 0, 5164, 5165, 7, 5, 0, 0, 5165, 5166, 7, 18, 0, 0, 5166, 5167, 7, 6, 0, 0, 5167, 5168, 7, 10, 0, 0, 5168, 5169, 5, 95, 0, 0, 5169, 5170, 7, 14, 0, 0, 5170, 5171, 7, 19, 0, 0, 5171, 5172, 7, 7, 0, 0, 5172, 5173, 7, 25, 0, 0, 5173, 5174, 7, 6, 0, 0, 5174, 5175, 7, 17, 0, 0, 5175, 5176, 7, 14, 0, 0, 5176, 5177, 7, 16, 0, 0, 5177, 1012, 1, 0, 0, 0, 5178, 5179, 7, 10, 0, 0, 5179, 5180, 7, 13, 0, 0, 5180, 5181, 7, 13, 0, 0, 5181, 5182, 7, 19, 0, 0, 5182, 5183, 7, 13, 0, 0, 5183, 1014, 1, 0, 0, 0, 5184, 5185, 7, 22, 0, 0, 5185, 5186, 7, 9, 0, 0, 5186, 5187, 7, 10, 0, 0, 5187, 5188, 5, 95, 0, 0, 5188, 5189, 7, 27, 0, 0, 5189, 5190, 7, 5, 0, 0, 5190, 5191, 7, 13, 0, 0, 5191, 5192, 7, 17, 0, 0, 5192, 5193, 7, 5, 0, 0, 5193, 5194, 7, 18, 0, 0, 5194, 5195, 7, 6, 0, 0, 5195, 5196, 7, 10, 0, 0, 5196, 1016, 1, 0, 0, 0, 5197, 5198, 7, 22, 0, 0, 5198, 5199, 7, 9, 0, 0, 5199, 5200, 7, 10, 0, 0, 5200, 5201, 5, 95, 0, 0, 5201, 5202, 7, 14, 0, 0, 5202, 5203, 7, 19, 0, 0, 5203, 5204, 7, 6, 0, 0, 5204, 5205, 7, 22, 0, 0, 5205, 5206, 7, 15, 0, 0, 5206, 5207, 7, 7, 0, 0, 5207, 1018, 1, 0, 0, 0, 5208, 5209, 7, 5, 0, 0, 5209, 5210, 7, 6, 0, 0, 5210, 5211, 7, 17, 0, 0, 5211, 5212, 7, 5, 0, 0, 5212, 5213, 7, 9, 0, 0, 5213, 1020, 1, 0, 0, 0, 5214, 5215, 7, 14, 0, 0, 5215, 5216, 7, 19, 0, 0, 5216, 5217, 7, 7, 0, 0, 5217, 5218, 7, 9, 0, 0, 5218, 5219, 7, 16, 0, 0, 5219, 5220, 7, 5, 0, 0, 5220, 5221, 7, 7, 0, 0, 5221, 5222, 7, 16, 0, 0, 5222, 1022, 1, 0, 0, 0, 5223, 5224, 7, 24, 0, 0, 5224, 5225, 7, 10, 0, 0, 5225, 5226, 7, 13, 0, 0, 5226, 5227, 7, 25, 0, 0, 5227, 5228, 7, 19, 0, 0, 5228, 5229, 7, 13, 0, 0, 5229, 5230, 7, 15, 0, 0, 5230, 1024, 1, 0, 0, 0, 5231, 5232, 7, 23, 0, 0, 5232, 5233, 7, 10, 0, 0, 5233, 5234, 7, 16, 0, 0, 5234, 1026, 1, 0, 0, 0, 5235, 5236, 7, 12, 0, 0, 5236, 5237, 7, 17, 0, 0, 5237, 5238, 7, 5, 0, 0, 5238, 5239, 7, 23, 0, 0, 5239, 5240, 7, 7, 0, 0, 5240, 5241, 7, 19, 0, 0, 5241, 5242, 7, 9, 0, 0, 5242, 5243, 7, 16, 0, 0, 5243, 5244, 7, 17, 0, 0, 5244, 5245, 7, 14, 0, 0, 5245, 5246, 7, 9, 0, 0, 5246, 1028, 1, 0, 0, 0, 5247, 5248, 7, 9, 0, 0, 5248, 5249, 7, 16, 0, 0, 5249, 5250, 7, 5, 0, 0, 5250, 5251, 7, 14, 0, 0, 5251, 5252, 7, 21, 0, 0, 5252, 5253, 7, 10, 0, 0, 5253, 5254, 7, 12, 0, 0, 5254, 1030, 1, 0, 0, 0, 5255, 5256, 7, 10, 0, 0, 5256, 5257, 7, 6, 0, 0, 5257, 5258, 7, 9, 0, 0, 5258, 5259, 7, 17, 0, 0, 5259, 5260, 7, 25, 0, 0, 5260, 1032, 1, 0, 0, 0, 5261, 5262, 7, 28, 0, 0, 5262, 5263, 7, 20, 0, 0, 5263, 5264, 7, 17, 0, 0, 5264, 5265, 7, 6, 0, 0, 5265, 5266, 7, 10, 0, 0, 5266, 1034, 1, 0, 0, 0, 5267, 5268, 7, 13, 0, 0, 5268, 5269, 7, 10, 0, 0, 5269, 5270, 7, 27, 0, 0, 5270, 5271, 7, 10, 0, 0, 5271, 5272, 7, 13, 0, 0, 5272, 5273, 7, 9, 0, 0, 5273, 5274, 7, 10, 0, 0, 5274, 1036, 1, 0, 0, 0, 5275, 5276, 7, 25, 0, 0, 5276, 5277, 7, 19, 0, 0, 5277, 5278, 7, 13, 0, 0, 5278, 5279, 7, 10, 0, 0, 5279, 5280, 7, 5, 0, 0, 5280, 5281, 7, 14, 0, 0, 5281, 5282, 7, 20, 0, 0, 5282, 1038, 1, 0, 0, 0, 5283, 5284, 7, 9, 0, 0, 5284, 5285, 7, 6, 0, 0, 5285, 5286, 7, 17, 0, 0, 5286, 5287, 7, 14, 0, 0, 5287, 5288, 7, 10, 0, 0, 5288, 1040, 1, 0, 0, 0, 5289, 5290, 7, 10, 0, 0, 5290, 5291, 7, 26, 0, 0, 5291, 5292, 7, 17, 0, 0, 5292, 5293, 7, 16, 0, 0, 5293, 1042, 1, 0, 0, 0, 5294, 5295, 7, 13, 0, 0, 5295, 5296, 7, 10, 0, 0, 5296, 5297, 7, 16, 0, 0, 5297, 5298, 7, 22, 0, 0, 5298, 5299, 7, 13, 0, 0, 5299, 5300, 7, 7, 0, 0, 5300, 1044, 1, 0, 0, 0, 5301, 5302, 7, 29, 0, 0, 5302, 5303, 7, 22, 0, 0, 5303, 5304, 7, 10, 0, 0, 5304, 5305, 7, 13, 0, 0, 5305, 5306, 7, 8, 0, 0, 5306, 1046, 1, 0, 0, 0, 5307, 5308, 7, 13, 0, 0, 5308, 5309, 7, 5, 0, 0, 5309, 5310, 7, 17, 0, 0, 5310, 5311, 7, 9, 0, 0, 5311, 5312, 7, 10, 0, 0, 5312, 1048, 1, 0, 0, 0, 5313, 5314, 7, 9, 0, 0, 5314, 5315, 7, 29, 0, 0, 5315, 5316, 7, 6, 0, 0, 5316, 5317, 7, 9, 0, 0, 5317, 5318, 7, 16, 0, 0, 5318, 5319, 7, 5, 0, 0, 5319, 5320, 7, 16, 0, 0, 5320, 5321, 7, 10, 0, 0, 5321, 1050, 1, 0, 0, 0, 5322, 5323, 7, 12, 0, 0, 5323, 5324, 7, 10, 0, 0, 5324, 5325, 7, 18, 0, 0, 5325, 5326, 7, 22, 0, 0, 5326, 5327, 7, 23, 0, 0, 5327, 1052, 1, 0, 0, 0, 5328, 5329, 7, 6, 0, 0, 5329, 5330, 7, 19, 0, 0, 5330, 5331, 7, 23, 0, 0, 5331, 1054, 1, 0, 0, 0, 5332, 5333, 7, 17, 0, 0, 5333, 5334, 7, 7, 0, 0, 5334, 5335, 7, 25, 0, 0, 5335, 5336, 7, 19, 0, 0, 5336, 1056, 1, 0, 0, 0, 5337, 5338, 7, 7, 0, 0, 5338, 5339, 7, 19, 0, 0, 5339, 5340, 7, 16, 0, 0, 5340, 5341, 7, 17, 0, 0, 5341, 5342, 7, 14, 0, 0, 5342, 5343, 7, 10, 0, 0, 5343, 1058, 1, 0, 0, 0, 5344, 5345, 7, 28, 0, 0, 5345, 5346, 7, 5, 0, 0, 5346, 5347, 7, 13, 0, 0, 5347, 5348, 7, 7, 0, 0, 5348, 5349, 7, 17, 0, 0, 5349, 5350, 7, 7, 0, 0, 5350, 5351, 7, 23, 0, 0, 5351, 1060, 1, 0, 0, 0, 5352, 5353, 7, 10, 0, 0, 5353, 5354, 7, 26, 0, 0, 5354, 5355, 7, 14, 0, 0, 5355, 5356, 7, 10, 0, 0, 5356, 5357, 7, 24, 0, 0, 5357, 5358, 7, 16, 0, 0, 5358, 5359, 7, 17, 0, 0, 5359, 5360, 7, 19, 0, 0, 5360, 5361, 7, 7, 0, 0, 5361, 1062, 1, 0, 0, 0, 5362, 5363, 7, 5, 0, 0, 5363, 5364, 7, 9, 0, 0, 5364, 5365, 7, 9, 0, 0, 5365, 5366, 7, 10, 0, 0, 5366, 5367, 7, 13, 0, 0, 5367, 5368, 7, 16, 0, 0, 5368, 1064, 1, 0, 0, 0, 5369, 5370, 7, 6, 0, 0, 5370, 5371, 7, 19, 0, 0, 5371, 5372, 7, 19, 0, 0, 5372, 5373, 7, 24, 0, 0, 5373, 1066, 1, 0, 0, 0, 5374, 5375, 7, 19, 0, 0, 5375, 5376, 7, 24, 0, 0, 5376, 5377, 7, 10, 0, 0, 5377, 5378, 7, 7, 0, 0, 5378, 1068, 1, 0, 0, 0, 5379, 5380, 7, 5, 0, 0, 5380, 5381, 7, 18, 0, 0, 5381, 5382, 7, 9, 0, 0, 5382, 1070, 1, 0, 0, 0, 5383, 5384, 7, 14, 0, 0, 5384, 5385, 7, 18, 0, 0, 5385, 5386, 7, 13, 0, 0, 5386, 5387, 7, 16, 0, 0, 5387, 1072, 1, 0, 0, 0, 5388, 5389, 7, 14, 0, 0, 5389, 5390, 7, 10, 0, 0, 5390, 5391, 7, 17, 0, 0, 5391, 5392, 7, 6, 0, 0, 5392, 1074, 1, 0, 0, 0, 5393, 5394, 7, 14, 0, 0, 5394, 5395, 7, 10, 0, 0, 5395, 5396, 7, 17, 0, 0, 5396, 5397, 7, 6, 0, 0, 5397, 5398, 7, 17, 0, 0, 5398, 5399, 7, 7, 0, 0, 5399, 5400, 7, 23, 0, 0, 5400, 1076, 1, 0, 0, 0, 5401, 5402, 7, 12, 0, 0, 5402, 5403, 7, 10, 0, 0, 5403, 5404, 7, 23, 0, 0, 5404, 5405, 7, 13, 0, 0, 5405, 5406, 7, 10, 0, 0, 5406, 5407, 7, 10, 0, 0, 5407, 5408, 7, 9, 0, 0, 5408, 1078, 1, 0, 0, 0, 5409, 5410, 7, 12, 0, 0, 5410, 5411, 7, 17, 0, 0, 5411, 5412, 7, 27, 0, 0, 5412, 1080, 1, 0, 0, 0, 5413, 5414, 7, 10, 0, 0, 5414, 5415, 7, 26, 0, 0, 5415, 5416, 7, 24, 0, 0, 5416, 1082, 1, 0, 0, 0, 5417, 5418, 7, 25, 0, 0, 5418, 5419, 7, 5, 0, 0, 5419, 5420, 7, 14, 0, 0, 5420, 5421, 7, 16, 0, 0, 5421, 5422, 7, 19, 0, 0, 5422, 5423, 7, 13, 0, 0, 5423, 5424, 7, 17, 0, 0, 5424, 5425, 7, 5, 0, 0, 5425, 5426, 7, 6, 0, 0, 5426, 1084, 1, 0, 0, 0, 5427, 5428, 7, 25, 0, 0, 5428, 5429, 7, 6, 0, 0, 5429, 5430, 7, 19, 0, 0, 5430, 5431, 7, 19, 0, 0, 5431, 5432, 7, 13, 0, 0, 5432, 1086, 1, 0, 0, 0, 5433, 5434, 7, 23, 0, 0, 5434, 5435, 7, 14, 0, 0, 5435, 5436, 7, 12, 0, 0, 5436, 1088, 1, 0, 0, 0, 5437, 5438, 7, 6, 0, 0, 5438, 5439, 7, 14, 0, 0, 5439, 5440, 7, 15, 0, 0, 5440, 1090, 1, 0, 0, 0, 5441, 5442, 7, 6, 0, 0, 5442, 5443, 7, 7, 0, 0, 5443, 1092, 1, 0, 0, 0, 5444, 5445, 7, 6, 0, 0, 5445, 5446, 7, 19, 0, 0, 5446, 5447, 7, 23, 0, 0, 5447, 5448, 5, 49, 0, 0, 5448, 5449, 5, 48, 0, 0, 5449, 1094, 1, 0, 0, 0, 5450, 5451, 7, 15, 0, 0, 5451, 5452, 7, 17, 0, 0, 5452, 5453, 7, 7, 0, 0, 5453, 5454, 5, 95, 0, 0, 5454, 5455, 7, 9, 0, 0, 5455, 5456, 7, 14, 0, 0, 5456, 5457, 7, 5, 0, 0, 5457, 5458, 7, 6, 0, 0, 5458, 5459, 7, 10, 0, 0, 5459, 1096, 1, 0, 0, 0, 5460, 5461, 7, 15, 0, 0, 5461, 5462, 7, 19, 0, 0, 5462, 5463, 7, 12, 0, 0, 5463, 1098, 1, 0, 0, 0, 5464, 5465, 7, 24, 0, 0, 5465, 5466, 7, 17, 0, 0, 5466, 1100, 1, 0, 0, 0, 5467, 5468, 7, 24, 0, 0, 5468, 5469, 7, 19, 0, 0, 5469, 5470, 7, 28, 0, 0, 5470, 5471, 7, 10, 0, 0, 5471, 5472, 7, 13, 0, 0, 5472, 1102, 1, 0, 0, 0, 5473, 5474, 7, 13, 0, 0, 5474, 5475, 7, 5, 0, 0, 5475, 5476, 7, 12, 0, 0, 5476, 5477, 7, 17, 0, 0, 5477, 5478, 7, 5, 0, 0, 5478, 5479, 7, 7, 0, 0, 5479, 5480, 7, 9, 0, 0, 5480, 1104, 1, 0, 0, 0, 5481, 5482, 7, 13, 0, 0, 5482, 5483, 7, 19, 0, 0, 5483, 5484, 7, 22, 0, 0, 5484, 5485, 7, 7, 0, 0, 5485, 5486, 7, 12, 0, 0, 5486, 1106, 1, 0, 0, 0, 5487, 5488, 7, 9, 0, 0, 5488, 5489, 7, 14, 0, 0, 5489, 5490, 7, 5, 0, 0, 5490, 5491, 7, 6, 0, 0, 5491, 5492, 7, 10, 0, 0, 5492, 1108, 1, 0, 0, 0, 5493, 5494, 7, 9, 0, 0, 5494, 5495, 7, 17, 0, 0, 5495, 5496, 7, 23, 0, 0, 5496, 5497, 7, 7, 0, 0, 5497, 1110, 1, 0, 0, 0, 5498, 5499, 7, 9, 0, 0, 5499, 5500, 7, 29, 0, 0, 5500, 5501, 7, 13, 0, 0, 5501, 5502, 7, 16, 0, 0, 5502, 1112, 1, 0, 0, 0, 5503, 5504, 7, 16, 0, 0, 5504, 5505, 7, 13, 0, 0, 5505, 5506, 7, 17, 0, 0, 5506, 5507, 7, 15, 0, 0, 5507, 5508, 5, 95, 0, 0, 5508, 5509, 7, 9, 0, 0, 5509, 5510, 7, 14, 0, 0, 5510, 5511, 7, 5, 0, 0, 5511, 5512, 7, 6, 0, 0, 5512, 5513, 7, 10, 0, 0, 5513, 1114, 1, 0, 0, 0, 5514, 5515, 7, 16, 0, 0, 5515, 5516, 7, 13, 0, 0, 5516, 5517, 7, 22, 0, 0, 5517, 5518, 7, 7, 0, 0, 5518, 5519, 7, 14, 0, 0, 5519, 1116, 1, 0, 0, 0, 5520, 5521, 7, 28, 0, 0, 5521, 5522, 7, 17, 0, 0, 5522, 5523, 7, 12, 0, 0, 5523, 5524, 7, 16, 0, 0, 5524, 5525, 7, 20, 0, 0, 5525, 5526, 5, 95, 0, 0, 5526, 5527, 7, 18, 0, 0, 5527, 5528, 7, 22, 0, 0, 5528, 5529, 7, 14, 0, 0, 5529, 5530, 7, 21, 0, 0, 5530, 5531, 7, 10, 0, 0, 5531, 5532, 7, 16, 0, 0, 5532, 1118, 1, 0, 0, 0, 5533, 5534, 7, 13, 0, 0, 5534, 5535, 7, 5, 0, 0, 5535, 5536, 7, 7, 0, 0, 5536, 5537, 7, 12, 0, 0, 5537, 5538, 7, 19, 0, 0, 5538, 5539, 7, 15, 0, 0, 5539, 1120, 1, 0, 0, 0, 5540, 5541, 7, 9, 0, 0, 5541, 5542, 7, 10, 0, 0, 5542, 5543, 7, 16, 0, 0, 5543, 5544, 7, 9, 0, 0, 5544, 5545, 7, 10, 0, 0, 5545, 5546, 7, 10, 0, 0, 5546, 5547, 7, 12, 0, 0, 5547, 1122, 1, 0, 0, 0, 5548, 5549, 7, 5, 0, 0, 5549, 5550, 7, 14, 0, 0, 5550, 5551, 7, 19, 0, 0, 5551, 5552, 7, 9, 0, 0, 5552, 1124, 1, 0, 0, 0, 5553, 5554, 7, 5, 0, 0, 5554, 5555, 7, 14, 0, 0, 5555, 5556, 7, 19, 0, 0, 5556, 5557, 7, 9, 0, 0, 5557, 5558, 7, 12, 0, 0, 5558, 1126, 1, 0, 0, 0, 5559, 5560, 7, 5, 0, 0, 5560, 5561, 7, 9, 0, 0, 5561, 5562, 7, 17, 0, 0, 5562, 5563, 7, 7, 0, 0, 5563, 1128, 1, 0, 0, 0, 5564, 5565, 7, 5, 0, 0, 5565, 5566, 7, 9, 0, 0, 5566, 5567, 7, 17, 0, 0, 5567, 5568, 7, 7, 0, 0, 5568, 5569, 7, 12, 0, 0, 5569, 1130, 1, 0, 0, 0, 5570, 5571, 7, 5, 0, 0, 5571, 5572, 7, 16, 0, 0, 5572, 5573, 7, 5, 0, 0, 5573, 5574, 7, 7, 0, 0, 5574, 1132, 1, 0, 0, 0, 5575, 5576, 7, 5, 0, 0, 5576, 5577, 7, 16, 0, 0, 5577, 5578, 7, 5, 0, 0, 5578, 5579, 7, 7, 0, 0, 5579, 5580, 7, 12, 0, 0, 5580, 1134, 1, 0, 0, 0, 5581, 5582, 7, 5, 0, 0, 5582, 5583, 7, 16, 0, 0, 5583, 5584, 7, 5, 0, 0, 5584, 5585, 7, 7, 0, 0, 5585, 5586, 5, 50, 0, 0, 5586, 1136, 1, 0, 0, 0, 5587, 5588, 7, 5, 0, 0, 5588, 5589, 7, 16, 0, 0, 5589, 5590, 7, 5, 0, 0, 5590, 5591, 7, 7, 0, 0, 5591, 5592, 5, 50, 0, 0, 5592, 5593, 7, 12, 0, 0, 5593, 1138, 1, 0, 0, 0, 5594, 5595, 7, 14, 0, 0, 5595, 5596, 7, 19, 0, 0, 5596, 5597, 7, 9, 0, 0, 5597, 1140, 1, 0, 0, 0, 5598, 5599, 7, 14, 0, 0, 5599, 5600, 7, 19, 0, 0, 5600, 5601, 7, 9, 0, 0, 5601, 5602, 7, 12, 0, 0, 5602, 1142, 1, 0, 0, 0, 5603, 5604, 7, 14, 0, 0, 5604, 5605, 7, 19, 0, 0, 5605, 5606, 7, 16, 0, 0, 5606, 1144, 1, 0, 0, 0, 5607, 5608, 7, 14, 0, 0, 5608, 5609, 7, 19, 0, 0, 5609, 5610, 7, 16, 0, 0, 5610, 5611, 7, 12, 0, 0, 5611, 1146, 1, 0, 0, 0, 5612, 5613, 7, 9, 0, 0, 5613, 5614, 7, 17, 0, 0, 5614, 5615, 7, 7, 0, 0, 5615, 1148, 1, 0, 0, 0, 5616, 5617, 7, 9, 0, 0, 5617, 5618, 7, 17, 0, 0, 5618, 5619, 7, 7, 0, 0, 5619, 5620, 7, 12, 0, 0, 5620, 1150, 1, 0, 0, 0, 5621, 5622, 7, 16, 0, 0, 5622, 5623, 7, 5, 0, 0, 5623, 5624, 7, 7, 0, 0, 5624, 1152, 1, 0, 0, 0, 5625, 5626, 7, 16, 0, 0, 5626, 5627, 7, 5, 0, 0, 5627, 5628, 7, 7, 0, 0, 5628, 5629, 7, 12, 0, 0, 5629, 1154, 1, 0, 0, 0, 5630, 5631, 7, 9, 0, 0, 5631, 5632, 7, 17, 0, 0, 5632, 5633, 7, 7, 0, 0, 5633, 5634, 7, 20, 0, 0, 5634, 1156, 1, 0, 0, 0, 5635, 5636, 7, 14, 0, 0, 5636, 5637, 7, 19, 0, 0, 5637, 5638, 7, 9, 0, 0, 5638, 5639, 7, 20, 0, 0, 5639, 1158, 1, 0, 0, 0, 5640, 5641, 7, 16, 0, 0, 5641, 5642, 7, 5, 0, 0, 5642, 5643, 7, 7, 0, 0, 5643, 5644, 7, 20, 0, 0, 5644, 1160, 1, 0, 0, 0, 5645, 5646, 7, 5, 0, 0, 5646, 5647, 7, 9, 0, 0, 5647, 5648, 7, 17, 0, 0, 5648, 5649, 7, 7, 0, 0, 5649, 5650, 7, 20, 0, 0, 5650, 1162, 1, 0, 0, 0, 5651, 5652, 7, 5, 0, 0, 5652, 5653, 7, 14, 0, 0, 5653, 5654, 7, 19, 0, 0, 5654, 5655, 7, 9, 0, 0, 5655, 5656, 7, 20, 0, 0, 5656, 1164, 1, 0, 0, 0, 5657, 5658, 7, 5, 0, 0, 5658, 5659, 7, 16, 0, 0, 5659, 5660, 7, 5, 0, 0, 5660, 5661, 7, 7, 0, 0, 5661, 5662, 7, 20, 0, 0, 5662, 1166, 1, 0, 0, 0, 5663, 5664, 7, 18, 0, 0, 5664, 5665, 7, 17, 0, 0, 5665, 5666, 7, 16, 0, 0, 5666, 5667, 5, 95, 0, 0, 5667, 5668, 7, 6, 0, 0, 5668, 5669, 7, 10, 0, 0, 5669, 5670, 7, 7, 0, 0, 5670, 5671, 7, 23, 0, 0, 5671, 5672, 7, 16, 0, 0, 5672, 5673, 7, 20, 0, 0, 5673, 1168, 1, 0, 0, 0, 5674, 5675, 7, 14, 0, 0, 5675, 5676, 7, 20, 0, 0, 5676, 5677, 7, 5, 0, 0, 5677, 5678, 7, 13, 0, 0, 5678, 5679, 5, 95, 0, 0, 5679, 5680, 7, 6, 0, 0, 5680, 5681, 7, 10, 0, 0, 5681, 5682, 7, 7, 0, 0, 5682, 5683, 7, 23, 0, 0, 5683, 5684, 7, 16, 0, 0, 5684, 5685, 7, 20, 0, 0, 5685, 1170, 1, 0, 0, 0, 5686, 5687, 7, 14, 0, 0, 5687, 5688, 7, 20, 0, 0, 5688, 5689, 7, 5, 0, 0, 5689, 5690, 7, 13, 0, 0, 5690, 5691, 7, 5, 0, 0, 5691, 5692, 7, 14, 0, 0, 5692, 5693, 7, 16, 0, 0, 5693, 5694, 7, 10, 0, 0, 5694, 5695, 7, 13, 0, 0, 5695, 5696, 5, 95, 0, 0, 5696, 5697, 7, 6, 0, 0, 5697, 5698, 7, 10, 0, 0, 5698, 5699, 7, 7, 0, 0, 5699, 5700, 7, 23, 0, 0, 5700, 5701, 7, 16, 0, 0, 5701, 5702, 7, 20, 0, 0, 5702, 1172, 1, 0, 0, 0, 5703, 5704, 7, 6, 0, 0, 5704, 5705, 7, 19, 0, 0, 5705, 5706, 7, 28, 0, 0, 5706, 5707, 7, 10, 0, 0, 5707, 5708, 7, 13, 0, 0, 5708, 1174, 1, 0, 0, 0, 5709, 5710, 7, 19, 0, 0, 5710, 5711, 7, 14, 0, 0, 5711, 5712, 7, 16, 0, 0, 5712, 5713, 7, 10, 0, 0, 5713, 5714, 7, 16, 0, 0, 5714, 5715, 5, 95, 0, 0, 5715, 5716, 7, 6, 0, 0, 5716, 5717, 7, 10, 0, 0, 5717, 5718, 7, 7, 0, 0, 5718, 5719, 7, 23, 0, 0, 5719, 5720, 7, 16, 0, 0, 5720, 5721, 7, 20, 0, 0, 5721, 1176, 1, 0, 0, 0, 5722, 5723, 7, 22, 0, 0, 5723, 5724, 7, 24, 0, 0, 5724, 5725, 7, 24, 0, 0, 5725, 5726, 7, 10, 0, 0, 5726, 5727, 7, 13, 0, 0, 5727, 1178, 1, 0, 0, 0, 5728, 5729, 7, 5, 0, 0, 5729, 5730, 7, 9, 0, 0, 5730, 5731, 7, 14, 0, 0, 5731, 5732, 7, 17, 0, 0, 5732, 5733, 7, 17, 0, 0, 5733, 1180, 1, 0, 0, 0, 5734, 5735, 7, 18, 0, 0, 5735, 5736, 7, 16, 0, 0, 5736, 5737, 7, 13, 0, 0, 5737, 5738, 7, 17, 0, 0, 5738, 5739, 7, 15, 0, 0, 5739, 1182, 1, 0, 0, 0, 5740, 5741, 7, 14, 0, 0, 5741, 5742, 7, 20, 0, 0, 5742, 5743, 7, 13, 0, 0, 5743, 1184, 1, 0, 0, 0, 5744, 5745, 7, 14, 0, 0, 5745, 5746, 7, 19, 0, 0, 5746, 5747, 7, 7, 0, 0, 5747, 5748, 7, 14, 0, 0, 5748, 5749, 7, 5, 0, 0, 5749, 5750, 7, 16, 0, 0, 5750, 1186, 1, 0, 0, 0, 5751, 5752, 7, 14, 0, 0, 5752, 5753, 7, 19, 0, 0, 5753, 5754, 7, 7, 0, 0, 5754, 5755, 7, 14, 0, 0, 5755, 5756, 7, 5, 0, 0, 5756, 5757, 7, 16, 0, 0, 5757, 5758, 5, 95, 0, 0, 5758, 5759, 7, 28, 0, 0, 5759, 5760, 7, 9, 0, 0, 5760, 1188, 1, 0, 0, 0, 5761, 5762, 7, 25, 0, 0, 5762, 5763, 7, 19, 0, 0, 5763, 5764, 7, 13, 0, 0, 5764, 5765, 7, 15, 0, 0, 5765, 5766, 7, 5, 0, 0, 5766, 5767, 7, 16, 0, 0, 5767, 1190, 1, 0, 0, 0, 5768, 5769, 7, 17, 0, 0, 5769, 5770, 7, 7, 0, 0, 5770, 5771, 7, 17, 0, 0, 5771, 5772, 7, 16, 0, 0, 5772, 5773, 7, 14, 0, 0, 5773, 5774, 7, 5, 0, 0, 5774, 5775, 7, 24, 0, 0, 5775, 1192, 1, 0, 0, 0, 5776, 5777, 7, 6, 0, 0, 5777, 5778, 7, 10, 0, 0, 5778, 5779, 7, 7, 0, 0, 5779, 5780, 7, 23, 0, 0, 5780, 5781, 7, 16, 0, 0, 5781, 5782, 7, 20, 0, 0, 5782, 1194, 1, 0, 0, 0, 5783, 5784, 7, 6, 0, 0, 5784, 5785, 7, 24, 0, 0, 5785, 5786, 7, 5, 0, 0, 5786, 5787, 7, 12, 0, 0, 5787, 1196, 1, 0, 0, 0, 5788, 5789, 7, 6, 0, 0, 5789, 5790, 7, 16, 0, 0, 5790, 5791, 7, 13, 0, 0, 5791, 5792, 7, 17, 0, 0, 5792, 5793, 7, 15, 0, 0, 5793, 1198, 1, 0, 0, 0, 5794, 5795, 7, 15, 0, 0, 5795, 5796, 7, 12, 0, 0, 5796, 5797, 5, 53, 0, 0, 5797, 1200, 1, 0, 0, 0, 5798, 5799, 7, 24, 0, 0, 5799, 5800, 7, 5, 0, 0, 5800, 5801, 7, 13, 0, 0, 5801, 5802, 7, 9, 0, 0, 5802, 5803, 7, 10, 0, 0, 5803, 5804, 5, 95, 0, 0, 5804, 5805, 7, 17, 0, 0, 5805, 5806, 7, 12, 0, 0, 5806, 5807, 7, 10, 0, 0, 5807, 5808, 7, 7, 0, 0, 5808, 5809, 7, 16, 0, 0, 5809, 1202, 1, 0, 0, 0, 5810, 5811, 7, 24, 0, 0, 5811, 5812, 7, 23, 0, 0, 5812, 5813, 5, 95, 0, 0, 5813, 5814, 7, 14, 0, 0, 5814, 5815, 7, 6, 0, 0, 5815, 5816, 7, 17, 0, 0, 5816, 5817, 7, 10, 0, 0, 5817, 5818, 7, 7, 0, 0, 5818, 5819, 7, 16, 0, 0, 5819, 5820, 5, 95, 0, 0, 5820, 5821, 7, 10, 0, 0, 5821, 5822, 7, 7, 0, 0, 5822, 5823, 7, 14, 0, 0, 5823, 5824, 7, 19, 0, 0, 5824, 5825, 7, 12, 0, 0, 5825, 5826, 7, 17, 0, 0, 5826, 5827, 7, 7, 0, 0, 5827, 5828, 7, 23, 0, 0, 5828, 1204, 1, 0, 0, 0, 5829, 5830, 7, 29, 0, 0, 5830, 5831, 7, 22, 0, 0, 5831, 5832, 7, 19, 0, 0, 5832, 5833, 7, 16, 0, 0, 5833, 5834, 7, 10, 0, 0, 5834, 5835, 5, 95, 0, 0, 5835, 5836, 7, 17, 0, 0, 5836, 5837, 7, 12, 0, 0, 5837, 5838, 7, 10, 0, 0, 5838, 5839, 7, 7, 0, 0, 5839, 5840, 7, 16, 0, 0, 5840, 1206, 1, 0, 0, 0, 5841, 5842, 7, 29, 0, 0, 5842, 5843, 7, 22, 0, 0, 5843, 5844, 7, 19, 0, 0, 5844, 5845, 7, 16, 0, 0, 5845, 5846, 7, 10, 0, 0, 5846, 5847, 5, 95, 0, 0, 5847, 5848, 7, 6, 0, 0, 5848, 5849, 7, 17, 0, 0, 5849, 5850, 7, 16, 0, 0, 5850, 5851, 7, 10, 0, 0, 5851, 5852, 7, 13, 0, 0, 5852, 5853, 7, 5, 0, 0, 5853, 5854, 7, 6, 0, 0, 5854, 1208, 1, 0, 0, 0, 5855, 5856, 7, 29, 0, 0, 5856, 5857, 7, 22, 0, 0, 5857, 5858, 7, 19, 0, 0, 5858, 5859, 7, 16, 0, 0, 5859, 5860, 7, 10, 0, 0, 5860, 5861, 5, 95, 0, 0, 5861, 5862, 7, 7, 0, 0, 5862, 5863, 7, 22, 0, 0, 5863, 5864, 7, 6, 0, 0, 5864, 5865, 7, 6, 0, 0, 5865, 5866, 7, 5, 0, 0, 5866, 5867, 7, 18, 0, 0, 5867, 5868, 7, 6, 0, 0, 5868, 5869, 7, 10, 0, 0, 5869, 1210, 1, 0, 0, 0, 5870, 5871, 7, 13, 0, 0, 5871, 5872, 7, 10, 0, 0, 5872, 5873, 7, 23, 0, 0, 5873, 5874, 7, 10, 0, 0, 5874, 5875, 7, 26, 0, 0, 5875, 5876, 7, 24, 0, 0, 5876, 5877, 5, 95, 0, 0, 5877, 5878, 7, 14, 0, 0, 5878, 5879, 7, 19, 0, 0, 5879, 5880, 7, 22, 0, 0, 5880, 5881, 7, 7, 0, 0, 5881, 5882, 7, 16, 0, 0, 5882, 1212, 1, 0, 0, 0, 5883, 5884, 7, 13, 0, 0, 5884, 5885, 7, 10, 0, 0, 5885, 5886, 7, 23, 0, 0, 5886, 5887, 7, 10, 0, 0, 5887, 5888, 7, 26, 0, 0, 5888, 5889, 7, 24, 0, 0, 5889, 5890, 5, 95, 0, 0, 5890, 5891, 7, 17, 0, 0, 5891, 5892, 7, 7, 0, 0, 5892, 5893, 7, 9, 0, 0, 5893, 5894, 7, 16, 0, 0, 5894, 5895, 7, 13, 0, 0, 5895, 1214, 1, 0, 0, 0, 5896, 5897, 7, 13, 0, 0, 5897, 5898, 7, 10, 0, 0, 5898, 5899, 7, 23, 0, 0, 5899, 5900, 7, 10, 0, 0, 5900, 5901, 7, 26, 0, 0, 5901, 5902, 7, 24, 0, 0, 5902, 5903, 5, 95, 0, 0, 5903, 5904, 7, 6, 0, 0, 5904, 5905, 7, 17, 0, 0, 5905, 5906, 7, 21, 0, 0, 5906, 5907, 7, 10, 0, 0, 5907, 1216, 1, 0, 0, 0, 5908, 5909, 7, 13, 0, 0, 5909, 5910, 7, 10, 0, 0, 5910, 5911, 7, 23, 0, 0, 5911, 5912, 7, 10, 0, 0, 5912, 5913, 7, 26, 0, 0, 5913, 5914, 7, 24, 0, 0, 5914, 5915, 5, 95, 0, 0, 5915, 5916, 7, 15, 0, 0, 5916, 5917, 7, 5, 0, 0, 5917, 5918, 7, 16, 0, 0, 5918, 5919, 7, 14, 0, 0, 5919, 5920, 7, 20, 0, 0, 5920, 1218, 1, 0, 0, 0, 5921, 5922, 7, 13, 0, 0, 5922, 5923, 7, 10, 0, 0, 5923, 5924, 7, 23, 0, 0, 5924, 5925, 7, 10, 0, 0, 5925, 5926, 7, 26, 0, 0, 5926, 5927, 7, 24, 0, 0, 5927, 5928, 5, 95, 0, 0, 5928, 5929, 7, 15, 0, 0, 5929, 5930, 7, 5, 0, 0, 5930, 5931, 7, 16, 0, 0, 5931, 5932, 7, 14, 0, 0, 5932, 5933, 7, 20, 0, 0, 5933, 5934, 7, 10, 0, 0, 5934, 5935, 7, 9, 0, 0, 5935, 1220, 1, 0, 0, 0, 5936, 5937, 7, 13, 0, 0, 5937, 5938, 7, 10, 0, 0, 5938, 5939, 7, 23, 0, 0, 5939, 5940, 7, 10, 0, 0, 5940, 5941, 7, 26, 0, 0, 5941, 5942, 7, 24, 0, 0, 5942, 5943, 5, 95, 0, 0, 5943, 5944, 7, 13, 0, 0, 5944, 5945, 7, 10, 0, 0, 5945, 5946, 7, 24, 0, 0, 5946, 5947, 7, 6, 0, 0, 5947, 5948, 7, 5, 0, 0, 5948, 5949, 7, 14, 0, 0, 5949, 5950, 7, 10, 0, 0, 5950, 1222, 1, 0, 0, 0, 5951, 5952, 7, 13, 0, 0, 5952, 5953, 7, 10, 0, 0, 5953, 5954, 7, 23, 0, 0, 5954, 5955, 7, 10, 0, 0, 5955, 5956, 7, 26, 0, 0, 5956, 5957, 7, 24, 0, 0, 5957, 5958, 5, 95, 0, 0, 5958, 5959, 7, 9, 0, 0, 5959, 5960, 7, 24, 0, 0, 5960, 5961, 7, 6, 0, 0, 5961, 5962, 7, 17, 0, 0, 5962, 5963, 7, 16, 0, 0, 5963, 5964, 5, 95, 0, 0, 5964, 5965, 7, 16, 0, 0, 5965, 5966, 7, 19, 0, 0, 5966, 5967, 5, 95, 0, 0, 5967, 5968, 7, 5, 0, 0, 5968, 5969, 7, 13, 0, 0, 5969, 5970, 7, 13, 0, 0, 5970, 5971, 7, 5, 0, 0, 5971, 5972, 7, 8, 0, 0, 5972, 1224, 1, 0, 0, 0, 5973, 5974, 7, 13, 0, 0, 5974, 5975, 7, 10, 0, 0, 5975, 5976, 7, 23, 0, 0, 5976, 5977, 7, 10, 0, 0, 5977, 5978, 7, 26, 0, 0, 5978, 5979, 7, 24, 0, 0, 5979, 5980, 5, 95, 0, 0, 5980, 5981, 7, 9, 0, 0, 5981, 5982, 7, 24, 0, 0, 5982, 5983, 7, 6, 0, 0, 5983, 5984, 7, 17, 0, 0, 5984, 5985, 7, 16, 0, 0, 5985, 5986, 5, 95, 0, 0, 5986, 5987, 7, 16, 0, 0, 5987, 5988, 7, 19, 0, 0, 5988, 5989, 5, 95, 0, 0, 5989, 5990, 7, 16, 0, 0, 5990, 5991, 7, 5, 0, 0, 5991, 5992, 7, 18, 0, 0, 5992, 5993, 7, 6, 0, 0, 5993, 5994, 7, 10, 0, 0, 5994, 1226, 1, 0, 0, 0, 5995, 5996, 7, 13, 0, 0, 5996, 5997, 7, 10, 0, 0, 5997, 5998, 7, 23, 0, 0, 5998, 5999, 7, 10, 0, 0, 5999, 6000, 7, 26, 0, 0, 6000, 6001, 7, 24, 0, 0, 6001, 6002, 5, 95, 0, 0, 6002, 6003, 7, 9, 0, 0, 6003, 6004, 7, 22, 0, 0, 6004, 6005, 7, 18, 0, 0, 6005, 6006, 7, 9, 0, 0, 6006, 6007, 7, 16, 0, 0, 6007, 6008, 7, 13, 0, 0, 6008, 1228, 1, 0, 0, 0, 6009, 6010, 7, 13, 0, 0, 6010, 6011, 7, 10, 0, 0, 6011, 6012, 7, 24, 0, 0, 6012, 6013, 7, 10, 0, 0, 6013, 6014, 7, 5, 0, 0, 6014, 6015, 7, 16, 0, 0, 6015, 1230, 1, 0, 0, 0, 6016, 6017, 7, 13, 0, 0, 6017, 6018, 7, 24, 0, 0, 6018, 6019, 7, 5, 0, 0, 6019, 6020, 7, 12, 0, 0, 6020, 1232, 1, 0, 0, 0, 6021, 6022, 7, 13, 0, 0, 6022, 6023, 7, 16, 0, 0, 6023, 6024, 7, 13, 0, 0, 6024, 6025, 7, 17, 0, 0, 6025, 6026, 7, 15, 0, 0, 6026, 1234, 1, 0, 0, 0, 6027, 6028, 7, 9, 0, 0, 6028, 6029, 7, 24, 0, 0, 6029, 6030, 7, 6, 0, 0, 6030, 6031, 7, 17, 0, 0, 6031, 6032, 7, 16, 0, 0, 6032, 6033, 5, 95, 0, 0, 6033, 6034, 7, 24, 0, 0, 6034, 6035, 7, 5, 0, 0, 6035, 6036, 7, 13, 0, 0, 6036, 6037, 7, 16, 0, 0, 6037, 1236, 1, 0, 0, 0, 6038, 6039, 7, 9, 0, 0, 6039, 6040, 7, 16, 0, 0, 6040, 6041, 7, 5, 0, 0, 6041, 6042, 7, 13, 0, 0, 6042, 6043, 7, 16, 0, 0, 6043, 6044, 7, 9, 0, 0, 6044, 6045, 5, 95, 0, 0, 6045, 6046, 7, 28, 0, 0, 6046, 6047, 7, 17, 0, 0, 6047, 6048, 7, 16, 0, 0, 6048, 6049, 7, 20, 0, 0, 6049, 1238, 1, 0, 0, 0, 6050, 6051, 7, 9, 0, 0, 6051, 6052, 7, 16, 0, 0, 6052, 6053, 7, 13, 0, 0, 6053, 6054, 7, 17, 0, 0, 6054, 6055, 7, 7, 0, 0, 6055, 6056, 7, 23, 0, 0, 6056, 6057, 5, 95, 0, 0, 6057, 6058, 7, 16, 0, 0, 6058, 6059, 7, 19, 0, 0, 6059, 6060, 5, 95, 0, 0, 6060, 6061, 7, 5, 0, 0, 6061, 6062, 7, 13, 0, 0, 6062, 6063, 7, 13, 0, 0, 6063, 6064, 7, 5, 0, 0, 6064, 6065, 7, 8, 0, 0, 6065, 1240, 1, 0, 0, 0, 6066, 6067, 7, 9, 0, 0, 6067, 6068, 7, 16, 0, 0, 6068, 6069, 7, 13, 0, 0, 6069, 6070, 7, 17, 0, 0, 6070, 6071, 7, 7, 0, 0, 6071, 6072, 7, 23, 0, 0, 6072, 6073, 5, 95, 0, 0, 6073, 6074, 7, 16, 0, 0, 6074, 6075, 7, 19, 0, 0, 6075, 6076, 5, 95, 0, 0, 6076, 6077, 7, 16, 0, 0, 6077, 6078, 7, 5, 0, 0, 6078, 6079, 7, 18, 0, 0, 6079, 6080, 7, 6, 0, 0, 6080, 6081, 7, 10, 0, 0, 6081, 1242, 1, 0, 0, 0, 6082, 6083, 7, 9, 0, 0, 6083, 6084, 7, 16, 0, 0, 6084, 6085, 7, 13, 0, 0, 6085, 6086, 7, 24, 0, 0, 6086, 6087, 7, 19, 0, 0, 6087, 6088, 7, 9, 0, 0, 6088, 1244, 1, 0, 0, 0, 6089, 6090, 7, 9, 0, 0, 6090, 6091, 7, 22, 0, 0, 6091, 6092, 7, 18, 0, 0, 6092, 6093, 7, 9, 0, 0, 6093, 6094, 7, 16, 0, 0, 6094, 6095, 7, 13, 0, 0, 6095, 1246, 1, 0, 0, 0, 6096, 6097, 7, 16, 0, 0, 6097, 6098, 7, 19, 0, 0, 6098, 6099, 5, 95, 0, 0, 6099, 6100, 7, 5, 0, 0, 6100, 6101, 7, 9, 0, 0, 6101, 6102, 7, 14, 0, 0, 6102, 6103, 7, 17, 0, 0, 6103, 6104, 7, 17, 0, 0, 6104, 1248, 1, 0, 0, 0, 6105, 6106, 7, 16, 0, 0, 6106, 6107, 7, 19, 0, 0, 6107, 6108, 5, 95, 0, 0, 6108, 6109, 7, 20, 0, 0, 6109, 6110, 7, 10, 0, 0, 6110, 6111, 7, 26, 0, 0, 6111, 1250, 1, 0, 0, 0, 6112, 6113, 7, 16, 0, 0, 6113, 6114, 7, 13, 0, 0, 6114, 6115, 7, 5, 0, 0, 6115, 6116, 7, 7, 0, 0, 6116, 6117, 7, 9, 0, 0, 6117, 6118, 7, 6, 0, 0, 6118, 6119, 7, 5, 0, 0, 6119, 6120, 7, 16, 0, 0, 6120, 6121, 7, 10, 0, 0, 6121, 1252, 1, 0, 0, 0, 6122, 6123, 7, 22, 0, 0, 6123, 6124, 7, 7, 0, 0, 6124, 6125, 7, 17, 0, 0, 6125, 6126, 7, 9, 0, 0, 6126, 6127, 7, 16, 0, 0, 6127, 6128, 7, 13, 0, 0, 6128, 1254, 1, 0, 0, 0, 6129, 6130, 7, 5, 0, 0, 6130, 6131, 7, 23, 0, 0, 6131, 6132, 7, 10, 0, 0, 6132, 1256, 1, 0, 0, 0, 6133, 6134, 7, 14, 0, 0, 6134, 6135, 7, 6, 0, 0, 6135, 6136, 7, 19, 0, 0, 6136, 6137, 7, 14, 0, 0, 6137, 6138, 7, 21, 0, 0, 6138, 6139, 5, 95, 0, 0, 6139, 6140, 7, 16, 0, 0, 6140, 6141, 7, 17, 0, 0, 6141, 6142, 7, 15, 0, 0, 6142, 6143, 7, 10, 0, 0, 6143, 6144, 7, 9, 0, 0, 6144, 6145, 7, 16, 0, 0, 6145, 6146, 7, 5, 0, 0, 6146, 6147, 7, 15, 0, 0, 6147, 6148, 7, 24, 0, 0, 6148, 1258, 1, 0, 0, 0, 6149, 6150, 7, 12, 0, 0, 6150, 6151, 7, 5, 0, 0, 6151, 6152, 7, 16, 0, 0, 6152, 6153, 7, 10, 0, 0, 6153, 6154, 5, 95, 0, 0, 6154, 6155, 7, 18, 0, 0, 6155, 6156, 7, 17, 0, 0, 6156, 6157, 7, 7, 0, 0, 6157, 1260, 1, 0, 0, 0, 6158, 6159, 7, 12, 0, 0, 6159, 6160, 7, 5, 0, 0, 6160, 6161, 7, 16, 0, 0, 6161, 6162, 7, 10, 0, 0, 6162, 6163, 5, 95, 0, 0, 6163, 6164, 7, 24, 0, 0, 6164, 6165, 7, 5, 0, 0, 6165, 6166, 7, 13, 0, 0, 6166, 6167, 7, 16, 0, 0, 6167, 1262, 1, 0, 0, 0, 6168, 6169, 7, 12, 0, 0, 6169, 6170, 7, 5, 0, 0, 6170, 6171, 7, 16, 0, 0, 6171, 6172, 7, 10, 0, 0, 6172, 6173, 5, 95, 0, 0, 6173, 6174, 7, 16, 0, 0, 6174, 6175, 7, 13, 0, 0, 6175, 6176, 7, 22, 0, 0, 6176, 6177, 7, 7, 0, 0, 6177, 6178, 7, 14, 0, 0, 6178, 1264, 1, 0, 0, 0, 6179, 6180, 7, 17, 0, 0, 6180, 6181, 7, 9, 0, 0, 6181, 6182, 7, 25, 0, 0, 6182, 6183, 7, 17, 0, 0, 6183, 6184, 7, 7, 0, 0, 6184, 6185, 7, 17, 0, 0, 6185, 6186, 7, 16, 0, 0, 6186, 6187, 7, 10, 0, 0, 6187, 1266, 1, 0, 0, 0, 6188, 6189, 7, 30, 0, 0, 6189, 6190, 7, 22, 0, 0, 6190, 6191, 7, 9, 0, 0, 6191, 6192, 7, 16, 0, 0, 6192, 6193, 7, 17, 0, 0, 6193, 6194, 7, 25, 0, 0, 6194, 6195, 7, 8, 0, 0, 6195, 6196, 5, 95, 0, 0, 6196, 6197, 7, 12, 0, 0, 6197, 6198, 7, 5, 0, 0, 6198, 6199, 7, 8, 0, 0, 6199, 6200, 7, 9, 0, 0, 6200, 1268, 1, 0, 0, 0, 6201, 6202, 7, 30, 0, 0, 6202, 6203, 7, 22, 0, 0, 6203, 6204, 7, 9, 0, 0, 6204, 6205, 7, 16, 0, 0, 6205, 6206, 7, 17, 0, 0, 6206, 6207, 7, 25, 0, 0, 6207, 6208, 7, 8, 0, 0, 6208, 6209, 5, 95, 0, 0, 6209, 6210, 7, 20, 0, 0, 6210, 6211, 7, 19, 0, 0, 6211, 6212, 7, 22, 0, 0, 6212, 6213, 7, 13, 0, 0, 6213, 6214, 7, 9, 0, 0, 6214, 1270, 1, 0, 0, 0, 6215, 6216, 7, 30, 0, 0, 6216, 6217, 7, 22, 0, 0, 6217, 6218, 7, 9, 0, 0, 6218, 6219, 7, 16, 0, 0, 6219, 6220, 7, 17, 0, 0, 6220, 6221, 7, 25, 0, 0, 6221, 6222, 7, 8, 0, 0, 6222, 6223, 5, 95, 0, 0, 6223, 6224, 7, 17, 0, 0, 6224, 6225, 7, 7, 0, 0, 6225, 6226, 7, 16, 0, 0, 6226, 6227, 7, 10, 0, 0, 6227, 6228, 7, 13, 0, 0, 6228, 6229, 7, 27, 0, 0, 6229, 6230, 7, 5, 0, 0, 6230, 6231, 7, 6, 0, 0, 6231, 1272, 1, 0, 0, 0, 6232, 6233, 7, 15, 0, 0, 6233, 6234, 7, 5, 0, 0, 6234, 6235, 7, 21, 0, 0, 6235, 6236, 7, 10, 0, 0, 6236, 6237, 5, 95, 0, 0, 6237, 6238, 7, 12, 0, 0, 6238, 6239, 7, 5, 0, 0, 6239, 6240, 7, 16, 0, 0, 6240, 6241, 7, 10, 0, 0, 6241, 1274, 1, 0, 0, 0, 6242, 6243, 7, 15, 0, 0, 6243, 6244, 7, 5, 0, 0, 6244, 6245, 7, 21, 0, 0, 6245, 6246, 7, 10, 0, 0, 6246, 6247, 5, 95, 0, 0, 6247, 6248, 7, 17, 0, 0, 6248, 6249, 7, 7, 0, 0, 6249, 6250, 7, 16, 0, 0, 6250, 6251, 7, 10, 0, 0, 6251, 6252, 7, 13, 0, 0, 6252, 6253, 7, 27, 0, 0, 6253, 6254, 7, 5, 0, 0, 6254, 6255, 7, 6, 0, 0, 6255, 1276, 1, 0, 0, 0, 6256, 6257, 7, 15, 0, 0, 6257, 6258, 7, 5, 0, 0, 6258, 6259, 7, 21, 0, 0, 6259, 6260, 7, 10, 0, 0, 6260, 6261, 5, 95, 0, 0, 6261, 6262, 7, 16, 0, 0, 6262, 6263, 7, 17, 0, 0, 6263, 6264, 7, 15, 0, 0, 6264, 6265, 7, 10, 0, 0, 6265, 1278, 1, 0, 0, 0, 6266, 6267, 7, 15, 0, 0, 6267, 6268, 7, 5, 0, 0, 6268, 6269, 7, 21, 0, 0, 6269, 6270, 7, 10, 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, 1280, 1, 0, 0, 0, 6281, 6282, 7, 15, 0, 0, 6282, 6283, 7, 5, 0, 0, 6283, 6284, 7, 21, 0, 0, 6284, 6285, 7, 10, 0, 0, 6285, 6286, 5, 95, 0, 0, 6286, 6287, 7, 16, 0, 0, 6287, 6288, 7, 17, 0, 0, 6288, 6289, 7, 15, 0, 0, 6289, 6290, 7, 10, 0, 0, 6290, 6291, 7, 9, 0, 0, 6291, 6292, 7, 16, 0, 0, 6292, 6293, 7, 5, 0, 0, 6293, 6294, 7, 15, 0, 0, 6294, 6295, 7, 24, 0, 0, 6295, 6296, 7, 16, 0, 0, 6296, 6297, 7, 11, 0, 0, 6297, 1282, 1, 0, 0, 0, 6298, 6299, 7, 7, 0, 0, 6299, 6300, 7, 19, 0, 0, 6300, 6301, 7, 28, 0, 0, 6301, 1284, 1, 0, 0, 0, 6302, 6303, 7, 9, 0, 0, 6303, 6304, 7, 16, 0, 0, 6304, 6305, 7, 5, 0, 0, 6305, 6306, 7, 16, 0, 0, 6306, 6307, 7, 10, 0, 0, 6307, 6308, 7, 15, 0, 0, 6308, 6309, 7, 10, 0, 0, 6309, 6310, 7, 7, 0, 0, 6310, 6311, 7, 16, 0, 0, 6311, 6312, 5, 95, 0, 0, 6312, 6313, 7, 16, 0, 0, 6313, 6314, 7, 17, 0, 0, 6314, 6315, 7, 15, 0, 0, 6315, 6316, 7, 10, 0, 0, 6316, 6317, 7, 9, 0, 0, 6317, 6318, 7, 16, 0, 0, 6318, 6319, 7, 5, 0, 0, 6319, 6320, 7, 15, 0, 0, 6320, 6321, 7, 24, 0, 0, 6321, 1286, 1, 0, 0, 0, 6322, 6323, 7, 16, 0, 0, 6323, 6324, 7, 17, 0, 0, 6324, 6325, 7, 15, 0, 0, 6325, 6326, 7, 10, 0, 0, 6326, 6327, 7, 19, 0, 0, 6327, 6328, 7, 25, 0, 0, 6328, 6329, 7, 12, 0, 0, 6329, 6330, 7, 5, 0, 0, 6330, 6331, 7, 8, 0, 0, 6331, 1288, 1, 0, 0, 0, 6332, 6333, 7, 16, 0, 0, 6333, 6334, 7, 13, 0, 0, 6334, 6335, 7, 5, 0, 0, 6335, 6336, 7, 7, 0, 0, 6336, 6337, 7, 9, 0, 0, 6337, 6338, 7, 5, 0, 0, 6338, 6339, 7, 14, 0, 0, 6339, 6340, 7, 16, 0, 0, 6340, 6341, 7, 17, 0, 0, 6341, 6342, 7, 19, 0, 0, 6342, 6343, 7, 7, 0, 0, 6343, 6344, 5, 95, 0, 0, 6344, 6345, 7, 16, 0, 0, 6345, 6346, 7, 17, 0, 0, 6346, 6347, 7, 15, 0, 0, 6347, 6348, 7, 10, 0, 0, 6348, 6349, 7, 9, 0, 0, 6349, 6350, 7, 16, 0, 0, 6350, 6351, 7, 5, 0, 0, 6351, 6352, 7, 15, 0, 0, 6352, 6353, 7, 24, 0, 0, 6353, 1290, 1, 0, 0, 0, 6354, 6355, 7, 16, 0, 0, 6355, 6356, 7, 19, 0, 0, 6356, 6357, 5, 95, 0, 0, 6357, 6358, 7, 16, 0, 0, 6358, 6359, 7, 17, 0, 0, 6359, 6360, 7, 15, 0, 0, 6360, 6361, 7, 10, 0, 0, 6361, 6362, 7, 9, 0, 0, 6362, 6363, 7, 16, 0, 0, 6363, 6364, 7, 5, 0, 0, 6364, 6365, 7, 15, 0, 0, 6365, 6366, 7, 24, 0, 0, 6366, 1292, 1, 0, 0, 0, 6367, 6368, 7, 16, 0, 0, 6368, 6369, 7, 19, 0, 0, 6369, 6370, 5, 95, 0, 0, 6370, 6371, 7, 14, 0, 0, 6371, 6372, 7, 20, 0, 0, 6372, 6373, 7, 5, 0, 0, 6373, 6374, 7, 13, 0, 0, 6374, 1294, 1, 0, 0, 0, 6375, 6376, 7, 16, 0, 0, 6376, 6377, 7, 19, 0, 0, 6377, 6378, 5, 95, 0, 0, 6378, 6379, 7, 12, 0, 0, 6379, 6380, 7, 5, 0, 0, 6380, 6381, 7, 16, 0, 0, 6381, 6382, 7, 10, 0, 0, 6382, 1296, 1, 0, 0, 0, 6383, 6384, 7, 16, 0, 0, 6384, 6385, 7, 19, 0, 0, 6385, 6386, 5, 95, 0, 0, 6386, 6387, 7, 7, 0, 0, 6387, 6388, 7, 22, 0, 0, 6388, 6389, 7, 15, 0, 0, 6389, 6390, 7, 18, 0, 0, 6390, 6391, 7, 10, 0, 0, 6391, 6392, 7, 13, 0, 0, 6392, 1298, 1, 0, 0, 0, 6393, 6397, 3, 1301, 648, 0, 6394, 6396, 3, 1303, 649, 0, 6395, 6394, 1, 0, 0, 0, 6396, 6399, 1, 0, 0, 0, 6397, 6395, 1, 0, 0, 0, 6397, 6398, 1, 0, 0, 0, 6398, 1300, 1, 0, 0, 0, 6399, 6397, 1, 0, 0, 0, 6400, 6407, 7, 31, 0, 0, 6401, 6402, 7, 32, 0, 0, 6402, 6407, 4, 648, 6, 0, 6403, 6404, 7, 33, 0, 0, 6404, 6405, 7, 34, 0, 0, 6405, 6407, 4, 648, 7, 0, 6406, 6400, 1, 0, 0, 0, 6406, 6401, 1, 0, 0, 0, 6406, 6403, 1, 0, 0, 0, 6407, 1302, 1, 0, 0, 0, 6408, 6411, 3, 1305, 650, 0, 6409, 6411, 5, 36, 0, 0, 6410, 6408, 1, 0, 0, 0, 6410, 6409, 1, 0, 0, 0, 6411, 1304, 1, 0, 0, 0, 6412, 6415, 3, 1301, 648, 0, 6413, 6415, 7, 0, 0, 0, 6414, 6412, 1, 0, 0, 0, 6414, 6413, 1, 0, 0, 0, 6415, 1306, 1, 0, 0, 0, 6416, 6417, 3, 1309, 652, 0, 6417, 6418, 5, 34, 0, 0, 6418, 1308, 1, 0, 0, 0, 6419, 6425, 5, 34, 0, 0, 6420, 6421, 5, 34, 0, 0, 6421, 6424, 5, 34, 0, 0, 6422, 6424, 8, 35, 0, 0, 6423, 6420, 1, 0, 0, 0, 6423, 6422, 1, 0, 0, 0, 6424, 6427, 1, 0, 0, 0, 6425, 6423, 1, 0, 0, 0, 6425, 6426, 1, 0, 0, 0, 6426, 1310, 1, 0, 0, 0, 6427, 6425, 1, 0, 0, 0, 6428, 6429, 3, 1313, 654, 0, 6429, 6430, 5, 34, 0, 0, 6430, 1312, 1, 0, 0, 0, 6431, 6437, 5, 34, 0, 0, 6432, 6433, 5, 34, 0, 0, 6433, 6436, 5, 34, 0, 0, 6434, 6436, 8, 36, 0, 0, 6435, 6432, 1, 0, 0, 0, 6435, 6434, 1, 0, 0, 0, 6436, 6439, 1, 0, 0, 0, 6437, 6435, 1, 0, 0, 0, 6437, 6438, 1, 0, 0, 0, 6438, 1314, 1, 0, 0, 0, 6439, 6437, 1, 0, 0, 0, 6440, 6441, 7, 22, 0, 0, 6441, 6442, 5, 38, 0, 0, 6442, 6443, 3, 1307, 651, 0, 6443, 1316, 1, 0, 0, 0, 6444, 6445, 7, 22, 0, 0, 6445, 6446, 5, 38, 0, 0, 6446, 6447, 3, 1309, 652, 0, 6447, 1318, 1, 0, 0, 0, 6448, 6449, 7, 22, 0, 0, 6449, 6450, 5, 38, 0, 0, 6450, 6451, 3, 1311, 653, 0, 6451, 1320, 1, 0, 0, 0, 6452, 6453, 7, 22, 0, 0, 6453, 6454, 5, 38, 0, 0, 6454, 6455, 3, 1313, 654, 0, 6455, 1322, 1, 0, 0, 0, 6456, 6457, 3, 1325, 660, 0, 6457, 6458, 5, 39, 0, 0, 6458, 1324, 1, 0, 0, 0, 6459, 6465, 5, 39, 0, 0, 6460, 6461, 5, 39, 0, 0, 6461, 6464, 5, 39, 0, 0, 6462, 6464, 8, 37, 0, 0, 6463, 6460, 1, 0, 0, 0, 6463, 6462, 1, 0, 0, 0, 6464, 6467, 1, 0, 0, 0, 6465, 6463, 1, 0, 0, 0, 6465, 6466, 1, 0, 0, 0, 6466, 1326, 1, 0, 0, 0, 6467, 6465, 1, 0, 0, 0, 6468, 6469, 7, 10, 0, 0, 6469, 6470, 5, 39, 0, 0, 6470, 6471, 1, 0, 0, 0, 6471, 6472, 6, 661, 2, 0, 6472, 6473, 6, 661, 3, 0, 6473, 1328, 1, 0, 0, 0, 6474, 6475, 3, 1331, 663, 0, 6475, 6476, 5, 39, 0, 0, 6476, 1330, 1, 0, 0, 0, 6477, 6478, 7, 22, 0, 0, 6478, 6479, 5, 38, 0, 0, 6479, 6480, 3, 1325, 660, 0, 6480, 1332, 1, 0, 0, 0, 6481, 6483, 5, 36, 0, 0, 6482, 6484, 3, 1335, 665, 0, 6483, 6482, 1, 0, 0, 0, 6483, 6484, 1, 0, 0, 0, 6484, 6485, 1, 0, 0, 0, 6485, 6486, 5, 36, 0, 0, 6486, 6487, 6, 664, 4, 0, 6487, 6488, 1, 0, 0, 0, 6488, 6489, 6, 664, 5, 0, 6489, 1334, 1, 0, 0, 0, 6490, 6494, 3, 1301, 648, 0, 6491, 6493, 3, 1305, 650, 0, 6492, 6491, 1, 0, 0, 0, 6493, 6496, 1, 0, 0, 0, 6494, 6492, 1, 0, 0, 0, 6494, 6495, 1, 0, 0, 0, 6495, 1336, 1, 0, 0, 0, 6496, 6494, 1, 0, 0, 0, 6497, 6498, 3, 1339, 667, 0, 6498, 6499, 5, 39, 0, 0, 6499, 1338, 1, 0, 0, 0, 6500, 6501, 7, 18, 0, 0, 6501, 6505, 5, 39, 0, 0, 6502, 6504, 7, 38, 0, 0, 6503, 6502, 1, 0, 0, 0, 6504, 6507, 1, 0, 0, 0, 6505, 6503, 1, 0, 0, 0, 6505, 6506, 1, 0, 0, 0, 6506, 1340, 1, 0, 0, 0, 6507, 6505, 1, 0, 0, 0, 6508, 6509, 3, 1343, 669, 0, 6509, 6510, 5, 39, 0, 0, 6510, 1342, 1, 0, 0, 0, 6511, 6512, 7, 18, 0, 0, 6512, 6513, 3, 1325, 660, 0, 6513, 1344, 1, 0, 0, 0, 6514, 6515, 3, 1347, 671, 0, 6515, 6516, 5, 39, 0, 0, 6516, 1346, 1, 0, 0, 0, 6517, 6518, 7, 26, 0, 0, 6518, 6522, 5, 39, 0, 0, 6519, 6521, 7, 39, 0, 0, 6520, 6519, 1, 0, 0, 0, 6521, 6524, 1, 0, 0, 0, 6522, 6520, 1, 0, 0, 0, 6522, 6523, 1, 0, 0, 0, 6523, 1348, 1, 0, 0, 0, 6524, 6522, 1, 0, 0, 0, 6525, 6526, 3, 1351, 673, 0, 6526, 6527, 5, 39, 0, 0, 6527, 1350, 1, 0, 0, 0, 6528, 6529, 7, 26, 0, 0, 6529, 6530, 3, 1325, 660, 0, 6530, 1352, 1, 0, 0, 0, 6531, 6532, 3, 1359, 677, 0, 6532, 1354, 1, 0, 0, 0, 6533, 6534, 3, 1359, 677, 0, 6534, 6535, 5, 46, 0, 0, 6535, 6536, 5, 46, 0, 0, 6536, 6537, 1, 0, 0, 0, 6537, 6538, 6, 675, 6, 0, 6538, 1356, 1, 0, 0, 0, 6539, 6540, 3, 1359, 677, 0, 6540, 6542, 5, 46, 0, 0, 6541, 6543, 3, 1359, 677, 0, 6542, 6541, 1, 0, 0, 0, 6542, 6543, 1, 0, 0, 0, 6543, 6549, 1, 0, 0, 0, 6544, 6546, 7, 10, 0, 0, 6545, 6547, 7, 1, 0, 0, 6546, 6545, 1, 0, 0, 0, 6546, 6547, 1, 0, 0, 0, 6547, 6548, 1, 0, 0, 0, 6548, 6550, 3, 1359, 677, 0, 6549, 6544, 1, 0, 0, 0, 6549, 6550, 1, 0, 0, 0, 6550, 6568, 1, 0, 0, 0, 6551, 6552, 5, 46, 0, 0, 6552, 6558, 3, 1359, 677, 0, 6553, 6555, 7, 10, 0, 0, 6554, 6556, 7, 1, 0, 0, 6555, 6554, 1, 0, 0, 0, 6555, 6556, 1, 0, 0, 0, 6556, 6557, 1, 0, 0, 0, 6557, 6559, 3, 1359, 677, 0, 6558, 6553, 1, 0, 0, 0, 6558, 6559, 1, 0, 0, 0, 6559, 6568, 1, 0, 0, 0, 6560, 6561, 3, 1359, 677, 0, 6561, 6563, 7, 10, 0, 0, 6562, 6564, 7, 1, 0, 0, 6563, 6562, 1, 0, 0, 0, 6563, 6564, 1, 0, 0, 0, 6564, 6565, 1, 0, 0, 0, 6565, 6566, 3, 1359, 677, 0, 6566, 6568, 1, 0, 0, 0, 6567, 6539, 1, 0, 0, 0, 6567, 6551, 1, 0, 0, 0, 6567, 6560, 1, 0, 0, 0, 6568, 1358, 1, 0, 0, 0, 6569, 6571, 7, 0, 0, 0, 6570, 6569, 1, 0, 0, 0, 6571, 6572, 1, 0, 0, 0, 6572, 6570, 1, 0, 0, 0, 6572, 6573, 1, 0, 0, 0, 6573, 1360, 1, 0, 0, 0, 6574, 6575, 5, 58, 0, 0, 6575, 6579, 7, 40, 0, 0, 6576, 6578, 7, 41, 0, 0, 6577, 6576, 1, 0, 0, 0, 6578, 6581, 1, 0, 0, 0, 6579, 6577, 1, 0, 0, 0, 6579, 6580, 1, 0, 0, 0, 6580, 1362, 1, 0, 0, 0, 6581, 6579, 1, 0, 0, 0, 6582, 6583, 5, 58, 0, 0, 6583, 6584, 5, 34, 0, 0, 6584, 6592, 1, 0, 0, 0, 6585, 6586, 5, 92, 0, 0, 6586, 6591, 9, 0, 0, 0, 6587, 6588, 5, 34, 0, 0, 6588, 6591, 5, 34, 0, 0, 6589, 6591, 8, 42, 0, 0, 6590, 6585, 1, 0, 0, 0, 6590, 6587, 1, 0, 0, 0, 6590, 6589, 1, 0, 0, 0, 6591, 6594, 1, 0, 0, 0, 6592, 6590, 1, 0, 0, 0, 6592, 6593, 1, 0, 0, 0, 6593, 6595, 1, 0, 0, 0, 6594, 6592, 1, 0, 0, 0, 6595, 6596, 5, 34, 0, 0, 6596, 1364, 1, 0, 0, 0, 6597, 6599, 7, 43, 0, 0, 6598, 6597, 1, 0, 0, 0, 6599, 6600, 1, 0, 0, 0, 6600, 6598, 1, 0, 0, 0, 6600, 6601, 1, 0, 0, 0, 6601, 6602, 1, 0, 0, 0, 6602, 6603, 6, 680, 7, 0, 6603, 1366, 1, 0, 0, 0, 6604, 6606, 5, 13, 0, 0, 6605, 6607, 5, 10, 0, 0, 6606, 6605, 1, 0, 0, 0, 6606, 6607, 1, 0, 0, 0, 6607, 6610, 1, 0, 0, 0, 6608, 6610, 5, 10, 0, 0, 6609, 6604, 1, 0, 0, 0, 6609, 6608, 1, 0, 0, 0, 6610, 6611, 1, 0, 0, 0, 6611, 6612, 6, 681, 7, 0, 6612, 1368, 1, 0, 0, 0, 6613, 6614, 5, 45, 0, 0, 6614, 6615, 5, 45, 0, 0, 6615, 6619, 1, 0, 0, 0, 6616, 6618, 8, 44, 0, 0, 6617, 6616, 1, 0, 0, 0, 6618, 6621, 1, 0, 0, 0, 6619, 6617, 1, 0, 0, 0, 6619, 6620, 1, 0, 0, 0, 6620, 6622, 1, 0, 0, 0, 6621, 6619, 1, 0, 0, 0, 6622, 6623, 6, 682, 7, 0, 6623, 1370, 1, 0, 0, 0, 6624, 6625, 5, 47, 0, 0, 6625, 6626, 5, 42, 0, 0, 6626, 6649, 1, 0, 0, 0, 6627, 6629, 5, 47, 0, 0, 6628, 6627, 1, 0, 0, 0, 6629, 6632, 1, 0, 0, 0, 6630, 6628, 1, 0, 0, 0, 6630, 6631, 1, 0, 0, 0, 6631, 6633, 1, 0, 0, 0, 6632, 6630, 1, 0, 0, 0, 6633, 6648, 3, 1371, 683, 0, 6634, 6648, 8, 45, 0, 0, 6635, 6637, 5, 47, 0, 0, 6636, 6635, 1, 0, 0, 0, 6637, 6638, 1, 0, 0, 0, 6638, 6636, 1, 0, 0, 0, 6638, 6639, 1, 0, 0, 0, 6639, 6640, 1, 0, 0, 0, 6640, 6648, 8, 45, 0, 0, 6641, 6643, 5, 42, 0, 0, 6642, 6641, 1, 0, 0, 0, 6643, 6644, 1, 0, 0, 0, 6644, 6642, 1, 0, 0, 0, 6644, 6645, 1, 0, 0, 0, 6645, 6646, 1, 0, 0, 0, 6646, 6648, 8, 45, 0, 0, 6647, 6630, 1, 0, 0, 0, 6647, 6634, 1, 0, 0, 0, 6647, 6636, 1, 0, 0, 0, 6647, 6642, 1, 0, 0, 0, 6648, 6651, 1, 0, 0, 0, 6649, 6647, 1, 0, 0, 0, 6649, 6650, 1, 0, 0, 0, 6650, 6655, 1, 0, 0, 0, 6651, 6649, 1, 0, 0, 0, 6652, 6654, 5, 42, 0, 0, 6653, 6652, 1, 0, 0, 0, 6654, 6657, 1, 0, 0, 0, 6655, 6653, 1, 0, 0, 0, 6655, 6656, 1, 0, 0, 0, 6656, 6658, 1, 0, 0, 0, 6657, 6655, 1, 0, 0, 0, 6658, 6659, 5, 42, 0, 0, 6659, 6660, 5, 47, 0, 0, 6660, 6661, 1, 0, 0, 0, 6661, 6662, 6, 683, 7, 0, 6662, 1372, 1, 0, 0, 0, 6663, 6664, 5, 47, 0, 0, 6664, 6665, 5, 42, 0, 0, 6665, 6690, 1, 0, 0, 0, 6666, 6668, 5, 47, 0, 0, 6667, 6666, 1, 0, 0, 0, 6668, 6671, 1, 0, 0, 0, 6669, 6667, 1, 0, 0, 0, 6669, 6670, 1, 0, 0, 0, 6670, 6672, 1, 0, 0, 0, 6671, 6669, 1, 0, 0, 0, 6672, 6689, 3, 1371, 683, 0, 6673, 6689, 8, 45, 0, 0, 6674, 6676, 5, 47, 0, 0, 6675, 6674, 1, 0, 0, 0, 6676, 6677, 1, 0, 0, 0, 6677, 6675, 1, 0, 0, 0, 6677, 6678, 1, 0, 0, 0, 6678, 6679, 1, 0, 0, 0, 6679, 6687, 8, 45, 0, 0, 6680, 6682, 5, 42, 0, 0, 6681, 6680, 1, 0, 0, 0, 6682, 6683, 1, 0, 0, 0, 6683, 6681, 1, 0, 0, 0, 6683, 6684, 1, 0, 0, 0, 6684, 6685, 1, 0, 0, 0, 6685, 6687, 8, 45, 0, 0, 6686, 6675, 1, 0, 0, 0, 6686, 6681, 1, 0, 0, 0, 6687, 6689, 1, 0, 0, 0, 6688, 6669, 1, 0, 0, 0, 6688, 6673, 1, 0, 0, 0, 6688, 6686, 1, 0, 0, 0, 6689, 6692, 1, 0, 0, 0, 6690, 6688, 1, 0, 0, 0, 6690, 6691, 1, 0, 0, 0, 6691, 6710, 1, 0, 0, 0, 6692, 6690, 1, 0, 0, 0, 6693, 6695, 5, 47, 0, 0, 6694, 6693, 1, 0, 0, 0, 6695, 6696, 1, 0, 0, 0, 6696, 6694, 1, 0, 0, 0, 6696, 6697, 1, 0, 0, 0, 6697, 6711, 1, 0, 0, 0, 6698, 6700, 5, 42, 0, 0, 6699, 6698, 1, 0, 0, 0, 6700, 6701, 1, 0, 0, 0, 6701, 6699, 1, 0, 0, 0, 6701, 6702, 1, 0, 0, 0, 6702, 6711, 1, 0, 0, 0, 6703, 6705, 5, 47, 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, 6709, 1, 0, 0, 0, 6708, 6706, 1, 0, 0, 0, 6709, 6711, 3, 1373, 684, 0, 6710, 6694, 1, 0, 0, 0, 6710, 6699, 1, 0, 0, 0, 6710, 6706, 1, 0, 0, 0, 6710, 6711, 1, 0, 0, 0, 6711, 6712, 1, 0, 0, 0, 6712, 6713, 6, 684, 8, 0, 6713, 1374, 1, 0, 0, 0, 6714, 6726, 5, 92, 0, 0, 6715, 6725, 8, 46, 0, 0, 6716, 6720, 5, 34, 0, 0, 6717, 6719, 8, 47, 0, 0, 6718, 6717, 1, 0, 0, 0, 6719, 6722, 1, 0, 0, 0, 6720, 6718, 1, 0, 0, 0, 6720, 6721, 1, 0, 0, 0, 6721, 6723, 1, 0, 0, 0, 6722, 6720, 1, 0, 0, 0, 6723, 6725, 5, 34, 0, 0, 6724, 6715, 1, 0, 0, 0, 6724, 6716, 1, 0, 0, 0, 6725, 6728, 1, 0, 0, 0, 6726, 6724, 1, 0, 0, 0, 6726, 6727, 1, 0, 0, 0, 6727, 6736, 1, 0, 0, 0, 6728, 6726, 1, 0, 0, 0, 6729, 6733, 5, 34, 0, 0, 6730, 6732, 8, 47, 0, 0, 6731, 6730, 1, 0, 0, 0, 6732, 6735, 1, 0, 0, 0, 6733, 6731, 1, 0, 0, 0, 6733, 6734, 1, 0, 0, 0, 6734, 6737, 1, 0, 0, 0, 6735, 6733, 1, 0, 0, 0, 6736, 6729, 1, 0, 0, 0, 6736, 6737, 1, 0, 0, 0, 6737, 1376, 1, 0, 0, 0, 6738, 6739, 5, 92, 0, 0, 6739, 6740, 5, 92, 0, 0, 6740, 1378, 1, 0, 0, 0, 6741, 6742, 9, 0, 0, 0, 6742, 1380, 1, 0, 0, 0, 6743, 6744, 3, 1385, 690, 0, 6744, 6745, 5, 39, 0, 0, 6745, 6746, 1, 0, 0, 0, 6746, 6747, 6, 688, 9, 0, 6747, 1382, 1, 0, 0, 0, 6748, 6750, 3, 1385, 690, 0, 6749, 6751, 5, 92, 0, 0, 6750, 6749, 1, 0, 0, 0, 6750, 6751, 1, 0, 0, 0, 6751, 6752, 1, 0, 0, 0, 6752, 6753, 5, 0, 0, 1, 6753, 1384, 1, 0, 0, 0, 6754, 6755, 5, 39, 0, 0, 6755, 6778, 5, 39, 0, 0, 6756, 6774, 5, 92, 0, 0, 6757, 6758, 5, 120, 0, 0, 6758, 6775, 7, 39, 0, 0, 6759, 6760, 5, 117, 0, 0, 6760, 6761, 7, 39, 0, 0, 6761, 6762, 7, 39, 0, 0, 6762, 6763, 7, 39, 0, 0, 6763, 6775, 7, 39, 0, 0, 6764, 6765, 5, 85, 0, 0, 6765, 6766, 7, 39, 0, 0, 6766, 6767, 7, 39, 0, 0, 6767, 6768, 7, 39, 0, 0, 6768, 6769, 7, 39, 0, 0, 6769, 6770, 7, 39, 0, 0, 6770, 6771, 7, 39, 0, 0, 6771, 6772, 7, 39, 0, 0, 6772, 6775, 7, 39, 0, 0, 6773, 6775, 8, 48, 0, 0, 6774, 6757, 1, 0, 0, 0, 6774, 6759, 1, 0, 0, 0, 6774, 6764, 1, 0, 0, 0, 6774, 6773, 1, 0, 0, 0, 6775, 6778, 1, 0, 0, 0, 6776, 6778, 8, 49, 0, 0, 6777, 6754, 1, 0, 0, 0, 6777, 6756, 1, 0, 0, 0, 6777, 6776, 1, 0, 0, 0, 6778, 6781, 1, 0, 0, 0, 6779, 6777, 1, 0, 0, 0, 6779, 6780, 1, 0, 0, 0, 6780, 1386, 1, 0, 0, 0, 6781, 6779, 1, 0, 0, 0, 6782, 6783, 3, 1391, 693, 0, 6783, 6784, 5, 39, 0, 0, 6784, 6785, 1, 0, 0, 0, 6785, 6786, 6, 691, 9, 0, 6786, 1388, 1, 0, 0, 0, 6787, 6789, 3, 1391, 693, 0, 6788, 6790, 5, 92, 0, 0, 6789, 6788, 1, 0, 0, 0, 6789, 6790, 1, 0, 0, 0, 6790, 6791, 1, 0, 0, 0, 6791, 6792, 5, 0, 0, 1, 6792, 1390, 1, 0, 0, 0, 6793, 6794, 5, 39, 0, 0, 6794, 6799, 5, 39, 0, 0, 6795, 6796, 5, 92, 0, 0, 6796, 6799, 9, 0, 0, 0, 6797, 6799, 8, 49, 0, 0, 6798, 6793, 1, 0, 0, 0, 6798, 6795, 1, 0, 0, 0, 6798, 6797, 1, 0, 0, 0, 6799, 6802, 1, 0, 0, 0, 6800, 6798, 1, 0, 0, 0, 6800, 6801, 1, 0, 0, 0, 6801, 1392, 1, 0, 0, 0, 6802, 6800, 1, 0, 0, 0, 6803, 6804, 3, 1365, 680, 0, 6804, 6805, 1, 0, 0, 0, 6805, 6806, 6, 694, 10, 0, 6806, 6807, 6, 694, 7, 0, 6807, 1394, 1, 0, 0, 0, 6808, 6809, 3, 1367, 681, 0, 6809, 6810, 1, 0, 0, 0, 6810, 6811, 6, 695, 11, 0, 6811, 6812, 6, 695, 7, 0, 6812, 6813, 6, 695, 12, 0, 6813, 1396, 1, 0, 0, 0, 6814, 6815, 6, 696, 13, 0, 6815, 6816, 1, 0, 0, 0, 6816, 6817, 6, 696, 14, 0, 6817, 6818, 6, 696, 15, 0, 6818, 1398, 1, 0, 0, 0, 6819, 6820, 3, 1365, 680, 0, 6820, 6821, 1, 0, 0, 0, 6821, 6822, 6, 697, 10, 0, 6822, 6823, 6, 697, 7, 0, 6823, 1400, 1, 0, 0, 0, 6824, 6825, 3, 1367, 681, 0, 6825, 6826, 1, 0, 0, 0, 6826, 6827, 6, 698, 11, 0, 6827, 6828, 6, 698, 7, 0, 6828, 1402, 1, 0, 0, 0, 6829, 6830, 5, 39, 0, 0, 6830, 6831, 1, 0, 0, 0, 6831, 6832, 6, 699, 2, 0, 6832, 6833, 6, 699, 16, 0, 6833, 1404, 1, 0, 0, 0, 6834, 6835, 6, 700, 17, 0, 6835, 6836, 1, 0, 0, 0, 6836, 6837, 6, 700, 14, 0, 6837, 6838, 6, 700, 15, 0, 6838, 1406, 1, 0, 0, 0, 6839, 6841, 8, 50, 0, 0, 6840, 6839, 1, 0, 0, 0, 6841, 6842, 1, 0, 0, 0, 6842, 6840, 1, 0, 0, 0, 6842, 6843, 1, 0, 0, 0, 6843, 6852, 1, 0, 0, 0, 6844, 6848, 5, 36, 0, 0, 6845, 6847, 8, 50, 0, 0, 6846, 6845, 1, 0, 0, 0, 6847, 6850, 1, 0, 0, 0, 6848, 6846, 1, 0, 0, 0, 6848, 6849, 1, 0, 0, 0, 6849, 6852, 1, 0, 0, 0, 6850, 6848, 1, 0, 0, 0, 6851, 6840, 1, 0, 0, 0, 6851, 6844, 1, 0, 0, 0, 6852, 1408, 1, 0, 0, 0, 6853, 6855, 5, 36, 0, 0, 6854, 6856, 3, 1335, 665, 0, 6855, 6854, 1, 0, 0, 0, 6855, 6856, 1, 0, 0, 0, 6856, 6857, 1, 0, 0, 0, 6857, 6858, 5, 36, 0, 0, 6858, 6859, 1, 0, 0, 0, 6859, 6860, 4, 702, 8, 0, 6860, 6861, 6, 702, 18, 0, 6861, 6862, 1, 0, 0, 0, 6862, 6863, 6, 702, 15, 0, 6863, 1410, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1478, 1484, 1486, 1491, 1495, 1497, 1500, 1509, 1511, 1516, 1521, 1523, 6397, 6406, 6410, 6414, 6423, 6425, 6435, 6437, 6463, 6465, 6483, 6494, 6505, 6522, 6542, 6546, 6549, 6555, 6558, 6563, 6567, 6572, 6579, 6590, 6592, 6600, 6606, 6609, 6619, 6630, 6638, 6644, 6647, 6649, 6655, 6669, 6677, 6683, 6686, 6688, 6690, 6696, 6701, 6706, 6710, 6720, 6724, 6726, 6733, 6736, 6750, 6774, 6777, 6779, 6789, 6798, 6800, 6842, 6848, 6851, 6855, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 664, 1, 5, 4, 0, 1, 675, 2, 0, 1, 0, 1, 684, 3, 2, 2, 0, 7, 671, 0, 7, 672, 0, 2, 3, 0, 1, 696, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 700, 5, 1, 702, 6] \ No newline at end of file diff --git a/incubator/binding-pgsql/gen/PostgreSqlLexer.java b/incubator/binding-pgsql/gen/PostgreSqlLexer.java index 1b20a09961..25408f96f9 100644 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.java +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.java @@ -32,117 +32,117 @@ 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, TOPIC=95, TOPICS=96, STREAM=97, - ZVIEW=98, ZVIEWS=99, TRAILING=100, TRUE_P=101, UNION=102, UNIQUE=103, - USER=104, USING=105, VARIADIC=106, WHEN=107, WHERE=108, WINDOW=109, WITH=110, - AUTHORIZATION=111, BINARY=112, COLLATION=113, CONCURRENTLY=114, CROSS=115, - CURRENT_SCHEMA=116, FREEZE=117, FULL=118, ILIKE=119, INNER_P=120, IS=121, - ISNULL=122, JOIN=123, LEFT=124, LIKE=125, NATURAL=126, NOTNULL=127, OUTER_P=128, - OVER=129, OVERLAPS=130, RIGHT=131, SIMILAR=132, VERBOSE=133, ABORT_P=134, - ABSOLUTE_P=135, ACCESS=136, ACTION=137, ADD_P=138, ADMIN=139, AFTER=140, - AGGREGATE=141, ALSO=142, ALTER=143, ALWAYS=144, ASSERTION=145, ASSIGNMENT=146, - AT=147, ATTRIBUTE=148, BACKWARD=149, BEFORE=150, BEGIN_P=151, BY=152, - CACHE=153, CALLED=154, CASCADE=155, CASCADED=156, CATALOG=157, CHAIN=158, - CHARACTERISTICS=159, CHECKPOINT=160, CLASS=161, CLOSE=162, CLUSTER=163, - COMMENT=164, COMMENTS=165, COMMIT=166, COMMITTED=167, CONFIGURATION=168, - CONNECTION=169, CONSTRAINTS=170, CONTENT_P=171, CONTINUE_P=172, CONVERSION_P=173, - COPY=174, COST=175, CSV=176, CURSOR=177, CYCLE=178, DATA_P=179, DATABASE=180, - DAY_P=181, DEALLOCATE=182, DECLARE=183, DEFAULTS=184, DEFERRED=185, DEFINER=186, - DELETE_P=187, DELIMITER=188, DELIMITERS=189, DICTIONARY=190, DISABLE_P=191, - DISCARD=192, DOCUMENT_P=193, DOMAIN_P=194, DOUBLE_P=195, DROP=196, EACH=197, - ENABLE_P=198, ENCODING=199, ENCRYPTED=200, ENUM_P=201, ESCAPE=202, EVENT=203, - EXCLUDE=204, EXCLUDING=205, EXCLUSIVE=206, EXECUTE=207, EXPLAIN=208, EXTENSION=209, - EXTERNAL=210, FAMILY=211, FIRST_P=212, FOLLOWING=213, FORCE=214, FORWARD=215, - FUNCTION=216, FUNCTIONS=217, GLOBAL=218, GRANTED=219, HANDLER=220, HEADER_P=221, - HOLD=222, HOUR_P=223, IDENTITY_P=224, IF_P=225, IMMEDIATE=226, IMMUTABLE=227, - IMPLICIT_P=228, INCLUDING=229, INCREMENT=230, INDEX=231, INDEXES=232, - INHERIT=233, INHERITS=234, INLINE_P=235, INSENSITIVE=236, INSERT=237, - INSTEAD=238, INVOKER=239, ISOLATION=240, KEY=241, LABEL=242, LANGUAGE=243, - LARGE_P=244, LAST_P=245, LEAKPROOF=246, LEVEL=247, LISTEN=248, LOAD=249, - LOCAL=250, LOCATION=251, LOCK_P=252, MAPPING=253, MATCH=254, MATCHED=255, - MATERIALIZED=256, MAXVALUE=257, MERGE=258, MINUTE_P=259, MINVALUE=260, - MODE=261, MONTH_P=262, MOVE=263, NAME_P=264, NAMES=265, NEXT=266, NO=267, - NOTHING=268, NOTIFY=269, NOWAIT=270, NULLS_P=271, OBJECT_P=272, OF=273, - OFF=274, OIDS=275, OPERATOR=276, OPTION=277, OPTIONS=278, OWNED=279, OWNER=280, - PARSER=281, PARTIAL=282, PARTITION=283, PASSING=284, PASSWORD=285, PLANS=286, - PRECEDING=287, PREPARE=288, PREPARED=289, PRESERVE=290, PRIOR=291, PRIVILEGES=292, - PROCEDURAL=293, PROCEDURE=294, PROGRAM=295, QUOTE=296, RANGE=297, READ=298, - REASSIGN=299, RECHECK=300, RECURSIVE=301, REF=302, REFRESH=303, REINDEX=304, - RELATIVE_P=305, RELEASE=306, RENAME=307, REPEATABLE=308, REPLACE=309, - REPLICA=310, RESET=311, RESTART=312, RESTRICT=313, RETURNS=314, REVOKE=315, - ROLE=316, ROLLBACK=317, ROWS=318, RULE=319, SAVEPOINT=320, SCHEMA=321, - SCROLL=322, SEARCH=323, SECOND_P=324, SECURITY=325, SEQUENCE=326, SEQUENCES=327, - SERIALIZABLE=328, SERVER=329, SESSION=330, SET=331, SHARE=332, SHOW=333, - SIMPLE=334, SNAPSHOT=335, STABLE=336, STANDALONE_P=337, START=338, STATEMENT=339, - STATISTICS=340, STDIN=341, STDOUT=342, STORAGE=343, STRICT_P=344, STRIP_P=345, - SYSID=346, SYSTEM_P=347, TABLES=348, TABLESPACE=349, TEMP=350, TEMPLATE=351, - TEMPORARY=352, TEXT_P=353, TRANSACTION=354, TRIGGER=355, TRUNCATE=356, - TRUSTED=357, TYPE_P=358, TYPES_P=359, UNBOUNDED=360, UNCOMMITTED=361, - UNENCRYPTED=362, UNKNOWN=363, UNLISTEN=364, UNLOGGED=365, UNTIL=366, UPDATE=367, - VACUUM=368, VALID=369, VALIDATE=370, VALIDATOR=371, VARYING=372, VERSION_P=373, - VIEW=374, VOLATILE=375, WHITESPACE_P=376, WITHOUT=377, WORK=378, WRAPPER=379, - WRITE=380, XML_P=381, YEAR_P=382, YES_P=383, ZONE=384, BETWEEN=385, BIGINT=386, - BIT=387, BOOLEAN_P=388, CHAR_P=389, CHARACTER=390, COALESCE=391, DEC=392, - DECIMAL_P=393, EXISTS=394, EXTRACT=395, FLOAT_P=396, GREATEST=397, INOUT=398, - INT_P=399, INTEGER=400, INTERVAL=401, LEAST=402, NATIONAL=403, NCHAR=404, - NONE=405, NULLIF=406, NUMERIC=407, OVERLAY=408, POSITION=409, PRECISION=410, - REAL=411, ROW=412, SETOF=413, SMALLINT=414, SUBSTRING=415, TIME=416, TIMESTAMP=417, - TREAT=418, TRIM=419, VALUES=420, VARCHAR=421, XMLATTRIBUTES=422, XMLCOMMENT=423, - XMLAGG=424, XML_IS_WELL_FORMED=425, XML_IS_WELL_FORMED_DOCUMENT=426, XML_IS_WELL_FORMED_CONTENT=427, - XPATH=428, XPATH_EXISTS=429, XMLCONCAT=430, XMLELEMENT=431, XMLEXISTS=432, - XMLFOREST=433, XMLPARSE=434, XMLPI=435, XMLROOT=436, XMLSERIALIZE=437, - CALL=438, CURRENT_P=439, ATTACH=440, DETACH=441, EXPRESSION=442, GENERATED=443, - LOGGED=444, STORED=445, INCLUDE=446, ROUTINE=447, TRANSFORM=448, IMPORT_P=449, - POLICY=450, METHOD=451, REFERENCING=452, NEW=453, OLD=454, VALUE_P=455, - SUBSCRIPTION=456, PUBLICATION=457, OUT_P=458, END_P=459, ROUTINES=460, - SCHEMAS=461, PROCEDURES=462, INPUT_P=463, SUPPORT=464, PARALLEL=465, SQL_P=466, - DEPENDS=467, OVERRIDING=468, CONFLICT=469, SKIP_P=470, LOCKED=471, TIES=472, - ROLLUP=473, CUBE=474, GROUPING=475, SETS=476, TABLESAMPLE=477, ORDINALITY=478, - XMLTABLE=479, COLUMNS=480, XMLNAMESPACES=481, ROWTYPE=482, NORMALIZED=483, - WITHIN=484, FILTER=485, GROUPS=486, OTHERS=487, NFC=488, NFD=489, NFKC=490, - NFKD=491, UESCAPE=492, VIEWS=493, NORMALIZE=494, DUMP=495, PRINT_STRICT_PARAMS=496, - VARIABLE_CONFLICT=497, ERROR=498, USE_VARIABLE=499, USE_COLUMN=500, ALIAS=501, - CONSTANT=502, PERFORM=503, GET=504, DIAGNOSTICS=505, STACKED=506, ELSIF=507, - WHILE=508, REVERSE=509, FOREACH=510, SLICE=511, EXIT=512, RETURN=513, - QUERY=514, RAISE=515, SQLSTATE=516, DEBUG=517, LOG=518, INFO=519, NOTICE=520, - WARNING=521, EXCEPTION=522, ASSERT=523, LOOP=524, OPEN=525, ABS=526, CBRT=527, - CEIL=528, CEILING=529, DEGREES=530, DIV=531, EXP=532, FACTORIAL=533, FLOOR=534, - GCD=535, LCM=536, LN=537, LOG10=538, MIN_SCALE=539, MOD=540, PI=541, POWER=542, - RADIANS=543, ROUND=544, SCALE=545, SIGN=546, SQRT=547, TRIM_SCALE=548, - TRUNC=549, WIDTH_BUCKET=550, RANDOM=551, SETSEED=552, ACOS=553, ACOSD=554, - ASIN=555, ASIND=556, ATAN=557, ATAND=558, ATAN2=559, ATAN2D=560, COS=561, - COSD=562, COT=563, COTD=564, SIN=565, SIND=566, TAN=567, TAND=568, SINH=569, - COSH=570, TANH=571, ASINH=572, ACOSH=573, ATANH=574, BIT_LENGTH=575, CHAR_LENGTH=576, - CHARACTER_LENGTH=577, LOWER=578, OCTET_LENGTH=579, UPPER=580, ASCII=581, - BTRIM=582, CHR=583, CONCAT=584, CONCAT_WS=585, FORMAT=586, INITCAP=587, - LENGTH=588, LPAD=589, LTRIM=590, MD5=591, PARSE_IDENT=592, PG_CLIENT_ENCODING=593, - QUOTE_IDENT=594, QUOTE_LITERAL=595, QUOTE_NULLABLE=596, REGEXP_COUNT=597, - REGEXP_INSTR=598, REGEXP_LIKE=599, REGEXP_MATCH=600, REGEXP_MATCHES=601, - REGEXP_REPLACE=602, REGEXP_SPLIT_TO_ARRAY=603, REGEXP_SPLIT_TO_TABLE=604, - REGEXP_SUBSTR=605, REPEAT=606, RPAD=607, RTRIM=608, SPLIT_PART=609, STARTS_WITH=610, - STRING_TO_ARRAY=611, STRING_TO_TABLE=612, STRPOS=613, SUBSTR=614, TO_ASCII=615, - TO_HEX=616, TRANSLATE=617, UNISTR=618, AGE=619, CLOCK_TIMESTAMP=620, DATE_BIN=621, - DATE_PART=622, DATE_TRUNC=623, ISFINITE=624, JUSTIFY_DAYS=625, JUSTIFY_HOURS=626, - JUSTIFY_INTERVAL=627, MAKE_DATE=628, MAKE_INTERVAL=629, MAKE_TIME=630, - MAKE_TIMESTAMP=631, MAKE_TIMESTAMPTZ=632, NOW=633, STATEMENT_TIMESTAMP=634, - TIMEOFDAY=635, TRANSACTION_TIMESTAMP=636, TO_TIMESTAMP=637, TO_CHAR=638, - TO_DATE=639, TO_NUMBER=640, Identifier=641, QuotedIdentifier=642, UnterminatedQuotedIdentifier=643, - InvalidQuotedIdentifier=644, InvalidUnterminatedQuotedIdentifier=645, - UnicodeQuotedIdentifier=646, UnterminatedUnicodeQuotedIdentifier=647, - InvalidUnicodeQuotedIdentifier=648, InvalidUnterminatedUnicodeQuotedIdentifier=649, - StringConstant=650, UnterminatedStringConstant=651, UnicodeEscapeStringConstant=652, - UnterminatedUnicodeEscapeStringConstant=653, BeginDollarStringConstant=654, - BinaryStringConstant=655, UnterminatedBinaryStringConstant=656, InvalidBinaryStringConstant=657, - InvalidUnterminatedBinaryStringConstant=658, HexadecimalStringConstant=659, - UnterminatedHexadecimalStringConstant=660, InvalidHexadecimalStringConstant=661, - InvalidUnterminatedHexadecimalStringConstant=662, Integral=663, NumericFail=664, - Numeric=665, PLSQLVARIABLENAME=666, PLSQLIDENTIFIER=667, Whitespace=668, - Newline=669, LineComment=670, BlockComment=671, UnterminatedBlockComment=672, - MetaCommand=673, EndMetaCommand=674, ErrorCharacter=675, EscapeStringConstant=676, - UnterminatedEscapeStringConstant=677, InvalidEscapeStringConstant=678, - InvalidUnterminatedEscapeStringConstant=679, AfterEscapeStringConstantMode_NotContinued=680, - AfterEscapeStringConstantWithNewlineMode_NotContinued=681, DollarText=682, - EndDollarStringConstant=683, AfterEscapeStringConstantWithNewlineMode_Continued=684; + SYMMETRIC=91, TABLE=92, ZTABLE=93, THEN=94, TO=95, DESCRIBE=96, TOPIC=97, + TOPICS=98, STREAM=99, ZVIEW=100, ZVIEWS=101, TRAILING=102, TRUE_P=103, + UNION=104, UNIQUE=105, USER=106, USING=107, VARIADIC=108, WHEN=109, WHERE=110, + WINDOW=111, WITH=112, AUTHORIZATION=113, BINARY=114, COLLATION=115, CONCURRENTLY=116, + CROSS=117, CURRENT_SCHEMA=118, FREEZE=119, FULL=120, ILIKE=121, INNER_P=122, + IS=123, ISNULL=124, JOIN=125, LEFT=126, LIKE=127, NATURAL=128, NOTNULL=129, + OUTER_P=130, OVER=131, OVERLAPS=132, RIGHT=133, SIMILAR=134, VERBOSE=135, + ABORT_P=136, ABSOLUTE_P=137, ACCESS=138, ACTION=139, ADD_P=140, ADMIN=141, + AFTER=142, AGGREGATE=143, ALSO=144, ALTER=145, ALWAYS=146, ASSERTION=147, + ASSIGNMENT=148, AT=149, ATTRIBUTE=150, BACKWARD=151, BEFORE=152, BEGIN_P=153, + BY=154, CACHE=155, CALLED=156, CASCADE=157, CASCADED=158, CATALOG=159, + CHAIN=160, CHARACTERISTICS=161, CHECKPOINT=162, CLASS=163, CLOSE=164, + CLUSTER=165, COMMENT=166, COMMENTS=167, COMMIT=168, COMMITTED=169, CONFIGURATION=170, + CONNECTION=171, CONSTRAINTS=172, CONTENT_P=173, CONTINUE_P=174, CONVERSION_P=175, + COPY=176, COST=177, CSV=178, CURSOR=179, CYCLE=180, DATA_P=181, DATABASE=182, + DAY_P=183, DEALLOCATE=184, DECLARE=185, DEFAULTS=186, DEFERRED=187, DEFINER=188, + DELETE_P=189, DELIMITER=190, DELIMITERS=191, DICTIONARY=192, DISABLE_P=193, + DISCARD=194, DOCUMENT_P=195, DOMAIN_P=196, DOUBLE_P=197, DROP=198, EACH=199, + ENABLE_P=200, ENCODING=201, ENCRYPTED=202, ENUM_P=203, ESCAPE=204, EVENT=205, + EXCLUDE=206, EXCLUDING=207, EXCLUSIVE=208, EXECUTE=209, EXPLAIN=210, EXTENSION=211, + EXTERNAL=212, FAMILY=213, FIRST_P=214, FOLLOWING=215, FORCE=216, FORWARD=217, + FUNCTION=218, FUNCTIONS=219, GLOBAL=220, GRANTED=221, HANDLER=222, HEADER_P=223, + HOLD=224, HOUR_P=225, IDENTITY_P=226, IF_P=227, IMMEDIATE=228, IMMUTABLE=229, + IMPLICIT_P=230, INCLUDING=231, INCREMENT=232, INDEX=233, INDEXES=234, + INHERIT=235, INHERITS=236, INLINE_P=237, INSENSITIVE=238, INSERT=239, + INSTEAD=240, INVOKER=241, ISOLATION=242, KEY=243, LABEL=244, LANGUAGE=245, + LARGE_P=246, LAST_P=247, LEAKPROOF=248, LEVEL=249, LISTEN=250, LOAD=251, + LOCAL=252, LOCATION=253, LOCK_P=254, MAPPING=255, MATCH=256, MATCHED=257, + MATERIALIZED=258, MAXVALUE=259, MERGE=260, MINUTE_P=261, MINVALUE=262, + MODE=263, MONTH_P=264, MOVE=265, NAME_P=266, NAMES=267, NEXT=268, NO=269, + NOTHING=270, NOTIFY=271, NOWAIT=272, NULLS_P=273, OBJECT_P=274, OF=275, + OFF=276, OIDS=277, OPERATOR=278, OPTION=279, OPTIONS=280, OWNED=281, OWNER=282, + PARSER=283, PARTIAL=284, PARTITION=285, PASSING=286, PASSWORD=287, PLANS=288, + PRECEDING=289, PREPARE=290, PREPARED=291, PRESERVE=292, PRIOR=293, PRIVILEGES=294, + PROCEDURAL=295, PROCEDURE=296, PROGRAM=297, QUOTE=298, RANGE=299, READ=300, + REASSIGN=301, RECHECK=302, RECURSIVE=303, REF=304, REFRESH=305, REINDEX=306, + RELATIVE_P=307, RELEASE=308, RENAME=309, REPEATABLE=310, REPLACE=311, + REPLICA=312, RESET=313, RESTART=314, RESTRICT=315, RETURNS=316, REVOKE=317, + ROLE=318, ROLLBACK=319, ROWS=320, RULE=321, SAVEPOINT=322, SCHEMA=323, + SCROLL=324, SEARCH=325, SECOND_P=326, SECURITY=327, SEQUENCE=328, SEQUENCES=329, + SERIALIZABLE=330, SERVER=331, SESSION=332, SET=333, SHARE=334, SHOW=335, + SIMPLE=336, SNAPSHOT=337, STABLE=338, STANDALONE_P=339, START=340, STATEMENT=341, + STATISTICS=342, STDIN=343, STDOUT=344, STORAGE=345, STRICT_P=346, STRIP_P=347, + SYSID=348, SYSTEM_P=349, TABLES=350, ZTABLES=351, TABLESPACE=352, TEMP=353, + TEMPLATE=354, TEMPORARY=355, TEXT_P=356, TRANSACTION=357, TRIGGER=358, + TRUNCATE=359, TRUSTED=360, TYPE_P=361, TYPES_P=362, UNBOUNDED=363, UNCOMMITTED=364, + UNENCRYPTED=365, UNKNOWN=366, UNLISTEN=367, UNLOGGED=368, UNTIL=369, UPDATE=370, + VACUUM=371, VALID=372, VALIDATE=373, VALIDATOR=374, VARYING=375, VERSION_P=376, + VIEW=377, VOLATILE=378, WHITESPACE_P=379, WITHOUT=380, WORK=381, WRAPPER=382, + WRITE=383, XML_P=384, YEAR_P=385, YES_P=386, ZONE=387, BETWEEN=388, BIGINT=389, + BIT=390, BOOLEAN_P=391, CHAR_P=392, CHARACTER=393, COALESCE=394, DEC=395, + DECIMAL_P=396, EXISTS=397, EXTRACT=398, FLOAT_P=399, GREATEST=400, INOUT=401, + INT_P=402, INTEGER=403, INTERVAL=404, LEAST=405, NATIONAL=406, NCHAR=407, + NONE=408, NULLIF=409, NUMERIC=410, OVERLAY=411, POSITION=412, PRECISION=413, + REAL=414, ROW=415, SETOF=416, SMALLINT=417, SUBSTRING=418, TIME=419, TIMESTAMP=420, + TREAT=421, TRIM=422, VALUES=423, VARCHAR=424, XMLATTRIBUTES=425, XMLCOMMENT=426, + XMLAGG=427, XML_IS_WELL_FORMED=428, XML_IS_WELL_FORMED_DOCUMENT=429, XML_IS_WELL_FORMED_CONTENT=430, + XPATH=431, XPATH_EXISTS=432, XMLCONCAT=433, XMLELEMENT=434, XMLEXISTS=435, + XMLFOREST=436, XMLPARSE=437, XMLPI=438, XMLROOT=439, XMLSERIALIZE=440, + CALL=441, CURRENT_P=442, ATTACH=443, DETACH=444, EXPRESSION=445, GENERATED=446, + LOGGED=447, STORED=448, INCLUDE=449, ROUTINE=450, TRANSFORM=451, IMPORT_P=452, + POLICY=453, METHOD=454, REFERENCING=455, NEW=456, OLD=457, VALUE_P=458, + SUBSCRIPTION=459, PUBLICATION=460, OUT_P=461, END_P=462, ROUTINES=463, + SCHEMAS=464, PROCEDURES=465, INPUT_P=466, SUPPORT=467, PARALLEL=468, SQL_P=469, + DEPENDS=470, OVERRIDING=471, CONFLICT=472, SKIP_P=473, LOCKED=474, TIES=475, + ROLLUP=476, CUBE=477, GROUPING=478, SETS=479, TABLESAMPLE=480, ORDINALITY=481, + XMLTABLE=482, COLUMNS=483, XMLNAMESPACES=484, ROWTYPE=485, NORMALIZED=486, + WITHIN=487, FILTER=488, GROUPS=489, OTHERS=490, NFC=491, NFD=492, NFKC=493, + NFKD=494, UESCAPE=495, VIEWS=496, NORMALIZE=497, DUMP=498, PRINT_STRICT_PARAMS=499, + VARIABLE_CONFLICT=500, ERROR=501, USE_VARIABLE=502, USE_COLUMN=503, ALIAS=504, + CONSTANT=505, PERFORM=506, GET=507, DIAGNOSTICS=508, STACKED=509, ELSIF=510, + WHILE=511, REVERSE=512, FOREACH=513, SLICE=514, EXIT=515, RETURN=516, + QUERY=517, RAISE=518, SQLSTATE=519, DEBUG=520, LOG=521, INFO=522, NOTICE=523, + WARNING=524, EXCEPTION=525, ASSERT=526, LOOP=527, OPEN=528, ABS=529, CBRT=530, + CEIL=531, CEILING=532, DEGREES=533, DIV=534, EXP=535, FACTORIAL=536, FLOOR=537, + GCD=538, LCM=539, LN=540, LOG10=541, MIN_SCALE=542, MOD=543, PI=544, POWER=545, + RADIANS=546, ROUND=547, SCALE=548, SIGN=549, SQRT=550, TRIM_SCALE=551, + TRUNC=552, WIDTH_BUCKET=553, RANDOM=554, SETSEED=555, ACOS=556, ACOSD=557, + ASIN=558, ASIND=559, ATAN=560, ATAND=561, ATAN2=562, ATAN2D=563, COS=564, + COSD=565, COT=566, COTD=567, SIN=568, SIND=569, TAN=570, TAND=571, SINH=572, + COSH=573, TANH=574, ASINH=575, ACOSH=576, ATANH=577, BIT_LENGTH=578, CHAR_LENGTH=579, + CHARACTER_LENGTH=580, LOWER=581, OCTET_LENGTH=582, UPPER=583, ASCII=584, + BTRIM=585, CHR=586, CONCAT=587, CONCAT_WS=588, FORMAT=589, INITCAP=590, + LENGTH=591, LPAD=592, LTRIM=593, MD5=594, PARSE_IDENT=595, PG_CLIENT_ENCODING=596, + QUOTE_IDENT=597, QUOTE_LITERAL=598, QUOTE_NULLABLE=599, REGEXP_COUNT=600, + REGEXP_INSTR=601, REGEXP_LIKE=602, REGEXP_MATCH=603, REGEXP_MATCHES=604, + REGEXP_REPLACE=605, REGEXP_SPLIT_TO_ARRAY=606, REGEXP_SPLIT_TO_TABLE=607, + REGEXP_SUBSTR=608, REPEAT=609, RPAD=610, RTRIM=611, SPLIT_PART=612, STARTS_WITH=613, + STRING_TO_ARRAY=614, STRING_TO_TABLE=615, STRPOS=616, SUBSTR=617, TO_ASCII=618, + TO_HEX=619, TRANSLATE=620, UNISTR=621, AGE=622, CLOCK_TIMESTAMP=623, DATE_BIN=624, + DATE_PART=625, DATE_TRUNC=626, ISFINITE=627, JUSTIFY_DAYS=628, JUSTIFY_HOURS=629, + JUSTIFY_INTERVAL=630, MAKE_DATE=631, MAKE_INTERVAL=632, MAKE_TIME=633, + MAKE_TIMESTAMP=634, MAKE_TIMESTAMPTZ=635, NOW=636, STATEMENT_TIMESTAMP=637, + TIMEOFDAY=638, TRANSACTION_TIMESTAMP=639, TO_TIMESTAMP=640, TO_CHAR=641, + TO_DATE=642, TO_NUMBER=643, Identifier=644, QuotedIdentifier=645, UnterminatedQuotedIdentifier=646, + InvalidQuotedIdentifier=647, InvalidUnterminatedQuotedIdentifier=648, + UnicodeQuotedIdentifier=649, UnterminatedUnicodeQuotedIdentifier=650, + InvalidUnicodeQuotedIdentifier=651, InvalidUnterminatedUnicodeQuotedIdentifier=652, + StringConstant=653, UnterminatedStringConstant=654, UnicodeEscapeStringConstant=655, + UnterminatedUnicodeEscapeStringConstant=656, BeginDollarStringConstant=657, + BinaryStringConstant=658, UnterminatedBinaryStringConstant=659, InvalidBinaryStringConstant=660, + InvalidUnterminatedBinaryStringConstant=661, HexadecimalStringConstant=662, + UnterminatedHexadecimalStringConstant=663, InvalidHexadecimalStringConstant=664, + InvalidUnterminatedHexadecimalStringConstant=665, Integral=666, NumericFail=667, + Numeric=668, PLSQLVARIABLENAME=669, PLSQLIDENTIFIER=670, Whitespace=671, + Newline=672, LineComment=673, BlockComment=674, UnterminatedBlockComment=675, + MetaCommand=676, EndMetaCommand=677, ErrorCharacter=678, EscapeStringConstant=679, + UnterminatedEscapeStringConstant=680, InvalidEscapeStringConstant=681, + InvalidUnterminatedEscapeStringConstant=682, AfterEscapeStringConstantMode_NotContinued=683, + AfterEscapeStringConstantWithNewlineMode_NotContinued=684, DollarText=685, + EndDollarStringConstant=686, AfterEscapeStringConstantWithNewlineMode_Continued=687; public static final int EscapeStringConstantMode=1, AfterEscapeStringConstantMode=2, AfterEscapeStringConstantWithNewlineMode=3, DollarQuotedStringMode=4; @@ -171,16 +171,16 @@ private static String[] makeRuleNames() { "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", "TOPICS", "STREAM", "ZVIEW", "ZVIEWS", "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", + "SELECT", "SESSION_USER", "SOME", "SYMMETRIC", "TABLE", "ZTABLE", "THEN", + "TO", "DESCRIBE", "TOPIC", "TOPICS", "STREAM", "ZVIEW", "ZVIEWS", "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", @@ -209,48 +209,48 @@ private static String[] makeRuleNames() { "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", + "TABLES", "ZTABLES", "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", @@ -292,26 +292,26 @@ 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'", "'TOPIC'", "'TOPICS'", - "'STREAM'", "'ZVIEW'", "'ZVIEWS'", "'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'", "'ZTABLE'", "'THEN'", "'TO'", "'DESCRIBE'", + "'TOPIC'", "'TOPICS'", "'STREAM'", "'ZVIEW'", "'ZVIEWS'", "'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'", @@ -335,19 +335,19 @@ private static String[] makeLiteralNames() { "'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'", + "'SYSTEM'", "'TABLES'", "'ZTABLES'", "'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'", @@ -410,16 +410,16 @@ private static String[] makeSymbolicNames() { "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", "TOPICS", "STREAM", "ZVIEW", "ZVIEWS", "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", + "SELECT", "SESSION_USER", "SOME", "SYMMETRIC", "TABLE", "ZTABLE", "THEN", + "TO", "DESCRIBE", "TOPIC", "TOPICS", "STREAM", "ZVIEW", "ZVIEWS", "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", @@ -448,48 +448,48 @@ private static String[] makeSymbolicNames() { "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", + "TABLES", "ZTABLES", "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", @@ -577,22 +577,22 @@ public void action(RuleContext _localctx, int ruleIndex, int actionIndex) { case 28: Operator_action((RuleContext)_localctx, actionIndex); break; - case 661: + case 664: BeginDollarStringConstant_action((RuleContext)_localctx, actionIndex); break; - case 672: + case 675: NumericFail_action((RuleContext)_localctx, actionIndex); break; - case 681: + case 684: UnterminatedBlockComment_action((RuleContext)_localctx, actionIndex); break; - case 693: + case 696: AfterEscapeStringConstantMode_NotContinued_action((RuleContext)_localctx, actionIndex); break; - case 697: + case 700: AfterEscapeStringConstantWithNewlineMode_NotContinued_action((RuleContext)_localctx, actionIndex); break; - case 699: + case 702: EndDollarStringConstant_action((RuleContext)_localctx, actionIndex); break; } @@ -655,9 +655,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 645: + case 648: return IdentifierStartChar_sempred((RuleContext)_localctx, predIndex); - case 699: + case 702: return EndDollarStringConstant_sempred((RuleContext)_localctx, predIndex); } return true; @@ -704,7 +704,7 @@ private boolean EndDollarStringConstant_sempred(RuleContext _localctx, int predI } private static final String _serializedATNSegment0 = - "\u0004\u0000\u02ac\u1ab2\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff"+ + "\u0004\u0000\u02af\u1ad0\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"+ @@ -925,7 +925,8 @@ private boolean EndDollarStringConstant_sempred(RuleContext _localctx, int predI "\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\u0002\u02b9\u0007\u02b9"+ - "\u0002\u02ba\u0007\u02ba\u0002\u02bb\u0007\u02bb\u0001\u0000\u0001\u0000"+ + "\u0002\u02ba\u0007\u02ba\u0002\u02bb\u0007\u02bb\u0002\u02bc\u0007\u02bc"+ + "\u0002\u02bd\u0007\u02bd\u0002\u02be\u0007\u02be\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"+ @@ -936,15 +937,15 @@ private boolean EndDollarStringConstant_sempred(RuleContext _localctx, int predI "\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\u05bf\b\u001b\u000b\u001b\f\u001b\u05c0\u0001\u001c\u0001"+ - "\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05c7\b\u001c\u000b\u001c\f"+ - "\u001c\u05c8\u0001\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u05ce\b\u001c"+ - "\u0001\u001c\u0001\u001c\u0004\u001c\u05d2\b\u001c\u000b\u001c\f\u001c"+ - "\u05d3\u0001\u001c\u0003\u001c\u05d7\b\u001c\u0001\u001c\u0001\u001c\u0001"+ - "\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0005\u001d\u05e0"+ - "\b\u001d\n\u001d\f\u001d\u05e3\t\u001d\u0001\u001d\u0001\u001d\u0003\u001d"+ - "\u05e7\b\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0004\u001d\u05ec\b"+ - "\u001d\u000b\u001d\f\u001d\u05ed\u0001\u001d\u0001\u001d\u0001\u001e\u0001"+ + "\u0004\u001b\u05c5\b\u001b\u000b\u001b\f\u001b\u05c6\u0001\u001c\u0001"+ + "\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05cd\b\u001c\u000b\u001c\f"+ + "\u001c\u05ce\u0001\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u05d4\b\u001c"+ + "\u0001\u001c\u0001\u001c\u0004\u001c\u05d8\b\u001c\u000b\u001c\f\u001c"+ + "\u05d9\u0001\u001c\u0003\u001c\u05dd\b\u001c\u0001\u001c\u0001\u001c\u0001"+ + "\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0005\u001d\u05e6"+ + "\b\u001d\n\u001d\f\u001d\u05e9\t\u001d\u0001\u001d\u0001\u001d\u0003\u001d"+ + "\u05ed\b\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0004\u001d\u05f2\b"+ + "\u001d\u000b\u001d\f\u001d\u05f3\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"+ @@ -993,4270 +994,4290 @@ private boolean EndDollarStringConstant_sempred(RuleContext _localctx, int predI "\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001"+ "\\\u0001\\\u0001]\u0001]\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\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001f\u0001f\u0001f\u0001"+ - "f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001g\u0001g\u0001g\u0001g\u0001"+ - "g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001i\u0001i\u0001"+ - "i\u0001i\u0001i\u0001i\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\u0001m\u0001"+ - "m\u0001n\u0001n\u0001n\u0001n\u0001n\u0001o\u0001o\u0001o\u0001o\u0001"+ - "o\u0001o\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001q\u0001"+ - "q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001"+ - "r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001"+ - "s\u0001s\u0001s\u0001s\u0001s\u0001t\u0001t\u0001t\u0001t\u0001t\u0001"+ - "t\u0001t\u0001t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001u\u0001"+ - "u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001v\u0001v\u0001"+ - "v\u0001v\u0001v\u0001v\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001"+ - "w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001x\u0001"+ - "x\u0001x\u0001x\u0001x\u0001x\u0001x\u0001y\u0001y\u0001y\u0001y\u0001"+ - "y\u0001z\u0001z\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\u007f\u0001\u007f"+ - "\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u0080\u0001\u0080\u0001\u0080"+ - "\u0001\u0080\u0001\u0080\u0001\u0081\u0001\u0081\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\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\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\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\u008a\u0001\u008a\u0001\u008a\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\u008c\u0001\u008c\u0001\u008d"+ - "\u0001\u008d\u0001\u008d\u0001\u008d\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\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\u0091\u0001\u0091"+ - "\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\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\u0095\u0001\u0095\u0001\u0096\u0001\u0096"+ - "\u0001\u0096\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\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\u0098\u0001\u0098\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\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\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\u009f\u0001\u009f\u0001\u009f"+ - "\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\u00a2\u0001\u00a2\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\u00a3\u0001\u00a3\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\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\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\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\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\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\u00ad"+ - "\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae"+ - "\u0001\u00ae\u0001\u00ae\u0001\u00af\u0001\u00af\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\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\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3"+ - "\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\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\u00b9\u0001\u00b9\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\u00bb\u0001\u00bb\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\u00bf"+ - "\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\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\u00c1"+ - "\u0001\u00c1\u0001\u00c2\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\u00c3\u0001\u00c4"+ - "\u0001\u00c4\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\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\u00c9\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\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\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\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\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\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\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\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\u00d8\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\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\u00db\u0001\u00db\u0001\u00dc"+ - "\u0001\u00dc\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\u00de\u0001\u00de\u0001\u00de"+ - "\u0001\u00df\u0001\u00df\u0001\u00df\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\u00e1\u0001\u00e1\u0001\u00e1"+ - "\u0001\u00e1\u0001\u00e1\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\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\u00e7\u0001\u00e7\u0001\u00e7"+ - "\u0001\u00e8\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\u00e9"+ - "\u0001\u00e9\u0001\u00e9\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\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\u00ed\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\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00f0\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\u00f2\u0001\u00f2\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\u00f3\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\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\u00f9\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\u00fa\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\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\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\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\u0103\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\u0105\u0001\u0106\u0001\u0106\u0001\u0106"+ - "\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0107\u0001\u0107"+ - "\u0001\u0107\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\u0109\u0001\u0109\u0001\u0109"+ - "\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010b"+ - "\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010c\u0001\u010c"+ - "\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010d\u0001\u010d"+ - "\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010e\u0001\u010e\u0001\u010e"+ - "\u0001\u010f\u0001\u010f\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\u0111\u0001\u0111\u0001\u0111\u0001\u0111\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\u0115\u0001\u0115\u0001\u0115\u0001\u0115"+ - "\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\u0117\u0001\u0117\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\u011a"+ - "\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\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\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\u011e\u0001\u011e"+ - "\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\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\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\u0127"+ - "\u0001\u0127\u0001\u0127\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\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\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\u012c\u0001\u012c\u0001\u012c"+ - "\u0001\u012c\u0001\u012c\u0001\u012c\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\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\u0130\u0001\u0130\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\u0133\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\u0137\u0001\u0137\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\u0139\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\u013b"+ - "\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\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\u013e"+ - "\u0001\u013e\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\u0141\u0001\u0141\u0001\u0141\u0001\u0141"+ - "\u0001\u0141\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\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\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\u0148\u0001\u0149"+ - "\u0001\u0149\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\u014a\u0001\u014a"+ - "\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b"+ - "\u0001\u014b\u0001\u014b\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\u014e\u0001\u014e"+ - "\u0001\u014e\u0001\u014e\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f"+ - "\u0001\u014f\u0001\u014f\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\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\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\u0156\u0001\u0156\u0001\u0156\u0001\u0157\u0001\u0157\u0001\u0157"+ - "\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\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\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\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\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\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\u0163\u0001\u0163\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\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\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\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169"+ - "\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\u016b\u0001\u016c\u0001\u016c"+ - "\u0001\u016c\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\u016d\u0001\u016d\u0001\u016d\u0001\u016e\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\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\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\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\u0175\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\u0178\u0001\u0178"+ - "\u0001\u0178\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179"+ - "\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\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\u017b"+ - "\u0001\u017b\u0001\u017b\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c"+ - "\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017d\u0001\u017d"+ - "\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017e\u0001\u017e\u0001\u017e"+ - "\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017f"+ - "\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u0180"+ - "\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0181\u0001\u0181\u0001\u0181"+ - "\u0001\u0181\u0001\u0181\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\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\u0189\u0001\u0189\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\u018a\u0001\u018a\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b"+ - "\u0001\u018c\u0001\u018c\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\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\u0190"+ - "\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\u0192\u0001\u0192\u0001\u0192\u0001\u0192"+ - "\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\u0194\u0001\u0194\u0001\u0194\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\u0196\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197"+ - "\u0001\u0197\u0001\u0197\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\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\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\u01a0\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\u01a2\u0001\u01a2\u0001\u01a2\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\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\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6"+ - "\u0001\u01a6\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\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\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\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\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\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\u01ae\u0001\u01ae\u0001\u01ae"+ - "\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\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\u01b0\u0001\u01b0\u0001\u01b0\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\u01b2\u0001\u01b2"+ - "\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\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\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\u01b7\u0001\u01b8\u0001\u01b8\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\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\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\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\u01c1"+ - "\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\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\u01c5\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\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\u01cb"+ - "\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb\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\u01cc"+ - "\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\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\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\u01d1\u0001\u01d1"+ - "\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\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\u01d6\u0001\u01d6\u0001\u01d6"+ - "\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\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d8\u0001\u01d8"+ - "\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8"+ - "\u0001\u01d8\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9"+ - "\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da"+ - "\u0001\u01da\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\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\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\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\u01e2\u0001\u01e2\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\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\u01e5\u0001\u01e6\u0001\u01e6"+ - "\u0001\u01e6\u0001\u01e6\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\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e9"+ - "\u0001\u01e9\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\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\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\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\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\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\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\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\u01f8\u0001\u01f8\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\u01fa"+ - "\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa"+ - "\u0001\u01fa\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\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\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff"+ - "\u0001\u01ff\u0001\u0200\u0001\u0200\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\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\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\u0206\u0001\u0206\u0001\u0207"+ - "\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\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\u020b\u0001\u020b"+ - "\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c"+ - "\u0001\u020c\u0001\u020c\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d"+ - "\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d"+ - "\u0001\u020e\u0001\u020e\u0001\u020e\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\u0212\u0001\u0212\u0001\u0212"+ - "\u0001\u0212\u0001\u0212\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213"+ - "\u0001\u0213\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\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\u0216"+ - "\u0001\u0216\u0001\u0216\u0001\u0216\u0001\u0217\u0001\u0217\u0001\u0217"+ - "\u0001\u0217\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218\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\u021a"+ - "\u0001\u021a\u0001\u021a\u0001\u021a\u0001\u021b\u0001\u021b\u0001\u021b"+ - "\u0001\u021b\u0001\u021c\u0001\u021c\u0001\u021c\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\u021e\u0001\u021e"+ - "\u0001\u021e\u0001\u021e\u0001\u021f\u0001\u021f\u0001\u021f\u0001\u021f"+ - "\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\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\u0225"+ - "\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0225\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\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\u0229\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u0229"+ - "\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u022a\u0001\u022a\u0001\u022a"+ - "\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022b\u0001\u022b"+ - "\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b"+ - "\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\u022f\u0001\u022f"+ - "\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\u0231\u0001\u0231\u0001\u0232\u0001\u0232\u0001\u0232"+ - "\u0001\u0232\u0001\u0232\u0001\u0232\u0001\u0233\u0001\u0233\u0001\u0233"+ - "\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0234\u0001\u0234"+ - "\u0001\u0234\u0001\u0234\u0001\u0235\u0001\u0235\u0001\u0235\u0001\u0235"+ - "\u0001\u0235\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\u0239\u0001\u0239\u0001\u0239\u0001\u0239"+ - "\u0001\u0239\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\u023d\u0001\u023d\u0001\u023d"+ - "\u0001\u023d\u0001\u023d\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e"+ - "\u0001\u023e\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\u0242\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0242"+ - "\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\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244"+ - "\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\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\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\u0248\u0001\u0248\u0001\u0248\u0001\u0248\u0001\u0248\u0001\u0248"+ - "\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249"+ - "\u0001\u024a\u0001\u024a\u0001\u024a\u0001\u024a\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\u024c\u0001\u024c\u0001\u024c\u0001\u024d\u0001\u024d\u0001\u024d"+ - "\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\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f"+ - "\u0001\u024f\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250"+ - "\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251"+ - "\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\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\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\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\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\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\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\u025d\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e"+ - "\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e"+ - "\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\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\u025f\u0001\u025f"+ - "\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u025f\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\u0260\u0001\u0260\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\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\u0265\u0001\u0265"+ - "\u0001\u0265\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\u0266"+ - "\u0001\u0266\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\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\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\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\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\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\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\u0274\u0001\u0274"+ - "\u0001\u0274\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\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\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\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\u027b\u0001\u027b\u0001\u027b\u0001\u027b"+ - "\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\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"+ - "\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f"+ - "\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f"+ - "\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\u0280\u0001\u0280\u0001\u0280\u0001\u0281\u0001\u0281\u0001\u0281"+ - "\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0282"+ - "\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282"+ - "\u0001\u0282\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283"+ - "\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0284"+ - "\u0001\u0284\u0005\u0284\u18de\b\u0284\n\u0284\f\u0284\u18e1\t\u0284\u0001"+ - "\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0003"+ - "\u0285\u18e9\b\u0285\u0001\u0286\u0001\u0286\u0003\u0286\u18ed\b\u0286"+ - "\u0001\u0287\u0001\u0287\u0003\u0287\u18f1\b\u0287\u0001\u0288\u0001\u0288"+ - "\u0001\u0288\u0001\u0289\u0001\u0289\u0001\u0289\u0001\u0289\u0005\u0289"+ - "\u18fa\b\u0289\n\u0289\f\u0289\u18fd\t\u0289\u0001\u028a\u0001\u028a\u0001"+ - "\u028a\u0001\u028b\u0001\u028b\u0001\u028b\u0001\u028b\u0005\u028b\u1906"+ - "\b\u028b\n\u028b\f\u028b\u1909\t\u028b\u0001\u028c\u0001\u028c\u0001\u028c"+ - "\u0001\u028c\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028e"+ - "\u0001\u028e\u0001\u028e\u0001\u028e\u0001\u028f\u0001\u028f\u0001\u028f"+ - "\u0001\u028f\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0291\u0001\u0291"+ - "\u0001\u0291\u0001\u0291\u0005\u0291\u1922\b\u0291\n\u0291\f\u0291\u1925"+ - "\t\u0291\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0292\u0001"+ - "\u0292\u0001\u0293\u0001\u0293\u0001\u0293\u0001\u0294\u0001\u0294\u0001"+ - "\u0294\u0001\u0294\u0001\u0295\u0001\u0295\u0003\u0295\u1936\b\u0295\u0001"+ - "\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0296\u0001"+ - "\u0296\u0005\u0296\u193f\b\u0296\n\u0296\f\u0296\u1942\t\u0296\u0001\u0297"+ - "\u0001\u0297\u0001\u0297\u0001\u0298\u0001\u0298\u0001\u0298\u0005\u0298"+ - "\u194a\b\u0298\n\u0298\f\u0298\u194d\t\u0298\u0001\u0299\u0001\u0299\u0001"+ - "\u0299\u0001\u029a\u0001\u029a\u0001\u029a\u0001\u029b\u0001\u029b\u0001"+ - "\u029b\u0001\u029c\u0001\u029c\u0001\u029c\u0005\u029c\u195b\b\u029c\n"+ - "\u029c\f\u029c\u195e\t\u029c\u0001\u029d\u0001\u029d\u0001\u029d\u0001"+ - "\u029e\u0001\u029e\u0001\u029e\u0001\u029f\u0001\u029f\u0001\u02a0\u0001"+ - "\u02a0\u0001\u02a0\u0001\u02a0\u0001\u02a0\u0001\u02a0\u0001\u02a1\u0001"+ - "\u02a1\u0001\u02a1\u0003\u02a1\u1971\b\u02a1\u0001\u02a1\u0001\u02a1\u0003"+ - "\u02a1\u1975\b\u02a1\u0001\u02a1\u0003\u02a1\u1978\b\u02a1\u0001\u02a1"+ - "\u0001\u02a1\u0001\u02a1\u0001\u02a1\u0003\u02a1\u197e\b\u02a1\u0001\u02a1"+ - "\u0003\u02a1\u1981\b\u02a1\u0001\u02a1\u0001\u02a1\u0001\u02a1\u0003\u02a1"+ - "\u1986\b\u02a1\u0001\u02a1\u0001\u02a1\u0003\u02a1\u198a\b\u02a1\u0001"+ - "\u02a2\u0004\u02a2\u198d\b\u02a2\u000b\u02a2\f\u02a2\u198e\u0001\u02a3"+ - "\u0001\u02a3\u0001\u02a3\u0005\u02a3\u1994\b\u02a3\n\u02a3\f\u02a3\u1997"+ - "\t\u02a3\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0001"+ - "\u02a4\u0001\u02a4\u0001\u02a4\u0005\u02a4\u19a1\b\u02a4\n\u02a4\f\u02a4"+ - "\u19a4\t\u02a4\u0001\u02a4\u0001\u02a4\u0001\u02a5\u0004\u02a5\u19a9\b"+ - "\u02a5\u000b\u02a5\f\u02a5\u19aa\u0001\u02a5\u0001\u02a5\u0001\u02a6\u0001"+ - "\u02a6\u0003\u02a6\u19b1\b\u02a6\u0001\u02a6\u0003\u02a6\u19b4\b\u02a6"+ - "\u0001\u02a6\u0001\u02a6\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7"+ - "\u0005\u02a7\u19bc\b\u02a7\n\u02a7\f\u02a7\u19bf\t\u02a7\u0001\u02a7\u0001"+ - "\u02a7\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0005\u02a8\u19c7"+ - "\b\u02a8\n\u02a8\f\u02a8\u19ca\t\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a8"+ - "\u0004\u02a8\u19cf\b\u02a8\u000b\u02a8\f\u02a8\u19d0\u0001\u02a8\u0001"+ - "\u02a8\u0004\u02a8\u19d5\b\u02a8\u000b\u02a8\f\u02a8\u19d6\u0001\u02a8"+ - "\u0005\u02a8\u19da\b\u02a8\n\u02a8\f\u02a8\u19dd\t\u02a8\u0001\u02a8\u0005"+ - "\u02a8\u19e0\b\u02a8\n\u02a8\f\u02a8\u19e3\t\u02a8\u0001\u02a8\u0001\u02a8"+ - "\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a9\u0001\u02a9\u0001\u02a9"+ - "\u0001\u02a9\u0005\u02a9\u19ee\b\u02a9\n\u02a9\f\u02a9\u19f1\t\u02a9\u0001"+ - "\u02a9\u0001\u02a9\u0001\u02a9\u0004\u02a9\u19f6\b\u02a9\u000b\u02a9\f"+ - "\u02a9\u19f7\u0001\u02a9\u0001\u02a9\u0004\u02a9\u19fc\b\u02a9\u000b\u02a9"+ - "\f\u02a9\u19fd\u0001\u02a9\u0003\u02a9\u1a01\b\u02a9\u0005\u02a9\u1a03"+ - "\b\u02a9\n\u02a9\f\u02a9\u1a06\t\u02a9\u0001\u02a9\u0004\u02a9\u1a09\b"+ - "\u02a9\u000b\u02a9\f\u02a9\u1a0a\u0001\u02a9\u0004\u02a9\u1a0e\b\u02a9"+ - "\u000b\u02a9\f\u02a9\u1a0f\u0001\u02a9\u0005\u02a9\u1a13\b\u02a9\n\u02a9"+ - "\f\u02a9\u1a16\t\u02a9\u0001\u02a9\u0003\u02a9\u1a19\b\u02a9\u0001\u02a9"+ - "\u0001\u02a9\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0005\u02aa"+ - "\u1a21\b\u02aa\n\u02aa\f\u02aa\u1a24\t\u02aa\u0001\u02aa\u0005\u02aa\u1a27"+ - "\b\u02aa\n\u02aa\f\u02aa\u1a2a\t\u02aa\u0001\u02aa\u0001\u02aa\u0005\u02aa"+ - "\u1a2e\b\u02aa\n\u02aa\f\u02aa\u1a31\t\u02aa\u0003\u02aa\u1a33\b\u02aa"+ - "\u0001\u02ab\u0001\u02ab\u0001\u02ab\u0001\u02ac\u0001\u02ac\u0001\u02ad"+ - "\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ae\u0001\u02ae"+ - "\u0003\u02ae\u1a41\b\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02af\u0001\u02af"+ - "\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af"+ - "\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af"+ - "\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af"+ - "\u0003\u02af\u1a59\b\u02af\u0001\u02af\u0005\u02af\u1a5c\b\u02af\n\u02af"+ - "\f\u02af\u1a5f\t\u02af\u0001\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b0"+ - "\u0001\u02b0\u0001\u02b1\u0001\u02b1\u0003\u02b1\u1a68\b\u02b1\u0001\u02b1"+ - "\u0001\u02b1\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2"+ - "\u0005\u02b2\u1a71\b\u02b2\n\u02b2\f\u02b2\u1a74\t\u02b2\u0001\u02b3\u0001"+ - "\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b4\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\u0001\u02b7\u0001\u02b7\u0001\u02b7\u0001"+ - "\u02b7\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001"+ - "\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02ba\u0004"+ - "\u02ba\u1a9b\b\u02ba\u000b\u02ba\f\u02ba\u1a9c\u0001\u02ba\u0001\u02ba"+ - "\u0005\u02ba\u1aa1\b\u02ba\n\u02ba\f\u02ba\u1aa4\t\u02ba\u0003\u02ba\u1aa6"+ - "\b\u02ba\u0001\u02bb\u0001\u02bb\u0003\u02bb\u1aaa\b\u02bb\u0001\u02bb"+ - "\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bb"+ - "\u0000\u0000\u02bc\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\u027f\u050b\u0280\u050d\u0281\u050f\u0000"+ - "\u0511\u0000\u0513\u0000\u0515\u0282\u0517\u0283\u0519\u0284\u051b\u0285"+ - "\u051d\u0286\u051f\u0287\u0521\u0288\u0523\u0289\u0525\u028a\u0527\u028b"+ - "\u0529\u0000\u052b\u028c\u052d\u028d\u052f\u028e\u0531\u0000\u0533\u028f"+ - "\u0535\u0290\u0537\u0291\u0539\u0292\u053b\u0293\u053d\u0294\u053f\u0295"+ - "\u0541\u0296\u0543\u0297\u0545\u0298\u0547\u0299\u0549\u0000\u054b\u029a"+ - "\u054d\u029b\u054f\u029c\u0551\u029d\u0553\u029e\u0555\u029f\u0557\u02a0"+ - "\u0559\u02a1\u055b\u02a2\u055d\u02a3\u055f\u02a4\u0561\u02a5\u0563\u0000"+ - "\u0565\u02a6\u0567\u02a7\u0569\u0000\u056b\u0000\u056d\u0000\u056f\u02a8"+ - "\u0571\u0000\u0573\u0000\u0575\u02ac\u0577\u02a9\u0579\u02aa\u057b\u02ab"+ - "\u0005\u0000\u0001\u0002\u0003\u00043\u0001\u000009\u0002\u0000++--\t"+ - "\u0000!!##%&**<@^^``||~~\u0002\u0000*+<>\b\u0000!!##%&?@^^``||~~\u0002"+ - "\u0000AAaa\u0002\u0000LLll\u0002\u0000NNnn\u0002\u0000YYyy\u0002\u0000"+ - "SSss\u0002\u0000EEee\u0002\u0000ZZzz\u0002\u0000DDdd\u0002\u0000RRrr\u0002"+ - "\u0000CCcc\u0002\u0000MMmm\u0002\u0000TTtt\u0002\u0000IIii\u0002\u0000"+ - "BBbb\u0002\u0000OOoo\u0002\u0000HHhh\u0002\u0000KKkk\u0002\u0000UUuu\u0002"+ - "\u0000GGgg\u0002\u0000PPpp\u0002\u0000FFff\u0002\u0000XXxx\u0002\u0000"+ - "VVvv\u0002\u0000WWww\u0002\u0000QQqq\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$"+ - "$\u1afa\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\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\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\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\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\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\u0509\u0001\u0000\u0000\u0000\u0000\u050b"+ - "\u0001\u0000\u0000\u0000\u0000\u050d\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\u052b\u0001\u0000\u0000\u0000\u0000\u052d"+ - "\u0001\u0000\u0000\u0000\u0000\u052f\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\u0543"+ - "\u0001\u0000\u0000\u0000\u0000\u0545\u0001\u0000\u0000\u0000\u0000\u0547"+ - "\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\u0000\u0559"+ - "\u0001\u0000\u0000\u0000\u0000\u055b\u0001\u0000\u0000\u0000\u0000\u055d"+ - "\u0001\u0000\u0000\u0000\u0001\u055f\u0001\u0000\u0000\u0000\u0001\u0561"+ - "\u0001\u0000\u0000\u0000\u0001\u0565\u0001\u0000\u0000\u0000\u0001\u0567"+ - "\u0001\u0000\u0000\u0000\u0002\u056b\u0001\u0000\u0000\u0000\u0002\u056d"+ - "\u0001\u0000\u0000\u0000\u0002\u056f\u0001\u0000\u0000\u0000\u0003\u0571"+ - "\u0001\u0000\u0000\u0000\u0003\u0573\u0001\u0000\u0000\u0000\u0003\u0575"+ - "\u0001\u0000\u0000\u0000\u0003\u0577\u0001\u0000\u0000\u0000\u0004\u0579"+ - "\u0001\u0000\u0000\u0000\u0004\u057b\u0001\u0000\u0000\u0000\u0005\u057d"+ - "\u0001\u0000\u0000\u0000\u0007\u057f\u0001\u0000\u0000\u0000\t\u0581\u0001"+ - "\u0000\u0000\u0000\u000b\u0583\u0001\u0000\u0000\u0000\r\u0585\u0001\u0000"+ - "\u0000\u0000\u000f\u0587\u0001\u0000\u0000\u0000\u0011\u0589\u0001\u0000"+ - "\u0000\u0000\u0013\u058b\u0001\u0000\u0000\u0000\u0015\u058d\u0001\u0000"+ - "\u0000\u0000\u0017\u058f\u0001\u0000\u0000\u0000\u0019\u0591\u0001\u0000"+ - "\u0000\u0000\u001b\u0593\u0001\u0000\u0000\u0000\u001d\u0595\u0001\u0000"+ - "\u0000\u0000\u001f\u0597\u0001\u0000\u0000\u0000!\u0599\u0001\u0000\u0000"+ - "\u0000#\u059b\u0001\u0000\u0000\u0000%\u059d\u0001\u0000\u0000\u0000\'"+ - "\u059f\u0001\u0000\u0000\u0000)\u05a2\u0001\u0000\u0000\u0000+\u05a5\u0001"+ - "\u0000\u0000\u0000-\u05a8\u0001\u0000\u0000\u0000/\u05ab\u0001\u0000\u0000"+ - "\u00001\u05ae\u0001\u0000\u0000\u00003\u05b1\u0001\u0000\u0000\u00005"+ - "\u05b4\u0001\u0000\u0000\u00007\u05b7\u0001\u0000\u0000\u00009\u05ba\u0001"+ - "\u0000\u0000\u0000;\u05bc\u0001\u0000\u0000\u0000=\u05d6\u0001\u0000\u0000"+ - "\u0000?\u05e1\u0001\u0000\u0000\u0000A\u05f1\u0001\u0000\u0000\u0000C"+ - "\u05f3\u0001\u0000\u0000\u0000E\u05f5\u0001\u0000\u0000\u0000G\u05f7\u0001"+ - "\u0000\u0000\u0000I\u05fb\u0001\u0000\u0000\u0000K\u0603\u0001\u0000\u0000"+ - "\u0000M\u060b\u0001\u0000\u0000\u0000O\u060f\u0001\u0000\u0000\u0000Q"+ - "\u0613\u0001\u0000\u0000\u0000S\u0619\u0001\u0000\u0000\u0000U\u061c\u0001"+ - "\u0000\u0000\u0000W\u0620\u0001\u0000\u0000\u0000Y\u062b\u0001\u0000\u0000"+ - "\u0000[\u0630\u0001\u0000\u0000\u0000]\u0635\u0001\u0000\u0000\u0000_"+ - "\u063a\u0001\u0000\u0000\u0000a\u0640\u0001\u0000\u0000\u0000c\u0648\u0001"+ - "\u0000\u0000\u0000e\u064f\u0001\u0000\u0000\u0000g\u065a\u0001\u0000\u0000"+ - "\u0000i\u0661\u0001\u0000\u0000\u0000k\u0671\u0001\u0000\u0000\u0000m"+ - "\u067e\u0001\u0000\u0000\u0000o\u068b\u0001\u0000\u0000\u0000q\u0698\u0001"+ - "\u0000\u0000\u0000s\u06aa\u0001\u0000\u0000\u0000u\u06b7\u0001\u0000\u0000"+ - "\u0000w\u06bf\u0001\u0000\u0000\u0000y\u06ca\u0001\u0000\u0000\u0000{"+ - "\u06cf\u0001\u0000\u0000\u0000}\u06d8\u0001\u0000\u0000\u0000\u007f\u06db"+ - "\u0001\u0000\u0000\u0000\u0081\u06e0\u0001\u0000\u0000\u0000\u0083\u06e7"+ - "\u0001\u0000\u0000\u0000\u0085\u06ed\u0001\u0000\u0000\u0000\u0087\u06f3"+ - "\u0001\u0000\u0000\u0000\u0089\u06f7\u0001\u0000\u0000\u0000\u008b\u06ff"+ - "\u0001\u0000\u0000\u0000\u008d\u0704\u0001\u0000\u0000\u0000\u008f\u070a"+ - "\u0001\u0000\u0000\u0000\u0091\u0710\u0001\u0000\u0000\u0000\u0093\u0717"+ - "\u0001\u0000\u0000\u0000\u0095\u071a\u0001\u0000\u0000\u0000\u0097\u0724"+ - "\u0001\u0000\u0000\u0000\u0099\u072e\u0001\u0000\u0000\u0000\u009b\u0733"+ - "\u0001\u0000\u0000\u0000\u009d\u073b\u0001\u0000\u0000\u0000\u009f\u0743"+ - "\u0001\u0000\u0000\u0000\u00a1\u0749\u0001\u0000\u0000\u0000\u00a3\u0753"+ - "\u0001\u0000\u0000\u0000\u00a5\u0762\u0001\u0000\u0000\u0000\u00a7\u0766"+ - "\u0001\u0000\u0000\u0000\u00a9\u076b\u0001\u0000\u0000\u0000\u00ab\u0772"+ - "\u0001\u0000\u0000\u0000\u00ad\u0775\u0001\u0000\u0000\u0000\u00af\u077a"+ - "\u0001\u0000\u0000\u0000\u00b1\u077d\u0001\u0000\u0000\u0000\u00b3\u0783"+ - "\u0001\u0000\u0000\u0000\u00b5\u078b\u0001\u0000\u0000\u0000\u00b7\u0793"+ - "\u0001\u0000\u0000\u0000\u00b9\u079e\u0001\u0000\u0000\u0000\u00bb\u07a8"+ - "\u0001\u0000\u0000\u0000\u00bd\u07af\u0001\u0000\u0000\u0000\u00bf\u07bc"+ - "\u0001\u0000\u0000\u0000\u00c1\u07c1\u0001\u0000\u0000\u0000\u00c3\u07cb"+ - "\u0001\u0000\u0000\u0000\u00c5\u07d1\u0001\u0000\u0000\u0000\u00c7\u07d6"+ - "\u0001\u0000\u0000\u0000\u00c9\u07d9\u0001\u0000\u0000\u0000\u00cb\u07df"+ - "\u0001\u0000\u0000\u0000\u00cd\u07e6\u0001\u0000\u0000\u0000\u00cf\u07ed"+ - "\u0001\u0000\u0000\u0000\u00d1\u07f3\u0001\u0000\u0000\u0000\u00d3\u07fa"+ - "\u0001\u0000\u0000\u0000\u00d5\u0803\u0001\u0000\u0000\u0000\u00d7\u0808"+ - "\u0001\u0000\u0000\u0000\u00d9\u080e\u0001\u0000\u0000\u0000\u00db\u0815"+ - "\u0001\u0000\u0000\u0000\u00dd\u081a\u0001\u0000\u0000\u0000\u00df\u0820"+ - "\u0001\u0000\u0000\u0000\u00e1\u0829\u0001\u0000\u0000\u0000\u00e3\u082e"+ - "\u0001\u0000\u0000\u0000\u00e5\u0834\u0001\u0000\u0000\u0000\u00e7\u083b"+ - "\u0001\u0000\u0000\u0000\u00e9\u0840\u0001\u0000\u0000\u0000\u00eb\u084e"+ - "\u0001\u0000\u0000\u0000\u00ed\u0855\u0001\u0000\u0000\u0000\u00ef\u085f"+ - "\u0001\u0000\u0000\u0000\u00f1\u086c\u0001\u0000\u0000\u0000\u00f3\u0872"+ - "\u0001\u0000\u0000\u0000\u00f5\u0881\u0001\u0000\u0000\u0000\u00f7\u0888"+ - "\u0001\u0000\u0000\u0000\u00f9\u088d\u0001\u0000\u0000\u0000\u00fb\u0893"+ - "\u0001\u0000\u0000\u0000\u00fd\u0899\u0001\u0000\u0000\u0000\u00ff\u089c"+ - "\u0001\u0000\u0000\u0000\u0101\u08a3\u0001\u0000\u0000\u0000\u0103\u08a8"+ - "\u0001\u0000\u0000\u0000\u0105\u08ad\u0001\u0000\u0000\u0000\u0107\u08b2"+ - "\u0001\u0000\u0000\u0000\u0109\u08ba\u0001\u0000\u0000\u0000\u010b\u08c2"+ - "\u0001\u0000\u0000\u0000\u010d\u08c8\u0001\u0000\u0000\u0000\u010f\u08cd"+ - "\u0001\u0000\u0000\u0000\u0111\u08d6\u0001\u0000\u0000\u0000\u0113\u08dc"+ - "\u0001\u0000\u0000\u0000\u0115\u08e4\u0001\u0000\u0000\u0000\u0117\u08ec"+ - "\u0001\u0000\u0000\u0000\u0119\u08f2\u0001\u0000\u0000\u0000\u011b\u08fb"+ - "\u0001\u0000\u0000\u0000\u011d\u0902\u0001\u0000\u0000\u0000\u011f\u0909"+ - "\u0001\u0000\u0000\u0000\u0121\u090d\u0001\u0000\u0000\u0000\u0123\u0913"+ - "\u0001\u0000\u0000\u0000\u0125\u0919\u0001\u0000\u0000\u0000\u0127\u0923"+ - "\u0001\u0000\u0000\u0000\u0129\u0928\u0001\u0000\u0000\u0000\u012b\u092e"+ - "\u0001\u0000\u0000\u0000\u012d\u0935\u0001\u0000\u0000\u0000\u012f\u093f"+ - "\u0001\u0000\u0000\u0000\u0131\u094a\u0001\u0000\u0000\u0000\u0133\u094d"+ - "\u0001\u0000\u0000\u0000\u0135\u0957\u0001\u0000\u0000\u0000\u0137\u0960"+ - "\u0001\u0000\u0000\u0000\u0139\u0967\u0001\u0000\u0000\u0000\u013b\u096d"+ - "\u0001\u0000\u0000\u0000\u013d\u0970\u0001\u0000\u0000\u0000\u013f\u0976"+ - "\u0001\u0000\u0000\u0000\u0141\u097d\u0001\u0000\u0000\u0000\u0143\u0985"+ - "\u0001\u0000\u0000\u0000\u0145\u098e\u0001\u0000\u0000\u0000\u0147\u0996"+ - "\u0001\u0000\u0000\u0000\u0149\u099c\u0001\u0000\u0000\u0000\u014b\u09ac"+ - "\u0001\u0000\u0000\u0000\u014d\u09b7\u0001\u0000\u0000\u0000\u014f\u09bd"+ - "\u0001\u0000\u0000\u0000\u0151\u09c3\u0001\u0000\u0000\u0000\u0153\u09cb"+ - "\u0001\u0000\u0000\u0000\u0155\u09d3\u0001\u0000\u0000\u0000\u0157\u09dc"+ - "\u0001\u0000\u0000\u0000\u0159\u09e3\u0001\u0000\u0000\u0000\u015b\u09ed"+ - "\u0001\u0000\u0000\u0000\u015d\u09fb\u0001\u0000\u0000\u0000\u015f\u0a06"+ - "\u0001\u0000\u0000\u0000\u0161\u0a12\u0001\u0000\u0000\u0000\u0163\u0a1a"+ - "\u0001\u0000\u0000\u0000\u0165\u0a23\u0001\u0000\u0000\u0000\u0167\u0a2e"+ - "\u0001\u0000\u0000\u0000\u0169\u0a33\u0001\u0000\u0000\u0000\u016b\u0a38"+ - "\u0001\u0000\u0000\u0000\u016d\u0a3c\u0001\u0000\u0000\u0000\u016f\u0a43"+ - "\u0001\u0000\u0000\u0000\u0171\u0a49\u0001\u0000\u0000\u0000\u0173\u0a4e"+ - "\u0001\u0000\u0000\u0000\u0175\u0a57\u0001\u0000\u0000\u0000\u0177\u0a5b"+ - "\u0001\u0000\u0000\u0000\u0179\u0a66\u0001\u0000\u0000\u0000\u017b\u0a6e"+ - "\u0001\u0000\u0000\u0000\u017d\u0a77\u0001\u0000\u0000\u0000\u017f\u0a80"+ - "\u0001\u0000\u0000\u0000\u0181\u0a88\u0001\u0000\u0000\u0000\u0183\u0a8f"+ - "\u0001\u0000\u0000\u0000\u0185\u0a99\u0001\u0000\u0000\u0000\u0187\u0aa4"+ - "\u0001\u0000\u0000\u0000\u0189\u0aaf\u0001\u0000\u0000\u0000\u018b\u0ab7"+ - "\u0001\u0000\u0000\u0000\u018d\u0abf\u0001\u0000\u0000\u0000\u018f\u0ac8"+ - "\u0001\u0000\u0000\u0000\u0191\u0acf\u0001\u0000\u0000\u0000\u0193\u0ad6"+ - "\u0001\u0000\u0000\u0000\u0195\u0adb\u0001\u0000\u0000\u0000\u0197\u0ae0"+ - "\u0001\u0000\u0000\u0000\u0199\u0ae7\u0001\u0000\u0000\u0000\u019b\u0af0"+ - "\u0001\u0000\u0000\u0000\u019d\u0afa\u0001\u0000\u0000\u0000\u019f\u0aff"+ - "\u0001\u0000\u0000\u0000\u01a1\u0b06\u0001\u0000\u0000\u0000\u01a3\u0b0c"+ - "\u0001\u0000\u0000\u0000\u01a5\u0b14\u0001\u0000\u0000\u0000\u01a7\u0b1e"+ - "\u0001\u0000\u0000\u0000\u01a9\u0b28\u0001\u0000\u0000\u0000\u01ab\u0b30"+ - "\u0001\u0000\u0000\u0000\u01ad\u0b38\u0001\u0000\u0000\u0000\u01af\u0b42"+ - "\u0001\u0000\u0000\u0000\u01b1\u0b4b\u0001\u0000\u0000\u0000\u01b3\u0b52"+ - "\u0001\u0000\u0000\u0000\u01b5\u0b58\u0001\u0000\u0000\u0000\u01b7\u0b62"+ - "\u0001\u0000\u0000\u0000\u01b9\u0b68\u0001\u0000\u0000\u0000\u01bb\u0b70"+ - "\u0001\u0000\u0000\u0000\u01bd\u0b79\u0001\u0000\u0000\u0000\u01bf\u0b83"+ - "\u0001\u0000\u0000\u0000\u01c1\u0b8a\u0001\u0000\u0000\u0000\u01c3\u0b92"+ - "\u0001\u0000\u0000\u0000\u01c5\u0b9a\u0001\u0000\u0000\u0000\u01c7\u0ba1"+ - "\u0001\u0000\u0000\u0000\u01c9\u0ba6\u0001\u0000\u0000\u0000\u01cb\u0bab"+ - "\u0001\u0000\u0000\u0000\u01cd\u0bb4\u0001\u0000\u0000\u0000\u01cf\u0bb7"+ - "\u0001\u0000\u0000\u0000\u01d1\u0bc1\u0001\u0000\u0000\u0000\u01d3\u0bcb"+ - "\u0001\u0000\u0000\u0000\u01d5\u0bd4\u0001\u0000\u0000\u0000\u01d7\u0bde"+ - "\u0001\u0000\u0000\u0000\u01d9\u0be8\u0001\u0000\u0000\u0000\u01db\u0bee"+ - "\u0001\u0000\u0000\u0000\u01dd\u0bf6\u0001\u0000\u0000\u0000\u01df\u0bfe"+ - "\u0001\u0000\u0000\u0000\u01e1\u0c07\u0001\u0000\u0000\u0000\u01e3\u0c0e"+ - "\u0001\u0000\u0000\u0000\u01e5\u0c1a\u0001\u0000\u0000\u0000\u01e7\u0c21"+ - "\u0001\u0000\u0000\u0000\u01e9\u0c29\u0001\u0000\u0000\u0000\u01eb\u0c31"+ - "\u0001\u0000\u0000\u0000\u01ed\u0c3b\u0001\u0000\u0000\u0000\u01ef\u0c3f"+ - "\u0001\u0000\u0000\u0000\u01f1\u0c45\u0001\u0000\u0000\u0000\u01f3\u0c4e"+ - "\u0001\u0000\u0000\u0000\u01f5\u0c54\u0001\u0000\u0000\u0000\u01f7\u0c59"+ - "\u0001\u0000\u0000\u0000\u01f9\u0c63\u0001\u0000\u0000\u0000\u01fb\u0c69"+ - "\u0001\u0000\u0000\u0000\u01fd\u0c70\u0001\u0000\u0000\u0000\u01ff\u0c75"+ - "\u0001\u0000\u0000\u0000\u0201\u0c7b\u0001\u0000\u0000\u0000\u0203\u0c84"+ - "\u0001\u0000\u0000\u0000\u0205\u0c89\u0001\u0000\u0000\u0000\u0207\u0c91"+ - "\u0001\u0000\u0000\u0000\u0209\u0c97\u0001\u0000\u0000\u0000\u020b\u0c9f"+ - "\u0001\u0000\u0000\u0000\u020d\u0cac\u0001\u0000\u0000\u0000\u020f\u0cb5"+ - "\u0001\u0000\u0000\u0000\u0211\u0cbb\u0001\u0000\u0000\u0000\u0213\u0cc2"+ - "\u0001\u0000\u0000\u0000\u0215\u0ccb\u0001\u0000\u0000\u0000\u0217\u0cd0"+ - "\u0001\u0000\u0000\u0000\u0219\u0cd6\u0001\u0000\u0000\u0000\u021b\u0cdb"+ - "\u0001\u0000\u0000\u0000\u021d\u0ce0\u0001\u0000\u0000\u0000\u021f\u0ce6"+ - "\u0001\u0000\u0000\u0000\u0221\u0ceb\u0001\u0000\u0000\u0000\u0223\u0cee"+ - "\u0001\u0000\u0000\u0000\u0225\u0cf6\u0001\u0000\u0000\u0000\u0227\u0cfd"+ - "\u0001\u0000\u0000\u0000\u0229\u0d04\u0001\u0000\u0000\u0000\u022b\u0d0a"+ - "\u0001\u0000\u0000\u0000\u022d\u0d11\u0001\u0000\u0000\u0000\u022f\u0d14"+ - "\u0001\u0000\u0000\u0000\u0231\u0d18\u0001\u0000\u0000\u0000\u0233\u0d1d"+ - "\u0001\u0000\u0000\u0000\u0235\u0d26\u0001\u0000\u0000\u0000\u0237\u0d2d"+ - "\u0001\u0000\u0000\u0000\u0239\u0d35\u0001\u0000\u0000\u0000\u023b\u0d3b"+ - "\u0001\u0000\u0000\u0000\u023d\u0d41\u0001\u0000\u0000\u0000\u023f\u0d48"+ - "\u0001\u0000\u0000\u0000\u0241\u0d50\u0001\u0000\u0000\u0000\u0243\u0d5a"+ - "\u0001\u0000\u0000\u0000\u0245\u0d62\u0001\u0000\u0000\u0000\u0247\u0d6b"+ - "\u0001\u0000\u0000\u0000\u0249\u0d71\u0001\u0000\u0000\u0000\u024b\u0d7b"+ - "\u0001\u0000\u0000\u0000\u024d\u0d83\u0001\u0000\u0000\u0000\u024f\u0d8c"+ - "\u0001\u0000\u0000\u0000\u0251\u0d95\u0001\u0000\u0000\u0000\u0253\u0d9b"+ - "\u0001\u0000\u0000\u0000\u0255\u0da6\u0001\u0000\u0000\u0000\u0257\u0db1"+ - "\u0001\u0000\u0000\u0000\u0259\u0dbb\u0001\u0000\u0000\u0000\u025b\u0dc3"+ - "\u0001\u0000\u0000\u0000\u025d\u0dc9\u0001\u0000\u0000\u0000\u025f\u0dcf"+ - "\u0001\u0000\u0000\u0000\u0261\u0dd4\u0001\u0000\u0000\u0000\u0263\u0ddd"+ - "\u0001\u0000\u0000\u0000\u0265\u0de5\u0001\u0000\u0000\u0000\u0267\u0def"+ - "\u0001\u0000\u0000\u0000\u0269\u0df3\u0001\u0000\u0000\u0000\u026b\u0dfb"+ - "\u0001\u0000\u0000\u0000\u026d\u0e03\u0001\u0000\u0000\u0000\u026f\u0e0c"+ - "\u0001\u0000\u0000\u0000\u0271\u0e14\u0001\u0000\u0000\u0000\u0273\u0e1b"+ - "\u0001\u0000\u0000\u0000\u0275\u0e26\u0001\u0000\u0000\u0000\u0277\u0e2e"+ - "\u0001\u0000\u0000\u0000\u0279\u0e36\u0001\u0000\u0000\u0000\u027b\u0e3c"+ - "\u0001\u0000\u0000\u0000\u027d\u0e44\u0001\u0000\u0000\u0000\u027f\u0e4d"+ - "\u0001\u0000\u0000\u0000\u0281\u0e55\u0001\u0000\u0000\u0000\u0283\u0e5c"+ - "\u0001\u0000\u0000\u0000\u0285\u0e61\u0001\u0000\u0000\u0000\u0287\u0e6a"+ - "\u0001\u0000\u0000\u0000\u0289\u0e6f\u0001\u0000\u0000\u0000\u028b\u0e74"+ - "\u0001\u0000\u0000\u0000\u028d\u0e7e\u0001\u0000\u0000\u0000\u028f\u0e85"+ - "\u0001\u0000\u0000\u0000\u0291\u0e8c\u0001\u0000\u0000\u0000\u0293\u0e93"+ - "\u0001\u0000\u0000\u0000\u0295\u0e9a\u0001\u0000\u0000\u0000\u0297\u0ea3"+ - "\u0001\u0000\u0000\u0000\u0299\u0eac\u0001\u0000\u0000\u0000\u029b\u0eb6"+ - "\u0001\u0000\u0000\u0000\u029d\u0ec3\u0001\u0000\u0000\u0000\u029f\u0eca"+ - "\u0001\u0000\u0000\u0000\u02a1\u0ed2\u0001\u0000\u0000\u0000\u02a3\u0ed6"+ - "\u0001\u0000\u0000\u0000\u02a5\u0edc\u0001\u0000\u0000\u0000\u02a7\u0ee1"+ - "\u0001\u0000\u0000\u0000\u02a9\u0ee8\u0001\u0000\u0000\u0000\u02ab\u0ef1"+ - "\u0001\u0000\u0000\u0000\u02ad\u0ef8\u0001\u0000\u0000\u0000\u02af\u0f03"+ - "\u0001\u0000\u0000\u0000\u02b1\u0f09\u0001\u0000\u0000\u0000\u02b3\u0f13"+ - "\u0001\u0000\u0000\u0000\u02b5\u0f1e\u0001\u0000\u0000\u0000\u02b7\u0f24"+ - "\u0001\u0000\u0000\u0000\u02b9\u0f2b\u0001\u0000\u0000\u0000\u02bb\u0f33"+ - "\u0001\u0000\u0000\u0000\u02bd\u0f3a\u0001\u0000\u0000\u0000\u02bf\u0f40"+ - "\u0001\u0000\u0000\u0000\u02c1\u0f46\u0001\u0000\u0000\u0000\u02c3\u0f4d"+ - "\u0001\u0000\u0000\u0000\u02c5\u0f54\u0001\u0000\u0000\u0000\u02c7\u0f5f"+ - "\u0001\u0000\u0000\u0000\u02c9\u0f64\u0001\u0000\u0000\u0000\u02cb\u0f6d"+ - "\u0001\u0000\u0000\u0000\u02cd\u0f77\u0001\u0000\u0000\u0000\u02cf\u0f7c"+ - "\u0001\u0000\u0000\u0000\u02d1\u0f88\u0001\u0000\u0000\u0000\u02d3\u0f90"+ - "\u0001\u0000\u0000\u0000\u02d5\u0f99\u0001\u0000"; + "_\u0001_\u0001_\u0001`\u0001`\u0001`\u0001`\u0001`\u0001`\u0001`\u0001"+ + "a\u0001a\u0001a\u0001a\u0001a\u0001b\u0001b\u0001b\u0001c\u0001c\u0001"+ + "c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001d\u0001d\u0001d\u0001"+ + "d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001"+ + "f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001g\u0001"+ + "g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001"+ + "i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001j\u0001"+ + "j\u0001j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+ + "l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001m\u0001"+ + "m\u0001m\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001o\u0001o\u0001"+ + "o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001p\u0001p\u0001p\u0001"+ + "p\u0001p\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001"+ + "r\u0001r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001s\u0001s\u0001s\u0001"+ + "t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001"+ + "t\u0001t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001"+ + "u\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001"+ + "v\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001"+ + "w\u0001w\u0001w\u0001w\u0001x\u0001x\u0001x\u0001x\u0001x\u0001x\u0001"+ + "y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001"+ + "y\u0001y\u0001y\u0001y\u0001y\u0001z\u0001z\u0001z\u0001z\u0001z\u0001"+ + "z\u0001z\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\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\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\u0084\u0001\u0084\u0001\u0085\u0001\u0085\u0001\u0085\u0001"+ + "\u0085\u0001\u0085\u0001\u0085\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\u0089\u0001"+ + "\u0089\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\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\u008c\u0001\u008c\u0001\u008c\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"+ + "\u008e\u0001\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\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"+ + "\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\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\u0096\u0001\u0096\u0001"+ + "\u0096\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\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\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"+ + "\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\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\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"+ + "\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\u00a4\u0001"+ + "\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001"+ + "\u00a4\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"+ + "\u00a5\u0001\u00a5\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\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\u00ac\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\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ae\u0001\u00ae\u0001"+ + "\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001"+ + "\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00af\u0001\u00af\u0001\u00af\u0001"+ + "\u00af\u0001\u00af\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\u00b0\u0001\u00b0\u0001\u00b1\u0001"+ + "\u00b1\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\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\u00b5\u0001"+ + "\u00b5\u0001\u00b5\u0001\u00b5\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\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\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\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\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\u00c1\u0001\u00c1\u0001\u00c1\u0001"+ + "\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\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"+ + "\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c4\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\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\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"+ + "\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\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\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"+ + "\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\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"+ + "\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\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"+ + "\u00d6\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\u00da\u0001"+ + "\u00da\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\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"+ + "\u00dd\u0001\u00dd\u0001\u00de\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\u00df\u0001\u00df\u0001\u00df\u0001"+ + "\u00df\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\u00e2\u0001"+ + "\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001"+ + "\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\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\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e7\u0001\u00e7\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\u00e8\u0001"+ + "\u00e9\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"+ + "\u00ea\u0001\u00eb\u0001\u00eb\u0001\u00eb\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\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\u00ef\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\u00f1\u0001\u00f1\u0001\u00f1\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\u00f2\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\u00f4\u0001\u00f4\u0001"+ + "\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001"+ + "\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\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\u00f8\u0001\u00f8\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"+ + "\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\u00fe\u0001\u00fe\u0001\u00fe\u0001"+ + "\u00fe\u0001\u00fe\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\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"+ + "\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\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001"+ + "\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001"+ + "\u0105\u0001\u0105\u0001\u0105\u0001\u0106\u0001\u0106\u0001\u0106\u0001"+ + "\u0106\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\u0108\u0001"+ + "\u0108\u0001\u0109\u0001\u0109\u0001\u0109\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"+ + "\u010b\u0001\u010b\u0001\u010b\u0001\u010c\u0001\u010c\u0001\u010c\u0001"+ + "\u010c\u0001\u010c\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001"+ + "\u010d\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001"+ + "\u010e\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001"+ + "\u0110\u0001\u0110\u0001\u0110\u0001\u0111\u0001\u0111\u0001\u0111\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"+ + "\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\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001"+ + "\u0115\u0001\u0115\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0117\u0001"+ + "\u0117\u0001\u0117\u0001\u0117\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\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\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001"+ + "\u011c\u0001\u011c\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\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\u0120\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"+ + "\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\u0127\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\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\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\u012c\u0001\u012c\u0001\u012c\u0001\u012c\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"+ + "\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\u0130\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"+ + "\u0132\u0001\u0132\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\u0135\u0001\u0135\u0001\u0136\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\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\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"+ + "\u013b\u0001\u013c\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\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\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\u0142\u0001\u0142\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\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\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\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\u014a\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\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"+ + "\u014c\u0001\u014c\u0001\u014c\u0001\u014d\u0001\u014d\u0001\u014d\u0001"+ + "\u014d\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\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0151\u0001"+ + "\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\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\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\u0155\u0001\u0156\u0001\u0156\u0001\u0156\u0001"+ + "\u0156\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\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001"+ + "\u0159\u0001\u0159\u0001\u0159\u0001\u0159\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\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\u015c\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\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\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\u0163\u0001\u0163\u0001\u0163\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\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\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"+ + "\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\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"+ + "\u016e\u0001\u016e\u0001\u016e\u0001\u016f\u0001\u016f\u0001\u016f\u0001"+ + "\u016f\u0001\u016f\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\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\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\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"+ + "\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\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"+ + "\u0179\u0001\u0179\u0001\u017a\u0001\u017a\u0001\u017a\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\u017d\u0001"+ + "\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001"+ + "\u017d\u0001\u017d\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001"+ + "\u017e\u0001\u017e\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\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\u0183\u0001\u0183\u0001"+ + "\u0183\u0001\u0183\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001"+ + "\u0184\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0185\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"+ + "\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001"+ + "\u0188\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u018a\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"+ + "\u018c\u0001\u018c\u0001\u018c\u0001\u018c\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\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\u0190\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\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\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\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\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\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\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\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\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"+ + "\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\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\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\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\u01ac\u0001\u01ac\u0001\u01ac\u0001"+ + "\u01ac\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\u01af\u0001"+ + "\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001"+ + "\u01af\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\u01b0\u0001\u01b0\u0001"+ + "\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\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\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001"+ + "\u01b1\u0001\u01b1\u0001\u01b1\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\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\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\u01b6\u0001"+ + "\u01b6\u0001\u01b6\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\u01b7\u0001\u01b7\u0001"+ + "\u01b7\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\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\u01bb\u0001\u01bb\u0001"+ + "\u01bb\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\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\u01c0\u0001\u01c1\u0001\u01c1\u0001\u01c1\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\u01c5\u0001"+ + "\u01c5\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\u01c7\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\u01c9\u0001\u01c9\u0001\u01c9\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\u01ca\u0001"+ + "\u01ca\u0001\u01ca\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb\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"+ + "\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\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01d0\u0001"+ + "\u01d0\u0001\u01d0\u0001\u01d0\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\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\u01d6\u0001"+ + "\u01d6\u0001\u01d6\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\u01d7\u0001\u01d7\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\u01da\u0001\u01da\u0001"+ + "\u01da\u0001\u01da\u0001\u01da\u0001\u01da\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"+ + "\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\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\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\u01e3\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\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001"+ + "\u01e5\u0001\u01e5\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\u01e6\u0001\u01e7\u0001"+ + "\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001"+ + "\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001"+ + "\u01e7\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001"+ + "\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001"+ + "\u01e9\u0001\u01e9\u0001\u01e9\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\u01eb\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\u01ed\u0001"+ + "\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001"+ + "\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ef\u0001\u01ef\u0001"+ + "\u01ef\u0001\u01ef\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001"+ + "\u01f0\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\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"+ + "\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\u01f6\u0001\u01f6\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\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\u01f9\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\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\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\u01ff\u0001\u01ff\u0001"+ + "\u01ff\u0001\u01ff\u0001\u01ff\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\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"+ + "\u0203\u0001\u0203\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\u0205\u0001\u0205\u0001"+ + "\u0205\u0001\u0205\u0001\u0205\u0001\u0205\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\u0208\u0001\u0208\u0001"+ + "\u0208\u0001\u0208\u0001\u0208\u0001\u0208\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\u020b\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\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\u0210\u0001\u0210\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\u0213\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\u0216\u0001\u0216\u0001\u0216\u0001\u0216\u0001\u0216\u0001"+ + "\u0217\u0001\u0217\u0001\u0217\u0001\u0217\u0001\u0217\u0001\u0217\u0001"+ + "\u0217\u0001\u0217\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0001"+ + "\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0219\u0001\u0219\u0001"+ + "\u0219\u0001\u0219\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\u021c\u0001\u021c\u0001\u021d\u0001\u021d\u0001"+ + "\u021d\u0001\u021d\u0001\u021e\u0001\u021e\u0001\u021e\u0001\u021e\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\u0221\u0001\u0221\u0001\u0221\u0001"+ + "\u0221\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0223\u0001"+ + "\u0223\u0001\u0223\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\u0225\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\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\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001"+ + "\u022a\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001"+ + "\u022b\u0001\u022c\u0001\u022c\u0001\u022c\u0001\u022c\u0001\u022c\u0001"+ + "\u022c\u0001\u022c\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\u022d\u0001\u022e\u0001\u022e\u0001\u022e\u0001"+ + "\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022f\u0001"+ + "\u022f\u0001\u022f\u0001\u022f\u0001\u022f\u0001\u0230\u0001\u0230\u0001"+ + "\u0230\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0231\u0001\u0231\u0001"+ + "\u0231\u0001\u0231\u0001\u0231\u0001\u0232\u0001\u0232\u0001\u0232\u0001"+ + "\u0232\u0001\u0232\u0001\u0232\u0001\u0233\u0001\u0233\u0001\u0233\u0001"+ + "\u0233\u0001\u0233\u0001\u0234\u0001\u0234\u0001\u0234\u0001\u0234\u0001"+ + "\u0234\u0001\u0234\u0001\u0235\u0001\u0235\u0001\u0235\u0001\u0235\u0001"+ + "\u0235\u0001\u0235\u0001\u0236\u0001\u0236\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\u023a\u0001\u023a\u0001"+ + "\u023a\u0001\u023a\u0001\u023a\u0001\u023b\u0001\u023b\u0001\u023b\u0001"+ + "\u023b\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001"+ + "\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023e\u0001\u023e\u0001"+ + "\u023e\u0001\u023e\u0001\u023e\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+ + "\u023f\u0001\u023f\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001"+ + "\u0240\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\u0245\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\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\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\u0249\u0001\u0249\u0001"+ + "\u0249\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\u024b\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\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\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"+ + "\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0254\u0001"+ + "\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\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\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"+ + "\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\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\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\u025e\u0001"+ + "\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\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\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\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\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\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\u0264\u0001\u0264\u0001"+ + "\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0265\u0001"+ + "\u0265\u0001\u0265\u0001\u0265\u0001\u0265\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\u0267\u0001\u0268\u0001\u0268\u0001\u0268\u0001"+ + "\u0268\u0001\u0268\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\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\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"+ + "\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\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\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\u0272\u0001\u0272\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"+ + "\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\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\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\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\u027b\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\u027d\u0001\u027d\u0001"+ + "\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001"+ + "\u027e\u0001\u027e\u0001\u027e\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\u0280\u0001\u0280\u0001\u0280\u0001"+ + "\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001"+ + "\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001"+ + "\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0281\u0001"+ + "\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001"+ + "\u0281\u0001\u0281\u0001\u0281\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ + "\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ + "\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ + "\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ + "\u0282\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001"+ + "\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001"+ + "\u0283\u0001\u0283\u0001\u0284\u0001\u0284\u0001\u0284\u0001\u0284\u0001"+ + "\u0284\u0001\u0284\u0001\u0284\u0001\u0284\u0001\u0285\u0001\u0285\u0001"+ + "\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001"+ + "\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0001"+ + "\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0287\u0001\u0287\u0005"+ + "\u0287\u18fc\b\u0287\n\u0287\f\u0287\u18ff\t\u0287\u0001\u0288\u0001\u0288"+ + "\u0001\u0288\u0001\u0288\u0001\u0288\u0001\u0288\u0003\u0288\u1907\b\u0288"+ + "\u0001\u0289\u0001\u0289\u0003\u0289\u190b\b\u0289\u0001\u028a\u0001\u028a"+ + "\u0003\u028a\u190f\b\u028a\u0001\u028b\u0001\u028b\u0001\u028b\u0001\u028c"+ + "\u0001\u028c\u0001\u028c\u0001\u028c\u0005\u028c\u1918\b\u028c\n\u028c"+ + "\f\u028c\u191b\t\u028c\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028e"+ + "\u0001\u028e\u0001\u028e\u0001\u028e\u0005\u028e\u1924\b\u028e\n\u028e"+ + "\f\u028e\u1927\t\u028e\u0001\u028f\u0001\u028f\u0001\u028f\u0001\u028f"+ + "\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0291\u0001\u0291"+ + "\u0001\u0291\u0001\u0291\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0292"+ + "\u0001\u0293\u0001\u0293\u0001\u0293\u0001\u0294\u0001\u0294\u0001\u0294"+ + "\u0001\u0294\u0005\u0294\u1940\b\u0294\n\u0294\f\u0294\u1943\t\u0294\u0001"+ + "\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001"+ + "\u0296\u0001\u0296\u0001\u0296\u0001\u0297\u0001\u0297\u0001\u0297\u0001"+ + "\u0297\u0001\u0298\u0001\u0298\u0003\u0298\u1954\b\u0298\u0001\u0298\u0001"+ + "\u0298\u0001\u0298\u0001\u0298\u0001\u0298\u0001\u0299\u0001\u0299\u0005"+ + "\u0299\u195d\b\u0299\n\u0299\f\u0299\u1960\t\u0299\u0001\u029a\u0001\u029a"+ + "\u0001\u029a\u0001\u029b\u0001\u029b\u0001\u029b\u0005\u029b\u1968\b\u029b"+ + "\n\u029b\f\u029b\u196b\t\u029b\u0001\u029c\u0001\u029c\u0001\u029c\u0001"+ + "\u029d\u0001\u029d\u0001\u029d\u0001\u029e\u0001\u029e\u0001\u029e\u0001"+ + "\u029f\u0001\u029f\u0001\u029f\u0005\u029f\u1979\b\u029f\n\u029f\f\u029f"+ + "\u197c\t\u029f\u0001\u02a0\u0001\u02a0\u0001\u02a0\u0001\u02a1\u0001\u02a1"+ + "\u0001\u02a1\u0001\u02a2\u0001\u02a2\u0001\u02a3\u0001\u02a3\u0001\u02a3"+ + "\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a4\u0001\u02a4\u0001\u02a4"+ + "\u0003\u02a4\u198f\b\u02a4\u0001\u02a4\u0001\u02a4\u0003\u02a4\u1993\b"+ + "\u02a4\u0001\u02a4\u0003\u02a4\u1996\b\u02a4\u0001\u02a4\u0001\u02a4\u0001"+ + "\u02a4\u0001\u02a4\u0003\u02a4\u199c\b\u02a4\u0001\u02a4\u0003\u02a4\u199f"+ + "\b\u02a4\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0003\u02a4\u19a4\b\u02a4"+ + "\u0001\u02a4\u0001\u02a4\u0003\u02a4\u19a8\b\u02a4\u0001\u02a5\u0004\u02a5"+ + "\u19ab\b\u02a5\u000b\u02a5\f\u02a5\u19ac\u0001\u02a6\u0001\u02a6\u0001"+ + "\u02a6\u0005\u02a6\u19b2\b\u02a6\n\u02a6\f\u02a6\u19b5\t\u02a6\u0001\u02a7"+ + "\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7"+ + "\u0001\u02a7\u0005\u02a7\u19bf\b\u02a7\n\u02a7\f\u02a7\u19c2\t\u02a7\u0001"+ + "\u02a7\u0001\u02a7\u0001\u02a8\u0004\u02a8\u19c7\b\u02a8\u000b\u02a8\f"+ + "\u02a8\u19c8\u0001\u02a8\u0001\u02a8\u0001\u02a9\u0001\u02a9\u0003\u02a9"+ + "\u19cf\b\u02a9\u0001\u02a9\u0003\u02a9\u19d2\b\u02a9\u0001\u02a9\u0001"+ + "\u02a9\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0005\u02aa\u19da"+ + "\b\u02aa\n\u02aa\f\u02aa\u19dd\t\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02ab"+ + "\u0001\u02ab\u0001\u02ab\u0001\u02ab\u0005\u02ab\u19e5\b\u02ab\n\u02ab"+ + "\f\u02ab\u19e8\t\u02ab\u0001\u02ab\u0001\u02ab\u0001\u02ab\u0004\u02ab"+ + "\u19ed\b\u02ab\u000b\u02ab\f\u02ab\u19ee\u0001\u02ab\u0001\u02ab\u0004"+ + "\u02ab\u19f3\b\u02ab\u000b\u02ab\f\u02ab\u19f4\u0001\u02ab\u0005\u02ab"+ + "\u19f8\b\u02ab\n\u02ab\f\u02ab\u19fb\t\u02ab\u0001\u02ab\u0005\u02ab\u19fe"+ + "\b\u02ab\n\u02ab\f\u02ab\u1a01\t\u02ab\u0001\u02ab\u0001\u02ab\u0001\u02ab"+ + "\u0001\u02ab\u0001\u02ab\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac"+ + "\u0005\u02ac\u1a0c\b\u02ac\n\u02ac\f\u02ac\u1a0f\t\u02ac\u0001\u02ac\u0001"+ + "\u02ac\u0001\u02ac\u0004\u02ac\u1a14\b\u02ac\u000b\u02ac\f\u02ac\u1a15"+ + "\u0001\u02ac\u0001\u02ac\u0004\u02ac\u1a1a\b\u02ac\u000b\u02ac\f\u02ac"+ + "\u1a1b\u0001\u02ac\u0003\u02ac\u1a1f\b\u02ac\u0005\u02ac\u1a21\b\u02ac"+ + "\n\u02ac\f\u02ac\u1a24\t\u02ac\u0001\u02ac\u0004\u02ac\u1a27\b\u02ac\u000b"+ + "\u02ac\f\u02ac\u1a28\u0001\u02ac\u0004\u02ac\u1a2c\b\u02ac\u000b\u02ac"+ + "\f\u02ac\u1a2d\u0001\u02ac\u0005\u02ac\u1a31\b\u02ac\n\u02ac\f\u02ac\u1a34"+ + "\t\u02ac\u0001\u02ac\u0003\u02ac\u1a37\b\u02ac\u0001\u02ac\u0001\u02ac"+ + "\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0005\u02ad\u1a3f\b\u02ad"+ + "\n\u02ad\f\u02ad\u1a42\t\u02ad\u0001\u02ad\u0005\u02ad\u1a45\b\u02ad\n"+ + "\u02ad\f\u02ad\u1a48\t\u02ad\u0001\u02ad\u0001\u02ad\u0005\u02ad\u1a4c"+ + "\b\u02ad\n\u02ad\f\u02ad\u1a4f\t\u02ad\u0003\u02ad\u1a51\b\u02ad\u0001"+ + "\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02af\u0001\u02af\u0001\u02b0\u0001"+ + "\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b1\u0001\u02b1\u0003"+ + "\u02b1\u1a5f\b\u02b1\u0001\u02b1\u0001\u02b1\u0001\u02b2\u0001\u02b2\u0001"+ + "\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001"+ + "\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001"+ + "\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0003"+ + "\u02b2\u1a77\b\u02b2\u0001\u02b2\u0005\u02b2\u1a7a\b\u02b2\n\u02b2\f\u02b2"+ + "\u1a7d\t\u02b2\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b3"+ + "\u0001\u02b4\u0001\u02b4\u0003\u02b4\u1a86\b\u02b4\u0001\u02b4\u0001\u02b4"+ + "\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0005\u02b5"+ + "\u1a8f\b\u02b5\n\u02b5\f\u02b5\u1a92\t\u02b5\u0001\u02b6\u0001\u02b6\u0001"+ + "\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b7\u0001\u02b7\u0001\u02b7\u0001"+ + "\u02b7\u0001\u02b7\u0001\u02b7\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001"+ + "\u02b8\u0001\u02b8\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001"+ + "\u02b9\u0001\u02ba\u0001\u02ba\u0001\u02ba\u0001\u02ba\u0001\u02ba\u0001"+ + "\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bc\u0001"+ + "\u02bc\u0001\u02bc\u0001\u02bc\u0001\u02bc\u0001\u02bd\u0004\u02bd\u1ab9"+ + "\b\u02bd\u000b\u02bd\f\u02bd\u1aba\u0001\u02bd\u0001\u02bd\u0005\u02bd"+ + "\u1abf\b\u02bd\n\u02bd\f\u02bd\u1ac2\t\u02bd\u0003\u02bd\u1ac4\b\u02bd"+ + "\u0001\u02be\u0001\u02be\u0003\u02be\u1ac8\b\u02be\u0001\u02be\u0001\u02be"+ + "\u0001\u02be\u0001\u02be\u0001\u02be\u0001\u02be\u0001\u02be\u0000\u0000"+ + "\u02bf\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/\u00161\u0017"+ + "3\u00185\u00197\u001a9\u001b;\u001c=\u001d?\u0000A\u0000C\u0000E\u0000"+ + "G\u001eI\u001fK M!O\"Q#S$U%W&Y\'[(])_*a+c,e-g.i/k0m1o2q3s4u5w6y7{8}9\u007f"+ + ":\u0081;\u0083<\u0085=\u0087>\u0089?\u008b@\u008dA\u008fB\u0091C\u0093"+ + "D\u0095E\u0097F\u0099G\u009bH\u009dI\u009fJ\u00a1K\u00a3L\u00a5M\u00a7"+ + "N\u00a9O\u00abP\u00adQ\u00afR\u00b1S\u00b3T\u00b5U\u00b7V\u00b9W\u00bb"+ + "X\u00bdY\u00bfZ\u00c1[\u00c3\\\u00c5]\u00c7^\u00c9_\u00cb`\u00cda\u00cf"+ + "b\u00d1c\u00d3d\u00d5e\u00d7f\u00d9g\u00dbh\u00ddi\u00dfj\u00e1k\u00e3"+ + "l\u00e5m\u00e7n\u00e9o\u00ebp\u00edq\u00efr\u00f1s\u00f3t\u00f5u\u00f7"+ + "v\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\u027f\u050b\u0280\u050d\u0281\u050f\u0282\u0511\u0283"+ + "\u0513\u0284\u0515\u0000\u0517\u0000\u0519\u0000\u051b\u0285\u051d\u0286"+ + "\u051f\u0287\u0521\u0288\u0523\u0289\u0525\u028a\u0527\u028b\u0529\u028c"+ + "\u052b\u028d\u052d\u028e\u052f\u0000\u0531\u028f\u0533\u0290\u0535\u0291"+ + "\u0537\u0000\u0539\u0292\u053b\u0293\u053d\u0294\u053f\u0295\u0541\u0296"+ + "\u0543\u0297\u0545\u0298\u0547\u0299\u0549\u029a\u054b\u029b\u054d\u029c"+ + "\u054f\u0000\u0551\u029d\u0553\u029e\u0555\u029f\u0557\u02a0\u0559\u02a1"+ + "\u055b\u02a2\u055d\u02a3\u055f\u02a4\u0561\u02a5\u0563\u02a6\u0565\u02a7"+ + "\u0567\u02a8\u0569\u0000\u056b\u02a9\u056d\u02aa\u056f\u0000\u0571\u0000"+ + "\u0573\u0000\u0575\u02ab\u0577\u0000\u0579\u0000\u057b\u02af\u057d\u02ac"+ + "\u057f\u02ad\u0581\u02ae\u0005\u0000\u0001\u0002\u0003\u00043\u0001\u0000"+ + "09\u0002\u0000++--\t\u0000!!##%&**<@^^``||~~\u0002\u0000*+<>\b\u0000!"+ + "!##%&?@^^``||~~\u0002\u0000AAaa\u0002\u0000LLll\u0002\u0000NNnn\u0002"+ + "\u0000YYyy\u0002\u0000SSss\u0002\u0000EEee\u0002\u0000ZZzz\u0002\u0000"+ + "DDdd\u0002\u0000RRrr\u0002\u0000CCcc\u0002\u0000MMmm\u0002\u0000TTtt\u0002"+ + "\u0000IIii\u0002\u0000BBbb\u0002\u0000OOoo\u0002\u0000HHhh\u0002\u0000"+ + "KKkk\u0002\u0000UUuu\u0002\u0000GGgg\u0002\u0000PPpp\u0002\u0000FFff\u0002"+ + "\u0000XXxx\u0002\u0000VVvv\u0002\u0000WWww\u0002\u0000QQqq\u0002\u0000"+ + "JJjj\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\u0000"+ + "01\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$$\u1b18\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\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"+ + "\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\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"+ + "\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\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\u0509\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\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\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\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\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\u0551\u0001\u0000\u0000\u0000\u0000\u0553\u0001\u0000"+ + "\u0000\u0000\u0000\u0555\u0001\u0000\u0000\u0000\u0000\u0557\u0001\u0000"+ + "\u0000\u0000\u0000\u0559\u0001\u0000\u0000\u0000\u0000\u055b\u0001\u0000"+ + "\u0000\u0000\u0000\u055d\u0001\u0000\u0000\u0000\u0000\u055f\u0001\u0000"+ + "\u0000\u0000\u0000\u0561\u0001\u0000\u0000\u0000\u0000\u0563\u0001\u0000"+ + "\u0000\u0000\u0001\u0565\u0001\u0000\u0000\u0000\u0001\u0567\u0001\u0000"+ + "\u0000\u0000\u0001\u056b\u0001\u0000\u0000\u0000\u0001\u056d\u0001\u0000"+ + "\u0000\u0000\u0002\u0571\u0001\u0000\u0000\u0000\u0002\u0573\u0001\u0000"+ + "\u0000\u0000\u0002\u0575\u0001\u0000\u0000\u0000\u0003\u0577\u0001\u0000"+ + "\u0000\u0000\u0003\u0579\u0001\u0000\u0000\u0000\u0003\u057b\u0001\u0000"+ + "\u0000\u0000\u0003\u057d\u0001\u0000\u0000\u0000\u0004\u057f\u0001\u0000"+ + "\u0000\u0000\u0004\u0581\u0001\u0000\u0000\u0000\u0005\u0583\u0001\u0000"+ + "\u0000\u0000\u0007\u0585\u0001\u0000\u0000\u0000\t\u0587\u0001\u0000\u0000"+ + "\u0000\u000b\u0589\u0001\u0000\u0000\u0000\r\u058b\u0001\u0000\u0000\u0000"+ + "\u000f\u058d\u0001\u0000\u0000\u0000\u0011\u058f\u0001\u0000\u0000\u0000"+ + "\u0013\u0591\u0001\u0000\u0000\u0000\u0015\u0593\u0001\u0000\u0000\u0000"+ + "\u0017\u0595\u0001\u0000\u0000\u0000\u0019\u0597\u0001\u0000\u0000\u0000"+ + "\u001b\u0599\u0001\u0000\u0000\u0000\u001d\u059b\u0001\u0000\u0000\u0000"+ + "\u001f\u059d\u0001\u0000\u0000\u0000!\u059f\u0001\u0000\u0000\u0000#\u05a1"+ + "\u0001\u0000\u0000\u0000%\u05a3\u0001\u0000\u0000\u0000\'\u05a5\u0001"+ + "\u0000\u0000\u0000)\u05a8\u0001\u0000\u0000\u0000+\u05ab\u0001\u0000\u0000"+ + "\u0000-\u05ae\u0001\u0000\u0000\u0000/\u05b1\u0001\u0000\u0000\u00001"+ + "\u05b4\u0001\u0000\u0000\u00003\u05b7\u0001\u0000\u0000\u00005\u05ba\u0001"+ + "\u0000\u0000\u00007\u05bd\u0001\u0000\u0000\u00009\u05c0\u0001\u0000\u0000"+ + "\u0000;\u05c2\u0001\u0000\u0000\u0000=\u05dc\u0001\u0000\u0000\u0000?"+ + "\u05e7\u0001\u0000\u0000\u0000A\u05f7\u0001\u0000\u0000\u0000C\u05f9\u0001"+ + "\u0000\u0000\u0000E\u05fb\u0001\u0000\u0000\u0000G\u05fd\u0001\u0000\u0000"+ + "\u0000I\u0601\u0001\u0000\u0000\u0000K\u0609\u0001\u0000\u0000\u0000M"+ + "\u0611\u0001\u0000\u0000\u0000O\u0615\u0001\u0000\u0000\u0000Q\u0619\u0001"+ + "\u0000\u0000\u0000S\u061f\u0001\u0000\u0000\u0000U\u0622\u0001\u0000\u0000"+ + "\u0000W\u0626\u0001\u0000\u0000\u0000Y\u0631\u0001\u0000\u0000\u0000["+ + "\u0636\u0001\u0000\u0000\u0000]\u063b\u0001\u0000\u0000\u0000_\u0640\u0001"+ + "\u0000\u0000\u0000a\u0646\u0001\u0000\u0000\u0000c\u064e\u0001\u0000\u0000"+ + "\u0000e\u0655\u0001\u0000\u0000\u0000g\u0660\u0001\u0000\u0000\u0000i"+ + "\u0667\u0001\u0000\u0000\u0000k\u0677\u0001\u0000\u0000\u0000m\u0684\u0001"+ + "\u0000\u0000\u0000o\u0691\u0001\u0000\u0000\u0000q\u069e\u0001\u0000\u0000"+ + "\u0000s\u06b0\u0001\u0000\u0000\u0000u\u06bd\u0001\u0000\u0000\u0000w"+ + "\u06c5\u0001\u0000\u0000\u0000y\u06d0\u0001\u0000\u0000\u0000{\u06d5\u0001"+ + "\u0000\u0000\u0000}\u06de\u0001\u0000\u0000\u0000\u007f\u06e1\u0001\u0000"+ + "\u0000\u0000\u0081\u06e6\u0001\u0000\u0000\u0000\u0083\u06ed\u0001\u0000"+ + "\u0000\u0000\u0085\u06f3\u0001\u0000\u0000\u0000\u0087\u06f9\u0001\u0000"+ + "\u0000\u0000\u0089\u06fd\u0001\u0000\u0000\u0000\u008b\u0705\u0001\u0000"+ + "\u0000\u0000\u008d\u070a\u0001\u0000\u0000\u0000\u008f\u0710\u0001\u0000"+ + "\u0000\u0000\u0091\u0716\u0001\u0000\u0000\u0000\u0093\u071d\u0001\u0000"+ + "\u0000\u0000\u0095\u0720\u0001\u0000\u0000\u0000\u0097\u072a\u0001\u0000"+ + "\u0000\u0000\u0099\u0734\u0001\u0000\u0000\u0000\u009b\u0739\u0001\u0000"+ + "\u0000\u0000\u009d\u0741\u0001\u0000\u0000\u0000\u009f\u0749\u0001\u0000"+ + "\u0000\u0000\u00a1\u074f\u0001\u0000\u0000\u0000\u00a3\u0759\u0001\u0000"+ + "\u0000\u0000\u00a5\u0768\u0001\u0000\u0000\u0000\u00a7\u076c\u0001\u0000"+ + "\u0000\u0000\u00a9\u0771\u0001\u0000\u0000\u0000\u00ab\u0778\u0001\u0000"+ + "\u0000\u0000\u00ad\u077b\u0001\u0000\u0000\u0000\u00af\u0780\u0001\u0000"+ + "\u0000\u0000\u00b1\u0783\u0001\u0000\u0000\u0000\u00b3\u0789\u0001\u0000"+ + "\u0000\u0000\u00b5\u0791\u0001\u0000\u0000\u0000\u00b7\u0799\u0001\u0000"+ + "\u0000\u0000\u00b9\u07a4\u0001\u0000\u0000\u0000\u00bb\u07ae\u0001\u0000"+ + "\u0000\u0000\u00bd\u07b5\u0001\u0000\u0000\u0000\u00bf\u07c2\u0001\u0000"+ + "\u0000\u0000\u00c1\u07c7\u0001\u0000\u0000\u0000\u00c3\u07d1\u0001\u0000"+ + "\u0000\u0000\u00c5\u07d7\u0001\u0000\u0000\u0000\u00c7\u07de\u0001\u0000"+ + "\u0000\u0000\u00c9\u07e3\u0001\u0000\u0000\u0000\u00cb\u07e6\u0001\u0000"+ + "\u0000\u0000\u00cd\u07ef\u0001\u0000\u0000\u0000\u00cf\u07f5\u0001\u0000"+ + "\u0000\u0000\u00d1\u07fc\u0001\u0000\u0000\u0000\u00d3\u0803\u0001\u0000"+ + "\u0000\u0000\u00d5\u0809\u0001\u0000\u0000\u0000\u00d7\u0810\u0001\u0000"+ + "\u0000\u0000\u00d9\u0819\u0001\u0000\u0000\u0000\u00db\u081e\u0001\u0000"+ + "\u0000\u0000\u00dd\u0824\u0001\u0000\u0000\u0000\u00df\u082b\u0001\u0000"+ + "\u0000\u0000\u00e1\u0830\u0001\u0000\u0000\u0000\u00e3\u0836\u0001\u0000"+ + "\u0000\u0000\u00e5\u083f\u0001\u0000\u0000\u0000\u00e7\u0844\u0001\u0000"+ + "\u0000\u0000\u00e9\u084a\u0001\u0000\u0000\u0000\u00eb\u0851\u0001\u0000"+ + "\u0000\u0000\u00ed\u0856\u0001\u0000\u0000\u0000\u00ef\u0864\u0001\u0000"+ + "\u0000\u0000\u00f1\u086b\u0001\u0000\u0000\u0000\u00f3\u0875\u0001\u0000"+ + "\u0000\u0000\u00f5\u0882\u0001\u0000\u0000\u0000\u00f7\u0888\u0001\u0000"+ + "\u0000\u0000\u00f9\u0897\u0001\u0000\u0000\u0000\u00fb\u089e\u0001\u0000"+ + "\u0000\u0000\u00fd\u08a3\u0001\u0000\u0000\u0000\u00ff\u08a9\u0001\u0000"+ + "\u0000\u0000\u0101\u08af\u0001\u0000\u0000\u0000\u0103\u08b2\u0001\u0000"+ + "\u0000\u0000\u0105\u08b9\u0001\u0000\u0000\u0000\u0107\u08be\u0001\u0000"+ + "\u0000\u0000\u0109\u08c3\u0001\u0000\u0000\u0000\u010b\u08c8\u0001\u0000"+ + "\u0000\u0000\u010d\u08d0\u0001\u0000\u0000\u0000\u010f\u08d8\u0001\u0000"+ + "\u0000\u0000\u0111\u08de\u0001\u0000\u0000\u0000\u0113\u08e3\u0001\u0000"+ + "\u0000\u0000\u0115\u08ec\u0001\u0000\u0000\u0000\u0117\u08f2\u0001\u0000"+ + "\u0000\u0000\u0119\u08fa\u0001\u0000\u0000\u0000\u011b\u0902\u0001\u0000"+ + "\u0000\u0000\u011d\u0908\u0001\u0000\u0000\u0000\u011f\u0911\u0001\u0000"+ + "\u0000\u0000\u0121\u0918\u0001\u0000\u0000\u0000\u0123\u091f\u0001\u0000"+ + "\u0000\u0000\u0125\u0923\u0001\u0000\u0000\u0000\u0127\u0929\u0001\u0000"+ + "\u0000\u0000\u0129\u092f\u0001\u0000\u0000\u0000\u012b\u0939\u0001\u0000"+ + "\u0000\u0000\u012d\u093e\u0001\u0000\u0000\u0000\u012f\u0944\u0001\u0000"+ + "\u0000\u0000\u0131\u094b\u0001\u0000\u0000\u0000\u0133\u0955\u0001\u0000"+ + "\u0000\u0000\u0135\u0960\u0001\u0000\u0000\u0000\u0137\u0963\u0001\u0000"+ + "\u0000\u0000\u0139\u096d\u0001\u0000\u0000\u0000\u013b\u0976\u0001\u0000"+ + "\u0000\u0000\u013d\u097d\u0001\u0000\u0000\u0000\u013f\u0983\u0001\u0000"+ + "\u0000\u0000\u0141\u0986\u0001\u0000\u0000\u0000\u0143\u098c\u0001\u0000"+ + "\u0000\u0000\u0145\u0993\u0001\u0000\u0000\u0000\u0147\u099b\u0001\u0000"+ + "\u0000\u0000\u0149\u09a4\u0001\u0000\u0000\u0000\u014b\u09ac\u0001\u0000"+ + "\u0000\u0000\u014d\u09b2\u0001\u0000\u0000\u0000\u014f\u09c2\u0001\u0000"+ + "\u0000\u0000\u0151\u09cd\u0001\u0000\u0000\u0000\u0153\u09d3\u0001\u0000"+ + "\u0000\u0000\u0155\u09d9\u0001\u0000\u0000\u0000\u0157\u09e1\u0001\u0000"+ + "\u0000\u0000\u0159\u09e9\u0001\u0000\u0000\u0000\u015b\u09f2\u0001\u0000"+ + "\u0000\u0000\u015d\u09f9\u0001\u0000\u0000\u0000\u015f\u0a03\u0001\u0000"+ + "\u0000\u0000\u0161\u0a11\u0001\u0000\u0000\u0000\u0163\u0a1c\u0001\u0000"+ + "\u0000\u0000\u0165\u0a28\u0001\u0000\u0000\u0000\u0167\u0a30\u0001\u0000"+ + "\u0000\u0000\u0169\u0a39\u0001\u0000\u0000\u0000\u016b\u0a44\u0001\u0000"+ + "\u0000\u0000\u016d\u0a49\u0001\u0000\u0000\u0000\u016f\u0a4e\u0001\u0000"+ + "\u0000\u0000\u0171\u0a52\u0001\u0000\u0000\u0000\u0173\u0a59\u0001\u0000"+ + "\u0000\u0000\u0175\u0a5f\u0001\u0000\u0000\u0000\u0177\u0a64\u0001\u0000"+ + "\u0000\u0000\u0179\u0a6d\u0001\u0000\u0000\u0000\u017b\u0a71\u0001\u0000"+ + "\u0000\u0000\u017d\u0a7c\u0001\u0000\u0000\u0000\u017f\u0a84\u0001\u0000"+ + "\u0000\u0000\u0181\u0a8d\u0001\u0000\u0000\u0000\u0183\u0a96\u0001\u0000"+ + "\u0000\u0000\u0185\u0a9e\u0001\u0000\u0000\u0000\u0187\u0aa5\u0001\u0000"+ + "\u0000\u0000\u0189\u0aaf\u0001\u0000\u0000\u0000\u018b\u0aba\u0001\u0000"+ + "\u0000\u0000\u018d\u0ac5\u0001\u0000\u0000\u0000\u018f\u0acd\u0001\u0000"+ + "\u0000\u0000\u0191\u0ad5\u0001\u0000\u0000\u0000\u0193\u0ade\u0001\u0000"+ + "\u0000\u0000\u0195\u0ae5\u0001\u0000\u0000\u0000\u0197\u0aec\u0001\u0000"+ + "\u0000\u0000\u0199\u0af1\u0001\u0000\u0000\u0000\u019b\u0af6\u0001\u0000"+ + "\u0000\u0000\u019d\u0afd\u0001\u0000\u0000\u0000\u019f\u0b06\u0001\u0000"+ + "\u0000\u0000\u01a1\u0b10\u0001\u0000\u0000\u0000\u01a3\u0b15\u0001\u0000"+ + "\u0000\u0000\u01a5\u0b1c\u0001\u0000\u0000\u0000\u01a7\u0b22\u0001\u0000"+ + "\u0000\u0000\u01a9\u0b2a\u0001\u0000\u0000\u0000\u01ab\u0b34\u0001\u0000"+ + "\u0000\u0000\u01ad\u0b3e\u0001\u0000\u0000\u0000\u01af\u0b46\u0001\u0000"+ + "\u0000\u0000\u01b1\u0b4e\u0001\u0000\u0000\u0000\u01b3\u0b58\u0001\u0000"+ + "\u0000\u0000\u01b5\u0b61\u0001\u0000\u0000\u0000\u01b7\u0b68\u0001\u0000"+ + "\u0000\u0000\u01b9\u0b6e\u0001\u0000\u0000\u0000\u01bb\u0b78\u0001\u0000"+ + "\u0000\u0000\u01bd\u0b7e\u0001\u0000\u0000\u0000\u01bf\u0b86\u0001\u0000"+ + "\u0000\u0000\u01c1\u0b8f\u0001\u0000\u0000\u0000\u01c3\u0b99\u0001\u0000"+ + "\u0000\u0000\u01c5\u0ba0\u0001\u0000\u0000\u0000\u01c7\u0ba8\u0001\u0000"+ + "\u0000\u0000\u01c9\u0bb0\u0001\u0000\u0000\u0000\u01cb\u0bb7\u0001\u0000"+ + "\u0000\u0000\u01cd\u0bbc\u0001\u0000\u0000\u0000\u01cf\u0bc1\u0001\u0000"+ + "\u0000\u0000\u01d1\u0bca\u0001\u0000\u0000\u0000\u01d3\u0bcd\u0001\u0000"+ + "\u0000\u0000\u01d5\u0bd7\u0001\u0000\u0000\u0000\u01d7\u0be1\u0001\u0000"+ + "\u0000\u0000\u01d9\u0bea\u0001\u0000\u0000\u0000\u01db\u0bf4\u0001\u0000"+ + "\u0000\u0000\u01dd\u0bfe\u0001\u0000\u0000\u0000\u01df\u0c04\u0001\u0000"+ + "\u0000\u0000\u01e1\u0c0c\u0001\u0000\u0000\u0000\u01e3\u0c14\u0001\u0000"+ + "\u0000\u0000\u01e5\u0c1d\u0001\u0000\u0000\u0000\u01e7\u0c24\u0001\u0000"+ + "\u0000\u0000\u01e9\u0c30\u0001\u0000\u0000\u0000\u01eb\u0c37\u0001\u0000"+ + "\u0000\u0000\u01ed\u0c3f\u0001\u0000\u0000\u0000\u01ef\u0c47\u0001\u0000"+ + "\u0000\u0000\u01f1\u0c51\u0001\u0000\u0000\u0000\u01f3\u0c55\u0001\u0000"+ + "\u0000\u0000\u01f5\u0c5b\u0001\u0000\u0000\u0000\u01f7\u0c64\u0001\u0000"+ + "\u0000\u0000\u01f9\u0c6a\u0001\u0000\u0000\u0000\u01fb\u0c6f\u0001\u0000"+ + "\u0000\u0000\u01fd\u0c79\u0001\u0000\u0000\u0000\u01ff\u0c7f\u0001\u0000"+ + "\u0000\u0000\u0201\u0c86\u0001\u0000\u0000\u0000\u0203\u0c8b\u0001\u0000"+ + "\u0000\u0000\u0205\u0c91\u0001\u0000\u0000\u0000\u0207\u0c9a\u0001\u0000"+ + "\u0000\u0000\u0209\u0c9f\u0001\u0000\u0000\u0000\u020b\u0ca7\u0001\u0000"+ + "\u0000\u0000\u020d\u0cad\u0001\u0000\u0000\u0000\u020f\u0cb5\u0001\u0000"+ + "\u0000\u0000\u0211\u0cc2\u0001\u0000\u0000\u0000\u0213\u0ccb\u0001\u0000"+ + "\u0000\u0000\u0215\u0cd1\u0001\u0000\u0000\u0000\u0217\u0cd8\u0001\u0000"+ + "\u0000\u0000\u0219\u0ce1\u0001\u0000\u0000\u0000\u021b\u0ce6\u0001\u0000"+ + "\u0000\u0000\u021d\u0cec\u0001\u0000\u0000\u0000\u021f\u0cf1\u0001\u0000"+ + "\u0000\u0000\u0221\u0cf6\u0001\u0000\u0000\u0000\u0223\u0cfc\u0001\u0000"+ + "\u0000\u0000\u0225\u0d01\u0001\u0000\u0000\u0000\u0227\u0d04\u0001\u0000"+ + "\u0000\u0000\u0229\u0d0c\u0001\u0000\u0000\u0000\u022b\u0d13\u0001\u0000"+ + "\u0000\u0000\u022d\u0d1a\u0001\u0000\u0000\u0000\u022f\u0d20\u0001\u0000"+ + "\u0000\u0000\u0231\u0d27\u0001\u0000\u0000\u0000\u0233\u0d2a\u0001\u0000"+ + "\u0000\u0000\u0235\u0d2e\u0001\u0000\u0000\u0000\u0237\u0d33\u0001\u0000"+ + "\u0000\u0000\u0239\u0d3c\u0001\u0000\u0000\u0000\u023b\u0d43\u0001\u0000"+ + "\u0000\u0000\u023d\u0d4b\u0001\u0000\u0000\u0000\u023f\u0d51\u0001\u0000"+ + "\u0000\u0000\u0241\u0d57\u0001\u0000\u0000\u0000\u0243\u0d5e\u0001\u0000"+ + "\u0000\u0000\u0245\u0d66\u0001\u0000\u0000\u0000\u0247\u0d70\u0001\u0000"+ + "\u0000\u0000\u0249\u0d78\u0001\u0000\u0000\u0000\u024b\u0d81\u0001\u0000"+ + "\u0000\u0000\u024d\u0d87\u0001\u0000\u0000\u0000\u024f\u0d91\u0001\u0000"+ + "\u0000\u0000\u0251\u0d99\u0001\u0000\u0000\u0000\u0253\u0da2\u0001\u0000"+ + "\u0000\u0000\u0255\u0dab\u0001\u0000\u0000\u0000\u0257\u0db1\u0001\u0000"+ + "\u0000\u0000\u0259\u0dbc\u0001\u0000\u0000\u0000\u025b\u0dc7\u0001\u0000"+ + "\u0000\u0000\u025d\u0dd1\u0001\u0000\u0000\u0000\u025f\u0dd9\u0001\u0000"+ + "\u0000\u0000\u0261\u0ddf\u0001\u0000\u0000\u0000\u0263\u0de5\u0001\u0000"+ + "\u0000\u0000\u0265\u0dea\u0001\u0000\u0000\u0000\u0267\u0df3\u0001\u0000"+ + "\u0000\u0000\u0269\u0dfb\u0001\u0000\u0000\u0000\u026b\u0e05\u0001\u0000"+ + "\u0000\u0000\u026d\u0e09\u0001\u0000\u0000\u0000\u026f\u0e11\u0001\u0000"+ + "\u0000\u0000\u0271\u0e19\u0001\u0000\u0000\u0000\u0273\u0e22\u0001\u0000"+ + "\u0000\u0000\u0275\u0e2a\u0001\u0000\u0000\u0000\u0277\u0e31\u0001\u0000"+ + "\u0000\u0000\u0279\u0e3c\u0001\u0000\u0000\u0000\u027b\u0e44\u0001\u0000"+ + "\u0000\u0000\u027d\u0e4c\u0001\u0000\u0000\u0000\u027f\u0e52\u0001\u0000"+ + "\u0000\u0000\u0281\u0e5a\u0001\u0000\u0000\u0000\u0283\u0e63\u0001\u0000"+ + "\u0000\u0000\u0285\u0e6b\u0001\u0000\u0000\u0000\u0287\u0e72\u0001\u0000"+ + "\u0000\u0000\u0289\u0e77\u0001\u0000\u0000\u0000\u028b\u0e80\u0001\u0000"+ + "\u0000\u0000\u028d\u0e85\u0001\u0000\u0000\u0000\u028f\u0e8a\u0001\u0000"+ + "\u0000\u0000\u0291\u0e94\u0001\u0000\u0000\u0000\u0293\u0e9b\u0001\u0000"+ + "\u0000\u0000\u0295\u0ea2\u0001\u0000\u0000\u0000\u0297\u0ea9\u0001\u0000"+ + "\u0000\u0000\u0299\u0eb0\u0001\u0000\u0000\u0000\u029b\u0eb9\u0001\u0000"+ + "\u0000\u0000\u029d\u0ec2\u0001\u0000\u0000\u0000\u029f\u0ecc\u0001\u0000"+ + "\u0000\u0000\u02a1\u0ed9\u0001\u0000\u0000\u0000\u02a3\u0ee0\u0001\u0000"+ + "\u0000\u0000\u02a5\u0ee8\u0001\u0000\u0000\u0000\u02a7\u0eec\u0001\u0000"+ + "\u0000\u0000\u02a9\u0ef2\u0001\u0000\u0000\u0000\u02ab\u0ef7\u0001\u0000"+ + "\u0000\u0000\u02ad\u0efe\u0001\u0000\u0000\u0000\u02af\u0f07\u0001\u0000"+ + "\u0000\u0000\u02b1\u0f0e\u0001\u0000\u0000\u0000\u02b3\u0f19\u0001\u0000"+ + "\u0000\u0000\u02b5\u0f1f\u0001\u0000\u0000\u0000\u02b7\u0f29\u0001\u0000"+ + "\u0000\u0000\u02b9\u0f34\u0001\u0000"; private static final String _serializedATNSegment1 = - "\u0000\u0000\u02d7\u0fa1\u0001\u0000\u0000\u0000\u02d9\u0fa6\u0001\u0000"+ - "\u0000\u0000\u02db\u0fac\u0001\u0000\u0000\u0000\u02dd\u0fb6\u0001\u0000"+ - "\u0000\u0000\u02df\u0fc2\u0001\u0000\u0000\u0000\u02e1\u0fce\u0001\u0000"+ - "\u0000\u0000\u02e3\u0fd6\u0001\u0000\u0000\u0000\u02e5\u0fdf\u0001\u0000"+ - "\u0000\u0000\u02e7\u0fe8\u0001\u0000\u0000\u0000\u02e9\u0fee\u0001\u0000"+ - "\u0000\u0000\u02eb\u0ff5\u0001\u0000\u0000\u0000\u02ed\u0ffc\u0001\u0000"+ - "\u0000\u0000\u02ef\u1002\u0001\u0000\u0000\u0000\u02f1\u100b\u0001\u0000"+ - "\u0000\u0000\u02f3\u1015\u0001\u0000\u0000\u0000\u02f5\u101d\u0001\u0000"+ - "\u0000\u0000\u02f7\u1025\u0001\u0000\u0000\u0000\u02f9\u102a\u0001\u0000"+ - "\u0000\u0000\u02fb\u1033\u0001\u0000\u0000\u0000\u02fd\u103e\u0001\u0000"+ - "\u0000\u0000\u02ff\u1046\u0001\u0000\u0000\u0000\u0301\u104b\u0001\u0000"+ - "\u0000\u0000\u0303\u1053\u0001\u0000\u0000\u0000\u0305\u1059\u0001\u0000"+ - "\u0000\u0000\u0307\u105d\u0001\u0000\u0000\u0000\u0309\u1062\u0001\u0000"+ - "\u0000\u0000\u030b\u1066\u0001\u0000\u0000\u0000\u030d\u106b\u0001\u0000"+ - "\u0000\u0000\u030f\u1073\u0001\u0000\u0000\u0000\u0311\u107a\u0001\u0000"+ - "\u0000\u0000\u0313\u107e\u0001\u0000\u0000\u0000\u0315\u1086\u0001\u0000"+ - "\u0000\u0000\u0317\u108b\u0001\u0000\u0000\u0000\u0319\u1095\u0001\u0000"+ - "\u0000\u0000\u031b\u109e\u0001\u0000\u0000\u0000\u031d\u10a2\u0001\u0000"+ - "\u0000\u0000\u031f\u10aa\u0001\u0000\u0000\u0000\u0321\u10b1\u0001\u0000"+ - "\u0000\u0000\u0323\u10b9\u0001\u0000\u0000\u0000\u0325\u10bf\u0001\u0000"+ - "\u0000\u0000\u0327\u10c8\u0001\u0000\u0000\u0000\u0329\u10ce\u0001\u0000"+ - "\u0000\u0000\u032b\u10d2\u0001\u0000\u0000\u0000\u032d\u10da\u0001\u0000"+ - "\u0000\u0000\u032f\u10e3\u0001\u0000\u0000\u0000\u0331\u10e9\u0001\u0000"+ - "\u0000\u0000\u0333\u10f2\u0001\u0000\u0000\u0000\u0335\u10f8\u0001\u0000"+ - "\u0000\u0000\u0337\u10fd\u0001\u0000\u0000\u0000\u0339\u1104\u0001\u0000"+ - "\u0000\u0000\u033b\u110c\u0001\u0000\u0000\u0000\u033d\u1114\u0001\u0000"+ - "\u0000\u0000\u033f\u111d\u0001\u0000\u0000\u0000\u0341\u1127\u0001\u0000"+ - "\u0000\u0000\u0343\u112c\u0001\u0000\u0000\u0000\u0345\u1130\u0001\u0000"+ - "\u0000\u0000\u0347\u1136\u0001\u0000\u0000\u0000\u0349\u113f\u0001\u0000"+ - "\u0000\u0000\u034b\u1149\u0001\u0000\u0000\u0000\u034d\u114e\u0001\u0000"+ - "\u0000\u0000\u034f\u1158\u0001\u0000\u0000\u0000\u0351\u115e\u0001\u0000"+ - "\u0000\u0000\u0353\u1163\u0001\u0000\u0000\u0000\u0355\u116a\u0001\u0000"+ - "\u0000\u0000\u0357\u1172\u0001\u0000\u0000\u0000\u0359\u1180\u0001\u0000"+ - "\u0000\u0000\u035b\u118b\u0001\u0000\u0000\u0000\u035d\u1192\u0001\u0000"+ - "\u0000\u0000\u035f\u11a5\u0001\u0000\u0000\u0000\u0361\u11c1\u0001\u0000"+ - "\u0000\u0000\u0363\u11dc\u0001\u0000\u0000\u0000\u0365\u11e2\u0001\u0000"+ - "\u0000\u0000\u0367\u11ef\u0001\u0000\u0000\u0000\u0369\u11f9\u0001\u0000"+ - "\u0000\u0000\u036b\u1204\u0001\u0000\u0000\u0000\u036d\u120e\u0001\u0000"+ - "\u0000\u0000\u036f\u1218\u0001\u0000\u0000\u0000\u0371\u1221\u0001\u0000"+ - "\u0000\u0000\u0373\u1227\u0001\u0000\u0000\u0000\u0375\u122f\u0001\u0000"+ - "\u0000\u0000\u0377\u123c\u0001\u0000\u0000\u0000\u0379\u1241\u0001\u0000"+ - "\u0000\u0000\u037b\u1249\u0001\u0000\u0000\u0000\u037d\u1250\u0001\u0000"+ - "\u0000\u0000\u037f\u1257\u0001\u0000\u0000\u0000\u0381\u1262\u0001\u0000"+ - "\u0000\u0000\u0383\u126c\u0001\u0000\u0000\u0000\u0385\u1273\u0001\u0000"+ - "\u0000\u0000\u0387\u127a\u0001\u0000\u0000\u0000\u0389\u1282\u0001\u0000"+ - "\u0000\u0000\u038b\u128a\u0001\u0000\u0000\u0000\u038d\u1294\u0001\u0000"+ - "\u0000\u0000\u038f\u129b\u0001\u0000\u0000\u0000\u0391\u12a2\u0001\u0000"+ - "\u0000\u0000\u0393\u12a9\u0001\u0000\u0000\u0000\u0395\u12b5\u0001\u0000"+ - "\u0000\u0000\u0397\u12b9\u0001\u0000\u0000\u0000\u0399\u12bd\u0001\u0000"+ - "\u0000\u0000\u039b\u12c3\u0001\u0000\u0000\u0000\u039d\u12d0\u0001\u0000"+ - "\u0000\u0000\u039f\u12dc\u0001\u0000\u0000\u0000\u03a1\u12e0\u0001\u0000"+ - "\u0000\u0000\u03a3\u12e4\u0001\u0000\u0000\u0000\u03a5\u12ed\u0001\u0000"+ - "\u0000\u0000\u03a7\u12f5\u0001\u0000\u0000\u0000\u03a9\u1300\u0001\u0000"+ - "\u0000\u0000\u03ab\u1306\u0001\u0000\u0000\u0000\u03ad\u130e\u0001\u0000"+ - "\u0000\u0000\u03af\u1317\u0001\u0000\u0000\u0000\u03b1\u131b\u0001\u0000"+ - "\u0000\u0000\u03b3\u1323\u0001\u0000\u0000\u0000\u03b5\u132e\u0001\u0000"+ - "\u0000\u0000\u03b7\u1337\u0001\u0000\u0000\u0000\u03b9\u133c\u0001\u0000"+ - "\u0000\u0000\u03bb\u1343\u0001\u0000\u0000\u0000\u03bd\u1348\u0001\u0000"+ - "\u0000\u0000\u03bf\u134f\u0001\u0000\u0000\u0000\u03c1\u1354\u0001\u0000"+ - "\u0000\u0000\u03c3\u135d\u0001\u0000\u0000\u0000\u03c5\u1362\u0001\u0000"+ - "\u0000\u0000\u03c7\u136e\u0001\u0000\u0000\u0000\u03c9\u1379\u0001\u0000"+ - "\u0000\u0000\u03cb\u1382\u0001\u0000\u0000\u0000\u03cd\u138a\u0001\u0000"+ - "\u0000\u0000\u03cf\u1398\u0001\u0000\u0000\u0000\u03d1\u13a0\u0001\u0000"+ - "\u0000\u0000\u03d3\u13ab\u0001\u0000\u0000\u0000\u03d5\u13b2\u0001\u0000"+ - "\u0000\u0000\u03d7\u13b9\u0001\u0000\u0000\u0000\u03d9\u13c0\u0001\u0000"+ - "\u0000\u0000\u03db\u13c7\u0001\u0000\u0000\u0000\u03dd\u13cb\u0001\u0000"+ - "\u0000\u0000\u03df\u13cf\u0001\u0000\u0000\u0000\u03e1\u13d4\u0001\u0000"+ - "\u0000\u0000\u03e3\u13d9\u0001\u0000\u0000\u0000\u03e5\u13e1\u0001\u0000"+ - "\u0000\u0000\u03e7\u13e7\u0001\u0000\u0000\u0000\u03e9\u13f1\u0001\u0000"+ - "\u0000\u0000\u03eb\u13f6\u0001\u0000\u0000\u0000\u03ed\u140a\u0001\u0000"+ - "\u0000\u0000\u03ef\u141c\u0001\u0000\u0000\u0000\u03f1\u1422\u0001\u0000"+ - "\u0000\u0000\u03f3\u142f\u0001\u0000\u0000\u0000\u03f5\u143a\u0001\u0000"+ - "\u0000\u0000\u03f7\u1440\u0001\u0000\u0000\u0000\u03f9\u1449\u0001\u0000"+ - "\u0000\u0000\u03fb\u1451\u0001\u0000\u0000\u0000\u03fd\u1455\u0001\u0000"+ - "\u0000\u0000\u03ff\u1461\u0001\u0000\u0000\u0000\u0401\u1469\u0001\u0000"+ - "\u0000\u0000\u0403\u146f\u0001\u0000\u0000\u0000\u0405\u1475\u0001\u0000"+ - "\u0000\u0000\u0407\u147d\u0001\u0000\u0000\u0000\u0409\u1485\u0001\u0000"+ - "\u0000\u0000\u040b\u148b\u0001\u0000\u0000\u0000\u040d\u1490\u0001\u0000"+ - "\u0000\u0000\u040f\u1497\u0001\u0000\u0000\u0000\u0411\u149d\u0001\u0000"+ - "\u0000\u0000\u0413\u14a3\u0001\u0000\u0000\u0000\u0415\u14ac\u0001\u0000"+ - "\u0000\u0000\u0417\u14b2\u0001\u0000\u0000\u0000\u0419\u14b6\u0001\u0000"+ - "\u0000\u0000\u041b\u14bb\u0001\u0000\u0000\u0000\u041d\u14c2\u0001\u0000"+ - "\u0000\u0000\u041f\u14ca\u0001\u0000\u0000\u0000\u0421\u14d4\u0001\u0000"+ - "\u0000\u0000\u0423\u14db\u0001\u0000\u0000\u0000\u0425\u14e0\u0001\u0000"+ - "\u0000\u0000\u0427\u14e5\u0001\u0000\u0000\u0000\u0429\u14e9\u0001\u0000"+ - "\u0000\u0000\u042b\u14ee\u0001\u0000\u0000\u0000\u042d\u14f3\u0001\u0000"+ - "\u0000\u0000\u042f\u14fb\u0001\u0000\u0000\u0000\u0431\u1503\u0001\u0000"+ - "\u0000\u0000\u0433\u1507\u0001\u0000\u0000\u0000\u0435\u150b\u0001\u0000"+ - "\u0000\u0000\u0437\u1515\u0001\u0000\u0000\u0000\u0439\u151b\u0001\u0000"+ - "\u0000\u0000\u043b\u151f\u0001\u0000\u0000\u0000\u043d\u1523\u0001\u0000"+ - "\u0000\u0000\u043f\u1526\u0001\u0000\u0000\u0000\u0441\u152c\u0001\u0000"+ - "\u0000\u0000\u0443\u1536\u0001\u0000\u0000\u0000\u0445\u153a\u0001\u0000"+ - "\u0000\u0000\u0447\u153d\u0001\u0000\u0000\u0000\u0449\u1543\u0001\u0000"+ - "\u0000\u0000\u044b\u154b\u0001\u0000\u0000\u0000\u044d\u1551\u0001\u0000"+ - "\u0000\u0000\u044f\u1557\u0001\u0000\u0000\u0000\u0451\u155c\u0001\u0000"+ - "\u0000\u0000\u0453\u1561\u0001\u0000\u0000\u0000\u0455\u156c\u0001\u0000"+ - "\u0000\u0000\u0457\u1572\u0001\u0000\u0000\u0000\u0459\u157f\u0001\u0000"+ - "\u0000\u0000\u045b\u1586\u0001\u0000\u0000\u0000\u045d\u158e\u0001\u0000"+ - "\u0000\u0000\u045f\u1593\u0001\u0000\u0000\u0000\u0461\u1599\u0001\u0000"+ - "\u0000\u0000\u0463\u159e\u0001\u0000\u0000\u0000\u0465\u15a4\u0001\u0000"+ - "\u0000\u0000\u0467\u15a9\u0001\u0000\u0000\u0000\u0469\u15af\u0001\u0000"+ - "\u0000\u0000\u046b\u15b5\u0001\u0000\u0000\u0000\u046d\u15bc\u0001\u0000"+ - "\u0000\u0000\u046f\u15c0\u0001\u0000\u0000\u0000\u0471\u15c5\u0001\u0000"+ - "\u0000\u0000\u0473\u15c9\u0001\u0000\u0000\u0000\u0475\u15ce\u0001\u0000"+ - "\u0000\u0000\u0477\u15d2\u0001\u0000\u0000\u0000\u0479\u15d7\u0001\u0000"+ - "\u0000\u0000\u047b\u15db\u0001\u0000\u0000\u0000\u047d\u15e0\u0001\u0000"+ - "\u0000\u0000\u047f\u15e5\u0001\u0000\u0000\u0000\u0481\u15ea\u0001\u0000"+ - "\u0000\u0000\u0483\u15ef\u0001\u0000\u0000\u0000\u0485\u15f5\u0001\u0000"+ - "\u0000\u0000\u0487\u15fb\u0001\u0000\u0000\u0000\u0489\u1601\u0001\u0000"+ - "\u0000\u0000\u048b\u160c\u0001\u0000\u0000\u0000\u048d\u1618\u0001\u0000"+ - "\u0000\u0000\u048f\u1629\u0001\u0000\u0000\u0000\u0491\u162f\u0001\u0000"+ - "\u0000\u0000\u0493\u163c\u0001\u0000\u0000\u0000\u0495\u1642\u0001\u0000"+ - "\u0000\u0000\u0497\u1648\u0001\u0000\u0000\u0000\u0499\u164e\u0001\u0000"+ - "\u0000\u0000\u049b\u1652\u0001\u0000\u0000\u0000\u049d\u1659\u0001\u0000"+ - "\u0000\u0000\u049f\u1663\u0001\u0000\u0000\u0000\u04a1\u166a\u0001\u0000"+ - "\u0000\u0000\u04a3\u1672\u0001\u0000\u0000\u0000\u04a5\u1679\u0001\u0000"+ - "\u0000\u0000\u04a7\u167e\u0001\u0000\u0000\u0000\u04a9\u1684\u0001\u0000"+ - "\u0000\u0000\u04ab\u1688\u0001\u0000\u0000\u0000\u04ad\u1694\u0001\u0000"+ - "\u0000\u0000\u04af\u16a7\u0001\u0000\u0000\u0000\u04b1\u16b3\u0001\u0000"+ - "\u0000\u0000\u04b3\u16c1\u0001\u0000\u0000\u0000\u04b5\u16d0\u0001\u0000"+ - "\u0000\u0000\u04b7\u16dd\u0001\u0000\u0000\u0000\u04b9\u16ea\u0001\u0000"+ - "\u0000\u0000\u04bb\u16f6\u0001\u0000\u0000\u0000\u04bd\u1703\u0001\u0000"+ - "\u0000\u0000\u04bf\u1712\u0001\u0000\u0000\u0000\u04c1\u1721\u0001\u0000"+ - "\u0000\u0000\u04c3\u1737\u0001\u0000\u0000\u0000\u04c5\u174d\u0001\u0000"+ - "\u0000\u0000\u04c7\u175b\u0001\u0000\u0000\u0000\u04c9\u1762\u0001\u0000"+ - "\u0000\u0000\u04cb\u1767\u0001\u0000\u0000\u0000\u04cd\u176d\u0001\u0000"+ - "\u0000\u0000\u04cf\u1778\u0001\u0000\u0000\u0000\u04d1\u1784\u0001\u0000"+ - "\u0000\u0000\u04d3\u1794\u0001\u0000\u0000\u0000\u04d5\u17a4\u0001\u0000"+ - "\u0000\u0000\u04d7\u17ab\u0001\u0000\u0000\u0000\u04d9\u17b2\u0001\u0000"+ - "\u0000\u0000\u04db\u17bb\u0001\u0000\u0000\u0000\u04dd\u17c2\u0001\u0000"+ - "\u0000\u0000\u04df\u17cc\u0001\u0000\u0000\u0000\u04e1\u17d3\u0001\u0000"+ - "\u0000\u0000\u04e3\u17d7\u0001\u0000\u0000\u0000\u04e5\u17e7\u0001\u0000"+ - "\u0000\u0000\u04e7\u17f0\u0001\u0000\u0000\u0000\u04e9\u17fa\u0001\u0000"+ + "\u0000\u0000\u02bb\u0f3a\u0001\u0000\u0000\u0000\u02bd\u0f41\u0001\u0000"+ + "\u0000\u0000\u02bf\u0f49\u0001\u0000\u0000\u0000\u02c1\u0f50\u0001\u0000"+ + "\u0000\u0000\u02c3\u0f56\u0001\u0000\u0000\u0000\u02c5\u0f5c\u0001\u0000"+ + "\u0000\u0000\u02c7\u0f63\u0001\u0000\u0000\u0000\u02c9\u0f6a\u0001\u0000"+ + "\u0000\u0000\u02cb\u0f72\u0001\u0000\u0000\u0000\u02cd\u0f7d\u0001\u0000"+ + "\u0000\u0000\u02cf\u0f82\u0001\u0000\u0000\u0000\u02d1\u0f8b\u0001\u0000"+ + "\u0000\u0000\u02d3\u0f95\u0001\u0000\u0000\u0000\u02d5\u0f9a\u0001\u0000"+ + "\u0000\u0000\u02d7\u0fa6\u0001\u0000\u0000\u0000\u02d9\u0fae\u0001\u0000"+ + "\u0000\u0000\u02db\u0fb7\u0001\u0000\u0000\u0000\u02dd\u0fbf\u0001\u0000"+ + "\u0000\u0000\u02df\u0fc4\u0001\u0000\u0000\u0000\u02e1\u0fca\u0001\u0000"+ + "\u0000\u0000\u02e3\u0fd4\u0001\u0000\u0000\u0000\u02e5\u0fe0\u0001\u0000"+ + "\u0000\u0000\u02e7\u0fec\u0001\u0000\u0000\u0000\u02e9\u0ff4\u0001\u0000"+ + "\u0000\u0000\u02eb\u0ffd\u0001\u0000\u0000\u0000\u02ed\u1006\u0001\u0000"+ + "\u0000\u0000\u02ef\u100c\u0001\u0000\u0000\u0000\u02f1\u1013\u0001\u0000"+ + "\u0000\u0000\u02f3\u101a\u0001\u0000\u0000\u0000\u02f5\u1020\u0001\u0000"+ + "\u0000\u0000\u02f7\u1029\u0001\u0000\u0000\u0000\u02f9\u1033\u0001\u0000"+ + "\u0000\u0000\u02fb\u103b\u0001\u0000\u0000\u0000\u02fd\u1043\u0001\u0000"+ + "\u0000\u0000\u02ff\u1048\u0001\u0000\u0000\u0000\u0301\u1051\u0001\u0000"+ + "\u0000\u0000\u0303\u105c\u0001\u0000\u0000\u0000\u0305\u1064\u0001\u0000"+ + "\u0000\u0000\u0307\u1069\u0001\u0000\u0000\u0000\u0309\u1071\u0001\u0000"+ + "\u0000\u0000\u030b\u1077\u0001\u0000\u0000\u0000\u030d\u107b\u0001\u0000"+ + "\u0000\u0000\u030f\u1080\u0001\u0000\u0000\u0000\u0311\u1084\u0001\u0000"+ + "\u0000\u0000\u0313\u1089\u0001\u0000\u0000\u0000\u0315\u1091\u0001\u0000"+ + "\u0000\u0000\u0317\u1098\u0001\u0000\u0000\u0000\u0319\u109c\u0001\u0000"+ + "\u0000\u0000\u031b\u10a4\u0001\u0000\u0000\u0000\u031d\u10a9\u0001\u0000"+ + "\u0000\u0000\u031f\u10b3\u0001\u0000\u0000\u0000\u0321\u10bc\u0001\u0000"+ + "\u0000\u0000\u0323\u10c0\u0001\u0000\u0000\u0000\u0325\u10c8\u0001\u0000"+ + "\u0000\u0000\u0327\u10cf\u0001\u0000\u0000\u0000\u0329\u10d7\u0001\u0000"+ + "\u0000\u0000\u032b\u10dd\u0001\u0000\u0000\u0000\u032d\u10e6\u0001\u0000"+ + "\u0000\u0000\u032f\u10ec\u0001\u0000\u0000\u0000\u0331\u10f0\u0001\u0000"+ + "\u0000\u0000\u0333\u10f8\u0001\u0000\u0000\u0000\u0335\u1101\u0001\u0000"+ + "\u0000\u0000\u0337\u1107\u0001\u0000\u0000\u0000\u0339\u1110\u0001\u0000"+ + "\u0000\u0000\u033b\u1116\u0001\u0000\u0000\u0000\u033d\u111b\u0001\u0000"+ + "\u0000\u0000\u033f\u1122\u0001\u0000\u0000\u0000\u0341\u112a\u0001\u0000"+ + "\u0000\u0000\u0343\u1132\u0001\u0000\u0000\u0000\u0345\u113b\u0001\u0000"+ + "\u0000\u0000\u0347\u1145\u0001\u0000\u0000\u0000\u0349\u114a\u0001\u0000"+ + "\u0000\u0000\u034b\u114e\u0001\u0000\u0000\u0000\u034d\u1154\u0001\u0000"+ + "\u0000\u0000\u034f\u115d\u0001\u0000\u0000\u0000\u0351\u1167\u0001\u0000"+ + "\u0000\u0000\u0353\u116c\u0001\u0000\u0000\u0000\u0355\u1176\u0001\u0000"+ + "\u0000\u0000\u0357\u117c\u0001\u0000\u0000\u0000\u0359\u1181\u0001\u0000"+ + "\u0000\u0000\u035b\u1188\u0001\u0000\u0000\u0000\u035d\u1190\u0001\u0000"+ + "\u0000\u0000\u035f\u119e\u0001\u0000\u0000\u0000\u0361\u11a9\u0001\u0000"+ + "\u0000\u0000\u0363\u11b0\u0001\u0000\u0000\u0000\u0365\u11c3\u0001\u0000"+ + "\u0000\u0000\u0367\u11df\u0001\u0000\u0000\u0000\u0369\u11fa\u0001\u0000"+ + "\u0000\u0000\u036b\u1200\u0001\u0000\u0000\u0000\u036d\u120d\u0001\u0000"+ + "\u0000\u0000\u036f\u1217\u0001\u0000\u0000\u0000\u0371\u1222\u0001\u0000"+ + "\u0000\u0000\u0373\u122c\u0001\u0000\u0000\u0000\u0375\u1236\u0001\u0000"+ + "\u0000\u0000\u0377\u123f\u0001\u0000\u0000\u0000\u0379\u1245\u0001\u0000"+ + "\u0000\u0000\u037b\u124d\u0001\u0000\u0000\u0000\u037d\u125a\u0001\u0000"+ + "\u0000\u0000\u037f\u125f\u0001\u0000\u0000\u0000\u0381\u1267\u0001\u0000"+ + "\u0000\u0000\u0383\u126e\u0001\u0000\u0000\u0000\u0385\u1275\u0001\u0000"+ + "\u0000\u0000\u0387\u1280\u0001\u0000\u0000\u0000\u0389\u128a\u0001\u0000"+ + "\u0000\u0000\u038b\u1291\u0001\u0000\u0000\u0000\u038d\u1298\u0001\u0000"+ + "\u0000\u0000\u038f\u12a0\u0001\u0000\u0000\u0000\u0391\u12a8\u0001\u0000"+ + "\u0000\u0000\u0393\u12b2\u0001\u0000\u0000\u0000\u0395\u12b9\u0001\u0000"+ + "\u0000\u0000\u0397\u12c0\u0001\u0000\u0000\u0000\u0399\u12c7\u0001\u0000"+ + "\u0000\u0000\u039b\u12d3\u0001\u0000\u0000\u0000\u039d\u12d7\u0001\u0000"+ + "\u0000\u0000\u039f\u12db\u0001\u0000\u0000\u0000\u03a1\u12e1\u0001\u0000"+ + "\u0000\u0000\u03a3\u12ee\u0001\u0000\u0000\u0000\u03a5\u12fa\u0001\u0000"+ + "\u0000\u0000\u03a7\u12fe\u0001\u0000\u0000\u0000\u03a9\u1302\u0001\u0000"+ + "\u0000\u0000\u03ab\u130b\u0001\u0000\u0000\u0000\u03ad\u1313\u0001\u0000"+ + "\u0000\u0000\u03af\u131e\u0001\u0000\u0000\u0000\u03b1\u1324\u0001\u0000"+ + "\u0000\u0000\u03b3\u132c\u0001\u0000\u0000\u0000\u03b5\u1335\u0001\u0000"+ + "\u0000\u0000\u03b7\u1339\u0001\u0000\u0000\u0000\u03b9\u1341\u0001\u0000"+ + "\u0000\u0000\u03bb\u134c\u0001\u0000\u0000\u0000\u03bd\u1355\u0001\u0000"+ + "\u0000\u0000\u03bf\u135a\u0001\u0000\u0000\u0000\u03c1\u1361\u0001\u0000"+ + "\u0000\u0000\u03c3\u1366\u0001\u0000\u0000\u0000\u03c5\u136d\u0001\u0000"+ + "\u0000\u0000\u03c7\u1372\u0001\u0000\u0000\u0000\u03c9\u137b\u0001\u0000"+ + "\u0000\u0000\u03cb\u1380\u0001\u0000\u0000\u0000\u03cd\u138c\u0001\u0000"+ + "\u0000\u0000\u03cf\u1397\u0001\u0000\u0000\u0000\u03d1\u13a0\u0001\u0000"+ + "\u0000\u0000\u03d3\u13a8\u0001\u0000\u0000\u0000\u03d5\u13b6\u0001\u0000"+ + "\u0000\u0000\u03d7\u13be\u0001\u0000\u0000\u0000\u03d9\u13c9\u0001\u0000"+ + "\u0000\u0000\u03db\u13d0\u0001\u0000\u0000\u0000\u03dd\u13d7\u0001\u0000"+ + "\u0000\u0000\u03df\u13de\u0001\u0000\u0000\u0000\u03e1\u13e5\u0001\u0000"+ + "\u0000\u0000\u03e3\u13e9\u0001\u0000\u0000\u0000\u03e5\u13ed\u0001\u0000"+ + "\u0000\u0000\u03e7\u13f2\u0001\u0000\u0000\u0000\u03e9\u13f7\u0001\u0000"+ + "\u0000\u0000\u03eb\u13ff\u0001\u0000\u0000\u0000\u03ed\u1405\u0001\u0000"+ + "\u0000\u0000\u03ef\u140f\u0001\u0000\u0000\u0000\u03f1\u1414\u0001\u0000"+ + "\u0000\u0000\u03f3\u1428\u0001\u0000\u0000\u0000\u03f5\u143a\u0001\u0000"+ + "\u0000\u0000\u03f7\u1440\u0001\u0000\u0000\u0000\u03f9\u144d\u0001\u0000"+ + "\u0000\u0000\u03fb\u1458\u0001\u0000\u0000\u0000\u03fd\u145e\u0001\u0000"+ + "\u0000\u0000\u03ff\u1467\u0001\u0000\u0000\u0000\u0401\u146f\u0001\u0000"+ + "\u0000\u0000\u0403\u1473\u0001\u0000\u0000\u0000\u0405\u147f\u0001\u0000"+ + "\u0000\u0000\u0407\u1487\u0001\u0000\u0000\u0000\u0409\u148d\u0001\u0000"+ + "\u0000\u0000\u040b\u1493\u0001\u0000\u0000\u0000\u040d\u149b\u0001\u0000"+ + "\u0000\u0000\u040f\u14a3\u0001\u0000\u0000\u0000\u0411\u14a9\u0001\u0000"+ + "\u0000\u0000\u0413\u14ae\u0001\u0000\u0000\u0000\u0415\u14b5\u0001\u0000"+ + "\u0000\u0000\u0417\u14bb\u0001\u0000\u0000\u0000\u0419\u14c1\u0001\u0000"+ + "\u0000\u0000\u041b\u14ca\u0001\u0000\u0000\u0000\u041d\u14d0\u0001\u0000"+ + "\u0000\u0000\u041f\u14d4\u0001\u0000\u0000\u0000\u0421\u14d9\u0001\u0000"+ + "\u0000\u0000\u0423\u14e0\u0001\u0000\u0000\u0000\u0425\u14e8\u0001\u0000"+ + "\u0000\u0000\u0427\u14f2\u0001\u0000\u0000\u0000\u0429\u14f9\u0001\u0000"+ + "\u0000\u0000\u042b\u14fe\u0001\u0000\u0000\u0000\u042d\u1503\u0001\u0000"+ + "\u0000\u0000\u042f\u1507\u0001\u0000\u0000\u0000\u0431\u150c\u0001\u0000"+ + "\u0000\u0000\u0433\u1511\u0001\u0000\u0000\u0000\u0435\u1519\u0001\u0000"+ + "\u0000\u0000\u0437\u1521\u0001\u0000\u0000\u0000\u0439\u1525\u0001\u0000"+ + "\u0000\u0000\u043b\u1529\u0001\u0000\u0000\u0000\u043d\u1533\u0001\u0000"+ + "\u0000\u0000\u043f\u1539\u0001\u0000\u0000\u0000\u0441\u153d\u0001\u0000"+ + "\u0000\u0000\u0443\u1541\u0001\u0000\u0000\u0000\u0445\u1544\u0001\u0000"+ + "\u0000\u0000\u0447\u154a\u0001\u0000\u0000\u0000\u0449\u1554\u0001\u0000"+ + "\u0000\u0000\u044b\u1558\u0001\u0000\u0000\u0000\u044d\u155b\u0001\u0000"+ + "\u0000\u0000\u044f\u1561\u0001\u0000\u0000\u0000\u0451\u1569\u0001\u0000"+ + "\u0000\u0000\u0453\u156f\u0001\u0000\u0000\u0000\u0455\u1575\u0001\u0000"+ + "\u0000\u0000\u0457\u157a\u0001\u0000\u0000\u0000\u0459\u157f\u0001\u0000"+ + "\u0000\u0000\u045b\u158a\u0001\u0000\u0000\u0000\u045d\u1590\u0001\u0000"+ + "\u0000\u0000\u045f\u159d\u0001\u0000\u0000\u0000\u0461\u15a4\u0001\u0000"+ + "\u0000\u0000\u0463\u15ac\u0001\u0000\u0000\u0000\u0465\u15b1\u0001\u0000"+ + "\u0000\u0000\u0467\u15b7\u0001\u0000\u0000\u0000\u0469\u15bc\u0001\u0000"+ + "\u0000\u0000\u046b\u15c2\u0001\u0000\u0000\u0000\u046d\u15c7\u0001\u0000"+ + "\u0000\u0000\u046f\u15cd\u0001\u0000\u0000\u0000\u0471\u15d3\u0001\u0000"+ + "\u0000\u0000\u0473\u15da\u0001\u0000\u0000\u0000\u0475\u15de\u0001\u0000"+ + "\u0000\u0000\u0477\u15e3\u0001\u0000\u0000\u0000\u0479\u15e7\u0001\u0000"+ + "\u0000\u0000\u047b\u15ec\u0001\u0000\u0000\u0000\u047d\u15f0\u0001\u0000"+ + "\u0000\u0000\u047f\u15f5\u0001\u0000\u0000\u0000\u0481\u15f9\u0001\u0000"+ + "\u0000\u0000\u0483\u15fe\u0001\u0000\u0000\u0000\u0485\u1603\u0001\u0000"+ + "\u0000\u0000\u0487\u1608\u0001\u0000\u0000\u0000\u0489\u160d\u0001\u0000"+ + "\u0000\u0000\u048b\u1613\u0001\u0000\u0000\u0000\u048d\u1619\u0001\u0000"+ + "\u0000\u0000\u048f\u161f\u0001\u0000\u0000\u0000\u0491\u162a\u0001\u0000"+ + "\u0000\u0000\u0493\u1636\u0001\u0000\u0000\u0000\u0495\u1647\u0001\u0000"+ + "\u0000\u0000\u0497\u164d\u0001\u0000\u0000\u0000\u0499\u165a\u0001\u0000"+ + "\u0000\u0000\u049b\u1660\u0001\u0000\u0000\u0000\u049d\u1666\u0001\u0000"+ + "\u0000\u0000\u049f\u166c\u0001\u0000\u0000\u0000\u04a1\u1670\u0001\u0000"+ + "\u0000\u0000\u04a3\u1677\u0001\u0000\u0000\u0000\u04a5\u1681\u0001\u0000"+ + "\u0000\u0000\u04a7\u1688\u0001\u0000\u0000\u0000\u04a9\u1690\u0001\u0000"+ + "\u0000\u0000\u04ab\u1697\u0001\u0000\u0000\u0000\u04ad\u169c\u0001\u0000"+ + "\u0000\u0000\u04af\u16a2\u0001\u0000\u0000\u0000\u04b1\u16a6\u0001\u0000"+ + "\u0000\u0000\u04b3\u16b2\u0001\u0000\u0000\u0000\u04b5\u16c5\u0001\u0000"+ + "\u0000\u0000\u04b7\u16d1\u0001\u0000\u0000\u0000\u04b9\u16df\u0001\u0000"+ + "\u0000\u0000\u04bb\u16ee\u0001\u0000\u0000\u0000\u04bd\u16fb\u0001\u0000"+ + "\u0000\u0000\u04bf\u1708\u0001\u0000\u0000\u0000\u04c1\u1714\u0001\u0000"+ + "\u0000\u0000\u04c3\u1721\u0001\u0000\u0000\u0000\u04c5\u1730\u0001\u0000"+ + "\u0000\u0000\u04c7\u173f\u0001\u0000\u0000\u0000\u04c9\u1755\u0001\u0000"+ + "\u0000\u0000\u04cb\u176b\u0001\u0000\u0000\u0000\u04cd\u1779\u0001\u0000"+ + "\u0000\u0000\u04cf\u1780\u0001\u0000\u0000\u0000\u04d1\u1785\u0001\u0000"+ + "\u0000\u0000\u04d3\u178b\u0001\u0000\u0000\u0000\u04d5\u1796\u0001\u0000"+ + "\u0000\u0000\u04d7\u17a2\u0001\u0000\u0000\u0000\u04d9\u17b2\u0001\u0000"+ + "\u0000\u0000\u04db\u17c2\u0001\u0000\u0000\u0000\u04dd\u17c9\u0001\u0000"+ + "\u0000\u0000\u04df\u17d0\u0001\u0000\u0000\u0000\u04e1\u17d9\u0001\u0000"+ + "\u0000\u0000\u04e3\u17e0\u0001\u0000\u0000\u0000\u04e5\u17ea\u0001\u0000"+ + "\u0000\u0000\u04e7\u17f1\u0001\u0000\u0000\u0000\u04e9\u17f5\u0001\u0000"+ "\u0000\u0000\u04eb\u1805\u0001\u0000\u0000\u0000\u04ed\u180e\u0001\u0000"+ - "\u0000\u0000\u04ef\u181b\u0001\u0000\u0000\u0000\u04f1\u1829\u0001\u0000"+ - "\u0000\u0000\u04f3\u183a\u0001\u0000\u0000\u0000\u04f5\u1844\u0001\u0000"+ - "\u0000\u0000\u04f7\u1852\u0001\u0000\u0000\u0000\u04f9\u185c\u0001\u0000"+ - "\u0000\u0000\u04fb\u186b\u0001\u0000\u0000\u0000\u04fd\u187c\u0001\u0000"+ - "\u0000\u0000\u04ff\u1880\u0001\u0000\u0000\u0000\u0501\u1894\u0001\u0000"+ - "\u0000\u0000\u0503\u189e\u0001\u0000\u0000\u0000\u0505\u18b4\u0001\u0000"+ - "\u0000\u0000\u0507\u18c1\u0001\u0000\u0000\u0000\u0509\u18c9\u0001\u0000"+ - "\u0000\u0000\u050b\u18d1\u0001\u0000\u0000\u0000\u050d\u18db\u0001\u0000"+ - "\u0000\u0000\u050f\u18e8\u0001\u0000\u0000\u0000\u0511\u18ec\u0001\u0000"+ - "\u0000\u0000\u0513\u18f0\u0001\u0000\u0000\u0000\u0515\u18f2\u0001\u0000"+ - "\u0000\u0000\u0517\u18f5\u0001\u0000\u0000\u0000\u0519\u18fe\u0001\u0000"+ - "\u0000\u0000\u051b\u1901\u0001\u0000\u0000\u0000\u051d\u190a\u0001\u0000"+ - "\u0000\u0000\u051f\u190e\u0001\u0000\u0000\u0000\u0521\u1912\u0001\u0000"+ - "\u0000\u0000\u0523\u1916\u0001\u0000\u0000\u0000\u0525\u191a\u0001\u0000"+ - "\u0000\u0000\u0527\u191d\u0001\u0000\u0000\u0000\u0529\u1926\u0001\u0000"+ - "\u0000\u0000\u052b\u192c\u0001\u0000\u0000\u0000\u052d\u192f\u0001\u0000"+ - "\u0000\u0000\u052f\u1933\u0001\u0000\u0000\u0000\u0531\u193c\u0001\u0000"+ - "\u0000\u0000\u0533\u1943\u0001\u0000\u0000\u0000\u0535\u1946\u0001\u0000"+ - "\u0000\u0000\u0537\u194e\u0001\u0000\u0000\u0000\u0539\u1951\u0001\u0000"+ - "\u0000\u0000\u053b\u1954\u0001\u0000\u0000\u0000\u053d\u1957\u0001\u0000"+ - "\u0000\u0000\u053f\u195f\u0001\u0000\u0000\u0000\u0541\u1962\u0001\u0000"+ - "\u0000\u0000\u0543\u1965\u0001\u0000\u0000\u0000\u0545\u1967\u0001\u0000"+ - "\u0000\u0000\u0547\u1989\u0001\u0000\u0000\u0000\u0549\u198c\u0001\u0000"+ - "\u0000\u0000\u054b\u1990\u0001\u0000\u0000\u0000\u054d\u1998\u0001\u0000"+ - "\u0000\u0000\u054f\u19a8\u0001\u0000\u0000\u0000\u0551\u19b3\u0001\u0000"+ - "\u0000\u0000\u0553\u19b7\u0001\u0000\u0000\u0000\u0555\u19c2\u0001\u0000"+ - "\u0000\u0000\u0557\u19e9\u0001\u0000\u0000\u0000\u0559\u1a1c\u0001\u0000"+ - "\u0000\u0000\u055b\u1a34\u0001\u0000\u0000\u0000\u055d\u1a37\u0001\u0000"+ - "\u0000\u0000\u055f\u1a39\u0001\u0000\u0000\u0000\u0561\u1a3e\u0001\u0000"+ - "\u0000\u0000\u0563\u1a5d\u0001\u0000\u0000\u0000\u0565\u1a60\u0001\u0000"+ - "\u0000\u0000\u0567\u1a65\u0001\u0000\u0000\u0000\u0569\u1a72\u0001\u0000"+ - "\u0000\u0000\u056b\u1a75\u0001\u0000\u0000\u0000\u056d\u1a7a\u0001\u0000"+ - "\u0000\u0000\u056f\u1a80\u0001\u0000\u0000\u0000\u0571\u1a85\u0001\u0000"+ - "\u0000\u0000\u0573\u1a8a\u0001\u0000\u0000\u0000\u0575\u1a8f\u0001\u0000"+ - "\u0000\u0000\u0577\u1a94\u0001\u0000\u0000\u0000\u0579\u1aa5\u0001\u0000"+ - "\u0000\u0000\u057b\u1aa7\u0001\u0000\u0000\u0000\u057d\u057e\u0005$\u0000"+ - "\u0000\u057e\u0006\u0001\u0000\u0000\u0000\u057f\u0580\u0005(\u0000\u0000"+ - "\u0580\b\u0001\u0000\u0000\u0000\u0581\u0582\u0005)\u0000\u0000\u0582"+ - "\n\u0001\u0000\u0000\u0000\u0583\u0584\u0005[\u0000\u0000\u0584\f\u0001"+ - "\u0000\u0000\u0000\u0585\u0586\u0005]\u0000\u0000\u0586\u000e\u0001\u0000"+ - "\u0000\u0000\u0587\u0588\u0005,\u0000\u0000\u0588\u0010\u0001\u0000\u0000"+ - "\u0000\u0589\u058a\u0005;\u0000\u0000\u058a\u0012\u0001\u0000\u0000\u0000"+ - "\u058b\u058c\u0005:\u0000\u0000\u058c\u0014\u0001\u0000\u0000\u0000\u058d"+ - "\u058e\u0005*\u0000\u0000\u058e\u0016\u0001\u0000\u0000\u0000\u058f\u0590"+ - "\u0005=\u0000\u0000\u0590\u0018\u0001\u0000\u0000\u0000\u0591\u0592\u0005"+ - ".\u0000\u0000\u0592\u001a\u0001\u0000\u0000\u0000\u0593\u0594\u0005+\u0000"+ - "\u0000\u0594\u001c\u0001\u0000\u0000\u0000\u0595\u0596\u0005-\u0000\u0000"+ - "\u0596\u001e\u0001\u0000\u0000\u0000\u0597\u0598\u0005/\u0000\u0000\u0598"+ - " \u0001\u0000\u0000\u0000\u0599\u059a\u0005^\u0000\u0000\u059a\"\u0001"+ - "\u0000\u0000\u0000\u059b\u059c\u0005<\u0000\u0000\u059c$\u0001\u0000\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\u05a7,\u0001\u0000\u0000\u0000\u05a8\u05a9\u0005"+ - "<\u0000\u0000\u05a9\u05aa\u0005=\u0000\u0000\u05aa.\u0001\u0000\u0000"+ - "\u0000\u05ab\u05ac\u0005=\u0000\u0000\u05ac\u05ad\u0005>\u0000\u0000\u05ad"+ - "0\u0001\u0000\u0000\u0000\u05ae\u05af\u0005>\u0000\u0000\u05af\u05b0\u0005"+ - "=\u0000\u0000\u05b02\u0001\u0000\u0000\u0000\u05b1\u05b2\u0005.\u0000"+ - "\u0000\u05b2\u05b3\u0005.\u0000\u0000\u05b34\u0001\u0000\u0000\u0000\u05b4"+ - "\u05b5\u0005<\u0000\u0000\u05b5\u05b6\u0005>\u0000\u0000\u05b66\u0001"+ - "\u0000\u0000\u0000\u05b7\u05b8\u0005:\u0000\u0000\u05b8\u05b9\u0005:\u0000"+ - "\u0000\u05b98\u0001\u0000\u0000\u0000\u05ba\u05bb\u0005%\u0000\u0000\u05bb"+ - ":\u0001\u0000\u0000\u0000\u05bc\u05be\u0005$\u0000\u0000\u05bd\u05bf\u0007"+ - "\u0000\u0000\u0000\u05be\u05bd\u0001\u0000\u0000\u0000\u05bf\u05c0\u0001"+ - "\u0000\u0000\u0000\u05c0\u05be\u0001\u0000\u0000\u0000\u05c0\u05c1\u0001"+ - "\u0000\u0000\u0000\u05c1<\u0001\u0000\u0000\u0000\u05c2\u05d2\u0003A\u001e"+ - "\u0000\u05c3\u05c7\u0005+\u0000\u0000\u05c4\u05c5\u0005-\u0000\u0000\u05c5"+ - "\u05c7\u0004\u001c\u0000\u0000\u05c6\u05c3\u0001\u0000\u0000\u0000\u05c6"+ - "\u05c4\u0001\u0000\u0000\u0000\u05c7\u05c8\u0001\u0000\u0000\u0000\u05c8"+ - "\u05c6\u0001\u0000\u0000\u0000\u05c8\u05c9\u0001\u0000\u0000\u0000\u05c9"+ - "\u05cd\u0001\u0000\u0000\u0000\u05ca\u05ce\u0003A\u001e\u0000\u05cb\u05cc"+ - "\u0005/\u0000\u0000\u05cc\u05ce\u0004\u001c\u0001\u0000\u05cd\u05ca\u0001"+ - "\u0000\u0000\u0000\u05cd\u05cb\u0001\u0000\u0000\u0000\u05ce\u05d2\u0001"+ - "\u0000\u0000\u0000\u05cf\u05d0\u0005/\u0000\u0000\u05d0\u05d2\u0004\u001c"+ - "\u0002\u0000\u05d1\u05c2\u0001\u0000\u0000\u0000\u05d1\u05c6\u0001\u0000"+ - "\u0000\u0000\u05d1\u05cf\u0001\u0000\u0000\u0000\u05d2\u05d3\u0001\u0000"+ - "\u0000\u0000\u05d3\u05d1\u0001\u0000\u0000\u0000\u05d3\u05d4\u0001\u0000"+ - "\u0000\u0000\u05d4\u05d7\u0001\u0000\u0000\u0000\u05d5\u05d7\u0007\u0001"+ - "\u0000\u0000\u05d6\u05d1\u0001\u0000\u0000\u0000\u05d6\u05d5\u0001\u0000"+ - "\u0000\u0000\u05d7\u05d8\u0001\u0000\u0000\u0000\u05d8\u05d9\u0006\u001c"+ - "\u0000\u0000\u05d9>\u0001\u0000\u0000\u0000\u05da\u05e0\u0003C\u001f\u0000"+ - "\u05db\u05dc\u0005-\u0000\u0000\u05dc\u05e0\u0004\u001d\u0003\u0000\u05dd"+ - "\u05de\u0005/\u0000\u0000\u05de\u05e0\u0004\u001d\u0004\u0000\u05df\u05da"+ - "\u0001\u0000\u0000\u0000\u05df\u05db\u0001\u0000\u0000\u0000\u05df\u05dd"+ - "\u0001\u0000\u0000\u0000\u05e0\u05e3\u0001\u0000\u0000\u0000\u05e1\u05df"+ - "\u0001\u0000\u0000\u0000\u05e1\u05e2\u0001\u0000\u0000\u0000\u05e2\u05e4"+ - "\u0001\u0000\u0000\u0000\u05e3\u05e1\u0001\u0000\u0000\u0000\u05e4\u05e6"+ - "\u0003E \u0000\u05e5\u05e7\u0003=\u001c\u0000\u05e6\u05e5\u0001\u0000"+ - "\u0000\u0000\u05e6\u05e7\u0001\u0000\u0000\u0000\u05e7\u05eb\u0001\u0000"+ - "\u0000\u0000\u05e8\u05ec\u0005+\u0000\u0000\u05e9\u05ea\u0005-\u0000\u0000"+ - "\u05ea\u05ec\u0004\u001d\u0005\u0000\u05eb\u05e8\u0001\u0000\u0000\u0000"+ - "\u05eb\u05e9\u0001\u0000\u0000\u0000\u05ec\u05ed\u0001\u0000\u0000\u0000"+ - "\u05ed\u05eb\u0001\u0000\u0000\u0000\u05ed\u05ee\u0001\u0000\u0000\u0000"+ - "\u05ee\u05ef\u0001\u0000\u0000\u0000\u05ef\u05f0\u0006\u001d\u0001\u0000"+ - "\u05f0@\u0001\u0000\u0000\u0000\u05f1\u05f2\u0007\u0002\u0000\u0000\u05f2"+ - "B\u0001\u0000\u0000\u0000\u05f3\u05f4\u0007\u0003\u0000\u0000\u05f4D\u0001"+ - "\u0000\u0000\u0000\u05f5\u05f6\u0007\u0004\u0000\u0000\u05f6F\u0001\u0000"+ - "\u0000\u0000\u05f7\u05f8\u0007\u0005\u0000\u0000\u05f8\u05f9\u0007\u0006"+ - "\u0000\u0000\u05f9\u05fa\u0007\u0006\u0000\u0000\u05faH\u0001\u0000\u0000"+ - "\u0000\u05fb\u05fc\u0007\u0005\u0000\u0000\u05fc\u05fd\u0007\u0007\u0000"+ - "\u0000\u05fd\u05fe\u0007\u0005\u0000\u0000\u05fe\u05ff\u0007\u0006\u0000"+ - "\u0000\u05ff\u0600\u0007\b\u0000\u0000\u0600\u0601\u0007\t\u0000\u0000"+ - "\u0601\u0602\u0007\n\u0000\u0000\u0602J\u0001\u0000\u0000\u0000\u0603"+ - "\u0604\u0007\u0005\u0000\u0000\u0604\u0605\u0007\u0007\u0000\u0000\u0605"+ - "\u0606\u0007\u0005\u0000\u0000\u0606\u0607\u0007\u0006\u0000\u0000\u0607"+ - "\u0608\u0007\b\u0000\u0000\u0608\u0609\u0007\u000b\u0000\u0000\u0609\u060a"+ - "\u0007\n\u0000\u0000\u060aL\u0001\u0000\u0000\u0000\u060b\u060c\u0007"+ - "\u0005\u0000\u0000\u060c\u060d\u0007\u0007\u0000\u0000\u060d\u060e\u0007"+ - "\f\u0000\u0000\u060eN\u0001\u0000\u0000\u0000\u060f\u0610\u0007\u0005"+ - "\u0000\u0000\u0610\u0611\u0007\u0007\u0000\u0000\u0611\u0612\u0007\b\u0000"+ - "\u0000\u0612P\u0001\u0000\u0000\u0000\u0613\u0614\u0007\u0005\u0000\u0000"+ - "\u0614\u0615\u0007\r\u0000\u0000\u0615\u0616\u0007\r\u0000\u0000\u0616"+ - "\u0617\u0007\u0005\u0000\u0000\u0617\u0618\u0007\b\u0000\u0000\u0618R"+ - "\u0001\u0000\u0000\u0000\u0619\u061a\u0007\u0005\u0000\u0000\u061a\u061b"+ - "\u0007\t\u0000\u0000\u061bT\u0001\u0000\u0000\u0000\u061c\u061d\u0007"+ - "\u0005\u0000\u0000\u061d\u061e\u0007\t\u0000\u0000\u061e\u061f\u0007\u000e"+ - "\u0000\u0000\u061fV\u0001\u0000\u0000\u0000\u0620\u0621\u0007\u0005\u0000"+ - "\u0000\u0621\u0622\u0007\t\u0000\u0000\u0622\u0623\u0007\b\u0000\u0000"+ - "\u0623\u0624\u0007\u000f\u0000\u0000\u0624\u0625\u0007\u000f\u0000\u0000"+ - "\u0625\u0626\u0007\n\u0000\u0000\u0626\u0627\u0007\u0010\u0000\u0000\u0627"+ - "\u0628\u0007\r\u0000\u0000\u0628\u0629\u0007\u0011\u0000\u0000\u0629\u062a"+ - "\u0007\u000e\u0000\u0000\u062aX\u0001\u0000\u0000\u0000\u062b\u062c\u0007"+ - "\u0012\u0000\u0000\u062c\u062d\u0007\u0013\u0000\u0000\u062d\u062e\u0007"+ - "\u0010\u0000\u0000\u062e\u062f\u0007\u0014\u0000\u0000\u062fZ\u0001\u0000"+ - "\u0000\u0000\u0630\u0631\u0007\u000e\u0000\u0000\u0631\u0632\u0007\u0005"+ - "\u0000\u0000\u0632\u0633\u0007\t\u0000\u0000\u0633\u0634\u0007\n\u0000"+ - "\u0000\u0634\\\u0001\u0000\u0000\u0000\u0635\u0636\u0007\u000e\u0000\u0000"+ - "\u0636\u0637\u0007\u0005\u0000\u0000\u0637\u0638\u0007\t\u0000\u0000\u0638"+ - "\u0639\u0007\u0010\u0000\u0000\u0639^\u0001\u0000\u0000\u0000\u063a\u063b"+ - "\u0007\u000e\u0000\u0000\u063b\u063c\u0007\u0014\u0000\u0000\u063c\u063d"+ - "\u0007\n\u0000\u0000\u063d\u063e\u0007\u000e\u0000\u0000\u063e\u063f\u0007"+ - "\u0015\u0000\u0000\u063f`\u0001\u0000\u0000\u0000\u0640\u0641\u0007\u000e"+ - "\u0000\u0000\u0641\u0642\u0007\u0013\u0000\u0000\u0642\u0643\u0007\u0006"+ - "\u0000\u0000\u0643\u0644\u0007\u0006\u0000\u0000\u0644\u0645\u0007\u0005"+ - "\u0000\u0000\u0645\u0646\u0007\u0010\u0000\u0000\u0646\u0647\u0007\n\u0000"+ - "\u0000\u0647b\u0001\u0000\u0000\u0000\u0648\u0649\u0007\u000e\u0000\u0000"+ - "\u0649\u064a\u0007\u0013\u0000\u0000\u064a\u064b\u0007\u0006\u0000\u0000"+ - "\u064b\u064c\u0007\u0016\u0000\u0000\u064c\u064d\u0007\u000f\u0000\u0000"+ - "\u064d\u064e\u0007\u0007\u0000\u0000\u064ed\u0001\u0000\u0000\u0000\u064f"+ - "\u0650\u0007\u000e\u0000\u0000\u0650\u0651\u0007\u0013\u0000\u0000\u0651"+ - "\u0652\u0007\u0007\u0000\u0000\u0652\u0653\u0007\t\u0000\u0000\u0653\u0654"+ - "\u0007\u0010\u0000\u0000\u0654\u0655\u0007\r\u0000\u0000\u0655\u0656\u0007"+ - "\u0005\u0000\u0000\u0656\u0657\u0007\u0011\u0000\u0000\u0657\u0658\u0007"+ - "\u0007\u0000\u0000\u0658\u0659\u0007\u0010\u0000\u0000\u0659f\u0001\u0000"+ - "\u0000\u0000\u065a\u065b\u0007\u000e\u0000\u0000\u065b\u065c\u0007\r\u0000"+ - "\u0000\u065c\u065d\u0007\n\u0000\u0000\u065d\u065e\u0007\u0005\u0000\u0000"+ - "\u065e\u065f\u0007\u0010\u0000\u0000\u065f\u0660\u0007\n\u0000\u0000\u0660"+ - "h\u0001\u0000\u0000\u0000\u0661\u0662\u0007\u000e\u0000\u0000\u0662\u0663"+ - "\u0007\u0016\u0000\u0000\u0663\u0664\u0007\r\u0000\u0000\u0664\u0665\u0007"+ - "\r\u0000\u0000\u0665\u0666\u0007\n\u0000\u0000\u0666\u0667\u0007\u0007"+ - "\u0000\u0000\u0667\u0668\u0007\u0010\u0000\u0000\u0668\u0669\u0005_\u0000"+ - "\u0000\u0669\u066a\u0007\u000e\u0000\u0000\u066a\u066b\u0007\u0005\u0000"+ - "\u0000\u066b\u066c\u0007\u0010\u0000\u0000\u066c\u066d\u0007\u0005\u0000"+ - "\u0000\u066d\u066e\u0007\u0006\u0000\u0000\u066e\u066f\u0007\u0013\u0000"+ - "\u0000\u066f\u0670\u0007\u0017\u0000\u0000\u0670j\u0001\u0000\u0000\u0000"+ - "\u0671\u0672\u0007\u000e\u0000\u0000\u0672\u0673\u0007\u0016\u0000\u0000"+ - "\u0673\u0674\u0007\r\u0000\u0000\u0674\u0675\u0007\r\u0000\u0000\u0675"+ - "\u0676\u0007\n\u0000\u0000\u0676\u0677\u0007\u0007\u0000\u0000\u0677\u0678"+ - "\u0007\u0010\u0000\u0000\u0678\u0679\u0005_\u0000\u0000\u0679\u067a\u0007"+ - "\f\u0000\u0000\u067a\u067b\u0007\u0005\u0000\u0000\u067b\u067c\u0007\u0010"+ - "\u0000\u0000\u067c\u067d\u0007\n\u0000\u0000\u067dl\u0001\u0000\u0000"+ - "\u0000\u067e\u067f\u0007\u000e\u0000\u0000\u067f\u0680\u0007\u0016\u0000"+ - "\u0000\u0680\u0681\u0007\r\u0000\u0000\u0681\u0682\u0007\r\u0000\u0000"+ - "\u0682\u0683\u0007\n\u0000\u0000\u0683\u0684\u0007\u0007\u0000\u0000\u0684"+ - "\u0685\u0007\u0010\u0000\u0000\u0685\u0686\u0005_\u0000\u0000\u0686\u0687"+ - "\u0007\r\u0000\u0000\u0687\u0688\u0007\u0013\u0000\u0000\u0688\u0689\u0007"+ - "\u0006\u0000\u0000\u0689\u068a\u0007\n\u0000\u0000\u068an\u0001\u0000"+ - "\u0000\u0000\u068b\u068c\u0007\u000e\u0000\u0000\u068c\u068d\u0007\u0016"+ - "\u0000\u0000\u068d\u068e\u0007\r\u0000\u0000\u068e\u068f\u0007\r\u0000"+ - "\u0000\u068f\u0690\u0007\n\u0000\u0000\u0690\u0691\u0007\u0007\u0000\u0000"+ - "\u0691\u0692\u0007\u0010\u0000\u0000\u0692\u0693\u0005_\u0000\u0000\u0693"+ - "\u0694\u0007\u0010\u0000\u0000\u0694\u0695\u0007\u0011\u0000\u0000\u0695"+ - "\u0696\u0007\u000f\u0000\u0000\u0696\u0697\u0007\n\u0000\u0000\u0697p"+ - "\u0001\u0000\u0000\u0000\u0698\u0699\u0007\u000e\u0000\u0000\u0699\u069a"+ - "\u0007\u0016\u0000\u0000\u069a\u069b\u0007\r\u0000\u0000\u069b\u069c\u0007"+ - "\r\u0000\u0000\u069c\u069d\u0007\n\u0000\u0000\u069d\u069e\u0007\u0007"+ - "\u0000\u0000\u069e\u069f\u0007\u0010\u0000\u0000\u069f\u06a0\u0005_\u0000"+ - "\u0000\u06a0\u06a1\u0007\u0010\u0000\u0000\u06a1\u06a2\u0007\u0011\u0000"+ - "\u0000\u06a2\u06a3\u0007\u000f\u0000\u0000\u06a3\u06a4\u0007\n\u0000\u0000"+ - "\u06a4\u06a5\u0007\t\u0000\u0000\u06a5\u06a6\u0007\u0010\u0000\u0000\u06a6"+ - "\u06a7\u0007\u0005\u0000\u0000\u06a7\u06a8\u0007\u000f\u0000\u0000\u06a8"+ - "\u06a9\u0007\u0018\u0000\u0000\u06a9r\u0001\u0000\u0000\u0000\u06aa\u06ab"+ - "\u0007\u000e\u0000\u0000\u06ab\u06ac\u0007\u0016\u0000\u0000\u06ac\u06ad"+ - "\u0007\r\u0000\u0000\u06ad\u06ae\u0007\r\u0000\u0000\u06ae\u06af\u0007"+ - "\n\u0000\u0000\u06af\u06b0\u0007\u0007\u0000\u0000\u06b0\u06b1\u0007\u0010"+ - "\u0000\u0000\u06b1\u06b2\u0005_\u0000\u0000\u06b2\u06b3\u0007\u0016\u0000"+ - "\u0000\u06b3\u06b4\u0007\t\u0000\u0000\u06b4\u06b5\u0007\n\u0000\u0000"+ - "\u06b5\u06b6\u0007\r\u0000\u0000\u06b6t\u0001\u0000\u0000\u0000\u06b7"+ - "\u06b8\u0007\f\u0000\u0000\u06b8\u06b9\u0007\n\u0000\u0000\u06b9\u06ba"+ - "\u0007\u0019\u0000\u0000\u06ba\u06bb\u0007\u0005\u0000\u0000\u06bb\u06bc"+ - "\u0007\u0016\u0000\u0000\u06bc\u06bd\u0007\u0006\u0000\u0000\u06bd\u06be"+ - "\u0007\u0010\u0000\u0000\u06bev\u0001\u0000\u0000\u0000\u06bf\u06c0\u0007"+ - "\f\u0000\u0000\u06c0\u06c1\u0007\n\u0000\u0000\u06c1\u06c2\u0007\u0019"+ - "\u0000\u0000\u06c2\u06c3\u0007\n\u0000\u0000\u06c3\u06c4\u0007\r\u0000"+ - "\u0000\u06c4\u06c5\u0007\r\u0000\u0000\u06c5\u06c6\u0007\u0005\u0000\u0000"+ - "\u06c6\u06c7\u0007\u0012\u0000\u0000\u06c7\u06c8\u0007\u0006\u0000\u0000"+ - "\u06c8\u06c9\u0007\n\u0000\u0000\u06c9x\u0001\u0000\u0000\u0000\u06ca"+ - "\u06cb\u0007\f\u0000\u0000\u06cb\u06cc\u0007\n\u0000\u0000\u06cc\u06cd"+ - "\u0007\t\u0000\u0000\u06cd\u06ce\u0007\u000e\u0000\u0000\u06cez\u0001"+ - "\u0000\u0000\u0000\u06cf\u06d0\u0007\f\u0000\u0000\u06d0\u06d1\u0007\u0011"+ - "\u0000\u0000\u06d1\u06d2\u0007\t\u0000\u0000\u06d2\u06d3\u0007\u0010\u0000"+ - "\u0000\u06d3\u06d4\u0007\u0011\u0000\u0000\u06d4\u06d5\u0007\u0007\u0000"+ - "\u0000\u06d5\u06d6\u0007\u000e\u0000\u0000\u06d6\u06d7\u0007\u0010\u0000"+ - "\u0000\u06d7|\u0001\u0000\u0000\u0000\u06d8\u06d9\u0007\f\u0000\u0000"+ - "\u06d9\u06da\u0007\u0013\u0000\u0000\u06da~\u0001\u0000\u0000\u0000\u06db"+ - "\u06dc\u0007\n\u0000\u0000\u06dc\u06dd\u0007\u0006\u0000\u0000\u06dd\u06de"+ - "\u0007\t\u0000\u0000\u06de\u06df\u0007\n\u0000\u0000\u06df\u0080\u0001"+ - "\u0000\u0000\u0000\u06e0\u06e1\u0007\n\u0000\u0000\u06e1\u06e2\u0007\u001a"+ - "\u0000\u0000\u06e2\u06e3\u0007\u000e\u0000\u0000\u06e3\u06e4\u0007\n\u0000"+ - "\u0000\u06e4\u06e5\u0007\u0018\u0000\u0000\u06e5\u06e6\u0007\u0010\u0000"+ - "\u0000\u06e6\u0082\u0001\u0000\u0000\u0000\u06e7\u06e8\u0007\u0019\u0000"+ - "\u0000\u06e8\u06e9\u0007\u0005\u0000\u0000\u06e9\u06ea\u0007\u0006\u0000"+ - "\u0000\u06ea\u06eb\u0007\t\u0000\u0000\u06eb\u06ec\u0007\n\u0000\u0000"+ - "\u06ec\u0084\u0001\u0000\u0000\u0000\u06ed\u06ee\u0007\u0019\u0000\u0000"+ - "\u06ee\u06ef\u0007\n\u0000\u0000\u06ef\u06f0\u0007\u0010\u0000\u0000\u06f0"+ - "\u06f1\u0007\u000e\u0000\u0000\u06f1\u06f2\u0007\u0014\u0000\u0000\u06f2"+ - "\u0086\u0001\u0000\u0000\u0000\u06f3\u06f4\u0007\u0019\u0000\u0000\u06f4"+ - "\u06f5\u0007\u0013\u0000\u0000\u06f5\u06f6\u0007\r\u0000\u0000\u06f6\u0088"+ - "\u0001\u0000\u0000\u0000\u06f7\u06f8\u0007\u0019\u0000\u0000\u06f8\u06f9"+ - "\u0007\u0013\u0000\u0000\u06f9\u06fa\u0007\r\u0000\u0000\u06fa\u06fb\u0007"+ - "\n\u0000\u0000\u06fb\u06fc\u0007\u0011\u0000\u0000\u06fc\u06fd\u0007\u0017"+ - "\u0000\u0000\u06fd\u06fe\u0007\u0007\u0000\u0000\u06fe\u008a\u0001\u0000"+ - "\u0000\u0000\u06ff\u0700\u0007\u0019\u0000\u0000\u0700\u0701\u0007\r\u0000"+ - "\u0000\u0701\u0702\u0007\u0013\u0000\u0000\u0702\u0703\u0007\u000f\u0000"+ - "\u0000\u0703\u008c\u0001\u0000\u0000\u0000\u0704\u0705\u0007\u0017\u0000"+ - "\u0000\u0705\u0706\u0007\r\u0000\u0000\u0706\u0707\u0007\u0005\u0000\u0000"+ - "\u0707\u0708\u0007\u0007\u0000\u0000\u0708\u0709\u0007\u0010\u0000\u0000"+ - "\u0709\u008e\u0001\u0000\u0000\u0000\u070a\u070b\u0007\u0017\u0000\u0000"+ - "\u070b\u070c\u0007\r\u0000\u0000\u070c\u070d\u0007\u0013\u0000\u0000\u070d"+ - "\u070e\u0007\u0016\u0000\u0000\u070e\u070f\u0007\u0018\u0000\u0000\u070f"+ - "\u0090\u0001\u0000\u0000\u0000\u0710\u0711\u0007\u0014\u0000\u0000\u0711"+ - "\u0712\u0007\u0005\u0000\u0000\u0712\u0713\u0007\u001b\u0000\u0000\u0713"+ - "\u0714\u0007\u0011\u0000\u0000\u0714\u0715\u0007\u0007\u0000\u0000\u0715"+ - "\u0716\u0007\u0017\u0000\u0000\u0716\u0092\u0001\u0000\u0000\u0000\u0717"+ - "\u0718\u0007\u0011\u0000\u0000\u0718\u0719\u0007\u0007\u0000\u0000\u0719"+ - "\u0094\u0001\u0000\u0000\u0000\u071a\u071b\u0007\u0011\u0000\u0000\u071b"+ - "\u071c\u0007\u0007\u0000\u0000\u071c\u071d\u0007\u0011\u0000\u0000\u071d"+ - "\u071e\u0007\u0010\u0000\u0000\u071e\u071f\u0007\u0011\u0000\u0000\u071f"+ - "\u0720\u0007\u0005\u0000\u0000\u0720\u0721\u0007\u0006\u0000\u0000\u0721"+ - "\u0722\u0007\u0006\u0000\u0000\u0722\u0723\u0007\b\u0000\u0000\u0723\u0096"+ - "\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\n\u0000\u0000\u0728\u0729\u0007\r\u0000\u0000\u0729\u072a\u0007"+ - "\t\u0000\u0000\u072a\u072b\u0007\n\u0000\u0000\u072b\u072c\u0007\u000e"+ - "\u0000\u0000\u072c\u072d\u0007\u0010\u0000\u0000\u072d\u0098\u0001\u0000"+ - "\u0000\u0000\u072e\u072f\u0007\u0011\u0000\u0000\u072f\u0730\u0007\u0007"+ - "\u0000\u0000\u0730\u0731\u0007\u0010\u0000\u0000\u0731\u0732\u0007\u0013"+ - "\u0000\u0000\u0732\u009a\u0001\u0000\u0000\u0000\u0733\u0734\u0007\u0006"+ - "\u0000\u0000\u0734\u0735\u0007\u0005\u0000\u0000\u0735\u0736\u0007\u0010"+ - "\u0000\u0000\u0736\u0737\u0007\n\u0000\u0000\u0737\u0738\u0007\r\u0000"+ - "\u0000\u0738\u0739\u0007\u0005\u0000\u0000\u0739\u073a\u0007\u0006\u0000"+ - "\u0000\u073a\u009c\u0001\u0000\u0000\u0000\u073b\u073c\u0007\u0006\u0000"+ - "\u0000\u073c\u073d\u0007\n\u0000\u0000\u073d\u073e\u0007\u0005\u0000\u0000"+ - "\u073e\u073f\u0007\f\u0000\u0000\u073f\u0740\u0007\u0011\u0000\u0000\u0740"+ - "\u0741\u0007\u0007\u0000\u0000\u0741\u0742\u0007\u0017\u0000\u0000\u0742"+ - "\u009e\u0001\u0000\u0000\u0000\u0743\u0744\u0007\u0006\u0000\u0000\u0744"+ - "\u0745\u0007\u0011\u0000\u0000\u0745\u0746\u0007\u000f\u0000\u0000\u0746"+ - "\u0747\u0007\u0011\u0000\u0000\u0747\u0748\u0007\u0010\u0000\u0000\u0748"+ - "\u00a0\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\u00a2"+ - "\u0001\u0000\u0000\u0000\u0753\u0754\u0007\u0006\u0000\u0000\u0754\u0755"+ - "\u0007\u0013\u0000\u0000\u0755\u0756\u0007\u000e\u0000\u0000\u0756\u0757"+ - "\u0007\u0005\u0000\u0000\u0757\u0758\u0007\u0006\u0000\u0000\u0758\u0759"+ - "\u0007\u0010\u0000\u0000\u0759\u075a\u0007\u0011\u0000\u0000\u075a\u075b"+ - "\u0007\u000f\u0000\u0000\u075b\u075c\u0007\n\u0000\u0000\u075c\u075d\u0007"+ - "\t\u0000\u0000\u075d\u075e\u0007\u0010\u0000\u0000\u075e\u075f\u0007\u0005"+ - "\u0000\u0000\u075f\u0760\u0007\u000f\u0000\u0000\u0760\u0761\u0007\u0018"+ - "\u0000\u0000\u0761\u00a4\u0001\u0000\u0000\u0000\u0762\u0763\u0007\u0007"+ - "\u0000\u0000\u0763\u0764\u0007\u0013\u0000\u0000\u0764\u0765\u0007\u0010"+ - "\u0000\u0000\u0765\u00a6\u0001\u0000\u0000\u0000\u0766\u0767\u0007\u0007"+ - "\u0000\u0000\u0767\u0768\u0007\u0016\u0000\u0000\u0768\u0769\u0007\u0006"+ - "\u0000\u0000\u0769\u076a\u0007\u0006\u0000\u0000\u076a\u00a8\u0001\u0000"+ - "\u0000\u0000\u076b\u076c\u0007\u0013\u0000\u0000\u076c\u076d\u0007\u0019"+ - "\u0000\u0000\u076d\u076e\u0007\u0019\u0000\u0000\u076e\u076f\u0007\t\u0000"+ - "\u0000\u076f\u0770\u0007\n\u0000\u0000\u0770\u0771\u0007\u0010\u0000\u0000"+ - "\u0771\u00aa\u0001\u0000\u0000\u0000\u0772\u0773\u0007\u0013\u0000\u0000"+ - "\u0773\u0774\u0007\u0007\u0000\u0000\u0774\u00ac\u0001\u0000\u0000\u0000"+ - "\u0775\u0776\u0007\u0013\u0000\u0000\u0776\u0777\u0007\u0007\u0000\u0000"+ - "\u0777\u0778\u0007\u0006\u0000\u0000\u0778\u0779\u0007\b\u0000\u0000\u0779"+ - "\u00ae\u0001\u0000\u0000\u0000\u077a\u077b\u0007\u0013\u0000\u0000\u077b"+ - "\u077c\u0007\r\u0000\u0000\u077c\u00b0\u0001\u0000\u0000\u0000\u077d\u077e"+ - "\u0007\u0013\u0000\u0000\u077e\u077f\u0007\r\u0000\u0000\u077f\u0780\u0007"+ - "\f\u0000\u0000\u0780\u0781\u0007\n\u0000\u0000\u0781\u0782\u0007\r\u0000"+ - "\u0000\u0782\u00b2\u0001\u0000\u0000\u0000\u0783\u0784\u0007\u0018\u0000"+ - "\u0000\u0784\u0785\u0007\u0006\u0000\u0000\u0785\u0786\u0007\u0005\u0000"+ - "\u0000\u0786\u0787\u0007\u000e\u0000\u0000\u0787\u0788\u0007\u0011\u0000"+ - "\u0000\u0788\u0789\u0007\u0007\u0000\u0000\u0789\u078a\u0007\u0017\u0000"+ - "\u0000\u078a\u00b4\u0001\u0000\u0000\u0000\u078b\u078c\u0007\u0018\u0000"+ - "\u0000\u078c\u078d\u0007\r\u0000\u0000\u078d\u078e\u0007\u0011\u0000\u0000"+ - "\u078e\u078f\u0007\u000f\u0000\u0000\u078f\u0790\u0007\u0005\u0000\u0000"+ - "\u0790\u0791\u0007\r\u0000\u0000\u0791\u0792\u0007\b\u0000\u0000\u0792"+ - "\u00b6\u0001\u0000\u0000\u0000\u0793\u0794\u0007\r\u0000\u0000\u0794\u0795"+ - "\u0007\n\u0000\u0000\u0795\u0796\u0007\u0019\u0000\u0000\u0796\u0797\u0007"+ - "\n\u0000\u0000\u0797\u0798\u0007\r\u0000\u0000\u0798\u0799\u0007\n\u0000"+ - "\u0000\u0799\u079a\u0007\u0007\u0000\u0000\u079a\u079b\u0007\u000e\u0000"+ - "\u0000\u079b\u079c\u0007\n\u0000\u0000\u079c\u079d\u0007\t\u0000\u0000"+ - "\u079d\u00b8\u0001\u0000\u0000\u0000\u079e\u079f\u0007\r\u0000\u0000\u079f"+ - "\u07a0\u0007\n\u0000\u0000\u07a0\u07a1\u0007\u0010\u0000\u0000\u07a1\u07a2"+ - "\u0007\u0016\u0000\u0000\u07a2\u07a3\u0007\r\u0000\u0000\u07a3\u07a4\u0007"+ - "\u0007\u0000\u0000\u07a4\u07a5\u0007\u0011\u0000\u0000\u07a5\u07a6\u0007"+ - "\u0007\u0000\u0000\u07a6\u07a7\u0007\u0017\u0000\u0000\u07a7\u00ba\u0001"+ - "\u0000\u0000\u0000\u07a8\u07a9\u0007\t\u0000\u0000\u07a9\u07aa\u0007\n"+ - "\u0000\u0000\u07aa\u07ab\u0007\u0006\u0000\u0000\u07ab\u07ac\u0007\n\u0000"+ - "\u0000\u07ac\u07ad\u0007\u000e\u0000\u0000\u07ad\u07ae\u0007\u0010\u0000"+ - "\u0000\u07ae\u00bc\u0001\u0000\u0000\u0000\u07af\u07b0\u0007\t\u0000\u0000"+ - "\u07b0\u07b1\u0007\n\u0000\u0000\u07b1\u07b2\u0007\t\u0000\u0000\u07b2"+ - "\u07b3\u0007\t\u0000\u0000\u07b3\u07b4\u0007\u0011\u0000\u0000\u07b4\u07b5"+ - "\u0007\u0013\u0000\u0000\u07b5\u07b6\u0007\u0007\u0000\u0000\u07b6\u07b7"+ - "\u0005_\u0000\u0000\u07b7\u07b8\u0007\u0016\u0000\u0000\u07b8\u07b9\u0007"+ - "\t\u0000\u0000\u07b9\u07ba\u0007\n\u0000\u0000\u07ba\u07bb\u0007\r\u0000"+ - "\u0000\u07bb\u00be\u0001\u0000\u0000\u0000\u07bc\u07bd\u0007\t\u0000\u0000"+ - "\u07bd\u07be\u0007\u0013\u0000\u0000\u07be\u07bf\u0007\u000f\u0000\u0000"+ - "\u07bf\u07c0\u0007\n\u0000\u0000\u07c0\u00c0\u0001\u0000\u0000\u0000\u07c1"+ - "\u07c2\u0007\t\u0000\u0000\u07c2\u07c3\u0007\b\u0000\u0000\u07c3\u07c4"+ - "\u0007\u000f\u0000\u0000\u07c4\u07c5\u0007\u000f\u0000\u0000\u07c5\u07c6"+ - "\u0007\n\u0000\u0000\u07c6\u07c7\u0007\u0010\u0000\u0000\u07c7\u07c8\u0007"+ - "\r\u0000\u0000\u07c8\u07c9\u0007\u0011\u0000\u0000\u07c9\u07ca\u0007\u000e"+ - "\u0000\u0000\u07ca\u00c2\u0001\u0000\u0000\u0000\u07cb\u07cc\u0007\u0010"+ - "\u0000\u0000\u07cc\u07cd\u0007\u0005\u0000\u0000\u07cd\u07ce\u0007\u0012"+ - "\u0000\u0000\u07ce\u07cf\u0007\u0006\u0000\u0000\u07cf\u07d0\u0007\n\u0000"+ - "\u0000\u07d0\u00c4\u0001\u0000\u0000\u0000\u07d1\u07d2\u0007\u0010\u0000"+ - "\u0000\u07d2\u07d3\u0007\u0014\u0000\u0000\u07d3\u07d4\u0007\n\u0000\u0000"+ - "\u07d4\u07d5\u0007\u0007\u0000\u0000\u07d5\u00c6\u0001\u0000\u0000\u0000"+ - "\u07d6\u07d7\u0007\u0010\u0000\u0000\u07d7\u07d8\u0007\u0013\u0000\u0000"+ - "\u07d8\u00c8\u0001\u0000\u0000\u0000\u07d9\u07da\u0007\u0010\u0000\u0000"+ - "\u07da\u07db\u0007\u0013\u0000\u0000\u07db\u07dc\u0007\u0018\u0000\u0000"+ - "\u07dc\u07dd\u0007\u0011\u0000\u0000\u07dd\u07de\u0007\u000e\u0000\u0000"+ - "\u07de\u00ca\u0001\u0000\u0000\u0000\u07df\u07e0\u0007\u0010\u0000\u0000"+ - "\u07e0\u07e1\u0007\u0013\u0000\u0000\u07e1\u07e2\u0007\u0018\u0000\u0000"+ - "\u07e2\u07e3\u0007\u0011\u0000\u0000\u07e3\u07e4\u0007\u000e\u0000\u0000"+ - "\u07e4\u07e5\u0007\t\u0000\u0000\u07e5\u00cc\u0001\u0000\u0000\u0000\u07e6"+ - "\u07e7\u0007\t\u0000\u0000\u07e7\u07e8\u0007\u0010\u0000\u0000\u07e8\u07e9"+ - "\u0007\r\u0000\u0000\u07e9\u07ea\u0007\n\u0000\u0000\u07ea\u07eb\u0007"+ - "\u0005\u0000\u0000\u07eb\u07ec\u0007\u000f\u0000\u0000\u07ec\u00ce\u0001"+ - "\u0000\u0000\u0000\u07ed\u07ee\u0007\u000b\u0000\u0000\u07ee\u07ef\u0007"+ - "\u001b\u0000\u0000\u07ef\u07f0\u0007\u0011\u0000\u0000\u07f0\u07f1\u0007"+ - "\n\u0000\u0000\u07f1\u07f2\u0007\u001c\u0000\u0000\u07f2\u00d0\u0001\u0000"+ - "\u0000\u0000\u07f3\u07f4\u0007\u000b\u0000\u0000\u07f4\u07f5\u0007\u001b"+ - "\u0000\u0000\u07f5\u07f6\u0007\u0011\u0000\u0000\u07f6\u07f7\u0007\n\u0000"+ - "\u0000\u07f7\u07f8\u0007\u001c\u0000\u0000\u07f8\u07f9\u0007\t\u0000\u0000"+ - "\u07f9\u00d2\u0001\u0000\u0000\u0000\u07fa\u07fb\u0007\u0010\u0000\u0000"+ - "\u07fb\u07fc\u0007\r\u0000\u0000\u07fc\u07fd\u0007\u0005\u0000\u0000\u07fd"+ - "\u07fe\u0007\u0011\u0000\u0000\u07fe\u07ff\u0007\u0006\u0000\u0000\u07ff"+ - "\u0800\u0007\u0011\u0000\u0000\u0800\u0801\u0007\u0007\u0000\u0000\u0801"+ - "\u0802\u0007\u0017\u0000\u0000\u0802\u00d4\u0001\u0000\u0000\u0000\u0803"+ - "\u0804\u0007\u0010\u0000\u0000\u0804\u0805\u0007\r\u0000\u0000\u0805\u0806"+ - "\u0007\u0016\u0000\u0000\u0806\u0807\u0007\n\u0000\u0000\u0807\u00d6\u0001"+ - "\u0000\u0000\u0000\u0808\u0809\u0007\u0016\u0000\u0000\u0809\u080a\u0007"+ - "\u0007\u0000\u0000\u080a\u080b\u0007\u0011\u0000\u0000\u080b\u080c\u0007"+ - "\u0013\u0000\u0000\u080c\u080d\u0007\u0007\u0000\u0000\u080d\u00d8\u0001"+ - "\u0000\u0000\u0000\u080e\u080f\u0007\u0016\u0000\u0000\u080f\u0810\u0007"+ - "\u0007\u0000\u0000\u0810\u0811\u0007\u0011\u0000\u0000\u0811\u0812\u0007"+ - "\u001d\u0000\u0000\u0812\u0813\u0007\u0016\u0000\u0000\u0813\u0814\u0007"+ - "\n\u0000\u0000\u0814\u00da\u0001\u0000\u0000\u0000\u0815\u0816\u0007\u0016"+ - "\u0000\u0000\u0816\u0817\u0007\t\u0000\u0000\u0817\u0818\u0007\n\u0000"+ - "\u0000\u0818\u0819\u0007\r\u0000\u0000\u0819\u00dc\u0001\u0000\u0000\u0000"+ - "\u081a\u081b\u0007\u0016\u0000\u0000\u081b\u081c\u0007\t\u0000\u0000\u081c"+ - "\u081d\u0007\u0011\u0000\u0000\u081d\u081e\u0007\u0007\u0000\u0000\u081e"+ - "\u081f\u0007\u0017\u0000\u0000\u081f\u00de\u0001\u0000\u0000\u0000\u0820"+ - "\u0821\u0007\u001b\u0000\u0000\u0821\u0822\u0007\u0005\u0000\u0000\u0822"+ - "\u0823\u0007\r\u0000\u0000\u0823\u0824\u0007\u0011\u0000\u0000\u0824\u0825"+ - "\u0007\u0005\u0000\u0000\u0825\u0826\u0007\f\u0000\u0000\u0826\u0827\u0007"+ - "\u0011\u0000\u0000\u0827\u0828\u0007\u000e\u0000\u0000\u0828\u00e0\u0001"+ - "\u0000\u0000\u0000\u0829\u082a\u0007\u001c\u0000\u0000\u082a\u082b\u0007"+ - "\u0014\u0000\u0000\u082b\u082c\u0007\n\u0000\u0000\u082c\u082d\u0007\u0007"+ - "\u0000\u0000\u082d\u00e2\u0001\u0000\u0000\u0000\u082e\u082f\u0007\u001c"+ - "\u0000\u0000\u082f\u0830\u0007\u0014\u0000\u0000\u0830\u0831\u0007\n\u0000"+ - "\u0000\u0831\u0832\u0007\r\u0000\u0000\u0832\u0833\u0007\n\u0000\u0000"+ - "\u0833\u00e4\u0001\u0000\u0000\u0000\u0834\u0835\u0007\u001c\u0000\u0000"+ - "\u0835\u0836\u0007\u0011\u0000\u0000\u0836\u0837\u0007\u0007\u0000\u0000"+ - "\u0837\u0838\u0007\f\u0000\u0000\u0838\u0839\u0007\u0013\u0000\u0000\u0839"+ - "\u083a\u0007\u001c\u0000\u0000\u083a\u00e6\u0001\u0000\u0000\u0000\u083b"+ - "\u083c\u0007\u001c\u0000\u0000\u083c\u083d\u0007\u0011\u0000\u0000\u083d"+ - "\u083e\u0007\u0010\u0000\u0000\u083e\u083f\u0007\u0014\u0000\u0000\u083f"+ - "\u00e8\u0001\u0000\u0000\u0000\u0840\u0841\u0007\u0005\u0000\u0000\u0841"+ - "\u0842\u0007\u0016\u0000\u0000\u0842\u0843\u0007\u0010\u0000\u0000\u0843"+ - "\u0844\u0007\u0014\u0000\u0000\u0844\u0845\u0007\u0013\u0000\u0000\u0845"+ - "\u0846\u0007\r\u0000\u0000\u0846\u0847\u0007\u0011\u0000\u0000\u0847\u0848"+ - "\u0007\u000b\u0000\u0000\u0848\u0849\u0007\u0005\u0000\u0000\u0849\u084a"+ - "\u0007\u0010\u0000\u0000\u084a\u084b\u0007\u0011\u0000\u0000\u084b\u084c"+ - "\u0007\u0013\u0000\u0000\u084c\u084d\u0007\u0007\u0000\u0000\u084d\u00ea"+ - "\u0001\u0000\u0000\u0000\u084e\u084f\u0007\u0012\u0000\u0000\u084f\u0850"+ - "\u0007\u0011\u0000\u0000\u0850\u0851\u0007\u0007\u0000\u0000\u0851\u0852"+ - "\u0007\u0005\u0000\u0000\u0852\u0853\u0007\r\u0000\u0000\u0853\u0854\u0007"+ - "\b\u0000\u0000\u0854\u00ec\u0001\u0000\u0000\u0000\u0855\u0856\u0007\u000e"+ - "\u0000\u0000\u0856\u0857\u0007\u0013\u0000\u0000\u0857\u0858\u0007\u0006"+ - "\u0000\u0000\u0858\u0859\u0007\u0006\u0000\u0000\u0859\u085a\u0007\u0005"+ - "\u0000\u0000\u085a\u085b\u0007\u0010\u0000\u0000\u085b\u085c\u0007\u0011"+ - "\u0000\u0000\u085c\u085d\u0007\u0013\u0000\u0000\u085d\u085e\u0007\u0007"+ - "\u0000\u0000\u085e\u00ee\u0001\u0000\u0000\u0000\u085f\u0860\u0007\u000e"+ - "\u0000\u0000\u0860\u0861\u0007\u0013\u0000\u0000\u0861\u0862\u0007\u0007"+ - "\u0000\u0000\u0862\u0863\u0007\u000e\u0000\u0000\u0863\u0864\u0007\u0016"+ - "\u0000\u0000\u0864\u0865\u0007\r\u0000\u0000\u0865\u0866\u0007\r\u0000"+ - "\u0000\u0866\u0867\u0007\n\u0000\u0000\u0867\u0868\u0007\u0007\u0000\u0000"+ - "\u0868\u0869\u0007\u0010\u0000\u0000\u0869\u086a\u0007\u0006\u0000\u0000"+ - "\u086a\u086b\u0007\b\u0000\u0000\u086b\u00f0\u0001\u0000\u0000\u0000\u086c"+ - "\u086d\u0007\u000e\u0000\u0000\u086d\u086e\u0007\r\u0000\u0000\u086e\u086f"+ - "\u0007\u0013\u0000\u0000\u086f\u0870\u0007\t\u0000\u0000\u0870\u0871\u0007"+ - "\t\u0000\u0000\u0871\u00f2\u0001\u0000\u0000\u0000\u0872\u0873\u0007\u000e"+ - "\u0000\u0000\u0873\u0874\u0007\u0016\u0000\u0000\u0874\u0875\u0007\r\u0000"+ - "\u0000\u0875\u0876\u0007\r\u0000\u0000\u0876\u0877\u0007\n\u0000\u0000"+ - "\u0877\u0878\u0007\u0007\u0000\u0000\u0878\u0879\u0007\u0010\u0000\u0000"+ - "\u0879\u087a\u0005_\u0000\u0000\u087a\u087b\u0007\t\u0000\u0000\u087b"+ - "\u087c\u0007\u000e\u0000\u0000\u087c\u087d\u0007\u0014\u0000\u0000\u087d"+ - "\u087e\u0007\n\u0000\u0000\u087e\u087f\u0007\u000f\u0000\u0000\u087f\u0880"+ - "\u0007\u0005\u0000\u0000\u0880\u00f4\u0001\u0000\u0000\u0000\u0881\u0882"+ - "\u0007\u0019\u0000\u0000\u0882\u0883\u0007\r\u0000\u0000\u0883\u0884\u0007"+ - "\n\u0000\u0000\u0884\u0885\u0007\n\u0000\u0000\u0885\u0886\u0007\u000b"+ - "\u0000\u0000\u0886\u0887\u0007\n\u0000\u0000\u0887\u00f6\u0001\u0000\u0000"+ - "\u0000\u0888\u0889\u0007\u0019\u0000\u0000\u0889\u088a\u0007\u0016\u0000"+ - "\u0000\u088a\u088b\u0007\u0006\u0000\u0000\u088b\u088c\u0007\u0006\u0000"+ - "\u0000\u088c\u00f8\u0001\u0000\u0000\u0000\u088d\u088e\u0007\u0011\u0000"+ - "\u0000\u088e\u088f\u0007\u0006\u0000\u0000\u088f\u0890\u0007\u0011\u0000"+ - "\u0000\u0890\u0891\u0007\u0015\u0000\u0000\u0891\u0892\u0007\n\u0000\u0000"+ - "\u0892\u00fa\u0001\u0000\u0000\u0000\u0893\u0894\u0007\u0011\u0000\u0000"+ - "\u0894\u0895\u0007\u0007\u0000\u0000\u0895\u0896\u0007\u0007\u0000\u0000"+ - "\u0896\u0897\u0007\n\u0000\u0000\u0897\u0898\u0007\r\u0000\u0000\u0898"+ - "\u00fc\u0001\u0000\u0000\u0000\u0899\u089a\u0007\u0011\u0000\u0000\u089a"+ - "\u089b\u0007\t\u0000\u0000\u089b\u00fe\u0001\u0000\u0000\u0000\u089c\u089d"+ - "\u0007\u0011\u0000\u0000\u089d\u089e\u0007\t\u0000\u0000\u089e\u089f\u0007"+ - "\u0007\u0000\u0000\u089f\u08a0\u0007\u0016\u0000\u0000\u08a0\u08a1\u0007"+ - "\u0006\u0000\u0000\u08a1\u08a2\u0007\u0006\u0000\u0000\u08a2\u0100\u0001"+ - "\u0000\u0000\u0000\u08a3\u08a4\u0007\u001e\u0000\u0000\u08a4\u08a5\u0007"+ - "\u0013\u0000\u0000\u08a5\u08a6\u0007\u0011\u0000\u0000\u08a6\u08a7\u0007"+ - "\u0007\u0000\u0000\u08a7\u0102\u0001\u0000\u0000\u0000\u08a8\u08a9\u0007"+ - "\u0006\u0000\u0000\u08a9\u08aa\u0007\n\u0000\u0000\u08aa\u08ab\u0007\u0019"+ - "\u0000\u0000\u08ab\u08ac\u0007\u0010\u0000\u0000\u08ac\u0104\u0001\u0000"+ - "\u0000\u0000\u08ad\u08ae\u0007\u0006\u0000\u0000\u08ae\u08af\u0007\u0011"+ - "\u0000\u0000\u08af\u08b0\u0007\u0015\u0000\u0000\u08b0\u08b1\u0007\n\u0000"+ - "\u0000\u08b1\u0106\u0001\u0000\u0000\u0000\u08b2\u08b3\u0007\u0007\u0000"+ - "\u0000\u08b3\u08b4\u0007\u0005\u0000\u0000\u08b4\u08b5\u0007\u0010\u0000"+ - "\u0000\u08b5\u08b6\u0007\u0016\u0000\u0000\u08b6\u08b7\u0007\r\u0000\u0000"+ - "\u08b7\u08b8\u0007\u0005\u0000\u0000\u08b8\u08b9\u0007\u0006\u0000\u0000"+ - "\u08b9\u0108\u0001\u0000\u0000\u0000\u08ba\u08bb\u0007\u0007\u0000\u0000"+ - "\u08bb\u08bc\u0007\u0013\u0000\u0000\u08bc\u08bd\u0007\u0010\u0000\u0000"+ - "\u08bd\u08be\u0007\u0007\u0000\u0000\u08be\u08bf\u0007\u0016\u0000\u0000"+ - "\u08bf\u08c0\u0007\u0006\u0000\u0000\u08c0\u08c1\u0007\u0006\u0000\u0000"+ - "\u08c1\u010a\u0001\u0000\u0000\u0000\u08c2\u08c3\u0007\u0013\u0000\u0000"+ - "\u08c3\u08c4\u0007\u0016\u0000\u0000\u08c4\u08c5\u0007\u0010\u0000\u0000"+ - "\u08c5\u08c6\u0007\n\u0000\u0000\u08c6\u08c7\u0007\r\u0000\u0000\u08c7"+ - "\u010c\u0001\u0000\u0000\u0000\u08c8\u08c9\u0007\u0013\u0000\u0000\u08c9"+ - "\u08ca\u0007\u001b\u0000\u0000\u08ca\u08cb\u0007\n\u0000\u0000\u08cb\u08cc"+ - "\u0007\r\u0000\u0000\u08cc\u010e\u0001\u0000\u0000\u0000\u08cd\u08ce\u0007"+ - "\u0013\u0000\u0000\u08ce\u08cf\u0007\u001b\u0000\u0000\u08cf\u08d0\u0007"+ - "\n\u0000\u0000\u08d0\u08d1\u0007\r\u0000\u0000\u08d1\u08d2\u0007\u0006"+ - "\u0000\u0000\u08d2\u08d3\u0007\u0005\u0000\u0000\u08d3\u08d4\u0007\u0018"+ - "\u0000\u0000\u08d4\u08d5\u0007\t\u0000\u0000\u08d5\u0110\u0001\u0000\u0000"+ - "\u0000\u08d6\u08d7\u0007\r\u0000\u0000\u08d7\u08d8\u0007\u0011\u0000\u0000"+ - "\u08d8\u08d9\u0007\u0017\u0000\u0000\u08d9\u08da\u0007\u0014\u0000\u0000"+ - "\u08da\u08db\u0007\u0010\u0000\u0000\u08db\u0112\u0001\u0000\u0000\u0000"+ - "\u08dc\u08dd\u0007\t\u0000\u0000\u08dd\u08de\u0007\u0011\u0000\u0000\u08de"+ - "\u08df\u0007\u000f\u0000\u0000\u08df\u08e0\u0007\u0011\u0000\u0000\u08e0"+ - "\u08e1\u0007\u0006\u0000\u0000\u08e1\u08e2\u0007\u0005\u0000\u0000\u08e2"+ - "\u08e3\u0007\r\u0000\u0000\u08e3\u0114\u0001\u0000\u0000\u0000\u08e4\u08e5"+ - "\u0007\u001b\u0000\u0000\u08e5\u08e6\u0007\n\u0000\u0000\u08e6\u08e7\u0007"+ - "\r\u0000\u0000\u08e7\u08e8\u0007\u0012\u0000\u0000\u08e8\u08e9\u0007\u0013"+ - "\u0000\u0000\u08e9\u08ea\u0007\t\u0000\u0000\u08ea\u08eb\u0007\n\u0000"+ - "\u0000\u08eb\u0116\u0001\u0000\u0000\u0000\u08ec\u08ed\u0007\u0005\u0000"+ - "\u0000\u08ed\u08ee\u0007\u0012\u0000\u0000\u08ee\u08ef\u0007\u0013\u0000"+ - "\u0000\u08ef\u08f0\u0007\r\u0000\u0000\u08f0\u08f1\u0007\u0010\u0000\u0000"+ - "\u08f1\u0118\u0001\u0000\u0000\u0000\u08f2\u08f3\u0007\u0005\u0000\u0000"+ - "\u08f3\u08f4\u0007\u0012\u0000\u0000\u08f4\u08f5\u0007\t\u0000\u0000\u08f5"+ - "\u08f6\u0007\u0013\u0000\u0000\u08f6\u08f7\u0007\u0006\u0000\u0000\u08f7"+ - "\u08f8\u0007\u0016\u0000\u0000\u08f8\u08f9\u0007\u0010\u0000\u0000\u08f9"+ - "\u08fa\u0007\n\u0000\u0000\u08fa\u011a\u0001\u0000\u0000\u0000\u08fb\u08fc"+ - "\u0007\u0005\u0000\u0000\u08fc\u08fd\u0007\u000e\u0000\u0000\u08fd\u08fe"+ - "\u0007\u000e\u0000\u0000\u08fe\u08ff\u0007\n\u0000\u0000\u08ff\u0900\u0007"+ - "\t\u0000\u0000\u0900\u0901\u0007\t\u0000\u0000\u0901\u011c\u0001\u0000"+ - "\u0000\u0000\u0902\u0903\u0007\u0005\u0000\u0000\u0903\u0904\u0007\u000e"+ - "\u0000\u0000\u0904\u0905\u0007\u0010\u0000\u0000\u0905\u0906\u0007\u0011"+ - "\u0000\u0000\u0906\u0907\u0007\u0013\u0000\u0000\u0907\u0908\u0007\u0007"+ - "\u0000\u0000\u0908\u011e\u0001\u0000\u0000\u0000\u0909\u090a\u0007\u0005"+ - "\u0000\u0000\u090a\u090b\u0007\f\u0000\u0000\u090b\u090c\u0007\f\u0000"+ - "\u0000\u090c\u0120\u0001\u0000\u0000\u0000\u090d\u090e\u0007\u0005\u0000"+ - "\u0000\u090e\u090f\u0007\f\u0000\u0000\u090f\u0910\u0007\u000f\u0000\u0000"+ - "\u0910\u0911\u0007\u0011\u0000\u0000\u0911\u0912\u0007\u0007\u0000\u0000"+ - "\u0912\u0122\u0001\u0000\u0000\u0000\u0913\u0914\u0007\u0005\u0000\u0000"+ - "\u0914\u0915\u0007\u0019\u0000\u0000\u0915\u0916\u0007\u0010\u0000\u0000"+ - "\u0916\u0917\u0007\n\u0000\u0000\u0917\u0918\u0007\r\u0000\u0000\u0918"+ - "\u0124\u0001\u0000\u0000\u0000\u0919\u091a\u0007\u0005\u0000\u0000\u091a"+ - "\u091b\u0007\u0017\u0000\u0000\u091b\u091c\u0007\u0017\u0000\u0000\u091c"+ - "\u091d\u0007\r\u0000\u0000\u091d\u091e\u0007\n\u0000\u0000\u091e\u091f"+ - "\u0007\u0017\u0000\u0000\u091f\u0920\u0007\u0005\u0000\u0000\u0920\u0921"+ - "\u0007\u0010\u0000\u0000\u0921\u0922\u0007\n\u0000\u0000\u0922\u0126\u0001"+ - "\u0000\u0000\u0000\u0923\u0924\u0007\u0005\u0000\u0000\u0924\u0925\u0007"+ - "\u0006\u0000\u0000\u0925\u0926\u0007\t\u0000\u0000\u0926\u0927\u0007\u0013"+ - "\u0000\u0000\u0927\u0128\u0001\u0000\u0000\u0000\u0928\u0929\u0007\u0005"+ - "\u0000\u0000\u0929\u092a\u0007\u0006\u0000\u0000\u092a\u092b\u0007\u0010"+ - "\u0000\u0000\u092b\u092c\u0007\n\u0000\u0000\u092c\u092d\u0007\r\u0000"+ - "\u0000\u092d\u012a\u0001\u0000\u0000\u0000\u092e\u092f\u0007\u0005\u0000"+ - "\u0000\u092f\u0930\u0007\u0006\u0000\u0000\u0930\u0931\u0007\u001c\u0000"+ - "\u0000\u0931\u0932\u0007\u0005\u0000\u0000\u0932\u0933\u0007\b\u0000\u0000"+ - "\u0933\u0934\u0007\t\u0000\u0000\u0934\u012c\u0001\u0000\u0000\u0000\u0935"+ - "\u0936\u0007\u0005\u0000\u0000\u0936\u0937\u0007\t\u0000\u0000\u0937\u0938"+ - "\u0007\t\u0000\u0000\u0938\u0939\u0007\n\u0000\u0000\u0939\u093a\u0007"+ - "\r\u0000\u0000\u093a\u093b\u0007\u0010\u0000\u0000\u093b\u093c\u0007\u0011"+ - "\u0000\u0000\u093c\u093d\u0007\u0013\u0000\u0000\u093d\u093e\u0007\u0007"+ - "\u0000\u0000\u093e\u012e\u0001\u0000\u0000\u0000\u093f\u0940\u0007\u0005"+ - "\u0000\u0000\u0940\u0941\u0007\t\u0000\u0000\u0941\u0942\u0007\t\u0000"+ - "\u0000\u0942\u0943\u0007\u0011\u0000\u0000\u0943\u0944\u0007\u0017\u0000"+ - "\u0000\u0944\u0945\u0007\u0007\u0000\u0000\u0945\u0946\u0007\u000f\u0000"+ - "\u0000\u0946\u0947\u0007\n\u0000\u0000\u0947\u0948\u0007\u0007\u0000\u0000"+ - "\u0948\u0949\u0007\u0010\u0000\u0000\u0949\u0130\u0001\u0000\u0000\u0000"+ - "\u094a\u094b\u0007\u0005\u0000\u0000\u094b\u094c\u0007\u0010\u0000\u0000"+ - "\u094c\u0132\u0001\u0000\u0000\u0000\u094d\u094e\u0007\u0005\u0000\u0000"+ - "\u094e\u094f\u0007\u0010\u0000\u0000\u094f\u0950\u0007\u0010\u0000\u0000"+ - "\u0950\u0951\u0007\r\u0000\u0000\u0951\u0952\u0007\u0011\u0000\u0000\u0952"+ - "\u0953\u0007\u0012\u0000\u0000\u0953\u0954\u0007\u0016\u0000\u0000\u0954"+ - "\u0955\u0007\u0010\u0000\u0000\u0955\u0956\u0007\n\u0000\u0000\u0956\u0134"+ - "\u0001\u0000\u0000\u0000\u0957\u0958\u0007\u0012\u0000\u0000\u0958\u0959"+ - "\u0007\u0005\u0000\u0000\u0959\u095a\u0007\u000e\u0000\u0000\u095a\u095b"+ - "\u0007\u0015\u0000\u0000\u095b\u095c\u0007\u001c\u0000\u0000\u095c\u095d"+ - "\u0007\u0005\u0000\u0000\u095d\u095e\u0007\r\u0000\u0000\u095e\u095f\u0007"+ - "\f\u0000\u0000\u095f\u0136\u0001\u0000\u0000\u0000\u0960\u0961\u0007\u0012"+ - "\u0000\u0000\u0961\u0962\u0007\n\u0000\u0000\u0962\u0963\u0007\u0019\u0000"+ - "\u0000\u0963\u0964\u0007\u0013\u0000\u0000\u0964\u0965\u0007\r\u0000\u0000"+ - "\u0965\u0966\u0007\n\u0000\u0000\u0966\u0138\u0001\u0000\u0000\u0000\u0967"+ - "\u0968\u0007\u0012\u0000\u0000\u0968\u0969\u0007\n\u0000\u0000\u0969\u096a"+ - "\u0007\u0017\u0000\u0000\u096a\u096b\u0007\u0011\u0000\u0000\u096b\u096c"+ - "\u0007\u0007\u0000\u0000\u096c\u013a\u0001\u0000\u0000\u0000\u096d\u096e"+ - "\u0007\u0012\u0000\u0000\u096e\u096f\u0007\b\u0000\u0000\u096f\u013c\u0001"+ - "\u0000\u0000\u0000\u0970\u0971\u0007\u000e\u0000\u0000\u0971\u0972\u0007"+ - "\u0005\u0000\u0000\u0972\u0973\u0007\u000e\u0000\u0000\u0973\u0974\u0007"+ - "\u0014\u0000\u0000\u0974\u0975\u0007\n\u0000\u0000\u0975\u013e\u0001\u0000"+ - "\u0000\u0000\u0976\u0977\u0007\u000e\u0000\u0000\u0977\u0978\u0007\u0005"+ - "\u0000\u0000\u0978\u0979\u0007\u0006\u0000\u0000\u0979\u097a\u0007\u0006"+ - "\u0000\u0000\u097a\u097b\u0007\n\u0000\u0000\u097b\u097c\u0007\f\u0000"+ - "\u0000\u097c\u0140\u0001\u0000\u0000\u0000\u097d\u097e\u0007\u000e\u0000"+ - "\u0000\u097e\u097f\u0007\u0005\u0000\u0000\u097f\u0980\u0007\t\u0000\u0000"+ - "\u0980\u0981\u0007\u000e\u0000\u0000\u0981\u0982\u0007\u0005\u0000\u0000"+ - "\u0982\u0983\u0007\f\u0000\u0000\u0983\u0984\u0007\n\u0000\u0000\u0984"+ - "\u0142\u0001\u0000\u0000\u0000\u0985\u0986\u0007\u000e\u0000\u0000\u0986"+ - "\u0987\u0007\u0005\u0000\u0000\u0987\u0988\u0007\t\u0000\u0000\u0988\u0989"+ - "\u0007\u000e\u0000\u0000\u0989\u098a\u0007\u0005\u0000\u0000\u098a\u098b"+ - "\u0007\f\u0000\u0000\u098b\u098c\u0007\n\u0000\u0000\u098c\u098d\u0007"+ - "\f\u0000\u0000\u098d\u0144\u0001\u0000\u0000\u0000\u098e\u098f\u0007\u000e"+ - "\u0000\u0000\u098f\u0990\u0007\u0005\u0000\u0000\u0990\u0991\u0007\u0010"+ - "\u0000\u0000\u0991\u0992\u0007\u0005\u0000\u0000\u0992\u0993\u0007\u0006"+ - "\u0000\u0000\u0993\u0994\u0007\u0013\u0000\u0000\u0994\u0995\u0007\u0017"+ - "\u0000\u0000\u0995\u0146\u0001\u0000\u0000\u0000\u0996\u0997\u0007\u000e"+ - "\u0000\u0000\u0997\u0998\u0007\u0014\u0000\u0000\u0998\u0999\u0007\u0005"+ - "\u0000\u0000\u0999\u099a\u0007\u0011\u0000\u0000\u099a\u099b\u0007\u0007"+ - "\u0000\u0000\u099b\u0148\u0001\u0000\u0000\u0000\u099c\u099d\u0007\u000e"+ - "\u0000\u0000\u099d\u099e\u0007\u0014\u0000\u0000\u099e\u099f\u0007\u0005"+ - "\u0000\u0000\u099f\u09a0\u0007\r\u0000\u0000\u09a0\u09a1\u0007\u0005\u0000"+ - "\u0000\u09a1\u09a2\u0007\u000e\u0000\u0000\u09a2\u09a3\u0007\u0010\u0000"+ - "\u0000\u09a3\u09a4\u0007\n\u0000\u0000\u09a4\u09a5\u0007\r\u0000\u0000"+ - "\u09a5\u09a6\u0007\u0011\u0000\u0000\u09a6\u09a7\u0007\t\u0000\u0000\u09a7"+ - "\u09a8\u0007\u0010\u0000\u0000\u09a8\u09a9\u0007\u0011\u0000\u0000\u09a9"+ - "\u09aa\u0007\u000e\u0000\u0000\u09aa\u09ab\u0007\t\u0000\u0000\u09ab\u014a"+ - "\u0001\u0000\u0000\u0000\u09ac\u09ad\u0007\u000e\u0000\u0000\u09ad\u09ae"+ - "\u0007\u0014\u0000\u0000\u09ae\u09af\u0007\n\u0000\u0000\u09af\u09b0\u0007"+ - "\u000e\u0000\u0000\u09b0\u09b1\u0007\u0015\u0000\u0000\u09b1\u09b2\u0007"+ - "\u0018\u0000\u0000\u09b2\u09b3\u0007\u0013\u0000\u0000\u09b3\u09b4\u0007"+ - "\u0011\u0000\u0000\u09b4\u09b5\u0007\u0007\u0000\u0000\u09b5\u09b6\u0007"+ - "\u0010\u0000\u0000\u09b6\u014c\u0001\u0000\u0000\u0000\u09b7\u09b8\u0007"+ - "\u000e\u0000\u0000\u09b8\u09b9\u0007\u0006\u0000\u0000\u09b9\u09ba\u0007"+ - "\u0005\u0000\u0000\u09ba\u09bb\u0007\t\u0000\u0000\u09bb\u09bc\u0007\t"+ - "\u0000\u0000\u09bc\u014e\u0001\u0000\u0000\u0000\u09bd\u09be\u0007\u000e"+ - "\u0000\u0000\u09be\u09bf\u0007\u0006\u0000\u0000\u09bf\u09c0\u0007\u0013"+ - "\u0000\u0000\u09c0\u09c1\u0007\t\u0000\u0000\u09c1\u09c2\u0007\n\u0000"+ - "\u0000\u09c2\u0150\u0001\u0000\u0000\u0000\u09c3\u09c4\u0007\u000e\u0000"+ - "\u0000\u09c4\u09c5\u0007\u0006\u0000\u0000\u09c5\u09c6\u0007\u0016\u0000"+ - "\u0000\u09c6\u09c7\u0007\t\u0000\u0000\u09c7\u09c8\u0007\u0010\u0000\u0000"+ - "\u09c8\u09c9\u0007\n\u0000\u0000\u09c9\u09ca\u0007\r\u0000\u0000\u09ca"+ - "\u0152\u0001\u0000\u0000\u0000\u09cb\u09cc\u0007\u000e\u0000\u0000\u09cc"+ - "\u09cd\u0007\u0013\u0000\u0000\u09cd\u09ce\u0007\u000f\u0000\u0000\u09ce"+ - "\u09cf\u0007\u000f\u0000\u0000\u09cf\u09d0\u0007\n\u0000\u0000\u09d0\u09d1"+ - "\u0007\u0007\u0000\u0000\u09d1\u09d2\u0007\u0010\u0000\u0000\u09d2\u0154"+ - "\u0001\u0000\u0000\u0000\u09d3\u09d4\u0007\u000e\u0000\u0000\u09d4\u09d5"+ - "\u0007\u0013\u0000\u0000\u09d5\u09d6\u0007\u000f\u0000\u0000\u09d6\u09d7"+ - "\u0007\u000f\u0000\u0000\u09d7\u09d8\u0007\n\u0000\u0000\u09d8\u09d9\u0007"+ - "\u0007\u0000\u0000\u09d9\u09da\u0007\u0010\u0000\u0000\u09da\u09db\u0007"+ - "\t\u0000\u0000\u09db\u0156\u0001\u0000\u0000\u0000\u09dc\u09dd\u0007\u000e"+ - "\u0000\u0000\u09dd\u09de\u0007\u0013\u0000\u0000\u09de\u09df\u0007\u000f"+ - "\u0000\u0000\u09df\u09e0\u0007\u000f\u0000\u0000\u09e0\u09e1\u0007\u0011"+ - "\u0000\u0000\u09e1\u09e2\u0007\u0010\u0000\u0000\u09e2\u0158\u0001\u0000"+ - "\u0000\u0000\u09e3\u09e4\u0007\u000e\u0000\u0000\u09e4\u09e5\u0007\u0013"+ - "\u0000\u0000\u09e5\u09e6\u0007\u000f\u0000\u0000\u09e6\u09e7\u0007\u000f"+ - "\u0000\u0000\u09e7\u09e8\u0007\u0011\u0000\u0000\u09e8\u09e9\u0007\u0010"+ - "\u0000\u0000\u09e9\u09ea\u0007\u0010\u0000\u0000\u09ea\u09eb\u0007\n\u0000"+ - "\u0000\u09eb\u09ec\u0007\f\u0000\u0000\u09ec\u015a\u0001\u0000\u0000\u0000"+ - "\u09ed\u09ee\u0007\u000e\u0000\u0000\u09ee\u09ef\u0007\u0013\u0000\u0000"+ - "\u09ef\u09f0\u0007\u0007\u0000\u0000\u09f0\u09f1\u0007\u0019\u0000\u0000"+ - "\u09f1\u09f2\u0007\u0011\u0000\u0000\u09f2\u09f3\u0007\u0017\u0000\u0000"+ - "\u09f3\u09f4\u0007\u0016\u0000\u0000\u09f4\u09f5\u0007\r\u0000\u0000\u09f5"+ - "\u09f6\u0007\u0005\u0000\u0000\u09f6\u09f7\u0007\u0010\u0000\u0000\u09f7"+ - "\u09f8\u0007\u0011\u0000\u0000\u09f8\u09f9\u0007\u0013\u0000\u0000\u09f9"+ - "\u09fa\u0007\u0007\u0000\u0000\u09fa\u015c\u0001\u0000\u0000\u0000\u09fb"+ - "\u09fc\u0007\u000e\u0000\u0000\u09fc\u09fd\u0007\u0013\u0000\u0000\u09fd"+ - "\u09fe\u0007\u0007\u0000\u0000\u09fe\u09ff\u0007\u0007\u0000\u0000\u09ff"+ - "\u0a00\u0007\n\u0000\u0000\u0a00\u0a01\u0007\u000e\u0000\u0000\u0a01\u0a02"+ - "\u0007\u0010\u0000\u0000\u0a02\u0a03\u0007\u0011\u0000\u0000\u0a03\u0a04"+ - "\u0007\u0013\u0000\u0000\u0a04\u0a05\u0007\u0007\u0000\u0000\u0a05\u015e"+ - "\u0001\u0000\u0000\u0000\u0a06\u0a07\u0007\u000e\u0000\u0000\u0a07\u0a08"+ - "\u0007\u0013\u0000\u0000\u0a08\u0a09\u0007\u0007\u0000\u0000\u0a09\u0a0a"+ - "\u0007\t\u0000\u0000\u0a0a\u0a0b\u0007\u0010\u0000\u0000\u0a0b\u0a0c\u0007"+ - "\r\u0000\u0000\u0a0c\u0a0d\u0007\u0005\u0000\u0000\u0a0d\u0a0e\u0007\u0011"+ - "\u0000\u0000\u0a0e\u0a0f\u0007\u0007\u0000\u0000\u0a0f\u0a10\u0007\u0010"+ - "\u0000\u0000\u0a10\u0a11\u0007\t\u0000\u0000\u0a11\u0160\u0001\u0000\u0000"+ - "\u0000\u0a12\u0a13\u0007\u000e\u0000\u0000\u0a13\u0a14\u0007\u0013\u0000"+ - "\u0000\u0a14\u0a15\u0007\u0007\u0000\u0000\u0a15\u0a16\u0007\u0010\u0000"+ - "\u0000\u0a16\u0a17\u0007\n\u0000\u0000\u0a17\u0a18\u0007\u0007\u0000\u0000"+ - "\u0a18\u0a19\u0007\u0010\u0000\u0000\u0a19\u0162\u0001\u0000\u0000\u0000"+ - "\u0a1a\u0a1b\u0007\u000e\u0000\u0000\u0a1b\u0a1c\u0007\u0013\u0000\u0000"+ - "\u0a1c\u0a1d\u0007\u0007\u0000\u0000\u0a1d\u0a1e\u0007\u0010\u0000\u0000"+ - "\u0a1e\u0a1f\u0007\u0011\u0000\u0000\u0a1f\u0a20\u0007\u0007\u0000\u0000"+ - "\u0a20\u0a21\u0007\u0016\u0000\u0000\u0a21\u0a22\u0007\n\u0000\u0000\u0a22"+ - "\u0164\u0001\u0000\u0000\u0000\u0a23\u0a24\u0007\u000e\u0000\u0000\u0a24"+ - "\u0a25\u0007\u0013\u0000\u0000\u0a25\u0a26\u0007\u0007\u0000\u0000\u0a26"+ - "\u0a27\u0007\u001b\u0000\u0000\u0a27\u0a28\u0007\n\u0000\u0000\u0a28\u0a29"+ - "\u0007\r\u0000\u0000\u0a29\u0a2a\u0007\t\u0000\u0000\u0a2a\u0a2b\u0007"+ - "\u0011\u0000\u0000\u0a2b\u0a2c\u0007\u0013\u0000\u0000\u0a2c\u0a2d\u0007"+ - "\u0007\u0000\u0000\u0a2d\u0166\u0001\u0000\u0000\u0000\u0a2e\u0a2f\u0007"+ - "\u000e\u0000\u0000\u0a2f\u0a30\u0007\u0013\u0000\u0000\u0a30\u0a31\u0007"+ - "\u0018\u0000\u0000\u0a31\u0a32\u0007\b\u0000\u0000\u0a32\u0168\u0001\u0000"+ - "\u0000\u0000\u0a33\u0a34\u0007\u000e\u0000\u0000\u0a34\u0a35\u0007\u0013"+ - "\u0000\u0000\u0a35\u0a36\u0007\t\u0000\u0000\u0a36\u0a37\u0007\u0010\u0000"+ - "\u0000\u0a37\u016a\u0001\u0000\u0000\u0000\u0a38\u0a39\u0007\u000e\u0000"+ - "\u0000\u0a39\u0a3a\u0007\t\u0000\u0000\u0a3a\u0a3b\u0007\u001b\u0000\u0000"+ - "\u0a3b\u016c\u0001\u0000\u0000\u0000\u0a3c\u0a3d\u0007\u000e\u0000\u0000"+ - "\u0a3d\u0a3e\u0007\u0016\u0000\u0000\u0a3e\u0a3f\u0007\r\u0000\u0000\u0a3f"+ - "\u0a40\u0007\t\u0000\u0000\u0a40\u0a41\u0007\u0013\u0000\u0000\u0a41\u0a42"+ - "\u0007\r\u0000\u0000\u0a42\u016e\u0001\u0000\u0000\u0000\u0a43\u0a44\u0007"+ - "\u000e\u0000\u0000\u0a44\u0a45\u0007\b\u0000\u0000\u0a45\u0a46\u0007\u000e"+ - "\u0000\u0000\u0a46\u0a47\u0007\u0006\u0000\u0000\u0a47\u0a48\u0007\n\u0000"+ - "\u0000\u0a48\u0170\u0001\u0000\u0000\u0000\u0a49\u0a4a\u0007\f\u0000\u0000"+ - "\u0a4a\u0a4b\u0007\u0005\u0000\u0000\u0a4b\u0a4c\u0007\u0010\u0000\u0000"+ - "\u0a4c\u0a4d\u0007\u0005\u0000\u0000\u0a4d\u0172\u0001\u0000\u0000\u0000"+ - "\u0a4e\u0a4f\u0007\f\u0000\u0000\u0a4f\u0a50\u0007\u0005\u0000\u0000\u0a50"+ - "\u0a51\u0007\u0010\u0000\u0000\u0a51\u0a52\u0007\u0005\u0000\u0000\u0a52"+ - "\u0a53\u0007\u0012\u0000\u0000\u0a53\u0a54\u0007\u0005\u0000\u0000\u0a54"+ - "\u0a55\u0007\t\u0000\u0000\u0a55\u0a56\u0007\n\u0000\u0000\u0a56\u0174"+ - "\u0001\u0000\u0000\u0000\u0a57\u0a58\u0007\f\u0000\u0000\u0a58\u0a59\u0007"+ - "\u0005\u0000\u0000\u0a59\u0a5a\u0007\b\u0000\u0000\u0a5a\u0176\u0001\u0000"+ - "\u0000\u0000\u0a5b\u0a5c\u0007\f\u0000\u0000\u0a5c\u0a5d\u0007\n\u0000"+ - "\u0000\u0a5d\u0a5e\u0007\u0005\u0000\u0000\u0a5e\u0a5f\u0007\u0006\u0000"+ - "\u0000\u0a5f\u0a60\u0007\u0006\u0000\u0000\u0a60\u0a61\u0007\u0013\u0000"+ - "\u0000\u0a61\u0a62\u0007\u000e\u0000\u0000\u0a62\u0a63\u0007\u0005\u0000"+ - "\u0000\u0a63\u0a64\u0007\u0010\u0000\u0000\u0a64\u0a65\u0007\n\u0000\u0000"+ - "\u0a65\u0178\u0001\u0000\u0000\u0000\u0a66\u0a67\u0007\f\u0000\u0000\u0a67"+ - "\u0a68\u0007\n\u0000\u0000\u0a68\u0a69\u0007\u000e\u0000\u0000\u0a69\u0a6a"+ - "\u0007\u0006\u0000\u0000\u0a6a\u0a6b\u0007\u0005\u0000\u0000\u0a6b\u0a6c"+ - "\u0007\r\u0000\u0000\u0a6c\u0a6d\u0007\n\u0000\u0000\u0a6d\u017a\u0001"+ - "\u0000\u0000\u0000\u0a6e\u0a6f\u0007\f\u0000\u0000\u0a6f\u0a70\u0007\n"+ - "\u0000\u0000\u0a70\u0a71\u0007\u0019\u0000\u0000\u0a71\u0a72\u0007\u0005"+ - "\u0000\u0000\u0a72\u0a73\u0007\u0016\u0000\u0000\u0a73\u0a74\u0007\u0006"+ - "\u0000\u0000\u0a74\u0a75\u0007\u0010\u0000\u0000\u0a75\u0a76\u0007\t\u0000"+ - "\u0000\u0a76\u017c\u0001\u0000\u0000\u0000\u0a77\u0a78\u0007\f\u0000\u0000"+ - "\u0a78\u0a79\u0007\n\u0000\u0000\u0a79\u0a7a\u0007\u0019\u0000\u0000\u0a7a"+ - "\u0a7b\u0007\n\u0000\u0000\u0a7b\u0a7c\u0007\r\u0000\u0000\u0a7c\u0a7d"+ - "\u0007\r\u0000\u0000\u0a7d\u0a7e\u0007\n\u0000\u0000\u0a7e\u0a7f\u0007"+ - "\f\u0000\u0000\u0a7f\u017e\u0001\u0000\u0000\u0000\u0a80\u0a81\u0007\f"+ - "\u0000\u0000\u0a81\u0a82\u0007\n\u0000\u0000\u0a82\u0a83\u0007\u0019\u0000"+ - "\u0000\u0a83\u0a84\u0007\u0011\u0000\u0000\u0a84\u0a85\u0007\u0007\u0000"+ - "\u0000\u0a85\u0a86\u0007\n\u0000\u0000\u0a86\u0a87\u0007\r\u0000\u0000"+ - "\u0a87\u0180\u0001\u0000\u0000\u0000\u0a88\u0a89\u0007\f\u0000\u0000\u0a89"+ - "\u0a8a\u0007\n\u0000\u0000\u0a8a\u0a8b\u0007\u0006\u0000\u0000\u0a8b\u0a8c"+ - "\u0007\n\u0000\u0000\u0a8c\u0a8d\u0007\u0010\u0000\u0000\u0a8d\u0a8e\u0007"+ - "\n\u0000\u0000\u0a8e\u0182\u0001\u0000\u0000\u0000\u0a8f\u0a90\u0007\f"+ - "\u0000\u0000\u0a90\u0a91\u0007\n\u0000\u0000\u0a91\u0a92\u0007\u0006\u0000"+ - "\u0000\u0a92\u0a93\u0007\u0011\u0000\u0000\u0a93\u0a94\u0007\u000f\u0000"+ - "\u0000\u0a94\u0a95\u0007\u0011\u0000\u0000\u0a95\u0a96\u0007\u0010\u0000"+ - "\u0000\u0a96\u0a97\u0007\n\u0000\u0000\u0a97\u0a98\u0007\r\u0000\u0000"+ - "\u0a98\u0184\u0001\u0000\u0000\u0000\u0a99\u0a9a\u0007\f\u0000\u0000\u0a9a"+ - "\u0a9b\u0007\n\u0000\u0000\u0a9b\u0a9c\u0007\u0006\u0000\u0000\u0a9c\u0a9d"+ - "\u0007\u0011\u0000\u0000\u0a9d\u0a9e\u0007\u000f\u0000\u0000\u0a9e\u0a9f"+ - "\u0007\u0011\u0000\u0000\u0a9f\u0aa0\u0007\u0010\u0000\u0000\u0aa0\u0aa1"+ - "\u0007\n\u0000\u0000\u0aa1\u0aa2\u0007\r\u0000\u0000\u0aa2\u0aa3\u0007"+ - "\t\u0000\u0000\u0aa3\u0186\u0001\u0000\u0000\u0000\u0aa4\u0aa5\u0007\f"+ - "\u0000\u0000\u0aa5\u0aa6\u0007\u0011\u0000\u0000\u0aa6\u0aa7\u0007\u000e"+ - "\u0000\u0000\u0aa7\u0aa8\u0007\u0010\u0000\u0000\u0aa8\u0aa9\u0007\u0011"+ - "\u0000\u0000\u0aa9\u0aaa\u0007\u0013\u0000\u0000\u0aaa\u0aab\u0007\u0007"+ - "\u0000\u0000\u0aab\u0aac\u0007\u0005\u0000\u0000\u0aac\u0aad\u0007\r\u0000"+ - "\u0000\u0aad\u0aae\u0007\b\u0000\u0000\u0aae\u0188\u0001\u0000\u0000\u0000"+ - "\u0aaf\u0ab0\u0007\f\u0000\u0000\u0ab0\u0ab1\u0007\u0011\u0000\u0000\u0ab1"+ - "\u0ab2\u0007\t\u0000\u0000\u0ab2\u0ab3\u0007\u0005\u0000\u0000\u0ab3\u0ab4"+ - "\u0007\u0012\u0000\u0000\u0ab4\u0ab5\u0007\u0006\u0000\u0000\u0ab5\u0ab6"+ - "\u0007\n\u0000\u0000\u0ab6\u018a\u0001\u0000\u0000\u0000\u0ab7\u0ab8\u0007"+ - "\f\u0000\u0000\u0ab8\u0ab9\u0007\u0011\u0000\u0000\u0ab9\u0aba\u0007\t"+ - "\u0000\u0000\u0aba\u0abb\u0007\u000e\u0000\u0000\u0abb\u0abc\u0007\u0005"+ - "\u0000\u0000\u0abc\u0abd\u0007\r\u0000\u0000\u0abd\u0abe\u0007\f\u0000"+ - "\u0000\u0abe\u018c\u0001\u0000\u0000\u0000\u0abf\u0ac0\u0007\f\u0000\u0000"+ - "\u0ac0\u0ac1\u0007\u0013\u0000\u0000\u0ac1\u0ac2\u0007\u000e\u0000\u0000"+ - "\u0ac2\u0ac3\u0007\u0016\u0000\u0000\u0ac3\u0ac4\u0007\u000f\u0000\u0000"+ - "\u0ac4\u0ac5\u0007\n\u0000\u0000\u0ac5\u0ac6\u0007\u0007\u0000\u0000\u0ac6"+ - "\u0ac7\u0007\u0010\u0000\u0000\u0ac7\u018e\u0001\u0000\u0000\u0000\u0ac8"+ - "\u0ac9\u0007\f\u0000\u0000\u0ac9\u0aca\u0007\u0013\u0000\u0000\u0aca\u0acb"+ - "\u0007\u000f\u0000\u0000\u0acb\u0acc\u0007\u0005\u0000\u0000\u0acc\u0acd"+ - "\u0007\u0011\u0000\u0000\u0acd\u0ace\u0007\u0007\u0000\u0000\u0ace\u0190"+ - "\u0001\u0000\u0000\u0000\u0acf\u0ad0\u0007\f\u0000\u0000\u0ad0\u0ad1\u0007"+ - "\u0013\u0000\u0000\u0ad1\u0ad2\u0007\u0016\u0000\u0000\u0ad2\u0ad3\u0007"+ - "\u0012\u0000\u0000\u0ad3\u0ad4\u0007\u0006\u0000\u0000\u0ad4\u0ad5\u0007"+ - "\n\u0000\u0000\u0ad5\u0192\u0001\u0000\u0000\u0000\u0ad6\u0ad7\u0007\f"+ - "\u0000\u0000\u0ad7\u0ad8\u0007\r\u0000\u0000\u0ad8\u0ad9\u0007\u0013\u0000"+ - "\u0000\u0ad9\u0ada\u0007\u0018\u0000\u0000\u0ada\u0194\u0001\u0000\u0000"+ - "\u0000\u0adb\u0adc\u0007\n\u0000\u0000\u0adc\u0add\u0007\u0005\u0000\u0000"+ - "\u0add\u0ade\u0007\u000e\u0000\u0000\u0ade\u0adf\u0007\u0014\u0000\u0000"+ - "\u0adf\u0196\u0001\u0000\u0000\u0000\u0ae0\u0ae1\u0007\n\u0000\u0000\u0ae1"+ - "\u0ae2\u0007\u0007\u0000\u0000\u0ae2\u0ae3\u0007\u0005\u0000\u0000\u0ae3"+ - "\u0ae4\u0007\u0012\u0000\u0000\u0ae4\u0ae5\u0007\u0006\u0000\u0000\u0ae5"+ - "\u0ae6\u0007\n\u0000\u0000\u0ae6\u0198\u0001\u0000\u0000\u0000\u0ae7\u0ae8"+ - "\u0007\n\u0000\u0000\u0ae8\u0ae9\u0007\u0007\u0000\u0000\u0ae9\u0aea\u0007"+ - "\u000e\u0000\u0000\u0aea\u0aeb\u0007\u0013\u0000\u0000\u0aeb\u0aec\u0007"+ - "\f\u0000\u0000\u0aec\u0aed\u0007\u0011\u0000\u0000\u0aed\u0aee\u0007\u0007"+ - "\u0000\u0000\u0aee\u0aef\u0007\u0017\u0000\u0000\u0aef\u019a\u0001\u0000"+ - "\u0000\u0000\u0af0\u0af1\u0007\n\u0000\u0000\u0af1\u0af2\u0007\u0007\u0000"+ - "\u0000\u0af2\u0af3\u0007\u000e\u0000\u0000\u0af3\u0af4\u0007\r\u0000\u0000"+ - "\u0af4\u0af5\u0007\b\u0000\u0000\u0af5\u0af6\u0007\u0018\u0000\u0000\u0af6"+ - "\u0af7\u0007\u0010\u0000\u0000\u0af7\u0af8\u0007\n\u0000\u0000\u0af8\u0af9"+ - "\u0007\f\u0000\u0000\u0af9\u019c\u0001\u0000\u0000\u0000\u0afa\u0afb\u0007"+ - "\n\u0000\u0000\u0afb\u0afc\u0007\u0007\u0000\u0000\u0afc\u0afd\u0007\u0016"+ - "\u0000\u0000\u0afd\u0afe\u0007\u000f\u0000\u0000\u0afe\u019e\u0001\u0000"+ - "\u0000\u0000\u0aff\u0b00\u0007\n\u0000\u0000\u0b00\u0b01\u0007\t\u0000"+ - "\u0000\u0b01\u0b02\u0007\u000e\u0000\u0000\u0b02\u0b03\u0007\u0005\u0000"+ - "\u0000\u0b03\u0b04\u0007\u0018\u0000\u0000\u0b04\u0b05\u0007\n\u0000\u0000"+ - "\u0b05\u01a0\u0001\u0000\u0000\u0000\u0b06\u0b07\u0007\n\u0000\u0000\u0b07"+ - "\u0b08\u0007\u001b\u0000\u0000\u0b08\u0b09\u0007\n\u0000\u0000\u0b09\u0b0a"+ - "\u0007\u0007\u0000\u0000\u0b0a\u0b0b\u0007\u0010\u0000\u0000\u0b0b\u01a2"+ - "\u0001\u0000\u0000\u0000\u0b0c\u0b0d\u0007\n\u0000\u0000\u0b0d\u0b0e\u0007"+ - "\u001a\u0000\u0000\u0b0e\u0b0f\u0007\u000e\u0000\u0000\u0b0f\u0b10\u0007"+ - "\u0006\u0000\u0000\u0b10\u0b11\u0007\u0016\u0000\u0000\u0b11\u0b12\u0007"+ - "\f\u0000\u0000\u0b12\u0b13\u0007\n\u0000\u0000\u0b13\u01a4\u0001\u0000"+ - "\u0000\u0000\u0b14\u0b15\u0007\n\u0000\u0000\u0b15\u0b16\u0007\u001a\u0000"+ - "\u0000\u0b16\u0b17\u0007\u000e\u0000\u0000\u0b17\u0b18\u0007\u0006\u0000"+ - "\u0000\u0b18\u0b19\u0007\u0016\u0000\u0000\u0b19\u0b1a\u0007\f\u0000\u0000"+ - "\u0b1a\u0b1b\u0007\u0011\u0000\u0000\u0b1b\u0b1c\u0007\u0007\u0000\u0000"+ - "\u0b1c\u0b1d\u0007\u0017\u0000\u0000\u0b1d\u01a6\u0001\u0000\u0000\u0000"+ - "\u0b1e\u0b1f\u0007\n\u0000\u0000\u0b1f\u0b20\u0007\u001a\u0000\u0000\u0b20"+ - "\u0b21\u0007\u000e\u0000\u0000\u0b21\u0b22\u0007\u0006\u0000\u0000\u0b22"+ - "\u0b23\u0007\u0016\u0000\u0000\u0b23\u0b24\u0007\t\u0000\u0000\u0b24\u0b25"+ - "\u0007\u0011\u0000\u0000\u0b25\u0b26\u0007\u001b\u0000\u0000\u0b26\u0b27"+ - "\u0007\n\u0000\u0000\u0b27\u01a8\u0001\u0000\u0000\u0000\u0b28\u0b29\u0007"+ - "\n\u0000\u0000\u0b29\u0b2a\u0007\u001a\u0000\u0000\u0b2a\u0b2b\u0007\n"+ - "\u0000\u0000\u0b2b\u0b2c\u0007\u000e\u0000\u0000\u0b2c\u0b2d\u0007\u0016"+ - "\u0000\u0000\u0b2d\u0b2e\u0007\u0010\u0000\u0000\u0b2e\u0b2f\u0007\n\u0000"+ - "\u0000\u0b2f\u01aa\u0001\u0000\u0000\u0000\u0b30\u0b31\u0007\n\u0000\u0000"+ - "\u0b31\u0b32\u0007\u001a\u0000\u0000\u0b32\u0b33\u0007\u0018\u0000\u0000"+ - "\u0b33\u0b34\u0007\u0006\u0000\u0000\u0b34\u0b35\u0007\u0005\u0000\u0000"+ - "\u0b35\u0b36\u0007\u0011\u0000\u0000\u0b36\u0b37\u0007\u0007\u0000\u0000"+ - "\u0b37\u01ac\u0001\u0000\u0000\u0000\u0b38\u0b39\u0007\n\u0000\u0000\u0b39"+ - "\u0b3a\u0007\u001a\u0000\u0000\u0b3a\u0b3b\u0007\u0010\u0000\u0000\u0b3b"+ - "\u0b3c\u0007\n\u0000\u0000\u0b3c\u0b3d\u0007\u0007\u0000\u0000\u0b3d\u0b3e"+ - "\u0007\t\u0000\u0000\u0b3e\u0b3f\u0007\u0011\u0000\u0000\u0b3f\u0b40\u0007"+ - "\u0013\u0000\u0000\u0b40\u0b41\u0007\u0007\u0000\u0000\u0b41\u01ae\u0001"+ - "\u0000\u0000\u0000\u0b42\u0b43\u0007\n\u0000\u0000\u0b43\u0b44\u0007\u001a"+ - "\u0000\u0000\u0b44\u0b45\u0007\u0010\u0000\u0000\u0b45\u0b46\u0007\n\u0000"+ - "\u0000\u0b46\u0b47\u0007\r\u0000\u0000\u0b47\u0b48\u0007\u0007\u0000\u0000"+ - "\u0b48\u0b49\u0007\u0005\u0000\u0000\u0b49\u0b4a\u0007\u0006\u0000\u0000"+ - "\u0b4a\u01b0\u0001\u0000\u0000\u0000\u0b4b\u0b4c\u0007\u0019\u0000\u0000"+ - "\u0b4c\u0b4d\u0007\u0005\u0000\u0000\u0b4d\u0b4e\u0007\u000f\u0000\u0000"+ - "\u0b4e\u0b4f\u0007\u0011\u0000\u0000\u0b4f\u0b50\u0007\u0006\u0000\u0000"+ - "\u0b50\u0b51\u0007\b\u0000\u0000\u0b51\u01b2\u0001\u0000\u0000\u0000\u0b52"+ - "\u0b53\u0007\u0019\u0000\u0000\u0b53\u0b54\u0007\u0011\u0000\u0000\u0b54"+ - "\u0b55\u0007\r\u0000\u0000\u0b55\u0b56\u0007\t\u0000\u0000\u0b56\u0b57"+ - "\u0007\u0010\u0000\u0000\u0b57\u01b4\u0001\u0000\u0000\u0000\u0b58\u0b59"+ - "\u0007\u0019\u0000\u0000\u0b59\u0b5a\u0007\u0013\u0000\u0000\u0b5a\u0b5b"+ - "\u0007\u0006\u0000\u0000\u0b5b\u0b5c\u0007\u0006\u0000\u0000\u0b5c\u0b5d"+ - "\u0007\u0013\u0000\u0000\u0b5d\u0b5e\u0007\u001c\u0000\u0000\u0b5e\u0b5f"+ - "\u0007\u0011\u0000\u0000\u0b5f\u0b60\u0007\u0007\u0000\u0000\u0b60\u0b61"+ - "\u0007\u0017\u0000\u0000\u0b61\u01b6\u0001\u0000\u0000\u0000\u0b62\u0b63"+ - "\u0007\u0019\u0000\u0000\u0b63\u0b64\u0007\u0013\u0000\u0000\u0b64\u0b65"+ - "\u0007\r\u0000\u0000\u0b65\u0b66\u0007\u000e\u0000\u0000\u0b66\u0b67\u0007"+ - "\n\u0000\u0000\u0b67\u01b8\u0001\u0000\u0000\u0000\u0b68\u0b69\u0007\u0019"+ - "\u0000\u0000\u0b69\u0b6a\u0007\u0013\u0000\u0000\u0b6a\u0b6b\u0007\r\u0000"+ - "\u0000\u0b6b\u0b6c\u0007\u001c\u0000\u0000\u0b6c\u0b6d\u0007\u0005\u0000"+ - "\u0000\u0b6d\u0b6e\u0007\r\u0000\u0000\u0b6e\u0b6f\u0007\f\u0000\u0000"+ - "\u0b6f\u01ba\u0001\u0000\u0000\u0000\u0b70\u0b71\u0007\u0019\u0000\u0000"+ - "\u0b71\u0b72\u0007\u0016\u0000\u0000\u0b72\u0b73\u0007\u0007\u0000\u0000"+ - "\u0b73\u0b74\u0007\u000e\u0000\u0000\u0b74\u0b75\u0007\u0010\u0000\u0000"+ - "\u0b75\u0b76\u0007\u0011\u0000\u0000\u0b76\u0b77\u0007\u0013\u0000\u0000"+ - "\u0b77\u0b78\u0007\u0007\u0000\u0000\u0b78\u01bc\u0001\u0000\u0000\u0000"+ - "\u0b79\u0b7a\u0007\u0019\u0000\u0000\u0b7a\u0b7b\u0007\u0016\u0000\u0000"+ - "\u0b7b\u0b7c\u0007\u0007\u0000\u0000\u0b7c\u0b7d\u0007\u000e\u0000\u0000"+ - "\u0b7d\u0b7e\u0007\u0010\u0000\u0000\u0b7e\u0b7f\u0007\u0011\u0000\u0000"+ - "\u0b7f\u0b80\u0007\u0013\u0000\u0000\u0b80\u0b81\u0007\u0007\u0000\u0000"+ - "\u0b81\u0b82\u0007\t\u0000\u0000\u0b82\u01be\u0001\u0000\u0000\u0000\u0b83"+ - "\u0b84\u0007\u0017\u0000\u0000\u0b84\u0b85\u0007\u0006\u0000\u0000\u0b85"+ - "\u0b86\u0007\u0013\u0000\u0000\u0b86\u0b87\u0007\u0012\u0000\u0000\u0b87"+ - "\u0b88\u0007\u0005\u0000\u0000\u0b88\u0b89\u0007\u0006\u0000\u0000\u0b89"+ - "\u01c0\u0001\u0000\u0000\u0000\u0b8a\u0b8b\u0007\u0017\u0000\u0000\u0b8b"+ - "\u0b8c\u0007\r\u0000\u0000\u0b8c\u0b8d\u0007\u0005\u0000\u0000\u0b8d\u0b8e"+ - "\u0007\u0007\u0000\u0000\u0b8e\u0b8f\u0007\u0010\u0000\u0000\u0b8f\u0b90"+ - "\u0007\n\u0000\u0000\u0b90\u0b91\u0007\f\u0000\u0000\u0b91\u01c2\u0001"+ - "\u0000\u0000\u0000\u0b92\u0b93\u0007\u0014\u0000\u0000\u0b93\u0b94\u0007"+ - "\u0005\u0000\u0000\u0b94\u0b95\u0007\u0007\u0000\u0000\u0b95\u0b96\u0007"+ - "\f\u0000\u0000\u0b96\u0b97\u0007\u0006\u0000\u0000\u0b97\u0b98\u0007\n"+ - "\u0000\u0000\u0b98\u0b99\u0007\r\u0000\u0000\u0b99\u01c4\u0001\u0000\u0000"+ - "\u0000\u0b9a\u0b9b\u0007\u0014\u0000\u0000\u0b9b\u0b9c\u0007\n\u0000\u0000"+ - "\u0b9c\u0b9d\u0007\u0005\u0000\u0000\u0b9d\u0b9e\u0007\f\u0000\u0000\u0b9e"+ - "\u0b9f\u0007\n\u0000\u0000\u0b9f\u0ba0\u0007\r\u0000\u0000\u0ba0\u01c6"+ - "\u0001\u0000\u0000\u0000\u0ba1\u0ba2\u0007\u0014\u0000\u0000\u0ba2\u0ba3"+ - "\u0007\u0013\u0000\u0000\u0ba3\u0ba4\u0007\u0006\u0000\u0000\u0ba4\u0ba5"+ - "\u0007\f\u0000\u0000\u0ba5\u01c8\u0001\u0000\u0000\u0000\u0ba6\u0ba7\u0007"+ - "\u0014\u0000\u0000\u0ba7\u0ba8\u0007\u0013\u0000\u0000\u0ba8\u0ba9\u0007"+ - "\u0016\u0000\u0000\u0ba9\u0baa\u0007\r\u0000\u0000\u0baa\u01ca\u0001\u0000"+ - "\u0000\u0000\u0bab\u0bac\u0007\u0011\u0000\u0000\u0bac\u0bad\u0007\f\u0000"+ - "\u0000\u0bad\u0bae\u0007\n\u0000\u0000\u0bae\u0baf\u0007\u0007\u0000\u0000"+ - "\u0baf\u0bb0\u0007\u0010\u0000\u0000\u0bb0\u0bb1\u0007\u0011\u0000\u0000"+ - "\u0bb1\u0bb2\u0007\u0010\u0000\u0000\u0bb2\u0bb3\u0007\b\u0000\u0000\u0bb3"+ - "\u01cc\u0001\u0000\u0000\u0000\u0bb4\u0bb5\u0007\u0011\u0000\u0000\u0bb5"+ - "\u0bb6\u0007\u0019\u0000\u0000\u0bb6\u01ce\u0001\u0000\u0000\u0000\u0bb7"+ - "\u0bb8\u0007\u0011\u0000\u0000\u0bb8\u0bb9\u0007\u000f\u0000\u0000\u0bb9"+ - "\u0bba\u0007\u000f\u0000\u0000\u0bba\u0bbb\u0007\n\u0000\u0000\u0bbb\u0bbc"+ - "\u0007\f\u0000\u0000\u0bbc\u0bbd\u0007\u0011\u0000\u0000\u0bbd\u0bbe\u0007"+ - "\u0005\u0000\u0000\u0bbe\u0bbf\u0007\u0010\u0000\u0000\u0bbf\u0bc0\u0007"+ - "\n\u0000\u0000\u0bc0\u01d0\u0001\u0000\u0000\u0000\u0bc1\u0bc2\u0007\u0011"+ - "\u0000\u0000\u0bc2\u0bc3\u0007\u000f\u0000\u0000\u0bc3\u0bc4\u0007\u000f"+ - "\u0000\u0000\u0bc4\u0bc5\u0007\u0016\u0000\u0000\u0bc5\u0bc6\u0007\u0010"+ - "\u0000\u0000\u0bc6\u0bc7\u0007\u0005\u0000\u0000\u0bc7\u0bc8\u0007\u0012"+ - "\u0000\u0000\u0bc8\u0bc9\u0007\u0006\u0000\u0000\u0bc9\u0bca\u0007\n\u0000"+ - "\u0000\u0bca\u01d2\u0001\u0000\u0000\u0000\u0bcb\u0bcc\u0007\u0011\u0000"+ - "\u0000\u0bcc\u0bcd\u0007\u000f\u0000\u0000\u0bcd\u0bce\u0007\u0018\u0000"+ - "\u0000\u0bce\u0bcf\u0007\u0006\u0000\u0000\u0bcf\u0bd0\u0007\u0011\u0000"+ - "\u0000\u0bd0\u0bd1\u0007\u000e\u0000\u0000\u0bd1\u0bd2\u0007\u0011\u0000"+ - "\u0000\u0bd2\u0bd3\u0007\u0010\u0000\u0000\u0bd3\u01d4\u0001\u0000\u0000"+ - "\u0000\u0bd4\u0bd5\u0007\u0011\u0000\u0000\u0bd5\u0bd6\u0007\u0007\u0000"+ - "\u0000\u0bd6\u0bd7\u0007\u000e\u0000\u0000\u0bd7\u0bd8\u0007\u0006\u0000"+ - "\u0000\u0bd8\u0bd9\u0007\u0016\u0000\u0000\u0bd9\u0bda\u0007\f\u0000\u0000"+ - "\u0bda\u0bdb\u0007\u0011\u0000\u0000\u0bdb\u0bdc\u0007\u0007\u0000\u0000"+ - "\u0bdc\u0bdd\u0007\u0017\u0000\u0000\u0bdd\u01d6\u0001\u0000\u0000\u0000"+ - "\u0bde\u0bdf\u0007\u0011\u0000\u0000\u0bdf\u0be0\u0007\u0007\u0000\u0000"+ - "\u0be0\u0be1\u0007\u000e\u0000\u0000\u0be1\u0be2\u0007\r\u0000\u0000\u0be2"+ - "\u0be3\u0007\n\u0000\u0000\u0be3\u0be4\u0007\u000f\u0000\u0000\u0be4\u0be5"+ - "\u0007\n\u0000\u0000\u0be5\u0be6\u0007\u0007\u0000\u0000\u0be6\u0be7\u0007"+ - "\u0010\u0000\u0000\u0be7\u01d8\u0001\u0000\u0000\u0000\u0be8\u0be9\u0007"+ - "\u0011\u0000\u0000\u0be9\u0bea\u0007\u0007\u0000\u0000\u0bea\u0beb\u0007"+ - "\f\u0000\u0000\u0beb\u0bec\u0007\n\u0000\u0000\u0bec\u0bed\u0007\u001a"+ - "\u0000\u0000\u0bed\u01da\u0001\u0000\u0000\u0000\u0bee\u0bef\u0007\u0011"+ - "\u0000\u0000\u0bef\u0bf0\u0007\u0007\u0000\u0000\u0bf0\u0bf1\u0007\f\u0000"+ - "\u0000\u0bf1\u0bf2\u0007\n\u0000\u0000\u0bf2\u0bf3\u0007\u001a\u0000\u0000"+ - "\u0bf3\u0bf4\u0007\n\u0000\u0000\u0bf4\u0bf5\u0007\t\u0000\u0000\u0bf5"+ - "\u01dc\u0001\u0000\u0000\u0000\u0bf6\u0bf7\u0007\u0011\u0000\u0000\u0bf7"+ - "\u0bf8\u0007\u0007\u0000\u0000\u0bf8\u0bf9\u0007\u0014\u0000\u0000\u0bf9"+ - "\u0bfa\u0007\n\u0000\u0000\u0bfa\u0bfb\u0007\r\u0000\u0000\u0bfb\u0bfc"+ - "\u0007\u0011\u0000\u0000\u0bfc\u0bfd\u0007\u0010\u0000\u0000\u0bfd\u01de"+ - "\u0001\u0000\u0000\u0000\u0bfe\u0bff\u0007\u0011\u0000\u0000\u0bff\u0c00"+ - "\u0007\u0007\u0000\u0000\u0c00\u0c01\u0007\u0014\u0000\u0000\u0c01\u0c02"+ - "\u0007\n\u0000\u0000\u0c02\u0c03\u0007\r\u0000\u0000\u0c03\u0c04\u0007"+ - "\u0011\u0000\u0000\u0c04\u0c05\u0007\u0010\u0000\u0000\u0c05\u0c06\u0007"+ - "\t\u0000\u0000\u0c06\u01e0\u0001\u0000\u0000\u0000\u0c07\u0c08\u0007\u0011"+ - "\u0000\u0000\u0c08\u0c09\u0007\u0007\u0000\u0000\u0c09\u0c0a\u0007\u0006"+ - "\u0000\u0000\u0c0a\u0c0b\u0007\u0011\u0000\u0000\u0c0b\u0c0c\u0007\u0007"+ - "\u0000\u0000\u0c0c\u0c0d\u0007\n\u0000\u0000\u0c0d\u01e2\u0001\u0000\u0000"+ - "\u0000\u0c0e\u0c0f\u0007\u0011\u0000\u0000\u0c0f\u0c10\u0007\u0007\u0000"+ - "\u0000\u0c10\u0c11\u0007\t\u0000\u0000\u0c11\u0c12\u0007\n\u0000\u0000"+ - "\u0c12\u0c13\u0007\u0007\u0000\u0000\u0c13\u0c14\u0007\t\u0000\u0000\u0c14"+ - "\u0c15\u0007\u0011\u0000\u0000\u0c15\u0c16\u0007\u0010\u0000\u0000\u0c16"+ - "\u0c17\u0007\u0011\u0000\u0000\u0c17\u0c18\u0007\u001b\u0000\u0000\u0c18"+ - "\u0c19\u0007\n\u0000\u0000\u0c19\u01e4\u0001\u0000\u0000\u0000\u0c1a\u0c1b"+ - "\u0007\u0011\u0000\u0000\u0c1b\u0c1c\u0007\u0007\u0000\u0000\u0c1c\u0c1d"+ - "\u0007\t\u0000\u0000\u0c1d\u0c1e\u0007\n\u0000\u0000\u0c1e\u0c1f\u0007"+ - "\r\u0000\u0000\u0c1f\u0c20\u0007\u0010\u0000\u0000\u0c20\u01e6\u0001\u0000"+ - "\u0000\u0000\u0c21\u0c22\u0007\u0011\u0000\u0000\u0c22\u0c23\u0007\u0007"+ - "\u0000\u0000\u0c23\u0c24\u0007\t\u0000\u0000\u0c24\u0c25\u0007\u0010\u0000"+ - "\u0000\u0c25\u0c26\u0007\n\u0000\u0000\u0c26\u0c27\u0007\u0005\u0000\u0000"+ - "\u0c27\u0c28\u0007\f\u0000\u0000\u0c28\u01e8\u0001\u0000\u0000\u0000\u0c29"+ - "\u0c2a\u0007\u0011\u0000\u0000\u0c2a\u0c2b\u0007\u0007\u0000\u0000\u0c2b"+ - "\u0c2c\u0007\u001b\u0000\u0000\u0c2c\u0c2d\u0007\u0013\u0000\u0000\u0c2d"+ - "\u0c2e\u0007\u0015\u0000\u0000\u0c2e\u0c2f\u0007\n\u0000\u0000\u0c2f\u0c30"+ - "\u0007\r\u0000\u0000\u0c30\u01ea\u0001\u0000\u0000\u0000\u0c31\u0c32\u0007"+ - "\u0011\u0000\u0000\u0c32\u0c33\u0007\t\u0000\u0000\u0c33\u0c34\u0007\u0013"+ - "\u0000\u0000\u0c34\u0c35\u0007\u0006\u0000\u0000\u0c35\u0c36\u0007\u0005"+ - "\u0000\u0000\u0c36\u0c37\u0007\u0010\u0000\u0000\u0c37\u0c38\u0007\u0011"+ - "\u0000\u0000\u0c38\u0c39\u0007\u0013\u0000\u0000\u0c39\u0c3a\u0007\u0007"+ - "\u0000\u0000\u0c3a\u01ec\u0001\u0000\u0000\u0000\u0c3b\u0c3c\u0007\u0015"+ - "\u0000\u0000\u0c3c\u0c3d\u0007\n\u0000\u0000\u0c3d\u0c3e\u0007\b\u0000"+ - "\u0000\u0c3e\u01ee\u0001\u0000\u0000\u0000\u0c3f\u0c40\u0007\u0006\u0000"+ - "\u0000\u0c40\u0c41\u0007\u0005\u0000\u0000\u0c41\u0c42\u0007\u0012\u0000"+ - "\u0000\u0c42\u0c43\u0007\n\u0000\u0000\u0c43\u0c44\u0007\u0006\u0000\u0000"+ - "\u0c44\u01f0\u0001\u0000\u0000\u0000\u0c45\u0c46\u0007\u0006\u0000\u0000"+ - "\u0c46\u0c47\u0007\u0005\u0000\u0000\u0c47\u0c48\u0007\u0007\u0000\u0000"+ - "\u0c48\u0c49\u0007\u0017\u0000\u0000\u0c49\u0c4a\u0007\u0016\u0000\u0000"+ - "\u0c4a\u0c4b\u0007\u0005\u0000\u0000\u0c4b\u0c4c\u0007\u0017\u0000\u0000"+ - "\u0c4c\u0c4d\u0007\n\u0000\u0000\u0c4d\u01f2\u0001\u0000\u0000\u0000\u0c4e"+ - "\u0c4f\u0007\u0006\u0000\u0000\u0c4f\u0c50\u0007\u0005\u0000\u0000\u0c50"+ - "\u0c51\u0007\r\u0000\u0000\u0c51\u0c52\u0007\u0017\u0000\u0000\u0c52\u0c53"+ - "\u0007\n\u0000\u0000\u0c53\u01f4\u0001\u0000\u0000\u0000\u0c54\u0c55\u0007"+ - "\u0006\u0000\u0000\u0c55\u0c56\u0007\u0005\u0000\u0000\u0c56\u0c57\u0007"+ - "\t\u0000\u0000\u0c57\u0c58\u0007\u0010\u0000\u0000\u0c58\u01f6\u0001\u0000"+ - "\u0000\u0000\u0c59\u0c5a\u0007\u0006\u0000\u0000\u0c5a\u0c5b\u0007\n\u0000"+ - "\u0000\u0c5b\u0c5c\u0007\u0005\u0000\u0000\u0c5c\u0c5d\u0007\u0015\u0000"+ - "\u0000\u0c5d\u0c5e\u0007\u0018\u0000\u0000\u0c5e\u0c5f\u0007\r\u0000\u0000"+ - "\u0c5f\u0c60\u0007\u0013\u0000\u0000\u0c60\u0c61\u0007\u0013\u0000\u0000"+ - "\u0c61\u0c62\u0007\u0019\u0000\u0000\u0c62\u01f8\u0001\u0000\u0000\u0000"+ - "\u0c63\u0c64\u0007\u0006\u0000\u0000\u0c64\u0c65\u0007\n\u0000\u0000\u0c65"+ - "\u0c66\u0007\u001b\u0000\u0000\u0c66\u0c67\u0007\n\u0000\u0000\u0c67\u0c68"+ - "\u0007\u0006\u0000\u0000\u0c68\u01fa\u0001\u0000\u0000\u0000\u0c69\u0c6a"+ - "\u0007\u0006\u0000\u0000\u0c6a\u0c6b\u0007\u0011\u0000\u0000\u0c6b\u0c6c"+ - "\u0007\t\u0000\u0000\u0c6c\u0c6d\u0007\u0010\u0000\u0000\u0c6d\u0c6e\u0007"+ - "\n\u0000\u0000\u0c6e\u0c6f\u0007\u0007\u0000\u0000\u0c6f\u01fc\u0001\u0000"+ - "\u0000\u0000\u0c70\u0c71\u0007\u0006\u0000\u0000\u0c71\u0c72\u0007\u0013"+ - "\u0000\u0000\u0c72\u0c73\u0007\u0005\u0000\u0000\u0c73\u0c74\u0007\f\u0000"+ - "\u0000\u0c74\u01fe\u0001\u0000\u0000\u0000\u0c75\u0c76\u0007\u0006\u0000"+ - "\u0000\u0c76\u0c77\u0007\u0013\u0000\u0000\u0c77\u0c78\u0007\u000e\u0000"+ - "\u0000\u0c78\u0c79\u0007\u0005\u0000\u0000\u0c79\u0c7a\u0007\u0006\u0000"+ - "\u0000\u0c7a\u0200\u0001\u0000\u0000\u0000\u0c7b\u0c7c\u0007\u0006\u0000"+ - "\u0000\u0c7c\u0c7d\u0007\u0013\u0000\u0000\u0c7d\u0c7e\u0007\u000e\u0000"+ - "\u0000\u0c7e\u0c7f\u0007\u0005\u0000\u0000\u0c7f\u0c80\u0007\u0010\u0000"+ - "\u0000\u0c80\u0c81\u0007\u0011\u0000\u0000\u0c81\u0c82\u0007\u0013\u0000"+ - "\u0000\u0c82\u0c83\u0007\u0007\u0000\u0000\u0c83\u0202\u0001\u0000\u0000"+ - "\u0000\u0c84\u0c85\u0007\u0006\u0000\u0000\u0c85\u0c86\u0007\u0013\u0000"+ - "\u0000\u0c86\u0c87\u0007\u000e\u0000\u0000\u0c87\u0c88\u0007\u0015\u0000"+ - "\u0000\u0c88\u0204\u0001\u0000\u0000\u0000\u0c89\u0c8a\u0007\u000f\u0000"+ - "\u0000\u0c8a\u0c8b\u0007\u0005\u0000\u0000\u0c8b\u0c8c\u0007\u0018\u0000"+ - "\u0000\u0c8c\u0c8d\u0007\u0018\u0000\u0000\u0c8d\u0c8e\u0007\u0011\u0000"+ - "\u0000\u0c8e\u0c8f\u0007\u0007\u0000\u0000\u0c8f\u0c90\u0007\u0017\u0000"+ - "\u0000\u0c90\u0206\u0001\u0000\u0000\u0000\u0c91\u0c92\u0007\u000f\u0000"+ - "\u0000\u0c92\u0c93\u0007\u0005\u0000\u0000\u0c93\u0c94\u0007\u0010\u0000"+ - "\u0000\u0c94\u0c95\u0007\u000e\u0000\u0000\u0c95\u0c96\u0007\u0014\u0000"+ - "\u0000\u0c96\u0208\u0001\u0000\u0000\u0000\u0c97\u0c98\u0007\u000f\u0000"+ - "\u0000\u0c98\u0c99\u0007\u0005\u0000\u0000\u0c99\u0c9a\u0007\u0010\u0000"+ - "\u0000\u0c9a\u0c9b\u0007\u000e\u0000\u0000\u0c9b\u0c9c\u0007\u0014\u0000"+ - "\u0000\u0c9c\u0c9d\u0007\n\u0000\u0000\u0c9d\u0c9e\u0007\f\u0000\u0000"+ - "\u0c9e\u020a\u0001\u0000\u0000\u0000\u0c9f\u0ca0\u0007\u000f\u0000\u0000"+ - "\u0ca0\u0ca1\u0007\u0005\u0000\u0000\u0ca1\u0ca2\u0007\u0010\u0000\u0000"+ - "\u0ca2\u0ca3\u0007\n\u0000\u0000\u0ca3\u0ca4\u0007\r\u0000\u0000\u0ca4"+ - "\u0ca5\u0007\u0011\u0000\u0000\u0ca5\u0ca6\u0007\u0005\u0000\u0000\u0ca6"+ - "\u0ca7\u0007\u0006\u0000\u0000\u0ca7\u0ca8\u0007\u0011\u0000\u0000\u0ca8"+ - "\u0ca9\u0007\u000b\u0000\u0000\u0ca9\u0caa\u0007\n\u0000\u0000\u0caa\u0cab"+ - "\u0007\f\u0000\u0000\u0cab\u020c\u0001\u0000\u0000\u0000\u0cac\u0cad\u0007"+ - "\u000f\u0000\u0000\u0cad\u0cae\u0007\u0005\u0000\u0000\u0cae\u0caf\u0007"+ - "\u001a\u0000\u0000\u0caf\u0cb0\u0007\u001b\u0000\u0000\u0cb0\u0cb1\u0007"+ - "\u0005\u0000\u0000\u0cb1\u0cb2\u0007\u0006\u0000\u0000\u0cb2\u0cb3\u0007"+ - "\u0016\u0000\u0000\u0cb3\u0cb4\u0007\n\u0000\u0000\u0cb4\u020e\u0001\u0000"+ - "\u0000\u0000\u0cb5\u0cb6\u0007\u000f\u0000\u0000\u0cb6\u0cb7\u0007\n\u0000"+ - "\u0000\u0cb7\u0cb8\u0007\r\u0000\u0000\u0cb8\u0cb9\u0007\u0017\u0000\u0000"+ - "\u0cb9\u0cba\u0007\n\u0000\u0000\u0cba\u0210\u0001\u0000\u0000\u0000\u0cbb"+ - "\u0cbc\u0007\u000f\u0000\u0000\u0cbc\u0cbd\u0007\u0011\u0000\u0000\u0cbd"+ - "\u0cbe\u0007\u0007\u0000\u0000\u0cbe\u0cbf\u0007\u0016\u0000\u0000\u0cbf"+ - "\u0cc0\u0007\u0010\u0000\u0000\u0cc0\u0cc1\u0007\n\u0000\u0000\u0cc1\u0212"+ - "\u0001\u0000\u0000\u0000\u0cc2\u0cc3\u0007\u000f\u0000\u0000\u0cc3\u0cc4"+ - "\u0007\u0011\u0000\u0000\u0cc4\u0cc5\u0007\u0007\u0000\u0000\u0cc5\u0cc6"+ - "\u0007\u001b\u0000\u0000\u0cc6\u0cc7\u0007\u0005\u0000\u0000\u0cc7\u0cc8"+ - "\u0007\u0006\u0000\u0000\u0cc8\u0cc9\u0007\u0016\u0000\u0000\u0cc9\u0cca"+ - "\u0007\n\u0000\u0000\u0cca\u0214\u0001\u0000\u0000\u0000\u0ccb\u0ccc\u0007"+ - "\u000f\u0000\u0000\u0ccc\u0ccd\u0007\u0013\u0000\u0000\u0ccd\u0cce\u0007"+ - "\f\u0000\u0000\u0cce\u0ccf\u0007\n\u0000\u0000\u0ccf\u0216\u0001\u0000"+ - "\u0000\u0000\u0cd0\u0cd1\u0007\u000f\u0000\u0000\u0cd1\u0cd2\u0007\u0013"+ - "\u0000\u0000\u0cd2\u0cd3\u0007\u0007\u0000\u0000\u0cd3\u0cd4\u0007\u0010"+ - "\u0000\u0000\u0cd4\u0cd5\u0007\u0014\u0000\u0000\u0cd5\u0218\u0001\u0000"+ - "\u0000\u0000\u0cd6\u0cd7\u0007\u000f\u0000\u0000\u0cd7\u0cd8\u0007\u0013"+ - "\u0000\u0000\u0cd8\u0cd9\u0007\u001b\u0000\u0000\u0cd9\u0cda\u0007\n\u0000"+ - "\u0000\u0cda\u021a\u0001\u0000\u0000\u0000\u0cdb\u0cdc\u0007\u0007\u0000"+ - "\u0000\u0cdc\u0cdd\u0007\u0005\u0000\u0000\u0cdd\u0cde\u0007\u000f\u0000"+ - "\u0000\u0cde\u0cdf\u0007\n\u0000\u0000\u0cdf\u021c\u0001\u0000\u0000\u0000"+ - "\u0ce0\u0ce1\u0007\u0007\u0000\u0000\u0ce1\u0ce2\u0007\u0005\u0000\u0000"+ - "\u0ce2\u0ce3\u0007\u000f\u0000\u0000\u0ce3\u0ce4\u0007\n\u0000\u0000\u0ce4"+ - "\u0ce5\u0007\t\u0000\u0000\u0ce5\u021e\u0001\u0000\u0000\u0000\u0ce6\u0ce7"+ - "\u0007\u0007\u0000\u0000\u0ce7\u0ce8\u0007\n\u0000\u0000\u0ce8\u0ce9\u0007"+ - "\u001a\u0000\u0000\u0ce9\u0cea\u0007\u0010\u0000\u0000\u0cea\u0220\u0001"+ - "\u0000\u0000\u0000\u0ceb\u0cec\u0007\u0007\u0000\u0000\u0cec\u0ced\u0007"+ - "\u0013\u0000\u0000\u0ced\u0222\u0001\u0000\u0000\u0000\u0cee\u0cef\u0007"+ - "\u0007\u0000\u0000\u0cef\u0cf0\u0007\u0013\u0000\u0000\u0cf0\u0cf1\u0007"+ - "\u0010\u0000\u0000\u0cf1\u0cf2\u0007\u0014\u0000\u0000\u0cf2\u0cf3\u0007"+ - "\u0011\u0000\u0000\u0cf3\u0cf4\u0007\u0007\u0000\u0000\u0cf4\u0cf5\u0007"+ - "\u0017\u0000\u0000\u0cf5\u0224\u0001\u0000\u0000\u0000\u0cf6\u0cf7\u0007"+ - "\u0007\u0000\u0000\u0cf7\u0cf8\u0007\u0013\u0000\u0000\u0cf8\u0cf9\u0007"+ - "\u0010\u0000\u0000\u0cf9\u0cfa\u0007\u0011\u0000\u0000\u0cfa\u0cfb\u0007"+ - "\u0019\u0000\u0000\u0cfb\u0cfc\u0007\b\u0000\u0000\u0cfc\u0226\u0001\u0000"+ - "\u0000\u0000\u0cfd\u0cfe\u0007\u0007\u0000\u0000\u0cfe\u0cff\u0007\u0013"+ - "\u0000\u0000\u0cff\u0d00\u0007\u001c\u0000\u0000\u0d00\u0d01\u0007\u0005"+ - "\u0000\u0000\u0d01\u0d02\u0007\u0011\u0000\u0000\u0d02\u0d03\u0007\u0010"+ - "\u0000\u0000\u0d03\u0228\u0001\u0000\u0000\u0000\u0d04\u0d05\u0007\u0007"+ - "\u0000\u0000\u0d05\u0d06\u0007\u0016\u0000\u0000\u0d06\u0d07\u0007\u0006"+ - "\u0000\u0000\u0d07\u0d08\u0007\u0006\u0000\u0000\u0d08\u0d09\u0007\t\u0000"+ - "\u0000\u0d09\u022a\u0001\u0000\u0000\u0000\u0d0a\u0d0b\u0007\u0013\u0000"+ - "\u0000\u0d0b\u0d0c\u0007\u0012\u0000\u0000\u0d0c\u0d0d\u0007\u001e\u0000"+ - "\u0000\u0d0d\u0d0e\u0007\n\u0000\u0000\u0d0e\u0d0f\u0007\u000e\u0000\u0000"+ - "\u0d0f\u0d10\u0007\u0010\u0000\u0000\u0d10\u022c\u0001\u0000\u0000\u0000"+ - "\u0d11\u0d12\u0007\u0013\u0000\u0000\u0d12\u0d13\u0007\u0019\u0000\u0000"+ - "\u0d13\u022e\u0001\u0000\u0000\u0000\u0d14\u0d15\u0007\u0013\u0000\u0000"+ - "\u0d15\u0d16\u0007\u0019\u0000\u0000\u0d16\u0d17\u0007\u0019\u0000\u0000"+ - "\u0d17\u0230\u0001\u0000\u0000\u0000\u0d18\u0d19\u0007\u0013\u0000\u0000"+ - "\u0d19\u0d1a\u0007\u0011\u0000\u0000\u0d1a\u0d1b\u0007\f\u0000\u0000\u0d1b"+ - "\u0d1c\u0007\t\u0000\u0000\u0d1c\u0232\u0001\u0000\u0000\u0000\u0d1d\u0d1e"+ - "\u0007\u0013\u0000\u0000\u0d1e\u0d1f\u0007\u0018\u0000\u0000\u0d1f\u0d20"+ - "\u0007\n\u0000\u0000\u0d20\u0d21\u0007\r\u0000\u0000\u0d21\u0d22\u0007"+ - "\u0005\u0000\u0000\u0d22\u0d23\u0007\u0010\u0000\u0000\u0d23\u0d24\u0007"+ - "\u0013\u0000\u0000\u0d24\u0d25\u0007\r\u0000\u0000\u0d25\u0234\u0001\u0000"+ - "\u0000\u0000\u0d26\u0d27\u0007\u0013\u0000\u0000\u0d27\u0d28\u0007\u0018"+ - "\u0000\u0000\u0d28\u0d29\u0007\u0010\u0000\u0000\u0d29\u0d2a\u0007\u0011"+ - "\u0000\u0000\u0d2a\u0d2b\u0007\u0013\u0000\u0000\u0d2b\u0d2c\u0007\u0007"+ - "\u0000\u0000\u0d2c\u0236\u0001\u0000\u0000\u0000\u0d2d\u0d2e\u0007\u0013"+ - "\u0000\u0000\u0d2e\u0d2f\u0007\u0018\u0000\u0000\u0d2f\u0d30\u0007\u0010"+ - "\u0000\u0000\u0d30\u0d31\u0007\u0011\u0000\u0000\u0d31\u0d32\u0007\u0013"+ - "\u0000\u0000\u0d32\u0d33\u0007\u0007\u0000\u0000\u0d33\u0d34\u0007\t\u0000"+ - "\u0000\u0d34\u0238\u0001\u0000\u0000\u0000\u0d35\u0d36\u0007\u0013\u0000"+ - "\u0000\u0d36\u0d37\u0007\u001c\u0000\u0000\u0d37\u0d38\u0007\u0007\u0000"+ - "\u0000\u0d38\u0d39\u0007\n\u0000\u0000\u0d39\u0d3a\u0007\f\u0000\u0000"+ - "\u0d3a\u023a\u0001\u0000\u0000\u0000\u0d3b\u0d3c\u0007\u0013\u0000\u0000"+ - "\u0d3c\u0d3d\u0007\u001c\u0000\u0000\u0d3d\u0d3e\u0007\u0007\u0000\u0000"+ - "\u0d3e\u0d3f\u0007\n\u0000\u0000\u0d3f\u0d40\u0007\r\u0000\u0000\u0d40"+ - "\u023c\u0001\u0000\u0000\u0000\u0d41\u0d42\u0007\u0018\u0000\u0000\u0d42"+ - "\u0d43\u0007\u0005\u0000\u0000\u0d43\u0d44\u0007\r\u0000\u0000\u0d44\u0d45"+ - "\u0007\t\u0000\u0000\u0d45\u0d46\u0007\n\u0000\u0000\u0d46\u0d47\u0007"+ - "\r\u0000\u0000\u0d47\u023e\u0001\u0000\u0000\u0000\u0d48\u0d49\u0007\u0018"+ - "\u0000\u0000\u0d49\u0d4a\u0007\u0005\u0000\u0000\u0d4a\u0d4b\u0007\r\u0000"+ - "\u0000\u0d4b\u0d4c\u0007\u0010\u0000\u0000\u0d4c\u0d4d\u0007\u0011\u0000"+ - "\u0000\u0d4d\u0d4e\u0007\u0005\u0000\u0000\u0d4e\u0d4f\u0007\u0006\u0000"+ - "\u0000\u0d4f\u0240\u0001\u0000\u0000\u0000\u0d50\u0d51\u0007\u0018\u0000"+ - "\u0000\u0d51\u0d52\u0007\u0005\u0000\u0000\u0d52\u0d53\u0007\r\u0000\u0000"+ - "\u0d53\u0d54\u0007\u0010\u0000\u0000\u0d54\u0d55\u0007\u0011\u0000\u0000"+ - "\u0d55\u0d56\u0007\u0010\u0000\u0000\u0d56\u0d57\u0007\u0011\u0000\u0000"+ - "\u0d57\u0d58\u0007\u0013\u0000\u0000\u0d58\u0d59\u0007\u0007\u0000\u0000"+ - "\u0d59\u0242\u0001\u0000\u0000\u0000\u0d5a\u0d5b\u0007\u0018\u0000\u0000"+ - "\u0d5b\u0d5c\u0007\u0005\u0000\u0000\u0d5c\u0d5d\u0007\t\u0000\u0000\u0d5d"+ - "\u0d5e\u0007\t\u0000\u0000\u0d5e\u0d5f\u0007\u0011\u0000\u0000\u0d5f\u0d60"+ - "\u0007\u0007\u0000\u0000\u0d60\u0d61\u0007\u0017\u0000\u0000\u0d61\u0244"+ - "\u0001\u0000\u0000\u0000\u0d62\u0d63\u0007\u0018\u0000\u0000\u0d63\u0d64"+ - "\u0007\u0005\u0000\u0000\u0d64\u0d65\u0007\t\u0000\u0000\u0d65\u0d66\u0007"+ - "\t\u0000\u0000\u0d66\u0d67\u0007\u001c\u0000\u0000\u0d67\u0d68\u0007\u0013"+ - "\u0000\u0000\u0d68\u0d69\u0007\r\u0000\u0000\u0d69\u0d6a\u0007\f\u0000"+ - "\u0000\u0d6a\u0246\u0001\u0000\u0000\u0000\u0d6b\u0d6c\u0007\u0018\u0000"+ - "\u0000\u0d6c\u0d6d\u0007\u0006\u0000\u0000\u0d6d\u0d6e\u0007\u0005\u0000"+ - "\u0000\u0d6e\u0d6f\u0007\u0007\u0000\u0000\u0d6f\u0d70\u0007\t\u0000\u0000"+ - "\u0d70\u0248\u0001\u0000\u0000\u0000\u0d71\u0d72\u0007\u0018\u0000\u0000"+ - "\u0d72\u0d73\u0007\r\u0000\u0000\u0d73\u0d74\u0007\n\u0000\u0000\u0d74"+ - "\u0d75\u0007\u000e\u0000\u0000\u0d75\u0d76\u0007\n\u0000\u0000\u0d76\u0d77"+ - "\u0007\f\u0000\u0000\u0d77\u0d78\u0007\u0011\u0000\u0000\u0d78\u0d79\u0007"+ - "\u0007\u0000\u0000\u0d79\u0d7a\u0007\u0017\u0000\u0000\u0d7a\u024a\u0001"+ - "\u0000\u0000\u0000\u0d7b\u0d7c\u0007\u0018\u0000\u0000\u0d7c\u0d7d\u0007"+ - "\r\u0000\u0000\u0d7d\u0d7e\u0007\n\u0000\u0000\u0d7e\u0d7f\u0007\u0018"+ - "\u0000\u0000\u0d7f\u0d80\u0007\u0005\u0000\u0000\u0d80\u0d81\u0007\r\u0000"+ - "\u0000\u0d81\u0d82\u0007\n\u0000\u0000\u0d82\u024c\u0001\u0000\u0000\u0000"+ - "\u0d83\u0d84\u0007\u0018\u0000\u0000\u0d84\u0d85\u0007\r\u0000\u0000\u0d85"+ - "\u0d86\u0007\n\u0000\u0000\u0d86\u0d87\u0007\u0018\u0000\u0000\u0d87\u0d88"+ - "\u0007\u0005\u0000\u0000\u0d88\u0d89\u0007\r\u0000\u0000\u0d89\u0d8a\u0007"+ - "\n\u0000\u0000\u0d8a\u0d8b\u0007\f\u0000\u0000\u0d8b\u024e\u0001\u0000"+ - "\u0000\u0000\u0d8c\u0d8d\u0007\u0018\u0000\u0000\u0d8d\u0d8e\u0007\r\u0000"+ - "\u0000\u0d8e\u0d8f\u0007\n\u0000\u0000\u0d8f\u0d90\u0007\t\u0000\u0000"+ - "\u0d90\u0d91\u0007\n\u0000\u0000\u0d91\u0d92\u0007\r\u0000\u0000\u0d92"+ - "\u0d93\u0007\u001b\u0000\u0000\u0d93\u0d94\u0007\n\u0000\u0000\u0d94\u0250"+ - "\u0001\u0000\u0000\u0000\u0d95\u0d96\u0007\u0018\u0000\u0000\u0d96\u0d97"+ - "\u0007\r\u0000\u0000\u0d97\u0d98\u0007\u0011\u0000\u0000\u0d98\u0d99\u0007"+ - "\u0013\u0000\u0000\u0d99\u0d9a\u0007\r\u0000\u0000\u0d9a\u0252\u0001\u0000"+ - "\u0000\u0000\u0d9b\u0d9c\u0007\u0018\u0000\u0000\u0d9c\u0d9d\u0007\r\u0000"+ - "\u0000\u0d9d\u0d9e\u0007\u0011\u0000\u0000\u0d9e\u0d9f\u0007\u001b\u0000"+ - "\u0000\u0d9f\u0da0\u0007\u0011\u0000\u0000\u0da0\u0da1\u0007\u0006\u0000"+ - "\u0000\u0da1\u0da2\u0007\n\u0000\u0000\u0da2\u0da3\u0007\u0017\u0000\u0000"+ - "\u0da3\u0da4\u0007\n\u0000\u0000\u0da4\u0da5\u0007\t\u0000\u0000\u0da5"+ - "\u0254\u0001\u0000\u0000\u0000\u0da6\u0da7\u0007\u0018\u0000\u0000\u0da7"+ - "\u0da8\u0007\r\u0000\u0000\u0da8\u0da9\u0007\u0013\u0000\u0000\u0da9\u0daa"+ - "\u0007\u000e\u0000\u0000\u0daa\u0dab\u0007\n\u0000\u0000\u0dab\u0dac\u0007"+ - "\f\u0000\u0000\u0dac\u0dad\u0007\u0016\u0000\u0000\u0dad\u0dae\u0007\r"+ - "\u0000\u0000\u0dae\u0daf\u0007\u0005\u0000\u0000\u0daf\u0db0\u0007\u0006"+ - "\u0000\u0000\u0db0\u0256\u0001\u0000\u0000\u0000\u0db1\u0db2\u0007\u0018"+ - "\u0000\u0000\u0db2\u0db3\u0007\r\u0000\u0000\u0db3\u0db4\u0007\u0013\u0000"+ - "\u0000\u0db4\u0db5\u0007\u000e\u0000\u0000\u0db5\u0db6\u0007\n\u0000\u0000"+ - "\u0db6\u0db7\u0007\f\u0000\u0000\u0db7\u0db8\u0007\u0016\u0000\u0000\u0db8"+ - "\u0db9\u0007\r\u0000\u0000\u0db9\u0dba\u0007\n\u0000\u0000\u0dba\u0258"+ - "\u0001\u0000\u0000\u0000\u0dbb\u0dbc\u0007\u0018\u0000\u0000\u0dbc\u0dbd"+ - "\u0007\r\u0000\u0000\u0dbd\u0dbe\u0007\u0013\u0000\u0000\u0dbe\u0dbf\u0007"+ - "\u0017\u0000\u0000\u0dbf\u0dc0\u0007\r\u0000\u0000\u0dc0\u0dc1\u0007\u0005"+ - "\u0000\u0000\u0dc1\u0dc2\u0007\u000f\u0000\u0000\u0dc2\u025a\u0001\u0000"+ - "\u0000\u0000\u0dc3\u0dc4\u0007\u001d\u0000\u0000\u0dc4\u0dc5\u0007\u0016"+ - "\u0000\u0000\u0dc5\u0dc6\u0007\u0013\u0000\u0000\u0dc6\u0dc7\u0007\u0010"+ - "\u0000\u0000\u0dc7\u0dc8\u0007\n\u0000\u0000\u0dc8\u025c\u0001\u0000\u0000"+ - "\u0000\u0dc9\u0dca\u0007\r\u0000\u0000\u0dca\u0dcb\u0007\u0005\u0000\u0000"+ - "\u0dcb\u0dcc\u0007\u0007\u0000\u0000\u0dcc\u0dcd\u0007\u0017\u0000\u0000"+ - "\u0dcd\u0dce\u0007\n\u0000\u0000\u0dce\u025e\u0001\u0000\u0000\u0000\u0dcf"+ - "\u0dd0\u0007\r\u0000\u0000\u0dd0\u0dd1\u0007\n\u0000\u0000\u0dd1\u0dd2"+ - "\u0007\u0005\u0000\u0000\u0dd2\u0dd3\u0007\f\u0000\u0000\u0dd3\u0260\u0001"+ - "\u0000\u0000\u0000\u0dd4\u0dd5\u0007\r\u0000\u0000\u0dd5\u0dd6\u0007\n"+ - "\u0000\u0000\u0dd6\u0dd7\u0007\u0005\u0000\u0000\u0dd7\u0dd8\u0007\t\u0000"+ - "\u0000\u0dd8\u0dd9\u0007\t\u0000\u0000\u0dd9\u0dda\u0007\u0011\u0000\u0000"+ - "\u0dda\u0ddb\u0007\u0017\u0000\u0000\u0ddb\u0ddc\u0007\u0007\u0000\u0000"+ - "\u0ddc\u0262\u0001\u0000\u0000\u0000\u0ddd\u0dde\u0007\r\u0000\u0000\u0dde"+ - "\u0ddf\u0007\n\u0000\u0000\u0ddf\u0de0\u0007\u000e\u0000\u0000\u0de0\u0de1"+ - "\u0007\u0014\u0000\u0000\u0de1\u0de2\u0007\n\u0000\u0000\u0de2\u0de3\u0007"+ - "\u000e\u0000\u0000\u0de3\u0de4\u0007\u0015\u0000\u0000\u0de4\u0264\u0001"+ + "\u0000\u0000\u04ef\u1818\u0001\u0000\u0000\u0000\u04f1\u1823\u0001\u0000"+ + "\u0000\u0000\u04f3\u182c\u0001\u0000\u0000\u0000\u04f5\u1839\u0001\u0000"+ + "\u0000\u0000\u04f7\u1847\u0001\u0000\u0000\u0000\u04f9\u1858\u0001\u0000"+ + "\u0000\u0000\u04fb\u1862\u0001\u0000\u0000\u0000\u04fd\u1870\u0001\u0000"+ + "\u0000\u0000\u04ff\u187a\u0001\u0000\u0000\u0000\u0501\u1889\u0001\u0000"+ + "\u0000\u0000\u0503\u189a\u0001\u0000\u0000\u0000\u0505\u189e\u0001\u0000"+ + "\u0000\u0000\u0507\u18b2\u0001\u0000\u0000\u0000\u0509\u18bc\u0001\u0000"+ + "\u0000\u0000\u050b\u18d2\u0001\u0000\u0000\u0000\u050d\u18df\u0001\u0000"+ + "\u0000\u0000\u050f\u18e7\u0001\u0000\u0000\u0000\u0511\u18ef\u0001\u0000"+ + "\u0000\u0000\u0513\u18f9\u0001\u0000\u0000\u0000\u0515\u1906\u0001\u0000"+ + "\u0000\u0000\u0517\u190a\u0001\u0000\u0000\u0000\u0519\u190e\u0001\u0000"+ + "\u0000\u0000\u051b\u1910\u0001\u0000\u0000\u0000\u051d\u1913\u0001\u0000"+ + "\u0000\u0000\u051f\u191c\u0001\u0000\u0000\u0000\u0521\u191f\u0001\u0000"+ + "\u0000\u0000\u0523\u1928\u0001\u0000\u0000\u0000\u0525\u192c\u0001\u0000"+ + "\u0000\u0000\u0527\u1930\u0001\u0000\u0000\u0000\u0529\u1934\u0001\u0000"+ + "\u0000\u0000\u052b\u1938\u0001\u0000\u0000\u0000\u052d\u193b\u0001\u0000"+ + "\u0000\u0000\u052f\u1944\u0001\u0000\u0000\u0000\u0531\u194a\u0001\u0000"+ + "\u0000\u0000\u0533\u194d\u0001\u0000\u0000\u0000\u0535\u1951\u0001\u0000"+ + "\u0000\u0000\u0537\u195a\u0001\u0000\u0000\u0000\u0539\u1961\u0001\u0000"+ + "\u0000\u0000\u053b\u1964\u0001\u0000\u0000\u0000\u053d\u196c\u0001\u0000"+ + "\u0000\u0000\u053f\u196f\u0001\u0000\u0000\u0000\u0541\u1972\u0001\u0000"+ + "\u0000\u0000\u0543\u1975\u0001\u0000\u0000\u0000\u0545\u197d\u0001\u0000"+ + "\u0000\u0000\u0547\u1980\u0001\u0000\u0000\u0000\u0549\u1983\u0001\u0000"+ + "\u0000\u0000\u054b\u1985\u0001\u0000\u0000\u0000\u054d\u19a7\u0001\u0000"+ + "\u0000\u0000\u054f\u19aa\u0001\u0000\u0000\u0000\u0551\u19ae\u0001\u0000"+ + "\u0000\u0000\u0553\u19b6\u0001\u0000\u0000\u0000\u0555\u19c6\u0001\u0000"+ + "\u0000\u0000\u0557\u19d1\u0001\u0000\u0000\u0000\u0559\u19d5\u0001\u0000"+ + "\u0000\u0000\u055b\u19e0\u0001\u0000\u0000\u0000\u055d\u1a07\u0001\u0000"+ + "\u0000\u0000\u055f\u1a3a\u0001\u0000\u0000\u0000\u0561\u1a52\u0001\u0000"+ + "\u0000\u0000\u0563\u1a55\u0001\u0000\u0000\u0000\u0565\u1a57\u0001\u0000"+ + "\u0000\u0000\u0567\u1a5c\u0001\u0000\u0000\u0000\u0569\u1a7b\u0001\u0000"+ + "\u0000\u0000\u056b\u1a7e\u0001\u0000\u0000\u0000\u056d\u1a83\u0001\u0000"+ + "\u0000\u0000\u056f\u1a90\u0001\u0000\u0000\u0000\u0571\u1a93\u0001\u0000"+ + "\u0000\u0000\u0573\u1a98\u0001\u0000\u0000\u0000\u0575\u1a9e\u0001\u0000"+ + "\u0000\u0000\u0577\u1aa3\u0001\u0000\u0000\u0000\u0579\u1aa8\u0001\u0000"+ + "\u0000\u0000\u057b\u1aad\u0001\u0000\u0000\u0000\u057d\u1ab2\u0001\u0000"+ + "\u0000\u0000\u057f\u1ac3\u0001\u0000\u0000\u0000\u0581\u1ac5\u0001\u0000"+ + "\u0000\u0000\u0583\u0584\u0005$\u0000\u0000\u0584\u0006\u0001\u0000\u0000"+ + "\u0000\u0585\u0586\u0005(\u0000\u0000\u0586\b\u0001\u0000\u0000\u0000"+ + "\u0587\u0588\u0005)\u0000\u0000\u0588\n\u0001\u0000\u0000\u0000\u0589"+ + "\u058a\u0005[\u0000\u0000\u058a\f\u0001\u0000\u0000\u0000\u058b\u058c"+ + "\u0005]\u0000\u0000\u058c\u000e\u0001\u0000\u0000\u0000\u058d\u058e\u0005"+ + ",\u0000\u0000\u058e\u0010\u0001\u0000\u0000\u0000\u058f\u0590\u0005;\u0000"+ + "\u0000\u0590\u0012\u0001\u0000\u0000\u0000\u0591\u0592\u0005:\u0000\u0000"+ + "\u0592\u0014\u0001\u0000\u0000\u0000\u0593\u0594\u0005*\u0000\u0000\u0594"+ + "\u0016\u0001\u0000\u0000\u0000\u0595\u0596\u0005=\u0000\u0000\u0596\u0018"+ + "\u0001\u0000\u0000\u0000\u0597\u0598\u0005.\u0000\u0000\u0598\u001a\u0001"+ + "\u0000\u0000\u0000\u0599\u059a\u0005+\u0000\u0000\u059a\u001c\u0001\u0000"+ + "\u0000\u0000\u059b\u059c\u0005-\u0000\u0000\u059c\u001e\u0001\u0000\u0000"+ + "\u0000\u059d\u059e\u0005/\u0000\u0000\u059e \u0001\u0000\u0000\u0000\u059f"+ + "\u05a0\u0005^\u0000\u0000\u05a0\"\u0001\u0000\u0000\u0000\u05a1\u05a2"+ + "\u0005<\u0000\u0000\u05a2$\u0001\u0000\u0000\u0000\u05a3\u05a4\u0005>"+ + "\u0000\u0000\u05a4&\u0001\u0000\u0000\u0000\u05a5\u05a6\u0005<\u0000\u0000"+ + "\u05a6\u05a7\u0005<\u0000\u0000\u05a7(\u0001\u0000\u0000\u0000\u05a8\u05a9"+ + "\u0005>\u0000\u0000\u05a9\u05aa\u0005>\u0000\u0000\u05aa*\u0001\u0000"+ + "\u0000\u0000\u05ab\u05ac\u0005:\u0000\u0000\u05ac\u05ad\u0005=\u0000\u0000"+ + "\u05ad,\u0001\u0000\u0000\u0000\u05ae\u05af\u0005<\u0000\u0000\u05af\u05b0"+ + "\u0005=\u0000\u0000\u05b0.\u0001\u0000\u0000\u0000\u05b1\u05b2\u0005="+ + "\u0000\u0000\u05b2\u05b3\u0005>\u0000\u0000\u05b30\u0001\u0000\u0000\u0000"+ + "\u05b4\u05b5\u0005>\u0000\u0000\u05b5\u05b6\u0005=\u0000\u0000\u05b62"+ + "\u0001\u0000\u0000\u0000\u05b7\u05b8\u0005.\u0000\u0000\u05b8\u05b9\u0005"+ + ".\u0000\u0000\u05b94\u0001\u0000\u0000\u0000\u05ba\u05bb\u0005<\u0000"+ + "\u0000\u05bb\u05bc\u0005>\u0000\u0000\u05bc6\u0001\u0000\u0000\u0000\u05bd"+ + "\u05be\u0005:\u0000\u0000\u05be\u05bf\u0005:\u0000\u0000\u05bf8\u0001"+ + "\u0000\u0000\u0000\u05c0\u05c1\u0005%\u0000\u0000\u05c1:\u0001\u0000\u0000"+ + "\u0000\u05c2\u05c4\u0005$\u0000\u0000\u05c3\u05c5\u0007\u0000\u0000\u0000"+ + "\u05c4\u05c3\u0001\u0000\u0000\u0000\u05c5\u05c6\u0001\u0000\u0000\u0000"+ + "\u05c6\u05c4\u0001\u0000\u0000\u0000\u05c6\u05c7\u0001\u0000\u0000\u0000"+ + "\u05c7<\u0001\u0000\u0000\u0000\u05c8\u05d8\u0003A\u001e\u0000\u05c9\u05cd"+ + "\u0005+\u0000\u0000\u05ca\u05cb\u0005-\u0000\u0000\u05cb\u05cd\u0004\u001c"+ + "\u0000\u0000\u05cc\u05c9\u0001\u0000\u0000\u0000\u05cc\u05ca\u0001\u0000"+ + "\u0000\u0000\u05cd\u05ce\u0001\u0000\u0000\u0000\u05ce\u05cc\u0001\u0000"+ + "\u0000\u0000\u05ce\u05cf\u0001\u0000\u0000\u0000\u05cf\u05d3\u0001\u0000"+ + "\u0000\u0000\u05d0\u05d4\u0003A\u001e\u0000\u05d1\u05d2\u0005/\u0000\u0000"+ + "\u05d2\u05d4\u0004\u001c\u0001\u0000\u05d3\u05d0\u0001\u0000\u0000\u0000"+ + "\u05d3\u05d1\u0001\u0000\u0000\u0000\u05d4\u05d8\u0001\u0000\u0000\u0000"+ + "\u05d5\u05d6\u0005/\u0000\u0000\u05d6\u05d8\u0004\u001c\u0002\u0000\u05d7"+ + "\u05c8\u0001\u0000\u0000\u0000\u05d7\u05cc\u0001\u0000\u0000\u0000\u05d7"+ + "\u05d5\u0001\u0000\u0000\u0000\u05d8\u05d9\u0001\u0000\u0000\u0000\u05d9"+ + "\u05d7\u0001\u0000\u0000\u0000\u05d9\u05da\u0001\u0000\u0000\u0000\u05da"+ + "\u05dd\u0001\u0000\u0000\u0000\u05db\u05dd\u0007\u0001\u0000\u0000\u05dc"+ + "\u05d7\u0001\u0000\u0000\u0000\u05dc\u05db\u0001\u0000\u0000\u0000\u05dd"+ + "\u05de\u0001\u0000\u0000\u0000\u05de\u05df\u0006\u001c\u0000\u0000\u05df"+ + ">\u0001\u0000\u0000\u0000\u05e0\u05e6\u0003C\u001f\u0000\u05e1\u05e2\u0005"+ + "-\u0000\u0000\u05e2\u05e6\u0004\u001d\u0003\u0000\u05e3\u05e4\u0005/\u0000"+ + "\u0000\u05e4\u05e6\u0004\u001d\u0004\u0000\u05e5\u05e0\u0001\u0000\u0000"+ + "\u0000\u05e5\u05e1\u0001\u0000\u0000\u0000\u05e5\u05e3\u0001\u0000\u0000"+ + "\u0000\u05e6\u05e9\u0001\u0000\u0000\u0000\u05e7\u05e5\u0001\u0000\u0000"+ + "\u0000\u05e7\u05e8\u0001\u0000\u0000\u0000\u05e8\u05ea\u0001\u0000\u0000"+ + "\u0000\u05e9\u05e7\u0001\u0000\u0000\u0000\u05ea\u05ec\u0003E \u0000\u05eb"+ + "\u05ed\u0003=\u001c\u0000\u05ec\u05eb\u0001\u0000\u0000\u0000\u05ec\u05ed"+ + "\u0001\u0000\u0000\u0000\u05ed\u05f1\u0001\u0000\u0000\u0000\u05ee\u05f2"+ + "\u0005+\u0000\u0000\u05ef\u05f0\u0005-\u0000\u0000\u05f0\u05f2\u0004\u001d"+ + "\u0005\u0000\u05f1\u05ee\u0001\u0000\u0000\u0000\u05f1\u05ef\u0001\u0000"+ + "\u0000\u0000\u05f2\u05f3\u0001\u0000\u0000\u0000\u05f3\u05f1\u0001\u0000"+ + "\u0000\u0000\u05f3\u05f4\u0001\u0000\u0000\u0000\u05f4\u05f5\u0001\u0000"+ + "\u0000\u0000\u05f5\u05f6\u0006\u001d\u0001\u0000\u05f6@\u0001\u0000\u0000"+ + "\u0000\u05f7\u05f8\u0007\u0002\u0000\u0000\u05f8B\u0001\u0000\u0000\u0000"+ + "\u05f9\u05fa\u0007\u0003\u0000\u0000\u05faD\u0001\u0000\u0000\u0000\u05fb"+ + "\u05fc\u0007\u0004\u0000\u0000\u05fcF\u0001\u0000\u0000\u0000\u05fd\u05fe"+ + "\u0007\u0005\u0000\u0000\u05fe\u05ff\u0007\u0006\u0000\u0000\u05ff\u0600"+ + "\u0007\u0006\u0000\u0000\u0600H\u0001\u0000\u0000\u0000\u0601\u0602\u0007"+ + "\u0005\u0000\u0000\u0602\u0603\u0007\u0007\u0000\u0000\u0603\u0604\u0007"+ + "\u0005\u0000\u0000\u0604\u0605\u0007\u0006\u0000\u0000\u0605\u0606\u0007"+ + "\b\u0000\u0000\u0606\u0607\u0007\t\u0000\u0000\u0607\u0608\u0007\n\u0000"+ + "\u0000\u0608J\u0001\u0000\u0000\u0000\u0609\u060a\u0007\u0005\u0000\u0000"+ + "\u060a\u060b\u0007\u0007\u0000\u0000\u060b\u060c\u0007\u0005\u0000\u0000"+ + "\u060c\u060d\u0007\u0006\u0000\u0000\u060d\u060e\u0007\b\u0000\u0000\u060e"+ + "\u060f\u0007\u000b\u0000\u0000\u060f\u0610\u0007\n\u0000\u0000\u0610L"+ + "\u0001\u0000\u0000\u0000\u0611\u0612\u0007\u0005\u0000\u0000\u0612\u0613"+ + "\u0007\u0007\u0000\u0000\u0613\u0614\u0007\f\u0000\u0000\u0614N\u0001"+ + "\u0000\u0000\u0000\u0615\u0616\u0007\u0005\u0000\u0000\u0616\u0617\u0007"+ + "\u0007\u0000\u0000\u0617\u0618\u0007\b\u0000\u0000\u0618P\u0001\u0000"+ + "\u0000\u0000\u0619\u061a\u0007\u0005\u0000\u0000\u061a\u061b\u0007\r\u0000"+ + "\u0000\u061b\u061c\u0007\r\u0000\u0000\u061c\u061d\u0007\u0005\u0000\u0000"+ + "\u061d\u061e\u0007\b\u0000\u0000\u061eR\u0001\u0000\u0000\u0000\u061f"+ + "\u0620\u0007\u0005\u0000\u0000\u0620\u0621\u0007\t\u0000\u0000\u0621T"+ + "\u0001\u0000\u0000\u0000\u0622\u0623\u0007\u0005\u0000\u0000\u0623\u0624"+ + "\u0007\t\u0000\u0000\u0624\u0625\u0007\u000e\u0000\u0000\u0625V\u0001"+ + "\u0000\u0000\u0000\u0626\u0627\u0007\u0005\u0000\u0000\u0627\u0628\u0007"+ + "\t\u0000\u0000\u0628\u0629\u0007\b\u0000\u0000\u0629\u062a\u0007\u000f"+ + "\u0000\u0000\u062a\u062b\u0007\u000f\u0000\u0000\u062b\u062c\u0007\n\u0000"+ + "\u0000\u062c\u062d\u0007\u0010\u0000\u0000\u062d\u062e\u0007\r\u0000\u0000"+ + "\u062e\u062f\u0007\u0011\u0000\u0000\u062f\u0630\u0007\u000e\u0000\u0000"+ + "\u0630X\u0001\u0000\u0000\u0000\u0631\u0632\u0007\u0012\u0000\u0000\u0632"+ + "\u0633\u0007\u0013\u0000\u0000\u0633\u0634\u0007\u0010\u0000\u0000\u0634"+ + "\u0635\u0007\u0014\u0000\u0000\u0635Z\u0001\u0000\u0000\u0000\u0636\u0637"+ + "\u0007\u000e\u0000\u0000\u0637\u0638\u0007\u0005\u0000\u0000\u0638\u0639"+ + "\u0007\t\u0000\u0000\u0639\u063a\u0007\n\u0000\u0000\u063a\\\u0001\u0000"+ + "\u0000\u0000\u063b\u063c\u0007\u000e\u0000\u0000\u063c\u063d\u0007\u0005"+ + "\u0000\u0000\u063d\u063e\u0007\t\u0000\u0000\u063e\u063f\u0007\u0010\u0000"+ + "\u0000\u063f^\u0001\u0000\u0000\u0000\u0640\u0641\u0007\u000e\u0000\u0000"+ + "\u0641\u0642\u0007\u0014\u0000\u0000\u0642\u0643\u0007\n\u0000\u0000\u0643"+ + "\u0644\u0007\u000e\u0000\u0000\u0644\u0645\u0007\u0015\u0000\u0000\u0645"+ + "`\u0001\u0000\u0000\u0000\u0646\u0647\u0007\u000e\u0000\u0000\u0647\u0648"+ + "\u0007\u0013\u0000\u0000\u0648\u0649\u0007\u0006\u0000\u0000\u0649\u064a"+ + "\u0007\u0006\u0000\u0000\u064a\u064b\u0007\u0005\u0000\u0000\u064b\u064c"+ + "\u0007\u0010\u0000\u0000\u064c\u064d\u0007\n\u0000\u0000\u064db\u0001"+ + "\u0000\u0000\u0000\u064e\u064f\u0007\u000e\u0000\u0000\u064f\u0650\u0007"+ + "\u0013\u0000\u0000\u0650\u0651\u0007\u0006\u0000\u0000\u0651\u0652\u0007"+ + "\u0016\u0000\u0000\u0652\u0653\u0007\u000f\u0000\u0000\u0653\u0654\u0007"+ + "\u0007\u0000\u0000\u0654d\u0001\u0000\u0000\u0000\u0655\u0656\u0007\u000e"+ + "\u0000\u0000\u0656\u0657\u0007\u0013\u0000\u0000\u0657\u0658\u0007\u0007"+ + "\u0000\u0000\u0658\u0659\u0007\t\u0000\u0000\u0659\u065a\u0007\u0010\u0000"+ + "\u0000\u065a\u065b\u0007\r\u0000\u0000\u065b\u065c\u0007\u0005\u0000\u0000"+ + "\u065c\u065d\u0007\u0011\u0000\u0000\u065d\u065e\u0007\u0007\u0000\u0000"+ + "\u065e\u065f\u0007\u0010\u0000\u0000\u065ff\u0001\u0000\u0000\u0000\u0660"+ + "\u0661\u0007\u000e\u0000\u0000\u0661\u0662\u0007\r\u0000\u0000\u0662\u0663"+ + "\u0007\n\u0000\u0000\u0663\u0664\u0007\u0005\u0000\u0000\u0664\u0665\u0007"+ + "\u0010\u0000\u0000\u0665\u0666\u0007\n\u0000\u0000\u0666h\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\u000e\u0000\u0000\u0670\u0671\u0007\u0005\u0000\u0000\u0671"+ + "\u0672\u0007\u0010\u0000\u0000\u0672\u0673\u0007\u0005\u0000\u0000\u0673"+ + "\u0674\u0007\u0006\u0000\u0000\u0674\u0675\u0007\u0013\u0000\u0000\u0675"+ + "\u0676\u0007\u0017\u0000\u0000\u0676j\u0001\u0000\u0000\u0000\u0677\u0678"+ + "\u0007\u000e\u0000\u0000\u0678\u0679\u0007\u0016\u0000\u0000\u0679\u067a"+ + "\u0007\r\u0000\u0000\u067a\u067b\u0007\r\u0000\u0000\u067b\u067c\u0007"+ + "\n\u0000\u0000\u067c\u067d\u0007\u0007\u0000\u0000\u067d\u067e\u0007\u0010"+ + "\u0000\u0000\u067e\u067f\u0005_\u0000\u0000\u067f\u0680\u0007\f\u0000"+ + "\u0000\u0680\u0681\u0007\u0005\u0000\u0000\u0681\u0682\u0007\u0010\u0000"+ + "\u0000\u0682\u0683\u0007\n\u0000\u0000\u0683l\u0001\u0000\u0000\u0000"+ + "\u0684\u0685\u0007\u000e\u0000\u0000\u0685\u0686\u0007\u0016\u0000\u0000"+ + "\u0686\u0687\u0007\r\u0000\u0000\u0687\u0688\u0007\r\u0000\u0000\u0688"+ + "\u0689\u0007\n\u0000\u0000\u0689\u068a\u0007\u0007\u0000\u0000\u068a\u068b"+ + "\u0007\u0010\u0000\u0000\u068b\u068c\u0005_\u0000\u0000\u068c\u068d\u0007"+ + "\r\u0000\u0000\u068d\u068e\u0007\u0013\u0000\u0000\u068e\u068f\u0007\u0006"+ + "\u0000\u0000\u068f\u0690\u0007\n\u0000\u0000\u0690n\u0001\u0000\u0000"+ + "\u0000\u0691\u0692\u0007\u000e\u0000\u0000\u0692\u0693\u0007\u0016\u0000"+ + "\u0000\u0693\u0694\u0007\r\u0000\u0000\u0694\u0695\u0007\r\u0000\u0000"+ + "\u0695\u0696\u0007\n\u0000\u0000\u0696\u0697\u0007\u0007\u0000\u0000\u0697"+ + "\u0698\u0007\u0010\u0000\u0000\u0698\u0699\u0005_\u0000\u0000\u0699\u069a"+ + "\u0007\u0010\u0000\u0000\u069a\u069b\u0007\u0011\u0000\u0000\u069b\u069c"+ + "\u0007\u000f\u0000\u0000\u069c\u069d\u0007\n\u0000\u0000\u069dp\u0001"+ + "\u0000\u0000\u0000\u069e\u069f\u0007\u000e\u0000\u0000\u069f\u06a0\u0007"+ + "\u0016\u0000\u0000\u06a0\u06a1\u0007\r\u0000\u0000\u06a1\u06a2\u0007\r"+ + "\u0000\u0000\u06a2\u06a3\u0007\n\u0000\u0000\u06a3\u06a4\u0007\u0007\u0000"+ + "\u0000\u06a4\u06a5\u0007\u0010\u0000\u0000\u06a5\u06a6\u0005_\u0000\u0000"+ + "\u06a6\u06a7\u0007\u0010\u0000\u0000\u06a7\u06a8\u0007\u0011\u0000\u0000"+ + "\u06a8\u06a9\u0007\u000f\u0000\u0000\u06a9\u06aa\u0007\n\u0000\u0000\u06aa"+ + "\u06ab\u0007\t\u0000\u0000\u06ab\u06ac\u0007\u0010\u0000\u0000\u06ac\u06ad"+ + "\u0007\u0005\u0000\u0000\u06ad\u06ae\u0007\u000f\u0000\u0000\u06ae\u06af"+ + "\u0007\u0018\u0000\u0000\u06afr\u0001\u0000\u0000\u0000\u06b0\u06b1\u0007"+ + "\u000e\u0000\u0000\u06b1\u06b2\u0007\u0016\u0000\u0000\u06b2\u06b3\u0007"+ + "\r\u0000\u0000\u06b3\u06b4\u0007\r\u0000\u0000\u06b4\u06b5\u0007\n\u0000"+ + "\u0000\u06b5\u06b6\u0007\u0007\u0000\u0000\u06b6\u06b7\u0007\u0010\u0000"+ + "\u0000\u06b7\u06b8\u0005_\u0000\u0000\u06b8\u06b9\u0007\u0016\u0000\u0000"+ + "\u06b9\u06ba\u0007\t\u0000\u0000\u06ba\u06bb\u0007\n\u0000\u0000\u06bb"+ + "\u06bc\u0007\r\u0000\u0000\u06bct\u0001\u0000\u0000\u0000\u06bd\u06be"+ + "\u0007\f\u0000\u0000\u06be\u06bf\u0007\n\u0000\u0000\u06bf\u06c0\u0007"+ + "\u0019\u0000\u0000\u06c0\u06c1\u0007\u0005\u0000\u0000\u06c1\u06c2\u0007"+ + "\u0016\u0000\u0000\u06c2\u06c3\u0007\u0006\u0000\u0000\u06c3\u06c4\u0007"+ + "\u0010\u0000\u0000\u06c4v\u0001\u0000\u0000\u0000\u06c5\u06c6\u0007\f"+ + "\u0000\u0000\u06c6\u06c7\u0007\n\u0000\u0000\u06c7\u06c8\u0007\u0019\u0000"+ + "\u0000\u06c8\u06c9\u0007\n\u0000\u0000\u06c9\u06ca\u0007\r\u0000\u0000"+ + "\u06ca\u06cb\u0007\r\u0000\u0000\u06cb\u06cc\u0007\u0005\u0000\u0000\u06cc"+ + "\u06cd\u0007\u0012\u0000\u0000\u06cd\u06ce\u0007\u0006\u0000\u0000\u06ce"+ + "\u06cf\u0007\n\u0000\u0000\u06cfx\u0001\u0000\u0000\u0000\u06d0\u06d1"+ + "\u0007\f\u0000\u0000\u06d1\u06d2\u0007\n\u0000\u0000\u06d2\u06d3\u0007"+ + "\t\u0000\u0000\u06d3\u06d4\u0007\u000e\u0000\u0000\u06d4z\u0001\u0000"+ + "\u0000\u0000\u06d5\u06d6\u0007\f\u0000\u0000\u06d6\u06d7\u0007\u0011\u0000"+ + "\u0000\u06d7\u06d8\u0007\t\u0000\u0000\u06d8\u06d9\u0007\u0010\u0000\u0000"+ + "\u06d9\u06da\u0007\u0011\u0000\u0000\u06da\u06db\u0007\u0007\u0000\u0000"+ + "\u06db\u06dc\u0007\u000e\u0000\u0000\u06dc\u06dd\u0007\u0010\u0000\u0000"+ + "\u06dd|\u0001\u0000\u0000\u0000\u06de\u06df\u0007\f\u0000\u0000\u06df"+ + "\u06e0\u0007\u0013\u0000\u0000\u06e0~\u0001\u0000\u0000\u0000\u06e1\u06e2"+ + "\u0007\n\u0000\u0000\u06e2\u06e3\u0007\u0006\u0000\u0000\u06e3\u06e4\u0007"+ + "\t\u0000\u0000\u06e4\u06e5\u0007\n\u0000\u0000\u06e5\u0080\u0001\u0000"+ + "\u0000\u0000\u06e6\u06e7\u0007\n\u0000\u0000\u06e7\u06e8\u0007\u001a\u0000"+ + "\u0000\u06e8\u06e9\u0007\u000e\u0000\u0000\u06e9\u06ea\u0007\n\u0000\u0000"+ + "\u06ea\u06eb\u0007\u0018\u0000\u0000\u06eb\u06ec\u0007\u0010\u0000\u0000"+ + "\u06ec\u0082\u0001\u0000\u0000\u0000\u06ed\u06ee\u0007\u0019\u0000\u0000"+ + "\u06ee\u06ef\u0007\u0005\u0000\u0000\u06ef\u06f0\u0007\u0006\u0000\u0000"+ + "\u06f0\u06f1\u0007\t\u0000\u0000\u06f1\u06f2\u0007\n\u0000\u0000\u06f2"+ + "\u0084\u0001\u0000\u0000\u0000\u06f3\u06f4\u0007\u0019\u0000\u0000\u06f4"+ + "\u06f5\u0007\n\u0000\u0000\u06f5\u06f6\u0007\u0010\u0000\u0000\u06f6\u06f7"+ + "\u0007\u000e\u0000\u0000\u06f7\u06f8\u0007\u0014\u0000\u0000\u06f8\u0086"+ + "\u0001\u0000\u0000\u0000\u06f9\u06fa\u0007\u0019\u0000\u0000\u06fa\u06fb"+ + "\u0007\u0013\u0000\u0000\u06fb\u06fc\u0007\r\u0000\u0000\u06fc\u0088\u0001"+ + "\u0000\u0000\u0000\u06fd\u06fe\u0007\u0019\u0000\u0000\u06fe\u06ff\u0007"+ + "\u0013\u0000\u0000\u06ff\u0700\u0007\r\u0000\u0000\u0700\u0701\u0007\n"+ + "\u0000\u0000\u0701\u0702\u0007\u0011\u0000\u0000\u0702\u0703\u0007\u0017"+ + "\u0000\u0000\u0703\u0704\u0007\u0007\u0000\u0000\u0704\u008a\u0001\u0000"+ + "\u0000\u0000\u0705\u0706\u0007\u0019\u0000\u0000\u0706\u0707\u0007\r\u0000"+ + "\u0000\u0707\u0708\u0007\u0013\u0000\u0000\u0708\u0709\u0007\u000f\u0000"+ + "\u0000\u0709\u008c\u0001\u0000\u0000\u0000\u070a\u070b\u0007\u0017\u0000"+ + "\u0000\u070b\u070c\u0007\r\u0000\u0000\u070c\u070d\u0007\u0005\u0000\u0000"+ + "\u070d\u070e\u0007\u0007\u0000\u0000\u070e\u070f\u0007\u0010\u0000\u0000"+ + "\u070f\u008e\u0001\u0000\u0000\u0000\u0710\u0711\u0007\u0017\u0000\u0000"+ + "\u0711\u0712\u0007\r\u0000\u0000\u0712\u0713\u0007\u0013\u0000\u0000\u0713"+ + "\u0714\u0007\u0016\u0000\u0000\u0714\u0715\u0007\u0018\u0000\u0000\u0715"+ + "\u0090\u0001\u0000\u0000\u0000\u0716\u0717\u0007\u0014\u0000\u0000\u0717"+ + "\u0718\u0007\u0005\u0000\u0000\u0718\u0719\u0007\u001b\u0000\u0000\u0719"+ + "\u071a\u0007\u0011\u0000\u0000\u071a\u071b\u0007\u0007\u0000\u0000\u071b"+ + "\u071c\u0007\u0017\u0000\u0000\u071c\u0092\u0001\u0000\u0000\u0000\u071d"+ + "\u071e\u0007\u0011\u0000\u0000\u071e\u071f\u0007\u0007\u0000\u0000\u071f"+ + "\u0094\u0001\u0000\u0000\u0000\u0720\u0721\u0007\u0011\u0000\u0000\u0721"+ + "\u0722\u0007\u0007\u0000\u0000\u0722\u0723\u0007\u0011\u0000\u0000\u0723"+ + "\u0724\u0007\u0010\u0000\u0000\u0724\u0725\u0007\u0011\u0000\u0000\u0725"+ + "\u0726\u0007\u0005\u0000\u0000\u0726\u0727\u0007\u0006\u0000\u0000\u0727"+ + "\u0728\u0007\u0006\u0000\u0000\u0728\u0729\u0007\b\u0000\u0000\u0729\u0096"+ + "\u0001\u0000\u0000\u0000\u072a\u072b\u0007\u0011\u0000\u0000\u072b\u072c"+ + "\u0007\u0007\u0000\u0000\u072c\u072d\u0007\u0010\u0000\u0000\u072d\u072e"+ + "\u0007\n\u0000\u0000\u072e\u072f\u0007\r\u0000\u0000\u072f\u0730\u0007"+ + "\t\u0000\u0000\u0730\u0731\u0007\n\u0000\u0000\u0731\u0732\u0007\u000e"+ + "\u0000\u0000\u0732\u0733\u0007\u0010\u0000\u0000\u0733\u0098\u0001\u0000"+ + "\u0000\u0000\u0734\u0735\u0007\u0011\u0000\u0000\u0735\u0736\u0007\u0007"+ + "\u0000\u0000\u0736\u0737\u0007\u0010\u0000\u0000\u0737\u0738\u0007\u0013"+ + "\u0000\u0000\u0738\u009a\u0001\u0000\u0000\u0000\u0739\u073a\u0007\u0006"+ + "\u0000\u0000\u073a\u073b\u0007\u0005\u0000\u0000\u073b\u073c\u0007\u0010"+ + "\u0000\u0000\u073c\u073d\u0007\n\u0000\u0000\u073d\u073e\u0007\r\u0000"+ + "\u0000\u073e\u073f\u0007\u0005\u0000\u0000\u073f\u0740\u0007\u0006\u0000"+ + "\u0000\u0740\u009c\u0001\u0000\u0000\u0000\u0741\u0742\u0007\u0006\u0000"+ + "\u0000\u0742\u0743\u0007\n\u0000\u0000\u0743\u0744\u0007\u0005\u0000\u0000"+ + "\u0744\u0745\u0007\f\u0000\u0000\u0745\u0746\u0007\u0011\u0000\u0000\u0746"+ + "\u0747\u0007\u0007\u0000\u0000\u0747\u0748\u0007\u0017\u0000\u0000\u0748"+ + "\u009e\u0001\u0000\u0000\u0000\u0749\u074a\u0007\u0006\u0000\u0000\u074a"+ + "\u074b\u0007\u0011\u0000\u0000\u074b\u074c\u0007\u000f\u0000\u0000\u074c"+ + "\u074d\u0007\u0011\u0000\u0000\u074d\u074e\u0007\u0010\u0000\u0000\u074e"+ + "\u00a0\u0001\u0000\u0000\u0000\u074f\u0750\u0007\u0006\u0000\u0000\u0750"+ + "\u0751\u0007\u0013\u0000\u0000\u0751\u0752\u0007\u000e\u0000\u0000\u0752"+ + "\u0753\u0007\u0005\u0000\u0000\u0753\u0754\u0007\u0006\u0000\u0000\u0754"+ + "\u0755\u0007\u0010\u0000\u0000\u0755\u0756\u0007\u0011\u0000\u0000\u0756"+ + "\u0757\u0007\u000f\u0000\u0000\u0757\u0758\u0007\n\u0000\u0000\u0758\u00a2"+ + "\u0001\u0000\u0000\u0000\u0759\u075a\u0007\u0006\u0000\u0000\u075a\u075b"+ + "\u0007\u0013\u0000\u0000\u075b\u075c\u0007\u000e\u0000\u0000\u075c\u075d"+ + "\u0007\u0005\u0000\u0000\u075d\u075e\u0007\u0006\u0000\u0000\u075e\u075f"+ + "\u0007\u0010\u0000\u0000\u075f\u0760\u0007\u0011\u0000\u0000\u0760\u0761"+ + "\u0007\u000f\u0000\u0000\u0761\u0762\u0007\n\u0000\u0000\u0762\u0763\u0007"+ + "\t\u0000\u0000\u0763\u0764\u0007\u0010\u0000\u0000\u0764\u0765\u0007\u0005"+ + "\u0000\u0000\u0765\u0766\u0007\u000f\u0000\u0000\u0766\u0767\u0007\u0018"+ + "\u0000\u0000\u0767\u00a4\u0001\u0000\u0000\u0000\u0768\u0769\u0007\u0007"+ + "\u0000\u0000\u0769\u076a\u0007\u0013\u0000\u0000\u076a\u076b\u0007\u0010"+ + "\u0000\u0000\u076b\u00a6\u0001\u0000\u0000\u0000\u076c\u076d\u0007\u0007"+ + "\u0000\u0000\u076d\u076e\u0007\u0016\u0000\u0000\u076e\u076f\u0007\u0006"+ + "\u0000\u0000\u076f\u0770\u0007\u0006\u0000\u0000\u0770\u00a8\u0001\u0000"+ + "\u0000\u0000\u0771\u0772\u0007\u0013\u0000\u0000\u0772\u0773\u0007\u0019"+ + "\u0000\u0000\u0773\u0774\u0007\u0019\u0000\u0000\u0774\u0775\u0007\t\u0000"+ + "\u0000\u0775\u0776\u0007\n\u0000\u0000\u0776\u0777\u0007\u0010\u0000\u0000"+ + "\u0777\u00aa\u0001\u0000\u0000\u0000\u0778\u0779\u0007\u0013\u0000\u0000"+ + "\u0779\u077a\u0007\u0007\u0000\u0000\u077a\u00ac\u0001\u0000\u0000\u0000"+ + "\u077b\u077c\u0007\u0013\u0000\u0000\u077c\u077d\u0007\u0007\u0000\u0000"+ + "\u077d\u077e\u0007\u0006\u0000\u0000\u077e\u077f\u0007\b\u0000\u0000\u077f"+ + "\u00ae\u0001\u0000\u0000\u0000\u0780\u0781\u0007\u0013\u0000\u0000\u0781"+ + "\u0782\u0007\r\u0000\u0000\u0782\u00b0\u0001\u0000\u0000\u0000\u0783\u0784"+ + "\u0007\u0013\u0000\u0000\u0784\u0785\u0007\r\u0000\u0000\u0785\u0786\u0007"+ + "\f\u0000\u0000\u0786\u0787\u0007\n\u0000\u0000\u0787\u0788\u0007\r\u0000"+ + "\u0000\u0788\u00b2\u0001\u0000\u0000\u0000\u0789\u078a\u0007\u0018\u0000"+ + "\u0000\u078a\u078b\u0007\u0006\u0000\u0000\u078b\u078c\u0007\u0005\u0000"+ + "\u0000\u078c\u078d\u0007\u000e\u0000\u0000\u078d\u078e\u0007\u0011\u0000"+ + "\u0000\u078e\u078f\u0007\u0007\u0000\u0000\u078f\u0790\u0007\u0017\u0000"+ + "\u0000\u0790\u00b4\u0001\u0000\u0000\u0000\u0791\u0792\u0007\u0018\u0000"+ + "\u0000\u0792\u0793\u0007\r\u0000\u0000\u0793\u0794\u0007\u0011\u0000\u0000"+ + "\u0794\u0795\u0007\u000f\u0000\u0000\u0795\u0796\u0007\u0005\u0000\u0000"+ + "\u0796\u0797\u0007\r\u0000\u0000\u0797\u0798\u0007\b\u0000\u0000\u0798"+ + "\u00b6\u0001\u0000\u0000\u0000\u0799\u079a\u0007\r\u0000\u0000\u079a\u079b"+ + "\u0007\n\u0000\u0000\u079b\u079c\u0007\u0019\u0000\u0000\u079c\u079d\u0007"+ + "\n\u0000\u0000\u079d\u079e\u0007\r\u0000\u0000\u079e\u079f\u0007\n\u0000"+ + "\u0000\u079f\u07a0\u0007\u0007\u0000\u0000\u07a0\u07a1\u0007\u000e\u0000"+ + "\u0000\u07a1\u07a2\u0007\n\u0000\u0000\u07a2\u07a3\u0007\t\u0000\u0000"+ + "\u07a3\u00b8\u0001\u0000\u0000\u0000\u07a4\u07a5\u0007\r\u0000\u0000\u07a5"+ + "\u07a6\u0007\n\u0000\u0000\u07a6\u07a7\u0007\u0010\u0000\u0000\u07a7\u07a8"+ + "\u0007\u0016\u0000\u0000\u07a8\u07a9\u0007\r\u0000\u0000\u07a9\u07aa\u0007"+ + "\u0007\u0000\u0000\u07aa\u07ab\u0007\u0011\u0000\u0000\u07ab\u07ac\u0007"+ + "\u0007\u0000\u0000\u07ac\u07ad\u0007\u0017\u0000\u0000\u07ad\u00ba\u0001"+ + "\u0000\u0000\u0000\u07ae\u07af\u0007\t\u0000\u0000\u07af\u07b0\u0007\n"+ + "\u0000\u0000\u07b0\u07b1\u0007\u0006\u0000\u0000\u07b1\u07b2\u0007\n\u0000"+ + "\u0000\u07b2\u07b3\u0007\u000e\u0000\u0000\u07b3\u07b4\u0007\u0010\u0000"+ + "\u0000\u07b4\u00bc\u0001\u0000\u0000\u0000\u07b5\u07b6\u0007\t\u0000\u0000"+ + "\u07b6\u07b7\u0007\n\u0000\u0000\u07b7\u07b8\u0007\t\u0000\u0000\u07b8"+ + "\u07b9\u0007\t\u0000\u0000\u07b9\u07ba\u0007\u0011\u0000\u0000\u07ba\u07bb"+ + "\u0007\u0013\u0000\u0000\u07bb\u07bc\u0007\u0007\u0000\u0000\u07bc\u07bd"+ + "\u0005_\u0000\u0000\u07bd\u07be\u0007\u0016\u0000\u0000\u07be\u07bf\u0007"+ + "\t\u0000\u0000\u07bf\u07c0\u0007\n\u0000\u0000\u07c0\u07c1\u0007\r\u0000"+ + "\u0000\u07c1\u00be\u0001\u0000\u0000\u0000\u07c2\u07c3\u0007\t\u0000\u0000"+ + "\u07c3\u07c4\u0007\u0013\u0000\u0000\u07c4\u07c5\u0007\u000f\u0000\u0000"+ + "\u07c5\u07c6\u0007\n\u0000\u0000\u07c6\u00c0\u0001\u0000\u0000\u0000\u07c7"+ + "\u07c8\u0007\t\u0000\u0000\u07c8\u07c9\u0007\b\u0000\u0000\u07c9\u07ca"+ + "\u0007\u000f\u0000\u0000\u07ca\u07cb\u0007\u000f\u0000\u0000\u07cb\u07cc"+ + "\u0007\n\u0000\u0000\u07cc\u07cd\u0007\u0010\u0000\u0000\u07cd\u07ce\u0007"+ + "\r\u0000\u0000\u07ce\u07cf\u0007\u0011\u0000\u0000\u07cf\u07d0\u0007\u000e"+ + "\u0000\u0000\u07d0\u00c2\u0001\u0000\u0000\u0000\u07d1\u07d2\u0007\u0010"+ + "\u0000\u0000\u07d2\u07d3\u0007\u0005\u0000\u0000\u07d3\u07d4\u0007\u0012"+ + "\u0000\u0000\u07d4\u07d5\u0007\u0006\u0000\u0000\u07d5\u07d6\u0007\n\u0000"+ + "\u0000\u07d6\u00c4\u0001\u0000\u0000\u0000\u07d7\u07d8\u0007\u000b\u0000"+ + "\u0000\u07d8\u07d9\u0007\u0010\u0000\u0000\u07d9\u07da\u0007\u0005\u0000"+ + "\u0000\u07da\u07db\u0007\u0012\u0000\u0000\u07db\u07dc\u0007\u0006\u0000"+ + "\u0000\u07dc\u07dd\u0007\n\u0000\u0000\u07dd\u00c6\u0001\u0000\u0000\u0000"+ + "\u07de\u07df\u0007\u0010\u0000\u0000\u07df\u07e0\u0007\u0014\u0000\u0000"+ + "\u07e0\u07e1\u0007\n\u0000\u0000\u07e1\u07e2\u0007\u0007\u0000\u0000\u07e2"+ + "\u00c8\u0001\u0000\u0000\u0000\u07e3\u07e4\u0007\u0010\u0000\u0000\u07e4"+ + "\u07e5\u0007\u0013\u0000\u0000\u07e5\u00ca\u0001\u0000\u0000\u0000\u07e6"+ + "\u07e7\u0007\f\u0000\u0000\u07e7\u07e8\u0007\n\u0000\u0000\u07e8\u07e9"+ + "\u0007\t\u0000\u0000\u07e9\u07ea\u0007\u000e\u0000\u0000\u07ea\u07eb\u0007"+ + "\r\u0000\u0000\u07eb\u07ec\u0007\u0011\u0000\u0000\u07ec\u07ed\u0007\u0012"+ + "\u0000\u0000\u07ed\u07ee\u0007\n\u0000\u0000\u07ee\u00cc\u0001\u0000\u0000"+ + "\u0000\u07ef\u07f0\u0007\u0010\u0000\u0000\u07f0\u07f1\u0007\u0013\u0000"+ + "\u0000\u07f1\u07f2\u0007\u0018\u0000\u0000\u07f2\u07f3\u0007\u0011\u0000"+ + "\u0000\u07f3\u07f4\u0007\u000e\u0000\u0000\u07f4\u00ce\u0001\u0000\u0000"+ + "\u0000\u07f5\u07f6\u0007\u0010\u0000\u0000\u07f6\u07f7\u0007\u0013\u0000"+ + "\u0000\u07f7\u07f8\u0007\u0018\u0000\u0000\u07f8\u07f9\u0007\u0011\u0000"+ + "\u0000\u07f9\u07fa\u0007\u000e\u0000\u0000\u07fa\u07fb\u0007\t\u0000\u0000"+ + "\u07fb\u00d0\u0001\u0000\u0000\u0000\u07fc\u07fd\u0007\t\u0000\u0000\u07fd"+ + "\u07fe\u0007\u0010\u0000\u0000\u07fe\u07ff\u0007\r\u0000\u0000\u07ff\u0800"+ + "\u0007\n\u0000\u0000\u0800\u0801\u0007\u0005\u0000\u0000\u0801\u0802\u0007"+ + "\u000f\u0000\u0000\u0802\u00d2\u0001\u0000\u0000\u0000\u0803\u0804\u0007"+ + "\u000b\u0000\u0000\u0804\u0805\u0007\u001b\u0000\u0000\u0805\u0806\u0007"+ + "\u0011\u0000\u0000\u0806\u0807\u0007\n\u0000\u0000\u0807\u0808\u0007\u001c"+ + "\u0000\u0000\u0808\u00d4\u0001\u0000\u0000\u0000\u0809\u080a\u0007\u000b"+ + "\u0000\u0000\u080a\u080b\u0007\u001b\u0000\u0000\u080b\u080c\u0007\u0011"+ + "\u0000\u0000\u080c\u080d\u0007\n\u0000\u0000\u080d\u080e\u0007\u001c\u0000"+ + "\u0000\u080e\u080f\u0007\t\u0000\u0000\u080f\u00d6\u0001\u0000\u0000\u0000"+ + "\u0810\u0811\u0007\u0010\u0000\u0000\u0811\u0812\u0007\r\u0000\u0000\u0812"+ + "\u0813\u0007\u0005\u0000\u0000\u0813\u0814\u0007\u0011\u0000\u0000\u0814"+ + "\u0815\u0007\u0006\u0000\u0000\u0815\u0816\u0007\u0011\u0000\u0000\u0816"+ + "\u0817\u0007\u0007\u0000\u0000\u0817\u0818\u0007\u0017\u0000\u0000\u0818"+ + "\u00d8\u0001\u0000\u0000\u0000\u0819\u081a\u0007\u0010\u0000\u0000\u081a"+ + "\u081b\u0007\r\u0000\u0000\u081b\u081c\u0007\u0016\u0000\u0000\u081c\u081d"+ + "\u0007\n\u0000\u0000\u081d\u00da\u0001\u0000\u0000\u0000\u081e\u081f\u0007"+ + "\u0016\u0000\u0000\u081f\u0820\u0007\u0007\u0000\u0000\u0820\u0821\u0007"+ + "\u0011\u0000\u0000\u0821\u0822\u0007\u0013\u0000\u0000\u0822\u0823\u0007"+ + "\u0007\u0000\u0000\u0823\u00dc\u0001\u0000\u0000\u0000\u0824\u0825\u0007"+ + "\u0016\u0000\u0000\u0825\u0826\u0007\u0007\u0000\u0000\u0826\u0827\u0007"+ + "\u0011\u0000\u0000\u0827\u0828\u0007\u001d\u0000\u0000\u0828\u0829\u0007"+ + "\u0016\u0000\u0000\u0829\u082a\u0007\n\u0000\u0000\u082a\u00de\u0001\u0000"+ + "\u0000\u0000\u082b\u082c\u0007\u0016\u0000\u0000\u082c\u082d\u0007\t\u0000"+ + "\u0000\u082d\u082e\u0007\n\u0000\u0000\u082e\u082f\u0007\r\u0000\u0000"+ + "\u082f\u00e0\u0001\u0000\u0000\u0000\u0830\u0831\u0007\u0016\u0000\u0000"+ + "\u0831\u0832\u0007\t\u0000\u0000\u0832\u0833\u0007\u0011\u0000\u0000\u0833"+ + "\u0834\u0007\u0007\u0000\u0000\u0834\u0835\u0007\u0017\u0000\u0000\u0835"+ + "\u00e2\u0001\u0000\u0000\u0000\u0836\u0837\u0007\u001b\u0000\u0000\u0837"+ + "\u0838\u0007\u0005\u0000\u0000\u0838\u0839\u0007\r\u0000\u0000\u0839\u083a"+ + "\u0007\u0011\u0000\u0000\u083a\u083b\u0007\u0005\u0000\u0000\u083b\u083c"+ + "\u0007\f\u0000\u0000\u083c\u083d\u0007\u0011\u0000\u0000\u083d\u083e\u0007"+ + "\u000e\u0000\u0000\u083e\u00e4\u0001\u0000\u0000\u0000\u083f\u0840\u0007"+ + "\u001c\u0000\u0000\u0840\u0841\u0007\u0014\u0000\u0000\u0841\u0842\u0007"+ + "\n\u0000\u0000\u0842\u0843\u0007\u0007\u0000\u0000\u0843\u00e6\u0001\u0000"+ + "\u0000\u0000\u0844\u0845\u0007\u001c\u0000\u0000\u0845\u0846\u0007\u0014"+ + "\u0000\u0000\u0846\u0847\u0007\n\u0000\u0000\u0847\u0848\u0007\r\u0000"+ + "\u0000\u0848\u0849\u0007\n\u0000\u0000\u0849\u00e8\u0001\u0000\u0000\u0000"+ + "\u084a\u084b\u0007\u001c\u0000\u0000\u084b\u084c\u0007\u0011\u0000\u0000"+ + "\u084c\u084d\u0007\u0007\u0000\u0000\u084d\u084e\u0007\f\u0000\u0000\u084e"+ + "\u084f\u0007\u0013\u0000\u0000\u084f\u0850\u0007\u001c\u0000\u0000\u0850"+ + "\u00ea\u0001\u0000\u0000\u0000\u0851\u0852\u0007\u001c\u0000\u0000\u0852"+ + "\u0853\u0007\u0011\u0000\u0000\u0853\u0854\u0007\u0010\u0000\u0000\u0854"+ + "\u0855\u0007\u0014\u0000\u0000\u0855\u00ec\u0001\u0000\u0000\u0000\u0856"+ + "\u0857\u0007\u0005\u0000\u0000\u0857\u0858\u0007\u0016\u0000\u0000\u0858"+ + "\u0859\u0007\u0010\u0000\u0000\u0859\u085a\u0007\u0014\u0000\u0000\u085a"+ + "\u085b\u0007\u0013\u0000\u0000\u085b\u085c\u0007\r\u0000\u0000\u085c\u085d"+ + "\u0007\u0011\u0000\u0000\u085d\u085e\u0007\u000b\u0000\u0000\u085e\u085f"+ + "\u0007\u0005\u0000\u0000\u085f\u0860\u0007\u0010\u0000\u0000\u0860\u0861"+ + "\u0007\u0011\u0000\u0000\u0861\u0862\u0007\u0013\u0000\u0000\u0862\u0863"+ + "\u0007\u0007\u0000\u0000\u0863\u00ee\u0001\u0000\u0000\u0000\u0864\u0865"+ + "\u0007\u0012\u0000\u0000\u0865\u0866\u0007\u0011\u0000\u0000\u0866\u0867"+ + "\u0007\u0007\u0000\u0000\u0867\u0868\u0007\u0005\u0000\u0000\u0868\u0869"+ + "\u0007\r\u0000\u0000\u0869\u086a\u0007\b\u0000\u0000\u086a\u00f0\u0001"+ + "\u0000\u0000\u0000\u086b\u086c\u0007\u000e\u0000\u0000\u086c\u086d\u0007"+ + "\u0013\u0000\u0000\u086d\u086e\u0007\u0006\u0000\u0000\u086e\u086f\u0007"+ + "\u0006\u0000\u0000\u086f\u0870\u0007\u0005\u0000\u0000\u0870\u0871\u0007"+ + "\u0010\u0000\u0000\u0871\u0872\u0007\u0011\u0000\u0000\u0872\u0873\u0007"+ + "\u0013\u0000\u0000\u0873\u0874\u0007\u0007\u0000\u0000\u0874\u00f2\u0001"+ + "\u0000\u0000\u0000\u0875\u0876\u0007\u000e\u0000\u0000\u0876\u0877\u0007"+ + "\u0013\u0000\u0000\u0877\u0878\u0007\u0007\u0000\u0000\u0878\u0879\u0007"+ + "\u000e\u0000\u0000\u0879\u087a\u0007\u0016\u0000\u0000\u087a\u087b\u0007"+ + "\r\u0000\u0000\u087b\u087c\u0007\r\u0000\u0000\u087c\u087d\u0007\n\u0000"+ + "\u0000\u087d\u087e\u0007\u0007\u0000\u0000\u087e\u087f\u0007\u0010\u0000"+ + "\u0000\u087f\u0880\u0007\u0006\u0000\u0000\u0880\u0881\u0007\b\u0000\u0000"+ + "\u0881\u00f4\u0001\u0000\u0000\u0000\u0882\u0883\u0007\u000e\u0000\u0000"+ + "\u0883\u0884\u0007\r\u0000\u0000\u0884\u0885\u0007\u0013\u0000\u0000\u0885"+ + "\u0886\u0007\t\u0000\u0000\u0886\u0887\u0007\t\u0000\u0000\u0887\u00f6"+ + "\u0001\u0000\u0000\u0000\u0888\u0889\u0007\u000e\u0000\u0000\u0889\u088a"+ + "\u0007\u0016\u0000\u0000\u088a\u088b\u0007\r\u0000\u0000\u088b\u088c\u0007"+ + "\r\u0000\u0000\u088c\u088d\u0007\n\u0000\u0000\u088d\u088e\u0007\u0007"+ + "\u0000\u0000\u088e\u088f\u0007\u0010\u0000\u0000\u088f\u0890\u0005_\u0000"+ + "\u0000\u0890\u0891\u0007\t\u0000\u0000\u0891\u0892\u0007\u000e\u0000\u0000"+ + "\u0892\u0893\u0007\u0014\u0000\u0000\u0893\u0894\u0007\n\u0000\u0000\u0894"+ + "\u0895\u0007\u000f\u0000\u0000\u0895\u0896\u0007\u0005\u0000\u0000\u0896"+ + "\u00f8\u0001\u0000\u0000\u0000\u0897\u0898\u0007\u0019\u0000\u0000\u0898"+ + "\u0899\u0007\r\u0000\u0000\u0899\u089a\u0007\n\u0000\u0000\u089a\u089b"+ + "\u0007\n\u0000\u0000\u089b\u089c\u0007\u000b\u0000\u0000\u089c\u089d\u0007"+ + "\n\u0000\u0000\u089d\u00fa\u0001\u0000\u0000\u0000\u089e\u089f\u0007\u0019"+ + "\u0000\u0000\u089f\u08a0\u0007\u0016\u0000\u0000\u08a0\u08a1\u0007\u0006"+ + "\u0000\u0000\u08a1\u08a2\u0007\u0006\u0000\u0000\u08a2\u00fc\u0001\u0000"+ + "\u0000\u0000\u08a3\u08a4\u0007\u0011\u0000\u0000\u08a4\u08a5\u0007\u0006"+ + "\u0000\u0000\u08a5\u08a6\u0007\u0011\u0000\u0000\u08a6\u08a7\u0007\u0015"+ + "\u0000\u0000\u08a7\u08a8\u0007\n\u0000\u0000\u08a8\u00fe\u0001\u0000\u0000"+ + "\u0000\u08a9\u08aa\u0007\u0011\u0000\u0000\u08aa\u08ab\u0007\u0007\u0000"+ + "\u0000\u08ab\u08ac\u0007\u0007\u0000\u0000\u08ac\u08ad\u0007\n\u0000\u0000"+ + "\u08ad\u08ae\u0007\r\u0000\u0000\u08ae\u0100\u0001\u0000\u0000\u0000\u08af"+ + "\u08b0\u0007\u0011\u0000\u0000\u08b0\u08b1\u0007\t\u0000\u0000\u08b1\u0102"+ + "\u0001\u0000\u0000\u0000\u08b2\u08b3\u0007\u0011\u0000\u0000\u08b3\u08b4"+ + "\u0007\t\u0000\u0000\u08b4\u08b5\u0007\u0007\u0000\u0000\u08b5\u08b6\u0007"+ + "\u0016\u0000\u0000\u08b6\u08b7\u0007\u0006\u0000\u0000\u08b7\u08b8\u0007"+ + "\u0006\u0000\u0000\u08b8\u0104\u0001\u0000\u0000\u0000\u08b9\u08ba\u0007"+ + "\u001e\u0000\u0000\u08ba\u08bb\u0007\u0013\u0000\u0000\u08bb\u08bc\u0007"+ + "\u0011\u0000\u0000\u08bc\u08bd\u0007\u0007\u0000\u0000\u08bd\u0106\u0001"+ + "\u0000\u0000\u0000\u08be\u08bf\u0007\u0006\u0000\u0000\u08bf\u08c0\u0007"+ + "\n\u0000\u0000\u08c0\u08c1\u0007\u0019\u0000\u0000\u08c1\u08c2\u0007\u0010"+ + "\u0000\u0000\u08c2\u0108\u0001\u0000\u0000\u0000\u08c3\u08c4\u0007\u0006"+ + "\u0000\u0000\u08c4\u08c5\u0007\u0011\u0000\u0000\u08c5\u08c6\u0007\u0015"+ + "\u0000\u0000\u08c6\u08c7\u0007\n\u0000\u0000\u08c7\u010a\u0001\u0000\u0000"+ + "\u0000\u08c8\u08c9\u0007\u0007\u0000\u0000\u08c9\u08ca\u0007\u0005\u0000"+ + "\u0000\u08ca\u08cb\u0007\u0010\u0000\u0000\u08cb\u08cc\u0007\u0016\u0000"+ + "\u0000\u08cc\u08cd\u0007\r\u0000\u0000\u08cd\u08ce\u0007\u0005\u0000\u0000"+ + "\u08ce\u08cf\u0007\u0006\u0000\u0000\u08cf\u010c\u0001\u0000\u0000\u0000"+ + "\u08d0\u08d1\u0007\u0007\u0000\u0000\u08d1\u08d2\u0007\u0013\u0000\u0000"+ + "\u08d2\u08d3\u0007\u0010\u0000\u0000\u08d3\u08d4\u0007\u0007\u0000\u0000"+ + "\u08d4\u08d5\u0007\u0016\u0000\u0000\u08d5\u08d6\u0007\u0006\u0000\u0000"+ + "\u08d6\u08d7\u0007\u0006\u0000\u0000\u08d7\u010e\u0001\u0000\u0000\u0000"+ + "\u08d8\u08d9\u0007\u0013\u0000\u0000\u08d9\u08da\u0007\u0016\u0000\u0000"+ + "\u08da\u08db\u0007\u0010\u0000\u0000\u08db\u08dc\u0007\n\u0000\u0000\u08dc"+ + "\u08dd\u0007\r\u0000\u0000\u08dd\u0110\u0001\u0000\u0000\u0000\u08de\u08df"+ + "\u0007\u0013\u0000\u0000\u08df\u08e0\u0007\u001b\u0000\u0000\u08e0\u08e1"+ + "\u0007\n\u0000\u0000\u08e1\u08e2\u0007\r\u0000\u0000\u08e2\u0112\u0001"+ + "\u0000\u0000\u0000\u08e3\u08e4\u0007\u0013\u0000\u0000\u08e4\u08e5\u0007"+ + "\u001b\u0000\u0000\u08e5\u08e6\u0007\n\u0000\u0000\u08e6\u08e7\u0007\r"+ + "\u0000\u0000\u08e7\u08e8\u0007\u0006\u0000\u0000\u08e8\u08e9\u0007\u0005"+ + "\u0000\u0000\u08e9\u08ea\u0007\u0018\u0000\u0000\u08ea\u08eb\u0007\t\u0000"+ + "\u0000\u08eb\u0114\u0001\u0000\u0000\u0000\u08ec\u08ed\u0007\r\u0000\u0000"+ + "\u08ed\u08ee\u0007\u0011\u0000\u0000\u08ee\u08ef\u0007\u0017\u0000\u0000"+ + "\u08ef\u08f0\u0007\u0014\u0000\u0000\u08f0\u08f1\u0007\u0010\u0000\u0000"+ + "\u08f1\u0116\u0001\u0000\u0000\u0000\u08f2\u08f3\u0007\t\u0000\u0000\u08f3"+ + "\u08f4\u0007\u0011\u0000\u0000\u08f4\u08f5\u0007\u000f\u0000\u0000\u08f5"+ + "\u08f6\u0007\u0011\u0000\u0000\u08f6\u08f7\u0007\u0006\u0000\u0000\u08f7"+ + "\u08f8\u0007\u0005\u0000\u0000\u08f8\u08f9\u0007\r\u0000\u0000\u08f9\u0118"+ + "\u0001\u0000\u0000\u0000\u08fa\u08fb\u0007\u001b\u0000\u0000\u08fb\u08fc"+ + "\u0007\n\u0000\u0000\u08fc\u08fd\u0007\r\u0000\u0000\u08fd\u08fe\u0007"+ + "\u0012\u0000\u0000\u08fe\u08ff\u0007\u0013\u0000\u0000\u08ff\u0900\u0007"+ + "\t\u0000\u0000\u0900\u0901\u0007\n\u0000\u0000\u0901\u011a\u0001\u0000"+ + "\u0000\u0000\u0902\u0903\u0007\u0005\u0000\u0000\u0903\u0904\u0007\u0012"+ + "\u0000\u0000\u0904\u0905\u0007\u0013\u0000\u0000\u0905\u0906\u0007\r\u0000"+ + "\u0000\u0906\u0907\u0007\u0010\u0000\u0000\u0907\u011c\u0001\u0000\u0000"+ + "\u0000\u0908\u0909\u0007\u0005\u0000\u0000\u0909\u090a\u0007\u0012\u0000"+ + "\u0000\u090a\u090b\u0007\t\u0000\u0000\u090b\u090c\u0007\u0013\u0000\u0000"+ + "\u090c\u090d\u0007\u0006\u0000\u0000\u090d\u090e\u0007\u0016\u0000\u0000"+ + "\u090e\u090f\u0007\u0010\u0000\u0000\u090f\u0910\u0007\n\u0000\u0000\u0910"+ + "\u011e\u0001\u0000\u0000\u0000\u0911\u0912\u0007\u0005\u0000\u0000\u0912"+ + "\u0913\u0007\u000e\u0000\u0000\u0913\u0914\u0007\u000e\u0000\u0000\u0914"+ + "\u0915\u0007\n\u0000\u0000\u0915\u0916\u0007\t\u0000\u0000\u0916\u0917"+ + "\u0007\t\u0000\u0000\u0917\u0120\u0001\u0000\u0000\u0000\u0918\u0919\u0007"+ + "\u0005\u0000\u0000\u0919\u091a\u0007\u000e\u0000\u0000\u091a\u091b\u0007"+ + "\u0010\u0000\u0000\u091b\u091c\u0007\u0011\u0000\u0000\u091c\u091d\u0007"+ + "\u0013\u0000\u0000\u091d\u091e\u0007\u0007\u0000\u0000\u091e\u0122\u0001"+ + "\u0000\u0000\u0000\u091f\u0920\u0007\u0005\u0000\u0000\u0920\u0921\u0007"+ + "\f\u0000\u0000\u0921\u0922\u0007\f\u0000\u0000\u0922\u0124\u0001\u0000"+ + "\u0000\u0000\u0923\u0924\u0007\u0005\u0000\u0000\u0924\u0925\u0007\f\u0000"+ + "\u0000\u0925\u0926\u0007\u000f\u0000\u0000\u0926\u0927\u0007\u0011\u0000"+ + "\u0000\u0927\u0928\u0007\u0007\u0000\u0000\u0928\u0126\u0001\u0000\u0000"+ + "\u0000\u0929\u092a\u0007\u0005\u0000\u0000\u092a\u092b\u0007\u0019\u0000"+ + "\u0000\u092b\u092c\u0007\u0010\u0000\u0000\u092c\u092d\u0007\n\u0000\u0000"+ + "\u092d\u092e\u0007\r\u0000\u0000\u092e\u0128\u0001\u0000\u0000\u0000\u092f"+ + "\u0930\u0007\u0005\u0000\u0000\u0930\u0931\u0007\u0017\u0000\u0000\u0931"+ + "\u0932\u0007\u0017\u0000\u0000\u0932\u0933\u0007\r\u0000\u0000\u0933\u0934"+ + "\u0007\n\u0000\u0000\u0934\u0935\u0007\u0017\u0000\u0000\u0935\u0936\u0007"+ + "\u0005\u0000\u0000\u0936\u0937\u0007\u0010\u0000\u0000\u0937\u0938\u0007"+ + "\n\u0000\u0000\u0938\u012a\u0001\u0000\u0000\u0000\u0939\u093a\u0007\u0005"+ + "\u0000\u0000\u093a\u093b\u0007\u0006\u0000\u0000\u093b\u093c\u0007\t\u0000"+ + "\u0000\u093c\u093d\u0007\u0013\u0000\u0000\u093d\u012c\u0001\u0000\u0000"+ + "\u0000\u093e\u093f\u0007\u0005\u0000\u0000\u093f\u0940\u0007\u0006\u0000"+ + "\u0000\u0940\u0941\u0007\u0010\u0000\u0000\u0941\u0942\u0007\n\u0000\u0000"+ + "\u0942\u0943\u0007\r\u0000\u0000\u0943\u012e\u0001\u0000\u0000\u0000\u0944"+ + "\u0945\u0007\u0005\u0000\u0000\u0945\u0946\u0007\u0006\u0000\u0000\u0946"+ + "\u0947\u0007\u001c\u0000\u0000\u0947\u0948\u0007\u0005\u0000\u0000\u0948"+ + "\u0949\u0007\b\u0000\u0000\u0949\u094a\u0007\t\u0000\u0000\u094a\u0130"+ + "\u0001\u0000\u0000\u0000\u094b\u094c\u0007\u0005\u0000\u0000\u094c\u094d"+ + "\u0007\t\u0000\u0000\u094d\u094e\u0007\t\u0000\u0000\u094e\u094f\u0007"+ + "\n\u0000\u0000\u094f\u0950\u0007\r\u0000\u0000\u0950\u0951\u0007\u0010"+ + "\u0000\u0000\u0951\u0952\u0007\u0011\u0000\u0000\u0952\u0953\u0007\u0013"+ + "\u0000\u0000\u0953\u0954\u0007\u0007\u0000\u0000\u0954\u0132\u0001\u0000"+ + "\u0000\u0000\u0955\u0956\u0007\u0005\u0000\u0000\u0956\u0957\u0007\t\u0000"+ + "\u0000\u0957\u0958\u0007\t\u0000\u0000\u0958\u0959\u0007\u0011\u0000\u0000"+ + "\u0959\u095a\u0007\u0017\u0000\u0000\u095a\u095b\u0007\u0007\u0000\u0000"+ + "\u095b\u095c\u0007\u000f\u0000\u0000\u095c\u095d\u0007\n\u0000\u0000\u095d"+ + "\u095e\u0007\u0007\u0000\u0000\u095e\u095f\u0007\u0010\u0000\u0000\u095f"+ + "\u0134\u0001\u0000\u0000\u0000\u0960\u0961\u0007\u0005\u0000\u0000\u0961"+ + "\u0962\u0007\u0010\u0000\u0000\u0962\u0136\u0001\u0000\u0000\u0000\u0963"+ + "\u0964\u0007\u0005\u0000\u0000\u0964\u0965\u0007\u0010\u0000\u0000\u0965"+ + "\u0966\u0007\u0010\u0000\u0000\u0966\u0967\u0007\r\u0000\u0000\u0967\u0968"+ + "\u0007\u0011\u0000\u0000\u0968\u0969\u0007\u0012\u0000\u0000\u0969\u096a"+ + "\u0007\u0016\u0000\u0000\u096a\u096b\u0007\u0010\u0000\u0000\u096b\u096c"+ + "\u0007\n\u0000\u0000\u096c\u0138\u0001\u0000\u0000\u0000\u096d\u096e\u0007"+ + "\u0012\u0000\u0000\u096e\u096f\u0007\u0005\u0000\u0000\u096f\u0970\u0007"+ + "\u000e\u0000\u0000\u0970\u0971\u0007\u0015\u0000\u0000\u0971\u0972\u0007"+ + "\u001c\u0000\u0000\u0972\u0973\u0007\u0005\u0000\u0000\u0973\u0974\u0007"+ + "\r\u0000\u0000\u0974\u0975\u0007\f\u0000\u0000\u0975\u013a\u0001\u0000"+ + "\u0000\u0000\u0976\u0977\u0007\u0012\u0000\u0000\u0977\u0978\u0007\n\u0000"+ + "\u0000\u0978\u0979\u0007\u0019\u0000\u0000\u0979\u097a\u0007\u0013\u0000"+ + "\u0000\u097a\u097b\u0007\r\u0000\u0000\u097b\u097c\u0007\n\u0000\u0000"+ + "\u097c\u013c\u0001\u0000\u0000\u0000\u097d\u097e\u0007\u0012\u0000\u0000"+ + "\u097e\u097f\u0007\n\u0000\u0000\u097f\u0980\u0007\u0017\u0000\u0000\u0980"+ + "\u0981\u0007\u0011\u0000\u0000\u0981\u0982\u0007\u0007\u0000\u0000\u0982"+ + "\u013e\u0001\u0000\u0000\u0000\u0983\u0984\u0007\u0012\u0000\u0000\u0984"+ + "\u0985\u0007\b\u0000\u0000\u0985\u0140\u0001\u0000\u0000\u0000\u0986\u0987"+ + "\u0007\u000e\u0000\u0000\u0987\u0988\u0007\u0005\u0000\u0000\u0988\u0989"+ + "\u0007\u000e\u0000\u0000\u0989\u098a\u0007\u0014\u0000\u0000\u098a\u098b"+ + "\u0007\n\u0000\u0000\u098b\u0142\u0001\u0000\u0000\u0000\u098c\u098d\u0007"+ + "\u000e\u0000\u0000\u098d\u098e\u0007\u0005\u0000\u0000\u098e\u098f\u0007"+ + "\u0006\u0000\u0000\u098f\u0990\u0007\u0006\u0000\u0000\u0990\u0991\u0007"+ + "\n\u0000\u0000\u0991\u0992\u0007\f\u0000\u0000\u0992\u0144\u0001\u0000"+ + "\u0000\u0000\u0993\u0994\u0007\u000e\u0000\u0000\u0994\u0995\u0007\u0005"+ + "\u0000\u0000\u0995\u0996\u0007\t\u0000\u0000\u0996\u0997\u0007\u000e\u0000"+ + "\u0000\u0997\u0998\u0007\u0005\u0000\u0000\u0998\u0999\u0007\f\u0000\u0000"+ + "\u0999\u099a\u0007\n\u0000\u0000\u099a\u0146\u0001\u0000\u0000\u0000\u099b"+ + "\u099c\u0007\u000e\u0000\u0000\u099c\u099d\u0007\u0005\u0000\u0000\u099d"+ + "\u099e\u0007\t\u0000\u0000\u099e\u099f\u0007\u000e\u0000\u0000\u099f\u09a0"+ + "\u0007\u0005\u0000\u0000\u09a0\u09a1\u0007\f\u0000\u0000\u09a1\u09a2\u0007"+ + "\n\u0000\u0000\u09a2\u09a3\u0007\f\u0000\u0000\u09a3\u0148\u0001\u0000"+ + "\u0000\u0000\u09a4\u09a5\u0007\u000e\u0000\u0000\u09a5\u09a6\u0007\u0005"+ + "\u0000\u0000\u09a6\u09a7\u0007\u0010\u0000\u0000\u09a7\u09a8\u0007\u0005"+ + "\u0000\u0000\u09a8\u09a9\u0007\u0006\u0000\u0000\u09a9\u09aa\u0007\u0013"+ + "\u0000\u0000\u09aa\u09ab\u0007\u0017\u0000\u0000\u09ab\u014a\u0001\u0000"+ + "\u0000\u0000\u09ac\u09ad\u0007\u000e\u0000\u0000\u09ad\u09ae\u0007\u0014"+ + "\u0000\u0000\u09ae\u09af\u0007\u0005\u0000\u0000\u09af\u09b0\u0007\u0011"+ + "\u0000\u0000\u09b0\u09b1\u0007\u0007\u0000\u0000\u09b1\u014c\u0001\u0000"+ + "\u0000\u0000\u09b2\u09b3\u0007\u000e\u0000\u0000\u09b3\u09b4\u0007\u0014"+ + "\u0000\u0000\u09b4\u09b5\u0007\u0005\u0000\u0000\u09b5\u09b6\u0007\r\u0000"+ + "\u0000\u09b6\u09b7\u0007\u0005\u0000\u0000\u09b7\u09b8\u0007\u000e\u0000"+ + "\u0000\u09b8\u09b9\u0007\u0010\u0000\u0000\u09b9\u09ba\u0007\n\u0000\u0000"+ + "\u09ba\u09bb\u0007\r\u0000\u0000\u09bb\u09bc\u0007\u0011\u0000\u0000\u09bc"+ + "\u09bd\u0007\t\u0000\u0000\u09bd\u09be\u0007\u0010\u0000\u0000\u09be\u09bf"+ + "\u0007\u0011\u0000\u0000\u09bf\u09c0\u0007\u000e\u0000\u0000\u09c0\u09c1"+ + "\u0007\t\u0000\u0000\u09c1\u014e\u0001\u0000\u0000\u0000\u09c2\u09c3\u0007"+ + "\u000e\u0000\u0000\u09c3\u09c4\u0007\u0014\u0000\u0000\u09c4\u09c5\u0007"+ + "\n\u0000\u0000\u09c5\u09c6\u0007\u000e\u0000\u0000\u09c6\u09c7\u0007\u0015"+ + "\u0000\u0000\u09c7\u09c8\u0007\u0018\u0000\u0000\u09c8\u09c9\u0007\u0013"+ + "\u0000\u0000\u09c9\u09ca\u0007\u0011\u0000\u0000\u09ca\u09cb\u0007\u0007"+ + "\u0000\u0000\u09cb\u09cc\u0007\u0010\u0000\u0000\u09cc\u0150\u0001\u0000"+ + "\u0000\u0000\u09cd\u09ce\u0007\u000e\u0000\u0000\u09ce\u09cf\u0007\u0006"+ + "\u0000\u0000\u09cf\u09d0\u0007\u0005\u0000\u0000\u09d0\u09d1\u0007\t\u0000"+ + "\u0000\u09d1\u09d2\u0007\t\u0000\u0000\u09d2\u0152\u0001\u0000\u0000\u0000"+ + "\u09d3\u09d4\u0007\u000e\u0000\u0000\u09d4\u09d5\u0007\u0006\u0000\u0000"+ + "\u09d5\u09d6\u0007\u0013\u0000\u0000\u09d6\u09d7\u0007\t\u0000\u0000\u09d7"+ + "\u09d8\u0007\n\u0000\u0000\u09d8\u0154\u0001\u0000\u0000\u0000\u09d9\u09da"+ + "\u0007\u000e\u0000\u0000\u09da\u09db\u0007\u0006\u0000\u0000\u09db\u09dc"+ + "\u0007\u0016\u0000\u0000\u09dc\u09dd\u0007\t\u0000\u0000\u09dd\u09de\u0007"+ + "\u0010\u0000\u0000\u09de\u09df\u0007\n\u0000\u0000\u09df\u09e0\u0007\r"+ + "\u0000\u0000\u09e0\u0156\u0001\u0000\u0000\u0000\u09e1\u09e2\u0007\u000e"+ + "\u0000\u0000\u09e2\u09e3\u0007\u0013\u0000\u0000\u09e3\u09e4\u0007\u000f"+ + "\u0000\u0000\u09e4\u09e5\u0007\u000f\u0000\u0000\u09e5\u09e6\u0007\n\u0000"+ + "\u0000\u09e6\u09e7\u0007\u0007\u0000\u0000\u09e7\u09e8\u0007\u0010\u0000"+ + "\u0000\u09e8\u0158\u0001\u0000\u0000\u0000\u09e9\u09ea\u0007\u000e\u0000"+ + "\u0000\u09ea\u09eb\u0007\u0013\u0000\u0000\u09eb\u09ec\u0007\u000f\u0000"+ + "\u0000\u09ec\u09ed\u0007\u000f\u0000\u0000\u09ed\u09ee\u0007\n\u0000\u0000"+ + "\u09ee\u09ef\u0007\u0007\u0000\u0000\u09ef\u09f0\u0007\u0010\u0000\u0000"+ + "\u09f0\u09f1\u0007\t\u0000\u0000\u09f1\u015a\u0001\u0000\u0000\u0000\u09f2"+ + "\u09f3\u0007\u000e\u0000\u0000\u09f3\u09f4\u0007\u0013\u0000\u0000\u09f4"+ + "\u09f5\u0007\u000f\u0000\u0000\u09f5\u09f6\u0007\u000f\u0000\u0000\u09f6"+ + "\u09f7\u0007\u0011\u0000\u0000\u09f7\u09f8\u0007\u0010\u0000\u0000\u09f8"+ + "\u015c\u0001\u0000\u0000\u0000\u09f9\u09fa\u0007\u000e\u0000\u0000\u09fa"+ + "\u09fb\u0007\u0013\u0000\u0000\u09fb\u09fc\u0007\u000f\u0000\u0000\u09fc"+ + "\u09fd\u0007\u000f\u0000\u0000\u09fd\u09fe\u0007\u0011\u0000\u0000\u09fe"+ + "\u09ff\u0007\u0010\u0000\u0000\u09ff\u0a00\u0007\u0010\u0000\u0000\u0a00"+ + "\u0a01\u0007\n\u0000\u0000\u0a01\u0a02\u0007\f\u0000\u0000\u0a02\u015e"+ + "\u0001\u0000\u0000\u0000\u0a03\u0a04\u0007\u000e\u0000\u0000\u0a04\u0a05"+ + "\u0007\u0013\u0000\u0000\u0a05\u0a06\u0007\u0007\u0000\u0000\u0a06\u0a07"+ + "\u0007\u0019\u0000\u0000\u0a07\u0a08\u0007\u0011\u0000\u0000\u0a08\u0a09"+ + "\u0007\u0017\u0000\u0000\u0a09\u0a0a\u0007\u0016\u0000\u0000\u0a0a\u0a0b"+ + "\u0007\r\u0000\u0000\u0a0b\u0a0c\u0007\u0005\u0000\u0000\u0a0c\u0a0d\u0007"+ + "\u0010\u0000\u0000\u0a0d\u0a0e\u0007\u0011\u0000\u0000\u0a0e\u0a0f\u0007"+ + "\u0013\u0000\u0000\u0a0f\u0a10\u0007\u0007\u0000\u0000\u0a10\u0160\u0001"+ + "\u0000\u0000\u0000\u0a11\u0a12\u0007\u000e\u0000\u0000\u0a12\u0a13\u0007"+ + "\u0013\u0000\u0000\u0a13\u0a14\u0007\u0007\u0000\u0000\u0a14\u0a15\u0007"+ + "\u0007\u0000\u0000\u0a15\u0a16\u0007\n\u0000\u0000\u0a16\u0a17\u0007\u000e"+ + "\u0000\u0000\u0a17\u0a18\u0007\u0010\u0000\u0000\u0a18\u0a19\u0007\u0011"+ + "\u0000\u0000\u0a19\u0a1a\u0007\u0013\u0000\u0000\u0a1a\u0a1b\u0007\u0007"+ + "\u0000\u0000\u0a1b\u0162\u0001\u0000\u0000\u0000\u0a1c\u0a1d\u0007\u000e"+ + "\u0000\u0000\u0a1d\u0a1e\u0007\u0013\u0000\u0000\u0a1e\u0a1f\u0007\u0007"+ + "\u0000\u0000\u0a1f\u0a20\u0007\t\u0000\u0000\u0a20\u0a21\u0007\u0010\u0000"+ + "\u0000\u0a21\u0a22\u0007\r\u0000\u0000\u0a22\u0a23\u0007\u0005\u0000\u0000"+ + "\u0a23\u0a24\u0007\u0011\u0000\u0000\u0a24\u0a25\u0007\u0007\u0000\u0000"+ + "\u0a25\u0a26\u0007\u0010\u0000\u0000\u0a26\u0a27\u0007\t\u0000\u0000\u0a27"+ + "\u0164\u0001\u0000\u0000\u0000\u0a28\u0a29\u0007\u000e\u0000\u0000\u0a29"+ + "\u0a2a\u0007\u0013\u0000\u0000\u0a2a\u0a2b\u0007\u0007\u0000\u0000\u0a2b"+ + "\u0a2c\u0007\u0010\u0000\u0000\u0a2c\u0a2d\u0007\n\u0000\u0000\u0a2d\u0a2e"+ + "\u0007\u0007\u0000\u0000\u0a2e\u0a2f\u0007\u0010\u0000\u0000\u0a2f\u0166"+ + "\u0001\u0000\u0000\u0000\u0a30\u0a31\u0007\u000e\u0000\u0000\u0a31\u0a32"+ + "\u0007\u0013\u0000\u0000\u0a32\u0a33\u0007\u0007\u0000\u0000\u0a33\u0a34"+ + "\u0007\u0010\u0000\u0000\u0a34\u0a35\u0007\u0011\u0000\u0000\u0a35\u0a36"+ + "\u0007\u0007\u0000\u0000\u0a36\u0a37\u0007\u0016\u0000\u0000\u0a37\u0a38"+ + "\u0007\n\u0000\u0000\u0a38\u0168\u0001\u0000\u0000\u0000\u0a39\u0a3a\u0007"+ + "\u000e\u0000\u0000\u0a3a\u0a3b\u0007\u0013\u0000\u0000\u0a3b\u0a3c\u0007"+ + "\u0007\u0000\u0000\u0a3c\u0a3d\u0007\u001b\u0000\u0000\u0a3d\u0a3e\u0007"+ + "\n\u0000\u0000\u0a3e\u0a3f\u0007\r\u0000\u0000\u0a3f\u0a40\u0007\t\u0000"+ + "\u0000\u0a40\u0a41\u0007\u0011\u0000\u0000\u0a41\u0a42\u0007\u0013\u0000"+ + "\u0000\u0a42\u0a43\u0007\u0007\u0000\u0000\u0a43\u016a\u0001\u0000\u0000"+ + "\u0000\u0a44\u0a45\u0007\u000e\u0000\u0000\u0a45\u0a46\u0007\u0013\u0000"+ + "\u0000\u0a46\u0a47\u0007\u0018\u0000\u0000\u0a47\u0a48\u0007\b\u0000\u0000"+ + "\u0a48\u016c\u0001\u0000\u0000\u0000\u0a49\u0a4a\u0007\u000e\u0000\u0000"+ + "\u0a4a\u0a4b\u0007\u0013\u0000\u0000\u0a4b\u0a4c\u0007\t\u0000\u0000\u0a4c"+ + "\u0a4d\u0007\u0010\u0000\u0000\u0a4d\u016e\u0001\u0000\u0000\u0000\u0a4e"+ + "\u0a4f\u0007\u000e\u0000\u0000\u0a4f\u0a50\u0007\t\u0000\u0000\u0a50\u0a51"+ + "\u0007\u001b\u0000\u0000\u0a51\u0170\u0001\u0000\u0000\u0000\u0a52\u0a53"+ + "\u0007\u000e\u0000\u0000\u0a53\u0a54\u0007\u0016\u0000\u0000\u0a54\u0a55"+ + "\u0007\r\u0000\u0000\u0a55\u0a56\u0007\t\u0000\u0000\u0a56\u0a57\u0007"+ + "\u0013\u0000\u0000\u0a57\u0a58\u0007\r\u0000\u0000\u0a58\u0172\u0001\u0000"+ + "\u0000\u0000\u0a59\u0a5a\u0007\u000e\u0000\u0000\u0a5a\u0a5b\u0007\b\u0000"+ + "\u0000\u0a5b\u0a5c\u0007\u000e\u0000\u0000\u0a5c\u0a5d\u0007\u0006\u0000"+ + "\u0000\u0a5d\u0a5e\u0007\n\u0000\u0000\u0a5e\u0174\u0001\u0000\u0000\u0000"+ + "\u0a5f\u0a60\u0007\f\u0000\u0000\u0a60\u0a61\u0007\u0005\u0000\u0000\u0a61"+ + "\u0a62\u0007\u0010\u0000\u0000\u0a62\u0a63\u0007\u0005\u0000\u0000\u0a63"+ + "\u0176\u0001\u0000\u0000\u0000\u0a64\u0a65\u0007\f\u0000\u0000\u0a65\u0a66"+ + "\u0007\u0005\u0000\u0000\u0a66\u0a67\u0007\u0010\u0000\u0000\u0a67\u0a68"+ + "\u0007\u0005\u0000\u0000\u0a68\u0a69\u0007\u0012\u0000\u0000\u0a69\u0a6a"+ + "\u0007\u0005\u0000\u0000\u0a6a\u0a6b\u0007\t\u0000\u0000\u0a6b\u0a6c\u0007"+ + "\n\u0000\u0000\u0a6c\u0178\u0001\u0000\u0000\u0000\u0a6d\u0a6e\u0007\f"+ + "\u0000\u0000\u0a6e\u0a6f\u0007\u0005\u0000\u0000\u0a6f\u0a70\u0007\b\u0000"+ + "\u0000\u0a70\u017a\u0001\u0000\u0000\u0000\u0a71\u0a72\u0007\f\u0000\u0000"+ + "\u0a72\u0a73\u0007\n\u0000\u0000\u0a73\u0a74\u0007\u0005\u0000\u0000\u0a74"+ + "\u0a75\u0007\u0006\u0000\u0000\u0a75\u0a76\u0007\u0006\u0000\u0000\u0a76"+ + "\u0a77\u0007\u0013\u0000\u0000\u0a77\u0a78\u0007\u000e\u0000\u0000\u0a78"+ + "\u0a79\u0007\u0005\u0000\u0000\u0a79\u0a7a\u0007\u0010\u0000\u0000\u0a7a"+ + "\u0a7b\u0007\n\u0000\u0000\u0a7b\u017c\u0001\u0000\u0000\u0000\u0a7c\u0a7d"+ + "\u0007\f\u0000\u0000\u0a7d\u0a7e\u0007\n\u0000\u0000\u0a7e\u0a7f\u0007"+ + "\u000e\u0000\u0000\u0a7f\u0a80\u0007\u0006\u0000\u0000\u0a80\u0a81\u0007"+ + "\u0005\u0000\u0000\u0a81\u0a82\u0007\r\u0000\u0000\u0a82\u0a83\u0007\n"+ + "\u0000\u0000\u0a83\u017e\u0001\u0000\u0000\u0000\u0a84\u0a85\u0007\f\u0000"+ + "\u0000\u0a85\u0a86\u0007\n\u0000\u0000\u0a86\u0a87\u0007\u0019\u0000\u0000"+ + "\u0a87\u0a88\u0007\u0005\u0000\u0000\u0a88\u0a89\u0007\u0016\u0000\u0000"+ + "\u0a89\u0a8a\u0007\u0006\u0000\u0000\u0a8a\u0a8b\u0007\u0010\u0000\u0000"+ + "\u0a8b\u0a8c\u0007\t\u0000\u0000\u0a8c\u0180\u0001\u0000\u0000\u0000\u0a8d"+ + "\u0a8e\u0007\f\u0000\u0000\u0a8e\u0a8f\u0007\n\u0000\u0000\u0a8f\u0a90"+ + "\u0007\u0019\u0000\u0000\u0a90\u0a91\u0007\n\u0000\u0000\u0a91\u0a92\u0007"+ + "\r\u0000\u0000\u0a92\u0a93\u0007\r\u0000\u0000\u0a93\u0a94\u0007\n\u0000"+ + "\u0000\u0a94\u0a95\u0007\f\u0000\u0000\u0a95\u0182\u0001\u0000\u0000\u0000"+ + "\u0a96\u0a97\u0007\f\u0000\u0000\u0a97\u0a98\u0007\n\u0000\u0000\u0a98"+ + "\u0a99\u0007\u0019\u0000\u0000\u0a99\u0a9a\u0007\u0011\u0000\u0000\u0a9a"+ + "\u0a9b\u0007\u0007\u0000\u0000\u0a9b\u0a9c\u0007\n\u0000\u0000\u0a9c\u0a9d"+ + "\u0007\r\u0000\u0000\u0a9d\u0184\u0001\u0000\u0000\u0000\u0a9e\u0a9f\u0007"+ + "\f\u0000\u0000\u0a9f\u0aa0\u0007\n\u0000\u0000\u0aa0\u0aa1\u0007\u0006"+ + "\u0000\u0000\u0aa1\u0aa2\u0007\n\u0000\u0000\u0aa2\u0aa3\u0007\u0010\u0000"+ + "\u0000\u0aa3\u0aa4\u0007\n\u0000\u0000\u0aa4\u0186\u0001\u0000\u0000\u0000"+ + "\u0aa5\u0aa6\u0007\f\u0000\u0000\u0aa6\u0aa7\u0007\n\u0000\u0000\u0aa7"+ + "\u0aa8\u0007\u0006\u0000\u0000\u0aa8\u0aa9\u0007\u0011\u0000\u0000\u0aa9"+ + "\u0aaa\u0007\u000f\u0000\u0000\u0aaa\u0aab\u0007\u0011\u0000\u0000\u0aab"+ + "\u0aac\u0007\u0010\u0000\u0000\u0aac\u0aad\u0007\n\u0000\u0000\u0aad\u0aae"+ + "\u0007\r\u0000\u0000\u0aae\u0188\u0001\u0000\u0000\u0000\u0aaf\u0ab0\u0007"+ + "\f\u0000\u0000\u0ab0\u0ab1\u0007\n\u0000\u0000\u0ab1\u0ab2\u0007\u0006"+ + "\u0000\u0000\u0ab2\u0ab3\u0007\u0011\u0000\u0000\u0ab3\u0ab4\u0007\u000f"+ + "\u0000\u0000\u0ab4\u0ab5\u0007\u0011\u0000\u0000\u0ab5\u0ab6\u0007\u0010"+ + "\u0000\u0000\u0ab6\u0ab7\u0007\n\u0000\u0000\u0ab7\u0ab8\u0007\r\u0000"+ + "\u0000\u0ab8\u0ab9\u0007\t\u0000\u0000\u0ab9\u018a\u0001\u0000\u0000\u0000"+ + "\u0aba\u0abb\u0007\f\u0000\u0000\u0abb\u0abc\u0007\u0011\u0000\u0000\u0abc"+ + "\u0abd\u0007\u000e\u0000\u0000\u0abd\u0abe\u0007\u0010\u0000\u0000\u0abe"+ + "\u0abf\u0007\u0011\u0000\u0000\u0abf\u0ac0\u0007\u0013\u0000\u0000\u0ac0"+ + "\u0ac1\u0007\u0007\u0000\u0000\u0ac1\u0ac2\u0007\u0005\u0000\u0000\u0ac2"+ + "\u0ac3\u0007\r\u0000\u0000\u0ac3\u0ac4\u0007\b\u0000\u0000\u0ac4\u018c"+ + "\u0001\u0000\u0000\u0000\u0ac5\u0ac6\u0007\f\u0000\u0000\u0ac6\u0ac7\u0007"+ + "\u0011\u0000\u0000\u0ac7\u0ac8\u0007\t\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\u018e\u0001\u0000\u0000"+ + "\u0000\u0acd\u0ace\u0007\f\u0000\u0000\u0ace\u0acf\u0007\u0011\u0000\u0000"+ + "\u0acf\u0ad0\u0007\t\u0000\u0000\u0ad0\u0ad1\u0007\u000e\u0000\u0000\u0ad1"+ + "\u0ad2\u0007\u0005\u0000\u0000\u0ad2\u0ad3\u0007\r\u0000\u0000\u0ad3\u0ad4"+ + "\u0007\f\u0000\u0000\u0ad4\u0190\u0001\u0000\u0000\u0000\u0ad5\u0ad6\u0007"+ + "\f\u0000\u0000\u0ad6\u0ad7\u0007\u0013\u0000\u0000\u0ad7\u0ad8\u0007\u000e"+ + "\u0000\u0000\u0ad8\u0ad9\u0007\u0016\u0000\u0000\u0ad9\u0ada\u0007\u000f"+ + "\u0000\u0000\u0ada\u0adb\u0007\n\u0000\u0000\u0adb\u0adc\u0007\u0007\u0000"+ + "\u0000\u0adc\u0add\u0007\u0010\u0000\u0000\u0add\u0192\u0001\u0000\u0000"+ + "\u0000\u0ade\u0adf\u0007\f\u0000\u0000\u0adf\u0ae0\u0007\u0013\u0000\u0000"+ + "\u0ae0\u0ae1\u0007\u000f\u0000\u0000\u0ae1\u0ae2\u0007\u0005\u0000\u0000"+ + "\u0ae2\u0ae3\u0007\u0011\u0000\u0000\u0ae3\u0ae4\u0007\u0007\u0000\u0000"+ + "\u0ae4\u0194\u0001\u0000\u0000\u0000\u0ae5\u0ae6\u0007\f\u0000\u0000\u0ae6"+ + "\u0ae7\u0007\u0013\u0000\u0000\u0ae7\u0ae8\u0007\u0016\u0000\u0000\u0ae8"+ + "\u0ae9\u0007\u0012\u0000\u0000\u0ae9\u0aea\u0007\u0006\u0000\u0000\u0aea"+ + "\u0aeb\u0007\n\u0000\u0000\u0aeb\u0196\u0001\u0000\u0000\u0000\u0aec\u0aed"+ + "\u0007\f\u0000\u0000\u0aed\u0aee\u0007\r\u0000\u0000\u0aee\u0aef\u0007"+ + "\u0013\u0000\u0000\u0aef\u0af0\u0007\u0018\u0000\u0000\u0af0\u0198\u0001"+ + "\u0000\u0000\u0000\u0af1\u0af2\u0007\n\u0000\u0000\u0af2\u0af3\u0007\u0005"+ + "\u0000\u0000\u0af3\u0af4\u0007\u000e\u0000\u0000\u0af4\u0af5\u0007\u0014"+ + "\u0000\u0000\u0af5\u019a\u0001\u0000\u0000\u0000\u0af6\u0af7\u0007\n\u0000"+ + "\u0000\u0af7\u0af8\u0007\u0007\u0000\u0000\u0af8\u0af9\u0007\u0005\u0000"+ + "\u0000\u0af9\u0afa\u0007\u0012\u0000\u0000\u0afa\u0afb\u0007\u0006\u0000"+ + "\u0000\u0afb\u0afc\u0007\n\u0000\u0000\u0afc\u019c\u0001\u0000\u0000\u0000"+ + "\u0afd\u0afe\u0007\n\u0000\u0000\u0afe\u0aff\u0007\u0007\u0000\u0000\u0aff"+ + "\u0b00\u0007\u000e\u0000\u0000\u0b00\u0b01\u0007\u0013\u0000\u0000\u0b01"+ + "\u0b02\u0007\f\u0000\u0000\u0b02\u0b03\u0007\u0011\u0000\u0000\u0b03\u0b04"+ + "\u0007\u0007\u0000\u0000\u0b04\u0b05\u0007\u0017\u0000\u0000\u0b05\u019e"+ + "\u0001\u0000\u0000\u0000\u0b06\u0b07\u0007\n\u0000\u0000\u0b07\u0b08\u0007"+ + "\u0007\u0000\u0000\u0b08\u0b09\u0007\u000e\u0000\u0000\u0b09\u0b0a\u0007"+ + "\r\u0000\u0000\u0b0a\u0b0b\u0007\b\u0000\u0000\u0b0b\u0b0c\u0007\u0018"+ + "\u0000\u0000\u0b0c\u0b0d\u0007\u0010\u0000\u0000\u0b0d\u0b0e\u0007\n\u0000"+ + "\u0000\u0b0e\u0b0f\u0007\f\u0000\u0000\u0b0f\u01a0\u0001\u0000\u0000\u0000"+ + "\u0b10\u0b11\u0007\n\u0000\u0000\u0b11\u0b12\u0007\u0007\u0000\u0000\u0b12"+ + "\u0b13\u0007\u0016\u0000\u0000\u0b13\u0b14\u0007\u000f\u0000\u0000\u0b14"+ + "\u01a2\u0001\u0000\u0000\u0000\u0b15\u0b16\u0007\n\u0000\u0000\u0b16\u0b17"+ + "\u0007\t\u0000\u0000\u0b17\u0b18\u0007\u000e\u0000\u0000\u0b18\u0b19\u0007"+ + "\u0005\u0000\u0000\u0b19\u0b1a\u0007\u0018\u0000\u0000\u0b1a\u0b1b\u0007"+ + "\n\u0000\u0000\u0b1b\u01a4\u0001\u0000\u0000\u0000\u0b1c\u0b1d\u0007\n"+ + "\u0000\u0000\u0b1d\u0b1e\u0007\u001b\u0000\u0000\u0b1e\u0b1f\u0007\n\u0000"+ + "\u0000\u0b1f\u0b20\u0007\u0007\u0000\u0000\u0b20\u0b21\u0007\u0010\u0000"+ + "\u0000\u0b21\u01a6\u0001\u0000\u0000\u0000\u0b22\u0b23\u0007\n\u0000\u0000"+ + "\u0b23\u0b24\u0007\u001a\u0000\u0000\u0b24\u0b25\u0007\u000e\u0000\u0000"+ + "\u0b25\u0b26\u0007\u0006\u0000\u0000\u0b26\u0b27\u0007\u0016\u0000\u0000"+ + "\u0b27\u0b28\u0007\f\u0000\u0000\u0b28\u0b29\u0007\n\u0000\u0000\u0b29"+ + "\u01a8\u0001\u0000\u0000\u0000\u0b2a\u0b2b\u0007\n\u0000\u0000\u0b2b\u0b2c"+ + "\u0007\u001a\u0000\u0000\u0b2c\u0b2d\u0007\u000e\u0000\u0000\u0b2d\u0b2e"+ + "\u0007\u0006\u0000\u0000\u0b2e\u0b2f\u0007\u0016\u0000\u0000\u0b2f\u0b30"+ + "\u0007\f\u0000\u0000\u0b30\u0b31\u0007\u0011\u0000\u0000\u0b31\u0b32\u0007"+ + "\u0007\u0000\u0000\u0b32\u0b33\u0007\u0017\u0000\u0000\u0b33\u01aa\u0001"+ + "\u0000\u0000\u0000\u0b34\u0b35\u0007\n\u0000\u0000\u0b35\u0b36\u0007\u001a"+ + "\u0000\u0000\u0b36\u0b37\u0007\u000e\u0000\u0000\u0b37\u0b38\u0007\u0006"+ + "\u0000\u0000\u0b38\u0b39\u0007\u0016\u0000\u0000\u0b39\u0b3a\u0007\t\u0000"+ + "\u0000\u0b3a\u0b3b\u0007\u0011\u0000\u0000\u0b3b\u0b3c\u0007\u001b\u0000"+ + "\u0000\u0b3c\u0b3d\u0007\n\u0000\u0000\u0b3d\u01ac\u0001\u0000\u0000\u0000"+ + "\u0b3e\u0b3f\u0007\n\u0000\u0000\u0b3f\u0b40\u0007\u001a\u0000\u0000\u0b40"+ + "\u0b41\u0007\n\u0000\u0000\u0b41\u0b42\u0007\u000e\u0000\u0000\u0b42\u0b43"+ + "\u0007\u0016\u0000\u0000\u0b43\u0b44\u0007\u0010\u0000\u0000\u0b44\u0b45"+ + "\u0007\n\u0000\u0000\u0b45\u01ae\u0001\u0000\u0000\u0000\u0b46\u0b47\u0007"+ + "\n\u0000\u0000\u0b47\u0b48\u0007\u001a\u0000\u0000\u0b48\u0b49\u0007\u0018"+ + "\u0000\u0000\u0b49\u0b4a\u0007\u0006\u0000\u0000\u0b4a\u0b4b\u0007\u0005"+ + "\u0000\u0000\u0b4b\u0b4c\u0007\u0011\u0000\u0000\u0b4c\u0b4d\u0007\u0007"+ + "\u0000\u0000\u0b4d\u01b0\u0001\u0000\u0000\u0000\u0b4e\u0b4f\u0007\n\u0000"+ + "\u0000\u0b4f\u0b50\u0007\u001a\u0000\u0000\u0b50\u0b51\u0007\u0010\u0000"+ + "\u0000\u0b51\u0b52\u0007\n\u0000\u0000\u0b52\u0b53\u0007\u0007\u0000\u0000"+ + "\u0b53\u0b54\u0007\t\u0000\u0000\u0b54\u0b55\u0007\u0011\u0000\u0000\u0b55"+ + "\u0b56\u0007\u0013\u0000\u0000\u0b56\u0b57\u0007\u0007\u0000\u0000\u0b57"+ + "\u01b2\u0001\u0000\u0000\u0000\u0b58\u0b59\u0007\n\u0000\u0000\u0b59\u0b5a"+ + "\u0007\u001a\u0000\u0000\u0b5a\u0b5b\u0007\u0010\u0000\u0000\u0b5b\u0b5c"+ + "\u0007\n\u0000\u0000\u0b5c\u0b5d\u0007\r\u0000\u0000\u0b5d\u0b5e\u0007"+ + "\u0007\u0000\u0000\u0b5e\u0b5f\u0007\u0005\u0000\u0000\u0b5f\u0b60\u0007"+ + "\u0006\u0000\u0000\u0b60\u01b4\u0001\u0000\u0000\u0000\u0b61\u0b62\u0007"+ + "\u0019\u0000\u0000\u0b62\u0b63\u0007\u0005\u0000\u0000\u0b63\u0b64\u0007"+ + "\u000f\u0000\u0000\u0b64\u0b65\u0007\u0011\u0000\u0000\u0b65\u0b66\u0007"+ + "\u0006\u0000\u0000\u0b66\u0b67\u0007\b\u0000\u0000\u0b67\u01b6\u0001\u0000"+ + "\u0000\u0000\u0b68\u0b69\u0007\u0019\u0000\u0000\u0b69\u0b6a\u0007\u0011"+ + "\u0000\u0000\u0b6a\u0b6b\u0007\r\u0000\u0000\u0b6b\u0b6c\u0007\t\u0000"+ + "\u0000\u0b6c\u0b6d\u0007\u0010\u0000\u0000\u0b6d\u01b8\u0001\u0000\u0000"+ + "\u0000\u0b6e\u0b6f\u0007\u0019\u0000\u0000\u0b6f\u0b70\u0007\u0013\u0000"+ + "\u0000\u0b70\u0b71\u0007\u0006\u0000\u0000\u0b71\u0b72\u0007\u0006\u0000"+ + "\u0000\u0b72\u0b73\u0007\u0013\u0000\u0000\u0b73\u0b74\u0007\u001c\u0000"+ + "\u0000\u0b74\u0b75\u0007\u0011\u0000\u0000\u0b75\u0b76\u0007\u0007\u0000"+ + "\u0000\u0b76\u0b77\u0007\u0017\u0000\u0000\u0b77\u01ba\u0001\u0000\u0000"+ + "\u0000\u0b78\u0b79\u0007\u0019\u0000\u0000\u0b79\u0b7a\u0007\u0013\u0000"+ + "\u0000\u0b7a\u0b7b\u0007\r\u0000\u0000\u0b7b\u0b7c\u0007\u000e\u0000\u0000"+ + "\u0b7c\u0b7d\u0007\n\u0000\u0000\u0b7d\u01bc\u0001\u0000\u0000\u0000\u0b7e"+ + "\u0b7f\u0007\u0019\u0000\u0000\u0b7f\u0b80\u0007\u0013\u0000\u0000\u0b80"+ + "\u0b81\u0007\r\u0000\u0000\u0b81\u0b82\u0007\u001c\u0000\u0000\u0b82\u0b83"+ + "\u0007\u0005\u0000\u0000\u0b83\u0b84\u0007\r\u0000\u0000\u0b84\u0b85\u0007"+ + "\f\u0000\u0000\u0b85\u01be\u0001\u0000\u0000\u0000\u0b86\u0b87\u0007\u0019"+ + "\u0000\u0000\u0b87\u0b88\u0007\u0016\u0000\u0000\u0b88\u0b89\u0007\u0007"+ + "\u0000\u0000\u0b89\u0b8a\u0007\u000e\u0000\u0000\u0b8a\u0b8b\u0007\u0010"+ + "\u0000\u0000\u0b8b\u0b8c\u0007\u0011\u0000\u0000\u0b8c\u0b8d\u0007\u0013"+ + "\u0000\u0000\u0b8d\u0b8e\u0007\u0007\u0000\u0000\u0b8e\u01c0\u0001\u0000"+ + "\u0000\u0000\u0b8f\u0b90\u0007\u0019\u0000\u0000\u0b90\u0b91\u0007\u0016"+ + "\u0000\u0000\u0b91\u0b92\u0007\u0007\u0000\u0000\u0b92\u0b93\u0007\u000e"+ + "\u0000\u0000\u0b93\u0b94\u0007\u0010\u0000\u0000\u0b94\u0b95\u0007\u0011"+ + "\u0000\u0000\u0b95\u0b96\u0007\u0013\u0000\u0000\u0b96\u0b97\u0007\u0007"+ + "\u0000\u0000\u0b97\u0b98\u0007\t\u0000\u0000\u0b98\u01c2\u0001\u0000\u0000"+ + "\u0000\u0b99\u0b9a\u0007\u0017\u0000\u0000\u0b9a\u0b9b\u0007\u0006\u0000"+ + "\u0000\u0b9b\u0b9c\u0007\u0013\u0000\u0000\u0b9c\u0b9d\u0007\u0012\u0000"+ + "\u0000\u0b9d\u0b9e\u0007\u0005\u0000\u0000\u0b9e\u0b9f\u0007\u0006\u0000"+ + "\u0000\u0b9f\u01c4\u0001\u0000\u0000\u0000\u0ba0\u0ba1\u0007\u0017\u0000"+ + "\u0000\u0ba1\u0ba2\u0007\r\u0000\u0000\u0ba2\u0ba3\u0007\u0005\u0000\u0000"+ + "\u0ba3\u0ba4\u0007\u0007\u0000\u0000\u0ba4\u0ba5\u0007\u0010\u0000\u0000"+ + "\u0ba5\u0ba6\u0007\n\u0000\u0000\u0ba6\u0ba7\u0007\f\u0000\u0000\u0ba7"+ + "\u01c6\u0001\u0000\u0000\u0000\u0ba8\u0ba9\u0007\u0014\u0000\u0000\u0ba9"+ + "\u0baa\u0007\u0005\u0000\u0000\u0baa\u0bab\u0007\u0007\u0000\u0000\u0bab"+ + "\u0bac\u0007\f\u0000\u0000\u0bac\u0bad\u0007\u0006\u0000\u0000\u0bad\u0bae"+ + "\u0007\n\u0000\u0000\u0bae\u0baf\u0007\r\u0000\u0000\u0baf\u01c8\u0001"+ + "\u0000\u0000\u0000\u0bb0\u0bb1\u0007\u0014\u0000\u0000\u0bb1\u0bb2\u0007"+ + "\n\u0000\u0000\u0bb2\u0bb3\u0007\u0005\u0000\u0000\u0bb3\u0bb4\u0007\f"+ + "\u0000\u0000\u0bb4\u0bb5\u0007\n\u0000\u0000\u0bb5\u0bb6\u0007\r\u0000"+ + "\u0000\u0bb6\u01ca\u0001\u0000\u0000\u0000\u0bb7\u0bb8\u0007\u0014\u0000"+ + "\u0000\u0bb8\u0bb9\u0007\u0013\u0000\u0000\u0bb9\u0bba\u0007\u0006\u0000"+ + "\u0000\u0bba\u0bbb\u0007\f\u0000\u0000\u0bbb\u01cc\u0001\u0000\u0000\u0000"+ + "\u0bbc\u0bbd\u0007\u0014\u0000\u0000\u0bbd\u0bbe\u0007\u0013\u0000\u0000"+ + "\u0bbe\u0bbf\u0007\u0016\u0000\u0000\u0bbf\u0bc0\u0007\r\u0000\u0000\u0bc0"+ + "\u01ce\u0001\u0000\u0000\u0000\u0bc1\u0bc2\u0007\u0011\u0000\u0000\u0bc2"+ + "\u0bc3\u0007\f\u0000\u0000\u0bc3\u0bc4\u0007\n\u0000\u0000\u0bc4\u0bc5"+ + "\u0007\u0007\u0000\u0000\u0bc5\u0bc6\u0007\u0010\u0000\u0000\u0bc6\u0bc7"+ + "\u0007\u0011\u0000\u0000\u0bc7\u0bc8\u0007\u0010\u0000\u0000\u0bc8\u0bc9"+ + "\u0007\b\u0000\u0000\u0bc9\u01d0\u0001\u0000\u0000\u0000\u0bca\u0bcb\u0007"+ + "\u0011\u0000\u0000\u0bcb\u0bcc\u0007\u0019\u0000\u0000\u0bcc\u01d2\u0001"+ + "\u0000\u0000\u0000\u0bcd\u0bce\u0007\u0011\u0000\u0000\u0bce\u0bcf\u0007"+ + "\u000f\u0000\u0000\u0bcf\u0bd0\u0007\u000f\u0000\u0000\u0bd0\u0bd1\u0007"+ + "\n\u0000\u0000\u0bd1\u0bd2\u0007\f\u0000\u0000\u0bd2\u0bd3\u0007\u0011"+ + "\u0000\u0000\u0bd3\u0bd4\u0007\u0005\u0000\u0000\u0bd4\u0bd5\u0007\u0010"+ + "\u0000\u0000\u0bd5\u0bd6\u0007\n\u0000\u0000\u0bd6\u01d4\u0001\u0000\u0000"+ + "\u0000\u0bd7\u0bd8\u0007\u0011\u0000\u0000\u0bd8\u0bd9\u0007\u000f\u0000"+ + "\u0000\u0bd9\u0bda\u0007\u000f\u0000\u0000\u0bda\u0bdb\u0007\u0016\u0000"+ + "\u0000\u0bdb\u0bdc\u0007\u0010\u0000\u0000\u0bdc\u0bdd\u0007\u0005\u0000"+ + "\u0000\u0bdd\u0bde\u0007\u0012\u0000\u0000\u0bde\u0bdf\u0007\u0006\u0000"+ + "\u0000\u0bdf\u0be0\u0007\n\u0000\u0000\u0be0\u01d6\u0001\u0000\u0000\u0000"+ + "\u0be1\u0be2\u0007\u0011\u0000\u0000\u0be2\u0be3\u0007\u000f\u0000\u0000"+ + "\u0be3\u0be4\u0007\u0018\u0000\u0000\u0be4\u0be5\u0007\u0006\u0000\u0000"+ + "\u0be5\u0be6\u0007\u0011\u0000\u0000\u0be6\u0be7\u0007\u000e\u0000\u0000"+ + "\u0be7\u0be8\u0007\u0011\u0000\u0000\u0be8\u0be9\u0007\u0010\u0000\u0000"+ + "\u0be9\u01d8\u0001\u0000\u0000\u0000\u0bea\u0beb\u0007\u0011\u0000\u0000"+ + "\u0beb\u0bec\u0007\u0007\u0000\u0000\u0bec\u0bed\u0007\u000e\u0000\u0000"+ + "\u0bed\u0bee\u0007\u0006\u0000\u0000\u0bee\u0bef\u0007\u0016\u0000\u0000"+ + "\u0bef\u0bf0\u0007\f\u0000\u0000\u0bf0\u0bf1\u0007\u0011\u0000\u0000\u0bf1"+ + "\u0bf2\u0007\u0007\u0000\u0000\u0bf2\u0bf3\u0007\u0017\u0000\u0000\u0bf3"+ + "\u01da\u0001\u0000\u0000\u0000\u0bf4\u0bf5\u0007\u0011\u0000\u0000\u0bf5"+ + "\u0bf6\u0007\u0007\u0000\u0000\u0bf6\u0bf7\u0007\u000e\u0000\u0000\u0bf7"+ + "\u0bf8\u0007\r\u0000\u0000\u0bf8\u0bf9\u0007\n\u0000\u0000\u0bf9\u0bfa"+ + "\u0007\u000f\u0000\u0000\u0bfa\u0bfb\u0007\n\u0000\u0000\u0bfb\u0bfc\u0007"+ + "\u0007\u0000\u0000\u0bfc\u0bfd\u0007\u0010\u0000\u0000\u0bfd\u01dc\u0001"+ + "\u0000\u0000\u0000\u0bfe\u0bff\u0007\u0011\u0000\u0000\u0bff\u0c00\u0007"+ + "\u0007\u0000\u0000\u0c00\u0c01\u0007\f\u0000\u0000\u0c01\u0c02\u0007\n"+ + "\u0000\u0000\u0c02\u0c03\u0007\u001a\u0000\u0000\u0c03\u01de\u0001\u0000"+ + "\u0000\u0000\u0c04\u0c05\u0007\u0011\u0000\u0000\u0c05\u0c06\u0007\u0007"+ + "\u0000\u0000\u0c06\u0c07\u0007\f\u0000\u0000\u0c07\u0c08\u0007\n\u0000"+ + "\u0000\u0c08\u0c09\u0007\u001a\u0000\u0000\u0c09\u0c0a\u0007\n\u0000\u0000"+ + "\u0c0a\u0c0b\u0007\t\u0000\u0000\u0c0b\u01e0\u0001\u0000\u0000\u0000\u0c0c"+ + "\u0c0d\u0007\u0011\u0000\u0000\u0c0d\u0c0e\u0007\u0007\u0000\u0000\u0c0e"+ + "\u0c0f\u0007\u0014\u0000\u0000\u0c0f\u0c10\u0007\n\u0000\u0000\u0c10\u0c11"+ + "\u0007\r\u0000\u0000\u0c11\u0c12\u0007\u0011\u0000\u0000\u0c12\u0c13\u0007"+ + "\u0010\u0000\u0000\u0c13\u01e2\u0001\u0000\u0000\u0000\u0c14\u0c15\u0007"+ + "\u0011\u0000\u0000\u0c15\u0c16\u0007\u0007\u0000\u0000\u0c16\u0c17\u0007"+ + "\u0014\u0000\u0000\u0c17\u0c18\u0007\n\u0000\u0000\u0c18\u0c19\u0007\r"+ + "\u0000\u0000\u0c19\u0c1a\u0007\u0011\u0000\u0000\u0c1a\u0c1b\u0007\u0010"+ + "\u0000\u0000\u0c1b\u0c1c\u0007\t\u0000\u0000\u0c1c\u01e4\u0001\u0000\u0000"+ + "\u0000\u0c1d\u0c1e\u0007\u0011\u0000\u0000\u0c1e\u0c1f\u0007\u0007\u0000"+ + "\u0000\u0c1f\u0c20\u0007\u0006\u0000\u0000\u0c20\u0c21\u0007\u0011\u0000"+ + "\u0000\u0c21\u0c22\u0007\u0007\u0000\u0000\u0c22\u0c23\u0007\n\u0000\u0000"+ + "\u0c23\u01e6\u0001\u0000\u0000\u0000\u0c24\u0c25\u0007\u0011\u0000\u0000"+ + "\u0c25\u0c26\u0007\u0007\u0000\u0000\u0c26\u0c27\u0007\t\u0000\u0000\u0c27"+ + "\u0c28\u0007\n\u0000\u0000\u0c28\u0c29\u0007\u0007\u0000\u0000\u0c29\u0c2a"+ + "\u0007\t\u0000\u0000\u0c2a\u0c2b\u0007\u0011\u0000\u0000\u0c2b\u0c2c\u0007"+ + "\u0010\u0000\u0000\u0c2c\u0c2d\u0007\u0011\u0000\u0000\u0c2d\u0c2e\u0007"+ + "\u001b\u0000\u0000\u0c2e\u0c2f\u0007\n\u0000\u0000\u0c2f\u01e8\u0001\u0000"+ + "\u0000\u0000\u0c30\u0c31\u0007\u0011\u0000\u0000\u0c31\u0c32\u0007\u0007"+ + "\u0000\u0000\u0c32\u0c33\u0007\t\u0000\u0000\u0c33\u0c34\u0007\n\u0000"+ + "\u0000\u0c34\u0c35\u0007\r\u0000\u0000\u0c35\u0c36\u0007\u0010\u0000\u0000"+ + "\u0c36\u01ea\u0001\u0000\u0000\u0000\u0c37\u0c38\u0007\u0011\u0000\u0000"+ + "\u0c38\u0c39\u0007\u0007\u0000\u0000\u0c39\u0c3a\u0007\t\u0000\u0000\u0c3a"+ + "\u0c3b\u0007\u0010\u0000\u0000\u0c3b\u0c3c\u0007\n\u0000\u0000\u0c3c\u0c3d"+ + "\u0007\u0005\u0000\u0000\u0c3d\u0c3e\u0007\f\u0000\u0000\u0c3e\u01ec\u0001"+ + "\u0000\u0000\u0000\u0c3f\u0c40\u0007\u0011\u0000\u0000\u0c40\u0c41\u0007"+ + "\u0007\u0000\u0000\u0c41\u0c42\u0007\u001b\u0000\u0000\u0c42\u0c43\u0007"+ + "\u0013\u0000\u0000\u0c43\u0c44\u0007\u0015\u0000\u0000\u0c44\u0c45\u0007"+ + "\n\u0000\u0000\u0c45\u0c46\u0007\r\u0000\u0000\u0c46\u01ee\u0001\u0000"+ + "\u0000\u0000\u0c47\u0c48\u0007\u0011\u0000\u0000\u0c48\u0c49\u0007\t\u0000"+ + "\u0000\u0c49\u0c4a\u0007\u0013\u0000\u0000\u0c4a\u0c4b\u0007\u0006\u0000"+ + "\u0000\u0c4b\u0c4c\u0007\u0005\u0000\u0000\u0c4c\u0c4d\u0007\u0010\u0000"+ + "\u0000\u0c4d\u0c4e\u0007\u0011\u0000\u0000\u0c4e\u0c4f\u0007\u0013\u0000"+ + "\u0000\u0c4f\u0c50\u0007\u0007\u0000\u0000\u0c50\u01f0\u0001\u0000\u0000"+ + "\u0000\u0c51\u0c52\u0007\u0015\u0000\u0000\u0c52\u0c53\u0007\n\u0000\u0000"+ + "\u0c53\u0c54\u0007\b\u0000\u0000\u0c54\u01f2\u0001\u0000\u0000\u0000\u0c55"+ + "\u0c56\u0007\u0006\u0000\u0000\u0c56\u0c57\u0007\u0005\u0000\u0000\u0c57"+ + "\u0c58\u0007\u0012\u0000\u0000\u0c58\u0c59\u0007\n\u0000\u0000\u0c59\u0c5a"+ + "\u0007\u0006\u0000\u0000\u0c5a\u01f4\u0001\u0000\u0000\u0000\u0c5b\u0c5c"+ + "\u0007\u0006\u0000\u0000\u0c5c\u0c5d\u0007\u0005\u0000\u0000\u0c5d\u0c5e"+ + "\u0007\u0007\u0000\u0000\u0c5e\u0c5f\u0007\u0017\u0000\u0000\u0c5f\u0c60"+ + "\u0007\u0016\u0000\u0000\u0c60\u0c61\u0007\u0005\u0000\u0000\u0c61\u0c62"+ + "\u0007\u0017\u0000\u0000\u0c62\u0c63\u0007\n\u0000\u0000\u0c63\u01f6\u0001"+ + "\u0000\u0000\u0000\u0c64\u0c65\u0007\u0006\u0000\u0000\u0c65\u0c66\u0007"+ + "\u0005\u0000\u0000\u0c66\u0c67\u0007\r\u0000\u0000\u0c67\u0c68\u0007\u0017"+ + "\u0000\u0000\u0c68\u0c69\u0007\n\u0000\u0000\u0c69\u01f8\u0001\u0000\u0000"+ + "\u0000\u0c6a\u0c6b\u0007\u0006\u0000\u0000\u0c6b\u0c6c\u0007\u0005\u0000"+ + "\u0000\u0c6c\u0c6d\u0007\t\u0000\u0000\u0c6d\u0c6e\u0007\u0010\u0000\u0000"+ + "\u0c6e\u01fa\u0001\u0000\u0000\u0000\u0c6f\u0c70\u0007\u0006\u0000\u0000"+ + "\u0c70\u0c71\u0007\n\u0000\u0000\u0c71\u0c72\u0007\u0005\u0000\u0000\u0c72"+ + "\u0c73\u0007\u0015\u0000\u0000\u0c73\u0c74\u0007\u0018\u0000\u0000\u0c74"+ + "\u0c75\u0007\r\u0000\u0000\u0c75\u0c76\u0007\u0013\u0000\u0000\u0c76\u0c77"+ + "\u0007\u0013\u0000\u0000\u0c77\u0c78\u0007\u0019\u0000\u0000\u0c78\u01fc"+ + "\u0001\u0000\u0000\u0000\u0c79\u0c7a\u0007\u0006\u0000\u0000\u0c7a\u0c7b"+ + "\u0007\n\u0000\u0000\u0c7b\u0c7c\u0007\u001b\u0000\u0000\u0c7c\u0c7d\u0007"+ + "\n\u0000\u0000\u0c7d\u0c7e\u0007\u0006\u0000\u0000\u0c7e\u01fe\u0001\u0000"+ + "\u0000\u0000\u0c7f\u0c80\u0007\u0006\u0000\u0000\u0c80\u0c81\u0007\u0011"+ + "\u0000\u0000\u0c81\u0c82\u0007\t\u0000\u0000\u0c82\u0c83\u0007\u0010\u0000"+ + "\u0000\u0c83\u0c84\u0007\n\u0000\u0000\u0c84\u0c85\u0007\u0007\u0000\u0000"+ + "\u0c85\u0200\u0001\u0000\u0000\u0000\u0c86\u0c87\u0007\u0006\u0000\u0000"+ + "\u0c87\u0c88\u0007\u0013\u0000\u0000\u0c88\u0c89\u0007\u0005\u0000\u0000"+ + "\u0c89\u0c8a\u0007\f\u0000\u0000\u0c8a\u0202\u0001\u0000\u0000\u0000\u0c8b"+ + "\u0c8c\u0007\u0006\u0000\u0000\u0c8c\u0c8d\u0007\u0013\u0000\u0000\u0c8d"+ + "\u0c8e\u0007\u000e\u0000\u0000\u0c8e\u0c8f\u0007\u0005\u0000\u0000\u0c8f"+ + "\u0c90\u0007\u0006\u0000\u0000\u0c90\u0204\u0001\u0000\u0000\u0000\u0c91"+ + "\u0c92\u0007\u0006\u0000\u0000\u0c92\u0c93\u0007\u0013\u0000\u0000\u0c93"+ + "\u0c94\u0007\u000e\u0000\u0000\u0c94\u0c95\u0007\u0005\u0000\u0000\u0c95"+ + "\u0c96\u0007\u0010\u0000\u0000\u0c96\u0c97\u0007\u0011\u0000\u0000\u0c97"+ + "\u0c98\u0007\u0013\u0000\u0000\u0c98\u0c99\u0007\u0007\u0000\u0000\u0c99"+ + "\u0206\u0001\u0000\u0000\u0000\u0c9a\u0c9b\u0007\u0006\u0000\u0000\u0c9b"+ + "\u0c9c\u0007\u0013\u0000\u0000\u0c9c\u0c9d\u0007\u000e\u0000\u0000\u0c9d"+ + "\u0c9e\u0007\u0015\u0000\u0000\u0c9e\u0208\u0001\u0000\u0000\u0000\u0c9f"+ + "\u0ca0\u0007\u000f\u0000\u0000\u0ca0\u0ca1\u0007\u0005\u0000\u0000\u0ca1"+ + "\u0ca2\u0007\u0018\u0000\u0000\u0ca2\u0ca3\u0007\u0018\u0000\u0000\u0ca3"+ + "\u0ca4\u0007\u0011\u0000\u0000\u0ca4\u0ca5\u0007\u0007\u0000\u0000\u0ca5"+ + "\u0ca6\u0007\u0017\u0000\u0000\u0ca6\u020a\u0001\u0000\u0000\u0000\u0ca7"+ + "\u0ca8\u0007\u000f\u0000\u0000\u0ca8\u0ca9\u0007\u0005\u0000\u0000\u0ca9"+ + "\u0caa\u0007\u0010\u0000\u0000\u0caa\u0cab\u0007\u000e\u0000\u0000\u0cab"+ + "\u0cac\u0007\u0014\u0000\u0000\u0cac\u020c\u0001\u0000\u0000\u0000\u0cad"+ + "\u0cae\u0007\u000f\u0000\u0000\u0cae\u0caf\u0007\u0005\u0000\u0000\u0caf"+ + "\u0cb0\u0007\u0010\u0000\u0000\u0cb0\u0cb1\u0007\u000e\u0000\u0000\u0cb1"+ + "\u0cb2\u0007\u0014\u0000\u0000\u0cb2\u0cb3\u0007\n\u0000\u0000\u0cb3\u0cb4"+ + "\u0007\f\u0000\u0000\u0cb4\u020e\u0001\u0000\u0000\u0000\u0cb5\u0cb6\u0007"+ + "\u000f\u0000\u0000\u0cb6\u0cb7\u0007\u0005\u0000\u0000\u0cb7\u0cb8\u0007"+ + "\u0010\u0000\u0000\u0cb8\u0cb9\u0007\n\u0000\u0000\u0cb9\u0cba\u0007\r"+ + "\u0000\u0000\u0cba\u0cbb\u0007\u0011\u0000\u0000\u0cbb\u0cbc\u0007\u0005"+ + "\u0000\u0000\u0cbc\u0cbd\u0007\u0006\u0000\u0000\u0cbd\u0cbe\u0007\u0011"+ + "\u0000\u0000\u0cbe\u0cbf\u0007\u000b\u0000\u0000\u0cbf\u0cc0\u0007\n\u0000"+ + "\u0000\u0cc0\u0cc1\u0007\f\u0000\u0000\u0cc1\u0210\u0001\u0000\u0000\u0000"+ + "\u0cc2\u0cc3\u0007\u000f\u0000\u0000\u0cc3\u0cc4\u0007\u0005\u0000\u0000"+ + "\u0cc4\u0cc5\u0007\u001a\u0000\u0000\u0cc5\u0cc6\u0007\u001b\u0000\u0000"+ + "\u0cc6\u0cc7\u0007\u0005\u0000\u0000\u0cc7\u0cc8\u0007\u0006\u0000\u0000"+ + "\u0cc8\u0cc9\u0007\u0016\u0000\u0000\u0cc9\u0cca\u0007\n\u0000\u0000\u0cca"+ + "\u0212\u0001\u0000\u0000\u0000\u0ccb\u0ccc\u0007\u000f\u0000\u0000\u0ccc"+ + "\u0ccd\u0007\n\u0000\u0000\u0ccd\u0cce\u0007\r\u0000\u0000\u0cce\u0ccf"+ + "\u0007\u0017\u0000\u0000\u0ccf\u0cd0\u0007\n\u0000\u0000\u0cd0\u0214\u0001"+ + "\u0000\u0000\u0000\u0cd1\u0cd2\u0007\u000f\u0000\u0000\u0cd2\u0cd3\u0007"+ + "\u0011\u0000\u0000\u0cd3\u0cd4\u0007\u0007\u0000\u0000\u0cd4\u0cd5\u0007"+ + "\u0016\u0000\u0000\u0cd5\u0cd6\u0007\u0010\u0000\u0000\u0cd6\u0cd7\u0007"+ + "\n\u0000\u0000\u0cd7\u0216\u0001\u0000\u0000\u0000\u0cd8\u0cd9\u0007\u000f"+ + "\u0000\u0000\u0cd9\u0cda\u0007\u0011\u0000\u0000\u0cda\u0cdb\u0007\u0007"+ + "\u0000\u0000\u0cdb\u0cdc\u0007\u001b\u0000\u0000\u0cdc\u0cdd\u0007\u0005"+ + "\u0000\u0000\u0cdd\u0cde\u0007\u0006\u0000\u0000\u0cde\u0cdf\u0007\u0016"+ + "\u0000\u0000\u0cdf\u0ce0\u0007\n\u0000\u0000\u0ce0\u0218\u0001\u0000\u0000"+ + "\u0000\u0ce1\u0ce2\u0007\u000f\u0000\u0000\u0ce2\u0ce3\u0007\u0013\u0000"+ + "\u0000\u0ce3\u0ce4\u0007\f\u0000\u0000\u0ce4\u0ce5\u0007\n\u0000\u0000"+ + "\u0ce5\u021a\u0001\u0000\u0000\u0000\u0ce6\u0ce7\u0007\u000f\u0000\u0000"+ + "\u0ce7\u0ce8\u0007\u0013\u0000\u0000\u0ce8\u0ce9\u0007\u0007\u0000\u0000"+ + "\u0ce9\u0cea\u0007\u0010\u0000\u0000\u0cea\u0ceb\u0007\u0014\u0000\u0000"+ + "\u0ceb\u021c\u0001\u0000\u0000\u0000\u0cec\u0ced\u0007\u000f\u0000\u0000"+ + "\u0ced\u0cee\u0007\u0013\u0000\u0000\u0cee\u0cef\u0007\u001b\u0000\u0000"+ + "\u0cef\u0cf0\u0007\n\u0000\u0000\u0cf0\u021e\u0001\u0000\u0000\u0000\u0cf1"+ + "\u0cf2\u0007\u0007\u0000\u0000\u0cf2\u0cf3\u0007\u0005\u0000\u0000\u0cf3"+ + "\u0cf4\u0007\u000f\u0000\u0000\u0cf4\u0cf5\u0007\n\u0000\u0000\u0cf5\u0220"+ + "\u0001\u0000\u0000\u0000\u0cf6\u0cf7\u0007\u0007\u0000\u0000\u0cf7\u0cf8"+ + "\u0007\u0005\u0000\u0000\u0cf8\u0cf9\u0007\u000f\u0000\u0000\u0cf9\u0cfa"+ + "\u0007\n\u0000\u0000\u0cfa\u0cfb\u0007\t\u0000\u0000\u0cfb\u0222\u0001"+ + "\u0000\u0000\u0000\u0cfc\u0cfd\u0007\u0007\u0000\u0000\u0cfd\u0cfe\u0007"+ + "\n\u0000\u0000\u0cfe\u0cff\u0007\u001a\u0000\u0000\u0cff\u0d00\u0007\u0010"+ + "\u0000\u0000\u0d00\u0224\u0001\u0000\u0000\u0000\u0d01\u0d02\u0007\u0007"+ + "\u0000\u0000\u0d02\u0d03\u0007\u0013\u0000\u0000\u0d03\u0226\u0001\u0000"+ + "\u0000\u0000\u0d04\u0d05\u0007\u0007\u0000\u0000\u0d05\u0d06\u0007\u0013"+ + "\u0000\u0000\u0d06\u0d07\u0007\u0010\u0000\u0000\u0d07\u0d08\u0007\u0014"+ + "\u0000\u0000\u0d08\u0d09\u0007\u0011\u0000\u0000\u0d09\u0d0a\u0007\u0007"+ + "\u0000\u0000\u0d0a\u0d0b\u0007\u0017\u0000\u0000\u0d0b\u0228\u0001\u0000"+ + "\u0000\u0000\u0d0c\u0d0d\u0007\u0007\u0000\u0000\u0d0d\u0d0e\u0007\u0013"+ + "\u0000\u0000\u0d0e\u0d0f\u0007\u0010\u0000\u0000\u0d0f\u0d10\u0007\u0011"+ + "\u0000\u0000\u0d10\u0d11\u0007\u0019\u0000\u0000\u0d11\u0d12\u0007\b\u0000"+ + "\u0000\u0d12\u022a\u0001\u0000\u0000\u0000\u0d13\u0d14\u0007\u0007\u0000"+ + "\u0000\u0d14\u0d15\u0007\u0013\u0000\u0000\u0d15\u0d16\u0007\u001c\u0000"+ + "\u0000\u0d16\u0d17\u0007\u0005\u0000\u0000\u0d17\u0d18\u0007\u0011\u0000"+ + "\u0000\u0d18\u0d19\u0007\u0010\u0000\u0000\u0d19\u022c\u0001\u0000\u0000"+ + "\u0000\u0d1a\u0d1b\u0007\u0007\u0000\u0000\u0d1b\u0d1c\u0007\u0016\u0000"+ + "\u0000\u0d1c\u0d1d\u0007\u0006\u0000\u0000\u0d1d\u0d1e\u0007\u0006\u0000"+ + "\u0000\u0d1e\u0d1f\u0007\t\u0000\u0000\u0d1f\u022e\u0001\u0000\u0000\u0000"+ + "\u0d20\u0d21\u0007\u0013\u0000\u0000\u0d21\u0d22\u0007\u0012\u0000\u0000"+ + "\u0d22\u0d23\u0007\u001e\u0000\u0000\u0d23\u0d24\u0007\n\u0000\u0000\u0d24"+ + "\u0d25\u0007\u000e\u0000\u0000\u0d25\u0d26\u0007\u0010\u0000\u0000\u0d26"+ + "\u0230\u0001\u0000\u0000\u0000\u0d27\u0d28\u0007\u0013\u0000\u0000\u0d28"+ + "\u0d29\u0007\u0019\u0000\u0000\u0d29\u0232\u0001\u0000\u0000\u0000\u0d2a"+ + "\u0d2b\u0007\u0013\u0000\u0000\u0d2b\u0d2c\u0007\u0019\u0000\u0000\u0d2c"+ + "\u0d2d\u0007\u0019\u0000\u0000\u0d2d\u0234\u0001\u0000\u0000\u0000\u0d2e"+ + "\u0d2f\u0007\u0013\u0000\u0000\u0d2f\u0d30\u0007\u0011\u0000\u0000\u0d30"+ + "\u0d31\u0007\f\u0000\u0000\u0d31\u0d32\u0007\t\u0000\u0000\u0d32\u0236"+ + "\u0001\u0000\u0000\u0000\u0d33\u0d34\u0007\u0013\u0000\u0000\u0d34\u0d35"+ + "\u0007\u0018\u0000\u0000\u0d35\u0d36\u0007\n\u0000\u0000\u0d36\u0d37\u0007"+ + "\r\u0000\u0000\u0d37\u0d38\u0007\u0005\u0000\u0000\u0d38\u0d39\u0007\u0010"+ + "\u0000\u0000\u0d39\u0d3a\u0007\u0013\u0000\u0000\u0d3a\u0d3b\u0007\r\u0000"+ + "\u0000\u0d3b\u0238\u0001\u0000\u0000\u0000\u0d3c\u0d3d\u0007\u0013\u0000"+ + "\u0000\u0d3d\u0d3e\u0007\u0018\u0000\u0000\u0d3e\u0d3f\u0007\u0010\u0000"+ + "\u0000\u0d3f\u0d40\u0007\u0011\u0000\u0000\u0d40\u0d41\u0007\u0013\u0000"+ + "\u0000\u0d41\u0d42\u0007\u0007\u0000\u0000\u0d42\u023a\u0001\u0000\u0000"+ + "\u0000\u0d43\u0d44\u0007\u0013\u0000\u0000\u0d44\u0d45\u0007\u0018\u0000"+ + "\u0000\u0d45\u0d46\u0007\u0010\u0000\u0000\u0d46\u0d47\u0007\u0011\u0000"+ + "\u0000\u0d47\u0d48\u0007\u0013\u0000\u0000\u0d48\u0d49\u0007\u0007\u0000"+ + "\u0000\u0d49\u0d4a\u0007\t\u0000\u0000\u0d4a\u023c\u0001\u0000\u0000\u0000"+ + "\u0d4b\u0d4c\u0007\u0013\u0000\u0000\u0d4c\u0d4d\u0007\u001c\u0000\u0000"+ + "\u0d4d\u0d4e\u0007\u0007\u0000\u0000\u0d4e\u0d4f\u0007\n\u0000\u0000\u0d4f"+ + "\u0d50\u0007\f\u0000\u0000\u0d50\u023e\u0001\u0000\u0000\u0000\u0d51\u0d52"+ + "\u0007\u0013\u0000\u0000\u0d52\u0d53\u0007\u001c\u0000\u0000\u0d53\u0d54"+ + "\u0007\u0007\u0000\u0000\u0d54\u0d55\u0007\n\u0000\u0000\u0d55\u0d56\u0007"+ + "\r\u0000\u0000\u0d56\u0240\u0001\u0000\u0000\u0000\u0d57\u0d58\u0007\u0018"+ + "\u0000\u0000\u0d58\u0d59\u0007\u0005\u0000\u0000\u0d59\u0d5a\u0007\r\u0000"+ + "\u0000\u0d5a\u0d5b\u0007\t\u0000\u0000\u0d5b\u0d5c\u0007\n\u0000\u0000"+ + "\u0d5c\u0d5d\u0007\r\u0000\u0000\u0d5d\u0242\u0001\u0000\u0000\u0000\u0d5e"+ + "\u0d5f\u0007\u0018\u0000\u0000\u0d5f\u0d60\u0007\u0005\u0000\u0000\u0d60"+ + "\u0d61\u0007\r\u0000\u0000\u0d61\u0d62\u0007\u0010\u0000\u0000\u0d62\u0d63"+ + "\u0007\u0011\u0000\u0000\u0d63\u0d64\u0007\u0005\u0000\u0000\u0d64\u0d65"+ + "\u0007\u0006\u0000\u0000\u0d65\u0244\u0001\u0000\u0000\u0000\u0d66\u0d67"+ + "\u0007\u0018\u0000\u0000\u0d67\u0d68\u0007\u0005\u0000\u0000\u0d68\u0d69"+ + "\u0007\r\u0000\u0000\u0d69\u0d6a\u0007\u0010\u0000\u0000\u0d6a\u0d6b\u0007"+ + "\u0011\u0000\u0000\u0d6b\u0d6c\u0007\u0010\u0000\u0000\u0d6c\u0d6d\u0007"+ + "\u0011\u0000\u0000\u0d6d\u0d6e\u0007\u0013\u0000\u0000\u0d6e\u0d6f\u0007"+ + "\u0007\u0000\u0000\u0d6f\u0246\u0001\u0000\u0000\u0000\u0d70\u0d71\u0007"+ + "\u0018\u0000\u0000\u0d71\u0d72\u0007\u0005\u0000\u0000\u0d72\u0d73\u0007"+ + "\t\u0000\u0000\u0d73\u0d74\u0007\t\u0000\u0000\u0d74\u0d75\u0007\u0011"+ + "\u0000\u0000\u0d75\u0d76\u0007\u0007\u0000\u0000\u0d76\u0d77\u0007\u0017"+ + "\u0000\u0000\u0d77\u0248\u0001\u0000\u0000\u0000\u0d78\u0d79\u0007\u0018"+ + "\u0000\u0000\u0d79\u0d7a\u0007\u0005\u0000\u0000\u0d7a\u0d7b\u0007\t\u0000"+ + "\u0000\u0d7b\u0d7c\u0007\t\u0000\u0000\u0d7c\u0d7d\u0007\u001c\u0000\u0000"+ + "\u0d7d\u0d7e\u0007\u0013\u0000\u0000\u0d7e\u0d7f\u0007\r\u0000\u0000\u0d7f"+ + "\u0d80\u0007\f\u0000\u0000\u0d80\u024a\u0001\u0000\u0000\u0000\u0d81\u0d82"+ + "\u0007\u0018\u0000\u0000\u0d82\u0d83\u0007\u0006\u0000\u0000\u0d83\u0d84"+ + "\u0007\u0005\u0000\u0000\u0d84\u0d85\u0007\u0007\u0000\u0000\u0d85\u0d86"+ + "\u0007\t\u0000\u0000\u0d86\u024c\u0001\u0000\u0000\u0000\u0d87\u0d88\u0007"+ + "\u0018\u0000\u0000\u0d88\u0d89\u0007\r\u0000\u0000\u0d89\u0d8a\u0007\n"+ + "\u0000\u0000\u0d8a\u0d8b\u0007\u000e\u0000\u0000\u0d8b\u0d8c\u0007\n\u0000"+ + "\u0000\u0d8c\u0d8d\u0007\f\u0000\u0000\u0d8d\u0d8e\u0007\u0011\u0000\u0000"+ + "\u0d8e\u0d8f\u0007\u0007\u0000\u0000\u0d8f\u0d90\u0007\u0017\u0000\u0000"+ + "\u0d90\u024e\u0001\u0000\u0000\u0000\u0d91\u0d92\u0007\u0018\u0000\u0000"+ + "\u0d92\u0d93\u0007\r\u0000\u0000\u0d93\u0d94\u0007\n\u0000\u0000\u0d94"+ + "\u0d95\u0007\u0018\u0000\u0000\u0d95\u0d96\u0007\u0005\u0000\u0000\u0d96"+ + "\u0d97\u0007\r\u0000\u0000\u0d97\u0d98\u0007\n\u0000\u0000\u0d98\u0250"+ + "\u0001\u0000\u0000\u0000\u0d99\u0d9a\u0007\u0018\u0000\u0000\u0d9a\u0d9b"+ + "\u0007\r\u0000\u0000\u0d9b\u0d9c\u0007\n\u0000\u0000\u0d9c\u0d9d\u0007"+ + "\u0018\u0000\u0000\u0d9d\u0d9e\u0007\u0005\u0000\u0000\u0d9e\u0d9f\u0007"+ + "\r\u0000\u0000\u0d9f\u0da0\u0007\n\u0000\u0000\u0da0\u0da1\u0007\f\u0000"+ + "\u0000\u0da1\u0252\u0001\u0000\u0000\u0000\u0da2\u0da3\u0007\u0018\u0000"+ + "\u0000\u0da3\u0da4\u0007\r\u0000\u0000\u0da4\u0da5\u0007\n\u0000\u0000"+ + "\u0da5\u0da6\u0007\t\u0000\u0000\u0da6\u0da7\u0007\n\u0000\u0000\u0da7"+ + "\u0da8\u0007\r\u0000\u0000\u0da8\u0da9\u0007\u001b\u0000\u0000\u0da9\u0daa"+ + "\u0007\n\u0000\u0000\u0daa\u0254\u0001\u0000\u0000\u0000\u0dab\u0dac\u0007"+ + "\u0018\u0000\u0000\u0dac\u0dad\u0007\r\u0000\u0000\u0dad\u0dae\u0007\u0011"+ + "\u0000\u0000\u0dae\u0daf\u0007\u0013\u0000\u0000\u0daf\u0db0\u0007\r\u0000"+ + "\u0000\u0db0\u0256\u0001\u0000\u0000\u0000\u0db1\u0db2\u0007\u0018\u0000"+ + "\u0000\u0db2\u0db3\u0007\r\u0000\u0000\u0db3\u0db4\u0007\u0011\u0000\u0000"+ + "\u0db4\u0db5\u0007\u001b\u0000\u0000\u0db5\u0db6\u0007\u0011\u0000\u0000"+ + "\u0db6\u0db7\u0007\u0006\u0000\u0000\u0db7\u0db8\u0007\n\u0000\u0000\u0db8"+ + "\u0db9\u0007\u0017\u0000\u0000\u0db9\u0dba\u0007\n\u0000\u0000\u0dba\u0dbb"+ + "\u0007\t\u0000\u0000\u0dbb\u0258\u0001\u0000\u0000\u0000\u0dbc\u0dbd\u0007"+ + "\u0018\u0000\u0000\u0dbd\u0dbe\u0007\r\u0000\u0000\u0dbe\u0dbf\u0007\u0013"+ + "\u0000\u0000\u0dbf\u0dc0\u0007\u000e\u0000\u0000\u0dc0\u0dc1\u0007\n\u0000"+ + "\u0000\u0dc1\u0dc2\u0007\f\u0000\u0000\u0dc2\u0dc3\u0007\u0016\u0000\u0000"+ + "\u0dc3\u0dc4\u0007\r\u0000\u0000\u0dc4\u0dc5\u0007\u0005\u0000\u0000\u0dc5"+ + "\u0dc6\u0007\u0006\u0000\u0000\u0dc6\u025a\u0001\u0000\u0000\u0000\u0dc7"+ + "\u0dc8\u0007\u0018\u0000\u0000\u0dc8\u0dc9\u0007\r\u0000\u0000\u0dc9\u0dca"+ + "\u0007\u0013\u0000\u0000\u0dca\u0dcb\u0007\u000e\u0000\u0000\u0dcb\u0dcc"+ + "\u0007\n\u0000\u0000\u0dcc\u0dcd\u0007\f\u0000\u0000\u0dcd\u0dce\u0007"+ + "\u0016\u0000\u0000\u0dce\u0dcf\u0007\r\u0000\u0000\u0dcf\u0dd0\u0007\n"+ + "\u0000\u0000\u0dd0\u025c\u0001\u0000\u0000\u0000\u0dd1\u0dd2\u0007\u0018"+ + "\u0000\u0000\u0dd2\u0dd3\u0007\r\u0000\u0000\u0dd3\u0dd4\u0007\u0013\u0000"+ + "\u0000\u0dd4\u0dd5\u0007\u0017\u0000\u0000\u0dd5\u0dd6\u0007\r\u0000\u0000"+ + "\u0dd6\u0dd7\u0007\u0005\u0000\u0000\u0dd7\u0dd8\u0007\u000f\u0000\u0000"+ + "\u0dd8\u025e\u0001\u0000\u0000\u0000\u0dd9\u0dda\u0007\u001d\u0000\u0000"+ + "\u0dda\u0ddb\u0007\u0016\u0000\u0000\u0ddb\u0ddc\u0007\u0013\u0000\u0000"+ + "\u0ddc\u0ddd\u0007\u0010\u0000\u0000\u0ddd\u0dde\u0007\n\u0000\u0000\u0dde"+ + "\u0260\u0001\u0000\u0000\u0000\u0ddf\u0de0\u0007\r\u0000\u0000\u0de0\u0de1"+ + "\u0007\u0005\u0000\u0000\u0de1\u0de2\u0007\u0007\u0000\u0000\u0de2\u0de3"+ + "\u0007\u0017\u0000\u0000\u0de3\u0de4\u0007\n\u0000\u0000\u0de4\u0262\u0001"+ "\u0000\u0000\u0000\u0de5\u0de6\u0007\r\u0000\u0000\u0de6\u0de7\u0007\n"+ - "\u0000\u0000\u0de7\u0de8\u0007\u000e\u0000\u0000\u0de8\u0de9\u0007\u0016"+ - "\u0000\u0000\u0de9\u0dea\u0007\r\u0000\u0000\u0dea\u0deb\u0007\t\u0000"+ - "\u0000\u0deb\u0dec\u0007\u0011\u0000\u0000\u0dec\u0ded\u0007\u001b\u0000"+ - "\u0000\u0ded\u0dee\u0007\n\u0000\u0000\u0dee\u0266\u0001\u0000\u0000\u0000"+ - "\u0def\u0df0\u0007\r\u0000\u0000\u0df0\u0df1\u0007\n\u0000\u0000\u0df1"+ - "\u0df2\u0007\u0019\u0000\u0000\u0df2\u0268\u0001\u0000\u0000\u0000\u0df3"+ - "\u0df4\u0007\r\u0000\u0000\u0df4\u0df5\u0007\n\u0000\u0000\u0df5\u0df6"+ - "\u0007\u0019\u0000\u0000\u0df6\u0df7\u0007\r\u0000\u0000\u0df7\u0df8\u0007"+ - "\n\u0000\u0000\u0df8\u0df9\u0007\t\u0000\u0000\u0df9\u0dfa\u0007\u0014"+ - "\u0000\u0000\u0dfa\u026a\u0001\u0000\u0000\u0000\u0dfb\u0dfc\u0007\r\u0000"+ - "\u0000\u0dfc\u0dfd\u0007\n\u0000\u0000\u0dfd\u0dfe\u0007\u0011\u0000\u0000"+ - "\u0dfe\u0dff\u0007\u0007\u0000\u0000\u0dff\u0e00\u0007\f\u0000\u0000\u0e00"+ - "\u0e01\u0007\n\u0000\u0000\u0e01\u0e02\u0007\u001a\u0000\u0000\u0e02\u026c"+ - "\u0001\u0000\u0000\u0000\u0e03\u0e04\u0007\r\u0000\u0000\u0e04\u0e05\u0007"+ - "\n\u0000\u0000\u0e05\u0e06\u0007\u0006\u0000\u0000\u0e06\u0e07\u0007\u0005"+ - "\u0000\u0000\u0e07\u0e08\u0007\u0010\u0000\u0000\u0e08\u0e09\u0007\u0011"+ - "\u0000\u0000\u0e09\u0e0a\u0007\u001b\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\u0006\u0000\u0000\u0e0f"+ - "\u0e10\u0007\n\u0000\u0000\u0e10\u0e11\u0007\u0005\u0000\u0000\u0e11\u0e12"+ - "\u0007\t\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\u0007\u0000\u0000\u0e17\u0e18\u0007\u0005"+ - "\u0000\u0000\u0e18\u0e19\u0007\u000f\u0000\u0000\u0e19\u0e1a\u0007\n\u0000"+ - "\u0000\u0e1a\u0272\u0001\u0000\u0000\u0000\u0e1b\u0e1c\u0007\r\u0000\u0000"+ - "\u0e1c\u0e1d\u0007\n\u0000\u0000\u0e1d\u0e1e\u0007\u0018\u0000\u0000\u0e1e"+ - "\u0e1f\u0007\n\u0000\u0000\u0e1f\u0e20\u0007\u0005\u0000\u0000\u0e20\u0e21"+ - "\u0007\u0010\u0000\u0000\u0e21\u0e22\u0007\u0005\u0000\u0000\u0e22\u0e23"+ - "\u0007\u0012\u0000\u0000\u0e23\u0e24\u0007\u0006\u0000\u0000\u0e24\u0e25"+ - "\u0007\n\u0000\u0000\u0e25\u0274\u0001\u0000\u0000\u0000\u0e26\u0e27\u0007"+ - "\r\u0000\u0000\u0e27\u0e28\u0007\n\u0000\u0000\u0e28\u0e29\u0007\u0018"+ - "\u0000\u0000\u0e29\u0e2a\u0007\u0006\u0000\u0000\u0e2a\u0e2b\u0007\u0005"+ - "\u0000\u0000\u0e2b\u0e2c\u0007\u000e\u0000\u0000\u0e2c\u0e2d\u0007\n\u0000"+ - "\u0000\u0e2d\u0276\u0001\u0000\u0000\u0000\u0e2e\u0e2f\u0007\r\u0000\u0000"+ - "\u0e2f\u0e30\u0007\n\u0000\u0000\u0e30\u0e31\u0007\u0018\u0000\u0000\u0e31"+ - "\u0e32\u0007\u0006\u0000\u0000\u0e32\u0e33\u0007\u0011\u0000\u0000\u0e33"+ - "\u0e34\u0007\u000e\u0000\u0000\u0e34\u0e35\u0007\u0005\u0000\u0000\u0e35"+ - "\u0278\u0001\u0000\u0000\u0000\u0e36\u0e37\u0007\r\u0000\u0000\u0e37\u0e38"+ - "\u0007\n\u0000\u0000\u0e38\u0e39\u0007\t\u0000\u0000\u0e39\u0e3a\u0007"+ - "\n\u0000\u0000\u0e3a\u0e3b\u0007\u0010\u0000\u0000\u0e3b\u027a\u0001\u0000"+ - "\u0000\u0000\u0e3c\u0e3d\u0007\r\u0000\u0000\u0e3d\u0e3e\u0007\n\u0000"+ - "\u0000\u0e3e\u0e3f\u0007\t\u0000\u0000\u0e3f\u0e40\u0007\u0010\u0000\u0000"+ - "\u0e40\u0e41\u0007\u0005\u0000\u0000\u0e41\u0e42\u0007\r\u0000\u0000\u0e42"+ - "\u0e43\u0007\u0010\u0000\u0000\u0e43\u027c\u0001\u0000\u0000\u0000\u0e44"+ - "\u0e45\u0007\r\u0000\u0000\u0e45\u0e46\u0007\n\u0000\u0000\u0e46\u0e47"+ - "\u0007\t\u0000\u0000\u0e47\u0e48\u0007\u0010\u0000\u0000\u0e48\u0e49\u0007"+ - "\r\u0000\u0000\u0e49\u0e4a\u0007\u0011\u0000\u0000\u0e4a\u0e4b\u0007\u000e"+ - "\u0000\u0000\u0e4b\u0e4c\u0007\u0010\u0000\u0000\u0e4c\u027e\u0001\u0000"+ - "\u0000\u0000\u0e4d\u0e4e\u0007\r\u0000\u0000\u0e4e\u0e4f\u0007\n\u0000"+ - "\u0000\u0e4f\u0e50\u0007\u0010\u0000\u0000\u0e50\u0e51\u0007\u0016\u0000"+ - "\u0000\u0e51\u0e52\u0007\r\u0000\u0000\u0e52\u0e53\u0007\u0007\u0000\u0000"+ - "\u0e53\u0e54\u0007\t\u0000\u0000\u0e54\u0280\u0001\u0000\u0000\u0000\u0e55"+ - "\u0e56\u0007\r\u0000\u0000\u0e56\u0e57\u0007\n\u0000\u0000\u0e57\u0e58"+ - "\u0007\u001b\u0000\u0000\u0e58\u0e59\u0007\u0013\u0000\u0000\u0e59\u0e5a"+ - "\u0007\u0015\u0000\u0000\u0e5a\u0e5b\u0007\n\u0000\u0000\u0e5b\u0282\u0001"+ - "\u0000\u0000\u0000\u0e5c\u0e5d\u0007\r\u0000\u0000\u0e5d\u0e5e\u0007\u0013"+ - "\u0000\u0000\u0e5e\u0e5f\u0007\u0006\u0000\u0000\u0e5f\u0e60\u0007\n\u0000"+ - "\u0000\u0e60\u0284\u0001\u0000\u0000\u0000\u0e61\u0e62\u0007\r\u0000\u0000"+ - "\u0e62\u0e63\u0007\u0013\u0000\u0000\u0e63\u0e64\u0007\u0006\u0000\u0000"+ - "\u0e64\u0e65\u0007\u0006\u0000\u0000\u0e65\u0e66\u0007\u0012\u0000\u0000"+ - "\u0e66\u0e67\u0007\u0005\u0000\u0000\u0e67\u0e68\u0007\u000e\u0000\u0000"+ - "\u0e68\u0e69\u0007\u0015\u0000\u0000\u0e69\u0286\u0001\u0000\u0000\u0000"+ - "\u0e6a\u0e6b\u0007\r\u0000\u0000\u0e6b\u0e6c\u0007\u0013\u0000\u0000\u0e6c"+ - "\u0e6d\u0007\u001c\u0000\u0000\u0e6d\u0e6e\u0007\t\u0000\u0000\u0e6e\u0288"+ - "\u0001\u0000\u0000\u0000\u0e6f\u0e70\u0007\r\u0000\u0000\u0e70\u0e71\u0007"+ - "\u0016\u0000\u0000\u0e71\u0e72\u0007\u0006\u0000\u0000\u0e72\u0e73\u0007"+ - "\n\u0000\u0000\u0e73\u028a\u0001\u0000\u0000\u0000\u0e74\u0e75\u0007\t"+ - "\u0000\u0000\u0e75\u0e76\u0007\u0005\u0000\u0000\u0e76\u0e77\u0007\u001b"+ - "\u0000\u0000\u0e77\u0e78\u0007\n\u0000\u0000\u0e78\u0e79\u0007\u0018\u0000"+ - "\u0000\u0e79\u0e7a\u0007\u0013\u0000\u0000\u0e7a\u0e7b\u0007\u0011\u0000"+ - "\u0000\u0e7b\u0e7c\u0007\u0007\u0000\u0000\u0e7c\u0e7d\u0007\u0010\u0000"+ - "\u0000\u0e7d\u028c\u0001\u0000\u0000\u0000\u0e7e\u0e7f\u0007\t\u0000\u0000"+ - "\u0e7f\u0e80\u0007\u000e\u0000\u0000\u0e80\u0e81\u0007\u0014\u0000\u0000"+ - "\u0e81\u0e82\u0007\n\u0000\u0000\u0e82\u0e83\u0007\u000f\u0000\u0000\u0e83"+ - "\u0e84\u0007\u0005\u0000\u0000\u0e84\u028e\u0001\u0000\u0000\u0000\u0e85"+ - "\u0e86\u0007\t\u0000\u0000\u0e86\u0e87\u0007\u000e\u0000\u0000\u0e87\u0e88"+ - "\u0007\r\u0000\u0000\u0e88\u0e89\u0007\u0013\u0000\u0000\u0e89\u0e8a\u0007"+ - "\u0006\u0000\u0000\u0e8a\u0e8b\u0007\u0006\u0000\u0000\u0e8b\u0290\u0001"+ - "\u0000\u0000\u0000\u0e8c\u0e8d\u0007\t\u0000\u0000\u0e8d\u0e8e\u0007\n"+ - "\u0000\u0000\u0e8e\u0e8f\u0007\u0005\u0000\u0000\u0e8f\u0e90\u0007\r\u0000"+ - "\u0000\u0e90\u0e91\u0007\u000e\u0000\u0000\u0e91\u0e92\u0007\u0014\u0000"+ - "\u0000\u0e92\u0292\u0001\u0000\u0000\u0000\u0e93\u0e94\u0007\t\u0000\u0000"+ - "\u0e94\u0e95\u0007\n\u0000\u0000\u0e95\u0e96\u0007\u000e\u0000\u0000\u0e96"+ - "\u0e97\u0007\u0013\u0000\u0000\u0e97\u0e98\u0007\u0007\u0000\u0000\u0e98"+ - "\u0e99\u0007\f\u0000\u0000\u0e99\u0294\u0001\u0000\u0000\u0000\u0e9a\u0e9b"+ - "\u0007\t\u0000\u0000\u0e9b\u0e9c\u0007\n\u0000\u0000\u0e9c\u0e9d\u0007"+ - "\u000e\u0000\u0000\u0e9d\u0e9e\u0007\u0016\u0000\u0000\u0e9e\u0e9f\u0007"+ - "\r\u0000\u0000\u0e9f\u0ea0\u0007\u0011\u0000\u0000\u0ea0\u0ea1\u0007\u0010"+ - "\u0000\u0000\u0ea1\u0ea2\u0007\b\u0000\u0000\u0ea2\u0296\u0001\u0000\u0000"+ - "\u0000\u0ea3\u0ea4\u0007\t\u0000\u0000\u0ea4\u0ea5\u0007\n\u0000\u0000"+ - "\u0ea5\u0ea6\u0007\u001d\u0000\u0000\u0ea6\u0ea7\u0007\u0016\u0000\u0000"+ - "\u0ea7\u0ea8\u0007\n\u0000\u0000\u0ea8\u0ea9\u0007\u0007\u0000\u0000\u0ea9"+ - "\u0eaa\u0007\u000e\u0000\u0000\u0eaa\u0eab\u0007\n\u0000\u0000\u0eab\u0298"+ - "\u0001\u0000\u0000\u0000\u0eac\u0ead\u0007\t\u0000\u0000\u0ead\u0eae\u0007"+ - "\n\u0000\u0000\u0eae\u0eaf\u0007\u001d\u0000\u0000\u0eaf\u0eb0\u0007\u0016"+ - "\u0000\u0000\u0eb0\u0eb1\u0007\n\u0000\u0000\u0eb1\u0eb2\u0007\u0007\u0000"+ - "\u0000\u0eb2\u0eb3\u0007\u000e\u0000\u0000\u0eb3\u0eb4\u0007\n\u0000\u0000"+ - "\u0eb4\u0eb5\u0007\t\u0000\u0000\u0eb5\u029a\u0001\u0000\u0000\u0000\u0eb6"+ - "\u0eb7\u0007\t\u0000\u0000\u0eb7\u0eb8\u0007\n\u0000\u0000\u0eb8\u0eb9"+ - "\u0007\r\u0000\u0000\u0eb9\u0eba\u0007\u0011\u0000\u0000\u0eba\u0ebb\u0007"+ - "\u0005\u0000\u0000\u0ebb\u0ebc\u0007\u0006\u0000\u0000\u0ebc\u0ebd\u0007"+ - "\u0011\u0000\u0000\u0ebd\u0ebe\u0007\u000b\u0000\u0000\u0ebe\u0ebf\u0007"+ - "\u0005\u0000\u0000\u0ebf\u0ec0\u0007\u0012\u0000\u0000\u0ec0\u0ec1\u0007"+ - "\u0006\u0000\u0000\u0ec1\u0ec2\u0007\n\u0000\u0000\u0ec2\u029c\u0001\u0000"+ - "\u0000\u0000\u0ec3\u0ec4\u0007\t\u0000\u0000\u0ec4\u0ec5\u0007\n\u0000"+ - "\u0000\u0ec5\u0ec6\u0007\r\u0000\u0000\u0ec6\u0ec7\u0007\u001b\u0000\u0000"+ - "\u0ec7\u0ec8\u0007\n\u0000\u0000\u0ec8\u0ec9\u0007\r\u0000\u0000\u0ec9"+ - "\u029e\u0001\u0000\u0000\u0000\u0eca\u0ecb\u0007\t\u0000\u0000\u0ecb\u0ecc"+ - "\u0007\n\u0000\u0000\u0ecc\u0ecd\u0007\t\u0000\u0000\u0ecd\u0ece\u0007"+ - "\t\u0000\u0000\u0ece\u0ecf\u0007\u0011\u0000\u0000\u0ecf\u0ed0\u0007\u0013"+ - "\u0000\u0000\u0ed0\u0ed1\u0007\u0007\u0000\u0000\u0ed1\u02a0\u0001\u0000"+ - "\u0000\u0000\u0ed2\u0ed3\u0007\t\u0000\u0000\u0ed3\u0ed4\u0007\n\u0000"+ - "\u0000\u0ed4\u0ed5\u0007\u0010\u0000\u0000\u0ed5\u02a2\u0001\u0000\u0000"+ - "\u0000\u0ed6\u0ed7\u0007\t\u0000\u0000\u0ed7\u0ed8\u0007\u0014\u0000\u0000"+ - "\u0ed8\u0ed9\u0007\u0005\u0000\u0000\u0ed9\u0eda\u0007\r\u0000\u0000\u0eda"+ - "\u0edb\u0007\n\u0000\u0000\u0edb\u02a4\u0001\u0000\u0000\u0000\u0edc\u0edd"+ - "\u0007\t\u0000\u0000\u0edd\u0ede\u0007\u0014\u0000\u0000\u0ede\u0edf\u0007"+ - "\u0013\u0000\u0000\u0edf\u0ee0\u0007\u001c\u0000\u0000\u0ee0\u02a6\u0001"+ - "\u0000\u0000\u0000\u0ee1\u0ee2\u0007\t\u0000\u0000\u0ee2\u0ee3\u0007\u0011"+ - "\u0000\u0000\u0ee3\u0ee4\u0007\u000f\u0000\u0000\u0ee4\u0ee5\u0007\u0018"+ - "\u0000\u0000\u0ee5\u0ee6\u0007\u0006\u0000\u0000\u0ee6\u0ee7\u0007\n\u0000"+ - "\u0000\u0ee7\u02a8\u0001\u0000\u0000\u0000\u0ee8\u0ee9\u0007\t\u0000\u0000"+ - "\u0ee9\u0eea\u0007\u0007\u0000\u0000\u0eea\u0eeb\u0007\u0005\u0000\u0000"+ - "\u0eeb\u0eec\u0007\u0018\u0000\u0000\u0eec\u0eed\u0007\t\u0000\u0000\u0eed"+ - "\u0eee\u0007\u0014\u0000\u0000\u0eee\u0eef\u0007\u0013\u0000\u0000\u0eef"+ - "\u0ef0\u0007\u0010\u0000\u0000\u0ef0\u02aa\u0001\u0000\u0000\u0000\u0ef1"+ - "\u0ef2\u0007\t\u0000\u0000\u0ef2\u0ef3\u0007\u0010\u0000\u0000\u0ef3\u0ef4"+ - "\u0007\u0005\u0000\u0000\u0ef4\u0ef5\u0007\u0012\u0000\u0000\u0ef5\u0ef6"+ - "\u0007\u0006\u0000\u0000\u0ef6\u0ef7\u0007\n\u0000\u0000\u0ef7\u02ac\u0001"+ - "\u0000\u0000\u0000\u0ef8\u0ef9\u0007\t\u0000\u0000\u0ef9\u0efa\u0007\u0010"+ - "\u0000\u0000\u0efa\u0efb\u0007\u0005\u0000\u0000\u0efb\u0efc\u0007\u0007"+ - "\u0000\u0000\u0efc\u0efd\u0007\f\u0000\u0000\u0efd\u0efe\u0007\u0005\u0000"+ - "\u0000\u0efe\u0eff\u0007\u0006\u0000\u0000\u0eff\u0f00\u0007\u0013\u0000"+ - "\u0000\u0f00\u0f01\u0007\u0007\u0000\u0000\u0f01\u0f02\u0007\n\u0000\u0000"+ - "\u0f02\u02ae\u0001\u0000\u0000\u0000\u0f03\u0f04\u0007\t\u0000\u0000\u0f04"+ - "\u0f05\u0007\u0010\u0000\u0000\u0f05\u0f06\u0007\u0005\u0000\u0000\u0f06"+ - "\u0f07\u0007\r\u0000\u0000\u0f07\u0f08\u0007\u0010\u0000\u0000\u0f08\u02b0"+ - "\u0001\u0000\u0000\u0000\u0f09\u0f0a\u0007\t\u0000\u0000\u0f0a\u0f0b\u0007"+ - "\u0010\u0000\u0000\u0f0b\u0f0c\u0007\u0005\u0000\u0000\u0f0c\u0f0d\u0007"+ - "\u0010\u0000\u0000\u0f0d\u0f0e\u0007\n\u0000\u0000\u0f0e\u0f0f\u0007\u000f"+ - "\u0000\u0000\u0f0f\u0f10\u0007\n\u0000\u0000\u0f10\u0f11\u0007\u0007\u0000"+ - "\u0000\u0f11\u0f12\u0007\u0010\u0000\u0000\u0f12\u02b2\u0001\u0000\u0000"+ - "\u0000\u0f13\u0f14\u0007\t\u0000\u0000\u0f14\u0f15\u0007\u0010\u0000\u0000"+ - "\u0f15\u0f16\u0007\u0005\u0000\u0000\u0f16\u0f17\u0007\u0010\u0000\u0000"+ - "\u0f17\u0f18\u0007\u0011\u0000\u0000\u0f18\u0f19\u0007\t\u0000\u0000\u0f19"+ - "\u0f1a\u0007\u0010\u0000\u0000\u0f1a\u0f1b\u0007\u0011\u0000\u0000\u0f1b"+ - "\u0f1c\u0007\u000e\u0000\u0000\u0f1c\u0f1d\u0007\t\u0000\u0000\u0f1d\u02b4"+ - "\u0001\u0000\u0000\u0000\u0f1e\u0f1f\u0007\t\u0000\u0000\u0f1f\u0f20\u0007"+ - "\u0010\u0000\u0000\u0f20\u0f21\u0007\f\u0000\u0000\u0f21\u0f22\u0007\u0011"+ - "\u0000\u0000\u0f22\u0f23\u0007\u0007\u0000\u0000\u0f23\u02b6\u0001\u0000"+ - "\u0000\u0000\u0f24\u0f25\u0007\t\u0000\u0000\u0f25\u0f26\u0007\u0010\u0000"+ - "\u0000\u0f26\u0f27\u0007\f\u0000\u0000\u0f27\u0f28\u0007\u0013\u0000\u0000"+ - "\u0f28\u0f29\u0007\u0016\u0000\u0000\u0f29\u0f2a\u0007\u0010\u0000\u0000"+ - "\u0f2a\u02b8\u0001\u0000\u0000\u0000\u0f2b\u0f2c\u0007\t\u0000\u0000\u0f2c"+ - "\u0f2d\u0007\u0010\u0000\u0000\u0f2d\u0f2e\u0007\u0013\u0000\u0000\u0f2e"+ - "\u0f2f\u0007\r\u0000\u0000\u0f2f\u0f30\u0007\u0005\u0000\u0000\u0f30\u0f31"+ - "\u0007\u0017\u0000\u0000\u0f31\u0f32\u0007\n\u0000\u0000\u0f32\u02ba\u0001"+ - "\u0000\u0000\u0000\u0f33\u0f34\u0007\t\u0000\u0000\u0f34\u0f35\u0007\u0010"+ - "\u0000\u0000\u0f35\u0f36\u0007\r\u0000\u0000\u0f36\u0f37\u0007\u0011\u0000"+ - "\u0000\u0f37\u0f38\u0007\u000e\u0000\u0000\u0f38\u0f39\u0007\u0010\u0000"+ - "\u0000\u0f39\u02bc\u0001\u0000\u0000\u0000\u0f3a\u0f3b\u0007\t\u0000\u0000"+ - "\u0f3b\u0f3c\u0007\u0010\u0000\u0000\u0f3c\u0f3d\u0007\r\u0000\u0000\u0f3d"+ - "\u0f3e\u0007\u0011\u0000\u0000\u0f3e\u0f3f\u0007\u0018\u0000\u0000\u0f3f"+ - "\u02be\u0001\u0000\u0000\u0000\u0f40\u0f41\u0007\t\u0000\u0000\u0f41\u0f42"+ - "\u0007\b\u0000\u0000\u0f42\u0f43\u0007\t\u0000\u0000\u0f43\u0f44\u0007"+ - "\u0011\u0000\u0000\u0f44\u0f45\u0007\f\u0000\u0000\u0f45\u02c0\u0001\u0000"+ - "\u0000\u0000\u0f46\u0f47\u0007\t\u0000\u0000\u0f47\u0f48\u0007\b\u0000"+ - "\u0000\u0f48\u0f49\u0007\t\u0000\u0000\u0f49\u0f4a\u0007\u0010\u0000\u0000"+ - "\u0f4a\u0f4b\u0007\n\u0000\u0000\u0f4b\u0f4c\u0007\u000f\u0000\u0000\u0f4c"+ - "\u02c2\u0001\u0000\u0000\u0000\u0f4d\u0f4e\u0007\u0010\u0000\u0000\u0f4e"+ - "\u0f4f\u0007\u0005\u0000\u0000\u0f4f\u0f50\u0007\u0012\u0000\u0000\u0f50"+ - "\u0f51\u0007\u0006\u0000\u0000\u0f51\u0f52\u0007\n\u0000\u0000\u0f52\u0f53"+ - "\u0007\t\u0000\u0000\u0f53\u02c4\u0001\u0000\u0000\u0000\u0f54\u0f55\u0007"+ - "\u0010\u0000\u0000\u0f55\u0f56\u0007\u0005\u0000\u0000\u0f56\u0f57\u0007"+ - "\u0012\u0000\u0000\u0f57\u0f58\u0007\u0006\u0000\u0000\u0f58\u0f59\u0007"+ - "\n\u0000\u0000\u0f59\u0f5a\u0007\t\u0000\u0000\u0f5a\u0f5b\u0007\u0018"+ - "\u0000\u0000\u0f5b\u0f5c\u0007\u0005\u0000\u0000\u0f5c\u0f5d\u0007\u000e"+ - "\u0000\u0000\u0f5d\u0f5e\u0007\n\u0000\u0000\u0f5e\u02c6\u0001\u0000\u0000"+ - "\u0000\u0f5f\u0f60\u0007\u0010\u0000\u0000\u0f60\u0f61\u0007\n\u0000\u0000"+ - "\u0f61\u0f62\u0007\u000f\u0000\u0000\u0f62\u0f63\u0007\u0018\u0000\u0000"+ - "\u0f63\u02c8\u0001\u0000\u0000\u0000\u0f64\u0f65\u0007\u0010\u0000\u0000"+ - "\u0f65\u0f66\u0007\n\u0000\u0000\u0f66\u0f67\u0007\u000f\u0000\u0000\u0f67"+ - "\u0f68\u0007\u0018\u0000\u0000\u0f68\u0f69\u0007\u0006\u0000\u0000\u0f69"+ - "\u0f6a\u0007\u0005\u0000\u0000\u0f6a\u0f6b\u0007\u0010\u0000\u0000\u0f6b"+ - "\u0f6c\u0007\n\u0000\u0000\u0f6c\u02ca\u0001\u0000\u0000\u0000\u0f6d\u0f6e"+ - "\u0007\u0010\u0000\u0000\u0f6e\u0f6f\u0007\n\u0000\u0000\u0f6f\u0f70\u0007"+ - "\u000f\u0000\u0000\u0f70\u0f71\u0007\u0018\u0000\u0000\u0f71\u0f72\u0007"+ - "\u0013\u0000\u0000\u0f72\u0f73\u0007\r\u0000\u0000\u0f73\u0f74\u0007\u0005"+ - "\u0000\u0000\u0f74\u0f75\u0007\r\u0000\u0000\u0f75\u0f76\u0007\b\u0000"+ - "\u0000\u0f76\u02cc\u0001\u0000\u0000\u0000\u0f77\u0f78\u0007\u0010\u0000"+ - "\u0000\u0f78\u0f79\u0007\n\u0000\u0000\u0f79\u0f7a\u0007\u001a\u0000\u0000"+ - "\u0f7a\u0f7b\u0007\u0010\u0000\u0000\u0f7b\u02ce\u0001\u0000\u0000\u0000"+ - "\u0f7c\u0f7d\u0007\u0010\u0000\u0000\u0f7d\u0f7e\u0007\r\u0000\u0000\u0f7e"+ - "\u0f7f\u0007\u0005\u0000\u0000\u0f7f\u0f80\u0007\u0007\u0000\u0000\u0f80"+ - "\u0f81\u0007\t\u0000\u0000\u0f81\u0f82\u0007\u0005\u0000\u0000\u0f82\u0f83"+ - "\u0007\u000e\u0000\u0000\u0f83\u0f84\u0007\u0010\u0000\u0000\u0f84\u0f85"+ - "\u0007\u0011\u0000\u0000\u0f85\u0f86\u0007\u0013\u0000\u0000\u0f86\u0f87"+ - "\u0007\u0007\u0000\u0000\u0f87\u02d0\u0001\u0000\u0000\u0000\u0f88\u0f89"+ - "\u0007\u0010\u0000\u0000\u0f89\u0f8a\u0007\r\u0000\u0000\u0f8a\u0f8b\u0007"+ - "\u0011\u0000\u0000\u0f8b\u0f8c\u0007\u0017\u0000\u0000\u0f8c\u0f8d\u0007"+ - "\u0017\u0000\u0000\u0f8d\u0f8e\u0007\n\u0000\u0000\u0f8e\u0f8f\u0007\r"+ - "\u0000\u0000\u0f8f\u02d2\u0001\u0000\u0000\u0000\u0f90\u0f91\u0007\u0010"+ - "\u0000\u0000\u0f91\u0f92\u0007\r\u0000\u0000\u0f92\u0f93\u0007\u0016\u0000"+ - "\u0000\u0f93\u0f94\u0007\u0007\u0000\u0000\u0f94\u0f95\u0007\u000e\u0000"+ - "\u0000\u0f95\u0f96\u0007\u0005\u0000\u0000\u0f96\u0f97\u0007\u0010\u0000"+ - "\u0000\u0f97\u0f98\u0007\n\u0000\u0000\u0f98\u02d4\u0001\u0000\u0000\u0000"+ - "\u0f99\u0f9a\u0007\u0010\u0000\u0000\u0f9a\u0f9b\u0007\r\u0000\u0000\u0f9b"+ - "\u0f9c\u0007\u0016\u0000\u0000\u0f9c\u0f9d\u0007\t\u0000\u0000\u0f9d\u0f9e"+ - "\u0007\u0010\u0000\u0000\u0f9e\u0f9f\u0007\n\u0000\u0000\u0f9f\u0fa0\u0007"+ - "\f\u0000\u0000\u0fa0\u02d6\u0001\u0000\u0000\u0000\u0fa1\u0fa2\u0007\u0010"+ - "\u0000\u0000\u0fa2\u0fa3\u0007\b\u0000\u0000\u0fa3\u0fa4\u0007\u0018\u0000"+ - "\u0000\u0fa4\u0fa5\u0007\n\u0000\u0000\u0fa5\u02d8\u0001\u0000\u0000\u0000"+ - "\u0fa6\u0fa7\u0007\u0010\u0000\u0000\u0fa7\u0fa8\u0007\b\u0000\u0000\u0fa8"+ - "\u0fa9\u0007\u0018\u0000\u0000\u0fa9\u0faa\u0007\n\u0000\u0000\u0faa\u0fab"+ - "\u0007\t\u0000\u0000\u0fab\u02da\u0001\u0000\u0000\u0000\u0fac\u0fad\u0007"+ - "\u0016\u0000\u0000\u0fad\u0fae\u0007\u0007\u0000\u0000\u0fae\u0faf\u0007"+ - "\u0012\u0000\u0000\u0faf\u0fb0\u0007\u0013\u0000\u0000\u0fb0\u0fb1\u0007"+ - "\u0016\u0000\u0000\u0fb1\u0fb2\u0007\u0007\u0000\u0000\u0fb2\u0fb3\u0007"+ - "\f\u0000\u0000\u0fb3\u0fb4\u0007\n\u0000\u0000\u0fb4\u0fb5\u0007\f\u0000"+ - "\u0000\u0fb5\u02dc\u0001\u0000\u0000\u0000\u0fb6\u0fb7\u0007\u0016\u0000"+ - "\u0000\u0fb7\u0fb8\u0007\u0007\u0000\u0000\u0fb8\u0fb9\u0007\u000e\u0000"+ - "\u0000\u0fb9\u0fba\u0007\u0013\u0000\u0000\u0fba\u0fbb\u0007\u000f\u0000"+ - "\u0000\u0fbb\u0fbc\u0007\u000f\u0000\u0000\u0fbc\u0fbd\u0007\u0011\u0000"+ - "\u0000\u0fbd\u0fbe\u0007\u0010\u0000\u0000\u0fbe\u0fbf\u0007\u0010\u0000"+ - "\u0000\u0fbf\u0fc0\u0007\n\u0000\u0000\u0fc0\u0fc1\u0007\f\u0000\u0000"+ - "\u0fc1\u02de\u0001\u0000\u0000\u0000\u0fc2\u0fc3\u0007\u0016\u0000\u0000"+ - "\u0fc3\u0fc4\u0007\u0007\u0000\u0000\u0fc4\u0fc5\u0007\n\u0000\u0000\u0fc5"+ - "\u0fc6\u0007\u0007\u0000\u0000\u0fc6\u0fc7\u0007\u000e\u0000\u0000\u0fc7"+ - "\u0fc8\u0007\r\u0000\u0000\u0fc8\u0fc9\u0007\b\u0000\u0000\u0fc9\u0fca"+ - "\u0007\u0018\u0000\u0000\u0fca\u0fcb\u0007\u0010\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\u0015\u0000\u0000\u0fd1\u0fd2\u0007"+ - "\u0007\u0000\u0000\u0fd2\u0fd3\u0007\u0013\u0000\u0000\u0fd3\u0fd4\u0007"+ - "\u001c\u0000\u0000\u0fd4\u0fd5\u0007\u0007\u0000\u0000\u0fd5\u02e2\u0001"+ - "\u0000\u0000\u0000\u0fd6\u0fd7\u0007\u0016\u0000\u0000\u0fd7\u0fd8\u0007"+ - "\u0007\u0000\u0000\u0fd8\u0fd9\u0007\u0006\u0000\u0000\u0fd9\u0fda\u0007"+ - "\u0011\u0000\u0000\u0fda\u0fdb\u0007\t\u0000\u0000\u0fdb\u0fdc\u0007\u0010"+ - "\u0000\u0000\u0fdc\u0fdd\u0007\n\u0000\u0000\u0fdd\u0fde\u0007\u0007\u0000"+ - "\u0000\u0fde\u02e4\u0001\u0000\u0000\u0000\u0fdf\u0fe0\u0007\u0016\u0000"+ - "\u0000\u0fe0\u0fe1\u0007\u0007\u0000\u0000\u0fe1\u0fe2\u0007\u0006\u0000"+ - "\u0000\u0fe2\u0fe3\u0007\u0013\u0000\u0000\u0fe3\u0fe4\u0007\u0017\u0000"+ - "\u0000\u0fe4\u0fe5\u0007\u0017\u0000\u0000\u0fe5\u0fe6\u0007\n\u0000\u0000"+ - "\u0fe6\u0fe7\u0007\f\u0000\u0000\u0fe7\u02e6\u0001\u0000\u0000\u0000\u0fe8"+ - "\u0fe9\u0007\u0016\u0000\u0000\u0fe9\u0fea\u0007\u0007\u0000\u0000\u0fea"+ - "\u0feb\u0007\u0010\u0000\u0000\u0feb\u0fec\u0007\u0011\u0000\u0000\u0fec"+ - "\u0fed\u0007\u0006\u0000\u0000\u0fed\u02e8\u0001\u0000\u0000\u0000\u0fee"+ - "\u0fef\u0007\u0016\u0000\u0000\u0fef\u0ff0\u0007\u0018\u0000\u0000\u0ff0"+ - "\u0ff1\u0007\f\u0000\u0000\u0ff1\u0ff2\u0007\u0005\u0000\u0000\u0ff2\u0ff3"+ - "\u0007\u0010\u0000\u0000\u0ff3\u0ff4\u0007\n\u0000\u0000\u0ff4\u02ea\u0001"+ - "\u0000\u0000\u0000\u0ff5\u0ff6\u0007\u001b\u0000\u0000\u0ff6\u0ff7\u0007"+ - "\u0005\u0000\u0000\u0ff7\u0ff8\u0007\u000e\u0000\u0000\u0ff8\u0ff9\u0007"+ - "\u0016\u0000\u0000\u0ff9\u0ffa\u0007\u0016\u0000\u0000\u0ffa\u0ffb\u0007"+ - "\u000f\u0000\u0000\u0ffb\u02ec\u0001\u0000\u0000\u0000\u0ffc\u0ffd\u0007"+ - "\u001b\u0000\u0000\u0ffd\u0ffe\u0007\u0005\u0000\u0000\u0ffe\u0fff\u0007"+ - "\u0006\u0000\u0000\u0fff\u1000\u0007\u0011\u0000\u0000\u1000\u1001\u0007"+ - "\f\u0000\u0000\u1001\u02ee\u0001\u0000\u0000\u0000\u1002\u1003\u0007\u001b"+ - "\u0000\u0000\u1003\u1004\u0007\u0005\u0000\u0000\u1004\u1005\u0007\u0006"+ - "\u0000\u0000\u1005\u1006\u0007\u0011\u0000\u0000\u1006\u1007\u0007\f\u0000"+ - "\u0000\u1007\u1008\u0007\u0005\u0000\u0000\u1008\u1009\u0007\u0010\u0000"+ - "\u0000\u1009\u100a\u0007\n\u0000\u0000\u100a\u02f0\u0001\u0000\u0000\u0000"+ - "\u100b\u100c\u0007\u001b\u0000\u0000\u100c\u100d\u0007\u0005\u0000\u0000"+ - "\u100d\u100e\u0007\u0006\u0000\u0000\u100e\u100f\u0007\u0011\u0000\u0000"+ - "\u100f\u1010\u0007\f\u0000\u0000\u1010\u1011\u0007\u0005\u0000\u0000\u1011"+ - "\u1012\u0007\u0010\u0000\u0000\u1012\u1013\u0007\u0013\u0000\u0000\u1013"+ - "\u1014\u0007\r\u0000\u0000\u1014\u02f2\u0001\u0000\u0000\u0000\u1015\u1016"+ - "\u0007\u001b\u0000\u0000\u1016\u1017\u0007\u0005\u0000\u0000\u1017\u1018"+ - "\u0007\r\u0000\u0000\u1018\u1019\u0007\b\u0000\u0000\u1019\u101a\u0007"+ - "\u0011\u0000\u0000\u101a\u101b\u0007\u0007\u0000\u0000\u101b\u101c\u0007"+ - "\u0017\u0000\u0000\u101c\u02f4\u0001\u0000\u0000\u0000\u101d\u101e\u0007"+ - "\u001b\u0000\u0000\u101e\u101f\u0007\n\u0000\u0000\u101f\u1020\u0007\r"+ - "\u0000\u0000\u1020\u1021\u0007\t\u0000\u0000\u1021\u1022\u0007\u0011\u0000"+ - "\u0000\u1022\u1023\u0007\u0013\u0000\u0000\u1023\u1024\u0007\u0007\u0000"+ - "\u0000\u1024\u02f6\u0001\u0000\u0000\u0000\u1025\u1026\u0007\u001b\u0000"+ - "\u0000\u1026\u1027\u0007\u0011\u0000\u0000\u1027\u1028\u0007\n\u0000\u0000"+ - "\u1028\u1029\u0007\u001c\u0000\u0000\u1029\u02f8\u0001\u0000\u0000\u0000"+ - "\u102a\u102b\u0007\u001b\u0000\u0000\u102b\u102c\u0007\u0013\u0000\u0000"+ - "\u102c\u102d\u0007\u0006\u0000\u0000\u102d\u102e\u0007\u0005\u0000\u0000"+ - "\u102e\u102f\u0007\u0010\u0000\u0000\u102f\u1030\u0007\u0011\u0000\u0000"+ - "\u1030\u1031\u0007\u0006\u0000\u0000\u1031\u1032\u0007\n\u0000\u0000\u1032"+ - "\u02fa\u0001\u0000\u0000\u0000\u1033\u1034\u0007\u001c\u0000\u0000\u1034"+ - "\u1035\u0007\u0014\u0000\u0000\u1035\u1036\u0007\u0011\u0000\u0000\u1036"+ - "\u1037\u0007\u0010\u0000\u0000\u1037\u1038\u0007\n\u0000\u0000\u1038\u1039"+ - "\u0007\t\u0000\u0000\u1039\u103a\u0007\u0018\u0000\u0000\u103a\u103b\u0007"+ - "\u0005\u0000\u0000\u103b\u103c\u0007\u000e\u0000\u0000\u103c\u103d\u0007"+ - "\n\u0000\u0000\u103d\u02fc\u0001\u0000\u0000\u0000\u103e\u103f\u0007\u001c"+ - "\u0000\u0000\u103f\u1040\u0007\u0011\u0000\u0000\u1040\u1041\u0007\u0010"+ - "\u0000\u0000\u1041\u1042\u0007\u0014\u0000\u0000\u1042\u1043\u0007\u0013"+ - "\u0000\u0000\u1043\u1044\u0007\u0016\u0000\u0000\u1044\u1045\u0007\u0010"+ - "\u0000\u0000\u1045\u02fe\u0001\u0000\u0000\u0000\u1046\u1047\u0007\u001c"+ - "\u0000\u0000\u1047\u1048\u0007\u0013\u0000\u0000\u1048\u1049\u0007\r\u0000"+ - "\u0000\u1049\u104a\u0007\u0015\u0000\u0000\u104a\u0300\u0001\u0000\u0000"+ - "\u0000\u104b\u104c\u0007\u001c\u0000\u0000\u104c\u104d\u0007\r\u0000\u0000"+ - "\u104d\u104e\u0007\u0005\u0000\u0000\u104e\u104f\u0007\u0018\u0000\u0000"+ - "\u104f\u1050\u0007\u0018\u0000\u0000\u1050\u1051\u0007\n\u0000\u0000\u1051"+ - "\u1052\u0007\r\u0000\u0000\u1052\u0302\u0001\u0000\u0000\u0000\u1053\u1054"+ - "\u0007\u001c\u0000\u0000\u1054\u1055\u0007\r\u0000\u0000\u1055\u1056\u0007"+ - "\u0011\u0000\u0000\u1056\u1057\u0007\u0010\u0000\u0000\u1057\u1058\u0007"+ - "\n\u0000\u0000\u1058\u0304\u0001\u0000\u0000\u0000\u1059\u105a\u0007\u001a"+ - "\u0000\u0000\u105a\u105b\u0007\u000f\u0000\u0000\u105b\u105c\u0007\u0006"+ - "\u0000\u0000\u105c\u0306\u0001\u0000\u0000\u0000\u105d\u105e\u0007\b\u0000"+ - "\u0000\u105e\u105f\u0007\n\u0000\u0000\u105f\u1060\u0007\u0005\u0000\u0000"+ - "\u1060\u1061\u0007\r\u0000\u0000\u1061\u0308\u0001\u0000\u0000\u0000\u1062"+ - "\u1063\u0007\b\u0000\u0000\u1063\u1064\u0007\n\u0000\u0000\u1064\u1065"+ - "\u0007\t\u0000\u0000\u1065\u030a\u0001\u0000\u0000\u0000\u1066\u1067\u0007"+ - "\u000b\u0000\u0000\u1067\u1068\u0007\u0013\u0000\u0000\u1068\u1069\u0007"+ - "\u0007\u0000\u0000\u1069\u106a\u0007\n\u0000\u0000\u106a\u030c\u0001\u0000"+ - "\u0000\u0000\u106b\u106c\u0007\u0012\u0000\u0000\u106c\u106d\u0007\n\u0000"+ - "\u0000\u106d\u106e\u0007\u0010\u0000\u0000\u106e\u106f\u0007\u001c\u0000"+ - "\u0000\u106f\u1070\u0007\n\u0000\u0000\u1070\u1071\u0007\n\u0000\u0000"+ - "\u1071\u1072\u0007\u0007\u0000\u0000\u1072\u030e\u0001\u0000\u0000\u0000"+ - "\u1073\u1074\u0007\u0012\u0000\u0000\u1074\u1075\u0007\u0011\u0000\u0000"+ - "\u1075\u1076\u0007\u0017\u0000\u0000\u1076\u1077\u0007\u0011\u0000\u0000"+ - "\u1077\u1078\u0007\u0007\u0000\u0000\u1078\u1079\u0007\u0010\u0000\u0000"+ - "\u1079\u0310\u0001\u0000\u0000\u0000\u107a\u107b\u0007\u0012\u0000\u0000"+ - "\u107b\u107c\u0007\u0011\u0000\u0000\u107c\u107d\u0007\u0010\u0000\u0000"+ - "\u107d\u0312\u0001\u0000\u0000\u0000\u107e\u107f\u0007\u0012\u0000\u0000"+ - "\u107f\u1080\u0007\u0013\u0000\u0000\u1080\u1081\u0007\u0013\u0000\u0000"+ - "\u1081\u1082\u0007\u0006\u0000\u0000\u1082\u1083\u0007\n\u0000\u0000\u1083"+ - "\u1084\u0007\u0005\u0000\u0000\u1084\u1085\u0007\u0007\u0000\u0000\u1085"+ - "\u0314\u0001\u0000\u0000\u0000\u1086\u1087\u0007\u000e\u0000\u0000\u1087"+ - "\u1088\u0007\u0014\u0000\u0000\u1088\u1089\u0007\u0005\u0000\u0000\u1089"+ - "\u108a\u0007\r\u0000\u0000\u108a\u0316\u0001\u0000\u0000\u0000\u108b\u108c"+ - "\u0007\u000e\u0000\u0000\u108c\u108d\u0007\u0014\u0000\u0000\u108d\u108e"+ - "\u0007\u0005\u0000\u0000\u108e\u108f\u0007\r\u0000\u0000\u108f\u1090\u0007"+ - "\u0005\u0000\u0000\u1090\u1091\u0007\u000e\u0000\u0000\u1091\u1092\u0007"+ - "\u0010\u0000\u0000\u1092\u1093\u0007\n\u0000\u0000\u1093\u1094\u0007\r"+ - "\u0000\u0000\u1094\u0318\u0001\u0000\u0000\u0000\u1095\u1096\u0007\u000e"+ - "\u0000\u0000\u1096\u1097\u0007\u0013\u0000\u0000\u1097\u1098\u0007\u0005"+ - "\u0000\u0000\u1098\u1099\u0007\u0006\u0000\u0000\u1099\u109a\u0007\n\u0000"+ - "\u0000\u109a\u109b\u0007\t\u0000\u0000\u109b\u109c\u0007\u000e\u0000\u0000"+ - "\u109c\u109d\u0007\n\u0000\u0000\u109d\u031a\u0001\u0000\u0000\u0000\u109e"+ - "\u109f\u0007\f\u0000\u0000\u109f\u10a0\u0007\n\u0000\u0000\u10a0\u10a1"+ - "\u0007\u000e\u0000\u0000\u10a1\u031c\u0001\u0000\u0000\u0000\u10a2\u10a3"+ - "\u0007\f\u0000\u0000\u10a3\u10a4\u0007\n\u0000\u0000\u10a4\u10a5\u0007"+ - "\u000e\u0000\u0000\u10a5\u10a6\u0007\u0011\u0000\u0000\u10a6\u10a7\u0007"+ - "\u000f\u0000\u0000\u10a7\u10a8\u0007\u0005\u0000\u0000\u10a8\u10a9\u0007"+ - "\u0006\u0000\u0000\u10a9\u031e\u0001\u0000\u0000\u0000\u10aa\u10ab\u0007"+ - "\n\u0000\u0000\u10ab\u10ac\u0007\u001a\u0000\u0000\u10ac\u10ad\u0007\u0011"+ - "\u0000\u0000\u10ad\u10ae\u0007\t\u0000\u0000\u10ae\u10af\u0007\u0010\u0000"+ - "\u0000\u10af\u10b0\u0007\t\u0000\u0000\u10b0\u0320\u0001\u0000\u0000\u0000"+ - "\u10b1\u10b2\u0007\n\u0000\u0000\u10b2\u10b3\u0007\u001a\u0000\u0000\u10b3"+ - "\u10b4\u0007\u0010\u0000\u0000\u10b4\u10b5\u0007\r\u0000\u0000\u10b5\u10b6"+ - "\u0007\u0005\u0000\u0000\u10b6\u10b7\u0007\u000e\u0000\u0000\u10b7\u10b8"+ - "\u0007\u0010\u0000\u0000\u10b8\u0322\u0001\u0000\u0000\u0000\u10b9\u10ba"+ - "\u0007\u0019\u0000\u0000\u10ba\u10bb\u0007\u0006\u0000\u0000\u10bb\u10bc"+ - "\u0007\u0013\u0000\u0000\u10bc\u10bd\u0007\u0005\u0000\u0000\u10bd\u10be"+ - "\u0007\u0010\u0000\u0000\u10be\u0324\u0001\u0000\u0000\u0000\u10bf\u10c0"+ - "\u0007\u0017\u0000\u0000\u10c0\u10c1\u0007\r\u0000\u0000\u10c1\u10c2\u0007"+ - "\n\u0000\u0000\u10c2\u10c3\u0007\u0005\u0000\u0000\u10c3\u10c4\u0007\u0010"+ - "\u0000\u0000\u10c4\u10c5\u0007\n\u0000\u0000\u10c5\u10c6\u0007\t\u0000"+ - "\u0000\u10c6\u10c7\u0007\u0010\u0000\u0000\u10c7\u0326\u0001\u0000\u0000"+ - "\u0000\u10c8\u10c9\u0007\u0011\u0000\u0000\u10c9\u10ca\u0007\u0007\u0000"+ - "\u0000\u10ca\u10cb\u0007\u0013\u0000\u0000\u10cb\u10cc\u0007\u0016\u0000"+ - "\u0000\u10cc\u10cd\u0007\u0010\u0000\u0000\u10cd\u0328\u0001\u0000\u0000"+ - "\u0000\u10ce\u10cf\u0007\u0011\u0000\u0000\u10cf\u10d0\u0007\u0007\u0000"+ - "\u0000\u10d0\u10d1\u0007\u0010\u0000\u0000\u10d1\u032a\u0001\u0000\u0000"+ - "\u0000\u10d2\u10d3\u0007\u0011\u0000\u0000\u10d3\u10d4\u0007\u0007\u0000"+ - "\u0000\u10d4\u10d5\u0007\u0010\u0000\u0000\u10d5\u10d6\u0007\n\u0000\u0000"+ - "\u10d6\u10d7\u0007\u0017\u0000\u0000\u10d7\u10d8\u0007\n\u0000\u0000\u10d8"+ - "\u10d9\u0007\r\u0000\u0000\u10d9\u032c\u0001\u0000\u0000\u0000\u10da\u10db"+ - "\u0007\u0011\u0000\u0000\u10db\u10dc\u0007\u0007\u0000\u0000\u10dc\u10dd"+ - "\u0007\u0010\u0000\u0000\u10dd\u10de\u0007\n\u0000\u0000\u10de\u10df\u0007"+ - "\r\u0000\u0000\u10df\u10e0\u0007\u001b\u0000\u0000\u10e0\u10e1\u0007\u0005"+ - "\u0000\u0000\u10e1\u10e2\u0007\u0006\u0000\u0000\u10e2\u032e\u0001\u0000"+ - "\u0000\u0000\u10e3\u10e4\u0007\u0006\u0000\u0000\u10e4\u10e5\u0007\n\u0000"+ - "\u0000\u10e5\u10e6\u0007\u0005\u0000\u0000\u10e6\u10e7\u0007\t\u0000\u0000"+ - "\u10e7\u10e8\u0007\u0010\u0000\u0000\u10e8\u0330\u0001\u0000\u0000\u0000"+ - "\u10e9\u10ea\u0007\u0007\u0000\u0000\u10ea\u10eb\u0007\u0005\u0000\u0000"+ - "\u10eb\u10ec\u0007\u0010\u0000\u0000\u10ec\u10ed\u0007\u0011\u0000\u0000"+ - "\u10ed\u10ee\u0007\u0013\u0000\u0000\u10ee\u10ef\u0007\u0007\u0000\u0000"+ - "\u10ef\u10f0\u0007\u0005\u0000\u0000\u10f0\u10f1\u0007\u0006\u0000\u0000"+ - "\u10f1\u0332\u0001\u0000\u0000\u0000\u10f2\u10f3\u0007\u0007\u0000\u0000"+ - "\u10f3\u10f4\u0007\u000e\u0000\u0000\u10f4\u10f5\u0007\u0014\u0000\u0000"+ - "\u10f5\u10f6\u0007\u0005\u0000\u0000\u10f6\u10f7\u0007\r\u0000\u0000\u10f7"+ - "\u0334\u0001\u0000\u0000\u0000\u10f8\u10f9\u0007\u0007\u0000\u0000\u10f9"+ - "\u10fa\u0007\u0013\u0000\u0000\u10fa\u10fb\u0007\u0007\u0000\u0000\u10fb"+ - "\u10fc\u0007\n\u0000\u0000\u10fc\u0336\u0001\u0000\u0000\u0000\u10fd\u10fe"+ - "\u0007\u0007\u0000\u0000\u10fe\u10ff\u0007\u0016\u0000\u0000\u10ff\u1100"+ - "\u0007\u0006\u0000\u0000\u1100\u1101\u0007\u0006\u0000\u0000\u1101\u1102"+ - "\u0007\u0011\u0000\u0000\u1102\u1103\u0007\u0019\u0000\u0000\u1103\u0338"+ - "\u0001\u0000\u0000\u0000\u1104\u1105\u0007\u0007\u0000\u0000\u1105\u1106"+ - "\u0007\u0016\u0000\u0000\u1106\u1107\u0007\u000f\u0000\u0000\u1107\u1108"+ - "\u0007\n\u0000\u0000\u1108\u1109\u0007\r\u0000\u0000\u1109\u110a\u0007"+ - "\u0011\u0000\u0000\u110a\u110b\u0007\u000e\u0000\u0000\u110b\u033a\u0001"+ - "\u0000\u0000\u0000\u110c\u110d\u0007\u0013\u0000\u0000\u110d\u110e\u0007"+ - "\u001b\u0000\u0000\u110e\u110f\u0007\n\u0000\u0000\u110f\u1110\u0007\r"+ - "\u0000\u0000\u1110\u1111\u0007\u0006\u0000\u0000\u1111\u1112\u0007\u0005"+ - "\u0000\u0000\u1112\u1113\u0007\b\u0000\u0000\u1113\u033c\u0001\u0000\u0000"+ - "\u0000\u1114\u1115\u0007\u0018\u0000\u0000\u1115\u1116\u0007\u0013\u0000"+ - "\u0000\u1116\u1117\u0007\t\u0000\u0000\u1117\u1118\u0007\u0011\u0000\u0000"+ - "\u1118\u1119\u0007\u0010\u0000\u0000\u1119\u111a\u0007\u0011\u0000\u0000"+ - "\u111a\u111b\u0007\u0013\u0000\u0000\u111b\u111c\u0007\u0007\u0000\u0000"+ - "\u111c\u033e\u0001\u0000\u0000\u0000\u111d\u111e\u0007\u0018\u0000\u0000"+ - "\u111e\u111f\u0007\r\u0000\u0000\u111f\u1120\u0007\n\u0000\u0000\u1120"+ - "\u1121\u0007\u000e\u0000\u0000\u1121\u1122\u0007\u0011\u0000\u0000\u1122"+ - "\u1123\u0007\t\u0000\u0000\u1123\u1124\u0007\u0011\u0000\u0000\u1124\u1125"+ - "\u0007\u0013\u0000\u0000\u1125\u1126\u0007\u0007\u0000\u0000\u1126\u0340"+ - "\u0001\u0000\u0000\u0000\u1127\u1128\u0007\r\u0000\u0000\u1128\u1129\u0007"+ - "\n\u0000\u0000\u1129\u112a\u0007\u0005\u0000\u0000\u112a\u112b\u0007\u0006"+ - "\u0000\u0000\u112b\u0342\u0001\u0000\u0000\u0000\u112c\u112d\u0007\r\u0000"+ - "\u0000\u112d\u112e\u0007\u0013\u0000\u0000\u112e\u112f\u0007\u001c\u0000"+ - "\u0000\u112f\u0344\u0001\u0000\u0000\u0000\u1130\u1131\u0007\t\u0000\u0000"+ - "\u1131\u1132\u0007\n\u0000\u0000\u1132\u1133\u0007\u0010\u0000\u0000\u1133"+ - "\u1134\u0007\u0013\u0000\u0000\u1134\u1135\u0007\u0019\u0000\u0000\u1135"+ - "\u0346\u0001\u0000\u0000\u0000\u1136\u1137\u0007\t\u0000\u0000\u1137\u1138"+ - "\u0007\u000f\u0000\u0000\u1138\u1139\u0007\u0005\u0000\u0000\u1139\u113a"+ - "\u0007\u0006\u0000\u0000\u113a\u113b\u0007\u0006\u0000\u0000\u113b\u113c"+ - "\u0007\u0011\u0000\u0000\u113c\u113d\u0007\u0007\u0000\u0000\u113d\u113e"+ - "\u0007\u0010\u0000\u0000\u113e\u0348\u0001\u0000\u0000\u0000\u113f\u1140"+ - "\u0007\t\u0000\u0000\u1140\u1141\u0007\u0016\u0000\u0000\u1141\u1142\u0007"+ - "\u0012\u0000\u0000\u1142\u1143\u0007\t\u0000\u0000\u1143\u1144\u0007\u0010"+ - "\u0000\u0000\u1144\u1145\u0007\r\u0000\u0000\u1145\u1146\u0007\u0011\u0000"+ - "\u0000\u1146\u1147\u0007\u0007\u0000\u0000\u1147\u1148\u0007\u0017\u0000"+ - "\u0000\u1148\u034a\u0001\u0000\u0000\u0000\u1149\u114a\u0007\u0010\u0000"+ - "\u0000\u114a\u114b\u0007\u0011\u0000\u0000\u114b\u114c\u0007\u000f\u0000"+ - "\u0000\u114c\u114d\u0007\n\u0000\u0000\u114d\u034c\u0001\u0000\u0000\u0000"+ - "\u114e\u114f\u0007\u0010\u0000\u0000\u114f\u1150\u0007\u0011\u0000\u0000"+ - "\u1150\u1151\u0007\u000f\u0000\u0000\u1151\u1152\u0007\n\u0000\u0000\u1152"+ - "\u1153\u0007\t\u0000\u0000\u1153\u1154\u0007\u0010\u0000\u0000\u1154\u1155"+ - "\u0007\u0005\u0000\u0000\u1155\u1156\u0007\u000f\u0000\u0000\u1156\u1157"+ - "\u0007\u0018\u0000\u0000\u1157\u034e\u0001\u0000\u0000\u0000\u1158\u1159"+ - "\u0007\u0010\u0000\u0000\u1159\u115a\u0007\r\u0000\u0000\u115a\u115b\u0007"+ - "\n\u0000\u0000\u115b\u115c\u0007\u0005\u0000\u0000\u115c\u115d\u0007\u0010"+ - "\u0000\u0000\u115d\u0350\u0001\u0000\u0000\u0000\u115e\u115f\u0007\u0010"+ - "\u0000\u0000\u115f\u1160\u0007\r\u0000\u0000\u1160\u1161\u0007\u0011\u0000"+ - "\u0000\u1161\u1162\u0007\u000f\u0000\u0000\u1162\u0352\u0001\u0000\u0000"+ - "\u0000\u1163\u1164\u0007\u001b\u0000\u0000\u1164\u1165\u0007\u0005\u0000"+ - "\u0000\u1165\u1166\u0007\u0006\u0000\u0000\u1166\u1167\u0007\u0016\u0000"+ - "\u0000\u1167\u1168\u0007\n\u0000\u0000\u1168\u1169\u0007\t\u0000\u0000"+ - "\u1169\u0354\u0001\u0000\u0000\u0000\u116a\u116b\u0007\u001b\u0000\u0000"+ - "\u116b\u116c\u0007\u0005\u0000\u0000\u116c\u116d\u0007\r\u0000\u0000\u116d"+ - "\u116e\u0007\u000e\u0000\u0000\u116e\u116f\u0007\u0014\u0000\u0000\u116f"+ - "\u1170\u0007\u0005\u0000\u0000\u1170\u1171\u0007\r\u0000\u0000\u1171\u0356"+ - "\u0001\u0000\u0000\u0000\u1172\u1173\u0007\u001a\u0000\u0000\u1173\u1174"+ - "\u0007\u000f\u0000\u0000\u1174\u1175\u0007\u0006\u0000\u0000\u1175\u1176"+ - "\u0007\u0005\u0000\u0000\u1176\u1177\u0007\u0010\u0000\u0000\u1177\u1178"+ - "\u0007\u0010\u0000\u0000\u1178\u1179\u0007\r\u0000\u0000\u1179\u117a\u0007"+ - "\u0011\u0000\u0000\u117a\u117b\u0007\u0012\u0000\u0000\u117b\u117c\u0007"+ - "\u0016\u0000\u0000\u117c\u117d\u0007\u0010\u0000\u0000\u117d\u117e\u0007"+ - "\n\u0000\u0000\u117e\u117f\u0007\t\u0000\u0000\u117f\u0358\u0001\u0000"+ - "\u0000\u0000\u1180\u1181\u0007\u001a\u0000\u0000\u1181\u1182\u0007\u000f"+ - "\u0000\u0000\u1182\u1183\u0007\u0006\u0000\u0000\u1183\u1184\u0007\u000e"+ - "\u0000\u0000\u1184\u1185\u0007\u0013\u0000\u0000\u1185\u1186\u0007\u000f"+ - "\u0000\u0000\u1186\u1187\u0007\u000f\u0000\u0000\u1187\u1188\u0007\n\u0000"+ - "\u0000\u1188\u1189\u0007\u0007\u0000\u0000\u1189\u118a\u0007\u0010\u0000"+ - "\u0000\u118a\u035a\u0001\u0000\u0000\u0000\u118b\u118c\u0007\u001a\u0000"+ - "\u0000\u118c\u118d\u0007\u000f\u0000\u0000\u118d\u118e\u0007\u0006\u0000"+ - "\u0000\u118e\u118f\u0007\u0005\u0000\u0000\u118f\u1190\u0007\u0017\u0000"+ - "\u0000\u1190\u1191\u0007\u0017\u0000\u0000\u1191\u035c\u0001\u0000\u0000"+ - "\u0000\u1192\u1193\u0007\u001a\u0000\u0000\u1193\u1194\u0007\u000f\u0000"+ - "\u0000\u1194\u1195\u0007\u0006\u0000\u0000\u1195\u1196\u0005_\u0000\u0000"+ - "\u1196\u1197\u0007\u0011\u0000\u0000\u1197\u1198\u0007\t\u0000\u0000\u1198"+ - "\u1199\u0005_\u0000\u0000\u1199\u119a\u0007\u001c\u0000\u0000\u119a\u119b"+ - "\u0007\n\u0000\u0000\u119b\u119c\u0007\u0006\u0000\u0000\u119c\u119d\u0007"+ - "\u0006\u0000\u0000\u119d\u119e\u0005_\u0000\u0000\u119e\u119f\u0007\u0019"+ - "\u0000\u0000\u119f\u11a0\u0007\u0013\u0000\u0000\u11a0\u11a1\u0007\r\u0000"+ - "\u0000\u11a1\u11a2\u0007\u000f\u0000\u0000\u11a2\u11a3\u0007\n\u0000\u0000"+ - "\u11a3\u11a4\u0007\f\u0000\u0000\u11a4\u035e\u0001\u0000\u0000\u0000\u11a5"+ - "\u11a6\u0007\u001a\u0000\u0000\u11a6\u11a7\u0007\u000f\u0000\u0000\u11a7"+ - "\u11a8\u0007\u0006\u0000\u0000\u11a8\u11a9\u0005_\u0000\u0000\u11a9\u11aa"+ - "\u0007\u0011\u0000\u0000\u11aa\u11ab\u0007\t\u0000\u0000\u11ab\u11ac\u0005"+ - "_\u0000\u0000\u11ac\u11ad\u0007\u001c\u0000\u0000\u11ad\u11ae\u0007\n"+ - "\u0000\u0000\u11ae\u11af\u0007\u0006\u0000\u0000\u11af\u11b0\u0007\u0006"+ - "\u0000\u0000\u11b0\u11b1\u0005_\u0000\u0000\u11b1\u11b2\u0007\u0019\u0000"+ - "\u0000\u11b2\u11b3\u0007\u0013\u0000\u0000\u11b3\u11b4\u0007\r\u0000\u0000"+ - "\u11b4\u11b5\u0007\u000f\u0000\u0000\u11b5\u11b6\u0007\n\u0000\u0000\u11b6"+ - "\u11b7\u0007\f\u0000\u0000\u11b7\u11b8\u0005_\u0000\u0000\u11b8\u11b9"+ - "\u0007\f\u0000\u0000\u11b9\u11ba\u0007\u0013\u0000\u0000\u11ba\u11bb\u0007"+ - "\u000e\u0000\u0000\u11bb\u11bc\u0007\u0016\u0000\u0000\u11bc\u11bd\u0007"+ - "\u000f\u0000\u0000\u11bd\u11be\u0007\n\u0000\u0000\u11be\u11bf\u0007\u0007"+ - "\u0000\u0000\u11bf\u11c0\u0007\u0010\u0000\u0000\u11c0\u0360\u0001\u0000"+ - "\u0000\u0000\u11c1\u11c2\u0007\u001a\u0000\u0000\u11c2\u11c3\u0007\u000f"+ - "\u0000\u0000\u11c3\u11c4\u0007\u0006\u0000\u0000\u11c4\u11c5\u0005_\u0000"+ - "\u0000\u11c5\u11c6\u0007\u0011\u0000\u0000\u11c6\u11c7\u0007\t\u0000\u0000"+ - "\u11c7\u11c8\u0005_\u0000\u0000\u11c8\u11c9\u0007\u001c\u0000\u0000\u11c9"+ - "\u11ca\u0007\n\u0000\u0000\u11ca\u11cb\u0007\u0006\u0000\u0000\u11cb\u11cc"+ - "\u0007\u0006\u0000\u0000\u11cc\u11cd\u0005_\u0000\u0000\u11cd\u11ce\u0007"+ - "\u0019\u0000\u0000\u11ce\u11cf\u0007\u0013\u0000\u0000\u11cf\u11d0\u0007"+ - "\r\u0000\u0000\u11d0\u11d1\u0007\u000f\u0000\u0000\u11d1\u11d2\u0007\n"+ - "\u0000\u0000\u11d2\u11d3\u0007\f\u0000\u0000\u11d3\u11d4\u0005_\u0000"+ - "\u0000\u11d4\u11d5\u0007\u000e\u0000\u0000\u11d5\u11d6\u0007\u0013\u0000"+ - "\u0000\u11d6\u11d7\u0007\u0007\u0000\u0000\u11d7\u11d8\u0007\u0010\u0000"+ - "\u0000\u11d8\u11d9\u0007\n\u0000\u0000\u11d9\u11da\u0007\u0007\u0000\u0000"+ - "\u11da\u11db\u0007\u0010\u0000\u0000\u11db\u0362\u0001\u0000\u0000\u0000"+ - "\u11dc\u11dd\u0007\u001a\u0000\u0000\u11dd\u11de\u0007\u0018\u0000\u0000"+ - "\u11de\u11df\u0007\u0005\u0000\u0000\u11df\u11e0\u0007\u0010\u0000\u0000"+ - "\u11e0\u11e1\u0007\u0014\u0000\u0000\u11e1\u0364\u0001\u0000\u0000\u0000"+ - "\u11e2\u11e3\u0007\u001a\u0000\u0000\u11e3\u11e4\u0007\u0018\u0000\u0000"+ - "\u11e4\u11e5\u0007\u0005\u0000\u0000\u11e5\u11e6\u0007\u0010\u0000\u0000"+ - "\u11e6\u11e7\u0007\u0014\u0000\u0000\u11e7\u11e8\u0005_\u0000\u0000\u11e8"+ - "\u11e9\u0007\n\u0000\u0000\u11e9\u11ea\u0007\u001a\u0000\u0000\u11ea\u11eb"+ - "\u0007\u0011\u0000\u0000\u11eb\u11ec\u0007\t\u0000\u0000\u11ec\u11ed\u0007"+ - "\u0010\u0000\u0000\u11ed\u11ee\u0007\t\u0000\u0000\u11ee\u0366\u0001\u0000"+ - "\u0000\u0000\u11ef\u11f0\u0007\u001a\u0000\u0000\u11f0\u11f1\u0007\u000f"+ - "\u0000\u0000\u11f1\u11f2\u0007\u0006\u0000\u0000\u11f2\u11f3\u0007\u000e"+ - "\u0000\u0000\u11f3\u11f4\u0007\u0013\u0000\u0000\u11f4\u11f5\u0007\u0007"+ - "\u0000\u0000\u11f5\u11f6\u0007\u000e\u0000\u0000\u11f6\u11f7\u0007\u0005"+ - "\u0000\u0000\u11f7\u11f8\u0007\u0010\u0000\u0000\u11f8\u0368\u0001\u0000"+ - "\u0000\u0000\u11f9\u11fa\u0007\u001a\u0000\u0000\u11fa\u11fb\u0007\u000f"+ - "\u0000\u0000\u11fb\u11fc\u0007\u0006\u0000\u0000\u11fc\u11fd\u0007\n\u0000"+ - "\u0000\u11fd\u11fe\u0007\u0006\u0000\u0000\u11fe\u11ff\u0007\n\u0000\u0000"+ - "\u11ff\u1200\u0007\u000f\u0000\u0000\u1200\u1201\u0007\n\u0000\u0000\u1201"+ - "\u1202\u0007\u0007\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\n\u0000\u0000\u1208\u1209\u0007\u001a\u0000\u0000\u1209\u120a"+ - "\u0007\u0011\u0000\u0000\u120a\u120b\u0007\t\u0000\u0000\u120b\u120c\u0007"+ - "\u0010\u0000\u0000\u120c\u120d\u0007\t\u0000\u0000\u120d\u036c\u0001\u0000"+ - "\u0000\u0000\u120e\u120f\u0007\u001a\u0000\u0000\u120f\u1210\u0007\u000f"+ - "\u0000\u0000\u1210\u1211\u0007\u0006\u0000\u0000\u1211\u1212\u0007\u0019"+ - "\u0000\u0000\u1212\u1213\u0007\u0013\u0000\u0000\u1213\u1214\u0007\r\u0000"+ - "\u0000\u1214\u1215\u0007\n\u0000\u0000\u1215\u1216\u0007\t\u0000\u0000"+ - "\u1216\u1217\u0007\u0010\u0000\u0000\u1217\u036e\u0001\u0000\u0000\u0000"+ - "\u1218\u1219\u0007\u001a\u0000\u0000\u1219\u121a\u0007\u000f\u0000\u0000"+ - "\u121a\u121b\u0007\u0006\u0000\u0000\u121b\u121c\u0007\u0018\u0000\u0000"+ - "\u121c\u121d\u0007\u0005\u0000\u0000\u121d\u121e\u0007\r\u0000\u0000\u121e"+ - "\u121f\u0007\t\u0000\u0000\u121f\u1220\u0007\n\u0000\u0000\u1220\u0370"+ - "\u0001\u0000\u0000\u0000\u1221\u1222\u0007\u001a\u0000\u0000\u1222\u1223"+ - "\u0007\u000f\u0000\u0000\u1223\u1224\u0007\u0006\u0000\u0000\u1224\u1225"+ - "\u0007\u0018\u0000\u0000\u1225\u1226\u0007\u0011\u0000\u0000\u1226\u0372"+ - "\u0001\u0000\u0000\u0000\u1227\u1228\u0007\u001a\u0000\u0000\u1228\u1229"+ - "\u0007\u000f\u0000\u0000\u1229\u122a\u0007\u0006\u0000\u0000\u122a\u122b"+ - "\u0007\r\u0000\u0000\u122b\u122c\u0007\u0013\u0000\u0000\u122c\u122d\u0007"+ - "\u0013\u0000\u0000\u122d\u122e\u0007\u0010\u0000\u0000\u122e\u0374\u0001"+ - "\u0000\u0000\u0000\u122f\u1230\u0007\u001a\u0000\u0000\u1230\u1231\u0007"+ - "\u000f\u0000\u0000\u1231\u1232\u0007\u0006\u0000\u0000\u1232\u1233\u0007"+ - "\t\u0000\u0000\u1233\u1234\u0007\n\u0000\u0000\u1234\u1235\u0007\r\u0000"+ - "\u0000\u1235\u1236\u0007\u0011\u0000\u0000\u1236\u1237\u0007\u0005\u0000"+ - "\u0000\u1237\u1238\u0007\u0006\u0000\u0000\u1238\u1239\u0007\u0011\u0000"+ - "\u0000\u1239\u123a\u0007\u000b\u0000\u0000\u123a\u123b\u0007\n\u0000\u0000"+ - "\u123b\u0376\u0001\u0000\u0000\u0000\u123c\u123d\u0007\u000e\u0000\u0000"+ - "\u123d\u123e\u0007\u0005\u0000\u0000\u123e\u123f\u0007\u0006\u0000\u0000"+ - "\u123f\u1240\u0007\u0006\u0000\u0000\u1240\u0378\u0001\u0000\u0000\u0000"+ - "\u1241\u1242\u0007\u000e\u0000\u0000\u1242\u1243\u0007\u0016\u0000\u0000"+ - "\u1243\u1244\u0007\r\u0000\u0000\u1244\u1245\u0007\r\u0000\u0000\u1245"+ - "\u1246\u0007\n\u0000\u0000\u1246\u1247\u0007\u0007\u0000\u0000\u1247\u1248"+ - "\u0007\u0010\u0000\u0000\u1248\u037a\u0001\u0000\u0000\u0000\u1249\u124a"+ - "\u0007\u0005\u0000\u0000\u124a\u124b\u0007\u0010\u0000\u0000\u124b\u124c"+ - "\u0007\u0010\u0000\u0000\u124c\u124d\u0007\u0005\u0000\u0000\u124d\u124e"+ - "\u0007\u000e\u0000\u0000\u124e\u124f\u0007\u0014\u0000\u0000\u124f\u037c"+ - "\u0001\u0000\u0000\u0000\u1250\u1251\u0007\f\u0000\u0000\u1251\u1252\u0007"+ - "\n\u0000\u0000\u1252\u1253\u0007\u0010\u0000\u0000\u1253\u1254\u0007\u0005"+ - "\u0000\u0000\u1254\u1255\u0007"; + "\u0000\u0000\u0de7\u0de8\u0007\u0005\u0000\u0000\u0de8\u0de9\u0007\f\u0000"+ + "\u0000\u0de9\u0264\u0001\u0000\u0000\u0000\u0dea\u0deb\u0007\r\u0000\u0000"+ + "\u0deb\u0dec\u0007\n\u0000\u0000\u0dec\u0ded\u0007\u0005\u0000\u0000\u0ded"+ + "\u0dee\u0007\t\u0000\u0000\u0dee\u0def\u0007\t\u0000\u0000\u0def\u0df0"+ + "\u0007\u0011\u0000\u0000\u0df0\u0df1\u0007\u0017\u0000\u0000\u0df1\u0df2"+ + "\u0007\u0007\u0000\u0000\u0df2\u0266\u0001\u0000\u0000\u0000\u0df3\u0df4"+ + "\u0007\r\u0000\u0000\u0df4\u0df5\u0007\n\u0000\u0000\u0df5\u0df6\u0007"+ + "\u000e\u0000\u0000\u0df6\u0df7\u0007\u0014\u0000\u0000\u0df7\u0df8\u0007"+ + "\n\u0000\u0000\u0df8\u0df9\u0007\u000e\u0000\u0000\u0df9\u0dfa\u0007\u0015"+ + "\u0000\u0000\u0dfa\u0268\u0001\u0000\u0000\u0000\u0dfb\u0dfc\u0007\r\u0000"+ + "\u0000\u0dfc\u0dfd\u0007\n\u0000\u0000\u0dfd\u0dfe\u0007\u000e\u0000\u0000"+ + "\u0dfe\u0dff\u0007\u0016\u0000\u0000\u0dff\u0e00\u0007\r\u0000\u0000\u0e00"+ + "\u0e01\u0007\t\u0000\u0000\u0e01\u0e02\u0007\u0011\u0000\u0000\u0e02\u0e03"+ + "\u0007\u001b\u0000\u0000\u0e03\u0e04\u0007\n\u0000\u0000\u0e04\u026a\u0001"+ + "\u0000\u0000\u0000\u0e05\u0e06\u0007\r\u0000\u0000\u0e06\u0e07\u0007\n"+ + "\u0000\u0000\u0e07\u0e08\u0007\u0019\u0000\u0000\u0e08\u026c\u0001\u0000"+ + "\u0000\u0000\u0e09\u0e0a\u0007\r\u0000\u0000\u0e0a\u0e0b\u0007\n\u0000"+ + "\u0000\u0e0b\u0e0c\u0007\u0019\u0000\u0000\u0e0c\u0e0d\u0007\r\u0000\u0000"+ + "\u0e0d\u0e0e\u0007\n\u0000\u0000\u0e0e\u0e0f\u0007\t\u0000\u0000\u0e0f"+ + "\u0e10\u0007\u0014\u0000\u0000\u0e10\u026e\u0001\u0000\u0000\u0000\u0e11"+ + "\u0e12\u0007\r\u0000\u0000\u0e12\u0e13\u0007\n\u0000\u0000\u0e13\u0e14"+ + "\u0007\u0011\u0000\u0000\u0e14\u0e15\u0007\u0007\u0000\u0000\u0e15\u0e16"+ + "\u0007\f\u0000\u0000\u0e16\u0e17\u0007\n\u0000\u0000\u0e17\u0e18\u0007"+ + "\u001a\u0000\u0000\u0e18\u0270\u0001\u0000\u0000\u0000\u0e19\u0e1a\u0007"+ + "\r\u0000\u0000\u0e1a\u0e1b\u0007\n\u0000\u0000\u0e1b\u0e1c\u0007\u0006"+ + "\u0000\u0000\u0e1c\u0e1d\u0007\u0005\u0000\u0000\u0e1d\u0e1e\u0007\u0010"+ + "\u0000\u0000\u0e1e\u0e1f\u0007\u0011\u0000\u0000\u0e1f\u0e20\u0007\u001b"+ + "\u0000\u0000\u0e20\u0e21\u0007\n\u0000\u0000\u0e21\u0272\u0001\u0000\u0000"+ + "\u0000\u0e22\u0e23\u0007\r\u0000\u0000\u0e23\u0e24\u0007\n\u0000\u0000"+ + "\u0e24\u0e25\u0007\u0006\u0000\u0000\u0e25\u0e26\u0007\n\u0000\u0000\u0e26"+ + "\u0e27\u0007\u0005\u0000\u0000\u0e27\u0e28\u0007\t\u0000\u0000\u0e28\u0e29"+ + "\u0007\n\u0000\u0000\u0e29\u0274\u0001\u0000\u0000\u0000\u0e2a\u0e2b\u0007"+ + "\r\u0000\u0000\u0e2b\u0e2c\u0007\n\u0000\u0000\u0e2c\u0e2d\u0007\u0007"+ + "\u0000\u0000\u0e2d\u0e2e\u0007\u0005\u0000\u0000\u0e2e\u0e2f\u0007\u000f"+ + "\u0000\u0000\u0e2f\u0e30\u0007\n\u0000\u0000\u0e30\u0276\u0001\u0000\u0000"+ + "\u0000\u0e31\u0e32\u0007\r\u0000\u0000\u0e32\u0e33\u0007\n\u0000\u0000"+ + "\u0e33\u0e34\u0007\u0018\u0000\u0000\u0e34\u0e35\u0007\n\u0000\u0000\u0e35"+ + "\u0e36\u0007\u0005\u0000\u0000\u0e36\u0e37\u0007\u0010\u0000\u0000\u0e37"+ + "\u0e38\u0007\u0005\u0000\u0000\u0e38\u0e39\u0007\u0012\u0000\u0000\u0e39"+ + "\u0e3a\u0007\u0006\u0000\u0000\u0e3a\u0e3b\u0007\n\u0000\u0000\u0e3b\u0278"+ + "\u0001\u0000\u0000\u0000\u0e3c\u0e3d\u0007\r\u0000\u0000\u0e3d\u0e3e\u0007"+ + "\n\u0000\u0000\u0e3e\u0e3f\u0007\u0018\u0000\u0000\u0e3f\u0e40\u0007\u0006"+ + "\u0000\u0000\u0e40\u0e41\u0007\u0005\u0000\u0000\u0e41\u0e42\u0007\u000e"+ + "\u0000\u0000\u0e42\u0e43\u0007\n\u0000\u0000\u0e43\u027a\u0001\u0000\u0000"+ + "\u0000\u0e44\u0e45\u0007\r\u0000\u0000\u0e45\u0e46\u0007\n\u0000\u0000"+ + "\u0e46\u0e47\u0007\u0018\u0000\u0000\u0e47\u0e48\u0007\u0006\u0000\u0000"+ + "\u0e48\u0e49\u0007\u0011\u0000\u0000\u0e49\u0e4a\u0007\u000e\u0000\u0000"+ + "\u0e4a\u0e4b\u0007\u0005\u0000\u0000\u0e4b\u027c\u0001\u0000\u0000\u0000"+ + "\u0e4c\u0e4d\u0007\r\u0000\u0000\u0e4d\u0e4e\u0007\n\u0000\u0000\u0e4e"+ + "\u0e4f\u0007\t\u0000\u0000\u0e4f\u0e50\u0007\n\u0000\u0000\u0e50\u0e51"+ + "\u0007\u0010\u0000\u0000\u0e51\u027e\u0001\u0000\u0000\u0000\u0e52\u0e53"+ + "\u0007\r\u0000\u0000\u0e53\u0e54\u0007\n\u0000\u0000\u0e54\u0e55\u0007"+ + "\t\u0000\u0000\u0e55\u0e56\u0007\u0010\u0000\u0000\u0e56\u0e57\u0007\u0005"+ + "\u0000\u0000\u0e57\u0e58\u0007\r\u0000\u0000\u0e58\u0e59\u0007\u0010\u0000"+ + "\u0000\u0e59\u0280\u0001\u0000\u0000\u0000\u0e5a\u0e5b\u0007\r\u0000\u0000"+ + "\u0e5b\u0e5c\u0007\n\u0000\u0000\u0e5c\u0e5d\u0007\t\u0000\u0000\u0e5d"+ + "\u0e5e\u0007\u0010\u0000\u0000\u0e5e\u0e5f\u0007\r\u0000\u0000\u0e5f\u0e60"+ + "\u0007\u0011\u0000\u0000\u0e60\u0e61\u0007\u000e\u0000\u0000\u0e61\u0e62"+ + "\u0007\u0010\u0000\u0000\u0e62\u0282\u0001\u0000\u0000\u0000\u0e63\u0e64"+ + "\u0007\r\u0000\u0000\u0e64\u0e65\u0007\n\u0000\u0000\u0e65\u0e66\u0007"+ + "\u0010\u0000\u0000\u0e66\u0e67\u0007\u0016\u0000\u0000\u0e67\u0e68\u0007"+ + "\r\u0000\u0000\u0e68\u0e69\u0007\u0007\u0000\u0000\u0e69\u0e6a\u0007\t"+ + "\u0000\u0000\u0e6a\u0284\u0001\u0000\u0000\u0000\u0e6b\u0e6c\u0007\r\u0000"+ + "\u0000\u0e6c\u0e6d\u0007\n\u0000\u0000\u0e6d\u0e6e\u0007\u001b\u0000\u0000"+ + "\u0e6e\u0e6f\u0007\u0013\u0000\u0000\u0e6f\u0e70\u0007\u0015\u0000\u0000"+ + "\u0e70\u0e71\u0007\n\u0000\u0000\u0e71\u0286\u0001\u0000\u0000\u0000\u0e72"+ + "\u0e73\u0007\r\u0000\u0000\u0e73\u0e74\u0007\u0013\u0000\u0000\u0e74\u0e75"+ + "\u0007\u0006\u0000\u0000\u0e75\u0e76\u0007\n\u0000\u0000\u0e76\u0288\u0001"+ + "\u0000\u0000\u0000\u0e77\u0e78\u0007\r\u0000\u0000\u0e78\u0e79\u0007\u0013"+ + "\u0000\u0000\u0e79\u0e7a\u0007\u0006\u0000\u0000\u0e7a\u0e7b\u0007\u0006"+ + "\u0000\u0000\u0e7b\u0e7c\u0007\u0012\u0000\u0000\u0e7c\u0e7d\u0007\u0005"+ + "\u0000\u0000\u0e7d\u0e7e\u0007\u000e\u0000\u0000\u0e7e\u0e7f\u0007\u0015"+ + "\u0000\u0000\u0e7f\u028a\u0001\u0000\u0000\u0000\u0e80\u0e81\u0007\r\u0000"+ + "\u0000\u0e81\u0e82\u0007\u0013\u0000\u0000\u0e82\u0e83\u0007\u001c\u0000"+ + "\u0000\u0e83\u0e84\u0007\t\u0000\u0000\u0e84\u028c\u0001\u0000\u0000\u0000"+ + "\u0e85\u0e86\u0007\r\u0000\u0000\u0e86\u0e87\u0007\u0016\u0000\u0000\u0e87"+ + "\u0e88\u0007\u0006\u0000\u0000\u0e88\u0e89\u0007\n\u0000\u0000\u0e89\u028e"+ + "\u0001\u0000\u0000\u0000\u0e8a\u0e8b\u0007\t\u0000\u0000\u0e8b\u0e8c\u0007"+ + "\u0005\u0000\u0000\u0e8c\u0e8d\u0007\u001b\u0000\u0000\u0e8d\u0e8e\u0007"+ + "\n\u0000\u0000\u0e8e\u0e8f\u0007\u0018\u0000\u0000\u0e8f\u0e90\u0007\u0013"+ + "\u0000\u0000\u0e90\u0e91\u0007\u0011\u0000\u0000\u0e91\u0e92\u0007\u0007"+ + "\u0000\u0000\u0e92\u0e93\u0007\u0010\u0000\u0000\u0e93\u0290\u0001\u0000"+ + "\u0000\u0000\u0e94\u0e95\u0007\t\u0000\u0000\u0e95\u0e96\u0007\u000e\u0000"+ + "\u0000\u0e96\u0e97\u0007\u0014\u0000\u0000\u0e97\u0e98\u0007\n\u0000\u0000"+ + "\u0e98\u0e99\u0007\u000f\u0000\u0000\u0e99\u0e9a\u0007\u0005\u0000\u0000"+ + "\u0e9a\u0292\u0001\u0000\u0000\u0000\u0e9b\u0e9c\u0007\t\u0000\u0000\u0e9c"+ + "\u0e9d\u0007\u000e\u0000\u0000\u0e9d\u0e9e\u0007\r\u0000\u0000\u0e9e\u0e9f"+ + "\u0007\u0013\u0000\u0000\u0e9f\u0ea0\u0007\u0006\u0000\u0000\u0ea0\u0ea1"+ + "\u0007\u0006\u0000\u0000\u0ea1\u0294\u0001\u0000\u0000\u0000\u0ea2\u0ea3"+ + "\u0007\t\u0000\u0000\u0ea3\u0ea4\u0007\n\u0000\u0000\u0ea4\u0ea5\u0007"+ + "\u0005\u0000\u0000\u0ea5\u0ea6\u0007\r\u0000\u0000\u0ea6\u0ea7\u0007\u000e"+ + "\u0000\u0000\u0ea7\u0ea8\u0007\u0014\u0000\u0000\u0ea8\u0296\u0001\u0000"+ + "\u0000\u0000\u0ea9\u0eaa\u0007\t\u0000\u0000\u0eaa\u0eab\u0007\n\u0000"+ + "\u0000\u0eab\u0eac\u0007\u000e\u0000\u0000\u0eac\u0ead\u0007\u0013\u0000"+ + "\u0000\u0ead\u0eae\u0007\u0007\u0000\u0000\u0eae\u0eaf\u0007\f\u0000\u0000"+ + "\u0eaf\u0298\u0001\u0000\u0000\u0000\u0eb0\u0eb1\u0007\t\u0000\u0000\u0eb1"+ + "\u0eb2\u0007\n\u0000\u0000\u0eb2\u0eb3\u0007\u000e\u0000\u0000\u0eb3\u0eb4"+ + "\u0007\u0016\u0000\u0000\u0eb4\u0eb5\u0007\r\u0000\u0000\u0eb5\u0eb6\u0007"+ + "\u0011\u0000\u0000\u0eb6\u0eb7\u0007\u0010\u0000\u0000\u0eb7\u0eb8\u0007"+ + "\b\u0000\u0000\u0eb8\u029a\u0001\u0000\u0000\u0000\u0eb9\u0eba\u0007\t"+ + "\u0000\u0000\u0eba\u0ebb\u0007\n\u0000\u0000\u0ebb\u0ebc\u0007\u001d\u0000"+ + "\u0000\u0ebc\u0ebd\u0007\u0016\u0000\u0000\u0ebd\u0ebe\u0007\n\u0000\u0000"+ + "\u0ebe\u0ebf\u0007\u0007\u0000\u0000\u0ebf\u0ec0\u0007\u000e\u0000\u0000"+ + "\u0ec0\u0ec1\u0007\n\u0000\u0000\u0ec1\u029c\u0001\u0000\u0000\u0000\u0ec2"+ + "\u0ec3\u0007\t\u0000\u0000\u0ec3\u0ec4\u0007\n\u0000\u0000\u0ec4\u0ec5"+ + "\u0007\u001d\u0000\u0000\u0ec5\u0ec6\u0007\u0016\u0000\u0000\u0ec6\u0ec7"+ + "\u0007\n\u0000\u0000\u0ec7\u0ec8\u0007\u0007\u0000\u0000\u0ec8\u0ec9\u0007"+ + "\u000e\u0000\u0000\u0ec9\u0eca\u0007\n\u0000\u0000\u0eca\u0ecb\u0007\t"+ + "\u0000\u0000\u0ecb\u029e\u0001\u0000\u0000\u0000\u0ecc\u0ecd\u0007\t\u0000"+ + "\u0000\u0ecd\u0ece\u0007\n\u0000\u0000\u0ece\u0ecf\u0007\r\u0000\u0000"+ + "\u0ecf\u0ed0\u0007\u0011\u0000\u0000\u0ed0\u0ed1\u0007\u0005\u0000\u0000"+ + "\u0ed1\u0ed2\u0007\u0006\u0000\u0000\u0ed2\u0ed3\u0007\u0011\u0000\u0000"+ + "\u0ed3\u0ed4\u0007\u000b\u0000\u0000\u0ed4\u0ed5\u0007\u0005\u0000\u0000"+ + "\u0ed5\u0ed6\u0007\u0012\u0000\u0000\u0ed6\u0ed7\u0007\u0006\u0000\u0000"+ + "\u0ed7\u0ed8\u0007\n\u0000\u0000\u0ed8\u02a0\u0001\u0000\u0000\u0000\u0ed9"+ + "\u0eda\u0007\t\u0000\u0000\u0eda\u0edb\u0007\n\u0000\u0000\u0edb\u0edc"+ + "\u0007\r\u0000\u0000\u0edc\u0edd\u0007\u001b\u0000\u0000\u0edd\u0ede\u0007"+ + "\n\u0000\u0000\u0ede\u0edf\u0007\r\u0000\u0000\u0edf\u02a2\u0001\u0000"+ + "\u0000\u0000\u0ee0\u0ee1\u0007\t\u0000\u0000\u0ee1\u0ee2\u0007\n\u0000"+ + "\u0000\u0ee2\u0ee3\u0007\t\u0000\u0000\u0ee3\u0ee4\u0007\t\u0000\u0000"+ + "\u0ee4\u0ee5\u0007\u0011\u0000\u0000\u0ee5\u0ee6\u0007\u0013\u0000\u0000"+ + "\u0ee6\u0ee7\u0007\u0007\u0000\u0000\u0ee7\u02a4\u0001\u0000\u0000\u0000"+ + "\u0ee8\u0ee9\u0007\t\u0000\u0000\u0ee9\u0eea\u0007\n\u0000\u0000\u0eea"+ + "\u0eeb\u0007\u0010\u0000\u0000\u0eeb\u02a6\u0001\u0000\u0000\u0000\u0eec"+ + "\u0eed\u0007\t\u0000\u0000\u0eed\u0eee\u0007\u0014\u0000\u0000\u0eee\u0eef"+ + "\u0007\u0005\u0000\u0000\u0eef\u0ef0\u0007\r\u0000\u0000\u0ef0\u0ef1\u0007"+ + "\n\u0000\u0000\u0ef1\u02a8\u0001\u0000\u0000\u0000\u0ef2\u0ef3\u0007\t"+ + "\u0000\u0000\u0ef3\u0ef4\u0007\u0014\u0000\u0000\u0ef4\u0ef5\u0007\u0013"+ + "\u0000\u0000\u0ef5\u0ef6\u0007\u001c\u0000\u0000\u0ef6\u02aa\u0001\u0000"+ + "\u0000\u0000\u0ef7\u0ef8\u0007\t\u0000\u0000\u0ef8\u0ef9\u0007\u0011\u0000"+ + "\u0000\u0ef9\u0efa\u0007\u000f\u0000\u0000\u0efa\u0efb\u0007\u0018\u0000"+ + "\u0000\u0efb\u0efc\u0007\u0006\u0000\u0000\u0efc\u0efd\u0007\n\u0000\u0000"+ + "\u0efd\u02ac\u0001\u0000\u0000\u0000\u0efe\u0eff\u0007\t\u0000\u0000\u0eff"+ + "\u0f00\u0007\u0007\u0000\u0000\u0f00\u0f01\u0007\u0005\u0000\u0000\u0f01"+ + "\u0f02\u0007\u0018\u0000\u0000\u0f02\u0f03\u0007\t\u0000\u0000\u0f03\u0f04"+ + "\u0007\u0014\u0000\u0000\u0f04\u0f05\u0007\u0013\u0000\u0000\u0f05\u0f06"+ + "\u0007\u0010\u0000\u0000\u0f06\u02ae\u0001\u0000\u0000\u0000\u0f07\u0f08"+ + "\u0007\t\u0000\u0000\u0f08\u0f09\u0007\u0010\u0000\u0000\u0f09\u0f0a\u0007"+ + "\u0005\u0000\u0000\u0f0a\u0f0b\u0007\u0012\u0000\u0000\u0f0b\u0f0c\u0007"+ + "\u0006\u0000\u0000\u0f0c\u0f0d\u0007\n\u0000\u0000\u0f0d\u02b0\u0001\u0000"+ + "\u0000\u0000\u0f0e\u0f0f\u0007\t\u0000\u0000\u0f0f\u0f10\u0007\u0010\u0000"+ + "\u0000\u0f10\u0f11\u0007\u0005\u0000\u0000\u0f11\u0f12\u0007\u0007\u0000"+ + "\u0000\u0f12\u0f13\u0007\f\u0000\u0000\u0f13\u0f14\u0007\u0005\u0000\u0000"+ + "\u0f14\u0f15\u0007\u0006\u0000\u0000\u0f15\u0f16\u0007\u0013\u0000\u0000"+ + "\u0f16\u0f17\u0007\u0007\u0000\u0000\u0f17\u0f18\u0007\n\u0000\u0000\u0f18"+ + "\u02b2\u0001\u0000\u0000\u0000\u0f19\u0f1a\u0007\t\u0000\u0000\u0f1a\u0f1b"+ + "\u0007\u0010\u0000\u0000\u0f1b\u0f1c\u0007\u0005\u0000\u0000\u0f1c\u0f1d"+ + "\u0007\r\u0000\u0000\u0f1d\u0f1e\u0007\u0010\u0000\u0000\u0f1e\u02b4\u0001"+ + "\u0000\u0000\u0000\u0f1f\u0f20\u0007\t\u0000\u0000\u0f20\u0f21\u0007\u0010"+ + "\u0000\u0000\u0f21\u0f22\u0007\u0005\u0000\u0000\u0f22\u0f23\u0007\u0010"+ + "\u0000\u0000\u0f23\u0f24\u0007\n\u0000\u0000\u0f24\u0f25\u0007\u000f\u0000"+ + "\u0000\u0f25\u0f26\u0007\n\u0000\u0000\u0f26\u0f27\u0007\u0007\u0000\u0000"+ + "\u0f27\u0f28\u0007\u0010\u0000\u0000\u0f28\u02b6\u0001\u0000\u0000\u0000"+ + "\u0f29\u0f2a\u0007\t\u0000\u0000\u0f2a\u0f2b\u0007\u0010\u0000\u0000\u0f2b"+ + "\u0f2c\u0007\u0005\u0000\u0000\u0f2c\u0f2d\u0007\u0010\u0000\u0000\u0f2d"+ + "\u0f2e\u0007\u0011\u0000\u0000\u0f2e\u0f2f\u0007\t\u0000\u0000\u0f2f\u0f30"+ + "\u0007\u0010\u0000\u0000\u0f30\u0f31\u0007\u0011\u0000\u0000\u0f31\u0f32"+ + "\u0007\u000e\u0000\u0000\u0f32\u0f33\u0007\t\u0000\u0000\u0f33\u02b8\u0001"+ + "\u0000\u0000\u0000\u0f34\u0f35\u0007\t\u0000\u0000\u0f35\u0f36\u0007\u0010"+ + "\u0000\u0000\u0f36\u0f37\u0007\f\u0000\u0000\u0f37\u0f38\u0007\u0011\u0000"+ + "\u0000\u0f38\u0f39\u0007\u0007\u0000\u0000\u0f39\u02ba\u0001\u0000\u0000"+ + "\u0000\u0f3a\u0f3b\u0007\t\u0000\u0000\u0f3b\u0f3c\u0007\u0010\u0000\u0000"+ + "\u0f3c\u0f3d\u0007\f\u0000\u0000\u0f3d\u0f3e\u0007\u0013\u0000\u0000\u0f3e"+ + "\u0f3f\u0007\u0016\u0000\u0000\u0f3f\u0f40\u0007\u0010\u0000\u0000\u0f40"+ + "\u02bc\u0001\u0000\u0000\u0000\u0f41\u0f42\u0007\t\u0000\u0000\u0f42\u0f43"+ + "\u0007\u0010\u0000\u0000\u0f43\u0f44\u0007\u0013\u0000\u0000\u0f44\u0f45"+ + "\u0007\r\u0000\u0000\u0f45\u0f46\u0007\u0005\u0000\u0000\u0f46\u0f47\u0007"+ + "\u0017\u0000\u0000\u0f47\u0f48\u0007\n\u0000\u0000\u0f48\u02be\u0001\u0000"+ + "\u0000\u0000\u0f49\u0f4a\u0007\t\u0000\u0000\u0f4a\u0f4b\u0007\u0010\u0000"+ + "\u0000\u0f4b\u0f4c\u0007\r\u0000\u0000\u0f4c\u0f4d\u0007\u0011\u0000\u0000"+ + "\u0f4d\u0f4e\u0007\u000e\u0000\u0000\u0f4e\u0f4f\u0007\u0010\u0000\u0000"+ + "\u0f4f\u02c0\u0001\u0000\u0000\u0000\u0f50\u0f51\u0007\t\u0000\u0000\u0f51"+ + "\u0f52\u0007\u0010\u0000\u0000\u0f52\u0f53\u0007\r\u0000\u0000\u0f53\u0f54"+ + "\u0007\u0011\u0000\u0000\u0f54\u0f55\u0007\u0018\u0000\u0000\u0f55\u02c2"+ + "\u0001\u0000\u0000\u0000\u0f56\u0f57\u0007\t\u0000\u0000\u0f57\u0f58\u0007"+ + "\b\u0000\u0000\u0f58\u0f59\u0007\t\u0000\u0000\u0f59\u0f5a\u0007\u0011"+ + "\u0000\u0000\u0f5a\u0f5b\u0007\f\u0000\u0000\u0f5b\u02c4\u0001\u0000\u0000"+ + "\u0000\u0f5c\u0f5d\u0007\t\u0000\u0000\u0f5d\u0f5e\u0007\b\u0000\u0000"+ + "\u0f5e\u0f5f\u0007\t\u0000\u0000\u0f5f\u0f60\u0007\u0010\u0000\u0000\u0f60"+ + "\u0f61\u0007\n\u0000\u0000\u0f61\u0f62\u0007\u000f\u0000\u0000\u0f62\u02c6"+ + "\u0001\u0000\u0000\u0000\u0f63\u0f64\u0007\u0010\u0000\u0000\u0f64\u0f65"+ + "\u0007\u0005\u0000\u0000\u0f65\u0f66\u0007\u0012\u0000\u0000\u0f66\u0f67"+ + "\u0007\u0006\u0000\u0000\u0f67\u0f68\u0007\n\u0000\u0000\u0f68\u0f69\u0007"+ + "\t\u0000\u0000\u0f69\u02c8\u0001\u0000\u0000\u0000\u0f6a\u0f6b\u0007\u000b"+ + "\u0000\u0000\u0f6b\u0f6c\u0007\u0010\u0000\u0000\u0f6c\u0f6d\u0007\u0005"+ + "\u0000\u0000\u0f6d\u0f6e\u0007\u0012\u0000\u0000\u0f6e\u0f6f\u0007\u0006"+ + "\u0000\u0000\u0f6f\u0f70\u0007\n\u0000\u0000\u0f70\u0f71\u0007\t\u0000"+ + "\u0000\u0f71\u02ca\u0001\u0000\u0000\u0000\u0f72\u0f73\u0007\u0010\u0000"+ + "\u0000\u0f73\u0f74\u0007\u0005\u0000\u0000\u0f74\u0f75\u0007\u0012\u0000"+ + "\u0000\u0f75\u0f76\u0007\u0006\u0000\u0000\u0f76\u0f77\u0007\n\u0000\u0000"+ + "\u0f77\u0f78\u0007\t\u0000\u0000\u0f78\u0f79\u0007\u0018\u0000\u0000\u0f79"+ + "\u0f7a\u0007\u0005\u0000\u0000\u0f7a\u0f7b\u0007\u000e\u0000\u0000\u0f7b"+ + "\u0f7c\u0007\n\u0000\u0000\u0f7c\u02cc\u0001\u0000\u0000\u0000\u0f7d\u0f7e"+ + "\u0007\u0010\u0000\u0000\u0f7e\u0f7f\u0007\n\u0000\u0000\u0f7f\u0f80\u0007"+ + "\u000f\u0000\u0000\u0f80\u0f81\u0007\u0018\u0000\u0000\u0f81\u02ce\u0001"+ + "\u0000\u0000\u0000\u0f82\u0f83\u0007\u0010\u0000\u0000\u0f83\u0f84\u0007"+ + "\n\u0000\u0000\u0f84\u0f85\u0007\u000f\u0000\u0000\u0f85\u0f86\u0007\u0018"+ + "\u0000\u0000\u0f86\u0f87\u0007\u0006\u0000\u0000\u0f87\u0f88\u0007\u0005"+ + "\u0000\u0000\u0f88\u0f89\u0007\u0010\u0000\u0000\u0f89\u0f8a\u0007\n\u0000"+ + "\u0000\u0f8a\u02d0\u0001\u0000\u0000\u0000\u0f8b\u0f8c\u0007\u0010\u0000"+ + "\u0000\u0f8c\u0f8d\u0007\n\u0000\u0000\u0f8d\u0f8e\u0007\u000f\u0000\u0000"+ + "\u0f8e\u0f8f\u0007\u0018\u0000\u0000\u0f8f\u0f90\u0007\u0013\u0000\u0000"+ + "\u0f90\u0f91\u0007\r\u0000\u0000\u0f91\u0f92\u0007\u0005\u0000\u0000\u0f92"+ + "\u0f93\u0007\r\u0000\u0000\u0f93\u0f94\u0007\b\u0000\u0000\u0f94\u02d2"+ + "\u0001\u0000\u0000\u0000\u0f95\u0f96\u0007\u0010\u0000\u0000\u0f96\u0f97"+ + "\u0007\n\u0000\u0000\u0f97\u0f98\u0007\u001a\u0000\u0000\u0f98\u0f99\u0007"+ + "\u0010\u0000\u0000\u0f99\u02d4\u0001\u0000\u0000\u0000\u0f9a\u0f9b\u0007"+ + "\u0010\u0000\u0000\u0f9b\u0f9c\u0007\r\u0000\u0000\u0f9c\u0f9d\u0007\u0005"+ + "\u0000\u0000\u0f9d\u0f9e\u0007\u0007\u0000\u0000\u0f9e\u0f9f\u0007\t\u0000"+ + "\u0000\u0f9f\u0fa0\u0007\u0005\u0000\u0000\u0fa0\u0fa1\u0007\u000e\u0000"+ + "\u0000\u0fa1\u0fa2\u0007\u0010\u0000\u0000\u0fa2\u0fa3\u0007\u0011\u0000"+ + "\u0000\u0fa3\u0fa4\u0007\u0013\u0000\u0000\u0fa4\u0fa5\u0007\u0007\u0000"+ + "\u0000\u0fa5\u02d6\u0001\u0000\u0000\u0000\u0fa6\u0fa7\u0007\u0010\u0000"+ + "\u0000\u0fa7\u0fa8\u0007\r\u0000\u0000\u0fa8\u0fa9\u0007\u0011\u0000\u0000"+ + "\u0fa9\u0faa\u0007\u0017\u0000\u0000\u0faa\u0fab\u0007\u0017\u0000\u0000"+ + "\u0fab\u0fac\u0007\n\u0000\u0000\u0fac\u0fad\u0007\r\u0000\u0000\u0fad"+ + "\u02d8\u0001\u0000\u0000\u0000\u0fae\u0faf\u0007\u0010\u0000\u0000\u0faf"+ + "\u0fb0\u0007\r\u0000\u0000\u0fb0\u0fb1\u0007\u0016\u0000\u0000\u0fb1\u0fb2"+ + "\u0007\u0007\u0000\u0000\u0fb2\u0fb3\u0007\u000e\u0000\u0000\u0fb3\u0fb4"+ + "\u0007\u0005\u0000\u0000\u0fb4\u0fb5\u0007\u0010\u0000\u0000\u0fb5\u0fb6"+ + "\u0007\n\u0000\u0000\u0fb6\u02da\u0001\u0000\u0000\u0000\u0fb7\u0fb8\u0007"+ + "\u0010\u0000\u0000\u0fb8\u0fb9\u0007\r\u0000\u0000\u0fb9\u0fba\u0007\u0016"+ + "\u0000\u0000\u0fba\u0fbb\u0007\t\u0000\u0000\u0fbb\u0fbc\u0007\u0010\u0000"+ + "\u0000\u0fbc\u0fbd\u0007\n\u0000\u0000\u0fbd\u0fbe\u0007\f\u0000\u0000"+ + "\u0fbe\u02dc\u0001\u0000\u0000\u0000\u0fbf\u0fc0\u0007\u0010\u0000\u0000"+ + "\u0fc0\u0fc1\u0007\b\u0000\u0000\u0fc1\u0fc2\u0007\u0018\u0000\u0000\u0fc2"+ + "\u0fc3\u0007\n\u0000\u0000\u0fc3\u02de\u0001\u0000\u0000\u0000\u0fc4\u0fc5"+ + "\u0007\u0010\u0000\u0000\u0fc5\u0fc6\u0007\b\u0000\u0000\u0fc6\u0fc7\u0007"+ + "\u0018\u0000\u0000\u0fc7\u0fc8\u0007\n\u0000\u0000\u0fc8\u0fc9\u0007\t"+ + "\u0000\u0000\u0fc9\u02e0\u0001\u0000\u0000\u0000\u0fca\u0fcb\u0007\u0016"+ + "\u0000\u0000\u0fcb\u0fcc\u0007\u0007\u0000\u0000\u0fcc\u0fcd\u0007\u0012"+ + "\u0000\u0000\u0fcd\u0fce\u0007\u0013\u0000\u0000\u0fce\u0fcf\u0007\u0016"+ + "\u0000\u0000\u0fcf\u0fd0\u0007\u0007\u0000\u0000\u0fd0\u0fd1\u0007\f\u0000"+ + "\u0000\u0fd1\u0fd2\u0007\n\u0000\u0000\u0fd2\u0fd3\u0007\f\u0000\u0000"+ + "\u0fd3\u02e2\u0001\u0000\u0000\u0000\u0fd4\u0fd5\u0007\u0016\u0000\u0000"+ + "\u0fd5\u0fd6\u0007\u0007\u0000\u0000\u0fd6\u0fd7\u0007\u000e\u0000\u0000"+ + "\u0fd7\u0fd8\u0007\u0013\u0000\u0000\u0fd8\u0fd9\u0007\u000f\u0000\u0000"+ + "\u0fd9\u0fda\u0007\u000f\u0000\u0000\u0fda\u0fdb\u0007\u0011\u0000\u0000"+ + "\u0fdb\u0fdc\u0007\u0010\u0000\u0000\u0fdc\u0fdd\u0007\u0010\u0000\u0000"+ + "\u0fdd\u0fde\u0007\n\u0000\u0000\u0fde\u0fdf\u0007\f\u0000\u0000\u0fdf"+ + "\u02e4\u0001\u0000\u0000\u0000\u0fe0\u0fe1\u0007\u0016\u0000\u0000\u0fe1"+ + "\u0fe2\u0007\u0007\u0000\u0000\u0fe2\u0fe3\u0007\n\u0000\u0000\u0fe3\u0fe4"+ + "\u0007\u0007\u0000\u0000\u0fe4\u0fe5\u0007\u000e\u0000\u0000\u0fe5\u0fe6"+ + "\u0007\r\u0000\u0000\u0fe6\u0fe7\u0007\b\u0000\u0000\u0fe7\u0fe8\u0007"+ + "\u0018\u0000\u0000\u0fe8\u0fe9\u0007\u0010\u0000\u0000\u0fe9\u0fea\u0007"+ + "\n\u0000\u0000\u0fea\u0feb\u0007\f\u0000\u0000\u0feb\u02e6\u0001\u0000"+ + "\u0000\u0000\u0fec\u0fed\u0007\u0016\u0000\u0000\u0fed\u0fee\u0007\u0007"+ + "\u0000\u0000\u0fee\u0fef\u0007\u0015\u0000\u0000\u0fef\u0ff0\u0007\u0007"+ + "\u0000\u0000\u0ff0\u0ff1\u0007\u0013\u0000\u0000\u0ff1\u0ff2\u0007\u001c"+ + "\u0000\u0000\u0ff2\u0ff3\u0007\u0007\u0000\u0000\u0ff3\u02e8\u0001\u0000"+ + "\u0000\u0000\u0ff4\u0ff5\u0007\u0016\u0000\u0000\u0ff5\u0ff6\u0007\u0007"+ + "\u0000\u0000\u0ff6\u0ff7\u0007\u0006\u0000\u0000\u0ff7\u0ff8\u0007\u0011"+ + "\u0000\u0000\u0ff8\u0ff9\u0007\t\u0000\u0000\u0ff9\u0ffa\u0007\u0010\u0000"+ + "\u0000\u0ffa\u0ffb\u0007\n\u0000\u0000\u0ffb\u0ffc\u0007\u0007\u0000\u0000"+ + "\u0ffc\u02ea\u0001\u0000\u0000\u0000\u0ffd\u0ffe\u0007\u0016\u0000\u0000"+ + "\u0ffe\u0fff\u0007\u0007\u0000\u0000\u0fff\u1000\u0007\u0006\u0000\u0000"+ + "\u1000\u1001\u0007\u0013\u0000\u0000\u1001\u1002\u0007\u0017\u0000\u0000"+ + "\u1002\u1003\u0007\u0017\u0000\u0000\u1003\u1004\u0007\n\u0000\u0000\u1004"+ + "\u1005\u0007\f\u0000\u0000\u1005\u02ec\u0001\u0000\u0000\u0000\u1006\u1007"+ + "\u0007\u0016\u0000\u0000\u1007\u1008\u0007\u0007\u0000\u0000\u1008\u1009"+ + "\u0007\u0010\u0000\u0000\u1009\u100a\u0007\u0011\u0000\u0000\u100a\u100b"+ + "\u0007\u0006\u0000\u0000\u100b\u02ee\u0001\u0000\u0000\u0000\u100c\u100d"+ + "\u0007\u0016\u0000\u0000\u100d\u100e\u0007\u0018\u0000\u0000\u100e\u100f"+ + "\u0007\f\u0000\u0000\u100f\u1010\u0007\u0005\u0000\u0000\u1010\u1011\u0007"+ + "\u0010\u0000\u0000\u1011\u1012\u0007\n\u0000\u0000\u1012\u02f0\u0001\u0000"+ + "\u0000\u0000\u1013\u1014\u0007\u001b\u0000\u0000\u1014\u1015\u0007\u0005"+ + "\u0000\u0000\u1015\u1016\u0007\u000e\u0000\u0000\u1016\u1017\u0007\u0016"+ + "\u0000\u0000\u1017\u1018\u0007\u0016\u0000\u0000\u1018\u1019\u0007\u000f"+ + "\u0000\u0000\u1019\u02f2\u0001\u0000\u0000\u0000\u101a\u101b\u0007\u001b"+ + "\u0000\u0000\u101b\u101c\u0007\u0005\u0000\u0000\u101c\u101d\u0007\u0006"+ + "\u0000\u0000\u101d\u101e\u0007\u0011\u0000\u0000\u101e\u101f\u0007\f\u0000"+ + "\u0000\u101f\u02f4\u0001\u0000\u0000\u0000\u1020\u1021\u0007\u001b\u0000"+ + "\u0000\u1021\u1022\u0007\u0005\u0000\u0000\u1022\u1023\u0007\u0006\u0000"+ + "\u0000\u1023\u1024\u0007\u0011\u0000\u0000\u1024\u1025\u0007\f\u0000\u0000"+ + "\u1025\u1026\u0007\u0005\u0000\u0000\u1026\u1027\u0007\u0010\u0000\u0000"+ + "\u1027\u1028\u0007\n\u0000\u0000\u1028\u02f6\u0001\u0000\u0000\u0000\u1029"+ + "\u102a\u0007\u001b\u0000\u0000\u102a\u102b\u0007\u0005\u0000\u0000\u102b"+ + "\u102c\u0007\u0006\u0000\u0000\u102c\u102d\u0007\u0011\u0000\u0000\u102d"+ + "\u102e\u0007\f\u0000\u0000\u102e\u102f\u0007\u0005\u0000\u0000\u102f\u1030"+ + "\u0007\u0010\u0000\u0000\u1030\u1031\u0007\u0013\u0000\u0000\u1031\u1032"+ + "\u0007\r\u0000\u0000\u1032\u02f8\u0001\u0000\u0000\u0000\u1033\u1034\u0007"+ + "\u001b\u0000\u0000\u1034\u1035\u0007\u0005\u0000\u0000\u1035\u1036\u0007"+ + "\r\u0000\u0000\u1036\u1037\u0007\b\u0000\u0000\u1037\u1038\u0007\u0011"+ + "\u0000\u0000\u1038\u1039\u0007\u0007\u0000\u0000\u1039\u103a\u0007\u0017"+ + "\u0000\u0000\u103a\u02fa\u0001\u0000\u0000\u0000\u103b\u103c\u0007\u001b"+ + "\u0000\u0000\u103c\u103d\u0007\n\u0000\u0000\u103d\u103e\u0007\r\u0000"+ + "\u0000\u103e\u103f\u0007\t\u0000\u0000\u103f\u1040\u0007\u0011\u0000\u0000"+ + "\u1040\u1041\u0007\u0013\u0000\u0000\u1041\u1042\u0007\u0007\u0000\u0000"+ + "\u1042\u02fc\u0001\u0000\u0000\u0000\u1043\u1044\u0007\u001b\u0000\u0000"+ + "\u1044\u1045\u0007\u0011\u0000\u0000\u1045\u1046\u0007\n\u0000\u0000\u1046"+ + "\u1047\u0007\u001c\u0000\u0000\u1047\u02fe\u0001\u0000\u0000\u0000\u1048"+ + "\u1049\u0007\u001b\u0000\u0000\u1049\u104a\u0007\u0013\u0000\u0000\u104a"+ + "\u104b\u0007\u0006\u0000\u0000\u104b\u104c\u0007\u0005\u0000\u0000\u104c"+ + "\u104d\u0007\u0010\u0000\u0000\u104d\u104e\u0007\u0011\u0000\u0000\u104e"+ + "\u104f\u0007\u0006\u0000\u0000\u104f\u1050\u0007\n\u0000\u0000\u1050\u0300"+ + "\u0001\u0000\u0000\u0000\u1051\u1052\u0007\u001c\u0000\u0000\u1052\u1053"+ + "\u0007\u0014\u0000\u0000\u1053\u1054\u0007\u0011\u0000\u0000\u1054\u1055"+ + "\u0007\u0010\u0000\u0000\u1055\u1056\u0007\n\u0000\u0000\u1056\u1057\u0007"+ + "\t\u0000\u0000\u1057\u1058\u0007\u0018\u0000\u0000\u1058\u1059\u0007\u0005"+ + "\u0000\u0000\u1059\u105a\u0007\u000e\u0000\u0000\u105a\u105b\u0007\n\u0000"+ + "\u0000\u105b\u0302\u0001\u0000\u0000\u0000\u105c\u105d\u0007\u001c\u0000"+ + "\u0000\u105d\u105e\u0007\u0011\u0000\u0000\u105e\u105f\u0007\u0010\u0000"+ + "\u0000\u105f\u1060\u0007\u0014\u0000\u0000\u1060\u1061\u0007\u0013\u0000"+ + "\u0000\u1061\u1062\u0007\u0016\u0000\u0000\u1062\u1063\u0007\u0010\u0000"+ + "\u0000\u1063\u0304\u0001\u0000\u0000\u0000\u1064\u1065\u0007\u001c\u0000"+ + "\u0000\u1065\u1066\u0007\u0013\u0000\u0000\u1066\u1067\u0007\r\u0000\u0000"+ + "\u1067\u1068\u0007\u0015\u0000\u0000\u1068\u0306\u0001\u0000\u0000\u0000"+ + "\u1069\u106a\u0007\u001c\u0000\u0000\u106a\u106b\u0007\r\u0000\u0000\u106b"+ + "\u106c\u0007\u0005\u0000\u0000\u106c\u106d\u0007\u0018\u0000\u0000\u106d"+ + "\u106e\u0007\u0018\u0000\u0000\u106e\u106f\u0007\n\u0000\u0000\u106f\u1070"+ + "\u0007\r\u0000\u0000\u1070\u0308\u0001\u0000\u0000\u0000\u1071\u1072\u0007"+ + "\u001c\u0000\u0000\u1072\u1073\u0007\r\u0000\u0000\u1073\u1074\u0007\u0011"+ + "\u0000\u0000\u1074\u1075\u0007\u0010\u0000\u0000\u1075\u1076\u0007\n\u0000"+ + "\u0000\u1076\u030a\u0001\u0000\u0000\u0000\u1077\u1078\u0007\u001a\u0000"+ + "\u0000\u1078\u1079\u0007\u000f\u0000\u0000\u1079\u107a\u0007\u0006\u0000"+ + "\u0000\u107a\u030c\u0001\u0000\u0000\u0000\u107b\u107c\u0007\b\u0000\u0000"+ + "\u107c\u107d\u0007\n\u0000\u0000\u107d\u107e\u0007\u0005\u0000\u0000\u107e"+ + "\u107f\u0007\r\u0000\u0000\u107f\u030e\u0001\u0000\u0000\u0000\u1080\u1081"+ + "\u0007\b\u0000\u0000\u1081\u1082\u0007\n\u0000\u0000\u1082\u1083\u0007"+ + "\t\u0000\u0000\u1083\u0310\u0001\u0000\u0000\u0000\u1084\u1085\u0007\u000b"+ + "\u0000\u0000\u1085\u1086\u0007\u0013\u0000\u0000\u1086\u1087\u0007\u0007"+ + "\u0000\u0000\u1087\u1088\u0007\n\u0000\u0000\u1088\u0312\u0001\u0000\u0000"+ + "\u0000\u1089\u108a\u0007\u0012\u0000\u0000\u108a\u108b\u0007\n\u0000\u0000"+ + "\u108b\u108c\u0007\u0010\u0000\u0000\u108c\u108d\u0007\u001c\u0000\u0000"+ + "\u108d\u108e\u0007\n\u0000\u0000\u108e\u108f\u0007\n\u0000\u0000\u108f"+ + "\u1090\u0007\u0007\u0000\u0000\u1090\u0314\u0001\u0000\u0000\u0000\u1091"+ + "\u1092\u0007\u0012\u0000\u0000\u1092\u1093\u0007\u0011\u0000\u0000\u1093"+ + "\u1094\u0007\u0017\u0000\u0000\u1094\u1095\u0007\u0011\u0000\u0000\u1095"+ + "\u1096\u0007\u0007\u0000\u0000\u1096\u1097\u0007\u0010\u0000\u0000\u1097"+ + "\u0316\u0001\u0000\u0000\u0000\u1098\u1099\u0007\u0012\u0000\u0000\u1099"+ + "\u109a\u0007\u0011\u0000\u0000\u109a\u109b\u0007\u0010\u0000\u0000\u109b"+ + "\u0318\u0001\u0000\u0000\u0000\u109c\u109d\u0007\u0012\u0000\u0000\u109d"+ + "\u109e\u0007\u0013\u0000\u0000\u109e\u109f\u0007\u0013\u0000\u0000\u109f"+ + "\u10a0\u0007\u0006\u0000\u0000\u10a0\u10a1\u0007\n\u0000\u0000\u10a1\u10a2"+ + "\u0007\u0005\u0000\u0000\u10a2\u10a3\u0007\u0007\u0000\u0000\u10a3\u031a"+ + "\u0001\u0000\u0000\u0000\u10a4\u10a5\u0007\u000e\u0000\u0000\u10a5\u10a6"+ + "\u0007\u0014\u0000\u0000\u10a6\u10a7\u0007\u0005\u0000\u0000\u10a7\u10a8"+ + "\u0007\r\u0000\u0000\u10a8\u031c\u0001\u0000\u0000\u0000\u10a9\u10aa\u0007"+ + "\u000e\u0000\u0000\u10aa\u10ab\u0007\u0014\u0000\u0000\u10ab\u10ac\u0007"+ + "\u0005\u0000\u0000\u10ac\u10ad\u0007\r\u0000\u0000\u10ad\u10ae\u0007\u0005"+ + "\u0000\u0000\u10ae\u10af\u0007\u000e\u0000\u0000\u10af\u10b0\u0007\u0010"+ + "\u0000\u0000\u10b0\u10b1\u0007\n\u0000\u0000\u10b1\u10b2\u0007\r\u0000"+ + "\u0000\u10b2\u031e\u0001\u0000\u0000\u0000\u10b3\u10b4\u0007\u000e\u0000"+ + "\u0000\u10b4\u10b5\u0007\u0013\u0000\u0000\u10b5\u10b6\u0007\u0005\u0000"+ + "\u0000\u10b6\u10b7\u0007\u0006\u0000\u0000\u10b7\u10b8\u0007\n\u0000\u0000"+ + "\u10b8\u10b9\u0007\t\u0000\u0000\u10b9\u10ba\u0007\u000e\u0000\u0000\u10ba"+ + "\u10bb\u0007\n\u0000\u0000\u10bb\u0320\u0001\u0000\u0000\u0000\u10bc\u10bd"+ + "\u0007\f\u0000\u0000\u10bd\u10be\u0007\n\u0000\u0000\u10be\u10bf\u0007"+ + "\u000e\u0000\u0000\u10bf\u0322\u0001\u0000\u0000\u0000\u10c0\u10c1\u0007"+ + "\f\u0000\u0000\u10c1\u10c2\u0007\n\u0000\u0000\u10c2\u10c3\u0007\u000e"+ + "\u0000\u0000\u10c3\u10c4\u0007\u0011\u0000\u0000\u10c4\u10c5\u0007\u000f"+ + "\u0000\u0000\u10c5\u10c6\u0007\u0005\u0000\u0000\u10c6\u10c7\u0007\u0006"+ + "\u0000\u0000\u10c7\u0324\u0001\u0000\u0000\u0000\u10c8\u10c9\u0007\n\u0000"+ + "\u0000\u10c9\u10ca\u0007\u001a\u0000\u0000\u10ca\u10cb\u0007\u0011\u0000"+ + "\u0000\u10cb\u10cc\u0007\t\u0000\u0000\u10cc\u10cd\u0007\u0010\u0000\u0000"+ + "\u10cd\u10ce\u0007\t\u0000\u0000\u10ce\u0326\u0001\u0000\u0000\u0000\u10cf"+ + "\u10d0\u0007\n\u0000\u0000\u10d0\u10d1\u0007\u001a\u0000\u0000\u10d1\u10d2"+ + "\u0007\u0010\u0000\u0000\u10d2\u10d3\u0007\r\u0000\u0000\u10d3\u10d4\u0007"+ + "\u0005\u0000\u0000\u10d4\u10d5\u0007\u000e\u0000\u0000\u10d5\u10d6\u0007"+ + "\u0010\u0000\u0000\u10d6\u0328\u0001\u0000\u0000\u0000\u10d7\u10d8\u0007"+ + "\u0019\u0000\u0000\u10d8\u10d9\u0007\u0006\u0000\u0000\u10d9\u10da\u0007"+ + "\u0013\u0000\u0000\u10da\u10db\u0007\u0005\u0000\u0000\u10db\u10dc\u0007"+ + "\u0010\u0000\u0000\u10dc\u032a\u0001\u0000\u0000\u0000\u10dd\u10de\u0007"+ + "\u0017\u0000\u0000\u10de\u10df\u0007\r\u0000\u0000\u10df\u10e0\u0007\n"+ + "\u0000\u0000\u10e0\u10e1\u0007\u0005\u0000\u0000\u10e1\u10e2\u0007\u0010"+ + "\u0000\u0000\u10e2\u10e3\u0007\n\u0000\u0000\u10e3\u10e4\u0007\t\u0000"+ + "\u0000\u10e4\u10e5\u0007\u0010\u0000\u0000\u10e5\u032c\u0001\u0000\u0000"+ + "\u0000\u10e6\u10e7\u0007\u0011\u0000\u0000\u10e7\u10e8\u0007\u0007\u0000"+ + "\u0000\u10e8\u10e9\u0007\u0013\u0000\u0000\u10e9\u10ea\u0007\u0016\u0000"+ + "\u0000\u10ea\u10eb\u0007\u0010\u0000\u0000\u10eb\u032e\u0001\u0000\u0000"+ + "\u0000\u10ec\u10ed\u0007\u0011\u0000\u0000\u10ed\u10ee\u0007\u0007\u0000"+ + "\u0000\u10ee\u10ef\u0007\u0010\u0000\u0000\u10ef\u0330\u0001\u0000\u0000"+ + "\u0000\u10f0\u10f1\u0007\u0011\u0000\u0000\u10f1\u10f2\u0007\u0007\u0000"+ + "\u0000\u10f2\u10f3\u0007\u0010\u0000\u0000\u10f3\u10f4\u0007\n\u0000\u0000"+ + "\u10f4\u10f5\u0007\u0017\u0000\u0000\u10f5\u10f6\u0007\n\u0000\u0000\u10f6"+ + "\u10f7\u0007\r\u0000\u0000\u10f7\u0332\u0001\u0000\u0000\u0000\u10f8\u10f9"+ + "\u0007\u0011\u0000\u0000\u10f9\u10fa\u0007\u0007\u0000\u0000\u10fa\u10fb"+ + "\u0007\u0010\u0000\u0000\u10fb\u10fc\u0007\n\u0000\u0000\u10fc\u10fd\u0007"+ + "\r\u0000\u0000\u10fd\u10fe\u0007\u001b\u0000\u0000\u10fe\u10ff\u0007\u0005"+ + "\u0000\u0000\u10ff\u1100\u0007\u0006\u0000\u0000\u1100\u0334\u0001\u0000"+ + "\u0000\u0000\u1101\u1102\u0007\u0006\u0000\u0000\u1102\u1103\u0007\n\u0000"+ + "\u0000\u1103\u1104\u0007\u0005\u0000\u0000\u1104\u1105\u0007\t\u0000\u0000"+ + "\u1105\u1106\u0007\u0010\u0000\u0000\u1106\u0336\u0001\u0000\u0000\u0000"+ + "\u1107\u1108\u0007\u0007\u0000\u0000\u1108\u1109\u0007\u0005\u0000\u0000"+ + "\u1109\u110a\u0007\u0010\u0000\u0000\u110a\u110b\u0007\u0011\u0000\u0000"+ + "\u110b\u110c\u0007\u0013\u0000\u0000\u110c\u110d\u0007\u0007\u0000\u0000"+ + "\u110d\u110e\u0007\u0005\u0000\u0000\u110e\u110f\u0007\u0006\u0000\u0000"+ + "\u110f\u0338\u0001\u0000\u0000\u0000\u1110\u1111\u0007\u0007\u0000\u0000"+ + "\u1111\u1112\u0007\u000e\u0000\u0000\u1112\u1113\u0007\u0014\u0000\u0000"+ + "\u1113\u1114\u0007\u0005\u0000\u0000\u1114\u1115\u0007\r\u0000\u0000\u1115"+ + "\u033a\u0001\u0000\u0000\u0000\u1116\u1117\u0007\u0007\u0000\u0000\u1117"+ + "\u1118\u0007\u0013\u0000\u0000\u1118\u1119\u0007\u0007\u0000\u0000\u1119"+ + "\u111a\u0007\n\u0000\u0000\u111a\u033c\u0001\u0000\u0000\u0000\u111b\u111c"+ + "\u0007\u0007\u0000\u0000\u111c\u111d\u0007\u0016\u0000\u0000\u111d\u111e"+ + "\u0007\u0006\u0000\u0000\u111e\u111f\u0007\u0006\u0000\u0000\u111f\u1120"+ + "\u0007\u0011\u0000\u0000\u1120\u1121\u0007\u0019\u0000\u0000\u1121\u033e"+ + "\u0001\u0000\u0000\u0000\u1122\u1123\u0007\u0007\u0000\u0000\u1123\u1124"+ + "\u0007\u0016\u0000\u0000\u1124\u1125\u0007\u000f\u0000\u0000\u1125\u1126"+ + "\u0007\n\u0000\u0000\u1126\u1127\u0007\r\u0000\u0000\u1127\u1128\u0007"+ + "\u0011\u0000\u0000\u1128\u1129\u0007\u000e\u0000\u0000\u1129\u0340\u0001"+ + "\u0000\u0000\u0000\u112a\u112b\u0007\u0013\u0000\u0000\u112b\u112c\u0007"+ + "\u001b\u0000\u0000\u112c\u112d\u0007\n\u0000\u0000\u112d\u112e\u0007\r"+ + "\u0000\u0000\u112e\u112f\u0007\u0006\u0000\u0000\u112f\u1130\u0007\u0005"+ + "\u0000\u0000\u1130\u1131\u0007\b\u0000\u0000\u1131\u0342\u0001\u0000\u0000"+ + "\u0000\u1132\u1133\u0007\u0018\u0000\u0000\u1133\u1134\u0007\u0013\u0000"+ + "\u0000\u1134\u1135\u0007\t\u0000\u0000\u1135\u1136\u0007\u0011\u0000\u0000"+ + "\u1136\u1137\u0007\u0010\u0000\u0000\u1137\u1138\u0007\u0011\u0000\u0000"+ + "\u1138\u1139\u0007\u0013\u0000\u0000\u1139\u113a\u0007\u0007\u0000\u0000"+ + "\u113a\u0344\u0001\u0000\u0000\u0000\u113b\u113c\u0007\u0018\u0000\u0000"+ + "\u113c\u113d\u0007\r\u0000\u0000\u113d\u113e\u0007\n\u0000\u0000\u113e"+ + "\u113f\u0007\u000e\u0000\u0000\u113f\u1140\u0007\u0011\u0000\u0000\u1140"+ + "\u1141\u0007\t\u0000\u0000\u1141\u1142\u0007\u0011\u0000\u0000\u1142\u1143"+ + "\u0007\u0013\u0000\u0000\u1143\u1144\u0007\u0007\u0000\u0000\u1144\u0346"+ + "\u0001\u0000\u0000\u0000\u1145\u1146\u0007\r\u0000\u0000\u1146\u1147\u0007"+ + "\n\u0000\u0000\u1147\u1148\u0007\u0005\u0000\u0000\u1148\u1149\u0007\u0006"+ + "\u0000\u0000\u1149\u0348\u0001\u0000\u0000\u0000\u114a\u114b\u0007\r\u0000"+ + "\u0000\u114b\u114c\u0007\u0013\u0000\u0000\u114c\u114d\u0007\u001c\u0000"+ + "\u0000\u114d\u034a\u0001\u0000\u0000\u0000\u114e\u114f\u0007\t\u0000\u0000"+ + "\u114f\u1150\u0007\n\u0000\u0000\u1150\u1151\u0007\u0010\u0000\u0000\u1151"+ + "\u1152\u0007\u0013\u0000\u0000\u1152\u1153\u0007\u0019\u0000\u0000\u1153"+ + "\u034c\u0001\u0000\u0000\u0000\u1154\u1155\u0007\t\u0000\u0000\u1155\u1156"+ + "\u0007\u000f\u0000\u0000\u1156\u1157\u0007\u0005\u0000\u0000\u1157\u1158"+ + "\u0007\u0006\u0000\u0000\u1158\u1159\u0007\u0006\u0000\u0000\u1159\u115a"+ + "\u0007\u0011\u0000\u0000\u115a\u115b\u0007\u0007\u0000\u0000\u115b\u115c"+ + "\u0007\u0010\u0000\u0000\u115c\u034e\u0001\u0000\u0000\u0000\u115d\u115e"+ + "\u0007\t\u0000\u0000\u115e\u115f\u0007\u0016\u0000\u0000\u115f\u1160\u0007"+ + "\u0012\u0000\u0000\u1160\u1161\u0007\t\u0000\u0000\u1161\u1162\u0007\u0010"+ + "\u0000\u0000\u1162\u1163\u0007\r\u0000\u0000\u1163\u1164\u0007\u0011\u0000"+ + "\u0000\u1164\u1165\u0007\u0007\u0000\u0000\u1165\u1166\u0007\u0017\u0000"+ + "\u0000\u1166\u0350\u0001\u0000\u0000\u0000\u1167\u1168\u0007\u0010\u0000"+ + "\u0000\u1168\u1169\u0007\u0011\u0000\u0000\u1169\u116a\u0007\u000f\u0000"+ + "\u0000\u116a\u116b\u0007\n\u0000\u0000\u116b\u0352\u0001\u0000\u0000\u0000"+ + "\u116c\u116d\u0007\u0010\u0000\u0000\u116d\u116e\u0007\u0011\u0000\u0000"+ + "\u116e\u116f\u0007\u000f\u0000\u0000\u116f\u1170\u0007\n\u0000\u0000\u1170"+ + "\u1171\u0007\t\u0000\u0000\u1171\u1172\u0007\u0010\u0000\u0000\u1172\u1173"+ + "\u0007\u0005\u0000\u0000\u1173\u1174\u0007\u000f\u0000\u0000\u1174\u1175"+ + "\u0007\u0018\u0000\u0000\u1175\u0354\u0001\u0000\u0000\u0000\u1176\u1177"+ + "\u0007\u0010\u0000\u0000\u1177\u1178\u0007\r\u0000\u0000\u1178\u1179\u0007"+ + "\n\u0000\u0000\u1179\u117a\u0007\u0005\u0000\u0000\u117a\u117b\u0007\u0010"+ + "\u0000\u0000\u117b\u0356\u0001\u0000\u0000\u0000\u117c\u117d\u0007\u0010"+ + "\u0000\u0000\u117d\u117e\u0007\r\u0000\u0000\u117e\u117f\u0007\u0011\u0000"+ + "\u0000\u117f\u1180\u0007\u000f\u0000\u0000\u1180\u0358\u0001\u0000\u0000"+ + "\u0000\u1181\u1182\u0007\u001b\u0000\u0000\u1182\u1183\u0007\u0005\u0000"+ + "\u0000\u1183\u1184\u0007\u0006\u0000\u0000\u1184\u1185\u0007\u0016\u0000"+ + "\u0000\u1185\u1186\u0007\n\u0000\u0000\u1186\u1187\u0007\t\u0000\u0000"+ + "\u1187\u035a\u0001\u0000\u0000\u0000\u1188\u1189\u0007\u001b\u0000\u0000"+ + "\u1189\u118a\u0007\u0005\u0000\u0000\u118a\u118b\u0007\r\u0000\u0000\u118b"+ + "\u118c\u0007\u000e\u0000\u0000\u118c\u118d\u0007\u0014\u0000\u0000\u118d"+ + "\u118e\u0007\u0005\u0000\u0000\u118e\u118f\u0007\r\u0000\u0000\u118f\u035c"+ + "\u0001\u0000\u0000\u0000\u1190\u1191\u0007\u001a\u0000\u0000\u1191\u1192"+ + "\u0007\u000f\u0000\u0000\u1192\u1193\u0007\u0006\u0000\u0000\u1193\u1194"+ + "\u0007\u0005\u0000\u0000\u1194\u1195\u0007\u0010\u0000\u0000\u1195\u1196"+ + "\u0007\u0010\u0000\u0000\u1196\u1197\u0007\r\u0000\u0000\u1197\u1198\u0007"+ + "\u0011\u0000\u0000\u1198\u1199\u0007\u0012\u0000\u0000\u1199\u119a\u0007"+ + "\u0016\u0000\u0000\u119a\u119b\u0007\u0010\u0000\u0000\u119b\u119c\u0007"+ + "\n\u0000\u0000\u119c\u119d\u0007\t\u0000\u0000\u119d\u035e\u0001\u0000"+ + "\u0000\u0000\u119e\u119f\u0007\u001a\u0000\u0000\u119f\u11a0\u0007\u000f"+ + "\u0000\u0000\u11a0\u11a1\u0007\u0006\u0000\u0000\u11a1\u11a2\u0007\u000e"+ + "\u0000\u0000\u11a2\u11a3\u0007\u0013\u0000\u0000\u11a3\u11a4\u0007\u000f"+ + "\u0000\u0000\u11a4\u11a5\u0007\u000f\u0000\u0000\u11a5\u11a6\u0007\n\u0000"+ + "\u0000\u11a6\u11a7\u0007\u0007\u0000\u0000\u11a7\u11a8\u0007\u0010\u0000"+ + "\u0000\u11a8\u0360\u0001\u0000\u0000\u0000\u11a9\u11aa\u0007\u001a\u0000"+ + "\u0000\u11aa\u11ab\u0007\u000f\u0000\u0000\u11ab\u11ac\u0007\u0006\u0000"+ + "\u0000\u11ac\u11ad\u0007\u0005\u0000\u0000\u11ad\u11ae\u0007\u0017\u0000"+ + "\u0000\u11ae\u11af\u0007\u0017\u0000\u0000\u11af\u0362\u0001\u0000\u0000"+ + "\u0000\u11b0\u11b1\u0007\u001a\u0000\u0000\u11b1\u11b2\u0007\u000f\u0000"+ + "\u0000\u11b2\u11b3\u0007\u0006\u0000\u0000\u11b3\u11b4\u0005_\u0000\u0000"+ + "\u11b4\u11b5\u0007\u0011\u0000\u0000\u11b5\u11b6\u0007\t\u0000\u0000\u11b6"+ + "\u11b7\u0005_\u0000\u0000\u11b7\u11b8\u0007\u001c\u0000\u0000\u11b8\u11b9"+ + "\u0007\n\u0000\u0000\u11b9\u11ba\u0007\u0006\u0000\u0000\u11ba\u11bb\u0007"+ + "\u0006\u0000\u0000\u11bb\u11bc\u0005_\u0000\u0000\u11bc\u11bd\u0007\u0019"+ + "\u0000\u0000\u11bd\u11be\u0007\u0013\u0000\u0000\u11be\u11bf\u0007\r\u0000"+ + "\u0000\u11bf\u11c0\u0007\u000f\u0000\u0000\u11c0\u11c1\u0007\n\u0000\u0000"+ + "\u11c1\u11c2\u0007\f\u0000\u0000\u11c2\u0364\u0001\u0000\u0000\u0000\u11c3"+ + "\u11c4\u0007\u001a\u0000\u0000\u11c4\u11c5\u0007\u000f\u0000\u0000\u11c5"+ + "\u11c6\u0007\u0006\u0000\u0000\u11c6\u11c7\u0005_\u0000\u0000\u11c7\u11c8"+ + "\u0007\u0011\u0000\u0000\u11c8\u11c9\u0007\t\u0000\u0000\u11c9\u11ca\u0005"+ + "_\u0000\u0000\u11ca\u11cb\u0007\u001c\u0000\u0000\u11cb\u11cc\u0007\n"+ + "\u0000\u0000\u11cc\u11cd\u0007\u0006\u0000\u0000\u11cd\u11ce\u0007\u0006"+ + "\u0000\u0000\u11ce\u11cf\u0005_\u0000\u0000\u11cf\u11d0\u0007\u0019\u0000"+ + "\u0000\u11d0\u11d1\u0007\u0013\u0000\u0000\u11d1\u11d2\u0007\r\u0000\u0000"+ + "\u11d2\u11d3\u0007\u000f\u0000\u0000\u11d3\u11d4\u0007\n\u0000\u0000\u11d4"+ + "\u11d5\u0007\f\u0000\u0000\u11d5\u11d6\u0005_\u0000\u0000\u11d6\u11d7"+ + "\u0007\f\u0000\u0000\u11d7\u11d8\u0007\u0013\u0000\u0000\u11d8\u11d9\u0007"+ + "\u000e\u0000\u0000\u11d9\u11da\u0007\u0016\u0000\u0000\u11da\u11db\u0007"+ + "\u000f\u0000\u0000\u11db\u11dc\u0007\n\u0000\u0000\u11dc\u11dd\u0007\u0007"+ + "\u0000\u0000\u11dd\u11de\u0007\u0010\u0000\u0000\u11de\u0366\u0001\u0000"+ + "\u0000\u0000\u11df\u11e0\u0007\u001a\u0000\u0000\u11e0\u11e1\u0007\u000f"+ + "\u0000\u0000\u11e1\u11e2\u0007\u0006\u0000\u0000\u11e2\u11e3\u0005_\u0000"+ + "\u0000\u11e3\u11e4\u0007\u0011\u0000\u0000\u11e4\u11e5\u0007\t\u0000\u0000"+ + "\u11e5\u11e6\u0005_\u0000\u0000\u11e6\u11e7\u0007\u001c\u0000\u0000\u11e7"+ + "\u11e8\u0007\n\u0000\u0000\u11e8\u11e9\u0007\u0006\u0000\u0000\u11e9\u11ea"+ + "\u0007\u0006\u0000\u0000\u11ea\u11eb\u0005_\u0000\u0000\u11eb\u11ec\u0007"+ + "\u0019\u0000\u0000\u11ec\u11ed\u0007\u0013\u0000\u0000\u11ed\u11ee\u0007"+ + "\r\u0000\u0000\u11ee\u11ef\u0007\u000f\u0000\u0000\u11ef\u11f0\u0007\n"+ + "\u0000\u0000\u11f0\u11f1\u0007\f\u0000\u0000\u11f1\u11f2\u0005_\u0000"+ + "\u0000\u11f2\u11f3\u0007\u000e\u0000\u0000\u11f3\u11f4\u0007\u0013\u0000"+ + "\u0000\u11f4\u11f5\u0007\u0007\u0000\u0000\u11f5\u11f6\u0007\u0010\u0000"+ + "\u0000\u11f6\u11f7\u0007\n\u0000\u0000\u11f7\u11f8\u0007\u0007\u0000\u0000"+ + "\u11f8\u11f9\u0007\u0010\u0000\u0000\u11f9\u0368\u0001\u0000\u0000\u0000"+ + "\u11fa\u11fb\u0007\u001a\u0000\u0000\u11fb\u11fc\u0007\u0018\u0000\u0000"+ + "\u11fc\u11fd\u0007\u0005\u0000\u0000\u11fd\u11fe\u0007\u0010\u0000\u0000"+ + "\u11fe\u11ff\u0007\u0014\u0000\u0000\u11ff\u036a\u0001\u0000\u0000\u0000"+ + "\u1200\u1201\u0007\u001a\u0000\u0000\u1201\u1202\u0007\u0018\u0000\u0000"+ + "\u1202\u1203\u0007\u0005\u0000\u0000\u1203\u1204\u0007\u0010\u0000\u0000"+ + "\u1204\u1205\u0007\u0014\u0000\u0000\u1205\u1206\u0005_\u0000\u0000\u1206"+ + "\u1207\u0007\n\u0000\u0000\u1207\u1208\u0007\u001a\u0000\u0000\u1208\u1209"+ + "\u0007\u0011\u0000\u0000\u1209\u120a\u0007\t\u0000\u0000\u120a\u120b\u0007"+ + "\u0010\u0000\u0000\u120b\u120c\u0007\t\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\u000e"+ + "\u0000\u0000\u1211\u1212\u0007\u0013\u0000\u0000\u1212\u1213\u0007\u0007"+ + "\u0000\u0000\u1213\u1214\u0007\u000e\u0000\u0000\u1214\u1215\u0007\u0005"+ + "\u0000\u0000\u1215\u1216\u0007\u0010\u0000\u0000\u1216\u036e\u0001\u0000"+ + "\u0000\u0000\u1217\u1218\u0007\u001a\u0000\u0000\u1218\u1219\u0007\u000f"+ + "\u0000\u0000\u1219\u121a\u0007\u0006\u0000\u0000\u121a\u121b\u0007\n\u0000"+ + "\u0000\u121b\u121c\u0007\u0006\u0000\u0000\u121c\u121d\u0007\n\u0000\u0000"+ + "\u121d\u121e\u0007\u000f\u0000\u0000\u121e\u121f\u0007\n\u0000\u0000\u121f"+ + "\u1220\u0007\u0007\u0000\u0000\u1220\u1221\u0007\u0010\u0000\u0000\u1221"+ + "\u0370\u0001\u0000\u0000\u0000\u1222\u1223\u0007\u001a\u0000\u0000\u1223"+ + "\u1224\u0007\u000f\u0000\u0000\u1224\u1225\u0007\u0006\u0000\u0000\u1225"+ + "\u1226\u0007\n\u0000\u0000\u1226\u1227\u0007\u001a\u0000\u0000\u1227\u1228"+ + "\u0007\u0011\u0000\u0000\u1228\u1229\u0007\t\u0000\u0000\u1229\u122a\u0007"+ + "\u0010\u0000\u0000\u122a\u122b\u0007\t\u0000\u0000\u122b\u0372\u0001\u0000"+ + "\u0000\u0000\u122c\u122d\u0007\u001a\u0000\u0000\u122d\u122e\u0007\u000f"+ + "\u0000\u0000\u122e\u122f\u0007\u0006\u0000\u0000\u122f\u1230\u0007\u0019"+ + "\u0000\u0000\u1230\u1231\u0007\u0013\u0000\u0000\u1231\u1232\u0007\r\u0000"+ + "\u0000\u1232\u1233\u0007\n\u0000\u0000\u1233\u1234\u0007\t\u0000\u0000"+ + "\u1234\u1235\u0007\u0010\u0000\u0000\u1235\u0374\u0001\u0000\u0000\u0000"+ + "\u1236\u1237\u0007\u001a\u0000\u0000\u1237\u1238\u0007\u000f\u0000\u0000"+ + "\u1238\u1239\u0007\u0006\u0000\u0000\u1239\u123a\u0007\u0018\u0000\u0000"+ + "\u123a\u123b\u0007\u0005\u0000\u0000\u123b\u123c\u0007\r\u0000\u0000\u123c"+ + "\u123d\u0007\t\u0000\u0000\u123d\u123e\u0007\n\u0000\u0000\u123e\u0376"+ + "\u0001\u0000\u0000\u0000\u123f\u1240\u0007\u001a\u0000\u0000\u1240\u1241"+ + "\u0007\u000f\u0000\u0000\u1241\u1242\u0007\u0006\u0000\u0000\u1242\u1243"+ + "\u0007\u0018\u0000\u0000\u1243\u1244\u0007\u0011\u0000\u0000\u1244\u0378"+ + "\u0001\u0000\u0000\u0000\u1245\u1246\u0007\u001a\u0000\u0000\u1246\u1247"+ + "\u0007\u000f\u0000\u0000\u1247\u1248\u0007\u0006\u0000\u0000\u1248\u1249"+ + "\u0007\r\u0000\u0000\u1249\u124a\u0007"; private static final String _serializedATNSegment2 = - "\u000e\u0000\u0000\u1255\u1256\u0007\u0014\u0000\u0000\u1256\u037e\u0001"+ - "\u0000\u0000\u0000\u1257\u1258\u0007\n\u0000\u0000\u1258\u1259\u0007\u001a"+ - "\u0000\u0000\u1259\u125a\u0007\u0018\u0000\u0000\u125a\u125b\u0007\r\u0000"+ - "\u0000\u125b\u125c\u0007\n\u0000\u0000\u125c\u125d\u0007\t\u0000\u0000"+ - "\u125d\u125e\u0007\t\u0000\u0000\u125e\u125f\u0007\u0011\u0000\u0000\u125f"+ - "\u1260\u0007\u0013\u0000\u0000\u1260\u1261\u0007\u0007\u0000\u0000\u1261"+ - "\u0380\u0001\u0000\u0000\u0000\u1262\u1263\u0007\u0017\u0000\u0000\u1263"+ - "\u1264\u0007\n\u0000\u0000\u1264\u1265\u0007\u0007\u0000\u0000\u1265\u1266"+ - "\u0007\n\u0000\u0000\u1266\u1267\u0007\r\u0000\u0000\u1267\u1268\u0007"+ - "\u0005\u0000\u0000\u1268\u1269\u0007\u0010\u0000\u0000\u1269\u126a\u0007"+ - "\n\u0000\u0000\u126a\u126b\u0007\f\u0000\u0000\u126b\u0382\u0001\u0000"+ - "\u0000\u0000\u126c\u126d\u0007\u0006\u0000\u0000\u126d\u126e\u0007\u0013"+ - "\u0000\u0000\u126e\u126f\u0007\u0017\u0000\u0000\u126f\u1270\u0007\u0017"+ - "\u0000\u0000\u1270\u1271\u0007\n\u0000\u0000\u1271\u1272\u0007\f\u0000"+ - "\u0000\u1272\u0384\u0001\u0000\u0000\u0000\u1273\u1274\u0007\t\u0000\u0000"+ - "\u1274\u1275\u0007\u0010\u0000\u0000\u1275\u1276\u0007\u0013\u0000\u0000"+ - "\u1276\u1277\u0007\r\u0000\u0000\u1277\u1278\u0007\n\u0000\u0000\u1278"+ - "\u1279\u0007\f\u0000\u0000\u1279\u0386\u0001\u0000\u0000\u0000\u127a\u127b"+ - "\u0007\u0011\u0000\u0000\u127b\u127c\u0007\u0007\u0000\u0000\u127c\u127d"+ - "\u0007\u000e\u0000\u0000\u127d\u127e\u0007\u0006\u0000\u0000\u127e\u127f"+ - "\u0007\u0016\u0000\u0000\u127f\u1280\u0007\f\u0000\u0000\u1280\u1281\u0007"+ - "\n\u0000\u0000\u1281\u0388\u0001\u0000\u0000\u0000\u1282\u1283\u0007\r"+ - "\u0000\u0000\u1283\u1284\u0007\u0013\u0000\u0000\u1284\u1285\u0007\u0016"+ - "\u0000\u0000\u1285\u1286\u0007\u0010\u0000\u0000\u1286\u1287\u0007\u0011"+ - "\u0000\u0000\u1287\u1288\u0007\u0007\u0000\u0000\u1288\u1289\u0007\n\u0000"+ - "\u0000\u1289\u038a\u0001\u0000\u0000\u0000\u128a\u128b\u0007\u0010\u0000"+ - "\u0000\u128b\u128c\u0007\r\u0000\u0000\u128c\u128d\u0007\u0005\u0000\u0000"+ - "\u128d\u128e\u0007\u0007\u0000\u0000\u128e\u128f\u0007\t\u0000\u0000\u128f"+ - "\u1290\u0007\u0019\u0000\u0000\u1290\u1291\u0007\u0013\u0000\u0000\u1291"+ - "\u1292\u0007\r\u0000\u0000\u1292\u1293\u0007\u000f\u0000\u0000\u1293\u038c"+ - "\u0001\u0000\u0000\u0000\u1294\u1295\u0007\u0011\u0000\u0000\u1295\u1296"+ - "\u0007\u000f\u0000\u0000\u1296\u1297\u0007\u0018\u0000\u0000\u1297\u1298"+ - "\u0007\u0013\u0000\u0000\u1298\u1299\u0007\r\u0000\u0000\u1299\u129a\u0007"+ - "\u0010\u0000\u0000\u129a\u038e\u0001\u0000\u0000\u0000\u129b\u129c\u0007"+ - "\u0018\u0000\u0000\u129c\u129d\u0007\u0013\u0000\u0000\u129d\u129e\u0007"+ - "\u0006\u0000\u0000\u129e\u129f\u0007\u0011\u0000\u0000\u129f\u12a0\u0007"+ - "\u000e\u0000\u0000\u12a0\u12a1\u0007\b\u0000\u0000\u12a1\u0390\u0001\u0000"+ - "\u0000\u0000\u12a2\u12a3\u0007\u000f\u0000\u0000\u12a3\u12a4\u0007\n\u0000"+ - "\u0000\u12a4\u12a5\u0007\u0010\u0000\u0000\u12a5\u12a6\u0007\u0014\u0000"+ - "\u0000\u12a6\u12a7\u0007\u0013\u0000\u0000\u12a7\u12a8\u0007\f\u0000\u0000"+ - "\u12a8\u0392\u0001\u0000\u0000\u0000\u12a9\u12aa\u0007\r\u0000\u0000\u12aa"+ - "\u12ab\u0007\n\u0000\u0000\u12ab\u12ac\u0007\u0019\u0000\u0000\u12ac\u12ad"+ - "\u0007\n\u0000\u0000\u12ad\u12ae\u0007\r\u0000\u0000\u12ae\u12af\u0007"+ - "\n\u0000\u0000\u12af\u12b0\u0007\u0007\u0000\u0000\u12b0\u12b1\u0007\u000e"+ - "\u0000\u0000\u12b1\u12b2\u0007\u0011\u0000\u0000\u12b2\u12b3\u0007\u0007"+ - "\u0000\u0000\u12b3\u12b4\u0007\u0017\u0000\u0000\u12b4\u0394\u0001\u0000"+ - "\u0000\u0000\u12b5\u12b6\u0007\u0007\u0000\u0000\u12b6\u12b7\u0007\n\u0000"+ - "\u0000\u12b7\u12b8\u0007\u001c\u0000\u0000\u12b8\u0396\u0001\u0000\u0000"+ - "\u0000\u12b9\u12ba\u0007\u0013\u0000\u0000\u12ba\u12bb\u0007\u0006\u0000"+ - "\u0000\u12bb\u12bc\u0007\f\u0000\u0000\u12bc\u0398\u0001\u0000\u0000\u0000"+ - "\u12bd\u12be\u0007\u001b\u0000\u0000\u12be\u12bf\u0007\u0005\u0000\u0000"+ - "\u12bf\u12c0\u0007\u0006\u0000\u0000\u12c0\u12c1\u0007\u0016\u0000\u0000"+ - "\u12c1\u12c2\u0007\n\u0000\u0000\u12c2\u039a\u0001\u0000\u0000\u0000\u12c3"+ - "\u12c4\u0007\t\u0000\u0000\u12c4\u12c5\u0007\u0016\u0000\u0000\u12c5\u12c6"+ - "\u0007\u0012\u0000\u0000\u12c6\u12c7\u0007\t\u0000\u0000\u12c7\u12c8\u0007"+ - "\u000e\u0000\u0000\u12c8\u12c9\u0007\r\u0000\u0000\u12c9\u12ca\u0007\u0011"+ - "\u0000\u0000\u12ca\u12cb\u0007\u0018\u0000\u0000\u12cb\u12cc\u0007\u0010"+ - "\u0000\u0000\u12cc\u12cd\u0007\u0011\u0000\u0000\u12cd\u12ce\u0007\u0013"+ - "\u0000\u0000\u12ce\u12cf\u0007\u0007\u0000\u0000\u12cf\u039c\u0001\u0000"+ - "\u0000\u0000\u12d0\u12d1\u0007\u0018\u0000\u0000\u12d1\u12d2\u0007\u0016"+ - "\u0000\u0000\u12d2\u12d3\u0007\u0012\u0000\u0000\u12d3\u12d4\u0007\u0006"+ - "\u0000\u0000\u12d4\u12d5\u0007\u0011\u0000\u0000\u12d5\u12d6\u0007\u000e"+ - "\u0000\u0000\u12d6\u12d7\u0007\u0005\u0000\u0000\u12d7\u12d8\u0007\u0010"+ - "\u0000\u0000\u12d8\u12d9\u0007\u0011\u0000\u0000\u12d9\u12da\u0007\u0013"+ - "\u0000\u0000\u12da\u12db\u0007\u0007\u0000\u0000\u12db\u039e\u0001\u0000"+ - "\u0000\u0000\u12dc\u12dd\u0007\u0013\u0000\u0000\u12dd\u12de\u0007\u0016"+ - "\u0000\u0000\u12de\u12df\u0007\u0010\u0000\u0000\u12df\u03a0\u0001\u0000"+ - "\u0000\u0000\u12e0\u12e1\u0007\n\u0000\u0000\u12e1\u12e2\u0007\u0007\u0000"+ - "\u0000\u12e2\u12e3\u0007\f\u0000\u0000\u12e3\u03a2\u0001\u0000\u0000\u0000"+ - "\u12e4\u12e5\u0007\r\u0000\u0000\u12e5\u12e6\u0007\u0013\u0000\u0000\u12e6"+ - "\u12e7\u0007\u0016\u0000\u0000\u12e7\u12e8\u0007\u0010\u0000\u0000\u12e8"+ - "\u12e9\u0007\u0011\u0000\u0000\u12e9\u12ea\u0007\u0007\u0000\u0000\u12ea"+ - "\u12eb\u0007\n\u0000\u0000\u12eb\u12ec\u0007\t\u0000\u0000\u12ec\u03a4"+ - "\u0001\u0000\u0000\u0000\u12ed\u12ee\u0007\t\u0000\u0000\u12ee\u12ef\u0007"+ - "\u000e\u0000\u0000\u12ef\u12f0\u0007\u0014\u0000\u0000\u12f0\u12f1\u0007"+ - "\n\u0000\u0000\u12f1\u12f2\u0007\u000f\u0000\u0000\u12f2\u12f3\u0007\u0005"+ - "\u0000\u0000\u12f3\u12f4\u0007\t\u0000\u0000\u12f4\u03a6\u0001\u0000\u0000"+ - "\u0000\u12f5\u12f6\u0007\u0018\u0000\u0000\u12f6\u12f7\u0007\r\u0000\u0000"+ - "\u12f7\u12f8\u0007\u0013\u0000\u0000\u12f8\u12f9\u0007\u000e\u0000\u0000"+ - "\u12f9\u12fa\u0007\n\u0000\u0000\u12fa\u12fb\u0007\f\u0000\u0000\u12fb"+ - "\u12fc\u0007\u0016\u0000\u0000\u12fc\u12fd\u0007\r\u0000\u0000\u12fd\u12fe"+ - "\u0007\n\u0000\u0000\u12fe\u12ff\u0007\t\u0000\u0000\u12ff\u03a8\u0001"+ - "\u0000\u0000\u0000\u1300\u1301\u0007\u0011\u0000\u0000\u1301\u1302\u0007"+ - "\u0007\u0000\u0000\u1302\u1303\u0007\u0018\u0000\u0000\u1303\u1304\u0007"+ - "\u0016\u0000\u0000\u1304\u1305\u0007\u0010\u0000\u0000\u1305\u03aa\u0001"+ - "\u0000\u0000\u0000\u1306\u1307\u0007\t\u0000\u0000\u1307\u1308\u0007\u0016"+ - "\u0000\u0000\u1308\u1309\u0007\u0018\u0000\u0000\u1309\u130a\u0007\u0018"+ - "\u0000\u0000\u130a\u130b\u0007\u0013\u0000\u0000\u130b\u130c\u0007\r\u0000"+ - "\u0000\u130c\u130d\u0007\u0010\u0000\u0000\u130d\u03ac\u0001\u0000\u0000"+ - "\u0000\u130e\u130f\u0007\u0018\u0000\u0000\u130f\u1310\u0007\u0005\u0000"+ - "\u0000\u1310\u1311\u0007\r\u0000\u0000\u1311\u1312\u0007\u0005\u0000\u0000"+ - "\u1312\u1313\u0007\u0006\u0000\u0000\u1313\u1314\u0007\u0006\u0000\u0000"+ - "\u1314\u1315\u0007\n\u0000\u0000\u1315\u1316\u0007\u0006\u0000\u0000\u1316"+ - "\u03ae\u0001\u0000\u0000\u0000\u1317\u1318\u0007\t\u0000\u0000\u1318\u1319"+ - "\u0007\u001d\u0000\u0000\u1319\u131a\u0007\u0006\u0000\u0000\u131a\u03b0"+ - "\u0001\u0000\u0000\u0000\u131b\u131c\u0007\f\u0000\u0000\u131c\u131d\u0007"+ - "\n\u0000\u0000\u131d\u131e\u0007\u0018\u0000\u0000\u131e\u131f\u0007\n"+ - "\u0000\u0000\u131f\u1320\u0007\u0007\u0000\u0000\u1320\u1321\u0007\f\u0000"+ - "\u0000\u1321\u1322\u0007\t\u0000\u0000\u1322\u03b2\u0001\u0000\u0000\u0000"+ - "\u1323\u1324\u0007\u0013\u0000\u0000\u1324\u1325\u0007\u001b\u0000\u0000"+ - "\u1325\u1326\u0007\n\u0000\u0000\u1326\u1327\u0007\r\u0000\u0000\u1327"+ - "\u1328\u0007\r\u0000\u0000\u1328\u1329\u0007\u0011\u0000\u0000\u1329\u132a"+ - "\u0007\f\u0000\u0000\u132a\u132b\u0007\u0011\u0000\u0000\u132b\u132c\u0007"+ - "\u0007\u0000\u0000\u132c\u132d\u0007\u0017\u0000\u0000\u132d\u03b4\u0001"+ - "\u0000\u0000\u0000\u132e\u132f\u0007\u000e\u0000\u0000\u132f\u1330\u0007"+ - "\u0013\u0000\u0000\u1330\u1331\u0007\u0007\u0000\u0000\u1331\u1332\u0007"+ - "\u0019\u0000\u0000\u1332\u1333\u0007\u0006\u0000\u0000\u1333\u1334\u0007"+ - "\u0011\u0000\u0000\u1334\u1335\u0007\u000e\u0000\u0000\u1335\u1336\u0007"+ - "\u0010\u0000\u0000\u1336\u03b6\u0001\u0000\u0000\u0000\u1337\u1338\u0007"+ - "\t\u0000\u0000\u1338\u1339\u0007\u0015\u0000\u0000\u1339\u133a\u0007\u0011"+ - "\u0000\u0000\u133a\u133b\u0007\u0018\u0000\u0000\u133b\u03b8\u0001\u0000"+ - "\u0000\u0000\u133c\u133d\u0007\u0006\u0000\u0000\u133d\u133e\u0007\u0013"+ - "\u0000\u0000\u133e\u133f\u0007\u000e\u0000\u0000\u133f\u1340\u0007\u0015"+ - "\u0000\u0000\u1340\u1341\u0007\n\u0000\u0000\u1341\u1342\u0007\f\u0000"+ - "\u0000\u1342\u03ba\u0001\u0000\u0000\u0000\u1343\u1344\u0007\u0010\u0000"+ - "\u0000\u1344\u1345\u0007\u0011\u0000\u0000\u1345\u1346\u0007\n\u0000\u0000"+ - "\u1346\u1347\u0007\t\u0000\u0000\u1347\u03bc\u0001\u0000\u0000\u0000\u1348"+ - "\u1349\u0007\r\u0000\u0000\u1349\u134a\u0007\u0013\u0000\u0000\u134a\u134b"+ - "\u0007\u0006\u0000\u0000\u134b\u134c\u0007\u0006\u0000\u0000\u134c\u134d"+ - "\u0007\u0016\u0000\u0000\u134d\u134e\u0007\u0018\u0000\u0000\u134e\u03be"+ - "\u0001\u0000\u0000\u0000\u134f\u1350\u0007\u000e\u0000\u0000\u1350\u1351"+ - "\u0007\u0016\u0000\u0000\u1351\u1352\u0007\u0012\u0000\u0000\u1352\u1353"+ - "\u0007\n\u0000\u0000\u1353\u03c0\u0001\u0000\u0000\u0000\u1354\u1355\u0007"+ - "\u0017\u0000\u0000\u1355\u1356\u0007\r\u0000\u0000\u1356\u1357\u0007\u0013"+ - "\u0000\u0000\u1357\u1358\u0007\u0016\u0000\u0000\u1358\u1359\u0007\u0018"+ - "\u0000\u0000\u1359\u135a\u0007\u0011\u0000\u0000\u135a\u135b\u0007\u0007"+ - "\u0000\u0000\u135b\u135c\u0007\u0017\u0000\u0000\u135c\u03c2\u0001\u0000"+ - "\u0000\u0000\u135d\u135e\u0007\t\u0000\u0000\u135e\u135f\u0007\n\u0000"+ - "\u0000\u135f\u1360\u0007\u0010\u0000\u0000\u1360\u1361\u0007\t\u0000\u0000"+ - "\u1361\u03c4\u0001\u0000\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"+ - "\u1368\u0007\t\u0000\u0000\u1368\u1369\u0007\u0005\u0000\u0000\u1369\u136a"+ - "\u0007\u000f\u0000\u0000\u136a\u136b\u0007\u0018\u0000\u0000\u136b\u136c"+ - "\u0007\u0006\u0000\u0000\u136c\u136d\u0007\n\u0000\u0000\u136d\u03c6\u0001"+ - "\u0000\u0000\u0000\u136e\u136f\u0007\u0013\u0000\u0000\u136f\u1370\u0007"+ - "\r\u0000\u0000\u1370\u1371\u0007\f\u0000\u0000\u1371\u1372\u0007\u0011"+ - "\u0000\u0000\u1372\u1373\u0007\u0007\u0000\u0000\u1373\u1374\u0007\u0005"+ - "\u0000\u0000\u1374\u1375\u0007\u0006\u0000\u0000\u1375\u1376\u0007\u0011"+ - "\u0000\u0000\u1376\u1377\u0007\u0010\u0000\u0000\u1377\u1378\u0007\b\u0000"+ - "\u0000\u1378\u03c8\u0001\u0000\u0000\u0000\u1379\u137a\u0007\u001a\u0000"+ - "\u0000\u137a\u137b\u0007\u000f\u0000\u0000\u137b\u137c\u0007\u0006\u0000"+ - "\u0000\u137c\u137d\u0007\u0010\u0000\u0000\u137d\u137e\u0007\u0005\u0000"+ - "\u0000\u137e\u137f\u0007\u0012\u0000\u0000\u137f\u1380\u0007\u0006\u0000"+ - "\u0000\u1380\u1381\u0007\n\u0000\u0000\u1381\u03ca\u0001\u0000\u0000\u0000"+ - "\u1382\u1383\u0007\u000e\u0000\u0000\u1383\u1384\u0007\u0013\u0000\u0000"+ - "\u1384\u1385\u0007\u0006\u0000\u0000\u1385\u1386\u0007\u0016\u0000\u0000"+ - "\u1386\u1387\u0007\u000f\u0000\u0000\u1387\u1388\u0007\u0007\u0000\u0000"+ - "\u1388\u1389\u0007\t\u0000\u0000\u1389\u03cc\u0001\u0000\u0000\u0000\u138a"+ - "\u138b\u0007\u001a\u0000\u0000\u138b\u138c\u0007\u000f\u0000\u0000\u138c"+ - "\u138d\u0007\u0006\u0000\u0000\u138d\u138e\u0007\u0007\u0000\u0000\u138e"+ - "\u138f\u0007\u0005\u0000\u0000\u138f\u1390\u0007\u000f\u0000\u0000\u1390"+ - "\u1391\u0007\n\u0000\u0000\u1391\u1392\u0007\t\u0000\u0000\u1392\u1393"+ - "\u0007\u0018\u0000\u0000\u1393\u1394\u0007\u0005\u0000\u0000\u1394\u1395"+ - "\u0007\u000e\u0000\u0000\u1395\u1396\u0007\n\u0000\u0000\u1396\u1397\u0007"+ - "\t\u0000\u0000\u1397\u03ce\u0001\u0000\u0000\u0000\u1398\u1399\u0007\r"+ - "\u0000\u0000\u1399\u139a\u0007\u0013\u0000\u0000\u139a\u139b\u0007\u001c"+ - "\u0000\u0000\u139b\u139c\u0007\u0010\u0000\u0000\u139c\u139d\u0007\b\u0000"+ - "\u0000\u139d\u139e\u0007\u0018\u0000\u0000\u139e\u139f\u0007\n\u0000\u0000"+ - "\u139f\u03d0\u0001\u0000\u0000\u0000\u13a0\u13a1\u0007\u0007\u0000\u0000"+ - "\u13a1\u13a2\u0007\u0013\u0000\u0000\u13a2\u13a3\u0007\r\u0000\u0000\u13a3"+ - "\u13a4\u0007\u000f\u0000\u0000\u13a4\u13a5\u0007\u0005\u0000\u0000\u13a5"+ - "\u13a6\u0007\u0006\u0000\u0000\u13a6\u13a7\u0007\u0011\u0000\u0000\u13a7"+ - "\u13a8\u0007\u000b\u0000\u0000\u13a8\u13a9\u0007\n\u0000\u0000\u13a9\u13aa"+ - "\u0007\f\u0000\u0000\u13aa\u03d2\u0001\u0000\u0000\u0000\u13ab\u13ac\u0007"+ - "\u001c\u0000\u0000\u13ac\u13ad\u0007\u0011\u0000\u0000\u13ad\u13ae\u0007"+ - "\u0010\u0000\u0000\u13ae\u13af\u0007\u0014\u0000\u0000\u13af\u13b0\u0007"+ - "\u0011\u0000\u0000\u13b0\u13b1\u0007\u0007\u0000\u0000\u13b1\u03d4\u0001"+ - "\u0000\u0000\u0000\u13b2\u13b3\u0007\u0019\u0000\u0000\u13b3\u13b4\u0007"+ - "\u0011\u0000\u0000\u13b4\u13b5\u0007\u0006\u0000\u0000\u13b5\u13b6\u0007"+ - "\u0010\u0000\u0000\u13b6\u13b7\u0007\n\u0000\u0000\u13b7\u13b8\u0007\r"+ - "\u0000\u0000\u13b8\u03d6\u0001\u0000\u0000\u0000\u13b9\u13ba\u0007\u0017"+ - "\u0000\u0000\u13ba\u13bb\u0007\r\u0000\u0000\u13bb\u13bc\u0007\u0013\u0000"+ - "\u0000\u13bc\u13bd\u0007\u0016\u0000\u0000\u13bd\u13be\u0007\u0018\u0000"+ - "\u0000\u13be\u13bf\u0007\t\u0000\u0000\u13bf\u03d8\u0001\u0000\u0000\u0000"+ - "\u13c0\u13c1\u0007\u0013\u0000\u0000\u13c1\u13c2\u0007\u0010\u0000\u0000"+ - "\u13c2\u13c3\u0007\u0014\u0000\u0000\u13c3\u13c4\u0007\n\u0000\u0000\u13c4"+ - "\u13c5\u0007\r\u0000\u0000\u13c5\u13c6\u0007\t\u0000\u0000\u13c6\u03da"+ - "\u0001\u0000\u0000\u0000\u13c7\u13c8\u0007\u0007\u0000\u0000\u13c8\u13c9"+ - "\u0007\u0019\u0000\u0000\u13c9\u13ca\u0007\u000e\u0000\u0000\u13ca\u03dc"+ - "\u0001\u0000\u0000\u0000\u13cb\u13cc\u0007\u0007\u0000\u0000\u13cc\u13cd"+ - "\u0007\u0019\u0000\u0000\u13cd\u13ce\u0007\f\u0000\u0000\u13ce\u03de\u0001"+ - "\u0000\u0000\u0000\u13cf\u13d0\u0007\u0007\u0000\u0000\u13d0\u13d1\u0007"+ - "\u0019\u0000\u0000\u13d1\u13d2\u0007\u0015\u0000\u0000\u13d2\u13d3\u0007"+ - "\u000e\u0000\u0000\u13d3\u03e0\u0001\u0000\u0000\u0000\u13d4\u13d5\u0007"+ - "\u0007\u0000\u0000\u13d5\u13d6\u0007\u0019\u0000\u0000\u13d6\u13d7\u0007"+ - "\u0015\u0000\u0000\u13d7\u13d8\u0007\f\u0000\u0000\u13d8\u03e2\u0001\u0000"+ - "\u0000\u0000\u13d9\u13da\u0007\u0016\u0000\u0000\u13da\u13db\u0007\n\u0000"+ - "\u0000\u13db\u13dc\u0007\t\u0000\u0000\u13dc\u13dd\u0007\u000e\u0000\u0000"+ - "\u13dd\u13de\u0007\u0005\u0000\u0000\u13de\u13df\u0007\u0018\u0000\u0000"+ - "\u13df\u13e0\u0007\n\u0000\u0000\u13e0\u03e4\u0001\u0000\u0000\u0000\u13e1"+ - "\u13e2\u0007\u001b\u0000\u0000\u13e2\u13e3\u0007\u0011\u0000\u0000\u13e3"+ - "\u13e4\u0007\n\u0000\u0000\u13e4\u13e5\u0007\u001c\u0000\u0000\u13e5\u13e6"+ - "\u0007\t\u0000\u0000\u13e6\u03e6\u0001\u0000\u0000\u0000\u13e7\u13e8\u0007"+ - "\u0007\u0000\u0000\u13e8\u13e9\u0007\u0013\u0000\u0000\u13e9\u13ea\u0007"+ - "\r\u0000\u0000\u13ea\u13eb\u0007\u000f\u0000\u0000\u13eb\u13ec\u0007\u0005"+ - "\u0000\u0000\u13ec\u13ed\u0007\u0006\u0000\u0000\u13ed\u13ee\u0007\u0011"+ - "\u0000\u0000\u13ee\u13ef\u0007\u000b\u0000\u0000\u13ef\u13f0\u0007\n\u0000"+ - "\u0000\u13f0\u03e8\u0001\u0000\u0000\u0000\u13f1\u13f2\u0007\f\u0000\u0000"+ - "\u13f2\u13f3\u0007\u0016\u0000\u0000\u13f3\u13f4\u0007\u000f\u0000\u0000"+ - "\u13f4\u13f5\u0007\u0018\u0000\u0000\u13f5\u03ea\u0001\u0000\u0000\u0000"+ - "\u13f6\u13f7\u0007\u0018\u0000\u0000\u13f7\u13f8\u0007\r\u0000\u0000\u13f8"+ - "\u13f9\u0007\u0011\u0000\u0000\u13f9\u13fa\u0007\u0007\u0000\u0000\u13fa"+ - "\u13fb\u0007\u0010\u0000\u0000\u13fb\u13fc\u0005_\u0000\u0000\u13fc\u13fd"+ - "\u0007\t\u0000\u0000\u13fd\u13fe\u0007\u0010\u0000\u0000\u13fe\u13ff\u0007"+ - "\r\u0000\u0000\u13ff\u1400\u0007\u0011\u0000\u0000\u1400\u1401\u0007\u000e"+ - "\u0000\u0000\u1401\u1402\u0007\u0010\u0000\u0000\u1402\u1403\u0005_\u0000"+ - "\u0000\u1403\u1404\u0007\u0018\u0000\u0000\u1404\u1405\u0007\u0005\u0000"+ - "\u0000\u1405\u1406\u0007\r\u0000\u0000\u1406\u1407\u0007\u0005\u0000\u0000"+ - "\u1407\u1408\u0007\u000f\u0000\u0000\u1408\u1409\u0007\t\u0000\u0000\u1409"+ - "\u03ec\u0001\u0000\u0000\u0000\u140a\u140b\u0007\u001b\u0000\u0000\u140b"+ - "\u140c\u0007\u0005\u0000\u0000\u140c\u140d\u0007\r\u0000\u0000\u140d\u140e"+ - "\u0007\u0011\u0000\u0000\u140e\u140f\u0007\u0005\u0000\u0000\u140f\u1410"+ - "\u0007\u0012\u0000\u0000\u1410\u1411\u0007\u0006\u0000\u0000\u1411\u1412"+ - "\u0007\n\u0000\u0000\u1412\u1413\u0005_\u0000\u0000\u1413\u1414\u0007"+ - "\u000e\u0000\u0000\u1414\u1415\u0007\u0013\u0000\u0000\u1415\u1416\u0007"+ - "\u0007\u0000\u0000\u1416\u1417\u0007\u0019\u0000\u0000\u1417\u1418\u0007"+ - "\u0006\u0000\u0000\u1418\u1419\u0007\u0011\u0000\u0000\u1419\u141a\u0007"+ - "\u000e\u0000\u0000\u141a\u141b\u0007\u0010\u0000\u0000\u141b\u03ee\u0001"+ - "\u0000\u0000\u0000\u141c\u141d\u0007\n\u0000\u0000\u141d\u141e\u0007\r"+ - "\u0000\u0000\u141e\u141f\u0007\r\u0000\u0000\u141f\u1420\u0007\u0013\u0000"+ - "\u0000\u1420\u1421\u0007\r\u0000\u0000\u1421\u03f0\u0001\u0000\u0000\u0000"+ - "\u1422\u1423\u0007\u0016\u0000\u0000\u1423\u1424\u0007\t\u0000\u0000\u1424"+ - "\u1425\u0007\n\u0000\u0000\u1425\u1426\u0005_\u0000\u0000\u1426\u1427"+ - "\u0007\u001b\u0000\u0000\u1427\u1428\u0007\u0005\u0000\u0000\u1428\u1429"+ - "\u0007\r\u0000\u0000\u1429\u142a\u0007\u0011\u0000\u0000\u142a\u142b\u0007"+ - "\u0005\u0000\u0000\u142b\u142c\u0007\u0012\u0000\u0000\u142c\u142d\u0007"+ - "\u0006\u0000\u0000\u142d\u142e\u0007\n\u0000\u0000\u142e\u03f2\u0001\u0000"+ - "\u0000\u0000\u142f\u1430\u0007\u0016\u0000\u0000\u1430\u1431\u0007\t\u0000"+ - "\u0000\u1431\u1432\u0007\n\u0000\u0000\u1432\u1433\u0005_\u0000\u0000"+ - "\u1433\u1434\u0007\u000e\u0000\u0000\u1434\u1435\u0007\u0013\u0000\u0000"+ - "\u1435\u1436\u0007\u0006\u0000\u0000\u1436\u1437\u0007\u0016\u0000\u0000"+ - "\u1437\u1438\u0007\u000f\u0000\u0000\u1438\u1439\u0007\u0007\u0000\u0000"+ - "\u1439\u03f4\u0001\u0000\u0000\u0000\u143a\u143b\u0007\u0005\u0000\u0000"+ - "\u143b\u143c\u0007\u0006\u0000\u0000\u143c\u143d\u0007\u0011\u0000\u0000"+ - "\u143d\u143e\u0007\u0005\u0000\u0000\u143e\u143f\u0007\t\u0000\u0000\u143f"+ - "\u03f6\u0001\u0000\u0000\u0000\u1440\u1441\u0007\u000e\u0000\u0000\u1441"+ - "\u1442\u0007\u0013\u0000\u0000\u1442\u1443\u0007\u0007\u0000\u0000\u1443"+ - "\u1444\u0007\t\u0000\u0000\u1444\u1445\u0007\u0010\u0000\u0000\u1445\u1446"+ - "\u0007\u0005\u0000\u0000\u1446\u1447\u0007\u0007\u0000\u0000\u1447\u1448"+ - "\u0007\u0010\u0000\u0000\u1448\u03f8\u0001\u0000\u0000\u0000\u1449\u144a"+ - "\u0007\u0018\u0000\u0000\u144a\u144b\u0007\n\u0000\u0000\u144b\u144c\u0007"+ - "\r\u0000\u0000\u144c\u144d\u0007\u0019\u0000\u0000\u144d\u144e\u0007\u0013"+ - "\u0000\u0000\u144e\u144f\u0007\r\u0000\u0000\u144f\u1450\u0007\u000f\u0000"+ - "\u0000\u1450\u03fa\u0001\u0000\u0000\u0000\u1451\u1452\u0007\u0017\u0000"+ - "\u0000\u1452\u1453\u0007\n\u0000\u0000\u1453\u1454\u0007\u0010\u0000\u0000"+ - "\u1454\u03fc\u0001\u0000\u0000\u0000\u1455\u1456\u0007\f\u0000\u0000\u1456"+ - "\u1457\u0007\u0011\u0000\u0000\u1457\u1458\u0007\u0005\u0000\u0000\u1458"+ - "\u1459\u0007\u0017\u0000\u0000\u1459\u145a\u0007\u0007\u0000\u0000\u145a"+ - "\u145b\u0007\u0013\u0000\u0000\u145b\u145c\u0007\t\u0000\u0000\u145c\u145d"+ - "\u0007\u0010\u0000\u0000\u145d\u145e\u0007\u0011\u0000\u0000\u145e\u145f"+ - "\u0007\u000e\u0000\u0000\u145f\u1460\u0007\t\u0000\u0000\u1460\u03fe\u0001"+ - "\u0000\u0000\u0000\u1461\u1462\u0007\t\u0000\u0000\u1462\u1463\u0007\u0010"+ - "\u0000\u0000\u1463\u1464\u0007\u0005\u0000\u0000\u1464\u1465\u0007\u000e"+ - "\u0000\u0000\u1465\u1466\u0007\u0015\u0000\u0000\u1466\u1467\u0007\n\u0000"+ - "\u0000\u1467\u1468\u0007\f\u0000\u0000\u1468\u0400\u0001\u0000\u0000\u0000"+ - "\u1469\u146a\u0007\n\u0000\u0000\u146a\u146b\u0007\u0006\u0000\u0000\u146b"+ - "\u146c\u0007\t\u0000\u0000\u146c\u146d\u0007\u0011\u0000\u0000\u146d\u146e"+ - "\u0007\u0019\u0000\u0000\u146e\u0402\u0001\u0000\u0000\u0000\u146f\u1470"+ - "\u0007\u001c\u0000\u0000\u1470\u1471\u0007\u0014\u0000\u0000\u1471\u1472"+ - "\u0007\u0011\u0000\u0000\u1472\u1473\u0007\u0006\u0000\u0000\u1473\u1474"+ - "\u0007\n\u0000\u0000\u1474\u0404\u0001\u0000\u0000\u0000\u1475\u1476\u0007"+ - "\r\u0000\u0000\u1476\u1477\u0007\n\u0000\u0000\u1477\u1478\u0007\u001b"+ - "\u0000\u0000\u1478\u1479\u0007\n\u0000\u0000\u1479\u147a\u0007\r\u0000"+ - "\u0000\u147a\u147b\u0007\t\u0000\u0000\u147b\u147c\u0007\n\u0000\u0000"+ - "\u147c\u0406\u0001\u0000\u0000\u0000\u147d\u147e\u0007\u0019\u0000\u0000"+ - "\u147e\u147f\u0007\u0013\u0000\u0000\u147f\u1480\u0007\r\u0000\u0000\u1480"+ - "\u1481\u0007\n\u0000\u0000\u1481\u1482\u0007\u0005\u0000\u0000\u1482\u1483"+ - "\u0007\u000e\u0000\u0000\u1483\u1484\u0007\u0014\u0000\u0000\u1484\u0408"+ - "\u0001\u0000\u0000\u0000\u1485\u1486\u0007\t\u0000\u0000\u1486\u1487\u0007"+ - "\u0006\u0000\u0000\u1487\u1488\u0007\u0011\u0000\u0000\u1488\u1489\u0007"+ - "\u000e\u0000\u0000\u1489\u148a\u0007\n\u0000\u0000\u148a\u040a\u0001\u0000"+ - "\u0000\u0000\u148b\u148c\u0007\n\u0000\u0000\u148c\u148d\u0007\u001a\u0000"+ - "\u0000\u148d\u148e\u0007\u0011\u0000\u0000\u148e\u148f\u0007\u0010\u0000"+ - "\u0000\u148f\u040c\u0001\u0000\u0000\u0000\u1490\u1491\u0007\r\u0000\u0000"+ - "\u1491\u1492\u0007\n\u0000\u0000\u1492\u1493\u0007\u0010\u0000\u0000\u1493"+ - "\u1494\u0007\u0016\u0000\u0000\u1494\u1495\u0007\r\u0000\u0000\u1495\u1496"+ - "\u0007\u0007\u0000\u0000\u1496\u040e\u0001\u0000\u0000\u0000\u1497\u1498"+ - "\u0007\u001d\u0000\u0000\u1498\u1499\u0007\u0016\u0000\u0000\u1499\u149a"+ - "\u0007\n\u0000\u0000\u149a\u149b\u0007\r\u0000\u0000\u149b\u149c\u0007"+ - "\b\u0000\u0000\u149c\u0410\u0001\u0000\u0000\u0000\u149d\u149e\u0007\r"+ - "\u0000\u0000\u149e\u149f\u0007\u0005\u0000\u0000\u149f\u14a0\u0007\u0011"+ - "\u0000\u0000\u14a0\u14a1\u0007\t\u0000\u0000\u14a1\u14a2\u0007\n\u0000"+ - "\u0000\u14a2\u0412\u0001\u0000\u0000\u0000\u14a3\u14a4\u0007\t\u0000\u0000"+ - "\u14a4\u14a5\u0007\u001d\u0000\u0000\u14a5\u14a6\u0007\u0006\u0000\u0000"+ - "\u14a6\u14a7\u0007\t\u0000\u0000\u14a7\u14a8\u0007\u0010\u0000\u0000\u14a8"+ - "\u14a9\u0007\u0005\u0000\u0000\u14a9\u14aa\u0007\u0010\u0000\u0000\u14aa"+ - "\u14ab\u0007\n\u0000\u0000\u14ab\u0414\u0001\u0000\u0000\u0000\u14ac\u14ad"+ - "\u0007\f\u0000\u0000\u14ad\u14ae\u0007\n\u0000\u0000\u14ae\u14af\u0007"+ - "\u0012\u0000\u0000\u14af\u14b0\u0007\u0016\u0000\u0000\u14b0\u14b1\u0007"+ - "\u0017\u0000\u0000\u14b1\u0416\u0001\u0000\u0000\u0000\u14b2\u14b3\u0007"+ - "\u0006\u0000\u0000\u14b3\u14b4\u0007\u0013\u0000\u0000\u14b4\u14b5\u0007"+ - "\u0017\u0000\u0000\u14b5\u0418\u0001\u0000\u0000\u0000\u14b6\u14b7\u0007"+ - "\u0011\u0000\u0000\u14b7\u14b8\u0007\u0007\u0000\u0000\u14b8\u14b9\u0007"+ - "\u0019\u0000\u0000\u14b9\u14ba\u0007\u0013\u0000\u0000\u14ba\u041a\u0001"+ - "\u0000\u0000\u0000\u14bb\u14bc\u0007\u0007\u0000\u0000\u14bc\u14bd\u0007"+ - "\u0013\u0000\u0000\u14bd\u14be\u0007\u0010\u0000\u0000\u14be\u14bf\u0007"+ - "\u0011\u0000\u0000\u14bf\u14c0\u0007\u000e\u0000\u0000\u14c0\u14c1\u0007"+ - "\n\u0000\u0000\u14c1\u041c\u0001\u0000\u0000\u0000\u14c2\u14c3\u0007\u001c"+ - "\u0000\u0000\u14c3\u14c4\u0007\u0005\u0000\u0000\u14c4\u14c5\u0007\r\u0000"+ - "\u0000\u14c5\u14c6\u0007\u0007\u0000\u0000\u14c6\u14c7\u0007\u0011\u0000"+ - "\u0000\u14c7\u14c8\u0007\u0007\u0000\u0000\u14c8\u14c9\u0007\u0017\u0000"+ - "\u0000\u14c9\u041e\u0001\u0000\u0000\u0000\u14ca\u14cb\u0007\n\u0000\u0000"+ - "\u14cb\u14cc\u0007\u001a\u0000\u0000\u14cc\u14cd\u0007\u000e\u0000\u0000"+ - "\u14cd\u14ce\u0007\n\u0000\u0000\u14ce\u14cf\u0007\u0018\u0000\u0000\u14cf"+ - "\u14d0\u0007\u0010\u0000\u0000\u14d0\u14d1\u0007\u0011\u0000\u0000\u14d1"+ - "\u14d2\u0007\u0013\u0000\u0000\u14d2\u14d3\u0007\u0007\u0000\u0000\u14d3"+ - "\u0420\u0001\u0000\u0000\u0000\u14d4\u14d5\u0007\u0005\u0000\u0000\u14d5"+ - "\u14d6\u0007\t\u0000\u0000\u14d6\u14d7\u0007\t\u0000\u0000\u14d7\u14d8"+ - "\u0007\n\u0000\u0000\u14d8\u14d9\u0007\r\u0000\u0000\u14d9\u14da\u0007"+ - "\u0010\u0000\u0000\u14da\u0422\u0001\u0000\u0000\u0000\u14db\u14dc\u0007"+ - "\u0006\u0000\u0000\u14dc\u14dd\u0007\u0013\u0000\u0000\u14dd\u14de\u0007"+ - "\u0013\u0000\u0000\u14de\u14df\u0007\u0018\u0000\u0000\u14df\u0424\u0001"+ - "\u0000\u0000\u0000\u14e0\u14e1\u0007\u0013\u0000\u0000\u14e1\u14e2\u0007"+ - "\u0018\u0000\u0000\u14e2\u14e3\u0007\n\u0000\u0000\u14e3\u14e4\u0007\u0007"+ - "\u0000\u0000\u14e4\u0426\u0001\u0000\u0000\u0000\u14e5\u14e6\u0007\u0005"+ - "\u0000\u0000\u14e6\u14e7\u0007\u0012\u0000\u0000\u14e7\u14e8\u0007\t\u0000"+ - "\u0000\u14e8\u0428\u0001\u0000\u0000\u0000\u14e9\u14ea\u0007\u000e\u0000"+ - "\u0000\u14ea\u14eb\u0007\u0012\u0000\u0000\u14eb\u14ec\u0007\r\u0000\u0000"+ - "\u14ec\u14ed\u0007\u0010\u0000\u0000\u14ed\u042a\u0001\u0000\u0000\u0000"+ - "\u14ee\u14ef\u0007\u000e\u0000\u0000\u14ef\u14f0\u0007\n\u0000\u0000\u14f0"+ - "\u14f1\u0007\u0011\u0000\u0000\u14f1\u14f2\u0007\u0006\u0000\u0000\u14f2"+ - "\u042c\u0001\u0000\u0000\u0000\u14f3\u14f4\u0007\u000e\u0000\u0000\u14f4"+ - "\u14f5\u0007\n\u0000\u0000\u14f5\u14f6\u0007\u0011\u0000\u0000\u14f6\u14f7"+ - "\u0007\u0006\u0000\u0000\u14f7\u14f8\u0007\u0011\u0000\u0000\u14f8\u14f9"+ - "\u0007\u0007\u0000\u0000\u14f9\u14fa\u0007\u0017\u0000\u0000\u14fa\u042e"+ - "\u0001\u0000\u0000\u0000\u14fb\u14fc\u0007\f\u0000\u0000\u14fc\u14fd\u0007"+ - "\n\u0000\u0000\u14fd\u14fe\u0007\u0017\u0000\u0000\u14fe\u14ff\u0007\r"+ - "\u0000\u0000\u14ff\u1500\u0007\n\u0000\u0000\u1500\u1501\u0007\n\u0000"+ - "\u0000\u1501\u1502\u0007\t\u0000\u0000\u1502\u0430\u0001\u0000\u0000\u0000"+ - "\u1503\u1504\u0007\f\u0000\u0000\u1504\u1505\u0007\u0011\u0000\u0000\u1505"+ - "\u1506\u0007\u001b\u0000\u0000\u1506\u0432\u0001\u0000\u0000\u0000\u1507"+ - "\u1508\u0007\n\u0000\u0000\u1508\u1509\u0007\u001a\u0000\u0000\u1509\u150a"+ - "\u0007\u0018\u0000\u0000\u150a\u0434\u0001\u0000\u0000\u0000\u150b\u150c"+ - "\u0007\u0019\u0000\u0000\u150c\u150d\u0007\u0005\u0000\u0000\u150d\u150e"+ - "\u0007\u000e\u0000\u0000\u150e\u150f\u0007\u0010\u0000\u0000\u150f\u1510"+ - "\u0007\u0013\u0000\u0000\u1510\u1511\u0007\r\u0000\u0000\u1511\u1512\u0007"+ - "\u0011\u0000\u0000\u1512\u1513\u0007\u0005\u0000\u0000\u1513\u1514\u0007"+ - "\u0006\u0000\u0000\u1514\u0436\u0001\u0000\u0000\u0000\u1515\u1516\u0007"+ - "\u0019\u0000\u0000\u1516\u1517\u0007\u0006\u0000\u0000\u1517\u1518\u0007"+ - "\u0013\u0000\u0000\u1518\u1519\u0007\u0013\u0000\u0000\u1519\u151a\u0007"+ - "\r\u0000\u0000\u151a\u0438\u0001\u0000\u0000\u0000\u151b\u151c\u0007\u0017"+ - "\u0000\u0000\u151c\u151d\u0007\u000e\u0000\u0000\u151d\u151e\u0007\f\u0000"+ - "\u0000\u151e\u043a\u0001\u0000\u0000\u0000\u151f\u1520\u0007\u0006\u0000"+ - "\u0000\u1520\u1521\u0007\u000e\u0000\u0000\u1521\u1522\u0007\u000f\u0000"+ - "\u0000\u1522\u043c\u0001\u0000\u0000\u0000\u1523\u1524\u0007\u0006\u0000"+ - "\u0000\u1524\u1525\u0007\u0007\u0000\u0000\u1525\u043e\u0001\u0000\u0000"+ - "\u0000\u1526\u1527\u0007\u0006\u0000\u0000\u1527\u1528\u0007\u0013\u0000"+ - "\u0000\u1528\u1529\u0007\u0017\u0000\u0000\u1529\u152a\u00051\u0000\u0000"+ - "\u152a\u152b\u00050\u0000\u0000\u152b\u0440\u0001\u0000\u0000\u0000\u152c"+ - "\u152d\u0007\u000f\u0000\u0000\u152d\u152e\u0007\u0011\u0000\u0000\u152e"+ - "\u152f\u0007\u0007\u0000\u0000\u152f\u1530\u0005_\u0000\u0000\u1530\u1531"+ - "\u0007\t\u0000\u0000\u1531\u1532\u0007\u000e\u0000\u0000\u1532\u1533\u0007"+ - "\u0005\u0000\u0000\u1533\u1534\u0007\u0006\u0000\u0000\u1534\u1535\u0007"+ - "\n\u0000\u0000\u1535\u0442\u0001\u0000\u0000\u0000\u1536\u1537\u0007\u000f"+ - "\u0000\u0000\u1537\u1538\u0007\u0013\u0000\u0000\u1538\u1539\u0007\f\u0000"+ - "\u0000\u1539\u0444\u0001\u0000\u0000\u0000\u153a\u153b\u0007\u0018\u0000"+ - "\u0000\u153b\u153c\u0007\u0011\u0000\u0000\u153c\u0446\u0001\u0000\u0000"+ - "\u0000\u153d\u153e\u0007\u0018\u0000\u0000\u153e\u153f\u0007\u0013\u0000"+ - "\u0000\u153f\u1540\u0007\u001c\u0000\u0000\u1540\u1541\u0007\n\u0000\u0000"+ - "\u1541\u1542\u0007\r\u0000\u0000\u1542\u0448\u0001\u0000\u0000\u0000\u1543"+ - "\u1544\u0007\r\u0000\u0000\u1544\u1545\u0007\u0005\u0000\u0000\u1545\u1546"+ - "\u0007\f\u0000\u0000\u1546\u1547\u0007\u0011\u0000\u0000\u1547\u1548\u0007"+ - "\u0005\u0000\u0000\u1548\u1549\u0007\u0007\u0000\u0000\u1549\u154a\u0007"+ - "\t\u0000\u0000\u154a\u044a\u0001\u0000\u0000\u0000\u154b\u154c\u0007\r"+ - "\u0000\u0000\u154c\u154d\u0007\u0013\u0000\u0000\u154d\u154e\u0007\u0016"+ - "\u0000\u0000\u154e\u154f\u0007\u0007\u0000\u0000\u154f\u1550\u0007\f\u0000"+ - "\u0000\u1550\u044c\u0001\u0000\u0000\u0000\u1551\u1552\u0007\t\u0000\u0000"+ - "\u1552\u1553\u0007\u000e\u0000\u0000\u1553\u1554\u0007\u0005\u0000\u0000"+ - "\u1554\u1555\u0007\u0006\u0000\u0000\u1555\u1556\u0007\n\u0000\u0000\u1556"+ - "\u044e\u0001\u0000\u0000\u0000\u1557\u1558\u0007\t\u0000\u0000\u1558\u1559"+ - "\u0007\u0011\u0000\u0000\u1559\u155a\u0007\u0017\u0000\u0000\u155a\u155b"+ - "\u0007\u0007\u0000\u0000\u155b\u0450\u0001\u0000\u0000\u0000\u155c\u155d"+ - "\u0007\t\u0000\u0000\u155d\u155e\u0007\u001d\u0000\u0000\u155e\u155f\u0007"+ - "\r\u0000\u0000\u155f\u1560\u0007\u0010\u0000\u0000\u1560\u0452\u0001\u0000"+ - "\u0000\u0000\u1561\u1562\u0007\u0010\u0000\u0000\u1562\u1563\u0007\r\u0000"+ - "\u0000\u1563\u1564\u0007\u0011\u0000\u0000\u1564\u1565\u0007\u000f\u0000"+ - "\u0000\u1565\u1566\u0005_\u0000\u0000\u1566\u1567\u0007\t\u0000\u0000"+ - "\u1567\u1568\u0007\u000e\u0000\u0000\u1568\u1569\u0007\u0005\u0000\u0000"+ - "\u1569\u156a\u0007\u0006\u0000\u0000\u156a\u156b\u0007\n\u0000\u0000\u156b"+ - "\u0454\u0001\u0000\u0000\u0000\u156c\u156d\u0007\u0010\u0000\u0000\u156d"+ - "\u156e\u0007\r\u0000\u0000\u156e\u156f\u0007\u0016\u0000\u0000\u156f\u1570"+ - "\u0007\u0007\u0000\u0000\u1570\u1571\u0007\u000e\u0000\u0000\u1571\u0456"+ - "\u0001\u0000\u0000\u0000\u1572\u1573\u0007\u001c\u0000\u0000\u1573\u1574"+ - "\u0007\u0011\u0000\u0000\u1574\u1575\u0007\f\u0000\u0000\u1575\u1576\u0007"+ - "\u0010\u0000\u0000\u1576\u1577\u0007\u0014\u0000\u0000\u1577\u1578\u0005"+ - "_\u0000\u0000\u1578\u1579\u0007\u0012\u0000\u0000\u1579\u157a\u0007\u0016"+ - "\u0000\u0000\u157a\u157b\u0007\u000e\u0000\u0000\u157b\u157c\u0007\u0015"+ - "\u0000\u0000\u157c\u157d\u0007\n\u0000\u0000\u157d\u157e\u0007\u0010\u0000"+ - "\u0000\u157e\u0458\u0001\u0000\u0000\u0000\u157f\u1580\u0007\r\u0000\u0000"+ - "\u1580\u1581\u0007\u0005\u0000\u0000\u1581\u1582\u0007\u0007\u0000\u0000"+ - "\u1582\u1583\u0007\f\u0000\u0000\u1583\u1584\u0007\u0013\u0000\u0000\u1584"+ - "\u1585\u0007\u000f\u0000\u0000\u1585\u045a\u0001\u0000\u0000\u0000\u1586"+ - "\u1587\u0007\t\u0000\u0000\u1587\u1588\u0007\n\u0000\u0000\u1588\u1589"+ - "\u0007\u0010\u0000\u0000\u1589\u158a\u0007\t\u0000\u0000\u158a\u158b\u0007"+ - "\n\u0000\u0000\u158b\u158c\u0007\n\u0000\u0000\u158c\u158d\u0007\f\u0000"+ - "\u0000\u158d\u045c\u0001\u0000\u0000\u0000\u158e\u158f\u0007\u0005\u0000"+ - "\u0000\u158f\u1590\u0007\u000e\u0000\u0000\u1590\u1591\u0007\u0013\u0000"+ - "\u0000\u1591\u1592\u0007\t\u0000\u0000\u1592\u045e\u0001\u0000\u0000\u0000"+ - "\u1593\u1594\u0007\u0005\u0000\u0000\u1594\u1595\u0007\u000e\u0000\u0000"+ - "\u1595\u1596\u0007\u0013\u0000\u0000\u1596\u1597\u0007\t\u0000\u0000\u1597"+ - "\u1598\u0007\f\u0000\u0000\u1598\u0460\u0001\u0000\u0000\u0000\u1599\u159a"+ - "\u0007\u0005\u0000\u0000\u159a\u159b\u0007\t\u0000\u0000\u159b\u159c\u0007"+ - "\u0011\u0000\u0000\u159c\u159d\u0007\u0007\u0000\u0000\u159d\u0462\u0001"+ - "\u0000\u0000\u0000\u159e\u159f\u0007\u0005\u0000\u0000\u159f\u15a0\u0007"+ - "\t\u0000\u0000\u15a0\u15a1\u0007\u0011\u0000\u0000\u15a1\u15a2\u0007\u0007"+ - "\u0000\u0000\u15a2\u15a3\u0007\f\u0000\u0000\u15a3\u0464\u0001\u0000\u0000"+ - "\u0000\u15a4\u15a5\u0007\u0005\u0000\u0000\u15a5\u15a6\u0007\u0010\u0000"+ - "\u0000\u15a6\u15a7\u0007\u0005\u0000\u0000\u15a7\u15a8\u0007\u0007\u0000"+ - "\u0000\u15a8\u0466\u0001\u0000\u0000\u0000\u15a9\u15aa\u0007\u0005\u0000"+ - "\u0000\u15aa\u15ab\u0007\u0010\u0000\u0000\u15ab\u15ac\u0007\u0005\u0000"+ - "\u0000\u15ac\u15ad\u0007\u0007\u0000\u0000\u15ad\u15ae\u0007\f\u0000\u0000"+ - "\u15ae\u0468\u0001\u0000\u0000\u0000\u15af\u15b0\u0007\u0005\u0000\u0000"+ - "\u15b0\u15b1\u0007\u0010\u0000\u0000\u15b1\u15b2\u0007\u0005\u0000\u0000"+ - "\u15b2\u15b3\u0007\u0007\u0000\u0000\u15b3\u15b4\u00052\u0000\u0000\u15b4"+ - "\u046a\u0001\u0000\u0000\u0000\u15b5\u15b6\u0007\u0005\u0000\u0000\u15b6"+ - "\u15b7\u0007\u0010\u0000\u0000\u15b7\u15b8\u0007\u0005\u0000\u0000\u15b8"+ - "\u15b9\u0007\u0007\u0000\u0000\u15b9\u15ba\u00052\u0000\u0000\u15ba\u15bb"+ - "\u0007\f\u0000\u0000\u15bb\u046c\u0001\u0000\u0000\u0000\u15bc\u15bd\u0007"+ - "\u000e\u0000\u0000\u15bd\u15be\u0007\u0013\u0000\u0000\u15be\u15bf\u0007"+ - "\t\u0000\u0000\u15bf\u046e\u0001\u0000\u0000\u0000\u15c0\u15c1\u0007\u000e"+ - "\u0000\u0000\u15c1\u15c2\u0007\u0013\u0000\u0000\u15c2\u15c3\u0007\t\u0000"+ - "\u0000\u15c3\u15c4\u0007\f\u0000\u0000\u15c4\u0470\u0001\u0000\u0000\u0000"+ - "\u15c5\u15c6\u0007\u000e\u0000\u0000\u15c6\u15c7\u0007\u0013\u0000\u0000"+ - "\u15c7\u15c8\u0007\u0010\u0000\u0000\u15c8\u0472\u0001\u0000\u0000\u0000"+ - "\u15c9\u15ca\u0007\u000e\u0000\u0000\u15ca\u15cb\u0007\u0013\u0000\u0000"+ - "\u15cb\u15cc\u0007\u0010\u0000\u0000\u15cc\u15cd\u0007\f\u0000\u0000\u15cd"+ - "\u0474\u0001\u0000\u0000\u0000\u15ce\u15cf\u0007\t\u0000\u0000\u15cf\u15d0"+ - "\u0007\u0011\u0000\u0000\u15d0\u15d1\u0007\u0007\u0000\u0000\u15d1\u0476"+ - "\u0001\u0000\u0000\u0000\u15d2\u15d3\u0007\t\u0000\u0000\u15d3\u15d4\u0007"+ - "\u0011\u0000\u0000\u15d4\u15d5\u0007\u0007\u0000\u0000\u15d5\u15d6\u0007"+ - "\f\u0000\u0000\u15d6\u0478\u0001\u0000\u0000\u0000\u15d7\u15d8\u0007\u0010"+ - "\u0000\u0000\u15d8\u15d9\u0007\u0005\u0000\u0000\u15d9\u15da\u0007\u0007"+ - "\u0000\u0000\u15da\u047a\u0001\u0000\u0000\u0000\u15db\u15dc\u0007\u0010"+ - "\u0000\u0000\u15dc\u15dd\u0007\u0005\u0000\u0000\u15dd\u15de\u0007\u0007"+ - "\u0000\u0000\u15de\u15df\u0007\f\u0000\u0000\u15df\u047c\u0001\u0000\u0000"+ - "\u0000\u15e0\u15e1\u0007\t\u0000\u0000\u15e1\u15e2\u0007\u0011\u0000\u0000"+ - "\u15e2\u15e3\u0007\u0007\u0000\u0000\u15e3\u15e4\u0007\u0014\u0000\u0000"+ - "\u15e4\u047e\u0001\u0000\u0000\u0000\u15e5\u15e6\u0007\u000e\u0000\u0000"+ - "\u15e6\u15e7\u0007\u0013\u0000\u0000\u15e7\u15e8\u0007\t\u0000\u0000\u15e8"+ - "\u15e9\u0007\u0014\u0000\u0000\u15e9\u0480\u0001\u0000\u0000\u0000\u15ea"+ - "\u15eb\u0007\u0010\u0000\u0000\u15eb\u15ec\u0007\u0005\u0000\u0000\u15ec"+ - "\u15ed\u0007\u0007\u0000\u0000\u15ed\u15ee\u0007\u0014\u0000\u0000\u15ee"+ - "\u0482\u0001\u0000\u0000\u0000\u15ef\u15f0\u0007\u0005\u0000\u0000\u15f0"+ - "\u15f1\u0007\t\u0000\u0000\u15f1\u15f2\u0007\u0011\u0000\u0000\u15f2\u15f3"+ - "\u0007\u0007\u0000\u0000\u15f3\u15f4\u0007\u0014\u0000\u0000\u15f4\u0484"+ - "\u0001\u0000\u0000\u0000\u15f5\u15f6\u0007\u0005\u0000\u0000\u15f6\u15f7"+ - "\u0007\u000e\u0000\u0000\u15f7\u15f8\u0007\u0013\u0000\u0000\u15f8\u15f9"+ - "\u0007\t\u0000\u0000\u15f9\u15fa\u0007\u0014\u0000\u0000\u15fa\u0486\u0001"+ - "\u0000\u0000\u0000\u15fb\u15fc\u0007\u0005\u0000\u0000\u15fc\u15fd\u0007"+ - "\u0010\u0000\u0000\u15fd\u15fe\u0007\u0005\u0000\u0000\u15fe\u15ff\u0007"+ - "\u0007\u0000\u0000\u15ff\u1600\u0007\u0014\u0000\u0000\u1600\u0488\u0001"+ - "\u0000\u0000\u0000\u1601\u1602\u0007\u0012\u0000\u0000\u1602\u1603\u0007"+ - "\u0011\u0000\u0000\u1603\u1604\u0007\u0010\u0000\u0000\u1604\u1605\u0005"+ - "_\u0000\u0000\u1605\u1606\u0007\u0006\u0000\u0000\u1606\u1607\u0007\n"+ - "\u0000\u0000\u1607\u1608\u0007\u0007\u0000\u0000\u1608\u1609\u0007\u0017"+ - "\u0000\u0000\u1609\u160a\u0007\u0010\u0000\u0000\u160a\u160b\u0007\u0014"+ - "\u0000\u0000\u160b\u048a\u0001\u0000\u0000\u0000\u160c\u160d\u0007\u000e"+ - "\u0000\u0000\u160d\u160e\u0007\u0014\u0000\u0000\u160e\u160f\u0007\u0005"+ - "\u0000\u0000\u160f\u1610\u0007\r\u0000\u0000\u1610\u1611\u0005_\u0000"+ - "\u0000\u1611\u1612\u0007\u0006\u0000\u0000\u1612\u1613\u0007\n\u0000\u0000"+ - "\u1613\u1614\u0007\u0007\u0000\u0000\u1614\u1615\u0007\u0017\u0000\u0000"+ - "\u1615\u1616\u0007\u0010\u0000\u0000\u1616\u1617\u0007\u0014\u0000\u0000"+ - "\u1617\u048c\u0001\u0000\u0000\u0000\u1618\u1619\u0007\u000e\u0000\u0000"+ - "\u1619\u161a\u0007\u0014\u0000\u0000\u161a\u161b\u0007\u0005\u0000\u0000"+ - "\u161b\u161c\u0007\r\u0000\u0000\u161c\u161d\u0007\u0005\u0000\u0000\u161d"+ - "\u161e\u0007\u000e\u0000\u0000\u161e\u161f\u0007\u0010\u0000\u0000\u161f"+ - "\u1620\u0007\n\u0000\u0000\u1620\u1621\u0007\r\u0000\u0000\u1621\u1622"+ - "\u0005_\u0000\u0000\u1622\u1623\u0007\u0006\u0000\u0000\u1623\u1624\u0007"+ - "\n\u0000\u0000\u1624\u1625\u0007\u0007\u0000\u0000\u1625\u1626\u0007\u0017"+ - "\u0000\u0000\u1626\u1627\u0007\u0010\u0000\u0000\u1627\u1628\u0007\u0014"+ - "\u0000\u0000\u1628\u048e\u0001\u0000\u0000\u0000\u1629\u162a\u0007\u0006"+ - "\u0000\u0000\u162a\u162b\u0007\u0013\u0000\u0000\u162b\u162c\u0007\u001c"+ - "\u0000\u0000\u162c\u162d\u0007\n\u0000\u0000\u162d\u162e\u0007\r\u0000"+ - "\u0000\u162e\u0490\u0001\u0000\u0000\u0000\u162f\u1630\u0007\u0013\u0000"+ - "\u0000\u1630\u1631\u0007\u000e\u0000\u0000\u1631\u1632\u0007\u0010\u0000"+ - "\u0000\u1632\u1633\u0007\n\u0000\u0000\u1633\u1634\u0007\u0010\u0000\u0000"+ - "\u1634\u1635\u0005_\u0000\u0000\u1635\u1636\u0007\u0006\u0000\u0000\u1636"+ - "\u1637\u0007\n\u0000\u0000\u1637\u1638\u0007\u0007\u0000\u0000\u1638\u1639"+ - "\u0007\u0017\u0000\u0000\u1639\u163a\u0007\u0010\u0000\u0000\u163a\u163b"+ - "\u0007\u0014\u0000\u0000\u163b\u0492\u0001\u0000\u0000\u0000\u163c\u163d"+ - "\u0007\u0016\u0000\u0000\u163d\u163e\u0007\u0018\u0000\u0000\u163e\u163f"+ - "\u0007\u0018\u0000\u0000\u163f\u1640\u0007\n\u0000\u0000\u1640\u1641\u0007"+ - "\r\u0000\u0000\u1641\u0494\u0001\u0000\u0000\u0000\u1642\u1643\u0007\u0005"+ - "\u0000\u0000\u1643\u1644\u0007\t\u0000\u0000\u1644\u1645\u0007\u000e\u0000"+ - "\u0000\u1645\u1646\u0007\u0011\u0000\u0000\u1646\u1647\u0007\u0011\u0000"+ - "\u0000\u1647\u0496\u0001\u0000\u0000\u0000\u1648\u1649\u0007\u0012\u0000"+ - "\u0000\u1649\u164a\u0007\u0010\u0000\u0000\u164a\u164b\u0007\r\u0000\u0000"+ - "\u164b\u164c\u0007\u0011\u0000\u0000\u164c\u164d\u0007\u000f\u0000\u0000"+ - "\u164d\u0498\u0001\u0000\u0000\u0000\u164e\u164f\u0007\u000e\u0000\u0000"+ - "\u164f\u1650\u0007\u0014\u0000\u0000\u1650\u1651\u0007\r\u0000\u0000\u1651"+ - "\u049a\u0001\u0000\u0000\u0000\u1652\u1653\u0007\u000e\u0000\u0000\u1653"+ - "\u1654\u0007\u0013\u0000\u0000\u1654\u1655\u0007\u0007\u0000\u0000\u1655"+ - "\u1656\u0007\u000e\u0000\u0000\u1656\u1657\u0007\u0005\u0000\u0000\u1657"+ - "\u1658\u0007\u0010\u0000\u0000\u1658\u049c\u0001\u0000\u0000\u0000\u1659"+ - "\u165a\u0007\u000e\u0000\u0000\u165a\u165b\u0007\u0013\u0000\u0000\u165b"+ - "\u165c\u0007\u0007\u0000\u0000\u165c\u165d\u0007\u000e\u0000\u0000\u165d"+ - "\u165e\u0007\u0005\u0000\u0000\u165e\u165f\u0007\u0010\u0000\u0000\u165f"+ - "\u1660\u0005_\u0000\u0000\u1660\u1661\u0007\u001c\u0000\u0000\u1661\u1662"+ - "\u0007\t\u0000\u0000\u1662\u049e\u0001\u0000\u0000\u0000\u1663\u1664\u0007"+ - "\u0019\u0000\u0000\u1664\u1665\u0007\u0013\u0000\u0000\u1665\u1666\u0007"+ - "\r\u0000\u0000\u1666\u1667\u0007\u000f\u0000\u0000\u1667\u1668\u0007\u0005"+ - "\u0000\u0000\u1668\u1669\u0007\u0010\u0000\u0000\u1669\u04a0\u0001\u0000"+ - "\u0000\u0000\u166a\u166b\u0007\u0011\u0000\u0000\u166b\u166c\u0007\u0007"+ - "\u0000\u0000\u166c\u166d\u0007\u0011\u0000\u0000\u166d\u166e\u0007\u0010"+ - "\u0000\u0000\u166e\u166f\u0007\u000e\u0000\u0000\u166f\u1670\u0007\u0005"+ - "\u0000\u0000\u1670\u1671\u0007\u0018\u0000\u0000\u1671\u04a2\u0001\u0000"+ - "\u0000\u0000\u1672\u1673\u0007\u0006\u0000\u0000\u1673\u1674\u0007\n\u0000"+ - "\u0000\u1674\u1675\u0007\u0007\u0000\u0000\u1675\u1676\u0007\u0017\u0000"+ - "\u0000\u1676\u1677\u0007\u0010\u0000\u0000\u1677\u1678\u0007\u0014\u0000"+ - "\u0000\u1678\u04a4\u0001\u0000\u0000\u0000\u1679\u167a\u0007\u0006\u0000"+ - "\u0000\u167a\u167b\u0007\u0018\u0000\u0000\u167b\u167c\u0007\u0005\u0000"+ - "\u0000\u167c\u167d\u0007\f\u0000\u0000\u167d\u04a6\u0001\u0000\u0000\u0000"+ - "\u167e\u167f\u0007\u0006\u0000\u0000\u167f\u1680\u0007\u0010\u0000\u0000"+ - "\u1680\u1681\u0007\r\u0000\u0000\u1681\u1682\u0007\u0011\u0000\u0000\u1682"+ - "\u1683\u0007\u000f\u0000\u0000\u1683\u04a8\u0001\u0000\u0000\u0000\u1684"+ - "\u1685\u0007\u000f\u0000\u0000\u1685\u1686\u0007\f\u0000\u0000\u1686\u1687"+ - "\u00055\u0000\u0000\u1687\u04aa\u0001\u0000\u0000\u0000\u1688\u1689\u0007"+ - "\u0018\u0000\u0000\u1689\u168a\u0007\u0005\u0000\u0000\u168a\u168b\u0007"+ - "\r\u0000\u0000\u168b\u168c\u0007\t\u0000\u0000\u168c\u168d\u0007\n\u0000"+ - "\u0000\u168d\u168e\u0005_\u0000\u0000\u168e\u168f\u0007\u0011\u0000\u0000"+ - "\u168f\u1690\u0007\f\u0000\u0000\u1690\u1691\u0007\n\u0000\u0000\u1691"+ - "\u1692\u0007\u0007\u0000\u0000\u1692\u1693\u0007\u0010\u0000\u0000\u1693"+ - "\u04ac\u0001\u0000\u0000\u0000\u1694\u1695\u0007\u0018\u0000\u0000\u1695"+ - "\u1696\u0007\u0017\u0000\u0000\u1696\u1697\u0005_\u0000\u0000\u1697\u1698"+ - "\u0007\u000e\u0000\u0000\u1698\u1699\u0007\u0006\u0000\u0000\u1699\u169a"+ - "\u0007\u0011\u0000\u0000\u169a\u169b\u0007\n\u0000\u0000\u169b\u169c\u0007"+ - "\u0007\u0000\u0000\u169c\u169d\u0007\u0010\u0000\u0000\u169d\u169e\u0005"+ - "_\u0000\u0000\u169e\u169f\u0007\n\u0000\u0000\u169f\u16a0\u0007\u0007"+ - "\u0000\u0000\u16a0\u16a1\u0007\u000e\u0000\u0000\u16a1\u16a2\u0007\u0013"+ - "\u0000\u0000\u16a2\u16a3\u0007\f\u0000\u0000\u16a3\u16a4\u0007\u0011\u0000"+ - "\u0000\u16a4\u16a5\u0007\u0007\u0000\u0000\u16a5\u16a6\u0007\u0017\u0000"+ - "\u0000\u16a6\u04ae\u0001\u0000\u0000\u0000\u16a7\u16a8\u0007\u001d\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\u0011\u0000\u0000\u16ae"+ - "\u16af\u0007\f\u0000\u0000\u16af\u16b0\u0007\n\u0000\u0000\u16b0\u16b1"+ - "\u0007\u0007\u0000\u0000\u16b1\u16b2\u0007\u0010\u0000\u0000\u16b2\u04b0"+ - "\u0001\u0000\u0000\u0000\u16b3\u16b4\u0007\u001d\u0000\u0000\u16b4\u16b5"+ - "\u0007\u0016\u0000\u0000\u16b5\u16b6\u0007\u0013\u0000\u0000\u16b6\u16b7"+ - "\u0007\u0010\u0000\u0000\u16b7\u16b8\u0007\n\u0000\u0000\u16b8\u16b9\u0005"+ - "_\u0000\u0000\u16b9\u16ba\u0007\u0006\u0000\u0000\u16ba\u16bb\u0007\u0011"+ - "\u0000\u0000\u16bb\u16bc\u0007\u0010\u0000\u0000\u16bc\u16bd\u0007\n\u0000"+ - "\u0000\u16bd\u16be\u0007\r\u0000\u0000\u16be\u16bf\u0007\u0005\u0000\u0000"+ - "\u16bf\u16c0\u0007\u0006\u0000\u0000\u16c0\u04b2\u0001\u0000\u0000\u0000"+ - "\u16c1\u16c2\u0007\u001d\u0000\u0000\u16c2\u16c3\u0007\u0016\u0000\u0000"+ - "\u16c3\u16c4\u0007\u0013\u0000\u0000\u16c4\u16c5\u0007\u0010\u0000\u0000"+ - "\u16c5\u16c6\u0007\n\u0000\u0000\u16c6\u16c7\u0005_\u0000\u0000\u16c7"+ - "\u16c8\u0007\u0007\u0000\u0000\u16c8\u16c9\u0007\u0016\u0000\u0000\u16c9"+ - "\u16ca\u0007\u0006\u0000\u0000\u16ca\u16cb\u0007\u0006\u0000\u0000\u16cb"+ - "\u16cc\u0007\u0005\u0000\u0000\u16cc\u16cd\u0007\u0012\u0000\u0000\u16cd"+ - "\u16ce\u0007\u0006\u0000\u0000\u16ce\u16cf\u0007\n\u0000\u0000\u16cf\u04b4"+ - "\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\u000e\u0000"+ - "\u0000\u16d8\u16d9\u0007\u0013\u0000\u0000\u16d9\u16da\u0007\u0016\u0000"+ - "\u0000\u16da\u16db\u0007\u0007\u0000\u0000\u16db\u16dc\u0007\u0010\u0000"+ - "\u0000\u16dc\u04b6\u0001\u0000\u0000\u0000\u16dd\u16de\u0007\r\u0000\u0000"+ - "\u16de\u16df\u0007\n\u0000\u0000\u16df\u16e0\u0007\u0017\u0000\u0000\u16e0"+ - "\u16e1\u0007\n\u0000\u0000\u16e1\u16e2\u0007\u001a\u0000\u0000\u16e2\u16e3"+ - "\u0007\u0018\u0000\u0000\u16e3\u16e4\u0005_\u0000\u0000\u16e4\u16e5\u0007"+ - "\u0011\u0000\u0000\u16e5\u16e6\u0007\u0007\u0000\u0000\u16e6\u16e7\u0007"+ - "\t\u0000\u0000\u16e7\u16e8\u0007\u0010\u0000\u0000\u16e8\u16e9\u0007\r"+ - "\u0000\u0000\u16e9\u04b8\u0001\u0000\u0000\u0000\u16ea\u16eb\u0007\r\u0000"+ - "\u0000\u16eb\u16ec\u0007\n\u0000\u0000\u16ec\u16ed\u0007\u0017\u0000\u0000"+ - "\u16ed\u16ee\u0007\n\u0000\u0000\u16ee\u16ef\u0007\u001a\u0000\u0000\u16ef"+ - "\u16f0\u0007\u0018\u0000\u0000\u16f0\u16f1\u0005_\u0000\u0000\u16f1\u16f2"+ - "\u0007\u0006\u0000\u0000\u16f2\u16f3\u0007\u0011\u0000\u0000\u16f3\u16f4"+ - "\u0007\u0015\u0000\u0000\u16f4\u16f5\u0007\n\u0000\u0000\u16f5\u04ba\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\u000f\u0000\u0000"+ - "\u16fe\u16ff\u0007\u0005\u0000\u0000\u16ff\u1700\u0007\u0010\u0000\u0000"+ - "\u1700\u1701\u0007\u000e\u0000\u0000\u1701\u1702\u0007\u0014\u0000\u0000"+ - "\u1702\u04bc\u0001\u0000\u0000\u0000\u1703\u1704\u0007\r\u0000\u0000\u1704"+ - "\u1705\u0007\n\u0000\u0000\u1705\u1706\u0007\u0017\u0000\u0000\u1706\u1707"+ - "\u0007\n\u0000\u0000\u1707\u1708\u0007\u001a\u0000\u0000\u1708\u1709\u0007"+ - "\u0018\u0000\u0000\u1709\u170a\u0005_\u0000\u0000\u170a\u170b\u0007\u000f"+ - "\u0000\u0000\u170b\u170c\u0007\u0005\u0000\u0000\u170c\u170d\u0007\u0010"+ - "\u0000\u0000\u170d\u170e\u0007\u000e\u0000\u0000\u170e\u170f\u0007\u0014"+ - "\u0000\u0000\u170f\u1710\u0007\n\u0000\u0000\u1710\u1711\u0007\t\u0000"+ - "\u0000\u1711\u04be\u0001\u0000\u0000\u0000\u1712\u1713\u0007\r\u0000\u0000"+ - "\u1713\u1714\u0007\n\u0000\u0000\u1714\u1715\u0007\u0017\u0000\u0000\u1715"+ - "\u1716\u0007\n\u0000\u0000\u1716\u1717\u0007\u001a\u0000\u0000\u1717\u1718"+ - "\u0007\u0018\u0000\u0000\u1718\u1719\u0005_\u0000\u0000\u1719\u171a\u0007"+ - "\r\u0000\u0000\u171a\u171b\u0007\n\u0000\u0000\u171b\u171c\u0007\u0018"+ - "\u0000\u0000\u171c\u171d\u0007\u0006\u0000\u0000\u171d\u171e\u0007\u0005"+ - "\u0000\u0000\u171e\u171f\u0007\u000e\u0000\u0000\u171f\u1720\u0007\n\u0000"+ - "\u0000\u1720\u04c0\u0001\u0000\u0000\u0000\u1721\u1722\u0007\r\u0000\u0000"+ - "\u1722\u1723\u0007\n\u0000\u0000\u1723\u1724\u0007\u0017\u0000\u0000\u1724"+ - "\u1725\u0007\n\u0000\u0000\u1725\u1726\u0007\u001a\u0000\u0000\u1726\u1727"+ - "\u0007\u0018\u0000\u0000\u1727\u1728\u0005_\u0000\u0000\u1728\u1729\u0007"+ - "\t\u0000\u0000\u1729\u172a\u0007\u0018\u0000\u0000\u172a\u172b\u0007\u0006"+ - "\u0000\u0000\u172b\u172c\u0007\u0011\u0000\u0000\u172c\u172d\u0007\u0010"+ - "\u0000\u0000\u172d\u172e\u0005_\u0000\u0000\u172e\u172f\u0007\u0010\u0000"+ - "\u0000\u172f\u1730\u0007\u0013\u0000\u0000\u1730\u1731\u0005_\u0000\u0000"+ - "\u1731\u1732\u0007\u0005\u0000\u0000\u1732\u1733\u0007\r\u0000\u0000\u1733"+ - "\u1734\u0007\r\u0000\u0000\u1734\u1735\u0007\u0005\u0000\u0000\u1735\u1736"+ - "\u0007\b\u0000\u0000\u1736\u04c2\u0001\u0000\u0000\u0000\u1737\u1738\u0007"+ - "\r\u0000\u0000\u1738\u1739\u0007\n\u0000\u0000\u1739\u173a\u0007\u0017"+ - "\u0000\u0000\u173a\u173b\u0007\n\u0000\u0000\u173b\u173c\u0007\u001a\u0000"+ - "\u0000\u173c\u173d\u0007\u0018\u0000\u0000\u173d\u173e\u0005_\u0000\u0000"+ - "\u173e\u173f\u0007\t\u0000\u0000\u173f\u1740\u0007\u0018\u0000\u0000\u1740"+ - "\u1741\u0007\u0006\u0000\u0000\u1741\u1742\u0007\u0011\u0000\u0000\u1742"+ - "\u1743\u0007\u0010\u0000\u0000\u1743\u1744\u0005_\u0000\u0000\u1744\u1745"+ - "\u0007\u0010\u0000\u0000\u1745\u1746\u0007\u0013\u0000\u0000\u1746\u1747"+ - "\u0005_\u0000\u0000\u1747\u1748\u0007\u0010\u0000\u0000\u1748\u1749\u0007"+ - "\u0005\u0000\u0000\u1749\u174a\u0007\u0012\u0000\u0000\u174a\u174b\u0007"+ - "\u0006\u0000\u0000\u174b\u174c\u0007\n\u0000\u0000\u174c\u04c4\u0001\u0000"+ - "\u0000\u0000\u174d\u174e\u0007\r\u0000\u0000\u174e\u174f\u0007\n\u0000"+ - "\u0000\u174f\u1750\u0007\u0017\u0000\u0000\u1750\u1751\u0007\n\u0000\u0000"+ - "\u1751\u1752\u0007\u001a\u0000\u0000\u1752\u1753\u0007\u0018\u0000\u0000"+ - "\u1753\u1754\u0005_\u0000\u0000\u1754\u1755\u0007\t\u0000\u0000\u1755"+ - "\u1756\u0007\u0016\u0000\u0000\u1756\u1757\u0007\u0012\u0000\u0000\u1757"+ - "\u1758\u0007\t\u0000\u0000\u1758\u1759\u0007\u0010\u0000\u0000\u1759\u175a"+ - "\u0007\r\u0000\u0000\u175a\u04c6\u0001\u0000\u0000\u0000\u175b\u175c\u0007"+ - "\r\u0000\u0000\u175c\u175d\u0007\n\u0000\u0000\u175d\u175e\u0007\u0018"+ - "\u0000\u0000\u175e\u175f\u0007\n\u0000\u0000\u175f\u1760\u0007\u0005\u0000"+ - "\u0000\u1760\u1761\u0007\u0010\u0000\u0000\u1761\u04c8\u0001\u0000\u0000"+ - "\u0000\u1762\u1763\u0007\r\u0000\u0000\u1763\u1764\u0007\u0018\u0000\u0000"+ - "\u1764\u1765\u0007\u0005\u0000\u0000\u1765\u1766\u0007\f\u0000\u0000\u1766"+ - "\u04ca\u0001\u0000\u0000\u0000\u1767\u1768\u0007\r\u0000\u0000\u1768\u1769"+ - "\u0007\u0010\u0000\u0000\u1769\u176a\u0007\r\u0000\u0000\u176a\u176b\u0007"+ - "\u0011\u0000\u0000\u176b\u176c\u0007\u000f\u0000\u0000\u176c\u04cc\u0001"+ - "\u0000\u0000\u0000\u176d\u176e\u0007\t\u0000\u0000\u176e\u176f\u0007\u0018"+ - "\u0000\u0000\u176f\u1770\u0007\u0006\u0000\u0000\u1770\u1771\u0007\u0011"+ - "\u0000\u0000\u1771\u1772\u0007\u0010\u0000\u0000\u1772\u1773\u0005_\u0000"+ - "\u0000\u1773\u1774\u0007\u0018\u0000\u0000\u1774\u1775\u0007\u0005\u0000"+ - "\u0000\u1775\u1776\u0007\r\u0000\u0000\u1776\u1777\u0007\u0010\u0000\u0000"+ - "\u1777\u04ce\u0001\u0000\u0000\u0000\u1778\u1779\u0007\t\u0000\u0000\u1779"+ - "\u177a\u0007\u0010\u0000\u0000\u177a\u177b\u0007\u0005\u0000\u0000\u177b"+ - "\u177c\u0007\r\u0000\u0000\u177c\u177d\u0007\u0010\u0000\u0000\u177d\u177e"+ - "\u0007\t\u0000\u0000\u177e\u177f\u0005_\u0000\u0000\u177f\u1780\u0007"+ - "\u001c\u0000\u0000\u1780\u1781\u0007\u0011\u0000\u0000\u1781\u1782\u0007"+ - "\u0010\u0000\u0000\u1782\u1783\u0007\u0014\u0000\u0000\u1783\u04d0\u0001"+ - "\u0000\u0000\u0000\u1784\u1785\u0007\t\u0000\u0000\u1785\u1786\u0007\u0010"+ - "\u0000\u0000\u1786\u1787\u0007\r\u0000\u0000\u1787\u1788\u0007\u0011\u0000"+ - "\u0000\u1788\u1789\u0007\u0007\u0000\u0000\u1789\u178a\u0007\u0017\u0000"+ - "\u0000\u178a\u178b\u0005_\u0000\u0000\u178b\u178c\u0007\u0010\u0000\u0000"+ - "\u178c\u178d\u0007\u0013\u0000\u0000\u178d\u178e\u0005_\u0000\u0000\u178e"+ - "\u178f\u0007\u0005\u0000\u0000\u178f\u1790\u0007\r\u0000\u0000\u1790\u1791"+ - "\u0007\r\u0000\u0000\u1791\u1792\u0007\u0005\u0000\u0000\u1792\u1793\u0007"+ - "\b\u0000\u0000\u1793\u04d2\u0001\u0000\u0000\u0000\u1794\u1795\u0007\t"+ - "\u0000\u0000\u1795\u1796\u0007\u0010\u0000\u0000\u1796\u1797\u0007\r\u0000"+ - "\u0000\u1797\u1798\u0007\u0011\u0000\u0000\u1798\u1799\u0007\u0007\u0000"+ - "\u0000\u1799\u179a\u0007\u0017\u0000\u0000\u179a\u179b\u0005_\u0000\u0000"+ - "\u179b\u179c\u0007\u0010\u0000\u0000\u179c\u179d\u0007\u0013\u0000\u0000"+ - "\u179d\u179e\u0005_\u0000\u0000\u179e\u179f\u0007\u0010\u0000\u0000\u179f"+ - "\u17a0\u0007\u0005\u0000\u0000\u17a0\u17a1\u0007\u0012\u0000\u0000\u17a1"+ - "\u17a2\u0007\u0006\u0000\u0000\u17a2\u17a3\u0007\n\u0000\u0000\u17a3\u04d4"+ - "\u0001\u0000\u0000\u0000\u17a4\u17a5\u0007\t\u0000\u0000\u17a5\u17a6\u0007"+ - "\u0010\u0000\u0000\u17a6\u17a7\u0007\r\u0000\u0000\u17a7\u17a8\u0007\u0018"+ - "\u0000\u0000\u17a8\u17a9\u0007\u0013\u0000\u0000\u17a9\u17aa\u0007\t\u0000"+ - "\u0000\u17aa\u04d6\u0001\u0000\u0000\u0000\u17ab\u17ac\u0007\t\u0000\u0000"+ - "\u17ac\u17ad\u0007\u0016\u0000\u0000\u17ad\u17ae\u0007\u0012\u0000\u0000"+ - "\u17ae\u17af\u0007\t\u0000\u0000\u17af\u17b0\u0007\u0010\u0000\u0000\u17b0"+ - "\u17b1\u0007\r\u0000\u0000\u17b1\u04d8\u0001\u0000\u0000\u0000\u17b2\u17b3"+ - "\u0007\u0010\u0000\u0000\u17b3\u17b4\u0007\u0013\u0000\u0000\u17b4\u17b5"+ - "\u0005_\u0000\u0000\u17b5\u17b6\u0007\u0005\u0000\u0000\u17b6\u17b7\u0007"+ - "\t\u0000\u0000\u17b7\u17b8\u0007\u000e\u0000\u0000\u17b8\u17b9\u0007\u0011"+ - "\u0000\u0000\u17b9\u17ba\u0007\u0011\u0000\u0000\u17ba\u04da\u0001\u0000"+ - "\u0000\u0000\u17bb\u17bc\u0007\u0010\u0000\u0000\u17bc\u17bd\u0007\u0013"+ - "\u0000\u0000\u17bd\u17be\u0005_\u0000\u0000\u17be\u17bf\u0007\u0014\u0000"+ - "\u0000\u17bf\u17c0\u0007\n\u0000\u0000\u17c0\u17c1\u0007\u001a\u0000\u0000"+ - "\u17c1\u04dc\u0001\u0000\u0000\u0000\u17c2\u17c3\u0007\u0010\u0000\u0000"+ - "\u17c3\u17c4\u0007\r\u0000\u0000\u17c4\u17c5\u0007\u0005\u0000\u0000\u17c5"+ - "\u17c6\u0007\u0007\u0000\u0000\u17c6\u17c7\u0007\t\u0000\u0000\u17c7\u17c8"+ - "\u0007\u0006\u0000\u0000\u17c8\u17c9\u0007\u0005\u0000\u0000\u17c9\u17ca"+ - "\u0007\u0010\u0000\u0000\u17ca\u17cb\u0007\n\u0000\u0000\u17cb\u04de\u0001"+ - "\u0000\u0000\u0000\u17cc\u17cd\u0007\u0016\u0000\u0000\u17cd\u17ce\u0007"+ - "\u0007\u0000\u0000\u17ce\u17cf\u0007\u0011\u0000\u0000\u17cf\u17d0\u0007"+ - "\t\u0000\u0000\u17d0\u17d1\u0007\u0010\u0000\u0000\u17d1\u17d2\u0007\r"+ - "\u0000\u0000\u17d2\u04e0\u0001\u0000\u0000\u0000\u17d3\u17d4\u0007\u0005"+ - "\u0000\u0000\u17d4\u17d5\u0007\u0017\u0000\u0000\u17d5\u17d6\u0007\n\u0000"+ - "\u0000\u17d6\u04e2\u0001\u0000\u0000\u0000\u17d7\u17d8\u0007\u000e\u0000"+ - "\u0000\u17d8\u17d9\u0007\u0006\u0000\u0000\u17d9\u17da\u0007\u0013\u0000"+ - "\u0000\u17da\u17db\u0007\u000e\u0000\u0000\u17db\u17dc\u0007\u0015\u0000"+ - "\u0000\u17dc\u17dd\u0005_\u0000\u0000\u17dd\u17de\u0007\u0010\u0000\u0000"+ - "\u17de\u17df\u0007\u0011\u0000\u0000\u17df\u17e0\u0007\u000f\u0000\u0000"+ - "\u17e0\u17e1\u0007\n\u0000\u0000\u17e1\u17e2\u0007\t\u0000\u0000\u17e2"+ - "\u17e3\u0007\u0010\u0000\u0000\u17e3\u17e4\u0007\u0005\u0000\u0000\u17e4"+ - "\u17e5\u0007\u000f\u0000\u0000\u17e5\u17e6\u0007\u0018\u0000\u0000\u17e6"+ - "\u04e4\u0001\u0000\u0000\u0000\u17e7\u17e8\u0007\f\u0000\u0000\u17e8\u17e9"+ - "\u0007\u0005\u0000\u0000\u17e9\u17ea\u0007\u0010\u0000\u0000\u17ea\u17eb"+ - "\u0007\n\u0000\u0000\u17eb\u17ec\u0005_\u0000\u0000\u17ec\u17ed\u0007"+ - "\u0012\u0000\u0000\u17ed\u17ee\u0007\u0011\u0000\u0000\u17ee\u17ef\u0007"+ - "\u0007\u0000\u0000\u17ef\u04e6\u0001\u0000\u0000\u0000\u17f0\u17f1\u0007"+ - "\f\u0000\u0000\u17f1\u17f2\u0007\u0005\u0000\u0000\u17f2\u17f3\u0007\u0010"+ - "\u0000\u0000\u17f3\u17f4\u0007\n\u0000\u0000\u17f4\u17f5\u0005_\u0000"+ - "\u0000\u17f5\u17f6\u0007\u0018\u0000\u0000\u17f6\u17f7\u0007\u0005\u0000"+ - "\u0000\u17f7\u17f8\u0007\r\u0000\u0000\u17f8\u17f9\u0007\u0010\u0000\u0000"+ - "\u17f9\u04e8\u0001\u0000\u0000\u0000\u17fa\u17fb\u0007\f\u0000\u0000\u17fb"+ - "\u17fc\u0007\u0005\u0000\u0000\u17fc\u17fd\u0007\u0010\u0000\u0000\u17fd"+ - "\u17fe\u0007\n\u0000\u0000\u17fe\u17ff\u0005_\u0000\u0000\u17ff\u1800"+ - "\u0007\u0010\u0000\u0000\u1800\u1801\u0007\r\u0000\u0000\u1801\u1802\u0007"+ - "\u0016\u0000\u0000\u1802\u1803\u0007\u0007\u0000\u0000\u1803\u1804\u0007"+ - "\u000e\u0000\u0000\u1804\u04ea\u0001\u0000\u0000\u0000\u1805\u1806\u0007"+ - "\u0011\u0000\u0000\u1806\u1807\u0007\t\u0000\u0000\u1807\u1808\u0007\u0019"+ - "\u0000\u0000\u1808\u1809\u0007\u0011\u0000\u0000\u1809\u180a\u0007\u0007"+ - "\u0000\u0000\u180a\u180b\u0007\u0011\u0000\u0000\u180b\u180c\u0007\u0010"+ - "\u0000\u0000\u180c\u180d\u0007\n\u0000\u0000\u180d\u04ec\u0001\u0000\u0000"+ - "\u0000\u180e\u180f\u0007\u001e\u0000\u0000\u180f\u1810\u0007\u0016\u0000"+ - "\u0000\u1810\u1811\u0007\t\u0000\u0000\u1811\u1812\u0007\u0010\u0000\u0000"+ - "\u1812\u1813\u0007\u0011\u0000\u0000\u1813\u1814\u0007\u0019\u0000\u0000"+ - "\u1814\u1815\u0007\b\u0000\u0000\u1815\u1816\u0005_\u0000\u0000\u1816"+ - "\u1817\u0007\f\u0000\u0000\u1817\u1818\u0007\u0005\u0000\u0000\u1818\u1819"+ - "\u0007\b\u0000\u0000\u1819\u181a\u0007\t\u0000\u0000\u181a\u04ee\u0001"+ - "\u0000\u0000\u0000\u181b\u181c\u0007\u001e\u0000\u0000\u181c\u181d\u0007"+ - "\u0016\u0000\u0000\u181d\u181e\u0007\t\u0000\u0000\u181e\u181f\u0007\u0010"+ - "\u0000\u0000\u181f\u1820\u0007\u0011\u0000\u0000\u1820\u1821\u0007\u0019"+ - "\u0000\u0000\u1821\u1822\u0007\b\u0000\u0000\u1822\u1823\u0005_\u0000"+ - "\u0000\u1823\u1824\u0007\u0014\u0000\u0000\u1824\u1825\u0007\u0013\u0000"+ - "\u0000\u1825\u1826\u0007\u0016\u0000\u0000\u1826\u1827\u0007\r\u0000\u0000"+ - "\u1827\u1828\u0007\t\u0000\u0000\u1828\u04f0\u0001\u0000\u0000\u0000\u1829"+ - "\u182a\u0007\u001e\u0000\u0000\u182a\u182b\u0007\u0016\u0000\u0000\u182b"+ - "\u182c\u0007\t\u0000\u0000\u182c\u182d\u0007\u0010\u0000\u0000\u182d\u182e"+ - "\u0007\u0011\u0000\u0000\u182e\u182f\u0007\u0019\u0000\u0000\u182f\u1830"+ - "\u0007\b\u0000\u0000\u1830\u1831\u0005_\u0000\u0000\u1831\u1832\u0007"+ - "\u0011\u0000\u0000\u1832\u1833\u0007\u0007\u0000\u0000\u1833\u1834\u0007"+ - "\u0010\u0000\u0000\u1834\u1835\u0007\n\u0000\u0000\u1835\u1836\u0007\r"+ - "\u0000\u0000\u1836\u1837\u0007\u001b\u0000\u0000\u1837\u1838\u0007\u0005"+ - "\u0000\u0000\u1838\u1839\u0007\u0006\u0000\u0000\u1839\u04f2\u0001\u0000"+ - "\u0000\u0000\u183a\u183b\u0007\u000f\u0000\u0000\u183b\u183c\u0007\u0005"+ - "\u0000\u0000\u183c\u183d\u0007\u0015\u0000\u0000\u183d\u183e\u0007\n\u0000"+ - "\u0000\u183e\u183f\u0005_\u0000\u0000\u183f\u1840\u0007\f\u0000\u0000"+ - "\u1840\u1841\u0007\u0005\u0000\u0000\u1841\u1842\u0007\u0010\u0000\u0000"+ - "\u1842\u1843\u0007\n\u0000\u0000\u1843\u04f4\u0001\u0000\u0000\u0000\u1844"+ - "\u1845\u0007\u000f\u0000\u0000\u1845\u1846\u0007\u0005\u0000\u0000\u1846"+ - "\u1847\u0007\u0015\u0000\u0000\u1847\u1848\u0007\n\u0000\u0000\u1848\u1849"+ - "\u0005_\u0000\u0000\u1849\u184a\u0007\u0011\u0000\u0000\u184a\u184b\u0007"+ - "\u0007\u0000\u0000\u184b\u184c\u0007\u0010\u0000\u0000\u184c\u184d\u0007"+ - "\n\u0000\u0000\u184d\u184e\u0007\r\u0000\u0000\u184e\u184f\u0007\u001b"+ - "\u0000\u0000\u184f\u1850\u0007\u0005\u0000\u0000\u1850\u1851\u0007\u0006"+ - "\u0000\u0000\u1851\u04f6\u0001\u0000\u0000\u0000\u1852\u1853\u0007\u000f"+ - "\u0000\u0000\u1853\u1854\u0007\u0005\u0000\u0000\u1854\u1855\u0007\u0015"+ - "\u0000\u0000\u1855\u1856\u0007\n\u0000\u0000\u1856\u1857\u0005_\u0000"+ - "\u0000\u1857\u1858\u0007\u0010\u0000\u0000\u1858\u1859\u0007\u0011\u0000"+ - "\u0000\u1859\u185a\u0007\u000f\u0000\u0000\u185a\u185b\u0007\n\u0000\u0000"+ - "\u185b\u04f8\u0001\u0000\u0000\u0000\u185c\u185d\u0007\u000f\u0000\u0000"+ - "\u185d\u185e\u0007\u0005\u0000\u0000\u185e\u185f\u0007\u0015\u0000\u0000"+ - "\u185f\u1860\u0007\n\u0000\u0000\u1860\u1861\u0005_\u0000\u0000\u1861"+ - "\u1862\u0007\u0010\u0000\u0000\u1862\u1863\u0007\u0011\u0000\u0000\u1863"+ - "\u1864\u0007\u000f\u0000\u0000\u1864\u1865\u0007\n\u0000\u0000\u1865\u1866"+ - "\u0007\t\u0000\u0000\u1866\u1867\u0007\u0010\u0000\u0000\u1867\u1868\u0007"+ - "\u0005\u0000\u0000\u1868\u1869\u0007\u000f\u0000\u0000\u1869\u186a\u0007"+ - "\u0018\u0000\u0000\u186a\u04fa\u0001\u0000\u0000\u0000\u186b\u186c\u0007"+ - "\u000f\u0000\u0000\u186c\u186d\u0007\u0005\u0000\u0000\u186d\u186e\u0007"+ - "\u0015\u0000\u0000\u186e\u186f\u0007\n\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\u187a\u0007\u0010\u0000\u0000"+ - "\u187a\u187b\u0007\u000b\u0000\u0000\u187b\u04fc\u0001\u0000\u0000\u0000"+ - "\u187c\u187d\u0007\u0007\u0000\u0000\u187d\u187e\u0007\u0013\u0000\u0000"+ - "\u187e\u187f\u0007\u001c\u0000\u0000\u187f\u04fe\u0001\u0000\u0000\u0000"+ - "\u1880\u1881\u0007\t\u0000\u0000\u1881\u1882\u0007\u0010\u0000\u0000\u1882"+ - "\u1883\u0007\u0005\u0000\u0000\u1883\u1884\u0007\u0010\u0000\u0000\u1884"+ - "\u1885\u0007\n\u0000\u0000\u1885\u1886\u0007\u000f\u0000\u0000\u1886\u1887"+ - "\u0007\n\u0000\u0000\u1887\u1888\u0007\u0007\u0000\u0000\u1888\u1889\u0007"+ - "\u0010\u0000\u0000\u1889\u188a\u0005_\u0000\u0000\u188a\u188b\u0007\u0010"+ - "\u0000\u0000\u188b\u188c\u0007\u0011\u0000\u0000\u188c\u188d\u0007\u000f"+ - "\u0000\u0000\u188d\u188e\u0007\n\u0000\u0000\u188e\u188f\u0007\t\u0000"+ - "\u0000\u188f\u1890\u0007\u0010\u0000\u0000\u1890\u1891\u0007\u0005\u0000"+ - "\u0000\u1891\u1892\u0007\u000f\u0000\u0000\u1892\u1893\u0007\u0018\u0000"+ - "\u0000\u1893\u0500\u0001\u0000\u0000\u0000\u1894\u1895\u0007\u0010\u0000"+ - "\u0000\u1895\u1896\u0007\u0011\u0000\u0000\u1896\u1897\u0007\u000f\u0000"+ - "\u0000\u1897\u1898\u0007\n\u0000\u0000\u1898\u1899\u0007\u0013\u0000\u0000"+ - "\u1899\u189a\u0007\u0019\u0000\u0000\u189a\u189b\u0007\f\u0000\u0000\u189b"+ - "\u189c\u0007\u0005\u0000\u0000\u189c\u189d\u0007\b\u0000\u0000\u189d\u0502"+ - "\u0001\u0000\u0000\u0000\u189e\u189f\u0007\u0010\u0000\u0000\u189f\u18a0"+ - "\u0007\r\u0000\u0000\u18a0\u18a1\u0007\u0005\u0000\u0000\u18a1\u18a2\u0007"+ - "\u0007\u0000\u0000\u18a2\u18a3\u0007\t\u0000\u0000\u18a3\u18a4\u0007\u0005"+ - "\u0000\u0000\u18a4\u18a5\u0007\u000e\u0000\u0000\u18a5\u18a6\u0007\u0010"+ - "\u0000\u0000\u18a6\u18a7\u0007\u0011\u0000\u0000\u18a7\u18a8\u0007\u0013"+ - "\u0000\u0000\u18a8\u18a9\u0007\u0007\u0000\u0000\u18a9\u18aa\u0005_\u0000"+ - "\u0000\u18aa\u18ab\u0007\u0010\u0000\u0000\u18ab\u18ac\u0007\u0011\u0000"+ - "\u0000\u18ac\u18ad\u0007\u000f\u0000\u0000\u18ad\u18ae\u0007\n\u0000\u0000"+ - "\u18ae\u18af\u0007\t\u0000\u0000\u18af\u18b0\u0007\u0010\u0000\u0000\u18b0"+ - "\u18b1\u0007\u0005\u0000\u0000\u18b1\u18b2\u0007\u000f\u0000\u0000\u18b2"+ - "\u18b3\u0007\u0018\u0000\u0000\u18b3\u0504\u0001\u0000\u0000\u0000\u18b4"+ - "\u18b5\u0007\u0010\u0000\u0000\u18b5\u18b6\u0007\u0013\u0000\u0000\u18b6"+ - "\u18b7\u0005_\u0000\u0000\u18b7\u18b8\u0007\u0010\u0000\u0000\u18b8\u18b9"+ - "\u0007\u0011\u0000\u0000\u18b9\u18ba\u0007\u000f\u0000\u0000\u18ba\u18bb"+ - "\u0007\n\u0000\u0000\u18bb\u18bc\u0007\t\u0000\u0000\u18bc\u18bd\u0007"+ - "\u0010\u0000\u0000\u18bd\u18be\u0007\u0005\u0000\u0000\u18be\u18bf\u0007"+ - "\u000f\u0000\u0000\u18bf\u18c0\u0007\u0018\u0000\u0000\u18c0\u0506\u0001"+ - "\u0000\u0000\u0000\u18c1\u18c2\u0007\u0010\u0000\u0000\u18c2\u18c3\u0007"+ - "\u0013\u0000\u0000\u18c3\u18c4\u0005_\u0000\u0000\u18c4\u18c5\u0007\u000e"+ - "\u0000\u0000\u18c5\u18c6\u0007\u0014\u0000\u0000\u18c6\u18c7\u0007\u0005"+ - "\u0000\u0000\u18c7\u18c8\u0007\r\u0000\u0000\u18c8\u0508\u0001\u0000\u0000"+ - "\u0000\u18c9\u18ca\u0007\u0010\u0000\u0000\u18ca\u18cb\u0007\u0013\u0000"+ - "\u0000\u18cb\u18cc\u0005_\u0000\u0000\u18cc\u18cd\u0007\f\u0000\u0000"+ - "\u18cd\u18ce\u0007\u0005\u0000\u0000\u18ce\u18cf\u0007\u0010\u0000\u0000"+ - "\u18cf\u18d0\u0007\n\u0000\u0000\u18d0\u050a\u0001\u0000\u0000\u0000\u18d1"+ - "\u18d2\u0007\u0010\u0000\u0000\u18d2\u18d3\u0007\u0013\u0000\u0000\u18d3"+ - "\u18d4\u0005_\u0000\u0000\u18d4\u18d5\u0007\u0007\u0000\u0000\u18d5\u18d6"+ - "\u0007\u0016\u0000\u0000\u18d6\u18d7\u0007\u000f\u0000\u0000\u18d7\u18d8"+ - "\u0007\u0012\u0000\u0000\u18d8\u18d9\u0007\n\u0000\u0000\u18d9\u18da\u0007"+ - "\r\u0000\u0000\u18da\u050c\u0001\u0000\u0000\u0000\u18db\u18df\u0003\u050f"+ - "\u0285\u0000\u18dc\u18de\u0003\u0511\u0286\u0000\u18dd\u18dc\u0001\u0000"+ - "\u0000\u0000\u18de\u18e1\u0001\u0000\u0000\u0000\u18df\u18dd\u0001\u0000"+ - "\u0000\u0000\u18df\u18e0\u0001\u0000\u0000\u0000\u18e0\u050e\u0001\u0000"+ - "\u0000\u0000\u18e1\u18df\u0001\u0000\u0000\u0000\u18e2\u18e9\u0007\u001f"+ - "\u0000\u0000\u18e3\u18e4\u0007 \u0000\u0000\u18e4\u18e9\u0004\u0285\u0006"+ - "\u0000\u18e5\u18e6\u0007!\u0000\u0000\u18e6\u18e7\u0007\"\u0000\u0000"+ - "\u18e7\u18e9\u0004\u0285\u0007\u0000\u18e8\u18e2\u0001\u0000\u0000\u0000"+ - "\u18e8\u18e3\u0001\u0000\u0000\u0000\u18e8\u18e5\u0001\u0000\u0000\u0000"+ - "\u18e9\u0510\u0001\u0000\u0000\u0000\u18ea\u18ed\u0003\u0513\u0287\u0000"+ - "\u18eb\u18ed\u0005$\u0000\u0000\u18ec\u18ea\u0001\u0000\u0000\u0000\u18ec"+ - "\u18eb\u0001\u0000\u0000\u0000\u18ed\u0512\u0001\u0000\u0000\u0000\u18ee"+ - "\u18f1\u0003\u050f\u0285\u0000\u18ef\u18f1\u0007\u0000\u0000\u0000\u18f0"+ - "\u18ee\u0001\u0000\u0000\u0000\u18f0\u18ef\u0001\u0000\u0000\u0000\u18f1"+ - "\u0514\u0001\u0000\u0000\u0000\u18f2\u18f3\u0003\u0517\u0289\u0000\u18f3"+ - "\u18f4\u0005\"\u0000\u0000\u18f4\u0516\u0001\u0000\u0000\u0000\u18f5\u18fb"+ - "\u0005\"\u0000\u0000\u18f6\u18f7\u0005\"\u0000\u0000\u18f7\u18fa\u0005"+ - "\"\u0000\u0000\u18f8\u18fa\b#\u0000\u0000\u18f9\u18f6\u0001\u0000\u0000"+ - "\u0000\u18f9\u18f8\u0001\u0000\u0000\u0000\u18fa\u18fd\u0001\u0000\u0000"+ - "\u0000\u18fb\u18f9\u0001\u0000\u0000\u0000\u18fb\u18fc\u0001\u0000\u0000"+ - "\u0000\u18fc\u0518\u0001\u0000\u0000\u0000\u18fd\u18fb\u0001\u0000\u0000"+ - "\u0000\u18fe\u18ff\u0003\u051b\u028b\u0000\u18ff\u1900\u0005\"\u0000\u0000"+ - "\u1900\u051a\u0001\u0000\u0000\u0000\u1901\u1907\u0005\"\u0000\u0000\u1902"+ - "\u1903\u0005\"\u0000\u0000\u1903\u1906\u0005\"\u0000\u0000\u1904\u1906"+ - "\b$\u0000\u0000\u1905\u1902\u0001\u0000\u0000\u0000\u1905\u1904\u0001"+ - "\u0000\u0000\u0000\u1906\u1909\u0001\u0000\u0000\u0000\u1907\u1905\u0001"+ - "\u0000\u0000\u0000\u1907\u1908\u0001\u0000\u0000\u0000\u1908\u051c\u0001"+ - "\u0000\u0000\u0000\u1909\u1907\u0001\u0000\u0000\u0000\u190a\u190b\u0007"+ - "\u0016\u0000\u0000\u190b\u190c\u0005&\u0000\u0000\u190c\u190d\u0003\u0515"+ - "\u0288\u0000\u190d\u051e\u0001\u0000\u0000\u0000\u190e\u190f\u0007\u0016"+ - "\u0000\u0000\u190f\u1910\u0005&\u0000\u0000\u1910\u1911\u0003\u0517\u0289"+ - "\u0000\u1911\u0520\u0001\u0000\u0000\u0000\u1912\u1913\u0007\u0016\u0000"+ - "\u0000\u1913\u1914\u0005&\u0000\u0000\u1914\u1915\u0003\u0519\u028a\u0000"+ - "\u1915\u0522\u0001\u0000\u0000\u0000\u1916\u1917\u0007\u0016\u0000\u0000"+ - "\u1917\u1918\u0005&\u0000\u0000\u1918\u1919\u0003\u051b\u028b\u0000\u1919"+ - "\u0524\u0001\u0000\u0000\u0000\u191a\u191b\u0003\u0527\u0291\u0000\u191b"+ - "\u191c\u0005\'\u0000\u0000\u191c\u0526\u0001\u0000\u0000\u0000\u191d\u1923"+ - "\u0005\'\u0000\u0000\u191e\u191f\u0005\'\u0000\u0000\u191f\u1922\u0005"+ - "\'\u0000\u0000\u1920\u1922\b%\u0000\u0000\u1921\u191e\u0001\u0000\u0000"+ - "\u0000\u1921\u1920\u0001\u0000\u0000\u0000\u1922\u1925\u0001\u0000\u0000"+ - "\u0000\u1923\u1921\u0001\u0000\u0000\u0000\u1923\u1924\u0001\u0000\u0000"+ - "\u0000\u1924\u0528\u0001\u0000\u0000\u0000\u1925\u1923\u0001\u0000\u0000"+ - "\u0000\u1926\u1927\u0007\n\u0000\u0000\u1927\u1928\u0005\'\u0000\u0000"+ - "\u1928\u1929\u0001\u0000\u0000\u0000\u1929\u192a\u0006\u0292\u0002\u0000"+ - "\u192a\u192b\u0006\u0292\u0003\u0000\u192b\u052a\u0001\u0000\u0000\u0000"+ - "\u192c\u192d\u0003\u052d\u0294\u0000\u192d\u192e\u0005\'\u0000\u0000\u192e"+ - "\u052c\u0001\u0000\u0000\u0000\u192f\u1930\u0007\u0016\u0000\u0000\u1930"+ - "\u1931\u0005&\u0000\u0000\u1931\u1932\u0003\u0527\u0291\u0000\u1932\u052e"+ - "\u0001\u0000\u0000\u0000\u1933\u1935\u0005$\u0000\u0000\u1934\u1936\u0003"+ - "\u0531\u0296\u0000\u1935\u1934\u0001\u0000\u0000\u0000\u1935\u1936\u0001"+ - "\u0000\u0000\u0000\u1936\u1937\u0001\u0000\u0000\u0000\u1937\u1938\u0005"+ - "$\u0000\u0000\u1938\u1939\u0006\u0295\u0004\u0000\u1939\u193a\u0001\u0000"+ - "\u0000\u0000\u193a\u193b\u0006\u0295\u0005\u0000\u193b\u0530\u0001\u0000"+ - "\u0000\u0000\u193c\u1940\u0003\u050f\u0285\u0000\u193d\u193f\u0003\u0513"+ - "\u0287\u0000\u193e\u193d\u0001\u0000\u0000\u0000\u193f\u1942\u0001\u0000"+ - "\u0000\u0000\u1940\u193e\u0001\u0000\u0000\u0000\u1940\u1941\u0001\u0000"+ - "\u0000\u0000\u1941\u0532\u0001\u0000\u0000\u0000\u1942\u1940\u0001\u0000"+ - "\u0000\u0000\u1943\u1944\u0003\u0535\u0298\u0000\u1944\u1945\u0005\'\u0000"+ - "\u0000\u1945\u0534\u0001\u0000\u0000\u0000\u1946\u1947\u0007\u0012\u0000"+ - "\u0000\u1947\u194b\u0005\'\u0000\u0000\u1948\u194a\u0007&\u0000\u0000"+ - "\u1949\u1948\u0001\u0000\u0000\u0000\u194a\u194d\u0001\u0000\u0000\u0000"+ - "\u194b\u1949\u0001\u0000\u0000\u0000\u194b\u194c\u0001\u0000\u0000\u0000"+ - "\u194c\u0536\u0001\u0000\u0000\u0000\u194d\u194b\u0001\u0000\u0000\u0000"+ - "\u194e\u194f\u0003\u0539\u029a\u0000\u194f\u1950\u0005\'\u0000\u0000\u1950"+ - "\u0538\u0001\u0000\u0000\u0000\u1951\u1952\u0007\u0012\u0000\u0000\u1952"+ - "\u1953\u0003\u0527\u0291\u0000\u1953\u053a\u0001\u0000\u0000\u0000\u1954"+ - "\u1955\u0003\u053d\u029c\u0000\u1955\u1956\u0005\'\u0000\u0000\u1956\u053c"+ - "\u0001\u0000\u0000\u0000\u1957\u1958\u0007\u001a\u0000\u0000\u1958\u195c"+ - "\u0005\'\u0000\u0000\u1959\u195b\u0007\'\u0000\u0000\u195a\u1959\u0001"+ - "\u0000\u0000\u0000\u195b\u195e\u0001\u0000\u0000\u0000\u195c\u195a\u0001"+ - "\u0000\u0000\u0000\u195c\u195d\u0001\u0000\u0000\u0000\u195d\u053e\u0001"+ - "\u0000\u0000\u0000\u195e\u195c\u0001\u0000\u0000\u0000\u195f\u1960\u0003"+ - "\u0541\u029e\u0000\u1960\u1961\u0005\'\u0000\u0000\u1961\u0540\u0001\u0000"+ - "\u0000\u0000\u1962\u1963\u0007\u001a\u0000\u0000\u1963\u1964\u0003\u0527"+ - "\u0291\u0000\u1964\u0542\u0001\u0000\u0000\u0000\u1965\u1966\u0003\u0549"+ - "\u02a2\u0000\u1966\u0544\u0001\u0000\u0000\u0000\u1967\u1968\u0003\u0549"+ - "\u02a2\u0000\u1968\u1969\u0005.\u0000\u0000\u1969\u196a\u0005.\u0000\u0000"+ - "\u196a\u196b\u0001\u0000\u0000\u0000\u196b\u196c\u0006\u02a0\u0006\u0000"+ - "\u196c\u0546\u0001\u0000\u0000\u0000\u196d\u196e\u0003\u0549\u02a2\u0000"+ - "\u196e\u1970\u0005.\u0000\u0000\u196f\u1971\u0003\u0549\u02a2\u0000\u1970"+ - "\u196f\u0001\u0000\u0000\u0000\u1970\u1971\u0001\u0000\u0000\u0000\u1971"+ - "\u1977\u0001\u0000\u0000\u0000\u1972\u1974\u0007\n\u0000\u0000\u1973\u1975"+ - "\u0007\u0001\u0000\u0000\u1974\u1973\u0001\u0000\u0000\u0000\u1974\u1975"+ - "\u0001\u0000\u0000\u0000\u1975\u1976\u0001\u0000\u0000\u0000\u1976\u1978"+ - "\u0003\u0549\u02a2\u0000\u1977\u1972\u0001\u0000\u0000\u0000\u1977\u1978"+ - "\u0001\u0000\u0000\u0000\u1978\u198a\u0001\u0000\u0000\u0000\u1979\u197a"+ - "\u0005.\u0000\u0000\u197a\u1980\u0003\u0549\u02a2\u0000\u197b\u197d\u0007"+ - "\n\u0000\u0000\u197c\u197e\u0007\u0001\u0000\u0000\u197d\u197c\u0001\u0000"+ - "\u0000\u0000\u197d\u197e\u0001\u0000\u0000\u0000\u197e\u197f\u0001\u0000"+ - "\u0000\u0000\u197f\u1981\u0003\u0549\u02a2\u0000\u1980\u197b\u0001\u0000"+ - "\u0000\u0000\u1980\u1981\u0001\u0000\u0000\u0000\u1981\u198a\u0001\u0000"+ - "\u0000\u0000\u1982\u1983\u0003\u0549\u02a2\u0000\u1983\u1985\u0007\n\u0000"+ - "\u0000\u1984\u1986\u0007\u0001\u0000\u0000\u1985\u1984\u0001\u0000\u0000"+ - "\u0000\u1985\u1986\u0001\u0000\u0000\u0000\u1986\u1987\u0001\u0000\u0000"+ - "\u0000\u1987\u1988\u0003\u0549\u02a2\u0000\u1988\u198a\u0001\u0000\u0000"+ - "\u0000\u1989\u196d\u0001\u0000\u0000\u0000\u1989\u1979\u0001\u0000\u0000"+ - "\u0000\u1989\u1982\u0001\u0000\u0000\u0000\u198a\u0548\u0001\u0000\u0000"+ - "\u0000\u198b\u198d\u0007\u0000\u0000\u0000\u198c\u198b\u0001\u0000\u0000"+ - "\u0000\u198d\u198e\u0001\u0000\u0000\u0000\u198e\u198c\u0001\u0000\u0000"+ - "\u0000\u198e\u198f\u0001\u0000\u0000\u0000\u198f\u054a\u0001\u0000\u0000"+ - "\u0000\u1990\u1991\u0005:\u0000\u0000\u1991\u1995\u0007(\u0000\u0000\u1992"+ - "\u1994\u0007)\u0000\u0000\u1993\u1992\u0001\u0000\u0000\u0000\u1994\u1997"+ - "\u0001\u0000\u0000\u0000\u1995\u1993\u0001\u0000\u0000\u0000\u1995\u1996"+ - "\u0001\u0000\u0000\u0000\u1996\u054c\u0001\u0000\u0000\u0000\u1997\u1995"+ - "\u0001\u0000\u0000\u0000\u1998\u1999\u0005:\u0000\u0000\u1999\u199a\u0005"+ - "\"\u0000\u0000\u199a\u19a2\u0001\u0000\u0000\u0000\u199b\u199c\u0005\\"+ - "\u0000\u0000\u199c\u19a1\t\u0000\u0000\u0000\u199d\u199e\u0005\"\u0000"+ - "\u0000\u199e\u19a1\u0005\"\u0000\u0000\u199f\u19a1\b*\u0000\u0000\u19a0"+ - "\u199b\u0001\u0000\u0000\u0000\u19a0\u199d\u0001\u0000\u0000\u0000\u19a0"+ - "\u199f\u0001\u0000\u0000\u0000\u19a1\u19a4\u0001\u0000\u0000\u0000\u19a2"+ - "\u19a0\u0001\u0000\u0000\u0000\u19a2\u19a3\u0001\u0000\u0000\u0000\u19a3"+ - "\u19a5\u0001\u0000\u0000\u0000\u19a4\u19a2\u0001\u0000\u0000\u0000\u19a5"+ - "\u19a6\u0005\"\u0000\u0000\u19a6\u054e\u0001\u0000\u0000\u0000\u19a7\u19a9"+ - "\u0007+\u0000\u0000\u19a8\u19a7\u0001\u0000\u0000\u0000\u19a9\u19aa\u0001"+ - "\u0000\u0000\u0000\u19aa\u19a8\u0001\u0000\u0000\u0000\u19aa\u19ab\u0001"+ - "\u0000\u0000\u0000\u19ab\u19ac\u0001\u0000\u0000\u0000\u19ac\u19ad\u0006"+ - "\u02a5\u0007\u0000\u19ad\u0550\u0001\u0000\u0000\u0000\u19ae\u19b0\u0005"+ - "\r\u0000\u0000\u19af\u19b1\u0005\n\u0000\u0000\u19b0\u19af\u0001\u0000"+ - "\u0000\u0000\u19b0\u19b1\u0001\u0000\u0000\u0000\u19b1\u19b4\u0001\u0000"+ - "\u0000\u0000\u19b2\u19b4\u0005\n\u0000\u0000\u19b3\u19ae\u0001\u0000\u0000"+ - "\u0000\u19b3\u19b2\u0001\u0000\u0000\u0000\u19b4\u19b5\u0001\u0000\u0000"+ - "\u0000\u19b5\u19b6\u0006\u02a6\u0007\u0000\u19b6\u0552\u0001\u0000\u0000"+ - "\u0000\u19b7\u19b8\u0005-\u0000\u0000\u19b8\u19b9\u0005-\u0000\u0000\u19b9"+ - "\u19bd\u0001\u0000\u0000\u0000\u19ba\u19bc\b,\u0000\u0000\u19bb\u19ba"+ - "\u0001\u0000\u0000\u0000\u19bc\u19bf\u0001\u0000\u0000\u0000\u19bd\u19bb"+ - "\u0001\u0000\u0000\u0000\u19bd\u19be\u0001\u0000\u0000\u0000\u19be\u19c0"+ - "\u0001\u0000\u0000\u0000\u19bf\u19bd\u0001\u0000\u0000\u0000\u19c0\u19c1"+ - "\u0006\u02a7\u0007\u0000\u19c1\u0554\u0001\u0000\u0000\u0000\u19c2\u19c3"+ - "\u0005/\u0000\u0000\u19c3\u19c4\u0005*\u0000\u0000\u19c4\u19db\u0001\u0000"+ - "\u0000\u0000\u19c5\u19c7\u0005/\u0000\u0000\u19c6\u19c5\u0001\u0000\u0000"+ - "\u0000\u19c7\u19ca\u0001\u0000\u0000\u0000\u19c8\u19c6\u0001\u0000\u0000"+ - "\u0000\u19c8\u19c9\u0001\u0000\u0000\u0000\u19c9\u19cb\u0001\u0000\u0000"+ - "\u0000\u19ca\u19c8\u0001\u0000\u0000\u0000\u19cb\u19da\u0003\u0555\u02a8"+ - "\u0000\u19cc\u19da\b-\u0000\u0000\u19cd\u19cf\u0005/\u0000\u0000\u19ce"+ - "\u19cd\u0001\u0000\u0000\u0000\u19cf\u19d0\u0001\u0000\u0000\u0000\u19d0"+ - "\u19ce\u0001\u0000\u0000\u0000\u19d0\u19d1\u0001\u0000\u0000\u0000\u19d1"+ - "\u19d2\u0001\u0000\u0000\u0000\u19d2\u19da\b-\u0000\u0000\u19d3\u19d5"+ - "\u0005*\u0000\u0000\u19d4\u19d3\u0001\u0000\u0000\u0000\u19d5\u19d6\u0001"+ - "\u0000\u0000\u0000\u19d6\u19d4\u0001\u0000\u0000\u0000\u19d6\u19d7\u0001"+ - "\u0000\u0000\u0000\u19d7\u19d8\u0001\u0000\u0000\u0000\u19d8\u19da\b-"+ - "\u0000\u0000\u19d9\u19c8\u0001\u0000\u0000\u0000\u19d9\u19cc\u0001\u0000"+ - "\u0000\u0000\u19d9\u19ce\u0001\u0000\u0000\u0000\u19d9\u19d4\u0001\u0000"+ - "\u0000\u0000\u19da\u19dd\u0001\u0000\u0000\u0000\u19db\u19d9\u0001\u0000"+ - "\u0000\u0000\u19db\u19dc\u0001\u0000\u0000\u0000\u19dc\u19e1\u0001\u0000"+ - "\u0000\u0000\u19dd\u19db\u0001\u0000\u0000\u0000\u19de\u19e0\u0005*\u0000"+ - "\u0000\u19df\u19de\u0001\u0000\u0000\u0000\u19e0\u19e3\u0001\u0000\u0000"+ - "\u0000\u19e1\u19df\u0001\u0000\u0000\u0000\u19e1\u19e2\u0001\u0000\u0000"+ - "\u0000\u19e2\u19e4\u0001\u0000\u0000\u0000\u19e3\u19e1\u0001\u0000\u0000"+ - "\u0000\u19e4\u19e5\u0005*\u0000\u0000\u19e5\u19e6\u0005/\u0000\u0000\u19e6"+ - "\u19e7\u0001\u0000\u0000\u0000\u19e7\u19e8\u0006\u02a8\u0007\u0000\u19e8"+ - "\u0556\u0001\u0000\u0000\u0000\u19e9\u19ea\u0005/\u0000\u0000\u19ea\u19eb"+ - "\u0005*\u0000\u0000\u19eb\u1a04\u0001\u0000\u0000\u0000\u19ec\u19ee\u0005"+ - "/\u0000\u0000\u19ed\u19ec\u0001\u0000\u0000\u0000\u19ee\u19f1\u0001\u0000"+ - "\u0000\u0000\u19ef\u19ed\u0001\u0000\u0000\u0000\u19ef\u19f0\u0001\u0000"+ - "\u0000\u0000\u19f0\u19f2\u0001\u0000\u0000\u0000\u19f1\u19ef\u0001\u0000"+ - "\u0000\u0000\u19f2\u1a03\u0003\u0555\u02a8\u0000\u19f3\u1a03\b-\u0000"+ - "\u0000\u19f4\u19f6\u0005/\u0000\u0000\u19f5\u19f4\u0001\u0000\u0000\u0000"+ - "\u19f6\u19f7\u0001\u0000\u0000\u0000\u19f7\u19f5\u0001\u0000\u0000\u0000"+ - "\u19f7\u19f8\u0001\u0000\u0000\u0000\u19f8\u19f9\u0001\u0000\u0000\u0000"+ - "\u19f9\u1a01\b-\u0000\u0000\u19fa\u19fc\u0005*\u0000\u0000\u19fb\u19fa"+ - "\u0001\u0000\u0000\u0000\u19fc\u19fd\u0001\u0000\u0000\u0000\u19fd\u19fb"+ - "\u0001\u0000\u0000\u0000\u19fd\u19fe\u0001\u0000\u0000\u0000\u19fe\u19ff"+ - "\u0001\u0000\u0000\u0000\u19ff\u1a01\b-\u0000\u0000\u1a00\u19f5\u0001"+ - "\u0000\u0000\u0000\u1a00\u19fb\u0001\u0000\u0000\u0000\u1a01\u1a03\u0001"+ - "\u0000\u0000\u0000\u1a02\u19ef\u0001\u0000\u0000\u0000\u1a02\u19f3\u0001"+ - "\u0000\u0000\u0000\u1a02\u1a00\u0001\u0000\u0000\u0000\u1a03\u1a06\u0001"+ - "\u0000\u0000\u0000\u1a04\u1a02\u0001\u0000\u0000\u0000\u1a04\u1a05\u0001"+ - "\u0000\u0000\u0000\u1a05\u1a18\u0001\u0000\u0000\u0000\u1a06\u1a04\u0001"+ - "\u0000\u0000\u0000\u1a07\u1a09\u0005/\u0000\u0000\u1a08\u1a07\u0001\u0000"+ - "\u0000\u0000\u1a09\u1a0a\u0001\u0000\u0000\u0000\u1a0a\u1a08\u0001\u0000"+ - "\u0000\u0000\u1a0a\u1a0b\u0001\u0000\u0000\u0000\u1a0b\u1a19\u0001\u0000"+ - "\u0000\u0000\u1a0c\u1a0e\u0005*\u0000\u0000\u1a0d\u1a0c\u0001\u0000\u0000"+ - "\u0000\u1a0e\u1a0f\u0001\u0000\u0000\u0000\u1a0f\u1a0d\u0001\u0000\u0000"+ - "\u0000\u1a0f\u1a10\u0001\u0000\u0000\u0000\u1a10\u1a19\u0001\u0000\u0000"+ - "\u0000\u1a11\u1a13\u0005/\u0000\u0000\u1a12\u1a11\u0001\u0000\u0000\u0000"+ - "\u1a13\u1a16\u0001\u0000\u0000\u0000\u1a14\u1a12\u0001\u0000\u0000\u0000"+ - "\u1a14\u1a15\u0001\u0000\u0000\u0000\u1a15\u1a17\u0001\u0000\u0000\u0000"+ - "\u1a16\u1a14\u0001\u0000\u0000\u0000\u1a17\u1a19\u0003\u0557\u02a9\u0000"+ - "\u1a18\u1a08\u0001\u0000\u0000\u0000\u1a18\u1a0d\u0001\u0000\u0000\u0000"+ - "\u1a18\u1a14\u0001\u0000\u0000\u0000\u1a18\u1a19\u0001\u0000\u0000\u0000"+ - "\u1a19\u1a1a\u0001\u0000\u0000\u0000\u1a1a\u1a1b\u0006\u02a9\b\u0000\u1a1b"+ - "\u0558\u0001\u0000\u0000\u0000\u1a1c\u1a28\u0005\\\u0000\u0000\u1a1d\u1a27"+ - "\b.\u0000\u0000\u1a1e\u1a22\u0005\"\u0000\u0000\u1a1f\u1a21\b/\u0000\u0000"+ - "\u1a20\u1a1f\u0001\u0000\u0000\u0000\u1a21\u1a24\u0001\u0000\u0000\u0000"+ - "\u1a22\u1a20\u0001\u0000\u0000\u0000\u1a22\u1a23\u0001\u0000\u0000\u0000"+ - "\u1a23\u1a25\u0001\u0000\u0000\u0000\u1a24\u1a22\u0001\u0000\u0000\u0000"+ - "\u1a25\u1a27\u0005\"\u0000\u0000\u1a26\u1a1d\u0001\u0000\u0000\u0000\u1a26"+ - "\u1a1e\u0001\u0000\u0000\u0000\u1a27\u1a2a\u0001\u0000\u0000\u0000\u1a28"+ - "\u1a26\u0001\u0000\u0000\u0000\u1a28\u1a29\u0001\u0000\u0000\u0000\u1a29"+ - "\u1a32\u0001\u0000\u0000\u0000\u1a2a\u1a28\u0001\u0000\u0000\u0000\u1a2b"+ - "\u1a2f\u0005\"\u0000\u0000\u1a2c\u1a2e\b/\u0000\u0000\u1a2d\u1a2c\u0001"+ - "\u0000\u0000\u0000\u1a2e\u1a31\u0001\u0000\u0000\u0000\u1a2f\u1a2d\u0001"+ - "\u0000\u0000\u0000\u1a2f\u1a30\u0001\u0000\u0000\u0000\u1a30\u1a33\u0001"+ - "\u0000\u0000\u0000\u1a31\u1a2f\u0001\u0000\u0000\u0000\u1a32\u1a2b\u0001"+ - "\u0000\u0000\u0000\u1a32\u1a33\u0001\u0000\u0000\u0000\u1a33\u055a\u0001"+ - "\u0000\u0000\u0000\u1a34\u1a35\u0005\\\u0000\u0000\u1a35\u1a36\u0005\\"+ - "\u0000\u0000\u1a36\u055c\u0001\u0000\u0000\u0000\u1a37\u1a38\t\u0000\u0000"+ - "\u0000\u1a38\u055e\u0001\u0000\u0000\u0000\u1a39\u1a3a\u0003\u0563\u02af"+ - "\u0000\u1a3a\u1a3b\u0005\'\u0000\u0000\u1a3b\u1a3c\u0001\u0000\u0000\u0000"+ - "\u1a3c\u1a3d\u0006\u02ad\t\u0000\u1a3d\u0560\u0001\u0000\u0000\u0000\u1a3e"+ - "\u1a40\u0003\u0563\u02af\u0000\u1a3f\u1a41\u0005\\\u0000\u0000\u1a40\u1a3f"+ - "\u0001\u0000\u0000\u0000\u1a40\u1a41\u0001\u0000\u0000\u0000\u1a41\u1a42"+ - "\u0001\u0000\u0000\u0000\u1a42\u1a43\u0005\u0000\u0000\u0001\u1a43\u0562"+ - "\u0001\u0000\u0000\u0000\u1a44\u1a45\u0005\'\u0000\u0000\u1a45\u1a5c\u0005"+ - "\'\u0000\u0000\u1a46\u1a58\u0005\\\u0000\u0000\u1a47\u1a48\u0005x\u0000"+ - "\u0000\u1a48\u1a59\u0007\'\u0000\u0000\u1a49\u1a4a\u0005u\u0000\u0000"+ - "\u1a4a\u1a4b\u0007\'\u0000\u0000\u1a4b\u1a4c\u0007\'\u0000\u0000\u1a4c"+ - "\u1a4d\u0007\'\u0000\u0000\u1a4d\u1a59\u0007\'\u0000\u0000\u1a4e\u1a4f"+ - "\u0005U\u0000\u0000\u1a4f\u1a50\u0007\'\u0000\u0000\u1a50\u1a51\u0007"+ - "\'\u0000\u0000\u1a51\u1a52\u0007\'\u0000\u0000\u1a52\u1a53\u0007\'\u0000"+ - "\u0000\u1a53\u1a54\u0007\'\u0000\u0000\u1a54\u1a55\u0007\'\u0000\u0000"+ - "\u1a55\u1a56\u0007\'\u0000\u0000\u1a56\u1a59\u0007\'\u0000\u0000\u1a57"+ - "\u1a59\b0\u0000\u0000\u1a58\u1a47\u0001\u0000\u0000\u0000\u1a58\u1a49"+ - "\u0001\u0000\u0000\u0000\u1a58\u1a4e\u0001\u0000\u0000\u0000\u1a58\u1a57"+ - "\u0001\u0000\u0000\u0000\u1a59\u1a5c\u0001\u0000\u0000\u0000\u1a5a\u1a5c"+ - "\b1\u0000\u0000\u1a5b\u1a44\u0001\u0000\u0000\u0000\u1a5b\u1a46\u0001"+ - "\u0000\u0000\u0000\u1a5b\u1a5a\u0001\u0000\u0000\u0000\u1a5c\u1a5f\u0001"+ - "\u0000\u0000\u0000\u1a5d\u1a5b\u0001\u0000\u0000\u0000\u1a5d\u1a5e\u0001"+ - "\u0000\u0000\u0000\u1a5e\u0564\u0001\u0000\u0000\u0000\u1a5f\u1a5d\u0001"+ - "\u0000\u0000\u0000\u1a60\u1a61\u0003\u0569\u02b2\u0000\u1a61\u1a62\u0005"+ - "\'\u0000\u0000\u1a62\u1a63\u0001\u0000\u0000\u0000\u1a63\u1a64\u0006\u02b0"+ - "\t\u0000\u1a64\u0566\u0001\u0000\u0000\u0000\u1a65\u1a67\u0003\u0569\u02b2"+ - "\u0000\u1a66\u1a68\u0005\\\u0000\u0000\u1a67\u1a66\u0001\u0000\u0000\u0000"+ - "\u1a67\u1a68\u0001\u0000\u0000\u0000\u1a68\u1a69\u0001\u0000\u0000\u0000"+ - "\u1a69\u1a6a\u0005\u0000\u0000\u0001\u1a6a\u0568\u0001\u0000\u0000\u0000"+ - "\u1a6b\u1a6c\u0005\'\u0000\u0000\u1a6c\u1a71\u0005\'\u0000\u0000\u1a6d"+ - "\u1a6e\u0005\\\u0000\u0000\u1a6e\u1a71\t\u0000\u0000\u0000\u1a6f\u1a71"+ - "\b1\u0000\u0000\u1a70\u1a6b\u0001\u0000\u0000\u0000\u1a70\u1a6d\u0001"+ - "\u0000\u0000\u0000\u1a70\u1a6f\u0001\u0000\u0000\u0000\u1a71\u1a74\u0001"+ - "\u0000\u0000\u0000\u1a72\u1a70\u0001\u0000\u0000\u0000\u1a72\u1a73\u0001"+ - "\u0000\u0000\u0000\u1a73\u056a\u0001\u0000\u0000\u0000\u1a74\u1a72\u0001"+ - "\u0000\u0000\u0000\u1a75\u1a76\u0003\u054f\u02a5\u0000\u1a76\u1a77\u0001"+ - "\u0000\u0000\u0000\u1a77\u1a78\u0006\u02b3\n\u0000\u1a78\u1a79\u0006\u02b3"+ - "\u0007\u0000\u1a79\u056c\u0001\u0000\u0000\u0000\u1a7a\u1a7b\u0003\u0551"+ - "\u02a6\u0000\u1a7b\u1a7c\u0001\u0000\u0000\u0000\u1a7c\u1a7d\u0006\u02b4"+ - "\u000b\u0000\u1a7d\u1a7e\u0006\u02b4\u0007\u0000\u1a7e\u1a7f\u0006\u02b4"+ - "\f\u0000\u1a7f\u056e\u0001\u0000\u0000\u0000\u1a80\u1a81\u0006\u02b5\r"+ - "\u0000\u1a81\u1a82\u0001\u0000\u0000\u0000\u1a82\u1a83\u0006\u02b5\u000e"+ - "\u0000\u1a83\u1a84\u0006\u02b5\u000f\u0000\u1a84\u0570\u0001\u0000\u0000"+ - "\u0000\u1a85\u1a86\u0003\u054f\u02a5\u0000\u1a86\u1a87\u0001\u0000\u0000"+ - "\u0000\u1a87\u1a88\u0006\u02b6\n\u0000\u1a88\u1a89\u0006\u02b6\u0007\u0000"+ - "\u1a89\u0572\u0001\u0000\u0000\u0000\u1a8a\u1a8b\u0003\u0551\u02a6\u0000"+ - "\u1a8b\u1a8c\u0001\u0000\u0000\u0000\u1a8c\u1a8d\u0006\u02b7\u000b\u0000"+ - "\u1a8d\u1a8e\u0006\u02b7\u0007\u0000\u1a8e\u0574\u0001\u0000\u0000\u0000"+ - "\u1a8f\u1a90\u0005\'\u0000\u0000\u1a90\u1a91\u0001\u0000\u0000\u0000\u1a91"+ - "\u1a92\u0006\u02b8\u0002\u0000\u1a92\u1a93\u0006\u02b8\u0010\u0000\u1a93"+ - "\u0576\u0001\u0000\u0000\u0000\u1a94\u1a95\u0006\u02b9\u0011\u0000\u1a95"+ - "\u1a96\u0001\u0000\u0000\u0000\u1a96\u1a97\u0006\u02b9\u000e\u0000\u1a97"+ - "\u1a98\u0006\u02b9\u000f\u0000\u1a98\u0578\u0001\u0000\u0000\u0000\u1a99"+ - "\u1a9b\b2\u0000\u0000\u1a9a\u1a99\u0001\u0000\u0000\u0000\u1a9b\u1a9c"+ - "\u0001\u0000\u0000\u0000\u1a9c\u1a9a\u0001\u0000\u0000\u0000\u1a9c\u1a9d"+ - "\u0001\u0000\u0000\u0000\u1a9d\u1aa6\u0001\u0000\u0000\u0000\u1a9e\u1aa2"+ - "\u0005$\u0000\u0000\u1a9f\u1aa1\b2\u0000\u0000\u1aa0\u1a9f\u0001\u0000"+ - "\u0000\u0000\u1aa1\u1aa4\u0001\u0000\u0000\u0000\u1aa2\u1aa0\u0001\u0000"+ - "\u0000\u0000\u1aa2\u1aa3\u0001\u0000\u0000\u0000\u1aa3\u1aa6\u0001\u0000"+ - "\u0000\u0000\u1aa4\u1aa2\u0001\u0000\u0000\u0000\u1aa5\u1a9a\u0001\u0000"+ - "\u0000\u0000\u1aa5\u1a9e\u0001\u0000\u0000\u0000\u1aa6\u057a\u0001\u0000"+ - "\u0000\u0000\u1aa7\u1aa9\u0005$\u0000\u0000\u1aa8\u1aaa\u0003\u0531\u0296"+ - "\u0000\u1aa9\u1aa8\u0001\u0000\u0000\u0000\u1aa9\u1aaa\u0001\u0000\u0000"+ - "\u0000\u1aaa\u1aab\u0001\u0000\u0000\u0000\u1aab\u1aac\u0005$\u0000\u0000"+ - "\u1aac\u1aad\u0001\u0000\u0000\u0000\u1aad\u1aae\u0004\u02bb\b\u0000\u1aae"+ - "\u1aaf\u0006\u02bb\u0012\u0000\u1aaf\u1ab0\u0001\u0000\u0000\u0000\u1ab0"+ - "\u1ab1\u0006\u02bb\u000f\u0000\u1ab1\u057c\u0001\u0000\u0000\u0000N\u0000"+ - "\u0001\u0002\u0003\u0004\u05c0\u05c6\u05c8\u05cd\u05d1\u05d3\u05d6\u05df"+ - "\u05e1\u05e6\u05eb\u05ed\u18df\u18e8\u18ec\u18f0\u18f9\u18fb\u1905\u1907"+ - "\u1921\u1923\u1935\u1940\u194b\u195c\u1970\u1974\u1977\u197d\u1980\u1985"+ - "\u1989\u198e\u1995\u19a0\u19a2\u19aa\u19b0\u19b3\u19bd\u19c8\u19d0\u19d6"+ - "\u19d9\u19db\u19e1\u19ef\u19f7\u19fd\u1a00\u1a02\u1a04\u1a0a\u1a0f\u1a14"+ - "\u1a18\u1a22\u1a26\u1a28\u1a2f\u1a32\u1a40\u1a58\u1a5b\u1a5d\u1a67\u1a70"+ - "\u1a72\u1a9c\u1aa2\u1aa5\u1aa9\u0013\u0001\u001c\u0000\u0007\u001d\u0000"+ - "\u0003\u0000\u0000\u0005\u0001\u0000\u0001\u0295\u0001\u0005\u0004\u0000"+ - "\u0001\u02a0\u0002\u0000\u0001\u0000\u0001\u02a9\u0003\u0002\u0002\u0000"+ - "\u0007\u029c\u0000\u0007\u029d\u0000\u0002\u0003\u0000\u0001\u02b5\u0004"+ - "\u0006\u0000\u0000\u0004\u0000\u0000\u0002\u0001\u0000\u0001\u02b9\u0005"+ - "\u0001\u02bb\u0006"; + "\u0013\u0000\u0000\u124a\u124b\u0007\u0013\u0000\u0000\u124b\u124c\u0007"+ + "\u0010\u0000\u0000\u124c\u037a\u0001\u0000\u0000\u0000\u124d\u124e\u0007"+ + "\u001a\u0000\u0000\u124e\u124f\u0007\u000f\u0000\u0000\u124f\u1250\u0007"+ + "\u0006\u0000\u0000\u1250\u1251\u0007\t\u0000\u0000\u1251\u1252\u0007\n"+ + "\u0000\u0000\u1252\u1253\u0007\r\u0000\u0000\u1253\u1254\u0007\u0011\u0000"+ + "\u0000\u1254\u1255\u0007\u0005\u0000\u0000\u1255\u1256\u0007\u0006\u0000"+ + "\u0000\u1256\u1257\u0007\u0011\u0000\u0000\u1257\u1258\u0007\u000b\u0000"+ + "\u0000\u1258\u1259\u0007\n\u0000\u0000\u1259\u037c\u0001\u0000\u0000\u0000"+ + "\u125a\u125b\u0007\u000e\u0000\u0000\u125b\u125c\u0007\u0005\u0000\u0000"+ + "\u125c\u125d\u0007\u0006\u0000\u0000\u125d\u125e\u0007\u0006\u0000\u0000"+ + "\u125e\u037e\u0001\u0000\u0000\u0000\u125f\u1260\u0007\u000e\u0000\u0000"+ + "\u1260\u1261\u0007\u0016\u0000\u0000\u1261\u1262\u0007\r\u0000\u0000\u1262"+ + "\u1263\u0007\r\u0000\u0000\u1263\u1264\u0007\n\u0000\u0000\u1264\u1265"+ + "\u0007\u0007\u0000\u0000\u1265\u1266\u0007\u0010\u0000\u0000\u1266\u0380"+ + "\u0001\u0000\u0000\u0000\u1267\u1268\u0007\u0005\u0000\u0000\u1268\u1269"+ + "\u0007\u0010\u0000\u0000\u1269\u126a\u0007\u0010\u0000\u0000\u126a\u126b"+ + "\u0007\u0005\u0000\u0000\u126b\u126c\u0007\u000e\u0000\u0000\u126c\u126d"+ + "\u0007\u0014\u0000\u0000\u126d\u0382\u0001\u0000\u0000\u0000\u126e\u126f"+ + "\u0007\f\u0000\u0000\u126f\u1270\u0007\n\u0000\u0000\u1270\u1271\u0007"+ + "\u0010\u0000\u0000\u1271\u1272\u0007\u0005\u0000\u0000\u1272\u1273\u0007"+ + "\u000e\u0000\u0000\u1273\u1274\u0007\u0014\u0000\u0000\u1274\u0384\u0001"+ + "\u0000\u0000\u0000\u1275\u1276\u0007\n\u0000\u0000\u1276\u1277\u0007\u001a"+ + "\u0000\u0000\u1277\u1278\u0007\u0018\u0000\u0000\u1278\u1279\u0007\r\u0000"+ + "\u0000\u1279\u127a\u0007\n\u0000\u0000\u127a\u127b\u0007\t\u0000\u0000"+ + "\u127b\u127c\u0007\t\u0000\u0000\u127c\u127d\u0007\u0011\u0000\u0000\u127d"+ + "\u127e\u0007\u0013\u0000\u0000\u127e\u127f\u0007\u0007\u0000\u0000\u127f"+ + "\u0386\u0001\u0000\u0000\u0000\u1280\u1281\u0007\u0017\u0000\u0000\u1281"+ + "\u1282\u0007\n\u0000\u0000\u1282\u1283\u0007\u0007\u0000\u0000\u1283\u1284"+ + "\u0007\n\u0000\u0000\u1284\u1285\u0007\r\u0000\u0000\u1285\u1286\u0007"+ + "\u0005\u0000\u0000\u1286\u1287\u0007\u0010\u0000\u0000\u1287\u1288\u0007"+ + "\n\u0000\u0000\u1288\u1289\u0007\f\u0000\u0000\u1289\u0388\u0001\u0000"+ + "\u0000\u0000\u128a\u128b\u0007\u0006\u0000\u0000\u128b\u128c\u0007\u0013"+ + "\u0000\u0000\u128c\u128d\u0007\u0017\u0000\u0000\u128d\u128e\u0007\u0017"+ + "\u0000\u0000\u128e\u128f\u0007\n\u0000\u0000\u128f\u1290\u0007\f\u0000"+ + "\u0000\u1290\u038a\u0001\u0000\u0000\u0000\u1291\u1292\u0007\t\u0000\u0000"+ + "\u1292\u1293\u0007\u0010\u0000\u0000\u1293\u1294\u0007\u0013\u0000\u0000"+ + "\u1294\u1295\u0007\r\u0000\u0000\u1295\u1296\u0007\n\u0000\u0000\u1296"+ + "\u1297\u0007\f\u0000\u0000\u1297\u038c\u0001\u0000\u0000\u0000\u1298\u1299"+ + "\u0007\u0011\u0000\u0000\u1299\u129a\u0007\u0007\u0000\u0000\u129a\u129b"+ + "\u0007\u000e\u0000\u0000\u129b\u129c\u0007\u0006\u0000\u0000\u129c\u129d"+ + "\u0007\u0016\u0000\u0000\u129d\u129e\u0007\f\u0000\u0000\u129e\u129f\u0007"+ + "\n\u0000\u0000\u129f\u038e\u0001\u0000\u0000\u0000\u12a0\u12a1\u0007\r"+ + "\u0000\u0000\u12a1\u12a2\u0007\u0013\u0000\u0000\u12a2\u12a3\u0007\u0016"+ + "\u0000\u0000\u12a3\u12a4\u0007\u0010\u0000\u0000\u12a4\u12a5\u0007\u0011"+ + "\u0000\u0000\u12a5\u12a6\u0007\u0007\u0000\u0000\u12a6\u12a7\u0007\n\u0000"+ + "\u0000\u12a7\u0390\u0001\u0000\u0000\u0000\u12a8\u12a9\u0007\u0010\u0000"+ + "\u0000\u12a9\u12aa\u0007\r\u0000\u0000\u12aa\u12ab\u0007\u0005\u0000\u0000"+ + "\u12ab\u12ac\u0007\u0007\u0000\u0000\u12ac\u12ad\u0007\t\u0000\u0000\u12ad"+ + "\u12ae\u0007\u0019\u0000\u0000\u12ae\u12af\u0007\u0013\u0000\u0000\u12af"+ + "\u12b0\u0007\r\u0000\u0000\u12b0\u12b1\u0007\u000f\u0000\u0000\u12b1\u0392"+ + "\u0001\u0000\u0000\u0000\u12b2\u12b3\u0007\u0011\u0000\u0000\u12b3\u12b4"+ + "\u0007\u000f\u0000\u0000\u12b4\u12b5\u0007\u0018\u0000\u0000\u12b5\u12b6"+ + "\u0007\u0013\u0000\u0000\u12b6\u12b7\u0007\r\u0000\u0000\u12b7\u12b8\u0007"+ + "\u0010\u0000\u0000\u12b8\u0394\u0001\u0000\u0000\u0000\u12b9\u12ba\u0007"+ + "\u0018\u0000\u0000\u12ba\u12bb\u0007\u0013\u0000\u0000\u12bb\u12bc\u0007"+ + "\u0006\u0000\u0000\u12bc\u12bd\u0007\u0011\u0000\u0000\u12bd\u12be\u0007"+ + "\u000e\u0000\u0000\u12be\u12bf\u0007\b\u0000\u0000\u12bf\u0396\u0001\u0000"+ + "\u0000\u0000\u12c0\u12c1\u0007\u000f\u0000\u0000\u12c1\u12c2\u0007\n\u0000"+ + "\u0000\u12c2\u12c3\u0007\u0010\u0000\u0000\u12c3\u12c4\u0007\u0014\u0000"+ + "\u0000\u12c4\u12c5\u0007\u0013\u0000\u0000\u12c5\u12c6\u0007\f\u0000\u0000"+ + "\u12c6\u0398\u0001\u0000\u0000\u0000\u12c7\u12c8\u0007\r\u0000\u0000\u12c8"+ + "\u12c9\u0007\n\u0000\u0000\u12c9\u12ca\u0007\u0019\u0000\u0000\u12ca\u12cb"+ + "\u0007\n\u0000\u0000\u12cb\u12cc\u0007\r\u0000\u0000\u12cc\u12cd\u0007"+ + "\n\u0000\u0000\u12cd\u12ce\u0007\u0007\u0000\u0000\u12ce\u12cf\u0007\u000e"+ + "\u0000\u0000\u12cf\u12d0\u0007\u0011\u0000\u0000\u12d0\u12d1\u0007\u0007"+ + "\u0000\u0000\u12d1\u12d2\u0007\u0017\u0000\u0000\u12d2\u039a\u0001\u0000"+ + "\u0000\u0000\u12d3\u12d4\u0007\u0007\u0000\u0000\u12d4\u12d5\u0007\n\u0000"+ + "\u0000\u12d5\u12d6\u0007\u001c\u0000\u0000\u12d6\u039c\u0001\u0000\u0000"+ + "\u0000\u12d7\u12d8\u0007\u0013\u0000\u0000\u12d8\u12d9\u0007\u0006\u0000"+ + "\u0000\u12d9\u12da\u0007\f\u0000\u0000\u12da\u039e\u0001\u0000\u0000\u0000"+ + "\u12db\u12dc\u0007\u001b\u0000\u0000\u12dc\u12dd\u0007\u0005\u0000\u0000"+ + "\u12dd\u12de\u0007\u0006\u0000\u0000\u12de\u12df\u0007\u0016\u0000\u0000"+ + "\u12df\u12e0\u0007\n\u0000\u0000\u12e0\u03a0\u0001\u0000\u0000\u0000\u12e1"+ + "\u12e2\u0007\t\u0000\u0000\u12e2\u12e3\u0007\u0016\u0000\u0000\u12e3\u12e4"+ + "\u0007\u0012\u0000\u0000\u12e4\u12e5\u0007\t\u0000\u0000\u12e5\u12e6\u0007"+ + "\u000e\u0000\u0000\u12e6\u12e7\u0007\r\u0000\u0000\u12e7\u12e8\u0007\u0011"+ + "\u0000\u0000\u12e8\u12e9\u0007\u0018\u0000\u0000\u12e9\u12ea\u0007\u0010"+ + "\u0000\u0000\u12ea\u12eb\u0007\u0011\u0000\u0000\u12eb\u12ec\u0007\u0013"+ + "\u0000\u0000\u12ec\u12ed\u0007\u0007\u0000\u0000\u12ed\u03a2\u0001\u0000"+ + "\u0000\u0000\u12ee\u12ef\u0007\u0018\u0000\u0000\u12ef\u12f0\u0007\u0016"+ + "\u0000\u0000\u12f0\u12f1\u0007\u0012\u0000\u0000\u12f1\u12f2\u0007\u0006"+ + "\u0000\u0000\u12f2\u12f3\u0007\u0011\u0000\u0000\u12f3\u12f4\u0007\u000e"+ + "\u0000\u0000\u12f4\u12f5\u0007\u0005\u0000\u0000\u12f5\u12f6\u0007\u0010"+ + "\u0000\u0000\u12f6\u12f7\u0007\u0011\u0000\u0000\u12f7\u12f8\u0007\u0013"+ + "\u0000\u0000\u12f8\u12f9\u0007\u0007\u0000\u0000\u12f9\u03a4\u0001\u0000"+ + "\u0000\u0000\u12fa\u12fb\u0007\u0013\u0000\u0000\u12fb\u12fc\u0007\u0016"+ + "\u0000\u0000\u12fc\u12fd\u0007\u0010\u0000\u0000\u12fd\u03a6\u0001\u0000"+ + "\u0000\u0000\u12fe\u12ff\u0007\n\u0000\u0000\u12ff\u1300\u0007\u0007\u0000"+ + "\u0000\u1300\u1301\u0007\f\u0000\u0000\u1301\u03a8\u0001\u0000\u0000\u0000"+ + "\u1302\u1303\u0007\r\u0000\u0000\u1303\u1304\u0007\u0013\u0000\u0000\u1304"+ + "\u1305\u0007\u0016\u0000\u0000\u1305\u1306\u0007\u0010\u0000\u0000\u1306"+ + "\u1307\u0007\u0011\u0000\u0000\u1307\u1308\u0007\u0007\u0000\u0000\u1308"+ + "\u1309\u0007\n\u0000\u0000\u1309\u130a\u0007\t\u0000\u0000\u130a\u03aa"+ + "\u0001\u0000\u0000\u0000\u130b\u130c\u0007\t\u0000\u0000\u130c\u130d\u0007"+ + "\u000e\u0000\u0000\u130d\u130e\u0007\u0014\u0000\u0000\u130e\u130f\u0007"+ + "\n\u0000\u0000\u130f\u1310\u0007\u000f\u0000\u0000\u1310\u1311\u0007\u0005"+ + "\u0000\u0000\u1311\u1312\u0007\t\u0000\u0000\u1312\u03ac\u0001\u0000\u0000"+ + "\u0000\u1313\u1314\u0007\u0018\u0000\u0000\u1314\u1315\u0007\r\u0000\u0000"+ + "\u1315\u1316\u0007\u0013\u0000\u0000\u1316\u1317\u0007\u000e\u0000\u0000"+ + "\u1317\u1318\u0007\n\u0000\u0000\u1318\u1319\u0007\f\u0000\u0000\u1319"+ + "\u131a\u0007\u0016\u0000\u0000\u131a\u131b\u0007\r\u0000\u0000\u131b\u131c"+ + "\u0007\n\u0000\u0000\u131c\u131d\u0007\t\u0000\u0000\u131d\u03ae\u0001"+ + "\u0000\u0000\u0000\u131e\u131f\u0007\u0011\u0000\u0000\u131f\u1320\u0007"+ + "\u0007\u0000\u0000\u1320\u1321\u0007\u0018\u0000\u0000\u1321\u1322\u0007"+ + "\u0016\u0000\u0000\u1322\u1323\u0007\u0010\u0000\u0000\u1323\u03b0\u0001"+ + "\u0000\u0000\u0000\u1324\u1325\u0007\t\u0000\u0000\u1325\u1326\u0007\u0016"+ + "\u0000\u0000\u1326\u1327\u0007\u0018\u0000\u0000\u1327\u1328\u0007\u0018"+ + "\u0000\u0000\u1328\u1329\u0007\u0013\u0000\u0000\u1329\u132a\u0007\r\u0000"+ + "\u0000\u132a\u132b\u0007\u0010\u0000\u0000\u132b\u03b2\u0001\u0000\u0000"+ + "\u0000\u132c\u132d\u0007\u0018\u0000\u0000\u132d\u132e\u0007\u0005\u0000"+ + "\u0000\u132e\u132f\u0007\r\u0000\u0000\u132f\u1330\u0007\u0005\u0000\u0000"+ + "\u1330\u1331\u0007\u0006\u0000\u0000\u1331\u1332\u0007\u0006\u0000\u0000"+ + "\u1332\u1333\u0007\n\u0000\u0000\u1333\u1334\u0007\u0006\u0000\u0000\u1334"+ + "\u03b4\u0001\u0000\u0000\u0000\u1335\u1336\u0007\t\u0000\u0000\u1336\u1337"+ + "\u0007\u001d\u0000\u0000\u1337\u1338\u0007\u0006\u0000\u0000\u1338\u03b6"+ + "\u0001\u0000\u0000\u0000\u1339\u133a\u0007\f\u0000\u0000\u133a\u133b\u0007"+ + "\n\u0000\u0000\u133b\u133c\u0007\u0018\u0000\u0000\u133c\u133d\u0007\n"+ + "\u0000\u0000\u133d\u133e\u0007\u0007\u0000\u0000\u133e\u133f\u0007\f\u0000"+ + "\u0000\u133f\u1340\u0007\t\u0000\u0000\u1340\u03b8\u0001\u0000\u0000\u0000"+ + "\u1341\u1342\u0007\u0013\u0000\u0000\u1342\u1343\u0007\u001b\u0000\u0000"+ + "\u1343\u1344\u0007\n\u0000\u0000\u1344\u1345\u0007\r\u0000\u0000\u1345"+ + "\u1346\u0007\r\u0000\u0000\u1346\u1347\u0007\u0011\u0000\u0000\u1347\u1348"+ + "\u0007\f\u0000\u0000\u1348\u1349\u0007\u0011\u0000\u0000\u1349\u134a\u0007"+ + "\u0007\u0000\u0000\u134a\u134b\u0007\u0017\u0000\u0000\u134b\u03ba\u0001"+ + "\u0000\u0000\u0000\u134c\u134d\u0007\u000e\u0000\u0000\u134d\u134e\u0007"+ + "\u0013\u0000\u0000\u134e\u134f\u0007\u0007\u0000\u0000\u134f\u1350\u0007"+ + "\u0019\u0000\u0000\u1350\u1351\u0007\u0006\u0000\u0000\u1351\u1352\u0007"+ + "\u0011\u0000\u0000\u1352\u1353\u0007\u000e\u0000\u0000\u1353\u1354\u0007"+ + "\u0010\u0000\u0000\u1354\u03bc\u0001\u0000\u0000\u0000\u1355\u1356\u0007"+ + "\t\u0000\u0000\u1356\u1357\u0007\u0015\u0000\u0000\u1357\u1358\u0007\u0011"+ + "\u0000\u0000\u1358\u1359\u0007\u0018\u0000\u0000\u1359\u03be\u0001\u0000"+ + "\u0000\u0000\u135a\u135b\u0007\u0006\u0000\u0000\u135b\u135c\u0007\u0013"+ + "\u0000\u0000\u135c\u135d\u0007\u000e\u0000\u0000\u135d\u135e\u0007\u0015"+ + "\u0000\u0000\u135e\u135f\u0007\n\u0000\u0000\u135f\u1360\u0007\f\u0000"+ + "\u0000\u1360\u03c0\u0001\u0000\u0000\u0000\u1361\u1362\u0007\u0010\u0000"+ + "\u0000\u1362\u1363\u0007\u0011\u0000\u0000\u1363\u1364\u0007\n\u0000\u0000"+ + "\u1364\u1365\u0007\t\u0000\u0000\u1365\u03c2\u0001\u0000\u0000\u0000\u1366"+ + "\u1367\u0007\r\u0000\u0000\u1367\u1368\u0007\u0013\u0000\u0000\u1368\u1369"+ + "\u0007\u0006\u0000\u0000\u1369\u136a\u0007\u0006\u0000\u0000\u136a\u136b"+ + "\u0007\u0016\u0000\u0000\u136b\u136c\u0007\u0018\u0000\u0000\u136c\u03c4"+ + "\u0001\u0000\u0000\u0000\u136d\u136e\u0007\u000e\u0000\u0000\u136e\u136f"+ + "\u0007\u0016\u0000\u0000\u136f\u1370\u0007\u0012\u0000\u0000\u1370\u1371"+ + "\u0007\n\u0000\u0000\u1371\u03c6\u0001\u0000\u0000\u0000\u1372\u1373\u0007"+ + "\u0017\u0000\u0000\u1373\u1374\u0007\r\u0000\u0000\u1374\u1375\u0007\u0013"+ + "\u0000\u0000\u1375\u1376\u0007\u0016\u0000\u0000\u1376\u1377\u0007\u0018"+ + "\u0000\u0000\u1377\u1378\u0007\u0011\u0000\u0000\u1378\u1379\u0007\u0007"+ + "\u0000\u0000\u1379\u137a\u0007\u0017\u0000\u0000\u137a\u03c8\u0001\u0000"+ + "\u0000\u0000\u137b\u137c\u0007\t\u0000\u0000\u137c\u137d\u0007\n\u0000"+ + "\u0000\u137d\u137e\u0007\u0010\u0000\u0000\u137e\u137f\u0007\t\u0000\u0000"+ + "\u137f\u03ca\u0001\u0000\u0000\u0000\u1380\u1381\u0007\u0010\u0000\u0000"+ + "\u1381\u1382\u0007\u0005\u0000\u0000\u1382\u1383\u0007\u0012\u0000\u0000"+ + "\u1383\u1384\u0007\u0006\u0000\u0000\u1384\u1385\u0007\n\u0000\u0000\u1385"+ + "\u1386\u0007\t\u0000\u0000\u1386\u1387\u0007\u0005\u0000\u0000\u1387\u1388"+ + "\u0007\u000f\u0000\u0000\u1388\u1389\u0007\u0018\u0000\u0000\u1389\u138a"+ + "\u0007\u0006\u0000\u0000\u138a\u138b\u0007\n\u0000\u0000\u138b\u03cc\u0001"+ + "\u0000\u0000\u0000\u138c\u138d\u0007\u0013\u0000\u0000\u138d\u138e\u0007"+ + "\r\u0000\u0000\u138e\u138f\u0007\f\u0000\u0000\u138f\u1390\u0007\u0011"+ + "\u0000\u0000\u1390\u1391\u0007\u0007\u0000\u0000\u1391\u1392\u0007\u0005"+ + "\u0000\u0000\u1392\u1393\u0007\u0006\u0000\u0000\u1393\u1394\u0007\u0011"+ + "\u0000\u0000\u1394\u1395\u0007\u0010\u0000\u0000\u1395\u1396\u0007\b\u0000"+ + "\u0000\u1396\u03ce\u0001\u0000\u0000\u0000\u1397\u1398\u0007\u001a\u0000"+ + "\u0000\u1398\u1399\u0007\u000f\u0000\u0000\u1399\u139a\u0007\u0006\u0000"+ + "\u0000\u139a\u139b\u0007\u0010\u0000\u0000\u139b\u139c\u0007\u0005\u0000"+ + "\u0000\u139c\u139d\u0007\u0012\u0000\u0000\u139d\u139e\u0007\u0006\u0000"+ + "\u0000\u139e\u139f\u0007\n\u0000\u0000\u139f\u03d0\u0001\u0000\u0000\u0000"+ + "\u13a0\u13a1\u0007\u000e\u0000\u0000\u13a1\u13a2\u0007\u0013\u0000\u0000"+ + "\u13a2\u13a3\u0007\u0006\u0000\u0000\u13a3\u13a4\u0007\u0016\u0000\u0000"+ + "\u13a4\u13a5\u0007\u000f\u0000\u0000\u13a5\u13a6\u0007\u0007\u0000\u0000"+ + "\u13a6\u13a7\u0007\t\u0000\u0000\u13a7\u03d2\u0001\u0000\u0000\u0000\u13a8"+ + "\u13a9\u0007\u001a\u0000\u0000\u13a9\u13aa\u0007\u000f\u0000\u0000\u13aa"+ + "\u13ab\u0007\u0006\u0000\u0000\u13ab\u13ac\u0007\u0007\u0000\u0000\u13ac"+ + "\u13ad\u0007\u0005\u0000\u0000\u13ad\u13ae\u0007\u000f\u0000\u0000\u13ae"+ + "\u13af\u0007\n\u0000\u0000\u13af\u13b0\u0007\t\u0000\u0000\u13b0\u13b1"+ + "\u0007\u0018\u0000\u0000\u13b1\u13b2\u0007\u0005\u0000\u0000\u13b2\u13b3"+ + "\u0007\u000e\u0000\u0000\u13b3\u13b4\u0007\n\u0000\u0000\u13b4\u13b5\u0007"+ + "\t\u0000\u0000\u13b5\u03d4\u0001\u0000\u0000\u0000\u13b6\u13b7\u0007\r"+ + "\u0000\u0000\u13b7\u13b8\u0007\u0013\u0000\u0000\u13b8\u13b9\u0007\u001c"+ + "\u0000\u0000\u13b9\u13ba\u0007\u0010\u0000\u0000\u13ba\u13bb\u0007\b\u0000"+ + "\u0000\u13bb\u13bc\u0007\u0018\u0000\u0000\u13bc\u13bd\u0007\n\u0000\u0000"+ + "\u13bd\u03d6\u0001\u0000\u0000\u0000\u13be\u13bf\u0007\u0007\u0000\u0000"+ + "\u13bf\u13c0\u0007\u0013\u0000\u0000\u13c0\u13c1\u0007\r\u0000\u0000\u13c1"+ + "\u13c2\u0007\u000f\u0000\u0000\u13c2\u13c3\u0007\u0005\u0000\u0000\u13c3"+ + "\u13c4\u0007\u0006\u0000\u0000\u13c4\u13c5\u0007\u0011\u0000\u0000\u13c5"+ + "\u13c6\u0007\u000b\u0000\u0000\u13c6\u13c7\u0007\n\u0000\u0000\u13c7\u13c8"+ + "\u0007\f\u0000\u0000\u13c8\u03d8\u0001\u0000\u0000\u0000\u13c9\u13ca\u0007"+ + "\u001c\u0000\u0000\u13ca\u13cb\u0007\u0011\u0000\u0000\u13cb\u13cc\u0007"+ + "\u0010\u0000\u0000\u13cc\u13cd\u0007\u0014\u0000\u0000\u13cd\u13ce\u0007"+ + "\u0011\u0000\u0000\u13ce\u13cf\u0007\u0007\u0000\u0000\u13cf\u03da\u0001"+ + "\u0000\u0000\u0000\u13d0\u13d1\u0007\u0019\u0000\u0000\u13d1\u13d2\u0007"+ + "\u0011\u0000\u0000\u13d2\u13d3\u0007\u0006\u0000\u0000\u13d3\u13d4\u0007"+ + "\u0010\u0000\u0000\u13d4\u13d5\u0007\n\u0000\u0000\u13d5\u13d6\u0007\r"+ + "\u0000\u0000\u13d6\u03dc\u0001\u0000\u0000\u0000\u13d7\u13d8\u0007\u0017"+ + "\u0000\u0000\u13d8\u13d9\u0007\r\u0000\u0000\u13d9\u13da\u0007\u0013\u0000"+ + "\u0000\u13da\u13db\u0007\u0016\u0000\u0000\u13db\u13dc\u0007\u0018\u0000"+ + "\u0000\u13dc\u13dd\u0007\t\u0000\u0000\u13dd\u03de\u0001\u0000\u0000\u0000"+ + "\u13de\u13df\u0007\u0013\u0000\u0000\u13df\u13e0\u0007\u0010\u0000\u0000"+ + "\u13e0\u13e1\u0007\u0014\u0000\u0000\u13e1\u13e2\u0007\n\u0000\u0000\u13e2"+ + "\u13e3\u0007\r\u0000\u0000\u13e3\u13e4\u0007\t\u0000\u0000\u13e4\u03e0"+ + "\u0001\u0000\u0000\u0000\u13e5\u13e6\u0007\u0007\u0000\u0000\u13e6\u13e7"+ + "\u0007\u0019\u0000\u0000\u13e7\u13e8\u0007\u000e\u0000\u0000\u13e8\u03e2"+ + "\u0001\u0000\u0000\u0000\u13e9\u13ea\u0007\u0007\u0000\u0000\u13ea\u13eb"+ + "\u0007\u0019\u0000\u0000\u13eb\u13ec\u0007\f\u0000\u0000\u13ec\u03e4\u0001"+ + "\u0000\u0000\u0000\u13ed\u13ee\u0007\u0007\u0000\u0000\u13ee\u13ef\u0007"+ + "\u0019\u0000\u0000\u13ef\u13f0\u0007\u0015\u0000\u0000\u13f0\u13f1\u0007"+ + "\u000e\u0000\u0000\u13f1\u03e6\u0001\u0000\u0000\u0000\u13f2\u13f3\u0007"+ + "\u0007\u0000\u0000\u13f3\u13f4\u0007\u0019\u0000\u0000\u13f4\u13f5\u0007"+ + "\u0015\u0000\u0000\u13f5\u13f6\u0007\f\u0000\u0000\u13f6\u03e8\u0001\u0000"+ + "\u0000\u0000\u13f7\u13f8\u0007\u0016\u0000\u0000\u13f8\u13f9\u0007\n\u0000"+ + "\u0000\u13f9\u13fa\u0007\t\u0000\u0000\u13fa\u13fb\u0007\u000e\u0000\u0000"+ + "\u13fb\u13fc\u0007\u0005\u0000\u0000\u13fc\u13fd\u0007\u0018\u0000\u0000"+ + "\u13fd\u13fe\u0007\n\u0000\u0000\u13fe\u03ea\u0001\u0000\u0000\u0000\u13ff"+ + "\u1400\u0007\u001b\u0000\u0000\u1400\u1401\u0007\u0011\u0000\u0000\u1401"+ + "\u1402\u0007\n\u0000\u0000\u1402\u1403\u0007\u001c\u0000\u0000\u1403\u1404"+ + "\u0007\t\u0000\u0000\u1404\u03ec\u0001\u0000\u0000\u0000\u1405\u1406\u0007"+ + "\u0007\u0000\u0000\u1406\u1407\u0007\u0013\u0000\u0000\u1407\u1408\u0007"+ + "\r\u0000\u0000\u1408\u1409\u0007\u000f\u0000\u0000\u1409\u140a\u0007\u0005"+ + "\u0000\u0000\u140a\u140b\u0007\u0006\u0000\u0000\u140b\u140c\u0007\u0011"+ + "\u0000\u0000\u140c\u140d\u0007\u000b\u0000\u0000\u140d\u140e\u0007\n\u0000"+ + "\u0000\u140e\u03ee\u0001\u0000\u0000\u0000\u140f\u1410\u0007\f\u0000\u0000"+ + "\u1410\u1411\u0007\u0016\u0000\u0000\u1411\u1412\u0007\u000f\u0000\u0000"+ + "\u1412\u1413\u0007\u0018\u0000\u0000\u1413\u03f0\u0001\u0000\u0000\u0000"+ + "\u1414\u1415\u0007\u0018\u0000\u0000\u1415\u1416\u0007\r\u0000\u0000\u1416"+ + "\u1417\u0007\u0011\u0000\u0000\u1417\u1418\u0007\u0007\u0000\u0000\u1418"+ + "\u1419\u0007\u0010\u0000\u0000\u1419\u141a\u0005_\u0000\u0000\u141a\u141b"+ + "\u0007\t\u0000\u0000\u141b\u141c\u0007\u0010\u0000\u0000\u141c\u141d\u0007"+ + "\r\u0000\u0000\u141d\u141e\u0007\u0011\u0000\u0000\u141e\u141f\u0007\u000e"+ + "\u0000\u0000\u141f\u1420\u0007\u0010\u0000\u0000\u1420\u1421\u0005_\u0000"+ + "\u0000\u1421\u1422\u0007\u0018\u0000\u0000\u1422\u1423\u0007\u0005\u0000"+ + "\u0000\u1423\u1424\u0007\r\u0000\u0000\u1424\u1425\u0007\u0005\u0000\u0000"+ + "\u1425\u1426\u0007\u000f\u0000\u0000\u1426\u1427\u0007\t\u0000\u0000\u1427"+ + "\u03f2\u0001\u0000\u0000\u0000\u1428\u1429\u0007\u001b\u0000\u0000\u1429"+ + "\u142a\u0007\u0005\u0000\u0000\u142a\u142b\u0007\r\u0000\u0000\u142b\u142c"+ + "\u0007\u0011\u0000\u0000\u142c\u142d\u0007\u0005\u0000\u0000\u142d\u142e"+ + "\u0007\u0012\u0000\u0000\u142e\u142f\u0007\u0006\u0000\u0000\u142f\u1430"+ + "\u0007\n\u0000\u0000\u1430\u1431\u0005_\u0000\u0000\u1431\u1432\u0007"+ + "\u000e\u0000\u0000\u1432\u1433\u0007\u0013\u0000\u0000\u1433\u1434\u0007"+ + "\u0007\u0000\u0000\u1434\u1435\u0007\u0019\u0000\u0000\u1435\u1436\u0007"+ + "\u0006\u0000\u0000\u1436\u1437\u0007\u0011\u0000\u0000\u1437\u1438\u0007"+ + "\u000e\u0000\u0000\u1438\u1439\u0007\u0010\u0000\u0000\u1439\u03f4\u0001"+ + "\u0000\u0000\u0000\u143a\u143b\u0007\n\u0000\u0000\u143b\u143c\u0007\r"+ + "\u0000\u0000\u143c\u143d\u0007\r\u0000\u0000\u143d\u143e\u0007\u0013\u0000"+ + "\u0000\u143e\u143f\u0007\r\u0000\u0000\u143f\u03f6\u0001\u0000\u0000\u0000"+ + "\u1440\u1441\u0007\u0016\u0000\u0000\u1441\u1442\u0007\t\u0000\u0000\u1442"+ + "\u1443\u0007\n\u0000\u0000\u1443\u1444\u0005_\u0000\u0000\u1444\u1445"+ + "\u0007\u001b\u0000\u0000\u1445\u1446\u0007\u0005\u0000\u0000\u1446\u1447"+ + "\u0007\r\u0000\u0000\u1447\u1448\u0007\u0011\u0000\u0000\u1448\u1449\u0007"+ + "\u0005\u0000\u0000\u1449\u144a\u0007\u0012\u0000\u0000\u144a\u144b\u0007"+ + "\u0006\u0000\u0000\u144b\u144c\u0007\n\u0000\u0000\u144c\u03f8\u0001\u0000"+ + "\u0000\u0000\u144d\u144e\u0007\u0016\u0000\u0000\u144e\u144f\u0007\t\u0000"+ + "\u0000\u144f\u1450\u0007\n\u0000\u0000\u1450\u1451\u0005_\u0000\u0000"+ + "\u1451\u1452\u0007\u000e\u0000\u0000\u1452\u1453\u0007\u0013\u0000\u0000"+ + "\u1453\u1454\u0007\u0006\u0000\u0000\u1454\u1455\u0007\u0016\u0000\u0000"+ + "\u1455\u1456\u0007\u000f\u0000\u0000\u1456\u1457\u0007\u0007\u0000\u0000"+ + "\u1457\u03fa\u0001\u0000\u0000\u0000\u1458\u1459\u0007\u0005\u0000\u0000"+ + "\u1459\u145a\u0007\u0006\u0000\u0000\u145a\u145b\u0007\u0011\u0000\u0000"+ + "\u145b\u145c\u0007\u0005\u0000\u0000\u145c\u145d\u0007\t\u0000\u0000\u145d"+ + "\u03fc\u0001\u0000\u0000\u0000\u145e\u145f\u0007\u000e\u0000\u0000\u145f"+ + "\u1460\u0007\u0013\u0000\u0000\u1460\u1461\u0007\u0007\u0000\u0000\u1461"+ + "\u1462\u0007\t\u0000\u0000\u1462\u1463\u0007\u0010\u0000\u0000\u1463\u1464"+ + "\u0007\u0005\u0000\u0000\u1464\u1465\u0007\u0007\u0000\u0000\u1465\u1466"+ + "\u0007\u0010\u0000\u0000\u1466\u03fe\u0001\u0000\u0000\u0000\u1467\u1468"+ + "\u0007\u0018\u0000\u0000\u1468\u1469\u0007\n\u0000\u0000\u1469\u146a\u0007"+ + "\r\u0000\u0000\u146a\u146b\u0007\u0019\u0000\u0000\u146b\u146c\u0007\u0013"+ + "\u0000\u0000\u146c\u146d\u0007\r\u0000\u0000\u146d\u146e\u0007\u000f\u0000"+ + "\u0000\u146e\u0400\u0001\u0000\u0000\u0000\u146f\u1470\u0007\u0017\u0000"+ + "\u0000\u1470\u1471\u0007\n\u0000\u0000\u1471\u1472\u0007\u0010\u0000\u0000"+ + "\u1472\u0402\u0001\u0000\u0000\u0000\u1473\u1474\u0007\f\u0000\u0000\u1474"+ + "\u1475\u0007\u0011\u0000\u0000\u1475\u1476\u0007\u0005\u0000\u0000\u1476"+ + "\u1477\u0007\u0017\u0000\u0000\u1477\u1478\u0007\u0007\u0000\u0000\u1478"+ + "\u1479\u0007\u0013\u0000\u0000\u1479\u147a\u0007\t\u0000\u0000\u147a\u147b"+ + "\u0007\u0010\u0000\u0000\u147b\u147c\u0007\u0011\u0000\u0000\u147c\u147d"+ + "\u0007\u000e\u0000\u0000\u147d\u147e\u0007\t\u0000\u0000\u147e\u0404\u0001"+ + "\u0000\u0000\u0000\u147f\u1480\u0007\t\u0000\u0000\u1480\u1481\u0007\u0010"+ + "\u0000\u0000\u1481\u1482\u0007\u0005\u0000\u0000\u1482\u1483\u0007\u000e"+ + "\u0000\u0000\u1483\u1484\u0007\u0015\u0000\u0000\u1484\u1485\u0007\n\u0000"+ + "\u0000\u1485\u1486\u0007\f\u0000\u0000\u1486\u0406\u0001\u0000\u0000\u0000"+ + "\u1487\u1488\u0007\n\u0000\u0000\u1488\u1489\u0007\u0006\u0000\u0000\u1489"+ + "\u148a\u0007\t\u0000\u0000\u148a\u148b\u0007\u0011\u0000\u0000\u148b\u148c"+ + "\u0007\u0019\u0000\u0000\u148c\u0408\u0001\u0000\u0000\u0000\u148d\u148e"+ + "\u0007\u001c\u0000\u0000\u148e\u148f\u0007\u0014\u0000\u0000\u148f\u1490"+ + "\u0007\u0011\u0000\u0000\u1490\u1491\u0007\u0006\u0000\u0000\u1491\u1492"+ + "\u0007\n\u0000\u0000\u1492\u040a\u0001\u0000\u0000\u0000\u1493\u1494\u0007"+ + "\r\u0000\u0000\u1494\u1495\u0007\n\u0000\u0000\u1495\u1496\u0007\u001b"+ + "\u0000\u0000\u1496\u1497\u0007\n\u0000\u0000\u1497\u1498\u0007\r\u0000"+ + "\u0000\u1498\u1499\u0007\t\u0000\u0000\u1499\u149a\u0007\n\u0000\u0000"+ + "\u149a\u040c\u0001\u0000\u0000\u0000\u149b\u149c\u0007\u0019\u0000\u0000"+ + "\u149c\u149d\u0007\u0013\u0000\u0000\u149d\u149e\u0007\r\u0000\u0000\u149e"+ + "\u149f\u0007\n\u0000\u0000\u149f\u14a0\u0007\u0005\u0000\u0000\u14a0\u14a1"+ + "\u0007\u000e\u0000\u0000\u14a1\u14a2\u0007\u0014\u0000\u0000\u14a2\u040e"+ + "\u0001\u0000\u0000\u0000\u14a3\u14a4\u0007\t\u0000\u0000\u14a4\u14a5\u0007"+ + "\u0006\u0000\u0000\u14a5\u14a6\u0007\u0011\u0000\u0000\u14a6\u14a7\u0007"+ + "\u000e\u0000\u0000\u14a7\u14a8\u0007\n\u0000\u0000\u14a8\u0410\u0001\u0000"+ + "\u0000\u0000\u14a9\u14aa\u0007\n\u0000\u0000\u14aa\u14ab\u0007\u001a\u0000"+ + "\u0000\u14ab\u14ac\u0007\u0011\u0000\u0000\u14ac\u14ad\u0007\u0010\u0000"+ + "\u0000\u14ad\u0412\u0001\u0000\u0000\u0000\u14ae\u14af\u0007\r\u0000\u0000"+ + "\u14af\u14b0\u0007\n\u0000\u0000\u14b0\u14b1\u0007\u0010\u0000\u0000\u14b1"+ + "\u14b2\u0007\u0016\u0000\u0000\u14b2\u14b3\u0007\r\u0000\u0000\u14b3\u14b4"+ + "\u0007\u0007\u0000\u0000\u14b4\u0414\u0001\u0000\u0000\u0000\u14b5\u14b6"+ + "\u0007\u001d\u0000\u0000\u14b6\u14b7\u0007\u0016\u0000\u0000\u14b7\u14b8"+ + "\u0007\n\u0000\u0000\u14b8\u14b9\u0007\r\u0000\u0000\u14b9\u14ba\u0007"+ + "\b\u0000\u0000\u14ba\u0416\u0001\u0000\u0000\u0000\u14bb\u14bc\u0007\r"+ + "\u0000\u0000\u14bc\u14bd\u0007\u0005\u0000\u0000\u14bd\u14be\u0007\u0011"+ + "\u0000\u0000\u14be\u14bf\u0007\t\u0000\u0000\u14bf\u14c0\u0007\n\u0000"+ + "\u0000\u14c0\u0418\u0001\u0000\u0000\u0000\u14c1\u14c2\u0007\t\u0000\u0000"+ + "\u14c2\u14c3\u0007\u001d\u0000\u0000\u14c3\u14c4\u0007\u0006\u0000\u0000"+ + "\u14c4\u14c5\u0007\t\u0000\u0000\u14c5\u14c6\u0007\u0010\u0000\u0000\u14c6"+ + "\u14c7\u0007\u0005\u0000\u0000\u14c7\u14c8\u0007\u0010\u0000\u0000\u14c8"+ + "\u14c9\u0007\n\u0000\u0000\u14c9\u041a\u0001\u0000\u0000\u0000\u14ca\u14cb"+ + "\u0007\f\u0000\u0000\u14cb\u14cc\u0007\n\u0000\u0000\u14cc\u14cd\u0007"+ + "\u0012\u0000\u0000\u14cd\u14ce\u0007\u0016\u0000\u0000\u14ce\u14cf\u0007"+ + "\u0017\u0000\u0000\u14cf\u041c\u0001\u0000\u0000\u0000\u14d0\u14d1\u0007"+ + "\u0006\u0000\u0000\u14d1\u14d2\u0007\u0013\u0000\u0000\u14d2\u14d3\u0007"+ + "\u0017\u0000\u0000\u14d3\u041e\u0001\u0000\u0000\u0000\u14d4\u14d5\u0007"+ + "\u0011\u0000\u0000\u14d5\u14d6\u0007\u0007\u0000\u0000\u14d6\u14d7\u0007"+ + "\u0019\u0000\u0000\u14d7\u14d8\u0007\u0013\u0000\u0000\u14d8\u0420\u0001"+ + "\u0000\u0000\u0000\u14d9\u14da\u0007\u0007\u0000\u0000\u14da\u14db\u0007"+ + "\u0013\u0000\u0000\u14db\u14dc\u0007\u0010\u0000\u0000\u14dc\u14dd\u0007"+ + "\u0011\u0000\u0000\u14dd\u14de\u0007\u000e\u0000\u0000\u14de\u14df\u0007"+ + "\n\u0000\u0000\u14df\u0422\u0001\u0000\u0000\u0000\u14e0\u14e1\u0007\u001c"+ + "\u0000\u0000\u14e1\u14e2\u0007\u0005\u0000\u0000\u14e2\u14e3\u0007\r\u0000"+ + "\u0000\u14e3\u14e4\u0007\u0007\u0000\u0000\u14e4\u14e5\u0007\u0011\u0000"+ + "\u0000\u14e5\u14e6\u0007\u0007\u0000\u0000\u14e6\u14e7\u0007\u0017\u0000"+ + "\u0000\u14e7\u0424\u0001\u0000\u0000\u0000\u14e8\u14e9\u0007\n\u0000\u0000"+ + "\u14e9\u14ea\u0007\u001a\u0000\u0000\u14ea\u14eb\u0007\u000e\u0000\u0000"+ + "\u14eb\u14ec\u0007\n\u0000\u0000\u14ec\u14ed\u0007\u0018\u0000\u0000\u14ed"+ + "\u14ee\u0007\u0010\u0000\u0000\u14ee\u14ef\u0007\u0011\u0000\u0000\u14ef"+ + "\u14f0\u0007\u0013\u0000\u0000\u14f0\u14f1\u0007\u0007\u0000\u0000\u14f1"+ + "\u0426\u0001\u0000\u0000\u0000\u14f2\u14f3\u0007\u0005\u0000\u0000\u14f3"+ + "\u14f4\u0007\t\u0000\u0000\u14f4\u14f5\u0007\t\u0000\u0000\u14f5\u14f6"+ + "\u0007\n\u0000\u0000\u14f6\u14f7\u0007\r\u0000\u0000\u14f7\u14f8\u0007"+ + "\u0010\u0000\u0000\u14f8\u0428\u0001\u0000\u0000\u0000\u14f9\u14fa\u0007"+ + "\u0006\u0000\u0000\u14fa\u14fb\u0007\u0013\u0000\u0000\u14fb\u14fc\u0007"+ + "\u0013\u0000\u0000\u14fc\u14fd\u0007\u0018\u0000\u0000\u14fd\u042a\u0001"+ + "\u0000\u0000\u0000\u14fe\u14ff\u0007\u0013\u0000\u0000\u14ff\u1500\u0007"+ + "\u0018\u0000\u0000\u1500\u1501\u0007\n\u0000\u0000\u1501\u1502\u0007\u0007"+ + "\u0000\u0000\u1502\u042c\u0001\u0000\u0000\u0000\u1503\u1504\u0007\u0005"+ + "\u0000\u0000\u1504\u1505\u0007\u0012\u0000\u0000\u1505\u1506\u0007\t\u0000"+ + "\u0000\u1506\u042e\u0001\u0000\u0000\u0000\u1507\u1508\u0007\u000e\u0000"+ + "\u0000\u1508\u1509\u0007\u0012\u0000\u0000\u1509\u150a\u0007\r\u0000\u0000"+ + "\u150a\u150b\u0007\u0010\u0000\u0000\u150b\u0430\u0001\u0000\u0000\u0000"+ + "\u150c\u150d\u0007\u000e\u0000\u0000\u150d\u150e\u0007\n\u0000\u0000\u150e"+ + "\u150f\u0007\u0011\u0000\u0000\u150f\u1510\u0007\u0006\u0000\u0000\u1510"+ + "\u0432\u0001\u0000\u0000\u0000\u1511\u1512\u0007\u000e\u0000\u0000\u1512"+ + "\u1513\u0007\n\u0000\u0000\u1513\u1514\u0007\u0011\u0000\u0000\u1514\u1515"+ + "\u0007\u0006\u0000\u0000\u1515\u1516\u0007\u0011\u0000\u0000\u1516\u1517"+ + "\u0007\u0007\u0000\u0000\u1517\u1518\u0007\u0017\u0000\u0000\u1518\u0434"+ + "\u0001\u0000\u0000\u0000\u1519\u151a\u0007\f\u0000\u0000\u151a\u151b\u0007"+ + "\n\u0000\u0000\u151b\u151c\u0007\u0017\u0000\u0000\u151c\u151d\u0007\r"+ + "\u0000\u0000\u151d\u151e\u0007\n\u0000\u0000\u151e\u151f\u0007\n\u0000"+ + "\u0000\u151f\u1520\u0007\t\u0000\u0000\u1520\u0436\u0001\u0000\u0000\u0000"+ + "\u1521\u1522\u0007\f\u0000\u0000\u1522\u1523\u0007\u0011\u0000\u0000\u1523"+ + "\u1524\u0007\u001b\u0000\u0000\u1524\u0438\u0001\u0000\u0000\u0000\u1525"+ + "\u1526\u0007\n\u0000\u0000\u1526\u1527\u0007\u001a\u0000\u0000\u1527\u1528"+ + "\u0007\u0018\u0000\u0000\u1528\u043a\u0001\u0000\u0000\u0000\u1529\u152a"+ + "\u0007\u0019\u0000\u0000\u152a\u152b\u0007\u0005\u0000\u0000\u152b\u152c"+ + "\u0007\u000e\u0000\u0000\u152c\u152d\u0007\u0010\u0000\u0000\u152d\u152e"+ + "\u0007\u0013\u0000\u0000\u152e\u152f\u0007\r\u0000\u0000\u152f\u1530\u0007"+ + "\u0011\u0000\u0000\u1530\u1531\u0007\u0005\u0000\u0000\u1531\u1532\u0007"+ + "\u0006\u0000\u0000\u1532\u043c\u0001\u0000\u0000\u0000\u1533\u1534\u0007"+ + "\u0019\u0000\u0000\u1534\u1535\u0007\u0006\u0000\u0000\u1535\u1536\u0007"+ + "\u0013\u0000\u0000\u1536\u1537\u0007\u0013\u0000\u0000\u1537\u1538\u0007"+ + "\r\u0000\u0000\u1538\u043e\u0001\u0000\u0000\u0000\u1539\u153a\u0007\u0017"+ + "\u0000\u0000\u153a\u153b\u0007\u000e\u0000\u0000\u153b\u153c\u0007\f\u0000"+ + "\u0000\u153c\u0440\u0001\u0000\u0000\u0000\u153d\u153e\u0007\u0006\u0000"+ + "\u0000\u153e\u153f\u0007\u000e\u0000\u0000\u153f\u1540\u0007\u000f\u0000"+ + "\u0000\u1540\u0442\u0001\u0000\u0000\u0000\u1541\u1542\u0007\u0006\u0000"+ + "\u0000\u1542\u1543\u0007\u0007\u0000\u0000\u1543\u0444\u0001\u0000\u0000"+ + "\u0000\u1544\u1545\u0007\u0006\u0000\u0000\u1545\u1546\u0007\u0013\u0000"+ + "\u0000\u1546\u1547\u0007\u0017\u0000\u0000\u1547\u1548\u00051\u0000\u0000"+ + "\u1548\u1549\u00050\u0000\u0000\u1549\u0446\u0001\u0000\u0000\u0000\u154a"+ + "\u154b\u0007\u000f\u0000\u0000\u154b\u154c\u0007\u0011\u0000\u0000\u154c"+ + "\u154d\u0007\u0007\u0000\u0000\u154d\u154e\u0005_\u0000\u0000\u154e\u154f"+ + "\u0007\t\u0000\u0000\u154f\u1550\u0007\u000e\u0000\u0000\u1550\u1551\u0007"+ + "\u0005\u0000\u0000\u1551\u1552\u0007\u0006\u0000\u0000\u1552\u1553\u0007"+ + "\n\u0000\u0000\u1553\u0448\u0001\u0000\u0000\u0000\u1554\u1555\u0007\u000f"+ + "\u0000\u0000\u1555\u1556\u0007\u0013\u0000\u0000\u1556\u1557\u0007\f\u0000"+ + "\u0000\u1557\u044a\u0001\u0000\u0000\u0000\u1558\u1559\u0007\u0018\u0000"+ + "\u0000\u1559\u155a\u0007\u0011\u0000\u0000\u155a\u044c\u0001\u0000\u0000"+ + "\u0000\u155b\u155c\u0007\u0018\u0000\u0000\u155c\u155d\u0007\u0013\u0000"+ + "\u0000\u155d\u155e\u0007\u001c\u0000\u0000\u155e\u155f\u0007\n\u0000\u0000"+ + "\u155f\u1560\u0007\r\u0000\u0000\u1560\u044e\u0001\u0000\u0000\u0000\u1561"+ + "\u1562\u0007\r\u0000\u0000\u1562\u1563\u0007\u0005\u0000\u0000\u1563\u1564"+ + "\u0007\f\u0000\u0000\u1564\u1565\u0007\u0011\u0000\u0000\u1565\u1566\u0007"+ + "\u0005\u0000\u0000\u1566\u1567\u0007\u0007\u0000\u0000\u1567\u1568\u0007"+ + "\t\u0000\u0000\u1568\u0450\u0001\u0000\u0000\u0000\u1569\u156a\u0007\r"+ + "\u0000\u0000\u156a\u156b\u0007\u0013\u0000\u0000\u156b\u156c\u0007\u0016"+ + "\u0000\u0000\u156c\u156d\u0007\u0007\u0000\u0000\u156d\u156e\u0007\f\u0000"+ + "\u0000\u156e\u0452\u0001\u0000\u0000\u0000\u156f\u1570\u0007\t\u0000\u0000"+ + "\u1570\u1571\u0007\u000e\u0000\u0000\u1571\u1572\u0007\u0005\u0000\u0000"+ + "\u1572\u1573\u0007\u0006\u0000\u0000\u1573\u1574\u0007\n\u0000\u0000\u1574"+ + "\u0454\u0001\u0000\u0000\u0000\u1575\u1576\u0007\t\u0000\u0000\u1576\u1577"+ + "\u0007\u0011\u0000\u0000\u1577\u1578\u0007\u0017\u0000\u0000\u1578\u1579"+ + "\u0007\u0007\u0000\u0000\u1579\u0456\u0001\u0000\u0000\u0000\u157a\u157b"+ + "\u0007\t\u0000\u0000\u157b\u157c\u0007\u001d\u0000\u0000\u157c\u157d\u0007"+ + "\r\u0000\u0000\u157d\u157e\u0007\u0010\u0000\u0000\u157e\u0458\u0001\u0000"+ + "\u0000\u0000\u157f\u1580\u0007\u0010\u0000\u0000\u1580\u1581\u0007\r\u0000"+ + "\u0000\u1581\u1582\u0007\u0011\u0000\u0000\u1582\u1583\u0007\u000f\u0000"+ + "\u0000\u1583\u1584\u0005_\u0000\u0000\u1584\u1585\u0007\t\u0000\u0000"+ + "\u1585\u1586\u0007\u000e\u0000\u0000\u1586\u1587\u0007\u0005\u0000\u0000"+ + "\u1587\u1588\u0007\u0006\u0000\u0000\u1588\u1589\u0007\n\u0000\u0000\u1589"+ + "\u045a\u0001\u0000\u0000\u0000\u158a\u158b\u0007\u0010\u0000\u0000\u158b"+ + "\u158c\u0007\r\u0000\u0000\u158c\u158d\u0007\u0016\u0000\u0000\u158d\u158e"+ + "\u0007\u0007\u0000\u0000\u158e\u158f\u0007\u000e\u0000\u0000\u158f\u045c"+ + "\u0001\u0000\u0000\u0000\u1590\u1591\u0007\u001c\u0000\u0000\u1591\u1592"+ + "\u0007\u0011\u0000\u0000\u1592\u1593\u0007\f\u0000\u0000\u1593\u1594\u0007"+ + "\u0010\u0000\u0000\u1594\u1595\u0007\u0014\u0000\u0000\u1595\u1596\u0005"+ + "_\u0000\u0000\u1596\u1597\u0007\u0012\u0000\u0000\u1597\u1598\u0007\u0016"+ + "\u0000\u0000\u1598\u1599\u0007\u000e\u0000\u0000\u1599\u159a\u0007\u0015"+ + "\u0000\u0000\u159a\u159b\u0007\n\u0000\u0000\u159b\u159c\u0007\u0010\u0000"+ + "\u0000\u159c\u045e\u0001\u0000\u0000\u0000\u159d\u159e\u0007\r\u0000\u0000"+ + "\u159e\u159f\u0007\u0005\u0000\u0000\u159f\u15a0\u0007\u0007\u0000\u0000"+ + "\u15a0\u15a1\u0007\f\u0000\u0000\u15a1\u15a2\u0007\u0013\u0000\u0000\u15a2"+ + "\u15a3\u0007\u000f\u0000\u0000\u15a3\u0460\u0001\u0000\u0000\u0000\u15a4"+ + "\u15a5\u0007\t\u0000\u0000\u15a5\u15a6\u0007\n\u0000\u0000\u15a6\u15a7"+ + "\u0007\u0010\u0000\u0000\u15a7\u15a8\u0007\t\u0000\u0000\u15a8\u15a9\u0007"+ + "\n\u0000\u0000\u15a9\u15aa\u0007\n\u0000\u0000\u15aa\u15ab\u0007\f\u0000"+ + "\u0000\u15ab\u0462\u0001\u0000\u0000\u0000\u15ac\u15ad\u0007\u0005\u0000"+ + "\u0000\u15ad\u15ae\u0007\u000e\u0000\u0000\u15ae\u15af\u0007\u0013\u0000"+ + "\u0000\u15af\u15b0\u0007\t\u0000\u0000\u15b0\u0464\u0001\u0000\u0000\u0000"+ + "\u15b1\u15b2\u0007\u0005\u0000\u0000\u15b2\u15b3\u0007\u000e\u0000\u0000"+ + "\u15b3\u15b4\u0007\u0013\u0000\u0000\u15b4\u15b5\u0007\t\u0000\u0000\u15b5"+ + "\u15b6\u0007\f\u0000\u0000\u15b6\u0466\u0001\u0000\u0000\u0000\u15b7\u15b8"+ + "\u0007\u0005\u0000\u0000\u15b8\u15b9\u0007\t\u0000\u0000\u15b9\u15ba\u0007"+ + "\u0011\u0000\u0000\u15ba\u15bb\u0007\u0007\u0000\u0000\u15bb\u0468\u0001"+ + "\u0000\u0000\u0000\u15bc\u15bd\u0007\u0005\u0000\u0000\u15bd\u15be\u0007"+ + "\t\u0000\u0000\u15be\u15bf\u0007\u0011\u0000\u0000\u15bf\u15c0\u0007\u0007"+ + "\u0000\u0000\u15c0\u15c1\u0007\f\u0000\u0000\u15c1\u046a\u0001\u0000\u0000"+ + "\u0000\u15c2\u15c3\u0007\u0005\u0000\u0000\u15c3\u15c4\u0007\u0010\u0000"+ + "\u0000\u15c4\u15c5\u0007\u0005\u0000\u0000\u15c5\u15c6\u0007\u0007\u0000"+ + "\u0000\u15c6\u046c\u0001\u0000\u0000\u0000\u15c7\u15c8\u0007\u0005\u0000"+ + "\u0000\u15c8\u15c9\u0007\u0010\u0000\u0000\u15c9\u15ca\u0007\u0005\u0000"+ + "\u0000\u15ca\u15cb\u0007\u0007\u0000\u0000\u15cb\u15cc\u0007\f\u0000\u0000"+ + "\u15cc\u046e\u0001\u0000\u0000\u0000\u15cd\u15ce\u0007\u0005\u0000\u0000"+ + "\u15ce\u15cf\u0007\u0010\u0000\u0000\u15cf\u15d0\u0007\u0005\u0000\u0000"+ + "\u15d0\u15d1\u0007\u0007\u0000\u0000\u15d1\u15d2\u00052\u0000\u0000\u15d2"+ + "\u0470\u0001\u0000\u0000\u0000\u15d3\u15d4\u0007\u0005\u0000\u0000\u15d4"+ + "\u15d5\u0007\u0010\u0000\u0000\u15d5\u15d6\u0007\u0005\u0000\u0000\u15d6"+ + "\u15d7\u0007\u0007\u0000\u0000\u15d7\u15d8\u00052\u0000\u0000\u15d8\u15d9"+ + "\u0007\f\u0000\u0000\u15d9\u0472\u0001\u0000\u0000\u0000\u15da\u15db\u0007"+ + "\u000e\u0000\u0000\u15db\u15dc\u0007\u0013\u0000\u0000\u15dc\u15dd\u0007"+ + "\t\u0000\u0000\u15dd\u0474\u0001\u0000\u0000\u0000\u15de\u15df\u0007\u000e"+ + "\u0000\u0000\u15df\u15e0\u0007\u0013\u0000\u0000\u15e0\u15e1\u0007\t\u0000"+ + "\u0000\u15e1\u15e2\u0007\f\u0000\u0000\u15e2\u0476\u0001\u0000\u0000\u0000"+ + "\u15e3\u15e4\u0007\u000e\u0000\u0000\u15e4\u15e5\u0007\u0013\u0000\u0000"+ + "\u15e5\u15e6\u0007\u0010\u0000\u0000\u15e6\u0478\u0001\u0000\u0000\u0000"+ + "\u15e7\u15e8\u0007\u000e\u0000\u0000\u15e8\u15e9\u0007\u0013\u0000\u0000"+ + "\u15e9\u15ea\u0007\u0010\u0000\u0000\u15ea\u15eb\u0007\f\u0000\u0000\u15eb"+ + "\u047a\u0001\u0000\u0000\u0000\u15ec\u15ed\u0007\t\u0000\u0000\u15ed\u15ee"+ + "\u0007\u0011\u0000\u0000\u15ee\u15ef\u0007\u0007\u0000\u0000\u15ef\u047c"+ + "\u0001\u0000\u0000\u0000\u15f0\u15f1\u0007\t\u0000\u0000\u15f1\u15f2\u0007"+ + "\u0011\u0000\u0000\u15f2\u15f3\u0007\u0007\u0000\u0000\u15f3\u15f4\u0007"+ + "\f\u0000\u0000\u15f4\u047e\u0001\u0000\u0000\u0000\u15f5\u15f6\u0007\u0010"+ + "\u0000\u0000\u15f6\u15f7\u0007\u0005\u0000\u0000\u15f7\u15f8\u0007\u0007"+ + "\u0000\u0000\u15f8\u0480\u0001\u0000\u0000\u0000\u15f9\u15fa\u0007\u0010"+ + "\u0000\u0000\u15fa\u15fb\u0007\u0005\u0000\u0000\u15fb\u15fc\u0007\u0007"+ + "\u0000\u0000\u15fc\u15fd\u0007\f\u0000\u0000\u15fd\u0482\u0001\u0000\u0000"+ + "\u0000\u15fe\u15ff\u0007\t\u0000\u0000\u15ff\u1600\u0007\u0011\u0000\u0000"+ + "\u1600\u1601\u0007\u0007\u0000\u0000\u1601\u1602\u0007\u0014\u0000\u0000"+ + "\u1602\u0484\u0001\u0000\u0000\u0000\u1603\u1604\u0007\u000e\u0000\u0000"+ + "\u1604\u1605\u0007\u0013\u0000\u0000\u1605\u1606\u0007\t\u0000\u0000\u1606"+ + "\u1607\u0007\u0014\u0000\u0000\u1607\u0486\u0001\u0000\u0000\u0000\u1608"+ + "\u1609\u0007\u0010\u0000\u0000\u1609\u160a\u0007\u0005\u0000\u0000\u160a"+ + "\u160b\u0007\u0007\u0000\u0000\u160b\u160c\u0007\u0014\u0000\u0000\u160c"+ + "\u0488\u0001\u0000\u0000\u0000\u160d\u160e\u0007\u0005\u0000\u0000\u160e"+ + "\u160f\u0007\t\u0000\u0000\u160f\u1610\u0007\u0011\u0000\u0000\u1610\u1611"+ + "\u0007\u0007\u0000\u0000\u1611\u1612\u0007\u0014\u0000\u0000\u1612\u048a"+ + "\u0001\u0000\u0000\u0000\u1613\u1614\u0007\u0005\u0000\u0000\u1614\u1615"+ + "\u0007\u000e\u0000\u0000\u1615\u1616\u0007\u0013\u0000\u0000\u1616\u1617"+ + "\u0007\t\u0000\u0000\u1617\u1618\u0007\u0014\u0000\u0000\u1618\u048c\u0001"+ + "\u0000\u0000\u0000\u1619\u161a\u0007\u0005\u0000\u0000\u161a\u161b\u0007"+ + "\u0010\u0000\u0000\u161b\u161c\u0007\u0005\u0000\u0000\u161c\u161d\u0007"+ + "\u0007\u0000\u0000\u161d\u161e\u0007\u0014\u0000\u0000\u161e\u048e\u0001"+ + "\u0000\u0000\u0000\u161f\u1620\u0007\u0012\u0000\u0000\u1620\u1621\u0007"+ + "\u0011\u0000\u0000\u1621\u1622\u0007\u0010\u0000\u0000\u1622\u1623\u0005"+ + "_\u0000\u0000\u1623\u1624\u0007\u0006\u0000\u0000\u1624\u1625\u0007\n"+ + "\u0000\u0000\u1625\u1626\u0007\u0007\u0000\u0000\u1626\u1627\u0007\u0017"+ + "\u0000\u0000\u1627\u1628\u0007\u0010\u0000\u0000\u1628\u1629\u0007\u0014"+ + "\u0000\u0000\u1629\u0490\u0001\u0000\u0000\u0000\u162a\u162b\u0007\u000e"+ + "\u0000\u0000\u162b\u162c\u0007\u0014\u0000\u0000\u162c\u162d\u0007\u0005"+ + "\u0000\u0000\u162d\u162e\u0007\r\u0000\u0000\u162e\u162f\u0005_\u0000"+ + "\u0000\u162f\u1630\u0007\u0006\u0000\u0000\u1630\u1631\u0007\n\u0000\u0000"+ + "\u1631\u1632\u0007\u0007\u0000\u0000\u1632\u1633\u0007\u0017\u0000\u0000"+ + "\u1633\u1634\u0007\u0010\u0000\u0000\u1634\u1635\u0007\u0014\u0000\u0000"+ + "\u1635\u0492\u0001\u0000\u0000\u0000\u1636\u1637\u0007\u000e\u0000\u0000"+ + "\u1637\u1638\u0007\u0014\u0000\u0000\u1638\u1639\u0007\u0005\u0000\u0000"+ + "\u1639\u163a\u0007\r\u0000\u0000\u163a\u163b\u0007\u0005\u0000\u0000\u163b"+ + "\u163c\u0007\u000e\u0000\u0000\u163c\u163d\u0007\u0010\u0000\u0000\u163d"+ + "\u163e\u0007\n\u0000\u0000\u163e\u163f\u0007\r\u0000\u0000\u163f\u1640"+ + "\u0005_\u0000\u0000\u1640\u1641\u0007\u0006\u0000\u0000\u1641\u1642\u0007"+ + "\n\u0000\u0000\u1642\u1643\u0007\u0007\u0000\u0000\u1643\u1644\u0007\u0017"+ + "\u0000\u0000\u1644\u1645\u0007\u0010\u0000\u0000\u1645\u1646\u0007\u0014"+ + "\u0000\u0000\u1646\u0494\u0001\u0000\u0000\u0000\u1647\u1648\u0007\u0006"+ + "\u0000\u0000\u1648\u1649\u0007\u0013\u0000\u0000\u1649\u164a\u0007\u001c"+ + "\u0000\u0000\u164a\u164b\u0007\n\u0000\u0000\u164b\u164c\u0007\r\u0000"+ + "\u0000\u164c\u0496\u0001\u0000\u0000\u0000\u164d\u164e\u0007\u0013\u0000"+ + "\u0000\u164e\u164f\u0007\u000e\u0000\u0000\u164f\u1650\u0007\u0010\u0000"+ + "\u0000\u1650\u1651\u0007\n\u0000\u0000\u1651\u1652\u0007\u0010\u0000\u0000"+ + "\u1652\u1653\u0005_\u0000\u0000\u1653\u1654\u0007\u0006\u0000\u0000\u1654"+ + "\u1655\u0007\n\u0000\u0000\u1655\u1656\u0007\u0007\u0000\u0000\u1656\u1657"+ + "\u0007\u0017\u0000\u0000\u1657\u1658\u0007\u0010\u0000\u0000\u1658\u1659"+ + "\u0007\u0014\u0000\u0000\u1659\u0498\u0001\u0000\u0000\u0000\u165a\u165b"+ + "\u0007\u0016\u0000\u0000\u165b\u165c\u0007\u0018\u0000\u0000\u165c\u165d"+ + "\u0007\u0018\u0000\u0000\u165d\u165e\u0007\n\u0000\u0000\u165e\u165f\u0007"+ + "\r\u0000\u0000\u165f\u049a\u0001\u0000\u0000\u0000\u1660\u1661\u0007\u0005"+ + "\u0000\u0000\u1661\u1662\u0007\t\u0000\u0000\u1662\u1663\u0007\u000e\u0000"+ + "\u0000\u1663\u1664\u0007\u0011\u0000\u0000\u1664\u1665\u0007\u0011\u0000"+ + "\u0000\u1665\u049c\u0001\u0000\u0000\u0000\u1666\u1667\u0007\u0012\u0000"+ + "\u0000\u1667\u1668\u0007\u0010\u0000\u0000\u1668\u1669\u0007\r\u0000\u0000"+ + "\u1669\u166a\u0007\u0011\u0000\u0000\u166a\u166b\u0007\u000f\u0000\u0000"+ + "\u166b\u049e\u0001\u0000\u0000\u0000\u166c\u166d\u0007\u000e\u0000\u0000"+ + "\u166d\u166e\u0007\u0014\u0000\u0000\u166e\u166f\u0007\r\u0000\u0000\u166f"+ + "\u04a0\u0001\u0000\u0000\u0000\u1670\u1671\u0007\u000e\u0000\u0000\u1671"+ + "\u1672\u0007\u0013\u0000\u0000\u1672\u1673\u0007\u0007\u0000\u0000\u1673"+ + "\u1674\u0007\u000e\u0000\u0000\u1674\u1675\u0007\u0005\u0000\u0000\u1675"+ + "\u1676\u0007\u0010\u0000\u0000\u1676\u04a2\u0001\u0000\u0000\u0000\u1677"+ + "\u1678\u0007\u000e\u0000\u0000\u1678\u1679\u0007\u0013\u0000\u0000\u1679"+ + "\u167a\u0007\u0007\u0000\u0000\u167a\u167b\u0007\u000e\u0000\u0000\u167b"+ + "\u167c\u0007\u0005\u0000\u0000\u167c\u167d\u0007\u0010\u0000\u0000\u167d"+ + "\u167e\u0005_\u0000\u0000\u167e\u167f\u0007\u001c\u0000\u0000\u167f\u1680"+ + "\u0007\t\u0000\u0000\u1680\u04a4\u0001\u0000\u0000\u0000\u1681\u1682\u0007"+ + "\u0019\u0000\u0000\u1682\u1683\u0007\u0013\u0000\u0000\u1683\u1684\u0007"+ + "\r\u0000\u0000\u1684\u1685\u0007\u000f\u0000\u0000\u1685\u1686\u0007\u0005"+ + "\u0000\u0000\u1686\u1687\u0007\u0010\u0000\u0000\u1687\u04a6\u0001\u0000"+ + "\u0000\u0000\u1688\u1689\u0007\u0011\u0000\u0000\u1689\u168a\u0007\u0007"+ + "\u0000\u0000\u168a\u168b\u0007\u0011\u0000\u0000\u168b\u168c\u0007\u0010"+ + "\u0000\u0000\u168c\u168d\u0007\u000e\u0000\u0000\u168d\u168e\u0007\u0005"+ + "\u0000\u0000\u168e\u168f\u0007\u0018\u0000\u0000\u168f\u04a8\u0001\u0000"+ + "\u0000\u0000\u1690\u1691\u0007\u0006\u0000\u0000\u1691\u1692\u0007\n\u0000"+ + "\u0000\u1692\u1693\u0007\u0007\u0000\u0000\u1693\u1694\u0007\u0017\u0000"+ + "\u0000\u1694\u1695\u0007\u0010\u0000\u0000\u1695\u1696\u0007\u0014\u0000"+ + "\u0000\u1696\u04aa\u0001\u0000\u0000\u0000\u1697\u1698\u0007\u0006\u0000"+ + "\u0000\u1698\u1699\u0007\u0018\u0000\u0000\u1699\u169a\u0007\u0005\u0000"+ + "\u0000\u169a\u169b\u0007\f\u0000\u0000\u169b\u04ac\u0001\u0000\u0000\u0000"+ + "\u169c\u169d\u0007\u0006\u0000\u0000\u169d\u169e\u0007\u0010\u0000\u0000"+ + "\u169e\u169f\u0007\r\u0000\u0000\u169f\u16a0\u0007\u0011\u0000\u0000\u16a0"+ + "\u16a1\u0007\u000f\u0000\u0000\u16a1\u04ae\u0001\u0000\u0000\u0000\u16a2"+ + "\u16a3\u0007\u000f\u0000\u0000\u16a3\u16a4\u0007\f\u0000\u0000\u16a4\u16a5"+ + "\u00055\u0000\u0000\u16a5\u04b0\u0001\u0000\u0000\u0000\u16a6\u16a7\u0007"+ + "\u0018\u0000\u0000\u16a7\u16a8\u0007\u0005\u0000\u0000\u16a8\u16a9\u0007"+ + "\r\u0000\u0000\u16a9\u16aa\u0007\t\u0000\u0000\u16aa\u16ab\u0007\n\u0000"+ + "\u0000\u16ab\u16ac\u0005_\u0000\u0000\u16ac\u16ad\u0007\u0011\u0000\u0000"+ + "\u16ad\u16ae\u0007\f\u0000\u0000\u16ae\u16af\u0007\n\u0000\u0000\u16af"+ + "\u16b0\u0007\u0007\u0000\u0000\u16b0\u16b1\u0007\u0010\u0000\u0000\u16b1"+ + "\u04b2\u0001\u0000\u0000\u0000\u16b2\u16b3\u0007\u0018\u0000\u0000\u16b3"+ + "\u16b4\u0007\u0017\u0000\u0000\u16b4\u16b5\u0005_\u0000\u0000\u16b5\u16b6"+ + "\u0007\u000e\u0000\u0000\u16b6\u16b7\u0007\u0006\u0000\u0000\u16b7\u16b8"+ + "\u0007\u0011\u0000\u0000\u16b8\u16b9\u0007\n\u0000\u0000\u16b9\u16ba\u0007"+ + "\u0007\u0000\u0000\u16ba\u16bb\u0007\u0010\u0000\u0000\u16bb\u16bc\u0005"+ + "_\u0000\u0000\u16bc\u16bd\u0007\n\u0000\u0000\u16bd\u16be\u0007\u0007"+ + "\u0000\u0000\u16be\u16bf\u0007\u000e\u0000\u0000\u16bf\u16c0\u0007\u0013"+ + "\u0000\u0000\u16c0\u16c1\u0007\f\u0000\u0000\u16c1\u16c2\u0007\u0011\u0000"+ + "\u0000\u16c2\u16c3\u0007\u0007\u0000\u0000\u16c3\u16c4\u0007\u0017\u0000"+ + "\u0000\u16c4\u04b4\u0001\u0000\u0000\u0000\u16c5\u16c6\u0007\u001d\u0000"+ + "\u0000\u16c6\u16c7\u0007\u0016\u0000\u0000\u16c7\u16c8\u0007\u0013\u0000"+ + "\u0000\u16c8\u16c9\u0007\u0010\u0000\u0000\u16c9\u16ca\u0007\n\u0000\u0000"+ + "\u16ca\u16cb\u0005_\u0000\u0000\u16cb\u16cc\u0007\u0011\u0000\u0000\u16cc"+ + "\u16cd\u0007\f\u0000\u0000\u16cd\u16ce\u0007\n\u0000\u0000\u16ce\u16cf"+ + "\u0007\u0007\u0000\u0000\u16cf\u16d0\u0007\u0010\u0000\u0000\u16d0\u04b6"+ + "\u0001\u0000\u0000\u0000\u16d1\u16d2\u0007\u001d\u0000\u0000\u16d2\u16d3"+ + "\u0007\u0016\u0000\u0000\u16d3\u16d4\u0007\u0013\u0000\u0000\u16d4\u16d5"+ + "\u0007\u0010\u0000\u0000\u16d5\u16d6\u0007\n\u0000\u0000\u16d6\u16d7\u0005"+ + "_\u0000\u0000\u16d7\u16d8\u0007\u0006\u0000\u0000\u16d8\u16d9\u0007\u0011"+ + "\u0000\u0000\u16d9\u16da\u0007\u0010\u0000\u0000\u16da\u16db\u0007\n\u0000"+ + "\u0000\u16db\u16dc\u0007\r\u0000\u0000\u16dc\u16dd\u0007\u0005\u0000\u0000"+ + "\u16dd\u16de\u0007\u0006\u0000\u0000\u16de\u04b8\u0001\u0000\u0000\u0000"+ + "\u16df\u16e0\u0007\u001d\u0000\u0000\u16e0\u16e1\u0007\u0016\u0000\u0000"+ + "\u16e1\u16e2\u0007\u0013\u0000\u0000\u16e2\u16e3\u0007\u0010\u0000\u0000"+ + "\u16e3\u16e4\u0007\n\u0000\u0000\u16e4\u16e5\u0005_\u0000\u0000\u16e5"+ + "\u16e6\u0007\u0007\u0000\u0000\u16e6\u16e7\u0007\u0016\u0000\u0000\u16e7"+ + "\u16e8\u0007\u0006\u0000\u0000\u16e8\u16e9\u0007\u0006\u0000\u0000\u16e9"+ + "\u16ea\u0007\u0005\u0000\u0000\u16ea\u16eb\u0007\u0012\u0000\u0000\u16eb"+ + "\u16ec\u0007\u0006\u0000\u0000\u16ec\u16ed\u0007\n\u0000\u0000\u16ed\u04ba"+ + "\u0001\u0000\u0000\u0000\u16ee\u16ef\u0007\r\u0000\u0000\u16ef\u16f0\u0007"+ + "\n\u0000\u0000\u16f0\u16f1\u0007\u0017\u0000\u0000\u16f1\u16f2\u0007\n"+ + "\u0000\u0000\u16f2\u16f3\u0007\u001a\u0000\u0000\u16f3\u16f4\u0007\u0018"+ + "\u0000\u0000\u16f4\u16f5\u0005_\u0000\u0000\u16f5\u16f6\u0007\u000e\u0000"+ + "\u0000\u16f6\u16f7\u0007\u0013\u0000\u0000\u16f7\u16f8\u0007\u0016\u0000"+ + "\u0000\u16f8\u16f9\u0007\u0007\u0000\u0000\u16f9\u16fa\u0007\u0010\u0000"+ + "\u0000\u16fa\u04bc\u0001\u0000\u0000\u0000\u16fb\u16fc\u0007\r\u0000\u0000"+ + "\u16fc\u16fd\u0007\n\u0000\u0000\u16fd\u16fe\u0007\u0017\u0000\u0000\u16fe"+ + "\u16ff\u0007\n\u0000\u0000\u16ff\u1700\u0007\u001a\u0000\u0000\u1700\u1701"+ + "\u0007\u0018\u0000\u0000\u1701\u1702\u0005_\u0000\u0000\u1702\u1703\u0007"+ + "\u0011\u0000\u0000\u1703\u1704\u0007\u0007\u0000\u0000\u1704\u1705\u0007"+ + "\t\u0000\u0000\u1705\u1706\u0007\u0010\u0000\u0000\u1706\u1707\u0007\r"+ + "\u0000\u0000\u1707\u04be\u0001\u0000\u0000\u0000\u1708\u1709\u0007\r\u0000"+ + "\u0000\u1709\u170a\u0007\n\u0000\u0000\u170a\u170b\u0007\u0017\u0000\u0000"+ + "\u170b\u170c\u0007\n\u0000\u0000\u170c\u170d\u0007\u001a\u0000\u0000\u170d"+ + "\u170e\u0007\u0018\u0000\u0000\u170e\u170f\u0005_\u0000\u0000\u170f\u1710"+ + "\u0007\u0006\u0000\u0000\u1710\u1711\u0007\u0011\u0000\u0000\u1711\u1712"+ + "\u0007\u0015\u0000\u0000\u1712\u1713\u0007\n\u0000\u0000\u1713\u04c0\u0001"+ + "\u0000\u0000\u0000\u1714\u1715\u0007\r\u0000\u0000\u1715\u1716\u0007\n"+ + "\u0000\u0000\u1716\u1717\u0007\u0017\u0000\u0000\u1717\u1718\u0007\n\u0000"+ + "\u0000\u1718\u1719\u0007\u001a\u0000\u0000\u1719\u171a\u0007\u0018\u0000"+ + "\u0000\u171a\u171b\u0005_\u0000\u0000\u171b\u171c\u0007\u000f\u0000\u0000"+ + "\u171c\u171d\u0007\u0005\u0000\u0000\u171d\u171e\u0007\u0010\u0000\u0000"+ + "\u171e\u171f\u0007\u000e\u0000\u0000\u171f\u1720\u0007\u0014\u0000\u0000"+ + "\u1720\u04c2\u0001\u0000\u0000\u0000\u1721\u1722\u0007\r\u0000\u0000\u1722"+ + "\u1723\u0007\n\u0000\u0000\u1723\u1724\u0007\u0017\u0000\u0000\u1724\u1725"+ + "\u0007\n\u0000\u0000\u1725\u1726\u0007\u001a\u0000\u0000\u1726\u1727\u0007"+ + "\u0018\u0000\u0000\u1727\u1728\u0005_\u0000\u0000\u1728\u1729\u0007\u000f"+ + "\u0000\u0000\u1729\u172a\u0007\u0005\u0000\u0000\u172a\u172b\u0007\u0010"+ + "\u0000\u0000\u172b\u172c\u0007\u000e\u0000\u0000\u172c\u172d\u0007\u0014"+ + "\u0000\u0000\u172d\u172e\u0007\n\u0000\u0000\u172e\u172f\u0007\t\u0000"+ + "\u0000\u172f\u04c4\u0001\u0000\u0000\u0000\u1730\u1731\u0007\r\u0000\u0000"+ + "\u1731\u1732\u0007\n\u0000\u0000\u1732\u1733\u0007\u0017\u0000\u0000\u1733"+ + "\u1734\u0007\n\u0000\u0000\u1734\u1735\u0007\u001a\u0000\u0000\u1735\u1736"+ + "\u0007\u0018\u0000\u0000\u1736\u1737\u0005_\u0000\u0000\u1737\u1738\u0007"+ + "\r\u0000\u0000\u1738\u1739\u0007\n\u0000\u0000\u1739\u173a\u0007\u0018"+ + "\u0000\u0000\u173a\u173b\u0007\u0006\u0000\u0000\u173b\u173c\u0007\u0005"+ + "\u0000\u0000\u173c\u173d\u0007\u000e\u0000\u0000\u173d\u173e\u0007\n\u0000"+ + "\u0000\u173e\u04c6\u0001\u0000\u0000\u0000\u173f\u1740\u0007\r\u0000\u0000"+ + "\u1740\u1741\u0007\n\u0000\u0000\u1741\u1742\u0007\u0017\u0000\u0000\u1742"+ + "\u1743\u0007\n\u0000\u0000\u1743\u1744\u0007\u001a\u0000\u0000\u1744\u1745"+ + "\u0007\u0018\u0000\u0000\u1745\u1746\u0005_\u0000\u0000\u1746\u1747\u0007"+ + "\t\u0000\u0000\u1747\u1748\u0007\u0018\u0000\u0000\u1748\u1749\u0007\u0006"+ + "\u0000\u0000\u1749\u174a\u0007\u0011\u0000\u0000\u174a\u174b\u0007\u0010"+ + "\u0000\u0000\u174b\u174c\u0005_\u0000\u0000\u174c\u174d\u0007\u0010\u0000"+ + "\u0000\u174d\u174e\u0007\u0013\u0000\u0000\u174e\u174f\u0005_\u0000\u0000"+ + "\u174f\u1750\u0007\u0005\u0000\u0000\u1750\u1751\u0007\r\u0000\u0000\u1751"+ + "\u1752\u0007\r\u0000\u0000\u1752\u1753\u0007\u0005\u0000\u0000\u1753\u1754"+ + "\u0007\b\u0000\u0000\u1754\u04c8\u0001\u0000\u0000\u0000\u1755\u1756\u0007"+ + "\r\u0000\u0000\u1756\u1757\u0007\n\u0000\u0000\u1757\u1758\u0007\u0017"+ + "\u0000\u0000\u1758\u1759\u0007\n\u0000\u0000\u1759\u175a\u0007\u001a\u0000"+ + "\u0000\u175a\u175b\u0007\u0018\u0000\u0000\u175b\u175c\u0005_\u0000\u0000"+ + "\u175c\u175d\u0007\t\u0000\u0000\u175d\u175e\u0007\u0018\u0000\u0000\u175e"+ + "\u175f\u0007\u0006\u0000\u0000\u175f\u1760\u0007\u0011\u0000\u0000\u1760"+ + "\u1761\u0007\u0010\u0000\u0000\u1761\u1762\u0005_\u0000\u0000\u1762\u1763"+ + "\u0007\u0010\u0000\u0000\u1763\u1764\u0007\u0013\u0000\u0000\u1764\u1765"+ + "\u0005_\u0000\u0000\u1765\u1766\u0007\u0010\u0000\u0000\u1766\u1767\u0007"+ + "\u0005\u0000\u0000\u1767\u1768\u0007\u0012\u0000\u0000\u1768\u1769\u0007"+ + "\u0006\u0000\u0000\u1769\u176a\u0007\n\u0000\u0000\u176a\u04ca\u0001\u0000"+ + "\u0000\u0000\u176b\u176c\u0007\r\u0000\u0000\u176c\u176d\u0007\n\u0000"+ + "\u0000\u176d\u176e\u0007\u0017\u0000\u0000\u176e\u176f\u0007\n\u0000\u0000"+ + "\u176f\u1770\u0007\u001a\u0000\u0000\u1770\u1771\u0007\u0018\u0000\u0000"+ + "\u1771\u1772\u0005_\u0000\u0000\u1772\u1773\u0007\t\u0000\u0000\u1773"+ + "\u1774\u0007\u0016\u0000\u0000\u1774\u1775\u0007\u0012\u0000\u0000\u1775"+ + "\u1776\u0007\t\u0000\u0000\u1776\u1777\u0007\u0010\u0000\u0000\u1777\u1778"+ + "\u0007\r\u0000\u0000\u1778\u04cc\u0001\u0000\u0000\u0000\u1779\u177a\u0007"+ + "\r\u0000\u0000\u177a\u177b\u0007\n\u0000\u0000\u177b\u177c\u0007\u0018"+ + "\u0000\u0000\u177c\u177d\u0007\n\u0000\u0000\u177d\u177e\u0007\u0005\u0000"+ + "\u0000\u177e\u177f\u0007\u0010\u0000\u0000\u177f\u04ce\u0001\u0000\u0000"+ + "\u0000\u1780\u1781\u0007\r\u0000\u0000\u1781\u1782\u0007\u0018\u0000\u0000"+ + "\u1782\u1783\u0007\u0005\u0000\u0000\u1783\u1784\u0007\f\u0000\u0000\u1784"+ + "\u04d0\u0001\u0000\u0000\u0000\u1785\u1786\u0007\r\u0000\u0000\u1786\u1787"+ + "\u0007\u0010\u0000\u0000\u1787\u1788\u0007\r\u0000\u0000\u1788\u1789\u0007"+ + "\u0011\u0000\u0000\u1789\u178a\u0007\u000f\u0000\u0000\u178a\u04d2\u0001"+ + "\u0000\u0000\u0000\u178b\u178c\u0007\t\u0000\u0000\u178c\u178d\u0007\u0018"+ + "\u0000\u0000\u178d\u178e\u0007\u0006\u0000\u0000\u178e\u178f\u0007\u0011"+ + "\u0000\u0000\u178f\u1790\u0007\u0010\u0000\u0000\u1790\u1791\u0005_\u0000"+ + "\u0000\u1791\u1792\u0007\u0018\u0000\u0000\u1792\u1793\u0007\u0005\u0000"+ + "\u0000\u1793\u1794\u0007\r\u0000\u0000\u1794\u1795\u0007\u0010\u0000\u0000"+ + "\u1795\u04d4\u0001\u0000\u0000\u0000\u1796\u1797\u0007\t\u0000\u0000\u1797"+ + "\u1798\u0007\u0010\u0000\u0000\u1798\u1799\u0007\u0005\u0000\u0000\u1799"+ + "\u179a\u0007\r\u0000\u0000\u179a\u179b\u0007\u0010\u0000\u0000\u179b\u179c"+ + "\u0007\t\u0000\u0000\u179c\u179d\u0005_\u0000\u0000\u179d\u179e\u0007"+ + "\u001c\u0000\u0000\u179e\u179f\u0007\u0011\u0000\u0000\u179f\u17a0\u0007"+ + "\u0010\u0000\u0000\u17a0\u17a1\u0007\u0014\u0000\u0000\u17a1\u04d6\u0001"+ + "\u0000\u0000\u0000\u17a2\u17a3\u0007\t\u0000\u0000\u17a3\u17a4\u0007\u0010"+ + "\u0000\u0000\u17a4\u17a5\u0007\r\u0000\u0000\u17a5\u17a6\u0007\u0011\u0000"+ + "\u0000\u17a6\u17a7\u0007\u0007\u0000\u0000\u17a7\u17a8\u0007\u0017\u0000"+ + "\u0000\u17a8\u17a9\u0005_\u0000\u0000\u17a9\u17aa\u0007\u0010\u0000\u0000"+ + "\u17aa\u17ab\u0007\u0013\u0000\u0000\u17ab\u17ac\u0005_\u0000\u0000\u17ac"+ + "\u17ad\u0007\u0005\u0000\u0000\u17ad\u17ae\u0007\r\u0000\u0000\u17ae\u17af"+ + "\u0007\r\u0000\u0000\u17af\u17b0\u0007\u0005\u0000\u0000\u17b0\u17b1\u0007"+ + "\b\u0000\u0000\u17b1\u04d8\u0001\u0000\u0000\u0000\u17b2\u17b3\u0007\t"+ + "\u0000\u0000\u17b3\u17b4\u0007\u0010\u0000\u0000\u17b4\u17b5\u0007\r\u0000"+ + "\u0000\u17b5\u17b6\u0007\u0011\u0000\u0000\u17b6\u17b7\u0007\u0007\u0000"+ + "\u0000\u17b7\u17b8\u0007\u0017\u0000\u0000\u17b8\u17b9\u0005_\u0000\u0000"+ + "\u17b9\u17ba\u0007\u0010\u0000\u0000\u17ba\u17bb\u0007\u0013\u0000\u0000"+ + "\u17bb\u17bc\u0005_\u0000\u0000\u17bc\u17bd\u0007\u0010\u0000\u0000\u17bd"+ + "\u17be\u0007\u0005\u0000\u0000\u17be\u17bf\u0007\u0012\u0000\u0000\u17bf"+ + "\u17c0\u0007\u0006\u0000\u0000\u17c0\u17c1\u0007\n\u0000\u0000\u17c1\u04da"+ + "\u0001\u0000\u0000\u0000\u17c2\u17c3\u0007\t\u0000\u0000\u17c3\u17c4\u0007"+ + "\u0010\u0000\u0000\u17c4\u17c5\u0007\r\u0000\u0000\u17c5\u17c6\u0007\u0018"+ + "\u0000\u0000\u17c6\u17c7\u0007\u0013\u0000\u0000\u17c7\u17c8\u0007\t\u0000"+ + "\u0000\u17c8\u04dc\u0001\u0000\u0000\u0000\u17c9\u17ca\u0007\t\u0000\u0000"+ + "\u17ca\u17cb\u0007\u0016\u0000\u0000\u17cb\u17cc\u0007\u0012\u0000\u0000"+ + "\u17cc\u17cd\u0007\t\u0000\u0000\u17cd\u17ce\u0007\u0010\u0000\u0000\u17ce"+ + "\u17cf\u0007\r\u0000\u0000\u17cf\u04de\u0001\u0000\u0000\u0000\u17d0\u17d1"+ + "\u0007\u0010\u0000\u0000\u17d1\u17d2\u0007\u0013\u0000\u0000\u17d2\u17d3"+ + "\u0005_\u0000\u0000\u17d3\u17d4\u0007\u0005\u0000\u0000\u17d4\u17d5\u0007"+ + "\t\u0000\u0000\u17d5\u17d6\u0007\u000e\u0000\u0000\u17d6\u17d7\u0007\u0011"+ + "\u0000\u0000\u17d7\u17d8\u0007\u0011\u0000\u0000\u17d8\u04e0\u0001\u0000"+ + "\u0000\u0000\u17d9\u17da\u0007\u0010\u0000\u0000\u17da\u17db\u0007\u0013"+ + "\u0000\u0000\u17db\u17dc\u0005_\u0000\u0000\u17dc\u17dd\u0007\u0014\u0000"+ + "\u0000\u17dd\u17de\u0007\n\u0000\u0000\u17de\u17df\u0007\u001a\u0000\u0000"+ + "\u17df\u04e2\u0001\u0000\u0000\u0000\u17e0\u17e1\u0007\u0010\u0000\u0000"+ + "\u17e1\u17e2\u0007\r\u0000\u0000\u17e2\u17e3\u0007\u0005\u0000\u0000\u17e3"+ + "\u17e4\u0007\u0007\u0000\u0000\u17e4\u17e5\u0007\t\u0000\u0000\u17e5\u17e6"+ + "\u0007\u0006\u0000\u0000\u17e6\u17e7\u0007\u0005\u0000\u0000\u17e7\u17e8"+ + "\u0007\u0010\u0000\u0000\u17e8\u17e9\u0007\n\u0000\u0000\u17e9\u04e4\u0001"+ + "\u0000\u0000\u0000\u17ea\u17eb\u0007\u0016\u0000\u0000\u17eb\u17ec\u0007"+ + "\u0007\u0000\u0000\u17ec\u17ed\u0007\u0011\u0000\u0000\u17ed\u17ee\u0007"+ + "\t\u0000\u0000\u17ee\u17ef\u0007\u0010\u0000\u0000\u17ef\u17f0\u0007\r"+ + "\u0000\u0000\u17f0\u04e6\u0001\u0000\u0000\u0000\u17f1\u17f2\u0007\u0005"+ + "\u0000\u0000\u17f2\u17f3\u0007\u0017\u0000\u0000\u17f3\u17f4\u0007\n\u0000"+ + "\u0000\u17f4\u04e8\u0001\u0000\u0000\u0000\u17f5\u17f6\u0007\u000e\u0000"+ + "\u0000\u17f6\u17f7\u0007\u0006\u0000\u0000\u17f7\u17f8\u0007\u0013\u0000"+ + "\u0000\u17f8\u17f9\u0007\u000e\u0000\u0000\u17f9\u17fa\u0007\u0015\u0000"+ + "\u0000\u17fa\u17fb\u0005_\u0000\u0000\u17fb\u17fc\u0007\u0010\u0000\u0000"+ + "\u17fc\u17fd\u0007\u0011\u0000\u0000\u17fd\u17fe\u0007\u000f\u0000\u0000"+ + "\u17fe\u17ff\u0007\n\u0000\u0000\u17ff\u1800\u0007\t\u0000\u0000\u1800"+ + "\u1801\u0007\u0010\u0000\u0000\u1801\u1802\u0007\u0005\u0000\u0000\u1802"+ + "\u1803\u0007\u000f\u0000\u0000\u1803\u1804\u0007\u0018\u0000\u0000\u1804"+ + "\u04ea\u0001\u0000\u0000\u0000\u1805\u1806\u0007\f\u0000\u0000\u1806\u1807"+ + "\u0007\u0005\u0000\u0000\u1807\u1808\u0007\u0010\u0000\u0000\u1808\u1809"+ + "\u0007\n\u0000\u0000\u1809\u180a\u0005_\u0000\u0000\u180a\u180b\u0007"+ + "\u0012\u0000\u0000\u180b\u180c\u0007\u0011\u0000\u0000\u180c\u180d\u0007"+ + "\u0007\u0000\u0000\u180d\u04ec\u0001\u0000\u0000\u0000\u180e\u180f\u0007"+ + "\f\u0000\u0000\u180f\u1810\u0007\u0005\u0000\u0000\u1810\u1811\u0007\u0010"+ + "\u0000\u0000\u1811\u1812\u0007\n\u0000\u0000\u1812\u1813\u0005_\u0000"+ + "\u0000\u1813\u1814\u0007\u0018\u0000\u0000\u1814\u1815\u0007\u0005\u0000"+ + "\u0000\u1815\u1816\u0007\r\u0000\u0000\u1816\u1817\u0007\u0010\u0000\u0000"+ + "\u1817\u04ee\u0001\u0000\u0000\u0000\u1818\u1819\u0007\f\u0000\u0000\u1819"+ + "\u181a\u0007\u0005\u0000\u0000\u181a\u181b\u0007\u0010\u0000\u0000\u181b"+ + "\u181c\u0007\n\u0000\u0000\u181c\u181d\u0005_\u0000\u0000\u181d\u181e"+ + "\u0007\u0010\u0000\u0000\u181e\u181f\u0007\r\u0000\u0000\u181f\u1820\u0007"+ + "\u0016\u0000\u0000\u1820\u1821\u0007\u0007\u0000\u0000\u1821\u1822\u0007"+ + "\u000e\u0000\u0000\u1822\u04f0\u0001\u0000\u0000\u0000\u1823\u1824\u0007"+ + "\u0011\u0000\u0000\u1824\u1825\u0007\t\u0000\u0000\u1825\u1826\u0007\u0019"+ + "\u0000\u0000\u1826\u1827\u0007\u0011\u0000\u0000\u1827\u1828\u0007\u0007"+ + "\u0000\u0000\u1828\u1829\u0007\u0011\u0000\u0000\u1829\u182a\u0007\u0010"+ + "\u0000\u0000\u182a\u182b\u0007\n\u0000\u0000\u182b\u04f2\u0001\u0000\u0000"+ + "\u0000\u182c\u182d\u0007\u001e\u0000\u0000\u182d\u182e\u0007\u0016\u0000"+ + "\u0000\u182e\u182f\u0007\t\u0000\u0000\u182f\u1830\u0007\u0010\u0000\u0000"+ + "\u1830\u1831\u0007\u0011\u0000\u0000\u1831\u1832\u0007\u0019\u0000\u0000"+ + "\u1832\u1833\u0007\b\u0000\u0000\u1833\u1834\u0005_\u0000\u0000\u1834"+ + "\u1835\u0007\f\u0000\u0000\u1835\u1836\u0007\u0005\u0000\u0000\u1836\u1837"+ + "\u0007\b\u0000\u0000\u1837\u1838\u0007\t\u0000\u0000\u1838\u04f4\u0001"+ + "\u0000\u0000\u0000\u1839\u183a\u0007\u001e\u0000\u0000\u183a\u183b\u0007"+ + "\u0016\u0000\u0000\u183b\u183c\u0007\t\u0000\u0000\u183c\u183d\u0007\u0010"+ + "\u0000\u0000\u183d\u183e\u0007\u0011\u0000\u0000\u183e\u183f\u0007\u0019"+ + "\u0000\u0000\u183f\u1840\u0007\b\u0000\u0000\u1840\u1841\u0005_\u0000"+ + "\u0000\u1841\u1842\u0007\u0014\u0000\u0000\u1842\u1843\u0007\u0013\u0000"+ + "\u0000\u1843\u1844\u0007\u0016\u0000\u0000\u1844\u1845\u0007\r\u0000\u0000"+ + "\u1845\u1846\u0007\t\u0000\u0000\u1846\u04f6\u0001\u0000\u0000\u0000\u1847"+ + "\u1848\u0007\u001e\u0000\u0000\u1848\u1849\u0007\u0016\u0000\u0000\u1849"+ + "\u184a\u0007\t\u0000\u0000\u184a\u184b\u0007\u0010\u0000\u0000\u184b\u184c"+ + "\u0007\u0011\u0000\u0000\u184c\u184d\u0007\u0019\u0000\u0000\u184d\u184e"+ + "\u0007\b\u0000\u0000\u184e\u184f\u0005_\u0000\u0000\u184f\u1850\u0007"+ + "\u0011\u0000\u0000\u1850\u1851\u0007\u0007\u0000\u0000\u1851\u1852\u0007"+ + "\u0010\u0000\u0000\u1852\u1853\u0007\n\u0000\u0000\u1853\u1854\u0007\r"+ + "\u0000\u0000\u1854\u1855\u0007\u001b\u0000\u0000\u1855\u1856\u0007\u0005"+ + "\u0000\u0000\u1856\u1857\u0007\u0006\u0000\u0000\u1857\u04f8\u0001\u0000"+ + "\u0000\u0000\u1858\u1859\u0007\u000f\u0000\u0000\u1859\u185a\u0007\u0005"+ + "\u0000\u0000\u185a\u185b\u0007\u0015\u0000\u0000\u185b\u185c\u0007\n\u0000"+ + "\u0000\u185c\u185d\u0005_\u0000\u0000\u185d\u185e\u0007\f\u0000\u0000"+ + "\u185e\u185f\u0007\u0005\u0000\u0000\u185f\u1860\u0007\u0010\u0000\u0000"+ + "\u1860\u1861\u0007\n\u0000\u0000\u1861\u04fa\u0001\u0000\u0000\u0000\u1862"+ + "\u1863\u0007\u000f\u0000\u0000\u1863\u1864\u0007\u0005\u0000\u0000\u1864"+ + "\u1865\u0007\u0015\u0000\u0000\u1865\u1866\u0007\n\u0000\u0000\u1866\u1867"+ + "\u0005_\u0000\u0000\u1867\u1868\u0007\u0011\u0000\u0000\u1868\u1869\u0007"+ + "\u0007\u0000\u0000\u1869\u186a\u0007\u0010\u0000\u0000\u186a\u186b\u0007"+ + "\n\u0000\u0000\u186b\u186c\u0007\r\u0000\u0000\u186c\u186d\u0007\u001b"+ + "\u0000\u0000\u186d\u186e\u0007\u0005\u0000\u0000\u186e\u186f\u0007\u0006"+ + "\u0000\u0000\u186f\u04fc\u0001\u0000\u0000\u0000\u1870\u1871\u0007\u000f"+ + "\u0000\u0000\u1871\u1872\u0007\u0005\u0000\u0000\u1872\u1873\u0007\u0015"+ + "\u0000\u0000\u1873\u1874\u0007\n\u0000\u0000\u1874\u1875\u0005_\u0000"+ + "\u0000\u1875\u1876\u0007\u0010\u0000\u0000\u1876\u1877\u0007\u0011\u0000"+ + "\u0000\u1877\u1878\u0007\u000f\u0000\u0000\u1878\u1879\u0007\n\u0000\u0000"+ + "\u1879\u04fe\u0001\u0000\u0000\u0000\u187a\u187b\u0007\u000f\u0000\u0000"+ + "\u187b\u187c\u0007\u0005\u0000\u0000\u187c\u187d\u0007\u0015\u0000\u0000"+ + "\u187d\u187e\u0007\n\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\u0500\u0001\u0000\u0000\u0000\u1889\u188a\u0007"+ + "\u000f\u0000\u0000\u188a\u188b\u0007\u0005\u0000\u0000\u188b\u188c\u0007"+ + "\u0015\u0000\u0000\u188c\u188d\u0007\n\u0000\u0000\u188d\u188e\u0005_"+ + "\u0000\u0000\u188e\u188f\u0007\u0010\u0000\u0000\u188f\u1890\u0007\u0011"+ + "\u0000\u0000\u1890\u1891\u0007\u000f\u0000\u0000\u1891\u1892\u0007\n\u0000"+ + "\u0000\u1892\u1893\u0007\t\u0000\u0000\u1893\u1894\u0007\u0010\u0000\u0000"+ + "\u1894\u1895\u0007\u0005\u0000\u0000\u1895\u1896\u0007\u000f\u0000\u0000"+ + "\u1896\u1897\u0007\u0018\u0000\u0000\u1897\u1898\u0007\u0010\u0000\u0000"+ + "\u1898\u1899\u0007\u000b\u0000\u0000\u1899\u0502\u0001\u0000\u0000\u0000"+ + "\u189a\u189b\u0007\u0007\u0000\u0000\u189b\u189c\u0007\u0013\u0000\u0000"+ + "\u189c\u189d\u0007\u001c\u0000\u0000\u189d\u0504\u0001\u0000\u0000\u0000"+ + "\u189e\u189f\u0007\t\u0000\u0000\u189f\u18a0\u0007\u0010\u0000\u0000\u18a0"+ + "\u18a1\u0007\u0005\u0000\u0000\u18a1\u18a2\u0007\u0010\u0000\u0000\u18a2"+ + "\u18a3\u0007\n\u0000\u0000\u18a3\u18a4\u0007\u000f\u0000\u0000\u18a4\u18a5"+ + "\u0007\n\u0000\u0000\u18a5\u18a6\u0007\u0007\u0000\u0000\u18a6\u18a7\u0007"+ + "\u0010\u0000\u0000\u18a7\u18a8\u0005_\u0000\u0000\u18a8\u18a9\u0007\u0010"+ + "\u0000\u0000\u18a9\u18aa\u0007\u0011\u0000\u0000\u18aa\u18ab\u0007\u000f"+ + "\u0000\u0000\u18ab\u18ac\u0007\n\u0000\u0000\u18ac\u18ad\u0007\t\u0000"+ + "\u0000\u18ad\u18ae\u0007\u0010\u0000\u0000\u18ae\u18af\u0007\u0005\u0000"+ + "\u0000\u18af\u18b0\u0007\u000f\u0000\u0000\u18b0\u18b1\u0007\u0018\u0000"+ + "\u0000\u18b1\u0506\u0001\u0000\u0000\u0000\u18b2\u18b3\u0007\u0010\u0000"+ + "\u0000\u18b3\u18b4\u0007\u0011\u0000\u0000\u18b4\u18b5\u0007\u000f\u0000"+ + "\u0000\u18b5\u18b6\u0007\n\u0000\u0000\u18b6\u18b7\u0007\u0013\u0000\u0000"+ + "\u18b7\u18b8\u0007\u0019\u0000\u0000\u18b8\u18b9\u0007\f\u0000\u0000\u18b9"+ + "\u18ba\u0007\u0005\u0000\u0000\u18ba\u18bb\u0007\b\u0000\u0000\u18bb\u0508"+ + "\u0001\u0000\u0000\u0000\u18bc\u18bd\u0007\u0010\u0000\u0000\u18bd\u18be"+ + "\u0007\r\u0000\u0000\u18be\u18bf\u0007\u0005\u0000\u0000\u18bf\u18c0\u0007"+ + "\u0007\u0000\u0000\u18c0\u18c1\u0007\t\u0000\u0000\u18c1\u18c2\u0007\u0005"+ + "\u0000\u0000\u18c2\u18c3\u0007\u000e\u0000\u0000\u18c3\u18c4\u0007\u0010"+ + "\u0000\u0000\u18c4\u18c5\u0007\u0011\u0000\u0000\u18c5\u18c6\u0007\u0013"+ + "\u0000\u0000\u18c6\u18c7\u0007\u0007\u0000\u0000\u18c7\u18c8\u0005_\u0000"+ + "\u0000\u18c8\u18c9\u0007\u0010\u0000\u0000\u18c9\u18ca\u0007\u0011\u0000"+ + "\u0000\u18ca\u18cb\u0007\u000f\u0000\u0000\u18cb\u18cc\u0007\n\u0000\u0000"+ + "\u18cc\u18cd\u0007\t\u0000\u0000\u18cd\u18ce\u0007\u0010\u0000\u0000\u18ce"+ + "\u18cf\u0007\u0005\u0000\u0000\u18cf\u18d0\u0007\u000f\u0000\u0000\u18d0"+ + "\u18d1\u0007\u0018\u0000\u0000\u18d1\u050a\u0001\u0000\u0000\u0000\u18d2"+ + "\u18d3\u0007\u0010\u0000\u0000\u18d3\u18d4\u0007\u0013\u0000\u0000\u18d4"+ + "\u18d5\u0005_\u0000\u0000\u18d5\u18d6\u0007\u0010\u0000\u0000\u18d6\u18d7"+ + "\u0007\u0011\u0000\u0000\u18d7\u18d8\u0007\u000f\u0000\u0000\u18d8\u18d9"+ + "\u0007\n\u0000\u0000\u18d9\u18da\u0007\t\u0000\u0000\u18da\u18db\u0007"+ + "\u0010\u0000\u0000\u18db\u18dc\u0007\u0005\u0000\u0000\u18dc\u18dd\u0007"+ + "\u000f\u0000\u0000\u18dd\u18de\u0007\u0018\u0000\u0000\u18de\u050c\u0001"+ + "\u0000\u0000\u0000\u18df\u18e0\u0007\u0010\u0000\u0000\u18e0\u18e1\u0007"+ + "\u0013\u0000\u0000\u18e1\u18e2\u0005_\u0000\u0000\u18e2\u18e3\u0007\u000e"+ + "\u0000\u0000\u18e3\u18e4\u0007\u0014\u0000\u0000\u18e4\u18e5\u0007\u0005"+ + "\u0000\u0000\u18e5\u18e6\u0007\r\u0000\u0000\u18e6\u050e\u0001\u0000\u0000"+ + "\u0000\u18e7\u18e8\u0007\u0010\u0000\u0000\u18e8\u18e9\u0007\u0013\u0000"+ + "\u0000\u18e9\u18ea\u0005_\u0000\u0000\u18ea\u18eb\u0007\f\u0000\u0000"+ + "\u18eb\u18ec\u0007\u0005\u0000\u0000\u18ec\u18ed\u0007\u0010\u0000\u0000"+ + "\u18ed\u18ee\u0007\n\u0000\u0000\u18ee\u0510\u0001\u0000\u0000\u0000\u18ef"+ + "\u18f0\u0007\u0010\u0000\u0000\u18f0\u18f1\u0007\u0013\u0000\u0000\u18f1"+ + "\u18f2\u0005_\u0000\u0000\u18f2\u18f3\u0007\u0007\u0000\u0000\u18f3\u18f4"+ + "\u0007\u0016\u0000\u0000\u18f4\u18f5\u0007\u000f\u0000\u0000\u18f5\u18f6"+ + "\u0007\u0012\u0000\u0000\u18f6\u18f7\u0007\n\u0000\u0000\u18f7\u18f8\u0007"+ + "\r\u0000\u0000\u18f8\u0512\u0001\u0000\u0000\u0000\u18f9\u18fd\u0003\u0515"+ + "\u0288\u0000\u18fa\u18fc\u0003\u0517\u0289\u0000\u18fb\u18fa\u0001\u0000"+ + "\u0000\u0000\u18fc\u18ff\u0001\u0000\u0000\u0000\u18fd\u18fb\u0001\u0000"+ + "\u0000\u0000\u18fd\u18fe\u0001\u0000\u0000\u0000\u18fe\u0514\u0001\u0000"+ + "\u0000\u0000\u18ff\u18fd\u0001\u0000\u0000\u0000\u1900\u1907\u0007\u001f"+ + "\u0000\u0000\u1901\u1902\u0007 \u0000\u0000\u1902\u1907\u0004\u0288\u0006"+ + "\u0000\u1903\u1904\u0007!\u0000\u0000\u1904\u1905\u0007\"\u0000\u0000"+ + "\u1905\u1907\u0004\u0288\u0007\u0000\u1906\u1900\u0001\u0000\u0000\u0000"+ + "\u1906\u1901\u0001\u0000\u0000\u0000\u1906\u1903\u0001\u0000\u0000\u0000"+ + "\u1907\u0516\u0001\u0000\u0000\u0000\u1908\u190b\u0003\u0519\u028a\u0000"+ + "\u1909\u190b\u0005$\u0000\u0000\u190a\u1908\u0001\u0000\u0000\u0000\u190a"+ + "\u1909\u0001\u0000\u0000\u0000\u190b\u0518\u0001\u0000\u0000\u0000\u190c"+ + "\u190f\u0003\u0515\u0288\u0000\u190d\u190f\u0007\u0000\u0000\u0000\u190e"+ + "\u190c\u0001\u0000\u0000\u0000\u190e\u190d\u0001\u0000\u0000\u0000\u190f"+ + "\u051a\u0001\u0000\u0000\u0000\u1910\u1911\u0003\u051d\u028c\u0000\u1911"+ + "\u1912\u0005\"\u0000\u0000\u1912\u051c\u0001\u0000\u0000\u0000\u1913\u1919"+ + "\u0005\"\u0000\u0000\u1914\u1915\u0005\"\u0000\u0000\u1915\u1918\u0005"+ + "\"\u0000\u0000\u1916\u1918\b#\u0000\u0000\u1917\u1914\u0001\u0000\u0000"+ + "\u0000\u1917\u1916\u0001\u0000\u0000\u0000\u1918\u191b\u0001\u0000\u0000"+ + "\u0000\u1919\u1917\u0001\u0000\u0000\u0000\u1919\u191a\u0001\u0000\u0000"+ + "\u0000\u191a\u051e\u0001\u0000\u0000\u0000\u191b\u1919\u0001\u0000\u0000"+ + "\u0000\u191c\u191d\u0003\u0521\u028e\u0000\u191d\u191e\u0005\"\u0000\u0000"+ + "\u191e\u0520\u0001\u0000\u0000\u0000\u191f\u1925\u0005\"\u0000\u0000\u1920"+ + "\u1921\u0005\"\u0000\u0000\u1921\u1924\u0005\"\u0000\u0000\u1922\u1924"+ + "\b$\u0000\u0000\u1923\u1920\u0001\u0000\u0000\u0000\u1923\u1922\u0001"+ + "\u0000\u0000\u0000\u1924\u1927\u0001\u0000\u0000\u0000\u1925\u1923\u0001"+ + "\u0000\u0000\u0000\u1925\u1926\u0001\u0000\u0000\u0000\u1926\u0522\u0001"+ + "\u0000\u0000\u0000\u1927\u1925\u0001\u0000\u0000\u0000\u1928\u1929\u0007"+ + "\u0016\u0000\u0000\u1929\u192a\u0005&\u0000\u0000\u192a\u192b\u0003\u051b"+ + "\u028b\u0000\u192b\u0524\u0001\u0000\u0000\u0000\u192c\u192d\u0007\u0016"+ + "\u0000\u0000\u192d\u192e\u0005&\u0000\u0000\u192e\u192f\u0003\u051d\u028c"+ + "\u0000\u192f\u0526\u0001\u0000\u0000\u0000\u1930\u1931\u0007\u0016\u0000"+ + "\u0000\u1931\u1932\u0005&\u0000\u0000\u1932\u1933\u0003\u051f\u028d\u0000"+ + "\u1933\u0528\u0001\u0000\u0000\u0000\u1934\u1935\u0007\u0016\u0000\u0000"+ + "\u1935\u1936\u0005&\u0000\u0000\u1936\u1937\u0003\u0521\u028e\u0000\u1937"+ + "\u052a\u0001\u0000\u0000\u0000\u1938\u1939\u0003\u052d\u0294\u0000\u1939"+ + "\u193a\u0005\'\u0000\u0000\u193a\u052c\u0001\u0000\u0000\u0000\u193b\u1941"+ + "\u0005\'\u0000\u0000\u193c\u193d\u0005\'\u0000\u0000\u193d\u1940\u0005"+ + "\'\u0000\u0000\u193e\u1940\b%\u0000\u0000\u193f\u193c\u0001\u0000\u0000"+ + "\u0000\u193f\u193e\u0001\u0000\u0000\u0000\u1940\u1943\u0001\u0000\u0000"+ + "\u0000\u1941\u193f\u0001\u0000\u0000\u0000\u1941\u1942\u0001\u0000\u0000"+ + "\u0000\u1942\u052e\u0001\u0000\u0000\u0000\u1943\u1941\u0001\u0000\u0000"+ + "\u0000\u1944\u1945\u0007\n\u0000\u0000\u1945\u1946\u0005\'\u0000\u0000"+ + "\u1946\u1947\u0001\u0000\u0000\u0000\u1947\u1948\u0006\u0295\u0002\u0000"+ + "\u1948\u1949\u0006\u0295\u0003\u0000\u1949\u0530\u0001\u0000\u0000\u0000"+ + "\u194a\u194b\u0003\u0533\u0297\u0000\u194b\u194c\u0005\'\u0000\u0000\u194c"+ + "\u0532\u0001\u0000\u0000\u0000\u194d\u194e\u0007\u0016\u0000\u0000\u194e"+ + "\u194f\u0005&\u0000\u0000\u194f\u1950\u0003\u052d\u0294\u0000\u1950\u0534"+ + "\u0001\u0000\u0000\u0000\u1951\u1953\u0005$\u0000\u0000\u1952\u1954\u0003"+ + "\u0537\u0299\u0000\u1953\u1952\u0001\u0000\u0000\u0000\u1953\u1954\u0001"+ + "\u0000\u0000\u0000\u1954\u1955\u0001\u0000\u0000\u0000\u1955\u1956\u0005"+ + "$\u0000\u0000\u1956\u1957\u0006\u0298\u0004\u0000\u1957\u1958\u0001\u0000"+ + "\u0000\u0000\u1958\u1959\u0006\u0298\u0005\u0000\u1959\u0536\u0001\u0000"+ + "\u0000\u0000\u195a\u195e\u0003\u0515\u0288\u0000\u195b\u195d\u0003\u0519"+ + "\u028a\u0000\u195c\u195b\u0001\u0000\u0000\u0000\u195d\u1960\u0001\u0000"+ + "\u0000\u0000\u195e\u195c\u0001\u0000\u0000\u0000\u195e\u195f\u0001\u0000"+ + "\u0000\u0000\u195f\u0538\u0001\u0000\u0000\u0000\u1960\u195e\u0001\u0000"+ + "\u0000\u0000\u1961\u1962\u0003\u053b\u029b\u0000\u1962\u1963\u0005\'\u0000"+ + "\u0000\u1963\u053a\u0001\u0000\u0000\u0000\u1964\u1965\u0007\u0012\u0000"+ + "\u0000\u1965\u1969\u0005\'\u0000\u0000\u1966\u1968\u0007&\u0000\u0000"+ + "\u1967\u1966\u0001\u0000\u0000\u0000\u1968\u196b\u0001\u0000\u0000\u0000"+ + "\u1969\u1967\u0001\u0000\u0000\u0000\u1969\u196a\u0001\u0000\u0000\u0000"+ + "\u196a\u053c\u0001\u0000\u0000\u0000\u196b\u1969\u0001\u0000\u0000\u0000"+ + "\u196c\u196d\u0003\u053f\u029d\u0000\u196d\u196e\u0005\'\u0000\u0000\u196e"+ + "\u053e\u0001\u0000\u0000\u0000\u196f\u1970\u0007\u0012\u0000\u0000\u1970"+ + "\u1971\u0003\u052d\u0294\u0000\u1971\u0540\u0001\u0000\u0000\u0000\u1972"+ + "\u1973\u0003\u0543\u029f\u0000\u1973\u1974\u0005\'\u0000\u0000\u1974\u0542"+ + "\u0001\u0000\u0000\u0000\u1975\u1976\u0007\u001a\u0000\u0000\u1976\u197a"+ + "\u0005\'\u0000\u0000\u1977\u1979\u0007\'\u0000\u0000\u1978\u1977\u0001"+ + "\u0000\u0000\u0000\u1979\u197c\u0001\u0000\u0000\u0000\u197a\u1978\u0001"+ + "\u0000\u0000\u0000\u197a\u197b\u0001\u0000\u0000\u0000\u197b\u0544\u0001"+ + "\u0000\u0000\u0000\u197c\u197a\u0001\u0000\u0000\u0000\u197d\u197e\u0003"+ + "\u0547\u02a1\u0000\u197e\u197f\u0005\'\u0000\u0000\u197f\u0546\u0001\u0000"+ + "\u0000\u0000\u1980\u1981\u0007\u001a\u0000\u0000\u1981\u1982\u0003\u052d"+ + "\u0294\u0000\u1982\u0548\u0001\u0000\u0000\u0000\u1983\u1984\u0003\u054f"+ + "\u02a5\u0000\u1984\u054a\u0001\u0000\u0000\u0000\u1985\u1986\u0003\u054f"+ + "\u02a5\u0000\u1986\u1987\u0005.\u0000\u0000\u1987\u1988\u0005.\u0000\u0000"+ + "\u1988\u1989\u0001\u0000\u0000\u0000\u1989\u198a\u0006\u02a3\u0006\u0000"+ + "\u198a\u054c\u0001\u0000\u0000\u0000\u198b\u198c\u0003\u054f\u02a5\u0000"+ + "\u198c\u198e\u0005.\u0000\u0000\u198d\u198f\u0003\u054f\u02a5\u0000\u198e"+ + "\u198d\u0001\u0000\u0000\u0000\u198e\u198f\u0001\u0000\u0000\u0000\u198f"+ + "\u1995\u0001\u0000\u0000\u0000\u1990\u1992\u0007\n\u0000\u0000\u1991\u1993"+ + "\u0007\u0001\u0000\u0000\u1992\u1991\u0001\u0000\u0000\u0000\u1992\u1993"+ + "\u0001\u0000\u0000\u0000\u1993\u1994\u0001\u0000\u0000\u0000\u1994\u1996"+ + "\u0003\u054f\u02a5\u0000\u1995\u1990\u0001\u0000\u0000\u0000\u1995\u1996"+ + "\u0001\u0000\u0000\u0000\u1996\u19a8\u0001\u0000\u0000\u0000\u1997\u1998"+ + "\u0005.\u0000\u0000\u1998\u199e\u0003\u054f\u02a5\u0000\u1999\u199b\u0007"+ + "\n\u0000\u0000\u199a\u199c\u0007\u0001\u0000\u0000\u199b\u199a\u0001\u0000"+ + "\u0000\u0000\u199b\u199c\u0001\u0000\u0000\u0000\u199c\u199d\u0001\u0000"+ + "\u0000\u0000\u199d\u199f\u0003\u054f\u02a5\u0000\u199e\u1999\u0001\u0000"+ + "\u0000\u0000\u199e\u199f\u0001\u0000\u0000\u0000\u199f\u19a8\u0001\u0000"+ + "\u0000\u0000\u19a0\u19a1\u0003\u054f\u02a5\u0000\u19a1\u19a3\u0007\n\u0000"+ + "\u0000\u19a2\u19a4\u0007\u0001\u0000\u0000\u19a3\u19a2\u0001\u0000\u0000"+ + "\u0000\u19a3\u19a4\u0001\u0000\u0000\u0000\u19a4\u19a5\u0001\u0000\u0000"+ + "\u0000\u19a5\u19a6\u0003\u054f\u02a5\u0000\u19a6\u19a8\u0001\u0000\u0000"+ + "\u0000\u19a7\u198b\u0001\u0000\u0000\u0000\u19a7\u1997\u0001\u0000\u0000"+ + "\u0000\u19a7\u19a0\u0001\u0000\u0000\u0000\u19a8\u054e\u0001\u0000\u0000"+ + "\u0000\u19a9\u19ab\u0007\u0000\u0000\u0000\u19aa\u19a9\u0001\u0000\u0000"+ + "\u0000\u19ab\u19ac\u0001\u0000\u0000\u0000\u19ac\u19aa\u0001\u0000\u0000"+ + "\u0000\u19ac\u19ad\u0001\u0000\u0000\u0000\u19ad\u0550\u0001\u0000\u0000"+ + "\u0000\u19ae\u19af\u0005:\u0000\u0000\u19af\u19b3\u0007(\u0000\u0000\u19b0"+ + "\u19b2\u0007)\u0000\u0000\u19b1\u19b0\u0001\u0000\u0000\u0000\u19b2\u19b5"+ + "\u0001\u0000\u0000\u0000\u19b3\u19b1\u0001\u0000\u0000\u0000\u19b3\u19b4"+ + "\u0001\u0000\u0000\u0000\u19b4\u0552\u0001\u0000\u0000\u0000\u19b5\u19b3"+ + "\u0001\u0000\u0000\u0000\u19b6\u19b7\u0005:\u0000\u0000\u19b7\u19b8\u0005"+ + "\"\u0000\u0000\u19b8\u19c0\u0001\u0000\u0000\u0000\u19b9\u19ba\u0005\\"+ + "\u0000\u0000\u19ba\u19bf\t\u0000\u0000\u0000\u19bb\u19bc\u0005\"\u0000"+ + "\u0000\u19bc\u19bf\u0005\"\u0000\u0000\u19bd\u19bf\b*\u0000\u0000\u19be"+ + "\u19b9\u0001\u0000\u0000\u0000\u19be\u19bb\u0001\u0000\u0000\u0000\u19be"+ + "\u19bd\u0001\u0000\u0000\u0000\u19bf\u19c2\u0001\u0000\u0000\u0000\u19c0"+ + "\u19be\u0001\u0000\u0000\u0000\u19c0\u19c1\u0001\u0000\u0000\u0000\u19c1"+ + "\u19c3\u0001\u0000\u0000\u0000\u19c2\u19c0\u0001\u0000\u0000\u0000\u19c3"+ + "\u19c4\u0005\"\u0000\u0000\u19c4\u0554\u0001\u0000\u0000\u0000\u19c5\u19c7"+ + "\u0007+\u0000\u0000\u19c6\u19c5\u0001\u0000\u0000\u0000\u19c7\u19c8\u0001"+ + "\u0000\u0000\u0000\u19c8\u19c6\u0001\u0000\u0000\u0000\u19c8\u19c9\u0001"+ + "\u0000\u0000\u0000\u19c9\u19ca\u0001\u0000\u0000\u0000\u19ca\u19cb\u0006"+ + "\u02a8\u0007\u0000\u19cb\u0556\u0001\u0000\u0000\u0000\u19cc\u19ce\u0005"+ + "\r\u0000\u0000\u19cd\u19cf\u0005\n\u0000\u0000\u19ce\u19cd\u0001\u0000"+ + "\u0000\u0000\u19ce\u19cf\u0001\u0000\u0000\u0000\u19cf\u19d2\u0001\u0000"+ + "\u0000\u0000\u19d0\u19d2\u0005\n\u0000\u0000\u19d1\u19cc\u0001\u0000\u0000"+ + "\u0000\u19d1\u19d0\u0001\u0000\u0000\u0000\u19d2\u19d3\u0001\u0000\u0000"+ + "\u0000\u19d3\u19d4\u0006\u02a9\u0007\u0000\u19d4\u0558\u0001\u0000\u0000"+ + "\u0000\u19d5\u19d6\u0005-\u0000\u0000\u19d6\u19d7\u0005-\u0000\u0000\u19d7"+ + "\u19db\u0001\u0000\u0000\u0000\u19d8\u19da\b,\u0000\u0000\u19d9\u19d8"+ + "\u0001\u0000\u0000\u0000\u19da\u19dd\u0001\u0000\u0000\u0000\u19db\u19d9"+ + "\u0001\u0000\u0000\u0000\u19db\u19dc\u0001\u0000\u0000\u0000\u19dc\u19de"+ + "\u0001\u0000\u0000\u0000\u19dd\u19db\u0001\u0000\u0000\u0000\u19de\u19df"+ + "\u0006\u02aa\u0007\u0000\u19df\u055a\u0001\u0000\u0000\u0000\u19e0\u19e1"+ + "\u0005/\u0000\u0000\u19e1\u19e2\u0005*\u0000\u0000\u19e2\u19f9\u0001\u0000"+ + "\u0000\u0000\u19e3\u19e5\u0005/\u0000\u0000\u19e4\u19e3\u0001\u0000\u0000"+ + "\u0000\u19e5\u19e8\u0001\u0000\u0000\u0000\u19e6\u19e4\u0001\u0000\u0000"+ + "\u0000\u19e6\u19e7\u0001\u0000\u0000\u0000\u19e7\u19e9\u0001\u0000\u0000"+ + "\u0000\u19e8\u19e6\u0001\u0000\u0000\u0000\u19e9\u19f8\u0003\u055b\u02ab"+ + "\u0000\u19ea\u19f8\b-\u0000\u0000\u19eb\u19ed\u0005/\u0000\u0000\u19ec"+ + "\u19eb\u0001\u0000\u0000\u0000\u19ed\u19ee\u0001\u0000\u0000\u0000\u19ee"+ + "\u19ec\u0001\u0000\u0000\u0000\u19ee\u19ef\u0001\u0000\u0000\u0000\u19ef"+ + "\u19f0\u0001\u0000\u0000\u0000\u19f0\u19f8\b-\u0000\u0000\u19f1\u19f3"+ + "\u0005*\u0000\u0000\u19f2\u19f1\u0001\u0000\u0000\u0000\u19f3\u19f4\u0001"+ + "\u0000\u0000\u0000\u19f4\u19f2\u0001\u0000\u0000\u0000\u19f4\u19f5\u0001"+ + "\u0000\u0000\u0000\u19f5\u19f6\u0001\u0000\u0000\u0000\u19f6\u19f8\b-"+ + "\u0000\u0000\u19f7\u19e6\u0001\u0000\u0000\u0000\u19f7\u19ea\u0001\u0000"+ + "\u0000\u0000\u19f7\u19ec\u0001\u0000\u0000\u0000\u19f7\u19f2\u0001\u0000"+ + "\u0000\u0000\u19f8\u19fb\u0001\u0000\u0000\u0000\u19f9\u19f7\u0001\u0000"+ + "\u0000\u0000\u19f9\u19fa\u0001\u0000\u0000\u0000\u19fa\u19ff\u0001\u0000"+ + "\u0000\u0000\u19fb\u19f9\u0001\u0000\u0000\u0000\u19fc\u19fe\u0005*\u0000"+ + "\u0000\u19fd\u19fc\u0001\u0000\u0000\u0000\u19fe\u1a01\u0001\u0000\u0000"+ + "\u0000\u19ff\u19fd\u0001\u0000\u0000\u0000\u19ff\u1a00\u0001\u0000\u0000"+ + "\u0000\u1a00\u1a02\u0001\u0000\u0000\u0000\u1a01\u19ff\u0001\u0000\u0000"+ + "\u0000\u1a02\u1a03\u0005*\u0000\u0000\u1a03\u1a04\u0005/\u0000\u0000\u1a04"+ + "\u1a05\u0001\u0000\u0000\u0000\u1a05\u1a06\u0006\u02ab\u0007\u0000\u1a06"+ + "\u055c\u0001\u0000\u0000\u0000\u1a07\u1a08\u0005/\u0000\u0000\u1a08\u1a09"+ + "\u0005*\u0000\u0000\u1a09\u1a22\u0001\u0000\u0000\u0000\u1a0a\u1a0c\u0005"+ + "/\u0000\u0000\u1a0b\u1a0a\u0001\u0000\u0000\u0000\u1a0c\u1a0f\u0001\u0000"+ + "\u0000\u0000\u1a0d\u1a0b\u0001\u0000\u0000\u0000\u1a0d\u1a0e\u0001\u0000"+ + "\u0000\u0000\u1a0e\u1a10\u0001\u0000\u0000\u0000\u1a0f\u1a0d\u0001\u0000"+ + "\u0000\u0000\u1a10\u1a21\u0003\u055b\u02ab\u0000\u1a11\u1a21\b-\u0000"+ + "\u0000\u1a12\u1a14\u0005/\u0000\u0000\u1a13\u1a12\u0001\u0000\u0000\u0000"+ + "\u1a14\u1a15\u0001\u0000\u0000\u0000\u1a15\u1a13\u0001\u0000\u0000\u0000"+ + "\u1a15\u1a16\u0001\u0000\u0000\u0000\u1a16\u1a17\u0001\u0000\u0000\u0000"+ + "\u1a17\u1a1f\b-\u0000\u0000\u1a18\u1a1a\u0005*\u0000\u0000\u1a19\u1a18"+ + "\u0001\u0000\u0000\u0000\u1a1a\u1a1b\u0001\u0000\u0000\u0000\u1a1b\u1a19"+ + "\u0001\u0000\u0000\u0000\u1a1b\u1a1c\u0001\u0000\u0000\u0000\u1a1c\u1a1d"+ + "\u0001\u0000\u0000\u0000\u1a1d\u1a1f\b-\u0000\u0000\u1a1e\u1a13\u0001"+ + "\u0000\u0000\u0000\u1a1e\u1a19\u0001\u0000\u0000\u0000\u1a1f\u1a21\u0001"+ + "\u0000\u0000\u0000\u1a20\u1a0d\u0001\u0000\u0000\u0000\u1a20\u1a11\u0001"+ + "\u0000\u0000\u0000\u1a20\u1a1e\u0001\u0000\u0000\u0000\u1a21\u1a24\u0001"+ + "\u0000\u0000\u0000\u1a22\u1a20\u0001\u0000\u0000\u0000\u1a22\u1a23\u0001"+ + "\u0000\u0000\u0000\u1a23\u1a36\u0001\u0000\u0000\u0000\u1a24\u1a22\u0001"+ + "\u0000\u0000\u0000\u1a25\u1a27\u0005/\u0000\u0000\u1a26\u1a25\u0001\u0000"+ + "\u0000\u0000\u1a27\u1a28\u0001\u0000\u0000\u0000\u1a28\u1a26\u0001\u0000"+ + "\u0000\u0000\u1a28\u1a29\u0001\u0000\u0000\u0000\u1a29\u1a37\u0001\u0000"+ + "\u0000\u0000\u1a2a\u1a2c\u0005*\u0000\u0000\u1a2b\u1a2a\u0001\u0000\u0000"+ + "\u0000\u1a2c\u1a2d\u0001\u0000\u0000\u0000\u1a2d\u1a2b\u0001\u0000\u0000"+ + "\u0000\u1a2d\u1a2e\u0001\u0000\u0000\u0000\u1a2e\u1a37\u0001\u0000\u0000"+ + "\u0000\u1a2f\u1a31\u0005/\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\u1a35\u0001\u0000\u0000\u0000"+ + "\u1a34\u1a32\u0001\u0000\u0000\u0000\u1a35\u1a37\u0003\u055d\u02ac\u0000"+ + "\u1a36\u1a26\u0001\u0000\u0000\u0000\u1a36\u1a2b\u0001\u0000\u0000\u0000"+ + "\u1a36\u1a32\u0001\u0000\u0000\u0000\u1a36\u1a37\u0001\u0000\u0000\u0000"+ + "\u1a37\u1a38\u0001\u0000\u0000\u0000\u1a38\u1a39\u0006\u02ac\b\u0000\u1a39"+ + "\u055e\u0001\u0000\u0000\u0000\u1a3a\u1a46\u0005\\\u0000\u0000\u1a3b\u1a45"+ + "\b.\u0000\u0000\u1a3c\u1a40\u0005\"\u0000\u0000\u1a3d\u1a3f\b/\u0000\u0000"+ + "\u1a3e\u1a3d\u0001\u0000\u0000\u0000\u1a3f\u1a42\u0001\u0000\u0000\u0000"+ + "\u1a40\u1a3e\u0001\u0000\u0000\u0000\u1a40\u1a41\u0001\u0000\u0000\u0000"+ + "\u1a41\u1a43\u0001\u0000\u0000\u0000\u1a42\u1a40\u0001\u0000\u0000\u0000"+ + "\u1a43\u1a45\u0005\"\u0000\u0000\u1a44\u1a3b\u0001\u0000\u0000\u0000\u1a44"+ + "\u1a3c\u0001\u0000\u0000\u0000\u1a45\u1a48\u0001\u0000\u0000\u0000\u1a46"+ + "\u1a44\u0001\u0000\u0000\u0000\u1a46\u1a47\u0001\u0000\u0000\u0000\u1a47"+ + "\u1a50\u0001\u0000\u0000\u0000\u1a48\u1a46\u0001\u0000\u0000\u0000\u1a49"+ + "\u1a4d\u0005\"\u0000\u0000\u1a4a\u1a4c\b/\u0000\u0000\u1a4b\u1a4a\u0001"+ + "\u0000\u0000\u0000\u1a4c\u1a4f\u0001\u0000\u0000\u0000\u1a4d\u1a4b\u0001"+ + "\u0000\u0000\u0000\u1a4d\u1a4e\u0001\u0000\u0000\u0000\u1a4e\u1a51\u0001"+ + "\u0000\u0000\u0000\u1a4f\u1a4d\u0001\u0000\u0000\u0000\u1a50\u1a49\u0001"+ + "\u0000\u0000\u0000\u1a50\u1a51\u0001\u0000\u0000\u0000\u1a51\u0560\u0001"+ + "\u0000\u0000\u0000\u1a52\u1a53\u0005\\\u0000\u0000\u1a53\u1a54\u0005\\"+ + "\u0000\u0000\u1a54\u0562\u0001\u0000\u0000\u0000\u1a55\u1a56\t\u0000\u0000"+ + "\u0000\u1a56\u0564\u0001\u0000\u0000\u0000\u1a57\u1a58\u0003\u0569\u02b2"+ + "\u0000\u1a58\u1a59\u0005\'\u0000\u0000\u1a59\u1a5a\u0001\u0000\u0000\u0000"+ + "\u1a5a\u1a5b\u0006\u02b0\t\u0000\u1a5b\u0566\u0001\u0000\u0000\u0000\u1a5c"+ + "\u1a5e\u0003\u0569\u02b2\u0000\u1a5d\u1a5f\u0005\\\u0000\u0000\u1a5e\u1a5d"+ + "\u0001\u0000\u0000\u0000\u1a5e\u1a5f\u0001\u0000\u0000\u0000\u1a5f\u1a60"+ + "\u0001\u0000\u0000\u0000\u1a60\u1a61\u0005\u0000\u0000\u0001\u1a61\u0568"+ + "\u0001\u0000\u0000\u0000\u1a62\u1a63\u0005\'\u0000\u0000\u1a63\u1a7a\u0005"+ + "\'\u0000\u0000\u1a64\u1a76\u0005\\\u0000\u0000\u1a65\u1a66\u0005x\u0000"+ + "\u0000\u1a66\u1a77\u0007\'\u0000\u0000\u1a67\u1a68\u0005u\u0000\u0000"+ + "\u1a68\u1a69\u0007\'\u0000\u0000\u1a69\u1a6a\u0007\'\u0000\u0000\u1a6a"+ + "\u1a6b\u0007\'\u0000\u0000\u1a6b\u1a77\u0007\'\u0000\u0000\u1a6c\u1a6d"+ + "\u0005U\u0000\u0000\u1a6d\u1a6e\u0007\'\u0000\u0000\u1a6e\u1a6f\u0007"+ + "\'\u0000\u0000\u1a6f\u1a70\u0007\'\u0000\u0000\u1a70\u1a71\u0007\'\u0000"+ + "\u0000\u1a71\u1a72\u0007\'\u0000\u0000\u1a72\u1a73\u0007\'\u0000\u0000"+ + "\u1a73\u1a74\u0007\'\u0000\u0000\u1a74\u1a77\u0007\'\u0000\u0000\u1a75"+ + "\u1a77\b0\u0000\u0000\u1a76\u1a65\u0001\u0000\u0000\u0000\u1a76\u1a67"+ + "\u0001\u0000\u0000\u0000\u1a76\u1a6c\u0001\u0000\u0000\u0000\u1a76\u1a75"+ + "\u0001\u0000\u0000\u0000\u1a77\u1a7a\u0001\u0000\u0000\u0000\u1a78\u1a7a"+ + "\b1\u0000\u0000\u1a79\u1a62\u0001\u0000\u0000\u0000\u1a79\u1a64\u0001"+ + "\u0000\u0000\u0000\u1a79\u1a78\u0001\u0000\u0000\u0000\u1a7a\u1a7d\u0001"+ + "\u0000\u0000\u0000\u1a7b\u1a79\u0001\u0000\u0000\u0000\u1a7b\u1a7c\u0001"+ + "\u0000\u0000\u0000\u1a7c\u056a\u0001\u0000\u0000\u0000\u1a7d\u1a7b\u0001"+ + "\u0000\u0000\u0000\u1a7e\u1a7f\u0003\u056f\u02b5\u0000\u1a7f\u1a80\u0005"+ + "\'\u0000\u0000\u1a80\u1a81\u0001\u0000\u0000\u0000\u1a81\u1a82\u0006\u02b3"+ + "\t\u0000\u1a82\u056c\u0001\u0000\u0000\u0000\u1a83\u1a85\u0003\u056f\u02b5"+ + "\u0000\u1a84\u1a86\u0005\\\u0000\u0000\u1a85\u1a84\u0001\u0000\u0000\u0000"+ + "\u1a85\u1a86\u0001\u0000\u0000\u0000\u1a86\u1a87\u0001\u0000\u0000\u0000"+ + "\u1a87\u1a88\u0005\u0000\u0000\u0001\u1a88\u056e\u0001\u0000\u0000\u0000"+ + "\u1a89\u1a8a\u0005\'\u0000\u0000\u1a8a\u1a8f\u0005\'\u0000\u0000\u1a8b"+ + "\u1a8c\u0005\\\u0000\u0000\u1a8c\u1a8f\t\u0000\u0000\u0000\u1a8d\u1a8f"+ + "\b1\u0000\u0000\u1a8e\u1a89\u0001\u0000\u0000\u0000\u1a8e\u1a8b\u0001"+ + "\u0000\u0000\u0000\u1a8e\u1a8d\u0001\u0000\u0000\u0000\u1a8f\u1a92\u0001"+ + "\u0000\u0000\u0000\u1a90\u1a8e\u0001\u0000\u0000\u0000\u1a90\u1a91\u0001"+ + "\u0000\u0000\u0000\u1a91\u0570\u0001\u0000\u0000\u0000\u1a92\u1a90\u0001"+ + "\u0000\u0000\u0000\u1a93\u1a94\u0003\u0555\u02a8\u0000\u1a94\u1a95\u0001"+ + "\u0000\u0000\u0000\u1a95\u1a96\u0006\u02b6\n\u0000\u1a96\u1a97\u0006\u02b6"+ + "\u0007\u0000\u1a97\u0572\u0001\u0000\u0000\u0000\u1a98\u1a99\u0003\u0557"+ + "\u02a9\u0000\u1a99\u1a9a\u0001\u0000\u0000\u0000\u1a9a\u1a9b\u0006\u02b7"+ + "\u000b\u0000\u1a9b\u1a9c\u0006\u02b7\u0007\u0000\u1a9c\u1a9d\u0006\u02b7"+ + "\f\u0000\u1a9d\u0574\u0001\u0000\u0000\u0000\u1a9e\u1a9f\u0006\u02b8\r"+ + "\u0000\u1a9f\u1aa0\u0001\u0000\u0000\u0000\u1aa0\u1aa1\u0006\u02b8\u000e"+ + "\u0000\u1aa1\u1aa2\u0006\u02b8\u000f\u0000\u1aa2\u0576\u0001\u0000\u0000"+ + "\u0000\u1aa3\u1aa4\u0003\u0555\u02a8\u0000\u1aa4\u1aa5\u0001\u0000\u0000"+ + "\u0000\u1aa5\u1aa6\u0006\u02b9\n\u0000\u1aa6\u1aa7\u0006\u02b9\u0007\u0000"+ + "\u1aa7\u0578\u0001\u0000\u0000\u0000\u1aa8\u1aa9\u0003\u0557\u02a9\u0000"+ + "\u1aa9\u1aaa\u0001\u0000\u0000\u0000\u1aaa\u1aab\u0006\u02ba\u000b\u0000"+ + "\u1aab\u1aac\u0006\u02ba\u0007\u0000\u1aac\u057a\u0001\u0000\u0000\u0000"+ + "\u1aad\u1aae\u0005\'\u0000\u0000\u1aae\u1aaf\u0001\u0000\u0000\u0000\u1aaf"+ + "\u1ab0\u0006\u02bb\u0002\u0000\u1ab0\u1ab1\u0006\u02bb\u0010\u0000\u1ab1"+ + "\u057c\u0001\u0000\u0000\u0000\u1ab2\u1ab3\u0006\u02bc\u0011\u0000\u1ab3"+ + "\u1ab4\u0001\u0000\u0000\u0000\u1ab4\u1ab5\u0006\u02bc\u000e\u0000\u1ab5"+ + "\u1ab6\u0006\u02bc\u000f\u0000\u1ab6\u057e\u0001\u0000\u0000\u0000\u1ab7"+ + "\u1ab9\b2\u0000\u0000\u1ab8\u1ab7\u0001\u0000\u0000\u0000\u1ab9\u1aba"+ + "\u0001\u0000\u0000\u0000\u1aba\u1ab8\u0001\u0000\u0000\u0000\u1aba\u1abb"+ + "\u0001\u0000\u0000\u0000\u1abb\u1ac4\u0001\u0000\u0000\u0000\u1abc\u1ac0"+ + "\u0005$\u0000\u0000\u1abd\u1abf\b2\u0000\u0000\u1abe\u1abd\u0001\u0000"+ + "\u0000\u0000\u1abf\u1ac2\u0001\u0000\u0000\u0000\u1ac0\u1abe\u0001\u0000"+ + "\u0000\u0000\u1ac0\u1ac1\u0001\u0000\u0000\u0000\u1ac1\u1ac4\u0001\u0000"+ + "\u0000\u0000\u1ac2\u1ac0\u0001\u0000\u0000\u0000\u1ac3\u1ab8\u0001\u0000"+ + "\u0000\u0000\u1ac3\u1abc\u0001\u0000\u0000\u0000\u1ac4\u0580\u0001\u0000"+ + "\u0000\u0000\u1ac5\u1ac7\u0005$\u0000\u0000\u1ac6\u1ac8\u0003\u0537\u0299"+ + "\u0000\u1ac7\u1ac6\u0001\u0000\u0000\u0000\u1ac7\u1ac8\u0001\u0000\u0000"+ + "\u0000\u1ac8\u1ac9\u0001\u0000\u0000\u0000\u1ac9\u1aca\u0005$\u0000\u0000"+ + "\u1aca\u1acb\u0001\u0000\u0000\u0000\u1acb\u1acc\u0004\u02be\b\u0000\u1acc"+ + "\u1acd\u0006\u02be\u0012\u0000\u1acd\u1ace\u0001\u0000\u0000\u0000\u1ace"+ + "\u1acf\u0006\u02be\u000f\u0000\u1acf\u0582\u0001\u0000\u0000\u0000N\u0000"+ + "\u0001\u0002\u0003\u0004\u05c6\u05cc\u05ce\u05d3\u05d7\u05d9\u05dc\u05e5"+ + "\u05e7\u05ec\u05f1\u05f3\u18fd\u1906\u190a\u190e\u1917\u1919\u1923\u1925"+ + "\u193f\u1941\u1953\u195e\u1969\u197a\u198e\u1992\u1995\u199b\u199e\u19a3"+ + "\u19a7\u19ac\u19b3\u19be\u19c0\u19c8\u19ce\u19d1\u19db\u19e6\u19ee\u19f4"+ + "\u19f7\u19f9\u19ff\u1a0d\u1a15\u1a1b\u1a1e\u1a20\u1a22\u1a28\u1a2d\u1a32"+ + "\u1a36\u1a40\u1a44\u1a46\u1a4d\u1a50\u1a5e\u1a76\u1a79\u1a7b\u1a85\u1a8e"+ + "\u1a90\u1aba\u1ac0\u1ac3\u1ac7\u0013\u0001\u001c\u0000\u0007\u001d\u0000"+ + "\u0003\u0000\u0000\u0005\u0001\u0000\u0001\u0298\u0001\u0005\u0004\u0000"+ + "\u0001\u02a3\u0002\u0000\u0001\u0000\u0001\u02ac\u0003\u0002\u0002\u0000"+ + "\u0007\u029f\u0000\u0007\u02a0\u0000\u0002\u0003\u0000\u0001\u02b8\u0004"+ + "\u0006\u0000\u0000\u0004\u0000\u0000\u0002\u0001\u0000\u0001\u02bc\u0005"+ + "\u0001\u02be\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 5f0f567336..e6fcd4ebae 100644 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens +++ b/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens @@ -90,598 +90,601 @@ SESSION_USER=89 SOME=90 SYMMETRIC=91 TABLE=92 -THEN=93 -TO=94 -TOPIC=95 -TOPICS=96 -STREAM=97 -ZVIEW=98 -ZVIEWS=99 -TRAILING=100 -TRUE_P=101 -UNION=102 -UNIQUE=103 -USER=104 -USING=105 -VARIADIC=106 -WHEN=107 -WHERE=108 -WINDOW=109 -WITH=110 -AUTHORIZATION=111 -BINARY=112 -COLLATION=113 -CONCURRENTLY=114 -CROSS=115 -CURRENT_SCHEMA=116 -FREEZE=117 -FULL=118 -ILIKE=119 -INNER_P=120 -IS=121 -ISNULL=122 -JOIN=123 -LEFT=124 -LIKE=125 -NATURAL=126 -NOTNULL=127 -OUTER_P=128 -OVER=129 -OVERLAPS=130 -RIGHT=131 -SIMILAR=132 -VERBOSE=133 -ABORT_P=134 -ABSOLUTE_P=135 -ACCESS=136 -ACTION=137 -ADD_P=138 -ADMIN=139 -AFTER=140 -AGGREGATE=141 -ALSO=142 -ALTER=143 -ALWAYS=144 -ASSERTION=145 -ASSIGNMENT=146 -AT=147 -ATTRIBUTE=148 -BACKWARD=149 -BEFORE=150 -BEGIN_P=151 -BY=152 -CACHE=153 -CALLED=154 -CASCADE=155 -CASCADED=156 -CATALOG=157 -CHAIN=158 -CHARACTERISTICS=159 -CHECKPOINT=160 -CLASS=161 -CLOSE=162 -CLUSTER=163 -COMMENT=164 -COMMENTS=165 -COMMIT=166 -COMMITTED=167 -CONFIGURATION=168 -CONNECTION=169 -CONSTRAINTS=170 -CONTENT_P=171 -CONTINUE_P=172 -CONVERSION_P=173 -COPY=174 -COST=175 -CSV=176 -CURSOR=177 -CYCLE=178 -DATA_P=179 -DATABASE=180 -DAY_P=181 -DEALLOCATE=182 -DECLARE=183 -DEFAULTS=184 -DEFERRED=185 -DEFINER=186 -DELETE_P=187 -DELIMITER=188 -DELIMITERS=189 -DICTIONARY=190 -DISABLE_P=191 -DISCARD=192 -DOCUMENT_P=193 -DOMAIN_P=194 -DOUBLE_P=195 -DROP=196 -EACH=197 -ENABLE_P=198 -ENCODING=199 -ENCRYPTED=200 -ENUM_P=201 -ESCAPE=202 -EVENT=203 -EXCLUDE=204 -EXCLUDING=205 -EXCLUSIVE=206 -EXECUTE=207 -EXPLAIN=208 -EXTENSION=209 -EXTERNAL=210 -FAMILY=211 -FIRST_P=212 -FOLLOWING=213 -FORCE=214 -FORWARD=215 -FUNCTION=216 -FUNCTIONS=217 -GLOBAL=218 -GRANTED=219 -HANDLER=220 -HEADER_P=221 -HOLD=222 -HOUR_P=223 -IDENTITY_P=224 -IF_P=225 -IMMEDIATE=226 -IMMUTABLE=227 -IMPLICIT_P=228 -INCLUDING=229 -INCREMENT=230 -INDEX=231 -INDEXES=232 -INHERIT=233 -INHERITS=234 -INLINE_P=235 -INSENSITIVE=236 -INSERT=237 -INSTEAD=238 -INVOKER=239 -ISOLATION=240 -KEY=241 -LABEL=242 -LANGUAGE=243 -LARGE_P=244 -LAST_P=245 -LEAKPROOF=246 -LEVEL=247 -LISTEN=248 -LOAD=249 -LOCAL=250 -LOCATION=251 -LOCK_P=252 -MAPPING=253 -MATCH=254 -MATCHED=255 -MATERIALIZED=256 -MAXVALUE=257 -MERGE=258 -MINUTE_P=259 -MINVALUE=260 -MODE=261 -MONTH_P=262 -MOVE=263 -NAME_P=264 -NAMES=265 -NEXT=266 -NO=267 -NOTHING=268 -NOTIFY=269 -NOWAIT=270 -NULLS_P=271 -OBJECT_P=272 -OF=273 -OFF=274 -OIDS=275 -OPERATOR=276 -OPTION=277 -OPTIONS=278 -OWNED=279 -OWNER=280 -PARSER=281 -PARTIAL=282 -PARTITION=283 -PASSING=284 -PASSWORD=285 -PLANS=286 -PRECEDING=287 -PREPARE=288 -PREPARED=289 -PRESERVE=290 -PRIOR=291 -PRIVILEGES=292 -PROCEDURAL=293 -PROCEDURE=294 -PROGRAM=295 -QUOTE=296 -RANGE=297 -READ=298 -REASSIGN=299 -RECHECK=300 -RECURSIVE=301 -REF=302 -REFRESH=303 -REINDEX=304 -RELATIVE_P=305 -RELEASE=306 -RENAME=307 -REPEATABLE=308 -REPLACE=309 -REPLICA=310 -RESET=311 -RESTART=312 -RESTRICT=313 -RETURNS=314 -REVOKE=315 -ROLE=316 -ROLLBACK=317 -ROWS=318 -RULE=319 -SAVEPOINT=320 -SCHEMA=321 -SCROLL=322 -SEARCH=323 -SECOND_P=324 -SECURITY=325 -SEQUENCE=326 -SEQUENCES=327 -SERIALIZABLE=328 -SERVER=329 -SESSION=330 -SET=331 -SHARE=332 -SHOW=333 -SIMPLE=334 -SNAPSHOT=335 -STABLE=336 -STANDALONE_P=337 -START=338 -STATEMENT=339 -STATISTICS=340 -STDIN=341 -STDOUT=342 -STORAGE=343 -STRICT_P=344 -STRIP_P=345 -SYSID=346 -SYSTEM_P=347 -TABLES=348 -TABLESPACE=349 -TEMP=350 -TEMPLATE=351 -TEMPORARY=352 -TEXT_P=353 -TRANSACTION=354 -TRIGGER=355 -TRUNCATE=356 -TRUSTED=357 -TYPE_P=358 -TYPES_P=359 -UNBOUNDED=360 -UNCOMMITTED=361 -UNENCRYPTED=362 -UNKNOWN=363 -UNLISTEN=364 -UNLOGGED=365 -UNTIL=366 -UPDATE=367 -VACUUM=368 -VALID=369 -VALIDATE=370 -VALIDATOR=371 -VARYING=372 -VERSION_P=373 -VIEW=374 -VOLATILE=375 -WHITESPACE_P=376 -WITHOUT=377 -WORK=378 -WRAPPER=379 -WRITE=380 -XML_P=381 -YEAR_P=382 -YES_P=383 -ZONE=384 -BETWEEN=385 -BIGINT=386 -BIT=387 -BOOLEAN_P=388 -CHAR_P=389 -CHARACTER=390 -COALESCE=391 -DEC=392 -DECIMAL_P=393 -EXISTS=394 -EXTRACT=395 -FLOAT_P=396 -GREATEST=397 -INOUT=398 -INT_P=399 -INTEGER=400 -INTERVAL=401 -LEAST=402 -NATIONAL=403 -NCHAR=404 -NONE=405 -NULLIF=406 -NUMERIC=407 -OVERLAY=408 -POSITION=409 -PRECISION=410 -REAL=411 -ROW=412 -SETOF=413 -SMALLINT=414 -SUBSTRING=415 -TIME=416 -TIMESTAMP=417 -TREAT=418 -TRIM=419 -VALUES=420 -VARCHAR=421 -XMLATTRIBUTES=422 -XMLCOMMENT=423 -XMLAGG=424 -XML_IS_WELL_FORMED=425 -XML_IS_WELL_FORMED_DOCUMENT=426 -XML_IS_WELL_FORMED_CONTENT=427 -XPATH=428 -XPATH_EXISTS=429 -XMLCONCAT=430 -XMLELEMENT=431 -XMLEXISTS=432 -XMLFOREST=433 -XMLPARSE=434 -XMLPI=435 -XMLROOT=436 -XMLSERIALIZE=437 -CALL=438 -CURRENT_P=439 -ATTACH=440 -DETACH=441 -EXPRESSION=442 -GENERATED=443 -LOGGED=444 -STORED=445 -INCLUDE=446 -ROUTINE=447 -TRANSFORM=448 -IMPORT_P=449 -POLICY=450 -METHOD=451 -REFERENCING=452 -NEW=453 -OLD=454 -VALUE_P=455 -SUBSCRIPTION=456 -PUBLICATION=457 -OUT_P=458 -END_P=459 -ROUTINES=460 -SCHEMAS=461 -PROCEDURES=462 -INPUT_P=463 -SUPPORT=464 -PARALLEL=465 -SQL_P=466 -DEPENDS=467 -OVERRIDING=468 -CONFLICT=469 -SKIP_P=470 -LOCKED=471 -TIES=472 -ROLLUP=473 -CUBE=474 -GROUPING=475 -SETS=476 -TABLESAMPLE=477 -ORDINALITY=478 -XMLTABLE=479 -COLUMNS=480 -XMLNAMESPACES=481 -ROWTYPE=482 -NORMALIZED=483 -WITHIN=484 -FILTER=485 -GROUPS=486 -OTHERS=487 -NFC=488 -NFD=489 -NFKC=490 -NFKD=491 -UESCAPE=492 -VIEWS=493 -NORMALIZE=494 -DUMP=495 -PRINT_STRICT_PARAMS=496 -VARIABLE_CONFLICT=497 -ERROR=498 -USE_VARIABLE=499 -USE_COLUMN=500 -ALIAS=501 -CONSTANT=502 -PERFORM=503 -GET=504 -DIAGNOSTICS=505 -STACKED=506 -ELSIF=507 -WHILE=508 -REVERSE=509 -FOREACH=510 -SLICE=511 -EXIT=512 -RETURN=513 -QUERY=514 -RAISE=515 -SQLSTATE=516 -DEBUG=517 -LOG=518 -INFO=519 -NOTICE=520 -WARNING=521 -EXCEPTION=522 -ASSERT=523 -LOOP=524 -OPEN=525 -ABS=526 -CBRT=527 -CEIL=528 -CEILING=529 -DEGREES=530 -DIV=531 -EXP=532 -FACTORIAL=533 -FLOOR=534 -GCD=535 -LCM=536 -LN=537 -LOG10=538 -MIN_SCALE=539 -MOD=540 -PI=541 -POWER=542 -RADIANS=543 -ROUND=544 -SCALE=545 -SIGN=546 -SQRT=547 -TRIM_SCALE=548 -TRUNC=549 -WIDTH_BUCKET=550 -RANDOM=551 -SETSEED=552 -ACOS=553 -ACOSD=554 -ASIN=555 -ASIND=556 -ATAN=557 -ATAND=558 -ATAN2=559 -ATAN2D=560 -COS=561 -COSD=562 -COT=563 -COTD=564 -SIN=565 -SIND=566 -TAN=567 -TAND=568 -SINH=569 -COSH=570 -TANH=571 -ASINH=572 -ACOSH=573 -ATANH=574 -BIT_LENGTH=575 -CHAR_LENGTH=576 -CHARACTER_LENGTH=577 -LOWER=578 -OCTET_LENGTH=579 -UPPER=580 -ASCII=581 -BTRIM=582 -CHR=583 -CONCAT=584 -CONCAT_WS=585 -FORMAT=586 -INITCAP=587 -LENGTH=588 -LPAD=589 -LTRIM=590 -MD5=591 -PARSE_IDENT=592 -PG_CLIENT_ENCODING=593 -QUOTE_IDENT=594 -QUOTE_LITERAL=595 -QUOTE_NULLABLE=596 -REGEXP_COUNT=597 -REGEXP_INSTR=598 -REGEXP_LIKE=599 -REGEXP_MATCH=600 -REGEXP_MATCHES=601 -REGEXP_REPLACE=602 -REGEXP_SPLIT_TO_ARRAY=603 -REGEXP_SPLIT_TO_TABLE=604 -REGEXP_SUBSTR=605 -REPEAT=606 -RPAD=607 -RTRIM=608 -SPLIT_PART=609 -STARTS_WITH=610 -STRING_TO_ARRAY=611 -STRING_TO_TABLE=612 -STRPOS=613 -SUBSTR=614 -TO_ASCII=615 -TO_HEX=616 -TRANSLATE=617 -UNISTR=618 -AGE=619 -CLOCK_TIMESTAMP=620 -DATE_BIN=621 -DATE_PART=622 -DATE_TRUNC=623 -ISFINITE=624 -JUSTIFY_DAYS=625 -JUSTIFY_HOURS=626 -JUSTIFY_INTERVAL=627 -MAKE_DATE=628 -MAKE_INTERVAL=629 -MAKE_TIME=630 -MAKE_TIMESTAMP=631 -MAKE_TIMESTAMPTZ=632 -NOW=633 -STATEMENT_TIMESTAMP=634 -TIMEOFDAY=635 -TRANSACTION_TIMESTAMP=636 -TO_TIMESTAMP=637 -TO_CHAR=638 -TO_DATE=639 -TO_NUMBER=640 -Identifier=641 -QuotedIdentifier=642 -UnterminatedQuotedIdentifier=643 -InvalidQuotedIdentifier=644 -InvalidUnterminatedQuotedIdentifier=645 -UnicodeQuotedIdentifier=646 -UnterminatedUnicodeQuotedIdentifier=647 -InvalidUnicodeQuotedIdentifier=648 -InvalidUnterminatedUnicodeQuotedIdentifier=649 -StringConstant=650 -UnterminatedStringConstant=651 -UnicodeEscapeStringConstant=652 -UnterminatedUnicodeEscapeStringConstant=653 -BeginDollarStringConstant=654 -BinaryStringConstant=655 -UnterminatedBinaryStringConstant=656 -InvalidBinaryStringConstant=657 -InvalidUnterminatedBinaryStringConstant=658 -HexadecimalStringConstant=659 -UnterminatedHexadecimalStringConstant=660 -InvalidHexadecimalStringConstant=661 -InvalidUnterminatedHexadecimalStringConstant=662 -Integral=663 -NumericFail=664 -Numeric=665 -PLSQLVARIABLENAME=666 -PLSQLIDENTIFIER=667 -Whitespace=668 -Newline=669 -LineComment=670 -BlockComment=671 -UnterminatedBlockComment=672 -MetaCommand=673 -EndMetaCommand=674 -ErrorCharacter=675 -EscapeStringConstant=676 -UnterminatedEscapeStringConstant=677 -InvalidEscapeStringConstant=678 -InvalidUnterminatedEscapeStringConstant=679 -AfterEscapeStringConstantMode_NotContinued=680 -AfterEscapeStringConstantWithNewlineMode_NotContinued=681 -DollarText=682 -EndDollarStringConstant=683 -AfterEscapeStringConstantWithNewlineMode_Continued=684 +ZTABLE=93 +THEN=94 +TO=95 +DESCRIBE=96 +TOPIC=97 +TOPICS=98 +STREAM=99 +ZVIEW=100 +ZVIEWS=101 +TRAILING=102 +TRUE_P=103 +UNION=104 +UNIQUE=105 +USER=106 +USING=107 +VARIADIC=108 +WHEN=109 +WHERE=110 +WINDOW=111 +WITH=112 +AUTHORIZATION=113 +BINARY=114 +COLLATION=115 +CONCURRENTLY=116 +CROSS=117 +CURRENT_SCHEMA=118 +FREEZE=119 +FULL=120 +ILIKE=121 +INNER_P=122 +IS=123 +ISNULL=124 +JOIN=125 +LEFT=126 +LIKE=127 +NATURAL=128 +NOTNULL=129 +OUTER_P=130 +OVER=131 +OVERLAPS=132 +RIGHT=133 +SIMILAR=134 +VERBOSE=135 +ABORT_P=136 +ABSOLUTE_P=137 +ACCESS=138 +ACTION=139 +ADD_P=140 +ADMIN=141 +AFTER=142 +AGGREGATE=143 +ALSO=144 +ALTER=145 +ALWAYS=146 +ASSERTION=147 +ASSIGNMENT=148 +AT=149 +ATTRIBUTE=150 +BACKWARD=151 +BEFORE=152 +BEGIN_P=153 +BY=154 +CACHE=155 +CALLED=156 +CASCADE=157 +CASCADED=158 +CATALOG=159 +CHAIN=160 +CHARACTERISTICS=161 +CHECKPOINT=162 +CLASS=163 +CLOSE=164 +CLUSTER=165 +COMMENT=166 +COMMENTS=167 +COMMIT=168 +COMMITTED=169 +CONFIGURATION=170 +CONNECTION=171 +CONSTRAINTS=172 +CONTENT_P=173 +CONTINUE_P=174 +CONVERSION_P=175 +COPY=176 +COST=177 +CSV=178 +CURSOR=179 +CYCLE=180 +DATA_P=181 +DATABASE=182 +DAY_P=183 +DEALLOCATE=184 +DECLARE=185 +DEFAULTS=186 +DEFERRED=187 +DEFINER=188 +DELETE_P=189 +DELIMITER=190 +DELIMITERS=191 +DICTIONARY=192 +DISABLE_P=193 +DISCARD=194 +DOCUMENT_P=195 +DOMAIN_P=196 +DOUBLE_P=197 +DROP=198 +EACH=199 +ENABLE_P=200 +ENCODING=201 +ENCRYPTED=202 +ENUM_P=203 +ESCAPE=204 +EVENT=205 +EXCLUDE=206 +EXCLUDING=207 +EXCLUSIVE=208 +EXECUTE=209 +EXPLAIN=210 +EXTENSION=211 +EXTERNAL=212 +FAMILY=213 +FIRST_P=214 +FOLLOWING=215 +FORCE=216 +FORWARD=217 +FUNCTION=218 +FUNCTIONS=219 +GLOBAL=220 +GRANTED=221 +HANDLER=222 +HEADER_P=223 +HOLD=224 +HOUR_P=225 +IDENTITY_P=226 +IF_P=227 +IMMEDIATE=228 +IMMUTABLE=229 +IMPLICIT_P=230 +INCLUDING=231 +INCREMENT=232 +INDEX=233 +INDEXES=234 +INHERIT=235 +INHERITS=236 +INLINE_P=237 +INSENSITIVE=238 +INSERT=239 +INSTEAD=240 +INVOKER=241 +ISOLATION=242 +KEY=243 +LABEL=244 +LANGUAGE=245 +LARGE_P=246 +LAST_P=247 +LEAKPROOF=248 +LEVEL=249 +LISTEN=250 +LOAD=251 +LOCAL=252 +LOCATION=253 +LOCK_P=254 +MAPPING=255 +MATCH=256 +MATCHED=257 +MATERIALIZED=258 +MAXVALUE=259 +MERGE=260 +MINUTE_P=261 +MINVALUE=262 +MODE=263 +MONTH_P=264 +MOVE=265 +NAME_P=266 +NAMES=267 +NEXT=268 +NO=269 +NOTHING=270 +NOTIFY=271 +NOWAIT=272 +NULLS_P=273 +OBJECT_P=274 +OF=275 +OFF=276 +OIDS=277 +OPERATOR=278 +OPTION=279 +OPTIONS=280 +OWNED=281 +OWNER=282 +PARSER=283 +PARTIAL=284 +PARTITION=285 +PASSING=286 +PASSWORD=287 +PLANS=288 +PRECEDING=289 +PREPARE=290 +PREPARED=291 +PRESERVE=292 +PRIOR=293 +PRIVILEGES=294 +PROCEDURAL=295 +PROCEDURE=296 +PROGRAM=297 +QUOTE=298 +RANGE=299 +READ=300 +REASSIGN=301 +RECHECK=302 +RECURSIVE=303 +REF=304 +REFRESH=305 +REINDEX=306 +RELATIVE_P=307 +RELEASE=308 +RENAME=309 +REPEATABLE=310 +REPLACE=311 +REPLICA=312 +RESET=313 +RESTART=314 +RESTRICT=315 +RETURNS=316 +REVOKE=317 +ROLE=318 +ROLLBACK=319 +ROWS=320 +RULE=321 +SAVEPOINT=322 +SCHEMA=323 +SCROLL=324 +SEARCH=325 +SECOND_P=326 +SECURITY=327 +SEQUENCE=328 +SEQUENCES=329 +SERIALIZABLE=330 +SERVER=331 +SESSION=332 +SET=333 +SHARE=334 +SHOW=335 +SIMPLE=336 +SNAPSHOT=337 +STABLE=338 +STANDALONE_P=339 +START=340 +STATEMENT=341 +STATISTICS=342 +STDIN=343 +STDOUT=344 +STORAGE=345 +STRICT_P=346 +STRIP_P=347 +SYSID=348 +SYSTEM_P=349 +TABLES=350 +ZTABLES=351 +TABLESPACE=352 +TEMP=353 +TEMPLATE=354 +TEMPORARY=355 +TEXT_P=356 +TRANSACTION=357 +TRIGGER=358 +TRUNCATE=359 +TRUSTED=360 +TYPE_P=361 +TYPES_P=362 +UNBOUNDED=363 +UNCOMMITTED=364 +UNENCRYPTED=365 +UNKNOWN=366 +UNLISTEN=367 +UNLOGGED=368 +UNTIL=369 +UPDATE=370 +VACUUM=371 +VALID=372 +VALIDATE=373 +VALIDATOR=374 +VARYING=375 +VERSION_P=376 +VIEW=377 +VOLATILE=378 +WHITESPACE_P=379 +WITHOUT=380 +WORK=381 +WRAPPER=382 +WRITE=383 +XML_P=384 +YEAR_P=385 +YES_P=386 +ZONE=387 +BETWEEN=388 +BIGINT=389 +BIT=390 +BOOLEAN_P=391 +CHAR_P=392 +CHARACTER=393 +COALESCE=394 +DEC=395 +DECIMAL_P=396 +EXISTS=397 +EXTRACT=398 +FLOAT_P=399 +GREATEST=400 +INOUT=401 +INT_P=402 +INTEGER=403 +INTERVAL=404 +LEAST=405 +NATIONAL=406 +NCHAR=407 +NONE=408 +NULLIF=409 +NUMERIC=410 +OVERLAY=411 +POSITION=412 +PRECISION=413 +REAL=414 +ROW=415 +SETOF=416 +SMALLINT=417 +SUBSTRING=418 +TIME=419 +TIMESTAMP=420 +TREAT=421 +TRIM=422 +VALUES=423 +VARCHAR=424 +XMLATTRIBUTES=425 +XMLCOMMENT=426 +XMLAGG=427 +XML_IS_WELL_FORMED=428 +XML_IS_WELL_FORMED_DOCUMENT=429 +XML_IS_WELL_FORMED_CONTENT=430 +XPATH=431 +XPATH_EXISTS=432 +XMLCONCAT=433 +XMLELEMENT=434 +XMLEXISTS=435 +XMLFOREST=436 +XMLPARSE=437 +XMLPI=438 +XMLROOT=439 +XMLSERIALIZE=440 +CALL=441 +CURRENT_P=442 +ATTACH=443 +DETACH=444 +EXPRESSION=445 +GENERATED=446 +LOGGED=447 +STORED=448 +INCLUDE=449 +ROUTINE=450 +TRANSFORM=451 +IMPORT_P=452 +POLICY=453 +METHOD=454 +REFERENCING=455 +NEW=456 +OLD=457 +VALUE_P=458 +SUBSCRIPTION=459 +PUBLICATION=460 +OUT_P=461 +END_P=462 +ROUTINES=463 +SCHEMAS=464 +PROCEDURES=465 +INPUT_P=466 +SUPPORT=467 +PARALLEL=468 +SQL_P=469 +DEPENDS=470 +OVERRIDING=471 +CONFLICT=472 +SKIP_P=473 +LOCKED=474 +TIES=475 +ROLLUP=476 +CUBE=477 +GROUPING=478 +SETS=479 +TABLESAMPLE=480 +ORDINALITY=481 +XMLTABLE=482 +COLUMNS=483 +XMLNAMESPACES=484 +ROWTYPE=485 +NORMALIZED=486 +WITHIN=487 +FILTER=488 +GROUPS=489 +OTHERS=490 +NFC=491 +NFD=492 +NFKC=493 +NFKD=494 +UESCAPE=495 +VIEWS=496 +NORMALIZE=497 +DUMP=498 +PRINT_STRICT_PARAMS=499 +VARIABLE_CONFLICT=500 +ERROR=501 +USE_VARIABLE=502 +USE_COLUMN=503 +ALIAS=504 +CONSTANT=505 +PERFORM=506 +GET=507 +DIAGNOSTICS=508 +STACKED=509 +ELSIF=510 +WHILE=511 +REVERSE=512 +FOREACH=513 +SLICE=514 +EXIT=515 +RETURN=516 +QUERY=517 +RAISE=518 +SQLSTATE=519 +DEBUG=520 +LOG=521 +INFO=522 +NOTICE=523 +WARNING=524 +EXCEPTION=525 +ASSERT=526 +LOOP=527 +OPEN=528 +ABS=529 +CBRT=530 +CEIL=531 +CEILING=532 +DEGREES=533 +DIV=534 +EXP=535 +FACTORIAL=536 +FLOOR=537 +GCD=538 +LCM=539 +LN=540 +LOG10=541 +MIN_SCALE=542 +MOD=543 +PI=544 +POWER=545 +RADIANS=546 +ROUND=547 +SCALE=548 +SIGN=549 +SQRT=550 +TRIM_SCALE=551 +TRUNC=552 +WIDTH_BUCKET=553 +RANDOM=554 +SETSEED=555 +ACOS=556 +ACOSD=557 +ASIN=558 +ASIND=559 +ATAN=560 +ATAND=561 +ATAN2=562 +ATAN2D=563 +COS=564 +COSD=565 +COT=566 +COTD=567 +SIN=568 +SIND=569 +TAN=570 +TAND=571 +SINH=572 +COSH=573 +TANH=574 +ASINH=575 +ACOSH=576 +ATANH=577 +BIT_LENGTH=578 +CHAR_LENGTH=579 +CHARACTER_LENGTH=580 +LOWER=581 +OCTET_LENGTH=582 +UPPER=583 +ASCII=584 +BTRIM=585 +CHR=586 +CONCAT=587 +CONCAT_WS=588 +FORMAT=589 +INITCAP=590 +LENGTH=591 +LPAD=592 +LTRIM=593 +MD5=594 +PARSE_IDENT=595 +PG_CLIENT_ENCODING=596 +QUOTE_IDENT=597 +QUOTE_LITERAL=598 +QUOTE_NULLABLE=599 +REGEXP_COUNT=600 +REGEXP_INSTR=601 +REGEXP_LIKE=602 +REGEXP_MATCH=603 +REGEXP_MATCHES=604 +REGEXP_REPLACE=605 +REGEXP_SPLIT_TO_ARRAY=606 +REGEXP_SPLIT_TO_TABLE=607 +REGEXP_SUBSTR=608 +REPEAT=609 +RPAD=610 +RTRIM=611 +SPLIT_PART=612 +STARTS_WITH=613 +STRING_TO_ARRAY=614 +STRING_TO_TABLE=615 +STRPOS=616 +SUBSTR=617 +TO_ASCII=618 +TO_HEX=619 +TRANSLATE=620 +UNISTR=621 +AGE=622 +CLOCK_TIMESTAMP=623 +DATE_BIN=624 +DATE_PART=625 +DATE_TRUNC=626 +ISFINITE=627 +JUSTIFY_DAYS=628 +JUSTIFY_HOURS=629 +JUSTIFY_INTERVAL=630 +MAKE_DATE=631 +MAKE_INTERVAL=632 +MAKE_TIME=633 +MAKE_TIMESTAMP=634 +MAKE_TIMESTAMPTZ=635 +NOW=636 +STATEMENT_TIMESTAMP=637 +TIMEOFDAY=638 +TRANSACTION_TIMESTAMP=639 +TO_TIMESTAMP=640 +TO_CHAR=641 +TO_DATE=642 +TO_NUMBER=643 +Identifier=644 +QuotedIdentifier=645 +UnterminatedQuotedIdentifier=646 +InvalidQuotedIdentifier=647 +InvalidUnterminatedQuotedIdentifier=648 +UnicodeQuotedIdentifier=649 +UnterminatedUnicodeQuotedIdentifier=650 +InvalidUnicodeQuotedIdentifier=651 +InvalidUnterminatedUnicodeQuotedIdentifier=652 +StringConstant=653 +UnterminatedStringConstant=654 +UnicodeEscapeStringConstant=655 +UnterminatedUnicodeEscapeStringConstant=656 +BeginDollarStringConstant=657 +BinaryStringConstant=658 +UnterminatedBinaryStringConstant=659 +InvalidBinaryStringConstant=660 +InvalidUnterminatedBinaryStringConstant=661 +HexadecimalStringConstant=662 +UnterminatedHexadecimalStringConstant=663 +InvalidHexadecimalStringConstant=664 +InvalidUnterminatedHexadecimalStringConstant=665 +Integral=666 +NumericFail=667 +Numeric=668 +PLSQLVARIABLENAME=669 +PLSQLIDENTIFIER=670 +Whitespace=671 +Newline=672 +LineComment=673 +BlockComment=674 +UnterminatedBlockComment=675 +MetaCommand=676 +EndMetaCommand=677 +ErrorCharacter=678 +EscapeStringConstant=679 +UnterminatedEscapeStringConstant=680 +InvalidEscapeStringConstant=681 +InvalidUnterminatedEscapeStringConstant=682 +AfterEscapeStringConstantMode_NotContinued=683 +AfterEscapeStringConstantWithNewlineMode_NotContinued=684 +DollarText=685 +EndDollarStringConstant=686 +AfterEscapeStringConstantWithNewlineMode_Continued=687 '$'=1 '('=2 ')'=3 @@ -772,553 +775,556 @@ AfterEscapeStringConstantWithNewlineMode_Continued=684 'SOME'=90 'SYMMETRIC'=91 'TABLE'=92 -'THEN'=93 -'TO'=94 -'TOPIC'=95 -'TOPICS'=96 -'STREAM'=97 -'ZVIEW'=98 -'ZVIEWS'=99 -'TRAILING'=100 -'TRUE'=101 -'UNION'=102 -'UNIQUE'=103 -'USER'=104 -'USING'=105 -'VARIADIC'=106 -'WHEN'=107 -'WHERE'=108 -'WINDOW'=109 -'WITH'=110 -'AUTHORIZATION'=111 -'BINARY'=112 -'COLLATION'=113 -'CONCURRENTLY'=114 -'CROSS'=115 -'CURRENT_SCHEMA'=116 -'FREEZE'=117 -'FULL'=118 -'ILIKE'=119 -'INNER'=120 -'IS'=121 -'ISNULL'=122 -'JOIN'=123 -'LEFT'=124 -'LIKE'=125 -'NATURAL'=126 -'NOTNULL'=127 -'OUTER'=128 -'OVER'=129 -'OVERLAPS'=130 -'RIGHT'=131 -'SIMILAR'=132 -'VERBOSE'=133 -'ABORT'=134 -'ABSOLUTE'=135 -'ACCESS'=136 -'ACTION'=137 -'ADD'=138 -'ADMIN'=139 -'AFTER'=140 -'AGGREGATE'=141 -'ALSO'=142 -'ALTER'=143 -'ALWAYS'=144 -'ASSERTION'=145 -'ASSIGNMENT'=146 -'AT'=147 -'ATTRIBUTE'=148 -'BACKWARD'=149 -'BEFORE'=150 -'BEGIN'=151 -'BY'=152 -'CACHE'=153 -'CALLED'=154 -'CASCADE'=155 -'CASCADED'=156 -'CATALOG'=157 -'CHAIN'=158 -'CHARACTERISTICS'=159 -'CHECKPOINT'=160 -'CLASS'=161 -'CLOSE'=162 -'CLUSTER'=163 -'COMMENT'=164 -'COMMENTS'=165 -'COMMIT'=166 -'COMMITTED'=167 -'CONFIGURATION'=168 -'CONNECTION'=169 -'CONSTRAINTS'=170 -'CONTENT'=171 -'CONTINUE'=172 -'CONVERSION'=173 -'COPY'=174 -'COST'=175 -'CSV'=176 -'CURSOR'=177 -'CYCLE'=178 -'DATA'=179 -'DATABASE'=180 -'DAY'=181 -'DEALLOCATE'=182 -'DECLARE'=183 -'DEFAULTS'=184 -'DEFERRED'=185 -'DEFINER'=186 -'DELETE'=187 -'DELIMITER'=188 -'DELIMITERS'=189 -'DICTIONARY'=190 -'DISABLE'=191 -'DISCARD'=192 -'DOCUMENT'=193 -'DOMAIN'=194 -'DOUBLE'=195 -'DROP'=196 -'EACH'=197 -'ENABLE'=198 -'ENCODING'=199 -'ENCRYPTED'=200 -'ENUM'=201 -'ESCAPE'=202 -'EVENT'=203 -'EXCLUDE'=204 -'EXCLUDING'=205 -'EXCLUSIVE'=206 -'EXECUTE'=207 -'EXPLAIN'=208 -'EXTENSION'=209 -'EXTERNAL'=210 -'FAMILY'=211 -'FIRST'=212 -'FOLLOWING'=213 -'FORCE'=214 -'FORWARD'=215 -'FUNCTION'=216 -'FUNCTIONS'=217 -'GLOBAL'=218 -'GRANTED'=219 -'HANDLER'=220 -'HEADER'=221 -'HOLD'=222 -'HOUR'=223 -'IDENTITY'=224 -'IF'=225 -'IMMEDIATE'=226 -'IMMUTABLE'=227 -'IMPLICIT'=228 -'INCLUDING'=229 -'INCREMENT'=230 -'INDEX'=231 -'INDEXES'=232 -'INHERIT'=233 -'INHERITS'=234 -'INLINE'=235 -'INSENSITIVE'=236 -'INSERT'=237 -'INSTEAD'=238 -'INVOKER'=239 -'ISOLATION'=240 -'KEY'=241 -'LABEL'=242 -'LANGUAGE'=243 -'LARGE'=244 -'LAST'=245 -'LEAKPROOF'=246 -'LEVEL'=247 -'LISTEN'=248 -'LOAD'=249 -'LOCAL'=250 -'LOCATION'=251 -'LOCK'=252 -'MAPPING'=253 -'MATCH'=254 -'MATCHED'=255 -'MATERIALIZED'=256 -'MAXVALUE'=257 -'MERGE'=258 -'MINUTE'=259 -'MINVALUE'=260 -'MODE'=261 -'MONTH'=262 -'MOVE'=263 -'NAME'=264 -'NAMES'=265 -'NEXT'=266 -'NO'=267 -'NOTHING'=268 -'NOTIFY'=269 -'NOWAIT'=270 -'NULLS'=271 -'OBJECT'=272 -'OF'=273 -'OFF'=274 -'OIDS'=275 -'OPERATOR'=276 -'OPTION'=277 -'OPTIONS'=278 -'OWNED'=279 -'OWNER'=280 -'PARSER'=281 -'PARTIAL'=282 -'PARTITION'=283 -'PASSING'=284 -'PASSWORD'=285 -'PLANS'=286 -'PRECEDING'=287 -'PREPARE'=288 -'PREPARED'=289 -'PRESERVE'=290 -'PRIOR'=291 -'PRIVILEGES'=292 -'PROCEDURAL'=293 -'PROCEDURE'=294 -'PROGRAM'=295 -'QUOTE'=296 -'RANGE'=297 -'READ'=298 -'REASSIGN'=299 -'RECHECK'=300 -'RECURSIVE'=301 -'REF'=302 -'REFRESH'=303 -'REINDEX'=304 -'RELATIVE'=305 -'RELEASE'=306 -'RENAME'=307 -'REPEATABLE'=308 -'REPLACE'=309 -'REPLICA'=310 -'RESET'=311 -'RESTART'=312 -'RESTRICT'=313 -'RETURNS'=314 -'REVOKE'=315 -'ROLE'=316 -'ROLLBACK'=317 -'ROWS'=318 -'RULE'=319 -'SAVEPOINT'=320 -'SCHEMA'=321 -'SCROLL'=322 -'SEARCH'=323 -'SECOND'=324 -'SECURITY'=325 -'SEQUENCE'=326 -'SEQUENCES'=327 -'SERIALIZABLE'=328 -'SERVER'=329 -'SESSION'=330 -'SET'=331 -'SHARE'=332 -'SHOW'=333 -'SIMPLE'=334 -'SNAPSHOT'=335 -'STABLE'=336 -'STANDALONE'=337 -'START'=338 -'STATEMENT'=339 -'STATISTICS'=340 -'STDIN'=341 -'STDOUT'=342 -'STORAGE'=343 -'STRICT'=344 -'STRIP'=345 -'SYSID'=346 -'SYSTEM'=347 -'TABLES'=348 -'TABLESPACE'=349 -'TEMP'=350 -'TEMPLATE'=351 -'TEMPORARY'=352 -'TEXT'=353 -'TRANSACTION'=354 -'TRIGGER'=355 -'TRUNCATE'=356 -'TRUSTED'=357 -'TYPE'=358 -'TYPES'=359 -'UNBOUNDED'=360 -'UNCOMMITTED'=361 -'UNENCRYPTED'=362 -'UNKNOWN'=363 -'UNLISTEN'=364 -'UNLOGGED'=365 -'UNTIL'=366 -'UPDATE'=367 -'VACUUM'=368 -'VALID'=369 -'VALIDATE'=370 -'VALIDATOR'=371 -'VARYING'=372 -'VERSION'=373 -'VIEW'=374 -'VOLATILE'=375 -'WHITESPACE'=376 -'WITHOUT'=377 -'WORK'=378 -'WRAPPER'=379 -'WRITE'=380 -'XML'=381 -'YEAR'=382 -'YES'=383 -'ZONE'=384 -'BETWEEN'=385 -'BIGINT'=386 -'BIT'=387 -'BOOLEAN'=388 -'CHAR'=389 -'CHARACTER'=390 -'COALESCE'=391 -'DEC'=392 -'DECIMAL'=393 -'EXISTS'=394 -'EXTRACT'=395 -'FLOAT'=396 -'GREATEST'=397 -'INOUT'=398 -'INT'=399 -'INTEGER'=400 -'INTERVAL'=401 -'LEAST'=402 -'NATIONAL'=403 -'NCHAR'=404 -'NONE'=405 -'NULLIF'=406 -'NUMERIC'=407 -'OVERLAY'=408 -'POSITION'=409 -'PRECISION'=410 -'REAL'=411 -'ROW'=412 -'SETOF'=413 -'SMALLINT'=414 -'SUBSTRING'=415 -'TIME'=416 -'TIMESTAMP'=417 -'TREAT'=418 -'TRIM'=419 -'VALUES'=420 -'VARCHAR'=421 -'XMLATTRIBUTES'=422 -'XMLCOMMENT'=423 -'XMLAGG'=424 -'XML_IS_WELL_FORMED'=425 -'XML_IS_WELL_FORMED_DOCUMENT'=426 -'XML_IS_WELL_FORMED_CONTENT'=427 -'XPATH'=428 -'XPATH_EXISTS'=429 -'XMLCONCAT'=430 -'XMLELEMENT'=431 -'XMLEXISTS'=432 -'XMLFOREST'=433 -'XMLPARSE'=434 -'XMLPI'=435 -'XMLROOT'=436 -'XMLSERIALIZE'=437 -'CALL'=438 -'CURRENT'=439 -'ATTACH'=440 -'DETACH'=441 -'EXPRESSION'=442 -'GENERATED'=443 -'LOGGED'=444 -'STORED'=445 -'INCLUDE'=446 -'ROUTINE'=447 -'TRANSFORM'=448 -'IMPORT'=449 -'POLICY'=450 -'METHOD'=451 -'REFERENCING'=452 -'NEW'=453 -'OLD'=454 -'VALUE'=455 -'SUBSCRIPTION'=456 -'PUBLICATION'=457 -'OUT'=458 -'END'=459 -'ROUTINES'=460 -'SCHEMAS'=461 -'PROCEDURES'=462 -'INPUT'=463 -'SUPPORT'=464 -'PARALLEL'=465 -'SQL'=466 -'DEPENDS'=467 -'OVERRIDING'=468 -'CONFLICT'=469 -'SKIP'=470 -'LOCKED'=471 -'TIES'=472 -'ROLLUP'=473 -'CUBE'=474 -'GROUPING'=475 -'SETS'=476 -'TABLESAMPLE'=477 -'ORDINALITY'=478 -'XMLTABLE'=479 -'COLUMNS'=480 -'XMLNAMESPACES'=481 -'ROWTYPE'=482 -'NORMALIZED'=483 -'WITHIN'=484 -'FILTER'=485 -'GROUPS'=486 -'OTHERS'=487 -'NFC'=488 -'NFD'=489 -'NFKC'=490 -'NFKD'=491 -'UESCAPE'=492 -'VIEWS'=493 -'NORMALIZE'=494 -'DUMP'=495 -'PRINT_STRICT_PARAMS'=496 -'VARIABLE_CONFLICT'=497 -'ERROR'=498 -'USE_VARIABLE'=499 -'USE_COLUMN'=500 -'ALIAS'=501 -'CONSTANT'=502 -'PERFORM'=503 -'GET'=504 -'DIAGNOSTICS'=505 -'STACKED'=506 -'ELSIF'=507 -'WHILE'=508 -'REVERSE'=509 -'FOREACH'=510 -'SLICE'=511 -'EXIT'=512 -'RETURN'=513 -'QUERY'=514 -'RAISE'=515 -'SQLSTATE'=516 -'DEBUG'=517 -'LOG'=518 -'INFO'=519 -'NOTICE'=520 -'WARNING'=521 -'EXCEPTION'=522 -'ASSERT'=523 -'LOOP'=524 -'OPEN'=525 -'ABS'=526 -'CBRT'=527 -'CEIL'=528 -'CEILING'=529 -'DEGREES'=530 -'DIV'=531 -'EXP'=532 -'FACTORIAL'=533 -'FLOOR'=534 -'GCD'=535 -'LCM'=536 -'LN'=537 -'LOG10'=538 -'MIN_SCALE'=539 -'MOD'=540 -'PI'=541 -'POWER'=542 -'RADIANS'=543 -'ROUND'=544 -'SCALE'=545 -'SIGN'=546 -'SQRT'=547 -'TRIM_SCALE'=548 -'TRUNC'=549 -'WIDTH_BUCKET'=550 -'RANDOM'=551 -'SETSEED'=552 -'ACOS'=553 -'ACOSD'=554 -'ASIN'=555 -'ASIND'=556 -'ATAN'=557 -'ATAND'=558 -'ATAN2'=559 -'ATAN2D'=560 -'COS'=561 -'COSD'=562 -'COT'=563 -'COTD'=564 -'SIN'=565 -'SIND'=566 -'TAN'=567 -'TAND'=568 -'SINH'=569 -'COSH'=570 -'TANH'=571 -'ASINH'=572 -'ACOSH'=573 -'ATANH'=574 -'BIT_LENGTH'=575 -'CHAR_LENGTH'=576 -'CHARACTER_LENGTH'=577 -'LOWER'=578 -'OCTET_LENGTH'=579 -'UPPER'=580 -'ASCII'=581 -'BTRIM'=582 -'CHR'=583 -'CONCAT'=584 -'CONCAT_WS'=585 -'FORMAT'=586 -'INITCAP'=587 -'LENGTH'=588 -'LPAD'=589 -'LTRIM'=590 -'MD5'=591 -'PARSE_IDENT'=592 -'PG_CLIENT_ENCODING'=593 -'QUOTE_IDENT'=594 -'QUOTE_LITERAL'=595 -'QUOTE_NULLABLE'=596 -'REGEXP_COUNT'=597 -'REGEXP_INSTR'=598 -'REGEXP_LIKE'=599 -'REGEXP_MATCH'=600 -'REGEXP_MATCHES'=601 -'REGEXP_REPLACE'=602 -'REGEXP_SPLIT_TO_ARRAY'=603 -'REGEXP_SPLIT_TO_TABLE'=604 -'REGEXP_SUBSTR'=605 -'REPEAT'=606 -'RPAD'=607 -'RTRIM'=608 -'SPLIT_PART'=609 -'STARTS_WITH'=610 -'STRING_TO_ARRAY'=611 -'STRING_TO_TABLE'=612 -'STRPOS'=613 -'SUBSTR'=614 -'TO_ASCII'=615 -'TO_HEX'=616 -'TRANSLATE'=617 -'UNISTR'=618 -'AGE'=619 -'CLOCK_TIMESTAMP'=620 -'DATE_BIN'=621 -'DATE_PART'=622 -'DATE_TRUNC'=623 -'ISFINITE'=624 -'JUSTIFY_DAYS'=625 -'JUSTIFY_HOURS'=626 -'JUSTIFY_INTERVAL'=627 -'MAKE_DATE'=628 -'MAKE_INTERVAL'=629 -'MAKE_TIME'=630 -'MAKE_TIMESTAMP'=631 -'MAKE_TIMESTAMPTZ'=632 -'NOW'=633 -'STATEMENT_TIMESTAMP'=634 -'TIMEOFDAY'=635 -'TRANSACTION_TIMESTAMP'=636 -'TO_TIMESTAMP'=637 -'TO_CHAR'=638 -'TO_DATE'=639 -'TO_NUMBER'=640 -'\\\\'=674 -'\''=684 +'ZTABLE'=93 +'THEN'=94 +'TO'=95 +'DESCRIBE'=96 +'TOPIC'=97 +'TOPICS'=98 +'STREAM'=99 +'ZVIEW'=100 +'ZVIEWS'=101 +'TRAILING'=102 +'TRUE'=103 +'UNION'=104 +'UNIQUE'=105 +'USER'=106 +'USING'=107 +'VARIADIC'=108 +'WHEN'=109 +'WHERE'=110 +'WINDOW'=111 +'WITH'=112 +'AUTHORIZATION'=113 +'BINARY'=114 +'COLLATION'=115 +'CONCURRENTLY'=116 +'CROSS'=117 +'CURRENT_SCHEMA'=118 +'FREEZE'=119 +'FULL'=120 +'ILIKE'=121 +'INNER'=122 +'IS'=123 +'ISNULL'=124 +'JOIN'=125 +'LEFT'=126 +'LIKE'=127 +'NATURAL'=128 +'NOTNULL'=129 +'OUTER'=130 +'OVER'=131 +'OVERLAPS'=132 +'RIGHT'=133 +'SIMILAR'=134 +'VERBOSE'=135 +'ABORT'=136 +'ABSOLUTE'=137 +'ACCESS'=138 +'ACTION'=139 +'ADD'=140 +'ADMIN'=141 +'AFTER'=142 +'AGGREGATE'=143 +'ALSO'=144 +'ALTER'=145 +'ALWAYS'=146 +'ASSERTION'=147 +'ASSIGNMENT'=148 +'AT'=149 +'ATTRIBUTE'=150 +'BACKWARD'=151 +'BEFORE'=152 +'BEGIN'=153 +'BY'=154 +'CACHE'=155 +'CALLED'=156 +'CASCADE'=157 +'CASCADED'=158 +'CATALOG'=159 +'CHAIN'=160 +'CHARACTERISTICS'=161 +'CHECKPOINT'=162 +'CLASS'=163 +'CLOSE'=164 +'CLUSTER'=165 +'COMMENT'=166 +'COMMENTS'=167 +'COMMIT'=168 +'COMMITTED'=169 +'CONFIGURATION'=170 +'CONNECTION'=171 +'CONSTRAINTS'=172 +'CONTENT'=173 +'CONTINUE'=174 +'CONVERSION'=175 +'COPY'=176 +'COST'=177 +'CSV'=178 +'CURSOR'=179 +'CYCLE'=180 +'DATA'=181 +'DATABASE'=182 +'DAY'=183 +'DEALLOCATE'=184 +'DECLARE'=185 +'DEFAULTS'=186 +'DEFERRED'=187 +'DEFINER'=188 +'DELETE'=189 +'DELIMITER'=190 +'DELIMITERS'=191 +'DICTIONARY'=192 +'DISABLE'=193 +'DISCARD'=194 +'DOCUMENT'=195 +'DOMAIN'=196 +'DOUBLE'=197 +'DROP'=198 +'EACH'=199 +'ENABLE'=200 +'ENCODING'=201 +'ENCRYPTED'=202 +'ENUM'=203 +'ESCAPE'=204 +'EVENT'=205 +'EXCLUDE'=206 +'EXCLUDING'=207 +'EXCLUSIVE'=208 +'EXECUTE'=209 +'EXPLAIN'=210 +'EXTENSION'=211 +'EXTERNAL'=212 +'FAMILY'=213 +'FIRST'=214 +'FOLLOWING'=215 +'FORCE'=216 +'FORWARD'=217 +'FUNCTION'=218 +'FUNCTIONS'=219 +'GLOBAL'=220 +'GRANTED'=221 +'HANDLER'=222 +'HEADER'=223 +'HOLD'=224 +'HOUR'=225 +'IDENTITY'=226 +'IF'=227 +'IMMEDIATE'=228 +'IMMUTABLE'=229 +'IMPLICIT'=230 +'INCLUDING'=231 +'INCREMENT'=232 +'INDEX'=233 +'INDEXES'=234 +'INHERIT'=235 +'INHERITS'=236 +'INLINE'=237 +'INSENSITIVE'=238 +'INSERT'=239 +'INSTEAD'=240 +'INVOKER'=241 +'ISOLATION'=242 +'KEY'=243 +'LABEL'=244 +'LANGUAGE'=245 +'LARGE'=246 +'LAST'=247 +'LEAKPROOF'=248 +'LEVEL'=249 +'LISTEN'=250 +'LOAD'=251 +'LOCAL'=252 +'LOCATION'=253 +'LOCK'=254 +'MAPPING'=255 +'MATCH'=256 +'MATCHED'=257 +'MATERIALIZED'=258 +'MAXVALUE'=259 +'MERGE'=260 +'MINUTE'=261 +'MINVALUE'=262 +'MODE'=263 +'MONTH'=264 +'MOVE'=265 +'NAME'=266 +'NAMES'=267 +'NEXT'=268 +'NO'=269 +'NOTHING'=270 +'NOTIFY'=271 +'NOWAIT'=272 +'NULLS'=273 +'OBJECT'=274 +'OF'=275 +'OFF'=276 +'OIDS'=277 +'OPERATOR'=278 +'OPTION'=279 +'OPTIONS'=280 +'OWNED'=281 +'OWNER'=282 +'PARSER'=283 +'PARTIAL'=284 +'PARTITION'=285 +'PASSING'=286 +'PASSWORD'=287 +'PLANS'=288 +'PRECEDING'=289 +'PREPARE'=290 +'PREPARED'=291 +'PRESERVE'=292 +'PRIOR'=293 +'PRIVILEGES'=294 +'PROCEDURAL'=295 +'PROCEDURE'=296 +'PROGRAM'=297 +'QUOTE'=298 +'RANGE'=299 +'READ'=300 +'REASSIGN'=301 +'RECHECK'=302 +'RECURSIVE'=303 +'REF'=304 +'REFRESH'=305 +'REINDEX'=306 +'RELATIVE'=307 +'RELEASE'=308 +'RENAME'=309 +'REPEATABLE'=310 +'REPLACE'=311 +'REPLICA'=312 +'RESET'=313 +'RESTART'=314 +'RESTRICT'=315 +'RETURNS'=316 +'REVOKE'=317 +'ROLE'=318 +'ROLLBACK'=319 +'ROWS'=320 +'RULE'=321 +'SAVEPOINT'=322 +'SCHEMA'=323 +'SCROLL'=324 +'SEARCH'=325 +'SECOND'=326 +'SECURITY'=327 +'SEQUENCE'=328 +'SEQUENCES'=329 +'SERIALIZABLE'=330 +'SERVER'=331 +'SESSION'=332 +'SET'=333 +'SHARE'=334 +'SHOW'=335 +'SIMPLE'=336 +'SNAPSHOT'=337 +'STABLE'=338 +'STANDALONE'=339 +'START'=340 +'STATEMENT'=341 +'STATISTICS'=342 +'STDIN'=343 +'STDOUT'=344 +'STORAGE'=345 +'STRICT'=346 +'STRIP'=347 +'SYSID'=348 +'SYSTEM'=349 +'TABLES'=350 +'ZTABLES'=351 +'TABLESPACE'=352 +'TEMP'=353 +'TEMPLATE'=354 +'TEMPORARY'=355 +'TEXT'=356 +'TRANSACTION'=357 +'TRIGGER'=358 +'TRUNCATE'=359 +'TRUSTED'=360 +'TYPE'=361 +'TYPES'=362 +'UNBOUNDED'=363 +'UNCOMMITTED'=364 +'UNENCRYPTED'=365 +'UNKNOWN'=366 +'UNLISTEN'=367 +'UNLOGGED'=368 +'UNTIL'=369 +'UPDATE'=370 +'VACUUM'=371 +'VALID'=372 +'VALIDATE'=373 +'VALIDATOR'=374 +'VARYING'=375 +'VERSION'=376 +'VIEW'=377 +'VOLATILE'=378 +'WHITESPACE'=379 +'WITHOUT'=380 +'WORK'=381 +'WRAPPER'=382 +'WRITE'=383 +'XML'=384 +'YEAR'=385 +'YES'=386 +'ZONE'=387 +'BETWEEN'=388 +'BIGINT'=389 +'BIT'=390 +'BOOLEAN'=391 +'CHAR'=392 +'CHARACTER'=393 +'COALESCE'=394 +'DEC'=395 +'DECIMAL'=396 +'EXISTS'=397 +'EXTRACT'=398 +'FLOAT'=399 +'GREATEST'=400 +'INOUT'=401 +'INT'=402 +'INTEGER'=403 +'INTERVAL'=404 +'LEAST'=405 +'NATIONAL'=406 +'NCHAR'=407 +'NONE'=408 +'NULLIF'=409 +'NUMERIC'=410 +'OVERLAY'=411 +'POSITION'=412 +'PRECISION'=413 +'REAL'=414 +'ROW'=415 +'SETOF'=416 +'SMALLINT'=417 +'SUBSTRING'=418 +'TIME'=419 +'TIMESTAMP'=420 +'TREAT'=421 +'TRIM'=422 +'VALUES'=423 +'VARCHAR'=424 +'XMLATTRIBUTES'=425 +'XMLCOMMENT'=426 +'XMLAGG'=427 +'XML_IS_WELL_FORMED'=428 +'XML_IS_WELL_FORMED_DOCUMENT'=429 +'XML_IS_WELL_FORMED_CONTENT'=430 +'XPATH'=431 +'XPATH_EXISTS'=432 +'XMLCONCAT'=433 +'XMLELEMENT'=434 +'XMLEXISTS'=435 +'XMLFOREST'=436 +'XMLPARSE'=437 +'XMLPI'=438 +'XMLROOT'=439 +'XMLSERIALIZE'=440 +'CALL'=441 +'CURRENT'=442 +'ATTACH'=443 +'DETACH'=444 +'EXPRESSION'=445 +'GENERATED'=446 +'LOGGED'=447 +'STORED'=448 +'INCLUDE'=449 +'ROUTINE'=450 +'TRANSFORM'=451 +'IMPORT'=452 +'POLICY'=453 +'METHOD'=454 +'REFERENCING'=455 +'NEW'=456 +'OLD'=457 +'VALUE'=458 +'SUBSCRIPTION'=459 +'PUBLICATION'=460 +'OUT'=461 +'END'=462 +'ROUTINES'=463 +'SCHEMAS'=464 +'PROCEDURES'=465 +'INPUT'=466 +'SUPPORT'=467 +'PARALLEL'=468 +'SQL'=469 +'DEPENDS'=470 +'OVERRIDING'=471 +'CONFLICT'=472 +'SKIP'=473 +'LOCKED'=474 +'TIES'=475 +'ROLLUP'=476 +'CUBE'=477 +'GROUPING'=478 +'SETS'=479 +'TABLESAMPLE'=480 +'ORDINALITY'=481 +'XMLTABLE'=482 +'COLUMNS'=483 +'XMLNAMESPACES'=484 +'ROWTYPE'=485 +'NORMALIZED'=486 +'WITHIN'=487 +'FILTER'=488 +'GROUPS'=489 +'OTHERS'=490 +'NFC'=491 +'NFD'=492 +'NFKC'=493 +'NFKD'=494 +'UESCAPE'=495 +'VIEWS'=496 +'NORMALIZE'=497 +'DUMP'=498 +'PRINT_STRICT_PARAMS'=499 +'VARIABLE_CONFLICT'=500 +'ERROR'=501 +'USE_VARIABLE'=502 +'USE_COLUMN'=503 +'ALIAS'=504 +'CONSTANT'=505 +'PERFORM'=506 +'GET'=507 +'DIAGNOSTICS'=508 +'STACKED'=509 +'ELSIF'=510 +'WHILE'=511 +'REVERSE'=512 +'FOREACH'=513 +'SLICE'=514 +'EXIT'=515 +'RETURN'=516 +'QUERY'=517 +'RAISE'=518 +'SQLSTATE'=519 +'DEBUG'=520 +'LOG'=521 +'INFO'=522 +'NOTICE'=523 +'WARNING'=524 +'EXCEPTION'=525 +'ASSERT'=526 +'LOOP'=527 +'OPEN'=528 +'ABS'=529 +'CBRT'=530 +'CEIL'=531 +'CEILING'=532 +'DEGREES'=533 +'DIV'=534 +'EXP'=535 +'FACTORIAL'=536 +'FLOOR'=537 +'GCD'=538 +'LCM'=539 +'LN'=540 +'LOG10'=541 +'MIN_SCALE'=542 +'MOD'=543 +'PI'=544 +'POWER'=545 +'RADIANS'=546 +'ROUND'=547 +'SCALE'=548 +'SIGN'=549 +'SQRT'=550 +'TRIM_SCALE'=551 +'TRUNC'=552 +'WIDTH_BUCKET'=553 +'RANDOM'=554 +'SETSEED'=555 +'ACOS'=556 +'ACOSD'=557 +'ASIN'=558 +'ASIND'=559 +'ATAN'=560 +'ATAND'=561 +'ATAN2'=562 +'ATAN2D'=563 +'COS'=564 +'COSD'=565 +'COT'=566 +'COTD'=567 +'SIN'=568 +'SIND'=569 +'TAN'=570 +'TAND'=571 +'SINH'=572 +'COSH'=573 +'TANH'=574 +'ASINH'=575 +'ACOSH'=576 +'ATANH'=577 +'BIT_LENGTH'=578 +'CHAR_LENGTH'=579 +'CHARACTER_LENGTH'=580 +'LOWER'=581 +'OCTET_LENGTH'=582 +'UPPER'=583 +'ASCII'=584 +'BTRIM'=585 +'CHR'=586 +'CONCAT'=587 +'CONCAT_WS'=588 +'FORMAT'=589 +'INITCAP'=590 +'LENGTH'=591 +'LPAD'=592 +'LTRIM'=593 +'MD5'=594 +'PARSE_IDENT'=595 +'PG_CLIENT_ENCODING'=596 +'QUOTE_IDENT'=597 +'QUOTE_LITERAL'=598 +'QUOTE_NULLABLE'=599 +'REGEXP_COUNT'=600 +'REGEXP_INSTR'=601 +'REGEXP_LIKE'=602 +'REGEXP_MATCH'=603 +'REGEXP_MATCHES'=604 +'REGEXP_REPLACE'=605 +'REGEXP_SPLIT_TO_ARRAY'=606 +'REGEXP_SPLIT_TO_TABLE'=607 +'REGEXP_SUBSTR'=608 +'REPEAT'=609 +'RPAD'=610 +'RTRIM'=611 +'SPLIT_PART'=612 +'STARTS_WITH'=613 +'STRING_TO_ARRAY'=614 +'STRING_TO_TABLE'=615 +'STRPOS'=616 +'SUBSTR'=617 +'TO_ASCII'=618 +'TO_HEX'=619 +'TRANSLATE'=620 +'UNISTR'=621 +'AGE'=622 +'CLOCK_TIMESTAMP'=623 +'DATE_BIN'=624 +'DATE_PART'=625 +'DATE_TRUNC'=626 +'ISFINITE'=627 +'JUSTIFY_DAYS'=628 +'JUSTIFY_HOURS'=629 +'JUSTIFY_INTERVAL'=630 +'MAKE_DATE'=631 +'MAKE_INTERVAL'=632 +'MAKE_TIME'=633 +'MAKE_TIMESTAMP'=634 +'MAKE_TIMESTAMPTZ'=635 +'NOW'=636 +'STATEMENT_TIMESTAMP'=637 +'TIMEOFDAY'=638 +'TRANSACTION_TIMESTAMP'=639 +'TO_TIMESTAMP'=640 +'TO_CHAR'=641 +'TO_DATE'=642 +'TO_NUMBER'=643 +'\\\\'=677 +'\''=687 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 b93a78c845..334384e3b3 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 @@ -283,6 +283,8 @@ SYMMETRIC: 'SYMMETRIC'; TABLE: 'TABLE'; +ZTABLE: 'ZTABLE'; + THEN: 'THEN'; TO: 'TO'; @@ -811,6 +813,8 @@ SYSTEM_P: 'SYSTEM'; TABLES: 'TABLES'; +ZTABLES: 'ZTABLES'; + TABLESPACE: 'TABLESPACE'; TEMP: 'TEMP'; 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 f394a0511a..829aec94a9 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 @@ -722,6 +722,7 @@ createstmt opttable_type : TABLE + | ZTABLE | TOPIC ; diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.interp b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.interp new file mode 100644 index 0000000000..82019f774b --- /dev/null +++ b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.interp @@ -0,0 +1,2098 @@ +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' +'ZTABLE' +'THEN' +'TO' +'DESCRIBE' +'TOPIC' +'TOPICS' +'STREAM' +'ZVIEW' +'ZVIEWS' +'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' +'ZTABLES' +'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 +ZTABLE +THEN +TO +DESCRIBE +TOPIC +TOPICS +STREAM +ZVIEW +ZVIEWS +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 +ZTABLES +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 +ZTABLE +THEN +TO +DESCRIBE +TOPIC +TOPICS +STREAM +ZVIEW +ZVIEWS +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 +ZTABLES +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, 687, 6864, 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, 2, 697, 7, 697, 2, 698, 7, 698, 2, 699, 7, 699, 2, 700, 7, 700, 2, 701, 7, 701, 2, 702, 7, 702, 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, 1477, 8, 27, 11, 27, 12, 27, 1478, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1485, 8, 28, 11, 28, 12, 28, 1486, 1, 28, 1, 28, 1, 28, 3, 28, 1492, 8, 28, 1, 28, 1, 28, 4, 28, 1496, 8, 28, 11, 28, 12, 28, 1497, 1, 28, 3, 28, 1501, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1510, 8, 29, 10, 29, 12, 29, 1513, 9, 29, 1, 29, 1, 29, 3, 29, 1517, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1522, 8, 29, 11, 29, 12, 29, 1523, 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, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 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, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 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, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 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, 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, 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, 117, 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, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 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, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 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, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 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, 129, 1, 129, 1, 129, 1, 129, 1, 129, 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, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 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, 137, 1, 137, 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, 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, 140, 1, 140, 1, 140, 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, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 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, 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, 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, 150, 1, 150, 1, 150, 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, 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, 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, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 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, 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, 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, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 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, 165, 1, 165, 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, 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, 172, 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, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 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, 176, 1, 176, 1, 177, 1, 177, 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, 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, 181, 1, 181, 1, 181, 1, 181, 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, 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, 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, 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, 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, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 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, 195, 1, 195, 1, 195, 1, 195, 1, 196, 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, 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, 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, 202, 1, 202, 1, 202, 1, 202, 1, 202, 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, 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, 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, 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, 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, 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, 214, 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, 218, 1, 218, 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, 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, 221, 1, 221, 1, 222, 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, 223, 1, 223, 1, 223, 1, 223, 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, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 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, 230, 1, 230, 1, 230, 1, 231, 1, 231, 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, 232, 1, 233, 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, 234, 1, 235, 1, 235, 1, 235, 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, 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, 239, 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, 241, 1, 241, 1, 241, 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, 242, 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, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 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, 248, 1, 248, 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, 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, 254, 1, 254, 1, 254, 1, 254, 1, 254, 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, 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, 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, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 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, 264, 1, 264, 1, 265, 1, 265, 1, 265, 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, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 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, 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, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 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, 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, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 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, 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, 288, 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, 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, 295, 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, 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, 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, 300, 1, 300, 1, 300, 1, 300, 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, 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, 304, 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, 306, 1, 306, 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, 309, 1, 309, 1, 310, 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, 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, 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, 315, 1, 316, 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, 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, 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, 322, 1, 322, 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, 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, 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, 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, 330, 1, 331, 1, 331, 1, 331, 1, 331, 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, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 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, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 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, 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, 341, 1, 342, 1, 342, 1, 342, 1, 342, 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, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 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, 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, 348, 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, 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, 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, 355, 1, 355, 1, 355, 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, 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, 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, 364, 1, 364, 1, 364, 1, 364, 1, 364, 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, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 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, 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, 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, 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, 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, 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, 377, 1, 377, 1, 378, 1, 378, 1, 378, 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, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 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, 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, 387, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 1, 389, 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, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 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, 396, 1, 396, 1, 396, 1, 396, 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, 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, 400, 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, 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, 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, 411, 1, 411, 1, 411, 1, 411, 1, 411, 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, 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, 416, 1, 416, 1, 416, 1, 416, 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, 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, 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, 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, 425, 1, 425, 1, 425, 1, 425, 1, 425, 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, 428, 1, 428, 1, 428, 1, 428, 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, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 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, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 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, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 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, 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, 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, 438, 1, 438, 1, 438, 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, 439, 1, 439, 1, 439, 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, 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, 443, 1, 443, 1, 443, 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, 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, 448, 1, 449, 1, 449, 1, 449, 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, 453, 1, 453, 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, 455, 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, 457, 1, 457, 1, 457, 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, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 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, 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, 463, 1, 463, 1, 463, 1, 464, 1, 464, 1, 464, 1, 464, 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, 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, 470, 1, 470, 1, 470, 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, 471, 1, 471, 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, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 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, 478, 1, 478, 1, 478, 1, 478, 1, 478, 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, 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, 483, 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, 484, 1, 484, 1, 484, 1, 484, 1, 485, 1, 485, 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, 486, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 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, 491, 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, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 494, 1, 494, 1, 494, 1, 494, 1, 495, 1, 495, 1, 495, 1, 495, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 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, 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, 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, 502, 1, 502, 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, 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, 505, 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, 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, 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, 511, 1, 511, 1, 511, 1, 511, 1, 511, 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, 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, 515, 1, 515, 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, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 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, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 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, 523, 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, 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, 528, 1, 528, 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, 531, 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, 534, 1, 534, 1, 534, 1, 534, 1, 534, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 537, 1, 537, 1, 537, 1, 537, 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, 540, 1, 540, 1, 541, 1, 541, 1, 541, 1, 541, 1, 542, 1, 542, 1, 542, 1, 542, 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, 545, 1, 545, 1, 545, 1, 545, 1, 546, 1, 546, 1, 546, 1, 546, 1, 547, 1, 547, 1, 547, 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, 549, 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, 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, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 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, 557, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 559, 1, 559, 1, 559, 1, 559, 1, 559, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 563, 1, 563, 1, 563, 1, 563, 1, 563, 1, 564, 1, 564, 1, 564, 1, 564, 1, 564, 1, 564, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 566, 1, 566, 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, 570, 1, 570, 1, 570, 1, 570, 1, 570, 1, 571, 1, 571, 1, 571, 1, 571, 1, 572, 1, 572, 1, 572, 1, 572, 1, 572, 1, 573, 1, 573, 1, 573, 1, 573, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 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, 581, 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, 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, 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, 585, 1, 585, 1, 585, 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, 587, 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, 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, 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, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 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, 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, 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, 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, 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, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 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, 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, 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, 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, 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, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 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, 615, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 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, 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, 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, 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, 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, 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, 626, 1, 626, 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, 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, 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, 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, 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, 635, 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, 637, 1, 637, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 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, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 647, 1, 647, 5, 647, 6396, 8, 647, 10, 647, 12, 647, 6399, 9, 647, 1, 648, 1, 648, 1, 648, 1, 648, 1, 648, 1, 648, 3, 648, 6407, 8, 648, 1, 649, 1, 649, 3, 649, 6411, 8, 649, 1, 650, 1, 650, 3, 650, 6415, 8, 650, 1, 651, 1, 651, 1, 651, 1, 652, 1, 652, 1, 652, 1, 652, 5, 652, 6424, 8, 652, 10, 652, 12, 652, 6427, 9, 652, 1, 653, 1, 653, 1, 653, 1, 654, 1, 654, 1, 654, 1, 654, 5, 654, 6436, 8, 654, 10, 654, 12, 654, 6439, 9, 654, 1, 655, 1, 655, 1, 655, 1, 655, 1, 656, 1, 656, 1, 656, 1, 656, 1, 657, 1, 657, 1, 657, 1, 657, 1, 658, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 1, 659, 1, 660, 1, 660, 1, 660, 1, 660, 5, 660, 6464, 8, 660, 10, 660, 12, 660, 6467, 9, 660, 1, 661, 1, 661, 1, 661, 1, 661, 1, 661, 1, 661, 1, 662, 1, 662, 1, 662, 1, 663, 1, 663, 1, 663, 1, 663, 1, 664, 1, 664, 3, 664, 6484, 8, 664, 1, 664, 1, 664, 1, 664, 1, 664, 1, 664, 1, 665, 1, 665, 5, 665, 6493, 8, 665, 10, 665, 12, 665, 6496, 9, 665, 1, 666, 1, 666, 1, 666, 1, 667, 1, 667, 1, 667, 5, 667, 6504, 8, 667, 10, 667, 12, 667, 6507, 9, 667, 1, 668, 1, 668, 1, 668, 1, 669, 1, 669, 1, 669, 1, 670, 1, 670, 1, 670, 1, 671, 1, 671, 1, 671, 5, 671, 6521, 8, 671, 10, 671, 12, 671, 6524, 9, 671, 1, 672, 1, 672, 1, 672, 1, 673, 1, 673, 1, 673, 1, 674, 1, 674, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 676, 1, 676, 1, 676, 3, 676, 6543, 8, 676, 1, 676, 1, 676, 3, 676, 6547, 8, 676, 1, 676, 3, 676, 6550, 8, 676, 1, 676, 1, 676, 1, 676, 1, 676, 3, 676, 6556, 8, 676, 1, 676, 3, 676, 6559, 8, 676, 1, 676, 1, 676, 1, 676, 3, 676, 6564, 8, 676, 1, 676, 1, 676, 3, 676, 6568, 8, 676, 1, 677, 4, 677, 6571, 8, 677, 11, 677, 12, 677, 6572, 1, 678, 1, 678, 1, 678, 5, 678, 6578, 8, 678, 10, 678, 12, 678, 6581, 9, 678, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 5, 679, 6591, 8, 679, 10, 679, 12, 679, 6594, 9, 679, 1, 679, 1, 679, 1, 680, 4, 680, 6599, 8, 680, 11, 680, 12, 680, 6600, 1, 680, 1, 680, 1, 681, 1, 681, 3, 681, 6607, 8, 681, 1, 681, 3, 681, 6610, 8, 681, 1, 681, 1, 681, 1, 682, 1, 682, 1, 682, 1, 682, 5, 682, 6618, 8, 682, 10, 682, 12, 682, 6621, 9, 682, 1, 682, 1, 682, 1, 683, 1, 683, 1, 683, 1, 683, 5, 683, 6629, 8, 683, 10, 683, 12, 683, 6632, 9, 683, 1, 683, 1, 683, 1, 683, 4, 683, 6637, 8, 683, 11, 683, 12, 683, 6638, 1, 683, 1, 683, 4, 683, 6643, 8, 683, 11, 683, 12, 683, 6644, 1, 683, 5, 683, 6648, 8, 683, 10, 683, 12, 683, 6651, 9, 683, 1, 683, 5, 683, 6654, 8, 683, 10, 683, 12, 683, 6657, 9, 683, 1, 683, 1, 683, 1, 683, 1, 683, 1, 683, 1, 684, 1, 684, 1, 684, 1, 684, 5, 684, 6668, 8, 684, 10, 684, 12, 684, 6671, 9, 684, 1, 684, 1, 684, 1, 684, 4, 684, 6676, 8, 684, 11, 684, 12, 684, 6677, 1, 684, 1, 684, 4, 684, 6682, 8, 684, 11, 684, 12, 684, 6683, 1, 684, 3, 684, 6687, 8, 684, 5, 684, 6689, 8, 684, 10, 684, 12, 684, 6692, 9, 684, 1, 684, 4, 684, 6695, 8, 684, 11, 684, 12, 684, 6696, 1, 684, 4, 684, 6700, 8, 684, 11, 684, 12, 684, 6701, 1, 684, 5, 684, 6705, 8, 684, 10, 684, 12, 684, 6708, 9, 684, 1, 684, 3, 684, 6711, 8, 684, 1, 684, 1, 684, 1, 685, 1, 685, 1, 685, 1, 685, 5, 685, 6719, 8, 685, 10, 685, 12, 685, 6722, 9, 685, 1, 685, 5, 685, 6725, 8, 685, 10, 685, 12, 685, 6728, 9, 685, 1, 685, 1, 685, 5, 685, 6732, 8, 685, 10, 685, 12, 685, 6735, 9, 685, 3, 685, 6737, 8, 685, 1, 686, 1, 686, 1, 686, 1, 687, 1, 687, 1, 688, 1, 688, 1, 688, 1, 688, 1, 688, 1, 689, 1, 689, 3, 689, 6751, 8, 689, 1, 689, 1, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 3, 690, 6775, 8, 690, 1, 690, 5, 690, 6778, 8, 690, 10, 690, 12, 690, 6781, 9, 690, 1, 691, 1, 691, 1, 691, 1, 691, 1, 691, 1, 692, 1, 692, 3, 692, 6790, 8, 692, 1, 692, 1, 692, 1, 693, 1, 693, 1, 693, 1, 693, 1, 693, 5, 693, 6799, 8, 693, 10, 693, 12, 693, 6802, 9, 693, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 695, 1, 695, 1, 695, 1, 695, 1, 695, 1, 695, 1, 696, 1, 696, 1, 696, 1, 696, 1, 696, 1, 697, 1, 697, 1, 697, 1, 697, 1, 697, 1, 698, 1, 698, 1, 698, 1, 698, 1, 698, 1, 699, 1, 699, 1, 699, 1, 699, 1, 699, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 701, 4, 701, 6841, 8, 701, 11, 701, 12, 701, 6842, 1, 701, 1, 701, 5, 701, 6847, 8, 701, 10, 701, 12, 701, 6850, 9, 701, 3, 701, 6852, 8, 701, 1, 702, 1, 702, 3, 702, 6856, 8, 702, 1, 702, 1, 702, 1, 702, 1, 702, 1, 702, 1, 702, 1, 702, 0, 0, 703, 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, 639, 1291, 640, 1293, 641, 1295, 642, 1297, 643, 1299, 644, 1301, 0, 1303, 0, 1305, 0, 1307, 645, 1309, 646, 1311, 647, 1313, 648, 1315, 649, 1317, 650, 1319, 651, 1321, 652, 1323, 653, 1325, 654, 1327, 0, 1329, 655, 1331, 656, 1333, 657, 1335, 0, 1337, 658, 1339, 659, 1341, 660, 1343, 661, 1345, 662, 1347, 663, 1349, 664, 1351, 665, 1353, 666, 1355, 667, 1357, 668, 1359, 0, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 673, 1371, 674, 1373, 675, 1375, 676, 1377, 677, 1379, 678, 1381, 679, 1383, 680, 1385, 0, 1387, 681, 1389, 682, 1391, 0, 1393, 0, 1395, 0, 1397, 683, 1399, 0, 1401, 0, 1403, 687, 1405, 684, 1407, 685, 1409, 686, 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, 87, 87, 119, 119, 2, 0, 81, 81, 113, 113, 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, 6936, 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, 1289, 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, 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, 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, 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, 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, 1361, 1, 0, 0, 0, 0, 1363, 1, 0, 0, 0, 0, 1365, 1, 0, 0, 0, 0, 1367, 1, 0, 0, 0, 0, 1369, 1, 0, 0, 0, 0, 1371, 1, 0, 0, 0, 0, 1373, 1, 0, 0, 0, 0, 1375, 1, 0, 0, 0, 0, 1377, 1, 0, 0, 0, 0, 1379, 1, 0, 0, 0, 1, 1381, 1, 0, 0, 0, 1, 1383, 1, 0, 0, 0, 1, 1387, 1, 0, 0, 0, 1, 1389, 1, 0, 0, 0, 2, 1393, 1, 0, 0, 0, 2, 1395, 1, 0, 0, 0, 2, 1397, 1, 0, 0, 0, 3, 1399, 1, 0, 0, 0, 3, 1401, 1, 0, 0, 0, 3, 1403, 1, 0, 0, 0, 3, 1405, 1, 0, 0, 0, 4, 1407, 1, 0, 0, 0, 4, 1409, 1, 0, 0, 0, 5, 1411, 1, 0, 0, 0, 7, 1413, 1, 0, 0, 0, 9, 1415, 1, 0, 0, 0, 11, 1417, 1, 0, 0, 0, 13, 1419, 1, 0, 0, 0, 15, 1421, 1, 0, 0, 0, 17, 1423, 1, 0, 0, 0, 19, 1425, 1, 0, 0, 0, 21, 1427, 1, 0, 0, 0, 23, 1429, 1, 0, 0, 0, 25, 1431, 1, 0, 0, 0, 27, 1433, 1, 0, 0, 0, 29, 1435, 1, 0, 0, 0, 31, 1437, 1, 0, 0, 0, 33, 1439, 1, 0, 0, 0, 35, 1441, 1, 0, 0, 0, 37, 1443, 1, 0, 0, 0, 39, 1445, 1, 0, 0, 0, 41, 1448, 1, 0, 0, 0, 43, 1451, 1, 0, 0, 0, 45, 1454, 1, 0, 0, 0, 47, 1457, 1, 0, 0, 0, 49, 1460, 1, 0, 0, 0, 51, 1463, 1, 0, 0, 0, 53, 1466, 1, 0, 0, 0, 55, 1469, 1, 0, 0, 0, 57, 1472, 1, 0, 0, 0, 59, 1474, 1, 0, 0, 0, 61, 1500, 1, 0, 0, 0, 63, 1511, 1, 0, 0, 0, 65, 1527, 1, 0, 0, 0, 67, 1529, 1, 0, 0, 0, 69, 1531, 1, 0, 0, 0, 71, 1533, 1, 0, 0, 0, 73, 1537, 1, 0, 0, 0, 75, 1545, 1, 0, 0, 0, 77, 1553, 1, 0, 0, 0, 79, 1557, 1, 0, 0, 0, 81, 1561, 1, 0, 0, 0, 83, 1567, 1, 0, 0, 0, 85, 1570, 1, 0, 0, 0, 87, 1574, 1, 0, 0, 0, 89, 1585, 1, 0, 0, 0, 91, 1590, 1, 0, 0, 0, 93, 1595, 1, 0, 0, 0, 95, 1600, 1, 0, 0, 0, 97, 1606, 1, 0, 0, 0, 99, 1614, 1, 0, 0, 0, 101, 1621, 1, 0, 0, 0, 103, 1632, 1, 0, 0, 0, 105, 1639, 1, 0, 0, 0, 107, 1655, 1, 0, 0, 0, 109, 1668, 1, 0, 0, 0, 111, 1681, 1, 0, 0, 0, 113, 1694, 1, 0, 0, 0, 115, 1712, 1, 0, 0, 0, 117, 1725, 1, 0, 0, 0, 119, 1733, 1, 0, 0, 0, 121, 1744, 1, 0, 0, 0, 123, 1749, 1, 0, 0, 0, 125, 1758, 1, 0, 0, 0, 127, 1761, 1, 0, 0, 0, 129, 1766, 1, 0, 0, 0, 131, 1773, 1, 0, 0, 0, 133, 1779, 1, 0, 0, 0, 135, 1785, 1, 0, 0, 0, 137, 1789, 1, 0, 0, 0, 139, 1797, 1, 0, 0, 0, 141, 1802, 1, 0, 0, 0, 143, 1808, 1, 0, 0, 0, 145, 1814, 1, 0, 0, 0, 147, 1821, 1, 0, 0, 0, 149, 1824, 1, 0, 0, 0, 151, 1834, 1, 0, 0, 0, 153, 1844, 1, 0, 0, 0, 155, 1849, 1, 0, 0, 0, 157, 1857, 1, 0, 0, 0, 159, 1865, 1, 0, 0, 0, 161, 1871, 1, 0, 0, 0, 163, 1881, 1, 0, 0, 0, 165, 1896, 1, 0, 0, 0, 167, 1900, 1, 0, 0, 0, 169, 1905, 1, 0, 0, 0, 171, 1912, 1, 0, 0, 0, 173, 1915, 1, 0, 0, 0, 175, 1920, 1, 0, 0, 0, 177, 1923, 1, 0, 0, 0, 179, 1929, 1, 0, 0, 0, 181, 1937, 1, 0, 0, 0, 183, 1945, 1, 0, 0, 0, 185, 1956, 1, 0, 0, 0, 187, 1966, 1, 0, 0, 0, 189, 1973, 1, 0, 0, 0, 191, 1986, 1, 0, 0, 0, 193, 1991, 1, 0, 0, 0, 195, 2001, 1, 0, 0, 0, 197, 2007, 1, 0, 0, 0, 199, 2014, 1, 0, 0, 0, 201, 2019, 1, 0, 0, 0, 203, 2022, 1, 0, 0, 0, 205, 2031, 1, 0, 0, 0, 207, 2037, 1, 0, 0, 0, 209, 2044, 1, 0, 0, 0, 211, 2051, 1, 0, 0, 0, 213, 2057, 1, 0, 0, 0, 215, 2064, 1, 0, 0, 0, 217, 2073, 1, 0, 0, 0, 219, 2078, 1, 0, 0, 0, 221, 2084, 1, 0, 0, 0, 223, 2091, 1, 0, 0, 0, 225, 2096, 1, 0, 0, 0, 227, 2102, 1, 0, 0, 0, 229, 2111, 1, 0, 0, 0, 231, 2116, 1, 0, 0, 0, 233, 2122, 1, 0, 0, 0, 235, 2129, 1, 0, 0, 0, 237, 2134, 1, 0, 0, 0, 239, 2148, 1, 0, 0, 0, 241, 2155, 1, 0, 0, 0, 243, 2165, 1, 0, 0, 0, 245, 2178, 1, 0, 0, 0, 247, 2184, 1, 0, 0, 0, 249, 2199, 1, 0, 0, 0, 251, 2206, 1, 0, 0, 0, 253, 2211, 1, 0, 0, 0, 255, 2217, 1, 0, 0, 0, 257, 2223, 1, 0, 0, 0, 259, 2226, 1, 0, 0, 0, 261, 2233, 1, 0, 0, 0, 263, 2238, 1, 0, 0, 0, 265, 2243, 1, 0, 0, 0, 267, 2248, 1, 0, 0, 0, 269, 2256, 1, 0, 0, 0, 271, 2264, 1, 0, 0, 0, 273, 2270, 1, 0, 0, 0, 275, 2275, 1, 0, 0, 0, 277, 2284, 1, 0, 0, 0, 279, 2290, 1, 0, 0, 0, 281, 2298, 1, 0, 0, 0, 283, 2306, 1, 0, 0, 0, 285, 2312, 1, 0, 0, 0, 287, 2321, 1, 0, 0, 0, 289, 2328, 1, 0, 0, 0, 291, 2335, 1, 0, 0, 0, 293, 2339, 1, 0, 0, 0, 295, 2345, 1, 0, 0, 0, 297, 2351, 1, 0, 0, 0, 299, 2361, 1, 0, 0, 0, 301, 2366, 1, 0, 0, 0, 303, 2372, 1, 0, 0, 0, 305, 2379, 1, 0, 0, 0, 307, 2389, 1, 0, 0, 0, 309, 2400, 1, 0, 0, 0, 311, 2403, 1, 0, 0, 0, 313, 2413, 1, 0, 0, 0, 315, 2422, 1, 0, 0, 0, 317, 2429, 1, 0, 0, 0, 319, 2435, 1, 0, 0, 0, 321, 2438, 1, 0, 0, 0, 323, 2444, 1, 0, 0, 0, 325, 2451, 1, 0, 0, 0, 327, 2459, 1, 0, 0, 0, 329, 2468, 1, 0, 0, 0, 331, 2476, 1, 0, 0, 0, 333, 2482, 1, 0, 0, 0, 335, 2498, 1, 0, 0, 0, 337, 2509, 1, 0, 0, 0, 339, 2515, 1, 0, 0, 0, 341, 2521, 1, 0, 0, 0, 343, 2529, 1, 0, 0, 0, 345, 2537, 1, 0, 0, 0, 347, 2546, 1, 0, 0, 0, 349, 2553, 1, 0, 0, 0, 351, 2563, 1, 0, 0, 0, 353, 2577, 1, 0, 0, 0, 355, 2588, 1, 0, 0, 0, 357, 2600, 1, 0, 0, 0, 359, 2608, 1, 0, 0, 0, 361, 2617, 1, 0, 0, 0, 363, 2628, 1, 0, 0, 0, 365, 2633, 1, 0, 0, 0, 367, 2638, 1, 0, 0, 0, 369, 2642, 1, 0, 0, 0, 371, 2649, 1, 0, 0, 0, 373, 2655, 1, 0, 0, 0, 375, 2660, 1, 0, 0, 0, 377, 2669, 1, 0, 0, 0, 379, 2673, 1, 0, 0, 0, 381, 2684, 1, 0, 0, 0, 383, 2692, 1, 0, 0, 0, 385, 2701, 1, 0, 0, 0, 387, 2710, 1, 0, 0, 0, 389, 2718, 1, 0, 0, 0, 391, 2725, 1, 0, 0, 0, 393, 2735, 1, 0, 0, 0, 395, 2746, 1, 0, 0, 0, 397, 2757, 1, 0, 0, 0, 399, 2765, 1, 0, 0, 0, 401, 2773, 1, 0, 0, 0, 403, 2782, 1, 0, 0, 0, 405, 2789, 1, 0, 0, 0, 407, 2796, 1, 0, 0, 0, 409, 2801, 1, 0, 0, 0, 411, 2806, 1, 0, 0, 0, 413, 2813, 1, 0, 0, 0, 415, 2822, 1, 0, 0, 0, 417, 2832, 1, 0, 0, 0, 419, 2837, 1, 0, 0, 0, 421, 2844, 1, 0, 0, 0, 423, 2850, 1, 0, 0, 0, 425, 2858, 1, 0, 0, 0, 427, 2868, 1, 0, 0, 0, 429, 2878, 1, 0, 0, 0, 431, 2886, 1, 0, 0, 0, 433, 2894, 1, 0, 0, 0, 435, 2904, 1, 0, 0, 0, 437, 2913, 1, 0, 0, 0, 439, 2920, 1, 0, 0, 0, 441, 2926, 1, 0, 0, 0, 443, 2936, 1, 0, 0, 0, 445, 2942, 1, 0, 0, 0, 447, 2950, 1, 0, 0, 0, 449, 2959, 1, 0, 0, 0, 451, 2969, 1, 0, 0, 0, 453, 2976, 1, 0, 0, 0, 455, 2984, 1, 0, 0, 0, 457, 2992, 1, 0, 0, 0, 459, 2999, 1, 0, 0, 0, 461, 3004, 1, 0, 0, 0, 463, 3009, 1, 0, 0, 0, 465, 3018, 1, 0, 0, 0, 467, 3021, 1, 0, 0, 0, 469, 3031, 1, 0, 0, 0, 471, 3041, 1, 0, 0, 0, 473, 3050, 1, 0, 0, 0, 475, 3060, 1, 0, 0, 0, 477, 3070, 1, 0, 0, 0, 479, 3076, 1, 0, 0, 0, 481, 3084, 1, 0, 0, 0, 483, 3092, 1, 0, 0, 0, 485, 3101, 1, 0, 0, 0, 487, 3108, 1, 0, 0, 0, 489, 3120, 1, 0, 0, 0, 491, 3127, 1, 0, 0, 0, 493, 3135, 1, 0, 0, 0, 495, 3143, 1, 0, 0, 0, 497, 3153, 1, 0, 0, 0, 499, 3157, 1, 0, 0, 0, 501, 3163, 1, 0, 0, 0, 503, 3172, 1, 0, 0, 0, 505, 3178, 1, 0, 0, 0, 507, 3183, 1, 0, 0, 0, 509, 3193, 1, 0, 0, 0, 511, 3199, 1, 0, 0, 0, 513, 3206, 1, 0, 0, 0, 515, 3211, 1, 0, 0, 0, 517, 3217, 1, 0, 0, 0, 519, 3226, 1, 0, 0, 0, 521, 3231, 1, 0, 0, 0, 523, 3239, 1, 0, 0, 0, 525, 3245, 1, 0, 0, 0, 527, 3253, 1, 0, 0, 0, 529, 3266, 1, 0, 0, 0, 531, 3275, 1, 0, 0, 0, 533, 3281, 1, 0, 0, 0, 535, 3288, 1, 0, 0, 0, 537, 3297, 1, 0, 0, 0, 539, 3302, 1, 0, 0, 0, 541, 3308, 1, 0, 0, 0, 543, 3313, 1, 0, 0, 0, 545, 3318, 1, 0, 0, 0, 547, 3324, 1, 0, 0, 0, 549, 3329, 1, 0, 0, 0, 551, 3332, 1, 0, 0, 0, 553, 3340, 1, 0, 0, 0, 555, 3347, 1, 0, 0, 0, 557, 3354, 1, 0, 0, 0, 559, 3360, 1, 0, 0, 0, 561, 3367, 1, 0, 0, 0, 563, 3370, 1, 0, 0, 0, 565, 3374, 1, 0, 0, 0, 567, 3379, 1, 0, 0, 0, 569, 3388, 1, 0, 0, 0, 571, 3395, 1, 0, 0, 0, 573, 3403, 1, 0, 0, 0, 575, 3409, 1, 0, 0, 0, 577, 3415, 1, 0, 0, 0, 579, 3422, 1, 0, 0, 0, 581, 3430, 1, 0, 0, 0, 583, 3440, 1, 0, 0, 0, 585, 3448, 1, 0, 0, 0, 587, 3457, 1, 0, 0, 0, 589, 3463, 1, 0, 0, 0, 591, 3473, 1, 0, 0, 0, 593, 3481, 1, 0, 0, 0, 595, 3490, 1, 0, 0, 0, 597, 3499, 1, 0, 0, 0, 599, 3505, 1, 0, 0, 0, 601, 3516, 1, 0, 0, 0, 603, 3527, 1, 0, 0, 0, 605, 3537, 1, 0, 0, 0, 607, 3545, 1, 0, 0, 0, 609, 3551, 1, 0, 0, 0, 611, 3557, 1, 0, 0, 0, 613, 3562, 1, 0, 0, 0, 615, 3571, 1, 0, 0, 0, 617, 3579, 1, 0, 0, 0, 619, 3589, 1, 0, 0, 0, 621, 3593, 1, 0, 0, 0, 623, 3601, 1, 0, 0, 0, 625, 3609, 1, 0, 0, 0, 627, 3618, 1, 0, 0, 0, 629, 3626, 1, 0, 0, 0, 631, 3633, 1, 0, 0, 0, 633, 3644, 1, 0, 0, 0, 635, 3652, 1, 0, 0, 0, 637, 3660, 1, 0, 0, 0, 639, 3666, 1, 0, 0, 0, 641, 3674, 1, 0, 0, 0, 643, 3683, 1, 0, 0, 0, 645, 3691, 1, 0, 0, 0, 647, 3698, 1, 0, 0, 0, 649, 3703, 1, 0, 0, 0, 651, 3712, 1, 0, 0, 0, 653, 3717, 1, 0, 0, 0, 655, 3722, 1, 0, 0, 0, 657, 3732, 1, 0, 0, 0, 659, 3739, 1, 0, 0, 0, 661, 3746, 1, 0, 0, 0, 663, 3753, 1, 0, 0, 0, 665, 3760, 1, 0, 0, 0, 667, 3769, 1, 0, 0, 0, 669, 3778, 1, 0, 0, 0, 671, 3788, 1, 0, 0, 0, 673, 3801, 1, 0, 0, 0, 675, 3808, 1, 0, 0, 0, 677, 3816, 1, 0, 0, 0, 679, 3820, 1, 0, 0, 0, 681, 3826, 1, 0, 0, 0, 683, 3831, 1, 0, 0, 0, 685, 3838, 1, 0, 0, 0, 687, 3847, 1, 0, 0, 0, 689, 3854, 1, 0, 0, 0, 691, 3865, 1, 0, 0, 0, 693, 3871, 1, 0, 0, 0, 695, 3881, 1, 0, 0, 0, 697, 3892, 1, 0, 0, 0, 699, 3898, 1, 0, 0, 0, 701, 3905, 1, 0, 0, 0, 703, 3913, 1, 0, 0, 0, 705, 3920, 1, 0, 0, 0, 707, 3926, 1, 0, 0, 0, 709, 3932, 1, 0, 0, 0, 711, 3939, 1, 0, 0, 0, 713, 3946, 1, 0, 0, 0, 715, 3954, 1, 0, 0, 0, 717, 3965, 1, 0, 0, 0, 719, 3970, 1, 0, 0, 0, 721, 3979, 1, 0, 0, 0, 723, 3989, 1, 0, 0, 0, 725, 3994, 1, 0, 0, 0, 727, 4006, 1, 0, 0, 0, 729, 4014, 1, 0, 0, 0, 731, 4023, 1, 0, 0, 0, 733, 4031, 1, 0, 0, 0, 735, 4036, 1, 0, 0, 0, 737, 4042, 1, 0, 0, 0, 739, 4052, 1, 0, 0, 0, 741, 4064, 1, 0, 0, 0, 743, 4076, 1, 0, 0, 0, 745, 4084, 1, 0, 0, 0, 747, 4093, 1, 0, 0, 0, 749, 4102, 1, 0, 0, 0, 751, 4108, 1, 0, 0, 0, 753, 4115, 1, 0, 0, 0, 755, 4122, 1, 0, 0, 0, 757, 4128, 1, 0, 0, 0, 759, 4137, 1, 0, 0, 0, 761, 4147, 1, 0, 0, 0, 763, 4155, 1, 0, 0, 0, 765, 4163, 1, 0, 0, 0, 767, 4168, 1, 0, 0, 0, 769, 4177, 1, 0, 0, 0, 771, 4188, 1, 0, 0, 0, 773, 4196, 1, 0, 0, 0, 775, 4201, 1, 0, 0, 0, 777, 4209, 1, 0, 0, 0, 779, 4215, 1, 0, 0, 0, 781, 4219, 1, 0, 0, 0, 783, 4224, 1, 0, 0, 0, 785, 4228, 1, 0, 0, 0, 787, 4233, 1, 0, 0, 0, 789, 4241, 1, 0, 0, 0, 791, 4248, 1, 0, 0, 0, 793, 4252, 1, 0, 0, 0, 795, 4260, 1, 0, 0, 0, 797, 4265, 1, 0, 0, 0, 799, 4275, 1, 0, 0, 0, 801, 4284, 1, 0, 0, 0, 803, 4288, 1, 0, 0, 0, 805, 4296, 1, 0, 0, 0, 807, 4303, 1, 0, 0, 0, 809, 4311, 1, 0, 0, 0, 811, 4317, 1, 0, 0, 0, 813, 4326, 1, 0, 0, 0, 815, 4332, 1, 0, 0, 0, 817, 4336, 1, 0, 0, 0, 819, 4344, 1, 0, 0, 0, 821, 4353, 1, 0, 0, 0, 823, 4359, 1, 0, 0, 0, 825, 4368, 1, 0, 0, 0, 827, 4374, 1, 0, 0, 0, 829, 4379, 1, 0, 0, 0, 831, 4386, 1, 0, 0, 0, 833, 4394, 1, 0, 0, 0, 835, 4402, 1, 0, 0, 0, 837, 4411, 1, 0, 0, 0, 839, 4421, 1, 0, 0, 0, 841, 4426, 1, 0, 0, 0, 843, 4430, 1, 0, 0, 0, 845, 4436, 1, 0, 0, 0, 847, 4445, 1, 0, 0, 0, 849, 4455, 1, 0, 0, 0, 851, 4460, 1, 0, 0, 0, 853, 4470, 1, 0, 0, 0, 855, 4476, 1, 0, 0, 0, 857, 4481, 1, 0, 0, 0, 859, 4488, 1, 0, 0, 0, 861, 4496, 1, 0, 0, 0, 863, 4510, 1, 0, 0, 0, 865, 4521, 1, 0, 0, 0, 867, 4528, 1, 0, 0, 0, 869, 4547, 1, 0, 0, 0, 871, 4575, 1, 0, 0, 0, 873, 4602, 1, 0, 0, 0, 875, 4608, 1, 0, 0, 0, 877, 4621, 1, 0, 0, 0, 879, 4631, 1, 0, 0, 0, 881, 4642, 1, 0, 0, 0, 883, 4652, 1, 0, 0, 0, 885, 4662, 1, 0, 0, 0, 887, 4671, 1, 0, 0, 0, 889, 4677, 1, 0, 0, 0, 891, 4685, 1, 0, 0, 0, 893, 4698, 1, 0, 0, 0, 895, 4703, 1, 0, 0, 0, 897, 4711, 1, 0, 0, 0, 899, 4718, 1, 0, 0, 0, 901, 4725, 1, 0, 0, 0, 903, 4736, 1, 0, 0, 0, 905, 4746, 1, 0, 0, 0, 907, 4753, 1, 0, 0, 0, 909, 4760, 1, 0, 0, 0, 911, 4768, 1, 0, 0, 0, 913, 4776, 1, 0, 0, 0, 915, 4786, 1, 0, 0, 0, 917, 4793, 1, 0, 0, 0, 919, 4800, 1, 0, 0, 0, 921, 4807, 1, 0, 0, 0, 923, 4819, 1, 0, 0, 0, 925, 4823, 1, 0, 0, 0, 927, 4827, 1, 0, 0, 0, 929, 4833, 1, 0, 0, 0, 931, 4846, 1, 0, 0, 0, 933, 4858, 1, 0, 0, 0, 935, 4862, 1, 0, 0, 0, 937, 4866, 1, 0, 0, 0, 939, 4875, 1, 0, 0, 0, 941, 4883, 1, 0, 0, 0, 943, 4894, 1, 0, 0, 0, 945, 4900, 1, 0, 0, 0, 947, 4908, 1, 0, 0, 0, 949, 4917, 1, 0, 0, 0, 951, 4921, 1, 0, 0, 0, 953, 4929, 1, 0, 0, 0, 955, 4940, 1, 0, 0, 0, 957, 4949, 1, 0, 0, 0, 959, 4954, 1, 0, 0, 0, 961, 4961, 1, 0, 0, 0, 963, 4966, 1, 0, 0, 0, 965, 4973, 1, 0, 0, 0, 967, 4978, 1, 0, 0, 0, 969, 4987, 1, 0, 0, 0, 971, 4992, 1, 0, 0, 0, 973, 5004, 1, 0, 0, 0, 975, 5015, 1, 0, 0, 0, 977, 5024, 1, 0, 0, 0, 979, 5032, 1, 0, 0, 0, 981, 5046, 1, 0, 0, 0, 983, 5054, 1, 0, 0, 0, 985, 5065, 1, 0, 0, 0, 987, 5072, 1, 0, 0, 0, 989, 5079, 1, 0, 0, 0, 991, 5086, 1, 0, 0, 0, 993, 5093, 1, 0, 0, 0, 995, 5097, 1, 0, 0, 0, 997, 5101, 1, 0, 0, 0, 999, 5106, 1, 0, 0, 0, 1001, 5111, 1, 0, 0, 0, 1003, 5119, 1, 0, 0, 0, 1005, 5125, 1, 0, 0, 0, 1007, 5135, 1, 0, 0, 0, 1009, 5140, 1, 0, 0, 0, 1011, 5160, 1, 0, 0, 0, 1013, 5178, 1, 0, 0, 0, 1015, 5184, 1, 0, 0, 0, 1017, 5197, 1, 0, 0, 0, 1019, 5208, 1, 0, 0, 0, 1021, 5214, 1, 0, 0, 0, 1023, 5223, 1, 0, 0, 0, 1025, 5231, 1, 0, 0, 0, 1027, 5235, 1, 0, 0, 0, 1029, 5247, 1, 0, 0, 0, 1031, 5255, 1, 0, 0, 0, 1033, 5261, 1, 0, 0, 0, 1035, 5267, 1, 0, 0, 0, 1037, 5275, 1, 0, 0, 0, 1039, 5283, 1, 0, 0, 0, 1041, 5289, 1, 0, 0, 0, 1043, 5294, 1, 0, 0, 0, 1045, 5301, 1, 0, 0, 0, 1047, 5307, 1, 0, 0, 0, 1049, 5313, 1, 0, 0, 0, 1051, 5322, 1, 0, 0, 0, 1053, 5328, 1, 0, 0, 0, 1055, 5332, 1, 0, 0, 0, 1057, 5337, 1, 0, 0, 0, 1059, 5344, 1, 0, 0, 0, 1061, 5352, 1, 0, 0, 0, 1063, 5362, 1, 0, 0, 0, 1065, 5369, 1, 0, 0, 0, 1067, 5374, 1, 0, 0, 0, 1069, 5379, 1, 0, 0, 0, 1071, 5383, 1, 0, 0, 0, 1073, 5388, 1, 0, 0, 0, 1075, 5393, 1, 0, 0, 0, 1077, 5401, 1, 0, 0, 0, 1079, 5409, 1, 0, 0, 0, 1081, 5413, 1, 0, 0, 0, 1083, 5417, 1, 0, 0, 0, 1085, 5427, 1, 0, 0, 0, 1087, 5433, 1, 0, 0, 0, 1089, 5437, 1, 0, 0, 0, 1091, 5441, 1, 0, 0, 0, 1093, 5444, 1, 0, 0, 0, 1095, 5450, 1, 0, 0, 0, 1097, 5460, 1, 0, 0, 0, 1099, 5464, 1, 0, 0, 0, 1101, 5467, 1, 0, 0, 0, 1103, 5473, 1, 0, 0, 0, 1105, 5481, 1, 0, 0, 0, 1107, 5487, 1, 0, 0, 0, 1109, 5493, 1, 0, 0, 0, 1111, 5498, 1, 0, 0, 0, 1113, 5503, 1, 0, 0, 0, 1115, 5514, 1, 0, 0, 0, 1117, 5520, 1, 0, 0, 0, 1119, 5533, 1, 0, 0, 0, 1121, 5540, 1, 0, 0, 0, 1123, 5548, 1, 0, 0, 0, 1125, 5553, 1, 0, 0, 0, 1127, 5559, 1, 0, 0, 0, 1129, 5564, 1, 0, 0, 0, 1131, 5570, 1, 0, 0, 0, 1133, 5575, 1, 0, 0, 0, 1135, 5581, 1, 0, 0, 0, 1137, 5587, 1, 0, 0, 0, 1139, 5594, 1, 0, 0, 0, 1141, 5598, 1, 0, 0, 0, 1143, 5603, 1, 0, 0, 0, 1145, 5607, 1, 0, 0, 0, 1147, 5612, 1, 0, 0, 0, 1149, 5616, 1, 0, 0, 0, 1151, 5621, 1, 0, 0, 0, 1153, 5625, 1, 0, 0, 0, 1155, 5630, 1, 0, 0, 0, 1157, 5635, 1, 0, 0, 0, 1159, 5640, 1, 0, 0, 0, 1161, 5645, 1, 0, 0, 0, 1163, 5651, 1, 0, 0, 0, 1165, 5657, 1, 0, 0, 0, 1167, 5663, 1, 0, 0, 0, 1169, 5674, 1, 0, 0, 0, 1171, 5686, 1, 0, 0, 0, 1173, 5703, 1, 0, 0, 0, 1175, 5709, 1, 0, 0, 0, 1177, 5722, 1, 0, 0, 0, 1179, 5728, 1, 0, 0, 0, 1181, 5734, 1, 0, 0, 0, 1183, 5740, 1, 0, 0, 0, 1185, 5744, 1, 0, 0, 0, 1187, 5751, 1, 0, 0, 0, 1189, 5761, 1, 0, 0, 0, 1191, 5768, 1, 0, 0, 0, 1193, 5776, 1, 0, 0, 0, 1195, 5783, 1, 0, 0, 0, 1197, 5788, 1, 0, 0, 0, 1199, 5794, 1, 0, 0, 0, 1201, 5798, 1, 0, 0, 0, 1203, 5810, 1, 0, 0, 0, 1205, 5829, 1, 0, 0, 0, 1207, 5841, 1, 0, 0, 0, 1209, 5855, 1, 0, 0, 0, 1211, 5870, 1, 0, 0, 0, 1213, 5883, 1, 0, 0, 0, 1215, 5896, 1, 0, 0, 0, 1217, 5908, 1, 0, 0, 0, 1219, 5921, 1, 0, 0, 0, 1221, 5936, 1, 0, 0, 0, 1223, 5951, 1, 0, 0, 0, 1225, 5973, 1, 0, 0, 0, 1227, 5995, 1, 0, 0, 0, 1229, 6009, 1, 0, 0, 0, 1231, 6016, 1, 0, 0, 0, 1233, 6021, 1, 0, 0, 0, 1235, 6027, 1, 0, 0, 0, 1237, 6038, 1, 0, 0, 0, 1239, 6050, 1, 0, 0, 0, 1241, 6066, 1, 0, 0, 0, 1243, 6082, 1, 0, 0, 0, 1245, 6089, 1, 0, 0, 0, 1247, 6096, 1, 0, 0, 0, 1249, 6105, 1, 0, 0, 0, 1251, 6112, 1, 0, 0, 0, 1253, 6122, 1, 0, 0, 0, 1255, 6129, 1, 0, 0, 0, 1257, 6133, 1, 0, 0, 0, 1259, 6149, 1, 0, 0, 0, 1261, 6158, 1, 0, 0, 0, 1263, 6168, 1, 0, 0, 0, 1265, 6179, 1, 0, 0, 0, 1267, 6188, 1, 0, 0, 0, 1269, 6201, 1, 0, 0, 0, 1271, 6215, 1, 0, 0, 0, 1273, 6232, 1, 0, 0, 0, 1275, 6242, 1, 0, 0, 0, 1277, 6256, 1, 0, 0, 0, 1279, 6266, 1, 0, 0, 0, 1281, 6281, 1, 0, 0, 0, 1283, 6298, 1, 0, 0, 0, 1285, 6302, 1, 0, 0, 0, 1287, 6322, 1, 0, 0, 0, 1289, 6332, 1, 0, 0, 0, 1291, 6354, 1, 0, 0, 0, 1293, 6367, 1, 0, 0, 0, 1295, 6375, 1, 0, 0, 0, 1297, 6383, 1, 0, 0, 0, 1299, 6393, 1, 0, 0, 0, 1301, 6406, 1, 0, 0, 0, 1303, 6410, 1, 0, 0, 0, 1305, 6414, 1, 0, 0, 0, 1307, 6416, 1, 0, 0, 0, 1309, 6419, 1, 0, 0, 0, 1311, 6428, 1, 0, 0, 0, 1313, 6431, 1, 0, 0, 0, 1315, 6440, 1, 0, 0, 0, 1317, 6444, 1, 0, 0, 0, 1319, 6448, 1, 0, 0, 0, 1321, 6452, 1, 0, 0, 0, 1323, 6456, 1, 0, 0, 0, 1325, 6459, 1, 0, 0, 0, 1327, 6468, 1, 0, 0, 0, 1329, 6474, 1, 0, 0, 0, 1331, 6477, 1, 0, 0, 0, 1333, 6481, 1, 0, 0, 0, 1335, 6490, 1, 0, 0, 0, 1337, 6497, 1, 0, 0, 0, 1339, 6500, 1, 0, 0, 0, 1341, 6508, 1, 0, 0, 0, 1343, 6511, 1, 0, 0, 0, 1345, 6514, 1, 0, 0, 0, 1347, 6517, 1, 0, 0, 0, 1349, 6525, 1, 0, 0, 0, 1351, 6528, 1, 0, 0, 0, 1353, 6531, 1, 0, 0, 0, 1355, 6533, 1, 0, 0, 0, 1357, 6567, 1, 0, 0, 0, 1359, 6570, 1, 0, 0, 0, 1361, 6574, 1, 0, 0, 0, 1363, 6582, 1, 0, 0, 0, 1365, 6598, 1, 0, 0, 0, 1367, 6609, 1, 0, 0, 0, 1369, 6613, 1, 0, 0, 0, 1371, 6624, 1, 0, 0, 0, 1373, 6663, 1, 0, 0, 0, 1375, 6714, 1, 0, 0, 0, 1377, 6738, 1, 0, 0, 0, 1379, 6741, 1, 0, 0, 0, 1381, 6743, 1, 0, 0, 0, 1383, 6748, 1, 0, 0, 0, 1385, 6779, 1, 0, 0, 0, 1387, 6782, 1, 0, 0, 0, 1389, 6787, 1, 0, 0, 0, 1391, 6800, 1, 0, 0, 0, 1393, 6803, 1, 0, 0, 0, 1395, 6808, 1, 0, 0, 0, 1397, 6814, 1, 0, 0, 0, 1399, 6819, 1, 0, 0, 0, 1401, 6824, 1, 0, 0, 0, 1403, 6829, 1, 0, 0, 0, 1405, 6834, 1, 0, 0, 0, 1407, 6851, 1, 0, 0, 0, 1409, 6853, 1, 0, 0, 0, 1411, 1412, 5, 36, 0, 0, 1412, 6, 1, 0, 0, 0, 1413, 1414, 5, 40, 0, 0, 1414, 8, 1, 0, 0, 0, 1415, 1416, 5, 41, 0, 0, 1416, 10, 1, 0, 0, 0, 1417, 1418, 5, 91, 0, 0, 1418, 12, 1, 0, 0, 0, 1419, 1420, 5, 93, 0, 0, 1420, 14, 1, 0, 0, 0, 1421, 1422, 5, 44, 0, 0, 1422, 16, 1, 0, 0, 0, 1423, 1424, 5, 59, 0, 0, 1424, 18, 1, 0, 0, 0, 1425, 1426, 5, 58, 0, 0, 1426, 20, 1, 0, 0, 0, 1427, 1428, 5, 42, 0, 0, 1428, 22, 1, 0, 0, 0, 1429, 1430, 5, 61, 0, 0, 1430, 24, 1, 0, 0, 0, 1431, 1432, 5, 46, 0, 0, 1432, 26, 1, 0, 0, 0, 1433, 1434, 5, 43, 0, 0, 1434, 28, 1, 0, 0, 0, 1435, 1436, 5, 45, 0, 0, 1436, 30, 1, 0, 0, 0, 1437, 1438, 5, 47, 0, 0, 1438, 32, 1, 0, 0, 0, 1439, 1440, 5, 94, 0, 0, 1440, 34, 1, 0, 0, 0, 1441, 1442, 5, 60, 0, 0, 1442, 36, 1, 0, 0, 0, 1443, 1444, 5, 62, 0, 0, 1444, 38, 1, 0, 0, 0, 1445, 1446, 5, 60, 0, 0, 1446, 1447, 5, 60, 0, 0, 1447, 40, 1, 0, 0, 0, 1448, 1449, 5, 62, 0, 0, 1449, 1450, 5, 62, 0, 0, 1450, 42, 1, 0, 0, 0, 1451, 1452, 5, 58, 0, 0, 1452, 1453, 5, 61, 0, 0, 1453, 44, 1, 0, 0, 0, 1454, 1455, 5, 60, 0, 0, 1455, 1456, 5, 61, 0, 0, 1456, 46, 1, 0, 0, 0, 1457, 1458, 5, 61, 0, 0, 1458, 1459, 5, 62, 0, 0, 1459, 48, 1, 0, 0, 0, 1460, 1461, 5, 62, 0, 0, 1461, 1462, 5, 61, 0, 0, 1462, 50, 1, 0, 0, 0, 1463, 1464, 5, 46, 0, 0, 1464, 1465, 5, 46, 0, 0, 1465, 52, 1, 0, 0, 0, 1466, 1467, 5, 60, 0, 0, 1467, 1468, 5, 62, 0, 0, 1468, 54, 1, 0, 0, 0, 1469, 1470, 5, 58, 0, 0, 1470, 1471, 5, 58, 0, 0, 1471, 56, 1, 0, 0, 0, 1472, 1473, 5, 37, 0, 0, 1473, 58, 1, 0, 0, 0, 1474, 1476, 5, 36, 0, 0, 1475, 1477, 7, 0, 0, 0, 1476, 1475, 1, 0, 0, 0, 1477, 1478, 1, 0, 0, 0, 1478, 1476, 1, 0, 0, 0, 1478, 1479, 1, 0, 0, 0, 1479, 60, 1, 0, 0, 0, 1480, 1496, 3, 65, 30, 0, 1481, 1485, 5, 43, 0, 0, 1482, 1483, 5, 45, 0, 0, 1483, 1485, 4, 28, 0, 0, 1484, 1481, 1, 0, 0, 0, 1484, 1482, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 1484, 1, 0, 0, 0, 1486, 1487, 1, 0, 0, 0, 1487, 1491, 1, 0, 0, 0, 1488, 1492, 3, 65, 30, 0, 1489, 1490, 5, 47, 0, 0, 1490, 1492, 4, 28, 1, 0, 1491, 1488, 1, 0, 0, 0, 1491, 1489, 1, 0, 0, 0, 1492, 1496, 1, 0, 0, 0, 1493, 1494, 5, 47, 0, 0, 1494, 1496, 4, 28, 2, 0, 1495, 1480, 1, 0, 0, 0, 1495, 1484, 1, 0, 0, 0, 1495, 1493, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1495, 1, 0, 0, 0, 1497, 1498, 1, 0, 0, 0, 1498, 1501, 1, 0, 0, 0, 1499, 1501, 7, 1, 0, 0, 1500, 1495, 1, 0, 0, 0, 1500, 1499, 1, 0, 0, 0, 1501, 1502, 1, 0, 0, 0, 1502, 1503, 6, 28, 0, 0, 1503, 62, 1, 0, 0, 0, 1504, 1510, 3, 67, 31, 0, 1505, 1506, 5, 45, 0, 0, 1506, 1510, 4, 29, 3, 0, 1507, 1508, 5, 47, 0, 0, 1508, 1510, 4, 29, 4, 0, 1509, 1504, 1, 0, 0, 0, 1509, 1505, 1, 0, 0, 0, 1509, 1507, 1, 0, 0, 0, 1510, 1513, 1, 0, 0, 0, 1511, 1509, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1514, 1, 0, 0, 0, 1513, 1511, 1, 0, 0, 0, 1514, 1516, 3, 69, 32, 0, 1515, 1517, 3, 61, 28, 0, 1516, 1515, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1521, 1, 0, 0, 0, 1518, 1522, 5, 43, 0, 0, 1519, 1520, 5, 45, 0, 0, 1520, 1522, 4, 29, 5, 0, 1521, 1518, 1, 0, 0, 0, 1521, 1519, 1, 0, 0, 0, 1522, 1523, 1, 0, 0, 0, 1523, 1521, 1, 0, 0, 0, 1523, 1524, 1, 0, 0, 0, 1524, 1525, 1, 0, 0, 0, 1525, 1526, 6, 29, 1, 0, 1526, 64, 1, 0, 0, 0, 1527, 1528, 7, 2, 0, 0, 1528, 66, 1, 0, 0, 0, 1529, 1530, 7, 3, 0, 0, 1530, 68, 1, 0, 0, 0, 1531, 1532, 7, 4, 0, 0, 1532, 70, 1, 0, 0, 0, 1533, 1534, 7, 5, 0, 0, 1534, 1535, 7, 6, 0, 0, 1535, 1536, 7, 6, 0, 0, 1536, 72, 1, 0, 0, 0, 1537, 1538, 7, 5, 0, 0, 1538, 1539, 7, 7, 0, 0, 1539, 1540, 7, 5, 0, 0, 1540, 1541, 7, 6, 0, 0, 1541, 1542, 7, 8, 0, 0, 1542, 1543, 7, 9, 0, 0, 1543, 1544, 7, 10, 0, 0, 1544, 74, 1, 0, 0, 0, 1545, 1546, 7, 5, 0, 0, 1546, 1547, 7, 7, 0, 0, 1547, 1548, 7, 5, 0, 0, 1548, 1549, 7, 6, 0, 0, 1549, 1550, 7, 8, 0, 0, 1550, 1551, 7, 11, 0, 0, 1551, 1552, 7, 10, 0, 0, 1552, 76, 1, 0, 0, 0, 1553, 1554, 7, 5, 0, 0, 1554, 1555, 7, 7, 0, 0, 1555, 1556, 7, 12, 0, 0, 1556, 78, 1, 0, 0, 0, 1557, 1558, 7, 5, 0, 0, 1558, 1559, 7, 7, 0, 0, 1559, 1560, 7, 8, 0, 0, 1560, 80, 1, 0, 0, 0, 1561, 1562, 7, 5, 0, 0, 1562, 1563, 7, 13, 0, 0, 1563, 1564, 7, 13, 0, 0, 1564, 1565, 7, 5, 0, 0, 1565, 1566, 7, 8, 0, 0, 1566, 82, 1, 0, 0, 0, 1567, 1568, 7, 5, 0, 0, 1568, 1569, 7, 9, 0, 0, 1569, 84, 1, 0, 0, 0, 1570, 1571, 7, 5, 0, 0, 1571, 1572, 7, 9, 0, 0, 1572, 1573, 7, 14, 0, 0, 1573, 86, 1, 0, 0, 0, 1574, 1575, 7, 5, 0, 0, 1575, 1576, 7, 9, 0, 0, 1576, 1577, 7, 8, 0, 0, 1577, 1578, 7, 15, 0, 0, 1578, 1579, 7, 15, 0, 0, 1579, 1580, 7, 10, 0, 0, 1580, 1581, 7, 16, 0, 0, 1581, 1582, 7, 13, 0, 0, 1582, 1583, 7, 17, 0, 0, 1583, 1584, 7, 14, 0, 0, 1584, 88, 1, 0, 0, 0, 1585, 1586, 7, 18, 0, 0, 1586, 1587, 7, 19, 0, 0, 1587, 1588, 7, 16, 0, 0, 1588, 1589, 7, 20, 0, 0, 1589, 90, 1, 0, 0, 0, 1590, 1591, 7, 14, 0, 0, 1591, 1592, 7, 5, 0, 0, 1592, 1593, 7, 9, 0, 0, 1593, 1594, 7, 10, 0, 0, 1594, 92, 1, 0, 0, 0, 1595, 1596, 7, 14, 0, 0, 1596, 1597, 7, 5, 0, 0, 1597, 1598, 7, 9, 0, 0, 1598, 1599, 7, 16, 0, 0, 1599, 94, 1, 0, 0, 0, 1600, 1601, 7, 14, 0, 0, 1601, 1602, 7, 20, 0, 0, 1602, 1603, 7, 10, 0, 0, 1603, 1604, 7, 14, 0, 0, 1604, 1605, 7, 21, 0, 0, 1605, 96, 1, 0, 0, 0, 1606, 1607, 7, 14, 0, 0, 1607, 1608, 7, 19, 0, 0, 1608, 1609, 7, 6, 0, 0, 1609, 1610, 7, 6, 0, 0, 1610, 1611, 7, 5, 0, 0, 1611, 1612, 7, 16, 0, 0, 1612, 1613, 7, 10, 0, 0, 1613, 98, 1, 0, 0, 0, 1614, 1615, 7, 14, 0, 0, 1615, 1616, 7, 19, 0, 0, 1616, 1617, 7, 6, 0, 0, 1617, 1618, 7, 22, 0, 0, 1618, 1619, 7, 15, 0, 0, 1619, 1620, 7, 7, 0, 0, 1620, 100, 1, 0, 0, 0, 1621, 1622, 7, 14, 0, 0, 1622, 1623, 7, 19, 0, 0, 1623, 1624, 7, 7, 0, 0, 1624, 1625, 7, 9, 0, 0, 1625, 1626, 7, 16, 0, 0, 1626, 1627, 7, 13, 0, 0, 1627, 1628, 7, 5, 0, 0, 1628, 1629, 7, 17, 0, 0, 1629, 1630, 7, 7, 0, 0, 1630, 1631, 7, 16, 0, 0, 1631, 102, 1, 0, 0, 0, 1632, 1633, 7, 14, 0, 0, 1633, 1634, 7, 13, 0, 0, 1634, 1635, 7, 10, 0, 0, 1635, 1636, 7, 5, 0, 0, 1636, 1637, 7, 16, 0, 0, 1637, 1638, 7, 10, 0, 0, 1638, 104, 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, 14, 0, 0, 1648, 1649, 7, 5, 0, 0, 1649, 1650, 7, 16, 0, 0, 1650, 1651, 7, 5, 0, 0, 1651, 1652, 7, 6, 0, 0, 1652, 1653, 7, 19, 0, 0, 1653, 1654, 7, 23, 0, 0, 1654, 106, 1, 0, 0, 0, 1655, 1656, 7, 14, 0, 0, 1656, 1657, 7, 22, 0, 0, 1657, 1658, 7, 13, 0, 0, 1658, 1659, 7, 13, 0, 0, 1659, 1660, 7, 10, 0, 0, 1660, 1661, 7, 7, 0, 0, 1661, 1662, 7, 16, 0, 0, 1662, 1663, 5, 95, 0, 0, 1663, 1664, 7, 12, 0, 0, 1664, 1665, 7, 5, 0, 0, 1665, 1666, 7, 16, 0, 0, 1666, 1667, 7, 10, 0, 0, 1667, 108, 1, 0, 0, 0, 1668, 1669, 7, 14, 0, 0, 1669, 1670, 7, 22, 0, 0, 1670, 1671, 7, 13, 0, 0, 1671, 1672, 7, 13, 0, 0, 1672, 1673, 7, 10, 0, 0, 1673, 1674, 7, 7, 0, 0, 1674, 1675, 7, 16, 0, 0, 1675, 1676, 5, 95, 0, 0, 1676, 1677, 7, 13, 0, 0, 1677, 1678, 7, 19, 0, 0, 1678, 1679, 7, 6, 0, 0, 1679, 1680, 7, 10, 0, 0, 1680, 110, 1, 0, 0, 0, 1681, 1682, 7, 14, 0, 0, 1682, 1683, 7, 22, 0, 0, 1683, 1684, 7, 13, 0, 0, 1684, 1685, 7, 13, 0, 0, 1685, 1686, 7, 10, 0, 0, 1686, 1687, 7, 7, 0, 0, 1687, 1688, 7, 16, 0, 0, 1688, 1689, 5, 95, 0, 0, 1689, 1690, 7, 16, 0, 0, 1690, 1691, 7, 17, 0, 0, 1691, 1692, 7, 15, 0, 0, 1692, 1693, 7, 10, 0, 0, 1693, 112, 1, 0, 0, 0, 1694, 1695, 7, 14, 0, 0, 1695, 1696, 7, 22, 0, 0, 1696, 1697, 7, 13, 0, 0, 1697, 1698, 7, 13, 0, 0, 1698, 1699, 7, 10, 0, 0, 1699, 1700, 7, 7, 0, 0, 1700, 1701, 7, 16, 0, 0, 1701, 1702, 5, 95, 0, 0, 1702, 1703, 7, 16, 0, 0, 1703, 1704, 7, 17, 0, 0, 1704, 1705, 7, 15, 0, 0, 1705, 1706, 7, 10, 0, 0, 1706, 1707, 7, 9, 0, 0, 1707, 1708, 7, 16, 0, 0, 1708, 1709, 7, 5, 0, 0, 1709, 1710, 7, 15, 0, 0, 1710, 1711, 7, 24, 0, 0, 1711, 114, 1, 0, 0, 0, 1712, 1713, 7, 14, 0, 0, 1713, 1714, 7, 22, 0, 0, 1714, 1715, 7, 13, 0, 0, 1715, 1716, 7, 13, 0, 0, 1716, 1717, 7, 10, 0, 0, 1717, 1718, 7, 7, 0, 0, 1718, 1719, 7, 16, 0, 0, 1719, 1720, 5, 95, 0, 0, 1720, 1721, 7, 22, 0, 0, 1721, 1722, 7, 9, 0, 0, 1722, 1723, 7, 10, 0, 0, 1723, 1724, 7, 13, 0, 0, 1724, 116, 1, 0, 0, 0, 1725, 1726, 7, 12, 0, 0, 1726, 1727, 7, 10, 0, 0, 1727, 1728, 7, 25, 0, 0, 1728, 1729, 7, 5, 0, 0, 1729, 1730, 7, 22, 0, 0, 1730, 1731, 7, 6, 0, 0, 1731, 1732, 7, 16, 0, 0, 1732, 118, 1, 0, 0, 0, 1733, 1734, 7, 12, 0, 0, 1734, 1735, 7, 10, 0, 0, 1735, 1736, 7, 25, 0, 0, 1736, 1737, 7, 10, 0, 0, 1737, 1738, 7, 13, 0, 0, 1738, 1739, 7, 13, 0, 0, 1739, 1740, 7, 5, 0, 0, 1740, 1741, 7, 18, 0, 0, 1741, 1742, 7, 6, 0, 0, 1742, 1743, 7, 10, 0, 0, 1743, 120, 1, 0, 0, 0, 1744, 1745, 7, 12, 0, 0, 1745, 1746, 7, 10, 0, 0, 1746, 1747, 7, 9, 0, 0, 1747, 1748, 7, 14, 0, 0, 1748, 122, 1, 0, 0, 0, 1749, 1750, 7, 12, 0, 0, 1750, 1751, 7, 17, 0, 0, 1751, 1752, 7, 9, 0, 0, 1752, 1753, 7, 16, 0, 0, 1753, 1754, 7, 17, 0, 0, 1754, 1755, 7, 7, 0, 0, 1755, 1756, 7, 14, 0, 0, 1756, 1757, 7, 16, 0, 0, 1757, 124, 1, 0, 0, 0, 1758, 1759, 7, 12, 0, 0, 1759, 1760, 7, 19, 0, 0, 1760, 126, 1, 0, 0, 0, 1761, 1762, 7, 10, 0, 0, 1762, 1763, 7, 6, 0, 0, 1763, 1764, 7, 9, 0, 0, 1764, 1765, 7, 10, 0, 0, 1765, 128, 1, 0, 0, 0, 1766, 1767, 7, 10, 0, 0, 1767, 1768, 7, 26, 0, 0, 1768, 1769, 7, 14, 0, 0, 1769, 1770, 7, 10, 0, 0, 1770, 1771, 7, 24, 0, 0, 1771, 1772, 7, 16, 0, 0, 1772, 130, 1, 0, 0, 0, 1773, 1774, 7, 25, 0, 0, 1774, 1775, 7, 5, 0, 0, 1775, 1776, 7, 6, 0, 0, 1776, 1777, 7, 9, 0, 0, 1777, 1778, 7, 10, 0, 0, 1778, 132, 1, 0, 0, 0, 1779, 1780, 7, 25, 0, 0, 1780, 1781, 7, 10, 0, 0, 1781, 1782, 7, 16, 0, 0, 1782, 1783, 7, 14, 0, 0, 1783, 1784, 7, 20, 0, 0, 1784, 134, 1, 0, 0, 0, 1785, 1786, 7, 25, 0, 0, 1786, 1787, 7, 19, 0, 0, 1787, 1788, 7, 13, 0, 0, 1788, 136, 1, 0, 0, 0, 1789, 1790, 7, 25, 0, 0, 1790, 1791, 7, 19, 0, 0, 1791, 1792, 7, 13, 0, 0, 1792, 1793, 7, 10, 0, 0, 1793, 1794, 7, 17, 0, 0, 1794, 1795, 7, 23, 0, 0, 1795, 1796, 7, 7, 0, 0, 1796, 138, 1, 0, 0, 0, 1797, 1798, 7, 25, 0, 0, 1798, 1799, 7, 13, 0, 0, 1799, 1800, 7, 19, 0, 0, 1800, 1801, 7, 15, 0, 0, 1801, 140, 1, 0, 0, 0, 1802, 1803, 7, 23, 0, 0, 1803, 1804, 7, 13, 0, 0, 1804, 1805, 7, 5, 0, 0, 1805, 1806, 7, 7, 0, 0, 1806, 1807, 7, 16, 0, 0, 1807, 142, 1, 0, 0, 0, 1808, 1809, 7, 23, 0, 0, 1809, 1810, 7, 13, 0, 0, 1810, 1811, 7, 19, 0, 0, 1811, 1812, 7, 22, 0, 0, 1812, 1813, 7, 24, 0, 0, 1813, 144, 1, 0, 0, 0, 1814, 1815, 7, 20, 0, 0, 1815, 1816, 7, 5, 0, 0, 1816, 1817, 7, 27, 0, 0, 1817, 1818, 7, 17, 0, 0, 1818, 1819, 7, 7, 0, 0, 1819, 1820, 7, 23, 0, 0, 1820, 146, 1, 0, 0, 0, 1821, 1822, 7, 17, 0, 0, 1822, 1823, 7, 7, 0, 0, 1823, 148, 1, 0, 0, 0, 1824, 1825, 7, 17, 0, 0, 1825, 1826, 7, 7, 0, 0, 1826, 1827, 7, 17, 0, 0, 1827, 1828, 7, 16, 0, 0, 1828, 1829, 7, 17, 0, 0, 1829, 1830, 7, 5, 0, 0, 1830, 1831, 7, 6, 0, 0, 1831, 1832, 7, 6, 0, 0, 1832, 1833, 7, 8, 0, 0, 1833, 150, 1, 0, 0, 0, 1834, 1835, 7, 17, 0, 0, 1835, 1836, 7, 7, 0, 0, 1836, 1837, 7, 16, 0, 0, 1837, 1838, 7, 10, 0, 0, 1838, 1839, 7, 13, 0, 0, 1839, 1840, 7, 9, 0, 0, 1840, 1841, 7, 10, 0, 0, 1841, 1842, 7, 14, 0, 0, 1842, 1843, 7, 16, 0, 0, 1843, 152, 1, 0, 0, 0, 1844, 1845, 7, 17, 0, 0, 1845, 1846, 7, 7, 0, 0, 1846, 1847, 7, 16, 0, 0, 1847, 1848, 7, 19, 0, 0, 1848, 154, 1, 0, 0, 0, 1849, 1850, 7, 6, 0, 0, 1850, 1851, 7, 5, 0, 0, 1851, 1852, 7, 16, 0, 0, 1852, 1853, 7, 10, 0, 0, 1853, 1854, 7, 13, 0, 0, 1854, 1855, 7, 5, 0, 0, 1855, 1856, 7, 6, 0, 0, 1856, 156, 1, 0, 0, 0, 1857, 1858, 7, 6, 0, 0, 1858, 1859, 7, 10, 0, 0, 1859, 1860, 7, 5, 0, 0, 1860, 1861, 7, 12, 0, 0, 1861, 1862, 7, 17, 0, 0, 1862, 1863, 7, 7, 0, 0, 1863, 1864, 7, 23, 0, 0, 1864, 158, 1, 0, 0, 0, 1865, 1866, 7, 6, 0, 0, 1866, 1867, 7, 17, 0, 0, 1867, 1868, 7, 15, 0, 0, 1868, 1869, 7, 17, 0, 0, 1869, 1870, 7, 16, 0, 0, 1870, 160, 1, 0, 0, 0, 1871, 1872, 7, 6, 0, 0, 1872, 1873, 7, 19, 0, 0, 1873, 1874, 7, 14, 0, 0, 1874, 1875, 7, 5, 0, 0, 1875, 1876, 7, 6, 0, 0, 1876, 1877, 7, 16, 0, 0, 1877, 1878, 7, 17, 0, 0, 1878, 1879, 7, 15, 0, 0, 1879, 1880, 7, 10, 0, 0, 1880, 162, 1, 0, 0, 0, 1881, 1882, 7, 6, 0, 0, 1882, 1883, 7, 19, 0, 0, 1883, 1884, 7, 14, 0, 0, 1884, 1885, 7, 5, 0, 0, 1885, 1886, 7, 6, 0, 0, 1886, 1887, 7, 16, 0, 0, 1887, 1888, 7, 17, 0, 0, 1888, 1889, 7, 15, 0, 0, 1889, 1890, 7, 10, 0, 0, 1890, 1891, 7, 9, 0, 0, 1891, 1892, 7, 16, 0, 0, 1892, 1893, 7, 5, 0, 0, 1893, 1894, 7, 15, 0, 0, 1894, 1895, 7, 24, 0, 0, 1895, 164, 1, 0, 0, 0, 1896, 1897, 7, 7, 0, 0, 1897, 1898, 7, 19, 0, 0, 1898, 1899, 7, 16, 0, 0, 1899, 166, 1, 0, 0, 0, 1900, 1901, 7, 7, 0, 0, 1901, 1902, 7, 22, 0, 0, 1902, 1903, 7, 6, 0, 0, 1903, 1904, 7, 6, 0, 0, 1904, 168, 1, 0, 0, 0, 1905, 1906, 7, 19, 0, 0, 1906, 1907, 7, 25, 0, 0, 1907, 1908, 7, 25, 0, 0, 1908, 1909, 7, 9, 0, 0, 1909, 1910, 7, 10, 0, 0, 1910, 1911, 7, 16, 0, 0, 1911, 170, 1, 0, 0, 0, 1912, 1913, 7, 19, 0, 0, 1913, 1914, 7, 7, 0, 0, 1914, 172, 1, 0, 0, 0, 1915, 1916, 7, 19, 0, 0, 1916, 1917, 7, 7, 0, 0, 1917, 1918, 7, 6, 0, 0, 1918, 1919, 7, 8, 0, 0, 1919, 174, 1, 0, 0, 0, 1920, 1921, 7, 19, 0, 0, 1921, 1922, 7, 13, 0, 0, 1922, 176, 1, 0, 0, 0, 1923, 1924, 7, 19, 0, 0, 1924, 1925, 7, 13, 0, 0, 1925, 1926, 7, 12, 0, 0, 1926, 1927, 7, 10, 0, 0, 1927, 1928, 7, 13, 0, 0, 1928, 178, 1, 0, 0, 0, 1929, 1930, 7, 24, 0, 0, 1930, 1931, 7, 6, 0, 0, 1931, 1932, 7, 5, 0, 0, 1932, 1933, 7, 14, 0, 0, 1933, 1934, 7, 17, 0, 0, 1934, 1935, 7, 7, 0, 0, 1935, 1936, 7, 23, 0, 0, 1936, 180, 1, 0, 0, 0, 1937, 1938, 7, 24, 0, 0, 1938, 1939, 7, 13, 0, 0, 1939, 1940, 7, 17, 0, 0, 1940, 1941, 7, 15, 0, 0, 1941, 1942, 7, 5, 0, 0, 1942, 1943, 7, 13, 0, 0, 1943, 1944, 7, 8, 0, 0, 1944, 182, 1, 0, 0, 0, 1945, 1946, 7, 13, 0, 0, 1946, 1947, 7, 10, 0, 0, 1947, 1948, 7, 25, 0, 0, 1948, 1949, 7, 10, 0, 0, 1949, 1950, 7, 13, 0, 0, 1950, 1951, 7, 10, 0, 0, 1951, 1952, 7, 7, 0, 0, 1952, 1953, 7, 14, 0, 0, 1953, 1954, 7, 10, 0, 0, 1954, 1955, 7, 9, 0, 0, 1955, 184, 1, 0, 0, 0, 1956, 1957, 7, 13, 0, 0, 1957, 1958, 7, 10, 0, 0, 1958, 1959, 7, 16, 0, 0, 1959, 1960, 7, 22, 0, 0, 1960, 1961, 7, 13, 0, 0, 1961, 1962, 7, 7, 0, 0, 1962, 1963, 7, 17, 0, 0, 1963, 1964, 7, 7, 0, 0, 1964, 1965, 7, 23, 0, 0, 1965, 186, 1, 0, 0, 0, 1966, 1967, 7, 9, 0, 0, 1967, 1968, 7, 10, 0, 0, 1968, 1969, 7, 6, 0, 0, 1969, 1970, 7, 10, 0, 0, 1970, 1971, 7, 14, 0, 0, 1971, 1972, 7, 16, 0, 0, 1972, 188, 1, 0, 0, 0, 1973, 1974, 7, 9, 0, 0, 1974, 1975, 7, 10, 0, 0, 1975, 1976, 7, 9, 0, 0, 1976, 1977, 7, 9, 0, 0, 1977, 1978, 7, 17, 0, 0, 1978, 1979, 7, 19, 0, 0, 1979, 1980, 7, 7, 0, 0, 1980, 1981, 5, 95, 0, 0, 1981, 1982, 7, 22, 0, 0, 1982, 1983, 7, 9, 0, 0, 1983, 1984, 7, 10, 0, 0, 1984, 1985, 7, 13, 0, 0, 1985, 190, 1, 0, 0, 0, 1986, 1987, 7, 9, 0, 0, 1987, 1988, 7, 19, 0, 0, 1988, 1989, 7, 15, 0, 0, 1989, 1990, 7, 10, 0, 0, 1990, 192, 1, 0, 0, 0, 1991, 1992, 7, 9, 0, 0, 1992, 1993, 7, 8, 0, 0, 1993, 1994, 7, 15, 0, 0, 1994, 1995, 7, 15, 0, 0, 1995, 1996, 7, 10, 0, 0, 1996, 1997, 7, 16, 0, 0, 1997, 1998, 7, 13, 0, 0, 1998, 1999, 7, 17, 0, 0, 1999, 2000, 7, 14, 0, 0, 2000, 194, 1, 0, 0, 0, 2001, 2002, 7, 16, 0, 0, 2002, 2003, 7, 5, 0, 0, 2003, 2004, 7, 18, 0, 0, 2004, 2005, 7, 6, 0, 0, 2005, 2006, 7, 10, 0, 0, 2006, 196, 1, 0, 0, 0, 2007, 2008, 7, 11, 0, 0, 2008, 2009, 7, 16, 0, 0, 2009, 2010, 7, 5, 0, 0, 2010, 2011, 7, 18, 0, 0, 2011, 2012, 7, 6, 0, 0, 2012, 2013, 7, 10, 0, 0, 2013, 198, 1, 0, 0, 0, 2014, 2015, 7, 16, 0, 0, 2015, 2016, 7, 20, 0, 0, 2016, 2017, 7, 10, 0, 0, 2017, 2018, 7, 7, 0, 0, 2018, 200, 1, 0, 0, 0, 2019, 2020, 7, 16, 0, 0, 2020, 2021, 7, 19, 0, 0, 2021, 202, 1, 0, 0, 0, 2022, 2023, 7, 12, 0, 0, 2023, 2024, 7, 10, 0, 0, 2024, 2025, 7, 9, 0, 0, 2025, 2026, 7, 14, 0, 0, 2026, 2027, 7, 13, 0, 0, 2027, 2028, 7, 17, 0, 0, 2028, 2029, 7, 18, 0, 0, 2029, 2030, 7, 10, 0, 0, 2030, 204, 1, 0, 0, 0, 2031, 2032, 7, 16, 0, 0, 2032, 2033, 7, 19, 0, 0, 2033, 2034, 7, 24, 0, 0, 2034, 2035, 7, 17, 0, 0, 2035, 2036, 7, 14, 0, 0, 2036, 206, 1, 0, 0, 0, 2037, 2038, 7, 16, 0, 0, 2038, 2039, 7, 19, 0, 0, 2039, 2040, 7, 24, 0, 0, 2040, 2041, 7, 17, 0, 0, 2041, 2042, 7, 14, 0, 0, 2042, 2043, 7, 9, 0, 0, 2043, 208, 1, 0, 0, 0, 2044, 2045, 7, 9, 0, 0, 2045, 2046, 7, 16, 0, 0, 2046, 2047, 7, 13, 0, 0, 2047, 2048, 7, 10, 0, 0, 2048, 2049, 7, 5, 0, 0, 2049, 2050, 7, 15, 0, 0, 2050, 210, 1, 0, 0, 0, 2051, 2052, 7, 11, 0, 0, 2052, 2053, 7, 27, 0, 0, 2053, 2054, 7, 17, 0, 0, 2054, 2055, 7, 10, 0, 0, 2055, 2056, 7, 28, 0, 0, 2056, 212, 1, 0, 0, 0, 2057, 2058, 7, 11, 0, 0, 2058, 2059, 7, 27, 0, 0, 2059, 2060, 7, 17, 0, 0, 2060, 2061, 7, 10, 0, 0, 2061, 2062, 7, 28, 0, 0, 2062, 2063, 7, 9, 0, 0, 2063, 214, 1, 0, 0, 0, 2064, 2065, 7, 16, 0, 0, 2065, 2066, 7, 13, 0, 0, 2066, 2067, 7, 5, 0, 0, 2067, 2068, 7, 17, 0, 0, 2068, 2069, 7, 6, 0, 0, 2069, 2070, 7, 17, 0, 0, 2070, 2071, 7, 7, 0, 0, 2071, 2072, 7, 23, 0, 0, 2072, 216, 1, 0, 0, 0, 2073, 2074, 7, 16, 0, 0, 2074, 2075, 7, 13, 0, 0, 2075, 2076, 7, 22, 0, 0, 2076, 2077, 7, 10, 0, 0, 2077, 218, 1, 0, 0, 0, 2078, 2079, 7, 22, 0, 0, 2079, 2080, 7, 7, 0, 0, 2080, 2081, 7, 17, 0, 0, 2081, 2082, 7, 19, 0, 0, 2082, 2083, 7, 7, 0, 0, 2083, 220, 1, 0, 0, 0, 2084, 2085, 7, 22, 0, 0, 2085, 2086, 7, 7, 0, 0, 2086, 2087, 7, 17, 0, 0, 2087, 2088, 7, 29, 0, 0, 2088, 2089, 7, 22, 0, 0, 2089, 2090, 7, 10, 0, 0, 2090, 222, 1, 0, 0, 0, 2091, 2092, 7, 22, 0, 0, 2092, 2093, 7, 9, 0, 0, 2093, 2094, 7, 10, 0, 0, 2094, 2095, 7, 13, 0, 0, 2095, 224, 1, 0, 0, 0, 2096, 2097, 7, 22, 0, 0, 2097, 2098, 7, 9, 0, 0, 2098, 2099, 7, 17, 0, 0, 2099, 2100, 7, 7, 0, 0, 2100, 2101, 7, 23, 0, 0, 2101, 226, 1, 0, 0, 0, 2102, 2103, 7, 27, 0, 0, 2103, 2104, 7, 5, 0, 0, 2104, 2105, 7, 13, 0, 0, 2105, 2106, 7, 17, 0, 0, 2106, 2107, 7, 5, 0, 0, 2107, 2108, 7, 12, 0, 0, 2108, 2109, 7, 17, 0, 0, 2109, 2110, 7, 14, 0, 0, 2110, 228, 1, 0, 0, 0, 2111, 2112, 7, 28, 0, 0, 2112, 2113, 7, 20, 0, 0, 2113, 2114, 7, 10, 0, 0, 2114, 2115, 7, 7, 0, 0, 2115, 230, 1, 0, 0, 0, 2116, 2117, 7, 28, 0, 0, 2117, 2118, 7, 20, 0, 0, 2118, 2119, 7, 10, 0, 0, 2119, 2120, 7, 13, 0, 0, 2120, 2121, 7, 10, 0, 0, 2121, 232, 1, 0, 0, 0, 2122, 2123, 7, 28, 0, 0, 2123, 2124, 7, 17, 0, 0, 2124, 2125, 7, 7, 0, 0, 2125, 2126, 7, 12, 0, 0, 2126, 2127, 7, 19, 0, 0, 2127, 2128, 7, 28, 0, 0, 2128, 234, 1, 0, 0, 0, 2129, 2130, 7, 28, 0, 0, 2130, 2131, 7, 17, 0, 0, 2131, 2132, 7, 16, 0, 0, 2132, 2133, 7, 20, 0, 0, 2133, 236, 1, 0, 0, 0, 2134, 2135, 7, 5, 0, 0, 2135, 2136, 7, 22, 0, 0, 2136, 2137, 7, 16, 0, 0, 2137, 2138, 7, 20, 0, 0, 2138, 2139, 7, 19, 0, 0, 2139, 2140, 7, 13, 0, 0, 2140, 2141, 7, 17, 0, 0, 2141, 2142, 7, 11, 0, 0, 2142, 2143, 7, 5, 0, 0, 2143, 2144, 7, 16, 0, 0, 2144, 2145, 7, 17, 0, 0, 2145, 2146, 7, 19, 0, 0, 2146, 2147, 7, 7, 0, 0, 2147, 238, 1, 0, 0, 0, 2148, 2149, 7, 18, 0, 0, 2149, 2150, 7, 17, 0, 0, 2150, 2151, 7, 7, 0, 0, 2151, 2152, 7, 5, 0, 0, 2152, 2153, 7, 13, 0, 0, 2153, 2154, 7, 8, 0, 0, 2154, 240, 1, 0, 0, 0, 2155, 2156, 7, 14, 0, 0, 2156, 2157, 7, 19, 0, 0, 2157, 2158, 7, 6, 0, 0, 2158, 2159, 7, 6, 0, 0, 2159, 2160, 7, 5, 0, 0, 2160, 2161, 7, 16, 0, 0, 2161, 2162, 7, 17, 0, 0, 2162, 2163, 7, 19, 0, 0, 2163, 2164, 7, 7, 0, 0, 2164, 242, 1, 0, 0, 0, 2165, 2166, 7, 14, 0, 0, 2166, 2167, 7, 19, 0, 0, 2167, 2168, 7, 7, 0, 0, 2168, 2169, 7, 14, 0, 0, 2169, 2170, 7, 22, 0, 0, 2170, 2171, 7, 13, 0, 0, 2171, 2172, 7, 13, 0, 0, 2172, 2173, 7, 10, 0, 0, 2173, 2174, 7, 7, 0, 0, 2174, 2175, 7, 16, 0, 0, 2175, 2176, 7, 6, 0, 0, 2176, 2177, 7, 8, 0, 0, 2177, 244, 1, 0, 0, 0, 2178, 2179, 7, 14, 0, 0, 2179, 2180, 7, 13, 0, 0, 2180, 2181, 7, 19, 0, 0, 2181, 2182, 7, 9, 0, 0, 2182, 2183, 7, 9, 0, 0, 2183, 246, 1, 0, 0, 0, 2184, 2185, 7, 14, 0, 0, 2185, 2186, 7, 22, 0, 0, 2186, 2187, 7, 13, 0, 0, 2187, 2188, 7, 13, 0, 0, 2188, 2189, 7, 10, 0, 0, 2189, 2190, 7, 7, 0, 0, 2190, 2191, 7, 16, 0, 0, 2191, 2192, 5, 95, 0, 0, 2192, 2193, 7, 9, 0, 0, 2193, 2194, 7, 14, 0, 0, 2194, 2195, 7, 20, 0, 0, 2195, 2196, 7, 10, 0, 0, 2196, 2197, 7, 15, 0, 0, 2197, 2198, 7, 5, 0, 0, 2198, 248, 1, 0, 0, 0, 2199, 2200, 7, 25, 0, 0, 2200, 2201, 7, 13, 0, 0, 2201, 2202, 7, 10, 0, 0, 2202, 2203, 7, 10, 0, 0, 2203, 2204, 7, 11, 0, 0, 2204, 2205, 7, 10, 0, 0, 2205, 250, 1, 0, 0, 0, 2206, 2207, 7, 25, 0, 0, 2207, 2208, 7, 22, 0, 0, 2208, 2209, 7, 6, 0, 0, 2209, 2210, 7, 6, 0, 0, 2210, 252, 1, 0, 0, 0, 2211, 2212, 7, 17, 0, 0, 2212, 2213, 7, 6, 0, 0, 2213, 2214, 7, 17, 0, 0, 2214, 2215, 7, 21, 0, 0, 2215, 2216, 7, 10, 0, 0, 2216, 254, 1, 0, 0, 0, 2217, 2218, 7, 17, 0, 0, 2218, 2219, 7, 7, 0, 0, 2219, 2220, 7, 7, 0, 0, 2220, 2221, 7, 10, 0, 0, 2221, 2222, 7, 13, 0, 0, 2222, 256, 1, 0, 0, 0, 2223, 2224, 7, 17, 0, 0, 2224, 2225, 7, 9, 0, 0, 2225, 258, 1, 0, 0, 0, 2226, 2227, 7, 17, 0, 0, 2227, 2228, 7, 9, 0, 0, 2228, 2229, 7, 7, 0, 0, 2229, 2230, 7, 22, 0, 0, 2230, 2231, 7, 6, 0, 0, 2231, 2232, 7, 6, 0, 0, 2232, 260, 1, 0, 0, 0, 2233, 2234, 7, 30, 0, 0, 2234, 2235, 7, 19, 0, 0, 2235, 2236, 7, 17, 0, 0, 2236, 2237, 7, 7, 0, 0, 2237, 262, 1, 0, 0, 0, 2238, 2239, 7, 6, 0, 0, 2239, 2240, 7, 10, 0, 0, 2240, 2241, 7, 25, 0, 0, 2241, 2242, 7, 16, 0, 0, 2242, 264, 1, 0, 0, 0, 2243, 2244, 7, 6, 0, 0, 2244, 2245, 7, 17, 0, 0, 2245, 2246, 7, 21, 0, 0, 2246, 2247, 7, 10, 0, 0, 2247, 266, 1, 0, 0, 0, 2248, 2249, 7, 7, 0, 0, 2249, 2250, 7, 5, 0, 0, 2250, 2251, 7, 16, 0, 0, 2251, 2252, 7, 22, 0, 0, 2252, 2253, 7, 13, 0, 0, 2253, 2254, 7, 5, 0, 0, 2254, 2255, 7, 6, 0, 0, 2255, 268, 1, 0, 0, 0, 2256, 2257, 7, 7, 0, 0, 2257, 2258, 7, 19, 0, 0, 2258, 2259, 7, 16, 0, 0, 2259, 2260, 7, 7, 0, 0, 2260, 2261, 7, 22, 0, 0, 2261, 2262, 7, 6, 0, 0, 2262, 2263, 7, 6, 0, 0, 2263, 270, 1, 0, 0, 0, 2264, 2265, 7, 19, 0, 0, 2265, 2266, 7, 22, 0, 0, 2266, 2267, 7, 16, 0, 0, 2267, 2268, 7, 10, 0, 0, 2268, 2269, 7, 13, 0, 0, 2269, 272, 1, 0, 0, 0, 2270, 2271, 7, 19, 0, 0, 2271, 2272, 7, 27, 0, 0, 2272, 2273, 7, 10, 0, 0, 2273, 2274, 7, 13, 0, 0, 2274, 274, 1, 0, 0, 0, 2275, 2276, 7, 19, 0, 0, 2276, 2277, 7, 27, 0, 0, 2277, 2278, 7, 10, 0, 0, 2278, 2279, 7, 13, 0, 0, 2279, 2280, 7, 6, 0, 0, 2280, 2281, 7, 5, 0, 0, 2281, 2282, 7, 24, 0, 0, 2282, 2283, 7, 9, 0, 0, 2283, 276, 1, 0, 0, 0, 2284, 2285, 7, 13, 0, 0, 2285, 2286, 7, 17, 0, 0, 2286, 2287, 7, 23, 0, 0, 2287, 2288, 7, 20, 0, 0, 2288, 2289, 7, 16, 0, 0, 2289, 278, 1, 0, 0, 0, 2290, 2291, 7, 9, 0, 0, 2291, 2292, 7, 17, 0, 0, 2292, 2293, 7, 15, 0, 0, 2293, 2294, 7, 17, 0, 0, 2294, 2295, 7, 6, 0, 0, 2295, 2296, 7, 5, 0, 0, 2296, 2297, 7, 13, 0, 0, 2297, 280, 1, 0, 0, 0, 2298, 2299, 7, 27, 0, 0, 2299, 2300, 7, 10, 0, 0, 2300, 2301, 7, 13, 0, 0, 2301, 2302, 7, 18, 0, 0, 2302, 2303, 7, 19, 0, 0, 2303, 2304, 7, 9, 0, 0, 2304, 2305, 7, 10, 0, 0, 2305, 282, 1, 0, 0, 0, 2306, 2307, 7, 5, 0, 0, 2307, 2308, 7, 18, 0, 0, 2308, 2309, 7, 19, 0, 0, 2309, 2310, 7, 13, 0, 0, 2310, 2311, 7, 16, 0, 0, 2311, 284, 1, 0, 0, 0, 2312, 2313, 7, 5, 0, 0, 2313, 2314, 7, 18, 0, 0, 2314, 2315, 7, 9, 0, 0, 2315, 2316, 7, 19, 0, 0, 2316, 2317, 7, 6, 0, 0, 2317, 2318, 7, 22, 0, 0, 2318, 2319, 7, 16, 0, 0, 2319, 2320, 7, 10, 0, 0, 2320, 286, 1, 0, 0, 0, 2321, 2322, 7, 5, 0, 0, 2322, 2323, 7, 14, 0, 0, 2323, 2324, 7, 14, 0, 0, 2324, 2325, 7, 10, 0, 0, 2325, 2326, 7, 9, 0, 0, 2326, 2327, 7, 9, 0, 0, 2327, 288, 1, 0, 0, 0, 2328, 2329, 7, 5, 0, 0, 2329, 2330, 7, 14, 0, 0, 2330, 2331, 7, 16, 0, 0, 2331, 2332, 7, 17, 0, 0, 2332, 2333, 7, 19, 0, 0, 2333, 2334, 7, 7, 0, 0, 2334, 290, 1, 0, 0, 0, 2335, 2336, 7, 5, 0, 0, 2336, 2337, 7, 12, 0, 0, 2337, 2338, 7, 12, 0, 0, 2338, 292, 1, 0, 0, 0, 2339, 2340, 7, 5, 0, 0, 2340, 2341, 7, 12, 0, 0, 2341, 2342, 7, 15, 0, 0, 2342, 2343, 7, 17, 0, 0, 2343, 2344, 7, 7, 0, 0, 2344, 294, 1, 0, 0, 0, 2345, 2346, 7, 5, 0, 0, 2346, 2347, 7, 25, 0, 0, 2347, 2348, 7, 16, 0, 0, 2348, 2349, 7, 10, 0, 0, 2349, 2350, 7, 13, 0, 0, 2350, 296, 1, 0, 0, 0, 2351, 2352, 7, 5, 0, 0, 2352, 2353, 7, 23, 0, 0, 2353, 2354, 7, 23, 0, 0, 2354, 2355, 7, 13, 0, 0, 2355, 2356, 7, 10, 0, 0, 2356, 2357, 7, 23, 0, 0, 2357, 2358, 7, 5, 0, 0, 2358, 2359, 7, 16, 0, 0, 2359, 2360, 7, 10, 0, 0, 2360, 298, 1, 0, 0, 0, 2361, 2362, 7, 5, 0, 0, 2362, 2363, 7, 6, 0, 0, 2363, 2364, 7, 9, 0, 0, 2364, 2365, 7, 19, 0, 0, 2365, 300, 1, 0, 0, 0, 2366, 2367, 7, 5, 0, 0, 2367, 2368, 7, 6, 0, 0, 2368, 2369, 7, 16, 0, 0, 2369, 2370, 7, 10, 0, 0, 2370, 2371, 7, 13, 0, 0, 2371, 302, 1, 0, 0, 0, 2372, 2373, 7, 5, 0, 0, 2373, 2374, 7, 6, 0, 0, 2374, 2375, 7, 28, 0, 0, 2375, 2376, 7, 5, 0, 0, 2376, 2377, 7, 8, 0, 0, 2377, 2378, 7, 9, 0, 0, 2378, 304, 1, 0, 0, 0, 2379, 2380, 7, 5, 0, 0, 2380, 2381, 7, 9, 0, 0, 2381, 2382, 7, 9, 0, 0, 2382, 2383, 7, 10, 0, 0, 2383, 2384, 7, 13, 0, 0, 2384, 2385, 7, 16, 0, 0, 2385, 2386, 7, 17, 0, 0, 2386, 2387, 7, 19, 0, 0, 2387, 2388, 7, 7, 0, 0, 2388, 306, 1, 0, 0, 0, 2389, 2390, 7, 5, 0, 0, 2390, 2391, 7, 9, 0, 0, 2391, 2392, 7, 9, 0, 0, 2392, 2393, 7, 17, 0, 0, 2393, 2394, 7, 23, 0, 0, 2394, 2395, 7, 7, 0, 0, 2395, 2396, 7, 15, 0, 0, 2396, 2397, 7, 10, 0, 0, 2397, 2398, 7, 7, 0, 0, 2398, 2399, 7, 16, 0, 0, 2399, 308, 1, 0, 0, 0, 2400, 2401, 7, 5, 0, 0, 2401, 2402, 7, 16, 0, 0, 2402, 310, 1, 0, 0, 0, 2403, 2404, 7, 5, 0, 0, 2404, 2405, 7, 16, 0, 0, 2405, 2406, 7, 16, 0, 0, 2406, 2407, 7, 13, 0, 0, 2407, 2408, 7, 17, 0, 0, 2408, 2409, 7, 18, 0, 0, 2409, 2410, 7, 22, 0, 0, 2410, 2411, 7, 16, 0, 0, 2411, 2412, 7, 10, 0, 0, 2412, 312, 1, 0, 0, 0, 2413, 2414, 7, 18, 0, 0, 2414, 2415, 7, 5, 0, 0, 2415, 2416, 7, 14, 0, 0, 2416, 2417, 7, 21, 0, 0, 2417, 2418, 7, 28, 0, 0, 2418, 2419, 7, 5, 0, 0, 2419, 2420, 7, 13, 0, 0, 2420, 2421, 7, 12, 0, 0, 2421, 314, 1, 0, 0, 0, 2422, 2423, 7, 18, 0, 0, 2423, 2424, 7, 10, 0, 0, 2424, 2425, 7, 25, 0, 0, 2425, 2426, 7, 19, 0, 0, 2426, 2427, 7, 13, 0, 0, 2427, 2428, 7, 10, 0, 0, 2428, 316, 1, 0, 0, 0, 2429, 2430, 7, 18, 0, 0, 2430, 2431, 7, 10, 0, 0, 2431, 2432, 7, 23, 0, 0, 2432, 2433, 7, 17, 0, 0, 2433, 2434, 7, 7, 0, 0, 2434, 318, 1, 0, 0, 0, 2435, 2436, 7, 18, 0, 0, 2436, 2437, 7, 8, 0, 0, 2437, 320, 1, 0, 0, 0, 2438, 2439, 7, 14, 0, 0, 2439, 2440, 7, 5, 0, 0, 2440, 2441, 7, 14, 0, 0, 2441, 2442, 7, 20, 0, 0, 2442, 2443, 7, 10, 0, 0, 2443, 322, 1, 0, 0, 0, 2444, 2445, 7, 14, 0, 0, 2445, 2446, 7, 5, 0, 0, 2446, 2447, 7, 6, 0, 0, 2447, 2448, 7, 6, 0, 0, 2448, 2449, 7, 10, 0, 0, 2449, 2450, 7, 12, 0, 0, 2450, 324, 1, 0, 0, 0, 2451, 2452, 7, 14, 0, 0, 2452, 2453, 7, 5, 0, 0, 2453, 2454, 7, 9, 0, 0, 2454, 2455, 7, 14, 0, 0, 2455, 2456, 7, 5, 0, 0, 2456, 2457, 7, 12, 0, 0, 2457, 2458, 7, 10, 0, 0, 2458, 326, 1, 0, 0, 0, 2459, 2460, 7, 14, 0, 0, 2460, 2461, 7, 5, 0, 0, 2461, 2462, 7, 9, 0, 0, 2462, 2463, 7, 14, 0, 0, 2463, 2464, 7, 5, 0, 0, 2464, 2465, 7, 12, 0, 0, 2465, 2466, 7, 10, 0, 0, 2466, 2467, 7, 12, 0, 0, 2467, 328, 1, 0, 0, 0, 2468, 2469, 7, 14, 0, 0, 2469, 2470, 7, 5, 0, 0, 2470, 2471, 7, 16, 0, 0, 2471, 2472, 7, 5, 0, 0, 2472, 2473, 7, 6, 0, 0, 2473, 2474, 7, 19, 0, 0, 2474, 2475, 7, 23, 0, 0, 2475, 330, 1, 0, 0, 0, 2476, 2477, 7, 14, 0, 0, 2477, 2478, 7, 20, 0, 0, 2478, 2479, 7, 5, 0, 0, 2479, 2480, 7, 17, 0, 0, 2480, 2481, 7, 7, 0, 0, 2481, 332, 1, 0, 0, 0, 2482, 2483, 7, 14, 0, 0, 2483, 2484, 7, 20, 0, 0, 2484, 2485, 7, 5, 0, 0, 2485, 2486, 7, 13, 0, 0, 2486, 2487, 7, 5, 0, 0, 2487, 2488, 7, 14, 0, 0, 2488, 2489, 7, 16, 0, 0, 2489, 2490, 7, 10, 0, 0, 2490, 2491, 7, 13, 0, 0, 2491, 2492, 7, 17, 0, 0, 2492, 2493, 7, 9, 0, 0, 2493, 2494, 7, 16, 0, 0, 2494, 2495, 7, 17, 0, 0, 2495, 2496, 7, 14, 0, 0, 2496, 2497, 7, 9, 0, 0, 2497, 334, 1, 0, 0, 0, 2498, 2499, 7, 14, 0, 0, 2499, 2500, 7, 20, 0, 0, 2500, 2501, 7, 10, 0, 0, 2501, 2502, 7, 14, 0, 0, 2502, 2503, 7, 21, 0, 0, 2503, 2504, 7, 24, 0, 0, 2504, 2505, 7, 19, 0, 0, 2505, 2506, 7, 17, 0, 0, 2506, 2507, 7, 7, 0, 0, 2507, 2508, 7, 16, 0, 0, 2508, 336, 1, 0, 0, 0, 2509, 2510, 7, 14, 0, 0, 2510, 2511, 7, 6, 0, 0, 2511, 2512, 7, 5, 0, 0, 2512, 2513, 7, 9, 0, 0, 2513, 2514, 7, 9, 0, 0, 2514, 338, 1, 0, 0, 0, 2515, 2516, 7, 14, 0, 0, 2516, 2517, 7, 6, 0, 0, 2517, 2518, 7, 19, 0, 0, 2518, 2519, 7, 9, 0, 0, 2519, 2520, 7, 10, 0, 0, 2520, 340, 1, 0, 0, 0, 2521, 2522, 7, 14, 0, 0, 2522, 2523, 7, 6, 0, 0, 2523, 2524, 7, 22, 0, 0, 2524, 2525, 7, 9, 0, 0, 2525, 2526, 7, 16, 0, 0, 2526, 2527, 7, 10, 0, 0, 2527, 2528, 7, 13, 0, 0, 2528, 342, 1, 0, 0, 0, 2529, 2530, 7, 14, 0, 0, 2530, 2531, 7, 19, 0, 0, 2531, 2532, 7, 15, 0, 0, 2532, 2533, 7, 15, 0, 0, 2533, 2534, 7, 10, 0, 0, 2534, 2535, 7, 7, 0, 0, 2535, 2536, 7, 16, 0, 0, 2536, 344, 1, 0, 0, 0, 2537, 2538, 7, 14, 0, 0, 2538, 2539, 7, 19, 0, 0, 2539, 2540, 7, 15, 0, 0, 2540, 2541, 7, 15, 0, 0, 2541, 2542, 7, 10, 0, 0, 2542, 2543, 7, 7, 0, 0, 2543, 2544, 7, 16, 0, 0, 2544, 2545, 7, 9, 0, 0, 2545, 346, 1, 0, 0, 0, 2546, 2547, 7, 14, 0, 0, 2547, 2548, 7, 19, 0, 0, 2548, 2549, 7, 15, 0, 0, 2549, 2550, 7, 15, 0, 0, 2550, 2551, 7, 17, 0, 0, 2551, 2552, 7, 16, 0, 0, 2552, 348, 1, 0, 0, 0, 2553, 2554, 7, 14, 0, 0, 2554, 2555, 7, 19, 0, 0, 2555, 2556, 7, 15, 0, 0, 2556, 2557, 7, 15, 0, 0, 2557, 2558, 7, 17, 0, 0, 2558, 2559, 7, 16, 0, 0, 2559, 2560, 7, 16, 0, 0, 2560, 2561, 7, 10, 0, 0, 2561, 2562, 7, 12, 0, 0, 2562, 350, 1, 0, 0, 0, 2563, 2564, 7, 14, 0, 0, 2564, 2565, 7, 19, 0, 0, 2565, 2566, 7, 7, 0, 0, 2566, 2567, 7, 25, 0, 0, 2567, 2568, 7, 17, 0, 0, 2568, 2569, 7, 23, 0, 0, 2569, 2570, 7, 22, 0, 0, 2570, 2571, 7, 13, 0, 0, 2571, 2572, 7, 5, 0, 0, 2572, 2573, 7, 16, 0, 0, 2573, 2574, 7, 17, 0, 0, 2574, 2575, 7, 19, 0, 0, 2575, 2576, 7, 7, 0, 0, 2576, 352, 1, 0, 0, 0, 2577, 2578, 7, 14, 0, 0, 2578, 2579, 7, 19, 0, 0, 2579, 2580, 7, 7, 0, 0, 2580, 2581, 7, 7, 0, 0, 2581, 2582, 7, 10, 0, 0, 2582, 2583, 7, 14, 0, 0, 2583, 2584, 7, 16, 0, 0, 2584, 2585, 7, 17, 0, 0, 2585, 2586, 7, 19, 0, 0, 2586, 2587, 7, 7, 0, 0, 2587, 354, 1, 0, 0, 0, 2588, 2589, 7, 14, 0, 0, 2589, 2590, 7, 19, 0, 0, 2590, 2591, 7, 7, 0, 0, 2591, 2592, 7, 9, 0, 0, 2592, 2593, 7, 16, 0, 0, 2593, 2594, 7, 13, 0, 0, 2594, 2595, 7, 5, 0, 0, 2595, 2596, 7, 17, 0, 0, 2596, 2597, 7, 7, 0, 0, 2597, 2598, 7, 16, 0, 0, 2598, 2599, 7, 9, 0, 0, 2599, 356, 1, 0, 0, 0, 2600, 2601, 7, 14, 0, 0, 2601, 2602, 7, 19, 0, 0, 2602, 2603, 7, 7, 0, 0, 2603, 2604, 7, 16, 0, 0, 2604, 2605, 7, 10, 0, 0, 2605, 2606, 7, 7, 0, 0, 2606, 2607, 7, 16, 0, 0, 2607, 358, 1, 0, 0, 0, 2608, 2609, 7, 14, 0, 0, 2609, 2610, 7, 19, 0, 0, 2610, 2611, 7, 7, 0, 0, 2611, 2612, 7, 16, 0, 0, 2612, 2613, 7, 17, 0, 0, 2613, 2614, 7, 7, 0, 0, 2614, 2615, 7, 22, 0, 0, 2615, 2616, 7, 10, 0, 0, 2616, 360, 1, 0, 0, 0, 2617, 2618, 7, 14, 0, 0, 2618, 2619, 7, 19, 0, 0, 2619, 2620, 7, 7, 0, 0, 2620, 2621, 7, 27, 0, 0, 2621, 2622, 7, 10, 0, 0, 2622, 2623, 7, 13, 0, 0, 2623, 2624, 7, 9, 0, 0, 2624, 2625, 7, 17, 0, 0, 2625, 2626, 7, 19, 0, 0, 2626, 2627, 7, 7, 0, 0, 2627, 362, 1, 0, 0, 0, 2628, 2629, 7, 14, 0, 0, 2629, 2630, 7, 19, 0, 0, 2630, 2631, 7, 24, 0, 0, 2631, 2632, 7, 8, 0, 0, 2632, 364, 1, 0, 0, 0, 2633, 2634, 7, 14, 0, 0, 2634, 2635, 7, 19, 0, 0, 2635, 2636, 7, 9, 0, 0, 2636, 2637, 7, 16, 0, 0, 2637, 366, 1, 0, 0, 0, 2638, 2639, 7, 14, 0, 0, 2639, 2640, 7, 9, 0, 0, 2640, 2641, 7, 27, 0, 0, 2641, 368, 1, 0, 0, 0, 2642, 2643, 7, 14, 0, 0, 2643, 2644, 7, 22, 0, 0, 2644, 2645, 7, 13, 0, 0, 2645, 2646, 7, 9, 0, 0, 2646, 2647, 7, 19, 0, 0, 2647, 2648, 7, 13, 0, 0, 2648, 370, 1, 0, 0, 0, 2649, 2650, 7, 14, 0, 0, 2650, 2651, 7, 8, 0, 0, 2651, 2652, 7, 14, 0, 0, 2652, 2653, 7, 6, 0, 0, 2653, 2654, 7, 10, 0, 0, 2654, 372, 1, 0, 0, 0, 2655, 2656, 7, 12, 0, 0, 2656, 2657, 7, 5, 0, 0, 2657, 2658, 7, 16, 0, 0, 2658, 2659, 7, 5, 0, 0, 2659, 374, 1, 0, 0, 0, 2660, 2661, 7, 12, 0, 0, 2661, 2662, 7, 5, 0, 0, 2662, 2663, 7, 16, 0, 0, 2663, 2664, 7, 5, 0, 0, 2664, 2665, 7, 18, 0, 0, 2665, 2666, 7, 5, 0, 0, 2666, 2667, 7, 9, 0, 0, 2667, 2668, 7, 10, 0, 0, 2668, 376, 1, 0, 0, 0, 2669, 2670, 7, 12, 0, 0, 2670, 2671, 7, 5, 0, 0, 2671, 2672, 7, 8, 0, 0, 2672, 378, 1, 0, 0, 0, 2673, 2674, 7, 12, 0, 0, 2674, 2675, 7, 10, 0, 0, 2675, 2676, 7, 5, 0, 0, 2676, 2677, 7, 6, 0, 0, 2677, 2678, 7, 6, 0, 0, 2678, 2679, 7, 19, 0, 0, 2679, 2680, 7, 14, 0, 0, 2680, 2681, 7, 5, 0, 0, 2681, 2682, 7, 16, 0, 0, 2682, 2683, 7, 10, 0, 0, 2683, 380, 1, 0, 0, 0, 2684, 2685, 7, 12, 0, 0, 2685, 2686, 7, 10, 0, 0, 2686, 2687, 7, 14, 0, 0, 2687, 2688, 7, 6, 0, 0, 2688, 2689, 7, 5, 0, 0, 2689, 2690, 7, 13, 0, 0, 2690, 2691, 7, 10, 0, 0, 2691, 382, 1, 0, 0, 0, 2692, 2693, 7, 12, 0, 0, 2693, 2694, 7, 10, 0, 0, 2694, 2695, 7, 25, 0, 0, 2695, 2696, 7, 5, 0, 0, 2696, 2697, 7, 22, 0, 0, 2697, 2698, 7, 6, 0, 0, 2698, 2699, 7, 16, 0, 0, 2699, 2700, 7, 9, 0, 0, 2700, 384, 1, 0, 0, 0, 2701, 2702, 7, 12, 0, 0, 2702, 2703, 7, 10, 0, 0, 2703, 2704, 7, 25, 0, 0, 2704, 2705, 7, 10, 0, 0, 2705, 2706, 7, 13, 0, 0, 2706, 2707, 7, 13, 0, 0, 2707, 2708, 7, 10, 0, 0, 2708, 2709, 7, 12, 0, 0, 2709, 386, 1, 0, 0, 0, 2710, 2711, 7, 12, 0, 0, 2711, 2712, 7, 10, 0, 0, 2712, 2713, 7, 25, 0, 0, 2713, 2714, 7, 17, 0, 0, 2714, 2715, 7, 7, 0, 0, 2715, 2716, 7, 10, 0, 0, 2716, 2717, 7, 13, 0, 0, 2717, 388, 1, 0, 0, 0, 2718, 2719, 7, 12, 0, 0, 2719, 2720, 7, 10, 0, 0, 2720, 2721, 7, 6, 0, 0, 2721, 2722, 7, 10, 0, 0, 2722, 2723, 7, 16, 0, 0, 2723, 2724, 7, 10, 0, 0, 2724, 390, 1, 0, 0, 0, 2725, 2726, 7, 12, 0, 0, 2726, 2727, 7, 10, 0, 0, 2727, 2728, 7, 6, 0, 0, 2728, 2729, 7, 17, 0, 0, 2729, 2730, 7, 15, 0, 0, 2730, 2731, 7, 17, 0, 0, 2731, 2732, 7, 16, 0, 0, 2732, 2733, 7, 10, 0, 0, 2733, 2734, 7, 13, 0, 0, 2734, 392, 1, 0, 0, 0, 2735, 2736, 7, 12, 0, 0, 2736, 2737, 7, 10, 0, 0, 2737, 2738, 7, 6, 0, 0, 2738, 2739, 7, 17, 0, 0, 2739, 2740, 7, 15, 0, 0, 2740, 2741, 7, 17, 0, 0, 2741, 2742, 7, 16, 0, 0, 2742, 2743, 7, 10, 0, 0, 2743, 2744, 7, 13, 0, 0, 2744, 2745, 7, 9, 0, 0, 2745, 394, 1, 0, 0, 0, 2746, 2747, 7, 12, 0, 0, 2747, 2748, 7, 17, 0, 0, 2748, 2749, 7, 14, 0, 0, 2749, 2750, 7, 16, 0, 0, 2750, 2751, 7, 17, 0, 0, 2751, 2752, 7, 19, 0, 0, 2752, 2753, 7, 7, 0, 0, 2753, 2754, 7, 5, 0, 0, 2754, 2755, 7, 13, 0, 0, 2755, 2756, 7, 8, 0, 0, 2756, 396, 1, 0, 0, 0, 2757, 2758, 7, 12, 0, 0, 2758, 2759, 7, 17, 0, 0, 2759, 2760, 7, 9, 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, 398, 1, 0, 0, 0, 2765, 2766, 7, 12, 0, 0, 2766, 2767, 7, 17, 0, 0, 2767, 2768, 7, 9, 0, 0, 2768, 2769, 7, 14, 0, 0, 2769, 2770, 7, 5, 0, 0, 2770, 2771, 7, 13, 0, 0, 2771, 2772, 7, 12, 0, 0, 2772, 400, 1, 0, 0, 0, 2773, 2774, 7, 12, 0, 0, 2774, 2775, 7, 19, 0, 0, 2775, 2776, 7, 14, 0, 0, 2776, 2777, 7, 22, 0, 0, 2777, 2778, 7, 15, 0, 0, 2778, 2779, 7, 10, 0, 0, 2779, 2780, 7, 7, 0, 0, 2780, 2781, 7, 16, 0, 0, 2781, 402, 1, 0, 0, 0, 2782, 2783, 7, 12, 0, 0, 2783, 2784, 7, 19, 0, 0, 2784, 2785, 7, 15, 0, 0, 2785, 2786, 7, 5, 0, 0, 2786, 2787, 7, 17, 0, 0, 2787, 2788, 7, 7, 0, 0, 2788, 404, 1, 0, 0, 0, 2789, 2790, 7, 12, 0, 0, 2790, 2791, 7, 19, 0, 0, 2791, 2792, 7, 22, 0, 0, 2792, 2793, 7, 18, 0, 0, 2793, 2794, 7, 6, 0, 0, 2794, 2795, 7, 10, 0, 0, 2795, 406, 1, 0, 0, 0, 2796, 2797, 7, 12, 0, 0, 2797, 2798, 7, 13, 0, 0, 2798, 2799, 7, 19, 0, 0, 2799, 2800, 7, 24, 0, 0, 2800, 408, 1, 0, 0, 0, 2801, 2802, 7, 10, 0, 0, 2802, 2803, 7, 5, 0, 0, 2803, 2804, 7, 14, 0, 0, 2804, 2805, 7, 20, 0, 0, 2805, 410, 1, 0, 0, 0, 2806, 2807, 7, 10, 0, 0, 2807, 2808, 7, 7, 0, 0, 2808, 2809, 7, 5, 0, 0, 2809, 2810, 7, 18, 0, 0, 2810, 2811, 7, 6, 0, 0, 2811, 2812, 7, 10, 0, 0, 2812, 412, 1, 0, 0, 0, 2813, 2814, 7, 10, 0, 0, 2814, 2815, 7, 7, 0, 0, 2815, 2816, 7, 14, 0, 0, 2816, 2817, 7, 19, 0, 0, 2817, 2818, 7, 12, 0, 0, 2818, 2819, 7, 17, 0, 0, 2819, 2820, 7, 7, 0, 0, 2820, 2821, 7, 23, 0, 0, 2821, 414, 1, 0, 0, 0, 2822, 2823, 7, 10, 0, 0, 2823, 2824, 7, 7, 0, 0, 2824, 2825, 7, 14, 0, 0, 2825, 2826, 7, 13, 0, 0, 2826, 2827, 7, 8, 0, 0, 2827, 2828, 7, 24, 0, 0, 2828, 2829, 7, 16, 0, 0, 2829, 2830, 7, 10, 0, 0, 2830, 2831, 7, 12, 0, 0, 2831, 416, 1, 0, 0, 0, 2832, 2833, 7, 10, 0, 0, 2833, 2834, 7, 7, 0, 0, 2834, 2835, 7, 22, 0, 0, 2835, 2836, 7, 15, 0, 0, 2836, 418, 1, 0, 0, 0, 2837, 2838, 7, 10, 0, 0, 2838, 2839, 7, 9, 0, 0, 2839, 2840, 7, 14, 0, 0, 2840, 2841, 7, 5, 0, 0, 2841, 2842, 7, 24, 0, 0, 2842, 2843, 7, 10, 0, 0, 2843, 420, 1, 0, 0, 0, 2844, 2845, 7, 10, 0, 0, 2845, 2846, 7, 27, 0, 0, 2846, 2847, 7, 10, 0, 0, 2847, 2848, 7, 7, 0, 0, 2848, 2849, 7, 16, 0, 0, 2849, 422, 1, 0, 0, 0, 2850, 2851, 7, 10, 0, 0, 2851, 2852, 7, 26, 0, 0, 2852, 2853, 7, 14, 0, 0, 2853, 2854, 7, 6, 0, 0, 2854, 2855, 7, 22, 0, 0, 2855, 2856, 7, 12, 0, 0, 2856, 2857, 7, 10, 0, 0, 2857, 424, 1, 0, 0, 0, 2858, 2859, 7, 10, 0, 0, 2859, 2860, 7, 26, 0, 0, 2860, 2861, 7, 14, 0, 0, 2861, 2862, 7, 6, 0, 0, 2862, 2863, 7, 22, 0, 0, 2863, 2864, 7, 12, 0, 0, 2864, 2865, 7, 17, 0, 0, 2865, 2866, 7, 7, 0, 0, 2866, 2867, 7, 23, 0, 0, 2867, 426, 1, 0, 0, 0, 2868, 2869, 7, 10, 0, 0, 2869, 2870, 7, 26, 0, 0, 2870, 2871, 7, 14, 0, 0, 2871, 2872, 7, 6, 0, 0, 2872, 2873, 7, 22, 0, 0, 2873, 2874, 7, 9, 0, 0, 2874, 2875, 7, 17, 0, 0, 2875, 2876, 7, 27, 0, 0, 2876, 2877, 7, 10, 0, 0, 2877, 428, 1, 0, 0, 0, 2878, 2879, 7, 10, 0, 0, 2879, 2880, 7, 26, 0, 0, 2880, 2881, 7, 10, 0, 0, 2881, 2882, 7, 14, 0, 0, 2882, 2883, 7, 22, 0, 0, 2883, 2884, 7, 16, 0, 0, 2884, 2885, 7, 10, 0, 0, 2885, 430, 1, 0, 0, 0, 2886, 2887, 7, 10, 0, 0, 2887, 2888, 7, 26, 0, 0, 2888, 2889, 7, 24, 0, 0, 2889, 2890, 7, 6, 0, 0, 2890, 2891, 7, 5, 0, 0, 2891, 2892, 7, 17, 0, 0, 2892, 2893, 7, 7, 0, 0, 2893, 432, 1, 0, 0, 0, 2894, 2895, 7, 10, 0, 0, 2895, 2896, 7, 26, 0, 0, 2896, 2897, 7, 16, 0, 0, 2897, 2898, 7, 10, 0, 0, 2898, 2899, 7, 7, 0, 0, 2899, 2900, 7, 9, 0, 0, 2900, 2901, 7, 17, 0, 0, 2901, 2902, 7, 19, 0, 0, 2902, 2903, 7, 7, 0, 0, 2903, 434, 1, 0, 0, 0, 2904, 2905, 7, 10, 0, 0, 2905, 2906, 7, 26, 0, 0, 2906, 2907, 7, 16, 0, 0, 2907, 2908, 7, 10, 0, 0, 2908, 2909, 7, 13, 0, 0, 2909, 2910, 7, 7, 0, 0, 2910, 2911, 7, 5, 0, 0, 2911, 2912, 7, 6, 0, 0, 2912, 436, 1, 0, 0, 0, 2913, 2914, 7, 25, 0, 0, 2914, 2915, 7, 5, 0, 0, 2915, 2916, 7, 15, 0, 0, 2916, 2917, 7, 17, 0, 0, 2917, 2918, 7, 6, 0, 0, 2918, 2919, 7, 8, 0, 0, 2919, 438, 1, 0, 0, 0, 2920, 2921, 7, 25, 0, 0, 2921, 2922, 7, 17, 0, 0, 2922, 2923, 7, 13, 0, 0, 2923, 2924, 7, 9, 0, 0, 2924, 2925, 7, 16, 0, 0, 2925, 440, 1, 0, 0, 0, 2926, 2927, 7, 25, 0, 0, 2927, 2928, 7, 19, 0, 0, 2928, 2929, 7, 6, 0, 0, 2929, 2930, 7, 6, 0, 0, 2930, 2931, 7, 19, 0, 0, 2931, 2932, 7, 28, 0, 0, 2932, 2933, 7, 17, 0, 0, 2933, 2934, 7, 7, 0, 0, 2934, 2935, 7, 23, 0, 0, 2935, 442, 1, 0, 0, 0, 2936, 2937, 7, 25, 0, 0, 2937, 2938, 7, 19, 0, 0, 2938, 2939, 7, 13, 0, 0, 2939, 2940, 7, 14, 0, 0, 2940, 2941, 7, 10, 0, 0, 2941, 444, 1, 0, 0, 0, 2942, 2943, 7, 25, 0, 0, 2943, 2944, 7, 19, 0, 0, 2944, 2945, 7, 13, 0, 0, 2945, 2946, 7, 28, 0, 0, 2946, 2947, 7, 5, 0, 0, 2947, 2948, 7, 13, 0, 0, 2948, 2949, 7, 12, 0, 0, 2949, 446, 1, 0, 0, 0, 2950, 2951, 7, 25, 0, 0, 2951, 2952, 7, 22, 0, 0, 2952, 2953, 7, 7, 0, 0, 2953, 2954, 7, 14, 0, 0, 2954, 2955, 7, 16, 0, 0, 2955, 2956, 7, 17, 0, 0, 2956, 2957, 7, 19, 0, 0, 2957, 2958, 7, 7, 0, 0, 2958, 448, 1, 0, 0, 0, 2959, 2960, 7, 25, 0, 0, 2960, 2961, 7, 22, 0, 0, 2961, 2962, 7, 7, 0, 0, 2962, 2963, 7, 14, 0, 0, 2963, 2964, 7, 16, 0, 0, 2964, 2965, 7, 17, 0, 0, 2965, 2966, 7, 19, 0, 0, 2966, 2967, 7, 7, 0, 0, 2967, 2968, 7, 9, 0, 0, 2968, 450, 1, 0, 0, 0, 2969, 2970, 7, 23, 0, 0, 2970, 2971, 7, 6, 0, 0, 2971, 2972, 7, 19, 0, 0, 2972, 2973, 7, 18, 0, 0, 2973, 2974, 7, 5, 0, 0, 2974, 2975, 7, 6, 0, 0, 2975, 452, 1, 0, 0, 0, 2976, 2977, 7, 23, 0, 0, 2977, 2978, 7, 13, 0, 0, 2978, 2979, 7, 5, 0, 0, 2979, 2980, 7, 7, 0, 0, 2980, 2981, 7, 16, 0, 0, 2981, 2982, 7, 10, 0, 0, 2982, 2983, 7, 12, 0, 0, 2983, 454, 1, 0, 0, 0, 2984, 2985, 7, 20, 0, 0, 2985, 2986, 7, 5, 0, 0, 2986, 2987, 7, 7, 0, 0, 2987, 2988, 7, 12, 0, 0, 2988, 2989, 7, 6, 0, 0, 2989, 2990, 7, 10, 0, 0, 2990, 2991, 7, 13, 0, 0, 2991, 456, 1, 0, 0, 0, 2992, 2993, 7, 20, 0, 0, 2993, 2994, 7, 10, 0, 0, 2994, 2995, 7, 5, 0, 0, 2995, 2996, 7, 12, 0, 0, 2996, 2997, 7, 10, 0, 0, 2997, 2998, 7, 13, 0, 0, 2998, 458, 1, 0, 0, 0, 2999, 3000, 7, 20, 0, 0, 3000, 3001, 7, 19, 0, 0, 3001, 3002, 7, 6, 0, 0, 3002, 3003, 7, 12, 0, 0, 3003, 460, 1, 0, 0, 0, 3004, 3005, 7, 20, 0, 0, 3005, 3006, 7, 19, 0, 0, 3006, 3007, 7, 22, 0, 0, 3007, 3008, 7, 13, 0, 0, 3008, 462, 1, 0, 0, 0, 3009, 3010, 7, 17, 0, 0, 3010, 3011, 7, 12, 0, 0, 3011, 3012, 7, 10, 0, 0, 3012, 3013, 7, 7, 0, 0, 3013, 3014, 7, 16, 0, 0, 3014, 3015, 7, 17, 0, 0, 3015, 3016, 7, 16, 0, 0, 3016, 3017, 7, 8, 0, 0, 3017, 464, 1, 0, 0, 0, 3018, 3019, 7, 17, 0, 0, 3019, 3020, 7, 25, 0, 0, 3020, 466, 1, 0, 0, 0, 3021, 3022, 7, 17, 0, 0, 3022, 3023, 7, 15, 0, 0, 3023, 3024, 7, 15, 0, 0, 3024, 3025, 7, 10, 0, 0, 3025, 3026, 7, 12, 0, 0, 3026, 3027, 7, 17, 0, 0, 3027, 3028, 7, 5, 0, 0, 3028, 3029, 7, 16, 0, 0, 3029, 3030, 7, 10, 0, 0, 3030, 468, 1, 0, 0, 0, 3031, 3032, 7, 17, 0, 0, 3032, 3033, 7, 15, 0, 0, 3033, 3034, 7, 15, 0, 0, 3034, 3035, 7, 22, 0, 0, 3035, 3036, 7, 16, 0, 0, 3036, 3037, 7, 5, 0, 0, 3037, 3038, 7, 18, 0, 0, 3038, 3039, 7, 6, 0, 0, 3039, 3040, 7, 10, 0, 0, 3040, 470, 1, 0, 0, 0, 3041, 3042, 7, 17, 0, 0, 3042, 3043, 7, 15, 0, 0, 3043, 3044, 7, 24, 0, 0, 3044, 3045, 7, 6, 0, 0, 3045, 3046, 7, 17, 0, 0, 3046, 3047, 7, 14, 0, 0, 3047, 3048, 7, 17, 0, 0, 3048, 3049, 7, 16, 0, 0, 3049, 472, 1, 0, 0, 0, 3050, 3051, 7, 17, 0, 0, 3051, 3052, 7, 7, 0, 0, 3052, 3053, 7, 14, 0, 0, 3053, 3054, 7, 6, 0, 0, 3054, 3055, 7, 22, 0, 0, 3055, 3056, 7, 12, 0, 0, 3056, 3057, 7, 17, 0, 0, 3057, 3058, 7, 7, 0, 0, 3058, 3059, 7, 23, 0, 0, 3059, 474, 1, 0, 0, 0, 3060, 3061, 7, 17, 0, 0, 3061, 3062, 7, 7, 0, 0, 3062, 3063, 7, 14, 0, 0, 3063, 3064, 7, 13, 0, 0, 3064, 3065, 7, 10, 0, 0, 3065, 3066, 7, 15, 0, 0, 3066, 3067, 7, 10, 0, 0, 3067, 3068, 7, 7, 0, 0, 3068, 3069, 7, 16, 0, 0, 3069, 476, 1, 0, 0, 0, 3070, 3071, 7, 17, 0, 0, 3071, 3072, 7, 7, 0, 0, 3072, 3073, 7, 12, 0, 0, 3073, 3074, 7, 10, 0, 0, 3074, 3075, 7, 26, 0, 0, 3075, 478, 1, 0, 0, 0, 3076, 3077, 7, 17, 0, 0, 3077, 3078, 7, 7, 0, 0, 3078, 3079, 7, 12, 0, 0, 3079, 3080, 7, 10, 0, 0, 3080, 3081, 7, 26, 0, 0, 3081, 3082, 7, 10, 0, 0, 3082, 3083, 7, 9, 0, 0, 3083, 480, 1, 0, 0, 0, 3084, 3085, 7, 17, 0, 0, 3085, 3086, 7, 7, 0, 0, 3086, 3087, 7, 20, 0, 0, 3087, 3088, 7, 10, 0, 0, 3088, 3089, 7, 13, 0, 0, 3089, 3090, 7, 17, 0, 0, 3090, 3091, 7, 16, 0, 0, 3091, 482, 1, 0, 0, 0, 3092, 3093, 7, 17, 0, 0, 3093, 3094, 7, 7, 0, 0, 3094, 3095, 7, 20, 0, 0, 3095, 3096, 7, 10, 0, 0, 3096, 3097, 7, 13, 0, 0, 3097, 3098, 7, 17, 0, 0, 3098, 3099, 7, 16, 0, 0, 3099, 3100, 7, 9, 0, 0, 3100, 484, 1, 0, 0, 0, 3101, 3102, 7, 17, 0, 0, 3102, 3103, 7, 7, 0, 0, 3103, 3104, 7, 6, 0, 0, 3104, 3105, 7, 17, 0, 0, 3105, 3106, 7, 7, 0, 0, 3106, 3107, 7, 10, 0, 0, 3107, 486, 1, 0, 0, 0, 3108, 3109, 7, 17, 0, 0, 3109, 3110, 7, 7, 0, 0, 3110, 3111, 7, 9, 0, 0, 3111, 3112, 7, 10, 0, 0, 3112, 3113, 7, 7, 0, 0, 3113, 3114, 7, 9, 0, 0, 3114, 3115, 7, 17, 0, 0, 3115, 3116, 7, 16, 0, 0, 3116, 3117, 7, 17, 0, 0, 3117, 3118, 7, 27, 0, 0, 3118, 3119, 7, 10, 0, 0, 3119, 488, 1, 0, 0, 0, 3120, 3121, 7, 17, 0, 0, 3121, 3122, 7, 7, 0, 0, 3122, 3123, 7, 9, 0, 0, 3123, 3124, 7, 10, 0, 0, 3124, 3125, 7, 13, 0, 0, 3125, 3126, 7, 16, 0, 0, 3126, 490, 1, 0, 0, 0, 3127, 3128, 7, 17, 0, 0, 3128, 3129, 7, 7, 0, 0, 3129, 3130, 7, 9, 0, 0, 3130, 3131, 7, 16, 0, 0, 3131, 3132, 7, 10, 0, 0, 3132, 3133, 7, 5, 0, 0, 3133, 3134, 7, 12, 0, 0, 3134, 492, 1, 0, 0, 0, 3135, 3136, 7, 17, 0, 0, 3136, 3137, 7, 7, 0, 0, 3137, 3138, 7, 27, 0, 0, 3138, 3139, 7, 19, 0, 0, 3139, 3140, 7, 21, 0, 0, 3140, 3141, 7, 10, 0, 0, 3141, 3142, 7, 13, 0, 0, 3142, 494, 1, 0, 0, 0, 3143, 3144, 7, 17, 0, 0, 3144, 3145, 7, 9, 0, 0, 3145, 3146, 7, 19, 0, 0, 3146, 3147, 7, 6, 0, 0, 3147, 3148, 7, 5, 0, 0, 3148, 3149, 7, 16, 0, 0, 3149, 3150, 7, 17, 0, 0, 3150, 3151, 7, 19, 0, 0, 3151, 3152, 7, 7, 0, 0, 3152, 496, 1, 0, 0, 0, 3153, 3154, 7, 21, 0, 0, 3154, 3155, 7, 10, 0, 0, 3155, 3156, 7, 8, 0, 0, 3156, 498, 1, 0, 0, 0, 3157, 3158, 7, 6, 0, 0, 3158, 3159, 7, 5, 0, 0, 3159, 3160, 7, 18, 0, 0, 3160, 3161, 7, 10, 0, 0, 3161, 3162, 7, 6, 0, 0, 3162, 500, 1, 0, 0, 0, 3163, 3164, 7, 6, 0, 0, 3164, 3165, 7, 5, 0, 0, 3165, 3166, 7, 7, 0, 0, 3166, 3167, 7, 23, 0, 0, 3167, 3168, 7, 22, 0, 0, 3168, 3169, 7, 5, 0, 0, 3169, 3170, 7, 23, 0, 0, 3170, 3171, 7, 10, 0, 0, 3171, 502, 1, 0, 0, 0, 3172, 3173, 7, 6, 0, 0, 3173, 3174, 7, 5, 0, 0, 3174, 3175, 7, 13, 0, 0, 3175, 3176, 7, 23, 0, 0, 3176, 3177, 7, 10, 0, 0, 3177, 504, 1, 0, 0, 0, 3178, 3179, 7, 6, 0, 0, 3179, 3180, 7, 5, 0, 0, 3180, 3181, 7, 9, 0, 0, 3181, 3182, 7, 16, 0, 0, 3182, 506, 1, 0, 0, 0, 3183, 3184, 7, 6, 0, 0, 3184, 3185, 7, 10, 0, 0, 3185, 3186, 7, 5, 0, 0, 3186, 3187, 7, 21, 0, 0, 3187, 3188, 7, 24, 0, 0, 3188, 3189, 7, 13, 0, 0, 3189, 3190, 7, 19, 0, 0, 3190, 3191, 7, 19, 0, 0, 3191, 3192, 7, 25, 0, 0, 3192, 508, 1, 0, 0, 0, 3193, 3194, 7, 6, 0, 0, 3194, 3195, 7, 10, 0, 0, 3195, 3196, 7, 27, 0, 0, 3196, 3197, 7, 10, 0, 0, 3197, 3198, 7, 6, 0, 0, 3198, 510, 1, 0, 0, 0, 3199, 3200, 7, 6, 0, 0, 3200, 3201, 7, 17, 0, 0, 3201, 3202, 7, 9, 0, 0, 3202, 3203, 7, 16, 0, 0, 3203, 3204, 7, 10, 0, 0, 3204, 3205, 7, 7, 0, 0, 3205, 512, 1, 0, 0, 0, 3206, 3207, 7, 6, 0, 0, 3207, 3208, 7, 19, 0, 0, 3208, 3209, 7, 5, 0, 0, 3209, 3210, 7, 12, 0, 0, 3210, 514, 1, 0, 0, 0, 3211, 3212, 7, 6, 0, 0, 3212, 3213, 7, 19, 0, 0, 3213, 3214, 7, 14, 0, 0, 3214, 3215, 7, 5, 0, 0, 3215, 3216, 7, 6, 0, 0, 3216, 516, 1, 0, 0, 0, 3217, 3218, 7, 6, 0, 0, 3218, 3219, 7, 19, 0, 0, 3219, 3220, 7, 14, 0, 0, 3220, 3221, 7, 5, 0, 0, 3221, 3222, 7, 16, 0, 0, 3222, 3223, 7, 17, 0, 0, 3223, 3224, 7, 19, 0, 0, 3224, 3225, 7, 7, 0, 0, 3225, 518, 1, 0, 0, 0, 3226, 3227, 7, 6, 0, 0, 3227, 3228, 7, 19, 0, 0, 3228, 3229, 7, 14, 0, 0, 3229, 3230, 7, 21, 0, 0, 3230, 520, 1, 0, 0, 0, 3231, 3232, 7, 15, 0, 0, 3232, 3233, 7, 5, 0, 0, 3233, 3234, 7, 24, 0, 0, 3234, 3235, 7, 24, 0, 0, 3235, 3236, 7, 17, 0, 0, 3236, 3237, 7, 7, 0, 0, 3237, 3238, 7, 23, 0, 0, 3238, 522, 1, 0, 0, 0, 3239, 3240, 7, 15, 0, 0, 3240, 3241, 7, 5, 0, 0, 3241, 3242, 7, 16, 0, 0, 3242, 3243, 7, 14, 0, 0, 3243, 3244, 7, 20, 0, 0, 3244, 524, 1, 0, 0, 0, 3245, 3246, 7, 15, 0, 0, 3246, 3247, 7, 5, 0, 0, 3247, 3248, 7, 16, 0, 0, 3248, 3249, 7, 14, 0, 0, 3249, 3250, 7, 20, 0, 0, 3250, 3251, 7, 10, 0, 0, 3251, 3252, 7, 12, 0, 0, 3252, 526, 1, 0, 0, 0, 3253, 3254, 7, 15, 0, 0, 3254, 3255, 7, 5, 0, 0, 3255, 3256, 7, 16, 0, 0, 3256, 3257, 7, 10, 0, 0, 3257, 3258, 7, 13, 0, 0, 3258, 3259, 7, 17, 0, 0, 3259, 3260, 7, 5, 0, 0, 3260, 3261, 7, 6, 0, 0, 3261, 3262, 7, 17, 0, 0, 3262, 3263, 7, 11, 0, 0, 3263, 3264, 7, 10, 0, 0, 3264, 3265, 7, 12, 0, 0, 3265, 528, 1, 0, 0, 0, 3266, 3267, 7, 15, 0, 0, 3267, 3268, 7, 5, 0, 0, 3268, 3269, 7, 26, 0, 0, 3269, 3270, 7, 27, 0, 0, 3270, 3271, 7, 5, 0, 0, 3271, 3272, 7, 6, 0, 0, 3272, 3273, 7, 22, 0, 0, 3273, 3274, 7, 10, 0, 0, 3274, 530, 1, 0, 0, 0, 3275, 3276, 7, 15, 0, 0, 3276, 3277, 7, 10, 0, 0, 3277, 3278, 7, 13, 0, 0, 3278, 3279, 7, 23, 0, 0, 3279, 3280, 7, 10, 0, 0, 3280, 532, 1, 0, 0, 0, 3281, 3282, 7, 15, 0, 0, 3282, 3283, 7, 17, 0, 0, 3283, 3284, 7, 7, 0, 0, 3284, 3285, 7, 22, 0, 0, 3285, 3286, 7, 16, 0, 0, 3286, 3287, 7, 10, 0, 0, 3287, 534, 1, 0, 0, 0, 3288, 3289, 7, 15, 0, 0, 3289, 3290, 7, 17, 0, 0, 3290, 3291, 7, 7, 0, 0, 3291, 3292, 7, 27, 0, 0, 3292, 3293, 7, 5, 0, 0, 3293, 3294, 7, 6, 0, 0, 3294, 3295, 7, 22, 0, 0, 3295, 3296, 7, 10, 0, 0, 3296, 536, 1, 0, 0, 0, 3297, 3298, 7, 15, 0, 0, 3298, 3299, 7, 19, 0, 0, 3299, 3300, 7, 12, 0, 0, 3300, 3301, 7, 10, 0, 0, 3301, 538, 1, 0, 0, 0, 3302, 3303, 7, 15, 0, 0, 3303, 3304, 7, 19, 0, 0, 3304, 3305, 7, 7, 0, 0, 3305, 3306, 7, 16, 0, 0, 3306, 3307, 7, 20, 0, 0, 3307, 540, 1, 0, 0, 0, 3308, 3309, 7, 15, 0, 0, 3309, 3310, 7, 19, 0, 0, 3310, 3311, 7, 27, 0, 0, 3311, 3312, 7, 10, 0, 0, 3312, 542, 1, 0, 0, 0, 3313, 3314, 7, 7, 0, 0, 3314, 3315, 7, 5, 0, 0, 3315, 3316, 7, 15, 0, 0, 3316, 3317, 7, 10, 0, 0, 3317, 544, 1, 0, 0, 0, 3318, 3319, 7, 7, 0, 0, 3319, 3320, 7, 5, 0, 0, 3320, 3321, 7, 15, 0, 0, 3321, 3322, 7, 10, 0, 0, 3322, 3323, 7, 9, 0, 0, 3323, 546, 1, 0, 0, 0, 3324, 3325, 7, 7, 0, 0, 3325, 3326, 7, 10, 0, 0, 3326, 3327, 7, 26, 0, 0, 3327, 3328, 7, 16, 0, 0, 3328, 548, 1, 0, 0, 0, 3329, 3330, 7, 7, 0, 0, 3330, 3331, 7, 19, 0, 0, 3331, 550, 1, 0, 0, 0, 3332, 3333, 7, 7, 0, 0, 3333, 3334, 7, 19, 0, 0, 3334, 3335, 7, 16, 0, 0, 3335, 3336, 7, 20, 0, 0, 3336, 3337, 7, 17, 0, 0, 3337, 3338, 7, 7, 0, 0, 3338, 3339, 7, 23, 0, 0, 3339, 552, 1, 0, 0, 0, 3340, 3341, 7, 7, 0, 0, 3341, 3342, 7, 19, 0, 0, 3342, 3343, 7, 16, 0, 0, 3343, 3344, 7, 17, 0, 0, 3344, 3345, 7, 25, 0, 0, 3345, 3346, 7, 8, 0, 0, 3346, 554, 1, 0, 0, 0, 3347, 3348, 7, 7, 0, 0, 3348, 3349, 7, 19, 0, 0, 3349, 3350, 7, 28, 0, 0, 3350, 3351, 7, 5, 0, 0, 3351, 3352, 7, 17, 0, 0, 3352, 3353, 7, 16, 0, 0, 3353, 556, 1, 0, 0, 0, 3354, 3355, 7, 7, 0, 0, 3355, 3356, 7, 22, 0, 0, 3356, 3357, 7, 6, 0, 0, 3357, 3358, 7, 6, 0, 0, 3358, 3359, 7, 9, 0, 0, 3359, 558, 1, 0, 0, 0, 3360, 3361, 7, 19, 0, 0, 3361, 3362, 7, 18, 0, 0, 3362, 3363, 7, 30, 0, 0, 3363, 3364, 7, 10, 0, 0, 3364, 3365, 7, 14, 0, 0, 3365, 3366, 7, 16, 0, 0, 3366, 560, 1, 0, 0, 0, 3367, 3368, 7, 19, 0, 0, 3368, 3369, 7, 25, 0, 0, 3369, 562, 1, 0, 0, 0, 3370, 3371, 7, 19, 0, 0, 3371, 3372, 7, 25, 0, 0, 3372, 3373, 7, 25, 0, 0, 3373, 564, 1, 0, 0, 0, 3374, 3375, 7, 19, 0, 0, 3375, 3376, 7, 17, 0, 0, 3376, 3377, 7, 12, 0, 0, 3377, 3378, 7, 9, 0, 0, 3378, 566, 1, 0, 0, 0, 3379, 3380, 7, 19, 0, 0, 3380, 3381, 7, 24, 0, 0, 3381, 3382, 7, 10, 0, 0, 3382, 3383, 7, 13, 0, 0, 3383, 3384, 7, 5, 0, 0, 3384, 3385, 7, 16, 0, 0, 3385, 3386, 7, 19, 0, 0, 3386, 3387, 7, 13, 0, 0, 3387, 568, 1, 0, 0, 0, 3388, 3389, 7, 19, 0, 0, 3389, 3390, 7, 24, 0, 0, 3390, 3391, 7, 16, 0, 0, 3391, 3392, 7, 17, 0, 0, 3392, 3393, 7, 19, 0, 0, 3393, 3394, 7, 7, 0, 0, 3394, 570, 1, 0, 0, 0, 3395, 3396, 7, 19, 0, 0, 3396, 3397, 7, 24, 0, 0, 3397, 3398, 7, 16, 0, 0, 3398, 3399, 7, 17, 0, 0, 3399, 3400, 7, 19, 0, 0, 3400, 3401, 7, 7, 0, 0, 3401, 3402, 7, 9, 0, 0, 3402, 572, 1, 0, 0, 0, 3403, 3404, 7, 19, 0, 0, 3404, 3405, 7, 28, 0, 0, 3405, 3406, 7, 7, 0, 0, 3406, 3407, 7, 10, 0, 0, 3407, 3408, 7, 12, 0, 0, 3408, 574, 1, 0, 0, 0, 3409, 3410, 7, 19, 0, 0, 3410, 3411, 7, 28, 0, 0, 3411, 3412, 7, 7, 0, 0, 3412, 3413, 7, 10, 0, 0, 3413, 3414, 7, 13, 0, 0, 3414, 576, 1, 0, 0, 0, 3415, 3416, 7, 24, 0, 0, 3416, 3417, 7, 5, 0, 0, 3417, 3418, 7, 13, 0, 0, 3418, 3419, 7, 9, 0, 0, 3419, 3420, 7, 10, 0, 0, 3420, 3421, 7, 13, 0, 0, 3421, 578, 1, 0, 0, 0, 3422, 3423, 7, 24, 0, 0, 3423, 3424, 7, 5, 0, 0, 3424, 3425, 7, 13, 0, 0, 3425, 3426, 7, 16, 0, 0, 3426, 3427, 7, 17, 0, 0, 3427, 3428, 7, 5, 0, 0, 3428, 3429, 7, 6, 0, 0, 3429, 580, 1, 0, 0, 0, 3430, 3431, 7, 24, 0, 0, 3431, 3432, 7, 5, 0, 0, 3432, 3433, 7, 13, 0, 0, 3433, 3434, 7, 16, 0, 0, 3434, 3435, 7, 17, 0, 0, 3435, 3436, 7, 16, 0, 0, 3436, 3437, 7, 17, 0, 0, 3437, 3438, 7, 19, 0, 0, 3438, 3439, 7, 7, 0, 0, 3439, 582, 1, 0, 0, 0, 3440, 3441, 7, 24, 0, 0, 3441, 3442, 7, 5, 0, 0, 3442, 3443, 7, 9, 0, 0, 3443, 3444, 7, 9, 0, 0, 3444, 3445, 7, 17, 0, 0, 3445, 3446, 7, 7, 0, 0, 3446, 3447, 7, 23, 0, 0, 3447, 584, 1, 0, 0, 0, 3448, 3449, 7, 24, 0, 0, 3449, 3450, 7, 5, 0, 0, 3450, 3451, 7, 9, 0, 0, 3451, 3452, 7, 9, 0, 0, 3452, 3453, 7, 28, 0, 0, 3453, 3454, 7, 19, 0, 0, 3454, 3455, 7, 13, 0, 0, 3455, 3456, 7, 12, 0, 0, 3456, 586, 1, 0, 0, 0, 3457, 3458, 7, 24, 0, 0, 3458, 3459, 7, 6, 0, 0, 3459, 3460, 7, 5, 0, 0, 3460, 3461, 7, 7, 0, 0, 3461, 3462, 7, 9, 0, 0, 3462, 588, 1, 0, 0, 0, 3463, 3464, 7, 24, 0, 0, 3464, 3465, 7, 13, 0, 0, 3465, 3466, 7, 10, 0, 0, 3466, 3467, 7, 14, 0, 0, 3467, 3468, 7, 10, 0, 0, 3468, 3469, 7, 12, 0, 0, 3469, 3470, 7, 17, 0, 0, 3470, 3471, 7, 7, 0, 0, 3471, 3472, 7, 23, 0, 0, 3472, 590, 1, 0, 0, 0, 3473, 3474, 7, 24, 0, 0, 3474, 3475, 7, 13, 0, 0, 3475, 3476, 7, 10, 0, 0, 3476, 3477, 7, 24, 0, 0, 3477, 3478, 7, 5, 0, 0, 3478, 3479, 7, 13, 0, 0, 3479, 3480, 7, 10, 0, 0, 3480, 592, 1, 0, 0, 0, 3481, 3482, 7, 24, 0, 0, 3482, 3483, 7, 13, 0, 0, 3483, 3484, 7, 10, 0, 0, 3484, 3485, 7, 24, 0, 0, 3485, 3486, 7, 5, 0, 0, 3486, 3487, 7, 13, 0, 0, 3487, 3488, 7, 10, 0, 0, 3488, 3489, 7, 12, 0, 0, 3489, 594, 1, 0, 0, 0, 3490, 3491, 7, 24, 0, 0, 3491, 3492, 7, 13, 0, 0, 3492, 3493, 7, 10, 0, 0, 3493, 3494, 7, 9, 0, 0, 3494, 3495, 7, 10, 0, 0, 3495, 3496, 7, 13, 0, 0, 3496, 3497, 7, 27, 0, 0, 3497, 3498, 7, 10, 0, 0, 3498, 596, 1, 0, 0, 0, 3499, 3500, 7, 24, 0, 0, 3500, 3501, 7, 13, 0, 0, 3501, 3502, 7, 17, 0, 0, 3502, 3503, 7, 19, 0, 0, 3503, 3504, 7, 13, 0, 0, 3504, 598, 1, 0, 0, 0, 3505, 3506, 7, 24, 0, 0, 3506, 3507, 7, 13, 0, 0, 3507, 3508, 7, 17, 0, 0, 3508, 3509, 7, 27, 0, 0, 3509, 3510, 7, 17, 0, 0, 3510, 3511, 7, 6, 0, 0, 3511, 3512, 7, 10, 0, 0, 3512, 3513, 7, 23, 0, 0, 3513, 3514, 7, 10, 0, 0, 3514, 3515, 7, 9, 0, 0, 3515, 600, 1, 0, 0, 0, 3516, 3517, 7, 24, 0, 0, 3517, 3518, 7, 13, 0, 0, 3518, 3519, 7, 19, 0, 0, 3519, 3520, 7, 14, 0, 0, 3520, 3521, 7, 10, 0, 0, 3521, 3522, 7, 12, 0, 0, 3522, 3523, 7, 22, 0, 0, 3523, 3524, 7, 13, 0, 0, 3524, 3525, 7, 5, 0, 0, 3525, 3526, 7, 6, 0, 0, 3526, 602, 1, 0, 0, 0, 3527, 3528, 7, 24, 0, 0, 3528, 3529, 7, 13, 0, 0, 3529, 3530, 7, 19, 0, 0, 3530, 3531, 7, 14, 0, 0, 3531, 3532, 7, 10, 0, 0, 3532, 3533, 7, 12, 0, 0, 3533, 3534, 7, 22, 0, 0, 3534, 3535, 7, 13, 0, 0, 3535, 3536, 7, 10, 0, 0, 3536, 604, 1, 0, 0, 0, 3537, 3538, 7, 24, 0, 0, 3538, 3539, 7, 13, 0, 0, 3539, 3540, 7, 19, 0, 0, 3540, 3541, 7, 23, 0, 0, 3541, 3542, 7, 13, 0, 0, 3542, 3543, 7, 5, 0, 0, 3543, 3544, 7, 15, 0, 0, 3544, 606, 1, 0, 0, 0, 3545, 3546, 7, 29, 0, 0, 3546, 3547, 7, 22, 0, 0, 3547, 3548, 7, 19, 0, 0, 3548, 3549, 7, 16, 0, 0, 3549, 3550, 7, 10, 0, 0, 3550, 608, 1, 0, 0, 0, 3551, 3552, 7, 13, 0, 0, 3552, 3553, 7, 5, 0, 0, 3553, 3554, 7, 7, 0, 0, 3554, 3555, 7, 23, 0, 0, 3555, 3556, 7, 10, 0, 0, 3556, 610, 1, 0, 0, 0, 3557, 3558, 7, 13, 0, 0, 3558, 3559, 7, 10, 0, 0, 3559, 3560, 7, 5, 0, 0, 3560, 3561, 7, 12, 0, 0, 3561, 612, 1, 0, 0, 0, 3562, 3563, 7, 13, 0, 0, 3563, 3564, 7, 10, 0, 0, 3564, 3565, 7, 5, 0, 0, 3565, 3566, 7, 9, 0, 0, 3566, 3567, 7, 9, 0, 0, 3567, 3568, 7, 17, 0, 0, 3568, 3569, 7, 23, 0, 0, 3569, 3570, 7, 7, 0, 0, 3570, 614, 1, 0, 0, 0, 3571, 3572, 7, 13, 0, 0, 3572, 3573, 7, 10, 0, 0, 3573, 3574, 7, 14, 0, 0, 3574, 3575, 7, 20, 0, 0, 3575, 3576, 7, 10, 0, 0, 3576, 3577, 7, 14, 0, 0, 3577, 3578, 7, 21, 0, 0, 3578, 616, 1, 0, 0, 0, 3579, 3580, 7, 13, 0, 0, 3580, 3581, 7, 10, 0, 0, 3581, 3582, 7, 14, 0, 0, 3582, 3583, 7, 22, 0, 0, 3583, 3584, 7, 13, 0, 0, 3584, 3585, 7, 9, 0, 0, 3585, 3586, 7, 17, 0, 0, 3586, 3587, 7, 27, 0, 0, 3587, 3588, 7, 10, 0, 0, 3588, 618, 1, 0, 0, 0, 3589, 3590, 7, 13, 0, 0, 3590, 3591, 7, 10, 0, 0, 3591, 3592, 7, 25, 0, 0, 3592, 620, 1, 0, 0, 0, 3593, 3594, 7, 13, 0, 0, 3594, 3595, 7, 10, 0, 0, 3595, 3596, 7, 25, 0, 0, 3596, 3597, 7, 13, 0, 0, 3597, 3598, 7, 10, 0, 0, 3598, 3599, 7, 9, 0, 0, 3599, 3600, 7, 20, 0, 0, 3600, 622, 1, 0, 0, 0, 3601, 3602, 7, 13, 0, 0, 3602, 3603, 7, 10, 0, 0, 3603, 3604, 7, 17, 0, 0, 3604, 3605, 7, 7, 0, 0, 3605, 3606, 7, 12, 0, 0, 3606, 3607, 7, 10, 0, 0, 3607, 3608, 7, 26, 0, 0, 3608, 624, 1, 0, 0, 0, 3609, 3610, 7, 13, 0, 0, 3610, 3611, 7, 10, 0, 0, 3611, 3612, 7, 6, 0, 0, 3612, 3613, 7, 5, 0, 0, 3613, 3614, 7, 16, 0, 0, 3614, 3615, 7, 17, 0, 0, 3615, 3616, 7, 27, 0, 0, 3616, 3617, 7, 10, 0, 0, 3617, 626, 1, 0, 0, 0, 3618, 3619, 7, 13, 0, 0, 3619, 3620, 7, 10, 0, 0, 3620, 3621, 7, 6, 0, 0, 3621, 3622, 7, 10, 0, 0, 3622, 3623, 7, 5, 0, 0, 3623, 3624, 7, 9, 0, 0, 3624, 3625, 7, 10, 0, 0, 3625, 628, 1, 0, 0, 0, 3626, 3627, 7, 13, 0, 0, 3627, 3628, 7, 10, 0, 0, 3628, 3629, 7, 7, 0, 0, 3629, 3630, 7, 5, 0, 0, 3630, 3631, 7, 15, 0, 0, 3631, 3632, 7, 10, 0, 0, 3632, 630, 1, 0, 0, 0, 3633, 3634, 7, 13, 0, 0, 3634, 3635, 7, 10, 0, 0, 3635, 3636, 7, 24, 0, 0, 3636, 3637, 7, 10, 0, 0, 3637, 3638, 7, 5, 0, 0, 3638, 3639, 7, 16, 0, 0, 3639, 3640, 7, 5, 0, 0, 3640, 3641, 7, 18, 0, 0, 3641, 3642, 7, 6, 0, 0, 3642, 3643, 7, 10, 0, 0, 3643, 632, 1, 0, 0, 0, 3644, 3645, 7, 13, 0, 0, 3645, 3646, 7, 10, 0, 0, 3646, 3647, 7, 24, 0, 0, 3647, 3648, 7, 6, 0, 0, 3648, 3649, 7, 5, 0, 0, 3649, 3650, 7, 14, 0, 0, 3650, 3651, 7, 10, 0, 0, 3651, 634, 1, 0, 0, 0, 3652, 3653, 7, 13, 0, 0, 3653, 3654, 7, 10, 0, 0, 3654, 3655, 7, 24, 0, 0, 3655, 3656, 7, 6, 0, 0, 3656, 3657, 7, 17, 0, 0, 3657, 3658, 7, 14, 0, 0, 3658, 3659, 7, 5, 0, 0, 3659, 636, 1, 0, 0, 0, 3660, 3661, 7, 13, 0, 0, 3661, 3662, 7, 10, 0, 0, 3662, 3663, 7, 9, 0, 0, 3663, 3664, 7, 10, 0, 0, 3664, 3665, 7, 16, 0, 0, 3665, 638, 1, 0, 0, 0, 3666, 3667, 7, 13, 0, 0, 3667, 3668, 7, 10, 0, 0, 3668, 3669, 7, 9, 0, 0, 3669, 3670, 7, 16, 0, 0, 3670, 3671, 7, 5, 0, 0, 3671, 3672, 7, 13, 0, 0, 3672, 3673, 7, 16, 0, 0, 3673, 640, 1, 0, 0, 0, 3674, 3675, 7, 13, 0, 0, 3675, 3676, 7, 10, 0, 0, 3676, 3677, 7, 9, 0, 0, 3677, 3678, 7, 16, 0, 0, 3678, 3679, 7, 13, 0, 0, 3679, 3680, 7, 17, 0, 0, 3680, 3681, 7, 14, 0, 0, 3681, 3682, 7, 16, 0, 0, 3682, 642, 1, 0, 0, 0, 3683, 3684, 7, 13, 0, 0, 3684, 3685, 7, 10, 0, 0, 3685, 3686, 7, 16, 0, 0, 3686, 3687, 7, 22, 0, 0, 3687, 3688, 7, 13, 0, 0, 3688, 3689, 7, 7, 0, 0, 3689, 3690, 7, 9, 0, 0, 3690, 644, 1, 0, 0, 0, 3691, 3692, 7, 13, 0, 0, 3692, 3693, 7, 10, 0, 0, 3693, 3694, 7, 27, 0, 0, 3694, 3695, 7, 19, 0, 0, 3695, 3696, 7, 21, 0, 0, 3696, 3697, 7, 10, 0, 0, 3697, 646, 1, 0, 0, 0, 3698, 3699, 7, 13, 0, 0, 3699, 3700, 7, 19, 0, 0, 3700, 3701, 7, 6, 0, 0, 3701, 3702, 7, 10, 0, 0, 3702, 648, 1, 0, 0, 0, 3703, 3704, 7, 13, 0, 0, 3704, 3705, 7, 19, 0, 0, 3705, 3706, 7, 6, 0, 0, 3706, 3707, 7, 6, 0, 0, 3707, 3708, 7, 18, 0, 0, 3708, 3709, 7, 5, 0, 0, 3709, 3710, 7, 14, 0, 0, 3710, 3711, 7, 21, 0, 0, 3711, 650, 1, 0, 0, 0, 3712, 3713, 7, 13, 0, 0, 3713, 3714, 7, 19, 0, 0, 3714, 3715, 7, 28, 0, 0, 3715, 3716, 7, 9, 0, 0, 3716, 652, 1, 0, 0, 0, 3717, 3718, 7, 13, 0, 0, 3718, 3719, 7, 22, 0, 0, 3719, 3720, 7, 6, 0, 0, 3720, 3721, 7, 10, 0, 0, 3721, 654, 1, 0, 0, 0, 3722, 3723, 7, 9, 0, 0, 3723, 3724, 7, 5, 0, 0, 3724, 3725, 7, 27, 0, 0, 3725, 3726, 7, 10, 0, 0, 3726, 3727, 7, 24, 0, 0, 3727, 3728, 7, 19, 0, 0, 3728, 3729, 7, 17, 0, 0, 3729, 3730, 7, 7, 0, 0, 3730, 3731, 7, 16, 0, 0, 3731, 656, 1, 0, 0, 0, 3732, 3733, 7, 9, 0, 0, 3733, 3734, 7, 14, 0, 0, 3734, 3735, 7, 20, 0, 0, 3735, 3736, 7, 10, 0, 0, 3736, 3737, 7, 15, 0, 0, 3737, 3738, 7, 5, 0, 0, 3738, 658, 1, 0, 0, 0, 3739, 3740, 7, 9, 0, 0, 3740, 3741, 7, 14, 0, 0, 3741, 3742, 7, 13, 0, 0, 3742, 3743, 7, 19, 0, 0, 3743, 3744, 7, 6, 0, 0, 3744, 3745, 7, 6, 0, 0, 3745, 660, 1, 0, 0, 0, 3746, 3747, 7, 9, 0, 0, 3747, 3748, 7, 10, 0, 0, 3748, 3749, 7, 5, 0, 0, 3749, 3750, 7, 13, 0, 0, 3750, 3751, 7, 14, 0, 0, 3751, 3752, 7, 20, 0, 0, 3752, 662, 1, 0, 0, 0, 3753, 3754, 7, 9, 0, 0, 3754, 3755, 7, 10, 0, 0, 3755, 3756, 7, 14, 0, 0, 3756, 3757, 7, 19, 0, 0, 3757, 3758, 7, 7, 0, 0, 3758, 3759, 7, 12, 0, 0, 3759, 664, 1, 0, 0, 0, 3760, 3761, 7, 9, 0, 0, 3761, 3762, 7, 10, 0, 0, 3762, 3763, 7, 14, 0, 0, 3763, 3764, 7, 22, 0, 0, 3764, 3765, 7, 13, 0, 0, 3765, 3766, 7, 17, 0, 0, 3766, 3767, 7, 16, 0, 0, 3767, 3768, 7, 8, 0, 0, 3768, 666, 1, 0, 0, 0, 3769, 3770, 7, 9, 0, 0, 3770, 3771, 7, 10, 0, 0, 3771, 3772, 7, 29, 0, 0, 3772, 3773, 7, 22, 0, 0, 3773, 3774, 7, 10, 0, 0, 3774, 3775, 7, 7, 0, 0, 3775, 3776, 7, 14, 0, 0, 3776, 3777, 7, 10, 0, 0, 3777, 668, 1, 0, 0, 0, 3778, 3779, 7, 9, 0, 0, 3779, 3780, 7, 10, 0, 0, 3780, 3781, 7, 29, 0, 0, 3781, 3782, 7, 22, 0, 0, 3782, 3783, 7, 10, 0, 0, 3783, 3784, 7, 7, 0, 0, 3784, 3785, 7, 14, 0, 0, 3785, 3786, 7, 10, 0, 0, 3786, 3787, 7, 9, 0, 0, 3787, 670, 1, 0, 0, 0, 3788, 3789, 7, 9, 0, 0, 3789, 3790, 7, 10, 0, 0, 3790, 3791, 7, 13, 0, 0, 3791, 3792, 7, 17, 0, 0, 3792, 3793, 7, 5, 0, 0, 3793, 3794, 7, 6, 0, 0, 3794, 3795, 7, 17, 0, 0, 3795, 3796, 7, 11, 0, 0, 3796, 3797, 7, 5, 0, 0, 3797, 3798, 7, 18, 0, 0, 3798, 3799, 7, 6, 0, 0, 3799, 3800, 7, 10, 0, 0, 3800, 672, 1, 0, 0, 0, 3801, 3802, 7, 9, 0, 0, 3802, 3803, 7, 10, 0, 0, 3803, 3804, 7, 13, 0, 0, 3804, 3805, 7, 27, 0, 0, 3805, 3806, 7, 10, 0, 0, 3806, 3807, 7, 13, 0, 0, 3807, 674, 1, 0, 0, 0, 3808, 3809, 7, 9, 0, 0, 3809, 3810, 7, 10, 0, 0, 3810, 3811, 7, 9, 0, 0, 3811, 3812, 7, 9, 0, 0, 3812, 3813, 7, 17, 0, 0, 3813, 3814, 7, 19, 0, 0, 3814, 3815, 7, 7, 0, 0, 3815, 676, 1, 0, 0, 0, 3816, 3817, 7, 9, 0, 0, 3817, 3818, 7, 10, 0, 0, 3818, 3819, 7, 16, 0, 0, 3819, 678, 1, 0, 0, 0, 3820, 3821, 7, 9, 0, 0, 3821, 3822, 7, 20, 0, 0, 3822, 3823, 7, 5, 0, 0, 3823, 3824, 7, 13, 0, 0, 3824, 3825, 7, 10, 0, 0, 3825, 680, 1, 0, 0, 0, 3826, 3827, 7, 9, 0, 0, 3827, 3828, 7, 20, 0, 0, 3828, 3829, 7, 19, 0, 0, 3829, 3830, 7, 28, 0, 0, 3830, 682, 1, 0, 0, 0, 3831, 3832, 7, 9, 0, 0, 3832, 3833, 7, 17, 0, 0, 3833, 3834, 7, 15, 0, 0, 3834, 3835, 7, 24, 0, 0, 3835, 3836, 7, 6, 0, 0, 3836, 3837, 7, 10, 0, 0, 3837, 684, 1, 0, 0, 0, 3838, 3839, 7, 9, 0, 0, 3839, 3840, 7, 7, 0, 0, 3840, 3841, 7, 5, 0, 0, 3841, 3842, 7, 24, 0, 0, 3842, 3843, 7, 9, 0, 0, 3843, 3844, 7, 20, 0, 0, 3844, 3845, 7, 19, 0, 0, 3845, 3846, 7, 16, 0, 0, 3846, 686, 1, 0, 0, 0, 3847, 3848, 7, 9, 0, 0, 3848, 3849, 7, 16, 0, 0, 3849, 3850, 7, 5, 0, 0, 3850, 3851, 7, 18, 0, 0, 3851, 3852, 7, 6, 0, 0, 3852, 3853, 7, 10, 0, 0, 3853, 688, 1, 0, 0, 0, 3854, 3855, 7, 9, 0, 0, 3855, 3856, 7, 16, 0, 0, 3856, 3857, 7, 5, 0, 0, 3857, 3858, 7, 7, 0, 0, 3858, 3859, 7, 12, 0, 0, 3859, 3860, 7, 5, 0, 0, 3860, 3861, 7, 6, 0, 0, 3861, 3862, 7, 19, 0, 0, 3862, 3863, 7, 7, 0, 0, 3863, 3864, 7, 10, 0, 0, 3864, 690, 1, 0, 0, 0, 3865, 3866, 7, 9, 0, 0, 3866, 3867, 7, 16, 0, 0, 3867, 3868, 7, 5, 0, 0, 3868, 3869, 7, 13, 0, 0, 3869, 3870, 7, 16, 0, 0, 3870, 692, 1, 0, 0, 0, 3871, 3872, 7, 9, 0, 0, 3872, 3873, 7, 16, 0, 0, 3873, 3874, 7, 5, 0, 0, 3874, 3875, 7, 16, 0, 0, 3875, 3876, 7, 10, 0, 0, 3876, 3877, 7, 15, 0, 0, 3877, 3878, 7, 10, 0, 0, 3878, 3879, 7, 7, 0, 0, 3879, 3880, 7, 16, 0, 0, 3880, 694, 1, 0, 0, 0, 3881, 3882, 7, 9, 0, 0, 3882, 3883, 7, 16, 0, 0, 3883, 3884, 7, 5, 0, 0, 3884, 3885, 7, 16, 0, 0, 3885, 3886, 7, 17, 0, 0, 3886, 3887, 7, 9, 0, 0, 3887, 3888, 7, 16, 0, 0, 3888, 3889, 7, 17, 0, 0, 3889, 3890, 7, 14, 0, 0, 3890, 3891, 7, 9, 0, 0, 3891, 696, 1, 0, 0, 0, 3892, 3893, 7, 9, 0, 0, 3893, 3894, 7, 16, 0, 0, 3894, 3895, 7, 12, 0, 0, 3895, 3896, 7, 17, 0, 0, 3896, 3897, 7, 7, 0, 0, 3897, 698, 1, 0, 0, 0, 3898, 3899, 7, 9, 0, 0, 3899, 3900, 7, 16, 0, 0, 3900, 3901, 7, 12, 0, 0, 3901, 3902, 7, 19, 0, 0, 3902, 3903, 7, 22, 0, 0, 3903, 3904, 7, 16, 0, 0, 3904, 700, 1, 0, 0, 0, 3905, 3906, 7, 9, 0, 0, 3906, 3907, 7, 16, 0, 0, 3907, 3908, 7, 19, 0, 0, 3908, 3909, 7, 13, 0, 0, 3909, 3910, 7, 5, 0, 0, 3910, 3911, 7, 23, 0, 0, 3911, 3912, 7, 10, 0, 0, 3912, 702, 1, 0, 0, 0, 3913, 3914, 7, 9, 0, 0, 3914, 3915, 7, 16, 0, 0, 3915, 3916, 7, 13, 0, 0, 3916, 3917, 7, 17, 0, 0, 3917, 3918, 7, 14, 0, 0, 3918, 3919, 7, 16, 0, 0, 3919, 704, 1, 0, 0, 0, 3920, 3921, 7, 9, 0, 0, 3921, 3922, 7, 16, 0, 0, 3922, 3923, 7, 13, 0, 0, 3923, 3924, 7, 17, 0, 0, 3924, 3925, 7, 24, 0, 0, 3925, 706, 1, 0, 0, 0, 3926, 3927, 7, 9, 0, 0, 3927, 3928, 7, 8, 0, 0, 3928, 3929, 7, 9, 0, 0, 3929, 3930, 7, 17, 0, 0, 3930, 3931, 7, 12, 0, 0, 3931, 708, 1, 0, 0, 0, 3932, 3933, 7, 9, 0, 0, 3933, 3934, 7, 8, 0, 0, 3934, 3935, 7, 9, 0, 0, 3935, 3936, 7, 16, 0, 0, 3936, 3937, 7, 10, 0, 0, 3937, 3938, 7, 15, 0, 0, 3938, 710, 1, 0, 0, 0, 3939, 3940, 7, 16, 0, 0, 3940, 3941, 7, 5, 0, 0, 3941, 3942, 7, 18, 0, 0, 3942, 3943, 7, 6, 0, 0, 3943, 3944, 7, 10, 0, 0, 3944, 3945, 7, 9, 0, 0, 3945, 712, 1, 0, 0, 0, 3946, 3947, 7, 11, 0, 0, 3947, 3948, 7, 16, 0, 0, 3948, 3949, 7, 5, 0, 0, 3949, 3950, 7, 18, 0, 0, 3950, 3951, 7, 6, 0, 0, 3951, 3952, 7, 10, 0, 0, 3952, 3953, 7, 9, 0, 0, 3953, 714, 1, 0, 0, 0, 3954, 3955, 7, 16, 0, 0, 3955, 3956, 7, 5, 0, 0, 3956, 3957, 7, 18, 0, 0, 3957, 3958, 7, 6, 0, 0, 3958, 3959, 7, 10, 0, 0, 3959, 3960, 7, 9, 0, 0, 3960, 3961, 7, 24, 0, 0, 3961, 3962, 7, 5, 0, 0, 3962, 3963, 7, 14, 0, 0, 3963, 3964, 7, 10, 0, 0, 3964, 716, 1, 0, 0, 0, 3965, 3966, 7, 16, 0, 0, 3966, 3967, 7, 10, 0, 0, 3967, 3968, 7, 15, 0, 0, 3968, 3969, 7, 24, 0, 0, 3969, 718, 1, 0, 0, 0, 3970, 3971, 7, 16, 0, 0, 3971, 3972, 7, 10, 0, 0, 3972, 3973, 7, 15, 0, 0, 3973, 3974, 7, 24, 0, 0, 3974, 3975, 7, 6, 0, 0, 3975, 3976, 7, 5, 0, 0, 3976, 3977, 7, 16, 0, 0, 3977, 3978, 7, 10, 0, 0, 3978, 720, 1, 0, 0, 0, 3979, 3980, 7, 16, 0, 0, 3980, 3981, 7, 10, 0, 0, 3981, 3982, 7, 15, 0, 0, 3982, 3983, 7, 24, 0, 0, 3983, 3984, 7, 19, 0, 0, 3984, 3985, 7, 13, 0, 0, 3985, 3986, 7, 5, 0, 0, 3986, 3987, 7, 13, 0, 0, 3987, 3988, 7, 8, 0, 0, 3988, 722, 1, 0, 0, 0, 3989, 3990, 7, 16, 0, 0, 3990, 3991, 7, 10, 0, 0, 3991, 3992, 7, 26, 0, 0, 3992, 3993, 7, 16, 0, 0, 3993, 724, 1, 0, 0, 0, 3994, 3995, 7, 16, 0, 0, 3995, 3996, 7, 13, 0, 0, 3996, 3997, 7, 5, 0, 0, 3997, 3998, 7, 7, 0, 0, 3998, 3999, 7, 9, 0, 0, 3999, 4000, 7, 5, 0, 0, 4000, 4001, 7, 14, 0, 0, 4001, 4002, 7, 16, 0, 0, 4002, 4003, 7, 17, 0, 0, 4003, 4004, 7, 19, 0, 0, 4004, 4005, 7, 7, 0, 0, 4005, 726, 1, 0, 0, 0, 4006, 4007, 7, 16, 0, 0, 4007, 4008, 7, 13, 0, 0, 4008, 4009, 7, 17, 0, 0, 4009, 4010, 7, 23, 0, 0, 4010, 4011, 7, 23, 0, 0, 4011, 4012, 7, 10, 0, 0, 4012, 4013, 7, 13, 0, 0, 4013, 728, 1, 0, 0, 0, 4014, 4015, 7, 16, 0, 0, 4015, 4016, 7, 13, 0, 0, 4016, 4017, 7, 22, 0, 0, 4017, 4018, 7, 7, 0, 0, 4018, 4019, 7, 14, 0, 0, 4019, 4020, 7, 5, 0, 0, 4020, 4021, 7, 16, 0, 0, 4021, 4022, 7, 10, 0, 0, 4022, 730, 1, 0, 0, 0, 4023, 4024, 7, 16, 0, 0, 4024, 4025, 7, 13, 0, 0, 4025, 4026, 7, 22, 0, 0, 4026, 4027, 7, 9, 0, 0, 4027, 4028, 7, 16, 0, 0, 4028, 4029, 7, 10, 0, 0, 4029, 4030, 7, 12, 0, 0, 4030, 732, 1, 0, 0, 0, 4031, 4032, 7, 16, 0, 0, 4032, 4033, 7, 8, 0, 0, 4033, 4034, 7, 24, 0, 0, 4034, 4035, 7, 10, 0, 0, 4035, 734, 1, 0, 0, 0, 4036, 4037, 7, 16, 0, 0, 4037, 4038, 7, 8, 0, 0, 4038, 4039, 7, 24, 0, 0, 4039, 4040, 7, 10, 0, 0, 4040, 4041, 7, 9, 0, 0, 4041, 736, 1, 0, 0, 0, 4042, 4043, 7, 22, 0, 0, 4043, 4044, 7, 7, 0, 0, 4044, 4045, 7, 18, 0, 0, 4045, 4046, 7, 19, 0, 0, 4046, 4047, 7, 22, 0, 0, 4047, 4048, 7, 7, 0, 0, 4048, 4049, 7, 12, 0, 0, 4049, 4050, 7, 10, 0, 0, 4050, 4051, 7, 12, 0, 0, 4051, 738, 1, 0, 0, 0, 4052, 4053, 7, 22, 0, 0, 4053, 4054, 7, 7, 0, 0, 4054, 4055, 7, 14, 0, 0, 4055, 4056, 7, 19, 0, 0, 4056, 4057, 7, 15, 0, 0, 4057, 4058, 7, 15, 0, 0, 4058, 4059, 7, 17, 0, 0, 4059, 4060, 7, 16, 0, 0, 4060, 4061, 7, 16, 0, 0, 4061, 4062, 7, 10, 0, 0, 4062, 4063, 7, 12, 0, 0, 4063, 740, 1, 0, 0, 0, 4064, 4065, 7, 22, 0, 0, 4065, 4066, 7, 7, 0, 0, 4066, 4067, 7, 10, 0, 0, 4067, 4068, 7, 7, 0, 0, 4068, 4069, 7, 14, 0, 0, 4069, 4070, 7, 13, 0, 0, 4070, 4071, 7, 8, 0, 0, 4071, 4072, 7, 24, 0, 0, 4072, 4073, 7, 16, 0, 0, 4073, 4074, 7, 10, 0, 0, 4074, 4075, 7, 12, 0, 0, 4075, 742, 1, 0, 0, 0, 4076, 4077, 7, 22, 0, 0, 4077, 4078, 7, 7, 0, 0, 4078, 4079, 7, 21, 0, 0, 4079, 4080, 7, 7, 0, 0, 4080, 4081, 7, 19, 0, 0, 4081, 4082, 7, 28, 0, 0, 4082, 4083, 7, 7, 0, 0, 4083, 744, 1, 0, 0, 0, 4084, 4085, 7, 22, 0, 0, 4085, 4086, 7, 7, 0, 0, 4086, 4087, 7, 6, 0, 0, 4087, 4088, 7, 17, 0, 0, 4088, 4089, 7, 9, 0, 0, 4089, 4090, 7, 16, 0, 0, 4090, 4091, 7, 10, 0, 0, 4091, 4092, 7, 7, 0, 0, 4092, 746, 1, 0, 0, 0, 4093, 4094, 7, 22, 0, 0, 4094, 4095, 7, 7, 0, 0, 4095, 4096, 7, 6, 0, 0, 4096, 4097, 7, 19, 0, 0, 4097, 4098, 7, 23, 0, 0, 4098, 4099, 7, 23, 0, 0, 4099, 4100, 7, 10, 0, 0, 4100, 4101, 7, 12, 0, 0, 4101, 748, 1, 0, 0, 0, 4102, 4103, 7, 22, 0, 0, 4103, 4104, 7, 7, 0, 0, 4104, 4105, 7, 16, 0, 0, 4105, 4106, 7, 17, 0, 0, 4106, 4107, 7, 6, 0, 0, 4107, 750, 1, 0, 0, 0, 4108, 4109, 7, 22, 0, 0, 4109, 4110, 7, 24, 0, 0, 4110, 4111, 7, 12, 0, 0, 4111, 4112, 7, 5, 0, 0, 4112, 4113, 7, 16, 0, 0, 4113, 4114, 7, 10, 0, 0, 4114, 752, 1, 0, 0, 0, 4115, 4116, 7, 27, 0, 0, 4116, 4117, 7, 5, 0, 0, 4117, 4118, 7, 14, 0, 0, 4118, 4119, 7, 22, 0, 0, 4119, 4120, 7, 22, 0, 0, 4120, 4121, 7, 15, 0, 0, 4121, 754, 1, 0, 0, 0, 4122, 4123, 7, 27, 0, 0, 4123, 4124, 7, 5, 0, 0, 4124, 4125, 7, 6, 0, 0, 4125, 4126, 7, 17, 0, 0, 4126, 4127, 7, 12, 0, 0, 4127, 756, 1, 0, 0, 0, 4128, 4129, 7, 27, 0, 0, 4129, 4130, 7, 5, 0, 0, 4130, 4131, 7, 6, 0, 0, 4131, 4132, 7, 17, 0, 0, 4132, 4133, 7, 12, 0, 0, 4133, 4134, 7, 5, 0, 0, 4134, 4135, 7, 16, 0, 0, 4135, 4136, 7, 10, 0, 0, 4136, 758, 1, 0, 0, 0, 4137, 4138, 7, 27, 0, 0, 4138, 4139, 7, 5, 0, 0, 4139, 4140, 7, 6, 0, 0, 4140, 4141, 7, 17, 0, 0, 4141, 4142, 7, 12, 0, 0, 4142, 4143, 7, 5, 0, 0, 4143, 4144, 7, 16, 0, 0, 4144, 4145, 7, 19, 0, 0, 4145, 4146, 7, 13, 0, 0, 4146, 760, 1, 0, 0, 0, 4147, 4148, 7, 27, 0, 0, 4148, 4149, 7, 5, 0, 0, 4149, 4150, 7, 13, 0, 0, 4150, 4151, 7, 8, 0, 0, 4151, 4152, 7, 17, 0, 0, 4152, 4153, 7, 7, 0, 0, 4153, 4154, 7, 23, 0, 0, 4154, 762, 1, 0, 0, 0, 4155, 4156, 7, 27, 0, 0, 4156, 4157, 7, 10, 0, 0, 4157, 4158, 7, 13, 0, 0, 4158, 4159, 7, 9, 0, 0, 4159, 4160, 7, 17, 0, 0, 4160, 4161, 7, 19, 0, 0, 4161, 4162, 7, 7, 0, 0, 4162, 764, 1, 0, 0, 0, 4163, 4164, 7, 27, 0, 0, 4164, 4165, 7, 17, 0, 0, 4165, 4166, 7, 10, 0, 0, 4166, 4167, 7, 28, 0, 0, 4167, 766, 1, 0, 0, 0, 4168, 4169, 7, 27, 0, 0, 4169, 4170, 7, 19, 0, 0, 4170, 4171, 7, 6, 0, 0, 4171, 4172, 7, 5, 0, 0, 4172, 4173, 7, 16, 0, 0, 4173, 4174, 7, 17, 0, 0, 4174, 4175, 7, 6, 0, 0, 4175, 4176, 7, 10, 0, 0, 4176, 768, 1, 0, 0, 0, 4177, 4178, 7, 28, 0, 0, 4178, 4179, 7, 20, 0, 0, 4179, 4180, 7, 17, 0, 0, 4180, 4181, 7, 16, 0, 0, 4181, 4182, 7, 10, 0, 0, 4182, 4183, 7, 9, 0, 0, 4183, 4184, 7, 24, 0, 0, 4184, 4185, 7, 5, 0, 0, 4185, 4186, 7, 14, 0, 0, 4186, 4187, 7, 10, 0, 0, 4187, 770, 1, 0, 0, 0, 4188, 4189, 7, 28, 0, 0, 4189, 4190, 7, 17, 0, 0, 4190, 4191, 7, 16, 0, 0, 4191, 4192, 7, 20, 0, 0, 4192, 4193, 7, 19, 0, 0, 4193, 4194, 7, 22, 0, 0, 4194, 4195, 7, 16, 0, 0, 4195, 772, 1, 0, 0, 0, 4196, 4197, 7, 28, 0, 0, 4197, 4198, 7, 19, 0, 0, 4198, 4199, 7, 13, 0, 0, 4199, 4200, 7, 21, 0, 0, 4200, 774, 1, 0, 0, 0, 4201, 4202, 7, 28, 0, 0, 4202, 4203, 7, 13, 0, 0, 4203, 4204, 7, 5, 0, 0, 4204, 4205, 7, 24, 0, 0, 4205, 4206, 7, 24, 0, 0, 4206, 4207, 7, 10, 0, 0, 4207, 4208, 7, 13, 0, 0, 4208, 776, 1, 0, 0, 0, 4209, 4210, 7, 28, 0, 0, 4210, 4211, 7, 13, 0, 0, 4211, 4212, 7, 17, 0, 0, 4212, 4213, 7, 16, 0, 0, 4213, 4214, 7, 10, 0, 0, 4214, 778, 1, 0, 0, 0, 4215, 4216, 7, 26, 0, 0, 4216, 4217, 7, 15, 0, 0, 4217, 4218, 7, 6, 0, 0, 4218, 780, 1, 0, 0, 0, 4219, 4220, 7, 8, 0, 0, 4220, 4221, 7, 10, 0, 0, 4221, 4222, 7, 5, 0, 0, 4222, 4223, 7, 13, 0, 0, 4223, 782, 1, 0, 0, 0, 4224, 4225, 7, 8, 0, 0, 4225, 4226, 7, 10, 0, 0, 4226, 4227, 7, 9, 0, 0, 4227, 784, 1, 0, 0, 0, 4228, 4229, 7, 11, 0, 0, 4229, 4230, 7, 19, 0, 0, 4230, 4231, 7, 7, 0, 0, 4231, 4232, 7, 10, 0, 0, 4232, 786, 1, 0, 0, 0, 4233, 4234, 7, 18, 0, 0, 4234, 4235, 7, 10, 0, 0, 4235, 4236, 7, 16, 0, 0, 4236, 4237, 7, 28, 0, 0, 4237, 4238, 7, 10, 0, 0, 4238, 4239, 7, 10, 0, 0, 4239, 4240, 7, 7, 0, 0, 4240, 788, 1, 0, 0, 0, 4241, 4242, 7, 18, 0, 0, 4242, 4243, 7, 17, 0, 0, 4243, 4244, 7, 23, 0, 0, 4244, 4245, 7, 17, 0, 0, 4245, 4246, 7, 7, 0, 0, 4246, 4247, 7, 16, 0, 0, 4247, 790, 1, 0, 0, 0, 4248, 4249, 7, 18, 0, 0, 4249, 4250, 7, 17, 0, 0, 4250, 4251, 7, 16, 0, 0, 4251, 792, 1, 0, 0, 0, 4252, 4253, 7, 18, 0, 0, 4253, 4254, 7, 19, 0, 0, 4254, 4255, 7, 19, 0, 0, 4255, 4256, 7, 6, 0, 0, 4256, 4257, 7, 10, 0, 0, 4257, 4258, 7, 5, 0, 0, 4258, 4259, 7, 7, 0, 0, 4259, 794, 1, 0, 0, 0, 4260, 4261, 7, 14, 0, 0, 4261, 4262, 7, 20, 0, 0, 4262, 4263, 7, 5, 0, 0, 4263, 4264, 7, 13, 0, 0, 4264, 796, 1, 0, 0, 0, 4265, 4266, 7, 14, 0, 0, 4266, 4267, 7, 20, 0, 0, 4267, 4268, 7, 5, 0, 0, 4268, 4269, 7, 13, 0, 0, 4269, 4270, 7, 5, 0, 0, 4270, 4271, 7, 14, 0, 0, 4271, 4272, 7, 16, 0, 0, 4272, 4273, 7, 10, 0, 0, 4273, 4274, 7, 13, 0, 0, 4274, 798, 1, 0, 0, 0, 4275, 4276, 7, 14, 0, 0, 4276, 4277, 7, 19, 0, 0, 4277, 4278, 7, 5, 0, 0, 4278, 4279, 7, 6, 0, 0, 4279, 4280, 7, 10, 0, 0, 4280, 4281, 7, 9, 0, 0, 4281, 4282, 7, 14, 0, 0, 4282, 4283, 7, 10, 0, 0, 4283, 800, 1, 0, 0, 0, 4284, 4285, 7, 12, 0, 0, 4285, 4286, 7, 10, 0, 0, 4286, 4287, 7, 14, 0, 0, 4287, 802, 1, 0, 0, 0, 4288, 4289, 7, 12, 0, 0, 4289, 4290, 7, 10, 0, 0, 4290, 4291, 7, 14, 0, 0, 4291, 4292, 7, 17, 0, 0, 4292, 4293, 7, 15, 0, 0, 4293, 4294, 7, 5, 0, 0, 4294, 4295, 7, 6, 0, 0, 4295, 804, 1, 0, 0, 0, 4296, 4297, 7, 10, 0, 0, 4297, 4298, 7, 26, 0, 0, 4298, 4299, 7, 17, 0, 0, 4299, 4300, 7, 9, 0, 0, 4300, 4301, 7, 16, 0, 0, 4301, 4302, 7, 9, 0, 0, 4302, 806, 1, 0, 0, 0, 4303, 4304, 7, 10, 0, 0, 4304, 4305, 7, 26, 0, 0, 4305, 4306, 7, 16, 0, 0, 4306, 4307, 7, 13, 0, 0, 4307, 4308, 7, 5, 0, 0, 4308, 4309, 7, 14, 0, 0, 4309, 4310, 7, 16, 0, 0, 4310, 808, 1, 0, 0, 0, 4311, 4312, 7, 25, 0, 0, 4312, 4313, 7, 6, 0, 0, 4313, 4314, 7, 19, 0, 0, 4314, 4315, 7, 5, 0, 0, 4315, 4316, 7, 16, 0, 0, 4316, 810, 1, 0, 0, 0, 4317, 4318, 7, 23, 0, 0, 4318, 4319, 7, 13, 0, 0, 4319, 4320, 7, 10, 0, 0, 4320, 4321, 7, 5, 0, 0, 4321, 4322, 7, 16, 0, 0, 4322, 4323, 7, 10, 0, 0, 4323, 4324, 7, 9, 0, 0, 4324, 4325, 7, 16, 0, 0, 4325, 812, 1, 0, 0, 0, 4326, 4327, 7, 17, 0, 0, 4327, 4328, 7, 7, 0, 0, 4328, 4329, 7, 19, 0, 0, 4329, 4330, 7, 22, 0, 0, 4330, 4331, 7, 16, 0, 0, 4331, 814, 1, 0, 0, 0, 4332, 4333, 7, 17, 0, 0, 4333, 4334, 7, 7, 0, 0, 4334, 4335, 7, 16, 0, 0, 4335, 816, 1, 0, 0, 0, 4336, 4337, 7, 17, 0, 0, 4337, 4338, 7, 7, 0, 0, 4338, 4339, 7, 16, 0, 0, 4339, 4340, 7, 10, 0, 0, 4340, 4341, 7, 23, 0, 0, 4341, 4342, 7, 10, 0, 0, 4342, 4343, 7, 13, 0, 0, 4343, 818, 1, 0, 0, 0, 4344, 4345, 7, 17, 0, 0, 4345, 4346, 7, 7, 0, 0, 4346, 4347, 7, 16, 0, 0, 4347, 4348, 7, 10, 0, 0, 4348, 4349, 7, 13, 0, 0, 4349, 4350, 7, 27, 0, 0, 4350, 4351, 7, 5, 0, 0, 4351, 4352, 7, 6, 0, 0, 4352, 820, 1, 0, 0, 0, 4353, 4354, 7, 6, 0, 0, 4354, 4355, 7, 10, 0, 0, 4355, 4356, 7, 5, 0, 0, 4356, 4357, 7, 9, 0, 0, 4357, 4358, 7, 16, 0, 0, 4358, 822, 1, 0, 0, 0, 4359, 4360, 7, 7, 0, 0, 4360, 4361, 7, 5, 0, 0, 4361, 4362, 7, 16, 0, 0, 4362, 4363, 7, 17, 0, 0, 4363, 4364, 7, 19, 0, 0, 4364, 4365, 7, 7, 0, 0, 4365, 4366, 7, 5, 0, 0, 4366, 4367, 7, 6, 0, 0, 4367, 824, 1, 0, 0, 0, 4368, 4369, 7, 7, 0, 0, 4369, 4370, 7, 14, 0, 0, 4370, 4371, 7, 20, 0, 0, 4371, 4372, 7, 5, 0, 0, 4372, 4373, 7, 13, 0, 0, 4373, 826, 1, 0, 0, 0, 4374, 4375, 7, 7, 0, 0, 4375, 4376, 7, 19, 0, 0, 4376, 4377, 7, 7, 0, 0, 4377, 4378, 7, 10, 0, 0, 4378, 828, 1, 0, 0, 0, 4379, 4380, 7, 7, 0, 0, 4380, 4381, 7, 22, 0, 0, 4381, 4382, 7, 6, 0, 0, 4382, 4383, 7, 6, 0, 0, 4383, 4384, 7, 17, 0, 0, 4384, 4385, 7, 25, 0, 0, 4385, 830, 1, 0, 0, 0, 4386, 4387, 7, 7, 0, 0, 4387, 4388, 7, 22, 0, 0, 4388, 4389, 7, 15, 0, 0, 4389, 4390, 7, 10, 0, 0, 4390, 4391, 7, 13, 0, 0, 4391, 4392, 7, 17, 0, 0, 4392, 4393, 7, 14, 0, 0, 4393, 832, 1, 0, 0, 0, 4394, 4395, 7, 19, 0, 0, 4395, 4396, 7, 27, 0, 0, 4396, 4397, 7, 10, 0, 0, 4397, 4398, 7, 13, 0, 0, 4398, 4399, 7, 6, 0, 0, 4399, 4400, 7, 5, 0, 0, 4400, 4401, 7, 8, 0, 0, 4401, 834, 1, 0, 0, 0, 4402, 4403, 7, 24, 0, 0, 4403, 4404, 7, 19, 0, 0, 4404, 4405, 7, 9, 0, 0, 4405, 4406, 7, 17, 0, 0, 4406, 4407, 7, 16, 0, 0, 4407, 4408, 7, 17, 0, 0, 4408, 4409, 7, 19, 0, 0, 4409, 4410, 7, 7, 0, 0, 4410, 836, 1, 0, 0, 0, 4411, 4412, 7, 24, 0, 0, 4412, 4413, 7, 13, 0, 0, 4413, 4414, 7, 10, 0, 0, 4414, 4415, 7, 14, 0, 0, 4415, 4416, 7, 17, 0, 0, 4416, 4417, 7, 9, 0, 0, 4417, 4418, 7, 17, 0, 0, 4418, 4419, 7, 19, 0, 0, 4419, 4420, 7, 7, 0, 0, 4420, 838, 1, 0, 0, 0, 4421, 4422, 7, 13, 0, 0, 4422, 4423, 7, 10, 0, 0, 4423, 4424, 7, 5, 0, 0, 4424, 4425, 7, 6, 0, 0, 4425, 840, 1, 0, 0, 0, 4426, 4427, 7, 13, 0, 0, 4427, 4428, 7, 19, 0, 0, 4428, 4429, 7, 28, 0, 0, 4429, 842, 1, 0, 0, 0, 4430, 4431, 7, 9, 0, 0, 4431, 4432, 7, 10, 0, 0, 4432, 4433, 7, 16, 0, 0, 4433, 4434, 7, 19, 0, 0, 4434, 4435, 7, 25, 0, 0, 4435, 844, 1, 0, 0, 0, 4436, 4437, 7, 9, 0, 0, 4437, 4438, 7, 15, 0, 0, 4438, 4439, 7, 5, 0, 0, 4439, 4440, 7, 6, 0, 0, 4440, 4441, 7, 6, 0, 0, 4441, 4442, 7, 17, 0, 0, 4442, 4443, 7, 7, 0, 0, 4443, 4444, 7, 16, 0, 0, 4444, 846, 1, 0, 0, 0, 4445, 4446, 7, 9, 0, 0, 4446, 4447, 7, 22, 0, 0, 4447, 4448, 7, 18, 0, 0, 4448, 4449, 7, 9, 0, 0, 4449, 4450, 7, 16, 0, 0, 4450, 4451, 7, 13, 0, 0, 4451, 4452, 7, 17, 0, 0, 4452, 4453, 7, 7, 0, 0, 4453, 4454, 7, 23, 0, 0, 4454, 848, 1, 0, 0, 0, 4455, 4456, 7, 16, 0, 0, 4456, 4457, 7, 17, 0, 0, 4457, 4458, 7, 15, 0, 0, 4458, 4459, 7, 10, 0, 0, 4459, 850, 1, 0, 0, 0, 4460, 4461, 7, 16, 0, 0, 4461, 4462, 7, 17, 0, 0, 4462, 4463, 7, 15, 0, 0, 4463, 4464, 7, 10, 0, 0, 4464, 4465, 7, 9, 0, 0, 4465, 4466, 7, 16, 0, 0, 4466, 4467, 7, 5, 0, 0, 4467, 4468, 7, 15, 0, 0, 4468, 4469, 7, 24, 0, 0, 4469, 852, 1, 0, 0, 0, 4470, 4471, 7, 16, 0, 0, 4471, 4472, 7, 13, 0, 0, 4472, 4473, 7, 10, 0, 0, 4473, 4474, 7, 5, 0, 0, 4474, 4475, 7, 16, 0, 0, 4475, 854, 1, 0, 0, 0, 4476, 4477, 7, 16, 0, 0, 4477, 4478, 7, 13, 0, 0, 4478, 4479, 7, 17, 0, 0, 4479, 4480, 7, 15, 0, 0, 4480, 856, 1, 0, 0, 0, 4481, 4482, 7, 27, 0, 0, 4482, 4483, 7, 5, 0, 0, 4483, 4484, 7, 6, 0, 0, 4484, 4485, 7, 22, 0, 0, 4485, 4486, 7, 10, 0, 0, 4486, 4487, 7, 9, 0, 0, 4487, 858, 1, 0, 0, 0, 4488, 4489, 7, 27, 0, 0, 4489, 4490, 7, 5, 0, 0, 4490, 4491, 7, 13, 0, 0, 4491, 4492, 7, 14, 0, 0, 4492, 4493, 7, 20, 0, 0, 4493, 4494, 7, 5, 0, 0, 4494, 4495, 7, 13, 0, 0, 4495, 860, 1, 0, 0, 0, 4496, 4497, 7, 26, 0, 0, 4497, 4498, 7, 15, 0, 0, 4498, 4499, 7, 6, 0, 0, 4499, 4500, 7, 5, 0, 0, 4500, 4501, 7, 16, 0, 0, 4501, 4502, 7, 16, 0, 0, 4502, 4503, 7, 13, 0, 0, 4503, 4504, 7, 17, 0, 0, 4504, 4505, 7, 18, 0, 0, 4505, 4506, 7, 22, 0, 0, 4506, 4507, 7, 16, 0, 0, 4507, 4508, 7, 10, 0, 0, 4508, 4509, 7, 9, 0, 0, 4509, 862, 1, 0, 0, 0, 4510, 4511, 7, 26, 0, 0, 4511, 4512, 7, 15, 0, 0, 4512, 4513, 7, 6, 0, 0, 4513, 4514, 7, 14, 0, 0, 4514, 4515, 7, 19, 0, 0, 4515, 4516, 7, 15, 0, 0, 4516, 4517, 7, 15, 0, 0, 4517, 4518, 7, 10, 0, 0, 4518, 4519, 7, 7, 0, 0, 4519, 4520, 7, 16, 0, 0, 4520, 864, 1, 0, 0, 0, 4521, 4522, 7, 26, 0, 0, 4522, 4523, 7, 15, 0, 0, 4523, 4524, 7, 6, 0, 0, 4524, 4525, 7, 5, 0, 0, 4525, 4526, 7, 23, 0, 0, 4526, 4527, 7, 23, 0, 0, 4527, 866, 1, 0, 0, 0, 4528, 4529, 7, 26, 0, 0, 4529, 4530, 7, 15, 0, 0, 4530, 4531, 7, 6, 0, 0, 4531, 4532, 5, 95, 0, 0, 4532, 4533, 7, 17, 0, 0, 4533, 4534, 7, 9, 0, 0, 4534, 4535, 5, 95, 0, 0, 4535, 4536, 7, 28, 0, 0, 4536, 4537, 7, 10, 0, 0, 4537, 4538, 7, 6, 0, 0, 4538, 4539, 7, 6, 0, 0, 4539, 4540, 5, 95, 0, 0, 4540, 4541, 7, 25, 0, 0, 4541, 4542, 7, 19, 0, 0, 4542, 4543, 7, 13, 0, 0, 4543, 4544, 7, 15, 0, 0, 4544, 4545, 7, 10, 0, 0, 4545, 4546, 7, 12, 0, 0, 4546, 868, 1, 0, 0, 0, 4547, 4548, 7, 26, 0, 0, 4548, 4549, 7, 15, 0, 0, 4549, 4550, 7, 6, 0, 0, 4550, 4551, 5, 95, 0, 0, 4551, 4552, 7, 17, 0, 0, 4552, 4553, 7, 9, 0, 0, 4553, 4554, 5, 95, 0, 0, 4554, 4555, 7, 28, 0, 0, 4555, 4556, 7, 10, 0, 0, 4556, 4557, 7, 6, 0, 0, 4557, 4558, 7, 6, 0, 0, 4558, 4559, 5, 95, 0, 0, 4559, 4560, 7, 25, 0, 0, 4560, 4561, 7, 19, 0, 0, 4561, 4562, 7, 13, 0, 0, 4562, 4563, 7, 15, 0, 0, 4563, 4564, 7, 10, 0, 0, 4564, 4565, 7, 12, 0, 0, 4565, 4566, 5, 95, 0, 0, 4566, 4567, 7, 12, 0, 0, 4567, 4568, 7, 19, 0, 0, 4568, 4569, 7, 14, 0, 0, 4569, 4570, 7, 22, 0, 0, 4570, 4571, 7, 15, 0, 0, 4571, 4572, 7, 10, 0, 0, 4572, 4573, 7, 7, 0, 0, 4573, 4574, 7, 16, 0, 0, 4574, 870, 1, 0, 0, 0, 4575, 4576, 7, 26, 0, 0, 4576, 4577, 7, 15, 0, 0, 4577, 4578, 7, 6, 0, 0, 4578, 4579, 5, 95, 0, 0, 4579, 4580, 7, 17, 0, 0, 4580, 4581, 7, 9, 0, 0, 4581, 4582, 5, 95, 0, 0, 4582, 4583, 7, 28, 0, 0, 4583, 4584, 7, 10, 0, 0, 4584, 4585, 7, 6, 0, 0, 4585, 4586, 7, 6, 0, 0, 4586, 4587, 5, 95, 0, 0, 4587, 4588, 7, 25, 0, 0, 4588, 4589, 7, 19, 0, 0, 4589, 4590, 7, 13, 0, 0, 4590, 4591, 7, 15, 0, 0, 4591, 4592, 7, 10, 0, 0, 4592, 4593, 7, 12, 0, 0, 4593, 4594, 5, 95, 0, 0, 4594, 4595, 7, 14, 0, 0, 4595, 4596, 7, 19, 0, 0, 4596, 4597, 7, 7, 0, 0, 4597, 4598, 7, 16, 0, 0, 4598, 4599, 7, 10, 0, 0, 4599, 4600, 7, 7, 0, 0, 4600, 4601, 7, 16, 0, 0, 4601, 872, 1, 0, 0, 0, 4602, 4603, 7, 26, 0, 0, 4603, 4604, 7, 24, 0, 0, 4604, 4605, 7, 5, 0, 0, 4605, 4606, 7, 16, 0, 0, 4606, 4607, 7, 20, 0, 0, 4607, 874, 1, 0, 0, 0, 4608, 4609, 7, 26, 0, 0, 4609, 4610, 7, 24, 0, 0, 4610, 4611, 7, 5, 0, 0, 4611, 4612, 7, 16, 0, 0, 4612, 4613, 7, 20, 0, 0, 4613, 4614, 5, 95, 0, 0, 4614, 4615, 7, 10, 0, 0, 4615, 4616, 7, 26, 0, 0, 4616, 4617, 7, 17, 0, 0, 4617, 4618, 7, 9, 0, 0, 4618, 4619, 7, 16, 0, 0, 4619, 4620, 7, 9, 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, 14, 0, 0, 4625, 4626, 7, 19, 0, 0, 4626, 4627, 7, 7, 0, 0, 4627, 4628, 7, 14, 0, 0, 4628, 4629, 7, 5, 0, 0, 4629, 4630, 7, 16, 0, 0, 4630, 878, 1, 0, 0, 0, 4631, 4632, 7, 26, 0, 0, 4632, 4633, 7, 15, 0, 0, 4633, 4634, 7, 6, 0, 0, 4634, 4635, 7, 10, 0, 0, 4635, 4636, 7, 6, 0, 0, 4636, 4637, 7, 10, 0, 0, 4637, 4638, 7, 15, 0, 0, 4638, 4639, 7, 10, 0, 0, 4639, 4640, 7, 7, 0, 0, 4640, 4641, 7, 16, 0, 0, 4641, 880, 1, 0, 0, 0, 4642, 4643, 7, 26, 0, 0, 4643, 4644, 7, 15, 0, 0, 4644, 4645, 7, 6, 0, 0, 4645, 4646, 7, 10, 0, 0, 4646, 4647, 7, 26, 0, 0, 4647, 4648, 7, 17, 0, 0, 4648, 4649, 7, 9, 0, 0, 4649, 4650, 7, 16, 0, 0, 4650, 4651, 7, 9, 0, 0, 4651, 882, 1, 0, 0, 0, 4652, 4653, 7, 26, 0, 0, 4653, 4654, 7, 15, 0, 0, 4654, 4655, 7, 6, 0, 0, 4655, 4656, 7, 25, 0, 0, 4656, 4657, 7, 19, 0, 0, 4657, 4658, 7, 13, 0, 0, 4658, 4659, 7, 10, 0, 0, 4659, 4660, 7, 9, 0, 0, 4660, 4661, 7, 16, 0, 0, 4661, 884, 1, 0, 0, 0, 4662, 4663, 7, 26, 0, 0, 4663, 4664, 7, 15, 0, 0, 4664, 4665, 7, 6, 0, 0, 4665, 4666, 7, 24, 0, 0, 4666, 4667, 7, 5, 0, 0, 4667, 4668, 7, 13, 0, 0, 4668, 4669, 7, 9, 0, 0, 4669, 4670, 7, 10, 0, 0, 4670, 886, 1, 0, 0, 0, 4671, 4672, 7, 26, 0, 0, 4672, 4673, 7, 15, 0, 0, 4673, 4674, 7, 6, 0, 0, 4674, 4675, 7, 24, 0, 0, 4675, 4676, 7, 17, 0, 0, 4676, 888, 1, 0, 0, 0, 4677, 4678, 7, 26, 0, 0, 4678, 4679, 7, 15, 0, 0, 4679, 4680, 7, 6, 0, 0, 4680, 4681, 7, 13, 0, 0, 4681, 4682, 7, 19, 0, 0, 4682, 4683, 7, 19, 0, 0, 4683, 4684, 7, 16, 0, 0, 4684, 890, 1, 0, 0, 0, 4685, 4686, 7, 26, 0, 0, 4686, 4687, 7, 15, 0, 0, 4687, 4688, 7, 6, 0, 0, 4688, 4689, 7, 9, 0, 0, 4689, 4690, 7, 10, 0, 0, 4690, 4691, 7, 13, 0, 0, 4691, 4692, 7, 17, 0, 0, 4692, 4693, 7, 5, 0, 0, 4693, 4694, 7, 6, 0, 0, 4694, 4695, 7, 17, 0, 0, 4695, 4696, 7, 11, 0, 0, 4696, 4697, 7, 10, 0, 0, 4697, 892, 1, 0, 0, 0, 4698, 4699, 7, 14, 0, 0, 4699, 4700, 7, 5, 0, 0, 4700, 4701, 7, 6, 0, 0, 4701, 4702, 7, 6, 0, 0, 4702, 894, 1, 0, 0, 0, 4703, 4704, 7, 14, 0, 0, 4704, 4705, 7, 22, 0, 0, 4705, 4706, 7, 13, 0, 0, 4706, 4707, 7, 13, 0, 0, 4707, 4708, 7, 10, 0, 0, 4708, 4709, 7, 7, 0, 0, 4709, 4710, 7, 16, 0, 0, 4710, 896, 1, 0, 0, 0, 4711, 4712, 7, 5, 0, 0, 4712, 4713, 7, 16, 0, 0, 4713, 4714, 7, 16, 0, 0, 4714, 4715, 7, 5, 0, 0, 4715, 4716, 7, 14, 0, 0, 4716, 4717, 7, 20, 0, 0, 4717, 898, 1, 0, 0, 0, 4718, 4719, 7, 12, 0, 0, 4719, 4720, 7, 10, 0, 0, 4720, 4721, 7, 16, 0, 0, 4721, 4722, 7, 5, 0, 0, 4722, 4723, 7, 14, 0, 0, 4723, 4724, 7, 20, 0, 0, 4724, 900, 1, 0, 0, 0, 4725, 4726, 7, 10, 0, 0, 4726, 4727, 7, 26, 0, 0, 4727, 4728, 7, 24, 0, 0, 4728, 4729, 7, 13, 0, 0, 4729, 4730, 7, 10, 0, 0, 4730, 4731, 7, 9, 0, 0, 4731, 4732, 7, 9, 0, 0, 4732, 4733, 7, 17, 0, 0, 4733, 4734, 7, 19, 0, 0, 4734, 4735, 7, 7, 0, 0, 4735, 902, 1, 0, 0, 0, 4736, 4737, 7, 23, 0, 0, 4737, 4738, 7, 10, 0, 0, 4738, 4739, 7, 7, 0, 0, 4739, 4740, 7, 10, 0, 0, 4740, 4741, 7, 13, 0, 0, 4741, 4742, 7, 5, 0, 0, 4742, 4743, 7, 16, 0, 0, 4743, 4744, 7, 10, 0, 0, 4744, 4745, 7, 12, 0, 0, 4745, 904, 1, 0, 0, 0, 4746, 4747, 7, 6, 0, 0, 4747, 4748, 7, 19, 0, 0, 4748, 4749, 7, 23, 0, 0, 4749, 4750, 7, 23, 0, 0, 4750, 4751, 7, 10, 0, 0, 4751, 4752, 7, 12, 0, 0, 4752, 906, 1, 0, 0, 0, 4753, 4754, 7, 9, 0, 0, 4754, 4755, 7, 16, 0, 0, 4755, 4756, 7, 19, 0, 0, 4756, 4757, 7, 13, 0, 0, 4757, 4758, 7, 10, 0, 0, 4758, 4759, 7, 12, 0, 0, 4759, 908, 1, 0, 0, 0, 4760, 4761, 7, 17, 0, 0, 4761, 4762, 7, 7, 0, 0, 4762, 4763, 7, 14, 0, 0, 4763, 4764, 7, 6, 0, 0, 4764, 4765, 7, 22, 0, 0, 4765, 4766, 7, 12, 0, 0, 4766, 4767, 7, 10, 0, 0, 4767, 910, 1, 0, 0, 0, 4768, 4769, 7, 13, 0, 0, 4769, 4770, 7, 19, 0, 0, 4770, 4771, 7, 22, 0, 0, 4771, 4772, 7, 16, 0, 0, 4772, 4773, 7, 17, 0, 0, 4773, 4774, 7, 7, 0, 0, 4774, 4775, 7, 10, 0, 0, 4775, 912, 1, 0, 0, 0, 4776, 4777, 7, 16, 0, 0, 4777, 4778, 7, 13, 0, 0, 4778, 4779, 7, 5, 0, 0, 4779, 4780, 7, 7, 0, 0, 4780, 4781, 7, 9, 0, 0, 4781, 4782, 7, 25, 0, 0, 4782, 4783, 7, 19, 0, 0, 4783, 4784, 7, 13, 0, 0, 4784, 4785, 7, 15, 0, 0, 4785, 914, 1, 0, 0, 0, 4786, 4787, 7, 17, 0, 0, 4787, 4788, 7, 15, 0, 0, 4788, 4789, 7, 24, 0, 0, 4789, 4790, 7, 19, 0, 0, 4790, 4791, 7, 13, 0, 0, 4791, 4792, 7, 16, 0, 0, 4792, 916, 1, 0, 0, 0, 4793, 4794, 7, 24, 0, 0, 4794, 4795, 7, 19, 0, 0, 4795, 4796, 7, 6, 0, 0, 4796, 4797, 7, 17, 0, 0, 4797, 4798, 7, 14, 0, 0, 4798, 4799, 7, 8, 0, 0, 4799, 918, 1, 0, 0, 0, 4800, 4801, 7, 15, 0, 0, 4801, 4802, 7, 10, 0, 0, 4802, 4803, 7, 16, 0, 0, 4803, 4804, 7, 20, 0, 0, 4804, 4805, 7, 19, 0, 0, 4805, 4806, 7, 12, 0, 0, 4806, 920, 1, 0, 0, 0, 4807, 4808, 7, 13, 0, 0, 4808, 4809, 7, 10, 0, 0, 4809, 4810, 7, 25, 0, 0, 4810, 4811, 7, 10, 0, 0, 4811, 4812, 7, 13, 0, 0, 4812, 4813, 7, 10, 0, 0, 4813, 4814, 7, 7, 0, 0, 4814, 4815, 7, 14, 0, 0, 4815, 4816, 7, 17, 0, 0, 4816, 4817, 7, 7, 0, 0, 4817, 4818, 7, 23, 0, 0, 4818, 922, 1, 0, 0, 0, 4819, 4820, 7, 7, 0, 0, 4820, 4821, 7, 10, 0, 0, 4821, 4822, 7, 28, 0, 0, 4822, 924, 1, 0, 0, 0, 4823, 4824, 7, 19, 0, 0, 4824, 4825, 7, 6, 0, 0, 4825, 4826, 7, 12, 0, 0, 4826, 926, 1, 0, 0, 0, 4827, 4828, 7, 27, 0, 0, 4828, 4829, 7, 5, 0, 0, 4829, 4830, 7, 6, 0, 0, 4830, 4831, 7, 22, 0, 0, 4831, 4832, 7, 10, 0, 0, 4832, 928, 1, 0, 0, 0, 4833, 4834, 7, 9, 0, 0, 4834, 4835, 7, 22, 0, 0, 4835, 4836, 7, 18, 0, 0, 4836, 4837, 7, 9, 0, 0, 4837, 4838, 7, 14, 0, 0, 4838, 4839, 7, 13, 0, 0, 4839, 4840, 7, 17, 0, 0, 4840, 4841, 7, 24, 0, 0, 4841, 4842, 7, 16, 0, 0, 4842, 4843, 7, 17, 0, 0, 4843, 4844, 7, 19, 0, 0, 4844, 4845, 7, 7, 0, 0, 4845, 930, 1, 0, 0, 0, 4846, 4847, 7, 24, 0, 0, 4847, 4848, 7, 22, 0, 0, 4848, 4849, 7, 18, 0, 0, 4849, 4850, 7, 6, 0, 0, 4850, 4851, 7, 17, 0, 0, 4851, 4852, 7, 14, 0, 0, 4852, 4853, 7, 5, 0, 0, 4853, 4854, 7, 16, 0, 0, 4854, 4855, 7, 17, 0, 0, 4855, 4856, 7, 19, 0, 0, 4856, 4857, 7, 7, 0, 0, 4857, 932, 1, 0, 0, 0, 4858, 4859, 7, 19, 0, 0, 4859, 4860, 7, 22, 0, 0, 4860, 4861, 7, 16, 0, 0, 4861, 934, 1, 0, 0, 0, 4862, 4863, 7, 10, 0, 0, 4863, 4864, 7, 7, 0, 0, 4864, 4865, 7, 12, 0, 0, 4865, 936, 1, 0, 0, 0, 4866, 4867, 7, 13, 0, 0, 4867, 4868, 7, 19, 0, 0, 4868, 4869, 7, 22, 0, 0, 4869, 4870, 7, 16, 0, 0, 4870, 4871, 7, 17, 0, 0, 4871, 4872, 7, 7, 0, 0, 4872, 4873, 7, 10, 0, 0, 4873, 4874, 7, 9, 0, 0, 4874, 938, 1, 0, 0, 0, 4875, 4876, 7, 9, 0, 0, 4876, 4877, 7, 14, 0, 0, 4877, 4878, 7, 20, 0, 0, 4878, 4879, 7, 10, 0, 0, 4879, 4880, 7, 15, 0, 0, 4880, 4881, 7, 5, 0, 0, 4881, 4882, 7, 9, 0, 0, 4882, 940, 1, 0, 0, 0, 4883, 4884, 7, 24, 0, 0, 4884, 4885, 7, 13, 0, 0, 4885, 4886, 7, 19, 0, 0, 4886, 4887, 7, 14, 0, 0, 4887, 4888, 7, 10, 0, 0, 4888, 4889, 7, 12, 0, 0, 4889, 4890, 7, 22, 0, 0, 4890, 4891, 7, 13, 0, 0, 4891, 4892, 7, 10, 0, 0, 4892, 4893, 7, 9, 0, 0, 4893, 942, 1, 0, 0, 0, 4894, 4895, 7, 17, 0, 0, 4895, 4896, 7, 7, 0, 0, 4896, 4897, 7, 24, 0, 0, 4897, 4898, 7, 22, 0, 0, 4898, 4899, 7, 16, 0, 0, 4899, 944, 1, 0, 0, 0, 4900, 4901, 7, 9, 0, 0, 4901, 4902, 7, 22, 0, 0, 4902, 4903, 7, 24, 0, 0, 4903, 4904, 7, 24, 0, 0, 4904, 4905, 7, 19, 0, 0, 4905, 4906, 7, 13, 0, 0, 4906, 4907, 7, 16, 0, 0, 4907, 946, 1, 0, 0, 0, 4908, 4909, 7, 24, 0, 0, 4909, 4910, 7, 5, 0, 0, 4910, 4911, 7, 13, 0, 0, 4911, 4912, 7, 5, 0, 0, 4912, 4913, 7, 6, 0, 0, 4913, 4914, 7, 6, 0, 0, 4914, 4915, 7, 10, 0, 0, 4915, 4916, 7, 6, 0, 0, 4916, 948, 1, 0, 0, 0, 4917, 4918, 7, 9, 0, 0, 4918, 4919, 7, 29, 0, 0, 4919, 4920, 7, 6, 0, 0, 4920, 950, 1, 0, 0, 0, 4921, 4922, 7, 12, 0, 0, 4922, 4923, 7, 10, 0, 0, 4923, 4924, 7, 24, 0, 0, 4924, 4925, 7, 10, 0, 0, 4925, 4926, 7, 7, 0, 0, 4926, 4927, 7, 12, 0, 0, 4927, 4928, 7, 9, 0, 0, 4928, 952, 1, 0, 0, 0, 4929, 4930, 7, 19, 0, 0, 4930, 4931, 7, 27, 0, 0, 4931, 4932, 7, 10, 0, 0, 4932, 4933, 7, 13, 0, 0, 4933, 4934, 7, 13, 0, 0, 4934, 4935, 7, 17, 0, 0, 4935, 4936, 7, 12, 0, 0, 4936, 4937, 7, 17, 0, 0, 4937, 4938, 7, 7, 0, 0, 4938, 4939, 7, 23, 0, 0, 4939, 954, 1, 0, 0, 0, 4940, 4941, 7, 14, 0, 0, 4941, 4942, 7, 19, 0, 0, 4942, 4943, 7, 7, 0, 0, 4943, 4944, 7, 25, 0, 0, 4944, 4945, 7, 6, 0, 0, 4945, 4946, 7, 17, 0, 0, 4946, 4947, 7, 14, 0, 0, 4947, 4948, 7, 16, 0, 0, 4948, 956, 1, 0, 0, 0, 4949, 4950, 7, 9, 0, 0, 4950, 4951, 7, 21, 0, 0, 4951, 4952, 7, 17, 0, 0, 4952, 4953, 7, 24, 0, 0, 4953, 958, 1, 0, 0, 0, 4954, 4955, 7, 6, 0, 0, 4955, 4956, 7, 19, 0, 0, 4956, 4957, 7, 14, 0, 0, 4957, 4958, 7, 21, 0, 0, 4958, 4959, 7, 10, 0, 0, 4959, 4960, 7, 12, 0, 0, 4960, 960, 1, 0, 0, 0, 4961, 4962, 7, 16, 0, 0, 4962, 4963, 7, 17, 0, 0, 4963, 4964, 7, 10, 0, 0, 4964, 4965, 7, 9, 0, 0, 4965, 962, 1, 0, 0, 0, 4966, 4967, 7, 13, 0, 0, 4967, 4968, 7, 19, 0, 0, 4968, 4969, 7, 6, 0, 0, 4969, 4970, 7, 6, 0, 0, 4970, 4971, 7, 22, 0, 0, 4971, 4972, 7, 24, 0, 0, 4972, 964, 1, 0, 0, 0, 4973, 4974, 7, 14, 0, 0, 4974, 4975, 7, 22, 0, 0, 4975, 4976, 7, 18, 0, 0, 4976, 4977, 7, 10, 0, 0, 4977, 966, 1, 0, 0, 0, 4978, 4979, 7, 23, 0, 0, 4979, 4980, 7, 13, 0, 0, 4980, 4981, 7, 19, 0, 0, 4981, 4982, 7, 22, 0, 0, 4982, 4983, 7, 24, 0, 0, 4983, 4984, 7, 17, 0, 0, 4984, 4985, 7, 7, 0, 0, 4985, 4986, 7, 23, 0, 0, 4986, 968, 1, 0, 0, 0, 4987, 4988, 7, 9, 0, 0, 4988, 4989, 7, 10, 0, 0, 4989, 4990, 7, 16, 0, 0, 4990, 4991, 7, 9, 0, 0, 4991, 970, 1, 0, 0, 0, 4992, 4993, 7, 16, 0, 0, 4993, 4994, 7, 5, 0, 0, 4994, 4995, 7, 18, 0, 0, 4995, 4996, 7, 6, 0, 0, 4996, 4997, 7, 10, 0, 0, 4997, 4998, 7, 9, 0, 0, 4998, 4999, 7, 5, 0, 0, 4999, 5000, 7, 15, 0, 0, 5000, 5001, 7, 24, 0, 0, 5001, 5002, 7, 6, 0, 0, 5002, 5003, 7, 10, 0, 0, 5003, 972, 1, 0, 0, 0, 5004, 5005, 7, 19, 0, 0, 5005, 5006, 7, 13, 0, 0, 5006, 5007, 7, 12, 0, 0, 5007, 5008, 7, 17, 0, 0, 5008, 5009, 7, 7, 0, 0, 5009, 5010, 7, 5, 0, 0, 5010, 5011, 7, 6, 0, 0, 5011, 5012, 7, 17, 0, 0, 5012, 5013, 7, 16, 0, 0, 5013, 5014, 7, 8, 0, 0, 5014, 974, 1, 0, 0, 0, 5015, 5016, 7, 26, 0, 0, 5016, 5017, 7, 15, 0, 0, 5017, 5018, 7, 6, 0, 0, 5018, 5019, 7, 16, 0, 0, 5019, 5020, 7, 5, 0, 0, 5020, 5021, 7, 18, 0, 0, 5021, 5022, 7, 6, 0, 0, 5022, 5023, 7, 10, 0, 0, 5023, 976, 1, 0, 0, 0, 5024, 5025, 7, 14, 0, 0, 5025, 5026, 7, 19, 0, 0, 5026, 5027, 7, 6, 0, 0, 5027, 5028, 7, 22, 0, 0, 5028, 5029, 7, 15, 0, 0, 5029, 5030, 7, 7, 0, 0, 5030, 5031, 7, 9, 0, 0, 5031, 978, 1, 0, 0, 0, 5032, 5033, 7, 26, 0, 0, 5033, 5034, 7, 15, 0, 0, 5034, 5035, 7, 6, 0, 0, 5035, 5036, 7, 7, 0, 0, 5036, 5037, 7, 5, 0, 0, 5037, 5038, 7, 15, 0, 0, 5038, 5039, 7, 10, 0, 0, 5039, 5040, 7, 9, 0, 0, 5040, 5041, 7, 24, 0, 0, 5041, 5042, 7, 5, 0, 0, 5042, 5043, 7, 14, 0, 0, 5043, 5044, 7, 10, 0, 0, 5044, 5045, 7, 9, 0, 0, 5045, 980, 1, 0, 0, 0, 5046, 5047, 7, 13, 0, 0, 5047, 5048, 7, 19, 0, 0, 5048, 5049, 7, 28, 0, 0, 5049, 5050, 7, 16, 0, 0, 5050, 5051, 7, 8, 0, 0, 5051, 5052, 7, 24, 0, 0, 5052, 5053, 7, 10, 0, 0, 5053, 982, 1, 0, 0, 0, 5054, 5055, 7, 7, 0, 0, 5055, 5056, 7, 19, 0, 0, 5056, 5057, 7, 13, 0, 0, 5057, 5058, 7, 15, 0, 0, 5058, 5059, 7, 5, 0, 0, 5059, 5060, 7, 6, 0, 0, 5060, 5061, 7, 17, 0, 0, 5061, 5062, 7, 11, 0, 0, 5062, 5063, 7, 10, 0, 0, 5063, 5064, 7, 12, 0, 0, 5064, 984, 1, 0, 0, 0, 5065, 5066, 7, 28, 0, 0, 5066, 5067, 7, 17, 0, 0, 5067, 5068, 7, 16, 0, 0, 5068, 5069, 7, 20, 0, 0, 5069, 5070, 7, 17, 0, 0, 5070, 5071, 7, 7, 0, 0, 5071, 986, 1, 0, 0, 0, 5072, 5073, 7, 25, 0, 0, 5073, 5074, 7, 17, 0, 0, 5074, 5075, 7, 6, 0, 0, 5075, 5076, 7, 16, 0, 0, 5076, 5077, 7, 10, 0, 0, 5077, 5078, 7, 13, 0, 0, 5078, 988, 1, 0, 0, 0, 5079, 5080, 7, 23, 0, 0, 5080, 5081, 7, 13, 0, 0, 5081, 5082, 7, 19, 0, 0, 5082, 5083, 7, 22, 0, 0, 5083, 5084, 7, 24, 0, 0, 5084, 5085, 7, 9, 0, 0, 5085, 990, 1, 0, 0, 0, 5086, 5087, 7, 19, 0, 0, 5087, 5088, 7, 16, 0, 0, 5088, 5089, 7, 20, 0, 0, 5089, 5090, 7, 10, 0, 0, 5090, 5091, 7, 13, 0, 0, 5091, 5092, 7, 9, 0, 0, 5092, 992, 1, 0, 0, 0, 5093, 5094, 7, 7, 0, 0, 5094, 5095, 7, 25, 0, 0, 5095, 5096, 7, 14, 0, 0, 5096, 994, 1, 0, 0, 0, 5097, 5098, 7, 7, 0, 0, 5098, 5099, 7, 25, 0, 0, 5099, 5100, 7, 12, 0, 0, 5100, 996, 1, 0, 0, 0, 5101, 5102, 7, 7, 0, 0, 5102, 5103, 7, 25, 0, 0, 5103, 5104, 7, 21, 0, 0, 5104, 5105, 7, 14, 0, 0, 5105, 998, 1, 0, 0, 0, 5106, 5107, 7, 7, 0, 0, 5107, 5108, 7, 25, 0, 0, 5108, 5109, 7, 21, 0, 0, 5109, 5110, 7, 12, 0, 0, 5110, 1000, 1, 0, 0, 0, 5111, 5112, 7, 22, 0, 0, 5112, 5113, 7, 10, 0, 0, 5113, 5114, 7, 9, 0, 0, 5114, 5115, 7, 14, 0, 0, 5115, 5116, 7, 5, 0, 0, 5116, 5117, 7, 24, 0, 0, 5117, 5118, 7, 10, 0, 0, 5118, 1002, 1, 0, 0, 0, 5119, 5120, 7, 27, 0, 0, 5120, 5121, 7, 17, 0, 0, 5121, 5122, 7, 10, 0, 0, 5122, 5123, 7, 28, 0, 0, 5123, 5124, 7, 9, 0, 0, 5124, 1004, 1, 0, 0, 0, 5125, 5126, 7, 7, 0, 0, 5126, 5127, 7, 19, 0, 0, 5127, 5128, 7, 13, 0, 0, 5128, 5129, 7, 15, 0, 0, 5129, 5130, 7, 5, 0, 0, 5130, 5131, 7, 6, 0, 0, 5131, 5132, 7, 17, 0, 0, 5132, 5133, 7, 11, 0, 0, 5133, 5134, 7, 10, 0, 0, 5134, 1006, 1, 0, 0, 0, 5135, 5136, 7, 12, 0, 0, 5136, 5137, 7, 22, 0, 0, 5137, 5138, 7, 15, 0, 0, 5138, 5139, 7, 24, 0, 0, 5139, 1008, 1, 0, 0, 0, 5140, 5141, 7, 24, 0, 0, 5141, 5142, 7, 13, 0, 0, 5142, 5143, 7, 17, 0, 0, 5143, 5144, 7, 7, 0, 0, 5144, 5145, 7, 16, 0, 0, 5145, 5146, 5, 95, 0, 0, 5146, 5147, 7, 9, 0, 0, 5147, 5148, 7, 16, 0, 0, 5148, 5149, 7, 13, 0, 0, 5149, 5150, 7, 17, 0, 0, 5150, 5151, 7, 14, 0, 0, 5151, 5152, 7, 16, 0, 0, 5152, 5153, 5, 95, 0, 0, 5153, 5154, 7, 24, 0, 0, 5154, 5155, 7, 5, 0, 0, 5155, 5156, 7, 13, 0, 0, 5156, 5157, 7, 5, 0, 0, 5157, 5158, 7, 15, 0, 0, 5158, 5159, 7, 9, 0, 0, 5159, 1010, 1, 0, 0, 0, 5160, 5161, 7, 27, 0, 0, 5161, 5162, 7, 5, 0, 0, 5162, 5163, 7, 13, 0, 0, 5163, 5164, 7, 17, 0, 0, 5164, 5165, 7, 5, 0, 0, 5165, 5166, 7, 18, 0, 0, 5166, 5167, 7, 6, 0, 0, 5167, 5168, 7, 10, 0, 0, 5168, 5169, 5, 95, 0, 0, 5169, 5170, 7, 14, 0, 0, 5170, 5171, 7, 19, 0, 0, 5171, 5172, 7, 7, 0, 0, 5172, 5173, 7, 25, 0, 0, 5173, 5174, 7, 6, 0, 0, 5174, 5175, 7, 17, 0, 0, 5175, 5176, 7, 14, 0, 0, 5176, 5177, 7, 16, 0, 0, 5177, 1012, 1, 0, 0, 0, 5178, 5179, 7, 10, 0, 0, 5179, 5180, 7, 13, 0, 0, 5180, 5181, 7, 13, 0, 0, 5181, 5182, 7, 19, 0, 0, 5182, 5183, 7, 13, 0, 0, 5183, 1014, 1, 0, 0, 0, 5184, 5185, 7, 22, 0, 0, 5185, 5186, 7, 9, 0, 0, 5186, 5187, 7, 10, 0, 0, 5187, 5188, 5, 95, 0, 0, 5188, 5189, 7, 27, 0, 0, 5189, 5190, 7, 5, 0, 0, 5190, 5191, 7, 13, 0, 0, 5191, 5192, 7, 17, 0, 0, 5192, 5193, 7, 5, 0, 0, 5193, 5194, 7, 18, 0, 0, 5194, 5195, 7, 6, 0, 0, 5195, 5196, 7, 10, 0, 0, 5196, 1016, 1, 0, 0, 0, 5197, 5198, 7, 22, 0, 0, 5198, 5199, 7, 9, 0, 0, 5199, 5200, 7, 10, 0, 0, 5200, 5201, 5, 95, 0, 0, 5201, 5202, 7, 14, 0, 0, 5202, 5203, 7, 19, 0, 0, 5203, 5204, 7, 6, 0, 0, 5204, 5205, 7, 22, 0, 0, 5205, 5206, 7, 15, 0, 0, 5206, 5207, 7, 7, 0, 0, 5207, 1018, 1, 0, 0, 0, 5208, 5209, 7, 5, 0, 0, 5209, 5210, 7, 6, 0, 0, 5210, 5211, 7, 17, 0, 0, 5211, 5212, 7, 5, 0, 0, 5212, 5213, 7, 9, 0, 0, 5213, 1020, 1, 0, 0, 0, 5214, 5215, 7, 14, 0, 0, 5215, 5216, 7, 19, 0, 0, 5216, 5217, 7, 7, 0, 0, 5217, 5218, 7, 9, 0, 0, 5218, 5219, 7, 16, 0, 0, 5219, 5220, 7, 5, 0, 0, 5220, 5221, 7, 7, 0, 0, 5221, 5222, 7, 16, 0, 0, 5222, 1022, 1, 0, 0, 0, 5223, 5224, 7, 24, 0, 0, 5224, 5225, 7, 10, 0, 0, 5225, 5226, 7, 13, 0, 0, 5226, 5227, 7, 25, 0, 0, 5227, 5228, 7, 19, 0, 0, 5228, 5229, 7, 13, 0, 0, 5229, 5230, 7, 15, 0, 0, 5230, 1024, 1, 0, 0, 0, 5231, 5232, 7, 23, 0, 0, 5232, 5233, 7, 10, 0, 0, 5233, 5234, 7, 16, 0, 0, 5234, 1026, 1, 0, 0, 0, 5235, 5236, 7, 12, 0, 0, 5236, 5237, 7, 17, 0, 0, 5237, 5238, 7, 5, 0, 0, 5238, 5239, 7, 23, 0, 0, 5239, 5240, 7, 7, 0, 0, 5240, 5241, 7, 19, 0, 0, 5241, 5242, 7, 9, 0, 0, 5242, 5243, 7, 16, 0, 0, 5243, 5244, 7, 17, 0, 0, 5244, 5245, 7, 14, 0, 0, 5245, 5246, 7, 9, 0, 0, 5246, 1028, 1, 0, 0, 0, 5247, 5248, 7, 9, 0, 0, 5248, 5249, 7, 16, 0, 0, 5249, 5250, 7, 5, 0, 0, 5250, 5251, 7, 14, 0, 0, 5251, 5252, 7, 21, 0, 0, 5252, 5253, 7, 10, 0, 0, 5253, 5254, 7, 12, 0, 0, 5254, 1030, 1, 0, 0, 0, 5255, 5256, 7, 10, 0, 0, 5256, 5257, 7, 6, 0, 0, 5257, 5258, 7, 9, 0, 0, 5258, 5259, 7, 17, 0, 0, 5259, 5260, 7, 25, 0, 0, 5260, 1032, 1, 0, 0, 0, 5261, 5262, 7, 28, 0, 0, 5262, 5263, 7, 20, 0, 0, 5263, 5264, 7, 17, 0, 0, 5264, 5265, 7, 6, 0, 0, 5265, 5266, 7, 10, 0, 0, 5266, 1034, 1, 0, 0, 0, 5267, 5268, 7, 13, 0, 0, 5268, 5269, 7, 10, 0, 0, 5269, 5270, 7, 27, 0, 0, 5270, 5271, 7, 10, 0, 0, 5271, 5272, 7, 13, 0, 0, 5272, 5273, 7, 9, 0, 0, 5273, 5274, 7, 10, 0, 0, 5274, 1036, 1, 0, 0, 0, 5275, 5276, 7, 25, 0, 0, 5276, 5277, 7, 19, 0, 0, 5277, 5278, 7, 13, 0, 0, 5278, 5279, 7, 10, 0, 0, 5279, 5280, 7, 5, 0, 0, 5280, 5281, 7, 14, 0, 0, 5281, 5282, 7, 20, 0, 0, 5282, 1038, 1, 0, 0, 0, 5283, 5284, 7, 9, 0, 0, 5284, 5285, 7, 6, 0, 0, 5285, 5286, 7, 17, 0, 0, 5286, 5287, 7, 14, 0, 0, 5287, 5288, 7, 10, 0, 0, 5288, 1040, 1, 0, 0, 0, 5289, 5290, 7, 10, 0, 0, 5290, 5291, 7, 26, 0, 0, 5291, 5292, 7, 17, 0, 0, 5292, 5293, 7, 16, 0, 0, 5293, 1042, 1, 0, 0, 0, 5294, 5295, 7, 13, 0, 0, 5295, 5296, 7, 10, 0, 0, 5296, 5297, 7, 16, 0, 0, 5297, 5298, 7, 22, 0, 0, 5298, 5299, 7, 13, 0, 0, 5299, 5300, 7, 7, 0, 0, 5300, 1044, 1, 0, 0, 0, 5301, 5302, 7, 29, 0, 0, 5302, 5303, 7, 22, 0, 0, 5303, 5304, 7, 10, 0, 0, 5304, 5305, 7, 13, 0, 0, 5305, 5306, 7, 8, 0, 0, 5306, 1046, 1, 0, 0, 0, 5307, 5308, 7, 13, 0, 0, 5308, 5309, 7, 5, 0, 0, 5309, 5310, 7, 17, 0, 0, 5310, 5311, 7, 9, 0, 0, 5311, 5312, 7, 10, 0, 0, 5312, 1048, 1, 0, 0, 0, 5313, 5314, 7, 9, 0, 0, 5314, 5315, 7, 29, 0, 0, 5315, 5316, 7, 6, 0, 0, 5316, 5317, 7, 9, 0, 0, 5317, 5318, 7, 16, 0, 0, 5318, 5319, 7, 5, 0, 0, 5319, 5320, 7, 16, 0, 0, 5320, 5321, 7, 10, 0, 0, 5321, 1050, 1, 0, 0, 0, 5322, 5323, 7, 12, 0, 0, 5323, 5324, 7, 10, 0, 0, 5324, 5325, 7, 18, 0, 0, 5325, 5326, 7, 22, 0, 0, 5326, 5327, 7, 23, 0, 0, 5327, 1052, 1, 0, 0, 0, 5328, 5329, 7, 6, 0, 0, 5329, 5330, 7, 19, 0, 0, 5330, 5331, 7, 23, 0, 0, 5331, 1054, 1, 0, 0, 0, 5332, 5333, 7, 17, 0, 0, 5333, 5334, 7, 7, 0, 0, 5334, 5335, 7, 25, 0, 0, 5335, 5336, 7, 19, 0, 0, 5336, 1056, 1, 0, 0, 0, 5337, 5338, 7, 7, 0, 0, 5338, 5339, 7, 19, 0, 0, 5339, 5340, 7, 16, 0, 0, 5340, 5341, 7, 17, 0, 0, 5341, 5342, 7, 14, 0, 0, 5342, 5343, 7, 10, 0, 0, 5343, 1058, 1, 0, 0, 0, 5344, 5345, 7, 28, 0, 0, 5345, 5346, 7, 5, 0, 0, 5346, 5347, 7, 13, 0, 0, 5347, 5348, 7, 7, 0, 0, 5348, 5349, 7, 17, 0, 0, 5349, 5350, 7, 7, 0, 0, 5350, 5351, 7, 23, 0, 0, 5351, 1060, 1, 0, 0, 0, 5352, 5353, 7, 10, 0, 0, 5353, 5354, 7, 26, 0, 0, 5354, 5355, 7, 14, 0, 0, 5355, 5356, 7, 10, 0, 0, 5356, 5357, 7, 24, 0, 0, 5357, 5358, 7, 16, 0, 0, 5358, 5359, 7, 17, 0, 0, 5359, 5360, 7, 19, 0, 0, 5360, 5361, 7, 7, 0, 0, 5361, 1062, 1, 0, 0, 0, 5362, 5363, 7, 5, 0, 0, 5363, 5364, 7, 9, 0, 0, 5364, 5365, 7, 9, 0, 0, 5365, 5366, 7, 10, 0, 0, 5366, 5367, 7, 13, 0, 0, 5367, 5368, 7, 16, 0, 0, 5368, 1064, 1, 0, 0, 0, 5369, 5370, 7, 6, 0, 0, 5370, 5371, 7, 19, 0, 0, 5371, 5372, 7, 19, 0, 0, 5372, 5373, 7, 24, 0, 0, 5373, 1066, 1, 0, 0, 0, 5374, 5375, 7, 19, 0, 0, 5375, 5376, 7, 24, 0, 0, 5376, 5377, 7, 10, 0, 0, 5377, 5378, 7, 7, 0, 0, 5378, 1068, 1, 0, 0, 0, 5379, 5380, 7, 5, 0, 0, 5380, 5381, 7, 18, 0, 0, 5381, 5382, 7, 9, 0, 0, 5382, 1070, 1, 0, 0, 0, 5383, 5384, 7, 14, 0, 0, 5384, 5385, 7, 18, 0, 0, 5385, 5386, 7, 13, 0, 0, 5386, 5387, 7, 16, 0, 0, 5387, 1072, 1, 0, 0, 0, 5388, 5389, 7, 14, 0, 0, 5389, 5390, 7, 10, 0, 0, 5390, 5391, 7, 17, 0, 0, 5391, 5392, 7, 6, 0, 0, 5392, 1074, 1, 0, 0, 0, 5393, 5394, 7, 14, 0, 0, 5394, 5395, 7, 10, 0, 0, 5395, 5396, 7, 17, 0, 0, 5396, 5397, 7, 6, 0, 0, 5397, 5398, 7, 17, 0, 0, 5398, 5399, 7, 7, 0, 0, 5399, 5400, 7, 23, 0, 0, 5400, 1076, 1, 0, 0, 0, 5401, 5402, 7, 12, 0, 0, 5402, 5403, 7, 10, 0, 0, 5403, 5404, 7, 23, 0, 0, 5404, 5405, 7, 13, 0, 0, 5405, 5406, 7, 10, 0, 0, 5406, 5407, 7, 10, 0, 0, 5407, 5408, 7, 9, 0, 0, 5408, 1078, 1, 0, 0, 0, 5409, 5410, 7, 12, 0, 0, 5410, 5411, 7, 17, 0, 0, 5411, 5412, 7, 27, 0, 0, 5412, 1080, 1, 0, 0, 0, 5413, 5414, 7, 10, 0, 0, 5414, 5415, 7, 26, 0, 0, 5415, 5416, 7, 24, 0, 0, 5416, 1082, 1, 0, 0, 0, 5417, 5418, 7, 25, 0, 0, 5418, 5419, 7, 5, 0, 0, 5419, 5420, 7, 14, 0, 0, 5420, 5421, 7, 16, 0, 0, 5421, 5422, 7, 19, 0, 0, 5422, 5423, 7, 13, 0, 0, 5423, 5424, 7, 17, 0, 0, 5424, 5425, 7, 5, 0, 0, 5425, 5426, 7, 6, 0, 0, 5426, 1084, 1, 0, 0, 0, 5427, 5428, 7, 25, 0, 0, 5428, 5429, 7, 6, 0, 0, 5429, 5430, 7, 19, 0, 0, 5430, 5431, 7, 19, 0, 0, 5431, 5432, 7, 13, 0, 0, 5432, 1086, 1, 0, 0, 0, 5433, 5434, 7, 23, 0, 0, 5434, 5435, 7, 14, 0, 0, 5435, 5436, 7, 12, 0, 0, 5436, 1088, 1, 0, 0, 0, 5437, 5438, 7, 6, 0, 0, 5438, 5439, 7, 14, 0, 0, 5439, 5440, 7, 15, 0, 0, 5440, 1090, 1, 0, 0, 0, 5441, 5442, 7, 6, 0, 0, 5442, 5443, 7, 7, 0, 0, 5443, 1092, 1, 0, 0, 0, 5444, 5445, 7, 6, 0, 0, 5445, 5446, 7, 19, 0, 0, 5446, 5447, 7, 23, 0, 0, 5447, 5448, 5, 49, 0, 0, 5448, 5449, 5, 48, 0, 0, 5449, 1094, 1, 0, 0, 0, 5450, 5451, 7, 15, 0, 0, 5451, 5452, 7, 17, 0, 0, 5452, 5453, 7, 7, 0, 0, 5453, 5454, 5, 95, 0, 0, 5454, 5455, 7, 9, 0, 0, 5455, 5456, 7, 14, 0, 0, 5456, 5457, 7, 5, 0, 0, 5457, 5458, 7, 6, 0, 0, 5458, 5459, 7, 10, 0, 0, 5459, 1096, 1, 0, 0, 0, 5460, 5461, 7, 15, 0, 0, 5461, 5462, 7, 19, 0, 0, 5462, 5463, 7, 12, 0, 0, 5463, 1098, 1, 0, 0, 0, 5464, 5465, 7, 24, 0, 0, 5465, 5466, 7, 17, 0, 0, 5466, 1100, 1, 0, 0, 0, 5467, 5468, 7, 24, 0, 0, 5468, 5469, 7, 19, 0, 0, 5469, 5470, 7, 28, 0, 0, 5470, 5471, 7, 10, 0, 0, 5471, 5472, 7, 13, 0, 0, 5472, 1102, 1, 0, 0, 0, 5473, 5474, 7, 13, 0, 0, 5474, 5475, 7, 5, 0, 0, 5475, 5476, 7, 12, 0, 0, 5476, 5477, 7, 17, 0, 0, 5477, 5478, 7, 5, 0, 0, 5478, 5479, 7, 7, 0, 0, 5479, 5480, 7, 9, 0, 0, 5480, 1104, 1, 0, 0, 0, 5481, 5482, 7, 13, 0, 0, 5482, 5483, 7, 19, 0, 0, 5483, 5484, 7, 22, 0, 0, 5484, 5485, 7, 7, 0, 0, 5485, 5486, 7, 12, 0, 0, 5486, 1106, 1, 0, 0, 0, 5487, 5488, 7, 9, 0, 0, 5488, 5489, 7, 14, 0, 0, 5489, 5490, 7, 5, 0, 0, 5490, 5491, 7, 6, 0, 0, 5491, 5492, 7, 10, 0, 0, 5492, 1108, 1, 0, 0, 0, 5493, 5494, 7, 9, 0, 0, 5494, 5495, 7, 17, 0, 0, 5495, 5496, 7, 23, 0, 0, 5496, 5497, 7, 7, 0, 0, 5497, 1110, 1, 0, 0, 0, 5498, 5499, 7, 9, 0, 0, 5499, 5500, 7, 29, 0, 0, 5500, 5501, 7, 13, 0, 0, 5501, 5502, 7, 16, 0, 0, 5502, 1112, 1, 0, 0, 0, 5503, 5504, 7, 16, 0, 0, 5504, 5505, 7, 13, 0, 0, 5505, 5506, 7, 17, 0, 0, 5506, 5507, 7, 15, 0, 0, 5507, 5508, 5, 95, 0, 0, 5508, 5509, 7, 9, 0, 0, 5509, 5510, 7, 14, 0, 0, 5510, 5511, 7, 5, 0, 0, 5511, 5512, 7, 6, 0, 0, 5512, 5513, 7, 10, 0, 0, 5513, 1114, 1, 0, 0, 0, 5514, 5515, 7, 16, 0, 0, 5515, 5516, 7, 13, 0, 0, 5516, 5517, 7, 22, 0, 0, 5517, 5518, 7, 7, 0, 0, 5518, 5519, 7, 14, 0, 0, 5519, 1116, 1, 0, 0, 0, 5520, 5521, 7, 28, 0, 0, 5521, 5522, 7, 17, 0, 0, 5522, 5523, 7, 12, 0, 0, 5523, 5524, 7, 16, 0, 0, 5524, 5525, 7, 20, 0, 0, 5525, 5526, 5, 95, 0, 0, 5526, 5527, 7, 18, 0, 0, 5527, 5528, 7, 22, 0, 0, 5528, 5529, 7, 14, 0, 0, 5529, 5530, 7, 21, 0, 0, 5530, 5531, 7, 10, 0, 0, 5531, 5532, 7, 16, 0, 0, 5532, 1118, 1, 0, 0, 0, 5533, 5534, 7, 13, 0, 0, 5534, 5535, 7, 5, 0, 0, 5535, 5536, 7, 7, 0, 0, 5536, 5537, 7, 12, 0, 0, 5537, 5538, 7, 19, 0, 0, 5538, 5539, 7, 15, 0, 0, 5539, 1120, 1, 0, 0, 0, 5540, 5541, 7, 9, 0, 0, 5541, 5542, 7, 10, 0, 0, 5542, 5543, 7, 16, 0, 0, 5543, 5544, 7, 9, 0, 0, 5544, 5545, 7, 10, 0, 0, 5545, 5546, 7, 10, 0, 0, 5546, 5547, 7, 12, 0, 0, 5547, 1122, 1, 0, 0, 0, 5548, 5549, 7, 5, 0, 0, 5549, 5550, 7, 14, 0, 0, 5550, 5551, 7, 19, 0, 0, 5551, 5552, 7, 9, 0, 0, 5552, 1124, 1, 0, 0, 0, 5553, 5554, 7, 5, 0, 0, 5554, 5555, 7, 14, 0, 0, 5555, 5556, 7, 19, 0, 0, 5556, 5557, 7, 9, 0, 0, 5557, 5558, 7, 12, 0, 0, 5558, 1126, 1, 0, 0, 0, 5559, 5560, 7, 5, 0, 0, 5560, 5561, 7, 9, 0, 0, 5561, 5562, 7, 17, 0, 0, 5562, 5563, 7, 7, 0, 0, 5563, 1128, 1, 0, 0, 0, 5564, 5565, 7, 5, 0, 0, 5565, 5566, 7, 9, 0, 0, 5566, 5567, 7, 17, 0, 0, 5567, 5568, 7, 7, 0, 0, 5568, 5569, 7, 12, 0, 0, 5569, 1130, 1, 0, 0, 0, 5570, 5571, 7, 5, 0, 0, 5571, 5572, 7, 16, 0, 0, 5572, 5573, 7, 5, 0, 0, 5573, 5574, 7, 7, 0, 0, 5574, 1132, 1, 0, 0, 0, 5575, 5576, 7, 5, 0, 0, 5576, 5577, 7, 16, 0, 0, 5577, 5578, 7, 5, 0, 0, 5578, 5579, 7, 7, 0, 0, 5579, 5580, 7, 12, 0, 0, 5580, 1134, 1, 0, 0, 0, 5581, 5582, 7, 5, 0, 0, 5582, 5583, 7, 16, 0, 0, 5583, 5584, 7, 5, 0, 0, 5584, 5585, 7, 7, 0, 0, 5585, 5586, 5, 50, 0, 0, 5586, 1136, 1, 0, 0, 0, 5587, 5588, 7, 5, 0, 0, 5588, 5589, 7, 16, 0, 0, 5589, 5590, 7, 5, 0, 0, 5590, 5591, 7, 7, 0, 0, 5591, 5592, 5, 50, 0, 0, 5592, 5593, 7, 12, 0, 0, 5593, 1138, 1, 0, 0, 0, 5594, 5595, 7, 14, 0, 0, 5595, 5596, 7, 19, 0, 0, 5596, 5597, 7, 9, 0, 0, 5597, 1140, 1, 0, 0, 0, 5598, 5599, 7, 14, 0, 0, 5599, 5600, 7, 19, 0, 0, 5600, 5601, 7, 9, 0, 0, 5601, 5602, 7, 12, 0, 0, 5602, 1142, 1, 0, 0, 0, 5603, 5604, 7, 14, 0, 0, 5604, 5605, 7, 19, 0, 0, 5605, 5606, 7, 16, 0, 0, 5606, 1144, 1, 0, 0, 0, 5607, 5608, 7, 14, 0, 0, 5608, 5609, 7, 19, 0, 0, 5609, 5610, 7, 16, 0, 0, 5610, 5611, 7, 12, 0, 0, 5611, 1146, 1, 0, 0, 0, 5612, 5613, 7, 9, 0, 0, 5613, 5614, 7, 17, 0, 0, 5614, 5615, 7, 7, 0, 0, 5615, 1148, 1, 0, 0, 0, 5616, 5617, 7, 9, 0, 0, 5617, 5618, 7, 17, 0, 0, 5618, 5619, 7, 7, 0, 0, 5619, 5620, 7, 12, 0, 0, 5620, 1150, 1, 0, 0, 0, 5621, 5622, 7, 16, 0, 0, 5622, 5623, 7, 5, 0, 0, 5623, 5624, 7, 7, 0, 0, 5624, 1152, 1, 0, 0, 0, 5625, 5626, 7, 16, 0, 0, 5626, 5627, 7, 5, 0, 0, 5627, 5628, 7, 7, 0, 0, 5628, 5629, 7, 12, 0, 0, 5629, 1154, 1, 0, 0, 0, 5630, 5631, 7, 9, 0, 0, 5631, 5632, 7, 17, 0, 0, 5632, 5633, 7, 7, 0, 0, 5633, 5634, 7, 20, 0, 0, 5634, 1156, 1, 0, 0, 0, 5635, 5636, 7, 14, 0, 0, 5636, 5637, 7, 19, 0, 0, 5637, 5638, 7, 9, 0, 0, 5638, 5639, 7, 20, 0, 0, 5639, 1158, 1, 0, 0, 0, 5640, 5641, 7, 16, 0, 0, 5641, 5642, 7, 5, 0, 0, 5642, 5643, 7, 7, 0, 0, 5643, 5644, 7, 20, 0, 0, 5644, 1160, 1, 0, 0, 0, 5645, 5646, 7, 5, 0, 0, 5646, 5647, 7, 9, 0, 0, 5647, 5648, 7, 17, 0, 0, 5648, 5649, 7, 7, 0, 0, 5649, 5650, 7, 20, 0, 0, 5650, 1162, 1, 0, 0, 0, 5651, 5652, 7, 5, 0, 0, 5652, 5653, 7, 14, 0, 0, 5653, 5654, 7, 19, 0, 0, 5654, 5655, 7, 9, 0, 0, 5655, 5656, 7, 20, 0, 0, 5656, 1164, 1, 0, 0, 0, 5657, 5658, 7, 5, 0, 0, 5658, 5659, 7, 16, 0, 0, 5659, 5660, 7, 5, 0, 0, 5660, 5661, 7, 7, 0, 0, 5661, 5662, 7, 20, 0, 0, 5662, 1166, 1, 0, 0, 0, 5663, 5664, 7, 18, 0, 0, 5664, 5665, 7, 17, 0, 0, 5665, 5666, 7, 16, 0, 0, 5666, 5667, 5, 95, 0, 0, 5667, 5668, 7, 6, 0, 0, 5668, 5669, 7, 10, 0, 0, 5669, 5670, 7, 7, 0, 0, 5670, 5671, 7, 23, 0, 0, 5671, 5672, 7, 16, 0, 0, 5672, 5673, 7, 20, 0, 0, 5673, 1168, 1, 0, 0, 0, 5674, 5675, 7, 14, 0, 0, 5675, 5676, 7, 20, 0, 0, 5676, 5677, 7, 5, 0, 0, 5677, 5678, 7, 13, 0, 0, 5678, 5679, 5, 95, 0, 0, 5679, 5680, 7, 6, 0, 0, 5680, 5681, 7, 10, 0, 0, 5681, 5682, 7, 7, 0, 0, 5682, 5683, 7, 23, 0, 0, 5683, 5684, 7, 16, 0, 0, 5684, 5685, 7, 20, 0, 0, 5685, 1170, 1, 0, 0, 0, 5686, 5687, 7, 14, 0, 0, 5687, 5688, 7, 20, 0, 0, 5688, 5689, 7, 5, 0, 0, 5689, 5690, 7, 13, 0, 0, 5690, 5691, 7, 5, 0, 0, 5691, 5692, 7, 14, 0, 0, 5692, 5693, 7, 16, 0, 0, 5693, 5694, 7, 10, 0, 0, 5694, 5695, 7, 13, 0, 0, 5695, 5696, 5, 95, 0, 0, 5696, 5697, 7, 6, 0, 0, 5697, 5698, 7, 10, 0, 0, 5698, 5699, 7, 7, 0, 0, 5699, 5700, 7, 23, 0, 0, 5700, 5701, 7, 16, 0, 0, 5701, 5702, 7, 20, 0, 0, 5702, 1172, 1, 0, 0, 0, 5703, 5704, 7, 6, 0, 0, 5704, 5705, 7, 19, 0, 0, 5705, 5706, 7, 28, 0, 0, 5706, 5707, 7, 10, 0, 0, 5707, 5708, 7, 13, 0, 0, 5708, 1174, 1, 0, 0, 0, 5709, 5710, 7, 19, 0, 0, 5710, 5711, 7, 14, 0, 0, 5711, 5712, 7, 16, 0, 0, 5712, 5713, 7, 10, 0, 0, 5713, 5714, 7, 16, 0, 0, 5714, 5715, 5, 95, 0, 0, 5715, 5716, 7, 6, 0, 0, 5716, 5717, 7, 10, 0, 0, 5717, 5718, 7, 7, 0, 0, 5718, 5719, 7, 23, 0, 0, 5719, 5720, 7, 16, 0, 0, 5720, 5721, 7, 20, 0, 0, 5721, 1176, 1, 0, 0, 0, 5722, 5723, 7, 22, 0, 0, 5723, 5724, 7, 24, 0, 0, 5724, 5725, 7, 24, 0, 0, 5725, 5726, 7, 10, 0, 0, 5726, 5727, 7, 13, 0, 0, 5727, 1178, 1, 0, 0, 0, 5728, 5729, 7, 5, 0, 0, 5729, 5730, 7, 9, 0, 0, 5730, 5731, 7, 14, 0, 0, 5731, 5732, 7, 17, 0, 0, 5732, 5733, 7, 17, 0, 0, 5733, 1180, 1, 0, 0, 0, 5734, 5735, 7, 18, 0, 0, 5735, 5736, 7, 16, 0, 0, 5736, 5737, 7, 13, 0, 0, 5737, 5738, 7, 17, 0, 0, 5738, 5739, 7, 15, 0, 0, 5739, 1182, 1, 0, 0, 0, 5740, 5741, 7, 14, 0, 0, 5741, 5742, 7, 20, 0, 0, 5742, 5743, 7, 13, 0, 0, 5743, 1184, 1, 0, 0, 0, 5744, 5745, 7, 14, 0, 0, 5745, 5746, 7, 19, 0, 0, 5746, 5747, 7, 7, 0, 0, 5747, 5748, 7, 14, 0, 0, 5748, 5749, 7, 5, 0, 0, 5749, 5750, 7, 16, 0, 0, 5750, 1186, 1, 0, 0, 0, 5751, 5752, 7, 14, 0, 0, 5752, 5753, 7, 19, 0, 0, 5753, 5754, 7, 7, 0, 0, 5754, 5755, 7, 14, 0, 0, 5755, 5756, 7, 5, 0, 0, 5756, 5757, 7, 16, 0, 0, 5757, 5758, 5, 95, 0, 0, 5758, 5759, 7, 28, 0, 0, 5759, 5760, 7, 9, 0, 0, 5760, 1188, 1, 0, 0, 0, 5761, 5762, 7, 25, 0, 0, 5762, 5763, 7, 19, 0, 0, 5763, 5764, 7, 13, 0, 0, 5764, 5765, 7, 15, 0, 0, 5765, 5766, 7, 5, 0, 0, 5766, 5767, 7, 16, 0, 0, 5767, 1190, 1, 0, 0, 0, 5768, 5769, 7, 17, 0, 0, 5769, 5770, 7, 7, 0, 0, 5770, 5771, 7, 17, 0, 0, 5771, 5772, 7, 16, 0, 0, 5772, 5773, 7, 14, 0, 0, 5773, 5774, 7, 5, 0, 0, 5774, 5775, 7, 24, 0, 0, 5775, 1192, 1, 0, 0, 0, 5776, 5777, 7, 6, 0, 0, 5777, 5778, 7, 10, 0, 0, 5778, 5779, 7, 7, 0, 0, 5779, 5780, 7, 23, 0, 0, 5780, 5781, 7, 16, 0, 0, 5781, 5782, 7, 20, 0, 0, 5782, 1194, 1, 0, 0, 0, 5783, 5784, 7, 6, 0, 0, 5784, 5785, 7, 24, 0, 0, 5785, 5786, 7, 5, 0, 0, 5786, 5787, 7, 12, 0, 0, 5787, 1196, 1, 0, 0, 0, 5788, 5789, 7, 6, 0, 0, 5789, 5790, 7, 16, 0, 0, 5790, 5791, 7, 13, 0, 0, 5791, 5792, 7, 17, 0, 0, 5792, 5793, 7, 15, 0, 0, 5793, 1198, 1, 0, 0, 0, 5794, 5795, 7, 15, 0, 0, 5795, 5796, 7, 12, 0, 0, 5796, 5797, 5, 53, 0, 0, 5797, 1200, 1, 0, 0, 0, 5798, 5799, 7, 24, 0, 0, 5799, 5800, 7, 5, 0, 0, 5800, 5801, 7, 13, 0, 0, 5801, 5802, 7, 9, 0, 0, 5802, 5803, 7, 10, 0, 0, 5803, 5804, 5, 95, 0, 0, 5804, 5805, 7, 17, 0, 0, 5805, 5806, 7, 12, 0, 0, 5806, 5807, 7, 10, 0, 0, 5807, 5808, 7, 7, 0, 0, 5808, 5809, 7, 16, 0, 0, 5809, 1202, 1, 0, 0, 0, 5810, 5811, 7, 24, 0, 0, 5811, 5812, 7, 23, 0, 0, 5812, 5813, 5, 95, 0, 0, 5813, 5814, 7, 14, 0, 0, 5814, 5815, 7, 6, 0, 0, 5815, 5816, 7, 17, 0, 0, 5816, 5817, 7, 10, 0, 0, 5817, 5818, 7, 7, 0, 0, 5818, 5819, 7, 16, 0, 0, 5819, 5820, 5, 95, 0, 0, 5820, 5821, 7, 10, 0, 0, 5821, 5822, 7, 7, 0, 0, 5822, 5823, 7, 14, 0, 0, 5823, 5824, 7, 19, 0, 0, 5824, 5825, 7, 12, 0, 0, 5825, 5826, 7, 17, 0, 0, 5826, 5827, 7, 7, 0, 0, 5827, 5828, 7, 23, 0, 0, 5828, 1204, 1, 0, 0, 0, 5829, 5830, 7, 29, 0, 0, 5830, 5831, 7, 22, 0, 0, 5831, 5832, 7, 19, 0, 0, 5832, 5833, 7, 16, 0, 0, 5833, 5834, 7, 10, 0, 0, 5834, 5835, 5, 95, 0, 0, 5835, 5836, 7, 17, 0, 0, 5836, 5837, 7, 12, 0, 0, 5837, 5838, 7, 10, 0, 0, 5838, 5839, 7, 7, 0, 0, 5839, 5840, 7, 16, 0, 0, 5840, 1206, 1, 0, 0, 0, 5841, 5842, 7, 29, 0, 0, 5842, 5843, 7, 22, 0, 0, 5843, 5844, 7, 19, 0, 0, 5844, 5845, 7, 16, 0, 0, 5845, 5846, 7, 10, 0, 0, 5846, 5847, 5, 95, 0, 0, 5847, 5848, 7, 6, 0, 0, 5848, 5849, 7, 17, 0, 0, 5849, 5850, 7, 16, 0, 0, 5850, 5851, 7, 10, 0, 0, 5851, 5852, 7, 13, 0, 0, 5852, 5853, 7, 5, 0, 0, 5853, 5854, 7, 6, 0, 0, 5854, 1208, 1, 0, 0, 0, 5855, 5856, 7, 29, 0, 0, 5856, 5857, 7, 22, 0, 0, 5857, 5858, 7, 19, 0, 0, 5858, 5859, 7, 16, 0, 0, 5859, 5860, 7, 10, 0, 0, 5860, 5861, 5, 95, 0, 0, 5861, 5862, 7, 7, 0, 0, 5862, 5863, 7, 22, 0, 0, 5863, 5864, 7, 6, 0, 0, 5864, 5865, 7, 6, 0, 0, 5865, 5866, 7, 5, 0, 0, 5866, 5867, 7, 18, 0, 0, 5867, 5868, 7, 6, 0, 0, 5868, 5869, 7, 10, 0, 0, 5869, 1210, 1, 0, 0, 0, 5870, 5871, 7, 13, 0, 0, 5871, 5872, 7, 10, 0, 0, 5872, 5873, 7, 23, 0, 0, 5873, 5874, 7, 10, 0, 0, 5874, 5875, 7, 26, 0, 0, 5875, 5876, 7, 24, 0, 0, 5876, 5877, 5, 95, 0, 0, 5877, 5878, 7, 14, 0, 0, 5878, 5879, 7, 19, 0, 0, 5879, 5880, 7, 22, 0, 0, 5880, 5881, 7, 7, 0, 0, 5881, 5882, 7, 16, 0, 0, 5882, 1212, 1, 0, 0, 0, 5883, 5884, 7, 13, 0, 0, 5884, 5885, 7, 10, 0, 0, 5885, 5886, 7, 23, 0, 0, 5886, 5887, 7, 10, 0, 0, 5887, 5888, 7, 26, 0, 0, 5888, 5889, 7, 24, 0, 0, 5889, 5890, 5, 95, 0, 0, 5890, 5891, 7, 17, 0, 0, 5891, 5892, 7, 7, 0, 0, 5892, 5893, 7, 9, 0, 0, 5893, 5894, 7, 16, 0, 0, 5894, 5895, 7, 13, 0, 0, 5895, 1214, 1, 0, 0, 0, 5896, 5897, 7, 13, 0, 0, 5897, 5898, 7, 10, 0, 0, 5898, 5899, 7, 23, 0, 0, 5899, 5900, 7, 10, 0, 0, 5900, 5901, 7, 26, 0, 0, 5901, 5902, 7, 24, 0, 0, 5902, 5903, 5, 95, 0, 0, 5903, 5904, 7, 6, 0, 0, 5904, 5905, 7, 17, 0, 0, 5905, 5906, 7, 21, 0, 0, 5906, 5907, 7, 10, 0, 0, 5907, 1216, 1, 0, 0, 0, 5908, 5909, 7, 13, 0, 0, 5909, 5910, 7, 10, 0, 0, 5910, 5911, 7, 23, 0, 0, 5911, 5912, 7, 10, 0, 0, 5912, 5913, 7, 26, 0, 0, 5913, 5914, 7, 24, 0, 0, 5914, 5915, 5, 95, 0, 0, 5915, 5916, 7, 15, 0, 0, 5916, 5917, 7, 5, 0, 0, 5917, 5918, 7, 16, 0, 0, 5918, 5919, 7, 14, 0, 0, 5919, 5920, 7, 20, 0, 0, 5920, 1218, 1, 0, 0, 0, 5921, 5922, 7, 13, 0, 0, 5922, 5923, 7, 10, 0, 0, 5923, 5924, 7, 23, 0, 0, 5924, 5925, 7, 10, 0, 0, 5925, 5926, 7, 26, 0, 0, 5926, 5927, 7, 24, 0, 0, 5927, 5928, 5, 95, 0, 0, 5928, 5929, 7, 15, 0, 0, 5929, 5930, 7, 5, 0, 0, 5930, 5931, 7, 16, 0, 0, 5931, 5932, 7, 14, 0, 0, 5932, 5933, 7, 20, 0, 0, 5933, 5934, 7, 10, 0, 0, 5934, 5935, 7, 9, 0, 0, 5935, 1220, 1, 0, 0, 0, 5936, 5937, 7, 13, 0, 0, 5937, 5938, 7, 10, 0, 0, 5938, 5939, 7, 23, 0, 0, 5939, 5940, 7, 10, 0, 0, 5940, 5941, 7, 26, 0, 0, 5941, 5942, 7, 24, 0, 0, 5942, 5943, 5, 95, 0, 0, 5943, 5944, 7, 13, 0, 0, 5944, 5945, 7, 10, 0, 0, 5945, 5946, 7, 24, 0, 0, 5946, 5947, 7, 6, 0, 0, 5947, 5948, 7, 5, 0, 0, 5948, 5949, 7, 14, 0, 0, 5949, 5950, 7, 10, 0, 0, 5950, 1222, 1, 0, 0, 0, 5951, 5952, 7, 13, 0, 0, 5952, 5953, 7, 10, 0, 0, 5953, 5954, 7, 23, 0, 0, 5954, 5955, 7, 10, 0, 0, 5955, 5956, 7, 26, 0, 0, 5956, 5957, 7, 24, 0, 0, 5957, 5958, 5, 95, 0, 0, 5958, 5959, 7, 9, 0, 0, 5959, 5960, 7, 24, 0, 0, 5960, 5961, 7, 6, 0, 0, 5961, 5962, 7, 17, 0, 0, 5962, 5963, 7, 16, 0, 0, 5963, 5964, 5, 95, 0, 0, 5964, 5965, 7, 16, 0, 0, 5965, 5966, 7, 19, 0, 0, 5966, 5967, 5, 95, 0, 0, 5967, 5968, 7, 5, 0, 0, 5968, 5969, 7, 13, 0, 0, 5969, 5970, 7, 13, 0, 0, 5970, 5971, 7, 5, 0, 0, 5971, 5972, 7, 8, 0, 0, 5972, 1224, 1, 0, 0, 0, 5973, 5974, 7, 13, 0, 0, 5974, 5975, 7, 10, 0, 0, 5975, 5976, 7, 23, 0, 0, 5976, 5977, 7, 10, 0, 0, 5977, 5978, 7, 26, 0, 0, 5978, 5979, 7, 24, 0, 0, 5979, 5980, 5, 95, 0, 0, 5980, 5981, 7, 9, 0, 0, 5981, 5982, 7, 24, 0, 0, 5982, 5983, 7, 6, 0, 0, 5983, 5984, 7, 17, 0, 0, 5984, 5985, 7, 16, 0, 0, 5985, 5986, 5, 95, 0, 0, 5986, 5987, 7, 16, 0, 0, 5987, 5988, 7, 19, 0, 0, 5988, 5989, 5, 95, 0, 0, 5989, 5990, 7, 16, 0, 0, 5990, 5991, 7, 5, 0, 0, 5991, 5992, 7, 18, 0, 0, 5992, 5993, 7, 6, 0, 0, 5993, 5994, 7, 10, 0, 0, 5994, 1226, 1, 0, 0, 0, 5995, 5996, 7, 13, 0, 0, 5996, 5997, 7, 10, 0, 0, 5997, 5998, 7, 23, 0, 0, 5998, 5999, 7, 10, 0, 0, 5999, 6000, 7, 26, 0, 0, 6000, 6001, 7, 24, 0, 0, 6001, 6002, 5, 95, 0, 0, 6002, 6003, 7, 9, 0, 0, 6003, 6004, 7, 22, 0, 0, 6004, 6005, 7, 18, 0, 0, 6005, 6006, 7, 9, 0, 0, 6006, 6007, 7, 16, 0, 0, 6007, 6008, 7, 13, 0, 0, 6008, 1228, 1, 0, 0, 0, 6009, 6010, 7, 13, 0, 0, 6010, 6011, 7, 10, 0, 0, 6011, 6012, 7, 24, 0, 0, 6012, 6013, 7, 10, 0, 0, 6013, 6014, 7, 5, 0, 0, 6014, 6015, 7, 16, 0, 0, 6015, 1230, 1, 0, 0, 0, 6016, 6017, 7, 13, 0, 0, 6017, 6018, 7, 24, 0, 0, 6018, 6019, 7, 5, 0, 0, 6019, 6020, 7, 12, 0, 0, 6020, 1232, 1, 0, 0, 0, 6021, 6022, 7, 13, 0, 0, 6022, 6023, 7, 16, 0, 0, 6023, 6024, 7, 13, 0, 0, 6024, 6025, 7, 17, 0, 0, 6025, 6026, 7, 15, 0, 0, 6026, 1234, 1, 0, 0, 0, 6027, 6028, 7, 9, 0, 0, 6028, 6029, 7, 24, 0, 0, 6029, 6030, 7, 6, 0, 0, 6030, 6031, 7, 17, 0, 0, 6031, 6032, 7, 16, 0, 0, 6032, 6033, 5, 95, 0, 0, 6033, 6034, 7, 24, 0, 0, 6034, 6035, 7, 5, 0, 0, 6035, 6036, 7, 13, 0, 0, 6036, 6037, 7, 16, 0, 0, 6037, 1236, 1, 0, 0, 0, 6038, 6039, 7, 9, 0, 0, 6039, 6040, 7, 16, 0, 0, 6040, 6041, 7, 5, 0, 0, 6041, 6042, 7, 13, 0, 0, 6042, 6043, 7, 16, 0, 0, 6043, 6044, 7, 9, 0, 0, 6044, 6045, 5, 95, 0, 0, 6045, 6046, 7, 28, 0, 0, 6046, 6047, 7, 17, 0, 0, 6047, 6048, 7, 16, 0, 0, 6048, 6049, 7, 20, 0, 0, 6049, 1238, 1, 0, 0, 0, 6050, 6051, 7, 9, 0, 0, 6051, 6052, 7, 16, 0, 0, 6052, 6053, 7, 13, 0, 0, 6053, 6054, 7, 17, 0, 0, 6054, 6055, 7, 7, 0, 0, 6055, 6056, 7, 23, 0, 0, 6056, 6057, 5, 95, 0, 0, 6057, 6058, 7, 16, 0, 0, 6058, 6059, 7, 19, 0, 0, 6059, 6060, 5, 95, 0, 0, 6060, 6061, 7, 5, 0, 0, 6061, 6062, 7, 13, 0, 0, 6062, 6063, 7, 13, 0, 0, 6063, 6064, 7, 5, 0, 0, 6064, 6065, 7, 8, 0, 0, 6065, 1240, 1, 0, 0, 0, 6066, 6067, 7, 9, 0, 0, 6067, 6068, 7, 16, 0, 0, 6068, 6069, 7, 13, 0, 0, 6069, 6070, 7, 17, 0, 0, 6070, 6071, 7, 7, 0, 0, 6071, 6072, 7, 23, 0, 0, 6072, 6073, 5, 95, 0, 0, 6073, 6074, 7, 16, 0, 0, 6074, 6075, 7, 19, 0, 0, 6075, 6076, 5, 95, 0, 0, 6076, 6077, 7, 16, 0, 0, 6077, 6078, 7, 5, 0, 0, 6078, 6079, 7, 18, 0, 0, 6079, 6080, 7, 6, 0, 0, 6080, 6081, 7, 10, 0, 0, 6081, 1242, 1, 0, 0, 0, 6082, 6083, 7, 9, 0, 0, 6083, 6084, 7, 16, 0, 0, 6084, 6085, 7, 13, 0, 0, 6085, 6086, 7, 24, 0, 0, 6086, 6087, 7, 19, 0, 0, 6087, 6088, 7, 9, 0, 0, 6088, 1244, 1, 0, 0, 0, 6089, 6090, 7, 9, 0, 0, 6090, 6091, 7, 22, 0, 0, 6091, 6092, 7, 18, 0, 0, 6092, 6093, 7, 9, 0, 0, 6093, 6094, 7, 16, 0, 0, 6094, 6095, 7, 13, 0, 0, 6095, 1246, 1, 0, 0, 0, 6096, 6097, 7, 16, 0, 0, 6097, 6098, 7, 19, 0, 0, 6098, 6099, 5, 95, 0, 0, 6099, 6100, 7, 5, 0, 0, 6100, 6101, 7, 9, 0, 0, 6101, 6102, 7, 14, 0, 0, 6102, 6103, 7, 17, 0, 0, 6103, 6104, 7, 17, 0, 0, 6104, 1248, 1, 0, 0, 0, 6105, 6106, 7, 16, 0, 0, 6106, 6107, 7, 19, 0, 0, 6107, 6108, 5, 95, 0, 0, 6108, 6109, 7, 20, 0, 0, 6109, 6110, 7, 10, 0, 0, 6110, 6111, 7, 26, 0, 0, 6111, 1250, 1, 0, 0, 0, 6112, 6113, 7, 16, 0, 0, 6113, 6114, 7, 13, 0, 0, 6114, 6115, 7, 5, 0, 0, 6115, 6116, 7, 7, 0, 0, 6116, 6117, 7, 9, 0, 0, 6117, 6118, 7, 6, 0, 0, 6118, 6119, 7, 5, 0, 0, 6119, 6120, 7, 16, 0, 0, 6120, 6121, 7, 10, 0, 0, 6121, 1252, 1, 0, 0, 0, 6122, 6123, 7, 22, 0, 0, 6123, 6124, 7, 7, 0, 0, 6124, 6125, 7, 17, 0, 0, 6125, 6126, 7, 9, 0, 0, 6126, 6127, 7, 16, 0, 0, 6127, 6128, 7, 13, 0, 0, 6128, 1254, 1, 0, 0, 0, 6129, 6130, 7, 5, 0, 0, 6130, 6131, 7, 23, 0, 0, 6131, 6132, 7, 10, 0, 0, 6132, 1256, 1, 0, 0, 0, 6133, 6134, 7, 14, 0, 0, 6134, 6135, 7, 6, 0, 0, 6135, 6136, 7, 19, 0, 0, 6136, 6137, 7, 14, 0, 0, 6137, 6138, 7, 21, 0, 0, 6138, 6139, 5, 95, 0, 0, 6139, 6140, 7, 16, 0, 0, 6140, 6141, 7, 17, 0, 0, 6141, 6142, 7, 15, 0, 0, 6142, 6143, 7, 10, 0, 0, 6143, 6144, 7, 9, 0, 0, 6144, 6145, 7, 16, 0, 0, 6145, 6146, 7, 5, 0, 0, 6146, 6147, 7, 15, 0, 0, 6147, 6148, 7, 24, 0, 0, 6148, 1258, 1, 0, 0, 0, 6149, 6150, 7, 12, 0, 0, 6150, 6151, 7, 5, 0, 0, 6151, 6152, 7, 16, 0, 0, 6152, 6153, 7, 10, 0, 0, 6153, 6154, 5, 95, 0, 0, 6154, 6155, 7, 18, 0, 0, 6155, 6156, 7, 17, 0, 0, 6156, 6157, 7, 7, 0, 0, 6157, 1260, 1, 0, 0, 0, 6158, 6159, 7, 12, 0, 0, 6159, 6160, 7, 5, 0, 0, 6160, 6161, 7, 16, 0, 0, 6161, 6162, 7, 10, 0, 0, 6162, 6163, 5, 95, 0, 0, 6163, 6164, 7, 24, 0, 0, 6164, 6165, 7, 5, 0, 0, 6165, 6166, 7, 13, 0, 0, 6166, 6167, 7, 16, 0, 0, 6167, 1262, 1, 0, 0, 0, 6168, 6169, 7, 12, 0, 0, 6169, 6170, 7, 5, 0, 0, 6170, 6171, 7, 16, 0, 0, 6171, 6172, 7, 10, 0, 0, 6172, 6173, 5, 95, 0, 0, 6173, 6174, 7, 16, 0, 0, 6174, 6175, 7, 13, 0, 0, 6175, 6176, 7, 22, 0, 0, 6176, 6177, 7, 7, 0, 0, 6177, 6178, 7, 14, 0, 0, 6178, 1264, 1, 0, 0, 0, 6179, 6180, 7, 17, 0, 0, 6180, 6181, 7, 9, 0, 0, 6181, 6182, 7, 25, 0, 0, 6182, 6183, 7, 17, 0, 0, 6183, 6184, 7, 7, 0, 0, 6184, 6185, 7, 17, 0, 0, 6185, 6186, 7, 16, 0, 0, 6186, 6187, 7, 10, 0, 0, 6187, 1266, 1, 0, 0, 0, 6188, 6189, 7, 30, 0, 0, 6189, 6190, 7, 22, 0, 0, 6190, 6191, 7, 9, 0, 0, 6191, 6192, 7, 16, 0, 0, 6192, 6193, 7, 17, 0, 0, 6193, 6194, 7, 25, 0, 0, 6194, 6195, 7, 8, 0, 0, 6195, 6196, 5, 95, 0, 0, 6196, 6197, 7, 12, 0, 0, 6197, 6198, 7, 5, 0, 0, 6198, 6199, 7, 8, 0, 0, 6199, 6200, 7, 9, 0, 0, 6200, 1268, 1, 0, 0, 0, 6201, 6202, 7, 30, 0, 0, 6202, 6203, 7, 22, 0, 0, 6203, 6204, 7, 9, 0, 0, 6204, 6205, 7, 16, 0, 0, 6205, 6206, 7, 17, 0, 0, 6206, 6207, 7, 25, 0, 0, 6207, 6208, 7, 8, 0, 0, 6208, 6209, 5, 95, 0, 0, 6209, 6210, 7, 20, 0, 0, 6210, 6211, 7, 19, 0, 0, 6211, 6212, 7, 22, 0, 0, 6212, 6213, 7, 13, 0, 0, 6213, 6214, 7, 9, 0, 0, 6214, 1270, 1, 0, 0, 0, 6215, 6216, 7, 30, 0, 0, 6216, 6217, 7, 22, 0, 0, 6217, 6218, 7, 9, 0, 0, 6218, 6219, 7, 16, 0, 0, 6219, 6220, 7, 17, 0, 0, 6220, 6221, 7, 25, 0, 0, 6221, 6222, 7, 8, 0, 0, 6222, 6223, 5, 95, 0, 0, 6223, 6224, 7, 17, 0, 0, 6224, 6225, 7, 7, 0, 0, 6225, 6226, 7, 16, 0, 0, 6226, 6227, 7, 10, 0, 0, 6227, 6228, 7, 13, 0, 0, 6228, 6229, 7, 27, 0, 0, 6229, 6230, 7, 5, 0, 0, 6230, 6231, 7, 6, 0, 0, 6231, 1272, 1, 0, 0, 0, 6232, 6233, 7, 15, 0, 0, 6233, 6234, 7, 5, 0, 0, 6234, 6235, 7, 21, 0, 0, 6235, 6236, 7, 10, 0, 0, 6236, 6237, 5, 95, 0, 0, 6237, 6238, 7, 12, 0, 0, 6238, 6239, 7, 5, 0, 0, 6239, 6240, 7, 16, 0, 0, 6240, 6241, 7, 10, 0, 0, 6241, 1274, 1, 0, 0, 0, 6242, 6243, 7, 15, 0, 0, 6243, 6244, 7, 5, 0, 0, 6244, 6245, 7, 21, 0, 0, 6245, 6246, 7, 10, 0, 0, 6246, 6247, 5, 95, 0, 0, 6247, 6248, 7, 17, 0, 0, 6248, 6249, 7, 7, 0, 0, 6249, 6250, 7, 16, 0, 0, 6250, 6251, 7, 10, 0, 0, 6251, 6252, 7, 13, 0, 0, 6252, 6253, 7, 27, 0, 0, 6253, 6254, 7, 5, 0, 0, 6254, 6255, 7, 6, 0, 0, 6255, 1276, 1, 0, 0, 0, 6256, 6257, 7, 15, 0, 0, 6257, 6258, 7, 5, 0, 0, 6258, 6259, 7, 21, 0, 0, 6259, 6260, 7, 10, 0, 0, 6260, 6261, 5, 95, 0, 0, 6261, 6262, 7, 16, 0, 0, 6262, 6263, 7, 17, 0, 0, 6263, 6264, 7, 15, 0, 0, 6264, 6265, 7, 10, 0, 0, 6265, 1278, 1, 0, 0, 0, 6266, 6267, 7, 15, 0, 0, 6267, 6268, 7, 5, 0, 0, 6268, 6269, 7, 21, 0, 0, 6269, 6270, 7, 10, 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, 1280, 1, 0, 0, 0, 6281, 6282, 7, 15, 0, 0, 6282, 6283, 7, 5, 0, 0, 6283, 6284, 7, 21, 0, 0, 6284, 6285, 7, 10, 0, 0, 6285, 6286, 5, 95, 0, 0, 6286, 6287, 7, 16, 0, 0, 6287, 6288, 7, 17, 0, 0, 6288, 6289, 7, 15, 0, 0, 6289, 6290, 7, 10, 0, 0, 6290, 6291, 7, 9, 0, 0, 6291, 6292, 7, 16, 0, 0, 6292, 6293, 7, 5, 0, 0, 6293, 6294, 7, 15, 0, 0, 6294, 6295, 7, 24, 0, 0, 6295, 6296, 7, 16, 0, 0, 6296, 6297, 7, 11, 0, 0, 6297, 1282, 1, 0, 0, 0, 6298, 6299, 7, 7, 0, 0, 6299, 6300, 7, 19, 0, 0, 6300, 6301, 7, 28, 0, 0, 6301, 1284, 1, 0, 0, 0, 6302, 6303, 7, 9, 0, 0, 6303, 6304, 7, 16, 0, 0, 6304, 6305, 7, 5, 0, 0, 6305, 6306, 7, 16, 0, 0, 6306, 6307, 7, 10, 0, 0, 6307, 6308, 7, 15, 0, 0, 6308, 6309, 7, 10, 0, 0, 6309, 6310, 7, 7, 0, 0, 6310, 6311, 7, 16, 0, 0, 6311, 6312, 5, 95, 0, 0, 6312, 6313, 7, 16, 0, 0, 6313, 6314, 7, 17, 0, 0, 6314, 6315, 7, 15, 0, 0, 6315, 6316, 7, 10, 0, 0, 6316, 6317, 7, 9, 0, 0, 6317, 6318, 7, 16, 0, 0, 6318, 6319, 7, 5, 0, 0, 6319, 6320, 7, 15, 0, 0, 6320, 6321, 7, 24, 0, 0, 6321, 1286, 1, 0, 0, 0, 6322, 6323, 7, 16, 0, 0, 6323, 6324, 7, 17, 0, 0, 6324, 6325, 7, 15, 0, 0, 6325, 6326, 7, 10, 0, 0, 6326, 6327, 7, 19, 0, 0, 6327, 6328, 7, 25, 0, 0, 6328, 6329, 7, 12, 0, 0, 6329, 6330, 7, 5, 0, 0, 6330, 6331, 7, 8, 0, 0, 6331, 1288, 1, 0, 0, 0, 6332, 6333, 7, 16, 0, 0, 6333, 6334, 7, 13, 0, 0, 6334, 6335, 7, 5, 0, 0, 6335, 6336, 7, 7, 0, 0, 6336, 6337, 7, 9, 0, 0, 6337, 6338, 7, 5, 0, 0, 6338, 6339, 7, 14, 0, 0, 6339, 6340, 7, 16, 0, 0, 6340, 6341, 7, 17, 0, 0, 6341, 6342, 7, 19, 0, 0, 6342, 6343, 7, 7, 0, 0, 6343, 6344, 5, 95, 0, 0, 6344, 6345, 7, 16, 0, 0, 6345, 6346, 7, 17, 0, 0, 6346, 6347, 7, 15, 0, 0, 6347, 6348, 7, 10, 0, 0, 6348, 6349, 7, 9, 0, 0, 6349, 6350, 7, 16, 0, 0, 6350, 6351, 7, 5, 0, 0, 6351, 6352, 7, 15, 0, 0, 6352, 6353, 7, 24, 0, 0, 6353, 1290, 1, 0, 0, 0, 6354, 6355, 7, 16, 0, 0, 6355, 6356, 7, 19, 0, 0, 6356, 6357, 5, 95, 0, 0, 6357, 6358, 7, 16, 0, 0, 6358, 6359, 7, 17, 0, 0, 6359, 6360, 7, 15, 0, 0, 6360, 6361, 7, 10, 0, 0, 6361, 6362, 7, 9, 0, 0, 6362, 6363, 7, 16, 0, 0, 6363, 6364, 7, 5, 0, 0, 6364, 6365, 7, 15, 0, 0, 6365, 6366, 7, 24, 0, 0, 6366, 1292, 1, 0, 0, 0, 6367, 6368, 7, 16, 0, 0, 6368, 6369, 7, 19, 0, 0, 6369, 6370, 5, 95, 0, 0, 6370, 6371, 7, 14, 0, 0, 6371, 6372, 7, 20, 0, 0, 6372, 6373, 7, 5, 0, 0, 6373, 6374, 7, 13, 0, 0, 6374, 1294, 1, 0, 0, 0, 6375, 6376, 7, 16, 0, 0, 6376, 6377, 7, 19, 0, 0, 6377, 6378, 5, 95, 0, 0, 6378, 6379, 7, 12, 0, 0, 6379, 6380, 7, 5, 0, 0, 6380, 6381, 7, 16, 0, 0, 6381, 6382, 7, 10, 0, 0, 6382, 1296, 1, 0, 0, 0, 6383, 6384, 7, 16, 0, 0, 6384, 6385, 7, 19, 0, 0, 6385, 6386, 5, 95, 0, 0, 6386, 6387, 7, 7, 0, 0, 6387, 6388, 7, 22, 0, 0, 6388, 6389, 7, 15, 0, 0, 6389, 6390, 7, 18, 0, 0, 6390, 6391, 7, 10, 0, 0, 6391, 6392, 7, 13, 0, 0, 6392, 1298, 1, 0, 0, 0, 6393, 6397, 3, 1301, 648, 0, 6394, 6396, 3, 1303, 649, 0, 6395, 6394, 1, 0, 0, 0, 6396, 6399, 1, 0, 0, 0, 6397, 6395, 1, 0, 0, 0, 6397, 6398, 1, 0, 0, 0, 6398, 1300, 1, 0, 0, 0, 6399, 6397, 1, 0, 0, 0, 6400, 6407, 7, 31, 0, 0, 6401, 6402, 7, 32, 0, 0, 6402, 6407, 4, 648, 6, 0, 6403, 6404, 7, 33, 0, 0, 6404, 6405, 7, 34, 0, 0, 6405, 6407, 4, 648, 7, 0, 6406, 6400, 1, 0, 0, 0, 6406, 6401, 1, 0, 0, 0, 6406, 6403, 1, 0, 0, 0, 6407, 1302, 1, 0, 0, 0, 6408, 6411, 3, 1305, 650, 0, 6409, 6411, 5, 36, 0, 0, 6410, 6408, 1, 0, 0, 0, 6410, 6409, 1, 0, 0, 0, 6411, 1304, 1, 0, 0, 0, 6412, 6415, 3, 1301, 648, 0, 6413, 6415, 7, 0, 0, 0, 6414, 6412, 1, 0, 0, 0, 6414, 6413, 1, 0, 0, 0, 6415, 1306, 1, 0, 0, 0, 6416, 6417, 3, 1309, 652, 0, 6417, 6418, 5, 34, 0, 0, 6418, 1308, 1, 0, 0, 0, 6419, 6425, 5, 34, 0, 0, 6420, 6421, 5, 34, 0, 0, 6421, 6424, 5, 34, 0, 0, 6422, 6424, 8, 35, 0, 0, 6423, 6420, 1, 0, 0, 0, 6423, 6422, 1, 0, 0, 0, 6424, 6427, 1, 0, 0, 0, 6425, 6423, 1, 0, 0, 0, 6425, 6426, 1, 0, 0, 0, 6426, 1310, 1, 0, 0, 0, 6427, 6425, 1, 0, 0, 0, 6428, 6429, 3, 1313, 654, 0, 6429, 6430, 5, 34, 0, 0, 6430, 1312, 1, 0, 0, 0, 6431, 6437, 5, 34, 0, 0, 6432, 6433, 5, 34, 0, 0, 6433, 6436, 5, 34, 0, 0, 6434, 6436, 8, 36, 0, 0, 6435, 6432, 1, 0, 0, 0, 6435, 6434, 1, 0, 0, 0, 6436, 6439, 1, 0, 0, 0, 6437, 6435, 1, 0, 0, 0, 6437, 6438, 1, 0, 0, 0, 6438, 1314, 1, 0, 0, 0, 6439, 6437, 1, 0, 0, 0, 6440, 6441, 7, 22, 0, 0, 6441, 6442, 5, 38, 0, 0, 6442, 6443, 3, 1307, 651, 0, 6443, 1316, 1, 0, 0, 0, 6444, 6445, 7, 22, 0, 0, 6445, 6446, 5, 38, 0, 0, 6446, 6447, 3, 1309, 652, 0, 6447, 1318, 1, 0, 0, 0, 6448, 6449, 7, 22, 0, 0, 6449, 6450, 5, 38, 0, 0, 6450, 6451, 3, 1311, 653, 0, 6451, 1320, 1, 0, 0, 0, 6452, 6453, 7, 22, 0, 0, 6453, 6454, 5, 38, 0, 0, 6454, 6455, 3, 1313, 654, 0, 6455, 1322, 1, 0, 0, 0, 6456, 6457, 3, 1325, 660, 0, 6457, 6458, 5, 39, 0, 0, 6458, 1324, 1, 0, 0, 0, 6459, 6465, 5, 39, 0, 0, 6460, 6461, 5, 39, 0, 0, 6461, 6464, 5, 39, 0, 0, 6462, 6464, 8, 37, 0, 0, 6463, 6460, 1, 0, 0, 0, 6463, 6462, 1, 0, 0, 0, 6464, 6467, 1, 0, 0, 0, 6465, 6463, 1, 0, 0, 0, 6465, 6466, 1, 0, 0, 0, 6466, 1326, 1, 0, 0, 0, 6467, 6465, 1, 0, 0, 0, 6468, 6469, 7, 10, 0, 0, 6469, 6470, 5, 39, 0, 0, 6470, 6471, 1, 0, 0, 0, 6471, 6472, 6, 661, 2, 0, 6472, 6473, 6, 661, 3, 0, 6473, 1328, 1, 0, 0, 0, 6474, 6475, 3, 1331, 663, 0, 6475, 6476, 5, 39, 0, 0, 6476, 1330, 1, 0, 0, 0, 6477, 6478, 7, 22, 0, 0, 6478, 6479, 5, 38, 0, 0, 6479, 6480, 3, 1325, 660, 0, 6480, 1332, 1, 0, 0, 0, 6481, 6483, 5, 36, 0, 0, 6482, 6484, 3, 1335, 665, 0, 6483, 6482, 1, 0, 0, 0, 6483, 6484, 1, 0, 0, 0, 6484, 6485, 1, 0, 0, 0, 6485, 6486, 5, 36, 0, 0, 6486, 6487, 6, 664, 4, 0, 6487, 6488, 1, 0, 0, 0, 6488, 6489, 6, 664, 5, 0, 6489, 1334, 1, 0, 0, 0, 6490, 6494, 3, 1301, 648, 0, 6491, 6493, 3, 1305, 650, 0, 6492, 6491, 1, 0, 0, 0, 6493, 6496, 1, 0, 0, 0, 6494, 6492, 1, 0, 0, 0, 6494, 6495, 1, 0, 0, 0, 6495, 1336, 1, 0, 0, 0, 6496, 6494, 1, 0, 0, 0, 6497, 6498, 3, 1339, 667, 0, 6498, 6499, 5, 39, 0, 0, 6499, 1338, 1, 0, 0, 0, 6500, 6501, 7, 18, 0, 0, 6501, 6505, 5, 39, 0, 0, 6502, 6504, 7, 38, 0, 0, 6503, 6502, 1, 0, 0, 0, 6504, 6507, 1, 0, 0, 0, 6505, 6503, 1, 0, 0, 0, 6505, 6506, 1, 0, 0, 0, 6506, 1340, 1, 0, 0, 0, 6507, 6505, 1, 0, 0, 0, 6508, 6509, 3, 1343, 669, 0, 6509, 6510, 5, 39, 0, 0, 6510, 1342, 1, 0, 0, 0, 6511, 6512, 7, 18, 0, 0, 6512, 6513, 3, 1325, 660, 0, 6513, 1344, 1, 0, 0, 0, 6514, 6515, 3, 1347, 671, 0, 6515, 6516, 5, 39, 0, 0, 6516, 1346, 1, 0, 0, 0, 6517, 6518, 7, 26, 0, 0, 6518, 6522, 5, 39, 0, 0, 6519, 6521, 7, 39, 0, 0, 6520, 6519, 1, 0, 0, 0, 6521, 6524, 1, 0, 0, 0, 6522, 6520, 1, 0, 0, 0, 6522, 6523, 1, 0, 0, 0, 6523, 1348, 1, 0, 0, 0, 6524, 6522, 1, 0, 0, 0, 6525, 6526, 3, 1351, 673, 0, 6526, 6527, 5, 39, 0, 0, 6527, 1350, 1, 0, 0, 0, 6528, 6529, 7, 26, 0, 0, 6529, 6530, 3, 1325, 660, 0, 6530, 1352, 1, 0, 0, 0, 6531, 6532, 3, 1359, 677, 0, 6532, 1354, 1, 0, 0, 0, 6533, 6534, 3, 1359, 677, 0, 6534, 6535, 5, 46, 0, 0, 6535, 6536, 5, 46, 0, 0, 6536, 6537, 1, 0, 0, 0, 6537, 6538, 6, 675, 6, 0, 6538, 1356, 1, 0, 0, 0, 6539, 6540, 3, 1359, 677, 0, 6540, 6542, 5, 46, 0, 0, 6541, 6543, 3, 1359, 677, 0, 6542, 6541, 1, 0, 0, 0, 6542, 6543, 1, 0, 0, 0, 6543, 6549, 1, 0, 0, 0, 6544, 6546, 7, 10, 0, 0, 6545, 6547, 7, 1, 0, 0, 6546, 6545, 1, 0, 0, 0, 6546, 6547, 1, 0, 0, 0, 6547, 6548, 1, 0, 0, 0, 6548, 6550, 3, 1359, 677, 0, 6549, 6544, 1, 0, 0, 0, 6549, 6550, 1, 0, 0, 0, 6550, 6568, 1, 0, 0, 0, 6551, 6552, 5, 46, 0, 0, 6552, 6558, 3, 1359, 677, 0, 6553, 6555, 7, 10, 0, 0, 6554, 6556, 7, 1, 0, 0, 6555, 6554, 1, 0, 0, 0, 6555, 6556, 1, 0, 0, 0, 6556, 6557, 1, 0, 0, 0, 6557, 6559, 3, 1359, 677, 0, 6558, 6553, 1, 0, 0, 0, 6558, 6559, 1, 0, 0, 0, 6559, 6568, 1, 0, 0, 0, 6560, 6561, 3, 1359, 677, 0, 6561, 6563, 7, 10, 0, 0, 6562, 6564, 7, 1, 0, 0, 6563, 6562, 1, 0, 0, 0, 6563, 6564, 1, 0, 0, 0, 6564, 6565, 1, 0, 0, 0, 6565, 6566, 3, 1359, 677, 0, 6566, 6568, 1, 0, 0, 0, 6567, 6539, 1, 0, 0, 0, 6567, 6551, 1, 0, 0, 0, 6567, 6560, 1, 0, 0, 0, 6568, 1358, 1, 0, 0, 0, 6569, 6571, 7, 0, 0, 0, 6570, 6569, 1, 0, 0, 0, 6571, 6572, 1, 0, 0, 0, 6572, 6570, 1, 0, 0, 0, 6572, 6573, 1, 0, 0, 0, 6573, 1360, 1, 0, 0, 0, 6574, 6575, 5, 58, 0, 0, 6575, 6579, 7, 40, 0, 0, 6576, 6578, 7, 41, 0, 0, 6577, 6576, 1, 0, 0, 0, 6578, 6581, 1, 0, 0, 0, 6579, 6577, 1, 0, 0, 0, 6579, 6580, 1, 0, 0, 0, 6580, 1362, 1, 0, 0, 0, 6581, 6579, 1, 0, 0, 0, 6582, 6583, 5, 58, 0, 0, 6583, 6584, 5, 34, 0, 0, 6584, 6592, 1, 0, 0, 0, 6585, 6586, 5, 92, 0, 0, 6586, 6591, 9, 0, 0, 0, 6587, 6588, 5, 34, 0, 0, 6588, 6591, 5, 34, 0, 0, 6589, 6591, 8, 42, 0, 0, 6590, 6585, 1, 0, 0, 0, 6590, 6587, 1, 0, 0, 0, 6590, 6589, 1, 0, 0, 0, 6591, 6594, 1, 0, 0, 0, 6592, 6590, 1, 0, 0, 0, 6592, 6593, 1, 0, 0, 0, 6593, 6595, 1, 0, 0, 0, 6594, 6592, 1, 0, 0, 0, 6595, 6596, 5, 34, 0, 0, 6596, 1364, 1, 0, 0, 0, 6597, 6599, 7, 43, 0, 0, 6598, 6597, 1, 0, 0, 0, 6599, 6600, 1, 0, 0, 0, 6600, 6598, 1, 0, 0, 0, 6600, 6601, 1, 0, 0, 0, 6601, 6602, 1, 0, 0, 0, 6602, 6603, 6, 680, 7, 0, 6603, 1366, 1, 0, 0, 0, 6604, 6606, 5, 13, 0, 0, 6605, 6607, 5, 10, 0, 0, 6606, 6605, 1, 0, 0, 0, 6606, 6607, 1, 0, 0, 0, 6607, 6610, 1, 0, 0, 0, 6608, 6610, 5, 10, 0, 0, 6609, 6604, 1, 0, 0, 0, 6609, 6608, 1, 0, 0, 0, 6610, 6611, 1, 0, 0, 0, 6611, 6612, 6, 681, 7, 0, 6612, 1368, 1, 0, 0, 0, 6613, 6614, 5, 45, 0, 0, 6614, 6615, 5, 45, 0, 0, 6615, 6619, 1, 0, 0, 0, 6616, 6618, 8, 44, 0, 0, 6617, 6616, 1, 0, 0, 0, 6618, 6621, 1, 0, 0, 0, 6619, 6617, 1, 0, 0, 0, 6619, 6620, 1, 0, 0, 0, 6620, 6622, 1, 0, 0, 0, 6621, 6619, 1, 0, 0, 0, 6622, 6623, 6, 682, 7, 0, 6623, 1370, 1, 0, 0, 0, 6624, 6625, 5, 47, 0, 0, 6625, 6626, 5, 42, 0, 0, 6626, 6649, 1, 0, 0, 0, 6627, 6629, 5, 47, 0, 0, 6628, 6627, 1, 0, 0, 0, 6629, 6632, 1, 0, 0, 0, 6630, 6628, 1, 0, 0, 0, 6630, 6631, 1, 0, 0, 0, 6631, 6633, 1, 0, 0, 0, 6632, 6630, 1, 0, 0, 0, 6633, 6648, 3, 1371, 683, 0, 6634, 6648, 8, 45, 0, 0, 6635, 6637, 5, 47, 0, 0, 6636, 6635, 1, 0, 0, 0, 6637, 6638, 1, 0, 0, 0, 6638, 6636, 1, 0, 0, 0, 6638, 6639, 1, 0, 0, 0, 6639, 6640, 1, 0, 0, 0, 6640, 6648, 8, 45, 0, 0, 6641, 6643, 5, 42, 0, 0, 6642, 6641, 1, 0, 0, 0, 6643, 6644, 1, 0, 0, 0, 6644, 6642, 1, 0, 0, 0, 6644, 6645, 1, 0, 0, 0, 6645, 6646, 1, 0, 0, 0, 6646, 6648, 8, 45, 0, 0, 6647, 6630, 1, 0, 0, 0, 6647, 6634, 1, 0, 0, 0, 6647, 6636, 1, 0, 0, 0, 6647, 6642, 1, 0, 0, 0, 6648, 6651, 1, 0, 0, 0, 6649, 6647, 1, 0, 0, 0, 6649, 6650, 1, 0, 0, 0, 6650, 6655, 1, 0, 0, 0, 6651, 6649, 1, 0, 0, 0, 6652, 6654, 5, 42, 0, 0, 6653, 6652, 1, 0, 0, 0, 6654, 6657, 1, 0, 0, 0, 6655, 6653, 1, 0, 0, 0, 6655, 6656, 1, 0, 0, 0, 6656, 6658, 1, 0, 0, 0, 6657, 6655, 1, 0, 0, 0, 6658, 6659, 5, 42, 0, 0, 6659, 6660, 5, 47, 0, 0, 6660, 6661, 1, 0, 0, 0, 6661, 6662, 6, 683, 7, 0, 6662, 1372, 1, 0, 0, 0, 6663, 6664, 5, 47, 0, 0, 6664, 6665, 5, 42, 0, 0, 6665, 6690, 1, 0, 0, 0, 6666, 6668, 5, 47, 0, 0, 6667, 6666, 1, 0, 0, 0, 6668, 6671, 1, 0, 0, 0, 6669, 6667, 1, 0, 0, 0, 6669, 6670, 1, 0, 0, 0, 6670, 6672, 1, 0, 0, 0, 6671, 6669, 1, 0, 0, 0, 6672, 6689, 3, 1371, 683, 0, 6673, 6689, 8, 45, 0, 0, 6674, 6676, 5, 47, 0, 0, 6675, 6674, 1, 0, 0, 0, 6676, 6677, 1, 0, 0, 0, 6677, 6675, 1, 0, 0, 0, 6677, 6678, 1, 0, 0, 0, 6678, 6679, 1, 0, 0, 0, 6679, 6687, 8, 45, 0, 0, 6680, 6682, 5, 42, 0, 0, 6681, 6680, 1, 0, 0, 0, 6682, 6683, 1, 0, 0, 0, 6683, 6681, 1, 0, 0, 0, 6683, 6684, 1, 0, 0, 0, 6684, 6685, 1, 0, 0, 0, 6685, 6687, 8, 45, 0, 0, 6686, 6675, 1, 0, 0, 0, 6686, 6681, 1, 0, 0, 0, 6687, 6689, 1, 0, 0, 0, 6688, 6669, 1, 0, 0, 0, 6688, 6673, 1, 0, 0, 0, 6688, 6686, 1, 0, 0, 0, 6689, 6692, 1, 0, 0, 0, 6690, 6688, 1, 0, 0, 0, 6690, 6691, 1, 0, 0, 0, 6691, 6710, 1, 0, 0, 0, 6692, 6690, 1, 0, 0, 0, 6693, 6695, 5, 47, 0, 0, 6694, 6693, 1, 0, 0, 0, 6695, 6696, 1, 0, 0, 0, 6696, 6694, 1, 0, 0, 0, 6696, 6697, 1, 0, 0, 0, 6697, 6711, 1, 0, 0, 0, 6698, 6700, 5, 42, 0, 0, 6699, 6698, 1, 0, 0, 0, 6700, 6701, 1, 0, 0, 0, 6701, 6699, 1, 0, 0, 0, 6701, 6702, 1, 0, 0, 0, 6702, 6711, 1, 0, 0, 0, 6703, 6705, 5, 47, 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, 6709, 1, 0, 0, 0, 6708, 6706, 1, 0, 0, 0, 6709, 6711, 3, 1373, 684, 0, 6710, 6694, 1, 0, 0, 0, 6710, 6699, 1, 0, 0, 0, 6710, 6706, 1, 0, 0, 0, 6710, 6711, 1, 0, 0, 0, 6711, 6712, 1, 0, 0, 0, 6712, 6713, 6, 684, 8, 0, 6713, 1374, 1, 0, 0, 0, 6714, 6726, 5, 92, 0, 0, 6715, 6725, 8, 46, 0, 0, 6716, 6720, 5, 34, 0, 0, 6717, 6719, 8, 47, 0, 0, 6718, 6717, 1, 0, 0, 0, 6719, 6722, 1, 0, 0, 0, 6720, 6718, 1, 0, 0, 0, 6720, 6721, 1, 0, 0, 0, 6721, 6723, 1, 0, 0, 0, 6722, 6720, 1, 0, 0, 0, 6723, 6725, 5, 34, 0, 0, 6724, 6715, 1, 0, 0, 0, 6724, 6716, 1, 0, 0, 0, 6725, 6728, 1, 0, 0, 0, 6726, 6724, 1, 0, 0, 0, 6726, 6727, 1, 0, 0, 0, 6727, 6736, 1, 0, 0, 0, 6728, 6726, 1, 0, 0, 0, 6729, 6733, 5, 34, 0, 0, 6730, 6732, 8, 47, 0, 0, 6731, 6730, 1, 0, 0, 0, 6732, 6735, 1, 0, 0, 0, 6733, 6731, 1, 0, 0, 0, 6733, 6734, 1, 0, 0, 0, 6734, 6737, 1, 0, 0, 0, 6735, 6733, 1, 0, 0, 0, 6736, 6729, 1, 0, 0, 0, 6736, 6737, 1, 0, 0, 0, 6737, 1376, 1, 0, 0, 0, 6738, 6739, 5, 92, 0, 0, 6739, 6740, 5, 92, 0, 0, 6740, 1378, 1, 0, 0, 0, 6741, 6742, 9, 0, 0, 0, 6742, 1380, 1, 0, 0, 0, 6743, 6744, 3, 1385, 690, 0, 6744, 6745, 5, 39, 0, 0, 6745, 6746, 1, 0, 0, 0, 6746, 6747, 6, 688, 9, 0, 6747, 1382, 1, 0, 0, 0, 6748, 6750, 3, 1385, 690, 0, 6749, 6751, 5, 92, 0, 0, 6750, 6749, 1, 0, 0, 0, 6750, 6751, 1, 0, 0, 0, 6751, 6752, 1, 0, 0, 0, 6752, 6753, 5, 0, 0, 1, 6753, 1384, 1, 0, 0, 0, 6754, 6755, 5, 39, 0, 0, 6755, 6778, 5, 39, 0, 0, 6756, 6774, 5, 92, 0, 0, 6757, 6758, 5, 120, 0, 0, 6758, 6775, 7, 39, 0, 0, 6759, 6760, 5, 117, 0, 0, 6760, 6761, 7, 39, 0, 0, 6761, 6762, 7, 39, 0, 0, 6762, 6763, 7, 39, 0, 0, 6763, 6775, 7, 39, 0, 0, 6764, 6765, 5, 85, 0, 0, 6765, 6766, 7, 39, 0, 0, 6766, 6767, 7, 39, 0, 0, 6767, 6768, 7, 39, 0, 0, 6768, 6769, 7, 39, 0, 0, 6769, 6770, 7, 39, 0, 0, 6770, 6771, 7, 39, 0, 0, 6771, 6772, 7, 39, 0, 0, 6772, 6775, 7, 39, 0, 0, 6773, 6775, 8, 48, 0, 0, 6774, 6757, 1, 0, 0, 0, 6774, 6759, 1, 0, 0, 0, 6774, 6764, 1, 0, 0, 0, 6774, 6773, 1, 0, 0, 0, 6775, 6778, 1, 0, 0, 0, 6776, 6778, 8, 49, 0, 0, 6777, 6754, 1, 0, 0, 0, 6777, 6756, 1, 0, 0, 0, 6777, 6776, 1, 0, 0, 0, 6778, 6781, 1, 0, 0, 0, 6779, 6777, 1, 0, 0, 0, 6779, 6780, 1, 0, 0, 0, 6780, 1386, 1, 0, 0, 0, 6781, 6779, 1, 0, 0, 0, 6782, 6783, 3, 1391, 693, 0, 6783, 6784, 5, 39, 0, 0, 6784, 6785, 1, 0, 0, 0, 6785, 6786, 6, 691, 9, 0, 6786, 1388, 1, 0, 0, 0, 6787, 6789, 3, 1391, 693, 0, 6788, 6790, 5, 92, 0, 0, 6789, 6788, 1, 0, 0, 0, 6789, 6790, 1, 0, 0, 0, 6790, 6791, 1, 0, 0, 0, 6791, 6792, 5, 0, 0, 1, 6792, 1390, 1, 0, 0, 0, 6793, 6794, 5, 39, 0, 0, 6794, 6799, 5, 39, 0, 0, 6795, 6796, 5, 92, 0, 0, 6796, 6799, 9, 0, 0, 0, 6797, 6799, 8, 49, 0, 0, 6798, 6793, 1, 0, 0, 0, 6798, 6795, 1, 0, 0, 0, 6798, 6797, 1, 0, 0, 0, 6799, 6802, 1, 0, 0, 0, 6800, 6798, 1, 0, 0, 0, 6800, 6801, 1, 0, 0, 0, 6801, 1392, 1, 0, 0, 0, 6802, 6800, 1, 0, 0, 0, 6803, 6804, 3, 1365, 680, 0, 6804, 6805, 1, 0, 0, 0, 6805, 6806, 6, 694, 10, 0, 6806, 6807, 6, 694, 7, 0, 6807, 1394, 1, 0, 0, 0, 6808, 6809, 3, 1367, 681, 0, 6809, 6810, 1, 0, 0, 0, 6810, 6811, 6, 695, 11, 0, 6811, 6812, 6, 695, 7, 0, 6812, 6813, 6, 695, 12, 0, 6813, 1396, 1, 0, 0, 0, 6814, 6815, 6, 696, 13, 0, 6815, 6816, 1, 0, 0, 0, 6816, 6817, 6, 696, 14, 0, 6817, 6818, 6, 696, 15, 0, 6818, 1398, 1, 0, 0, 0, 6819, 6820, 3, 1365, 680, 0, 6820, 6821, 1, 0, 0, 0, 6821, 6822, 6, 697, 10, 0, 6822, 6823, 6, 697, 7, 0, 6823, 1400, 1, 0, 0, 0, 6824, 6825, 3, 1367, 681, 0, 6825, 6826, 1, 0, 0, 0, 6826, 6827, 6, 698, 11, 0, 6827, 6828, 6, 698, 7, 0, 6828, 1402, 1, 0, 0, 0, 6829, 6830, 5, 39, 0, 0, 6830, 6831, 1, 0, 0, 0, 6831, 6832, 6, 699, 2, 0, 6832, 6833, 6, 699, 16, 0, 6833, 1404, 1, 0, 0, 0, 6834, 6835, 6, 700, 17, 0, 6835, 6836, 1, 0, 0, 0, 6836, 6837, 6, 700, 14, 0, 6837, 6838, 6, 700, 15, 0, 6838, 1406, 1, 0, 0, 0, 6839, 6841, 8, 50, 0, 0, 6840, 6839, 1, 0, 0, 0, 6841, 6842, 1, 0, 0, 0, 6842, 6840, 1, 0, 0, 0, 6842, 6843, 1, 0, 0, 0, 6843, 6852, 1, 0, 0, 0, 6844, 6848, 5, 36, 0, 0, 6845, 6847, 8, 50, 0, 0, 6846, 6845, 1, 0, 0, 0, 6847, 6850, 1, 0, 0, 0, 6848, 6846, 1, 0, 0, 0, 6848, 6849, 1, 0, 0, 0, 6849, 6852, 1, 0, 0, 0, 6850, 6848, 1, 0, 0, 0, 6851, 6840, 1, 0, 0, 0, 6851, 6844, 1, 0, 0, 0, 6852, 1408, 1, 0, 0, 0, 6853, 6855, 5, 36, 0, 0, 6854, 6856, 3, 1335, 665, 0, 6855, 6854, 1, 0, 0, 0, 6855, 6856, 1, 0, 0, 0, 6856, 6857, 1, 0, 0, 0, 6857, 6858, 5, 36, 0, 0, 6858, 6859, 1, 0, 0, 0, 6859, 6860, 4, 702, 8, 0, 6860, 6861, 6, 702, 18, 0, 6861, 6862, 1, 0, 0, 0, 6862, 6863, 6, 702, 15, 0, 6863, 1410, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1478, 1484, 1486, 1491, 1495, 1497, 1500, 1509, 1511, 1516, 1521, 1523, 6397, 6406, 6410, 6414, 6423, 6425, 6435, 6437, 6463, 6465, 6483, 6494, 6505, 6522, 6542, 6546, 6549, 6555, 6558, 6563, 6567, 6572, 6579, 6590, 6592, 6600, 6606, 6609, 6619, 6630, 6638, 6644, 6647, 6649, 6655, 6669, 6677, 6683, 6686, 6688, 6690, 6696, 6701, 6706, 6710, 6720, 6724, 6726, 6733, 6736, 6750, 6774, 6777, 6779, 6789, 6798, 6800, 6842, 6848, 6851, 6855, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 664, 1, 5, 4, 0, 1, 675, 2, 0, 1, 0, 1, 684, 3, 2, 2, 0, 7, 671, 0, 7, 672, 0, 2, 3, 0, 1, 696, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 700, 5, 1, 702, 6] \ No newline at end of file diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.java b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.java new file mode 100644 index 0000000000..25408f96f9 --- /dev/null +++ b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.java @@ -0,0 +1,5297 @@ +// 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.2 + + +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.2", 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, ZTABLE=93, THEN=94, TO=95, DESCRIBE=96, TOPIC=97, + TOPICS=98, STREAM=99, ZVIEW=100, ZVIEWS=101, TRAILING=102, TRUE_P=103, + UNION=104, UNIQUE=105, USER=106, USING=107, VARIADIC=108, WHEN=109, WHERE=110, + WINDOW=111, WITH=112, AUTHORIZATION=113, BINARY=114, COLLATION=115, CONCURRENTLY=116, + CROSS=117, CURRENT_SCHEMA=118, FREEZE=119, FULL=120, ILIKE=121, INNER_P=122, + IS=123, ISNULL=124, JOIN=125, LEFT=126, LIKE=127, NATURAL=128, NOTNULL=129, + OUTER_P=130, OVER=131, OVERLAPS=132, RIGHT=133, SIMILAR=134, VERBOSE=135, + ABORT_P=136, ABSOLUTE_P=137, ACCESS=138, ACTION=139, ADD_P=140, ADMIN=141, + AFTER=142, AGGREGATE=143, ALSO=144, ALTER=145, ALWAYS=146, ASSERTION=147, + ASSIGNMENT=148, AT=149, ATTRIBUTE=150, BACKWARD=151, BEFORE=152, BEGIN_P=153, + BY=154, CACHE=155, CALLED=156, CASCADE=157, CASCADED=158, CATALOG=159, + CHAIN=160, CHARACTERISTICS=161, CHECKPOINT=162, CLASS=163, CLOSE=164, + CLUSTER=165, COMMENT=166, COMMENTS=167, COMMIT=168, COMMITTED=169, CONFIGURATION=170, + CONNECTION=171, CONSTRAINTS=172, CONTENT_P=173, CONTINUE_P=174, CONVERSION_P=175, + COPY=176, COST=177, CSV=178, CURSOR=179, CYCLE=180, DATA_P=181, DATABASE=182, + DAY_P=183, DEALLOCATE=184, DECLARE=185, DEFAULTS=186, DEFERRED=187, DEFINER=188, + DELETE_P=189, DELIMITER=190, DELIMITERS=191, DICTIONARY=192, DISABLE_P=193, + DISCARD=194, DOCUMENT_P=195, DOMAIN_P=196, DOUBLE_P=197, DROP=198, EACH=199, + ENABLE_P=200, ENCODING=201, ENCRYPTED=202, ENUM_P=203, ESCAPE=204, EVENT=205, + EXCLUDE=206, EXCLUDING=207, EXCLUSIVE=208, EXECUTE=209, EXPLAIN=210, EXTENSION=211, + EXTERNAL=212, FAMILY=213, FIRST_P=214, FOLLOWING=215, FORCE=216, FORWARD=217, + FUNCTION=218, FUNCTIONS=219, GLOBAL=220, GRANTED=221, HANDLER=222, HEADER_P=223, + HOLD=224, HOUR_P=225, IDENTITY_P=226, IF_P=227, IMMEDIATE=228, IMMUTABLE=229, + IMPLICIT_P=230, INCLUDING=231, INCREMENT=232, INDEX=233, INDEXES=234, + INHERIT=235, INHERITS=236, INLINE_P=237, INSENSITIVE=238, INSERT=239, + INSTEAD=240, INVOKER=241, ISOLATION=242, KEY=243, LABEL=244, LANGUAGE=245, + LARGE_P=246, LAST_P=247, LEAKPROOF=248, LEVEL=249, LISTEN=250, LOAD=251, + LOCAL=252, LOCATION=253, LOCK_P=254, MAPPING=255, MATCH=256, MATCHED=257, + MATERIALIZED=258, MAXVALUE=259, MERGE=260, MINUTE_P=261, MINVALUE=262, + MODE=263, MONTH_P=264, MOVE=265, NAME_P=266, NAMES=267, NEXT=268, NO=269, + NOTHING=270, NOTIFY=271, NOWAIT=272, NULLS_P=273, OBJECT_P=274, OF=275, + OFF=276, OIDS=277, OPERATOR=278, OPTION=279, OPTIONS=280, OWNED=281, OWNER=282, + PARSER=283, PARTIAL=284, PARTITION=285, PASSING=286, PASSWORD=287, PLANS=288, + PRECEDING=289, PREPARE=290, PREPARED=291, PRESERVE=292, PRIOR=293, PRIVILEGES=294, + PROCEDURAL=295, PROCEDURE=296, PROGRAM=297, QUOTE=298, RANGE=299, READ=300, + REASSIGN=301, RECHECK=302, RECURSIVE=303, REF=304, REFRESH=305, REINDEX=306, + RELATIVE_P=307, RELEASE=308, RENAME=309, REPEATABLE=310, REPLACE=311, + REPLICA=312, RESET=313, RESTART=314, RESTRICT=315, RETURNS=316, REVOKE=317, + ROLE=318, ROLLBACK=319, ROWS=320, RULE=321, SAVEPOINT=322, SCHEMA=323, + SCROLL=324, SEARCH=325, SECOND_P=326, SECURITY=327, SEQUENCE=328, SEQUENCES=329, + SERIALIZABLE=330, SERVER=331, SESSION=332, SET=333, SHARE=334, SHOW=335, + SIMPLE=336, SNAPSHOT=337, STABLE=338, STANDALONE_P=339, START=340, STATEMENT=341, + STATISTICS=342, STDIN=343, STDOUT=344, STORAGE=345, STRICT_P=346, STRIP_P=347, + SYSID=348, SYSTEM_P=349, TABLES=350, ZTABLES=351, TABLESPACE=352, TEMP=353, + TEMPLATE=354, TEMPORARY=355, TEXT_P=356, TRANSACTION=357, TRIGGER=358, + TRUNCATE=359, TRUSTED=360, TYPE_P=361, TYPES_P=362, UNBOUNDED=363, UNCOMMITTED=364, + UNENCRYPTED=365, UNKNOWN=366, UNLISTEN=367, UNLOGGED=368, UNTIL=369, UPDATE=370, + VACUUM=371, VALID=372, VALIDATE=373, VALIDATOR=374, VARYING=375, VERSION_P=376, + VIEW=377, VOLATILE=378, WHITESPACE_P=379, WITHOUT=380, WORK=381, WRAPPER=382, + WRITE=383, XML_P=384, YEAR_P=385, YES_P=386, ZONE=387, BETWEEN=388, BIGINT=389, + BIT=390, BOOLEAN_P=391, CHAR_P=392, CHARACTER=393, COALESCE=394, DEC=395, + DECIMAL_P=396, EXISTS=397, EXTRACT=398, FLOAT_P=399, GREATEST=400, INOUT=401, + INT_P=402, INTEGER=403, INTERVAL=404, LEAST=405, NATIONAL=406, NCHAR=407, + NONE=408, NULLIF=409, NUMERIC=410, OVERLAY=411, POSITION=412, PRECISION=413, + REAL=414, ROW=415, SETOF=416, SMALLINT=417, SUBSTRING=418, TIME=419, TIMESTAMP=420, + TREAT=421, TRIM=422, VALUES=423, VARCHAR=424, XMLATTRIBUTES=425, XMLCOMMENT=426, + XMLAGG=427, XML_IS_WELL_FORMED=428, XML_IS_WELL_FORMED_DOCUMENT=429, XML_IS_WELL_FORMED_CONTENT=430, + XPATH=431, XPATH_EXISTS=432, XMLCONCAT=433, XMLELEMENT=434, XMLEXISTS=435, + XMLFOREST=436, XMLPARSE=437, XMLPI=438, XMLROOT=439, XMLSERIALIZE=440, + CALL=441, CURRENT_P=442, ATTACH=443, DETACH=444, EXPRESSION=445, GENERATED=446, + LOGGED=447, STORED=448, INCLUDE=449, ROUTINE=450, TRANSFORM=451, IMPORT_P=452, + POLICY=453, METHOD=454, REFERENCING=455, NEW=456, OLD=457, VALUE_P=458, + SUBSCRIPTION=459, PUBLICATION=460, OUT_P=461, END_P=462, ROUTINES=463, + SCHEMAS=464, PROCEDURES=465, INPUT_P=466, SUPPORT=467, PARALLEL=468, SQL_P=469, + DEPENDS=470, OVERRIDING=471, CONFLICT=472, SKIP_P=473, LOCKED=474, TIES=475, + ROLLUP=476, CUBE=477, GROUPING=478, SETS=479, TABLESAMPLE=480, ORDINALITY=481, + XMLTABLE=482, COLUMNS=483, XMLNAMESPACES=484, ROWTYPE=485, NORMALIZED=486, + WITHIN=487, FILTER=488, GROUPS=489, OTHERS=490, NFC=491, NFD=492, NFKC=493, + NFKD=494, UESCAPE=495, VIEWS=496, NORMALIZE=497, DUMP=498, PRINT_STRICT_PARAMS=499, + VARIABLE_CONFLICT=500, ERROR=501, USE_VARIABLE=502, USE_COLUMN=503, ALIAS=504, + CONSTANT=505, PERFORM=506, GET=507, DIAGNOSTICS=508, STACKED=509, ELSIF=510, + WHILE=511, REVERSE=512, FOREACH=513, SLICE=514, EXIT=515, RETURN=516, + QUERY=517, RAISE=518, SQLSTATE=519, DEBUG=520, LOG=521, INFO=522, NOTICE=523, + WARNING=524, EXCEPTION=525, ASSERT=526, LOOP=527, OPEN=528, ABS=529, CBRT=530, + CEIL=531, CEILING=532, DEGREES=533, DIV=534, EXP=535, FACTORIAL=536, FLOOR=537, + GCD=538, LCM=539, LN=540, LOG10=541, MIN_SCALE=542, MOD=543, PI=544, POWER=545, + RADIANS=546, ROUND=547, SCALE=548, SIGN=549, SQRT=550, TRIM_SCALE=551, + TRUNC=552, WIDTH_BUCKET=553, RANDOM=554, SETSEED=555, ACOS=556, ACOSD=557, + ASIN=558, ASIND=559, ATAN=560, ATAND=561, ATAN2=562, ATAN2D=563, COS=564, + COSD=565, COT=566, COTD=567, SIN=568, SIND=569, TAN=570, TAND=571, SINH=572, + COSH=573, TANH=574, ASINH=575, ACOSH=576, ATANH=577, BIT_LENGTH=578, CHAR_LENGTH=579, + CHARACTER_LENGTH=580, LOWER=581, OCTET_LENGTH=582, UPPER=583, ASCII=584, + BTRIM=585, CHR=586, CONCAT=587, CONCAT_WS=588, FORMAT=589, INITCAP=590, + LENGTH=591, LPAD=592, LTRIM=593, MD5=594, PARSE_IDENT=595, PG_CLIENT_ENCODING=596, + QUOTE_IDENT=597, QUOTE_LITERAL=598, QUOTE_NULLABLE=599, REGEXP_COUNT=600, + REGEXP_INSTR=601, REGEXP_LIKE=602, REGEXP_MATCH=603, REGEXP_MATCHES=604, + REGEXP_REPLACE=605, REGEXP_SPLIT_TO_ARRAY=606, REGEXP_SPLIT_TO_TABLE=607, + REGEXP_SUBSTR=608, REPEAT=609, RPAD=610, RTRIM=611, SPLIT_PART=612, STARTS_WITH=613, + STRING_TO_ARRAY=614, STRING_TO_TABLE=615, STRPOS=616, SUBSTR=617, TO_ASCII=618, + TO_HEX=619, TRANSLATE=620, UNISTR=621, AGE=622, CLOCK_TIMESTAMP=623, DATE_BIN=624, + DATE_PART=625, DATE_TRUNC=626, ISFINITE=627, JUSTIFY_DAYS=628, JUSTIFY_HOURS=629, + JUSTIFY_INTERVAL=630, MAKE_DATE=631, MAKE_INTERVAL=632, MAKE_TIME=633, + MAKE_TIMESTAMP=634, MAKE_TIMESTAMPTZ=635, NOW=636, STATEMENT_TIMESTAMP=637, + TIMEOFDAY=638, TRANSACTION_TIMESTAMP=639, TO_TIMESTAMP=640, TO_CHAR=641, + TO_DATE=642, TO_NUMBER=643, Identifier=644, QuotedIdentifier=645, UnterminatedQuotedIdentifier=646, + InvalidQuotedIdentifier=647, InvalidUnterminatedQuotedIdentifier=648, + UnicodeQuotedIdentifier=649, UnterminatedUnicodeQuotedIdentifier=650, + InvalidUnicodeQuotedIdentifier=651, InvalidUnterminatedUnicodeQuotedIdentifier=652, + StringConstant=653, UnterminatedStringConstant=654, UnicodeEscapeStringConstant=655, + UnterminatedUnicodeEscapeStringConstant=656, BeginDollarStringConstant=657, + BinaryStringConstant=658, UnterminatedBinaryStringConstant=659, InvalidBinaryStringConstant=660, + InvalidUnterminatedBinaryStringConstant=661, HexadecimalStringConstant=662, + UnterminatedHexadecimalStringConstant=663, InvalidHexadecimalStringConstant=664, + InvalidUnterminatedHexadecimalStringConstant=665, Integral=666, NumericFail=667, + Numeric=668, PLSQLVARIABLENAME=669, PLSQLIDENTIFIER=670, Whitespace=671, + Newline=672, LineComment=673, BlockComment=674, UnterminatedBlockComment=675, + MetaCommand=676, EndMetaCommand=677, ErrorCharacter=678, EscapeStringConstant=679, + UnterminatedEscapeStringConstant=680, InvalidEscapeStringConstant=681, + InvalidUnterminatedEscapeStringConstant=682, AfterEscapeStringConstantMode_NotContinued=683, + AfterEscapeStringConstantWithNewlineMode_NotContinued=684, DollarText=685, + EndDollarStringConstant=686, AfterEscapeStringConstantWithNewlineMode_Continued=687; + 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", "ZTABLE", "THEN", + "TO", "DESCRIBE", "TOPIC", "TOPICS", "STREAM", "ZVIEW", "ZVIEWS", "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", "ZTABLES", "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'", "'ZTABLE'", "'THEN'", "'TO'", "'DESCRIBE'", + "'TOPIC'", "'TOPICS'", "'STREAM'", "'ZVIEW'", "'ZVIEWS'", "'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'", "'ZTABLES'", "'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", "ZTABLE", "THEN", + "TO", "DESCRIBE", "TOPIC", "TOPICS", "STREAM", "ZVIEW", "ZVIEWS", "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", "ZTABLES", "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 664: + BeginDollarStringConstant_action((RuleContext)_localctx, actionIndex); + break; + case 675: + NumericFail_action((RuleContext)_localctx, actionIndex); + break; + case 684: + UnterminatedBlockComment_action((RuleContext)_localctx, actionIndex); + break; + case 696: + AfterEscapeStringConstantMode_NotContinued_action((RuleContext)_localctx, actionIndex); + break; + case 700: + AfterEscapeStringConstantWithNewlineMode_NotContinued_action((RuleContext)_localctx, actionIndex); + break; + case 702: + 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 648: + return IdentifierStartChar_sempred((RuleContext)_localctx, predIndex); + case 702: + 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\u02af\u1ad0\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\u0002\u02b9\u0007\u02b9"+ + "\u0002\u02ba\u0007\u02ba\u0002\u02bb\u0007\u02bb\u0002\u02bc\u0007\u02bc"+ + "\u0002\u02bd\u0007\u02bd\u0002\u02be\u0007\u02be\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\u05c5\b\u001b\u000b\u001b\f\u001b\u05c6\u0001\u001c\u0001"+ + "\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05cd\b\u001c\u000b\u001c\f"+ + "\u001c\u05ce\u0001\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u05d4\b\u001c"+ + "\u0001\u001c\u0001\u001c\u0004\u001c\u05d8\b\u001c\u000b\u001c\f\u001c"+ + "\u05d9\u0001\u001c\u0003\u001c\u05dd\b\u001c\u0001\u001c\u0001\u001c\u0001"+ + "\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0005\u001d\u05e6"+ + "\b\u001d\n\u001d\f\u001d\u05e9\t\u001d\u0001\u001d\u0001\u001d\u0003\u001d"+ + "\u05ed\b\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0004\u001d\u05f2\b"+ + "\u001d\u000b\u001d\f\u001d\u05f3\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`\u0001`\u0001`\u0001"+ + "a\u0001a\u0001a\u0001a\u0001a\u0001b\u0001b\u0001b\u0001c\u0001c\u0001"+ + "c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001d\u0001d\u0001d\u0001"+ + "d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001"+ + "f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001g\u0001"+ + "g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001"+ + "i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001j\u0001"+ + "j\u0001j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+ + "l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001m\u0001"+ + "m\u0001m\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001o\u0001o\u0001"+ + "o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001p\u0001p\u0001p\u0001"+ + "p\u0001p\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001"+ + "r\u0001r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001s\u0001s\u0001s\u0001"+ + "t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001"+ + "t\u0001t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001"+ + "u\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001"+ + "v\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001"+ + "w\u0001w\u0001w\u0001w\u0001x\u0001x\u0001x\u0001x\u0001x\u0001x\u0001"+ + "y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001"+ + "y\u0001y\u0001y\u0001y\u0001y\u0001z\u0001z\u0001z\u0001z\u0001z\u0001"+ + "z\u0001z\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\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\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\u0084\u0001\u0084\u0001\u0085\u0001\u0085\u0001\u0085\u0001"+ + "\u0085\u0001\u0085\u0001\u0085\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\u0089\u0001"+ + "\u0089\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\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\u008c\u0001\u008c\u0001\u008c\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"+ + "\u008e\u0001\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\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"+ + "\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\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\u0096\u0001\u0096\u0001"+ + "\u0096\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\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\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"+ + "\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\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\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"+ + "\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\u00a4\u0001"+ + "\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001"+ + "\u00a4\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"+ + "\u00a5\u0001\u00a5\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\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\u00ac\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\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ae\u0001\u00ae\u0001"+ + "\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001"+ + "\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00af\u0001\u00af\u0001\u00af\u0001"+ + "\u00af\u0001\u00af\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\u00b0\u0001\u00b0\u0001\u00b1\u0001"+ + "\u00b1\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\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\u00b5\u0001"+ + "\u00b5\u0001\u00b5\u0001\u00b5\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\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\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\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\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\u00c1\u0001\u00c1\u0001\u00c1\u0001"+ + "\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\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"+ + "\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c4\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\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\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"+ + "\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\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\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"+ + "\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\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"+ + "\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\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"+ + "\u00d6\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\u00da\u0001"+ + "\u00da\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\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"+ + "\u00dd\u0001\u00dd\u0001\u00de\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\u00df\u0001\u00df\u0001\u00df\u0001"+ + "\u00df\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\u00e2\u0001"+ + "\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001"+ + "\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\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\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e7\u0001\u00e7\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\u00e8\u0001"+ + "\u00e9\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"+ + "\u00ea\u0001\u00eb\u0001\u00eb\u0001\u00eb\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\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\u00ef\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\u00f1\u0001\u00f1\u0001\u00f1\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\u00f2\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\u00f4\u0001\u00f4\u0001"+ + "\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001"+ + "\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\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\u00f8\u0001\u00f8\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"+ + "\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\u00fe\u0001\u00fe\u0001\u00fe\u0001"+ + "\u00fe\u0001\u00fe\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\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"+ + "\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\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001"+ + "\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001"+ + "\u0105\u0001\u0105\u0001\u0105\u0001\u0106\u0001\u0106\u0001\u0106\u0001"+ + "\u0106\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\u0108\u0001"+ + "\u0108\u0001\u0109\u0001\u0109\u0001\u0109\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"+ + "\u010b\u0001\u010b\u0001\u010b\u0001\u010c\u0001\u010c\u0001\u010c\u0001"+ + "\u010c\u0001\u010c\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001"+ + "\u010d\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001"+ + "\u010e\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001"+ + "\u0110\u0001\u0110\u0001\u0110\u0001\u0111\u0001\u0111\u0001\u0111\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"+ + "\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\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001"+ + "\u0115\u0001\u0115\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0117\u0001"+ + "\u0117\u0001\u0117\u0001\u0117\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\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\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001"+ + "\u011c\u0001\u011c\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\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\u0120\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"+ + "\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\u0127\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\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\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\u012c\u0001\u012c\u0001\u012c\u0001\u012c\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"+ + "\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\u0130\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"+ + "\u0132\u0001\u0132\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\u0135\u0001\u0135\u0001\u0136\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\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\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"+ + "\u013b\u0001\u013c\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\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\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\u0142\u0001\u0142\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\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\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\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\u014a\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\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"+ + "\u014c\u0001\u014c\u0001\u014c\u0001\u014d\u0001\u014d\u0001\u014d\u0001"+ + "\u014d\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\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0151\u0001"+ + "\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\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\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\u0155\u0001\u0156\u0001\u0156\u0001\u0156\u0001"+ + "\u0156\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\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001"+ + "\u0159\u0001\u0159\u0001\u0159\u0001\u0159\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\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\u015c\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\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\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\u0163\u0001\u0163\u0001\u0163\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\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\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"+ + "\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\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"+ + "\u016e\u0001\u016e\u0001\u016e\u0001\u016f\u0001\u016f\u0001\u016f\u0001"+ + "\u016f\u0001\u016f\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\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\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\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"+ + "\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\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"+ + "\u0179\u0001\u0179\u0001\u017a\u0001\u017a\u0001\u017a\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\u017d\u0001"+ + "\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001"+ + "\u017d\u0001\u017d\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001"+ + "\u017e\u0001\u017e\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\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\u0183\u0001\u0183\u0001"+ + "\u0183\u0001\u0183\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001"+ + "\u0184\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0185\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"+ + "\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001"+ + "\u0188\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u018a\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"+ + "\u018c\u0001\u018c\u0001\u018c\u0001\u018c\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\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\u0190\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\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\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\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\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\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\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\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\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"+ + "\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\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\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\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\u01ac\u0001\u01ac\u0001\u01ac\u0001"+ + "\u01ac\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\u01af\u0001"+ + "\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001"+ + "\u01af\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\u01b0\u0001\u01b0\u0001"+ + "\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\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\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001"+ + "\u01b1\u0001\u01b1\u0001\u01b1\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\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\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\u01b6\u0001"+ + "\u01b6\u0001\u01b6\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\u01b7\u0001\u01b7\u0001"+ + "\u01b7\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\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\u01bb\u0001\u01bb\u0001"+ + "\u01bb\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\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\u01c0\u0001\u01c1\u0001\u01c1\u0001\u01c1\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\u01c5\u0001"+ + "\u01c5\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\u01c7\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\u01c9\u0001\u01c9\u0001\u01c9\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\u01ca\u0001"+ + "\u01ca\u0001\u01ca\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb\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"+ + "\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\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01d0\u0001"+ + "\u01d0\u0001\u01d0\u0001\u01d0\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\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\u01d6\u0001"+ + "\u01d6\u0001\u01d6\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\u01d7\u0001\u01d7\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\u01da\u0001\u01da\u0001"+ + "\u01da\u0001\u01da\u0001\u01da\u0001\u01da\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"+ + "\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\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\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\u01e3\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\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001"+ + "\u01e5\u0001\u01e5\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\u01e6\u0001\u01e7\u0001"+ + "\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001"+ + "\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001"+ + "\u01e7\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001"+ + "\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001"+ + "\u01e9\u0001\u01e9\u0001\u01e9\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\u01eb\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\u01ed\u0001"+ + "\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001"+ + "\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ef\u0001\u01ef\u0001"+ + "\u01ef\u0001\u01ef\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001"+ + "\u01f0\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\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"+ + "\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\u01f6\u0001\u01f6\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\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\u01f9\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\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\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\u01ff\u0001\u01ff\u0001"+ + "\u01ff\u0001\u01ff\u0001\u01ff\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\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"+ + "\u0203\u0001\u0203\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\u0205\u0001\u0205\u0001"+ + "\u0205\u0001\u0205\u0001\u0205\u0001\u0205\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\u0208\u0001\u0208\u0001"+ + "\u0208\u0001\u0208\u0001\u0208\u0001\u0208\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\u020b\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\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\u0210\u0001\u0210\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\u0213\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\u0216\u0001\u0216\u0001\u0216\u0001\u0216\u0001\u0216\u0001"+ + "\u0217\u0001\u0217\u0001\u0217\u0001\u0217\u0001\u0217\u0001\u0217\u0001"+ + "\u0217\u0001\u0217\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0001"+ + "\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0219\u0001\u0219\u0001"+ + "\u0219\u0001\u0219\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\u021c\u0001\u021c\u0001\u021d\u0001\u021d\u0001"+ + "\u021d\u0001\u021d\u0001\u021e\u0001\u021e\u0001\u021e\u0001\u021e\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\u0221\u0001\u0221\u0001\u0221\u0001"+ + "\u0221\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0223\u0001"+ + "\u0223\u0001\u0223\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\u0225\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\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\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001"+ + "\u022a\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001"+ + "\u022b\u0001\u022c\u0001\u022c\u0001\u022c\u0001\u022c\u0001\u022c\u0001"+ + "\u022c\u0001\u022c\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\u022d\u0001\u022e\u0001\u022e\u0001\u022e\u0001"+ + "\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022f\u0001"+ + "\u022f\u0001\u022f\u0001\u022f\u0001\u022f\u0001\u0230\u0001\u0230\u0001"+ + "\u0230\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0231\u0001\u0231\u0001"+ + "\u0231\u0001\u0231\u0001\u0231\u0001\u0232\u0001\u0232\u0001\u0232\u0001"+ + "\u0232\u0001\u0232\u0001\u0232\u0001\u0233\u0001\u0233\u0001\u0233\u0001"+ + "\u0233\u0001\u0233\u0001\u0234\u0001\u0234\u0001\u0234\u0001\u0234\u0001"+ + "\u0234\u0001\u0234\u0001\u0235\u0001\u0235\u0001\u0235\u0001\u0235\u0001"+ + "\u0235\u0001\u0235\u0001\u0236\u0001\u0236\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\u023a\u0001\u023a\u0001"+ + "\u023a\u0001\u023a\u0001\u023a\u0001\u023b\u0001\u023b\u0001\u023b\u0001"+ + "\u023b\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001"+ + "\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023e\u0001\u023e\u0001"+ + "\u023e\u0001\u023e\u0001\u023e\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+ + "\u023f\u0001\u023f\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001"+ + "\u0240\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\u0245\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\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\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\u0249\u0001\u0249\u0001"+ + "\u0249\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\u024b\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\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\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"+ + "\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0254\u0001"+ + "\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\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\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"+ + "\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\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\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\u025e\u0001"+ + "\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\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\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\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\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\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\u0264\u0001\u0264\u0001"+ + "\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0265\u0001"+ + "\u0265\u0001\u0265\u0001\u0265\u0001\u0265\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\u0267\u0001\u0268\u0001\u0268\u0001\u0268\u0001"+ + "\u0268\u0001\u0268\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\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\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"+ + "\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\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\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\u0272\u0001\u0272\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"+ + "\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\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\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\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\u027b\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\u027d\u0001\u027d\u0001"+ + "\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001"+ + "\u027e\u0001\u027e\u0001\u027e\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\u0280\u0001\u0280\u0001\u0280\u0001"+ + "\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001"+ + "\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001"+ + "\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0281\u0001"+ + "\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001"+ + "\u0281\u0001\u0281\u0001\u0281\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ + "\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ + "\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ + "\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ + "\u0282\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001"+ + "\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001"+ + "\u0283\u0001\u0283\u0001\u0284\u0001\u0284\u0001\u0284\u0001\u0284\u0001"+ + "\u0284\u0001\u0284\u0001\u0284\u0001\u0284\u0001\u0285\u0001\u0285\u0001"+ + "\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001"+ + "\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0001"+ + "\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0287\u0001\u0287\u0005"+ + "\u0287\u18fc\b\u0287\n\u0287\f\u0287\u18ff\t\u0287\u0001\u0288\u0001\u0288"+ + "\u0001\u0288\u0001\u0288\u0001\u0288\u0001\u0288\u0003\u0288\u1907\b\u0288"+ + "\u0001\u0289\u0001\u0289\u0003\u0289\u190b\b\u0289\u0001\u028a\u0001\u028a"+ + "\u0003\u028a\u190f\b\u028a\u0001\u028b\u0001\u028b\u0001\u028b\u0001\u028c"+ + "\u0001\u028c\u0001\u028c\u0001\u028c\u0005\u028c\u1918\b\u028c\n\u028c"+ + "\f\u028c\u191b\t\u028c\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028e"+ + "\u0001\u028e\u0001\u028e\u0001\u028e\u0005\u028e\u1924\b\u028e\n\u028e"+ + "\f\u028e\u1927\t\u028e\u0001\u028f\u0001\u028f\u0001\u028f\u0001\u028f"+ + "\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0291\u0001\u0291"+ + "\u0001\u0291\u0001\u0291\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0292"+ + "\u0001\u0293\u0001\u0293\u0001\u0293\u0001\u0294\u0001\u0294\u0001\u0294"+ + "\u0001\u0294\u0005\u0294\u1940\b\u0294\n\u0294\f\u0294\u1943\t\u0294\u0001"+ + "\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001"+ + "\u0296\u0001\u0296\u0001\u0296\u0001\u0297\u0001\u0297\u0001\u0297\u0001"+ + "\u0297\u0001\u0298\u0001\u0298\u0003\u0298\u1954\b\u0298\u0001\u0298\u0001"+ + "\u0298\u0001\u0298\u0001\u0298\u0001\u0298\u0001\u0299\u0001\u0299\u0005"+ + "\u0299\u195d\b\u0299\n\u0299\f\u0299\u1960\t\u0299\u0001\u029a\u0001\u029a"+ + "\u0001\u029a\u0001\u029b\u0001\u029b\u0001\u029b\u0005\u029b\u1968\b\u029b"+ + "\n\u029b\f\u029b\u196b\t\u029b\u0001\u029c\u0001\u029c\u0001\u029c\u0001"+ + "\u029d\u0001\u029d\u0001\u029d\u0001\u029e\u0001\u029e\u0001\u029e\u0001"+ + "\u029f\u0001\u029f\u0001\u029f\u0005\u029f\u1979\b\u029f\n\u029f\f\u029f"+ + "\u197c\t\u029f\u0001\u02a0\u0001\u02a0\u0001\u02a0\u0001\u02a1\u0001\u02a1"+ + "\u0001\u02a1\u0001\u02a2\u0001\u02a2\u0001\u02a3\u0001\u02a3\u0001\u02a3"+ + "\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a4\u0001\u02a4\u0001\u02a4"+ + "\u0003\u02a4\u198f\b\u02a4\u0001\u02a4\u0001\u02a4\u0003\u02a4\u1993\b"+ + "\u02a4\u0001\u02a4\u0003\u02a4\u1996\b\u02a4\u0001\u02a4\u0001\u02a4\u0001"+ + "\u02a4\u0001\u02a4\u0003\u02a4\u199c\b\u02a4\u0001\u02a4\u0003\u02a4\u199f"+ + "\b\u02a4\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0003\u02a4\u19a4\b\u02a4"+ + "\u0001\u02a4\u0001\u02a4\u0003\u02a4\u19a8\b\u02a4\u0001\u02a5\u0004\u02a5"+ + "\u19ab\b\u02a5\u000b\u02a5\f\u02a5\u19ac\u0001\u02a6\u0001\u02a6\u0001"+ + "\u02a6\u0005\u02a6\u19b2\b\u02a6\n\u02a6\f\u02a6\u19b5\t\u02a6\u0001\u02a7"+ + "\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7"+ + "\u0001\u02a7\u0005\u02a7\u19bf\b\u02a7\n\u02a7\f\u02a7\u19c2\t\u02a7\u0001"+ + "\u02a7\u0001\u02a7\u0001\u02a8\u0004\u02a8\u19c7\b\u02a8\u000b\u02a8\f"+ + "\u02a8\u19c8\u0001\u02a8\u0001\u02a8\u0001\u02a9\u0001\u02a9\u0003\u02a9"+ + "\u19cf\b\u02a9\u0001\u02a9\u0003\u02a9\u19d2\b\u02a9\u0001\u02a9\u0001"+ + "\u02a9\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0005\u02aa\u19da"+ + "\b\u02aa\n\u02aa\f\u02aa\u19dd\t\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02ab"+ + "\u0001\u02ab\u0001\u02ab\u0001\u02ab\u0005\u02ab\u19e5\b\u02ab\n\u02ab"+ + "\f\u02ab\u19e8\t\u02ab\u0001\u02ab\u0001\u02ab\u0001\u02ab\u0004\u02ab"+ + "\u19ed\b\u02ab\u000b\u02ab\f\u02ab\u19ee\u0001\u02ab\u0001\u02ab\u0004"+ + "\u02ab\u19f3\b\u02ab\u000b\u02ab\f\u02ab\u19f4\u0001\u02ab\u0005\u02ab"+ + "\u19f8\b\u02ab\n\u02ab\f\u02ab\u19fb\t\u02ab\u0001\u02ab\u0005\u02ab\u19fe"+ + "\b\u02ab\n\u02ab\f\u02ab\u1a01\t\u02ab\u0001\u02ab\u0001\u02ab\u0001\u02ab"+ + "\u0001\u02ab\u0001\u02ab\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac"+ + "\u0005\u02ac\u1a0c\b\u02ac\n\u02ac\f\u02ac\u1a0f\t\u02ac\u0001\u02ac\u0001"+ + "\u02ac\u0001\u02ac\u0004\u02ac\u1a14\b\u02ac\u000b\u02ac\f\u02ac\u1a15"+ + "\u0001\u02ac\u0001\u02ac\u0004\u02ac\u1a1a\b\u02ac\u000b\u02ac\f\u02ac"+ + "\u1a1b\u0001\u02ac\u0003\u02ac\u1a1f\b\u02ac\u0005\u02ac\u1a21\b\u02ac"+ + "\n\u02ac\f\u02ac\u1a24\t\u02ac\u0001\u02ac\u0004\u02ac\u1a27\b\u02ac\u000b"+ + "\u02ac\f\u02ac\u1a28\u0001\u02ac\u0004\u02ac\u1a2c\b\u02ac\u000b\u02ac"+ + "\f\u02ac\u1a2d\u0001\u02ac\u0005\u02ac\u1a31\b\u02ac\n\u02ac\f\u02ac\u1a34"+ + "\t\u02ac\u0001\u02ac\u0003\u02ac\u1a37\b\u02ac\u0001\u02ac\u0001\u02ac"+ + "\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0005\u02ad\u1a3f\b\u02ad"+ + "\n\u02ad\f\u02ad\u1a42\t\u02ad\u0001\u02ad\u0005\u02ad\u1a45\b\u02ad\n"+ + "\u02ad\f\u02ad\u1a48\t\u02ad\u0001\u02ad\u0001\u02ad\u0005\u02ad\u1a4c"+ + "\b\u02ad\n\u02ad\f\u02ad\u1a4f\t\u02ad\u0003\u02ad\u1a51\b\u02ad\u0001"+ + "\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02af\u0001\u02af\u0001\u02b0\u0001"+ + "\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b1\u0001\u02b1\u0003"+ + "\u02b1\u1a5f\b\u02b1\u0001\u02b1\u0001\u02b1\u0001\u02b2\u0001\u02b2\u0001"+ + "\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001"+ + "\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001"+ + "\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0003"+ + "\u02b2\u1a77\b\u02b2\u0001\u02b2\u0005\u02b2\u1a7a\b\u02b2\n\u02b2\f\u02b2"+ + "\u1a7d\t\u02b2\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b3"+ + "\u0001\u02b4\u0001\u02b4\u0003\u02b4\u1a86\b\u02b4\u0001\u02b4\u0001\u02b4"+ + "\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0005\u02b5"+ + "\u1a8f\b\u02b5\n\u02b5\f\u02b5\u1a92\t\u02b5\u0001\u02b6\u0001\u02b6\u0001"+ + "\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b7\u0001\u02b7\u0001\u02b7\u0001"+ + "\u02b7\u0001\u02b7\u0001\u02b7\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001"+ + "\u02b8\u0001\u02b8\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001"+ + "\u02b9\u0001\u02ba\u0001\u02ba\u0001\u02ba\u0001\u02ba\u0001\u02ba\u0001"+ + "\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bc\u0001"+ + "\u02bc\u0001\u02bc\u0001\u02bc\u0001\u02bc\u0001\u02bd\u0004\u02bd\u1ab9"+ + "\b\u02bd\u000b\u02bd\f\u02bd\u1aba\u0001\u02bd\u0001\u02bd\u0005\u02bd"+ + "\u1abf\b\u02bd\n\u02bd\f\u02bd\u1ac2\t\u02bd\u0003\u02bd\u1ac4\b\u02bd"+ + "\u0001\u02be\u0001\u02be\u0003\u02be\u1ac8\b\u02be\u0001\u02be\u0001\u02be"+ + "\u0001\u02be\u0001\u02be\u0001\u02be\u0001\u02be\u0001\u02be\u0000\u0000"+ + "\u02bf\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/\u00161\u0017"+ + "3\u00185\u00197\u001a9\u001b;\u001c=\u001d?\u0000A\u0000C\u0000E\u0000"+ + "G\u001eI\u001fK M!O\"Q#S$U%W&Y\'[(])_*a+c,e-g.i/k0m1o2q3s4u5w6y7{8}9\u007f"+ + ":\u0081;\u0083<\u0085=\u0087>\u0089?\u008b@\u008dA\u008fB\u0091C\u0093"+ + "D\u0095E\u0097F\u0099G\u009bH\u009dI\u009fJ\u00a1K\u00a3L\u00a5M\u00a7"+ + "N\u00a9O\u00abP\u00adQ\u00afR\u00b1S\u00b3T\u00b5U\u00b7V\u00b9W\u00bb"+ + "X\u00bdY\u00bfZ\u00c1[\u00c3\\\u00c5]\u00c7^\u00c9_\u00cb`\u00cda\u00cf"+ + "b\u00d1c\u00d3d\u00d5e\u00d7f\u00d9g\u00dbh\u00ddi\u00dfj\u00e1k\u00e3"+ + "l\u00e5m\u00e7n\u00e9o\u00ebp\u00edq\u00efr\u00f1s\u00f3t\u00f5u\u00f7"+ + "v\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\u027f\u050b\u0280\u050d\u0281\u050f\u0282\u0511\u0283"+ + "\u0513\u0284\u0515\u0000\u0517\u0000\u0519\u0000\u051b\u0285\u051d\u0286"+ + "\u051f\u0287\u0521\u0288\u0523\u0289\u0525\u028a\u0527\u028b\u0529\u028c"+ + "\u052b\u028d\u052d\u028e\u052f\u0000\u0531\u028f\u0533\u0290\u0535\u0291"+ + "\u0537\u0000\u0539\u0292\u053b\u0293\u053d\u0294\u053f\u0295\u0541\u0296"+ + "\u0543\u0297\u0545\u0298\u0547\u0299\u0549\u029a\u054b\u029b\u054d\u029c"+ + "\u054f\u0000\u0551\u029d\u0553\u029e\u0555\u029f\u0557\u02a0\u0559\u02a1"+ + "\u055b\u02a2\u055d\u02a3\u055f\u02a4\u0561\u02a5\u0563\u02a6\u0565\u02a7"+ + "\u0567\u02a8\u0569\u0000\u056b\u02a9\u056d\u02aa\u056f\u0000\u0571\u0000"+ + "\u0573\u0000\u0575\u02ab\u0577\u0000\u0579\u0000\u057b\u02af\u057d\u02ac"+ + "\u057f\u02ad\u0581\u02ae\u0005\u0000\u0001\u0002\u0003\u00043\u0001\u0000"+ + "09\u0002\u0000++--\t\u0000!!##%&**<@^^``||~~\u0002\u0000*+<>\b\u0000!"+ + "!##%&?@^^``||~~\u0002\u0000AAaa\u0002\u0000LLll\u0002\u0000NNnn\u0002"+ + "\u0000YYyy\u0002\u0000SSss\u0002\u0000EEee\u0002\u0000ZZzz\u0002\u0000"+ + "DDdd\u0002\u0000RRrr\u0002\u0000CCcc\u0002\u0000MMmm\u0002\u0000TTtt\u0002"+ + "\u0000IIii\u0002\u0000BBbb\u0002\u0000OOoo\u0002\u0000HHhh\u0002\u0000"+ + "KKkk\u0002\u0000UUuu\u0002\u0000GGgg\u0002\u0000PPpp\u0002\u0000FFff\u0002"+ + "\u0000XXxx\u0002\u0000VVvv\u0002\u0000WWww\u0002\u0000QQqq\u0002\u0000"+ + "JJjj\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\u0000"+ + "01\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$$\u1b18\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\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"+ + "\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\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"+ + "\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\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\u0509\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\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\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\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\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\u0551\u0001\u0000\u0000\u0000\u0000\u0553\u0001\u0000"+ + "\u0000\u0000\u0000\u0555\u0001\u0000\u0000\u0000\u0000\u0557\u0001\u0000"+ + "\u0000\u0000\u0000\u0559\u0001\u0000\u0000\u0000\u0000\u055b\u0001\u0000"+ + "\u0000\u0000\u0000\u055d\u0001\u0000\u0000\u0000\u0000\u055f\u0001\u0000"+ + "\u0000\u0000\u0000\u0561\u0001\u0000\u0000\u0000\u0000\u0563\u0001\u0000"+ + "\u0000\u0000\u0001\u0565\u0001\u0000\u0000\u0000\u0001\u0567\u0001\u0000"+ + "\u0000\u0000\u0001\u056b\u0001\u0000\u0000\u0000\u0001\u056d\u0001\u0000"+ + "\u0000\u0000\u0002\u0571\u0001\u0000\u0000\u0000\u0002\u0573\u0001\u0000"+ + "\u0000\u0000\u0002\u0575\u0001\u0000\u0000\u0000\u0003\u0577\u0001\u0000"+ + "\u0000\u0000\u0003\u0579\u0001\u0000\u0000\u0000\u0003\u057b\u0001\u0000"+ + "\u0000\u0000\u0003\u057d\u0001\u0000\u0000\u0000\u0004\u057f\u0001\u0000"+ + "\u0000\u0000\u0004\u0581\u0001\u0000\u0000\u0000\u0005\u0583\u0001\u0000"+ + "\u0000\u0000\u0007\u0585\u0001\u0000\u0000\u0000\t\u0587\u0001\u0000\u0000"+ + "\u0000\u000b\u0589\u0001\u0000\u0000\u0000\r\u058b\u0001\u0000\u0000\u0000"+ + "\u000f\u058d\u0001\u0000\u0000\u0000\u0011\u058f\u0001\u0000\u0000\u0000"+ + "\u0013\u0591\u0001\u0000\u0000\u0000\u0015\u0593\u0001\u0000\u0000\u0000"+ + "\u0017\u0595\u0001\u0000\u0000\u0000\u0019\u0597\u0001\u0000\u0000\u0000"+ + "\u001b\u0599\u0001\u0000\u0000\u0000\u001d\u059b\u0001\u0000\u0000\u0000"+ + "\u001f\u059d\u0001\u0000\u0000\u0000!\u059f\u0001\u0000\u0000\u0000#\u05a1"+ + "\u0001\u0000\u0000\u0000%\u05a3\u0001\u0000\u0000\u0000\'\u05a5\u0001"+ + "\u0000\u0000\u0000)\u05a8\u0001\u0000\u0000\u0000+\u05ab\u0001\u0000\u0000"+ + "\u0000-\u05ae\u0001\u0000\u0000\u0000/\u05b1\u0001\u0000\u0000\u00001"+ + "\u05b4\u0001\u0000\u0000\u00003\u05b7\u0001\u0000\u0000\u00005\u05ba\u0001"+ + "\u0000\u0000\u00007\u05bd\u0001\u0000\u0000\u00009\u05c0\u0001\u0000\u0000"+ + "\u0000;\u05c2\u0001\u0000\u0000\u0000=\u05dc\u0001\u0000\u0000\u0000?"+ + "\u05e7\u0001\u0000\u0000\u0000A\u05f7\u0001\u0000\u0000\u0000C\u05f9\u0001"+ + "\u0000\u0000\u0000E\u05fb\u0001\u0000\u0000\u0000G\u05fd\u0001\u0000\u0000"+ + "\u0000I\u0601\u0001\u0000\u0000\u0000K\u0609\u0001\u0000\u0000\u0000M"+ + "\u0611\u0001\u0000\u0000\u0000O\u0615\u0001\u0000\u0000\u0000Q\u0619\u0001"+ + "\u0000\u0000\u0000S\u061f\u0001\u0000\u0000\u0000U\u0622\u0001\u0000\u0000"+ + "\u0000W\u0626\u0001\u0000\u0000\u0000Y\u0631\u0001\u0000\u0000\u0000["+ + "\u0636\u0001\u0000\u0000\u0000]\u063b\u0001\u0000\u0000\u0000_\u0640\u0001"+ + "\u0000\u0000\u0000a\u0646\u0001\u0000\u0000\u0000c\u064e\u0001\u0000\u0000"+ + "\u0000e\u0655\u0001\u0000\u0000\u0000g\u0660\u0001\u0000\u0000\u0000i"+ + "\u0667\u0001\u0000\u0000\u0000k\u0677\u0001\u0000\u0000\u0000m\u0684\u0001"+ + "\u0000\u0000\u0000o\u0691\u0001\u0000\u0000\u0000q\u069e\u0001\u0000\u0000"+ + "\u0000s\u06b0\u0001\u0000\u0000\u0000u\u06bd\u0001\u0000\u0000\u0000w"+ + "\u06c5\u0001\u0000\u0000\u0000y\u06d0\u0001\u0000\u0000\u0000{\u06d5\u0001"+ + "\u0000\u0000\u0000}\u06de\u0001\u0000\u0000\u0000\u007f\u06e1\u0001\u0000"+ + "\u0000\u0000\u0081\u06e6\u0001\u0000\u0000\u0000\u0083\u06ed\u0001\u0000"+ + "\u0000\u0000\u0085\u06f3\u0001\u0000\u0000\u0000\u0087\u06f9\u0001\u0000"+ + "\u0000\u0000\u0089\u06fd\u0001\u0000\u0000\u0000\u008b\u0705\u0001\u0000"+ + "\u0000\u0000\u008d\u070a\u0001\u0000\u0000\u0000\u008f\u0710\u0001\u0000"+ + "\u0000\u0000\u0091\u0716\u0001\u0000\u0000\u0000\u0093\u071d\u0001\u0000"+ + "\u0000\u0000\u0095\u0720\u0001\u0000\u0000\u0000\u0097\u072a\u0001\u0000"+ + "\u0000\u0000\u0099\u0734\u0001\u0000\u0000\u0000\u009b\u0739\u0001\u0000"+ + "\u0000\u0000\u009d\u0741\u0001\u0000\u0000\u0000\u009f\u0749\u0001\u0000"+ + "\u0000\u0000\u00a1\u074f\u0001\u0000\u0000\u0000\u00a3\u0759\u0001\u0000"+ + "\u0000\u0000\u00a5\u0768\u0001\u0000\u0000\u0000\u00a7\u076c\u0001\u0000"+ + "\u0000\u0000\u00a9\u0771\u0001\u0000\u0000\u0000\u00ab\u0778\u0001\u0000"+ + "\u0000\u0000\u00ad\u077b\u0001\u0000\u0000\u0000\u00af\u0780\u0001\u0000"+ + "\u0000\u0000\u00b1\u0783\u0001\u0000\u0000\u0000\u00b3\u0789\u0001\u0000"+ + "\u0000\u0000\u00b5\u0791\u0001\u0000\u0000\u0000\u00b7\u0799\u0001\u0000"+ + "\u0000\u0000\u00b9\u07a4\u0001\u0000\u0000\u0000\u00bb\u07ae\u0001\u0000"+ + "\u0000\u0000\u00bd\u07b5\u0001\u0000\u0000\u0000\u00bf\u07c2\u0001\u0000"+ + "\u0000\u0000\u00c1\u07c7\u0001\u0000\u0000\u0000\u00c3\u07d1\u0001\u0000"+ + "\u0000\u0000\u00c5\u07d7\u0001\u0000\u0000\u0000\u00c7\u07de\u0001\u0000"+ + "\u0000\u0000\u00c9\u07e3\u0001\u0000\u0000\u0000\u00cb\u07e6\u0001\u0000"+ + "\u0000\u0000\u00cd\u07ef\u0001\u0000\u0000\u0000\u00cf\u07f5\u0001\u0000"+ + "\u0000\u0000\u00d1\u07fc\u0001\u0000\u0000\u0000\u00d3\u0803\u0001\u0000"+ + "\u0000\u0000\u00d5\u0809\u0001\u0000\u0000\u0000\u00d7\u0810\u0001\u0000"+ + "\u0000\u0000\u00d9\u0819\u0001\u0000\u0000\u0000\u00db\u081e\u0001\u0000"+ + "\u0000\u0000\u00dd\u0824\u0001\u0000\u0000\u0000\u00df\u082b\u0001\u0000"+ + "\u0000\u0000\u00e1\u0830\u0001\u0000\u0000\u0000\u00e3\u0836\u0001\u0000"+ + "\u0000\u0000\u00e5\u083f\u0001\u0000\u0000\u0000\u00e7\u0844\u0001\u0000"+ + "\u0000\u0000\u00e9\u084a\u0001\u0000\u0000\u0000\u00eb\u0851\u0001\u0000"+ + "\u0000\u0000\u00ed\u0856\u0001\u0000\u0000\u0000\u00ef\u0864\u0001\u0000"+ + "\u0000\u0000\u00f1\u086b\u0001\u0000\u0000\u0000\u00f3\u0875\u0001\u0000"+ + "\u0000\u0000\u00f5\u0882\u0001\u0000\u0000\u0000\u00f7\u0888\u0001\u0000"+ + "\u0000\u0000\u00f9\u0897\u0001\u0000\u0000\u0000\u00fb\u089e\u0001\u0000"+ + "\u0000\u0000\u00fd\u08a3\u0001\u0000\u0000\u0000\u00ff\u08a9\u0001\u0000"+ + "\u0000\u0000\u0101\u08af\u0001\u0000\u0000\u0000\u0103\u08b2\u0001\u0000"+ + "\u0000\u0000\u0105\u08b9\u0001\u0000\u0000\u0000\u0107\u08be\u0001\u0000"+ + "\u0000\u0000\u0109\u08c3\u0001\u0000\u0000\u0000\u010b\u08c8\u0001\u0000"+ + "\u0000\u0000\u010d\u08d0\u0001\u0000\u0000\u0000\u010f\u08d8\u0001\u0000"+ + "\u0000\u0000\u0111\u08de\u0001\u0000\u0000\u0000\u0113\u08e3\u0001\u0000"+ + "\u0000\u0000\u0115\u08ec\u0001\u0000\u0000\u0000\u0117\u08f2\u0001\u0000"+ + "\u0000\u0000\u0119\u08fa\u0001\u0000\u0000\u0000\u011b\u0902\u0001\u0000"+ + "\u0000\u0000\u011d\u0908\u0001\u0000\u0000\u0000\u011f\u0911\u0001\u0000"+ + "\u0000\u0000\u0121\u0918\u0001\u0000\u0000\u0000\u0123\u091f\u0001\u0000"+ + "\u0000\u0000\u0125\u0923\u0001\u0000\u0000\u0000\u0127\u0929\u0001\u0000"+ + "\u0000\u0000\u0129\u092f\u0001\u0000\u0000\u0000\u012b\u0939\u0001\u0000"+ + "\u0000\u0000\u012d\u093e\u0001\u0000\u0000\u0000\u012f\u0944\u0001\u0000"+ + "\u0000\u0000\u0131\u094b\u0001\u0000\u0000\u0000\u0133\u0955\u0001\u0000"+ + "\u0000\u0000\u0135\u0960\u0001\u0000\u0000\u0000\u0137\u0963\u0001\u0000"+ + "\u0000\u0000\u0139\u096d\u0001\u0000\u0000\u0000\u013b\u0976\u0001\u0000"+ + "\u0000\u0000\u013d\u097d\u0001\u0000\u0000\u0000\u013f\u0983\u0001\u0000"+ + "\u0000\u0000\u0141\u0986\u0001\u0000\u0000\u0000\u0143\u098c\u0001\u0000"+ + "\u0000\u0000\u0145\u0993\u0001\u0000\u0000\u0000\u0147\u099b\u0001\u0000"+ + "\u0000\u0000\u0149\u09a4\u0001\u0000\u0000\u0000\u014b\u09ac\u0001\u0000"+ + "\u0000\u0000\u014d\u09b2\u0001\u0000\u0000\u0000\u014f\u09c2\u0001\u0000"+ + "\u0000\u0000\u0151\u09cd\u0001\u0000\u0000\u0000\u0153\u09d3\u0001\u0000"+ + "\u0000\u0000\u0155\u09d9\u0001\u0000\u0000\u0000\u0157\u09e1\u0001\u0000"+ + "\u0000\u0000\u0159\u09e9\u0001\u0000\u0000\u0000\u015b\u09f2\u0001\u0000"+ + "\u0000\u0000\u015d\u09f9\u0001\u0000\u0000\u0000\u015f\u0a03\u0001\u0000"+ + "\u0000\u0000\u0161\u0a11\u0001\u0000\u0000\u0000\u0163\u0a1c\u0001\u0000"+ + "\u0000\u0000\u0165\u0a28\u0001\u0000\u0000\u0000\u0167\u0a30\u0001\u0000"+ + "\u0000\u0000\u0169\u0a39\u0001\u0000\u0000\u0000\u016b\u0a44\u0001\u0000"+ + "\u0000\u0000\u016d\u0a49\u0001\u0000\u0000\u0000\u016f\u0a4e\u0001\u0000"+ + "\u0000\u0000\u0171\u0a52\u0001\u0000\u0000\u0000\u0173\u0a59\u0001\u0000"+ + "\u0000\u0000\u0175\u0a5f\u0001\u0000\u0000\u0000\u0177\u0a64\u0001\u0000"+ + "\u0000\u0000\u0179\u0a6d\u0001\u0000\u0000\u0000\u017b\u0a71\u0001\u0000"+ + "\u0000\u0000\u017d\u0a7c\u0001\u0000\u0000\u0000\u017f\u0a84\u0001\u0000"+ + "\u0000\u0000\u0181\u0a8d\u0001\u0000\u0000\u0000\u0183\u0a96\u0001\u0000"+ + "\u0000\u0000\u0185\u0a9e\u0001\u0000\u0000\u0000\u0187\u0aa5\u0001\u0000"+ + "\u0000\u0000\u0189\u0aaf\u0001\u0000\u0000\u0000\u018b\u0aba\u0001\u0000"+ + "\u0000\u0000\u018d\u0ac5\u0001\u0000\u0000\u0000\u018f\u0acd\u0001\u0000"+ + "\u0000\u0000\u0191\u0ad5\u0001\u0000\u0000\u0000\u0193\u0ade\u0001\u0000"+ + "\u0000\u0000\u0195\u0ae5\u0001\u0000\u0000\u0000\u0197\u0aec\u0001\u0000"+ + "\u0000\u0000\u0199\u0af1\u0001\u0000\u0000\u0000\u019b\u0af6\u0001\u0000"+ + "\u0000\u0000\u019d\u0afd\u0001\u0000\u0000\u0000\u019f\u0b06\u0001\u0000"+ + "\u0000\u0000\u01a1\u0b10\u0001\u0000\u0000\u0000\u01a3\u0b15\u0001\u0000"+ + "\u0000\u0000\u01a5\u0b1c\u0001\u0000\u0000\u0000\u01a7\u0b22\u0001\u0000"+ + "\u0000\u0000\u01a9\u0b2a\u0001\u0000\u0000\u0000\u01ab\u0b34\u0001\u0000"+ + "\u0000\u0000\u01ad\u0b3e\u0001\u0000\u0000\u0000\u01af\u0b46\u0001\u0000"+ + "\u0000\u0000\u01b1\u0b4e\u0001\u0000\u0000\u0000\u01b3\u0b58\u0001\u0000"+ + "\u0000\u0000\u01b5\u0b61\u0001\u0000\u0000\u0000\u01b7\u0b68\u0001\u0000"+ + "\u0000\u0000\u01b9\u0b6e\u0001\u0000\u0000\u0000\u01bb\u0b78\u0001\u0000"+ + "\u0000\u0000\u01bd\u0b7e\u0001\u0000\u0000\u0000\u01bf\u0b86\u0001\u0000"+ + "\u0000\u0000\u01c1\u0b8f\u0001\u0000\u0000\u0000\u01c3\u0b99\u0001\u0000"+ + "\u0000\u0000\u01c5\u0ba0\u0001\u0000\u0000\u0000\u01c7\u0ba8\u0001\u0000"+ + "\u0000\u0000\u01c9\u0bb0\u0001\u0000\u0000\u0000\u01cb\u0bb7\u0001\u0000"+ + "\u0000\u0000\u01cd\u0bbc\u0001\u0000\u0000\u0000\u01cf\u0bc1\u0001\u0000"+ + "\u0000\u0000\u01d1\u0bca\u0001\u0000\u0000\u0000\u01d3\u0bcd\u0001\u0000"+ + "\u0000\u0000\u01d5\u0bd7\u0001\u0000\u0000\u0000\u01d7\u0be1\u0001\u0000"+ + "\u0000\u0000\u01d9\u0bea\u0001\u0000\u0000\u0000\u01db\u0bf4\u0001\u0000"+ + "\u0000\u0000\u01dd\u0bfe\u0001\u0000\u0000\u0000\u01df\u0c04\u0001\u0000"+ + "\u0000\u0000\u01e1\u0c0c\u0001\u0000\u0000\u0000\u01e3\u0c14\u0001\u0000"+ + "\u0000\u0000\u01e5\u0c1d\u0001\u0000\u0000\u0000\u01e7\u0c24\u0001\u0000"+ + "\u0000\u0000\u01e9\u0c30\u0001\u0000\u0000\u0000\u01eb\u0c37\u0001\u0000"+ + "\u0000\u0000\u01ed\u0c3f\u0001\u0000\u0000\u0000\u01ef\u0c47\u0001\u0000"+ + "\u0000\u0000\u01f1\u0c51\u0001\u0000\u0000\u0000\u01f3\u0c55\u0001\u0000"+ + "\u0000\u0000\u01f5\u0c5b\u0001\u0000\u0000\u0000\u01f7\u0c64\u0001\u0000"+ + "\u0000\u0000\u01f9\u0c6a\u0001\u0000\u0000\u0000\u01fb\u0c6f\u0001\u0000"+ + "\u0000\u0000\u01fd\u0c79\u0001\u0000\u0000\u0000\u01ff\u0c7f\u0001\u0000"+ + "\u0000\u0000\u0201\u0c86\u0001\u0000\u0000\u0000\u0203\u0c8b\u0001\u0000"+ + "\u0000\u0000\u0205\u0c91\u0001\u0000\u0000\u0000\u0207\u0c9a\u0001\u0000"+ + "\u0000\u0000\u0209\u0c9f\u0001\u0000\u0000\u0000\u020b\u0ca7\u0001\u0000"+ + "\u0000\u0000\u020d\u0cad\u0001\u0000\u0000\u0000\u020f\u0cb5\u0001\u0000"+ + "\u0000\u0000\u0211\u0cc2\u0001\u0000\u0000\u0000\u0213\u0ccb\u0001\u0000"+ + "\u0000\u0000\u0215\u0cd1\u0001\u0000\u0000\u0000\u0217\u0cd8\u0001\u0000"+ + "\u0000\u0000\u0219\u0ce1\u0001\u0000\u0000\u0000\u021b\u0ce6\u0001\u0000"+ + "\u0000\u0000\u021d\u0cec\u0001\u0000\u0000\u0000\u021f\u0cf1\u0001\u0000"+ + "\u0000\u0000\u0221\u0cf6\u0001\u0000\u0000\u0000\u0223\u0cfc\u0001\u0000"+ + "\u0000\u0000\u0225\u0d01\u0001\u0000\u0000\u0000\u0227\u0d04\u0001\u0000"+ + "\u0000\u0000\u0229\u0d0c\u0001\u0000\u0000\u0000\u022b\u0d13\u0001\u0000"+ + "\u0000\u0000\u022d\u0d1a\u0001\u0000\u0000\u0000\u022f\u0d20\u0001\u0000"+ + "\u0000\u0000\u0231\u0d27\u0001\u0000\u0000\u0000\u0233\u0d2a\u0001\u0000"+ + "\u0000\u0000\u0235\u0d2e\u0001\u0000\u0000\u0000\u0237\u0d33\u0001\u0000"+ + "\u0000\u0000\u0239\u0d3c\u0001\u0000\u0000\u0000\u023b\u0d43\u0001\u0000"+ + "\u0000\u0000\u023d\u0d4b\u0001\u0000\u0000\u0000\u023f\u0d51\u0001\u0000"+ + "\u0000\u0000\u0241\u0d57\u0001\u0000\u0000\u0000\u0243\u0d5e\u0001\u0000"+ + "\u0000\u0000\u0245\u0d66\u0001\u0000\u0000\u0000\u0247\u0d70\u0001\u0000"+ + "\u0000\u0000\u0249\u0d78\u0001\u0000\u0000\u0000\u024b\u0d81\u0001\u0000"+ + "\u0000\u0000\u024d\u0d87\u0001\u0000\u0000\u0000\u024f\u0d91\u0001\u0000"+ + "\u0000\u0000\u0251\u0d99\u0001\u0000\u0000\u0000\u0253\u0da2\u0001\u0000"+ + "\u0000\u0000\u0255\u0dab\u0001\u0000\u0000\u0000\u0257\u0db1\u0001\u0000"+ + "\u0000\u0000\u0259\u0dbc\u0001\u0000\u0000\u0000\u025b\u0dc7\u0001\u0000"+ + "\u0000\u0000\u025d\u0dd1\u0001\u0000\u0000\u0000\u025f\u0dd9\u0001\u0000"+ + "\u0000\u0000\u0261\u0ddf\u0001\u0000\u0000\u0000\u0263\u0de5\u0001\u0000"+ + "\u0000\u0000\u0265\u0dea\u0001\u0000\u0000\u0000\u0267\u0df3\u0001\u0000"+ + "\u0000\u0000\u0269\u0dfb\u0001\u0000\u0000\u0000\u026b\u0e05\u0001\u0000"+ + "\u0000\u0000\u026d\u0e09\u0001\u0000\u0000\u0000\u026f\u0e11\u0001\u0000"+ + "\u0000\u0000\u0271\u0e19\u0001\u0000\u0000\u0000\u0273\u0e22\u0001\u0000"+ + "\u0000\u0000\u0275\u0e2a\u0001\u0000\u0000\u0000\u0277\u0e31\u0001\u0000"+ + "\u0000\u0000\u0279\u0e3c\u0001\u0000\u0000\u0000\u027b\u0e44\u0001\u0000"+ + "\u0000\u0000\u027d\u0e4c\u0001\u0000\u0000\u0000\u027f\u0e52\u0001\u0000"+ + "\u0000\u0000\u0281\u0e5a\u0001\u0000\u0000\u0000\u0283\u0e63\u0001\u0000"+ + "\u0000\u0000\u0285\u0e6b\u0001\u0000\u0000\u0000\u0287\u0e72\u0001\u0000"+ + "\u0000\u0000\u0289\u0e77\u0001\u0000\u0000\u0000\u028b\u0e80\u0001\u0000"+ + "\u0000\u0000\u028d\u0e85\u0001\u0000\u0000\u0000\u028f\u0e8a\u0001\u0000"+ + "\u0000\u0000\u0291\u0e94\u0001\u0000\u0000\u0000\u0293\u0e9b\u0001\u0000"+ + "\u0000\u0000\u0295\u0ea2\u0001\u0000\u0000\u0000\u0297\u0ea9\u0001\u0000"+ + "\u0000\u0000\u0299\u0eb0\u0001\u0000\u0000\u0000\u029b\u0eb9\u0001\u0000"+ + "\u0000\u0000\u029d\u0ec2\u0001\u0000\u0000\u0000\u029f\u0ecc\u0001\u0000"+ + "\u0000\u0000\u02a1\u0ed9\u0001\u0000\u0000\u0000\u02a3\u0ee0\u0001\u0000"+ + "\u0000\u0000\u02a5\u0ee8\u0001\u0000\u0000\u0000\u02a7\u0eec\u0001\u0000"+ + "\u0000\u0000\u02a9\u0ef2\u0001\u0000\u0000\u0000\u02ab\u0ef7\u0001\u0000"+ + "\u0000\u0000\u02ad\u0efe\u0001\u0000\u0000\u0000\u02af\u0f07\u0001\u0000"+ + "\u0000\u0000\u02b1\u0f0e\u0001\u0000\u0000\u0000\u02b3\u0f19\u0001\u0000"+ + "\u0000\u0000\u02b5\u0f1f\u0001\u0000\u0000\u0000\u02b7\u0f29\u0001\u0000"+ + "\u0000\u0000\u02b9\u0f34\u0001\u0000"; + private static final String _serializedATNSegment1 = + "\u0000\u0000\u02bb\u0f3a\u0001\u0000\u0000\u0000\u02bd\u0f41\u0001\u0000"+ + "\u0000\u0000\u02bf\u0f49\u0001\u0000\u0000\u0000\u02c1\u0f50\u0001\u0000"+ + "\u0000\u0000\u02c3\u0f56\u0001\u0000\u0000\u0000\u02c5\u0f5c\u0001\u0000"+ + "\u0000\u0000\u02c7\u0f63\u0001\u0000\u0000\u0000\u02c9\u0f6a\u0001\u0000"+ + "\u0000\u0000\u02cb\u0f72\u0001\u0000\u0000\u0000\u02cd\u0f7d\u0001\u0000"+ + "\u0000\u0000\u02cf\u0f82\u0001\u0000\u0000\u0000\u02d1\u0f8b\u0001\u0000"+ + "\u0000\u0000\u02d3\u0f95\u0001\u0000\u0000\u0000\u02d5\u0f9a\u0001\u0000"+ + "\u0000\u0000\u02d7\u0fa6\u0001\u0000\u0000\u0000\u02d9\u0fae\u0001\u0000"+ + "\u0000\u0000\u02db\u0fb7\u0001\u0000\u0000\u0000\u02dd\u0fbf\u0001\u0000"+ + "\u0000\u0000\u02df\u0fc4\u0001\u0000\u0000\u0000\u02e1\u0fca\u0001\u0000"+ + "\u0000\u0000\u02e3\u0fd4\u0001\u0000\u0000\u0000\u02e5\u0fe0\u0001\u0000"+ + "\u0000\u0000\u02e7\u0fec\u0001\u0000\u0000\u0000\u02e9\u0ff4\u0001\u0000"+ + "\u0000\u0000\u02eb\u0ffd\u0001\u0000\u0000\u0000\u02ed\u1006\u0001\u0000"+ + "\u0000\u0000\u02ef\u100c\u0001\u0000\u0000\u0000\u02f1\u1013\u0001\u0000"+ + "\u0000\u0000\u02f3\u101a\u0001\u0000\u0000\u0000\u02f5\u1020\u0001\u0000"+ + "\u0000\u0000\u02f7\u1029\u0001\u0000\u0000\u0000\u02f9\u1033\u0001\u0000"+ + "\u0000\u0000\u02fb\u103b\u0001\u0000\u0000\u0000\u02fd\u1043\u0001\u0000"+ + "\u0000\u0000\u02ff\u1048\u0001\u0000\u0000\u0000\u0301\u1051\u0001\u0000"+ + "\u0000\u0000\u0303\u105c\u0001\u0000\u0000\u0000\u0305\u1064\u0001\u0000"+ + "\u0000\u0000\u0307\u1069\u0001\u0000\u0000\u0000\u0309\u1071\u0001\u0000"+ + "\u0000\u0000\u030b\u1077\u0001\u0000\u0000\u0000\u030d\u107b\u0001\u0000"+ + "\u0000\u0000\u030f\u1080\u0001\u0000\u0000\u0000\u0311\u1084\u0001\u0000"+ + "\u0000\u0000\u0313\u1089\u0001\u0000\u0000\u0000\u0315\u1091\u0001\u0000"+ + "\u0000\u0000\u0317\u1098\u0001\u0000\u0000\u0000\u0319\u109c\u0001\u0000"+ + "\u0000\u0000\u031b\u10a4\u0001\u0000\u0000\u0000\u031d\u10a9\u0001\u0000"+ + "\u0000\u0000\u031f\u10b3\u0001\u0000\u0000\u0000\u0321\u10bc\u0001\u0000"+ + "\u0000\u0000\u0323\u10c0\u0001\u0000\u0000\u0000\u0325\u10c8\u0001\u0000"+ + "\u0000\u0000\u0327\u10cf\u0001\u0000\u0000\u0000\u0329\u10d7\u0001\u0000"+ + "\u0000\u0000\u032b\u10dd\u0001\u0000\u0000\u0000\u032d\u10e6\u0001\u0000"+ + "\u0000\u0000\u032f\u10ec\u0001\u0000\u0000\u0000\u0331\u10f0\u0001\u0000"+ + "\u0000\u0000\u0333\u10f8\u0001\u0000\u0000\u0000\u0335\u1101\u0001\u0000"+ + "\u0000\u0000\u0337\u1107\u0001\u0000\u0000\u0000\u0339\u1110\u0001\u0000"+ + "\u0000\u0000\u033b\u1116\u0001\u0000\u0000\u0000\u033d\u111b\u0001\u0000"+ + "\u0000\u0000\u033f\u1122\u0001\u0000\u0000\u0000\u0341\u112a\u0001\u0000"+ + "\u0000\u0000\u0343\u1132\u0001\u0000\u0000\u0000\u0345\u113b\u0001\u0000"+ + "\u0000\u0000\u0347\u1145\u0001\u0000\u0000\u0000\u0349\u114a\u0001\u0000"+ + "\u0000\u0000\u034b\u114e\u0001\u0000\u0000\u0000\u034d\u1154\u0001\u0000"+ + "\u0000\u0000\u034f\u115d\u0001\u0000\u0000\u0000\u0351\u1167\u0001\u0000"+ + "\u0000\u0000\u0353\u116c\u0001\u0000\u0000\u0000\u0355\u1176\u0001\u0000"+ + "\u0000\u0000\u0357\u117c\u0001\u0000\u0000\u0000\u0359\u1181\u0001\u0000"+ + "\u0000\u0000\u035b\u1188\u0001\u0000\u0000\u0000\u035d\u1190\u0001\u0000"+ + "\u0000\u0000\u035f\u119e\u0001\u0000\u0000\u0000\u0361\u11a9\u0001\u0000"+ + "\u0000\u0000\u0363\u11b0\u0001\u0000\u0000\u0000\u0365\u11c3\u0001\u0000"+ + "\u0000\u0000\u0367\u11df\u0001\u0000\u0000\u0000\u0369\u11fa\u0001\u0000"+ + "\u0000\u0000\u036b\u1200\u0001\u0000\u0000\u0000\u036d\u120d\u0001\u0000"+ + "\u0000\u0000\u036f\u1217\u0001\u0000\u0000\u0000\u0371\u1222\u0001\u0000"+ + "\u0000\u0000\u0373\u122c\u0001\u0000\u0000\u0000\u0375\u1236\u0001\u0000"+ + "\u0000\u0000\u0377\u123f\u0001\u0000\u0000\u0000\u0379\u1245\u0001\u0000"+ + "\u0000\u0000\u037b\u124d\u0001\u0000\u0000\u0000\u037d\u125a\u0001\u0000"+ + "\u0000\u0000\u037f\u125f\u0001\u0000\u0000\u0000\u0381\u1267\u0001\u0000"+ + "\u0000\u0000\u0383\u126e\u0001\u0000\u0000\u0000\u0385\u1275\u0001\u0000"+ + "\u0000\u0000\u0387\u1280\u0001\u0000\u0000\u0000\u0389\u128a\u0001\u0000"+ + "\u0000\u0000\u038b\u1291\u0001\u0000\u0000\u0000\u038d\u1298\u0001\u0000"+ + "\u0000\u0000\u038f\u12a0\u0001\u0000\u0000\u0000\u0391\u12a8\u0001\u0000"+ + "\u0000\u0000\u0393\u12b2\u0001\u0000\u0000\u0000\u0395\u12b9\u0001\u0000"+ + "\u0000\u0000\u0397\u12c0\u0001\u0000\u0000\u0000\u0399\u12c7\u0001\u0000"+ + "\u0000\u0000\u039b\u12d3\u0001\u0000\u0000\u0000\u039d\u12d7\u0001\u0000"+ + "\u0000\u0000\u039f\u12db\u0001\u0000\u0000\u0000\u03a1\u12e1\u0001\u0000"+ + "\u0000\u0000\u03a3\u12ee\u0001\u0000\u0000\u0000\u03a5\u12fa\u0001\u0000"+ + "\u0000\u0000\u03a7\u12fe\u0001\u0000\u0000\u0000\u03a9\u1302\u0001\u0000"+ + "\u0000\u0000\u03ab\u130b\u0001\u0000\u0000\u0000\u03ad\u1313\u0001\u0000"+ + "\u0000\u0000\u03af\u131e\u0001\u0000\u0000\u0000\u03b1\u1324\u0001\u0000"+ + "\u0000\u0000\u03b3\u132c\u0001\u0000\u0000\u0000\u03b5\u1335\u0001\u0000"+ + "\u0000\u0000\u03b7\u1339\u0001\u0000\u0000\u0000\u03b9\u1341\u0001\u0000"+ + "\u0000\u0000\u03bb\u134c\u0001\u0000\u0000\u0000\u03bd\u1355\u0001\u0000"+ + "\u0000\u0000\u03bf\u135a\u0001\u0000\u0000\u0000\u03c1\u1361\u0001\u0000"+ + "\u0000\u0000\u03c3\u1366\u0001\u0000\u0000\u0000\u03c5\u136d\u0001\u0000"+ + "\u0000\u0000\u03c7\u1372\u0001\u0000\u0000\u0000\u03c9\u137b\u0001\u0000"+ + "\u0000\u0000\u03cb\u1380\u0001\u0000\u0000\u0000\u03cd\u138c\u0001\u0000"+ + "\u0000\u0000\u03cf\u1397\u0001\u0000\u0000\u0000\u03d1\u13a0\u0001\u0000"+ + "\u0000\u0000\u03d3\u13a8\u0001\u0000\u0000\u0000\u03d5\u13b6\u0001\u0000"+ + "\u0000\u0000\u03d7\u13be\u0001\u0000\u0000\u0000\u03d9\u13c9\u0001\u0000"+ + "\u0000\u0000\u03db\u13d0\u0001\u0000\u0000\u0000\u03dd\u13d7\u0001\u0000"+ + "\u0000\u0000\u03df\u13de\u0001\u0000\u0000\u0000\u03e1\u13e5\u0001\u0000"+ + "\u0000\u0000\u03e3\u13e9\u0001\u0000\u0000\u0000\u03e5\u13ed\u0001\u0000"+ + "\u0000\u0000\u03e7\u13f2\u0001\u0000\u0000\u0000\u03e9\u13f7\u0001\u0000"+ + "\u0000\u0000\u03eb\u13ff\u0001\u0000\u0000\u0000\u03ed\u1405\u0001\u0000"+ + "\u0000\u0000\u03ef\u140f\u0001\u0000\u0000\u0000\u03f1\u1414\u0001\u0000"+ + "\u0000\u0000\u03f3\u1428\u0001\u0000\u0000\u0000\u03f5\u143a\u0001\u0000"+ + "\u0000\u0000\u03f7\u1440\u0001\u0000\u0000\u0000\u03f9\u144d\u0001\u0000"+ + "\u0000\u0000\u03fb\u1458\u0001\u0000\u0000\u0000\u03fd\u145e\u0001\u0000"+ + "\u0000\u0000\u03ff\u1467\u0001\u0000\u0000\u0000\u0401\u146f\u0001\u0000"+ + "\u0000\u0000\u0403\u1473\u0001\u0000\u0000\u0000\u0405\u147f\u0001\u0000"+ + "\u0000\u0000\u0407\u1487\u0001\u0000\u0000\u0000\u0409\u148d\u0001\u0000"+ + "\u0000\u0000\u040b\u1493\u0001\u0000\u0000\u0000\u040d\u149b\u0001\u0000"+ + "\u0000\u0000\u040f\u14a3\u0001\u0000\u0000\u0000\u0411\u14a9\u0001\u0000"+ + "\u0000\u0000\u0413\u14ae\u0001\u0000\u0000\u0000\u0415\u14b5\u0001\u0000"+ + "\u0000\u0000\u0417\u14bb\u0001\u0000\u0000\u0000\u0419\u14c1\u0001\u0000"+ + "\u0000\u0000\u041b\u14ca\u0001\u0000\u0000\u0000\u041d\u14d0\u0001\u0000"+ + "\u0000\u0000\u041f\u14d4\u0001\u0000\u0000\u0000\u0421\u14d9\u0001\u0000"+ + "\u0000\u0000\u0423\u14e0\u0001\u0000\u0000\u0000\u0425\u14e8\u0001\u0000"+ + "\u0000\u0000\u0427\u14f2\u0001\u0000\u0000\u0000\u0429\u14f9\u0001\u0000"+ + "\u0000\u0000\u042b\u14fe\u0001\u0000\u0000\u0000\u042d\u1503\u0001\u0000"+ + "\u0000\u0000\u042f\u1507\u0001\u0000\u0000\u0000\u0431\u150c\u0001\u0000"+ + "\u0000\u0000\u0433\u1511\u0001\u0000\u0000\u0000\u0435\u1519\u0001\u0000"+ + "\u0000\u0000\u0437\u1521\u0001\u0000\u0000\u0000\u0439\u1525\u0001\u0000"+ + "\u0000\u0000\u043b\u1529\u0001\u0000\u0000\u0000\u043d\u1533\u0001\u0000"+ + "\u0000\u0000\u043f\u1539\u0001\u0000\u0000\u0000\u0441\u153d\u0001\u0000"+ + "\u0000\u0000\u0443\u1541\u0001\u0000\u0000\u0000\u0445\u1544\u0001\u0000"+ + "\u0000\u0000\u0447\u154a\u0001\u0000\u0000\u0000\u0449\u1554\u0001\u0000"+ + "\u0000\u0000\u044b\u1558\u0001\u0000\u0000\u0000\u044d\u155b\u0001\u0000"+ + "\u0000\u0000\u044f\u1561\u0001\u0000\u0000\u0000\u0451\u1569\u0001\u0000"+ + "\u0000\u0000\u0453\u156f\u0001\u0000\u0000\u0000\u0455\u1575\u0001\u0000"+ + "\u0000\u0000\u0457\u157a\u0001\u0000\u0000\u0000\u0459\u157f\u0001\u0000"+ + "\u0000\u0000\u045b\u158a\u0001\u0000\u0000\u0000\u045d\u1590\u0001\u0000"+ + "\u0000\u0000\u045f\u159d\u0001\u0000\u0000\u0000\u0461\u15a4\u0001\u0000"+ + "\u0000\u0000\u0463\u15ac\u0001\u0000\u0000\u0000\u0465\u15b1\u0001\u0000"+ + "\u0000\u0000\u0467\u15b7\u0001\u0000\u0000\u0000\u0469\u15bc\u0001\u0000"+ + "\u0000\u0000\u046b\u15c2\u0001\u0000\u0000\u0000\u046d\u15c7\u0001\u0000"+ + "\u0000\u0000\u046f\u15cd\u0001\u0000\u0000\u0000\u0471\u15d3\u0001\u0000"+ + "\u0000\u0000\u0473\u15da\u0001\u0000\u0000\u0000\u0475\u15de\u0001\u0000"+ + "\u0000\u0000\u0477\u15e3\u0001\u0000\u0000\u0000\u0479\u15e7\u0001\u0000"+ + "\u0000\u0000\u047b\u15ec\u0001\u0000\u0000\u0000\u047d\u15f0\u0001\u0000"+ + "\u0000\u0000\u047f\u15f5\u0001\u0000\u0000\u0000\u0481\u15f9\u0001\u0000"+ + "\u0000\u0000\u0483\u15fe\u0001\u0000\u0000\u0000\u0485\u1603\u0001\u0000"+ + "\u0000\u0000\u0487\u1608\u0001\u0000\u0000\u0000\u0489\u160d\u0001\u0000"+ + "\u0000\u0000\u048b\u1613\u0001\u0000\u0000\u0000\u048d\u1619\u0001\u0000"+ + "\u0000\u0000\u048f\u161f\u0001\u0000\u0000\u0000\u0491\u162a\u0001\u0000"+ + "\u0000\u0000\u0493\u1636\u0001\u0000\u0000\u0000\u0495\u1647\u0001\u0000"+ + "\u0000\u0000\u0497\u164d\u0001\u0000\u0000\u0000\u0499\u165a\u0001\u0000"+ + "\u0000\u0000\u049b\u1660\u0001\u0000\u0000\u0000\u049d\u1666\u0001\u0000"+ + "\u0000\u0000\u049f\u166c\u0001\u0000\u0000\u0000\u04a1\u1670\u0001\u0000"+ + "\u0000\u0000\u04a3\u1677\u0001\u0000\u0000\u0000\u04a5\u1681\u0001\u0000"+ + "\u0000\u0000\u04a7\u1688\u0001\u0000\u0000\u0000\u04a9\u1690\u0001\u0000"+ + "\u0000\u0000\u04ab\u1697\u0001\u0000\u0000\u0000\u04ad\u169c\u0001\u0000"+ + "\u0000\u0000\u04af\u16a2\u0001\u0000\u0000\u0000\u04b1\u16a6\u0001\u0000"+ + "\u0000\u0000\u04b3\u16b2\u0001\u0000\u0000\u0000\u04b5\u16c5\u0001\u0000"+ + "\u0000\u0000\u04b7\u16d1\u0001\u0000\u0000\u0000\u04b9\u16df\u0001\u0000"+ + "\u0000\u0000\u04bb\u16ee\u0001\u0000\u0000\u0000\u04bd\u16fb\u0001\u0000"+ + "\u0000\u0000\u04bf\u1708\u0001\u0000\u0000\u0000\u04c1\u1714\u0001\u0000"+ + "\u0000\u0000\u04c3\u1721\u0001\u0000\u0000\u0000\u04c5\u1730\u0001\u0000"+ + "\u0000\u0000\u04c7\u173f\u0001\u0000\u0000\u0000\u04c9\u1755\u0001\u0000"+ + "\u0000\u0000\u04cb\u176b\u0001\u0000\u0000\u0000\u04cd\u1779\u0001\u0000"+ + "\u0000\u0000\u04cf\u1780\u0001\u0000\u0000\u0000\u04d1\u1785\u0001\u0000"+ + "\u0000\u0000\u04d3\u178b\u0001\u0000\u0000\u0000\u04d5\u1796\u0001\u0000"+ + "\u0000\u0000\u04d7\u17a2\u0001\u0000\u0000\u0000\u04d9\u17b2\u0001\u0000"+ + "\u0000\u0000\u04db\u17c2\u0001\u0000\u0000\u0000\u04dd\u17c9\u0001\u0000"+ + "\u0000\u0000\u04df\u17d0\u0001\u0000\u0000\u0000\u04e1\u17d9\u0001\u0000"+ + "\u0000\u0000\u04e3\u17e0\u0001\u0000\u0000\u0000\u04e5\u17ea\u0001\u0000"+ + "\u0000\u0000\u04e7\u17f1\u0001\u0000\u0000\u0000\u04e9\u17f5\u0001\u0000"+ + "\u0000\u0000\u04eb\u1805\u0001\u0000\u0000\u0000\u04ed\u180e\u0001\u0000"+ + "\u0000\u0000\u04ef\u1818\u0001\u0000\u0000\u0000\u04f1\u1823\u0001\u0000"+ + "\u0000\u0000\u04f3\u182c\u0001\u0000\u0000\u0000\u04f5\u1839\u0001\u0000"+ + "\u0000\u0000\u04f7\u1847\u0001\u0000\u0000\u0000\u04f9\u1858\u0001\u0000"+ + "\u0000\u0000\u04fb\u1862\u0001\u0000\u0000\u0000\u04fd\u1870\u0001\u0000"+ + "\u0000\u0000\u04ff\u187a\u0001\u0000\u0000\u0000\u0501\u1889\u0001\u0000"+ + "\u0000\u0000\u0503\u189a\u0001\u0000\u0000\u0000\u0505\u189e\u0001\u0000"+ + "\u0000\u0000\u0507\u18b2\u0001\u0000\u0000\u0000\u0509\u18bc\u0001\u0000"+ + "\u0000\u0000\u050b\u18d2\u0001\u0000\u0000\u0000\u050d\u18df\u0001\u0000"+ + "\u0000\u0000\u050f\u18e7\u0001\u0000\u0000\u0000\u0511\u18ef\u0001\u0000"+ + "\u0000\u0000\u0513\u18f9\u0001\u0000\u0000\u0000\u0515\u1906\u0001\u0000"+ + "\u0000\u0000\u0517\u190a\u0001\u0000\u0000\u0000\u0519\u190e\u0001\u0000"+ + "\u0000\u0000\u051b\u1910\u0001\u0000\u0000\u0000\u051d\u1913\u0001\u0000"+ + "\u0000\u0000\u051f\u191c\u0001\u0000\u0000\u0000\u0521\u191f\u0001\u0000"+ + "\u0000\u0000\u0523\u1928\u0001\u0000\u0000\u0000\u0525\u192c\u0001\u0000"+ + "\u0000\u0000\u0527\u1930\u0001\u0000\u0000\u0000\u0529\u1934\u0001\u0000"+ + "\u0000\u0000\u052b\u1938\u0001\u0000\u0000\u0000\u052d\u193b\u0001\u0000"+ + "\u0000\u0000\u052f\u1944\u0001\u0000\u0000\u0000\u0531\u194a\u0001\u0000"+ + "\u0000\u0000\u0533\u194d\u0001\u0000\u0000\u0000\u0535\u1951\u0001\u0000"+ + "\u0000\u0000\u0537\u195a\u0001\u0000\u0000\u0000\u0539\u1961\u0001\u0000"+ + "\u0000\u0000\u053b\u1964\u0001\u0000\u0000\u0000\u053d\u196c\u0001\u0000"+ + "\u0000\u0000\u053f\u196f\u0001\u0000\u0000\u0000\u0541\u1972\u0001\u0000"+ + "\u0000\u0000\u0543\u1975\u0001\u0000\u0000\u0000\u0545\u197d\u0001\u0000"+ + "\u0000\u0000\u0547\u1980\u0001\u0000\u0000\u0000\u0549\u1983\u0001\u0000"+ + "\u0000\u0000\u054b\u1985\u0001\u0000\u0000\u0000\u054d\u19a7\u0001\u0000"+ + "\u0000\u0000\u054f\u19aa\u0001\u0000\u0000\u0000\u0551\u19ae\u0001\u0000"+ + "\u0000\u0000\u0553\u19b6\u0001\u0000\u0000\u0000\u0555\u19c6\u0001\u0000"+ + "\u0000\u0000\u0557\u19d1\u0001\u0000\u0000\u0000\u0559\u19d5\u0001\u0000"+ + "\u0000\u0000\u055b\u19e0\u0001\u0000\u0000\u0000\u055d\u1a07\u0001\u0000"+ + "\u0000\u0000\u055f\u1a3a\u0001\u0000\u0000\u0000\u0561\u1a52\u0001\u0000"+ + "\u0000\u0000\u0563\u1a55\u0001\u0000\u0000\u0000\u0565\u1a57\u0001\u0000"+ + "\u0000\u0000\u0567\u1a5c\u0001\u0000\u0000\u0000\u0569\u1a7b\u0001\u0000"+ + "\u0000\u0000\u056b\u1a7e\u0001\u0000\u0000\u0000\u056d\u1a83\u0001\u0000"+ + "\u0000\u0000\u056f\u1a90\u0001\u0000\u0000\u0000\u0571\u1a93\u0001\u0000"+ + "\u0000\u0000\u0573\u1a98\u0001\u0000\u0000\u0000\u0575\u1a9e\u0001\u0000"+ + "\u0000\u0000\u0577\u1aa3\u0001\u0000\u0000\u0000\u0579\u1aa8\u0001\u0000"+ + "\u0000\u0000\u057b\u1aad\u0001\u0000\u0000\u0000\u057d\u1ab2\u0001\u0000"+ + "\u0000\u0000\u057f\u1ac3\u0001\u0000\u0000\u0000\u0581\u1ac5\u0001\u0000"+ + "\u0000\u0000\u0583\u0584\u0005$\u0000\u0000\u0584\u0006\u0001\u0000\u0000"+ + "\u0000\u0585\u0586\u0005(\u0000\u0000\u0586\b\u0001\u0000\u0000\u0000"+ + "\u0587\u0588\u0005)\u0000\u0000\u0588\n\u0001\u0000\u0000\u0000\u0589"+ + "\u058a\u0005[\u0000\u0000\u058a\f\u0001\u0000\u0000\u0000\u058b\u058c"+ + "\u0005]\u0000\u0000\u058c\u000e\u0001\u0000\u0000\u0000\u058d\u058e\u0005"+ + ",\u0000\u0000\u058e\u0010\u0001\u0000\u0000\u0000\u058f\u0590\u0005;\u0000"+ + "\u0000\u0590\u0012\u0001\u0000\u0000\u0000\u0591\u0592\u0005:\u0000\u0000"+ + "\u0592\u0014\u0001\u0000\u0000\u0000\u0593\u0594\u0005*\u0000\u0000\u0594"+ + "\u0016\u0001\u0000\u0000\u0000\u0595\u0596\u0005=\u0000\u0000\u0596\u0018"+ + "\u0001\u0000\u0000\u0000\u0597\u0598\u0005.\u0000\u0000\u0598\u001a\u0001"+ + "\u0000\u0000\u0000\u0599\u059a\u0005+\u0000\u0000\u059a\u001c\u0001\u0000"+ + "\u0000\u0000\u059b\u059c\u0005-\u0000\u0000\u059c\u001e\u0001\u0000\u0000"+ + "\u0000\u059d\u059e\u0005/\u0000\u0000\u059e \u0001\u0000\u0000\u0000\u059f"+ + "\u05a0\u0005^\u0000\u0000\u05a0\"\u0001\u0000\u0000\u0000\u05a1\u05a2"+ + "\u0005<\u0000\u0000\u05a2$\u0001\u0000\u0000\u0000\u05a3\u05a4\u0005>"+ + "\u0000\u0000\u05a4&\u0001\u0000\u0000\u0000\u05a5\u05a6\u0005<\u0000\u0000"+ + "\u05a6\u05a7\u0005<\u0000\u0000\u05a7(\u0001\u0000\u0000\u0000\u05a8\u05a9"+ + "\u0005>\u0000\u0000\u05a9\u05aa\u0005>\u0000\u0000\u05aa*\u0001\u0000"+ + "\u0000\u0000\u05ab\u05ac\u0005:\u0000\u0000\u05ac\u05ad\u0005=\u0000\u0000"+ + "\u05ad,\u0001\u0000\u0000\u0000\u05ae\u05af\u0005<\u0000\u0000\u05af\u05b0"+ + "\u0005=\u0000\u0000\u05b0.\u0001\u0000\u0000\u0000\u05b1\u05b2\u0005="+ + "\u0000\u0000\u05b2\u05b3\u0005>\u0000\u0000\u05b30\u0001\u0000\u0000\u0000"+ + "\u05b4\u05b5\u0005>\u0000\u0000\u05b5\u05b6\u0005=\u0000\u0000\u05b62"+ + "\u0001\u0000\u0000\u0000\u05b7\u05b8\u0005.\u0000\u0000\u05b8\u05b9\u0005"+ + ".\u0000\u0000\u05b94\u0001\u0000\u0000\u0000\u05ba\u05bb\u0005<\u0000"+ + "\u0000\u05bb\u05bc\u0005>\u0000\u0000\u05bc6\u0001\u0000\u0000\u0000\u05bd"+ + "\u05be\u0005:\u0000\u0000\u05be\u05bf\u0005:\u0000\u0000\u05bf8\u0001"+ + "\u0000\u0000\u0000\u05c0\u05c1\u0005%\u0000\u0000\u05c1:\u0001\u0000\u0000"+ + "\u0000\u05c2\u05c4\u0005$\u0000\u0000\u05c3\u05c5\u0007\u0000\u0000\u0000"+ + "\u05c4\u05c3\u0001\u0000\u0000\u0000\u05c5\u05c6\u0001\u0000\u0000\u0000"+ + "\u05c6\u05c4\u0001\u0000\u0000\u0000\u05c6\u05c7\u0001\u0000\u0000\u0000"+ + "\u05c7<\u0001\u0000\u0000\u0000\u05c8\u05d8\u0003A\u001e\u0000\u05c9\u05cd"+ + "\u0005+\u0000\u0000\u05ca\u05cb\u0005-\u0000\u0000\u05cb\u05cd\u0004\u001c"+ + "\u0000\u0000\u05cc\u05c9\u0001\u0000\u0000\u0000\u05cc\u05ca\u0001\u0000"+ + "\u0000\u0000\u05cd\u05ce\u0001\u0000\u0000\u0000\u05ce\u05cc\u0001\u0000"+ + "\u0000\u0000\u05ce\u05cf\u0001\u0000\u0000\u0000\u05cf\u05d3\u0001\u0000"+ + "\u0000\u0000\u05d0\u05d4\u0003A\u001e\u0000\u05d1\u05d2\u0005/\u0000\u0000"+ + "\u05d2\u05d4\u0004\u001c\u0001\u0000\u05d3\u05d0\u0001\u0000\u0000\u0000"+ + "\u05d3\u05d1\u0001\u0000\u0000\u0000\u05d4\u05d8\u0001\u0000\u0000\u0000"+ + "\u05d5\u05d6\u0005/\u0000\u0000\u05d6\u05d8\u0004\u001c\u0002\u0000\u05d7"+ + "\u05c8\u0001\u0000\u0000\u0000\u05d7\u05cc\u0001\u0000\u0000\u0000\u05d7"+ + "\u05d5\u0001\u0000\u0000\u0000\u05d8\u05d9\u0001\u0000\u0000\u0000\u05d9"+ + "\u05d7\u0001\u0000\u0000\u0000\u05d9\u05da\u0001\u0000\u0000\u0000\u05da"+ + "\u05dd\u0001\u0000\u0000\u0000\u05db\u05dd\u0007\u0001\u0000\u0000\u05dc"+ + "\u05d7\u0001\u0000\u0000\u0000\u05dc\u05db\u0001\u0000\u0000\u0000\u05dd"+ + "\u05de\u0001\u0000\u0000\u0000\u05de\u05df\u0006\u001c\u0000\u0000\u05df"+ + ">\u0001\u0000\u0000\u0000\u05e0\u05e6\u0003C\u001f\u0000\u05e1\u05e2\u0005"+ + "-\u0000\u0000\u05e2\u05e6\u0004\u001d\u0003\u0000\u05e3\u05e4\u0005/\u0000"+ + "\u0000\u05e4\u05e6\u0004\u001d\u0004\u0000\u05e5\u05e0\u0001\u0000\u0000"+ + "\u0000\u05e5\u05e1\u0001\u0000\u0000\u0000\u05e5\u05e3\u0001\u0000\u0000"+ + "\u0000\u05e6\u05e9\u0001\u0000\u0000\u0000\u05e7\u05e5\u0001\u0000\u0000"+ + "\u0000\u05e7\u05e8\u0001\u0000\u0000\u0000\u05e8\u05ea\u0001\u0000\u0000"+ + "\u0000\u05e9\u05e7\u0001\u0000\u0000\u0000\u05ea\u05ec\u0003E \u0000\u05eb"+ + "\u05ed\u0003=\u001c\u0000\u05ec\u05eb\u0001\u0000\u0000\u0000\u05ec\u05ed"+ + "\u0001\u0000\u0000\u0000\u05ed\u05f1\u0001\u0000\u0000\u0000\u05ee\u05f2"+ + "\u0005+\u0000\u0000\u05ef\u05f0\u0005-\u0000\u0000\u05f0\u05f2\u0004\u001d"+ + "\u0005\u0000\u05f1\u05ee\u0001\u0000\u0000\u0000\u05f1\u05ef\u0001\u0000"+ + "\u0000\u0000\u05f2\u05f3\u0001\u0000\u0000\u0000\u05f3\u05f1\u0001\u0000"+ + "\u0000\u0000\u05f3\u05f4\u0001\u0000\u0000\u0000\u05f4\u05f5\u0001\u0000"+ + "\u0000\u0000\u05f5\u05f6\u0006\u001d\u0001\u0000\u05f6@\u0001\u0000\u0000"+ + "\u0000\u05f7\u05f8\u0007\u0002\u0000\u0000\u05f8B\u0001\u0000\u0000\u0000"+ + "\u05f9\u05fa\u0007\u0003\u0000\u0000\u05faD\u0001\u0000\u0000\u0000\u05fb"+ + "\u05fc\u0007\u0004\u0000\u0000\u05fcF\u0001\u0000\u0000\u0000\u05fd\u05fe"+ + "\u0007\u0005\u0000\u0000\u05fe\u05ff\u0007\u0006\u0000\u0000\u05ff\u0600"+ + "\u0007\u0006\u0000\u0000\u0600H\u0001\u0000\u0000\u0000\u0601\u0602\u0007"+ + "\u0005\u0000\u0000\u0602\u0603\u0007\u0007\u0000\u0000\u0603\u0604\u0007"+ + "\u0005\u0000\u0000\u0604\u0605\u0007\u0006\u0000\u0000\u0605\u0606\u0007"+ + "\b\u0000\u0000\u0606\u0607\u0007\t\u0000\u0000\u0607\u0608\u0007\n\u0000"+ + "\u0000\u0608J\u0001\u0000\u0000\u0000\u0609\u060a\u0007\u0005\u0000\u0000"+ + "\u060a\u060b\u0007\u0007\u0000\u0000\u060b\u060c\u0007\u0005\u0000\u0000"+ + "\u060c\u060d\u0007\u0006\u0000\u0000\u060d\u060e\u0007\b\u0000\u0000\u060e"+ + "\u060f\u0007\u000b\u0000\u0000\u060f\u0610\u0007\n\u0000\u0000\u0610L"+ + "\u0001\u0000\u0000\u0000\u0611\u0612\u0007\u0005\u0000\u0000\u0612\u0613"+ + "\u0007\u0007\u0000\u0000\u0613\u0614\u0007\f\u0000\u0000\u0614N\u0001"+ + "\u0000\u0000\u0000\u0615\u0616\u0007\u0005\u0000\u0000\u0616\u0617\u0007"+ + "\u0007\u0000\u0000\u0617\u0618\u0007\b\u0000\u0000\u0618P\u0001\u0000"+ + "\u0000\u0000\u0619\u061a\u0007\u0005\u0000\u0000\u061a\u061b\u0007\r\u0000"+ + "\u0000\u061b\u061c\u0007\r\u0000\u0000\u061c\u061d\u0007\u0005\u0000\u0000"+ + "\u061d\u061e\u0007\b\u0000\u0000\u061eR\u0001\u0000\u0000\u0000\u061f"+ + "\u0620\u0007\u0005\u0000\u0000\u0620\u0621\u0007\t\u0000\u0000\u0621T"+ + "\u0001\u0000\u0000\u0000\u0622\u0623\u0007\u0005\u0000\u0000\u0623\u0624"+ + "\u0007\t\u0000\u0000\u0624\u0625\u0007\u000e\u0000\u0000\u0625V\u0001"+ + "\u0000\u0000\u0000\u0626\u0627\u0007\u0005\u0000\u0000\u0627\u0628\u0007"+ + "\t\u0000\u0000\u0628\u0629\u0007\b\u0000\u0000\u0629\u062a\u0007\u000f"+ + "\u0000\u0000\u062a\u062b\u0007\u000f\u0000\u0000\u062b\u062c\u0007\n\u0000"+ + "\u0000\u062c\u062d\u0007\u0010\u0000\u0000\u062d\u062e\u0007\r\u0000\u0000"+ + "\u062e\u062f\u0007\u0011\u0000\u0000\u062f\u0630\u0007\u000e\u0000\u0000"+ + "\u0630X\u0001\u0000\u0000\u0000\u0631\u0632\u0007\u0012\u0000\u0000\u0632"+ + "\u0633\u0007\u0013\u0000\u0000\u0633\u0634\u0007\u0010\u0000\u0000\u0634"+ + "\u0635\u0007\u0014\u0000\u0000\u0635Z\u0001\u0000\u0000\u0000\u0636\u0637"+ + "\u0007\u000e\u0000\u0000\u0637\u0638\u0007\u0005\u0000\u0000\u0638\u0639"+ + "\u0007\t\u0000\u0000\u0639\u063a\u0007\n\u0000\u0000\u063a\\\u0001\u0000"+ + "\u0000\u0000\u063b\u063c\u0007\u000e\u0000\u0000\u063c\u063d\u0007\u0005"+ + "\u0000\u0000\u063d\u063e\u0007\t\u0000\u0000\u063e\u063f\u0007\u0010\u0000"+ + "\u0000\u063f^\u0001\u0000\u0000\u0000\u0640\u0641\u0007\u000e\u0000\u0000"+ + "\u0641\u0642\u0007\u0014\u0000\u0000\u0642\u0643\u0007\n\u0000\u0000\u0643"+ + "\u0644\u0007\u000e\u0000\u0000\u0644\u0645\u0007\u0015\u0000\u0000\u0645"+ + "`\u0001\u0000\u0000\u0000\u0646\u0647\u0007\u000e\u0000\u0000\u0647\u0648"+ + "\u0007\u0013\u0000\u0000\u0648\u0649\u0007\u0006\u0000\u0000\u0649\u064a"+ + "\u0007\u0006\u0000\u0000\u064a\u064b\u0007\u0005\u0000\u0000\u064b\u064c"+ + "\u0007\u0010\u0000\u0000\u064c\u064d\u0007\n\u0000\u0000\u064db\u0001"+ + "\u0000\u0000\u0000\u064e\u064f\u0007\u000e\u0000\u0000\u064f\u0650\u0007"+ + "\u0013\u0000\u0000\u0650\u0651\u0007\u0006\u0000\u0000\u0651\u0652\u0007"+ + "\u0016\u0000\u0000\u0652\u0653\u0007\u000f\u0000\u0000\u0653\u0654\u0007"+ + "\u0007\u0000\u0000\u0654d\u0001\u0000\u0000\u0000\u0655\u0656\u0007\u000e"+ + "\u0000\u0000\u0656\u0657\u0007\u0013\u0000\u0000\u0657\u0658\u0007\u0007"+ + "\u0000\u0000\u0658\u0659\u0007\t\u0000\u0000\u0659\u065a\u0007\u0010\u0000"+ + "\u0000\u065a\u065b\u0007\r\u0000\u0000\u065b\u065c\u0007\u0005\u0000\u0000"+ + "\u065c\u065d\u0007\u0011\u0000\u0000\u065d\u065e\u0007\u0007\u0000\u0000"+ + "\u065e\u065f\u0007\u0010\u0000\u0000\u065ff\u0001\u0000\u0000\u0000\u0660"+ + "\u0661\u0007\u000e\u0000\u0000\u0661\u0662\u0007\r\u0000\u0000\u0662\u0663"+ + "\u0007\n\u0000\u0000\u0663\u0664\u0007\u0005\u0000\u0000\u0664\u0665\u0007"+ + "\u0010\u0000\u0000\u0665\u0666\u0007\n\u0000\u0000\u0666h\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\u000e\u0000\u0000\u0670\u0671\u0007\u0005\u0000\u0000\u0671"+ + "\u0672\u0007\u0010\u0000\u0000\u0672\u0673\u0007\u0005\u0000\u0000\u0673"+ + "\u0674\u0007\u0006\u0000\u0000\u0674\u0675\u0007\u0013\u0000\u0000\u0675"+ + "\u0676\u0007\u0017\u0000\u0000\u0676j\u0001\u0000\u0000\u0000\u0677\u0678"+ + "\u0007\u000e\u0000\u0000\u0678\u0679\u0007\u0016\u0000\u0000\u0679\u067a"+ + "\u0007\r\u0000\u0000\u067a\u067b\u0007\r\u0000\u0000\u067b\u067c\u0007"+ + "\n\u0000\u0000\u067c\u067d\u0007\u0007\u0000\u0000\u067d\u067e\u0007\u0010"+ + "\u0000\u0000\u067e\u067f\u0005_\u0000\u0000\u067f\u0680\u0007\f\u0000"+ + "\u0000\u0680\u0681\u0007\u0005\u0000\u0000\u0681\u0682\u0007\u0010\u0000"+ + "\u0000\u0682\u0683\u0007\n\u0000\u0000\u0683l\u0001\u0000\u0000\u0000"+ + "\u0684\u0685\u0007\u000e\u0000\u0000\u0685\u0686\u0007\u0016\u0000\u0000"+ + "\u0686\u0687\u0007\r\u0000\u0000\u0687\u0688\u0007\r\u0000\u0000\u0688"+ + "\u0689\u0007\n\u0000\u0000\u0689\u068a\u0007\u0007\u0000\u0000\u068a\u068b"+ + "\u0007\u0010\u0000\u0000\u068b\u068c\u0005_\u0000\u0000\u068c\u068d\u0007"+ + "\r\u0000\u0000\u068d\u068e\u0007\u0013\u0000\u0000\u068e\u068f\u0007\u0006"+ + "\u0000\u0000\u068f\u0690\u0007\n\u0000\u0000\u0690n\u0001\u0000\u0000"+ + "\u0000\u0691\u0692\u0007\u000e\u0000\u0000\u0692\u0693\u0007\u0016\u0000"+ + "\u0000\u0693\u0694\u0007\r\u0000\u0000\u0694\u0695\u0007\r\u0000\u0000"+ + "\u0695\u0696\u0007\n\u0000\u0000\u0696\u0697\u0007\u0007\u0000\u0000\u0697"+ + "\u0698\u0007\u0010\u0000\u0000\u0698\u0699\u0005_\u0000\u0000\u0699\u069a"+ + "\u0007\u0010\u0000\u0000\u069a\u069b\u0007\u0011\u0000\u0000\u069b\u069c"+ + "\u0007\u000f\u0000\u0000\u069c\u069d\u0007\n\u0000\u0000\u069dp\u0001"+ + "\u0000\u0000\u0000\u069e\u069f\u0007\u000e\u0000\u0000\u069f\u06a0\u0007"+ + "\u0016\u0000\u0000\u06a0\u06a1\u0007\r\u0000\u0000\u06a1\u06a2\u0007\r"+ + "\u0000\u0000\u06a2\u06a3\u0007\n\u0000\u0000\u06a3\u06a4\u0007\u0007\u0000"+ + "\u0000\u06a4\u06a5\u0007\u0010\u0000\u0000\u06a5\u06a6\u0005_\u0000\u0000"+ + "\u06a6\u06a7\u0007\u0010\u0000\u0000\u06a7\u06a8\u0007\u0011\u0000\u0000"+ + "\u06a8\u06a9\u0007\u000f\u0000\u0000\u06a9\u06aa\u0007\n\u0000\u0000\u06aa"+ + "\u06ab\u0007\t\u0000\u0000\u06ab\u06ac\u0007\u0010\u0000\u0000\u06ac\u06ad"+ + "\u0007\u0005\u0000\u0000\u06ad\u06ae\u0007\u000f\u0000\u0000\u06ae\u06af"+ + "\u0007\u0018\u0000\u0000\u06afr\u0001\u0000\u0000\u0000\u06b0\u06b1\u0007"+ + "\u000e\u0000\u0000\u06b1\u06b2\u0007\u0016\u0000\u0000\u06b2\u06b3\u0007"+ + "\r\u0000\u0000\u06b3\u06b4\u0007\r\u0000\u0000\u06b4\u06b5\u0007\n\u0000"+ + "\u0000\u06b5\u06b6\u0007\u0007\u0000\u0000\u06b6\u06b7\u0007\u0010\u0000"+ + "\u0000\u06b7\u06b8\u0005_\u0000\u0000\u06b8\u06b9\u0007\u0016\u0000\u0000"+ + "\u06b9\u06ba\u0007\t\u0000\u0000\u06ba\u06bb\u0007\n\u0000\u0000\u06bb"+ + "\u06bc\u0007\r\u0000\u0000\u06bct\u0001\u0000\u0000\u0000\u06bd\u06be"+ + "\u0007\f\u0000\u0000\u06be\u06bf\u0007\n\u0000\u0000\u06bf\u06c0\u0007"+ + "\u0019\u0000\u0000\u06c0\u06c1\u0007\u0005\u0000\u0000\u06c1\u06c2\u0007"+ + "\u0016\u0000\u0000\u06c2\u06c3\u0007\u0006\u0000\u0000\u06c3\u06c4\u0007"+ + "\u0010\u0000\u0000\u06c4v\u0001\u0000\u0000\u0000\u06c5\u06c6\u0007\f"+ + "\u0000\u0000\u06c6\u06c7\u0007\n\u0000\u0000\u06c7\u06c8\u0007\u0019\u0000"+ + "\u0000\u06c8\u06c9\u0007\n\u0000\u0000\u06c9\u06ca\u0007\r\u0000\u0000"+ + "\u06ca\u06cb\u0007\r\u0000\u0000\u06cb\u06cc\u0007\u0005\u0000\u0000\u06cc"+ + "\u06cd\u0007\u0012\u0000\u0000\u06cd\u06ce\u0007\u0006\u0000\u0000\u06ce"+ + "\u06cf\u0007\n\u0000\u0000\u06cfx\u0001\u0000\u0000\u0000\u06d0\u06d1"+ + "\u0007\f\u0000\u0000\u06d1\u06d2\u0007\n\u0000\u0000\u06d2\u06d3\u0007"+ + "\t\u0000\u0000\u06d3\u06d4\u0007\u000e\u0000\u0000\u06d4z\u0001\u0000"+ + "\u0000\u0000\u06d5\u06d6\u0007\f\u0000\u0000\u06d6\u06d7\u0007\u0011\u0000"+ + "\u0000\u06d7\u06d8\u0007\t\u0000\u0000\u06d8\u06d9\u0007\u0010\u0000\u0000"+ + "\u06d9\u06da\u0007\u0011\u0000\u0000\u06da\u06db\u0007\u0007\u0000\u0000"+ + "\u06db\u06dc\u0007\u000e\u0000\u0000\u06dc\u06dd\u0007\u0010\u0000\u0000"+ + "\u06dd|\u0001\u0000\u0000\u0000\u06de\u06df\u0007\f\u0000\u0000\u06df"+ + "\u06e0\u0007\u0013\u0000\u0000\u06e0~\u0001\u0000\u0000\u0000\u06e1\u06e2"+ + "\u0007\n\u0000\u0000\u06e2\u06e3\u0007\u0006\u0000\u0000\u06e3\u06e4\u0007"+ + "\t\u0000\u0000\u06e4\u06e5\u0007\n\u0000\u0000\u06e5\u0080\u0001\u0000"+ + "\u0000\u0000\u06e6\u06e7\u0007\n\u0000\u0000\u06e7\u06e8\u0007\u001a\u0000"+ + "\u0000\u06e8\u06e9\u0007\u000e\u0000\u0000\u06e9\u06ea\u0007\n\u0000\u0000"+ + "\u06ea\u06eb\u0007\u0018\u0000\u0000\u06eb\u06ec\u0007\u0010\u0000\u0000"+ + "\u06ec\u0082\u0001\u0000\u0000\u0000\u06ed\u06ee\u0007\u0019\u0000\u0000"+ + "\u06ee\u06ef\u0007\u0005\u0000\u0000\u06ef\u06f0\u0007\u0006\u0000\u0000"+ + "\u06f0\u06f1\u0007\t\u0000\u0000\u06f1\u06f2\u0007\n\u0000\u0000\u06f2"+ + "\u0084\u0001\u0000\u0000\u0000\u06f3\u06f4\u0007\u0019\u0000\u0000\u06f4"+ + "\u06f5\u0007\n\u0000\u0000\u06f5\u06f6\u0007\u0010\u0000\u0000\u06f6\u06f7"+ + "\u0007\u000e\u0000\u0000\u06f7\u06f8\u0007\u0014\u0000\u0000\u06f8\u0086"+ + "\u0001\u0000\u0000\u0000\u06f9\u06fa\u0007\u0019\u0000\u0000\u06fa\u06fb"+ + "\u0007\u0013\u0000\u0000\u06fb\u06fc\u0007\r\u0000\u0000\u06fc\u0088\u0001"+ + "\u0000\u0000\u0000\u06fd\u06fe\u0007\u0019\u0000\u0000\u06fe\u06ff\u0007"+ + "\u0013\u0000\u0000\u06ff\u0700\u0007\r\u0000\u0000\u0700\u0701\u0007\n"+ + "\u0000\u0000\u0701\u0702\u0007\u0011\u0000\u0000\u0702\u0703\u0007\u0017"+ + "\u0000\u0000\u0703\u0704\u0007\u0007\u0000\u0000\u0704\u008a\u0001\u0000"+ + "\u0000\u0000\u0705\u0706\u0007\u0019\u0000\u0000\u0706\u0707\u0007\r\u0000"+ + "\u0000\u0707\u0708\u0007\u0013\u0000\u0000\u0708\u0709\u0007\u000f\u0000"+ + "\u0000\u0709\u008c\u0001\u0000\u0000\u0000\u070a\u070b\u0007\u0017\u0000"+ + "\u0000\u070b\u070c\u0007\r\u0000\u0000\u070c\u070d\u0007\u0005\u0000\u0000"+ + "\u070d\u070e\u0007\u0007\u0000\u0000\u070e\u070f\u0007\u0010\u0000\u0000"+ + "\u070f\u008e\u0001\u0000\u0000\u0000\u0710\u0711\u0007\u0017\u0000\u0000"+ + "\u0711\u0712\u0007\r\u0000\u0000\u0712\u0713\u0007\u0013\u0000\u0000\u0713"+ + "\u0714\u0007\u0016\u0000\u0000\u0714\u0715\u0007\u0018\u0000\u0000\u0715"+ + "\u0090\u0001\u0000\u0000\u0000\u0716\u0717\u0007\u0014\u0000\u0000\u0717"+ + "\u0718\u0007\u0005\u0000\u0000\u0718\u0719\u0007\u001b\u0000\u0000\u0719"+ + "\u071a\u0007\u0011\u0000\u0000\u071a\u071b\u0007\u0007\u0000\u0000\u071b"+ + "\u071c\u0007\u0017\u0000\u0000\u071c\u0092\u0001\u0000\u0000\u0000\u071d"+ + "\u071e\u0007\u0011\u0000\u0000\u071e\u071f\u0007\u0007\u0000\u0000\u071f"+ + "\u0094\u0001\u0000\u0000\u0000\u0720\u0721\u0007\u0011\u0000\u0000\u0721"+ + "\u0722\u0007\u0007\u0000\u0000\u0722\u0723\u0007\u0011\u0000\u0000\u0723"+ + "\u0724\u0007\u0010\u0000\u0000\u0724\u0725\u0007\u0011\u0000\u0000\u0725"+ + "\u0726\u0007\u0005\u0000\u0000\u0726\u0727\u0007\u0006\u0000\u0000\u0727"+ + "\u0728\u0007\u0006\u0000\u0000\u0728\u0729\u0007\b\u0000\u0000\u0729\u0096"+ + "\u0001\u0000\u0000\u0000\u072a\u072b\u0007\u0011\u0000\u0000\u072b\u072c"+ + "\u0007\u0007\u0000\u0000\u072c\u072d\u0007\u0010\u0000\u0000\u072d\u072e"+ + "\u0007\n\u0000\u0000\u072e\u072f\u0007\r\u0000\u0000\u072f\u0730\u0007"+ + "\t\u0000\u0000\u0730\u0731\u0007\n\u0000\u0000\u0731\u0732\u0007\u000e"+ + "\u0000\u0000\u0732\u0733\u0007\u0010\u0000\u0000\u0733\u0098\u0001\u0000"+ + "\u0000\u0000\u0734\u0735\u0007\u0011\u0000\u0000\u0735\u0736\u0007\u0007"+ + "\u0000\u0000\u0736\u0737\u0007\u0010\u0000\u0000\u0737\u0738\u0007\u0013"+ + "\u0000\u0000\u0738\u009a\u0001\u0000\u0000\u0000\u0739\u073a\u0007\u0006"+ + "\u0000\u0000\u073a\u073b\u0007\u0005\u0000\u0000\u073b\u073c\u0007\u0010"+ + "\u0000\u0000\u073c\u073d\u0007\n\u0000\u0000\u073d\u073e\u0007\r\u0000"+ + "\u0000\u073e\u073f\u0007\u0005\u0000\u0000\u073f\u0740\u0007\u0006\u0000"+ + "\u0000\u0740\u009c\u0001\u0000\u0000\u0000\u0741\u0742\u0007\u0006\u0000"+ + "\u0000\u0742\u0743\u0007\n\u0000\u0000\u0743\u0744\u0007\u0005\u0000\u0000"+ + "\u0744\u0745\u0007\f\u0000\u0000\u0745\u0746\u0007\u0011\u0000\u0000\u0746"+ + "\u0747\u0007\u0007\u0000\u0000\u0747\u0748\u0007\u0017\u0000\u0000\u0748"+ + "\u009e\u0001\u0000\u0000\u0000\u0749\u074a\u0007\u0006\u0000\u0000\u074a"+ + "\u074b\u0007\u0011\u0000\u0000\u074b\u074c\u0007\u000f\u0000\u0000\u074c"+ + "\u074d\u0007\u0011\u0000\u0000\u074d\u074e\u0007\u0010\u0000\u0000\u074e"+ + "\u00a0\u0001\u0000\u0000\u0000\u074f\u0750\u0007\u0006\u0000\u0000\u0750"+ + "\u0751\u0007\u0013\u0000\u0000\u0751\u0752\u0007\u000e\u0000\u0000\u0752"+ + "\u0753\u0007\u0005\u0000\u0000\u0753\u0754\u0007\u0006\u0000\u0000\u0754"+ + "\u0755\u0007\u0010\u0000\u0000\u0755\u0756\u0007\u0011\u0000\u0000\u0756"+ + "\u0757\u0007\u000f\u0000\u0000\u0757\u0758\u0007\n\u0000\u0000\u0758\u00a2"+ + "\u0001\u0000\u0000\u0000\u0759\u075a\u0007\u0006\u0000\u0000\u075a\u075b"+ + "\u0007\u0013\u0000\u0000\u075b\u075c\u0007\u000e\u0000\u0000\u075c\u075d"+ + "\u0007\u0005\u0000\u0000\u075d\u075e\u0007\u0006\u0000\u0000\u075e\u075f"+ + "\u0007\u0010\u0000\u0000\u075f\u0760\u0007\u0011\u0000\u0000\u0760\u0761"+ + "\u0007\u000f\u0000\u0000\u0761\u0762\u0007\n\u0000\u0000\u0762\u0763\u0007"+ + "\t\u0000\u0000\u0763\u0764\u0007\u0010\u0000\u0000\u0764\u0765\u0007\u0005"+ + "\u0000\u0000\u0765\u0766\u0007\u000f\u0000\u0000\u0766\u0767\u0007\u0018"+ + "\u0000\u0000\u0767\u00a4\u0001\u0000\u0000\u0000\u0768\u0769\u0007\u0007"+ + "\u0000\u0000\u0769\u076a\u0007\u0013\u0000\u0000\u076a\u076b\u0007\u0010"+ + "\u0000\u0000\u076b\u00a6\u0001\u0000\u0000\u0000\u076c\u076d\u0007\u0007"+ + "\u0000\u0000\u076d\u076e\u0007\u0016\u0000\u0000\u076e\u076f\u0007\u0006"+ + "\u0000\u0000\u076f\u0770\u0007\u0006\u0000\u0000\u0770\u00a8\u0001\u0000"+ + "\u0000\u0000\u0771\u0772\u0007\u0013\u0000\u0000\u0772\u0773\u0007\u0019"+ + "\u0000\u0000\u0773\u0774\u0007\u0019\u0000\u0000\u0774\u0775\u0007\t\u0000"+ + "\u0000\u0775\u0776\u0007\n\u0000\u0000\u0776\u0777\u0007\u0010\u0000\u0000"+ + "\u0777\u00aa\u0001\u0000\u0000\u0000\u0778\u0779\u0007\u0013\u0000\u0000"+ + "\u0779\u077a\u0007\u0007\u0000\u0000\u077a\u00ac\u0001\u0000\u0000\u0000"+ + "\u077b\u077c\u0007\u0013\u0000\u0000\u077c\u077d\u0007\u0007\u0000\u0000"+ + "\u077d\u077e\u0007\u0006\u0000\u0000\u077e\u077f\u0007\b\u0000\u0000\u077f"+ + "\u00ae\u0001\u0000\u0000\u0000\u0780\u0781\u0007\u0013\u0000\u0000\u0781"+ + "\u0782\u0007\r\u0000\u0000\u0782\u00b0\u0001\u0000\u0000\u0000\u0783\u0784"+ + "\u0007\u0013\u0000\u0000\u0784\u0785\u0007\r\u0000\u0000\u0785\u0786\u0007"+ + "\f\u0000\u0000\u0786\u0787\u0007\n\u0000\u0000\u0787\u0788\u0007\r\u0000"+ + "\u0000\u0788\u00b2\u0001\u0000\u0000\u0000\u0789\u078a\u0007\u0018\u0000"+ + "\u0000\u078a\u078b\u0007\u0006\u0000\u0000\u078b\u078c\u0007\u0005\u0000"+ + "\u0000\u078c\u078d\u0007\u000e\u0000\u0000\u078d\u078e\u0007\u0011\u0000"+ + "\u0000\u078e\u078f\u0007\u0007\u0000\u0000\u078f\u0790\u0007\u0017\u0000"+ + "\u0000\u0790\u00b4\u0001\u0000\u0000\u0000\u0791\u0792\u0007\u0018\u0000"+ + "\u0000\u0792\u0793\u0007\r\u0000\u0000\u0793\u0794\u0007\u0011\u0000\u0000"+ + "\u0794\u0795\u0007\u000f\u0000\u0000\u0795\u0796\u0007\u0005\u0000\u0000"+ + "\u0796\u0797\u0007\r\u0000\u0000\u0797\u0798\u0007\b\u0000\u0000\u0798"+ + "\u00b6\u0001\u0000\u0000\u0000\u0799\u079a\u0007\r\u0000\u0000\u079a\u079b"+ + "\u0007\n\u0000\u0000\u079b\u079c\u0007\u0019\u0000\u0000\u079c\u079d\u0007"+ + "\n\u0000\u0000\u079d\u079e\u0007\r\u0000\u0000\u079e\u079f\u0007\n\u0000"+ + "\u0000\u079f\u07a0\u0007\u0007\u0000\u0000\u07a0\u07a1\u0007\u000e\u0000"+ + "\u0000\u07a1\u07a2\u0007\n\u0000\u0000\u07a2\u07a3\u0007\t\u0000\u0000"+ + "\u07a3\u00b8\u0001\u0000\u0000\u0000\u07a4\u07a5\u0007\r\u0000\u0000\u07a5"+ + "\u07a6\u0007\n\u0000\u0000\u07a6\u07a7\u0007\u0010\u0000\u0000\u07a7\u07a8"+ + "\u0007\u0016\u0000\u0000\u07a8\u07a9\u0007\r\u0000\u0000\u07a9\u07aa\u0007"+ + "\u0007\u0000\u0000\u07aa\u07ab\u0007\u0011\u0000\u0000\u07ab\u07ac\u0007"+ + "\u0007\u0000\u0000\u07ac\u07ad\u0007\u0017\u0000\u0000\u07ad\u00ba\u0001"+ + "\u0000\u0000\u0000\u07ae\u07af\u0007\t\u0000\u0000\u07af\u07b0\u0007\n"+ + "\u0000\u0000\u07b0\u07b1\u0007\u0006\u0000\u0000\u07b1\u07b2\u0007\n\u0000"+ + "\u0000\u07b2\u07b3\u0007\u000e\u0000\u0000\u07b3\u07b4\u0007\u0010\u0000"+ + "\u0000\u07b4\u00bc\u0001\u0000\u0000\u0000\u07b5\u07b6\u0007\t\u0000\u0000"+ + "\u07b6\u07b7\u0007\n\u0000\u0000\u07b7\u07b8\u0007\t\u0000\u0000\u07b8"+ + "\u07b9\u0007\t\u0000\u0000\u07b9\u07ba\u0007\u0011\u0000\u0000\u07ba\u07bb"+ + "\u0007\u0013\u0000\u0000\u07bb\u07bc\u0007\u0007\u0000\u0000\u07bc\u07bd"+ + "\u0005_\u0000\u0000\u07bd\u07be\u0007\u0016\u0000\u0000\u07be\u07bf\u0007"+ + "\t\u0000\u0000\u07bf\u07c0\u0007\n\u0000\u0000\u07c0\u07c1\u0007\r\u0000"+ + "\u0000\u07c1\u00be\u0001\u0000\u0000\u0000\u07c2\u07c3\u0007\t\u0000\u0000"+ + "\u07c3\u07c4\u0007\u0013\u0000\u0000\u07c4\u07c5\u0007\u000f\u0000\u0000"+ + "\u07c5\u07c6\u0007\n\u0000\u0000\u07c6\u00c0\u0001\u0000\u0000\u0000\u07c7"+ + "\u07c8\u0007\t\u0000\u0000\u07c8\u07c9\u0007\b\u0000\u0000\u07c9\u07ca"+ + "\u0007\u000f\u0000\u0000\u07ca\u07cb\u0007\u000f\u0000\u0000\u07cb\u07cc"+ + "\u0007\n\u0000\u0000\u07cc\u07cd\u0007\u0010\u0000\u0000\u07cd\u07ce\u0007"+ + "\r\u0000\u0000\u07ce\u07cf\u0007\u0011\u0000\u0000\u07cf\u07d0\u0007\u000e"+ + "\u0000\u0000\u07d0\u00c2\u0001\u0000\u0000\u0000\u07d1\u07d2\u0007\u0010"+ + "\u0000\u0000\u07d2\u07d3\u0007\u0005\u0000\u0000\u07d3\u07d4\u0007\u0012"+ + "\u0000\u0000\u07d4\u07d5\u0007\u0006\u0000\u0000\u07d5\u07d6\u0007\n\u0000"+ + "\u0000\u07d6\u00c4\u0001\u0000\u0000\u0000\u07d7\u07d8\u0007\u000b\u0000"+ + "\u0000\u07d8\u07d9\u0007\u0010\u0000\u0000\u07d9\u07da\u0007\u0005\u0000"+ + "\u0000\u07da\u07db\u0007\u0012\u0000\u0000\u07db\u07dc\u0007\u0006\u0000"+ + "\u0000\u07dc\u07dd\u0007\n\u0000\u0000\u07dd\u00c6\u0001\u0000\u0000\u0000"+ + "\u07de\u07df\u0007\u0010\u0000\u0000\u07df\u07e0\u0007\u0014\u0000\u0000"+ + "\u07e0\u07e1\u0007\n\u0000\u0000\u07e1\u07e2\u0007\u0007\u0000\u0000\u07e2"+ + "\u00c8\u0001\u0000\u0000\u0000\u07e3\u07e4\u0007\u0010\u0000\u0000\u07e4"+ + "\u07e5\u0007\u0013\u0000\u0000\u07e5\u00ca\u0001\u0000\u0000\u0000\u07e6"+ + "\u07e7\u0007\f\u0000\u0000\u07e7\u07e8\u0007\n\u0000\u0000\u07e8\u07e9"+ + "\u0007\t\u0000\u0000\u07e9\u07ea\u0007\u000e\u0000\u0000\u07ea\u07eb\u0007"+ + "\r\u0000\u0000\u07eb\u07ec\u0007\u0011\u0000\u0000\u07ec\u07ed\u0007\u0012"+ + "\u0000\u0000\u07ed\u07ee\u0007\n\u0000\u0000\u07ee\u00cc\u0001\u0000\u0000"+ + "\u0000\u07ef\u07f0\u0007\u0010\u0000\u0000\u07f0\u07f1\u0007\u0013\u0000"+ + "\u0000\u07f1\u07f2\u0007\u0018\u0000\u0000\u07f2\u07f3\u0007\u0011\u0000"+ + "\u0000\u07f3\u07f4\u0007\u000e\u0000\u0000\u07f4\u00ce\u0001\u0000\u0000"+ + "\u0000\u07f5\u07f6\u0007\u0010\u0000\u0000\u07f6\u07f7\u0007\u0013\u0000"+ + "\u0000\u07f7\u07f8\u0007\u0018\u0000\u0000\u07f8\u07f9\u0007\u0011\u0000"+ + "\u0000\u07f9\u07fa\u0007\u000e\u0000\u0000\u07fa\u07fb\u0007\t\u0000\u0000"+ + "\u07fb\u00d0\u0001\u0000\u0000\u0000\u07fc\u07fd\u0007\t\u0000\u0000\u07fd"+ + "\u07fe\u0007\u0010\u0000\u0000\u07fe\u07ff\u0007\r\u0000\u0000\u07ff\u0800"+ + "\u0007\n\u0000\u0000\u0800\u0801\u0007\u0005\u0000\u0000\u0801\u0802\u0007"+ + "\u000f\u0000\u0000\u0802\u00d2\u0001\u0000\u0000\u0000\u0803\u0804\u0007"+ + "\u000b\u0000\u0000\u0804\u0805\u0007\u001b\u0000\u0000\u0805\u0806\u0007"+ + "\u0011\u0000\u0000\u0806\u0807\u0007\n\u0000\u0000\u0807\u0808\u0007\u001c"+ + "\u0000\u0000\u0808\u00d4\u0001\u0000\u0000\u0000\u0809\u080a\u0007\u000b"+ + "\u0000\u0000\u080a\u080b\u0007\u001b\u0000\u0000\u080b\u080c\u0007\u0011"+ + "\u0000\u0000\u080c\u080d\u0007\n\u0000\u0000\u080d\u080e\u0007\u001c\u0000"+ + "\u0000\u080e\u080f\u0007\t\u0000\u0000\u080f\u00d6\u0001\u0000\u0000\u0000"+ + "\u0810\u0811\u0007\u0010\u0000\u0000\u0811\u0812\u0007\r\u0000\u0000\u0812"+ + "\u0813\u0007\u0005\u0000\u0000\u0813\u0814\u0007\u0011\u0000\u0000\u0814"+ + "\u0815\u0007\u0006\u0000\u0000\u0815\u0816\u0007\u0011\u0000\u0000\u0816"+ + "\u0817\u0007\u0007\u0000\u0000\u0817\u0818\u0007\u0017\u0000\u0000\u0818"+ + "\u00d8\u0001\u0000\u0000\u0000\u0819\u081a\u0007\u0010\u0000\u0000\u081a"+ + "\u081b\u0007\r\u0000\u0000\u081b\u081c\u0007\u0016\u0000\u0000\u081c\u081d"+ + "\u0007\n\u0000\u0000\u081d\u00da\u0001\u0000\u0000\u0000\u081e\u081f\u0007"+ + "\u0016\u0000\u0000\u081f\u0820\u0007\u0007\u0000\u0000\u0820\u0821\u0007"+ + "\u0011\u0000\u0000\u0821\u0822\u0007\u0013\u0000\u0000\u0822\u0823\u0007"+ + "\u0007\u0000\u0000\u0823\u00dc\u0001\u0000\u0000\u0000\u0824\u0825\u0007"+ + "\u0016\u0000\u0000\u0825\u0826\u0007\u0007\u0000\u0000\u0826\u0827\u0007"+ + "\u0011\u0000\u0000\u0827\u0828\u0007\u001d\u0000\u0000\u0828\u0829\u0007"+ + "\u0016\u0000\u0000\u0829\u082a\u0007\n\u0000\u0000\u082a\u00de\u0001\u0000"+ + "\u0000\u0000\u082b\u082c\u0007\u0016\u0000\u0000\u082c\u082d\u0007\t\u0000"+ + "\u0000\u082d\u082e\u0007\n\u0000\u0000\u082e\u082f\u0007\r\u0000\u0000"+ + "\u082f\u00e0\u0001\u0000\u0000\u0000\u0830\u0831\u0007\u0016\u0000\u0000"+ + "\u0831\u0832\u0007\t\u0000\u0000\u0832\u0833\u0007\u0011\u0000\u0000\u0833"+ + "\u0834\u0007\u0007\u0000\u0000\u0834\u0835\u0007\u0017\u0000\u0000\u0835"+ + "\u00e2\u0001\u0000\u0000\u0000\u0836\u0837\u0007\u001b\u0000\u0000\u0837"+ + "\u0838\u0007\u0005\u0000\u0000\u0838\u0839\u0007\r\u0000\u0000\u0839\u083a"+ + "\u0007\u0011\u0000\u0000\u083a\u083b\u0007\u0005\u0000\u0000\u083b\u083c"+ + "\u0007\f\u0000\u0000\u083c\u083d\u0007\u0011\u0000\u0000\u083d\u083e\u0007"+ + "\u000e\u0000\u0000\u083e\u00e4\u0001\u0000\u0000\u0000\u083f\u0840\u0007"+ + "\u001c\u0000\u0000\u0840\u0841\u0007\u0014\u0000\u0000\u0841\u0842\u0007"+ + "\n\u0000\u0000\u0842\u0843\u0007\u0007\u0000\u0000\u0843\u00e6\u0001\u0000"+ + "\u0000\u0000\u0844\u0845\u0007\u001c\u0000\u0000\u0845\u0846\u0007\u0014"+ + "\u0000\u0000\u0846\u0847\u0007\n\u0000\u0000\u0847\u0848\u0007\r\u0000"+ + "\u0000\u0848\u0849\u0007\n\u0000\u0000\u0849\u00e8\u0001\u0000\u0000\u0000"+ + "\u084a\u084b\u0007\u001c\u0000\u0000\u084b\u084c\u0007\u0011\u0000\u0000"+ + "\u084c\u084d\u0007\u0007\u0000\u0000\u084d\u084e\u0007\f\u0000\u0000\u084e"+ + "\u084f\u0007\u0013\u0000\u0000\u084f\u0850\u0007\u001c\u0000\u0000\u0850"+ + "\u00ea\u0001\u0000\u0000\u0000\u0851\u0852\u0007\u001c\u0000\u0000\u0852"+ + "\u0853\u0007\u0011\u0000\u0000\u0853\u0854\u0007\u0010\u0000\u0000\u0854"+ + "\u0855\u0007\u0014\u0000\u0000\u0855\u00ec\u0001\u0000\u0000\u0000\u0856"+ + "\u0857\u0007\u0005\u0000\u0000\u0857\u0858\u0007\u0016\u0000\u0000\u0858"+ + "\u0859\u0007\u0010\u0000\u0000\u0859\u085a\u0007\u0014\u0000\u0000\u085a"+ + "\u085b\u0007\u0013\u0000\u0000\u085b\u085c\u0007\r\u0000\u0000\u085c\u085d"+ + "\u0007\u0011\u0000\u0000\u085d\u085e\u0007\u000b\u0000\u0000\u085e\u085f"+ + "\u0007\u0005\u0000\u0000\u085f\u0860\u0007\u0010\u0000\u0000\u0860\u0861"+ + "\u0007\u0011\u0000\u0000\u0861\u0862\u0007\u0013\u0000\u0000\u0862\u0863"+ + "\u0007\u0007\u0000\u0000\u0863\u00ee\u0001\u0000\u0000\u0000\u0864\u0865"+ + "\u0007\u0012\u0000\u0000\u0865\u0866\u0007\u0011\u0000\u0000\u0866\u0867"+ + "\u0007\u0007\u0000\u0000\u0867\u0868\u0007\u0005\u0000\u0000\u0868\u0869"+ + "\u0007\r\u0000\u0000\u0869\u086a\u0007\b\u0000\u0000\u086a\u00f0\u0001"+ + "\u0000\u0000\u0000\u086b\u086c\u0007\u000e\u0000\u0000\u086c\u086d\u0007"+ + "\u0013\u0000\u0000\u086d\u086e\u0007\u0006\u0000\u0000\u086e\u086f\u0007"+ + "\u0006\u0000\u0000\u086f\u0870\u0007\u0005\u0000\u0000\u0870\u0871\u0007"+ + "\u0010\u0000\u0000\u0871\u0872\u0007\u0011\u0000\u0000\u0872\u0873\u0007"+ + "\u0013\u0000\u0000\u0873\u0874\u0007\u0007\u0000\u0000\u0874\u00f2\u0001"+ + "\u0000\u0000\u0000\u0875\u0876\u0007\u000e\u0000\u0000\u0876\u0877\u0007"+ + "\u0013\u0000\u0000\u0877\u0878\u0007\u0007\u0000\u0000\u0878\u0879\u0007"+ + "\u000e\u0000\u0000\u0879\u087a\u0007\u0016\u0000\u0000\u087a\u087b\u0007"+ + "\r\u0000\u0000\u087b\u087c\u0007\r\u0000\u0000\u087c\u087d\u0007\n\u0000"+ + "\u0000\u087d\u087e\u0007\u0007\u0000\u0000\u087e\u087f\u0007\u0010\u0000"+ + "\u0000\u087f\u0880\u0007\u0006\u0000\u0000\u0880\u0881\u0007\b\u0000\u0000"+ + "\u0881\u00f4\u0001\u0000\u0000\u0000\u0882\u0883\u0007\u000e\u0000\u0000"+ + "\u0883\u0884\u0007\r\u0000\u0000\u0884\u0885\u0007\u0013\u0000\u0000\u0885"+ + "\u0886\u0007\t\u0000\u0000\u0886\u0887\u0007\t\u0000\u0000\u0887\u00f6"+ + "\u0001\u0000\u0000\u0000\u0888\u0889\u0007\u000e\u0000\u0000\u0889\u088a"+ + "\u0007\u0016\u0000\u0000\u088a\u088b\u0007\r\u0000\u0000\u088b\u088c\u0007"+ + "\r\u0000\u0000\u088c\u088d\u0007\n\u0000\u0000\u088d\u088e\u0007\u0007"+ + "\u0000\u0000\u088e\u088f\u0007\u0010\u0000\u0000\u088f\u0890\u0005_\u0000"+ + "\u0000\u0890\u0891\u0007\t\u0000\u0000\u0891\u0892\u0007\u000e\u0000\u0000"+ + "\u0892\u0893\u0007\u0014\u0000\u0000\u0893\u0894\u0007\n\u0000\u0000\u0894"+ + "\u0895\u0007\u000f\u0000\u0000\u0895\u0896\u0007\u0005\u0000\u0000\u0896"+ + "\u00f8\u0001\u0000\u0000\u0000\u0897\u0898\u0007\u0019\u0000\u0000\u0898"+ + "\u0899\u0007\r\u0000\u0000\u0899\u089a\u0007\n\u0000\u0000\u089a\u089b"+ + "\u0007\n\u0000\u0000\u089b\u089c\u0007\u000b\u0000\u0000\u089c\u089d\u0007"+ + "\n\u0000\u0000\u089d\u00fa\u0001\u0000\u0000\u0000\u089e\u089f\u0007\u0019"+ + "\u0000\u0000\u089f\u08a0\u0007\u0016\u0000\u0000\u08a0\u08a1\u0007\u0006"+ + "\u0000\u0000\u08a1\u08a2\u0007\u0006\u0000\u0000\u08a2\u00fc\u0001\u0000"+ + "\u0000\u0000\u08a3\u08a4\u0007\u0011\u0000\u0000\u08a4\u08a5\u0007\u0006"+ + "\u0000\u0000\u08a5\u08a6\u0007\u0011\u0000\u0000\u08a6\u08a7\u0007\u0015"+ + "\u0000\u0000\u08a7\u08a8\u0007\n\u0000\u0000\u08a8\u00fe\u0001\u0000\u0000"+ + "\u0000\u08a9\u08aa\u0007\u0011\u0000\u0000\u08aa\u08ab\u0007\u0007\u0000"+ + "\u0000\u08ab\u08ac\u0007\u0007\u0000\u0000\u08ac\u08ad\u0007\n\u0000\u0000"+ + "\u08ad\u08ae\u0007\r\u0000\u0000\u08ae\u0100\u0001\u0000\u0000\u0000\u08af"+ + "\u08b0\u0007\u0011\u0000\u0000\u08b0\u08b1\u0007\t\u0000\u0000\u08b1\u0102"+ + "\u0001\u0000\u0000\u0000\u08b2\u08b3\u0007\u0011\u0000\u0000\u08b3\u08b4"+ + "\u0007\t\u0000\u0000\u08b4\u08b5\u0007\u0007\u0000\u0000\u08b5\u08b6\u0007"+ + "\u0016\u0000\u0000\u08b6\u08b7\u0007\u0006\u0000\u0000\u08b7\u08b8\u0007"+ + "\u0006\u0000\u0000\u08b8\u0104\u0001\u0000\u0000\u0000\u08b9\u08ba\u0007"+ + "\u001e\u0000\u0000\u08ba\u08bb\u0007\u0013\u0000\u0000\u08bb\u08bc\u0007"+ + "\u0011\u0000\u0000\u08bc\u08bd\u0007\u0007\u0000\u0000\u08bd\u0106\u0001"+ + "\u0000\u0000\u0000\u08be\u08bf\u0007\u0006\u0000\u0000\u08bf\u08c0\u0007"+ + "\n\u0000\u0000\u08c0\u08c1\u0007\u0019\u0000\u0000\u08c1\u08c2\u0007\u0010"+ + "\u0000\u0000\u08c2\u0108\u0001\u0000\u0000\u0000\u08c3\u08c4\u0007\u0006"+ + "\u0000\u0000\u08c4\u08c5\u0007\u0011\u0000\u0000\u08c5\u08c6\u0007\u0015"+ + "\u0000\u0000\u08c6\u08c7\u0007\n\u0000\u0000\u08c7\u010a\u0001\u0000\u0000"+ + "\u0000\u08c8\u08c9\u0007\u0007\u0000\u0000\u08c9\u08ca\u0007\u0005\u0000"+ + "\u0000\u08ca\u08cb\u0007\u0010\u0000\u0000\u08cb\u08cc\u0007\u0016\u0000"+ + "\u0000\u08cc\u08cd\u0007\r\u0000\u0000\u08cd\u08ce\u0007\u0005\u0000\u0000"+ + "\u08ce\u08cf\u0007\u0006\u0000\u0000\u08cf\u010c\u0001\u0000\u0000\u0000"+ + "\u08d0\u08d1\u0007\u0007\u0000\u0000\u08d1\u08d2\u0007\u0013\u0000\u0000"+ + "\u08d2\u08d3\u0007\u0010\u0000\u0000\u08d3\u08d4\u0007\u0007\u0000\u0000"+ + "\u08d4\u08d5\u0007\u0016\u0000\u0000\u08d5\u08d6\u0007\u0006\u0000\u0000"+ + "\u08d6\u08d7\u0007\u0006\u0000\u0000\u08d7\u010e\u0001\u0000\u0000\u0000"+ + "\u08d8\u08d9\u0007\u0013\u0000\u0000\u08d9\u08da\u0007\u0016\u0000\u0000"+ + "\u08da\u08db\u0007\u0010\u0000\u0000\u08db\u08dc\u0007\n\u0000\u0000\u08dc"+ + "\u08dd\u0007\r\u0000\u0000\u08dd\u0110\u0001\u0000\u0000\u0000\u08de\u08df"+ + "\u0007\u0013\u0000\u0000\u08df\u08e0\u0007\u001b\u0000\u0000\u08e0\u08e1"+ + "\u0007\n\u0000\u0000\u08e1\u08e2\u0007\r\u0000\u0000\u08e2\u0112\u0001"+ + "\u0000\u0000\u0000\u08e3\u08e4\u0007\u0013\u0000\u0000\u08e4\u08e5\u0007"+ + "\u001b\u0000\u0000\u08e5\u08e6\u0007\n\u0000\u0000\u08e6\u08e7\u0007\r"+ + "\u0000\u0000\u08e7\u08e8\u0007\u0006\u0000\u0000\u08e8\u08e9\u0007\u0005"+ + "\u0000\u0000\u08e9\u08ea\u0007\u0018\u0000\u0000\u08ea\u08eb\u0007\t\u0000"+ + "\u0000\u08eb\u0114\u0001\u0000\u0000\u0000\u08ec\u08ed\u0007\r\u0000\u0000"+ + "\u08ed\u08ee\u0007\u0011\u0000\u0000\u08ee\u08ef\u0007\u0017\u0000\u0000"+ + "\u08ef\u08f0\u0007\u0014\u0000\u0000\u08f0\u08f1\u0007\u0010\u0000\u0000"+ + "\u08f1\u0116\u0001\u0000\u0000\u0000\u08f2\u08f3\u0007\t\u0000\u0000\u08f3"+ + "\u08f4\u0007\u0011\u0000\u0000\u08f4\u08f5\u0007\u000f\u0000\u0000\u08f5"+ + "\u08f6\u0007\u0011\u0000\u0000\u08f6\u08f7\u0007\u0006\u0000\u0000\u08f7"+ + "\u08f8\u0007\u0005\u0000\u0000\u08f8\u08f9\u0007\r\u0000\u0000\u08f9\u0118"+ + "\u0001\u0000\u0000\u0000\u08fa\u08fb\u0007\u001b\u0000\u0000\u08fb\u08fc"+ + "\u0007\n\u0000\u0000\u08fc\u08fd\u0007\r\u0000\u0000\u08fd\u08fe\u0007"+ + "\u0012\u0000\u0000\u08fe\u08ff\u0007\u0013\u0000\u0000\u08ff\u0900\u0007"+ + "\t\u0000\u0000\u0900\u0901\u0007\n\u0000\u0000\u0901\u011a\u0001\u0000"+ + "\u0000\u0000\u0902\u0903\u0007\u0005\u0000\u0000\u0903\u0904\u0007\u0012"+ + "\u0000\u0000\u0904\u0905\u0007\u0013\u0000\u0000\u0905\u0906\u0007\r\u0000"+ + "\u0000\u0906\u0907\u0007\u0010\u0000\u0000\u0907\u011c\u0001\u0000\u0000"+ + "\u0000\u0908\u0909\u0007\u0005\u0000\u0000\u0909\u090a\u0007\u0012\u0000"+ + "\u0000\u090a\u090b\u0007\t\u0000\u0000\u090b\u090c\u0007\u0013\u0000\u0000"+ + "\u090c\u090d\u0007\u0006\u0000\u0000\u090d\u090e\u0007\u0016\u0000\u0000"+ + "\u090e\u090f\u0007\u0010\u0000\u0000\u090f\u0910\u0007\n\u0000\u0000\u0910"+ + "\u011e\u0001\u0000\u0000\u0000\u0911\u0912\u0007\u0005\u0000\u0000\u0912"+ + "\u0913\u0007\u000e\u0000\u0000\u0913\u0914\u0007\u000e\u0000\u0000\u0914"+ + "\u0915\u0007\n\u0000\u0000\u0915\u0916\u0007\t\u0000\u0000\u0916\u0917"+ + "\u0007\t\u0000\u0000\u0917\u0120\u0001\u0000\u0000\u0000\u0918\u0919\u0007"+ + "\u0005\u0000\u0000\u0919\u091a\u0007\u000e\u0000\u0000\u091a\u091b\u0007"+ + "\u0010\u0000\u0000\u091b\u091c\u0007\u0011\u0000\u0000\u091c\u091d\u0007"+ + "\u0013\u0000\u0000\u091d\u091e\u0007\u0007\u0000\u0000\u091e\u0122\u0001"+ + "\u0000\u0000\u0000\u091f\u0920\u0007\u0005\u0000\u0000\u0920\u0921\u0007"+ + "\f\u0000\u0000\u0921\u0922\u0007\f\u0000\u0000\u0922\u0124\u0001\u0000"+ + "\u0000\u0000\u0923\u0924\u0007\u0005\u0000\u0000\u0924\u0925\u0007\f\u0000"+ + "\u0000\u0925\u0926\u0007\u000f\u0000\u0000\u0926\u0927\u0007\u0011\u0000"+ + "\u0000\u0927\u0928\u0007\u0007\u0000\u0000\u0928\u0126\u0001\u0000\u0000"+ + "\u0000\u0929\u092a\u0007\u0005\u0000\u0000\u092a\u092b\u0007\u0019\u0000"+ + "\u0000\u092b\u092c\u0007\u0010\u0000\u0000\u092c\u092d\u0007\n\u0000\u0000"+ + "\u092d\u092e\u0007\r\u0000\u0000\u092e\u0128\u0001\u0000\u0000\u0000\u092f"+ + "\u0930\u0007\u0005\u0000\u0000\u0930\u0931\u0007\u0017\u0000\u0000\u0931"+ + "\u0932\u0007\u0017\u0000\u0000\u0932\u0933\u0007\r\u0000\u0000\u0933\u0934"+ + "\u0007\n\u0000\u0000\u0934\u0935\u0007\u0017\u0000\u0000\u0935\u0936\u0007"+ + "\u0005\u0000\u0000\u0936\u0937\u0007\u0010\u0000\u0000\u0937\u0938\u0007"+ + "\n\u0000\u0000\u0938\u012a\u0001\u0000\u0000\u0000\u0939\u093a\u0007\u0005"+ + "\u0000\u0000\u093a\u093b\u0007\u0006\u0000\u0000\u093b\u093c\u0007\t\u0000"+ + "\u0000\u093c\u093d\u0007\u0013\u0000\u0000\u093d\u012c\u0001\u0000\u0000"+ + "\u0000\u093e\u093f\u0007\u0005\u0000\u0000\u093f\u0940\u0007\u0006\u0000"+ + "\u0000\u0940\u0941\u0007\u0010\u0000\u0000\u0941\u0942\u0007\n\u0000\u0000"+ + "\u0942\u0943\u0007\r\u0000\u0000\u0943\u012e\u0001\u0000\u0000\u0000\u0944"+ + "\u0945\u0007\u0005\u0000\u0000\u0945\u0946\u0007\u0006\u0000\u0000\u0946"+ + "\u0947\u0007\u001c\u0000\u0000\u0947\u0948\u0007\u0005\u0000\u0000\u0948"+ + "\u0949\u0007\b\u0000\u0000\u0949\u094a\u0007\t\u0000\u0000\u094a\u0130"+ + "\u0001\u0000\u0000\u0000\u094b\u094c\u0007\u0005\u0000\u0000\u094c\u094d"+ + "\u0007\t\u0000\u0000\u094d\u094e\u0007\t\u0000\u0000\u094e\u094f\u0007"+ + "\n\u0000\u0000\u094f\u0950\u0007\r\u0000\u0000\u0950\u0951\u0007\u0010"+ + "\u0000\u0000\u0951\u0952\u0007\u0011\u0000\u0000\u0952\u0953\u0007\u0013"+ + "\u0000\u0000\u0953\u0954\u0007\u0007\u0000\u0000\u0954\u0132\u0001\u0000"+ + "\u0000\u0000\u0955\u0956\u0007\u0005\u0000\u0000\u0956\u0957\u0007\t\u0000"+ + "\u0000\u0957\u0958\u0007\t\u0000\u0000\u0958\u0959\u0007\u0011\u0000\u0000"+ + "\u0959\u095a\u0007\u0017\u0000\u0000\u095a\u095b\u0007\u0007\u0000\u0000"+ + "\u095b\u095c\u0007\u000f\u0000\u0000\u095c\u095d\u0007\n\u0000\u0000\u095d"+ + "\u095e\u0007\u0007\u0000\u0000\u095e\u095f\u0007\u0010\u0000\u0000\u095f"+ + "\u0134\u0001\u0000\u0000\u0000\u0960\u0961\u0007\u0005\u0000\u0000\u0961"+ + "\u0962\u0007\u0010\u0000\u0000\u0962\u0136\u0001\u0000\u0000\u0000\u0963"+ + "\u0964\u0007\u0005\u0000\u0000\u0964\u0965\u0007\u0010\u0000\u0000\u0965"+ + "\u0966\u0007\u0010\u0000\u0000\u0966\u0967\u0007\r\u0000\u0000\u0967\u0968"+ + "\u0007\u0011\u0000\u0000\u0968\u0969\u0007\u0012\u0000\u0000\u0969\u096a"+ + "\u0007\u0016\u0000\u0000\u096a\u096b\u0007\u0010\u0000\u0000\u096b\u096c"+ + "\u0007\n\u0000\u0000\u096c\u0138\u0001\u0000\u0000\u0000\u096d\u096e\u0007"+ + "\u0012\u0000\u0000\u096e\u096f\u0007\u0005\u0000\u0000\u096f\u0970\u0007"+ + "\u000e\u0000\u0000\u0970\u0971\u0007\u0015\u0000\u0000\u0971\u0972\u0007"+ + "\u001c\u0000\u0000\u0972\u0973\u0007\u0005\u0000\u0000\u0973\u0974\u0007"+ + "\r\u0000\u0000\u0974\u0975\u0007\f\u0000\u0000\u0975\u013a\u0001\u0000"+ + "\u0000\u0000\u0976\u0977\u0007\u0012\u0000\u0000\u0977\u0978\u0007\n\u0000"+ + "\u0000\u0978\u0979\u0007\u0019\u0000\u0000\u0979\u097a\u0007\u0013\u0000"+ + "\u0000\u097a\u097b\u0007\r\u0000\u0000\u097b\u097c\u0007\n\u0000\u0000"+ + "\u097c\u013c\u0001\u0000\u0000\u0000\u097d\u097e\u0007\u0012\u0000\u0000"+ + "\u097e\u097f\u0007\n\u0000\u0000\u097f\u0980\u0007\u0017\u0000\u0000\u0980"+ + "\u0981\u0007\u0011\u0000\u0000\u0981\u0982\u0007\u0007\u0000\u0000\u0982"+ + "\u013e\u0001\u0000\u0000\u0000\u0983\u0984\u0007\u0012\u0000\u0000\u0984"+ + "\u0985\u0007\b\u0000\u0000\u0985\u0140\u0001\u0000\u0000\u0000\u0986\u0987"+ + "\u0007\u000e\u0000\u0000\u0987\u0988\u0007\u0005\u0000\u0000\u0988\u0989"+ + "\u0007\u000e\u0000\u0000\u0989\u098a\u0007\u0014\u0000\u0000\u098a\u098b"+ + "\u0007\n\u0000\u0000\u098b\u0142\u0001\u0000\u0000\u0000\u098c\u098d\u0007"+ + "\u000e\u0000\u0000\u098d\u098e\u0007\u0005\u0000\u0000\u098e\u098f\u0007"+ + "\u0006\u0000\u0000\u098f\u0990\u0007\u0006\u0000\u0000\u0990\u0991\u0007"+ + "\n\u0000\u0000\u0991\u0992\u0007\f\u0000\u0000\u0992\u0144\u0001\u0000"+ + "\u0000\u0000\u0993\u0994\u0007\u000e\u0000\u0000\u0994\u0995\u0007\u0005"+ + "\u0000\u0000\u0995\u0996\u0007\t\u0000\u0000\u0996\u0997\u0007\u000e\u0000"+ + "\u0000\u0997\u0998\u0007\u0005\u0000\u0000\u0998\u0999\u0007\f\u0000\u0000"+ + "\u0999\u099a\u0007\n\u0000\u0000\u099a\u0146\u0001\u0000\u0000\u0000\u099b"+ + "\u099c\u0007\u000e\u0000\u0000\u099c\u099d\u0007\u0005\u0000\u0000\u099d"+ + "\u099e\u0007\t\u0000\u0000\u099e\u099f\u0007\u000e\u0000\u0000\u099f\u09a0"+ + "\u0007\u0005\u0000\u0000\u09a0\u09a1\u0007\f\u0000\u0000\u09a1\u09a2\u0007"+ + "\n\u0000\u0000\u09a2\u09a3\u0007\f\u0000\u0000\u09a3\u0148\u0001\u0000"+ + "\u0000\u0000\u09a4\u09a5\u0007\u000e\u0000\u0000\u09a5\u09a6\u0007\u0005"+ + "\u0000\u0000\u09a6\u09a7\u0007\u0010\u0000\u0000\u09a7\u09a8\u0007\u0005"+ + "\u0000\u0000\u09a8\u09a9\u0007\u0006\u0000\u0000\u09a9\u09aa\u0007\u0013"+ + "\u0000\u0000\u09aa\u09ab\u0007\u0017\u0000\u0000\u09ab\u014a\u0001\u0000"+ + "\u0000\u0000\u09ac\u09ad\u0007\u000e\u0000\u0000\u09ad\u09ae\u0007\u0014"+ + "\u0000\u0000\u09ae\u09af\u0007\u0005\u0000\u0000\u09af\u09b0\u0007\u0011"+ + "\u0000\u0000\u09b0\u09b1\u0007\u0007\u0000\u0000\u09b1\u014c\u0001\u0000"+ + "\u0000\u0000\u09b2\u09b3\u0007\u000e\u0000\u0000\u09b3\u09b4\u0007\u0014"+ + "\u0000\u0000\u09b4\u09b5\u0007\u0005\u0000\u0000\u09b5\u09b6\u0007\r\u0000"+ + "\u0000\u09b6\u09b7\u0007\u0005\u0000\u0000\u09b7\u09b8\u0007\u000e\u0000"+ + "\u0000\u09b8\u09b9\u0007\u0010\u0000\u0000\u09b9\u09ba\u0007\n\u0000\u0000"+ + "\u09ba\u09bb\u0007\r\u0000\u0000\u09bb\u09bc\u0007\u0011\u0000\u0000\u09bc"+ + "\u09bd\u0007\t\u0000\u0000\u09bd\u09be\u0007\u0010\u0000\u0000\u09be\u09bf"+ + "\u0007\u0011\u0000\u0000\u09bf\u09c0\u0007\u000e\u0000\u0000\u09c0\u09c1"+ + "\u0007\t\u0000\u0000\u09c1\u014e\u0001\u0000\u0000\u0000\u09c2\u09c3\u0007"+ + "\u000e\u0000\u0000\u09c3\u09c4\u0007\u0014\u0000\u0000\u09c4\u09c5\u0007"+ + "\n\u0000\u0000\u09c5\u09c6\u0007\u000e\u0000\u0000\u09c6\u09c7\u0007\u0015"+ + "\u0000\u0000\u09c7\u09c8\u0007\u0018\u0000\u0000\u09c8\u09c9\u0007\u0013"+ + "\u0000\u0000\u09c9\u09ca\u0007\u0011\u0000\u0000\u09ca\u09cb\u0007\u0007"+ + "\u0000\u0000\u09cb\u09cc\u0007\u0010\u0000\u0000\u09cc\u0150\u0001\u0000"+ + "\u0000\u0000\u09cd\u09ce\u0007\u000e\u0000\u0000\u09ce\u09cf\u0007\u0006"+ + "\u0000\u0000\u09cf\u09d0\u0007\u0005\u0000\u0000\u09d0\u09d1\u0007\t\u0000"+ + "\u0000\u09d1\u09d2\u0007\t\u0000\u0000\u09d2\u0152\u0001\u0000\u0000\u0000"+ + "\u09d3\u09d4\u0007\u000e\u0000\u0000\u09d4\u09d5\u0007\u0006\u0000\u0000"+ + "\u09d5\u09d6\u0007\u0013\u0000\u0000\u09d6\u09d7\u0007\t\u0000\u0000\u09d7"+ + "\u09d8\u0007\n\u0000\u0000\u09d8\u0154\u0001\u0000\u0000\u0000\u09d9\u09da"+ + "\u0007\u000e\u0000\u0000\u09da\u09db\u0007\u0006\u0000\u0000\u09db\u09dc"+ + "\u0007\u0016\u0000\u0000\u09dc\u09dd\u0007\t\u0000\u0000\u09dd\u09de\u0007"+ + "\u0010\u0000\u0000\u09de\u09df\u0007\n\u0000\u0000\u09df\u09e0\u0007\r"+ + "\u0000\u0000\u09e0\u0156\u0001\u0000\u0000\u0000\u09e1\u09e2\u0007\u000e"+ + "\u0000\u0000\u09e2\u09e3\u0007\u0013\u0000\u0000\u09e3\u09e4\u0007\u000f"+ + "\u0000\u0000\u09e4\u09e5\u0007\u000f\u0000\u0000\u09e5\u09e6\u0007\n\u0000"+ + "\u0000\u09e6\u09e7\u0007\u0007\u0000\u0000\u09e7\u09e8\u0007\u0010\u0000"+ + "\u0000\u09e8\u0158\u0001\u0000\u0000\u0000\u09e9\u09ea\u0007\u000e\u0000"+ + "\u0000\u09ea\u09eb\u0007\u0013\u0000\u0000\u09eb\u09ec\u0007\u000f\u0000"+ + "\u0000\u09ec\u09ed\u0007\u000f\u0000\u0000\u09ed\u09ee\u0007\n\u0000\u0000"+ + "\u09ee\u09ef\u0007\u0007\u0000\u0000\u09ef\u09f0\u0007\u0010\u0000\u0000"+ + "\u09f0\u09f1\u0007\t\u0000\u0000\u09f1\u015a\u0001\u0000\u0000\u0000\u09f2"+ + "\u09f3\u0007\u000e\u0000\u0000\u09f3\u09f4\u0007\u0013\u0000\u0000\u09f4"+ + "\u09f5\u0007\u000f\u0000\u0000\u09f5\u09f6\u0007\u000f\u0000\u0000\u09f6"+ + "\u09f7\u0007\u0011\u0000\u0000\u09f7\u09f8\u0007\u0010\u0000\u0000\u09f8"+ + "\u015c\u0001\u0000\u0000\u0000\u09f9\u09fa\u0007\u000e\u0000\u0000\u09fa"+ + "\u09fb\u0007\u0013\u0000\u0000\u09fb\u09fc\u0007\u000f\u0000\u0000\u09fc"+ + "\u09fd\u0007\u000f\u0000\u0000\u09fd\u09fe\u0007\u0011\u0000\u0000\u09fe"+ + "\u09ff\u0007\u0010\u0000\u0000\u09ff\u0a00\u0007\u0010\u0000\u0000\u0a00"+ + "\u0a01\u0007\n\u0000\u0000\u0a01\u0a02\u0007\f\u0000\u0000\u0a02\u015e"+ + "\u0001\u0000\u0000\u0000\u0a03\u0a04\u0007\u000e\u0000\u0000\u0a04\u0a05"+ + "\u0007\u0013\u0000\u0000\u0a05\u0a06\u0007\u0007\u0000\u0000\u0a06\u0a07"+ + "\u0007\u0019\u0000\u0000\u0a07\u0a08\u0007\u0011\u0000\u0000\u0a08\u0a09"+ + "\u0007\u0017\u0000\u0000\u0a09\u0a0a\u0007\u0016\u0000\u0000\u0a0a\u0a0b"+ + "\u0007\r\u0000\u0000\u0a0b\u0a0c\u0007\u0005\u0000\u0000\u0a0c\u0a0d\u0007"+ + "\u0010\u0000\u0000\u0a0d\u0a0e\u0007\u0011\u0000\u0000\u0a0e\u0a0f\u0007"+ + "\u0013\u0000\u0000\u0a0f\u0a10\u0007\u0007\u0000\u0000\u0a10\u0160\u0001"+ + "\u0000\u0000\u0000\u0a11\u0a12\u0007\u000e\u0000\u0000\u0a12\u0a13\u0007"+ + "\u0013\u0000\u0000\u0a13\u0a14\u0007\u0007\u0000\u0000\u0a14\u0a15\u0007"+ + "\u0007\u0000\u0000\u0a15\u0a16\u0007\n\u0000\u0000\u0a16\u0a17\u0007\u000e"+ + "\u0000\u0000\u0a17\u0a18\u0007\u0010\u0000\u0000\u0a18\u0a19\u0007\u0011"+ + "\u0000\u0000\u0a19\u0a1a\u0007\u0013\u0000\u0000\u0a1a\u0a1b\u0007\u0007"+ + "\u0000\u0000\u0a1b\u0162\u0001\u0000\u0000\u0000\u0a1c\u0a1d\u0007\u000e"+ + "\u0000\u0000\u0a1d\u0a1e\u0007\u0013\u0000\u0000\u0a1e\u0a1f\u0007\u0007"+ + "\u0000\u0000\u0a1f\u0a20\u0007\t\u0000\u0000\u0a20\u0a21\u0007\u0010\u0000"+ + "\u0000\u0a21\u0a22\u0007\r\u0000\u0000\u0a22\u0a23\u0007\u0005\u0000\u0000"+ + "\u0a23\u0a24\u0007\u0011\u0000\u0000\u0a24\u0a25\u0007\u0007\u0000\u0000"+ + "\u0a25\u0a26\u0007\u0010\u0000\u0000\u0a26\u0a27\u0007\t\u0000\u0000\u0a27"+ + "\u0164\u0001\u0000\u0000\u0000\u0a28\u0a29\u0007\u000e\u0000\u0000\u0a29"+ + "\u0a2a\u0007\u0013\u0000\u0000\u0a2a\u0a2b\u0007\u0007\u0000\u0000\u0a2b"+ + "\u0a2c\u0007\u0010\u0000\u0000\u0a2c\u0a2d\u0007\n\u0000\u0000\u0a2d\u0a2e"+ + "\u0007\u0007\u0000\u0000\u0a2e\u0a2f\u0007\u0010\u0000\u0000\u0a2f\u0166"+ + "\u0001\u0000\u0000\u0000\u0a30\u0a31\u0007\u000e\u0000\u0000\u0a31\u0a32"+ + "\u0007\u0013\u0000\u0000\u0a32\u0a33\u0007\u0007\u0000\u0000\u0a33\u0a34"+ + "\u0007\u0010\u0000\u0000\u0a34\u0a35\u0007\u0011\u0000\u0000\u0a35\u0a36"+ + "\u0007\u0007\u0000\u0000\u0a36\u0a37\u0007\u0016\u0000\u0000\u0a37\u0a38"+ + "\u0007\n\u0000\u0000\u0a38\u0168\u0001\u0000\u0000\u0000\u0a39\u0a3a\u0007"+ + "\u000e\u0000\u0000\u0a3a\u0a3b\u0007\u0013\u0000\u0000\u0a3b\u0a3c\u0007"+ + "\u0007\u0000\u0000\u0a3c\u0a3d\u0007\u001b\u0000\u0000\u0a3d\u0a3e\u0007"+ + "\n\u0000\u0000\u0a3e\u0a3f\u0007\r\u0000\u0000\u0a3f\u0a40\u0007\t\u0000"+ + "\u0000\u0a40\u0a41\u0007\u0011\u0000\u0000\u0a41\u0a42\u0007\u0013\u0000"+ + "\u0000\u0a42\u0a43\u0007\u0007\u0000\u0000\u0a43\u016a\u0001\u0000\u0000"+ + "\u0000\u0a44\u0a45\u0007\u000e\u0000\u0000\u0a45\u0a46\u0007\u0013\u0000"+ + "\u0000\u0a46\u0a47\u0007\u0018\u0000\u0000\u0a47\u0a48\u0007\b\u0000\u0000"+ + "\u0a48\u016c\u0001\u0000\u0000\u0000\u0a49\u0a4a\u0007\u000e\u0000\u0000"+ + "\u0a4a\u0a4b\u0007\u0013\u0000\u0000\u0a4b\u0a4c\u0007\t\u0000\u0000\u0a4c"+ + "\u0a4d\u0007\u0010\u0000\u0000\u0a4d\u016e\u0001\u0000\u0000\u0000\u0a4e"+ + "\u0a4f\u0007\u000e\u0000\u0000\u0a4f\u0a50\u0007\t\u0000\u0000\u0a50\u0a51"+ + "\u0007\u001b\u0000\u0000\u0a51\u0170\u0001\u0000\u0000\u0000\u0a52\u0a53"+ + "\u0007\u000e\u0000\u0000\u0a53\u0a54\u0007\u0016\u0000\u0000\u0a54\u0a55"+ + "\u0007\r\u0000\u0000\u0a55\u0a56\u0007\t\u0000\u0000\u0a56\u0a57\u0007"+ + "\u0013\u0000\u0000\u0a57\u0a58\u0007\r\u0000\u0000\u0a58\u0172\u0001\u0000"+ + "\u0000\u0000\u0a59\u0a5a\u0007\u000e\u0000\u0000\u0a5a\u0a5b\u0007\b\u0000"+ + "\u0000\u0a5b\u0a5c\u0007\u000e\u0000\u0000\u0a5c\u0a5d\u0007\u0006\u0000"+ + "\u0000\u0a5d\u0a5e\u0007\n\u0000\u0000\u0a5e\u0174\u0001\u0000\u0000\u0000"+ + "\u0a5f\u0a60\u0007\f\u0000\u0000\u0a60\u0a61\u0007\u0005\u0000\u0000\u0a61"+ + "\u0a62\u0007\u0010\u0000\u0000\u0a62\u0a63\u0007\u0005\u0000\u0000\u0a63"+ + "\u0176\u0001\u0000\u0000\u0000\u0a64\u0a65\u0007\f\u0000\u0000\u0a65\u0a66"+ + "\u0007\u0005\u0000\u0000\u0a66\u0a67\u0007\u0010\u0000\u0000\u0a67\u0a68"+ + "\u0007\u0005\u0000\u0000\u0a68\u0a69\u0007\u0012\u0000\u0000\u0a69\u0a6a"+ + "\u0007\u0005\u0000\u0000\u0a6a\u0a6b\u0007\t\u0000\u0000\u0a6b\u0a6c\u0007"+ + "\n\u0000\u0000\u0a6c\u0178\u0001\u0000\u0000\u0000\u0a6d\u0a6e\u0007\f"+ + "\u0000\u0000\u0a6e\u0a6f\u0007\u0005\u0000\u0000\u0a6f\u0a70\u0007\b\u0000"+ + "\u0000\u0a70\u017a\u0001\u0000\u0000\u0000\u0a71\u0a72\u0007\f\u0000\u0000"+ + "\u0a72\u0a73\u0007\n\u0000\u0000\u0a73\u0a74\u0007\u0005\u0000\u0000\u0a74"+ + "\u0a75\u0007\u0006\u0000\u0000\u0a75\u0a76\u0007\u0006\u0000\u0000\u0a76"+ + "\u0a77\u0007\u0013\u0000\u0000\u0a77\u0a78\u0007\u000e\u0000\u0000\u0a78"+ + "\u0a79\u0007\u0005\u0000\u0000\u0a79\u0a7a\u0007\u0010\u0000\u0000\u0a7a"+ + "\u0a7b\u0007\n\u0000\u0000\u0a7b\u017c\u0001\u0000\u0000\u0000\u0a7c\u0a7d"+ + "\u0007\f\u0000\u0000\u0a7d\u0a7e\u0007\n\u0000\u0000\u0a7e\u0a7f\u0007"+ + "\u000e\u0000\u0000\u0a7f\u0a80\u0007\u0006\u0000\u0000\u0a80\u0a81\u0007"+ + "\u0005\u0000\u0000\u0a81\u0a82\u0007\r\u0000\u0000\u0a82\u0a83\u0007\n"+ + "\u0000\u0000\u0a83\u017e\u0001\u0000\u0000\u0000\u0a84\u0a85\u0007\f\u0000"+ + "\u0000\u0a85\u0a86\u0007\n\u0000\u0000\u0a86\u0a87\u0007\u0019\u0000\u0000"+ + "\u0a87\u0a88\u0007\u0005\u0000\u0000\u0a88\u0a89\u0007\u0016\u0000\u0000"+ + "\u0a89\u0a8a\u0007\u0006\u0000\u0000\u0a8a\u0a8b\u0007\u0010\u0000\u0000"+ + "\u0a8b\u0a8c\u0007\t\u0000\u0000\u0a8c\u0180\u0001\u0000\u0000\u0000\u0a8d"+ + "\u0a8e\u0007\f\u0000\u0000\u0a8e\u0a8f\u0007\n\u0000\u0000\u0a8f\u0a90"+ + "\u0007\u0019\u0000\u0000\u0a90\u0a91\u0007\n\u0000\u0000\u0a91\u0a92\u0007"+ + "\r\u0000\u0000\u0a92\u0a93\u0007\r\u0000\u0000\u0a93\u0a94\u0007\n\u0000"+ + "\u0000\u0a94\u0a95\u0007\f\u0000\u0000\u0a95\u0182\u0001\u0000\u0000\u0000"+ + "\u0a96\u0a97\u0007\f\u0000\u0000\u0a97\u0a98\u0007\n\u0000\u0000\u0a98"+ + "\u0a99\u0007\u0019\u0000\u0000\u0a99\u0a9a\u0007\u0011\u0000\u0000\u0a9a"+ + "\u0a9b\u0007\u0007\u0000\u0000\u0a9b\u0a9c\u0007\n\u0000\u0000\u0a9c\u0a9d"+ + "\u0007\r\u0000\u0000\u0a9d\u0184\u0001\u0000\u0000\u0000\u0a9e\u0a9f\u0007"+ + "\f\u0000\u0000\u0a9f\u0aa0\u0007\n\u0000\u0000\u0aa0\u0aa1\u0007\u0006"+ + "\u0000\u0000\u0aa1\u0aa2\u0007\n\u0000\u0000\u0aa2\u0aa3\u0007\u0010\u0000"+ + "\u0000\u0aa3\u0aa4\u0007\n\u0000\u0000\u0aa4\u0186\u0001\u0000\u0000\u0000"+ + "\u0aa5\u0aa6\u0007\f\u0000\u0000\u0aa6\u0aa7\u0007\n\u0000\u0000\u0aa7"+ + "\u0aa8\u0007\u0006\u0000\u0000\u0aa8\u0aa9\u0007\u0011\u0000\u0000\u0aa9"+ + "\u0aaa\u0007\u000f\u0000\u0000\u0aaa\u0aab\u0007\u0011\u0000\u0000\u0aab"+ + "\u0aac\u0007\u0010\u0000\u0000\u0aac\u0aad\u0007\n\u0000\u0000\u0aad\u0aae"+ + "\u0007\r\u0000\u0000\u0aae\u0188\u0001\u0000\u0000\u0000\u0aaf\u0ab0\u0007"+ + "\f\u0000\u0000\u0ab0\u0ab1\u0007\n\u0000\u0000\u0ab1\u0ab2\u0007\u0006"+ + "\u0000\u0000\u0ab2\u0ab3\u0007\u0011\u0000\u0000\u0ab3\u0ab4\u0007\u000f"+ + "\u0000\u0000\u0ab4\u0ab5\u0007\u0011\u0000\u0000\u0ab5\u0ab6\u0007\u0010"+ + "\u0000\u0000\u0ab6\u0ab7\u0007\n\u0000\u0000\u0ab7\u0ab8\u0007\r\u0000"+ + "\u0000\u0ab8\u0ab9\u0007\t\u0000\u0000\u0ab9\u018a\u0001\u0000\u0000\u0000"+ + "\u0aba\u0abb\u0007\f\u0000\u0000\u0abb\u0abc\u0007\u0011\u0000\u0000\u0abc"+ + "\u0abd\u0007\u000e\u0000\u0000\u0abd\u0abe\u0007\u0010\u0000\u0000\u0abe"+ + "\u0abf\u0007\u0011\u0000\u0000\u0abf\u0ac0\u0007\u0013\u0000\u0000\u0ac0"+ + "\u0ac1\u0007\u0007\u0000\u0000\u0ac1\u0ac2\u0007\u0005\u0000\u0000\u0ac2"+ + "\u0ac3\u0007\r\u0000\u0000\u0ac3\u0ac4\u0007\b\u0000\u0000\u0ac4\u018c"+ + "\u0001\u0000\u0000\u0000\u0ac5\u0ac6\u0007\f\u0000\u0000\u0ac6\u0ac7\u0007"+ + "\u0011\u0000\u0000\u0ac7\u0ac8\u0007\t\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\u018e\u0001\u0000\u0000"+ + "\u0000\u0acd\u0ace\u0007\f\u0000\u0000\u0ace\u0acf\u0007\u0011\u0000\u0000"+ + "\u0acf\u0ad0\u0007\t\u0000\u0000\u0ad0\u0ad1\u0007\u000e\u0000\u0000\u0ad1"+ + "\u0ad2\u0007\u0005\u0000\u0000\u0ad2\u0ad3\u0007\r\u0000\u0000\u0ad3\u0ad4"+ + "\u0007\f\u0000\u0000\u0ad4\u0190\u0001\u0000\u0000\u0000\u0ad5\u0ad6\u0007"+ + "\f\u0000\u0000\u0ad6\u0ad7\u0007\u0013\u0000\u0000\u0ad7\u0ad8\u0007\u000e"+ + "\u0000\u0000\u0ad8\u0ad9\u0007\u0016\u0000\u0000\u0ad9\u0ada\u0007\u000f"+ + "\u0000\u0000\u0ada\u0adb\u0007\n\u0000\u0000\u0adb\u0adc\u0007\u0007\u0000"+ + "\u0000\u0adc\u0add\u0007\u0010\u0000\u0000\u0add\u0192\u0001\u0000\u0000"+ + "\u0000\u0ade\u0adf\u0007\f\u0000\u0000\u0adf\u0ae0\u0007\u0013\u0000\u0000"+ + "\u0ae0\u0ae1\u0007\u000f\u0000\u0000\u0ae1\u0ae2\u0007\u0005\u0000\u0000"+ + "\u0ae2\u0ae3\u0007\u0011\u0000\u0000\u0ae3\u0ae4\u0007\u0007\u0000\u0000"+ + "\u0ae4\u0194\u0001\u0000\u0000\u0000\u0ae5\u0ae6\u0007\f\u0000\u0000\u0ae6"+ + "\u0ae7\u0007\u0013\u0000\u0000\u0ae7\u0ae8\u0007\u0016\u0000\u0000\u0ae8"+ + "\u0ae9\u0007\u0012\u0000\u0000\u0ae9\u0aea\u0007\u0006\u0000\u0000\u0aea"+ + "\u0aeb\u0007\n\u0000\u0000\u0aeb\u0196\u0001\u0000\u0000\u0000\u0aec\u0aed"+ + "\u0007\f\u0000\u0000\u0aed\u0aee\u0007\r\u0000\u0000\u0aee\u0aef\u0007"+ + "\u0013\u0000\u0000\u0aef\u0af0\u0007\u0018\u0000\u0000\u0af0\u0198\u0001"+ + "\u0000\u0000\u0000\u0af1\u0af2\u0007\n\u0000\u0000\u0af2\u0af3\u0007\u0005"+ + "\u0000\u0000\u0af3\u0af4\u0007\u000e\u0000\u0000\u0af4\u0af5\u0007\u0014"+ + "\u0000\u0000\u0af5\u019a\u0001\u0000\u0000\u0000\u0af6\u0af7\u0007\n\u0000"+ + "\u0000\u0af7\u0af8\u0007\u0007\u0000\u0000\u0af8\u0af9\u0007\u0005\u0000"+ + "\u0000\u0af9\u0afa\u0007\u0012\u0000\u0000\u0afa\u0afb\u0007\u0006\u0000"+ + "\u0000\u0afb\u0afc\u0007\n\u0000\u0000\u0afc\u019c\u0001\u0000\u0000\u0000"+ + "\u0afd\u0afe\u0007\n\u0000\u0000\u0afe\u0aff\u0007\u0007\u0000\u0000\u0aff"+ + "\u0b00\u0007\u000e\u0000\u0000\u0b00\u0b01\u0007\u0013\u0000\u0000\u0b01"+ + "\u0b02\u0007\f\u0000\u0000\u0b02\u0b03\u0007\u0011\u0000\u0000\u0b03\u0b04"+ + "\u0007\u0007\u0000\u0000\u0b04\u0b05\u0007\u0017\u0000\u0000\u0b05\u019e"+ + "\u0001\u0000\u0000\u0000\u0b06\u0b07\u0007\n\u0000\u0000\u0b07\u0b08\u0007"+ + "\u0007\u0000\u0000\u0b08\u0b09\u0007\u000e\u0000\u0000\u0b09\u0b0a\u0007"+ + "\r\u0000\u0000\u0b0a\u0b0b\u0007\b\u0000\u0000\u0b0b\u0b0c\u0007\u0018"+ + "\u0000\u0000\u0b0c\u0b0d\u0007\u0010\u0000\u0000\u0b0d\u0b0e\u0007\n\u0000"+ + "\u0000\u0b0e\u0b0f\u0007\f\u0000\u0000\u0b0f\u01a0\u0001\u0000\u0000\u0000"+ + "\u0b10\u0b11\u0007\n\u0000\u0000\u0b11\u0b12\u0007\u0007\u0000\u0000\u0b12"+ + "\u0b13\u0007\u0016\u0000\u0000\u0b13\u0b14\u0007\u000f\u0000\u0000\u0b14"+ + "\u01a2\u0001\u0000\u0000\u0000\u0b15\u0b16\u0007\n\u0000\u0000\u0b16\u0b17"+ + "\u0007\t\u0000\u0000\u0b17\u0b18\u0007\u000e\u0000\u0000\u0b18\u0b19\u0007"+ + "\u0005\u0000\u0000\u0b19\u0b1a\u0007\u0018\u0000\u0000\u0b1a\u0b1b\u0007"+ + "\n\u0000\u0000\u0b1b\u01a4\u0001\u0000\u0000\u0000\u0b1c\u0b1d\u0007\n"+ + "\u0000\u0000\u0b1d\u0b1e\u0007\u001b\u0000\u0000\u0b1e\u0b1f\u0007\n\u0000"+ + "\u0000\u0b1f\u0b20\u0007\u0007\u0000\u0000\u0b20\u0b21\u0007\u0010\u0000"+ + "\u0000\u0b21\u01a6\u0001\u0000\u0000\u0000\u0b22\u0b23\u0007\n\u0000\u0000"+ + "\u0b23\u0b24\u0007\u001a\u0000\u0000\u0b24\u0b25\u0007\u000e\u0000\u0000"+ + "\u0b25\u0b26\u0007\u0006\u0000\u0000\u0b26\u0b27\u0007\u0016\u0000\u0000"+ + "\u0b27\u0b28\u0007\f\u0000\u0000\u0b28\u0b29\u0007\n\u0000\u0000\u0b29"+ + "\u01a8\u0001\u0000\u0000\u0000\u0b2a\u0b2b\u0007\n\u0000\u0000\u0b2b\u0b2c"+ + "\u0007\u001a\u0000\u0000\u0b2c\u0b2d\u0007\u000e\u0000\u0000\u0b2d\u0b2e"+ + "\u0007\u0006\u0000\u0000\u0b2e\u0b2f\u0007\u0016\u0000\u0000\u0b2f\u0b30"+ + "\u0007\f\u0000\u0000\u0b30\u0b31\u0007\u0011\u0000\u0000\u0b31\u0b32\u0007"+ + "\u0007\u0000\u0000\u0b32\u0b33\u0007\u0017\u0000\u0000\u0b33\u01aa\u0001"+ + "\u0000\u0000\u0000\u0b34\u0b35\u0007\n\u0000\u0000\u0b35\u0b36\u0007\u001a"+ + "\u0000\u0000\u0b36\u0b37\u0007\u000e\u0000\u0000\u0b37\u0b38\u0007\u0006"+ + "\u0000\u0000\u0b38\u0b39\u0007\u0016\u0000\u0000\u0b39\u0b3a\u0007\t\u0000"+ + "\u0000\u0b3a\u0b3b\u0007\u0011\u0000\u0000\u0b3b\u0b3c\u0007\u001b\u0000"+ + "\u0000\u0b3c\u0b3d\u0007\n\u0000\u0000\u0b3d\u01ac\u0001\u0000\u0000\u0000"+ + "\u0b3e\u0b3f\u0007\n\u0000\u0000\u0b3f\u0b40\u0007\u001a\u0000\u0000\u0b40"+ + "\u0b41\u0007\n\u0000\u0000\u0b41\u0b42\u0007\u000e\u0000\u0000\u0b42\u0b43"+ + "\u0007\u0016\u0000\u0000\u0b43\u0b44\u0007\u0010\u0000\u0000\u0b44\u0b45"+ + "\u0007\n\u0000\u0000\u0b45\u01ae\u0001\u0000\u0000\u0000\u0b46\u0b47\u0007"+ + "\n\u0000\u0000\u0b47\u0b48\u0007\u001a\u0000\u0000\u0b48\u0b49\u0007\u0018"+ + "\u0000\u0000\u0b49\u0b4a\u0007\u0006\u0000\u0000\u0b4a\u0b4b\u0007\u0005"+ + "\u0000\u0000\u0b4b\u0b4c\u0007\u0011\u0000\u0000\u0b4c\u0b4d\u0007\u0007"+ + "\u0000\u0000\u0b4d\u01b0\u0001\u0000\u0000\u0000\u0b4e\u0b4f\u0007\n\u0000"+ + "\u0000\u0b4f\u0b50\u0007\u001a\u0000\u0000\u0b50\u0b51\u0007\u0010\u0000"+ + "\u0000\u0b51\u0b52\u0007\n\u0000\u0000\u0b52\u0b53\u0007\u0007\u0000\u0000"+ + "\u0b53\u0b54\u0007\t\u0000\u0000\u0b54\u0b55\u0007\u0011\u0000\u0000\u0b55"+ + "\u0b56\u0007\u0013\u0000\u0000\u0b56\u0b57\u0007\u0007\u0000\u0000\u0b57"+ + "\u01b2\u0001\u0000\u0000\u0000\u0b58\u0b59\u0007\n\u0000\u0000\u0b59\u0b5a"+ + "\u0007\u001a\u0000\u0000\u0b5a\u0b5b\u0007\u0010\u0000\u0000\u0b5b\u0b5c"+ + "\u0007\n\u0000\u0000\u0b5c\u0b5d\u0007\r\u0000\u0000\u0b5d\u0b5e\u0007"+ + "\u0007\u0000\u0000\u0b5e\u0b5f\u0007\u0005\u0000\u0000\u0b5f\u0b60\u0007"+ + "\u0006\u0000\u0000\u0b60\u01b4\u0001\u0000\u0000\u0000\u0b61\u0b62\u0007"+ + "\u0019\u0000\u0000\u0b62\u0b63\u0007\u0005\u0000\u0000\u0b63\u0b64\u0007"+ + "\u000f\u0000\u0000\u0b64\u0b65\u0007\u0011\u0000\u0000\u0b65\u0b66\u0007"+ + "\u0006\u0000\u0000\u0b66\u0b67\u0007\b\u0000\u0000\u0b67\u01b6\u0001\u0000"+ + "\u0000\u0000\u0b68\u0b69\u0007\u0019\u0000\u0000\u0b69\u0b6a\u0007\u0011"+ + "\u0000\u0000\u0b6a\u0b6b\u0007\r\u0000\u0000\u0b6b\u0b6c\u0007\t\u0000"+ + "\u0000\u0b6c\u0b6d\u0007\u0010\u0000\u0000\u0b6d\u01b8\u0001\u0000\u0000"+ + "\u0000\u0b6e\u0b6f\u0007\u0019\u0000\u0000\u0b6f\u0b70\u0007\u0013\u0000"+ + "\u0000\u0b70\u0b71\u0007\u0006\u0000\u0000\u0b71\u0b72\u0007\u0006\u0000"+ + "\u0000\u0b72\u0b73\u0007\u0013\u0000\u0000\u0b73\u0b74\u0007\u001c\u0000"+ + "\u0000\u0b74\u0b75\u0007\u0011\u0000\u0000\u0b75\u0b76\u0007\u0007\u0000"+ + "\u0000\u0b76\u0b77\u0007\u0017\u0000\u0000\u0b77\u01ba\u0001\u0000\u0000"+ + "\u0000\u0b78\u0b79\u0007\u0019\u0000\u0000\u0b79\u0b7a\u0007\u0013\u0000"+ + "\u0000\u0b7a\u0b7b\u0007\r\u0000\u0000\u0b7b\u0b7c\u0007\u000e\u0000\u0000"+ + "\u0b7c\u0b7d\u0007\n\u0000\u0000\u0b7d\u01bc\u0001\u0000\u0000\u0000\u0b7e"+ + "\u0b7f\u0007\u0019\u0000\u0000\u0b7f\u0b80\u0007\u0013\u0000\u0000\u0b80"+ + "\u0b81\u0007\r\u0000\u0000\u0b81\u0b82\u0007\u001c\u0000\u0000\u0b82\u0b83"+ + "\u0007\u0005\u0000\u0000\u0b83\u0b84\u0007\r\u0000\u0000\u0b84\u0b85\u0007"+ + "\f\u0000\u0000\u0b85\u01be\u0001\u0000\u0000\u0000\u0b86\u0b87\u0007\u0019"+ + "\u0000\u0000\u0b87\u0b88\u0007\u0016\u0000\u0000\u0b88\u0b89\u0007\u0007"+ + "\u0000\u0000\u0b89\u0b8a\u0007\u000e\u0000\u0000\u0b8a\u0b8b\u0007\u0010"+ + "\u0000\u0000\u0b8b\u0b8c\u0007\u0011\u0000\u0000\u0b8c\u0b8d\u0007\u0013"+ + "\u0000\u0000\u0b8d\u0b8e\u0007\u0007\u0000\u0000\u0b8e\u01c0\u0001\u0000"+ + "\u0000\u0000\u0b8f\u0b90\u0007\u0019\u0000\u0000\u0b90\u0b91\u0007\u0016"+ + "\u0000\u0000\u0b91\u0b92\u0007\u0007\u0000\u0000\u0b92\u0b93\u0007\u000e"+ + "\u0000\u0000\u0b93\u0b94\u0007\u0010\u0000\u0000\u0b94\u0b95\u0007\u0011"+ + "\u0000\u0000\u0b95\u0b96\u0007\u0013\u0000\u0000\u0b96\u0b97\u0007\u0007"+ + "\u0000\u0000\u0b97\u0b98\u0007\t\u0000\u0000\u0b98\u01c2\u0001\u0000\u0000"+ + "\u0000\u0b99\u0b9a\u0007\u0017\u0000\u0000\u0b9a\u0b9b\u0007\u0006\u0000"+ + "\u0000\u0b9b\u0b9c\u0007\u0013\u0000\u0000\u0b9c\u0b9d\u0007\u0012\u0000"+ + "\u0000\u0b9d\u0b9e\u0007\u0005\u0000\u0000\u0b9e\u0b9f\u0007\u0006\u0000"+ + "\u0000\u0b9f\u01c4\u0001\u0000\u0000\u0000\u0ba0\u0ba1\u0007\u0017\u0000"+ + "\u0000\u0ba1\u0ba2\u0007\r\u0000\u0000\u0ba2\u0ba3\u0007\u0005\u0000\u0000"+ + "\u0ba3\u0ba4\u0007\u0007\u0000\u0000\u0ba4\u0ba5\u0007\u0010\u0000\u0000"+ + "\u0ba5\u0ba6\u0007\n\u0000\u0000\u0ba6\u0ba7\u0007\f\u0000\u0000\u0ba7"+ + "\u01c6\u0001\u0000\u0000\u0000\u0ba8\u0ba9\u0007\u0014\u0000\u0000\u0ba9"+ + "\u0baa\u0007\u0005\u0000\u0000\u0baa\u0bab\u0007\u0007\u0000\u0000\u0bab"+ + "\u0bac\u0007\f\u0000\u0000\u0bac\u0bad\u0007\u0006\u0000\u0000\u0bad\u0bae"+ + "\u0007\n\u0000\u0000\u0bae\u0baf\u0007\r\u0000\u0000\u0baf\u01c8\u0001"+ + "\u0000\u0000\u0000\u0bb0\u0bb1\u0007\u0014\u0000\u0000\u0bb1\u0bb2\u0007"+ + "\n\u0000\u0000\u0bb2\u0bb3\u0007\u0005\u0000\u0000\u0bb3\u0bb4\u0007\f"+ + "\u0000\u0000\u0bb4\u0bb5\u0007\n\u0000\u0000\u0bb5\u0bb6\u0007\r\u0000"+ + "\u0000\u0bb6\u01ca\u0001\u0000\u0000\u0000\u0bb7\u0bb8\u0007\u0014\u0000"+ + "\u0000\u0bb8\u0bb9\u0007\u0013\u0000\u0000\u0bb9\u0bba\u0007\u0006\u0000"+ + "\u0000\u0bba\u0bbb\u0007\f\u0000\u0000\u0bbb\u01cc\u0001\u0000\u0000\u0000"+ + "\u0bbc\u0bbd\u0007\u0014\u0000\u0000\u0bbd\u0bbe\u0007\u0013\u0000\u0000"+ + "\u0bbe\u0bbf\u0007\u0016\u0000\u0000\u0bbf\u0bc0\u0007\r\u0000\u0000\u0bc0"+ + "\u01ce\u0001\u0000\u0000\u0000\u0bc1\u0bc2\u0007\u0011\u0000\u0000\u0bc2"+ + "\u0bc3\u0007\f\u0000\u0000\u0bc3\u0bc4\u0007\n\u0000\u0000\u0bc4\u0bc5"+ + "\u0007\u0007\u0000\u0000\u0bc5\u0bc6\u0007\u0010\u0000\u0000\u0bc6\u0bc7"+ + "\u0007\u0011\u0000\u0000\u0bc7\u0bc8\u0007\u0010\u0000\u0000\u0bc8\u0bc9"+ + "\u0007\b\u0000\u0000\u0bc9\u01d0\u0001\u0000\u0000\u0000\u0bca\u0bcb\u0007"+ + "\u0011\u0000\u0000\u0bcb\u0bcc\u0007\u0019\u0000\u0000\u0bcc\u01d2\u0001"+ + "\u0000\u0000\u0000\u0bcd\u0bce\u0007\u0011\u0000\u0000\u0bce\u0bcf\u0007"+ + "\u000f\u0000\u0000\u0bcf\u0bd0\u0007\u000f\u0000\u0000\u0bd0\u0bd1\u0007"+ + "\n\u0000\u0000\u0bd1\u0bd2\u0007\f\u0000\u0000\u0bd2\u0bd3\u0007\u0011"+ + "\u0000\u0000\u0bd3\u0bd4\u0007\u0005\u0000\u0000\u0bd4\u0bd5\u0007\u0010"+ + "\u0000\u0000\u0bd5\u0bd6\u0007\n\u0000\u0000\u0bd6\u01d4\u0001\u0000\u0000"+ + "\u0000\u0bd7\u0bd8\u0007\u0011\u0000\u0000\u0bd8\u0bd9\u0007\u000f\u0000"+ + "\u0000\u0bd9\u0bda\u0007\u000f\u0000\u0000\u0bda\u0bdb\u0007\u0016\u0000"+ + "\u0000\u0bdb\u0bdc\u0007\u0010\u0000\u0000\u0bdc\u0bdd\u0007\u0005\u0000"+ + "\u0000\u0bdd\u0bde\u0007\u0012\u0000\u0000\u0bde\u0bdf\u0007\u0006\u0000"+ + "\u0000\u0bdf\u0be0\u0007\n\u0000\u0000\u0be0\u01d6\u0001\u0000\u0000\u0000"+ + "\u0be1\u0be2\u0007\u0011\u0000\u0000\u0be2\u0be3\u0007\u000f\u0000\u0000"+ + "\u0be3\u0be4\u0007\u0018\u0000\u0000\u0be4\u0be5\u0007\u0006\u0000\u0000"+ + "\u0be5\u0be6\u0007\u0011\u0000\u0000\u0be6\u0be7\u0007\u000e\u0000\u0000"+ + "\u0be7\u0be8\u0007\u0011\u0000\u0000\u0be8\u0be9\u0007\u0010\u0000\u0000"+ + "\u0be9\u01d8\u0001\u0000\u0000\u0000\u0bea\u0beb\u0007\u0011\u0000\u0000"+ + "\u0beb\u0bec\u0007\u0007\u0000\u0000\u0bec\u0bed\u0007\u000e\u0000\u0000"+ + "\u0bed\u0bee\u0007\u0006\u0000\u0000\u0bee\u0bef\u0007\u0016\u0000\u0000"+ + "\u0bef\u0bf0\u0007\f\u0000\u0000\u0bf0\u0bf1\u0007\u0011\u0000\u0000\u0bf1"+ + "\u0bf2\u0007\u0007\u0000\u0000\u0bf2\u0bf3\u0007\u0017\u0000\u0000\u0bf3"+ + "\u01da\u0001\u0000\u0000\u0000\u0bf4\u0bf5\u0007\u0011\u0000\u0000\u0bf5"+ + "\u0bf6\u0007\u0007\u0000\u0000\u0bf6\u0bf7\u0007\u000e\u0000\u0000\u0bf7"+ + "\u0bf8\u0007\r\u0000\u0000\u0bf8\u0bf9\u0007\n\u0000\u0000\u0bf9\u0bfa"+ + "\u0007\u000f\u0000\u0000\u0bfa\u0bfb\u0007\n\u0000\u0000\u0bfb\u0bfc\u0007"+ + "\u0007\u0000\u0000\u0bfc\u0bfd\u0007\u0010\u0000\u0000\u0bfd\u01dc\u0001"+ + "\u0000\u0000\u0000\u0bfe\u0bff\u0007\u0011\u0000\u0000\u0bff\u0c00\u0007"+ + "\u0007\u0000\u0000\u0c00\u0c01\u0007\f\u0000\u0000\u0c01\u0c02\u0007\n"+ + "\u0000\u0000\u0c02\u0c03\u0007\u001a\u0000\u0000\u0c03\u01de\u0001\u0000"+ + "\u0000\u0000\u0c04\u0c05\u0007\u0011\u0000\u0000\u0c05\u0c06\u0007\u0007"+ + "\u0000\u0000\u0c06\u0c07\u0007\f\u0000\u0000\u0c07\u0c08\u0007\n\u0000"+ + "\u0000\u0c08\u0c09\u0007\u001a\u0000\u0000\u0c09\u0c0a\u0007\n\u0000\u0000"+ + "\u0c0a\u0c0b\u0007\t\u0000\u0000\u0c0b\u01e0\u0001\u0000\u0000\u0000\u0c0c"+ + "\u0c0d\u0007\u0011\u0000\u0000\u0c0d\u0c0e\u0007\u0007\u0000\u0000\u0c0e"+ + "\u0c0f\u0007\u0014\u0000\u0000\u0c0f\u0c10\u0007\n\u0000\u0000\u0c10\u0c11"+ + "\u0007\r\u0000\u0000\u0c11\u0c12\u0007\u0011\u0000\u0000\u0c12\u0c13\u0007"+ + "\u0010\u0000\u0000\u0c13\u01e2\u0001\u0000\u0000\u0000\u0c14\u0c15\u0007"+ + "\u0011\u0000\u0000\u0c15\u0c16\u0007\u0007\u0000\u0000\u0c16\u0c17\u0007"+ + "\u0014\u0000\u0000\u0c17\u0c18\u0007\n\u0000\u0000\u0c18\u0c19\u0007\r"+ + "\u0000\u0000\u0c19\u0c1a\u0007\u0011\u0000\u0000\u0c1a\u0c1b\u0007\u0010"+ + "\u0000\u0000\u0c1b\u0c1c\u0007\t\u0000\u0000\u0c1c\u01e4\u0001\u0000\u0000"+ + "\u0000\u0c1d\u0c1e\u0007\u0011\u0000\u0000\u0c1e\u0c1f\u0007\u0007\u0000"+ + "\u0000\u0c1f\u0c20\u0007\u0006\u0000\u0000\u0c20\u0c21\u0007\u0011\u0000"+ + "\u0000\u0c21\u0c22\u0007\u0007\u0000\u0000\u0c22\u0c23\u0007\n\u0000\u0000"+ + "\u0c23\u01e6\u0001\u0000\u0000\u0000\u0c24\u0c25\u0007\u0011\u0000\u0000"+ + "\u0c25\u0c26\u0007\u0007\u0000\u0000\u0c26\u0c27\u0007\t\u0000\u0000\u0c27"+ + "\u0c28\u0007\n\u0000\u0000\u0c28\u0c29\u0007\u0007\u0000\u0000\u0c29\u0c2a"+ + "\u0007\t\u0000\u0000\u0c2a\u0c2b\u0007\u0011\u0000\u0000\u0c2b\u0c2c\u0007"+ + "\u0010\u0000\u0000\u0c2c\u0c2d\u0007\u0011\u0000\u0000\u0c2d\u0c2e\u0007"+ + "\u001b\u0000\u0000\u0c2e\u0c2f\u0007\n\u0000\u0000\u0c2f\u01e8\u0001\u0000"+ + "\u0000\u0000\u0c30\u0c31\u0007\u0011\u0000\u0000\u0c31\u0c32\u0007\u0007"+ + "\u0000\u0000\u0c32\u0c33\u0007\t\u0000\u0000\u0c33\u0c34\u0007\n\u0000"+ + "\u0000\u0c34\u0c35\u0007\r\u0000\u0000\u0c35\u0c36\u0007\u0010\u0000\u0000"+ + "\u0c36\u01ea\u0001\u0000\u0000\u0000\u0c37\u0c38\u0007\u0011\u0000\u0000"+ + "\u0c38\u0c39\u0007\u0007\u0000\u0000\u0c39\u0c3a\u0007\t\u0000\u0000\u0c3a"+ + "\u0c3b\u0007\u0010\u0000\u0000\u0c3b\u0c3c\u0007\n\u0000\u0000\u0c3c\u0c3d"+ + "\u0007\u0005\u0000\u0000\u0c3d\u0c3e\u0007\f\u0000\u0000\u0c3e\u01ec\u0001"+ + "\u0000\u0000\u0000\u0c3f\u0c40\u0007\u0011\u0000\u0000\u0c40\u0c41\u0007"+ + "\u0007\u0000\u0000\u0c41\u0c42\u0007\u001b\u0000\u0000\u0c42\u0c43\u0007"+ + "\u0013\u0000\u0000\u0c43\u0c44\u0007\u0015\u0000\u0000\u0c44\u0c45\u0007"+ + "\n\u0000\u0000\u0c45\u0c46\u0007\r\u0000\u0000\u0c46\u01ee\u0001\u0000"+ + "\u0000\u0000\u0c47\u0c48\u0007\u0011\u0000\u0000\u0c48\u0c49\u0007\t\u0000"+ + "\u0000\u0c49\u0c4a\u0007\u0013\u0000\u0000\u0c4a\u0c4b\u0007\u0006\u0000"+ + "\u0000\u0c4b\u0c4c\u0007\u0005\u0000\u0000\u0c4c\u0c4d\u0007\u0010\u0000"+ + "\u0000\u0c4d\u0c4e\u0007\u0011\u0000\u0000\u0c4e\u0c4f\u0007\u0013\u0000"+ + "\u0000\u0c4f\u0c50\u0007\u0007\u0000\u0000\u0c50\u01f0\u0001\u0000\u0000"+ + "\u0000\u0c51\u0c52\u0007\u0015\u0000\u0000\u0c52\u0c53\u0007\n\u0000\u0000"+ + "\u0c53\u0c54\u0007\b\u0000\u0000\u0c54\u01f2\u0001\u0000\u0000\u0000\u0c55"+ + "\u0c56\u0007\u0006\u0000\u0000\u0c56\u0c57\u0007\u0005\u0000\u0000\u0c57"+ + "\u0c58\u0007\u0012\u0000\u0000\u0c58\u0c59\u0007\n\u0000\u0000\u0c59\u0c5a"+ + "\u0007\u0006\u0000\u0000\u0c5a\u01f4\u0001\u0000\u0000\u0000\u0c5b\u0c5c"+ + "\u0007\u0006\u0000\u0000\u0c5c\u0c5d\u0007\u0005\u0000\u0000\u0c5d\u0c5e"+ + "\u0007\u0007\u0000\u0000\u0c5e\u0c5f\u0007\u0017\u0000\u0000\u0c5f\u0c60"+ + "\u0007\u0016\u0000\u0000\u0c60\u0c61\u0007\u0005\u0000\u0000\u0c61\u0c62"+ + "\u0007\u0017\u0000\u0000\u0c62\u0c63\u0007\n\u0000\u0000\u0c63\u01f6\u0001"+ + "\u0000\u0000\u0000\u0c64\u0c65\u0007\u0006\u0000\u0000\u0c65\u0c66\u0007"+ + "\u0005\u0000\u0000\u0c66\u0c67\u0007\r\u0000\u0000\u0c67\u0c68\u0007\u0017"+ + "\u0000\u0000\u0c68\u0c69\u0007\n\u0000\u0000\u0c69\u01f8\u0001\u0000\u0000"+ + "\u0000\u0c6a\u0c6b\u0007\u0006\u0000\u0000\u0c6b\u0c6c\u0007\u0005\u0000"+ + "\u0000\u0c6c\u0c6d\u0007\t\u0000\u0000\u0c6d\u0c6e\u0007\u0010\u0000\u0000"+ + "\u0c6e\u01fa\u0001\u0000\u0000\u0000\u0c6f\u0c70\u0007\u0006\u0000\u0000"+ + "\u0c70\u0c71\u0007\n\u0000\u0000\u0c71\u0c72\u0007\u0005\u0000\u0000\u0c72"+ + "\u0c73\u0007\u0015\u0000\u0000\u0c73\u0c74\u0007\u0018\u0000\u0000\u0c74"+ + "\u0c75\u0007\r\u0000\u0000\u0c75\u0c76\u0007\u0013\u0000\u0000\u0c76\u0c77"+ + "\u0007\u0013\u0000\u0000\u0c77\u0c78\u0007\u0019\u0000\u0000\u0c78\u01fc"+ + "\u0001\u0000\u0000\u0000\u0c79\u0c7a\u0007\u0006\u0000\u0000\u0c7a\u0c7b"+ + "\u0007\n\u0000\u0000\u0c7b\u0c7c\u0007\u001b\u0000\u0000\u0c7c\u0c7d\u0007"+ + "\n\u0000\u0000\u0c7d\u0c7e\u0007\u0006\u0000\u0000\u0c7e\u01fe\u0001\u0000"+ + "\u0000\u0000\u0c7f\u0c80\u0007\u0006\u0000\u0000\u0c80\u0c81\u0007\u0011"+ + "\u0000\u0000\u0c81\u0c82\u0007\t\u0000\u0000\u0c82\u0c83\u0007\u0010\u0000"+ + "\u0000\u0c83\u0c84\u0007\n\u0000\u0000\u0c84\u0c85\u0007\u0007\u0000\u0000"+ + "\u0c85\u0200\u0001\u0000\u0000\u0000\u0c86\u0c87\u0007\u0006\u0000\u0000"+ + "\u0c87\u0c88\u0007\u0013\u0000\u0000\u0c88\u0c89\u0007\u0005\u0000\u0000"+ + "\u0c89\u0c8a\u0007\f\u0000\u0000\u0c8a\u0202\u0001\u0000\u0000\u0000\u0c8b"+ + "\u0c8c\u0007\u0006\u0000\u0000\u0c8c\u0c8d\u0007\u0013\u0000\u0000\u0c8d"+ + "\u0c8e\u0007\u000e\u0000\u0000\u0c8e\u0c8f\u0007\u0005\u0000\u0000\u0c8f"+ + "\u0c90\u0007\u0006\u0000\u0000\u0c90\u0204\u0001\u0000\u0000\u0000\u0c91"+ + "\u0c92\u0007\u0006\u0000\u0000\u0c92\u0c93\u0007\u0013\u0000\u0000\u0c93"+ + "\u0c94\u0007\u000e\u0000\u0000\u0c94\u0c95\u0007\u0005\u0000\u0000\u0c95"+ + "\u0c96\u0007\u0010\u0000\u0000\u0c96\u0c97\u0007\u0011\u0000\u0000\u0c97"+ + "\u0c98\u0007\u0013\u0000\u0000\u0c98\u0c99\u0007\u0007\u0000\u0000\u0c99"+ + "\u0206\u0001\u0000\u0000\u0000\u0c9a\u0c9b\u0007\u0006\u0000\u0000\u0c9b"+ + "\u0c9c\u0007\u0013\u0000\u0000\u0c9c\u0c9d\u0007\u000e\u0000\u0000\u0c9d"+ + "\u0c9e\u0007\u0015\u0000\u0000\u0c9e\u0208\u0001\u0000\u0000\u0000\u0c9f"+ + "\u0ca0\u0007\u000f\u0000\u0000\u0ca0\u0ca1\u0007\u0005\u0000\u0000\u0ca1"+ + "\u0ca2\u0007\u0018\u0000\u0000\u0ca2\u0ca3\u0007\u0018\u0000\u0000\u0ca3"+ + "\u0ca4\u0007\u0011\u0000\u0000\u0ca4\u0ca5\u0007\u0007\u0000\u0000\u0ca5"+ + "\u0ca6\u0007\u0017\u0000\u0000\u0ca6\u020a\u0001\u0000\u0000\u0000\u0ca7"+ + "\u0ca8\u0007\u000f\u0000\u0000\u0ca8\u0ca9\u0007\u0005\u0000\u0000\u0ca9"+ + "\u0caa\u0007\u0010\u0000\u0000\u0caa\u0cab\u0007\u000e\u0000\u0000\u0cab"+ + "\u0cac\u0007\u0014\u0000\u0000\u0cac\u020c\u0001\u0000\u0000\u0000\u0cad"+ + "\u0cae\u0007\u000f\u0000\u0000\u0cae\u0caf\u0007\u0005\u0000\u0000\u0caf"+ + "\u0cb0\u0007\u0010\u0000\u0000\u0cb0\u0cb1\u0007\u000e\u0000\u0000\u0cb1"+ + "\u0cb2\u0007\u0014\u0000\u0000\u0cb2\u0cb3\u0007\n\u0000\u0000\u0cb3\u0cb4"+ + "\u0007\f\u0000\u0000\u0cb4\u020e\u0001\u0000\u0000\u0000\u0cb5\u0cb6\u0007"+ + "\u000f\u0000\u0000\u0cb6\u0cb7\u0007\u0005\u0000\u0000\u0cb7\u0cb8\u0007"+ + "\u0010\u0000\u0000\u0cb8\u0cb9\u0007\n\u0000\u0000\u0cb9\u0cba\u0007\r"+ + "\u0000\u0000\u0cba\u0cbb\u0007\u0011\u0000\u0000\u0cbb\u0cbc\u0007\u0005"+ + "\u0000\u0000\u0cbc\u0cbd\u0007\u0006\u0000\u0000\u0cbd\u0cbe\u0007\u0011"+ + "\u0000\u0000\u0cbe\u0cbf\u0007\u000b\u0000\u0000\u0cbf\u0cc0\u0007\n\u0000"+ + "\u0000\u0cc0\u0cc1\u0007\f\u0000\u0000\u0cc1\u0210\u0001\u0000\u0000\u0000"+ + "\u0cc2\u0cc3\u0007\u000f\u0000\u0000\u0cc3\u0cc4\u0007\u0005\u0000\u0000"+ + "\u0cc4\u0cc5\u0007\u001a\u0000\u0000\u0cc5\u0cc6\u0007\u001b\u0000\u0000"+ + "\u0cc6\u0cc7\u0007\u0005\u0000\u0000\u0cc7\u0cc8\u0007\u0006\u0000\u0000"+ + "\u0cc8\u0cc9\u0007\u0016\u0000\u0000\u0cc9\u0cca\u0007\n\u0000\u0000\u0cca"+ + "\u0212\u0001\u0000\u0000\u0000\u0ccb\u0ccc\u0007\u000f\u0000\u0000\u0ccc"+ + "\u0ccd\u0007\n\u0000\u0000\u0ccd\u0cce\u0007\r\u0000\u0000\u0cce\u0ccf"+ + "\u0007\u0017\u0000\u0000\u0ccf\u0cd0\u0007\n\u0000\u0000\u0cd0\u0214\u0001"+ + "\u0000\u0000\u0000\u0cd1\u0cd2\u0007\u000f\u0000\u0000\u0cd2\u0cd3\u0007"+ + "\u0011\u0000\u0000\u0cd3\u0cd4\u0007\u0007\u0000\u0000\u0cd4\u0cd5\u0007"+ + "\u0016\u0000\u0000\u0cd5\u0cd6\u0007\u0010\u0000\u0000\u0cd6\u0cd7\u0007"+ + "\n\u0000\u0000\u0cd7\u0216\u0001\u0000\u0000\u0000\u0cd8\u0cd9\u0007\u000f"+ + "\u0000\u0000\u0cd9\u0cda\u0007\u0011\u0000\u0000\u0cda\u0cdb\u0007\u0007"+ + "\u0000\u0000\u0cdb\u0cdc\u0007\u001b\u0000\u0000\u0cdc\u0cdd\u0007\u0005"+ + "\u0000\u0000\u0cdd\u0cde\u0007\u0006\u0000\u0000\u0cde\u0cdf\u0007\u0016"+ + "\u0000\u0000\u0cdf\u0ce0\u0007\n\u0000\u0000\u0ce0\u0218\u0001\u0000\u0000"+ + "\u0000\u0ce1\u0ce2\u0007\u000f\u0000\u0000\u0ce2\u0ce3\u0007\u0013\u0000"+ + "\u0000\u0ce3\u0ce4\u0007\f\u0000\u0000\u0ce4\u0ce5\u0007\n\u0000\u0000"+ + "\u0ce5\u021a\u0001\u0000\u0000\u0000\u0ce6\u0ce7\u0007\u000f\u0000\u0000"+ + "\u0ce7\u0ce8\u0007\u0013\u0000\u0000\u0ce8\u0ce9\u0007\u0007\u0000\u0000"+ + "\u0ce9\u0cea\u0007\u0010\u0000\u0000\u0cea\u0ceb\u0007\u0014\u0000\u0000"+ + "\u0ceb\u021c\u0001\u0000\u0000\u0000\u0cec\u0ced\u0007\u000f\u0000\u0000"+ + "\u0ced\u0cee\u0007\u0013\u0000\u0000\u0cee\u0cef\u0007\u001b\u0000\u0000"+ + "\u0cef\u0cf0\u0007\n\u0000\u0000\u0cf0\u021e\u0001\u0000\u0000\u0000\u0cf1"+ + "\u0cf2\u0007\u0007\u0000\u0000\u0cf2\u0cf3\u0007\u0005\u0000\u0000\u0cf3"+ + "\u0cf4\u0007\u000f\u0000\u0000\u0cf4\u0cf5\u0007\n\u0000\u0000\u0cf5\u0220"+ + "\u0001\u0000\u0000\u0000\u0cf6\u0cf7\u0007\u0007\u0000\u0000\u0cf7\u0cf8"+ + "\u0007\u0005\u0000\u0000\u0cf8\u0cf9\u0007\u000f\u0000\u0000\u0cf9\u0cfa"+ + "\u0007\n\u0000\u0000\u0cfa\u0cfb\u0007\t\u0000\u0000\u0cfb\u0222\u0001"+ + "\u0000\u0000\u0000\u0cfc\u0cfd\u0007\u0007\u0000\u0000\u0cfd\u0cfe\u0007"+ + "\n\u0000\u0000\u0cfe\u0cff\u0007\u001a\u0000\u0000\u0cff\u0d00\u0007\u0010"+ + "\u0000\u0000\u0d00\u0224\u0001\u0000\u0000\u0000\u0d01\u0d02\u0007\u0007"+ + "\u0000\u0000\u0d02\u0d03\u0007\u0013\u0000\u0000\u0d03\u0226\u0001\u0000"+ + "\u0000\u0000\u0d04\u0d05\u0007\u0007\u0000\u0000\u0d05\u0d06\u0007\u0013"+ + "\u0000\u0000\u0d06\u0d07\u0007\u0010\u0000\u0000\u0d07\u0d08\u0007\u0014"+ + "\u0000\u0000\u0d08\u0d09\u0007\u0011\u0000\u0000\u0d09\u0d0a\u0007\u0007"+ + "\u0000\u0000\u0d0a\u0d0b\u0007\u0017\u0000\u0000\u0d0b\u0228\u0001\u0000"+ + "\u0000\u0000\u0d0c\u0d0d\u0007\u0007\u0000\u0000\u0d0d\u0d0e\u0007\u0013"+ + "\u0000\u0000\u0d0e\u0d0f\u0007\u0010\u0000\u0000\u0d0f\u0d10\u0007\u0011"+ + "\u0000\u0000\u0d10\u0d11\u0007\u0019\u0000\u0000\u0d11\u0d12\u0007\b\u0000"+ + "\u0000\u0d12\u022a\u0001\u0000\u0000\u0000\u0d13\u0d14\u0007\u0007\u0000"+ + "\u0000\u0d14\u0d15\u0007\u0013\u0000\u0000\u0d15\u0d16\u0007\u001c\u0000"+ + "\u0000\u0d16\u0d17\u0007\u0005\u0000\u0000\u0d17\u0d18\u0007\u0011\u0000"+ + "\u0000\u0d18\u0d19\u0007\u0010\u0000\u0000\u0d19\u022c\u0001\u0000\u0000"+ + "\u0000\u0d1a\u0d1b\u0007\u0007\u0000\u0000\u0d1b\u0d1c\u0007\u0016\u0000"+ + "\u0000\u0d1c\u0d1d\u0007\u0006\u0000\u0000\u0d1d\u0d1e\u0007\u0006\u0000"+ + "\u0000\u0d1e\u0d1f\u0007\t\u0000\u0000\u0d1f\u022e\u0001\u0000\u0000\u0000"+ + "\u0d20\u0d21\u0007\u0013\u0000\u0000\u0d21\u0d22\u0007\u0012\u0000\u0000"+ + "\u0d22\u0d23\u0007\u001e\u0000\u0000\u0d23\u0d24\u0007\n\u0000\u0000\u0d24"+ + "\u0d25\u0007\u000e\u0000\u0000\u0d25\u0d26\u0007\u0010\u0000\u0000\u0d26"+ + "\u0230\u0001\u0000\u0000\u0000\u0d27\u0d28\u0007\u0013\u0000\u0000\u0d28"+ + "\u0d29\u0007\u0019\u0000\u0000\u0d29\u0232\u0001\u0000\u0000\u0000\u0d2a"+ + "\u0d2b\u0007\u0013\u0000\u0000\u0d2b\u0d2c\u0007\u0019\u0000\u0000\u0d2c"+ + "\u0d2d\u0007\u0019\u0000\u0000\u0d2d\u0234\u0001\u0000\u0000\u0000\u0d2e"+ + "\u0d2f\u0007\u0013\u0000\u0000\u0d2f\u0d30\u0007\u0011\u0000\u0000\u0d30"+ + "\u0d31\u0007\f\u0000\u0000\u0d31\u0d32\u0007\t\u0000\u0000\u0d32\u0236"+ + "\u0001\u0000\u0000\u0000\u0d33\u0d34\u0007\u0013\u0000\u0000\u0d34\u0d35"+ + "\u0007\u0018\u0000\u0000\u0d35\u0d36\u0007\n\u0000\u0000\u0d36\u0d37\u0007"+ + "\r\u0000\u0000\u0d37\u0d38\u0007\u0005\u0000\u0000\u0d38\u0d39\u0007\u0010"+ + "\u0000\u0000\u0d39\u0d3a\u0007\u0013\u0000\u0000\u0d3a\u0d3b\u0007\r\u0000"+ + "\u0000\u0d3b\u0238\u0001\u0000\u0000\u0000\u0d3c\u0d3d\u0007\u0013\u0000"+ + "\u0000\u0d3d\u0d3e\u0007\u0018\u0000\u0000\u0d3e\u0d3f\u0007\u0010\u0000"+ + "\u0000\u0d3f\u0d40\u0007\u0011\u0000\u0000\u0d40\u0d41\u0007\u0013\u0000"+ + "\u0000\u0d41\u0d42\u0007\u0007\u0000\u0000\u0d42\u023a\u0001\u0000\u0000"+ + "\u0000\u0d43\u0d44\u0007\u0013\u0000\u0000\u0d44\u0d45\u0007\u0018\u0000"+ + "\u0000\u0d45\u0d46\u0007\u0010\u0000\u0000\u0d46\u0d47\u0007\u0011\u0000"+ + "\u0000\u0d47\u0d48\u0007\u0013\u0000\u0000\u0d48\u0d49\u0007\u0007\u0000"+ + "\u0000\u0d49\u0d4a\u0007\t\u0000\u0000\u0d4a\u023c\u0001\u0000\u0000\u0000"+ + "\u0d4b\u0d4c\u0007\u0013\u0000\u0000\u0d4c\u0d4d\u0007\u001c\u0000\u0000"+ + "\u0d4d\u0d4e\u0007\u0007\u0000\u0000\u0d4e\u0d4f\u0007\n\u0000\u0000\u0d4f"+ + "\u0d50\u0007\f\u0000\u0000\u0d50\u023e\u0001\u0000\u0000\u0000\u0d51\u0d52"+ + "\u0007\u0013\u0000\u0000\u0d52\u0d53\u0007\u001c\u0000\u0000\u0d53\u0d54"+ + "\u0007\u0007\u0000\u0000\u0d54\u0d55\u0007\n\u0000\u0000\u0d55\u0d56\u0007"+ + "\r\u0000\u0000\u0d56\u0240\u0001\u0000\u0000\u0000\u0d57\u0d58\u0007\u0018"+ + "\u0000\u0000\u0d58\u0d59\u0007\u0005\u0000\u0000\u0d59\u0d5a\u0007\r\u0000"+ + "\u0000\u0d5a\u0d5b\u0007\t\u0000\u0000\u0d5b\u0d5c\u0007\n\u0000\u0000"+ + "\u0d5c\u0d5d\u0007\r\u0000\u0000\u0d5d\u0242\u0001\u0000\u0000\u0000\u0d5e"+ + "\u0d5f\u0007\u0018\u0000\u0000\u0d5f\u0d60\u0007\u0005\u0000\u0000\u0d60"+ + "\u0d61\u0007\r\u0000\u0000\u0d61\u0d62\u0007\u0010\u0000\u0000\u0d62\u0d63"+ + "\u0007\u0011\u0000\u0000\u0d63\u0d64\u0007\u0005\u0000\u0000\u0d64\u0d65"+ + "\u0007\u0006\u0000\u0000\u0d65\u0244\u0001\u0000\u0000\u0000\u0d66\u0d67"+ + "\u0007\u0018\u0000\u0000\u0d67\u0d68\u0007\u0005\u0000\u0000\u0d68\u0d69"+ + "\u0007\r\u0000\u0000\u0d69\u0d6a\u0007\u0010\u0000\u0000\u0d6a\u0d6b\u0007"+ + "\u0011\u0000\u0000\u0d6b\u0d6c\u0007\u0010\u0000\u0000\u0d6c\u0d6d\u0007"+ + "\u0011\u0000\u0000\u0d6d\u0d6e\u0007\u0013\u0000\u0000\u0d6e\u0d6f\u0007"+ + "\u0007\u0000\u0000\u0d6f\u0246\u0001\u0000\u0000\u0000\u0d70\u0d71\u0007"+ + "\u0018\u0000\u0000\u0d71\u0d72\u0007\u0005\u0000\u0000\u0d72\u0d73\u0007"+ + "\t\u0000\u0000\u0d73\u0d74\u0007\t\u0000\u0000\u0d74\u0d75\u0007\u0011"+ + "\u0000\u0000\u0d75\u0d76\u0007\u0007\u0000\u0000\u0d76\u0d77\u0007\u0017"+ + "\u0000\u0000\u0d77\u0248\u0001\u0000\u0000\u0000\u0d78\u0d79\u0007\u0018"+ + "\u0000\u0000\u0d79\u0d7a\u0007\u0005\u0000\u0000\u0d7a\u0d7b\u0007\t\u0000"+ + "\u0000\u0d7b\u0d7c\u0007\t\u0000\u0000\u0d7c\u0d7d\u0007\u001c\u0000\u0000"+ + "\u0d7d\u0d7e\u0007\u0013\u0000\u0000\u0d7e\u0d7f\u0007\r\u0000\u0000\u0d7f"+ + "\u0d80\u0007\f\u0000\u0000\u0d80\u024a\u0001\u0000\u0000\u0000\u0d81\u0d82"+ + "\u0007\u0018\u0000\u0000\u0d82\u0d83\u0007\u0006\u0000\u0000\u0d83\u0d84"+ + "\u0007\u0005\u0000\u0000\u0d84\u0d85\u0007\u0007\u0000\u0000\u0d85\u0d86"+ + "\u0007\t\u0000\u0000\u0d86\u024c\u0001\u0000\u0000\u0000\u0d87\u0d88\u0007"+ + "\u0018\u0000\u0000\u0d88\u0d89\u0007\r\u0000\u0000\u0d89\u0d8a\u0007\n"+ + "\u0000\u0000\u0d8a\u0d8b\u0007\u000e\u0000\u0000\u0d8b\u0d8c\u0007\n\u0000"+ + "\u0000\u0d8c\u0d8d\u0007\f\u0000\u0000\u0d8d\u0d8e\u0007\u0011\u0000\u0000"+ + "\u0d8e\u0d8f\u0007\u0007\u0000\u0000\u0d8f\u0d90\u0007\u0017\u0000\u0000"+ + "\u0d90\u024e\u0001\u0000\u0000\u0000\u0d91\u0d92\u0007\u0018\u0000\u0000"+ + "\u0d92\u0d93\u0007\r\u0000\u0000\u0d93\u0d94\u0007\n\u0000\u0000\u0d94"+ + "\u0d95\u0007\u0018\u0000\u0000\u0d95\u0d96\u0007\u0005\u0000\u0000\u0d96"+ + "\u0d97\u0007\r\u0000\u0000\u0d97\u0d98\u0007\n\u0000\u0000\u0d98\u0250"+ + "\u0001\u0000\u0000\u0000\u0d99\u0d9a\u0007\u0018\u0000\u0000\u0d9a\u0d9b"+ + "\u0007\r\u0000\u0000\u0d9b\u0d9c\u0007\n\u0000\u0000\u0d9c\u0d9d\u0007"+ + "\u0018\u0000\u0000\u0d9d\u0d9e\u0007\u0005\u0000\u0000\u0d9e\u0d9f\u0007"+ + "\r\u0000\u0000\u0d9f\u0da0\u0007\n\u0000\u0000\u0da0\u0da1\u0007\f\u0000"+ + "\u0000\u0da1\u0252\u0001\u0000\u0000\u0000\u0da2\u0da3\u0007\u0018\u0000"+ + "\u0000\u0da3\u0da4\u0007\r\u0000\u0000\u0da4\u0da5\u0007\n\u0000\u0000"+ + "\u0da5\u0da6\u0007\t\u0000\u0000\u0da6\u0da7\u0007\n\u0000\u0000\u0da7"+ + "\u0da8\u0007\r\u0000\u0000\u0da8\u0da9\u0007\u001b\u0000\u0000\u0da9\u0daa"+ + "\u0007\n\u0000\u0000\u0daa\u0254\u0001\u0000\u0000\u0000\u0dab\u0dac\u0007"+ + "\u0018\u0000\u0000\u0dac\u0dad\u0007\r\u0000\u0000\u0dad\u0dae\u0007\u0011"+ + "\u0000\u0000\u0dae\u0daf\u0007\u0013\u0000\u0000\u0daf\u0db0\u0007\r\u0000"+ + "\u0000\u0db0\u0256\u0001\u0000\u0000\u0000\u0db1\u0db2\u0007\u0018\u0000"+ + "\u0000\u0db2\u0db3\u0007\r\u0000\u0000\u0db3\u0db4\u0007\u0011\u0000\u0000"+ + "\u0db4\u0db5\u0007\u001b\u0000\u0000\u0db5\u0db6\u0007\u0011\u0000\u0000"+ + "\u0db6\u0db7\u0007\u0006\u0000\u0000\u0db7\u0db8\u0007\n\u0000\u0000\u0db8"+ + "\u0db9\u0007\u0017\u0000\u0000\u0db9\u0dba\u0007\n\u0000\u0000\u0dba\u0dbb"+ + "\u0007\t\u0000\u0000\u0dbb\u0258\u0001\u0000\u0000\u0000\u0dbc\u0dbd\u0007"+ + "\u0018\u0000\u0000\u0dbd\u0dbe\u0007\r\u0000\u0000\u0dbe\u0dbf\u0007\u0013"+ + "\u0000\u0000\u0dbf\u0dc0\u0007\u000e\u0000\u0000\u0dc0\u0dc1\u0007\n\u0000"+ + "\u0000\u0dc1\u0dc2\u0007\f\u0000\u0000\u0dc2\u0dc3\u0007\u0016\u0000\u0000"+ + "\u0dc3\u0dc4\u0007\r\u0000\u0000\u0dc4\u0dc5\u0007\u0005\u0000\u0000\u0dc5"+ + "\u0dc6\u0007\u0006\u0000\u0000\u0dc6\u025a\u0001\u0000\u0000\u0000\u0dc7"+ + "\u0dc8\u0007\u0018\u0000\u0000\u0dc8\u0dc9\u0007\r\u0000\u0000\u0dc9\u0dca"+ + "\u0007\u0013\u0000\u0000\u0dca\u0dcb\u0007\u000e\u0000\u0000\u0dcb\u0dcc"+ + "\u0007\n\u0000\u0000\u0dcc\u0dcd\u0007\f\u0000\u0000\u0dcd\u0dce\u0007"+ + "\u0016\u0000\u0000\u0dce\u0dcf\u0007\r\u0000\u0000\u0dcf\u0dd0\u0007\n"+ + "\u0000\u0000\u0dd0\u025c\u0001\u0000\u0000\u0000\u0dd1\u0dd2\u0007\u0018"+ + "\u0000\u0000\u0dd2\u0dd3\u0007\r\u0000\u0000\u0dd3\u0dd4\u0007\u0013\u0000"+ + "\u0000\u0dd4\u0dd5\u0007\u0017\u0000\u0000\u0dd5\u0dd6\u0007\r\u0000\u0000"+ + "\u0dd6\u0dd7\u0007\u0005\u0000\u0000\u0dd7\u0dd8\u0007\u000f\u0000\u0000"+ + "\u0dd8\u025e\u0001\u0000\u0000\u0000\u0dd9\u0dda\u0007\u001d\u0000\u0000"+ + "\u0dda\u0ddb\u0007\u0016\u0000\u0000\u0ddb\u0ddc\u0007\u0013\u0000\u0000"+ + "\u0ddc\u0ddd\u0007\u0010\u0000\u0000\u0ddd\u0dde\u0007\n\u0000\u0000\u0dde"+ + "\u0260\u0001\u0000\u0000\u0000\u0ddf\u0de0\u0007\r\u0000\u0000\u0de0\u0de1"+ + "\u0007\u0005\u0000\u0000\u0de1\u0de2\u0007\u0007\u0000\u0000\u0de2\u0de3"+ + "\u0007\u0017\u0000\u0000\u0de3\u0de4\u0007\n\u0000\u0000\u0de4\u0262\u0001"+ + "\u0000\u0000\u0000\u0de5\u0de6\u0007\r\u0000\u0000\u0de6\u0de7\u0007\n"+ + "\u0000\u0000\u0de7\u0de8\u0007\u0005\u0000\u0000\u0de8\u0de9\u0007\f\u0000"+ + "\u0000\u0de9\u0264\u0001\u0000\u0000\u0000\u0dea\u0deb\u0007\r\u0000\u0000"+ + "\u0deb\u0dec\u0007\n\u0000\u0000\u0dec\u0ded\u0007\u0005\u0000\u0000\u0ded"+ + "\u0dee\u0007\t\u0000\u0000\u0dee\u0def\u0007\t\u0000\u0000\u0def\u0df0"+ + "\u0007\u0011\u0000\u0000\u0df0\u0df1\u0007\u0017\u0000\u0000\u0df1\u0df2"+ + "\u0007\u0007\u0000\u0000\u0df2\u0266\u0001\u0000\u0000\u0000\u0df3\u0df4"+ + "\u0007\r\u0000\u0000\u0df4\u0df5\u0007\n\u0000\u0000\u0df5\u0df6\u0007"+ + "\u000e\u0000\u0000\u0df6\u0df7\u0007\u0014\u0000\u0000\u0df7\u0df8\u0007"+ + "\n\u0000\u0000\u0df8\u0df9\u0007\u000e\u0000\u0000\u0df9\u0dfa\u0007\u0015"+ + "\u0000\u0000\u0dfa\u0268\u0001\u0000\u0000\u0000\u0dfb\u0dfc\u0007\r\u0000"+ + "\u0000\u0dfc\u0dfd\u0007\n\u0000\u0000\u0dfd\u0dfe\u0007\u000e\u0000\u0000"+ + "\u0dfe\u0dff\u0007\u0016\u0000\u0000\u0dff\u0e00\u0007\r\u0000\u0000\u0e00"+ + "\u0e01\u0007\t\u0000\u0000\u0e01\u0e02\u0007\u0011\u0000\u0000\u0e02\u0e03"+ + "\u0007\u001b\u0000\u0000\u0e03\u0e04\u0007\n\u0000\u0000\u0e04\u026a\u0001"+ + "\u0000\u0000\u0000\u0e05\u0e06\u0007\r\u0000\u0000\u0e06\u0e07\u0007\n"+ + "\u0000\u0000\u0e07\u0e08\u0007\u0019\u0000\u0000\u0e08\u026c\u0001\u0000"+ + "\u0000\u0000\u0e09\u0e0a\u0007\r\u0000\u0000\u0e0a\u0e0b\u0007\n\u0000"+ + "\u0000\u0e0b\u0e0c\u0007\u0019\u0000\u0000\u0e0c\u0e0d\u0007\r\u0000\u0000"+ + "\u0e0d\u0e0e\u0007\n\u0000\u0000\u0e0e\u0e0f\u0007\t\u0000\u0000\u0e0f"+ + "\u0e10\u0007\u0014\u0000\u0000\u0e10\u026e\u0001\u0000\u0000\u0000\u0e11"+ + "\u0e12\u0007\r\u0000\u0000\u0e12\u0e13\u0007\n\u0000\u0000\u0e13\u0e14"+ + "\u0007\u0011\u0000\u0000\u0e14\u0e15\u0007\u0007\u0000\u0000\u0e15\u0e16"+ + "\u0007\f\u0000\u0000\u0e16\u0e17\u0007\n\u0000\u0000\u0e17\u0e18\u0007"+ + "\u001a\u0000\u0000\u0e18\u0270\u0001\u0000\u0000\u0000\u0e19\u0e1a\u0007"+ + "\r\u0000\u0000\u0e1a\u0e1b\u0007\n\u0000\u0000\u0e1b\u0e1c\u0007\u0006"+ + "\u0000\u0000\u0e1c\u0e1d\u0007\u0005\u0000\u0000\u0e1d\u0e1e\u0007\u0010"+ + "\u0000\u0000\u0e1e\u0e1f\u0007\u0011\u0000\u0000\u0e1f\u0e20\u0007\u001b"+ + "\u0000\u0000\u0e20\u0e21\u0007\n\u0000\u0000\u0e21\u0272\u0001\u0000\u0000"+ + "\u0000\u0e22\u0e23\u0007\r\u0000\u0000\u0e23\u0e24\u0007\n\u0000\u0000"+ + "\u0e24\u0e25\u0007\u0006\u0000\u0000\u0e25\u0e26\u0007\n\u0000\u0000\u0e26"+ + "\u0e27\u0007\u0005\u0000\u0000\u0e27\u0e28\u0007\t\u0000\u0000\u0e28\u0e29"+ + "\u0007\n\u0000\u0000\u0e29\u0274\u0001\u0000\u0000\u0000\u0e2a\u0e2b\u0007"+ + "\r\u0000\u0000\u0e2b\u0e2c\u0007\n\u0000\u0000\u0e2c\u0e2d\u0007\u0007"+ + "\u0000\u0000\u0e2d\u0e2e\u0007\u0005\u0000\u0000\u0e2e\u0e2f\u0007\u000f"+ + "\u0000\u0000\u0e2f\u0e30\u0007\n\u0000\u0000\u0e30\u0276\u0001\u0000\u0000"+ + "\u0000\u0e31\u0e32\u0007\r\u0000\u0000\u0e32\u0e33\u0007\n\u0000\u0000"+ + "\u0e33\u0e34\u0007\u0018\u0000\u0000\u0e34\u0e35\u0007\n\u0000\u0000\u0e35"+ + "\u0e36\u0007\u0005\u0000\u0000\u0e36\u0e37\u0007\u0010\u0000\u0000\u0e37"+ + "\u0e38\u0007\u0005\u0000\u0000\u0e38\u0e39\u0007\u0012\u0000\u0000\u0e39"+ + "\u0e3a\u0007\u0006\u0000\u0000\u0e3a\u0e3b\u0007\n\u0000\u0000\u0e3b\u0278"+ + "\u0001\u0000\u0000\u0000\u0e3c\u0e3d\u0007\r\u0000\u0000\u0e3d\u0e3e\u0007"+ + "\n\u0000\u0000\u0e3e\u0e3f\u0007\u0018\u0000\u0000\u0e3f\u0e40\u0007\u0006"+ + "\u0000\u0000\u0e40\u0e41\u0007\u0005\u0000\u0000\u0e41\u0e42\u0007\u000e"+ + "\u0000\u0000\u0e42\u0e43\u0007\n\u0000\u0000\u0e43\u027a\u0001\u0000\u0000"+ + "\u0000\u0e44\u0e45\u0007\r\u0000\u0000\u0e45\u0e46\u0007\n\u0000\u0000"+ + "\u0e46\u0e47\u0007\u0018\u0000\u0000\u0e47\u0e48\u0007\u0006\u0000\u0000"+ + "\u0e48\u0e49\u0007\u0011\u0000\u0000\u0e49\u0e4a\u0007\u000e\u0000\u0000"+ + "\u0e4a\u0e4b\u0007\u0005\u0000\u0000\u0e4b\u027c\u0001\u0000\u0000\u0000"+ + "\u0e4c\u0e4d\u0007\r\u0000\u0000\u0e4d\u0e4e\u0007\n\u0000\u0000\u0e4e"+ + "\u0e4f\u0007\t\u0000\u0000\u0e4f\u0e50\u0007\n\u0000\u0000\u0e50\u0e51"+ + "\u0007\u0010\u0000\u0000\u0e51\u027e\u0001\u0000\u0000\u0000\u0e52\u0e53"+ + "\u0007\r\u0000\u0000\u0e53\u0e54\u0007\n\u0000\u0000\u0e54\u0e55\u0007"+ + "\t\u0000\u0000\u0e55\u0e56\u0007\u0010\u0000\u0000\u0e56\u0e57\u0007\u0005"+ + "\u0000\u0000\u0e57\u0e58\u0007\r\u0000\u0000\u0e58\u0e59\u0007\u0010\u0000"+ + "\u0000\u0e59\u0280\u0001\u0000\u0000\u0000\u0e5a\u0e5b\u0007\r\u0000\u0000"+ + "\u0e5b\u0e5c\u0007\n\u0000\u0000\u0e5c\u0e5d\u0007\t\u0000\u0000\u0e5d"+ + "\u0e5e\u0007\u0010\u0000\u0000\u0e5e\u0e5f\u0007\r\u0000\u0000\u0e5f\u0e60"+ + "\u0007\u0011\u0000\u0000\u0e60\u0e61\u0007\u000e\u0000\u0000\u0e61\u0e62"+ + "\u0007\u0010\u0000\u0000\u0e62\u0282\u0001\u0000\u0000\u0000\u0e63\u0e64"+ + "\u0007\r\u0000\u0000\u0e64\u0e65\u0007\n\u0000\u0000\u0e65\u0e66\u0007"+ + "\u0010\u0000\u0000\u0e66\u0e67\u0007\u0016\u0000\u0000\u0e67\u0e68\u0007"+ + "\r\u0000\u0000\u0e68\u0e69\u0007\u0007\u0000\u0000\u0e69\u0e6a\u0007\t"+ + "\u0000\u0000\u0e6a\u0284\u0001\u0000\u0000\u0000\u0e6b\u0e6c\u0007\r\u0000"+ + "\u0000\u0e6c\u0e6d\u0007\n\u0000\u0000\u0e6d\u0e6e\u0007\u001b\u0000\u0000"+ + "\u0e6e\u0e6f\u0007\u0013\u0000\u0000\u0e6f\u0e70\u0007\u0015\u0000\u0000"+ + "\u0e70\u0e71\u0007\n\u0000\u0000\u0e71\u0286\u0001\u0000\u0000\u0000\u0e72"+ + "\u0e73\u0007\r\u0000\u0000\u0e73\u0e74\u0007\u0013\u0000\u0000\u0e74\u0e75"+ + "\u0007\u0006\u0000\u0000\u0e75\u0e76\u0007\n\u0000\u0000\u0e76\u0288\u0001"+ + "\u0000\u0000\u0000\u0e77\u0e78\u0007\r\u0000\u0000\u0e78\u0e79\u0007\u0013"+ + "\u0000\u0000\u0e79\u0e7a\u0007\u0006\u0000\u0000\u0e7a\u0e7b\u0007\u0006"+ + "\u0000\u0000\u0e7b\u0e7c\u0007\u0012\u0000\u0000\u0e7c\u0e7d\u0007\u0005"+ + "\u0000\u0000\u0e7d\u0e7e\u0007\u000e\u0000\u0000\u0e7e\u0e7f\u0007\u0015"+ + "\u0000\u0000\u0e7f\u028a\u0001\u0000\u0000\u0000\u0e80\u0e81\u0007\r\u0000"+ + "\u0000\u0e81\u0e82\u0007\u0013\u0000\u0000\u0e82\u0e83\u0007\u001c\u0000"+ + "\u0000\u0e83\u0e84\u0007\t\u0000\u0000\u0e84\u028c\u0001\u0000\u0000\u0000"+ + "\u0e85\u0e86\u0007\r\u0000\u0000\u0e86\u0e87\u0007\u0016\u0000\u0000\u0e87"+ + "\u0e88\u0007\u0006\u0000\u0000\u0e88\u0e89\u0007\n\u0000\u0000\u0e89\u028e"+ + "\u0001\u0000\u0000\u0000\u0e8a\u0e8b\u0007\t\u0000\u0000\u0e8b\u0e8c\u0007"+ + "\u0005\u0000\u0000\u0e8c\u0e8d\u0007\u001b\u0000\u0000\u0e8d\u0e8e\u0007"+ + "\n\u0000\u0000\u0e8e\u0e8f\u0007\u0018\u0000\u0000\u0e8f\u0e90\u0007\u0013"+ + "\u0000\u0000\u0e90\u0e91\u0007\u0011\u0000\u0000\u0e91\u0e92\u0007\u0007"+ + "\u0000\u0000\u0e92\u0e93\u0007\u0010\u0000\u0000\u0e93\u0290\u0001\u0000"+ + "\u0000\u0000\u0e94\u0e95\u0007\t\u0000\u0000\u0e95\u0e96\u0007\u000e\u0000"+ + "\u0000\u0e96\u0e97\u0007\u0014\u0000\u0000\u0e97\u0e98\u0007\n\u0000\u0000"+ + "\u0e98\u0e99\u0007\u000f\u0000\u0000\u0e99\u0e9a\u0007\u0005\u0000\u0000"+ + "\u0e9a\u0292\u0001\u0000\u0000\u0000\u0e9b\u0e9c\u0007\t\u0000\u0000\u0e9c"+ + "\u0e9d\u0007\u000e\u0000\u0000\u0e9d\u0e9e\u0007\r\u0000\u0000\u0e9e\u0e9f"+ + "\u0007\u0013\u0000\u0000\u0e9f\u0ea0\u0007\u0006\u0000\u0000\u0ea0\u0ea1"+ + "\u0007\u0006\u0000\u0000\u0ea1\u0294\u0001\u0000\u0000\u0000\u0ea2\u0ea3"+ + "\u0007\t\u0000\u0000\u0ea3\u0ea4\u0007\n\u0000\u0000\u0ea4\u0ea5\u0007"+ + "\u0005\u0000\u0000\u0ea5\u0ea6\u0007\r\u0000\u0000\u0ea6\u0ea7\u0007\u000e"+ + "\u0000\u0000\u0ea7\u0ea8\u0007\u0014\u0000\u0000\u0ea8\u0296\u0001\u0000"+ + "\u0000\u0000\u0ea9\u0eaa\u0007\t\u0000\u0000\u0eaa\u0eab\u0007\n\u0000"+ + "\u0000\u0eab\u0eac\u0007\u000e\u0000\u0000\u0eac\u0ead\u0007\u0013\u0000"+ + "\u0000\u0ead\u0eae\u0007\u0007\u0000\u0000\u0eae\u0eaf\u0007\f\u0000\u0000"+ + "\u0eaf\u0298\u0001\u0000\u0000\u0000\u0eb0\u0eb1\u0007\t\u0000\u0000\u0eb1"+ + "\u0eb2\u0007\n\u0000\u0000\u0eb2\u0eb3\u0007\u000e\u0000\u0000\u0eb3\u0eb4"+ + "\u0007\u0016\u0000\u0000\u0eb4\u0eb5\u0007\r\u0000\u0000\u0eb5\u0eb6\u0007"+ + "\u0011\u0000\u0000\u0eb6\u0eb7\u0007\u0010\u0000\u0000\u0eb7\u0eb8\u0007"+ + "\b\u0000\u0000\u0eb8\u029a\u0001\u0000\u0000\u0000\u0eb9\u0eba\u0007\t"+ + "\u0000\u0000\u0eba\u0ebb\u0007\n\u0000\u0000\u0ebb\u0ebc\u0007\u001d\u0000"+ + "\u0000\u0ebc\u0ebd\u0007\u0016\u0000\u0000\u0ebd\u0ebe\u0007\n\u0000\u0000"+ + "\u0ebe\u0ebf\u0007\u0007\u0000\u0000\u0ebf\u0ec0\u0007\u000e\u0000\u0000"+ + "\u0ec0\u0ec1\u0007\n\u0000\u0000\u0ec1\u029c\u0001\u0000\u0000\u0000\u0ec2"+ + "\u0ec3\u0007\t\u0000\u0000\u0ec3\u0ec4\u0007\n\u0000\u0000\u0ec4\u0ec5"+ + "\u0007\u001d\u0000\u0000\u0ec5\u0ec6\u0007\u0016\u0000\u0000\u0ec6\u0ec7"+ + "\u0007\n\u0000\u0000\u0ec7\u0ec8\u0007\u0007\u0000\u0000\u0ec8\u0ec9\u0007"+ + "\u000e\u0000\u0000\u0ec9\u0eca\u0007\n\u0000\u0000\u0eca\u0ecb\u0007\t"+ + "\u0000\u0000\u0ecb\u029e\u0001\u0000\u0000\u0000\u0ecc\u0ecd\u0007\t\u0000"+ + "\u0000\u0ecd\u0ece\u0007\n\u0000\u0000\u0ece\u0ecf\u0007\r\u0000\u0000"+ + "\u0ecf\u0ed0\u0007\u0011\u0000\u0000\u0ed0\u0ed1\u0007\u0005\u0000\u0000"+ + "\u0ed1\u0ed2\u0007\u0006\u0000\u0000\u0ed2\u0ed3\u0007\u0011\u0000\u0000"+ + "\u0ed3\u0ed4\u0007\u000b\u0000\u0000\u0ed4\u0ed5\u0007\u0005\u0000\u0000"+ + "\u0ed5\u0ed6\u0007\u0012\u0000\u0000\u0ed6\u0ed7\u0007\u0006\u0000\u0000"+ + "\u0ed7\u0ed8\u0007\n\u0000\u0000\u0ed8\u02a0\u0001\u0000\u0000\u0000\u0ed9"+ + "\u0eda\u0007\t\u0000\u0000\u0eda\u0edb\u0007\n\u0000\u0000\u0edb\u0edc"+ + "\u0007\r\u0000\u0000\u0edc\u0edd\u0007\u001b\u0000\u0000\u0edd\u0ede\u0007"+ + "\n\u0000\u0000\u0ede\u0edf\u0007\r\u0000\u0000\u0edf\u02a2\u0001\u0000"+ + "\u0000\u0000\u0ee0\u0ee1\u0007\t\u0000\u0000\u0ee1\u0ee2\u0007\n\u0000"+ + "\u0000\u0ee2\u0ee3\u0007\t\u0000\u0000\u0ee3\u0ee4\u0007\t\u0000\u0000"+ + "\u0ee4\u0ee5\u0007\u0011\u0000\u0000\u0ee5\u0ee6\u0007\u0013\u0000\u0000"+ + "\u0ee6\u0ee7\u0007\u0007\u0000\u0000\u0ee7\u02a4\u0001\u0000\u0000\u0000"+ + "\u0ee8\u0ee9\u0007\t\u0000\u0000\u0ee9\u0eea\u0007\n\u0000\u0000\u0eea"+ + "\u0eeb\u0007\u0010\u0000\u0000\u0eeb\u02a6\u0001\u0000\u0000\u0000\u0eec"+ + "\u0eed\u0007\t\u0000\u0000\u0eed\u0eee\u0007\u0014\u0000\u0000\u0eee\u0eef"+ + "\u0007\u0005\u0000\u0000\u0eef\u0ef0\u0007\r\u0000\u0000\u0ef0\u0ef1\u0007"+ + "\n\u0000\u0000\u0ef1\u02a8\u0001\u0000\u0000\u0000\u0ef2\u0ef3\u0007\t"+ + "\u0000\u0000\u0ef3\u0ef4\u0007\u0014\u0000\u0000\u0ef4\u0ef5\u0007\u0013"+ + "\u0000\u0000\u0ef5\u0ef6\u0007\u001c\u0000\u0000\u0ef6\u02aa\u0001\u0000"+ + "\u0000\u0000\u0ef7\u0ef8\u0007\t\u0000\u0000\u0ef8\u0ef9\u0007\u0011\u0000"+ + "\u0000\u0ef9\u0efa\u0007\u000f\u0000\u0000\u0efa\u0efb\u0007\u0018\u0000"+ + "\u0000\u0efb\u0efc\u0007\u0006\u0000\u0000\u0efc\u0efd\u0007\n\u0000\u0000"+ + "\u0efd\u02ac\u0001\u0000\u0000\u0000\u0efe\u0eff\u0007\t\u0000\u0000\u0eff"+ + "\u0f00\u0007\u0007\u0000\u0000\u0f00\u0f01\u0007\u0005\u0000\u0000\u0f01"+ + "\u0f02\u0007\u0018\u0000\u0000\u0f02\u0f03\u0007\t\u0000\u0000\u0f03\u0f04"+ + "\u0007\u0014\u0000\u0000\u0f04\u0f05\u0007\u0013\u0000\u0000\u0f05\u0f06"+ + "\u0007\u0010\u0000\u0000\u0f06\u02ae\u0001\u0000\u0000\u0000\u0f07\u0f08"+ + "\u0007\t\u0000\u0000\u0f08\u0f09\u0007\u0010\u0000\u0000\u0f09\u0f0a\u0007"+ + "\u0005\u0000\u0000\u0f0a\u0f0b\u0007\u0012\u0000\u0000\u0f0b\u0f0c\u0007"+ + "\u0006\u0000\u0000\u0f0c\u0f0d\u0007\n\u0000\u0000\u0f0d\u02b0\u0001\u0000"+ + "\u0000\u0000\u0f0e\u0f0f\u0007\t\u0000\u0000\u0f0f\u0f10\u0007\u0010\u0000"+ + "\u0000\u0f10\u0f11\u0007\u0005\u0000\u0000\u0f11\u0f12\u0007\u0007\u0000"+ + "\u0000\u0f12\u0f13\u0007\f\u0000\u0000\u0f13\u0f14\u0007\u0005\u0000\u0000"+ + "\u0f14\u0f15\u0007\u0006\u0000\u0000\u0f15\u0f16\u0007\u0013\u0000\u0000"+ + "\u0f16\u0f17\u0007\u0007\u0000\u0000\u0f17\u0f18\u0007\n\u0000\u0000\u0f18"+ + "\u02b2\u0001\u0000\u0000\u0000\u0f19\u0f1a\u0007\t\u0000\u0000\u0f1a\u0f1b"+ + "\u0007\u0010\u0000\u0000\u0f1b\u0f1c\u0007\u0005\u0000\u0000\u0f1c\u0f1d"+ + "\u0007\r\u0000\u0000\u0f1d\u0f1e\u0007\u0010\u0000\u0000\u0f1e\u02b4\u0001"+ + "\u0000\u0000\u0000\u0f1f\u0f20\u0007\t\u0000\u0000\u0f20\u0f21\u0007\u0010"+ + "\u0000\u0000\u0f21\u0f22\u0007\u0005\u0000\u0000\u0f22\u0f23\u0007\u0010"+ + "\u0000\u0000\u0f23\u0f24\u0007\n\u0000\u0000\u0f24\u0f25\u0007\u000f\u0000"+ + "\u0000\u0f25\u0f26\u0007\n\u0000\u0000\u0f26\u0f27\u0007\u0007\u0000\u0000"+ + "\u0f27\u0f28\u0007\u0010\u0000\u0000\u0f28\u02b6\u0001\u0000\u0000\u0000"+ + "\u0f29\u0f2a\u0007\t\u0000\u0000\u0f2a\u0f2b\u0007\u0010\u0000\u0000\u0f2b"+ + "\u0f2c\u0007\u0005\u0000\u0000\u0f2c\u0f2d\u0007\u0010\u0000\u0000\u0f2d"+ + "\u0f2e\u0007\u0011\u0000\u0000\u0f2e\u0f2f\u0007\t\u0000\u0000\u0f2f\u0f30"+ + "\u0007\u0010\u0000\u0000\u0f30\u0f31\u0007\u0011\u0000\u0000\u0f31\u0f32"+ + "\u0007\u000e\u0000\u0000\u0f32\u0f33\u0007\t\u0000\u0000\u0f33\u02b8\u0001"+ + "\u0000\u0000\u0000\u0f34\u0f35\u0007\t\u0000\u0000\u0f35\u0f36\u0007\u0010"+ + "\u0000\u0000\u0f36\u0f37\u0007\f\u0000\u0000\u0f37\u0f38\u0007\u0011\u0000"+ + "\u0000\u0f38\u0f39\u0007\u0007\u0000\u0000\u0f39\u02ba\u0001\u0000\u0000"+ + "\u0000\u0f3a\u0f3b\u0007\t\u0000\u0000\u0f3b\u0f3c\u0007\u0010\u0000\u0000"+ + "\u0f3c\u0f3d\u0007\f\u0000\u0000\u0f3d\u0f3e\u0007\u0013\u0000\u0000\u0f3e"+ + "\u0f3f\u0007\u0016\u0000\u0000\u0f3f\u0f40\u0007\u0010\u0000\u0000\u0f40"+ + "\u02bc\u0001\u0000\u0000\u0000\u0f41\u0f42\u0007\t\u0000\u0000\u0f42\u0f43"+ + "\u0007\u0010\u0000\u0000\u0f43\u0f44\u0007\u0013\u0000\u0000\u0f44\u0f45"+ + "\u0007\r\u0000\u0000\u0f45\u0f46\u0007\u0005\u0000\u0000\u0f46\u0f47\u0007"+ + "\u0017\u0000\u0000\u0f47\u0f48\u0007\n\u0000\u0000\u0f48\u02be\u0001\u0000"+ + "\u0000\u0000\u0f49\u0f4a\u0007\t\u0000\u0000\u0f4a\u0f4b\u0007\u0010\u0000"+ + "\u0000\u0f4b\u0f4c\u0007\r\u0000\u0000\u0f4c\u0f4d\u0007\u0011\u0000\u0000"+ + "\u0f4d\u0f4e\u0007\u000e\u0000\u0000\u0f4e\u0f4f\u0007\u0010\u0000\u0000"+ + "\u0f4f\u02c0\u0001\u0000\u0000\u0000\u0f50\u0f51\u0007\t\u0000\u0000\u0f51"+ + "\u0f52\u0007\u0010\u0000\u0000\u0f52\u0f53\u0007\r\u0000\u0000\u0f53\u0f54"+ + "\u0007\u0011\u0000\u0000\u0f54\u0f55\u0007\u0018\u0000\u0000\u0f55\u02c2"+ + "\u0001\u0000\u0000\u0000\u0f56\u0f57\u0007\t\u0000\u0000\u0f57\u0f58\u0007"+ + "\b\u0000\u0000\u0f58\u0f59\u0007\t\u0000\u0000\u0f59\u0f5a\u0007\u0011"+ + "\u0000\u0000\u0f5a\u0f5b\u0007\f\u0000\u0000\u0f5b\u02c4\u0001\u0000\u0000"+ + "\u0000\u0f5c\u0f5d\u0007\t\u0000\u0000\u0f5d\u0f5e\u0007\b\u0000\u0000"+ + "\u0f5e\u0f5f\u0007\t\u0000\u0000\u0f5f\u0f60\u0007\u0010\u0000\u0000\u0f60"+ + "\u0f61\u0007\n\u0000\u0000\u0f61\u0f62\u0007\u000f\u0000\u0000\u0f62\u02c6"+ + "\u0001\u0000\u0000\u0000\u0f63\u0f64\u0007\u0010\u0000\u0000\u0f64\u0f65"+ + "\u0007\u0005\u0000\u0000\u0f65\u0f66\u0007\u0012\u0000\u0000\u0f66\u0f67"+ + "\u0007\u0006\u0000\u0000\u0f67\u0f68\u0007\n\u0000\u0000\u0f68\u0f69\u0007"+ + "\t\u0000\u0000\u0f69\u02c8\u0001\u0000\u0000\u0000\u0f6a\u0f6b\u0007\u000b"+ + "\u0000\u0000\u0f6b\u0f6c\u0007\u0010\u0000\u0000\u0f6c\u0f6d\u0007\u0005"+ + "\u0000\u0000\u0f6d\u0f6e\u0007\u0012\u0000\u0000\u0f6e\u0f6f\u0007\u0006"+ + "\u0000\u0000\u0f6f\u0f70\u0007\n\u0000\u0000\u0f70\u0f71\u0007\t\u0000"+ + "\u0000\u0f71\u02ca\u0001\u0000\u0000\u0000\u0f72\u0f73\u0007\u0010\u0000"+ + "\u0000\u0f73\u0f74\u0007\u0005\u0000\u0000\u0f74\u0f75\u0007\u0012\u0000"+ + "\u0000\u0f75\u0f76\u0007\u0006\u0000\u0000\u0f76\u0f77\u0007\n\u0000\u0000"+ + "\u0f77\u0f78\u0007\t\u0000\u0000\u0f78\u0f79\u0007\u0018\u0000\u0000\u0f79"+ + "\u0f7a\u0007\u0005\u0000\u0000\u0f7a\u0f7b\u0007\u000e\u0000\u0000\u0f7b"+ + "\u0f7c\u0007\n\u0000\u0000\u0f7c\u02cc\u0001\u0000\u0000\u0000\u0f7d\u0f7e"+ + "\u0007\u0010\u0000\u0000\u0f7e\u0f7f\u0007\n\u0000\u0000\u0f7f\u0f80\u0007"+ + "\u000f\u0000\u0000\u0f80\u0f81\u0007\u0018\u0000\u0000\u0f81\u02ce\u0001"+ + "\u0000\u0000\u0000\u0f82\u0f83\u0007\u0010\u0000\u0000\u0f83\u0f84\u0007"+ + "\n\u0000\u0000\u0f84\u0f85\u0007\u000f\u0000\u0000\u0f85\u0f86\u0007\u0018"+ + "\u0000\u0000\u0f86\u0f87\u0007\u0006\u0000\u0000\u0f87\u0f88\u0007\u0005"+ + "\u0000\u0000\u0f88\u0f89\u0007\u0010\u0000\u0000\u0f89\u0f8a\u0007\n\u0000"+ + "\u0000\u0f8a\u02d0\u0001\u0000\u0000\u0000\u0f8b\u0f8c\u0007\u0010\u0000"+ + "\u0000\u0f8c\u0f8d\u0007\n\u0000\u0000\u0f8d\u0f8e\u0007\u000f\u0000\u0000"+ + "\u0f8e\u0f8f\u0007\u0018\u0000\u0000\u0f8f\u0f90\u0007\u0013\u0000\u0000"+ + "\u0f90\u0f91\u0007\r\u0000\u0000\u0f91\u0f92\u0007\u0005\u0000\u0000\u0f92"+ + "\u0f93\u0007\r\u0000\u0000\u0f93\u0f94\u0007\b\u0000\u0000\u0f94\u02d2"+ + "\u0001\u0000\u0000\u0000\u0f95\u0f96\u0007\u0010\u0000\u0000\u0f96\u0f97"+ + "\u0007\n\u0000\u0000\u0f97\u0f98\u0007\u001a\u0000\u0000\u0f98\u0f99\u0007"+ + "\u0010\u0000\u0000\u0f99\u02d4\u0001\u0000\u0000\u0000\u0f9a\u0f9b\u0007"+ + "\u0010\u0000\u0000\u0f9b\u0f9c\u0007\r\u0000\u0000\u0f9c\u0f9d\u0007\u0005"+ + "\u0000\u0000\u0f9d\u0f9e\u0007\u0007\u0000\u0000\u0f9e\u0f9f\u0007\t\u0000"+ + "\u0000\u0f9f\u0fa0\u0007\u0005\u0000\u0000\u0fa0\u0fa1\u0007\u000e\u0000"+ + "\u0000\u0fa1\u0fa2\u0007\u0010\u0000\u0000\u0fa2\u0fa3\u0007\u0011\u0000"+ + "\u0000\u0fa3\u0fa4\u0007\u0013\u0000\u0000\u0fa4\u0fa5\u0007\u0007\u0000"+ + "\u0000\u0fa5\u02d6\u0001\u0000\u0000\u0000\u0fa6\u0fa7\u0007\u0010\u0000"+ + "\u0000\u0fa7\u0fa8\u0007\r\u0000\u0000\u0fa8\u0fa9\u0007\u0011\u0000\u0000"+ + "\u0fa9\u0faa\u0007\u0017\u0000\u0000\u0faa\u0fab\u0007\u0017\u0000\u0000"+ + "\u0fab\u0fac\u0007\n\u0000\u0000\u0fac\u0fad\u0007\r\u0000\u0000\u0fad"+ + "\u02d8\u0001\u0000\u0000\u0000\u0fae\u0faf\u0007\u0010\u0000\u0000\u0faf"+ + "\u0fb0\u0007\r\u0000\u0000\u0fb0\u0fb1\u0007\u0016\u0000\u0000\u0fb1\u0fb2"+ + "\u0007\u0007\u0000\u0000\u0fb2\u0fb3\u0007\u000e\u0000\u0000\u0fb3\u0fb4"+ + "\u0007\u0005\u0000\u0000\u0fb4\u0fb5\u0007\u0010\u0000\u0000\u0fb5\u0fb6"+ + "\u0007\n\u0000\u0000\u0fb6\u02da\u0001\u0000\u0000\u0000\u0fb7\u0fb8\u0007"+ + "\u0010\u0000\u0000\u0fb8\u0fb9\u0007\r\u0000\u0000\u0fb9\u0fba\u0007\u0016"+ + "\u0000\u0000\u0fba\u0fbb\u0007\t\u0000\u0000\u0fbb\u0fbc\u0007\u0010\u0000"+ + "\u0000\u0fbc\u0fbd\u0007\n\u0000\u0000\u0fbd\u0fbe\u0007\f\u0000\u0000"+ + "\u0fbe\u02dc\u0001\u0000\u0000\u0000\u0fbf\u0fc0\u0007\u0010\u0000\u0000"+ + "\u0fc0\u0fc1\u0007\b\u0000\u0000\u0fc1\u0fc2\u0007\u0018\u0000\u0000\u0fc2"+ + "\u0fc3\u0007\n\u0000\u0000\u0fc3\u02de\u0001\u0000\u0000\u0000\u0fc4\u0fc5"+ + "\u0007\u0010\u0000\u0000\u0fc5\u0fc6\u0007\b\u0000\u0000\u0fc6\u0fc7\u0007"+ + "\u0018\u0000\u0000\u0fc7\u0fc8\u0007\n\u0000\u0000\u0fc8\u0fc9\u0007\t"+ + "\u0000\u0000\u0fc9\u02e0\u0001\u0000\u0000\u0000\u0fca\u0fcb\u0007\u0016"+ + "\u0000\u0000\u0fcb\u0fcc\u0007\u0007\u0000\u0000\u0fcc\u0fcd\u0007\u0012"+ + "\u0000\u0000\u0fcd\u0fce\u0007\u0013\u0000\u0000\u0fce\u0fcf\u0007\u0016"+ + "\u0000\u0000\u0fcf\u0fd0\u0007\u0007\u0000\u0000\u0fd0\u0fd1\u0007\f\u0000"+ + "\u0000\u0fd1\u0fd2\u0007\n\u0000\u0000\u0fd2\u0fd3\u0007\f\u0000\u0000"+ + "\u0fd3\u02e2\u0001\u0000\u0000\u0000\u0fd4\u0fd5\u0007\u0016\u0000\u0000"+ + "\u0fd5\u0fd6\u0007\u0007\u0000\u0000\u0fd6\u0fd7\u0007\u000e\u0000\u0000"+ + "\u0fd7\u0fd8\u0007\u0013\u0000\u0000\u0fd8\u0fd9\u0007\u000f\u0000\u0000"+ + "\u0fd9\u0fda\u0007\u000f\u0000\u0000\u0fda\u0fdb\u0007\u0011\u0000\u0000"+ + "\u0fdb\u0fdc\u0007\u0010\u0000\u0000\u0fdc\u0fdd\u0007\u0010\u0000\u0000"+ + "\u0fdd\u0fde\u0007\n\u0000\u0000\u0fde\u0fdf\u0007\f\u0000\u0000\u0fdf"+ + "\u02e4\u0001\u0000\u0000\u0000\u0fe0\u0fe1\u0007\u0016\u0000\u0000\u0fe1"+ + "\u0fe2\u0007\u0007\u0000\u0000\u0fe2\u0fe3\u0007\n\u0000\u0000\u0fe3\u0fe4"+ + "\u0007\u0007\u0000\u0000\u0fe4\u0fe5\u0007\u000e\u0000\u0000\u0fe5\u0fe6"+ + "\u0007\r\u0000\u0000\u0fe6\u0fe7\u0007\b\u0000\u0000\u0fe7\u0fe8\u0007"+ + "\u0018\u0000\u0000\u0fe8\u0fe9\u0007\u0010\u0000\u0000\u0fe9\u0fea\u0007"+ + "\n\u0000\u0000\u0fea\u0feb\u0007\f\u0000\u0000\u0feb\u02e6\u0001\u0000"+ + "\u0000\u0000\u0fec\u0fed\u0007\u0016\u0000\u0000\u0fed\u0fee\u0007\u0007"+ + "\u0000\u0000\u0fee\u0fef\u0007\u0015\u0000\u0000\u0fef\u0ff0\u0007\u0007"+ + "\u0000\u0000\u0ff0\u0ff1\u0007\u0013\u0000\u0000\u0ff1\u0ff2\u0007\u001c"+ + "\u0000\u0000\u0ff2\u0ff3\u0007\u0007\u0000\u0000\u0ff3\u02e8\u0001\u0000"+ + "\u0000\u0000\u0ff4\u0ff5\u0007\u0016\u0000\u0000\u0ff5\u0ff6\u0007\u0007"+ + "\u0000\u0000\u0ff6\u0ff7\u0007\u0006\u0000\u0000\u0ff7\u0ff8\u0007\u0011"+ + "\u0000\u0000\u0ff8\u0ff9\u0007\t\u0000\u0000\u0ff9\u0ffa\u0007\u0010\u0000"+ + "\u0000\u0ffa\u0ffb\u0007\n\u0000\u0000\u0ffb\u0ffc\u0007\u0007\u0000\u0000"+ + "\u0ffc\u02ea\u0001\u0000\u0000\u0000\u0ffd\u0ffe\u0007\u0016\u0000\u0000"+ + "\u0ffe\u0fff\u0007\u0007\u0000\u0000\u0fff\u1000\u0007\u0006\u0000\u0000"+ + "\u1000\u1001\u0007\u0013\u0000\u0000\u1001\u1002\u0007\u0017\u0000\u0000"+ + "\u1002\u1003\u0007\u0017\u0000\u0000\u1003\u1004\u0007\n\u0000\u0000\u1004"+ + "\u1005\u0007\f\u0000\u0000\u1005\u02ec\u0001\u0000\u0000\u0000\u1006\u1007"+ + "\u0007\u0016\u0000\u0000\u1007\u1008\u0007\u0007\u0000\u0000\u1008\u1009"+ + "\u0007\u0010\u0000\u0000\u1009\u100a\u0007\u0011\u0000\u0000\u100a\u100b"+ + "\u0007\u0006\u0000\u0000\u100b\u02ee\u0001\u0000\u0000\u0000\u100c\u100d"+ + "\u0007\u0016\u0000\u0000\u100d\u100e\u0007\u0018\u0000\u0000\u100e\u100f"+ + "\u0007\f\u0000\u0000\u100f\u1010\u0007\u0005\u0000\u0000\u1010\u1011\u0007"+ + "\u0010\u0000\u0000\u1011\u1012\u0007\n\u0000\u0000\u1012\u02f0\u0001\u0000"+ + "\u0000\u0000\u1013\u1014\u0007\u001b\u0000\u0000\u1014\u1015\u0007\u0005"+ + "\u0000\u0000\u1015\u1016\u0007\u000e\u0000\u0000\u1016\u1017\u0007\u0016"+ + "\u0000\u0000\u1017\u1018\u0007\u0016\u0000\u0000\u1018\u1019\u0007\u000f"+ + "\u0000\u0000\u1019\u02f2\u0001\u0000\u0000\u0000\u101a\u101b\u0007\u001b"+ + "\u0000\u0000\u101b\u101c\u0007\u0005\u0000\u0000\u101c\u101d\u0007\u0006"+ + "\u0000\u0000\u101d\u101e\u0007\u0011\u0000\u0000\u101e\u101f\u0007\f\u0000"+ + "\u0000\u101f\u02f4\u0001\u0000\u0000\u0000\u1020\u1021\u0007\u001b\u0000"+ + "\u0000\u1021\u1022\u0007\u0005\u0000\u0000\u1022\u1023\u0007\u0006\u0000"+ + "\u0000\u1023\u1024\u0007\u0011\u0000\u0000\u1024\u1025\u0007\f\u0000\u0000"+ + "\u1025\u1026\u0007\u0005\u0000\u0000\u1026\u1027\u0007\u0010\u0000\u0000"+ + "\u1027\u1028\u0007\n\u0000\u0000\u1028\u02f6\u0001\u0000\u0000\u0000\u1029"+ + "\u102a\u0007\u001b\u0000\u0000\u102a\u102b\u0007\u0005\u0000\u0000\u102b"+ + "\u102c\u0007\u0006\u0000\u0000\u102c\u102d\u0007\u0011\u0000\u0000\u102d"+ + "\u102e\u0007\f\u0000\u0000\u102e\u102f\u0007\u0005\u0000\u0000\u102f\u1030"+ + "\u0007\u0010\u0000\u0000\u1030\u1031\u0007\u0013\u0000\u0000\u1031\u1032"+ + "\u0007\r\u0000\u0000\u1032\u02f8\u0001\u0000\u0000\u0000\u1033\u1034\u0007"+ + "\u001b\u0000\u0000\u1034\u1035\u0007\u0005\u0000\u0000\u1035\u1036\u0007"+ + "\r\u0000\u0000\u1036\u1037\u0007\b\u0000\u0000\u1037\u1038\u0007\u0011"+ + "\u0000\u0000\u1038\u1039\u0007\u0007\u0000\u0000\u1039\u103a\u0007\u0017"+ + "\u0000\u0000\u103a\u02fa\u0001\u0000\u0000\u0000\u103b\u103c\u0007\u001b"+ + "\u0000\u0000\u103c\u103d\u0007\n\u0000\u0000\u103d\u103e\u0007\r\u0000"+ + "\u0000\u103e\u103f\u0007\t\u0000\u0000\u103f\u1040\u0007\u0011\u0000\u0000"+ + "\u1040\u1041\u0007\u0013\u0000\u0000\u1041\u1042\u0007\u0007\u0000\u0000"+ + "\u1042\u02fc\u0001\u0000\u0000\u0000\u1043\u1044\u0007\u001b\u0000\u0000"+ + "\u1044\u1045\u0007\u0011\u0000\u0000\u1045\u1046\u0007\n\u0000\u0000\u1046"+ + "\u1047\u0007\u001c\u0000\u0000\u1047\u02fe\u0001\u0000\u0000\u0000\u1048"+ + "\u1049\u0007\u001b\u0000\u0000\u1049\u104a\u0007\u0013\u0000\u0000\u104a"+ + "\u104b\u0007\u0006\u0000\u0000\u104b\u104c\u0007\u0005\u0000\u0000\u104c"+ + "\u104d\u0007\u0010\u0000\u0000\u104d\u104e\u0007\u0011\u0000\u0000\u104e"+ + "\u104f\u0007\u0006\u0000\u0000\u104f\u1050\u0007\n\u0000\u0000\u1050\u0300"+ + "\u0001\u0000\u0000\u0000\u1051\u1052\u0007\u001c\u0000\u0000\u1052\u1053"+ + "\u0007\u0014\u0000\u0000\u1053\u1054\u0007\u0011\u0000\u0000\u1054\u1055"+ + "\u0007\u0010\u0000\u0000\u1055\u1056\u0007\n\u0000\u0000\u1056\u1057\u0007"+ + "\t\u0000\u0000\u1057\u1058\u0007\u0018\u0000\u0000\u1058\u1059\u0007\u0005"+ + "\u0000\u0000\u1059\u105a\u0007\u000e\u0000\u0000\u105a\u105b\u0007\n\u0000"+ + "\u0000\u105b\u0302\u0001\u0000\u0000\u0000\u105c\u105d\u0007\u001c\u0000"+ + "\u0000\u105d\u105e\u0007\u0011\u0000\u0000\u105e\u105f\u0007\u0010\u0000"+ + "\u0000\u105f\u1060\u0007\u0014\u0000\u0000\u1060\u1061\u0007\u0013\u0000"+ + "\u0000\u1061\u1062\u0007\u0016\u0000\u0000\u1062\u1063\u0007\u0010\u0000"+ + "\u0000\u1063\u0304\u0001\u0000\u0000\u0000\u1064\u1065\u0007\u001c\u0000"+ + "\u0000\u1065\u1066\u0007\u0013\u0000\u0000\u1066\u1067\u0007\r\u0000\u0000"+ + "\u1067\u1068\u0007\u0015\u0000\u0000\u1068\u0306\u0001\u0000\u0000\u0000"+ + "\u1069\u106a\u0007\u001c\u0000\u0000\u106a\u106b\u0007\r\u0000\u0000\u106b"+ + "\u106c\u0007\u0005\u0000\u0000\u106c\u106d\u0007\u0018\u0000\u0000\u106d"+ + "\u106e\u0007\u0018\u0000\u0000\u106e\u106f\u0007\n\u0000\u0000\u106f\u1070"+ + "\u0007\r\u0000\u0000\u1070\u0308\u0001\u0000\u0000\u0000\u1071\u1072\u0007"+ + "\u001c\u0000\u0000\u1072\u1073\u0007\r\u0000\u0000\u1073\u1074\u0007\u0011"+ + "\u0000\u0000\u1074\u1075\u0007\u0010\u0000\u0000\u1075\u1076\u0007\n\u0000"+ + "\u0000\u1076\u030a\u0001\u0000\u0000\u0000\u1077\u1078\u0007\u001a\u0000"+ + "\u0000\u1078\u1079\u0007\u000f\u0000\u0000\u1079\u107a\u0007\u0006\u0000"+ + "\u0000\u107a\u030c\u0001\u0000\u0000\u0000\u107b\u107c\u0007\b\u0000\u0000"+ + "\u107c\u107d\u0007\n\u0000\u0000\u107d\u107e\u0007\u0005\u0000\u0000\u107e"+ + "\u107f\u0007\r\u0000\u0000\u107f\u030e\u0001\u0000\u0000\u0000\u1080\u1081"+ + "\u0007\b\u0000\u0000\u1081\u1082\u0007\n\u0000\u0000\u1082\u1083\u0007"+ + "\t\u0000\u0000\u1083\u0310\u0001\u0000\u0000\u0000\u1084\u1085\u0007\u000b"+ + "\u0000\u0000\u1085\u1086\u0007\u0013\u0000\u0000\u1086\u1087\u0007\u0007"+ + "\u0000\u0000\u1087\u1088\u0007\n\u0000\u0000\u1088\u0312\u0001\u0000\u0000"+ + "\u0000\u1089\u108a\u0007\u0012\u0000\u0000\u108a\u108b\u0007\n\u0000\u0000"+ + "\u108b\u108c\u0007\u0010\u0000\u0000\u108c\u108d\u0007\u001c\u0000\u0000"+ + "\u108d\u108e\u0007\n\u0000\u0000\u108e\u108f\u0007\n\u0000\u0000\u108f"+ + "\u1090\u0007\u0007\u0000\u0000\u1090\u0314\u0001\u0000\u0000\u0000\u1091"+ + "\u1092\u0007\u0012\u0000\u0000\u1092\u1093\u0007\u0011\u0000\u0000\u1093"+ + "\u1094\u0007\u0017\u0000\u0000\u1094\u1095\u0007\u0011\u0000\u0000\u1095"+ + "\u1096\u0007\u0007\u0000\u0000\u1096\u1097\u0007\u0010\u0000\u0000\u1097"+ + "\u0316\u0001\u0000\u0000\u0000\u1098\u1099\u0007\u0012\u0000\u0000\u1099"+ + "\u109a\u0007\u0011\u0000\u0000\u109a\u109b\u0007\u0010\u0000\u0000\u109b"+ + "\u0318\u0001\u0000\u0000\u0000\u109c\u109d\u0007\u0012\u0000\u0000\u109d"+ + "\u109e\u0007\u0013\u0000\u0000\u109e\u109f\u0007\u0013\u0000\u0000\u109f"+ + "\u10a0\u0007\u0006\u0000\u0000\u10a0\u10a1\u0007\n\u0000\u0000\u10a1\u10a2"+ + "\u0007\u0005\u0000\u0000\u10a2\u10a3\u0007\u0007\u0000\u0000\u10a3\u031a"+ + "\u0001\u0000\u0000\u0000\u10a4\u10a5\u0007\u000e\u0000\u0000\u10a5\u10a6"+ + "\u0007\u0014\u0000\u0000\u10a6\u10a7\u0007\u0005\u0000\u0000\u10a7\u10a8"+ + "\u0007\r\u0000\u0000\u10a8\u031c\u0001\u0000\u0000\u0000\u10a9\u10aa\u0007"+ + "\u000e\u0000\u0000\u10aa\u10ab\u0007\u0014\u0000\u0000\u10ab\u10ac\u0007"+ + "\u0005\u0000\u0000\u10ac\u10ad\u0007\r\u0000\u0000\u10ad\u10ae\u0007\u0005"+ + "\u0000\u0000\u10ae\u10af\u0007\u000e\u0000\u0000\u10af\u10b0\u0007\u0010"+ + "\u0000\u0000\u10b0\u10b1\u0007\n\u0000\u0000\u10b1\u10b2\u0007\r\u0000"+ + "\u0000\u10b2\u031e\u0001\u0000\u0000\u0000\u10b3\u10b4\u0007\u000e\u0000"+ + "\u0000\u10b4\u10b5\u0007\u0013\u0000\u0000\u10b5\u10b6\u0007\u0005\u0000"+ + "\u0000\u10b6\u10b7\u0007\u0006\u0000\u0000\u10b7\u10b8\u0007\n\u0000\u0000"+ + "\u10b8\u10b9\u0007\t\u0000\u0000\u10b9\u10ba\u0007\u000e\u0000\u0000\u10ba"+ + "\u10bb\u0007\n\u0000\u0000\u10bb\u0320\u0001\u0000\u0000\u0000\u10bc\u10bd"+ + "\u0007\f\u0000\u0000\u10bd\u10be\u0007\n\u0000\u0000\u10be\u10bf\u0007"+ + "\u000e\u0000\u0000\u10bf\u0322\u0001\u0000\u0000\u0000\u10c0\u10c1\u0007"+ + "\f\u0000\u0000\u10c1\u10c2\u0007\n\u0000\u0000\u10c2\u10c3\u0007\u000e"+ + "\u0000\u0000\u10c3\u10c4\u0007\u0011\u0000\u0000\u10c4\u10c5\u0007\u000f"+ + "\u0000\u0000\u10c5\u10c6\u0007\u0005\u0000\u0000\u10c6\u10c7\u0007\u0006"+ + "\u0000\u0000\u10c7\u0324\u0001\u0000\u0000\u0000\u10c8\u10c9\u0007\n\u0000"+ + "\u0000\u10c9\u10ca\u0007\u001a\u0000\u0000\u10ca\u10cb\u0007\u0011\u0000"+ + "\u0000\u10cb\u10cc\u0007\t\u0000\u0000\u10cc\u10cd\u0007\u0010\u0000\u0000"+ + "\u10cd\u10ce\u0007\t\u0000\u0000\u10ce\u0326\u0001\u0000\u0000\u0000\u10cf"+ + "\u10d0\u0007\n\u0000\u0000\u10d0\u10d1\u0007\u001a\u0000\u0000\u10d1\u10d2"+ + "\u0007\u0010\u0000\u0000\u10d2\u10d3\u0007\r\u0000\u0000\u10d3\u10d4\u0007"+ + "\u0005\u0000\u0000\u10d4\u10d5\u0007\u000e\u0000\u0000\u10d5\u10d6\u0007"+ + "\u0010\u0000\u0000\u10d6\u0328\u0001\u0000\u0000\u0000\u10d7\u10d8\u0007"+ + "\u0019\u0000\u0000\u10d8\u10d9\u0007\u0006\u0000\u0000\u10d9\u10da\u0007"+ + "\u0013\u0000\u0000\u10da\u10db\u0007\u0005\u0000\u0000\u10db\u10dc\u0007"+ + "\u0010\u0000\u0000\u10dc\u032a\u0001\u0000\u0000\u0000\u10dd\u10de\u0007"+ + "\u0017\u0000\u0000\u10de\u10df\u0007\r\u0000\u0000\u10df\u10e0\u0007\n"+ + "\u0000\u0000\u10e0\u10e1\u0007\u0005\u0000\u0000\u10e1\u10e2\u0007\u0010"+ + "\u0000\u0000\u10e2\u10e3\u0007\n\u0000\u0000\u10e3\u10e4\u0007\t\u0000"+ + "\u0000\u10e4\u10e5\u0007\u0010\u0000\u0000\u10e5\u032c\u0001\u0000\u0000"+ + "\u0000\u10e6\u10e7\u0007\u0011\u0000\u0000\u10e7\u10e8\u0007\u0007\u0000"+ + "\u0000\u10e8\u10e9\u0007\u0013\u0000\u0000\u10e9\u10ea\u0007\u0016\u0000"+ + "\u0000\u10ea\u10eb\u0007\u0010\u0000\u0000\u10eb\u032e\u0001\u0000\u0000"+ + "\u0000\u10ec\u10ed\u0007\u0011\u0000\u0000\u10ed\u10ee\u0007\u0007\u0000"+ + "\u0000\u10ee\u10ef\u0007\u0010\u0000\u0000\u10ef\u0330\u0001\u0000\u0000"+ + "\u0000\u10f0\u10f1\u0007\u0011\u0000\u0000\u10f1\u10f2\u0007\u0007\u0000"+ + "\u0000\u10f2\u10f3\u0007\u0010\u0000\u0000\u10f3\u10f4\u0007\n\u0000\u0000"+ + "\u10f4\u10f5\u0007\u0017\u0000\u0000\u10f5\u10f6\u0007\n\u0000\u0000\u10f6"+ + "\u10f7\u0007\r\u0000\u0000\u10f7\u0332\u0001\u0000\u0000\u0000\u10f8\u10f9"+ + "\u0007\u0011\u0000\u0000\u10f9\u10fa\u0007\u0007\u0000\u0000\u10fa\u10fb"+ + "\u0007\u0010\u0000\u0000\u10fb\u10fc\u0007\n\u0000\u0000\u10fc\u10fd\u0007"+ + "\r\u0000\u0000\u10fd\u10fe\u0007\u001b\u0000\u0000\u10fe\u10ff\u0007\u0005"+ + "\u0000\u0000\u10ff\u1100\u0007\u0006\u0000\u0000\u1100\u0334\u0001\u0000"+ + "\u0000\u0000\u1101\u1102\u0007\u0006\u0000\u0000\u1102\u1103\u0007\n\u0000"+ + "\u0000\u1103\u1104\u0007\u0005\u0000\u0000\u1104\u1105\u0007\t\u0000\u0000"+ + "\u1105\u1106\u0007\u0010\u0000\u0000\u1106\u0336\u0001\u0000\u0000\u0000"+ + "\u1107\u1108\u0007\u0007\u0000\u0000\u1108\u1109\u0007\u0005\u0000\u0000"+ + "\u1109\u110a\u0007\u0010\u0000\u0000\u110a\u110b\u0007\u0011\u0000\u0000"+ + "\u110b\u110c\u0007\u0013\u0000\u0000\u110c\u110d\u0007\u0007\u0000\u0000"+ + "\u110d\u110e\u0007\u0005\u0000\u0000\u110e\u110f\u0007\u0006\u0000\u0000"+ + "\u110f\u0338\u0001\u0000\u0000\u0000\u1110\u1111\u0007\u0007\u0000\u0000"+ + "\u1111\u1112\u0007\u000e\u0000\u0000\u1112\u1113\u0007\u0014\u0000\u0000"+ + "\u1113\u1114\u0007\u0005\u0000\u0000\u1114\u1115\u0007\r\u0000\u0000\u1115"+ + "\u033a\u0001\u0000\u0000\u0000\u1116\u1117\u0007\u0007\u0000\u0000\u1117"+ + "\u1118\u0007\u0013\u0000\u0000\u1118\u1119\u0007\u0007\u0000\u0000\u1119"+ + "\u111a\u0007\n\u0000\u0000\u111a\u033c\u0001\u0000\u0000\u0000\u111b\u111c"+ + "\u0007\u0007\u0000\u0000\u111c\u111d\u0007\u0016\u0000\u0000\u111d\u111e"+ + "\u0007\u0006\u0000\u0000\u111e\u111f\u0007\u0006\u0000\u0000\u111f\u1120"+ + "\u0007\u0011\u0000\u0000\u1120\u1121\u0007\u0019\u0000\u0000\u1121\u033e"+ + "\u0001\u0000\u0000\u0000\u1122\u1123\u0007\u0007\u0000\u0000\u1123\u1124"+ + "\u0007\u0016\u0000\u0000\u1124\u1125\u0007\u000f\u0000\u0000\u1125\u1126"+ + "\u0007\n\u0000\u0000\u1126\u1127\u0007\r\u0000\u0000\u1127\u1128\u0007"+ + "\u0011\u0000\u0000\u1128\u1129\u0007\u000e\u0000\u0000\u1129\u0340\u0001"+ + "\u0000\u0000\u0000\u112a\u112b\u0007\u0013\u0000\u0000\u112b\u112c\u0007"+ + "\u001b\u0000\u0000\u112c\u112d\u0007\n\u0000\u0000\u112d\u112e\u0007\r"+ + "\u0000\u0000\u112e\u112f\u0007\u0006\u0000\u0000\u112f\u1130\u0007\u0005"+ + "\u0000\u0000\u1130\u1131\u0007\b\u0000\u0000\u1131\u0342\u0001\u0000\u0000"+ + "\u0000\u1132\u1133\u0007\u0018\u0000\u0000\u1133\u1134\u0007\u0013\u0000"+ + "\u0000\u1134\u1135\u0007\t\u0000\u0000\u1135\u1136\u0007\u0011\u0000\u0000"+ + "\u1136\u1137\u0007\u0010\u0000\u0000\u1137\u1138\u0007\u0011\u0000\u0000"+ + "\u1138\u1139\u0007\u0013\u0000\u0000\u1139\u113a\u0007\u0007\u0000\u0000"+ + "\u113a\u0344\u0001\u0000\u0000\u0000\u113b\u113c\u0007\u0018\u0000\u0000"+ + "\u113c\u113d\u0007\r\u0000\u0000\u113d\u113e\u0007\n\u0000\u0000\u113e"+ + "\u113f\u0007\u000e\u0000\u0000\u113f\u1140\u0007\u0011\u0000\u0000\u1140"+ + "\u1141\u0007\t\u0000\u0000\u1141\u1142\u0007\u0011\u0000\u0000\u1142\u1143"+ + "\u0007\u0013\u0000\u0000\u1143\u1144\u0007\u0007\u0000\u0000\u1144\u0346"+ + "\u0001\u0000\u0000\u0000\u1145\u1146\u0007\r\u0000\u0000\u1146\u1147\u0007"+ + "\n\u0000\u0000\u1147\u1148\u0007\u0005\u0000\u0000\u1148\u1149\u0007\u0006"+ + "\u0000\u0000\u1149\u0348\u0001\u0000\u0000\u0000\u114a\u114b\u0007\r\u0000"+ + "\u0000\u114b\u114c\u0007\u0013\u0000\u0000\u114c\u114d\u0007\u001c\u0000"+ + "\u0000\u114d\u034a\u0001\u0000\u0000\u0000\u114e\u114f\u0007\t\u0000\u0000"+ + "\u114f\u1150\u0007\n\u0000\u0000\u1150\u1151\u0007\u0010\u0000\u0000\u1151"+ + "\u1152\u0007\u0013\u0000\u0000\u1152\u1153\u0007\u0019\u0000\u0000\u1153"+ + "\u034c\u0001\u0000\u0000\u0000\u1154\u1155\u0007\t\u0000\u0000\u1155\u1156"+ + "\u0007\u000f\u0000\u0000\u1156\u1157\u0007\u0005\u0000\u0000\u1157\u1158"+ + "\u0007\u0006\u0000\u0000\u1158\u1159\u0007\u0006\u0000\u0000\u1159\u115a"+ + "\u0007\u0011\u0000\u0000\u115a\u115b\u0007\u0007\u0000\u0000\u115b\u115c"+ + "\u0007\u0010\u0000\u0000\u115c\u034e\u0001\u0000\u0000\u0000\u115d\u115e"+ + "\u0007\t\u0000\u0000\u115e\u115f\u0007\u0016\u0000\u0000\u115f\u1160\u0007"+ + "\u0012\u0000\u0000\u1160\u1161\u0007\t\u0000\u0000\u1161\u1162\u0007\u0010"+ + "\u0000\u0000\u1162\u1163\u0007\r\u0000\u0000\u1163\u1164\u0007\u0011\u0000"+ + "\u0000\u1164\u1165\u0007\u0007\u0000\u0000\u1165\u1166\u0007\u0017\u0000"+ + "\u0000\u1166\u0350\u0001\u0000\u0000\u0000\u1167\u1168\u0007\u0010\u0000"+ + "\u0000\u1168\u1169\u0007\u0011\u0000\u0000\u1169\u116a\u0007\u000f\u0000"+ + "\u0000\u116a\u116b\u0007\n\u0000\u0000\u116b\u0352\u0001\u0000\u0000\u0000"+ + "\u116c\u116d\u0007\u0010\u0000\u0000\u116d\u116e\u0007\u0011\u0000\u0000"+ + "\u116e\u116f\u0007\u000f\u0000\u0000\u116f\u1170\u0007\n\u0000\u0000\u1170"+ + "\u1171\u0007\t\u0000\u0000\u1171\u1172\u0007\u0010\u0000\u0000\u1172\u1173"+ + "\u0007\u0005\u0000\u0000\u1173\u1174\u0007\u000f\u0000\u0000\u1174\u1175"+ + "\u0007\u0018\u0000\u0000\u1175\u0354\u0001\u0000\u0000\u0000\u1176\u1177"+ + "\u0007\u0010\u0000\u0000\u1177\u1178\u0007\r\u0000\u0000\u1178\u1179\u0007"+ + "\n\u0000\u0000\u1179\u117a\u0007\u0005\u0000\u0000\u117a\u117b\u0007\u0010"+ + "\u0000\u0000\u117b\u0356\u0001\u0000\u0000\u0000\u117c\u117d\u0007\u0010"+ + "\u0000\u0000\u117d\u117e\u0007\r\u0000\u0000\u117e\u117f\u0007\u0011\u0000"+ + "\u0000\u117f\u1180\u0007\u000f\u0000\u0000\u1180\u0358\u0001\u0000\u0000"+ + "\u0000\u1181\u1182\u0007\u001b\u0000\u0000\u1182\u1183\u0007\u0005\u0000"+ + "\u0000\u1183\u1184\u0007\u0006\u0000\u0000\u1184\u1185\u0007\u0016\u0000"+ + "\u0000\u1185\u1186\u0007\n\u0000\u0000\u1186\u1187\u0007\t\u0000\u0000"+ + "\u1187\u035a\u0001\u0000\u0000\u0000\u1188\u1189\u0007\u001b\u0000\u0000"+ + "\u1189\u118a\u0007\u0005\u0000\u0000\u118a\u118b\u0007\r\u0000\u0000\u118b"+ + "\u118c\u0007\u000e\u0000\u0000\u118c\u118d\u0007\u0014\u0000\u0000\u118d"+ + "\u118e\u0007\u0005\u0000\u0000\u118e\u118f\u0007\r\u0000\u0000\u118f\u035c"+ + "\u0001\u0000\u0000\u0000\u1190\u1191\u0007\u001a\u0000\u0000\u1191\u1192"+ + "\u0007\u000f\u0000\u0000\u1192\u1193\u0007\u0006\u0000\u0000\u1193\u1194"+ + "\u0007\u0005\u0000\u0000\u1194\u1195\u0007\u0010\u0000\u0000\u1195\u1196"+ + "\u0007\u0010\u0000\u0000\u1196\u1197\u0007\r\u0000\u0000\u1197\u1198\u0007"+ + "\u0011\u0000\u0000\u1198\u1199\u0007\u0012\u0000\u0000\u1199\u119a\u0007"+ + "\u0016\u0000\u0000\u119a\u119b\u0007\u0010\u0000\u0000\u119b\u119c\u0007"+ + "\n\u0000\u0000\u119c\u119d\u0007\t\u0000\u0000\u119d\u035e\u0001\u0000"+ + "\u0000\u0000\u119e\u119f\u0007\u001a\u0000\u0000\u119f\u11a0\u0007\u000f"+ + "\u0000\u0000\u11a0\u11a1\u0007\u0006\u0000\u0000\u11a1\u11a2\u0007\u000e"+ + "\u0000\u0000\u11a2\u11a3\u0007\u0013\u0000\u0000\u11a3\u11a4\u0007\u000f"+ + "\u0000\u0000\u11a4\u11a5\u0007\u000f\u0000\u0000\u11a5\u11a6\u0007\n\u0000"+ + "\u0000\u11a6\u11a7\u0007\u0007\u0000\u0000\u11a7\u11a8\u0007\u0010\u0000"+ + "\u0000\u11a8\u0360\u0001\u0000\u0000\u0000\u11a9\u11aa\u0007\u001a\u0000"+ + "\u0000\u11aa\u11ab\u0007\u000f\u0000\u0000\u11ab\u11ac\u0007\u0006\u0000"+ + "\u0000\u11ac\u11ad\u0007\u0005\u0000\u0000\u11ad\u11ae\u0007\u0017\u0000"+ + "\u0000\u11ae\u11af\u0007\u0017\u0000\u0000\u11af\u0362\u0001\u0000\u0000"+ + "\u0000\u11b0\u11b1\u0007\u001a\u0000\u0000\u11b1\u11b2\u0007\u000f\u0000"+ + "\u0000\u11b2\u11b3\u0007\u0006\u0000\u0000\u11b3\u11b4\u0005_\u0000\u0000"+ + "\u11b4\u11b5\u0007\u0011\u0000\u0000\u11b5\u11b6\u0007\t\u0000\u0000\u11b6"+ + "\u11b7\u0005_\u0000\u0000\u11b7\u11b8\u0007\u001c\u0000\u0000\u11b8\u11b9"+ + "\u0007\n\u0000\u0000\u11b9\u11ba\u0007\u0006\u0000\u0000\u11ba\u11bb\u0007"+ + "\u0006\u0000\u0000\u11bb\u11bc\u0005_\u0000\u0000\u11bc\u11bd\u0007\u0019"+ + "\u0000\u0000\u11bd\u11be\u0007\u0013\u0000\u0000\u11be\u11bf\u0007\r\u0000"+ + "\u0000\u11bf\u11c0\u0007\u000f\u0000\u0000\u11c0\u11c1\u0007\n\u0000\u0000"+ + "\u11c1\u11c2\u0007\f\u0000\u0000\u11c2\u0364\u0001\u0000\u0000\u0000\u11c3"+ + "\u11c4\u0007\u001a\u0000\u0000\u11c4\u11c5\u0007\u000f\u0000\u0000\u11c5"+ + "\u11c6\u0007\u0006\u0000\u0000\u11c6\u11c7\u0005_\u0000\u0000\u11c7\u11c8"+ + "\u0007\u0011\u0000\u0000\u11c8\u11c9\u0007\t\u0000\u0000\u11c9\u11ca\u0005"+ + "_\u0000\u0000\u11ca\u11cb\u0007\u001c\u0000\u0000\u11cb\u11cc\u0007\n"+ + "\u0000\u0000\u11cc\u11cd\u0007\u0006\u0000\u0000\u11cd\u11ce\u0007\u0006"+ + "\u0000\u0000\u11ce\u11cf\u0005_\u0000\u0000\u11cf\u11d0\u0007\u0019\u0000"+ + "\u0000\u11d0\u11d1\u0007\u0013\u0000\u0000\u11d1\u11d2\u0007\r\u0000\u0000"+ + "\u11d2\u11d3\u0007\u000f\u0000\u0000\u11d3\u11d4\u0007\n\u0000\u0000\u11d4"+ + "\u11d5\u0007\f\u0000\u0000\u11d5\u11d6\u0005_\u0000\u0000\u11d6\u11d7"+ + "\u0007\f\u0000\u0000\u11d7\u11d8\u0007\u0013\u0000\u0000\u11d8\u11d9\u0007"+ + "\u000e\u0000\u0000\u11d9\u11da\u0007\u0016\u0000\u0000\u11da\u11db\u0007"+ + "\u000f\u0000\u0000\u11db\u11dc\u0007\n\u0000\u0000\u11dc\u11dd\u0007\u0007"+ + "\u0000\u0000\u11dd\u11de\u0007\u0010\u0000\u0000\u11de\u0366\u0001\u0000"+ + "\u0000\u0000\u11df\u11e0\u0007\u001a\u0000\u0000\u11e0\u11e1\u0007\u000f"+ + "\u0000\u0000\u11e1\u11e2\u0007\u0006\u0000\u0000\u11e2\u11e3\u0005_\u0000"+ + "\u0000\u11e3\u11e4\u0007\u0011\u0000\u0000\u11e4\u11e5\u0007\t\u0000\u0000"+ + "\u11e5\u11e6\u0005_\u0000\u0000\u11e6\u11e7\u0007\u001c\u0000\u0000\u11e7"+ + "\u11e8\u0007\n\u0000\u0000\u11e8\u11e9\u0007\u0006\u0000\u0000\u11e9\u11ea"+ + "\u0007\u0006\u0000\u0000\u11ea\u11eb\u0005_\u0000\u0000\u11eb\u11ec\u0007"+ + "\u0019\u0000\u0000\u11ec\u11ed\u0007\u0013\u0000\u0000\u11ed\u11ee\u0007"+ + "\r\u0000\u0000\u11ee\u11ef\u0007\u000f\u0000\u0000\u11ef\u11f0\u0007\n"+ + "\u0000\u0000\u11f0\u11f1\u0007\f\u0000\u0000\u11f1\u11f2\u0005_\u0000"+ + "\u0000\u11f2\u11f3\u0007\u000e\u0000\u0000\u11f3\u11f4\u0007\u0013\u0000"+ + "\u0000\u11f4\u11f5\u0007\u0007\u0000\u0000\u11f5\u11f6\u0007\u0010\u0000"+ + "\u0000\u11f6\u11f7\u0007\n\u0000\u0000\u11f7\u11f8\u0007\u0007\u0000\u0000"+ + "\u11f8\u11f9\u0007\u0010\u0000\u0000\u11f9\u0368\u0001\u0000\u0000\u0000"+ + "\u11fa\u11fb\u0007\u001a\u0000\u0000\u11fb\u11fc\u0007\u0018\u0000\u0000"+ + "\u11fc\u11fd\u0007\u0005\u0000\u0000\u11fd\u11fe\u0007\u0010\u0000\u0000"+ + "\u11fe\u11ff\u0007\u0014\u0000\u0000\u11ff\u036a\u0001\u0000\u0000\u0000"+ + "\u1200\u1201\u0007\u001a\u0000\u0000\u1201\u1202\u0007\u0018\u0000\u0000"+ + "\u1202\u1203\u0007\u0005\u0000\u0000\u1203\u1204\u0007\u0010\u0000\u0000"+ + "\u1204\u1205\u0007\u0014\u0000\u0000\u1205\u1206\u0005_\u0000\u0000\u1206"+ + "\u1207\u0007\n\u0000\u0000\u1207\u1208\u0007\u001a\u0000\u0000\u1208\u1209"+ + "\u0007\u0011\u0000\u0000\u1209\u120a\u0007\t\u0000\u0000\u120a\u120b\u0007"+ + "\u0010\u0000\u0000\u120b\u120c\u0007\t\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\u000e"+ + "\u0000\u0000\u1211\u1212\u0007\u0013\u0000\u0000\u1212\u1213\u0007\u0007"+ + "\u0000\u0000\u1213\u1214\u0007\u000e\u0000\u0000\u1214\u1215\u0007\u0005"+ + "\u0000\u0000\u1215\u1216\u0007\u0010\u0000\u0000\u1216\u036e\u0001\u0000"+ + "\u0000\u0000\u1217\u1218\u0007\u001a\u0000\u0000\u1218\u1219\u0007\u000f"+ + "\u0000\u0000\u1219\u121a\u0007\u0006\u0000\u0000\u121a\u121b\u0007\n\u0000"+ + "\u0000\u121b\u121c\u0007\u0006\u0000\u0000\u121c\u121d\u0007\n\u0000\u0000"+ + "\u121d\u121e\u0007\u000f\u0000\u0000\u121e\u121f\u0007\n\u0000\u0000\u121f"+ + "\u1220\u0007\u0007\u0000\u0000\u1220\u1221\u0007\u0010\u0000\u0000\u1221"+ + "\u0370\u0001\u0000\u0000\u0000\u1222\u1223\u0007\u001a\u0000\u0000\u1223"+ + "\u1224\u0007\u000f\u0000\u0000\u1224\u1225\u0007\u0006\u0000\u0000\u1225"+ + "\u1226\u0007\n\u0000\u0000\u1226\u1227\u0007\u001a\u0000\u0000\u1227\u1228"+ + "\u0007\u0011\u0000\u0000\u1228\u1229\u0007\t\u0000\u0000\u1229\u122a\u0007"+ + "\u0010\u0000\u0000\u122a\u122b\u0007\t\u0000\u0000\u122b\u0372\u0001\u0000"+ + "\u0000\u0000\u122c\u122d\u0007\u001a\u0000\u0000\u122d\u122e\u0007\u000f"+ + "\u0000\u0000\u122e\u122f\u0007\u0006\u0000\u0000\u122f\u1230\u0007\u0019"+ + "\u0000\u0000\u1230\u1231\u0007\u0013\u0000\u0000\u1231\u1232\u0007\r\u0000"+ + "\u0000\u1232\u1233\u0007\n\u0000\u0000\u1233\u1234\u0007\t\u0000\u0000"+ + "\u1234\u1235\u0007\u0010\u0000\u0000\u1235\u0374\u0001\u0000\u0000\u0000"+ + "\u1236\u1237\u0007\u001a\u0000\u0000\u1237\u1238\u0007\u000f\u0000\u0000"+ + "\u1238\u1239\u0007\u0006\u0000\u0000\u1239\u123a\u0007\u0018\u0000\u0000"+ + "\u123a\u123b\u0007\u0005\u0000\u0000\u123b\u123c\u0007\r\u0000\u0000\u123c"+ + "\u123d\u0007\t\u0000\u0000\u123d\u123e\u0007\n\u0000\u0000\u123e\u0376"+ + "\u0001\u0000\u0000\u0000\u123f\u1240\u0007\u001a\u0000\u0000\u1240\u1241"+ + "\u0007\u000f\u0000\u0000\u1241\u1242\u0007\u0006\u0000\u0000\u1242\u1243"+ + "\u0007\u0018\u0000\u0000\u1243\u1244\u0007\u0011\u0000\u0000\u1244\u0378"+ + "\u0001\u0000\u0000\u0000\u1245\u1246\u0007\u001a\u0000\u0000\u1246\u1247"+ + "\u0007\u000f\u0000\u0000\u1247\u1248\u0007\u0006\u0000\u0000\u1248\u1249"+ + "\u0007\r\u0000\u0000\u1249\u124a\u0007"; + private static final String _serializedATNSegment2 = + "\u0013\u0000\u0000\u124a\u124b\u0007\u0013\u0000\u0000\u124b\u124c\u0007"+ + "\u0010\u0000\u0000\u124c\u037a\u0001\u0000\u0000\u0000\u124d\u124e\u0007"+ + "\u001a\u0000\u0000\u124e\u124f\u0007\u000f\u0000\u0000\u124f\u1250\u0007"+ + "\u0006\u0000\u0000\u1250\u1251\u0007\t\u0000\u0000\u1251\u1252\u0007\n"+ + "\u0000\u0000\u1252\u1253\u0007\r\u0000\u0000\u1253\u1254\u0007\u0011\u0000"+ + "\u0000\u1254\u1255\u0007\u0005\u0000\u0000\u1255\u1256\u0007\u0006\u0000"+ + "\u0000\u1256\u1257\u0007\u0011\u0000\u0000\u1257\u1258\u0007\u000b\u0000"+ + "\u0000\u1258\u1259\u0007\n\u0000\u0000\u1259\u037c\u0001\u0000\u0000\u0000"+ + "\u125a\u125b\u0007\u000e\u0000\u0000\u125b\u125c\u0007\u0005\u0000\u0000"+ + "\u125c\u125d\u0007\u0006\u0000\u0000\u125d\u125e\u0007\u0006\u0000\u0000"+ + "\u125e\u037e\u0001\u0000\u0000\u0000\u125f\u1260\u0007\u000e\u0000\u0000"+ + "\u1260\u1261\u0007\u0016\u0000\u0000\u1261\u1262\u0007\r\u0000\u0000\u1262"+ + "\u1263\u0007\r\u0000\u0000\u1263\u1264\u0007\n\u0000\u0000\u1264\u1265"+ + "\u0007\u0007\u0000\u0000\u1265\u1266\u0007\u0010\u0000\u0000\u1266\u0380"+ + "\u0001\u0000\u0000\u0000\u1267\u1268\u0007\u0005\u0000\u0000\u1268\u1269"+ + "\u0007\u0010\u0000\u0000\u1269\u126a\u0007\u0010\u0000\u0000\u126a\u126b"+ + "\u0007\u0005\u0000\u0000\u126b\u126c\u0007\u000e\u0000\u0000\u126c\u126d"+ + "\u0007\u0014\u0000\u0000\u126d\u0382\u0001\u0000\u0000\u0000\u126e\u126f"+ + "\u0007\f\u0000\u0000\u126f\u1270\u0007\n\u0000\u0000\u1270\u1271\u0007"+ + "\u0010\u0000\u0000\u1271\u1272\u0007\u0005\u0000\u0000\u1272\u1273\u0007"+ + "\u000e\u0000\u0000\u1273\u1274\u0007\u0014\u0000\u0000\u1274\u0384\u0001"+ + "\u0000\u0000\u0000\u1275\u1276\u0007\n\u0000\u0000\u1276\u1277\u0007\u001a"+ + "\u0000\u0000\u1277\u1278\u0007\u0018\u0000\u0000\u1278\u1279\u0007\r\u0000"+ + "\u0000\u1279\u127a\u0007\n\u0000\u0000\u127a\u127b\u0007\t\u0000\u0000"+ + "\u127b\u127c\u0007\t\u0000\u0000\u127c\u127d\u0007\u0011\u0000\u0000\u127d"+ + "\u127e\u0007\u0013\u0000\u0000\u127e\u127f\u0007\u0007\u0000\u0000\u127f"+ + "\u0386\u0001\u0000\u0000\u0000\u1280\u1281\u0007\u0017\u0000\u0000\u1281"+ + "\u1282\u0007\n\u0000\u0000\u1282\u1283\u0007\u0007\u0000\u0000\u1283\u1284"+ + "\u0007\n\u0000\u0000\u1284\u1285\u0007\r\u0000\u0000\u1285\u1286\u0007"+ + "\u0005\u0000\u0000\u1286\u1287\u0007\u0010\u0000\u0000\u1287\u1288\u0007"+ + "\n\u0000\u0000\u1288\u1289\u0007\f\u0000\u0000\u1289\u0388\u0001\u0000"+ + "\u0000\u0000\u128a\u128b\u0007\u0006\u0000\u0000\u128b\u128c\u0007\u0013"+ + "\u0000\u0000\u128c\u128d\u0007\u0017\u0000\u0000\u128d\u128e\u0007\u0017"+ + "\u0000\u0000\u128e\u128f\u0007\n\u0000\u0000\u128f\u1290\u0007\f\u0000"+ + "\u0000\u1290\u038a\u0001\u0000\u0000\u0000\u1291\u1292\u0007\t\u0000\u0000"+ + "\u1292\u1293\u0007\u0010\u0000\u0000\u1293\u1294\u0007\u0013\u0000\u0000"+ + "\u1294\u1295\u0007\r\u0000\u0000\u1295\u1296\u0007\n\u0000\u0000\u1296"+ + "\u1297\u0007\f\u0000\u0000\u1297\u038c\u0001\u0000\u0000\u0000\u1298\u1299"+ + "\u0007\u0011\u0000\u0000\u1299\u129a\u0007\u0007\u0000\u0000\u129a\u129b"+ + "\u0007\u000e\u0000\u0000\u129b\u129c\u0007\u0006\u0000\u0000\u129c\u129d"+ + "\u0007\u0016\u0000\u0000\u129d\u129e\u0007\f\u0000\u0000\u129e\u129f\u0007"+ + "\n\u0000\u0000\u129f\u038e\u0001\u0000\u0000\u0000\u12a0\u12a1\u0007\r"+ + "\u0000\u0000\u12a1\u12a2\u0007\u0013\u0000\u0000\u12a2\u12a3\u0007\u0016"+ + "\u0000\u0000\u12a3\u12a4\u0007\u0010\u0000\u0000\u12a4\u12a5\u0007\u0011"+ + "\u0000\u0000\u12a5\u12a6\u0007\u0007\u0000\u0000\u12a6\u12a7\u0007\n\u0000"+ + "\u0000\u12a7\u0390\u0001\u0000\u0000\u0000\u12a8\u12a9\u0007\u0010\u0000"+ + "\u0000\u12a9\u12aa\u0007\r\u0000\u0000\u12aa\u12ab\u0007\u0005\u0000\u0000"+ + "\u12ab\u12ac\u0007\u0007\u0000\u0000\u12ac\u12ad\u0007\t\u0000\u0000\u12ad"+ + "\u12ae\u0007\u0019\u0000\u0000\u12ae\u12af\u0007\u0013\u0000\u0000\u12af"+ + "\u12b0\u0007\r\u0000\u0000\u12b0\u12b1\u0007\u000f\u0000\u0000\u12b1\u0392"+ + "\u0001\u0000\u0000\u0000\u12b2\u12b3\u0007\u0011\u0000\u0000\u12b3\u12b4"+ + "\u0007\u000f\u0000\u0000\u12b4\u12b5\u0007\u0018\u0000\u0000\u12b5\u12b6"+ + "\u0007\u0013\u0000\u0000\u12b6\u12b7\u0007\r\u0000\u0000\u12b7\u12b8\u0007"+ + "\u0010\u0000\u0000\u12b8\u0394\u0001\u0000\u0000\u0000\u12b9\u12ba\u0007"+ + "\u0018\u0000\u0000\u12ba\u12bb\u0007\u0013\u0000\u0000\u12bb\u12bc\u0007"+ + "\u0006\u0000\u0000\u12bc\u12bd\u0007\u0011\u0000\u0000\u12bd\u12be\u0007"+ + "\u000e\u0000\u0000\u12be\u12bf\u0007\b\u0000\u0000\u12bf\u0396\u0001\u0000"+ + "\u0000\u0000\u12c0\u12c1\u0007\u000f\u0000\u0000\u12c1\u12c2\u0007\n\u0000"+ + "\u0000\u12c2\u12c3\u0007\u0010\u0000\u0000\u12c3\u12c4\u0007\u0014\u0000"+ + "\u0000\u12c4\u12c5\u0007\u0013\u0000\u0000\u12c5\u12c6\u0007\f\u0000\u0000"+ + "\u12c6\u0398\u0001\u0000\u0000\u0000\u12c7\u12c8\u0007\r\u0000\u0000\u12c8"+ + "\u12c9\u0007\n\u0000\u0000\u12c9\u12ca\u0007\u0019\u0000\u0000\u12ca\u12cb"+ + "\u0007\n\u0000\u0000\u12cb\u12cc\u0007\r\u0000\u0000\u12cc\u12cd\u0007"+ + "\n\u0000\u0000\u12cd\u12ce\u0007\u0007\u0000\u0000\u12ce\u12cf\u0007\u000e"+ + "\u0000\u0000\u12cf\u12d0\u0007\u0011\u0000\u0000\u12d0\u12d1\u0007\u0007"+ + "\u0000\u0000\u12d1\u12d2\u0007\u0017\u0000\u0000\u12d2\u039a\u0001\u0000"+ + "\u0000\u0000\u12d3\u12d4\u0007\u0007\u0000\u0000\u12d4\u12d5\u0007\n\u0000"+ + "\u0000\u12d5\u12d6\u0007\u001c\u0000\u0000\u12d6\u039c\u0001\u0000\u0000"+ + "\u0000\u12d7\u12d8\u0007\u0013\u0000\u0000\u12d8\u12d9\u0007\u0006\u0000"+ + "\u0000\u12d9\u12da\u0007\f\u0000\u0000\u12da\u039e\u0001\u0000\u0000\u0000"+ + "\u12db\u12dc\u0007\u001b\u0000\u0000\u12dc\u12dd\u0007\u0005\u0000\u0000"+ + "\u12dd\u12de\u0007\u0006\u0000\u0000\u12de\u12df\u0007\u0016\u0000\u0000"+ + "\u12df\u12e0\u0007\n\u0000\u0000\u12e0\u03a0\u0001\u0000\u0000\u0000\u12e1"+ + "\u12e2\u0007\t\u0000\u0000\u12e2\u12e3\u0007\u0016\u0000\u0000\u12e3\u12e4"+ + "\u0007\u0012\u0000\u0000\u12e4\u12e5\u0007\t\u0000\u0000\u12e5\u12e6\u0007"+ + "\u000e\u0000\u0000\u12e6\u12e7\u0007\r\u0000\u0000\u12e7\u12e8\u0007\u0011"+ + "\u0000\u0000\u12e8\u12e9\u0007\u0018\u0000\u0000\u12e9\u12ea\u0007\u0010"+ + "\u0000\u0000\u12ea\u12eb\u0007\u0011\u0000\u0000\u12eb\u12ec\u0007\u0013"+ + "\u0000\u0000\u12ec\u12ed\u0007\u0007\u0000\u0000\u12ed\u03a2\u0001\u0000"+ + "\u0000\u0000\u12ee\u12ef\u0007\u0018\u0000\u0000\u12ef\u12f0\u0007\u0016"+ + "\u0000\u0000\u12f0\u12f1\u0007\u0012\u0000\u0000\u12f1\u12f2\u0007\u0006"+ + "\u0000\u0000\u12f2\u12f3\u0007\u0011\u0000\u0000\u12f3\u12f4\u0007\u000e"+ + "\u0000\u0000\u12f4\u12f5\u0007\u0005\u0000\u0000\u12f5\u12f6\u0007\u0010"+ + "\u0000\u0000\u12f6\u12f7\u0007\u0011\u0000\u0000\u12f7\u12f8\u0007\u0013"+ + "\u0000\u0000\u12f8\u12f9\u0007\u0007\u0000\u0000\u12f9\u03a4\u0001\u0000"+ + "\u0000\u0000\u12fa\u12fb\u0007\u0013\u0000\u0000\u12fb\u12fc\u0007\u0016"+ + "\u0000\u0000\u12fc\u12fd\u0007\u0010\u0000\u0000\u12fd\u03a6\u0001\u0000"+ + "\u0000\u0000\u12fe\u12ff\u0007\n\u0000\u0000\u12ff\u1300\u0007\u0007\u0000"+ + "\u0000\u1300\u1301\u0007\f\u0000\u0000\u1301\u03a8\u0001\u0000\u0000\u0000"+ + "\u1302\u1303\u0007\r\u0000\u0000\u1303\u1304\u0007\u0013\u0000\u0000\u1304"+ + "\u1305\u0007\u0016\u0000\u0000\u1305\u1306\u0007\u0010\u0000\u0000\u1306"+ + "\u1307\u0007\u0011\u0000\u0000\u1307\u1308\u0007\u0007\u0000\u0000\u1308"+ + "\u1309\u0007\n\u0000\u0000\u1309\u130a\u0007\t\u0000\u0000\u130a\u03aa"+ + "\u0001\u0000\u0000\u0000\u130b\u130c\u0007\t\u0000\u0000\u130c\u130d\u0007"+ + "\u000e\u0000\u0000\u130d\u130e\u0007\u0014\u0000\u0000\u130e\u130f\u0007"+ + "\n\u0000\u0000\u130f\u1310\u0007\u000f\u0000\u0000\u1310\u1311\u0007\u0005"+ + "\u0000\u0000\u1311\u1312\u0007\t\u0000\u0000\u1312\u03ac\u0001\u0000\u0000"+ + "\u0000\u1313\u1314\u0007\u0018\u0000\u0000\u1314\u1315\u0007\r\u0000\u0000"+ + "\u1315\u1316\u0007\u0013\u0000\u0000\u1316\u1317\u0007\u000e\u0000\u0000"+ + "\u1317\u1318\u0007\n\u0000\u0000\u1318\u1319\u0007\f\u0000\u0000\u1319"+ + "\u131a\u0007\u0016\u0000\u0000\u131a\u131b\u0007\r\u0000\u0000\u131b\u131c"+ + "\u0007\n\u0000\u0000\u131c\u131d\u0007\t\u0000\u0000\u131d\u03ae\u0001"+ + "\u0000\u0000\u0000\u131e\u131f\u0007\u0011\u0000\u0000\u131f\u1320\u0007"+ + "\u0007\u0000\u0000\u1320\u1321\u0007\u0018\u0000\u0000\u1321\u1322\u0007"+ + "\u0016\u0000\u0000\u1322\u1323\u0007\u0010\u0000\u0000\u1323\u03b0\u0001"+ + "\u0000\u0000\u0000\u1324\u1325\u0007\t\u0000\u0000\u1325\u1326\u0007\u0016"+ + "\u0000\u0000\u1326\u1327\u0007\u0018\u0000\u0000\u1327\u1328\u0007\u0018"+ + "\u0000\u0000\u1328\u1329\u0007\u0013\u0000\u0000\u1329\u132a\u0007\r\u0000"+ + "\u0000\u132a\u132b\u0007\u0010\u0000\u0000\u132b\u03b2\u0001\u0000\u0000"+ + "\u0000\u132c\u132d\u0007\u0018\u0000\u0000\u132d\u132e\u0007\u0005\u0000"+ + "\u0000\u132e\u132f\u0007\r\u0000\u0000\u132f\u1330\u0007\u0005\u0000\u0000"+ + "\u1330\u1331\u0007\u0006\u0000\u0000\u1331\u1332\u0007\u0006\u0000\u0000"+ + "\u1332\u1333\u0007\n\u0000\u0000\u1333\u1334\u0007\u0006\u0000\u0000\u1334"+ + "\u03b4\u0001\u0000\u0000\u0000\u1335\u1336\u0007\t\u0000\u0000\u1336\u1337"+ + "\u0007\u001d\u0000\u0000\u1337\u1338\u0007\u0006\u0000\u0000\u1338\u03b6"+ + "\u0001\u0000\u0000\u0000\u1339\u133a\u0007\f\u0000\u0000\u133a\u133b\u0007"+ + "\n\u0000\u0000\u133b\u133c\u0007\u0018\u0000\u0000\u133c\u133d\u0007\n"+ + "\u0000\u0000\u133d\u133e\u0007\u0007\u0000\u0000\u133e\u133f\u0007\f\u0000"+ + "\u0000\u133f\u1340\u0007\t\u0000\u0000\u1340\u03b8\u0001\u0000\u0000\u0000"+ + "\u1341\u1342\u0007\u0013\u0000\u0000\u1342\u1343\u0007\u001b\u0000\u0000"+ + "\u1343\u1344\u0007\n\u0000\u0000\u1344\u1345\u0007\r\u0000\u0000\u1345"+ + "\u1346\u0007\r\u0000\u0000\u1346\u1347\u0007\u0011\u0000\u0000\u1347\u1348"+ + "\u0007\f\u0000\u0000\u1348\u1349\u0007\u0011\u0000\u0000\u1349\u134a\u0007"+ + "\u0007\u0000\u0000\u134a\u134b\u0007\u0017\u0000\u0000\u134b\u03ba\u0001"+ + "\u0000\u0000\u0000\u134c\u134d\u0007\u000e\u0000\u0000\u134d\u134e\u0007"+ + "\u0013\u0000\u0000\u134e\u134f\u0007\u0007\u0000\u0000\u134f\u1350\u0007"+ + "\u0019\u0000\u0000\u1350\u1351\u0007\u0006\u0000\u0000\u1351\u1352\u0007"+ + "\u0011\u0000\u0000\u1352\u1353\u0007\u000e\u0000\u0000\u1353\u1354\u0007"+ + "\u0010\u0000\u0000\u1354\u03bc\u0001\u0000\u0000\u0000\u1355\u1356\u0007"+ + "\t\u0000\u0000\u1356\u1357\u0007\u0015\u0000\u0000\u1357\u1358\u0007\u0011"+ + "\u0000\u0000\u1358\u1359\u0007\u0018\u0000\u0000\u1359\u03be\u0001\u0000"+ + "\u0000\u0000\u135a\u135b\u0007\u0006\u0000\u0000\u135b\u135c\u0007\u0013"+ + "\u0000\u0000\u135c\u135d\u0007\u000e\u0000\u0000\u135d\u135e\u0007\u0015"+ + "\u0000\u0000\u135e\u135f\u0007\n\u0000\u0000\u135f\u1360\u0007\f\u0000"+ + "\u0000\u1360\u03c0\u0001\u0000\u0000\u0000\u1361\u1362\u0007\u0010\u0000"+ + "\u0000\u1362\u1363\u0007\u0011\u0000\u0000\u1363\u1364\u0007\n\u0000\u0000"+ + "\u1364\u1365\u0007\t\u0000\u0000\u1365\u03c2\u0001\u0000\u0000\u0000\u1366"+ + "\u1367\u0007\r\u0000\u0000\u1367\u1368\u0007\u0013\u0000\u0000\u1368\u1369"+ + "\u0007\u0006\u0000\u0000\u1369\u136a\u0007\u0006\u0000\u0000\u136a\u136b"+ + "\u0007\u0016\u0000\u0000\u136b\u136c\u0007\u0018\u0000\u0000\u136c\u03c4"+ + "\u0001\u0000\u0000\u0000\u136d\u136e\u0007\u000e\u0000\u0000\u136e\u136f"+ + "\u0007\u0016\u0000\u0000\u136f\u1370\u0007\u0012\u0000\u0000\u1370\u1371"+ + "\u0007\n\u0000\u0000\u1371\u03c6\u0001\u0000\u0000\u0000\u1372\u1373\u0007"+ + "\u0017\u0000\u0000\u1373\u1374\u0007\r\u0000\u0000\u1374\u1375\u0007\u0013"+ + "\u0000\u0000\u1375\u1376\u0007\u0016\u0000\u0000\u1376\u1377\u0007\u0018"+ + "\u0000\u0000\u1377\u1378\u0007\u0011\u0000\u0000\u1378\u1379\u0007\u0007"+ + "\u0000\u0000\u1379\u137a\u0007\u0017\u0000\u0000\u137a\u03c8\u0001\u0000"+ + "\u0000\u0000\u137b\u137c\u0007\t\u0000\u0000\u137c\u137d\u0007\n\u0000"+ + "\u0000\u137d\u137e\u0007\u0010\u0000\u0000\u137e\u137f\u0007\t\u0000\u0000"+ + "\u137f\u03ca\u0001\u0000\u0000\u0000\u1380\u1381\u0007\u0010\u0000\u0000"+ + "\u1381\u1382\u0007\u0005\u0000\u0000\u1382\u1383\u0007\u0012\u0000\u0000"+ + "\u1383\u1384\u0007\u0006\u0000\u0000\u1384\u1385\u0007\n\u0000\u0000\u1385"+ + "\u1386\u0007\t\u0000\u0000\u1386\u1387\u0007\u0005\u0000\u0000\u1387\u1388"+ + "\u0007\u000f\u0000\u0000\u1388\u1389\u0007\u0018\u0000\u0000\u1389\u138a"+ + "\u0007\u0006\u0000\u0000\u138a\u138b\u0007\n\u0000\u0000\u138b\u03cc\u0001"+ + "\u0000\u0000\u0000\u138c\u138d\u0007\u0013\u0000\u0000\u138d\u138e\u0007"+ + "\r\u0000\u0000\u138e\u138f\u0007\f\u0000\u0000\u138f\u1390\u0007\u0011"+ + "\u0000\u0000\u1390\u1391\u0007\u0007\u0000\u0000\u1391\u1392\u0007\u0005"+ + "\u0000\u0000\u1392\u1393\u0007\u0006\u0000\u0000\u1393\u1394\u0007\u0011"+ + "\u0000\u0000\u1394\u1395\u0007\u0010\u0000\u0000\u1395\u1396\u0007\b\u0000"+ + "\u0000\u1396\u03ce\u0001\u0000\u0000\u0000\u1397\u1398\u0007\u001a\u0000"+ + "\u0000\u1398\u1399\u0007\u000f\u0000\u0000\u1399\u139a\u0007\u0006\u0000"+ + "\u0000\u139a\u139b\u0007\u0010\u0000\u0000\u139b\u139c\u0007\u0005\u0000"+ + "\u0000\u139c\u139d\u0007\u0012\u0000\u0000\u139d\u139e\u0007\u0006\u0000"+ + "\u0000\u139e\u139f\u0007\n\u0000\u0000\u139f\u03d0\u0001\u0000\u0000\u0000"+ + "\u13a0\u13a1\u0007\u000e\u0000\u0000\u13a1\u13a2\u0007\u0013\u0000\u0000"+ + "\u13a2\u13a3\u0007\u0006\u0000\u0000\u13a3\u13a4\u0007\u0016\u0000\u0000"+ + "\u13a4\u13a5\u0007\u000f\u0000\u0000\u13a5\u13a6\u0007\u0007\u0000\u0000"+ + "\u13a6\u13a7\u0007\t\u0000\u0000\u13a7\u03d2\u0001\u0000\u0000\u0000\u13a8"+ + "\u13a9\u0007\u001a\u0000\u0000\u13a9\u13aa\u0007\u000f\u0000\u0000\u13aa"+ + "\u13ab\u0007\u0006\u0000\u0000\u13ab\u13ac\u0007\u0007\u0000\u0000\u13ac"+ + "\u13ad\u0007\u0005\u0000\u0000\u13ad\u13ae\u0007\u000f\u0000\u0000\u13ae"+ + "\u13af\u0007\n\u0000\u0000\u13af\u13b0\u0007\t\u0000\u0000\u13b0\u13b1"+ + "\u0007\u0018\u0000\u0000\u13b1\u13b2\u0007\u0005\u0000\u0000\u13b2\u13b3"+ + "\u0007\u000e\u0000\u0000\u13b3\u13b4\u0007\n\u0000\u0000\u13b4\u13b5\u0007"+ + "\t\u0000\u0000\u13b5\u03d4\u0001\u0000\u0000\u0000\u13b6\u13b7\u0007\r"+ + "\u0000\u0000\u13b7\u13b8\u0007\u0013\u0000\u0000\u13b8\u13b9\u0007\u001c"+ + "\u0000\u0000\u13b9\u13ba\u0007\u0010\u0000\u0000\u13ba\u13bb\u0007\b\u0000"+ + "\u0000\u13bb\u13bc\u0007\u0018\u0000\u0000\u13bc\u13bd\u0007\n\u0000\u0000"+ + "\u13bd\u03d6\u0001\u0000\u0000\u0000\u13be\u13bf\u0007\u0007\u0000\u0000"+ + "\u13bf\u13c0\u0007\u0013\u0000\u0000\u13c0\u13c1\u0007\r\u0000\u0000\u13c1"+ + "\u13c2\u0007\u000f\u0000\u0000\u13c2\u13c3\u0007\u0005\u0000\u0000\u13c3"+ + "\u13c4\u0007\u0006\u0000\u0000\u13c4\u13c5\u0007\u0011\u0000\u0000\u13c5"+ + "\u13c6\u0007\u000b\u0000\u0000\u13c6\u13c7\u0007\n\u0000\u0000\u13c7\u13c8"+ + "\u0007\f\u0000\u0000\u13c8\u03d8\u0001\u0000\u0000\u0000\u13c9\u13ca\u0007"+ + "\u001c\u0000\u0000\u13ca\u13cb\u0007\u0011\u0000\u0000\u13cb\u13cc\u0007"+ + "\u0010\u0000\u0000\u13cc\u13cd\u0007\u0014\u0000\u0000\u13cd\u13ce\u0007"+ + "\u0011\u0000\u0000\u13ce\u13cf\u0007\u0007\u0000\u0000\u13cf\u03da\u0001"+ + "\u0000\u0000\u0000\u13d0\u13d1\u0007\u0019\u0000\u0000\u13d1\u13d2\u0007"+ + "\u0011\u0000\u0000\u13d2\u13d3\u0007\u0006\u0000\u0000\u13d3\u13d4\u0007"+ + "\u0010\u0000\u0000\u13d4\u13d5\u0007\n\u0000\u0000\u13d5\u13d6\u0007\r"+ + "\u0000\u0000\u13d6\u03dc\u0001\u0000\u0000\u0000\u13d7\u13d8\u0007\u0017"+ + "\u0000\u0000\u13d8\u13d9\u0007\r\u0000\u0000\u13d9\u13da\u0007\u0013\u0000"+ + "\u0000\u13da\u13db\u0007\u0016\u0000\u0000\u13db\u13dc\u0007\u0018\u0000"+ + "\u0000\u13dc\u13dd\u0007\t\u0000\u0000\u13dd\u03de\u0001\u0000\u0000\u0000"+ + "\u13de\u13df\u0007\u0013\u0000\u0000\u13df\u13e0\u0007\u0010\u0000\u0000"+ + "\u13e0\u13e1\u0007\u0014\u0000\u0000\u13e1\u13e2\u0007\n\u0000\u0000\u13e2"+ + "\u13e3\u0007\r\u0000\u0000\u13e3\u13e4\u0007\t\u0000\u0000\u13e4\u03e0"+ + "\u0001\u0000\u0000\u0000\u13e5\u13e6\u0007\u0007\u0000\u0000\u13e6\u13e7"+ + "\u0007\u0019\u0000\u0000\u13e7\u13e8\u0007\u000e\u0000\u0000\u13e8\u03e2"+ + "\u0001\u0000\u0000\u0000\u13e9\u13ea\u0007\u0007\u0000\u0000\u13ea\u13eb"+ + "\u0007\u0019\u0000\u0000\u13eb\u13ec\u0007\f\u0000\u0000\u13ec\u03e4\u0001"+ + "\u0000\u0000\u0000\u13ed\u13ee\u0007\u0007\u0000\u0000\u13ee\u13ef\u0007"+ + "\u0019\u0000\u0000\u13ef\u13f0\u0007\u0015\u0000\u0000\u13f0\u13f1\u0007"+ + "\u000e\u0000\u0000\u13f1\u03e6\u0001\u0000\u0000\u0000\u13f2\u13f3\u0007"+ + "\u0007\u0000\u0000\u13f3\u13f4\u0007\u0019\u0000\u0000\u13f4\u13f5\u0007"+ + "\u0015\u0000\u0000\u13f5\u13f6\u0007\f\u0000\u0000\u13f6\u03e8\u0001\u0000"+ + "\u0000\u0000\u13f7\u13f8\u0007\u0016\u0000\u0000\u13f8\u13f9\u0007\n\u0000"+ + "\u0000\u13f9\u13fa\u0007\t\u0000\u0000\u13fa\u13fb\u0007\u000e\u0000\u0000"+ + "\u13fb\u13fc\u0007\u0005\u0000\u0000\u13fc\u13fd\u0007\u0018\u0000\u0000"+ + "\u13fd\u13fe\u0007\n\u0000\u0000\u13fe\u03ea\u0001\u0000\u0000\u0000\u13ff"+ + "\u1400\u0007\u001b\u0000\u0000\u1400\u1401\u0007\u0011\u0000\u0000\u1401"+ + "\u1402\u0007\n\u0000\u0000\u1402\u1403\u0007\u001c\u0000\u0000\u1403\u1404"+ + "\u0007\t\u0000\u0000\u1404\u03ec\u0001\u0000\u0000\u0000\u1405\u1406\u0007"+ + "\u0007\u0000\u0000\u1406\u1407\u0007\u0013\u0000\u0000\u1407\u1408\u0007"+ + "\r\u0000\u0000\u1408\u1409\u0007\u000f\u0000\u0000\u1409\u140a\u0007\u0005"+ + "\u0000\u0000\u140a\u140b\u0007\u0006\u0000\u0000\u140b\u140c\u0007\u0011"+ + "\u0000\u0000\u140c\u140d\u0007\u000b\u0000\u0000\u140d\u140e\u0007\n\u0000"+ + "\u0000\u140e\u03ee\u0001\u0000\u0000\u0000\u140f\u1410\u0007\f\u0000\u0000"+ + "\u1410\u1411\u0007\u0016\u0000\u0000\u1411\u1412\u0007\u000f\u0000\u0000"+ + "\u1412\u1413\u0007\u0018\u0000\u0000\u1413\u03f0\u0001\u0000\u0000\u0000"+ + "\u1414\u1415\u0007\u0018\u0000\u0000\u1415\u1416\u0007\r\u0000\u0000\u1416"+ + "\u1417\u0007\u0011\u0000\u0000\u1417\u1418\u0007\u0007\u0000\u0000\u1418"+ + "\u1419\u0007\u0010\u0000\u0000\u1419\u141a\u0005_\u0000\u0000\u141a\u141b"+ + "\u0007\t\u0000\u0000\u141b\u141c\u0007\u0010\u0000\u0000\u141c\u141d\u0007"+ + "\r\u0000\u0000\u141d\u141e\u0007\u0011\u0000\u0000\u141e\u141f\u0007\u000e"+ + "\u0000\u0000\u141f\u1420\u0007\u0010\u0000\u0000\u1420\u1421\u0005_\u0000"+ + "\u0000\u1421\u1422\u0007\u0018\u0000\u0000\u1422\u1423\u0007\u0005\u0000"+ + "\u0000\u1423\u1424\u0007\r\u0000\u0000\u1424\u1425\u0007\u0005\u0000\u0000"+ + "\u1425\u1426\u0007\u000f\u0000\u0000\u1426\u1427\u0007\t\u0000\u0000\u1427"+ + "\u03f2\u0001\u0000\u0000\u0000\u1428\u1429\u0007\u001b\u0000\u0000\u1429"+ + "\u142a\u0007\u0005\u0000\u0000\u142a\u142b\u0007\r\u0000\u0000\u142b\u142c"+ + "\u0007\u0011\u0000\u0000\u142c\u142d\u0007\u0005\u0000\u0000\u142d\u142e"+ + "\u0007\u0012\u0000\u0000\u142e\u142f\u0007\u0006\u0000\u0000\u142f\u1430"+ + "\u0007\n\u0000\u0000\u1430\u1431\u0005_\u0000\u0000\u1431\u1432\u0007"+ + "\u000e\u0000\u0000\u1432\u1433\u0007\u0013\u0000\u0000\u1433\u1434\u0007"+ + "\u0007\u0000\u0000\u1434\u1435\u0007\u0019\u0000\u0000\u1435\u1436\u0007"+ + "\u0006\u0000\u0000\u1436\u1437\u0007\u0011\u0000\u0000\u1437\u1438\u0007"+ + "\u000e\u0000\u0000\u1438\u1439\u0007\u0010\u0000\u0000\u1439\u03f4\u0001"+ + "\u0000\u0000\u0000\u143a\u143b\u0007\n\u0000\u0000\u143b\u143c\u0007\r"+ + "\u0000\u0000\u143c\u143d\u0007\r\u0000\u0000\u143d\u143e\u0007\u0013\u0000"+ + "\u0000\u143e\u143f\u0007\r\u0000\u0000\u143f\u03f6\u0001\u0000\u0000\u0000"+ + "\u1440\u1441\u0007\u0016\u0000\u0000\u1441\u1442\u0007\t\u0000\u0000\u1442"+ + "\u1443\u0007\n\u0000\u0000\u1443\u1444\u0005_\u0000\u0000\u1444\u1445"+ + "\u0007\u001b\u0000\u0000\u1445\u1446\u0007\u0005\u0000\u0000\u1446\u1447"+ + "\u0007\r\u0000\u0000\u1447\u1448\u0007\u0011\u0000\u0000\u1448\u1449\u0007"+ + "\u0005\u0000\u0000\u1449\u144a\u0007\u0012\u0000\u0000\u144a\u144b\u0007"+ + "\u0006\u0000\u0000\u144b\u144c\u0007\n\u0000\u0000\u144c\u03f8\u0001\u0000"+ + "\u0000\u0000\u144d\u144e\u0007\u0016\u0000\u0000\u144e\u144f\u0007\t\u0000"+ + "\u0000\u144f\u1450\u0007\n\u0000\u0000\u1450\u1451\u0005_\u0000\u0000"+ + "\u1451\u1452\u0007\u000e\u0000\u0000\u1452\u1453\u0007\u0013\u0000\u0000"+ + "\u1453\u1454\u0007\u0006\u0000\u0000\u1454\u1455\u0007\u0016\u0000\u0000"+ + "\u1455\u1456\u0007\u000f\u0000\u0000\u1456\u1457\u0007\u0007\u0000\u0000"+ + "\u1457\u03fa\u0001\u0000\u0000\u0000\u1458\u1459\u0007\u0005\u0000\u0000"+ + "\u1459\u145a\u0007\u0006\u0000\u0000\u145a\u145b\u0007\u0011\u0000\u0000"+ + "\u145b\u145c\u0007\u0005\u0000\u0000\u145c\u145d\u0007\t\u0000\u0000\u145d"+ + "\u03fc\u0001\u0000\u0000\u0000\u145e\u145f\u0007\u000e\u0000\u0000\u145f"+ + "\u1460\u0007\u0013\u0000\u0000\u1460\u1461\u0007\u0007\u0000\u0000\u1461"+ + "\u1462\u0007\t\u0000\u0000\u1462\u1463\u0007\u0010\u0000\u0000\u1463\u1464"+ + "\u0007\u0005\u0000\u0000\u1464\u1465\u0007\u0007\u0000\u0000\u1465\u1466"+ + "\u0007\u0010\u0000\u0000\u1466\u03fe\u0001\u0000\u0000\u0000\u1467\u1468"+ + "\u0007\u0018\u0000\u0000\u1468\u1469\u0007\n\u0000\u0000\u1469\u146a\u0007"+ + "\r\u0000\u0000\u146a\u146b\u0007\u0019\u0000\u0000\u146b\u146c\u0007\u0013"+ + "\u0000\u0000\u146c\u146d\u0007\r\u0000\u0000\u146d\u146e\u0007\u000f\u0000"+ + "\u0000\u146e\u0400\u0001\u0000\u0000\u0000\u146f\u1470\u0007\u0017\u0000"+ + "\u0000\u1470\u1471\u0007\n\u0000\u0000\u1471\u1472\u0007\u0010\u0000\u0000"+ + "\u1472\u0402\u0001\u0000\u0000\u0000\u1473\u1474\u0007\f\u0000\u0000\u1474"+ + "\u1475\u0007\u0011\u0000\u0000\u1475\u1476\u0007\u0005\u0000\u0000\u1476"+ + "\u1477\u0007\u0017\u0000\u0000\u1477\u1478\u0007\u0007\u0000\u0000\u1478"+ + "\u1479\u0007\u0013\u0000\u0000\u1479\u147a\u0007\t\u0000\u0000\u147a\u147b"+ + "\u0007\u0010\u0000\u0000\u147b\u147c\u0007\u0011\u0000\u0000\u147c\u147d"+ + "\u0007\u000e\u0000\u0000\u147d\u147e\u0007\t\u0000\u0000\u147e\u0404\u0001"+ + "\u0000\u0000\u0000\u147f\u1480\u0007\t\u0000\u0000\u1480\u1481\u0007\u0010"+ + "\u0000\u0000\u1481\u1482\u0007\u0005\u0000\u0000\u1482\u1483\u0007\u000e"+ + "\u0000\u0000\u1483\u1484\u0007\u0015\u0000\u0000\u1484\u1485\u0007\n\u0000"+ + "\u0000\u1485\u1486\u0007\f\u0000\u0000\u1486\u0406\u0001\u0000\u0000\u0000"+ + "\u1487\u1488\u0007\n\u0000\u0000\u1488\u1489\u0007\u0006\u0000\u0000\u1489"+ + "\u148a\u0007\t\u0000\u0000\u148a\u148b\u0007\u0011\u0000\u0000\u148b\u148c"+ + "\u0007\u0019\u0000\u0000\u148c\u0408\u0001\u0000\u0000\u0000\u148d\u148e"+ + "\u0007\u001c\u0000\u0000\u148e\u148f\u0007\u0014\u0000\u0000\u148f\u1490"+ + "\u0007\u0011\u0000\u0000\u1490\u1491\u0007\u0006\u0000\u0000\u1491\u1492"+ + "\u0007\n\u0000\u0000\u1492\u040a\u0001\u0000\u0000\u0000\u1493\u1494\u0007"+ + "\r\u0000\u0000\u1494\u1495\u0007\n\u0000\u0000\u1495\u1496\u0007\u001b"+ + "\u0000\u0000\u1496\u1497\u0007\n\u0000\u0000\u1497\u1498\u0007\r\u0000"+ + "\u0000\u1498\u1499\u0007\t\u0000\u0000\u1499\u149a\u0007\n\u0000\u0000"+ + "\u149a\u040c\u0001\u0000\u0000\u0000\u149b\u149c\u0007\u0019\u0000\u0000"+ + "\u149c\u149d\u0007\u0013\u0000\u0000\u149d\u149e\u0007\r\u0000\u0000\u149e"+ + "\u149f\u0007\n\u0000\u0000\u149f\u14a0\u0007\u0005\u0000\u0000\u14a0\u14a1"+ + "\u0007\u000e\u0000\u0000\u14a1\u14a2\u0007\u0014\u0000\u0000\u14a2\u040e"+ + "\u0001\u0000\u0000\u0000\u14a3\u14a4\u0007\t\u0000\u0000\u14a4\u14a5\u0007"+ + "\u0006\u0000\u0000\u14a5\u14a6\u0007\u0011\u0000\u0000\u14a6\u14a7\u0007"+ + "\u000e\u0000\u0000\u14a7\u14a8\u0007\n\u0000\u0000\u14a8\u0410\u0001\u0000"+ + "\u0000\u0000\u14a9\u14aa\u0007\n\u0000\u0000\u14aa\u14ab\u0007\u001a\u0000"+ + "\u0000\u14ab\u14ac\u0007\u0011\u0000\u0000\u14ac\u14ad\u0007\u0010\u0000"+ + "\u0000\u14ad\u0412\u0001\u0000\u0000\u0000\u14ae\u14af\u0007\r\u0000\u0000"+ + "\u14af\u14b0\u0007\n\u0000\u0000\u14b0\u14b1\u0007\u0010\u0000\u0000\u14b1"+ + "\u14b2\u0007\u0016\u0000\u0000\u14b2\u14b3\u0007\r\u0000\u0000\u14b3\u14b4"+ + "\u0007\u0007\u0000\u0000\u14b4\u0414\u0001\u0000\u0000\u0000\u14b5\u14b6"+ + "\u0007\u001d\u0000\u0000\u14b6\u14b7\u0007\u0016\u0000\u0000\u14b7\u14b8"+ + "\u0007\n\u0000\u0000\u14b8\u14b9\u0007\r\u0000\u0000\u14b9\u14ba\u0007"+ + "\b\u0000\u0000\u14ba\u0416\u0001\u0000\u0000\u0000\u14bb\u14bc\u0007\r"+ + "\u0000\u0000\u14bc\u14bd\u0007\u0005\u0000\u0000\u14bd\u14be\u0007\u0011"+ + "\u0000\u0000\u14be\u14bf\u0007\t\u0000\u0000\u14bf\u14c0\u0007\n\u0000"+ + "\u0000\u14c0\u0418\u0001\u0000\u0000\u0000\u14c1\u14c2\u0007\t\u0000\u0000"+ + "\u14c2\u14c3\u0007\u001d\u0000\u0000\u14c3\u14c4\u0007\u0006\u0000\u0000"+ + "\u14c4\u14c5\u0007\t\u0000\u0000\u14c5\u14c6\u0007\u0010\u0000\u0000\u14c6"+ + "\u14c7\u0007\u0005\u0000\u0000\u14c7\u14c8\u0007\u0010\u0000\u0000\u14c8"+ + "\u14c9\u0007\n\u0000\u0000\u14c9\u041a\u0001\u0000\u0000\u0000\u14ca\u14cb"+ + "\u0007\f\u0000\u0000\u14cb\u14cc\u0007\n\u0000\u0000\u14cc\u14cd\u0007"+ + "\u0012\u0000\u0000\u14cd\u14ce\u0007\u0016\u0000\u0000\u14ce\u14cf\u0007"+ + "\u0017\u0000\u0000\u14cf\u041c\u0001\u0000\u0000\u0000\u14d0\u14d1\u0007"+ + "\u0006\u0000\u0000\u14d1\u14d2\u0007\u0013\u0000\u0000\u14d2\u14d3\u0007"+ + "\u0017\u0000\u0000\u14d3\u041e\u0001\u0000\u0000\u0000\u14d4\u14d5\u0007"+ + "\u0011\u0000\u0000\u14d5\u14d6\u0007\u0007\u0000\u0000\u14d6\u14d7\u0007"+ + "\u0019\u0000\u0000\u14d7\u14d8\u0007\u0013\u0000\u0000\u14d8\u0420\u0001"+ + "\u0000\u0000\u0000\u14d9\u14da\u0007\u0007\u0000\u0000\u14da\u14db\u0007"+ + "\u0013\u0000\u0000\u14db\u14dc\u0007\u0010\u0000\u0000\u14dc\u14dd\u0007"+ + "\u0011\u0000\u0000\u14dd\u14de\u0007\u000e\u0000\u0000\u14de\u14df\u0007"+ + "\n\u0000\u0000\u14df\u0422\u0001\u0000\u0000\u0000\u14e0\u14e1\u0007\u001c"+ + "\u0000\u0000\u14e1\u14e2\u0007\u0005\u0000\u0000\u14e2\u14e3\u0007\r\u0000"+ + "\u0000\u14e3\u14e4\u0007\u0007\u0000\u0000\u14e4\u14e5\u0007\u0011\u0000"+ + "\u0000\u14e5\u14e6\u0007\u0007\u0000\u0000\u14e6\u14e7\u0007\u0017\u0000"+ + "\u0000\u14e7\u0424\u0001\u0000\u0000\u0000\u14e8\u14e9\u0007\n\u0000\u0000"+ + "\u14e9\u14ea\u0007\u001a\u0000\u0000\u14ea\u14eb\u0007\u000e\u0000\u0000"+ + "\u14eb\u14ec\u0007\n\u0000\u0000\u14ec\u14ed\u0007\u0018\u0000\u0000\u14ed"+ + "\u14ee\u0007\u0010\u0000\u0000\u14ee\u14ef\u0007\u0011\u0000\u0000\u14ef"+ + "\u14f0\u0007\u0013\u0000\u0000\u14f0\u14f1\u0007\u0007\u0000\u0000\u14f1"+ + "\u0426\u0001\u0000\u0000\u0000\u14f2\u14f3\u0007\u0005\u0000\u0000\u14f3"+ + "\u14f4\u0007\t\u0000\u0000\u14f4\u14f5\u0007\t\u0000\u0000\u14f5\u14f6"+ + "\u0007\n\u0000\u0000\u14f6\u14f7\u0007\r\u0000\u0000\u14f7\u14f8\u0007"+ + "\u0010\u0000\u0000\u14f8\u0428\u0001\u0000\u0000\u0000\u14f9\u14fa\u0007"+ + "\u0006\u0000\u0000\u14fa\u14fb\u0007\u0013\u0000\u0000\u14fb\u14fc\u0007"+ + "\u0013\u0000\u0000\u14fc\u14fd\u0007\u0018\u0000\u0000\u14fd\u042a\u0001"+ + "\u0000\u0000\u0000\u14fe\u14ff\u0007\u0013\u0000\u0000\u14ff\u1500\u0007"+ + "\u0018\u0000\u0000\u1500\u1501\u0007\n\u0000\u0000\u1501\u1502\u0007\u0007"+ + "\u0000\u0000\u1502\u042c\u0001\u0000\u0000\u0000\u1503\u1504\u0007\u0005"+ + "\u0000\u0000\u1504\u1505\u0007\u0012\u0000\u0000\u1505\u1506\u0007\t\u0000"+ + "\u0000\u1506\u042e\u0001\u0000\u0000\u0000\u1507\u1508\u0007\u000e\u0000"+ + "\u0000\u1508\u1509\u0007\u0012\u0000\u0000\u1509\u150a\u0007\r\u0000\u0000"+ + "\u150a\u150b\u0007\u0010\u0000\u0000\u150b\u0430\u0001\u0000\u0000\u0000"+ + "\u150c\u150d\u0007\u000e\u0000\u0000\u150d\u150e\u0007\n\u0000\u0000\u150e"+ + "\u150f\u0007\u0011\u0000\u0000\u150f\u1510\u0007\u0006\u0000\u0000\u1510"+ + "\u0432\u0001\u0000\u0000\u0000\u1511\u1512\u0007\u000e\u0000\u0000\u1512"+ + "\u1513\u0007\n\u0000\u0000\u1513\u1514\u0007\u0011\u0000\u0000\u1514\u1515"+ + "\u0007\u0006\u0000\u0000\u1515\u1516\u0007\u0011\u0000\u0000\u1516\u1517"+ + "\u0007\u0007\u0000\u0000\u1517\u1518\u0007\u0017\u0000\u0000\u1518\u0434"+ + "\u0001\u0000\u0000\u0000\u1519\u151a\u0007\f\u0000\u0000\u151a\u151b\u0007"+ + "\n\u0000\u0000\u151b\u151c\u0007\u0017\u0000\u0000\u151c\u151d\u0007\r"+ + "\u0000\u0000\u151d\u151e\u0007\n\u0000\u0000\u151e\u151f\u0007\n\u0000"+ + "\u0000\u151f\u1520\u0007\t\u0000\u0000\u1520\u0436\u0001\u0000\u0000\u0000"+ + "\u1521\u1522\u0007\f\u0000\u0000\u1522\u1523\u0007\u0011\u0000\u0000\u1523"+ + "\u1524\u0007\u001b\u0000\u0000\u1524\u0438\u0001\u0000\u0000\u0000\u1525"+ + "\u1526\u0007\n\u0000\u0000\u1526\u1527\u0007\u001a\u0000\u0000\u1527\u1528"+ + "\u0007\u0018\u0000\u0000\u1528\u043a\u0001\u0000\u0000\u0000\u1529\u152a"+ + "\u0007\u0019\u0000\u0000\u152a\u152b\u0007\u0005\u0000\u0000\u152b\u152c"+ + "\u0007\u000e\u0000\u0000\u152c\u152d\u0007\u0010\u0000\u0000\u152d\u152e"+ + "\u0007\u0013\u0000\u0000\u152e\u152f\u0007\r\u0000\u0000\u152f\u1530\u0007"+ + "\u0011\u0000\u0000\u1530\u1531\u0007\u0005\u0000\u0000\u1531\u1532\u0007"+ + "\u0006\u0000\u0000\u1532\u043c\u0001\u0000\u0000\u0000\u1533\u1534\u0007"+ + "\u0019\u0000\u0000\u1534\u1535\u0007\u0006\u0000\u0000\u1535\u1536\u0007"+ + "\u0013\u0000\u0000\u1536\u1537\u0007\u0013\u0000\u0000\u1537\u1538\u0007"+ + "\r\u0000\u0000\u1538\u043e\u0001\u0000\u0000\u0000\u1539\u153a\u0007\u0017"+ + "\u0000\u0000\u153a\u153b\u0007\u000e\u0000\u0000\u153b\u153c\u0007\f\u0000"+ + "\u0000\u153c\u0440\u0001\u0000\u0000\u0000\u153d\u153e\u0007\u0006\u0000"+ + "\u0000\u153e\u153f\u0007\u000e\u0000\u0000\u153f\u1540\u0007\u000f\u0000"+ + "\u0000\u1540\u0442\u0001\u0000\u0000\u0000\u1541\u1542\u0007\u0006\u0000"+ + "\u0000\u1542\u1543\u0007\u0007\u0000\u0000\u1543\u0444\u0001\u0000\u0000"+ + "\u0000\u1544\u1545\u0007\u0006\u0000\u0000\u1545\u1546\u0007\u0013\u0000"+ + "\u0000\u1546\u1547\u0007\u0017\u0000\u0000\u1547\u1548\u00051\u0000\u0000"+ + "\u1548\u1549\u00050\u0000\u0000\u1549\u0446\u0001\u0000\u0000\u0000\u154a"+ + "\u154b\u0007\u000f\u0000\u0000\u154b\u154c\u0007\u0011\u0000\u0000\u154c"+ + "\u154d\u0007\u0007\u0000\u0000\u154d\u154e\u0005_\u0000\u0000\u154e\u154f"+ + "\u0007\t\u0000\u0000\u154f\u1550\u0007\u000e\u0000\u0000\u1550\u1551\u0007"+ + "\u0005\u0000\u0000\u1551\u1552\u0007\u0006\u0000\u0000\u1552\u1553\u0007"+ + "\n\u0000\u0000\u1553\u0448\u0001\u0000\u0000\u0000\u1554\u1555\u0007\u000f"+ + "\u0000\u0000\u1555\u1556\u0007\u0013\u0000\u0000\u1556\u1557\u0007\f\u0000"+ + "\u0000\u1557\u044a\u0001\u0000\u0000\u0000\u1558\u1559\u0007\u0018\u0000"+ + "\u0000\u1559\u155a\u0007\u0011\u0000\u0000\u155a\u044c\u0001\u0000\u0000"+ + "\u0000\u155b\u155c\u0007\u0018\u0000\u0000\u155c\u155d\u0007\u0013\u0000"+ + "\u0000\u155d\u155e\u0007\u001c\u0000\u0000\u155e\u155f\u0007\n\u0000\u0000"+ + "\u155f\u1560\u0007\r\u0000\u0000\u1560\u044e\u0001\u0000\u0000\u0000\u1561"+ + "\u1562\u0007\r\u0000\u0000\u1562\u1563\u0007\u0005\u0000\u0000\u1563\u1564"+ + "\u0007\f\u0000\u0000\u1564\u1565\u0007\u0011\u0000\u0000\u1565\u1566\u0007"+ + "\u0005\u0000\u0000\u1566\u1567\u0007\u0007\u0000\u0000\u1567\u1568\u0007"+ + "\t\u0000\u0000\u1568\u0450\u0001\u0000\u0000\u0000\u1569\u156a\u0007\r"+ + "\u0000\u0000\u156a\u156b\u0007\u0013\u0000\u0000\u156b\u156c\u0007\u0016"+ + "\u0000\u0000\u156c\u156d\u0007\u0007\u0000\u0000\u156d\u156e\u0007\f\u0000"+ + "\u0000\u156e\u0452\u0001\u0000\u0000\u0000\u156f\u1570\u0007\t\u0000\u0000"+ + "\u1570\u1571\u0007\u000e\u0000\u0000\u1571\u1572\u0007\u0005\u0000\u0000"+ + "\u1572\u1573\u0007\u0006\u0000\u0000\u1573\u1574\u0007\n\u0000\u0000\u1574"+ + "\u0454\u0001\u0000\u0000\u0000\u1575\u1576\u0007\t\u0000\u0000\u1576\u1577"+ + "\u0007\u0011\u0000\u0000\u1577\u1578\u0007\u0017\u0000\u0000\u1578\u1579"+ + "\u0007\u0007\u0000\u0000\u1579\u0456\u0001\u0000\u0000\u0000\u157a\u157b"+ + "\u0007\t\u0000\u0000\u157b\u157c\u0007\u001d\u0000\u0000\u157c\u157d\u0007"+ + "\r\u0000\u0000\u157d\u157e\u0007\u0010\u0000\u0000\u157e\u0458\u0001\u0000"+ + "\u0000\u0000\u157f\u1580\u0007\u0010\u0000\u0000\u1580\u1581\u0007\r\u0000"+ + "\u0000\u1581\u1582\u0007\u0011\u0000\u0000\u1582\u1583\u0007\u000f\u0000"+ + "\u0000\u1583\u1584\u0005_\u0000\u0000\u1584\u1585\u0007\t\u0000\u0000"+ + "\u1585\u1586\u0007\u000e\u0000\u0000\u1586\u1587\u0007\u0005\u0000\u0000"+ + "\u1587\u1588\u0007\u0006\u0000\u0000\u1588\u1589\u0007\n\u0000\u0000\u1589"+ + "\u045a\u0001\u0000\u0000\u0000\u158a\u158b\u0007\u0010\u0000\u0000\u158b"+ + "\u158c\u0007\r\u0000\u0000\u158c\u158d\u0007\u0016\u0000\u0000\u158d\u158e"+ + "\u0007\u0007\u0000\u0000\u158e\u158f\u0007\u000e\u0000\u0000\u158f\u045c"+ + "\u0001\u0000\u0000\u0000\u1590\u1591\u0007\u001c\u0000\u0000\u1591\u1592"+ + "\u0007\u0011\u0000\u0000\u1592\u1593\u0007\f\u0000\u0000\u1593\u1594\u0007"+ + "\u0010\u0000\u0000\u1594\u1595\u0007\u0014\u0000\u0000\u1595\u1596\u0005"+ + "_\u0000\u0000\u1596\u1597\u0007\u0012\u0000\u0000\u1597\u1598\u0007\u0016"+ + "\u0000\u0000\u1598\u1599\u0007\u000e\u0000\u0000\u1599\u159a\u0007\u0015"+ + "\u0000\u0000\u159a\u159b\u0007\n\u0000\u0000\u159b\u159c\u0007\u0010\u0000"+ + "\u0000\u159c\u045e\u0001\u0000\u0000\u0000\u159d\u159e\u0007\r\u0000\u0000"+ + "\u159e\u159f\u0007\u0005\u0000\u0000\u159f\u15a0\u0007\u0007\u0000\u0000"+ + "\u15a0\u15a1\u0007\f\u0000\u0000\u15a1\u15a2\u0007\u0013\u0000\u0000\u15a2"+ + "\u15a3\u0007\u000f\u0000\u0000\u15a3\u0460\u0001\u0000\u0000\u0000\u15a4"+ + "\u15a5\u0007\t\u0000\u0000\u15a5\u15a6\u0007\n\u0000\u0000\u15a6\u15a7"+ + "\u0007\u0010\u0000\u0000\u15a7\u15a8\u0007\t\u0000\u0000\u15a8\u15a9\u0007"+ + "\n\u0000\u0000\u15a9\u15aa\u0007\n\u0000\u0000\u15aa\u15ab\u0007\f\u0000"+ + "\u0000\u15ab\u0462\u0001\u0000\u0000\u0000\u15ac\u15ad\u0007\u0005\u0000"+ + "\u0000\u15ad\u15ae\u0007\u000e\u0000\u0000\u15ae\u15af\u0007\u0013\u0000"+ + "\u0000\u15af\u15b0\u0007\t\u0000\u0000\u15b0\u0464\u0001\u0000\u0000\u0000"+ + "\u15b1\u15b2\u0007\u0005\u0000\u0000\u15b2\u15b3\u0007\u000e\u0000\u0000"+ + "\u15b3\u15b4\u0007\u0013\u0000\u0000\u15b4\u15b5\u0007\t\u0000\u0000\u15b5"+ + "\u15b6\u0007\f\u0000\u0000\u15b6\u0466\u0001\u0000\u0000\u0000\u15b7\u15b8"+ + "\u0007\u0005\u0000\u0000\u15b8\u15b9\u0007\t\u0000\u0000\u15b9\u15ba\u0007"+ + "\u0011\u0000\u0000\u15ba\u15bb\u0007\u0007\u0000\u0000\u15bb\u0468\u0001"+ + "\u0000\u0000\u0000\u15bc\u15bd\u0007\u0005\u0000\u0000\u15bd\u15be\u0007"+ + "\t\u0000\u0000\u15be\u15bf\u0007\u0011\u0000\u0000\u15bf\u15c0\u0007\u0007"+ + "\u0000\u0000\u15c0\u15c1\u0007\f\u0000\u0000\u15c1\u046a\u0001\u0000\u0000"+ + "\u0000\u15c2\u15c3\u0007\u0005\u0000\u0000\u15c3\u15c4\u0007\u0010\u0000"+ + "\u0000\u15c4\u15c5\u0007\u0005\u0000\u0000\u15c5\u15c6\u0007\u0007\u0000"+ + "\u0000\u15c6\u046c\u0001\u0000\u0000\u0000\u15c7\u15c8\u0007\u0005\u0000"+ + "\u0000\u15c8\u15c9\u0007\u0010\u0000\u0000\u15c9\u15ca\u0007\u0005\u0000"+ + "\u0000\u15ca\u15cb\u0007\u0007\u0000\u0000\u15cb\u15cc\u0007\f\u0000\u0000"+ + "\u15cc\u046e\u0001\u0000\u0000\u0000\u15cd\u15ce\u0007\u0005\u0000\u0000"+ + "\u15ce\u15cf\u0007\u0010\u0000\u0000\u15cf\u15d0\u0007\u0005\u0000\u0000"+ + "\u15d0\u15d1\u0007\u0007\u0000\u0000\u15d1\u15d2\u00052\u0000\u0000\u15d2"+ + "\u0470\u0001\u0000\u0000\u0000\u15d3\u15d4\u0007\u0005\u0000\u0000\u15d4"+ + "\u15d5\u0007\u0010\u0000\u0000\u15d5\u15d6\u0007\u0005\u0000\u0000\u15d6"+ + "\u15d7\u0007\u0007\u0000\u0000\u15d7\u15d8\u00052\u0000\u0000\u15d8\u15d9"+ + "\u0007\f\u0000\u0000\u15d9\u0472\u0001\u0000\u0000\u0000\u15da\u15db\u0007"+ + "\u000e\u0000\u0000\u15db\u15dc\u0007\u0013\u0000\u0000\u15dc\u15dd\u0007"+ + "\t\u0000\u0000\u15dd\u0474\u0001\u0000\u0000\u0000\u15de\u15df\u0007\u000e"+ + "\u0000\u0000\u15df\u15e0\u0007\u0013\u0000\u0000\u15e0\u15e1\u0007\t\u0000"+ + "\u0000\u15e1\u15e2\u0007\f\u0000\u0000\u15e2\u0476\u0001\u0000\u0000\u0000"+ + "\u15e3\u15e4\u0007\u000e\u0000\u0000\u15e4\u15e5\u0007\u0013\u0000\u0000"+ + "\u15e5\u15e6\u0007\u0010\u0000\u0000\u15e6\u0478\u0001\u0000\u0000\u0000"+ + "\u15e7\u15e8\u0007\u000e\u0000\u0000\u15e8\u15e9\u0007\u0013\u0000\u0000"+ + "\u15e9\u15ea\u0007\u0010\u0000\u0000\u15ea\u15eb\u0007\f\u0000\u0000\u15eb"+ + "\u047a\u0001\u0000\u0000\u0000\u15ec\u15ed\u0007\t\u0000\u0000\u15ed\u15ee"+ + "\u0007\u0011\u0000\u0000\u15ee\u15ef\u0007\u0007\u0000\u0000\u15ef\u047c"+ + "\u0001\u0000\u0000\u0000\u15f0\u15f1\u0007\t\u0000\u0000\u15f1\u15f2\u0007"+ + "\u0011\u0000\u0000\u15f2\u15f3\u0007\u0007\u0000\u0000\u15f3\u15f4\u0007"+ + "\f\u0000\u0000\u15f4\u047e\u0001\u0000\u0000\u0000\u15f5\u15f6\u0007\u0010"+ + "\u0000\u0000\u15f6\u15f7\u0007\u0005\u0000\u0000\u15f7\u15f8\u0007\u0007"+ + "\u0000\u0000\u15f8\u0480\u0001\u0000\u0000\u0000\u15f9\u15fa\u0007\u0010"+ + "\u0000\u0000\u15fa\u15fb\u0007\u0005\u0000\u0000\u15fb\u15fc\u0007\u0007"+ + "\u0000\u0000\u15fc\u15fd\u0007\f\u0000\u0000\u15fd\u0482\u0001\u0000\u0000"+ + "\u0000\u15fe\u15ff\u0007\t\u0000\u0000\u15ff\u1600\u0007\u0011\u0000\u0000"+ + "\u1600\u1601\u0007\u0007\u0000\u0000\u1601\u1602\u0007\u0014\u0000\u0000"+ + "\u1602\u0484\u0001\u0000\u0000\u0000\u1603\u1604\u0007\u000e\u0000\u0000"+ + "\u1604\u1605\u0007\u0013\u0000\u0000\u1605\u1606\u0007\t\u0000\u0000\u1606"+ + "\u1607\u0007\u0014\u0000\u0000\u1607\u0486\u0001\u0000\u0000\u0000\u1608"+ + "\u1609\u0007\u0010\u0000\u0000\u1609\u160a\u0007\u0005\u0000\u0000\u160a"+ + "\u160b\u0007\u0007\u0000\u0000\u160b\u160c\u0007\u0014\u0000\u0000\u160c"+ + "\u0488\u0001\u0000\u0000\u0000\u160d\u160e\u0007\u0005\u0000\u0000\u160e"+ + "\u160f\u0007\t\u0000\u0000\u160f\u1610\u0007\u0011\u0000\u0000\u1610\u1611"+ + "\u0007\u0007\u0000\u0000\u1611\u1612\u0007\u0014\u0000\u0000\u1612\u048a"+ + "\u0001\u0000\u0000\u0000\u1613\u1614\u0007\u0005\u0000\u0000\u1614\u1615"+ + "\u0007\u000e\u0000\u0000\u1615\u1616\u0007\u0013\u0000\u0000\u1616\u1617"+ + "\u0007\t\u0000\u0000\u1617\u1618\u0007\u0014\u0000\u0000\u1618\u048c\u0001"+ + "\u0000\u0000\u0000\u1619\u161a\u0007\u0005\u0000\u0000\u161a\u161b\u0007"+ + "\u0010\u0000\u0000\u161b\u161c\u0007\u0005\u0000\u0000\u161c\u161d\u0007"+ + "\u0007\u0000\u0000\u161d\u161e\u0007\u0014\u0000\u0000\u161e\u048e\u0001"+ + "\u0000\u0000\u0000\u161f\u1620\u0007\u0012\u0000\u0000\u1620\u1621\u0007"+ + "\u0011\u0000\u0000\u1621\u1622\u0007\u0010\u0000\u0000\u1622\u1623\u0005"+ + "_\u0000\u0000\u1623\u1624\u0007\u0006\u0000\u0000\u1624\u1625\u0007\n"+ + "\u0000\u0000\u1625\u1626\u0007\u0007\u0000\u0000\u1626\u1627\u0007\u0017"+ + "\u0000\u0000\u1627\u1628\u0007\u0010\u0000\u0000\u1628\u1629\u0007\u0014"+ + "\u0000\u0000\u1629\u0490\u0001\u0000\u0000\u0000\u162a\u162b\u0007\u000e"+ + "\u0000\u0000\u162b\u162c\u0007\u0014\u0000\u0000\u162c\u162d\u0007\u0005"+ + "\u0000\u0000\u162d\u162e\u0007\r\u0000\u0000\u162e\u162f\u0005_\u0000"+ + "\u0000\u162f\u1630\u0007\u0006\u0000\u0000\u1630\u1631\u0007\n\u0000\u0000"+ + "\u1631\u1632\u0007\u0007\u0000\u0000\u1632\u1633\u0007\u0017\u0000\u0000"+ + "\u1633\u1634\u0007\u0010\u0000\u0000\u1634\u1635\u0007\u0014\u0000\u0000"+ + "\u1635\u0492\u0001\u0000\u0000\u0000\u1636\u1637\u0007\u000e\u0000\u0000"+ + "\u1637\u1638\u0007\u0014\u0000\u0000\u1638\u1639\u0007\u0005\u0000\u0000"+ + "\u1639\u163a\u0007\r\u0000\u0000\u163a\u163b\u0007\u0005\u0000\u0000\u163b"+ + "\u163c\u0007\u000e\u0000\u0000\u163c\u163d\u0007\u0010\u0000\u0000\u163d"+ + "\u163e\u0007\n\u0000\u0000\u163e\u163f\u0007\r\u0000\u0000\u163f\u1640"+ + "\u0005_\u0000\u0000\u1640\u1641\u0007\u0006\u0000\u0000\u1641\u1642\u0007"+ + "\n\u0000\u0000\u1642\u1643\u0007\u0007\u0000\u0000\u1643\u1644\u0007\u0017"+ + "\u0000\u0000\u1644\u1645\u0007\u0010\u0000\u0000\u1645\u1646\u0007\u0014"+ + "\u0000\u0000\u1646\u0494\u0001\u0000\u0000\u0000\u1647\u1648\u0007\u0006"+ + "\u0000\u0000\u1648\u1649\u0007\u0013\u0000\u0000\u1649\u164a\u0007\u001c"+ + "\u0000\u0000\u164a\u164b\u0007\n\u0000\u0000\u164b\u164c\u0007\r\u0000"+ + "\u0000\u164c\u0496\u0001\u0000\u0000\u0000\u164d\u164e\u0007\u0013\u0000"+ + "\u0000\u164e\u164f\u0007\u000e\u0000\u0000\u164f\u1650\u0007\u0010\u0000"+ + "\u0000\u1650\u1651\u0007\n\u0000\u0000\u1651\u1652\u0007\u0010\u0000\u0000"+ + "\u1652\u1653\u0005_\u0000\u0000\u1653\u1654\u0007\u0006\u0000\u0000\u1654"+ + "\u1655\u0007\n\u0000\u0000\u1655\u1656\u0007\u0007\u0000\u0000\u1656\u1657"+ + "\u0007\u0017\u0000\u0000\u1657\u1658\u0007\u0010\u0000\u0000\u1658\u1659"+ + "\u0007\u0014\u0000\u0000\u1659\u0498\u0001\u0000\u0000\u0000\u165a\u165b"+ + "\u0007\u0016\u0000\u0000\u165b\u165c\u0007\u0018\u0000\u0000\u165c\u165d"+ + "\u0007\u0018\u0000\u0000\u165d\u165e\u0007\n\u0000\u0000\u165e\u165f\u0007"+ + "\r\u0000\u0000\u165f\u049a\u0001\u0000\u0000\u0000\u1660\u1661\u0007\u0005"+ + "\u0000\u0000\u1661\u1662\u0007\t\u0000\u0000\u1662\u1663\u0007\u000e\u0000"+ + "\u0000\u1663\u1664\u0007\u0011\u0000\u0000\u1664\u1665\u0007\u0011\u0000"+ + "\u0000\u1665\u049c\u0001\u0000\u0000\u0000\u1666\u1667\u0007\u0012\u0000"+ + "\u0000\u1667\u1668\u0007\u0010\u0000\u0000\u1668\u1669\u0007\r\u0000\u0000"+ + "\u1669\u166a\u0007\u0011\u0000\u0000\u166a\u166b\u0007\u000f\u0000\u0000"+ + "\u166b\u049e\u0001\u0000\u0000\u0000\u166c\u166d\u0007\u000e\u0000\u0000"+ + "\u166d\u166e\u0007\u0014\u0000\u0000\u166e\u166f\u0007\r\u0000\u0000\u166f"+ + "\u04a0\u0001\u0000\u0000\u0000\u1670\u1671\u0007\u000e\u0000\u0000\u1671"+ + "\u1672\u0007\u0013\u0000\u0000\u1672\u1673\u0007\u0007\u0000\u0000\u1673"+ + "\u1674\u0007\u000e\u0000\u0000\u1674\u1675\u0007\u0005\u0000\u0000\u1675"+ + "\u1676\u0007\u0010\u0000\u0000\u1676\u04a2\u0001\u0000\u0000\u0000\u1677"+ + "\u1678\u0007\u000e\u0000\u0000\u1678\u1679\u0007\u0013\u0000\u0000\u1679"+ + "\u167a\u0007\u0007\u0000\u0000\u167a\u167b\u0007\u000e\u0000\u0000\u167b"+ + "\u167c\u0007\u0005\u0000\u0000\u167c\u167d\u0007\u0010\u0000\u0000\u167d"+ + "\u167e\u0005_\u0000\u0000\u167e\u167f\u0007\u001c\u0000\u0000\u167f\u1680"+ + "\u0007\t\u0000\u0000\u1680\u04a4\u0001\u0000\u0000\u0000\u1681\u1682\u0007"+ + "\u0019\u0000\u0000\u1682\u1683\u0007\u0013\u0000\u0000\u1683\u1684\u0007"+ + "\r\u0000\u0000\u1684\u1685\u0007\u000f\u0000\u0000\u1685\u1686\u0007\u0005"+ + "\u0000\u0000\u1686\u1687\u0007\u0010\u0000\u0000\u1687\u04a6\u0001\u0000"+ + "\u0000\u0000\u1688\u1689\u0007\u0011\u0000\u0000\u1689\u168a\u0007\u0007"+ + "\u0000\u0000\u168a\u168b\u0007\u0011\u0000\u0000\u168b\u168c\u0007\u0010"+ + "\u0000\u0000\u168c\u168d\u0007\u000e\u0000\u0000\u168d\u168e\u0007\u0005"+ + "\u0000\u0000\u168e\u168f\u0007\u0018\u0000\u0000\u168f\u04a8\u0001\u0000"+ + "\u0000\u0000\u1690\u1691\u0007\u0006\u0000\u0000\u1691\u1692\u0007\n\u0000"+ + "\u0000\u1692\u1693\u0007\u0007\u0000\u0000\u1693\u1694\u0007\u0017\u0000"+ + "\u0000\u1694\u1695\u0007\u0010\u0000\u0000\u1695\u1696\u0007\u0014\u0000"+ + "\u0000\u1696\u04aa\u0001\u0000\u0000\u0000\u1697\u1698\u0007\u0006\u0000"+ + "\u0000\u1698\u1699\u0007\u0018\u0000\u0000\u1699\u169a\u0007\u0005\u0000"+ + "\u0000\u169a\u169b\u0007\f\u0000\u0000\u169b\u04ac\u0001\u0000\u0000\u0000"+ + "\u169c\u169d\u0007\u0006\u0000\u0000\u169d\u169e\u0007\u0010\u0000\u0000"+ + "\u169e\u169f\u0007\r\u0000\u0000\u169f\u16a0\u0007\u0011\u0000\u0000\u16a0"+ + "\u16a1\u0007\u000f\u0000\u0000\u16a1\u04ae\u0001\u0000\u0000\u0000\u16a2"+ + "\u16a3\u0007\u000f\u0000\u0000\u16a3\u16a4\u0007\f\u0000\u0000\u16a4\u16a5"+ + "\u00055\u0000\u0000\u16a5\u04b0\u0001\u0000\u0000\u0000\u16a6\u16a7\u0007"+ + "\u0018\u0000\u0000\u16a7\u16a8\u0007\u0005\u0000\u0000\u16a8\u16a9\u0007"+ + "\r\u0000\u0000\u16a9\u16aa\u0007\t\u0000\u0000\u16aa\u16ab\u0007\n\u0000"+ + "\u0000\u16ab\u16ac\u0005_\u0000\u0000\u16ac\u16ad\u0007\u0011\u0000\u0000"+ + "\u16ad\u16ae\u0007\f\u0000\u0000\u16ae\u16af\u0007\n\u0000\u0000\u16af"+ + "\u16b0\u0007\u0007\u0000\u0000\u16b0\u16b1\u0007\u0010\u0000\u0000\u16b1"+ + "\u04b2\u0001\u0000\u0000\u0000\u16b2\u16b3\u0007\u0018\u0000\u0000\u16b3"+ + "\u16b4\u0007\u0017\u0000\u0000\u16b4\u16b5\u0005_\u0000\u0000\u16b5\u16b6"+ + "\u0007\u000e\u0000\u0000\u16b6\u16b7\u0007\u0006\u0000\u0000\u16b7\u16b8"+ + "\u0007\u0011\u0000\u0000\u16b8\u16b9\u0007\n\u0000\u0000\u16b9\u16ba\u0007"+ + "\u0007\u0000\u0000\u16ba\u16bb\u0007\u0010\u0000\u0000\u16bb\u16bc\u0005"+ + "_\u0000\u0000\u16bc\u16bd\u0007\n\u0000\u0000\u16bd\u16be\u0007\u0007"+ + "\u0000\u0000\u16be\u16bf\u0007\u000e\u0000\u0000\u16bf\u16c0\u0007\u0013"+ + "\u0000\u0000\u16c0\u16c1\u0007\f\u0000\u0000\u16c1\u16c2\u0007\u0011\u0000"+ + "\u0000\u16c2\u16c3\u0007\u0007\u0000\u0000\u16c3\u16c4\u0007\u0017\u0000"+ + "\u0000\u16c4\u04b4\u0001\u0000\u0000\u0000\u16c5\u16c6\u0007\u001d\u0000"+ + "\u0000\u16c6\u16c7\u0007\u0016\u0000\u0000\u16c7\u16c8\u0007\u0013\u0000"+ + "\u0000\u16c8\u16c9\u0007\u0010\u0000\u0000\u16c9\u16ca\u0007\n\u0000\u0000"+ + "\u16ca\u16cb\u0005_\u0000\u0000\u16cb\u16cc\u0007\u0011\u0000\u0000\u16cc"+ + "\u16cd\u0007\f\u0000\u0000\u16cd\u16ce\u0007\n\u0000\u0000\u16ce\u16cf"+ + "\u0007\u0007\u0000\u0000\u16cf\u16d0\u0007\u0010\u0000\u0000\u16d0\u04b6"+ + "\u0001\u0000\u0000\u0000\u16d1\u16d2\u0007\u001d\u0000\u0000\u16d2\u16d3"+ + "\u0007\u0016\u0000\u0000\u16d3\u16d4\u0007\u0013\u0000\u0000\u16d4\u16d5"+ + "\u0007\u0010\u0000\u0000\u16d5\u16d6\u0007\n\u0000\u0000\u16d6\u16d7\u0005"+ + "_\u0000\u0000\u16d7\u16d8\u0007\u0006\u0000\u0000\u16d8\u16d9\u0007\u0011"+ + "\u0000\u0000\u16d9\u16da\u0007\u0010\u0000\u0000\u16da\u16db\u0007\n\u0000"+ + "\u0000\u16db\u16dc\u0007\r\u0000\u0000\u16dc\u16dd\u0007\u0005\u0000\u0000"+ + "\u16dd\u16de\u0007\u0006\u0000\u0000\u16de\u04b8\u0001\u0000\u0000\u0000"+ + "\u16df\u16e0\u0007\u001d\u0000\u0000\u16e0\u16e1\u0007\u0016\u0000\u0000"+ + "\u16e1\u16e2\u0007\u0013\u0000\u0000\u16e2\u16e3\u0007\u0010\u0000\u0000"+ + "\u16e3\u16e4\u0007\n\u0000\u0000\u16e4\u16e5\u0005_\u0000\u0000\u16e5"+ + "\u16e6\u0007\u0007\u0000\u0000\u16e6\u16e7\u0007\u0016\u0000\u0000\u16e7"+ + "\u16e8\u0007\u0006\u0000\u0000\u16e8\u16e9\u0007\u0006\u0000\u0000\u16e9"+ + "\u16ea\u0007\u0005\u0000\u0000\u16ea\u16eb\u0007\u0012\u0000\u0000\u16eb"+ + "\u16ec\u0007\u0006\u0000\u0000\u16ec\u16ed\u0007\n\u0000\u0000\u16ed\u04ba"+ + "\u0001\u0000\u0000\u0000\u16ee\u16ef\u0007\r\u0000\u0000\u16ef\u16f0\u0007"+ + "\n\u0000\u0000\u16f0\u16f1\u0007\u0017\u0000\u0000\u16f1\u16f2\u0007\n"+ + "\u0000\u0000\u16f2\u16f3\u0007\u001a\u0000\u0000\u16f3\u16f4\u0007\u0018"+ + "\u0000\u0000\u16f4\u16f5\u0005_\u0000\u0000\u16f5\u16f6\u0007\u000e\u0000"+ + "\u0000\u16f6\u16f7\u0007\u0013\u0000\u0000\u16f7\u16f8\u0007\u0016\u0000"+ + "\u0000\u16f8\u16f9\u0007\u0007\u0000\u0000\u16f9\u16fa\u0007\u0010\u0000"+ + "\u0000\u16fa\u04bc\u0001\u0000\u0000\u0000\u16fb\u16fc\u0007\r\u0000\u0000"+ + "\u16fc\u16fd\u0007\n\u0000\u0000\u16fd\u16fe\u0007\u0017\u0000\u0000\u16fe"+ + "\u16ff\u0007\n\u0000\u0000\u16ff\u1700\u0007\u001a\u0000\u0000\u1700\u1701"+ + "\u0007\u0018\u0000\u0000\u1701\u1702\u0005_\u0000\u0000\u1702\u1703\u0007"+ + "\u0011\u0000\u0000\u1703\u1704\u0007\u0007\u0000\u0000\u1704\u1705\u0007"+ + "\t\u0000\u0000\u1705\u1706\u0007\u0010\u0000\u0000\u1706\u1707\u0007\r"+ + "\u0000\u0000\u1707\u04be\u0001\u0000\u0000\u0000\u1708\u1709\u0007\r\u0000"+ + "\u0000\u1709\u170a\u0007\n\u0000\u0000\u170a\u170b\u0007\u0017\u0000\u0000"+ + "\u170b\u170c\u0007\n\u0000\u0000\u170c\u170d\u0007\u001a\u0000\u0000\u170d"+ + "\u170e\u0007\u0018\u0000\u0000\u170e\u170f\u0005_\u0000\u0000\u170f\u1710"+ + "\u0007\u0006\u0000\u0000\u1710\u1711\u0007\u0011\u0000\u0000\u1711\u1712"+ + "\u0007\u0015\u0000\u0000\u1712\u1713\u0007\n\u0000\u0000\u1713\u04c0\u0001"+ + "\u0000\u0000\u0000\u1714\u1715\u0007\r\u0000\u0000\u1715\u1716\u0007\n"+ + "\u0000\u0000\u1716\u1717\u0007\u0017\u0000\u0000\u1717\u1718\u0007\n\u0000"+ + "\u0000\u1718\u1719\u0007\u001a\u0000\u0000\u1719\u171a\u0007\u0018\u0000"+ + "\u0000\u171a\u171b\u0005_\u0000\u0000\u171b\u171c\u0007\u000f\u0000\u0000"+ + "\u171c\u171d\u0007\u0005\u0000\u0000\u171d\u171e\u0007\u0010\u0000\u0000"+ + "\u171e\u171f\u0007\u000e\u0000\u0000\u171f\u1720\u0007\u0014\u0000\u0000"+ + "\u1720\u04c2\u0001\u0000\u0000\u0000\u1721\u1722\u0007\r\u0000\u0000\u1722"+ + "\u1723\u0007\n\u0000\u0000\u1723\u1724\u0007\u0017\u0000\u0000\u1724\u1725"+ + "\u0007\n\u0000\u0000\u1725\u1726\u0007\u001a\u0000\u0000\u1726\u1727\u0007"+ + "\u0018\u0000\u0000\u1727\u1728\u0005_\u0000\u0000\u1728\u1729\u0007\u000f"+ + "\u0000\u0000\u1729\u172a\u0007\u0005\u0000\u0000\u172a\u172b\u0007\u0010"+ + "\u0000\u0000\u172b\u172c\u0007\u000e\u0000\u0000\u172c\u172d\u0007\u0014"+ + "\u0000\u0000\u172d\u172e\u0007\n\u0000\u0000\u172e\u172f\u0007\t\u0000"+ + "\u0000\u172f\u04c4\u0001\u0000\u0000\u0000\u1730\u1731\u0007\r\u0000\u0000"+ + "\u1731\u1732\u0007\n\u0000\u0000\u1732\u1733\u0007\u0017\u0000\u0000\u1733"+ + "\u1734\u0007\n\u0000\u0000\u1734\u1735\u0007\u001a\u0000\u0000\u1735\u1736"+ + "\u0007\u0018\u0000\u0000\u1736\u1737\u0005_\u0000\u0000\u1737\u1738\u0007"+ + "\r\u0000\u0000\u1738\u1739\u0007\n\u0000\u0000\u1739\u173a\u0007\u0018"+ + "\u0000\u0000\u173a\u173b\u0007\u0006\u0000\u0000\u173b\u173c\u0007\u0005"+ + "\u0000\u0000\u173c\u173d\u0007\u000e\u0000\u0000\u173d\u173e\u0007\n\u0000"+ + "\u0000\u173e\u04c6\u0001\u0000\u0000\u0000\u173f\u1740\u0007\r\u0000\u0000"+ + "\u1740\u1741\u0007\n\u0000\u0000\u1741\u1742\u0007\u0017\u0000\u0000\u1742"+ + "\u1743\u0007\n\u0000\u0000\u1743\u1744\u0007\u001a\u0000\u0000\u1744\u1745"+ + "\u0007\u0018\u0000\u0000\u1745\u1746\u0005_\u0000\u0000\u1746\u1747\u0007"+ + "\t\u0000\u0000\u1747\u1748\u0007\u0018\u0000\u0000\u1748\u1749\u0007\u0006"+ + "\u0000\u0000\u1749\u174a\u0007\u0011\u0000\u0000\u174a\u174b\u0007\u0010"+ + "\u0000\u0000\u174b\u174c\u0005_\u0000\u0000\u174c\u174d\u0007\u0010\u0000"+ + "\u0000\u174d\u174e\u0007\u0013\u0000\u0000\u174e\u174f\u0005_\u0000\u0000"+ + "\u174f\u1750\u0007\u0005\u0000\u0000\u1750\u1751\u0007\r\u0000\u0000\u1751"+ + "\u1752\u0007\r\u0000\u0000\u1752\u1753\u0007\u0005\u0000\u0000\u1753\u1754"+ + "\u0007\b\u0000\u0000\u1754\u04c8\u0001\u0000\u0000\u0000\u1755\u1756\u0007"+ + "\r\u0000\u0000\u1756\u1757\u0007\n\u0000\u0000\u1757\u1758\u0007\u0017"+ + "\u0000\u0000\u1758\u1759\u0007\n\u0000\u0000\u1759\u175a\u0007\u001a\u0000"+ + "\u0000\u175a\u175b\u0007\u0018\u0000\u0000\u175b\u175c\u0005_\u0000\u0000"+ + "\u175c\u175d\u0007\t\u0000\u0000\u175d\u175e\u0007\u0018\u0000\u0000\u175e"+ + "\u175f\u0007\u0006\u0000\u0000\u175f\u1760\u0007\u0011\u0000\u0000\u1760"+ + "\u1761\u0007\u0010\u0000\u0000\u1761\u1762\u0005_\u0000\u0000\u1762\u1763"+ + "\u0007\u0010\u0000\u0000\u1763\u1764\u0007\u0013\u0000\u0000\u1764\u1765"+ + "\u0005_\u0000\u0000\u1765\u1766\u0007\u0010\u0000\u0000\u1766\u1767\u0007"+ + "\u0005\u0000\u0000\u1767\u1768\u0007\u0012\u0000\u0000\u1768\u1769\u0007"+ + "\u0006\u0000\u0000\u1769\u176a\u0007\n\u0000\u0000\u176a\u04ca\u0001\u0000"+ + "\u0000\u0000\u176b\u176c\u0007\r\u0000\u0000\u176c\u176d\u0007\n\u0000"+ + "\u0000\u176d\u176e\u0007\u0017\u0000\u0000\u176e\u176f\u0007\n\u0000\u0000"+ + "\u176f\u1770\u0007\u001a\u0000\u0000\u1770\u1771\u0007\u0018\u0000\u0000"+ + "\u1771\u1772\u0005_\u0000\u0000\u1772\u1773\u0007\t\u0000\u0000\u1773"+ + "\u1774\u0007\u0016\u0000\u0000\u1774\u1775\u0007\u0012\u0000\u0000\u1775"+ + "\u1776\u0007\t\u0000\u0000\u1776\u1777\u0007\u0010\u0000\u0000\u1777\u1778"+ + "\u0007\r\u0000\u0000\u1778\u04cc\u0001\u0000\u0000\u0000\u1779\u177a\u0007"+ + "\r\u0000\u0000\u177a\u177b\u0007\n\u0000\u0000\u177b\u177c\u0007\u0018"+ + "\u0000\u0000\u177c\u177d\u0007\n\u0000\u0000\u177d\u177e\u0007\u0005\u0000"+ + "\u0000\u177e\u177f\u0007\u0010\u0000\u0000\u177f\u04ce\u0001\u0000\u0000"+ + "\u0000\u1780\u1781\u0007\r\u0000\u0000\u1781\u1782\u0007\u0018\u0000\u0000"+ + "\u1782\u1783\u0007\u0005\u0000\u0000\u1783\u1784\u0007\f\u0000\u0000\u1784"+ + "\u04d0\u0001\u0000\u0000\u0000\u1785\u1786\u0007\r\u0000\u0000\u1786\u1787"+ + "\u0007\u0010\u0000\u0000\u1787\u1788\u0007\r\u0000\u0000\u1788\u1789\u0007"+ + "\u0011\u0000\u0000\u1789\u178a\u0007\u000f\u0000\u0000\u178a\u04d2\u0001"+ + "\u0000\u0000\u0000\u178b\u178c\u0007\t\u0000\u0000\u178c\u178d\u0007\u0018"+ + "\u0000\u0000\u178d\u178e\u0007\u0006\u0000\u0000\u178e\u178f\u0007\u0011"+ + "\u0000\u0000\u178f\u1790\u0007\u0010\u0000\u0000\u1790\u1791\u0005_\u0000"+ + "\u0000\u1791\u1792\u0007\u0018\u0000\u0000\u1792\u1793\u0007\u0005\u0000"+ + "\u0000\u1793\u1794\u0007\r\u0000\u0000\u1794\u1795\u0007\u0010\u0000\u0000"+ + "\u1795\u04d4\u0001\u0000\u0000\u0000\u1796\u1797\u0007\t\u0000\u0000\u1797"+ + "\u1798\u0007\u0010\u0000\u0000\u1798\u1799\u0007\u0005\u0000\u0000\u1799"+ + "\u179a\u0007\r\u0000\u0000\u179a\u179b\u0007\u0010\u0000\u0000\u179b\u179c"+ + "\u0007\t\u0000\u0000\u179c\u179d\u0005_\u0000\u0000\u179d\u179e\u0007"+ + "\u001c\u0000\u0000\u179e\u179f\u0007\u0011\u0000\u0000\u179f\u17a0\u0007"+ + "\u0010\u0000\u0000\u17a0\u17a1\u0007\u0014\u0000\u0000\u17a1\u04d6\u0001"+ + "\u0000\u0000\u0000\u17a2\u17a3\u0007\t\u0000\u0000\u17a3\u17a4\u0007\u0010"+ + "\u0000\u0000\u17a4\u17a5\u0007\r\u0000\u0000\u17a5\u17a6\u0007\u0011\u0000"+ + "\u0000\u17a6\u17a7\u0007\u0007\u0000\u0000\u17a7\u17a8\u0007\u0017\u0000"+ + "\u0000\u17a8\u17a9\u0005_\u0000\u0000\u17a9\u17aa\u0007\u0010\u0000\u0000"+ + "\u17aa\u17ab\u0007\u0013\u0000\u0000\u17ab\u17ac\u0005_\u0000\u0000\u17ac"+ + "\u17ad\u0007\u0005\u0000\u0000\u17ad\u17ae\u0007\r\u0000\u0000\u17ae\u17af"+ + "\u0007\r\u0000\u0000\u17af\u17b0\u0007\u0005\u0000\u0000\u17b0\u17b1\u0007"+ + "\b\u0000\u0000\u17b1\u04d8\u0001\u0000\u0000\u0000\u17b2\u17b3\u0007\t"+ + "\u0000\u0000\u17b3\u17b4\u0007\u0010\u0000\u0000\u17b4\u17b5\u0007\r\u0000"+ + "\u0000\u17b5\u17b6\u0007\u0011\u0000\u0000\u17b6\u17b7\u0007\u0007\u0000"+ + "\u0000\u17b7\u17b8\u0007\u0017\u0000\u0000\u17b8\u17b9\u0005_\u0000\u0000"+ + "\u17b9\u17ba\u0007\u0010\u0000\u0000\u17ba\u17bb\u0007\u0013\u0000\u0000"+ + "\u17bb\u17bc\u0005_\u0000\u0000\u17bc\u17bd\u0007\u0010\u0000\u0000\u17bd"+ + "\u17be\u0007\u0005\u0000\u0000\u17be\u17bf\u0007\u0012\u0000\u0000\u17bf"+ + "\u17c0\u0007\u0006\u0000\u0000\u17c0\u17c1\u0007\n\u0000\u0000\u17c1\u04da"+ + "\u0001\u0000\u0000\u0000\u17c2\u17c3\u0007\t\u0000\u0000\u17c3\u17c4\u0007"+ + "\u0010\u0000\u0000\u17c4\u17c5\u0007\r\u0000\u0000\u17c5\u17c6\u0007\u0018"+ + "\u0000\u0000\u17c6\u17c7\u0007\u0013\u0000\u0000\u17c7\u17c8\u0007\t\u0000"+ + "\u0000\u17c8\u04dc\u0001\u0000\u0000\u0000\u17c9\u17ca\u0007\t\u0000\u0000"+ + "\u17ca\u17cb\u0007\u0016\u0000\u0000\u17cb\u17cc\u0007\u0012\u0000\u0000"+ + "\u17cc\u17cd\u0007\t\u0000\u0000\u17cd\u17ce\u0007\u0010\u0000\u0000\u17ce"+ + "\u17cf\u0007\r\u0000\u0000\u17cf\u04de\u0001\u0000\u0000\u0000\u17d0\u17d1"+ + "\u0007\u0010\u0000\u0000\u17d1\u17d2\u0007\u0013\u0000\u0000\u17d2\u17d3"+ + "\u0005_\u0000\u0000\u17d3\u17d4\u0007\u0005\u0000\u0000\u17d4\u17d5\u0007"+ + "\t\u0000\u0000\u17d5\u17d6\u0007\u000e\u0000\u0000\u17d6\u17d7\u0007\u0011"+ + "\u0000\u0000\u17d7\u17d8\u0007\u0011\u0000\u0000\u17d8\u04e0\u0001\u0000"+ + "\u0000\u0000\u17d9\u17da\u0007\u0010\u0000\u0000\u17da\u17db\u0007\u0013"+ + "\u0000\u0000\u17db\u17dc\u0005_\u0000\u0000\u17dc\u17dd\u0007\u0014\u0000"+ + "\u0000\u17dd\u17de\u0007\n\u0000\u0000\u17de\u17df\u0007\u001a\u0000\u0000"+ + "\u17df\u04e2\u0001\u0000\u0000\u0000\u17e0\u17e1\u0007\u0010\u0000\u0000"+ + "\u17e1\u17e2\u0007\r\u0000\u0000\u17e2\u17e3\u0007\u0005\u0000\u0000\u17e3"+ + "\u17e4\u0007\u0007\u0000\u0000\u17e4\u17e5\u0007\t\u0000\u0000\u17e5\u17e6"+ + "\u0007\u0006\u0000\u0000\u17e6\u17e7\u0007\u0005\u0000\u0000\u17e7\u17e8"+ + "\u0007\u0010\u0000\u0000\u17e8\u17e9\u0007\n\u0000\u0000\u17e9\u04e4\u0001"+ + "\u0000\u0000\u0000\u17ea\u17eb\u0007\u0016\u0000\u0000\u17eb\u17ec\u0007"+ + "\u0007\u0000\u0000\u17ec\u17ed\u0007\u0011\u0000\u0000\u17ed\u17ee\u0007"+ + "\t\u0000\u0000\u17ee\u17ef\u0007\u0010\u0000\u0000\u17ef\u17f0\u0007\r"+ + "\u0000\u0000\u17f0\u04e6\u0001\u0000\u0000\u0000\u17f1\u17f2\u0007\u0005"+ + "\u0000\u0000\u17f2\u17f3\u0007\u0017\u0000\u0000\u17f3\u17f4\u0007\n\u0000"+ + "\u0000\u17f4\u04e8\u0001\u0000\u0000\u0000\u17f5\u17f6\u0007\u000e\u0000"+ + "\u0000\u17f6\u17f7\u0007\u0006\u0000\u0000\u17f7\u17f8\u0007\u0013\u0000"+ + "\u0000\u17f8\u17f9\u0007\u000e\u0000\u0000\u17f9\u17fa\u0007\u0015\u0000"+ + "\u0000\u17fa\u17fb\u0005_\u0000\u0000\u17fb\u17fc\u0007\u0010\u0000\u0000"+ + "\u17fc\u17fd\u0007\u0011\u0000\u0000\u17fd\u17fe\u0007\u000f\u0000\u0000"+ + "\u17fe\u17ff\u0007\n\u0000\u0000\u17ff\u1800\u0007\t\u0000\u0000\u1800"+ + "\u1801\u0007\u0010\u0000\u0000\u1801\u1802\u0007\u0005\u0000\u0000\u1802"+ + "\u1803\u0007\u000f\u0000\u0000\u1803\u1804\u0007\u0018\u0000\u0000\u1804"+ + "\u04ea\u0001\u0000\u0000\u0000\u1805\u1806\u0007\f\u0000\u0000\u1806\u1807"+ + "\u0007\u0005\u0000\u0000\u1807\u1808\u0007\u0010\u0000\u0000\u1808\u1809"+ + "\u0007\n\u0000\u0000\u1809\u180a\u0005_\u0000\u0000\u180a\u180b\u0007"+ + "\u0012\u0000\u0000\u180b\u180c\u0007\u0011\u0000\u0000\u180c\u180d\u0007"+ + "\u0007\u0000\u0000\u180d\u04ec\u0001\u0000\u0000\u0000\u180e\u180f\u0007"+ + "\f\u0000\u0000\u180f\u1810\u0007\u0005\u0000\u0000\u1810\u1811\u0007\u0010"+ + "\u0000\u0000\u1811\u1812\u0007\n\u0000\u0000\u1812\u1813\u0005_\u0000"+ + "\u0000\u1813\u1814\u0007\u0018\u0000\u0000\u1814\u1815\u0007\u0005\u0000"+ + "\u0000\u1815\u1816\u0007\r\u0000\u0000\u1816\u1817\u0007\u0010\u0000\u0000"+ + "\u1817\u04ee\u0001\u0000\u0000\u0000\u1818\u1819\u0007\f\u0000\u0000\u1819"+ + "\u181a\u0007\u0005\u0000\u0000\u181a\u181b\u0007\u0010\u0000\u0000\u181b"+ + "\u181c\u0007\n\u0000\u0000\u181c\u181d\u0005_\u0000\u0000\u181d\u181e"+ + "\u0007\u0010\u0000\u0000\u181e\u181f\u0007\r\u0000\u0000\u181f\u1820\u0007"+ + "\u0016\u0000\u0000\u1820\u1821\u0007\u0007\u0000\u0000\u1821\u1822\u0007"+ + "\u000e\u0000\u0000\u1822\u04f0\u0001\u0000\u0000\u0000\u1823\u1824\u0007"+ + "\u0011\u0000\u0000\u1824\u1825\u0007\t\u0000\u0000\u1825\u1826\u0007\u0019"+ + "\u0000\u0000\u1826\u1827\u0007\u0011\u0000\u0000\u1827\u1828\u0007\u0007"+ + "\u0000\u0000\u1828\u1829\u0007\u0011\u0000\u0000\u1829\u182a\u0007\u0010"+ + "\u0000\u0000\u182a\u182b\u0007\n\u0000\u0000\u182b\u04f2\u0001\u0000\u0000"+ + "\u0000\u182c\u182d\u0007\u001e\u0000\u0000\u182d\u182e\u0007\u0016\u0000"+ + "\u0000\u182e\u182f\u0007\t\u0000\u0000\u182f\u1830\u0007\u0010\u0000\u0000"+ + "\u1830\u1831\u0007\u0011\u0000\u0000\u1831\u1832\u0007\u0019\u0000\u0000"+ + "\u1832\u1833\u0007\b\u0000\u0000\u1833\u1834\u0005_\u0000\u0000\u1834"+ + "\u1835\u0007\f\u0000\u0000\u1835\u1836\u0007\u0005\u0000\u0000\u1836\u1837"+ + "\u0007\b\u0000\u0000\u1837\u1838\u0007\t\u0000\u0000\u1838\u04f4\u0001"+ + "\u0000\u0000\u0000\u1839\u183a\u0007\u001e\u0000\u0000\u183a\u183b\u0007"+ + "\u0016\u0000\u0000\u183b\u183c\u0007\t\u0000\u0000\u183c\u183d\u0007\u0010"+ + "\u0000\u0000\u183d\u183e\u0007\u0011\u0000\u0000\u183e\u183f\u0007\u0019"+ + "\u0000\u0000\u183f\u1840\u0007\b\u0000\u0000\u1840\u1841\u0005_\u0000"+ + "\u0000\u1841\u1842\u0007\u0014\u0000\u0000\u1842\u1843\u0007\u0013\u0000"+ + "\u0000\u1843\u1844\u0007\u0016\u0000\u0000\u1844\u1845\u0007\r\u0000\u0000"+ + "\u1845\u1846\u0007\t\u0000\u0000\u1846\u04f6\u0001\u0000\u0000\u0000\u1847"+ + "\u1848\u0007\u001e\u0000\u0000\u1848\u1849\u0007\u0016\u0000\u0000\u1849"+ + "\u184a\u0007\t\u0000\u0000\u184a\u184b\u0007\u0010\u0000\u0000\u184b\u184c"+ + "\u0007\u0011\u0000\u0000\u184c\u184d\u0007\u0019\u0000\u0000\u184d\u184e"+ + "\u0007\b\u0000\u0000\u184e\u184f\u0005_\u0000\u0000\u184f\u1850\u0007"+ + "\u0011\u0000\u0000\u1850\u1851\u0007\u0007\u0000\u0000\u1851\u1852\u0007"+ + "\u0010\u0000\u0000\u1852\u1853\u0007\n\u0000\u0000\u1853\u1854\u0007\r"+ + "\u0000\u0000\u1854\u1855\u0007\u001b\u0000\u0000\u1855\u1856\u0007\u0005"+ + "\u0000\u0000\u1856\u1857\u0007\u0006\u0000\u0000\u1857\u04f8\u0001\u0000"+ + "\u0000\u0000\u1858\u1859\u0007\u000f\u0000\u0000\u1859\u185a\u0007\u0005"+ + "\u0000\u0000\u185a\u185b\u0007\u0015\u0000\u0000\u185b\u185c\u0007\n\u0000"+ + "\u0000\u185c\u185d\u0005_\u0000\u0000\u185d\u185e\u0007\f\u0000\u0000"+ + "\u185e\u185f\u0007\u0005\u0000\u0000\u185f\u1860\u0007\u0010\u0000\u0000"+ + "\u1860\u1861\u0007\n\u0000\u0000\u1861\u04fa\u0001\u0000\u0000\u0000\u1862"+ + "\u1863\u0007\u000f\u0000\u0000\u1863\u1864\u0007\u0005\u0000\u0000\u1864"+ + "\u1865\u0007\u0015\u0000\u0000\u1865\u1866\u0007\n\u0000\u0000\u1866\u1867"+ + "\u0005_\u0000\u0000\u1867\u1868\u0007\u0011\u0000\u0000\u1868\u1869\u0007"+ + "\u0007\u0000\u0000\u1869\u186a\u0007\u0010\u0000\u0000\u186a\u186b\u0007"+ + "\n\u0000\u0000\u186b\u186c\u0007\r\u0000\u0000\u186c\u186d\u0007\u001b"+ + "\u0000\u0000\u186d\u186e\u0007\u0005\u0000\u0000\u186e\u186f\u0007\u0006"+ + "\u0000\u0000\u186f\u04fc\u0001\u0000\u0000\u0000\u1870\u1871\u0007\u000f"+ + "\u0000\u0000\u1871\u1872\u0007\u0005\u0000\u0000\u1872\u1873\u0007\u0015"+ + "\u0000\u0000\u1873\u1874\u0007\n\u0000\u0000\u1874\u1875\u0005_\u0000"+ + "\u0000\u1875\u1876\u0007\u0010\u0000\u0000\u1876\u1877\u0007\u0011\u0000"+ + "\u0000\u1877\u1878\u0007\u000f\u0000\u0000\u1878\u1879\u0007\n\u0000\u0000"+ + "\u1879\u04fe\u0001\u0000\u0000\u0000\u187a\u187b\u0007\u000f\u0000\u0000"+ + "\u187b\u187c\u0007\u0005\u0000\u0000\u187c\u187d\u0007\u0015\u0000\u0000"+ + "\u187d\u187e\u0007\n\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\u0500\u0001\u0000\u0000\u0000\u1889\u188a\u0007"+ + "\u000f\u0000\u0000\u188a\u188b\u0007\u0005\u0000\u0000\u188b\u188c\u0007"+ + "\u0015\u0000\u0000\u188c\u188d\u0007\n\u0000\u0000\u188d\u188e\u0005_"+ + "\u0000\u0000\u188e\u188f\u0007\u0010\u0000\u0000\u188f\u1890\u0007\u0011"+ + "\u0000\u0000\u1890\u1891\u0007\u000f\u0000\u0000\u1891\u1892\u0007\n\u0000"+ + "\u0000\u1892\u1893\u0007\t\u0000\u0000\u1893\u1894\u0007\u0010\u0000\u0000"+ + "\u1894\u1895\u0007\u0005\u0000\u0000\u1895\u1896\u0007\u000f\u0000\u0000"+ + "\u1896\u1897\u0007\u0018\u0000\u0000\u1897\u1898\u0007\u0010\u0000\u0000"+ + "\u1898\u1899\u0007\u000b\u0000\u0000\u1899\u0502\u0001\u0000\u0000\u0000"+ + "\u189a\u189b\u0007\u0007\u0000\u0000\u189b\u189c\u0007\u0013\u0000\u0000"+ + "\u189c\u189d\u0007\u001c\u0000\u0000\u189d\u0504\u0001\u0000\u0000\u0000"+ + "\u189e\u189f\u0007\t\u0000\u0000\u189f\u18a0\u0007\u0010\u0000\u0000\u18a0"+ + "\u18a1\u0007\u0005\u0000\u0000\u18a1\u18a2\u0007\u0010\u0000\u0000\u18a2"+ + "\u18a3\u0007\n\u0000\u0000\u18a3\u18a4\u0007\u000f\u0000\u0000\u18a4\u18a5"+ + "\u0007\n\u0000\u0000\u18a5\u18a6\u0007\u0007\u0000\u0000\u18a6\u18a7\u0007"+ + "\u0010\u0000\u0000\u18a7\u18a8\u0005_\u0000\u0000\u18a8\u18a9\u0007\u0010"+ + "\u0000\u0000\u18a9\u18aa\u0007\u0011\u0000\u0000\u18aa\u18ab\u0007\u000f"+ + "\u0000\u0000\u18ab\u18ac\u0007\n\u0000\u0000\u18ac\u18ad\u0007\t\u0000"+ + "\u0000\u18ad\u18ae\u0007\u0010\u0000\u0000\u18ae\u18af\u0007\u0005\u0000"+ + "\u0000\u18af\u18b0\u0007\u000f\u0000\u0000\u18b0\u18b1\u0007\u0018\u0000"+ + "\u0000\u18b1\u0506\u0001\u0000\u0000\u0000\u18b2\u18b3\u0007\u0010\u0000"+ + "\u0000\u18b3\u18b4\u0007\u0011\u0000\u0000\u18b4\u18b5\u0007\u000f\u0000"+ + "\u0000\u18b5\u18b6\u0007\n\u0000\u0000\u18b6\u18b7\u0007\u0013\u0000\u0000"+ + "\u18b7\u18b8\u0007\u0019\u0000\u0000\u18b8\u18b9\u0007\f\u0000\u0000\u18b9"+ + "\u18ba\u0007\u0005\u0000\u0000\u18ba\u18bb\u0007\b\u0000\u0000\u18bb\u0508"+ + "\u0001\u0000\u0000\u0000\u18bc\u18bd\u0007\u0010\u0000\u0000\u18bd\u18be"+ + "\u0007\r\u0000\u0000\u18be\u18bf\u0007\u0005\u0000\u0000\u18bf\u18c0\u0007"+ + "\u0007\u0000\u0000\u18c0\u18c1\u0007\t\u0000\u0000\u18c1\u18c2\u0007\u0005"+ + "\u0000\u0000\u18c2\u18c3\u0007\u000e\u0000\u0000\u18c3\u18c4\u0007\u0010"+ + "\u0000\u0000\u18c4\u18c5\u0007\u0011\u0000\u0000\u18c5\u18c6\u0007\u0013"+ + "\u0000\u0000\u18c6\u18c7\u0007\u0007\u0000\u0000\u18c7\u18c8\u0005_\u0000"+ + "\u0000\u18c8\u18c9\u0007\u0010\u0000\u0000\u18c9\u18ca\u0007\u0011\u0000"+ + "\u0000\u18ca\u18cb\u0007\u000f\u0000\u0000\u18cb\u18cc\u0007\n\u0000\u0000"+ + "\u18cc\u18cd\u0007\t\u0000\u0000\u18cd\u18ce\u0007\u0010\u0000\u0000\u18ce"+ + "\u18cf\u0007\u0005\u0000\u0000\u18cf\u18d0\u0007\u000f\u0000\u0000\u18d0"+ + "\u18d1\u0007\u0018\u0000\u0000\u18d1\u050a\u0001\u0000\u0000\u0000\u18d2"+ + "\u18d3\u0007\u0010\u0000\u0000\u18d3\u18d4\u0007\u0013\u0000\u0000\u18d4"+ + "\u18d5\u0005_\u0000\u0000\u18d5\u18d6\u0007\u0010\u0000\u0000\u18d6\u18d7"+ + "\u0007\u0011\u0000\u0000\u18d7\u18d8\u0007\u000f\u0000\u0000\u18d8\u18d9"+ + "\u0007\n\u0000\u0000\u18d9\u18da\u0007\t\u0000\u0000\u18da\u18db\u0007"+ + "\u0010\u0000\u0000\u18db\u18dc\u0007\u0005\u0000\u0000\u18dc\u18dd\u0007"+ + "\u000f\u0000\u0000\u18dd\u18de\u0007\u0018\u0000\u0000\u18de\u050c\u0001"+ + "\u0000\u0000\u0000\u18df\u18e0\u0007\u0010\u0000\u0000\u18e0\u18e1\u0007"+ + "\u0013\u0000\u0000\u18e1\u18e2\u0005_\u0000\u0000\u18e2\u18e3\u0007\u000e"+ + "\u0000\u0000\u18e3\u18e4\u0007\u0014\u0000\u0000\u18e4\u18e5\u0007\u0005"+ + "\u0000\u0000\u18e5\u18e6\u0007\r\u0000\u0000\u18e6\u050e\u0001\u0000\u0000"+ + "\u0000\u18e7\u18e8\u0007\u0010\u0000\u0000\u18e8\u18e9\u0007\u0013\u0000"+ + "\u0000\u18e9\u18ea\u0005_\u0000\u0000\u18ea\u18eb\u0007\f\u0000\u0000"+ + "\u18eb\u18ec\u0007\u0005\u0000\u0000\u18ec\u18ed\u0007\u0010\u0000\u0000"+ + "\u18ed\u18ee\u0007\n\u0000\u0000\u18ee\u0510\u0001\u0000\u0000\u0000\u18ef"+ + "\u18f0\u0007\u0010\u0000\u0000\u18f0\u18f1\u0007\u0013\u0000\u0000\u18f1"+ + "\u18f2\u0005_\u0000\u0000\u18f2\u18f3\u0007\u0007\u0000\u0000\u18f3\u18f4"+ + "\u0007\u0016\u0000\u0000\u18f4\u18f5\u0007\u000f\u0000\u0000\u18f5\u18f6"+ + "\u0007\u0012\u0000\u0000\u18f6\u18f7\u0007\n\u0000\u0000\u18f7\u18f8\u0007"+ + "\r\u0000\u0000\u18f8\u0512\u0001\u0000\u0000\u0000\u18f9\u18fd\u0003\u0515"+ + "\u0288\u0000\u18fa\u18fc\u0003\u0517\u0289\u0000\u18fb\u18fa\u0001\u0000"+ + "\u0000\u0000\u18fc\u18ff\u0001\u0000\u0000\u0000\u18fd\u18fb\u0001\u0000"+ + "\u0000\u0000\u18fd\u18fe\u0001\u0000\u0000\u0000\u18fe\u0514\u0001\u0000"+ + "\u0000\u0000\u18ff\u18fd\u0001\u0000\u0000\u0000\u1900\u1907\u0007\u001f"+ + "\u0000\u0000\u1901\u1902\u0007 \u0000\u0000\u1902\u1907\u0004\u0288\u0006"+ + "\u0000\u1903\u1904\u0007!\u0000\u0000\u1904\u1905\u0007\"\u0000\u0000"+ + "\u1905\u1907\u0004\u0288\u0007\u0000\u1906\u1900\u0001\u0000\u0000\u0000"+ + "\u1906\u1901\u0001\u0000\u0000\u0000\u1906\u1903\u0001\u0000\u0000\u0000"+ + "\u1907\u0516\u0001\u0000\u0000\u0000\u1908\u190b\u0003\u0519\u028a\u0000"+ + "\u1909\u190b\u0005$\u0000\u0000\u190a\u1908\u0001\u0000\u0000\u0000\u190a"+ + "\u1909\u0001\u0000\u0000\u0000\u190b\u0518\u0001\u0000\u0000\u0000\u190c"+ + "\u190f\u0003\u0515\u0288\u0000\u190d\u190f\u0007\u0000\u0000\u0000\u190e"+ + "\u190c\u0001\u0000\u0000\u0000\u190e\u190d\u0001\u0000\u0000\u0000\u190f"+ + "\u051a\u0001\u0000\u0000\u0000\u1910\u1911\u0003\u051d\u028c\u0000\u1911"+ + "\u1912\u0005\"\u0000\u0000\u1912\u051c\u0001\u0000\u0000\u0000\u1913\u1919"+ + "\u0005\"\u0000\u0000\u1914\u1915\u0005\"\u0000\u0000\u1915\u1918\u0005"+ + "\"\u0000\u0000\u1916\u1918\b#\u0000\u0000\u1917\u1914\u0001\u0000\u0000"+ + "\u0000\u1917\u1916\u0001\u0000\u0000\u0000\u1918\u191b\u0001\u0000\u0000"+ + "\u0000\u1919\u1917\u0001\u0000\u0000\u0000\u1919\u191a\u0001\u0000\u0000"+ + "\u0000\u191a\u051e\u0001\u0000\u0000\u0000\u191b\u1919\u0001\u0000\u0000"+ + "\u0000\u191c\u191d\u0003\u0521\u028e\u0000\u191d\u191e\u0005\"\u0000\u0000"+ + "\u191e\u0520\u0001\u0000\u0000\u0000\u191f\u1925\u0005\"\u0000\u0000\u1920"+ + "\u1921\u0005\"\u0000\u0000\u1921\u1924\u0005\"\u0000\u0000\u1922\u1924"+ + "\b$\u0000\u0000\u1923\u1920\u0001\u0000\u0000\u0000\u1923\u1922\u0001"+ + "\u0000\u0000\u0000\u1924\u1927\u0001\u0000\u0000\u0000\u1925\u1923\u0001"+ + "\u0000\u0000\u0000\u1925\u1926\u0001\u0000\u0000\u0000\u1926\u0522\u0001"+ + "\u0000\u0000\u0000\u1927\u1925\u0001\u0000\u0000\u0000\u1928\u1929\u0007"+ + "\u0016\u0000\u0000\u1929\u192a\u0005&\u0000\u0000\u192a\u192b\u0003\u051b"+ + "\u028b\u0000\u192b\u0524\u0001\u0000\u0000\u0000\u192c\u192d\u0007\u0016"+ + "\u0000\u0000\u192d\u192e\u0005&\u0000\u0000\u192e\u192f\u0003\u051d\u028c"+ + "\u0000\u192f\u0526\u0001\u0000\u0000\u0000\u1930\u1931\u0007\u0016\u0000"+ + "\u0000\u1931\u1932\u0005&\u0000\u0000\u1932\u1933\u0003\u051f\u028d\u0000"+ + "\u1933\u0528\u0001\u0000\u0000\u0000\u1934\u1935\u0007\u0016\u0000\u0000"+ + "\u1935\u1936\u0005&\u0000\u0000\u1936\u1937\u0003\u0521\u028e\u0000\u1937"+ + "\u052a\u0001\u0000\u0000\u0000\u1938\u1939\u0003\u052d\u0294\u0000\u1939"+ + "\u193a\u0005\'\u0000\u0000\u193a\u052c\u0001\u0000\u0000\u0000\u193b\u1941"+ + "\u0005\'\u0000\u0000\u193c\u193d\u0005\'\u0000\u0000\u193d\u1940\u0005"+ + "\'\u0000\u0000\u193e\u1940\b%\u0000\u0000\u193f\u193c\u0001\u0000\u0000"+ + "\u0000\u193f\u193e\u0001\u0000\u0000\u0000\u1940\u1943\u0001\u0000\u0000"+ + "\u0000\u1941\u193f\u0001\u0000\u0000\u0000\u1941\u1942\u0001\u0000\u0000"+ + "\u0000\u1942\u052e\u0001\u0000\u0000\u0000\u1943\u1941\u0001\u0000\u0000"+ + "\u0000\u1944\u1945\u0007\n\u0000\u0000\u1945\u1946\u0005\'\u0000\u0000"+ + "\u1946\u1947\u0001\u0000\u0000\u0000\u1947\u1948\u0006\u0295\u0002\u0000"+ + "\u1948\u1949\u0006\u0295\u0003\u0000\u1949\u0530\u0001\u0000\u0000\u0000"+ + "\u194a\u194b\u0003\u0533\u0297\u0000\u194b\u194c\u0005\'\u0000\u0000\u194c"+ + "\u0532\u0001\u0000\u0000\u0000\u194d\u194e\u0007\u0016\u0000\u0000\u194e"+ + "\u194f\u0005&\u0000\u0000\u194f\u1950\u0003\u052d\u0294\u0000\u1950\u0534"+ + "\u0001\u0000\u0000\u0000\u1951\u1953\u0005$\u0000\u0000\u1952\u1954\u0003"+ + "\u0537\u0299\u0000\u1953\u1952\u0001\u0000\u0000\u0000\u1953\u1954\u0001"+ + "\u0000\u0000\u0000\u1954\u1955\u0001\u0000\u0000\u0000\u1955\u1956\u0005"+ + "$\u0000\u0000\u1956\u1957\u0006\u0298\u0004\u0000\u1957\u1958\u0001\u0000"+ + "\u0000\u0000\u1958\u1959\u0006\u0298\u0005\u0000\u1959\u0536\u0001\u0000"+ + "\u0000\u0000\u195a\u195e\u0003\u0515\u0288\u0000\u195b\u195d\u0003\u0519"+ + "\u028a\u0000\u195c\u195b\u0001\u0000\u0000\u0000\u195d\u1960\u0001\u0000"+ + "\u0000\u0000\u195e\u195c\u0001\u0000\u0000\u0000\u195e\u195f\u0001\u0000"+ + "\u0000\u0000\u195f\u0538\u0001\u0000\u0000\u0000\u1960\u195e\u0001\u0000"+ + "\u0000\u0000\u1961\u1962\u0003\u053b\u029b\u0000\u1962\u1963\u0005\'\u0000"+ + "\u0000\u1963\u053a\u0001\u0000\u0000\u0000\u1964\u1965\u0007\u0012\u0000"+ + "\u0000\u1965\u1969\u0005\'\u0000\u0000\u1966\u1968\u0007&\u0000\u0000"+ + "\u1967\u1966\u0001\u0000\u0000\u0000\u1968\u196b\u0001\u0000\u0000\u0000"+ + "\u1969\u1967\u0001\u0000\u0000\u0000\u1969\u196a\u0001\u0000\u0000\u0000"+ + "\u196a\u053c\u0001\u0000\u0000\u0000\u196b\u1969\u0001\u0000\u0000\u0000"+ + "\u196c\u196d\u0003\u053f\u029d\u0000\u196d\u196e\u0005\'\u0000\u0000\u196e"+ + "\u053e\u0001\u0000\u0000\u0000\u196f\u1970\u0007\u0012\u0000\u0000\u1970"+ + "\u1971\u0003\u052d\u0294\u0000\u1971\u0540\u0001\u0000\u0000\u0000\u1972"+ + "\u1973\u0003\u0543\u029f\u0000\u1973\u1974\u0005\'\u0000\u0000\u1974\u0542"+ + "\u0001\u0000\u0000\u0000\u1975\u1976\u0007\u001a\u0000\u0000\u1976\u197a"+ + "\u0005\'\u0000\u0000\u1977\u1979\u0007\'\u0000\u0000\u1978\u1977\u0001"+ + "\u0000\u0000\u0000\u1979\u197c\u0001\u0000\u0000\u0000\u197a\u1978\u0001"+ + "\u0000\u0000\u0000\u197a\u197b\u0001\u0000\u0000\u0000\u197b\u0544\u0001"+ + "\u0000\u0000\u0000\u197c\u197a\u0001\u0000\u0000\u0000\u197d\u197e\u0003"+ + "\u0547\u02a1\u0000\u197e\u197f\u0005\'\u0000\u0000\u197f\u0546\u0001\u0000"+ + "\u0000\u0000\u1980\u1981\u0007\u001a\u0000\u0000\u1981\u1982\u0003\u052d"+ + "\u0294\u0000\u1982\u0548\u0001\u0000\u0000\u0000\u1983\u1984\u0003\u054f"+ + "\u02a5\u0000\u1984\u054a\u0001\u0000\u0000\u0000\u1985\u1986\u0003\u054f"+ + "\u02a5\u0000\u1986\u1987\u0005.\u0000\u0000\u1987\u1988\u0005.\u0000\u0000"+ + "\u1988\u1989\u0001\u0000\u0000\u0000\u1989\u198a\u0006\u02a3\u0006\u0000"+ + "\u198a\u054c\u0001\u0000\u0000\u0000\u198b\u198c\u0003\u054f\u02a5\u0000"+ + "\u198c\u198e\u0005.\u0000\u0000\u198d\u198f\u0003\u054f\u02a5\u0000\u198e"+ + "\u198d\u0001\u0000\u0000\u0000\u198e\u198f\u0001\u0000\u0000\u0000\u198f"+ + "\u1995\u0001\u0000\u0000\u0000\u1990\u1992\u0007\n\u0000\u0000\u1991\u1993"+ + "\u0007\u0001\u0000\u0000\u1992\u1991\u0001\u0000\u0000\u0000\u1992\u1993"+ + "\u0001\u0000\u0000\u0000\u1993\u1994\u0001\u0000\u0000\u0000\u1994\u1996"+ + "\u0003\u054f\u02a5\u0000\u1995\u1990\u0001\u0000\u0000\u0000\u1995\u1996"+ + "\u0001\u0000\u0000\u0000\u1996\u19a8\u0001\u0000\u0000\u0000\u1997\u1998"+ + "\u0005.\u0000\u0000\u1998\u199e\u0003\u054f\u02a5\u0000\u1999\u199b\u0007"+ + "\n\u0000\u0000\u199a\u199c\u0007\u0001\u0000\u0000\u199b\u199a\u0001\u0000"+ + "\u0000\u0000\u199b\u199c\u0001\u0000\u0000\u0000\u199c\u199d\u0001\u0000"+ + "\u0000\u0000\u199d\u199f\u0003\u054f\u02a5\u0000\u199e\u1999\u0001\u0000"+ + "\u0000\u0000\u199e\u199f\u0001\u0000\u0000\u0000\u199f\u19a8\u0001\u0000"+ + "\u0000\u0000\u19a0\u19a1\u0003\u054f\u02a5\u0000\u19a1\u19a3\u0007\n\u0000"+ + "\u0000\u19a2\u19a4\u0007\u0001\u0000\u0000\u19a3\u19a2\u0001\u0000\u0000"+ + "\u0000\u19a3\u19a4\u0001\u0000\u0000\u0000\u19a4\u19a5\u0001\u0000\u0000"+ + "\u0000\u19a5\u19a6\u0003\u054f\u02a5\u0000\u19a6\u19a8\u0001\u0000\u0000"+ + "\u0000\u19a7\u198b\u0001\u0000\u0000\u0000\u19a7\u1997\u0001\u0000\u0000"+ + "\u0000\u19a7\u19a0\u0001\u0000\u0000\u0000\u19a8\u054e\u0001\u0000\u0000"+ + "\u0000\u19a9\u19ab\u0007\u0000\u0000\u0000\u19aa\u19a9\u0001\u0000\u0000"+ + "\u0000\u19ab\u19ac\u0001\u0000\u0000\u0000\u19ac\u19aa\u0001\u0000\u0000"+ + "\u0000\u19ac\u19ad\u0001\u0000\u0000\u0000\u19ad\u0550\u0001\u0000\u0000"+ + "\u0000\u19ae\u19af\u0005:\u0000\u0000\u19af\u19b3\u0007(\u0000\u0000\u19b0"+ + "\u19b2\u0007)\u0000\u0000\u19b1\u19b0\u0001\u0000\u0000\u0000\u19b2\u19b5"+ + "\u0001\u0000\u0000\u0000\u19b3\u19b1\u0001\u0000\u0000\u0000\u19b3\u19b4"+ + "\u0001\u0000\u0000\u0000\u19b4\u0552\u0001\u0000\u0000\u0000\u19b5\u19b3"+ + "\u0001\u0000\u0000\u0000\u19b6\u19b7\u0005:\u0000\u0000\u19b7\u19b8\u0005"+ + "\"\u0000\u0000\u19b8\u19c0\u0001\u0000\u0000\u0000\u19b9\u19ba\u0005\\"+ + "\u0000\u0000\u19ba\u19bf\t\u0000\u0000\u0000\u19bb\u19bc\u0005\"\u0000"+ + "\u0000\u19bc\u19bf\u0005\"\u0000\u0000\u19bd\u19bf\b*\u0000\u0000\u19be"+ + "\u19b9\u0001\u0000\u0000\u0000\u19be\u19bb\u0001\u0000\u0000\u0000\u19be"+ + "\u19bd\u0001\u0000\u0000\u0000\u19bf\u19c2\u0001\u0000\u0000\u0000\u19c0"+ + "\u19be\u0001\u0000\u0000\u0000\u19c0\u19c1\u0001\u0000\u0000\u0000\u19c1"+ + "\u19c3\u0001\u0000\u0000\u0000\u19c2\u19c0\u0001\u0000\u0000\u0000\u19c3"+ + "\u19c4\u0005\"\u0000\u0000\u19c4\u0554\u0001\u0000\u0000\u0000\u19c5\u19c7"+ + "\u0007+\u0000\u0000\u19c6\u19c5\u0001\u0000\u0000\u0000\u19c7\u19c8\u0001"+ + "\u0000\u0000\u0000\u19c8\u19c6\u0001\u0000\u0000\u0000\u19c8\u19c9\u0001"+ + "\u0000\u0000\u0000\u19c9\u19ca\u0001\u0000\u0000\u0000\u19ca\u19cb\u0006"+ + "\u02a8\u0007\u0000\u19cb\u0556\u0001\u0000\u0000\u0000\u19cc\u19ce\u0005"+ + "\r\u0000\u0000\u19cd\u19cf\u0005\n\u0000\u0000\u19ce\u19cd\u0001\u0000"+ + "\u0000\u0000\u19ce\u19cf\u0001\u0000\u0000\u0000\u19cf\u19d2\u0001\u0000"+ + "\u0000\u0000\u19d0\u19d2\u0005\n\u0000\u0000\u19d1\u19cc\u0001\u0000\u0000"+ + "\u0000\u19d1\u19d0\u0001\u0000\u0000\u0000\u19d2\u19d3\u0001\u0000\u0000"+ + "\u0000\u19d3\u19d4\u0006\u02a9\u0007\u0000\u19d4\u0558\u0001\u0000\u0000"+ + "\u0000\u19d5\u19d6\u0005-\u0000\u0000\u19d6\u19d7\u0005-\u0000\u0000\u19d7"+ + "\u19db\u0001\u0000\u0000\u0000\u19d8\u19da\b,\u0000\u0000\u19d9\u19d8"+ + "\u0001\u0000\u0000\u0000\u19da\u19dd\u0001\u0000\u0000\u0000\u19db\u19d9"+ + "\u0001\u0000\u0000\u0000\u19db\u19dc\u0001\u0000\u0000\u0000\u19dc\u19de"+ + "\u0001\u0000\u0000\u0000\u19dd\u19db\u0001\u0000\u0000\u0000\u19de\u19df"+ + "\u0006\u02aa\u0007\u0000\u19df\u055a\u0001\u0000\u0000\u0000\u19e0\u19e1"+ + "\u0005/\u0000\u0000\u19e1\u19e2\u0005*\u0000\u0000\u19e2\u19f9\u0001\u0000"+ + "\u0000\u0000\u19e3\u19e5\u0005/\u0000\u0000\u19e4\u19e3\u0001\u0000\u0000"+ + "\u0000\u19e5\u19e8\u0001\u0000\u0000\u0000\u19e6\u19e4\u0001\u0000\u0000"+ + "\u0000\u19e6\u19e7\u0001\u0000\u0000\u0000\u19e7\u19e9\u0001\u0000\u0000"+ + "\u0000\u19e8\u19e6\u0001\u0000\u0000\u0000\u19e9\u19f8\u0003\u055b\u02ab"+ + "\u0000\u19ea\u19f8\b-\u0000\u0000\u19eb\u19ed\u0005/\u0000\u0000\u19ec"+ + "\u19eb\u0001\u0000\u0000\u0000\u19ed\u19ee\u0001\u0000\u0000\u0000\u19ee"+ + "\u19ec\u0001\u0000\u0000\u0000\u19ee\u19ef\u0001\u0000\u0000\u0000\u19ef"+ + "\u19f0\u0001\u0000\u0000\u0000\u19f0\u19f8\b-\u0000\u0000\u19f1\u19f3"+ + "\u0005*\u0000\u0000\u19f2\u19f1\u0001\u0000\u0000\u0000\u19f3\u19f4\u0001"+ + "\u0000\u0000\u0000\u19f4\u19f2\u0001\u0000\u0000\u0000\u19f4\u19f5\u0001"+ + "\u0000\u0000\u0000\u19f5\u19f6\u0001\u0000\u0000\u0000\u19f6\u19f8\b-"+ + "\u0000\u0000\u19f7\u19e6\u0001\u0000\u0000\u0000\u19f7\u19ea\u0001\u0000"+ + "\u0000\u0000\u19f7\u19ec\u0001\u0000\u0000\u0000\u19f7\u19f2\u0001\u0000"+ + "\u0000\u0000\u19f8\u19fb\u0001\u0000\u0000\u0000\u19f9\u19f7\u0001\u0000"+ + "\u0000\u0000\u19f9\u19fa\u0001\u0000\u0000\u0000\u19fa\u19ff\u0001\u0000"+ + "\u0000\u0000\u19fb\u19f9\u0001\u0000\u0000\u0000\u19fc\u19fe\u0005*\u0000"+ + "\u0000\u19fd\u19fc\u0001\u0000\u0000\u0000\u19fe\u1a01\u0001\u0000\u0000"+ + "\u0000\u19ff\u19fd\u0001\u0000\u0000\u0000\u19ff\u1a00\u0001\u0000\u0000"+ + "\u0000\u1a00\u1a02\u0001\u0000\u0000\u0000\u1a01\u19ff\u0001\u0000\u0000"+ + "\u0000\u1a02\u1a03\u0005*\u0000\u0000\u1a03\u1a04\u0005/\u0000\u0000\u1a04"+ + "\u1a05\u0001\u0000\u0000\u0000\u1a05\u1a06\u0006\u02ab\u0007\u0000\u1a06"+ + "\u055c\u0001\u0000\u0000\u0000\u1a07\u1a08\u0005/\u0000\u0000\u1a08\u1a09"+ + "\u0005*\u0000\u0000\u1a09\u1a22\u0001\u0000\u0000\u0000\u1a0a\u1a0c\u0005"+ + "/\u0000\u0000\u1a0b\u1a0a\u0001\u0000\u0000\u0000\u1a0c\u1a0f\u0001\u0000"+ + "\u0000\u0000\u1a0d\u1a0b\u0001\u0000\u0000\u0000\u1a0d\u1a0e\u0001\u0000"+ + "\u0000\u0000\u1a0e\u1a10\u0001\u0000\u0000\u0000\u1a0f\u1a0d\u0001\u0000"+ + "\u0000\u0000\u1a10\u1a21\u0003\u055b\u02ab\u0000\u1a11\u1a21\b-\u0000"+ + "\u0000\u1a12\u1a14\u0005/\u0000\u0000\u1a13\u1a12\u0001\u0000\u0000\u0000"+ + "\u1a14\u1a15\u0001\u0000\u0000\u0000\u1a15\u1a13\u0001\u0000\u0000\u0000"+ + "\u1a15\u1a16\u0001\u0000\u0000\u0000\u1a16\u1a17\u0001\u0000\u0000\u0000"+ + "\u1a17\u1a1f\b-\u0000\u0000\u1a18\u1a1a\u0005*\u0000\u0000\u1a19\u1a18"+ + "\u0001\u0000\u0000\u0000\u1a1a\u1a1b\u0001\u0000\u0000\u0000\u1a1b\u1a19"+ + "\u0001\u0000\u0000\u0000\u1a1b\u1a1c\u0001\u0000\u0000\u0000\u1a1c\u1a1d"+ + "\u0001\u0000\u0000\u0000\u1a1d\u1a1f\b-\u0000\u0000\u1a1e\u1a13\u0001"+ + "\u0000\u0000\u0000\u1a1e\u1a19\u0001\u0000\u0000\u0000\u1a1f\u1a21\u0001"+ + "\u0000\u0000\u0000\u1a20\u1a0d\u0001\u0000\u0000\u0000\u1a20\u1a11\u0001"+ + "\u0000\u0000\u0000\u1a20\u1a1e\u0001\u0000\u0000\u0000\u1a21\u1a24\u0001"+ + "\u0000\u0000\u0000\u1a22\u1a20\u0001\u0000\u0000\u0000\u1a22\u1a23\u0001"+ + "\u0000\u0000\u0000\u1a23\u1a36\u0001\u0000\u0000\u0000\u1a24\u1a22\u0001"+ + "\u0000\u0000\u0000\u1a25\u1a27\u0005/\u0000\u0000\u1a26\u1a25\u0001\u0000"+ + "\u0000\u0000\u1a27\u1a28\u0001\u0000\u0000\u0000\u1a28\u1a26\u0001\u0000"+ + "\u0000\u0000\u1a28\u1a29\u0001\u0000\u0000\u0000\u1a29\u1a37\u0001\u0000"+ + "\u0000\u0000\u1a2a\u1a2c\u0005*\u0000\u0000\u1a2b\u1a2a\u0001\u0000\u0000"+ + "\u0000\u1a2c\u1a2d\u0001\u0000\u0000\u0000\u1a2d\u1a2b\u0001\u0000\u0000"+ + "\u0000\u1a2d\u1a2e\u0001\u0000\u0000\u0000\u1a2e\u1a37\u0001\u0000\u0000"+ + "\u0000\u1a2f\u1a31\u0005/\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\u1a35\u0001\u0000\u0000\u0000"+ + "\u1a34\u1a32\u0001\u0000\u0000\u0000\u1a35\u1a37\u0003\u055d\u02ac\u0000"+ + "\u1a36\u1a26\u0001\u0000\u0000\u0000\u1a36\u1a2b\u0001\u0000\u0000\u0000"+ + "\u1a36\u1a32\u0001\u0000\u0000\u0000\u1a36\u1a37\u0001\u0000\u0000\u0000"+ + "\u1a37\u1a38\u0001\u0000\u0000\u0000\u1a38\u1a39\u0006\u02ac\b\u0000\u1a39"+ + "\u055e\u0001\u0000\u0000\u0000\u1a3a\u1a46\u0005\\\u0000\u0000\u1a3b\u1a45"+ + "\b.\u0000\u0000\u1a3c\u1a40\u0005\"\u0000\u0000\u1a3d\u1a3f\b/\u0000\u0000"+ + "\u1a3e\u1a3d\u0001\u0000\u0000\u0000\u1a3f\u1a42\u0001\u0000\u0000\u0000"+ + "\u1a40\u1a3e\u0001\u0000\u0000\u0000\u1a40\u1a41\u0001\u0000\u0000\u0000"+ + "\u1a41\u1a43\u0001\u0000\u0000\u0000\u1a42\u1a40\u0001\u0000\u0000\u0000"+ + "\u1a43\u1a45\u0005\"\u0000\u0000\u1a44\u1a3b\u0001\u0000\u0000\u0000\u1a44"+ + "\u1a3c\u0001\u0000\u0000\u0000\u1a45\u1a48\u0001\u0000\u0000\u0000\u1a46"+ + "\u1a44\u0001\u0000\u0000\u0000\u1a46\u1a47\u0001\u0000\u0000\u0000\u1a47"+ + "\u1a50\u0001\u0000\u0000\u0000\u1a48\u1a46\u0001\u0000\u0000\u0000\u1a49"+ + "\u1a4d\u0005\"\u0000\u0000\u1a4a\u1a4c\b/\u0000\u0000\u1a4b\u1a4a\u0001"+ + "\u0000\u0000\u0000\u1a4c\u1a4f\u0001\u0000\u0000\u0000\u1a4d\u1a4b\u0001"+ + "\u0000\u0000\u0000\u1a4d\u1a4e\u0001\u0000\u0000\u0000\u1a4e\u1a51\u0001"+ + "\u0000\u0000\u0000\u1a4f\u1a4d\u0001\u0000\u0000\u0000\u1a50\u1a49\u0001"+ + "\u0000\u0000\u0000\u1a50\u1a51\u0001\u0000\u0000\u0000\u1a51\u0560\u0001"+ + "\u0000\u0000\u0000\u1a52\u1a53\u0005\\\u0000\u0000\u1a53\u1a54\u0005\\"+ + "\u0000\u0000\u1a54\u0562\u0001\u0000\u0000\u0000\u1a55\u1a56\t\u0000\u0000"+ + "\u0000\u1a56\u0564\u0001\u0000\u0000\u0000\u1a57\u1a58\u0003\u0569\u02b2"+ + "\u0000\u1a58\u1a59\u0005\'\u0000\u0000\u1a59\u1a5a\u0001\u0000\u0000\u0000"+ + "\u1a5a\u1a5b\u0006\u02b0\t\u0000\u1a5b\u0566\u0001\u0000\u0000\u0000\u1a5c"+ + "\u1a5e\u0003\u0569\u02b2\u0000\u1a5d\u1a5f\u0005\\\u0000\u0000\u1a5e\u1a5d"+ + "\u0001\u0000\u0000\u0000\u1a5e\u1a5f\u0001\u0000\u0000\u0000\u1a5f\u1a60"+ + "\u0001\u0000\u0000\u0000\u1a60\u1a61\u0005\u0000\u0000\u0001\u1a61\u0568"+ + "\u0001\u0000\u0000\u0000\u1a62\u1a63\u0005\'\u0000\u0000\u1a63\u1a7a\u0005"+ + "\'\u0000\u0000\u1a64\u1a76\u0005\\\u0000\u0000\u1a65\u1a66\u0005x\u0000"+ + "\u0000\u1a66\u1a77\u0007\'\u0000\u0000\u1a67\u1a68\u0005u\u0000\u0000"+ + "\u1a68\u1a69\u0007\'\u0000\u0000\u1a69\u1a6a\u0007\'\u0000\u0000\u1a6a"+ + "\u1a6b\u0007\'\u0000\u0000\u1a6b\u1a77\u0007\'\u0000\u0000\u1a6c\u1a6d"+ + "\u0005U\u0000\u0000\u1a6d\u1a6e\u0007\'\u0000\u0000\u1a6e\u1a6f\u0007"+ + "\'\u0000\u0000\u1a6f\u1a70\u0007\'\u0000\u0000\u1a70\u1a71\u0007\'\u0000"+ + "\u0000\u1a71\u1a72\u0007\'\u0000\u0000\u1a72\u1a73\u0007\'\u0000\u0000"+ + "\u1a73\u1a74\u0007\'\u0000\u0000\u1a74\u1a77\u0007\'\u0000\u0000\u1a75"+ + "\u1a77\b0\u0000\u0000\u1a76\u1a65\u0001\u0000\u0000\u0000\u1a76\u1a67"+ + "\u0001\u0000\u0000\u0000\u1a76\u1a6c\u0001\u0000\u0000\u0000\u1a76\u1a75"+ + "\u0001\u0000\u0000\u0000\u1a77\u1a7a\u0001\u0000\u0000\u0000\u1a78\u1a7a"+ + "\b1\u0000\u0000\u1a79\u1a62\u0001\u0000\u0000\u0000\u1a79\u1a64\u0001"+ + "\u0000\u0000\u0000\u1a79\u1a78\u0001\u0000\u0000\u0000\u1a7a\u1a7d\u0001"+ + "\u0000\u0000\u0000\u1a7b\u1a79\u0001\u0000\u0000\u0000\u1a7b\u1a7c\u0001"+ + "\u0000\u0000\u0000\u1a7c\u056a\u0001\u0000\u0000\u0000\u1a7d\u1a7b\u0001"+ + "\u0000\u0000\u0000\u1a7e\u1a7f\u0003\u056f\u02b5\u0000\u1a7f\u1a80\u0005"+ + "\'\u0000\u0000\u1a80\u1a81\u0001\u0000\u0000\u0000\u1a81\u1a82\u0006\u02b3"+ + "\t\u0000\u1a82\u056c\u0001\u0000\u0000\u0000\u1a83\u1a85\u0003\u056f\u02b5"+ + "\u0000\u1a84\u1a86\u0005\\\u0000\u0000\u1a85\u1a84\u0001\u0000\u0000\u0000"+ + "\u1a85\u1a86\u0001\u0000\u0000\u0000\u1a86\u1a87\u0001\u0000\u0000\u0000"+ + "\u1a87\u1a88\u0005\u0000\u0000\u0001\u1a88\u056e\u0001\u0000\u0000\u0000"+ + "\u1a89\u1a8a\u0005\'\u0000\u0000\u1a8a\u1a8f\u0005\'\u0000\u0000\u1a8b"+ + "\u1a8c\u0005\\\u0000\u0000\u1a8c\u1a8f\t\u0000\u0000\u0000\u1a8d\u1a8f"+ + "\b1\u0000\u0000\u1a8e\u1a89\u0001\u0000\u0000\u0000\u1a8e\u1a8b\u0001"+ + "\u0000\u0000\u0000\u1a8e\u1a8d\u0001\u0000\u0000\u0000\u1a8f\u1a92\u0001"+ + "\u0000\u0000\u0000\u1a90\u1a8e\u0001\u0000\u0000\u0000\u1a90\u1a91\u0001"+ + "\u0000\u0000\u0000\u1a91\u0570\u0001\u0000\u0000\u0000\u1a92\u1a90\u0001"+ + "\u0000\u0000\u0000\u1a93\u1a94\u0003\u0555\u02a8\u0000\u1a94\u1a95\u0001"+ + "\u0000\u0000\u0000\u1a95\u1a96\u0006\u02b6\n\u0000\u1a96\u1a97\u0006\u02b6"+ + "\u0007\u0000\u1a97\u0572\u0001\u0000\u0000\u0000\u1a98\u1a99\u0003\u0557"+ + "\u02a9\u0000\u1a99\u1a9a\u0001\u0000\u0000\u0000\u1a9a\u1a9b\u0006\u02b7"+ + "\u000b\u0000\u1a9b\u1a9c\u0006\u02b7\u0007\u0000\u1a9c\u1a9d\u0006\u02b7"+ + "\f\u0000\u1a9d\u0574\u0001\u0000\u0000\u0000\u1a9e\u1a9f\u0006\u02b8\r"+ + "\u0000\u1a9f\u1aa0\u0001\u0000\u0000\u0000\u1aa0\u1aa1\u0006\u02b8\u000e"+ + "\u0000\u1aa1\u1aa2\u0006\u02b8\u000f\u0000\u1aa2\u0576\u0001\u0000\u0000"+ + "\u0000\u1aa3\u1aa4\u0003\u0555\u02a8\u0000\u1aa4\u1aa5\u0001\u0000\u0000"+ + "\u0000\u1aa5\u1aa6\u0006\u02b9\n\u0000\u1aa6\u1aa7\u0006\u02b9\u0007\u0000"+ + "\u1aa7\u0578\u0001\u0000\u0000\u0000\u1aa8\u1aa9\u0003\u0557\u02a9\u0000"+ + "\u1aa9\u1aaa\u0001\u0000\u0000\u0000\u1aaa\u1aab\u0006\u02ba\u000b\u0000"+ + "\u1aab\u1aac\u0006\u02ba\u0007\u0000\u1aac\u057a\u0001\u0000\u0000\u0000"+ + "\u1aad\u1aae\u0005\'\u0000\u0000\u1aae\u1aaf\u0001\u0000\u0000\u0000\u1aaf"+ + "\u1ab0\u0006\u02bb\u0002\u0000\u1ab0\u1ab1\u0006\u02bb\u0010\u0000\u1ab1"+ + "\u057c\u0001\u0000\u0000\u0000\u1ab2\u1ab3\u0006\u02bc\u0011\u0000\u1ab3"+ + "\u1ab4\u0001\u0000\u0000\u0000\u1ab4\u1ab5\u0006\u02bc\u000e\u0000\u1ab5"+ + "\u1ab6\u0006\u02bc\u000f\u0000\u1ab6\u057e\u0001\u0000\u0000\u0000\u1ab7"+ + "\u1ab9\b2\u0000\u0000\u1ab8\u1ab7\u0001\u0000\u0000\u0000\u1ab9\u1aba"+ + "\u0001\u0000\u0000\u0000\u1aba\u1ab8\u0001\u0000\u0000\u0000\u1aba\u1abb"+ + "\u0001\u0000\u0000\u0000\u1abb\u1ac4\u0001\u0000\u0000\u0000\u1abc\u1ac0"+ + "\u0005$\u0000\u0000\u1abd\u1abf\b2\u0000\u0000\u1abe\u1abd\u0001\u0000"+ + "\u0000\u0000\u1abf\u1ac2\u0001\u0000\u0000\u0000\u1ac0\u1abe\u0001\u0000"+ + "\u0000\u0000\u1ac0\u1ac1\u0001\u0000\u0000\u0000\u1ac1\u1ac4\u0001\u0000"+ + "\u0000\u0000\u1ac2\u1ac0\u0001\u0000\u0000\u0000\u1ac3\u1ab8\u0001\u0000"+ + "\u0000\u0000\u1ac3\u1abc\u0001\u0000\u0000\u0000\u1ac4\u0580\u0001\u0000"+ + "\u0000\u0000\u1ac5\u1ac7\u0005$\u0000\u0000\u1ac6\u1ac8\u0003\u0537\u0299"+ + "\u0000\u1ac7\u1ac6\u0001\u0000\u0000\u0000\u1ac7\u1ac8\u0001\u0000\u0000"+ + "\u0000\u1ac8\u1ac9\u0001\u0000\u0000\u0000\u1ac9\u1aca\u0005$\u0000\u0000"+ + "\u1aca\u1acb\u0001\u0000\u0000\u0000\u1acb\u1acc\u0004\u02be\b\u0000\u1acc"+ + "\u1acd\u0006\u02be\u0012\u0000\u1acd\u1ace\u0001\u0000\u0000\u0000\u1ace"+ + "\u1acf\u0006\u02be\u000f\u0000\u1acf\u0582\u0001\u0000\u0000\u0000N\u0000"+ + "\u0001\u0002\u0003\u0004\u05c6\u05cc\u05ce\u05d3\u05d7\u05d9\u05dc\u05e5"+ + "\u05e7\u05ec\u05f1\u05f3\u18fd\u1906\u190a\u190e\u1917\u1919\u1923\u1925"+ + "\u193f\u1941\u1953\u195e\u1969\u197a\u198e\u1992\u1995\u199b\u199e\u19a3"+ + "\u19a7\u19ac\u19b3\u19be\u19c0\u19c8\u19ce\u19d1\u19db\u19e6\u19ee\u19f4"+ + "\u19f7\u19f9\u19ff\u1a0d\u1a15\u1a1b\u1a1e\u1a20\u1a22\u1a28\u1a2d\u1a32"+ + "\u1a36\u1a40\u1a44\u1a46\u1a4d\u1a50\u1a5e\u1a76\u1a79\u1a7b\u1a85\u1a8e"+ + "\u1a90\u1aba\u1ac0\u1ac3\u1ac7\u0013\u0001\u001c\u0000\u0007\u001d\u0000"+ + "\u0003\u0000\u0000\u0005\u0001\u0000\u0001\u0298\u0001\u0005\u0004\u0000"+ + "\u0001\u02a3\u0002\u0000\u0001\u0000\u0001\u02ac\u0003\u0002\u0002\u0000"+ + "\u0007\u029f\u0000\u0007\u02a0\u0000\u0002\u0003\u0000\u0001\u02b8\u0004"+ + "\u0006\u0000\u0000\u0004\u0000\u0000\u0002\u0001\u0000\u0001\u02bc\u0005"+ + "\u0001\u02be\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/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.tokens b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.tokens new file mode 100644 index 0000000000..e6fcd4ebae --- /dev/null +++ b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.tokens @@ -0,0 +1,1330 @@ +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 +ZTABLE=93 +THEN=94 +TO=95 +DESCRIBE=96 +TOPIC=97 +TOPICS=98 +STREAM=99 +ZVIEW=100 +ZVIEWS=101 +TRAILING=102 +TRUE_P=103 +UNION=104 +UNIQUE=105 +USER=106 +USING=107 +VARIADIC=108 +WHEN=109 +WHERE=110 +WINDOW=111 +WITH=112 +AUTHORIZATION=113 +BINARY=114 +COLLATION=115 +CONCURRENTLY=116 +CROSS=117 +CURRENT_SCHEMA=118 +FREEZE=119 +FULL=120 +ILIKE=121 +INNER_P=122 +IS=123 +ISNULL=124 +JOIN=125 +LEFT=126 +LIKE=127 +NATURAL=128 +NOTNULL=129 +OUTER_P=130 +OVER=131 +OVERLAPS=132 +RIGHT=133 +SIMILAR=134 +VERBOSE=135 +ABORT_P=136 +ABSOLUTE_P=137 +ACCESS=138 +ACTION=139 +ADD_P=140 +ADMIN=141 +AFTER=142 +AGGREGATE=143 +ALSO=144 +ALTER=145 +ALWAYS=146 +ASSERTION=147 +ASSIGNMENT=148 +AT=149 +ATTRIBUTE=150 +BACKWARD=151 +BEFORE=152 +BEGIN_P=153 +BY=154 +CACHE=155 +CALLED=156 +CASCADE=157 +CASCADED=158 +CATALOG=159 +CHAIN=160 +CHARACTERISTICS=161 +CHECKPOINT=162 +CLASS=163 +CLOSE=164 +CLUSTER=165 +COMMENT=166 +COMMENTS=167 +COMMIT=168 +COMMITTED=169 +CONFIGURATION=170 +CONNECTION=171 +CONSTRAINTS=172 +CONTENT_P=173 +CONTINUE_P=174 +CONVERSION_P=175 +COPY=176 +COST=177 +CSV=178 +CURSOR=179 +CYCLE=180 +DATA_P=181 +DATABASE=182 +DAY_P=183 +DEALLOCATE=184 +DECLARE=185 +DEFAULTS=186 +DEFERRED=187 +DEFINER=188 +DELETE_P=189 +DELIMITER=190 +DELIMITERS=191 +DICTIONARY=192 +DISABLE_P=193 +DISCARD=194 +DOCUMENT_P=195 +DOMAIN_P=196 +DOUBLE_P=197 +DROP=198 +EACH=199 +ENABLE_P=200 +ENCODING=201 +ENCRYPTED=202 +ENUM_P=203 +ESCAPE=204 +EVENT=205 +EXCLUDE=206 +EXCLUDING=207 +EXCLUSIVE=208 +EXECUTE=209 +EXPLAIN=210 +EXTENSION=211 +EXTERNAL=212 +FAMILY=213 +FIRST_P=214 +FOLLOWING=215 +FORCE=216 +FORWARD=217 +FUNCTION=218 +FUNCTIONS=219 +GLOBAL=220 +GRANTED=221 +HANDLER=222 +HEADER_P=223 +HOLD=224 +HOUR_P=225 +IDENTITY_P=226 +IF_P=227 +IMMEDIATE=228 +IMMUTABLE=229 +IMPLICIT_P=230 +INCLUDING=231 +INCREMENT=232 +INDEX=233 +INDEXES=234 +INHERIT=235 +INHERITS=236 +INLINE_P=237 +INSENSITIVE=238 +INSERT=239 +INSTEAD=240 +INVOKER=241 +ISOLATION=242 +KEY=243 +LABEL=244 +LANGUAGE=245 +LARGE_P=246 +LAST_P=247 +LEAKPROOF=248 +LEVEL=249 +LISTEN=250 +LOAD=251 +LOCAL=252 +LOCATION=253 +LOCK_P=254 +MAPPING=255 +MATCH=256 +MATCHED=257 +MATERIALIZED=258 +MAXVALUE=259 +MERGE=260 +MINUTE_P=261 +MINVALUE=262 +MODE=263 +MONTH_P=264 +MOVE=265 +NAME_P=266 +NAMES=267 +NEXT=268 +NO=269 +NOTHING=270 +NOTIFY=271 +NOWAIT=272 +NULLS_P=273 +OBJECT_P=274 +OF=275 +OFF=276 +OIDS=277 +OPERATOR=278 +OPTION=279 +OPTIONS=280 +OWNED=281 +OWNER=282 +PARSER=283 +PARTIAL=284 +PARTITION=285 +PASSING=286 +PASSWORD=287 +PLANS=288 +PRECEDING=289 +PREPARE=290 +PREPARED=291 +PRESERVE=292 +PRIOR=293 +PRIVILEGES=294 +PROCEDURAL=295 +PROCEDURE=296 +PROGRAM=297 +QUOTE=298 +RANGE=299 +READ=300 +REASSIGN=301 +RECHECK=302 +RECURSIVE=303 +REF=304 +REFRESH=305 +REINDEX=306 +RELATIVE_P=307 +RELEASE=308 +RENAME=309 +REPEATABLE=310 +REPLACE=311 +REPLICA=312 +RESET=313 +RESTART=314 +RESTRICT=315 +RETURNS=316 +REVOKE=317 +ROLE=318 +ROLLBACK=319 +ROWS=320 +RULE=321 +SAVEPOINT=322 +SCHEMA=323 +SCROLL=324 +SEARCH=325 +SECOND_P=326 +SECURITY=327 +SEQUENCE=328 +SEQUENCES=329 +SERIALIZABLE=330 +SERVER=331 +SESSION=332 +SET=333 +SHARE=334 +SHOW=335 +SIMPLE=336 +SNAPSHOT=337 +STABLE=338 +STANDALONE_P=339 +START=340 +STATEMENT=341 +STATISTICS=342 +STDIN=343 +STDOUT=344 +STORAGE=345 +STRICT_P=346 +STRIP_P=347 +SYSID=348 +SYSTEM_P=349 +TABLES=350 +ZTABLES=351 +TABLESPACE=352 +TEMP=353 +TEMPLATE=354 +TEMPORARY=355 +TEXT_P=356 +TRANSACTION=357 +TRIGGER=358 +TRUNCATE=359 +TRUSTED=360 +TYPE_P=361 +TYPES_P=362 +UNBOUNDED=363 +UNCOMMITTED=364 +UNENCRYPTED=365 +UNKNOWN=366 +UNLISTEN=367 +UNLOGGED=368 +UNTIL=369 +UPDATE=370 +VACUUM=371 +VALID=372 +VALIDATE=373 +VALIDATOR=374 +VARYING=375 +VERSION_P=376 +VIEW=377 +VOLATILE=378 +WHITESPACE_P=379 +WITHOUT=380 +WORK=381 +WRAPPER=382 +WRITE=383 +XML_P=384 +YEAR_P=385 +YES_P=386 +ZONE=387 +BETWEEN=388 +BIGINT=389 +BIT=390 +BOOLEAN_P=391 +CHAR_P=392 +CHARACTER=393 +COALESCE=394 +DEC=395 +DECIMAL_P=396 +EXISTS=397 +EXTRACT=398 +FLOAT_P=399 +GREATEST=400 +INOUT=401 +INT_P=402 +INTEGER=403 +INTERVAL=404 +LEAST=405 +NATIONAL=406 +NCHAR=407 +NONE=408 +NULLIF=409 +NUMERIC=410 +OVERLAY=411 +POSITION=412 +PRECISION=413 +REAL=414 +ROW=415 +SETOF=416 +SMALLINT=417 +SUBSTRING=418 +TIME=419 +TIMESTAMP=420 +TREAT=421 +TRIM=422 +VALUES=423 +VARCHAR=424 +XMLATTRIBUTES=425 +XMLCOMMENT=426 +XMLAGG=427 +XML_IS_WELL_FORMED=428 +XML_IS_WELL_FORMED_DOCUMENT=429 +XML_IS_WELL_FORMED_CONTENT=430 +XPATH=431 +XPATH_EXISTS=432 +XMLCONCAT=433 +XMLELEMENT=434 +XMLEXISTS=435 +XMLFOREST=436 +XMLPARSE=437 +XMLPI=438 +XMLROOT=439 +XMLSERIALIZE=440 +CALL=441 +CURRENT_P=442 +ATTACH=443 +DETACH=444 +EXPRESSION=445 +GENERATED=446 +LOGGED=447 +STORED=448 +INCLUDE=449 +ROUTINE=450 +TRANSFORM=451 +IMPORT_P=452 +POLICY=453 +METHOD=454 +REFERENCING=455 +NEW=456 +OLD=457 +VALUE_P=458 +SUBSCRIPTION=459 +PUBLICATION=460 +OUT_P=461 +END_P=462 +ROUTINES=463 +SCHEMAS=464 +PROCEDURES=465 +INPUT_P=466 +SUPPORT=467 +PARALLEL=468 +SQL_P=469 +DEPENDS=470 +OVERRIDING=471 +CONFLICT=472 +SKIP_P=473 +LOCKED=474 +TIES=475 +ROLLUP=476 +CUBE=477 +GROUPING=478 +SETS=479 +TABLESAMPLE=480 +ORDINALITY=481 +XMLTABLE=482 +COLUMNS=483 +XMLNAMESPACES=484 +ROWTYPE=485 +NORMALIZED=486 +WITHIN=487 +FILTER=488 +GROUPS=489 +OTHERS=490 +NFC=491 +NFD=492 +NFKC=493 +NFKD=494 +UESCAPE=495 +VIEWS=496 +NORMALIZE=497 +DUMP=498 +PRINT_STRICT_PARAMS=499 +VARIABLE_CONFLICT=500 +ERROR=501 +USE_VARIABLE=502 +USE_COLUMN=503 +ALIAS=504 +CONSTANT=505 +PERFORM=506 +GET=507 +DIAGNOSTICS=508 +STACKED=509 +ELSIF=510 +WHILE=511 +REVERSE=512 +FOREACH=513 +SLICE=514 +EXIT=515 +RETURN=516 +QUERY=517 +RAISE=518 +SQLSTATE=519 +DEBUG=520 +LOG=521 +INFO=522 +NOTICE=523 +WARNING=524 +EXCEPTION=525 +ASSERT=526 +LOOP=527 +OPEN=528 +ABS=529 +CBRT=530 +CEIL=531 +CEILING=532 +DEGREES=533 +DIV=534 +EXP=535 +FACTORIAL=536 +FLOOR=537 +GCD=538 +LCM=539 +LN=540 +LOG10=541 +MIN_SCALE=542 +MOD=543 +PI=544 +POWER=545 +RADIANS=546 +ROUND=547 +SCALE=548 +SIGN=549 +SQRT=550 +TRIM_SCALE=551 +TRUNC=552 +WIDTH_BUCKET=553 +RANDOM=554 +SETSEED=555 +ACOS=556 +ACOSD=557 +ASIN=558 +ASIND=559 +ATAN=560 +ATAND=561 +ATAN2=562 +ATAN2D=563 +COS=564 +COSD=565 +COT=566 +COTD=567 +SIN=568 +SIND=569 +TAN=570 +TAND=571 +SINH=572 +COSH=573 +TANH=574 +ASINH=575 +ACOSH=576 +ATANH=577 +BIT_LENGTH=578 +CHAR_LENGTH=579 +CHARACTER_LENGTH=580 +LOWER=581 +OCTET_LENGTH=582 +UPPER=583 +ASCII=584 +BTRIM=585 +CHR=586 +CONCAT=587 +CONCAT_WS=588 +FORMAT=589 +INITCAP=590 +LENGTH=591 +LPAD=592 +LTRIM=593 +MD5=594 +PARSE_IDENT=595 +PG_CLIENT_ENCODING=596 +QUOTE_IDENT=597 +QUOTE_LITERAL=598 +QUOTE_NULLABLE=599 +REGEXP_COUNT=600 +REGEXP_INSTR=601 +REGEXP_LIKE=602 +REGEXP_MATCH=603 +REGEXP_MATCHES=604 +REGEXP_REPLACE=605 +REGEXP_SPLIT_TO_ARRAY=606 +REGEXP_SPLIT_TO_TABLE=607 +REGEXP_SUBSTR=608 +REPEAT=609 +RPAD=610 +RTRIM=611 +SPLIT_PART=612 +STARTS_WITH=613 +STRING_TO_ARRAY=614 +STRING_TO_TABLE=615 +STRPOS=616 +SUBSTR=617 +TO_ASCII=618 +TO_HEX=619 +TRANSLATE=620 +UNISTR=621 +AGE=622 +CLOCK_TIMESTAMP=623 +DATE_BIN=624 +DATE_PART=625 +DATE_TRUNC=626 +ISFINITE=627 +JUSTIFY_DAYS=628 +JUSTIFY_HOURS=629 +JUSTIFY_INTERVAL=630 +MAKE_DATE=631 +MAKE_INTERVAL=632 +MAKE_TIME=633 +MAKE_TIMESTAMP=634 +MAKE_TIMESTAMPTZ=635 +NOW=636 +STATEMENT_TIMESTAMP=637 +TIMEOFDAY=638 +TRANSACTION_TIMESTAMP=639 +TO_TIMESTAMP=640 +TO_CHAR=641 +TO_DATE=642 +TO_NUMBER=643 +Identifier=644 +QuotedIdentifier=645 +UnterminatedQuotedIdentifier=646 +InvalidQuotedIdentifier=647 +InvalidUnterminatedQuotedIdentifier=648 +UnicodeQuotedIdentifier=649 +UnterminatedUnicodeQuotedIdentifier=650 +InvalidUnicodeQuotedIdentifier=651 +InvalidUnterminatedUnicodeQuotedIdentifier=652 +StringConstant=653 +UnterminatedStringConstant=654 +UnicodeEscapeStringConstant=655 +UnterminatedUnicodeEscapeStringConstant=656 +BeginDollarStringConstant=657 +BinaryStringConstant=658 +UnterminatedBinaryStringConstant=659 +InvalidBinaryStringConstant=660 +InvalidUnterminatedBinaryStringConstant=661 +HexadecimalStringConstant=662 +UnterminatedHexadecimalStringConstant=663 +InvalidHexadecimalStringConstant=664 +InvalidUnterminatedHexadecimalStringConstant=665 +Integral=666 +NumericFail=667 +Numeric=668 +PLSQLVARIABLENAME=669 +PLSQLIDENTIFIER=670 +Whitespace=671 +Newline=672 +LineComment=673 +BlockComment=674 +UnterminatedBlockComment=675 +MetaCommand=676 +EndMetaCommand=677 +ErrorCharacter=678 +EscapeStringConstant=679 +UnterminatedEscapeStringConstant=680 +InvalidEscapeStringConstant=681 +InvalidUnterminatedEscapeStringConstant=682 +AfterEscapeStringConstantMode_NotContinued=683 +AfterEscapeStringConstantWithNewlineMode_NotContinued=684 +DollarText=685 +EndDollarStringConstant=686 +AfterEscapeStringConstantWithNewlineMode_Continued=687 +'$'=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 +'ZTABLE'=93 +'THEN'=94 +'TO'=95 +'DESCRIBE'=96 +'TOPIC'=97 +'TOPICS'=98 +'STREAM'=99 +'ZVIEW'=100 +'ZVIEWS'=101 +'TRAILING'=102 +'TRUE'=103 +'UNION'=104 +'UNIQUE'=105 +'USER'=106 +'USING'=107 +'VARIADIC'=108 +'WHEN'=109 +'WHERE'=110 +'WINDOW'=111 +'WITH'=112 +'AUTHORIZATION'=113 +'BINARY'=114 +'COLLATION'=115 +'CONCURRENTLY'=116 +'CROSS'=117 +'CURRENT_SCHEMA'=118 +'FREEZE'=119 +'FULL'=120 +'ILIKE'=121 +'INNER'=122 +'IS'=123 +'ISNULL'=124 +'JOIN'=125 +'LEFT'=126 +'LIKE'=127 +'NATURAL'=128 +'NOTNULL'=129 +'OUTER'=130 +'OVER'=131 +'OVERLAPS'=132 +'RIGHT'=133 +'SIMILAR'=134 +'VERBOSE'=135 +'ABORT'=136 +'ABSOLUTE'=137 +'ACCESS'=138 +'ACTION'=139 +'ADD'=140 +'ADMIN'=141 +'AFTER'=142 +'AGGREGATE'=143 +'ALSO'=144 +'ALTER'=145 +'ALWAYS'=146 +'ASSERTION'=147 +'ASSIGNMENT'=148 +'AT'=149 +'ATTRIBUTE'=150 +'BACKWARD'=151 +'BEFORE'=152 +'BEGIN'=153 +'BY'=154 +'CACHE'=155 +'CALLED'=156 +'CASCADE'=157 +'CASCADED'=158 +'CATALOG'=159 +'CHAIN'=160 +'CHARACTERISTICS'=161 +'CHECKPOINT'=162 +'CLASS'=163 +'CLOSE'=164 +'CLUSTER'=165 +'COMMENT'=166 +'COMMENTS'=167 +'COMMIT'=168 +'COMMITTED'=169 +'CONFIGURATION'=170 +'CONNECTION'=171 +'CONSTRAINTS'=172 +'CONTENT'=173 +'CONTINUE'=174 +'CONVERSION'=175 +'COPY'=176 +'COST'=177 +'CSV'=178 +'CURSOR'=179 +'CYCLE'=180 +'DATA'=181 +'DATABASE'=182 +'DAY'=183 +'DEALLOCATE'=184 +'DECLARE'=185 +'DEFAULTS'=186 +'DEFERRED'=187 +'DEFINER'=188 +'DELETE'=189 +'DELIMITER'=190 +'DELIMITERS'=191 +'DICTIONARY'=192 +'DISABLE'=193 +'DISCARD'=194 +'DOCUMENT'=195 +'DOMAIN'=196 +'DOUBLE'=197 +'DROP'=198 +'EACH'=199 +'ENABLE'=200 +'ENCODING'=201 +'ENCRYPTED'=202 +'ENUM'=203 +'ESCAPE'=204 +'EVENT'=205 +'EXCLUDE'=206 +'EXCLUDING'=207 +'EXCLUSIVE'=208 +'EXECUTE'=209 +'EXPLAIN'=210 +'EXTENSION'=211 +'EXTERNAL'=212 +'FAMILY'=213 +'FIRST'=214 +'FOLLOWING'=215 +'FORCE'=216 +'FORWARD'=217 +'FUNCTION'=218 +'FUNCTIONS'=219 +'GLOBAL'=220 +'GRANTED'=221 +'HANDLER'=222 +'HEADER'=223 +'HOLD'=224 +'HOUR'=225 +'IDENTITY'=226 +'IF'=227 +'IMMEDIATE'=228 +'IMMUTABLE'=229 +'IMPLICIT'=230 +'INCLUDING'=231 +'INCREMENT'=232 +'INDEX'=233 +'INDEXES'=234 +'INHERIT'=235 +'INHERITS'=236 +'INLINE'=237 +'INSENSITIVE'=238 +'INSERT'=239 +'INSTEAD'=240 +'INVOKER'=241 +'ISOLATION'=242 +'KEY'=243 +'LABEL'=244 +'LANGUAGE'=245 +'LARGE'=246 +'LAST'=247 +'LEAKPROOF'=248 +'LEVEL'=249 +'LISTEN'=250 +'LOAD'=251 +'LOCAL'=252 +'LOCATION'=253 +'LOCK'=254 +'MAPPING'=255 +'MATCH'=256 +'MATCHED'=257 +'MATERIALIZED'=258 +'MAXVALUE'=259 +'MERGE'=260 +'MINUTE'=261 +'MINVALUE'=262 +'MODE'=263 +'MONTH'=264 +'MOVE'=265 +'NAME'=266 +'NAMES'=267 +'NEXT'=268 +'NO'=269 +'NOTHING'=270 +'NOTIFY'=271 +'NOWAIT'=272 +'NULLS'=273 +'OBJECT'=274 +'OF'=275 +'OFF'=276 +'OIDS'=277 +'OPERATOR'=278 +'OPTION'=279 +'OPTIONS'=280 +'OWNED'=281 +'OWNER'=282 +'PARSER'=283 +'PARTIAL'=284 +'PARTITION'=285 +'PASSING'=286 +'PASSWORD'=287 +'PLANS'=288 +'PRECEDING'=289 +'PREPARE'=290 +'PREPARED'=291 +'PRESERVE'=292 +'PRIOR'=293 +'PRIVILEGES'=294 +'PROCEDURAL'=295 +'PROCEDURE'=296 +'PROGRAM'=297 +'QUOTE'=298 +'RANGE'=299 +'READ'=300 +'REASSIGN'=301 +'RECHECK'=302 +'RECURSIVE'=303 +'REF'=304 +'REFRESH'=305 +'REINDEX'=306 +'RELATIVE'=307 +'RELEASE'=308 +'RENAME'=309 +'REPEATABLE'=310 +'REPLACE'=311 +'REPLICA'=312 +'RESET'=313 +'RESTART'=314 +'RESTRICT'=315 +'RETURNS'=316 +'REVOKE'=317 +'ROLE'=318 +'ROLLBACK'=319 +'ROWS'=320 +'RULE'=321 +'SAVEPOINT'=322 +'SCHEMA'=323 +'SCROLL'=324 +'SEARCH'=325 +'SECOND'=326 +'SECURITY'=327 +'SEQUENCE'=328 +'SEQUENCES'=329 +'SERIALIZABLE'=330 +'SERVER'=331 +'SESSION'=332 +'SET'=333 +'SHARE'=334 +'SHOW'=335 +'SIMPLE'=336 +'SNAPSHOT'=337 +'STABLE'=338 +'STANDALONE'=339 +'START'=340 +'STATEMENT'=341 +'STATISTICS'=342 +'STDIN'=343 +'STDOUT'=344 +'STORAGE'=345 +'STRICT'=346 +'STRIP'=347 +'SYSID'=348 +'SYSTEM'=349 +'TABLES'=350 +'ZTABLES'=351 +'TABLESPACE'=352 +'TEMP'=353 +'TEMPLATE'=354 +'TEMPORARY'=355 +'TEXT'=356 +'TRANSACTION'=357 +'TRIGGER'=358 +'TRUNCATE'=359 +'TRUSTED'=360 +'TYPE'=361 +'TYPES'=362 +'UNBOUNDED'=363 +'UNCOMMITTED'=364 +'UNENCRYPTED'=365 +'UNKNOWN'=366 +'UNLISTEN'=367 +'UNLOGGED'=368 +'UNTIL'=369 +'UPDATE'=370 +'VACUUM'=371 +'VALID'=372 +'VALIDATE'=373 +'VALIDATOR'=374 +'VARYING'=375 +'VERSION'=376 +'VIEW'=377 +'VOLATILE'=378 +'WHITESPACE'=379 +'WITHOUT'=380 +'WORK'=381 +'WRAPPER'=382 +'WRITE'=383 +'XML'=384 +'YEAR'=385 +'YES'=386 +'ZONE'=387 +'BETWEEN'=388 +'BIGINT'=389 +'BIT'=390 +'BOOLEAN'=391 +'CHAR'=392 +'CHARACTER'=393 +'COALESCE'=394 +'DEC'=395 +'DECIMAL'=396 +'EXISTS'=397 +'EXTRACT'=398 +'FLOAT'=399 +'GREATEST'=400 +'INOUT'=401 +'INT'=402 +'INTEGER'=403 +'INTERVAL'=404 +'LEAST'=405 +'NATIONAL'=406 +'NCHAR'=407 +'NONE'=408 +'NULLIF'=409 +'NUMERIC'=410 +'OVERLAY'=411 +'POSITION'=412 +'PRECISION'=413 +'REAL'=414 +'ROW'=415 +'SETOF'=416 +'SMALLINT'=417 +'SUBSTRING'=418 +'TIME'=419 +'TIMESTAMP'=420 +'TREAT'=421 +'TRIM'=422 +'VALUES'=423 +'VARCHAR'=424 +'XMLATTRIBUTES'=425 +'XMLCOMMENT'=426 +'XMLAGG'=427 +'XML_IS_WELL_FORMED'=428 +'XML_IS_WELL_FORMED_DOCUMENT'=429 +'XML_IS_WELL_FORMED_CONTENT'=430 +'XPATH'=431 +'XPATH_EXISTS'=432 +'XMLCONCAT'=433 +'XMLELEMENT'=434 +'XMLEXISTS'=435 +'XMLFOREST'=436 +'XMLPARSE'=437 +'XMLPI'=438 +'XMLROOT'=439 +'XMLSERIALIZE'=440 +'CALL'=441 +'CURRENT'=442 +'ATTACH'=443 +'DETACH'=444 +'EXPRESSION'=445 +'GENERATED'=446 +'LOGGED'=447 +'STORED'=448 +'INCLUDE'=449 +'ROUTINE'=450 +'TRANSFORM'=451 +'IMPORT'=452 +'POLICY'=453 +'METHOD'=454 +'REFERENCING'=455 +'NEW'=456 +'OLD'=457 +'VALUE'=458 +'SUBSCRIPTION'=459 +'PUBLICATION'=460 +'OUT'=461 +'END'=462 +'ROUTINES'=463 +'SCHEMAS'=464 +'PROCEDURES'=465 +'INPUT'=466 +'SUPPORT'=467 +'PARALLEL'=468 +'SQL'=469 +'DEPENDS'=470 +'OVERRIDING'=471 +'CONFLICT'=472 +'SKIP'=473 +'LOCKED'=474 +'TIES'=475 +'ROLLUP'=476 +'CUBE'=477 +'GROUPING'=478 +'SETS'=479 +'TABLESAMPLE'=480 +'ORDINALITY'=481 +'XMLTABLE'=482 +'COLUMNS'=483 +'XMLNAMESPACES'=484 +'ROWTYPE'=485 +'NORMALIZED'=486 +'WITHIN'=487 +'FILTER'=488 +'GROUPS'=489 +'OTHERS'=490 +'NFC'=491 +'NFD'=492 +'NFKC'=493 +'NFKD'=494 +'UESCAPE'=495 +'VIEWS'=496 +'NORMALIZE'=497 +'DUMP'=498 +'PRINT_STRICT_PARAMS'=499 +'VARIABLE_CONFLICT'=500 +'ERROR'=501 +'USE_VARIABLE'=502 +'USE_COLUMN'=503 +'ALIAS'=504 +'CONSTANT'=505 +'PERFORM'=506 +'GET'=507 +'DIAGNOSTICS'=508 +'STACKED'=509 +'ELSIF'=510 +'WHILE'=511 +'REVERSE'=512 +'FOREACH'=513 +'SLICE'=514 +'EXIT'=515 +'RETURN'=516 +'QUERY'=517 +'RAISE'=518 +'SQLSTATE'=519 +'DEBUG'=520 +'LOG'=521 +'INFO'=522 +'NOTICE'=523 +'WARNING'=524 +'EXCEPTION'=525 +'ASSERT'=526 +'LOOP'=527 +'OPEN'=528 +'ABS'=529 +'CBRT'=530 +'CEIL'=531 +'CEILING'=532 +'DEGREES'=533 +'DIV'=534 +'EXP'=535 +'FACTORIAL'=536 +'FLOOR'=537 +'GCD'=538 +'LCM'=539 +'LN'=540 +'LOG10'=541 +'MIN_SCALE'=542 +'MOD'=543 +'PI'=544 +'POWER'=545 +'RADIANS'=546 +'ROUND'=547 +'SCALE'=548 +'SIGN'=549 +'SQRT'=550 +'TRIM_SCALE'=551 +'TRUNC'=552 +'WIDTH_BUCKET'=553 +'RANDOM'=554 +'SETSEED'=555 +'ACOS'=556 +'ACOSD'=557 +'ASIN'=558 +'ASIND'=559 +'ATAN'=560 +'ATAND'=561 +'ATAN2'=562 +'ATAN2D'=563 +'COS'=564 +'COSD'=565 +'COT'=566 +'COTD'=567 +'SIN'=568 +'SIND'=569 +'TAN'=570 +'TAND'=571 +'SINH'=572 +'COSH'=573 +'TANH'=574 +'ASINH'=575 +'ACOSH'=576 +'ATANH'=577 +'BIT_LENGTH'=578 +'CHAR_LENGTH'=579 +'CHARACTER_LENGTH'=580 +'LOWER'=581 +'OCTET_LENGTH'=582 +'UPPER'=583 +'ASCII'=584 +'BTRIM'=585 +'CHR'=586 +'CONCAT'=587 +'CONCAT_WS'=588 +'FORMAT'=589 +'INITCAP'=590 +'LENGTH'=591 +'LPAD'=592 +'LTRIM'=593 +'MD5'=594 +'PARSE_IDENT'=595 +'PG_CLIENT_ENCODING'=596 +'QUOTE_IDENT'=597 +'QUOTE_LITERAL'=598 +'QUOTE_NULLABLE'=599 +'REGEXP_COUNT'=600 +'REGEXP_INSTR'=601 +'REGEXP_LIKE'=602 +'REGEXP_MATCH'=603 +'REGEXP_MATCHES'=604 +'REGEXP_REPLACE'=605 +'REGEXP_SPLIT_TO_ARRAY'=606 +'REGEXP_SPLIT_TO_TABLE'=607 +'REGEXP_SUBSTR'=608 +'REPEAT'=609 +'RPAD'=610 +'RTRIM'=611 +'SPLIT_PART'=612 +'STARTS_WITH'=613 +'STRING_TO_ARRAY'=614 +'STRING_TO_TABLE'=615 +'STRPOS'=616 +'SUBSTR'=617 +'TO_ASCII'=618 +'TO_HEX'=619 +'TRANSLATE'=620 +'UNISTR'=621 +'AGE'=622 +'CLOCK_TIMESTAMP'=623 +'DATE_BIN'=624 +'DATE_PART'=625 +'DATE_TRUNC'=626 +'ISFINITE'=627 +'JUSTIFY_DAYS'=628 +'JUSTIFY_HOURS'=629 +'JUSTIFY_INTERVAL'=630 +'MAKE_DATE'=631 +'MAKE_INTERVAL'=632 +'MAKE_TIME'=633 +'MAKE_TIMESTAMP'=634 +'MAKE_TIMESTAMPTZ'=635 +'NOW'=636 +'STATEMENT_TIMESTAMP'=637 +'TIMEOFDAY'=638 +'TRANSACTION_TIMESTAMP'=639 +'TO_TIMESTAMP'=640 +'TO_CHAR'=641 +'TO_DATE'=642 +'TO_NUMBER'=643 +'\\\\'=677 +'\''=687 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 d94217b133..a0de4ccbda 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 @@ -27,7 +27,7 @@ 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.SqlCreateStreamListener; -import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateTableTopicListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateZtableTopicListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateZviewListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlDropListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlShowListener; @@ -47,7 +47,7 @@ public final class PgsqlParser private final PostgreSqlParser parser; private final SqlCommandListener commandListener; private final SqlCreateStreamListener createStreamListener; - private final SqlCreateTableTopicListener createTableListener; + private final SqlCreateZtableTopicListener createTableListener; private final SqlAlterTableTopicListener alterTableListener; private final SqlAlterStreamTopicListener alterStreamListener; private final SqlCreateFunctionListener createFunctionListener; @@ -63,7 +63,7 @@ public PgsqlParser() this.tokens = new CommonTokenStream(lexer); this.parser = new PostgreSqlParser(tokens); this.commandListener = new SqlCommandListener(tokens); - this.createTableListener = new SqlCreateTableTopicListener(tokens); + this.createTableListener = new SqlCreateZtableTopicListener(tokens); this.alterTableListener = new SqlAlterTableTopicListener(tokens); this.alterStreamListener = new SqlAlterStreamTopicListener(tokens); this.createStreamListener = new SqlCreateStreamListener(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/SqlCreateZtableTopicListener.java similarity index 97% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateTableTopicListener.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZtableTopicListener.java index c1fa5721a7..8fd732ecb0 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/SqlCreateZtableTopicListener.java @@ -26,7 +26,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; -public class SqlCreateTableTopicListener extends PostgreSqlParserBaseListener +public class SqlCreateZtableTopicListener extends PostgreSqlParserBaseListener { private final List columns = new ArrayList<>(); private final Set primaryKeys = new ObjectHashSet<>(); @@ -35,7 +35,7 @@ public class SqlCreateTableTopicListener extends PostgreSqlParserBaseListener private String schema; private String name; - public SqlCreateTableTopicListener( + public SqlCreateZtableTopicListener( TokenStream tokens) { this.tokens = tokens; diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key/client.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key/client.rpt index 9a4f417a13..7eca180e9e 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE TABLE IF NOT EXISTS cities " +write "CREATE ZTABLE IF NOT EXISTS cities " "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" [0x00] @@ -41,7 +41,7 @@ write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TABLE") + .tag("CREATE_ZTABLE") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key/server.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key/server.rpt index 6c172b0db7..e3e5d02b44 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key/server.rpt @@ -36,14 +36,14 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE TABLE IF NOT EXISTS cities " +read "CREATE ZTABLE IF NOT EXISTS cities " "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TABLE") + .tag("CREATE_ZTABLE") .build() .build()} From eb0bdbbfe5ba746084fc5d3442c885dfb7323b74 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 2 Dec 2024 11:20:12 -0800 Subject: [PATCH 036/104] WIP --- .../binding-pgsql/gen/PostgreSqlLexer.interp | 2098 ------- .../binding-pgsql/gen/PostgreSqlLexer.java | 5297 ----------------- .../binding-pgsql/gen/PostgreSqlLexer.tokens | 1330 ----- .../pgsql/parser/gen/PostgreSqlLexer.interp | 2098 ------- .../pgsql/parser/gen/PostgreSqlLexer.java | 5297 ----------------- .../pgsql/parser/gen/PostgreSqlLexer.tokens | 1330 ----- 6 files changed, 17450 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 delete mode 100644 incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.interp delete mode 100644 incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.java delete mode 100644 incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.tokens diff --git a/incubator/binding-pgsql/gen/PostgreSqlLexer.interp b/incubator/binding-pgsql/gen/PostgreSqlLexer.interp deleted file mode 100644 index 82019f774b..0000000000 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.interp +++ /dev/null @@ -1,2098 +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' -'ZTABLE' -'THEN' -'TO' -'DESCRIBE' -'TOPIC' -'TOPICS' -'STREAM' -'ZVIEW' -'ZVIEWS' -'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' -'ZTABLES' -'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 -ZTABLE -THEN -TO -DESCRIBE -TOPIC -TOPICS -STREAM -ZVIEW -ZVIEWS -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 -ZTABLES -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 -ZTABLE -THEN -TO -DESCRIBE -TOPIC -TOPICS -STREAM -ZVIEW -ZVIEWS -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 -ZTABLES -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, 687, 6864, 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, 2, 697, 7, 697, 2, 698, 7, 698, 2, 699, 7, 699, 2, 700, 7, 700, 2, 701, 7, 701, 2, 702, 7, 702, 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, 1477, 8, 27, 11, 27, 12, 27, 1478, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1485, 8, 28, 11, 28, 12, 28, 1486, 1, 28, 1, 28, 1, 28, 3, 28, 1492, 8, 28, 1, 28, 1, 28, 4, 28, 1496, 8, 28, 11, 28, 12, 28, 1497, 1, 28, 3, 28, 1501, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1510, 8, 29, 10, 29, 12, 29, 1513, 9, 29, 1, 29, 1, 29, 3, 29, 1517, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1522, 8, 29, 11, 29, 12, 29, 1523, 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, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 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, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 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, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 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, 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, 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, 117, 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, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 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, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 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, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 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, 129, 1, 129, 1, 129, 1, 129, 1, 129, 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, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 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, 137, 1, 137, 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, 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, 140, 1, 140, 1, 140, 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, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 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, 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, 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, 150, 1, 150, 1, 150, 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, 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, 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, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 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, 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, 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, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 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, 165, 1, 165, 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, 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, 172, 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, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 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, 176, 1, 176, 1, 177, 1, 177, 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, 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, 181, 1, 181, 1, 181, 1, 181, 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, 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, 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, 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, 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, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 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, 195, 1, 195, 1, 195, 1, 195, 1, 196, 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, 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, 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, 202, 1, 202, 1, 202, 1, 202, 1, 202, 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, 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, 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, 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, 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, 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, 214, 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, 218, 1, 218, 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, 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, 221, 1, 221, 1, 222, 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, 223, 1, 223, 1, 223, 1, 223, 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, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 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, 230, 1, 230, 1, 230, 1, 231, 1, 231, 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, 232, 1, 233, 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, 234, 1, 235, 1, 235, 1, 235, 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, 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, 239, 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, 241, 1, 241, 1, 241, 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, 242, 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, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 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, 248, 1, 248, 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, 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, 254, 1, 254, 1, 254, 1, 254, 1, 254, 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, 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, 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, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 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, 264, 1, 264, 1, 265, 1, 265, 1, 265, 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, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 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, 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, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 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, 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, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 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, 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, 288, 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, 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, 295, 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, 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, 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, 300, 1, 300, 1, 300, 1, 300, 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, 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, 304, 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, 306, 1, 306, 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, 309, 1, 309, 1, 310, 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, 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, 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, 315, 1, 316, 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, 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, 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, 322, 1, 322, 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, 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, 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, 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, 330, 1, 331, 1, 331, 1, 331, 1, 331, 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, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 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, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 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, 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, 341, 1, 342, 1, 342, 1, 342, 1, 342, 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, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 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, 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, 348, 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, 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, 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, 355, 1, 355, 1, 355, 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, 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, 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, 364, 1, 364, 1, 364, 1, 364, 1, 364, 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, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 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, 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, 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, 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, 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, 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, 377, 1, 377, 1, 378, 1, 378, 1, 378, 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, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 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, 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, 387, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 1, 389, 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, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 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, 396, 1, 396, 1, 396, 1, 396, 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, 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, 400, 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, 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, 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, 411, 1, 411, 1, 411, 1, 411, 1, 411, 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, 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, 416, 1, 416, 1, 416, 1, 416, 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, 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, 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, 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, 425, 1, 425, 1, 425, 1, 425, 1, 425, 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, 428, 1, 428, 1, 428, 1, 428, 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, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 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, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 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, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 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, 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, 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, 438, 1, 438, 1, 438, 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, 439, 1, 439, 1, 439, 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, 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, 443, 1, 443, 1, 443, 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, 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, 448, 1, 449, 1, 449, 1, 449, 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, 453, 1, 453, 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, 455, 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, 457, 1, 457, 1, 457, 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, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 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, 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, 463, 1, 463, 1, 463, 1, 464, 1, 464, 1, 464, 1, 464, 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, 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, 470, 1, 470, 1, 470, 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, 471, 1, 471, 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, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 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, 478, 1, 478, 1, 478, 1, 478, 1, 478, 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, 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, 483, 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, 484, 1, 484, 1, 484, 1, 484, 1, 485, 1, 485, 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, 486, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 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, 491, 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, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 494, 1, 494, 1, 494, 1, 494, 1, 495, 1, 495, 1, 495, 1, 495, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 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, 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, 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, 502, 1, 502, 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, 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, 505, 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, 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, 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, 511, 1, 511, 1, 511, 1, 511, 1, 511, 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, 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, 515, 1, 515, 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, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 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, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 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, 523, 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, 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, 528, 1, 528, 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, 531, 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, 534, 1, 534, 1, 534, 1, 534, 1, 534, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 537, 1, 537, 1, 537, 1, 537, 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, 540, 1, 540, 1, 541, 1, 541, 1, 541, 1, 541, 1, 542, 1, 542, 1, 542, 1, 542, 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, 545, 1, 545, 1, 545, 1, 545, 1, 546, 1, 546, 1, 546, 1, 546, 1, 547, 1, 547, 1, 547, 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, 549, 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, 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, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 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, 557, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 559, 1, 559, 1, 559, 1, 559, 1, 559, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 563, 1, 563, 1, 563, 1, 563, 1, 563, 1, 564, 1, 564, 1, 564, 1, 564, 1, 564, 1, 564, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 566, 1, 566, 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, 570, 1, 570, 1, 570, 1, 570, 1, 570, 1, 571, 1, 571, 1, 571, 1, 571, 1, 572, 1, 572, 1, 572, 1, 572, 1, 572, 1, 573, 1, 573, 1, 573, 1, 573, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 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, 581, 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, 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, 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, 585, 1, 585, 1, 585, 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, 587, 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, 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, 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, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 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, 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, 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, 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, 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, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 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, 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, 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, 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, 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, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 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, 615, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 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, 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, 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, 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, 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, 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, 626, 1, 626, 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, 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, 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, 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, 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, 635, 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, 637, 1, 637, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 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, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 647, 1, 647, 5, 647, 6396, 8, 647, 10, 647, 12, 647, 6399, 9, 647, 1, 648, 1, 648, 1, 648, 1, 648, 1, 648, 1, 648, 3, 648, 6407, 8, 648, 1, 649, 1, 649, 3, 649, 6411, 8, 649, 1, 650, 1, 650, 3, 650, 6415, 8, 650, 1, 651, 1, 651, 1, 651, 1, 652, 1, 652, 1, 652, 1, 652, 5, 652, 6424, 8, 652, 10, 652, 12, 652, 6427, 9, 652, 1, 653, 1, 653, 1, 653, 1, 654, 1, 654, 1, 654, 1, 654, 5, 654, 6436, 8, 654, 10, 654, 12, 654, 6439, 9, 654, 1, 655, 1, 655, 1, 655, 1, 655, 1, 656, 1, 656, 1, 656, 1, 656, 1, 657, 1, 657, 1, 657, 1, 657, 1, 658, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 1, 659, 1, 660, 1, 660, 1, 660, 1, 660, 5, 660, 6464, 8, 660, 10, 660, 12, 660, 6467, 9, 660, 1, 661, 1, 661, 1, 661, 1, 661, 1, 661, 1, 661, 1, 662, 1, 662, 1, 662, 1, 663, 1, 663, 1, 663, 1, 663, 1, 664, 1, 664, 3, 664, 6484, 8, 664, 1, 664, 1, 664, 1, 664, 1, 664, 1, 664, 1, 665, 1, 665, 5, 665, 6493, 8, 665, 10, 665, 12, 665, 6496, 9, 665, 1, 666, 1, 666, 1, 666, 1, 667, 1, 667, 1, 667, 5, 667, 6504, 8, 667, 10, 667, 12, 667, 6507, 9, 667, 1, 668, 1, 668, 1, 668, 1, 669, 1, 669, 1, 669, 1, 670, 1, 670, 1, 670, 1, 671, 1, 671, 1, 671, 5, 671, 6521, 8, 671, 10, 671, 12, 671, 6524, 9, 671, 1, 672, 1, 672, 1, 672, 1, 673, 1, 673, 1, 673, 1, 674, 1, 674, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 676, 1, 676, 1, 676, 3, 676, 6543, 8, 676, 1, 676, 1, 676, 3, 676, 6547, 8, 676, 1, 676, 3, 676, 6550, 8, 676, 1, 676, 1, 676, 1, 676, 1, 676, 3, 676, 6556, 8, 676, 1, 676, 3, 676, 6559, 8, 676, 1, 676, 1, 676, 1, 676, 3, 676, 6564, 8, 676, 1, 676, 1, 676, 3, 676, 6568, 8, 676, 1, 677, 4, 677, 6571, 8, 677, 11, 677, 12, 677, 6572, 1, 678, 1, 678, 1, 678, 5, 678, 6578, 8, 678, 10, 678, 12, 678, 6581, 9, 678, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 5, 679, 6591, 8, 679, 10, 679, 12, 679, 6594, 9, 679, 1, 679, 1, 679, 1, 680, 4, 680, 6599, 8, 680, 11, 680, 12, 680, 6600, 1, 680, 1, 680, 1, 681, 1, 681, 3, 681, 6607, 8, 681, 1, 681, 3, 681, 6610, 8, 681, 1, 681, 1, 681, 1, 682, 1, 682, 1, 682, 1, 682, 5, 682, 6618, 8, 682, 10, 682, 12, 682, 6621, 9, 682, 1, 682, 1, 682, 1, 683, 1, 683, 1, 683, 1, 683, 5, 683, 6629, 8, 683, 10, 683, 12, 683, 6632, 9, 683, 1, 683, 1, 683, 1, 683, 4, 683, 6637, 8, 683, 11, 683, 12, 683, 6638, 1, 683, 1, 683, 4, 683, 6643, 8, 683, 11, 683, 12, 683, 6644, 1, 683, 5, 683, 6648, 8, 683, 10, 683, 12, 683, 6651, 9, 683, 1, 683, 5, 683, 6654, 8, 683, 10, 683, 12, 683, 6657, 9, 683, 1, 683, 1, 683, 1, 683, 1, 683, 1, 683, 1, 684, 1, 684, 1, 684, 1, 684, 5, 684, 6668, 8, 684, 10, 684, 12, 684, 6671, 9, 684, 1, 684, 1, 684, 1, 684, 4, 684, 6676, 8, 684, 11, 684, 12, 684, 6677, 1, 684, 1, 684, 4, 684, 6682, 8, 684, 11, 684, 12, 684, 6683, 1, 684, 3, 684, 6687, 8, 684, 5, 684, 6689, 8, 684, 10, 684, 12, 684, 6692, 9, 684, 1, 684, 4, 684, 6695, 8, 684, 11, 684, 12, 684, 6696, 1, 684, 4, 684, 6700, 8, 684, 11, 684, 12, 684, 6701, 1, 684, 5, 684, 6705, 8, 684, 10, 684, 12, 684, 6708, 9, 684, 1, 684, 3, 684, 6711, 8, 684, 1, 684, 1, 684, 1, 685, 1, 685, 1, 685, 1, 685, 5, 685, 6719, 8, 685, 10, 685, 12, 685, 6722, 9, 685, 1, 685, 5, 685, 6725, 8, 685, 10, 685, 12, 685, 6728, 9, 685, 1, 685, 1, 685, 5, 685, 6732, 8, 685, 10, 685, 12, 685, 6735, 9, 685, 3, 685, 6737, 8, 685, 1, 686, 1, 686, 1, 686, 1, 687, 1, 687, 1, 688, 1, 688, 1, 688, 1, 688, 1, 688, 1, 689, 1, 689, 3, 689, 6751, 8, 689, 1, 689, 1, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 3, 690, 6775, 8, 690, 1, 690, 5, 690, 6778, 8, 690, 10, 690, 12, 690, 6781, 9, 690, 1, 691, 1, 691, 1, 691, 1, 691, 1, 691, 1, 692, 1, 692, 3, 692, 6790, 8, 692, 1, 692, 1, 692, 1, 693, 1, 693, 1, 693, 1, 693, 1, 693, 5, 693, 6799, 8, 693, 10, 693, 12, 693, 6802, 9, 693, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 695, 1, 695, 1, 695, 1, 695, 1, 695, 1, 695, 1, 696, 1, 696, 1, 696, 1, 696, 1, 696, 1, 697, 1, 697, 1, 697, 1, 697, 1, 697, 1, 698, 1, 698, 1, 698, 1, 698, 1, 698, 1, 699, 1, 699, 1, 699, 1, 699, 1, 699, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 701, 4, 701, 6841, 8, 701, 11, 701, 12, 701, 6842, 1, 701, 1, 701, 5, 701, 6847, 8, 701, 10, 701, 12, 701, 6850, 9, 701, 3, 701, 6852, 8, 701, 1, 702, 1, 702, 3, 702, 6856, 8, 702, 1, 702, 1, 702, 1, 702, 1, 702, 1, 702, 1, 702, 1, 702, 0, 0, 703, 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, 639, 1291, 640, 1293, 641, 1295, 642, 1297, 643, 1299, 644, 1301, 0, 1303, 0, 1305, 0, 1307, 645, 1309, 646, 1311, 647, 1313, 648, 1315, 649, 1317, 650, 1319, 651, 1321, 652, 1323, 653, 1325, 654, 1327, 0, 1329, 655, 1331, 656, 1333, 657, 1335, 0, 1337, 658, 1339, 659, 1341, 660, 1343, 661, 1345, 662, 1347, 663, 1349, 664, 1351, 665, 1353, 666, 1355, 667, 1357, 668, 1359, 0, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 673, 1371, 674, 1373, 675, 1375, 676, 1377, 677, 1379, 678, 1381, 679, 1383, 680, 1385, 0, 1387, 681, 1389, 682, 1391, 0, 1393, 0, 1395, 0, 1397, 683, 1399, 0, 1401, 0, 1403, 687, 1405, 684, 1407, 685, 1409, 686, 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, 87, 87, 119, 119, 2, 0, 81, 81, 113, 113, 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, 6936, 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, 1289, 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, 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, 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, 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, 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, 1361, 1, 0, 0, 0, 0, 1363, 1, 0, 0, 0, 0, 1365, 1, 0, 0, 0, 0, 1367, 1, 0, 0, 0, 0, 1369, 1, 0, 0, 0, 0, 1371, 1, 0, 0, 0, 0, 1373, 1, 0, 0, 0, 0, 1375, 1, 0, 0, 0, 0, 1377, 1, 0, 0, 0, 0, 1379, 1, 0, 0, 0, 1, 1381, 1, 0, 0, 0, 1, 1383, 1, 0, 0, 0, 1, 1387, 1, 0, 0, 0, 1, 1389, 1, 0, 0, 0, 2, 1393, 1, 0, 0, 0, 2, 1395, 1, 0, 0, 0, 2, 1397, 1, 0, 0, 0, 3, 1399, 1, 0, 0, 0, 3, 1401, 1, 0, 0, 0, 3, 1403, 1, 0, 0, 0, 3, 1405, 1, 0, 0, 0, 4, 1407, 1, 0, 0, 0, 4, 1409, 1, 0, 0, 0, 5, 1411, 1, 0, 0, 0, 7, 1413, 1, 0, 0, 0, 9, 1415, 1, 0, 0, 0, 11, 1417, 1, 0, 0, 0, 13, 1419, 1, 0, 0, 0, 15, 1421, 1, 0, 0, 0, 17, 1423, 1, 0, 0, 0, 19, 1425, 1, 0, 0, 0, 21, 1427, 1, 0, 0, 0, 23, 1429, 1, 0, 0, 0, 25, 1431, 1, 0, 0, 0, 27, 1433, 1, 0, 0, 0, 29, 1435, 1, 0, 0, 0, 31, 1437, 1, 0, 0, 0, 33, 1439, 1, 0, 0, 0, 35, 1441, 1, 0, 0, 0, 37, 1443, 1, 0, 0, 0, 39, 1445, 1, 0, 0, 0, 41, 1448, 1, 0, 0, 0, 43, 1451, 1, 0, 0, 0, 45, 1454, 1, 0, 0, 0, 47, 1457, 1, 0, 0, 0, 49, 1460, 1, 0, 0, 0, 51, 1463, 1, 0, 0, 0, 53, 1466, 1, 0, 0, 0, 55, 1469, 1, 0, 0, 0, 57, 1472, 1, 0, 0, 0, 59, 1474, 1, 0, 0, 0, 61, 1500, 1, 0, 0, 0, 63, 1511, 1, 0, 0, 0, 65, 1527, 1, 0, 0, 0, 67, 1529, 1, 0, 0, 0, 69, 1531, 1, 0, 0, 0, 71, 1533, 1, 0, 0, 0, 73, 1537, 1, 0, 0, 0, 75, 1545, 1, 0, 0, 0, 77, 1553, 1, 0, 0, 0, 79, 1557, 1, 0, 0, 0, 81, 1561, 1, 0, 0, 0, 83, 1567, 1, 0, 0, 0, 85, 1570, 1, 0, 0, 0, 87, 1574, 1, 0, 0, 0, 89, 1585, 1, 0, 0, 0, 91, 1590, 1, 0, 0, 0, 93, 1595, 1, 0, 0, 0, 95, 1600, 1, 0, 0, 0, 97, 1606, 1, 0, 0, 0, 99, 1614, 1, 0, 0, 0, 101, 1621, 1, 0, 0, 0, 103, 1632, 1, 0, 0, 0, 105, 1639, 1, 0, 0, 0, 107, 1655, 1, 0, 0, 0, 109, 1668, 1, 0, 0, 0, 111, 1681, 1, 0, 0, 0, 113, 1694, 1, 0, 0, 0, 115, 1712, 1, 0, 0, 0, 117, 1725, 1, 0, 0, 0, 119, 1733, 1, 0, 0, 0, 121, 1744, 1, 0, 0, 0, 123, 1749, 1, 0, 0, 0, 125, 1758, 1, 0, 0, 0, 127, 1761, 1, 0, 0, 0, 129, 1766, 1, 0, 0, 0, 131, 1773, 1, 0, 0, 0, 133, 1779, 1, 0, 0, 0, 135, 1785, 1, 0, 0, 0, 137, 1789, 1, 0, 0, 0, 139, 1797, 1, 0, 0, 0, 141, 1802, 1, 0, 0, 0, 143, 1808, 1, 0, 0, 0, 145, 1814, 1, 0, 0, 0, 147, 1821, 1, 0, 0, 0, 149, 1824, 1, 0, 0, 0, 151, 1834, 1, 0, 0, 0, 153, 1844, 1, 0, 0, 0, 155, 1849, 1, 0, 0, 0, 157, 1857, 1, 0, 0, 0, 159, 1865, 1, 0, 0, 0, 161, 1871, 1, 0, 0, 0, 163, 1881, 1, 0, 0, 0, 165, 1896, 1, 0, 0, 0, 167, 1900, 1, 0, 0, 0, 169, 1905, 1, 0, 0, 0, 171, 1912, 1, 0, 0, 0, 173, 1915, 1, 0, 0, 0, 175, 1920, 1, 0, 0, 0, 177, 1923, 1, 0, 0, 0, 179, 1929, 1, 0, 0, 0, 181, 1937, 1, 0, 0, 0, 183, 1945, 1, 0, 0, 0, 185, 1956, 1, 0, 0, 0, 187, 1966, 1, 0, 0, 0, 189, 1973, 1, 0, 0, 0, 191, 1986, 1, 0, 0, 0, 193, 1991, 1, 0, 0, 0, 195, 2001, 1, 0, 0, 0, 197, 2007, 1, 0, 0, 0, 199, 2014, 1, 0, 0, 0, 201, 2019, 1, 0, 0, 0, 203, 2022, 1, 0, 0, 0, 205, 2031, 1, 0, 0, 0, 207, 2037, 1, 0, 0, 0, 209, 2044, 1, 0, 0, 0, 211, 2051, 1, 0, 0, 0, 213, 2057, 1, 0, 0, 0, 215, 2064, 1, 0, 0, 0, 217, 2073, 1, 0, 0, 0, 219, 2078, 1, 0, 0, 0, 221, 2084, 1, 0, 0, 0, 223, 2091, 1, 0, 0, 0, 225, 2096, 1, 0, 0, 0, 227, 2102, 1, 0, 0, 0, 229, 2111, 1, 0, 0, 0, 231, 2116, 1, 0, 0, 0, 233, 2122, 1, 0, 0, 0, 235, 2129, 1, 0, 0, 0, 237, 2134, 1, 0, 0, 0, 239, 2148, 1, 0, 0, 0, 241, 2155, 1, 0, 0, 0, 243, 2165, 1, 0, 0, 0, 245, 2178, 1, 0, 0, 0, 247, 2184, 1, 0, 0, 0, 249, 2199, 1, 0, 0, 0, 251, 2206, 1, 0, 0, 0, 253, 2211, 1, 0, 0, 0, 255, 2217, 1, 0, 0, 0, 257, 2223, 1, 0, 0, 0, 259, 2226, 1, 0, 0, 0, 261, 2233, 1, 0, 0, 0, 263, 2238, 1, 0, 0, 0, 265, 2243, 1, 0, 0, 0, 267, 2248, 1, 0, 0, 0, 269, 2256, 1, 0, 0, 0, 271, 2264, 1, 0, 0, 0, 273, 2270, 1, 0, 0, 0, 275, 2275, 1, 0, 0, 0, 277, 2284, 1, 0, 0, 0, 279, 2290, 1, 0, 0, 0, 281, 2298, 1, 0, 0, 0, 283, 2306, 1, 0, 0, 0, 285, 2312, 1, 0, 0, 0, 287, 2321, 1, 0, 0, 0, 289, 2328, 1, 0, 0, 0, 291, 2335, 1, 0, 0, 0, 293, 2339, 1, 0, 0, 0, 295, 2345, 1, 0, 0, 0, 297, 2351, 1, 0, 0, 0, 299, 2361, 1, 0, 0, 0, 301, 2366, 1, 0, 0, 0, 303, 2372, 1, 0, 0, 0, 305, 2379, 1, 0, 0, 0, 307, 2389, 1, 0, 0, 0, 309, 2400, 1, 0, 0, 0, 311, 2403, 1, 0, 0, 0, 313, 2413, 1, 0, 0, 0, 315, 2422, 1, 0, 0, 0, 317, 2429, 1, 0, 0, 0, 319, 2435, 1, 0, 0, 0, 321, 2438, 1, 0, 0, 0, 323, 2444, 1, 0, 0, 0, 325, 2451, 1, 0, 0, 0, 327, 2459, 1, 0, 0, 0, 329, 2468, 1, 0, 0, 0, 331, 2476, 1, 0, 0, 0, 333, 2482, 1, 0, 0, 0, 335, 2498, 1, 0, 0, 0, 337, 2509, 1, 0, 0, 0, 339, 2515, 1, 0, 0, 0, 341, 2521, 1, 0, 0, 0, 343, 2529, 1, 0, 0, 0, 345, 2537, 1, 0, 0, 0, 347, 2546, 1, 0, 0, 0, 349, 2553, 1, 0, 0, 0, 351, 2563, 1, 0, 0, 0, 353, 2577, 1, 0, 0, 0, 355, 2588, 1, 0, 0, 0, 357, 2600, 1, 0, 0, 0, 359, 2608, 1, 0, 0, 0, 361, 2617, 1, 0, 0, 0, 363, 2628, 1, 0, 0, 0, 365, 2633, 1, 0, 0, 0, 367, 2638, 1, 0, 0, 0, 369, 2642, 1, 0, 0, 0, 371, 2649, 1, 0, 0, 0, 373, 2655, 1, 0, 0, 0, 375, 2660, 1, 0, 0, 0, 377, 2669, 1, 0, 0, 0, 379, 2673, 1, 0, 0, 0, 381, 2684, 1, 0, 0, 0, 383, 2692, 1, 0, 0, 0, 385, 2701, 1, 0, 0, 0, 387, 2710, 1, 0, 0, 0, 389, 2718, 1, 0, 0, 0, 391, 2725, 1, 0, 0, 0, 393, 2735, 1, 0, 0, 0, 395, 2746, 1, 0, 0, 0, 397, 2757, 1, 0, 0, 0, 399, 2765, 1, 0, 0, 0, 401, 2773, 1, 0, 0, 0, 403, 2782, 1, 0, 0, 0, 405, 2789, 1, 0, 0, 0, 407, 2796, 1, 0, 0, 0, 409, 2801, 1, 0, 0, 0, 411, 2806, 1, 0, 0, 0, 413, 2813, 1, 0, 0, 0, 415, 2822, 1, 0, 0, 0, 417, 2832, 1, 0, 0, 0, 419, 2837, 1, 0, 0, 0, 421, 2844, 1, 0, 0, 0, 423, 2850, 1, 0, 0, 0, 425, 2858, 1, 0, 0, 0, 427, 2868, 1, 0, 0, 0, 429, 2878, 1, 0, 0, 0, 431, 2886, 1, 0, 0, 0, 433, 2894, 1, 0, 0, 0, 435, 2904, 1, 0, 0, 0, 437, 2913, 1, 0, 0, 0, 439, 2920, 1, 0, 0, 0, 441, 2926, 1, 0, 0, 0, 443, 2936, 1, 0, 0, 0, 445, 2942, 1, 0, 0, 0, 447, 2950, 1, 0, 0, 0, 449, 2959, 1, 0, 0, 0, 451, 2969, 1, 0, 0, 0, 453, 2976, 1, 0, 0, 0, 455, 2984, 1, 0, 0, 0, 457, 2992, 1, 0, 0, 0, 459, 2999, 1, 0, 0, 0, 461, 3004, 1, 0, 0, 0, 463, 3009, 1, 0, 0, 0, 465, 3018, 1, 0, 0, 0, 467, 3021, 1, 0, 0, 0, 469, 3031, 1, 0, 0, 0, 471, 3041, 1, 0, 0, 0, 473, 3050, 1, 0, 0, 0, 475, 3060, 1, 0, 0, 0, 477, 3070, 1, 0, 0, 0, 479, 3076, 1, 0, 0, 0, 481, 3084, 1, 0, 0, 0, 483, 3092, 1, 0, 0, 0, 485, 3101, 1, 0, 0, 0, 487, 3108, 1, 0, 0, 0, 489, 3120, 1, 0, 0, 0, 491, 3127, 1, 0, 0, 0, 493, 3135, 1, 0, 0, 0, 495, 3143, 1, 0, 0, 0, 497, 3153, 1, 0, 0, 0, 499, 3157, 1, 0, 0, 0, 501, 3163, 1, 0, 0, 0, 503, 3172, 1, 0, 0, 0, 505, 3178, 1, 0, 0, 0, 507, 3183, 1, 0, 0, 0, 509, 3193, 1, 0, 0, 0, 511, 3199, 1, 0, 0, 0, 513, 3206, 1, 0, 0, 0, 515, 3211, 1, 0, 0, 0, 517, 3217, 1, 0, 0, 0, 519, 3226, 1, 0, 0, 0, 521, 3231, 1, 0, 0, 0, 523, 3239, 1, 0, 0, 0, 525, 3245, 1, 0, 0, 0, 527, 3253, 1, 0, 0, 0, 529, 3266, 1, 0, 0, 0, 531, 3275, 1, 0, 0, 0, 533, 3281, 1, 0, 0, 0, 535, 3288, 1, 0, 0, 0, 537, 3297, 1, 0, 0, 0, 539, 3302, 1, 0, 0, 0, 541, 3308, 1, 0, 0, 0, 543, 3313, 1, 0, 0, 0, 545, 3318, 1, 0, 0, 0, 547, 3324, 1, 0, 0, 0, 549, 3329, 1, 0, 0, 0, 551, 3332, 1, 0, 0, 0, 553, 3340, 1, 0, 0, 0, 555, 3347, 1, 0, 0, 0, 557, 3354, 1, 0, 0, 0, 559, 3360, 1, 0, 0, 0, 561, 3367, 1, 0, 0, 0, 563, 3370, 1, 0, 0, 0, 565, 3374, 1, 0, 0, 0, 567, 3379, 1, 0, 0, 0, 569, 3388, 1, 0, 0, 0, 571, 3395, 1, 0, 0, 0, 573, 3403, 1, 0, 0, 0, 575, 3409, 1, 0, 0, 0, 577, 3415, 1, 0, 0, 0, 579, 3422, 1, 0, 0, 0, 581, 3430, 1, 0, 0, 0, 583, 3440, 1, 0, 0, 0, 585, 3448, 1, 0, 0, 0, 587, 3457, 1, 0, 0, 0, 589, 3463, 1, 0, 0, 0, 591, 3473, 1, 0, 0, 0, 593, 3481, 1, 0, 0, 0, 595, 3490, 1, 0, 0, 0, 597, 3499, 1, 0, 0, 0, 599, 3505, 1, 0, 0, 0, 601, 3516, 1, 0, 0, 0, 603, 3527, 1, 0, 0, 0, 605, 3537, 1, 0, 0, 0, 607, 3545, 1, 0, 0, 0, 609, 3551, 1, 0, 0, 0, 611, 3557, 1, 0, 0, 0, 613, 3562, 1, 0, 0, 0, 615, 3571, 1, 0, 0, 0, 617, 3579, 1, 0, 0, 0, 619, 3589, 1, 0, 0, 0, 621, 3593, 1, 0, 0, 0, 623, 3601, 1, 0, 0, 0, 625, 3609, 1, 0, 0, 0, 627, 3618, 1, 0, 0, 0, 629, 3626, 1, 0, 0, 0, 631, 3633, 1, 0, 0, 0, 633, 3644, 1, 0, 0, 0, 635, 3652, 1, 0, 0, 0, 637, 3660, 1, 0, 0, 0, 639, 3666, 1, 0, 0, 0, 641, 3674, 1, 0, 0, 0, 643, 3683, 1, 0, 0, 0, 645, 3691, 1, 0, 0, 0, 647, 3698, 1, 0, 0, 0, 649, 3703, 1, 0, 0, 0, 651, 3712, 1, 0, 0, 0, 653, 3717, 1, 0, 0, 0, 655, 3722, 1, 0, 0, 0, 657, 3732, 1, 0, 0, 0, 659, 3739, 1, 0, 0, 0, 661, 3746, 1, 0, 0, 0, 663, 3753, 1, 0, 0, 0, 665, 3760, 1, 0, 0, 0, 667, 3769, 1, 0, 0, 0, 669, 3778, 1, 0, 0, 0, 671, 3788, 1, 0, 0, 0, 673, 3801, 1, 0, 0, 0, 675, 3808, 1, 0, 0, 0, 677, 3816, 1, 0, 0, 0, 679, 3820, 1, 0, 0, 0, 681, 3826, 1, 0, 0, 0, 683, 3831, 1, 0, 0, 0, 685, 3838, 1, 0, 0, 0, 687, 3847, 1, 0, 0, 0, 689, 3854, 1, 0, 0, 0, 691, 3865, 1, 0, 0, 0, 693, 3871, 1, 0, 0, 0, 695, 3881, 1, 0, 0, 0, 697, 3892, 1, 0, 0, 0, 699, 3898, 1, 0, 0, 0, 701, 3905, 1, 0, 0, 0, 703, 3913, 1, 0, 0, 0, 705, 3920, 1, 0, 0, 0, 707, 3926, 1, 0, 0, 0, 709, 3932, 1, 0, 0, 0, 711, 3939, 1, 0, 0, 0, 713, 3946, 1, 0, 0, 0, 715, 3954, 1, 0, 0, 0, 717, 3965, 1, 0, 0, 0, 719, 3970, 1, 0, 0, 0, 721, 3979, 1, 0, 0, 0, 723, 3989, 1, 0, 0, 0, 725, 3994, 1, 0, 0, 0, 727, 4006, 1, 0, 0, 0, 729, 4014, 1, 0, 0, 0, 731, 4023, 1, 0, 0, 0, 733, 4031, 1, 0, 0, 0, 735, 4036, 1, 0, 0, 0, 737, 4042, 1, 0, 0, 0, 739, 4052, 1, 0, 0, 0, 741, 4064, 1, 0, 0, 0, 743, 4076, 1, 0, 0, 0, 745, 4084, 1, 0, 0, 0, 747, 4093, 1, 0, 0, 0, 749, 4102, 1, 0, 0, 0, 751, 4108, 1, 0, 0, 0, 753, 4115, 1, 0, 0, 0, 755, 4122, 1, 0, 0, 0, 757, 4128, 1, 0, 0, 0, 759, 4137, 1, 0, 0, 0, 761, 4147, 1, 0, 0, 0, 763, 4155, 1, 0, 0, 0, 765, 4163, 1, 0, 0, 0, 767, 4168, 1, 0, 0, 0, 769, 4177, 1, 0, 0, 0, 771, 4188, 1, 0, 0, 0, 773, 4196, 1, 0, 0, 0, 775, 4201, 1, 0, 0, 0, 777, 4209, 1, 0, 0, 0, 779, 4215, 1, 0, 0, 0, 781, 4219, 1, 0, 0, 0, 783, 4224, 1, 0, 0, 0, 785, 4228, 1, 0, 0, 0, 787, 4233, 1, 0, 0, 0, 789, 4241, 1, 0, 0, 0, 791, 4248, 1, 0, 0, 0, 793, 4252, 1, 0, 0, 0, 795, 4260, 1, 0, 0, 0, 797, 4265, 1, 0, 0, 0, 799, 4275, 1, 0, 0, 0, 801, 4284, 1, 0, 0, 0, 803, 4288, 1, 0, 0, 0, 805, 4296, 1, 0, 0, 0, 807, 4303, 1, 0, 0, 0, 809, 4311, 1, 0, 0, 0, 811, 4317, 1, 0, 0, 0, 813, 4326, 1, 0, 0, 0, 815, 4332, 1, 0, 0, 0, 817, 4336, 1, 0, 0, 0, 819, 4344, 1, 0, 0, 0, 821, 4353, 1, 0, 0, 0, 823, 4359, 1, 0, 0, 0, 825, 4368, 1, 0, 0, 0, 827, 4374, 1, 0, 0, 0, 829, 4379, 1, 0, 0, 0, 831, 4386, 1, 0, 0, 0, 833, 4394, 1, 0, 0, 0, 835, 4402, 1, 0, 0, 0, 837, 4411, 1, 0, 0, 0, 839, 4421, 1, 0, 0, 0, 841, 4426, 1, 0, 0, 0, 843, 4430, 1, 0, 0, 0, 845, 4436, 1, 0, 0, 0, 847, 4445, 1, 0, 0, 0, 849, 4455, 1, 0, 0, 0, 851, 4460, 1, 0, 0, 0, 853, 4470, 1, 0, 0, 0, 855, 4476, 1, 0, 0, 0, 857, 4481, 1, 0, 0, 0, 859, 4488, 1, 0, 0, 0, 861, 4496, 1, 0, 0, 0, 863, 4510, 1, 0, 0, 0, 865, 4521, 1, 0, 0, 0, 867, 4528, 1, 0, 0, 0, 869, 4547, 1, 0, 0, 0, 871, 4575, 1, 0, 0, 0, 873, 4602, 1, 0, 0, 0, 875, 4608, 1, 0, 0, 0, 877, 4621, 1, 0, 0, 0, 879, 4631, 1, 0, 0, 0, 881, 4642, 1, 0, 0, 0, 883, 4652, 1, 0, 0, 0, 885, 4662, 1, 0, 0, 0, 887, 4671, 1, 0, 0, 0, 889, 4677, 1, 0, 0, 0, 891, 4685, 1, 0, 0, 0, 893, 4698, 1, 0, 0, 0, 895, 4703, 1, 0, 0, 0, 897, 4711, 1, 0, 0, 0, 899, 4718, 1, 0, 0, 0, 901, 4725, 1, 0, 0, 0, 903, 4736, 1, 0, 0, 0, 905, 4746, 1, 0, 0, 0, 907, 4753, 1, 0, 0, 0, 909, 4760, 1, 0, 0, 0, 911, 4768, 1, 0, 0, 0, 913, 4776, 1, 0, 0, 0, 915, 4786, 1, 0, 0, 0, 917, 4793, 1, 0, 0, 0, 919, 4800, 1, 0, 0, 0, 921, 4807, 1, 0, 0, 0, 923, 4819, 1, 0, 0, 0, 925, 4823, 1, 0, 0, 0, 927, 4827, 1, 0, 0, 0, 929, 4833, 1, 0, 0, 0, 931, 4846, 1, 0, 0, 0, 933, 4858, 1, 0, 0, 0, 935, 4862, 1, 0, 0, 0, 937, 4866, 1, 0, 0, 0, 939, 4875, 1, 0, 0, 0, 941, 4883, 1, 0, 0, 0, 943, 4894, 1, 0, 0, 0, 945, 4900, 1, 0, 0, 0, 947, 4908, 1, 0, 0, 0, 949, 4917, 1, 0, 0, 0, 951, 4921, 1, 0, 0, 0, 953, 4929, 1, 0, 0, 0, 955, 4940, 1, 0, 0, 0, 957, 4949, 1, 0, 0, 0, 959, 4954, 1, 0, 0, 0, 961, 4961, 1, 0, 0, 0, 963, 4966, 1, 0, 0, 0, 965, 4973, 1, 0, 0, 0, 967, 4978, 1, 0, 0, 0, 969, 4987, 1, 0, 0, 0, 971, 4992, 1, 0, 0, 0, 973, 5004, 1, 0, 0, 0, 975, 5015, 1, 0, 0, 0, 977, 5024, 1, 0, 0, 0, 979, 5032, 1, 0, 0, 0, 981, 5046, 1, 0, 0, 0, 983, 5054, 1, 0, 0, 0, 985, 5065, 1, 0, 0, 0, 987, 5072, 1, 0, 0, 0, 989, 5079, 1, 0, 0, 0, 991, 5086, 1, 0, 0, 0, 993, 5093, 1, 0, 0, 0, 995, 5097, 1, 0, 0, 0, 997, 5101, 1, 0, 0, 0, 999, 5106, 1, 0, 0, 0, 1001, 5111, 1, 0, 0, 0, 1003, 5119, 1, 0, 0, 0, 1005, 5125, 1, 0, 0, 0, 1007, 5135, 1, 0, 0, 0, 1009, 5140, 1, 0, 0, 0, 1011, 5160, 1, 0, 0, 0, 1013, 5178, 1, 0, 0, 0, 1015, 5184, 1, 0, 0, 0, 1017, 5197, 1, 0, 0, 0, 1019, 5208, 1, 0, 0, 0, 1021, 5214, 1, 0, 0, 0, 1023, 5223, 1, 0, 0, 0, 1025, 5231, 1, 0, 0, 0, 1027, 5235, 1, 0, 0, 0, 1029, 5247, 1, 0, 0, 0, 1031, 5255, 1, 0, 0, 0, 1033, 5261, 1, 0, 0, 0, 1035, 5267, 1, 0, 0, 0, 1037, 5275, 1, 0, 0, 0, 1039, 5283, 1, 0, 0, 0, 1041, 5289, 1, 0, 0, 0, 1043, 5294, 1, 0, 0, 0, 1045, 5301, 1, 0, 0, 0, 1047, 5307, 1, 0, 0, 0, 1049, 5313, 1, 0, 0, 0, 1051, 5322, 1, 0, 0, 0, 1053, 5328, 1, 0, 0, 0, 1055, 5332, 1, 0, 0, 0, 1057, 5337, 1, 0, 0, 0, 1059, 5344, 1, 0, 0, 0, 1061, 5352, 1, 0, 0, 0, 1063, 5362, 1, 0, 0, 0, 1065, 5369, 1, 0, 0, 0, 1067, 5374, 1, 0, 0, 0, 1069, 5379, 1, 0, 0, 0, 1071, 5383, 1, 0, 0, 0, 1073, 5388, 1, 0, 0, 0, 1075, 5393, 1, 0, 0, 0, 1077, 5401, 1, 0, 0, 0, 1079, 5409, 1, 0, 0, 0, 1081, 5413, 1, 0, 0, 0, 1083, 5417, 1, 0, 0, 0, 1085, 5427, 1, 0, 0, 0, 1087, 5433, 1, 0, 0, 0, 1089, 5437, 1, 0, 0, 0, 1091, 5441, 1, 0, 0, 0, 1093, 5444, 1, 0, 0, 0, 1095, 5450, 1, 0, 0, 0, 1097, 5460, 1, 0, 0, 0, 1099, 5464, 1, 0, 0, 0, 1101, 5467, 1, 0, 0, 0, 1103, 5473, 1, 0, 0, 0, 1105, 5481, 1, 0, 0, 0, 1107, 5487, 1, 0, 0, 0, 1109, 5493, 1, 0, 0, 0, 1111, 5498, 1, 0, 0, 0, 1113, 5503, 1, 0, 0, 0, 1115, 5514, 1, 0, 0, 0, 1117, 5520, 1, 0, 0, 0, 1119, 5533, 1, 0, 0, 0, 1121, 5540, 1, 0, 0, 0, 1123, 5548, 1, 0, 0, 0, 1125, 5553, 1, 0, 0, 0, 1127, 5559, 1, 0, 0, 0, 1129, 5564, 1, 0, 0, 0, 1131, 5570, 1, 0, 0, 0, 1133, 5575, 1, 0, 0, 0, 1135, 5581, 1, 0, 0, 0, 1137, 5587, 1, 0, 0, 0, 1139, 5594, 1, 0, 0, 0, 1141, 5598, 1, 0, 0, 0, 1143, 5603, 1, 0, 0, 0, 1145, 5607, 1, 0, 0, 0, 1147, 5612, 1, 0, 0, 0, 1149, 5616, 1, 0, 0, 0, 1151, 5621, 1, 0, 0, 0, 1153, 5625, 1, 0, 0, 0, 1155, 5630, 1, 0, 0, 0, 1157, 5635, 1, 0, 0, 0, 1159, 5640, 1, 0, 0, 0, 1161, 5645, 1, 0, 0, 0, 1163, 5651, 1, 0, 0, 0, 1165, 5657, 1, 0, 0, 0, 1167, 5663, 1, 0, 0, 0, 1169, 5674, 1, 0, 0, 0, 1171, 5686, 1, 0, 0, 0, 1173, 5703, 1, 0, 0, 0, 1175, 5709, 1, 0, 0, 0, 1177, 5722, 1, 0, 0, 0, 1179, 5728, 1, 0, 0, 0, 1181, 5734, 1, 0, 0, 0, 1183, 5740, 1, 0, 0, 0, 1185, 5744, 1, 0, 0, 0, 1187, 5751, 1, 0, 0, 0, 1189, 5761, 1, 0, 0, 0, 1191, 5768, 1, 0, 0, 0, 1193, 5776, 1, 0, 0, 0, 1195, 5783, 1, 0, 0, 0, 1197, 5788, 1, 0, 0, 0, 1199, 5794, 1, 0, 0, 0, 1201, 5798, 1, 0, 0, 0, 1203, 5810, 1, 0, 0, 0, 1205, 5829, 1, 0, 0, 0, 1207, 5841, 1, 0, 0, 0, 1209, 5855, 1, 0, 0, 0, 1211, 5870, 1, 0, 0, 0, 1213, 5883, 1, 0, 0, 0, 1215, 5896, 1, 0, 0, 0, 1217, 5908, 1, 0, 0, 0, 1219, 5921, 1, 0, 0, 0, 1221, 5936, 1, 0, 0, 0, 1223, 5951, 1, 0, 0, 0, 1225, 5973, 1, 0, 0, 0, 1227, 5995, 1, 0, 0, 0, 1229, 6009, 1, 0, 0, 0, 1231, 6016, 1, 0, 0, 0, 1233, 6021, 1, 0, 0, 0, 1235, 6027, 1, 0, 0, 0, 1237, 6038, 1, 0, 0, 0, 1239, 6050, 1, 0, 0, 0, 1241, 6066, 1, 0, 0, 0, 1243, 6082, 1, 0, 0, 0, 1245, 6089, 1, 0, 0, 0, 1247, 6096, 1, 0, 0, 0, 1249, 6105, 1, 0, 0, 0, 1251, 6112, 1, 0, 0, 0, 1253, 6122, 1, 0, 0, 0, 1255, 6129, 1, 0, 0, 0, 1257, 6133, 1, 0, 0, 0, 1259, 6149, 1, 0, 0, 0, 1261, 6158, 1, 0, 0, 0, 1263, 6168, 1, 0, 0, 0, 1265, 6179, 1, 0, 0, 0, 1267, 6188, 1, 0, 0, 0, 1269, 6201, 1, 0, 0, 0, 1271, 6215, 1, 0, 0, 0, 1273, 6232, 1, 0, 0, 0, 1275, 6242, 1, 0, 0, 0, 1277, 6256, 1, 0, 0, 0, 1279, 6266, 1, 0, 0, 0, 1281, 6281, 1, 0, 0, 0, 1283, 6298, 1, 0, 0, 0, 1285, 6302, 1, 0, 0, 0, 1287, 6322, 1, 0, 0, 0, 1289, 6332, 1, 0, 0, 0, 1291, 6354, 1, 0, 0, 0, 1293, 6367, 1, 0, 0, 0, 1295, 6375, 1, 0, 0, 0, 1297, 6383, 1, 0, 0, 0, 1299, 6393, 1, 0, 0, 0, 1301, 6406, 1, 0, 0, 0, 1303, 6410, 1, 0, 0, 0, 1305, 6414, 1, 0, 0, 0, 1307, 6416, 1, 0, 0, 0, 1309, 6419, 1, 0, 0, 0, 1311, 6428, 1, 0, 0, 0, 1313, 6431, 1, 0, 0, 0, 1315, 6440, 1, 0, 0, 0, 1317, 6444, 1, 0, 0, 0, 1319, 6448, 1, 0, 0, 0, 1321, 6452, 1, 0, 0, 0, 1323, 6456, 1, 0, 0, 0, 1325, 6459, 1, 0, 0, 0, 1327, 6468, 1, 0, 0, 0, 1329, 6474, 1, 0, 0, 0, 1331, 6477, 1, 0, 0, 0, 1333, 6481, 1, 0, 0, 0, 1335, 6490, 1, 0, 0, 0, 1337, 6497, 1, 0, 0, 0, 1339, 6500, 1, 0, 0, 0, 1341, 6508, 1, 0, 0, 0, 1343, 6511, 1, 0, 0, 0, 1345, 6514, 1, 0, 0, 0, 1347, 6517, 1, 0, 0, 0, 1349, 6525, 1, 0, 0, 0, 1351, 6528, 1, 0, 0, 0, 1353, 6531, 1, 0, 0, 0, 1355, 6533, 1, 0, 0, 0, 1357, 6567, 1, 0, 0, 0, 1359, 6570, 1, 0, 0, 0, 1361, 6574, 1, 0, 0, 0, 1363, 6582, 1, 0, 0, 0, 1365, 6598, 1, 0, 0, 0, 1367, 6609, 1, 0, 0, 0, 1369, 6613, 1, 0, 0, 0, 1371, 6624, 1, 0, 0, 0, 1373, 6663, 1, 0, 0, 0, 1375, 6714, 1, 0, 0, 0, 1377, 6738, 1, 0, 0, 0, 1379, 6741, 1, 0, 0, 0, 1381, 6743, 1, 0, 0, 0, 1383, 6748, 1, 0, 0, 0, 1385, 6779, 1, 0, 0, 0, 1387, 6782, 1, 0, 0, 0, 1389, 6787, 1, 0, 0, 0, 1391, 6800, 1, 0, 0, 0, 1393, 6803, 1, 0, 0, 0, 1395, 6808, 1, 0, 0, 0, 1397, 6814, 1, 0, 0, 0, 1399, 6819, 1, 0, 0, 0, 1401, 6824, 1, 0, 0, 0, 1403, 6829, 1, 0, 0, 0, 1405, 6834, 1, 0, 0, 0, 1407, 6851, 1, 0, 0, 0, 1409, 6853, 1, 0, 0, 0, 1411, 1412, 5, 36, 0, 0, 1412, 6, 1, 0, 0, 0, 1413, 1414, 5, 40, 0, 0, 1414, 8, 1, 0, 0, 0, 1415, 1416, 5, 41, 0, 0, 1416, 10, 1, 0, 0, 0, 1417, 1418, 5, 91, 0, 0, 1418, 12, 1, 0, 0, 0, 1419, 1420, 5, 93, 0, 0, 1420, 14, 1, 0, 0, 0, 1421, 1422, 5, 44, 0, 0, 1422, 16, 1, 0, 0, 0, 1423, 1424, 5, 59, 0, 0, 1424, 18, 1, 0, 0, 0, 1425, 1426, 5, 58, 0, 0, 1426, 20, 1, 0, 0, 0, 1427, 1428, 5, 42, 0, 0, 1428, 22, 1, 0, 0, 0, 1429, 1430, 5, 61, 0, 0, 1430, 24, 1, 0, 0, 0, 1431, 1432, 5, 46, 0, 0, 1432, 26, 1, 0, 0, 0, 1433, 1434, 5, 43, 0, 0, 1434, 28, 1, 0, 0, 0, 1435, 1436, 5, 45, 0, 0, 1436, 30, 1, 0, 0, 0, 1437, 1438, 5, 47, 0, 0, 1438, 32, 1, 0, 0, 0, 1439, 1440, 5, 94, 0, 0, 1440, 34, 1, 0, 0, 0, 1441, 1442, 5, 60, 0, 0, 1442, 36, 1, 0, 0, 0, 1443, 1444, 5, 62, 0, 0, 1444, 38, 1, 0, 0, 0, 1445, 1446, 5, 60, 0, 0, 1446, 1447, 5, 60, 0, 0, 1447, 40, 1, 0, 0, 0, 1448, 1449, 5, 62, 0, 0, 1449, 1450, 5, 62, 0, 0, 1450, 42, 1, 0, 0, 0, 1451, 1452, 5, 58, 0, 0, 1452, 1453, 5, 61, 0, 0, 1453, 44, 1, 0, 0, 0, 1454, 1455, 5, 60, 0, 0, 1455, 1456, 5, 61, 0, 0, 1456, 46, 1, 0, 0, 0, 1457, 1458, 5, 61, 0, 0, 1458, 1459, 5, 62, 0, 0, 1459, 48, 1, 0, 0, 0, 1460, 1461, 5, 62, 0, 0, 1461, 1462, 5, 61, 0, 0, 1462, 50, 1, 0, 0, 0, 1463, 1464, 5, 46, 0, 0, 1464, 1465, 5, 46, 0, 0, 1465, 52, 1, 0, 0, 0, 1466, 1467, 5, 60, 0, 0, 1467, 1468, 5, 62, 0, 0, 1468, 54, 1, 0, 0, 0, 1469, 1470, 5, 58, 0, 0, 1470, 1471, 5, 58, 0, 0, 1471, 56, 1, 0, 0, 0, 1472, 1473, 5, 37, 0, 0, 1473, 58, 1, 0, 0, 0, 1474, 1476, 5, 36, 0, 0, 1475, 1477, 7, 0, 0, 0, 1476, 1475, 1, 0, 0, 0, 1477, 1478, 1, 0, 0, 0, 1478, 1476, 1, 0, 0, 0, 1478, 1479, 1, 0, 0, 0, 1479, 60, 1, 0, 0, 0, 1480, 1496, 3, 65, 30, 0, 1481, 1485, 5, 43, 0, 0, 1482, 1483, 5, 45, 0, 0, 1483, 1485, 4, 28, 0, 0, 1484, 1481, 1, 0, 0, 0, 1484, 1482, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 1484, 1, 0, 0, 0, 1486, 1487, 1, 0, 0, 0, 1487, 1491, 1, 0, 0, 0, 1488, 1492, 3, 65, 30, 0, 1489, 1490, 5, 47, 0, 0, 1490, 1492, 4, 28, 1, 0, 1491, 1488, 1, 0, 0, 0, 1491, 1489, 1, 0, 0, 0, 1492, 1496, 1, 0, 0, 0, 1493, 1494, 5, 47, 0, 0, 1494, 1496, 4, 28, 2, 0, 1495, 1480, 1, 0, 0, 0, 1495, 1484, 1, 0, 0, 0, 1495, 1493, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1495, 1, 0, 0, 0, 1497, 1498, 1, 0, 0, 0, 1498, 1501, 1, 0, 0, 0, 1499, 1501, 7, 1, 0, 0, 1500, 1495, 1, 0, 0, 0, 1500, 1499, 1, 0, 0, 0, 1501, 1502, 1, 0, 0, 0, 1502, 1503, 6, 28, 0, 0, 1503, 62, 1, 0, 0, 0, 1504, 1510, 3, 67, 31, 0, 1505, 1506, 5, 45, 0, 0, 1506, 1510, 4, 29, 3, 0, 1507, 1508, 5, 47, 0, 0, 1508, 1510, 4, 29, 4, 0, 1509, 1504, 1, 0, 0, 0, 1509, 1505, 1, 0, 0, 0, 1509, 1507, 1, 0, 0, 0, 1510, 1513, 1, 0, 0, 0, 1511, 1509, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1514, 1, 0, 0, 0, 1513, 1511, 1, 0, 0, 0, 1514, 1516, 3, 69, 32, 0, 1515, 1517, 3, 61, 28, 0, 1516, 1515, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1521, 1, 0, 0, 0, 1518, 1522, 5, 43, 0, 0, 1519, 1520, 5, 45, 0, 0, 1520, 1522, 4, 29, 5, 0, 1521, 1518, 1, 0, 0, 0, 1521, 1519, 1, 0, 0, 0, 1522, 1523, 1, 0, 0, 0, 1523, 1521, 1, 0, 0, 0, 1523, 1524, 1, 0, 0, 0, 1524, 1525, 1, 0, 0, 0, 1525, 1526, 6, 29, 1, 0, 1526, 64, 1, 0, 0, 0, 1527, 1528, 7, 2, 0, 0, 1528, 66, 1, 0, 0, 0, 1529, 1530, 7, 3, 0, 0, 1530, 68, 1, 0, 0, 0, 1531, 1532, 7, 4, 0, 0, 1532, 70, 1, 0, 0, 0, 1533, 1534, 7, 5, 0, 0, 1534, 1535, 7, 6, 0, 0, 1535, 1536, 7, 6, 0, 0, 1536, 72, 1, 0, 0, 0, 1537, 1538, 7, 5, 0, 0, 1538, 1539, 7, 7, 0, 0, 1539, 1540, 7, 5, 0, 0, 1540, 1541, 7, 6, 0, 0, 1541, 1542, 7, 8, 0, 0, 1542, 1543, 7, 9, 0, 0, 1543, 1544, 7, 10, 0, 0, 1544, 74, 1, 0, 0, 0, 1545, 1546, 7, 5, 0, 0, 1546, 1547, 7, 7, 0, 0, 1547, 1548, 7, 5, 0, 0, 1548, 1549, 7, 6, 0, 0, 1549, 1550, 7, 8, 0, 0, 1550, 1551, 7, 11, 0, 0, 1551, 1552, 7, 10, 0, 0, 1552, 76, 1, 0, 0, 0, 1553, 1554, 7, 5, 0, 0, 1554, 1555, 7, 7, 0, 0, 1555, 1556, 7, 12, 0, 0, 1556, 78, 1, 0, 0, 0, 1557, 1558, 7, 5, 0, 0, 1558, 1559, 7, 7, 0, 0, 1559, 1560, 7, 8, 0, 0, 1560, 80, 1, 0, 0, 0, 1561, 1562, 7, 5, 0, 0, 1562, 1563, 7, 13, 0, 0, 1563, 1564, 7, 13, 0, 0, 1564, 1565, 7, 5, 0, 0, 1565, 1566, 7, 8, 0, 0, 1566, 82, 1, 0, 0, 0, 1567, 1568, 7, 5, 0, 0, 1568, 1569, 7, 9, 0, 0, 1569, 84, 1, 0, 0, 0, 1570, 1571, 7, 5, 0, 0, 1571, 1572, 7, 9, 0, 0, 1572, 1573, 7, 14, 0, 0, 1573, 86, 1, 0, 0, 0, 1574, 1575, 7, 5, 0, 0, 1575, 1576, 7, 9, 0, 0, 1576, 1577, 7, 8, 0, 0, 1577, 1578, 7, 15, 0, 0, 1578, 1579, 7, 15, 0, 0, 1579, 1580, 7, 10, 0, 0, 1580, 1581, 7, 16, 0, 0, 1581, 1582, 7, 13, 0, 0, 1582, 1583, 7, 17, 0, 0, 1583, 1584, 7, 14, 0, 0, 1584, 88, 1, 0, 0, 0, 1585, 1586, 7, 18, 0, 0, 1586, 1587, 7, 19, 0, 0, 1587, 1588, 7, 16, 0, 0, 1588, 1589, 7, 20, 0, 0, 1589, 90, 1, 0, 0, 0, 1590, 1591, 7, 14, 0, 0, 1591, 1592, 7, 5, 0, 0, 1592, 1593, 7, 9, 0, 0, 1593, 1594, 7, 10, 0, 0, 1594, 92, 1, 0, 0, 0, 1595, 1596, 7, 14, 0, 0, 1596, 1597, 7, 5, 0, 0, 1597, 1598, 7, 9, 0, 0, 1598, 1599, 7, 16, 0, 0, 1599, 94, 1, 0, 0, 0, 1600, 1601, 7, 14, 0, 0, 1601, 1602, 7, 20, 0, 0, 1602, 1603, 7, 10, 0, 0, 1603, 1604, 7, 14, 0, 0, 1604, 1605, 7, 21, 0, 0, 1605, 96, 1, 0, 0, 0, 1606, 1607, 7, 14, 0, 0, 1607, 1608, 7, 19, 0, 0, 1608, 1609, 7, 6, 0, 0, 1609, 1610, 7, 6, 0, 0, 1610, 1611, 7, 5, 0, 0, 1611, 1612, 7, 16, 0, 0, 1612, 1613, 7, 10, 0, 0, 1613, 98, 1, 0, 0, 0, 1614, 1615, 7, 14, 0, 0, 1615, 1616, 7, 19, 0, 0, 1616, 1617, 7, 6, 0, 0, 1617, 1618, 7, 22, 0, 0, 1618, 1619, 7, 15, 0, 0, 1619, 1620, 7, 7, 0, 0, 1620, 100, 1, 0, 0, 0, 1621, 1622, 7, 14, 0, 0, 1622, 1623, 7, 19, 0, 0, 1623, 1624, 7, 7, 0, 0, 1624, 1625, 7, 9, 0, 0, 1625, 1626, 7, 16, 0, 0, 1626, 1627, 7, 13, 0, 0, 1627, 1628, 7, 5, 0, 0, 1628, 1629, 7, 17, 0, 0, 1629, 1630, 7, 7, 0, 0, 1630, 1631, 7, 16, 0, 0, 1631, 102, 1, 0, 0, 0, 1632, 1633, 7, 14, 0, 0, 1633, 1634, 7, 13, 0, 0, 1634, 1635, 7, 10, 0, 0, 1635, 1636, 7, 5, 0, 0, 1636, 1637, 7, 16, 0, 0, 1637, 1638, 7, 10, 0, 0, 1638, 104, 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, 14, 0, 0, 1648, 1649, 7, 5, 0, 0, 1649, 1650, 7, 16, 0, 0, 1650, 1651, 7, 5, 0, 0, 1651, 1652, 7, 6, 0, 0, 1652, 1653, 7, 19, 0, 0, 1653, 1654, 7, 23, 0, 0, 1654, 106, 1, 0, 0, 0, 1655, 1656, 7, 14, 0, 0, 1656, 1657, 7, 22, 0, 0, 1657, 1658, 7, 13, 0, 0, 1658, 1659, 7, 13, 0, 0, 1659, 1660, 7, 10, 0, 0, 1660, 1661, 7, 7, 0, 0, 1661, 1662, 7, 16, 0, 0, 1662, 1663, 5, 95, 0, 0, 1663, 1664, 7, 12, 0, 0, 1664, 1665, 7, 5, 0, 0, 1665, 1666, 7, 16, 0, 0, 1666, 1667, 7, 10, 0, 0, 1667, 108, 1, 0, 0, 0, 1668, 1669, 7, 14, 0, 0, 1669, 1670, 7, 22, 0, 0, 1670, 1671, 7, 13, 0, 0, 1671, 1672, 7, 13, 0, 0, 1672, 1673, 7, 10, 0, 0, 1673, 1674, 7, 7, 0, 0, 1674, 1675, 7, 16, 0, 0, 1675, 1676, 5, 95, 0, 0, 1676, 1677, 7, 13, 0, 0, 1677, 1678, 7, 19, 0, 0, 1678, 1679, 7, 6, 0, 0, 1679, 1680, 7, 10, 0, 0, 1680, 110, 1, 0, 0, 0, 1681, 1682, 7, 14, 0, 0, 1682, 1683, 7, 22, 0, 0, 1683, 1684, 7, 13, 0, 0, 1684, 1685, 7, 13, 0, 0, 1685, 1686, 7, 10, 0, 0, 1686, 1687, 7, 7, 0, 0, 1687, 1688, 7, 16, 0, 0, 1688, 1689, 5, 95, 0, 0, 1689, 1690, 7, 16, 0, 0, 1690, 1691, 7, 17, 0, 0, 1691, 1692, 7, 15, 0, 0, 1692, 1693, 7, 10, 0, 0, 1693, 112, 1, 0, 0, 0, 1694, 1695, 7, 14, 0, 0, 1695, 1696, 7, 22, 0, 0, 1696, 1697, 7, 13, 0, 0, 1697, 1698, 7, 13, 0, 0, 1698, 1699, 7, 10, 0, 0, 1699, 1700, 7, 7, 0, 0, 1700, 1701, 7, 16, 0, 0, 1701, 1702, 5, 95, 0, 0, 1702, 1703, 7, 16, 0, 0, 1703, 1704, 7, 17, 0, 0, 1704, 1705, 7, 15, 0, 0, 1705, 1706, 7, 10, 0, 0, 1706, 1707, 7, 9, 0, 0, 1707, 1708, 7, 16, 0, 0, 1708, 1709, 7, 5, 0, 0, 1709, 1710, 7, 15, 0, 0, 1710, 1711, 7, 24, 0, 0, 1711, 114, 1, 0, 0, 0, 1712, 1713, 7, 14, 0, 0, 1713, 1714, 7, 22, 0, 0, 1714, 1715, 7, 13, 0, 0, 1715, 1716, 7, 13, 0, 0, 1716, 1717, 7, 10, 0, 0, 1717, 1718, 7, 7, 0, 0, 1718, 1719, 7, 16, 0, 0, 1719, 1720, 5, 95, 0, 0, 1720, 1721, 7, 22, 0, 0, 1721, 1722, 7, 9, 0, 0, 1722, 1723, 7, 10, 0, 0, 1723, 1724, 7, 13, 0, 0, 1724, 116, 1, 0, 0, 0, 1725, 1726, 7, 12, 0, 0, 1726, 1727, 7, 10, 0, 0, 1727, 1728, 7, 25, 0, 0, 1728, 1729, 7, 5, 0, 0, 1729, 1730, 7, 22, 0, 0, 1730, 1731, 7, 6, 0, 0, 1731, 1732, 7, 16, 0, 0, 1732, 118, 1, 0, 0, 0, 1733, 1734, 7, 12, 0, 0, 1734, 1735, 7, 10, 0, 0, 1735, 1736, 7, 25, 0, 0, 1736, 1737, 7, 10, 0, 0, 1737, 1738, 7, 13, 0, 0, 1738, 1739, 7, 13, 0, 0, 1739, 1740, 7, 5, 0, 0, 1740, 1741, 7, 18, 0, 0, 1741, 1742, 7, 6, 0, 0, 1742, 1743, 7, 10, 0, 0, 1743, 120, 1, 0, 0, 0, 1744, 1745, 7, 12, 0, 0, 1745, 1746, 7, 10, 0, 0, 1746, 1747, 7, 9, 0, 0, 1747, 1748, 7, 14, 0, 0, 1748, 122, 1, 0, 0, 0, 1749, 1750, 7, 12, 0, 0, 1750, 1751, 7, 17, 0, 0, 1751, 1752, 7, 9, 0, 0, 1752, 1753, 7, 16, 0, 0, 1753, 1754, 7, 17, 0, 0, 1754, 1755, 7, 7, 0, 0, 1755, 1756, 7, 14, 0, 0, 1756, 1757, 7, 16, 0, 0, 1757, 124, 1, 0, 0, 0, 1758, 1759, 7, 12, 0, 0, 1759, 1760, 7, 19, 0, 0, 1760, 126, 1, 0, 0, 0, 1761, 1762, 7, 10, 0, 0, 1762, 1763, 7, 6, 0, 0, 1763, 1764, 7, 9, 0, 0, 1764, 1765, 7, 10, 0, 0, 1765, 128, 1, 0, 0, 0, 1766, 1767, 7, 10, 0, 0, 1767, 1768, 7, 26, 0, 0, 1768, 1769, 7, 14, 0, 0, 1769, 1770, 7, 10, 0, 0, 1770, 1771, 7, 24, 0, 0, 1771, 1772, 7, 16, 0, 0, 1772, 130, 1, 0, 0, 0, 1773, 1774, 7, 25, 0, 0, 1774, 1775, 7, 5, 0, 0, 1775, 1776, 7, 6, 0, 0, 1776, 1777, 7, 9, 0, 0, 1777, 1778, 7, 10, 0, 0, 1778, 132, 1, 0, 0, 0, 1779, 1780, 7, 25, 0, 0, 1780, 1781, 7, 10, 0, 0, 1781, 1782, 7, 16, 0, 0, 1782, 1783, 7, 14, 0, 0, 1783, 1784, 7, 20, 0, 0, 1784, 134, 1, 0, 0, 0, 1785, 1786, 7, 25, 0, 0, 1786, 1787, 7, 19, 0, 0, 1787, 1788, 7, 13, 0, 0, 1788, 136, 1, 0, 0, 0, 1789, 1790, 7, 25, 0, 0, 1790, 1791, 7, 19, 0, 0, 1791, 1792, 7, 13, 0, 0, 1792, 1793, 7, 10, 0, 0, 1793, 1794, 7, 17, 0, 0, 1794, 1795, 7, 23, 0, 0, 1795, 1796, 7, 7, 0, 0, 1796, 138, 1, 0, 0, 0, 1797, 1798, 7, 25, 0, 0, 1798, 1799, 7, 13, 0, 0, 1799, 1800, 7, 19, 0, 0, 1800, 1801, 7, 15, 0, 0, 1801, 140, 1, 0, 0, 0, 1802, 1803, 7, 23, 0, 0, 1803, 1804, 7, 13, 0, 0, 1804, 1805, 7, 5, 0, 0, 1805, 1806, 7, 7, 0, 0, 1806, 1807, 7, 16, 0, 0, 1807, 142, 1, 0, 0, 0, 1808, 1809, 7, 23, 0, 0, 1809, 1810, 7, 13, 0, 0, 1810, 1811, 7, 19, 0, 0, 1811, 1812, 7, 22, 0, 0, 1812, 1813, 7, 24, 0, 0, 1813, 144, 1, 0, 0, 0, 1814, 1815, 7, 20, 0, 0, 1815, 1816, 7, 5, 0, 0, 1816, 1817, 7, 27, 0, 0, 1817, 1818, 7, 17, 0, 0, 1818, 1819, 7, 7, 0, 0, 1819, 1820, 7, 23, 0, 0, 1820, 146, 1, 0, 0, 0, 1821, 1822, 7, 17, 0, 0, 1822, 1823, 7, 7, 0, 0, 1823, 148, 1, 0, 0, 0, 1824, 1825, 7, 17, 0, 0, 1825, 1826, 7, 7, 0, 0, 1826, 1827, 7, 17, 0, 0, 1827, 1828, 7, 16, 0, 0, 1828, 1829, 7, 17, 0, 0, 1829, 1830, 7, 5, 0, 0, 1830, 1831, 7, 6, 0, 0, 1831, 1832, 7, 6, 0, 0, 1832, 1833, 7, 8, 0, 0, 1833, 150, 1, 0, 0, 0, 1834, 1835, 7, 17, 0, 0, 1835, 1836, 7, 7, 0, 0, 1836, 1837, 7, 16, 0, 0, 1837, 1838, 7, 10, 0, 0, 1838, 1839, 7, 13, 0, 0, 1839, 1840, 7, 9, 0, 0, 1840, 1841, 7, 10, 0, 0, 1841, 1842, 7, 14, 0, 0, 1842, 1843, 7, 16, 0, 0, 1843, 152, 1, 0, 0, 0, 1844, 1845, 7, 17, 0, 0, 1845, 1846, 7, 7, 0, 0, 1846, 1847, 7, 16, 0, 0, 1847, 1848, 7, 19, 0, 0, 1848, 154, 1, 0, 0, 0, 1849, 1850, 7, 6, 0, 0, 1850, 1851, 7, 5, 0, 0, 1851, 1852, 7, 16, 0, 0, 1852, 1853, 7, 10, 0, 0, 1853, 1854, 7, 13, 0, 0, 1854, 1855, 7, 5, 0, 0, 1855, 1856, 7, 6, 0, 0, 1856, 156, 1, 0, 0, 0, 1857, 1858, 7, 6, 0, 0, 1858, 1859, 7, 10, 0, 0, 1859, 1860, 7, 5, 0, 0, 1860, 1861, 7, 12, 0, 0, 1861, 1862, 7, 17, 0, 0, 1862, 1863, 7, 7, 0, 0, 1863, 1864, 7, 23, 0, 0, 1864, 158, 1, 0, 0, 0, 1865, 1866, 7, 6, 0, 0, 1866, 1867, 7, 17, 0, 0, 1867, 1868, 7, 15, 0, 0, 1868, 1869, 7, 17, 0, 0, 1869, 1870, 7, 16, 0, 0, 1870, 160, 1, 0, 0, 0, 1871, 1872, 7, 6, 0, 0, 1872, 1873, 7, 19, 0, 0, 1873, 1874, 7, 14, 0, 0, 1874, 1875, 7, 5, 0, 0, 1875, 1876, 7, 6, 0, 0, 1876, 1877, 7, 16, 0, 0, 1877, 1878, 7, 17, 0, 0, 1878, 1879, 7, 15, 0, 0, 1879, 1880, 7, 10, 0, 0, 1880, 162, 1, 0, 0, 0, 1881, 1882, 7, 6, 0, 0, 1882, 1883, 7, 19, 0, 0, 1883, 1884, 7, 14, 0, 0, 1884, 1885, 7, 5, 0, 0, 1885, 1886, 7, 6, 0, 0, 1886, 1887, 7, 16, 0, 0, 1887, 1888, 7, 17, 0, 0, 1888, 1889, 7, 15, 0, 0, 1889, 1890, 7, 10, 0, 0, 1890, 1891, 7, 9, 0, 0, 1891, 1892, 7, 16, 0, 0, 1892, 1893, 7, 5, 0, 0, 1893, 1894, 7, 15, 0, 0, 1894, 1895, 7, 24, 0, 0, 1895, 164, 1, 0, 0, 0, 1896, 1897, 7, 7, 0, 0, 1897, 1898, 7, 19, 0, 0, 1898, 1899, 7, 16, 0, 0, 1899, 166, 1, 0, 0, 0, 1900, 1901, 7, 7, 0, 0, 1901, 1902, 7, 22, 0, 0, 1902, 1903, 7, 6, 0, 0, 1903, 1904, 7, 6, 0, 0, 1904, 168, 1, 0, 0, 0, 1905, 1906, 7, 19, 0, 0, 1906, 1907, 7, 25, 0, 0, 1907, 1908, 7, 25, 0, 0, 1908, 1909, 7, 9, 0, 0, 1909, 1910, 7, 10, 0, 0, 1910, 1911, 7, 16, 0, 0, 1911, 170, 1, 0, 0, 0, 1912, 1913, 7, 19, 0, 0, 1913, 1914, 7, 7, 0, 0, 1914, 172, 1, 0, 0, 0, 1915, 1916, 7, 19, 0, 0, 1916, 1917, 7, 7, 0, 0, 1917, 1918, 7, 6, 0, 0, 1918, 1919, 7, 8, 0, 0, 1919, 174, 1, 0, 0, 0, 1920, 1921, 7, 19, 0, 0, 1921, 1922, 7, 13, 0, 0, 1922, 176, 1, 0, 0, 0, 1923, 1924, 7, 19, 0, 0, 1924, 1925, 7, 13, 0, 0, 1925, 1926, 7, 12, 0, 0, 1926, 1927, 7, 10, 0, 0, 1927, 1928, 7, 13, 0, 0, 1928, 178, 1, 0, 0, 0, 1929, 1930, 7, 24, 0, 0, 1930, 1931, 7, 6, 0, 0, 1931, 1932, 7, 5, 0, 0, 1932, 1933, 7, 14, 0, 0, 1933, 1934, 7, 17, 0, 0, 1934, 1935, 7, 7, 0, 0, 1935, 1936, 7, 23, 0, 0, 1936, 180, 1, 0, 0, 0, 1937, 1938, 7, 24, 0, 0, 1938, 1939, 7, 13, 0, 0, 1939, 1940, 7, 17, 0, 0, 1940, 1941, 7, 15, 0, 0, 1941, 1942, 7, 5, 0, 0, 1942, 1943, 7, 13, 0, 0, 1943, 1944, 7, 8, 0, 0, 1944, 182, 1, 0, 0, 0, 1945, 1946, 7, 13, 0, 0, 1946, 1947, 7, 10, 0, 0, 1947, 1948, 7, 25, 0, 0, 1948, 1949, 7, 10, 0, 0, 1949, 1950, 7, 13, 0, 0, 1950, 1951, 7, 10, 0, 0, 1951, 1952, 7, 7, 0, 0, 1952, 1953, 7, 14, 0, 0, 1953, 1954, 7, 10, 0, 0, 1954, 1955, 7, 9, 0, 0, 1955, 184, 1, 0, 0, 0, 1956, 1957, 7, 13, 0, 0, 1957, 1958, 7, 10, 0, 0, 1958, 1959, 7, 16, 0, 0, 1959, 1960, 7, 22, 0, 0, 1960, 1961, 7, 13, 0, 0, 1961, 1962, 7, 7, 0, 0, 1962, 1963, 7, 17, 0, 0, 1963, 1964, 7, 7, 0, 0, 1964, 1965, 7, 23, 0, 0, 1965, 186, 1, 0, 0, 0, 1966, 1967, 7, 9, 0, 0, 1967, 1968, 7, 10, 0, 0, 1968, 1969, 7, 6, 0, 0, 1969, 1970, 7, 10, 0, 0, 1970, 1971, 7, 14, 0, 0, 1971, 1972, 7, 16, 0, 0, 1972, 188, 1, 0, 0, 0, 1973, 1974, 7, 9, 0, 0, 1974, 1975, 7, 10, 0, 0, 1975, 1976, 7, 9, 0, 0, 1976, 1977, 7, 9, 0, 0, 1977, 1978, 7, 17, 0, 0, 1978, 1979, 7, 19, 0, 0, 1979, 1980, 7, 7, 0, 0, 1980, 1981, 5, 95, 0, 0, 1981, 1982, 7, 22, 0, 0, 1982, 1983, 7, 9, 0, 0, 1983, 1984, 7, 10, 0, 0, 1984, 1985, 7, 13, 0, 0, 1985, 190, 1, 0, 0, 0, 1986, 1987, 7, 9, 0, 0, 1987, 1988, 7, 19, 0, 0, 1988, 1989, 7, 15, 0, 0, 1989, 1990, 7, 10, 0, 0, 1990, 192, 1, 0, 0, 0, 1991, 1992, 7, 9, 0, 0, 1992, 1993, 7, 8, 0, 0, 1993, 1994, 7, 15, 0, 0, 1994, 1995, 7, 15, 0, 0, 1995, 1996, 7, 10, 0, 0, 1996, 1997, 7, 16, 0, 0, 1997, 1998, 7, 13, 0, 0, 1998, 1999, 7, 17, 0, 0, 1999, 2000, 7, 14, 0, 0, 2000, 194, 1, 0, 0, 0, 2001, 2002, 7, 16, 0, 0, 2002, 2003, 7, 5, 0, 0, 2003, 2004, 7, 18, 0, 0, 2004, 2005, 7, 6, 0, 0, 2005, 2006, 7, 10, 0, 0, 2006, 196, 1, 0, 0, 0, 2007, 2008, 7, 11, 0, 0, 2008, 2009, 7, 16, 0, 0, 2009, 2010, 7, 5, 0, 0, 2010, 2011, 7, 18, 0, 0, 2011, 2012, 7, 6, 0, 0, 2012, 2013, 7, 10, 0, 0, 2013, 198, 1, 0, 0, 0, 2014, 2015, 7, 16, 0, 0, 2015, 2016, 7, 20, 0, 0, 2016, 2017, 7, 10, 0, 0, 2017, 2018, 7, 7, 0, 0, 2018, 200, 1, 0, 0, 0, 2019, 2020, 7, 16, 0, 0, 2020, 2021, 7, 19, 0, 0, 2021, 202, 1, 0, 0, 0, 2022, 2023, 7, 12, 0, 0, 2023, 2024, 7, 10, 0, 0, 2024, 2025, 7, 9, 0, 0, 2025, 2026, 7, 14, 0, 0, 2026, 2027, 7, 13, 0, 0, 2027, 2028, 7, 17, 0, 0, 2028, 2029, 7, 18, 0, 0, 2029, 2030, 7, 10, 0, 0, 2030, 204, 1, 0, 0, 0, 2031, 2032, 7, 16, 0, 0, 2032, 2033, 7, 19, 0, 0, 2033, 2034, 7, 24, 0, 0, 2034, 2035, 7, 17, 0, 0, 2035, 2036, 7, 14, 0, 0, 2036, 206, 1, 0, 0, 0, 2037, 2038, 7, 16, 0, 0, 2038, 2039, 7, 19, 0, 0, 2039, 2040, 7, 24, 0, 0, 2040, 2041, 7, 17, 0, 0, 2041, 2042, 7, 14, 0, 0, 2042, 2043, 7, 9, 0, 0, 2043, 208, 1, 0, 0, 0, 2044, 2045, 7, 9, 0, 0, 2045, 2046, 7, 16, 0, 0, 2046, 2047, 7, 13, 0, 0, 2047, 2048, 7, 10, 0, 0, 2048, 2049, 7, 5, 0, 0, 2049, 2050, 7, 15, 0, 0, 2050, 210, 1, 0, 0, 0, 2051, 2052, 7, 11, 0, 0, 2052, 2053, 7, 27, 0, 0, 2053, 2054, 7, 17, 0, 0, 2054, 2055, 7, 10, 0, 0, 2055, 2056, 7, 28, 0, 0, 2056, 212, 1, 0, 0, 0, 2057, 2058, 7, 11, 0, 0, 2058, 2059, 7, 27, 0, 0, 2059, 2060, 7, 17, 0, 0, 2060, 2061, 7, 10, 0, 0, 2061, 2062, 7, 28, 0, 0, 2062, 2063, 7, 9, 0, 0, 2063, 214, 1, 0, 0, 0, 2064, 2065, 7, 16, 0, 0, 2065, 2066, 7, 13, 0, 0, 2066, 2067, 7, 5, 0, 0, 2067, 2068, 7, 17, 0, 0, 2068, 2069, 7, 6, 0, 0, 2069, 2070, 7, 17, 0, 0, 2070, 2071, 7, 7, 0, 0, 2071, 2072, 7, 23, 0, 0, 2072, 216, 1, 0, 0, 0, 2073, 2074, 7, 16, 0, 0, 2074, 2075, 7, 13, 0, 0, 2075, 2076, 7, 22, 0, 0, 2076, 2077, 7, 10, 0, 0, 2077, 218, 1, 0, 0, 0, 2078, 2079, 7, 22, 0, 0, 2079, 2080, 7, 7, 0, 0, 2080, 2081, 7, 17, 0, 0, 2081, 2082, 7, 19, 0, 0, 2082, 2083, 7, 7, 0, 0, 2083, 220, 1, 0, 0, 0, 2084, 2085, 7, 22, 0, 0, 2085, 2086, 7, 7, 0, 0, 2086, 2087, 7, 17, 0, 0, 2087, 2088, 7, 29, 0, 0, 2088, 2089, 7, 22, 0, 0, 2089, 2090, 7, 10, 0, 0, 2090, 222, 1, 0, 0, 0, 2091, 2092, 7, 22, 0, 0, 2092, 2093, 7, 9, 0, 0, 2093, 2094, 7, 10, 0, 0, 2094, 2095, 7, 13, 0, 0, 2095, 224, 1, 0, 0, 0, 2096, 2097, 7, 22, 0, 0, 2097, 2098, 7, 9, 0, 0, 2098, 2099, 7, 17, 0, 0, 2099, 2100, 7, 7, 0, 0, 2100, 2101, 7, 23, 0, 0, 2101, 226, 1, 0, 0, 0, 2102, 2103, 7, 27, 0, 0, 2103, 2104, 7, 5, 0, 0, 2104, 2105, 7, 13, 0, 0, 2105, 2106, 7, 17, 0, 0, 2106, 2107, 7, 5, 0, 0, 2107, 2108, 7, 12, 0, 0, 2108, 2109, 7, 17, 0, 0, 2109, 2110, 7, 14, 0, 0, 2110, 228, 1, 0, 0, 0, 2111, 2112, 7, 28, 0, 0, 2112, 2113, 7, 20, 0, 0, 2113, 2114, 7, 10, 0, 0, 2114, 2115, 7, 7, 0, 0, 2115, 230, 1, 0, 0, 0, 2116, 2117, 7, 28, 0, 0, 2117, 2118, 7, 20, 0, 0, 2118, 2119, 7, 10, 0, 0, 2119, 2120, 7, 13, 0, 0, 2120, 2121, 7, 10, 0, 0, 2121, 232, 1, 0, 0, 0, 2122, 2123, 7, 28, 0, 0, 2123, 2124, 7, 17, 0, 0, 2124, 2125, 7, 7, 0, 0, 2125, 2126, 7, 12, 0, 0, 2126, 2127, 7, 19, 0, 0, 2127, 2128, 7, 28, 0, 0, 2128, 234, 1, 0, 0, 0, 2129, 2130, 7, 28, 0, 0, 2130, 2131, 7, 17, 0, 0, 2131, 2132, 7, 16, 0, 0, 2132, 2133, 7, 20, 0, 0, 2133, 236, 1, 0, 0, 0, 2134, 2135, 7, 5, 0, 0, 2135, 2136, 7, 22, 0, 0, 2136, 2137, 7, 16, 0, 0, 2137, 2138, 7, 20, 0, 0, 2138, 2139, 7, 19, 0, 0, 2139, 2140, 7, 13, 0, 0, 2140, 2141, 7, 17, 0, 0, 2141, 2142, 7, 11, 0, 0, 2142, 2143, 7, 5, 0, 0, 2143, 2144, 7, 16, 0, 0, 2144, 2145, 7, 17, 0, 0, 2145, 2146, 7, 19, 0, 0, 2146, 2147, 7, 7, 0, 0, 2147, 238, 1, 0, 0, 0, 2148, 2149, 7, 18, 0, 0, 2149, 2150, 7, 17, 0, 0, 2150, 2151, 7, 7, 0, 0, 2151, 2152, 7, 5, 0, 0, 2152, 2153, 7, 13, 0, 0, 2153, 2154, 7, 8, 0, 0, 2154, 240, 1, 0, 0, 0, 2155, 2156, 7, 14, 0, 0, 2156, 2157, 7, 19, 0, 0, 2157, 2158, 7, 6, 0, 0, 2158, 2159, 7, 6, 0, 0, 2159, 2160, 7, 5, 0, 0, 2160, 2161, 7, 16, 0, 0, 2161, 2162, 7, 17, 0, 0, 2162, 2163, 7, 19, 0, 0, 2163, 2164, 7, 7, 0, 0, 2164, 242, 1, 0, 0, 0, 2165, 2166, 7, 14, 0, 0, 2166, 2167, 7, 19, 0, 0, 2167, 2168, 7, 7, 0, 0, 2168, 2169, 7, 14, 0, 0, 2169, 2170, 7, 22, 0, 0, 2170, 2171, 7, 13, 0, 0, 2171, 2172, 7, 13, 0, 0, 2172, 2173, 7, 10, 0, 0, 2173, 2174, 7, 7, 0, 0, 2174, 2175, 7, 16, 0, 0, 2175, 2176, 7, 6, 0, 0, 2176, 2177, 7, 8, 0, 0, 2177, 244, 1, 0, 0, 0, 2178, 2179, 7, 14, 0, 0, 2179, 2180, 7, 13, 0, 0, 2180, 2181, 7, 19, 0, 0, 2181, 2182, 7, 9, 0, 0, 2182, 2183, 7, 9, 0, 0, 2183, 246, 1, 0, 0, 0, 2184, 2185, 7, 14, 0, 0, 2185, 2186, 7, 22, 0, 0, 2186, 2187, 7, 13, 0, 0, 2187, 2188, 7, 13, 0, 0, 2188, 2189, 7, 10, 0, 0, 2189, 2190, 7, 7, 0, 0, 2190, 2191, 7, 16, 0, 0, 2191, 2192, 5, 95, 0, 0, 2192, 2193, 7, 9, 0, 0, 2193, 2194, 7, 14, 0, 0, 2194, 2195, 7, 20, 0, 0, 2195, 2196, 7, 10, 0, 0, 2196, 2197, 7, 15, 0, 0, 2197, 2198, 7, 5, 0, 0, 2198, 248, 1, 0, 0, 0, 2199, 2200, 7, 25, 0, 0, 2200, 2201, 7, 13, 0, 0, 2201, 2202, 7, 10, 0, 0, 2202, 2203, 7, 10, 0, 0, 2203, 2204, 7, 11, 0, 0, 2204, 2205, 7, 10, 0, 0, 2205, 250, 1, 0, 0, 0, 2206, 2207, 7, 25, 0, 0, 2207, 2208, 7, 22, 0, 0, 2208, 2209, 7, 6, 0, 0, 2209, 2210, 7, 6, 0, 0, 2210, 252, 1, 0, 0, 0, 2211, 2212, 7, 17, 0, 0, 2212, 2213, 7, 6, 0, 0, 2213, 2214, 7, 17, 0, 0, 2214, 2215, 7, 21, 0, 0, 2215, 2216, 7, 10, 0, 0, 2216, 254, 1, 0, 0, 0, 2217, 2218, 7, 17, 0, 0, 2218, 2219, 7, 7, 0, 0, 2219, 2220, 7, 7, 0, 0, 2220, 2221, 7, 10, 0, 0, 2221, 2222, 7, 13, 0, 0, 2222, 256, 1, 0, 0, 0, 2223, 2224, 7, 17, 0, 0, 2224, 2225, 7, 9, 0, 0, 2225, 258, 1, 0, 0, 0, 2226, 2227, 7, 17, 0, 0, 2227, 2228, 7, 9, 0, 0, 2228, 2229, 7, 7, 0, 0, 2229, 2230, 7, 22, 0, 0, 2230, 2231, 7, 6, 0, 0, 2231, 2232, 7, 6, 0, 0, 2232, 260, 1, 0, 0, 0, 2233, 2234, 7, 30, 0, 0, 2234, 2235, 7, 19, 0, 0, 2235, 2236, 7, 17, 0, 0, 2236, 2237, 7, 7, 0, 0, 2237, 262, 1, 0, 0, 0, 2238, 2239, 7, 6, 0, 0, 2239, 2240, 7, 10, 0, 0, 2240, 2241, 7, 25, 0, 0, 2241, 2242, 7, 16, 0, 0, 2242, 264, 1, 0, 0, 0, 2243, 2244, 7, 6, 0, 0, 2244, 2245, 7, 17, 0, 0, 2245, 2246, 7, 21, 0, 0, 2246, 2247, 7, 10, 0, 0, 2247, 266, 1, 0, 0, 0, 2248, 2249, 7, 7, 0, 0, 2249, 2250, 7, 5, 0, 0, 2250, 2251, 7, 16, 0, 0, 2251, 2252, 7, 22, 0, 0, 2252, 2253, 7, 13, 0, 0, 2253, 2254, 7, 5, 0, 0, 2254, 2255, 7, 6, 0, 0, 2255, 268, 1, 0, 0, 0, 2256, 2257, 7, 7, 0, 0, 2257, 2258, 7, 19, 0, 0, 2258, 2259, 7, 16, 0, 0, 2259, 2260, 7, 7, 0, 0, 2260, 2261, 7, 22, 0, 0, 2261, 2262, 7, 6, 0, 0, 2262, 2263, 7, 6, 0, 0, 2263, 270, 1, 0, 0, 0, 2264, 2265, 7, 19, 0, 0, 2265, 2266, 7, 22, 0, 0, 2266, 2267, 7, 16, 0, 0, 2267, 2268, 7, 10, 0, 0, 2268, 2269, 7, 13, 0, 0, 2269, 272, 1, 0, 0, 0, 2270, 2271, 7, 19, 0, 0, 2271, 2272, 7, 27, 0, 0, 2272, 2273, 7, 10, 0, 0, 2273, 2274, 7, 13, 0, 0, 2274, 274, 1, 0, 0, 0, 2275, 2276, 7, 19, 0, 0, 2276, 2277, 7, 27, 0, 0, 2277, 2278, 7, 10, 0, 0, 2278, 2279, 7, 13, 0, 0, 2279, 2280, 7, 6, 0, 0, 2280, 2281, 7, 5, 0, 0, 2281, 2282, 7, 24, 0, 0, 2282, 2283, 7, 9, 0, 0, 2283, 276, 1, 0, 0, 0, 2284, 2285, 7, 13, 0, 0, 2285, 2286, 7, 17, 0, 0, 2286, 2287, 7, 23, 0, 0, 2287, 2288, 7, 20, 0, 0, 2288, 2289, 7, 16, 0, 0, 2289, 278, 1, 0, 0, 0, 2290, 2291, 7, 9, 0, 0, 2291, 2292, 7, 17, 0, 0, 2292, 2293, 7, 15, 0, 0, 2293, 2294, 7, 17, 0, 0, 2294, 2295, 7, 6, 0, 0, 2295, 2296, 7, 5, 0, 0, 2296, 2297, 7, 13, 0, 0, 2297, 280, 1, 0, 0, 0, 2298, 2299, 7, 27, 0, 0, 2299, 2300, 7, 10, 0, 0, 2300, 2301, 7, 13, 0, 0, 2301, 2302, 7, 18, 0, 0, 2302, 2303, 7, 19, 0, 0, 2303, 2304, 7, 9, 0, 0, 2304, 2305, 7, 10, 0, 0, 2305, 282, 1, 0, 0, 0, 2306, 2307, 7, 5, 0, 0, 2307, 2308, 7, 18, 0, 0, 2308, 2309, 7, 19, 0, 0, 2309, 2310, 7, 13, 0, 0, 2310, 2311, 7, 16, 0, 0, 2311, 284, 1, 0, 0, 0, 2312, 2313, 7, 5, 0, 0, 2313, 2314, 7, 18, 0, 0, 2314, 2315, 7, 9, 0, 0, 2315, 2316, 7, 19, 0, 0, 2316, 2317, 7, 6, 0, 0, 2317, 2318, 7, 22, 0, 0, 2318, 2319, 7, 16, 0, 0, 2319, 2320, 7, 10, 0, 0, 2320, 286, 1, 0, 0, 0, 2321, 2322, 7, 5, 0, 0, 2322, 2323, 7, 14, 0, 0, 2323, 2324, 7, 14, 0, 0, 2324, 2325, 7, 10, 0, 0, 2325, 2326, 7, 9, 0, 0, 2326, 2327, 7, 9, 0, 0, 2327, 288, 1, 0, 0, 0, 2328, 2329, 7, 5, 0, 0, 2329, 2330, 7, 14, 0, 0, 2330, 2331, 7, 16, 0, 0, 2331, 2332, 7, 17, 0, 0, 2332, 2333, 7, 19, 0, 0, 2333, 2334, 7, 7, 0, 0, 2334, 290, 1, 0, 0, 0, 2335, 2336, 7, 5, 0, 0, 2336, 2337, 7, 12, 0, 0, 2337, 2338, 7, 12, 0, 0, 2338, 292, 1, 0, 0, 0, 2339, 2340, 7, 5, 0, 0, 2340, 2341, 7, 12, 0, 0, 2341, 2342, 7, 15, 0, 0, 2342, 2343, 7, 17, 0, 0, 2343, 2344, 7, 7, 0, 0, 2344, 294, 1, 0, 0, 0, 2345, 2346, 7, 5, 0, 0, 2346, 2347, 7, 25, 0, 0, 2347, 2348, 7, 16, 0, 0, 2348, 2349, 7, 10, 0, 0, 2349, 2350, 7, 13, 0, 0, 2350, 296, 1, 0, 0, 0, 2351, 2352, 7, 5, 0, 0, 2352, 2353, 7, 23, 0, 0, 2353, 2354, 7, 23, 0, 0, 2354, 2355, 7, 13, 0, 0, 2355, 2356, 7, 10, 0, 0, 2356, 2357, 7, 23, 0, 0, 2357, 2358, 7, 5, 0, 0, 2358, 2359, 7, 16, 0, 0, 2359, 2360, 7, 10, 0, 0, 2360, 298, 1, 0, 0, 0, 2361, 2362, 7, 5, 0, 0, 2362, 2363, 7, 6, 0, 0, 2363, 2364, 7, 9, 0, 0, 2364, 2365, 7, 19, 0, 0, 2365, 300, 1, 0, 0, 0, 2366, 2367, 7, 5, 0, 0, 2367, 2368, 7, 6, 0, 0, 2368, 2369, 7, 16, 0, 0, 2369, 2370, 7, 10, 0, 0, 2370, 2371, 7, 13, 0, 0, 2371, 302, 1, 0, 0, 0, 2372, 2373, 7, 5, 0, 0, 2373, 2374, 7, 6, 0, 0, 2374, 2375, 7, 28, 0, 0, 2375, 2376, 7, 5, 0, 0, 2376, 2377, 7, 8, 0, 0, 2377, 2378, 7, 9, 0, 0, 2378, 304, 1, 0, 0, 0, 2379, 2380, 7, 5, 0, 0, 2380, 2381, 7, 9, 0, 0, 2381, 2382, 7, 9, 0, 0, 2382, 2383, 7, 10, 0, 0, 2383, 2384, 7, 13, 0, 0, 2384, 2385, 7, 16, 0, 0, 2385, 2386, 7, 17, 0, 0, 2386, 2387, 7, 19, 0, 0, 2387, 2388, 7, 7, 0, 0, 2388, 306, 1, 0, 0, 0, 2389, 2390, 7, 5, 0, 0, 2390, 2391, 7, 9, 0, 0, 2391, 2392, 7, 9, 0, 0, 2392, 2393, 7, 17, 0, 0, 2393, 2394, 7, 23, 0, 0, 2394, 2395, 7, 7, 0, 0, 2395, 2396, 7, 15, 0, 0, 2396, 2397, 7, 10, 0, 0, 2397, 2398, 7, 7, 0, 0, 2398, 2399, 7, 16, 0, 0, 2399, 308, 1, 0, 0, 0, 2400, 2401, 7, 5, 0, 0, 2401, 2402, 7, 16, 0, 0, 2402, 310, 1, 0, 0, 0, 2403, 2404, 7, 5, 0, 0, 2404, 2405, 7, 16, 0, 0, 2405, 2406, 7, 16, 0, 0, 2406, 2407, 7, 13, 0, 0, 2407, 2408, 7, 17, 0, 0, 2408, 2409, 7, 18, 0, 0, 2409, 2410, 7, 22, 0, 0, 2410, 2411, 7, 16, 0, 0, 2411, 2412, 7, 10, 0, 0, 2412, 312, 1, 0, 0, 0, 2413, 2414, 7, 18, 0, 0, 2414, 2415, 7, 5, 0, 0, 2415, 2416, 7, 14, 0, 0, 2416, 2417, 7, 21, 0, 0, 2417, 2418, 7, 28, 0, 0, 2418, 2419, 7, 5, 0, 0, 2419, 2420, 7, 13, 0, 0, 2420, 2421, 7, 12, 0, 0, 2421, 314, 1, 0, 0, 0, 2422, 2423, 7, 18, 0, 0, 2423, 2424, 7, 10, 0, 0, 2424, 2425, 7, 25, 0, 0, 2425, 2426, 7, 19, 0, 0, 2426, 2427, 7, 13, 0, 0, 2427, 2428, 7, 10, 0, 0, 2428, 316, 1, 0, 0, 0, 2429, 2430, 7, 18, 0, 0, 2430, 2431, 7, 10, 0, 0, 2431, 2432, 7, 23, 0, 0, 2432, 2433, 7, 17, 0, 0, 2433, 2434, 7, 7, 0, 0, 2434, 318, 1, 0, 0, 0, 2435, 2436, 7, 18, 0, 0, 2436, 2437, 7, 8, 0, 0, 2437, 320, 1, 0, 0, 0, 2438, 2439, 7, 14, 0, 0, 2439, 2440, 7, 5, 0, 0, 2440, 2441, 7, 14, 0, 0, 2441, 2442, 7, 20, 0, 0, 2442, 2443, 7, 10, 0, 0, 2443, 322, 1, 0, 0, 0, 2444, 2445, 7, 14, 0, 0, 2445, 2446, 7, 5, 0, 0, 2446, 2447, 7, 6, 0, 0, 2447, 2448, 7, 6, 0, 0, 2448, 2449, 7, 10, 0, 0, 2449, 2450, 7, 12, 0, 0, 2450, 324, 1, 0, 0, 0, 2451, 2452, 7, 14, 0, 0, 2452, 2453, 7, 5, 0, 0, 2453, 2454, 7, 9, 0, 0, 2454, 2455, 7, 14, 0, 0, 2455, 2456, 7, 5, 0, 0, 2456, 2457, 7, 12, 0, 0, 2457, 2458, 7, 10, 0, 0, 2458, 326, 1, 0, 0, 0, 2459, 2460, 7, 14, 0, 0, 2460, 2461, 7, 5, 0, 0, 2461, 2462, 7, 9, 0, 0, 2462, 2463, 7, 14, 0, 0, 2463, 2464, 7, 5, 0, 0, 2464, 2465, 7, 12, 0, 0, 2465, 2466, 7, 10, 0, 0, 2466, 2467, 7, 12, 0, 0, 2467, 328, 1, 0, 0, 0, 2468, 2469, 7, 14, 0, 0, 2469, 2470, 7, 5, 0, 0, 2470, 2471, 7, 16, 0, 0, 2471, 2472, 7, 5, 0, 0, 2472, 2473, 7, 6, 0, 0, 2473, 2474, 7, 19, 0, 0, 2474, 2475, 7, 23, 0, 0, 2475, 330, 1, 0, 0, 0, 2476, 2477, 7, 14, 0, 0, 2477, 2478, 7, 20, 0, 0, 2478, 2479, 7, 5, 0, 0, 2479, 2480, 7, 17, 0, 0, 2480, 2481, 7, 7, 0, 0, 2481, 332, 1, 0, 0, 0, 2482, 2483, 7, 14, 0, 0, 2483, 2484, 7, 20, 0, 0, 2484, 2485, 7, 5, 0, 0, 2485, 2486, 7, 13, 0, 0, 2486, 2487, 7, 5, 0, 0, 2487, 2488, 7, 14, 0, 0, 2488, 2489, 7, 16, 0, 0, 2489, 2490, 7, 10, 0, 0, 2490, 2491, 7, 13, 0, 0, 2491, 2492, 7, 17, 0, 0, 2492, 2493, 7, 9, 0, 0, 2493, 2494, 7, 16, 0, 0, 2494, 2495, 7, 17, 0, 0, 2495, 2496, 7, 14, 0, 0, 2496, 2497, 7, 9, 0, 0, 2497, 334, 1, 0, 0, 0, 2498, 2499, 7, 14, 0, 0, 2499, 2500, 7, 20, 0, 0, 2500, 2501, 7, 10, 0, 0, 2501, 2502, 7, 14, 0, 0, 2502, 2503, 7, 21, 0, 0, 2503, 2504, 7, 24, 0, 0, 2504, 2505, 7, 19, 0, 0, 2505, 2506, 7, 17, 0, 0, 2506, 2507, 7, 7, 0, 0, 2507, 2508, 7, 16, 0, 0, 2508, 336, 1, 0, 0, 0, 2509, 2510, 7, 14, 0, 0, 2510, 2511, 7, 6, 0, 0, 2511, 2512, 7, 5, 0, 0, 2512, 2513, 7, 9, 0, 0, 2513, 2514, 7, 9, 0, 0, 2514, 338, 1, 0, 0, 0, 2515, 2516, 7, 14, 0, 0, 2516, 2517, 7, 6, 0, 0, 2517, 2518, 7, 19, 0, 0, 2518, 2519, 7, 9, 0, 0, 2519, 2520, 7, 10, 0, 0, 2520, 340, 1, 0, 0, 0, 2521, 2522, 7, 14, 0, 0, 2522, 2523, 7, 6, 0, 0, 2523, 2524, 7, 22, 0, 0, 2524, 2525, 7, 9, 0, 0, 2525, 2526, 7, 16, 0, 0, 2526, 2527, 7, 10, 0, 0, 2527, 2528, 7, 13, 0, 0, 2528, 342, 1, 0, 0, 0, 2529, 2530, 7, 14, 0, 0, 2530, 2531, 7, 19, 0, 0, 2531, 2532, 7, 15, 0, 0, 2532, 2533, 7, 15, 0, 0, 2533, 2534, 7, 10, 0, 0, 2534, 2535, 7, 7, 0, 0, 2535, 2536, 7, 16, 0, 0, 2536, 344, 1, 0, 0, 0, 2537, 2538, 7, 14, 0, 0, 2538, 2539, 7, 19, 0, 0, 2539, 2540, 7, 15, 0, 0, 2540, 2541, 7, 15, 0, 0, 2541, 2542, 7, 10, 0, 0, 2542, 2543, 7, 7, 0, 0, 2543, 2544, 7, 16, 0, 0, 2544, 2545, 7, 9, 0, 0, 2545, 346, 1, 0, 0, 0, 2546, 2547, 7, 14, 0, 0, 2547, 2548, 7, 19, 0, 0, 2548, 2549, 7, 15, 0, 0, 2549, 2550, 7, 15, 0, 0, 2550, 2551, 7, 17, 0, 0, 2551, 2552, 7, 16, 0, 0, 2552, 348, 1, 0, 0, 0, 2553, 2554, 7, 14, 0, 0, 2554, 2555, 7, 19, 0, 0, 2555, 2556, 7, 15, 0, 0, 2556, 2557, 7, 15, 0, 0, 2557, 2558, 7, 17, 0, 0, 2558, 2559, 7, 16, 0, 0, 2559, 2560, 7, 16, 0, 0, 2560, 2561, 7, 10, 0, 0, 2561, 2562, 7, 12, 0, 0, 2562, 350, 1, 0, 0, 0, 2563, 2564, 7, 14, 0, 0, 2564, 2565, 7, 19, 0, 0, 2565, 2566, 7, 7, 0, 0, 2566, 2567, 7, 25, 0, 0, 2567, 2568, 7, 17, 0, 0, 2568, 2569, 7, 23, 0, 0, 2569, 2570, 7, 22, 0, 0, 2570, 2571, 7, 13, 0, 0, 2571, 2572, 7, 5, 0, 0, 2572, 2573, 7, 16, 0, 0, 2573, 2574, 7, 17, 0, 0, 2574, 2575, 7, 19, 0, 0, 2575, 2576, 7, 7, 0, 0, 2576, 352, 1, 0, 0, 0, 2577, 2578, 7, 14, 0, 0, 2578, 2579, 7, 19, 0, 0, 2579, 2580, 7, 7, 0, 0, 2580, 2581, 7, 7, 0, 0, 2581, 2582, 7, 10, 0, 0, 2582, 2583, 7, 14, 0, 0, 2583, 2584, 7, 16, 0, 0, 2584, 2585, 7, 17, 0, 0, 2585, 2586, 7, 19, 0, 0, 2586, 2587, 7, 7, 0, 0, 2587, 354, 1, 0, 0, 0, 2588, 2589, 7, 14, 0, 0, 2589, 2590, 7, 19, 0, 0, 2590, 2591, 7, 7, 0, 0, 2591, 2592, 7, 9, 0, 0, 2592, 2593, 7, 16, 0, 0, 2593, 2594, 7, 13, 0, 0, 2594, 2595, 7, 5, 0, 0, 2595, 2596, 7, 17, 0, 0, 2596, 2597, 7, 7, 0, 0, 2597, 2598, 7, 16, 0, 0, 2598, 2599, 7, 9, 0, 0, 2599, 356, 1, 0, 0, 0, 2600, 2601, 7, 14, 0, 0, 2601, 2602, 7, 19, 0, 0, 2602, 2603, 7, 7, 0, 0, 2603, 2604, 7, 16, 0, 0, 2604, 2605, 7, 10, 0, 0, 2605, 2606, 7, 7, 0, 0, 2606, 2607, 7, 16, 0, 0, 2607, 358, 1, 0, 0, 0, 2608, 2609, 7, 14, 0, 0, 2609, 2610, 7, 19, 0, 0, 2610, 2611, 7, 7, 0, 0, 2611, 2612, 7, 16, 0, 0, 2612, 2613, 7, 17, 0, 0, 2613, 2614, 7, 7, 0, 0, 2614, 2615, 7, 22, 0, 0, 2615, 2616, 7, 10, 0, 0, 2616, 360, 1, 0, 0, 0, 2617, 2618, 7, 14, 0, 0, 2618, 2619, 7, 19, 0, 0, 2619, 2620, 7, 7, 0, 0, 2620, 2621, 7, 27, 0, 0, 2621, 2622, 7, 10, 0, 0, 2622, 2623, 7, 13, 0, 0, 2623, 2624, 7, 9, 0, 0, 2624, 2625, 7, 17, 0, 0, 2625, 2626, 7, 19, 0, 0, 2626, 2627, 7, 7, 0, 0, 2627, 362, 1, 0, 0, 0, 2628, 2629, 7, 14, 0, 0, 2629, 2630, 7, 19, 0, 0, 2630, 2631, 7, 24, 0, 0, 2631, 2632, 7, 8, 0, 0, 2632, 364, 1, 0, 0, 0, 2633, 2634, 7, 14, 0, 0, 2634, 2635, 7, 19, 0, 0, 2635, 2636, 7, 9, 0, 0, 2636, 2637, 7, 16, 0, 0, 2637, 366, 1, 0, 0, 0, 2638, 2639, 7, 14, 0, 0, 2639, 2640, 7, 9, 0, 0, 2640, 2641, 7, 27, 0, 0, 2641, 368, 1, 0, 0, 0, 2642, 2643, 7, 14, 0, 0, 2643, 2644, 7, 22, 0, 0, 2644, 2645, 7, 13, 0, 0, 2645, 2646, 7, 9, 0, 0, 2646, 2647, 7, 19, 0, 0, 2647, 2648, 7, 13, 0, 0, 2648, 370, 1, 0, 0, 0, 2649, 2650, 7, 14, 0, 0, 2650, 2651, 7, 8, 0, 0, 2651, 2652, 7, 14, 0, 0, 2652, 2653, 7, 6, 0, 0, 2653, 2654, 7, 10, 0, 0, 2654, 372, 1, 0, 0, 0, 2655, 2656, 7, 12, 0, 0, 2656, 2657, 7, 5, 0, 0, 2657, 2658, 7, 16, 0, 0, 2658, 2659, 7, 5, 0, 0, 2659, 374, 1, 0, 0, 0, 2660, 2661, 7, 12, 0, 0, 2661, 2662, 7, 5, 0, 0, 2662, 2663, 7, 16, 0, 0, 2663, 2664, 7, 5, 0, 0, 2664, 2665, 7, 18, 0, 0, 2665, 2666, 7, 5, 0, 0, 2666, 2667, 7, 9, 0, 0, 2667, 2668, 7, 10, 0, 0, 2668, 376, 1, 0, 0, 0, 2669, 2670, 7, 12, 0, 0, 2670, 2671, 7, 5, 0, 0, 2671, 2672, 7, 8, 0, 0, 2672, 378, 1, 0, 0, 0, 2673, 2674, 7, 12, 0, 0, 2674, 2675, 7, 10, 0, 0, 2675, 2676, 7, 5, 0, 0, 2676, 2677, 7, 6, 0, 0, 2677, 2678, 7, 6, 0, 0, 2678, 2679, 7, 19, 0, 0, 2679, 2680, 7, 14, 0, 0, 2680, 2681, 7, 5, 0, 0, 2681, 2682, 7, 16, 0, 0, 2682, 2683, 7, 10, 0, 0, 2683, 380, 1, 0, 0, 0, 2684, 2685, 7, 12, 0, 0, 2685, 2686, 7, 10, 0, 0, 2686, 2687, 7, 14, 0, 0, 2687, 2688, 7, 6, 0, 0, 2688, 2689, 7, 5, 0, 0, 2689, 2690, 7, 13, 0, 0, 2690, 2691, 7, 10, 0, 0, 2691, 382, 1, 0, 0, 0, 2692, 2693, 7, 12, 0, 0, 2693, 2694, 7, 10, 0, 0, 2694, 2695, 7, 25, 0, 0, 2695, 2696, 7, 5, 0, 0, 2696, 2697, 7, 22, 0, 0, 2697, 2698, 7, 6, 0, 0, 2698, 2699, 7, 16, 0, 0, 2699, 2700, 7, 9, 0, 0, 2700, 384, 1, 0, 0, 0, 2701, 2702, 7, 12, 0, 0, 2702, 2703, 7, 10, 0, 0, 2703, 2704, 7, 25, 0, 0, 2704, 2705, 7, 10, 0, 0, 2705, 2706, 7, 13, 0, 0, 2706, 2707, 7, 13, 0, 0, 2707, 2708, 7, 10, 0, 0, 2708, 2709, 7, 12, 0, 0, 2709, 386, 1, 0, 0, 0, 2710, 2711, 7, 12, 0, 0, 2711, 2712, 7, 10, 0, 0, 2712, 2713, 7, 25, 0, 0, 2713, 2714, 7, 17, 0, 0, 2714, 2715, 7, 7, 0, 0, 2715, 2716, 7, 10, 0, 0, 2716, 2717, 7, 13, 0, 0, 2717, 388, 1, 0, 0, 0, 2718, 2719, 7, 12, 0, 0, 2719, 2720, 7, 10, 0, 0, 2720, 2721, 7, 6, 0, 0, 2721, 2722, 7, 10, 0, 0, 2722, 2723, 7, 16, 0, 0, 2723, 2724, 7, 10, 0, 0, 2724, 390, 1, 0, 0, 0, 2725, 2726, 7, 12, 0, 0, 2726, 2727, 7, 10, 0, 0, 2727, 2728, 7, 6, 0, 0, 2728, 2729, 7, 17, 0, 0, 2729, 2730, 7, 15, 0, 0, 2730, 2731, 7, 17, 0, 0, 2731, 2732, 7, 16, 0, 0, 2732, 2733, 7, 10, 0, 0, 2733, 2734, 7, 13, 0, 0, 2734, 392, 1, 0, 0, 0, 2735, 2736, 7, 12, 0, 0, 2736, 2737, 7, 10, 0, 0, 2737, 2738, 7, 6, 0, 0, 2738, 2739, 7, 17, 0, 0, 2739, 2740, 7, 15, 0, 0, 2740, 2741, 7, 17, 0, 0, 2741, 2742, 7, 16, 0, 0, 2742, 2743, 7, 10, 0, 0, 2743, 2744, 7, 13, 0, 0, 2744, 2745, 7, 9, 0, 0, 2745, 394, 1, 0, 0, 0, 2746, 2747, 7, 12, 0, 0, 2747, 2748, 7, 17, 0, 0, 2748, 2749, 7, 14, 0, 0, 2749, 2750, 7, 16, 0, 0, 2750, 2751, 7, 17, 0, 0, 2751, 2752, 7, 19, 0, 0, 2752, 2753, 7, 7, 0, 0, 2753, 2754, 7, 5, 0, 0, 2754, 2755, 7, 13, 0, 0, 2755, 2756, 7, 8, 0, 0, 2756, 396, 1, 0, 0, 0, 2757, 2758, 7, 12, 0, 0, 2758, 2759, 7, 17, 0, 0, 2759, 2760, 7, 9, 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, 398, 1, 0, 0, 0, 2765, 2766, 7, 12, 0, 0, 2766, 2767, 7, 17, 0, 0, 2767, 2768, 7, 9, 0, 0, 2768, 2769, 7, 14, 0, 0, 2769, 2770, 7, 5, 0, 0, 2770, 2771, 7, 13, 0, 0, 2771, 2772, 7, 12, 0, 0, 2772, 400, 1, 0, 0, 0, 2773, 2774, 7, 12, 0, 0, 2774, 2775, 7, 19, 0, 0, 2775, 2776, 7, 14, 0, 0, 2776, 2777, 7, 22, 0, 0, 2777, 2778, 7, 15, 0, 0, 2778, 2779, 7, 10, 0, 0, 2779, 2780, 7, 7, 0, 0, 2780, 2781, 7, 16, 0, 0, 2781, 402, 1, 0, 0, 0, 2782, 2783, 7, 12, 0, 0, 2783, 2784, 7, 19, 0, 0, 2784, 2785, 7, 15, 0, 0, 2785, 2786, 7, 5, 0, 0, 2786, 2787, 7, 17, 0, 0, 2787, 2788, 7, 7, 0, 0, 2788, 404, 1, 0, 0, 0, 2789, 2790, 7, 12, 0, 0, 2790, 2791, 7, 19, 0, 0, 2791, 2792, 7, 22, 0, 0, 2792, 2793, 7, 18, 0, 0, 2793, 2794, 7, 6, 0, 0, 2794, 2795, 7, 10, 0, 0, 2795, 406, 1, 0, 0, 0, 2796, 2797, 7, 12, 0, 0, 2797, 2798, 7, 13, 0, 0, 2798, 2799, 7, 19, 0, 0, 2799, 2800, 7, 24, 0, 0, 2800, 408, 1, 0, 0, 0, 2801, 2802, 7, 10, 0, 0, 2802, 2803, 7, 5, 0, 0, 2803, 2804, 7, 14, 0, 0, 2804, 2805, 7, 20, 0, 0, 2805, 410, 1, 0, 0, 0, 2806, 2807, 7, 10, 0, 0, 2807, 2808, 7, 7, 0, 0, 2808, 2809, 7, 5, 0, 0, 2809, 2810, 7, 18, 0, 0, 2810, 2811, 7, 6, 0, 0, 2811, 2812, 7, 10, 0, 0, 2812, 412, 1, 0, 0, 0, 2813, 2814, 7, 10, 0, 0, 2814, 2815, 7, 7, 0, 0, 2815, 2816, 7, 14, 0, 0, 2816, 2817, 7, 19, 0, 0, 2817, 2818, 7, 12, 0, 0, 2818, 2819, 7, 17, 0, 0, 2819, 2820, 7, 7, 0, 0, 2820, 2821, 7, 23, 0, 0, 2821, 414, 1, 0, 0, 0, 2822, 2823, 7, 10, 0, 0, 2823, 2824, 7, 7, 0, 0, 2824, 2825, 7, 14, 0, 0, 2825, 2826, 7, 13, 0, 0, 2826, 2827, 7, 8, 0, 0, 2827, 2828, 7, 24, 0, 0, 2828, 2829, 7, 16, 0, 0, 2829, 2830, 7, 10, 0, 0, 2830, 2831, 7, 12, 0, 0, 2831, 416, 1, 0, 0, 0, 2832, 2833, 7, 10, 0, 0, 2833, 2834, 7, 7, 0, 0, 2834, 2835, 7, 22, 0, 0, 2835, 2836, 7, 15, 0, 0, 2836, 418, 1, 0, 0, 0, 2837, 2838, 7, 10, 0, 0, 2838, 2839, 7, 9, 0, 0, 2839, 2840, 7, 14, 0, 0, 2840, 2841, 7, 5, 0, 0, 2841, 2842, 7, 24, 0, 0, 2842, 2843, 7, 10, 0, 0, 2843, 420, 1, 0, 0, 0, 2844, 2845, 7, 10, 0, 0, 2845, 2846, 7, 27, 0, 0, 2846, 2847, 7, 10, 0, 0, 2847, 2848, 7, 7, 0, 0, 2848, 2849, 7, 16, 0, 0, 2849, 422, 1, 0, 0, 0, 2850, 2851, 7, 10, 0, 0, 2851, 2852, 7, 26, 0, 0, 2852, 2853, 7, 14, 0, 0, 2853, 2854, 7, 6, 0, 0, 2854, 2855, 7, 22, 0, 0, 2855, 2856, 7, 12, 0, 0, 2856, 2857, 7, 10, 0, 0, 2857, 424, 1, 0, 0, 0, 2858, 2859, 7, 10, 0, 0, 2859, 2860, 7, 26, 0, 0, 2860, 2861, 7, 14, 0, 0, 2861, 2862, 7, 6, 0, 0, 2862, 2863, 7, 22, 0, 0, 2863, 2864, 7, 12, 0, 0, 2864, 2865, 7, 17, 0, 0, 2865, 2866, 7, 7, 0, 0, 2866, 2867, 7, 23, 0, 0, 2867, 426, 1, 0, 0, 0, 2868, 2869, 7, 10, 0, 0, 2869, 2870, 7, 26, 0, 0, 2870, 2871, 7, 14, 0, 0, 2871, 2872, 7, 6, 0, 0, 2872, 2873, 7, 22, 0, 0, 2873, 2874, 7, 9, 0, 0, 2874, 2875, 7, 17, 0, 0, 2875, 2876, 7, 27, 0, 0, 2876, 2877, 7, 10, 0, 0, 2877, 428, 1, 0, 0, 0, 2878, 2879, 7, 10, 0, 0, 2879, 2880, 7, 26, 0, 0, 2880, 2881, 7, 10, 0, 0, 2881, 2882, 7, 14, 0, 0, 2882, 2883, 7, 22, 0, 0, 2883, 2884, 7, 16, 0, 0, 2884, 2885, 7, 10, 0, 0, 2885, 430, 1, 0, 0, 0, 2886, 2887, 7, 10, 0, 0, 2887, 2888, 7, 26, 0, 0, 2888, 2889, 7, 24, 0, 0, 2889, 2890, 7, 6, 0, 0, 2890, 2891, 7, 5, 0, 0, 2891, 2892, 7, 17, 0, 0, 2892, 2893, 7, 7, 0, 0, 2893, 432, 1, 0, 0, 0, 2894, 2895, 7, 10, 0, 0, 2895, 2896, 7, 26, 0, 0, 2896, 2897, 7, 16, 0, 0, 2897, 2898, 7, 10, 0, 0, 2898, 2899, 7, 7, 0, 0, 2899, 2900, 7, 9, 0, 0, 2900, 2901, 7, 17, 0, 0, 2901, 2902, 7, 19, 0, 0, 2902, 2903, 7, 7, 0, 0, 2903, 434, 1, 0, 0, 0, 2904, 2905, 7, 10, 0, 0, 2905, 2906, 7, 26, 0, 0, 2906, 2907, 7, 16, 0, 0, 2907, 2908, 7, 10, 0, 0, 2908, 2909, 7, 13, 0, 0, 2909, 2910, 7, 7, 0, 0, 2910, 2911, 7, 5, 0, 0, 2911, 2912, 7, 6, 0, 0, 2912, 436, 1, 0, 0, 0, 2913, 2914, 7, 25, 0, 0, 2914, 2915, 7, 5, 0, 0, 2915, 2916, 7, 15, 0, 0, 2916, 2917, 7, 17, 0, 0, 2917, 2918, 7, 6, 0, 0, 2918, 2919, 7, 8, 0, 0, 2919, 438, 1, 0, 0, 0, 2920, 2921, 7, 25, 0, 0, 2921, 2922, 7, 17, 0, 0, 2922, 2923, 7, 13, 0, 0, 2923, 2924, 7, 9, 0, 0, 2924, 2925, 7, 16, 0, 0, 2925, 440, 1, 0, 0, 0, 2926, 2927, 7, 25, 0, 0, 2927, 2928, 7, 19, 0, 0, 2928, 2929, 7, 6, 0, 0, 2929, 2930, 7, 6, 0, 0, 2930, 2931, 7, 19, 0, 0, 2931, 2932, 7, 28, 0, 0, 2932, 2933, 7, 17, 0, 0, 2933, 2934, 7, 7, 0, 0, 2934, 2935, 7, 23, 0, 0, 2935, 442, 1, 0, 0, 0, 2936, 2937, 7, 25, 0, 0, 2937, 2938, 7, 19, 0, 0, 2938, 2939, 7, 13, 0, 0, 2939, 2940, 7, 14, 0, 0, 2940, 2941, 7, 10, 0, 0, 2941, 444, 1, 0, 0, 0, 2942, 2943, 7, 25, 0, 0, 2943, 2944, 7, 19, 0, 0, 2944, 2945, 7, 13, 0, 0, 2945, 2946, 7, 28, 0, 0, 2946, 2947, 7, 5, 0, 0, 2947, 2948, 7, 13, 0, 0, 2948, 2949, 7, 12, 0, 0, 2949, 446, 1, 0, 0, 0, 2950, 2951, 7, 25, 0, 0, 2951, 2952, 7, 22, 0, 0, 2952, 2953, 7, 7, 0, 0, 2953, 2954, 7, 14, 0, 0, 2954, 2955, 7, 16, 0, 0, 2955, 2956, 7, 17, 0, 0, 2956, 2957, 7, 19, 0, 0, 2957, 2958, 7, 7, 0, 0, 2958, 448, 1, 0, 0, 0, 2959, 2960, 7, 25, 0, 0, 2960, 2961, 7, 22, 0, 0, 2961, 2962, 7, 7, 0, 0, 2962, 2963, 7, 14, 0, 0, 2963, 2964, 7, 16, 0, 0, 2964, 2965, 7, 17, 0, 0, 2965, 2966, 7, 19, 0, 0, 2966, 2967, 7, 7, 0, 0, 2967, 2968, 7, 9, 0, 0, 2968, 450, 1, 0, 0, 0, 2969, 2970, 7, 23, 0, 0, 2970, 2971, 7, 6, 0, 0, 2971, 2972, 7, 19, 0, 0, 2972, 2973, 7, 18, 0, 0, 2973, 2974, 7, 5, 0, 0, 2974, 2975, 7, 6, 0, 0, 2975, 452, 1, 0, 0, 0, 2976, 2977, 7, 23, 0, 0, 2977, 2978, 7, 13, 0, 0, 2978, 2979, 7, 5, 0, 0, 2979, 2980, 7, 7, 0, 0, 2980, 2981, 7, 16, 0, 0, 2981, 2982, 7, 10, 0, 0, 2982, 2983, 7, 12, 0, 0, 2983, 454, 1, 0, 0, 0, 2984, 2985, 7, 20, 0, 0, 2985, 2986, 7, 5, 0, 0, 2986, 2987, 7, 7, 0, 0, 2987, 2988, 7, 12, 0, 0, 2988, 2989, 7, 6, 0, 0, 2989, 2990, 7, 10, 0, 0, 2990, 2991, 7, 13, 0, 0, 2991, 456, 1, 0, 0, 0, 2992, 2993, 7, 20, 0, 0, 2993, 2994, 7, 10, 0, 0, 2994, 2995, 7, 5, 0, 0, 2995, 2996, 7, 12, 0, 0, 2996, 2997, 7, 10, 0, 0, 2997, 2998, 7, 13, 0, 0, 2998, 458, 1, 0, 0, 0, 2999, 3000, 7, 20, 0, 0, 3000, 3001, 7, 19, 0, 0, 3001, 3002, 7, 6, 0, 0, 3002, 3003, 7, 12, 0, 0, 3003, 460, 1, 0, 0, 0, 3004, 3005, 7, 20, 0, 0, 3005, 3006, 7, 19, 0, 0, 3006, 3007, 7, 22, 0, 0, 3007, 3008, 7, 13, 0, 0, 3008, 462, 1, 0, 0, 0, 3009, 3010, 7, 17, 0, 0, 3010, 3011, 7, 12, 0, 0, 3011, 3012, 7, 10, 0, 0, 3012, 3013, 7, 7, 0, 0, 3013, 3014, 7, 16, 0, 0, 3014, 3015, 7, 17, 0, 0, 3015, 3016, 7, 16, 0, 0, 3016, 3017, 7, 8, 0, 0, 3017, 464, 1, 0, 0, 0, 3018, 3019, 7, 17, 0, 0, 3019, 3020, 7, 25, 0, 0, 3020, 466, 1, 0, 0, 0, 3021, 3022, 7, 17, 0, 0, 3022, 3023, 7, 15, 0, 0, 3023, 3024, 7, 15, 0, 0, 3024, 3025, 7, 10, 0, 0, 3025, 3026, 7, 12, 0, 0, 3026, 3027, 7, 17, 0, 0, 3027, 3028, 7, 5, 0, 0, 3028, 3029, 7, 16, 0, 0, 3029, 3030, 7, 10, 0, 0, 3030, 468, 1, 0, 0, 0, 3031, 3032, 7, 17, 0, 0, 3032, 3033, 7, 15, 0, 0, 3033, 3034, 7, 15, 0, 0, 3034, 3035, 7, 22, 0, 0, 3035, 3036, 7, 16, 0, 0, 3036, 3037, 7, 5, 0, 0, 3037, 3038, 7, 18, 0, 0, 3038, 3039, 7, 6, 0, 0, 3039, 3040, 7, 10, 0, 0, 3040, 470, 1, 0, 0, 0, 3041, 3042, 7, 17, 0, 0, 3042, 3043, 7, 15, 0, 0, 3043, 3044, 7, 24, 0, 0, 3044, 3045, 7, 6, 0, 0, 3045, 3046, 7, 17, 0, 0, 3046, 3047, 7, 14, 0, 0, 3047, 3048, 7, 17, 0, 0, 3048, 3049, 7, 16, 0, 0, 3049, 472, 1, 0, 0, 0, 3050, 3051, 7, 17, 0, 0, 3051, 3052, 7, 7, 0, 0, 3052, 3053, 7, 14, 0, 0, 3053, 3054, 7, 6, 0, 0, 3054, 3055, 7, 22, 0, 0, 3055, 3056, 7, 12, 0, 0, 3056, 3057, 7, 17, 0, 0, 3057, 3058, 7, 7, 0, 0, 3058, 3059, 7, 23, 0, 0, 3059, 474, 1, 0, 0, 0, 3060, 3061, 7, 17, 0, 0, 3061, 3062, 7, 7, 0, 0, 3062, 3063, 7, 14, 0, 0, 3063, 3064, 7, 13, 0, 0, 3064, 3065, 7, 10, 0, 0, 3065, 3066, 7, 15, 0, 0, 3066, 3067, 7, 10, 0, 0, 3067, 3068, 7, 7, 0, 0, 3068, 3069, 7, 16, 0, 0, 3069, 476, 1, 0, 0, 0, 3070, 3071, 7, 17, 0, 0, 3071, 3072, 7, 7, 0, 0, 3072, 3073, 7, 12, 0, 0, 3073, 3074, 7, 10, 0, 0, 3074, 3075, 7, 26, 0, 0, 3075, 478, 1, 0, 0, 0, 3076, 3077, 7, 17, 0, 0, 3077, 3078, 7, 7, 0, 0, 3078, 3079, 7, 12, 0, 0, 3079, 3080, 7, 10, 0, 0, 3080, 3081, 7, 26, 0, 0, 3081, 3082, 7, 10, 0, 0, 3082, 3083, 7, 9, 0, 0, 3083, 480, 1, 0, 0, 0, 3084, 3085, 7, 17, 0, 0, 3085, 3086, 7, 7, 0, 0, 3086, 3087, 7, 20, 0, 0, 3087, 3088, 7, 10, 0, 0, 3088, 3089, 7, 13, 0, 0, 3089, 3090, 7, 17, 0, 0, 3090, 3091, 7, 16, 0, 0, 3091, 482, 1, 0, 0, 0, 3092, 3093, 7, 17, 0, 0, 3093, 3094, 7, 7, 0, 0, 3094, 3095, 7, 20, 0, 0, 3095, 3096, 7, 10, 0, 0, 3096, 3097, 7, 13, 0, 0, 3097, 3098, 7, 17, 0, 0, 3098, 3099, 7, 16, 0, 0, 3099, 3100, 7, 9, 0, 0, 3100, 484, 1, 0, 0, 0, 3101, 3102, 7, 17, 0, 0, 3102, 3103, 7, 7, 0, 0, 3103, 3104, 7, 6, 0, 0, 3104, 3105, 7, 17, 0, 0, 3105, 3106, 7, 7, 0, 0, 3106, 3107, 7, 10, 0, 0, 3107, 486, 1, 0, 0, 0, 3108, 3109, 7, 17, 0, 0, 3109, 3110, 7, 7, 0, 0, 3110, 3111, 7, 9, 0, 0, 3111, 3112, 7, 10, 0, 0, 3112, 3113, 7, 7, 0, 0, 3113, 3114, 7, 9, 0, 0, 3114, 3115, 7, 17, 0, 0, 3115, 3116, 7, 16, 0, 0, 3116, 3117, 7, 17, 0, 0, 3117, 3118, 7, 27, 0, 0, 3118, 3119, 7, 10, 0, 0, 3119, 488, 1, 0, 0, 0, 3120, 3121, 7, 17, 0, 0, 3121, 3122, 7, 7, 0, 0, 3122, 3123, 7, 9, 0, 0, 3123, 3124, 7, 10, 0, 0, 3124, 3125, 7, 13, 0, 0, 3125, 3126, 7, 16, 0, 0, 3126, 490, 1, 0, 0, 0, 3127, 3128, 7, 17, 0, 0, 3128, 3129, 7, 7, 0, 0, 3129, 3130, 7, 9, 0, 0, 3130, 3131, 7, 16, 0, 0, 3131, 3132, 7, 10, 0, 0, 3132, 3133, 7, 5, 0, 0, 3133, 3134, 7, 12, 0, 0, 3134, 492, 1, 0, 0, 0, 3135, 3136, 7, 17, 0, 0, 3136, 3137, 7, 7, 0, 0, 3137, 3138, 7, 27, 0, 0, 3138, 3139, 7, 19, 0, 0, 3139, 3140, 7, 21, 0, 0, 3140, 3141, 7, 10, 0, 0, 3141, 3142, 7, 13, 0, 0, 3142, 494, 1, 0, 0, 0, 3143, 3144, 7, 17, 0, 0, 3144, 3145, 7, 9, 0, 0, 3145, 3146, 7, 19, 0, 0, 3146, 3147, 7, 6, 0, 0, 3147, 3148, 7, 5, 0, 0, 3148, 3149, 7, 16, 0, 0, 3149, 3150, 7, 17, 0, 0, 3150, 3151, 7, 19, 0, 0, 3151, 3152, 7, 7, 0, 0, 3152, 496, 1, 0, 0, 0, 3153, 3154, 7, 21, 0, 0, 3154, 3155, 7, 10, 0, 0, 3155, 3156, 7, 8, 0, 0, 3156, 498, 1, 0, 0, 0, 3157, 3158, 7, 6, 0, 0, 3158, 3159, 7, 5, 0, 0, 3159, 3160, 7, 18, 0, 0, 3160, 3161, 7, 10, 0, 0, 3161, 3162, 7, 6, 0, 0, 3162, 500, 1, 0, 0, 0, 3163, 3164, 7, 6, 0, 0, 3164, 3165, 7, 5, 0, 0, 3165, 3166, 7, 7, 0, 0, 3166, 3167, 7, 23, 0, 0, 3167, 3168, 7, 22, 0, 0, 3168, 3169, 7, 5, 0, 0, 3169, 3170, 7, 23, 0, 0, 3170, 3171, 7, 10, 0, 0, 3171, 502, 1, 0, 0, 0, 3172, 3173, 7, 6, 0, 0, 3173, 3174, 7, 5, 0, 0, 3174, 3175, 7, 13, 0, 0, 3175, 3176, 7, 23, 0, 0, 3176, 3177, 7, 10, 0, 0, 3177, 504, 1, 0, 0, 0, 3178, 3179, 7, 6, 0, 0, 3179, 3180, 7, 5, 0, 0, 3180, 3181, 7, 9, 0, 0, 3181, 3182, 7, 16, 0, 0, 3182, 506, 1, 0, 0, 0, 3183, 3184, 7, 6, 0, 0, 3184, 3185, 7, 10, 0, 0, 3185, 3186, 7, 5, 0, 0, 3186, 3187, 7, 21, 0, 0, 3187, 3188, 7, 24, 0, 0, 3188, 3189, 7, 13, 0, 0, 3189, 3190, 7, 19, 0, 0, 3190, 3191, 7, 19, 0, 0, 3191, 3192, 7, 25, 0, 0, 3192, 508, 1, 0, 0, 0, 3193, 3194, 7, 6, 0, 0, 3194, 3195, 7, 10, 0, 0, 3195, 3196, 7, 27, 0, 0, 3196, 3197, 7, 10, 0, 0, 3197, 3198, 7, 6, 0, 0, 3198, 510, 1, 0, 0, 0, 3199, 3200, 7, 6, 0, 0, 3200, 3201, 7, 17, 0, 0, 3201, 3202, 7, 9, 0, 0, 3202, 3203, 7, 16, 0, 0, 3203, 3204, 7, 10, 0, 0, 3204, 3205, 7, 7, 0, 0, 3205, 512, 1, 0, 0, 0, 3206, 3207, 7, 6, 0, 0, 3207, 3208, 7, 19, 0, 0, 3208, 3209, 7, 5, 0, 0, 3209, 3210, 7, 12, 0, 0, 3210, 514, 1, 0, 0, 0, 3211, 3212, 7, 6, 0, 0, 3212, 3213, 7, 19, 0, 0, 3213, 3214, 7, 14, 0, 0, 3214, 3215, 7, 5, 0, 0, 3215, 3216, 7, 6, 0, 0, 3216, 516, 1, 0, 0, 0, 3217, 3218, 7, 6, 0, 0, 3218, 3219, 7, 19, 0, 0, 3219, 3220, 7, 14, 0, 0, 3220, 3221, 7, 5, 0, 0, 3221, 3222, 7, 16, 0, 0, 3222, 3223, 7, 17, 0, 0, 3223, 3224, 7, 19, 0, 0, 3224, 3225, 7, 7, 0, 0, 3225, 518, 1, 0, 0, 0, 3226, 3227, 7, 6, 0, 0, 3227, 3228, 7, 19, 0, 0, 3228, 3229, 7, 14, 0, 0, 3229, 3230, 7, 21, 0, 0, 3230, 520, 1, 0, 0, 0, 3231, 3232, 7, 15, 0, 0, 3232, 3233, 7, 5, 0, 0, 3233, 3234, 7, 24, 0, 0, 3234, 3235, 7, 24, 0, 0, 3235, 3236, 7, 17, 0, 0, 3236, 3237, 7, 7, 0, 0, 3237, 3238, 7, 23, 0, 0, 3238, 522, 1, 0, 0, 0, 3239, 3240, 7, 15, 0, 0, 3240, 3241, 7, 5, 0, 0, 3241, 3242, 7, 16, 0, 0, 3242, 3243, 7, 14, 0, 0, 3243, 3244, 7, 20, 0, 0, 3244, 524, 1, 0, 0, 0, 3245, 3246, 7, 15, 0, 0, 3246, 3247, 7, 5, 0, 0, 3247, 3248, 7, 16, 0, 0, 3248, 3249, 7, 14, 0, 0, 3249, 3250, 7, 20, 0, 0, 3250, 3251, 7, 10, 0, 0, 3251, 3252, 7, 12, 0, 0, 3252, 526, 1, 0, 0, 0, 3253, 3254, 7, 15, 0, 0, 3254, 3255, 7, 5, 0, 0, 3255, 3256, 7, 16, 0, 0, 3256, 3257, 7, 10, 0, 0, 3257, 3258, 7, 13, 0, 0, 3258, 3259, 7, 17, 0, 0, 3259, 3260, 7, 5, 0, 0, 3260, 3261, 7, 6, 0, 0, 3261, 3262, 7, 17, 0, 0, 3262, 3263, 7, 11, 0, 0, 3263, 3264, 7, 10, 0, 0, 3264, 3265, 7, 12, 0, 0, 3265, 528, 1, 0, 0, 0, 3266, 3267, 7, 15, 0, 0, 3267, 3268, 7, 5, 0, 0, 3268, 3269, 7, 26, 0, 0, 3269, 3270, 7, 27, 0, 0, 3270, 3271, 7, 5, 0, 0, 3271, 3272, 7, 6, 0, 0, 3272, 3273, 7, 22, 0, 0, 3273, 3274, 7, 10, 0, 0, 3274, 530, 1, 0, 0, 0, 3275, 3276, 7, 15, 0, 0, 3276, 3277, 7, 10, 0, 0, 3277, 3278, 7, 13, 0, 0, 3278, 3279, 7, 23, 0, 0, 3279, 3280, 7, 10, 0, 0, 3280, 532, 1, 0, 0, 0, 3281, 3282, 7, 15, 0, 0, 3282, 3283, 7, 17, 0, 0, 3283, 3284, 7, 7, 0, 0, 3284, 3285, 7, 22, 0, 0, 3285, 3286, 7, 16, 0, 0, 3286, 3287, 7, 10, 0, 0, 3287, 534, 1, 0, 0, 0, 3288, 3289, 7, 15, 0, 0, 3289, 3290, 7, 17, 0, 0, 3290, 3291, 7, 7, 0, 0, 3291, 3292, 7, 27, 0, 0, 3292, 3293, 7, 5, 0, 0, 3293, 3294, 7, 6, 0, 0, 3294, 3295, 7, 22, 0, 0, 3295, 3296, 7, 10, 0, 0, 3296, 536, 1, 0, 0, 0, 3297, 3298, 7, 15, 0, 0, 3298, 3299, 7, 19, 0, 0, 3299, 3300, 7, 12, 0, 0, 3300, 3301, 7, 10, 0, 0, 3301, 538, 1, 0, 0, 0, 3302, 3303, 7, 15, 0, 0, 3303, 3304, 7, 19, 0, 0, 3304, 3305, 7, 7, 0, 0, 3305, 3306, 7, 16, 0, 0, 3306, 3307, 7, 20, 0, 0, 3307, 540, 1, 0, 0, 0, 3308, 3309, 7, 15, 0, 0, 3309, 3310, 7, 19, 0, 0, 3310, 3311, 7, 27, 0, 0, 3311, 3312, 7, 10, 0, 0, 3312, 542, 1, 0, 0, 0, 3313, 3314, 7, 7, 0, 0, 3314, 3315, 7, 5, 0, 0, 3315, 3316, 7, 15, 0, 0, 3316, 3317, 7, 10, 0, 0, 3317, 544, 1, 0, 0, 0, 3318, 3319, 7, 7, 0, 0, 3319, 3320, 7, 5, 0, 0, 3320, 3321, 7, 15, 0, 0, 3321, 3322, 7, 10, 0, 0, 3322, 3323, 7, 9, 0, 0, 3323, 546, 1, 0, 0, 0, 3324, 3325, 7, 7, 0, 0, 3325, 3326, 7, 10, 0, 0, 3326, 3327, 7, 26, 0, 0, 3327, 3328, 7, 16, 0, 0, 3328, 548, 1, 0, 0, 0, 3329, 3330, 7, 7, 0, 0, 3330, 3331, 7, 19, 0, 0, 3331, 550, 1, 0, 0, 0, 3332, 3333, 7, 7, 0, 0, 3333, 3334, 7, 19, 0, 0, 3334, 3335, 7, 16, 0, 0, 3335, 3336, 7, 20, 0, 0, 3336, 3337, 7, 17, 0, 0, 3337, 3338, 7, 7, 0, 0, 3338, 3339, 7, 23, 0, 0, 3339, 552, 1, 0, 0, 0, 3340, 3341, 7, 7, 0, 0, 3341, 3342, 7, 19, 0, 0, 3342, 3343, 7, 16, 0, 0, 3343, 3344, 7, 17, 0, 0, 3344, 3345, 7, 25, 0, 0, 3345, 3346, 7, 8, 0, 0, 3346, 554, 1, 0, 0, 0, 3347, 3348, 7, 7, 0, 0, 3348, 3349, 7, 19, 0, 0, 3349, 3350, 7, 28, 0, 0, 3350, 3351, 7, 5, 0, 0, 3351, 3352, 7, 17, 0, 0, 3352, 3353, 7, 16, 0, 0, 3353, 556, 1, 0, 0, 0, 3354, 3355, 7, 7, 0, 0, 3355, 3356, 7, 22, 0, 0, 3356, 3357, 7, 6, 0, 0, 3357, 3358, 7, 6, 0, 0, 3358, 3359, 7, 9, 0, 0, 3359, 558, 1, 0, 0, 0, 3360, 3361, 7, 19, 0, 0, 3361, 3362, 7, 18, 0, 0, 3362, 3363, 7, 30, 0, 0, 3363, 3364, 7, 10, 0, 0, 3364, 3365, 7, 14, 0, 0, 3365, 3366, 7, 16, 0, 0, 3366, 560, 1, 0, 0, 0, 3367, 3368, 7, 19, 0, 0, 3368, 3369, 7, 25, 0, 0, 3369, 562, 1, 0, 0, 0, 3370, 3371, 7, 19, 0, 0, 3371, 3372, 7, 25, 0, 0, 3372, 3373, 7, 25, 0, 0, 3373, 564, 1, 0, 0, 0, 3374, 3375, 7, 19, 0, 0, 3375, 3376, 7, 17, 0, 0, 3376, 3377, 7, 12, 0, 0, 3377, 3378, 7, 9, 0, 0, 3378, 566, 1, 0, 0, 0, 3379, 3380, 7, 19, 0, 0, 3380, 3381, 7, 24, 0, 0, 3381, 3382, 7, 10, 0, 0, 3382, 3383, 7, 13, 0, 0, 3383, 3384, 7, 5, 0, 0, 3384, 3385, 7, 16, 0, 0, 3385, 3386, 7, 19, 0, 0, 3386, 3387, 7, 13, 0, 0, 3387, 568, 1, 0, 0, 0, 3388, 3389, 7, 19, 0, 0, 3389, 3390, 7, 24, 0, 0, 3390, 3391, 7, 16, 0, 0, 3391, 3392, 7, 17, 0, 0, 3392, 3393, 7, 19, 0, 0, 3393, 3394, 7, 7, 0, 0, 3394, 570, 1, 0, 0, 0, 3395, 3396, 7, 19, 0, 0, 3396, 3397, 7, 24, 0, 0, 3397, 3398, 7, 16, 0, 0, 3398, 3399, 7, 17, 0, 0, 3399, 3400, 7, 19, 0, 0, 3400, 3401, 7, 7, 0, 0, 3401, 3402, 7, 9, 0, 0, 3402, 572, 1, 0, 0, 0, 3403, 3404, 7, 19, 0, 0, 3404, 3405, 7, 28, 0, 0, 3405, 3406, 7, 7, 0, 0, 3406, 3407, 7, 10, 0, 0, 3407, 3408, 7, 12, 0, 0, 3408, 574, 1, 0, 0, 0, 3409, 3410, 7, 19, 0, 0, 3410, 3411, 7, 28, 0, 0, 3411, 3412, 7, 7, 0, 0, 3412, 3413, 7, 10, 0, 0, 3413, 3414, 7, 13, 0, 0, 3414, 576, 1, 0, 0, 0, 3415, 3416, 7, 24, 0, 0, 3416, 3417, 7, 5, 0, 0, 3417, 3418, 7, 13, 0, 0, 3418, 3419, 7, 9, 0, 0, 3419, 3420, 7, 10, 0, 0, 3420, 3421, 7, 13, 0, 0, 3421, 578, 1, 0, 0, 0, 3422, 3423, 7, 24, 0, 0, 3423, 3424, 7, 5, 0, 0, 3424, 3425, 7, 13, 0, 0, 3425, 3426, 7, 16, 0, 0, 3426, 3427, 7, 17, 0, 0, 3427, 3428, 7, 5, 0, 0, 3428, 3429, 7, 6, 0, 0, 3429, 580, 1, 0, 0, 0, 3430, 3431, 7, 24, 0, 0, 3431, 3432, 7, 5, 0, 0, 3432, 3433, 7, 13, 0, 0, 3433, 3434, 7, 16, 0, 0, 3434, 3435, 7, 17, 0, 0, 3435, 3436, 7, 16, 0, 0, 3436, 3437, 7, 17, 0, 0, 3437, 3438, 7, 19, 0, 0, 3438, 3439, 7, 7, 0, 0, 3439, 582, 1, 0, 0, 0, 3440, 3441, 7, 24, 0, 0, 3441, 3442, 7, 5, 0, 0, 3442, 3443, 7, 9, 0, 0, 3443, 3444, 7, 9, 0, 0, 3444, 3445, 7, 17, 0, 0, 3445, 3446, 7, 7, 0, 0, 3446, 3447, 7, 23, 0, 0, 3447, 584, 1, 0, 0, 0, 3448, 3449, 7, 24, 0, 0, 3449, 3450, 7, 5, 0, 0, 3450, 3451, 7, 9, 0, 0, 3451, 3452, 7, 9, 0, 0, 3452, 3453, 7, 28, 0, 0, 3453, 3454, 7, 19, 0, 0, 3454, 3455, 7, 13, 0, 0, 3455, 3456, 7, 12, 0, 0, 3456, 586, 1, 0, 0, 0, 3457, 3458, 7, 24, 0, 0, 3458, 3459, 7, 6, 0, 0, 3459, 3460, 7, 5, 0, 0, 3460, 3461, 7, 7, 0, 0, 3461, 3462, 7, 9, 0, 0, 3462, 588, 1, 0, 0, 0, 3463, 3464, 7, 24, 0, 0, 3464, 3465, 7, 13, 0, 0, 3465, 3466, 7, 10, 0, 0, 3466, 3467, 7, 14, 0, 0, 3467, 3468, 7, 10, 0, 0, 3468, 3469, 7, 12, 0, 0, 3469, 3470, 7, 17, 0, 0, 3470, 3471, 7, 7, 0, 0, 3471, 3472, 7, 23, 0, 0, 3472, 590, 1, 0, 0, 0, 3473, 3474, 7, 24, 0, 0, 3474, 3475, 7, 13, 0, 0, 3475, 3476, 7, 10, 0, 0, 3476, 3477, 7, 24, 0, 0, 3477, 3478, 7, 5, 0, 0, 3478, 3479, 7, 13, 0, 0, 3479, 3480, 7, 10, 0, 0, 3480, 592, 1, 0, 0, 0, 3481, 3482, 7, 24, 0, 0, 3482, 3483, 7, 13, 0, 0, 3483, 3484, 7, 10, 0, 0, 3484, 3485, 7, 24, 0, 0, 3485, 3486, 7, 5, 0, 0, 3486, 3487, 7, 13, 0, 0, 3487, 3488, 7, 10, 0, 0, 3488, 3489, 7, 12, 0, 0, 3489, 594, 1, 0, 0, 0, 3490, 3491, 7, 24, 0, 0, 3491, 3492, 7, 13, 0, 0, 3492, 3493, 7, 10, 0, 0, 3493, 3494, 7, 9, 0, 0, 3494, 3495, 7, 10, 0, 0, 3495, 3496, 7, 13, 0, 0, 3496, 3497, 7, 27, 0, 0, 3497, 3498, 7, 10, 0, 0, 3498, 596, 1, 0, 0, 0, 3499, 3500, 7, 24, 0, 0, 3500, 3501, 7, 13, 0, 0, 3501, 3502, 7, 17, 0, 0, 3502, 3503, 7, 19, 0, 0, 3503, 3504, 7, 13, 0, 0, 3504, 598, 1, 0, 0, 0, 3505, 3506, 7, 24, 0, 0, 3506, 3507, 7, 13, 0, 0, 3507, 3508, 7, 17, 0, 0, 3508, 3509, 7, 27, 0, 0, 3509, 3510, 7, 17, 0, 0, 3510, 3511, 7, 6, 0, 0, 3511, 3512, 7, 10, 0, 0, 3512, 3513, 7, 23, 0, 0, 3513, 3514, 7, 10, 0, 0, 3514, 3515, 7, 9, 0, 0, 3515, 600, 1, 0, 0, 0, 3516, 3517, 7, 24, 0, 0, 3517, 3518, 7, 13, 0, 0, 3518, 3519, 7, 19, 0, 0, 3519, 3520, 7, 14, 0, 0, 3520, 3521, 7, 10, 0, 0, 3521, 3522, 7, 12, 0, 0, 3522, 3523, 7, 22, 0, 0, 3523, 3524, 7, 13, 0, 0, 3524, 3525, 7, 5, 0, 0, 3525, 3526, 7, 6, 0, 0, 3526, 602, 1, 0, 0, 0, 3527, 3528, 7, 24, 0, 0, 3528, 3529, 7, 13, 0, 0, 3529, 3530, 7, 19, 0, 0, 3530, 3531, 7, 14, 0, 0, 3531, 3532, 7, 10, 0, 0, 3532, 3533, 7, 12, 0, 0, 3533, 3534, 7, 22, 0, 0, 3534, 3535, 7, 13, 0, 0, 3535, 3536, 7, 10, 0, 0, 3536, 604, 1, 0, 0, 0, 3537, 3538, 7, 24, 0, 0, 3538, 3539, 7, 13, 0, 0, 3539, 3540, 7, 19, 0, 0, 3540, 3541, 7, 23, 0, 0, 3541, 3542, 7, 13, 0, 0, 3542, 3543, 7, 5, 0, 0, 3543, 3544, 7, 15, 0, 0, 3544, 606, 1, 0, 0, 0, 3545, 3546, 7, 29, 0, 0, 3546, 3547, 7, 22, 0, 0, 3547, 3548, 7, 19, 0, 0, 3548, 3549, 7, 16, 0, 0, 3549, 3550, 7, 10, 0, 0, 3550, 608, 1, 0, 0, 0, 3551, 3552, 7, 13, 0, 0, 3552, 3553, 7, 5, 0, 0, 3553, 3554, 7, 7, 0, 0, 3554, 3555, 7, 23, 0, 0, 3555, 3556, 7, 10, 0, 0, 3556, 610, 1, 0, 0, 0, 3557, 3558, 7, 13, 0, 0, 3558, 3559, 7, 10, 0, 0, 3559, 3560, 7, 5, 0, 0, 3560, 3561, 7, 12, 0, 0, 3561, 612, 1, 0, 0, 0, 3562, 3563, 7, 13, 0, 0, 3563, 3564, 7, 10, 0, 0, 3564, 3565, 7, 5, 0, 0, 3565, 3566, 7, 9, 0, 0, 3566, 3567, 7, 9, 0, 0, 3567, 3568, 7, 17, 0, 0, 3568, 3569, 7, 23, 0, 0, 3569, 3570, 7, 7, 0, 0, 3570, 614, 1, 0, 0, 0, 3571, 3572, 7, 13, 0, 0, 3572, 3573, 7, 10, 0, 0, 3573, 3574, 7, 14, 0, 0, 3574, 3575, 7, 20, 0, 0, 3575, 3576, 7, 10, 0, 0, 3576, 3577, 7, 14, 0, 0, 3577, 3578, 7, 21, 0, 0, 3578, 616, 1, 0, 0, 0, 3579, 3580, 7, 13, 0, 0, 3580, 3581, 7, 10, 0, 0, 3581, 3582, 7, 14, 0, 0, 3582, 3583, 7, 22, 0, 0, 3583, 3584, 7, 13, 0, 0, 3584, 3585, 7, 9, 0, 0, 3585, 3586, 7, 17, 0, 0, 3586, 3587, 7, 27, 0, 0, 3587, 3588, 7, 10, 0, 0, 3588, 618, 1, 0, 0, 0, 3589, 3590, 7, 13, 0, 0, 3590, 3591, 7, 10, 0, 0, 3591, 3592, 7, 25, 0, 0, 3592, 620, 1, 0, 0, 0, 3593, 3594, 7, 13, 0, 0, 3594, 3595, 7, 10, 0, 0, 3595, 3596, 7, 25, 0, 0, 3596, 3597, 7, 13, 0, 0, 3597, 3598, 7, 10, 0, 0, 3598, 3599, 7, 9, 0, 0, 3599, 3600, 7, 20, 0, 0, 3600, 622, 1, 0, 0, 0, 3601, 3602, 7, 13, 0, 0, 3602, 3603, 7, 10, 0, 0, 3603, 3604, 7, 17, 0, 0, 3604, 3605, 7, 7, 0, 0, 3605, 3606, 7, 12, 0, 0, 3606, 3607, 7, 10, 0, 0, 3607, 3608, 7, 26, 0, 0, 3608, 624, 1, 0, 0, 0, 3609, 3610, 7, 13, 0, 0, 3610, 3611, 7, 10, 0, 0, 3611, 3612, 7, 6, 0, 0, 3612, 3613, 7, 5, 0, 0, 3613, 3614, 7, 16, 0, 0, 3614, 3615, 7, 17, 0, 0, 3615, 3616, 7, 27, 0, 0, 3616, 3617, 7, 10, 0, 0, 3617, 626, 1, 0, 0, 0, 3618, 3619, 7, 13, 0, 0, 3619, 3620, 7, 10, 0, 0, 3620, 3621, 7, 6, 0, 0, 3621, 3622, 7, 10, 0, 0, 3622, 3623, 7, 5, 0, 0, 3623, 3624, 7, 9, 0, 0, 3624, 3625, 7, 10, 0, 0, 3625, 628, 1, 0, 0, 0, 3626, 3627, 7, 13, 0, 0, 3627, 3628, 7, 10, 0, 0, 3628, 3629, 7, 7, 0, 0, 3629, 3630, 7, 5, 0, 0, 3630, 3631, 7, 15, 0, 0, 3631, 3632, 7, 10, 0, 0, 3632, 630, 1, 0, 0, 0, 3633, 3634, 7, 13, 0, 0, 3634, 3635, 7, 10, 0, 0, 3635, 3636, 7, 24, 0, 0, 3636, 3637, 7, 10, 0, 0, 3637, 3638, 7, 5, 0, 0, 3638, 3639, 7, 16, 0, 0, 3639, 3640, 7, 5, 0, 0, 3640, 3641, 7, 18, 0, 0, 3641, 3642, 7, 6, 0, 0, 3642, 3643, 7, 10, 0, 0, 3643, 632, 1, 0, 0, 0, 3644, 3645, 7, 13, 0, 0, 3645, 3646, 7, 10, 0, 0, 3646, 3647, 7, 24, 0, 0, 3647, 3648, 7, 6, 0, 0, 3648, 3649, 7, 5, 0, 0, 3649, 3650, 7, 14, 0, 0, 3650, 3651, 7, 10, 0, 0, 3651, 634, 1, 0, 0, 0, 3652, 3653, 7, 13, 0, 0, 3653, 3654, 7, 10, 0, 0, 3654, 3655, 7, 24, 0, 0, 3655, 3656, 7, 6, 0, 0, 3656, 3657, 7, 17, 0, 0, 3657, 3658, 7, 14, 0, 0, 3658, 3659, 7, 5, 0, 0, 3659, 636, 1, 0, 0, 0, 3660, 3661, 7, 13, 0, 0, 3661, 3662, 7, 10, 0, 0, 3662, 3663, 7, 9, 0, 0, 3663, 3664, 7, 10, 0, 0, 3664, 3665, 7, 16, 0, 0, 3665, 638, 1, 0, 0, 0, 3666, 3667, 7, 13, 0, 0, 3667, 3668, 7, 10, 0, 0, 3668, 3669, 7, 9, 0, 0, 3669, 3670, 7, 16, 0, 0, 3670, 3671, 7, 5, 0, 0, 3671, 3672, 7, 13, 0, 0, 3672, 3673, 7, 16, 0, 0, 3673, 640, 1, 0, 0, 0, 3674, 3675, 7, 13, 0, 0, 3675, 3676, 7, 10, 0, 0, 3676, 3677, 7, 9, 0, 0, 3677, 3678, 7, 16, 0, 0, 3678, 3679, 7, 13, 0, 0, 3679, 3680, 7, 17, 0, 0, 3680, 3681, 7, 14, 0, 0, 3681, 3682, 7, 16, 0, 0, 3682, 642, 1, 0, 0, 0, 3683, 3684, 7, 13, 0, 0, 3684, 3685, 7, 10, 0, 0, 3685, 3686, 7, 16, 0, 0, 3686, 3687, 7, 22, 0, 0, 3687, 3688, 7, 13, 0, 0, 3688, 3689, 7, 7, 0, 0, 3689, 3690, 7, 9, 0, 0, 3690, 644, 1, 0, 0, 0, 3691, 3692, 7, 13, 0, 0, 3692, 3693, 7, 10, 0, 0, 3693, 3694, 7, 27, 0, 0, 3694, 3695, 7, 19, 0, 0, 3695, 3696, 7, 21, 0, 0, 3696, 3697, 7, 10, 0, 0, 3697, 646, 1, 0, 0, 0, 3698, 3699, 7, 13, 0, 0, 3699, 3700, 7, 19, 0, 0, 3700, 3701, 7, 6, 0, 0, 3701, 3702, 7, 10, 0, 0, 3702, 648, 1, 0, 0, 0, 3703, 3704, 7, 13, 0, 0, 3704, 3705, 7, 19, 0, 0, 3705, 3706, 7, 6, 0, 0, 3706, 3707, 7, 6, 0, 0, 3707, 3708, 7, 18, 0, 0, 3708, 3709, 7, 5, 0, 0, 3709, 3710, 7, 14, 0, 0, 3710, 3711, 7, 21, 0, 0, 3711, 650, 1, 0, 0, 0, 3712, 3713, 7, 13, 0, 0, 3713, 3714, 7, 19, 0, 0, 3714, 3715, 7, 28, 0, 0, 3715, 3716, 7, 9, 0, 0, 3716, 652, 1, 0, 0, 0, 3717, 3718, 7, 13, 0, 0, 3718, 3719, 7, 22, 0, 0, 3719, 3720, 7, 6, 0, 0, 3720, 3721, 7, 10, 0, 0, 3721, 654, 1, 0, 0, 0, 3722, 3723, 7, 9, 0, 0, 3723, 3724, 7, 5, 0, 0, 3724, 3725, 7, 27, 0, 0, 3725, 3726, 7, 10, 0, 0, 3726, 3727, 7, 24, 0, 0, 3727, 3728, 7, 19, 0, 0, 3728, 3729, 7, 17, 0, 0, 3729, 3730, 7, 7, 0, 0, 3730, 3731, 7, 16, 0, 0, 3731, 656, 1, 0, 0, 0, 3732, 3733, 7, 9, 0, 0, 3733, 3734, 7, 14, 0, 0, 3734, 3735, 7, 20, 0, 0, 3735, 3736, 7, 10, 0, 0, 3736, 3737, 7, 15, 0, 0, 3737, 3738, 7, 5, 0, 0, 3738, 658, 1, 0, 0, 0, 3739, 3740, 7, 9, 0, 0, 3740, 3741, 7, 14, 0, 0, 3741, 3742, 7, 13, 0, 0, 3742, 3743, 7, 19, 0, 0, 3743, 3744, 7, 6, 0, 0, 3744, 3745, 7, 6, 0, 0, 3745, 660, 1, 0, 0, 0, 3746, 3747, 7, 9, 0, 0, 3747, 3748, 7, 10, 0, 0, 3748, 3749, 7, 5, 0, 0, 3749, 3750, 7, 13, 0, 0, 3750, 3751, 7, 14, 0, 0, 3751, 3752, 7, 20, 0, 0, 3752, 662, 1, 0, 0, 0, 3753, 3754, 7, 9, 0, 0, 3754, 3755, 7, 10, 0, 0, 3755, 3756, 7, 14, 0, 0, 3756, 3757, 7, 19, 0, 0, 3757, 3758, 7, 7, 0, 0, 3758, 3759, 7, 12, 0, 0, 3759, 664, 1, 0, 0, 0, 3760, 3761, 7, 9, 0, 0, 3761, 3762, 7, 10, 0, 0, 3762, 3763, 7, 14, 0, 0, 3763, 3764, 7, 22, 0, 0, 3764, 3765, 7, 13, 0, 0, 3765, 3766, 7, 17, 0, 0, 3766, 3767, 7, 16, 0, 0, 3767, 3768, 7, 8, 0, 0, 3768, 666, 1, 0, 0, 0, 3769, 3770, 7, 9, 0, 0, 3770, 3771, 7, 10, 0, 0, 3771, 3772, 7, 29, 0, 0, 3772, 3773, 7, 22, 0, 0, 3773, 3774, 7, 10, 0, 0, 3774, 3775, 7, 7, 0, 0, 3775, 3776, 7, 14, 0, 0, 3776, 3777, 7, 10, 0, 0, 3777, 668, 1, 0, 0, 0, 3778, 3779, 7, 9, 0, 0, 3779, 3780, 7, 10, 0, 0, 3780, 3781, 7, 29, 0, 0, 3781, 3782, 7, 22, 0, 0, 3782, 3783, 7, 10, 0, 0, 3783, 3784, 7, 7, 0, 0, 3784, 3785, 7, 14, 0, 0, 3785, 3786, 7, 10, 0, 0, 3786, 3787, 7, 9, 0, 0, 3787, 670, 1, 0, 0, 0, 3788, 3789, 7, 9, 0, 0, 3789, 3790, 7, 10, 0, 0, 3790, 3791, 7, 13, 0, 0, 3791, 3792, 7, 17, 0, 0, 3792, 3793, 7, 5, 0, 0, 3793, 3794, 7, 6, 0, 0, 3794, 3795, 7, 17, 0, 0, 3795, 3796, 7, 11, 0, 0, 3796, 3797, 7, 5, 0, 0, 3797, 3798, 7, 18, 0, 0, 3798, 3799, 7, 6, 0, 0, 3799, 3800, 7, 10, 0, 0, 3800, 672, 1, 0, 0, 0, 3801, 3802, 7, 9, 0, 0, 3802, 3803, 7, 10, 0, 0, 3803, 3804, 7, 13, 0, 0, 3804, 3805, 7, 27, 0, 0, 3805, 3806, 7, 10, 0, 0, 3806, 3807, 7, 13, 0, 0, 3807, 674, 1, 0, 0, 0, 3808, 3809, 7, 9, 0, 0, 3809, 3810, 7, 10, 0, 0, 3810, 3811, 7, 9, 0, 0, 3811, 3812, 7, 9, 0, 0, 3812, 3813, 7, 17, 0, 0, 3813, 3814, 7, 19, 0, 0, 3814, 3815, 7, 7, 0, 0, 3815, 676, 1, 0, 0, 0, 3816, 3817, 7, 9, 0, 0, 3817, 3818, 7, 10, 0, 0, 3818, 3819, 7, 16, 0, 0, 3819, 678, 1, 0, 0, 0, 3820, 3821, 7, 9, 0, 0, 3821, 3822, 7, 20, 0, 0, 3822, 3823, 7, 5, 0, 0, 3823, 3824, 7, 13, 0, 0, 3824, 3825, 7, 10, 0, 0, 3825, 680, 1, 0, 0, 0, 3826, 3827, 7, 9, 0, 0, 3827, 3828, 7, 20, 0, 0, 3828, 3829, 7, 19, 0, 0, 3829, 3830, 7, 28, 0, 0, 3830, 682, 1, 0, 0, 0, 3831, 3832, 7, 9, 0, 0, 3832, 3833, 7, 17, 0, 0, 3833, 3834, 7, 15, 0, 0, 3834, 3835, 7, 24, 0, 0, 3835, 3836, 7, 6, 0, 0, 3836, 3837, 7, 10, 0, 0, 3837, 684, 1, 0, 0, 0, 3838, 3839, 7, 9, 0, 0, 3839, 3840, 7, 7, 0, 0, 3840, 3841, 7, 5, 0, 0, 3841, 3842, 7, 24, 0, 0, 3842, 3843, 7, 9, 0, 0, 3843, 3844, 7, 20, 0, 0, 3844, 3845, 7, 19, 0, 0, 3845, 3846, 7, 16, 0, 0, 3846, 686, 1, 0, 0, 0, 3847, 3848, 7, 9, 0, 0, 3848, 3849, 7, 16, 0, 0, 3849, 3850, 7, 5, 0, 0, 3850, 3851, 7, 18, 0, 0, 3851, 3852, 7, 6, 0, 0, 3852, 3853, 7, 10, 0, 0, 3853, 688, 1, 0, 0, 0, 3854, 3855, 7, 9, 0, 0, 3855, 3856, 7, 16, 0, 0, 3856, 3857, 7, 5, 0, 0, 3857, 3858, 7, 7, 0, 0, 3858, 3859, 7, 12, 0, 0, 3859, 3860, 7, 5, 0, 0, 3860, 3861, 7, 6, 0, 0, 3861, 3862, 7, 19, 0, 0, 3862, 3863, 7, 7, 0, 0, 3863, 3864, 7, 10, 0, 0, 3864, 690, 1, 0, 0, 0, 3865, 3866, 7, 9, 0, 0, 3866, 3867, 7, 16, 0, 0, 3867, 3868, 7, 5, 0, 0, 3868, 3869, 7, 13, 0, 0, 3869, 3870, 7, 16, 0, 0, 3870, 692, 1, 0, 0, 0, 3871, 3872, 7, 9, 0, 0, 3872, 3873, 7, 16, 0, 0, 3873, 3874, 7, 5, 0, 0, 3874, 3875, 7, 16, 0, 0, 3875, 3876, 7, 10, 0, 0, 3876, 3877, 7, 15, 0, 0, 3877, 3878, 7, 10, 0, 0, 3878, 3879, 7, 7, 0, 0, 3879, 3880, 7, 16, 0, 0, 3880, 694, 1, 0, 0, 0, 3881, 3882, 7, 9, 0, 0, 3882, 3883, 7, 16, 0, 0, 3883, 3884, 7, 5, 0, 0, 3884, 3885, 7, 16, 0, 0, 3885, 3886, 7, 17, 0, 0, 3886, 3887, 7, 9, 0, 0, 3887, 3888, 7, 16, 0, 0, 3888, 3889, 7, 17, 0, 0, 3889, 3890, 7, 14, 0, 0, 3890, 3891, 7, 9, 0, 0, 3891, 696, 1, 0, 0, 0, 3892, 3893, 7, 9, 0, 0, 3893, 3894, 7, 16, 0, 0, 3894, 3895, 7, 12, 0, 0, 3895, 3896, 7, 17, 0, 0, 3896, 3897, 7, 7, 0, 0, 3897, 698, 1, 0, 0, 0, 3898, 3899, 7, 9, 0, 0, 3899, 3900, 7, 16, 0, 0, 3900, 3901, 7, 12, 0, 0, 3901, 3902, 7, 19, 0, 0, 3902, 3903, 7, 22, 0, 0, 3903, 3904, 7, 16, 0, 0, 3904, 700, 1, 0, 0, 0, 3905, 3906, 7, 9, 0, 0, 3906, 3907, 7, 16, 0, 0, 3907, 3908, 7, 19, 0, 0, 3908, 3909, 7, 13, 0, 0, 3909, 3910, 7, 5, 0, 0, 3910, 3911, 7, 23, 0, 0, 3911, 3912, 7, 10, 0, 0, 3912, 702, 1, 0, 0, 0, 3913, 3914, 7, 9, 0, 0, 3914, 3915, 7, 16, 0, 0, 3915, 3916, 7, 13, 0, 0, 3916, 3917, 7, 17, 0, 0, 3917, 3918, 7, 14, 0, 0, 3918, 3919, 7, 16, 0, 0, 3919, 704, 1, 0, 0, 0, 3920, 3921, 7, 9, 0, 0, 3921, 3922, 7, 16, 0, 0, 3922, 3923, 7, 13, 0, 0, 3923, 3924, 7, 17, 0, 0, 3924, 3925, 7, 24, 0, 0, 3925, 706, 1, 0, 0, 0, 3926, 3927, 7, 9, 0, 0, 3927, 3928, 7, 8, 0, 0, 3928, 3929, 7, 9, 0, 0, 3929, 3930, 7, 17, 0, 0, 3930, 3931, 7, 12, 0, 0, 3931, 708, 1, 0, 0, 0, 3932, 3933, 7, 9, 0, 0, 3933, 3934, 7, 8, 0, 0, 3934, 3935, 7, 9, 0, 0, 3935, 3936, 7, 16, 0, 0, 3936, 3937, 7, 10, 0, 0, 3937, 3938, 7, 15, 0, 0, 3938, 710, 1, 0, 0, 0, 3939, 3940, 7, 16, 0, 0, 3940, 3941, 7, 5, 0, 0, 3941, 3942, 7, 18, 0, 0, 3942, 3943, 7, 6, 0, 0, 3943, 3944, 7, 10, 0, 0, 3944, 3945, 7, 9, 0, 0, 3945, 712, 1, 0, 0, 0, 3946, 3947, 7, 11, 0, 0, 3947, 3948, 7, 16, 0, 0, 3948, 3949, 7, 5, 0, 0, 3949, 3950, 7, 18, 0, 0, 3950, 3951, 7, 6, 0, 0, 3951, 3952, 7, 10, 0, 0, 3952, 3953, 7, 9, 0, 0, 3953, 714, 1, 0, 0, 0, 3954, 3955, 7, 16, 0, 0, 3955, 3956, 7, 5, 0, 0, 3956, 3957, 7, 18, 0, 0, 3957, 3958, 7, 6, 0, 0, 3958, 3959, 7, 10, 0, 0, 3959, 3960, 7, 9, 0, 0, 3960, 3961, 7, 24, 0, 0, 3961, 3962, 7, 5, 0, 0, 3962, 3963, 7, 14, 0, 0, 3963, 3964, 7, 10, 0, 0, 3964, 716, 1, 0, 0, 0, 3965, 3966, 7, 16, 0, 0, 3966, 3967, 7, 10, 0, 0, 3967, 3968, 7, 15, 0, 0, 3968, 3969, 7, 24, 0, 0, 3969, 718, 1, 0, 0, 0, 3970, 3971, 7, 16, 0, 0, 3971, 3972, 7, 10, 0, 0, 3972, 3973, 7, 15, 0, 0, 3973, 3974, 7, 24, 0, 0, 3974, 3975, 7, 6, 0, 0, 3975, 3976, 7, 5, 0, 0, 3976, 3977, 7, 16, 0, 0, 3977, 3978, 7, 10, 0, 0, 3978, 720, 1, 0, 0, 0, 3979, 3980, 7, 16, 0, 0, 3980, 3981, 7, 10, 0, 0, 3981, 3982, 7, 15, 0, 0, 3982, 3983, 7, 24, 0, 0, 3983, 3984, 7, 19, 0, 0, 3984, 3985, 7, 13, 0, 0, 3985, 3986, 7, 5, 0, 0, 3986, 3987, 7, 13, 0, 0, 3987, 3988, 7, 8, 0, 0, 3988, 722, 1, 0, 0, 0, 3989, 3990, 7, 16, 0, 0, 3990, 3991, 7, 10, 0, 0, 3991, 3992, 7, 26, 0, 0, 3992, 3993, 7, 16, 0, 0, 3993, 724, 1, 0, 0, 0, 3994, 3995, 7, 16, 0, 0, 3995, 3996, 7, 13, 0, 0, 3996, 3997, 7, 5, 0, 0, 3997, 3998, 7, 7, 0, 0, 3998, 3999, 7, 9, 0, 0, 3999, 4000, 7, 5, 0, 0, 4000, 4001, 7, 14, 0, 0, 4001, 4002, 7, 16, 0, 0, 4002, 4003, 7, 17, 0, 0, 4003, 4004, 7, 19, 0, 0, 4004, 4005, 7, 7, 0, 0, 4005, 726, 1, 0, 0, 0, 4006, 4007, 7, 16, 0, 0, 4007, 4008, 7, 13, 0, 0, 4008, 4009, 7, 17, 0, 0, 4009, 4010, 7, 23, 0, 0, 4010, 4011, 7, 23, 0, 0, 4011, 4012, 7, 10, 0, 0, 4012, 4013, 7, 13, 0, 0, 4013, 728, 1, 0, 0, 0, 4014, 4015, 7, 16, 0, 0, 4015, 4016, 7, 13, 0, 0, 4016, 4017, 7, 22, 0, 0, 4017, 4018, 7, 7, 0, 0, 4018, 4019, 7, 14, 0, 0, 4019, 4020, 7, 5, 0, 0, 4020, 4021, 7, 16, 0, 0, 4021, 4022, 7, 10, 0, 0, 4022, 730, 1, 0, 0, 0, 4023, 4024, 7, 16, 0, 0, 4024, 4025, 7, 13, 0, 0, 4025, 4026, 7, 22, 0, 0, 4026, 4027, 7, 9, 0, 0, 4027, 4028, 7, 16, 0, 0, 4028, 4029, 7, 10, 0, 0, 4029, 4030, 7, 12, 0, 0, 4030, 732, 1, 0, 0, 0, 4031, 4032, 7, 16, 0, 0, 4032, 4033, 7, 8, 0, 0, 4033, 4034, 7, 24, 0, 0, 4034, 4035, 7, 10, 0, 0, 4035, 734, 1, 0, 0, 0, 4036, 4037, 7, 16, 0, 0, 4037, 4038, 7, 8, 0, 0, 4038, 4039, 7, 24, 0, 0, 4039, 4040, 7, 10, 0, 0, 4040, 4041, 7, 9, 0, 0, 4041, 736, 1, 0, 0, 0, 4042, 4043, 7, 22, 0, 0, 4043, 4044, 7, 7, 0, 0, 4044, 4045, 7, 18, 0, 0, 4045, 4046, 7, 19, 0, 0, 4046, 4047, 7, 22, 0, 0, 4047, 4048, 7, 7, 0, 0, 4048, 4049, 7, 12, 0, 0, 4049, 4050, 7, 10, 0, 0, 4050, 4051, 7, 12, 0, 0, 4051, 738, 1, 0, 0, 0, 4052, 4053, 7, 22, 0, 0, 4053, 4054, 7, 7, 0, 0, 4054, 4055, 7, 14, 0, 0, 4055, 4056, 7, 19, 0, 0, 4056, 4057, 7, 15, 0, 0, 4057, 4058, 7, 15, 0, 0, 4058, 4059, 7, 17, 0, 0, 4059, 4060, 7, 16, 0, 0, 4060, 4061, 7, 16, 0, 0, 4061, 4062, 7, 10, 0, 0, 4062, 4063, 7, 12, 0, 0, 4063, 740, 1, 0, 0, 0, 4064, 4065, 7, 22, 0, 0, 4065, 4066, 7, 7, 0, 0, 4066, 4067, 7, 10, 0, 0, 4067, 4068, 7, 7, 0, 0, 4068, 4069, 7, 14, 0, 0, 4069, 4070, 7, 13, 0, 0, 4070, 4071, 7, 8, 0, 0, 4071, 4072, 7, 24, 0, 0, 4072, 4073, 7, 16, 0, 0, 4073, 4074, 7, 10, 0, 0, 4074, 4075, 7, 12, 0, 0, 4075, 742, 1, 0, 0, 0, 4076, 4077, 7, 22, 0, 0, 4077, 4078, 7, 7, 0, 0, 4078, 4079, 7, 21, 0, 0, 4079, 4080, 7, 7, 0, 0, 4080, 4081, 7, 19, 0, 0, 4081, 4082, 7, 28, 0, 0, 4082, 4083, 7, 7, 0, 0, 4083, 744, 1, 0, 0, 0, 4084, 4085, 7, 22, 0, 0, 4085, 4086, 7, 7, 0, 0, 4086, 4087, 7, 6, 0, 0, 4087, 4088, 7, 17, 0, 0, 4088, 4089, 7, 9, 0, 0, 4089, 4090, 7, 16, 0, 0, 4090, 4091, 7, 10, 0, 0, 4091, 4092, 7, 7, 0, 0, 4092, 746, 1, 0, 0, 0, 4093, 4094, 7, 22, 0, 0, 4094, 4095, 7, 7, 0, 0, 4095, 4096, 7, 6, 0, 0, 4096, 4097, 7, 19, 0, 0, 4097, 4098, 7, 23, 0, 0, 4098, 4099, 7, 23, 0, 0, 4099, 4100, 7, 10, 0, 0, 4100, 4101, 7, 12, 0, 0, 4101, 748, 1, 0, 0, 0, 4102, 4103, 7, 22, 0, 0, 4103, 4104, 7, 7, 0, 0, 4104, 4105, 7, 16, 0, 0, 4105, 4106, 7, 17, 0, 0, 4106, 4107, 7, 6, 0, 0, 4107, 750, 1, 0, 0, 0, 4108, 4109, 7, 22, 0, 0, 4109, 4110, 7, 24, 0, 0, 4110, 4111, 7, 12, 0, 0, 4111, 4112, 7, 5, 0, 0, 4112, 4113, 7, 16, 0, 0, 4113, 4114, 7, 10, 0, 0, 4114, 752, 1, 0, 0, 0, 4115, 4116, 7, 27, 0, 0, 4116, 4117, 7, 5, 0, 0, 4117, 4118, 7, 14, 0, 0, 4118, 4119, 7, 22, 0, 0, 4119, 4120, 7, 22, 0, 0, 4120, 4121, 7, 15, 0, 0, 4121, 754, 1, 0, 0, 0, 4122, 4123, 7, 27, 0, 0, 4123, 4124, 7, 5, 0, 0, 4124, 4125, 7, 6, 0, 0, 4125, 4126, 7, 17, 0, 0, 4126, 4127, 7, 12, 0, 0, 4127, 756, 1, 0, 0, 0, 4128, 4129, 7, 27, 0, 0, 4129, 4130, 7, 5, 0, 0, 4130, 4131, 7, 6, 0, 0, 4131, 4132, 7, 17, 0, 0, 4132, 4133, 7, 12, 0, 0, 4133, 4134, 7, 5, 0, 0, 4134, 4135, 7, 16, 0, 0, 4135, 4136, 7, 10, 0, 0, 4136, 758, 1, 0, 0, 0, 4137, 4138, 7, 27, 0, 0, 4138, 4139, 7, 5, 0, 0, 4139, 4140, 7, 6, 0, 0, 4140, 4141, 7, 17, 0, 0, 4141, 4142, 7, 12, 0, 0, 4142, 4143, 7, 5, 0, 0, 4143, 4144, 7, 16, 0, 0, 4144, 4145, 7, 19, 0, 0, 4145, 4146, 7, 13, 0, 0, 4146, 760, 1, 0, 0, 0, 4147, 4148, 7, 27, 0, 0, 4148, 4149, 7, 5, 0, 0, 4149, 4150, 7, 13, 0, 0, 4150, 4151, 7, 8, 0, 0, 4151, 4152, 7, 17, 0, 0, 4152, 4153, 7, 7, 0, 0, 4153, 4154, 7, 23, 0, 0, 4154, 762, 1, 0, 0, 0, 4155, 4156, 7, 27, 0, 0, 4156, 4157, 7, 10, 0, 0, 4157, 4158, 7, 13, 0, 0, 4158, 4159, 7, 9, 0, 0, 4159, 4160, 7, 17, 0, 0, 4160, 4161, 7, 19, 0, 0, 4161, 4162, 7, 7, 0, 0, 4162, 764, 1, 0, 0, 0, 4163, 4164, 7, 27, 0, 0, 4164, 4165, 7, 17, 0, 0, 4165, 4166, 7, 10, 0, 0, 4166, 4167, 7, 28, 0, 0, 4167, 766, 1, 0, 0, 0, 4168, 4169, 7, 27, 0, 0, 4169, 4170, 7, 19, 0, 0, 4170, 4171, 7, 6, 0, 0, 4171, 4172, 7, 5, 0, 0, 4172, 4173, 7, 16, 0, 0, 4173, 4174, 7, 17, 0, 0, 4174, 4175, 7, 6, 0, 0, 4175, 4176, 7, 10, 0, 0, 4176, 768, 1, 0, 0, 0, 4177, 4178, 7, 28, 0, 0, 4178, 4179, 7, 20, 0, 0, 4179, 4180, 7, 17, 0, 0, 4180, 4181, 7, 16, 0, 0, 4181, 4182, 7, 10, 0, 0, 4182, 4183, 7, 9, 0, 0, 4183, 4184, 7, 24, 0, 0, 4184, 4185, 7, 5, 0, 0, 4185, 4186, 7, 14, 0, 0, 4186, 4187, 7, 10, 0, 0, 4187, 770, 1, 0, 0, 0, 4188, 4189, 7, 28, 0, 0, 4189, 4190, 7, 17, 0, 0, 4190, 4191, 7, 16, 0, 0, 4191, 4192, 7, 20, 0, 0, 4192, 4193, 7, 19, 0, 0, 4193, 4194, 7, 22, 0, 0, 4194, 4195, 7, 16, 0, 0, 4195, 772, 1, 0, 0, 0, 4196, 4197, 7, 28, 0, 0, 4197, 4198, 7, 19, 0, 0, 4198, 4199, 7, 13, 0, 0, 4199, 4200, 7, 21, 0, 0, 4200, 774, 1, 0, 0, 0, 4201, 4202, 7, 28, 0, 0, 4202, 4203, 7, 13, 0, 0, 4203, 4204, 7, 5, 0, 0, 4204, 4205, 7, 24, 0, 0, 4205, 4206, 7, 24, 0, 0, 4206, 4207, 7, 10, 0, 0, 4207, 4208, 7, 13, 0, 0, 4208, 776, 1, 0, 0, 0, 4209, 4210, 7, 28, 0, 0, 4210, 4211, 7, 13, 0, 0, 4211, 4212, 7, 17, 0, 0, 4212, 4213, 7, 16, 0, 0, 4213, 4214, 7, 10, 0, 0, 4214, 778, 1, 0, 0, 0, 4215, 4216, 7, 26, 0, 0, 4216, 4217, 7, 15, 0, 0, 4217, 4218, 7, 6, 0, 0, 4218, 780, 1, 0, 0, 0, 4219, 4220, 7, 8, 0, 0, 4220, 4221, 7, 10, 0, 0, 4221, 4222, 7, 5, 0, 0, 4222, 4223, 7, 13, 0, 0, 4223, 782, 1, 0, 0, 0, 4224, 4225, 7, 8, 0, 0, 4225, 4226, 7, 10, 0, 0, 4226, 4227, 7, 9, 0, 0, 4227, 784, 1, 0, 0, 0, 4228, 4229, 7, 11, 0, 0, 4229, 4230, 7, 19, 0, 0, 4230, 4231, 7, 7, 0, 0, 4231, 4232, 7, 10, 0, 0, 4232, 786, 1, 0, 0, 0, 4233, 4234, 7, 18, 0, 0, 4234, 4235, 7, 10, 0, 0, 4235, 4236, 7, 16, 0, 0, 4236, 4237, 7, 28, 0, 0, 4237, 4238, 7, 10, 0, 0, 4238, 4239, 7, 10, 0, 0, 4239, 4240, 7, 7, 0, 0, 4240, 788, 1, 0, 0, 0, 4241, 4242, 7, 18, 0, 0, 4242, 4243, 7, 17, 0, 0, 4243, 4244, 7, 23, 0, 0, 4244, 4245, 7, 17, 0, 0, 4245, 4246, 7, 7, 0, 0, 4246, 4247, 7, 16, 0, 0, 4247, 790, 1, 0, 0, 0, 4248, 4249, 7, 18, 0, 0, 4249, 4250, 7, 17, 0, 0, 4250, 4251, 7, 16, 0, 0, 4251, 792, 1, 0, 0, 0, 4252, 4253, 7, 18, 0, 0, 4253, 4254, 7, 19, 0, 0, 4254, 4255, 7, 19, 0, 0, 4255, 4256, 7, 6, 0, 0, 4256, 4257, 7, 10, 0, 0, 4257, 4258, 7, 5, 0, 0, 4258, 4259, 7, 7, 0, 0, 4259, 794, 1, 0, 0, 0, 4260, 4261, 7, 14, 0, 0, 4261, 4262, 7, 20, 0, 0, 4262, 4263, 7, 5, 0, 0, 4263, 4264, 7, 13, 0, 0, 4264, 796, 1, 0, 0, 0, 4265, 4266, 7, 14, 0, 0, 4266, 4267, 7, 20, 0, 0, 4267, 4268, 7, 5, 0, 0, 4268, 4269, 7, 13, 0, 0, 4269, 4270, 7, 5, 0, 0, 4270, 4271, 7, 14, 0, 0, 4271, 4272, 7, 16, 0, 0, 4272, 4273, 7, 10, 0, 0, 4273, 4274, 7, 13, 0, 0, 4274, 798, 1, 0, 0, 0, 4275, 4276, 7, 14, 0, 0, 4276, 4277, 7, 19, 0, 0, 4277, 4278, 7, 5, 0, 0, 4278, 4279, 7, 6, 0, 0, 4279, 4280, 7, 10, 0, 0, 4280, 4281, 7, 9, 0, 0, 4281, 4282, 7, 14, 0, 0, 4282, 4283, 7, 10, 0, 0, 4283, 800, 1, 0, 0, 0, 4284, 4285, 7, 12, 0, 0, 4285, 4286, 7, 10, 0, 0, 4286, 4287, 7, 14, 0, 0, 4287, 802, 1, 0, 0, 0, 4288, 4289, 7, 12, 0, 0, 4289, 4290, 7, 10, 0, 0, 4290, 4291, 7, 14, 0, 0, 4291, 4292, 7, 17, 0, 0, 4292, 4293, 7, 15, 0, 0, 4293, 4294, 7, 5, 0, 0, 4294, 4295, 7, 6, 0, 0, 4295, 804, 1, 0, 0, 0, 4296, 4297, 7, 10, 0, 0, 4297, 4298, 7, 26, 0, 0, 4298, 4299, 7, 17, 0, 0, 4299, 4300, 7, 9, 0, 0, 4300, 4301, 7, 16, 0, 0, 4301, 4302, 7, 9, 0, 0, 4302, 806, 1, 0, 0, 0, 4303, 4304, 7, 10, 0, 0, 4304, 4305, 7, 26, 0, 0, 4305, 4306, 7, 16, 0, 0, 4306, 4307, 7, 13, 0, 0, 4307, 4308, 7, 5, 0, 0, 4308, 4309, 7, 14, 0, 0, 4309, 4310, 7, 16, 0, 0, 4310, 808, 1, 0, 0, 0, 4311, 4312, 7, 25, 0, 0, 4312, 4313, 7, 6, 0, 0, 4313, 4314, 7, 19, 0, 0, 4314, 4315, 7, 5, 0, 0, 4315, 4316, 7, 16, 0, 0, 4316, 810, 1, 0, 0, 0, 4317, 4318, 7, 23, 0, 0, 4318, 4319, 7, 13, 0, 0, 4319, 4320, 7, 10, 0, 0, 4320, 4321, 7, 5, 0, 0, 4321, 4322, 7, 16, 0, 0, 4322, 4323, 7, 10, 0, 0, 4323, 4324, 7, 9, 0, 0, 4324, 4325, 7, 16, 0, 0, 4325, 812, 1, 0, 0, 0, 4326, 4327, 7, 17, 0, 0, 4327, 4328, 7, 7, 0, 0, 4328, 4329, 7, 19, 0, 0, 4329, 4330, 7, 22, 0, 0, 4330, 4331, 7, 16, 0, 0, 4331, 814, 1, 0, 0, 0, 4332, 4333, 7, 17, 0, 0, 4333, 4334, 7, 7, 0, 0, 4334, 4335, 7, 16, 0, 0, 4335, 816, 1, 0, 0, 0, 4336, 4337, 7, 17, 0, 0, 4337, 4338, 7, 7, 0, 0, 4338, 4339, 7, 16, 0, 0, 4339, 4340, 7, 10, 0, 0, 4340, 4341, 7, 23, 0, 0, 4341, 4342, 7, 10, 0, 0, 4342, 4343, 7, 13, 0, 0, 4343, 818, 1, 0, 0, 0, 4344, 4345, 7, 17, 0, 0, 4345, 4346, 7, 7, 0, 0, 4346, 4347, 7, 16, 0, 0, 4347, 4348, 7, 10, 0, 0, 4348, 4349, 7, 13, 0, 0, 4349, 4350, 7, 27, 0, 0, 4350, 4351, 7, 5, 0, 0, 4351, 4352, 7, 6, 0, 0, 4352, 820, 1, 0, 0, 0, 4353, 4354, 7, 6, 0, 0, 4354, 4355, 7, 10, 0, 0, 4355, 4356, 7, 5, 0, 0, 4356, 4357, 7, 9, 0, 0, 4357, 4358, 7, 16, 0, 0, 4358, 822, 1, 0, 0, 0, 4359, 4360, 7, 7, 0, 0, 4360, 4361, 7, 5, 0, 0, 4361, 4362, 7, 16, 0, 0, 4362, 4363, 7, 17, 0, 0, 4363, 4364, 7, 19, 0, 0, 4364, 4365, 7, 7, 0, 0, 4365, 4366, 7, 5, 0, 0, 4366, 4367, 7, 6, 0, 0, 4367, 824, 1, 0, 0, 0, 4368, 4369, 7, 7, 0, 0, 4369, 4370, 7, 14, 0, 0, 4370, 4371, 7, 20, 0, 0, 4371, 4372, 7, 5, 0, 0, 4372, 4373, 7, 13, 0, 0, 4373, 826, 1, 0, 0, 0, 4374, 4375, 7, 7, 0, 0, 4375, 4376, 7, 19, 0, 0, 4376, 4377, 7, 7, 0, 0, 4377, 4378, 7, 10, 0, 0, 4378, 828, 1, 0, 0, 0, 4379, 4380, 7, 7, 0, 0, 4380, 4381, 7, 22, 0, 0, 4381, 4382, 7, 6, 0, 0, 4382, 4383, 7, 6, 0, 0, 4383, 4384, 7, 17, 0, 0, 4384, 4385, 7, 25, 0, 0, 4385, 830, 1, 0, 0, 0, 4386, 4387, 7, 7, 0, 0, 4387, 4388, 7, 22, 0, 0, 4388, 4389, 7, 15, 0, 0, 4389, 4390, 7, 10, 0, 0, 4390, 4391, 7, 13, 0, 0, 4391, 4392, 7, 17, 0, 0, 4392, 4393, 7, 14, 0, 0, 4393, 832, 1, 0, 0, 0, 4394, 4395, 7, 19, 0, 0, 4395, 4396, 7, 27, 0, 0, 4396, 4397, 7, 10, 0, 0, 4397, 4398, 7, 13, 0, 0, 4398, 4399, 7, 6, 0, 0, 4399, 4400, 7, 5, 0, 0, 4400, 4401, 7, 8, 0, 0, 4401, 834, 1, 0, 0, 0, 4402, 4403, 7, 24, 0, 0, 4403, 4404, 7, 19, 0, 0, 4404, 4405, 7, 9, 0, 0, 4405, 4406, 7, 17, 0, 0, 4406, 4407, 7, 16, 0, 0, 4407, 4408, 7, 17, 0, 0, 4408, 4409, 7, 19, 0, 0, 4409, 4410, 7, 7, 0, 0, 4410, 836, 1, 0, 0, 0, 4411, 4412, 7, 24, 0, 0, 4412, 4413, 7, 13, 0, 0, 4413, 4414, 7, 10, 0, 0, 4414, 4415, 7, 14, 0, 0, 4415, 4416, 7, 17, 0, 0, 4416, 4417, 7, 9, 0, 0, 4417, 4418, 7, 17, 0, 0, 4418, 4419, 7, 19, 0, 0, 4419, 4420, 7, 7, 0, 0, 4420, 838, 1, 0, 0, 0, 4421, 4422, 7, 13, 0, 0, 4422, 4423, 7, 10, 0, 0, 4423, 4424, 7, 5, 0, 0, 4424, 4425, 7, 6, 0, 0, 4425, 840, 1, 0, 0, 0, 4426, 4427, 7, 13, 0, 0, 4427, 4428, 7, 19, 0, 0, 4428, 4429, 7, 28, 0, 0, 4429, 842, 1, 0, 0, 0, 4430, 4431, 7, 9, 0, 0, 4431, 4432, 7, 10, 0, 0, 4432, 4433, 7, 16, 0, 0, 4433, 4434, 7, 19, 0, 0, 4434, 4435, 7, 25, 0, 0, 4435, 844, 1, 0, 0, 0, 4436, 4437, 7, 9, 0, 0, 4437, 4438, 7, 15, 0, 0, 4438, 4439, 7, 5, 0, 0, 4439, 4440, 7, 6, 0, 0, 4440, 4441, 7, 6, 0, 0, 4441, 4442, 7, 17, 0, 0, 4442, 4443, 7, 7, 0, 0, 4443, 4444, 7, 16, 0, 0, 4444, 846, 1, 0, 0, 0, 4445, 4446, 7, 9, 0, 0, 4446, 4447, 7, 22, 0, 0, 4447, 4448, 7, 18, 0, 0, 4448, 4449, 7, 9, 0, 0, 4449, 4450, 7, 16, 0, 0, 4450, 4451, 7, 13, 0, 0, 4451, 4452, 7, 17, 0, 0, 4452, 4453, 7, 7, 0, 0, 4453, 4454, 7, 23, 0, 0, 4454, 848, 1, 0, 0, 0, 4455, 4456, 7, 16, 0, 0, 4456, 4457, 7, 17, 0, 0, 4457, 4458, 7, 15, 0, 0, 4458, 4459, 7, 10, 0, 0, 4459, 850, 1, 0, 0, 0, 4460, 4461, 7, 16, 0, 0, 4461, 4462, 7, 17, 0, 0, 4462, 4463, 7, 15, 0, 0, 4463, 4464, 7, 10, 0, 0, 4464, 4465, 7, 9, 0, 0, 4465, 4466, 7, 16, 0, 0, 4466, 4467, 7, 5, 0, 0, 4467, 4468, 7, 15, 0, 0, 4468, 4469, 7, 24, 0, 0, 4469, 852, 1, 0, 0, 0, 4470, 4471, 7, 16, 0, 0, 4471, 4472, 7, 13, 0, 0, 4472, 4473, 7, 10, 0, 0, 4473, 4474, 7, 5, 0, 0, 4474, 4475, 7, 16, 0, 0, 4475, 854, 1, 0, 0, 0, 4476, 4477, 7, 16, 0, 0, 4477, 4478, 7, 13, 0, 0, 4478, 4479, 7, 17, 0, 0, 4479, 4480, 7, 15, 0, 0, 4480, 856, 1, 0, 0, 0, 4481, 4482, 7, 27, 0, 0, 4482, 4483, 7, 5, 0, 0, 4483, 4484, 7, 6, 0, 0, 4484, 4485, 7, 22, 0, 0, 4485, 4486, 7, 10, 0, 0, 4486, 4487, 7, 9, 0, 0, 4487, 858, 1, 0, 0, 0, 4488, 4489, 7, 27, 0, 0, 4489, 4490, 7, 5, 0, 0, 4490, 4491, 7, 13, 0, 0, 4491, 4492, 7, 14, 0, 0, 4492, 4493, 7, 20, 0, 0, 4493, 4494, 7, 5, 0, 0, 4494, 4495, 7, 13, 0, 0, 4495, 860, 1, 0, 0, 0, 4496, 4497, 7, 26, 0, 0, 4497, 4498, 7, 15, 0, 0, 4498, 4499, 7, 6, 0, 0, 4499, 4500, 7, 5, 0, 0, 4500, 4501, 7, 16, 0, 0, 4501, 4502, 7, 16, 0, 0, 4502, 4503, 7, 13, 0, 0, 4503, 4504, 7, 17, 0, 0, 4504, 4505, 7, 18, 0, 0, 4505, 4506, 7, 22, 0, 0, 4506, 4507, 7, 16, 0, 0, 4507, 4508, 7, 10, 0, 0, 4508, 4509, 7, 9, 0, 0, 4509, 862, 1, 0, 0, 0, 4510, 4511, 7, 26, 0, 0, 4511, 4512, 7, 15, 0, 0, 4512, 4513, 7, 6, 0, 0, 4513, 4514, 7, 14, 0, 0, 4514, 4515, 7, 19, 0, 0, 4515, 4516, 7, 15, 0, 0, 4516, 4517, 7, 15, 0, 0, 4517, 4518, 7, 10, 0, 0, 4518, 4519, 7, 7, 0, 0, 4519, 4520, 7, 16, 0, 0, 4520, 864, 1, 0, 0, 0, 4521, 4522, 7, 26, 0, 0, 4522, 4523, 7, 15, 0, 0, 4523, 4524, 7, 6, 0, 0, 4524, 4525, 7, 5, 0, 0, 4525, 4526, 7, 23, 0, 0, 4526, 4527, 7, 23, 0, 0, 4527, 866, 1, 0, 0, 0, 4528, 4529, 7, 26, 0, 0, 4529, 4530, 7, 15, 0, 0, 4530, 4531, 7, 6, 0, 0, 4531, 4532, 5, 95, 0, 0, 4532, 4533, 7, 17, 0, 0, 4533, 4534, 7, 9, 0, 0, 4534, 4535, 5, 95, 0, 0, 4535, 4536, 7, 28, 0, 0, 4536, 4537, 7, 10, 0, 0, 4537, 4538, 7, 6, 0, 0, 4538, 4539, 7, 6, 0, 0, 4539, 4540, 5, 95, 0, 0, 4540, 4541, 7, 25, 0, 0, 4541, 4542, 7, 19, 0, 0, 4542, 4543, 7, 13, 0, 0, 4543, 4544, 7, 15, 0, 0, 4544, 4545, 7, 10, 0, 0, 4545, 4546, 7, 12, 0, 0, 4546, 868, 1, 0, 0, 0, 4547, 4548, 7, 26, 0, 0, 4548, 4549, 7, 15, 0, 0, 4549, 4550, 7, 6, 0, 0, 4550, 4551, 5, 95, 0, 0, 4551, 4552, 7, 17, 0, 0, 4552, 4553, 7, 9, 0, 0, 4553, 4554, 5, 95, 0, 0, 4554, 4555, 7, 28, 0, 0, 4555, 4556, 7, 10, 0, 0, 4556, 4557, 7, 6, 0, 0, 4557, 4558, 7, 6, 0, 0, 4558, 4559, 5, 95, 0, 0, 4559, 4560, 7, 25, 0, 0, 4560, 4561, 7, 19, 0, 0, 4561, 4562, 7, 13, 0, 0, 4562, 4563, 7, 15, 0, 0, 4563, 4564, 7, 10, 0, 0, 4564, 4565, 7, 12, 0, 0, 4565, 4566, 5, 95, 0, 0, 4566, 4567, 7, 12, 0, 0, 4567, 4568, 7, 19, 0, 0, 4568, 4569, 7, 14, 0, 0, 4569, 4570, 7, 22, 0, 0, 4570, 4571, 7, 15, 0, 0, 4571, 4572, 7, 10, 0, 0, 4572, 4573, 7, 7, 0, 0, 4573, 4574, 7, 16, 0, 0, 4574, 870, 1, 0, 0, 0, 4575, 4576, 7, 26, 0, 0, 4576, 4577, 7, 15, 0, 0, 4577, 4578, 7, 6, 0, 0, 4578, 4579, 5, 95, 0, 0, 4579, 4580, 7, 17, 0, 0, 4580, 4581, 7, 9, 0, 0, 4581, 4582, 5, 95, 0, 0, 4582, 4583, 7, 28, 0, 0, 4583, 4584, 7, 10, 0, 0, 4584, 4585, 7, 6, 0, 0, 4585, 4586, 7, 6, 0, 0, 4586, 4587, 5, 95, 0, 0, 4587, 4588, 7, 25, 0, 0, 4588, 4589, 7, 19, 0, 0, 4589, 4590, 7, 13, 0, 0, 4590, 4591, 7, 15, 0, 0, 4591, 4592, 7, 10, 0, 0, 4592, 4593, 7, 12, 0, 0, 4593, 4594, 5, 95, 0, 0, 4594, 4595, 7, 14, 0, 0, 4595, 4596, 7, 19, 0, 0, 4596, 4597, 7, 7, 0, 0, 4597, 4598, 7, 16, 0, 0, 4598, 4599, 7, 10, 0, 0, 4599, 4600, 7, 7, 0, 0, 4600, 4601, 7, 16, 0, 0, 4601, 872, 1, 0, 0, 0, 4602, 4603, 7, 26, 0, 0, 4603, 4604, 7, 24, 0, 0, 4604, 4605, 7, 5, 0, 0, 4605, 4606, 7, 16, 0, 0, 4606, 4607, 7, 20, 0, 0, 4607, 874, 1, 0, 0, 0, 4608, 4609, 7, 26, 0, 0, 4609, 4610, 7, 24, 0, 0, 4610, 4611, 7, 5, 0, 0, 4611, 4612, 7, 16, 0, 0, 4612, 4613, 7, 20, 0, 0, 4613, 4614, 5, 95, 0, 0, 4614, 4615, 7, 10, 0, 0, 4615, 4616, 7, 26, 0, 0, 4616, 4617, 7, 17, 0, 0, 4617, 4618, 7, 9, 0, 0, 4618, 4619, 7, 16, 0, 0, 4619, 4620, 7, 9, 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, 14, 0, 0, 4625, 4626, 7, 19, 0, 0, 4626, 4627, 7, 7, 0, 0, 4627, 4628, 7, 14, 0, 0, 4628, 4629, 7, 5, 0, 0, 4629, 4630, 7, 16, 0, 0, 4630, 878, 1, 0, 0, 0, 4631, 4632, 7, 26, 0, 0, 4632, 4633, 7, 15, 0, 0, 4633, 4634, 7, 6, 0, 0, 4634, 4635, 7, 10, 0, 0, 4635, 4636, 7, 6, 0, 0, 4636, 4637, 7, 10, 0, 0, 4637, 4638, 7, 15, 0, 0, 4638, 4639, 7, 10, 0, 0, 4639, 4640, 7, 7, 0, 0, 4640, 4641, 7, 16, 0, 0, 4641, 880, 1, 0, 0, 0, 4642, 4643, 7, 26, 0, 0, 4643, 4644, 7, 15, 0, 0, 4644, 4645, 7, 6, 0, 0, 4645, 4646, 7, 10, 0, 0, 4646, 4647, 7, 26, 0, 0, 4647, 4648, 7, 17, 0, 0, 4648, 4649, 7, 9, 0, 0, 4649, 4650, 7, 16, 0, 0, 4650, 4651, 7, 9, 0, 0, 4651, 882, 1, 0, 0, 0, 4652, 4653, 7, 26, 0, 0, 4653, 4654, 7, 15, 0, 0, 4654, 4655, 7, 6, 0, 0, 4655, 4656, 7, 25, 0, 0, 4656, 4657, 7, 19, 0, 0, 4657, 4658, 7, 13, 0, 0, 4658, 4659, 7, 10, 0, 0, 4659, 4660, 7, 9, 0, 0, 4660, 4661, 7, 16, 0, 0, 4661, 884, 1, 0, 0, 0, 4662, 4663, 7, 26, 0, 0, 4663, 4664, 7, 15, 0, 0, 4664, 4665, 7, 6, 0, 0, 4665, 4666, 7, 24, 0, 0, 4666, 4667, 7, 5, 0, 0, 4667, 4668, 7, 13, 0, 0, 4668, 4669, 7, 9, 0, 0, 4669, 4670, 7, 10, 0, 0, 4670, 886, 1, 0, 0, 0, 4671, 4672, 7, 26, 0, 0, 4672, 4673, 7, 15, 0, 0, 4673, 4674, 7, 6, 0, 0, 4674, 4675, 7, 24, 0, 0, 4675, 4676, 7, 17, 0, 0, 4676, 888, 1, 0, 0, 0, 4677, 4678, 7, 26, 0, 0, 4678, 4679, 7, 15, 0, 0, 4679, 4680, 7, 6, 0, 0, 4680, 4681, 7, 13, 0, 0, 4681, 4682, 7, 19, 0, 0, 4682, 4683, 7, 19, 0, 0, 4683, 4684, 7, 16, 0, 0, 4684, 890, 1, 0, 0, 0, 4685, 4686, 7, 26, 0, 0, 4686, 4687, 7, 15, 0, 0, 4687, 4688, 7, 6, 0, 0, 4688, 4689, 7, 9, 0, 0, 4689, 4690, 7, 10, 0, 0, 4690, 4691, 7, 13, 0, 0, 4691, 4692, 7, 17, 0, 0, 4692, 4693, 7, 5, 0, 0, 4693, 4694, 7, 6, 0, 0, 4694, 4695, 7, 17, 0, 0, 4695, 4696, 7, 11, 0, 0, 4696, 4697, 7, 10, 0, 0, 4697, 892, 1, 0, 0, 0, 4698, 4699, 7, 14, 0, 0, 4699, 4700, 7, 5, 0, 0, 4700, 4701, 7, 6, 0, 0, 4701, 4702, 7, 6, 0, 0, 4702, 894, 1, 0, 0, 0, 4703, 4704, 7, 14, 0, 0, 4704, 4705, 7, 22, 0, 0, 4705, 4706, 7, 13, 0, 0, 4706, 4707, 7, 13, 0, 0, 4707, 4708, 7, 10, 0, 0, 4708, 4709, 7, 7, 0, 0, 4709, 4710, 7, 16, 0, 0, 4710, 896, 1, 0, 0, 0, 4711, 4712, 7, 5, 0, 0, 4712, 4713, 7, 16, 0, 0, 4713, 4714, 7, 16, 0, 0, 4714, 4715, 7, 5, 0, 0, 4715, 4716, 7, 14, 0, 0, 4716, 4717, 7, 20, 0, 0, 4717, 898, 1, 0, 0, 0, 4718, 4719, 7, 12, 0, 0, 4719, 4720, 7, 10, 0, 0, 4720, 4721, 7, 16, 0, 0, 4721, 4722, 7, 5, 0, 0, 4722, 4723, 7, 14, 0, 0, 4723, 4724, 7, 20, 0, 0, 4724, 900, 1, 0, 0, 0, 4725, 4726, 7, 10, 0, 0, 4726, 4727, 7, 26, 0, 0, 4727, 4728, 7, 24, 0, 0, 4728, 4729, 7, 13, 0, 0, 4729, 4730, 7, 10, 0, 0, 4730, 4731, 7, 9, 0, 0, 4731, 4732, 7, 9, 0, 0, 4732, 4733, 7, 17, 0, 0, 4733, 4734, 7, 19, 0, 0, 4734, 4735, 7, 7, 0, 0, 4735, 902, 1, 0, 0, 0, 4736, 4737, 7, 23, 0, 0, 4737, 4738, 7, 10, 0, 0, 4738, 4739, 7, 7, 0, 0, 4739, 4740, 7, 10, 0, 0, 4740, 4741, 7, 13, 0, 0, 4741, 4742, 7, 5, 0, 0, 4742, 4743, 7, 16, 0, 0, 4743, 4744, 7, 10, 0, 0, 4744, 4745, 7, 12, 0, 0, 4745, 904, 1, 0, 0, 0, 4746, 4747, 7, 6, 0, 0, 4747, 4748, 7, 19, 0, 0, 4748, 4749, 7, 23, 0, 0, 4749, 4750, 7, 23, 0, 0, 4750, 4751, 7, 10, 0, 0, 4751, 4752, 7, 12, 0, 0, 4752, 906, 1, 0, 0, 0, 4753, 4754, 7, 9, 0, 0, 4754, 4755, 7, 16, 0, 0, 4755, 4756, 7, 19, 0, 0, 4756, 4757, 7, 13, 0, 0, 4757, 4758, 7, 10, 0, 0, 4758, 4759, 7, 12, 0, 0, 4759, 908, 1, 0, 0, 0, 4760, 4761, 7, 17, 0, 0, 4761, 4762, 7, 7, 0, 0, 4762, 4763, 7, 14, 0, 0, 4763, 4764, 7, 6, 0, 0, 4764, 4765, 7, 22, 0, 0, 4765, 4766, 7, 12, 0, 0, 4766, 4767, 7, 10, 0, 0, 4767, 910, 1, 0, 0, 0, 4768, 4769, 7, 13, 0, 0, 4769, 4770, 7, 19, 0, 0, 4770, 4771, 7, 22, 0, 0, 4771, 4772, 7, 16, 0, 0, 4772, 4773, 7, 17, 0, 0, 4773, 4774, 7, 7, 0, 0, 4774, 4775, 7, 10, 0, 0, 4775, 912, 1, 0, 0, 0, 4776, 4777, 7, 16, 0, 0, 4777, 4778, 7, 13, 0, 0, 4778, 4779, 7, 5, 0, 0, 4779, 4780, 7, 7, 0, 0, 4780, 4781, 7, 9, 0, 0, 4781, 4782, 7, 25, 0, 0, 4782, 4783, 7, 19, 0, 0, 4783, 4784, 7, 13, 0, 0, 4784, 4785, 7, 15, 0, 0, 4785, 914, 1, 0, 0, 0, 4786, 4787, 7, 17, 0, 0, 4787, 4788, 7, 15, 0, 0, 4788, 4789, 7, 24, 0, 0, 4789, 4790, 7, 19, 0, 0, 4790, 4791, 7, 13, 0, 0, 4791, 4792, 7, 16, 0, 0, 4792, 916, 1, 0, 0, 0, 4793, 4794, 7, 24, 0, 0, 4794, 4795, 7, 19, 0, 0, 4795, 4796, 7, 6, 0, 0, 4796, 4797, 7, 17, 0, 0, 4797, 4798, 7, 14, 0, 0, 4798, 4799, 7, 8, 0, 0, 4799, 918, 1, 0, 0, 0, 4800, 4801, 7, 15, 0, 0, 4801, 4802, 7, 10, 0, 0, 4802, 4803, 7, 16, 0, 0, 4803, 4804, 7, 20, 0, 0, 4804, 4805, 7, 19, 0, 0, 4805, 4806, 7, 12, 0, 0, 4806, 920, 1, 0, 0, 0, 4807, 4808, 7, 13, 0, 0, 4808, 4809, 7, 10, 0, 0, 4809, 4810, 7, 25, 0, 0, 4810, 4811, 7, 10, 0, 0, 4811, 4812, 7, 13, 0, 0, 4812, 4813, 7, 10, 0, 0, 4813, 4814, 7, 7, 0, 0, 4814, 4815, 7, 14, 0, 0, 4815, 4816, 7, 17, 0, 0, 4816, 4817, 7, 7, 0, 0, 4817, 4818, 7, 23, 0, 0, 4818, 922, 1, 0, 0, 0, 4819, 4820, 7, 7, 0, 0, 4820, 4821, 7, 10, 0, 0, 4821, 4822, 7, 28, 0, 0, 4822, 924, 1, 0, 0, 0, 4823, 4824, 7, 19, 0, 0, 4824, 4825, 7, 6, 0, 0, 4825, 4826, 7, 12, 0, 0, 4826, 926, 1, 0, 0, 0, 4827, 4828, 7, 27, 0, 0, 4828, 4829, 7, 5, 0, 0, 4829, 4830, 7, 6, 0, 0, 4830, 4831, 7, 22, 0, 0, 4831, 4832, 7, 10, 0, 0, 4832, 928, 1, 0, 0, 0, 4833, 4834, 7, 9, 0, 0, 4834, 4835, 7, 22, 0, 0, 4835, 4836, 7, 18, 0, 0, 4836, 4837, 7, 9, 0, 0, 4837, 4838, 7, 14, 0, 0, 4838, 4839, 7, 13, 0, 0, 4839, 4840, 7, 17, 0, 0, 4840, 4841, 7, 24, 0, 0, 4841, 4842, 7, 16, 0, 0, 4842, 4843, 7, 17, 0, 0, 4843, 4844, 7, 19, 0, 0, 4844, 4845, 7, 7, 0, 0, 4845, 930, 1, 0, 0, 0, 4846, 4847, 7, 24, 0, 0, 4847, 4848, 7, 22, 0, 0, 4848, 4849, 7, 18, 0, 0, 4849, 4850, 7, 6, 0, 0, 4850, 4851, 7, 17, 0, 0, 4851, 4852, 7, 14, 0, 0, 4852, 4853, 7, 5, 0, 0, 4853, 4854, 7, 16, 0, 0, 4854, 4855, 7, 17, 0, 0, 4855, 4856, 7, 19, 0, 0, 4856, 4857, 7, 7, 0, 0, 4857, 932, 1, 0, 0, 0, 4858, 4859, 7, 19, 0, 0, 4859, 4860, 7, 22, 0, 0, 4860, 4861, 7, 16, 0, 0, 4861, 934, 1, 0, 0, 0, 4862, 4863, 7, 10, 0, 0, 4863, 4864, 7, 7, 0, 0, 4864, 4865, 7, 12, 0, 0, 4865, 936, 1, 0, 0, 0, 4866, 4867, 7, 13, 0, 0, 4867, 4868, 7, 19, 0, 0, 4868, 4869, 7, 22, 0, 0, 4869, 4870, 7, 16, 0, 0, 4870, 4871, 7, 17, 0, 0, 4871, 4872, 7, 7, 0, 0, 4872, 4873, 7, 10, 0, 0, 4873, 4874, 7, 9, 0, 0, 4874, 938, 1, 0, 0, 0, 4875, 4876, 7, 9, 0, 0, 4876, 4877, 7, 14, 0, 0, 4877, 4878, 7, 20, 0, 0, 4878, 4879, 7, 10, 0, 0, 4879, 4880, 7, 15, 0, 0, 4880, 4881, 7, 5, 0, 0, 4881, 4882, 7, 9, 0, 0, 4882, 940, 1, 0, 0, 0, 4883, 4884, 7, 24, 0, 0, 4884, 4885, 7, 13, 0, 0, 4885, 4886, 7, 19, 0, 0, 4886, 4887, 7, 14, 0, 0, 4887, 4888, 7, 10, 0, 0, 4888, 4889, 7, 12, 0, 0, 4889, 4890, 7, 22, 0, 0, 4890, 4891, 7, 13, 0, 0, 4891, 4892, 7, 10, 0, 0, 4892, 4893, 7, 9, 0, 0, 4893, 942, 1, 0, 0, 0, 4894, 4895, 7, 17, 0, 0, 4895, 4896, 7, 7, 0, 0, 4896, 4897, 7, 24, 0, 0, 4897, 4898, 7, 22, 0, 0, 4898, 4899, 7, 16, 0, 0, 4899, 944, 1, 0, 0, 0, 4900, 4901, 7, 9, 0, 0, 4901, 4902, 7, 22, 0, 0, 4902, 4903, 7, 24, 0, 0, 4903, 4904, 7, 24, 0, 0, 4904, 4905, 7, 19, 0, 0, 4905, 4906, 7, 13, 0, 0, 4906, 4907, 7, 16, 0, 0, 4907, 946, 1, 0, 0, 0, 4908, 4909, 7, 24, 0, 0, 4909, 4910, 7, 5, 0, 0, 4910, 4911, 7, 13, 0, 0, 4911, 4912, 7, 5, 0, 0, 4912, 4913, 7, 6, 0, 0, 4913, 4914, 7, 6, 0, 0, 4914, 4915, 7, 10, 0, 0, 4915, 4916, 7, 6, 0, 0, 4916, 948, 1, 0, 0, 0, 4917, 4918, 7, 9, 0, 0, 4918, 4919, 7, 29, 0, 0, 4919, 4920, 7, 6, 0, 0, 4920, 950, 1, 0, 0, 0, 4921, 4922, 7, 12, 0, 0, 4922, 4923, 7, 10, 0, 0, 4923, 4924, 7, 24, 0, 0, 4924, 4925, 7, 10, 0, 0, 4925, 4926, 7, 7, 0, 0, 4926, 4927, 7, 12, 0, 0, 4927, 4928, 7, 9, 0, 0, 4928, 952, 1, 0, 0, 0, 4929, 4930, 7, 19, 0, 0, 4930, 4931, 7, 27, 0, 0, 4931, 4932, 7, 10, 0, 0, 4932, 4933, 7, 13, 0, 0, 4933, 4934, 7, 13, 0, 0, 4934, 4935, 7, 17, 0, 0, 4935, 4936, 7, 12, 0, 0, 4936, 4937, 7, 17, 0, 0, 4937, 4938, 7, 7, 0, 0, 4938, 4939, 7, 23, 0, 0, 4939, 954, 1, 0, 0, 0, 4940, 4941, 7, 14, 0, 0, 4941, 4942, 7, 19, 0, 0, 4942, 4943, 7, 7, 0, 0, 4943, 4944, 7, 25, 0, 0, 4944, 4945, 7, 6, 0, 0, 4945, 4946, 7, 17, 0, 0, 4946, 4947, 7, 14, 0, 0, 4947, 4948, 7, 16, 0, 0, 4948, 956, 1, 0, 0, 0, 4949, 4950, 7, 9, 0, 0, 4950, 4951, 7, 21, 0, 0, 4951, 4952, 7, 17, 0, 0, 4952, 4953, 7, 24, 0, 0, 4953, 958, 1, 0, 0, 0, 4954, 4955, 7, 6, 0, 0, 4955, 4956, 7, 19, 0, 0, 4956, 4957, 7, 14, 0, 0, 4957, 4958, 7, 21, 0, 0, 4958, 4959, 7, 10, 0, 0, 4959, 4960, 7, 12, 0, 0, 4960, 960, 1, 0, 0, 0, 4961, 4962, 7, 16, 0, 0, 4962, 4963, 7, 17, 0, 0, 4963, 4964, 7, 10, 0, 0, 4964, 4965, 7, 9, 0, 0, 4965, 962, 1, 0, 0, 0, 4966, 4967, 7, 13, 0, 0, 4967, 4968, 7, 19, 0, 0, 4968, 4969, 7, 6, 0, 0, 4969, 4970, 7, 6, 0, 0, 4970, 4971, 7, 22, 0, 0, 4971, 4972, 7, 24, 0, 0, 4972, 964, 1, 0, 0, 0, 4973, 4974, 7, 14, 0, 0, 4974, 4975, 7, 22, 0, 0, 4975, 4976, 7, 18, 0, 0, 4976, 4977, 7, 10, 0, 0, 4977, 966, 1, 0, 0, 0, 4978, 4979, 7, 23, 0, 0, 4979, 4980, 7, 13, 0, 0, 4980, 4981, 7, 19, 0, 0, 4981, 4982, 7, 22, 0, 0, 4982, 4983, 7, 24, 0, 0, 4983, 4984, 7, 17, 0, 0, 4984, 4985, 7, 7, 0, 0, 4985, 4986, 7, 23, 0, 0, 4986, 968, 1, 0, 0, 0, 4987, 4988, 7, 9, 0, 0, 4988, 4989, 7, 10, 0, 0, 4989, 4990, 7, 16, 0, 0, 4990, 4991, 7, 9, 0, 0, 4991, 970, 1, 0, 0, 0, 4992, 4993, 7, 16, 0, 0, 4993, 4994, 7, 5, 0, 0, 4994, 4995, 7, 18, 0, 0, 4995, 4996, 7, 6, 0, 0, 4996, 4997, 7, 10, 0, 0, 4997, 4998, 7, 9, 0, 0, 4998, 4999, 7, 5, 0, 0, 4999, 5000, 7, 15, 0, 0, 5000, 5001, 7, 24, 0, 0, 5001, 5002, 7, 6, 0, 0, 5002, 5003, 7, 10, 0, 0, 5003, 972, 1, 0, 0, 0, 5004, 5005, 7, 19, 0, 0, 5005, 5006, 7, 13, 0, 0, 5006, 5007, 7, 12, 0, 0, 5007, 5008, 7, 17, 0, 0, 5008, 5009, 7, 7, 0, 0, 5009, 5010, 7, 5, 0, 0, 5010, 5011, 7, 6, 0, 0, 5011, 5012, 7, 17, 0, 0, 5012, 5013, 7, 16, 0, 0, 5013, 5014, 7, 8, 0, 0, 5014, 974, 1, 0, 0, 0, 5015, 5016, 7, 26, 0, 0, 5016, 5017, 7, 15, 0, 0, 5017, 5018, 7, 6, 0, 0, 5018, 5019, 7, 16, 0, 0, 5019, 5020, 7, 5, 0, 0, 5020, 5021, 7, 18, 0, 0, 5021, 5022, 7, 6, 0, 0, 5022, 5023, 7, 10, 0, 0, 5023, 976, 1, 0, 0, 0, 5024, 5025, 7, 14, 0, 0, 5025, 5026, 7, 19, 0, 0, 5026, 5027, 7, 6, 0, 0, 5027, 5028, 7, 22, 0, 0, 5028, 5029, 7, 15, 0, 0, 5029, 5030, 7, 7, 0, 0, 5030, 5031, 7, 9, 0, 0, 5031, 978, 1, 0, 0, 0, 5032, 5033, 7, 26, 0, 0, 5033, 5034, 7, 15, 0, 0, 5034, 5035, 7, 6, 0, 0, 5035, 5036, 7, 7, 0, 0, 5036, 5037, 7, 5, 0, 0, 5037, 5038, 7, 15, 0, 0, 5038, 5039, 7, 10, 0, 0, 5039, 5040, 7, 9, 0, 0, 5040, 5041, 7, 24, 0, 0, 5041, 5042, 7, 5, 0, 0, 5042, 5043, 7, 14, 0, 0, 5043, 5044, 7, 10, 0, 0, 5044, 5045, 7, 9, 0, 0, 5045, 980, 1, 0, 0, 0, 5046, 5047, 7, 13, 0, 0, 5047, 5048, 7, 19, 0, 0, 5048, 5049, 7, 28, 0, 0, 5049, 5050, 7, 16, 0, 0, 5050, 5051, 7, 8, 0, 0, 5051, 5052, 7, 24, 0, 0, 5052, 5053, 7, 10, 0, 0, 5053, 982, 1, 0, 0, 0, 5054, 5055, 7, 7, 0, 0, 5055, 5056, 7, 19, 0, 0, 5056, 5057, 7, 13, 0, 0, 5057, 5058, 7, 15, 0, 0, 5058, 5059, 7, 5, 0, 0, 5059, 5060, 7, 6, 0, 0, 5060, 5061, 7, 17, 0, 0, 5061, 5062, 7, 11, 0, 0, 5062, 5063, 7, 10, 0, 0, 5063, 5064, 7, 12, 0, 0, 5064, 984, 1, 0, 0, 0, 5065, 5066, 7, 28, 0, 0, 5066, 5067, 7, 17, 0, 0, 5067, 5068, 7, 16, 0, 0, 5068, 5069, 7, 20, 0, 0, 5069, 5070, 7, 17, 0, 0, 5070, 5071, 7, 7, 0, 0, 5071, 986, 1, 0, 0, 0, 5072, 5073, 7, 25, 0, 0, 5073, 5074, 7, 17, 0, 0, 5074, 5075, 7, 6, 0, 0, 5075, 5076, 7, 16, 0, 0, 5076, 5077, 7, 10, 0, 0, 5077, 5078, 7, 13, 0, 0, 5078, 988, 1, 0, 0, 0, 5079, 5080, 7, 23, 0, 0, 5080, 5081, 7, 13, 0, 0, 5081, 5082, 7, 19, 0, 0, 5082, 5083, 7, 22, 0, 0, 5083, 5084, 7, 24, 0, 0, 5084, 5085, 7, 9, 0, 0, 5085, 990, 1, 0, 0, 0, 5086, 5087, 7, 19, 0, 0, 5087, 5088, 7, 16, 0, 0, 5088, 5089, 7, 20, 0, 0, 5089, 5090, 7, 10, 0, 0, 5090, 5091, 7, 13, 0, 0, 5091, 5092, 7, 9, 0, 0, 5092, 992, 1, 0, 0, 0, 5093, 5094, 7, 7, 0, 0, 5094, 5095, 7, 25, 0, 0, 5095, 5096, 7, 14, 0, 0, 5096, 994, 1, 0, 0, 0, 5097, 5098, 7, 7, 0, 0, 5098, 5099, 7, 25, 0, 0, 5099, 5100, 7, 12, 0, 0, 5100, 996, 1, 0, 0, 0, 5101, 5102, 7, 7, 0, 0, 5102, 5103, 7, 25, 0, 0, 5103, 5104, 7, 21, 0, 0, 5104, 5105, 7, 14, 0, 0, 5105, 998, 1, 0, 0, 0, 5106, 5107, 7, 7, 0, 0, 5107, 5108, 7, 25, 0, 0, 5108, 5109, 7, 21, 0, 0, 5109, 5110, 7, 12, 0, 0, 5110, 1000, 1, 0, 0, 0, 5111, 5112, 7, 22, 0, 0, 5112, 5113, 7, 10, 0, 0, 5113, 5114, 7, 9, 0, 0, 5114, 5115, 7, 14, 0, 0, 5115, 5116, 7, 5, 0, 0, 5116, 5117, 7, 24, 0, 0, 5117, 5118, 7, 10, 0, 0, 5118, 1002, 1, 0, 0, 0, 5119, 5120, 7, 27, 0, 0, 5120, 5121, 7, 17, 0, 0, 5121, 5122, 7, 10, 0, 0, 5122, 5123, 7, 28, 0, 0, 5123, 5124, 7, 9, 0, 0, 5124, 1004, 1, 0, 0, 0, 5125, 5126, 7, 7, 0, 0, 5126, 5127, 7, 19, 0, 0, 5127, 5128, 7, 13, 0, 0, 5128, 5129, 7, 15, 0, 0, 5129, 5130, 7, 5, 0, 0, 5130, 5131, 7, 6, 0, 0, 5131, 5132, 7, 17, 0, 0, 5132, 5133, 7, 11, 0, 0, 5133, 5134, 7, 10, 0, 0, 5134, 1006, 1, 0, 0, 0, 5135, 5136, 7, 12, 0, 0, 5136, 5137, 7, 22, 0, 0, 5137, 5138, 7, 15, 0, 0, 5138, 5139, 7, 24, 0, 0, 5139, 1008, 1, 0, 0, 0, 5140, 5141, 7, 24, 0, 0, 5141, 5142, 7, 13, 0, 0, 5142, 5143, 7, 17, 0, 0, 5143, 5144, 7, 7, 0, 0, 5144, 5145, 7, 16, 0, 0, 5145, 5146, 5, 95, 0, 0, 5146, 5147, 7, 9, 0, 0, 5147, 5148, 7, 16, 0, 0, 5148, 5149, 7, 13, 0, 0, 5149, 5150, 7, 17, 0, 0, 5150, 5151, 7, 14, 0, 0, 5151, 5152, 7, 16, 0, 0, 5152, 5153, 5, 95, 0, 0, 5153, 5154, 7, 24, 0, 0, 5154, 5155, 7, 5, 0, 0, 5155, 5156, 7, 13, 0, 0, 5156, 5157, 7, 5, 0, 0, 5157, 5158, 7, 15, 0, 0, 5158, 5159, 7, 9, 0, 0, 5159, 1010, 1, 0, 0, 0, 5160, 5161, 7, 27, 0, 0, 5161, 5162, 7, 5, 0, 0, 5162, 5163, 7, 13, 0, 0, 5163, 5164, 7, 17, 0, 0, 5164, 5165, 7, 5, 0, 0, 5165, 5166, 7, 18, 0, 0, 5166, 5167, 7, 6, 0, 0, 5167, 5168, 7, 10, 0, 0, 5168, 5169, 5, 95, 0, 0, 5169, 5170, 7, 14, 0, 0, 5170, 5171, 7, 19, 0, 0, 5171, 5172, 7, 7, 0, 0, 5172, 5173, 7, 25, 0, 0, 5173, 5174, 7, 6, 0, 0, 5174, 5175, 7, 17, 0, 0, 5175, 5176, 7, 14, 0, 0, 5176, 5177, 7, 16, 0, 0, 5177, 1012, 1, 0, 0, 0, 5178, 5179, 7, 10, 0, 0, 5179, 5180, 7, 13, 0, 0, 5180, 5181, 7, 13, 0, 0, 5181, 5182, 7, 19, 0, 0, 5182, 5183, 7, 13, 0, 0, 5183, 1014, 1, 0, 0, 0, 5184, 5185, 7, 22, 0, 0, 5185, 5186, 7, 9, 0, 0, 5186, 5187, 7, 10, 0, 0, 5187, 5188, 5, 95, 0, 0, 5188, 5189, 7, 27, 0, 0, 5189, 5190, 7, 5, 0, 0, 5190, 5191, 7, 13, 0, 0, 5191, 5192, 7, 17, 0, 0, 5192, 5193, 7, 5, 0, 0, 5193, 5194, 7, 18, 0, 0, 5194, 5195, 7, 6, 0, 0, 5195, 5196, 7, 10, 0, 0, 5196, 1016, 1, 0, 0, 0, 5197, 5198, 7, 22, 0, 0, 5198, 5199, 7, 9, 0, 0, 5199, 5200, 7, 10, 0, 0, 5200, 5201, 5, 95, 0, 0, 5201, 5202, 7, 14, 0, 0, 5202, 5203, 7, 19, 0, 0, 5203, 5204, 7, 6, 0, 0, 5204, 5205, 7, 22, 0, 0, 5205, 5206, 7, 15, 0, 0, 5206, 5207, 7, 7, 0, 0, 5207, 1018, 1, 0, 0, 0, 5208, 5209, 7, 5, 0, 0, 5209, 5210, 7, 6, 0, 0, 5210, 5211, 7, 17, 0, 0, 5211, 5212, 7, 5, 0, 0, 5212, 5213, 7, 9, 0, 0, 5213, 1020, 1, 0, 0, 0, 5214, 5215, 7, 14, 0, 0, 5215, 5216, 7, 19, 0, 0, 5216, 5217, 7, 7, 0, 0, 5217, 5218, 7, 9, 0, 0, 5218, 5219, 7, 16, 0, 0, 5219, 5220, 7, 5, 0, 0, 5220, 5221, 7, 7, 0, 0, 5221, 5222, 7, 16, 0, 0, 5222, 1022, 1, 0, 0, 0, 5223, 5224, 7, 24, 0, 0, 5224, 5225, 7, 10, 0, 0, 5225, 5226, 7, 13, 0, 0, 5226, 5227, 7, 25, 0, 0, 5227, 5228, 7, 19, 0, 0, 5228, 5229, 7, 13, 0, 0, 5229, 5230, 7, 15, 0, 0, 5230, 1024, 1, 0, 0, 0, 5231, 5232, 7, 23, 0, 0, 5232, 5233, 7, 10, 0, 0, 5233, 5234, 7, 16, 0, 0, 5234, 1026, 1, 0, 0, 0, 5235, 5236, 7, 12, 0, 0, 5236, 5237, 7, 17, 0, 0, 5237, 5238, 7, 5, 0, 0, 5238, 5239, 7, 23, 0, 0, 5239, 5240, 7, 7, 0, 0, 5240, 5241, 7, 19, 0, 0, 5241, 5242, 7, 9, 0, 0, 5242, 5243, 7, 16, 0, 0, 5243, 5244, 7, 17, 0, 0, 5244, 5245, 7, 14, 0, 0, 5245, 5246, 7, 9, 0, 0, 5246, 1028, 1, 0, 0, 0, 5247, 5248, 7, 9, 0, 0, 5248, 5249, 7, 16, 0, 0, 5249, 5250, 7, 5, 0, 0, 5250, 5251, 7, 14, 0, 0, 5251, 5252, 7, 21, 0, 0, 5252, 5253, 7, 10, 0, 0, 5253, 5254, 7, 12, 0, 0, 5254, 1030, 1, 0, 0, 0, 5255, 5256, 7, 10, 0, 0, 5256, 5257, 7, 6, 0, 0, 5257, 5258, 7, 9, 0, 0, 5258, 5259, 7, 17, 0, 0, 5259, 5260, 7, 25, 0, 0, 5260, 1032, 1, 0, 0, 0, 5261, 5262, 7, 28, 0, 0, 5262, 5263, 7, 20, 0, 0, 5263, 5264, 7, 17, 0, 0, 5264, 5265, 7, 6, 0, 0, 5265, 5266, 7, 10, 0, 0, 5266, 1034, 1, 0, 0, 0, 5267, 5268, 7, 13, 0, 0, 5268, 5269, 7, 10, 0, 0, 5269, 5270, 7, 27, 0, 0, 5270, 5271, 7, 10, 0, 0, 5271, 5272, 7, 13, 0, 0, 5272, 5273, 7, 9, 0, 0, 5273, 5274, 7, 10, 0, 0, 5274, 1036, 1, 0, 0, 0, 5275, 5276, 7, 25, 0, 0, 5276, 5277, 7, 19, 0, 0, 5277, 5278, 7, 13, 0, 0, 5278, 5279, 7, 10, 0, 0, 5279, 5280, 7, 5, 0, 0, 5280, 5281, 7, 14, 0, 0, 5281, 5282, 7, 20, 0, 0, 5282, 1038, 1, 0, 0, 0, 5283, 5284, 7, 9, 0, 0, 5284, 5285, 7, 6, 0, 0, 5285, 5286, 7, 17, 0, 0, 5286, 5287, 7, 14, 0, 0, 5287, 5288, 7, 10, 0, 0, 5288, 1040, 1, 0, 0, 0, 5289, 5290, 7, 10, 0, 0, 5290, 5291, 7, 26, 0, 0, 5291, 5292, 7, 17, 0, 0, 5292, 5293, 7, 16, 0, 0, 5293, 1042, 1, 0, 0, 0, 5294, 5295, 7, 13, 0, 0, 5295, 5296, 7, 10, 0, 0, 5296, 5297, 7, 16, 0, 0, 5297, 5298, 7, 22, 0, 0, 5298, 5299, 7, 13, 0, 0, 5299, 5300, 7, 7, 0, 0, 5300, 1044, 1, 0, 0, 0, 5301, 5302, 7, 29, 0, 0, 5302, 5303, 7, 22, 0, 0, 5303, 5304, 7, 10, 0, 0, 5304, 5305, 7, 13, 0, 0, 5305, 5306, 7, 8, 0, 0, 5306, 1046, 1, 0, 0, 0, 5307, 5308, 7, 13, 0, 0, 5308, 5309, 7, 5, 0, 0, 5309, 5310, 7, 17, 0, 0, 5310, 5311, 7, 9, 0, 0, 5311, 5312, 7, 10, 0, 0, 5312, 1048, 1, 0, 0, 0, 5313, 5314, 7, 9, 0, 0, 5314, 5315, 7, 29, 0, 0, 5315, 5316, 7, 6, 0, 0, 5316, 5317, 7, 9, 0, 0, 5317, 5318, 7, 16, 0, 0, 5318, 5319, 7, 5, 0, 0, 5319, 5320, 7, 16, 0, 0, 5320, 5321, 7, 10, 0, 0, 5321, 1050, 1, 0, 0, 0, 5322, 5323, 7, 12, 0, 0, 5323, 5324, 7, 10, 0, 0, 5324, 5325, 7, 18, 0, 0, 5325, 5326, 7, 22, 0, 0, 5326, 5327, 7, 23, 0, 0, 5327, 1052, 1, 0, 0, 0, 5328, 5329, 7, 6, 0, 0, 5329, 5330, 7, 19, 0, 0, 5330, 5331, 7, 23, 0, 0, 5331, 1054, 1, 0, 0, 0, 5332, 5333, 7, 17, 0, 0, 5333, 5334, 7, 7, 0, 0, 5334, 5335, 7, 25, 0, 0, 5335, 5336, 7, 19, 0, 0, 5336, 1056, 1, 0, 0, 0, 5337, 5338, 7, 7, 0, 0, 5338, 5339, 7, 19, 0, 0, 5339, 5340, 7, 16, 0, 0, 5340, 5341, 7, 17, 0, 0, 5341, 5342, 7, 14, 0, 0, 5342, 5343, 7, 10, 0, 0, 5343, 1058, 1, 0, 0, 0, 5344, 5345, 7, 28, 0, 0, 5345, 5346, 7, 5, 0, 0, 5346, 5347, 7, 13, 0, 0, 5347, 5348, 7, 7, 0, 0, 5348, 5349, 7, 17, 0, 0, 5349, 5350, 7, 7, 0, 0, 5350, 5351, 7, 23, 0, 0, 5351, 1060, 1, 0, 0, 0, 5352, 5353, 7, 10, 0, 0, 5353, 5354, 7, 26, 0, 0, 5354, 5355, 7, 14, 0, 0, 5355, 5356, 7, 10, 0, 0, 5356, 5357, 7, 24, 0, 0, 5357, 5358, 7, 16, 0, 0, 5358, 5359, 7, 17, 0, 0, 5359, 5360, 7, 19, 0, 0, 5360, 5361, 7, 7, 0, 0, 5361, 1062, 1, 0, 0, 0, 5362, 5363, 7, 5, 0, 0, 5363, 5364, 7, 9, 0, 0, 5364, 5365, 7, 9, 0, 0, 5365, 5366, 7, 10, 0, 0, 5366, 5367, 7, 13, 0, 0, 5367, 5368, 7, 16, 0, 0, 5368, 1064, 1, 0, 0, 0, 5369, 5370, 7, 6, 0, 0, 5370, 5371, 7, 19, 0, 0, 5371, 5372, 7, 19, 0, 0, 5372, 5373, 7, 24, 0, 0, 5373, 1066, 1, 0, 0, 0, 5374, 5375, 7, 19, 0, 0, 5375, 5376, 7, 24, 0, 0, 5376, 5377, 7, 10, 0, 0, 5377, 5378, 7, 7, 0, 0, 5378, 1068, 1, 0, 0, 0, 5379, 5380, 7, 5, 0, 0, 5380, 5381, 7, 18, 0, 0, 5381, 5382, 7, 9, 0, 0, 5382, 1070, 1, 0, 0, 0, 5383, 5384, 7, 14, 0, 0, 5384, 5385, 7, 18, 0, 0, 5385, 5386, 7, 13, 0, 0, 5386, 5387, 7, 16, 0, 0, 5387, 1072, 1, 0, 0, 0, 5388, 5389, 7, 14, 0, 0, 5389, 5390, 7, 10, 0, 0, 5390, 5391, 7, 17, 0, 0, 5391, 5392, 7, 6, 0, 0, 5392, 1074, 1, 0, 0, 0, 5393, 5394, 7, 14, 0, 0, 5394, 5395, 7, 10, 0, 0, 5395, 5396, 7, 17, 0, 0, 5396, 5397, 7, 6, 0, 0, 5397, 5398, 7, 17, 0, 0, 5398, 5399, 7, 7, 0, 0, 5399, 5400, 7, 23, 0, 0, 5400, 1076, 1, 0, 0, 0, 5401, 5402, 7, 12, 0, 0, 5402, 5403, 7, 10, 0, 0, 5403, 5404, 7, 23, 0, 0, 5404, 5405, 7, 13, 0, 0, 5405, 5406, 7, 10, 0, 0, 5406, 5407, 7, 10, 0, 0, 5407, 5408, 7, 9, 0, 0, 5408, 1078, 1, 0, 0, 0, 5409, 5410, 7, 12, 0, 0, 5410, 5411, 7, 17, 0, 0, 5411, 5412, 7, 27, 0, 0, 5412, 1080, 1, 0, 0, 0, 5413, 5414, 7, 10, 0, 0, 5414, 5415, 7, 26, 0, 0, 5415, 5416, 7, 24, 0, 0, 5416, 1082, 1, 0, 0, 0, 5417, 5418, 7, 25, 0, 0, 5418, 5419, 7, 5, 0, 0, 5419, 5420, 7, 14, 0, 0, 5420, 5421, 7, 16, 0, 0, 5421, 5422, 7, 19, 0, 0, 5422, 5423, 7, 13, 0, 0, 5423, 5424, 7, 17, 0, 0, 5424, 5425, 7, 5, 0, 0, 5425, 5426, 7, 6, 0, 0, 5426, 1084, 1, 0, 0, 0, 5427, 5428, 7, 25, 0, 0, 5428, 5429, 7, 6, 0, 0, 5429, 5430, 7, 19, 0, 0, 5430, 5431, 7, 19, 0, 0, 5431, 5432, 7, 13, 0, 0, 5432, 1086, 1, 0, 0, 0, 5433, 5434, 7, 23, 0, 0, 5434, 5435, 7, 14, 0, 0, 5435, 5436, 7, 12, 0, 0, 5436, 1088, 1, 0, 0, 0, 5437, 5438, 7, 6, 0, 0, 5438, 5439, 7, 14, 0, 0, 5439, 5440, 7, 15, 0, 0, 5440, 1090, 1, 0, 0, 0, 5441, 5442, 7, 6, 0, 0, 5442, 5443, 7, 7, 0, 0, 5443, 1092, 1, 0, 0, 0, 5444, 5445, 7, 6, 0, 0, 5445, 5446, 7, 19, 0, 0, 5446, 5447, 7, 23, 0, 0, 5447, 5448, 5, 49, 0, 0, 5448, 5449, 5, 48, 0, 0, 5449, 1094, 1, 0, 0, 0, 5450, 5451, 7, 15, 0, 0, 5451, 5452, 7, 17, 0, 0, 5452, 5453, 7, 7, 0, 0, 5453, 5454, 5, 95, 0, 0, 5454, 5455, 7, 9, 0, 0, 5455, 5456, 7, 14, 0, 0, 5456, 5457, 7, 5, 0, 0, 5457, 5458, 7, 6, 0, 0, 5458, 5459, 7, 10, 0, 0, 5459, 1096, 1, 0, 0, 0, 5460, 5461, 7, 15, 0, 0, 5461, 5462, 7, 19, 0, 0, 5462, 5463, 7, 12, 0, 0, 5463, 1098, 1, 0, 0, 0, 5464, 5465, 7, 24, 0, 0, 5465, 5466, 7, 17, 0, 0, 5466, 1100, 1, 0, 0, 0, 5467, 5468, 7, 24, 0, 0, 5468, 5469, 7, 19, 0, 0, 5469, 5470, 7, 28, 0, 0, 5470, 5471, 7, 10, 0, 0, 5471, 5472, 7, 13, 0, 0, 5472, 1102, 1, 0, 0, 0, 5473, 5474, 7, 13, 0, 0, 5474, 5475, 7, 5, 0, 0, 5475, 5476, 7, 12, 0, 0, 5476, 5477, 7, 17, 0, 0, 5477, 5478, 7, 5, 0, 0, 5478, 5479, 7, 7, 0, 0, 5479, 5480, 7, 9, 0, 0, 5480, 1104, 1, 0, 0, 0, 5481, 5482, 7, 13, 0, 0, 5482, 5483, 7, 19, 0, 0, 5483, 5484, 7, 22, 0, 0, 5484, 5485, 7, 7, 0, 0, 5485, 5486, 7, 12, 0, 0, 5486, 1106, 1, 0, 0, 0, 5487, 5488, 7, 9, 0, 0, 5488, 5489, 7, 14, 0, 0, 5489, 5490, 7, 5, 0, 0, 5490, 5491, 7, 6, 0, 0, 5491, 5492, 7, 10, 0, 0, 5492, 1108, 1, 0, 0, 0, 5493, 5494, 7, 9, 0, 0, 5494, 5495, 7, 17, 0, 0, 5495, 5496, 7, 23, 0, 0, 5496, 5497, 7, 7, 0, 0, 5497, 1110, 1, 0, 0, 0, 5498, 5499, 7, 9, 0, 0, 5499, 5500, 7, 29, 0, 0, 5500, 5501, 7, 13, 0, 0, 5501, 5502, 7, 16, 0, 0, 5502, 1112, 1, 0, 0, 0, 5503, 5504, 7, 16, 0, 0, 5504, 5505, 7, 13, 0, 0, 5505, 5506, 7, 17, 0, 0, 5506, 5507, 7, 15, 0, 0, 5507, 5508, 5, 95, 0, 0, 5508, 5509, 7, 9, 0, 0, 5509, 5510, 7, 14, 0, 0, 5510, 5511, 7, 5, 0, 0, 5511, 5512, 7, 6, 0, 0, 5512, 5513, 7, 10, 0, 0, 5513, 1114, 1, 0, 0, 0, 5514, 5515, 7, 16, 0, 0, 5515, 5516, 7, 13, 0, 0, 5516, 5517, 7, 22, 0, 0, 5517, 5518, 7, 7, 0, 0, 5518, 5519, 7, 14, 0, 0, 5519, 1116, 1, 0, 0, 0, 5520, 5521, 7, 28, 0, 0, 5521, 5522, 7, 17, 0, 0, 5522, 5523, 7, 12, 0, 0, 5523, 5524, 7, 16, 0, 0, 5524, 5525, 7, 20, 0, 0, 5525, 5526, 5, 95, 0, 0, 5526, 5527, 7, 18, 0, 0, 5527, 5528, 7, 22, 0, 0, 5528, 5529, 7, 14, 0, 0, 5529, 5530, 7, 21, 0, 0, 5530, 5531, 7, 10, 0, 0, 5531, 5532, 7, 16, 0, 0, 5532, 1118, 1, 0, 0, 0, 5533, 5534, 7, 13, 0, 0, 5534, 5535, 7, 5, 0, 0, 5535, 5536, 7, 7, 0, 0, 5536, 5537, 7, 12, 0, 0, 5537, 5538, 7, 19, 0, 0, 5538, 5539, 7, 15, 0, 0, 5539, 1120, 1, 0, 0, 0, 5540, 5541, 7, 9, 0, 0, 5541, 5542, 7, 10, 0, 0, 5542, 5543, 7, 16, 0, 0, 5543, 5544, 7, 9, 0, 0, 5544, 5545, 7, 10, 0, 0, 5545, 5546, 7, 10, 0, 0, 5546, 5547, 7, 12, 0, 0, 5547, 1122, 1, 0, 0, 0, 5548, 5549, 7, 5, 0, 0, 5549, 5550, 7, 14, 0, 0, 5550, 5551, 7, 19, 0, 0, 5551, 5552, 7, 9, 0, 0, 5552, 1124, 1, 0, 0, 0, 5553, 5554, 7, 5, 0, 0, 5554, 5555, 7, 14, 0, 0, 5555, 5556, 7, 19, 0, 0, 5556, 5557, 7, 9, 0, 0, 5557, 5558, 7, 12, 0, 0, 5558, 1126, 1, 0, 0, 0, 5559, 5560, 7, 5, 0, 0, 5560, 5561, 7, 9, 0, 0, 5561, 5562, 7, 17, 0, 0, 5562, 5563, 7, 7, 0, 0, 5563, 1128, 1, 0, 0, 0, 5564, 5565, 7, 5, 0, 0, 5565, 5566, 7, 9, 0, 0, 5566, 5567, 7, 17, 0, 0, 5567, 5568, 7, 7, 0, 0, 5568, 5569, 7, 12, 0, 0, 5569, 1130, 1, 0, 0, 0, 5570, 5571, 7, 5, 0, 0, 5571, 5572, 7, 16, 0, 0, 5572, 5573, 7, 5, 0, 0, 5573, 5574, 7, 7, 0, 0, 5574, 1132, 1, 0, 0, 0, 5575, 5576, 7, 5, 0, 0, 5576, 5577, 7, 16, 0, 0, 5577, 5578, 7, 5, 0, 0, 5578, 5579, 7, 7, 0, 0, 5579, 5580, 7, 12, 0, 0, 5580, 1134, 1, 0, 0, 0, 5581, 5582, 7, 5, 0, 0, 5582, 5583, 7, 16, 0, 0, 5583, 5584, 7, 5, 0, 0, 5584, 5585, 7, 7, 0, 0, 5585, 5586, 5, 50, 0, 0, 5586, 1136, 1, 0, 0, 0, 5587, 5588, 7, 5, 0, 0, 5588, 5589, 7, 16, 0, 0, 5589, 5590, 7, 5, 0, 0, 5590, 5591, 7, 7, 0, 0, 5591, 5592, 5, 50, 0, 0, 5592, 5593, 7, 12, 0, 0, 5593, 1138, 1, 0, 0, 0, 5594, 5595, 7, 14, 0, 0, 5595, 5596, 7, 19, 0, 0, 5596, 5597, 7, 9, 0, 0, 5597, 1140, 1, 0, 0, 0, 5598, 5599, 7, 14, 0, 0, 5599, 5600, 7, 19, 0, 0, 5600, 5601, 7, 9, 0, 0, 5601, 5602, 7, 12, 0, 0, 5602, 1142, 1, 0, 0, 0, 5603, 5604, 7, 14, 0, 0, 5604, 5605, 7, 19, 0, 0, 5605, 5606, 7, 16, 0, 0, 5606, 1144, 1, 0, 0, 0, 5607, 5608, 7, 14, 0, 0, 5608, 5609, 7, 19, 0, 0, 5609, 5610, 7, 16, 0, 0, 5610, 5611, 7, 12, 0, 0, 5611, 1146, 1, 0, 0, 0, 5612, 5613, 7, 9, 0, 0, 5613, 5614, 7, 17, 0, 0, 5614, 5615, 7, 7, 0, 0, 5615, 1148, 1, 0, 0, 0, 5616, 5617, 7, 9, 0, 0, 5617, 5618, 7, 17, 0, 0, 5618, 5619, 7, 7, 0, 0, 5619, 5620, 7, 12, 0, 0, 5620, 1150, 1, 0, 0, 0, 5621, 5622, 7, 16, 0, 0, 5622, 5623, 7, 5, 0, 0, 5623, 5624, 7, 7, 0, 0, 5624, 1152, 1, 0, 0, 0, 5625, 5626, 7, 16, 0, 0, 5626, 5627, 7, 5, 0, 0, 5627, 5628, 7, 7, 0, 0, 5628, 5629, 7, 12, 0, 0, 5629, 1154, 1, 0, 0, 0, 5630, 5631, 7, 9, 0, 0, 5631, 5632, 7, 17, 0, 0, 5632, 5633, 7, 7, 0, 0, 5633, 5634, 7, 20, 0, 0, 5634, 1156, 1, 0, 0, 0, 5635, 5636, 7, 14, 0, 0, 5636, 5637, 7, 19, 0, 0, 5637, 5638, 7, 9, 0, 0, 5638, 5639, 7, 20, 0, 0, 5639, 1158, 1, 0, 0, 0, 5640, 5641, 7, 16, 0, 0, 5641, 5642, 7, 5, 0, 0, 5642, 5643, 7, 7, 0, 0, 5643, 5644, 7, 20, 0, 0, 5644, 1160, 1, 0, 0, 0, 5645, 5646, 7, 5, 0, 0, 5646, 5647, 7, 9, 0, 0, 5647, 5648, 7, 17, 0, 0, 5648, 5649, 7, 7, 0, 0, 5649, 5650, 7, 20, 0, 0, 5650, 1162, 1, 0, 0, 0, 5651, 5652, 7, 5, 0, 0, 5652, 5653, 7, 14, 0, 0, 5653, 5654, 7, 19, 0, 0, 5654, 5655, 7, 9, 0, 0, 5655, 5656, 7, 20, 0, 0, 5656, 1164, 1, 0, 0, 0, 5657, 5658, 7, 5, 0, 0, 5658, 5659, 7, 16, 0, 0, 5659, 5660, 7, 5, 0, 0, 5660, 5661, 7, 7, 0, 0, 5661, 5662, 7, 20, 0, 0, 5662, 1166, 1, 0, 0, 0, 5663, 5664, 7, 18, 0, 0, 5664, 5665, 7, 17, 0, 0, 5665, 5666, 7, 16, 0, 0, 5666, 5667, 5, 95, 0, 0, 5667, 5668, 7, 6, 0, 0, 5668, 5669, 7, 10, 0, 0, 5669, 5670, 7, 7, 0, 0, 5670, 5671, 7, 23, 0, 0, 5671, 5672, 7, 16, 0, 0, 5672, 5673, 7, 20, 0, 0, 5673, 1168, 1, 0, 0, 0, 5674, 5675, 7, 14, 0, 0, 5675, 5676, 7, 20, 0, 0, 5676, 5677, 7, 5, 0, 0, 5677, 5678, 7, 13, 0, 0, 5678, 5679, 5, 95, 0, 0, 5679, 5680, 7, 6, 0, 0, 5680, 5681, 7, 10, 0, 0, 5681, 5682, 7, 7, 0, 0, 5682, 5683, 7, 23, 0, 0, 5683, 5684, 7, 16, 0, 0, 5684, 5685, 7, 20, 0, 0, 5685, 1170, 1, 0, 0, 0, 5686, 5687, 7, 14, 0, 0, 5687, 5688, 7, 20, 0, 0, 5688, 5689, 7, 5, 0, 0, 5689, 5690, 7, 13, 0, 0, 5690, 5691, 7, 5, 0, 0, 5691, 5692, 7, 14, 0, 0, 5692, 5693, 7, 16, 0, 0, 5693, 5694, 7, 10, 0, 0, 5694, 5695, 7, 13, 0, 0, 5695, 5696, 5, 95, 0, 0, 5696, 5697, 7, 6, 0, 0, 5697, 5698, 7, 10, 0, 0, 5698, 5699, 7, 7, 0, 0, 5699, 5700, 7, 23, 0, 0, 5700, 5701, 7, 16, 0, 0, 5701, 5702, 7, 20, 0, 0, 5702, 1172, 1, 0, 0, 0, 5703, 5704, 7, 6, 0, 0, 5704, 5705, 7, 19, 0, 0, 5705, 5706, 7, 28, 0, 0, 5706, 5707, 7, 10, 0, 0, 5707, 5708, 7, 13, 0, 0, 5708, 1174, 1, 0, 0, 0, 5709, 5710, 7, 19, 0, 0, 5710, 5711, 7, 14, 0, 0, 5711, 5712, 7, 16, 0, 0, 5712, 5713, 7, 10, 0, 0, 5713, 5714, 7, 16, 0, 0, 5714, 5715, 5, 95, 0, 0, 5715, 5716, 7, 6, 0, 0, 5716, 5717, 7, 10, 0, 0, 5717, 5718, 7, 7, 0, 0, 5718, 5719, 7, 23, 0, 0, 5719, 5720, 7, 16, 0, 0, 5720, 5721, 7, 20, 0, 0, 5721, 1176, 1, 0, 0, 0, 5722, 5723, 7, 22, 0, 0, 5723, 5724, 7, 24, 0, 0, 5724, 5725, 7, 24, 0, 0, 5725, 5726, 7, 10, 0, 0, 5726, 5727, 7, 13, 0, 0, 5727, 1178, 1, 0, 0, 0, 5728, 5729, 7, 5, 0, 0, 5729, 5730, 7, 9, 0, 0, 5730, 5731, 7, 14, 0, 0, 5731, 5732, 7, 17, 0, 0, 5732, 5733, 7, 17, 0, 0, 5733, 1180, 1, 0, 0, 0, 5734, 5735, 7, 18, 0, 0, 5735, 5736, 7, 16, 0, 0, 5736, 5737, 7, 13, 0, 0, 5737, 5738, 7, 17, 0, 0, 5738, 5739, 7, 15, 0, 0, 5739, 1182, 1, 0, 0, 0, 5740, 5741, 7, 14, 0, 0, 5741, 5742, 7, 20, 0, 0, 5742, 5743, 7, 13, 0, 0, 5743, 1184, 1, 0, 0, 0, 5744, 5745, 7, 14, 0, 0, 5745, 5746, 7, 19, 0, 0, 5746, 5747, 7, 7, 0, 0, 5747, 5748, 7, 14, 0, 0, 5748, 5749, 7, 5, 0, 0, 5749, 5750, 7, 16, 0, 0, 5750, 1186, 1, 0, 0, 0, 5751, 5752, 7, 14, 0, 0, 5752, 5753, 7, 19, 0, 0, 5753, 5754, 7, 7, 0, 0, 5754, 5755, 7, 14, 0, 0, 5755, 5756, 7, 5, 0, 0, 5756, 5757, 7, 16, 0, 0, 5757, 5758, 5, 95, 0, 0, 5758, 5759, 7, 28, 0, 0, 5759, 5760, 7, 9, 0, 0, 5760, 1188, 1, 0, 0, 0, 5761, 5762, 7, 25, 0, 0, 5762, 5763, 7, 19, 0, 0, 5763, 5764, 7, 13, 0, 0, 5764, 5765, 7, 15, 0, 0, 5765, 5766, 7, 5, 0, 0, 5766, 5767, 7, 16, 0, 0, 5767, 1190, 1, 0, 0, 0, 5768, 5769, 7, 17, 0, 0, 5769, 5770, 7, 7, 0, 0, 5770, 5771, 7, 17, 0, 0, 5771, 5772, 7, 16, 0, 0, 5772, 5773, 7, 14, 0, 0, 5773, 5774, 7, 5, 0, 0, 5774, 5775, 7, 24, 0, 0, 5775, 1192, 1, 0, 0, 0, 5776, 5777, 7, 6, 0, 0, 5777, 5778, 7, 10, 0, 0, 5778, 5779, 7, 7, 0, 0, 5779, 5780, 7, 23, 0, 0, 5780, 5781, 7, 16, 0, 0, 5781, 5782, 7, 20, 0, 0, 5782, 1194, 1, 0, 0, 0, 5783, 5784, 7, 6, 0, 0, 5784, 5785, 7, 24, 0, 0, 5785, 5786, 7, 5, 0, 0, 5786, 5787, 7, 12, 0, 0, 5787, 1196, 1, 0, 0, 0, 5788, 5789, 7, 6, 0, 0, 5789, 5790, 7, 16, 0, 0, 5790, 5791, 7, 13, 0, 0, 5791, 5792, 7, 17, 0, 0, 5792, 5793, 7, 15, 0, 0, 5793, 1198, 1, 0, 0, 0, 5794, 5795, 7, 15, 0, 0, 5795, 5796, 7, 12, 0, 0, 5796, 5797, 5, 53, 0, 0, 5797, 1200, 1, 0, 0, 0, 5798, 5799, 7, 24, 0, 0, 5799, 5800, 7, 5, 0, 0, 5800, 5801, 7, 13, 0, 0, 5801, 5802, 7, 9, 0, 0, 5802, 5803, 7, 10, 0, 0, 5803, 5804, 5, 95, 0, 0, 5804, 5805, 7, 17, 0, 0, 5805, 5806, 7, 12, 0, 0, 5806, 5807, 7, 10, 0, 0, 5807, 5808, 7, 7, 0, 0, 5808, 5809, 7, 16, 0, 0, 5809, 1202, 1, 0, 0, 0, 5810, 5811, 7, 24, 0, 0, 5811, 5812, 7, 23, 0, 0, 5812, 5813, 5, 95, 0, 0, 5813, 5814, 7, 14, 0, 0, 5814, 5815, 7, 6, 0, 0, 5815, 5816, 7, 17, 0, 0, 5816, 5817, 7, 10, 0, 0, 5817, 5818, 7, 7, 0, 0, 5818, 5819, 7, 16, 0, 0, 5819, 5820, 5, 95, 0, 0, 5820, 5821, 7, 10, 0, 0, 5821, 5822, 7, 7, 0, 0, 5822, 5823, 7, 14, 0, 0, 5823, 5824, 7, 19, 0, 0, 5824, 5825, 7, 12, 0, 0, 5825, 5826, 7, 17, 0, 0, 5826, 5827, 7, 7, 0, 0, 5827, 5828, 7, 23, 0, 0, 5828, 1204, 1, 0, 0, 0, 5829, 5830, 7, 29, 0, 0, 5830, 5831, 7, 22, 0, 0, 5831, 5832, 7, 19, 0, 0, 5832, 5833, 7, 16, 0, 0, 5833, 5834, 7, 10, 0, 0, 5834, 5835, 5, 95, 0, 0, 5835, 5836, 7, 17, 0, 0, 5836, 5837, 7, 12, 0, 0, 5837, 5838, 7, 10, 0, 0, 5838, 5839, 7, 7, 0, 0, 5839, 5840, 7, 16, 0, 0, 5840, 1206, 1, 0, 0, 0, 5841, 5842, 7, 29, 0, 0, 5842, 5843, 7, 22, 0, 0, 5843, 5844, 7, 19, 0, 0, 5844, 5845, 7, 16, 0, 0, 5845, 5846, 7, 10, 0, 0, 5846, 5847, 5, 95, 0, 0, 5847, 5848, 7, 6, 0, 0, 5848, 5849, 7, 17, 0, 0, 5849, 5850, 7, 16, 0, 0, 5850, 5851, 7, 10, 0, 0, 5851, 5852, 7, 13, 0, 0, 5852, 5853, 7, 5, 0, 0, 5853, 5854, 7, 6, 0, 0, 5854, 1208, 1, 0, 0, 0, 5855, 5856, 7, 29, 0, 0, 5856, 5857, 7, 22, 0, 0, 5857, 5858, 7, 19, 0, 0, 5858, 5859, 7, 16, 0, 0, 5859, 5860, 7, 10, 0, 0, 5860, 5861, 5, 95, 0, 0, 5861, 5862, 7, 7, 0, 0, 5862, 5863, 7, 22, 0, 0, 5863, 5864, 7, 6, 0, 0, 5864, 5865, 7, 6, 0, 0, 5865, 5866, 7, 5, 0, 0, 5866, 5867, 7, 18, 0, 0, 5867, 5868, 7, 6, 0, 0, 5868, 5869, 7, 10, 0, 0, 5869, 1210, 1, 0, 0, 0, 5870, 5871, 7, 13, 0, 0, 5871, 5872, 7, 10, 0, 0, 5872, 5873, 7, 23, 0, 0, 5873, 5874, 7, 10, 0, 0, 5874, 5875, 7, 26, 0, 0, 5875, 5876, 7, 24, 0, 0, 5876, 5877, 5, 95, 0, 0, 5877, 5878, 7, 14, 0, 0, 5878, 5879, 7, 19, 0, 0, 5879, 5880, 7, 22, 0, 0, 5880, 5881, 7, 7, 0, 0, 5881, 5882, 7, 16, 0, 0, 5882, 1212, 1, 0, 0, 0, 5883, 5884, 7, 13, 0, 0, 5884, 5885, 7, 10, 0, 0, 5885, 5886, 7, 23, 0, 0, 5886, 5887, 7, 10, 0, 0, 5887, 5888, 7, 26, 0, 0, 5888, 5889, 7, 24, 0, 0, 5889, 5890, 5, 95, 0, 0, 5890, 5891, 7, 17, 0, 0, 5891, 5892, 7, 7, 0, 0, 5892, 5893, 7, 9, 0, 0, 5893, 5894, 7, 16, 0, 0, 5894, 5895, 7, 13, 0, 0, 5895, 1214, 1, 0, 0, 0, 5896, 5897, 7, 13, 0, 0, 5897, 5898, 7, 10, 0, 0, 5898, 5899, 7, 23, 0, 0, 5899, 5900, 7, 10, 0, 0, 5900, 5901, 7, 26, 0, 0, 5901, 5902, 7, 24, 0, 0, 5902, 5903, 5, 95, 0, 0, 5903, 5904, 7, 6, 0, 0, 5904, 5905, 7, 17, 0, 0, 5905, 5906, 7, 21, 0, 0, 5906, 5907, 7, 10, 0, 0, 5907, 1216, 1, 0, 0, 0, 5908, 5909, 7, 13, 0, 0, 5909, 5910, 7, 10, 0, 0, 5910, 5911, 7, 23, 0, 0, 5911, 5912, 7, 10, 0, 0, 5912, 5913, 7, 26, 0, 0, 5913, 5914, 7, 24, 0, 0, 5914, 5915, 5, 95, 0, 0, 5915, 5916, 7, 15, 0, 0, 5916, 5917, 7, 5, 0, 0, 5917, 5918, 7, 16, 0, 0, 5918, 5919, 7, 14, 0, 0, 5919, 5920, 7, 20, 0, 0, 5920, 1218, 1, 0, 0, 0, 5921, 5922, 7, 13, 0, 0, 5922, 5923, 7, 10, 0, 0, 5923, 5924, 7, 23, 0, 0, 5924, 5925, 7, 10, 0, 0, 5925, 5926, 7, 26, 0, 0, 5926, 5927, 7, 24, 0, 0, 5927, 5928, 5, 95, 0, 0, 5928, 5929, 7, 15, 0, 0, 5929, 5930, 7, 5, 0, 0, 5930, 5931, 7, 16, 0, 0, 5931, 5932, 7, 14, 0, 0, 5932, 5933, 7, 20, 0, 0, 5933, 5934, 7, 10, 0, 0, 5934, 5935, 7, 9, 0, 0, 5935, 1220, 1, 0, 0, 0, 5936, 5937, 7, 13, 0, 0, 5937, 5938, 7, 10, 0, 0, 5938, 5939, 7, 23, 0, 0, 5939, 5940, 7, 10, 0, 0, 5940, 5941, 7, 26, 0, 0, 5941, 5942, 7, 24, 0, 0, 5942, 5943, 5, 95, 0, 0, 5943, 5944, 7, 13, 0, 0, 5944, 5945, 7, 10, 0, 0, 5945, 5946, 7, 24, 0, 0, 5946, 5947, 7, 6, 0, 0, 5947, 5948, 7, 5, 0, 0, 5948, 5949, 7, 14, 0, 0, 5949, 5950, 7, 10, 0, 0, 5950, 1222, 1, 0, 0, 0, 5951, 5952, 7, 13, 0, 0, 5952, 5953, 7, 10, 0, 0, 5953, 5954, 7, 23, 0, 0, 5954, 5955, 7, 10, 0, 0, 5955, 5956, 7, 26, 0, 0, 5956, 5957, 7, 24, 0, 0, 5957, 5958, 5, 95, 0, 0, 5958, 5959, 7, 9, 0, 0, 5959, 5960, 7, 24, 0, 0, 5960, 5961, 7, 6, 0, 0, 5961, 5962, 7, 17, 0, 0, 5962, 5963, 7, 16, 0, 0, 5963, 5964, 5, 95, 0, 0, 5964, 5965, 7, 16, 0, 0, 5965, 5966, 7, 19, 0, 0, 5966, 5967, 5, 95, 0, 0, 5967, 5968, 7, 5, 0, 0, 5968, 5969, 7, 13, 0, 0, 5969, 5970, 7, 13, 0, 0, 5970, 5971, 7, 5, 0, 0, 5971, 5972, 7, 8, 0, 0, 5972, 1224, 1, 0, 0, 0, 5973, 5974, 7, 13, 0, 0, 5974, 5975, 7, 10, 0, 0, 5975, 5976, 7, 23, 0, 0, 5976, 5977, 7, 10, 0, 0, 5977, 5978, 7, 26, 0, 0, 5978, 5979, 7, 24, 0, 0, 5979, 5980, 5, 95, 0, 0, 5980, 5981, 7, 9, 0, 0, 5981, 5982, 7, 24, 0, 0, 5982, 5983, 7, 6, 0, 0, 5983, 5984, 7, 17, 0, 0, 5984, 5985, 7, 16, 0, 0, 5985, 5986, 5, 95, 0, 0, 5986, 5987, 7, 16, 0, 0, 5987, 5988, 7, 19, 0, 0, 5988, 5989, 5, 95, 0, 0, 5989, 5990, 7, 16, 0, 0, 5990, 5991, 7, 5, 0, 0, 5991, 5992, 7, 18, 0, 0, 5992, 5993, 7, 6, 0, 0, 5993, 5994, 7, 10, 0, 0, 5994, 1226, 1, 0, 0, 0, 5995, 5996, 7, 13, 0, 0, 5996, 5997, 7, 10, 0, 0, 5997, 5998, 7, 23, 0, 0, 5998, 5999, 7, 10, 0, 0, 5999, 6000, 7, 26, 0, 0, 6000, 6001, 7, 24, 0, 0, 6001, 6002, 5, 95, 0, 0, 6002, 6003, 7, 9, 0, 0, 6003, 6004, 7, 22, 0, 0, 6004, 6005, 7, 18, 0, 0, 6005, 6006, 7, 9, 0, 0, 6006, 6007, 7, 16, 0, 0, 6007, 6008, 7, 13, 0, 0, 6008, 1228, 1, 0, 0, 0, 6009, 6010, 7, 13, 0, 0, 6010, 6011, 7, 10, 0, 0, 6011, 6012, 7, 24, 0, 0, 6012, 6013, 7, 10, 0, 0, 6013, 6014, 7, 5, 0, 0, 6014, 6015, 7, 16, 0, 0, 6015, 1230, 1, 0, 0, 0, 6016, 6017, 7, 13, 0, 0, 6017, 6018, 7, 24, 0, 0, 6018, 6019, 7, 5, 0, 0, 6019, 6020, 7, 12, 0, 0, 6020, 1232, 1, 0, 0, 0, 6021, 6022, 7, 13, 0, 0, 6022, 6023, 7, 16, 0, 0, 6023, 6024, 7, 13, 0, 0, 6024, 6025, 7, 17, 0, 0, 6025, 6026, 7, 15, 0, 0, 6026, 1234, 1, 0, 0, 0, 6027, 6028, 7, 9, 0, 0, 6028, 6029, 7, 24, 0, 0, 6029, 6030, 7, 6, 0, 0, 6030, 6031, 7, 17, 0, 0, 6031, 6032, 7, 16, 0, 0, 6032, 6033, 5, 95, 0, 0, 6033, 6034, 7, 24, 0, 0, 6034, 6035, 7, 5, 0, 0, 6035, 6036, 7, 13, 0, 0, 6036, 6037, 7, 16, 0, 0, 6037, 1236, 1, 0, 0, 0, 6038, 6039, 7, 9, 0, 0, 6039, 6040, 7, 16, 0, 0, 6040, 6041, 7, 5, 0, 0, 6041, 6042, 7, 13, 0, 0, 6042, 6043, 7, 16, 0, 0, 6043, 6044, 7, 9, 0, 0, 6044, 6045, 5, 95, 0, 0, 6045, 6046, 7, 28, 0, 0, 6046, 6047, 7, 17, 0, 0, 6047, 6048, 7, 16, 0, 0, 6048, 6049, 7, 20, 0, 0, 6049, 1238, 1, 0, 0, 0, 6050, 6051, 7, 9, 0, 0, 6051, 6052, 7, 16, 0, 0, 6052, 6053, 7, 13, 0, 0, 6053, 6054, 7, 17, 0, 0, 6054, 6055, 7, 7, 0, 0, 6055, 6056, 7, 23, 0, 0, 6056, 6057, 5, 95, 0, 0, 6057, 6058, 7, 16, 0, 0, 6058, 6059, 7, 19, 0, 0, 6059, 6060, 5, 95, 0, 0, 6060, 6061, 7, 5, 0, 0, 6061, 6062, 7, 13, 0, 0, 6062, 6063, 7, 13, 0, 0, 6063, 6064, 7, 5, 0, 0, 6064, 6065, 7, 8, 0, 0, 6065, 1240, 1, 0, 0, 0, 6066, 6067, 7, 9, 0, 0, 6067, 6068, 7, 16, 0, 0, 6068, 6069, 7, 13, 0, 0, 6069, 6070, 7, 17, 0, 0, 6070, 6071, 7, 7, 0, 0, 6071, 6072, 7, 23, 0, 0, 6072, 6073, 5, 95, 0, 0, 6073, 6074, 7, 16, 0, 0, 6074, 6075, 7, 19, 0, 0, 6075, 6076, 5, 95, 0, 0, 6076, 6077, 7, 16, 0, 0, 6077, 6078, 7, 5, 0, 0, 6078, 6079, 7, 18, 0, 0, 6079, 6080, 7, 6, 0, 0, 6080, 6081, 7, 10, 0, 0, 6081, 1242, 1, 0, 0, 0, 6082, 6083, 7, 9, 0, 0, 6083, 6084, 7, 16, 0, 0, 6084, 6085, 7, 13, 0, 0, 6085, 6086, 7, 24, 0, 0, 6086, 6087, 7, 19, 0, 0, 6087, 6088, 7, 9, 0, 0, 6088, 1244, 1, 0, 0, 0, 6089, 6090, 7, 9, 0, 0, 6090, 6091, 7, 22, 0, 0, 6091, 6092, 7, 18, 0, 0, 6092, 6093, 7, 9, 0, 0, 6093, 6094, 7, 16, 0, 0, 6094, 6095, 7, 13, 0, 0, 6095, 1246, 1, 0, 0, 0, 6096, 6097, 7, 16, 0, 0, 6097, 6098, 7, 19, 0, 0, 6098, 6099, 5, 95, 0, 0, 6099, 6100, 7, 5, 0, 0, 6100, 6101, 7, 9, 0, 0, 6101, 6102, 7, 14, 0, 0, 6102, 6103, 7, 17, 0, 0, 6103, 6104, 7, 17, 0, 0, 6104, 1248, 1, 0, 0, 0, 6105, 6106, 7, 16, 0, 0, 6106, 6107, 7, 19, 0, 0, 6107, 6108, 5, 95, 0, 0, 6108, 6109, 7, 20, 0, 0, 6109, 6110, 7, 10, 0, 0, 6110, 6111, 7, 26, 0, 0, 6111, 1250, 1, 0, 0, 0, 6112, 6113, 7, 16, 0, 0, 6113, 6114, 7, 13, 0, 0, 6114, 6115, 7, 5, 0, 0, 6115, 6116, 7, 7, 0, 0, 6116, 6117, 7, 9, 0, 0, 6117, 6118, 7, 6, 0, 0, 6118, 6119, 7, 5, 0, 0, 6119, 6120, 7, 16, 0, 0, 6120, 6121, 7, 10, 0, 0, 6121, 1252, 1, 0, 0, 0, 6122, 6123, 7, 22, 0, 0, 6123, 6124, 7, 7, 0, 0, 6124, 6125, 7, 17, 0, 0, 6125, 6126, 7, 9, 0, 0, 6126, 6127, 7, 16, 0, 0, 6127, 6128, 7, 13, 0, 0, 6128, 1254, 1, 0, 0, 0, 6129, 6130, 7, 5, 0, 0, 6130, 6131, 7, 23, 0, 0, 6131, 6132, 7, 10, 0, 0, 6132, 1256, 1, 0, 0, 0, 6133, 6134, 7, 14, 0, 0, 6134, 6135, 7, 6, 0, 0, 6135, 6136, 7, 19, 0, 0, 6136, 6137, 7, 14, 0, 0, 6137, 6138, 7, 21, 0, 0, 6138, 6139, 5, 95, 0, 0, 6139, 6140, 7, 16, 0, 0, 6140, 6141, 7, 17, 0, 0, 6141, 6142, 7, 15, 0, 0, 6142, 6143, 7, 10, 0, 0, 6143, 6144, 7, 9, 0, 0, 6144, 6145, 7, 16, 0, 0, 6145, 6146, 7, 5, 0, 0, 6146, 6147, 7, 15, 0, 0, 6147, 6148, 7, 24, 0, 0, 6148, 1258, 1, 0, 0, 0, 6149, 6150, 7, 12, 0, 0, 6150, 6151, 7, 5, 0, 0, 6151, 6152, 7, 16, 0, 0, 6152, 6153, 7, 10, 0, 0, 6153, 6154, 5, 95, 0, 0, 6154, 6155, 7, 18, 0, 0, 6155, 6156, 7, 17, 0, 0, 6156, 6157, 7, 7, 0, 0, 6157, 1260, 1, 0, 0, 0, 6158, 6159, 7, 12, 0, 0, 6159, 6160, 7, 5, 0, 0, 6160, 6161, 7, 16, 0, 0, 6161, 6162, 7, 10, 0, 0, 6162, 6163, 5, 95, 0, 0, 6163, 6164, 7, 24, 0, 0, 6164, 6165, 7, 5, 0, 0, 6165, 6166, 7, 13, 0, 0, 6166, 6167, 7, 16, 0, 0, 6167, 1262, 1, 0, 0, 0, 6168, 6169, 7, 12, 0, 0, 6169, 6170, 7, 5, 0, 0, 6170, 6171, 7, 16, 0, 0, 6171, 6172, 7, 10, 0, 0, 6172, 6173, 5, 95, 0, 0, 6173, 6174, 7, 16, 0, 0, 6174, 6175, 7, 13, 0, 0, 6175, 6176, 7, 22, 0, 0, 6176, 6177, 7, 7, 0, 0, 6177, 6178, 7, 14, 0, 0, 6178, 1264, 1, 0, 0, 0, 6179, 6180, 7, 17, 0, 0, 6180, 6181, 7, 9, 0, 0, 6181, 6182, 7, 25, 0, 0, 6182, 6183, 7, 17, 0, 0, 6183, 6184, 7, 7, 0, 0, 6184, 6185, 7, 17, 0, 0, 6185, 6186, 7, 16, 0, 0, 6186, 6187, 7, 10, 0, 0, 6187, 1266, 1, 0, 0, 0, 6188, 6189, 7, 30, 0, 0, 6189, 6190, 7, 22, 0, 0, 6190, 6191, 7, 9, 0, 0, 6191, 6192, 7, 16, 0, 0, 6192, 6193, 7, 17, 0, 0, 6193, 6194, 7, 25, 0, 0, 6194, 6195, 7, 8, 0, 0, 6195, 6196, 5, 95, 0, 0, 6196, 6197, 7, 12, 0, 0, 6197, 6198, 7, 5, 0, 0, 6198, 6199, 7, 8, 0, 0, 6199, 6200, 7, 9, 0, 0, 6200, 1268, 1, 0, 0, 0, 6201, 6202, 7, 30, 0, 0, 6202, 6203, 7, 22, 0, 0, 6203, 6204, 7, 9, 0, 0, 6204, 6205, 7, 16, 0, 0, 6205, 6206, 7, 17, 0, 0, 6206, 6207, 7, 25, 0, 0, 6207, 6208, 7, 8, 0, 0, 6208, 6209, 5, 95, 0, 0, 6209, 6210, 7, 20, 0, 0, 6210, 6211, 7, 19, 0, 0, 6211, 6212, 7, 22, 0, 0, 6212, 6213, 7, 13, 0, 0, 6213, 6214, 7, 9, 0, 0, 6214, 1270, 1, 0, 0, 0, 6215, 6216, 7, 30, 0, 0, 6216, 6217, 7, 22, 0, 0, 6217, 6218, 7, 9, 0, 0, 6218, 6219, 7, 16, 0, 0, 6219, 6220, 7, 17, 0, 0, 6220, 6221, 7, 25, 0, 0, 6221, 6222, 7, 8, 0, 0, 6222, 6223, 5, 95, 0, 0, 6223, 6224, 7, 17, 0, 0, 6224, 6225, 7, 7, 0, 0, 6225, 6226, 7, 16, 0, 0, 6226, 6227, 7, 10, 0, 0, 6227, 6228, 7, 13, 0, 0, 6228, 6229, 7, 27, 0, 0, 6229, 6230, 7, 5, 0, 0, 6230, 6231, 7, 6, 0, 0, 6231, 1272, 1, 0, 0, 0, 6232, 6233, 7, 15, 0, 0, 6233, 6234, 7, 5, 0, 0, 6234, 6235, 7, 21, 0, 0, 6235, 6236, 7, 10, 0, 0, 6236, 6237, 5, 95, 0, 0, 6237, 6238, 7, 12, 0, 0, 6238, 6239, 7, 5, 0, 0, 6239, 6240, 7, 16, 0, 0, 6240, 6241, 7, 10, 0, 0, 6241, 1274, 1, 0, 0, 0, 6242, 6243, 7, 15, 0, 0, 6243, 6244, 7, 5, 0, 0, 6244, 6245, 7, 21, 0, 0, 6245, 6246, 7, 10, 0, 0, 6246, 6247, 5, 95, 0, 0, 6247, 6248, 7, 17, 0, 0, 6248, 6249, 7, 7, 0, 0, 6249, 6250, 7, 16, 0, 0, 6250, 6251, 7, 10, 0, 0, 6251, 6252, 7, 13, 0, 0, 6252, 6253, 7, 27, 0, 0, 6253, 6254, 7, 5, 0, 0, 6254, 6255, 7, 6, 0, 0, 6255, 1276, 1, 0, 0, 0, 6256, 6257, 7, 15, 0, 0, 6257, 6258, 7, 5, 0, 0, 6258, 6259, 7, 21, 0, 0, 6259, 6260, 7, 10, 0, 0, 6260, 6261, 5, 95, 0, 0, 6261, 6262, 7, 16, 0, 0, 6262, 6263, 7, 17, 0, 0, 6263, 6264, 7, 15, 0, 0, 6264, 6265, 7, 10, 0, 0, 6265, 1278, 1, 0, 0, 0, 6266, 6267, 7, 15, 0, 0, 6267, 6268, 7, 5, 0, 0, 6268, 6269, 7, 21, 0, 0, 6269, 6270, 7, 10, 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, 1280, 1, 0, 0, 0, 6281, 6282, 7, 15, 0, 0, 6282, 6283, 7, 5, 0, 0, 6283, 6284, 7, 21, 0, 0, 6284, 6285, 7, 10, 0, 0, 6285, 6286, 5, 95, 0, 0, 6286, 6287, 7, 16, 0, 0, 6287, 6288, 7, 17, 0, 0, 6288, 6289, 7, 15, 0, 0, 6289, 6290, 7, 10, 0, 0, 6290, 6291, 7, 9, 0, 0, 6291, 6292, 7, 16, 0, 0, 6292, 6293, 7, 5, 0, 0, 6293, 6294, 7, 15, 0, 0, 6294, 6295, 7, 24, 0, 0, 6295, 6296, 7, 16, 0, 0, 6296, 6297, 7, 11, 0, 0, 6297, 1282, 1, 0, 0, 0, 6298, 6299, 7, 7, 0, 0, 6299, 6300, 7, 19, 0, 0, 6300, 6301, 7, 28, 0, 0, 6301, 1284, 1, 0, 0, 0, 6302, 6303, 7, 9, 0, 0, 6303, 6304, 7, 16, 0, 0, 6304, 6305, 7, 5, 0, 0, 6305, 6306, 7, 16, 0, 0, 6306, 6307, 7, 10, 0, 0, 6307, 6308, 7, 15, 0, 0, 6308, 6309, 7, 10, 0, 0, 6309, 6310, 7, 7, 0, 0, 6310, 6311, 7, 16, 0, 0, 6311, 6312, 5, 95, 0, 0, 6312, 6313, 7, 16, 0, 0, 6313, 6314, 7, 17, 0, 0, 6314, 6315, 7, 15, 0, 0, 6315, 6316, 7, 10, 0, 0, 6316, 6317, 7, 9, 0, 0, 6317, 6318, 7, 16, 0, 0, 6318, 6319, 7, 5, 0, 0, 6319, 6320, 7, 15, 0, 0, 6320, 6321, 7, 24, 0, 0, 6321, 1286, 1, 0, 0, 0, 6322, 6323, 7, 16, 0, 0, 6323, 6324, 7, 17, 0, 0, 6324, 6325, 7, 15, 0, 0, 6325, 6326, 7, 10, 0, 0, 6326, 6327, 7, 19, 0, 0, 6327, 6328, 7, 25, 0, 0, 6328, 6329, 7, 12, 0, 0, 6329, 6330, 7, 5, 0, 0, 6330, 6331, 7, 8, 0, 0, 6331, 1288, 1, 0, 0, 0, 6332, 6333, 7, 16, 0, 0, 6333, 6334, 7, 13, 0, 0, 6334, 6335, 7, 5, 0, 0, 6335, 6336, 7, 7, 0, 0, 6336, 6337, 7, 9, 0, 0, 6337, 6338, 7, 5, 0, 0, 6338, 6339, 7, 14, 0, 0, 6339, 6340, 7, 16, 0, 0, 6340, 6341, 7, 17, 0, 0, 6341, 6342, 7, 19, 0, 0, 6342, 6343, 7, 7, 0, 0, 6343, 6344, 5, 95, 0, 0, 6344, 6345, 7, 16, 0, 0, 6345, 6346, 7, 17, 0, 0, 6346, 6347, 7, 15, 0, 0, 6347, 6348, 7, 10, 0, 0, 6348, 6349, 7, 9, 0, 0, 6349, 6350, 7, 16, 0, 0, 6350, 6351, 7, 5, 0, 0, 6351, 6352, 7, 15, 0, 0, 6352, 6353, 7, 24, 0, 0, 6353, 1290, 1, 0, 0, 0, 6354, 6355, 7, 16, 0, 0, 6355, 6356, 7, 19, 0, 0, 6356, 6357, 5, 95, 0, 0, 6357, 6358, 7, 16, 0, 0, 6358, 6359, 7, 17, 0, 0, 6359, 6360, 7, 15, 0, 0, 6360, 6361, 7, 10, 0, 0, 6361, 6362, 7, 9, 0, 0, 6362, 6363, 7, 16, 0, 0, 6363, 6364, 7, 5, 0, 0, 6364, 6365, 7, 15, 0, 0, 6365, 6366, 7, 24, 0, 0, 6366, 1292, 1, 0, 0, 0, 6367, 6368, 7, 16, 0, 0, 6368, 6369, 7, 19, 0, 0, 6369, 6370, 5, 95, 0, 0, 6370, 6371, 7, 14, 0, 0, 6371, 6372, 7, 20, 0, 0, 6372, 6373, 7, 5, 0, 0, 6373, 6374, 7, 13, 0, 0, 6374, 1294, 1, 0, 0, 0, 6375, 6376, 7, 16, 0, 0, 6376, 6377, 7, 19, 0, 0, 6377, 6378, 5, 95, 0, 0, 6378, 6379, 7, 12, 0, 0, 6379, 6380, 7, 5, 0, 0, 6380, 6381, 7, 16, 0, 0, 6381, 6382, 7, 10, 0, 0, 6382, 1296, 1, 0, 0, 0, 6383, 6384, 7, 16, 0, 0, 6384, 6385, 7, 19, 0, 0, 6385, 6386, 5, 95, 0, 0, 6386, 6387, 7, 7, 0, 0, 6387, 6388, 7, 22, 0, 0, 6388, 6389, 7, 15, 0, 0, 6389, 6390, 7, 18, 0, 0, 6390, 6391, 7, 10, 0, 0, 6391, 6392, 7, 13, 0, 0, 6392, 1298, 1, 0, 0, 0, 6393, 6397, 3, 1301, 648, 0, 6394, 6396, 3, 1303, 649, 0, 6395, 6394, 1, 0, 0, 0, 6396, 6399, 1, 0, 0, 0, 6397, 6395, 1, 0, 0, 0, 6397, 6398, 1, 0, 0, 0, 6398, 1300, 1, 0, 0, 0, 6399, 6397, 1, 0, 0, 0, 6400, 6407, 7, 31, 0, 0, 6401, 6402, 7, 32, 0, 0, 6402, 6407, 4, 648, 6, 0, 6403, 6404, 7, 33, 0, 0, 6404, 6405, 7, 34, 0, 0, 6405, 6407, 4, 648, 7, 0, 6406, 6400, 1, 0, 0, 0, 6406, 6401, 1, 0, 0, 0, 6406, 6403, 1, 0, 0, 0, 6407, 1302, 1, 0, 0, 0, 6408, 6411, 3, 1305, 650, 0, 6409, 6411, 5, 36, 0, 0, 6410, 6408, 1, 0, 0, 0, 6410, 6409, 1, 0, 0, 0, 6411, 1304, 1, 0, 0, 0, 6412, 6415, 3, 1301, 648, 0, 6413, 6415, 7, 0, 0, 0, 6414, 6412, 1, 0, 0, 0, 6414, 6413, 1, 0, 0, 0, 6415, 1306, 1, 0, 0, 0, 6416, 6417, 3, 1309, 652, 0, 6417, 6418, 5, 34, 0, 0, 6418, 1308, 1, 0, 0, 0, 6419, 6425, 5, 34, 0, 0, 6420, 6421, 5, 34, 0, 0, 6421, 6424, 5, 34, 0, 0, 6422, 6424, 8, 35, 0, 0, 6423, 6420, 1, 0, 0, 0, 6423, 6422, 1, 0, 0, 0, 6424, 6427, 1, 0, 0, 0, 6425, 6423, 1, 0, 0, 0, 6425, 6426, 1, 0, 0, 0, 6426, 1310, 1, 0, 0, 0, 6427, 6425, 1, 0, 0, 0, 6428, 6429, 3, 1313, 654, 0, 6429, 6430, 5, 34, 0, 0, 6430, 1312, 1, 0, 0, 0, 6431, 6437, 5, 34, 0, 0, 6432, 6433, 5, 34, 0, 0, 6433, 6436, 5, 34, 0, 0, 6434, 6436, 8, 36, 0, 0, 6435, 6432, 1, 0, 0, 0, 6435, 6434, 1, 0, 0, 0, 6436, 6439, 1, 0, 0, 0, 6437, 6435, 1, 0, 0, 0, 6437, 6438, 1, 0, 0, 0, 6438, 1314, 1, 0, 0, 0, 6439, 6437, 1, 0, 0, 0, 6440, 6441, 7, 22, 0, 0, 6441, 6442, 5, 38, 0, 0, 6442, 6443, 3, 1307, 651, 0, 6443, 1316, 1, 0, 0, 0, 6444, 6445, 7, 22, 0, 0, 6445, 6446, 5, 38, 0, 0, 6446, 6447, 3, 1309, 652, 0, 6447, 1318, 1, 0, 0, 0, 6448, 6449, 7, 22, 0, 0, 6449, 6450, 5, 38, 0, 0, 6450, 6451, 3, 1311, 653, 0, 6451, 1320, 1, 0, 0, 0, 6452, 6453, 7, 22, 0, 0, 6453, 6454, 5, 38, 0, 0, 6454, 6455, 3, 1313, 654, 0, 6455, 1322, 1, 0, 0, 0, 6456, 6457, 3, 1325, 660, 0, 6457, 6458, 5, 39, 0, 0, 6458, 1324, 1, 0, 0, 0, 6459, 6465, 5, 39, 0, 0, 6460, 6461, 5, 39, 0, 0, 6461, 6464, 5, 39, 0, 0, 6462, 6464, 8, 37, 0, 0, 6463, 6460, 1, 0, 0, 0, 6463, 6462, 1, 0, 0, 0, 6464, 6467, 1, 0, 0, 0, 6465, 6463, 1, 0, 0, 0, 6465, 6466, 1, 0, 0, 0, 6466, 1326, 1, 0, 0, 0, 6467, 6465, 1, 0, 0, 0, 6468, 6469, 7, 10, 0, 0, 6469, 6470, 5, 39, 0, 0, 6470, 6471, 1, 0, 0, 0, 6471, 6472, 6, 661, 2, 0, 6472, 6473, 6, 661, 3, 0, 6473, 1328, 1, 0, 0, 0, 6474, 6475, 3, 1331, 663, 0, 6475, 6476, 5, 39, 0, 0, 6476, 1330, 1, 0, 0, 0, 6477, 6478, 7, 22, 0, 0, 6478, 6479, 5, 38, 0, 0, 6479, 6480, 3, 1325, 660, 0, 6480, 1332, 1, 0, 0, 0, 6481, 6483, 5, 36, 0, 0, 6482, 6484, 3, 1335, 665, 0, 6483, 6482, 1, 0, 0, 0, 6483, 6484, 1, 0, 0, 0, 6484, 6485, 1, 0, 0, 0, 6485, 6486, 5, 36, 0, 0, 6486, 6487, 6, 664, 4, 0, 6487, 6488, 1, 0, 0, 0, 6488, 6489, 6, 664, 5, 0, 6489, 1334, 1, 0, 0, 0, 6490, 6494, 3, 1301, 648, 0, 6491, 6493, 3, 1305, 650, 0, 6492, 6491, 1, 0, 0, 0, 6493, 6496, 1, 0, 0, 0, 6494, 6492, 1, 0, 0, 0, 6494, 6495, 1, 0, 0, 0, 6495, 1336, 1, 0, 0, 0, 6496, 6494, 1, 0, 0, 0, 6497, 6498, 3, 1339, 667, 0, 6498, 6499, 5, 39, 0, 0, 6499, 1338, 1, 0, 0, 0, 6500, 6501, 7, 18, 0, 0, 6501, 6505, 5, 39, 0, 0, 6502, 6504, 7, 38, 0, 0, 6503, 6502, 1, 0, 0, 0, 6504, 6507, 1, 0, 0, 0, 6505, 6503, 1, 0, 0, 0, 6505, 6506, 1, 0, 0, 0, 6506, 1340, 1, 0, 0, 0, 6507, 6505, 1, 0, 0, 0, 6508, 6509, 3, 1343, 669, 0, 6509, 6510, 5, 39, 0, 0, 6510, 1342, 1, 0, 0, 0, 6511, 6512, 7, 18, 0, 0, 6512, 6513, 3, 1325, 660, 0, 6513, 1344, 1, 0, 0, 0, 6514, 6515, 3, 1347, 671, 0, 6515, 6516, 5, 39, 0, 0, 6516, 1346, 1, 0, 0, 0, 6517, 6518, 7, 26, 0, 0, 6518, 6522, 5, 39, 0, 0, 6519, 6521, 7, 39, 0, 0, 6520, 6519, 1, 0, 0, 0, 6521, 6524, 1, 0, 0, 0, 6522, 6520, 1, 0, 0, 0, 6522, 6523, 1, 0, 0, 0, 6523, 1348, 1, 0, 0, 0, 6524, 6522, 1, 0, 0, 0, 6525, 6526, 3, 1351, 673, 0, 6526, 6527, 5, 39, 0, 0, 6527, 1350, 1, 0, 0, 0, 6528, 6529, 7, 26, 0, 0, 6529, 6530, 3, 1325, 660, 0, 6530, 1352, 1, 0, 0, 0, 6531, 6532, 3, 1359, 677, 0, 6532, 1354, 1, 0, 0, 0, 6533, 6534, 3, 1359, 677, 0, 6534, 6535, 5, 46, 0, 0, 6535, 6536, 5, 46, 0, 0, 6536, 6537, 1, 0, 0, 0, 6537, 6538, 6, 675, 6, 0, 6538, 1356, 1, 0, 0, 0, 6539, 6540, 3, 1359, 677, 0, 6540, 6542, 5, 46, 0, 0, 6541, 6543, 3, 1359, 677, 0, 6542, 6541, 1, 0, 0, 0, 6542, 6543, 1, 0, 0, 0, 6543, 6549, 1, 0, 0, 0, 6544, 6546, 7, 10, 0, 0, 6545, 6547, 7, 1, 0, 0, 6546, 6545, 1, 0, 0, 0, 6546, 6547, 1, 0, 0, 0, 6547, 6548, 1, 0, 0, 0, 6548, 6550, 3, 1359, 677, 0, 6549, 6544, 1, 0, 0, 0, 6549, 6550, 1, 0, 0, 0, 6550, 6568, 1, 0, 0, 0, 6551, 6552, 5, 46, 0, 0, 6552, 6558, 3, 1359, 677, 0, 6553, 6555, 7, 10, 0, 0, 6554, 6556, 7, 1, 0, 0, 6555, 6554, 1, 0, 0, 0, 6555, 6556, 1, 0, 0, 0, 6556, 6557, 1, 0, 0, 0, 6557, 6559, 3, 1359, 677, 0, 6558, 6553, 1, 0, 0, 0, 6558, 6559, 1, 0, 0, 0, 6559, 6568, 1, 0, 0, 0, 6560, 6561, 3, 1359, 677, 0, 6561, 6563, 7, 10, 0, 0, 6562, 6564, 7, 1, 0, 0, 6563, 6562, 1, 0, 0, 0, 6563, 6564, 1, 0, 0, 0, 6564, 6565, 1, 0, 0, 0, 6565, 6566, 3, 1359, 677, 0, 6566, 6568, 1, 0, 0, 0, 6567, 6539, 1, 0, 0, 0, 6567, 6551, 1, 0, 0, 0, 6567, 6560, 1, 0, 0, 0, 6568, 1358, 1, 0, 0, 0, 6569, 6571, 7, 0, 0, 0, 6570, 6569, 1, 0, 0, 0, 6571, 6572, 1, 0, 0, 0, 6572, 6570, 1, 0, 0, 0, 6572, 6573, 1, 0, 0, 0, 6573, 1360, 1, 0, 0, 0, 6574, 6575, 5, 58, 0, 0, 6575, 6579, 7, 40, 0, 0, 6576, 6578, 7, 41, 0, 0, 6577, 6576, 1, 0, 0, 0, 6578, 6581, 1, 0, 0, 0, 6579, 6577, 1, 0, 0, 0, 6579, 6580, 1, 0, 0, 0, 6580, 1362, 1, 0, 0, 0, 6581, 6579, 1, 0, 0, 0, 6582, 6583, 5, 58, 0, 0, 6583, 6584, 5, 34, 0, 0, 6584, 6592, 1, 0, 0, 0, 6585, 6586, 5, 92, 0, 0, 6586, 6591, 9, 0, 0, 0, 6587, 6588, 5, 34, 0, 0, 6588, 6591, 5, 34, 0, 0, 6589, 6591, 8, 42, 0, 0, 6590, 6585, 1, 0, 0, 0, 6590, 6587, 1, 0, 0, 0, 6590, 6589, 1, 0, 0, 0, 6591, 6594, 1, 0, 0, 0, 6592, 6590, 1, 0, 0, 0, 6592, 6593, 1, 0, 0, 0, 6593, 6595, 1, 0, 0, 0, 6594, 6592, 1, 0, 0, 0, 6595, 6596, 5, 34, 0, 0, 6596, 1364, 1, 0, 0, 0, 6597, 6599, 7, 43, 0, 0, 6598, 6597, 1, 0, 0, 0, 6599, 6600, 1, 0, 0, 0, 6600, 6598, 1, 0, 0, 0, 6600, 6601, 1, 0, 0, 0, 6601, 6602, 1, 0, 0, 0, 6602, 6603, 6, 680, 7, 0, 6603, 1366, 1, 0, 0, 0, 6604, 6606, 5, 13, 0, 0, 6605, 6607, 5, 10, 0, 0, 6606, 6605, 1, 0, 0, 0, 6606, 6607, 1, 0, 0, 0, 6607, 6610, 1, 0, 0, 0, 6608, 6610, 5, 10, 0, 0, 6609, 6604, 1, 0, 0, 0, 6609, 6608, 1, 0, 0, 0, 6610, 6611, 1, 0, 0, 0, 6611, 6612, 6, 681, 7, 0, 6612, 1368, 1, 0, 0, 0, 6613, 6614, 5, 45, 0, 0, 6614, 6615, 5, 45, 0, 0, 6615, 6619, 1, 0, 0, 0, 6616, 6618, 8, 44, 0, 0, 6617, 6616, 1, 0, 0, 0, 6618, 6621, 1, 0, 0, 0, 6619, 6617, 1, 0, 0, 0, 6619, 6620, 1, 0, 0, 0, 6620, 6622, 1, 0, 0, 0, 6621, 6619, 1, 0, 0, 0, 6622, 6623, 6, 682, 7, 0, 6623, 1370, 1, 0, 0, 0, 6624, 6625, 5, 47, 0, 0, 6625, 6626, 5, 42, 0, 0, 6626, 6649, 1, 0, 0, 0, 6627, 6629, 5, 47, 0, 0, 6628, 6627, 1, 0, 0, 0, 6629, 6632, 1, 0, 0, 0, 6630, 6628, 1, 0, 0, 0, 6630, 6631, 1, 0, 0, 0, 6631, 6633, 1, 0, 0, 0, 6632, 6630, 1, 0, 0, 0, 6633, 6648, 3, 1371, 683, 0, 6634, 6648, 8, 45, 0, 0, 6635, 6637, 5, 47, 0, 0, 6636, 6635, 1, 0, 0, 0, 6637, 6638, 1, 0, 0, 0, 6638, 6636, 1, 0, 0, 0, 6638, 6639, 1, 0, 0, 0, 6639, 6640, 1, 0, 0, 0, 6640, 6648, 8, 45, 0, 0, 6641, 6643, 5, 42, 0, 0, 6642, 6641, 1, 0, 0, 0, 6643, 6644, 1, 0, 0, 0, 6644, 6642, 1, 0, 0, 0, 6644, 6645, 1, 0, 0, 0, 6645, 6646, 1, 0, 0, 0, 6646, 6648, 8, 45, 0, 0, 6647, 6630, 1, 0, 0, 0, 6647, 6634, 1, 0, 0, 0, 6647, 6636, 1, 0, 0, 0, 6647, 6642, 1, 0, 0, 0, 6648, 6651, 1, 0, 0, 0, 6649, 6647, 1, 0, 0, 0, 6649, 6650, 1, 0, 0, 0, 6650, 6655, 1, 0, 0, 0, 6651, 6649, 1, 0, 0, 0, 6652, 6654, 5, 42, 0, 0, 6653, 6652, 1, 0, 0, 0, 6654, 6657, 1, 0, 0, 0, 6655, 6653, 1, 0, 0, 0, 6655, 6656, 1, 0, 0, 0, 6656, 6658, 1, 0, 0, 0, 6657, 6655, 1, 0, 0, 0, 6658, 6659, 5, 42, 0, 0, 6659, 6660, 5, 47, 0, 0, 6660, 6661, 1, 0, 0, 0, 6661, 6662, 6, 683, 7, 0, 6662, 1372, 1, 0, 0, 0, 6663, 6664, 5, 47, 0, 0, 6664, 6665, 5, 42, 0, 0, 6665, 6690, 1, 0, 0, 0, 6666, 6668, 5, 47, 0, 0, 6667, 6666, 1, 0, 0, 0, 6668, 6671, 1, 0, 0, 0, 6669, 6667, 1, 0, 0, 0, 6669, 6670, 1, 0, 0, 0, 6670, 6672, 1, 0, 0, 0, 6671, 6669, 1, 0, 0, 0, 6672, 6689, 3, 1371, 683, 0, 6673, 6689, 8, 45, 0, 0, 6674, 6676, 5, 47, 0, 0, 6675, 6674, 1, 0, 0, 0, 6676, 6677, 1, 0, 0, 0, 6677, 6675, 1, 0, 0, 0, 6677, 6678, 1, 0, 0, 0, 6678, 6679, 1, 0, 0, 0, 6679, 6687, 8, 45, 0, 0, 6680, 6682, 5, 42, 0, 0, 6681, 6680, 1, 0, 0, 0, 6682, 6683, 1, 0, 0, 0, 6683, 6681, 1, 0, 0, 0, 6683, 6684, 1, 0, 0, 0, 6684, 6685, 1, 0, 0, 0, 6685, 6687, 8, 45, 0, 0, 6686, 6675, 1, 0, 0, 0, 6686, 6681, 1, 0, 0, 0, 6687, 6689, 1, 0, 0, 0, 6688, 6669, 1, 0, 0, 0, 6688, 6673, 1, 0, 0, 0, 6688, 6686, 1, 0, 0, 0, 6689, 6692, 1, 0, 0, 0, 6690, 6688, 1, 0, 0, 0, 6690, 6691, 1, 0, 0, 0, 6691, 6710, 1, 0, 0, 0, 6692, 6690, 1, 0, 0, 0, 6693, 6695, 5, 47, 0, 0, 6694, 6693, 1, 0, 0, 0, 6695, 6696, 1, 0, 0, 0, 6696, 6694, 1, 0, 0, 0, 6696, 6697, 1, 0, 0, 0, 6697, 6711, 1, 0, 0, 0, 6698, 6700, 5, 42, 0, 0, 6699, 6698, 1, 0, 0, 0, 6700, 6701, 1, 0, 0, 0, 6701, 6699, 1, 0, 0, 0, 6701, 6702, 1, 0, 0, 0, 6702, 6711, 1, 0, 0, 0, 6703, 6705, 5, 47, 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, 6709, 1, 0, 0, 0, 6708, 6706, 1, 0, 0, 0, 6709, 6711, 3, 1373, 684, 0, 6710, 6694, 1, 0, 0, 0, 6710, 6699, 1, 0, 0, 0, 6710, 6706, 1, 0, 0, 0, 6710, 6711, 1, 0, 0, 0, 6711, 6712, 1, 0, 0, 0, 6712, 6713, 6, 684, 8, 0, 6713, 1374, 1, 0, 0, 0, 6714, 6726, 5, 92, 0, 0, 6715, 6725, 8, 46, 0, 0, 6716, 6720, 5, 34, 0, 0, 6717, 6719, 8, 47, 0, 0, 6718, 6717, 1, 0, 0, 0, 6719, 6722, 1, 0, 0, 0, 6720, 6718, 1, 0, 0, 0, 6720, 6721, 1, 0, 0, 0, 6721, 6723, 1, 0, 0, 0, 6722, 6720, 1, 0, 0, 0, 6723, 6725, 5, 34, 0, 0, 6724, 6715, 1, 0, 0, 0, 6724, 6716, 1, 0, 0, 0, 6725, 6728, 1, 0, 0, 0, 6726, 6724, 1, 0, 0, 0, 6726, 6727, 1, 0, 0, 0, 6727, 6736, 1, 0, 0, 0, 6728, 6726, 1, 0, 0, 0, 6729, 6733, 5, 34, 0, 0, 6730, 6732, 8, 47, 0, 0, 6731, 6730, 1, 0, 0, 0, 6732, 6735, 1, 0, 0, 0, 6733, 6731, 1, 0, 0, 0, 6733, 6734, 1, 0, 0, 0, 6734, 6737, 1, 0, 0, 0, 6735, 6733, 1, 0, 0, 0, 6736, 6729, 1, 0, 0, 0, 6736, 6737, 1, 0, 0, 0, 6737, 1376, 1, 0, 0, 0, 6738, 6739, 5, 92, 0, 0, 6739, 6740, 5, 92, 0, 0, 6740, 1378, 1, 0, 0, 0, 6741, 6742, 9, 0, 0, 0, 6742, 1380, 1, 0, 0, 0, 6743, 6744, 3, 1385, 690, 0, 6744, 6745, 5, 39, 0, 0, 6745, 6746, 1, 0, 0, 0, 6746, 6747, 6, 688, 9, 0, 6747, 1382, 1, 0, 0, 0, 6748, 6750, 3, 1385, 690, 0, 6749, 6751, 5, 92, 0, 0, 6750, 6749, 1, 0, 0, 0, 6750, 6751, 1, 0, 0, 0, 6751, 6752, 1, 0, 0, 0, 6752, 6753, 5, 0, 0, 1, 6753, 1384, 1, 0, 0, 0, 6754, 6755, 5, 39, 0, 0, 6755, 6778, 5, 39, 0, 0, 6756, 6774, 5, 92, 0, 0, 6757, 6758, 5, 120, 0, 0, 6758, 6775, 7, 39, 0, 0, 6759, 6760, 5, 117, 0, 0, 6760, 6761, 7, 39, 0, 0, 6761, 6762, 7, 39, 0, 0, 6762, 6763, 7, 39, 0, 0, 6763, 6775, 7, 39, 0, 0, 6764, 6765, 5, 85, 0, 0, 6765, 6766, 7, 39, 0, 0, 6766, 6767, 7, 39, 0, 0, 6767, 6768, 7, 39, 0, 0, 6768, 6769, 7, 39, 0, 0, 6769, 6770, 7, 39, 0, 0, 6770, 6771, 7, 39, 0, 0, 6771, 6772, 7, 39, 0, 0, 6772, 6775, 7, 39, 0, 0, 6773, 6775, 8, 48, 0, 0, 6774, 6757, 1, 0, 0, 0, 6774, 6759, 1, 0, 0, 0, 6774, 6764, 1, 0, 0, 0, 6774, 6773, 1, 0, 0, 0, 6775, 6778, 1, 0, 0, 0, 6776, 6778, 8, 49, 0, 0, 6777, 6754, 1, 0, 0, 0, 6777, 6756, 1, 0, 0, 0, 6777, 6776, 1, 0, 0, 0, 6778, 6781, 1, 0, 0, 0, 6779, 6777, 1, 0, 0, 0, 6779, 6780, 1, 0, 0, 0, 6780, 1386, 1, 0, 0, 0, 6781, 6779, 1, 0, 0, 0, 6782, 6783, 3, 1391, 693, 0, 6783, 6784, 5, 39, 0, 0, 6784, 6785, 1, 0, 0, 0, 6785, 6786, 6, 691, 9, 0, 6786, 1388, 1, 0, 0, 0, 6787, 6789, 3, 1391, 693, 0, 6788, 6790, 5, 92, 0, 0, 6789, 6788, 1, 0, 0, 0, 6789, 6790, 1, 0, 0, 0, 6790, 6791, 1, 0, 0, 0, 6791, 6792, 5, 0, 0, 1, 6792, 1390, 1, 0, 0, 0, 6793, 6794, 5, 39, 0, 0, 6794, 6799, 5, 39, 0, 0, 6795, 6796, 5, 92, 0, 0, 6796, 6799, 9, 0, 0, 0, 6797, 6799, 8, 49, 0, 0, 6798, 6793, 1, 0, 0, 0, 6798, 6795, 1, 0, 0, 0, 6798, 6797, 1, 0, 0, 0, 6799, 6802, 1, 0, 0, 0, 6800, 6798, 1, 0, 0, 0, 6800, 6801, 1, 0, 0, 0, 6801, 1392, 1, 0, 0, 0, 6802, 6800, 1, 0, 0, 0, 6803, 6804, 3, 1365, 680, 0, 6804, 6805, 1, 0, 0, 0, 6805, 6806, 6, 694, 10, 0, 6806, 6807, 6, 694, 7, 0, 6807, 1394, 1, 0, 0, 0, 6808, 6809, 3, 1367, 681, 0, 6809, 6810, 1, 0, 0, 0, 6810, 6811, 6, 695, 11, 0, 6811, 6812, 6, 695, 7, 0, 6812, 6813, 6, 695, 12, 0, 6813, 1396, 1, 0, 0, 0, 6814, 6815, 6, 696, 13, 0, 6815, 6816, 1, 0, 0, 0, 6816, 6817, 6, 696, 14, 0, 6817, 6818, 6, 696, 15, 0, 6818, 1398, 1, 0, 0, 0, 6819, 6820, 3, 1365, 680, 0, 6820, 6821, 1, 0, 0, 0, 6821, 6822, 6, 697, 10, 0, 6822, 6823, 6, 697, 7, 0, 6823, 1400, 1, 0, 0, 0, 6824, 6825, 3, 1367, 681, 0, 6825, 6826, 1, 0, 0, 0, 6826, 6827, 6, 698, 11, 0, 6827, 6828, 6, 698, 7, 0, 6828, 1402, 1, 0, 0, 0, 6829, 6830, 5, 39, 0, 0, 6830, 6831, 1, 0, 0, 0, 6831, 6832, 6, 699, 2, 0, 6832, 6833, 6, 699, 16, 0, 6833, 1404, 1, 0, 0, 0, 6834, 6835, 6, 700, 17, 0, 6835, 6836, 1, 0, 0, 0, 6836, 6837, 6, 700, 14, 0, 6837, 6838, 6, 700, 15, 0, 6838, 1406, 1, 0, 0, 0, 6839, 6841, 8, 50, 0, 0, 6840, 6839, 1, 0, 0, 0, 6841, 6842, 1, 0, 0, 0, 6842, 6840, 1, 0, 0, 0, 6842, 6843, 1, 0, 0, 0, 6843, 6852, 1, 0, 0, 0, 6844, 6848, 5, 36, 0, 0, 6845, 6847, 8, 50, 0, 0, 6846, 6845, 1, 0, 0, 0, 6847, 6850, 1, 0, 0, 0, 6848, 6846, 1, 0, 0, 0, 6848, 6849, 1, 0, 0, 0, 6849, 6852, 1, 0, 0, 0, 6850, 6848, 1, 0, 0, 0, 6851, 6840, 1, 0, 0, 0, 6851, 6844, 1, 0, 0, 0, 6852, 1408, 1, 0, 0, 0, 6853, 6855, 5, 36, 0, 0, 6854, 6856, 3, 1335, 665, 0, 6855, 6854, 1, 0, 0, 0, 6855, 6856, 1, 0, 0, 0, 6856, 6857, 1, 0, 0, 0, 6857, 6858, 5, 36, 0, 0, 6858, 6859, 1, 0, 0, 0, 6859, 6860, 4, 702, 8, 0, 6860, 6861, 6, 702, 18, 0, 6861, 6862, 1, 0, 0, 0, 6862, 6863, 6, 702, 15, 0, 6863, 1410, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1478, 1484, 1486, 1491, 1495, 1497, 1500, 1509, 1511, 1516, 1521, 1523, 6397, 6406, 6410, 6414, 6423, 6425, 6435, 6437, 6463, 6465, 6483, 6494, 6505, 6522, 6542, 6546, 6549, 6555, 6558, 6563, 6567, 6572, 6579, 6590, 6592, 6600, 6606, 6609, 6619, 6630, 6638, 6644, 6647, 6649, 6655, 6669, 6677, 6683, 6686, 6688, 6690, 6696, 6701, 6706, 6710, 6720, 6724, 6726, 6733, 6736, 6750, 6774, 6777, 6779, 6789, 6798, 6800, 6842, 6848, 6851, 6855, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 664, 1, 5, 4, 0, 1, 675, 2, 0, 1, 0, 1, 684, 3, 2, 2, 0, 7, 671, 0, 7, 672, 0, 2, 3, 0, 1, 696, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 700, 5, 1, 702, 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 25408f96f9..0000000000 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.java +++ /dev/null @@ -1,5297 +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.2 - - -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.2", 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, ZTABLE=93, THEN=94, TO=95, DESCRIBE=96, TOPIC=97, - TOPICS=98, STREAM=99, ZVIEW=100, ZVIEWS=101, TRAILING=102, TRUE_P=103, - UNION=104, UNIQUE=105, USER=106, USING=107, VARIADIC=108, WHEN=109, WHERE=110, - WINDOW=111, WITH=112, AUTHORIZATION=113, BINARY=114, COLLATION=115, CONCURRENTLY=116, - CROSS=117, CURRENT_SCHEMA=118, FREEZE=119, FULL=120, ILIKE=121, INNER_P=122, - IS=123, ISNULL=124, JOIN=125, LEFT=126, LIKE=127, NATURAL=128, NOTNULL=129, - OUTER_P=130, OVER=131, OVERLAPS=132, RIGHT=133, SIMILAR=134, VERBOSE=135, - ABORT_P=136, ABSOLUTE_P=137, ACCESS=138, ACTION=139, ADD_P=140, ADMIN=141, - AFTER=142, AGGREGATE=143, ALSO=144, ALTER=145, ALWAYS=146, ASSERTION=147, - ASSIGNMENT=148, AT=149, ATTRIBUTE=150, BACKWARD=151, BEFORE=152, BEGIN_P=153, - BY=154, CACHE=155, CALLED=156, CASCADE=157, CASCADED=158, CATALOG=159, - CHAIN=160, CHARACTERISTICS=161, CHECKPOINT=162, CLASS=163, CLOSE=164, - CLUSTER=165, COMMENT=166, COMMENTS=167, COMMIT=168, COMMITTED=169, CONFIGURATION=170, - CONNECTION=171, CONSTRAINTS=172, CONTENT_P=173, CONTINUE_P=174, CONVERSION_P=175, - COPY=176, COST=177, CSV=178, CURSOR=179, CYCLE=180, DATA_P=181, DATABASE=182, - DAY_P=183, DEALLOCATE=184, DECLARE=185, DEFAULTS=186, DEFERRED=187, DEFINER=188, - DELETE_P=189, DELIMITER=190, DELIMITERS=191, DICTIONARY=192, DISABLE_P=193, - DISCARD=194, DOCUMENT_P=195, DOMAIN_P=196, DOUBLE_P=197, DROP=198, EACH=199, - ENABLE_P=200, ENCODING=201, ENCRYPTED=202, ENUM_P=203, ESCAPE=204, EVENT=205, - EXCLUDE=206, EXCLUDING=207, EXCLUSIVE=208, EXECUTE=209, EXPLAIN=210, EXTENSION=211, - EXTERNAL=212, FAMILY=213, FIRST_P=214, FOLLOWING=215, FORCE=216, FORWARD=217, - FUNCTION=218, FUNCTIONS=219, GLOBAL=220, GRANTED=221, HANDLER=222, HEADER_P=223, - HOLD=224, HOUR_P=225, IDENTITY_P=226, IF_P=227, IMMEDIATE=228, IMMUTABLE=229, - IMPLICIT_P=230, INCLUDING=231, INCREMENT=232, INDEX=233, INDEXES=234, - INHERIT=235, INHERITS=236, INLINE_P=237, INSENSITIVE=238, INSERT=239, - INSTEAD=240, INVOKER=241, ISOLATION=242, KEY=243, LABEL=244, LANGUAGE=245, - LARGE_P=246, LAST_P=247, LEAKPROOF=248, LEVEL=249, LISTEN=250, LOAD=251, - LOCAL=252, LOCATION=253, LOCK_P=254, MAPPING=255, MATCH=256, MATCHED=257, - MATERIALIZED=258, MAXVALUE=259, MERGE=260, MINUTE_P=261, MINVALUE=262, - MODE=263, MONTH_P=264, MOVE=265, NAME_P=266, NAMES=267, NEXT=268, NO=269, - NOTHING=270, NOTIFY=271, NOWAIT=272, NULLS_P=273, OBJECT_P=274, OF=275, - OFF=276, OIDS=277, OPERATOR=278, OPTION=279, OPTIONS=280, OWNED=281, OWNER=282, - PARSER=283, PARTIAL=284, PARTITION=285, PASSING=286, PASSWORD=287, PLANS=288, - PRECEDING=289, PREPARE=290, PREPARED=291, PRESERVE=292, PRIOR=293, PRIVILEGES=294, - PROCEDURAL=295, PROCEDURE=296, PROGRAM=297, QUOTE=298, RANGE=299, READ=300, - REASSIGN=301, RECHECK=302, RECURSIVE=303, REF=304, REFRESH=305, REINDEX=306, - RELATIVE_P=307, RELEASE=308, RENAME=309, REPEATABLE=310, REPLACE=311, - REPLICA=312, RESET=313, RESTART=314, RESTRICT=315, RETURNS=316, REVOKE=317, - ROLE=318, ROLLBACK=319, ROWS=320, RULE=321, SAVEPOINT=322, SCHEMA=323, - SCROLL=324, SEARCH=325, SECOND_P=326, SECURITY=327, SEQUENCE=328, SEQUENCES=329, - SERIALIZABLE=330, SERVER=331, SESSION=332, SET=333, SHARE=334, SHOW=335, - SIMPLE=336, SNAPSHOT=337, STABLE=338, STANDALONE_P=339, START=340, STATEMENT=341, - STATISTICS=342, STDIN=343, STDOUT=344, STORAGE=345, STRICT_P=346, STRIP_P=347, - SYSID=348, SYSTEM_P=349, TABLES=350, ZTABLES=351, TABLESPACE=352, TEMP=353, - TEMPLATE=354, TEMPORARY=355, TEXT_P=356, TRANSACTION=357, TRIGGER=358, - TRUNCATE=359, TRUSTED=360, TYPE_P=361, TYPES_P=362, UNBOUNDED=363, UNCOMMITTED=364, - UNENCRYPTED=365, UNKNOWN=366, UNLISTEN=367, UNLOGGED=368, UNTIL=369, UPDATE=370, - VACUUM=371, VALID=372, VALIDATE=373, VALIDATOR=374, VARYING=375, VERSION_P=376, - VIEW=377, VOLATILE=378, WHITESPACE_P=379, WITHOUT=380, WORK=381, WRAPPER=382, - WRITE=383, XML_P=384, YEAR_P=385, YES_P=386, ZONE=387, BETWEEN=388, BIGINT=389, - BIT=390, BOOLEAN_P=391, CHAR_P=392, CHARACTER=393, COALESCE=394, DEC=395, - DECIMAL_P=396, EXISTS=397, EXTRACT=398, FLOAT_P=399, GREATEST=400, INOUT=401, - INT_P=402, INTEGER=403, INTERVAL=404, LEAST=405, NATIONAL=406, NCHAR=407, - NONE=408, NULLIF=409, NUMERIC=410, OVERLAY=411, POSITION=412, PRECISION=413, - REAL=414, ROW=415, SETOF=416, SMALLINT=417, SUBSTRING=418, TIME=419, TIMESTAMP=420, - TREAT=421, TRIM=422, VALUES=423, VARCHAR=424, XMLATTRIBUTES=425, XMLCOMMENT=426, - XMLAGG=427, XML_IS_WELL_FORMED=428, XML_IS_WELL_FORMED_DOCUMENT=429, XML_IS_WELL_FORMED_CONTENT=430, - XPATH=431, XPATH_EXISTS=432, XMLCONCAT=433, XMLELEMENT=434, XMLEXISTS=435, - XMLFOREST=436, XMLPARSE=437, XMLPI=438, XMLROOT=439, XMLSERIALIZE=440, - CALL=441, CURRENT_P=442, ATTACH=443, DETACH=444, EXPRESSION=445, GENERATED=446, - LOGGED=447, STORED=448, INCLUDE=449, ROUTINE=450, TRANSFORM=451, IMPORT_P=452, - POLICY=453, METHOD=454, REFERENCING=455, NEW=456, OLD=457, VALUE_P=458, - SUBSCRIPTION=459, PUBLICATION=460, OUT_P=461, END_P=462, ROUTINES=463, - SCHEMAS=464, PROCEDURES=465, INPUT_P=466, SUPPORT=467, PARALLEL=468, SQL_P=469, - DEPENDS=470, OVERRIDING=471, CONFLICT=472, SKIP_P=473, LOCKED=474, TIES=475, - ROLLUP=476, CUBE=477, GROUPING=478, SETS=479, TABLESAMPLE=480, ORDINALITY=481, - XMLTABLE=482, COLUMNS=483, XMLNAMESPACES=484, ROWTYPE=485, NORMALIZED=486, - WITHIN=487, FILTER=488, GROUPS=489, OTHERS=490, NFC=491, NFD=492, NFKC=493, - NFKD=494, UESCAPE=495, VIEWS=496, NORMALIZE=497, DUMP=498, PRINT_STRICT_PARAMS=499, - VARIABLE_CONFLICT=500, ERROR=501, USE_VARIABLE=502, USE_COLUMN=503, ALIAS=504, - CONSTANT=505, PERFORM=506, GET=507, DIAGNOSTICS=508, STACKED=509, ELSIF=510, - WHILE=511, REVERSE=512, FOREACH=513, SLICE=514, EXIT=515, RETURN=516, - QUERY=517, RAISE=518, SQLSTATE=519, DEBUG=520, LOG=521, INFO=522, NOTICE=523, - WARNING=524, EXCEPTION=525, ASSERT=526, LOOP=527, OPEN=528, ABS=529, CBRT=530, - CEIL=531, CEILING=532, DEGREES=533, DIV=534, EXP=535, FACTORIAL=536, FLOOR=537, - GCD=538, LCM=539, LN=540, LOG10=541, MIN_SCALE=542, MOD=543, PI=544, POWER=545, - RADIANS=546, ROUND=547, SCALE=548, SIGN=549, SQRT=550, TRIM_SCALE=551, - TRUNC=552, WIDTH_BUCKET=553, RANDOM=554, SETSEED=555, ACOS=556, ACOSD=557, - ASIN=558, ASIND=559, ATAN=560, ATAND=561, ATAN2=562, ATAN2D=563, COS=564, - COSD=565, COT=566, COTD=567, SIN=568, SIND=569, TAN=570, TAND=571, SINH=572, - COSH=573, TANH=574, ASINH=575, ACOSH=576, ATANH=577, BIT_LENGTH=578, CHAR_LENGTH=579, - CHARACTER_LENGTH=580, LOWER=581, OCTET_LENGTH=582, UPPER=583, ASCII=584, - BTRIM=585, CHR=586, CONCAT=587, CONCAT_WS=588, FORMAT=589, INITCAP=590, - LENGTH=591, LPAD=592, LTRIM=593, MD5=594, PARSE_IDENT=595, PG_CLIENT_ENCODING=596, - QUOTE_IDENT=597, QUOTE_LITERAL=598, QUOTE_NULLABLE=599, REGEXP_COUNT=600, - REGEXP_INSTR=601, REGEXP_LIKE=602, REGEXP_MATCH=603, REGEXP_MATCHES=604, - REGEXP_REPLACE=605, REGEXP_SPLIT_TO_ARRAY=606, REGEXP_SPLIT_TO_TABLE=607, - REGEXP_SUBSTR=608, REPEAT=609, RPAD=610, RTRIM=611, SPLIT_PART=612, STARTS_WITH=613, - STRING_TO_ARRAY=614, STRING_TO_TABLE=615, STRPOS=616, SUBSTR=617, TO_ASCII=618, - TO_HEX=619, TRANSLATE=620, UNISTR=621, AGE=622, CLOCK_TIMESTAMP=623, DATE_BIN=624, - DATE_PART=625, DATE_TRUNC=626, ISFINITE=627, JUSTIFY_DAYS=628, JUSTIFY_HOURS=629, - JUSTIFY_INTERVAL=630, MAKE_DATE=631, MAKE_INTERVAL=632, MAKE_TIME=633, - MAKE_TIMESTAMP=634, MAKE_TIMESTAMPTZ=635, NOW=636, STATEMENT_TIMESTAMP=637, - TIMEOFDAY=638, TRANSACTION_TIMESTAMP=639, TO_TIMESTAMP=640, TO_CHAR=641, - TO_DATE=642, TO_NUMBER=643, Identifier=644, QuotedIdentifier=645, UnterminatedQuotedIdentifier=646, - InvalidQuotedIdentifier=647, InvalidUnterminatedQuotedIdentifier=648, - UnicodeQuotedIdentifier=649, UnterminatedUnicodeQuotedIdentifier=650, - InvalidUnicodeQuotedIdentifier=651, InvalidUnterminatedUnicodeQuotedIdentifier=652, - StringConstant=653, UnterminatedStringConstant=654, UnicodeEscapeStringConstant=655, - UnterminatedUnicodeEscapeStringConstant=656, BeginDollarStringConstant=657, - BinaryStringConstant=658, UnterminatedBinaryStringConstant=659, InvalidBinaryStringConstant=660, - InvalidUnterminatedBinaryStringConstant=661, HexadecimalStringConstant=662, - UnterminatedHexadecimalStringConstant=663, InvalidHexadecimalStringConstant=664, - InvalidUnterminatedHexadecimalStringConstant=665, Integral=666, NumericFail=667, - Numeric=668, PLSQLVARIABLENAME=669, PLSQLIDENTIFIER=670, Whitespace=671, - Newline=672, LineComment=673, BlockComment=674, UnterminatedBlockComment=675, - MetaCommand=676, EndMetaCommand=677, ErrorCharacter=678, EscapeStringConstant=679, - UnterminatedEscapeStringConstant=680, InvalidEscapeStringConstant=681, - InvalidUnterminatedEscapeStringConstant=682, AfterEscapeStringConstantMode_NotContinued=683, - AfterEscapeStringConstantWithNewlineMode_NotContinued=684, DollarText=685, - EndDollarStringConstant=686, AfterEscapeStringConstantWithNewlineMode_Continued=687; - 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", "ZTABLE", "THEN", - "TO", "DESCRIBE", "TOPIC", "TOPICS", "STREAM", "ZVIEW", "ZVIEWS", "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", "ZTABLES", "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'", "'ZTABLE'", "'THEN'", "'TO'", "'DESCRIBE'", - "'TOPIC'", "'TOPICS'", "'STREAM'", "'ZVIEW'", "'ZVIEWS'", "'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'", "'ZTABLES'", "'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", "ZTABLE", "THEN", - "TO", "DESCRIBE", "TOPIC", "TOPICS", "STREAM", "ZVIEW", "ZVIEWS", "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", "ZTABLES", "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 664: - BeginDollarStringConstant_action((RuleContext)_localctx, actionIndex); - break; - case 675: - NumericFail_action((RuleContext)_localctx, actionIndex); - break; - case 684: - UnterminatedBlockComment_action((RuleContext)_localctx, actionIndex); - break; - case 696: - AfterEscapeStringConstantMode_NotContinued_action((RuleContext)_localctx, actionIndex); - break; - case 700: - AfterEscapeStringConstantWithNewlineMode_NotContinued_action((RuleContext)_localctx, actionIndex); - break; - case 702: - 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 648: - return IdentifierStartChar_sempred((RuleContext)_localctx, predIndex); - case 702: - 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\u02af\u1ad0\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\u0002\u02b9\u0007\u02b9"+ - "\u0002\u02ba\u0007\u02ba\u0002\u02bb\u0007\u02bb\u0002\u02bc\u0007\u02bc"+ - "\u0002\u02bd\u0007\u02bd\u0002\u02be\u0007\u02be\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\u05c5\b\u001b\u000b\u001b\f\u001b\u05c6\u0001\u001c\u0001"+ - "\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05cd\b\u001c\u000b\u001c\f"+ - "\u001c\u05ce\u0001\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u05d4\b\u001c"+ - "\u0001\u001c\u0001\u001c\u0004\u001c\u05d8\b\u001c\u000b\u001c\f\u001c"+ - "\u05d9\u0001\u001c\u0003\u001c\u05dd\b\u001c\u0001\u001c\u0001\u001c\u0001"+ - "\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0005\u001d\u05e6"+ - "\b\u001d\n\u001d\f\u001d\u05e9\t\u001d\u0001\u001d\u0001\u001d\u0003\u001d"+ - "\u05ed\b\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0004\u001d\u05f2\b"+ - "\u001d\u000b\u001d\f\u001d\u05f3\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`\u0001`\u0001`\u0001"+ - "a\u0001a\u0001a\u0001a\u0001a\u0001b\u0001b\u0001b\u0001c\u0001c\u0001"+ - "c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001d\u0001d\u0001d\u0001"+ - "d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001"+ - "f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001g\u0001"+ - "g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001"+ - "i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001j\u0001"+ - "j\u0001j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+ - "l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001m\u0001"+ - "m\u0001m\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001o\u0001o\u0001"+ - "o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001p\u0001p\u0001p\u0001"+ - "p\u0001p\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001"+ - "r\u0001r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001s\u0001s\u0001s\u0001"+ - "t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001"+ - "t\u0001t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001"+ - "u\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001"+ - "v\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001"+ - "w\u0001w\u0001w\u0001w\u0001x\u0001x\u0001x\u0001x\u0001x\u0001x\u0001"+ - "y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001"+ - "y\u0001y\u0001y\u0001y\u0001y\u0001z\u0001z\u0001z\u0001z\u0001z\u0001"+ - "z\u0001z\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\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\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\u0084\u0001\u0084\u0001\u0085\u0001\u0085\u0001\u0085\u0001"+ - "\u0085\u0001\u0085\u0001\u0085\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\u0089\u0001"+ - "\u0089\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\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\u008c\u0001\u008c\u0001\u008c\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"+ - "\u008e\u0001\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\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"+ - "\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\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\u0096\u0001\u0096\u0001"+ - "\u0096\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\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\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"+ - "\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\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\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"+ - "\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\u00a4\u0001"+ - "\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001"+ - "\u00a4\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"+ - "\u00a5\u0001\u00a5\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\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\u00ac\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\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ae\u0001\u00ae\u0001"+ - "\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001"+ - "\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00af\u0001\u00af\u0001\u00af\u0001"+ - "\u00af\u0001\u00af\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\u00b0\u0001\u00b0\u0001\u00b1\u0001"+ - "\u00b1\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\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\u00b5\u0001"+ - "\u00b5\u0001\u00b5\u0001\u00b5\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\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\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\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\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\u00c1\u0001\u00c1\u0001\u00c1\u0001"+ - "\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\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"+ - "\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c4\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\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\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"+ - "\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\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\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"+ - "\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\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"+ - "\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\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"+ - "\u00d6\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\u00da\u0001"+ - "\u00da\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\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"+ - "\u00dd\u0001\u00dd\u0001\u00de\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\u00df\u0001\u00df\u0001\u00df\u0001"+ - "\u00df\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\u00e2\u0001"+ - "\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001"+ - "\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\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\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e7\u0001\u00e7\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\u00e8\u0001"+ - "\u00e9\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"+ - "\u00ea\u0001\u00eb\u0001\u00eb\u0001\u00eb\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\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\u00ef\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\u00f1\u0001\u00f1\u0001\u00f1\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\u00f2\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\u00f4\u0001\u00f4\u0001"+ - "\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001"+ - "\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\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\u00f8\u0001\u00f8\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"+ - "\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\u00fe\u0001\u00fe\u0001\u00fe\u0001"+ - "\u00fe\u0001\u00fe\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\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"+ - "\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\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001"+ - "\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001"+ - "\u0105\u0001\u0105\u0001\u0105\u0001\u0106\u0001\u0106\u0001\u0106\u0001"+ - "\u0106\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\u0108\u0001"+ - "\u0108\u0001\u0109\u0001\u0109\u0001\u0109\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"+ - "\u010b\u0001\u010b\u0001\u010b\u0001\u010c\u0001\u010c\u0001\u010c\u0001"+ - "\u010c\u0001\u010c\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001"+ - "\u010d\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001"+ - "\u010e\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001"+ - "\u0110\u0001\u0110\u0001\u0110\u0001\u0111\u0001\u0111\u0001\u0111\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"+ - "\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\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001"+ - "\u0115\u0001\u0115\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0117\u0001"+ - "\u0117\u0001\u0117\u0001\u0117\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\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\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001"+ - "\u011c\u0001\u011c\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\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\u0120\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"+ - "\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\u0127\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\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\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\u012c\u0001\u012c\u0001\u012c\u0001\u012c\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"+ - "\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\u0130\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"+ - "\u0132\u0001\u0132\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\u0135\u0001\u0135\u0001\u0136\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\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\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"+ - "\u013b\u0001\u013c\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\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\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\u0142\u0001\u0142\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\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\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\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\u014a\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\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"+ - "\u014c\u0001\u014c\u0001\u014c\u0001\u014d\u0001\u014d\u0001\u014d\u0001"+ - "\u014d\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\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0151\u0001"+ - "\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\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\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\u0155\u0001\u0156\u0001\u0156\u0001\u0156\u0001"+ - "\u0156\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\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001"+ - "\u0159\u0001\u0159\u0001\u0159\u0001\u0159\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\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\u015c\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\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\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\u0163\u0001\u0163\u0001\u0163\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\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\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"+ - "\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\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"+ - "\u016e\u0001\u016e\u0001\u016e\u0001\u016f\u0001\u016f\u0001\u016f\u0001"+ - "\u016f\u0001\u016f\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\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\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\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"+ - "\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\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"+ - "\u0179\u0001\u0179\u0001\u017a\u0001\u017a\u0001\u017a\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\u017d\u0001"+ - "\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001"+ - "\u017d\u0001\u017d\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001"+ - "\u017e\u0001\u017e\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\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\u0183\u0001\u0183\u0001"+ - "\u0183\u0001\u0183\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001"+ - "\u0184\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0185\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"+ - "\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001"+ - "\u0188\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u018a\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"+ - "\u018c\u0001\u018c\u0001\u018c\u0001\u018c\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\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\u0190\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\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\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\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\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\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\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\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\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"+ - "\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\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\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\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\u01ac\u0001\u01ac\u0001\u01ac\u0001"+ - "\u01ac\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\u01af\u0001"+ - "\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001"+ - "\u01af\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\u01b0\u0001\u01b0\u0001"+ - "\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\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\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001"+ - "\u01b1\u0001\u01b1\u0001\u01b1\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\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\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\u01b6\u0001"+ - "\u01b6\u0001\u01b6\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\u01b7\u0001\u01b7\u0001"+ - "\u01b7\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\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\u01bb\u0001\u01bb\u0001"+ - "\u01bb\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\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\u01c0\u0001\u01c1\u0001\u01c1\u0001\u01c1\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\u01c5\u0001"+ - "\u01c5\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\u01c7\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\u01c9\u0001\u01c9\u0001\u01c9\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\u01ca\u0001"+ - "\u01ca\u0001\u01ca\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb\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"+ - "\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\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01d0\u0001"+ - "\u01d0\u0001\u01d0\u0001\u01d0\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\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\u01d6\u0001"+ - "\u01d6\u0001\u01d6\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\u01d7\u0001\u01d7\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\u01da\u0001\u01da\u0001"+ - "\u01da\u0001\u01da\u0001\u01da\u0001\u01da\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"+ - "\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\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\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\u01e3\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\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001"+ - "\u01e5\u0001\u01e5\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\u01e6\u0001\u01e7\u0001"+ - "\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001"+ - "\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001"+ - "\u01e7\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001"+ - "\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001"+ - "\u01e9\u0001\u01e9\u0001\u01e9\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\u01eb\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\u01ed\u0001"+ - "\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001"+ - "\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ef\u0001\u01ef\u0001"+ - "\u01ef\u0001\u01ef\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001"+ - "\u01f0\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\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"+ - "\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\u01f6\u0001\u01f6\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\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\u01f9\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\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\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\u01ff\u0001\u01ff\u0001"+ - "\u01ff\u0001\u01ff\u0001\u01ff\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\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"+ - "\u0203\u0001\u0203\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\u0205\u0001\u0205\u0001"+ - "\u0205\u0001\u0205\u0001\u0205\u0001\u0205\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\u0208\u0001\u0208\u0001"+ - "\u0208\u0001\u0208\u0001\u0208\u0001\u0208\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\u020b\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\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\u0210\u0001\u0210\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\u0213\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\u0216\u0001\u0216\u0001\u0216\u0001\u0216\u0001\u0216\u0001"+ - "\u0217\u0001\u0217\u0001\u0217\u0001\u0217\u0001\u0217\u0001\u0217\u0001"+ - "\u0217\u0001\u0217\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0001"+ - "\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0219\u0001\u0219\u0001"+ - "\u0219\u0001\u0219\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\u021c\u0001\u021c\u0001\u021d\u0001\u021d\u0001"+ - "\u021d\u0001\u021d\u0001\u021e\u0001\u021e\u0001\u021e\u0001\u021e\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\u0221\u0001\u0221\u0001\u0221\u0001"+ - "\u0221\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0223\u0001"+ - "\u0223\u0001\u0223\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\u0225\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\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\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001"+ - "\u022a\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001"+ - "\u022b\u0001\u022c\u0001\u022c\u0001\u022c\u0001\u022c\u0001\u022c\u0001"+ - "\u022c\u0001\u022c\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\u022d\u0001\u022e\u0001\u022e\u0001\u022e\u0001"+ - "\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022f\u0001"+ - "\u022f\u0001\u022f\u0001\u022f\u0001\u022f\u0001\u0230\u0001\u0230\u0001"+ - "\u0230\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0231\u0001\u0231\u0001"+ - "\u0231\u0001\u0231\u0001\u0231\u0001\u0232\u0001\u0232\u0001\u0232\u0001"+ - "\u0232\u0001\u0232\u0001\u0232\u0001\u0233\u0001\u0233\u0001\u0233\u0001"+ - "\u0233\u0001\u0233\u0001\u0234\u0001\u0234\u0001\u0234\u0001\u0234\u0001"+ - "\u0234\u0001\u0234\u0001\u0235\u0001\u0235\u0001\u0235\u0001\u0235\u0001"+ - "\u0235\u0001\u0235\u0001\u0236\u0001\u0236\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\u023a\u0001\u023a\u0001"+ - "\u023a\u0001\u023a\u0001\u023a\u0001\u023b\u0001\u023b\u0001\u023b\u0001"+ - "\u023b\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001"+ - "\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023e\u0001\u023e\u0001"+ - "\u023e\u0001\u023e\u0001\u023e\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+ - "\u023f\u0001\u023f\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001"+ - "\u0240\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\u0245\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\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\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\u0249\u0001\u0249\u0001"+ - "\u0249\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\u024b\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\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\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"+ - "\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0254\u0001"+ - "\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\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\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"+ - "\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\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\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\u025e\u0001"+ - "\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\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\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\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\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\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\u0264\u0001\u0264\u0001"+ - "\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0265\u0001"+ - "\u0265\u0001\u0265\u0001\u0265\u0001\u0265\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\u0267\u0001\u0268\u0001\u0268\u0001\u0268\u0001"+ - "\u0268\u0001\u0268\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\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\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"+ - "\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\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\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\u0272\u0001\u0272\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"+ - "\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\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\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\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\u027b\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\u027d\u0001\u027d\u0001"+ - "\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001"+ - "\u027e\u0001\u027e\u0001\u027e\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\u0280\u0001\u0280\u0001\u0280\u0001"+ - "\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001"+ - "\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001"+ - "\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0281\u0001"+ - "\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001"+ - "\u0281\u0001\u0281\u0001\u0281\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ - "\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ - "\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ - "\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ - "\u0282\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001"+ - "\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001"+ - "\u0283\u0001\u0283\u0001\u0284\u0001\u0284\u0001\u0284\u0001\u0284\u0001"+ - "\u0284\u0001\u0284\u0001\u0284\u0001\u0284\u0001\u0285\u0001\u0285\u0001"+ - "\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001"+ - "\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0001"+ - "\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0287\u0001\u0287\u0005"+ - "\u0287\u18fc\b\u0287\n\u0287\f\u0287\u18ff\t\u0287\u0001\u0288\u0001\u0288"+ - "\u0001\u0288\u0001\u0288\u0001\u0288\u0001\u0288\u0003\u0288\u1907\b\u0288"+ - "\u0001\u0289\u0001\u0289\u0003\u0289\u190b\b\u0289\u0001\u028a\u0001\u028a"+ - "\u0003\u028a\u190f\b\u028a\u0001\u028b\u0001\u028b\u0001\u028b\u0001\u028c"+ - "\u0001\u028c\u0001\u028c\u0001\u028c\u0005\u028c\u1918\b\u028c\n\u028c"+ - "\f\u028c\u191b\t\u028c\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028e"+ - "\u0001\u028e\u0001\u028e\u0001\u028e\u0005\u028e\u1924\b\u028e\n\u028e"+ - "\f\u028e\u1927\t\u028e\u0001\u028f\u0001\u028f\u0001\u028f\u0001\u028f"+ - "\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0291\u0001\u0291"+ - "\u0001\u0291\u0001\u0291\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0292"+ - "\u0001\u0293\u0001\u0293\u0001\u0293\u0001\u0294\u0001\u0294\u0001\u0294"+ - "\u0001\u0294\u0005\u0294\u1940\b\u0294\n\u0294\f\u0294\u1943\t\u0294\u0001"+ - "\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001"+ - "\u0296\u0001\u0296\u0001\u0296\u0001\u0297\u0001\u0297\u0001\u0297\u0001"+ - "\u0297\u0001\u0298\u0001\u0298\u0003\u0298\u1954\b\u0298\u0001\u0298\u0001"+ - "\u0298\u0001\u0298\u0001\u0298\u0001\u0298\u0001\u0299\u0001\u0299\u0005"+ - "\u0299\u195d\b\u0299\n\u0299\f\u0299\u1960\t\u0299\u0001\u029a\u0001\u029a"+ - "\u0001\u029a\u0001\u029b\u0001\u029b\u0001\u029b\u0005\u029b\u1968\b\u029b"+ - "\n\u029b\f\u029b\u196b\t\u029b\u0001\u029c\u0001\u029c\u0001\u029c\u0001"+ - "\u029d\u0001\u029d\u0001\u029d\u0001\u029e\u0001\u029e\u0001\u029e\u0001"+ - "\u029f\u0001\u029f\u0001\u029f\u0005\u029f\u1979\b\u029f\n\u029f\f\u029f"+ - "\u197c\t\u029f\u0001\u02a0\u0001\u02a0\u0001\u02a0\u0001\u02a1\u0001\u02a1"+ - "\u0001\u02a1\u0001\u02a2\u0001\u02a2\u0001\u02a3\u0001\u02a3\u0001\u02a3"+ - "\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a4\u0001\u02a4\u0001\u02a4"+ - "\u0003\u02a4\u198f\b\u02a4\u0001\u02a4\u0001\u02a4\u0003\u02a4\u1993\b"+ - "\u02a4\u0001\u02a4\u0003\u02a4\u1996\b\u02a4\u0001\u02a4\u0001\u02a4\u0001"+ - "\u02a4\u0001\u02a4\u0003\u02a4\u199c\b\u02a4\u0001\u02a4\u0003\u02a4\u199f"+ - "\b\u02a4\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0003\u02a4\u19a4\b\u02a4"+ - "\u0001\u02a4\u0001\u02a4\u0003\u02a4\u19a8\b\u02a4\u0001\u02a5\u0004\u02a5"+ - "\u19ab\b\u02a5\u000b\u02a5\f\u02a5\u19ac\u0001\u02a6\u0001\u02a6\u0001"+ - "\u02a6\u0005\u02a6\u19b2\b\u02a6\n\u02a6\f\u02a6\u19b5\t\u02a6\u0001\u02a7"+ - "\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7"+ - "\u0001\u02a7\u0005\u02a7\u19bf\b\u02a7\n\u02a7\f\u02a7\u19c2\t\u02a7\u0001"+ - "\u02a7\u0001\u02a7\u0001\u02a8\u0004\u02a8\u19c7\b\u02a8\u000b\u02a8\f"+ - "\u02a8\u19c8\u0001\u02a8\u0001\u02a8\u0001\u02a9\u0001\u02a9\u0003\u02a9"+ - "\u19cf\b\u02a9\u0001\u02a9\u0003\u02a9\u19d2\b\u02a9\u0001\u02a9\u0001"+ - "\u02a9\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0005\u02aa\u19da"+ - "\b\u02aa\n\u02aa\f\u02aa\u19dd\t\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02ab"+ - "\u0001\u02ab\u0001\u02ab\u0001\u02ab\u0005\u02ab\u19e5\b\u02ab\n\u02ab"+ - "\f\u02ab\u19e8\t\u02ab\u0001\u02ab\u0001\u02ab\u0001\u02ab\u0004\u02ab"+ - "\u19ed\b\u02ab\u000b\u02ab\f\u02ab\u19ee\u0001\u02ab\u0001\u02ab\u0004"+ - "\u02ab\u19f3\b\u02ab\u000b\u02ab\f\u02ab\u19f4\u0001\u02ab\u0005\u02ab"+ - "\u19f8\b\u02ab\n\u02ab\f\u02ab\u19fb\t\u02ab\u0001\u02ab\u0005\u02ab\u19fe"+ - "\b\u02ab\n\u02ab\f\u02ab\u1a01\t\u02ab\u0001\u02ab\u0001\u02ab\u0001\u02ab"+ - "\u0001\u02ab\u0001\u02ab\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac"+ - "\u0005\u02ac\u1a0c\b\u02ac\n\u02ac\f\u02ac\u1a0f\t\u02ac\u0001\u02ac\u0001"+ - "\u02ac\u0001\u02ac\u0004\u02ac\u1a14\b\u02ac\u000b\u02ac\f\u02ac\u1a15"+ - "\u0001\u02ac\u0001\u02ac\u0004\u02ac\u1a1a\b\u02ac\u000b\u02ac\f\u02ac"+ - "\u1a1b\u0001\u02ac\u0003\u02ac\u1a1f\b\u02ac\u0005\u02ac\u1a21\b\u02ac"+ - "\n\u02ac\f\u02ac\u1a24\t\u02ac\u0001\u02ac\u0004\u02ac\u1a27\b\u02ac\u000b"+ - "\u02ac\f\u02ac\u1a28\u0001\u02ac\u0004\u02ac\u1a2c\b\u02ac\u000b\u02ac"+ - "\f\u02ac\u1a2d\u0001\u02ac\u0005\u02ac\u1a31\b\u02ac\n\u02ac\f\u02ac\u1a34"+ - "\t\u02ac\u0001\u02ac\u0003\u02ac\u1a37\b\u02ac\u0001\u02ac\u0001\u02ac"+ - "\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0005\u02ad\u1a3f\b\u02ad"+ - "\n\u02ad\f\u02ad\u1a42\t\u02ad\u0001\u02ad\u0005\u02ad\u1a45\b\u02ad\n"+ - "\u02ad\f\u02ad\u1a48\t\u02ad\u0001\u02ad\u0001\u02ad\u0005\u02ad\u1a4c"+ - "\b\u02ad\n\u02ad\f\u02ad\u1a4f\t\u02ad\u0003\u02ad\u1a51\b\u02ad\u0001"+ - "\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02af\u0001\u02af\u0001\u02b0\u0001"+ - "\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b1\u0001\u02b1\u0003"+ - "\u02b1\u1a5f\b\u02b1\u0001\u02b1\u0001\u02b1\u0001\u02b2\u0001\u02b2\u0001"+ - "\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001"+ - "\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001"+ - "\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0003"+ - "\u02b2\u1a77\b\u02b2\u0001\u02b2\u0005\u02b2\u1a7a\b\u02b2\n\u02b2\f\u02b2"+ - "\u1a7d\t\u02b2\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b3"+ - "\u0001\u02b4\u0001\u02b4\u0003\u02b4\u1a86\b\u02b4\u0001\u02b4\u0001\u02b4"+ - "\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0005\u02b5"+ - "\u1a8f\b\u02b5\n\u02b5\f\u02b5\u1a92\t\u02b5\u0001\u02b6\u0001\u02b6\u0001"+ - "\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b7\u0001\u02b7\u0001\u02b7\u0001"+ - "\u02b7\u0001\u02b7\u0001\u02b7\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001"+ - "\u02b8\u0001\u02b8\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001"+ - "\u02b9\u0001\u02ba\u0001\u02ba\u0001\u02ba\u0001\u02ba\u0001\u02ba\u0001"+ - "\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bc\u0001"+ - "\u02bc\u0001\u02bc\u0001\u02bc\u0001\u02bc\u0001\u02bd\u0004\u02bd\u1ab9"+ - "\b\u02bd\u000b\u02bd\f\u02bd\u1aba\u0001\u02bd\u0001\u02bd\u0005\u02bd"+ - "\u1abf\b\u02bd\n\u02bd\f\u02bd\u1ac2\t\u02bd\u0003\u02bd\u1ac4\b\u02bd"+ - "\u0001\u02be\u0001\u02be\u0003\u02be\u1ac8\b\u02be\u0001\u02be\u0001\u02be"+ - "\u0001\u02be\u0001\u02be\u0001\u02be\u0001\u02be\u0001\u02be\u0000\u0000"+ - "\u02bf\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/\u00161\u0017"+ - "3\u00185\u00197\u001a9\u001b;\u001c=\u001d?\u0000A\u0000C\u0000E\u0000"+ - "G\u001eI\u001fK M!O\"Q#S$U%W&Y\'[(])_*a+c,e-g.i/k0m1o2q3s4u5w6y7{8}9\u007f"+ - ":\u0081;\u0083<\u0085=\u0087>\u0089?\u008b@\u008dA\u008fB\u0091C\u0093"+ - "D\u0095E\u0097F\u0099G\u009bH\u009dI\u009fJ\u00a1K\u00a3L\u00a5M\u00a7"+ - "N\u00a9O\u00abP\u00adQ\u00afR\u00b1S\u00b3T\u00b5U\u00b7V\u00b9W\u00bb"+ - "X\u00bdY\u00bfZ\u00c1[\u00c3\\\u00c5]\u00c7^\u00c9_\u00cb`\u00cda\u00cf"+ - "b\u00d1c\u00d3d\u00d5e\u00d7f\u00d9g\u00dbh\u00ddi\u00dfj\u00e1k\u00e3"+ - "l\u00e5m\u00e7n\u00e9o\u00ebp\u00edq\u00efr\u00f1s\u00f3t\u00f5u\u00f7"+ - "v\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\u027f\u050b\u0280\u050d\u0281\u050f\u0282\u0511\u0283"+ - "\u0513\u0284\u0515\u0000\u0517\u0000\u0519\u0000\u051b\u0285\u051d\u0286"+ - "\u051f\u0287\u0521\u0288\u0523\u0289\u0525\u028a\u0527\u028b\u0529\u028c"+ - "\u052b\u028d\u052d\u028e\u052f\u0000\u0531\u028f\u0533\u0290\u0535\u0291"+ - "\u0537\u0000\u0539\u0292\u053b\u0293\u053d\u0294\u053f\u0295\u0541\u0296"+ - "\u0543\u0297\u0545\u0298\u0547\u0299\u0549\u029a\u054b\u029b\u054d\u029c"+ - "\u054f\u0000\u0551\u029d\u0553\u029e\u0555\u029f\u0557\u02a0\u0559\u02a1"+ - "\u055b\u02a2\u055d\u02a3\u055f\u02a4\u0561\u02a5\u0563\u02a6\u0565\u02a7"+ - "\u0567\u02a8\u0569\u0000\u056b\u02a9\u056d\u02aa\u056f\u0000\u0571\u0000"+ - "\u0573\u0000\u0575\u02ab\u0577\u0000\u0579\u0000\u057b\u02af\u057d\u02ac"+ - "\u057f\u02ad\u0581\u02ae\u0005\u0000\u0001\u0002\u0003\u00043\u0001\u0000"+ - "09\u0002\u0000++--\t\u0000!!##%&**<@^^``||~~\u0002\u0000*+<>\b\u0000!"+ - "!##%&?@^^``||~~\u0002\u0000AAaa\u0002\u0000LLll\u0002\u0000NNnn\u0002"+ - "\u0000YYyy\u0002\u0000SSss\u0002\u0000EEee\u0002\u0000ZZzz\u0002\u0000"+ - "DDdd\u0002\u0000RRrr\u0002\u0000CCcc\u0002\u0000MMmm\u0002\u0000TTtt\u0002"+ - "\u0000IIii\u0002\u0000BBbb\u0002\u0000OOoo\u0002\u0000HHhh\u0002\u0000"+ - "KKkk\u0002\u0000UUuu\u0002\u0000GGgg\u0002\u0000PPpp\u0002\u0000FFff\u0002"+ - "\u0000XXxx\u0002\u0000VVvv\u0002\u0000WWww\u0002\u0000QQqq\u0002\u0000"+ - "JJjj\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\u0000"+ - "01\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$$\u1b18\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\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"+ - "\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\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"+ - "\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\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\u0509\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\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\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\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\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\u0551\u0001\u0000\u0000\u0000\u0000\u0553\u0001\u0000"+ - "\u0000\u0000\u0000\u0555\u0001\u0000\u0000\u0000\u0000\u0557\u0001\u0000"+ - "\u0000\u0000\u0000\u0559\u0001\u0000\u0000\u0000\u0000\u055b\u0001\u0000"+ - "\u0000\u0000\u0000\u055d\u0001\u0000\u0000\u0000\u0000\u055f\u0001\u0000"+ - "\u0000\u0000\u0000\u0561\u0001\u0000\u0000\u0000\u0000\u0563\u0001\u0000"+ - "\u0000\u0000\u0001\u0565\u0001\u0000\u0000\u0000\u0001\u0567\u0001\u0000"+ - "\u0000\u0000\u0001\u056b\u0001\u0000\u0000\u0000\u0001\u056d\u0001\u0000"+ - "\u0000\u0000\u0002\u0571\u0001\u0000\u0000\u0000\u0002\u0573\u0001\u0000"+ - "\u0000\u0000\u0002\u0575\u0001\u0000\u0000\u0000\u0003\u0577\u0001\u0000"+ - "\u0000\u0000\u0003\u0579\u0001\u0000\u0000\u0000\u0003\u057b\u0001\u0000"+ - "\u0000\u0000\u0003\u057d\u0001\u0000\u0000\u0000\u0004\u057f\u0001\u0000"+ - "\u0000\u0000\u0004\u0581\u0001\u0000\u0000\u0000\u0005\u0583\u0001\u0000"+ - "\u0000\u0000\u0007\u0585\u0001\u0000\u0000\u0000\t\u0587\u0001\u0000\u0000"+ - "\u0000\u000b\u0589\u0001\u0000\u0000\u0000\r\u058b\u0001\u0000\u0000\u0000"+ - "\u000f\u058d\u0001\u0000\u0000\u0000\u0011\u058f\u0001\u0000\u0000\u0000"+ - "\u0013\u0591\u0001\u0000\u0000\u0000\u0015\u0593\u0001\u0000\u0000\u0000"+ - "\u0017\u0595\u0001\u0000\u0000\u0000\u0019\u0597\u0001\u0000\u0000\u0000"+ - "\u001b\u0599\u0001\u0000\u0000\u0000\u001d\u059b\u0001\u0000\u0000\u0000"+ - "\u001f\u059d\u0001\u0000\u0000\u0000!\u059f\u0001\u0000\u0000\u0000#\u05a1"+ - "\u0001\u0000\u0000\u0000%\u05a3\u0001\u0000\u0000\u0000\'\u05a5\u0001"+ - "\u0000\u0000\u0000)\u05a8\u0001\u0000\u0000\u0000+\u05ab\u0001\u0000\u0000"+ - "\u0000-\u05ae\u0001\u0000\u0000\u0000/\u05b1\u0001\u0000\u0000\u00001"+ - "\u05b4\u0001\u0000\u0000\u00003\u05b7\u0001\u0000\u0000\u00005\u05ba\u0001"+ - "\u0000\u0000\u00007\u05bd\u0001\u0000\u0000\u00009\u05c0\u0001\u0000\u0000"+ - "\u0000;\u05c2\u0001\u0000\u0000\u0000=\u05dc\u0001\u0000\u0000\u0000?"+ - "\u05e7\u0001\u0000\u0000\u0000A\u05f7\u0001\u0000\u0000\u0000C\u05f9\u0001"+ - "\u0000\u0000\u0000E\u05fb\u0001\u0000\u0000\u0000G\u05fd\u0001\u0000\u0000"+ - "\u0000I\u0601\u0001\u0000\u0000\u0000K\u0609\u0001\u0000\u0000\u0000M"+ - "\u0611\u0001\u0000\u0000\u0000O\u0615\u0001\u0000\u0000\u0000Q\u0619\u0001"+ - "\u0000\u0000\u0000S\u061f\u0001\u0000\u0000\u0000U\u0622\u0001\u0000\u0000"+ - "\u0000W\u0626\u0001\u0000\u0000\u0000Y\u0631\u0001\u0000\u0000\u0000["+ - "\u0636\u0001\u0000\u0000\u0000]\u063b\u0001\u0000\u0000\u0000_\u0640\u0001"+ - "\u0000\u0000\u0000a\u0646\u0001\u0000\u0000\u0000c\u064e\u0001\u0000\u0000"+ - "\u0000e\u0655\u0001\u0000\u0000\u0000g\u0660\u0001\u0000\u0000\u0000i"+ - "\u0667\u0001\u0000\u0000\u0000k\u0677\u0001\u0000\u0000\u0000m\u0684\u0001"+ - "\u0000\u0000\u0000o\u0691\u0001\u0000\u0000\u0000q\u069e\u0001\u0000\u0000"+ - "\u0000s\u06b0\u0001\u0000\u0000\u0000u\u06bd\u0001\u0000\u0000\u0000w"+ - "\u06c5\u0001\u0000\u0000\u0000y\u06d0\u0001\u0000\u0000\u0000{\u06d5\u0001"+ - "\u0000\u0000\u0000}\u06de\u0001\u0000\u0000\u0000\u007f\u06e1\u0001\u0000"+ - "\u0000\u0000\u0081\u06e6\u0001\u0000\u0000\u0000\u0083\u06ed\u0001\u0000"+ - "\u0000\u0000\u0085\u06f3\u0001\u0000\u0000\u0000\u0087\u06f9\u0001\u0000"+ - "\u0000\u0000\u0089\u06fd\u0001\u0000\u0000\u0000\u008b\u0705\u0001\u0000"+ - "\u0000\u0000\u008d\u070a\u0001\u0000\u0000\u0000\u008f\u0710\u0001\u0000"+ - "\u0000\u0000\u0091\u0716\u0001\u0000\u0000\u0000\u0093\u071d\u0001\u0000"+ - "\u0000\u0000\u0095\u0720\u0001\u0000\u0000\u0000\u0097\u072a\u0001\u0000"+ - "\u0000\u0000\u0099\u0734\u0001\u0000\u0000\u0000\u009b\u0739\u0001\u0000"+ - "\u0000\u0000\u009d\u0741\u0001\u0000\u0000\u0000\u009f\u0749\u0001\u0000"+ - "\u0000\u0000\u00a1\u074f\u0001\u0000\u0000\u0000\u00a3\u0759\u0001\u0000"+ - "\u0000\u0000\u00a5\u0768\u0001\u0000\u0000\u0000\u00a7\u076c\u0001\u0000"+ - "\u0000\u0000\u00a9\u0771\u0001\u0000\u0000\u0000\u00ab\u0778\u0001\u0000"+ - "\u0000\u0000\u00ad\u077b\u0001\u0000\u0000\u0000\u00af\u0780\u0001\u0000"+ - "\u0000\u0000\u00b1\u0783\u0001\u0000\u0000\u0000\u00b3\u0789\u0001\u0000"+ - "\u0000\u0000\u00b5\u0791\u0001\u0000\u0000\u0000\u00b7\u0799\u0001\u0000"+ - "\u0000\u0000\u00b9\u07a4\u0001\u0000\u0000\u0000\u00bb\u07ae\u0001\u0000"+ - "\u0000\u0000\u00bd\u07b5\u0001\u0000\u0000\u0000\u00bf\u07c2\u0001\u0000"+ - "\u0000\u0000\u00c1\u07c7\u0001\u0000\u0000\u0000\u00c3\u07d1\u0001\u0000"+ - "\u0000\u0000\u00c5\u07d7\u0001\u0000\u0000\u0000\u00c7\u07de\u0001\u0000"+ - "\u0000\u0000\u00c9\u07e3\u0001\u0000\u0000\u0000\u00cb\u07e6\u0001\u0000"+ - "\u0000\u0000\u00cd\u07ef\u0001\u0000\u0000\u0000\u00cf\u07f5\u0001\u0000"+ - "\u0000\u0000\u00d1\u07fc\u0001\u0000\u0000\u0000\u00d3\u0803\u0001\u0000"+ - "\u0000\u0000\u00d5\u0809\u0001\u0000\u0000\u0000\u00d7\u0810\u0001\u0000"+ - "\u0000\u0000\u00d9\u0819\u0001\u0000\u0000\u0000\u00db\u081e\u0001\u0000"+ - "\u0000\u0000\u00dd\u0824\u0001\u0000\u0000\u0000\u00df\u082b\u0001\u0000"+ - "\u0000\u0000\u00e1\u0830\u0001\u0000\u0000\u0000\u00e3\u0836\u0001\u0000"+ - "\u0000\u0000\u00e5\u083f\u0001\u0000\u0000\u0000\u00e7\u0844\u0001\u0000"+ - "\u0000\u0000\u00e9\u084a\u0001\u0000\u0000\u0000\u00eb\u0851\u0001\u0000"+ - "\u0000\u0000\u00ed\u0856\u0001\u0000\u0000\u0000\u00ef\u0864\u0001\u0000"+ - "\u0000\u0000\u00f1\u086b\u0001\u0000\u0000\u0000\u00f3\u0875\u0001\u0000"+ - "\u0000\u0000\u00f5\u0882\u0001\u0000\u0000\u0000\u00f7\u0888\u0001\u0000"+ - "\u0000\u0000\u00f9\u0897\u0001\u0000\u0000\u0000\u00fb\u089e\u0001\u0000"+ - "\u0000\u0000\u00fd\u08a3\u0001\u0000\u0000\u0000\u00ff\u08a9\u0001\u0000"+ - "\u0000\u0000\u0101\u08af\u0001\u0000\u0000\u0000\u0103\u08b2\u0001\u0000"+ - "\u0000\u0000\u0105\u08b9\u0001\u0000\u0000\u0000\u0107\u08be\u0001\u0000"+ - "\u0000\u0000\u0109\u08c3\u0001\u0000\u0000\u0000\u010b\u08c8\u0001\u0000"+ - "\u0000\u0000\u010d\u08d0\u0001\u0000\u0000\u0000\u010f\u08d8\u0001\u0000"+ - "\u0000\u0000\u0111\u08de\u0001\u0000\u0000\u0000\u0113\u08e3\u0001\u0000"+ - "\u0000\u0000\u0115\u08ec\u0001\u0000\u0000\u0000\u0117\u08f2\u0001\u0000"+ - "\u0000\u0000\u0119\u08fa\u0001\u0000\u0000\u0000\u011b\u0902\u0001\u0000"+ - "\u0000\u0000\u011d\u0908\u0001\u0000\u0000\u0000\u011f\u0911\u0001\u0000"+ - "\u0000\u0000\u0121\u0918\u0001\u0000\u0000\u0000\u0123\u091f\u0001\u0000"+ - "\u0000\u0000\u0125\u0923\u0001\u0000\u0000\u0000\u0127\u0929\u0001\u0000"+ - "\u0000\u0000\u0129\u092f\u0001\u0000\u0000\u0000\u012b\u0939\u0001\u0000"+ - "\u0000\u0000\u012d\u093e\u0001\u0000\u0000\u0000\u012f\u0944\u0001\u0000"+ - "\u0000\u0000\u0131\u094b\u0001\u0000\u0000\u0000\u0133\u0955\u0001\u0000"+ - "\u0000\u0000\u0135\u0960\u0001\u0000\u0000\u0000\u0137\u0963\u0001\u0000"+ - "\u0000\u0000\u0139\u096d\u0001\u0000\u0000\u0000\u013b\u0976\u0001\u0000"+ - "\u0000\u0000\u013d\u097d\u0001\u0000\u0000\u0000\u013f\u0983\u0001\u0000"+ - "\u0000\u0000\u0141\u0986\u0001\u0000\u0000\u0000\u0143\u098c\u0001\u0000"+ - "\u0000\u0000\u0145\u0993\u0001\u0000\u0000\u0000\u0147\u099b\u0001\u0000"+ - "\u0000\u0000\u0149\u09a4\u0001\u0000\u0000\u0000\u014b\u09ac\u0001\u0000"+ - "\u0000\u0000\u014d\u09b2\u0001\u0000\u0000\u0000\u014f\u09c2\u0001\u0000"+ - "\u0000\u0000\u0151\u09cd\u0001\u0000\u0000\u0000\u0153\u09d3\u0001\u0000"+ - "\u0000\u0000\u0155\u09d9\u0001\u0000\u0000\u0000\u0157\u09e1\u0001\u0000"+ - "\u0000\u0000\u0159\u09e9\u0001\u0000\u0000\u0000\u015b\u09f2\u0001\u0000"+ - "\u0000\u0000\u015d\u09f9\u0001\u0000\u0000\u0000\u015f\u0a03\u0001\u0000"+ - "\u0000\u0000\u0161\u0a11\u0001\u0000\u0000\u0000\u0163\u0a1c\u0001\u0000"+ - "\u0000\u0000\u0165\u0a28\u0001\u0000\u0000\u0000\u0167\u0a30\u0001\u0000"+ - "\u0000\u0000\u0169\u0a39\u0001\u0000\u0000\u0000\u016b\u0a44\u0001\u0000"+ - "\u0000\u0000\u016d\u0a49\u0001\u0000\u0000\u0000\u016f\u0a4e\u0001\u0000"+ - "\u0000\u0000\u0171\u0a52\u0001\u0000\u0000\u0000\u0173\u0a59\u0001\u0000"+ - "\u0000\u0000\u0175\u0a5f\u0001\u0000\u0000\u0000\u0177\u0a64\u0001\u0000"+ - "\u0000\u0000\u0179\u0a6d\u0001\u0000\u0000\u0000\u017b\u0a71\u0001\u0000"+ - "\u0000\u0000\u017d\u0a7c\u0001\u0000\u0000\u0000\u017f\u0a84\u0001\u0000"+ - "\u0000\u0000\u0181\u0a8d\u0001\u0000\u0000\u0000\u0183\u0a96\u0001\u0000"+ - "\u0000\u0000\u0185\u0a9e\u0001\u0000\u0000\u0000\u0187\u0aa5\u0001\u0000"+ - "\u0000\u0000\u0189\u0aaf\u0001\u0000\u0000\u0000\u018b\u0aba\u0001\u0000"+ - "\u0000\u0000\u018d\u0ac5\u0001\u0000\u0000\u0000\u018f\u0acd\u0001\u0000"+ - "\u0000\u0000\u0191\u0ad5\u0001\u0000\u0000\u0000\u0193\u0ade\u0001\u0000"+ - "\u0000\u0000\u0195\u0ae5\u0001\u0000\u0000\u0000\u0197\u0aec\u0001\u0000"+ - "\u0000\u0000\u0199\u0af1\u0001\u0000\u0000\u0000\u019b\u0af6\u0001\u0000"+ - "\u0000\u0000\u019d\u0afd\u0001\u0000\u0000\u0000\u019f\u0b06\u0001\u0000"+ - "\u0000\u0000\u01a1\u0b10\u0001\u0000\u0000\u0000\u01a3\u0b15\u0001\u0000"+ - "\u0000\u0000\u01a5\u0b1c\u0001\u0000\u0000\u0000\u01a7\u0b22\u0001\u0000"+ - "\u0000\u0000\u01a9\u0b2a\u0001\u0000\u0000\u0000\u01ab\u0b34\u0001\u0000"+ - "\u0000\u0000\u01ad\u0b3e\u0001\u0000\u0000\u0000\u01af\u0b46\u0001\u0000"+ - "\u0000\u0000\u01b1\u0b4e\u0001\u0000\u0000\u0000\u01b3\u0b58\u0001\u0000"+ - "\u0000\u0000\u01b5\u0b61\u0001\u0000\u0000\u0000\u01b7\u0b68\u0001\u0000"+ - "\u0000\u0000\u01b9\u0b6e\u0001\u0000\u0000\u0000\u01bb\u0b78\u0001\u0000"+ - "\u0000\u0000\u01bd\u0b7e\u0001\u0000\u0000\u0000\u01bf\u0b86\u0001\u0000"+ - "\u0000\u0000\u01c1\u0b8f\u0001\u0000\u0000\u0000\u01c3\u0b99\u0001\u0000"+ - "\u0000\u0000\u01c5\u0ba0\u0001\u0000\u0000\u0000\u01c7\u0ba8\u0001\u0000"+ - "\u0000\u0000\u01c9\u0bb0\u0001\u0000\u0000\u0000\u01cb\u0bb7\u0001\u0000"+ - "\u0000\u0000\u01cd\u0bbc\u0001\u0000\u0000\u0000\u01cf\u0bc1\u0001\u0000"+ - "\u0000\u0000\u01d1\u0bca\u0001\u0000\u0000\u0000\u01d3\u0bcd\u0001\u0000"+ - "\u0000\u0000\u01d5\u0bd7\u0001\u0000\u0000\u0000\u01d7\u0be1\u0001\u0000"+ - "\u0000\u0000\u01d9\u0bea\u0001\u0000\u0000\u0000\u01db\u0bf4\u0001\u0000"+ - "\u0000\u0000\u01dd\u0bfe\u0001\u0000\u0000\u0000\u01df\u0c04\u0001\u0000"+ - "\u0000\u0000\u01e1\u0c0c\u0001\u0000\u0000\u0000\u01e3\u0c14\u0001\u0000"+ - "\u0000\u0000\u01e5\u0c1d\u0001\u0000\u0000\u0000\u01e7\u0c24\u0001\u0000"+ - "\u0000\u0000\u01e9\u0c30\u0001\u0000\u0000\u0000\u01eb\u0c37\u0001\u0000"+ - "\u0000\u0000\u01ed\u0c3f\u0001\u0000\u0000\u0000\u01ef\u0c47\u0001\u0000"+ - "\u0000\u0000\u01f1\u0c51\u0001\u0000\u0000\u0000\u01f3\u0c55\u0001\u0000"+ - "\u0000\u0000\u01f5\u0c5b\u0001\u0000\u0000\u0000\u01f7\u0c64\u0001\u0000"+ - "\u0000\u0000\u01f9\u0c6a\u0001\u0000\u0000\u0000\u01fb\u0c6f\u0001\u0000"+ - "\u0000\u0000\u01fd\u0c79\u0001\u0000\u0000\u0000\u01ff\u0c7f\u0001\u0000"+ - "\u0000\u0000\u0201\u0c86\u0001\u0000\u0000\u0000\u0203\u0c8b\u0001\u0000"+ - "\u0000\u0000\u0205\u0c91\u0001\u0000\u0000\u0000\u0207\u0c9a\u0001\u0000"+ - "\u0000\u0000\u0209\u0c9f\u0001\u0000\u0000\u0000\u020b\u0ca7\u0001\u0000"+ - "\u0000\u0000\u020d\u0cad\u0001\u0000\u0000\u0000\u020f\u0cb5\u0001\u0000"+ - "\u0000\u0000\u0211\u0cc2\u0001\u0000\u0000\u0000\u0213\u0ccb\u0001\u0000"+ - "\u0000\u0000\u0215\u0cd1\u0001\u0000\u0000\u0000\u0217\u0cd8\u0001\u0000"+ - "\u0000\u0000\u0219\u0ce1\u0001\u0000\u0000\u0000\u021b\u0ce6\u0001\u0000"+ - "\u0000\u0000\u021d\u0cec\u0001\u0000\u0000\u0000\u021f\u0cf1\u0001\u0000"+ - "\u0000\u0000\u0221\u0cf6\u0001\u0000\u0000\u0000\u0223\u0cfc\u0001\u0000"+ - "\u0000\u0000\u0225\u0d01\u0001\u0000\u0000\u0000\u0227\u0d04\u0001\u0000"+ - "\u0000\u0000\u0229\u0d0c\u0001\u0000\u0000\u0000\u022b\u0d13\u0001\u0000"+ - "\u0000\u0000\u022d\u0d1a\u0001\u0000\u0000\u0000\u022f\u0d20\u0001\u0000"+ - "\u0000\u0000\u0231\u0d27\u0001\u0000\u0000\u0000\u0233\u0d2a\u0001\u0000"+ - "\u0000\u0000\u0235\u0d2e\u0001\u0000\u0000\u0000\u0237\u0d33\u0001\u0000"+ - "\u0000\u0000\u0239\u0d3c\u0001\u0000\u0000\u0000\u023b\u0d43\u0001\u0000"+ - "\u0000\u0000\u023d\u0d4b\u0001\u0000\u0000\u0000\u023f\u0d51\u0001\u0000"+ - "\u0000\u0000\u0241\u0d57\u0001\u0000\u0000\u0000\u0243\u0d5e\u0001\u0000"+ - "\u0000\u0000\u0245\u0d66\u0001\u0000\u0000\u0000\u0247\u0d70\u0001\u0000"+ - "\u0000\u0000\u0249\u0d78\u0001\u0000\u0000\u0000\u024b\u0d81\u0001\u0000"+ - "\u0000\u0000\u024d\u0d87\u0001\u0000\u0000\u0000\u024f\u0d91\u0001\u0000"+ - "\u0000\u0000\u0251\u0d99\u0001\u0000\u0000\u0000\u0253\u0da2\u0001\u0000"+ - "\u0000\u0000\u0255\u0dab\u0001\u0000\u0000\u0000\u0257\u0db1\u0001\u0000"+ - "\u0000\u0000\u0259\u0dbc\u0001\u0000\u0000\u0000\u025b\u0dc7\u0001\u0000"+ - "\u0000\u0000\u025d\u0dd1\u0001\u0000\u0000\u0000\u025f\u0dd9\u0001\u0000"+ - "\u0000\u0000\u0261\u0ddf\u0001\u0000\u0000\u0000\u0263\u0de5\u0001\u0000"+ - "\u0000\u0000\u0265\u0dea\u0001\u0000\u0000\u0000\u0267\u0df3\u0001\u0000"+ - "\u0000\u0000\u0269\u0dfb\u0001\u0000\u0000\u0000\u026b\u0e05\u0001\u0000"+ - "\u0000\u0000\u026d\u0e09\u0001\u0000\u0000\u0000\u026f\u0e11\u0001\u0000"+ - "\u0000\u0000\u0271\u0e19\u0001\u0000\u0000\u0000\u0273\u0e22\u0001\u0000"+ - "\u0000\u0000\u0275\u0e2a\u0001\u0000\u0000\u0000\u0277\u0e31\u0001\u0000"+ - "\u0000\u0000\u0279\u0e3c\u0001\u0000\u0000\u0000\u027b\u0e44\u0001\u0000"+ - "\u0000\u0000\u027d\u0e4c\u0001\u0000\u0000\u0000\u027f\u0e52\u0001\u0000"+ - "\u0000\u0000\u0281\u0e5a\u0001\u0000\u0000\u0000\u0283\u0e63\u0001\u0000"+ - "\u0000\u0000\u0285\u0e6b\u0001\u0000\u0000\u0000\u0287\u0e72\u0001\u0000"+ - "\u0000\u0000\u0289\u0e77\u0001\u0000\u0000\u0000\u028b\u0e80\u0001\u0000"+ - "\u0000\u0000\u028d\u0e85\u0001\u0000\u0000\u0000\u028f\u0e8a\u0001\u0000"+ - "\u0000\u0000\u0291\u0e94\u0001\u0000\u0000\u0000\u0293\u0e9b\u0001\u0000"+ - "\u0000\u0000\u0295\u0ea2\u0001\u0000\u0000\u0000\u0297\u0ea9\u0001\u0000"+ - "\u0000\u0000\u0299\u0eb0\u0001\u0000\u0000\u0000\u029b\u0eb9\u0001\u0000"+ - "\u0000\u0000\u029d\u0ec2\u0001\u0000\u0000\u0000\u029f\u0ecc\u0001\u0000"+ - "\u0000\u0000\u02a1\u0ed9\u0001\u0000\u0000\u0000\u02a3\u0ee0\u0001\u0000"+ - "\u0000\u0000\u02a5\u0ee8\u0001\u0000\u0000\u0000\u02a7\u0eec\u0001\u0000"+ - "\u0000\u0000\u02a9\u0ef2\u0001\u0000\u0000\u0000\u02ab\u0ef7\u0001\u0000"+ - "\u0000\u0000\u02ad\u0efe\u0001\u0000\u0000\u0000\u02af\u0f07\u0001\u0000"+ - "\u0000\u0000\u02b1\u0f0e\u0001\u0000\u0000\u0000\u02b3\u0f19\u0001\u0000"+ - "\u0000\u0000\u02b5\u0f1f\u0001\u0000\u0000\u0000\u02b7\u0f29\u0001\u0000"+ - "\u0000\u0000\u02b9\u0f34\u0001\u0000"; - private static final String _serializedATNSegment1 = - "\u0000\u0000\u02bb\u0f3a\u0001\u0000\u0000\u0000\u02bd\u0f41\u0001\u0000"+ - "\u0000\u0000\u02bf\u0f49\u0001\u0000\u0000\u0000\u02c1\u0f50\u0001\u0000"+ - "\u0000\u0000\u02c3\u0f56\u0001\u0000\u0000\u0000\u02c5\u0f5c\u0001\u0000"+ - "\u0000\u0000\u02c7\u0f63\u0001\u0000\u0000\u0000\u02c9\u0f6a\u0001\u0000"+ - "\u0000\u0000\u02cb\u0f72\u0001\u0000\u0000\u0000\u02cd\u0f7d\u0001\u0000"+ - "\u0000\u0000\u02cf\u0f82\u0001\u0000\u0000\u0000\u02d1\u0f8b\u0001\u0000"+ - "\u0000\u0000\u02d3\u0f95\u0001\u0000\u0000\u0000\u02d5\u0f9a\u0001\u0000"+ - "\u0000\u0000\u02d7\u0fa6\u0001\u0000\u0000\u0000\u02d9\u0fae\u0001\u0000"+ - "\u0000\u0000\u02db\u0fb7\u0001\u0000\u0000\u0000\u02dd\u0fbf\u0001\u0000"+ - "\u0000\u0000\u02df\u0fc4\u0001\u0000\u0000\u0000\u02e1\u0fca\u0001\u0000"+ - "\u0000\u0000\u02e3\u0fd4\u0001\u0000\u0000\u0000\u02e5\u0fe0\u0001\u0000"+ - "\u0000\u0000\u02e7\u0fec\u0001\u0000\u0000\u0000\u02e9\u0ff4\u0001\u0000"+ - "\u0000\u0000\u02eb\u0ffd\u0001\u0000\u0000\u0000\u02ed\u1006\u0001\u0000"+ - "\u0000\u0000\u02ef\u100c\u0001\u0000\u0000\u0000\u02f1\u1013\u0001\u0000"+ - "\u0000\u0000\u02f3\u101a\u0001\u0000\u0000\u0000\u02f5\u1020\u0001\u0000"+ - "\u0000\u0000\u02f7\u1029\u0001\u0000\u0000\u0000\u02f9\u1033\u0001\u0000"+ - "\u0000\u0000\u02fb\u103b\u0001\u0000\u0000\u0000\u02fd\u1043\u0001\u0000"+ - "\u0000\u0000\u02ff\u1048\u0001\u0000\u0000\u0000\u0301\u1051\u0001\u0000"+ - "\u0000\u0000\u0303\u105c\u0001\u0000\u0000\u0000\u0305\u1064\u0001\u0000"+ - "\u0000\u0000\u0307\u1069\u0001\u0000\u0000\u0000\u0309\u1071\u0001\u0000"+ - "\u0000\u0000\u030b\u1077\u0001\u0000\u0000\u0000\u030d\u107b\u0001\u0000"+ - "\u0000\u0000\u030f\u1080\u0001\u0000\u0000\u0000\u0311\u1084\u0001\u0000"+ - "\u0000\u0000\u0313\u1089\u0001\u0000\u0000\u0000\u0315\u1091\u0001\u0000"+ - "\u0000\u0000\u0317\u1098\u0001\u0000\u0000\u0000\u0319\u109c\u0001\u0000"+ - "\u0000\u0000\u031b\u10a4\u0001\u0000\u0000\u0000\u031d\u10a9\u0001\u0000"+ - "\u0000\u0000\u031f\u10b3\u0001\u0000\u0000\u0000\u0321\u10bc\u0001\u0000"+ - "\u0000\u0000\u0323\u10c0\u0001\u0000\u0000\u0000\u0325\u10c8\u0001\u0000"+ - "\u0000\u0000\u0327\u10cf\u0001\u0000\u0000\u0000\u0329\u10d7\u0001\u0000"+ - "\u0000\u0000\u032b\u10dd\u0001\u0000\u0000\u0000\u032d\u10e6\u0001\u0000"+ - "\u0000\u0000\u032f\u10ec\u0001\u0000\u0000\u0000\u0331\u10f0\u0001\u0000"+ - "\u0000\u0000\u0333\u10f8\u0001\u0000\u0000\u0000\u0335\u1101\u0001\u0000"+ - "\u0000\u0000\u0337\u1107\u0001\u0000\u0000\u0000\u0339\u1110\u0001\u0000"+ - "\u0000\u0000\u033b\u1116\u0001\u0000\u0000\u0000\u033d\u111b\u0001\u0000"+ - "\u0000\u0000\u033f\u1122\u0001\u0000\u0000\u0000\u0341\u112a\u0001\u0000"+ - "\u0000\u0000\u0343\u1132\u0001\u0000\u0000\u0000\u0345\u113b\u0001\u0000"+ - "\u0000\u0000\u0347\u1145\u0001\u0000\u0000\u0000\u0349\u114a\u0001\u0000"+ - "\u0000\u0000\u034b\u114e\u0001\u0000\u0000\u0000\u034d\u1154\u0001\u0000"+ - "\u0000\u0000\u034f\u115d\u0001\u0000\u0000\u0000\u0351\u1167\u0001\u0000"+ - "\u0000\u0000\u0353\u116c\u0001\u0000\u0000\u0000\u0355\u1176\u0001\u0000"+ - "\u0000\u0000\u0357\u117c\u0001\u0000\u0000\u0000\u0359\u1181\u0001\u0000"+ - "\u0000\u0000\u035b\u1188\u0001\u0000\u0000\u0000\u035d\u1190\u0001\u0000"+ - "\u0000\u0000\u035f\u119e\u0001\u0000\u0000\u0000\u0361\u11a9\u0001\u0000"+ - "\u0000\u0000\u0363\u11b0\u0001\u0000\u0000\u0000\u0365\u11c3\u0001\u0000"+ - "\u0000\u0000\u0367\u11df\u0001\u0000\u0000\u0000\u0369\u11fa\u0001\u0000"+ - "\u0000\u0000\u036b\u1200\u0001\u0000\u0000\u0000\u036d\u120d\u0001\u0000"+ - "\u0000\u0000\u036f\u1217\u0001\u0000\u0000\u0000\u0371\u1222\u0001\u0000"+ - "\u0000\u0000\u0373\u122c\u0001\u0000\u0000\u0000\u0375\u1236\u0001\u0000"+ - "\u0000\u0000\u0377\u123f\u0001\u0000\u0000\u0000\u0379\u1245\u0001\u0000"+ - "\u0000\u0000\u037b\u124d\u0001\u0000\u0000\u0000\u037d\u125a\u0001\u0000"+ - "\u0000\u0000\u037f\u125f\u0001\u0000\u0000\u0000\u0381\u1267\u0001\u0000"+ - "\u0000\u0000\u0383\u126e\u0001\u0000\u0000\u0000\u0385\u1275\u0001\u0000"+ - "\u0000\u0000\u0387\u1280\u0001\u0000\u0000\u0000\u0389\u128a\u0001\u0000"+ - "\u0000\u0000\u038b\u1291\u0001\u0000\u0000\u0000\u038d\u1298\u0001\u0000"+ - "\u0000\u0000\u038f\u12a0\u0001\u0000\u0000\u0000\u0391\u12a8\u0001\u0000"+ - "\u0000\u0000\u0393\u12b2\u0001\u0000\u0000\u0000\u0395\u12b9\u0001\u0000"+ - "\u0000\u0000\u0397\u12c0\u0001\u0000\u0000\u0000\u0399\u12c7\u0001\u0000"+ - "\u0000\u0000\u039b\u12d3\u0001\u0000\u0000\u0000\u039d\u12d7\u0001\u0000"+ - "\u0000\u0000\u039f\u12db\u0001\u0000\u0000\u0000\u03a1\u12e1\u0001\u0000"+ - "\u0000\u0000\u03a3\u12ee\u0001\u0000\u0000\u0000\u03a5\u12fa\u0001\u0000"+ - "\u0000\u0000\u03a7\u12fe\u0001\u0000\u0000\u0000\u03a9\u1302\u0001\u0000"+ - "\u0000\u0000\u03ab\u130b\u0001\u0000\u0000\u0000\u03ad\u1313\u0001\u0000"+ - "\u0000\u0000\u03af\u131e\u0001\u0000\u0000\u0000\u03b1\u1324\u0001\u0000"+ - "\u0000\u0000\u03b3\u132c\u0001\u0000\u0000\u0000\u03b5\u1335\u0001\u0000"+ - "\u0000\u0000\u03b7\u1339\u0001\u0000\u0000\u0000\u03b9\u1341\u0001\u0000"+ - "\u0000\u0000\u03bb\u134c\u0001\u0000\u0000\u0000\u03bd\u1355\u0001\u0000"+ - "\u0000\u0000\u03bf\u135a\u0001\u0000\u0000\u0000\u03c1\u1361\u0001\u0000"+ - "\u0000\u0000\u03c3\u1366\u0001\u0000\u0000\u0000\u03c5\u136d\u0001\u0000"+ - "\u0000\u0000\u03c7\u1372\u0001\u0000\u0000\u0000\u03c9\u137b\u0001\u0000"+ - "\u0000\u0000\u03cb\u1380\u0001\u0000\u0000\u0000\u03cd\u138c\u0001\u0000"+ - "\u0000\u0000\u03cf\u1397\u0001\u0000\u0000\u0000\u03d1\u13a0\u0001\u0000"+ - "\u0000\u0000\u03d3\u13a8\u0001\u0000\u0000\u0000\u03d5\u13b6\u0001\u0000"+ - "\u0000\u0000\u03d7\u13be\u0001\u0000\u0000\u0000\u03d9\u13c9\u0001\u0000"+ - "\u0000\u0000\u03db\u13d0\u0001\u0000\u0000\u0000\u03dd\u13d7\u0001\u0000"+ - "\u0000\u0000\u03df\u13de\u0001\u0000\u0000\u0000\u03e1\u13e5\u0001\u0000"+ - "\u0000\u0000\u03e3\u13e9\u0001\u0000\u0000\u0000\u03e5\u13ed\u0001\u0000"+ - "\u0000\u0000\u03e7\u13f2\u0001\u0000\u0000\u0000\u03e9\u13f7\u0001\u0000"+ - "\u0000\u0000\u03eb\u13ff\u0001\u0000\u0000\u0000\u03ed\u1405\u0001\u0000"+ - "\u0000\u0000\u03ef\u140f\u0001\u0000\u0000\u0000\u03f1\u1414\u0001\u0000"+ - "\u0000\u0000\u03f3\u1428\u0001\u0000\u0000\u0000\u03f5\u143a\u0001\u0000"+ - "\u0000\u0000\u03f7\u1440\u0001\u0000\u0000\u0000\u03f9\u144d\u0001\u0000"+ - "\u0000\u0000\u03fb\u1458\u0001\u0000\u0000\u0000\u03fd\u145e\u0001\u0000"+ - "\u0000\u0000\u03ff\u1467\u0001\u0000\u0000\u0000\u0401\u146f\u0001\u0000"+ - "\u0000\u0000\u0403\u1473\u0001\u0000\u0000\u0000\u0405\u147f\u0001\u0000"+ - "\u0000\u0000\u0407\u1487\u0001\u0000\u0000\u0000\u0409\u148d\u0001\u0000"+ - "\u0000\u0000\u040b\u1493\u0001\u0000\u0000\u0000\u040d\u149b\u0001\u0000"+ - "\u0000\u0000\u040f\u14a3\u0001\u0000\u0000\u0000\u0411\u14a9\u0001\u0000"+ - "\u0000\u0000\u0413\u14ae\u0001\u0000\u0000\u0000\u0415\u14b5\u0001\u0000"+ - "\u0000\u0000\u0417\u14bb\u0001\u0000\u0000\u0000\u0419\u14c1\u0001\u0000"+ - "\u0000\u0000\u041b\u14ca\u0001\u0000\u0000\u0000\u041d\u14d0\u0001\u0000"+ - "\u0000\u0000\u041f\u14d4\u0001\u0000\u0000\u0000\u0421\u14d9\u0001\u0000"+ - "\u0000\u0000\u0423\u14e0\u0001\u0000\u0000\u0000\u0425\u14e8\u0001\u0000"+ - "\u0000\u0000\u0427\u14f2\u0001\u0000\u0000\u0000\u0429\u14f9\u0001\u0000"+ - "\u0000\u0000\u042b\u14fe\u0001\u0000\u0000\u0000\u042d\u1503\u0001\u0000"+ - "\u0000\u0000\u042f\u1507\u0001\u0000\u0000\u0000\u0431\u150c\u0001\u0000"+ - "\u0000\u0000\u0433\u1511\u0001\u0000\u0000\u0000\u0435\u1519\u0001\u0000"+ - "\u0000\u0000\u0437\u1521\u0001\u0000\u0000\u0000\u0439\u1525\u0001\u0000"+ - "\u0000\u0000\u043b\u1529\u0001\u0000\u0000\u0000\u043d\u1533\u0001\u0000"+ - "\u0000\u0000\u043f\u1539\u0001\u0000\u0000\u0000\u0441\u153d\u0001\u0000"+ - "\u0000\u0000\u0443\u1541\u0001\u0000\u0000\u0000\u0445\u1544\u0001\u0000"+ - "\u0000\u0000\u0447\u154a\u0001\u0000\u0000\u0000\u0449\u1554\u0001\u0000"+ - "\u0000\u0000\u044b\u1558\u0001\u0000\u0000\u0000\u044d\u155b\u0001\u0000"+ - "\u0000\u0000\u044f\u1561\u0001\u0000\u0000\u0000\u0451\u1569\u0001\u0000"+ - "\u0000\u0000\u0453\u156f\u0001\u0000\u0000\u0000\u0455\u1575\u0001\u0000"+ - "\u0000\u0000\u0457\u157a\u0001\u0000\u0000\u0000\u0459\u157f\u0001\u0000"+ - "\u0000\u0000\u045b\u158a\u0001\u0000\u0000\u0000\u045d\u1590\u0001\u0000"+ - "\u0000\u0000\u045f\u159d\u0001\u0000\u0000\u0000\u0461\u15a4\u0001\u0000"+ - "\u0000\u0000\u0463\u15ac\u0001\u0000\u0000\u0000\u0465\u15b1\u0001\u0000"+ - "\u0000\u0000\u0467\u15b7\u0001\u0000\u0000\u0000\u0469\u15bc\u0001\u0000"+ - "\u0000\u0000\u046b\u15c2\u0001\u0000\u0000\u0000\u046d\u15c7\u0001\u0000"+ - "\u0000\u0000\u046f\u15cd\u0001\u0000\u0000\u0000\u0471\u15d3\u0001\u0000"+ - "\u0000\u0000\u0473\u15da\u0001\u0000\u0000\u0000\u0475\u15de\u0001\u0000"+ - "\u0000\u0000\u0477\u15e3\u0001\u0000\u0000\u0000\u0479\u15e7\u0001\u0000"+ - "\u0000\u0000\u047b\u15ec\u0001\u0000\u0000\u0000\u047d\u15f0\u0001\u0000"+ - "\u0000\u0000\u047f\u15f5\u0001\u0000\u0000\u0000\u0481\u15f9\u0001\u0000"+ - "\u0000\u0000\u0483\u15fe\u0001\u0000\u0000\u0000\u0485\u1603\u0001\u0000"+ - "\u0000\u0000\u0487\u1608\u0001\u0000\u0000\u0000\u0489\u160d\u0001\u0000"+ - "\u0000\u0000\u048b\u1613\u0001\u0000\u0000\u0000\u048d\u1619\u0001\u0000"+ - "\u0000\u0000\u048f\u161f\u0001\u0000\u0000\u0000\u0491\u162a\u0001\u0000"+ - "\u0000\u0000\u0493\u1636\u0001\u0000\u0000\u0000\u0495\u1647\u0001\u0000"+ - "\u0000\u0000\u0497\u164d\u0001\u0000\u0000\u0000\u0499\u165a\u0001\u0000"+ - "\u0000\u0000\u049b\u1660\u0001\u0000\u0000\u0000\u049d\u1666\u0001\u0000"+ - "\u0000\u0000\u049f\u166c\u0001\u0000\u0000\u0000\u04a1\u1670\u0001\u0000"+ - "\u0000\u0000\u04a3\u1677\u0001\u0000\u0000\u0000\u04a5\u1681\u0001\u0000"+ - "\u0000\u0000\u04a7\u1688\u0001\u0000\u0000\u0000\u04a9\u1690\u0001\u0000"+ - "\u0000\u0000\u04ab\u1697\u0001\u0000\u0000\u0000\u04ad\u169c\u0001\u0000"+ - "\u0000\u0000\u04af\u16a2\u0001\u0000\u0000\u0000\u04b1\u16a6\u0001\u0000"+ - "\u0000\u0000\u04b3\u16b2\u0001\u0000\u0000\u0000\u04b5\u16c5\u0001\u0000"+ - "\u0000\u0000\u04b7\u16d1\u0001\u0000\u0000\u0000\u04b9\u16df\u0001\u0000"+ - "\u0000\u0000\u04bb\u16ee\u0001\u0000\u0000\u0000\u04bd\u16fb\u0001\u0000"+ - "\u0000\u0000\u04bf\u1708\u0001\u0000\u0000\u0000\u04c1\u1714\u0001\u0000"+ - "\u0000\u0000\u04c3\u1721\u0001\u0000\u0000\u0000\u04c5\u1730\u0001\u0000"+ - "\u0000\u0000\u04c7\u173f\u0001\u0000\u0000\u0000\u04c9\u1755\u0001\u0000"+ - "\u0000\u0000\u04cb\u176b\u0001\u0000\u0000\u0000\u04cd\u1779\u0001\u0000"+ - "\u0000\u0000\u04cf\u1780\u0001\u0000\u0000\u0000\u04d1\u1785\u0001\u0000"+ - "\u0000\u0000\u04d3\u178b\u0001\u0000\u0000\u0000\u04d5\u1796\u0001\u0000"+ - "\u0000\u0000\u04d7\u17a2\u0001\u0000\u0000\u0000\u04d9\u17b2\u0001\u0000"+ - "\u0000\u0000\u04db\u17c2\u0001\u0000\u0000\u0000\u04dd\u17c9\u0001\u0000"+ - "\u0000\u0000\u04df\u17d0\u0001\u0000\u0000\u0000\u04e1\u17d9\u0001\u0000"+ - "\u0000\u0000\u04e3\u17e0\u0001\u0000\u0000\u0000\u04e5\u17ea\u0001\u0000"+ - "\u0000\u0000\u04e7\u17f1\u0001\u0000\u0000\u0000\u04e9\u17f5\u0001\u0000"+ - "\u0000\u0000\u04eb\u1805\u0001\u0000\u0000\u0000\u04ed\u180e\u0001\u0000"+ - "\u0000\u0000\u04ef\u1818\u0001\u0000\u0000\u0000\u04f1\u1823\u0001\u0000"+ - "\u0000\u0000\u04f3\u182c\u0001\u0000\u0000\u0000\u04f5\u1839\u0001\u0000"+ - "\u0000\u0000\u04f7\u1847\u0001\u0000\u0000\u0000\u04f9\u1858\u0001\u0000"+ - "\u0000\u0000\u04fb\u1862\u0001\u0000\u0000\u0000\u04fd\u1870\u0001\u0000"+ - "\u0000\u0000\u04ff\u187a\u0001\u0000\u0000\u0000\u0501\u1889\u0001\u0000"+ - "\u0000\u0000\u0503\u189a\u0001\u0000\u0000\u0000\u0505\u189e\u0001\u0000"+ - "\u0000\u0000\u0507\u18b2\u0001\u0000\u0000\u0000\u0509\u18bc\u0001\u0000"+ - "\u0000\u0000\u050b\u18d2\u0001\u0000\u0000\u0000\u050d\u18df\u0001\u0000"+ - "\u0000\u0000\u050f\u18e7\u0001\u0000\u0000\u0000\u0511\u18ef\u0001\u0000"+ - "\u0000\u0000\u0513\u18f9\u0001\u0000\u0000\u0000\u0515\u1906\u0001\u0000"+ - "\u0000\u0000\u0517\u190a\u0001\u0000\u0000\u0000\u0519\u190e\u0001\u0000"+ - "\u0000\u0000\u051b\u1910\u0001\u0000\u0000\u0000\u051d\u1913\u0001\u0000"+ - "\u0000\u0000\u051f\u191c\u0001\u0000\u0000\u0000\u0521\u191f\u0001\u0000"+ - "\u0000\u0000\u0523\u1928\u0001\u0000\u0000\u0000\u0525\u192c\u0001\u0000"+ - "\u0000\u0000\u0527\u1930\u0001\u0000\u0000\u0000\u0529\u1934\u0001\u0000"+ - "\u0000\u0000\u052b\u1938\u0001\u0000\u0000\u0000\u052d\u193b\u0001\u0000"+ - "\u0000\u0000\u052f\u1944\u0001\u0000\u0000\u0000\u0531\u194a\u0001\u0000"+ - "\u0000\u0000\u0533\u194d\u0001\u0000\u0000\u0000\u0535\u1951\u0001\u0000"+ - "\u0000\u0000\u0537\u195a\u0001\u0000\u0000\u0000\u0539\u1961\u0001\u0000"+ - "\u0000\u0000\u053b\u1964\u0001\u0000\u0000\u0000\u053d\u196c\u0001\u0000"+ - "\u0000\u0000\u053f\u196f\u0001\u0000\u0000\u0000\u0541\u1972\u0001\u0000"+ - "\u0000\u0000\u0543\u1975\u0001\u0000\u0000\u0000\u0545\u197d\u0001\u0000"+ - "\u0000\u0000\u0547\u1980\u0001\u0000\u0000\u0000\u0549\u1983\u0001\u0000"+ - "\u0000\u0000\u054b\u1985\u0001\u0000\u0000\u0000\u054d\u19a7\u0001\u0000"+ - "\u0000\u0000\u054f\u19aa\u0001\u0000\u0000\u0000\u0551\u19ae\u0001\u0000"+ - "\u0000\u0000\u0553\u19b6\u0001\u0000\u0000\u0000\u0555\u19c6\u0001\u0000"+ - "\u0000\u0000\u0557\u19d1\u0001\u0000\u0000\u0000\u0559\u19d5\u0001\u0000"+ - "\u0000\u0000\u055b\u19e0\u0001\u0000\u0000\u0000\u055d\u1a07\u0001\u0000"+ - "\u0000\u0000\u055f\u1a3a\u0001\u0000\u0000\u0000\u0561\u1a52\u0001\u0000"+ - "\u0000\u0000\u0563\u1a55\u0001\u0000\u0000\u0000\u0565\u1a57\u0001\u0000"+ - "\u0000\u0000\u0567\u1a5c\u0001\u0000\u0000\u0000\u0569\u1a7b\u0001\u0000"+ - "\u0000\u0000\u056b\u1a7e\u0001\u0000\u0000\u0000\u056d\u1a83\u0001\u0000"+ - "\u0000\u0000\u056f\u1a90\u0001\u0000\u0000\u0000\u0571\u1a93\u0001\u0000"+ - "\u0000\u0000\u0573\u1a98\u0001\u0000\u0000\u0000\u0575\u1a9e\u0001\u0000"+ - "\u0000\u0000\u0577\u1aa3\u0001\u0000\u0000\u0000\u0579\u1aa8\u0001\u0000"+ - "\u0000\u0000\u057b\u1aad\u0001\u0000\u0000\u0000\u057d\u1ab2\u0001\u0000"+ - "\u0000\u0000\u057f\u1ac3\u0001\u0000\u0000\u0000\u0581\u1ac5\u0001\u0000"+ - "\u0000\u0000\u0583\u0584\u0005$\u0000\u0000\u0584\u0006\u0001\u0000\u0000"+ - "\u0000\u0585\u0586\u0005(\u0000\u0000\u0586\b\u0001\u0000\u0000\u0000"+ - "\u0587\u0588\u0005)\u0000\u0000\u0588\n\u0001\u0000\u0000\u0000\u0589"+ - "\u058a\u0005[\u0000\u0000\u058a\f\u0001\u0000\u0000\u0000\u058b\u058c"+ - "\u0005]\u0000\u0000\u058c\u000e\u0001\u0000\u0000\u0000\u058d\u058e\u0005"+ - ",\u0000\u0000\u058e\u0010\u0001\u0000\u0000\u0000\u058f\u0590\u0005;\u0000"+ - "\u0000\u0590\u0012\u0001\u0000\u0000\u0000\u0591\u0592\u0005:\u0000\u0000"+ - "\u0592\u0014\u0001\u0000\u0000\u0000\u0593\u0594\u0005*\u0000\u0000\u0594"+ - "\u0016\u0001\u0000\u0000\u0000\u0595\u0596\u0005=\u0000\u0000\u0596\u0018"+ - "\u0001\u0000\u0000\u0000\u0597\u0598\u0005.\u0000\u0000\u0598\u001a\u0001"+ - "\u0000\u0000\u0000\u0599\u059a\u0005+\u0000\u0000\u059a\u001c\u0001\u0000"+ - "\u0000\u0000\u059b\u059c\u0005-\u0000\u0000\u059c\u001e\u0001\u0000\u0000"+ - "\u0000\u059d\u059e\u0005/\u0000\u0000\u059e \u0001\u0000\u0000\u0000\u059f"+ - "\u05a0\u0005^\u0000\u0000\u05a0\"\u0001\u0000\u0000\u0000\u05a1\u05a2"+ - "\u0005<\u0000\u0000\u05a2$\u0001\u0000\u0000\u0000\u05a3\u05a4\u0005>"+ - "\u0000\u0000\u05a4&\u0001\u0000\u0000\u0000\u05a5\u05a6\u0005<\u0000\u0000"+ - "\u05a6\u05a7\u0005<\u0000\u0000\u05a7(\u0001\u0000\u0000\u0000\u05a8\u05a9"+ - "\u0005>\u0000\u0000\u05a9\u05aa\u0005>\u0000\u0000\u05aa*\u0001\u0000"+ - "\u0000\u0000\u05ab\u05ac\u0005:\u0000\u0000\u05ac\u05ad\u0005=\u0000\u0000"+ - "\u05ad,\u0001\u0000\u0000\u0000\u05ae\u05af\u0005<\u0000\u0000\u05af\u05b0"+ - "\u0005=\u0000\u0000\u05b0.\u0001\u0000\u0000\u0000\u05b1\u05b2\u0005="+ - "\u0000\u0000\u05b2\u05b3\u0005>\u0000\u0000\u05b30\u0001\u0000\u0000\u0000"+ - "\u05b4\u05b5\u0005>\u0000\u0000\u05b5\u05b6\u0005=\u0000\u0000\u05b62"+ - "\u0001\u0000\u0000\u0000\u05b7\u05b8\u0005.\u0000\u0000\u05b8\u05b9\u0005"+ - ".\u0000\u0000\u05b94\u0001\u0000\u0000\u0000\u05ba\u05bb\u0005<\u0000"+ - "\u0000\u05bb\u05bc\u0005>\u0000\u0000\u05bc6\u0001\u0000\u0000\u0000\u05bd"+ - "\u05be\u0005:\u0000\u0000\u05be\u05bf\u0005:\u0000\u0000\u05bf8\u0001"+ - "\u0000\u0000\u0000\u05c0\u05c1\u0005%\u0000\u0000\u05c1:\u0001\u0000\u0000"+ - "\u0000\u05c2\u05c4\u0005$\u0000\u0000\u05c3\u05c5\u0007\u0000\u0000\u0000"+ - "\u05c4\u05c3\u0001\u0000\u0000\u0000\u05c5\u05c6\u0001\u0000\u0000\u0000"+ - "\u05c6\u05c4\u0001\u0000\u0000\u0000\u05c6\u05c7\u0001\u0000\u0000\u0000"+ - "\u05c7<\u0001\u0000\u0000\u0000\u05c8\u05d8\u0003A\u001e\u0000\u05c9\u05cd"+ - "\u0005+\u0000\u0000\u05ca\u05cb\u0005-\u0000\u0000\u05cb\u05cd\u0004\u001c"+ - "\u0000\u0000\u05cc\u05c9\u0001\u0000\u0000\u0000\u05cc\u05ca\u0001\u0000"+ - "\u0000\u0000\u05cd\u05ce\u0001\u0000\u0000\u0000\u05ce\u05cc\u0001\u0000"+ - "\u0000\u0000\u05ce\u05cf\u0001\u0000\u0000\u0000\u05cf\u05d3\u0001\u0000"+ - "\u0000\u0000\u05d0\u05d4\u0003A\u001e\u0000\u05d1\u05d2\u0005/\u0000\u0000"+ - "\u05d2\u05d4\u0004\u001c\u0001\u0000\u05d3\u05d0\u0001\u0000\u0000\u0000"+ - "\u05d3\u05d1\u0001\u0000\u0000\u0000\u05d4\u05d8\u0001\u0000\u0000\u0000"+ - "\u05d5\u05d6\u0005/\u0000\u0000\u05d6\u05d8\u0004\u001c\u0002\u0000\u05d7"+ - "\u05c8\u0001\u0000\u0000\u0000\u05d7\u05cc\u0001\u0000\u0000\u0000\u05d7"+ - "\u05d5\u0001\u0000\u0000\u0000\u05d8\u05d9\u0001\u0000\u0000\u0000\u05d9"+ - "\u05d7\u0001\u0000\u0000\u0000\u05d9\u05da\u0001\u0000\u0000\u0000\u05da"+ - "\u05dd\u0001\u0000\u0000\u0000\u05db\u05dd\u0007\u0001\u0000\u0000\u05dc"+ - "\u05d7\u0001\u0000\u0000\u0000\u05dc\u05db\u0001\u0000\u0000\u0000\u05dd"+ - "\u05de\u0001\u0000\u0000\u0000\u05de\u05df\u0006\u001c\u0000\u0000\u05df"+ - ">\u0001\u0000\u0000\u0000\u05e0\u05e6\u0003C\u001f\u0000\u05e1\u05e2\u0005"+ - "-\u0000\u0000\u05e2\u05e6\u0004\u001d\u0003\u0000\u05e3\u05e4\u0005/\u0000"+ - "\u0000\u05e4\u05e6\u0004\u001d\u0004\u0000\u05e5\u05e0\u0001\u0000\u0000"+ - "\u0000\u05e5\u05e1\u0001\u0000\u0000\u0000\u05e5\u05e3\u0001\u0000\u0000"+ - "\u0000\u05e6\u05e9\u0001\u0000\u0000\u0000\u05e7\u05e5\u0001\u0000\u0000"+ - "\u0000\u05e7\u05e8\u0001\u0000\u0000\u0000\u05e8\u05ea\u0001\u0000\u0000"+ - "\u0000\u05e9\u05e7\u0001\u0000\u0000\u0000\u05ea\u05ec\u0003E \u0000\u05eb"+ - "\u05ed\u0003=\u001c\u0000\u05ec\u05eb\u0001\u0000\u0000\u0000\u05ec\u05ed"+ - "\u0001\u0000\u0000\u0000\u05ed\u05f1\u0001\u0000\u0000\u0000\u05ee\u05f2"+ - "\u0005+\u0000\u0000\u05ef\u05f0\u0005-\u0000\u0000\u05f0\u05f2\u0004\u001d"+ - "\u0005\u0000\u05f1\u05ee\u0001\u0000\u0000\u0000\u05f1\u05ef\u0001\u0000"+ - "\u0000\u0000\u05f2\u05f3\u0001\u0000\u0000\u0000\u05f3\u05f1\u0001\u0000"+ - "\u0000\u0000\u05f3\u05f4\u0001\u0000\u0000\u0000\u05f4\u05f5\u0001\u0000"+ - "\u0000\u0000\u05f5\u05f6\u0006\u001d\u0001\u0000\u05f6@\u0001\u0000\u0000"+ - "\u0000\u05f7\u05f8\u0007\u0002\u0000\u0000\u05f8B\u0001\u0000\u0000\u0000"+ - "\u05f9\u05fa\u0007\u0003\u0000\u0000\u05faD\u0001\u0000\u0000\u0000\u05fb"+ - "\u05fc\u0007\u0004\u0000\u0000\u05fcF\u0001\u0000\u0000\u0000\u05fd\u05fe"+ - "\u0007\u0005\u0000\u0000\u05fe\u05ff\u0007\u0006\u0000\u0000\u05ff\u0600"+ - "\u0007\u0006\u0000\u0000\u0600H\u0001\u0000\u0000\u0000\u0601\u0602\u0007"+ - "\u0005\u0000\u0000\u0602\u0603\u0007\u0007\u0000\u0000\u0603\u0604\u0007"+ - "\u0005\u0000\u0000\u0604\u0605\u0007\u0006\u0000\u0000\u0605\u0606\u0007"+ - "\b\u0000\u0000\u0606\u0607\u0007\t\u0000\u0000\u0607\u0608\u0007\n\u0000"+ - "\u0000\u0608J\u0001\u0000\u0000\u0000\u0609\u060a\u0007\u0005\u0000\u0000"+ - "\u060a\u060b\u0007\u0007\u0000\u0000\u060b\u060c\u0007\u0005\u0000\u0000"+ - "\u060c\u060d\u0007\u0006\u0000\u0000\u060d\u060e\u0007\b\u0000\u0000\u060e"+ - "\u060f\u0007\u000b\u0000\u0000\u060f\u0610\u0007\n\u0000\u0000\u0610L"+ - "\u0001\u0000\u0000\u0000\u0611\u0612\u0007\u0005\u0000\u0000\u0612\u0613"+ - "\u0007\u0007\u0000\u0000\u0613\u0614\u0007\f\u0000\u0000\u0614N\u0001"+ - "\u0000\u0000\u0000\u0615\u0616\u0007\u0005\u0000\u0000\u0616\u0617\u0007"+ - "\u0007\u0000\u0000\u0617\u0618\u0007\b\u0000\u0000\u0618P\u0001\u0000"+ - "\u0000\u0000\u0619\u061a\u0007\u0005\u0000\u0000\u061a\u061b\u0007\r\u0000"+ - "\u0000\u061b\u061c\u0007\r\u0000\u0000\u061c\u061d\u0007\u0005\u0000\u0000"+ - "\u061d\u061e\u0007\b\u0000\u0000\u061eR\u0001\u0000\u0000\u0000\u061f"+ - "\u0620\u0007\u0005\u0000\u0000\u0620\u0621\u0007\t\u0000\u0000\u0621T"+ - "\u0001\u0000\u0000\u0000\u0622\u0623\u0007\u0005\u0000\u0000\u0623\u0624"+ - "\u0007\t\u0000\u0000\u0624\u0625\u0007\u000e\u0000\u0000\u0625V\u0001"+ - "\u0000\u0000\u0000\u0626\u0627\u0007\u0005\u0000\u0000\u0627\u0628\u0007"+ - "\t\u0000\u0000\u0628\u0629\u0007\b\u0000\u0000\u0629\u062a\u0007\u000f"+ - "\u0000\u0000\u062a\u062b\u0007\u000f\u0000\u0000\u062b\u062c\u0007\n\u0000"+ - "\u0000\u062c\u062d\u0007\u0010\u0000\u0000\u062d\u062e\u0007\r\u0000\u0000"+ - "\u062e\u062f\u0007\u0011\u0000\u0000\u062f\u0630\u0007\u000e\u0000\u0000"+ - "\u0630X\u0001\u0000\u0000\u0000\u0631\u0632\u0007\u0012\u0000\u0000\u0632"+ - "\u0633\u0007\u0013\u0000\u0000\u0633\u0634\u0007\u0010\u0000\u0000\u0634"+ - "\u0635\u0007\u0014\u0000\u0000\u0635Z\u0001\u0000\u0000\u0000\u0636\u0637"+ - "\u0007\u000e\u0000\u0000\u0637\u0638\u0007\u0005\u0000\u0000\u0638\u0639"+ - "\u0007\t\u0000\u0000\u0639\u063a\u0007\n\u0000\u0000\u063a\\\u0001\u0000"+ - "\u0000\u0000\u063b\u063c\u0007\u000e\u0000\u0000\u063c\u063d\u0007\u0005"+ - "\u0000\u0000\u063d\u063e\u0007\t\u0000\u0000\u063e\u063f\u0007\u0010\u0000"+ - "\u0000\u063f^\u0001\u0000\u0000\u0000\u0640\u0641\u0007\u000e\u0000\u0000"+ - "\u0641\u0642\u0007\u0014\u0000\u0000\u0642\u0643\u0007\n\u0000\u0000\u0643"+ - "\u0644\u0007\u000e\u0000\u0000\u0644\u0645\u0007\u0015\u0000\u0000\u0645"+ - "`\u0001\u0000\u0000\u0000\u0646\u0647\u0007\u000e\u0000\u0000\u0647\u0648"+ - "\u0007\u0013\u0000\u0000\u0648\u0649\u0007\u0006\u0000\u0000\u0649\u064a"+ - "\u0007\u0006\u0000\u0000\u064a\u064b\u0007\u0005\u0000\u0000\u064b\u064c"+ - "\u0007\u0010\u0000\u0000\u064c\u064d\u0007\n\u0000\u0000\u064db\u0001"+ - "\u0000\u0000\u0000\u064e\u064f\u0007\u000e\u0000\u0000\u064f\u0650\u0007"+ - "\u0013\u0000\u0000\u0650\u0651\u0007\u0006\u0000\u0000\u0651\u0652\u0007"+ - "\u0016\u0000\u0000\u0652\u0653\u0007\u000f\u0000\u0000\u0653\u0654\u0007"+ - "\u0007\u0000\u0000\u0654d\u0001\u0000\u0000\u0000\u0655\u0656\u0007\u000e"+ - "\u0000\u0000\u0656\u0657\u0007\u0013\u0000\u0000\u0657\u0658\u0007\u0007"+ - "\u0000\u0000\u0658\u0659\u0007\t\u0000\u0000\u0659\u065a\u0007\u0010\u0000"+ - "\u0000\u065a\u065b\u0007\r\u0000\u0000\u065b\u065c\u0007\u0005\u0000\u0000"+ - "\u065c\u065d\u0007\u0011\u0000\u0000\u065d\u065e\u0007\u0007\u0000\u0000"+ - "\u065e\u065f\u0007\u0010\u0000\u0000\u065ff\u0001\u0000\u0000\u0000\u0660"+ - "\u0661\u0007\u000e\u0000\u0000\u0661\u0662\u0007\r\u0000\u0000\u0662\u0663"+ - "\u0007\n\u0000\u0000\u0663\u0664\u0007\u0005\u0000\u0000\u0664\u0665\u0007"+ - "\u0010\u0000\u0000\u0665\u0666\u0007\n\u0000\u0000\u0666h\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\u000e\u0000\u0000\u0670\u0671\u0007\u0005\u0000\u0000\u0671"+ - "\u0672\u0007\u0010\u0000\u0000\u0672\u0673\u0007\u0005\u0000\u0000\u0673"+ - "\u0674\u0007\u0006\u0000\u0000\u0674\u0675\u0007\u0013\u0000\u0000\u0675"+ - "\u0676\u0007\u0017\u0000\u0000\u0676j\u0001\u0000\u0000\u0000\u0677\u0678"+ - "\u0007\u000e\u0000\u0000\u0678\u0679\u0007\u0016\u0000\u0000\u0679\u067a"+ - "\u0007\r\u0000\u0000\u067a\u067b\u0007\r\u0000\u0000\u067b\u067c\u0007"+ - "\n\u0000\u0000\u067c\u067d\u0007\u0007\u0000\u0000\u067d\u067e\u0007\u0010"+ - "\u0000\u0000\u067e\u067f\u0005_\u0000\u0000\u067f\u0680\u0007\f\u0000"+ - "\u0000\u0680\u0681\u0007\u0005\u0000\u0000\u0681\u0682\u0007\u0010\u0000"+ - "\u0000\u0682\u0683\u0007\n\u0000\u0000\u0683l\u0001\u0000\u0000\u0000"+ - "\u0684\u0685\u0007\u000e\u0000\u0000\u0685\u0686\u0007\u0016\u0000\u0000"+ - "\u0686\u0687\u0007\r\u0000\u0000\u0687\u0688\u0007\r\u0000\u0000\u0688"+ - "\u0689\u0007\n\u0000\u0000\u0689\u068a\u0007\u0007\u0000\u0000\u068a\u068b"+ - "\u0007\u0010\u0000\u0000\u068b\u068c\u0005_\u0000\u0000\u068c\u068d\u0007"+ - "\r\u0000\u0000\u068d\u068e\u0007\u0013\u0000\u0000\u068e\u068f\u0007\u0006"+ - "\u0000\u0000\u068f\u0690\u0007\n\u0000\u0000\u0690n\u0001\u0000\u0000"+ - "\u0000\u0691\u0692\u0007\u000e\u0000\u0000\u0692\u0693\u0007\u0016\u0000"+ - "\u0000\u0693\u0694\u0007\r\u0000\u0000\u0694\u0695\u0007\r\u0000\u0000"+ - "\u0695\u0696\u0007\n\u0000\u0000\u0696\u0697\u0007\u0007\u0000\u0000\u0697"+ - "\u0698\u0007\u0010\u0000\u0000\u0698\u0699\u0005_\u0000\u0000\u0699\u069a"+ - "\u0007\u0010\u0000\u0000\u069a\u069b\u0007\u0011\u0000\u0000\u069b\u069c"+ - "\u0007\u000f\u0000\u0000\u069c\u069d\u0007\n\u0000\u0000\u069dp\u0001"+ - "\u0000\u0000\u0000\u069e\u069f\u0007\u000e\u0000\u0000\u069f\u06a0\u0007"+ - "\u0016\u0000\u0000\u06a0\u06a1\u0007\r\u0000\u0000\u06a1\u06a2\u0007\r"+ - "\u0000\u0000\u06a2\u06a3\u0007\n\u0000\u0000\u06a3\u06a4\u0007\u0007\u0000"+ - "\u0000\u06a4\u06a5\u0007\u0010\u0000\u0000\u06a5\u06a6\u0005_\u0000\u0000"+ - "\u06a6\u06a7\u0007\u0010\u0000\u0000\u06a7\u06a8\u0007\u0011\u0000\u0000"+ - "\u06a8\u06a9\u0007\u000f\u0000\u0000\u06a9\u06aa\u0007\n\u0000\u0000\u06aa"+ - "\u06ab\u0007\t\u0000\u0000\u06ab\u06ac\u0007\u0010\u0000\u0000\u06ac\u06ad"+ - "\u0007\u0005\u0000\u0000\u06ad\u06ae\u0007\u000f\u0000\u0000\u06ae\u06af"+ - "\u0007\u0018\u0000\u0000\u06afr\u0001\u0000\u0000\u0000\u06b0\u06b1\u0007"+ - "\u000e\u0000\u0000\u06b1\u06b2\u0007\u0016\u0000\u0000\u06b2\u06b3\u0007"+ - "\r\u0000\u0000\u06b3\u06b4\u0007\r\u0000\u0000\u06b4\u06b5\u0007\n\u0000"+ - "\u0000\u06b5\u06b6\u0007\u0007\u0000\u0000\u06b6\u06b7\u0007\u0010\u0000"+ - "\u0000\u06b7\u06b8\u0005_\u0000\u0000\u06b8\u06b9\u0007\u0016\u0000\u0000"+ - "\u06b9\u06ba\u0007\t\u0000\u0000\u06ba\u06bb\u0007\n\u0000\u0000\u06bb"+ - "\u06bc\u0007\r\u0000\u0000\u06bct\u0001\u0000\u0000\u0000\u06bd\u06be"+ - "\u0007\f\u0000\u0000\u06be\u06bf\u0007\n\u0000\u0000\u06bf\u06c0\u0007"+ - "\u0019\u0000\u0000\u06c0\u06c1\u0007\u0005\u0000\u0000\u06c1\u06c2\u0007"+ - "\u0016\u0000\u0000\u06c2\u06c3\u0007\u0006\u0000\u0000\u06c3\u06c4\u0007"+ - "\u0010\u0000\u0000\u06c4v\u0001\u0000\u0000\u0000\u06c5\u06c6\u0007\f"+ - "\u0000\u0000\u06c6\u06c7\u0007\n\u0000\u0000\u06c7\u06c8\u0007\u0019\u0000"+ - "\u0000\u06c8\u06c9\u0007\n\u0000\u0000\u06c9\u06ca\u0007\r\u0000\u0000"+ - "\u06ca\u06cb\u0007\r\u0000\u0000\u06cb\u06cc\u0007\u0005\u0000\u0000\u06cc"+ - "\u06cd\u0007\u0012\u0000\u0000\u06cd\u06ce\u0007\u0006\u0000\u0000\u06ce"+ - "\u06cf\u0007\n\u0000\u0000\u06cfx\u0001\u0000\u0000\u0000\u06d0\u06d1"+ - "\u0007\f\u0000\u0000\u06d1\u06d2\u0007\n\u0000\u0000\u06d2\u06d3\u0007"+ - "\t\u0000\u0000\u06d3\u06d4\u0007\u000e\u0000\u0000\u06d4z\u0001\u0000"+ - "\u0000\u0000\u06d5\u06d6\u0007\f\u0000\u0000\u06d6\u06d7\u0007\u0011\u0000"+ - "\u0000\u06d7\u06d8\u0007\t\u0000\u0000\u06d8\u06d9\u0007\u0010\u0000\u0000"+ - "\u06d9\u06da\u0007\u0011\u0000\u0000\u06da\u06db\u0007\u0007\u0000\u0000"+ - "\u06db\u06dc\u0007\u000e\u0000\u0000\u06dc\u06dd\u0007\u0010\u0000\u0000"+ - "\u06dd|\u0001\u0000\u0000\u0000\u06de\u06df\u0007\f\u0000\u0000\u06df"+ - "\u06e0\u0007\u0013\u0000\u0000\u06e0~\u0001\u0000\u0000\u0000\u06e1\u06e2"+ - "\u0007\n\u0000\u0000\u06e2\u06e3\u0007\u0006\u0000\u0000\u06e3\u06e4\u0007"+ - "\t\u0000\u0000\u06e4\u06e5\u0007\n\u0000\u0000\u06e5\u0080\u0001\u0000"+ - "\u0000\u0000\u06e6\u06e7\u0007\n\u0000\u0000\u06e7\u06e8\u0007\u001a\u0000"+ - "\u0000\u06e8\u06e9\u0007\u000e\u0000\u0000\u06e9\u06ea\u0007\n\u0000\u0000"+ - "\u06ea\u06eb\u0007\u0018\u0000\u0000\u06eb\u06ec\u0007\u0010\u0000\u0000"+ - "\u06ec\u0082\u0001\u0000\u0000\u0000\u06ed\u06ee\u0007\u0019\u0000\u0000"+ - "\u06ee\u06ef\u0007\u0005\u0000\u0000\u06ef\u06f0\u0007\u0006\u0000\u0000"+ - "\u06f0\u06f1\u0007\t\u0000\u0000\u06f1\u06f2\u0007\n\u0000\u0000\u06f2"+ - "\u0084\u0001\u0000\u0000\u0000\u06f3\u06f4\u0007\u0019\u0000\u0000\u06f4"+ - "\u06f5\u0007\n\u0000\u0000\u06f5\u06f6\u0007\u0010\u0000\u0000\u06f6\u06f7"+ - "\u0007\u000e\u0000\u0000\u06f7\u06f8\u0007\u0014\u0000\u0000\u06f8\u0086"+ - "\u0001\u0000\u0000\u0000\u06f9\u06fa\u0007\u0019\u0000\u0000\u06fa\u06fb"+ - "\u0007\u0013\u0000\u0000\u06fb\u06fc\u0007\r\u0000\u0000\u06fc\u0088\u0001"+ - "\u0000\u0000\u0000\u06fd\u06fe\u0007\u0019\u0000\u0000\u06fe\u06ff\u0007"+ - "\u0013\u0000\u0000\u06ff\u0700\u0007\r\u0000\u0000\u0700\u0701\u0007\n"+ - "\u0000\u0000\u0701\u0702\u0007\u0011\u0000\u0000\u0702\u0703\u0007\u0017"+ - "\u0000\u0000\u0703\u0704\u0007\u0007\u0000\u0000\u0704\u008a\u0001\u0000"+ - "\u0000\u0000\u0705\u0706\u0007\u0019\u0000\u0000\u0706\u0707\u0007\r\u0000"+ - "\u0000\u0707\u0708\u0007\u0013\u0000\u0000\u0708\u0709\u0007\u000f\u0000"+ - "\u0000\u0709\u008c\u0001\u0000\u0000\u0000\u070a\u070b\u0007\u0017\u0000"+ - "\u0000\u070b\u070c\u0007\r\u0000\u0000\u070c\u070d\u0007\u0005\u0000\u0000"+ - "\u070d\u070e\u0007\u0007\u0000\u0000\u070e\u070f\u0007\u0010\u0000\u0000"+ - "\u070f\u008e\u0001\u0000\u0000\u0000\u0710\u0711\u0007\u0017\u0000\u0000"+ - "\u0711\u0712\u0007\r\u0000\u0000\u0712\u0713\u0007\u0013\u0000\u0000\u0713"+ - "\u0714\u0007\u0016\u0000\u0000\u0714\u0715\u0007\u0018\u0000\u0000\u0715"+ - "\u0090\u0001\u0000\u0000\u0000\u0716\u0717\u0007\u0014\u0000\u0000\u0717"+ - "\u0718\u0007\u0005\u0000\u0000\u0718\u0719\u0007\u001b\u0000\u0000\u0719"+ - "\u071a\u0007\u0011\u0000\u0000\u071a\u071b\u0007\u0007\u0000\u0000\u071b"+ - "\u071c\u0007\u0017\u0000\u0000\u071c\u0092\u0001\u0000\u0000\u0000\u071d"+ - "\u071e\u0007\u0011\u0000\u0000\u071e\u071f\u0007\u0007\u0000\u0000\u071f"+ - "\u0094\u0001\u0000\u0000\u0000\u0720\u0721\u0007\u0011\u0000\u0000\u0721"+ - "\u0722\u0007\u0007\u0000\u0000\u0722\u0723\u0007\u0011\u0000\u0000\u0723"+ - "\u0724\u0007\u0010\u0000\u0000\u0724\u0725\u0007\u0011\u0000\u0000\u0725"+ - "\u0726\u0007\u0005\u0000\u0000\u0726\u0727\u0007\u0006\u0000\u0000\u0727"+ - "\u0728\u0007\u0006\u0000\u0000\u0728\u0729\u0007\b\u0000\u0000\u0729\u0096"+ - "\u0001\u0000\u0000\u0000\u072a\u072b\u0007\u0011\u0000\u0000\u072b\u072c"+ - "\u0007\u0007\u0000\u0000\u072c\u072d\u0007\u0010\u0000\u0000\u072d\u072e"+ - "\u0007\n\u0000\u0000\u072e\u072f\u0007\r\u0000\u0000\u072f\u0730\u0007"+ - "\t\u0000\u0000\u0730\u0731\u0007\n\u0000\u0000\u0731\u0732\u0007\u000e"+ - "\u0000\u0000\u0732\u0733\u0007\u0010\u0000\u0000\u0733\u0098\u0001\u0000"+ - "\u0000\u0000\u0734\u0735\u0007\u0011\u0000\u0000\u0735\u0736\u0007\u0007"+ - "\u0000\u0000\u0736\u0737\u0007\u0010\u0000\u0000\u0737\u0738\u0007\u0013"+ - "\u0000\u0000\u0738\u009a\u0001\u0000\u0000\u0000\u0739\u073a\u0007\u0006"+ - "\u0000\u0000\u073a\u073b\u0007\u0005\u0000\u0000\u073b\u073c\u0007\u0010"+ - "\u0000\u0000\u073c\u073d\u0007\n\u0000\u0000\u073d\u073e\u0007\r\u0000"+ - "\u0000\u073e\u073f\u0007\u0005\u0000\u0000\u073f\u0740\u0007\u0006\u0000"+ - "\u0000\u0740\u009c\u0001\u0000\u0000\u0000\u0741\u0742\u0007\u0006\u0000"+ - "\u0000\u0742\u0743\u0007\n\u0000\u0000\u0743\u0744\u0007\u0005\u0000\u0000"+ - "\u0744\u0745\u0007\f\u0000\u0000\u0745\u0746\u0007\u0011\u0000\u0000\u0746"+ - "\u0747\u0007\u0007\u0000\u0000\u0747\u0748\u0007\u0017\u0000\u0000\u0748"+ - "\u009e\u0001\u0000\u0000\u0000\u0749\u074a\u0007\u0006\u0000\u0000\u074a"+ - "\u074b\u0007\u0011\u0000\u0000\u074b\u074c\u0007\u000f\u0000\u0000\u074c"+ - "\u074d\u0007\u0011\u0000\u0000\u074d\u074e\u0007\u0010\u0000\u0000\u074e"+ - "\u00a0\u0001\u0000\u0000\u0000\u074f\u0750\u0007\u0006\u0000\u0000\u0750"+ - "\u0751\u0007\u0013\u0000\u0000\u0751\u0752\u0007\u000e\u0000\u0000\u0752"+ - "\u0753\u0007\u0005\u0000\u0000\u0753\u0754\u0007\u0006\u0000\u0000\u0754"+ - "\u0755\u0007\u0010\u0000\u0000\u0755\u0756\u0007\u0011\u0000\u0000\u0756"+ - "\u0757\u0007\u000f\u0000\u0000\u0757\u0758\u0007\n\u0000\u0000\u0758\u00a2"+ - "\u0001\u0000\u0000\u0000\u0759\u075a\u0007\u0006\u0000\u0000\u075a\u075b"+ - "\u0007\u0013\u0000\u0000\u075b\u075c\u0007\u000e\u0000\u0000\u075c\u075d"+ - "\u0007\u0005\u0000\u0000\u075d\u075e\u0007\u0006\u0000\u0000\u075e\u075f"+ - "\u0007\u0010\u0000\u0000\u075f\u0760\u0007\u0011\u0000\u0000\u0760\u0761"+ - "\u0007\u000f\u0000\u0000\u0761\u0762\u0007\n\u0000\u0000\u0762\u0763\u0007"+ - "\t\u0000\u0000\u0763\u0764\u0007\u0010\u0000\u0000\u0764\u0765\u0007\u0005"+ - "\u0000\u0000\u0765\u0766\u0007\u000f\u0000\u0000\u0766\u0767\u0007\u0018"+ - "\u0000\u0000\u0767\u00a4\u0001\u0000\u0000\u0000\u0768\u0769\u0007\u0007"+ - "\u0000\u0000\u0769\u076a\u0007\u0013\u0000\u0000\u076a\u076b\u0007\u0010"+ - "\u0000\u0000\u076b\u00a6\u0001\u0000\u0000\u0000\u076c\u076d\u0007\u0007"+ - "\u0000\u0000\u076d\u076e\u0007\u0016\u0000\u0000\u076e\u076f\u0007\u0006"+ - "\u0000\u0000\u076f\u0770\u0007\u0006\u0000\u0000\u0770\u00a8\u0001\u0000"+ - "\u0000\u0000\u0771\u0772\u0007\u0013\u0000\u0000\u0772\u0773\u0007\u0019"+ - "\u0000\u0000\u0773\u0774\u0007\u0019\u0000\u0000\u0774\u0775\u0007\t\u0000"+ - "\u0000\u0775\u0776\u0007\n\u0000\u0000\u0776\u0777\u0007\u0010\u0000\u0000"+ - "\u0777\u00aa\u0001\u0000\u0000\u0000\u0778\u0779\u0007\u0013\u0000\u0000"+ - "\u0779\u077a\u0007\u0007\u0000\u0000\u077a\u00ac\u0001\u0000\u0000\u0000"+ - "\u077b\u077c\u0007\u0013\u0000\u0000\u077c\u077d\u0007\u0007\u0000\u0000"+ - "\u077d\u077e\u0007\u0006\u0000\u0000\u077e\u077f\u0007\b\u0000\u0000\u077f"+ - "\u00ae\u0001\u0000\u0000\u0000\u0780\u0781\u0007\u0013\u0000\u0000\u0781"+ - "\u0782\u0007\r\u0000\u0000\u0782\u00b0\u0001\u0000\u0000\u0000\u0783\u0784"+ - "\u0007\u0013\u0000\u0000\u0784\u0785\u0007\r\u0000\u0000\u0785\u0786\u0007"+ - "\f\u0000\u0000\u0786\u0787\u0007\n\u0000\u0000\u0787\u0788\u0007\r\u0000"+ - "\u0000\u0788\u00b2\u0001\u0000\u0000\u0000\u0789\u078a\u0007\u0018\u0000"+ - "\u0000\u078a\u078b\u0007\u0006\u0000\u0000\u078b\u078c\u0007\u0005\u0000"+ - "\u0000\u078c\u078d\u0007\u000e\u0000\u0000\u078d\u078e\u0007\u0011\u0000"+ - "\u0000\u078e\u078f\u0007\u0007\u0000\u0000\u078f\u0790\u0007\u0017\u0000"+ - "\u0000\u0790\u00b4\u0001\u0000\u0000\u0000\u0791\u0792\u0007\u0018\u0000"+ - "\u0000\u0792\u0793\u0007\r\u0000\u0000\u0793\u0794\u0007\u0011\u0000\u0000"+ - "\u0794\u0795\u0007\u000f\u0000\u0000\u0795\u0796\u0007\u0005\u0000\u0000"+ - "\u0796\u0797\u0007\r\u0000\u0000\u0797\u0798\u0007\b\u0000\u0000\u0798"+ - "\u00b6\u0001\u0000\u0000\u0000\u0799\u079a\u0007\r\u0000\u0000\u079a\u079b"+ - "\u0007\n\u0000\u0000\u079b\u079c\u0007\u0019\u0000\u0000\u079c\u079d\u0007"+ - "\n\u0000\u0000\u079d\u079e\u0007\r\u0000\u0000\u079e\u079f\u0007\n\u0000"+ - "\u0000\u079f\u07a0\u0007\u0007\u0000\u0000\u07a0\u07a1\u0007\u000e\u0000"+ - "\u0000\u07a1\u07a2\u0007\n\u0000\u0000\u07a2\u07a3\u0007\t\u0000\u0000"+ - "\u07a3\u00b8\u0001\u0000\u0000\u0000\u07a4\u07a5\u0007\r\u0000\u0000\u07a5"+ - "\u07a6\u0007\n\u0000\u0000\u07a6\u07a7\u0007\u0010\u0000\u0000\u07a7\u07a8"+ - "\u0007\u0016\u0000\u0000\u07a8\u07a9\u0007\r\u0000\u0000\u07a9\u07aa\u0007"+ - "\u0007\u0000\u0000\u07aa\u07ab\u0007\u0011\u0000\u0000\u07ab\u07ac\u0007"+ - "\u0007\u0000\u0000\u07ac\u07ad\u0007\u0017\u0000\u0000\u07ad\u00ba\u0001"+ - "\u0000\u0000\u0000\u07ae\u07af\u0007\t\u0000\u0000\u07af\u07b0\u0007\n"+ - "\u0000\u0000\u07b0\u07b1\u0007\u0006\u0000\u0000\u07b1\u07b2\u0007\n\u0000"+ - "\u0000\u07b2\u07b3\u0007\u000e\u0000\u0000\u07b3\u07b4\u0007\u0010\u0000"+ - "\u0000\u07b4\u00bc\u0001\u0000\u0000\u0000\u07b5\u07b6\u0007\t\u0000\u0000"+ - "\u07b6\u07b7\u0007\n\u0000\u0000\u07b7\u07b8\u0007\t\u0000\u0000\u07b8"+ - "\u07b9\u0007\t\u0000\u0000\u07b9\u07ba\u0007\u0011\u0000\u0000\u07ba\u07bb"+ - "\u0007\u0013\u0000\u0000\u07bb\u07bc\u0007\u0007\u0000\u0000\u07bc\u07bd"+ - "\u0005_\u0000\u0000\u07bd\u07be\u0007\u0016\u0000\u0000\u07be\u07bf\u0007"+ - "\t\u0000\u0000\u07bf\u07c0\u0007\n\u0000\u0000\u07c0\u07c1\u0007\r\u0000"+ - "\u0000\u07c1\u00be\u0001\u0000\u0000\u0000\u07c2\u07c3\u0007\t\u0000\u0000"+ - "\u07c3\u07c4\u0007\u0013\u0000\u0000\u07c4\u07c5\u0007\u000f\u0000\u0000"+ - "\u07c5\u07c6\u0007\n\u0000\u0000\u07c6\u00c0\u0001\u0000\u0000\u0000\u07c7"+ - "\u07c8\u0007\t\u0000\u0000\u07c8\u07c9\u0007\b\u0000\u0000\u07c9\u07ca"+ - "\u0007\u000f\u0000\u0000\u07ca\u07cb\u0007\u000f\u0000\u0000\u07cb\u07cc"+ - "\u0007\n\u0000\u0000\u07cc\u07cd\u0007\u0010\u0000\u0000\u07cd\u07ce\u0007"+ - "\r\u0000\u0000\u07ce\u07cf\u0007\u0011\u0000\u0000\u07cf\u07d0\u0007\u000e"+ - "\u0000\u0000\u07d0\u00c2\u0001\u0000\u0000\u0000\u07d1\u07d2\u0007\u0010"+ - "\u0000\u0000\u07d2\u07d3\u0007\u0005\u0000\u0000\u07d3\u07d4\u0007\u0012"+ - "\u0000\u0000\u07d4\u07d5\u0007\u0006\u0000\u0000\u07d5\u07d6\u0007\n\u0000"+ - "\u0000\u07d6\u00c4\u0001\u0000\u0000\u0000\u07d7\u07d8\u0007\u000b\u0000"+ - "\u0000\u07d8\u07d9\u0007\u0010\u0000\u0000\u07d9\u07da\u0007\u0005\u0000"+ - "\u0000\u07da\u07db\u0007\u0012\u0000\u0000\u07db\u07dc\u0007\u0006\u0000"+ - "\u0000\u07dc\u07dd\u0007\n\u0000\u0000\u07dd\u00c6\u0001\u0000\u0000\u0000"+ - "\u07de\u07df\u0007\u0010\u0000\u0000\u07df\u07e0\u0007\u0014\u0000\u0000"+ - "\u07e0\u07e1\u0007\n\u0000\u0000\u07e1\u07e2\u0007\u0007\u0000\u0000\u07e2"+ - "\u00c8\u0001\u0000\u0000\u0000\u07e3\u07e4\u0007\u0010\u0000\u0000\u07e4"+ - "\u07e5\u0007\u0013\u0000\u0000\u07e5\u00ca\u0001\u0000\u0000\u0000\u07e6"+ - "\u07e7\u0007\f\u0000\u0000\u07e7\u07e8\u0007\n\u0000\u0000\u07e8\u07e9"+ - "\u0007\t\u0000\u0000\u07e9\u07ea\u0007\u000e\u0000\u0000\u07ea\u07eb\u0007"+ - "\r\u0000\u0000\u07eb\u07ec\u0007\u0011\u0000\u0000\u07ec\u07ed\u0007\u0012"+ - "\u0000\u0000\u07ed\u07ee\u0007\n\u0000\u0000\u07ee\u00cc\u0001\u0000\u0000"+ - "\u0000\u07ef\u07f0\u0007\u0010\u0000\u0000\u07f0\u07f1\u0007\u0013\u0000"+ - "\u0000\u07f1\u07f2\u0007\u0018\u0000\u0000\u07f2\u07f3\u0007\u0011\u0000"+ - "\u0000\u07f3\u07f4\u0007\u000e\u0000\u0000\u07f4\u00ce\u0001\u0000\u0000"+ - "\u0000\u07f5\u07f6\u0007\u0010\u0000\u0000\u07f6\u07f7\u0007\u0013\u0000"+ - "\u0000\u07f7\u07f8\u0007\u0018\u0000\u0000\u07f8\u07f9\u0007\u0011\u0000"+ - "\u0000\u07f9\u07fa\u0007\u000e\u0000\u0000\u07fa\u07fb\u0007\t\u0000\u0000"+ - "\u07fb\u00d0\u0001\u0000\u0000\u0000\u07fc\u07fd\u0007\t\u0000\u0000\u07fd"+ - "\u07fe\u0007\u0010\u0000\u0000\u07fe\u07ff\u0007\r\u0000\u0000\u07ff\u0800"+ - "\u0007\n\u0000\u0000\u0800\u0801\u0007\u0005\u0000\u0000\u0801\u0802\u0007"+ - "\u000f\u0000\u0000\u0802\u00d2\u0001\u0000\u0000\u0000\u0803\u0804\u0007"+ - "\u000b\u0000\u0000\u0804\u0805\u0007\u001b\u0000\u0000\u0805\u0806\u0007"+ - "\u0011\u0000\u0000\u0806\u0807\u0007\n\u0000\u0000\u0807\u0808\u0007\u001c"+ - "\u0000\u0000\u0808\u00d4\u0001\u0000\u0000\u0000\u0809\u080a\u0007\u000b"+ - "\u0000\u0000\u080a\u080b\u0007\u001b\u0000\u0000\u080b\u080c\u0007\u0011"+ - "\u0000\u0000\u080c\u080d\u0007\n\u0000\u0000\u080d\u080e\u0007\u001c\u0000"+ - "\u0000\u080e\u080f\u0007\t\u0000\u0000\u080f\u00d6\u0001\u0000\u0000\u0000"+ - "\u0810\u0811\u0007\u0010\u0000\u0000\u0811\u0812\u0007\r\u0000\u0000\u0812"+ - "\u0813\u0007\u0005\u0000\u0000\u0813\u0814\u0007\u0011\u0000\u0000\u0814"+ - "\u0815\u0007\u0006\u0000\u0000\u0815\u0816\u0007\u0011\u0000\u0000\u0816"+ - "\u0817\u0007\u0007\u0000\u0000\u0817\u0818\u0007\u0017\u0000\u0000\u0818"+ - "\u00d8\u0001\u0000\u0000\u0000\u0819\u081a\u0007\u0010\u0000\u0000\u081a"+ - "\u081b\u0007\r\u0000\u0000\u081b\u081c\u0007\u0016\u0000\u0000\u081c\u081d"+ - "\u0007\n\u0000\u0000\u081d\u00da\u0001\u0000\u0000\u0000\u081e\u081f\u0007"+ - "\u0016\u0000\u0000\u081f\u0820\u0007\u0007\u0000\u0000\u0820\u0821\u0007"+ - "\u0011\u0000\u0000\u0821\u0822\u0007\u0013\u0000\u0000\u0822\u0823\u0007"+ - "\u0007\u0000\u0000\u0823\u00dc\u0001\u0000\u0000\u0000\u0824\u0825\u0007"+ - "\u0016\u0000\u0000\u0825\u0826\u0007\u0007\u0000\u0000\u0826\u0827\u0007"+ - "\u0011\u0000\u0000\u0827\u0828\u0007\u001d\u0000\u0000\u0828\u0829\u0007"+ - "\u0016\u0000\u0000\u0829\u082a\u0007\n\u0000\u0000\u082a\u00de\u0001\u0000"+ - "\u0000\u0000\u082b\u082c\u0007\u0016\u0000\u0000\u082c\u082d\u0007\t\u0000"+ - "\u0000\u082d\u082e\u0007\n\u0000\u0000\u082e\u082f\u0007\r\u0000\u0000"+ - "\u082f\u00e0\u0001\u0000\u0000\u0000\u0830\u0831\u0007\u0016\u0000\u0000"+ - "\u0831\u0832\u0007\t\u0000\u0000\u0832\u0833\u0007\u0011\u0000\u0000\u0833"+ - "\u0834\u0007\u0007\u0000\u0000\u0834\u0835\u0007\u0017\u0000\u0000\u0835"+ - "\u00e2\u0001\u0000\u0000\u0000\u0836\u0837\u0007\u001b\u0000\u0000\u0837"+ - "\u0838\u0007\u0005\u0000\u0000\u0838\u0839\u0007\r\u0000\u0000\u0839\u083a"+ - "\u0007\u0011\u0000\u0000\u083a\u083b\u0007\u0005\u0000\u0000\u083b\u083c"+ - "\u0007\f\u0000\u0000\u083c\u083d\u0007\u0011\u0000\u0000\u083d\u083e\u0007"+ - "\u000e\u0000\u0000\u083e\u00e4\u0001\u0000\u0000\u0000\u083f\u0840\u0007"+ - "\u001c\u0000\u0000\u0840\u0841\u0007\u0014\u0000\u0000\u0841\u0842\u0007"+ - "\n\u0000\u0000\u0842\u0843\u0007\u0007\u0000\u0000\u0843\u00e6\u0001\u0000"+ - "\u0000\u0000\u0844\u0845\u0007\u001c\u0000\u0000\u0845\u0846\u0007\u0014"+ - "\u0000\u0000\u0846\u0847\u0007\n\u0000\u0000\u0847\u0848\u0007\r\u0000"+ - "\u0000\u0848\u0849\u0007\n\u0000\u0000\u0849\u00e8\u0001\u0000\u0000\u0000"+ - "\u084a\u084b\u0007\u001c\u0000\u0000\u084b\u084c\u0007\u0011\u0000\u0000"+ - "\u084c\u084d\u0007\u0007\u0000\u0000\u084d\u084e\u0007\f\u0000\u0000\u084e"+ - "\u084f\u0007\u0013\u0000\u0000\u084f\u0850\u0007\u001c\u0000\u0000\u0850"+ - "\u00ea\u0001\u0000\u0000\u0000\u0851\u0852\u0007\u001c\u0000\u0000\u0852"+ - "\u0853\u0007\u0011\u0000\u0000\u0853\u0854\u0007\u0010\u0000\u0000\u0854"+ - "\u0855\u0007\u0014\u0000\u0000\u0855\u00ec\u0001\u0000\u0000\u0000\u0856"+ - "\u0857\u0007\u0005\u0000\u0000\u0857\u0858\u0007\u0016\u0000\u0000\u0858"+ - "\u0859\u0007\u0010\u0000\u0000\u0859\u085a\u0007\u0014\u0000\u0000\u085a"+ - "\u085b\u0007\u0013\u0000\u0000\u085b\u085c\u0007\r\u0000\u0000\u085c\u085d"+ - "\u0007\u0011\u0000\u0000\u085d\u085e\u0007\u000b\u0000\u0000\u085e\u085f"+ - "\u0007\u0005\u0000\u0000\u085f\u0860\u0007\u0010\u0000\u0000\u0860\u0861"+ - "\u0007\u0011\u0000\u0000\u0861\u0862\u0007\u0013\u0000\u0000\u0862\u0863"+ - "\u0007\u0007\u0000\u0000\u0863\u00ee\u0001\u0000\u0000\u0000\u0864\u0865"+ - "\u0007\u0012\u0000\u0000\u0865\u0866\u0007\u0011\u0000\u0000\u0866\u0867"+ - "\u0007\u0007\u0000\u0000\u0867\u0868\u0007\u0005\u0000\u0000\u0868\u0869"+ - "\u0007\r\u0000\u0000\u0869\u086a\u0007\b\u0000\u0000\u086a\u00f0\u0001"+ - "\u0000\u0000\u0000\u086b\u086c\u0007\u000e\u0000\u0000\u086c\u086d\u0007"+ - "\u0013\u0000\u0000\u086d\u086e\u0007\u0006\u0000\u0000\u086e\u086f\u0007"+ - "\u0006\u0000\u0000\u086f\u0870\u0007\u0005\u0000\u0000\u0870\u0871\u0007"+ - "\u0010\u0000\u0000\u0871\u0872\u0007\u0011\u0000\u0000\u0872\u0873\u0007"+ - "\u0013\u0000\u0000\u0873\u0874\u0007\u0007\u0000\u0000\u0874\u00f2\u0001"+ - "\u0000\u0000\u0000\u0875\u0876\u0007\u000e\u0000\u0000\u0876\u0877\u0007"+ - "\u0013\u0000\u0000\u0877\u0878\u0007\u0007\u0000\u0000\u0878\u0879\u0007"+ - "\u000e\u0000\u0000\u0879\u087a\u0007\u0016\u0000\u0000\u087a\u087b\u0007"+ - "\r\u0000\u0000\u087b\u087c\u0007\r\u0000\u0000\u087c\u087d\u0007\n\u0000"+ - "\u0000\u087d\u087e\u0007\u0007\u0000\u0000\u087e\u087f\u0007\u0010\u0000"+ - "\u0000\u087f\u0880\u0007\u0006\u0000\u0000\u0880\u0881\u0007\b\u0000\u0000"+ - "\u0881\u00f4\u0001\u0000\u0000\u0000\u0882\u0883\u0007\u000e\u0000\u0000"+ - "\u0883\u0884\u0007\r\u0000\u0000\u0884\u0885\u0007\u0013\u0000\u0000\u0885"+ - "\u0886\u0007\t\u0000\u0000\u0886\u0887\u0007\t\u0000\u0000\u0887\u00f6"+ - "\u0001\u0000\u0000\u0000\u0888\u0889\u0007\u000e\u0000\u0000\u0889\u088a"+ - "\u0007\u0016\u0000\u0000\u088a\u088b\u0007\r\u0000\u0000\u088b\u088c\u0007"+ - "\r\u0000\u0000\u088c\u088d\u0007\n\u0000\u0000\u088d\u088e\u0007\u0007"+ - "\u0000\u0000\u088e\u088f\u0007\u0010\u0000\u0000\u088f\u0890\u0005_\u0000"+ - "\u0000\u0890\u0891\u0007\t\u0000\u0000\u0891\u0892\u0007\u000e\u0000\u0000"+ - "\u0892\u0893\u0007\u0014\u0000\u0000\u0893\u0894\u0007\n\u0000\u0000\u0894"+ - "\u0895\u0007\u000f\u0000\u0000\u0895\u0896\u0007\u0005\u0000\u0000\u0896"+ - "\u00f8\u0001\u0000\u0000\u0000\u0897\u0898\u0007\u0019\u0000\u0000\u0898"+ - "\u0899\u0007\r\u0000\u0000\u0899\u089a\u0007\n\u0000\u0000\u089a\u089b"+ - "\u0007\n\u0000\u0000\u089b\u089c\u0007\u000b\u0000\u0000\u089c\u089d\u0007"+ - "\n\u0000\u0000\u089d\u00fa\u0001\u0000\u0000\u0000\u089e\u089f\u0007\u0019"+ - "\u0000\u0000\u089f\u08a0\u0007\u0016\u0000\u0000\u08a0\u08a1\u0007\u0006"+ - "\u0000\u0000\u08a1\u08a2\u0007\u0006\u0000\u0000\u08a2\u00fc\u0001\u0000"+ - "\u0000\u0000\u08a3\u08a4\u0007\u0011\u0000\u0000\u08a4\u08a5\u0007\u0006"+ - "\u0000\u0000\u08a5\u08a6\u0007\u0011\u0000\u0000\u08a6\u08a7\u0007\u0015"+ - "\u0000\u0000\u08a7\u08a8\u0007\n\u0000\u0000\u08a8\u00fe\u0001\u0000\u0000"+ - "\u0000\u08a9\u08aa\u0007\u0011\u0000\u0000\u08aa\u08ab\u0007\u0007\u0000"+ - "\u0000\u08ab\u08ac\u0007\u0007\u0000\u0000\u08ac\u08ad\u0007\n\u0000\u0000"+ - "\u08ad\u08ae\u0007\r\u0000\u0000\u08ae\u0100\u0001\u0000\u0000\u0000\u08af"+ - "\u08b0\u0007\u0011\u0000\u0000\u08b0\u08b1\u0007\t\u0000\u0000\u08b1\u0102"+ - "\u0001\u0000\u0000\u0000\u08b2\u08b3\u0007\u0011\u0000\u0000\u08b3\u08b4"+ - "\u0007\t\u0000\u0000\u08b4\u08b5\u0007\u0007\u0000\u0000\u08b5\u08b6\u0007"+ - "\u0016\u0000\u0000\u08b6\u08b7\u0007\u0006\u0000\u0000\u08b7\u08b8\u0007"+ - "\u0006\u0000\u0000\u08b8\u0104\u0001\u0000\u0000\u0000\u08b9\u08ba\u0007"+ - "\u001e\u0000\u0000\u08ba\u08bb\u0007\u0013\u0000\u0000\u08bb\u08bc\u0007"+ - "\u0011\u0000\u0000\u08bc\u08bd\u0007\u0007\u0000\u0000\u08bd\u0106\u0001"+ - "\u0000\u0000\u0000\u08be\u08bf\u0007\u0006\u0000\u0000\u08bf\u08c0\u0007"+ - "\n\u0000\u0000\u08c0\u08c1\u0007\u0019\u0000\u0000\u08c1\u08c2\u0007\u0010"+ - "\u0000\u0000\u08c2\u0108\u0001\u0000\u0000\u0000\u08c3\u08c4\u0007\u0006"+ - "\u0000\u0000\u08c4\u08c5\u0007\u0011\u0000\u0000\u08c5\u08c6\u0007\u0015"+ - "\u0000\u0000\u08c6\u08c7\u0007\n\u0000\u0000\u08c7\u010a\u0001\u0000\u0000"+ - "\u0000\u08c8\u08c9\u0007\u0007\u0000\u0000\u08c9\u08ca\u0007\u0005\u0000"+ - "\u0000\u08ca\u08cb\u0007\u0010\u0000\u0000\u08cb\u08cc\u0007\u0016\u0000"+ - "\u0000\u08cc\u08cd\u0007\r\u0000\u0000\u08cd\u08ce\u0007\u0005\u0000\u0000"+ - "\u08ce\u08cf\u0007\u0006\u0000\u0000\u08cf\u010c\u0001\u0000\u0000\u0000"+ - "\u08d0\u08d1\u0007\u0007\u0000\u0000\u08d1\u08d2\u0007\u0013\u0000\u0000"+ - "\u08d2\u08d3\u0007\u0010\u0000\u0000\u08d3\u08d4\u0007\u0007\u0000\u0000"+ - "\u08d4\u08d5\u0007\u0016\u0000\u0000\u08d5\u08d6\u0007\u0006\u0000\u0000"+ - "\u08d6\u08d7\u0007\u0006\u0000\u0000\u08d7\u010e\u0001\u0000\u0000\u0000"+ - "\u08d8\u08d9\u0007\u0013\u0000\u0000\u08d9\u08da\u0007\u0016\u0000\u0000"+ - "\u08da\u08db\u0007\u0010\u0000\u0000\u08db\u08dc\u0007\n\u0000\u0000\u08dc"+ - "\u08dd\u0007\r\u0000\u0000\u08dd\u0110\u0001\u0000\u0000\u0000\u08de\u08df"+ - "\u0007\u0013\u0000\u0000\u08df\u08e0\u0007\u001b\u0000\u0000\u08e0\u08e1"+ - "\u0007\n\u0000\u0000\u08e1\u08e2\u0007\r\u0000\u0000\u08e2\u0112\u0001"+ - "\u0000\u0000\u0000\u08e3\u08e4\u0007\u0013\u0000\u0000\u08e4\u08e5\u0007"+ - "\u001b\u0000\u0000\u08e5\u08e6\u0007\n\u0000\u0000\u08e6\u08e7\u0007\r"+ - "\u0000\u0000\u08e7\u08e8\u0007\u0006\u0000\u0000\u08e8\u08e9\u0007\u0005"+ - "\u0000\u0000\u08e9\u08ea\u0007\u0018\u0000\u0000\u08ea\u08eb\u0007\t\u0000"+ - "\u0000\u08eb\u0114\u0001\u0000\u0000\u0000\u08ec\u08ed\u0007\r\u0000\u0000"+ - "\u08ed\u08ee\u0007\u0011\u0000\u0000\u08ee\u08ef\u0007\u0017\u0000\u0000"+ - "\u08ef\u08f0\u0007\u0014\u0000\u0000\u08f0\u08f1\u0007\u0010\u0000\u0000"+ - "\u08f1\u0116\u0001\u0000\u0000\u0000\u08f2\u08f3\u0007\t\u0000\u0000\u08f3"+ - "\u08f4\u0007\u0011\u0000\u0000\u08f4\u08f5\u0007\u000f\u0000\u0000\u08f5"+ - "\u08f6\u0007\u0011\u0000\u0000\u08f6\u08f7\u0007\u0006\u0000\u0000\u08f7"+ - "\u08f8\u0007\u0005\u0000\u0000\u08f8\u08f9\u0007\r\u0000\u0000\u08f9\u0118"+ - "\u0001\u0000\u0000\u0000\u08fa\u08fb\u0007\u001b\u0000\u0000\u08fb\u08fc"+ - "\u0007\n\u0000\u0000\u08fc\u08fd\u0007\r\u0000\u0000\u08fd\u08fe\u0007"+ - "\u0012\u0000\u0000\u08fe\u08ff\u0007\u0013\u0000\u0000\u08ff\u0900\u0007"+ - "\t\u0000\u0000\u0900\u0901\u0007\n\u0000\u0000\u0901\u011a\u0001\u0000"+ - "\u0000\u0000\u0902\u0903\u0007\u0005\u0000\u0000\u0903\u0904\u0007\u0012"+ - "\u0000\u0000\u0904\u0905\u0007\u0013\u0000\u0000\u0905\u0906\u0007\r\u0000"+ - "\u0000\u0906\u0907\u0007\u0010\u0000\u0000\u0907\u011c\u0001\u0000\u0000"+ - "\u0000\u0908\u0909\u0007\u0005\u0000\u0000\u0909\u090a\u0007\u0012\u0000"+ - "\u0000\u090a\u090b\u0007\t\u0000\u0000\u090b\u090c\u0007\u0013\u0000\u0000"+ - "\u090c\u090d\u0007\u0006\u0000\u0000\u090d\u090e\u0007\u0016\u0000\u0000"+ - "\u090e\u090f\u0007\u0010\u0000\u0000\u090f\u0910\u0007\n\u0000\u0000\u0910"+ - "\u011e\u0001\u0000\u0000\u0000\u0911\u0912\u0007\u0005\u0000\u0000\u0912"+ - "\u0913\u0007\u000e\u0000\u0000\u0913\u0914\u0007\u000e\u0000\u0000\u0914"+ - "\u0915\u0007\n\u0000\u0000\u0915\u0916\u0007\t\u0000\u0000\u0916\u0917"+ - "\u0007\t\u0000\u0000\u0917\u0120\u0001\u0000\u0000\u0000\u0918\u0919\u0007"+ - "\u0005\u0000\u0000\u0919\u091a\u0007\u000e\u0000\u0000\u091a\u091b\u0007"+ - "\u0010\u0000\u0000\u091b\u091c\u0007\u0011\u0000\u0000\u091c\u091d\u0007"+ - "\u0013\u0000\u0000\u091d\u091e\u0007\u0007\u0000\u0000\u091e\u0122\u0001"+ - "\u0000\u0000\u0000\u091f\u0920\u0007\u0005\u0000\u0000\u0920\u0921\u0007"+ - "\f\u0000\u0000\u0921\u0922\u0007\f\u0000\u0000\u0922\u0124\u0001\u0000"+ - "\u0000\u0000\u0923\u0924\u0007\u0005\u0000\u0000\u0924\u0925\u0007\f\u0000"+ - "\u0000\u0925\u0926\u0007\u000f\u0000\u0000\u0926\u0927\u0007\u0011\u0000"+ - "\u0000\u0927\u0928\u0007\u0007\u0000\u0000\u0928\u0126\u0001\u0000\u0000"+ - "\u0000\u0929\u092a\u0007\u0005\u0000\u0000\u092a\u092b\u0007\u0019\u0000"+ - "\u0000\u092b\u092c\u0007\u0010\u0000\u0000\u092c\u092d\u0007\n\u0000\u0000"+ - "\u092d\u092e\u0007\r\u0000\u0000\u092e\u0128\u0001\u0000\u0000\u0000\u092f"+ - "\u0930\u0007\u0005\u0000\u0000\u0930\u0931\u0007\u0017\u0000\u0000\u0931"+ - "\u0932\u0007\u0017\u0000\u0000\u0932\u0933\u0007\r\u0000\u0000\u0933\u0934"+ - "\u0007\n\u0000\u0000\u0934\u0935\u0007\u0017\u0000\u0000\u0935\u0936\u0007"+ - "\u0005\u0000\u0000\u0936\u0937\u0007\u0010\u0000\u0000\u0937\u0938\u0007"+ - "\n\u0000\u0000\u0938\u012a\u0001\u0000\u0000\u0000\u0939\u093a\u0007\u0005"+ - "\u0000\u0000\u093a\u093b\u0007\u0006\u0000\u0000\u093b\u093c\u0007\t\u0000"+ - "\u0000\u093c\u093d\u0007\u0013\u0000\u0000\u093d\u012c\u0001\u0000\u0000"+ - "\u0000\u093e\u093f\u0007\u0005\u0000\u0000\u093f\u0940\u0007\u0006\u0000"+ - "\u0000\u0940\u0941\u0007\u0010\u0000\u0000\u0941\u0942\u0007\n\u0000\u0000"+ - "\u0942\u0943\u0007\r\u0000\u0000\u0943\u012e\u0001\u0000\u0000\u0000\u0944"+ - "\u0945\u0007\u0005\u0000\u0000\u0945\u0946\u0007\u0006\u0000\u0000\u0946"+ - "\u0947\u0007\u001c\u0000\u0000\u0947\u0948\u0007\u0005\u0000\u0000\u0948"+ - "\u0949\u0007\b\u0000\u0000\u0949\u094a\u0007\t\u0000\u0000\u094a\u0130"+ - "\u0001\u0000\u0000\u0000\u094b\u094c\u0007\u0005\u0000\u0000\u094c\u094d"+ - "\u0007\t\u0000\u0000\u094d\u094e\u0007\t\u0000\u0000\u094e\u094f\u0007"+ - "\n\u0000\u0000\u094f\u0950\u0007\r\u0000\u0000\u0950\u0951\u0007\u0010"+ - "\u0000\u0000\u0951\u0952\u0007\u0011\u0000\u0000\u0952\u0953\u0007\u0013"+ - "\u0000\u0000\u0953\u0954\u0007\u0007\u0000\u0000\u0954\u0132\u0001\u0000"+ - "\u0000\u0000\u0955\u0956\u0007\u0005\u0000\u0000\u0956\u0957\u0007\t\u0000"+ - "\u0000\u0957\u0958\u0007\t\u0000\u0000\u0958\u0959\u0007\u0011\u0000\u0000"+ - "\u0959\u095a\u0007\u0017\u0000\u0000\u095a\u095b\u0007\u0007\u0000\u0000"+ - "\u095b\u095c\u0007\u000f\u0000\u0000\u095c\u095d\u0007\n\u0000\u0000\u095d"+ - "\u095e\u0007\u0007\u0000\u0000\u095e\u095f\u0007\u0010\u0000\u0000\u095f"+ - "\u0134\u0001\u0000\u0000\u0000\u0960\u0961\u0007\u0005\u0000\u0000\u0961"+ - "\u0962\u0007\u0010\u0000\u0000\u0962\u0136\u0001\u0000\u0000\u0000\u0963"+ - "\u0964\u0007\u0005\u0000\u0000\u0964\u0965\u0007\u0010\u0000\u0000\u0965"+ - "\u0966\u0007\u0010\u0000\u0000\u0966\u0967\u0007\r\u0000\u0000\u0967\u0968"+ - "\u0007\u0011\u0000\u0000\u0968\u0969\u0007\u0012\u0000\u0000\u0969\u096a"+ - "\u0007\u0016\u0000\u0000\u096a\u096b\u0007\u0010\u0000\u0000\u096b\u096c"+ - "\u0007\n\u0000\u0000\u096c\u0138\u0001\u0000\u0000\u0000\u096d\u096e\u0007"+ - "\u0012\u0000\u0000\u096e\u096f\u0007\u0005\u0000\u0000\u096f\u0970\u0007"+ - "\u000e\u0000\u0000\u0970\u0971\u0007\u0015\u0000\u0000\u0971\u0972\u0007"+ - "\u001c\u0000\u0000\u0972\u0973\u0007\u0005\u0000\u0000\u0973\u0974\u0007"+ - "\r\u0000\u0000\u0974\u0975\u0007\f\u0000\u0000\u0975\u013a\u0001\u0000"+ - "\u0000\u0000\u0976\u0977\u0007\u0012\u0000\u0000\u0977\u0978\u0007\n\u0000"+ - "\u0000\u0978\u0979\u0007\u0019\u0000\u0000\u0979\u097a\u0007\u0013\u0000"+ - "\u0000\u097a\u097b\u0007\r\u0000\u0000\u097b\u097c\u0007\n\u0000\u0000"+ - "\u097c\u013c\u0001\u0000\u0000\u0000\u097d\u097e\u0007\u0012\u0000\u0000"+ - "\u097e\u097f\u0007\n\u0000\u0000\u097f\u0980\u0007\u0017\u0000\u0000\u0980"+ - "\u0981\u0007\u0011\u0000\u0000\u0981\u0982\u0007\u0007\u0000\u0000\u0982"+ - "\u013e\u0001\u0000\u0000\u0000\u0983\u0984\u0007\u0012\u0000\u0000\u0984"+ - "\u0985\u0007\b\u0000\u0000\u0985\u0140\u0001\u0000\u0000\u0000\u0986\u0987"+ - "\u0007\u000e\u0000\u0000\u0987\u0988\u0007\u0005\u0000\u0000\u0988\u0989"+ - "\u0007\u000e\u0000\u0000\u0989\u098a\u0007\u0014\u0000\u0000\u098a\u098b"+ - "\u0007\n\u0000\u0000\u098b\u0142\u0001\u0000\u0000\u0000\u098c\u098d\u0007"+ - "\u000e\u0000\u0000\u098d\u098e\u0007\u0005\u0000\u0000\u098e\u098f\u0007"+ - "\u0006\u0000\u0000\u098f\u0990\u0007\u0006\u0000\u0000\u0990\u0991\u0007"+ - "\n\u0000\u0000\u0991\u0992\u0007\f\u0000\u0000\u0992\u0144\u0001\u0000"+ - "\u0000\u0000\u0993\u0994\u0007\u000e\u0000\u0000\u0994\u0995\u0007\u0005"+ - "\u0000\u0000\u0995\u0996\u0007\t\u0000\u0000\u0996\u0997\u0007\u000e\u0000"+ - "\u0000\u0997\u0998\u0007\u0005\u0000\u0000\u0998\u0999\u0007\f\u0000\u0000"+ - "\u0999\u099a\u0007\n\u0000\u0000\u099a\u0146\u0001\u0000\u0000\u0000\u099b"+ - "\u099c\u0007\u000e\u0000\u0000\u099c\u099d\u0007\u0005\u0000\u0000\u099d"+ - "\u099e\u0007\t\u0000\u0000\u099e\u099f\u0007\u000e\u0000\u0000\u099f\u09a0"+ - "\u0007\u0005\u0000\u0000\u09a0\u09a1\u0007\f\u0000\u0000\u09a1\u09a2\u0007"+ - "\n\u0000\u0000\u09a2\u09a3\u0007\f\u0000\u0000\u09a3\u0148\u0001\u0000"+ - "\u0000\u0000\u09a4\u09a5\u0007\u000e\u0000\u0000\u09a5\u09a6\u0007\u0005"+ - "\u0000\u0000\u09a6\u09a7\u0007\u0010\u0000\u0000\u09a7\u09a8\u0007\u0005"+ - "\u0000\u0000\u09a8\u09a9\u0007\u0006\u0000\u0000\u09a9\u09aa\u0007\u0013"+ - "\u0000\u0000\u09aa\u09ab\u0007\u0017\u0000\u0000\u09ab\u014a\u0001\u0000"+ - "\u0000\u0000\u09ac\u09ad\u0007\u000e\u0000\u0000\u09ad\u09ae\u0007\u0014"+ - "\u0000\u0000\u09ae\u09af\u0007\u0005\u0000\u0000\u09af\u09b0\u0007\u0011"+ - "\u0000\u0000\u09b0\u09b1\u0007\u0007\u0000\u0000\u09b1\u014c\u0001\u0000"+ - "\u0000\u0000\u09b2\u09b3\u0007\u000e\u0000\u0000\u09b3\u09b4\u0007\u0014"+ - "\u0000\u0000\u09b4\u09b5\u0007\u0005\u0000\u0000\u09b5\u09b6\u0007\r\u0000"+ - "\u0000\u09b6\u09b7\u0007\u0005\u0000\u0000\u09b7\u09b8\u0007\u000e\u0000"+ - "\u0000\u09b8\u09b9\u0007\u0010\u0000\u0000\u09b9\u09ba\u0007\n\u0000\u0000"+ - "\u09ba\u09bb\u0007\r\u0000\u0000\u09bb\u09bc\u0007\u0011\u0000\u0000\u09bc"+ - "\u09bd\u0007\t\u0000\u0000\u09bd\u09be\u0007\u0010\u0000\u0000\u09be\u09bf"+ - "\u0007\u0011\u0000\u0000\u09bf\u09c0\u0007\u000e\u0000\u0000\u09c0\u09c1"+ - "\u0007\t\u0000\u0000\u09c1\u014e\u0001\u0000\u0000\u0000\u09c2\u09c3\u0007"+ - "\u000e\u0000\u0000\u09c3\u09c4\u0007\u0014\u0000\u0000\u09c4\u09c5\u0007"+ - "\n\u0000\u0000\u09c5\u09c6\u0007\u000e\u0000\u0000\u09c6\u09c7\u0007\u0015"+ - "\u0000\u0000\u09c7\u09c8\u0007\u0018\u0000\u0000\u09c8\u09c9\u0007\u0013"+ - "\u0000\u0000\u09c9\u09ca\u0007\u0011\u0000\u0000\u09ca\u09cb\u0007\u0007"+ - "\u0000\u0000\u09cb\u09cc\u0007\u0010\u0000\u0000\u09cc\u0150\u0001\u0000"+ - "\u0000\u0000\u09cd\u09ce\u0007\u000e\u0000\u0000\u09ce\u09cf\u0007\u0006"+ - "\u0000\u0000\u09cf\u09d0\u0007\u0005\u0000\u0000\u09d0\u09d1\u0007\t\u0000"+ - "\u0000\u09d1\u09d2\u0007\t\u0000\u0000\u09d2\u0152\u0001\u0000\u0000\u0000"+ - "\u09d3\u09d4\u0007\u000e\u0000\u0000\u09d4\u09d5\u0007\u0006\u0000\u0000"+ - "\u09d5\u09d6\u0007\u0013\u0000\u0000\u09d6\u09d7\u0007\t\u0000\u0000\u09d7"+ - "\u09d8\u0007\n\u0000\u0000\u09d8\u0154\u0001\u0000\u0000\u0000\u09d9\u09da"+ - "\u0007\u000e\u0000\u0000\u09da\u09db\u0007\u0006\u0000\u0000\u09db\u09dc"+ - "\u0007\u0016\u0000\u0000\u09dc\u09dd\u0007\t\u0000\u0000\u09dd\u09de\u0007"+ - "\u0010\u0000\u0000\u09de\u09df\u0007\n\u0000\u0000\u09df\u09e0\u0007\r"+ - "\u0000\u0000\u09e0\u0156\u0001\u0000\u0000\u0000\u09e1\u09e2\u0007\u000e"+ - "\u0000\u0000\u09e2\u09e3\u0007\u0013\u0000\u0000\u09e3\u09e4\u0007\u000f"+ - "\u0000\u0000\u09e4\u09e5\u0007\u000f\u0000\u0000\u09e5\u09e6\u0007\n\u0000"+ - "\u0000\u09e6\u09e7\u0007\u0007\u0000\u0000\u09e7\u09e8\u0007\u0010\u0000"+ - "\u0000\u09e8\u0158\u0001\u0000\u0000\u0000\u09e9\u09ea\u0007\u000e\u0000"+ - "\u0000\u09ea\u09eb\u0007\u0013\u0000\u0000\u09eb\u09ec\u0007\u000f\u0000"+ - "\u0000\u09ec\u09ed\u0007\u000f\u0000\u0000\u09ed\u09ee\u0007\n\u0000\u0000"+ - "\u09ee\u09ef\u0007\u0007\u0000\u0000\u09ef\u09f0\u0007\u0010\u0000\u0000"+ - "\u09f0\u09f1\u0007\t\u0000\u0000\u09f1\u015a\u0001\u0000\u0000\u0000\u09f2"+ - "\u09f3\u0007\u000e\u0000\u0000\u09f3\u09f4\u0007\u0013\u0000\u0000\u09f4"+ - "\u09f5\u0007\u000f\u0000\u0000\u09f5\u09f6\u0007\u000f\u0000\u0000\u09f6"+ - "\u09f7\u0007\u0011\u0000\u0000\u09f7\u09f8\u0007\u0010\u0000\u0000\u09f8"+ - "\u015c\u0001\u0000\u0000\u0000\u09f9\u09fa\u0007\u000e\u0000\u0000\u09fa"+ - "\u09fb\u0007\u0013\u0000\u0000\u09fb\u09fc\u0007\u000f\u0000\u0000\u09fc"+ - "\u09fd\u0007\u000f\u0000\u0000\u09fd\u09fe\u0007\u0011\u0000\u0000\u09fe"+ - "\u09ff\u0007\u0010\u0000\u0000\u09ff\u0a00\u0007\u0010\u0000\u0000\u0a00"+ - "\u0a01\u0007\n\u0000\u0000\u0a01\u0a02\u0007\f\u0000\u0000\u0a02\u015e"+ - "\u0001\u0000\u0000\u0000\u0a03\u0a04\u0007\u000e\u0000\u0000\u0a04\u0a05"+ - "\u0007\u0013\u0000\u0000\u0a05\u0a06\u0007\u0007\u0000\u0000\u0a06\u0a07"+ - "\u0007\u0019\u0000\u0000\u0a07\u0a08\u0007\u0011\u0000\u0000\u0a08\u0a09"+ - "\u0007\u0017\u0000\u0000\u0a09\u0a0a\u0007\u0016\u0000\u0000\u0a0a\u0a0b"+ - "\u0007\r\u0000\u0000\u0a0b\u0a0c\u0007\u0005\u0000\u0000\u0a0c\u0a0d\u0007"+ - "\u0010\u0000\u0000\u0a0d\u0a0e\u0007\u0011\u0000\u0000\u0a0e\u0a0f\u0007"+ - "\u0013\u0000\u0000\u0a0f\u0a10\u0007\u0007\u0000\u0000\u0a10\u0160\u0001"+ - "\u0000\u0000\u0000\u0a11\u0a12\u0007\u000e\u0000\u0000\u0a12\u0a13\u0007"+ - "\u0013\u0000\u0000\u0a13\u0a14\u0007\u0007\u0000\u0000\u0a14\u0a15\u0007"+ - "\u0007\u0000\u0000\u0a15\u0a16\u0007\n\u0000\u0000\u0a16\u0a17\u0007\u000e"+ - "\u0000\u0000\u0a17\u0a18\u0007\u0010\u0000\u0000\u0a18\u0a19\u0007\u0011"+ - "\u0000\u0000\u0a19\u0a1a\u0007\u0013\u0000\u0000\u0a1a\u0a1b\u0007\u0007"+ - "\u0000\u0000\u0a1b\u0162\u0001\u0000\u0000\u0000\u0a1c\u0a1d\u0007\u000e"+ - "\u0000\u0000\u0a1d\u0a1e\u0007\u0013\u0000\u0000\u0a1e\u0a1f\u0007\u0007"+ - "\u0000\u0000\u0a1f\u0a20\u0007\t\u0000\u0000\u0a20\u0a21\u0007\u0010\u0000"+ - "\u0000\u0a21\u0a22\u0007\r\u0000\u0000\u0a22\u0a23\u0007\u0005\u0000\u0000"+ - "\u0a23\u0a24\u0007\u0011\u0000\u0000\u0a24\u0a25\u0007\u0007\u0000\u0000"+ - "\u0a25\u0a26\u0007\u0010\u0000\u0000\u0a26\u0a27\u0007\t\u0000\u0000\u0a27"+ - "\u0164\u0001\u0000\u0000\u0000\u0a28\u0a29\u0007\u000e\u0000\u0000\u0a29"+ - "\u0a2a\u0007\u0013\u0000\u0000\u0a2a\u0a2b\u0007\u0007\u0000\u0000\u0a2b"+ - "\u0a2c\u0007\u0010\u0000\u0000\u0a2c\u0a2d\u0007\n\u0000\u0000\u0a2d\u0a2e"+ - "\u0007\u0007\u0000\u0000\u0a2e\u0a2f\u0007\u0010\u0000\u0000\u0a2f\u0166"+ - "\u0001\u0000\u0000\u0000\u0a30\u0a31\u0007\u000e\u0000\u0000\u0a31\u0a32"+ - "\u0007\u0013\u0000\u0000\u0a32\u0a33\u0007\u0007\u0000\u0000\u0a33\u0a34"+ - "\u0007\u0010\u0000\u0000\u0a34\u0a35\u0007\u0011\u0000\u0000\u0a35\u0a36"+ - "\u0007\u0007\u0000\u0000\u0a36\u0a37\u0007\u0016\u0000\u0000\u0a37\u0a38"+ - "\u0007\n\u0000\u0000\u0a38\u0168\u0001\u0000\u0000\u0000\u0a39\u0a3a\u0007"+ - "\u000e\u0000\u0000\u0a3a\u0a3b\u0007\u0013\u0000\u0000\u0a3b\u0a3c\u0007"+ - "\u0007\u0000\u0000\u0a3c\u0a3d\u0007\u001b\u0000\u0000\u0a3d\u0a3e\u0007"+ - "\n\u0000\u0000\u0a3e\u0a3f\u0007\r\u0000\u0000\u0a3f\u0a40\u0007\t\u0000"+ - "\u0000\u0a40\u0a41\u0007\u0011\u0000\u0000\u0a41\u0a42\u0007\u0013\u0000"+ - "\u0000\u0a42\u0a43\u0007\u0007\u0000\u0000\u0a43\u016a\u0001\u0000\u0000"+ - "\u0000\u0a44\u0a45\u0007\u000e\u0000\u0000\u0a45\u0a46\u0007\u0013\u0000"+ - "\u0000\u0a46\u0a47\u0007\u0018\u0000\u0000\u0a47\u0a48\u0007\b\u0000\u0000"+ - "\u0a48\u016c\u0001\u0000\u0000\u0000\u0a49\u0a4a\u0007\u000e\u0000\u0000"+ - "\u0a4a\u0a4b\u0007\u0013\u0000\u0000\u0a4b\u0a4c\u0007\t\u0000\u0000\u0a4c"+ - "\u0a4d\u0007\u0010\u0000\u0000\u0a4d\u016e\u0001\u0000\u0000\u0000\u0a4e"+ - "\u0a4f\u0007\u000e\u0000\u0000\u0a4f\u0a50\u0007\t\u0000\u0000\u0a50\u0a51"+ - "\u0007\u001b\u0000\u0000\u0a51\u0170\u0001\u0000\u0000\u0000\u0a52\u0a53"+ - "\u0007\u000e\u0000\u0000\u0a53\u0a54\u0007\u0016\u0000\u0000\u0a54\u0a55"+ - "\u0007\r\u0000\u0000\u0a55\u0a56\u0007\t\u0000\u0000\u0a56\u0a57\u0007"+ - "\u0013\u0000\u0000\u0a57\u0a58\u0007\r\u0000\u0000\u0a58\u0172\u0001\u0000"+ - "\u0000\u0000\u0a59\u0a5a\u0007\u000e\u0000\u0000\u0a5a\u0a5b\u0007\b\u0000"+ - "\u0000\u0a5b\u0a5c\u0007\u000e\u0000\u0000\u0a5c\u0a5d\u0007\u0006\u0000"+ - "\u0000\u0a5d\u0a5e\u0007\n\u0000\u0000\u0a5e\u0174\u0001\u0000\u0000\u0000"+ - "\u0a5f\u0a60\u0007\f\u0000\u0000\u0a60\u0a61\u0007\u0005\u0000\u0000\u0a61"+ - "\u0a62\u0007\u0010\u0000\u0000\u0a62\u0a63\u0007\u0005\u0000\u0000\u0a63"+ - "\u0176\u0001\u0000\u0000\u0000\u0a64\u0a65\u0007\f\u0000\u0000\u0a65\u0a66"+ - "\u0007\u0005\u0000\u0000\u0a66\u0a67\u0007\u0010\u0000\u0000\u0a67\u0a68"+ - "\u0007\u0005\u0000\u0000\u0a68\u0a69\u0007\u0012\u0000\u0000\u0a69\u0a6a"+ - "\u0007\u0005\u0000\u0000\u0a6a\u0a6b\u0007\t\u0000\u0000\u0a6b\u0a6c\u0007"+ - "\n\u0000\u0000\u0a6c\u0178\u0001\u0000\u0000\u0000\u0a6d\u0a6e\u0007\f"+ - "\u0000\u0000\u0a6e\u0a6f\u0007\u0005\u0000\u0000\u0a6f\u0a70\u0007\b\u0000"+ - "\u0000\u0a70\u017a\u0001\u0000\u0000\u0000\u0a71\u0a72\u0007\f\u0000\u0000"+ - "\u0a72\u0a73\u0007\n\u0000\u0000\u0a73\u0a74\u0007\u0005\u0000\u0000\u0a74"+ - "\u0a75\u0007\u0006\u0000\u0000\u0a75\u0a76\u0007\u0006\u0000\u0000\u0a76"+ - "\u0a77\u0007\u0013\u0000\u0000\u0a77\u0a78\u0007\u000e\u0000\u0000\u0a78"+ - "\u0a79\u0007\u0005\u0000\u0000\u0a79\u0a7a\u0007\u0010\u0000\u0000\u0a7a"+ - "\u0a7b\u0007\n\u0000\u0000\u0a7b\u017c\u0001\u0000\u0000\u0000\u0a7c\u0a7d"+ - "\u0007\f\u0000\u0000\u0a7d\u0a7e\u0007\n\u0000\u0000\u0a7e\u0a7f\u0007"+ - "\u000e\u0000\u0000\u0a7f\u0a80\u0007\u0006\u0000\u0000\u0a80\u0a81\u0007"+ - "\u0005\u0000\u0000\u0a81\u0a82\u0007\r\u0000\u0000\u0a82\u0a83\u0007\n"+ - "\u0000\u0000\u0a83\u017e\u0001\u0000\u0000\u0000\u0a84\u0a85\u0007\f\u0000"+ - "\u0000\u0a85\u0a86\u0007\n\u0000\u0000\u0a86\u0a87\u0007\u0019\u0000\u0000"+ - "\u0a87\u0a88\u0007\u0005\u0000\u0000\u0a88\u0a89\u0007\u0016\u0000\u0000"+ - "\u0a89\u0a8a\u0007\u0006\u0000\u0000\u0a8a\u0a8b\u0007\u0010\u0000\u0000"+ - "\u0a8b\u0a8c\u0007\t\u0000\u0000\u0a8c\u0180\u0001\u0000\u0000\u0000\u0a8d"+ - "\u0a8e\u0007\f\u0000\u0000\u0a8e\u0a8f\u0007\n\u0000\u0000\u0a8f\u0a90"+ - "\u0007\u0019\u0000\u0000\u0a90\u0a91\u0007\n\u0000\u0000\u0a91\u0a92\u0007"+ - "\r\u0000\u0000\u0a92\u0a93\u0007\r\u0000\u0000\u0a93\u0a94\u0007\n\u0000"+ - "\u0000\u0a94\u0a95\u0007\f\u0000\u0000\u0a95\u0182\u0001\u0000\u0000\u0000"+ - "\u0a96\u0a97\u0007\f\u0000\u0000\u0a97\u0a98\u0007\n\u0000\u0000\u0a98"+ - "\u0a99\u0007\u0019\u0000\u0000\u0a99\u0a9a\u0007\u0011\u0000\u0000\u0a9a"+ - "\u0a9b\u0007\u0007\u0000\u0000\u0a9b\u0a9c\u0007\n\u0000\u0000\u0a9c\u0a9d"+ - "\u0007\r\u0000\u0000\u0a9d\u0184\u0001\u0000\u0000\u0000\u0a9e\u0a9f\u0007"+ - "\f\u0000\u0000\u0a9f\u0aa0\u0007\n\u0000\u0000\u0aa0\u0aa1\u0007\u0006"+ - "\u0000\u0000\u0aa1\u0aa2\u0007\n\u0000\u0000\u0aa2\u0aa3\u0007\u0010\u0000"+ - "\u0000\u0aa3\u0aa4\u0007\n\u0000\u0000\u0aa4\u0186\u0001\u0000\u0000\u0000"+ - "\u0aa5\u0aa6\u0007\f\u0000\u0000\u0aa6\u0aa7\u0007\n\u0000\u0000\u0aa7"+ - "\u0aa8\u0007\u0006\u0000\u0000\u0aa8\u0aa9\u0007\u0011\u0000\u0000\u0aa9"+ - "\u0aaa\u0007\u000f\u0000\u0000\u0aaa\u0aab\u0007\u0011\u0000\u0000\u0aab"+ - "\u0aac\u0007\u0010\u0000\u0000\u0aac\u0aad\u0007\n\u0000\u0000\u0aad\u0aae"+ - "\u0007\r\u0000\u0000\u0aae\u0188\u0001\u0000\u0000\u0000\u0aaf\u0ab0\u0007"+ - "\f\u0000\u0000\u0ab0\u0ab1\u0007\n\u0000\u0000\u0ab1\u0ab2\u0007\u0006"+ - "\u0000\u0000\u0ab2\u0ab3\u0007\u0011\u0000\u0000\u0ab3\u0ab4\u0007\u000f"+ - "\u0000\u0000\u0ab4\u0ab5\u0007\u0011\u0000\u0000\u0ab5\u0ab6\u0007\u0010"+ - "\u0000\u0000\u0ab6\u0ab7\u0007\n\u0000\u0000\u0ab7\u0ab8\u0007\r\u0000"+ - "\u0000\u0ab8\u0ab9\u0007\t\u0000\u0000\u0ab9\u018a\u0001\u0000\u0000\u0000"+ - "\u0aba\u0abb\u0007\f\u0000\u0000\u0abb\u0abc\u0007\u0011\u0000\u0000\u0abc"+ - "\u0abd\u0007\u000e\u0000\u0000\u0abd\u0abe\u0007\u0010\u0000\u0000\u0abe"+ - "\u0abf\u0007\u0011\u0000\u0000\u0abf\u0ac0\u0007\u0013\u0000\u0000\u0ac0"+ - "\u0ac1\u0007\u0007\u0000\u0000\u0ac1\u0ac2\u0007\u0005\u0000\u0000\u0ac2"+ - "\u0ac3\u0007\r\u0000\u0000\u0ac3\u0ac4\u0007\b\u0000\u0000\u0ac4\u018c"+ - "\u0001\u0000\u0000\u0000\u0ac5\u0ac6\u0007\f\u0000\u0000\u0ac6\u0ac7\u0007"+ - "\u0011\u0000\u0000\u0ac7\u0ac8\u0007\t\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\u018e\u0001\u0000\u0000"+ - "\u0000\u0acd\u0ace\u0007\f\u0000\u0000\u0ace\u0acf\u0007\u0011\u0000\u0000"+ - "\u0acf\u0ad0\u0007\t\u0000\u0000\u0ad0\u0ad1\u0007\u000e\u0000\u0000\u0ad1"+ - "\u0ad2\u0007\u0005\u0000\u0000\u0ad2\u0ad3\u0007\r\u0000\u0000\u0ad3\u0ad4"+ - "\u0007\f\u0000\u0000\u0ad4\u0190\u0001\u0000\u0000\u0000\u0ad5\u0ad6\u0007"+ - "\f\u0000\u0000\u0ad6\u0ad7\u0007\u0013\u0000\u0000\u0ad7\u0ad8\u0007\u000e"+ - "\u0000\u0000\u0ad8\u0ad9\u0007\u0016\u0000\u0000\u0ad9\u0ada\u0007\u000f"+ - "\u0000\u0000\u0ada\u0adb\u0007\n\u0000\u0000\u0adb\u0adc\u0007\u0007\u0000"+ - "\u0000\u0adc\u0add\u0007\u0010\u0000\u0000\u0add\u0192\u0001\u0000\u0000"+ - "\u0000\u0ade\u0adf\u0007\f\u0000\u0000\u0adf\u0ae0\u0007\u0013\u0000\u0000"+ - "\u0ae0\u0ae1\u0007\u000f\u0000\u0000\u0ae1\u0ae2\u0007\u0005\u0000\u0000"+ - "\u0ae2\u0ae3\u0007\u0011\u0000\u0000\u0ae3\u0ae4\u0007\u0007\u0000\u0000"+ - "\u0ae4\u0194\u0001\u0000\u0000\u0000\u0ae5\u0ae6\u0007\f\u0000\u0000\u0ae6"+ - "\u0ae7\u0007\u0013\u0000\u0000\u0ae7\u0ae8\u0007\u0016\u0000\u0000\u0ae8"+ - "\u0ae9\u0007\u0012\u0000\u0000\u0ae9\u0aea\u0007\u0006\u0000\u0000\u0aea"+ - "\u0aeb\u0007\n\u0000\u0000\u0aeb\u0196\u0001\u0000\u0000\u0000\u0aec\u0aed"+ - "\u0007\f\u0000\u0000\u0aed\u0aee\u0007\r\u0000\u0000\u0aee\u0aef\u0007"+ - "\u0013\u0000\u0000\u0aef\u0af0\u0007\u0018\u0000\u0000\u0af0\u0198\u0001"+ - "\u0000\u0000\u0000\u0af1\u0af2\u0007\n\u0000\u0000\u0af2\u0af3\u0007\u0005"+ - "\u0000\u0000\u0af3\u0af4\u0007\u000e\u0000\u0000\u0af4\u0af5\u0007\u0014"+ - "\u0000\u0000\u0af5\u019a\u0001\u0000\u0000\u0000\u0af6\u0af7\u0007\n\u0000"+ - "\u0000\u0af7\u0af8\u0007\u0007\u0000\u0000\u0af8\u0af9\u0007\u0005\u0000"+ - "\u0000\u0af9\u0afa\u0007\u0012\u0000\u0000\u0afa\u0afb\u0007\u0006\u0000"+ - "\u0000\u0afb\u0afc\u0007\n\u0000\u0000\u0afc\u019c\u0001\u0000\u0000\u0000"+ - "\u0afd\u0afe\u0007\n\u0000\u0000\u0afe\u0aff\u0007\u0007\u0000\u0000\u0aff"+ - "\u0b00\u0007\u000e\u0000\u0000\u0b00\u0b01\u0007\u0013\u0000\u0000\u0b01"+ - "\u0b02\u0007\f\u0000\u0000\u0b02\u0b03\u0007\u0011\u0000\u0000\u0b03\u0b04"+ - "\u0007\u0007\u0000\u0000\u0b04\u0b05\u0007\u0017\u0000\u0000\u0b05\u019e"+ - "\u0001\u0000\u0000\u0000\u0b06\u0b07\u0007\n\u0000\u0000\u0b07\u0b08\u0007"+ - "\u0007\u0000\u0000\u0b08\u0b09\u0007\u000e\u0000\u0000\u0b09\u0b0a\u0007"+ - "\r\u0000\u0000\u0b0a\u0b0b\u0007\b\u0000\u0000\u0b0b\u0b0c\u0007\u0018"+ - "\u0000\u0000\u0b0c\u0b0d\u0007\u0010\u0000\u0000\u0b0d\u0b0e\u0007\n\u0000"+ - "\u0000\u0b0e\u0b0f\u0007\f\u0000\u0000\u0b0f\u01a0\u0001\u0000\u0000\u0000"+ - "\u0b10\u0b11\u0007\n\u0000\u0000\u0b11\u0b12\u0007\u0007\u0000\u0000\u0b12"+ - "\u0b13\u0007\u0016\u0000\u0000\u0b13\u0b14\u0007\u000f\u0000\u0000\u0b14"+ - "\u01a2\u0001\u0000\u0000\u0000\u0b15\u0b16\u0007\n\u0000\u0000\u0b16\u0b17"+ - "\u0007\t\u0000\u0000\u0b17\u0b18\u0007\u000e\u0000\u0000\u0b18\u0b19\u0007"+ - "\u0005\u0000\u0000\u0b19\u0b1a\u0007\u0018\u0000\u0000\u0b1a\u0b1b\u0007"+ - "\n\u0000\u0000\u0b1b\u01a4\u0001\u0000\u0000\u0000\u0b1c\u0b1d\u0007\n"+ - "\u0000\u0000\u0b1d\u0b1e\u0007\u001b\u0000\u0000\u0b1e\u0b1f\u0007\n\u0000"+ - "\u0000\u0b1f\u0b20\u0007\u0007\u0000\u0000\u0b20\u0b21\u0007\u0010\u0000"+ - "\u0000\u0b21\u01a6\u0001\u0000\u0000\u0000\u0b22\u0b23\u0007\n\u0000\u0000"+ - "\u0b23\u0b24\u0007\u001a\u0000\u0000\u0b24\u0b25\u0007\u000e\u0000\u0000"+ - "\u0b25\u0b26\u0007\u0006\u0000\u0000\u0b26\u0b27\u0007\u0016\u0000\u0000"+ - "\u0b27\u0b28\u0007\f\u0000\u0000\u0b28\u0b29\u0007\n\u0000\u0000\u0b29"+ - "\u01a8\u0001\u0000\u0000\u0000\u0b2a\u0b2b\u0007\n\u0000\u0000\u0b2b\u0b2c"+ - "\u0007\u001a\u0000\u0000\u0b2c\u0b2d\u0007\u000e\u0000\u0000\u0b2d\u0b2e"+ - "\u0007\u0006\u0000\u0000\u0b2e\u0b2f\u0007\u0016\u0000\u0000\u0b2f\u0b30"+ - "\u0007\f\u0000\u0000\u0b30\u0b31\u0007\u0011\u0000\u0000\u0b31\u0b32\u0007"+ - "\u0007\u0000\u0000\u0b32\u0b33\u0007\u0017\u0000\u0000\u0b33\u01aa\u0001"+ - "\u0000\u0000\u0000\u0b34\u0b35\u0007\n\u0000\u0000\u0b35\u0b36\u0007\u001a"+ - "\u0000\u0000\u0b36\u0b37\u0007\u000e\u0000\u0000\u0b37\u0b38\u0007\u0006"+ - "\u0000\u0000\u0b38\u0b39\u0007\u0016\u0000\u0000\u0b39\u0b3a\u0007\t\u0000"+ - "\u0000\u0b3a\u0b3b\u0007\u0011\u0000\u0000\u0b3b\u0b3c\u0007\u001b\u0000"+ - "\u0000\u0b3c\u0b3d\u0007\n\u0000\u0000\u0b3d\u01ac\u0001\u0000\u0000\u0000"+ - "\u0b3e\u0b3f\u0007\n\u0000\u0000\u0b3f\u0b40\u0007\u001a\u0000\u0000\u0b40"+ - "\u0b41\u0007\n\u0000\u0000\u0b41\u0b42\u0007\u000e\u0000\u0000\u0b42\u0b43"+ - "\u0007\u0016\u0000\u0000\u0b43\u0b44\u0007\u0010\u0000\u0000\u0b44\u0b45"+ - "\u0007\n\u0000\u0000\u0b45\u01ae\u0001\u0000\u0000\u0000\u0b46\u0b47\u0007"+ - "\n\u0000\u0000\u0b47\u0b48\u0007\u001a\u0000\u0000\u0b48\u0b49\u0007\u0018"+ - "\u0000\u0000\u0b49\u0b4a\u0007\u0006\u0000\u0000\u0b4a\u0b4b\u0007\u0005"+ - "\u0000\u0000\u0b4b\u0b4c\u0007\u0011\u0000\u0000\u0b4c\u0b4d\u0007\u0007"+ - "\u0000\u0000\u0b4d\u01b0\u0001\u0000\u0000\u0000\u0b4e\u0b4f\u0007\n\u0000"+ - "\u0000\u0b4f\u0b50\u0007\u001a\u0000\u0000\u0b50\u0b51\u0007\u0010\u0000"+ - "\u0000\u0b51\u0b52\u0007\n\u0000\u0000\u0b52\u0b53\u0007\u0007\u0000\u0000"+ - "\u0b53\u0b54\u0007\t\u0000\u0000\u0b54\u0b55\u0007\u0011\u0000\u0000\u0b55"+ - "\u0b56\u0007\u0013\u0000\u0000\u0b56\u0b57\u0007\u0007\u0000\u0000\u0b57"+ - "\u01b2\u0001\u0000\u0000\u0000\u0b58\u0b59\u0007\n\u0000\u0000\u0b59\u0b5a"+ - "\u0007\u001a\u0000\u0000\u0b5a\u0b5b\u0007\u0010\u0000\u0000\u0b5b\u0b5c"+ - "\u0007\n\u0000\u0000\u0b5c\u0b5d\u0007\r\u0000\u0000\u0b5d\u0b5e\u0007"+ - "\u0007\u0000\u0000\u0b5e\u0b5f\u0007\u0005\u0000\u0000\u0b5f\u0b60\u0007"+ - "\u0006\u0000\u0000\u0b60\u01b4\u0001\u0000\u0000\u0000\u0b61\u0b62\u0007"+ - "\u0019\u0000\u0000\u0b62\u0b63\u0007\u0005\u0000\u0000\u0b63\u0b64\u0007"+ - "\u000f\u0000\u0000\u0b64\u0b65\u0007\u0011\u0000\u0000\u0b65\u0b66\u0007"+ - "\u0006\u0000\u0000\u0b66\u0b67\u0007\b\u0000\u0000\u0b67\u01b6\u0001\u0000"+ - "\u0000\u0000\u0b68\u0b69\u0007\u0019\u0000\u0000\u0b69\u0b6a\u0007\u0011"+ - "\u0000\u0000\u0b6a\u0b6b\u0007\r\u0000\u0000\u0b6b\u0b6c\u0007\t\u0000"+ - "\u0000\u0b6c\u0b6d\u0007\u0010\u0000\u0000\u0b6d\u01b8\u0001\u0000\u0000"+ - "\u0000\u0b6e\u0b6f\u0007\u0019\u0000\u0000\u0b6f\u0b70\u0007\u0013\u0000"+ - "\u0000\u0b70\u0b71\u0007\u0006\u0000\u0000\u0b71\u0b72\u0007\u0006\u0000"+ - "\u0000\u0b72\u0b73\u0007\u0013\u0000\u0000\u0b73\u0b74\u0007\u001c\u0000"+ - "\u0000\u0b74\u0b75\u0007\u0011\u0000\u0000\u0b75\u0b76\u0007\u0007\u0000"+ - "\u0000\u0b76\u0b77\u0007\u0017\u0000\u0000\u0b77\u01ba\u0001\u0000\u0000"+ - "\u0000\u0b78\u0b79\u0007\u0019\u0000\u0000\u0b79\u0b7a\u0007\u0013\u0000"+ - "\u0000\u0b7a\u0b7b\u0007\r\u0000\u0000\u0b7b\u0b7c\u0007\u000e\u0000\u0000"+ - "\u0b7c\u0b7d\u0007\n\u0000\u0000\u0b7d\u01bc\u0001\u0000\u0000\u0000\u0b7e"+ - "\u0b7f\u0007\u0019\u0000\u0000\u0b7f\u0b80\u0007\u0013\u0000\u0000\u0b80"+ - "\u0b81\u0007\r\u0000\u0000\u0b81\u0b82\u0007\u001c\u0000\u0000\u0b82\u0b83"+ - "\u0007\u0005\u0000\u0000\u0b83\u0b84\u0007\r\u0000\u0000\u0b84\u0b85\u0007"+ - "\f\u0000\u0000\u0b85\u01be\u0001\u0000\u0000\u0000\u0b86\u0b87\u0007\u0019"+ - "\u0000\u0000\u0b87\u0b88\u0007\u0016\u0000\u0000\u0b88\u0b89\u0007\u0007"+ - "\u0000\u0000\u0b89\u0b8a\u0007\u000e\u0000\u0000\u0b8a\u0b8b\u0007\u0010"+ - "\u0000\u0000\u0b8b\u0b8c\u0007\u0011\u0000\u0000\u0b8c\u0b8d\u0007\u0013"+ - "\u0000\u0000\u0b8d\u0b8e\u0007\u0007\u0000\u0000\u0b8e\u01c0\u0001\u0000"+ - "\u0000\u0000\u0b8f\u0b90\u0007\u0019\u0000\u0000\u0b90\u0b91\u0007\u0016"+ - "\u0000\u0000\u0b91\u0b92\u0007\u0007\u0000\u0000\u0b92\u0b93\u0007\u000e"+ - "\u0000\u0000\u0b93\u0b94\u0007\u0010\u0000\u0000\u0b94\u0b95\u0007\u0011"+ - "\u0000\u0000\u0b95\u0b96\u0007\u0013\u0000\u0000\u0b96\u0b97\u0007\u0007"+ - "\u0000\u0000\u0b97\u0b98\u0007\t\u0000\u0000\u0b98\u01c2\u0001\u0000\u0000"+ - "\u0000\u0b99\u0b9a\u0007\u0017\u0000\u0000\u0b9a\u0b9b\u0007\u0006\u0000"+ - "\u0000\u0b9b\u0b9c\u0007\u0013\u0000\u0000\u0b9c\u0b9d\u0007\u0012\u0000"+ - "\u0000\u0b9d\u0b9e\u0007\u0005\u0000\u0000\u0b9e\u0b9f\u0007\u0006\u0000"+ - "\u0000\u0b9f\u01c4\u0001\u0000\u0000\u0000\u0ba0\u0ba1\u0007\u0017\u0000"+ - "\u0000\u0ba1\u0ba2\u0007\r\u0000\u0000\u0ba2\u0ba3\u0007\u0005\u0000\u0000"+ - "\u0ba3\u0ba4\u0007\u0007\u0000\u0000\u0ba4\u0ba5\u0007\u0010\u0000\u0000"+ - "\u0ba5\u0ba6\u0007\n\u0000\u0000\u0ba6\u0ba7\u0007\f\u0000\u0000\u0ba7"+ - "\u01c6\u0001\u0000\u0000\u0000\u0ba8\u0ba9\u0007\u0014\u0000\u0000\u0ba9"+ - "\u0baa\u0007\u0005\u0000\u0000\u0baa\u0bab\u0007\u0007\u0000\u0000\u0bab"+ - "\u0bac\u0007\f\u0000\u0000\u0bac\u0bad\u0007\u0006\u0000\u0000\u0bad\u0bae"+ - "\u0007\n\u0000\u0000\u0bae\u0baf\u0007\r\u0000\u0000\u0baf\u01c8\u0001"+ - "\u0000\u0000\u0000\u0bb0\u0bb1\u0007\u0014\u0000\u0000\u0bb1\u0bb2\u0007"+ - "\n\u0000\u0000\u0bb2\u0bb3\u0007\u0005\u0000\u0000\u0bb3\u0bb4\u0007\f"+ - "\u0000\u0000\u0bb4\u0bb5\u0007\n\u0000\u0000\u0bb5\u0bb6\u0007\r\u0000"+ - "\u0000\u0bb6\u01ca\u0001\u0000\u0000\u0000\u0bb7\u0bb8\u0007\u0014\u0000"+ - "\u0000\u0bb8\u0bb9\u0007\u0013\u0000\u0000\u0bb9\u0bba\u0007\u0006\u0000"+ - "\u0000\u0bba\u0bbb\u0007\f\u0000\u0000\u0bbb\u01cc\u0001\u0000\u0000\u0000"+ - "\u0bbc\u0bbd\u0007\u0014\u0000\u0000\u0bbd\u0bbe\u0007\u0013\u0000\u0000"+ - "\u0bbe\u0bbf\u0007\u0016\u0000\u0000\u0bbf\u0bc0\u0007\r\u0000\u0000\u0bc0"+ - "\u01ce\u0001\u0000\u0000\u0000\u0bc1\u0bc2\u0007\u0011\u0000\u0000\u0bc2"+ - "\u0bc3\u0007\f\u0000\u0000\u0bc3\u0bc4\u0007\n\u0000\u0000\u0bc4\u0bc5"+ - "\u0007\u0007\u0000\u0000\u0bc5\u0bc6\u0007\u0010\u0000\u0000\u0bc6\u0bc7"+ - "\u0007\u0011\u0000\u0000\u0bc7\u0bc8\u0007\u0010\u0000\u0000\u0bc8\u0bc9"+ - "\u0007\b\u0000\u0000\u0bc9\u01d0\u0001\u0000\u0000\u0000\u0bca\u0bcb\u0007"+ - "\u0011\u0000\u0000\u0bcb\u0bcc\u0007\u0019\u0000\u0000\u0bcc\u01d2\u0001"+ - "\u0000\u0000\u0000\u0bcd\u0bce\u0007\u0011\u0000\u0000\u0bce\u0bcf\u0007"+ - "\u000f\u0000\u0000\u0bcf\u0bd0\u0007\u000f\u0000\u0000\u0bd0\u0bd1\u0007"+ - "\n\u0000\u0000\u0bd1\u0bd2\u0007\f\u0000\u0000\u0bd2\u0bd3\u0007\u0011"+ - "\u0000\u0000\u0bd3\u0bd4\u0007\u0005\u0000\u0000\u0bd4\u0bd5\u0007\u0010"+ - "\u0000\u0000\u0bd5\u0bd6\u0007\n\u0000\u0000\u0bd6\u01d4\u0001\u0000\u0000"+ - "\u0000\u0bd7\u0bd8\u0007\u0011\u0000\u0000\u0bd8\u0bd9\u0007\u000f\u0000"+ - "\u0000\u0bd9\u0bda\u0007\u000f\u0000\u0000\u0bda\u0bdb\u0007\u0016\u0000"+ - "\u0000\u0bdb\u0bdc\u0007\u0010\u0000\u0000\u0bdc\u0bdd\u0007\u0005\u0000"+ - "\u0000\u0bdd\u0bde\u0007\u0012\u0000\u0000\u0bde\u0bdf\u0007\u0006\u0000"+ - "\u0000\u0bdf\u0be0\u0007\n\u0000\u0000\u0be0\u01d6\u0001\u0000\u0000\u0000"+ - "\u0be1\u0be2\u0007\u0011\u0000\u0000\u0be2\u0be3\u0007\u000f\u0000\u0000"+ - "\u0be3\u0be4\u0007\u0018\u0000\u0000\u0be4\u0be5\u0007\u0006\u0000\u0000"+ - "\u0be5\u0be6\u0007\u0011\u0000\u0000\u0be6\u0be7\u0007\u000e\u0000\u0000"+ - "\u0be7\u0be8\u0007\u0011\u0000\u0000\u0be8\u0be9\u0007\u0010\u0000\u0000"+ - "\u0be9\u01d8\u0001\u0000\u0000\u0000\u0bea\u0beb\u0007\u0011\u0000\u0000"+ - "\u0beb\u0bec\u0007\u0007\u0000\u0000\u0bec\u0bed\u0007\u000e\u0000\u0000"+ - "\u0bed\u0bee\u0007\u0006\u0000\u0000\u0bee\u0bef\u0007\u0016\u0000\u0000"+ - "\u0bef\u0bf0\u0007\f\u0000\u0000\u0bf0\u0bf1\u0007\u0011\u0000\u0000\u0bf1"+ - "\u0bf2\u0007\u0007\u0000\u0000\u0bf2\u0bf3\u0007\u0017\u0000\u0000\u0bf3"+ - "\u01da\u0001\u0000\u0000\u0000\u0bf4\u0bf5\u0007\u0011\u0000\u0000\u0bf5"+ - "\u0bf6\u0007\u0007\u0000\u0000\u0bf6\u0bf7\u0007\u000e\u0000\u0000\u0bf7"+ - "\u0bf8\u0007\r\u0000\u0000\u0bf8\u0bf9\u0007\n\u0000\u0000\u0bf9\u0bfa"+ - "\u0007\u000f\u0000\u0000\u0bfa\u0bfb\u0007\n\u0000\u0000\u0bfb\u0bfc\u0007"+ - "\u0007\u0000\u0000\u0bfc\u0bfd\u0007\u0010\u0000\u0000\u0bfd\u01dc\u0001"+ - "\u0000\u0000\u0000\u0bfe\u0bff\u0007\u0011\u0000\u0000\u0bff\u0c00\u0007"+ - "\u0007\u0000\u0000\u0c00\u0c01\u0007\f\u0000\u0000\u0c01\u0c02\u0007\n"+ - "\u0000\u0000\u0c02\u0c03\u0007\u001a\u0000\u0000\u0c03\u01de\u0001\u0000"+ - "\u0000\u0000\u0c04\u0c05\u0007\u0011\u0000\u0000\u0c05\u0c06\u0007\u0007"+ - "\u0000\u0000\u0c06\u0c07\u0007\f\u0000\u0000\u0c07\u0c08\u0007\n\u0000"+ - "\u0000\u0c08\u0c09\u0007\u001a\u0000\u0000\u0c09\u0c0a\u0007\n\u0000\u0000"+ - "\u0c0a\u0c0b\u0007\t\u0000\u0000\u0c0b\u01e0\u0001\u0000\u0000\u0000\u0c0c"+ - "\u0c0d\u0007\u0011\u0000\u0000\u0c0d\u0c0e\u0007\u0007\u0000\u0000\u0c0e"+ - "\u0c0f\u0007\u0014\u0000\u0000\u0c0f\u0c10\u0007\n\u0000\u0000\u0c10\u0c11"+ - "\u0007\r\u0000\u0000\u0c11\u0c12\u0007\u0011\u0000\u0000\u0c12\u0c13\u0007"+ - "\u0010\u0000\u0000\u0c13\u01e2\u0001\u0000\u0000\u0000\u0c14\u0c15\u0007"+ - "\u0011\u0000\u0000\u0c15\u0c16\u0007\u0007\u0000\u0000\u0c16\u0c17\u0007"+ - "\u0014\u0000\u0000\u0c17\u0c18\u0007\n\u0000\u0000\u0c18\u0c19\u0007\r"+ - "\u0000\u0000\u0c19\u0c1a\u0007\u0011\u0000\u0000\u0c1a\u0c1b\u0007\u0010"+ - "\u0000\u0000\u0c1b\u0c1c\u0007\t\u0000\u0000\u0c1c\u01e4\u0001\u0000\u0000"+ - "\u0000\u0c1d\u0c1e\u0007\u0011\u0000\u0000\u0c1e\u0c1f\u0007\u0007\u0000"+ - "\u0000\u0c1f\u0c20\u0007\u0006\u0000\u0000\u0c20\u0c21\u0007\u0011\u0000"+ - "\u0000\u0c21\u0c22\u0007\u0007\u0000\u0000\u0c22\u0c23\u0007\n\u0000\u0000"+ - "\u0c23\u01e6\u0001\u0000\u0000\u0000\u0c24\u0c25\u0007\u0011\u0000\u0000"+ - "\u0c25\u0c26\u0007\u0007\u0000\u0000\u0c26\u0c27\u0007\t\u0000\u0000\u0c27"+ - "\u0c28\u0007\n\u0000\u0000\u0c28\u0c29\u0007\u0007\u0000\u0000\u0c29\u0c2a"+ - "\u0007\t\u0000\u0000\u0c2a\u0c2b\u0007\u0011\u0000\u0000\u0c2b\u0c2c\u0007"+ - "\u0010\u0000\u0000\u0c2c\u0c2d\u0007\u0011\u0000\u0000\u0c2d\u0c2e\u0007"+ - "\u001b\u0000\u0000\u0c2e\u0c2f\u0007\n\u0000\u0000\u0c2f\u01e8\u0001\u0000"+ - "\u0000\u0000\u0c30\u0c31\u0007\u0011\u0000\u0000\u0c31\u0c32\u0007\u0007"+ - "\u0000\u0000\u0c32\u0c33\u0007\t\u0000\u0000\u0c33\u0c34\u0007\n\u0000"+ - "\u0000\u0c34\u0c35\u0007\r\u0000\u0000\u0c35\u0c36\u0007\u0010\u0000\u0000"+ - "\u0c36\u01ea\u0001\u0000\u0000\u0000\u0c37\u0c38\u0007\u0011\u0000\u0000"+ - "\u0c38\u0c39\u0007\u0007\u0000\u0000\u0c39\u0c3a\u0007\t\u0000\u0000\u0c3a"+ - "\u0c3b\u0007\u0010\u0000\u0000\u0c3b\u0c3c\u0007\n\u0000\u0000\u0c3c\u0c3d"+ - "\u0007\u0005\u0000\u0000\u0c3d\u0c3e\u0007\f\u0000\u0000\u0c3e\u01ec\u0001"+ - "\u0000\u0000\u0000\u0c3f\u0c40\u0007\u0011\u0000\u0000\u0c40\u0c41\u0007"+ - "\u0007\u0000\u0000\u0c41\u0c42\u0007\u001b\u0000\u0000\u0c42\u0c43\u0007"+ - "\u0013\u0000\u0000\u0c43\u0c44\u0007\u0015\u0000\u0000\u0c44\u0c45\u0007"+ - "\n\u0000\u0000\u0c45\u0c46\u0007\r\u0000\u0000\u0c46\u01ee\u0001\u0000"+ - "\u0000\u0000\u0c47\u0c48\u0007\u0011\u0000\u0000\u0c48\u0c49\u0007\t\u0000"+ - "\u0000\u0c49\u0c4a\u0007\u0013\u0000\u0000\u0c4a\u0c4b\u0007\u0006\u0000"+ - "\u0000\u0c4b\u0c4c\u0007\u0005\u0000\u0000\u0c4c\u0c4d\u0007\u0010\u0000"+ - "\u0000\u0c4d\u0c4e\u0007\u0011\u0000\u0000\u0c4e\u0c4f\u0007\u0013\u0000"+ - "\u0000\u0c4f\u0c50\u0007\u0007\u0000\u0000\u0c50\u01f0\u0001\u0000\u0000"+ - "\u0000\u0c51\u0c52\u0007\u0015\u0000\u0000\u0c52\u0c53\u0007\n\u0000\u0000"+ - "\u0c53\u0c54\u0007\b\u0000\u0000\u0c54\u01f2\u0001\u0000\u0000\u0000\u0c55"+ - "\u0c56\u0007\u0006\u0000\u0000\u0c56\u0c57\u0007\u0005\u0000\u0000\u0c57"+ - "\u0c58\u0007\u0012\u0000\u0000\u0c58\u0c59\u0007\n\u0000\u0000\u0c59\u0c5a"+ - "\u0007\u0006\u0000\u0000\u0c5a\u01f4\u0001\u0000\u0000\u0000\u0c5b\u0c5c"+ - "\u0007\u0006\u0000\u0000\u0c5c\u0c5d\u0007\u0005\u0000\u0000\u0c5d\u0c5e"+ - "\u0007\u0007\u0000\u0000\u0c5e\u0c5f\u0007\u0017\u0000\u0000\u0c5f\u0c60"+ - "\u0007\u0016\u0000\u0000\u0c60\u0c61\u0007\u0005\u0000\u0000\u0c61\u0c62"+ - "\u0007\u0017\u0000\u0000\u0c62\u0c63\u0007\n\u0000\u0000\u0c63\u01f6\u0001"+ - "\u0000\u0000\u0000\u0c64\u0c65\u0007\u0006\u0000\u0000\u0c65\u0c66\u0007"+ - "\u0005\u0000\u0000\u0c66\u0c67\u0007\r\u0000\u0000\u0c67\u0c68\u0007\u0017"+ - "\u0000\u0000\u0c68\u0c69\u0007\n\u0000\u0000\u0c69\u01f8\u0001\u0000\u0000"+ - "\u0000\u0c6a\u0c6b\u0007\u0006\u0000\u0000\u0c6b\u0c6c\u0007\u0005\u0000"+ - "\u0000\u0c6c\u0c6d\u0007\t\u0000\u0000\u0c6d\u0c6e\u0007\u0010\u0000\u0000"+ - "\u0c6e\u01fa\u0001\u0000\u0000\u0000\u0c6f\u0c70\u0007\u0006\u0000\u0000"+ - "\u0c70\u0c71\u0007\n\u0000\u0000\u0c71\u0c72\u0007\u0005\u0000\u0000\u0c72"+ - "\u0c73\u0007\u0015\u0000\u0000\u0c73\u0c74\u0007\u0018\u0000\u0000\u0c74"+ - "\u0c75\u0007\r\u0000\u0000\u0c75\u0c76\u0007\u0013\u0000\u0000\u0c76\u0c77"+ - "\u0007\u0013\u0000\u0000\u0c77\u0c78\u0007\u0019\u0000\u0000\u0c78\u01fc"+ - "\u0001\u0000\u0000\u0000\u0c79\u0c7a\u0007\u0006\u0000\u0000\u0c7a\u0c7b"+ - "\u0007\n\u0000\u0000\u0c7b\u0c7c\u0007\u001b\u0000\u0000\u0c7c\u0c7d\u0007"+ - "\n\u0000\u0000\u0c7d\u0c7e\u0007\u0006\u0000\u0000\u0c7e\u01fe\u0001\u0000"+ - "\u0000\u0000\u0c7f\u0c80\u0007\u0006\u0000\u0000\u0c80\u0c81\u0007\u0011"+ - "\u0000\u0000\u0c81\u0c82\u0007\t\u0000\u0000\u0c82\u0c83\u0007\u0010\u0000"+ - "\u0000\u0c83\u0c84\u0007\n\u0000\u0000\u0c84\u0c85\u0007\u0007\u0000\u0000"+ - "\u0c85\u0200\u0001\u0000\u0000\u0000\u0c86\u0c87\u0007\u0006\u0000\u0000"+ - "\u0c87\u0c88\u0007\u0013\u0000\u0000\u0c88\u0c89\u0007\u0005\u0000\u0000"+ - "\u0c89\u0c8a\u0007\f\u0000\u0000\u0c8a\u0202\u0001\u0000\u0000\u0000\u0c8b"+ - "\u0c8c\u0007\u0006\u0000\u0000\u0c8c\u0c8d\u0007\u0013\u0000\u0000\u0c8d"+ - "\u0c8e\u0007\u000e\u0000\u0000\u0c8e\u0c8f\u0007\u0005\u0000\u0000\u0c8f"+ - "\u0c90\u0007\u0006\u0000\u0000\u0c90\u0204\u0001\u0000\u0000\u0000\u0c91"+ - "\u0c92\u0007\u0006\u0000\u0000\u0c92\u0c93\u0007\u0013\u0000\u0000\u0c93"+ - "\u0c94\u0007\u000e\u0000\u0000\u0c94\u0c95\u0007\u0005\u0000\u0000\u0c95"+ - "\u0c96\u0007\u0010\u0000\u0000\u0c96\u0c97\u0007\u0011\u0000\u0000\u0c97"+ - "\u0c98\u0007\u0013\u0000\u0000\u0c98\u0c99\u0007\u0007\u0000\u0000\u0c99"+ - "\u0206\u0001\u0000\u0000\u0000\u0c9a\u0c9b\u0007\u0006\u0000\u0000\u0c9b"+ - "\u0c9c\u0007\u0013\u0000\u0000\u0c9c\u0c9d\u0007\u000e\u0000\u0000\u0c9d"+ - "\u0c9e\u0007\u0015\u0000\u0000\u0c9e\u0208\u0001\u0000\u0000\u0000\u0c9f"+ - "\u0ca0\u0007\u000f\u0000\u0000\u0ca0\u0ca1\u0007\u0005\u0000\u0000\u0ca1"+ - "\u0ca2\u0007\u0018\u0000\u0000\u0ca2\u0ca3\u0007\u0018\u0000\u0000\u0ca3"+ - "\u0ca4\u0007\u0011\u0000\u0000\u0ca4\u0ca5\u0007\u0007\u0000\u0000\u0ca5"+ - "\u0ca6\u0007\u0017\u0000\u0000\u0ca6\u020a\u0001\u0000\u0000\u0000\u0ca7"+ - "\u0ca8\u0007\u000f\u0000\u0000\u0ca8\u0ca9\u0007\u0005\u0000\u0000\u0ca9"+ - "\u0caa\u0007\u0010\u0000\u0000\u0caa\u0cab\u0007\u000e\u0000\u0000\u0cab"+ - "\u0cac\u0007\u0014\u0000\u0000\u0cac\u020c\u0001\u0000\u0000\u0000\u0cad"+ - "\u0cae\u0007\u000f\u0000\u0000\u0cae\u0caf\u0007\u0005\u0000\u0000\u0caf"+ - "\u0cb0\u0007\u0010\u0000\u0000\u0cb0\u0cb1\u0007\u000e\u0000\u0000\u0cb1"+ - "\u0cb2\u0007\u0014\u0000\u0000\u0cb2\u0cb3\u0007\n\u0000\u0000\u0cb3\u0cb4"+ - "\u0007\f\u0000\u0000\u0cb4\u020e\u0001\u0000\u0000\u0000\u0cb5\u0cb6\u0007"+ - "\u000f\u0000\u0000\u0cb6\u0cb7\u0007\u0005\u0000\u0000\u0cb7\u0cb8\u0007"+ - "\u0010\u0000\u0000\u0cb8\u0cb9\u0007\n\u0000\u0000\u0cb9\u0cba\u0007\r"+ - "\u0000\u0000\u0cba\u0cbb\u0007\u0011\u0000\u0000\u0cbb\u0cbc\u0007\u0005"+ - "\u0000\u0000\u0cbc\u0cbd\u0007\u0006\u0000\u0000\u0cbd\u0cbe\u0007\u0011"+ - "\u0000\u0000\u0cbe\u0cbf\u0007\u000b\u0000\u0000\u0cbf\u0cc0\u0007\n\u0000"+ - "\u0000\u0cc0\u0cc1\u0007\f\u0000\u0000\u0cc1\u0210\u0001\u0000\u0000\u0000"+ - "\u0cc2\u0cc3\u0007\u000f\u0000\u0000\u0cc3\u0cc4\u0007\u0005\u0000\u0000"+ - "\u0cc4\u0cc5\u0007\u001a\u0000\u0000\u0cc5\u0cc6\u0007\u001b\u0000\u0000"+ - "\u0cc6\u0cc7\u0007\u0005\u0000\u0000\u0cc7\u0cc8\u0007\u0006\u0000\u0000"+ - "\u0cc8\u0cc9\u0007\u0016\u0000\u0000\u0cc9\u0cca\u0007\n\u0000\u0000\u0cca"+ - "\u0212\u0001\u0000\u0000\u0000\u0ccb\u0ccc\u0007\u000f\u0000\u0000\u0ccc"+ - "\u0ccd\u0007\n\u0000\u0000\u0ccd\u0cce\u0007\r\u0000\u0000\u0cce\u0ccf"+ - "\u0007\u0017\u0000\u0000\u0ccf\u0cd0\u0007\n\u0000\u0000\u0cd0\u0214\u0001"+ - "\u0000\u0000\u0000\u0cd1\u0cd2\u0007\u000f\u0000\u0000\u0cd2\u0cd3\u0007"+ - "\u0011\u0000\u0000\u0cd3\u0cd4\u0007\u0007\u0000\u0000\u0cd4\u0cd5\u0007"+ - "\u0016\u0000\u0000\u0cd5\u0cd6\u0007\u0010\u0000\u0000\u0cd6\u0cd7\u0007"+ - "\n\u0000\u0000\u0cd7\u0216\u0001\u0000\u0000\u0000\u0cd8\u0cd9\u0007\u000f"+ - "\u0000\u0000\u0cd9\u0cda\u0007\u0011\u0000\u0000\u0cda\u0cdb\u0007\u0007"+ - "\u0000\u0000\u0cdb\u0cdc\u0007\u001b\u0000\u0000\u0cdc\u0cdd\u0007\u0005"+ - "\u0000\u0000\u0cdd\u0cde\u0007\u0006\u0000\u0000\u0cde\u0cdf\u0007\u0016"+ - "\u0000\u0000\u0cdf\u0ce0\u0007\n\u0000\u0000\u0ce0\u0218\u0001\u0000\u0000"+ - "\u0000\u0ce1\u0ce2\u0007\u000f\u0000\u0000\u0ce2\u0ce3\u0007\u0013\u0000"+ - "\u0000\u0ce3\u0ce4\u0007\f\u0000\u0000\u0ce4\u0ce5\u0007\n\u0000\u0000"+ - "\u0ce5\u021a\u0001\u0000\u0000\u0000\u0ce6\u0ce7\u0007\u000f\u0000\u0000"+ - "\u0ce7\u0ce8\u0007\u0013\u0000\u0000\u0ce8\u0ce9\u0007\u0007\u0000\u0000"+ - "\u0ce9\u0cea\u0007\u0010\u0000\u0000\u0cea\u0ceb\u0007\u0014\u0000\u0000"+ - "\u0ceb\u021c\u0001\u0000\u0000\u0000\u0cec\u0ced\u0007\u000f\u0000\u0000"+ - "\u0ced\u0cee\u0007\u0013\u0000\u0000\u0cee\u0cef\u0007\u001b\u0000\u0000"+ - "\u0cef\u0cf0\u0007\n\u0000\u0000\u0cf0\u021e\u0001\u0000\u0000\u0000\u0cf1"+ - "\u0cf2\u0007\u0007\u0000\u0000\u0cf2\u0cf3\u0007\u0005\u0000\u0000\u0cf3"+ - "\u0cf4\u0007\u000f\u0000\u0000\u0cf4\u0cf5\u0007\n\u0000\u0000\u0cf5\u0220"+ - "\u0001\u0000\u0000\u0000\u0cf6\u0cf7\u0007\u0007\u0000\u0000\u0cf7\u0cf8"+ - "\u0007\u0005\u0000\u0000\u0cf8\u0cf9\u0007\u000f\u0000\u0000\u0cf9\u0cfa"+ - "\u0007\n\u0000\u0000\u0cfa\u0cfb\u0007\t\u0000\u0000\u0cfb\u0222\u0001"+ - "\u0000\u0000\u0000\u0cfc\u0cfd\u0007\u0007\u0000\u0000\u0cfd\u0cfe\u0007"+ - "\n\u0000\u0000\u0cfe\u0cff\u0007\u001a\u0000\u0000\u0cff\u0d00\u0007\u0010"+ - "\u0000\u0000\u0d00\u0224\u0001\u0000\u0000\u0000\u0d01\u0d02\u0007\u0007"+ - "\u0000\u0000\u0d02\u0d03\u0007\u0013\u0000\u0000\u0d03\u0226\u0001\u0000"+ - "\u0000\u0000\u0d04\u0d05\u0007\u0007\u0000\u0000\u0d05\u0d06\u0007\u0013"+ - "\u0000\u0000\u0d06\u0d07\u0007\u0010\u0000\u0000\u0d07\u0d08\u0007\u0014"+ - "\u0000\u0000\u0d08\u0d09\u0007\u0011\u0000\u0000\u0d09\u0d0a\u0007\u0007"+ - "\u0000\u0000\u0d0a\u0d0b\u0007\u0017\u0000\u0000\u0d0b\u0228\u0001\u0000"+ - "\u0000\u0000\u0d0c\u0d0d\u0007\u0007\u0000\u0000\u0d0d\u0d0e\u0007\u0013"+ - "\u0000\u0000\u0d0e\u0d0f\u0007\u0010\u0000\u0000\u0d0f\u0d10\u0007\u0011"+ - "\u0000\u0000\u0d10\u0d11\u0007\u0019\u0000\u0000\u0d11\u0d12\u0007\b\u0000"+ - "\u0000\u0d12\u022a\u0001\u0000\u0000\u0000\u0d13\u0d14\u0007\u0007\u0000"+ - "\u0000\u0d14\u0d15\u0007\u0013\u0000\u0000\u0d15\u0d16\u0007\u001c\u0000"+ - "\u0000\u0d16\u0d17\u0007\u0005\u0000\u0000\u0d17\u0d18\u0007\u0011\u0000"+ - "\u0000\u0d18\u0d19\u0007\u0010\u0000\u0000\u0d19\u022c\u0001\u0000\u0000"+ - "\u0000\u0d1a\u0d1b\u0007\u0007\u0000\u0000\u0d1b\u0d1c\u0007\u0016\u0000"+ - "\u0000\u0d1c\u0d1d\u0007\u0006\u0000\u0000\u0d1d\u0d1e\u0007\u0006\u0000"+ - "\u0000\u0d1e\u0d1f\u0007\t\u0000\u0000\u0d1f\u022e\u0001\u0000\u0000\u0000"+ - "\u0d20\u0d21\u0007\u0013\u0000\u0000\u0d21\u0d22\u0007\u0012\u0000\u0000"+ - "\u0d22\u0d23\u0007\u001e\u0000\u0000\u0d23\u0d24\u0007\n\u0000\u0000\u0d24"+ - "\u0d25\u0007\u000e\u0000\u0000\u0d25\u0d26\u0007\u0010\u0000\u0000\u0d26"+ - "\u0230\u0001\u0000\u0000\u0000\u0d27\u0d28\u0007\u0013\u0000\u0000\u0d28"+ - "\u0d29\u0007\u0019\u0000\u0000\u0d29\u0232\u0001\u0000\u0000\u0000\u0d2a"+ - "\u0d2b\u0007\u0013\u0000\u0000\u0d2b\u0d2c\u0007\u0019\u0000\u0000\u0d2c"+ - "\u0d2d\u0007\u0019\u0000\u0000\u0d2d\u0234\u0001\u0000\u0000\u0000\u0d2e"+ - "\u0d2f\u0007\u0013\u0000\u0000\u0d2f\u0d30\u0007\u0011\u0000\u0000\u0d30"+ - "\u0d31\u0007\f\u0000\u0000\u0d31\u0d32\u0007\t\u0000\u0000\u0d32\u0236"+ - "\u0001\u0000\u0000\u0000\u0d33\u0d34\u0007\u0013\u0000\u0000\u0d34\u0d35"+ - "\u0007\u0018\u0000\u0000\u0d35\u0d36\u0007\n\u0000\u0000\u0d36\u0d37\u0007"+ - "\r\u0000\u0000\u0d37\u0d38\u0007\u0005\u0000\u0000\u0d38\u0d39\u0007\u0010"+ - "\u0000\u0000\u0d39\u0d3a\u0007\u0013\u0000\u0000\u0d3a\u0d3b\u0007\r\u0000"+ - "\u0000\u0d3b\u0238\u0001\u0000\u0000\u0000\u0d3c\u0d3d\u0007\u0013\u0000"+ - "\u0000\u0d3d\u0d3e\u0007\u0018\u0000\u0000\u0d3e\u0d3f\u0007\u0010\u0000"+ - "\u0000\u0d3f\u0d40\u0007\u0011\u0000\u0000\u0d40\u0d41\u0007\u0013\u0000"+ - "\u0000\u0d41\u0d42\u0007\u0007\u0000\u0000\u0d42\u023a\u0001\u0000\u0000"+ - "\u0000\u0d43\u0d44\u0007\u0013\u0000\u0000\u0d44\u0d45\u0007\u0018\u0000"+ - "\u0000\u0d45\u0d46\u0007\u0010\u0000\u0000\u0d46\u0d47\u0007\u0011\u0000"+ - "\u0000\u0d47\u0d48\u0007\u0013\u0000\u0000\u0d48\u0d49\u0007\u0007\u0000"+ - "\u0000\u0d49\u0d4a\u0007\t\u0000\u0000\u0d4a\u023c\u0001\u0000\u0000\u0000"+ - "\u0d4b\u0d4c\u0007\u0013\u0000\u0000\u0d4c\u0d4d\u0007\u001c\u0000\u0000"+ - "\u0d4d\u0d4e\u0007\u0007\u0000\u0000\u0d4e\u0d4f\u0007\n\u0000\u0000\u0d4f"+ - "\u0d50\u0007\f\u0000\u0000\u0d50\u023e\u0001\u0000\u0000\u0000\u0d51\u0d52"+ - "\u0007\u0013\u0000\u0000\u0d52\u0d53\u0007\u001c\u0000\u0000\u0d53\u0d54"+ - "\u0007\u0007\u0000\u0000\u0d54\u0d55\u0007\n\u0000\u0000\u0d55\u0d56\u0007"+ - "\r\u0000\u0000\u0d56\u0240\u0001\u0000\u0000\u0000\u0d57\u0d58\u0007\u0018"+ - "\u0000\u0000\u0d58\u0d59\u0007\u0005\u0000\u0000\u0d59\u0d5a\u0007\r\u0000"+ - "\u0000\u0d5a\u0d5b\u0007\t\u0000\u0000\u0d5b\u0d5c\u0007\n\u0000\u0000"+ - "\u0d5c\u0d5d\u0007\r\u0000\u0000\u0d5d\u0242\u0001\u0000\u0000\u0000\u0d5e"+ - "\u0d5f\u0007\u0018\u0000\u0000\u0d5f\u0d60\u0007\u0005\u0000\u0000\u0d60"+ - "\u0d61\u0007\r\u0000\u0000\u0d61\u0d62\u0007\u0010\u0000\u0000\u0d62\u0d63"+ - "\u0007\u0011\u0000\u0000\u0d63\u0d64\u0007\u0005\u0000\u0000\u0d64\u0d65"+ - "\u0007\u0006\u0000\u0000\u0d65\u0244\u0001\u0000\u0000\u0000\u0d66\u0d67"+ - "\u0007\u0018\u0000\u0000\u0d67\u0d68\u0007\u0005\u0000\u0000\u0d68\u0d69"+ - "\u0007\r\u0000\u0000\u0d69\u0d6a\u0007\u0010\u0000\u0000\u0d6a\u0d6b\u0007"+ - "\u0011\u0000\u0000\u0d6b\u0d6c\u0007\u0010\u0000\u0000\u0d6c\u0d6d\u0007"+ - "\u0011\u0000\u0000\u0d6d\u0d6e\u0007\u0013\u0000\u0000\u0d6e\u0d6f\u0007"+ - "\u0007\u0000\u0000\u0d6f\u0246\u0001\u0000\u0000\u0000\u0d70\u0d71\u0007"+ - "\u0018\u0000\u0000\u0d71\u0d72\u0007\u0005\u0000\u0000\u0d72\u0d73\u0007"+ - "\t\u0000\u0000\u0d73\u0d74\u0007\t\u0000\u0000\u0d74\u0d75\u0007\u0011"+ - "\u0000\u0000\u0d75\u0d76\u0007\u0007\u0000\u0000\u0d76\u0d77\u0007\u0017"+ - "\u0000\u0000\u0d77\u0248\u0001\u0000\u0000\u0000\u0d78\u0d79\u0007\u0018"+ - "\u0000\u0000\u0d79\u0d7a\u0007\u0005\u0000\u0000\u0d7a\u0d7b\u0007\t\u0000"+ - "\u0000\u0d7b\u0d7c\u0007\t\u0000\u0000\u0d7c\u0d7d\u0007\u001c\u0000\u0000"+ - "\u0d7d\u0d7e\u0007\u0013\u0000\u0000\u0d7e\u0d7f\u0007\r\u0000\u0000\u0d7f"+ - "\u0d80\u0007\f\u0000\u0000\u0d80\u024a\u0001\u0000\u0000\u0000\u0d81\u0d82"+ - "\u0007\u0018\u0000\u0000\u0d82\u0d83\u0007\u0006\u0000\u0000\u0d83\u0d84"+ - "\u0007\u0005\u0000\u0000\u0d84\u0d85\u0007\u0007\u0000\u0000\u0d85\u0d86"+ - "\u0007\t\u0000\u0000\u0d86\u024c\u0001\u0000\u0000\u0000\u0d87\u0d88\u0007"+ - "\u0018\u0000\u0000\u0d88\u0d89\u0007\r\u0000\u0000\u0d89\u0d8a\u0007\n"+ - "\u0000\u0000\u0d8a\u0d8b\u0007\u000e\u0000\u0000\u0d8b\u0d8c\u0007\n\u0000"+ - "\u0000\u0d8c\u0d8d\u0007\f\u0000\u0000\u0d8d\u0d8e\u0007\u0011\u0000\u0000"+ - "\u0d8e\u0d8f\u0007\u0007\u0000\u0000\u0d8f\u0d90\u0007\u0017\u0000\u0000"+ - "\u0d90\u024e\u0001\u0000\u0000\u0000\u0d91\u0d92\u0007\u0018\u0000\u0000"+ - "\u0d92\u0d93\u0007\r\u0000\u0000\u0d93\u0d94\u0007\n\u0000\u0000\u0d94"+ - "\u0d95\u0007\u0018\u0000\u0000\u0d95\u0d96\u0007\u0005\u0000\u0000\u0d96"+ - "\u0d97\u0007\r\u0000\u0000\u0d97\u0d98\u0007\n\u0000\u0000\u0d98\u0250"+ - "\u0001\u0000\u0000\u0000\u0d99\u0d9a\u0007\u0018\u0000\u0000\u0d9a\u0d9b"+ - "\u0007\r\u0000\u0000\u0d9b\u0d9c\u0007\n\u0000\u0000\u0d9c\u0d9d\u0007"+ - "\u0018\u0000\u0000\u0d9d\u0d9e\u0007\u0005\u0000\u0000\u0d9e\u0d9f\u0007"+ - "\r\u0000\u0000\u0d9f\u0da0\u0007\n\u0000\u0000\u0da0\u0da1\u0007\f\u0000"+ - "\u0000\u0da1\u0252\u0001\u0000\u0000\u0000\u0da2\u0da3\u0007\u0018\u0000"+ - "\u0000\u0da3\u0da4\u0007\r\u0000\u0000\u0da4\u0da5\u0007\n\u0000\u0000"+ - "\u0da5\u0da6\u0007\t\u0000\u0000\u0da6\u0da7\u0007\n\u0000\u0000\u0da7"+ - "\u0da8\u0007\r\u0000\u0000\u0da8\u0da9\u0007\u001b\u0000\u0000\u0da9\u0daa"+ - "\u0007\n\u0000\u0000\u0daa\u0254\u0001\u0000\u0000\u0000\u0dab\u0dac\u0007"+ - "\u0018\u0000\u0000\u0dac\u0dad\u0007\r\u0000\u0000\u0dad\u0dae\u0007\u0011"+ - "\u0000\u0000\u0dae\u0daf\u0007\u0013\u0000\u0000\u0daf\u0db0\u0007\r\u0000"+ - "\u0000\u0db0\u0256\u0001\u0000\u0000\u0000\u0db1\u0db2\u0007\u0018\u0000"+ - "\u0000\u0db2\u0db3\u0007\r\u0000\u0000\u0db3\u0db4\u0007\u0011\u0000\u0000"+ - "\u0db4\u0db5\u0007\u001b\u0000\u0000\u0db5\u0db6\u0007\u0011\u0000\u0000"+ - "\u0db6\u0db7\u0007\u0006\u0000\u0000\u0db7\u0db8\u0007\n\u0000\u0000\u0db8"+ - "\u0db9\u0007\u0017\u0000\u0000\u0db9\u0dba\u0007\n\u0000\u0000\u0dba\u0dbb"+ - "\u0007\t\u0000\u0000\u0dbb\u0258\u0001\u0000\u0000\u0000\u0dbc\u0dbd\u0007"+ - "\u0018\u0000\u0000\u0dbd\u0dbe\u0007\r\u0000\u0000\u0dbe\u0dbf\u0007\u0013"+ - "\u0000\u0000\u0dbf\u0dc0\u0007\u000e\u0000\u0000\u0dc0\u0dc1\u0007\n\u0000"+ - "\u0000\u0dc1\u0dc2\u0007\f\u0000\u0000\u0dc2\u0dc3\u0007\u0016\u0000\u0000"+ - "\u0dc3\u0dc4\u0007\r\u0000\u0000\u0dc4\u0dc5\u0007\u0005\u0000\u0000\u0dc5"+ - "\u0dc6\u0007\u0006\u0000\u0000\u0dc6\u025a\u0001\u0000\u0000\u0000\u0dc7"+ - "\u0dc8\u0007\u0018\u0000\u0000\u0dc8\u0dc9\u0007\r\u0000\u0000\u0dc9\u0dca"+ - "\u0007\u0013\u0000\u0000\u0dca\u0dcb\u0007\u000e\u0000\u0000\u0dcb\u0dcc"+ - "\u0007\n\u0000\u0000\u0dcc\u0dcd\u0007\f\u0000\u0000\u0dcd\u0dce\u0007"+ - "\u0016\u0000\u0000\u0dce\u0dcf\u0007\r\u0000\u0000\u0dcf\u0dd0\u0007\n"+ - "\u0000\u0000\u0dd0\u025c\u0001\u0000\u0000\u0000\u0dd1\u0dd2\u0007\u0018"+ - "\u0000\u0000\u0dd2\u0dd3\u0007\r\u0000\u0000\u0dd3\u0dd4\u0007\u0013\u0000"+ - "\u0000\u0dd4\u0dd5\u0007\u0017\u0000\u0000\u0dd5\u0dd6\u0007\r\u0000\u0000"+ - "\u0dd6\u0dd7\u0007\u0005\u0000\u0000\u0dd7\u0dd8\u0007\u000f\u0000\u0000"+ - "\u0dd8\u025e\u0001\u0000\u0000\u0000\u0dd9\u0dda\u0007\u001d\u0000\u0000"+ - "\u0dda\u0ddb\u0007\u0016\u0000\u0000\u0ddb\u0ddc\u0007\u0013\u0000\u0000"+ - "\u0ddc\u0ddd\u0007\u0010\u0000\u0000\u0ddd\u0dde\u0007\n\u0000\u0000\u0dde"+ - "\u0260\u0001\u0000\u0000\u0000\u0ddf\u0de0\u0007\r\u0000\u0000\u0de0\u0de1"+ - "\u0007\u0005\u0000\u0000\u0de1\u0de2\u0007\u0007\u0000\u0000\u0de2\u0de3"+ - "\u0007\u0017\u0000\u0000\u0de3\u0de4\u0007\n\u0000\u0000\u0de4\u0262\u0001"+ - "\u0000\u0000\u0000\u0de5\u0de6\u0007\r\u0000\u0000\u0de6\u0de7\u0007\n"+ - "\u0000\u0000\u0de7\u0de8\u0007\u0005\u0000\u0000\u0de8\u0de9\u0007\f\u0000"+ - "\u0000\u0de9\u0264\u0001\u0000\u0000\u0000\u0dea\u0deb\u0007\r\u0000\u0000"+ - "\u0deb\u0dec\u0007\n\u0000\u0000\u0dec\u0ded\u0007\u0005\u0000\u0000\u0ded"+ - "\u0dee\u0007\t\u0000\u0000\u0dee\u0def\u0007\t\u0000\u0000\u0def\u0df0"+ - "\u0007\u0011\u0000\u0000\u0df0\u0df1\u0007\u0017\u0000\u0000\u0df1\u0df2"+ - "\u0007\u0007\u0000\u0000\u0df2\u0266\u0001\u0000\u0000\u0000\u0df3\u0df4"+ - "\u0007\r\u0000\u0000\u0df4\u0df5\u0007\n\u0000\u0000\u0df5\u0df6\u0007"+ - "\u000e\u0000\u0000\u0df6\u0df7\u0007\u0014\u0000\u0000\u0df7\u0df8\u0007"+ - "\n\u0000\u0000\u0df8\u0df9\u0007\u000e\u0000\u0000\u0df9\u0dfa\u0007\u0015"+ - "\u0000\u0000\u0dfa\u0268\u0001\u0000\u0000\u0000\u0dfb\u0dfc\u0007\r\u0000"+ - "\u0000\u0dfc\u0dfd\u0007\n\u0000\u0000\u0dfd\u0dfe\u0007\u000e\u0000\u0000"+ - "\u0dfe\u0dff\u0007\u0016\u0000\u0000\u0dff\u0e00\u0007\r\u0000\u0000\u0e00"+ - "\u0e01\u0007\t\u0000\u0000\u0e01\u0e02\u0007\u0011\u0000\u0000\u0e02\u0e03"+ - "\u0007\u001b\u0000\u0000\u0e03\u0e04\u0007\n\u0000\u0000\u0e04\u026a\u0001"+ - "\u0000\u0000\u0000\u0e05\u0e06\u0007\r\u0000\u0000\u0e06\u0e07\u0007\n"+ - "\u0000\u0000\u0e07\u0e08\u0007\u0019\u0000\u0000\u0e08\u026c\u0001\u0000"+ - "\u0000\u0000\u0e09\u0e0a\u0007\r\u0000\u0000\u0e0a\u0e0b\u0007\n\u0000"+ - "\u0000\u0e0b\u0e0c\u0007\u0019\u0000\u0000\u0e0c\u0e0d\u0007\r\u0000\u0000"+ - "\u0e0d\u0e0e\u0007\n\u0000\u0000\u0e0e\u0e0f\u0007\t\u0000\u0000\u0e0f"+ - "\u0e10\u0007\u0014\u0000\u0000\u0e10\u026e\u0001\u0000\u0000\u0000\u0e11"+ - "\u0e12\u0007\r\u0000\u0000\u0e12\u0e13\u0007\n\u0000\u0000\u0e13\u0e14"+ - "\u0007\u0011\u0000\u0000\u0e14\u0e15\u0007\u0007\u0000\u0000\u0e15\u0e16"+ - "\u0007\f\u0000\u0000\u0e16\u0e17\u0007\n\u0000\u0000\u0e17\u0e18\u0007"+ - "\u001a\u0000\u0000\u0e18\u0270\u0001\u0000\u0000\u0000\u0e19\u0e1a\u0007"+ - "\r\u0000\u0000\u0e1a\u0e1b\u0007\n\u0000\u0000\u0e1b\u0e1c\u0007\u0006"+ - "\u0000\u0000\u0e1c\u0e1d\u0007\u0005\u0000\u0000\u0e1d\u0e1e\u0007\u0010"+ - "\u0000\u0000\u0e1e\u0e1f\u0007\u0011\u0000\u0000\u0e1f\u0e20\u0007\u001b"+ - "\u0000\u0000\u0e20\u0e21\u0007\n\u0000\u0000\u0e21\u0272\u0001\u0000\u0000"+ - "\u0000\u0e22\u0e23\u0007\r\u0000\u0000\u0e23\u0e24\u0007\n\u0000\u0000"+ - "\u0e24\u0e25\u0007\u0006\u0000\u0000\u0e25\u0e26\u0007\n\u0000\u0000\u0e26"+ - "\u0e27\u0007\u0005\u0000\u0000\u0e27\u0e28\u0007\t\u0000\u0000\u0e28\u0e29"+ - "\u0007\n\u0000\u0000\u0e29\u0274\u0001\u0000\u0000\u0000\u0e2a\u0e2b\u0007"+ - "\r\u0000\u0000\u0e2b\u0e2c\u0007\n\u0000\u0000\u0e2c\u0e2d\u0007\u0007"+ - "\u0000\u0000\u0e2d\u0e2e\u0007\u0005\u0000\u0000\u0e2e\u0e2f\u0007\u000f"+ - "\u0000\u0000\u0e2f\u0e30\u0007\n\u0000\u0000\u0e30\u0276\u0001\u0000\u0000"+ - "\u0000\u0e31\u0e32\u0007\r\u0000\u0000\u0e32\u0e33\u0007\n\u0000\u0000"+ - "\u0e33\u0e34\u0007\u0018\u0000\u0000\u0e34\u0e35\u0007\n\u0000\u0000\u0e35"+ - "\u0e36\u0007\u0005\u0000\u0000\u0e36\u0e37\u0007\u0010\u0000\u0000\u0e37"+ - "\u0e38\u0007\u0005\u0000\u0000\u0e38\u0e39\u0007\u0012\u0000\u0000\u0e39"+ - "\u0e3a\u0007\u0006\u0000\u0000\u0e3a\u0e3b\u0007\n\u0000\u0000\u0e3b\u0278"+ - "\u0001\u0000\u0000\u0000\u0e3c\u0e3d\u0007\r\u0000\u0000\u0e3d\u0e3e\u0007"+ - "\n\u0000\u0000\u0e3e\u0e3f\u0007\u0018\u0000\u0000\u0e3f\u0e40\u0007\u0006"+ - "\u0000\u0000\u0e40\u0e41\u0007\u0005\u0000\u0000\u0e41\u0e42\u0007\u000e"+ - "\u0000\u0000\u0e42\u0e43\u0007\n\u0000\u0000\u0e43\u027a\u0001\u0000\u0000"+ - "\u0000\u0e44\u0e45\u0007\r\u0000\u0000\u0e45\u0e46\u0007\n\u0000\u0000"+ - "\u0e46\u0e47\u0007\u0018\u0000\u0000\u0e47\u0e48\u0007\u0006\u0000\u0000"+ - "\u0e48\u0e49\u0007\u0011\u0000\u0000\u0e49\u0e4a\u0007\u000e\u0000\u0000"+ - "\u0e4a\u0e4b\u0007\u0005\u0000\u0000\u0e4b\u027c\u0001\u0000\u0000\u0000"+ - "\u0e4c\u0e4d\u0007\r\u0000\u0000\u0e4d\u0e4e\u0007\n\u0000\u0000\u0e4e"+ - "\u0e4f\u0007\t\u0000\u0000\u0e4f\u0e50\u0007\n\u0000\u0000\u0e50\u0e51"+ - "\u0007\u0010\u0000\u0000\u0e51\u027e\u0001\u0000\u0000\u0000\u0e52\u0e53"+ - "\u0007\r\u0000\u0000\u0e53\u0e54\u0007\n\u0000\u0000\u0e54\u0e55\u0007"+ - "\t\u0000\u0000\u0e55\u0e56\u0007\u0010\u0000\u0000\u0e56\u0e57\u0007\u0005"+ - "\u0000\u0000\u0e57\u0e58\u0007\r\u0000\u0000\u0e58\u0e59\u0007\u0010\u0000"+ - "\u0000\u0e59\u0280\u0001\u0000\u0000\u0000\u0e5a\u0e5b\u0007\r\u0000\u0000"+ - "\u0e5b\u0e5c\u0007\n\u0000\u0000\u0e5c\u0e5d\u0007\t\u0000\u0000\u0e5d"+ - "\u0e5e\u0007\u0010\u0000\u0000\u0e5e\u0e5f\u0007\r\u0000\u0000\u0e5f\u0e60"+ - "\u0007\u0011\u0000\u0000\u0e60\u0e61\u0007\u000e\u0000\u0000\u0e61\u0e62"+ - "\u0007\u0010\u0000\u0000\u0e62\u0282\u0001\u0000\u0000\u0000\u0e63\u0e64"+ - "\u0007\r\u0000\u0000\u0e64\u0e65\u0007\n\u0000\u0000\u0e65\u0e66\u0007"+ - "\u0010\u0000\u0000\u0e66\u0e67\u0007\u0016\u0000\u0000\u0e67\u0e68\u0007"+ - "\r\u0000\u0000\u0e68\u0e69\u0007\u0007\u0000\u0000\u0e69\u0e6a\u0007\t"+ - "\u0000\u0000\u0e6a\u0284\u0001\u0000\u0000\u0000\u0e6b\u0e6c\u0007\r\u0000"+ - "\u0000\u0e6c\u0e6d\u0007\n\u0000\u0000\u0e6d\u0e6e\u0007\u001b\u0000\u0000"+ - "\u0e6e\u0e6f\u0007\u0013\u0000\u0000\u0e6f\u0e70\u0007\u0015\u0000\u0000"+ - "\u0e70\u0e71\u0007\n\u0000\u0000\u0e71\u0286\u0001\u0000\u0000\u0000\u0e72"+ - "\u0e73\u0007\r\u0000\u0000\u0e73\u0e74\u0007\u0013\u0000\u0000\u0e74\u0e75"+ - "\u0007\u0006\u0000\u0000\u0e75\u0e76\u0007\n\u0000\u0000\u0e76\u0288\u0001"+ - "\u0000\u0000\u0000\u0e77\u0e78\u0007\r\u0000\u0000\u0e78\u0e79\u0007\u0013"+ - "\u0000\u0000\u0e79\u0e7a\u0007\u0006\u0000\u0000\u0e7a\u0e7b\u0007\u0006"+ - "\u0000\u0000\u0e7b\u0e7c\u0007\u0012\u0000\u0000\u0e7c\u0e7d\u0007\u0005"+ - "\u0000\u0000\u0e7d\u0e7e\u0007\u000e\u0000\u0000\u0e7e\u0e7f\u0007\u0015"+ - "\u0000\u0000\u0e7f\u028a\u0001\u0000\u0000\u0000\u0e80\u0e81\u0007\r\u0000"+ - "\u0000\u0e81\u0e82\u0007\u0013\u0000\u0000\u0e82\u0e83\u0007\u001c\u0000"+ - "\u0000\u0e83\u0e84\u0007\t\u0000\u0000\u0e84\u028c\u0001\u0000\u0000\u0000"+ - "\u0e85\u0e86\u0007\r\u0000\u0000\u0e86\u0e87\u0007\u0016\u0000\u0000\u0e87"+ - "\u0e88\u0007\u0006\u0000\u0000\u0e88\u0e89\u0007\n\u0000\u0000\u0e89\u028e"+ - "\u0001\u0000\u0000\u0000\u0e8a\u0e8b\u0007\t\u0000\u0000\u0e8b\u0e8c\u0007"+ - "\u0005\u0000\u0000\u0e8c\u0e8d\u0007\u001b\u0000\u0000\u0e8d\u0e8e\u0007"+ - "\n\u0000\u0000\u0e8e\u0e8f\u0007\u0018\u0000\u0000\u0e8f\u0e90\u0007\u0013"+ - "\u0000\u0000\u0e90\u0e91\u0007\u0011\u0000\u0000\u0e91\u0e92\u0007\u0007"+ - "\u0000\u0000\u0e92\u0e93\u0007\u0010\u0000\u0000\u0e93\u0290\u0001\u0000"+ - "\u0000\u0000\u0e94\u0e95\u0007\t\u0000\u0000\u0e95\u0e96\u0007\u000e\u0000"+ - "\u0000\u0e96\u0e97\u0007\u0014\u0000\u0000\u0e97\u0e98\u0007\n\u0000\u0000"+ - "\u0e98\u0e99\u0007\u000f\u0000\u0000\u0e99\u0e9a\u0007\u0005\u0000\u0000"+ - "\u0e9a\u0292\u0001\u0000\u0000\u0000\u0e9b\u0e9c\u0007\t\u0000\u0000\u0e9c"+ - "\u0e9d\u0007\u000e\u0000\u0000\u0e9d\u0e9e\u0007\r\u0000\u0000\u0e9e\u0e9f"+ - "\u0007\u0013\u0000\u0000\u0e9f\u0ea0\u0007\u0006\u0000\u0000\u0ea0\u0ea1"+ - "\u0007\u0006\u0000\u0000\u0ea1\u0294\u0001\u0000\u0000\u0000\u0ea2\u0ea3"+ - "\u0007\t\u0000\u0000\u0ea3\u0ea4\u0007\n\u0000\u0000\u0ea4\u0ea5\u0007"+ - "\u0005\u0000\u0000\u0ea5\u0ea6\u0007\r\u0000\u0000\u0ea6\u0ea7\u0007\u000e"+ - "\u0000\u0000\u0ea7\u0ea8\u0007\u0014\u0000\u0000\u0ea8\u0296\u0001\u0000"+ - "\u0000\u0000\u0ea9\u0eaa\u0007\t\u0000\u0000\u0eaa\u0eab\u0007\n\u0000"+ - "\u0000\u0eab\u0eac\u0007\u000e\u0000\u0000\u0eac\u0ead\u0007\u0013\u0000"+ - "\u0000\u0ead\u0eae\u0007\u0007\u0000\u0000\u0eae\u0eaf\u0007\f\u0000\u0000"+ - "\u0eaf\u0298\u0001\u0000\u0000\u0000\u0eb0\u0eb1\u0007\t\u0000\u0000\u0eb1"+ - "\u0eb2\u0007\n\u0000\u0000\u0eb2\u0eb3\u0007\u000e\u0000\u0000\u0eb3\u0eb4"+ - "\u0007\u0016\u0000\u0000\u0eb4\u0eb5\u0007\r\u0000\u0000\u0eb5\u0eb6\u0007"+ - "\u0011\u0000\u0000\u0eb6\u0eb7\u0007\u0010\u0000\u0000\u0eb7\u0eb8\u0007"+ - "\b\u0000\u0000\u0eb8\u029a\u0001\u0000\u0000\u0000\u0eb9\u0eba\u0007\t"+ - "\u0000\u0000\u0eba\u0ebb\u0007\n\u0000\u0000\u0ebb\u0ebc\u0007\u001d\u0000"+ - "\u0000\u0ebc\u0ebd\u0007\u0016\u0000\u0000\u0ebd\u0ebe\u0007\n\u0000\u0000"+ - "\u0ebe\u0ebf\u0007\u0007\u0000\u0000\u0ebf\u0ec0\u0007\u000e\u0000\u0000"+ - "\u0ec0\u0ec1\u0007\n\u0000\u0000\u0ec1\u029c\u0001\u0000\u0000\u0000\u0ec2"+ - "\u0ec3\u0007\t\u0000\u0000\u0ec3\u0ec4\u0007\n\u0000\u0000\u0ec4\u0ec5"+ - "\u0007\u001d\u0000\u0000\u0ec5\u0ec6\u0007\u0016\u0000\u0000\u0ec6\u0ec7"+ - "\u0007\n\u0000\u0000\u0ec7\u0ec8\u0007\u0007\u0000\u0000\u0ec8\u0ec9\u0007"+ - "\u000e\u0000\u0000\u0ec9\u0eca\u0007\n\u0000\u0000\u0eca\u0ecb\u0007\t"+ - "\u0000\u0000\u0ecb\u029e\u0001\u0000\u0000\u0000\u0ecc\u0ecd\u0007\t\u0000"+ - "\u0000\u0ecd\u0ece\u0007\n\u0000\u0000\u0ece\u0ecf\u0007\r\u0000\u0000"+ - "\u0ecf\u0ed0\u0007\u0011\u0000\u0000\u0ed0\u0ed1\u0007\u0005\u0000\u0000"+ - "\u0ed1\u0ed2\u0007\u0006\u0000\u0000\u0ed2\u0ed3\u0007\u0011\u0000\u0000"+ - "\u0ed3\u0ed4\u0007\u000b\u0000\u0000\u0ed4\u0ed5\u0007\u0005\u0000\u0000"+ - "\u0ed5\u0ed6\u0007\u0012\u0000\u0000\u0ed6\u0ed7\u0007\u0006\u0000\u0000"+ - "\u0ed7\u0ed8\u0007\n\u0000\u0000\u0ed8\u02a0\u0001\u0000\u0000\u0000\u0ed9"+ - "\u0eda\u0007\t\u0000\u0000\u0eda\u0edb\u0007\n\u0000\u0000\u0edb\u0edc"+ - "\u0007\r\u0000\u0000\u0edc\u0edd\u0007\u001b\u0000\u0000\u0edd\u0ede\u0007"+ - "\n\u0000\u0000\u0ede\u0edf\u0007\r\u0000\u0000\u0edf\u02a2\u0001\u0000"+ - "\u0000\u0000\u0ee0\u0ee1\u0007\t\u0000\u0000\u0ee1\u0ee2\u0007\n\u0000"+ - "\u0000\u0ee2\u0ee3\u0007\t\u0000\u0000\u0ee3\u0ee4\u0007\t\u0000\u0000"+ - "\u0ee4\u0ee5\u0007\u0011\u0000\u0000\u0ee5\u0ee6\u0007\u0013\u0000\u0000"+ - "\u0ee6\u0ee7\u0007\u0007\u0000\u0000\u0ee7\u02a4\u0001\u0000\u0000\u0000"+ - "\u0ee8\u0ee9\u0007\t\u0000\u0000\u0ee9\u0eea\u0007\n\u0000\u0000\u0eea"+ - "\u0eeb\u0007\u0010\u0000\u0000\u0eeb\u02a6\u0001\u0000\u0000\u0000\u0eec"+ - "\u0eed\u0007\t\u0000\u0000\u0eed\u0eee\u0007\u0014\u0000\u0000\u0eee\u0eef"+ - "\u0007\u0005\u0000\u0000\u0eef\u0ef0\u0007\r\u0000\u0000\u0ef0\u0ef1\u0007"+ - "\n\u0000\u0000\u0ef1\u02a8\u0001\u0000\u0000\u0000\u0ef2\u0ef3\u0007\t"+ - "\u0000\u0000\u0ef3\u0ef4\u0007\u0014\u0000\u0000\u0ef4\u0ef5\u0007\u0013"+ - "\u0000\u0000\u0ef5\u0ef6\u0007\u001c\u0000\u0000\u0ef6\u02aa\u0001\u0000"+ - "\u0000\u0000\u0ef7\u0ef8\u0007\t\u0000\u0000\u0ef8\u0ef9\u0007\u0011\u0000"+ - "\u0000\u0ef9\u0efa\u0007\u000f\u0000\u0000\u0efa\u0efb\u0007\u0018\u0000"+ - "\u0000\u0efb\u0efc\u0007\u0006\u0000\u0000\u0efc\u0efd\u0007\n\u0000\u0000"+ - "\u0efd\u02ac\u0001\u0000\u0000\u0000\u0efe\u0eff\u0007\t\u0000\u0000\u0eff"+ - "\u0f00\u0007\u0007\u0000\u0000\u0f00\u0f01\u0007\u0005\u0000\u0000\u0f01"+ - "\u0f02\u0007\u0018\u0000\u0000\u0f02\u0f03\u0007\t\u0000\u0000\u0f03\u0f04"+ - "\u0007\u0014\u0000\u0000\u0f04\u0f05\u0007\u0013\u0000\u0000\u0f05\u0f06"+ - "\u0007\u0010\u0000\u0000\u0f06\u02ae\u0001\u0000\u0000\u0000\u0f07\u0f08"+ - "\u0007\t\u0000\u0000\u0f08\u0f09\u0007\u0010\u0000\u0000\u0f09\u0f0a\u0007"+ - "\u0005\u0000\u0000\u0f0a\u0f0b\u0007\u0012\u0000\u0000\u0f0b\u0f0c\u0007"+ - "\u0006\u0000\u0000\u0f0c\u0f0d\u0007\n\u0000\u0000\u0f0d\u02b0\u0001\u0000"+ - "\u0000\u0000\u0f0e\u0f0f\u0007\t\u0000\u0000\u0f0f\u0f10\u0007\u0010\u0000"+ - "\u0000\u0f10\u0f11\u0007\u0005\u0000\u0000\u0f11\u0f12\u0007\u0007\u0000"+ - "\u0000\u0f12\u0f13\u0007\f\u0000\u0000\u0f13\u0f14\u0007\u0005\u0000\u0000"+ - "\u0f14\u0f15\u0007\u0006\u0000\u0000\u0f15\u0f16\u0007\u0013\u0000\u0000"+ - "\u0f16\u0f17\u0007\u0007\u0000\u0000\u0f17\u0f18\u0007\n\u0000\u0000\u0f18"+ - "\u02b2\u0001\u0000\u0000\u0000\u0f19\u0f1a\u0007\t\u0000\u0000\u0f1a\u0f1b"+ - "\u0007\u0010\u0000\u0000\u0f1b\u0f1c\u0007\u0005\u0000\u0000\u0f1c\u0f1d"+ - "\u0007\r\u0000\u0000\u0f1d\u0f1e\u0007\u0010\u0000\u0000\u0f1e\u02b4\u0001"+ - "\u0000\u0000\u0000\u0f1f\u0f20\u0007\t\u0000\u0000\u0f20\u0f21\u0007\u0010"+ - "\u0000\u0000\u0f21\u0f22\u0007\u0005\u0000\u0000\u0f22\u0f23\u0007\u0010"+ - "\u0000\u0000\u0f23\u0f24\u0007\n\u0000\u0000\u0f24\u0f25\u0007\u000f\u0000"+ - "\u0000\u0f25\u0f26\u0007\n\u0000\u0000\u0f26\u0f27\u0007\u0007\u0000\u0000"+ - "\u0f27\u0f28\u0007\u0010\u0000\u0000\u0f28\u02b6\u0001\u0000\u0000\u0000"+ - "\u0f29\u0f2a\u0007\t\u0000\u0000\u0f2a\u0f2b\u0007\u0010\u0000\u0000\u0f2b"+ - "\u0f2c\u0007\u0005\u0000\u0000\u0f2c\u0f2d\u0007\u0010\u0000\u0000\u0f2d"+ - "\u0f2e\u0007\u0011\u0000\u0000\u0f2e\u0f2f\u0007\t\u0000\u0000\u0f2f\u0f30"+ - "\u0007\u0010\u0000\u0000\u0f30\u0f31\u0007\u0011\u0000\u0000\u0f31\u0f32"+ - "\u0007\u000e\u0000\u0000\u0f32\u0f33\u0007\t\u0000\u0000\u0f33\u02b8\u0001"+ - "\u0000\u0000\u0000\u0f34\u0f35\u0007\t\u0000\u0000\u0f35\u0f36\u0007\u0010"+ - "\u0000\u0000\u0f36\u0f37\u0007\f\u0000\u0000\u0f37\u0f38\u0007\u0011\u0000"+ - "\u0000\u0f38\u0f39\u0007\u0007\u0000\u0000\u0f39\u02ba\u0001\u0000\u0000"+ - "\u0000\u0f3a\u0f3b\u0007\t\u0000\u0000\u0f3b\u0f3c\u0007\u0010\u0000\u0000"+ - "\u0f3c\u0f3d\u0007\f\u0000\u0000\u0f3d\u0f3e\u0007\u0013\u0000\u0000\u0f3e"+ - "\u0f3f\u0007\u0016\u0000\u0000\u0f3f\u0f40\u0007\u0010\u0000\u0000\u0f40"+ - "\u02bc\u0001\u0000\u0000\u0000\u0f41\u0f42\u0007\t\u0000\u0000\u0f42\u0f43"+ - "\u0007\u0010\u0000\u0000\u0f43\u0f44\u0007\u0013\u0000\u0000\u0f44\u0f45"+ - "\u0007\r\u0000\u0000\u0f45\u0f46\u0007\u0005\u0000\u0000\u0f46\u0f47\u0007"+ - "\u0017\u0000\u0000\u0f47\u0f48\u0007\n\u0000\u0000\u0f48\u02be\u0001\u0000"+ - "\u0000\u0000\u0f49\u0f4a\u0007\t\u0000\u0000\u0f4a\u0f4b\u0007\u0010\u0000"+ - "\u0000\u0f4b\u0f4c\u0007\r\u0000\u0000\u0f4c\u0f4d\u0007\u0011\u0000\u0000"+ - "\u0f4d\u0f4e\u0007\u000e\u0000\u0000\u0f4e\u0f4f\u0007\u0010\u0000\u0000"+ - "\u0f4f\u02c0\u0001\u0000\u0000\u0000\u0f50\u0f51\u0007\t\u0000\u0000\u0f51"+ - "\u0f52\u0007\u0010\u0000\u0000\u0f52\u0f53\u0007\r\u0000\u0000\u0f53\u0f54"+ - "\u0007\u0011\u0000\u0000\u0f54\u0f55\u0007\u0018\u0000\u0000\u0f55\u02c2"+ - "\u0001\u0000\u0000\u0000\u0f56\u0f57\u0007\t\u0000\u0000\u0f57\u0f58\u0007"+ - "\b\u0000\u0000\u0f58\u0f59\u0007\t\u0000\u0000\u0f59\u0f5a\u0007\u0011"+ - "\u0000\u0000\u0f5a\u0f5b\u0007\f\u0000\u0000\u0f5b\u02c4\u0001\u0000\u0000"+ - "\u0000\u0f5c\u0f5d\u0007\t\u0000\u0000\u0f5d\u0f5e\u0007\b\u0000\u0000"+ - "\u0f5e\u0f5f\u0007\t\u0000\u0000\u0f5f\u0f60\u0007\u0010\u0000\u0000\u0f60"+ - "\u0f61\u0007\n\u0000\u0000\u0f61\u0f62\u0007\u000f\u0000\u0000\u0f62\u02c6"+ - "\u0001\u0000\u0000\u0000\u0f63\u0f64\u0007\u0010\u0000\u0000\u0f64\u0f65"+ - "\u0007\u0005\u0000\u0000\u0f65\u0f66\u0007\u0012\u0000\u0000\u0f66\u0f67"+ - "\u0007\u0006\u0000\u0000\u0f67\u0f68\u0007\n\u0000\u0000\u0f68\u0f69\u0007"+ - "\t\u0000\u0000\u0f69\u02c8\u0001\u0000\u0000\u0000\u0f6a\u0f6b\u0007\u000b"+ - "\u0000\u0000\u0f6b\u0f6c\u0007\u0010\u0000\u0000\u0f6c\u0f6d\u0007\u0005"+ - "\u0000\u0000\u0f6d\u0f6e\u0007\u0012\u0000\u0000\u0f6e\u0f6f\u0007\u0006"+ - "\u0000\u0000\u0f6f\u0f70\u0007\n\u0000\u0000\u0f70\u0f71\u0007\t\u0000"+ - "\u0000\u0f71\u02ca\u0001\u0000\u0000\u0000\u0f72\u0f73\u0007\u0010\u0000"+ - "\u0000\u0f73\u0f74\u0007\u0005\u0000\u0000\u0f74\u0f75\u0007\u0012\u0000"+ - "\u0000\u0f75\u0f76\u0007\u0006\u0000\u0000\u0f76\u0f77\u0007\n\u0000\u0000"+ - "\u0f77\u0f78\u0007\t\u0000\u0000\u0f78\u0f79\u0007\u0018\u0000\u0000\u0f79"+ - "\u0f7a\u0007\u0005\u0000\u0000\u0f7a\u0f7b\u0007\u000e\u0000\u0000\u0f7b"+ - "\u0f7c\u0007\n\u0000\u0000\u0f7c\u02cc\u0001\u0000\u0000\u0000\u0f7d\u0f7e"+ - "\u0007\u0010\u0000\u0000\u0f7e\u0f7f\u0007\n\u0000\u0000\u0f7f\u0f80\u0007"+ - "\u000f\u0000\u0000\u0f80\u0f81\u0007\u0018\u0000\u0000\u0f81\u02ce\u0001"+ - "\u0000\u0000\u0000\u0f82\u0f83\u0007\u0010\u0000\u0000\u0f83\u0f84\u0007"+ - "\n\u0000\u0000\u0f84\u0f85\u0007\u000f\u0000\u0000\u0f85\u0f86\u0007\u0018"+ - "\u0000\u0000\u0f86\u0f87\u0007\u0006\u0000\u0000\u0f87\u0f88\u0007\u0005"+ - "\u0000\u0000\u0f88\u0f89\u0007\u0010\u0000\u0000\u0f89\u0f8a\u0007\n\u0000"+ - "\u0000\u0f8a\u02d0\u0001\u0000\u0000\u0000\u0f8b\u0f8c\u0007\u0010\u0000"+ - "\u0000\u0f8c\u0f8d\u0007\n\u0000\u0000\u0f8d\u0f8e\u0007\u000f\u0000\u0000"+ - "\u0f8e\u0f8f\u0007\u0018\u0000\u0000\u0f8f\u0f90\u0007\u0013\u0000\u0000"+ - "\u0f90\u0f91\u0007\r\u0000\u0000\u0f91\u0f92\u0007\u0005\u0000\u0000\u0f92"+ - "\u0f93\u0007\r\u0000\u0000\u0f93\u0f94\u0007\b\u0000\u0000\u0f94\u02d2"+ - "\u0001\u0000\u0000\u0000\u0f95\u0f96\u0007\u0010\u0000\u0000\u0f96\u0f97"+ - "\u0007\n\u0000\u0000\u0f97\u0f98\u0007\u001a\u0000\u0000\u0f98\u0f99\u0007"+ - "\u0010\u0000\u0000\u0f99\u02d4\u0001\u0000\u0000\u0000\u0f9a\u0f9b\u0007"+ - "\u0010\u0000\u0000\u0f9b\u0f9c\u0007\r\u0000\u0000\u0f9c\u0f9d\u0007\u0005"+ - "\u0000\u0000\u0f9d\u0f9e\u0007\u0007\u0000\u0000\u0f9e\u0f9f\u0007\t\u0000"+ - "\u0000\u0f9f\u0fa0\u0007\u0005\u0000\u0000\u0fa0\u0fa1\u0007\u000e\u0000"+ - "\u0000\u0fa1\u0fa2\u0007\u0010\u0000\u0000\u0fa2\u0fa3\u0007\u0011\u0000"+ - "\u0000\u0fa3\u0fa4\u0007\u0013\u0000\u0000\u0fa4\u0fa5\u0007\u0007\u0000"+ - "\u0000\u0fa5\u02d6\u0001\u0000\u0000\u0000\u0fa6\u0fa7\u0007\u0010\u0000"+ - "\u0000\u0fa7\u0fa8\u0007\r\u0000\u0000\u0fa8\u0fa9\u0007\u0011\u0000\u0000"+ - "\u0fa9\u0faa\u0007\u0017\u0000\u0000\u0faa\u0fab\u0007\u0017\u0000\u0000"+ - "\u0fab\u0fac\u0007\n\u0000\u0000\u0fac\u0fad\u0007\r\u0000\u0000\u0fad"+ - "\u02d8\u0001\u0000\u0000\u0000\u0fae\u0faf\u0007\u0010\u0000\u0000\u0faf"+ - "\u0fb0\u0007\r\u0000\u0000\u0fb0\u0fb1\u0007\u0016\u0000\u0000\u0fb1\u0fb2"+ - "\u0007\u0007\u0000\u0000\u0fb2\u0fb3\u0007\u000e\u0000\u0000\u0fb3\u0fb4"+ - "\u0007\u0005\u0000\u0000\u0fb4\u0fb5\u0007\u0010\u0000\u0000\u0fb5\u0fb6"+ - "\u0007\n\u0000\u0000\u0fb6\u02da\u0001\u0000\u0000\u0000\u0fb7\u0fb8\u0007"+ - "\u0010\u0000\u0000\u0fb8\u0fb9\u0007\r\u0000\u0000\u0fb9\u0fba\u0007\u0016"+ - "\u0000\u0000\u0fba\u0fbb\u0007\t\u0000\u0000\u0fbb\u0fbc\u0007\u0010\u0000"+ - "\u0000\u0fbc\u0fbd\u0007\n\u0000\u0000\u0fbd\u0fbe\u0007\f\u0000\u0000"+ - "\u0fbe\u02dc\u0001\u0000\u0000\u0000\u0fbf\u0fc0\u0007\u0010\u0000\u0000"+ - "\u0fc0\u0fc1\u0007\b\u0000\u0000\u0fc1\u0fc2\u0007\u0018\u0000\u0000\u0fc2"+ - "\u0fc3\u0007\n\u0000\u0000\u0fc3\u02de\u0001\u0000\u0000\u0000\u0fc4\u0fc5"+ - "\u0007\u0010\u0000\u0000\u0fc5\u0fc6\u0007\b\u0000\u0000\u0fc6\u0fc7\u0007"+ - "\u0018\u0000\u0000\u0fc7\u0fc8\u0007\n\u0000\u0000\u0fc8\u0fc9\u0007\t"+ - "\u0000\u0000\u0fc9\u02e0\u0001\u0000\u0000\u0000\u0fca\u0fcb\u0007\u0016"+ - "\u0000\u0000\u0fcb\u0fcc\u0007\u0007\u0000\u0000\u0fcc\u0fcd\u0007\u0012"+ - "\u0000\u0000\u0fcd\u0fce\u0007\u0013\u0000\u0000\u0fce\u0fcf\u0007\u0016"+ - "\u0000\u0000\u0fcf\u0fd0\u0007\u0007\u0000\u0000\u0fd0\u0fd1\u0007\f\u0000"+ - "\u0000\u0fd1\u0fd2\u0007\n\u0000\u0000\u0fd2\u0fd3\u0007\f\u0000\u0000"+ - "\u0fd3\u02e2\u0001\u0000\u0000\u0000\u0fd4\u0fd5\u0007\u0016\u0000\u0000"+ - "\u0fd5\u0fd6\u0007\u0007\u0000\u0000\u0fd6\u0fd7\u0007\u000e\u0000\u0000"+ - "\u0fd7\u0fd8\u0007\u0013\u0000\u0000\u0fd8\u0fd9\u0007\u000f\u0000\u0000"+ - "\u0fd9\u0fda\u0007\u000f\u0000\u0000\u0fda\u0fdb\u0007\u0011\u0000\u0000"+ - "\u0fdb\u0fdc\u0007\u0010\u0000\u0000\u0fdc\u0fdd\u0007\u0010\u0000\u0000"+ - "\u0fdd\u0fde\u0007\n\u0000\u0000\u0fde\u0fdf\u0007\f\u0000\u0000\u0fdf"+ - "\u02e4\u0001\u0000\u0000\u0000\u0fe0\u0fe1\u0007\u0016\u0000\u0000\u0fe1"+ - "\u0fe2\u0007\u0007\u0000\u0000\u0fe2\u0fe3\u0007\n\u0000\u0000\u0fe3\u0fe4"+ - "\u0007\u0007\u0000\u0000\u0fe4\u0fe5\u0007\u000e\u0000\u0000\u0fe5\u0fe6"+ - "\u0007\r\u0000\u0000\u0fe6\u0fe7\u0007\b\u0000\u0000\u0fe7\u0fe8\u0007"+ - "\u0018\u0000\u0000\u0fe8\u0fe9\u0007\u0010\u0000\u0000\u0fe9\u0fea\u0007"+ - "\n\u0000\u0000\u0fea\u0feb\u0007\f\u0000\u0000\u0feb\u02e6\u0001\u0000"+ - "\u0000\u0000\u0fec\u0fed\u0007\u0016\u0000\u0000\u0fed\u0fee\u0007\u0007"+ - "\u0000\u0000\u0fee\u0fef\u0007\u0015\u0000\u0000\u0fef\u0ff0\u0007\u0007"+ - "\u0000\u0000\u0ff0\u0ff1\u0007\u0013\u0000\u0000\u0ff1\u0ff2\u0007\u001c"+ - "\u0000\u0000\u0ff2\u0ff3\u0007\u0007\u0000\u0000\u0ff3\u02e8\u0001\u0000"+ - "\u0000\u0000\u0ff4\u0ff5\u0007\u0016\u0000\u0000\u0ff5\u0ff6\u0007\u0007"+ - "\u0000\u0000\u0ff6\u0ff7\u0007\u0006\u0000\u0000\u0ff7\u0ff8\u0007\u0011"+ - "\u0000\u0000\u0ff8\u0ff9\u0007\t\u0000\u0000\u0ff9\u0ffa\u0007\u0010\u0000"+ - "\u0000\u0ffa\u0ffb\u0007\n\u0000\u0000\u0ffb\u0ffc\u0007\u0007\u0000\u0000"+ - "\u0ffc\u02ea\u0001\u0000\u0000\u0000\u0ffd\u0ffe\u0007\u0016\u0000\u0000"+ - "\u0ffe\u0fff\u0007\u0007\u0000\u0000\u0fff\u1000\u0007\u0006\u0000\u0000"+ - "\u1000\u1001\u0007\u0013\u0000\u0000\u1001\u1002\u0007\u0017\u0000\u0000"+ - "\u1002\u1003\u0007\u0017\u0000\u0000\u1003\u1004\u0007\n\u0000\u0000\u1004"+ - "\u1005\u0007\f\u0000\u0000\u1005\u02ec\u0001\u0000\u0000\u0000\u1006\u1007"+ - "\u0007\u0016\u0000\u0000\u1007\u1008\u0007\u0007\u0000\u0000\u1008\u1009"+ - "\u0007\u0010\u0000\u0000\u1009\u100a\u0007\u0011\u0000\u0000\u100a\u100b"+ - "\u0007\u0006\u0000\u0000\u100b\u02ee\u0001\u0000\u0000\u0000\u100c\u100d"+ - "\u0007\u0016\u0000\u0000\u100d\u100e\u0007\u0018\u0000\u0000\u100e\u100f"+ - "\u0007\f\u0000\u0000\u100f\u1010\u0007\u0005\u0000\u0000\u1010\u1011\u0007"+ - "\u0010\u0000\u0000\u1011\u1012\u0007\n\u0000\u0000\u1012\u02f0\u0001\u0000"+ - "\u0000\u0000\u1013\u1014\u0007\u001b\u0000\u0000\u1014\u1015\u0007\u0005"+ - "\u0000\u0000\u1015\u1016\u0007\u000e\u0000\u0000\u1016\u1017\u0007\u0016"+ - "\u0000\u0000\u1017\u1018\u0007\u0016\u0000\u0000\u1018\u1019\u0007\u000f"+ - "\u0000\u0000\u1019\u02f2\u0001\u0000\u0000\u0000\u101a\u101b\u0007\u001b"+ - "\u0000\u0000\u101b\u101c\u0007\u0005\u0000\u0000\u101c\u101d\u0007\u0006"+ - "\u0000\u0000\u101d\u101e\u0007\u0011\u0000\u0000\u101e\u101f\u0007\f\u0000"+ - "\u0000\u101f\u02f4\u0001\u0000\u0000\u0000\u1020\u1021\u0007\u001b\u0000"+ - "\u0000\u1021\u1022\u0007\u0005\u0000\u0000\u1022\u1023\u0007\u0006\u0000"+ - "\u0000\u1023\u1024\u0007\u0011\u0000\u0000\u1024\u1025\u0007\f\u0000\u0000"+ - "\u1025\u1026\u0007\u0005\u0000\u0000\u1026\u1027\u0007\u0010\u0000\u0000"+ - "\u1027\u1028\u0007\n\u0000\u0000\u1028\u02f6\u0001\u0000\u0000\u0000\u1029"+ - "\u102a\u0007\u001b\u0000\u0000\u102a\u102b\u0007\u0005\u0000\u0000\u102b"+ - "\u102c\u0007\u0006\u0000\u0000\u102c\u102d\u0007\u0011\u0000\u0000\u102d"+ - "\u102e\u0007\f\u0000\u0000\u102e\u102f\u0007\u0005\u0000\u0000\u102f\u1030"+ - "\u0007\u0010\u0000\u0000\u1030\u1031\u0007\u0013\u0000\u0000\u1031\u1032"+ - "\u0007\r\u0000\u0000\u1032\u02f8\u0001\u0000\u0000\u0000\u1033\u1034\u0007"+ - "\u001b\u0000\u0000\u1034\u1035\u0007\u0005\u0000\u0000\u1035\u1036\u0007"+ - "\r\u0000\u0000\u1036\u1037\u0007\b\u0000\u0000\u1037\u1038\u0007\u0011"+ - "\u0000\u0000\u1038\u1039\u0007\u0007\u0000\u0000\u1039\u103a\u0007\u0017"+ - "\u0000\u0000\u103a\u02fa\u0001\u0000\u0000\u0000\u103b\u103c\u0007\u001b"+ - "\u0000\u0000\u103c\u103d\u0007\n\u0000\u0000\u103d\u103e\u0007\r\u0000"+ - "\u0000\u103e\u103f\u0007\t\u0000\u0000\u103f\u1040\u0007\u0011\u0000\u0000"+ - "\u1040\u1041\u0007\u0013\u0000\u0000\u1041\u1042\u0007\u0007\u0000\u0000"+ - "\u1042\u02fc\u0001\u0000\u0000\u0000\u1043\u1044\u0007\u001b\u0000\u0000"+ - "\u1044\u1045\u0007\u0011\u0000\u0000\u1045\u1046\u0007\n\u0000\u0000\u1046"+ - "\u1047\u0007\u001c\u0000\u0000\u1047\u02fe\u0001\u0000\u0000\u0000\u1048"+ - "\u1049\u0007\u001b\u0000\u0000\u1049\u104a\u0007\u0013\u0000\u0000\u104a"+ - "\u104b\u0007\u0006\u0000\u0000\u104b\u104c\u0007\u0005\u0000\u0000\u104c"+ - "\u104d\u0007\u0010\u0000\u0000\u104d\u104e\u0007\u0011\u0000\u0000\u104e"+ - "\u104f\u0007\u0006\u0000\u0000\u104f\u1050\u0007\n\u0000\u0000\u1050\u0300"+ - "\u0001\u0000\u0000\u0000\u1051\u1052\u0007\u001c\u0000\u0000\u1052\u1053"+ - "\u0007\u0014\u0000\u0000\u1053\u1054\u0007\u0011\u0000\u0000\u1054\u1055"+ - "\u0007\u0010\u0000\u0000\u1055\u1056\u0007\n\u0000\u0000\u1056\u1057\u0007"+ - "\t\u0000\u0000\u1057\u1058\u0007\u0018\u0000\u0000\u1058\u1059\u0007\u0005"+ - "\u0000\u0000\u1059\u105a\u0007\u000e\u0000\u0000\u105a\u105b\u0007\n\u0000"+ - "\u0000\u105b\u0302\u0001\u0000\u0000\u0000\u105c\u105d\u0007\u001c\u0000"+ - "\u0000\u105d\u105e\u0007\u0011\u0000\u0000\u105e\u105f\u0007\u0010\u0000"+ - "\u0000\u105f\u1060\u0007\u0014\u0000\u0000\u1060\u1061\u0007\u0013\u0000"+ - "\u0000\u1061\u1062\u0007\u0016\u0000\u0000\u1062\u1063\u0007\u0010\u0000"+ - "\u0000\u1063\u0304\u0001\u0000\u0000\u0000\u1064\u1065\u0007\u001c\u0000"+ - "\u0000\u1065\u1066\u0007\u0013\u0000\u0000\u1066\u1067\u0007\r\u0000\u0000"+ - "\u1067\u1068\u0007\u0015\u0000\u0000\u1068\u0306\u0001\u0000\u0000\u0000"+ - "\u1069\u106a\u0007\u001c\u0000\u0000\u106a\u106b\u0007\r\u0000\u0000\u106b"+ - "\u106c\u0007\u0005\u0000\u0000\u106c\u106d\u0007\u0018\u0000\u0000\u106d"+ - "\u106e\u0007\u0018\u0000\u0000\u106e\u106f\u0007\n\u0000\u0000\u106f\u1070"+ - "\u0007\r\u0000\u0000\u1070\u0308\u0001\u0000\u0000\u0000\u1071\u1072\u0007"+ - "\u001c\u0000\u0000\u1072\u1073\u0007\r\u0000\u0000\u1073\u1074\u0007\u0011"+ - "\u0000\u0000\u1074\u1075\u0007\u0010\u0000\u0000\u1075\u1076\u0007\n\u0000"+ - "\u0000\u1076\u030a\u0001\u0000\u0000\u0000\u1077\u1078\u0007\u001a\u0000"+ - "\u0000\u1078\u1079\u0007\u000f\u0000\u0000\u1079\u107a\u0007\u0006\u0000"+ - "\u0000\u107a\u030c\u0001\u0000\u0000\u0000\u107b\u107c\u0007\b\u0000\u0000"+ - "\u107c\u107d\u0007\n\u0000\u0000\u107d\u107e\u0007\u0005\u0000\u0000\u107e"+ - "\u107f\u0007\r\u0000\u0000\u107f\u030e\u0001\u0000\u0000\u0000\u1080\u1081"+ - "\u0007\b\u0000\u0000\u1081\u1082\u0007\n\u0000\u0000\u1082\u1083\u0007"+ - "\t\u0000\u0000\u1083\u0310\u0001\u0000\u0000\u0000\u1084\u1085\u0007\u000b"+ - "\u0000\u0000\u1085\u1086\u0007\u0013\u0000\u0000\u1086\u1087\u0007\u0007"+ - "\u0000\u0000\u1087\u1088\u0007\n\u0000\u0000\u1088\u0312\u0001\u0000\u0000"+ - "\u0000\u1089\u108a\u0007\u0012\u0000\u0000\u108a\u108b\u0007\n\u0000\u0000"+ - "\u108b\u108c\u0007\u0010\u0000\u0000\u108c\u108d\u0007\u001c\u0000\u0000"+ - "\u108d\u108e\u0007\n\u0000\u0000\u108e\u108f\u0007\n\u0000\u0000\u108f"+ - "\u1090\u0007\u0007\u0000\u0000\u1090\u0314\u0001\u0000\u0000\u0000\u1091"+ - "\u1092\u0007\u0012\u0000\u0000\u1092\u1093\u0007\u0011\u0000\u0000\u1093"+ - "\u1094\u0007\u0017\u0000\u0000\u1094\u1095\u0007\u0011\u0000\u0000\u1095"+ - "\u1096\u0007\u0007\u0000\u0000\u1096\u1097\u0007\u0010\u0000\u0000\u1097"+ - "\u0316\u0001\u0000\u0000\u0000\u1098\u1099\u0007\u0012\u0000\u0000\u1099"+ - "\u109a\u0007\u0011\u0000\u0000\u109a\u109b\u0007\u0010\u0000\u0000\u109b"+ - "\u0318\u0001\u0000\u0000\u0000\u109c\u109d\u0007\u0012\u0000\u0000\u109d"+ - "\u109e\u0007\u0013\u0000\u0000\u109e\u109f\u0007\u0013\u0000\u0000\u109f"+ - "\u10a0\u0007\u0006\u0000\u0000\u10a0\u10a1\u0007\n\u0000\u0000\u10a1\u10a2"+ - "\u0007\u0005\u0000\u0000\u10a2\u10a3\u0007\u0007\u0000\u0000\u10a3\u031a"+ - "\u0001\u0000\u0000\u0000\u10a4\u10a5\u0007\u000e\u0000\u0000\u10a5\u10a6"+ - "\u0007\u0014\u0000\u0000\u10a6\u10a7\u0007\u0005\u0000\u0000\u10a7\u10a8"+ - "\u0007\r\u0000\u0000\u10a8\u031c\u0001\u0000\u0000\u0000\u10a9\u10aa\u0007"+ - "\u000e\u0000\u0000\u10aa\u10ab\u0007\u0014\u0000\u0000\u10ab\u10ac\u0007"+ - "\u0005\u0000\u0000\u10ac\u10ad\u0007\r\u0000\u0000\u10ad\u10ae\u0007\u0005"+ - "\u0000\u0000\u10ae\u10af\u0007\u000e\u0000\u0000\u10af\u10b0\u0007\u0010"+ - "\u0000\u0000\u10b0\u10b1\u0007\n\u0000\u0000\u10b1\u10b2\u0007\r\u0000"+ - "\u0000\u10b2\u031e\u0001\u0000\u0000\u0000\u10b3\u10b4\u0007\u000e\u0000"+ - "\u0000\u10b4\u10b5\u0007\u0013\u0000\u0000\u10b5\u10b6\u0007\u0005\u0000"+ - "\u0000\u10b6\u10b7\u0007\u0006\u0000\u0000\u10b7\u10b8\u0007\n\u0000\u0000"+ - "\u10b8\u10b9\u0007\t\u0000\u0000\u10b9\u10ba\u0007\u000e\u0000\u0000\u10ba"+ - "\u10bb\u0007\n\u0000\u0000\u10bb\u0320\u0001\u0000\u0000\u0000\u10bc\u10bd"+ - "\u0007\f\u0000\u0000\u10bd\u10be\u0007\n\u0000\u0000\u10be\u10bf\u0007"+ - "\u000e\u0000\u0000\u10bf\u0322\u0001\u0000\u0000\u0000\u10c0\u10c1\u0007"+ - "\f\u0000\u0000\u10c1\u10c2\u0007\n\u0000\u0000\u10c2\u10c3\u0007\u000e"+ - "\u0000\u0000\u10c3\u10c4\u0007\u0011\u0000\u0000\u10c4\u10c5\u0007\u000f"+ - "\u0000\u0000\u10c5\u10c6\u0007\u0005\u0000\u0000\u10c6\u10c7\u0007\u0006"+ - "\u0000\u0000\u10c7\u0324\u0001\u0000\u0000\u0000\u10c8\u10c9\u0007\n\u0000"+ - "\u0000\u10c9\u10ca\u0007\u001a\u0000\u0000\u10ca\u10cb\u0007\u0011\u0000"+ - "\u0000\u10cb\u10cc\u0007\t\u0000\u0000\u10cc\u10cd\u0007\u0010\u0000\u0000"+ - "\u10cd\u10ce\u0007\t\u0000\u0000\u10ce\u0326\u0001\u0000\u0000\u0000\u10cf"+ - "\u10d0\u0007\n\u0000\u0000\u10d0\u10d1\u0007\u001a\u0000\u0000\u10d1\u10d2"+ - "\u0007\u0010\u0000\u0000\u10d2\u10d3\u0007\r\u0000\u0000\u10d3\u10d4\u0007"+ - "\u0005\u0000\u0000\u10d4\u10d5\u0007\u000e\u0000\u0000\u10d5\u10d6\u0007"+ - "\u0010\u0000\u0000\u10d6\u0328\u0001\u0000\u0000\u0000\u10d7\u10d8\u0007"+ - "\u0019\u0000\u0000\u10d8\u10d9\u0007\u0006\u0000\u0000\u10d9\u10da\u0007"+ - "\u0013\u0000\u0000\u10da\u10db\u0007\u0005\u0000\u0000\u10db\u10dc\u0007"+ - "\u0010\u0000\u0000\u10dc\u032a\u0001\u0000\u0000\u0000\u10dd\u10de\u0007"+ - "\u0017\u0000\u0000\u10de\u10df\u0007\r\u0000\u0000\u10df\u10e0\u0007\n"+ - "\u0000\u0000\u10e0\u10e1\u0007\u0005\u0000\u0000\u10e1\u10e2\u0007\u0010"+ - "\u0000\u0000\u10e2\u10e3\u0007\n\u0000\u0000\u10e3\u10e4\u0007\t\u0000"+ - "\u0000\u10e4\u10e5\u0007\u0010\u0000\u0000\u10e5\u032c\u0001\u0000\u0000"+ - "\u0000\u10e6\u10e7\u0007\u0011\u0000\u0000\u10e7\u10e8\u0007\u0007\u0000"+ - "\u0000\u10e8\u10e9\u0007\u0013\u0000\u0000\u10e9\u10ea\u0007\u0016\u0000"+ - "\u0000\u10ea\u10eb\u0007\u0010\u0000\u0000\u10eb\u032e\u0001\u0000\u0000"+ - "\u0000\u10ec\u10ed\u0007\u0011\u0000\u0000\u10ed\u10ee\u0007\u0007\u0000"+ - "\u0000\u10ee\u10ef\u0007\u0010\u0000\u0000\u10ef\u0330\u0001\u0000\u0000"+ - "\u0000\u10f0\u10f1\u0007\u0011\u0000\u0000\u10f1\u10f2\u0007\u0007\u0000"+ - "\u0000\u10f2\u10f3\u0007\u0010\u0000\u0000\u10f3\u10f4\u0007\n\u0000\u0000"+ - "\u10f4\u10f5\u0007\u0017\u0000\u0000\u10f5\u10f6\u0007\n\u0000\u0000\u10f6"+ - "\u10f7\u0007\r\u0000\u0000\u10f7\u0332\u0001\u0000\u0000\u0000\u10f8\u10f9"+ - "\u0007\u0011\u0000\u0000\u10f9\u10fa\u0007\u0007\u0000\u0000\u10fa\u10fb"+ - "\u0007\u0010\u0000\u0000\u10fb\u10fc\u0007\n\u0000\u0000\u10fc\u10fd\u0007"+ - "\r\u0000\u0000\u10fd\u10fe\u0007\u001b\u0000\u0000\u10fe\u10ff\u0007\u0005"+ - "\u0000\u0000\u10ff\u1100\u0007\u0006\u0000\u0000\u1100\u0334\u0001\u0000"+ - "\u0000\u0000\u1101\u1102\u0007\u0006\u0000\u0000\u1102\u1103\u0007\n\u0000"+ - "\u0000\u1103\u1104\u0007\u0005\u0000\u0000\u1104\u1105\u0007\t\u0000\u0000"+ - "\u1105\u1106\u0007\u0010\u0000\u0000\u1106\u0336\u0001\u0000\u0000\u0000"+ - "\u1107\u1108\u0007\u0007\u0000\u0000\u1108\u1109\u0007\u0005\u0000\u0000"+ - "\u1109\u110a\u0007\u0010\u0000\u0000\u110a\u110b\u0007\u0011\u0000\u0000"+ - "\u110b\u110c\u0007\u0013\u0000\u0000\u110c\u110d\u0007\u0007\u0000\u0000"+ - "\u110d\u110e\u0007\u0005\u0000\u0000\u110e\u110f\u0007\u0006\u0000\u0000"+ - "\u110f\u0338\u0001\u0000\u0000\u0000\u1110\u1111\u0007\u0007\u0000\u0000"+ - "\u1111\u1112\u0007\u000e\u0000\u0000\u1112\u1113\u0007\u0014\u0000\u0000"+ - "\u1113\u1114\u0007\u0005\u0000\u0000\u1114\u1115\u0007\r\u0000\u0000\u1115"+ - "\u033a\u0001\u0000\u0000\u0000\u1116\u1117\u0007\u0007\u0000\u0000\u1117"+ - "\u1118\u0007\u0013\u0000\u0000\u1118\u1119\u0007\u0007\u0000\u0000\u1119"+ - "\u111a\u0007\n\u0000\u0000\u111a\u033c\u0001\u0000\u0000\u0000\u111b\u111c"+ - "\u0007\u0007\u0000\u0000\u111c\u111d\u0007\u0016\u0000\u0000\u111d\u111e"+ - "\u0007\u0006\u0000\u0000\u111e\u111f\u0007\u0006\u0000\u0000\u111f\u1120"+ - "\u0007\u0011\u0000\u0000\u1120\u1121\u0007\u0019\u0000\u0000\u1121\u033e"+ - "\u0001\u0000\u0000\u0000\u1122\u1123\u0007\u0007\u0000\u0000\u1123\u1124"+ - "\u0007\u0016\u0000\u0000\u1124\u1125\u0007\u000f\u0000\u0000\u1125\u1126"+ - "\u0007\n\u0000\u0000\u1126\u1127\u0007\r\u0000\u0000\u1127\u1128\u0007"+ - "\u0011\u0000\u0000\u1128\u1129\u0007\u000e\u0000\u0000\u1129\u0340\u0001"+ - "\u0000\u0000\u0000\u112a\u112b\u0007\u0013\u0000\u0000\u112b\u112c\u0007"+ - "\u001b\u0000\u0000\u112c\u112d\u0007\n\u0000\u0000\u112d\u112e\u0007\r"+ - "\u0000\u0000\u112e\u112f\u0007\u0006\u0000\u0000\u112f\u1130\u0007\u0005"+ - "\u0000\u0000\u1130\u1131\u0007\b\u0000\u0000\u1131\u0342\u0001\u0000\u0000"+ - "\u0000\u1132\u1133\u0007\u0018\u0000\u0000\u1133\u1134\u0007\u0013\u0000"+ - "\u0000\u1134\u1135\u0007\t\u0000\u0000\u1135\u1136\u0007\u0011\u0000\u0000"+ - "\u1136\u1137\u0007\u0010\u0000\u0000\u1137\u1138\u0007\u0011\u0000\u0000"+ - "\u1138\u1139\u0007\u0013\u0000\u0000\u1139\u113a\u0007\u0007\u0000\u0000"+ - "\u113a\u0344\u0001\u0000\u0000\u0000\u113b\u113c\u0007\u0018\u0000\u0000"+ - "\u113c\u113d\u0007\r\u0000\u0000\u113d\u113e\u0007\n\u0000\u0000\u113e"+ - "\u113f\u0007\u000e\u0000\u0000\u113f\u1140\u0007\u0011\u0000\u0000\u1140"+ - "\u1141\u0007\t\u0000\u0000\u1141\u1142\u0007\u0011\u0000\u0000\u1142\u1143"+ - "\u0007\u0013\u0000\u0000\u1143\u1144\u0007\u0007\u0000\u0000\u1144\u0346"+ - "\u0001\u0000\u0000\u0000\u1145\u1146\u0007\r\u0000\u0000\u1146\u1147\u0007"+ - "\n\u0000\u0000\u1147\u1148\u0007\u0005\u0000\u0000\u1148\u1149\u0007\u0006"+ - "\u0000\u0000\u1149\u0348\u0001\u0000\u0000\u0000\u114a\u114b\u0007\r\u0000"+ - "\u0000\u114b\u114c\u0007\u0013\u0000\u0000\u114c\u114d\u0007\u001c\u0000"+ - "\u0000\u114d\u034a\u0001\u0000\u0000\u0000\u114e\u114f\u0007\t\u0000\u0000"+ - "\u114f\u1150\u0007\n\u0000\u0000\u1150\u1151\u0007\u0010\u0000\u0000\u1151"+ - "\u1152\u0007\u0013\u0000\u0000\u1152\u1153\u0007\u0019\u0000\u0000\u1153"+ - "\u034c\u0001\u0000\u0000\u0000\u1154\u1155\u0007\t\u0000\u0000\u1155\u1156"+ - "\u0007\u000f\u0000\u0000\u1156\u1157\u0007\u0005\u0000\u0000\u1157\u1158"+ - "\u0007\u0006\u0000\u0000\u1158\u1159\u0007\u0006\u0000\u0000\u1159\u115a"+ - "\u0007\u0011\u0000\u0000\u115a\u115b\u0007\u0007\u0000\u0000\u115b\u115c"+ - "\u0007\u0010\u0000\u0000\u115c\u034e\u0001\u0000\u0000\u0000\u115d\u115e"+ - "\u0007\t\u0000\u0000\u115e\u115f\u0007\u0016\u0000\u0000\u115f\u1160\u0007"+ - "\u0012\u0000\u0000\u1160\u1161\u0007\t\u0000\u0000\u1161\u1162\u0007\u0010"+ - "\u0000\u0000\u1162\u1163\u0007\r\u0000\u0000\u1163\u1164\u0007\u0011\u0000"+ - "\u0000\u1164\u1165\u0007\u0007\u0000\u0000\u1165\u1166\u0007\u0017\u0000"+ - "\u0000\u1166\u0350\u0001\u0000\u0000\u0000\u1167\u1168\u0007\u0010\u0000"+ - "\u0000\u1168\u1169\u0007\u0011\u0000\u0000\u1169\u116a\u0007\u000f\u0000"+ - "\u0000\u116a\u116b\u0007\n\u0000\u0000\u116b\u0352\u0001\u0000\u0000\u0000"+ - "\u116c\u116d\u0007\u0010\u0000\u0000\u116d\u116e\u0007\u0011\u0000\u0000"+ - "\u116e\u116f\u0007\u000f\u0000\u0000\u116f\u1170\u0007\n\u0000\u0000\u1170"+ - "\u1171\u0007\t\u0000\u0000\u1171\u1172\u0007\u0010\u0000\u0000\u1172\u1173"+ - "\u0007\u0005\u0000\u0000\u1173\u1174\u0007\u000f\u0000\u0000\u1174\u1175"+ - "\u0007\u0018\u0000\u0000\u1175\u0354\u0001\u0000\u0000\u0000\u1176\u1177"+ - "\u0007\u0010\u0000\u0000\u1177\u1178\u0007\r\u0000\u0000\u1178\u1179\u0007"+ - "\n\u0000\u0000\u1179\u117a\u0007\u0005\u0000\u0000\u117a\u117b\u0007\u0010"+ - "\u0000\u0000\u117b\u0356\u0001\u0000\u0000\u0000\u117c\u117d\u0007\u0010"+ - "\u0000\u0000\u117d\u117e\u0007\r\u0000\u0000\u117e\u117f\u0007\u0011\u0000"+ - "\u0000\u117f\u1180\u0007\u000f\u0000\u0000\u1180\u0358\u0001\u0000\u0000"+ - "\u0000\u1181\u1182\u0007\u001b\u0000\u0000\u1182\u1183\u0007\u0005\u0000"+ - "\u0000\u1183\u1184\u0007\u0006\u0000\u0000\u1184\u1185\u0007\u0016\u0000"+ - "\u0000\u1185\u1186\u0007\n\u0000\u0000\u1186\u1187\u0007\t\u0000\u0000"+ - "\u1187\u035a\u0001\u0000\u0000\u0000\u1188\u1189\u0007\u001b\u0000\u0000"+ - "\u1189\u118a\u0007\u0005\u0000\u0000\u118a\u118b\u0007\r\u0000\u0000\u118b"+ - "\u118c\u0007\u000e\u0000\u0000\u118c\u118d\u0007\u0014\u0000\u0000\u118d"+ - "\u118e\u0007\u0005\u0000\u0000\u118e\u118f\u0007\r\u0000\u0000\u118f\u035c"+ - "\u0001\u0000\u0000\u0000\u1190\u1191\u0007\u001a\u0000\u0000\u1191\u1192"+ - "\u0007\u000f\u0000\u0000\u1192\u1193\u0007\u0006\u0000\u0000\u1193\u1194"+ - "\u0007\u0005\u0000\u0000\u1194\u1195\u0007\u0010\u0000\u0000\u1195\u1196"+ - "\u0007\u0010\u0000\u0000\u1196\u1197\u0007\r\u0000\u0000\u1197\u1198\u0007"+ - "\u0011\u0000\u0000\u1198\u1199\u0007\u0012\u0000\u0000\u1199\u119a\u0007"+ - "\u0016\u0000\u0000\u119a\u119b\u0007\u0010\u0000\u0000\u119b\u119c\u0007"+ - "\n\u0000\u0000\u119c\u119d\u0007\t\u0000\u0000\u119d\u035e\u0001\u0000"+ - "\u0000\u0000\u119e\u119f\u0007\u001a\u0000\u0000\u119f\u11a0\u0007\u000f"+ - "\u0000\u0000\u11a0\u11a1\u0007\u0006\u0000\u0000\u11a1\u11a2\u0007\u000e"+ - "\u0000\u0000\u11a2\u11a3\u0007\u0013\u0000\u0000\u11a3\u11a4\u0007\u000f"+ - "\u0000\u0000\u11a4\u11a5\u0007\u000f\u0000\u0000\u11a5\u11a6\u0007\n\u0000"+ - "\u0000\u11a6\u11a7\u0007\u0007\u0000\u0000\u11a7\u11a8\u0007\u0010\u0000"+ - "\u0000\u11a8\u0360\u0001\u0000\u0000\u0000\u11a9\u11aa\u0007\u001a\u0000"+ - "\u0000\u11aa\u11ab\u0007\u000f\u0000\u0000\u11ab\u11ac\u0007\u0006\u0000"+ - "\u0000\u11ac\u11ad\u0007\u0005\u0000\u0000\u11ad\u11ae\u0007\u0017\u0000"+ - "\u0000\u11ae\u11af\u0007\u0017\u0000\u0000\u11af\u0362\u0001\u0000\u0000"+ - "\u0000\u11b0\u11b1\u0007\u001a\u0000\u0000\u11b1\u11b2\u0007\u000f\u0000"+ - "\u0000\u11b2\u11b3\u0007\u0006\u0000\u0000\u11b3\u11b4\u0005_\u0000\u0000"+ - "\u11b4\u11b5\u0007\u0011\u0000\u0000\u11b5\u11b6\u0007\t\u0000\u0000\u11b6"+ - "\u11b7\u0005_\u0000\u0000\u11b7\u11b8\u0007\u001c\u0000\u0000\u11b8\u11b9"+ - "\u0007\n\u0000\u0000\u11b9\u11ba\u0007\u0006\u0000\u0000\u11ba\u11bb\u0007"+ - "\u0006\u0000\u0000\u11bb\u11bc\u0005_\u0000\u0000\u11bc\u11bd\u0007\u0019"+ - "\u0000\u0000\u11bd\u11be\u0007\u0013\u0000\u0000\u11be\u11bf\u0007\r\u0000"+ - "\u0000\u11bf\u11c0\u0007\u000f\u0000\u0000\u11c0\u11c1\u0007\n\u0000\u0000"+ - "\u11c1\u11c2\u0007\f\u0000\u0000\u11c2\u0364\u0001\u0000\u0000\u0000\u11c3"+ - "\u11c4\u0007\u001a\u0000\u0000\u11c4\u11c5\u0007\u000f\u0000\u0000\u11c5"+ - "\u11c6\u0007\u0006\u0000\u0000\u11c6\u11c7\u0005_\u0000\u0000\u11c7\u11c8"+ - "\u0007\u0011\u0000\u0000\u11c8\u11c9\u0007\t\u0000\u0000\u11c9\u11ca\u0005"+ - "_\u0000\u0000\u11ca\u11cb\u0007\u001c\u0000\u0000\u11cb\u11cc\u0007\n"+ - "\u0000\u0000\u11cc\u11cd\u0007\u0006\u0000\u0000\u11cd\u11ce\u0007\u0006"+ - "\u0000\u0000\u11ce\u11cf\u0005_\u0000\u0000\u11cf\u11d0\u0007\u0019\u0000"+ - "\u0000\u11d0\u11d1\u0007\u0013\u0000\u0000\u11d1\u11d2\u0007\r\u0000\u0000"+ - "\u11d2\u11d3\u0007\u000f\u0000\u0000\u11d3\u11d4\u0007\n\u0000\u0000\u11d4"+ - "\u11d5\u0007\f\u0000\u0000\u11d5\u11d6\u0005_\u0000\u0000\u11d6\u11d7"+ - "\u0007\f\u0000\u0000\u11d7\u11d8\u0007\u0013\u0000\u0000\u11d8\u11d9\u0007"+ - "\u000e\u0000\u0000\u11d9\u11da\u0007\u0016\u0000\u0000\u11da\u11db\u0007"+ - "\u000f\u0000\u0000\u11db\u11dc\u0007\n\u0000\u0000\u11dc\u11dd\u0007\u0007"+ - "\u0000\u0000\u11dd\u11de\u0007\u0010\u0000\u0000\u11de\u0366\u0001\u0000"+ - "\u0000\u0000\u11df\u11e0\u0007\u001a\u0000\u0000\u11e0\u11e1\u0007\u000f"+ - "\u0000\u0000\u11e1\u11e2\u0007\u0006\u0000\u0000\u11e2\u11e3\u0005_\u0000"+ - "\u0000\u11e3\u11e4\u0007\u0011\u0000\u0000\u11e4\u11e5\u0007\t\u0000\u0000"+ - "\u11e5\u11e6\u0005_\u0000\u0000\u11e6\u11e7\u0007\u001c\u0000\u0000\u11e7"+ - "\u11e8\u0007\n\u0000\u0000\u11e8\u11e9\u0007\u0006\u0000\u0000\u11e9\u11ea"+ - "\u0007\u0006\u0000\u0000\u11ea\u11eb\u0005_\u0000\u0000\u11eb\u11ec\u0007"+ - "\u0019\u0000\u0000\u11ec\u11ed\u0007\u0013\u0000\u0000\u11ed\u11ee\u0007"+ - "\r\u0000\u0000\u11ee\u11ef\u0007\u000f\u0000\u0000\u11ef\u11f0\u0007\n"+ - "\u0000\u0000\u11f0\u11f1\u0007\f\u0000\u0000\u11f1\u11f2\u0005_\u0000"+ - "\u0000\u11f2\u11f3\u0007\u000e\u0000\u0000\u11f3\u11f4\u0007\u0013\u0000"+ - "\u0000\u11f4\u11f5\u0007\u0007\u0000\u0000\u11f5\u11f6\u0007\u0010\u0000"+ - "\u0000\u11f6\u11f7\u0007\n\u0000\u0000\u11f7\u11f8\u0007\u0007\u0000\u0000"+ - "\u11f8\u11f9\u0007\u0010\u0000\u0000\u11f9\u0368\u0001\u0000\u0000\u0000"+ - "\u11fa\u11fb\u0007\u001a\u0000\u0000\u11fb\u11fc\u0007\u0018\u0000\u0000"+ - "\u11fc\u11fd\u0007\u0005\u0000\u0000\u11fd\u11fe\u0007\u0010\u0000\u0000"+ - "\u11fe\u11ff\u0007\u0014\u0000\u0000\u11ff\u036a\u0001\u0000\u0000\u0000"+ - "\u1200\u1201\u0007\u001a\u0000\u0000\u1201\u1202\u0007\u0018\u0000\u0000"+ - "\u1202\u1203\u0007\u0005\u0000\u0000\u1203\u1204\u0007\u0010\u0000\u0000"+ - "\u1204\u1205\u0007\u0014\u0000\u0000\u1205\u1206\u0005_\u0000\u0000\u1206"+ - "\u1207\u0007\n\u0000\u0000\u1207\u1208\u0007\u001a\u0000\u0000\u1208\u1209"+ - "\u0007\u0011\u0000\u0000\u1209\u120a\u0007\t\u0000\u0000\u120a\u120b\u0007"+ - "\u0010\u0000\u0000\u120b\u120c\u0007\t\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\u000e"+ - "\u0000\u0000\u1211\u1212\u0007\u0013\u0000\u0000\u1212\u1213\u0007\u0007"+ - "\u0000\u0000\u1213\u1214\u0007\u000e\u0000\u0000\u1214\u1215\u0007\u0005"+ - "\u0000\u0000\u1215\u1216\u0007\u0010\u0000\u0000\u1216\u036e\u0001\u0000"+ - "\u0000\u0000\u1217\u1218\u0007\u001a\u0000\u0000\u1218\u1219\u0007\u000f"+ - "\u0000\u0000\u1219\u121a\u0007\u0006\u0000\u0000\u121a\u121b\u0007\n\u0000"+ - "\u0000\u121b\u121c\u0007\u0006\u0000\u0000\u121c\u121d\u0007\n\u0000\u0000"+ - "\u121d\u121e\u0007\u000f\u0000\u0000\u121e\u121f\u0007\n\u0000\u0000\u121f"+ - "\u1220\u0007\u0007\u0000\u0000\u1220\u1221\u0007\u0010\u0000\u0000\u1221"+ - "\u0370\u0001\u0000\u0000\u0000\u1222\u1223\u0007\u001a\u0000\u0000\u1223"+ - "\u1224\u0007\u000f\u0000\u0000\u1224\u1225\u0007\u0006\u0000\u0000\u1225"+ - "\u1226\u0007\n\u0000\u0000\u1226\u1227\u0007\u001a\u0000\u0000\u1227\u1228"+ - "\u0007\u0011\u0000\u0000\u1228\u1229\u0007\t\u0000\u0000\u1229\u122a\u0007"+ - "\u0010\u0000\u0000\u122a\u122b\u0007\t\u0000\u0000\u122b\u0372\u0001\u0000"+ - "\u0000\u0000\u122c\u122d\u0007\u001a\u0000\u0000\u122d\u122e\u0007\u000f"+ - "\u0000\u0000\u122e\u122f\u0007\u0006\u0000\u0000\u122f\u1230\u0007\u0019"+ - "\u0000\u0000\u1230\u1231\u0007\u0013\u0000\u0000\u1231\u1232\u0007\r\u0000"+ - "\u0000\u1232\u1233\u0007\n\u0000\u0000\u1233\u1234\u0007\t\u0000\u0000"+ - "\u1234\u1235\u0007\u0010\u0000\u0000\u1235\u0374\u0001\u0000\u0000\u0000"+ - "\u1236\u1237\u0007\u001a\u0000\u0000\u1237\u1238\u0007\u000f\u0000\u0000"+ - "\u1238\u1239\u0007\u0006\u0000\u0000\u1239\u123a\u0007\u0018\u0000\u0000"+ - "\u123a\u123b\u0007\u0005\u0000\u0000\u123b\u123c\u0007\r\u0000\u0000\u123c"+ - "\u123d\u0007\t\u0000\u0000\u123d\u123e\u0007\n\u0000\u0000\u123e\u0376"+ - "\u0001\u0000\u0000\u0000\u123f\u1240\u0007\u001a\u0000\u0000\u1240\u1241"+ - "\u0007\u000f\u0000\u0000\u1241\u1242\u0007\u0006\u0000\u0000\u1242\u1243"+ - "\u0007\u0018\u0000\u0000\u1243\u1244\u0007\u0011\u0000\u0000\u1244\u0378"+ - "\u0001\u0000\u0000\u0000\u1245\u1246\u0007\u001a\u0000\u0000\u1246\u1247"+ - "\u0007\u000f\u0000\u0000\u1247\u1248\u0007\u0006\u0000\u0000\u1248\u1249"+ - "\u0007\r\u0000\u0000\u1249\u124a\u0007"; - private static final String _serializedATNSegment2 = - "\u0013\u0000\u0000\u124a\u124b\u0007\u0013\u0000\u0000\u124b\u124c\u0007"+ - "\u0010\u0000\u0000\u124c\u037a\u0001\u0000\u0000\u0000\u124d\u124e\u0007"+ - "\u001a\u0000\u0000\u124e\u124f\u0007\u000f\u0000\u0000\u124f\u1250\u0007"+ - "\u0006\u0000\u0000\u1250\u1251\u0007\t\u0000\u0000\u1251\u1252\u0007\n"+ - "\u0000\u0000\u1252\u1253\u0007\r\u0000\u0000\u1253\u1254\u0007\u0011\u0000"+ - "\u0000\u1254\u1255\u0007\u0005\u0000\u0000\u1255\u1256\u0007\u0006\u0000"+ - "\u0000\u1256\u1257\u0007\u0011\u0000\u0000\u1257\u1258\u0007\u000b\u0000"+ - "\u0000\u1258\u1259\u0007\n\u0000\u0000\u1259\u037c\u0001\u0000\u0000\u0000"+ - "\u125a\u125b\u0007\u000e\u0000\u0000\u125b\u125c\u0007\u0005\u0000\u0000"+ - "\u125c\u125d\u0007\u0006\u0000\u0000\u125d\u125e\u0007\u0006\u0000\u0000"+ - "\u125e\u037e\u0001\u0000\u0000\u0000\u125f\u1260\u0007\u000e\u0000\u0000"+ - "\u1260\u1261\u0007\u0016\u0000\u0000\u1261\u1262\u0007\r\u0000\u0000\u1262"+ - "\u1263\u0007\r\u0000\u0000\u1263\u1264\u0007\n\u0000\u0000\u1264\u1265"+ - "\u0007\u0007\u0000\u0000\u1265\u1266\u0007\u0010\u0000\u0000\u1266\u0380"+ - "\u0001\u0000\u0000\u0000\u1267\u1268\u0007\u0005\u0000\u0000\u1268\u1269"+ - "\u0007\u0010\u0000\u0000\u1269\u126a\u0007\u0010\u0000\u0000\u126a\u126b"+ - "\u0007\u0005\u0000\u0000\u126b\u126c\u0007\u000e\u0000\u0000\u126c\u126d"+ - "\u0007\u0014\u0000\u0000\u126d\u0382\u0001\u0000\u0000\u0000\u126e\u126f"+ - "\u0007\f\u0000\u0000\u126f\u1270\u0007\n\u0000\u0000\u1270\u1271\u0007"+ - "\u0010\u0000\u0000\u1271\u1272\u0007\u0005\u0000\u0000\u1272\u1273\u0007"+ - "\u000e\u0000\u0000\u1273\u1274\u0007\u0014\u0000\u0000\u1274\u0384\u0001"+ - "\u0000\u0000\u0000\u1275\u1276\u0007\n\u0000\u0000\u1276\u1277\u0007\u001a"+ - "\u0000\u0000\u1277\u1278\u0007\u0018\u0000\u0000\u1278\u1279\u0007\r\u0000"+ - "\u0000\u1279\u127a\u0007\n\u0000\u0000\u127a\u127b\u0007\t\u0000\u0000"+ - "\u127b\u127c\u0007\t\u0000\u0000\u127c\u127d\u0007\u0011\u0000\u0000\u127d"+ - "\u127e\u0007\u0013\u0000\u0000\u127e\u127f\u0007\u0007\u0000\u0000\u127f"+ - "\u0386\u0001\u0000\u0000\u0000\u1280\u1281\u0007\u0017\u0000\u0000\u1281"+ - "\u1282\u0007\n\u0000\u0000\u1282\u1283\u0007\u0007\u0000\u0000\u1283\u1284"+ - "\u0007\n\u0000\u0000\u1284\u1285\u0007\r\u0000\u0000\u1285\u1286\u0007"+ - "\u0005\u0000\u0000\u1286\u1287\u0007\u0010\u0000\u0000\u1287\u1288\u0007"+ - "\n\u0000\u0000\u1288\u1289\u0007\f\u0000\u0000\u1289\u0388\u0001\u0000"+ - "\u0000\u0000\u128a\u128b\u0007\u0006\u0000\u0000\u128b\u128c\u0007\u0013"+ - "\u0000\u0000\u128c\u128d\u0007\u0017\u0000\u0000\u128d\u128e\u0007\u0017"+ - "\u0000\u0000\u128e\u128f\u0007\n\u0000\u0000\u128f\u1290\u0007\f\u0000"+ - "\u0000\u1290\u038a\u0001\u0000\u0000\u0000\u1291\u1292\u0007\t\u0000\u0000"+ - "\u1292\u1293\u0007\u0010\u0000\u0000\u1293\u1294\u0007\u0013\u0000\u0000"+ - "\u1294\u1295\u0007\r\u0000\u0000\u1295\u1296\u0007\n\u0000\u0000\u1296"+ - "\u1297\u0007\f\u0000\u0000\u1297\u038c\u0001\u0000\u0000\u0000\u1298\u1299"+ - "\u0007\u0011\u0000\u0000\u1299\u129a\u0007\u0007\u0000\u0000\u129a\u129b"+ - "\u0007\u000e\u0000\u0000\u129b\u129c\u0007\u0006\u0000\u0000\u129c\u129d"+ - "\u0007\u0016\u0000\u0000\u129d\u129e\u0007\f\u0000\u0000\u129e\u129f\u0007"+ - "\n\u0000\u0000\u129f\u038e\u0001\u0000\u0000\u0000\u12a0\u12a1\u0007\r"+ - "\u0000\u0000\u12a1\u12a2\u0007\u0013\u0000\u0000\u12a2\u12a3\u0007\u0016"+ - "\u0000\u0000\u12a3\u12a4\u0007\u0010\u0000\u0000\u12a4\u12a5\u0007\u0011"+ - "\u0000\u0000\u12a5\u12a6\u0007\u0007\u0000\u0000\u12a6\u12a7\u0007\n\u0000"+ - "\u0000\u12a7\u0390\u0001\u0000\u0000\u0000\u12a8\u12a9\u0007\u0010\u0000"+ - "\u0000\u12a9\u12aa\u0007\r\u0000\u0000\u12aa\u12ab\u0007\u0005\u0000\u0000"+ - "\u12ab\u12ac\u0007\u0007\u0000\u0000\u12ac\u12ad\u0007\t\u0000\u0000\u12ad"+ - "\u12ae\u0007\u0019\u0000\u0000\u12ae\u12af\u0007\u0013\u0000\u0000\u12af"+ - "\u12b0\u0007\r\u0000\u0000\u12b0\u12b1\u0007\u000f\u0000\u0000\u12b1\u0392"+ - "\u0001\u0000\u0000\u0000\u12b2\u12b3\u0007\u0011\u0000\u0000\u12b3\u12b4"+ - "\u0007\u000f\u0000\u0000\u12b4\u12b5\u0007\u0018\u0000\u0000\u12b5\u12b6"+ - "\u0007\u0013\u0000\u0000\u12b6\u12b7\u0007\r\u0000\u0000\u12b7\u12b8\u0007"+ - "\u0010\u0000\u0000\u12b8\u0394\u0001\u0000\u0000\u0000\u12b9\u12ba\u0007"+ - "\u0018\u0000\u0000\u12ba\u12bb\u0007\u0013\u0000\u0000\u12bb\u12bc\u0007"+ - "\u0006\u0000\u0000\u12bc\u12bd\u0007\u0011\u0000\u0000\u12bd\u12be\u0007"+ - "\u000e\u0000\u0000\u12be\u12bf\u0007\b\u0000\u0000\u12bf\u0396\u0001\u0000"+ - "\u0000\u0000\u12c0\u12c1\u0007\u000f\u0000\u0000\u12c1\u12c2\u0007\n\u0000"+ - "\u0000\u12c2\u12c3\u0007\u0010\u0000\u0000\u12c3\u12c4\u0007\u0014\u0000"+ - "\u0000\u12c4\u12c5\u0007\u0013\u0000\u0000\u12c5\u12c6\u0007\f\u0000\u0000"+ - "\u12c6\u0398\u0001\u0000\u0000\u0000\u12c7\u12c8\u0007\r\u0000\u0000\u12c8"+ - "\u12c9\u0007\n\u0000\u0000\u12c9\u12ca\u0007\u0019\u0000\u0000\u12ca\u12cb"+ - "\u0007\n\u0000\u0000\u12cb\u12cc\u0007\r\u0000\u0000\u12cc\u12cd\u0007"+ - "\n\u0000\u0000\u12cd\u12ce\u0007\u0007\u0000\u0000\u12ce\u12cf\u0007\u000e"+ - "\u0000\u0000\u12cf\u12d0\u0007\u0011\u0000\u0000\u12d0\u12d1\u0007\u0007"+ - "\u0000\u0000\u12d1\u12d2\u0007\u0017\u0000\u0000\u12d2\u039a\u0001\u0000"+ - "\u0000\u0000\u12d3\u12d4\u0007\u0007\u0000\u0000\u12d4\u12d5\u0007\n\u0000"+ - "\u0000\u12d5\u12d6\u0007\u001c\u0000\u0000\u12d6\u039c\u0001\u0000\u0000"+ - "\u0000\u12d7\u12d8\u0007\u0013\u0000\u0000\u12d8\u12d9\u0007\u0006\u0000"+ - "\u0000\u12d9\u12da\u0007\f\u0000\u0000\u12da\u039e\u0001\u0000\u0000\u0000"+ - "\u12db\u12dc\u0007\u001b\u0000\u0000\u12dc\u12dd\u0007\u0005\u0000\u0000"+ - "\u12dd\u12de\u0007\u0006\u0000\u0000\u12de\u12df\u0007\u0016\u0000\u0000"+ - "\u12df\u12e0\u0007\n\u0000\u0000\u12e0\u03a0\u0001\u0000\u0000\u0000\u12e1"+ - "\u12e2\u0007\t\u0000\u0000\u12e2\u12e3\u0007\u0016\u0000\u0000\u12e3\u12e4"+ - "\u0007\u0012\u0000\u0000\u12e4\u12e5\u0007\t\u0000\u0000\u12e5\u12e6\u0007"+ - "\u000e\u0000\u0000\u12e6\u12e7\u0007\r\u0000\u0000\u12e7\u12e8\u0007\u0011"+ - "\u0000\u0000\u12e8\u12e9\u0007\u0018\u0000\u0000\u12e9\u12ea\u0007\u0010"+ - "\u0000\u0000\u12ea\u12eb\u0007\u0011\u0000\u0000\u12eb\u12ec\u0007\u0013"+ - "\u0000\u0000\u12ec\u12ed\u0007\u0007\u0000\u0000\u12ed\u03a2\u0001\u0000"+ - "\u0000\u0000\u12ee\u12ef\u0007\u0018\u0000\u0000\u12ef\u12f0\u0007\u0016"+ - "\u0000\u0000\u12f0\u12f1\u0007\u0012\u0000\u0000\u12f1\u12f2\u0007\u0006"+ - "\u0000\u0000\u12f2\u12f3\u0007\u0011\u0000\u0000\u12f3\u12f4\u0007\u000e"+ - "\u0000\u0000\u12f4\u12f5\u0007\u0005\u0000\u0000\u12f5\u12f6\u0007\u0010"+ - "\u0000\u0000\u12f6\u12f7\u0007\u0011\u0000\u0000\u12f7\u12f8\u0007\u0013"+ - "\u0000\u0000\u12f8\u12f9\u0007\u0007\u0000\u0000\u12f9\u03a4\u0001\u0000"+ - "\u0000\u0000\u12fa\u12fb\u0007\u0013\u0000\u0000\u12fb\u12fc\u0007\u0016"+ - "\u0000\u0000\u12fc\u12fd\u0007\u0010\u0000\u0000\u12fd\u03a6\u0001\u0000"+ - "\u0000\u0000\u12fe\u12ff\u0007\n\u0000\u0000\u12ff\u1300\u0007\u0007\u0000"+ - "\u0000\u1300\u1301\u0007\f\u0000\u0000\u1301\u03a8\u0001\u0000\u0000\u0000"+ - "\u1302\u1303\u0007\r\u0000\u0000\u1303\u1304\u0007\u0013\u0000\u0000\u1304"+ - "\u1305\u0007\u0016\u0000\u0000\u1305\u1306\u0007\u0010\u0000\u0000\u1306"+ - "\u1307\u0007\u0011\u0000\u0000\u1307\u1308\u0007\u0007\u0000\u0000\u1308"+ - "\u1309\u0007\n\u0000\u0000\u1309\u130a\u0007\t\u0000\u0000\u130a\u03aa"+ - "\u0001\u0000\u0000\u0000\u130b\u130c\u0007\t\u0000\u0000\u130c\u130d\u0007"+ - "\u000e\u0000\u0000\u130d\u130e\u0007\u0014\u0000\u0000\u130e\u130f\u0007"+ - "\n\u0000\u0000\u130f\u1310\u0007\u000f\u0000\u0000\u1310\u1311\u0007\u0005"+ - "\u0000\u0000\u1311\u1312\u0007\t\u0000\u0000\u1312\u03ac\u0001\u0000\u0000"+ - "\u0000\u1313\u1314\u0007\u0018\u0000\u0000\u1314\u1315\u0007\r\u0000\u0000"+ - "\u1315\u1316\u0007\u0013\u0000\u0000\u1316\u1317\u0007\u000e\u0000\u0000"+ - "\u1317\u1318\u0007\n\u0000\u0000\u1318\u1319\u0007\f\u0000\u0000\u1319"+ - "\u131a\u0007\u0016\u0000\u0000\u131a\u131b\u0007\r\u0000\u0000\u131b\u131c"+ - "\u0007\n\u0000\u0000\u131c\u131d\u0007\t\u0000\u0000\u131d\u03ae\u0001"+ - "\u0000\u0000\u0000\u131e\u131f\u0007\u0011\u0000\u0000\u131f\u1320\u0007"+ - "\u0007\u0000\u0000\u1320\u1321\u0007\u0018\u0000\u0000\u1321\u1322\u0007"+ - "\u0016\u0000\u0000\u1322\u1323\u0007\u0010\u0000\u0000\u1323\u03b0\u0001"+ - "\u0000\u0000\u0000\u1324\u1325\u0007\t\u0000\u0000\u1325\u1326\u0007\u0016"+ - "\u0000\u0000\u1326\u1327\u0007\u0018\u0000\u0000\u1327\u1328\u0007\u0018"+ - "\u0000\u0000\u1328\u1329\u0007\u0013\u0000\u0000\u1329\u132a\u0007\r\u0000"+ - "\u0000\u132a\u132b\u0007\u0010\u0000\u0000\u132b\u03b2\u0001\u0000\u0000"+ - "\u0000\u132c\u132d\u0007\u0018\u0000\u0000\u132d\u132e\u0007\u0005\u0000"+ - "\u0000\u132e\u132f\u0007\r\u0000\u0000\u132f\u1330\u0007\u0005\u0000\u0000"+ - "\u1330\u1331\u0007\u0006\u0000\u0000\u1331\u1332\u0007\u0006\u0000\u0000"+ - "\u1332\u1333\u0007\n\u0000\u0000\u1333\u1334\u0007\u0006\u0000\u0000\u1334"+ - "\u03b4\u0001\u0000\u0000\u0000\u1335\u1336\u0007\t\u0000\u0000\u1336\u1337"+ - "\u0007\u001d\u0000\u0000\u1337\u1338\u0007\u0006\u0000\u0000\u1338\u03b6"+ - "\u0001\u0000\u0000\u0000\u1339\u133a\u0007\f\u0000\u0000\u133a\u133b\u0007"+ - "\n\u0000\u0000\u133b\u133c\u0007\u0018\u0000\u0000\u133c\u133d\u0007\n"+ - "\u0000\u0000\u133d\u133e\u0007\u0007\u0000\u0000\u133e\u133f\u0007\f\u0000"+ - "\u0000\u133f\u1340\u0007\t\u0000\u0000\u1340\u03b8\u0001\u0000\u0000\u0000"+ - "\u1341\u1342\u0007\u0013\u0000\u0000\u1342\u1343\u0007\u001b\u0000\u0000"+ - "\u1343\u1344\u0007\n\u0000\u0000\u1344\u1345\u0007\r\u0000\u0000\u1345"+ - "\u1346\u0007\r\u0000\u0000\u1346\u1347\u0007\u0011\u0000\u0000\u1347\u1348"+ - "\u0007\f\u0000\u0000\u1348\u1349\u0007\u0011\u0000\u0000\u1349\u134a\u0007"+ - "\u0007\u0000\u0000\u134a\u134b\u0007\u0017\u0000\u0000\u134b\u03ba\u0001"+ - "\u0000\u0000\u0000\u134c\u134d\u0007\u000e\u0000\u0000\u134d\u134e\u0007"+ - "\u0013\u0000\u0000\u134e\u134f\u0007\u0007\u0000\u0000\u134f\u1350\u0007"+ - "\u0019\u0000\u0000\u1350\u1351\u0007\u0006\u0000\u0000\u1351\u1352\u0007"+ - "\u0011\u0000\u0000\u1352\u1353\u0007\u000e\u0000\u0000\u1353\u1354\u0007"+ - "\u0010\u0000\u0000\u1354\u03bc\u0001\u0000\u0000\u0000\u1355\u1356\u0007"+ - "\t\u0000\u0000\u1356\u1357\u0007\u0015\u0000\u0000\u1357\u1358\u0007\u0011"+ - "\u0000\u0000\u1358\u1359\u0007\u0018\u0000\u0000\u1359\u03be\u0001\u0000"+ - "\u0000\u0000\u135a\u135b\u0007\u0006\u0000\u0000\u135b\u135c\u0007\u0013"+ - "\u0000\u0000\u135c\u135d\u0007\u000e\u0000\u0000\u135d\u135e\u0007\u0015"+ - "\u0000\u0000\u135e\u135f\u0007\n\u0000\u0000\u135f\u1360\u0007\f\u0000"+ - "\u0000\u1360\u03c0\u0001\u0000\u0000\u0000\u1361\u1362\u0007\u0010\u0000"+ - "\u0000\u1362\u1363\u0007\u0011\u0000\u0000\u1363\u1364\u0007\n\u0000\u0000"+ - "\u1364\u1365\u0007\t\u0000\u0000\u1365\u03c2\u0001\u0000\u0000\u0000\u1366"+ - "\u1367\u0007\r\u0000\u0000\u1367\u1368\u0007\u0013\u0000\u0000\u1368\u1369"+ - "\u0007\u0006\u0000\u0000\u1369\u136a\u0007\u0006\u0000\u0000\u136a\u136b"+ - "\u0007\u0016\u0000\u0000\u136b\u136c\u0007\u0018\u0000\u0000\u136c\u03c4"+ - "\u0001\u0000\u0000\u0000\u136d\u136e\u0007\u000e\u0000\u0000\u136e\u136f"+ - "\u0007\u0016\u0000\u0000\u136f\u1370\u0007\u0012\u0000\u0000\u1370\u1371"+ - "\u0007\n\u0000\u0000\u1371\u03c6\u0001\u0000\u0000\u0000\u1372\u1373\u0007"+ - "\u0017\u0000\u0000\u1373\u1374\u0007\r\u0000\u0000\u1374\u1375\u0007\u0013"+ - "\u0000\u0000\u1375\u1376\u0007\u0016\u0000\u0000\u1376\u1377\u0007\u0018"+ - "\u0000\u0000\u1377\u1378\u0007\u0011\u0000\u0000\u1378\u1379\u0007\u0007"+ - "\u0000\u0000\u1379\u137a\u0007\u0017\u0000\u0000\u137a\u03c8\u0001\u0000"+ - "\u0000\u0000\u137b\u137c\u0007\t\u0000\u0000\u137c\u137d\u0007\n\u0000"+ - "\u0000\u137d\u137e\u0007\u0010\u0000\u0000\u137e\u137f\u0007\t\u0000\u0000"+ - "\u137f\u03ca\u0001\u0000\u0000\u0000\u1380\u1381\u0007\u0010\u0000\u0000"+ - "\u1381\u1382\u0007\u0005\u0000\u0000\u1382\u1383\u0007\u0012\u0000\u0000"+ - "\u1383\u1384\u0007\u0006\u0000\u0000\u1384\u1385\u0007\n\u0000\u0000\u1385"+ - "\u1386\u0007\t\u0000\u0000\u1386\u1387\u0007\u0005\u0000\u0000\u1387\u1388"+ - "\u0007\u000f\u0000\u0000\u1388\u1389\u0007\u0018\u0000\u0000\u1389\u138a"+ - "\u0007\u0006\u0000\u0000\u138a\u138b\u0007\n\u0000\u0000\u138b\u03cc\u0001"+ - "\u0000\u0000\u0000\u138c\u138d\u0007\u0013\u0000\u0000\u138d\u138e\u0007"+ - "\r\u0000\u0000\u138e\u138f\u0007\f\u0000\u0000\u138f\u1390\u0007\u0011"+ - "\u0000\u0000\u1390\u1391\u0007\u0007\u0000\u0000\u1391\u1392\u0007\u0005"+ - "\u0000\u0000\u1392\u1393\u0007\u0006\u0000\u0000\u1393\u1394\u0007\u0011"+ - "\u0000\u0000\u1394\u1395\u0007\u0010\u0000\u0000\u1395\u1396\u0007\b\u0000"+ - "\u0000\u1396\u03ce\u0001\u0000\u0000\u0000\u1397\u1398\u0007\u001a\u0000"+ - "\u0000\u1398\u1399\u0007\u000f\u0000\u0000\u1399\u139a\u0007\u0006\u0000"+ - "\u0000\u139a\u139b\u0007\u0010\u0000\u0000\u139b\u139c\u0007\u0005\u0000"+ - "\u0000\u139c\u139d\u0007\u0012\u0000\u0000\u139d\u139e\u0007\u0006\u0000"+ - "\u0000\u139e\u139f\u0007\n\u0000\u0000\u139f\u03d0\u0001\u0000\u0000\u0000"+ - "\u13a0\u13a1\u0007\u000e\u0000\u0000\u13a1\u13a2\u0007\u0013\u0000\u0000"+ - "\u13a2\u13a3\u0007\u0006\u0000\u0000\u13a3\u13a4\u0007\u0016\u0000\u0000"+ - "\u13a4\u13a5\u0007\u000f\u0000\u0000\u13a5\u13a6\u0007\u0007\u0000\u0000"+ - "\u13a6\u13a7\u0007\t\u0000\u0000\u13a7\u03d2\u0001\u0000\u0000\u0000\u13a8"+ - "\u13a9\u0007\u001a\u0000\u0000\u13a9\u13aa\u0007\u000f\u0000\u0000\u13aa"+ - "\u13ab\u0007\u0006\u0000\u0000\u13ab\u13ac\u0007\u0007\u0000\u0000\u13ac"+ - "\u13ad\u0007\u0005\u0000\u0000\u13ad\u13ae\u0007\u000f\u0000\u0000\u13ae"+ - "\u13af\u0007\n\u0000\u0000\u13af\u13b0\u0007\t\u0000\u0000\u13b0\u13b1"+ - "\u0007\u0018\u0000\u0000\u13b1\u13b2\u0007\u0005\u0000\u0000\u13b2\u13b3"+ - "\u0007\u000e\u0000\u0000\u13b3\u13b4\u0007\n\u0000\u0000\u13b4\u13b5\u0007"+ - "\t\u0000\u0000\u13b5\u03d4\u0001\u0000\u0000\u0000\u13b6\u13b7\u0007\r"+ - "\u0000\u0000\u13b7\u13b8\u0007\u0013\u0000\u0000\u13b8\u13b9\u0007\u001c"+ - "\u0000\u0000\u13b9\u13ba\u0007\u0010\u0000\u0000\u13ba\u13bb\u0007\b\u0000"+ - "\u0000\u13bb\u13bc\u0007\u0018\u0000\u0000\u13bc\u13bd\u0007\n\u0000\u0000"+ - "\u13bd\u03d6\u0001\u0000\u0000\u0000\u13be\u13bf\u0007\u0007\u0000\u0000"+ - "\u13bf\u13c0\u0007\u0013\u0000\u0000\u13c0\u13c1\u0007\r\u0000\u0000\u13c1"+ - "\u13c2\u0007\u000f\u0000\u0000\u13c2\u13c3\u0007\u0005\u0000\u0000\u13c3"+ - "\u13c4\u0007\u0006\u0000\u0000\u13c4\u13c5\u0007\u0011\u0000\u0000\u13c5"+ - "\u13c6\u0007\u000b\u0000\u0000\u13c6\u13c7\u0007\n\u0000\u0000\u13c7\u13c8"+ - "\u0007\f\u0000\u0000\u13c8\u03d8\u0001\u0000\u0000\u0000\u13c9\u13ca\u0007"+ - "\u001c\u0000\u0000\u13ca\u13cb\u0007\u0011\u0000\u0000\u13cb\u13cc\u0007"+ - "\u0010\u0000\u0000\u13cc\u13cd\u0007\u0014\u0000\u0000\u13cd\u13ce\u0007"+ - "\u0011\u0000\u0000\u13ce\u13cf\u0007\u0007\u0000\u0000\u13cf\u03da\u0001"+ - "\u0000\u0000\u0000\u13d0\u13d1\u0007\u0019\u0000\u0000\u13d1\u13d2\u0007"+ - "\u0011\u0000\u0000\u13d2\u13d3\u0007\u0006\u0000\u0000\u13d3\u13d4\u0007"+ - "\u0010\u0000\u0000\u13d4\u13d5\u0007\n\u0000\u0000\u13d5\u13d6\u0007\r"+ - "\u0000\u0000\u13d6\u03dc\u0001\u0000\u0000\u0000\u13d7\u13d8\u0007\u0017"+ - "\u0000\u0000\u13d8\u13d9\u0007\r\u0000\u0000\u13d9\u13da\u0007\u0013\u0000"+ - "\u0000\u13da\u13db\u0007\u0016\u0000\u0000\u13db\u13dc\u0007\u0018\u0000"+ - "\u0000\u13dc\u13dd\u0007\t\u0000\u0000\u13dd\u03de\u0001\u0000\u0000\u0000"+ - "\u13de\u13df\u0007\u0013\u0000\u0000\u13df\u13e0\u0007\u0010\u0000\u0000"+ - "\u13e0\u13e1\u0007\u0014\u0000\u0000\u13e1\u13e2\u0007\n\u0000\u0000\u13e2"+ - "\u13e3\u0007\r\u0000\u0000\u13e3\u13e4\u0007\t\u0000\u0000\u13e4\u03e0"+ - "\u0001\u0000\u0000\u0000\u13e5\u13e6\u0007\u0007\u0000\u0000\u13e6\u13e7"+ - "\u0007\u0019\u0000\u0000\u13e7\u13e8\u0007\u000e\u0000\u0000\u13e8\u03e2"+ - "\u0001\u0000\u0000\u0000\u13e9\u13ea\u0007\u0007\u0000\u0000\u13ea\u13eb"+ - "\u0007\u0019\u0000\u0000\u13eb\u13ec\u0007\f\u0000\u0000\u13ec\u03e4\u0001"+ - "\u0000\u0000\u0000\u13ed\u13ee\u0007\u0007\u0000\u0000\u13ee\u13ef\u0007"+ - "\u0019\u0000\u0000\u13ef\u13f0\u0007\u0015\u0000\u0000\u13f0\u13f1\u0007"+ - "\u000e\u0000\u0000\u13f1\u03e6\u0001\u0000\u0000\u0000\u13f2\u13f3\u0007"+ - "\u0007\u0000\u0000\u13f3\u13f4\u0007\u0019\u0000\u0000\u13f4\u13f5\u0007"+ - "\u0015\u0000\u0000\u13f5\u13f6\u0007\f\u0000\u0000\u13f6\u03e8\u0001\u0000"+ - "\u0000\u0000\u13f7\u13f8\u0007\u0016\u0000\u0000\u13f8\u13f9\u0007\n\u0000"+ - "\u0000\u13f9\u13fa\u0007\t\u0000\u0000\u13fa\u13fb\u0007\u000e\u0000\u0000"+ - "\u13fb\u13fc\u0007\u0005\u0000\u0000\u13fc\u13fd\u0007\u0018\u0000\u0000"+ - "\u13fd\u13fe\u0007\n\u0000\u0000\u13fe\u03ea\u0001\u0000\u0000\u0000\u13ff"+ - "\u1400\u0007\u001b\u0000\u0000\u1400\u1401\u0007\u0011\u0000\u0000\u1401"+ - "\u1402\u0007\n\u0000\u0000\u1402\u1403\u0007\u001c\u0000\u0000\u1403\u1404"+ - "\u0007\t\u0000\u0000\u1404\u03ec\u0001\u0000\u0000\u0000\u1405\u1406\u0007"+ - "\u0007\u0000\u0000\u1406\u1407\u0007\u0013\u0000\u0000\u1407\u1408\u0007"+ - "\r\u0000\u0000\u1408\u1409\u0007\u000f\u0000\u0000\u1409\u140a\u0007\u0005"+ - "\u0000\u0000\u140a\u140b\u0007\u0006\u0000\u0000\u140b\u140c\u0007\u0011"+ - "\u0000\u0000\u140c\u140d\u0007\u000b\u0000\u0000\u140d\u140e\u0007\n\u0000"+ - "\u0000\u140e\u03ee\u0001\u0000\u0000\u0000\u140f\u1410\u0007\f\u0000\u0000"+ - "\u1410\u1411\u0007\u0016\u0000\u0000\u1411\u1412\u0007\u000f\u0000\u0000"+ - "\u1412\u1413\u0007\u0018\u0000\u0000\u1413\u03f0\u0001\u0000\u0000\u0000"+ - "\u1414\u1415\u0007\u0018\u0000\u0000\u1415\u1416\u0007\r\u0000\u0000\u1416"+ - "\u1417\u0007\u0011\u0000\u0000\u1417\u1418\u0007\u0007\u0000\u0000\u1418"+ - "\u1419\u0007\u0010\u0000\u0000\u1419\u141a\u0005_\u0000\u0000\u141a\u141b"+ - "\u0007\t\u0000\u0000\u141b\u141c\u0007\u0010\u0000\u0000\u141c\u141d\u0007"+ - "\r\u0000\u0000\u141d\u141e\u0007\u0011\u0000\u0000\u141e\u141f\u0007\u000e"+ - "\u0000\u0000\u141f\u1420\u0007\u0010\u0000\u0000\u1420\u1421\u0005_\u0000"+ - "\u0000\u1421\u1422\u0007\u0018\u0000\u0000\u1422\u1423\u0007\u0005\u0000"+ - "\u0000\u1423\u1424\u0007\r\u0000\u0000\u1424\u1425\u0007\u0005\u0000\u0000"+ - "\u1425\u1426\u0007\u000f\u0000\u0000\u1426\u1427\u0007\t\u0000\u0000\u1427"+ - "\u03f2\u0001\u0000\u0000\u0000\u1428\u1429\u0007\u001b\u0000\u0000\u1429"+ - "\u142a\u0007\u0005\u0000\u0000\u142a\u142b\u0007\r\u0000\u0000\u142b\u142c"+ - "\u0007\u0011\u0000\u0000\u142c\u142d\u0007\u0005\u0000\u0000\u142d\u142e"+ - "\u0007\u0012\u0000\u0000\u142e\u142f\u0007\u0006\u0000\u0000\u142f\u1430"+ - "\u0007\n\u0000\u0000\u1430\u1431\u0005_\u0000\u0000\u1431\u1432\u0007"+ - "\u000e\u0000\u0000\u1432\u1433\u0007\u0013\u0000\u0000\u1433\u1434\u0007"+ - "\u0007\u0000\u0000\u1434\u1435\u0007\u0019\u0000\u0000\u1435\u1436\u0007"+ - "\u0006\u0000\u0000\u1436\u1437\u0007\u0011\u0000\u0000\u1437\u1438\u0007"+ - "\u000e\u0000\u0000\u1438\u1439\u0007\u0010\u0000\u0000\u1439\u03f4\u0001"+ - "\u0000\u0000\u0000\u143a\u143b\u0007\n\u0000\u0000\u143b\u143c\u0007\r"+ - "\u0000\u0000\u143c\u143d\u0007\r\u0000\u0000\u143d\u143e\u0007\u0013\u0000"+ - "\u0000\u143e\u143f\u0007\r\u0000\u0000\u143f\u03f6\u0001\u0000\u0000\u0000"+ - "\u1440\u1441\u0007\u0016\u0000\u0000\u1441\u1442\u0007\t\u0000\u0000\u1442"+ - "\u1443\u0007\n\u0000\u0000\u1443\u1444\u0005_\u0000\u0000\u1444\u1445"+ - "\u0007\u001b\u0000\u0000\u1445\u1446\u0007\u0005\u0000\u0000\u1446\u1447"+ - "\u0007\r\u0000\u0000\u1447\u1448\u0007\u0011\u0000\u0000\u1448\u1449\u0007"+ - "\u0005\u0000\u0000\u1449\u144a\u0007\u0012\u0000\u0000\u144a\u144b\u0007"+ - "\u0006\u0000\u0000\u144b\u144c\u0007\n\u0000\u0000\u144c\u03f8\u0001\u0000"+ - "\u0000\u0000\u144d\u144e\u0007\u0016\u0000\u0000\u144e\u144f\u0007\t\u0000"+ - "\u0000\u144f\u1450\u0007\n\u0000\u0000\u1450\u1451\u0005_\u0000\u0000"+ - "\u1451\u1452\u0007\u000e\u0000\u0000\u1452\u1453\u0007\u0013\u0000\u0000"+ - "\u1453\u1454\u0007\u0006\u0000\u0000\u1454\u1455\u0007\u0016\u0000\u0000"+ - "\u1455\u1456\u0007\u000f\u0000\u0000\u1456\u1457\u0007\u0007\u0000\u0000"+ - "\u1457\u03fa\u0001\u0000\u0000\u0000\u1458\u1459\u0007\u0005\u0000\u0000"+ - "\u1459\u145a\u0007\u0006\u0000\u0000\u145a\u145b\u0007\u0011\u0000\u0000"+ - "\u145b\u145c\u0007\u0005\u0000\u0000\u145c\u145d\u0007\t\u0000\u0000\u145d"+ - "\u03fc\u0001\u0000\u0000\u0000\u145e\u145f\u0007\u000e\u0000\u0000\u145f"+ - "\u1460\u0007\u0013\u0000\u0000\u1460\u1461\u0007\u0007\u0000\u0000\u1461"+ - "\u1462\u0007\t\u0000\u0000\u1462\u1463\u0007\u0010\u0000\u0000\u1463\u1464"+ - "\u0007\u0005\u0000\u0000\u1464\u1465\u0007\u0007\u0000\u0000\u1465\u1466"+ - "\u0007\u0010\u0000\u0000\u1466\u03fe\u0001\u0000\u0000\u0000\u1467\u1468"+ - "\u0007\u0018\u0000\u0000\u1468\u1469\u0007\n\u0000\u0000\u1469\u146a\u0007"+ - "\r\u0000\u0000\u146a\u146b\u0007\u0019\u0000\u0000\u146b\u146c\u0007\u0013"+ - "\u0000\u0000\u146c\u146d\u0007\r\u0000\u0000\u146d\u146e\u0007\u000f\u0000"+ - "\u0000\u146e\u0400\u0001\u0000\u0000\u0000\u146f\u1470\u0007\u0017\u0000"+ - "\u0000\u1470\u1471\u0007\n\u0000\u0000\u1471\u1472\u0007\u0010\u0000\u0000"+ - "\u1472\u0402\u0001\u0000\u0000\u0000\u1473\u1474\u0007\f\u0000\u0000\u1474"+ - "\u1475\u0007\u0011\u0000\u0000\u1475\u1476\u0007\u0005\u0000\u0000\u1476"+ - "\u1477\u0007\u0017\u0000\u0000\u1477\u1478\u0007\u0007\u0000\u0000\u1478"+ - "\u1479\u0007\u0013\u0000\u0000\u1479\u147a\u0007\t\u0000\u0000\u147a\u147b"+ - "\u0007\u0010\u0000\u0000\u147b\u147c\u0007\u0011\u0000\u0000\u147c\u147d"+ - "\u0007\u000e\u0000\u0000\u147d\u147e\u0007\t\u0000\u0000\u147e\u0404\u0001"+ - "\u0000\u0000\u0000\u147f\u1480\u0007\t\u0000\u0000\u1480\u1481\u0007\u0010"+ - "\u0000\u0000\u1481\u1482\u0007\u0005\u0000\u0000\u1482\u1483\u0007\u000e"+ - "\u0000\u0000\u1483\u1484\u0007\u0015\u0000\u0000\u1484\u1485\u0007\n\u0000"+ - "\u0000\u1485\u1486\u0007\f\u0000\u0000\u1486\u0406\u0001\u0000\u0000\u0000"+ - "\u1487\u1488\u0007\n\u0000\u0000\u1488\u1489\u0007\u0006\u0000\u0000\u1489"+ - "\u148a\u0007\t\u0000\u0000\u148a\u148b\u0007\u0011\u0000\u0000\u148b\u148c"+ - "\u0007\u0019\u0000\u0000\u148c\u0408\u0001\u0000\u0000\u0000\u148d\u148e"+ - "\u0007\u001c\u0000\u0000\u148e\u148f\u0007\u0014\u0000\u0000\u148f\u1490"+ - "\u0007\u0011\u0000\u0000\u1490\u1491\u0007\u0006\u0000\u0000\u1491\u1492"+ - "\u0007\n\u0000\u0000\u1492\u040a\u0001\u0000\u0000\u0000\u1493\u1494\u0007"+ - "\r\u0000\u0000\u1494\u1495\u0007\n\u0000\u0000\u1495\u1496\u0007\u001b"+ - "\u0000\u0000\u1496\u1497\u0007\n\u0000\u0000\u1497\u1498\u0007\r\u0000"+ - "\u0000\u1498\u1499\u0007\t\u0000\u0000\u1499\u149a\u0007\n\u0000\u0000"+ - "\u149a\u040c\u0001\u0000\u0000\u0000\u149b\u149c\u0007\u0019\u0000\u0000"+ - "\u149c\u149d\u0007\u0013\u0000\u0000\u149d\u149e\u0007\r\u0000\u0000\u149e"+ - "\u149f\u0007\n\u0000\u0000\u149f\u14a0\u0007\u0005\u0000\u0000\u14a0\u14a1"+ - "\u0007\u000e\u0000\u0000\u14a1\u14a2\u0007\u0014\u0000\u0000\u14a2\u040e"+ - "\u0001\u0000\u0000\u0000\u14a3\u14a4\u0007\t\u0000\u0000\u14a4\u14a5\u0007"+ - "\u0006\u0000\u0000\u14a5\u14a6\u0007\u0011\u0000\u0000\u14a6\u14a7\u0007"+ - "\u000e\u0000\u0000\u14a7\u14a8\u0007\n\u0000\u0000\u14a8\u0410\u0001\u0000"+ - "\u0000\u0000\u14a9\u14aa\u0007\n\u0000\u0000\u14aa\u14ab\u0007\u001a\u0000"+ - "\u0000\u14ab\u14ac\u0007\u0011\u0000\u0000\u14ac\u14ad\u0007\u0010\u0000"+ - "\u0000\u14ad\u0412\u0001\u0000\u0000\u0000\u14ae\u14af\u0007\r\u0000\u0000"+ - "\u14af\u14b0\u0007\n\u0000\u0000\u14b0\u14b1\u0007\u0010\u0000\u0000\u14b1"+ - "\u14b2\u0007\u0016\u0000\u0000\u14b2\u14b3\u0007\r\u0000\u0000\u14b3\u14b4"+ - "\u0007\u0007\u0000\u0000\u14b4\u0414\u0001\u0000\u0000\u0000\u14b5\u14b6"+ - "\u0007\u001d\u0000\u0000\u14b6\u14b7\u0007\u0016\u0000\u0000\u14b7\u14b8"+ - "\u0007\n\u0000\u0000\u14b8\u14b9\u0007\r\u0000\u0000\u14b9\u14ba\u0007"+ - "\b\u0000\u0000\u14ba\u0416\u0001\u0000\u0000\u0000\u14bb\u14bc\u0007\r"+ - "\u0000\u0000\u14bc\u14bd\u0007\u0005\u0000\u0000\u14bd\u14be\u0007\u0011"+ - "\u0000\u0000\u14be\u14bf\u0007\t\u0000\u0000\u14bf\u14c0\u0007\n\u0000"+ - "\u0000\u14c0\u0418\u0001\u0000\u0000\u0000\u14c1\u14c2\u0007\t\u0000\u0000"+ - "\u14c2\u14c3\u0007\u001d\u0000\u0000\u14c3\u14c4\u0007\u0006\u0000\u0000"+ - "\u14c4\u14c5\u0007\t\u0000\u0000\u14c5\u14c6\u0007\u0010\u0000\u0000\u14c6"+ - "\u14c7\u0007\u0005\u0000\u0000\u14c7\u14c8\u0007\u0010\u0000\u0000\u14c8"+ - "\u14c9\u0007\n\u0000\u0000\u14c9\u041a\u0001\u0000\u0000\u0000\u14ca\u14cb"+ - "\u0007\f\u0000\u0000\u14cb\u14cc\u0007\n\u0000\u0000\u14cc\u14cd\u0007"+ - "\u0012\u0000\u0000\u14cd\u14ce\u0007\u0016\u0000\u0000\u14ce\u14cf\u0007"+ - "\u0017\u0000\u0000\u14cf\u041c\u0001\u0000\u0000\u0000\u14d0\u14d1\u0007"+ - "\u0006\u0000\u0000\u14d1\u14d2\u0007\u0013\u0000\u0000\u14d2\u14d3\u0007"+ - "\u0017\u0000\u0000\u14d3\u041e\u0001\u0000\u0000\u0000\u14d4\u14d5\u0007"+ - "\u0011\u0000\u0000\u14d5\u14d6\u0007\u0007\u0000\u0000\u14d6\u14d7\u0007"+ - "\u0019\u0000\u0000\u14d7\u14d8\u0007\u0013\u0000\u0000\u14d8\u0420\u0001"+ - "\u0000\u0000\u0000\u14d9\u14da\u0007\u0007\u0000\u0000\u14da\u14db\u0007"+ - "\u0013\u0000\u0000\u14db\u14dc\u0007\u0010\u0000\u0000\u14dc\u14dd\u0007"+ - "\u0011\u0000\u0000\u14dd\u14de\u0007\u000e\u0000\u0000\u14de\u14df\u0007"+ - "\n\u0000\u0000\u14df\u0422\u0001\u0000\u0000\u0000\u14e0\u14e1\u0007\u001c"+ - "\u0000\u0000\u14e1\u14e2\u0007\u0005\u0000\u0000\u14e2\u14e3\u0007\r\u0000"+ - "\u0000\u14e3\u14e4\u0007\u0007\u0000\u0000\u14e4\u14e5\u0007\u0011\u0000"+ - "\u0000\u14e5\u14e6\u0007\u0007\u0000\u0000\u14e6\u14e7\u0007\u0017\u0000"+ - "\u0000\u14e7\u0424\u0001\u0000\u0000\u0000\u14e8\u14e9\u0007\n\u0000\u0000"+ - "\u14e9\u14ea\u0007\u001a\u0000\u0000\u14ea\u14eb\u0007\u000e\u0000\u0000"+ - "\u14eb\u14ec\u0007\n\u0000\u0000\u14ec\u14ed\u0007\u0018\u0000\u0000\u14ed"+ - "\u14ee\u0007\u0010\u0000\u0000\u14ee\u14ef\u0007\u0011\u0000\u0000\u14ef"+ - "\u14f0\u0007\u0013\u0000\u0000\u14f0\u14f1\u0007\u0007\u0000\u0000\u14f1"+ - "\u0426\u0001\u0000\u0000\u0000\u14f2\u14f3\u0007\u0005\u0000\u0000\u14f3"+ - "\u14f4\u0007\t\u0000\u0000\u14f4\u14f5\u0007\t\u0000\u0000\u14f5\u14f6"+ - "\u0007\n\u0000\u0000\u14f6\u14f7\u0007\r\u0000\u0000\u14f7\u14f8\u0007"+ - "\u0010\u0000\u0000\u14f8\u0428\u0001\u0000\u0000\u0000\u14f9\u14fa\u0007"+ - "\u0006\u0000\u0000\u14fa\u14fb\u0007\u0013\u0000\u0000\u14fb\u14fc\u0007"+ - "\u0013\u0000\u0000\u14fc\u14fd\u0007\u0018\u0000\u0000\u14fd\u042a\u0001"+ - "\u0000\u0000\u0000\u14fe\u14ff\u0007\u0013\u0000\u0000\u14ff\u1500\u0007"+ - "\u0018\u0000\u0000\u1500\u1501\u0007\n\u0000\u0000\u1501\u1502\u0007\u0007"+ - "\u0000\u0000\u1502\u042c\u0001\u0000\u0000\u0000\u1503\u1504\u0007\u0005"+ - "\u0000\u0000\u1504\u1505\u0007\u0012\u0000\u0000\u1505\u1506\u0007\t\u0000"+ - "\u0000\u1506\u042e\u0001\u0000\u0000\u0000\u1507\u1508\u0007\u000e\u0000"+ - "\u0000\u1508\u1509\u0007\u0012\u0000\u0000\u1509\u150a\u0007\r\u0000\u0000"+ - "\u150a\u150b\u0007\u0010\u0000\u0000\u150b\u0430\u0001\u0000\u0000\u0000"+ - "\u150c\u150d\u0007\u000e\u0000\u0000\u150d\u150e\u0007\n\u0000\u0000\u150e"+ - "\u150f\u0007\u0011\u0000\u0000\u150f\u1510\u0007\u0006\u0000\u0000\u1510"+ - "\u0432\u0001\u0000\u0000\u0000\u1511\u1512\u0007\u000e\u0000\u0000\u1512"+ - "\u1513\u0007\n\u0000\u0000\u1513\u1514\u0007\u0011\u0000\u0000\u1514\u1515"+ - "\u0007\u0006\u0000\u0000\u1515\u1516\u0007\u0011\u0000\u0000\u1516\u1517"+ - "\u0007\u0007\u0000\u0000\u1517\u1518\u0007\u0017\u0000\u0000\u1518\u0434"+ - "\u0001\u0000\u0000\u0000\u1519\u151a\u0007\f\u0000\u0000\u151a\u151b\u0007"+ - "\n\u0000\u0000\u151b\u151c\u0007\u0017\u0000\u0000\u151c\u151d\u0007\r"+ - "\u0000\u0000\u151d\u151e\u0007\n\u0000\u0000\u151e\u151f\u0007\n\u0000"+ - "\u0000\u151f\u1520\u0007\t\u0000\u0000\u1520\u0436\u0001\u0000\u0000\u0000"+ - "\u1521\u1522\u0007\f\u0000\u0000\u1522\u1523\u0007\u0011\u0000\u0000\u1523"+ - "\u1524\u0007\u001b\u0000\u0000\u1524\u0438\u0001\u0000\u0000\u0000\u1525"+ - "\u1526\u0007\n\u0000\u0000\u1526\u1527\u0007\u001a\u0000\u0000\u1527\u1528"+ - "\u0007\u0018\u0000\u0000\u1528\u043a\u0001\u0000\u0000\u0000\u1529\u152a"+ - "\u0007\u0019\u0000\u0000\u152a\u152b\u0007\u0005\u0000\u0000\u152b\u152c"+ - "\u0007\u000e\u0000\u0000\u152c\u152d\u0007\u0010\u0000\u0000\u152d\u152e"+ - "\u0007\u0013\u0000\u0000\u152e\u152f\u0007\r\u0000\u0000\u152f\u1530\u0007"+ - "\u0011\u0000\u0000\u1530\u1531\u0007\u0005\u0000\u0000\u1531\u1532\u0007"+ - "\u0006\u0000\u0000\u1532\u043c\u0001\u0000\u0000\u0000\u1533\u1534\u0007"+ - "\u0019\u0000\u0000\u1534\u1535\u0007\u0006\u0000\u0000\u1535\u1536\u0007"+ - "\u0013\u0000\u0000\u1536\u1537\u0007\u0013\u0000\u0000\u1537\u1538\u0007"+ - "\r\u0000\u0000\u1538\u043e\u0001\u0000\u0000\u0000\u1539\u153a\u0007\u0017"+ - "\u0000\u0000\u153a\u153b\u0007\u000e\u0000\u0000\u153b\u153c\u0007\f\u0000"+ - "\u0000\u153c\u0440\u0001\u0000\u0000\u0000\u153d\u153e\u0007\u0006\u0000"+ - "\u0000\u153e\u153f\u0007\u000e\u0000\u0000\u153f\u1540\u0007\u000f\u0000"+ - "\u0000\u1540\u0442\u0001\u0000\u0000\u0000\u1541\u1542\u0007\u0006\u0000"+ - "\u0000\u1542\u1543\u0007\u0007\u0000\u0000\u1543\u0444\u0001\u0000\u0000"+ - "\u0000\u1544\u1545\u0007\u0006\u0000\u0000\u1545\u1546\u0007\u0013\u0000"+ - "\u0000\u1546\u1547\u0007\u0017\u0000\u0000\u1547\u1548\u00051\u0000\u0000"+ - "\u1548\u1549\u00050\u0000\u0000\u1549\u0446\u0001\u0000\u0000\u0000\u154a"+ - "\u154b\u0007\u000f\u0000\u0000\u154b\u154c\u0007\u0011\u0000\u0000\u154c"+ - "\u154d\u0007\u0007\u0000\u0000\u154d\u154e\u0005_\u0000\u0000\u154e\u154f"+ - "\u0007\t\u0000\u0000\u154f\u1550\u0007\u000e\u0000\u0000\u1550\u1551\u0007"+ - "\u0005\u0000\u0000\u1551\u1552\u0007\u0006\u0000\u0000\u1552\u1553\u0007"+ - "\n\u0000\u0000\u1553\u0448\u0001\u0000\u0000\u0000\u1554\u1555\u0007\u000f"+ - "\u0000\u0000\u1555\u1556\u0007\u0013\u0000\u0000\u1556\u1557\u0007\f\u0000"+ - "\u0000\u1557\u044a\u0001\u0000\u0000\u0000\u1558\u1559\u0007\u0018\u0000"+ - "\u0000\u1559\u155a\u0007\u0011\u0000\u0000\u155a\u044c\u0001\u0000\u0000"+ - "\u0000\u155b\u155c\u0007\u0018\u0000\u0000\u155c\u155d\u0007\u0013\u0000"+ - "\u0000\u155d\u155e\u0007\u001c\u0000\u0000\u155e\u155f\u0007\n\u0000\u0000"+ - "\u155f\u1560\u0007\r\u0000\u0000\u1560\u044e\u0001\u0000\u0000\u0000\u1561"+ - "\u1562\u0007\r\u0000\u0000\u1562\u1563\u0007\u0005\u0000\u0000\u1563\u1564"+ - "\u0007\f\u0000\u0000\u1564\u1565\u0007\u0011\u0000\u0000\u1565\u1566\u0007"+ - "\u0005\u0000\u0000\u1566\u1567\u0007\u0007\u0000\u0000\u1567\u1568\u0007"+ - "\t\u0000\u0000\u1568\u0450\u0001\u0000\u0000\u0000\u1569\u156a\u0007\r"+ - "\u0000\u0000\u156a\u156b\u0007\u0013\u0000\u0000\u156b\u156c\u0007\u0016"+ - "\u0000\u0000\u156c\u156d\u0007\u0007\u0000\u0000\u156d\u156e\u0007\f\u0000"+ - "\u0000\u156e\u0452\u0001\u0000\u0000\u0000\u156f\u1570\u0007\t\u0000\u0000"+ - "\u1570\u1571\u0007\u000e\u0000\u0000\u1571\u1572\u0007\u0005\u0000\u0000"+ - "\u1572\u1573\u0007\u0006\u0000\u0000\u1573\u1574\u0007\n\u0000\u0000\u1574"+ - "\u0454\u0001\u0000\u0000\u0000\u1575\u1576\u0007\t\u0000\u0000\u1576\u1577"+ - "\u0007\u0011\u0000\u0000\u1577\u1578\u0007\u0017\u0000\u0000\u1578\u1579"+ - "\u0007\u0007\u0000\u0000\u1579\u0456\u0001\u0000\u0000\u0000\u157a\u157b"+ - "\u0007\t\u0000\u0000\u157b\u157c\u0007\u001d\u0000\u0000\u157c\u157d\u0007"+ - "\r\u0000\u0000\u157d\u157e\u0007\u0010\u0000\u0000\u157e\u0458\u0001\u0000"+ - "\u0000\u0000\u157f\u1580\u0007\u0010\u0000\u0000\u1580\u1581\u0007\r\u0000"+ - "\u0000\u1581\u1582\u0007\u0011\u0000\u0000\u1582\u1583\u0007\u000f\u0000"+ - "\u0000\u1583\u1584\u0005_\u0000\u0000\u1584\u1585\u0007\t\u0000\u0000"+ - "\u1585\u1586\u0007\u000e\u0000\u0000\u1586\u1587\u0007\u0005\u0000\u0000"+ - "\u1587\u1588\u0007\u0006\u0000\u0000\u1588\u1589\u0007\n\u0000\u0000\u1589"+ - "\u045a\u0001\u0000\u0000\u0000\u158a\u158b\u0007\u0010\u0000\u0000\u158b"+ - "\u158c\u0007\r\u0000\u0000\u158c\u158d\u0007\u0016\u0000\u0000\u158d\u158e"+ - "\u0007\u0007\u0000\u0000\u158e\u158f\u0007\u000e\u0000\u0000\u158f\u045c"+ - "\u0001\u0000\u0000\u0000\u1590\u1591\u0007\u001c\u0000\u0000\u1591\u1592"+ - "\u0007\u0011\u0000\u0000\u1592\u1593\u0007\f\u0000\u0000\u1593\u1594\u0007"+ - "\u0010\u0000\u0000\u1594\u1595\u0007\u0014\u0000\u0000\u1595\u1596\u0005"+ - "_\u0000\u0000\u1596\u1597\u0007\u0012\u0000\u0000\u1597\u1598\u0007\u0016"+ - "\u0000\u0000\u1598\u1599\u0007\u000e\u0000\u0000\u1599\u159a\u0007\u0015"+ - "\u0000\u0000\u159a\u159b\u0007\n\u0000\u0000\u159b\u159c\u0007\u0010\u0000"+ - "\u0000\u159c\u045e\u0001\u0000\u0000\u0000\u159d\u159e\u0007\r\u0000\u0000"+ - "\u159e\u159f\u0007\u0005\u0000\u0000\u159f\u15a0\u0007\u0007\u0000\u0000"+ - "\u15a0\u15a1\u0007\f\u0000\u0000\u15a1\u15a2\u0007\u0013\u0000\u0000\u15a2"+ - "\u15a3\u0007\u000f\u0000\u0000\u15a3\u0460\u0001\u0000\u0000\u0000\u15a4"+ - "\u15a5\u0007\t\u0000\u0000\u15a5\u15a6\u0007\n\u0000\u0000\u15a6\u15a7"+ - "\u0007\u0010\u0000\u0000\u15a7\u15a8\u0007\t\u0000\u0000\u15a8\u15a9\u0007"+ - "\n\u0000\u0000\u15a9\u15aa\u0007\n\u0000\u0000\u15aa\u15ab\u0007\f\u0000"+ - "\u0000\u15ab\u0462\u0001\u0000\u0000\u0000\u15ac\u15ad\u0007\u0005\u0000"+ - "\u0000\u15ad\u15ae\u0007\u000e\u0000\u0000\u15ae\u15af\u0007\u0013\u0000"+ - "\u0000\u15af\u15b0\u0007\t\u0000\u0000\u15b0\u0464\u0001\u0000\u0000\u0000"+ - "\u15b1\u15b2\u0007\u0005\u0000\u0000\u15b2\u15b3\u0007\u000e\u0000\u0000"+ - "\u15b3\u15b4\u0007\u0013\u0000\u0000\u15b4\u15b5\u0007\t\u0000\u0000\u15b5"+ - "\u15b6\u0007\f\u0000\u0000\u15b6\u0466\u0001\u0000\u0000\u0000\u15b7\u15b8"+ - "\u0007\u0005\u0000\u0000\u15b8\u15b9\u0007\t\u0000\u0000\u15b9\u15ba\u0007"+ - "\u0011\u0000\u0000\u15ba\u15bb\u0007\u0007\u0000\u0000\u15bb\u0468\u0001"+ - "\u0000\u0000\u0000\u15bc\u15bd\u0007\u0005\u0000\u0000\u15bd\u15be\u0007"+ - "\t\u0000\u0000\u15be\u15bf\u0007\u0011\u0000\u0000\u15bf\u15c0\u0007\u0007"+ - "\u0000\u0000\u15c0\u15c1\u0007\f\u0000\u0000\u15c1\u046a\u0001\u0000\u0000"+ - "\u0000\u15c2\u15c3\u0007\u0005\u0000\u0000\u15c3\u15c4\u0007\u0010\u0000"+ - "\u0000\u15c4\u15c5\u0007\u0005\u0000\u0000\u15c5\u15c6\u0007\u0007\u0000"+ - "\u0000\u15c6\u046c\u0001\u0000\u0000\u0000\u15c7\u15c8\u0007\u0005\u0000"+ - "\u0000\u15c8\u15c9\u0007\u0010\u0000\u0000\u15c9\u15ca\u0007\u0005\u0000"+ - "\u0000\u15ca\u15cb\u0007\u0007\u0000\u0000\u15cb\u15cc\u0007\f\u0000\u0000"+ - "\u15cc\u046e\u0001\u0000\u0000\u0000\u15cd\u15ce\u0007\u0005\u0000\u0000"+ - "\u15ce\u15cf\u0007\u0010\u0000\u0000\u15cf\u15d0\u0007\u0005\u0000\u0000"+ - "\u15d0\u15d1\u0007\u0007\u0000\u0000\u15d1\u15d2\u00052\u0000\u0000\u15d2"+ - "\u0470\u0001\u0000\u0000\u0000\u15d3\u15d4\u0007\u0005\u0000\u0000\u15d4"+ - "\u15d5\u0007\u0010\u0000\u0000\u15d5\u15d6\u0007\u0005\u0000\u0000\u15d6"+ - "\u15d7\u0007\u0007\u0000\u0000\u15d7\u15d8\u00052\u0000\u0000\u15d8\u15d9"+ - "\u0007\f\u0000\u0000\u15d9\u0472\u0001\u0000\u0000\u0000\u15da\u15db\u0007"+ - "\u000e\u0000\u0000\u15db\u15dc\u0007\u0013\u0000\u0000\u15dc\u15dd\u0007"+ - "\t\u0000\u0000\u15dd\u0474\u0001\u0000\u0000\u0000\u15de\u15df\u0007\u000e"+ - "\u0000\u0000\u15df\u15e0\u0007\u0013\u0000\u0000\u15e0\u15e1\u0007\t\u0000"+ - "\u0000\u15e1\u15e2\u0007\f\u0000\u0000\u15e2\u0476\u0001\u0000\u0000\u0000"+ - "\u15e3\u15e4\u0007\u000e\u0000\u0000\u15e4\u15e5\u0007\u0013\u0000\u0000"+ - "\u15e5\u15e6\u0007\u0010\u0000\u0000\u15e6\u0478\u0001\u0000\u0000\u0000"+ - "\u15e7\u15e8\u0007\u000e\u0000\u0000\u15e8\u15e9\u0007\u0013\u0000\u0000"+ - "\u15e9\u15ea\u0007\u0010\u0000\u0000\u15ea\u15eb\u0007\f\u0000\u0000\u15eb"+ - "\u047a\u0001\u0000\u0000\u0000\u15ec\u15ed\u0007\t\u0000\u0000\u15ed\u15ee"+ - "\u0007\u0011\u0000\u0000\u15ee\u15ef\u0007\u0007\u0000\u0000\u15ef\u047c"+ - "\u0001\u0000\u0000\u0000\u15f0\u15f1\u0007\t\u0000\u0000\u15f1\u15f2\u0007"+ - "\u0011\u0000\u0000\u15f2\u15f3\u0007\u0007\u0000\u0000\u15f3\u15f4\u0007"+ - "\f\u0000\u0000\u15f4\u047e\u0001\u0000\u0000\u0000\u15f5\u15f6\u0007\u0010"+ - "\u0000\u0000\u15f6\u15f7\u0007\u0005\u0000\u0000\u15f7\u15f8\u0007\u0007"+ - "\u0000\u0000\u15f8\u0480\u0001\u0000\u0000\u0000\u15f9\u15fa\u0007\u0010"+ - "\u0000\u0000\u15fa\u15fb\u0007\u0005\u0000\u0000\u15fb\u15fc\u0007\u0007"+ - "\u0000\u0000\u15fc\u15fd\u0007\f\u0000\u0000\u15fd\u0482\u0001\u0000\u0000"+ - "\u0000\u15fe\u15ff\u0007\t\u0000\u0000\u15ff\u1600\u0007\u0011\u0000\u0000"+ - "\u1600\u1601\u0007\u0007\u0000\u0000\u1601\u1602\u0007\u0014\u0000\u0000"+ - "\u1602\u0484\u0001\u0000\u0000\u0000\u1603\u1604\u0007\u000e\u0000\u0000"+ - "\u1604\u1605\u0007\u0013\u0000\u0000\u1605\u1606\u0007\t\u0000\u0000\u1606"+ - "\u1607\u0007\u0014\u0000\u0000\u1607\u0486\u0001\u0000\u0000\u0000\u1608"+ - "\u1609\u0007\u0010\u0000\u0000\u1609\u160a\u0007\u0005\u0000\u0000\u160a"+ - "\u160b\u0007\u0007\u0000\u0000\u160b\u160c\u0007\u0014\u0000\u0000\u160c"+ - "\u0488\u0001\u0000\u0000\u0000\u160d\u160e\u0007\u0005\u0000\u0000\u160e"+ - "\u160f\u0007\t\u0000\u0000\u160f\u1610\u0007\u0011\u0000\u0000\u1610\u1611"+ - "\u0007\u0007\u0000\u0000\u1611\u1612\u0007\u0014\u0000\u0000\u1612\u048a"+ - "\u0001\u0000\u0000\u0000\u1613\u1614\u0007\u0005\u0000\u0000\u1614\u1615"+ - "\u0007\u000e\u0000\u0000\u1615\u1616\u0007\u0013\u0000\u0000\u1616\u1617"+ - "\u0007\t\u0000\u0000\u1617\u1618\u0007\u0014\u0000\u0000\u1618\u048c\u0001"+ - "\u0000\u0000\u0000\u1619\u161a\u0007\u0005\u0000\u0000\u161a\u161b\u0007"+ - "\u0010\u0000\u0000\u161b\u161c\u0007\u0005\u0000\u0000\u161c\u161d\u0007"+ - "\u0007\u0000\u0000\u161d\u161e\u0007\u0014\u0000\u0000\u161e\u048e\u0001"+ - "\u0000\u0000\u0000\u161f\u1620\u0007\u0012\u0000\u0000\u1620\u1621\u0007"+ - "\u0011\u0000\u0000\u1621\u1622\u0007\u0010\u0000\u0000\u1622\u1623\u0005"+ - "_\u0000\u0000\u1623\u1624\u0007\u0006\u0000\u0000\u1624\u1625\u0007\n"+ - "\u0000\u0000\u1625\u1626\u0007\u0007\u0000\u0000\u1626\u1627\u0007\u0017"+ - "\u0000\u0000\u1627\u1628\u0007\u0010\u0000\u0000\u1628\u1629\u0007\u0014"+ - "\u0000\u0000\u1629\u0490\u0001\u0000\u0000\u0000\u162a\u162b\u0007\u000e"+ - "\u0000\u0000\u162b\u162c\u0007\u0014\u0000\u0000\u162c\u162d\u0007\u0005"+ - "\u0000\u0000\u162d\u162e\u0007\r\u0000\u0000\u162e\u162f\u0005_\u0000"+ - "\u0000\u162f\u1630\u0007\u0006\u0000\u0000\u1630\u1631\u0007\n\u0000\u0000"+ - "\u1631\u1632\u0007\u0007\u0000\u0000\u1632\u1633\u0007\u0017\u0000\u0000"+ - "\u1633\u1634\u0007\u0010\u0000\u0000\u1634\u1635\u0007\u0014\u0000\u0000"+ - "\u1635\u0492\u0001\u0000\u0000\u0000\u1636\u1637\u0007\u000e\u0000\u0000"+ - "\u1637\u1638\u0007\u0014\u0000\u0000\u1638\u1639\u0007\u0005\u0000\u0000"+ - "\u1639\u163a\u0007\r\u0000\u0000\u163a\u163b\u0007\u0005\u0000\u0000\u163b"+ - "\u163c\u0007\u000e\u0000\u0000\u163c\u163d\u0007\u0010\u0000\u0000\u163d"+ - "\u163e\u0007\n\u0000\u0000\u163e\u163f\u0007\r\u0000\u0000\u163f\u1640"+ - "\u0005_\u0000\u0000\u1640\u1641\u0007\u0006\u0000\u0000\u1641\u1642\u0007"+ - "\n\u0000\u0000\u1642\u1643\u0007\u0007\u0000\u0000\u1643\u1644\u0007\u0017"+ - "\u0000\u0000\u1644\u1645\u0007\u0010\u0000\u0000\u1645\u1646\u0007\u0014"+ - "\u0000\u0000\u1646\u0494\u0001\u0000\u0000\u0000\u1647\u1648\u0007\u0006"+ - "\u0000\u0000\u1648\u1649\u0007\u0013\u0000\u0000\u1649\u164a\u0007\u001c"+ - "\u0000\u0000\u164a\u164b\u0007\n\u0000\u0000\u164b\u164c\u0007\r\u0000"+ - "\u0000\u164c\u0496\u0001\u0000\u0000\u0000\u164d\u164e\u0007\u0013\u0000"+ - "\u0000\u164e\u164f\u0007\u000e\u0000\u0000\u164f\u1650\u0007\u0010\u0000"+ - "\u0000\u1650\u1651\u0007\n\u0000\u0000\u1651\u1652\u0007\u0010\u0000\u0000"+ - "\u1652\u1653\u0005_\u0000\u0000\u1653\u1654\u0007\u0006\u0000\u0000\u1654"+ - "\u1655\u0007\n\u0000\u0000\u1655\u1656\u0007\u0007\u0000\u0000\u1656\u1657"+ - "\u0007\u0017\u0000\u0000\u1657\u1658\u0007\u0010\u0000\u0000\u1658\u1659"+ - "\u0007\u0014\u0000\u0000\u1659\u0498\u0001\u0000\u0000\u0000\u165a\u165b"+ - "\u0007\u0016\u0000\u0000\u165b\u165c\u0007\u0018\u0000\u0000\u165c\u165d"+ - "\u0007\u0018\u0000\u0000\u165d\u165e\u0007\n\u0000\u0000\u165e\u165f\u0007"+ - "\r\u0000\u0000\u165f\u049a\u0001\u0000\u0000\u0000\u1660\u1661\u0007\u0005"+ - "\u0000\u0000\u1661\u1662\u0007\t\u0000\u0000\u1662\u1663\u0007\u000e\u0000"+ - "\u0000\u1663\u1664\u0007\u0011\u0000\u0000\u1664\u1665\u0007\u0011\u0000"+ - "\u0000\u1665\u049c\u0001\u0000\u0000\u0000\u1666\u1667\u0007\u0012\u0000"+ - "\u0000\u1667\u1668\u0007\u0010\u0000\u0000\u1668\u1669\u0007\r\u0000\u0000"+ - "\u1669\u166a\u0007\u0011\u0000\u0000\u166a\u166b\u0007\u000f\u0000\u0000"+ - "\u166b\u049e\u0001\u0000\u0000\u0000\u166c\u166d\u0007\u000e\u0000\u0000"+ - "\u166d\u166e\u0007\u0014\u0000\u0000\u166e\u166f\u0007\r\u0000\u0000\u166f"+ - "\u04a0\u0001\u0000\u0000\u0000\u1670\u1671\u0007\u000e\u0000\u0000\u1671"+ - "\u1672\u0007\u0013\u0000\u0000\u1672\u1673\u0007\u0007\u0000\u0000\u1673"+ - "\u1674\u0007\u000e\u0000\u0000\u1674\u1675\u0007\u0005\u0000\u0000\u1675"+ - "\u1676\u0007\u0010\u0000\u0000\u1676\u04a2\u0001\u0000\u0000\u0000\u1677"+ - "\u1678\u0007\u000e\u0000\u0000\u1678\u1679\u0007\u0013\u0000\u0000\u1679"+ - "\u167a\u0007\u0007\u0000\u0000\u167a\u167b\u0007\u000e\u0000\u0000\u167b"+ - "\u167c\u0007\u0005\u0000\u0000\u167c\u167d\u0007\u0010\u0000\u0000\u167d"+ - "\u167e\u0005_\u0000\u0000\u167e\u167f\u0007\u001c\u0000\u0000\u167f\u1680"+ - "\u0007\t\u0000\u0000\u1680\u04a4\u0001\u0000\u0000\u0000\u1681\u1682\u0007"+ - "\u0019\u0000\u0000\u1682\u1683\u0007\u0013\u0000\u0000\u1683\u1684\u0007"+ - "\r\u0000\u0000\u1684\u1685\u0007\u000f\u0000\u0000\u1685\u1686\u0007\u0005"+ - "\u0000\u0000\u1686\u1687\u0007\u0010\u0000\u0000\u1687\u04a6\u0001\u0000"+ - "\u0000\u0000\u1688\u1689\u0007\u0011\u0000\u0000\u1689\u168a\u0007\u0007"+ - "\u0000\u0000\u168a\u168b\u0007\u0011\u0000\u0000\u168b\u168c\u0007\u0010"+ - "\u0000\u0000\u168c\u168d\u0007\u000e\u0000\u0000\u168d\u168e\u0007\u0005"+ - "\u0000\u0000\u168e\u168f\u0007\u0018\u0000\u0000\u168f\u04a8\u0001\u0000"+ - "\u0000\u0000\u1690\u1691\u0007\u0006\u0000\u0000\u1691\u1692\u0007\n\u0000"+ - "\u0000\u1692\u1693\u0007\u0007\u0000\u0000\u1693\u1694\u0007\u0017\u0000"+ - "\u0000\u1694\u1695\u0007\u0010\u0000\u0000\u1695\u1696\u0007\u0014\u0000"+ - "\u0000\u1696\u04aa\u0001\u0000\u0000\u0000\u1697\u1698\u0007\u0006\u0000"+ - "\u0000\u1698\u1699\u0007\u0018\u0000\u0000\u1699\u169a\u0007\u0005\u0000"+ - "\u0000\u169a\u169b\u0007\f\u0000\u0000\u169b\u04ac\u0001\u0000\u0000\u0000"+ - "\u169c\u169d\u0007\u0006\u0000\u0000\u169d\u169e\u0007\u0010\u0000\u0000"+ - "\u169e\u169f\u0007\r\u0000\u0000\u169f\u16a0\u0007\u0011\u0000\u0000\u16a0"+ - "\u16a1\u0007\u000f\u0000\u0000\u16a1\u04ae\u0001\u0000\u0000\u0000\u16a2"+ - "\u16a3\u0007\u000f\u0000\u0000\u16a3\u16a4\u0007\f\u0000\u0000\u16a4\u16a5"+ - "\u00055\u0000\u0000\u16a5\u04b0\u0001\u0000\u0000\u0000\u16a6\u16a7\u0007"+ - "\u0018\u0000\u0000\u16a7\u16a8\u0007\u0005\u0000\u0000\u16a8\u16a9\u0007"+ - "\r\u0000\u0000\u16a9\u16aa\u0007\t\u0000\u0000\u16aa\u16ab\u0007\n\u0000"+ - "\u0000\u16ab\u16ac\u0005_\u0000\u0000\u16ac\u16ad\u0007\u0011\u0000\u0000"+ - "\u16ad\u16ae\u0007\f\u0000\u0000\u16ae\u16af\u0007\n\u0000\u0000\u16af"+ - "\u16b0\u0007\u0007\u0000\u0000\u16b0\u16b1\u0007\u0010\u0000\u0000\u16b1"+ - "\u04b2\u0001\u0000\u0000\u0000\u16b2\u16b3\u0007\u0018\u0000\u0000\u16b3"+ - "\u16b4\u0007\u0017\u0000\u0000\u16b4\u16b5\u0005_\u0000\u0000\u16b5\u16b6"+ - "\u0007\u000e\u0000\u0000\u16b6\u16b7\u0007\u0006\u0000\u0000\u16b7\u16b8"+ - "\u0007\u0011\u0000\u0000\u16b8\u16b9\u0007\n\u0000\u0000\u16b9\u16ba\u0007"+ - "\u0007\u0000\u0000\u16ba\u16bb\u0007\u0010\u0000\u0000\u16bb\u16bc\u0005"+ - "_\u0000\u0000\u16bc\u16bd\u0007\n\u0000\u0000\u16bd\u16be\u0007\u0007"+ - "\u0000\u0000\u16be\u16bf\u0007\u000e\u0000\u0000\u16bf\u16c0\u0007\u0013"+ - "\u0000\u0000\u16c0\u16c1\u0007\f\u0000\u0000\u16c1\u16c2\u0007\u0011\u0000"+ - "\u0000\u16c2\u16c3\u0007\u0007\u0000\u0000\u16c3\u16c4\u0007\u0017\u0000"+ - "\u0000\u16c4\u04b4\u0001\u0000\u0000\u0000\u16c5\u16c6\u0007\u001d\u0000"+ - "\u0000\u16c6\u16c7\u0007\u0016\u0000\u0000\u16c7\u16c8\u0007\u0013\u0000"+ - "\u0000\u16c8\u16c9\u0007\u0010\u0000\u0000\u16c9\u16ca\u0007\n\u0000\u0000"+ - "\u16ca\u16cb\u0005_\u0000\u0000\u16cb\u16cc\u0007\u0011\u0000\u0000\u16cc"+ - "\u16cd\u0007\f\u0000\u0000\u16cd\u16ce\u0007\n\u0000\u0000\u16ce\u16cf"+ - "\u0007\u0007\u0000\u0000\u16cf\u16d0\u0007\u0010\u0000\u0000\u16d0\u04b6"+ - "\u0001\u0000\u0000\u0000\u16d1\u16d2\u0007\u001d\u0000\u0000\u16d2\u16d3"+ - "\u0007\u0016\u0000\u0000\u16d3\u16d4\u0007\u0013\u0000\u0000\u16d4\u16d5"+ - "\u0007\u0010\u0000\u0000\u16d5\u16d6\u0007\n\u0000\u0000\u16d6\u16d7\u0005"+ - "_\u0000\u0000\u16d7\u16d8\u0007\u0006\u0000\u0000\u16d8\u16d9\u0007\u0011"+ - "\u0000\u0000\u16d9\u16da\u0007\u0010\u0000\u0000\u16da\u16db\u0007\n\u0000"+ - "\u0000\u16db\u16dc\u0007\r\u0000\u0000\u16dc\u16dd\u0007\u0005\u0000\u0000"+ - "\u16dd\u16de\u0007\u0006\u0000\u0000\u16de\u04b8\u0001\u0000\u0000\u0000"+ - "\u16df\u16e0\u0007\u001d\u0000\u0000\u16e0\u16e1\u0007\u0016\u0000\u0000"+ - "\u16e1\u16e2\u0007\u0013\u0000\u0000\u16e2\u16e3\u0007\u0010\u0000\u0000"+ - "\u16e3\u16e4\u0007\n\u0000\u0000\u16e4\u16e5\u0005_\u0000\u0000\u16e5"+ - "\u16e6\u0007\u0007\u0000\u0000\u16e6\u16e7\u0007\u0016\u0000\u0000\u16e7"+ - "\u16e8\u0007\u0006\u0000\u0000\u16e8\u16e9\u0007\u0006\u0000\u0000\u16e9"+ - "\u16ea\u0007\u0005\u0000\u0000\u16ea\u16eb\u0007\u0012\u0000\u0000\u16eb"+ - "\u16ec\u0007\u0006\u0000\u0000\u16ec\u16ed\u0007\n\u0000\u0000\u16ed\u04ba"+ - "\u0001\u0000\u0000\u0000\u16ee\u16ef\u0007\r\u0000\u0000\u16ef\u16f0\u0007"+ - "\n\u0000\u0000\u16f0\u16f1\u0007\u0017\u0000\u0000\u16f1\u16f2\u0007\n"+ - "\u0000\u0000\u16f2\u16f3\u0007\u001a\u0000\u0000\u16f3\u16f4\u0007\u0018"+ - "\u0000\u0000\u16f4\u16f5\u0005_\u0000\u0000\u16f5\u16f6\u0007\u000e\u0000"+ - "\u0000\u16f6\u16f7\u0007\u0013\u0000\u0000\u16f7\u16f8\u0007\u0016\u0000"+ - "\u0000\u16f8\u16f9\u0007\u0007\u0000\u0000\u16f9\u16fa\u0007\u0010\u0000"+ - "\u0000\u16fa\u04bc\u0001\u0000\u0000\u0000\u16fb\u16fc\u0007\r\u0000\u0000"+ - "\u16fc\u16fd\u0007\n\u0000\u0000\u16fd\u16fe\u0007\u0017\u0000\u0000\u16fe"+ - "\u16ff\u0007\n\u0000\u0000\u16ff\u1700\u0007\u001a\u0000\u0000\u1700\u1701"+ - "\u0007\u0018\u0000\u0000\u1701\u1702\u0005_\u0000\u0000\u1702\u1703\u0007"+ - "\u0011\u0000\u0000\u1703\u1704\u0007\u0007\u0000\u0000\u1704\u1705\u0007"+ - "\t\u0000\u0000\u1705\u1706\u0007\u0010\u0000\u0000\u1706\u1707\u0007\r"+ - "\u0000\u0000\u1707\u04be\u0001\u0000\u0000\u0000\u1708\u1709\u0007\r\u0000"+ - "\u0000\u1709\u170a\u0007\n\u0000\u0000\u170a\u170b\u0007\u0017\u0000\u0000"+ - "\u170b\u170c\u0007\n\u0000\u0000\u170c\u170d\u0007\u001a\u0000\u0000\u170d"+ - "\u170e\u0007\u0018\u0000\u0000\u170e\u170f\u0005_\u0000\u0000\u170f\u1710"+ - "\u0007\u0006\u0000\u0000\u1710\u1711\u0007\u0011\u0000\u0000\u1711\u1712"+ - "\u0007\u0015\u0000\u0000\u1712\u1713\u0007\n\u0000\u0000\u1713\u04c0\u0001"+ - "\u0000\u0000\u0000\u1714\u1715\u0007\r\u0000\u0000\u1715\u1716\u0007\n"+ - "\u0000\u0000\u1716\u1717\u0007\u0017\u0000\u0000\u1717\u1718\u0007\n\u0000"+ - "\u0000\u1718\u1719\u0007\u001a\u0000\u0000\u1719\u171a\u0007\u0018\u0000"+ - "\u0000\u171a\u171b\u0005_\u0000\u0000\u171b\u171c\u0007\u000f\u0000\u0000"+ - "\u171c\u171d\u0007\u0005\u0000\u0000\u171d\u171e\u0007\u0010\u0000\u0000"+ - "\u171e\u171f\u0007\u000e\u0000\u0000\u171f\u1720\u0007\u0014\u0000\u0000"+ - "\u1720\u04c2\u0001\u0000\u0000\u0000\u1721\u1722\u0007\r\u0000\u0000\u1722"+ - "\u1723\u0007\n\u0000\u0000\u1723\u1724\u0007\u0017\u0000\u0000\u1724\u1725"+ - "\u0007\n\u0000\u0000\u1725\u1726\u0007\u001a\u0000\u0000\u1726\u1727\u0007"+ - "\u0018\u0000\u0000\u1727\u1728\u0005_\u0000\u0000\u1728\u1729\u0007\u000f"+ - "\u0000\u0000\u1729\u172a\u0007\u0005\u0000\u0000\u172a\u172b\u0007\u0010"+ - "\u0000\u0000\u172b\u172c\u0007\u000e\u0000\u0000\u172c\u172d\u0007\u0014"+ - "\u0000\u0000\u172d\u172e\u0007\n\u0000\u0000\u172e\u172f\u0007\t\u0000"+ - "\u0000\u172f\u04c4\u0001\u0000\u0000\u0000\u1730\u1731\u0007\r\u0000\u0000"+ - "\u1731\u1732\u0007\n\u0000\u0000\u1732\u1733\u0007\u0017\u0000\u0000\u1733"+ - "\u1734\u0007\n\u0000\u0000\u1734\u1735\u0007\u001a\u0000\u0000\u1735\u1736"+ - "\u0007\u0018\u0000\u0000\u1736\u1737\u0005_\u0000\u0000\u1737\u1738\u0007"+ - "\r\u0000\u0000\u1738\u1739\u0007\n\u0000\u0000\u1739\u173a\u0007\u0018"+ - "\u0000\u0000\u173a\u173b\u0007\u0006\u0000\u0000\u173b\u173c\u0007\u0005"+ - "\u0000\u0000\u173c\u173d\u0007\u000e\u0000\u0000\u173d\u173e\u0007\n\u0000"+ - "\u0000\u173e\u04c6\u0001\u0000\u0000\u0000\u173f\u1740\u0007\r\u0000\u0000"+ - "\u1740\u1741\u0007\n\u0000\u0000\u1741\u1742\u0007\u0017\u0000\u0000\u1742"+ - "\u1743\u0007\n\u0000\u0000\u1743\u1744\u0007\u001a\u0000\u0000\u1744\u1745"+ - "\u0007\u0018\u0000\u0000\u1745\u1746\u0005_\u0000\u0000\u1746\u1747\u0007"+ - "\t\u0000\u0000\u1747\u1748\u0007\u0018\u0000\u0000\u1748\u1749\u0007\u0006"+ - "\u0000\u0000\u1749\u174a\u0007\u0011\u0000\u0000\u174a\u174b\u0007\u0010"+ - "\u0000\u0000\u174b\u174c\u0005_\u0000\u0000\u174c\u174d\u0007\u0010\u0000"+ - "\u0000\u174d\u174e\u0007\u0013\u0000\u0000\u174e\u174f\u0005_\u0000\u0000"+ - "\u174f\u1750\u0007\u0005\u0000\u0000\u1750\u1751\u0007\r\u0000\u0000\u1751"+ - "\u1752\u0007\r\u0000\u0000\u1752\u1753\u0007\u0005\u0000\u0000\u1753\u1754"+ - "\u0007\b\u0000\u0000\u1754\u04c8\u0001\u0000\u0000\u0000\u1755\u1756\u0007"+ - "\r\u0000\u0000\u1756\u1757\u0007\n\u0000\u0000\u1757\u1758\u0007\u0017"+ - "\u0000\u0000\u1758\u1759\u0007\n\u0000\u0000\u1759\u175a\u0007\u001a\u0000"+ - "\u0000\u175a\u175b\u0007\u0018\u0000\u0000\u175b\u175c\u0005_\u0000\u0000"+ - "\u175c\u175d\u0007\t\u0000\u0000\u175d\u175e\u0007\u0018\u0000\u0000\u175e"+ - "\u175f\u0007\u0006\u0000\u0000\u175f\u1760\u0007\u0011\u0000\u0000\u1760"+ - "\u1761\u0007\u0010\u0000\u0000\u1761\u1762\u0005_\u0000\u0000\u1762\u1763"+ - "\u0007\u0010\u0000\u0000\u1763\u1764\u0007\u0013\u0000\u0000\u1764\u1765"+ - "\u0005_\u0000\u0000\u1765\u1766\u0007\u0010\u0000\u0000\u1766\u1767\u0007"+ - "\u0005\u0000\u0000\u1767\u1768\u0007\u0012\u0000\u0000\u1768\u1769\u0007"+ - "\u0006\u0000\u0000\u1769\u176a\u0007\n\u0000\u0000\u176a\u04ca\u0001\u0000"+ - "\u0000\u0000\u176b\u176c\u0007\r\u0000\u0000\u176c\u176d\u0007\n\u0000"+ - "\u0000\u176d\u176e\u0007\u0017\u0000\u0000\u176e\u176f\u0007\n\u0000\u0000"+ - "\u176f\u1770\u0007\u001a\u0000\u0000\u1770\u1771\u0007\u0018\u0000\u0000"+ - "\u1771\u1772\u0005_\u0000\u0000\u1772\u1773\u0007\t\u0000\u0000\u1773"+ - "\u1774\u0007\u0016\u0000\u0000\u1774\u1775\u0007\u0012\u0000\u0000\u1775"+ - "\u1776\u0007\t\u0000\u0000\u1776\u1777\u0007\u0010\u0000\u0000\u1777\u1778"+ - "\u0007\r\u0000\u0000\u1778\u04cc\u0001\u0000\u0000\u0000\u1779\u177a\u0007"+ - "\r\u0000\u0000\u177a\u177b\u0007\n\u0000\u0000\u177b\u177c\u0007\u0018"+ - "\u0000\u0000\u177c\u177d\u0007\n\u0000\u0000\u177d\u177e\u0007\u0005\u0000"+ - "\u0000\u177e\u177f\u0007\u0010\u0000\u0000\u177f\u04ce\u0001\u0000\u0000"+ - "\u0000\u1780\u1781\u0007\r\u0000\u0000\u1781\u1782\u0007\u0018\u0000\u0000"+ - "\u1782\u1783\u0007\u0005\u0000\u0000\u1783\u1784\u0007\f\u0000\u0000\u1784"+ - "\u04d0\u0001\u0000\u0000\u0000\u1785\u1786\u0007\r\u0000\u0000\u1786\u1787"+ - "\u0007\u0010\u0000\u0000\u1787\u1788\u0007\r\u0000\u0000\u1788\u1789\u0007"+ - "\u0011\u0000\u0000\u1789\u178a\u0007\u000f\u0000\u0000\u178a\u04d2\u0001"+ - "\u0000\u0000\u0000\u178b\u178c\u0007\t\u0000\u0000\u178c\u178d\u0007\u0018"+ - "\u0000\u0000\u178d\u178e\u0007\u0006\u0000\u0000\u178e\u178f\u0007\u0011"+ - "\u0000\u0000\u178f\u1790\u0007\u0010\u0000\u0000\u1790\u1791\u0005_\u0000"+ - "\u0000\u1791\u1792\u0007\u0018\u0000\u0000\u1792\u1793\u0007\u0005\u0000"+ - "\u0000\u1793\u1794\u0007\r\u0000\u0000\u1794\u1795\u0007\u0010\u0000\u0000"+ - "\u1795\u04d4\u0001\u0000\u0000\u0000\u1796\u1797\u0007\t\u0000\u0000\u1797"+ - "\u1798\u0007\u0010\u0000\u0000\u1798\u1799\u0007\u0005\u0000\u0000\u1799"+ - "\u179a\u0007\r\u0000\u0000\u179a\u179b\u0007\u0010\u0000\u0000\u179b\u179c"+ - "\u0007\t\u0000\u0000\u179c\u179d\u0005_\u0000\u0000\u179d\u179e\u0007"+ - "\u001c\u0000\u0000\u179e\u179f\u0007\u0011\u0000\u0000\u179f\u17a0\u0007"+ - "\u0010\u0000\u0000\u17a0\u17a1\u0007\u0014\u0000\u0000\u17a1\u04d6\u0001"+ - "\u0000\u0000\u0000\u17a2\u17a3\u0007\t\u0000\u0000\u17a3\u17a4\u0007\u0010"+ - "\u0000\u0000\u17a4\u17a5\u0007\r\u0000\u0000\u17a5\u17a6\u0007\u0011\u0000"+ - "\u0000\u17a6\u17a7\u0007\u0007\u0000\u0000\u17a7\u17a8\u0007\u0017\u0000"+ - "\u0000\u17a8\u17a9\u0005_\u0000\u0000\u17a9\u17aa\u0007\u0010\u0000\u0000"+ - "\u17aa\u17ab\u0007\u0013\u0000\u0000\u17ab\u17ac\u0005_\u0000\u0000\u17ac"+ - "\u17ad\u0007\u0005\u0000\u0000\u17ad\u17ae\u0007\r\u0000\u0000\u17ae\u17af"+ - "\u0007\r\u0000\u0000\u17af\u17b0\u0007\u0005\u0000\u0000\u17b0\u17b1\u0007"+ - "\b\u0000\u0000\u17b1\u04d8\u0001\u0000\u0000\u0000\u17b2\u17b3\u0007\t"+ - "\u0000\u0000\u17b3\u17b4\u0007\u0010\u0000\u0000\u17b4\u17b5\u0007\r\u0000"+ - "\u0000\u17b5\u17b6\u0007\u0011\u0000\u0000\u17b6\u17b7\u0007\u0007\u0000"+ - "\u0000\u17b7\u17b8\u0007\u0017\u0000\u0000\u17b8\u17b9\u0005_\u0000\u0000"+ - "\u17b9\u17ba\u0007\u0010\u0000\u0000\u17ba\u17bb\u0007\u0013\u0000\u0000"+ - "\u17bb\u17bc\u0005_\u0000\u0000\u17bc\u17bd\u0007\u0010\u0000\u0000\u17bd"+ - "\u17be\u0007\u0005\u0000\u0000\u17be\u17bf\u0007\u0012\u0000\u0000\u17bf"+ - "\u17c0\u0007\u0006\u0000\u0000\u17c0\u17c1\u0007\n\u0000\u0000\u17c1\u04da"+ - "\u0001\u0000\u0000\u0000\u17c2\u17c3\u0007\t\u0000\u0000\u17c3\u17c4\u0007"+ - "\u0010\u0000\u0000\u17c4\u17c5\u0007\r\u0000\u0000\u17c5\u17c6\u0007\u0018"+ - "\u0000\u0000\u17c6\u17c7\u0007\u0013\u0000\u0000\u17c7\u17c8\u0007\t\u0000"+ - "\u0000\u17c8\u04dc\u0001\u0000\u0000\u0000\u17c9\u17ca\u0007\t\u0000\u0000"+ - "\u17ca\u17cb\u0007\u0016\u0000\u0000\u17cb\u17cc\u0007\u0012\u0000\u0000"+ - "\u17cc\u17cd\u0007\t\u0000\u0000\u17cd\u17ce\u0007\u0010\u0000\u0000\u17ce"+ - "\u17cf\u0007\r\u0000\u0000\u17cf\u04de\u0001\u0000\u0000\u0000\u17d0\u17d1"+ - "\u0007\u0010\u0000\u0000\u17d1\u17d2\u0007\u0013\u0000\u0000\u17d2\u17d3"+ - "\u0005_\u0000\u0000\u17d3\u17d4\u0007\u0005\u0000\u0000\u17d4\u17d5\u0007"+ - "\t\u0000\u0000\u17d5\u17d6\u0007\u000e\u0000\u0000\u17d6\u17d7\u0007\u0011"+ - "\u0000\u0000\u17d7\u17d8\u0007\u0011\u0000\u0000\u17d8\u04e0\u0001\u0000"+ - "\u0000\u0000\u17d9\u17da\u0007\u0010\u0000\u0000\u17da\u17db\u0007\u0013"+ - "\u0000\u0000\u17db\u17dc\u0005_\u0000\u0000\u17dc\u17dd\u0007\u0014\u0000"+ - "\u0000\u17dd\u17de\u0007\n\u0000\u0000\u17de\u17df\u0007\u001a\u0000\u0000"+ - "\u17df\u04e2\u0001\u0000\u0000\u0000\u17e0\u17e1\u0007\u0010\u0000\u0000"+ - "\u17e1\u17e2\u0007\r\u0000\u0000\u17e2\u17e3\u0007\u0005\u0000\u0000\u17e3"+ - "\u17e4\u0007\u0007\u0000\u0000\u17e4\u17e5\u0007\t\u0000\u0000\u17e5\u17e6"+ - "\u0007\u0006\u0000\u0000\u17e6\u17e7\u0007\u0005\u0000\u0000\u17e7\u17e8"+ - "\u0007\u0010\u0000\u0000\u17e8\u17e9\u0007\n\u0000\u0000\u17e9\u04e4\u0001"+ - "\u0000\u0000\u0000\u17ea\u17eb\u0007\u0016\u0000\u0000\u17eb\u17ec\u0007"+ - "\u0007\u0000\u0000\u17ec\u17ed\u0007\u0011\u0000\u0000\u17ed\u17ee\u0007"+ - "\t\u0000\u0000\u17ee\u17ef\u0007\u0010\u0000\u0000\u17ef\u17f0\u0007\r"+ - "\u0000\u0000\u17f0\u04e6\u0001\u0000\u0000\u0000\u17f1\u17f2\u0007\u0005"+ - "\u0000\u0000\u17f2\u17f3\u0007\u0017\u0000\u0000\u17f3\u17f4\u0007\n\u0000"+ - "\u0000\u17f4\u04e8\u0001\u0000\u0000\u0000\u17f5\u17f6\u0007\u000e\u0000"+ - "\u0000\u17f6\u17f7\u0007\u0006\u0000\u0000\u17f7\u17f8\u0007\u0013\u0000"+ - "\u0000\u17f8\u17f9\u0007\u000e\u0000\u0000\u17f9\u17fa\u0007\u0015\u0000"+ - "\u0000\u17fa\u17fb\u0005_\u0000\u0000\u17fb\u17fc\u0007\u0010\u0000\u0000"+ - "\u17fc\u17fd\u0007\u0011\u0000\u0000\u17fd\u17fe\u0007\u000f\u0000\u0000"+ - "\u17fe\u17ff\u0007\n\u0000\u0000\u17ff\u1800\u0007\t\u0000\u0000\u1800"+ - "\u1801\u0007\u0010\u0000\u0000\u1801\u1802\u0007\u0005\u0000\u0000\u1802"+ - "\u1803\u0007\u000f\u0000\u0000\u1803\u1804\u0007\u0018\u0000\u0000\u1804"+ - "\u04ea\u0001\u0000\u0000\u0000\u1805\u1806\u0007\f\u0000\u0000\u1806\u1807"+ - "\u0007\u0005\u0000\u0000\u1807\u1808\u0007\u0010\u0000\u0000\u1808\u1809"+ - "\u0007\n\u0000\u0000\u1809\u180a\u0005_\u0000\u0000\u180a\u180b\u0007"+ - "\u0012\u0000\u0000\u180b\u180c\u0007\u0011\u0000\u0000\u180c\u180d\u0007"+ - "\u0007\u0000\u0000\u180d\u04ec\u0001\u0000\u0000\u0000\u180e\u180f\u0007"+ - "\f\u0000\u0000\u180f\u1810\u0007\u0005\u0000\u0000\u1810\u1811\u0007\u0010"+ - "\u0000\u0000\u1811\u1812\u0007\n\u0000\u0000\u1812\u1813\u0005_\u0000"+ - "\u0000\u1813\u1814\u0007\u0018\u0000\u0000\u1814\u1815\u0007\u0005\u0000"+ - "\u0000\u1815\u1816\u0007\r\u0000\u0000\u1816\u1817\u0007\u0010\u0000\u0000"+ - "\u1817\u04ee\u0001\u0000\u0000\u0000\u1818\u1819\u0007\f\u0000\u0000\u1819"+ - "\u181a\u0007\u0005\u0000\u0000\u181a\u181b\u0007\u0010\u0000\u0000\u181b"+ - "\u181c\u0007\n\u0000\u0000\u181c\u181d\u0005_\u0000\u0000\u181d\u181e"+ - "\u0007\u0010\u0000\u0000\u181e\u181f\u0007\r\u0000\u0000\u181f\u1820\u0007"+ - "\u0016\u0000\u0000\u1820\u1821\u0007\u0007\u0000\u0000\u1821\u1822\u0007"+ - "\u000e\u0000\u0000\u1822\u04f0\u0001\u0000\u0000\u0000\u1823\u1824\u0007"+ - "\u0011\u0000\u0000\u1824\u1825\u0007\t\u0000\u0000\u1825\u1826\u0007\u0019"+ - "\u0000\u0000\u1826\u1827\u0007\u0011\u0000\u0000\u1827\u1828\u0007\u0007"+ - "\u0000\u0000\u1828\u1829\u0007\u0011\u0000\u0000\u1829\u182a\u0007\u0010"+ - "\u0000\u0000\u182a\u182b\u0007\n\u0000\u0000\u182b\u04f2\u0001\u0000\u0000"+ - "\u0000\u182c\u182d\u0007\u001e\u0000\u0000\u182d\u182e\u0007\u0016\u0000"+ - "\u0000\u182e\u182f\u0007\t\u0000\u0000\u182f\u1830\u0007\u0010\u0000\u0000"+ - "\u1830\u1831\u0007\u0011\u0000\u0000\u1831\u1832\u0007\u0019\u0000\u0000"+ - "\u1832\u1833\u0007\b\u0000\u0000\u1833\u1834\u0005_\u0000\u0000\u1834"+ - "\u1835\u0007\f\u0000\u0000\u1835\u1836\u0007\u0005\u0000\u0000\u1836\u1837"+ - "\u0007\b\u0000\u0000\u1837\u1838\u0007\t\u0000\u0000\u1838\u04f4\u0001"+ - "\u0000\u0000\u0000\u1839\u183a\u0007\u001e\u0000\u0000\u183a\u183b\u0007"+ - "\u0016\u0000\u0000\u183b\u183c\u0007\t\u0000\u0000\u183c\u183d\u0007\u0010"+ - "\u0000\u0000\u183d\u183e\u0007\u0011\u0000\u0000\u183e\u183f\u0007\u0019"+ - "\u0000\u0000\u183f\u1840\u0007\b\u0000\u0000\u1840\u1841\u0005_\u0000"+ - "\u0000\u1841\u1842\u0007\u0014\u0000\u0000\u1842\u1843\u0007\u0013\u0000"+ - "\u0000\u1843\u1844\u0007\u0016\u0000\u0000\u1844\u1845\u0007\r\u0000\u0000"+ - "\u1845\u1846\u0007\t\u0000\u0000\u1846\u04f6\u0001\u0000\u0000\u0000\u1847"+ - "\u1848\u0007\u001e\u0000\u0000\u1848\u1849\u0007\u0016\u0000\u0000\u1849"+ - "\u184a\u0007\t\u0000\u0000\u184a\u184b\u0007\u0010\u0000\u0000\u184b\u184c"+ - "\u0007\u0011\u0000\u0000\u184c\u184d\u0007\u0019\u0000\u0000\u184d\u184e"+ - "\u0007\b\u0000\u0000\u184e\u184f\u0005_\u0000\u0000\u184f\u1850\u0007"+ - "\u0011\u0000\u0000\u1850\u1851\u0007\u0007\u0000\u0000\u1851\u1852\u0007"+ - "\u0010\u0000\u0000\u1852\u1853\u0007\n\u0000\u0000\u1853\u1854\u0007\r"+ - "\u0000\u0000\u1854\u1855\u0007\u001b\u0000\u0000\u1855\u1856\u0007\u0005"+ - "\u0000\u0000\u1856\u1857\u0007\u0006\u0000\u0000\u1857\u04f8\u0001\u0000"+ - "\u0000\u0000\u1858\u1859\u0007\u000f\u0000\u0000\u1859\u185a\u0007\u0005"+ - "\u0000\u0000\u185a\u185b\u0007\u0015\u0000\u0000\u185b\u185c\u0007\n\u0000"+ - "\u0000\u185c\u185d\u0005_\u0000\u0000\u185d\u185e\u0007\f\u0000\u0000"+ - "\u185e\u185f\u0007\u0005\u0000\u0000\u185f\u1860\u0007\u0010\u0000\u0000"+ - "\u1860\u1861\u0007\n\u0000\u0000\u1861\u04fa\u0001\u0000\u0000\u0000\u1862"+ - "\u1863\u0007\u000f\u0000\u0000\u1863\u1864\u0007\u0005\u0000\u0000\u1864"+ - "\u1865\u0007\u0015\u0000\u0000\u1865\u1866\u0007\n\u0000\u0000\u1866\u1867"+ - "\u0005_\u0000\u0000\u1867\u1868\u0007\u0011\u0000\u0000\u1868\u1869\u0007"+ - "\u0007\u0000\u0000\u1869\u186a\u0007\u0010\u0000\u0000\u186a\u186b\u0007"+ - "\n\u0000\u0000\u186b\u186c\u0007\r\u0000\u0000\u186c\u186d\u0007\u001b"+ - "\u0000\u0000\u186d\u186e\u0007\u0005\u0000\u0000\u186e\u186f\u0007\u0006"+ - "\u0000\u0000\u186f\u04fc\u0001\u0000\u0000\u0000\u1870\u1871\u0007\u000f"+ - "\u0000\u0000\u1871\u1872\u0007\u0005\u0000\u0000\u1872\u1873\u0007\u0015"+ - "\u0000\u0000\u1873\u1874\u0007\n\u0000\u0000\u1874\u1875\u0005_\u0000"+ - "\u0000\u1875\u1876\u0007\u0010\u0000\u0000\u1876\u1877\u0007\u0011\u0000"+ - "\u0000\u1877\u1878\u0007\u000f\u0000\u0000\u1878\u1879\u0007\n\u0000\u0000"+ - "\u1879\u04fe\u0001\u0000\u0000\u0000\u187a\u187b\u0007\u000f\u0000\u0000"+ - "\u187b\u187c\u0007\u0005\u0000\u0000\u187c\u187d\u0007\u0015\u0000\u0000"+ - "\u187d\u187e\u0007\n\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\u0500\u0001\u0000\u0000\u0000\u1889\u188a\u0007"+ - "\u000f\u0000\u0000\u188a\u188b\u0007\u0005\u0000\u0000\u188b\u188c\u0007"+ - "\u0015\u0000\u0000\u188c\u188d\u0007\n\u0000\u0000\u188d\u188e\u0005_"+ - "\u0000\u0000\u188e\u188f\u0007\u0010\u0000\u0000\u188f\u1890\u0007\u0011"+ - "\u0000\u0000\u1890\u1891\u0007\u000f\u0000\u0000\u1891\u1892\u0007\n\u0000"+ - "\u0000\u1892\u1893\u0007\t\u0000\u0000\u1893\u1894\u0007\u0010\u0000\u0000"+ - "\u1894\u1895\u0007\u0005\u0000\u0000\u1895\u1896\u0007\u000f\u0000\u0000"+ - "\u1896\u1897\u0007\u0018\u0000\u0000\u1897\u1898\u0007\u0010\u0000\u0000"+ - "\u1898\u1899\u0007\u000b\u0000\u0000\u1899\u0502\u0001\u0000\u0000\u0000"+ - "\u189a\u189b\u0007\u0007\u0000\u0000\u189b\u189c\u0007\u0013\u0000\u0000"+ - "\u189c\u189d\u0007\u001c\u0000\u0000\u189d\u0504\u0001\u0000\u0000\u0000"+ - "\u189e\u189f\u0007\t\u0000\u0000\u189f\u18a0\u0007\u0010\u0000\u0000\u18a0"+ - "\u18a1\u0007\u0005\u0000\u0000\u18a1\u18a2\u0007\u0010\u0000\u0000\u18a2"+ - "\u18a3\u0007\n\u0000\u0000\u18a3\u18a4\u0007\u000f\u0000\u0000\u18a4\u18a5"+ - "\u0007\n\u0000\u0000\u18a5\u18a6\u0007\u0007\u0000\u0000\u18a6\u18a7\u0007"+ - "\u0010\u0000\u0000\u18a7\u18a8\u0005_\u0000\u0000\u18a8\u18a9\u0007\u0010"+ - "\u0000\u0000\u18a9\u18aa\u0007\u0011\u0000\u0000\u18aa\u18ab\u0007\u000f"+ - "\u0000\u0000\u18ab\u18ac\u0007\n\u0000\u0000\u18ac\u18ad\u0007\t\u0000"+ - "\u0000\u18ad\u18ae\u0007\u0010\u0000\u0000\u18ae\u18af\u0007\u0005\u0000"+ - "\u0000\u18af\u18b0\u0007\u000f\u0000\u0000\u18b0\u18b1\u0007\u0018\u0000"+ - "\u0000\u18b1\u0506\u0001\u0000\u0000\u0000\u18b2\u18b3\u0007\u0010\u0000"+ - "\u0000\u18b3\u18b4\u0007\u0011\u0000\u0000\u18b4\u18b5\u0007\u000f\u0000"+ - "\u0000\u18b5\u18b6\u0007\n\u0000\u0000\u18b6\u18b7\u0007\u0013\u0000\u0000"+ - "\u18b7\u18b8\u0007\u0019\u0000\u0000\u18b8\u18b9\u0007\f\u0000\u0000\u18b9"+ - "\u18ba\u0007\u0005\u0000\u0000\u18ba\u18bb\u0007\b\u0000\u0000\u18bb\u0508"+ - "\u0001\u0000\u0000\u0000\u18bc\u18bd\u0007\u0010\u0000\u0000\u18bd\u18be"+ - "\u0007\r\u0000\u0000\u18be\u18bf\u0007\u0005\u0000\u0000\u18bf\u18c0\u0007"+ - "\u0007\u0000\u0000\u18c0\u18c1\u0007\t\u0000\u0000\u18c1\u18c2\u0007\u0005"+ - "\u0000\u0000\u18c2\u18c3\u0007\u000e\u0000\u0000\u18c3\u18c4\u0007\u0010"+ - "\u0000\u0000\u18c4\u18c5\u0007\u0011\u0000\u0000\u18c5\u18c6\u0007\u0013"+ - "\u0000\u0000\u18c6\u18c7\u0007\u0007\u0000\u0000\u18c7\u18c8\u0005_\u0000"+ - "\u0000\u18c8\u18c9\u0007\u0010\u0000\u0000\u18c9\u18ca\u0007\u0011\u0000"+ - "\u0000\u18ca\u18cb\u0007\u000f\u0000\u0000\u18cb\u18cc\u0007\n\u0000\u0000"+ - "\u18cc\u18cd\u0007\t\u0000\u0000\u18cd\u18ce\u0007\u0010\u0000\u0000\u18ce"+ - "\u18cf\u0007\u0005\u0000\u0000\u18cf\u18d0\u0007\u000f\u0000\u0000\u18d0"+ - "\u18d1\u0007\u0018\u0000\u0000\u18d1\u050a\u0001\u0000\u0000\u0000\u18d2"+ - "\u18d3\u0007\u0010\u0000\u0000\u18d3\u18d4\u0007\u0013\u0000\u0000\u18d4"+ - "\u18d5\u0005_\u0000\u0000\u18d5\u18d6\u0007\u0010\u0000\u0000\u18d6\u18d7"+ - "\u0007\u0011\u0000\u0000\u18d7\u18d8\u0007\u000f\u0000\u0000\u18d8\u18d9"+ - "\u0007\n\u0000\u0000\u18d9\u18da\u0007\t\u0000\u0000\u18da\u18db\u0007"+ - "\u0010\u0000\u0000\u18db\u18dc\u0007\u0005\u0000\u0000\u18dc\u18dd\u0007"+ - "\u000f\u0000\u0000\u18dd\u18de\u0007\u0018\u0000\u0000\u18de\u050c\u0001"+ - "\u0000\u0000\u0000\u18df\u18e0\u0007\u0010\u0000\u0000\u18e0\u18e1\u0007"+ - "\u0013\u0000\u0000\u18e1\u18e2\u0005_\u0000\u0000\u18e2\u18e3\u0007\u000e"+ - "\u0000\u0000\u18e3\u18e4\u0007\u0014\u0000\u0000\u18e4\u18e5\u0007\u0005"+ - "\u0000\u0000\u18e5\u18e6\u0007\r\u0000\u0000\u18e6\u050e\u0001\u0000\u0000"+ - "\u0000\u18e7\u18e8\u0007\u0010\u0000\u0000\u18e8\u18e9\u0007\u0013\u0000"+ - "\u0000\u18e9\u18ea\u0005_\u0000\u0000\u18ea\u18eb\u0007\f\u0000\u0000"+ - "\u18eb\u18ec\u0007\u0005\u0000\u0000\u18ec\u18ed\u0007\u0010\u0000\u0000"+ - "\u18ed\u18ee\u0007\n\u0000\u0000\u18ee\u0510\u0001\u0000\u0000\u0000\u18ef"+ - "\u18f0\u0007\u0010\u0000\u0000\u18f0\u18f1\u0007\u0013\u0000\u0000\u18f1"+ - "\u18f2\u0005_\u0000\u0000\u18f2\u18f3\u0007\u0007\u0000\u0000\u18f3\u18f4"+ - "\u0007\u0016\u0000\u0000\u18f4\u18f5\u0007\u000f\u0000\u0000\u18f5\u18f6"+ - "\u0007\u0012\u0000\u0000\u18f6\u18f7\u0007\n\u0000\u0000\u18f7\u18f8\u0007"+ - "\r\u0000\u0000\u18f8\u0512\u0001\u0000\u0000\u0000\u18f9\u18fd\u0003\u0515"+ - "\u0288\u0000\u18fa\u18fc\u0003\u0517\u0289\u0000\u18fb\u18fa\u0001\u0000"+ - "\u0000\u0000\u18fc\u18ff\u0001\u0000\u0000\u0000\u18fd\u18fb\u0001\u0000"+ - "\u0000\u0000\u18fd\u18fe\u0001\u0000\u0000\u0000\u18fe\u0514\u0001\u0000"+ - "\u0000\u0000\u18ff\u18fd\u0001\u0000\u0000\u0000\u1900\u1907\u0007\u001f"+ - "\u0000\u0000\u1901\u1902\u0007 \u0000\u0000\u1902\u1907\u0004\u0288\u0006"+ - "\u0000\u1903\u1904\u0007!\u0000\u0000\u1904\u1905\u0007\"\u0000\u0000"+ - "\u1905\u1907\u0004\u0288\u0007\u0000\u1906\u1900\u0001\u0000\u0000\u0000"+ - "\u1906\u1901\u0001\u0000\u0000\u0000\u1906\u1903\u0001\u0000\u0000\u0000"+ - "\u1907\u0516\u0001\u0000\u0000\u0000\u1908\u190b\u0003\u0519\u028a\u0000"+ - "\u1909\u190b\u0005$\u0000\u0000\u190a\u1908\u0001\u0000\u0000\u0000\u190a"+ - "\u1909\u0001\u0000\u0000\u0000\u190b\u0518\u0001\u0000\u0000\u0000\u190c"+ - "\u190f\u0003\u0515\u0288\u0000\u190d\u190f\u0007\u0000\u0000\u0000\u190e"+ - "\u190c\u0001\u0000\u0000\u0000\u190e\u190d\u0001\u0000\u0000\u0000\u190f"+ - "\u051a\u0001\u0000\u0000\u0000\u1910\u1911\u0003\u051d\u028c\u0000\u1911"+ - "\u1912\u0005\"\u0000\u0000\u1912\u051c\u0001\u0000\u0000\u0000\u1913\u1919"+ - "\u0005\"\u0000\u0000\u1914\u1915\u0005\"\u0000\u0000\u1915\u1918\u0005"+ - "\"\u0000\u0000\u1916\u1918\b#\u0000\u0000\u1917\u1914\u0001\u0000\u0000"+ - "\u0000\u1917\u1916\u0001\u0000\u0000\u0000\u1918\u191b\u0001\u0000\u0000"+ - "\u0000\u1919\u1917\u0001\u0000\u0000\u0000\u1919\u191a\u0001\u0000\u0000"+ - "\u0000\u191a\u051e\u0001\u0000\u0000\u0000\u191b\u1919\u0001\u0000\u0000"+ - "\u0000\u191c\u191d\u0003\u0521\u028e\u0000\u191d\u191e\u0005\"\u0000\u0000"+ - "\u191e\u0520\u0001\u0000\u0000\u0000\u191f\u1925\u0005\"\u0000\u0000\u1920"+ - "\u1921\u0005\"\u0000\u0000\u1921\u1924\u0005\"\u0000\u0000\u1922\u1924"+ - "\b$\u0000\u0000\u1923\u1920\u0001\u0000\u0000\u0000\u1923\u1922\u0001"+ - "\u0000\u0000\u0000\u1924\u1927\u0001\u0000\u0000\u0000\u1925\u1923\u0001"+ - "\u0000\u0000\u0000\u1925\u1926\u0001\u0000\u0000\u0000\u1926\u0522\u0001"+ - "\u0000\u0000\u0000\u1927\u1925\u0001\u0000\u0000\u0000\u1928\u1929\u0007"+ - "\u0016\u0000\u0000\u1929\u192a\u0005&\u0000\u0000\u192a\u192b\u0003\u051b"+ - "\u028b\u0000\u192b\u0524\u0001\u0000\u0000\u0000\u192c\u192d\u0007\u0016"+ - "\u0000\u0000\u192d\u192e\u0005&\u0000\u0000\u192e\u192f\u0003\u051d\u028c"+ - "\u0000\u192f\u0526\u0001\u0000\u0000\u0000\u1930\u1931\u0007\u0016\u0000"+ - "\u0000\u1931\u1932\u0005&\u0000\u0000\u1932\u1933\u0003\u051f\u028d\u0000"+ - "\u1933\u0528\u0001\u0000\u0000\u0000\u1934\u1935\u0007\u0016\u0000\u0000"+ - "\u1935\u1936\u0005&\u0000\u0000\u1936\u1937\u0003\u0521\u028e\u0000\u1937"+ - "\u052a\u0001\u0000\u0000\u0000\u1938\u1939\u0003\u052d\u0294\u0000\u1939"+ - "\u193a\u0005\'\u0000\u0000\u193a\u052c\u0001\u0000\u0000\u0000\u193b\u1941"+ - "\u0005\'\u0000\u0000\u193c\u193d\u0005\'\u0000\u0000\u193d\u1940\u0005"+ - "\'\u0000\u0000\u193e\u1940\b%\u0000\u0000\u193f\u193c\u0001\u0000\u0000"+ - "\u0000\u193f\u193e\u0001\u0000\u0000\u0000\u1940\u1943\u0001\u0000\u0000"+ - "\u0000\u1941\u193f\u0001\u0000\u0000\u0000\u1941\u1942\u0001\u0000\u0000"+ - "\u0000\u1942\u052e\u0001\u0000\u0000\u0000\u1943\u1941\u0001\u0000\u0000"+ - "\u0000\u1944\u1945\u0007\n\u0000\u0000\u1945\u1946\u0005\'\u0000\u0000"+ - "\u1946\u1947\u0001\u0000\u0000\u0000\u1947\u1948\u0006\u0295\u0002\u0000"+ - "\u1948\u1949\u0006\u0295\u0003\u0000\u1949\u0530\u0001\u0000\u0000\u0000"+ - "\u194a\u194b\u0003\u0533\u0297\u0000\u194b\u194c\u0005\'\u0000\u0000\u194c"+ - "\u0532\u0001\u0000\u0000\u0000\u194d\u194e\u0007\u0016\u0000\u0000\u194e"+ - "\u194f\u0005&\u0000\u0000\u194f\u1950\u0003\u052d\u0294\u0000\u1950\u0534"+ - "\u0001\u0000\u0000\u0000\u1951\u1953\u0005$\u0000\u0000\u1952\u1954\u0003"+ - "\u0537\u0299\u0000\u1953\u1952\u0001\u0000\u0000\u0000\u1953\u1954\u0001"+ - "\u0000\u0000\u0000\u1954\u1955\u0001\u0000\u0000\u0000\u1955\u1956\u0005"+ - "$\u0000\u0000\u1956\u1957\u0006\u0298\u0004\u0000\u1957\u1958\u0001\u0000"+ - "\u0000\u0000\u1958\u1959\u0006\u0298\u0005\u0000\u1959\u0536\u0001\u0000"+ - "\u0000\u0000\u195a\u195e\u0003\u0515\u0288\u0000\u195b\u195d\u0003\u0519"+ - "\u028a\u0000\u195c\u195b\u0001\u0000\u0000\u0000\u195d\u1960\u0001\u0000"+ - "\u0000\u0000\u195e\u195c\u0001\u0000\u0000\u0000\u195e\u195f\u0001\u0000"+ - "\u0000\u0000\u195f\u0538\u0001\u0000\u0000\u0000\u1960\u195e\u0001\u0000"+ - "\u0000\u0000\u1961\u1962\u0003\u053b\u029b\u0000\u1962\u1963\u0005\'\u0000"+ - "\u0000\u1963\u053a\u0001\u0000\u0000\u0000\u1964\u1965\u0007\u0012\u0000"+ - "\u0000\u1965\u1969\u0005\'\u0000\u0000\u1966\u1968\u0007&\u0000\u0000"+ - "\u1967\u1966\u0001\u0000\u0000\u0000\u1968\u196b\u0001\u0000\u0000\u0000"+ - "\u1969\u1967\u0001\u0000\u0000\u0000\u1969\u196a\u0001\u0000\u0000\u0000"+ - "\u196a\u053c\u0001\u0000\u0000\u0000\u196b\u1969\u0001\u0000\u0000\u0000"+ - "\u196c\u196d\u0003\u053f\u029d\u0000\u196d\u196e\u0005\'\u0000\u0000\u196e"+ - "\u053e\u0001\u0000\u0000\u0000\u196f\u1970\u0007\u0012\u0000\u0000\u1970"+ - "\u1971\u0003\u052d\u0294\u0000\u1971\u0540\u0001\u0000\u0000\u0000\u1972"+ - "\u1973\u0003\u0543\u029f\u0000\u1973\u1974\u0005\'\u0000\u0000\u1974\u0542"+ - "\u0001\u0000\u0000\u0000\u1975\u1976\u0007\u001a\u0000\u0000\u1976\u197a"+ - "\u0005\'\u0000\u0000\u1977\u1979\u0007\'\u0000\u0000\u1978\u1977\u0001"+ - "\u0000\u0000\u0000\u1979\u197c\u0001\u0000\u0000\u0000\u197a\u1978\u0001"+ - "\u0000\u0000\u0000\u197a\u197b\u0001\u0000\u0000\u0000\u197b\u0544\u0001"+ - "\u0000\u0000\u0000\u197c\u197a\u0001\u0000\u0000\u0000\u197d\u197e\u0003"+ - "\u0547\u02a1\u0000\u197e\u197f\u0005\'\u0000\u0000\u197f\u0546\u0001\u0000"+ - "\u0000\u0000\u1980\u1981\u0007\u001a\u0000\u0000\u1981\u1982\u0003\u052d"+ - "\u0294\u0000\u1982\u0548\u0001\u0000\u0000\u0000\u1983\u1984\u0003\u054f"+ - "\u02a5\u0000\u1984\u054a\u0001\u0000\u0000\u0000\u1985\u1986\u0003\u054f"+ - "\u02a5\u0000\u1986\u1987\u0005.\u0000\u0000\u1987\u1988\u0005.\u0000\u0000"+ - "\u1988\u1989\u0001\u0000\u0000\u0000\u1989\u198a\u0006\u02a3\u0006\u0000"+ - "\u198a\u054c\u0001\u0000\u0000\u0000\u198b\u198c\u0003\u054f\u02a5\u0000"+ - "\u198c\u198e\u0005.\u0000\u0000\u198d\u198f\u0003\u054f\u02a5\u0000\u198e"+ - "\u198d\u0001\u0000\u0000\u0000\u198e\u198f\u0001\u0000\u0000\u0000\u198f"+ - "\u1995\u0001\u0000\u0000\u0000\u1990\u1992\u0007\n\u0000\u0000\u1991\u1993"+ - "\u0007\u0001\u0000\u0000\u1992\u1991\u0001\u0000\u0000\u0000\u1992\u1993"+ - "\u0001\u0000\u0000\u0000\u1993\u1994\u0001\u0000\u0000\u0000\u1994\u1996"+ - "\u0003\u054f\u02a5\u0000\u1995\u1990\u0001\u0000\u0000\u0000\u1995\u1996"+ - "\u0001\u0000\u0000\u0000\u1996\u19a8\u0001\u0000\u0000\u0000\u1997\u1998"+ - "\u0005.\u0000\u0000\u1998\u199e\u0003\u054f\u02a5\u0000\u1999\u199b\u0007"+ - "\n\u0000\u0000\u199a\u199c\u0007\u0001\u0000\u0000\u199b\u199a\u0001\u0000"+ - "\u0000\u0000\u199b\u199c\u0001\u0000\u0000\u0000\u199c\u199d\u0001\u0000"+ - "\u0000\u0000\u199d\u199f\u0003\u054f\u02a5\u0000\u199e\u1999\u0001\u0000"+ - "\u0000\u0000\u199e\u199f\u0001\u0000\u0000\u0000\u199f\u19a8\u0001\u0000"+ - "\u0000\u0000\u19a0\u19a1\u0003\u054f\u02a5\u0000\u19a1\u19a3\u0007\n\u0000"+ - "\u0000\u19a2\u19a4\u0007\u0001\u0000\u0000\u19a3\u19a2\u0001\u0000\u0000"+ - "\u0000\u19a3\u19a4\u0001\u0000\u0000\u0000\u19a4\u19a5\u0001\u0000\u0000"+ - "\u0000\u19a5\u19a6\u0003\u054f\u02a5\u0000\u19a6\u19a8\u0001\u0000\u0000"+ - "\u0000\u19a7\u198b\u0001\u0000\u0000\u0000\u19a7\u1997\u0001\u0000\u0000"+ - "\u0000\u19a7\u19a0\u0001\u0000\u0000\u0000\u19a8\u054e\u0001\u0000\u0000"+ - "\u0000\u19a9\u19ab\u0007\u0000\u0000\u0000\u19aa\u19a9\u0001\u0000\u0000"+ - "\u0000\u19ab\u19ac\u0001\u0000\u0000\u0000\u19ac\u19aa\u0001\u0000\u0000"+ - "\u0000\u19ac\u19ad\u0001\u0000\u0000\u0000\u19ad\u0550\u0001\u0000\u0000"+ - "\u0000\u19ae\u19af\u0005:\u0000\u0000\u19af\u19b3\u0007(\u0000\u0000\u19b0"+ - "\u19b2\u0007)\u0000\u0000\u19b1\u19b0\u0001\u0000\u0000\u0000\u19b2\u19b5"+ - "\u0001\u0000\u0000\u0000\u19b3\u19b1\u0001\u0000\u0000\u0000\u19b3\u19b4"+ - "\u0001\u0000\u0000\u0000\u19b4\u0552\u0001\u0000\u0000\u0000\u19b5\u19b3"+ - "\u0001\u0000\u0000\u0000\u19b6\u19b7\u0005:\u0000\u0000\u19b7\u19b8\u0005"+ - "\"\u0000\u0000\u19b8\u19c0\u0001\u0000\u0000\u0000\u19b9\u19ba\u0005\\"+ - "\u0000\u0000\u19ba\u19bf\t\u0000\u0000\u0000\u19bb\u19bc\u0005\"\u0000"+ - "\u0000\u19bc\u19bf\u0005\"\u0000\u0000\u19bd\u19bf\b*\u0000\u0000\u19be"+ - "\u19b9\u0001\u0000\u0000\u0000\u19be\u19bb\u0001\u0000\u0000\u0000\u19be"+ - "\u19bd\u0001\u0000\u0000\u0000\u19bf\u19c2\u0001\u0000\u0000\u0000\u19c0"+ - "\u19be\u0001\u0000\u0000\u0000\u19c0\u19c1\u0001\u0000\u0000\u0000\u19c1"+ - "\u19c3\u0001\u0000\u0000\u0000\u19c2\u19c0\u0001\u0000\u0000\u0000\u19c3"+ - "\u19c4\u0005\"\u0000\u0000\u19c4\u0554\u0001\u0000\u0000\u0000\u19c5\u19c7"+ - "\u0007+\u0000\u0000\u19c6\u19c5\u0001\u0000\u0000\u0000\u19c7\u19c8\u0001"+ - "\u0000\u0000\u0000\u19c8\u19c6\u0001\u0000\u0000\u0000\u19c8\u19c9\u0001"+ - "\u0000\u0000\u0000\u19c9\u19ca\u0001\u0000\u0000\u0000\u19ca\u19cb\u0006"+ - "\u02a8\u0007\u0000\u19cb\u0556\u0001\u0000\u0000\u0000\u19cc\u19ce\u0005"+ - "\r\u0000\u0000\u19cd\u19cf\u0005\n\u0000\u0000\u19ce\u19cd\u0001\u0000"+ - "\u0000\u0000\u19ce\u19cf\u0001\u0000\u0000\u0000\u19cf\u19d2\u0001\u0000"+ - "\u0000\u0000\u19d0\u19d2\u0005\n\u0000\u0000\u19d1\u19cc\u0001\u0000\u0000"+ - "\u0000\u19d1\u19d0\u0001\u0000\u0000\u0000\u19d2\u19d3\u0001\u0000\u0000"+ - "\u0000\u19d3\u19d4\u0006\u02a9\u0007\u0000\u19d4\u0558\u0001\u0000\u0000"+ - "\u0000\u19d5\u19d6\u0005-\u0000\u0000\u19d6\u19d7\u0005-\u0000\u0000\u19d7"+ - "\u19db\u0001\u0000\u0000\u0000\u19d8\u19da\b,\u0000\u0000\u19d9\u19d8"+ - "\u0001\u0000\u0000\u0000\u19da\u19dd\u0001\u0000\u0000\u0000\u19db\u19d9"+ - "\u0001\u0000\u0000\u0000\u19db\u19dc\u0001\u0000\u0000\u0000\u19dc\u19de"+ - "\u0001\u0000\u0000\u0000\u19dd\u19db\u0001\u0000\u0000\u0000\u19de\u19df"+ - "\u0006\u02aa\u0007\u0000\u19df\u055a\u0001\u0000\u0000\u0000\u19e0\u19e1"+ - "\u0005/\u0000\u0000\u19e1\u19e2\u0005*\u0000\u0000\u19e2\u19f9\u0001\u0000"+ - "\u0000\u0000\u19e3\u19e5\u0005/\u0000\u0000\u19e4\u19e3\u0001\u0000\u0000"+ - "\u0000\u19e5\u19e8\u0001\u0000\u0000\u0000\u19e6\u19e4\u0001\u0000\u0000"+ - "\u0000\u19e6\u19e7\u0001\u0000\u0000\u0000\u19e7\u19e9\u0001\u0000\u0000"+ - "\u0000\u19e8\u19e6\u0001\u0000\u0000\u0000\u19e9\u19f8\u0003\u055b\u02ab"+ - "\u0000\u19ea\u19f8\b-\u0000\u0000\u19eb\u19ed\u0005/\u0000\u0000\u19ec"+ - "\u19eb\u0001\u0000\u0000\u0000\u19ed\u19ee\u0001\u0000\u0000\u0000\u19ee"+ - "\u19ec\u0001\u0000\u0000\u0000\u19ee\u19ef\u0001\u0000\u0000\u0000\u19ef"+ - "\u19f0\u0001\u0000\u0000\u0000\u19f0\u19f8\b-\u0000\u0000\u19f1\u19f3"+ - "\u0005*\u0000\u0000\u19f2\u19f1\u0001\u0000\u0000\u0000\u19f3\u19f4\u0001"+ - "\u0000\u0000\u0000\u19f4\u19f2\u0001\u0000\u0000\u0000\u19f4\u19f5\u0001"+ - "\u0000\u0000\u0000\u19f5\u19f6\u0001\u0000\u0000\u0000\u19f6\u19f8\b-"+ - "\u0000\u0000\u19f7\u19e6\u0001\u0000\u0000\u0000\u19f7\u19ea\u0001\u0000"+ - "\u0000\u0000\u19f7\u19ec\u0001\u0000\u0000\u0000\u19f7\u19f2\u0001\u0000"+ - "\u0000\u0000\u19f8\u19fb\u0001\u0000\u0000\u0000\u19f9\u19f7\u0001\u0000"+ - "\u0000\u0000\u19f9\u19fa\u0001\u0000\u0000\u0000\u19fa\u19ff\u0001\u0000"+ - "\u0000\u0000\u19fb\u19f9\u0001\u0000\u0000\u0000\u19fc\u19fe\u0005*\u0000"+ - "\u0000\u19fd\u19fc\u0001\u0000\u0000\u0000\u19fe\u1a01\u0001\u0000\u0000"+ - "\u0000\u19ff\u19fd\u0001\u0000\u0000\u0000\u19ff\u1a00\u0001\u0000\u0000"+ - "\u0000\u1a00\u1a02\u0001\u0000\u0000\u0000\u1a01\u19ff\u0001\u0000\u0000"+ - "\u0000\u1a02\u1a03\u0005*\u0000\u0000\u1a03\u1a04\u0005/\u0000\u0000\u1a04"+ - "\u1a05\u0001\u0000\u0000\u0000\u1a05\u1a06\u0006\u02ab\u0007\u0000\u1a06"+ - "\u055c\u0001\u0000\u0000\u0000\u1a07\u1a08\u0005/\u0000\u0000\u1a08\u1a09"+ - "\u0005*\u0000\u0000\u1a09\u1a22\u0001\u0000\u0000\u0000\u1a0a\u1a0c\u0005"+ - "/\u0000\u0000\u1a0b\u1a0a\u0001\u0000\u0000\u0000\u1a0c\u1a0f\u0001\u0000"+ - "\u0000\u0000\u1a0d\u1a0b\u0001\u0000\u0000\u0000\u1a0d\u1a0e\u0001\u0000"+ - "\u0000\u0000\u1a0e\u1a10\u0001\u0000\u0000\u0000\u1a0f\u1a0d\u0001\u0000"+ - "\u0000\u0000\u1a10\u1a21\u0003\u055b\u02ab\u0000\u1a11\u1a21\b-\u0000"+ - "\u0000\u1a12\u1a14\u0005/\u0000\u0000\u1a13\u1a12\u0001\u0000\u0000\u0000"+ - "\u1a14\u1a15\u0001\u0000\u0000\u0000\u1a15\u1a13\u0001\u0000\u0000\u0000"+ - "\u1a15\u1a16\u0001\u0000\u0000\u0000\u1a16\u1a17\u0001\u0000\u0000\u0000"+ - "\u1a17\u1a1f\b-\u0000\u0000\u1a18\u1a1a\u0005*\u0000\u0000\u1a19\u1a18"+ - "\u0001\u0000\u0000\u0000\u1a1a\u1a1b\u0001\u0000\u0000\u0000\u1a1b\u1a19"+ - "\u0001\u0000\u0000\u0000\u1a1b\u1a1c\u0001\u0000\u0000\u0000\u1a1c\u1a1d"+ - "\u0001\u0000\u0000\u0000\u1a1d\u1a1f\b-\u0000\u0000\u1a1e\u1a13\u0001"+ - "\u0000\u0000\u0000\u1a1e\u1a19\u0001\u0000\u0000\u0000\u1a1f\u1a21\u0001"+ - "\u0000\u0000\u0000\u1a20\u1a0d\u0001\u0000\u0000\u0000\u1a20\u1a11\u0001"+ - "\u0000\u0000\u0000\u1a20\u1a1e\u0001\u0000\u0000\u0000\u1a21\u1a24\u0001"+ - "\u0000\u0000\u0000\u1a22\u1a20\u0001\u0000\u0000\u0000\u1a22\u1a23\u0001"+ - "\u0000\u0000\u0000\u1a23\u1a36\u0001\u0000\u0000\u0000\u1a24\u1a22\u0001"+ - "\u0000\u0000\u0000\u1a25\u1a27\u0005/\u0000\u0000\u1a26\u1a25\u0001\u0000"+ - "\u0000\u0000\u1a27\u1a28\u0001\u0000\u0000\u0000\u1a28\u1a26\u0001\u0000"+ - "\u0000\u0000\u1a28\u1a29\u0001\u0000\u0000\u0000\u1a29\u1a37\u0001\u0000"+ - "\u0000\u0000\u1a2a\u1a2c\u0005*\u0000\u0000\u1a2b\u1a2a\u0001\u0000\u0000"+ - "\u0000\u1a2c\u1a2d\u0001\u0000\u0000\u0000\u1a2d\u1a2b\u0001\u0000\u0000"+ - "\u0000\u1a2d\u1a2e\u0001\u0000\u0000\u0000\u1a2e\u1a37\u0001\u0000\u0000"+ - "\u0000\u1a2f\u1a31\u0005/\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\u1a35\u0001\u0000\u0000\u0000"+ - "\u1a34\u1a32\u0001\u0000\u0000\u0000\u1a35\u1a37\u0003\u055d\u02ac\u0000"+ - "\u1a36\u1a26\u0001\u0000\u0000\u0000\u1a36\u1a2b\u0001\u0000\u0000\u0000"+ - "\u1a36\u1a32\u0001\u0000\u0000\u0000\u1a36\u1a37\u0001\u0000\u0000\u0000"+ - "\u1a37\u1a38\u0001\u0000\u0000\u0000\u1a38\u1a39\u0006\u02ac\b\u0000\u1a39"+ - "\u055e\u0001\u0000\u0000\u0000\u1a3a\u1a46\u0005\\\u0000\u0000\u1a3b\u1a45"+ - "\b.\u0000\u0000\u1a3c\u1a40\u0005\"\u0000\u0000\u1a3d\u1a3f\b/\u0000\u0000"+ - "\u1a3e\u1a3d\u0001\u0000\u0000\u0000\u1a3f\u1a42\u0001\u0000\u0000\u0000"+ - "\u1a40\u1a3e\u0001\u0000\u0000\u0000\u1a40\u1a41\u0001\u0000\u0000\u0000"+ - "\u1a41\u1a43\u0001\u0000\u0000\u0000\u1a42\u1a40\u0001\u0000\u0000\u0000"+ - "\u1a43\u1a45\u0005\"\u0000\u0000\u1a44\u1a3b\u0001\u0000\u0000\u0000\u1a44"+ - "\u1a3c\u0001\u0000\u0000\u0000\u1a45\u1a48\u0001\u0000\u0000\u0000\u1a46"+ - "\u1a44\u0001\u0000\u0000\u0000\u1a46\u1a47\u0001\u0000\u0000\u0000\u1a47"+ - "\u1a50\u0001\u0000\u0000\u0000\u1a48\u1a46\u0001\u0000\u0000\u0000\u1a49"+ - "\u1a4d\u0005\"\u0000\u0000\u1a4a\u1a4c\b/\u0000\u0000\u1a4b\u1a4a\u0001"+ - "\u0000\u0000\u0000\u1a4c\u1a4f\u0001\u0000\u0000\u0000\u1a4d\u1a4b\u0001"+ - "\u0000\u0000\u0000\u1a4d\u1a4e\u0001\u0000\u0000\u0000\u1a4e\u1a51\u0001"+ - "\u0000\u0000\u0000\u1a4f\u1a4d\u0001\u0000\u0000\u0000\u1a50\u1a49\u0001"+ - "\u0000\u0000\u0000\u1a50\u1a51\u0001\u0000\u0000\u0000\u1a51\u0560\u0001"+ - "\u0000\u0000\u0000\u1a52\u1a53\u0005\\\u0000\u0000\u1a53\u1a54\u0005\\"+ - "\u0000\u0000\u1a54\u0562\u0001\u0000\u0000\u0000\u1a55\u1a56\t\u0000\u0000"+ - "\u0000\u1a56\u0564\u0001\u0000\u0000\u0000\u1a57\u1a58\u0003\u0569\u02b2"+ - "\u0000\u1a58\u1a59\u0005\'\u0000\u0000\u1a59\u1a5a\u0001\u0000\u0000\u0000"+ - "\u1a5a\u1a5b\u0006\u02b0\t\u0000\u1a5b\u0566\u0001\u0000\u0000\u0000\u1a5c"+ - "\u1a5e\u0003\u0569\u02b2\u0000\u1a5d\u1a5f\u0005\\\u0000\u0000\u1a5e\u1a5d"+ - "\u0001\u0000\u0000\u0000\u1a5e\u1a5f\u0001\u0000\u0000\u0000\u1a5f\u1a60"+ - "\u0001\u0000\u0000\u0000\u1a60\u1a61\u0005\u0000\u0000\u0001\u1a61\u0568"+ - "\u0001\u0000\u0000\u0000\u1a62\u1a63\u0005\'\u0000\u0000\u1a63\u1a7a\u0005"+ - "\'\u0000\u0000\u1a64\u1a76\u0005\\\u0000\u0000\u1a65\u1a66\u0005x\u0000"+ - "\u0000\u1a66\u1a77\u0007\'\u0000\u0000\u1a67\u1a68\u0005u\u0000\u0000"+ - "\u1a68\u1a69\u0007\'\u0000\u0000\u1a69\u1a6a\u0007\'\u0000\u0000\u1a6a"+ - "\u1a6b\u0007\'\u0000\u0000\u1a6b\u1a77\u0007\'\u0000\u0000\u1a6c\u1a6d"+ - "\u0005U\u0000\u0000\u1a6d\u1a6e\u0007\'\u0000\u0000\u1a6e\u1a6f\u0007"+ - "\'\u0000\u0000\u1a6f\u1a70\u0007\'\u0000\u0000\u1a70\u1a71\u0007\'\u0000"+ - "\u0000\u1a71\u1a72\u0007\'\u0000\u0000\u1a72\u1a73\u0007\'\u0000\u0000"+ - "\u1a73\u1a74\u0007\'\u0000\u0000\u1a74\u1a77\u0007\'\u0000\u0000\u1a75"+ - "\u1a77\b0\u0000\u0000\u1a76\u1a65\u0001\u0000\u0000\u0000\u1a76\u1a67"+ - "\u0001\u0000\u0000\u0000\u1a76\u1a6c\u0001\u0000\u0000\u0000\u1a76\u1a75"+ - "\u0001\u0000\u0000\u0000\u1a77\u1a7a\u0001\u0000\u0000\u0000\u1a78\u1a7a"+ - "\b1\u0000\u0000\u1a79\u1a62\u0001\u0000\u0000\u0000\u1a79\u1a64\u0001"+ - "\u0000\u0000\u0000\u1a79\u1a78\u0001\u0000\u0000\u0000\u1a7a\u1a7d\u0001"+ - "\u0000\u0000\u0000\u1a7b\u1a79\u0001\u0000\u0000\u0000\u1a7b\u1a7c\u0001"+ - "\u0000\u0000\u0000\u1a7c\u056a\u0001\u0000\u0000\u0000\u1a7d\u1a7b\u0001"+ - "\u0000\u0000\u0000\u1a7e\u1a7f\u0003\u056f\u02b5\u0000\u1a7f\u1a80\u0005"+ - "\'\u0000\u0000\u1a80\u1a81\u0001\u0000\u0000\u0000\u1a81\u1a82\u0006\u02b3"+ - "\t\u0000\u1a82\u056c\u0001\u0000\u0000\u0000\u1a83\u1a85\u0003\u056f\u02b5"+ - "\u0000\u1a84\u1a86\u0005\\\u0000\u0000\u1a85\u1a84\u0001\u0000\u0000\u0000"+ - "\u1a85\u1a86\u0001\u0000\u0000\u0000\u1a86\u1a87\u0001\u0000\u0000\u0000"+ - "\u1a87\u1a88\u0005\u0000\u0000\u0001\u1a88\u056e\u0001\u0000\u0000\u0000"+ - "\u1a89\u1a8a\u0005\'\u0000\u0000\u1a8a\u1a8f\u0005\'\u0000\u0000\u1a8b"+ - "\u1a8c\u0005\\\u0000\u0000\u1a8c\u1a8f\t\u0000\u0000\u0000\u1a8d\u1a8f"+ - "\b1\u0000\u0000\u1a8e\u1a89\u0001\u0000\u0000\u0000\u1a8e\u1a8b\u0001"+ - "\u0000\u0000\u0000\u1a8e\u1a8d\u0001\u0000\u0000\u0000\u1a8f\u1a92\u0001"+ - "\u0000\u0000\u0000\u1a90\u1a8e\u0001\u0000\u0000\u0000\u1a90\u1a91\u0001"+ - "\u0000\u0000\u0000\u1a91\u0570\u0001\u0000\u0000\u0000\u1a92\u1a90\u0001"+ - "\u0000\u0000\u0000\u1a93\u1a94\u0003\u0555\u02a8\u0000\u1a94\u1a95\u0001"+ - "\u0000\u0000\u0000\u1a95\u1a96\u0006\u02b6\n\u0000\u1a96\u1a97\u0006\u02b6"+ - "\u0007\u0000\u1a97\u0572\u0001\u0000\u0000\u0000\u1a98\u1a99\u0003\u0557"+ - "\u02a9\u0000\u1a99\u1a9a\u0001\u0000\u0000\u0000\u1a9a\u1a9b\u0006\u02b7"+ - "\u000b\u0000\u1a9b\u1a9c\u0006\u02b7\u0007\u0000\u1a9c\u1a9d\u0006\u02b7"+ - "\f\u0000\u1a9d\u0574\u0001\u0000\u0000\u0000\u1a9e\u1a9f\u0006\u02b8\r"+ - "\u0000\u1a9f\u1aa0\u0001\u0000\u0000\u0000\u1aa0\u1aa1\u0006\u02b8\u000e"+ - "\u0000\u1aa1\u1aa2\u0006\u02b8\u000f\u0000\u1aa2\u0576\u0001\u0000\u0000"+ - "\u0000\u1aa3\u1aa4\u0003\u0555\u02a8\u0000\u1aa4\u1aa5\u0001\u0000\u0000"+ - "\u0000\u1aa5\u1aa6\u0006\u02b9\n\u0000\u1aa6\u1aa7\u0006\u02b9\u0007\u0000"+ - "\u1aa7\u0578\u0001\u0000\u0000\u0000\u1aa8\u1aa9\u0003\u0557\u02a9\u0000"+ - "\u1aa9\u1aaa\u0001\u0000\u0000\u0000\u1aaa\u1aab\u0006\u02ba\u000b\u0000"+ - "\u1aab\u1aac\u0006\u02ba\u0007\u0000\u1aac\u057a\u0001\u0000\u0000\u0000"+ - "\u1aad\u1aae\u0005\'\u0000\u0000\u1aae\u1aaf\u0001\u0000\u0000\u0000\u1aaf"+ - "\u1ab0\u0006\u02bb\u0002\u0000\u1ab0\u1ab1\u0006\u02bb\u0010\u0000\u1ab1"+ - "\u057c\u0001\u0000\u0000\u0000\u1ab2\u1ab3\u0006\u02bc\u0011\u0000\u1ab3"+ - "\u1ab4\u0001\u0000\u0000\u0000\u1ab4\u1ab5\u0006\u02bc\u000e\u0000\u1ab5"+ - "\u1ab6\u0006\u02bc\u000f\u0000\u1ab6\u057e\u0001\u0000\u0000\u0000\u1ab7"+ - "\u1ab9\b2\u0000\u0000\u1ab8\u1ab7\u0001\u0000\u0000\u0000\u1ab9\u1aba"+ - "\u0001\u0000\u0000\u0000\u1aba\u1ab8\u0001\u0000\u0000\u0000\u1aba\u1abb"+ - "\u0001\u0000\u0000\u0000\u1abb\u1ac4\u0001\u0000\u0000\u0000\u1abc\u1ac0"+ - "\u0005$\u0000\u0000\u1abd\u1abf\b2\u0000\u0000\u1abe\u1abd\u0001\u0000"+ - "\u0000\u0000\u1abf\u1ac2\u0001\u0000\u0000\u0000\u1ac0\u1abe\u0001\u0000"+ - "\u0000\u0000\u1ac0\u1ac1\u0001\u0000\u0000\u0000\u1ac1\u1ac4\u0001\u0000"+ - "\u0000\u0000\u1ac2\u1ac0\u0001\u0000\u0000\u0000\u1ac3\u1ab8\u0001\u0000"+ - "\u0000\u0000\u1ac3\u1abc\u0001\u0000\u0000\u0000\u1ac4\u0580\u0001\u0000"+ - "\u0000\u0000\u1ac5\u1ac7\u0005$\u0000\u0000\u1ac6\u1ac8\u0003\u0537\u0299"+ - "\u0000\u1ac7\u1ac6\u0001\u0000\u0000\u0000\u1ac7\u1ac8\u0001\u0000\u0000"+ - "\u0000\u1ac8\u1ac9\u0001\u0000\u0000\u0000\u1ac9\u1aca\u0005$\u0000\u0000"+ - "\u1aca\u1acb\u0001\u0000\u0000\u0000\u1acb\u1acc\u0004\u02be\b\u0000\u1acc"+ - "\u1acd\u0006\u02be\u0012\u0000\u1acd\u1ace\u0001\u0000\u0000\u0000\u1ace"+ - "\u1acf\u0006\u02be\u000f\u0000\u1acf\u0582\u0001\u0000\u0000\u0000N\u0000"+ - "\u0001\u0002\u0003\u0004\u05c6\u05cc\u05ce\u05d3\u05d7\u05d9\u05dc\u05e5"+ - "\u05e7\u05ec\u05f1\u05f3\u18fd\u1906\u190a\u190e\u1917\u1919\u1923\u1925"+ - "\u193f\u1941\u1953\u195e\u1969\u197a\u198e\u1992\u1995\u199b\u199e\u19a3"+ - "\u19a7\u19ac\u19b3\u19be\u19c0\u19c8\u19ce\u19d1\u19db\u19e6\u19ee\u19f4"+ - "\u19f7\u19f9\u19ff\u1a0d\u1a15\u1a1b\u1a1e\u1a20\u1a22\u1a28\u1a2d\u1a32"+ - "\u1a36\u1a40\u1a44\u1a46\u1a4d\u1a50\u1a5e\u1a76\u1a79\u1a7b\u1a85\u1a8e"+ - "\u1a90\u1aba\u1ac0\u1ac3\u1ac7\u0013\u0001\u001c\u0000\u0007\u001d\u0000"+ - "\u0003\u0000\u0000\u0005\u0001\u0000\u0001\u0298\u0001\u0005\u0004\u0000"+ - "\u0001\u02a3\u0002\u0000\u0001\u0000\u0001\u02ac\u0003\u0002\u0002\u0000"+ - "\u0007\u029f\u0000\u0007\u02a0\u0000\u0002\u0003\u0000\u0001\u02b8\u0004"+ - "\u0006\u0000\u0000\u0004\u0000\u0000\u0002\u0001\u0000\u0001\u02bc\u0005"+ - "\u0001\u02be\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 e6fcd4ebae..0000000000 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens +++ /dev/null @@ -1,1330 +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 -ZTABLE=93 -THEN=94 -TO=95 -DESCRIBE=96 -TOPIC=97 -TOPICS=98 -STREAM=99 -ZVIEW=100 -ZVIEWS=101 -TRAILING=102 -TRUE_P=103 -UNION=104 -UNIQUE=105 -USER=106 -USING=107 -VARIADIC=108 -WHEN=109 -WHERE=110 -WINDOW=111 -WITH=112 -AUTHORIZATION=113 -BINARY=114 -COLLATION=115 -CONCURRENTLY=116 -CROSS=117 -CURRENT_SCHEMA=118 -FREEZE=119 -FULL=120 -ILIKE=121 -INNER_P=122 -IS=123 -ISNULL=124 -JOIN=125 -LEFT=126 -LIKE=127 -NATURAL=128 -NOTNULL=129 -OUTER_P=130 -OVER=131 -OVERLAPS=132 -RIGHT=133 -SIMILAR=134 -VERBOSE=135 -ABORT_P=136 -ABSOLUTE_P=137 -ACCESS=138 -ACTION=139 -ADD_P=140 -ADMIN=141 -AFTER=142 -AGGREGATE=143 -ALSO=144 -ALTER=145 -ALWAYS=146 -ASSERTION=147 -ASSIGNMENT=148 -AT=149 -ATTRIBUTE=150 -BACKWARD=151 -BEFORE=152 -BEGIN_P=153 -BY=154 -CACHE=155 -CALLED=156 -CASCADE=157 -CASCADED=158 -CATALOG=159 -CHAIN=160 -CHARACTERISTICS=161 -CHECKPOINT=162 -CLASS=163 -CLOSE=164 -CLUSTER=165 -COMMENT=166 -COMMENTS=167 -COMMIT=168 -COMMITTED=169 -CONFIGURATION=170 -CONNECTION=171 -CONSTRAINTS=172 -CONTENT_P=173 -CONTINUE_P=174 -CONVERSION_P=175 -COPY=176 -COST=177 -CSV=178 -CURSOR=179 -CYCLE=180 -DATA_P=181 -DATABASE=182 -DAY_P=183 -DEALLOCATE=184 -DECLARE=185 -DEFAULTS=186 -DEFERRED=187 -DEFINER=188 -DELETE_P=189 -DELIMITER=190 -DELIMITERS=191 -DICTIONARY=192 -DISABLE_P=193 -DISCARD=194 -DOCUMENT_P=195 -DOMAIN_P=196 -DOUBLE_P=197 -DROP=198 -EACH=199 -ENABLE_P=200 -ENCODING=201 -ENCRYPTED=202 -ENUM_P=203 -ESCAPE=204 -EVENT=205 -EXCLUDE=206 -EXCLUDING=207 -EXCLUSIVE=208 -EXECUTE=209 -EXPLAIN=210 -EXTENSION=211 -EXTERNAL=212 -FAMILY=213 -FIRST_P=214 -FOLLOWING=215 -FORCE=216 -FORWARD=217 -FUNCTION=218 -FUNCTIONS=219 -GLOBAL=220 -GRANTED=221 -HANDLER=222 -HEADER_P=223 -HOLD=224 -HOUR_P=225 -IDENTITY_P=226 -IF_P=227 -IMMEDIATE=228 -IMMUTABLE=229 -IMPLICIT_P=230 -INCLUDING=231 -INCREMENT=232 -INDEX=233 -INDEXES=234 -INHERIT=235 -INHERITS=236 -INLINE_P=237 -INSENSITIVE=238 -INSERT=239 -INSTEAD=240 -INVOKER=241 -ISOLATION=242 -KEY=243 -LABEL=244 -LANGUAGE=245 -LARGE_P=246 -LAST_P=247 -LEAKPROOF=248 -LEVEL=249 -LISTEN=250 -LOAD=251 -LOCAL=252 -LOCATION=253 -LOCK_P=254 -MAPPING=255 -MATCH=256 -MATCHED=257 -MATERIALIZED=258 -MAXVALUE=259 -MERGE=260 -MINUTE_P=261 -MINVALUE=262 -MODE=263 -MONTH_P=264 -MOVE=265 -NAME_P=266 -NAMES=267 -NEXT=268 -NO=269 -NOTHING=270 -NOTIFY=271 -NOWAIT=272 -NULLS_P=273 -OBJECT_P=274 -OF=275 -OFF=276 -OIDS=277 -OPERATOR=278 -OPTION=279 -OPTIONS=280 -OWNED=281 -OWNER=282 -PARSER=283 -PARTIAL=284 -PARTITION=285 -PASSING=286 -PASSWORD=287 -PLANS=288 -PRECEDING=289 -PREPARE=290 -PREPARED=291 -PRESERVE=292 -PRIOR=293 -PRIVILEGES=294 -PROCEDURAL=295 -PROCEDURE=296 -PROGRAM=297 -QUOTE=298 -RANGE=299 -READ=300 -REASSIGN=301 -RECHECK=302 -RECURSIVE=303 -REF=304 -REFRESH=305 -REINDEX=306 -RELATIVE_P=307 -RELEASE=308 -RENAME=309 -REPEATABLE=310 -REPLACE=311 -REPLICA=312 -RESET=313 -RESTART=314 -RESTRICT=315 -RETURNS=316 -REVOKE=317 -ROLE=318 -ROLLBACK=319 -ROWS=320 -RULE=321 -SAVEPOINT=322 -SCHEMA=323 -SCROLL=324 -SEARCH=325 -SECOND_P=326 -SECURITY=327 -SEQUENCE=328 -SEQUENCES=329 -SERIALIZABLE=330 -SERVER=331 -SESSION=332 -SET=333 -SHARE=334 -SHOW=335 -SIMPLE=336 -SNAPSHOT=337 -STABLE=338 -STANDALONE_P=339 -START=340 -STATEMENT=341 -STATISTICS=342 -STDIN=343 -STDOUT=344 -STORAGE=345 -STRICT_P=346 -STRIP_P=347 -SYSID=348 -SYSTEM_P=349 -TABLES=350 -ZTABLES=351 -TABLESPACE=352 -TEMP=353 -TEMPLATE=354 -TEMPORARY=355 -TEXT_P=356 -TRANSACTION=357 -TRIGGER=358 -TRUNCATE=359 -TRUSTED=360 -TYPE_P=361 -TYPES_P=362 -UNBOUNDED=363 -UNCOMMITTED=364 -UNENCRYPTED=365 -UNKNOWN=366 -UNLISTEN=367 -UNLOGGED=368 -UNTIL=369 -UPDATE=370 -VACUUM=371 -VALID=372 -VALIDATE=373 -VALIDATOR=374 -VARYING=375 -VERSION_P=376 -VIEW=377 -VOLATILE=378 -WHITESPACE_P=379 -WITHOUT=380 -WORK=381 -WRAPPER=382 -WRITE=383 -XML_P=384 -YEAR_P=385 -YES_P=386 -ZONE=387 -BETWEEN=388 -BIGINT=389 -BIT=390 -BOOLEAN_P=391 -CHAR_P=392 -CHARACTER=393 -COALESCE=394 -DEC=395 -DECIMAL_P=396 -EXISTS=397 -EXTRACT=398 -FLOAT_P=399 -GREATEST=400 -INOUT=401 -INT_P=402 -INTEGER=403 -INTERVAL=404 -LEAST=405 -NATIONAL=406 -NCHAR=407 -NONE=408 -NULLIF=409 -NUMERIC=410 -OVERLAY=411 -POSITION=412 -PRECISION=413 -REAL=414 -ROW=415 -SETOF=416 -SMALLINT=417 -SUBSTRING=418 -TIME=419 -TIMESTAMP=420 -TREAT=421 -TRIM=422 -VALUES=423 -VARCHAR=424 -XMLATTRIBUTES=425 -XMLCOMMENT=426 -XMLAGG=427 -XML_IS_WELL_FORMED=428 -XML_IS_WELL_FORMED_DOCUMENT=429 -XML_IS_WELL_FORMED_CONTENT=430 -XPATH=431 -XPATH_EXISTS=432 -XMLCONCAT=433 -XMLELEMENT=434 -XMLEXISTS=435 -XMLFOREST=436 -XMLPARSE=437 -XMLPI=438 -XMLROOT=439 -XMLSERIALIZE=440 -CALL=441 -CURRENT_P=442 -ATTACH=443 -DETACH=444 -EXPRESSION=445 -GENERATED=446 -LOGGED=447 -STORED=448 -INCLUDE=449 -ROUTINE=450 -TRANSFORM=451 -IMPORT_P=452 -POLICY=453 -METHOD=454 -REFERENCING=455 -NEW=456 -OLD=457 -VALUE_P=458 -SUBSCRIPTION=459 -PUBLICATION=460 -OUT_P=461 -END_P=462 -ROUTINES=463 -SCHEMAS=464 -PROCEDURES=465 -INPUT_P=466 -SUPPORT=467 -PARALLEL=468 -SQL_P=469 -DEPENDS=470 -OVERRIDING=471 -CONFLICT=472 -SKIP_P=473 -LOCKED=474 -TIES=475 -ROLLUP=476 -CUBE=477 -GROUPING=478 -SETS=479 -TABLESAMPLE=480 -ORDINALITY=481 -XMLTABLE=482 -COLUMNS=483 -XMLNAMESPACES=484 -ROWTYPE=485 -NORMALIZED=486 -WITHIN=487 -FILTER=488 -GROUPS=489 -OTHERS=490 -NFC=491 -NFD=492 -NFKC=493 -NFKD=494 -UESCAPE=495 -VIEWS=496 -NORMALIZE=497 -DUMP=498 -PRINT_STRICT_PARAMS=499 -VARIABLE_CONFLICT=500 -ERROR=501 -USE_VARIABLE=502 -USE_COLUMN=503 -ALIAS=504 -CONSTANT=505 -PERFORM=506 -GET=507 -DIAGNOSTICS=508 -STACKED=509 -ELSIF=510 -WHILE=511 -REVERSE=512 -FOREACH=513 -SLICE=514 -EXIT=515 -RETURN=516 -QUERY=517 -RAISE=518 -SQLSTATE=519 -DEBUG=520 -LOG=521 -INFO=522 -NOTICE=523 -WARNING=524 -EXCEPTION=525 -ASSERT=526 -LOOP=527 -OPEN=528 -ABS=529 -CBRT=530 -CEIL=531 -CEILING=532 -DEGREES=533 -DIV=534 -EXP=535 -FACTORIAL=536 -FLOOR=537 -GCD=538 -LCM=539 -LN=540 -LOG10=541 -MIN_SCALE=542 -MOD=543 -PI=544 -POWER=545 -RADIANS=546 -ROUND=547 -SCALE=548 -SIGN=549 -SQRT=550 -TRIM_SCALE=551 -TRUNC=552 -WIDTH_BUCKET=553 -RANDOM=554 -SETSEED=555 -ACOS=556 -ACOSD=557 -ASIN=558 -ASIND=559 -ATAN=560 -ATAND=561 -ATAN2=562 -ATAN2D=563 -COS=564 -COSD=565 -COT=566 -COTD=567 -SIN=568 -SIND=569 -TAN=570 -TAND=571 -SINH=572 -COSH=573 -TANH=574 -ASINH=575 -ACOSH=576 -ATANH=577 -BIT_LENGTH=578 -CHAR_LENGTH=579 -CHARACTER_LENGTH=580 -LOWER=581 -OCTET_LENGTH=582 -UPPER=583 -ASCII=584 -BTRIM=585 -CHR=586 -CONCAT=587 -CONCAT_WS=588 -FORMAT=589 -INITCAP=590 -LENGTH=591 -LPAD=592 -LTRIM=593 -MD5=594 -PARSE_IDENT=595 -PG_CLIENT_ENCODING=596 -QUOTE_IDENT=597 -QUOTE_LITERAL=598 -QUOTE_NULLABLE=599 -REGEXP_COUNT=600 -REGEXP_INSTR=601 -REGEXP_LIKE=602 -REGEXP_MATCH=603 -REGEXP_MATCHES=604 -REGEXP_REPLACE=605 -REGEXP_SPLIT_TO_ARRAY=606 -REGEXP_SPLIT_TO_TABLE=607 -REGEXP_SUBSTR=608 -REPEAT=609 -RPAD=610 -RTRIM=611 -SPLIT_PART=612 -STARTS_WITH=613 -STRING_TO_ARRAY=614 -STRING_TO_TABLE=615 -STRPOS=616 -SUBSTR=617 -TO_ASCII=618 -TO_HEX=619 -TRANSLATE=620 -UNISTR=621 -AGE=622 -CLOCK_TIMESTAMP=623 -DATE_BIN=624 -DATE_PART=625 -DATE_TRUNC=626 -ISFINITE=627 -JUSTIFY_DAYS=628 -JUSTIFY_HOURS=629 -JUSTIFY_INTERVAL=630 -MAKE_DATE=631 -MAKE_INTERVAL=632 -MAKE_TIME=633 -MAKE_TIMESTAMP=634 -MAKE_TIMESTAMPTZ=635 -NOW=636 -STATEMENT_TIMESTAMP=637 -TIMEOFDAY=638 -TRANSACTION_TIMESTAMP=639 -TO_TIMESTAMP=640 -TO_CHAR=641 -TO_DATE=642 -TO_NUMBER=643 -Identifier=644 -QuotedIdentifier=645 -UnterminatedQuotedIdentifier=646 -InvalidQuotedIdentifier=647 -InvalidUnterminatedQuotedIdentifier=648 -UnicodeQuotedIdentifier=649 -UnterminatedUnicodeQuotedIdentifier=650 -InvalidUnicodeQuotedIdentifier=651 -InvalidUnterminatedUnicodeQuotedIdentifier=652 -StringConstant=653 -UnterminatedStringConstant=654 -UnicodeEscapeStringConstant=655 -UnterminatedUnicodeEscapeStringConstant=656 -BeginDollarStringConstant=657 -BinaryStringConstant=658 -UnterminatedBinaryStringConstant=659 -InvalidBinaryStringConstant=660 -InvalidUnterminatedBinaryStringConstant=661 -HexadecimalStringConstant=662 -UnterminatedHexadecimalStringConstant=663 -InvalidHexadecimalStringConstant=664 -InvalidUnterminatedHexadecimalStringConstant=665 -Integral=666 -NumericFail=667 -Numeric=668 -PLSQLVARIABLENAME=669 -PLSQLIDENTIFIER=670 -Whitespace=671 -Newline=672 -LineComment=673 -BlockComment=674 -UnterminatedBlockComment=675 -MetaCommand=676 -EndMetaCommand=677 -ErrorCharacter=678 -EscapeStringConstant=679 -UnterminatedEscapeStringConstant=680 -InvalidEscapeStringConstant=681 -InvalidUnterminatedEscapeStringConstant=682 -AfterEscapeStringConstantMode_NotContinued=683 -AfterEscapeStringConstantWithNewlineMode_NotContinued=684 -DollarText=685 -EndDollarStringConstant=686 -AfterEscapeStringConstantWithNewlineMode_Continued=687 -'$'=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 -'ZTABLE'=93 -'THEN'=94 -'TO'=95 -'DESCRIBE'=96 -'TOPIC'=97 -'TOPICS'=98 -'STREAM'=99 -'ZVIEW'=100 -'ZVIEWS'=101 -'TRAILING'=102 -'TRUE'=103 -'UNION'=104 -'UNIQUE'=105 -'USER'=106 -'USING'=107 -'VARIADIC'=108 -'WHEN'=109 -'WHERE'=110 -'WINDOW'=111 -'WITH'=112 -'AUTHORIZATION'=113 -'BINARY'=114 -'COLLATION'=115 -'CONCURRENTLY'=116 -'CROSS'=117 -'CURRENT_SCHEMA'=118 -'FREEZE'=119 -'FULL'=120 -'ILIKE'=121 -'INNER'=122 -'IS'=123 -'ISNULL'=124 -'JOIN'=125 -'LEFT'=126 -'LIKE'=127 -'NATURAL'=128 -'NOTNULL'=129 -'OUTER'=130 -'OVER'=131 -'OVERLAPS'=132 -'RIGHT'=133 -'SIMILAR'=134 -'VERBOSE'=135 -'ABORT'=136 -'ABSOLUTE'=137 -'ACCESS'=138 -'ACTION'=139 -'ADD'=140 -'ADMIN'=141 -'AFTER'=142 -'AGGREGATE'=143 -'ALSO'=144 -'ALTER'=145 -'ALWAYS'=146 -'ASSERTION'=147 -'ASSIGNMENT'=148 -'AT'=149 -'ATTRIBUTE'=150 -'BACKWARD'=151 -'BEFORE'=152 -'BEGIN'=153 -'BY'=154 -'CACHE'=155 -'CALLED'=156 -'CASCADE'=157 -'CASCADED'=158 -'CATALOG'=159 -'CHAIN'=160 -'CHARACTERISTICS'=161 -'CHECKPOINT'=162 -'CLASS'=163 -'CLOSE'=164 -'CLUSTER'=165 -'COMMENT'=166 -'COMMENTS'=167 -'COMMIT'=168 -'COMMITTED'=169 -'CONFIGURATION'=170 -'CONNECTION'=171 -'CONSTRAINTS'=172 -'CONTENT'=173 -'CONTINUE'=174 -'CONVERSION'=175 -'COPY'=176 -'COST'=177 -'CSV'=178 -'CURSOR'=179 -'CYCLE'=180 -'DATA'=181 -'DATABASE'=182 -'DAY'=183 -'DEALLOCATE'=184 -'DECLARE'=185 -'DEFAULTS'=186 -'DEFERRED'=187 -'DEFINER'=188 -'DELETE'=189 -'DELIMITER'=190 -'DELIMITERS'=191 -'DICTIONARY'=192 -'DISABLE'=193 -'DISCARD'=194 -'DOCUMENT'=195 -'DOMAIN'=196 -'DOUBLE'=197 -'DROP'=198 -'EACH'=199 -'ENABLE'=200 -'ENCODING'=201 -'ENCRYPTED'=202 -'ENUM'=203 -'ESCAPE'=204 -'EVENT'=205 -'EXCLUDE'=206 -'EXCLUDING'=207 -'EXCLUSIVE'=208 -'EXECUTE'=209 -'EXPLAIN'=210 -'EXTENSION'=211 -'EXTERNAL'=212 -'FAMILY'=213 -'FIRST'=214 -'FOLLOWING'=215 -'FORCE'=216 -'FORWARD'=217 -'FUNCTION'=218 -'FUNCTIONS'=219 -'GLOBAL'=220 -'GRANTED'=221 -'HANDLER'=222 -'HEADER'=223 -'HOLD'=224 -'HOUR'=225 -'IDENTITY'=226 -'IF'=227 -'IMMEDIATE'=228 -'IMMUTABLE'=229 -'IMPLICIT'=230 -'INCLUDING'=231 -'INCREMENT'=232 -'INDEX'=233 -'INDEXES'=234 -'INHERIT'=235 -'INHERITS'=236 -'INLINE'=237 -'INSENSITIVE'=238 -'INSERT'=239 -'INSTEAD'=240 -'INVOKER'=241 -'ISOLATION'=242 -'KEY'=243 -'LABEL'=244 -'LANGUAGE'=245 -'LARGE'=246 -'LAST'=247 -'LEAKPROOF'=248 -'LEVEL'=249 -'LISTEN'=250 -'LOAD'=251 -'LOCAL'=252 -'LOCATION'=253 -'LOCK'=254 -'MAPPING'=255 -'MATCH'=256 -'MATCHED'=257 -'MATERIALIZED'=258 -'MAXVALUE'=259 -'MERGE'=260 -'MINUTE'=261 -'MINVALUE'=262 -'MODE'=263 -'MONTH'=264 -'MOVE'=265 -'NAME'=266 -'NAMES'=267 -'NEXT'=268 -'NO'=269 -'NOTHING'=270 -'NOTIFY'=271 -'NOWAIT'=272 -'NULLS'=273 -'OBJECT'=274 -'OF'=275 -'OFF'=276 -'OIDS'=277 -'OPERATOR'=278 -'OPTION'=279 -'OPTIONS'=280 -'OWNED'=281 -'OWNER'=282 -'PARSER'=283 -'PARTIAL'=284 -'PARTITION'=285 -'PASSING'=286 -'PASSWORD'=287 -'PLANS'=288 -'PRECEDING'=289 -'PREPARE'=290 -'PREPARED'=291 -'PRESERVE'=292 -'PRIOR'=293 -'PRIVILEGES'=294 -'PROCEDURAL'=295 -'PROCEDURE'=296 -'PROGRAM'=297 -'QUOTE'=298 -'RANGE'=299 -'READ'=300 -'REASSIGN'=301 -'RECHECK'=302 -'RECURSIVE'=303 -'REF'=304 -'REFRESH'=305 -'REINDEX'=306 -'RELATIVE'=307 -'RELEASE'=308 -'RENAME'=309 -'REPEATABLE'=310 -'REPLACE'=311 -'REPLICA'=312 -'RESET'=313 -'RESTART'=314 -'RESTRICT'=315 -'RETURNS'=316 -'REVOKE'=317 -'ROLE'=318 -'ROLLBACK'=319 -'ROWS'=320 -'RULE'=321 -'SAVEPOINT'=322 -'SCHEMA'=323 -'SCROLL'=324 -'SEARCH'=325 -'SECOND'=326 -'SECURITY'=327 -'SEQUENCE'=328 -'SEQUENCES'=329 -'SERIALIZABLE'=330 -'SERVER'=331 -'SESSION'=332 -'SET'=333 -'SHARE'=334 -'SHOW'=335 -'SIMPLE'=336 -'SNAPSHOT'=337 -'STABLE'=338 -'STANDALONE'=339 -'START'=340 -'STATEMENT'=341 -'STATISTICS'=342 -'STDIN'=343 -'STDOUT'=344 -'STORAGE'=345 -'STRICT'=346 -'STRIP'=347 -'SYSID'=348 -'SYSTEM'=349 -'TABLES'=350 -'ZTABLES'=351 -'TABLESPACE'=352 -'TEMP'=353 -'TEMPLATE'=354 -'TEMPORARY'=355 -'TEXT'=356 -'TRANSACTION'=357 -'TRIGGER'=358 -'TRUNCATE'=359 -'TRUSTED'=360 -'TYPE'=361 -'TYPES'=362 -'UNBOUNDED'=363 -'UNCOMMITTED'=364 -'UNENCRYPTED'=365 -'UNKNOWN'=366 -'UNLISTEN'=367 -'UNLOGGED'=368 -'UNTIL'=369 -'UPDATE'=370 -'VACUUM'=371 -'VALID'=372 -'VALIDATE'=373 -'VALIDATOR'=374 -'VARYING'=375 -'VERSION'=376 -'VIEW'=377 -'VOLATILE'=378 -'WHITESPACE'=379 -'WITHOUT'=380 -'WORK'=381 -'WRAPPER'=382 -'WRITE'=383 -'XML'=384 -'YEAR'=385 -'YES'=386 -'ZONE'=387 -'BETWEEN'=388 -'BIGINT'=389 -'BIT'=390 -'BOOLEAN'=391 -'CHAR'=392 -'CHARACTER'=393 -'COALESCE'=394 -'DEC'=395 -'DECIMAL'=396 -'EXISTS'=397 -'EXTRACT'=398 -'FLOAT'=399 -'GREATEST'=400 -'INOUT'=401 -'INT'=402 -'INTEGER'=403 -'INTERVAL'=404 -'LEAST'=405 -'NATIONAL'=406 -'NCHAR'=407 -'NONE'=408 -'NULLIF'=409 -'NUMERIC'=410 -'OVERLAY'=411 -'POSITION'=412 -'PRECISION'=413 -'REAL'=414 -'ROW'=415 -'SETOF'=416 -'SMALLINT'=417 -'SUBSTRING'=418 -'TIME'=419 -'TIMESTAMP'=420 -'TREAT'=421 -'TRIM'=422 -'VALUES'=423 -'VARCHAR'=424 -'XMLATTRIBUTES'=425 -'XMLCOMMENT'=426 -'XMLAGG'=427 -'XML_IS_WELL_FORMED'=428 -'XML_IS_WELL_FORMED_DOCUMENT'=429 -'XML_IS_WELL_FORMED_CONTENT'=430 -'XPATH'=431 -'XPATH_EXISTS'=432 -'XMLCONCAT'=433 -'XMLELEMENT'=434 -'XMLEXISTS'=435 -'XMLFOREST'=436 -'XMLPARSE'=437 -'XMLPI'=438 -'XMLROOT'=439 -'XMLSERIALIZE'=440 -'CALL'=441 -'CURRENT'=442 -'ATTACH'=443 -'DETACH'=444 -'EXPRESSION'=445 -'GENERATED'=446 -'LOGGED'=447 -'STORED'=448 -'INCLUDE'=449 -'ROUTINE'=450 -'TRANSFORM'=451 -'IMPORT'=452 -'POLICY'=453 -'METHOD'=454 -'REFERENCING'=455 -'NEW'=456 -'OLD'=457 -'VALUE'=458 -'SUBSCRIPTION'=459 -'PUBLICATION'=460 -'OUT'=461 -'END'=462 -'ROUTINES'=463 -'SCHEMAS'=464 -'PROCEDURES'=465 -'INPUT'=466 -'SUPPORT'=467 -'PARALLEL'=468 -'SQL'=469 -'DEPENDS'=470 -'OVERRIDING'=471 -'CONFLICT'=472 -'SKIP'=473 -'LOCKED'=474 -'TIES'=475 -'ROLLUP'=476 -'CUBE'=477 -'GROUPING'=478 -'SETS'=479 -'TABLESAMPLE'=480 -'ORDINALITY'=481 -'XMLTABLE'=482 -'COLUMNS'=483 -'XMLNAMESPACES'=484 -'ROWTYPE'=485 -'NORMALIZED'=486 -'WITHIN'=487 -'FILTER'=488 -'GROUPS'=489 -'OTHERS'=490 -'NFC'=491 -'NFD'=492 -'NFKC'=493 -'NFKD'=494 -'UESCAPE'=495 -'VIEWS'=496 -'NORMALIZE'=497 -'DUMP'=498 -'PRINT_STRICT_PARAMS'=499 -'VARIABLE_CONFLICT'=500 -'ERROR'=501 -'USE_VARIABLE'=502 -'USE_COLUMN'=503 -'ALIAS'=504 -'CONSTANT'=505 -'PERFORM'=506 -'GET'=507 -'DIAGNOSTICS'=508 -'STACKED'=509 -'ELSIF'=510 -'WHILE'=511 -'REVERSE'=512 -'FOREACH'=513 -'SLICE'=514 -'EXIT'=515 -'RETURN'=516 -'QUERY'=517 -'RAISE'=518 -'SQLSTATE'=519 -'DEBUG'=520 -'LOG'=521 -'INFO'=522 -'NOTICE'=523 -'WARNING'=524 -'EXCEPTION'=525 -'ASSERT'=526 -'LOOP'=527 -'OPEN'=528 -'ABS'=529 -'CBRT'=530 -'CEIL'=531 -'CEILING'=532 -'DEGREES'=533 -'DIV'=534 -'EXP'=535 -'FACTORIAL'=536 -'FLOOR'=537 -'GCD'=538 -'LCM'=539 -'LN'=540 -'LOG10'=541 -'MIN_SCALE'=542 -'MOD'=543 -'PI'=544 -'POWER'=545 -'RADIANS'=546 -'ROUND'=547 -'SCALE'=548 -'SIGN'=549 -'SQRT'=550 -'TRIM_SCALE'=551 -'TRUNC'=552 -'WIDTH_BUCKET'=553 -'RANDOM'=554 -'SETSEED'=555 -'ACOS'=556 -'ACOSD'=557 -'ASIN'=558 -'ASIND'=559 -'ATAN'=560 -'ATAND'=561 -'ATAN2'=562 -'ATAN2D'=563 -'COS'=564 -'COSD'=565 -'COT'=566 -'COTD'=567 -'SIN'=568 -'SIND'=569 -'TAN'=570 -'TAND'=571 -'SINH'=572 -'COSH'=573 -'TANH'=574 -'ASINH'=575 -'ACOSH'=576 -'ATANH'=577 -'BIT_LENGTH'=578 -'CHAR_LENGTH'=579 -'CHARACTER_LENGTH'=580 -'LOWER'=581 -'OCTET_LENGTH'=582 -'UPPER'=583 -'ASCII'=584 -'BTRIM'=585 -'CHR'=586 -'CONCAT'=587 -'CONCAT_WS'=588 -'FORMAT'=589 -'INITCAP'=590 -'LENGTH'=591 -'LPAD'=592 -'LTRIM'=593 -'MD5'=594 -'PARSE_IDENT'=595 -'PG_CLIENT_ENCODING'=596 -'QUOTE_IDENT'=597 -'QUOTE_LITERAL'=598 -'QUOTE_NULLABLE'=599 -'REGEXP_COUNT'=600 -'REGEXP_INSTR'=601 -'REGEXP_LIKE'=602 -'REGEXP_MATCH'=603 -'REGEXP_MATCHES'=604 -'REGEXP_REPLACE'=605 -'REGEXP_SPLIT_TO_ARRAY'=606 -'REGEXP_SPLIT_TO_TABLE'=607 -'REGEXP_SUBSTR'=608 -'REPEAT'=609 -'RPAD'=610 -'RTRIM'=611 -'SPLIT_PART'=612 -'STARTS_WITH'=613 -'STRING_TO_ARRAY'=614 -'STRING_TO_TABLE'=615 -'STRPOS'=616 -'SUBSTR'=617 -'TO_ASCII'=618 -'TO_HEX'=619 -'TRANSLATE'=620 -'UNISTR'=621 -'AGE'=622 -'CLOCK_TIMESTAMP'=623 -'DATE_BIN'=624 -'DATE_PART'=625 -'DATE_TRUNC'=626 -'ISFINITE'=627 -'JUSTIFY_DAYS'=628 -'JUSTIFY_HOURS'=629 -'JUSTIFY_INTERVAL'=630 -'MAKE_DATE'=631 -'MAKE_INTERVAL'=632 -'MAKE_TIME'=633 -'MAKE_TIMESTAMP'=634 -'MAKE_TIMESTAMPTZ'=635 -'NOW'=636 -'STATEMENT_TIMESTAMP'=637 -'TIMEOFDAY'=638 -'TRANSACTION_TIMESTAMP'=639 -'TO_TIMESTAMP'=640 -'TO_CHAR'=641 -'TO_DATE'=642 -'TO_NUMBER'=643 -'\\\\'=677 -'\''=687 diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.interp b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.interp deleted file mode 100644 index 82019f774b..0000000000 --- a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.interp +++ /dev/null @@ -1,2098 +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' -'ZTABLE' -'THEN' -'TO' -'DESCRIBE' -'TOPIC' -'TOPICS' -'STREAM' -'ZVIEW' -'ZVIEWS' -'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' -'ZTABLES' -'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 -ZTABLE -THEN -TO -DESCRIBE -TOPIC -TOPICS -STREAM -ZVIEW -ZVIEWS -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 -ZTABLES -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 -ZTABLE -THEN -TO -DESCRIBE -TOPIC -TOPICS -STREAM -ZVIEW -ZVIEWS -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 -ZTABLES -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, 687, 6864, 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, 2, 697, 7, 697, 2, 698, 7, 698, 2, 699, 7, 699, 2, 700, 7, 700, 2, 701, 7, 701, 2, 702, 7, 702, 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, 1477, 8, 27, 11, 27, 12, 27, 1478, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1485, 8, 28, 11, 28, 12, 28, 1486, 1, 28, 1, 28, 1, 28, 3, 28, 1492, 8, 28, 1, 28, 1, 28, 4, 28, 1496, 8, 28, 11, 28, 12, 28, 1497, 1, 28, 3, 28, 1501, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1510, 8, 29, 10, 29, 12, 29, 1513, 9, 29, 1, 29, 1, 29, 3, 29, 1517, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1522, 8, 29, 11, 29, 12, 29, 1523, 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, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 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, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 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, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 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, 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, 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, 117, 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, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 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, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 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, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 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, 129, 1, 129, 1, 129, 1, 129, 1, 129, 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, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 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, 137, 1, 137, 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, 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, 140, 1, 140, 1, 140, 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, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 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, 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, 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, 150, 1, 150, 1, 150, 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, 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, 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, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 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, 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, 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, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 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, 165, 1, 165, 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, 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, 172, 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, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 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, 176, 1, 176, 1, 177, 1, 177, 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, 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, 181, 1, 181, 1, 181, 1, 181, 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, 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, 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, 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, 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, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 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, 195, 1, 195, 1, 195, 1, 195, 1, 196, 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, 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, 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, 202, 1, 202, 1, 202, 1, 202, 1, 202, 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, 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, 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, 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, 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, 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, 214, 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, 218, 1, 218, 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, 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, 221, 1, 221, 1, 222, 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, 223, 1, 223, 1, 223, 1, 223, 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, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 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, 230, 1, 230, 1, 230, 1, 231, 1, 231, 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, 232, 1, 233, 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, 234, 1, 235, 1, 235, 1, 235, 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, 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, 239, 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, 241, 1, 241, 1, 241, 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, 242, 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, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 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, 248, 1, 248, 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, 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, 254, 1, 254, 1, 254, 1, 254, 1, 254, 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, 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, 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, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 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, 264, 1, 264, 1, 265, 1, 265, 1, 265, 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, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 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, 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, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 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, 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, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 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, 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, 288, 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, 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, 295, 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, 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, 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, 300, 1, 300, 1, 300, 1, 300, 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, 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, 304, 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, 306, 1, 306, 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, 309, 1, 309, 1, 310, 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, 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, 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, 315, 1, 316, 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, 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, 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, 322, 1, 322, 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, 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, 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, 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, 330, 1, 331, 1, 331, 1, 331, 1, 331, 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, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 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, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 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, 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, 341, 1, 342, 1, 342, 1, 342, 1, 342, 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, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 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, 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, 348, 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, 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, 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, 355, 1, 355, 1, 355, 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, 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, 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, 364, 1, 364, 1, 364, 1, 364, 1, 364, 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, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 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, 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, 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, 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, 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, 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, 377, 1, 377, 1, 378, 1, 378, 1, 378, 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, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 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, 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, 387, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 1, 389, 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, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 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, 396, 1, 396, 1, 396, 1, 396, 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, 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, 400, 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, 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, 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, 411, 1, 411, 1, 411, 1, 411, 1, 411, 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, 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, 416, 1, 416, 1, 416, 1, 416, 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, 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, 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, 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, 425, 1, 425, 1, 425, 1, 425, 1, 425, 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, 428, 1, 428, 1, 428, 1, 428, 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, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 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, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 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, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 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, 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, 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, 438, 1, 438, 1, 438, 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, 439, 1, 439, 1, 439, 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, 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, 443, 1, 443, 1, 443, 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, 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, 448, 1, 449, 1, 449, 1, 449, 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, 453, 1, 453, 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, 455, 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, 457, 1, 457, 1, 457, 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, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 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, 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, 463, 1, 463, 1, 463, 1, 464, 1, 464, 1, 464, 1, 464, 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, 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, 470, 1, 470, 1, 470, 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, 471, 1, 471, 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, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 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, 478, 1, 478, 1, 478, 1, 478, 1, 478, 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, 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, 483, 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, 484, 1, 484, 1, 484, 1, 484, 1, 485, 1, 485, 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, 486, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 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, 491, 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, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 494, 1, 494, 1, 494, 1, 494, 1, 495, 1, 495, 1, 495, 1, 495, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 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, 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, 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, 502, 1, 502, 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, 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, 505, 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, 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, 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, 511, 1, 511, 1, 511, 1, 511, 1, 511, 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, 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, 515, 1, 515, 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, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 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, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 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, 523, 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, 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, 528, 1, 528, 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, 531, 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, 534, 1, 534, 1, 534, 1, 534, 1, 534, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 535, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 537, 1, 537, 1, 537, 1, 537, 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, 540, 1, 540, 1, 541, 1, 541, 1, 541, 1, 541, 1, 542, 1, 542, 1, 542, 1, 542, 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, 545, 1, 545, 1, 545, 1, 545, 1, 546, 1, 546, 1, 546, 1, 546, 1, 547, 1, 547, 1, 547, 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, 549, 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, 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, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 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, 557, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 559, 1, 559, 1, 559, 1, 559, 1, 559, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 563, 1, 563, 1, 563, 1, 563, 1, 563, 1, 564, 1, 564, 1, 564, 1, 564, 1, 564, 1, 564, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 566, 1, 566, 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, 570, 1, 570, 1, 570, 1, 570, 1, 570, 1, 571, 1, 571, 1, 571, 1, 571, 1, 572, 1, 572, 1, 572, 1, 572, 1, 572, 1, 573, 1, 573, 1, 573, 1, 573, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 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, 581, 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, 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, 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, 585, 1, 585, 1, 585, 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, 587, 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, 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, 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, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 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, 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, 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, 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, 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, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 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, 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, 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, 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, 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, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 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, 615, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 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, 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, 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, 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, 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, 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, 626, 1, 626, 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, 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, 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, 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, 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, 635, 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, 637, 1, 637, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 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, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 644, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 1, 647, 1, 647, 5, 647, 6396, 8, 647, 10, 647, 12, 647, 6399, 9, 647, 1, 648, 1, 648, 1, 648, 1, 648, 1, 648, 1, 648, 3, 648, 6407, 8, 648, 1, 649, 1, 649, 3, 649, 6411, 8, 649, 1, 650, 1, 650, 3, 650, 6415, 8, 650, 1, 651, 1, 651, 1, 651, 1, 652, 1, 652, 1, 652, 1, 652, 5, 652, 6424, 8, 652, 10, 652, 12, 652, 6427, 9, 652, 1, 653, 1, 653, 1, 653, 1, 654, 1, 654, 1, 654, 1, 654, 5, 654, 6436, 8, 654, 10, 654, 12, 654, 6439, 9, 654, 1, 655, 1, 655, 1, 655, 1, 655, 1, 656, 1, 656, 1, 656, 1, 656, 1, 657, 1, 657, 1, 657, 1, 657, 1, 658, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 1, 659, 1, 660, 1, 660, 1, 660, 1, 660, 5, 660, 6464, 8, 660, 10, 660, 12, 660, 6467, 9, 660, 1, 661, 1, 661, 1, 661, 1, 661, 1, 661, 1, 661, 1, 662, 1, 662, 1, 662, 1, 663, 1, 663, 1, 663, 1, 663, 1, 664, 1, 664, 3, 664, 6484, 8, 664, 1, 664, 1, 664, 1, 664, 1, 664, 1, 664, 1, 665, 1, 665, 5, 665, 6493, 8, 665, 10, 665, 12, 665, 6496, 9, 665, 1, 666, 1, 666, 1, 666, 1, 667, 1, 667, 1, 667, 5, 667, 6504, 8, 667, 10, 667, 12, 667, 6507, 9, 667, 1, 668, 1, 668, 1, 668, 1, 669, 1, 669, 1, 669, 1, 670, 1, 670, 1, 670, 1, 671, 1, 671, 1, 671, 5, 671, 6521, 8, 671, 10, 671, 12, 671, 6524, 9, 671, 1, 672, 1, 672, 1, 672, 1, 673, 1, 673, 1, 673, 1, 674, 1, 674, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 676, 1, 676, 1, 676, 3, 676, 6543, 8, 676, 1, 676, 1, 676, 3, 676, 6547, 8, 676, 1, 676, 3, 676, 6550, 8, 676, 1, 676, 1, 676, 1, 676, 1, 676, 3, 676, 6556, 8, 676, 1, 676, 3, 676, 6559, 8, 676, 1, 676, 1, 676, 1, 676, 3, 676, 6564, 8, 676, 1, 676, 1, 676, 3, 676, 6568, 8, 676, 1, 677, 4, 677, 6571, 8, 677, 11, 677, 12, 677, 6572, 1, 678, 1, 678, 1, 678, 5, 678, 6578, 8, 678, 10, 678, 12, 678, 6581, 9, 678, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 5, 679, 6591, 8, 679, 10, 679, 12, 679, 6594, 9, 679, 1, 679, 1, 679, 1, 680, 4, 680, 6599, 8, 680, 11, 680, 12, 680, 6600, 1, 680, 1, 680, 1, 681, 1, 681, 3, 681, 6607, 8, 681, 1, 681, 3, 681, 6610, 8, 681, 1, 681, 1, 681, 1, 682, 1, 682, 1, 682, 1, 682, 5, 682, 6618, 8, 682, 10, 682, 12, 682, 6621, 9, 682, 1, 682, 1, 682, 1, 683, 1, 683, 1, 683, 1, 683, 5, 683, 6629, 8, 683, 10, 683, 12, 683, 6632, 9, 683, 1, 683, 1, 683, 1, 683, 4, 683, 6637, 8, 683, 11, 683, 12, 683, 6638, 1, 683, 1, 683, 4, 683, 6643, 8, 683, 11, 683, 12, 683, 6644, 1, 683, 5, 683, 6648, 8, 683, 10, 683, 12, 683, 6651, 9, 683, 1, 683, 5, 683, 6654, 8, 683, 10, 683, 12, 683, 6657, 9, 683, 1, 683, 1, 683, 1, 683, 1, 683, 1, 683, 1, 684, 1, 684, 1, 684, 1, 684, 5, 684, 6668, 8, 684, 10, 684, 12, 684, 6671, 9, 684, 1, 684, 1, 684, 1, 684, 4, 684, 6676, 8, 684, 11, 684, 12, 684, 6677, 1, 684, 1, 684, 4, 684, 6682, 8, 684, 11, 684, 12, 684, 6683, 1, 684, 3, 684, 6687, 8, 684, 5, 684, 6689, 8, 684, 10, 684, 12, 684, 6692, 9, 684, 1, 684, 4, 684, 6695, 8, 684, 11, 684, 12, 684, 6696, 1, 684, 4, 684, 6700, 8, 684, 11, 684, 12, 684, 6701, 1, 684, 5, 684, 6705, 8, 684, 10, 684, 12, 684, 6708, 9, 684, 1, 684, 3, 684, 6711, 8, 684, 1, 684, 1, 684, 1, 685, 1, 685, 1, 685, 1, 685, 5, 685, 6719, 8, 685, 10, 685, 12, 685, 6722, 9, 685, 1, 685, 5, 685, 6725, 8, 685, 10, 685, 12, 685, 6728, 9, 685, 1, 685, 1, 685, 5, 685, 6732, 8, 685, 10, 685, 12, 685, 6735, 9, 685, 3, 685, 6737, 8, 685, 1, 686, 1, 686, 1, 686, 1, 687, 1, 687, 1, 688, 1, 688, 1, 688, 1, 688, 1, 688, 1, 689, 1, 689, 3, 689, 6751, 8, 689, 1, 689, 1, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 3, 690, 6775, 8, 690, 1, 690, 5, 690, 6778, 8, 690, 10, 690, 12, 690, 6781, 9, 690, 1, 691, 1, 691, 1, 691, 1, 691, 1, 691, 1, 692, 1, 692, 3, 692, 6790, 8, 692, 1, 692, 1, 692, 1, 693, 1, 693, 1, 693, 1, 693, 1, 693, 5, 693, 6799, 8, 693, 10, 693, 12, 693, 6802, 9, 693, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 695, 1, 695, 1, 695, 1, 695, 1, 695, 1, 695, 1, 696, 1, 696, 1, 696, 1, 696, 1, 696, 1, 697, 1, 697, 1, 697, 1, 697, 1, 697, 1, 698, 1, 698, 1, 698, 1, 698, 1, 698, 1, 699, 1, 699, 1, 699, 1, 699, 1, 699, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 701, 4, 701, 6841, 8, 701, 11, 701, 12, 701, 6842, 1, 701, 1, 701, 5, 701, 6847, 8, 701, 10, 701, 12, 701, 6850, 9, 701, 3, 701, 6852, 8, 701, 1, 702, 1, 702, 3, 702, 6856, 8, 702, 1, 702, 1, 702, 1, 702, 1, 702, 1, 702, 1, 702, 1, 702, 0, 0, 703, 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, 639, 1291, 640, 1293, 641, 1295, 642, 1297, 643, 1299, 644, 1301, 0, 1303, 0, 1305, 0, 1307, 645, 1309, 646, 1311, 647, 1313, 648, 1315, 649, 1317, 650, 1319, 651, 1321, 652, 1323, 653, 1325, 654, 1327, 0, 1329, 655, 1331, 656, 1333, 657, 1335, 0, 1337, 658, 1339, 659, 1341, 660, 1343, 661, 1345, 662, 1347, 663, 1349, 664, 1351, 665, 1353, 666, 1355, 667, 1357, 668, 1359, 0, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 673, 1371, 674, 1373, 675, 1375, 676, 1377, 677, 1379, 678, 1381, 679, 1383, 680, 1385, 0, 1387, 681, 1389, 682, 1391, 0, 1393, 0, 1395, 0, 1397, 683, 1399, 0, 1401, 0, 1403, 687, 1405, 684, 1407, 685, 1409, 686, 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, 87, 87, 119, 119, 2, 0, 81, 81, 113, 113, 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, 6936, 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, 1289, 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, 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, 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, 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, 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, 1361, 1, 0, 0, 0, 0, 1363, 1, 0, 0, 0, 0, 1365, 1, 0, 0, 0, 0, 1367, 1, 0, 0, 0, 0, 1369, 1, 0, 0, 0, 0, 1371, 1, 0, 0, 0, 0, 1373, 1, 0, 0, 0, 0, 1375, 1, 0, 0, 0, 0, 1377, 1, 0, 0, 0, 0, 1379, 1, 0, 0, 0, 1, 1381, 1, 0, 0, 0, 1, 1383, 1, 0, 0, 0, 1, 1387, 1, 0, 0, 0, 1, 1389, 1, 0, 0, 0, 2, 1393, 1, 0, 0, 0, 2, 1395, 1, 0, 0, 0, 2, 1397, 1, 0, 0, 0, 3, 1399, 1, 0, 0, 0, 3, 1401, 1, 0, 0, 0, 3, 1403, 1, 0, 0, 0, 3, 1405, 1, 0, 0, 0, 4, 1407, 1, 0, 0, 0, 4, 1409, 1, 0, 0, 0, 5, 1411, 1, 0, 0, 0, 7, 1413, 1, 0, 0, 0, 9, 1415, 1, 0, 0, 0, 11, 1417, 1, 0, 0, 0, 13, 1419, 1, 0, 0, 0, 15, 1421, 1, 0, 0, 0, 17, 1423, 1, 0, 0, 0, 19, 1425, 1, 0, 0, 0, 21, 1427, 1, 0, 0, 0, 23, 1429, 1, 0, 0, 0, 25, 1431, 1, 0, 0, 0, 27, 1433, 1, 0, 0, 0, 29, 1435, 1, 0, 0, 0, 31, 1437, 1, 0, 0, 0, 33, 1439, 1, 0, 0, 0, 35, 1441, 1, 0, 0, 0, 37, 1443, 1, 0, 0, 0, 39, 1445, 1, 0, 0, 0, 41, 1448, 1, 0, 0, 0, 43, 1451, 1, 0, 0, 0, 45, 1454, 1, 0, 0, 0, 47, 1457, 1, 0, 0, 0, 49, 1460, 1, 0, 0, 0, 51, 1463, 1, 0, 0, 0, 53, 1466, 1, 0, 0, 0, 55, 1469, 1, 0, 0, 0, 57, 1472, 1, 0, 0, 0, 59, 1474, 1, 0, 0, 0, 61, 1500, 1, 0, 0, 0, 63, 1511, 1, 0, 0, 0, 65, 1527, 1, 0, 0, 0, 67, 1529, 1, 0, 0, 0, 69, 1531, 1, 0, 0, 0, 71, 1533, 1, 0, 0, 0, 73, 1537, 1, 0, 0, 0, 75, 1545, 1, 0, 0, 0, 77, 1553, 1, 0, 0, 0, 79, 1557, 1, 0, 0, 0, 81, 1561, 1, 0, 0, 0, 83, 1567, 1, 0, 0, 0, 85, 1570, 1, 0, 0, 0, 87, 1574, 1, 0, 0, 0, 89, 1585, 1, 0, 0, 0, 91, 1590, 1, 0, 0, 0, 93, 1595, 1, 0, 0, 0, 95, 1600, 1, 0, 0, 0, 97, 1606, 1, 0, 0, 0, 99, 1614, 1, 0, 0, 0, 101, 1621, 1, 0, 0, 0, 103, 1632, 1, 0, 0, 0, 105, 1639, 1, 0, 0, 0, 107, 1655, 1, 0, 0, 0, 109, 1668, 1, 0, 0, 0, 111, 1681, 1, 0, 0, 0, 113, 1694, 1, 0, 0, 0, 115, 1712, 1, 0, 0, 0, 117, 1725, 1, 0, 0, 0, 119, 1733, 1, 0, 0, 0, 121, 1744, 1, 0, 0, 0, 123, 1749, 1, 0, 0, 0, 125, 1758, 1, 0, 0, 0, 127, 1761, 1, 0, 0, 0, 129, 1766, 1, 0, 0, 0, 131, 1773, 1, 0, 0, 0, 133, 1779, 1, 0, 0, 0, 135, 1785, 1, 0, 0, 0, 137, 1789, 1, 0, 0, 0, 139, 1797, 1, 0, 0, 0, 141, 1802, 1, 0, 0, 0, 143, 1808, 1, 0, 0, 0, 145, 1814, 1, 0, 0, 0, 147, 1821, 1, 0, 0, 0, 149, 1824, 1, 0, 0, 0, 151, 1834, 1, 0, 0, 0, 153, 1844, 1, 0, 0, 0, 155, 1849, 1, 0, 0, 0, 157, 1857, 1, 0, 0, 0, 159, 1865, 1, 0, 0, 0, 161, 1871, 1, 0, 0, 0, 163, 1881, 1, 0, 0, 0, 165, 1896, 1, 0, 0, 0, 167, 1900, 1, 0, 0, 0, 169, 1905, 1, 0, 0, 0, 171, 1912, 1, 0, 0, 0, 173, 1915, 1, 0, 0, 0, 175, 1920, 1, 0, 0, 0, 177, 1923, 1, 0, 0, 0, 179, 1929, 1, 0, 0, 0, 181, 1937, 1, 0, 0, 0, 183, 1945, 1, 0, 0, 0, 185, 1956, 1, 0, 0, 0, 187, 1966, 1, 0, 0, 0, 189, 1973, 1, 0, 0, 0, 191, 1986, 1, 0, 0, 0, 193, 1991, 1, 0, 0, 0, 195, 2001, 1, 0, 0, 0, 197, 2007, 1, 0, 0, 0, 199, 2014, 1, 0, 0, 0, 201, 2019, 1, 0, 0, 0, 203, 2022, 1, 0, 0, 0, 205, 2031, 1, 0, 0, 0, 207, 2037, 1, 0, 0, 0, 209, 2044, 1, 0, 0, 0, 211, 2051, 1, 0, 0, 0, 213, 2057, 1, 0, 0, 0, 215, 2064, 1, 0, 0, 0, 217, 2073, 1, 0, 0, 0, 219, 2078, 1, 0, 0, 0, 221, 2084, 1, 0, 0, 0, 223, 2091, 1, 0, 0, 0, 225, 2096, 1, 0, 0, 0, 227, 2102, 1, 0, 0, 0, 229, 2111, 1, 0, 0, 0, 231, 2116, 1, 0, 0, 0, 233, 2122, 1, 0, 0, 0, 235, 2129, 1, 0, 0, 0, 237, 2134, 1, 0, 0, 0, 239, 2148, 1, 0, 0, 0, 241, 2155, 1, 0, 0, 0, 243, 2165, 1, 0, 0, 0, 245, 2178, 1, 0, 0, 0, 247, 2184, 1, 0, 0, 0, 249, 2199, 1, 0, 0, 0, 251, 2206, 1, 0, 0, 0, 253, 2211, 1, 0, 0, 0, 255, 2217, 1, 0, 0, 0, 257, 2223, 1, 0, 0, 0, 259, 2226, 1, 0, 0, 0, 261, 2233, 1, 0, 0, 0, 263, 2238, 1, 0, 0, 0, 265, 2243, 1, 0, 0, 0, 267, 2248, 1, 0, 0, 0, 269, 2256, 1, 0, 0, 0, 271, 2264, 1, 0, 0, 0, 273, 2270, 1, 0, 0, 0, 275, 2275, 1, 0, 0, 0, 277, 2284, 1, 0, 0, 0, 279, 2290, 1, 0, 0, 0, 281, 2298, 1, 0, 0, 0, 283, 2306, 1, 0, 0, 0, 285, 2312, 1, 0, 0, 0, 287, 2321, 1, 0, 0, 0, 289, 2328, 1, 0, 0, 0, 291, 2335, 1, 0, 0, 0, 293, 2339, 1, 0, 0, 0, 295, 2345, 1, 0, 0, 0, 297, 2351, 1, 0, 0, 0, 299, 2361, 1, 0, 0, 0, 301, 2366, 1, 0, 0, 0, 303, 2372, 1, 0, 0, 0, 305, 2379, 1, 0, 0, 0, 307, 2389, 1, 0, 0, 0, 309, 2400, 1, 0, 0, 0, 311, 2403, 1, 0, 0, 0, 313, 2413, 1, 0, 0, 0, 315, 2422, 1, 0, 0, 0, 317, 2429, 1, 0, 0, 0, 319, 2435, 1, 0, 0, 0, 321, 2438, 1, 0, 0, 0, 323, 2444, 1, 0, 0, 0, 325, 2451, 1, 0, 0, 0, 327, 2459, 1, 0, 0, 0, 329, 2468, 1, 0, 0, 0, 331, 2476, 1, 0, 0, 0, 333, 2482, 1, 0, 0, 0, 335, 2498, 1, 0, 0, 0, 337, 2509, 1, 0, 0, 0, 339, 2515, 1, 0, 0, 0, 341, 2521, 1, 0, 0, 0, 343, 2529, 1, 0, 0, 0, 345, 2537, 1, 0, 0, 0, 347, 2546, 1, 0, 0, 0, 349, 2553, 1, 0, 0, 0, 351, 2563, 1, 0, 0, 0, 353, 2577, 1, 0, 0, 0, 355, 2588, 1, 0, 0, 0, 357, 2600, 1, 0, 0, 0, 359, 2608, 1, 0, 0, 0, 361, 2617, 1, 0, 0, 0, 363, 2628, 1, 0, 0, 0, 365, 2633, 1, 0, 0, 0, 367, 2638, 1, 0, 0, 0, 369, 2642, 1, 0, 0, 0, 371, 2649, 1, 0, 0, 0, 373, 2655, 1, 0, 0, 0, 375, 2660, 1, 0, 0, 0, 377, 2669, 1, 0, 0, 0, 379, 2673, 1, 0, 0, 0, 381, 2684, 1, 0, 0, 0, 383, 2692, 1, 0, 0, 0, 385, 2701, 1, 0, 0, 0, 387, 2710, 1, 0, 0, 0, 389, 2718, 1, 0, 0, 0, 391, 2725, 1, 0, 0, 0, 393, 2735, 1, 0, 0, 0, 395, 2746, 1, 0, 0, 0, 397, 2757, 1, 0, 0, 0, 399, 2765, 1, 0, 0, 0, 401, 2773, 1, 0, 0, 0, 403, 2782, 1, 0, 0, 0, 405, 2789, 1, 0, 0, 0, 407, 2796, 1, 0, 0, 0, 409, 2801, 1, 0, 0, 0, 411, 2806, 1, 0, 0, 0, 413, 2813, 1, 0, 0, 0, 415, 2822, 1, 0, 0, 0, 417, 2832, 1, 0, 0, 0, 419, 2837, 1, 0, 0, 0, 421, 2844, 1, 0, 0, 0, 423, 2850, 1, 0, 0, 0, 425, 2858, 1, 0, 0, 0, 427, 2868, 1, 0, 0, 0, 429, 2878, 1, 0, 0, 0, 431, 2886, 1, 0, 0, 0, 433, 2894, 1, 0, 0, 0, 435, 2904, 1, 0, 0, 0, 437, 2913, 1, 0, 0, 0, 439, 2920, 1, 0, 0, 0, 441, 2926, 1, 0, 0, 0, 443, 2936, 1, 0, 0, 0, 445, 2942, 1, 0, 0, 0, 447, 2950, 1, 0, 0, 0, 449, 2959, 1, 0, 0, 0, 451, 2969, 1, 0, 0, 0, 453, 2976, 1, 0, 0, 0, 455, 2984, 1, 0, 0, 0, 457, 2992, 1, 0, 0, 0, 459, 2999, 1, 0, 0, 0, 461, 3004, 1, 0, 0, 0, 463, 3009, 1, 0, 0, 0, 465, 3018, 1, 0, 0, 0, 467, 3021, 1, 0, 0, 0, 469, 3031, 1, 0, 0, 0, 471, 3041, 1, 0, 0, 0, 473, 3050, 1, 0, 0, 0, 475, 3060, 1, 0, 0, 0, 477, 3070, 1, 0, 0, 0, 479, 3076, 1, 0, 0, 0, 481, 3084, 1, 0, 0, 0, 483, 3092, 1, 0, 0, 0, 485, 3101, 1, 0, 0, 0, 487, 3108, 1, 0, 0, 0, 489, 3120, 1, 0, 0, 0, 491, 3127, 1, 0, 0, 0, 493, 3135, 1, 0, 0, 0, 495, 3143, 1, 0, 0, 0, 497, 3153, 1, 0, 0, 0, 499, 3157, 1, 0, 0, 0, 501, 3163, 1, 0, 0, 0, 503, 3172, 1, 0, 0, 0, 505, 3178, 1, 0, 0, 0, 507, 3183, 1, 0, 0, 0, 509, 3193, 1, 0, 0, 0, 511, 3199, 1, 0, 0, 0, 513, 3206, 1, 0, 0, 0, 515, 3211, 1, 0, 0, 0, 517, 3217, 1, 0, 0, 0, 519, 3226, 1, 0, 0, 0, 521, 3231, 1, 0, 0, 0, 523, 3239, 1, 0, 0, 0, 525, 3245, 1, 0, 0, 0, 527, 3253, 1, 0, 0, 0, 529, 3266, 1, 0, 0, 0, 531, 3275, 1, 0, 0, 0, 533, 3281, 1, 0, 0, 0, 535, 3288, 1, 0, 0, 0, 537, 3297, 1, 0, 0, 0, 539, 3302, 1, 0, 0, 0, 541, 3308, 1, 0, 0, 0, 543, 3313, 1, 0, 0, 0, 545, 3318, 1, 0, 0, 0, 547, 3324, 1, 0, 0, 0, 549, 3329, 1, 0, 0, 0, 551, 3332, 1, 0, 0, 0, 553, 3340, 1, 0, 0, 0, 555, 3347, 1, 0, 0, 0, 557, 3354, 1, 0, 0, 0, 559, 3360, 1, 0, 0, 0, 561, 3367, 1, 0, 0, 0, 563, 3370, 1, 0, 0, 0, 565, 3374, 1, 0, 0, 0, 567, 3379, 1, 0, 0, 0, 569, 3388, 1, 0, 0, 0, 571, 3395, 1, 0, 0, 0, 573, 3403, 1, 0, 0, 0, 575, 3409, 1, 0, 0, 0, 577, 3415, 1, 0, 0, 0, 579, 3422, 1, 0, 0, 0, 581, 3430, 1, 0, 0, 0, 583, 3440, 1, 0, 0, 0, 585, 3448, 1, 0, 0, 0, 587, 3457, 1, 0, 0, 0, 589, 3463, 1, 0, 0, 0, 591, 3473, 1, 0, 0, 0, 593, 3481, 1, 0, 0, 0, 595, 3490, 1, 0, 0, 0, 597, 3499, 1, 0, 0, 0, 599, 3505, 1, 0, 0, 0, 601, 3516, 1, 0, 0, 0, 603, 3527, 1, 0, 0, 0, 605, 3537, 1, 0, 0, 0, 607, 3545, 1, 0, 0, 0, 609, 3551, 1, 0, 0, 0, 611, 3557, 1, 0, 0, 0, 613, 3562, 1, 0, 0, 0, 615, 3571, 1, 0, 0, 0, 617, 3579, 1, 0, 0, 0, 619, 3589, 1, 0, 0, 0, 621, 3593, 1, 0, 0, 0, 623, 3601, 1, 0, 0, 0, 625, 3609, 1, 0, 0, 0, 627, 3618, 1, 0, 0, 0, 629, 3626, 1, 0, 0, 0, 631, 3633, 1, 0, 0, 0, 633, 3644, 1, 0, 0, 0, 635, 3652, 1, 0, 0, 0, 637, 3660, 1, 0, 0, 0, 639, 3666, 1, 0, 0, 0, 641, 3674, 1, 0, 0, 0, 643, 3683, 1, 0, 0, 0, 645, 3691, 1, 0, 0, 0, 647, 3698, 1, 0, 0, 0, 649, 3703, 1, 0, 0, 0, 651, 3712, 1, 0, 0, 0, 653, 3717, 1, 0, 0, 0, 655, 3722, 1, 0, 0, 0, 657, 3732, 1, 0, 0, 0, 659, 3739, 1, 0, 0, 0, 661, 3746, 1, 0, 0, 0, 663, 3753, 1, 0, 0, 0, 665, 3760, 1, 0, 0, 0, 667, 3769, 1, 0, 0, 0, 669, 3778, 1, 0, 0, 0, 671, 3788, 1, 0, 0, 0, 673, 3801, 1, 0, 0, 0, 675, 3808, 1, 0, 0, 0, 677, 3816, 1, 0, 0, 0, 679, 3820, 1, 0, 0, 0, 681, 3826, 1, 0, 0, 0, 683, 3831, 1, 0, 0, 0, 685, 3838, 1, 0, 0, 0, 687, 3847, 1, 0, 0, 0, 689, 3854, 1, 0, 0, 0, 691, 3865, 1, 0, 0, 0, 693, 3871, 1, 0, 0, 0, 695, 3881, 1, 0, 0, 0, 697, 3892, 1, 0, 0, 0, 699, 3898, 1, 0, 0, 0, 701, 3905, 1, 0, 0, 0, 703, 3913, 1, 0, 0, 0, 705, 3920, 1, 0, 0, 0, 707, 3926, 1, 0, 0, 0, 709, 3932, 1, 0, 0, 0, 711, 3939, 1, 0, 0, 0, 713, 3946, 1, 0, 0, 0, 715, 3954, 1, 0, 0, 0, 717, 3965, 1, 0, 0, 0, 719, 3970, 1, 0, 0, 0, 721, 3979, 1, 0, 0, 0, 723, 3989, 1, 0, 0, 0, 725, 3994, 1, 0, 0, 0, 727, 4006, 1, 0, 0, 0, 729, 4014, 1, 0, 0, 0, 731, 4023, 1, 0, 0, 0, 733, 4031, 1, 0, 0, 0, 735, 4036, 1, 0, 0, 0, 737, 4042, 1, 0, 0, 0, 739, 4052, 1, 0, 0, 0, 741, 4064, 1, 0, 0, 0, 743, 4076, 1, 0, 0, 0, 745, 4084, 1, 0, 0, 0, 747, 4093, 1, 0, 0, 0, 749, 4102, 1, 0, 0, 0, 751, 4108, 1, 0, 0, 0, 753, 4115, 1, 0, 0, 0, 755, 4122, 1, 0, 0, 0, 757, 4128, 1, 0, 0, 0, 759, 4137, 1, 0, 0, 0, 761, 4147, 1, 0, 0, 0, 763, 4155, 1, 0, 0, 0, 765, 4163, 1, 0, 0, 0, 767, 4168, 1, 0, 0, 0, 769, 4177, 1, 0, 0, 0, 771, 4188, 1, 0, 0, 0, 773, 4196, 1, 0, 0, 0, 775, 4201, 1, 0, 0, 0, 777, 4209, 1, 0, 0, 0, 779, 4215, 1, 0, 0, 0, 781, 4219, 1, 0, 0, 0, 783, 4224, 1, 0, 0, 0, 785, 4228, 1, 0, 0, 0, 787, 4233, 1, 0, 0, 0, 789, 4241, 1, 0, 0, 0, 791, 4248, 1, 0, 0, 0, 793, 4252, 1, 0, 0, 0, 795, 4260, 1, 0, 0, 0, 797, 4265, 1, 0, 0, 0, 799, 4275, 1, 0, 0, 0, 801, 4284, 1, 0, 0, 0, 803, 4288, 1, 0, 0, 0, 805, 4296, 1, 0, 0, 0, 807, 4303, 1, 0, 0, 0, 809, 4311, 1, 0, 0, 0, 811, 4317, 1, 0, 0, 0, 813, 4326, 1, 0, 0, 0, 815, 4332, 1, 0, 0, 0, 817, 4336, 1, 0, 0, 0, 819, 4344, 1, 0, 0, 0, 821, 4353, 1, 0, 0, 0, 823, 4359, 1, 0, 0, 0, 825, 4368, 1, 0, 0, 0, 827, 4374, 1, 0, 0, 0, 829, 4379, 1, 0, 0, 0, 831, 4386, 1, 0, 0, 0, 833, 4394, 1, 0, 0, 0, 835, 4402, 1, 0, 0, 0, 837, 4411, 1, 0, 0, 0, 839, 4421, 1, 0, 0, 0, 841, 4426, 1, 0, 0, 0, 843, 4430, 1, 0, 0, 0, 845, 4436, 1, 0, 0, 0, 847, 4445, 1, 0, 0, 0, 849, 4455, 1, 0, 0, 0, 851, 4460, 1, 0, 0, 0, 853, 4470, 1, 0, 0, 0, 855, 4476, 1, 0, 0, 0, 857, 4481, 1, 0, 0, 0, 859, 4488, 1, 0, 0, 0, 861, 4496, 1, 0, 0, 0, 863, 4510, 1, 0, 0, 0, 865, 4521, 1, 0, 0, 0, 867, 4528, 1, 0, 0, 0, 869, 4547, 1, 0, 0, 0, 871, 4575, 1, 0, 0, 0, 873, 4602, 1, 0, 0, 0, 875, 4608, 1, 0, 0, 0, 877, 4621, 1, 0, 0, 0, 879, 4631, 1, 0, 0, 0, 881, 4642, 1, 0, 0, 0, 883, 4652, 1, 0, 0, 0, 885, 4662, 1, 0, 0, 0, 887, 4671, 1, 0, 0, 0, 889, 4677, 1, 0, 0, 0, 891, 4685, 1, 0, 0, 0, 893, 4698, 1, 0, 0, 0, 895, 4703, 1, 0, 0, 0, 897, 4711, 1, 0, 0, 0, 899, 4718, 1, 0, 0, 0, 901, 4725, 1, 0, 0, 0, 903, 4736, 1, 0, 0, 0, 905, 4746, 1, 0, 0, 0, 907, 4753, 1, 0, 0, 0, 909, 4760, 1, 0, 0, 0, 911, 4768, 1, 0, 0, 0, 913, 4776, 1, 0, 0, 0, 915, 4786, 1, 0, 0, 0, 917, 4793, 1, 0, 0, 0, 919, 4800, 1, 0, 0, 0, 921, 4807, 1, 0, 0, 0, 923, 4819, 1, 0, 0, 0, 925, 4823, 1, 0, 0, 0, 927, 4827, 1, 0, 0, 0, 929, 4833, 1, 0, 0, 0, 931, 4846, 1, 0, 0, 0, 933, 4858, 1, 0, 0, 0, 935, 4862, 1, 0, 0, 0, 937, 4866, 1, 0, 0, 0, 939, 4875, 1, 0, 0, 0, 941, 4883, 1, 0, 0, 0, 943, 4894, 1, 0, 0, 0, 945, 4900, 1, 0, 0, 0, 947, 4908, 1, 0, 0, 0, 949, 4917, 1, 0, 0, 0, 951, 4921, 1, 0, 0, 0, 953, 4929, 1, 0, 0, 0, 955, 4940, 1, 0, 0, 0, 957, 4949, 1, 0, 0, 0, 959, 4954, 1, 0, 0, 0, 961, 4961, 1, 0, 0, 0, 963, 4966, 1, 0, 0, 0, 965, 4973, 1, 0, 0, 0, 967, 4978, 1, 0, 0, 0, 969, 4987, 1, 0, 0, 0, 971, 4992, 1, 0, 0, 0, 973, 5004, 1, 0, 0, 0, 975, 5015, 1, 0, 0, 0, 977, 5024, 1, 0, 0, 0, 979, 5032, 1, 0, 0, 0, 981, 5046, 1, 0, 0, 0, 983, 5054, 1, 0, 0, 0, 985, 5065, 1, 0, 0, 0, 987, 5072, 1, 0, 0, 0, 989, 5079, 1, 0, 0, 0, 991, 5086, 1, 0, 0, 0, 993, 5093, 1, 0, 0, 0, 995, 5097, 1, 0, 0, 0, 997, 5101, 1, 0, 0, 0, 999, 5106, 1, 0, 0, 0, 1001, 5111, 1, 0, 0, 0, 1003, 5119, 1, 0, 0, 0, 1005, 5125, 1, 0, 0, 0, 1007, 5135, 1, 0, 0, 0, 1009, 5140, 1, 0, 0, 0, 1011, 5160, 1, 0, 0, 0, 1013, 5178, 1, 0, 0, 0, 1015, 5184, 1, 0, 0, 0, 1017, 5197, 1, 0, 0, 0, 1019, 5208, 1, 0, 0, 0, 1021, 5214, 1, 0, 0, 0, 1023, 5223, 1, 0, 0, 0, 1025, 5231, 1, 0, 0, 0, 1027, 5235, 1, 0, 0, 0, 1029, 5247, 1, 0, 0, 0, 1031, 5255, 1, 0, 0, 0, 1033, 5261, 1, 0, 0, 0, 1035, 5267, 1, 0, 0, 0, 1037, 5275, 1, 0, 0, 0, 1039, 5283, 1, 0, 0, 0, 1041, 5289, 1, 0, 0, 0, 1043, 5294, 1, 0, 0, 0, 1045, 5301, 1, 0, 0, 0, 1047, 5307, 1, 0, 0, 0, 1049, 5313, 1, 0, 0, 0, 1051, 5322, 1, 0, 0, 0, 1053, 5328, 1, 0, 0, 0, 1055, 5332, 1, 0, 0, 0, 1057, 5337, 1, 0, 0, 0, 1059, 5344, 1, 0, 0, 0, 1061, 5352, 1, 0, 0, 0, 1063, 5362, 1, 0, 0, 0, 1065, 5369, 1, 0, 0, 0, 1067, 5374, 1, 0, 0, 0, 1069, 5379, 1, 0, 0, 0, 1071, 5383, 1, 0, 0, 0, 1073, 5388, 1, 0, 0, 0, 1075, 5393, 1, 0, 0, 0, 1077, 5401, 1, 0, 0, 0, 1079, 5409, 1, 0, 0, 0, 1081, 5413, 1, 0, 0, 0, 1083, 5417, 1, 0, 0, 0, 1085, 5427, 1, 0, 0, 0, 1087, 5433, 1, 0, 0, 0, 1089, 5437, 1, 0, 0, 0, 1091, 5441, 1, 0, 0, 0, 1093, 5444, 1, 0, 0, 0, 1095, 5450, 1, 0, 0, 0, 1097, 5460, 1, 0, 0, 0, 1099, 5464, 1, 0, 0, 0, 1101, 5467, 1, 0, 0, 0, 1103, 5473, 1, 0, 0, 0, 1105, 5481, 1, 0, 0, 0, 1107, 5487, 1, 0, 0, 0, 1109, 5493, 1, 0, 0, 0, 1111, 5498, 1, 0, 0, 0, 1113, 5503, 1, 0, 0, 0, 1115, 5514, 1, 0, 0, 0, 1117, 5520, 1, 0, 0, 0, 1119, 5533, 1, 0, 0, 0, 1121, 5540, 1, 0, 0, 0, 1123, 5548, 1, 0, 0, 0, 1125, 5553, 1, 0, 0, 0, 1127, 5559, 1, 0, 0, 0, 1129, 5564, 1, 0, 0, 0, 1131, 5570, 1, 0, 0, 0, 1133, 5575, 1, 0, 0, 0, 1135, 5581, 1, 0, 0, 0, 1137, 5587, 1, 0, 0, 0, 1139, 5594, 1, 0, 0, 0, 1141, 5598, 1, 0, 0, 0, 1143, 5603, 1, 0, 0, 0, 1145, 5607, 1, 0, 0, 0, 1147, 5612, 1, 0, 0, 0, 1149, 5616, 1, 0, 0, 0, 1151, 5621, 1, 0, 0, 0, 1153, 5625, 1, 0, 0, 0, 1155, 5630, 1, 0, 0, 0, 1157, 5635, 1, 0, 0, 0, 1159, 5640, 1, 0, 0, 0, 1161, 5645, 1, 0, 0, 0, 1163, 5651, 1, 0, 0, 0, 1165, 5657, 1, 0, 0, 0, 1167, 5663, 1, 0, 0, 0, 1169, 5674, 1, 0, 0, 0, 1171, 5686, 1, 0, 0, 0, 1173, 5703, 1, 0, 0, 0, 1175, 5709, 1, 0, 0, 0, 1177, 5722, 1, 0, 0, 0, 1179, 5728, 1, 0, 0, 0, 1181, 5734, 1, 0, 0, 0, 1183, 5740, 1, 0, 0, 0, 1185, 5744, 1, 0, 0, 0, 1187, 5751, 1, 0, 0, 0, 1189, 5761, 1, 0, 0, 0, 1191, 5768, 1, 0, 0, 0, 1193, 5776, 1, 0, 0, 0, 1195, 5783, 1, 0, 0, 0, 1197, 5788, 1, 0, 0, 0, 1199, 5794, 1, 0, 0, 0, 1201, 5798, 1, 0, 0, 0, 1203, 5810, 1, 0, 0, 0, 1205, 5829, 1, 0, 0, 0, 1207, 5841, 1, 0, 0, 0, 1209, 5855, 1, 0, 0, 0, 1211, 5870, 1, 0, 0, 0, 1213, 5883, 1, 0, 0, 0, 1215, 5896, 1, 0, 0, 0, 1217, 5908, 1, 0, 0, 0, 1219, 5921, 1, 0, 0, 0, 1221, 5936, 1, 0, 0, 0, 1223, 5951, 1, 0, 0, 0, 1225, 5973, 1, 0, 0, 0, 1227, 5995, 1, 0, 0, 0, 1229, 6009, 1, 0, 0, 0, 1231, 6016, 1, 0, 0, 0, 1233, 6021, 1, 0, 0, 0, 1235, 6027, 1, 0, 0, 0, 1237, 6038, 1, 0, 0, 0, 1239, 6050, 1, 0, 0, 0, 1241, 6066, 1, 0, 0, 0, 1243, 6082, 1, 0, 0, 0, 1245, 6089, 1, 0, 0, 0, 1247, 6096, 1, 0, 0, 0, 1249, 6105, 1, 0, 0, 0, 1251, 6112, 1, 0, 0, 0, 1253, 6122, 1, 0, 0, 0, 1255, 6129, 1, 0, 0, 0, 1257, 6133, 1, 0, 0, 0, 1259, 6149, 1, 0, 0, 0, 1261, 6158, 1, 0, 0, 0, 1263, 6168, 1, 0, 0, 0, 1265, 6179, 1, 0, 0, 0, 1267, 6188, 1, 0, 0, 0, 1269, 6201, 1, 0, 0, 0, 1271, 6215, 1, 0, 0, 0, 1273, 6232, 1, 0, 0, 0, 1275, 6242, 1, 0, 0, 0, 1277, 6256, 1, 0, 0, 0, 1279, 6266, 1, 0, 0, 0, 1281, 6281, 1, 0, 0, 0, 1283, 6298, 1, 0, 0, 0, 1285, 6302, 1, 0, 0, 0, 1287, 6322, 1, 0, 0, 0, 1289, 6332, 1, 0, 0, 0, 1291, 6354, 1, 0, 0, 0, 1293, 6367, 1, 0, 0, 0, 1295, 6375, 1, 0, 0, 0, 1297, 6383, 1, 0, 0, 0, 1299, 6393, 1, 0, 0, 0, 1301, 6406, 1, 0, 0, 0, 1303, 6410, 1, 0, 0, 0, 1305, 6414, 1, 0, 0, 0, 1307, 6416, 1, 0, 0, 0, 1309, 6419, 1, 0, 0, 0, 1311, 6428, 1, 0, 0, 0, 1313, 6431, 1, 0, 0, 0, 1315, 6440, 1, 0, 0, 0, 1317, 6444, 1, 0, 0, 0, 1319, 6448, 1, 0, 0, 0, 1321, 6452, 1, 0, 0, 0, 1323, 6456, 1, 0, 0, 0, 1325, 6459, 1, 0, 0, 0, 1327, 6468, 1, 0, 0, 0, 1329, 6474, 1, 0, 0, 0, 1331, 6477, 1, 0, 0, 0, 1333, 6481, 1, 0, 0, 0, 1335, 6490, 1, 0, 0, 0, 1337, 6497, 1, 0, 0, 0, 1339, 6500, 1, 0, 0, 0, 1341, 6508, 1, 0, 0, 0, 1343, 6511, 1, 0, 0, 0, 1345, 6514, 1, 0, 0, 0, 1347, 6517, 1, 0, 0, 0, 1349, 6525, 1, 0, 0, 0, 1351, 6528, 1, 0, 0, 0, 1353, 6531, 1, 0, 0, 0, 1355, 6533, 1, 0, 0, 0, 1357, 6567, 1, 0, 0, 0, 1359, 6570, 1, 0, 0, 0, 1361, 6574, 1, 0, 0, 0, 1363, 6582, 1, 0, 0, 0, 1365, 6598, 1, 0, 0, 0, 1367, 6609, 1, 0, 0, 0, 1369, 6613, 1, 0, 0, 0, 1371, 6624, 1, 0, 0, 0, 1373, 6663, 1, 0, 0, 0, 1375, 6714, 1, 0, 0, 0, 1377, 6738, 1, 0, 0, 0, 1379, 6741, 1, 0, 0, 0, 1381, 6743, 1, 0, 0, 0, 1383, 6748, 1, 0, 0, 0, 1385, 6779, 1, 0, 0, 0, 1387, 6782, 1, 0, 0, 0, 1389, 6787, 1, 0, 0, 0, 1391, 6800, 1, 0, 0, 0, 1393, 6803, 1, 0, 0, 0, 1395, 6808, 1, 0, 0, 0, 1397, 6814, 1, 0, 0, 0, 1399, 6819, 1, 0, 0, 0, 1401, 6824, 1, 0, 0, 0, 1403, 6829, 1, 0, 0, 0, 1405, 6834, 1, 0, 0, 0, 1407, 6851, 1, 0, 0, 0, 1409, 6853, 1, 0, 0, 0, 1411, 1412, 5, 36, 0, 0, 1412, 6, 1, 0, 0, 0, 1413, 1414, 5, 40, 0, 0, 1414, 8, 1, 0, 0, 0, 1415, 1416, 5, 41, 0, 0, 1416, 10, 1, 0, 0, 0, 1417, 1418, 5, 91, 0, 0, 1418, 12, 1, 0, 0, 0, 1419, 1420, 5, 93, 0, 0, 1420, 14, 1, 0, 0, 0, 1421, 1422, 5, 44, 0, 0, 1422, 16, 1, 0, 0, 0, 1423, 1424, 5, 59, 0, 0, 1424, 18, 1, 0, 0, 0, 1425, 1426, 5, 58, 0, 0, 1426, 20, 1, 0, 0, 0, 1427, 1428, 5, 42, 0, 0, 1428, 22, 1, 0, 0, 0, 1429, 1430, 5, 61, 0, 0, 1430, 24, 1, 0, 0, 0, 1431, 1432, 5, 46, 0, 0, 1432, 26, 1, 0, 0, 0, 1433, 1434, 5, 43, 0, 0, 1434, 28, 1, 0, 0, 0, 1435, 1436, 5, 45, 0, 0, 1436, 30, 1, 0, 0, 0, 1437, 1438, 5, 47, 0, 0, 1438, 32, 1, 0, 0, 0, 1439, 1440, 5, 94, 0, 0, 1440, 34, 1, 0, 0, 0, 1441, 1442, 5, 60, 0, 0, 1442, 36, 1, 0, 0, 0, 1443, 1444, 5, 62, 0, 0, 1444, 38, 1, 0, 0, 0, 1445, 1446, 5, 60, 0, 0, 1446, 1447, 5, 60, 0, 0, 1447, 40, 1, 0, 0, 0, 1448, 1449, 5, 62, 0, 0, 1449, 1450, 5, 62, 0, 0, 1450, 42, 1, 0, 0, 0, 1451, 1452, 5, 58, 0, 0, 1452, 1453, 5, 61, 0, 0, 1453, 44, 1, 0, 0, 0, 1454, 1455, 5, 60, 0, 0, 1455, 1456, 5, 61, 0, 0, 1456, 46, 1, 0, 0, 0, 1457, 1458, 5, 61, 0, 0, 1458, 1459, 5, 62, 0, 0, 1459, 48, 1, 0, 0, 0, 1460, 1461, 5, 62, 0, 0, 1461, 1462, 5, 61, 0, 0, 1462, 50, 1, 0, 0, 0, 1463, 1464, 5, 46, 0, 0, 1464, 1465, 5, 46, 0, 0, 1465, 52, 1, 0, 0, 0, 1466, 1467, 5, 60, 0, 0, 1467, 1468, 5, 62, 0, 0, 1468, 54, 1, 0, 0, 0, 1469, 1470, 5, 58, 0, 0, 1470, 1471, 5, 58, 0, 0, 1471, 56, 1, 0, 0, 0, 1472, 1473, 5, 37, 0, 0, 1473, 58, 1, 0, 0, 0, 1474, 1476, 5, 36, 0, 0, 1475, 1477, 7, 0, 0, 0, 1476, 1475, 1, 0, 0, 0, 1477, 1478, 1, 0, 0, 0, 1478, 1476, 1, 0, 0, 0, 1478, 1479, 1, 0, 0, 0, 1479, 60, 1, 0, 0, 0, 1480, 1496, 3, 65, 30, 0, 1481, 1485, 5, 43, 0, 0, 1482, 1483, 5, 45, 0, 0, 1483, 1485, 4, 28, 0, 0, 1484, 1481, 1, 0, 0, 0, 1484, 1482, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 1484, 1, 0, 0, 0, 1486, 1487, 1, 0, 0, 0, 1487, 1491, 1, 0, 0, 0, 1488, 1492, 3, 65, 30, 0, 1489, 1490, 5, 47, 0, 0, 1490, 1492, 4, 28, 1, 0, 1491, 1488, 1, 0, 0, 0, 1491, 1489, 1, 0, 0, 0, 1492, 1496, 1, 0, 0, 0, 1493, 1494, 5, 47, 0, 0, 1494, 1496, 4, 28, 2, 0, 1495, 1480, 1, 0, 0, 0, 1495, 1484, 1, 0, 0, 0, 1495, 1493, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1495, 1, 0, 0, 0, 1497, 1498, 1, 0, 0, 0, 1498, 1501, 1, 0, 0, 0, 1499, 1501, 7, 1, 0, 0, 1500, 1495, 1, 0, 0, 0, 1500, 1499, 1, 0, 0, 0, 1501, 1502, 1, 0, 0, 0, 1502, 1503, 6, 28, 0, 0, 1503, 62, 1, 0, 0, 0, 1504, 1510, 3, 67, 31, 0, 1505, 1506, 5, 45, 0, 0, 1506, 1510, 4, 29, 3, 0, 1507, 1508, 5, 47, 0, 0, 1508, 1510, 4, 29, 4, 0, 1509, 1504, 1, 0, 0, 0, 1509, 1505, 1, 0, 0, 0, 1509, 1507, 1, 0, 0, 0, 1510, 1513, 1, 0, 0, 0, 1511, 1509, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1514, 1, 0, 0, 0, 1513, 1511, 1, 0, 0, 0, 1514, 1516, 3, 69, 32, 0, 1515, 1517, 3, 61, 28, 0, 1516, 1515, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1521, 1, 0, 0, 0, 1518, 1522, 5, 43, 0, 0, 1519, 1520, 5, 45, 0, 0, 1520, 1522, 4, 29, 5, 0, 1521, 1518, 1, 0, 0, 0, 1521, 1519, 1, 0, 0, 0, 1522, 1523, 1, 0, 0, 0, 1523, 1521, 1, 0, 0, 0, 1523, 1524, 1, 0, 0, 0, 1524, 1525, 1, 0, 0, 0, 1525, 1526, 6, 29, 1, 0, 1526, 64, 1, 0, 0, 0, 1527, 1528, 7, 2, 0, 0, 1528, 66, 1, 0, 0, 0, 1529, 1530, 7, 3, 0, 0, 1530, 68, 1, 0, 0, 0, 1531, 1532, 7, 4, 0, 0, 1532, 70, 1, 0, 0, 0, 1533, 1534, 7, 5, 0, 0, 1534, 1535, 7, 6, 0, 0, 1535, 1536, 7, 6, 0, 0, 1536, 72, 1, 0, 0, 0, 1537, 1538, 7, 5, 0, 0, 1538, 1539, 7, 7, 0, 0, 1539, 1540, 7, 5, 0, 0, 1540, 1541, 7, 6, 0, 0, 1541, 1542, 7, 8, 0, 0, 1542, 1543, 7, 9, 0, 0, 1543, 1544, 7, 10, 0, 0, 1544, 74, 1, 0, 0, 0, 1545, 1546, 7, 5, 0, 0, 1546, 1547, 7, 7, 0, 0, 1547, 1548, 7, 5, 0, 0, 1548, 1549, 7, 6, 0, 0, 1549, 1550, 7, 8, 0, 0, 1550, 1551, 7, 11, 0, 0, 1551, 1552, 7, 10, 0, 0, 1552, 76, 1, 0, 0, 0, 1553, 1554, 7, 5, 0, 0, 1554, 1555, 7, 7, 0, 0, 1555, 1556, 7, 12, 0, 0, 1556, 78, 1, 0, 0, 0, 1557, 1558, 7, 5, 0, 0, 1558, 1559, 7, 7, 0, 0, 1559, 1560, 7, 8, 0, 0, 1560, 80, 1, 0, 0, 0, 1561, 1562, 7, 5, 0, 0, 1562, 1563, 7, 13, 0, 0, 1563, 1564, 7, 13, 0, 0, 1564, 1565, 7, 5, 0, 0, 1565, 1566, 7, 8, 0, 0, 1566, 82, 1, 0, 0, 0, 1567, 1568, 7, 5, 0, 0, 1568, 1569, 7, 9, 0, 0, 1569, 84, 1, 0, 0, 0, 1570, 1571, 7, 5, 0, 0, 1571, 1572, 7, 9, 0, 0, 1572, 1573, 7, 14, 0, 0, 1573, 86, 1, 0, 0, 0, 1574, 1575, 7, 5, 0, 0, 1575, 1576, 7, 9, 0, 0, 1576, 1577, 7, 8, 0, 0, 1577, 1578, 7, 15, 0, 0, 1578, 1579, 7, 15, 0, 0, 1579, 1580, 7, 10, 0, 0, 1580, 1581, 7, 16, 0, 0, 1581, 1582, 7, 13, 0, 0, 1582, 1583, 7, 17, 0, 0, 1583, 1584, 7, 14, 0, 0, 1584, 88, 1, 0, 0, 0, 1585, 1586, 7, 18, 0, 0, 1586, 1587, 7, 19, 0, 0, 1587, 1588, 7, 16, 0, 0, 1588, 1589, 7, 20, 0, 0, 1589, 90, 1, 0, 0, 0, 1590, 1591, 7, 14, 0, 0, 1591, 1592, 7, 5, 0, 0, 1592, 1593, 7, 9, 0, 0, 1593, 1594, 7, 10, 0, 0, 1594, 92, 1, 0, 0, 0, 1595, 1596, 7, 14, 0, 0, 1596, 1597, 7, 5, 0, 0, 1597, 1598, 7, 9, 0, 0, 1598, 1599, 7, 16, 0, 0, 1599, 94, 1, 0, 0, 0, 1600, 1601, 7, 14, 0, 0, 1601, 1602, 7, 20, 0, 0, 1602, 1603, 7, 10, 0, 0, 1603, 1604, 7, 14, 0, 0, 1604, 1605, 7, 21, 0, 0, 1605, 96, 1, 0, 0, 0, 1606, 1607, 7, 14, 0, 0, 1607, 1608, 7, 19, 0, 0, 1608, 1609, 7, 6, 0, 0, 1609, 1610, 7, 6, 0, 0, 1610, 1611, 7, 5, 0, 0, 1611, 1612, 7, 16, 0, 0, 1612, 1613, 7, 10, 0, 0, 1613, 98, 1, 0, 0, 0, 1614, 1615, 7, 14, 0, 0, 1615, 1616, 7, 19, 0, 0, 1616, 1617, 7, 6, 0, 0, 1617, 1618, 7, 22, 0, 0, 1618, 1619, 7, 15, 0, 0, 1619, 1620, 7, 7, 0, 0, 1620, 100, 1, 0, 0, 0, 1621, 1622, 7, 14, 0, 0, 1622, 1623, 7, 19, 0, 0, 1623, 1624, 7, 7, 0, 0, 1624, 1625, 7, 9, 0, 0, 1625, 1626, 7, 16, 0, 0, 1626, 1627, 7, 13, 0, 0, 1627, 1628, 7, 5, 0, 0, 1628, 1629, 7, 17, 0, 0, 1629, 1630, 7, 7, 0, 0, 1630, 1631, 7, 16, 0, 0, 1631, 102, 1, 0, 0, 0, 1632, 1633, 7, 14, 0, 0, 1633, 1634, 7, 13, 0, 0, 1634, 1635, 7, 10, 0, 0, 1635, 1636, 7, 5, 0, 0, 1636, 1637, 7, 16, 0, 0, 1637, 1638, 7, 10, 0, 0, 1638, 104, 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, 14, 0, 0, 1648, 1649, 7, 5, 0, 0, 1649, 1650, 7, 16, 0, 0, 1650, 1651, 7, 5, 0, 0, 1651, 1652, 7, 6, 0, 0, 1652, 1653, 7, 19, 0, 0, 1653, 1654, 7, 23, 0, 0, 1654, 106, 1, 0, 0, 0, 1655, 1656, 7, 14, 0, 0, 1656, 1657, 7, 22, 0, 0, 1657, 1658, 7, 13, 0, 0, 1658, 1659, 7, 13, 0, 0, 1659, 1660, 7, 10, 0, 0, 1660, 1661, 7, 7, 0, 0, 1661, 1662, 7, 16, 0, 0, 1662, 1663, 5, 95, 0, 0, 1663, 1664, 7, 12, 0, 0, 1664, 1665, 7, 5, 0, 0, 1665, 1666, 7, 16, 0, 0, 1666, 1667, 7, 10, 0, 0, 1667, 108, 1, 0, 0, 0, 1668, 1669, 7, 14, 0, 0, 1669, 1670, 7, 22, 0, 0, 1670, 1671, 7, 13, 0, 0, 1671, 1672, 7, 13, 0, 0, 1672, 1673, 7, 10, 0, 0, 1673, 1674, 7, 7, 0, 0, 1674, 1675, 7, 16, 0, 0, 1675, 1676, 5, 95, 0, 0, 1676, 1677, 7, 13, 0, 0, 1677, 1678, 7, 19, 0, 0, 1678, 1679, 7, 6, 0, 0, 1679, 1680, 7, 10, 0, 0, 1680, 110, 1, 0, 0, 0, 1681, 1682, 7, 14, 0, 0, 1682, 1683, 7, 22, 0, 0, 1683, 1684, 7, 13, 0, 0, 1684, 1685, 7, 13, 0, 0, 1685, 1686, 7, 10, 0, 0, 1686, 1687, 7, 7, 0, 0, 1687, 1688, 7, 16, 0, 0, 1688, 1689, 5, 95, 0, 0, 1689, 1690, 7, 16, 0, 0, 1690, 1691, 7, 17, 0, 0, 1691, 1692, 7, 15, 0, 0, 1692, 1693, 7, 10, 0, 0, 1693, 112, 1, 0, 0, 0, 1694, 1695, 7, 14, 0, 0, 1695, 1696, 7, 22, 0, 0, 1696, 1697, 7, 13, 0, 0, 1697, 1698, 7, 13, 0, 0, 1698, 1699, 7, 10, 0, 0, 1699, 1700, 7, 7, 0, 0, 1700, 1701, 7, 16, 0, 0, 1701, 1702, 5, 95, 0, 0, 1702, 1703, 7, 16, 0, 0, 1703, 1704, 7, 17, 0, 0, 1704, 1705, 7, 15, 0, 0, 1705, 1706, 7, 10, 0, 0, 1706, 1707, 7, 9, 0, 0, 1707, 1708, 7, 16, 0, 0, 1708, 1709, 7, 5, 0, 0, 1709, 1710, 7, 15, 0, 0, 1710, 1711, 7, 24, 0, 0, 1711, 114, 1, 0, 0, 0, 1712, 1713, 7, 14, 0, 0, 1713, 1714, 7, 22, 0, 0, 1714, 1715, 7, 13, 0, 0, 1715, 1716, 7, 13, 0, 0, 1716, 1717, 7, 10, 0, 0, 1717, 1718, 7, 7, 0, 0, 1718, 1719, 7, 16, 0, 0, 1719, 1720, 5, 95, 0, 0, 1720, 1721, 7, 22, 0, 0, 1721, 1722, 7, 9, 0, 0, 1722, 1723, 7, 10, 0, 0, 1723, 1724, 7, 13, 0, 0, 1724, 116, 1, 0, 0, 0, 1725, 1726, 7, 12, 0, 0, 1726, 1727, 7, 10, 0, 0, 1727, 1728, 7, 25, 0, 0, 1728, 1729, 7, 5, 0, 0, 1729, 1730, 7, 22, 0, 0, 1730, 1731, 7, 6, 0, 0, 1731, 1732, 7, 16, 0, 0, 1732, 118, 1, 0, 0, 0, 1733, 1734, 7, 12, 0, 0, 1734, 1735, 7, 10, 0, 0, 1735, 1736, 7, 25, 0, 0, 1736, 1737, 7, 10, 0, 0, 1737, 1738, 7, 13, 0, 0, 1738, 1739, 7, 13, 0, 0, 1739, 1740, 7, 5, 0, 0, 1740, 1741, 7, 18, 0, 0, 1741, 1742, 7, 6, 0, 0, 1742, 1743, 7, 10, 0, 0, 1743, 120, 1, 0, 0, 0, 1744, 1745, 7, 12, 0, 0, 1745, 1746, 7, 10, 0, 0, 1746, 1747, 7, 9, 0, 0, 1747, 1748, 7, 14, 0, 0, 1748, 122, 1, 0, 0, 0, 1749, 1750, 7, 12, 0, 0, 1750, 1751, 7, 17, 0, 0, 1751, 1752, 7, 9, 0, 0, 1752, 1753, 7, 16, 0, 0, 1753, 1754, 7, 17, 0, 0, 1754, 1755, 7, 7, 0, 0, 1755, 1756, 7, 14, 0, 0, 1756, 1757, 7, 16, 0, 0, 1757, 124, 1, 0, 0, 0, 1758, 1759, 7, 12, 0, 0, 1759, 1760, 7, 19, 0, 0, 1760, 126, 1, 0, 0, 0, 1761, 1762, 7, 10, 0, 0, 1762, 1763, 7, 6, 0, 0, 1763, 1764, 7, 9, 0, 0, 1764, 1765, 7, 10, 0, 0, 1765, 128, 1, 0, 0, 0, 1766, 1767, 7, 10, 0, 0, 1767, 1768, 7, 26, 0, 0, 1768, 1769, 7, 14, 0, 0, 1769, 1770, 7, 10, 0, 0, 1770, 1771, 7, 24, 0, 0, 1771, 1772, 7, 16, 0, 0, 1772, 130, 1, 0, 0, 0, 1773, 1774, 7, 25, 0, 0, 1774, 1775, 7, 5, 0, 0, 1775, 1776, 7, 6, 0, 0, 1776, 1777, 7, 9, 0, 0, 1777, 1778, 7, 10, 0, 0, 1778, 132, 1, 0, 0, 0, 1779, 1780, 7, 25, 0, 0, 1780, 1781, 7, 10, 0, 0, 1781, 1782, 7, 16, 0, 0, 1782, 1783, 7, 14, 0, 0, 1783, 1784, 7, 20, 0, 0, 1784, 134, 1, 0, 0, 0, 1785, 1786, 7, 25, 0, 0, 1786, 1787, 7, 19, 0, 0, 1787, 1788, 7, 13, 0, 0, 1788, 136, 1, 0, 0, 0, 1789, 1790, 7, 25, 0, 0, 1790, 1791, 7, 19, 0, 0, 1791, 1792, 7, 13, 0, 0, 1792, 1793, 7, 10, 0, 0, 1793, 1794, 7, 17, 0, 0, 1794, 1795, 7, 23, 0, 0, 1795, 1796, 7, 7, 0, 0, 1796, 138, 1, 0, 0, 0, 1797, 1798, 7, 25, 0, 0, 1798, 1799, 7, 13, 0, 0, 1799, 1800, 7, 19, 0, 0, 1800, 1801, 7, 15, 0, 0, 1801, 140, 1, 0, 0, 0, 1802, 1803, 7, 23, 0, 0, 1803, 1804, 7, 13, 0, 0, 1804, 1805, 7, 5, 0, 0, 1805, 1806, 7, 7, 0, 0, 1806, 1807, 7, 16, 0, 0, 1807, 142, 1, 0, 0, 0, 1808, 1809, 7, 23, 0, 0, 1809, 1810, 7, 13, 0, 0, 1810, 1811, 7, 19, 0, 0, 1811, 1812, 7, 22, 0, 0, 1812, 1813, 7, 24, 0, 0, 1813, 144, 1, 0, 0, 0, 1814, 1815, 7, 20, 0, 0, 1815, 1816, 7, 5, 0, 0, 1816, 1817, 7, 27, 0, 0, 1817, 1818, 7, 17, 0, 0, 1818, 1819, 7, 7, 0, 0, 1819, 1820, 7, 23, 0, 0, 1820, 146, 1, 0, 0, 0, 1821, 1822, 7, 17, 0, 0, 1822, 1823, 7, 7, 0, 0, 1823, 148, 1, 0, 0, 0, 1824, 1825, 7, 17, 0, 0, 1825, 1826, 7, 7, 0, 0, 1826, 1827, 7, 17, 0, 0, 1827, 1828, 7, 16, 0, 0, 1828, 1829, 7, 17, 0, 0, 1829, 1830, 7, 5, 0, 0, 1830, 1831, 7, 6, 0, 0, 1831, 1832, 7, 6, 0, 0, 1832, 1833, 7, 8, 0, 0, 1833, 150, 1, 0, 0, 0, 1834, 1835, 7, 17, 0, 0, 1835, 1836, 7, 7, 0, 0, 1836, 1837, 7, 16, 0, 0, 1837, 1838, 7, 10, 0, 0, 1838, 1839, 7, 13, 0, 0, 1839, 1840, 7, 9, 0, 0, 1840, 1841, 7, 10, 0, 0, 1841, 1842, 7, 14, 0, 0, 1842, 1843, 7, 16, 0, 0, 1843, 152, 1, 0, 0, 0, 1844, 1845, 7, 17, 0, 0, 1845, 1846, 7, 7, 0, 0, 1846, 1847, 7, 16, 0, 0, 1847, 1848, 7, 19, 0, 0, 1848, 154, 1, 0, 0, 0, 1849, 1850, 7, 6, 0, 0, 1850, 1851, 7, 5, 0, 0, 1851, 1852, 7, 16, 0, 0, 1852, 1853, 7, 10, 0, 0, 1853, 1854, 7, 13, 0, 0, 1854, 1855, 7, 5, 0, 0, 1855, 1856, 7, 6, 0, 0, 1856, 156, 1, 0, 0, 0, 1857, 1858, 7, 6, 0, 0, 1858, 1859, 7, 10, 0, 0, 1859, 1860, 7, 5, 0, 0, 1860, 1861, 7, 12, 0, 0, 1861, 1862, 7, 17, 0, 0, 1862, 1863, 7, 7, 0, 0, 1863, 1864, 7, 23, 0, 0, 1864, 158, 1, 0, 0, 0, 1865, 1866, 7, 6, 0, 0, 1866, 1867, 7, 17, 0, 0, 1867, 1868, 7, 15, 0, 0, 1868, 1869, 7, 17, 0, 0, 1869, 1870, 7, 16, 0, 0, 1870, 160, 1, 0, 0, 0, 1871, 1872, 7, 6, 0, 0, 1872, 1873, 7, 19, 0, 0, 1873, 1874, 7, 14, 0, 0, 1874, 1875, 7, 5, 0, 0, 1875, 1876, 7, 6, 0, 0, 1876, 1877, 7, 16, 0, 0, 1877, 1878, 7, 17, 0, 0, 1878, 1879, 7, 15, 0, 0, 1879, 1880, 7, 10, 0, 0, 1880, 162, 1, 0, 0, 0, 1881, 1882, 7, 6, 0, 0, 1882, 1883, 7, 19, 0, 0, 1883, 1884, 7, 14, 0, 0, 1884, 1885, 7, 5, 0, 0, 1885, 1886, 7, 6, 0, 0, 1886, 1887, 7, 16, 0, 0, 1887, 1888, 7, 17, 0, 0, 1888, 1889, 7, 15, 0, 0, 1889, 1890, 7, 10, 0, 0, 1890, 1891, 7, 9, 0, 0, 1891, 1892, 7, 16, 0, 0, 1892, 1893, 7, 5, 0, 0, 1893, 1894, 7, 15, 0, 0, 1894, 1895, 7, 24, 0, 0, 1895, 164, 1, 0, 0, 0, 1896, 1897, 7, 7, 0, 0, 1897, 1898, 7, 19, 0, 0, 1898, 1899, 7, 16, 0, 0, 1899, 166, 1, 0, 0, 0, 1900, 1901, 7, 7, 0, 0, 1901, 1902, 7, 22, 0, 0, 1902, 1903, 7, 6, 0, 0, 1903, 1904, 7, 6, 0, 0, 1904, 168, 1, 0, 0, 0, 1905, 1906, 7, 19, 0, 0, 1906, 1907, 7, 25, 0, 0, 1907, 1908, 7, 25, 0, 0, 1908, 1909, 7, 9, 0, 0, 1909, 1910, 7, 10, 0, 0, 1910, 1911, 7, 16, 0, 0, 1911, 170, 1, 0, 0, 0, 1912, 1913, 7, 19, 0, 0, 1913, 1914, 7, 7, 0, 0, 1914, 172, 1, 0, 0, 0, 1915, 1916, 7, 19, 0, 0, 1916, 1917, 7, 7, 0, 0, 1917, 1918, 7, 6, 0, 0, 1918, 1919, 7, 8, 0, 0, 1919, 174, 1, 0, 0, 0, 1920, 1921, 7, 19, 0, 0, 1921, 1922, 7, 13, 0, 0, 1922, 176, 1, 0, 0, 0, 1923, 1924, 7, 19, 0, 0, 1924, 1925, 7, 13, 0, 0, 1925, 1926, 7, 12, 0, 0, 1926, 1927, 7, 10, 0, 0, 1927, 1928, 7, 13, 0, 0, 1928, 178, 1, 0, 0, 0, 1929, 1930, 7, 24, 0, 0, 1930, 1931, 7, 6, 0, 0, 1931, 1932, 7, 5, 0, 0, 1932, 1933, 7, 14, 0, 0, 1933, 1934, 7, 17, 0, 0, 1934, 1935, 7, 7, 0, 0, 1935, 1936, 7, 23, 0, 0, 1936, 180, 1, 0, 0, 0, 1937, 1938, 7, 24, 0, 0, 1938, 1939, 7, 13, 0, 0, 1939, 1940, 7, 17, 0, 0, 1940, 1941, 7, 15, 0, 0, 1941, 1942, 7, 5, 0, 0, 1942, 1943, 7, 13, 0, 0, 1943, 1944, 7, 8, 0, 0, 1944, 182, 1, 0, 0, 0, 1945, 1946, 7, 13, 0, 0, 1946, 1947, 7, 10, 0, 0, 1947, 1948, 7, 25, 0, 0, 1948, 1949, 7, 10, 0, 0, 1949, 1950, 7, 13, 0, 0, 1950, 1951, 7, 10, 0, 0, 1951, 1952, 7, 7, 0, 0, 1952, 1953, 7, 14, 0, 0, 1953, 1954, 7, 10, 0, 0, 1954, 1955, 7, 9, 0, 0, 1955, 184, 1, 0, 0, 0, 1956, 1957, 7, 13, 0, 0, 1957, 1958, 7, 10, 0, 0, 1958, 1959, 7, 16, 0, 0, 1959, 1960, 7, 22, 0, 0, 1960, 1961, 7, 13, 0, 0, 1961, 1962, 7, 7, 0, 0, 1962, 1963, 7, 17, 0, 0, 1963, 1964, 7, 7, 0, 0, 1964, 1965, 7, 23, 0, 0, 1965, 186, 1, 0, 0, 0, 1966, 1967, 7, 9, 0, 0, 1967, 1968, 7, 10, 0, 0, 1968, 1969, 7, 6, 0, 0, 1969, 1970, 7, 10, 0, 0, 1970, 1971, 7, 14, 0, 0, 1971, 1972, 7, 16, 0, 0, 1972, 188, 1, 0, 0, 0, 1973, 1974, 7, 9, 0, 0, 1974, 1975, 7, 10, 0, 0, 1975, 1976, 7, 9, 0, 0, 1976, 1977, 7, 9, 0, 0, 1977, 1978, 7, 17, 0, 0, 1978, 1979, 7, 19, 0, 0, 1979, 1980, 7, 7, 0, 0, 1980, 1981, 5, 95, 0, 0, 1981, 1982, 7, 22, 0, 0, 1982, 1983, 7, 9, 0, 0, 1983, 1984, 7, 10, 0, 0, 1984, 1985, 7, 13, 0, 0, 1985, 190, 1, 0, 0, 0, 1986, 1987, 7, 9, 0, 0, 1987, 1988, 7, 19, 0, 0, 1988, 1989, 7, 15, 0, 0, 1989, 1990, 7, 10, 0, 0, 1990, 192, 1, 0, 0, 0, 1991, 1992, 7, 9, 0, 0, 1992, 1993, 7, 8, 0, 0, 1993, 1994, 7, 15, 0, 0, 1994, 1995, 7, 15, 0, 0, 1995, 1996, 7, 10, 0, 0, 1996, 1997, 7, 16, 0, 0, 1997, 1998, 7, 13, 0, 0, 1998, 1999, 7, 17, 0, 0, 1999, 2000, 7, 14, 0, 0, 2000, 194, 1, 0, 0, 0, 2001, 2002, 7, 16, 0, 0, 2002, 2003, 7, 5, 0, 0, 2003, 2004, 7, 18, 0, 0, 2004, 2005, 7, 6, 0, 0, 2005, 2006, 7, 10, 0, 0, 2006, 196, 1, 0, 0, 0, 2007, 2008, 7, 11, 0, 0, 2008, 2009, 7, 16, 0, 0, 2009, 2010, 7, 5, 0, 0, 2010, 2011, 7, 18, 0, 0, 2011, 2012, 7, 6, 0, 0, 2012, 2013, 7, 10, 0, 0, 2013, 198, 1, 0, 0, 0, 2014, 2015, 7, 16, 0, 0, 2015, 2016, 7, 20, 0, 0, 2016, 2017, 7, 10, 0, 0, 2017, 2018, 7, 7, 0, 0, 2018, 200, 1, 0, 0, 0, 2019, 2020, 7, 16, 0, 0, 2020, 2021, 7, 19, 0, 0, 2021, 202, 1, 0, 0, 0, 2022, 2023, 7, 12, 0, 0, 2023, 2024, 7, 10, 0, 0, 2024, 2025, 7, 9, 0, 0, 2025, 2026, 7, 14, 0, 0, 2026, 2027, 7, 13, 0, 0, 2027, 2028, 7, 17, 0, 0, 2028, 2029, 7, 18, 0, 0, 2029, 2030, 7, 10, 0, 0, 2030, 204, 1, 0, 0, 0, 2031, 2032, 7, 16, 0, 0, 2032, 2033, 7, 19, 0, 0, 2033, 2034, 7, 24, 0, 0, 2034, 2035, 7, 17, 0, 0, 2035, 2036, 7, 14, 0, 0, 2036, 206, 1, 0, 0, 0, 2037, 2038, 7, 16, 0, 0, 2038, 2039, 7, 19, 0, 0, 2039, 2040, 7, 24, 0, 0, 2040, 2041, 7, 17, 0, 0, 2041, 2042, 7, 14, 0, 0, 2042, 2043, 7, 9, 0, 0, 2043, 208, 1, 0, 0, 0, 2044, 2045, 7, 9, 0, 0, 2045, 2046, 7, 16, 0, 0, 2046, 2047, 7, 13, 0, 0, 2047, 2048, 7, 10, 0, 0, 2048, 2049, 7, 5, 0, 0, 2049, 2050, 7, 15, 0, 0, 2050, 210, 1, 0, 0, 0, 2051, 2052, 7, 11, 0, 0, 2052, 2053, 7, 27, 0, 0, 2053, 2054, 7, 17, 0, 0, 2054, 2055, 7, 10, 0, 0, 2055, 2056, 7, 28, 0, 0, 2056, 212, 1, 0, 0, 0, 2057, 2058, 7, 11, 0, 0, 2058, 2059, 7, 27, 0, 0, 2059, 2060, 7, 17, 0, 0, 2060, 2061, 7, 10, 0, 0, 2061, 2062, 7, 28, 0, 0, 2062, 2063, 7, 9, 0, 0, 2063, 214, 1, 0, 0, 0, 2064, 2065, 7, 16, 0, 0, 2065, 2066, 7, 13, 0, 0, 2066, 2067, 7, 5, 0, 0, 2067, 2068, 7, 17, 0, 0, 2068, 2069, 7, 6, 0, 0, 2069, 2070, 7, 17, 0, 0, 2070, 2071, 7, 7, 0, 0, 2071, 2072, 7, 23, 0, 0, 2072, 216, 1, 0, 0, 0, 2073, 2074, 7, 16, 0, 0, 2074, 2075, 7, 13, 0, 0, 2075, 2076, 7, 22, 0, 0, 2076, 2077, 7, 10, 0, 0, 2077, 218, 1, 0, 0, 0, 2078, 2079, 7, 22, 0, 0, 2079, 2080, 7, 7, 0, 0, 2080, 2081, 7, 17, 0, 0, 2081, 2082, 7, 19, 0, 0, 2082, 2083, 7, 7, 0, 0, 2083, 220, 1, 0, 0, 0, 2084, 2085, 7, 22, 0, 0, 2085, 2086, 7, 7, 0, 0, 2086, 2087, 7, 17, 0, 0, 2087, 2088, 7, 29, 0, 0, 2088, 2089, 7, 22, 0, 0, 2089, 2090, 7, 10, 0, 0, 2090, 222, 1, 0, 0, 0, 2091, 2092, 7, 22, 0, 0, 2092, 2093, 7, 9, 0, 0, 2093, 2094, 7, 10, 0, 0, 2094, 2095, 7, 13, 0, 0, 2095, 224, 1, 0, 0, 0, 2096, 2097, 7, 22, 0, 0, 2097, 2098, 7, 9, 0, 0, 2098, 2099, 7, 17, 0, 0, 2099, 2100, 7, 7, 0, 0, 2100, 2101, 7, 23, 0, 0, 2101, 226, 1, 0, 0, 0, 2102, 2103, 7, 27, 0, 0, 2103, 2104, 7, 5, 0, 0, 2104, 2105, 7, 13, 0, 0, 2105, 2106, 7, 17, 0, 0, 2106, 2107, 7, 5, 0, 0, 2107, 2108, 7, 12, 0, 0, 2108, 2109, 7, 17, 0, 0, 2109, 2110, 7, 14, 0, 0, 2110, 228, 1, 0, 0, 0, 2111, 2112, 7, 28, 0, 0, 2112, 2113, 7, 20, 0, 0, 2113, 2114, 7, 10, 0, 0, 2114, 2115, 7, 7, 0, 0, 2115, 230, 1, 0, 0, 0, 2116, 2117, 7, 28, 0, 0, 2117, 2118, 7, 20, 0, 0, 2118, 2119, 7, 10, 0, 0, 2119, 2120, 7, 13, 0, 0, 2120, 2121, 7, 10, 0, 0, 2121, 232, 1, 0, 0, 0, 2122, 2123, 7, 28, 0, 0, 2123, 2124, 7, 17, 0, 0, 2124, 2125, 7, 7, 0, 0, 2125, 2126, 7, 12, 0, 0, 2126, 2127, 7, 19, 0, 0, 2127, 2128, 7, 28, 0, 0, 2128, 234, 1, 0, 0, 0, 2129, 2130, 7, 28, 0, 0, 2130, 2131, 7, 17, 0, 0, 2131, 2132, 7, 16, 0, 0, 2132, 2133, 7, 20, 0, 0, 2133, 236, 1, 0, 0, 0, 2134, 2135, 7, 5, 0, 0, 2135, 2136, 7, 22, 0, 0, 2136, 2137, 7, 16, 0, 0, 2137, 2138, 7, 20, 0, 0, 2138, 2139, 7, 19, 0, 0, 2139, 2140, 7, 13, 0, 0, 2140, 2141, 7, 17, 0, 0, 2141, 2142, 7, 11, 0, 0, 2142, 2143, 7, 5, 0, 0, 2143, 2144, 7, 16, 0, 0, 2144, 2145, 7, 17, 0, 0, 2145, 2146, 7, 19, 0, 0, 2146, 2147, 7, 7, 0, 0, 2147, 238, 1, 0, 0, 0, 2148, 2149, 7, 18, 0, 0, 2149, 2150, 7, 17, 0, 0, 2150, 2151, 7, 7, 0, 0, 2151, 2152, 7, 5, 0, 0, 2152, 2153, 7, 13, 0, 0, 2153, 2154, 7, 8, 0, 0, 2154, 240, 1, 0, 0, 0, 2155, 2156, 7, 14, 0, 0, 2156, 2157, 7, 19, 0, 0, 2157, 2158, 7, 6, 0, 0, 2158, 2159, 7, 6, 0, 0, 2159, 2160, 7, 5, 0, 0, 2160, 2161, 7, 16, 0, 0, 2161, 2162, 7, 17, 0, 0, 2162, 2163, 7, 19, 0, 0, 2163, 2164, 7, 7, 0, 0, 2164, 242, 1, 0, 0, 0, 2165, 2166, 7, 14, 0, 0, 2166, 2167, 7, 19, 0, 0, 2167, 2168, 7, 7, 0, 0, 2168, 2169, 7, 14, 0, 0, 2169, 2170, 7, 22, 0, 0, 2170, 2171, 7, 13, 0, 0, 2171, 2172, 7, 13, 0, 0, 2172, 2173, 7, 10, 0, 0, 2173, 2174, 7, 7, 0, 0, 2174, 2175, 7, 16, 0, 0, 2175, 2176, 7, 6, 0, 0, 2176, 2177, 7, 8, 0, 0, 2177, 244, 1, 0, 0, 0, 2178, 2179, 7, 14, 0, 0, 2179, 2180, 7, 13, 0, 0, 2180, 2181, 7, 19, 0, 0, 2181, 2182, 7, 9, 0, 0, 2182, 2183, 7, 9, 0, 0, 2183, 246, 1, 0, 0, 0, 2184, 2185, 7, 14, 0, 0, 2185, 2186, 7, 22, 0, 0, 2186, 2187, 7, 13, 0, 0, 2187, 2188, 7, 13, 0, 0, 2188, 2189, 7, 10, 0, 0, 2189, 2190, 7, 7, 0, 0, 2190, 2191, 7, 16, 0, 0, 2191, 2192, 5, 95, 0, 0, 2192, 2193, 7, 9, 0, 0, 2193, 2194, 7, 14, 0, 0, 2194, 2195, 7, 20, 0, 0, 2195, 2196, 7, 10, 0, 0, 2196, 2197, 7, 15, 0, 0, 2197, 2198, 7, 5, 0, 0, 2198, 248, 1, 0, 0, 0, 2199, 2200, 7, 25, 0, 0, 2200, 2201, 7, 13, 0, 0, 2201, 2202, 7, 10, 0, 0, 2202, 2203, 7, 10, 0, 0, 2203, 2204, 7, 11, 0, 0, 2204, 2205, 7, 10, 0, 0, 2205, 250, 1, 0, 0, 0, 2206, 2207, 7, 25, 0, 0, 2207, 2208, 7, 22, 0, 0, 2208, 2209, 7, 6, 0, 0, 2209, 2210, 7, 6, 0, 0, 2210, 252, 1, 0, 0, 0, 2211, 2212, 7, 17, 0, 0, 2212, 2213, 7, 6, 0, 0, 2213, 2214, 7, 17, 0, 0, 2214, 2215, 7, 21, 0, 0, 2215, 2216, 7, 10, 0, 0, 2216, 254, 1, 0, 0, 0, 2217, 2218, 7, 17, 0, 0, 2218, 2219, 7, 7, 0, 0, 2219, 2220, 7, 7, 0, 0, 2220, 2221, 7, 10, 0, 0, 2221, 2222, 7, 13, 0, 0, 2222, 256, 1, 0, 0, 0, 2223, 2224, 7, 17, 0, 0, 2224, 2225, 7, 9, 0, 0, 2225, 258, 1, 0, 0, 0, 2226, 2227, 7, 17, 0, 0, 2227, 2228, 7, 9, 0, 0, 2228, 2229, 7, 7, 0, 0, 2229, 2230, 7, 22, 0, 0, 2230, 2231, 7, 6, 0, 0, 2231, 2232, 7, 6, 0, 0, 2232, 260, 1, 0, 0, 0, 2233, 2234, 7, 30, 0, 0, 2234, 2235, 7, 19, 0, 0, 2235, 2236, 7, 17, 0, 0, 2236, 2237, 7, 7, 0, 0, 2237, 262, 1, 0, 0, 0, 2238, 2239, 7, 6, 0, 0, 2239, 2240, 7, 10, 0, 0, 2240, 2241, 7, 25, 0, 0, 2241, 2242, 7, 16, 0, 0, 2242, 264, 1, 0, 0, 0, 2243, 2244, 7, 6, 0, 0, 2244, 2245, 7, 17, 0, 0, 2245, 2246, 7, 21, 0, 0, 2246, 2247, 7, 10, 0, 0, 2247, 266, 1, 0, 0, 0, 2248, 2249, 7, 7, 0, 0, 2249, 2250, 7, 5, 0, 0, 2250, 2251, 7, 16, 0, 0, 2251, 2252, 7, 22, 0, 0, 2252, 2253, 7, 13, 0, 0, 2253, 2254, 7, 5, 0, 0, 2254, 2255, 7, 6, 0, 0, 2255, 268, 1, 0, 0, 0, 2256, 2257, 7, 7, 0, 0, 2257, 2258, 7, 19, 0, 0, 2258, 2259, 7, 16, 0, 0, 2259, 2260, 7, 7, 0, 0, 2260, 2261, 7, 22, 0, 0, 2261, 2262, 7, 6, 0, 0, 2262, 2263, 7, 6, 0, 0, 2263, 270, 1, 0, 0, 0, 2264, 2265, 7, 19, 0, 0, 2265, 2266, 7, 22, 0, 0, 2266, 2267, 7, 16, 0, 0, 2267, 2268, 7, 10, 0, 0, 2268, 2269, 7, 13, 0, 0, 2269, 272, 1, 0, 0, 0, 2270, 2271, 7, 19, 0, 0, 2271, 2272, 7, 27, 0, 0, 2272, 2273, 7, 10, 0, 0, 2273, 2274, 7, 13, 0, 0, 2274, 274, 1, 0, 0, 0, 2275, 2276, 7, 19, 0, 0, 2276, 2277, 7, 27, 0, 0, 2277, 2278, 7, 10, 0, 0, 2278, 2279, 7, 13, 0, 0, 2279, 2280, 7, 6, 0, 0, 2280, 2281, 7, 5, 0, 0, 2281, 2282, 7, 24, 0, 0, 2282, 2283, 7, 9, 0, 0, 2283, 276, 1, 0, 0, 0, 2284, 2285, 7, 13, 0, 0, 2285, 2286, 7, 17, 0, 0, 2286, 2287, 7, 23, 0, 0, 2287, 2288, 7, 20, 0, 0, 2288, 2289, 7, 16, 0, 0, 2289, 278, 1, 0, 0, 0, 2290, 2291, 7, 9, 0, 0, 2291, 2292, 7, 17, 0, 0, 2292, 2293, 7, 15, 0, 0, 2293, 2294, 7, 17, 0, 0, 2294, 2295, 7, 6, 0, 0, 2295, 2296, 7, 5, 0, 0, 2296, 2297, 7, 13, 0, 0, 2297, 280, 1, 0, 0, 0, 2298, 2299, 7, 27, 0, 0, 2299, 2300, 7, 10, 0, 0, 2300, 2301, 7, 13, 0, 0, 2301, 2302, 7, 18, 0, 0, 2302, 2303, 7, 19, 0, 0, 2303, 2304, 7, 9, 0, 0, 2304, 2305, 7, 10, 0, 0, 2305, 282, 1, 0, 0, 0, 2306, 2307, 7, 5, 0, 0, 2307, 2308, 7, 18, 0, 0, 2308, 2309, 7, 19, 0, 0, 2309, 2310, 7, 13, 0, 0, 2310, 2311, 7, 16, 0, 0, 2311, 284, 1, 0, 0, 0, 2312, 2313, 7, 5, 0, 0, 2313, 2314, 7, 18, 0, 0, 2314, 2315, 7, 9, 0, 0, 2315, 2316, 7, 19, 0, 0, 2316, 2317, 7, 6, 0, 0, 2317, 2318, 7, 22, 0, 0, 2318, 2319, 7, 16, 0, 0, 2319, 2320, 7, 10, 0, 0, 2320, 286, 1, 0, 0, 0, 2321, 2322, 7, 5, 0, 0, 2322, 2323, 7, 14, 0, 0, 2323, 2324, 7, 14, 0, 0, 2324, 2325, 7, 10, 0, 0, 2325, 2326, 7, 9, 0, 0, 2326, 2327, 7, 9, 0, 0, 2327, 288, 1, 0, 0, 0, 2328, 2329, 7, 5, 0, 0, 2329, 2330, 7, 14, 0, 0, 2330, 2331, 7, 16, 0, 0, 2331, 2332, 7, 17, 0, 0, 2332, 2333, 7, 19, 0, 0, 2333, 2334, 7, 7, 0, 0, 2334, 290, 1, 0, 0, 0, 2335, 2336, 7, 5, 0, 0, 2336, 2337, 7, 12, 0, 0, 2337, 2338, 7, 12, 0, 0, 2338, 292, 1, 0, 0, 0, 2339, 2340, 7, 5, 0, 0, 2340, 2341, 7, 12, 0, 0, 2341, 2342, 7, 15, 0, 0, 2342, 2343, 7, 17, 0, 0, 2343, 2344, 7, 7, 0, 0, 2344, 294, 1, 0, 0, 0, 2345, 2346, 7, 5, 0, 0, 2346, 2347, 7, 25, 0, 0, 2347, 2348, 7, 16, 0, 0, 2348, 2349, 7, 10, 0, 0, 2349, 2350, 7, 13, 0, 0, 2350, 296, 1, 0, 0, 0, 2351, 2352, 7, 5, 0, 0, 2352, 2353, 7, 23, 0, 0, 2353, 2354, 7, 23, 0, 0, 2354, 2355, 7, 13, 0, 0, 2355, 2356, 7, 10, 0, 0, 2356, 2357, 7, 23, 0, 0, 2357, 2358, 7, 5, 0, 0, 2358, 2359, 7, 16, 0, 0, 2359, 2360, 7, 10, 0, 0, 2360, 298, 1, 0, 0, 0, 2361, 2362, 7, 5, 0, 0, 2362, 2363, 7, 6, 0, 0, 2363, 2364, 7, 9, 0, 0, 2364, 2365, 7, 19, 0, 0, 2365, 300, 1, 0, 0, 0, 2366, 2367, 7, 5, 0, 0, 2367, 2368, 7, 6, 0, 0, 2368, 2369, 7, 16, 0, 0, 2369, 2370, 7, 10, 0, 0, 2370, 2371, 7, 13, 0, 0, 2371, 302, 1, 0, 0, 0, 2372, 2373, 7, 5, 0, 0, 2373, 2374, 7, 6, 0, 0, 2374, 2375, 7, 28, 0, 0, 2375, 2376, 7, 5, 0, 0, 2376, 2377, 7, 8, 0, 0, 2377, 2378, 7, 9, 0, 0, 2378, 304, 1, 0, 0, 0, 2379, 2380, 7, 5, 0, 0, 2380, 2381, 7, 9, 0, 0, 2381, 2382, 7, 9, 0, 0, 2382, 2383, 7, 10, 0, 0, 2383, 2384, 7, 13, 0, 0, 2384, 2385, 7, 16, 0, 0, 2385, 2386, 7, 17, 0, 0, 2386, 2387, 7, 19, 0, 0, 2387, 2388, 7, 7, 0, 0, 2388, 306, 1, 0, 0, 0, 2389, 2390, 7, 5, 0, 0, 2390, 2391, 7, 9, 0, 0, 2391, 2392, 7, 9, 0, 0, 2392, 2393, 7, 17, 0, 0, 2393, 2394, 7, 23, 0, 0, 2394, 2395, 7, 7, 0, 0, 2395, 2396, 7, 15, 0, 0, 2396, 2397, 7, 10, 0, 0, 2397, 2398, 7, 7, 0, 0, 2398, 2399, 7, 16, 0, 0, 2399, 308, 1, 0, 0, 0, 2400, 2401, 7, 5, 0, 0, 2401, 2402, 7, 16, 0, 0, 2402, 310, 1, 0, 0, 0, 2403, 2404, 7, 5, 0, 0, 2404, 2405, 7, 16, 0, 0, 2405, 2406, 7, 16, 0, 0, 2406, 2407, 7, 13, 0, 0, 2407, 2408, 7, 17, 0, 0, 2408, 2409, 7, 18, 0, 0, 2409, 2410, 7, 22, 0, 0, 2410, 2411, 7, 16, 0, 0, 2411, 2412, 7, 10, 0, 0, 2412, 312, 1, 0, 0, 0, 2413, 2414, 7, 18, 0, 0, 2414, 2415, 7, 5, 0, 0, 2415, 2416, 7, 14, 0, 0, 2416, 2417, 7, 21, 0, 0, 2417, 2418, 7, 28, 0, 0, 2418, 2419, 7, 5, 0, 0, 2419, 2420, 7, 13, 0, 0, 2420, 2421, 7, 12, 0, 0, 2421, 314, 1, 0, 0, 0, 2422, 2423, 7, 18, 0, 0, 2423, 2424, 7, 10, 0, 0, 2424, 2425, 7, 25, 0, 0, 2425, 2426, 7, 19, 0, 0, 2426, 2427, 7, 13, 0, 0, 2427, 2428, 7, 10, 0, 0, 2428, 316, 1, 0, 0, 0, 2429, 2430, 7, 18, 0, 0, 2430, 2431, 7, 10, 0, 0, 2431, 2432, 7, 23, 0, 0, 2432, 2433, 7, 17, 0, 0, 2433, 2434, 7, 7, 0, 0, 2434, 318, 1, 0, 0, 0, 2435, 2436, 7, 18, 0, 0, 2436, 2437, 7, 8, 0, 0, 2437, 320, 1, 0, 0, 0, 2438, 2439, 7, 14, 0, 0, 2439, 2440, 7, 5, 0, 0, 2440, 2441, 7, 14, 0, 0, 2441, 2442, 7, 20, 0, 0, 2442, 2443, 7, 10, 0, 0, 2443, 322, 1, 0, 0, 0, 2444, 2445, 7, 14, 0, 0, 2445, 2446, 7, 5, 0, 0, 2446, 2447, 7, 6, 0, 0, 2447, 2448, 7, 6, 0, 0, 2448, 2449, 7, 10, 0, 0, 2449, 2450, 7, 12, 0, 0, 2450, 324, 1, 0, 0, 0, 2451, 2452, 7, 14, 0, 0, 2452, 2453, 7, 5, 0, 0, 2453, 2454, 7, 9, 0, 0, 2454, 2455, 7, 14, 0, 0, 2455, 2456, 7, 5, 0, 0, 2456, 2457, 7, 12, 0, 0, 2457, 2458, 7, 10, 0, 0, 2458, 326, 1, 0, 0, 0, 2459, 2460, 7, 14, 0, 0, 2460, 2461, 7, 5, 0, 0, 2461, 2462, 7, 9, 0, 0, 2462, 2463, 7, 14, 0, 0, 2463, 2464, 7, 5, 0, 0, 2464, 2465, 7, 12, 0, 0, 2465, 2466, 7, 10, 0, 0, 2466, 2467, 7, 12, 0, 0, 2467, 328, 1, 0, 0, 0, 2468, 2469, 7, 14, 0, 0, 2469, 2470, 7, 5, 0, 0, 2470, 2471, 7, 16, 0, 0, 2471, 2472, 7, 5, 0, 0, 2472, 2473, 7, 6, 0, 0, 2473, 2474, 7, 19, 0, 0, 2474, 2475, 7, 23, 0, 0, 2475, 330, 1, 0, 0, 0, 2476, 2477, 7, 14, 0, 0, 2477, 2478, 7, 20, 0, 0, 2478, 2479, 7, 5, 0, 0, 2479, 2480, 7, 17, 0, 0, 2480, 2481, 7, 7, 0, 0, 2481, 332, 1, 0, 0, 0, 2482, 2483, 7, 14, 0, 0, 2483, 2484, 7, 20, 0, 0, 2484, 2485, 7, 5, 0, 0, 2485, 2486, 7, 13, 0, 0, 2486, 2487, 7, 5, 0, 0, 2487, 2488, 7, 14, 0, 0, 2488, 2489, 7, 16, 0, 0, 2489, 2490, 7, 10, 0, 0, 2490, 2491, 7, 13, 0, 0, 2491, 2492, 7, 17, 0, 0, 2492, 2493, 7, 9, 0, 0, 2493, 2494, 7, 16, 0, 0, 2494, 2495, 7, 17, 0, 0, 2495, 2496, 7, 14, 0, 0, 2496, 2497, 7, 9, 0, 0, 2497, 334, 1, 0, 0, 0, 2498, 2499, 7, 14, 0, 0, 2499, 2500, 7, 20, 0, 0, 2500, 2501, 7, 10, 0, 0, 2501, 2502, 7, 14, 0, 0, 2502, 2503, 7, 21, 0, 0, 2503, 2504, 7, 24, 0, 0, 2504, 2505, 7, 19, 0, 0, 2505, 2506, 7, 17, 0, 0, 2506, 2507, 7, 7, 0, 0, 2507, 2508, 7, 16, 0, 0, 2508, 336, 1, 0, 0, 0, 2509, 2510, 7, 14, 0, 0, 2510, 2511, 7, 6, 0, 0, 2511, 2512, 7, 5, 0, 0, 2512, 2513, 7, 9, 0, 0, 2513, 2514, 7, 9, 0, 0, 2514, 338, 1, 0, 0, 0, 2515, 2516, 7, 14, 0, 0, 2516, 2517, 7, 6, 0, 0, 2517, 2518, 7, 19, 0, 0, 2518, 2519, 7, 9, 0, 0, 2519, 2520, 7, 10, 0, 0, 2520, 340, 1, 0, 0, 0, 2521, 2522, 7, 14, 0, 0, 2522, 2523, 7, 6, 0, 0, 2523, 2524, 7, 22, 0, 0, 2524, 2525, 7, 9, 0, 0, 2525, 2526, 7, 16, 0, 0, 2526, 2527, 7, 10, 0, 0, 2527, 2528, 7, 13, 0, 0, 2528, 342, 1, 0, 0, 0, 2529, 2530, 7, 14, 0, 0, 2530, 2531, 7, 19, 0, 0, 2531, 2532, 7, 15, 0, 0, 2532, 2533, 7, 15, 0, 0, 2533, 2534, 7, 10, 0, 0, 2534, 2535, 7, 7, 0, 0, 2535, 2536, 7, 16, 0, 0, 2536, 344, 1, 0, 0, 0, 2537, 2538, 7, 14, 0, 0, 2538, 2539, 7, 19, 0, 0, 2539, 2540, 7, 15, 0, 0, 2540, 2541, 7, 15, 0, 0, 2541, 2542, 7, 10, 0, 0, 2542, 2543, 7, 7, 0, 0, 2543, 2544, 7, 16, 0, 0, 2544, 2545, 7, 9, 0, 0, 2545, 346, 1, 0, 0, 0, 2546, 2547, 7, 14, 0, 0, 2547, 2548, 7, 19, 0, 0, 2548, 2549, 7, 15, 0, 0, 2549, 2550, 7, 15, 0, 0, 2550, 2551, 7, 17, 0, 0, 2551, 2552, 7, 16, 0, 0, 2552, 348, 1, 0, 0, 0, 2553, 2554, 7, 14, 0, 0, 2554, 2555, 7, 19, 0, 0, 2555, 2556, 7, 15, 0, 0, 2556, 2557, 7, 15, 0, 0, 2557, 2558, 7, 17, 0, 0, 2558, 2559, 7, 16, 0, 0, 2559, 2560, 7, 16, 0, 0, 2560, 2561, 7, 10, 0, 0, 2561, 2562, 7, 12, 0, 0, 2562, 350, 1, 0, 0, 0, 2563, 2564, 7, 14, 0, 0, 2564, 2565, 7, 19, 0, 0, 2565, 2566, 7, 7, 0, 0, 2566, 2567, 7, 25, 0, 0, 2567, 2568, 7, 17, 0, 0, 2568, 2569, 7, 23, 0, 0, 2569, 2570, 7, 22, 0, 0, 2570, 2571, 7, 13, 0, 0, 2571, 2572, 7, 5, 0, 0, 2572, 2573, 7, 16, 0, 0, 2573, 2574, 7, 17, 0, 0, 2574, 2575, 7, 19, 0, 0, 2575, 2576, 7, 7, 0, 0, 2576, 352, 1, 0, 0, 0, 2577, 2578, 7, 14, 0, 0, 2578, 2579, 7, 19, 0, 0, 2579, 2580, 7, 7, 0, 0, 2580, 2581, 7, 7, 0, 0, 2581, 2582, 7, 10, 0, 0, 2582, 2583, 7, 14, 0, 0, 2583, 2584, 7, 16, 0, 0, 2584, 2585, 7, 17, 0, 0, 2585, 2586, 7, 19, 0, 0, 2586, 2587, 7, 7, 0, 0, 2587, 354, 1, 0, 0, 0, 2588, 2589, 7, 14, 0, 0, 2589, 2590, 7, 19, 0, 0, 2590, 2591, 7, 7, 0, 0, 2591, 2592, 7, 9, 0, 0, 2592, 2593, 7, 16, 0, 0, 2593, 2594, 7, 13, 0, 0, 2594, 2595, 7, 5, 0, 0, 2595, 2596, 7, 17, 0, 0, 2596, 2597, 7, 7, 0, 0, 2597, 2598, 7, 16, 0, 0, 2598, 2599, 7, 9, 0, 0, 2599, 356, 1, 0, 0, 0, 2600, 2601, 7, 14, 0, 0, 2601, 2602, 7, 19, 0, 0, 2602, 2603, 7, 7, 0, 0, 2603, 2604, 7, 16, 0, 0, 2604, 2605, 7, 10, 0, 0, 2605, 2606, 7, 7, 0, 0, 2606, 2607, 7, 16, 0, 0, 2607, 358, 1, 0, 0, 0, 2608, 2609, 7, 14, 0, 0, 2609, 2610, 7, 19, 0, 0, 2610, 2611, 7, 7, 0, 0, 2611, 2612, 7, 16, 0, 0, 2612, 2613, 7, 17, 0, 0, 2613, 2614, 7, 7, 0, 0, 2614, 2615, 7, 22, 0, 0, 2615, 2616, 7, 10, 0, 0, 2616, 360, 1, 0, 0, 0, 2617, 2618, 7, 14, 0, 0, 2618, 2619, 7, 19, 0, 0, 2619, 2620, 7, 7, 0, 0, 2620, 2621, 7, 27, 0, 0, 2621, 2622, 7, 10, 0, 0, 2622, 2623, 7, 13, 0, 0, 2623, 2624, 7, 9, 0, 0, 2624, 2625, 7, 17, 0, 0, 2625, 2626, 7, 19, 0, 0, 2626, 2627, 7, 7, 0, 0, 2627, 362, 1, 0, 0, 0, 2628, 2629, 7, 14, 0, 0, 2629, 2630, 7, 19, 0, 0, 2630, 2631, 7, 24, 0, 0, 2631, 2632, 7, 8, 0, 0, 2632, 364, 1, 0, 0, 0, 2633, 2634, 7, 14, 0, 0, 2634, 2635, 7, 19, 0, 0, 2635, 2636, 7, 9, 0, 0, 2636, 2637, 7, 16, 0, 0, 2637, 366, 1, 0, 0, 0, 2638, 2639, 7, 14, 0, 0, 2639, 2640, 7, 9, 0, 0, 2640, 2641, 7, 27, 0, 0, 2641, 368, 1, 0, 0, 0, 2642, 2643, 7, 14, 0, 0, 2643, 2644, 7, 22, 0, 0, 2644, 2645, 7, 13, 0, 0, 2645, 2646, 7, 9, 0, 0, 2646, 2647, 7, 19, 0, 0, 2647, 2648, 7, 13, 0, 0, 2648, 370, 1, 0, 0, 0, 2649, 2650, 7, 14, 0, 0, 2650, 2651, 7, 8, 0, 0, 2651, 2652, 7, 14, 0, 0, 2652, 2653, 7, 6, 0, 0, 2653, 2654, 7, 10, 0, 0, 2654, 372, 1, 0, 0, 0, 2655, 2656, 7, 12, 0, 0, 2656, 2657, 7, 5, 0, 0, 2657, 2658, 7, 16, 0, 0, 2658, 2659, 7, 5, 0, 0, 2659, 374, 1, 0, 0, 0, 2660, 2661, 7, 12, 0, 0, 2661, 2662, 7, 5, 0, 0, 2662, 2663, 7, 16, 0, 0, 2663, 2664, 7, 5, 0, 0, 2664, 2665, 7, 18, 0, 0, 2665, 2666, 7, 5, 0, 0, 2666, 2667, 7, 9, 0, 0, 2667, 2668, 7, 10, 0, 0, 2668, 376, 1, 0, 0, 0, 2669, 2670, 7, 12, 0, 0, 2670, 2671, 7, 5, 0, 0, 2671, 2672, 7, 8, 0, 0, 2672, 378, 1, 0, 0, 0, 2673, 2674, 7, 12, 0, 0, 2674, 2675, 7, 10, 0, 0, 2675, 2676, 7, 5, 0, 0, 2676, 2677, 7, 6, 0, 0, 2677, 2678, 7, 6, 0, 0, 2678, 2679, 7, 19, 0, 0, 2679, 2680, 7, 14, 0, 0, 2680, 2681, 7, 5, 0, 0, 2681, 2682, 7, 16, 0, 0, 2682, 2683, 7, 10, 0, 0, 2683, 380, 1, 0, 0, 0, 2684, 2685, 7, 12, 0, 0, 2685, 2686, 7, 10, 0, 0, 2686, 2687, 7, 14, 0, 0, 2687, 2688, 7, 6, 0, 0, 2688, 2689, 7, 5, 0, 0, 2689, 2690, 7, 13, 0, 0, 2690, 2691, 7, 10, 0, 0, 2691, 382, 1, 0, 0, 0, 2692, 2693, 7, 12, 0, 0, 2693, 2694, 7, 10, 0, 0, 2694, 2695, 7, 25, 0, 0, 2695, 2696, 7, 5, 0, 0, 2696, 2697, 7, 22, 0, 0, 2697, 2698, 7, 6, 0, 0, 2698, 2699, 7, 16, 0, 0, 2699, 2700, 7, 9, 0, 0, 2700, 384, 1, 0, 0, 0, 2701, 2702, 7, 12, 0, 0, 2702, 2703, 7, 10, 0, 0, 2703, 2704, 7, 25, 0, 0, 2704, 2705, 7, 10, 0, 0, 2705, 2706, 7, 13, 0, 0, 2706, 2707, 7, 13, 0, 0, 2707, 2708, 7, 10, 0, 0, 2708, 2709, 7, 12, 0, 0, 2709, 386, 1, 0, 0, 0, 2710, 2711, 7, 12, 0, 0, 2711, 2712, 7, 10, 0, 0, 2712, 2713, 7, 25, 0, 0, 2713, 2714, 7, 17, 0, 0, 2714, 2715, 7, 7, 0, 0, 2715, 2716, 7, 10, 0, 0, 2716, 2717, 7, 13, 0, 0, 2717, 388, 1, 0, 0, 0, 2718, 2719, 7, 12, 0, 0, 2719, 2720, 7, 10, 0, 0, 2720, 2721, 7, 6, 0, 0, 2721, 2722, 7, 10, 0, 0, 2722, 2723, 7, 16, 0, 0, 2723, 2724, 7, 10, 0, 0, 2724, 390, 1, 0, 0, 0, 2725, 2726, 7, 12, 0, 0, 2726, 2727, 7, 10, 0, 0, 2727, 2728, 7, 6, 0, 0, 2728, 2729, 7, 17, 0, 0, 2729, 2730, 7, 15, 0, 0, 2730, 2731, 7, 17, 0, 0, 2731, 2732, 7, 16, 0, 0, 2732, 2733, 7, 10, 0, 0, 2733, 2734, 7, 13, 0, 0, 2734, 392, 1, 0, 0, 0, 2735, 2736, 7, 12, 0, 0, 2736, 2737, 7, 10, 0, 0, 2737, 2738, 7, 6, 0, 0, 2738, 2739, 7, 17, 0, 0, 2739, 2740, 7, 15, 0, 0, 2740, 2741, 7, 17, 0, 0, 2741, 2742, 7, 16, 0, 0, 2742, 2743, 7, 10, 0, 0, 2743, 2744, 7, 13, 0, 0, 2744, 2745, 7, 9, 0, 0, 2745, 394, 1, 0, 0, 0, 2746, 2747, 7, 12, 0, 0, 2747, 2748, 7, 17, 0, 0, 2748, 2749, 7, 14, 0, 0, 2749, 2750, 7, 16, 0, 0, 2750, 2751, 7, 17, 0, 0, 2751, 2752, 7, 19, 0, 0, 2752, 2753, 7, 7, 0, 0, 2753, 2754, 7, 5, 0, 0, 2754, 2755, 7, 13, 0, 0, 2755, 2756, 7, 8, 0, 0, 2756, 396, 1, 0, 0, 0, 2757, 2758, 7, 12, 0, 0, 2758, 2759, 7, 17, 0, 0, 2759, 2760, 7, 9, 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, 398, 1, 0, 0, 0, 2765, 2766, 7, 12, 0, 0, 2766, 2767, 7, 17, 0, 0, 2767, 2768, 7, 9, 0, 0, 2768, 2769, 7, 14, 0, 0, 2769, 2770, 7, 5, 0, 0, 2770, 2771, 7, 13, 0, 0, 2771, 2772, 7, 12, 0, 0, 2772, 400, 1, 0, 0, 0, 2773, 2774, 7, 12, 0, 0, 2774, 2775, 7, 19, 0, 0, 2775, 2776, 7, 14, 0, 0, 2776, 2777, 7, 22, 0, 0, 2777, 2778, 7, 15, 0, 0, 2778, 2779, 7, 10, 0, 0, 2779, 2780, 7, 7, 0, 0, 2780, 2781, 7, 16, 0, 0, 2781, 402, 1, 0, 0, 0, 2782, 2783, 7, 12, 0, 0, 2783, 2784, 7, 19, 0, 0, 2784, 2785, 7, 15, 0, 0, 2785, 2786, 7, 5, 0, 0, 2786, 2787, 7, 17, 0, 0, 2787, 2788, 7, 7, 0, 0, 2788, 404, 1, 0, 0, 0, 2789, 2790, 7, 12, 0, 0, 2790, 2791, 7, 19, 0, 0, 2791, 2792, 7, 22, 0, 0, 2792, 2793, 7, 18, 0, 0, 2793, 2794, 7, 6, 0, 0, 2794, 2795, 7, 10, 0, 0, 2795, 406, 1, 0, 0, 0, 2796, 2797, 7, 12, 0, 0, 2797, 2798, 7, 13, 0, 0, 2798, 2799, 7, 19, 0, 0, 2799, 2800, 7, 24, 0, 0, 2800, 408, 1, 0, 0, 0, 2801, 2802, 7, 10, 0, 0, 2802, 2803, 7, 5, 0, 0, 2803, 2804, 7, 14, 0, 0, 2804, 2805, 7, 20, 0, 0, 2805, 410, 1, 0, 0, 0, 2806, 2807, 7, 10, 0, 0, 2807, 2808, 7, 7, 0, 0, 2808, 2809, 7, 5, 0, 0, 2809, 2810, 7, 18, 0, 0, 2810, 2811, 7, 6, 0, 0, 2811, 2812, 7, 10, 0, 0, 2812, 412, 1, 0, 0, 0, 2813, 2814, 7, 10, 0, 0, 2814, 2815, 7, 7, 0, 0, 2815, 2816, 7, 14, 0, 0, 2816, 2817, 7, 19, 0, 0, 2817, 2818, 7, 12, 0, 0, 2818, 2819, 7, 17, 0, 0, 2819, 2820, 7, 7, 0, 0, 2820, 2821, 7, 23, 0, 0, 2821, 414, 1, 0, 0, 0, 2822, 2823, 7, 10, 0, 0, 2823, 2824, 7, 7, 0, 0, 2824, 2825, 7, 14, 0, 0, 2825, 2826, 7, 13, 0, 0, 2826, 2827, 7, 8, 0, 0, 2827, 2828, 7, 24, 0, 0, 2828, 2829, 7, 16, 0, 0, 2829, 2830, 7, 10, 0, 0, 2830, 2831, 7, 12, 0, 0, 2831, 416, 1, 0, 0, 0, 2832, 2833, 7, 10, 0, 0, 2833, 2834, 7, 7, 0, 0, 2834, 2835, 7, 22, 0, 0, 2835, 2836, 7, 15, 0, 0, 2836, 418, 1, 0, 0, 0, 2837, 2838, 7, 10, 0, 0, 2838, 2839, 7, 9, 0, 0, 2839, 2840, 7, 14, 0, 0, 2840, 2841, 7, 5, 0, 0, 2841, 2842, 7, 24, 0, 0, 2842, 2843, 7, 10, 0, 0, 2843, 420, 1, 0, 0, 0, 2844, 2845, 7, 10, 0, 0, 2845, 2846, 7, 27, 0, 0, 2846, 2847, 7, 10, 0, 0, 2847, 2848, 7, 7, 0, 0, 2848, 2849, 7, 16, 0, 0, 2849, 422, 1, 0, 0, 0, 2850, 2851, 7, 10, 0, 0, 2851, 2852, 7, 26, 0, 0, 2852, 2853, 7, 14, 0, 0, 2853, 2854, 7, 6, 0, 0, 2854, 2855, 7, 22, 0, 0, 2855, 2856, 7, 12, 0, 0, 2856, 2857, 7, 10, 0, 0, 2857, 424, 1, 0, 0, 0, 2858, 2859, 7, 10, 0, 0, 2859, 2860, 7, 26, 0, 0, 2860, 2861, 7, 14, 0, 0, 2861, 2862, 7, 6, 0, 0, 2862, 2863, 7, 22, 0, 0, 2863, 2864, 7, 12, 0, 0, 2864, 2865, 7, 17, 0, 0, 2865, 2866, 7, 7, 0, 0, 2866, 2867, 7, 23, 0, 0, 2867, 426, 1, 0, 0, 0, 2868, 2869, 7, 10, 0, 0, 2869, 2870, 7, 26, 0, 0, 2870, 2871, 7, 14, 0, 0, 2871, 2872, 7, 6, 0, 0, 2872, 2873, 7, 22, 0, 0, 2873, 2874, 7, 9, 0, 0, 2874, 2875, 7, 17, 0, 0, 2875, 2876, 7, 27, 0, 0, 2876, 2877, 7, 10, 0, 0, 2877, 428, 1, 0, 0, 0, 2878, 2879, 7, 10, 0, 0, 2879, 2880, 7, 26, 0, 0, 2880, 2881, 7, 10, 0, 0, 2881, 2882, 7, 14, 0, 0, 2882, 2883, 7, 22, 0, 0, 2883, 2884, 7, 16, 0, 0, 2884, 2885, 7, 10, 0, 0, 2885, 430, 1, 0, 0, 0, 2886, 2887, 7, 10, 0, 0, 2887, 2888, 7, 26, 0, 0, 2888, 2889, 7, 24, 0, 0, 2889, 2890, 7, 6, 0, 0, 2890, 2891, 7, 5, 0, 0, 2891, 2892, 7, 17, 0, 0, 2892, 2893, 7, 7, 0, 0, 2893, 432, 1, 0, 0, 0, 2894, 2895, 7, 10, 0, 0, 2895, 2896, 7, 26, 0, 0, 2896, 2897, 7, 16, 0, 0, 2897, 2898, 7, 10, 0, 0, 2898, 2899, 7, 7, 0, 0, 2899, 2900, 7, 9, 0, 0, 2900, 2901, 7, 17, 0, 0, 2901, 2902, 7, 19, 0, 0, 2902, 2903, 7, 7, 0, 0, 2903, 434, 1, 0, 0, 0, 2904, 2905, 7, 10, 0, 0, 2905, 2906, 7, 26, 0, 0, 2906, 2907, 7, 16, 0, 0, 2907, 2908, 7, 10, 0, 0, 2908, 2909, 7, 13, 0, 0, 2909, 2910, 7, 7, 0, 0, 2910, 2911, 7, 5, 0, 0, 2911, 2912, 7, 6, 0, 0, 2912, 436, 1, 0, 0, 0, 2913, 2914, 7, 25, 0, 0, 2914, 2915, 7, 5, 0, 0, 2915, 2916, 7, 15, 0, 0, 2916, 2917, 7, 17, 0, 0, 2917, 2918, 7, 6, 0, 0, 2918, 2919, 7, 8, 0, 0, 2919, 438, 1, 0, 0, 0, 2920, 2921, 7, 25, 0, 0, 2921, 2922, 7, 17, 0, 0, 2922, 2923, 7, 13, 0, 0, 2923, 2924, 7, 9, 0, 0, 2924, 2925, 7, 16, 0, 0, 2925, 440, 1, 0, 0, 0, 2926, 2927, 7, 25, 0, 0, 2927, 2928, 7, 19, 0, 0, 2928, 2929, 7, 6, 0, 0, 2929, 2930, 7, 6, 0, 0, 2930, 2931, 7, 19, 0, 0, 2931, 2932, 7, 28, 0, 0, 2932, 2933, 7, 17, 0, 0, 2933, 2934, 7, 7, 0, 0, 2934, 2935, 7, 23, 0, 0, 2935, 442, 1, 0, 0, 0, 2936, 2937, 7, 25, 0, 0, 2937, 2938, 7, 19, 0, 0, 2938, 2939, 7, 13, 0, 0, 2939, 2940, 7, 14, 0, 0, 2940, 2941, 7, 10, 0, 0, 2941, 444, 1, 0, 0, 0, 2942, 2943, 7, 25, 0, 0, 2943, 2944, 7, 19, 0, 0, 2944, 2945, 7, 13, 0, 0, 2945, 2946, 7, 28, 0, 0, 2946, 2947, 7, 5, 0, 0, 2947, 2948, 7, 13, 0, 0, 2948, 2949, 7, 12, 0, 0, 2949, 446, 1, 0, 0, 0, 2950, 2951, 7, 25, 0, 0, 2951, 2952, 7, 22, 0, 0, 2952, 2953, 7, 7, 0, 0, 2953, 2954, 7, 14, 0, 0, 2954, 2955, 7, 16, 0, 0, 2955, 2956, 7, 17, 0, 0, 2956, 2957, 7, 19, 0, 0, 2957, 2958, 7, 7, 0, 0, 2958, 448, 1, 0, 0, 0, 2959, 2960, 7, 25, 0, 0, 2960, 2961, 7, 22, 0, 0, 2961, 2962, 7, 7, 0, 0, 2962, 2963, 7, 14, 0, 0, 2963, 2964, 7, 16, 0, 0, 2964, 2965, 7, 17, 0, 0, 2965, 2966, 7, 19, 0, 0, 2966, 2967, 7, 7, 0, 0, 2967, 2968, 7, 9, 0, 0, 2968, 450, 1, 0, 0, 0, 2969, 2970, 7, 23, 0, 0, 2970, 2971, 7, 6, 0, 0, 2971, 2972, 7, 19, 0, 0, 2972, 2973, 7, 18, 0, 0, 2973, 2974, 7, 5, 0, 0, 2974, 2975, 7, 6, 0, 0, 2975, 452, 1, 0, 0, 0, 2976, 2977, 7, 23, 0, 0, 2977, 2978, 7, 13, 0, 0, 2978, 2979, 7, 5, 0, 0, 2979, 2980, 7, 7, 0, 0, 2980, 2981, 7, 16, 0, 0, 2981, 2982, 7, 10, 0, 0, 2982, 2983, 7, 12, 0, 0, 2983, 454, 1, 0, 0, 0, 2984, 2985, 7, 20, 0, 0, 2985, 2986, 7, 5, 0, 0, 2986, 2987, 7, 7, 0, 0, 2987, 2988, 7, 12, 0, 0, 2988, 2989, 7, 6, 0, 0, 2989, 2990, 7, 10, 0, 0, 2990, 2991, 7, 13, 0, 0, 2991, 456, 1, 0, 0, 0, 2992, 2993, 7, 20, 0, 0, 2993, 2994, 7, 10, 0, 0, 2994, 2995, 7, 5, 0, 0, 2995, 2996, 7, 12, 0, 0, 2996, 2997, 7, 10, 0, 0, 2997, 2998, 7, 13, 0, 0, 2998, 458, 1, 0, 0, 0, 2999, 3000, 7, 20, 0, 0, 3000, 3001, 7, 19, 0, 0, 3001, 3002, 7, 6, 0, 0, 3002, 3003, 7, 12, 0, 0, 3003, 460, 1, 0, 0, 0, 3004, 3005, 7, 20, 0, 0, 3005, 3006, 7, 19, 0, 0, 3006, 3007, 7, 22, 0, 0, 3007, 3008, 7, 13, 0, 0, 3008, 462, 1, 0, 0, 0, 3009, 3010, 7, 17, 0, 0, 3010, 3011, 7, 12, 0, 0, 3011, 3012, 7, 10, 0, 0, 3012, 3013, 7, 7, 0, 0, 3013, 3014, 7, 16, 0, 0, 3014, 3015, 7, 17, 0, 0, 3015, 3016, 7, 16, 0, 0, 3016, 3017, 7, 8, 0, 0, 3017, 464, 1, 0, 0, 0, 3018, 3019, 7, 17, 0, 0, 3019, 3020, 7, 25, 0, 0, 3020, 466, 1, 0, 0, 0, 3021, 3022, 7, 17, 0, 0, 3022, 3023, 7, 15, 0, 0, 3023, 3024, 7, 15, 0, 0, 3024, 3025, 7, 10, 0, 0, 3025, 3026, 7, 12, 0, 0, 3026, 3027, 7, 17, 0, 0, 3027, 3028, 7, 5, 0, 0, 3028, 3029, 7, 16, 0, 0, 3029, 3030, 7, 10, 0, 0, 3030, 468, 1, 0, 0, 0, 3031, 3032, 7, 17, 0, 0, 3032, 3033, 7, 15, 0, 0, 3033, 3034, 7, 15, 0, 0, 3034, 3035, 7, 22, 0, 0, 3035, 3036, 7, 16, 0, 0, 3036, 3037, 7, 5, 0, 0, 3037, 3038, 7, 18, 0, 0, 3038, 3039, 7, 6, 0, 0, 3039, 3040, 7, 10, 0, 0, 3040, 470, 1, 0, 0, 0, 3041, 3042, 7, 17, 0, 0, 3042, 3043, 7, 15, 0, 0, 3043, 3044, 7, 24, 0, 0, 3044, 3045, 7, 6, 0, 0, 3045, 3046, 7, 17, 0, 0, 3046, 3047, 7, 14, 0, 0, 3047, 3048, 7, 17, 0, 0, 3048, 3049, 7, 16, 0, 0, 3049, 472, 1, 0, 0, 0, 3050, 3051, 7, 17, 0, 0, 3051, 3052, 7, 7, 0, 0, 3052, 3053, 7, 14, 0, 0, 3053, 3054, 7, 6, 0, 0, 3054, 3055, 7, 22, 0, 0, 3055, 3056, 7, 12, 0, 0, 3056, 3057, 7, 17, 0, 0, 3057, 3058, 7, 7, 0, 0, 3058, 3059, 7, 23, 0, 0, 3059, 474, 1, 0, 0, 0, 3060, 3061, 7, 17, 0, 0, 3061, 3062, 7, 7, 0, 0, 3062, 3063, 7, 14, 0, 0, 3063, 3064, 7, 13, 0, 0, 3064, 3065, 7, 10, 0, 0, 3065, 3066, 7, 15, 0, 0, 3066, 3067, 7, 10, 0, 0, 3067, 3068, 7, 7, 0, 0, 3068, 3069, 7, 16, 0, 0, 3069, 476, 1, 0, 0, 0, 3070, 3071, 7, 17, 0, 0, 3071, 3072, 7, 7, 0, 0, 3072, 3073, 7, 12, 0, 0, 3073, 3074, 7, 10, 0, 0, 3074, 3075, 7, 26, 0, 0, 3075, 478, 1, 0, 0, 0, 3076, 3077, 7, 17, 0, 0, 3077, 3078, 7, 7, 0, 0, 3078, 3079, 7, 12, 0, 0, 3079, 3080, 7, 10, 0, 0, 3080, 3081, 7, 26, 0, 0, 3081, 3082, 7, 10, 0, 0, 3082, 3083, 7, 9, 0, 0, 3083, 480, 1, 0, 0, 0, 3084, 3085, 7, 17, 0, 0, 3085, 3086, 7, 7, 0, 0, 3086, 3087, 7, 20, 0, 0, 3087, 3088, 7, 10, 0, 0, 3088, 3089, 7, 13, 0, 0, 3089, 3090, 7, 17, 0, 0, 3090, 3091, 7, 16, 0, 0, 3091, 482, 1, 0, 0, 0, 3092, 3093, 7, 17, 0, 0, 3093, 3094, 7, 7, 0, 0, 3094, 3095, 7, 20, 0, 0, 3095, 3096, 7, 10, 0, 0, 3096, 3097, 7, 13, 0, 0, 3097, 3098, 7, 17, 0, 0, 3098, 3099, 7, 16, 0, 0, 3099, 3100, 7, 9, 0, 0, 3100, 484, 1, 0, 0, 0, 3101, 3102, 7, 17, 0, 0, 3102, 3103, 7, 7, 0, 0, 3103, 3104, 7, 6, 0, 0, 3104, 3105, 7, 17, 0, 0, 3105, 3106, 7, 7, 0, 0, 3106, 3107, 7, 10, 0, 0, 3107, 486, 1, 0, 0, 0, 3108, 3109, 7, 17, 0, 0, 3109, 3110, 7, 7, 0, 0, 3110, 3111, 7, 9, 0, 0, 3111, 3112, 7, 10, 0, 0, 3112, 3113, 7, 7, 0, 0, 3113, 3114, 7, 9, 0, 0, 3114, 3115, 7, 17, 0, 0, 3115, 3116, 7, 16, 0, 0, 3116, 3117, 7, 17, 0, 0, 3117, 3118, 7, 27, 0, 0, 3118, 3119, 7, 10, 0, 0, 3119, 488, 1, 0, 0, 0, 3120, 3121, 7, 17, 0, 0, 3121, 3122, 7, 7, 0, 0, 3122, 3123, 7, 9, 0, 0, 3123, 3124, 7, 10, 0, 0, 3124, 3125, 7, 13, 0, 0, 3125, 3126, 7, 16, 0, 0, 3126, 490, 1, 0, 0, 0, 3127, 3128, 7, 17, 0, 0, 3128, 3129, 7, 7, 0, 0, 3129, 3130, 7, 9, 0, 0, 3130, 3131, 7, 16, 0, 0, 3131, 3132, 7, 10, 0, 0, 3132, 3133, 7, 5, 0, 0, 3133, 3134, 7, 12, 0, 0, 3134, 492, 1, 0, 0, 0, 3135, 3136, 7, 17, 0, 0, 3136, 3137, 7, 7, 0, 0, 3137, 3138, 7, 27, 0, 0, 3138, 3139, 7, 19, 0, 0, 3139, 3140, 7, 21, 0, 0, 3140, 3141, 7, 10, 0, 0, 3141, 3142, 7, 13, 0, 0, 3142, 494, 1, 0, 0, 0, 3143, 3144, 7, 17, 0, 0, 3144, 3145, 7, 9, 0, 0, 3145, 3146, 7, 19, 0, 0, 3146, 3147, 7, 6, 0, 0, 3147, 3148, 7, 5, 0, 0, 3148, 3149, 7, 16, 0, 0, 3149, 3150, 7, 17, 0, 0, 3150, 3151, 7, 19, 0, 0, 3151, 3152, 7, 7, 0, 0, 3152, 496, 1, 0, 0, 0, 3153, 3154, 7, 21, 0, 0, 3154, 3155, 7, 10, 0, 0, 3155, 3156, 7, 8, 0, 0, 3156, 498, 1, 0, 0, 0, 3157, 3158, 7, 6, 0, 0, 3158, 3159, 7, 5, 0, 0, 3159, 3160, 7, 18, 0, 0, 3160, 3161, 7, 10, 0, 0, 3161, 3162, 7, 6, 0, 0, 3162, 500, 1, 0, 0, 0, 3163, 3164, 7, 6, 0, 0, 3164, 3165, 7, 5, 0, 0, 3165, 3166, 7, 7, 0, 0, 3166, 3167, 7, 23, 0, 0, 3167, 3168, 7, 22, 0, 0, 3168, 3169, 7, 5, 0, 0, 3169, 3170, 7, 23, 0, 0, 3170, 3171, 7, 10, 0, 0, 3171, 502, 1, 0, 0, 0, 3172, 3173, 7, 6, 0, 0, 3173, 3174, 7, 5, 0, 0, 3174, 3175, 7, 13, 0, 0, 3175, 3176, 7, 23, 0, 0, 3176, 3177, 7, 10, 0, 0, 3177, 504, 1, 0, 0, 0, 3178, 3179, 7, 6, 0, 0, 3179, 3180, 7, 5, 0, 0, 3180, 3181, 7, 9, 0, 0, 3181, 3182, 7, 16, 0, 0, 3182, 506, 1, 0, 0, 0, 3183, 3184, 7, 6, 0, 0, 3184, 3185, 7, 10, 0, 0, 3185, 3186, 7, 5, 0, 0, 3186, 3187, 7, 21, 0, 0, 3187, 3188, 7, 24, 0, 0, 3188, 3189, 7, 13, 0, 0, 3189, 3190, 7, 19, 0, 0, 3190, 3191, 7, 19, 0, 0, 3191, 3192, 7, 25, 0, 0, 3192, 508, 1, 0, 0, 0, 3193, 3194, 7, 6, 0, 0, 3194, 3195, 7, 10, 0, 0, 3195, 3196, 7, 27, 0, 0, 3196, 3197, 7, 10, 0, 0, 3197, 3198, 7, 6, 0, 0, 3198, 510, 1, 0, 0, 0, 3199, 3200, 7, 6, 0, 0, 3200, 3201, 7, 17, 0, 0, 3201, 3202, 7, 9, 0, 0, 3202, 3203, 7, 16, 0, 0, 3203, 3204, 7, 10, 0, 0, 3204, 3205, 7, 7, 0, 0, 3205, 512, 1, 0, 0, 0, 3206, 3207, 7, 6, 0, 0, 3207, 3208, 7, 19, 0, 0, 3208, 3209, 7, 5, 0, 0, 3209, 3210, 7, 12, 0, 0, 3210, 514, 1, 0, 0, 0, 3211, 3212, 7, 6, 0, 0, 3212, 3213, 7, 19, 0, 0, 3213, 3214, 7, 14, 0, 0, 3214, 3215, 7, 5, 0, 0, 3215, 3216, 7, 6, 0, 0, 3216, 516, 1, 0, 0, 0, 3217, 3218, 7, 6, 0, 0, 3218, 3219, 7, 19, 0, 0, 3219, 3220, 7, 14, 0, 0, 3220, 3221, 7, 5, 0, 0, 3221, 3222, 7, 16, 0, 0, 3222, 3223, 7, 17, 0, 0, 3223, 3224, 7, 19, 0, 0, 3224, 3225, 7, 7, 0, 0, 3225, 518, 1, 0, 0, 0, 3226, 3227, 7, 6, 0, 0, 3227, 3228, 7, 19, 0, 0, 3228, 3229, 7, 14, 0, 0, 3229, 3230, 7, 21, 0, 0, 3230, 520, 1, 0, 0, 0, 3231, 3232, 7, 15, 0, 0, 3232, 3233, 7, 5, 0, 0, 3233, 3234, 7, 24, 0, 0, 3234, 3235, 7, 24, 0, 0, 3235, 3236, 7, 17, 0, 0, 3236, 3237, 7, 7, 0, 0, 3237, 3238, 7, 23, 0, 0, 3238, 522, 1, 0, 0, 0, 3239, 3240, 7, 15, 0, 0, 3240, 3241, 7, 5, 0, 0, 3241, 3242, 7, 16, 0, 0, 3242, 3243, 7, 14, 0, 0, 3243, 3244, 7, 20, 0, 0, 3244, 524, 1, 0, 0, 0, 3245, 3246, 7, 15, 0, 0, 3246, 3247, 7, 5, 0, 0, 3247, 3248, 7, 16, 0, 0, 3248, 3249, 7, 14, 0, 0, 3249, 3250, 7, 20, 0, 0, 3250, 3251, 7, 10, 0, 0, 3251, 3252, 7, 12, 0, 0, 3252, 526, 1, 0, 0, 0, 3253, 3254, 7, 15, 0, 0, 3254, 3255, 7, 5, 0, 0, 3255, 3256, 7, 16, 0, 0, 3256, 3257, 7, 10, 0, 0, 3257, 3258, 7, 13, 0, 0, 3258, 3259, 7, 17, 0, 0, 3259, 3260, 7, 5, 0, 0, 3260, 3261, 7, 6, 0, 0, 3261, 3262, 7, 17, 0, 0, 3262, 3263, 7, 11, 0, 0, 3263, 3264, 7, 10, 0, 0, 3264, 3265, 7, 12, 0, 0, 3265, 528, 1, 0, 0, 0, 3266, 3267, 7, 15, 0, 0, 3267, 3268, 7, 5, 0, 0, 3268, 3269, 7, 26, 0, 0, 3269, 3270, 7, 27, 0, 0, 3270, 3271, 7, 5, 0, 0, 3271, 3272, 7, 6, 0, 0, 3272, 3273, 7, 22, 0, 0, 3273, 3274, 7, 10, 0, 0, 3274, 530, 1, 0, 0, 0, 3275, 3276, 7, 15, 0, 0, 3276, 3277, 7, 10, 0, 0, 3277, 3278, 7, 13, 0, 0, 3278, 3279, 7, 23, 0, 0, 3279, 3280, 7, 10, 0, 0, 3280, 532, 1, 0, 0, 0, 3281, 3282, 7, 15, 0, 0, 3282, 3283, 7, 17, 0, 0, 3283, 3284, 7, 7, 0, 0, 3284, 3285, 7, 22, 0, 0, 3285, 3286, 7, 16, 0, 0, 3286, 3287, 7, 10, 0, 0, 3287, 534, 1, 0, 0, 0, 3288, 3289, 7, 15, 0, 0, 3289, 3290, 7, 17, 0, 0, 3290, 3291, 7, 7, 0, 0, 3291, 3292, 7, 27, 0, 0, 3292, 3293, 7, 5, 0, 0, 3293, 3294, 7, 6, 0, 0, 3294, 3295, 7, 22, 0, 0, 3295, 3296, 7, 10, 0, 0, 3296, 536, 1, 0, 0, 0, 3297, 3298, 7, 15, 0, 0, 3298, 3299, 7, 19, 0, 0, 3299, 3300, 7, 12, 0, 0, 3300, 3301, 7, 10, 0, 0, 3301, 538, 1, 0, 0, 0, 3302, 3303, 7, 15, 0, 0, 3303, 3304, 7, 19, 0, 0, 3304, 3305, 7, 7, 0, 0, 3305, 3306, 7, 16, 0, 0, 3306, 3307, 7, 20, 0, 0, 3307, 540, 1, 0, 0, 0, 3308, 3309, 7, 15, 0, 0, 3309, 3310, 7, 19, 0, 0, 3310, 3311, 7, 27, 0, 0, 3311, 3312, 7, 10, 0, 0, 3312, 542, 1, 0, 0, 0, 3313, 3314, 7, 7, 0, 0, 3314, 3315, 7, 5, 0, 0, 3315, 3316, 7, 15, 0, 0, 3316, 3317, 7, 10, 0, 0, 3317, 544, 1, 0, 0, 0, 3318, 3319, 7, 7, 0, 0, 3319, 3320, 7, 5, 0, 0, 3320, 3321, 7, 15, 0, 0, 3321, 3322, 7, 10, 0, 0, 3322, 3323, 7, 9, 0, 0, 3323, 546, 1, 0, 0, 0, 3324, 3325, 7, 7, 0, 0, 3325, 3326, 7, 10, 0, 0, 3326, 3327, 7, 26, 0, 0, 3327, 3328, 7, 16, 0, 0, 3328, 548, 1, 0, 0, 0, 3329, 3330, 7, 7, 0, 0, 3330, 3331, 7, 19, 0, 0, 3331, 550, 1, 0, 0, 0, 3332, 3333, 7, 7, 0, 0, 3333, 3334, 7, 19, 0, 0, 3334, 3335, 7, 16, 0, 0, 3335, 3336, 7, 20, 0, 0, 3336, 3337, 7, 17, 0, 0, 3337, 3338, 7, 7, 0, 0, 3338, 3339, 7, 23, 0, 0, 3339, 552, 1, 0, 0, 0, 3340, 3341, 7, 7, 0, 0, 3341, 3342, 7, 19, 0, 0, 3342, 3343, 7, 16, 0, 0, 3343, 3344, 7, 17, 0, 0, 3344, 3345, 7, 25, 0, 0, 3345, 3346, 7, 8, 0, 0, 3346, 554, 1, 0, 0, 0, 3347, 3348, 7, 7, 0, 0, 3348, 3349, 7, 19, 0, 0, 3349, 3350, 7, 28, 0, 0, 3350, 3351, 7, 5, 0, 0, 3351, 3352, 7, 17, 0, 0, 3352, 3353, 7, 16, 0, 0, 3353, 556, 1, 0, 0, 0, 3354, 3355, 7, 7, 0, 0, 3355, 3356, 7, 22, 0, 0, 3356, 3357, 7, 6, 0, 0, 3357, 3358, 7, 6, 0, 0, 3358, 3359, 7, 9, 0, 0, 3359, 558, 1, 0, 0, 0, 3360, 3361, 7, 19, 0, 0, 3361, 3362, 7, 18, 0, 0, 3362, 3363, 7, 30, 0, 0, 3363, 3364, 7, 10, 0, 0, 3364, 3365, 7, 14, 0, 0, 3365, 3366, 7, 16, 0, 0, 3366, 560, 1, 0, 0, 0, 3367, 3368, 7, 19, 0, 0, 3368, 3369, 7, 25, 0, 0, 3369, 562, 1, 0, 0, 0, 3370, 3371, 7, 19, 0, 0, 3371, 3372, 7, 25, 0, 0, 3372, 3373, 7, 25, 0, 0, 3373, 564, 1, 0, 0, 0, 3374, 3375, 7, 19, 0, 0, 3375, 3376, 7, 17, 0, 0, 3376, 3377, 7, 12, 0, 0, 3377, 3378, 7, 9, 0, 0, 3378, 566, 1, 0, 0, 0, 3379, 3380, 7, 19, 0, 0, 3380, 3381, 7, 24, 0, 0, 3381, 3382, 7, 10, 0, 0, 3382, 3383, 7, 13, 0, 0, 3383, 3384, 7, 5, 0, 0, 3384, 3385, 7, 16, 0, 0, 3385, 3386, 7, 19, 0, 0, 3386, 3387, 7, 13, 0, 0, 3387, 568, 1, 0, 0, 0, 3388, 3389, 7, 19, 0, 0, 3389, 3390, 7, 24, 0, 0, 3390, 3391, 7, 16, 0, 0, 3391, 3392, 7, 17, 0, 0, 3392, 3393, 7, 19, 0, 0, 3393, 3394, 7, 7, 0, 0, 3394, 570, 1, 0, 0, 0, 3395, 3396, 7, 19, 0, 0, 3396, 3397, 7, 24, 0, 0, 3397, 3398, 7, 16, 0, 0, 3398, 3399, 7, 17, 0, 0, 3399, 3400, 7, 19, 0, 0, 3400, 3401, 7, 7, 0, 0, 3401, 3402, 7, 9, 0, 0, 3402, 572, 1, 0, 0, 0, 3403, 3404, 7, 19, 0, 0, 3404, 3405, 7, 28, 0, 0, 3405, 3406, 7, 7, 0, 0, 3406, 3407, 7, 10, 0, 0, 3407, 3408, 7, 12, 0, 0, 3408, 574, 1, 0, 0, 0, 3409, 3410, 7, 19, 0, 0, 3410, 3411, 7, 28, 0, 0, 3411, 3412, 7, 7, 0, 0, 3412, 3413, 7, 10, 0, 0, 3413, 3414, 7, 13, 0, 0, 3414, 576, 1, 0, 0, 0, 3415, 3416, 7, 24, 0, 0, 3416, 3417, 7, 5, 0, 0, 3417, 3418, 7, 13, 0, 0, 3418, 3419, 7, 9, 0, 0, 3419, 3420, 7, 10, 0, 0, 3420, 3421, 7, 13, 0, 0, 3421, 578, 1, 0, 0, 0, 3422, 3423, 7, 24, 0, 0, 3423, 3424, 7, 5, 0, 0, 3424, 3425, 7, 13, 0, 0, 3425, 3426, 7, 16, 0, 0, 3426, 3427, 7, 17, 0, 0, 3427, 3428, 7, 5, 0, 0, 3428, 3429, 7, 6, 0, 0, 3429, 580, 1, 0, 0, 0, 3430, 3431, 7, 24, 0, 0, 3431, 3432, 7, 5, 0, 0, 3432, 3433, 7, 13, 0, 0, 3433, 3434, 7, 16, 0, 0, 3434, 3435, 7, 17, 0, 0, 3435, 3436, 7, 16, 0, 0, 3436, 3437, 7, 17, 0, 0, 3437, 3438, 7, 19, 0, 0, 3438, 3439, 7, 7, 0, 0, 3439, 582, 1, 0, 0, 0, 3440, 3441, 7, 24, 0, 0, 3441, 3442, 7, 5, 0, 0, 3442, 3443, 7, 9, 0, 0, 3443, 3444, 7, 9, 0, 0, 3444, 3445, 7, 17, 0, 0, 3445, 3446, 7, 7, 0, 0, 3446, 3447, 7, 23, 0, 0, 3447, 584, 1, 0, 0, 0, 3448, 3449, 7, 24, 0, 0, 3449, 3450, 7, 5, 0, 0, 3450, 3451, 7, 9, 0, 0, 3451, 3452, 7, 9, 0, 0, 3452, 3453, 7, 28, 0, 0, 3453, 3454, 7, 19, 0, 0, 3454, 3455, 7, 13, 0, 0, 3455, 3456, 7, 12, 0, 0, 3456, 586, 1, 0, 0, 0, 3457, 3458, 7, 24, 0, 0, 3458, 3459, 7, 6, 0, 0, 3459, 3460, 7, 5, 0, 0, 3460, 3461, 7, 7, 0, 0, 3461, 3462, 7, 9, 0, 0, 3462, 588, 1, 0, 0, 0, 3463, 3464, 7, 24, 0, 0, 3464, 3465, 7, 13, 0, 0, 3465, 3466, 7, 10, 0, 0, 3466, 3467, 7, 14, 0, 0, 3467, 3468, 7, 10, 0, 0, 3468, 3469, 7, 12, 0, 0, 3469, 3470, 7, 17, 0, 0, 3470, 3471, 7, 7, 0, 0, 3471, 3472, 7, 23, 0, 0, 3472, 590, 1, 0, 0, 0, 3473, 3474, 7, 24, 0, 0, 3474, 3475, 7, 13, 0, 0, 3475, 3476, 7, 10, 0, 0, 3476, 3477, 7, 24, 0, 0, 3477, 3478, 7, 5, 0, 0, 3478, 3479, 7, 13, 0, 0, 3479, 3480, 7, 10, 0, 0, 3480, 592, 1, 0, 0, 0, 3481, 3482, 7, 24, 0, 0, 3482, 3483, 7, 13, 0, 0, 3483, 3484, 7, 10, 0, 0, 3484, 3485, 7, 24, 0, 0, 3485, 3486, 7, 5, 0, 0, 3486, 3487, 7, 13, 0, 0, 3487, 3488, 7, 10, 0, 0, 3488, 3489, 7, 12, 0, 0, 3489, 594, 1, 0, 0, 0, 3490, 3491, 7, 24, 0, 0, 3491, 3492, 7, 13, 0, 0, 3492, 3493, 7, 10, 0, 0, 3493, 3494, 7, 9, 0, 0, 3494, 3495, 7, 10, 0, 0, 3495, 3496, 7, 13, 0, 0, 3496, 3497, 7, 27, 0, 0, 3497, 3498, 7, 10, 0, 0, 3498, 596, 1, 0, 0, 0, 3499, 3500, 7, 24, 0, 0, 3500, 3501, 7, 13, 0, 0, 3501, 3502, 7, 17, 0, 0, 3502, 3503, 7, 19, 0, 0, 3503, 3504, 7, 13, 0, 0, 3504, 598, 1, 0, 0, 0, 3505, 3506, 7, 24, 0, 0, 3506, 3507, 7, 13, 0, 0, 3507, 3508, 7, 17, 0, 0, 3508, 3509, 7, 27, 0, 0, 3509, 3510, 7, 17, 0, 0, 3510, 3511, 7, 6, 0, 0, 3511, 3512, 7, 10, 0, 0, 3512, 3513, 7, 23, 0, 0, 3513, 3514, 7, 10, 0, 0, 3514, 3515, 7, 9, 0, 0, 3515, 600, 1, 0, 0, 0, 3516, 3517, 7, 24, 0, 0, 3517, 3518, 7, 13, 0, 0, 3518, 3519, 7, 19, 0, 0, 3519, 3520, 7, 14, 0, 0, 3520, 3521, 7, 10, 0, 0, 3521, 3522, 7, 12, 0, 0, 3522, 3523, 7, 22, 0, 0, 3523, 3524, 7, 13, 0, 0, 3524, 3525, 7, 5, 0, 0, 3525, 3526, 7, 6, 0, 0, 3526, 602, 1, 0, 0, 0, 3527, 3528, 7, 24, 0, 0, 3528, 3529, 7, 13, 0, 0, 3529, 3530, 7, 19, 0, 0, 3530, 3531, 7, 14, 0, 0, 3531, 3532, 7, 10, 0, 0, 3532, 3533, 7, 12, 0, 0, 3533, 3534, 7, 22, 0, 0, 3534, 3535, 7, 13, 0, 0, 3535, 3536, 7, 10, 0, 0, 3536, 604, 1, 0, 0, 0, 3537, 3538, 7, 24, 0, 0, 3538, 3539, 7, 13, 0, 0, 3539, 3540, 7, 19, 0, 0, 3540, 3541, 7, 23, 0, 0, 3541, 3542, 7, 13, 0, 0, 3542, 3543, 7, 5, 0, 0, 3543, 3544, 7, 15, 0, 0, 3544, 606, 1, 0, 0, 0, 3545, 3546, 7, 29, 0, 0, 3546, 3547, 7, 22, 0, 0, 3547, 3548, 7, 19, 0, 0, 3548, 3549, 7, 16, 0, 0, 3549, 3550, 7, 10, 0, 0, 3550, 608, 1, 0, 0, 0, 3551, 3552, 7, 13, 0, 0, 3552, 3553, 7, 5, 0, 0, 3553, 3554, 7, 7, 0, 0, 3554, 3555, 7, 23, 0, 0, 3555, 3556, 7, 10, 0, 0, 3556, 610, 1, 0, 0, 0, 3557, 3558, 7, 13, 0, 0, 3558, 3559, 7, 10, 0, 0, 3559, 3560, 7, 5, 0, 0, 3560, 3561, 7, 12, 0, 0, 3561, 612, 1, 0, 0, 0, 3562, 3563, 7, 13, 0, 0, 3563, 3564, 7, 10, 0, 0, 3564, 3565, 7, 5, 0, 0, 3565, 3566, 7, 9, 0, 0, 3566, 3567, 7, 9, 0, 0, 3567, 3568, 7, 17, 0, 0, 3568, 3569, 7, 23, 0, 0, 3569, 3570, 7, 7, 0, 0, 3570, 614, 1, 0, 0, 0, 3571, 3572, 7, 13, 0, 0, 3572, 3573, 7, 10, 0, 0, 3573, 3574, 7, 14, 0, 0, 3574, 3575, 7, 20, 0, 0, 3575, 3576, 7, 10, 0, 0, 3576, 3577, 7, 14, 0, 0, 3577, 3578, 7, 21, 0, 0, 3578, 616, 1, 0, 0, 0, 3579, 3580, 7, 13, 0, 0, 3580, 3581, 7, 10, 0, 0, 3581, 3582, 7, 14, 0, 0, 3582, 3583, 7, 22, 0, 0, 3583, 3584, 7, 13, 0, 0, 3584, 3585, 7, 9, 0, 0, 3585, 3586, 7, 17, 0, 0, 3586, 3587, 7, 27, 0, 0, 3587, 3588, 7, 10, 0, 0, 3588, 618, 1, 0, 0, 0, 3589, 3590, 7, 13, 0, 0, 3590, 3591, 7, 10, 0, 0, 3591, 3592, 7, 25, 0, 0, 3592, 620, 1, 0, 0, 0, 3593, 3594, 7, 13, 0, 0, 3594, 3595, 7, 10, 0, 0, 3595, 3596, 7, 25, 0, 0, 3596, 3597, 7, 13, 0, 0, 3597, 3598, 7, 10, 0, 0, 3598, 3599, 7, 9, 0, 0, 3599, 3600, 7, 20, 0, 0, 3600, 622, 1, 0, 0, 0, 3601, 3602, 7, 13, 0, 0, 3602, 3603, 7, 10, 0, 0, 3603, 3604, 7, 17, 0, 0, 3604, 3605, 7, 7, 0, 0, 3605, 3606, 7, 12, 0, 0, 3606, 3607, 7, 10, 0, 0, 3607, 3608, 7, 26, 0, 0, 3608, 624, 1, 0, 0, 0, 3609, 3610, 7, 13, 0, 0, 3610, 3611, 7, 10, 0, 0, 3611, 3612, 7, 6, 0, 0, 3612, 3613, 7, 5, 0, 0, 3613, 3614, 7, 16, 0, 0, 3614, 3615, 7, 17, 0, 0, 3615, 3616, 7, 27, 0, 0, 3616, 3617, 7, 10, 0, 0, 3617, 626, 1, 0, 0, 0, 3618, 3619, 7, 13, 0, 0, 3619, 3620, 7, 10, 0, 0, 3620, 3621, 7, 6, 0, 0, 3621, 3622, 7, 10, 0, 0, 3622, 3623, 7, 5, 0, 0, 3623, 3624, 7, 9, 0, 0, 3624, 3625, 7, 10, 0, 0, 3625, 628, 1, 0, 0, 0, 3626, 3627, 7, 13, 0, 0, 3627, 3628, 7, 10, 0, 0, 3628, 3629, 7, 7, 0, 0, 3629, 3630, 7, 5, 0, 0, 3630, 3631, 7, 15, 0, 0, 3631, 3632, 7, 10, 0, 0, 3632, 630, 1, 0, 0, 0, 3633, 3634, 7, 13, 0, 0, 3634, 3635, 7, 10, 0, 0, 3635, 3636, 7, 24, 0, 0, 3636, 3637, 7, 10, 0, 0, 3637, 3638, 7, 5, 0, 0, 3638, 3639, 7, 16, 0, 0, 3639, 3640, 7, 5, 0, 0, 3640, 3641, 7, 18, 0, 0, 3641, 3642, 7, 6, 0, 0, 3642, 3643, 7, 10, 0, 0, 3643, 632, 1, 0, 0, 0, 3644, 3645, 7, 13, 0, 0, 3645, 3646, 7, 10, 0, 0, 3646, 3647, 7, 24, 0, 0, 3647, 3648, 7, 6, 0, 0, 3648, 3649, 7, 5, 0, 0, 3649, 3650, 7, 14, 0, 0, 3650, 3651, 7, 10, 0, 0, 3651, 634, 1, 0, 0, 0, 3652, 3653, 7, 13, 0, 0, 3653, 3654, 7, 10, 0, 0, 3654, 3655, 7, 24, 0, 0, 3655, 3656, 7, 6, 0, 0, 3656, 3657, 7, 17, 0, 0, 3657, 3658, 7, 14, 0, 0, 3658, 3659, 7, 5, 0, 0, 3659, 636, 1, 0, 0, 0, 3660, 3661, 7, 13, 0, 0, 3661, 3662, 7, 10, 0, 0, 3662, 3663, 7, 9, 0, 0, 3663, 3664, 7, 10, 0, 0, 3664, 3665, 7, 16, 0, 0, 3665, 638, 1, 0, 0, 0, 3666, 3667, 7, 13, 0, 0, 3667, 3668, 7, 10, 0, 0, 3668, 3669, 7, 9, 0, 0, 3669, 3670, 7, 16, 0, 0, 3670, 3671, 7, 5, 0, 0, 3671, 3672, 7, 13, 0, 0, 3672, 3673, 7, 16, 0, 0, 3673, 640, 1, 0, 0, 0, 3674, 3675, 7, 13, 0, 0, 3675, 3676, 7, 10, 0, 0, 3676, 3677, 7, 9, 0, 0, 3677, 3678, 7, 16, 0, 0, 3678, 3679, 7, 13, 0, 0, 3679, 3680, 7, 17, 0, 0, 3680, 3681, 7, 14, 0, 0, 3681, 3682, 7, 16, 0, 0, 3682, 642, 1, 0, 0, 0, 3683, 3684, 7, 13, 0, 0, 3684, 3685, 7, 10, 0, 0, 3685, 3686, 7, 16, 0, 0, 3686, 3687, 7, 22, 0, 0, 3687, 3688, 7, 13, 0, 0, 3688, 3689, 7, 7, 0, 0, 3689, 3690, 7, 9, 0, 0, 3690, 644, 1, 0, 0, 0, 3691, 3692, 7, 13, 0, 0, 3692, 3693, 7, 10, 0, 0, 3693, 3694, 7, 27, 0, 0, 3694, 3695, 7, 19, 0, 0, 3695, 3696, 7, 21, 0, 0, 3696, 3697, 7, 10, 0, 0, 3697, 646, 1, 0, 0, 0, 3698, 3699, 7, 13, 0, 0, 3699, 3700, 7, 19, 0, 0, 3700, 3701, 7, 6, 0, 0, 3701, 3702, 7, 10, 0, 0, 3702, 648, 1, 0, 0, 0, 3703, 3704, 7, 13, 0, 0, 3704, 3705, 7, 19, 0, 0, 3705, 3706, 7, 6, 0, 0, 3706, 3707, 7, 6, 0, 0, 3707, 3708, 7, 18, 0, 0, 3708, 3709, 7, 5, 0, 0, 3709, 3710, 7, 14, 0, 0, 3710, 3711, 7, 21, 0, 0, 3711, 650, 1, 0, 0, 0, 3712, 3713, 7, 13, 0, 0, 3713, 3714, 7, 19, 0, 0, 3714, 3715, 7, 28, 0, 0, 3715, 3716, 7, 9, 0, 0, 3716, 652, 1, 0, 0, 0, 3717, 3718, 7, 13, 0, 0, 3718, 3719, 7, 22, 0, 0, 3719, 3720, 7, 6, 0, 0, 3720, 3721, 7, 10, 0, 0, 3721, 654, 1, 0, 0, 0, 3722, 3723, 7, 9, 0, 0, 3723, 3724, 7, 5, 0, 0, 3724, 3725, 7, 27, 0, 0, 3725, 3726, 7, 10, 0, 0, 3726, 3727, 7, 24, 0, 0, 3727, 3728, 7, 19, 0, 0, 3728, 3729, 7, 17, 0, 0, 3729, 3730, 7, 7, 0, 0, 3730, 3731, 7, 16, 0, 0, 3731, 656, 1, 0, 0, 0, 3732, 3733, 7, 9, 0, 0, 3733, 3734, 7, 14, 0, 0, 3734, 3735, 7, 20, 0, 0, 3735, 3736, 7, 10, 0, 0, 3736, 3737, 7, 15, 0, 0, 3737, 3738, 7, 5, 0, 0, 3738, 658, 1, 0, 0, 0, 3739, 3740, 7, 9, 0, 0, 3740, 3741, 7, 14, 0, 0, 3741, 3742, 7, 13, 0, 0, 3742, 3743, 7, 19, 0, 0, 3743, 3744, 7, 6, 0, 0, 3744, 3745, 7, 6, 0, 0, 3745, 660, 1, 0, 0, 0, 3746, 3747, 7, 9, 0, 0, 3747, 3748, 7, 10, 0, 0, 3748, 3749, 7, 5, 0, 0, 3749, 3750, 7, 13, 0, 0, 3750, 3751, 7, 14, 0, 0, 3751, 3752, 7, 20, 0, 0, 3752, 662, 1, 0, 0, 0, 3753, 3754, 7, 9, 0, 0, 3754, 3755, 7, 10, 0, 0, 3755, 3756, 7, 14, 0, 0, 3756, 3757, 7, 19, 0, 0, 3757, 3758, 7, 7, 0, 0, 3758, 3759, 7, 12, 0, 0, 3759, 664, 1, 0, 0, 0, 3760, 3761, 7, 9, 0, 0, 3761, 3762, 7, 10, 0, 0, 3762, 3763, 7, 14, 0, 0, 3763, 3764, 7, 22, 0, 0, 3764, 3765, 7, 13, 0, 0, 3765, 3766, 7, 17, 0, 0, 3766, 3767, 7, 16, 0, 0, 3767, 3768, 7, 8, 0, 0, 3768, 666, 1, 0, 0, 0, 3769, 3770, 7, 9, 0, 0, 3770, 3771, 7, 10, 0, 0, 3771, 3772, 7, 29, 0, 0, 3772, 3773, 7, 22, 0, 0, 3773, 3774, 7, 10, 0, 0, 3774, 3775, 7, 7, 0, 0, 3775, 3776, 7, 14, 0, 0, 3776, 3777, 7, 10, 0, 0, 3777, 668, 1, 0, 0, 0, 3778, 3779, 7, 9, 0, 0, 3779, 3780, 7, 10, 0, 0, 3780, 3781, 7, 29, 0, 0, 3781, 3782, 7, 22, 0, 0, 3782, 3783, 7, 10, 0, 0, 3783, 3784, 7, 7, 0, 0, 3784, 3785, 7, 14, 0, 0, 3785, 3786, 7, 10, 0, 0, 3786, 3787, 7, 9, 0, 0, 3787, 670, 1, 0, 0, 0, 3788, 3789, 7, 9, 0, 0, 3789, 3790, 7, 10, 0, 0, 3790, 3791, 7, 13, 0, 0, 3791, 3792, 7, 17, 0, 0, 3792, 3793, 7, 5, 0, 0, 3793, 3794, 7, 6, 0, 0, 3794, 3795, 7, 17, 0, 0, 3795, 3796, 7, 11, 0, 0, 3796, 3797, 7, 5, 0, 0, 3797, 3798, 7, 18, 0, 0, 3798, 3799, 7, 6, 0, 0, 3799, 3800, 7, 10, 0, 0, 3800, 672, 1, 0, 0, 0, 3801, 3802, 7, 9, 0, 0, 3802, 3803, 7, 10, 0, 0, 3803, 3804, 7, 13, 0, 0, 3804, 3805, 7, 27, 0, 0, 3805, 3806, 7, 10, 0, 0, 3806, 3807, 7, 13, 0, 0, 3807, 674, 1, 0, 0, 0, 3808, 3809, 7, 9, 0, 0, 3809, 3810, 7, 10, 0, 0, 3810, 3811, 7, 9, 0, 0, 3811, 3812, 7, 9, 0, 0, 3812, 3813, 7, 17, 0, 0, 3813, 3814, 7, 19, 0, 0, 3814, 3815, 7, 7, 0, 0, 3815, 676, 1, 0, 0, 0, 3816, 3817, 7, 9, 0, 0, 3817, 3818, 7, 10, 0, 0, 3818, 3819, 7, 16, 0, 0, 3819, 678, 1, 0, 0, 0, 3820, 3821, 7, 9, 0, 0, 3821, 3822, 7, 20, 0, 0, 3822, 3823, 7, 5, 0, 0, 3823, 3824, 7, 13, 0, 0, 3824, 3825, 7, 10, 0, 0, 3825, 680, 1, 0, 0, 0, 3826, 3827, 7, 9, 0, 0, 3827, 3828, 7, 20, 0, 0, 3828, 3829, 7, 19, 0, 0, 3829, 3830, 7, 28, 0, 0, 3830, 682, 1, 0, 0, 0, 3831, 3832, 7, 9, 0, 0, 3832, 3833, 7, 17, 0, 0, 3833, 3834, 7, 15, 0, 0, 3834, 3835, 7, 24, 0, 0, 3835, 3836, 7, 6, 0, 0, 3836, 3837, 7, 10, 0, 0, 3837, 684, 1, 0, 0, 0, 3838, 3839, 7, 9, 0, 0, 3839, 3840, 7, 7, 0, 0, 3840, 3841, 7, 5, 0, 0, 3841, 3842, 7, 24, 0, 0, 3842, 3843, 7, 9, 0, 0, 3843, 3844, 7, 20, 0, 0, 3844, 3845, 7, 19, 0, 0, 3845, 3846, 7, 16, 0, 0, 3846, 686, 1, 0, 0, 0, 3847, 3848, 7, 9, 0, 0, 3848, 3849, 7, 16, 0, 0, 3849, 3850, 7, 5, 0, 0, 3850, 3851, 7, 18, 0, 0, 3851, 3852, 7, 6, 0, 0, 3852, 3853, 7, 10, 0, 0, 3853, 688, 1, 0, 0, 0, 3854, 3855, 7, 9, 0, 0, 3855, 3856, 7, 16, 0, 0, 3856, 3857, 7, 5, 0, 0, 3857, 3858, 7, 7, 0, 0, 3858, 3859, 7, 12, 0, 0, 3859, 3860, 7, 5, 0, 0, 3860, 3861, 7, 6, 0, 0, 3861, 3862, 7, 19, 0, 0, 3862, 3863, 7, 7, 0, 0, 3863, 3864, 7, 10, 0, 0, 3864, 690, 1, 0, 0, 0, 3865, 3866, 7, 9, 0, 0, 3866, 3867, 7, 16, 0, 0, 3867, 3868, 7, 5, 0, 0, 3868, 3869, 7, 13, 0, 0, 3869, 3870, 7, 16, 0, 0, 3870, 692, 1, 0, 0, 0, 3871, 3872, 7, 9, 0, 0, 3872, 3873, 7, 16, 0, 0, 3873, 3874, 7, 5, 0, 0, 3874, 3875, 7, 16, 0, 0, 3875, 3876, 7, 10, 0, 0, 3876, 3877, 7, 15, 0, 0, 3877, 3878, 7, 10, 0, 0, 3878, 3879, 7, 7, 0, 0, 3879, 3880, 7, 16, 0, 0, 3880, 694, 1, 0, 0, 0, 3881, 3882, 7, 9, 0, 0, 3882, 3883, 7, 16, 0, 0, 3883, 3884, 7, 5, 0, 0, 3884, 3885, 7, 16, 0, 0, 3885, 3886, 7, 17, 0, 0, 3886, 3887, 7, 9, 0, 0, 3887, 3888, 7, 16, 0, 0, 3888, 3889, 7, 17, 0, 0, 3889, 3890, 7, 14, 0, 0, 3890, 3891, 7, 9, 0, 0, 3891, 696, 1, 0, 0, 0, 3892, 3893, 7, 9, 0, 0, 3893, 3894, 7, 16, 0, 0, 3894, 3895, 7, 12, 0, 0, 3895, 3896, 7, 17, 0, 0, 3896, 3897, 7, 7, 0, 0, 3897, 698, 1, 0, 0, 0, 3898, 3899, 7, 9, 0, 0, 3899, 3900, 7, 16, 0, 0, 3900, 3901, 7, 12, 0, 0, 3901, 3902, 7, 19, 0, 0, 3902, 3903, 7, 22, 0, 0, 3903, 3904, 7, 16, 0, 0, 3904, 700, 1, 0, 0, 0, 3905, 3906, 7, 9, 0, 0, 3906, 3907, 7, 16, 0, 0, 3907, 3908, 7, 19, 0, 0, 3908, 3909, 7, 13, 0, 0, 3909, 3910, 7, 5, 0, 0, 3910, 3911, 7, 23, 0, 0, 3911, 3912, 7, 10, 0, 0, 3912, 702, 1, 0, 0, 0, 3913, 3914, 7, 9, 0, 0, 3914, 3915, 7, 16, 0, 0, 3915, 3916, 7, 13, 0, 0, 3916, 3917, 7, 17, 0, 0, 3917, 3918, 7, 14, 0, 0, 3918, 3919, 7, 16, 0, 0, 3919, 704, 1, 0, 0, 0, 3920, 3921, 7, 9, 0, 0, 3921, 3922, 7, 16, 0, 0, 3922, 3923, 7, 13, 0, 0, 3923, 3924, 7, 17, 0, 0, 3924, 3925, 7, 24, 0, 0, 3925, 706, 1, 0, 0, 0, 3926, 3927, 7, 9, 0, 0, 3927, 3928, 7, 8, 0, 0, 3928, 3929, 7, 9, 0, 0, 3929, 3930, 7, 17, 0, 0, 3930, 3931, 7, 12, 0, 0, 3931, 708, 1, 0, 0, 0, 3932, 3933, 7, 9, 0, 0, 3933, 3934, 7, 8, 0, 0, 3934, 3935, 7, 9, 0, 0, 3935, 3936, 7, 16, 0, 0, 3936, 3937, 7, 10, 0, 0, 3937, 3938, 7, 15, 0, 0, 3938, 710, 1, 0, 0, 0, 3939, 3940, 7, 16, 0, 0, 3940, 3941, 7, 5, 0, 0, 3941, 3942, 7, 18, 0, 0, 3942, 3943, 7, 6, 0, 0, 3943, 3944, 7, 10, 0, 0, 3944, 3945, 7, 9, 0, 0, 3945, 712, 1, 0, 0, 0, 3946, 3947, 7, 11, 0, 0, 3947, 3948, 7, 16, 0, 0, 3948, 3949, 7, 5, 0, 0, 3949, 3950, 7, 18, 0, 0, 3950, 3951, 7, 6, 0, 0, 3951, 3952, 7, 10, 0, 0, 3952, 3953, 7, 9, 0, 0, 3953, 714, 1, 0, 0, 0, 3954, 3955, 7, 16, 0, 0, 3955, 3956, 7, 5, 0, 0, 3956, 3957, 7, 18, 0, 0, 3957, 3958, 7, 6, 0, 0, 3958, 3959, 7, 10, 0, 0, 3959, 3960, 7, 9, 0, 0, 3960, 3961, 7, 24, 0, 0, 3961, 3962, 7, 5, 0, 0, 3962, 3963, 7, 14, 0, 0, 3963, 3964, 7, 10, 0, 0, 3964, 716, 1, 0, 0, 0, 3965, 3966, 7, 16, 0, 0, 3966, 3967, 7, 10, 0, 0, 3967, 3968, 7, 15, 0, 0, 3968, 3969, 7, 24, 0, 0, 3969, 718, 1, 0, 0, 0, 3970, 3971, 7, 16, 0, 0, 3971, 3972, 7, 10, 0, 0, 3972, 3973, 7, 15, 0, 0, 3973, 3974, 7, 24, 0, 0, 3974, 3975, 7, 6, 0, 0, 3975, 3976, 7, 5, 0, 0, 3976, 3977, 7, 16, 0, 0, 3977, 3978, 7, 10, 0, 0, 3978, 720, 1, 0, 0, 0, 3979, 3980, 7, 16, 0, 0, 3980, 3981, 7, 10, 0, 0, 3981, 3982, 7, 15, 0, 0, 3982, 3983, 7, 24, 0, 0, 3983, 3984, 7, 19, 0, 0, 3984, 3985, 7, 13, 0, 0, 3985, 3986, 7, 5, 0, 0, 3986, 3987, 7, 13, 0, 0, 3987, 3988, 7, 8, 0, 0, 3988, 722, 1, 0, 0, 0, 3989, 3990, 7, 16, 0, 0, 3990, 3991, 7, 10, 0, 0, 3991, 3992, 7, 26, 0, 0, 3992, 3993, 7, 16, 0, 0, 3993, 724, 1, 0, 0, 0, 3994, 3995, 7, 16, 0, 0, 3995, 3996, 7, 13, 0, 0, 3996, 3997, 7, 5, 0, 0, 3997, 3998, 7, 7, 0, 0, 3998, 3999, 7, 9, 0, 0, 3999, 4000, 7, 5, 0, 0, 4000, 4001, 7, 14, 0, 0, 4001, 4002, 7, 16, 0, 0, 4002, 4003, 7, 17, 0, 0, 4003, 4004, 7, 19, 0, 0, 4004, 4005, 7, 7, 0, 0, 4005, 726, 1, 0, 0, 0, 4006, 4007, 7, 16, 0, 0, 4007, 4008, 7, 13, 0, 0, 4008, 4009, 7, 17, 0, 0, 4009, 4010, 7, 23, 0, 0, 4010, 4011, 7, 23, 0, 0, 4011, 4012, 7, 10, 0, 0, 4012, 4013, 7, 13, 0, 0, 4013, 728, 1, 0, 0, 0, 4014, 4015, 7, 16, 0, 0, 4015, 4016, 7, 13, 0, 0, 4016, 4017, 7, 22, 0, 0, 4017, 4018, 7, 7, 0, 0, 4018, 4019, 7, 14, 0, 0, 4019, 4020, 7, 5, 0, 0, 4020, 4021, 7, 16, 0, 0, 4021, 4022, 7, 10, 0, 0, 4022, 730, 1, 0, 0, 0, 4023, 4024, 7, 16, 0, 0, 4024, 4025, 7, 13, 0, 0, 4025, 4026, 7, 22, 0, 0, 4026, 4027, 7, 9, 0, 0, 4027, 4028, 7, 16, 0, 0, 4028, 4029, 7, 10, 0, 0, 4029, 4030, 7, 12, 0, 0, 4030, 732, 1, 0, 0, 0, 4031, 4032, 7, 16, 0, 0, 4032, 4033, 7, 8, 0, 0, 4033, 4034, 7, 24, 0, 0, 4034, 4035, 7, 10, 0, 0, 4035, 734, 1, 0, 0, 0, 4036, 4037, 7, 16, 0, 0, 4037, 4038, 7, 8, 0, 0, 4038, 4039, 7, 24, 0, 0, 4039, 4040, 7, 10, 0, 0, 4040, 4041, 7, 9, 0, 0, 4041, 736, 1, 0, 0, 0, 4042, 4043, 7, 22, 0, 0, 4043, 4044, 7, 7, 0, 0, 4044, 4045, 7, 18, 0, 0, 4045, 4046, 7, 19, 0, 0, 4046, 4047, 7, 22, 0, 0, 4047, 4048, 7, 7, 0, 0, 4048, 4049, 7, 12, 0, 0, 4049, 4050, 7, 10, 0, 0, 4050, 4051, 7, 12, 0, 0, 4051, 738, 1, 0, 0, 0, 4052, 4053, 7, 22, 0, 0, 4053, 4054, 7, 7, 0, 0, 4054, 4055, 7, 14, 0, 0, 4055, 4056, 7, 19, 0, 0, 4056, 4057, 7, 15, 0, 0, 4057, 4058, 7, 15, 0, 0, 4058, 4059, 7, 17, 0, 0, 4059, 4060, 7, 16, 0, 0, 4060, 4061, 7, 16, 0, 0, 4061, 4062, 7, 10, 0, 0, 4062, 4063, 7, 12, 0, 0, 4063, 740, 1, 0, 0, 0, 4064, 4065, 7, 22, 0, 0, 4065, 4066, 7, 7, 0, 0, 4066, 4067, 7, 10, 0, 0, 4067, 4068, 7, 7, 0, 0, 4068, 4069, 7, 14, 0, 0, 4069, 4070, 7, 13, 0, 0, 4070, 4071, 7, 8, 0, 0, 4071, 4072, 7, 24, 0, 0, 4072, 4073, 7, 16, 0, 0, 4073, 4074, 7, 10, 0, 0, 4074, 4075, 7, 12, 0, 0, 4075, 742, 1, 0, 0, 0, 4076, 4077, 7, 22, 0, 0, 4077, 4078, 7, 7, 0, 0, 4078, 4079, 7, 21, 0, 0, 4079, 4080, 7, 7, 0, 0, 4080, 4081, 7, 19, 0, 0, 4081, 4082, 7, 28, 0, 0, 4082, 4083, 7, 7, 0, 0, 4083, 744, 1, 0, 0, 0, 4084, 4085, 7, 22, 0, 0, 4085, 4086, 7, 7, 0, 0, 4086, 4087, 7, 6, 0, 0, 4087, 4088, 7, 17, 0, 0, 4088, 4089, 7, 9, 0, 0, 4089, 4090, 7, 16, 0, 0, 4090, 4091, 7, 10, 0, 0, 4091, 4092, 7, 7, 0, 0, 4092, 746, 1, 0, 0, 0, 4093, 4094, 7, 22, 0, 0, 4094, 4095, 7, 7, 0, 0, 4095, 4096, 7, 6, 0, 0, 4096, 4097, 7, 19, 0, 0, 4097, 4098, 7, 23, 0, 0, 4098, 4099, 7, 23, 0, 0, 4099, 4100, 7, 10, 0, 0, 4100, 4101, 7, 12, 0, 0, 4101, 748, 1, 0, 0, 0, 4102, 4103, 7, 22, 0, 0, 4103, 4104, 7, 7, 0, 0, 4104, 4105, 7, 16, 0, 0, 4105, 4106, 7, 17, 0, 0, 4106, 4107, 7, 6, 0, 0, 4107, 750, 1, 0, 0, 0, 4108, 4109, 7, 22, 0, 0, 4109, 4110, 7, 24, 0, 0, 4110, 4111, 7, 12, 0, 0, 4111, 4112, 7, 5, 0, 0, 4112, 4113, 7, 16, 0, 0, 4113, 4114, 7, 10, 0, 0, 4114, 752, 1, 0, 0, 0, 4115, 4116, 7, 27, 0, 0, 4116, 4117, 7, 5, 0, 0, 4117, 4118, 7, 14, 0, 0, 4118, 4119, 7, 22, 0, 0, 4119, 4120, 7, 22, 0, 0, 4120, 4121, 7, 15, 0, 0, 4121, 754, 1, 0, 0, 0, 4122, 4123, 7, 27, 0, 0, 4123, 4124, 7, 5, 0, 0, 4124, 4125, 7, 6, 0, 0, 4125, 4126, 7, 17, 0, 0, 4126, 4127, 7, 12, 0, 0, 4127, 756, 1, 0, 0, 0, 4128, 4129, 7, 27, 0, 0, 4129, 4130, 7, 5, 0, 0, 4130, 4131, 7, 6, 0, 0, 4131, 4132, 7, 17, 0, 0, 4132, 4133, 7, 12, 0, 0, 4133, 4134, 7, 5, 0, 0, 4134, 4135, 7, 16, 0, 0, 4135, 4136, 7, 10, 0, 0, 4136, 758, 1, 0, 0, 0, 4137, 4138, 7, 27, 0, 0, 4138, 4139, 7, 5, 0, 0, 4139, 4140, 7, 6, 0, 0, 4140, 4141, 7, 17, 0, 0, 4141, 4142, 7, 12, 0, 0, 4142, 4143, 7, 5, 0, 0, 4143, 4144, 7, 16, 0, 0, 4144, 4145, 7, 19, 0, 0, 4145, 4146, 7, 13, 0, 0, 4146, 760, 1, 0, 0, 0, 4147, 4148, 7, 27, 0, 0, 4148, 4149, 7, 5, 0, 0, 4149, 4150, 7, 13, 0, 0, 4150, 4151, 7, 8, 0, 0, 4151, 4152, 7, 17, 0, 0, 4152, 4153, 7, 7, 0, 0, 4153, 4154, 7, 23, 0, 0, 4154, 762, 1, 0, 0, 0, 4155, 4156, 7, 27, 0, 0, 4156, 4157, 7, 10, 0, 0, 4157, 4158, 7, 13, 0, 0, 4158, 4159, 7, 9, 0, 0, 4159, 4160, 7, 17, 0, 0, 4160, 4161, 7, 19, 0, 0, 4161, 4162, 7, 7, 0, 0, 4162, 764, 1, 0, 0, 0, 4163, 4164, 7, 27, 0, 0, 4164, 4165, 7, 17, 0, 0, 4165, 4166, 7, 10, 0, 0, 4166, 4167, 7, 28, 0, 0, 4167, 766, 1, 0, 0, 0, 4168, 4169, 7, 27, 0, 0, 4169, 4170, 7, 19, 0, 0, 4170, 4171, 7, 6, 0, 0, 4171, 4172, 7, 5, 0, 0, 4172, 4173, 7, 16, 0, 0, 4173, 4174, 7, 17, 0, 0, 4174, 4175, 7, 6, 0, 0, 4175, 4176, 7, 10, 0, 0, 4176, 768, 1, 0, 0, 0, 4177, 4178, 7, 28, 0, 0, 4178, 4179, 7, 20, 0, 0, 4179, 4180, 7, 17, 0, 0, 4180, 4181, 7, 16, 0, 0, 4181, 4182, 7, 10, 0, 0, 4182, 4183, 7, 9, 0, 0, 4183, 4184, 7, 24, 0, 0, 4184, 4185, 7, 5, 0, 0, 4185, 4186, 7, 14, 0, 0, 4186, 4187, 7, 10, 0, 0, 4187, 770, 1, 0, 0, 0, 4188, 4189, 7, 28, 0, 0, 4189, 4190, 7, 17, 0, 0, 4190, 4191, 7, 16, 0, 0, 4191, 4192, 7, 20, 0, 0, 4192, 4193, 7, 19, 0, 0, 4193, 4194, 7, 22, 0, 0, 4194, 4195, 7, 16, 0, 0, 4195, 772, 1, 0, 0, 0, 4196, 4197, 7, 28, 0, 0, 4197, 4198, 7, 19, 0, 0, 4198, 4199, 7, 13, 0, 0, 4199, 4200, 7, 21, 0, 0, 4200, 774, 1, 0, 0, 0, 4201, 4202, 7, 28, 0, 0, 4202, 4203, 7, 13, 0, 0, 4203, 4204, 7, 5, 0, 0, 4204, 4205, 7, 24, 0, 0, 4205, 4206, 7, 24, 0, 0, 4206, 4207, 7, 10, 0, 0, 4207, 4208, 7, 13, 0, 0, 4208, 776, 1, 0, 0, 0, 4209, 4210, 7, 28, 0, 0, 4210, 4211, 7, 13, 0, 0, 4211, 4212, 7, 17, 0, 0, 4212, 4213, 7, 16, 0, 0, 4213, 4214, 7, 10, 0, 0, 4214, 778, 1, 0, 0, 0, 4215, 4216, 7, 26, 0, 0, 4216, 4217, 7, 15, 0, 0, 4217, 4218, 7, 6, 0, 0, 4218, 780, 1, 0, 0, 0, 4219, 4220, 7, 8, 0, 0, 4220, 4221, 7, 10, 0, 0, 4221, 4222, 7, 5, 0, 0, 4222, 4223, 7, 13, 0, 0, 4223, 782, 1, 0, 0, 0, 4224, 4225, 7, 8, 0, 0, 4225, 4226, 7, 10, 0, 0, 4226, 4227, 7, 9, 0, 0, 4227, 784, 1, 0, 0, 0, 4228, 4229, 7, 11, 0, 0, 4229, 4230, 7, 19, 0, 0, 4230, 4231, 7, 7, 0, 0, 4231, 4232, 7, 10, 0, 0, 4232, 786, 1, 0, 0, 0, 4233, 4234, 7, 18, 0, 0, 4234, 4235, 7, 10, 0, 0, 4235, 4236, 7, 16, 0, 0, 4236, 4237, 7, 28, 0, 0, 4237, 4238, 7, 10, 0, 0, 4238, 4239, 7, 10, 0, 0, 4239, 4240, 7, 7, 0, 0, 4240, 788, 1, 0, 0, 0, 4241, 4242, 7, 18, 0, 0, 4242, 4243, 7, 17, 0, 0, 4243, 4244, 7, 23, 0, 0, 4244, 4245, 7, 17, 0, 0, 4245, 4246, 7, 7, 0, 0, 4246, 4247, 7, 16, 0, 0, 4247, 790, 1, 0, 0, 0, 4248, 4249, 7, 18, 0, 0, 4249, 4250, 7, 17, 0, 0, 4250, 4251, 7, 16, 0, 0, 4251, 792, 1, 0, 0, 0, 4252, 4253, 7, 18, 0, 0, 4253, 4254, 7, 19, 0, 0, 4254, 4255, 7, 19, 0, 0, 4255, 4256, 7, 6, 0, 0, 4256, 4257, 7, 10, 0, 0, 4257, 4258, 7, 5, 0, 0, 4258, 4259, 7, 7, 0, 0, 4259, 794, 1, 0, 0, 0, 4260, 4261, 7, 14, 0, 0, 4261, 4262, 7, 20, 0, 0, 4262, 4263, 7, 5, 0, 0, 4263, 4264, 7, 13, 0, 0, 4264, 796, 1, 0, 0, 0, 4265, 4266, 7, 14, 0, 0, 4266, 4267, 7, 20, 0, 0, 4267, 4268, 7, 5, 0, 0, 4268, 4269, 7, 13, 0, 0, 4269, 4270, 7, 5, 0, 0, 4270, 4271, 7, 14, 0, 0, 4271, 4272, 7, 16, 0, 0, 4272, 4273, 7, 10, 0, 0, 4273, 4274, 7, 13, 0, 0, 4274, 798, 1, 0, 0, 0, 4275, 4276, 7, 14, 0, 0, 4276, 4277, 7, 19, 0, 0, 4277, 4278, 7, 5, 0, 0, 4278, 4279, 7, 6, 0, 0, 4279, 4280, 7, 10, 0, 0, 4280, 4281, 7, 9, 0, 0, 4281, 4282, 7, 14, 0, 0, 4282, 4283, 7, 10, 0, 0, 4283, 800, 1, 0, 0, 0, 4284, 4285, 7, 12, 0, 0, 4285, 4286, 7, 10, 0, 0, 4286, 4287, 7, 14, 0, 0, 4287, 802, 1, 0, 0, 0, 4288, 4289, 7, 12, 0, 0, 4289, 4290, 7, 10, 0, 0, 4290, 4291, 7, 14, 0, 0, 4291, 4292, 7, 17, 0, 0, 4292, 4293, 7, 15, 0, 0, 4293, 4294, 7, 5, 0, 0, 4294, 4295, 7, 6, 0, 0, 4295, 804, 1, 0, 0, 0, 4296, 4297, 7, 10, 0, 0, 4297, 4298, 7, 26, 0, 0, 4298, 4299, 7, 17, 0, 0, 4299, 4300, 7, 9, 0, 0, 4300, 4301, 7, 16, 0, 0, 4301, 4302, 7, 9, 0, 0, 4302, 806, 1, 0, 0, 0, 4303, 4304, 7, 10, 0, 0, 4304, 4305, 7, 26, 0, 0, 4305, 4306, 7, 16, 0, 0, 4306, 4307, 7, 13, 0, 0, 4307, 4308, 7, 5, 0, 0, 4308, 4309, 7, 14, 0, 0, 4309, 4310, 7, 16, 0, 0, 4310, 808, 1, 0, 0, 0, 4311, 4312, 7, 25, 0, 0, 4312, 4313, 7, 6, 0, 0, 4313, 4314, 7, 19, 0, 0, 4314, 4315, 7, 5, 0, 0, 4315, 4316, 7, 16, 0, 0, 4316, 810, 1, 0, 0, 0, 4317, 4318, 7, 23, 0, 0, 4318, 4319, 7, 13, 0, 0, 4319, 4320, 7, 10, 0, 0, 4320, 4321, 7, 5, 0, 0, 4321, 4322, 7, 16, 0, 0, 4322, 4323, 7, 10, 0, 0, 4323, 4324, 7, 9, 0, 0, 4324, 4325, 7, 16, 0, 0, 4325, 812, 1, 0, 0, 0, 4326, 4327, 7, 17, 0, 0, 4327, 4328, 7, 7, 0, 0, 4328, 4329, 7, 19, 0, 0, 4329, 4330, 7, 22, 0, 0, 4330, 4331, 7, 16, 0, 0, 4331, 814, 1, 0, 0, 0, 4332, 4333, 7, 17, 0, 0, 4333, 4334, 7, 7, 0, 0, 4334, 4335, 7, 16, 0, 0, 4335, 816, 1, 0, 0, 0, 4336, 4337, 7, 17, 0, 0, 4337, 4338, 7, 7, 0, 0, 4338, 4339, 7, 16, 0, 0, 4339, 4340, 7, 10, 0, 0, 4340, 4341, 7, 23, 0, 0, 4341, 4342, 7, 10, 0, 0, 4342, 4343, 7, 13, 0, 0, 4343, 818, 1, 0, 0, 0, 4344, 4345, 7, 17, 0, 0, 4345, 4346, 7, 7, 0, 0, 4346, 4347, 7, 16, 0, 0, 4347, 4348, 7, 10, 0, 0, 4348, 4349, 7, 13, 0, 0, 4349, 4350, 7, 27, 0, 0, 4350, 4351, 7, 5, 0, 0, 4351, 4352, 7, 6, 0, 0, 4352, 820, 1, 0, 0, 0, 4353, 4354, 7, 6, 0, 0, 4354, 4355, 7, 10, 0, 0, 4355, 4356, 7, 5, 0, 0, 4356, 4357, 7, 9, 0, 0, 4357, 4358, 7, 16, 0, 0, 4358, 822, 1, 0, 0, 0, 4359, 4360, 7, 7, 0, 0, 4360, 4361, 7, 5, 0, 0, 4361, 4362, 7, 16, 0, 0, 4362, 4363, 7, 17, 0, 0, 4363, 4364, 7, 19, 0, 0, 4364, 4365, 7, 7, 0, 0, 4365, 4366, 7, 5, 0, 0, 4366, 4367, 7, 6, 0, 0, 4367, 824, 1, 0, 0, 0, 4368, 4369, 7, 7, 0, 0, 4369, 4370, 7, 14, 0, 0, 4370, 4371, 7, 20, 0, 0, 4371, 4372, 7, 5, 0, 0, 4372, 4373, 7, 13, 0, 0, 4373, 826, 1, 0, 0, 0, 4374, 4375, 7, 7, 0, 0, 4375, 4376, 7, 19, 0, 0, 4376, 4377, 7, 7, 0, 0, 4377, 4378, 7, 10, 0, 0, 4378, 828, 1, 0, 0, 0, 4379, 4380, 7, 7, 0, 0, 4380, 4381, 7, 22, 0, 0, 4381, 4382, 7, 6, 0, 0, 4382, 4383, 7, 6, 0, 0, 4383, 4384, 7, 17, 0, 0, 4384, 4385, 7, 25, 0, 0, 4385, 830, 1, 0, 0, 0, 4386, 4387, 7, 7, 0, 0, 4387, 4388, 7, 22, 0, 0, 4388, 4389, 7, 15, 0, 0, 4389, 4390, 7, 10, 0, 0, 4390, 4391, 7, 13, 0, 0, 4391, 4392, 7, 17, 0, 0, 4392, 4393, 7, 14, 0, 0, 4393, 832, 1, 0, 0, 0, 4394, 4395, 7, 19, 0, 0, 4395, 4396, 7, 27, 0, 0, 4396, 4397, 7, 10, 0, 0, 4397, 4398, 7, 13, 0, 0, 4398, 4399, 7, 6, 0, 0, 4399, 4400, 7, 5, 0, 0, 4400, 4401, 7, 8, 0, 0, 4401, 834, 1, 0, 0, 0, 4402, 4403, 7, 24, 0, 0, 4403, 4404, 7, 19, 0, 0, 4404, 4405, 7, 9, 0, 0, 4405, 4406, 7, 17, 0, 0, 4406, 4407, 7, 16, 0, 0, 4407, 4408, 7, 17, 0, 0, 4408, 4409, 7, 19, 0, 0, 4409, 4410, 7, 7, 0, 0, 4410, 836, 1, 0, 0, 0, 4411, 4412, 7, 24, 0, 0, 4412, 4413, 7, 13, 0, 0, 4413, 4414, 7, 10, 0, 0, 4414, 4415, 7, 14, 0, 0, 4415, 4416, 7, 17, 0, 0, 4416, 4417, 7, 9, 0, 0, 4417, 4418, 7, 17, 0, 0, 4418, 4419, 7, 19, 0, 0, 4419, 4420, 7, 7, 0, 0, 4420, 838, 1, 0, 0, 0, 4421, 4422, 7, 13, 0, 0, 4422, 4423, 7, 10, 0, 0, 4423, 4424, 7, 5, 0, 0, 4424, 4425, 7, 6, 0, 0, 4425, 840, 1, 0, 0, 0, 4426, 4427, 7, 13, 0, 0, 4427, 4428, 7, 19, 0, 0, 4428, 4429, 7, 28, 0, 0, 4429, 842, 1, 0, 0, 0, 4430, 4431, 7, 9, 0, 0, 4431, 4432, 7, 10, 0, 0, 4432, 4433, 7, 16, 0, 0, 4433, 4434, 7, 19, 0, 0, 4434, 4435, 7, 25, 0, 0, 4435, 844, 1, 0, 0, 0, 4436, 4437, 7, 9, 0, 0, 4437, 4438, 7, 15, 0, 0, 4438, 4439, 7, 5, 0, 0, 4439, 4440, 7, 6, 0, 0, 4440, 4441, 7, 6, 0, 0, 4441, 4442, 7, 17, 0, 0, 4442, 4443, 7, 7, 0, 0, 4443, 4444, 7, 16, 0, 0, 4444, 846, 1, 0, 0, 0, 4445, 4446, 7, 9, 0, 0, 4446, 4447, 7, 22, 0, 0, 4447, 4448, 7, 18, 0, 0, 4448, 4449, 7, 9, 0, 0, 4449, 4450, 7, 16, 0, 0, 4450, 4451, 7, 13, 0, 0, 4451, 4452, 7, 17, 0, 0, 4452, 4453, 7, 7, 0, 0, 4453, 4454, 7, 23, 0, 0, 4454, 848, 1, 0, 0, 0, 4455, 4456, 7, 16, 0, 0, 4456, 4457, 7, 17, 0, 0, 4457, 4458, 7, 15, 0, 0, 4458, 4459, 7, 10, 0, 0, 4459, 850, 1, 0, 0, 0, 4460, 4461, 7, 16, 0, 0, 4461, 4462, 7, 17, 0, 0, 4462, 4463, 7, 15, 0, 0, 4463, 4464, 7, 10, 0, 0, 4464, 4465, 7, 9, 0, 0, 4465, 4466, 7, 16, 0, 0, 4466, 4467, 7, 5, 0, 0, 4467, 4468, 7, 15, 0, 0, 4468, 4469, 7, 24, 0, 0, 4469, 852, 1, 0, 0, 0, 4470, 4471, 7, 16, 0, 0, 4471, 4472, 7, 13, 0, 0, 4472, 4473, 7, 10, 0, 0, 4473, 4474, 7, 5, 0, 0, 4474, 4475, 7, 16, 0, 0, 4475, 854, 1, 0, 0, 0, 4476, 4477, 7, 16, 0, 0, 4477, 4478, 7, 13, 0, 0, 4478, 4479, 7, 17, 0, 0, 4479, 4480, 7, 15, 0, 0, 4480, 856, 1, 0, 0, 0, 4481, 4482, 7, 27, 0, 0, 4482, 4483, 7, 5, 0, 0, 4483, 4484, 7, 6, 0, 0, 4484, 4485, 7, 22, 0, 0, 4485, 4486, 7, 10, 0, 0, 4486, 4487, 7, 9, 0, 0, 4487, 858, 1, 0, 0, 0, 4488, 4489, 7, 27, 0, 0, 4489, 4490, 7, 5, 0, 0, 4490, 4491, 7, 13, 0, 0, 4491, 4492, 7, 14, 0, 0, 4492, 4493, 7, 20, 0, 0, 4493, 4494, 7, 5, 0, 0, 4494, 4495, 7, 13, 0, 0, 4495, 860, 1, 0, 0, 0, 4496, 4497, 7, 26, 0, 0, 4497, 4498, 7, 15, 0, 0, 4498, 4499, 7, 6, 0, 0, 4499, 4500, 7, 5, 0, 0, 4500, 4501, 7, 16, 0, 0, 4501, 4502, 7, 16, 0, 0, 4502, 4503, 7, 13, 0, 0, 4503, 4504, 7, 17, 0, 0, 4504, 4505, 7, 18, 0, 0, 4505, 4506, 7, 22, 0, 0, 4506, 4507, 7, 16, 0, 0, 4507, 4508, 7, 10, 0, 0, 4508, 4509, 7, 9, 0, 0, 4509, 862, 1, 0, 0, 0, 4510, 4511, 7, 26, 0, 0, 4511, 4512, 7, 15, 0, 0, 4512, 4513, 7, 6, 0, 0, 4513, 4514, 7, 14, 0, 0, 4514, 4515, 7, 19, 0, 0, 4515, 4516, 7, 15, 0, 0, 4516, 4517, 7, 15, 0, 0, 4517, 4518, 7, 10, 0, 0, 4518, 4519, 7, 7, 0, 0, 4519, 4520, 7, 16, 0, 0, 4520, 864, 1, 0, 0, 0, 4521, 4522, 7, 26, 0, 0, 4522, 4523, 7, 15, 0, 0, 4523, 4524, 7, 6, 0, 0, 4524, 4525, 7, 5, 0, 0, 4525, 4526, 7, 23, 0, 0, 4526, 4527, 7, 23, 0, 0, 4527, 866, 1, 0, 0, 0, 4528, 4529, 7, 26, 0, 0, 4529, 4530, 7, 15, 0, 0, 4530, 4531, 7, 6, 0, 0, 4531, 4532, 5, 95, 0, 0, 4532, 4533, 7, 17, 0, 0, 4533, 4534, 7, 9, 0, 0, 4534, 4535, 5, 95, 0, 0, 4535, 4536, 7, 28, 0, 0, 4536, 4537, 7, 10, 0, 0, 4537, 4538, 7, 6, 0, 0, 4538, 4539, 7, 6, 0, 0, 4539, 4540, 5, 95, 0, 0, 4540, 4541, 7, 25, 0, 0, 4541, 4542, 7, 19, 0, 0, 4542, 4543, 7, 13, 0, 0, 4543, 4544, 7, 15, 0, 0, 4544, 4545, 7, 10, 0, 0, 4545, 4546, 7, 12, 0, 0, 4546, 868, 1, 0, 0, 0, 4547, 4548, 7, 26, 0, 0, 4548, 4549, 7, 15, 0, 0, 4549, 4550, 7, 6, 0, 0, 4550, 4551, 5, 95, 0, 0, 4551, 4552, 7, 17, 0, 0, 4552, 4553, 7, 9, 0, 0, 4553, 4554, 5, 95, 0, 0, 4554, 4555, 7, 28, 0, 0, 4555, 4556, 7, 10, 0, 0, 4556, 4557, 7, 6, 0, 0, 4557, 4558, 7, 6, 0, 0, 4558, 4559, 5, 95, 0, 0, 4559, 4560, 7, 25, 0, 0, 4560, 4561, 7, 19, 0, 0, 4561, 4562, 7, 13, 0, 0, 4562, 4563, 7, 15, 0, 0, 4563, 4564, 7, 10, 0, 0, 4564, 4565, 7, 12, 0, 0, 4565, 4566, 5, 95, 0, 0, 4566, 4567, 7, 12, 0, 0, 4567, 4568, 7, 19, 0, 0, 4568, 4569, 7, 14, 0, 0, 4569, 4570, 7, 22, 0, 0, 4570, 4571, 7, 15, 0, 0, 4571, 4572, 7, 10, 0, 0, 4572, 4573, 7, 7, 0, 0, 4573, 4574, 7, 16, 0, 0, 4574, 870, 1, 0, 0, 0, 4575, 4576, 7, 26, 0, 0, 4576, 4577, 7, 15, 0, 0, 4577, 4578, 7, 6, 0, 0, 4578, 4579, 5, 95, 0, 0, 4579, 4580, 7, 17, 0, 0, 4580, 4581, 7, 9, 0, 0, 4581, 4582, 5, 95, 0, 0, 4582, 4583, 7, 28, 0, 0, 4583, 4584, 7, 10, 0, 0, 4584, 4585, 7, 6, 0, 0, 4585, 4586, 7, 6, 0, 0, 4586, 4587, 5, 95, 0, 0, 4587, 4588, 7, 25, 0, 0, 4588, 4589, 7, 19, 0, 0, 4589, 4590, 7, 13, 0, 0, 4590, 4591, 7, 15, 0, 0, 4591, 4592, 7, 10, 0, 0, 4592, 4593, 7, 12, 0, 0, 4593, 4594, 5, 95, 0, 0, 4594, 4595, 7, 14, 0, 0, 4595, 4596, 7, 19, 0, 0, 4596, 4597, 7, 7, 0, 0, 4597, 4598, 7, 16, 0, 0, 4598, 4599, 7, 10, 0, 0, 4599, 4600, 7, 7, 0, 0, 4600, 4601, 7, 16, 0, 0, 4601, 872, 1, 0, 0, 0, 4602, 4603, 7, 26, 0, 0, 4603, 4604, 7, 24, 0, 0, 4604, 4605, 7, 5, 0, 0, 4605, 4606, 7, 16, 0, 0, 4606, 4607, 7, 20, 0, 0, 4607, 874, 1, 0, 0, 0, 4608, 4609, 7, 26, 0, 0, 4609, 4610, 7, 24, 0, 0, 4610, 4611, 7, 5, 0, 0, 4611, 4612, 7, 16, 0, 0, 4612, 4613, 7, 20, 0, 0, 4613, 4614, 5, 95, 0, 0, 4614, 4615, 7, 10, 0, 0, 4615, 4616, 7, 26, 0, 0, 4616, 4617, 7, 17, 0, 0, 4617, 4618, 7, 9, 0, 0, 4618, 4619, 7, 16, 0, 0, 4619, 4620, 7, 9, 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, 14, 0, 0, 4625, 4626, 7, 19, 0, 0, 4626, 4627, 7, 7, 0, 0, 4627, 4628, 7, 14, 0, 0, 4628, 4629, 7, 5, 0, 0, 4629, 4630, 7, 16, 0, 0, 4630, 878, 1, 0, 0, 0, 4631, 4632, 7, 26, 0, 0, 4632, 4633, 7, 15, 0, 0, 4633, 4634, 7, 6, 0, 0, 4634, 4635, 7, 10, 0, 0, 4635, 4636, 7, 6, 0, 0, 4636, 4637, 7, 10, 0, 0, 4637, 4638, 7, 15, 0, 0, 4638, 4639, 7, 10, 0, 0, 4639, 4640, 7, 7, 0, 0, 4640, 4641, 7, 16, 0, 0, 4641, 880, 1, 0, 0, 0, 4642, 4643, 7, 26, 0, 0, 4643, 4644, 7, 15, 0, 0, 4644, 4645, 7, 6, 0, 0, 4645, 4646, 7, 10, 0, 0, 4646, 4647, 7, 26, 0, 0, 4647, 4648, 7, 17, 0, 0, 4648, 4649, 7, 9, 0, 0, 4649, 4650, 7, 16, 0, 0, 4650, 4651, 7, 9, 0, 0, 4651, 882, 1, 0, 0, 0, 4652, 4653, 7, 26, 0, 0, 4653, 4654, 7, 15, 0, 0, 4654, 4655, 7, 6, 0, 0, 4655, 4656, 7, 25, 0, 0, 4656, 4657, 7, 19, 0, 0, 4657, 4658, 7, 13, 0, 0, 4658, 4659, 7, 10, 0, 0, 4659, 4660, 7, 9, 0, 0, 4660, 4661, 7, 16, 0, 0, 4661, 884, 1, 0, 0, 0, 4662, 4663, 7, 26, 0, 0, 4663, 4664, 7, 15, 0, 0, 4664, 4665, 7, 6, 0, 0, 4665, 4666, 7, 24, 0, 0, 4666, 4667, 7, 5, 0, 0, 4667, 4668, 7, 13, 0, 0, 4668, 4669, 7, 9, 0, 0, 4669, 4670, 7, 10, 0, 0, 4670, 886, 1, 0, 0, 0, 4671, 4672, 7, 26, 0, 0, 4672, 4673, 7, 15, 0, 0, 4673, 4674, 7, 6, 0, 0, 4674, 4675, 7, 24, 0, 0, 4675, 4676, 7, 17, 0, 0, 4676, 888, 1, 0, 0, 0, 4677, 4678, 7, 26, 0, 0, 4678, 4679, 7, 15, 0, 0, 4679, 4680, 7, 6, 0, 0, 4680, 4681, 7, 13, 0, 0, 4681, 4682, 7, 19, 0, 0, 4682, 4683, 7, 19, 0, 0, 4683, 4684, 7, 16, 0, 0, 4684, 890, 1, 0, 0, 0, 4685, 4686, 7, 26, 0, 0, 4686, 4687, 7, 15, 0, 0, 4687, 4688, 7, 6, 0, 0, 4688, 4689, 7, 9, 0, 0, 4689, 4690, 7, 10, 0, 0, 4690, 4691, 7, 13, 0, 0, 4691, 4692, 7, 17, 0, 0, 4692, 4693, 7, 5, 0, 0, 4693, 4694, 7, 6, 0, 0, 4694, 4695, 7, 17, 0, 0, 4695, 4696, 7, 11, 0, 0, 4696, 4697, 7, 10, 0, 0, 4697, 892, 1, 0, 0, 0, 4698, 4699, 7, 14, 0, 0, 4699, 4700, 7, 5, 0, 0, 4700, 4701, 7, 6, 0, 0, 4701, 4702, 7, 6, 0, 0, 4702, 894, 1, 0, 0, 0, 4703, 4704, 7, 14, 0, 0, 4704, 4705, 7, 22, 0, 0, 4705, 4706, 7, 13, 0, 0, 4706, 4707, 7, 13, 0, 0, 4707, 4708, 7, 10, 0, 0, 4708, 4709, 7, 7, 0, 0, 4709, 4710, 7, 16, 0, 0, 4710, 896, 1, 0, 0, 0, 4711, 4712, 7, 5, 0, 0, 4712, 4713, 7, 16, 0, 0, 4713, 4714, 7, 16, 0, 0, 4714, 4715, 7, 5, 0, 0, 4715, 4716, 7, 14, 0, 0, 4716, 4717, 7, 20, 0, 0, 4717, 898, 1, 0, 0, 0, 4718, 4719, 7, 12, 0, 0, 4719, 4720, 7, 10, 0, 0, 4720, 4721, 7, 16, 0, 0, 4721, 4722, 7, 5, 0, 0, 4722, 4723, 7, 14, 0, 0, 4723, 4724, 7, 20, 0, 0, 4724, 900, 1, 0, 0, 0, 4725, 4726, 7, 10, 0, 0, 4726, 4727, 7, 26, 0, 0, 4727, 4728, 7, 24, 0, 0, 4728, 4729, 7, 13, 0, 0, 4729, 4730, 7, 10, 0, 0, 4730, 4731, 7, 9, 0, 0, 4731, 4732, 7, 9, 0, 0, 4732, 4733, 7, 17, 0, 0, 4733, 4734, 7, 19, 0, 0, 4734, 4735, 7, 7, 0, 0, 4735, 902, 1, 0, 0, 0, 4736, 4737, 7, 23, 0, 0, 4737, 4738, 7, 10, 0, 0, 4738, 4739, 7, 7, 0, 0, 4739, 4740, 7, 10, 0, 0, 4740, 4741, 7, 13, 0, 0, 4741, 4742, 7, 5, 0, 0, 4742, 4743, 7, 16, 0, 0, 4743, 4744, 7, 10, 0, 0, 4744, 4745, 7, 12, 0, 0, 4745, 904, 1, 0, 0, 0, 4746, 4747, 7, 6, 0, 0, 4747, 4748, 7, 19, 0, 0, 4748, 4749, 7, 23, 0, 0, 4749, 4750, 7, 23, 0, 0, 4750, 4751, 7, 10, 0, 0, 4751, 4752, 7, 12, 0, 0, 4752, 906, 1, 0, 0, 0, 4753, 4754, 7, 9, 0, 0, 4754, 4755, 7, 16, 0, 0, 4755, 4756, 7, 19, 0, 0, 4756, 4757, 7, 13, 0, 0, 4757, 4758, 7, 10, 0, 0, 4758, 4759, 7, 12, 0, 0, 4759, 908, 1, 0, 0, 0, 4760, 4761, 7, 17, 0, 0, 4761, 4762, 7, 7, 0, 0, 4762, 4763, 7, 14, 0, 0, 4763, 4764, 7, 6, 0, 0, 4764, 4765, 7, 22, 0, 0, 4765, 4766, 7, 12, 0, 0, 4766, 4767, 7, 10, 0, 0, 4767, 910, 1, 0, 0, 0, 4768, 4769, 7, 13, 0, 0, 4769, 4770, 7, 19, 0, 0, 4770, 4771, 7, 22, 0, 0, 4771, 4772, 7, 16, 0, 0, 4772, 4773, 7, 17, 0, 0, 4773, 4774, 7, 7, 0, 0, 4774, 4775, 7, 10, 0, 0, 4775, 912, 1, 0, 0, 0, 4776, 4777, 7, 16, 0, 0, 4777, 4778, 7, 13, 0, 0, 4778, 4779, 7, 5, 0, 0, 4779, 4780, 7, 7, 0, 0, 4780, 4781, 7, 9, 0, 0, 4781, 4782, 7, 25, 0, 0, 4782, 4783, 7, 19, 0, 0, 4783, 4784, 7, 13, 0, 0, 4784, 4785, 7, 15, 0, 0, 4785, 914, 1, 0, 0, 0, 4786, 4787, 7, 17, 0, 0, 4787, 4788, 7, 15, 0, 0, 4788, 4789, 7, 24, 0, 0, 4789, 4790, 7, 19, 0, 0, 4790, 4791, 7, 13, 0, 0, 4791, 4792, 7, 16, 0, 0, 4792, 916, 1, 0, 0, 0, 4793, 4794, 7, 24, 0, 0, 4794, 4795, 7, 19, 0, 0, 4795, 4796, 7, 6, 0, 0, 4796, 4797, 7, 17, 0, 0, 4797, 4798, 7, 14, 0, 0, 4798, 4799, 7, 8, 0, 0, 4799, 918, 1, 0, 0, 0, 4800, 4801, 7, 15, 0, 0, 4801, 4802, 7, 10, 0, 0, 4802, 4803, 7, 16, 0, 0, 4803, 4804, 7, 20, 0, 0, 4804, 4805, 7, 19, 0, 0, 4805, 4806, 7, 12, 0, 0, 4806, 920, 1, 0, 0, 0, 4807, 4808, 7, 13, 0, 0, 4808, 4809, 7, 10, 0, 0, 4809, 4810, 7, 25, 0, 0, 4810, 4811, 7, 10, 0, 0, 4811, 4812, 7, 13, 0, 0, 4812, 4813, 7, 10, 0, 0, 4813, 4814, 7, 7, 0, 0, 4814, 4815, 7, 14, 0, 0, 4815, 4816, 7, 17, 0, 0, 4816, 4817, 7, 7, 0, 0, 4817, 4818, 7, 23, 0, 0, 4818, 922, 1, 0, 0, 0, 4819, 4820, 7, 7, 0, 0, 4820, 4821, 7, 10, 0, 0, 4821, 4822, 7, 28, 0, 0, 4822, 924, 1, 0, 0, 0, 4823, 4824, 7, 19, 0, 0, 4824, 4825, 7, 6, 0, 0, 4825, 4826, 7, 12, 0, 0, 4826, 926, 1, 0, 0, 0, 4827, 4828, 7, 27, 0, 0, 4828, 4829, 7, 5, 0, 0, 4829, 4830, 7, 6, 0, 0, 4830, 4831, 7, 22, 0, 0, 4831, 4832, 7, 10, 0, 0, 4832, 928, 1, 0, 0, 0, 4833, 4834, 7, 9, 0, 0, 4834, 4835, 7, 22, 0, 0, 4835, 4836, 7, 18, 0, 0, 4836, 4837, 7, 9, 0, 0, 4837, 4838, 7, 14, 0, 0, 4838, 4839, 7, 13, 0, 0, 4839, 4840, 7, 17, 0, 0, 4840, 4841, 7, 24, 0, 0, 4841, 4842, 7, 16, 0, 0, 4842, 4843, 7, 17, 0, 0, 4843, 4844, 7, 19, 0, 0, 4844, 4845, 7, 7, 0, 0, 4845, 930, 1, 0, 0, 0, 4846, 4847, 7, 24, 0, 0, 4847, 4848, 7, 22, 0, 0, 4848, 4849, 7, 18, 0, 0, 4849, 4850, 7, 6, 0, 0, 4850, 4851, 7, 17, 0, 0, 4851, 4852, 7, 14, 0, 0, 4852, 4853, 7, 5, 0, 0, 4853, 4854, 7, 16, 0, 0, 4854, 4855, 7, 17, 0, 0, 4855, 4856, 7, 19, 0, 0, 4856, 4857, 7, 7, 0, 0, 4857, 932, 1, 0, 0, 0, 4858, 4859, 7, 19, 0, 0, 4859, 4860, 7, 22, 0, 0, 4860, 4861, 7, 16, 0, 0, 4861, 934, 1, 0, 0, 0, 4862, 4863, 7, 10, 0, 0, 4863, 4864, 7, 7, 0, 0, 4864, 4865, 7, 12, 0, 0, 4865, 936, 1, 0, 0, 0, 4866, 4867, 7, 13, 0, 0, 4867, 4868, 7, 19, 0, 0, 4868, 4869, 7, 22, 0, 0, 4869, 4870, 7, 16, 0, 0, 4870, 4871, 7, 17, 0, 0, 4871, 4872, 7, 7, 0, 0, 4872, 4873, 7, 10, 0, 0, 4873, 4874, 7, 9, 0, 0, 4874, 938, 1, 0, 0, 0, 4875, 4876, 7, 9, 0, 0, 4876, 4877, 7, 14, 0, 0, 4877, 4878, 7, 20, 0, 0, 4878, 4879, 7, 10, 0, 0, 4879, 4880, 7, 15, 0, 0, 4880, 4881, 7, 5, 0, 0, 4881, 4882, 7, 9, 0, 0, 4882, 940, 1, 0, 0, 0, 4883, 4884, 7, 24, 0, 0, 4884, 4885, 7, 13, 0, 0, 4885, 4886, 7, 19, 0, 0, 4886, 4887, 7, 14, 0, 0, 4887, 4888, 7, 10, 0, 0, 4888, 4889, 7, 12, 0, 0, 4889, 4890, 7, 22, 0, 0, 4890, 4891, 7, 13, 0, 0, 4891, 4892, 7, 10, 0, 0, 4892, 4893, 7, 9, 0, 0, 4893, 942, 1, 0, 0, 0, 4894, 4895, 7, 17, 0, 0, 4895, 4896, 7, 7, 0, 0, 4896, 4897, 7, 24, 0, 0, 4897, 4898, 7, 22, 0, 0, 4898, 4899, 7, 16, 0, 0, 4899, 944, 1, 0, 0, 0, 4900, 4901, 7, 9, 0, 0, 4901, 4902, 7, 22, 0, 0, 4902, 4903, 7, 24, 0, 0, 4903, 4904, 7, 24, 0, 0, 4904, 4905, 7, 19, 0, 0, 4905, 4906, 7, 13, 0, 0, 4906, 4907, 7, 16, 0, 0, 4907, 946, 1, 0, 0, 0, 4908, 4909, 7, 24, 0, 0, 4909, 4910, 7, 5, 0, 0, 4910, 4911, 7, 13, 0, 0, 4911, 4912, 7, 5, 0, 0, 4912, 4913, 7, 6, 0, 0, 4913, 4914, 7, 6, 0, 0, 4914, 4915, 7, 10, 0, 0, 4915, 4916, 7, 6, 0, 0, 4916, 948, 1, 0, 0, 0, 4917, 4918, 7, 9, 0, 0, 4918, 4919, 7, 29, 0, 0, 4919, 4920, 7, 6, 0, 0, 4920, 950, 1, 0, 0, 0, 4921, 4922, 7, 12, 0, 0, 4922, 4923, 7, 10, 0, 0, 4923, 4924, 7, 24, 0, 0, 4924, 4925, 7, 10, 0, 0, 4925, 4926, 7, 7, 0, 0, 4926, 4927, 7, 12, 0, 0, 4927, 4928, 7, 9, 0, 0, 4928, 952, 1, 0, 0, 0, 4929, 4930, 7, 19, 0, 0, 4930, 4931, 7, 27, 0, 0, 4931, 4932, 7, 10, 0, 0, 4932, 4933, 7, 13, 0, 0, 4933, 4934, 7, 13, 0, 0, 4934, 4935, 7, 17, 0, 0, 4935, 4936, 7, 12, 0, 0, 4936, 4937, 7, 17, 0, 0, 4937, 4938, 7, 7, 0, 0, 4938, 4939, 7, 23, 0, 0, 4939, 954, 1, 0, 0, 0, 4940, 4941, 7, 14, 0, 0, 4941, 4942, 7, 19, 0, 0, 4942, 4943, 7, 7, 0, 0, 4943, 4944, 7, 25, 0, 0, 4944, 4945, 7, 6, 0, 0, 4945, 4946, 7, 17, 0, 0, 4946, 4947, 7, 14, 0, 0, 4947, 4948, 7, 16, 0, 0, 4948, 956, 1, 0, 0, 0, 4949, 4950, 7, 9, 0, 0, 4950, 4951, 7, 21, 0, 0, 4951, 4952, 7, 17, 0, 0, 4952, 4953, 7, 24, 0, 0, 4953, 958, 1, 0, 0, 0, 4954, 4955, 7, 6, 0, 0, 4955, 4956, 7, 19, 0, 0, 4956, 4957, 7, 14, 0, 0, 4957, 4958, 7, 21, 0, 0, 4958, 4959, 7, 10, 0, 0, 4959, 4960, 7, 12, 0, 0, 4960, 960, 1, 0, 0, 0, 4961, 4962, 7, 16, 0, 0, 4962, 4963, 7, 17, 0, 0, 4963, 4964, 7, 10, 0, 0, 4964, 4965, 7, 9, 0, 0, 4965, 962, 1, 0, 0, 0, 4966, 4967, 7, 13, 0, 0, 4967, 4968, 7, 19, 0, 0, 4968, 4969, 7, 6, 0, 0, 4969, 4970, 7, 6, 0, 0, 4970, 4971, 7, 22, 0, 0, 4971, 4972, 7, 24, 0, 0, 4972, 964, 1, 0, 0, 0, 4973, 4974, 7, 14, 0, 0, 4974, 4975, 7, 22, 0, 0, 4975, 4976, 7, 18, 0, 0, 4976, 4977, 7, 10, 0, 0, 4977, 966, 1, 0, 0, 0, 4978, 4979, 7, 23, 0, 0, 4979, 4980, 7, 13, 0, 0, 4980, 4981, 7, 19, 0, 0, 4981, 4982, 7, 22, 0, 0, 4982, 4983, 7, 24, 0, 0, 4983, 4984, 7, 17, 0, 0, 4984, 4985, 7, 7, 0, 0, 4985, 4986, 7, 23, 0, 0, 4986, 968, 1, 0, 0, 0, 4987, 4988, 7, 9, 0, 0, 4988, 4989, 7, 10, 0, 0, 4989, 4990, 7, 16, 0, 0, 4990, 4991, 7, 9, 0, 0, 4991, 970, 1, 0, 0, 0, 4992, 4993, 7, 16, 0, 0, 4993, 4994, 7, 5, 0, 0, 4994, 4995, 7, 18, 0, 0, 4995, 4996, 7, 6, 0, 0, 4996, 4997, 7, 10, 0, 0, 4997, 4998, 7, 9, 0, 0, 4998, 4999, 7, 5, 0, 0, 4999, 5000, 7, 15, 0, 0, 5000, 5001, 7, 24, 0, 0, 5001, 5002, 7, 6, 0, 0, 5002, 5003, 7, 10, 0, 0, 5003, 972, 1, 0, 0, 0, 5004, 5005, 7, 19, 0, 0, 5005, 5006, 7, 13, 0, 0, 5006, 5007, 7, 12, 0, 0, 5007, 5008, 7, 17, 0, 0, 5008, 5009, 7, 7, 0, 0, 5009, 5010, 7, 5, 0, 0, 5010, 5011, 7, 6, 0, 0, 5011, 5012, 7, 17, 0, 0, 5012, 5013, 7, 16, 0, 0, 5013, 5014, 7, 8, 0, 0, 5014, 974, 1, 0, 0, 0, 5015, 5016, 7, 26, 0, 0, 5016, 5017, 7, 15, 0, 0, 5017, 5018, 7, 6, 0, 0, 5018, 5019, 7, 16, 0, 0, 5019, 5020, 7, 5, 0, 0, 5020, 5021, 7, 18, 0, 0, 5021, 5022, 7, 6, 0, 0, 5022, 5023, 7, 10, 0, 0, 5023, 976, 1, 0, 0, 0, 5024, 5025, 7, 14, 0, 0, 5025, 5026, 7, 19, 0, 0, 5026, 5027, 7, 6, 0, 0, 5027, 5028, 7, 22, 0, 0, 5028, 5029, 7, 15, 0, 0, 5029, 5030, 7, 7, 0, 0, 5030, 5031, 7, 9, 0, 0, 5031, 978, 1, 0, 0, 0, 5032, 5033, 7, 26, 0, 0, 5033, 5034, 7, 15, 0, 0, 5034, 5035, 7, 6, 0, 0, 5035, 5036, 7, 7, 0, 0, 5036, 5037, 7, 5, 0, 0, 5037, 5038, 7, 15, 0, 0, 5038, 5039, 7, 10, 0, 0, 5039, 5040, 7, 9, 0, 0, 5040, 5041, 7, 24, 0, 0, 5041, 5042, 7, 5, 0, 0, 5042, 5043, 7, 14, 0, 0, 5043, 5044, 7, 10, 0, 0, 5044, 5045, 7, 9, 0, 0, 5045, 980, 1, 0, 0, 0, 5046, 5047, 7, 13, 0, 0, 5047, 5048, 7, 19, 0, 0, 5048, 5049, 7, 28, 0, 0, 5049, 5050, 7, 16, 0, 0, 5050, 5051, 7, 8, 0, 0, 5051, 5052, 7, 24, 0, 0, 5052, 5053, 7, 10, 0, 0, 5053, 982, 1, 0, 0, 0, 5054, 5055, 7, 7, 0, 0, 5055, 5056, 7, 19, 0, 0, 5056, 5057, 7, 13, 0, 0, 5057, 5058, 7, 15, 0, 0, 5058, 5059, 7, 5, 0, 0, 5059, 5060, 7, 6, 0, 0, 5060, 5061, 7, 17, 0, 0, 5061, 5062, 7, 11, 0, 0, 5062, 5063, 7, 10, 0, 0, 5063, 5064, 7, 12, 0, 0, 5064, 984, 1, 0, 0, 0, 5065, 5066, 7, 28, 0, 0, 5066, 5067, 7, 17, 0, 0, 5067, 5068, 7, 16, 0, 0, 5068, 5069, 7, 20, 0, 0, 5069, 5070, 7, 17, 0, 0, 5070, 5071, 7, 7, 0, 0, 5071, 986, 1, 0, 0, 0, 5072, 5073, 7, 25, 0, 0, 5073, 5074, 7, 17, 0, 0, 5074, 5075, 7, 6, 0, 0, 5075, 5076, 7, 16, 0, 0, 5076, 5077, 7, 10, 0, 0, 5077, 5078, 7, 13, 0, 0, 5078, 988, 1, 0, 0, 0, 5079, 5080, 7, 23, 0, 0, 5080, 5081, 7, 13, 0, 0, 5081, 5082, 7, 19, 0, 0, 5082, 5083, 7, 22, 0, 0, 5083, 5084, 7, 24, 0, 0, 5084, 5085, 7, 9, 0, 0, 5085, 990, 1, 0, 0, 0, 5086, 5087, 7, 19, 0, 0, 5087, 5088, 7, 16, 0, 0, 5088, 5089, 7, 20, 0, 0, 5089, 5090, 7, 10, 0, 0, 5090, 5091, 7, 13, 0, 0, 5091, 5092, 7, 9, 0, 0, 5092, 992, 1, 0, 0, 0, 5093, 5094, 7, 7, 0, 0, 5094, 5095, 7, 25, 0, 0, 5095, 5096, 7, 14, 0, 0, 5096, 994, 1, 0, 0, 0, 5097, 5098, 7, 7, 0, 0, 5098, 5099, 7, 25, 0, 0, 5099, 5100, 7, 12, 0, 0, 5100, 996, 1, 0, 0, 0, 5101, 5102, 7, 7, 0, 0, 5102, 5103, 7, 25, 0, 0, 5103, 5104, 7, 21, 0, 0, 5104, 5105, 7, 14, 0, 0, 5105, 998, 1, 0, 0, 0, 5106, 5107, 7, 7, 0, 0, 5107, 5108, 7, 25, 0, 0, 5108, 5109, 7, 21, 0, 0, 5109, 5110, 7, 12, 0, 0, 5110, 1000, 1, 0, 0, 0, 5111, 5112, 7, 22, 0, 0, 5112, 5113, 7, 10, 0, 0, 5113, 5114, 7, 9, 0, 0, 5114, 5115, 7, 14, 0, 0, 5115, 5116, 7, 5, 0, 0, 5116, 5117, 7, 24, 0, 0, 5117, 5118, 7, 10, 0, 0, 5118, 1002, 1, 0, 0, 0, 5119, 5120, 7, 27, 0, 0, 5120, 5121, 7, 17, 0, 0, 5121, 5122, 7, 10, 0, 0, 5122, 5123, 7, 28, 0, 0, 5123, 5124, 7, 9, 0, 0, 5124, 1004, 1, 0, 0, 0, 5125, 5126, 7, 7, 0, 0, 5126, 5127, 7, 19, 0, 0, 5127, 5128, 7, 13, 0, 0, 5128, 5129, 7, 15, 0, 0, 5129, 5130, 7, 5, 0, 0, 5130, 5131, 7, 6, 0, 0, 5131, 5132, 7, 17, 0, 0, 5132, 5133, 7, 11, 0, 0, 5133, 5134, 7, 10, 0, 0, 5134, 1006, 1, 0, 0, 0, 5135, 5136, 7, 12, 0, 0, 5136, 5137, 7, 22, 0, 0, 5137, 5138, 7, 15, 0, 0, 5138, 5139, 7, 24, 0, 0, 5139, 1008, 1, 0, 0, 0, 5140, 5141, 7, 24, 0, 0, 5141, 5142, 7, 13, 0, 0, 5142, 5143, 7, 17, 0, 0, 5143, 5144, 7, 7, 0, 0, 5144, 5145, 7, 16, 0, 0, 5145, 5146, 5, 95, 0, 0, 5146, 5147, 7, 9, 0, 0, 5147, 5148, 7, 16, 0, 0, 5148, 5149, 7, 13, 0, 0, 5149, 5150, 7, 17, 0, 0, 5150, 5151, 7, 14, 0, 0, 5151, 5152, 7, 16, 0, 0, 5152, 5153, 5, 95, 0, 0, 5153, 5154, 7, 24, 0, 0, 5154, 5155, 7, 5, 0, 0, 5155, 5156, 7, 13, 0, 0, 5156, 5157, 7, 5, 0, 0, 5157, 5158, 7, 15, 0, 0, 5158, 5159, 7, 9, 0, 0, 5159, 1010, 1, 0, 0, 0, 5160, 5161, 7, 27, 0, 0, 5161, 5162, 7, 5, 0, 0, 5162, 5163, 7, 13, 0, 0, 5163, 5164, 7, 17, 0, 0, 5164, 5165, 7, 5, 0, 0, 5165, 5166, 7, 18, 0, 0, 5166, 5167, 7, 6, 0, 0, 5167, 5168, 7, 10, 0, 0, 5168, 5169, 5, 95, 0, 0, 5169, 5170, 7, 14, 0, 0, 5170, 5171, 7, 19, 0, 0, 5171, 5172, 7, 7, 0, 0, 5172, 5173, 7, 25, 0, 0, 5173, 5174, 7, 6, 0, 0, 5174, 5175, 7, 17, 0, 0, 5175, 5176, 7, 14, 0, 0, 5176, 5177, 7, 16, 0, 0, 5177, 1012, 1, 0, 0, 0, 5178, 5179, 7, 10, 0, 0, 5179, 5180, 7, 13, 0, 0, 5180, 5181, 7, 13, 0, 0, 5181, 5182, 7, 19, 0, 0, 5182, 5183, 7, 13, 0, 0, 5183, 1014, 1, 0, 0, 0, 5184, 5185, 7, 22, 0, 0, 5185, 5186, 7, 9, 0, 0, 5186, 5187, 7, 10, 0, 0, 5187, 5188, 5, 95, 0, 0, 5188, 5189, 7, 27, 0, 0, 5189, 5190, 7, 5, 0, 0, 5190, 5191, 7, 13, 0, 0, 5191, 5192, 7, 17, 0, 0, 5192, 5193, 7, 5, 0, 0, 5193, 5194, 7, 18, 0, 0, 5194, 5195, 7, 6, 0, 0, 5195, 5196, 7, 10, 0, 0, 5196, 1016, 1, 0, 0, 0, 5197, 5198, 7, 22, 0, 0, 5198, 5199, 7, 9, 0, 0, 5199, 5200, 7, 10, 0, 0, 5200, 5201, 5, 95, 0, 0, 5201, 5202, 7, 14, 0, 0, 5202, 5203, 7, 19, 0, 0, 5203, 5204, 7, 6, 0, 0, 5204, 5205, 7, 22, 0, 0, 5205, 5206, 7, 15, 0, 0, 5206, 5207, 7, 7, 0, 0, 5207, 1018, 1, 0, 0, 0, 5208, 5209, 7, 5, 0, 0, 5209, 5210, 7, 6, 0, 0, 5210, 5211, 7, 17, 0, 0, 5211, 5212, 7, 5, 0, 0, 5212, 5213, 7, 9, 0, 0, 5213, 1020, 1, 0, 0, 0, 5214, 5215, 7, 14, 0, 0, 5215, 5216, 7, 19, 0, 0, 5216, 5217, 7, 7, 0, 0, 5217, 5218, 7, 9, 0, 0, 5218, 5219, 7, 16, 0, 0, 5219, 5220, 7, 5, 0, 0, 5220, 5221, 7, 7, 0, 0, 5221, 5222, 7, 16, 0, 0, 5222, 1022, 1, 0, 0, 0, 5223, 5224, 7, 24, 0, 0, 5224, 5225, 7, 10, 0, 0, 5225, 5226, 7, 13, 0, 0, 5226, 5227, 7, 25, 0, 0, 5227, 5228, 7, 19, 0, 0, 5228, 5229, 7, 13, 0, 0, 5229, 5230, 7, 15, 0, 0, 5230, 1024, 1, 0, 0, 0, 5231, 5232, 7, 23, 0, 0, 5232, 5233, 7, 10, 0, 0, 5233, 5234, 7, 16, 0, 0, 5234, 1026, 1, 0, 0, 0, 5235, 5236, 7, 12, 0, 0, 5236, 5237, 7, 17, 0, 0, 5237, 5238, 7, 5, 0, 0, 5238, 5239, 7, 23, 0, 0, 5239, 5240, 7, 7, 0, 0, 5240, 5241, 7, 19, 0, 0, 5241, 5242, 7, 9, 0, 0, 5242, 5243, 7, 16, 0, 0, 5243, 5244, 7, 17, 0, 0, 5244, 5245, 7, 14, 0, 0, 5245, 5246, 7, 9, 0, 0, 5246, 1028, 1, 0, 0, 0, 5247, 5248, 7, 9, 0, 0, 5248, 5249, 7, 16, 0, 0, 5249, 5250, 7, 5, 0, 0, 5250, 5251, 7, 14, 0, 0, 5251, 5252, 7, 21, 0, 0, 5252, 5253, 7, 10, 0, 0, 5253, 5254, 7, 12, 0, 0, 5254, 1030, 1, 0, 0, 0, 5255, 5256, 7, 10, 0, 0, 5256, 5257, 7, 6, 0, 0, 5257, 5258, 7, 9, 0, 0, 5258, 5259, 7, 17, 0, 0, 5259, 5260, 7, 25, 0, 0, 5260, 1032, 1, 0, 0, 0, 5261, 5262, 7, 28, 0, 0, 5262, 5263, 7, 20, 0, 0, 5263, 5264, 7, 17, 0, 0, 5264, 5265, 7, 6, 0, 0, 5265, 5266, 7, 10, 0, 0, 5266, 1034, 1, 0, 0, 0, 5267, 5268, 7, 13, 0, 0, 5268, 5269, 7, 10, 0, 0, 5269, 5270, 7, 27, 0, 0, 5270, 5271, 7, 10, 0, 0, 5271, 5272, 7, 13, 0, 0, 5272, 5273, 7, 9, 0, 0, 5273, 5274, 7, 10, 0, 0, 5274, 1036, 1, 0, 0, 0, 5275, 5276, 7, 25, 0, 0, 5276, 5277, 7, 19, 0, 0, 5277, 5278, 7, 13, 0, 0, 5278, 5279, 7, 10, 0, 0, 5279, 5280, 7, 5, 0, 0, 5280, 5281, 7, 14, 0, 0, 5281, 5282, 7, 20, 0, 0, 5282, 1038, 1, 0, 0, 0, 5283, 5284, 7, 9, 0, 0, 5284, 5285, 7, 6, 0, 0, 5285, 5286, 7, 17, 0, 0, 5286, 5287, 7, 14, 0, 0, 5287, 5288, 7, 10, 0, 0, 5288, 1040, 1, 0, 0, 0, 5289, 5290, 7, 10, 0, 0, 5290, 5291, 7, 26, 0, 0, 5291, 5292, 7, 17, 0, 0, 5292, 5293, 7, 16, 0, 0, 5293, 1042, 1, 0, 0, 0, 5294, 5295, 7, 13, 0, 0, 5295, 5296, 7, 10, 0, 0, 5296, 5297, 7, 16, 0, 0, 5297, 5298, 7, 22, 0, 0, 5298, 5299, 7, 13, 0, 0, 5299, 5300, 7, 7, 0, 0, 5300, 1044, 1, 0, 0, 0, 5301, 5302, 7, 29, 0, 0, 5302, 5303, 7, 22, 0, 0, 5303, 5304, 7, 10, 0, 0, 5304, 5305, 7, 13, 0, 0, 5305, 5306, 7, 8, 0, 0, 5306, 1046, 1, 0, 0, 0, 5307, 5308, 7, 13, 0, 0, 5308, 5309, 7, 5, 0, 0, 5309, 5310, 7, 17, 0, 0, 5310, 5311, 7, 9, 0, 0, 5311, 5312, 7, 10, 0, 0, 5312, 1048, 1, 0, 0, 0, 5313, 5314, 7, 9, 0, 0, 5314, 5315, 7, 29, 0, 0, 5315, 5316, 7, 6, 0, 0, 5316, 5317, 7, 9, 0, 0, 5317, 5318, 7, 16, 0, 0, 5318, 5319, 7, 5, 0, 0, 5319, 5320, 7, 16, 0, 0, 5320, 5321, 7, 10, 0, 0, 5321, 1050, 1, 0, 0, 0, 5322, 5323, 7, 12, 0, 0, 5323, 5324, 7, 10, 0, 0, 5324, 5325, 7, 18, 0, 0, 5325, 5326, 7, 22, 0, 0, 5326, 5327, 7, 23, 0, 0, 5327, 1052, 1, 0, 0, 0, 5328, 5329, 7, 6, 0, 0, 5329, 5330, 7, 19, 0, 0, 5330, 5331, 7, 23, 0, 0, 5331, 1054, 1, 0, 0, 0, 5332, 5333, 7, 17, 0, 0, 5333, 5334, 7, 7, 0, 0, 5334, 5335, 7, 25, 0, 0, 5335, 5336, 7, 19, 0, 0, 5336, 1056, 1, 0, 0, 0, 5337, 5338, 7, 7, 0, 0, 5338, 5339, 7, 19, 0, 0, 5339, 5340, 7, 16, 0, 0, 5340, 5341, 7, 17, 0, 0, 5341, 5342, 7, 14, 0, 0, 5342, 5343, 7, 10, 0, 0, 5343, 1058, 1, 0, 0, 0, 5344, 5345, 7, 28, 0, 0, 5345, 5346, 7, 5, 0, 0, 5346, 5347, 7, 13, 0, 0, 5347, 5348, 7, 7, 0, 0, 5348, 5349, 7, 17, 0, 0, 5349, 5350, 7, 7, 0, 0, 5350, 5351, 7, 23, 0, 0, 5351, 1060, 1, 0, 0, 0, 5352, 5353, 7, 10, 0, 0, 5353, 5354, 7, 26, 0, 0, 5354, 5355, 7, 14, 0, 0, 5355, 5356, 7, 10, 0, 0, 5356, 5357, 7, 24, 0, 0, 5357, 5358, 7, 16, 0, 0, 5358, 5359, 7, 17, 0, 0, 5359, 5360, 7, 19, 0, 0, 5360, 5361, 7, 7, 0, 0, 5361, 1062, 1, 0, 0, 0, 5362, 5363, 7, 5, 0, 0, 5363, 5364, 7, 9, 0, 0, 5364, 5365, 7, 9, 0, 0, 5365, 5366, 7, 10, 0, 0, 5366, 5367, 7, 13, 0, 0, 5367, 5368, 7, 16, 0, 0, 5368, 1064, 1, 0, 0, 0, 5369, 5370, 7, 6, 0, 0, 5370, 5371, 7, 19, 0, 0, 5371, 5372, 7, 19, 0, 0, 5372, 5373, 7, 24, 0, 0, 5373, 1066, 1, 0, 0, 0, 5374, 5375, 7, 19, 0, 0, 5375, 5376, 7, 24, 0, 0, 5376, 5377, 7, 10, 0, 0, 5377, 5378, 7, 7, 0, 0, 5378, 1068, 1, 0, 0, 0, 5379, 5380, 7, 5, 0, 0, 5380, 5381, 7, 18, 0, 0, 5381, 5382, 7, 9, 0, 0, 5382, 1070, 1, 0, 0, 0, 5383, 5384, 7, 14, 0, 0, 5384, 5385, 7, 18, 0, 0, 5385, 5386, 7, 13, 0, 0, 5386, 5387, 7, 16, 0, 0, 5387, 1072, 1, 0, 0, 0, 5388, 5389, 7, 14, 0, 0, 5389, 5390, 7, 10, 0, 0, 5390, 5391, 7, 17, 0, 0, 5391, 5392, 7, 6, 0, 0, 5392, 1074, 1, 0, 0, 0, 5393, 5394, 7, 14, 0, 0, 5394, 5395, 7, 10, 0, 0, 5395, 5396, 7, 17, 0, 0, 5396, 5397, 7, 6, 0, 0, 5397, 5398, 7, 17, 0, 0, 5398, 5399, 7, 7, 0, 0, 5399, 5400, 7, 23, 0, 0, 5400, 1076, 1, 0, 0, 0, 5401, 5402, 7, 12, 0, 0, 5402, 5403, 7, 10, 0, 0, 5403, 5404, 7, 23, 0, 0, 5404, 5405, 7, 13, 0, 0, 5405, 5406, 7, 10, 0, 0, 5406, 5407, 7, 10, 0, 0, 5407, 5408, 7, 9, 0, 0, 5408, 1078, 1, 0, 0, 0, 5409, 5410, 7, 12, 0, 0, 5410, 5411, 7, 17, 0, 0, 5411, 5412, 7, 27, 0, 0, 5412, 1080, 1, 0, 0, 0, 5413, 5414, 7, 10, 0, 0, 5414, 5415, 7, 26, 0, 0, 5415, 5416, 7, 24, 0, 0, 5416, 1082, 1, 0, 0, 0, 5417, 5418, 7, 25, 0, 0, 5418, 5419, 7, 5, 0, 0, 5419, 5420, 7, 14, 0, 0, 5420, 5421, 7, 16, 0, 0, 5421, 5422, 7, 19, 0, 0, 5422, 5423, 7, 13, 0, 0, 5423, 5424, 7, 17, 0, 0, 5424, 5425, 7, 5, 0, 0, 5425, 5426, 7, 6, 0, 0, 5426, 1084, 1, 0, 0, 0, 5427, 5428, 7, 25, 0, 0, 5428, 5429, 7, 6, 0, 0, 5429, 5430, 7, 19, 0, 0, 5430, 5431, 7, 19, 0, 0, 5431, 5432, 7, 13, 0, 0, 5432, 1086, 1, 0, 0, 0, 5433, 5434, 7, 23, 0, 0, 5434, 5435, 7, 14, 0, 0, 5435, 5436, 7, 12, 0, 0, 5436, 1088, 1, 0, 0, 0, 5437, 5438, 7, 6, 0, 0, 5438, 5439, 7, 14, 0, 0, 5439, 5440, 7, 15, 0, 0, 5440, 1090, 1, 0, 0, 0, 5441, 5442, 7, 6, 0, 0, 5442, 5443, 7, 7, 0, 0, 5443, 1092, 1, 0, 0, 0, 5444, 5445, 7, 6, 0, 0, 5445, 5446, 7, 19, 0, 0, 5446, 5447, 7, 23, 0, 0, 5447, 5448, 5, 49, 0, 0, 5448, 5449, 5, 48, 0, 0, 5449, 1094, 1, 0, 0, 0, 5450, 5451, 7, 15, 0, 0, 5451, 5452, 7, 17, 0, 0, 5452, 5453, 7, 7, 0, 0, 5453, 5454, 5, 95, 0, 0, 5454, 5455, 7, 9, 0, 0, 5455, 5456, 7, 14, 0, 0, 5456, 5457, 7, 5, 0, 0, 5457, 5458, 7, 6, 0, 0, 5458, 5459, 7, 10, 0, 0, 5459, 1096, 1, 0, 0, 0, 5460, 5461, 7, 15, 0, 0, 5461, 5462, 7, 19, 0, 0, 5462, 5463, 7, 12, 0, 0, 5463, 1098, 1, 0, 0, 0, 5464, 5465, 7, 24, 0, 0, 5465, 5466, 7, 17, 0, 0, 5466, 1100, 1, 0, 0, 0, 5467, 5468, 7, 24, 0, 0, 5468, 5469, 7, 19, 0, 0, 5469, 5470, 7, 28, 0, 0, 5470, 5471, 7, 10, 0, 0, 5471, 5472, 7, 13, 0, 0, 5472, 1102, 1, 0, 0, 0, 5473, 5474, 7, 13, 0, 0, 5474, 5475, 7, 5, 0, 0, 5475, 5476, 7, 12, 0, 0, 5476, 5477, 7, 17, 0, 0, 5477, 5478, 7, 5, 0, 0, 5478, 5479, 7, 7, 0, 0, 5479, 5480, 7, 9, 0, 0, 5480, 1104, 1, 0, 0, 0, 5481, 5482, 7, 13, 0, 0, 5482, 5483, 7, 19, 0, 0, 5483, 5484, 7, 22, 0, 0, 5484, 5485, 7, 7, 0, 0, 5485, 5486, 7, 12, 0, 0, 5486, 1106, 1, 0, 0, 0, 5487, 5488, 7, 9, 0, 0, 5488, 5489, 7, 14, 0, 0, 5489, 5490, 7, 5, 0, 0, 5490, 5491, 7, 6, 0, 0, 5491, 5492, 7, 10, 0, 0, 5492, 1108, 1, 0, 0, 0, 5493, 5494, 7, 9, 0, 0, 5494, 5495, 7, 17, 0, 0, 5495, 5496, 7, 23, 0, 0, 5496, 5497, 7, 7, 0, 0, 5497, 1110, 1, 0, 0, 0, 5498, 5499, 7, 9, 0, 0, 5499, 5500, 7, 29, 0, 0, 5500, 5501, 7, 13, 0, 0, 5501, 5502, 7, 16, 0, 0, 5502, 1112, 1, 0, 0, 0, 5503, 5504, 7, 16, 0, 0, 5504, 5505, 7, 13, 0, 0, 5505, 5506, 7, 17, 0, 0, 5506, 5507, 7, 15, 0, 0, 5507, 5508, 5, 95, 0, 0, 5508, 5509, 7, 9, 0, 0, 5509, 5510, 7, 14, 0, 0, 5510, 5511, 7, 5, 0, 0, 5511, 5512, 7, 6, 0, 0, 5512, 5513, 7, 10, 0, 0, 5513, 1114, 1, 0, 0, 0, 5514, 5515, 7, 16, 0, 0, 5515, 5516, 7, 13, 0, 0, 5516, 5517, 7, 22, 0, 0, 5517, 5518, 7, 7, 0, 0, 5518, 5519, 7, 14, 0, 0, 5519, 1116, 1, 0, 0, 0, 5520, 5521, 7, 28, 0, 0, 5521, 5522, 7, 17, 0, 0, 5522, 5523, 7, 12, 0, 0, 5523, 5524, 7, 16, 0, 0, 5524, 5525, 7, 20, 0, 0, 5525, 5526, 5, 95, 0, 0, 5526, 5527, 7, 18, 0, 0, 5527, 5528, 7, 22, 0, 0, 5528, 5529, 7, 14, 0, 0, 5529, 5530, 7, 21, 0, 0, 5530, 5531, 7, 10, 0, 0, 5531, 5532, 7, 16, 0, 0, 5532, 1118, 1, 0, 0, 0, 5533, 5534, 7, 13, 0, 0, 5534, 5535, 7, 5, 0, 0, 5535, 5536, 7, 7, 0, 0, 5536, 5537, 7, 12, 0, 0, 5537, 5538, 7, 19, 0, 0, 5538, 5539, 7, 15, 0, 0, 5539, 1120, 1, 0, 0, 0, 5540, 5541, 7, 9, 0, 0, 5541, 5542, 7, 10, 0, 0, 5542, 5543, 7, 16, 0, 0, 5543, 5544, 7, 9, 0, 0, 5544, 5545, 7, 10, 0, 0, 5545, 5546, 7, 10, 0, 0, 5546, 5547, 7, 12, 0, 0, 5547, 1122, 1, 0, 0, 0, 5548, 5549, 7, 5, 0, 0, 5549, 5550, 7, 14, 0, 0, 5550, 5551, 7, 19, 0, 0, 5551, 5552, 7, 9, 0, 0, 5552, 1124, 1, 0, 0, 0, 5553, 5554, 7, 5, 0, 0, 5554, 5555, 7, 14, 0, 0, 5555, 5556, 7, 19, 0, 0, 5556, 5557, 7, 9, 0, 0, 5557, 5558, 7, 12, 0, 0, 5558, 1126, 1, 0, 0, 0, 5559, 5560, 7, 5, 0, 0, 5560, 5561, 7, 9, 0, 0, 5561, 5562, 7, 17, 0, 0, 5562, 5563, 7, 7, 0, 0, 5563, 1128, 1, 0, 0, 0, 5564, 5565, 7, 5, 0, 0, 5565, 5566, 7, 9, 0, 0, 5566, 5567, 7, 17, 0, 0, 5567, 5568, 7, 7, 0, 0, 5568, 5569, 7, 12, 0, 0, 5569, 1130, 1, 0, 0, 0, 5570, 5571, 7, 5, 0, 0, 5571, 5572, 7, 16, 0, 0, 5572, 5573, 7, 5, 0, 0, 5573, 5574, 7, 7, 0, 0, 5574, 1132, 1, 0, 0, 0, 5575, 5576, 7, 5, 0, 0, 5576, 5577, 7, 16, 0, 0, 5577, 5578, 7, 5, 0, 0, 5578, 5579, 7, 7, 0, 0, 5579, 5580, 7, 12, 0, 0, 5580, 1134, 1, 0, 0, 0, 5581, 5582, 7, 5, 0, 0, 5582, 5583, 7, 16, 0, 0, 5583, 5584, 7, 5, 0, 0, 5584, 5585, 7, 7, 0, 0, 5585, 5586, 5, 50, 0, 0, 5586, 1136, 1, 0, 0, 0, 5587, 5588, 7, 5, 0, 0, 5588, 5589, 7, 16, 0, 0, 5589, 5590, 7, 5, 0, 0, 5590, 5591, 7, 7, 0, 0, 5591, 5592, 5, 50, 0, 0, 5592, 5593, 7, 12, 0, 0, 5593, 1138, 1, 0, 0, 0, 5594, 5595, 7, 14, 0, 0, 5595, 5596, 7, 19, 0, 0, 5596, 5597, 7, 9, 0, 0, 5597, 1140, 1, 0, 0, 0, 5598, 5599, 7, 14, 0, 0, 5599, 5600, 7, 19, 0, 0, 5600, 5601, 7, 9, 0, 0, 5601, 5602, 7, 12, 0, 0, 5602, 1142, 1, 0, 0, 0, 5603, 5604, 7, 14, 0, 0, 5604, 5605, 7, 19, 0, 0, 5605, 5606, 7, 16, 0, 0, 5606, 1144, 1, 0, 0, 0, 5607, 5608, 7, 14, 0, 0, 5608, 5609, 7, 19, 0, 0, 5609, 5610, 7, 16, 0, 0, 5610, 5611, 7, 12, 0, 0, 5611, 1146, 1, 0, 0, 0, 5612, 5613, 7, 9, 0, 0, 5613, 5614, 7, 17, 0, 0, 5614, 5615, 7, 7, 0, 0, 5615, 1148, 1, 0, 0, 0, 5616, 5617, 7, 9, 0, 0, 5617, 5618, 7, 17, 0, 0, 5618, 5619, 7, 7, 0, 0, 5619, 5620, 7, 12, 0, 0, 5620, 1150, 1, 0, 0, 0, 5621, 5622, 7, 16, 0, 0, 5622, 5623, 7, 5, 0, 0, 5623, 5624, 7, 7, 0, 0, 5624, 1152, 1, 0, 0, 0, 5625, 5626, 7, 16, 0, 0, 5626, 5627, 7, 5, 0, 0, 5627, 5628, 7, 7, 0, 0, 5628, 5629, 7, 12, 0, 0, 5629, 1154, 1, 0, 0, 0, 5630, 5631, 7, 9, 0, 0, 5631, 5632, 7, 17, 0, 0, 5632, 5633, 7, 7, 0, 0, 5633, 5634, 7, 20, 0, 0, 5634, 1156, 1, 0, 0, 0, 5635, 5636, 7, 14, 0, 0, 5636, 5637, 7, 19, 0, 0, 5637, 5638, 7, 9, 0, 0, 5638, 5639, 7, 20, 0, 0, 5639, 1158, 1, 0, 0, 0, 5640, 5641, 7, 16, 0, 0, 5641, 5642, 7, 5, 0, 0, 5642, 5643, 7, 7, 0, 0, 5643, 5644, 7, 20, 0, 0, 5644, 1160, 1, 0, 0, 0, 5645, 5646, 7, 5, 0, 0, 5646, 5647, 7, 9, 0, 0, 5647, 5648, 7, 17, 0, 0, 5648, 5649, 7, 7, 0, 0, 5649, 5650, 7, 20, 0, 0, 5650, 1162, 1, 0, 0, 0, 5651, 5652, 7, 5, 0, 0, 5652, 5653, 7, 14, 0, 0, 5653, 5654, 7, 19, 0, 0, 5654, 5655, 7, 9, 0, 0, 5655, 5656, 7, 20, 0, 0, 5656, 1164, 1, 0, 0, 0, 5657, 5658, 7, 5, 0, 0, 5658, 5659, 7, 16, 0, 0, 5659, 5660, 7, 5, 0, 0, 5660, 5661, 7, 7, 0, 0, 5661, 5662, 7, 20, 0, 0, 5662, 1166, 1, 0, 0, 0, 5663, 5664, 7, 18, 0, 0, 5664, 5665, 7, 17, 0, 0, 5665, 5666, 7, 16, 0, 0, 5666, 5667, 5, 95, 0, 0, 5667, 5668, 7, 6, 0, 0, 5668, 5669, 7, 10, 0, 0, 5669, 5670, 7, 7, 0, 0, 5670, 5671, 7, 23, 0, 0, 5671, 5672, 7, 16, 0, 0, 5672, 5673, 7, 20, 0, 0, 5673, 1168, 1, 0, 0, 0, 5674, 5675, 7, 14, 0, 0, 5675, 5676, 7, 20, 0, 0, 5676, 5677, 7, 5, 0, 0, 5677, 5678, 7, 13, 0, 0, 5678, 5679, 5, 95, 0, 0, 5679, 5680, 7, 6, 0, 0, 5680, 5681, 7, 10, 0, 0, 5681, 5682, 7, 7, 0, 0, 5682, 5683, 7, 23, 0, 0, 5683, 5684, 7, 16, 0, 0, 5684, 5685, 7, 20, 0, 0, 5685, 1170, 1, 0, 0, 0, 5686, 5687, 7, 14, 0, 0, 5687, 5688, 7, 20, 0, 0, 5688, 5689, 7, 5, 0, 0, 5689, 5690, 7, 13, 0, 0, 5690, 5691, 7, 5, 0, 0, 5691, 5692, 7, 14, 0, 0, 5692, 5693, 7, 16, 0, 0, 5693, 5694, 7, 10, 0, 0, 5694, 5695, 7, 13, 0, 0, 5695, 5696, 5, 95, 0, 0, 5696, 5697, 7, 6, 0, 0, 5697, 5698, 7, 10, 0, 0, 5698, 5699, 7, 7, 0, 0, 5699, 5700, 7, 23, 0, 0, 5700, 5701, 7, 16, 0, 0, 5701, 5702, 7, 20, 0, 0, 5702, 1172, 1, 0, 0, 0, 5703, 5704, 7, 6, 0, 0, 5704, 5705, 7, 19, 0, 0, 5705, 5706, 7, 28, 0, 0, 5706, 5707, 7, 10, 0, 0, 5707, 5708, 7, 13, 0, 0, 5708, 1174, 1, 0, 0, 0, 5709, 5710, 7, 19, 0, 0, 5710, 5711, 7, 14, 0, 0, 5711, 5712, 7, 16, 0, 0, 5712, 5713, 7, 10, 0, 0, 5713, 5714, 7, 16, 0, 0, 5714, 5715, 5, 95, 0, 0, 5715, 5716, 7, 6, 0, 0, 5716, 5717, 7, 10, 0, 0, 5717, 5718, 7, 7, 0, 0, 5718, 5719, 7, 23, 0, 0, 5719, 5720, 7, 16, 0, 0, 5720, 5721, 7, 20, 0, 0, 5721, 1176, 1, 0, 0, 0, 5722, 5723, 7, 22, 0, 0, 5723, 5724, 7, 24, 0, 0, 5724, 5725, 7, 24, 0, 0, 5725, 5726, 7, 10, 0, 0, 5726, 5727, 7, 13, 0, 0, 5727, 1178, 1, 0, 0, 0, 5728, 5729, 7, 5, 0, 0, 5729, 5730, 7, 9, 0, 0, 5730, 5731, 7, 14, 0, 0, 5731, 5732, 7, 17, 0, 0, 5732, 5733, 7, 17, 0, 0, 5733, 1180, 1, 0, 0, 0, 5734, 5735, 7, 18, 0, 0, 5735, 5736, 7, 16, 0, 0, 5736, 5737, 7, 13, 0, 0, 5737, 5738, 7, 17, 0, 0, 5738, 5739, 7, 15, 0, 0, 5739, 1182, 1, 0, 0, 0, 5740, 5741, 7, 14, 0, 0, 5741, 5742, 7, 20, 0, 0, 5742, 5743, 7, 13, 0, 0, 5743, 1184, 1, 0, 0, 0, 5744, 5745, 7, 14, 0, 0, 5745, 5746, 7, 19, 0, 0, 5746, 5747, 7, 7, 0, 0, 5747, 5748, 7, 14, 0, 0, 5748, 5749, 7, 5, 0, 0, 5749, 5750, 7, 16, 0, 0, 5750, 1186, 1, 0, 0, 0, 5751, 5752, 7, 14, 0, 0, 5752, 5753, 7, 19, 0, 0, 5753, 5754, 7, 7, 0, 0, 5754, 5755, 7, 14, 0, 0, 5755, 5756, 7, 5, 0, 0, 5756, 5757, 7, 16, 0, 0, 5757, 5758, 5, 95, 0, 0, 5758, 5759, 7, 28, 0, 0, 5759, 5760, 7, 9, 0, 0, 5760, 1188, 1, 0, 0, 0, 5761, 5762, 7, 25, 0, 0, 5762, 5763, 7, 19, 0, 0, 5763, 5764, 7, 13, 0, 0, 5764, 5765, 7, 15, 0, 0, 5765, 5766, 7, 5, 0, 0, 5766, 5767, 7, 16, 0, 0, 5767, 1190, 1, 0, 0, 0, 5768, 5769, 7, 17, 0, 0, 5769, 5770, 7, 7, 0, 0, 5770, 5771, 7, 17, 0, 0, 5771, 5772, 7, 16, 0, 0, 5772, 5773, 7, 14, 0, 0, 5773, 5774, 7, 5, 0, 0, 5774, 5775, 7, 24, 0, 0, 5775, 1192, 1, 0, 0, 0, 5776, 5777, 7, 6, 0, 0, 5777, 5778, 7, 10, 0, 0, 5778, 5779, 7, 7, 0, 0, 5779, 5780, 7, 23, 0, 0, 5780, 5781, 7, 16, 0, 0, 5781, 5782, 7, 20, 0, 0, 5782, 1194, 1, 0, 0, 0, 5783, 5784, 7, 6, 0, 0, 5784, 5785, 7, 24, 0, 0, 5785, 5786, 7, 5, 0, 0, 5786, 5787, 7, 12, 0, 0, 5787, 1196, 1, 0, 0, 0, 5788, 5789, 7, 6, 0, 0, 5789, 5790, 7, 16, 0, 0, 5790, 5791, 7, 13, 0, 0, 5791, 5792, 7, 17, 0, 0, 5792, 5793, 7, 15, 0, 0, 5793, 1198, 1, 0, 0, 0, 5794, 5795, 7, 15, 0, 0, 5795, 5796, 7, 12, 0, 0, 5796, 5797, 5, 53, 0, 0, 5797, 1200, 1, 0, 0, 0, 5798, 5799, 7, 24, 0, 0, 5799, 5800, 7, 5, 0, 0, 5800, 5801, 7, 13, 0, 0, 5801, 5802, 7, 9, 0, 0, 5802, 5803, 7, 10, 0, 0, 5803, 5804, 5, 95, 0, 0, 5804, 5805, 7, 17, 0, 0, 5805, 5806, 7, 12, 0, 0, 5806, 5807, 7, 10, 0, 0, 5807, 5808, 7, 7, 0, 0, 5808, 5809, 7, 16, 0, 0, 5809, 1202, 1, 0, 0, 0, 5810, 5811, 7, 24, 0, 0, 5811, 5812, 7, 23, 0, 0, 5812, 5813, 5, 95, 0, 0, 5813, 5814, 7, 14, 0, 0, 5814, 5815, 7, 6, 0, 0, 5815, 5816, 7, 17, 0, 0, 5816, 5817, 7, 10, 0, 0, 5817, 5818, 7, 7, 0, 0, 5818, 5819, 7, 16, 0, 0, 5819, 5820, 5, 95, 0, 0, 5820, 5821, 7, 10, 0, 0, 5821, 5822, 7, 7, 0, 0, 5822, 5823, 7, 14, 0, 0, 5823, 5824, 7, 19, 0, 0, 5824, 5825, 7, 12, 0, 0, 5825, 5826, 7, 17, 0, 0, 5826, 5827, 7, 7, 0, 0, 5827, 5828, 7, 23, 0, 0, 5828, 1204, 1, 0, 0, 0, 5829, 5830, 7, 29, 0, 0, 5830, 5831, 7, 22, 0, 0, 5831, 5832, 7, 19, 0, 0, 5832, 5833, 7, 16, 0, 0, 5833, 5834, 7, 10, 0, 0, 5834, 5835, 5, 95, 0, 0, 5835, 5836, 7, 17, 0, 0, 5836, 5837, 7, 12, 0, 0, 5837, 5838, 7, 10, 0, 0, 5838, 5839, 7, 7, 0, 0, 5839, 5840, 7, 16, 0, 0, 5840, 1206, 1, 0, 0, 0, 5841, 5842, 7, 29, 0, 0, 5842, 5843, 7, 22, 0, 0, 5843, 5844, 7, 19, 0, 0, 5844, 5845, 7, 16, 0, 0, 5845, 5846, 7, 10, 0, 0, 5846, 5847, 5, 95, 0, 0, 5847, 5848, 7, 6, 0, 0, 5848, 5849, 7, 17, 0, 0, 5849, 5850, 7, 16, 0, 0, 5850, 5851, 7, 10, 0, 0, 5851, 5852, 7, 13, 0, 0, 5852, 5853, 7, 5, 0, 0, 5853, 5854, 7, 6, 0, 0, 5854, 1208, 1, 0, 0, 0, 5855, 5856, 7, 29, 0, 0, 5856, 5857, 7, 22, 0, 0, 5857, 5858, 7, 19, 0, 0, 5858, 5859, 7, 16, 0, 0, 5859, 5860, 7, 10, 0, 0, 5860, 5861, 5, 95, 0, 0, 5861, 5862, 7, 7, 0, 0, 5862, 5863, 7, 22, 0, 0, 5863, 5864, 7, 6, 0, 0, 5864, 5865, 7, 6, 0, 0, 5865, 5866, 7, 5, 0, 0, 5866, 5867, 7, 18, 0, 0, 5867, 5868, 7, 6, 0, 0, 5868, 5869, 7, 10, 0, 0, 5869, 1210, 1, 0, 0, 0, 5870, 5871, 7, 13, 0, 0, 5871, 5872, 7, 10, 0, 0, 5872, 5873, 7, 23, 0, 0, 5873, 5874, 7, 10, 0, 0, 5874, 5875, 7, 26, 0, 0, 5875, 5876, 7, 24, 0, 0, 5876, 5877, 5, 95, 0, 0, 5877, 5878, 7, 14, 0, 0, 5878, 5879, 7, 19, 0, 0, 5879, 5880, 7, 22, 0, 0, 5880, 5881, 7, 7, 0, 0, 5881, 5882, 7, 16, 0, 0, 5882, 1212, 1, 0, 0, 0, 5883, 5884, 7, 13, 0, 0, 5884, 5885, 7, 10, 0, 0, 5885, 5886, 7, 23, 0, 0, 5886, 5887, 7, 10, 0, 0, 5887, 5888, 7, 26, 0, 0, 5888, 5889, 7, 24, 0, 0, 5889, 5890, 5, 95, 0, 0, 5890, 5891, 7, 17, 0, 0, 5891, 5892, 7, 7, 0, 0, 5892, 5893, 7, 9, 0, 0, 5893, 5894, 7, 16, 0, 0, 5894, 5895, 7, 13, 0, 0, 5895, 1214, 1, 0, 0, 0, 5896, 5897, 7, 13, 0, 0, 5897, 5898, 7, 10, 0, 0, 5898, 5899, 7, 23, 0, 0, 5899, 5900, 7, 10, 0, 0, 5900, 5901, 7, 26, 0, 0, 5901, 5902, 7, 24, 0, 0, 5902, 5903, 5, 95, 0, 0, 5903, 5904, 7, 6, 0, 0, 5904, 5905, 7, 17, 0, 0, 5905, 5906, 7, 21, 0, 0, 5906, 5907, 7, 10, 0, 0, 5907, 1216, 1, 0, 0, 0, 5908, 5909, 7, 13, 0, 0, 5909, 5910, 7, 10, 0, 0, 5910, 5911, 7, 23, 0, 0, 5911, 5912, 7, 10, 0, 0, 5912, 5913, 7, 26, 0, 0, 5913, 5914, 7, 24, 0, 0, 5914, 5915, 5, 95, 0, 0, 5915, 5916, 7, 15, 0, 0, 5916, 5917, 7, 5, 0, 0, 5917, 5918, 7, 16, 0, 0, 5918, 5919, 7, 14, 0, 0, 5919, 5920, 7, 20, 0, 0, 5920, 1218, 1, 0, 0, 0, 5921, 5922, 7, 13, 0, 0, 5922, 5923, 7, 10, 0, 0, 5923, 5924, 7, 23, 0, 0, 5924, 5925, 7, 10, 0, 0, 5925, 5926, 7, 26, 0, 0, 5926, 5927, 7, 24, 0, 0, 5927, 5928, 5, 95, 0, 0, 5928, 5929, 7, 15, 0, 0, 5929, 5930, 7, 5, 0, 0, 5930, 5931, 7, 16, 0, 0, 5931, 5932, 7, 14, 0, 0, 5932, 5933, 7, 20, 0, 0, 5933, 5934, 7, 10, 0, 0, 5934, 5935, 7, 9, 0, 0, 5935, 1220, 1, 0, 0, 0, 5936, 5937, 7, 13, 0, 0, 5937, 5938, 7, 10, 0, 0, 5938, 5939, 7, 23, 0, 0, 5939, 5940, 7, 10, 0, 0, 5940, 5941, 7, 26, 0, 0, 5941, 5942, 7, 24, 0, 0, 5942, 5943, 5, 95, 0, 0, 5943, 5944, 7, 13, 0, 0, 5944, 5945, 7, 10, 0, 0, 5945, 5946, 7, 24, 0, 0, 5946, 5947, 7, 6, 0, 0, 5947, 5948, 7, 5, 0, 0, 5948, 5949, 7, 14, 0, 0, 5949, 5950, 7, 10, 0, 0, 5950, 1222, 1, 0, 0, 0, 5951, 5952, 7, 13, 0, 0, 5952, 5953, 7, 10, 0, 0, 5953, 5954, 7, 23, 0, 0, 5954, 5955, 7, 10, 0, 0, 5955, 5956, 7, 26, 0, 0, 5956, 5957, 7, 24, 0, 0, 5957, 5958, 5, 95, 0, 0, 5958, 5959, 7, 9, 0, 0, 5959, 5960, 7, 24, 0, 0, 5960, 5961, 7, 6, 0, 0, 5961, 5962, 7, 17, 0, 0, 5962, 5963, 7, 16, 0, 0, 5963, 5964, 5, 95, 0, 0, 5964, 5965, 7, 16, 0, 0, 5965, 5966, 7, 19, 0, 0, 5966, 5967, 5, 95, 0, 0, 5967, 5968, 7, 5, 0, 0, 5968, 5969, 7, 13, 0, 0, 5969, 5970, 7, 13, 0, 0, 5970, 5971, 7, 5, 0, 0, 5971, 5972, 7, 8, 0, 0, 5972, 1224, 1, 0, 0, 0, 5973, 5974, 7, 13, 0, 0, 5974, 5975, 7, 10, 0, 0, 5975, 5976, 7, 23, 0, 0, 5976, 5977, 7, 10, 0, 0, 5977, 5978, 7, 26, 0, 0, 5978, 5979, 7, 24, 0, 0, 5979, 5980, 5, 95, 0, 0, 5980, 5981, 7, 9, 0, 0, 5981, 5982, 7, 24, 0, 0, 5982, 5983, 7, 6, 0, 0, 5983, 5984, 7, 17, 0, 0, 5984, 5985, 7, 16, 0, 0, 5985, 5986, 5, 95, 0, 0, 5986, 5987, 7, 16, 0, 0, 5987, 5988, 7, 19, 0, 0, 5988, 5989, 5, 95, 0, 0, 5989, 5990, 7, 16, 0, 0, 5990, 5991, 7, 5, 0, 0, 5991, 5992, 7, 18, 0, 0, 5992, 5993, 7, 6, 0, 0, 5993, 5994, 7, 10, 0, 0, 5994, 1226, 1, 0, 0, 0, 5995, 5996, 7, 13, 0, 0, 5996, 5997, 7, 10, 0, 0, 5997, 5998, 7, 23, 0, 0, 5998, 5999, 7, 10, 0, 0, 5999, 6000, 7, 26, 0, 0, 6000, 6001, 7, 24, 0, 0, 6001, 6002, 5, 95, 0, 0, 6002, 6003, 7, 9, 0, 0, 6003, 6004, 7, 22, 0, 0, 6004, 6005, 7, 18, 0, 0, 6005, 6006, 7, 9, 0, 0, 6006, 6007, 7, 16, 0, 0, 6007, 6008, 7, 13, 0, 0, 6008, 1228, 1, 0, 0, 0, 6009, 6010, 7, 13, 0, 0, 6010, 6011, 7, 10, 0, 0, 6011, 6012, 7, 24, 0, 0, 6012, 6013, 7, 10, 0, 0, 6013, 6014, 7, 5, 0, 0, 6014, 6015, 7, 16, 0, 0, 6015, 1230, 1, 0, 0, 0, 6016, 6017, 7, 13, 0, 0, 6017, 6018, 7, 24, 0, 0, 6018, 6019, 7, 5, 0, 0, 6019, 6020, 7, 12, 0, 0, 6020, 1232, 1, 0, 0, 0, 6021, 6022, 7, 13, 0, 0, 6022, 6023, 7, 16, 0, 0, 6023, 6024, 7, 13, 0, 0, 6024, 6025, 7, 17, 0, 0, 6025, 6026, 7, 15, 0, 0, 6026, 1234, 1, 0, 0, 0, 6027, 6028, 7, 9, 0, 0, 6028, 6029, 7, 24, 0, 0, 6029, 6030, 7, 6, 0, 0, 6030, 6031, 7, 17, 0, 0, 6031, 6032, 7, 16, 0, 0, 6032, 6033, 5, 95, 0, 0, 6033, 6034, 7, 24, 0, 0, 6034, 6035, 7, 5, 0, 0, 6035, 6036, 7, 13, 0, 0, 6036, 6037, 7, 16, 0, 0, 6037, 1236, 1, 0, 0, 0, 6038, 6039, 7, 9, 0, 0, 6039, 6040, 7, 16, 0, 0, 6040, 6041, 7, 5, 0, 0, 6041, 6042, 7, 13, 0, 0, 6042, 6043, 7, 16, 0, 0, 6043, 6044, 7, 9, 0, 0, 6044, 6045, 5, 95, 0, 0, 6045, 6046, 7, 28, 0, 0, 6046, 6047, 7, 17, 0, 0, 6047, 6048, 7, 16, 0, 0, 6048, 6049, 7, 20, 0, 0, 6049, 1238, 1, 0, 0, 0, 6050, 6051, 7, 9, 0, 0, 6051, 6052, 7, 16, 0, 0, 6052, 6053, 7, 13, 0, 0, 6053, 6054, 7, 17, 0, 0, 6054, 6055, 7, 7, 0, 0, 6055, 6056, 7, 23, 0, 0, 6056, 6057, 5, 95, 0, 0, 6057, 6058, 7, 16, 0, 0, 6058, 6059, 7, 19, 0, 0, 6059, 6060, 5, 95, 0, 0, 6060, 6061, 7, 5, 0, 0, 6061, 6062, 7, 13, 0, 0, 6062, 6063, 7, 13, 0, 0, 6063, 6064, 7, 5, 0, 0, 6064, 6065, 7, 8, 0, 0, 6065, 1240, 1, 0, 0, 0, 6066, 6067, 7, 9, 0, 0, 6067, 6068, 7, 16, 0, 0, 6068, 6069, 7, 13, 0, 0, 6069, 6070, 7, 17, 0, 0, 6070, 6071, 7, 7, 0, 0, 6071, 6072, 7, 23, 0, 0, 6072, 6073, 5, 95, 0, 0, 6073, 6074, 7, 16, 0, 0, 6074, 6075, 7, 19, 0, 0, 6075, 6076, 5, 95, 0, 0, 6076, 6077, 7, 16, 0, 0, 6077, 6078, 7, 5, 0, 0, 6078, 6079, 7, 18, 0, 0, 6079, 6080, 7, 6, 0, 0, 6080, 6081, 7, 10, 0, 0, 6081, 1242, 1, 0, 0, 0, 6082, 6083, 7, 9, 0, 0, 6083, 6084, 7, 16, 0, 0, 6084, 6085, 7, 13, 0, 0, 6085, 6086, 7, 24, 0, 0, 6086, 6087, 7, 19, 0, 0, 6087, 6088, 7, 9, 0, 0, 6088, 1244, 1, 0, 0, 0, 6089, 6090, 7, 9, 0, 0, 6090, 6091, 7, 22, 0, 0, 6091, 6092, 7, 18, 0, 0, 6092, 6093, 7, 9, 0, 0, 6093, 6094, 7, 16, 0, 0, 6094, 6095, 7, 13, 0, 0, 6095, 1246, 1, 0, 0, 0, 6096, 6097, 7, 16, 0, 0, 6097, 6098, 7, 19, 0, 0, 6098, 6099, 5, 95, 0, 0, 6099, 6100, 7, 5, 0, 0, 6100, 6101, 7, 9, 0, 0, 6101, 6102, 7, 14, 0, 0, 6102, 6103, 7, 17, 0, 0, 6103, 6104, 7, 17, 0, 0, 6104, 1248, 1, 0, 0, 0, 6105, 6106, 7, 16, 0, 0, 6106, 6107, 7, 19, 0, 0, 6107, 6108, 5, 95, 0, 0, 6108, 6109, 7, 20, 0, 0, 6109, 6110, 7, 10, 0, 0, 6110, 6111, 7, 26, 0, 0, 6111, 1250, 1, 0, 0, 0, 6112, 6113, 7, 16, 0, 0, 6113, 6114, 7, 13, 0, 0, 6114, 6115, 7, 5, 0, 0, 6115, 6116, 7, 7, 0, 0, 6116, 6117, 7, 9, 0, 0, 6117, 6118, 7, 6, 0, 0, 6118, 6119, 7, 5, 0, 0, 6119, 6120, 7, 16, 0, 0, 6120, 6121, 7, 10, 0, 0, 6121, 1252, 1, 0, 0, 0, 6122, 6123, 7, 22, 0, 0, 6123, 6124, 7, 7, 0, 0, 6124, 6125, 7, 17, 0, 0, 6125, 6126, 7, 9, 0, 0, 6126, 6127, 7, 16, 0, 0, 6127, 6128, 7, 13, 0, 0, 6128, 1254, 1, 0, 0, 0, 6129, 6130, 7, 5, 0, 0, 6130, 6131, 7, 23, 0, 0, 6131, 6132, 7, 10, 0, 0, 6132, 1256, 1, 0, 0, 0, 6133, 6134, 7, 14, 0, 0, 6134, 6135, 7, 6, 0, 0, 6135, 6136, 7, 19, 0, 0, 6136, 6137, 7, 14, 0, 0, 6137, 6138, 7, 21, 0, 0, 6138, 6139, 5, 95, 0, 0, 6139, 6140, 7, 16, 0, 0, 6140, 6141, 7, 17, 0, 0, 6141, 6142, 7, 15, 0, 0, 6142, 6143, 7, 10, 0, 0, 6143, 6144, 7, 9, 0, 0, 6144, 6145, 7, 16, 0, 0, 6145, 6146, 7, 5, 0, 0, 6146, 6147, 7, 15, 0, 0, 6147, 6148, 7, 24, 0, 0, 6148, 1258, 1, 0, 0, 0, 6149, 6150, 7, 12, 0, 0, 6150, 6151, 7, 5, 0, 0, 6151, 6152, 7, 16, 0, 0, 6152, 6153, 7, 10, 0, 0, 6153, 6154, 5, 95, 0, 0, 6154, 6155, 7, 18, 0, 0, 6155, 6156, 7, 17, 0, 0, 6156, 6157, 7, 7, 0, 0, 6157, 1260, 1, 0, 0, 0, 6158, 6159, 7, 12, 0, 0, 6159, 6160, 7, 5, 0, 0, 6160, 6161, 7, 16, 0, 0, 6161, 6162, 7, 10, 0, 0, 6162, 6163, 5, 95, 0, 0, 6163, 6164, 7, 24, 0, 0, 6164, 6165, 7, 5, 0, 0, 6165, 6166, 7, 13, 0, 0, 6166, 6167, 7, 16, 0, 0, 6167, 1262, 1, 0, 0, 0, 6168, 6169, 7, 12, 0, 0, 6169, 6170, 7, 5, 0, 0, 6170, 6171, 7, 16, 0, 0, 6171, 6172, 7, 10, 0, 0, 6172, 6173, 5, 95, 0, 0, 6173, 6174, 7, 16, 0, 0, 6174, 6175, 7, 13, 0, 0, 6175, 6176, 7, 22, 0, 0, 6176, 6177, 7, 7, 0, 0, 6177, 6178, 7, 14, 0, 0, 6178, 1264, 1, 0, 0, 0, 6179, 6180, 7, 17, 0, 0, 6180, 6181, 7, 9, 0, 0, 6181, 6182, 7, 25, 0, 0, 6182, 6183, 7, 17, 0, 0, 6183, 6184, 7, 7, 0, 0, 6184, 6185, 7, 17, 0, 0, 6185, 6186, 7, 16, 0, 0, 6186, 6187, 7, 10, 0, 0, 6187, 1266, 1, 0, 0, 0, 6188, 6189, 7, 30, 0, 0, 6189, 6190, 7, 22, 0, 0, 6190, 6191, 7, 9, 0, 0, 6191, 6192, 7, 16, 0, 0, 6192, 6193, 7, 17, 0, 0, 6193, 6194, 7, 25, 0, 0, 6194, 6195, 7, 8, 0, 0, 6195, 6196, 5, 95, 0, 0, 6196, 6197, 7, 12, 0, 0, 6197, 6198, 7, 5, 0, 0, 6198, 6199, 7, 8, 0, 0, 6199, 6200, 7, 9, 0, 0, 6200, 1268, 1, 0, 0, 0, 6201, 6202, 7, 30, 0, 0, 6202, 6203, 7, 22, 0, 0, 6203, 6204, 7, 9, 0, 0, 6204, 6205, 7, 16, 0, 0, 6205, 6206, 7, 17, 0, 0, 6206, 6207, 7, 25, 0, 0, 6207, 6208, 7, 8, 0, 0, 6208, 6209, 5, 95, 0, 0, 6209, 6210, 7, 20, 0, 0, 6210, 6211, 7, 19, 0, 0, 6211, 6212, 7, 22, 0, 0, 6212, 6213, 7, 13, 0, 0, 6213, 6214, 7, 9, 0, 0, 6214, 1270, 1, 0, 0, 0, 6215, 6216, 7, 30, 0, 0, 6216, 6217, 7, 22, 0, 0, 6217, 6218, 7, 9, 0, 0, 6218, 6219, 7, 16, 0, 0, 6219, 6220, 7, 17, 0, 0, 6220, 6221, 7, 25, 0, 0, 6221, 6222, 7, 8, 0, 0, 6222, 6223, 5, 95, 0, 0, 6223, 6224, 7, 17, 0, 0, 6224, 6225, 7, 7, 0, 0, 6225, 6226, 7, 16, 0, 0, 6226, 6227, 7, 10, 0, 0, 6227, 6228, 7, 13, 0, 0, 6228, 6229, 7, 27, 0, 0, 6229, 6230, 7, 5, 0, 0, 6230, 6231, 7, 6, 0, 0, 6231, 1272, 1, 0, 0, 0, 6232, 6233, 7, 15, 0, 0, 6233, 6234, 7, 5, 0, 0, 6234, 6235, 7, 21, 0, 0, 6235, 6236, 7, 10, 0, 0, 6236, 6237, 5, 95, 0, 0, 6237, 6238, 7, 12, 0, 0, 6238, 6239, 7, 5, 0, 0, 6239, 6240, 7, 16, 0, 0, 6240, 6241, 7, 10, 0, 0, 6241, 1274, 1, 0, 0, 0, 6242, 6243, 7, 15, 0, 0, 6243, 6244, 7, 5, 0, 0, 6244, 6245, 7, 21, 0, 0, 6245, 6246, 7, 10, 0, 0, 6246, 6247, 5, 95, 0, 0, 6247, 6248, 7, 17, 0, 0, 6248, 6249, 7, 7, 0, 0, 6249, 6250, 7, 16, 0, 0, 6250, 6251, 7, 10, 0, 0, 6251, 6252, 7, 13, 0, 0, 6252, 6253, 7, 27, 0, 0, 6253, 6254, 7, 5, 0, 0, 6254, 6255, 7, 6, 0, 0, 6255, 1276, 1, 0, 0, 0, 6256, 6257, 7, 15, 0, 0, 6257, 6258, 7, 5, 0, 0, 6258, 6259, 7, 21, 0, 0, 6259, 6260, 7, 10, 0, 0, 6260, 6261, 5, 95, 0, 0, 6261, 6262, 7, 16, 0, 0, 6262, 6263, 7, 17, 0, 0, 6263, 6264, 7, 15, 0, 0, 6264, 6265, 7, 10, 0, 0, 6265, 1278, 1, 0, 0, 0, 6266, 6267, 7, 15, 0, 0, 6267, 6268, 7, 5, 0, 0, 6268, 6269, 7, 21, 0, 0, 6269, 6270, 7, 10, 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, 1280, 1, 0, 0, 0, 6281, 6282, 7, 15, 0, 0, 6282, 6283, 7, 5, 0, 0, 6283, 6284, 7, 21, 0, 0, 6284, 6285, 7, 10, 0, 0, 6285, 6286, 5, 95, 0, 0, 6286, 6287, 7, 16, 0, 0, 6287, 6288, 7, 17, 0, 0, 6288, 6289, 7, 15, 0, 0, 6289, 6290, 7, 10, 0, 0, 6290, 6291, 7, 9, 0, 0, 6291, 6292, 7, 16, 0, 0, 6292, 6293, 7, 5, 0, 0, 6293, 6294, 7, 15, 0, 0, 6294, 6295, 7, 24, 0, 0, 6295, 6296, 7, 16, 0, 0, 6296, 6297, 7, 11, 0, 0, 6297, 1282, 1, 0, 0, 0, 6298, 6299, 7, 7, 0, 0, 6299, 6300, 7, 19, 0, 0, 6300, 6301, 7, 28, 0, 0, 6301, 1284, 1, 0, 0, 0, 6302, 6303, 7, 9, 0, 0, 6303, 6304, 7, 16, 0, 0, 6304, 6305, 7, 5, 0, 0, 6305, 6306, 7, 16, 0, 0, 6306, 6307, 7, 10, 0, 0, 6307, 6308, 7, 15, 0, 0, 6308, 6309, 7, 10, 0, 0, 6309, 6310, 7, 7, 0, 0, 6310, 6311, 7, 16, 0, 0, 6311, 6312, 5, 95, 0, 0, 6312, 6313, 7, 16, 0, 0, 6313, 6314, 7, 17, 0, 0, 6314, 6315, 7, 15, 0, 0, 6315, 6316, 7, 10, 0, 0, 6316, 6317, 7, 9, 0, 0, 6317, 6318, 7, 16, 0, 0, 6318, 6319, 7, 5, 0, 0, 6319, 6320, 7, 15, 0, 0, 6320, 6321, 7, 24, 0, 0, 6321, 1286, 1, 0, 0, 0, 6322, 6323, 7, 16, 0, 0, 6323, 6324, 7, 17, 0, 0, 6324, 6325, 7, 15, 0, 0, 6325, 6326, 7, 10, 0, 0, 6326, 6327, 7, 19, 0, 0, 6327, 6328, 7, 25, 0, 0, 6328, 6329, 7, 12, 0, 0, 6329, 6330, 7, 5, 0, 0, 6330, 6331, 7, 8, 0, 0, 6331, 1288, 1, 0, 0, 0, 6332, 6333, 7, 16, 0, 0, 6333, 6334, 7, 13, 0, 0, 6334, 6335, 7, 5, 0, 0, 6335, 6336, 7, 7, 0, 0, 6336, 6337, 7, 9, 0, 0, 6337, 6338, 7, 5, 0, 0, 6338, 6339, 7, 14, 0, 0, 6339, 6340, 7, 16, 0, 0, 6340, 6341, 7, 17, 0, 0, 6341, 6342, 7, 19, 0, 0, 6342, 6343, 7, 7, 0, 0, 6343, 6344, 5, 95, 0, 0, 6344, 6345, 7, 16, 0, 0, 6345, 6346, 7, 17, 0, 0, 6346, 6347, 7, 15, 0, 0, 6347, 6348, 7, 10, 0, 0, 6348, 6349, 7, 9, 0, 0, 6349, 6350, 7, 16, 0, 0, 6350, 6351, 7, 5, 0, 0, 6351, 6352, 7, 15, 0, 0, 6352, 6353, 7, 24, 0, 0, 6353, 1290, 1, 0, 0, 0, 6354, 6355, 7, 16, 0, 0, 6355, 6356, 7, 19, 0, 0, 6356, 6357, 5, 95, 0, 0, 6357, 6358, 7, 16, 0, 0, 6358, 6359, 7, 17, 0, 0, 6359, 6360, 7, 15, 0, 0, 6360, 6361, 7, 10, 0, 0, 6361, 6362, 7, 9, 0, 0, 6362, 6363, 7, 16, 0, 0, 6363, 6364, 7, 5, 0, 0, 6364, 6365, 7, 15, 0, 0, 6365, 6366, 7, 24, 0, 0, 6366, 1292, 1, 0, 0, 0, 6367, 6368, 7, 16, 0, 0, 6368, 6369, 7, 19, 0, 0, 6369, 6370, 5, 95, 0, 0, 6370, 6371, 7, 14, 0, 0, 6371, 6372, 7, 20, 0, 0, 6372, 6373, 7, 5, 0, 0, 6373, 6374, 7, 13, 0, 0, 6374, 1294, 1, 0, 0, 0, 6375, 6376, 7, 16, 0, 0, 6376, 6377, 7, 19, 0, 0, 6377, 6378, 5, 95, 0, 0, 6378, 6379, 7, 12, 0, 0, 6379, 6380, 7, 5, 0, 0, 6380, 6381, 7, 16, 0, 0, 6381, 6382, 7, 10, 0, 0, 6382, 1296, 1, 0, 0, 0, 6383, 6384, 7, 16, 0, 0, 6384, 6385, 7, 19, 0, 0, 6385, 6386, 5, 95, 0, 0, 6386, 6387, 7, 7, 0, 0, 6387, 6388, 7, 22, 0, 0, 6388, 6389, 7, 15, 0, 0, 6389, 6390, 7, 18, 0, 0, 6390, 6391, 7, 10, 0, 0, 6391, 6392, 7, 13, 0, 0, 6392, 1298, 1, 0, 0, 0, 6393, 6397, 3, 1301, 648, 0, 6394, 6396, 3, 1303, 649, 0, 6395, 6394, 1, 0, 0, 0, 6396, 6399, 1, 0, 0, 0, 6397, 6395, 1, 0, 0, 0, 6397, 6398, 1, 0, 0, 0, 6398, 1300, 1, 0, 0, 0, 6399, 6397, 1, 0, 0, 0, 6400, 6407, 7, 31, 0, 0, 6401, 6402, 7, 32, 0, 0, 6402, 6407, 4, 648, 6, 0, 6403, 6404, 7, 33, 0, 0, 6404, 6405, 7, 34, 0, 0, 6405, 6407, 4, 648, 7, 0, 6406, 6400, 1, 0, 0, 0, 6406, 6401, 1, 0, 0, 0, 6406, 6403, 1, 0, 0, 0, 6407, 1302, 1, 0, 0, 0, 6408, 6411, 3, 1305, 650, 0, 6409, 6411, 5, 36, 0, 0, 6410, 6408, 1, 0, 0, 0, 6410, 6409, 1, 0, 0, 0, 6411, 1304, 1, 0, 0, 0, 6412, 6415, 3, 1301, 648, 0, 6413, 6415, 7, 0, 0, 0, 6414, 6412, 1, 0, 0, 0, 6414, 6413, 1, 0, 0, 0, 6415, 1306, 1, 0, 0, 0, 6416, 6417, 3, 1309, 652, 0, 6417, 6418, 5, 34, 0, 0, 6418, 1308, 1, 0, 0, 0, 6419, 6425, 5, 34, 0, 0, 6420, 6421, 5, 34, 0, 0, 6421, 6424, 5, 34, 0, 0, 6422, 6424, 8, 35, 0, 0, 6423, 6420, 1, 0, 0, 0, 6423, 6422, 1, 0, 0, 0, 6424, 6427, 1, 0, 0, 0, 6425, 6423, 1, 0, 0, 0, 6425, 6426, 1, 0, 0, 0, 6426, 1310, 1, 0, 0, 0, 6427, 6425, 1, 0, 0, 0, 6428, 6429, 3, 1313, 654, 0, 6429, 6430, 5, 34, 0, 0, 6430, 1312, 1, 0, 0, 0, 6431, 6437, 5, 34, 0, 0, 6432, 6433, 5, 34, 0, 0, 6433, 6436, 5, 34, 0, 0, 6434, 6436, 8, 36, 0, 0, 6435, 6432, 1, 0, 0, 0, 6435, 6434, 1, 0, 0, 0, 6436, 6439, 1, 0, 0, 0, 6437, 6435, 1, 0, 0, 0, 6437, 6438, 1, 0, 0, 0, 6438, 1314, 1, 0, 0, 0, 6439, 6437, 1, 0, 0, 0, 6440, 6441, 7, 22, 0, 0, 6441, 6442, 5, 38, 0, 0, 6442, 6443, 3, 1307, 651, 0, 6443, 1316, 1, 0, 0, 0, 6444, 6445, 7, 22, 0, 0, 6445, 6446, 5, 38, 0, 0, 6446, 6447, 3, 1309, 652, 0, 6447, 1318, 1, 0, 0, 0, 6448, 6449, 7, 22, 0, 0, 6449, 6450, 5, 38, 0, 0, 6450, 6451, 3, 1311, 653, 0, 6451, 1320, 1, 0, 0, 0, 6452, 6453, 7, 22, 0, 0, 6453, 6454, 5, 38, 0, 0, 6454, 6455, 3, 1313, 654, 0, 6455, 1322, 1, 0, 0, 0, 6456, 6457, 3, 1325, 660, 0, 6457, 6458, 5, 39, 0, 0, 6458, 1324, 1, 0, 0, 0, 6459, 6465, 5, 39, 0, 0, 6460, 6461, 5, 39, 0, 0, 6461, 6464, 5, 39, 0, 0, 6462, 6464, 8, 37, 0, 0, 6463, 6460, 1, 0, 0, 0, 6463, 6462, 1, 0, 0, 0, 6464, 6467, 1, 0, 0, 0, 6465, 6463, 1, 0, 0, 0, 6465, 6466, 1, 0, 0, 0, 6466, 1326, 1, 0, 0, 0, 6467, 6465, 1, 0, 0, 0, 6468, 6469, 7, 10, 0, 0, 6469, 6470, 5, 39, 0, 0, 6470, 6471, 1, 0, 0, 0, 6471, 6472, 6, 661, 2, 0, 6472, 6473, 6, 661, 3, 0, 6473, 1328, 1, 0, 0, 0, 6474, 6475, 3, 1331, 663, 0, 6475, 6476, 5, 39, 0, 0, 6476, 1330, 1, 0, 0, 0, 6477, 6478, 7, 22, 0, 0, 6478, 6479, 5, 38, 0, 0, 6479, 6480, 3, 1325, 660, 0, 6480, 1332, 1, 0, 0, 0, 6481, 6483, 5, 36, 0, 0, 6482, 6484, 3, 1335, 665, 0, 6483, 6482, 1, 0, 0, 0, 6483, 6484, 1, 0, 0, 0, 6484, 6485, 1, 0, 0, 0, 6485, 6486, 5, 36, 0, 0, 6486, 6487, 6, 664, 4, 0, 6487, 6488, 1, 0, 0, 0, 6488, 6489, 6, 664, 5, 0, 6489, 1334, 1, 0, 0, 0, 6490, 6494, 3, 1301, 648, 0, 6491, 6493, 3, 1305, 650, 0, 6492, 6491, 1, 0, 0, 0, 6493, 6496, 1, 0, 0, 0, 6494, 6492, 1, 0, 0, 0, 6494, 6495, 1, 0, 0, 0, 6495, 1336, 1, 0, 0, 0, 6496, 6494, 1, 0, 0, 0, 6497, 6498, 3, 1339, 667, 0, 6498, 6499, 5, 39, 0, 0, 6499, 1338, 1, 0, 0, 0, 6500, 6501, 7, 18, 0, 0, 6501, 6505, 5, 39, 0, 0, 6502, 6504, 7, 38, 0, 0, 6503, 6502, 1, 0, 0, 0, 6504, 6507, 1, 0, 0, 0, 6505, 6503, 1, 0, 0, 0, 6505, 6506, 1, 0, 0, 0, 6506, 1340, 1, 0, 0, 0, 6507, 6505, 1, 0, 0, 0, 6508, 6509, 3, 1343, 669, 0, 6509, 6510, 5, 39, 0, 0, 6510, 1342, 1, 0, 0, 0, 6511, 6512, 7, 18, 0, 0, 6512, 6513, 3, 1325, 660, 0, 6513, 1344, 1, 0, 0, 0, 6514, 6515, 3, 1347, 671, 0, 6515, 6516, 5, 39, 0, 0, 6516, 1346, 1, 0, 0, 0, 6517, 6518, 7, 26, 0, 0, 6518, 6522, 5, 39, 0, 0, 6519, 6521, 7, 39, 0, 0, 6520, 6519, 1, 0, 0, 0, 6521, 6524, 1, 0, 0, 0, 6522, 6520, 1, 0, 0, 0, 6522, 6523, 1, 0, 0, 0, 6523, 1348, 1, 0, 0, 0, 6524, 6522, 1, 0, 0, 0, 6525, 6526, 3, 1351, 673, 0, 6526, 6527, 5, 39, 0, 0, 6527, 1350, 1, 0, 0, 0, 6528, 6529, 7, 26, 0, 0, 6529, 6530, 3, 1325, 660, 0, 6530, 1352, 1, 0, 0, 0, 6531, 6532, 3, 1359, 677, 0, 6532, 1354, 1, 0, 0, 0, 6533, 6534, 3, 1359, 677, 0, 6534, 6535, 5, 46, 0, 0, 6535, 6536, 5, 46, 0, 0, 6536, 6537, 1, 0, 0, 0, 6537, 6538, 6, 675, 6, 0, 6538, 1356, 1, 0, 0, 0, 6539, 6540, 3, 1359, 677, 0, 6540, 6542, 5, 46, 0, 0, 6541, 6543, 3, 1359, 677, 0, 6542, 6541, 1, 0, 0, 0, 6542, 6543, 1, 0, 0, 0, 6543, 6549, 1, 0, 0, 0, 6544, 6546, 7, 10, 0, 0, 6545, 6547, 7, 1, 0, 0, 6546, 6545, 1, 0, 0, 0, 6546, 6547, 1, 0, 0, 0, 6547, 6548, 1, 0, 0, 0, 6548, 6550, 3, 1359, 677, 0, 6549, 6544, 1, 0, 0, 0, 6549, 6550, 1, 0, 0, 0, 6550, 6568, 1, 0, 0, 0, 6551, 6552, 5, 46, 0, 0, 6552, 6558, 3, 1359, 677, 0, 6553, 6555, 7, 10, 0, 0, 6554, 6556, 7, 1, 0, 0, 6555, 6554, 1, 0, 0, 0, 6555, 6556, 1, 0, 0, 0, 6556, 6557, 1, 0, 0, 0, 6557, 6559, 3, 1359, 677, 0, 6558, 6553, 1, 0, 0, 0, 6558, 6559, 1, 0, 0, 0, 6559, 6568, 1, 0, 0, 0, 6560, 6561, 3, 1359, 677, 0, 6561, 6563, 7, 10, 0, 0, 6562, 6564, 7, 1, 0, 0, 6563, 6562, 1, 0, 0, 0, 6563, 6564, 1, 0, 0, 0, 6564, 6565, 1, 0, 0, 0, 6565, 6566, 3, 1359, 677, 0, 6566, 6568, 1, 0, 0, 0, 6567, 6539, 1, 0, 0, 0, 6567, 6551, 1, 0, 0, 0, 6567, 6560, 1, 0, 0, 0, 6568, 1358, 1, 0, 0, 0, 6569, 6571, 7, 0, 0, 0, 6570, 6569, 1, 0, 0, 0, 6571, 6572, 1, 0, 0, 0, 6572, 6570, 1, 0, 0, 0, 6572, 6573, 1, 0, 0, 0, 6573, 1360, 1, 0, 0, 0, 6574, 6575, 5, 58, 0, 0, 6575, 6579, 7, 40, 0, 0, 6576, 6578, 7, 41, 0, 0, 6577, 6576, 1, 0, 0, 0, 6578, 6581, 1, 0, 0, 0, 6579, 6577, 1, 0, 0, 0, 6579, 6580, 1, 0, 0, 0, 6580, 1362, 1, 0, 0, 0, 6581, 6579, 1, 0, 0, 0, 6582, 6583, 5, 58, 0, 0, 6583, 6584, 5, 34, 0, 0, 6584, 6592, 1, 0, 0, 0, 6585, 6586, 5, 92, 0, 0, 6586, 6591, 9, 0, 0, 0, 6587, 6588, 5, 34, 0, 0, 6588, 6591, 5, 34, 0, 0, 6589, 6591, 8, 42, 0, 0, 6590, 6585, 1, 0, 0, 0, 6590, 6587, 1, 0, 0, 0, 6590, 6589, 1, 0, 0, 0, 6591, 6594, 1, 0, 0, 0, 6592, 6590, 1, 0, 0, 0, 6592, 6593, 1, 0, 0, 0, 6593, 6595, 1, 0, 0, 0, 6594, 6592, 1, 0, 0, 0, 6595, 6596, 5, 34, 0, 0, 6596, 1364, 1, 0, 0, 0, 6597, 6599, 7, 43, 0, 0, 6598, 6597, 1, 0, 0, 0, 6599, 6600, 1, 0, 0, 0, 6600, 6598, 1, 0, 0, 0, 6600, 6601, 1, 0, 0, 0, 6601, 6602, 1, 0, 0, 0, 6602, 6603, 6, 680, 7, 0, 6603, 1366, 1, 0, 0, 0, 6604, 6606, 5, 13, 0, 0, 6605, 6607, 5, 10, 0, 0, 6606, 6605, 1, 0, 0, 0, 6606, 6607, 1, 0, 0, 0, 6607, 6610, 1, 0, 0, 0, 6608, 6610, 5, 10, 0, 0, 6609, 6604, 1, 0, 0, 0, 6609, 6608, 1, 0, 0, 0, 6610, 6611, 1, 0, 0, 0, 6611, 6612, 6, 681, 7, 0, 6612, 1368, 1, 0, 0, 0, 6613, 6614, 5, 45, 0, 0, 6614, 6615, 5, 45, 0, 0, 6615, 6619, 1, 0, 0, 0, 6616, 6618, 8, 44, 0, 0, 6617, 6616, 1, 0, 0, 0, 6618, 6621, 1, 0, 0, 0, 6619, 6617, 1, 0, 0, 0, 6619, 6620, 1, 0, 0, 0, 6620, 6622, 1, 0, 0, 0, 6621, 6619, 1, 0, 0, 0, 6622, 6623, 6, 682, 7, 0, 6623, 1370, 1, 0, 0, 0, 6624, 6625, 5, 47, 0, 0, 6625, 6626, 5, 42, 0, 0, 6626, 6649, 1, 0, 0, 0, 6627, 6629, 5, 47, 0, 0, 6628, 6627, 1, 0, 0, 0, 6629, 6632, 1, 0, 0, 0, 6630, 6628, 1, 0, 0, 0, 6630, 6631, 1, 0, 0, 0, 6631, 6633, 1, 0, 0, 0, 6632, 6630, 1, 0, 0, 0, 6633, 6648, 3, 1371, 683, 0, 6634, 6648, 8, 45, 0, 0, 6635, 6637, 5, 47, 0, 0, 6636, 6635, 1, 0, 0, 0, 6637, 6638, 1, 0, 0, 0, 6638, 6636, 1, 0, 0, 0, 6638, 6639, 1, 0, 0, 0, 6639, 6640, 1, 0, 0, 0, 6640, 6648, 8, 45, 0, 0, 6641, 6643, 5, 42, 0, 0, 6642, 6641, 1, 0, 0, 0, 6643, 6644, 1, 0, 0, 0, 6644, 6642, 1, 0, 0, 0, 6644, 6645, 1, 0, 0, 0, 6645, 6646, 1, 0, 0, 0, 6646, 6648, 8, 45, 0, 0, 6647, 6630, 1, 0, 0, 0, 6647, 6634, 1, 0, 0, 0, 6647, 6636, 1, 0, 0, 0, 6647, 6642, 1, 0, 0, 0, 6648, 6651, 1, 0, 0, 0, 6649, 6647, 1, 0, 0, 0, 6649, 6650, 1, 0, 0, 0, 6650, 6655, 1, 0, 0, 0, 6651, 6649, 1, 0, 0, 0, 6652, 6654, 5, 42, 0, 0, 6653, 6652, 1, 0, 0, 0, 6654, 6657, 1, 0, 0, 0, 6655, 6653, 1, 0, 0, 0, 6655, 6656, 1, 0, 0, 0, 6656, 6658, 1, 0, 0, 0, 6657, 6655, 1, 0, 0, 0, 6658, 6659, 5, 42, 0, 0, 6659, 6660, 5, 47, 0, 0, 6660, 6661, 1, 0, 0, 0, 6661, 6662, 6, 683, 7, 0, 6662, 1372, 1, 0, 0, 0, 6663, 6664, 5, 47, 0, 0, 6664, 6665, 5, 42, 0, 0, 6665, 6690, 1, 0, 0, 0, 6666, 6668, 5, 47, 0, 0, 6667, 6666, 1, 0, 0, 0, 6668, 6671, 1, 0, 0, 0, 6669, 6667, 1, 0, 0, 0, 6669, 6670, 1, 0, 0, 0, 6670, 6672, 1, 0, 0, 0, 6671, 6669, 1, 0, 0, 0, 6672, 6689, 3, 1371, 683, 0, 6673, 6689, 8, 45, 0, 0, 6674, 6676, 5, 47, 0, 0, 6675, 6674, 1, 0, 0, 0, 6676, 6677, 1, 0, 0, 0, 6677, 6675, 1, 0, 0, 0, 6677, 6678, 1, 0, 0, 0, 6678, 6679, 1, 0, 0, 0, 6679, 6687, 8, 45, 0, 0, 6680, 6682, 5, 42, 0, 0, 6681, 6680, 1, 0, 0, 0, 6682, 6683, 1, 0, 0, 0, 6683, 6681, 1, 0, 0, 0, 6683, 6684, 1, 0, 0, 0, 6684, 6685, 1, 0, 0, 0, 6685, 6687, 8, 45, 0, 0, 6686, 6675, 1, 0, 0, 0, 6686, 6681, 1, 0, 0, 0, 6687, 6689, 1, 0, 0, 0, 6688, 6669, 1, 0, 0, 0, 6688, 6673, 1, 0, 0, 0, 6688, 6686, 1, 0, 0, 0, 6689, 6692, 1, 0, 0, 0, 6690, 6688, 1, 0, 0, 0, 6690, 6691, 1, 0, 0, 0, 6691, 6710, 1, 0, 0, 0, 6692, 6690, 1, 0, 0, 0, 6693, 6695, 5, 47, 0, 0, 6694, 6693, 1, 0, 0, 0, 6695, 6696, 1, 0, 0, 0, 6696, 6694, 1, 0, 0, 0, 6696, 6697, 1, 0, 0, 0, 6697, 6711, 1, 0, 0, 0, 6698, 6700, 5, 42, 0, 0, 6699, 6698, 1, 0, 0, 0, 6700, 6701, 1, 0, 0, 0, 6701, 6699, 1, 0, 0, 0, 6701, 6702, 1, 0, 0, 0, 6702, 6711, 1, 0, 0, 0, 6703, 6705, 5, 47, 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, 6709, 1, 0, 0, 0, 6708, 6706, 1, 0, 0, 0, 6709, 6711, 3, 1373, 684, 0, 6710, 6694, 1, 0, 0, 0, 6710, 6699, 1, 0, 0, 0, 6710, 6706, 1, 0, 0, 0, 6710, 6711, 1, 0, 0, 0, 6711, 6712, 1, 0, 0, 0, 6712, 6713, 6, 684, 8, 0, 6713, 1374, 1, 0, 0, 0, 6714, 6726, 5, 92, 0, 0, 6715, 6725, 8, 46, 0, 0, 6716, 6720, 5, 34, 0, 0, 6717, 6719, 8, 47, 0, 0, 6718, 6717, 1, 0, 0, 0, 6719, 6722, 1, 0, 0, 0, 6720, 6718, 1, 0, 0, 0, 6720, 6721, 1, 0, 0, 0, 6721, 6723, 1, 0, 0, 0, 6722, 6720, 1, 0, 0, 0, 6723, 6725, 5, 34, 0, 0, 6724, 6715, 1, 0, 0, 0, 6724, 6716, 1, 0, 0, 0, 6725, 6728, 1, 0, 0, 0, 6726, 6724, 1, 0, 0, 0, 6726, 6727, 1, 0, 0, 0, 6727, 6736, 1, 0, 0, 0, 6728, 6726, 1, 0, 0, 0, 6729, 6733, 5, 34, 0, 0, 6730, 6732, 8, 47, 0, 0, 6731, 6730, 1, 0, 0, 0, 6732, 6735, 1, 0, 0, 0, 6733, 6731, 1, 0, 0, 0, 6733, 6734, 1, 0, 0, 0, 6734, 6737, 1, 0, 0, 0, 6735, 6733, 1, 0, 0, 0, 6736, 6729, 1, 0, 0, 0, 6736, 6737, 1, 0, 0, 0, 6737, 1376, 1, 0, 0, 0, 6738, 6739, 5, 92, 0, 0, 6739, 6740, 5, 92, 0, 0, 6740, 1378, 1, 0, 0, 0, 6741, 6742, 9, 0, 0, 0, 6742, 1380, 1, 0, 0, 0, 6743, 6744, 3, 1385, 690, 0, 6744, 6745, 5, 39, 0, 0, 6745, 6746, 1, 0, 0, 0, 6746, 6747, 6, 688, 9, 0, 6747, 1382, 1, 0, 0, 0, 6748, 6750, 3, 1385, 690, 0, 6749, 6751, 5, 92, 0, 0, 6750, 6749, 1, 0, 0, 0, 6750, 6751, 1, 0, 0, 0, 6751, 6752, 1, 0, 0, 0, 6752, 6753, 5, 0, 0, 1, 6753, 1384, 1, 0, 0, 0, 6754, 6755, 5, 39, 0, 0, 6755, 6778, 5, 39, 0, 0, 6756, 6774, 5, 92, 0, 0, 6757, 6758, 5, 120, 0, 0, 6758, 6775, 7, 39, 0, 0, 6759, 6760, 5, 117, 0, 0, 6760, 6761, 7, 39, 0, 0, 6761, 6762, 7, 39, 0, 0, 6762, 6763, 7, 39, 0, 0, 6763, 6775, 7, 39, 0, 0, 6764, 6765, 5, 85, 0, 0, 6765, 6766, 7, 39, 0, 0, 6766, 6767, 7, 39, 0, 0, 6767, 6768, 7, 39, 0, 0, 6768, 6769, 7, 39, 0, 0, 6769, 6770, 7, 39, 0, 0, 6770, 6771, 7, 39, 0, 0, 6771, 6772, 7, 39, 0, 0, 6772, 6775, 7, 39, 0, 0, 6773, 6775, 8, 48, 0, 0, 6774, 6757, 1, 0, 0, 0, 6774, 6759, 1, 0, 0, 0, 6774, 6764, 1, 0, 0, 0, 6774, 6773, 1, 0, 0, 0, 6775, 6778, 1, 0, 0, 0, 6776, 6778, 8, 49, 0, 0, 6777, 6754, 1, 0, 0, 0, 6777, 6756, 1, 0, 0, 0, 6777, 6776, 1, 0, 0, 0, 6778, 6781, 1, 0, 0, 0, 6779, 6777, 1, 0, 0, 0, 6779, 6780, 1, 0, 0, 0, 6780, 1386, 1, 0, 0, 0, 6781, 6779, 1, 0, 0, 0, 6782, 6783, 3, 1391, 693, 0, 6783, 6784, 5, 39, 0, 0, 6784, 6785, 1, 0, 0, 0, 6785, 6786, 6, 691, 9, 0, 6786, 1388, 1, 0, 0, 0, 6787, 6789, 3, 1391, 693, 0, 6788, 6790, 5, 92, 0, 0, 6789, 6788, 1, 0, 0, 0, 6789, 6790, 1, 0, 0, 0, 6790, 6791, 1, 0, 0, 0, 6791, 6792, 5, 0, 0, 1, 6792, 1390, 1, 0, 0, 0, 6793, 6794, 5, 39, 0, 0, 6794, 6799, 5, 39, 0, 0, 6795, 6796, 5, 92, 0, 0, 6796, 6799, 9, 0, 0, 0, 6797, 6799, 8, 49, 0, 0, 6798, 6793, 1, 0, 0, 0, 6798, 6795, 1, 0, 0, 0, 6798, 6797, 1, 0, 0, 0, 6799, 6802, 1, 0, 0, 0, 6800, 6798, 1, 0, 0, 0, 6800, 6801, 1, 0, 0, 0, 6801, 1392, 1, 0, 0, 0, 6802, 6800, 1, 0, 0, 0, 6803, 6804, 3, 1365, 680, 0, 6804, 6805, 1, 0, 0, 0, 6805, 6806, 6, 694, 10, 0, 6806, 6807, 6, 694, 7, 0, 6807, 1394, 1, 0, 0, 0, 6808, 6809, 3, 1367, 681, 0, 6809, 6810, 1, 0, 0, 0, 6810, 6811, 6, 695, 11, 0, 6811, 6812, 6, 695, 7, 0, 6812, 6813, 6, 695, 12, 0, 6813, 1396, 1, 0, 0, 0, 6814, 6815, 6, 696, 13, 0, 6815, 6816, 1, 0, 0, 0, 6816, 6817, 6, 696, 14, 0, 6817, 6818, 6, 696, 15, 0, 6818, 1398, 1, 0, 0, 0, 6819, 6820, 3, 1365, 680, 0, 6820, 6821, 1, 0, 0, 0, 6821, 6822, 6, 697, 10, 0, 6822, 6823, 6, 697, 7, 0, 6823, 1400, 1, 0, 0, 0, 6824, 6825, 3, 1367, 681, 0, 6825, 6826, 1, 0, 0, 0, 6826, 6827, 6, 698, 11, 0, 6827, 6828, 6, 698, 7, 0, 6828, 1402, 1, 0, 0, 0, 6829, 6830, 5, 39, 0, 0, 6830, 6831, 1, 0, 0, 0, 6831, 6832, 6, 699, 2, 0, 6832, 6833, 6, 699, 16, 0, 6833, 1404, 1, 0, 0, 0, 6834, 6835, 6, 700, 17, 0, 6835, 6836, 1, 0, 0, 0, 6836, 6837, 6, 700, 14, 0, 6837, 6838, 6, 700, 15, 0, 6838, 1406, 1, 0, 0, 0, 6839, 6841, 8, 50, 0, 0, 6840, 6839, 1, 0, 0, 0, 6841, 6842, 1, 0, 0, 0, 6842, 6840, 1, 0, 0, 0, 6842, 6843, 1, 0, 0, 0, 6843, 6852, 1, 0, 0, 0, 6844, 6848, 5, 36, 0, 0, 6845, 6847, 8, 50, 0, 0, 6846, 6845, 1, 0, 0, 0, 6847, 6850, 1, 0, 0, 0, 6848, 6846, 1, 0, 0, 0, 6848, 6849, 1, 0, 0, 0, 6849, 6852, 1, 0, 0, 0, 6850, 6848, 1, 0, 0, 0, 6851, 6840, 1, 0, 0, 0, 6851, 6844, 1, 0, 0, 0, 6852, 1408, 1, 0, 0, 0, 6853, 6855, 5, 36, 0, 0, 6854, 6856, 3, 1335, 665, 0, 6855, 6854, 1, 0, 0, 0, 6855, 6856, 1, 0, 0, 0, 6856, 6857, 1, 0, 0, 0, 6857, 6858, 5, 36, 0, 0, 6858, 6859, 1, 0, 0, 0, 6859, 6860, 4, 702, 8, 0, 6860, 6861, 6, 702, 18, 0, 6861, 6862, 1, 0, 0, 0, 6862, 6863, 6, 702, 15, 0, 6863, 1410, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1478, 1484, 1486, 1491, 1495, 1497, 1500, 1509, 1511, 1516, 1521, 1523, 6397, 6406, 6410, 6414, 6423, 6425, 6435, 6437, 6463, 6465, 6483, 6494, 6505, 6522, 6542, 6546, 6549, 6555, 6558, 6563, 6567, 6572, 6579, 6590, 6592, 6600, 6606, 6609, 6619, 6630, 6638, 6644, 6647, 6649, 6655, 6669, 6677, 6683, 6686, 6688, 6690, 6696, 6701, 6706, 6710, 6720, 6724, 6726, 6733, 6736, 6750, 6774, 6777, 6779, 6789, 6798, 6800, 6842, 6848, 6851, 6855, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 664, 1, 5, 4, 0, 1, 675, 2, 0, 1, 0, 1, 684, 3, 2, 2, 0, 7, 671, 0, 7, 672, 0, 2, 3, 0, 1, 696, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 700, 5, 1, 702, 6] \ No newline at end of file diff --git a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.java b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.java deleted file mode 100644 index 25408f96f9..0000000000 --- a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.java +++ /dev/null @@ -1,5297 +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.2 - - -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.2", 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, ZTABLE=93, THEN=94, TO=95, DESCRIBE=96, TOPIC=97, - TOPICS=98, STREAM=99, ZVIEW=100, ZVIEWS=101, TRAILING=102, TRUE_P=103, - UNION=104, UNIQUE=105, USER=106, USING=107, VARIADIC=108, WHEN=109, WHERE=110, - WINDOW=111, WITH=112, AUTHORIZATION=113, BINARY=114, COLLATION=115, CONCURRENTLY=116, - CROSS=117, CURRENT_SCHEMA=118, FREEZE=119, FULL=120, ILIKE=121, INNER_P=122, - IS=123, ISNULL=124, JOIN=125, LEFT=126, LIKE=127, NATURAL=128, NOTNULL=129, - OUTER_P=130, OVER=131, OVERLAPS=132, RIGHT=133, SIMILAR=134, VERBOSE=135, - ABORT_P=136, ABSOLUTE_P=137, ACCESS=138, ACTION=139, ADD_P=140, ADMIN=141, - AFTER=142, AGGREGATE=143, ALSO=144, ALTER=145, ALWAYS=146, ASSERTION=147, - ASSIGNMENT=148, AT=149, ATTRIBUTE=150, BACKWARD=151, BEFORE=152, BEGIN_P=153, - BY=154, CACHE=155, CALLED=156, CASCADE=157, CASCADED=158, CATALOG=159, - CHAIN=160, CHARACTERISTICS=161, CHECKPOINT=162, CLASS=163, CLOSE=164, - CLUSTER=165, COMMENT=166, COMMENTS=167, COMMIT=168, COMMITTED=169, CONFIGURATION=170, - CONNECTION=171, CONSTRAINTS=172, CONTENT_P=173, CONTINUE_P=174, CONVERSION_P=175, - COPY=176, COST=177, CSV=178, CURSOR=179, CYCLE=180, DATA_P=181, DATABASE=182, - DAY_P=183, DEALLOCATE=184, DECLARE=185, DEFAULTS=186, DEFERRED=187, DEFINER=188, - DELETE_P=189, DELIMITER=190, DELIMITERS=191, DICTIONARY=192, DISABLE_P=193, - DISCARD=194, DOCUMENT_P=195, DOMAIN_P=196, DOUBLE_P=197, DROP=198, EACH=199, - ENABLE_P=200, ENCODING=201, ENCRYPTED=202, ENUM_P=203, ESCAPE=204, EVENT=205, - EXCLUDE=206, EXCLUDING=207, EXCLUSIVE=208, EXECUTE=209, EXPLAIN=210, EXTENSION=211, - EXTERNAL=212, FAMILY=213, FIRST_P=214, FOLLOWING=215, FORCE=216, FORWARD=217, - FUNCTION=218, FUNCTIONS=219, GLOBAL=220, GRANTED=221, HANDLER=222, HEADER_P=223, - HOLD=224, HOUR_P=225, IDENTITY_P=226, IF_P=227, IMMEDIATE=228, IMMUTABLE=229, - IMPLICIT_P=230, INCLUDING=231, INCREMENT=232, INDEX=233, INDEXES=234, - INHERIT=235, INHERITS=236, INLINE_P=237, INSENSITIVE=238, INSERT=239, - INSTEAD=240, INVOKER=241, ISOLATION=242, KEY=243, LABEL=244, LANGUAGE=245, - LARGE_P=246, LAST_P=247, LEAKPROOF=248, LEVEL=249, LISTEN=250, LOAD=251, - LOCAL=252, LOCATION=253, LOCK_P=254, MAPPING=255, MATCH=256, MATCHED=257, - MATERIALIZED=258, MAXVALUE=259, MERGE=260, MINUTE_P=261, MINVALUE=262, - MODE=263, MONTH_P=264, MOVE=265, NAME_P=266, NAMES=267, NEXT=268, NO=269, - NOTHING=270, NOTIFY=271, NOWAIT=272, NULLS_P=273, OBJECT_P=274, OF=275, - OFF=276, OIDS=277, OPERATOR=278, OPTION=279, OPTIONS=280, OWNED=281, OWNER=282, - PARSER=283, PARTIAL=284, PARTITION=285, PASSING=286, PASSWORD=287, PLANS=288, - PRECEDING=289, PREPARE=290, PREPARED=291, PRESERVE=292, PRIOR=293, PRIVILEGES=294, - PROCEDURAL=295, PROCEDURE=296, PROGRAM=297, QUOTE=298, RANGE=299, READ=300, - REASSIGN=301, RECHECK=302, RECURSIVE=303, REF=304, REFRESH=305, REINDEX=306, - RELATIVE_P=307, RELEASE=308, RENAME=309, REPEATABLE=310, REPLACE=311, - REPLICA=312, RESET=313, RESTART=314, RESTRICT=315, RETURNS=316, REVOKE=317, - ROLE=318, ROLLBACK=319, ROWS=320, RULE=321, SAVEPOINT=322, SCHEMA=323, - SCROLL=324, SEARCH=325, SECOND_P=326, SECURITY=327, SEQUENCE=328, SEQUENCES=329, - SERIALIZABLE=330, SERVER=331, SESSION=332, SET=333, SHARE=334, SHOW=335, - SIMPLE=336, SNAPSHOT=337, STABLE=338, STANDALONE_P=339, START=340, STATEMENT=341, - STATISTICS=342, STDIN=343, STDOUT=344, STORAGE=345, STRICT_P=346, STRIP_P=347, - SYSID=348, SYSTEM_P=349, TABLES=350, ZTABLES=351, TABLESPACE=352, TEMP=353, - TEMPLATE=354, TEMPORARY=355, TEXT_P=356, TRANSACTION=357, TRIGGER=358, - TRUNCATE=359, TRUSTED=360, TYPE_P=361, TYPES_P=362, UNBOUNDED=363, UNCOMMITTED=364, - UNENCRYPTED=365, UNKNOWN=366, UNLISTEN=367, UNLOGGED=368, UNTIL=369, UPDATE=370, - VACUUM=371, VALID=372, VALIDATE=373, VALIDATOR=374, VARYING=375, VERSION_P=376, - VIEW=377, VOLATILE=378, WHITESPACE_P=379, WITHOUT=380, WORK=381, WRAPPER=382, - WRITE=383, XML_P=384, YEAR_P=385, YES_P=386, ZONE=387, BETWEEN=388, BIGINT=389, - BIT=390, BOOLEAN_P=391, CHAR_P=392, CHARACTER=393, COALESCE=394, DEC=395, - DECIMAL_P=396, EXISTS=397, EXTRACT=398, FLOAT_P=399, GREATEST=400, INOUT=401, - INT_P=402, INTEGER=403, INTERVAL=404, LEAST=405, NATIONAL=406, NCHAR=407, - NONE=408, NULLIF=409, NUMERIC=410, OVERLAY=411, POSITION=412, PRECISION=413, - REAL=414, ROW=415, SETOF=416, SMALLINT=417, SUBSTRING=418, TIME=419, TIMESTAMP=420, - TREAT=421, TRIM=422, VALUES=423, VARCHAR=424, XMLATTRIBUTES=425, XMLCOMMENT=426, - XMLAGG=427, XML_IS_WELL_FORMED=428, XML_IS_WELL_FORMED_DOCUMENT=429, XML_IS_WELL_FORMED_CONTENT=430, - XPATH=431, XPATH_EXISTS=432, XMLCONCAT=433, XMLELEMENT=434, XMLEXISTS=435, - XMLFOREST=436, XMLPARSE=437, XMLPI=438, XMLROOT=439, XMLSERIALIZE=440, - CALL=441, CURRENT_P=442, ATTACH=443, DETACH=444, EXPRESSION=445, GENERATED=446, - LOGGED=447, STORED=448, INCLUDE=449, ROUTINE=450, TRANSFORM=451, IMPORT_P=452, - POLICY=453, METHOD=454, REFERENCING=455, NEW=456, OLD=457, VALUE_P=458, - SUBSCRIPTION=459, PUBLICATION=460, OUT_P=461, END_P=462, ROUTINES=463, - SCHEMAS=464, PROCEDURES=465, INPUT_P=466, SUPPORT=467, PARALLEL=468, SQL_P=469, - DEPENDS=470, OVERRIDING=471, CONFLICT=472, SKIP_P=473, LOCKED=474, TIES=475, - ROLLUP=476, CUBE=477, GROUPING=478, SETS=479, TABLESAMPLE=480, ORDINALITY=481, - XMLTABLE=482, COLUMNS=483, XMLNAMESPACES=484, ROWTYPE=485, NORMALIZED=486, - WITHIN=487, FILTER=488, GROUPS=489, OTHERS=490, NFC=491, NFD=492, NFKC=493, - NFKD=494, UESCAPE=495, VIEWS=496, NORMALIZE=497, DUMP=498, PRINT_STRICT_PARAMS=499, - VARIABLE_CONFLICT=500, ERROR=501, USE_VARIABLE=502, USE_COLUMN=503, ALIAS=504, - CONSTANT=505, PERFORM=506, GET=507, DIAGNOSTICS=508, STACKED=509, ELSIF=510, - WHILE=511, REVERSE=512, FOREACH=513, SLICE=514, EXIT=515, RETURN=516, - QUERY=517, RAISE=518, SQLSTATE=519, DEBUG=520, LOG=521, INFO=522, NOTICE=523, - WARNING=524, EXCEPTION=525, ASSERT=526, LOOP=527, OPEN=528, ABS=529, CBRT=530, - CEIL=531, CEILING=532, DEGREES=533, DIV=534, EXP=535, FACTORIAL=536, FLOOR=537, - GCD=538, LCM=539, LN=540, LOG10=541, MIN_SCALE=542, MOD=543, PI=544, POWER=545, - RADIANS=546, ROUND=547, SCALE=548, SIGN=549, SQRT=550, TRIM_SCALE=551, - TRUNC=552, WIDTH_BUCKET=553, RANDOM=554, SETSEED=555, ACOS=556, ACOSD=557, - ASIN=558, ASIND=559, ATAN=560, ATAND=561, ATAN2=562, ATAN2D=563, COS=564, - COSD=565, COT=566, COTD=567, SIN=568, SIND=569, TAN=570, TAND=571, SINH=572, - COSH=573, TANH=574, ASINH=575, ACOSH=576, ATANH=577, BIT_LENGTH=578, CHAR_LENGTH=579, - CHARACTER_LENGTH=580, LOWER=581, OCTET_LENGTH=582, UPPER=583, ASCII=584, - BTRIM=585, CHR=586, CONCAT=587, CONCAT_WS=588, FORMAT=589, INITCAP=590, - LENGTH=591, LPAD=592, LTRIM=593, MD5=594, PARSE_IDENT=595, PG_CLIENT_ENCODING=596, - QUOTE_IDENT=597, QUOTE_LITERAL=598, QUOTE_NULLABLE=599, REGEXP_COUNT=600, - REGEXP_INSTR=601, REGEXP_LIKE=602, REGEXP_MATCH=603, REGEXP_MATCHES=604, - REGEXP_REPLACE=605, REGEXP_SPLIT_TO_ARRAY=606, REGEXP_SPLIT_TO_TABLE=607, - REGEXP_SUBSTR=608, REPEAT=609, RPAD=610, RTRIM=611, SPLIT_PART=612, STARTS_WITH=613, - STRING_TO_ARRAY=614, STRING_TO_TABLE=615, STRPOS=616, SUBSTR=617, TO_ASCII=618, - TO_HEX=619, TRANSLATE=620, UNISTR=621, AGE=622, CLOCK_TIMESTAMP=623, DATE_BIN=624, - DATE_PART=625, DATE_TRUNC=626, ISFINITE=627, JUSTIFY_DAYS=628, JUSTIFY_HOURS=629, - JUSTIFY_INTERVAL=630, MAKE_DATE=631, MAKE_INTERVAL=632, MAKE_TIME=633, - MAKE_TIMESTAMP=634, MAKE_TIMESTAMPTZ=635, NOW=636, STATEMENT_TIMESTAMP=637, - TIMEOFDAY=638, TRANSACTION_TIMESTAMP=639, TO_TIMESTAMP=640, TO_CHAR=641, - TO_DATE=642, TO_NUMBER=643, Identifier=644, QuotedIdentifier=645, UnterminatedQuotedIdentifier=646, - InvalidQuotedIdentifier=647, InvalidUnterminatedQuotedIdentifier=648, - UnicodeQuotedIdentifier=649, UnterminatedUnicodeQuotedIdentifier=650, - InvalidUnicodeQuotedIdentifier=651, InvalidUnterminatedUnicodeQuotedIdentifier=652, - StringConstant=653, UnterminatedStringConstant=654, UnicodeEscapeStringConstant=655, - UnterminatedUnicodeEscapeStringConstant=656, BeginDollarStringConstant=657, - BinaryStringConstant=658, UnterminatedBinaryStringConstant=659, InvalidBinaryStringConstant=660, - InvalidUnterminatedBinaryStringConstant=661, HexadecimalStringConstant=662, - UnterminatedHexadecimalStringConstant=663, InvalidHexadecimalStringConstant=664, - InvalidUnterminatedHexadecimalStringConstant=665, Integral=666, NumericFail=667, - Numeric=668, PLSQLVARIABLENAME=669, PLSQLIDENTIFIER=670, Whitespace=671, - Newline=672, LineComment=673, BlockComment=674, UnterminatedBlockComment=675, - MetaCommand=676, EndMetaCommand=677, ErrorCharacter=678, EscapeStringConstant=679, - UnterminatedEscapeStringConstant=680, InvalidEscapeStringConstant=681, - InvalidUnterminatedEscapeStringConstant=682, AfterEscapeStringConstantMode_NotContinued=683, - AfterEscapeStringConstantWithNewlineMode_NotContinued=684, DollarText=685, - EndDollarStringConstant=686, AfterEscapeStringConstantWithNewlineMode_Continued=687; - 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", "ZTABLE", "THEN", - "TO", "DESCRIBE", "TOPIC", "TOPICS", "STREAM", "ZVIEW", "ZVIEWS", "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", "ZTABLES", "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'", "'ZTABLE'", "'THEN'", "'TO'", "'DESCRIBE'", - "'TOPIC'", "'TOPICS'", "'STREAM'", "'ZVIEW'", "'ZVIEWS'", "'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'", "'ZTABLES'", "'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", "ZTABLE", "THEN", - "TO", "DESCRIBE", "TOPIC", "TOPICS", "STREAM", "ZVIEW", "ZVIEWS", "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", "ZTABLES", "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 664: - BeginDollarStringConstant_action((RuleContext)_localctx, actionIndex); - break; - case 675: - NumericFail_action((RuleContext)_localctx, actionIndex); - break; - case 684: - UnterminatedBlockComment_action((RuleContext)_localctx, actionIndex); - break; - case 696: - AfterEscapeStringConstantMode_NotContinued_action((RuleContext)_localctx, actionIndex); - break; - case 700: - AfterEscapeStringConstantWithNewlineMode_NotContinued_action((RuleContext)_localctx, actionIndex); - break; - case 702: - 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 648: - return IdentifierStartChar_sempred((RuleContext)_localctx, predIndex); - case 702: - 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\u02af\u1ad0\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\u0002\u02b9\u0007\u02b9"+ - "\u0002\u02ba\u0007\u02ba\u0002\u02bb\u0007\u02bb\u0002\u02bc\u0007\u02bc"+ - "\u0002\u02bd\u0007\u02bd\u0002\u02be\u0007\u02be\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\u05c5\b\u001b\u000b\u001b\f\u001b\u05c6\u0001\u001c\u0001"+ - "\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05cd\b\u001c\u000b\u001c\f"+ - "\u001c\u05ce\u0001\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u05d4\b\u001c"+ - "\u0001\u001c\u0001\u001c\u0004\u001c\u05d8\b\u001c\u000b\u001c\f\u001c"+ - "\u05d9\u0001\u001c\u0003\u001c\u05dd\b\u001c\u0001\u001c\u0001\u001c\u0001"+ - "\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0005\u001d\u05e6"+ - "\b\u001d\n\u001d\f\u001d\u05e9\t\u001d\u0001\u001d\u0001\u001d\u0003\u001d"+ - "\u05ed\b\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0004\u001d\u05f2\b"+ - "\u001d\u000b\u001d\f\u001d\u05f3\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`\u0001`\u0001`\u0001"+ - "a\u0001a\u0001a\u0001a\u0001a\u0001b\u0001b\u0001b\u0001c\u0001c\u0001"+ - "c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001d\u0001d\u0001d\u0001"+ - "d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001"+ - "f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001g\u0001"+ - "g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001"+ - "i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001j\u0001"+ - "j\u0001j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+ - "l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001m\u0001"+ - "m\u0001m\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001o\u0001o\u0001"+ - "o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001p\u0001p\u0001p\u0001"+ - "p\u0001p\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001"+ - "r\u0001r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001s\u0001s\u0001s\u0001"+ - "t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001"+ - "t\u0001t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001"+ - "u\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001"+ - "v\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001"+ - "w\u0001w\u0001w\u0001w\u0001x\u0001x\u0001x\u0001x\u0001x\u0001x\u0001"+ - "y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001"+ - "y\u0001y\u0001y\u0001y\u0001y\u0001z\u0001z\u0001z\u0001z\u0001z\u0001"+ - "z\u0001z\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\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\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\u0084\u0001\u0084\u0001\u0085\u0001\u0085\u0001\u0085\u0001"+ - "\u0085\u0001\u0085\u0001\u0085\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\u0089\u0001"+ - "\u0089\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\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\u008c\u0001\u008c\u0001\u008c\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"+ - "\u008e\u0001\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\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"+ - "\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\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\u0096\u0001\u0096\u0001"+ - "\u0096\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\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\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"+ - "\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\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\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"+ - "\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\u00a4\u0001"+ - "\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001"+ - "\u00a4\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"+ - "\u00a5\u0001\u00a5\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\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\u00ac\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\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ae\u0001\u00ae\u0001"+ - "\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001"+ - "\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00af\u0001\u00af\u0001\u00af\u0001"+ - "\u00af\u0001\u00af\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\u00b0\u0001\u00b0\u0001\u00b1\u0001"+ - "\u00b1\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\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\u00b5\u0001"+ - "\u00b5\u0001\u00b5\u0001\u00b5\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\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\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\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\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\u00c1\u0001\u00c1\u0001\u00c1\u0001"+ - "\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\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"+ - "\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c4\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\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\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"+ - "\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\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\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"+ - "\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\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"+ - "\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\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"+ - "\u00d6\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\u00da\u0001"+ - "\u00da\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\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"+ - "\u00dd\u0001\u00dd\u0001\u00de\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\u00df\u0001\u00df\u0001\u00df\u0001"+ - "\u00df\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\u00e2\u0001"+ - "\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001"+ - "\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\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\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e7\u0001\u00e7\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\u00e8\u0001"+ - "\u00e9\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"+ - "\u00ea\u0001\u00eb\u0001\u00eb\u0001\u00eb\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\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\u00ef\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\u00f1\u0001\u00f1\u0001\u00f1\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\u00f2\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\u00f4\u0001\u00f4\u0001"+ - "\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001"+ - "\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\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\u00f8\u0001\u00f8\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"+ - "\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\u00fe\u0001\u00fe\u0001\u00fe\u0001"+ - "\u00fe\u0001\u00fe\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\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"+ - "\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\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001"+ - "\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001"+ - "\u0105\u0001\u0105\u0001\u0105\u0001\u0106\u0001\u0106\u0001\u0106\u0001"+ - "\u0106\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\u0108\u0001"+ - "\u0108\u0001\u0109\u0001\u0109\u0001\u0109\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"+ - "\u010b\u0001\u010b\u0001\u010b\u0001\u010c\u0001\u010c\u0001\u010c\u0001"+ - "\u010c\u0001\u010c\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001"+ - "\u010d\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001"+ - "\u010e\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001"+ - "\u0110\u0001\u0110\u0001\u0110\u0001\u0111\u0001\u0111\u0001\u0111\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"+ - "\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\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001"+ - "\u0115\u0001\u0115\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0117\u0001"+ - "\u0117\u0001\u0117\u0001\u0117\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\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\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001"+ - "\u011c\u0001\u011c\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\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\u0120\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"+ - "\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\u0127\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\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\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\u012c\u0001\u012c\u0001\u012c\u0001\u012c\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"+ - "\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\u0130\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"+ - "\u0132\u0001\u0132\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\u0135\u0001\u0135\u0001\u0136\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\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\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"+ - "\u013b\u0001\u013c\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\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\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\u0142\u0001\u0142\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\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\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\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\u014a\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\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"+ - "\u014c\u0001\u014c\u0001\u014c\u0001\u014d\u0001\u014d\u0001\u014d\u0001"+ - "\u014d\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\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0151\u0001"+ - "\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\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\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\u0155\u0001\u0156\u0001\u0156\u0001\u0156\u0001"+ - "\u0156\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\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001"+ - "\u0159\u0001\u0159\u0001\u0159\u0001\u0159\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\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\u015c\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\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\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\u0163\u0001\u0163\u0001\u0163\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\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\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"+ - "\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\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"+ - "\u016e\u0001\u016e\u0001\u016e\u0001\u016f\u0001\u016f\u0001\u016f\u0001"+ - "\u016f\u0001\u016f\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\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\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\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"+ - "\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\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"+ - "\u0179\u0001\u0179\u0001\u017a\u0001\u017a\u0001\u017a\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\u017d\u0001"+ - "\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001"+ - "\u017d\u0001\u017d\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001"+ - "\u017e\u0001\u017e\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\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\u0183\u0001\u0183\u0001"+ - "\u0183\u0001\u0183\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001"+ - "\u0184\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0185\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"+ - "\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001"+ - "\u0188\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u018a\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"+ - "\u018c\u0001\u018c\u0001\u018c\u0001\u018c\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\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\u0190\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\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\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\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\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\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\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\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\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"+ - "\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\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\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\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\u01ac\u0001\u01ac\u0001\u01ac\u0001"+ - "\u01ac\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\u01af\u0001"+ - "\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001"+ - "\u01af\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\u01b0\u0001\u01b0\u0001"+ - "\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\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\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001"+ - "\u01b1\u0001\u01b1\u0001\u01b1\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\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\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\u01b6\u0001"+ - "\u01b6\u0001\u01b6\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\u01b7\u0001\u01b7\u0001"+ - "\u01b7\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\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\u01bb\u0001\u01bb\u0001"+ - "\u01bb\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\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\u01c0\u0001\u01c1\u0001\u01c1\u0001\u01c1\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\u01c5\u0001"+ - "\u01c5\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\u01c7\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\u01c9\u0001\u01c9\u0001\u01c9\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\u01ca\u0001"+ - "\u01ca\u0001\u01ca\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb\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"+ - "\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\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01d0\u0001"+ - "\u01d0\u0001\u01d0\u0001\u01d0\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\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\u01d6\u0001"+ - "\u01d6\u0001\u01d6\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\u01d7\u0001\u01d7\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\u01da\u0001\u01da\u0001"+ - "\u01da\u0001\u01da\u0001\u01da\u0001\u01da\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"+ - "\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\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\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\u01e3\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\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001"+ - "\u01e5\u0001\u01e5\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\u01e6\u0001\u01e7\u0001"+ - "\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001"+ - "\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001"+ - "\u01e7\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001"+ - "\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001"+ - "\u01e9\u0001\u01e9\u0001\u01e9\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\u01eb\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\u01ed\u0001"+ - "\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001"+ - "\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ef\u0001\u01ef\u0001"+ - "\u01ef\u0001\u01ef\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001"+ - "\u01f0\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\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"+ - "\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\u01f6\u0001\u01f6\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\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\u01f9\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\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\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\u01ff\u0001\u01ff\u0001"+ - "\u01ff\u0001\u01ff\u0001\u01ff\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\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"+ - "\u0203\u0001\u0203\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\u0205\u0001\u0205\u0001"+ - "\u0205\u0001\u0205\u0001\u0205\u0001\u0205\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\u0208\u0001\u0208\u0001"+ - "\u0208\u0001\u0208\u0001\u0208\u0001\u0208\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\u020b\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\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\u0210\u0001\u0210\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\u0213\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\u0216\u0001\u0216\u0001\u0216\u0001\u0216\u0001\u0216\u0001"+ - "\u0217\u0001\u0217\u0001\u0217\u0001\u0217\u0001\u0217\u0001\u0217\u0001"+ - "\u0217\u0001\u0217\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0001"+ - "\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0219\u0001\u0219\u0001"+ - "\u0219\u0001\u0219\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\u021c\u0001\u021c\u0001\u021d\u0001\u021d\u0001"+ - "\u021d\u0001\u021d\u0001\u021e\u0001\u021e\u0001\u021e\u0001\u021e\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\u0221\u0001\u0221\u0001\u0221\u0001"+ - "\u0221\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0223\u0001"+ - "\u0223\u0001\u0223\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\u0225\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\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\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001"+ - "\u022a\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001"+ - "\u022b\u0001\u022c\u0001\u022c\u0001\u022c\u0001\u022c\u0001\u022c\u0001"+ - "\u022c\u0001\u022c\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\u022d\u0001\u022e\u0001\u022e\u0001\u022e\u0001"+ - "\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022f\u0001"+ - "\u022f\u0001\u022f\u0001\u022f\u0001\u022f\u0001\u0230\u0001\u0230\u0001"+ - "\u0230\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0231\u0001\u0231\u0001"+ - "\u0231\u0001\u0231\u0001\u0231\u0001\u0232\u0001\u0232\u0001\u0232\u0001"+ - "\u0232\u0001\u0232\u0001\u0232\u0001\u0233\u0001\u0233\u0001\u0233\u0001"+ - "\u0233\u0001\u0233\u0001\u0234\u0001\u0234\u0001\u0234\u0001\u0234\u0001"+ - "\u0234\u0001\u0234\u0001\u0235\u0001\u0235\u0001\u0235\u0001\u0235\u0001"+ - "\u0235\u0001\u0235\u0001\u0236\u0001\u0236\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\u023a\u0001\u023a\u0001"+ - "\u023a\u0001\u023a\u0001\u023a\u0001\u023b\u0001\u023b\u0001\u023b\u0001"+ - "\u023b\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001"+ - "\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023e\u0001\u023e\u0001"+ - "\u023e\u0001\u023e\u0001\u023e\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+ - "\u023f\u0001\u023f\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001"+ - "\u0240\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\u0245\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\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\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\u0249\u0001\u0249\u0001"+ - "\u0249\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\u024b\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\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\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"+ - "\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0254\u0001"+ - "\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\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\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"+ - "\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\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\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\u025e\u0001"+ - "\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\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\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\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\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\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\u0264\u0001\u0264\u0001"+ - "\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0265\u0001"+ - "\u0265\u0001\u0265\u0001\u0265\u0001\u0265\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\u0267\u0001\u0268\u0001\u0268\u0001\u0268\u0001"+ - "\u0268\u0001\u0268\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\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\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"+ - "\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\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\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\u0272\u0001\u0272\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"+ - "\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\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\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\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\u027b\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\u027d\u0001\u027d\u0001"+ - "\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001"+ - "\u027e\u0001\u027e\u0001\u027e\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\u0280\u0001\u0280\u0001\u0280\u0001"+ - "\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001"+ - "\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001"+ - "\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0281\u0001"+ - "\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001"+ - "\u0281\u0001\u0281\u0001\u0281\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ - "\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ - "\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ - "\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001"+ - "\u0282\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001"+ - "\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001"+ - "\u0283\u0001\u0283\u0001\u0284\u0001\u0284\u0001\u0284\u0001\u0284\u0001"+ - "\u0284\u0001\u0284\u0001\u0284\u0001\u0284\u0001\u0285\u0001\u0285\u0001"+ - "\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001"+ - "\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0001"+ - "\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0287\u0001\u0287\u0005"+ - "\u0287\u18fc\b\u0287\n\u0287\f\u0287\u18ff\t\u0287\u0001\u0288\u0001\u0288"+ - "\u0001\u0288\u0001\u0288\u0001\u0288\u0001\u0288\u0003\u0288\u1907\b\u0288"+ - "\u0001\u0289\u0001\u0289\u0003\u0289\u190b\b\u0289\u0001\u028a\u0001\u028a"+ - "\u0003\u028a\u190f\b\u028a\u0001\u028b\u0001\u028b\u0001\u028b\u0001\u028c"+ - "\u0001\u028c\u0001\u028c\u0001\u028c\u0005\u028c\u1918\b\u028c\n\u028c"+ - "\f\u028c\u191b\t\u028c\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028e"+ - "\u0001\u028e\u0001\u028e\u0001\u028e\u0005\u028e\u1924\b\u028e\n\u028e"+ - "\f\u028e\u1927\t\u028e\u0001\u028f\u0001\u028f\u0001\u028f\u0001\u028f"+ - "\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0291\u0001\u0291"+ - "\u0001\u0291\u0001\u0291\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0292"+ - "\u0001\u0293\u0001\u0293\u0001\u0293\u0001\u0294\u0001\u0294\u0001\u0294"+ - "\u0001\u0294\u0005\u0294\u1940\b\u0294\n\u0294\f\u0294\u1943\t\u0294\u0001"+ - "\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001"+ - "\u0296\u0001\u0296\u0001\u0296\u0001\u0297\u0001\u0297\u0001\u0297\u0001"+ - "\u0297\u0001\u0298\u0001\u0298\u0003\u0298\u1954\b\u0298\u0001\u0298\u0001"+ - "\u0298\u0001\u0298\u0001\u0298\u0001\u0298\u0001\u0299\u0001\u0299\u0005"+ - "\u0299\u195d\b\u0299\n\u0299\f\u0299\u1960\t\u0299\u0001\u029a\u0001\u029a"+ - "\u0001\u029a\u0001\u029b\u0001\u029b\u0001\u029b\u0005\u029b\u1968\b\u029b"+ - "\n\u029b\f\u029b\u196b\t\u029b\u0001\u029c\u0001\u029c\u0001\u029c\u0001"+ - "\u029d\u0001\u029d\u0001\u029d\u0001\u029e\u0001\u029e\u0001\u029e\u0001"+ - "\u029f\u0001\u029f\u0001\u029f\u0005\u029f\u1979\b\u029f\n\u029f\f\u029f"+ - "\u197c\t\u029f\u0001\u02a0\u0001\u02a0\u0001\u02a0\u0001\u02a1\u0001\u02a1"+ - "\u0001\u02a1\u0001\u02a2\u0001\u02a2\u0001\u02a3\u0001\u02a3\u0001\u02a3"+ - "\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a4\u0001\u02a4\u0001\u02a4"+ - "\u0003\u02a4\u198f\b\u02a4\u0001\u02a4\u0001\u02a4\u0003\u02a4\u1993\b"+ - "\u02a4\u0001\u02a4\u0003\u02a4\u1996\b\u02a4\u0001\u02a4\u0001\u02a4\u0001"+ - "\u02a4\u0001\u02a4\u0003\u02a4\u199c\b\u02a4\u0001\u02a4\u0003\u02a4\u199f"+ - "\b\u02a4\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0003\u02a4\u19a4\b\u02a4"+ - "\u0001\u02a4\u0001\u02a4\u0003\u02a4\u19a8\b\u02a4\u0001\u02a5\u0004\u02a5"+ - "\u19ab\b\u02a5\u000b\u02a5\f\u02a5\u19ac\u0001\u02a6\u0001\u02a6\u0001"+ - "\u02a6\u0005\u02a6\u19b2\b\u02a6\n\u02a6\f\u02a6\u19b5\t\u02a6\u0001\u02a7"+ - "\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7"+ - "\u0001\u02a7\u0005\u02a7\u19bf\b\u02a7\n\u02a7\f\u02a7\u19c2\t\u02a7\u0001"+ - "\u02a7\u0001\u02a7\u0001\u02a8\u0004\u02a8\u19c7\b\u02a8\u000b\u02a8\f"+ - "\u02a8\u19c8\u0001\u02a8\u0001\u02a8\u0001\u02a9\u0001\u02a9\u0003\u02a9"+ - "\u19cf\b\u02a9\u0001\u02a9\u0003\u02a9\u19d2\b\u02a9\u0001\u02a9\u0001"+ - "\u02a9\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0005\u02aa\u19da"+ - "\b\u02aa\n\u02aa\f\u02aa\u19dd\t\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02ab"+ - "\u0001\u02ab\u0001\u02ab\u0001\u02ab\u0005\u02ab\u19e5\b\u02ab\n\u02ab"+ - "\f\u02ab\u19e8\t\u02ab\u0001\u02ab\u0001\u02ab\u0001\u02ab\u0004\u02ab"+ - "\u19ed\b\u02ab\u000b\u02ab\f\u02ab\u19ee\u0001\u02ab\u0001\u02ab\u0004"+ - "\u02ab\u19f3\b\u02ab\u000b\u02ab\f\u02ab\u19f4\u0001\u02ab\u0005\u02ab"+ - "\u19f8\b\u02ab\n\u02ab\f\u02ab\u19fb\t\u02ab\u0001\u02ab\u0005\u02ab\u19fe"+ - "\b\u02ab\n\u02ab\f\u02ab\u1a01\t\u02ab\u0001\u02ab\u0001\u02ab\u0001\u02ab"+ - "\u0001\u02ab\u0001\u02ab\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac"+ - "\u0005\u02ac\u1a0c\b\u02ac\n\u02ac\f\u02ac\u1a0f\t\u02ac\u0001\u02ac\u0001"+ - "\u02ac\u0001\u02ac\u0004\u02ac\u1a14\b\u02ac\u000b\u02ac\f\u02ac\u1a15"+ - "\u0001\u02ac\u0001\u02ac\u0004\u02ac\u1a1a\b\u02ac\u000b\u02ac\f\u02ac"+ - "\u1a1b\u0001\u02ac\u0003\u02ac\u1a1f\b\u02ac\u0005\u02ac\u1a21\b\u02ac"+ - "\n\u02ac\f\u02ac\u1a24\t\u02ac\u0001\u02ac\u0004\u02ac\u1a27\b\u02ac\u000b"+ - "\u02ac\f\u02ac\u1a28\u0001\u02ac\u0004\u02ac\u1a2c\b\u02ac\u000b\u02ac"+ - "\f\u02ac\u1a2d\u0001\u02ac\u0005\u02ac\u1a31\b\u02ac\n\u02ac\f\u02ac\u1a34"+ - "\t\u02ac\u0001\u02ac\u0003\u02ac\u1a37\b\u02ac\u0001\u02ac\u0001\u02ac"+ - "\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0005\u02ad\u1a3f\b\u02ad"+ - "\n\u02ad\f\u02ad\u1a42\t\u02ad\u0001\u02ad\u0005\u02ad\u1a45\b\u02ad\n"+ - "\u02ad\f\u02ad\u1a48\t\u02ad\u0001\u02ad\u0001\u02ad\u0005\u02ad\u1a4c"+ - "\b\u02ad\n\u02ad\f\u02ad\u1a4f\t\u02ad\u0003\u02ad\u1a51\b\u02ad\u0001"+ - "\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02af\u0001\u02af\u0001\u02b0\u0001"+ - "\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b1\u0001\u02b1\u0003"+ - "\u02b1\u1a5f\b\u02b1\u0001\u02b1\u0001\u02b1\u0001\u02b2\u0001\u02b2\u0001"+ - "\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001"+ - "\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001"+ - "\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0003"+ - "\u02b2\u1a77\b\u02b2\u0001\u02b2\u0005\u02b2\u1a7a\b\u02b2\n\u02b2\f\u02b2"+ - "\u1a7d\t\u02b2\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b3"+ - "\u0001\u02b4\u0001\u02b4\u0003\u02b4\u1a86\b\u02b4\u0001\u02b4\u0001\u02b4"+ - "\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0005\u02b5"+ - "\u1a8f\b\u02b5\n\u02b5\f\u02b5\u1a92\t\u02b5\u0001\u02b6\u0001\u02b6\u0001"+ - "\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b7\u0001\u02b7\u0001\u02b7\u0001"+ - "\u02b7\u0001\u02b7\u0001\u02b7\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001"+ - "\u02b8\u0001\u02b8\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001"+ - "\u02b9\u0001\u02ba\u0001\u02ba\u0001\u02ba\u0001\u02ba\u0001\u02ba\u0001"+ - "\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bc\u0001"+ - "\u02bc\u0001\u02bc\u0001\u02bc\u0001\u02bc\u0001\u02bd\u0004\u02bd\u1ab9"+ - "\b\u02bd\u000b\u02bd\f\u02bd\u1aba\u0001\u02bd\u0001\u02bd\u0005\u02bd"+ - "\u1abf\b\u02bd\n\u02bd\f\u02bd\u1ac2\t\u02bd\u0003\u02bd\u1ac4\b\u02bd"+ - "\u0001\u02be\u0001\u02be\u0003\u02be\u1ac8\b\u02be\u0001\u02be\u0001\u02be"+ - "\u0001\u02be\u0001\u02be\u0001\u02be\u0001\u02be\u0001\u02be\u0000\u0000"+ - "\u02bf\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/\u00161\u0017"+ - "3\u00185\u00197\u001a9\u001b;\u001c=\u001d?\u0000A\u0000C\u0000E\u0000"+ - "G\u001eI\u001fK M!O\"Q#S$U%W&Y\'[(])_*a+c,e-g.i/k0m1o2q3s4u5w6y7{8}9\u007f"+ - ":\u0081;\u0083<\u0085=\u0087>\u0089?\u008b@\u008dA\u008fB\u0091C\u0093"+ - "D\u0095E\u0097F\u0099G\u009bH\u009dI\u009fJ\u00a1K\u00a3L\u00a5M\u00a7"+ - "N\u00a9O\u00abP\u00adQ\u00afR\u00b1S\u00b3T\u00b5U\u00b7V\u00b9W\u00bb"+ - "X\u00bdY\u00bfZ\u00c1[\u00c3\\\u00c5]\u00c7^\u00c9_\u00cb`\u00cda\u00cf"+ - "b\u00d1c\u00d3d\u00d5e\u00d7f\u00d9g\u00dbh\u00ddi\u00dfj\u00e1k\u00e3"+ - "l\u00e5m\u00e7n\u00e9o\u00ebp\u00edq\u00efr\u00f1s\u00f3t\u00f5u\u00f7"+ - "v\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\u027f\u050b\u0280\u050d\u0281\u050f\u0282\u0511\u0283"+ - "\u0513\u0284\u0515\u0000\u0517\u0000\u0519\u0000\u051b\u0285\u051d\u0286"+ - "\u051f\u0287\u0521\u0288\u0523\u0289\u0525\u028a\u0527\u028b\u0529\u028c"+ - "\u052b\u028d\u052d\u028e\u052f\u0000\u0531\u028f\u0533\u0290\u0535\u0291"+ - "\u0537\u0000\u0539\u0292\u053b\u0293\u053d\u0294\u053f\u0295\u0541\u0296"+ - "\u0543\u0297\u0545\u0298\u0547\u0299\u0549\u029a\u054b\u029b\u054d\u029c"+ - "\u054f\u0000\u0551\u029d\u0553\u029e\u0555\u029f\u0557\u02a0\u0559\u02a1"+ - "\u055b\u02a2\u055d\u02a3\u055f\u02a4\u0561\u02a5\u0563\u02a6\u0565\u02a7"+ - "\u0567\u02a8\u0569\u0000\u056b\u02a9\u056d\u02aa\u056f\u0000\u0571\u0000"+ - "\u0573\u0000\u0575\u02ab\u0577\u0000\u0579\u0000\u057b\u02af\u057d\u02ac"+ - "\u057f\u02ad\u0581\u02ae\u0005\u0000\u0001\u0002\u0003\u00043\u0001\u0000"+ - "09\u0002\u0000++--\t\u0000!!##%&**<@^^``||~~\u0002\u0000*+<>\b\u0000!"+ - "!##%&?@^^``||~~\u0002\u0000AAaa\u0002\u0000LLll\u0002\u0000NNnn\u0002"+ - "\u0000YYyy\u0002\u0000SSss\u0002\u0000EEee\u0002\u0000ZZzz\u0002\u0000"+ - "DDdd\u0002\u0000RRrr\u0002\u0000CCcc\u0002\u0000MMmm\u0002\u0000TTtt\u0002"+ - "\u0000IIii\u0002\u0000BBbb\u0002\u0000OOoo\u0002\u0000HHhh\u0002\u0000"+ - "KKkk\u0002\u0000UUuu\u0002\u0000GGgg\u0002\u0000PPpp\u0002\u0000FFff\u0002"+ - "\u0000XXxx\u0002\u0000VVvv\u0002\u0000WWww\u0002\u0000QQqq\u0002\u0000"+ - "JJjj\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\u0000"+ - "01\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$$\u1b18\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\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"+ - "\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\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"+ - "\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\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\u0509\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\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\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\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\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\u0551\u0001\u0000\u0000\u0000\u0000\u0553\u0001\u0000"+ - "\u0000\u0000\u0000\u0555\u0001\u0000\u0000\u0000\u0000\u0557\u0001\u0000"+ - "\u0000\u0000\u0000\u0559\u0001\u0000\u0000\u0000\u0000\u055b\u0001\u0000"+ - "\u0000\u0000\u0000\u055d\u0001\u0000\u0000\u0000\u0000\u055f\u0001\u0000"+ - "\u0000\u0000\u0000\u0561\u0001\u0000\u0000\u0000\u0000\u0563\u0001\u0000"+ - "\u0000\u0000\u0001\u0565\u0001\u0000\u0000\u0000\u0001\u0567\u0001\u0000"+ - "\u0000\u0000\u0001\u056b\u0001\u0000\u0000\u0000\u0001\u056d\u0001\u0000"+ - "\u0000\u0000\u0002\u0571\u0001\u0000\u0000\u0000\u0002\u0573\u0001\u0000"+ - "\u0000\u0000\u0002\u0575\u0001\u0000\u0000\u0000\u0003\u0577\u0001\u0000"+ - "\u0000\u0000\u0003\u0579\u0001\u0000\u0000\u0000\u0003\u057b\u0001\u0000"+ - "\u0000\u0000\u0003\u057d\u0001\u0000\u0000\u0000\u0004\u057f\u0001\u0000"+ - "\u0000\u0000\u0004\u0581\u0001\u0000\u0000\u0000\u0005\u0583\u0001\u0000"+ - "\u0000\u0000\u0007\u0585\u0001\u0000\u0000\u0000\t\u0587\u0001\u0000\u0000"+ - "\u0000\u000b\u0589\u0001\u0000\u0000\u0000\r\u058b\u0001\u0000\u0000\u0000"+ - "\u000f\u058d\u0001\u0000\u0000\u0000\u0011\u058f\u0001\u0000\u0000\u0000"+ - "\u0013\u0591\u0001\u0000\u0000\u0000\u0015\u0593\u0001\u0000\u0000\u0000"+ - "\u0017\u0595\u0001\u0000\u0000\u0000\u0019\u0597\u0001\u0000\u0000\u0000"+ - "\u001b\u0599\u0001\u0000\u0000\u0000\u001d\u059b\u0001\u0000\u0000\u0000"+ - "\u001f\u059d\u0001\u0000\u0000\u0000!\u059f\u0001\u0000\u0000\u0000#\u05a1"+ - "\u0001\u0000\u0000\u0000%\u05a3\u0001\u0000\u0000\u0000\'\u05a5\u0001"+ - "\u0000\u0000\u0000)\u05a8\u0001\u0000\u0000\u0000+\u05ab\u0001\u0000\u0000"+ - "\u0000-\u05ae\u0001\u0000\u0000\u0000/\u05b1\u0001\u0000\u0000\u00001"+ - "\u05b4\u0001\u0000\u0000\u00003\u05b7\u0001\u0000\u0000\u00005\u05ba\u0001"+ - "\u0000\u0000\u00007\u05bd\u0001\u0000\u0000\u00009\u05c0\u0001\u0000\u0000"+ - "\u0000;\u05c2\u0001\u0000\u0000\u0000=\u05dc\u0001\u0000\u0000\u0000?"+ - "\u05e7\u0001\u0000\u0000\u0000A\u05f7\u0001\u0000\u0000\u0000C\u05f9\u0001"+ - "\u0000\u0000\u0000E\u05fb\u0001\u0000\u0000\u0000G\u05fd\u0001\u0000\u0000"+ - "\u0000I\u0601\u0001\u0000\u0000\u0000K\u0609\u0001\u0000\u0000\u0000M"+ - "\u0611\u0001\u0000\u0000\u0000O\u0615\u0001\u0000\u0000\u0000Q\u0619\u0001"+ - "\u0000\u0000\u0000S\u061f\u0001\u0000\u0000\u0000U\u0622\u0001\u0000\u0000"+ - "\u0000W\u0626\u0001\u0000\u0000\u0000Y\u0631\u0001\u0000\u0000\u0000["+ - "\u0636\u0001\u0000\u0000\u0000]\u063b\u0001\u0000\u0000\u0000_\u0640\u0001"+ - "\u0000\u0000\u0000a\u0646\u0001\u0000\u0000\u0000c\u064e\u0001\u0000\u0000"+ - "\u0000e\u0655\u0001\u0000\u0000\u0000g\u0660\u0001\u0000\u0000\u0000i"+ - "\u0667\u0001\u0000\u0000\u0000k\u0677\u0001\u0000\u0000\u0000m\u0684\u0001"+ - "\u0000\u0000\u0000o\u0691\u0001\u0000\u0000\u0000q\u069e\u0001\u0000\u0000"+ - "\u0000s\u06b0\u0001\u0000\u0000\u0000u\u06bd\u0001\u0000\u0000\u0000w"+ - "\u06c5\u0001\u0000\u0000\u0000y\u06d0\u0001\u0000\u0000\u0000{\u06d5\u0001"+ - "\u0000\u0000\u0000}\u06de\u0001\u0000\u0000\u0000\u007f\u06e1\u0001\u0000"+ - "\u0000\u0000\u0081\u06e6\u0001\u0000\u0000\u0000\u0083\u06ed\u0001\u0000"+ - "\u0000\u0000\u0085\u06f3\u0001\u0000\u0000\u0000\u0087\u06f9\u0001\u0000"+ - "\u0000\u0000\u0089\u06fd\u0001\u0000\u0000\u0000\u008b\u0705\u0001\u0000"+ - "\u0000\u0000\u008d\u070a\u0001\u0000\u0000\u0000\u008f\u0710\u0001\u0000"+ - "\u0000\u0000\u0091\u0716\u0001\u0000\u0000\u0000\u0093\u071d\u0001\u0000"+ - "\u0000\u0000\u0095\u0720\u0001\u0000\u0000\u0000\u0097\u072a\u0001\u0000"+ - "\u0000\u0000\u0099\u0734\u0001\u0000\u0000\u0000\u009b\u0739\u0001\u0000"+ - "\u0000\u0000\u009d\u0741\u0001\u0000\u0000\u0000\u009f\u0749\u0001\u0000"+ - "\u0000\u0000\u00a1\u074f\u0001\u0000\u0000\u0000\u00a3\u0759\u0001\u0000"+ - "\u0000\u0000\u00a5\u0768\u0001\u0000\u0000\u0000\u00a7\u076c\u0001\u0000"+ - "\u0000\u0000\u00a9\u0771\u0001\u0000\u0000\u0000\u00ab\u0778\u0001\u0000"+ - "\u0000\u0000\u00ad\u077b\u0001\u0000\u0000\u0000\u00af\u0780\u0001\u0000"+ - "\u0000\u0000\u00b1\u0783\u0001\u0000\u0000\u0000\u00b3\u0789\u0001\u0000"+ - "\u0000\u0000\u00b5\u0791\u0001\u0000\u0000\u0000\u00b7\u0799\u0001\u0000"+ - "\u0000\u0000\u00b9\u07a4\u0001\u0000\u0000\u0000\u00bb\u07ae\u0001\u0000"+ - "\u0000\u0000\u00bd\u07b5\u0001\u0000\u0000\u0000\u00bf\u07c2\u0001\u0000"+ - "\u0000\u0000\u00c1\u07c7\u0001\u0000\u0000\u0000\u00c3\u07d1\u0001\u0000"+ - "\u0000\u0000\u00c5\u07d7\u0001\u0000\u0000\u0000\u00c7\u07de\u0001\u0000"+ - "\u0000\u0000\u00c9\u07e3\u0001\u0000\u0000\u0000\u00cb\u07e6\u0001\u0000"+ - "\u0000\u0000\u00cd\u07ef\u0001\u0000\u0000\u0000\u00cf\u07f5\u0001\u0000"+ - "\u0000\u0000\u00d1\u07fc\u0001\u0000\u0000\u0000\u00d3\u0803\u0001\u0000"+ - "\u0000\u0000\u00d5\u0809\u0001\u0000\u0000\u0000\u00d7\u0810\u0001\u0000"+ - "\u0000\u0000\u00d9\u0819\u0001\u0000\u0000\u0000\u00db\u081e\u0001\u0000"+ - "\u0000\u0000\u00dd\u0824\u0001\u0000\u0000\u0000\u00df\u082b\u0001\u0000"+ - "\u0000\u0000\u00e1\u0830\u0001\u0000\u0000\u0000\u00e3\u0836\u0001\u0000"+ - "\u0000\u0000\u00e5\u083f\u0001\u0000\u0000\u0000\u00e7\u0844\u0001\u0000"+ - "\u0000\u0000\u00e9\u084a\u0001\u0000\u0000\u0000\u00eb\u0851\u0001\u0000"+ - "\u0000\u0000\u00ed\u0856\u0001\u0000\u0000\u0000\u00ef\u0864\u0001\u0000"+ - "\u0000\u0000\u00f1\u086b\u0001\u0000\u0000\u0000\u00f3\u0875\u0001\u0000"+ - "\u0000\u0000\u00f5\u0882\u0001\u0000\u0000\u0000\u00f7\u0888\u0001\u0000"+ - "\u0000\u0000\u00f9\u0897\u0001\u0000\u0000\u0000\u00fb\u089e\u0001\u0000"+ - "\u0000\u0000\u00fd\u08a3\u0001\u0000\u0000\u0000\u00ff\u08a9\u0001\u0000"+ - "\u0000\u0000\u0101\u08af\u0001\u0000\u0000\u0000\u0103\u08b2\u0001\u0000"+ - "\u0000\u0000\u0105\u08b9\u0001\u0000\u0000\u0000\u0107\u08be\u0001\u0000"+ - "\u0000\u0000\u0109\u08c3\u0001\u0000\u0000\u0000\u010b\u08c8\u0001\u0000"+ - "\u0000\u0000\u010d\u08d0\u0001\u0000\u0000\u0000\u010f\u08d8\u0001\u0000"+ - "\u0000\u0000\u0111\u08de\u0001\u0000\u0000\u0000\u0113\u08e3\u0001\u0000"+ - "\u0000\u0000\u0115\u08ec\u0001\u0000\u0000\u0000\u0117\u08f2\u0001\u0000"+ - "\u0000\u0000\u0119\u08fa\u0001\u0000\u0000\u0000\u011b\u0902\u0001\u0000"+ - "\u0000\u0000\u011d\u0908\u0001\u0000\u0000\u0000\u011f\u0911\u0001\u0000"+ - "\u0000\u0000\u0121\u0918\u0001\u0000\u0000\u0000\u0123\u091f\u0001\u0000"+ - "\u0000\u0000\u0125\u0923\u0001\u0000\u0000\u0000\u0127\u0929\u0001\u0000"+ - "\u0000\u0000\u0129\u092f\u0001\u0000\u0000\u0000\u012b\u0939\u0001\u0000"+ - "\u0000\u0000\u012d\u093e\u0001\u0000\u0000\u0000\u012f\u0944\u0001\u0000"+ - "\u0000\u0000\u0131\u094b\u0001\u0000\u0000\u0000\u0133\u0955\u0001\u0000"+ - "\u0000\u0000\u0135\u0960\u0001\u0000\u0000\u0000\u0137\u0963\u0001\u0000"+ - "\u0000\u0000\u0139\u096d\u0001\u0000\u0000\u0000\u013b\u0976\u0001\u0000"+ - "\u0000\u0000\u013d\u097d\u0001\u0000\u0000\u0000\u013f\u0983\u0001\u0000"+ - "\u0000\u0000\u0141\u0986\u0001\u0000\u0000\u0000\u0143\u098c\u0001\u0000"+ - "\u0000\u0000\u0145\u0993\u0001\u0000\u0000\u0000\u0147\u099b\u0001\u0000"+ - "\u0000\u0000\u0149\u09a4\u0001\u0000\u0000\u0000\u014b\u09ac\u0001\u0000"+ - "\u0000\u0000\u014d\u09b2\u0001\u0000\u0000\u0000\u014f\u09c2\u0001\u0000"+ - "\u0000\u0000\u0151\u09cd\u0001\u0000\u0000\u0000\u0153\u09d3\u0001\u0000"+ - "\u0000\u0000\u0155\u09d9\u0001\u0000\u0000\u0000\u0157\u09e1\u0001\u0000"+ - "\u0000\u0000\u0159\u09e9\u0001\u0000\u0000\u0000\u015b\u09f2\u0001\u0000"+ - "\u0000\u0000\u015d\u09f9\u0001\u0000\u0000\u0000\u015f\u0a03\u0001\u0000"+ - "\u0000\u0000\u0161\u0a11\u0001\u0000\u0000\u0000\u0163\u0a1c\u0001\u0000"+ - "\u0000\u0000\u0165\u0a28\u0001\u0000\u0000\u0000\u0167\u0a30\u0001\u0000"+ - "\u0000\u0000\u0169\u0a39\u0001\u0000\u0000\u0000\u016b\u0a44\u0001\u0000"+ - "\u0000\u0000\u016d\u0a49\u0001\u0000\u0000\u0000\u016f\u0a4e\u0001\u0000"+ - "\u0000\u0000\u0171\u0a52\u0001\u0000\u0000\u0000\u0173\u0a59\u0001\u0000"+ - "\u0000\u0000\u0175\u0a5f\u0001\u0000\u0000\u0000\u0177\u0a64\u0001\u0000"+ - "\u0000\u0000\u0179\u0a6d\u0001\u0000\u0000\u0000\u017b\u0a71\u0001\u0000"+ - "\u0000\u0000\u017d\u0a7c\u0001\u0000\u0000\u0000\u017f\u0a84\u0001\u0000"+ - "\u0000\u0000\u0181\u0a8d\u0001\u0000\u0000\u0000\u0183\u0a96\u0001\u0000"+ - "\u0000\u0000\u0185\u0a9e\u0001\u0000\u0000\u0000\u0187\u0aa5\u0001\u0000"+ - "\u0000\u0000\u0189\u0aaf\u0001\u0000\u0000\u0000\u018b\u0aba\u0001\u0000"+ - "\u0000\u0000\u018d\u0ac5\u0001\u0000\u0000\u0000\u018f\u0acd\u0001\u0000"+ - "\u0000\u0000\u0191\u0ad5\u0001\u0000\u0000\u0000\u0193\u0ade\u0001\u0000"+ - "\u0000\u0000\u0195\u0ae5\u0001\u0000\u0000\u0000\u0197\u0aec\u0001\u0000"+ - "\u0000\u0000\u0199\u0af1\u0001\u0000\u0000\u0000\u019b\u0af6\u0001\u0000"+ - "\u0000\u0000\u019d\u0afd\u0001\u0000\u0000\u0000\u019f\u0b06\u0001\u0000"+ - "\u0000\u0000\u01a1\u0b10\u0001\u0000\u0000\u0000\u01a3\u0b15\u0001\u0000"+ - "\u0000\u0000\u01a5\u0b1c\u0001\u0000\u0000\u0000\u01a7\u0b22\u0001\u0000"+ - "\u0000\u0000\u01a9\u0b2a\u0001\u0000\u0000\u0000\u01ab\u0b34\u0001\u0000"+ - "\u0000\u0000\u01ad\u0b3e\u0001\u0000\u0000\u0000\u01af\u0b46\u0001\u0000"+ - "\u0000\u0000\u01b1\u0b4e\u0001\u0000\u0000\u0000\u01b3\u0b58\u0001\u0000"+ - "\u0000\u0000\u01b5\u0b61\u0001\u0000\u0000\u0000\u01b7\u0b68\u0001\u0000"+ - "\u0000\u0000\u01b9\u0b6e\u0001\u0000\u0000\u0000\u01bb\u0b78\u0001\u0000"+ - "\u0000\u0000\u01bd\u0b7e\u0001\u0000\u0000\u0000\u01bf\u0b86\u0001\u0000"+ - "\u0000\u0000\u01c1\u0b8f\u0001\u0000\u0000\u0000\u01c3\u0b99\u0001\u0000"+ - "\u0000\u0000\u01c5\u0ba0\u0001\u0000\u0000\u0000\u01c7\u0ba8\u0001\u0000"+ - "\u0000\u0000\u01c9\u0bb0\u0001\u0000\u0000\u0000\u01cb\u0bb7\u0001\u0000"+ - "\u0000\u0000\u01cd\u0bbc\u0001\u0000\u0000\u0000\u01cf\u0bc1\u0001\u0000"+ - "\u0000\u0000\u01d1\u0bca\u0001\u0000\u0000\u0000\u01d3\u0bcd\u0001\u0000"+ - "\u0000\u0000\u01d5\u0bd7\u0001\u0000\u0000\u0000\u01d7\u0be1\u0001\u0000"+ - "\u0000\u0000\u01d9\u0bea\u0001\u0000\u0000\u0000\u01db\u0bf4\u0001\u0000"+ - "\u0000\u0000\u01dd\u0bfe\u0001\u0000\u0000\u0000\u01df\u0c04\u0001\u0000"+ - "\u0000\u0000\u01e1\u0c0c\u0001\u0000\u0000\u0000\u01e3\u0c14\u0001\u0000"+ - "\u0000\u0000\u01e5\u0c1d\u0001\u0000\u0000\u0000\u01e7\u0c24\u0001\u0000"+ - "\u0000\u0000\u01e9\u0c30\u0001\u0000\u0000\u0000\u01eb\u0c37\u0001\u0000"+ - "\u0000\u0000\u01ed\u0c3f\u0001\u0000\u0000\u0000\u01ef\u0c47\u0001\u0000"+ - "\u0000\u0000\u01f1\u0c51\u0001\u0000\u0000\u0000\u01f3\u0c55\u0001\u0000"+ - "\u0000\u0000\u01f5\u0c5b\u0001\u0000\u0000\u0000\u01f7\u0c64\u0001\u0000"+ - "\u0000\u0000\u01f9\u0c6a\u0001\u0000\u0000\u0000\u01fb\u0c6f\u0001\u0000"+ - "\u0000\u0000\u01fd\u0c79\u0001\u0000\u0000\u0000\u01ff\u0c7f\u0001\u0000"+ - "\u0000\u0000\u0201\u0c86\u0001\u0000\u0000\u0000\u0203\u0c8b\u0001\u0000"+ - "\u0000\u0000\u0205\u0c91\u0001\u0000\u0000\u0000\u0207\u0c9a\u0001\u0000"+ - "\u0000\u0000\u0209\u0c9f\u0001\u0000\u0000\u0000\u020b\u0ca7\u0001\u0000"+ - "\u0000\u0000\u020d\u0cad\u0001\u0000\u0000\u0000\u020f\u0cb5\u0001\u0000"+ - "\u0000\u0000\u0211\u0cc2\u0001\u0000\u0000\u0000\u0213\u0ccb\u0001\u0000"+ - "\u0000\u0000\u0215\u0cd1\u0001\u0000\u0000\u0000\u0217\u0cd8\u0001\u0000"+ - "\u0000\u0000\u0219\u0ce1\u0001\u0000\u0000\u0000\u021b\u0ce6\u0001\u0000"+ - "\u0000\u0000\u021d\u0cec\u0001\u0000\u0000\u0000\u021f\u0cf1\u0001\u0000"+ - "\u0000\u0000\u0221\u0cf6\u0001\u0000\u0000\u0000\u0223\u0cfc\u0001\u0000"+ - "\u0000\u0000\u0225\u0d01\u0001\u0000\u0000\u0000\u0227\u0d04\u0001\u0000"+ - "\u0000\u0000\u0229\u0d0c\u0001\u0000\u0000\u0000\u022b\u0d13\u0001\u0000"+ - "\u0000\u0000\u022d\u0d1a\u0001\u0000\u0000\u0000\u022f\u0d20\u0001\u0000"+ - "\u0000\u0000\u0231\u0d27\u0001\u0000\u0000\u0000\u0233\u0d2a\u0001\u0000"+ - "\u0000\u0000\u0235\u0d2e\u0001\u0000\u0000\u0000\u0237\u0d33\u0001\u0000"+ - "\u0000\u0000\u0239\u0d3c\u0001\u0000\u0000\u0000\u023b\u0d43\u0001\u0000"+ - "\u0000\u0000\u023d\u0d4b\u0001\u0000\u0000\u0000\u023f\u0d51\u0001\u0000"+ - "\u0000\u0000\u0241\u0d57\u0001\u0000\u0000\u0000\u0243\u0d5e\u0001\u0000"+ - "\u0000\u0000\u0245\u0d66\u0001\u0000\u0000\u0000\u0247\u0d70\u0001\u0000"+ - "\u0000\u0000\u0249\u0d78\u0001\u0000\u0000\u0000\u024b\u0d81\u0001\u0000"+ - "\u0000\u0000\u024d\u0d87\u0001\u0000\u0000\u0000\u024f\u0d91\u0001\u0000"+ - "\u0000\u0000\u0251\u0d99\u0001\u0000\u0000\u0000\u0253\u0da2\u0001\u0000"+ - "\u0000\u0000\u0255\u0dab\u0001\u0000\u0000\u0000\u0257\u0db1\u0001\u0000"+ - "\u0000\u0000\u0259\u0dbc\u0001\u0000\u0000\u0000\u025b\u0dc7\u0001\u0000"+ - "\u0000\u0000\u025d\u0dd1\u0001\u0000\u0000\u0000\u025f\u0dd9\u0001\u0000"+ - "\u0000\u0000\u0261\u0ddf\u0001\u0000\u0000\u0000\u0263\u0de5\u0001\u0000"+ - "\u0000\u0000\u0265\u0dea\u0001\u0000\u0000\u0000\u0267\u0df3\u0001\u0000"+ - "\u0000\u0000\u0269\u0dfb\u0001\u0000\u0000\u0000\u026b\u0e05\u0001\u0000"+ - "\u0000\u0000\u026d\u0e09\u0001\u0000\u0000\u0000\u026f\u0e11\u0001\u0000"+ - "\u0000\u0000\u0271\u0e19\u0001\u0000\u0000\u0000\u0273\u0e22\u0001\u0000"+ - "\u0000\u0000\u0275\u0e2a\u0001\u0000\u0000\u0000\u0277\u0e31\u0001\u0000"+ - "\u0000\u0000\u0279\u0e3c\u0001\u0000\u0000\u0000\u027b\u0e44\u0001\u0000"+ - "\u0000\u0000\u027d\u0e4c\u0001\u0000\u0000\u0000\u027f\u0e52\u0001\u0000"+ - "\u0000\u0000\u0281\u0e5a\u0001\u0000\u0000\u0000\u0283\u0e63\u0001\u0000"+ - "\u0000\u0000\u0285\u0e6b\u0001\u0000\u0000\u0000\u0287\u0e72\u0001\u0000"+ - "\u0000\u0000\u0289\u0e77\u0001\u0000\u0000\u0000\u028b\u0e80\u0001\u0000"+ - "\u0000\u0000\u028d\u0e85\u0001\u0000\u0000\u0000\u028f\u0e8a\u0001\u0000"+ - "\u0000\u0000\u0291\u0e94\u0001\u0000\u0000\u0000\u0293\u0e9b\u0001\u0000"+ - "\u0000\u0000\u0295\u0ea2\u0001\u0000\u0000\u0000\u0297\u0ea9\u0001\u0000"+ - "\u0000\u0000\u0299\u0eb0\u0001\u0000\u0000\u0000\u029b\u0eb9\u0001\u0000"+ - "\u0000\u0000\u029d\u0ec2\u0001\u0000\u0000\u0000\u029f\u0ecc\u0001\u0000"+ - "\u0000\u0000\u02a1\u0ed9\u0001\u0000\u0000\u0000\u02a3\u0ee0\u0001\u0000"+ - "\u0000\u0000\u02a5\u0ee8\u0001\u0000\u0000\u0000\u02a7\u0eec\u0001\u0000"+ - "\u0000\u0000\u02a9\u0ef2\u0001\u0000\u0000\u0000\u02ab\u0ef7\u0001\u0000"+ - "\u0000\u0000\u02ad\u0efe\u0001\u0000\u0000\u0000\u02af\u0f07\u0001\u0000"+ - "\u0000\u0000\u02b1\u0f0e\u0001\u0000\u0000\u0000\u02b3\u0f19\u0001\u0000"+ - "\u0000\u0000\u02b5\u0f1f\u0001\u0000\u0000\u0000\u02b7\u0f29\u0001\u0000"+ - "\u0000\u0000\u02b9\u0f34\u0001\u0000"; - private static final String _serializedATNSegment1 = - "\u0000\u0000\u02bb\u0f3a\u0001\u0000\u0000\u0000\u02bd\u0f41\u0001\u0000"+ - "\u0000\u0000\u02bf\u0f49\u0001\u0000\u0000\u0000\u02c1\u0f50\u0001\u0000"+ - "\u0000\u0000\u02c3\u0f56\u0001\u0000\u0000\u0000\u02c5\u0f5c\u0001\u0000"+ - "\u0000\u0000\u02c7\u0f63\u0001\u0000\u0000\u0000\u02c9\u0f6a\u0001\u0000"+ - "\u0000\u0000\u02cb\u0f72\u0001\u0000\u0000\u0000\u02cd\u0f7d\u0001\u0000"+ - "\u0000\u0000\u02cf\u0f82\u0001\u0000\u0000\u0000\u02d1\u0f8b\u0001\u0000"+ - "\u0000\u0000\u02d3\u0f95\u0001\u0000\u0000\u0000\u02d5\u0f9a\u0001\u0000"+ - "\u0000\u0000\u02d7\u0fa6\u0001\u0000\u0000\u0000\u02d9\u0fae\u0001\u0000"+ - "\u0000\u0000\u02db\u0fb7\u0001\u0000\u0000\u0000\u02dd\u0fbf\u0001\u0000"+ - "\u0000\u0000\u02df\u0fc4\u0001\u0000\u0000\u0000\u02e1\u0fca\u0001\u0000"+ - "\u0000\u0000\u02e3\u0fd4\u0001\u0000\u0000\u0000\u02e5\u0fe0\u0001\u0000"+ - "\u0000\u0000\u02e7\u0fec\u0001\u0000\u0000\u0000\u02e9\u0ff4\u0001\u0000"+ - "\u0000\u0000\u02eb\u0ffd\u0001\u0000\u0000\u0000\u02ed\u1006\u0001\u0000"+ - "\u0000\u0000\u02ef\u100c\u0001\u0000\u0000\u0000\u02f1\u1013\u0001\u0000"+ - "\u0000\u0000\u02f3\u101a\u0001\u0000\u0000\u0000\u02f5\u1020\u0001\u0000"+ - "\u0000\u0000\u02f7\u1029\u0001\u0000\u0000\u0000\u02f9\u1033\u0001\u0000"+ - "\u0000\u0000\u02fb\u103b\u0001\u0000\u0000\u0000\u02fd\u1043\u0001\u0000"+ - "\u0000\u0000\u02ff\u1048\u0001\u0000\u0000\u0000\u0301\u1051\u0001\u0000"+ - "\u0000\u0000\u0303\u105c\u0001\u0000\u0000\u0000\u0305\u1064\u0001\u0000"+ - "\u0000\u0000\u0307\u1069\u0001\u0000\u0000\u0000\u0309\u1071\u0001\u0000"+ - "\u0000\u0000\u030b\u1077\u0001\u0000\u0000\u0000\u030d\u107b\u0001\u0000"+ - "\u0000\u0000\u030f\u1080\u0001\u0000\u0000\u0000\u0311\u1084\u0001\u0000"+ - "\u0000\u0000\u0313\u1089\u0001\u0000\u0000\u0000\u0315\u1091\u0001\u0000"+ - "\u0000\u0000\u0317\u1098\u0001\u0000\u0000\u0000\u0319\u109c\u0001\u0000"+ - "\u0000\u0000\u031b\u10a4\u0001\u0000\u0000\u0000\u031d\u10a9\u0001\u0000"+ - "\u0000\u0000\u031f\u10b3\u0001\u0000\u0000\u0000\u0321\u10bc\u0001\u0000"+ - "\u0000\u0000\u0323\u10c0\u0001\u0000\u0000\u0000\u0325\u10c8\u0001\u0000"+ - "\u0000\u0000\u0327\u10cf\u0001\u0000\u0000\u0000\u0329\u10d7\u0001\u0000"+ - "\u0000\u0000\u032b\u10dd\u0001\u0000\u0000\u0000\u032d\u10e6\u0001\u0000"+ - "\u0000\u0000\u032f\u10ec\u0001\u0000\u0000\u0000\u0331\u10f0\u0001\u0000"+ - "\u0000\u0000\u0333\u10f8\u0001\u0000\u0000\u0000\u0335\u1101\u0001\u0000"+ - "\u0000\u0000\u0337\u1107\u0001\u0000\u0000\u0000\u0339\u1110\u0001\u0000"+ - "\u0000\u0000\u033b\u1116\u0001\u0000\u0000\u0000\u033d\u111b\u0001\u0000"+ - "\u0000\u0000\u033f\u1122\u0001\u0000\u0000\u0000\u0341\u112a\u0001\u0000"+ - "\u0000\u0000\u0343\u1132\u0001\u0000\u0000\u0000\u0345\u113b\u0001\u0000"+ - "\u0000\u0000\u0347\u1145\u0001\u0000\u0000\u0000\u0349\u114a\u0001\u0000"+ - "\u0000\u0000\u034b\u114e\u0001\u0000\u0000\u0000\u034d\u1154\u0001\u0000"+ - "\u0000\u0000\u034f\u115d\u0001\u0000\u0000\u0000\u0351\u1167\u0001\u0000"+ - "\u0000\u0000\u0353\u116c\u0001\u0000\u0000\u0000\u0355\u1176\u0001\u0000"+ - "\u0000\u0000\u0357\u117c\u0001\u0000\u0000\u0000\u0359\u1181\u0001\u0000"+ - "\u0000\u0000\u035b\u1188\u0001\u0000\u0000\u0000\u035d\u1190\u0001\u0000"+ - "\u0000\u0000\u035f\u119e\u0001\u0000\u0000\u0000\u0361\u11a9\u0001\u0000"+ - "\u0000\u0000\u0363\u11b0\u0001\u0000\u0000\u0000\u0365\u11c3\u0001\u0000"+ - "\u0000\u0000\u0367\u11df\u0001\u0000\u0000\u0000\u0369\u11fa\u0001\u0000"+ - "\u0000\u0000\u036b\u1200\u0001\u0000\u0000\u0000\u036d\u120d\u0001\u0000"+ - "\u0000\u0000\u036f\u1217\u0001\u0000\u0000\u0000\u0371\u1222\u0001\u0000"+ - "\u0000\u0000\u0373\u122c\u0001\u0000\u0000\u0000\u0375\u1236\u0001\u0000"+ - "\u0000\u0000\u0377\u123f\u0001\u0000\u0000\u0000\u0379\u1245\u0001\u0000"+ - "\u0000\u0000\u037b\u124d\u0001\u0000\u0000\u0000\u037d\u125a\u0001\u0000"+ - "\u0000\u0000\u037f\u125f\u0001\u0000\u0000\u0000\u0381\u1267\u0001\u0000"+ - "\u0000\u0000\u0383\u126e\u0001\u0000\u0000\u0000\u0385\u1275\u0001\u0000"+ - "\u0000\u0000\u0387\u1280\u0001\u0000\u0000\u0000\u0389\u128a\u0001\u0000"+ - "\u0000\u0000\u038b\u1291\u0001\u0000\u0000\u0000\u038d\u1298\u0001\u0000"+ - "\u0000\u0000\u038f\u12a0\u0001\u0000\u0000\u0000\u0391\u12a8\u0001\u0000"+ - "\u0000\u0000\u0393\u12b2\u0001\u0000\u0000\u0000\u0395\u12b9\u0001\u0000"+ - "\u0000\u0000\u0397\u12c0\u0001\u0000\u0000\u0000\u0399\u12c7\u0001\u0000"+ - "\u0000\u0000\u039b\u12d3\u0001\u0000\u0000\u0000\u039d\u12d7\u0001\u0000"+ - "\u0000\u0000\u039f\u12db\u0001\u0000\u0000\u0000\u03a1\u12e1\u0001\u0000"+ - "\u0000\u0000\u03a3\u12ee\u0001\u0000\u0000\u0000\u03a5\u12fa\u0001\u0000"+ - "\u0000\u0000\u03a7\u12fe\u0001\u0000\u0000\u0000\u03a9\u1302\u0001\u0000"+ - "\u0000\u0000\u03ab\u130b\u0001\u0000\u0000\u0000\u03ad\u1313\u0001\u0000"+ - "\u0000\u0000\u03af\u131e\u0001\u0000\u0000\u0000\u03b1\u1324\u0001\u0000"+ - "\u0000\u0000\u03b3\u132c\u0001\u0000\u0000\u0000\u03b5\u1335\u0001\u0000"+ - "\u0000\u0000\u03b7\u1339\u0001\u0000\u0000\u0000\u03b9\u1341\u0001\u0000"+ - "\u0000\u0000\u03bb\u134c\u0001\u0000\u0000\u0000\u03bd\u1355\u0001\u0000"+ - "\u0000\u0000\u03bf\u135a\u0001\u0000\u0000\u0000\u03c1\u1361\u0001\u0000"+ - "\u0000\u0000\u03c3\u1366\u0001\u0000\u0000\u0000\u03c5\u136d\u0001\u0000"+ - "\u0000\u0000\u03c7\u1372\u0001\u0000\u0000\u0000\u03c9\u137b\u0001\u0000"+ - "\u0000\u0000\u03cb\u1380\u0001\u0000\u0000\u0000\u03cd\u138c\u0001\u0000"+ - "\u0000\u0000\u03cf\u1397\u0001\u0000\u0000\u0000\u03d1\u13a0\u0001\u0000"+ - "\u0000\u0000\u03d3\u13a8\u0001\u0000\u0000\u0000\u03d5\u13b6\u0001\u0000"+ - "\u0000\u0000\u03d7\u13be\u0001\u0000\u0000\u0000\u03d9\u13c9\u0001\u0000"+ - "\u0000\u0000\u03db\u13d0\u0001\u0000\u0000\u0000\u03dd\u13d7\u0001\u0000"+ - "\u0000\u0000\u03df\u13de\u0001\u0000\u0000\u0000\u03e1\u13e5\u0001\u0000"+ - "\u0000\u0000\u03e3\u13e9\u0001\u0000\u0000\u0000\u03e5\u13ed\u0001\u0000"+ - "\u0000\u0000\u03e7\u13f2\u0001\u0000\u0000\u0000\u03e9\u13f7\u0001\u0000"+ - "\u0000\u0000\u03eb\u13ff\u0001\u0000\u0000\u0000\u03ed\u1405\u0001\u0000"+ - "\u0000\u0000\u03ef\u140f\u0001\u0000\u0000\u0000\u03f1\u1414\u0001\u0000"+ - "\u0000\u0000\u03f3\u1428\u0001\u0000\u0000\u0000\u03f5\u143a\u0001\u0000"+ - "\u0000\u0000\u03f7\u1440\u0001\u0000\u0000\u0000\u03f9\u144d\u0001\u0000"+ - "\u0000\u0000\u03fb\u1458\u0001\u0000\u0000\u0000\u03fd\u145e\u0001\u0000"+ - "\u0000\u0000\u03ff\u1467\u0001\u0000\u0000\u0000\u0401\u146f\u0001\u0000"+ - "\u0000\u0000\u0403\u1473\u0001\u0000\u0000\u0000\u0405\u147f\u0001\u0000"+ - "\u0000\u0000\u0407\u1487\u0001\u0000\u0000\u0000\u0409\u148d\u0001\u0000"+ - "\u0000\u0000\u040b\u1493\u0001\u0000\u0000\u0000\u040d\u149b\u0001\u0000"+ - "\u0000\u0000\u040f\u14a3\u0001\u0000\u0000\u0000\u0411\u14a9\u0001\u0000"+ - "\u0000\u0000\u0413\u14ae\u0001\u0000\u0000\u0000\u0415\u14b5\u0001\u0000"+ - "\u0000\u0000\u0417\u14bb\u0001\u0000\u0000\u0000\u0419\u14c1\u0001\u0000"+ - "\u0000\u0000\u041b\u14ca\u0001\u0000\u0000\u0000\u041d\u14d0\u0001\u0000"+ - "\u0000\u0000\u041f\u14d4\u0001\u0000\u0000\u0000\u0421\u14d9\u0001\u0000"+ - "\u0000\u0000\u0423\u14e0\u0001\u0000\u0000\u0000\u0425\u14e8\u0001\u0000"+ - "\u0000\u0000\u0427\u14f2\u0001\u0000\u0000\u0000\u0429\u14f9\u0001\u0000"+ - "\u0000\u0000\u042b\u14fe\u0001\u0000\u0000\u0000\u042d\u1503\u0001\u0000"+ - "\u0000\u0000\u042f\u1507\u0001\u0000\u0000\u0000\u0431\u150c\u0001\u0000"+ - "\u0000\u0000\u0433\u1511\u0001\u0000\u0000\u0000\u0435\u1519\u0001\u0000"+ - "\u0000\u0000\u0437\u1521\u0001\u0000\u0000\u0000\u0439\u1525\u0001\u0000"+ - "\u0000\u0000\u043b\u1529\u0001\u0000\u0000\u0000\u043d\u1533\u0001\u0000"+ - "\u0000\u0000\u043f\u1539\u0001\u0000\u0000\u0000\u0441\u153d\u0001\u0000"+ - "\u0000\u0000\u0443\u1541\u0001\u0000\u0000\u0000\u0445\u1544\u0001\u0000"+ - "\u0000\u0000\u0447\u154a\u0001\u0000\u0000\u0000\u0449\u1554\u0001\u0000"+ - "\u0000\u0000\u044b\u1558\u0001\u0000\u0000\u0000\u044d\u155b\u0001\u0000"+ - "\u0000\u0000\u044f\u1561\u0001\u0000\u0000\u0000\u0451\u1569\u0001\u0000"+ - "\u0000\u0000\u0453\u156f\u0001\u0000\u0000\u0000\u0455\u1575\u0001\u0000"+ - "\u0000\u0000\u0457\u157a\u0001\u0000\u0000\u0000\u0459\u157f\u0001\u0000"+ - "\u0000\u0000\u045b\u158a\u0001\u0000\u0000\u0000\u045d\u1590\u0001\u0000"+ - "\u0000\u0000\u045f\u159d\u0001\u0000\u0000\u0000\u0461\u15a4\u0001\u0000"+ - "\u0000\u0000\u0463\u15ac\u0001\u0000\u0000\u0000\u0465\u15b1\u0001\u0000"+ - "\u0000\u0000\u0467\u15b7\u0001\u0000\u0000\u0000\u0469\u15bc\u0001\u0000"+ - "\u0000\u0000\u046b\u15c2\u0001\u0000\u0000\u0000\u046d\u15c7\u0001\u0000"+ - "\u0000\u0000\u046f\u15cd\u0001\u0000\u0000\u0000\u0471\u15d3\u0001\u0000"+ - "\u0000\u0000\u0473\u15da\u0001\u0000\u0000\u0000\u0475\u15de\u0001\u0000"+ - "\u0000\u0000\u0477\u15e3\u0001\u0000\u0000\u0000\u0479\u15e7\u0001\u0000"+ - "\u0000\u0000\u047b\u15ec\u0001\u0000\u0000\u0000\u047d\u15f0\u0001\u0000"+ - "\u0000\u0000\u047f\u15f5\u0001\u0000\u0000\u0000\u0481\u15f9\u0001\u0000"+ - "\u0000\u0000\u0483\u15fe\u0001\u0000\u0000\u0000\u0485\u1603\u0001\u0000"+ - "\u0000\u0000\u0487\u1608\u0001\u0000\u0000\u0000\u0489\u160d\u0001\u0000"+ - "\u0000\u0000\u048b\u1613\u0001\u0000\u0000\u0000\u048d\u1619\u0001\u0000"+ - "\u0000\u0000\u048f\u161f\u0001\u0000\u0000\u0000\u0491\u162a\u0001\u0000"+ - "\u0000\u0000\u0493\u1636\u0001\u0000\u0000\u0000\u0495\u1647\u0001\u0000"+ - "\u0000\u0000\u0497\u164d\u0001\u0000\u0000\u0000\u0499\u165a\u0001\u0000"+ - "\u0000\u0000\u049b\u1660\u0001\u0000\u0000\u0000\u049d\u1666\u0001\u0000"+ - "\u0000\u0000\u049f\u166c\u0001\u0000\u0000\u0000\u04a1\u1670\u0001\u0000"+ - "\u0000\u0000\u04a3\u1677\u0001\u0000\u0000\u0000\u04a5\u1681\u0001\u0000"+ - "\u0000\u0000\u04a7\u1688\u0001\u0000\u0000\u0000\u04a9\u1690\u0001\u0000"+ - "\u0000\u0000\u04ab\u1697\u0001\u0000\u0000\u0000\u04ad\u169c\u0001\u0000"+ - "\u0000\u0000\u04af\u16a2\u0001\u0000\u0000\u0000\u04b1\u16a6\u0001\u0000"+ - "\u0000\u0000\u04b3\u16b2\u0001\u0000\u0000\u0000\u04b5\u16c5\u0001\u0000"+ - "\u0000\u0000\u04b7\u16d1\u0001\u0000\u0000\u0000\u04b9\u16df\u0001\u0000"+ - "\u0000\u0000\u04bb\u16ee\u0001\u0000\u0000\u0000\u04bd\u16fb\u0001\u0000"+ - "\u0000\u0000\u04bf\u1708\u0001\u0000\u0000\u0000\u04c1\u1714\u0001\u0000"+ - "\u0000\u0000\u04c3\u1721\u0001\u0000\u0000\u0000\u04c5\u1730\u0001\u0000"+ - "\u0000\u0000\u04c7\u173f\u0001\u0000\u0000\u0000\u04c9\u1755\u0001\u0000"+ - "\u0000\u0000\u04cb\u176b\u0001\u0000\u0000\u0000\u04cd\u1779\u0001\u0000"+ - "\u0000\u0000\u04cf\u1780\u0001\u0000\u0000\u0000\u04d1\u1785\u0001\u0000"+ - "\u0000\u0000\u04d3\u178b\u0001\u0000\u0000\u0000\u04d5\u1796\u0001\u0000"+ - "\u0000\u0000\u04d7\u17a2\u0001\u0000\u0000\u0000\u04d9\u17b2\u0001\u0000"+ - "\u0000\u0000\u04db\u17c2\u0001\u0000\u0000\u0000\u04dd\u17c9\u0001\u0000"+ - "\u0000\u0000\u04df\u17d0\u0001\u0000\u0000\u0000\u04e1\u17d9\u0001\u0000"+ - "\u0000\u0000\u04e3\u17e0\u0001\u0000\u0000\u0000\u04e5\u17ea\u0001\u0000"+ - "\u0000\u0000\u04e7\u17f1\u0001\u0000\u0000\u0000\u04e9\u17f5\u0001\u0000"+ - "\u0000\u0000\u04eb\u1805\u0001\u0000\u0000\u0000\u04ed\u180e\u0001\u0000"+ - "\u0000\u0000\u04ef\u1818\u0001\u0000\u0000\u0000\u04f1\u1823\u0001\u0000"+ - "\u0000\u0000\u04f3\u182c\u0001\u0000\u0000\u0000\u04f5\u1839\u0001\u0000"+ - "\u0000\u0000\u04f7\u1847\u0001\u0000\u0000\u0000\u04f9\u1858\u0001\u0000"+ - "\u0000\u0000\u04fb\u1862\u0001\u0000\u0000\u0000\u04fd\u1870\u0001\u0000"+ - "\u0000\u0000\u04ff\u187a\u0001\u0000\u0000\u0000\u0501\u1889\u0001\u0000"+ - "\u0000\u0000\u0503\u189a\u0001\u0000\u0000\u0000\u0505\u189e\u0001\u0000"+ - "\u0000\u0000\u0507\u18b2\u0001\u0000\u0000\u0000\u0509\u18bc\u0001\u0000"+ - "\u0000\u0000\u050b\u18d2\u0001\u0000\u0000\u0000\u050d\u18df\u0001\u0000"+ - "\u0000\u0000\u050f\u18e7\u0001\u0000\u0000\u0000\u0511\u18ef\u0001\u0000"+ - "\u0000\u0000\u0513\u18f9\u0001\u0000\u0000\u0000\u0515\u1906\u0001\u0000"+ - "\u0000\u0000\u0517\u190a\u0001\u0000\u0000\u0000\u0519\u190e\u0001\u0000"+ - "\u0000\u0000\u051b\u1910\u0001\u0000\u0000\u0000\u051d\u1913\u0001\u0000"+ - "\u0000\u0000\u051f\u191c\u0001\u0000\u0000\u0000\u0521\u191f\u0001\u0000"+ - "\u0000\u0000\u0523\u1928\u0001\u0000\u0000\u0000\u0525\u192c\u0001\u0000"+ - "\u0000\u0000\u0527\u1930\u0001\u0000\u0000\u0000\u0529\u1934\u0001\u0000"+ - "\u0000\u0000\u052b\u1938\u0001\u0000\u0000\u0000\u052d\u193b\u0001\u0000"+ - "\u0000\u0000\u052f\u1944\u0001\u0000\u0000\u0000\u0531\u194a\u0001\u0000"+ - "\u0000\u0000\u0533\u194d\u0001\u0000\u0000\u0000\u0535\u1951\u0001\u0000"+ - "\u0000\u0000\u0537\u195a\u0001\u0000\u0000\u0000\u0539\u1961\u0001\u0000"+ - "\u0000\u0000\u053b\u1964\u0001\u0000\u0000\u0000\u053d\u196c\u0001\u0000"+ - "\u0000\u0000\u053f\u196f\u0001\u0000\u0000\u0000\u0541\u1972\u0001\u0000"+ - "\u0000\u0000\u0543\u1975\u0001\u0000\u0000\u0000\u0545\u197d\u0001\u0000"+ - "\u0000\u0000\u0547\u1980\u0001\u0000\u0000\u0000\u0549\u1983\u0001\u0000"+ - "\u0000\u0000\u054b\u1985\u0001\u0000\u0000\u0000\u054d\u19a7\u0001\u0000"+ - "\u0000\u0000\u054f\u19aa\u0001\u0000\u0000\u0000\u0551\u19ae\u0001\u0000"+ - "\u0000\u0000\u0553\u19b6\u0001\u0000\u0000\u0000\u0555\u19c6\u0001\u0000"+ - "\u0000\u0000\u0557\u19d1\u0001\u0000\u0000\u0000\u0559\u19d5\u0001\u0000"+ - "\u0000\u0000\u055b\u19e0\u0001\u0000\u0000\u0000\u055d\u1a07\u0001\u0000"+ - "\u0000\u0000\u055f\u1a3a\u0001\u0000\u0000\u0000\u0561\u1a52\u0001\u0000"+ - "\u0000\u0000\u0563\u1a55\u0001\u0000\u0000\u0000\u0565\u1a57\u0001\u0000"+ - "\u0000\u0000\u0567\u1a5c\u0001\u0000\u0000\u0000\u0569\u1a7b\u0001\u0000"+ - "\u0000\u0000\u056b\u1a7e\u0001\u0000\u0000\u0000\u056d\u1a83\u0001\u0000"+ - "\u0000\u0000\u056f\u1a90\u0001\u0000\u0000\u0000\u0571\u1a93\u0001\u0000"+ - "\u0000\u0000\u0573\u1a98\u0001\u0000\u0000\u0000\u0575\u1a9e\u0001\u0000"+ - "\u0000\u0000\u0577\u1aa3\u0001\u0000\u0000\u0000\u0579\u1aa8\u0001\u0000"+ - "\u0000\u0000\u057b\u1aad\u0001\u0000\u0000\u0000\u057d\u1ab2\u0001\u0000"+ - "\u0000\u0000\u057f\u1ac3\u0001\u0000\u0000\u0000\u0581\u1ac5\u0001\u0000"+ - "\u0000\u0000\u0583\u0584\u0005$\u0000\u0000\u0584\u0006\u0001\u0000\u0000"+ - "\u0000\u0585\u0586\u0005(\u0000\u0000\u0586\b\u0001\u0000\u0000\u0000"+ - "\u0587\u0588\u0005)\u0000\u0000\u0588\n\u0001\u0000\u0000\u0000\u0589"+ - "\u058a\u0005[\u0000\u0000\u058a\f\u0001\u0000\u0000\u0000\u058b\u058c"+ - "\u0005]\u0000\u0000\u058c\u000e\u0001\u0000\u0000\u0000\u058d\u058e\u0005"+ - ",\u0000\u0000\u058e\u0010\u0001\u0000\u0000\u0000\u058f\u0590\u0005;\u0000"+ - "\u0000\u0590\u0012\u0001\u0000\u0000\u0000\u0591\u0592\u0005:\u0000\u0000"+ - "\u0592\u0014\u0001\u0000\u0000\u0000\u0593\u0594\u0005*\u0000\u0000\u0594"+ - "\u0016\u0001\u0000\u0000\u0000\u0595\u0596\u0005=\u0000\u0000\u0596\u0018"+ - "\u0001\u0000\u0000\u0000\u0597\u0598\u0005.\u0000\u0000\u0598\u001a\u0001"+ - "\u0000\u0000\u0000\u0599\u059a\u0005+\u0000\u0000\u059a\u001c\u0001\u0000"+ - "\u0000\u0000\u059b\u059c\u0005-\u0000\u0000\u059c\u001e\u0001\u0000\u0000"+ - "\u0000\u059d\u059e\u0005/\u0000\u0000\u059e \u0001\u0000\u0000\u0000\u059f"+ - "\u05a0\u0005^\u0000\u0000\u05a0\"\u0001\u0000\u0000\u0000\u05a1\u05a2"+ - "\u0005<\u0000\u0000\u05a2$\u0001\u0000\u0000\u0000\u05a3\u05a4\u0005>"+ - "\u0000\u0000\u05a4&\u0001\u0000\u0000\u0000\u05a5\u05a6\u0005<\u0000\u0000"+ - "\u05a6\u05a7\u0005<\u0000\u0000\u05a7(\u0001\u0000\u0000\u0000\u05a8\u05a9"+ - "\u0005>\u0000\u0000\u05a9\u05aa\u0005>\u0000\u0000\u05aa*\u0001\u0000"+ - "\u0000\u0000\u05ab\u05ac\u0005:\u0000\u0000\u05ac\u05ad\u0005=\u0000\u0000"+ - "\u05ad,\u0001\u0000\u0000\u0000\u05ae\u05af\u0005<\u0000\u0000\u05af\u05b0"+ - "\u0005=\u0000\u0000\u05b0.\u0001\u0000\u0000\u0000\u05b1\u05b2\u0005="+ - "\u0000\u0000\u05b2\u05b3\u0005>\u0000\u0000\u05b30\u0001\u0000\u0000\u0000"+ - "\u05b4\u05b5\u0005>\u0000\u0000\u05b5\u05b6\u0005=\u0000\u0000\u05b62"+ - "\u0001\u0000\u0000\u0000\u05b7\u05b8\u0005.\u0000\u0000\u05b8\u05b9\u0005"+ - ".\u0000\u0000\u05b94\u0001\u0000\u0000\u0000\u05ba\u05bb\u0005<\u0000"+ - "\u0000\u05bb\u05bc\u0005>\u0000\u0000\u05bc6\u0001\u0000\u0000\u0000\u05bd"+ - "\u05be\u0005:\u0000\u0000\u05be\u05bf\u0005:\u0000\u0000\u05bf8\u0001"+ - "\u0000\u0000\u0000\u05c0\u05c1\u0005%\u0000\u0000\u05c1:\u0001\u0000\u0000"+ - "\u0000\u05c2\u05c4\u0005$\u0000\u0000\u05c3\u05c5\u0007\u0000\u0000\u0000"+ - "\u05c4\u05c3\u0001\u0000\u0000\u0000\u05c5\u05c6\u0001\u0000\u0000\u0000"+ - "\u05c6\u05c4\u0001\u0000\u0000\u0000\u05c6\u05c7\u0001\u0000\u0000\u0000"+ - "\u05c7<\u0001\u0000\u0000\u0000\u05c8\u05d8\u0003A\u001e\u0000\u05c9\u05cd"+ - "\u0005+\u0000\u0000\u05ca\u05cb\u0005-\u0000\u0000\u05cb\u05cd\u0004\u001c"+ - "\u0000\u0000\u05cc\u05c9\u0001\u0000\u0000\u0000\u05cc\u05ca\u0001\u0000"+ - "\u0000\u0000\u05cd\u05ce\u0001\u0000\u0000\u0000\u05ce\u05cc\u0001\u0000"+ - "\u0000\u0000\u05ce\u05cf\u0001\u0000\u0000\u0000\u05cf\u05d3\u0001\u0000"+ - "\u0000\u0000\u05d0\u05d4\u0003A\u001e\u0000\u05d1\u05d2\u0005/\u0000\u0000"+ - "\u05d2\u05d4\u0004\u001c\u0001\u0000\u05d3\u05d0\u0001\u0000\u0000\u0000"+ - "\u05d3\u05d1\u0001\u0000\u0000\u0000\u05d4\u05d8\u0001\u0000\u0000\u0000"+ - "\u05d5\u05d6\u0005/\u0000\u0000\u05d6\u05d8\u0004\u001c\u0002\u0000\u05d7"+ - "\u05c8\u0001\u0000\u0000\u0000\u05d7\u05cc\u0001\u0000\u0000\u0000\u05d7"+ - "\u05d5\u0001\u0000\u0000\u0000\u05d8\u05d9\u0001\u0000\u0000\u0000\u05d9"+ - "\u05d7\u0001\u0000\u0000\u0000\u05d9\u05da\u0001\u0000\u0000\u0000\u05da"+ - "\u05dd\u0001\u0000\u0000\u0000\u05db\u05dd\u0007\u0001\u0000\u0000\u05dc"+ - "\u05d7\u0001\u0000\u0000\u0000\u05dc\u05db\u0001\u0000\u0000\u0000\u05dd"+ - "\u05de\u0001\u0000\u0000\u0000\u05de\u05df\u0006\u001c\u0000\u0000\u05df"+ - ">\u0001\u0000\u0000\u0000\u05e0\u05e6\u0003C\u001f\u0000\u05e1\u05e2\u0005"+ - "-\u0000\u0000\u05e2\u05e6\u0004\u001d\u0003\u0000\u05e3\u05e4\u0005/\u0000"+ - "\u0000\u05e4\u05e6\u0004\u001d\u0004\u0000\u05e5\u05e0\u0001\u0000\u0000"+ - "\u0000\u05e5\u05e1\u0001\u0000\u0000\u0000\u05e5\u05e3\u0001\u0000\u0000"+ - "\u0000\u05e6\u05e9\u0001\u0000\u0000\u0000\u05e7\u05e5\u0001\u0000\u0000"+ - "\u0000\u05e7\u05e8\u0001\u0000\u0000\u0000\u05e8\u05ea\u0001\u0000\u0000"+ - "\u0000\u05e9\u05e7\u0001\u0000\u0000\u0000\u05ea\u05ec\u0003E \u0000\u05eb"+ - "\u05ed\u0003=\u001c\u0000\u05ec\u05eb\u0001\u0000\u0000\u0000\u05ec\u05ed"+ - "\u0001\u0000\u0000\u0000\u05ed\u05f1\u0001\u0000\u0000\u0000\u05ee\u05f2"+ - "\u0005+\u0000\u0000\u05ef\u05f0\u0005-\u0000\u0000\u05f0\u05f2\u0004\u001d"+ - "\u0005\u0000\u05f1\u05ee\u0001\u0000\u0000\u0000\u05f1\u05ef\u0001\u0000"+ - "\u0000\u0000\u05f2\u05f3\u0001\u0000\u0000\u0000\u05f3\u05f1\u0001\u0000"+ - "\u0000\u0000\u05f3\u05f4\u0001\u0000\u0000\u0000\u05f4\u05f5\u0001\u0000"+ - "\u0000\u0000\u05f5\u05f6\u0006\u001d\u0001\u0000\u05f6@\u0001\u0000\u0000"+ - "\u0000\u05f7\u05f8\u0007\u0002\u0000\u0000\u05f8B\u0001\u0000\u0000\u0000"+ - "\u05f9\u05fa\u0007\u0003\u0000\u0000\u05faD\u0001\u0000\u0000\u0000\u05fb"+ - "\u05fc\u0007\u0004\u0000\u0000\u05fcF\u0001\u0000\u0000\u0000\u05fd\u05fe"+ - "\u0007\u0005\u0000\u0000\u05fe\u05ff\u0007\u0006\u0000\u0000\u05ff\u0600"+ - "\u0007\u0006\u0000\u0000\u0600H\u0001\u0000\u0000\u0000\u0601\u0602\u0007"+ - "\u0005\u0000\u0000\u0602\u0603\u0007\u0007\u0000\u0000\u0603\u0604\u0007"+ - "\u0005\u0000\u0000\u0604\u0605\u0007\u0006\u0000\u0000\u0605\u0606\u0007"+ - "\b\u0000\u0000\u0606\u0607\u0007\t\u0000\u0000\u0607\u0608\u0007\n\u0000"+ - "\u0000\u0608J\u0001\u0000\u0000\u0000\u0609\u060a\u0007\u0005\u0000\u0000"+ - "\u060a\u060b\u0007\u0007\u0000\u0000\u060b\u060c\u0007\u0005\u0000\u0000"+ - "\u060c\u060d\u0007\u0006\u0000\u0000\u060d\u060e\u0007\b\u0000\u0000\u060e"+ - "\u060f\u0007\u000b\u0000\u0000\u060f\u0610\u0007\n\u0000\u0000\u0610L"+ - "\u0001\u0000\u0000\u0000\u0611\u0612\u0007\u0005\u0000\u0000\u0612\u0613"+ - "\u0007\u0007\u0000\u0000\u0613\u0614\u0007\f\u0000\u0000\u0614N\u0001"+ - "\u0000\u0000\u0000\u0615\u0616\u0007\u0005\u0000\u0000\u0616\u0617\u0007"+ - "\u0007\u0000\u0000\u0617\u0618\u0007\b\u0000\u0000\u0618P\u0001\u0000"+ - "\u0000\u0000\u0619\u061a\u0007\u0005\u0000\u0000\u061a\u061b\u0007\r\u0000"+ - "\u0000\u061b\u061c\u0007\r\u0000\u0000\u061c\u061d\u0007\u0005\u0000\u0000"+ - "\u061d\u061e\u0007\b\u0000\u0000\u061eR\u0001\u0000\u0000\u0000\u061f"+ - "\u0620\u0007\u0005\u0000\u0000\u0620\u0621\u0007\t\u0000\u0000\u0621T"+ - "\u0001\u0000\u0000\u0000\u0622\u0623\u0007\u0005\u0000\u0000\u0623\u0624"+ - "\u0007\t\u0000\u0000\u0624\u0625\u0007\u000e\u0000\u0000\u0625V\u0001"+ - "\u0000\u0000\u0000\u0626\u0627\u0007\u0005\u0000\u0000\u0627\u0628\u0007"+ - "\t\u0000\u0000\u0628\u0629\u0007\b\u0000\u0000\u0629\u062a\u0007\u000f"+ - "\u0000\u0000\u062a\u062b\u0007\u000f\u0000\u0000\u062b\u062c\u0007\n\u0000"+ - "\u0000\u062c\u062d\u0007\u0010\u0000\u0000\u062d\u062e\u0007\r\u0000\u0000"+ - "\u062e\u062f\u0007\u0011\u0000\u0000\u062f\u0630\u0007\u000e\u0000\u0000"+ - "\u0630X\u0001\u0000\u0000\u0000\u0631\u0632\u0007\u0012\u0000\u0000\u0632"+ - "\u0633\u0007\u0013\u0000\u0000\u0633\u0634\u0007\u0010\u0000\u0000\u0634"+ - "\u0635\u0007\u0014\u0000\u0000\u0635Z\u0001\u0000\u0000\u0000\u0636\u0637"+ - "\u0007\u000e\u0000\u0000\u0637\u0638\u0007\u0005\u0000\u0000\u0638\u0639"+ - "\u0007\t\u0000\u0000\u0639\u063a\u0007\n\u0000\u0000\u063a\\\u0001\u0000"+ - "\u0000\u0000\u063b\u063c\u0007\u000e\u0000\u0000\u063c\u063d\u0007\u0005"+ - "\u0000\u0000\u063d\u063e\u0007\t\u0000\u0000\u063e\u063f\u0007\u0010\u0000"+ - "\u0000\u063f^\u0001\u0000\u0000\u0000\u0640\u0641\u0007\u000e\u0000\u0000"+ - "\u0641\u0642\u0007\u0014\u0000\u0000\u0642\u0643\u0007\n\u0000\u0000\u0643"+ - "\u0644\u0007\u000e\u0000\u0000\u0644\u0645\u0007\u0015\u0000\u0000\u0645"+ - "`\u0001\u0000\u0000\u0000\u0646\u0647\u0007\u000e\u0000\u0000\u0647\u0648"+ - "\u0007\u0013\u0000\u0000\u0648\u0649\u0007\u0006\u0000\u0000\u0649\u064a"+ - "\u0007\u0006\u0000\u0000\u064a\u064b\u0007\u0005\u0000\u0000\u064b\u064c"+ - "\u0007\u0010\u0000\u0000\u064c\u064d\u0007\n\u0000\u0000\u064db\u0001"+ - "\u0000\u0000\u0000\u064e\u064f\u0007\u000e\u0000\u0000\u064f\u0650\u0007"+ - "\u0013\u0000\u0000\u0650\u0651\u0007\u0006\u0000\u0000\u0651\u0652\u0007"+ - "\u0016\u0000\u0000\u0652\u0653\u0007\u000f\u0000\u0000\u0653\u0654\u0007"+ - "\u0007\u0000\u0000\u0654d\u0001\u0000\u0000\u0000\u0655\u0656\u0007\u000e"+ - "\u0000\u0000\u0656\u0657\u0007\u0013\u0000\u0000\u0657\u0658\u0007\u0007"+ - "\u0000\u0000\u0658\u0659\u0007\t\u0000\u0000\u0659\u065a\u0007\u0010\u0000"+ - "\u0000\u065a\u065b\u0007\r\u0000\u0000\u065b\u065c\u0007\u0005\u0000\u0000"+ - "\u065c\u065d\u0007\u0011\u0000\u0000\u065d\u065e\u0007\u0007\u0000\u0000"+ - "\u065e\u065f\u0007\u0010\u0000\u0000\u065ff\u0001\u0000\u0000\u0000\u0660"+ - "\u0661\u0007\u000e\u0000\u0000\u0661\u0662\u0007\r\u0000\u0000\u0662\u0663"+ - "\u0007\n\u0000\u0000\u0663\u0664\u0007\u0005\u0000\u0000\u0664\u0665\u0007"+ - "\u0010\u0000\u0000\u0665\u0666\u0007\n\u0000\u0000\u0666h\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\u000e\u0000\u0000\u0670\u0671\u0007\u0005\u0000\u0000\u0671"+ - "\u0672\u0007\u0010\u0000\u0000\u0672\u0673\u0007\u0005\u0000\u0000\u0673"+ - "\u0674\u0007\u0006\u0000\u0000\u0674\u0675\u0007\u0013\u0000\u0000\u0675"+ - "\u0676\u0007\u0017\u0000\u0000\u0676j\u0001\u0000\u0000\u0000\u0677\u0678"+ - "\u0007\u000e\u0000\u0000\u0678\u0679\u0007\u0016\u0000\u0000\u0679\u067a"+ - "\u0007\r\u0000\u0000\u067a\u067b\u0007\r\u0000\u0000\u067b\u067c\u0007"+ - "\n\u0000\u0000\u067c\u067d\u0007\u0007\u0000\u0000\u067d\u067e\u0007\u0010"+ - "\u0000\u0000\u067e\u067f\u0005_\u0000\u0000\u067f\u0680\u0007\f\u0000"+ - "\u0000\u0680\u0681\u0007\u0005\u0000\u0000\u0681\u0682\u0007\u0010\u0000"+ - "\u0000\u0682\u0683\u0007\n\u0000\u0000\u0683l\u0001\u0000\u0000\u0000"+ - "\u0684\u0685\u0007\u000e\u0000\u0000\u0685\u0686\u0007\u0016\u0000\u0000"+ - "\u0686\u0687\u0007\r\u0000\u0000\u0687\u0688\u0007\r\u0000\u0000\u0688"+ - "\u0689\u0007\n\u0000\u0000\u0689\u068a\u0007\u0007\u0000\u0000\u068a\u068b"+ - "\u0007\u0010\u0000\u0000\u068b\u068c\u0005_\u0000\u0000\u068c\u068d\u0007"+ - "\r\u0000\u0000\u068d\u068e\u0007\u0013\u0000\u0000\u068e\u068f\u0007\u0006"+ - "\u0000\u0000\u068f\u0690\u0007\n\u0000\u0000\u0690n\u0001\u0000\u0000"+ - "\u0000\u0691\u0692\u0007\u000e\u0000\u0000\u0692\u0693\u0007\u0016\u0000"+ - "\u0000\u0693\u0694\u0007\r\u0000\u0000\u0694\u0695\u0007\r\u0000\u0000"+ - "\u0695\u0696\u0007\n\u0000\u0000\u0696\u0697\u0007\u0007\u0000\u0000\u0697"+ - "\u0698\u0007\u0010\u0000\u0000\u0698\u0699\u0005_\u0000\u0000\u0699\u069a"+ - "\u0007\u0010\u0000\u0000\u069a\u069b\u0007\u0011\u0000\u0000\u069b\u069c"+ - "\u0007\u000f\u0000\u0000\u069c\u069d\u0007\n\u0000\u0000\u069dp\u0001"+ - "\u0000\u0000\u0000\u069e\u069f\u0007\u000e\u0000\u0000\u069f\u06a0\u0007"+ - "\u0016\u0000\u0000\u06a0\u06a1\u0007\r\u0000\u0000\u06a1\u06a2\u0007\r"+ - "\u0000\u0000\u06a2\u06a3\u0007\n\u0000\u0000\u06a3\u06a4\u0007\u0007\u0000"+ - "\u0000\u06a4\u06a5\u0007\u0010\u0000\u0000\u06a5\u06a6\u0005_\u0000\u0000"+ - "\u06a6\u06a7\u0007\u0010\u0000\u0000\u06a7\u06a8\u0007\u0011\u0000\u0000"+ - "\u06a8\u06a9\u0007\u000f\u0000\u0000\u06a9\u06aa\u0007\n\u0000\u0000\u06aa"+ - "\u06ab\u0007\t\u0000\u0000\u06ab\u06ac\u0007\u0010\u0000\u0000\u06ac\u06ad"+ - "\u0007\u0005\u0000\u0000\u06ad\u06ae\u0007\u000f\u0000\u0000\u06ae\u06af"+ - "\u0007\u0018\u0000\u0000\u06afr\u0001\u0000\u0000\u0000\u06b0\u06b1\u0007"+ - "\u000e\u0000\u0000\u06b1\u06b2\u0007\u0016\u0000\u0000\u06b2\u06b3\u0007"+ - "\r\u0000\u0000\u06b3\u06b4\u0007\r\u0000\u0000\u06b4\u06b5\u0007\n\u0000"+ - "\u0000\u06b5\u06b6\u0007\u0007\u0000\u0000\u06b6\u06b7\u0007\u0010\u0000"+ - "\u0000\u06b7\u06b8\u0005_\u0000\u0000\u06b8\u06b9\u0007\u0016\u0000\u0000"+ - "\u06b9\u06ba\u0007\t\u0000\u0000\u06ba\u06bb\u0007\n\u0000\u0000\u06bb"+ - "\u06bc\u0007\r\u0000\u0000\u06bct\u0001\u0000\u0000\u0000\u06bd\u06be"+ - "\u0007\f\u0000\u0000\u06be\u06bf\u0007\n\u0000\u0000\u06bf\u06c0\u0007"+ - "\u0019\u0000\u0000\u06c0\u06c1\u0007\u0005\u0000\u0000\u06c1\u06c2\u0007"+ - "\u0016\u0000\u0000\u06c2\u06c3\u0007\u0006\u0000\u0000\u06c3\u06c4\u0007"+ - "\u0010\u0000\u0000\u06c4v\u0001\u0000\u0000\u0000\u06c5\u06c6\u0007\f"+ - "\u0000\u0000\u06c6\u06c7\u0007\n\u0000\u0000\u06c7\u06c8\u0007\u0019\u0000"+ - "\u0000\u06c8\u06c9\u0007\n\u0000\u0000\u06c9\u06ca\u0007\r\u0000\u0000"+ - "\u06ca\u06cb\u0007\r\u0000\u0000\u06cb\u06cc\u0007\u0005\u0000\u0000\u06cc"+ - "\u06cd\u0007\u0012\u0000\u0000\u06cd\u06ce\u0007\u0006\u0000\u0000\u06ce"+ - "\u06cf\u0007\n\u0000\u0000\u06cfx\u0001\u0000\u0000\u0000\u06d0\u06d1"+ - "\u0007\f\u0000\u0000\u06d1\u06d2\u0007\n\u0000\u0000\u06d2\u06d3\u0007"+ - "\t\u0000\u0000\u06d3\u06d4\u0007\u000e\u0000\u0000\u06d4z\u0001\u0000"+ - "\u0000\u0000\u06d5\u06d6\u0007\f\u0000\u0000\u06d6\u06d7\u0007\u0011\u0000"+ - "\u0000\u06d7\u06d8\u0007\t\u0000\u0000\u06d8\u06d9\u0007\u0010\u0000\u0000"+ - "\u06d9\u06da\u0007\u0011\u0000\u0000\u06da\u06db\u0007\u0007\u0000\u0000"+ - "\u06db\u06dc\u0007\u000e\u0000\u0000\u06dc\u06dd\u0007\u0010\u0000\u0000"+ - "\u06dd|\u0001\u0000\u0000\u0000\u06de\u06df\u0007\f\u0000\u0000\u06df"+ - "\u06e0\u0007\u0013\u0000\u0000\u06e0~\u0001\u0000\u0000\u0000\u06e1\u06e2"+ - "\u0007\n\u0000\u0000\u06e2\u06e3\u0007\u0006\u0000\u0000\u06e3\u06e4\u0007"+ - "\t\u0000\u0000\u06e4\u06e5\u0007\n\u0000\u0000\u06e5\u0080\u0001\u0000"+ - "\u0000\u0000\u06e6\u06e7\u0007\n\u0000\u0000\u06e7\u06e8\u0007\u001a\u0000"+ - "\u0000\u06e8\u06e9\u0007\u000e\u0000\u0000\u06e9\u06ea\u0007\n\u0000\u0000"+ - "\u06ea\u06eb\u0007\u0018\u0000\u0000\u06eb\u06ec\u0007\u0010\u0000\u0000"+ - "\u06ec\u0082\u0001\u0000\u0000\u0000\u06ed\u06ee\u0007\u0019\u0000\u0000"+ - "\u06ee\u06ef\u0007\u0005\u0000\u0000\u06ef\u06f0\u0007\u0006\u0000\u0000"+ - "\u06f0\u06f1\u0007\t\u0000\u0000\u06f1\u06f2\u0007\n\u0000\u0000\u06f2"+ - "\u0084\u0001\u0000\u0000\u0000\u06f3\u06f4\u0007\u0019\u0000\u0000\u06f4"+ - "\u06f5\u0007\n\u0000\u0000\u06f5\u06f6\u0007\u0010\u0000\u0000\u06f6\u06f7"+ - "\u0007\u000e\u0000\u0000\u06f7\u06f8\u0007\u0014\u0000\u0000\u06f8\u0086"+ - "\u0001\u0000\u0000\u0000\u06f9\u06fa\u0007\u0019\u0000\u0000\u06fa\u06fb"+ - "\u0007\u0013\u0000\u0000\u06fb\u06fc\u0007\r\u0000\u0000\u06fc\u0088\u0001"+ - "\u0000\u0000\u0000\u06fd\u06fe\u0007\u0019\u0000\u0000\u06fe\u06ff\u0007"+ - "\u0013\u0000\u0000\u06ff\u0700\u0007\r\u0000\u0000\u0700\u0701\u0007\n"+ - "\u0000\u0000\u0701\u0702\u0007\u0011\u0000\u0000\u0702\u0703\u0007\u0017"+ - "\u0000\u0000\u0703\u0704\u0007\u0007\u0000\u0000\u0704\u008a\u0001\u0000"+ - "\u0000\u0000\u0705\u0706\u0007\u0019\u0000\u0000\u0706\u0707\u0007\r\u0000"+ - "\u0000\u0707\u0708\u0007\u0013\u0000\u0000\u0708\u0709\u0007\u000f\u0000"+ - "\u0000\u0709\u008c\u0001\u0000\u0000\u0000\u070a\u070b\u0007\u0017\u0000"+ - "\u0000\u070b\u070c\u0007\r\u0000\u0000\u070c\u070d\u0007\u0005\u0000\u0000"+ - "\u070d\u070e\u0007\u0007\u0000\u0000\u070e\u070f\u0007\u0010\u0000\u0000"+ - "\u070f\u008e\u0001\u0000\u0000\u0000\u0710\u0711\u0007\u0017\u0000\u0000"+ - "\u0711\u0712\u0007\r\u0000\u0000\u0712\u0713\u0007\u0013\u0000\u0000\u0713"+ - "\u0714\u0007\u0016\u0000\u0000\u0714\u0715\u0007\u0018\u0000\u0000\u0715"+ - "\u0090\u0001\u0000\u0000\u0000\u0716\u0717\u0007\u0014\u0000\u0000\u0717"+ - "\u0718\u0007\u0005\u0000\u0000\u0718\u0719\u0007\u001b\u0000\u0000\u0719"+ - "\u071a\u0007\u0011\u0000\u0000\u071a\u071b\u0007\u0007\u0000\u0000\u071b"+ - "\u071c\u0007\u0017\u0000\u0000\u071c\u0092\u0001\u0000\u0000\u0000\u071d"+ - "\u071e\u0007\u0011\u0000\u0000\u071e\u071f\u0007\u0007\u0000\u0000\u071f"+ - "\u0094\u0001\u0000\u0000\u0000\u0720\u0721\u0007\u0011\u0000\u0000\u0721"+ - "\u0722\u0007\u0007\u0000\u0000\u0722\u0723\u0007\u0011\u0000\u0000\u0723"+ - "\u0724\u0007\u0010\u0000\u0000\u0724\u0725\u0007\u0011\u0000\u0000\u0725"+ - "\u0726\u0007\u0005\u0000\u0000\u0726\u0727\u0007\u0006\u0000\u0000\u0727"+ - "\u0728\u0007\u0006\u0000\u0000\u0728\u0729\u0007\b\u0000\u0000\u0729\u0096"+ - "\u0001\u0000\u0000\u0000\u072a\u072b\u0007\u0011\u0000\u0000\u072b\u072c"+ - "\u0007\u0007\u0000\u0000\u072c\u072d\u0007\u0010\u0000\u0000\u072d\u072e"+ - "\u0007\n\u0000\u0000\u072e\u072f\u0007\r\u0000\u0000\u072f\u0730\u0007"+ - "\t\u0000\u0000\u0730\u0731\u0007\n\u0000\u0000\u0731\u0732\u0007\u000e"+ - "\u0000\u0000\u0732\u0733\u0007\u0010\u0000\u0000\u0733\u0098\u0001\u0000"+ - "\u0000\u0000\u0734\u0735\u0007\u0011\u0000\u0000\u0735\u0736\u0007\u0007"+ - "\u0000\u0000\u0736\u0737\u0007\u0010\u0000\u0000\u0737\u0738\u0007\u0013"+ - "\u0000\u0000\u0738\u009a\u0001\u0000\u0000\u0000\u0739\u073a\u0007\u0006"+ - "\u0000\u0000\u073a\u073b\u0007\u0005\u0000\u0000\u073b\u073c\u0007\u0010"+ - "\u0000\u0000\u073c\u073d\u0007\n\u0000\u0000\u073d\u073e\u0007\r\u0000"+ - "\u0000\u073e\u073f\u0007\u0005\u0000\u0000\u073f\u0740\u0007\u0006\u0000"+ - "\u0000\u0740\u009c\u0001\u0000\u0000\u0000\u0741\u0742\u0007\u0006\u0000"+ - "\u0000\u0742\u0743\u0007\n\u0000\u0000\u0743\u0744\u0007\u0005\u0000\u0000"+ - "\u0744\u0745\u0007\f\u0000\u0000\u0745\u0746\u0007\u0011\u0000\u0000\u0746"+ - "\u0747\u0007\u0007\u0000\u0000\u0747\u0748\u0007\u0017\u0000\u0000\u0748"+ - "\u009e\u0001\u0000\u0000\u0000\u0749\u074a\u0007\u0006\u0000\u0000\u074a"+ - "\u074b\u0007\u0011\u0000\u0000\u074b\u074c\u0007\u000f\u0000\u0000\u074c"+ - "\u074d\u0007\u0011\u0000\u0000\u074d\u074e\u0007\u0010\u0000\u0000\u074e"+ - "\u00a0\u0001\u0000\u0000\u0000\u074f\u0750\u0007\u0006\u0000\u0000\u0750"+ - "\u0751\u0007\u0013\u0000\u0000\u0751\u0752\u0007\u000e\u0000\u0000\u0752"+ - "\u0753\u0007\u0005\u0000\u0000\u0753\u0754\u0007\u0006\u0000\u0000\u0754"+ - "\u0755\u0007\u0010\u0000\u0000\u0755\u0756\u0007\u0011\u0000\u0000\u0756"+ - "\u0757\u0007\u000f\u0000\u0000\u0757\u0758\u0007\n\u0000\u0000\u0758\u00a2"+ - "\u0001\u0000\u0000\u0000\u0759\u075a\u0007\u0006\u0000\u0000\u075a\u075b"+ - "\u0007\u0013\u0000\u0000\u075b\u075c\u0007\u000e\u0000\u0000\u075c\u075d"+ - "\u0007\u0005\u0000\u0000\u075d\u075e\u0007\u0006\u0000\u0000\u075e\u075f"+ - "\u0007\u0010\u0000\u0000\u075f\u0760\u0007\u0011\u0000\u0000\u0760\u0761"+ - "\u0007\u000f\u0000\u0000\u0761\u0762\u0007\n\u0000\u0000\u0762\u0763\u0007"+ - "\t\u0000\u0000\u0763\u0764\u0007\u0010\u0000\u0000\u0764\u0765\u0007\u0005"+ - "\u0000\u0000\u0765\u0766\u0007\u000f\u0000\u0000\u0766\u0767\u0007\u0018"+ - "\u0000\u0000\u0767\u00a4\u0001\u0000\u0000\u0000\u0768\u0769\u0007\u0007"+ - "\u0000\u0000\u0769\u076a\u0007\u0013\u0000\u0000\u076a\u076b\u0007\u0010"+ - "\u0000\u0000\u076b\u00a6\u0001\u0000\u0000\u0000\u076c\u076d\u0007\u0007"+ - "\u0000\u0000\u076d\u076e\u0007\u0016\u0000\u0000\u076e\u076f\u0007\u0006"+ - "\u0000\u0000\u076f\u0770\u0007\u0006\u0000\u0000\u0770\u00a8\u0001\u0000"+ - "\u0000\u0000\u0771\u0772\u0007\u0013\u0000\u0000\u0772\u0773\u0007\u0019"+ - "\u0000\u0000\u0773\u0774\u0007\u0019\u0000\u0000\u0774\u0775\u0007\t\u0000"+ - "\u0000\u0775\u0776\u0007\n\u0000\u0000\u0776\u0777\u0007\u0010\u0000\u0000"+ - "\u0777\u00aa\u0001\u0000\u0000\u0000\u0778\u0779\u0007\u0013\u0000\u0000"+ - "\u0779\u077a\u0007\u0007\u0000\u0000\u077a\u00ac\u0001\u0000\u0000\u0000"+ - "\u077b\u077c\u0007\u0013\u0000\u0000\u077c\u077d\u0007\u0007\u0000\u0000"+ - "\u077d\u077e\u0007\u0006\u0000\u0000\u077e\u077f\u0007\b\u0000\u0000\u077f"+ - "\u00ae\u0001\u0000\u0000\u0000\u0780\u0781\u0007\u0013\u0000\u0000\u0781"+ - "\u0782\u0007\r\u0000\u0000\u0782\u00b0\u0001\u0000\u0000\u0000\u0783\u0784"+ - "\u0007\u0013\u0000\u0000\u0784\u0785\u0007\r\u0000\u0000\u0785\u0786\u0007"+ - "\f\u0000\u0000\u0786\u0787\u0007\n\u0000\u0000\u0787\u0788\u0007\r\u0000"+ - "\u0000\u0788\u00b2\u0001\u0000\u0000\u0000\u0789\u078a\u0007\u0018\u0000"+ - "\u0000\u078a\u078b\u0007\u0006\u0000\u0000\u078b\u078c\u0007\u0005\u0000"+ - "\u0000\u078c\u078d\u0007\u000e\u0000\u0000\u078d\u078e\u0007\u0011\u0000"+ - "\u0000\u078e\u078f\u0007\u0007\u0000\u0000\u078f\u0790\u0007\u0017\u0000"+ - "\u0000\u0790\u00b4\u0001\u0000\u0000\u0000\u0791\u0792\u0007\u0018\u0000"+ - "\u0000\u0792\u0793\u0007\r\u0000\u0000\u0793\u0794\u0007\u0011\u0000\u0000"+ - "\u0794\u0795\u0007\u000f\u0000\u0000\u0795\u0796\u0007\u0005\u0000\u0000"+ - "\u0796\u0797\u0007\r\u0000\u0000\u0797\u0798\u0007\b\u0000\u0000\u0798"+ - "\u00b6\u0001\u0000\u0000\u0000\u0799\u079a\u0007\r\u0000\u0000\u079a\u079b"+ - "\u0007\n\u0000\u0000\u079b\u079c\u0007\u0019\u0000\u0000\u079c\u079d\u0007"+ - "\n\u0000\u0000\u079d\u079e\u0007\r\u0000\u0000\u079e\u079f\u0007\n\u0000"+ - "\u0000\u079f\u07a0\u0007\u0007\u0000\u0000\u07a0\u07a1\u0007\u000e\u0000"+ - "\u0000\u07a1\u07a2\u0007\n\u0000\u0000\u07a2\u07a3\u0007\t\u0000\u0000"+ - "\u07a3\u00b8\u0001\u0000\u0000\u0000\u07a4\u07a5\u0007\r\u0000\u0000\u07a5"+ - "\u07a6\u0007\n\u0000\u0000\u07a6\u07a7\u0007\u0010\u0000\u0000\u07a7\u07a8"+ - "\u0007\u0016\u0000\u0000\u07a8\u07a9\u0007\r\u0000\u0000\u07a9\u07aa\u0007"+ - "\u0007\u0000\u0000\u07aa\u07ab\u0007\u0011\u0000\u0000\u07ab\u07ac\u0007"+ - "\u0007\u0000\u0000\u07ac\u07ad\u0007\u0017\u0000\u0000\u07ad\u00ba\u0001"+ - "\u0000\u0000\u0000\u07ae\u07af\u0007\t\u0000\u0000\u07af\u07b0\u0007\n"+ - "\u0000\u0000\u07b0\u07b1\u0007\u0006\u0000\u0000\u07b1\u07b2\u0007\n\u0000"+ - "\u0000\u07b2\u07b3\u0007\u000e\u0000\u0000\u07b3\u07b4\u0007\u0010\u0000"+ - "\u0000\u07b4\u00bc\u0001\u0000\u0000\u0000\u07b5\u07b6\u0007\t\u0000\u0000"+ - "\u07b6\u07b7\u0007\n\u0000\u0000\u07b7\u07b8\u0007\t\u0000\u0000\u07b8"+ - "\u07b9\u0007\t\u0000\u0000\u07b9\u07ba\u0007\u0011\u0000\u0000\u07ba\u07bb"+ - "\u0007\u0013\u0000\u0000\u07bb\u07bc\u0007\u0007\u0000\u0000\u07bc\u07bd"+ - "\u0005_\u0000\u0000\u07bd\u07be\u0007\u0016\u0000\u0000\u07be\u07bf\u0007"+ - "\t\u0000\u0000\u07bf\u07c0\u0007\n\u0000\u0000\u07c0\u07c1\u0007\r\u0000"+ - "\u0000\u07c1\u00be\u0001\u0000\u0000\u0000\u07c2\u07c3\u0007\t\u0000\u0000"+ - "\u07c3\u07c4\u0007\u0013\u0000\u0000\u07c4\u07c5\u0007\u000f\u0000\u0000"+ - "\u07c5\u07c6\u0007\n\u0000\u0000\u07c6\u00c0\u0001\u0000\u0000\u0000\u07c7"+ - "\u07c8\u0007\t\u0000\u0000\u07c8\u07c9\u0007\b\u0000\u0000\u07c9\u07ca"+ - "\u0007\u000f\u0000\u0000\u07ca\u07cb\u0007\u000f\u0000\u0000\u07cb\u07cc"+ - "\u0007\n\u0000\u0000\u07cc\u07cd\u0007\u0010\u0000\u0000\u07cd\u07ce\u0007"+ - "\r\u0000\u0000\u07ce\u07cf\u0007\u0011\u0000\u0000\u07cf\u07d0\u0007\u000e"+ - "\u0000\u0000\u07d0\u00c2\u0001\u0000\u0000\u0000\u07d1\u07d2\u0007\u0010"+ - "\u0000\u0000\u07d2\u07d3\u0007\u0005\u0000\u0000\u07d3\u07d4\u0007\u0012"+ - "\u0000\u0000\u07d4\u07d5\u0007\u0006\u0000\u0000\u07d5\u07d6\u0007\n\u0000"+ - "\u0000\u07d6\u00c4\u0001\u0000\u0000\u0000\u07d7\u07d8\u0007\u000b\u0000"+ - "\u0000\u07d8\u07d9\u0007\u0010\u0000\u0000\u07d9\u07da\u0007\u0005\u0000"+ - "\u0000\u07da\u07db\u0007\u0012\u0000\u0000\u07db\u07dc\u0007\u0006\u0000"+ - "\u0000\u07dc\u07dd\u0007\n\u0000\u0000\u07dd\u00c6\u0001\u0000\u0000\u0000"+ - "\u07de\u07df\u0007\u0010\u0000\u0000\u07df\u07e0\u0007\u0014\u0000\u0000"+ - "\u07e0\u07e1\u0007\n\u0000\u0000\u07e1\u07e2\u0007\u0007\u0000\u0000\u07e2"+ - "\u00c8\u0001\u0000\u0000\u0000\u07e3\u07e4\u0007\u0010\u0000\u0000\u07e4"+ - "\u07e5\u0007\u0013\u0000\u0000\u07e5\u00ca\u0001\u0000\u0000\u0000\u07e6"+ - "\u07e7\u0007\f\u0000\u0000\u07e7\u07e8\u0007\n\u0000\u0000\u07e8\u07e9"+ - "\u0007\t\u0000\u0000\u07e9\u07ea\u0007\u000e\u0000\u0000\u07ea\u07eb\u0007"+ - "\r\u0000\u0000\u07eb\u07ec\u0007\u0011\u0000\u0000\u07ec\u07ed\u0007\u0012"+ - "\u0000\u0000\u07ed\u07ee\u0007\n\u0000\u0000\u07ee\u00cc\u0001\u0000\u0000"+ - "\u0000\u07ef\u07f0\u0007\u0010\u0000\u0000\u07f0\u07f1\u0007\u0013\u0000"+ - "\u0000\u07f1\u07f2\u0007\u0018\u0000\u0000\u07f2\u07f3\u0007\u0011\u0000"+ - "\u0000\u07f3\u07f4\u0007\u000e\u0000\u0000\u07f4\u00ce\u0001\u0000\u0000"+ - "\u0000\u07f5\u07f6\u0007\u0010\u0000\u0000\u07f6\u07f7\u0007\u0013\u0000"+ - "\u0000\u07f7\u07f8\u0007\u0018\u0000\u0000\u07f8\u07f9\u0007\u0011\u0000"+ - "\u0000\u07f9\u07fa\u0007\u000e\u0000\u0000\u07fa\u07fb\u0007\t\u0000\u0000"+ - "\u07fb\u00d0\u0001\u0000\u0000\u0000\u07fc\u07fd\u0007\t\u0000\u0000\u07fd"+ - "\u07fe\u0007\u0010\u0000\u0000\u07fe\u07ff\u0007\r\u0000\u0000\u07ff\u0800"+ - "\u0007\n\u0000\u0000\u0800\u0801\u0007\u0005\u0000\u0000\u0801\u0802\u0007"+ - "\u000f\u0000\u0000\u0802\u00d2\u0001\u0000\u0000\u0000\u0803\u0804\u0007"+ - "\u000b\u0000\u0000\u0804\u0805\u0007\u001b\u0000\u0000\u0805\u0806\u0007"+ - "\u0011\u0000\u0000\u0806\u0807\u0007\n\u0000\u0000\u0807\u0808\u0007\u001c"+ - "\u0000\u0000\u0808\u00d4\u0001\u0000\u0000\u0000\u0809\u080a\u0007\u000b"+ - "\u0000\u0000\u080a\u080b\u0007\u001b\u0000\u0000\u080b\u080c\u0007\u0011"+ - "\u0000\u0000\u080c\u080d\u0007\n\u0000\u0000\u080d\u080e\u0007\u001c\u0000"+ - "\u0000\u080e\u080f\u0007\t\u0000\u0000\u080f\u00d6\u0001\u0000\u0000\u0000"+ - "\u0810\u0811\u0007\u0010\u0000\u0000\u0811\u0812\u0007\r\u0000\u0000\u0812"+ - "\u0813\u0007\u0005\u0000\u0000\u0813\u0814\u0007\u0011\u0000\u0000\u0814"+ - "\u0815\u0007\u0006\u0000\u0000\u0815\u0816\u0007\u0011\u0000\u0000\u0816"+ - "\u0817\u0007\u0007\u0000\u0000\u0817\u0818\u0007\u0017\u0000\u0000\u0818"+ - "\u00d8\u0001\u0000\u0000\u0000\u0819\u081a\u0007\u0010\u0000\u0000\u081a"+ - "\u081b\u0007\r\u0000\u0000\u081b\u081c\u0007\u0016\u0000\u0000\u081c\u081d"+ - "\u0007\n\u0000\u0000\u081d\u00da\u0001\u0000\u0000\u0000\u081e\u081f\u0007"+ - "\u0016\u0000\u0000\u081f\u0820\u0007\u0007\u0000\u0000\u0820\u0821\u0007"+ - "\u0011\u0000\u0000\u0821\u0822\u0007\u0013\u0000\u0000\u0822\u0823\u0007"+ - "\u0007\u0000\u0000\u0823\u00dc\u0001\u0000\u0000\u0000\u0824\u0825\u0007"+ - "\u0016\u0000\u0000\u0825\u0826\u0007\u0007\u0000\u0000\u0826\u0827\u0007"+ - "\u0011\u0000\u0000\u0827\u0828\u0007\u001d\u0000\u0000\u0828\u0829\u0007"+ - "\u0016\u0000\u0000\u0829\u082a\u0007\n\u0000\u0000\u082a\u00de\u0001\u0000"+ - "\u0000\u0000\u082b\u082c\u0007\u0016\u0000\u0000\u082c\u082d\u0007\t\u0000"+ - "\u0000\u082d\u082e\u0007\n\u0000\u0000\u082e\u082f\u0007\r\u0000\u0000"+ - "\u082f\u00e0\u0001\u0000\u0000\u0000\u0830\u0831\u0007\u0016\u0000\u0000"+ - "\u0831\u0832\u0007\t\u0000\u0000\u0832\u0833\u0007\u0011\u0000\u0000\u0833"+ - "\u0834\u0007\u0007\u0000\u0000\u0834\u0835\u0007\u0017\u0000\u0000\u0835"+ - "\u00e2\u0001\u0000\u0000\u0000\u0836\u0837\u0007\u001b\u0000\u0000\u0837"+ - "\u0838\u0007\u0005\u0000\u0000\u0838\u0839\u0007\r\u0000\u0000\u0839\u083a"+ - "\u0007\u0011\u0000\u0000\u083a\u083b\u0007\u0005\u0000\u0000\u083b\u083c"+ - "\u0007\f\u0000\u0000\u083c\u083d\u0007\u0011\u0000\u0000\u083d\u083e\u0007"+ - "\u000e\u0000\u0000\u083e\u00e4\u0001\u0000\u0000\u0000\u083f\u0840\u0007"+ - "\u001c\u0000\u0000\u0840\u0841\u0007\u0014\u0000\u0000\u0841\u0842\u0007"+ - "\n\u0000\u0000\u0842\u0843\u0007\u0007\u0000\u0000\u0843\u00e6\u0001\u0000"+ - "\u0000\u0000\u0844\u0845\u0007\u001c\u0000\u0000\u0845\u0846\u0007\u0014"+ - "\u0000\u0000\u0846\u0847\u0007\n\u0000\u0000\u0847\u0848\u0007\r\u0000"+ - "\u0000\u0848\u0849\u0007\n\u0000\u0000\u0849\u00e8\u0001\u0000\u0000\u0000"+ - "\u084a\u084b\u0007\u001c\u0000\u0000\u084b\u084c\u0007\u0011\u0000\u0000"+ - "\u084c\u084d\u0007\u0007\u0000\u0000\u084d\u084e\u0007\f\u0000\u0000\u084e"+ - "\u084f\u0007\u0013\u0000\u0000\u084f\u0850\u0007\u001c\u0000\u0000\u0850"+ - "\u00ea\u0001\u0000\u0000\u0000\u0851\u0852\u0007\u001c\u0000\u0000\u0852"+ - "\u0853\u0007\u0011\u0000\u0000\u0853\u0854\u0007\u0010\u0000\u0000\u0854"+ - "\u0855\u0007\u0014\u0000\u0000\u0855\u00ec\u0001\u0000\u0000\u0000\u0856"+ - "\u0857\u0007\u0005\u0000\u0000\u0857\u0858\u0007\u0016\u0000\u0000\u0858"+ - "\u0859\u0007\u0010\u0000\u0000\u0859\u085a\u0007\u0014\u0000\u0000\u085a"+ - "\u085b\u0007\u0013\u0000\u0000\u085b\u085c\u0007\r\u0000\u0000\u085c\u085d"+ - "\u0007\u0011\u0000\u0000\u085d\u085e\u0007\u000b\u0000\u0000\u085e\u085f"+ - "\u0007\u0005\u0000\u0000\u085f\u0860\u0007\u0010\u0000\u0000\u0860\u0861"+ - "\u0007\u0011\u0000\u0000\u0861\u0862\u0007\u0013\u0000\u0000\u0862\u0863"+ - "\u0007\u0007\u0000\u0000\u0863\u00ee\u0001\u0000\u0000\u0000\u0864\u0865"+ - "\u0007\u0012\u0000\u0000\u0865\u0866\u0007\u0011\u0000\u0000\u0866\u0867"+ - "\u0007\u0007\u0000\u0000\u0867\u0868\u0007\u0005\u0000\u0000\u0868\u0869"+ - "\u0007\r\u0000\u0000\u0869\u086a\u0007\b\u0000\u0000\u086a\u00f0\u0001"+ - "\u0000\u0000\u0000\u086b\u086c\u0007\u000e\u0000\u0000\u086c\u086d\u0007"+ - "\u0013\u0000\u0000\u086d\u086e\u0007\u0006\u0000\u0000\u086e\u086f\u0007"+ - "\u0006\u0000\u0000\u086f\u0870\u0007\u0005\u0000\u0000\u0870\u0871\u0007"+ - "\u0010\u0000\u0000\u0871\u0872\u0007\u0011\u0000\u0000\u0872\u0873\u0007"+ - "\u0013\u0000\u0000\u0873\u0874\u0007\u0007\u0000\u0000\u0874\u00f2\u0001"+ - "\u0000\u0000\u0000\u0875\u0876\u0007\u000e\u0000\u0000\u0876\u0877\u0007"+ - "\u0013\u0000\u0000\u0877\u0878\u0007\u0007\u0000\u0000\u0878\u0879\u0007"+ - "\u000e\u0000\u0000\u0879\u087a\u0007\u0016\u0000\u0000\u087a\u087b\u0007"+ - "\r\u0000\u0000\u087b\u087c\u0007\r\u0000\u0000\u087c\u087d\u0007\n\u0000"+ - "\u0000\u087d\u087e\u0007\u0007\u0000\u0000\u087e\u087f\u0007\u0010\u0000"+ - "\u0000\u087f\u0880\u0007\u0006\u0000\u0000\u0880\u0881\u0007\b\u0000\u0000"+ - "\u0881\u00f4\u0001\u0000\u0000\u0000\u0882\u0883\u0007\u000e\u0000\u0000"+ - "\u0883\u0884\u0007\r\u0000\u0000\u0884\u0885\u0007\u0013\u0000\u0000\u0885"+ - "\u0886\u0007\t\u0000\u0000\u0886\u0887\u0007\t\u0000\u0000\u0887\u00f6"+ - "\u0001\u0000\u0000\u0000\u0888\u0889\u0007\u000e\u0000\u0000\u0889\u088a"+ - "\u0007\u0016\u0000\u0000\u088a\u088b\u0007\r\u0000\u0000\u088b\u088c\u0007"+ - "\r\u0000\u0000\u088c\u088d\u0007\n\u0000\u0000\u088d\u088e\u0007\u0007"+ - "\u0000\u0000\u088e\u088f\u0007\u0010\u0000\u0000\u088f\u0890\u0005_\u0000"+ - "\u0000\u0890\u0891\u0007\t\u0000\u0000\u0891\u0892\u0007\u000e\u0000\u0000"+ - "\u0892\u0893\u0007\u0014\u0000\u0000\u0893\u0894\u0007\n\u0000\u0000\u0894"+ - "\u0895\u0007\u000f\u0000\u0000\u0895\u0896\u0007\u0005\u0000\u0000\u0896"+ - "\u00f8\u0001\u0000\u0000\u0000\u0897\u0898\u0007\u0019\u0000\u0000\u0898"+ - "\u0899\u0007\r\u0000\u0000\u0899\u089a\u0007\n\u0000\u0000\u089a\u089b"+ - "\u0007\n\u0000\u0000\u089b\u089c\u0007\u000b\u0000\u0000\u089c\u089d\u0007"+ - "\n\u0000\u0000\u089d\u00fa\u0001\u0000\u0000\u0000\u089e\u089f\u0007\u0019"+ - "\u0000\u0000\u089f\u08a0\u0007\u0016\u0000\u0000\u08a0\u08a1\u0007\u0006"+ - "\u0000\u0000\u08a1\u08a2\u0007\u0006\u0000\u0000\u08a2\u00fc\u0001\u0000"+ - "\u0000\u0000\u08a3\u08a4\u0007\u0011\u0000\u0000\u08a4\u08a5\u0007\u0006"+ - "\u0000\u0000\u08a5\u08a6\u0007\u0011\u0000\u0000\u08a6\u08a7\u0007\u0015"+ - "\u0000\u0000\u08a7\u08a8\u0007\n\u0000\u0000\u08a8\u00fe\u0001\u0000\u0000"+ - "\u0000\u08a9\u08aa\u0007\u0011\u0000\u0000\u08aa\u08ab\u0007\u0007\u0000"+ - "\u0000\u08ab\u08ac\u0007\u0007\u0000\u0000\u08ac\u08ad\u0007\n\u0000\u0000"+ - "\u08ad\u08ae\u0007\r\u0000\u0000\u08ae\u0100\u0001\u0000\u0000\u0000\u08af"+ - "\u08b0\u0007\u0011\u0000\u0000\u08b0\u08b1\u0007\t\u0000\u0000\u08b1\u0102"+ - "\u0001\u0000\u0000\u0000\u08b2\u08b3\u0007\u0011\u0000\u0000\u08b3\u08b4"+ - "\u0007\t\u0000\u0000\u08b4\u08b5\u0007\u0007\u0000\u0000\u08b5\u08b6\u0007"+ - "\u0016\u0000\u0000\u08b6\u08b7\u0007\u0006\u0000\u0000\u08b7\u08b8\u0007"+ - "\u0006\u0000\u0000\u08b8\u0104\u0001\u0000\u0000\u0000\u08b9\u08ba\u0007"+ - "\u001e\u0000\u0000\u08ba\u08bb\u0007\u0013\u0000\u0000\u08bb\u08bc\u0007"+ - "\u0011\u0000\u0000\u08bc\u08bd\u0007\u0007\u0000\u0000\u08bd\u0106\u0001"+ - "\u0000\u0000\u0000\u08be\u08bf\u0007\u0006\u0000\u0000\u08bf\u08c0\u0007"+ - "\n\u0000\u0000\u08c0\u08c1\u0007\u0019\u0000\u0000\u08c1\u08c2\u0007\u0010"+ - "\u0000\u0000\u08c2\u0108\u0001\u0000\u0000\u0000\u08c3\u08c4\u0007\u0006"+ - "\u0000\u0000\u08c4\u08c5\u0007\u0011\u0000\u0000\u08c5\u08c6\u0007\u0015"+ - "\u0000\u0000\u08c6\u08c7\u0007\n\u0000\u0000\u08c7\u010a\u0001\u0000\u0000"+ - "\u0000\u08c8\u08c9\u0007\u0007\u0000\u0000\u08c9\u08ca\u0007\u0005\u0000"+ - "\u0000\u08ca\u08cb\u0007\u0010\u0000\u0000\u08cb\u08cc\u0007\u0016\u0000"+ - "\u0000\u08cc\u08cd\u0007\r\u0000\u0000\u08cd\u08ce\u0007\u0005\u0000\u0000"+ - "\u08ce\u08cf\u0007\u0006\u0000\u0000\u08cf\u010c\u0001\u0000\u0000\u0000"+ - "\u08d0\u08d1\u0007\u0007\u0000\u0000\u08d1\u08d2\u0007\u0013\u0000\u0000"+ - "\u08d2\u08d3\u0007\u0010\u0000\u0000\u08d3\u08d4\u0007\u0007\u0000\u0000"+ - "\u08d4\u08d5\u0007\u0016\u0000\u0000\u08d5\u08d6\u0007\u0006\u0000\u0000"+ - "\u08d6\u08d7\u0007\u0006\u0000\u0000\u08d7\u010e\u0001\u0000\u0000\u0000"+ - "\u08d8\u08d9\u0007\u0013\u0000\u0000\u08d9\u08da\u0007\u0016\u0000\u0000"+ - "\u08da\u08db\u0007\u0010\u0000\u0000\u08db\u08dc\u0007\n\u0000\u0000\u08dc"+ - "\u08dd\u0007\r\u0000\u0000\u08dd\u0110\u0001\u0000\u0000\u0000\u08de\u08df"+ - "\u0007\u0013\u0000\u0000\u08df\u08e0\u0007\u001b\u0000\u0000\u08e0\u08e1"+ - "\u0007\n\u0000\u0000\u08e1\u08e2\u0007\r\u0000\u0000\u08e2\u0112\u0001"+ - "\u0000\u0000\u0000\u08e3\u08e4\u0007\u0013\u0000\u0000\u08e4\u08e5\u0007"+ - "\u001b\u0000\u0000\u08e5\u08e6\u0007\n\u0000\u0000\u08e6\u08e7\u0007\r"+ - "\u0000\u0000\u08e7\u08e8\u0007\u0006\u0000\u0000\u08e8\u08e9\u0007\u0005"+ - "\u0000\u0000\u08e9\u08ea\u0007\u0018\u0000\u0000\u08ea\u08eb\u0007\t\u0000"+ - "\u0000\u08eb\u0114\u0001\u0000\u0000\u0000\u08ec\u08ed\u0007\r\u0000\u0000"+ - "\u08ed\u08ee\u0007\u0011\u0000\u0000\u08ee\u08ef\u0007\u0017\u0000\u0000"+ - "\u08ef\u08f0\u0007\u0014\u0000\u0000\u08f0\u08f1\u0007\u0010\u0000\u0000"+ - "\u08f1\u0116\u0001\u0000\u0000\u0000\u08f2\u08f3\u0007\t\u0000\u0000\u08f3"+ - "\u08f4\u0007\u0011\u0000\u0000\u08f4\u08f5\u0007\u000f\u0000\u0000\u08f5"+ - "\u08f6\u0007\u0011\u0000\u0000\u08f6\u08f7\u0007\u0006\u0000\u0000\u08f7"+ - "\u08f8\u0007\u0005\u0000\u0000\u08f8\u08f9\u0007\r\u0000\u0000\u08f9\u0118"+ - "\u0001\u0000\u0000\u0000\u08fa\u08fb\u0007\u001b\u0000\u0000\u08fb\u08fc"+ - "\u0007\n\u0000\u0000\u08fc\u08fd\u0007\r\u0000\u0000\u08fd\u08fe\u0007"+ - "\u0012\u0000\u0000\u08fe\u08ff\u0007\u0013\u0000\u0000\u08ff\u0900\u0007"+ - "\t\u0000\u0000\u0900\u0901\u0007\n\u0000\u0000\u0901\u011a\u0001\u0000"+ - "\u0000\u0000\u0902\u0903\u0007\u0005\u0000\u0000\u0903\u0904\u0007\u0012"+ - "\u0000\u0000\u0904\u0905\u0007\u0013\u0000\u0000\u0905\u0906\u0007\r\u0000"+ - "\u0000\u0906\u0907\u0007\u0010\u0000\u0000\u0907\u011c\u0001\u0000\u0000"+ - "\u0000\u0908\u0909\u0007\u0005\u0000\u0000\u0909\u090a\u0007\u0012\u0000"+ - "\u0000\u090a\u090b\u0007\t\u0000\u0000\u090b\u090c\u0007\u0013\u0000\u0000"+ - "\u090c\u090d\u0007\u0006\u0000\u0000\u090d\u090e\u0007\u0016\u0000\u0000"+ - "\u090e\u090f\u0007\u0010\u0000\u0000\u090f\u0910\u0007\n\u0000\u0000\u0910"+ - "\u011e\u0001\u0000\u0000\u0000\u0911\u0912\u0007\u0005\u0000\u0000\u0912"+ - "\u0913\u0007\u000e\u0000\u0000\u0913\u0914\u0007\u000e\u0000\u0000\u0914"+ - "\u0915\u0007\n\u0000\u0000\u0915\u0916\u0007\t\u0000\u0000\u0916\u0917"+ - "\u0007\t\u0000\u0000\u0917\u0120\u0001\u0000\u0000\u0000\u0918\u0919\u0007"+ - "\u0005\u0000\u0000\u0919\u091a\u0007\u000e\u0000\u0000\u091a\u091b\u0007"+ - "\u0010\u0000\u0000\u091b\u091c\u0007\u0011\u0000\u0000\u091c\u091d\u0007"+ - "\u0013\u0000\u0000\u091d\u091e\u0007\u0007\u0000\u0000\u091e\u0122\u0001"+ - "\u0000\u0000\u0000\u091f\u0920\u0007\u0005\u0000\u0000\u0920\u0921\u0007"+ - "\f\u0000\u0000\u0921\u0922\u0007\f\u0000\u0000\u0922\u0124\u0001\u0000"+ - "\u0000\u0000\u0923\u0924\u0007\u0005\u0000\u0000\u0924\u0925\u0007\f\u0000"+ - "\u0000\u0925\u0926\u0007\u000f\u0000\u0000\u0926\u0927\u0007\u0011\u0000"+ - "\u0000\u0927\u0928\u0007\u0007\u0000\u0000\u0928\u0126\u0001\u0000\u0000"+ - "\u0000\u0929\u092a\u0007\u0005\u0000\u0000\u092a\u092b\u0007\u0019\u0000"+ - "\u0000\u092b\u092c\u0007\u0010\u0000\u0000\u092c\u092d\u0007\n\u0000\u0000"+ - "\u092d\u092e\u0007\r\u0000\u0000\u092e\u0128\u0001\u0000\u0000\u0000\u092f"+ - "\u0930\u0007\u0005\u0000\u0000\u0930\u0931\u0007\u0017\u0000\u0000\u0931"+ - "\u0932\u0007\u0017\u0000\u0000\u0932\u0933\u0007\r\u0000\u0000\u0933\u0934"+ - "\u0007\n\u0000\u0000\u0934\u0935\u0007\u0017\u0000\u0000\u0935\u0936\u0007"+ - "\u0005\u0000\u0000\u0936\u0937\u0007\u0010\u0000\u0000\u0937\u0938\u0007"+ - "\n\u0000\u0000\u0938\u012a\u0001\u0000\u0000\u0000\u0939\u093a\u0007\u0005"+ - "\u0000\u0000\u093a\u093b\u0007\u0006\u0000\u0000\u093b\u093c\u0007\t\u0000"+ - "\u0000\u093c\u093d\u0007\u0013\u0000\u0000\u093d\u012c\u0001\u0000\u0000"+ - "\u0000\u093e\u093f\u0007\u0005\u0000\u0000\u093f\u0940\u0007\u0006\u0000"+ - "\u0000\u0940\u0941\u0007\u0010\u0000\u0000\u0941\u0942\u0007\n\u0000\u0000"+ - "\u0942\u0943\u0007\r\u0000\u0000\u0943\u012e\u0001\u0000\u0000\u0000\u0944"+ - "\u0945\u0007\u0005\u0000\u0000\u0945\u0946\u0007\u0006\u0000\u0000\u0946"+ - "\u0947\u0007\u001c\u0000\u0000\u0947\u0948\u0007\u0005\u0000\u0000\u0948"+ - "\u0949\u0007\b\u0000\u0000\u0949\u094a\u0007\t\u0000\u0000\u094a\u0130"+ - "\u0001\u0000\u0000\u0000\u094b\u094c\u0007\u0005\u0000\u0000\u094c\u094d"+ - "\u0007\t\u0000\u0000\u094d\u094e\u0007\t\u0000\u0000\u094e\u094f\u0007"+ - "\n\u0000\u0000\u094f\u0950\u0007\r\u0000\u0000\u0950\u0951\u0007\u0010"+ - "\u0000\u0000\u0951\u0952\u0007\u0011\u0000\u0000\u0952\u0953\u0007\u0013"+ - "\u0000\u0000\u0953\u0954\u0007\u0007\u0000\u0000\u0954\u0132\u0001\u0000"+ - "\u0000\u0000\u0955\u0956\u0007\u0005\u0000\u0000\u0956\u0957\u0007\t\u0000"+ - "\u0000\u0957\u0958\u0007\t\u0000\u0000\u0958\u0959\u0007\u0011\u0000\u0000"+ - "\u0959\u095a\u0007\u0017\u0000\u0000\u095a\u095b\u0007\u0007\u0000\u0000"+ - "\u095b\u095c\u0007\u000f\u0000\u0000\u095c\u095d\u0007\n\u0000\u0000\u095d"+ - "\u095e\u0007\u0007\u0000\u0000\u095e\u095f\u0007\u0010\u0000\u0000\u095f"+ - "\u0134\u0001\u0000\u0000\u0000\u0960\u0961\u0007\u0005\u0000\u0000\u0961"+ - "\u0962\u0007\u0010\u0000\u0000\u0962\u0136\u0001\u0000\u0000\u0000\u0963"+ - "\u0964\u0007\u0005\u0000\u0000\u0964\u0965\u0007\u0010\u0000\u0000\u0965"+ - "\u0966\u0007\u0010\u0000\u0000\u0966\u0967\u0007\r\u0000\u0000\u0967\u0968"+ - "\u0007\u0011\u0000\u0000\u0968\u0969\u0007\u0012\u0000\u0000\u0969\u096a"+ - "\u0007\u0016\u0000\u0000\u096a\u096b\u0007\u0010\u0000\u0000\u096b\u096c"+ - "\u0007\n\u0000\u0000\u096c\u0138\u0001\u0000\u0000\u0000\u096d\u096e\u0007"+ - "\u0012\u0000\u0000\u096e\u096f\u0007\u0005\u0000\u0000\u096f\u0970\u0007"+ - "\u000e\u0000\u0000\u0970\u0971\u0007\u0015\u0000\u0000\u0971\u0972\u0007"+ - "\u001c\u0000\u0000\u0972\u0973\u0007\u0005\u0000\u0000\u0973\u0974\u0007"+ - "\r\u0000\u0000\u0974\u0975\u0007\f\u0000\u0000\u0975\u013a\u0001\u0000"+ - "\u0000\u0000\u0976\u0977\u0007\u0012\u0000\u0000\u0977\u0978\u0007\n\u0000"+ - "\u0000\u0978\u0979\u0007\u0019\u0000\u0000\u0979\u097a\u0007\u0013\u0000"+ - "\u0000\u097a\u097b\u0007\r\u0000\u0000\u097b\u097c\u0007\n\u0000\u0000"+ - "\u097c\u013c\u0001\u0000\u0000\u0000\u097d\u097e\u0007\u0012\u0000\u0000"+ - "\u097e\u097f\u0007\n\u0000\u0000\u097f\u0980\u0007\u0017\u0000\u0000\u0980"+ - "\u0981\u0007\u0011\u0000\u0000\u0981\u0982\u0007\u0007\u0000\u0000\u0982"+ - "\u013e\u0001\u0000\u0000\u0000\u0983\u0984\u0007\u0012\u0000\u0000\u0984"+ - "\u0985\u0007\b\u0000\u0000\u0985\u0140\u0001\u0000\u0000\u0000\u0986\u0987"+ - "\u0007\u000e\u0000\u0000\u0987\u0988\u0007\u0005\u0000\u0000\u0988\u0989"+ - "\u0007\u000e\u0000\u0000\u0989\u098a\u0007\u0014\u0000\u0000\u098a\u098b"+ - "\u0007\n\u0000\u0000\u098b\u0142\u0001\u0000\u0000\u0000\u098c\u098d\u0007"+ - "\u000e\u0000\u0000\u098d\u098e\u0007\u0005\u0000\u0000\u098e\u098f\u0007"+ - "\u0006\u0000\u0000\u098f\u0990\u0007\u0006\u0000\u0000\u0990\u0991\u0007"+ - "\n\u0000\u0000\u0991\u0992\u0007\f\u0000\u0000\u0992\u0144\u0001\u0000"+ - "\u0000\u0000\u0993\u0994\u0007\u000e\u0000\u0000\u0994\u0995\u0007\u0005"+ - "\u0000\u0000\u0995\u0996\u0007\t\u0000\u0000\u0996\u0997\u0007\u000e\u0000"+ - "\u0000\u0997\u0998\u0007\u0005\u0000\u0000\u0998\u0999\u0007\f\u0000\u0000"+ - "\u0999\u099a\u0007\n\u0000\u0000\u099a\u0146\u0001\u0000\u0000\u0000\u099b"+ - "\u099c\u0007\u000e\u0000\u0000\u099c\u099d\u0007\u0005\u0000\u0000\u099d"+ - "\u099e\u0007\t\u0000\u0000\u099e\u099f\u0007\u000e\u0000\u0000\u099f\u09a0"+ - "\u0007\u0005\u0000\u0000\u09a0\u09a1\u0007\f\u0000\u0000\u09a1\u09a2\u0007"+ - "\n\u0000\u0000\u09a2\u09a3\u0007\f\u0000\u0000\u09a3\u0148\u0001\u0000"+ - "\u0000\u0000\u09a4\u09a5\u0007\u000e\u0000\u0000\u09a5\u09a6\u0007\u0005"+ - "\u0000\u0000\u09a6\u09a7\u0007\u0010\u0000\u0000\u09a7\u09a8\u0007\u0005"+ - "\u0000\u0000\u09a8\u09a9\u0007\u0006\u0000\u0000\u09a9\u09aa\u0007\u0013"+ - "\u0000\u0000\u09aa\u09ab\u0007\u0017\u0000\u0000\u09ab\u014a\u0001\u0000"+ - "\u0000\u0000\u09ac\u09ad\u0007\u000e\u0000\u0000\u09ad\u09ae\u0007\u0014"+ - "\u0000\u0000\u09ae\u09af\u0007\u0005\u0000\u0000\u09af\u09b0\u0007\u0011"+ - "\u0000\u0000\u09b0\u09b1\u0007\u0007\u0000\u0000\u09b1\u014c\u0001\u0000"+ - "\u0000\u0000\u09b2\u09b3\u0007\u000e\u0000\u0000\u09b3\u09b4\u0007\u0014"+ - "\u0000\u0000\u09b4\u09b5\u0007\u0005\u0000\u0000\u09b5\u09b6\u0007\r\u0000"+ - "\u0000\u09b6\u09b7\u0007\u0005\u0000\u0000\u09b7\u09b8\u0007\u000e\u0000"+ - "\u0000\u09b8\u09b9\u0007\u0010\u0000\u0000\u09b9\u09ba\u0007\n\u0000\u0000"+ - "\u09ba\u09bb\u0007\r\u0000\u0000\u09bb\u09bc\u0007\u0011\u0000\u0000\u09bc"+ - "\u09bd\u0007\t\u0000\u0000\u09bd\u09be\u0007\u0010\u0000\u0000\u09be\u09bf"+ - "\u0007\u0011\u0000\u0000\u09bf\u09c0\u0007\u000e\u0000\u0000\u09c0\u09c1"+ - "\u0007\t\u0000\u0000\u09c1\u014e\u0001\u0000\u0000\u0000\u09c2\u09c3\u0007"+ - "\u000e\u0000\u0000\u09c3\u09c4\u0007\u0014\u0000\u0000\u09c4\u09c5\u0007"+ - "\n\u0000\u0000\u09c5\u09c6\u0007\u000e\u0000\u0000\u09c6\u09c7\u0007\u0015"+ - "\u0000\u0000\u09c7\u09c8\u0007\u0018\u0000\u0000\u09c8\u09c9\u0007\u0013"+ - "\u0000\u0000\u09c9\u09ca\u0007\u0011\u0000\u0000\u09ca\u09cb\u0007\u0007"+ - "\u0000\u0000\u09cb\u09cc\u0007\u0010\u0000\u0000\u09cc\u0150\u0001\u0000"+ - "\u0000\u0000\u09cd\u09ce\u0007\u000e\u0000\u0000\u09ce\u09cf\u0007\u0006"+ - "\u0000\u0000\u09cf\u09d0\u0007\u0005\u0000\u0000\u09d0\u09d1\u0007\t\u0000"+ - "\u0000\u09d1\u09d2\u0007\t\u0000\u0000\u09d2\u0152\u0001\u0000\u0000\u0000"+ - "\u09d3\u09d4\u0007\u000e\u0000\u0000\u09d4\u09d5\u0007\u0006\u0000\u0000"+ - "\u09d5\u09d6\u0007\u0013\u0000\u0000\u09d6\u09d7\u0007\t\u0000\u0000\u09d7"+ - "\u09d8\u0007\n\u0000\u0000\u09d8\u0154\u0001\u0000\u0000\u0000\u09d9\u09da"+ - "\u0007\u000e\u0000\u0000\u09da\u09db\u0007\u0006\u0000\u0000\u09db\u09dc"+ - "\u0007\u0016\u0000\u0000\u09dc\u09dd\u0007\t\u0000\u0000\u09dd\u09de\u0007"+ - "\u0010\u0000\u0000\u09de\u09df\u0007\n\u0000\u0000\u09df\u09e0\u0007\r"+ - "\u0000\u0000\u09e0\u0156\u0001\u0000\u0000\u0000\u09e1\u09e2\u0007\u000e"+ - "\u0000\u0000\u09e2\u09e3\u0007\u0013\u0000\u0000\u09e3\u09e4\u0007\u000f"+ - "\u0000\u0000\u09e4\u09e5\u0007\u000f\u0000\u0000\u09e5\u09e6\u0007\n\u0000"+ - "\u0000\u09e6\u09e7\u0007\u0007\u0000\u0000\u09e7\u09e8\u0007\u0010\u0000"+ - "\u0000\u09e8\u0158\u0001\u0000\u0000\u0000\u09e9\u09ea\u0007\u000e\u0000"+ - "\u0000\u09ea\u09eb\u0007\u0013\u0000\u0000\u09eb\u09ec\u0007\u000f\u0000"+ - "\u0000\u09ec\u09ed\u0007\u000f\u0000\u0000\u09ed\u09ee\u0007\n\u0000\u0000"+ - "\u09ee\u09ef\u0007\u0007\u0000\u0000\u09ef\u09f0\u0007\u0010\u0000\u0000"+ - "\u09f0\u09f1\u0007\t\u0000\u0000\u09f1\u015a\u0001\u0000\u0000\u0000\u09f2"+ - "\u09f3\u0007\u000e\u0000\u0000\u09f3\u09f4\u0007\u0013\u0000\u0000\u09f4"+ - "\u09f5\u0007\u000f\u0000\u0000\u09f5\u09f6\u0007\u000f\u0000\u0000\u09f6"+ - "\u09f7\u0007\u0011\u0000\u0000\u09f7\u09f8\u0007\u0010\u0000\u0000\u09f8"+ - "\u015c\u0001\u0000\u0000\u0000\u09f9\u09fa\u0007\u000e\u0000\u0000\u09fa"+ - "\u09fb\u0007\u0013\u0000\u0000\u09fb\u09fc\u0007\u000f\u0000\u0000\u09fc"+ - "\u09fd\u0007\u000f\u0000\u0000\u09fd\u09fe\u0007\u0011\u0000\u0000\u09fe"+ - "\u09ff\u0007\u0010\u0000\u0000\u09ff\u0a00\u0007\u0010\u0000\u0000\u0a00"+ - "\u0a01\u0007\n\u0000\u0000\u0a01\u0a02\u0007\f\u0000\u0000\u0a02\u015e"+ - "\u0001\u0000\u0000\u0000\u0a03\u0a04\u0007\u000e\u0000\u0000\u0a04\u0a05"+ - "\u0007\u0013\u0000\u0000\u0a05\u0a06\u0007\u0007\u0000\u0000\u0a06\u0a07"+ - "\u0007\u0019\u0000\u0000\u0a07\u0a08\u0007\u0011\u0000\u0000\u0a08\u0a09"+ - "\u0007\u0017\u0000\u0000\u0a09\u0a0a\u0007\u0016\u0000\u0000\u0a0a\u0a0b"+ - "\u0007\r\u0000\u0000\u0a0b\u0a0c\u0007\u0005\u0000\u0000\u0a0c\u0a0d\u0007"+ - "\u0010\u0000\u0000\u0a0d\u0a0e\u0007\u0011\u0000\u0000\u0a0e\u0a0f\u0007"+ - "\u0013\u0000\u0000\u0a0f\u0a10\u0007\u0007\u0000\u0000\u0a10\u0160\u0001"+ - "\u0000\u0000\u0000\u0a11\u0a12\u0007\u000e\u0000\u0000\u0a12\u0a13\u0007"+ - "\u0013\u0000\u0000\u0a13\u0a14\u0007\u0007\u0000\u0000\u0a14\u0a15\u0007"+ - "\u0007\u0000\u0000\u0a15\u0a16\u0007\n\u0000\u0000\u0a16\u0a17\u0007\u000e"+ - "\u0000\u0000\u0a17\u0a18\u0007\u0010\u0000\u0000\u0a18\u0a19\u0007\u0011"+ - "\u0000\u0000\u0a19\u0a1a\u0007\u0013\u0000\u0000\u0a1a\u0a1b\u0007\u0007"+ - "\u0000\u0000\u0a1b\u0162\u0001\u0000\u0000\u0000\u0a1c\u0a1d\u0007\u000e"+ - "\u0000\u0000\u0a1d\u0a1e\u0007\u0013\u0000\u0000\u0a1e\u0a1f\u0007\u0007"+ - "\u0000\u0000\u0a1f\u0a20\u0007\t\u0000\u0000\u0a20\u0a21\u0007\u0010\u0000"+ - "\u0000\u0a21\u0a22\u0007\r\u0000\u0000\u0a22\u0a23\u0007\u0005\u0000\u0000"+ - "\u0a23\u0a24\u0007\u0011\u0000\u0000\u0a24\u0a25\u0007\u0007\u0000\u0000"+ - "\u0a25\u0a26\u0007\u0010\u0000\u0000\u0a26\u0a27\u0007\t\u0000\u0000\u0a27"+ - "\u0164\u0001\u0000\u0000\u0000\u0a28\u0a29\u0007\u000e\u0000\u0000\u0a29"+ - "\u0a2a\u0007\u0013\u0000\u0000\u0a2a\u0a2b\u0007\u0007\u0000\u0000\u0a2b"+ - "\u0a2c\u0007\u0010\u0000\u0000\u0a2c\u0a2d\u0007\n\u0000\u0000\u0a2d\u0a2e"+ - "\u0007\u0007\u0000\u0000\u0a2e\u0a2f\u0007\u0010\u0000\u0000\u0a2f\u0166"+ - "\u0001\u0000\u0000\u0000\u0a30\u0a31\u0007\u000e\u0000\u0000\u0a31\u0a32"+ - "\u0007\u0013\u0000\u0000\u0a32\u0a33\u0007\u0007\u0000\u0000\u0a33\u0a34"+ - "\u0007\u0010\u0000\u0000\u0a34\u0a35\u0007\u0011\u0000\u0000\u0a35\u0a36"+ - "\u0007\u0007\u0000\u0000\u0a36\u0a37\u0007\u0016\u0000\u0000\u0a37\u0a38"+ - "\u0007\n\u0000\u0000\u0a38\u0168\u0001\u0000\u0000\u0000\u0a39\u0a3a\u0007"+ - "\u000e\u0000\u0000\u0a3a\u0a3b\u0007\u0013\u0000\u0000\u0a3b\u0a3c\u0007"+ - "\u0007\u0000\u0000\u0a3c\u0a3d\u0007\u001b\u0000\u0000\u0a3d\u0a3e\u0007"+ - "\n\u0000\u0000\u0a3e\u0a3f\u0007\r\u0000\u0000\u0a3f\u0a40\u0007\t\u0000"+ - "\u0000\u0a40\u0a41\u0007\u0011\u0000\u0000\u0a41\u0a42\u0007\u0013\u0000"+ - "\u0000\u0a42\u0a43\u0007\u0007\u0000\u0000\u0a43\u016a\u0001\u0000\u0000"+ - "\u0000\u0a44\u0a45\u0007\u000e\u0000\u0000\u0a45\u0a46\u0007\u0013\u0000"+ - "\u0000\u0a46\u0a47\u0007\u0018\u0000\u0000\u0a47\u0a48\u0007\b\u0000\u0000"+ - "\u0a48\u016c\u0001\u0000\u0000\u0000\u0a49\u0a4a\u0007\u000e\u0000\u0000"+ - "\u0a4a\u0a4b\u0007\u0013\u0000\u0000\u0a4b\u0a4c\u0007\t\u0000\u0000\u0a4c"+ - "\u0a4d\u0007\u0010\u0000\u0000\u0a4d\u016e\u0001\u0000\u0000\u0000\u0a4e"+ - "\u0a4f\u0007\u000e\u0000\u0000\u0a4f\u0a50\u0007\t\u0000\u0000\u0a50\u0a51"+ - "\u0007\u001b\u0000\u0000\u0a51\u0170\u0001\u0000\u0000\u0000\u0a52\u0a53"+ - "\u0007\u000e\u0000\u0000\u0a53\u0a54\u0007\u0016\u0000\u0000\u0a54\u0a55"+ - "\u0007\r\u0000\u0000\u0a55\u0a56\u0007\t\u0000\u0000\u0a56\u0a57\u0007"+ - "\u0013\u0000\u0000\u0a57\u0a58\u0007\r\u0000\u0000\u0a58\u0172\u0001\u0000"+ - "\u0000\u0000\u0a59\u0a5a\u0007\u000e\u0000\u0000\u0a5a\u0a5b\u0007\b\u0000"+ - "\u0000\u0a5b\u0a5c\u0007\u000e\u0000\u0000\u0a5c\u0a5d\u0007\u0006\u0000"+ - "\u0000\u0a5d\u0a5e\u0007\n\u0000\u0000\u0a5e\u0174\u0001\u0000\u0000\u0000"+ - "\u0a5f\u0a60\u0007\f\u0000\u0000\u0a60\u0a61\u0007\u0005\u0000\u0000\u0a61"+ - "\u0a62\u0007\u0010\u0000\u0000\u0a62\u0a63\u0007\u0005\u0000\u0000\u0a63"+ - "\u0176\u0001\u0000\u0000\u0000\u0a64\u0a65\u0007\f\u0000\u0000\u0a65\u0a66"+ - "\u0007\u0005\u0000\u0000\u0a66\u0a67\u0007\u0010\u0000\u0000\u0a67\u0a68"+ - "\u0007\u0005\u0000\u0000\u0a68\u0a69\u0007\u0012\u0000\u0000\u0a69\u0a6a"+ - "\u0007\u0005\u0000\u0000\u0a6a\u0a6b\u0007\t\u0000\u0000\u0a6b\u0a6c\u0007"+ - "\n\u0000\u0000\u0a6c\u0178\u0001\u0000\u0000\u0000\u0a6d\u0a6e\u0007\f"+ - "\u0000\u0000\u0a6e\u0a6f\u0007\u0005\u0000\u0000\u0a6f\u0a70\u0007\b\u0000"+ - "\u0000\u0a70\u017a\u0001\u0000\u0000\u0000\u0a71\u0a72\u0007\f\u0000\u0000"+ - "\u0a72\u0a73\u0007\n\u0000\u0000\u0a73\u0a74\u0007\u0005\u0000\u0000\u0a74"+ - "\u0a75\u0007\u0006\u0000\u0000\u0a75\u0a76\u0007\u0006\u0000\u0000\u0a76"+ - "\u0a77\u0007\u0013\u0000\u0000\u0a77\u0a78\u0007\u000e\u0000\u0000\u0a78"+ - "\u0a79\u0007\u0005\u0000\u0000\u0a79\u0a7a\u0007\u0010\u0000\u0000\u0a7a"+ - "\u0a7b\u0007\n\u0000\u0000\u0a7b\u017c\u0001\u0000\u0000\u0000\u0a7c\u0a7d"+ - "\u0007\f\u0000\u0000\u0a7d\u0a7e\u0007\n\u0000\u0000\u0a7e\u0a7f\u0007"+ - "\u000e\u0000\u0000\u0a7f\u0a80\u0007\u0006\u0000\u0000\u0a80\u0a81\u0007"+ - "\u0005\u0000\u0000\u0a81\u0a82\u0007\r\u0000\u0000\u0a82\u0a83\u0007\n"+ - "\u0000\u0000\u0a83\u017e\u0001\u0000\u0000\u0000\u0a84\u0a85\u0007\f\u0000"+ - "\u0000\u0a85\u0a86\u0007\n\u0000\u0000\u0a86\u0a87\u0007\u0019\u0000\u0000"+ - "\u0a87\u0a88\u0007\u0005\u0000\u0000\u0a88\u0a89\u0007\u0016\u0000\u0000"+ - "\u0a89\u0a8a\u0007\u0006\u0000\u0000\u0a8a\u0a8b\u0007\u0010\u0000\u0000"+ - "\u0a8b\u0a8c\u0007\t\u0000\u0000\u0a8c\u0180\u0001\u0000\u0000\u0000\u0a8d"+ - "\u0a8e\u0007\f\u0000\u0000\u0a8e\u0a8f\u0007\n\u0000\u0000\u0a8f\u0a90"+ - "\u0007\u0019\u0000\u0000\u0a90\u0a91\u0007\n\u0000\u0000\u0a91\u0a92\u0007"+ - "\r\u0000\u0000\u0a92\u0a93\u0007\r\u0000\u0000\u0a93\u0a94\u0007\n\u0000"+ - "\u0000\u0a94\u0a95\u0007\f\u0000\u0000\u0a95\u0182\u0001\u0000\u0000\u0000"+ - "\u0a96\u0a97\u0007\f\u0000\u0000\u0a97\u0a98\u0007\n\u0000\u0000\u0a98"+ - "\u0a99\u0007\u0019\u0000\u0000\u0a99\u0a9a\u0007\u0011\u0000\u0000\u0a9a"+ - "\u0a9b\u0007\u0007\u0000\u0000\u0a9b\u0a9c\u0007\n\u0000\u0000\u0a9c\u0a9d"+ - "\u0007\r\u0000\u0000\u0a9d\u0184\u0001\u0000\u0000\u0000\u0a9e\u0a9f\u0007"+ - "\f\u0000\u0000\u0a9f\u0aa0\u0007\n\u0000\u0000\u0aa0\u0aa1\u0007\u0006"+ - "\u0000\u0000\u0aa1\u0aa2\u0007\n\u0000\u0000\u0aa2\u0aa3\u0007\u0010\u0000"+ - "\u0000\u0aa3\u0aa4\u0007\n\u0000\u0000\u0aa4\u0186\u0001\u0000\u0000\u0000"+ - "\u0aa5\u0aa6\u0007\f\u0000\u0000\u0aa6\u0aa7\u0007\n\u0000\u0000\u0aa7"+ - "\u0aa8\u0007\u0006\u0000\u0000\u0aa8\u0aa9\u0007\u0011\u0000\u0000\u0aa9"+ - "\u0aaa\u0007\u000f\u0000\u0000\u0aaa\u0aab\u0007\u0011\u0000\u0000\u0aab"+ - "\u0aac\u0007\u0010\u0000\u0000\u0aac\u0aad\u0007\n\u0000\u0000\u0aad\u0aae"+ - "\u0007\r\u0000\u0000\u0aae\u0188\u0001\u0000\u0000\u0000\u0aaf\u0ab0\u0007"+ - "\f\u0000\u0000\u0ab0\u0ab1\u0007\n\u0000\u0000\u0ab1\u0ab2\u0007\u0006"+ - "\u0000\u0000\u0ab2\u0ab3\u0007\u0011\u0000\u0000\u0ab3\u0ab4\u0007\u000f"+ - "\u0000\u0000\u0ab4\u0ab5\u0007\u0011\u0000\u0000\u0ab5\u0ab6\u0007\u0010"+ - "\u0000\u0000\u0ab6\u0ab7\u0007\n\u0000\u0000\u0ab7\u0ab8\u0007\r\u0000"+ - "\u0000\u0ab8\u0ab9\u0007\t\u0000\u0000\u0ab9\u018a\u0001\u0000\u0000\u0000"+ - "\u0aba\u0abb\u0007\f\u0000\u0000\u0abb\u0abc\u0007\u0011\u0000\u0000\u0abc"+ - "\u0abd\u0007\u000e\u0000\u0000\u0abd\u0abe\u0007\u0010\u0000\u0000\u0abe"+ - "\u0abf\u0007\u0011\u0000\u0000\u0abf\u0ac0\u0007\u0013\u0000\u0000\u0ac0"+ - "\u0ac1\u0007\u0007\u0000\u0000\u0ac1\u0ac2\u0007\u0005\u0000\u0000\u0ac2"+ - "\u0ac3\u0007\r\u0000\u0000\u0ac3\u0ac4\u0007\b\u0000\u0000\u0ac4\u018c"+ - "\u0001\u0000\u0000\u0000\u0ac5\u0ac6\u0007\f\u0000\u0000\u0ac6\u0ac7\u0007"+ - "\u0011\u0000\u0000\u0ac7\u0ac8\u0007\t\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\u018e\u0001\u0000\u0000"+ - "\u0000\u0acd\u0ace\u0007\f\u0000\u0000\u0ace\u0acf\u0007\u0011\u0000\u0000"+ - "\u0acf\u0ad0\u0007\t\u0000\u0000\u0ad0\u0ad1\u0007\u000e\u0000\u0000\u0ad1"+ - "\u0ad2\u0007\u0005\u0000\u0000\u0ad2\u0ad3\u0007\r\u0000\u0000\u0ad3\u0ad4"+ - "\u0007\f\u0000\u0000\u0ad4\u0190\u0001\u0000\u0000\u0000\u0ad5\u0ad6\u0007"+ - "\f\u0000\u0000\u0ad6\u0ad7\u0007\u0013\u0000\u0000\u0ad7\u0ad8\u0007\u000e"+ - "\u0000\u0000\u0ad8\u0ad9\u0007\u0016\u0000\u0000\u0ad9\u0ada\u0007\u000f"+ - "\u0000\u0000\u0ada\u0adb\u0007\n\u0000\u0000\u0adb\u0adc\u0007\u0007\u0000"+ - "\u0000\u0adc\u0add\u0007\u0010\u0000\u0000\u0add\u0192\u0001\u0000\u0000"+ - "\u0000\u0ade\u0adf\u0007\f\u0000\u0000\u0adf\u0ae0\u0007\u0013\u0000\u0000"+ - "\u0ae0\u0ae1\u0007\u000f\u0000\u0000\u0ae1\u0ae2\u0007\u0005\u0000\u0000"+ - "\u0ae2\u0ae3\u0007\u0011\u0000\u0000\u0ae3\u0ae4\u0007\u0007\u0000\u0000"+ - "\u0ae4\u0194\u0001\u0000\u0000\u0000\u0ae5\u0ae6\u0007\f\u0000\u0000\u0ae6"+ - "\u0ae7\u0007\u0013\u0000\u0000\u0ae7\u0ae8\u0007\u0016\u0000\u0000\u0ae8"+ - "\u0ae9\u0007\u0012\u0000\u0000\u0ae9\u0aea\u0007\u0006\u0000\u0000\u0aea"+ - "\u0aeb\u0007\n\u0000\u0000\u0aeb\u0196\u0001\u0000\u0000\u0000\u0aec\u0aed"+ - "\u0007\f\u0000\u0000\u0aed\u0aee\u0007\r\u0000\u0000\u0aee\u0aef\u0007"+ - "\u0013\u0000\u0000\u0aef\u0af0\u0007\u0018\u0000\u0000\u0af0\u0198\u0001"+ - "\u0000\u0000\u0000\u0af1\u0af2\u0007\n\u0000\u0000\u0af2\u0af3\u0007\u0005"+ - "\u0000\u0000\u0af3\u0af4\u0007\u000e\u0000\u0000\u0af4\u0af5\u0007\u0014"+ - "\u0000\u0000\u0af5\u019a\u0001\u0000\u0000\u0000\u0af6\u0af7\u0007\n\u0000"+ - "\u0000\u0af7\u0af8\u0007\u0007\u0000\u0000\u0af8\u0af9\u0007\u0005\u0000"+ - "\u0000\u0af9\u0afa\u0007\u0012\u0000\u0000\u0afa\u0afb\u0007\u0006\u0000"+ - "\u0000\u0afb\u0afc\u0007\n\u0000\u0000\u0afc\u019c\u0001\u0000\u0000\u0000"+ - "\u0afd\u0afe\u0007\n\u0000\u0000\u0afe\u0aff\u0007\u0007\u0000\u0000\u0aff"+ - "\u0b00\u0007\u000e\u0000\u0000\u0b00\u0b01\u0007\u0013\u0000\u0000\u0b01"+ - "\u0b02\u0007\f\u0000\u0000\u0b02\u0b03\u0007\u0011\u0000\u0000\u0b03\u0b04"+ - "\u0007\u0007\u0000\u0000\u0b04\u0b05\u0007\u0017\u0000\u0000\u0b05\u019e"+ - "\u0001\u0000\u0000\u0000\u0b06\u0b07\u0007\n\u0000\u0000\u0b07\u0b08\u0007"+ - "\u0007\u0000\u0000\u0b08\u0b09\u0007\u000e\u0000\u0000\u0b09\u0b0a\u0007"+ - "\r\u0000\u0000\u0b0a\u0b0b\u0007\b\u0000\u0000\u0b0b\u0b0c\u0007\u0018"+ - "\u0000\u0000\u0b0c\u0b0d\u0007\u0010\u0000\u0000\u0b0d\u0b0e\u0007\n\u0000"+ - "\u0000\u0b0e\u0b0f\u0007\f\u0000\u0000\u0b0f\u01a0\u0001\u0000\u0000\u0000"+ - "\u0b10\u0b11\u0007\n\u0000\u0000\u0b11\u0b12\u0007\u0007\u0000\u0000\u0b12"+ - "\u0b13\u0007\u0016\u0000\u0000\u0b13\u0b14\u0007\u000f\u0000\u0000\u0b14"+ - "\u01a2\u0001\u0000\u0000\u0000\u0b15\u0b16\u0007\n\u0000\u0000\u0b16\u0b17"+ - "\u0007\t\u0000\u0000\u0b17\u0b18\u0007\u000e\u0000\u0000\u0b18\u0b19\u0007"+ - "\u0005\u0000\u0000\u0b19\u0b1a\u0007\u0018\u0000\u0000\u0b1a\u0b1b\u0007"+ - "\n\u0000\u0000\u0b1b\u01a4\u0001\u0000\u0000\u0000\u0b1c\u0b1d\u0007\n"+ - "\u0000\u0000\u0b1d\u0b1e\u0007\u001b\u0000\u0000\u0b1e\u0b1f\u0007\n\u0000"+ - "\u0000\u0b1f\u0b20\u0007\u0007\u0000\u0000\u0b20\u0b21\u0007\u0010\u0000"+ - "\u0000\u0b21\u01a6\u0001\u0000\u0000\u0000\u0b22\u0b23\u0007\n\u0000\u0000"+ - "\u0b23\u0b24\u0007\u001a\u0000\u0000\u0b24\u0b25\u0007\u000e\u0000\u0000"+ - "\u0b25\u0b26\u0007\u0006\u0000\u0000\u0b26\u0b27\u0007\u0016\u0000\u0000"+ - "\u0b27\u0b28\u0007\f\u0000\u0000\u0b28\u0b29\u0007\n\u0000\u0000\u0b29"+ - "\u01a8\u0001\u0000\u0000\u0000\u0b2a\u0b2b\u0007\n\u0000\u0000\u0b2b\u0b2c"+ - "\u0007\u001a\u0000\u0000\u0b2c\u0b2d\u0007\u000e\u0000\u0000\u0b2d\u0b2e"+ - "\u0007\u0006\u0000\u0000\u0b2e\u0b2f\u0007\u0016\u0000\u0000\u0b2f\u0b30"+ - "\u0007\f\u0000\u0000\u0b30\u0b31\u0007\u0011\u0000\u0000\u0b31\u0b32\u0007"+ - "\u0007\u0000\u0000\u0b32\u0b33\u0007\u0017\u0000\u0000\u0b33\u01aa\u0001"+ - "\u0000\u0000\u0000\u0b34\u0b35\u0007\n\u0000\u0000\u0b35\u0b36\u0007\u001a"+ - "\u0000\u0000\u0b36\u0b37\u0007\u000e\u0000\u0000\u0b37\u0b38\u0007\u0006"+ - "\u0000\u0000\u0b38\u0b39\u0007\u0016\u0000\u0000\u0b39\u0b3a\u0007\t\u0000"+ - "\u0000\u0b3a\u0b3b\u0007\u0011\u0000\u0000\u0b3b\u0b3c\u0007\u001b\u0000"+ - "\u0000\u0b3c\u0b3d\u0007\n\u0000\u0000\u0b3d\u01ac\u0001\u0000\u0000\u0000"+ - "\u0b3e\u0b3f\u0007\n\u0000\u0000\u0b3f\u0b40\u0007\u001a\u0000\u0000\u0b40"+ - "\u0b41\u0007\n\u0000\u0000\u0b41\u0b42\u0007\u000e\u0000\u0000\u0b42\u0b43"+ - "\u0007\u0016\u0000\u0000\u0b43\u0b44\u0007\u0010\u0000\u0000\u0b44\u0b45"+ - "\u0007\n\u0000\u0000\u0b45\u01ae\u0001\u0000\u0000\u0000\u0b46\u0b47\u0007"+ - "\n\u0000\u0000\u0b47\u0b48\u0007\u001a\u0000\u0000\u0b48\u0b49\u0007\u0018"+ - "\u0000\u0000\u0b49\u0b4a\u0007\u0006\u0000\u0000\u0b4a\u0b4b\u0007\u0005"+ - "\u0000\u0000\u0b4b\u0b4c\u0007\u0011\u0000\u0000\u0b4c\u0b4d\u0007\u0007"+ - "\u0000\u0000\u0b4d\u01b0\u0001\u0000\u0000\u0000\u0b4e\u0b4f\u0007\n\u0000"+ - "\u0000\u0b4f\u0b50\u0007\u001a\u0000\u0000\u0b50\u0b51\u0007\u0010\u0000"+ - "\u0000\u0b51\u0b52\u0007\n\u0000\u0000\u0b52\u0b53\u0007\u0007\u0000\u0000"+ - "\u0b53\u0b54\u0007\t\u0000\u0000\u0b54\u0b55\u0007\u0011\u0000\u0000\u0b55"+ - "\u0b56\u0007\u0013\u0000\u0000\u0b56\u0b57\u0007\u0007\u0000\u0000\u0b57"+ - "\u01b2\u0001\u0000\u0000\u0000\u0b58\u0b59\u0007\n\u0000\u0000\u0b59\u0b5a"+ - "\u0007\u001a\u0000\u0000\u0b5a\u0b5b\u0007\u0010\u0000\u0000\u0b5b\u0b5c"+ - "\u0007\n\u0000\u0000\u0b5c\u0b5d\u0007\r\u0000\u0000\u0b5d\u0b5e\u0007"+ - "\u0007\u0000\u0000\u0b5e\u0b5f\u0007\u0005\u0000\u0000\u0b5f\u0b60\u0007"+ - "\u0006\u0000\u0000\u0b60\u01b4\u0001\u0000\u0000\u0000\u0b61\u0b62\u0007"+ - "\u0019\u0000\u0000\u0b62\u0b63\u0007\u0005\u0000\u0000\u0b63\u0b64\u0007"+ - "\u000f\u0000\u0000\u0b64\u0b65\u0007\u0011\u0000\u0000\u0b65\u0b66\u0007"+ - "\u0006\u0000\u0000\u0b66\u0b67\u0007\b\u0000\u0000\u0b67\u01b6\u0001\u0000"+ - "\u0000\u0000\u0b68\u0b69\u0007\u0019\u0000\u0000\u0b69\u0b6a\u0007\u0011"+ - "\u0000\u0000\u0b6a\u0b6b\u0007\r\u0000\u0000\u0b6b\u0b6c\u0007\t\u0000"+ - "\u0000\u0b6c\u0b6d\u0007\u0010\u0000\u0000\u0b6d\u01b8\u0001\u0000\u0000"+ - "\u0000\u0b6e\u0b6f\u0007\u0019\u0000\u0000\u0b6f\u0b70\u0007\u0013\u0000"+ - "\u0000\u0b70\u0b71\u0007\u0006\u0000\u0000\u0b71\u0b72\u0007\u0006\u0000"+ - "\u0000\u0b72\u0b73\u0007\u0013\u0000\u0000\u0b73\u0b74\u0007\u001c\u0000"+ - "\u0000\u0b74\u0b75\u0007\u0011\u0000\u0000\u0b75\u0b76\u0007\u0007\u0000"+ - "\u0000\u0b76\u0b77\u0007\u0017\u0000\u0000\u0b77\u01ba\u0001\u0000\u0000"+ - "\u0000\u0b78\u0b79\u0007\u0019\u0000\u0000\u0b79\u0b7a\u0007\u0013\u0000"+ - "\u0000\u0b7a\u0b7b\u0007\r\u0000\u0000\u0b7b\u0b7c\u0007\u000e\u0000\u0000"+ - "\u0b7c\u0b7d\u0007\n\u0000\u0000\u0b7d\u01bc\u0001\u0000\u0000\u0000\u0b7e"+ - "\u0b7f\u0007\u0019\u0000\u0000\u0b7f\u0b80\u0007\u0013\u0000\u0000\u0b80"+ - "\u0b81\u0007\r\u0000\u0000\u0b81\u0b82\u0007\u001c\u0000\u0000\u0b82\u0b83"+ - "\u0007\u0005\u0000\u0000\u0b83\u0b84\u0007\r\u0000\u0000\u0b84\u0b85\u0007"+ - "\f\u0000\u0000\u0b85\u01be\u0001\u0000\u0000\u0000\u0b86\u0b87\u0007\u0019"+ - "\u0000\u0000\u0b87\u0b88\u0007\u0016\u0000\u0000\u0b88\u0b89\u0007\u0007"+ - "\u0000\u0000\u0b89\u0b8a\u0007\u000e\u0000\u0000\u0b8a\u0b8b\u0007\u0010"+ - "\u0000\u0000\u0b8b\u0b8c\u0007\u0011\u0000\u0000\u0b8c\u0b8d\u0007\u0013"+ - "\u0000\u0000\u0b8d\u0b8e\u0007\u0007\u0000\u0000\u0b8e\u01c0\u0001\u0000"+ - "\u0000\u0000\u0b8f\u0b90\u0007\u0019\u0000\u0000\u0b90\u0b91\u0007\u0016"+ - "\u0000\u0000\u0b91\u0b92\u0007\u0007\u0000\u0000\u0b92\u0b93\u0007\u000e"+ - "\u0000\u0000\u0b93\u0b94\u0007\u0010\u0000\u0000\u0b94\u0b95\u0007\u0011"+ - "\u0000\u0000\u0b95\u0b96\u0007\u0013\u0000\u0000\u0b96\u0b97\u0007\u0007"+ - "\u0000\u0000\u0b97\u0b98\u0007\t\u0000\u0000\u0b98\u01c2\u0001\u0000\u0000"+ - "\u0000\u0b99\u0b9a\u0007\u0017\u0000\u0000\u0b9a\u0b9b\u0007\u0006\u0000"+ - "\u0000\u0b9b\u0b9c\u0007\u0013\u0000\u0000\u0b9c\u0b9d\u0007\u0012\u0000"+ - "\u0000\u0b9d\u0b9e\u0007\u0005\u0000\u0000\u0b9e\u0b9f\u0007\u0006\u0000"+ - "\u0000\u0b9f\u01c4\u0001\u0000\u0000\u0000\u0ba0\u0ba1\u0007\u0017\u0000"+ - "\u0000\u0ba1\u0ba2\u0007\r\u0000\u0000\u0ba2\u0ba3\u0007\u0005\u0000\u0000"+ - "\u0ba3\u0ba4\u0007\u0007\u0000\u0000\u0ba4\u0ba5\u0007\u0010\u0000\u0000"+ - "\u0ba5\u0ba6\u0007\n\u0000\u0000\u0ba6\u0ba7\u0007\f\u0000\u0000\u0ba7"+ - "\u01c6\u0001\u0000\u0000\u0000\u0ba8\u0ba9\u0007\u0014\u0000\u0000\u0ba9"+ - "\u0baa\u0007\u0005\u0000\u0000\u0baa\u0bab\u0007\u0007\u0000\u0000\u0bab"+ - "\u0bac\u0007\f\u0000\u0000\u0bac\u0bad\u0007\u0006\u0000\u0000\u0bad\u0bae"+ - "\u0007\n\u0000\u0000\u0bae\u0baf\u0007\r\u0000\u0000\u0baf\u01c8\u0001"+ - "\u0000\u0000\u0000\u0bb0\u0bb1\u0007\u0014\u0000\u0000\u0bb1\u0bb2\u0007"+ - "\n\u0000\u0000\u0bb2\u0bb3\u0007\u0005\u0000\u0000\u0bb3\u0bb4\u0007\f"+ - "\u0000\u0000\u0bb4\u0bb5\u0007\n\u0000\u0000\u0bb5\u0bb6\u0007\r\u0000"+ - "\u0000\u0bb6\u01ca\u0001\u0000\u0000\u0000\u0bb7\u0bb8\u0007\u0014\u0000"+ - "\u0000\u0bb8\u0bb9\u0007\u0013\u0000\u0000\u0bb9\u0bba\u0007\u0006\u0000"+ - "\u0000\u0bba\u0bbb\u0007\f\u0000\u0000\u0bbb\u01cc\u0001\u0000\u0000\u0000"+ - "\u0bbc\u0bbd\u0007\u0014\u0000\u0000\u0bbd\u0bbe\u0007\u0013\u0000\u0000"+ - "\u0bbe\u0bbf\u0007\u0016\u0000\u0000\u0bbf\u0bc0\u0007\r\u0000\u0000\u0bc0"+ - "\u01ce\u0001\u0000\u0000\u0000\u0bc1\u0bc2\u0007\u0011\u0000\u0000\u0bc2"+ - "\u0bc3\u0007\f\u0000\u0000\u0bc3\u0bc4\u0007\n\u0000\u0000\u0bc4\u0bc5"+ - "\u0007\u0007\u0000\u0000\u0bc5\u0bc6\u0007\u0010\u0000\u0000\u0bc6\u0bc7"+ - "\u0007\u0011\u0000\u0000\u0bc7\u0bc8\u0007\u0010\u0000\u0000\u0bc8\u0bc9"+ - "\u0007\b\u0000\u0000\u0bc9\u01d0\u0001\u0000\u0000\u0000\u0bca\u0bcb\u0007"+ - "\u0011\u0000\u0000\u0bcb\u0bcc\u0007\u0019\u0000\u0000\u0bcc\u01d2\u0001"+ - "\u0000\u0000\u0000\u0bcd\u0bce\u0007\u0011\u0000\u0000\u0bce\u0bcf\u0007"+ - "\u000f\u0000\u0000\u0bcf\u0bd0\u0007\u000f\u0000\u0000\u0bd0\u0bd1\u0007"+ - "\n\u0000\u0000\u0bd1\u0bd2\u0007\f\u0000\u0000\u0bd2\u0bd3\u0007\u0011"+ - "\u0000\u0000\u0bd3\u0bd4\u0007\u0005\u0000\u0000\u0bd4\u0bd5\u0007\u0010"+ - "\u0000\u0000\u0bd5\u0bd6\u0007\n\u0000\u0000\u0bd6\u01d4\u0001\u0000\u0000"+ - "\u0000\u0bd7\u0bd8\u0007\u0011\u0000\u0000\u0bd8\u0bd9\u0007\u000f\u0000"+ - "\u0000\u0bd9\u0bda\u0007\u000f\u0000\u0000\u0bda\u0bdb\u0007\u0016\u0000"+ - "\u0000\u0bdb\u0bdc\u0007\u0010\u0000\u0000\u0bdc\u0bdd\u0007\u0005\u0000"+ - "\u0000\u0bdd\u0bde\u0007\u0012\u0000\u0000\u0bde\u0bdf\u0007\u0006\u0000"+ - "\u0000\u0bdf\u0be0\u0007\n\u0000\u0000\u0be0\u01d6\u0001\u0000\u0000\u0000"+ - "\u0be1\u0be2\u0007\u0011\u0000\u0000\u0be2\u0be3\u0007\u000f\u0000\u0000"+ - "\u0be3\u0be4\u0007\u0018\u0000\u0000\u0be4\u0be5\u0007\u0006\u0000\u0000"+ - "\u0be5\u0be6\u0007\u0011\u0000\u0000\u0be6\u0be7\u0007\u000e\u0000\u0000"+ - "\u0be7\u0be8\u0007\u0011\u0000\u0000\u0be8\u0be9\u0007\u0010\u0000\u0000"+ - "\u0be9\u01d8\u0001\u0000\u0000\u0000\u0bea\u0beb\u0007\u0011\u0000\u0000"+ - "\u0beb\u0bec\u0007\u0007\u0000\u0000\u0bec\u0bed\u0007\u000e\u0000\u0000"+ - "\u0bed\u0bee\u0007\u0006\u0000\u0000\u0bee\u0bef\u0007\u0016\u0000\u0000"+ - "\u0bef\u0bf0\u0007\f\u0000\u0000\u0bf0\u0bf1\u0007\u0011\u0000\u0000\u0bf1"+ - "\u0bf2\u0007\u0007\u0000\u0000\u0bf2\u0bf3\u0007\u0017\u0000\u0000\u0bf3"+ - "\u01da\u0001\u0000\u0000\u0000\u0bf4\u0bf5\u0007\u0011\u0000\u0000\u0bf5"+ - "\u0bf6\u0007\u0007\u0000\u0000\u0bf6\u0bf7\u0007\u000e\u0000\u0000\u0bf7"+ - "\u0bf8\u0007\r\u0000\u0000\u0bf8\u0bf9\u0007\n\u0000\u0000\u0bf9\u0bfa"+ - "\u0007\u000f\u0000\u0000\u0bfa\u0bfb\u0007\n\u0000\u0000\u0bfb\u0bfc\u0007"+ - "\u0007\u0000\u0000\u0bfc\u0bfd\u0007\u0010\u0000\u0000\u0bfd\u01dc\u0001"+ - "\u0000\u0000\u0000\u0bfe\u0bff\u0007\u0011\u0000\u0000\u0bff\u0c00\u0007"+ - "\u0007\u0000\u0000\u0c00\u0c01\u0007\f\u0000\u0000\u0c01\u0c02\u0007\n"+ - "\u0000\u0000\u0c02\u0c03\u0007\u001a\u0000\u0000\u0c03\u01de\u0001\u0000"+ - "\u0000\u0000\u0c04\u0c05\u0007\u0011\u0000\u0000\u0c05\u0c06\u0007\u0007"+ - "\u0000\u0000\u0c06\u0c07\u0007\f\u0000\u0000\u0c07\u0c08\u0007\n\u0000"+ - "\u0000\u0c08\u0c09\u0007\u001a\u0000\u0000\u0c09\u0c0a\u0007\n\u0000\u0000"+ - "\u0c0a\u0c0b\u0007\t\u0000\u0000\u0c0b\u01e0\u0001\u0000\u0000\u0000\u0c0c"+ - "\u0c0d\u0007\u0011\u0000\u0000\u0c0d\u0c0e\u0007\u0007\u0000\u0000\u0c0e"+ - "\u0c0f\u0007\u0014\u0000\u0000\u0c0f\u0c10\u0007\n\u0000\u0000\u0c10\u0c11"+ - "\u0007\r\u0000\u0000\u0c11\u0c12\u0007\u0011\u0000\u0000\u0c12\u0c13\u0007"+ - "\u0010\u0000\u0000\u0c13\u01e2\u0001\u0000\u0000\u0000\u0c14\u0c15\u0007"+ - "\u0011\u0000\u0000\u0c15\u0c16\u0007\u0007\u0000\u0000\u0c16\u0c17\u0007"+ - "\u0014\u0000\u0000\u0c17\u0c18\u0007\n\u0000\u0000\u0c18\u0c19\u0007\r"+ - "\u0000\u0000\u0c19\u0c1a\u0007\u0011\u0000\u0000\u0c1a\u0c1b\u0007\u0010"+ - "\u0000\u0000\u0c1b\u0c1c\u0007\t\u0000\u0000\u0c1c\u01e4\u0001\u0000\u0000"+ - "\u0000\u0c1d\u0c1e\u0007\u0011\u0000\u0000\u0c1e\u0c1f\u0007\u0007\u0000"+ - "\u0000\u0c1f\u0c20\u0007\u0006\u0000\u0000\u0c20\u0c21\u0007\u0011\u0000"+ - "\u0000\u0c21\u0c22\u0007\u0007\u0000\u0000\u0c22\u0c23\u0007\n\u0000\u0000"+ - "\u0c23\u01e6\u0001\u0000\u0000\u0000\u0c24\u0c25\u0007\u0011\u0000\u0000"+ - "\u0c25\u0c26\u0007\u0007\u0000\u0000\u0c26\u0c27\u0007\t\u0000\u0000\u0c27"+ - "\u0c28\u0007\n\u0000\u0000\u0c28\u0c29\u0007\u0007\u0000\u0000\u0c29\u0c2a"+ - "\u0007\t\u0000\u0000\u0c2a\u0c2b\u0007\u0011\u0000\u0000\u0c2b\u0c2c\u0007"+ - "\u0010\u0000\u0000\u0c2c\u0c2d\u0007\u0011\u0000\u0000\u0c2d\u0c2e\u0007"+ - "\u001b\u0000\u0000\u0c2e\u0c2f\u0007\n\u0000\u0000\u0c2f\u01e8\u0001\u0000"+ - "\u0000\u0000\u0c30\u0c31\u0007\u0011\u0000\u0000\u0c31\u0c32\u0007\u0007"+ - "\u0000\u0000\u0c32\u0c33\u0007\t\u0000\u0000\u0c33\u0c34\u0007\n\u0000"+ - "\u0000\u0c34\u0c35\u0007\r\u0000\u0000\u0c35\u0c36\u0007\u0010\u0000\u0000"+ - "\u0c36\u01ea\u0001\u0000\u0000\u0000\u0c37\u0c38\u0007\u0011\u0000\u0000"+ - "\u0c38\u0c39\u0007\u0007\u0000\u0000\u0c39\u0c3a\u0007\t\u0000\u0000\u0c3a"+ - "\u0c3b\u0007\u0010\u0000\u0000\u0c3b\u0c3c\u0007\n\u0000\u0000\u0c3c\u0c3d"+ - "\u0007\u0005\u0000\u0000\u0c3d\u0c3e\u0007\f\u0000\u0000\u0c3e\u01ec\u0001"+ - "\u0000\u0000\u0000\u0c3f\u0c40\u0007\u0011\u0000\u0000\u0c40\u0c41\u0007"+ - "\u0007\u0000\u0000\u0c41\u0c42\u0007\u001b\u0000\u0000\u0c42\u0c43\u0007"+ - "\u0013\u0000\u0000\u0c43\u0c44\u0007\u0015\u0000\u0000\u0c44\u0c45\u0007"+ - "\n\u0000\u0000\u0c45\u0c46\u0007\r\u0000\u0000\u0c46\u01ee\u0001\u0000"+ - "\u0000\u0000\u0c47\u0c48\u0007\u0011\u0000\u0000\u0c48\u0c49\u0007\t\u0000"+ - "\u0000\u0c49\u0c4a\u0007\u0013\u0000\u0000\u0c4a\u0c4b\u0007\u0006\u0000"+ - "\u0000\u0c4b\u0c4c\u0007\u0005\u0000\u0000\u0c4c\u0c4d\u0007\u0010\u0000"+ - "\u0000\u0c4d\u0c4e\u0007\u0011\u0000\u0000\u0c4e\u0c4f\u0007\u0013\u0000"+ - "\u0000\u0c4f\u0c50\u0007\u0007\u0000\u0000\u0c50\u01f0\u0001\u0000\u0000"+ - "\u0000\u0c51\u0c52\u0007\u0015\u0000\u0000\u0c52\u0c53\u0007\n\u0000\u0000"+ - "\u0c53\u0c54\u0007\b\u0000\u0000\u0c54\u01f2\u0001\u0000\u0000\u0000\u0c55"+ - "\u0c56\u0007\u0006\u0000\u0000\u0c56\u0c57\u0007\u0005\u0000\u0000\u0c57"+ - "\u0c58\u0007\u0012\u0000\u0000\u0c58\u0c59\u0007\n\u0000\u0000\u0c59\u0c5a"+ - "\u0007\u0006\u0000\u0000\u0c5a\u01f4\u0001\u0000\u0000\u0000\u0c5b\u0c5c"+ - "\u0007\u0006\u0000\u0000\u0c5c\u0c5d\u0007\u0005\u0000\u0000\u0c5d\u0c5e"+ - "\u0007\u0007\u0000\u0000\u0c5e\u0c5f\u0007\u0017\u0000\u0000\u0c5f\u0c60"+ - "\u0007\u0016\u0000\u0000\u0c60\u0c61\u0007\u0005\u0000\u0000\u0c61\u0c62"+ - "\u0007\u0017\u0000\u0000\u0c62\u0c63\u0007\n\u0000\u0000\u0c63\u01f6\u0001"+ - "\u0000\u0000\u0000\u0c64\u0c65\u0007\u0006\u0000\u0000\u0c65\u0c66\u0007"+ - "\u0005\u0000\u0000\u0c66\u0c67\u0007\r\u0000\u0000\u0c67\u0c68\u0007\u0017"+ - "\u0000\u0000\u0c68\u0c69\u0007\n\u0000\u0000\u0c69\u01f8\u0001\u0000\u0000"+ - "\u0000\u0c6a\u0c6b\u0007\u0006\u0000\u0000\u0c6b\u0c6c\u0007\u0005\u0000"+ - "\u0000\u0c6c\u0c6d\u0007\t\u0000\u0000\u0c6d\u0c6e\u0007\u0010\u0000\u0000"+ - "\u0c6e\u01fa\u0001\u0000\u0000\u0000\u0c6f\u0c70\u0007\u0006\u0000\u0000"+ - "\u0c70\u0c71\u0007\n\u0000\u0000\u0c71\u0c72\u0007\u0005\u0000\u0000\u0c72"+ - "\u0c73\u0007\u0015\u0000\u0000\u0c73\u0c74\u0007\u0018\u0000\u0000\u0c74"+ - "\u0c75\u0007\r\u0000\u0000\u0c75\u0c76\u0007\u0013\u0000\u0000\u0c76\u0c77"+ - "\u0007\u0013\u0000\u0000\u0c77\u0c78\u0007\u0019\u0000\u0000\u0c78\u01fc"+ - "\u0001\u0000\u0000\u0000\u0c79\u0c7a\u0007\u0006\u0000\u0000\u0c7a\u0c7b"+ - "\u0007\n\u0000\u0000\u0c7b\u0c7c\u0007\u001b\u0000\u0000\u0c7c\u0c7d\u0007"+ - "\n\u0000\u0000\u0c7d\u0c7e\u0007\u0006\u0000\u0000\u0c7e\u01fe\u0001\u0000"+ - "\u0000\u0000\u0c7f\u0c80\u0007\u0006\u0000\u0000\u0c80\u0c81\u0007\u0011"+ - "\u0000\u0000\u0c81\u0c82\u0007\t\u0000\u0000\u0c82\u0c83\u0007\u0010\u0000"+ - "\u0000\u0c83\u0c84\u0007\n\u0000\u0000\u0c84\u0c85\u0007\u0007\u0000\u0000"+ - "\u0c85\u0200\u0001\u0000\u0000\u0000\u0c86\u0c87\u0007\u0006\u0000\u0000"+ - "\u0c87\u0c88\u0007\u0013\u0000\u0000\u0c88\u0c89\u0007\u0005\u0000\u0000"+ - "\u0c89\u0c8a\u0007\f\u0000\u0000\u0c8a\u0202\u0001\u0000\u0000\u0000\u0c8b"+ - "\u0c8c\u0007\u0006\u0000\u0000\u0c8c\u0c8d\u0007\u0013\u0000\u0000\u0c8d"+ - "\u0c8e\u0007\u000e\u0000\u0000\u0c8e\u0c8f\u0007\u0005\u0000\u0000\u0c8f"+ - "\u0c90\u0007\u0006\u0000\u0000\u0c90\u0204\u0001\u0000\u0000\u0000\u0c91"+ - "\u0c92\u0007\u0006\u0000\u0000\u0c92\u0c93\u0007\u0013\u0000\u0000\u0c93"+ - "\u0c94\u0007\u000e\u0000\u0000\u0c94\u0c95\u0007\u0005\u0000\u0000\u0c95"+ - "\u0c96\u0007\u0010\u0000\u0000\u0c96\u0c97\u0007\u0011\u0000\u0000\u0c97"+ - "\u0c98\u0007\u0013\u0000\u0000\u0c98\u0c99\u0007\u0007\u0000\u0000\u0c99"+ - "\u0206\u0001\u0000\u0000\u0000\u0c9a\u0c9b\u0007\u0006\u0000\u0000\u0c9b"+ - "\u0c9c\u0007\u0013\u0000\u0000\u0c9c\u0c9d\u0007\u000e\u0000\u0000\u0c9d"+ - "\u0c9e\u0007\u0015\u0000\u0000\u0c9e\u0208\u0001\u0000\u0000\u0000\u0c9f"+ - "\u0ca0\u0007\u000f\u0000\u0000\u0ca0\u0ca1\u0007\u0005\u0000\u0000\u0ca1"+ - "\u0ca2\u0007\u0018\u0000\u0000\u0ca2\u0ca3\u0007\u0018\u0000\u0000\u0ca3"+ - "\u0ca4\u0007\u0011\u0000\u0000\u0ca4\u0ca5\u0007\u0007\u0000\u0000\u0ca5"+ - "\u0ca6\u0007\u0017\u0000\u0000\u0ca6\u020a\u0001\u0000\u0000\u0000\u0ca7"+ - "\u0ca8\u0007\u000f\u0000\u0000\u0ca8\u0ca9\u0007\u0005\u0000\u0000\u0ca9"+ - "\u0caa\u0007\u0010\u0000\u0000\u0caa\u0cab\u0007\u000e\u0000\u0000\u0cab"+ - "\u0cac\u0007\u0014\u0000\u0000\u0cac\u020c\u0001\u0000\u0000\u0000\u0cad"+ - "\u0cae\u0007\u000f\u0000\u0000\u0cae\u0caf\u0007\u0005\u0000\u0000\u0caf"+ - "\u0cb0\u0007\u0010\u0000\u0000\u0cb0\u0cb1\u0007\u000e\u0000\u0000\u0cb1"+ - "\u0cb2\u0007\u0014\u0000\u0000\u0cb2\u0cb3\u0007\n\u0000\u0000\u0cb3\u0cb4"+ - "\u0007\f\u0000\u0000\u0cb4\u020e\u0001\u0000\u0000\u0000\u0cb5\u0cb6\u0007"+ - "\u000f\u0000\u0000\u0cb6\u0cb7\u0007\u0005\u0000\u0000\u0cb7\u0cb8\u0007"+ - "\u0010\u0000\u0000\u0cb8\u0cb9\u0007\n\u0000\u0000\u0cb9\u0cba\u0007\r"+ - "\u0000\u0000\u0cba\u0cbb\u0007\u0011\u0000\u0000\u0cbb\u0cbc\u0007\u0005"+ - "\u0000\u0000\u0cbc\u0cbd\u0007\u0006\u0000\u0000\u0cbd\u0cbe\u0007\u0011"+ - "\u0000\u0000\u0cbe\u0cbf\u0007\u000b\u0000\u0000\u0cbf\u0cc0\u0007\n\u0000"+ - "\u0000\u0cc0\u0cc1\u0007\f\u0000\u0000\u0cc1\u0210\u0001\u0000\u0000\u0000"+ - "\u0cc2\u0cc3\u0007\u000f\u0000\u0000\u0cc3\u0cc4\u0007\u0005\u0000\u0000"+ - "\u0cc4\u0cc5\u0007\u001a\u0000\u0000\u0cc5\u0cc6\u0007\u001b\u0000\u0000"+ - "\u0cc6\u0cc7\u0007\u0005\u0000\u0000\u0cc7\u0cc8\u0007\u0006\u0000\u0000"+ - "\u0cc8\u0cc9\u0007\u0016\u0000\u0000\u0cc9\u0cca\u0007\n\u0000\u0000\u0cca"+ - "\u0212\u0001\u0000\u0000\u0000\u0ccb\u0ccc\u0007\u000f\u0000\u0000\u0ccc"+ - "\u0ccd\u0007\n\u0000\u0000\u0ccd\u0cce\u0007\r\u0000\u0000\u0cce\u0ccf"+ - "\u0007\u0017\u0000\u0000\u0ccf\u0cd0\u0007\n\u0000\u0000\u0cd0\u0214\u0001"+ - "\u0000\u0000\u0000\u0cd1\u0cd2\u0007\u000f\u0000\u0000\u0cd2\u0cd3\u0007"+ - "\u0011\u0000\u0000\u0cd3\u0cd4\u0007\u0007\u0000\u0000\u0cd4\u0cd5\u0007"+ - "\u0016\u0000\u0000\u0cd5\u0cd6\u0007\u0010\u0000\u0000\u0cd6\u0cd7\u0007"+ - "\n\u0000\u0000\u0cd7\u0216\u0001\u0000\u0000\u0000\u0cd8\u0cd9\u0007\u000f"+ - "\u0000\u0000\u0cd9\u0cda\u0007\u0011\u0000\u0000\u0cda\u0cdb\u0007\u0007"+ - "\u0000\u0000\u0cdb\u0cdc\u0007\u001b\u0000\u0000\u0cdc\u0cdd\u0007\u0005"+ - "\u0000\u0000\u0cdd\u0cde\u0007\u0006\u0000\u0000\u0cde\u0cdf\u0007\u0016"+ - "\u0000\u0000\u0cdf\u0ce0\u0007\n\u0000\u0000\u0ce0\u0218\u0001\u0000\u0000"+ - "\u0000\u0ce1\u0ce2\u0007\u000f\u0000\u0000\u0ce2\u0ce3\u0007\u0013\u0000"+ - "\u0000\u0ce3\u0ce4\u0007\f\u0000\u0000\u0ce4\u0ce5\u0007\n\u0000\u0000"+ - "\u0ce5\u021a\u0001\u0000\u0000\u0000\u0ce6\u0ce7\u0007\u000f\u0000\u0000"+ - "\u0ce7\u0ce8\u0007\u0013\u0000\u0000\u0ce8\u0ce9\u0007\u0007\u0000\u0000"+ - "\u0ce9\u0cea\u0007\u0010\u0000\u0000\u0cea\u0ceb\u0007\u0014\u0000\u0000"+ - "\u0ceb\u021c\u0001\u0000\u0000\u0000\u0cec\u0ced\u0007\u000f\u0000\u0000"+ - "\u0ced\u0cee\u0007\u0013\u0000\u0000\u0cee\u0cef\u0007\u001b\u0000\u0000"+ - "\u0cef\u0cf0\u0007\n\u0000\u0000\u0cf0\u021e\u0001\u0000\u0000\u0000\u0cf1"+ - "\u0cf2\u0007\u0007\u0000\u0000\u0cf2\u0cf3\u0007\u0005\u0000\u0000\u0cf3"+ - "\u0cf4\u0007\u000f\u0000\u0000\u0cf4\u0cf5\u0007\n\u0000\u0000\u0cf5\u0220"+ - "\u0001\u0000\u0000\u0000\u0cf6\u0cf7\u0007\u0007\u0000\u0000\u0cf7\u0cf8"+ - "\u0007\u0005\u0000\u0000\u0cf8\u0cf9\u0007\u000f\u0000\u0000\u0cf9\u0cfa"+ - "\u0007\n\u0000\u0000\u0cfa\u0cfb\u0007\t\u0000\u0000\u0cfb\u0222\u0001"+ - "\u0000\u0000\u0000\u0cfc\u0cfd\u0007\u0007\u0000\u0000\u0cfd\u0cfe\u0007"+ - "\n\u0000\u0000\u0cfe\u0cff\u0007\u001a\u0000\u0000\u0cff\u0d00\u0007\u0010"+ - "\u0000\u0000\u0d00\u0224\u0001\u0000\u0000\u0000\u0d01\u0d02\u0007\u0007"+ - "\u0000\u0000\u0d02\u0d03\u0007\u0013\u0000\u0000\u0d03\u0226\u0001\u0000"+ - "\u0000\u0000\u0d04\u0d05\u0007\u0007\u0000\u0000\u0d05\u0d06\u0007\u0013"+ - "\u0000\u0000\u0d06\u0d07\u0007\u0010\u0000\u0000\u0d07\u0d08\u0007\u0014"+ - "\u0000\u0000\u0d08\u0d09\u0007\u0011\u0000\u0000\u0d09\u0d0a\u0007\u0007"+ - "\u0000\u0000\u0d0a\u0d0b\u0007\u0017\u0000\u0000\u0d0b\u0228\u0001\u0000"+ - "\u0000\u0000\u0d0c\u0d0d\u0007\u0007\u0000\u0000\u0d0d\u0d0e\u0007\u0013"+ - "\u0000\u0000\u0d0e\u0d0f\u0007\u0010\u0000\u0000\u0d0f\u0d10\u0007\u0011"+ - "\u0000\u0000\u0d10\u0d11\u0007\u0019\u0000\u0000\u0d11\u0d12\u0007\b\u0000"+ - "\u0000\u0d12\u022a\u0001\u0000\u0000\u0000\u0d13\u0d14\u0007\u0007\u0000"+ - "\u0000\u0d14\u0d15\u0007\u0013\u0000\u0000\u0d15\u0d16\u0007\u001c\u0000"+ - "\u0000\u0d16\u0d17\u0007\u0005\u0000\u0000\u0d17\u0d18\u0007\u0011\u0000"+ - "\u0000\u0d18\u0d19\u0007\u0010\u0000\u0000\u0d19\u022c\u0001\u0000\u0000"+ - "\u0000\u0d1a\u0d1b\u0007\u0007\u0000\u0000\u0d1b\u0d1c\u0007\u0016\u0000"+ - "\u0000\u0d1c\u0d1d\u0007\u0006\u0000\u0000\u0d1d\u0d1e\u0007\u0006\u0000"+ - "\u0000\u0d1e\u0d1f\u0007\t\u0000\u0000\u0d1f\u022e\u0001\u0000\u0000\u0000"+ - "\u0d20\u0d21\u0007\u0013\u0000\u0000\u0d21\u0d22\u0007\u0012\u0000\u0000"+ - "\u0d22\u0d23\u0007\u001e\u0000\u0000\u0d23\u0d24\u0007\n\u0000\u0000\u0d24"+ - "\u0d25\u0007\u000e\u0000\u0000\u0d25\u0d26\u0007\u0010\u0000\u0000\u0d26"+ - "\u0230\u0001\u0000\u0000\u0000\u0d27\u0d28\u0007\u0013\u0000\u0000\u0d28"+ - "\u0d29\u0007\u0019\u0000\u0000\u0d29\u0232\u0001\u0000\u0000\u0000\u0d2a"+ - "\u0d2b\u0007\u0013\u0000\u0000\u0d2b\u0d2c\u0007\u0019\u0000\u0000\u0d2c"+ - "\u0d2d\u0007\u0019\u0000\u0000\u0d2d\u0234\u0001\u0000\u0000\u0000\u0d2e"+ - "\u0d2f\u0007\u0013\u0000\u0000\u0d2f\u0d30\u0007\u0011\u0000\u0000\u0d30"+ - "\u0d31\u0007\f\u0000\u0000\u0d31\u0d32\u0007\t\u0000\u0000\u0d32\u0236"+ - "\u0001\u0000\u0000\u0000\u0d33\u0d34\u0007\u0013\u0000\u0000\u0d34\u0d35"+ - "\u0007\u0018\u0000\u0000\u0d35\u0d36\u0007\n\u0000\u0000\u0d36\u0d37\u0007"+ - "\r\u0000\u0000\u0d37\u0d38\u0007\u0005\u0000\u0000\u0d38\u0d39\u0007\u0010"+ - "\u0000\u0000\u0d39\u0d3a\u0007\u0013\u0000\u0000\u0d3a\u0d3b\u0007\r\u0000"+ - "\u0000\u0d3b\u0238\u0001\u0000\u0000\u0000\u0d3c\u0d3d\u0007\u0013\u0000"+ - "\u0000\u0d3d\u0d3e\u0007\u0018\u0000\u0000\u0d3e\u0d3f\u0007\u0010\u0000"+ - "\u0000\u0d3f\u0d40\u0007\u0011\u0000\u0000\u0d40\u0d41\u0007\u0013\u0000"+ - "\u0000\u0d41\u0d42\u0007\u0007\u0000\u0000\u0d42\u023a\u0001\u0000\u0000"+ - "\u0000\u0d43\u0d44\u0007\u0013\u0000\u0000\u0d44\u0d45\u0007\u0018\u0000"+ - "\u0000\u0d45\u0d46\u0007\u0010\u0000\u0000\u0d46\u0d47\u0007\u0011\u0000"+ - "\u0000\u0d47\u0d48\u0007\u0013\u0000\u0000\u0d48\u0d49\u0007\u0007\u0000"+ - "\u0000\u0d49\u0d4a\u0007\t\u0000\u0000\u0d4a\u023c\u0001\u0000\u0000\u0000"+ - "\u0d4b\u0d4c\u0007\u0013\u0000\u0000\u0d4c\u0d4d\u0007\u001c\u0000\u0000"+ - "\u0d4d\u0d4e\u0007\u0007\u0000\u0000\u0d4e\u0d4f\u0007\n\u0000\u0000\u0d4f"+ - "\u0d50\u0007\f\u0000\u0000\u0d50\u023e\u0001\u0000\u0000\u0000\u0d51\u0d52"+ - "\u0007\u0013\u0000\u0000\u0d52\u0d53\u0007\u001c\u0000\u0000\u0d53\u0d54"+ - "\u0007\u0007\u0000\u0000\u0d54\u0d55\u0007\n\u0000\u0000\u0d55\u0d56\u0007"+ - "\r\u0000\u0000\u0d56\u0240\u0001\u0000\u0000\u0000\u0d57\u0d58\u0007\u0018"+ - "\u0000\u0000\u0d58\u0d59\u0007\u0005\u0000\u0000\u0d59\u0d5a\u0007\r\u0000"+ - "\u0000\u0d5a\u0d5b\u0007\t\u0000\u0000\u0d5b\u0d5c\u0007\n\u0000\u0000"+ - "\u0d5c\u0d5d\u0007\r\u0000\u0000\u0d5d\u0242\u0001\u0000\u0000\u0000\u0d5e"+ - "\u0d5f\u0007\u0018\u0000\u0000\u0d5f\u0d60\u0007\u0005\u0000\u0000\u0d60"+ - "\u0d61\u0007\r\u0000\u0000\u0d61\u0d62\u0007\u0010\u0000\u0000\u0d62\u0d63"+ - "\u0007\u0011\u0000\u0000\u0d63\u0d64\u0007\u0005\u0000\u0000\u0d64\u0d65"+ - "\u0007\u0006\u0000\u0000\u0d65\u0244\u0001\u0000\u0000\u0000\u0d66\u0d67"+ - "\u0007\u0018\u0000\u0000\u0d67\u0d68\u0007\u0005\u0000\u0000\u0d68\u0d69"+ - "\u0007\r\u0000\u0000\u0d69\u0d6a\u0007\u0010\u0000\u0000\u0d6a\u0d6b\u0007"+ - "\u0011\u0000\u0000\u0d6b\u0d6c\u0007\u0010\u0000\u0000\u0d6c\u0d6d\u0007"+ - "\u0011\u0000\u0000\u0d6d\u0d6e\u0007\u0013\u0000\u0000\u0d6e\u0d6f\u0007"+ - "\u0007\u0000\u0000\u0d6f\u0246\u0001\u0000\u0000\u0000\u0d70\u0d71\u0007"+ - "\u0018\u0000\u0000\u0d71\u0d72\u0007\u0005\u0000\u0000\u0d72\u0d73\u0007"+ - "\t\u0000\u0000\u0d73\u0d74\u0007\t\u0000\u0000\u0d74\u0d75\u0007\u0011"+ - "\u0000\u0000\u0d75\u0d76\u0007\u0007\u0000\u0000\u0d76\u0d77\u0007\u0017"+ - "\u0000\u0000\u0d77\u0248\u0001\u0000\u0000\u0000\u0d78\u0d79\u0007\u0018"+ - "\u0000\u0000\u0d79\u0d7a\u0007\u0005\u0000\u0000\u0d7a\u0d7b\u0007\t\u0000"+ - "\u0000\u0d7b\u0d7c\u0007\t\u0000\u0000\u0d7c\u0d7d\u0007\u001c\u0000\u0000"+ - "\u0d7d\u0d7e\u0007\u0013\u0000\u0000\u0d7e\u0d7f\u0007\r\u0000\u0000\u0d7f"+ - "\u0d80\u0007\f\u0000\u0000\u0d80\u024a\u0001\u0000\u0000\u0000\u0d81\u0d82"+ - "\u0007\u0018\u0000\u0000\u0d82\u0d83\u0007\u0006\u0000\u0000\u0d83\u0d84"+ - "\u0007\u0005\u0000\u0000\u0d84\u0d85\u0007\u0007\u0000\u0000\u0d85\u0d86"+ - "\u0007\t\u0000\u0000\u0d86\u024c\u0001\u0000\u0000\u0000\u0d87\u0d88\u0007"+ - "\u0018\u0000\u0000\u0d88\u0d89\u0007\r\u0000\u0000\u0d89\u0d8a\u0007\n"+ - "\u0000\u0000\u0d8a\u0d8b\u0007\u000e\u0000\u0000\u0d8b\u0d8c\u0007\n\u0000"+ - "\u0000\u0d8c\u0d8d\u0007\f\u0000\u0000\u0d8d\u0d8e\u0007\u0011\u0000\u0000"+ - "\u0d8e\u0d8f\u0007\u0007\u0000\u0000\u0d8f\u0d90\u0007\u0017\u0000\u0000"+ - "\u0d90\u024e\u0001\u0000\u0000\u0000\u0d91\u0d92\u0007\u0018\u0000\u0000"+ - "\u0d92\u0d93\u0007\r\u0000\u0000\u0d93\u0d94\u0007\n\u0000\u0000\u0d94"+ - "\u0d95\u0007\u0018\u0000\u0000\u0d95\u0d96\u0007\u0005\u0000\u0000\u0d96"+ - "\u0d97\u0007\r\u0000\u0000\u0d97\u0d98\u0007\n\u0000\u0000\u0d98\u0250"+ - "\u0001\u0000\u0000\u0000\u0d99\u0d9a\u0007\u0018\u0000\u0000\u0d9a\u0d9b"+ - "\u0007\r\u0000\u0000\u0d9b\u0d9c\u0007\n\u0000\u0000\u0d9c\u0d9d\u0007"+ - "\u0018\u0000\u0000\u0d9d\u0d9e\u0007\u0005\u0000\u0000\u0d9e\u0d9f\u0007"+ - "\r\u0000\u0000\u0d9f\u0da0\u0007\n\u0000\u0000\u0da0\u0da1\u0007\f\u0000"+ - "\u0000\u0da1\u0252\u0001\u0000\u0000\u0000\u0da2\u0da3\u0007\u0018\u0000"+ - "\u0000\u0da3\u0da4\u0007\r\u0000\u0000\u0da4\u0da5\u0007\n\u0000\u0000"+ - "\u0da5\u0da6\u0007\t\u0000\u0000\u0da6\u0da7\u0007\n\u0000\u0000\u0da7"+ - "\u0da8\u0007\r\u0000\u0000\u0da8\u0da9\u0007\u001b\u0000\u0000\u0da9\u0daa"+ - "\u0007\n\u0000\u0000\u0daa\u0254\u0001\u0000\u0000\u0000\u0dab\u0dac\u0007"+ - "\u0018\u0000\u0000\u0dac\u0dad\u0007\r\u0000\u0000\u0dad\u0dae\u0007\u0011"+ - "\u0000\u0000\u0dae\u0daf\u0007\u0013\u0000\u0000\u0daf\u0db0\u0007\r\u0000"+ - "\u0000\u0db0\u0256\u0001\u0000\u0000\u0000\u0db1\u0db2\u0007\u0018\u0000"+ - "\u0000\u0db2\u0db3\u0007\r\u0000\u0000\u0db3\u0db4\u0007\u0011\u0000\u0000"+ - "\u0db4\u0db5\u0007\u001b\u0000\u0000\u0db5\u0db6\u0007\u0011\u0000\u0000"+ - "\u0db6\u0db7\u0007\u0006\u0000\u0000\u0db7\u0db8\u0007\n\u0000\u0000\u0db8"+ - "\u0db9\u0007\u0017\u0000\u0000\u0db9\u0dba\u0007\n\u0000\u0000\u0dba\u0dbb"+ - "\u0007\t\u0000\u0000\u0dbb\u0258\u0001\u0000\u0000\u0000\u0dbc\u0dbd\u0007"+ - "\u0018\u0000\u0000\u0dbd\u0dbe\u0007\r\u0000\u0000\u0dbe\u0dbf\u0007\u0013"+ - "\u0000\u0000\u0dbf\u0dc0\u0007\u000e\u0000\u0000\u0dc0\u0dc1\u0007\n\u0000"+ - "\u0000\u0dc1\u0dc2\u0007\f\u0000\u0000\u0dc2\u0dc3\u0007\u0016\u0000\u0000"+ - "\u0dc3\u0dc4\u0007\r\u0000\u0000\u0dc4\u0dc5\u0007\u0005\u0000\u0000\u0dc5"+ - "\u0dc6\u0007\u0006\u0000\u0000\u0dc6\u025a\u0001\u0000\u0000\u0000\u0dc7"+ - "\u0dc8\u0007\u0018\u0000\u0000\u0dc8\u0dc9\u0007\r\u0000\u0000\u0dc9\u0dca"+ - "\u0007\u0013\u0000\u0000\u0dca\u0dcb\u0007\u000e\u0000\u0000\u0dcb\u0dcc"+ - "\u0007\n\u0000\u0000\u0dcc\u0dcd\u0007\f\u0000\u0000\u0dcd\u0dce\u0007"+ - "\u0016\u0000\u0000\u0dce\u0dcf\u0007\r\u0000\u0000\u0dcf\u0dd0\u0007\n"+ - "\u0000\u0000\u0dd0\u025c\u0001\u0000\u0000\u0000\u0dd1\u0dd2\u0007\u0018"+ - "\u0000\u0000\u0dd2\u0dd3\u0007\r\u0000\u0000\u0dd3\u0dd4\u0007\u0013\u0000"+ - "\u0000\u0dd4\u0dd5\u0007\u0017\u0000\u0000\u0dd5\u0dd6\u0007\r\u0000\u0000"+ - "\u0dd6\u0dd7\u0007\u0005\u0000\u0000\u0dd7\u0dd8\u0007\u000f\u0000\u0000"+ - "\u0dd8\u025e\u0001\u0000\u0000\u0000\u0dd9\u0dda\u0007\u001d\u0000\u0000"+ - "\u0dda\u0ddb\u0007\u0016\u0000\u0000\u0ddb\u0ddc\u0007\u0013\u0000\u0000"+ - "\u0ddc\u0ddd\u0007\u0010\u0000\u0000\u0ddd\u0dde\u0007\n\u0000\u0000\u0dde"+ - "\u0260\u0001\u0000\u0000\u0000\u0ddf\u0de0\u0007\r\u0000\u0000\u0de0\u0de1"+ - "\u0007\u0005\u0000\u0000\u0de1\u0de2\u0007\u0007\u0000\u0000\u0de2\u0de3"+ - "\u0007\u0017\u0000\u0000\u0de3\u0de4\u0007\n\u0000\u0000\u0de4\u0262\u0001"+ - "\u0000\u0000\u0000\u0de5\u0de6\u0007\r\u0000\u0000\u0de6\u0de7\u0007\n"+ - "\u0000\u0000\u0de7\u0de8\u0007\u0005\u0000\u0000\u0de8\u0de9\u0007\f\u0000"+ - "\u0000\u0de9\u0264\u0001\u0000\u0000\u0000\u0dea\u0deb\u0007\r\u0000\u0000"+ - "\u0deb\u0dec\u0007\n\u0000\u0000\u0dec\u0ded\u0007\u0005\u0000\u0000\u0ded"+ - "\u0dee\u0007\t\u0000\u0000\u0dee\u0def\u0007\t\u0000\u0000\u0def\u0df0"+ - "\u0007\u0011\u0000\u0000\u0df0\u0df1\u0007\u0017\u0000\u0000\u0df1\u0df2"+ - "\u0007\u0007\u0000\u0000\u0df2\u0266\u0001\u0000\u0000\u0000\u0df3\u0df4"+ - "\u0007\r\u0000\u0000\u0df4\u0df5\u0007\n\u0000\u0000\u0df5\u0df6\u0007"+ - "\u000e\u0000\u0000\u0df6\u0df7\u0007\u0014\u0000\u0000\u0df7\u0df8\u0007"+ - "\n\u0000\u0000\u0df8\u0df9\u0007\u000e\u0000\u0000\u0df9\u0dfa\u0007\u0015"+ - "\u0000\u0000\u0dfa\u0268\u0001\u0000\u0000\u0000\u0dfb\u0dfc\u0007\r\u0000"+ - "\u0000\u0dfc\u0dfd\u0007\n\u0000\u0000\u0dfd\u0dfe\u0007\u000e\u0000\u0000"+ - "\u0dfe\u0dff\u0007\u0016\u0000\u0000\u0dff\u0e00\u0007\r\u0000\u0000\u0e00"+ - "\u0e01\u0007\t\u0000\u0000\u0e01\u0e02\u0007\u0011\u0000\u0000\u0e02\u0e03"+ - "\u0007\u001b\u0000\u0000\u0e03\u0e04\u0007\n\u0000\u0000\u0e04\u026a\u0001"+ - "\u0000\u0000\u0000\u0e05\u0e06\u0007\r\u0000\u0000\u0e06\u0e07\u0007\n"+ - "\u0000\u0000\u0e07\u0e08\u0007\u0019\u0000\u0000\u0e08\u026c\u0001\u0000"+ - "\u0000\u0000\u0e09\u0e0a\u0007\r\u0000\u0000\u0e0a\u0e0b\u0007\n\u0000"+ - "\u0000\u0e0b\u0e0c\u0007\u0019\u0000\u0000\u0e0c\u0e0d\u0007\r\u0000\u0000"+ - "\u0e0d\u0e0e\u0007\n\u0000\u0000\u0e0e\u0e0f\u0007\t\u0000\u0000\u0e0f"+ - "\u0e10\u0007\u0014\u0000\u0000\u0e10\u026e\u0001\u0000\u0000\u0000\u0e11"+ - "\u0e12\u0007\r\u0000\u0000\u0e12\u0e13\u0007\n\u0000\u0000\u0e13\u0e14"+ - "\u0007\u0011\u0000\u0000\u0e14\u0e15\u0007\u0007\u0000\u0000\u0e15\u0e16"+ - "\u0007\f\u0000\u0000\u0e16\u0e17\u0007\n\u0000\u0000\u0e17\u0e18\u0007"+ - "\u001a\u0000\u0000\u0e18\u0270\u0001\u0000\u0000\u0000\u0e19\u0e1a\u0007"+ - "\r\u0000\u0000\u0e1a\u0e1b\u0007\n\u0000\u0000\u0e1b\u0e1c\u0007\u0006"+ - "\u0000\u0000\u0e1c\u0e1d\u0007\u0005\u0000\u0000\u0e1d\u0e1e\u0007\u0010"+ - "\u0000\u0000\u0e1e\u0e1f\u0007\u0011\u0000\u0000\u0e1f\u0e20\u0007\u001b"+ - "\u0000\u0000\u0e20\u0e21\u0007\n\u0000\u0000\u0e21\u0272\u0001\u0000\u0000"+ - "\u0000\u0e22\u0e23\u0007\r\u0000\u0000\u0e23\u0e24\u0007\n\u0000\u0000"+ - "\u0e24\u0e25\u0007\u0006\u0000\u0000\u0e25\u0e26\u0007\n\u0000\u0000\u0e26"+ - "\u0e27\u0007\u0005\u0000\u0000\u0e27\u0e28\u0007\t\u0000\u0000\u0e28\u0e29"+ - "\u0007\n\u0000\u0000\u0e29\u0274\u0001\u0000\u0000\u0000\u0e2a\u0e2b\u0007"+ - "\r\u0000\u0000\u0e2b\u0e2c\u0007\n\u0000\u0000\u0e2c\u0e2d\u0007\u0007"+ - "\u0000\u0000\u0e2d\u0e2e\u0007\u0005\u0000\u0000\u0e2e\u0e2f\u0007\u000f"+ - "\u0000\u0000\u0e2f\u0e30\u0007\n\u0000\u0000\u0e30\u0276\u0001\u0000\u0000"+ - "\u0000\u0e31\u0e32\u0007\r\u0000\u0000\u0e32\u0e33\u0007\n\u0000\u0000"+ - "\u0e33\u0e34\u0007\u0018\u0000\u0000\u0e34\u0e35\u0007\n\u0000\u0000\u0e35"+ - "\u0e36\u0007\u0005\u0000\u0000\u0e36\u0e37\u0007\u0010\u0000\u0000\u0e37"+ - "\u0e38\u0007\u0005\u0000\u0000\u0e38\u0e39\u0007\u0012\u0000\u0000\u0e39"+ - "\u0e3a\u0007\u0006\u0000\u0000\u0e3a\u0e3b\u0007\n\u0000\u0000\u0e3b\u0278"+ - "\u0001\u0000\u0000\u0000\u0e3c\u0e3d\u0007\r\u0000\u0000\u0e3d\u0e3e\u0007"+ - "\n\u0000\u0000\u0e3e\u0e3f\u0007\u0018\u0000\u0000\u0e3f\u0e40\u0007\u0006"+ - "\u0000\u0000\u0e40\u0e41\u0007\u0005\u0000\u0000\u0e41\u0e42\u0007\u000e"+ - "\u0000\u0000\u0e42\u0e43\u0007\n\u0000\u0000\u0e43\u027a\u0001\u0000\u0000"+ - "\u0000\u0e44\u0e45\u0007\r\u0000\u0000\u0e45\u0e46\u0007\n\u0000\u0000"+ - "\u0e46\u0e47\u0007\u0018\u0000\u0000\u0e47\u0e48\u0007\u0006\u0000\u0000"+ - "\u0e48\u0e49\u0007\u0011\u0000\u0000\u0e49\u0e4a\u0007\u000e\u0000\u0000"+ - "\u0e4a\u0e4b\u0007\u0005\u0000\u0000\u0e4b\u027c\u0001\u0000\u0000\u0000"+ - "\u0e4c\u0e4d\u0007\r\u0000\u0000\u0e4d\u0e4e\u0007\n\u0000\u0000\u0e4e"+ - "\u0e4f\u0007\t\u0000\u0000\u0e4f\u0e50\u0007\n\u0000\u0000\u0e50\u0e51"+ - "\u0007\u0010\u0000\u0000\u0e51\u027e\u0001\u0000\u0000\u0000\u0e52\u0e53"+ - "\u0007\r\u0000\u0000\u0e53\u0e54\u0007\n\u0000\u0000\u0e54\u0e55\u0007"+ - "\t\u0000\u0000\u0e55\u0e56\u0007\u0010\u0000\u0000\u0e56\u0e57\u0007\u0005"+ - "\u0000\u0000\u0e57\u0e58\u0007\r\u0000\u0000\u0e58\u0e59\u0007\u0010\u0000"+ - "\u0000\u0e59\u0280\u0001\u0000\u0000\u0000\u0e5a\u0e5b\u0007\r\u0000\u0000"+ - "\u0e5b\u0e5c\u0007\n\u0000\u0000\u0e5c\u0e5d\u0007\t\u0000\u0000\u0e5d"+ - "\u0e5e\u0007\u0010\u0000\u0000\u0e5e\u0e5f\u0007\r\u0000\u0000\u0e5f\u0e60"+ - "\u0007\u0011\u0000\u0000\u0e60\u0e61\u0007\u000e\u0000\u0000\u0e61\u0e62"+ - "\u0007\u0010\u0000\u0000\u0e62\u0282\u0001\u0000\u0000\u0000\u0e63\u0e64"+ - "\u0007\r\u0000\u0000\u0e64\u0e65\u0007\n\u0000\u0000\u0e65\u0e66\u0007"+ - "\u0010\u0000\u0000\u0e66\u0e67\u0007\u0016\u0000\u0000\u0e67\u0e68\u0007"+ - "\r\u0000\u0000\u0e68\u0e69\u0007\u0007\u0000\u0000\u0e69\u0e6a\u0007\t"+ - "\u0000\u0000\u0e6a\u0284\u0001\u0000\u0000\u0000\u0e6b\u0e6c\u0007\r\u0000"+ - "\u0000\u0e6c\u0e6d\u0007\n\u0000\u0000\u0e6d\u0e6e\u0007\u001b\u0000\u0000"+ - "\u0e6e\u0e6f\u0007\u0013\u0000\u0000\u0e6f\u0e70\u0007\u0015\u0000\u0000"+ - "\u0e70\u0e71\u0007\n\u0000\u0000\u0e71\u0286\u0001\u0000\u0000\u0000\u0e72"+ - "\u0e73\u0007\r\u0000\u0000\u0e73\u0e74\u0007\u0013\u0000\u0000\u0e74\u0e75"+ - "\u0007\u0006\u0000\u0000\u0e75\u0e76\u0007\n\u0000\u0000\u0e76\u0288\u0001"+ - "\u0000\u0000\u0000\u0e77\u0e78\u0007\r\u0000\u0000\u0e78\u0e79\u0007\u0013"+ - "\u0000\u0000\u0e79\u0e7a\u0007\u0006\u0000\u0000\u0e7a\u0e7b\u0007\u0006"+ - "\u0000\u0000\u0e7b\u0e7c\u0007\u0012\u0000\u0000\u0e7c\u0e7d\u0007\u0005"+ - "\u0000\u0000\u0e7d\u0e7e\u0007\u000e\u0000\u0000\u0e7e\u0e7f\u0007\u0015"+ - "\u0000\u0000\u0e7f\u028a\u0001\u0000\u0000\u0000\u0e80\u0e81\u0007\r\u0000"+ - "\u0000\u0e81\u0e82\u0007\u0013\u0000\u0000\u0e82\u0e83\u0007\u001c\u0000"+ - "\u0000\u0e83\u0e84\u0007\t\u0000\u0000\u0e84\u028c\u0001\u0000\u0000\u0000"+ - "\u0e85\u0e86\u0007\r\u0000\u0000\u0e86\u0e87\u0007\u0016\u0000\u0000\u0e87"+ - "\u0e88\u0007\u0006\u0000\u0000\u0e88\u0e89\u0007\n\u0000\u0000\u0e89\u028e"+ - "\u0001\u0000\u0000\u0000\u0e8a\u0e8b\u0007\t\u0000\u0000\u0e8b\u0e8c\u0007"+ - "\u0005\u0000\u0000\u0e8c\u0e8d\u0007\u001b\u0000\u0000\u0e8d\u0e8e\u0007"+ - "\n\u0000\u0000\u0e8e\u0e8f\u0007\u0018\u0000\u0000\u0e8f\u0e90\u0007\u0013"+ - "\u0000\u0000\u0e90\u0e91\u0007\u0011\u0000\u0000\u0e91\u0e92\u0007\u0007"+ - "\u0000\u0000\u0e92\u0e93\u0007\u0010\u0000\u0000\u0e93\u0290\u0001\u0000"+ - "\u0000\u0000\u0e94\u0e95\u0007\t\u0000\u0000\u0e95\u0e96\u0007\u000e\u0000"+ - "\u0000\u0e96\u0e97\u0007\u0014\u0000\u0000\u0e97\u0e98\u0007\n\u0000\u0000"+ - "\u0e98\u0e99\u0007\u000f\u0000\u0000\u0e99\u0e9a\u0007\u0005\u0000\u0000"+ - "\u0e9a\u0292\u0001\u0000\u0000\u0000\u0e9b\u0e9c\u0007\t\u0000\u0000\u0e9c"+ - "\u0e9d\u0007\u000e\u0000\u0000\u0e9d\u0e9e\u0007\r\u0000\u0000\u0e9e\u0e9f"+ - "\u0007\u0013\u0000\u0000\u0e9f\u0ea0\u0007\u0006\u0000\u0000\u0ea0\u0ea1"+ - "\u0007\u0006\u0000\u0000\u0ea1\u0294\u0001\u0000\u0000\u0000\u0ea2\u0ea3"+ - "\u0007\t\u0000\u0000\u0ea3\u0ea4\u0007\n\u0000\u0000\u0ea4\u0ea5\u0007"+ - "\u0005\u0000\u0000\u0ea5\u0ea6\u0007\r\u0000\u0000\u0ea6\u0ea7\u0007\u000e"+ - "\u0000\u0000\u0ea7\u0ea8\u0007\u0014\u0000\u0000\u0ea8\u0296\u0001\u0000"+ - "\u0000\u0000\u0ea9\u0eaa\u0007\t\u0000\u0000\u0eaa\u0eab\u0007\n\u0000"+ - "\u0000\u0eab\u0eac\u0007\u000e\u0000\u0000\u0eac\u0ead\u0007\u0013\u0000"+ - "\u0000\u0ead\u0eae\u0007\u0007\u0000\u0000\u0eae\u0eaf\u0007\f\u0000\u0000"+ - "\u0eaf\u0298\u0001\u0000\u0000\u0000\u0eb0\u0eb1\u0007\t\u0000\u0000\u0eb1"+ - "\u0eb2\u0007\n\u0000\u0000\u0eb2\u0eb3\u0007\u000e\u0000\u0000\u0eb3\u0eb4"+ - "\u0007\u0016\u0000\u0000\u0eb4\u0eb5\u0007\r\u0000\u0000\u0eb5\u0eb6\u0007"+ - "\u0011\u0000\u0000\u0eb6\u0eb7\u0007\u0010\u0000\u0000\u0eb7\u0eb8\u0007"+ - "\b\u0000\u0000\u0eb8\u029a\u0001\u0000\u0000\u0000\u0eb9\u0eba\u0007\t"+ - "\u0000\u0000\u0eba\u0ebb\u0007\n\u0000\u0000\u0ebb\u0ebc\u0007\u001d\u0000"+ - "\u0000\u0ebc\u0ebd\u0007\u0016\u0000\u0000\u0ebd\u0ebe\u0007\n\u0000\u0000"+ - "\u0ebe\u0ebf\u0007\u0007\u0000\u0000\u0ebf\u0ec0\u0007\u000e\u0000\u0000"+ - "\u0ec0\u0ec1\u0007\n\u0000\u0000\u0ec1\u029c\u0001\u0000\u0000\u0000\u0ec2"+ - "\u0ec3\u0007\t\u0000\u0000\u0ec3\u0ec4\u0007\n\u0000\u0000\u0ec4\u0ec5"+ - "\u0007\u001d\u0000\u0000\u0ec5\u0ec6\u0007\u0016\u0000\u0000\u0ec6\u0ec7"+ - "\u0007\n\u0000\u0000\u0ec7\u0ec8\u0007\u0007\u0000\u0000\u0ec8\u0ec9\u0007"+ - "\u000e\u0000\u0000\u0ec9\u0eca\u0007\n\u0000\u0000\u0eca\u0ecb\u0007\t"+ - "\u0000\u0000\u0ecb\u029e\u0001\u0000\u0000\u0000\u0ecc\u0ecd\u0007\t\u0000"+ - "\u0000\u0ecd\u0ece\u0007\n\u0000\u0000\u0ece\u0ecf\u0007\r\u0000\u0000"+ - "\u0ecf\u0ed0\u0007\u0011\u0000\u0000\u0ed0\u0ed1\u0007\u0005\u0000\u0000"+ - "\u0ed1\u0ed2\u0007\u0006\u0000\u0000\u0ed2\u0ed3\u0007\u0011\u0000\u0000"+ - "\u0ed3\u0ed4\u0007\u000b\u0000\u0000\u0ed4\u0ed5\u0007\u0005\u0000\u0000"+ - "\u0ed5\u0ed6\u0007\u0012\u0000\u0000\u0ed6\u0ed7\u0007\u0006\u0000\u0000"+ - "\u0ed7\u0ed8\u0007\n\u0000\u0000\u0ed8\u02a0\u0001\u0000\u0000\u0000\u0ed9"+ - "\u0eda\u0007\t\u0000\u0000\u0eda\u0edb\u0007\n\u0000\u0000\u0edb\u0edc"+ - "\u0007\r\u0000\u0000\u0edc\u0edd\u0007\u001b\u0000\u0000\u0edd\u0ede\u0007"+ - "\n\u0000\u0000\u0ede\u0edf\u0007\r\u0000\u0000\u0edf\u02a2\u0001\u0000"+ - "\u0000\u0000\u0ee0\u0ee1\u0007\t\u0000\u0000\u0ee1\u0ee2\u0007\n\u0000"+ - "\u0000\u0ee2\u0ee3\u0007\t\u0000\u0000\u0ee3\u0ee4\u0007\t\u0000\u0000"+ - "\u0ee4\u0ee5\u0007\u0011\u0000\u0000\u0ee5\u0ee6\u0007\u0013\u0000\u0000"+ - "\u0ee6\u0ee7\u0007\u0007\u0000\u0000\u0ee7\u02a4\u0001\u0000\u0000\u0000"+ - "\u0ee8\u0ee9\u0007\t\u0000\u0000\u0ee9\u0eea\u0007\n\u0000\u0000\u0eea"+ - "\u0eeb\u0007\u0010\u0000\u0000\u0eeb\u02a6\u0001\u0000\u0000\u0000\u0eec"+ - "\u0eed\u0007\t\u0000\u0000\u0eed\u0eee\u0007\u0014\u0000\u0000\u0eee\u0eef"+ - "\u0007\u0005\u0000\u0000\u0eef\u0ef0\u0007\r\u0000\u0000\u0ef0\u0ef1\u0007"+ - "\n\u0000\u0000\u0ef1\u02a8\u0001\u0000\u0000\u0000\u0ef2\u0ef3\u0007\t"+ - "\u0000\u0000\u0ef3\u0ef4\u0007\u0014\u0000\u0000\u0ef4\u0ef5\u0007\u0013"+ - "\u0000\u0000\u0ef5\u0ef6\u0007\u001c\u0000\u0000\u0ef6\u02aa\u0001\u0000"+ - "\u0000\u0000\u0ef7\u0ef8\u0007\t\u0000\u0000\u0ef8\u0ef9\u0007\u0011\u0000"+ - "\u0000\u0ef9\u0efa\u0007\u000f\u0000\u0000\u0efa\u0efb\u0007\u0018\u0000"+ - "\u0000\u0efb\u0efc\u0007\u0006\u0000\u0000\u0efc\u0efd\u0007\n\u0000\u0000"+ - "\u0efd\u02ac\u0001\u0000\u0000\u0000\u0efe\u0eff\u0007\t\u0000\u0000\u0eff"+ - "\u0f00\u0007\u0007\u0000\u0000\u0f00\u0f01\u0007\u0005\u0000\u0000\u0f01"+ - "\u0f02\u0007\u0018\u0000\u0000\u0f02\u0f03\u0007\t\u0000\u0000\u0f03\u0f04"+ - "\u0007\u0014\u0000\u0000\u0f04\u0f05\u0007\u0013\u0000\u0000\u0f05\u0f06"+ - "\u0007\u0010\u0000\u0000\u0f06\u02ae\u0001\u0000\u0000\u0000\u0f07\u0f08"+ - "\u0007\t\u0000\u0000\u0f08\u0f09\u0007\u0010\u0000\u0000\u0f09\u0f0a\u0007"+ - "\u0005\u0000\u0000\u0f0a\u0f0b\u0007\u0012\u0000\u0000\u0f0b\u0f0c\u0007"+ - "\u0006\u0000\u0000\u0f0c\u0f0d\u0007\n\u0000\u0000\u0f0d\u02b0\u0001\u0000"+ - "\u0000\u0000\u0f0e\u0f0f\u0007\t\u0000\u0000\u0f0f\u0f10\u0007\u0010\u0000"+ - "\u0000\u0f10\u0f11\u0007\u0005\u0000\u0000\u0f11\u0f12\u0007\u0007\u0000"+ - "\u0000\u0f12\u0f13\u0007\f\u0000\u0000\u0f13\u0f14\u0007\u0005\u0000\u0000"+ - "\u0f14\u0f15\u0007\u0006\u0000\u0000\u0f15\u0f16\u0007\u0013\u0000\u0000"+ - "\u0f16\u0f17\u0007\u0007\u0000\u0000\u0f17\u0f18\u0007\n\u0000\u0000\u0f18"+ - "\u02b2\u0001\u0000\u0000\u0000\u0f19\u0f1a\u0007\t\u0000\u0000\u0f1a\u0f1b"+ - "\u0007\u0010\u0000\u0000\u0f1b\u0f1c\u0007\u0005\u0000\u0000\u0f1c\u0f1d"+ - "\u0007\r\u0000\u0000\u0f1d\u0f1e\u0007\u0010\u0000\u0000\u0f1e\u02b4\u0001"+ - "\u0000\u0000\u0000\u0f1f\u0f20\u0007\t\u0000\u0000\u0f20\u0f21\u0007\u0010"+ - "\u0000\u0000\u0f21\u0f22\u0007\u0005\u0000\u0000\u0f22\u0f23\u0007\u0010"+ - "\u0000\u0000\u0f23\u0f24\u0007\n\u0000\u0000\u0f24\u0f25\u0007\u000f\u0000"+ - "\u0000\u0f25\u0f26\u0007\n\u0000\u0000\u0f26\u0f27\u0007\u0007\u0000\u0000"+ - "\u0f27\u0f28\u0007\u0010\u0000\u0000\u0f28\u02b6\u0001\u0000\u0000\u0000"+ - "\u0f29\u0f2a\u0007\t\u0000\u0000\u0f2a\u0f2b\u0007\u0010\u0000\u0000\u0f2b"+ - "\u0f2c\u0007\u0005\u0000\u0000\u0f2c\u0f2d\u0007\u0010\u0000\u0000\u0f2d"+ - "\u0f2e\u0007\u0011\u0000\u0000\u0f2e\u0f2f\u0007\t\u0000\u0000\u0f2f\u0f30"+ - "\u0007\u0010\u0000\u0000\u0f30\u0f31\u0007\u0011\u0000\u0000\u0f31\u0f32"+ - "\u0007\u000e\u0000\u0000\u0f32\u0f33\u0007\t\u0000\u0000\u0f33\u02b8\u0001"+ - "\u0000\u0000\u0000\u0f34\u0f35\u0007\t\u0000\u0000\u0f35\u0f36\u0007\u0010"+ - "\u0000\u0000\u0f36\u0f37\u0007\f\u0000\u0000\u0f37\u0f38\u0007\u0011\u0000"+ - "\u0000\u0f38\u0f39\u0007\u0007\u0000\u0000\u0f39\u02ba\u0001\u0000\u0000"+ - "\u0000\u0f3a\u0f3b\u0007\t\u0000\u0000\u0f3b\u0f3c\u0007\u0010\u0000\u0000"+ - "\u0f3c\u0f3d\u0007\f\u0000\u0000\u0f3d\u0f3e\u0007\u0013\u0000\u0000\u0f3e"+ - "\u0f3f\u0007\u0016\u0000\u0000\u0f3f\u0f40\u0007\u0010\u0000\u0000\u0f40"+ - "\u02bc\u0001\u0000\u0000\u0000\u0f41\u0f42\u0007\t\u0000\u0000\u0f42\u0f43"+ - "\u0007\u0010\u0000\u0000\u0f43\u0f44\u0007\u0013\u0000\u0000\u0f44\u0f45"+ - "\u0007\r\u0000\u0000\u0f45\u0f46\u0007\u0005\u0000\u0000\u0f46\u0f47\u0007"+ - "\u0017\u0000\u0000\u0f47\u0f48\u0007\n\u0000\u0000\u0f48\u02be\u0001\u0000"+ - "\u0000\u0000\u0f49\u0f4a\u0007\t\u0000\u0000\u0f4a\u0f4b\u0007\u0010\u0000"+ - "\u0000\u0f4b\u0f4c\u0007\r\u0000\u0000\u0f4c\u0f4d\u0007\u0011\u0000\u0000"+ - "\u0f4d\u0f4e\u0007\u000e\u0000\u0000\u0f4e\u0f4f\u0007\u0010\u0000\u0000"+ - "\u0f4f\u02c0\u0001\u0000\u0000\u0000\u0f50\u0f51\u0007\t\u0000\u0000\u0f51"+ - "\u0f52\u0007\u0010\u0000\u0000\u0f52\u0f53\u0007\r\u0000\u0000\u0f53\u0f54"+ - "\u0007\u0011\u0000\u0000\u0f54\u0f55\u0007\u0018\u0000\u0000\u0f55\u02c2"+ - "\u0001\u0000\u0000\u0000\u0f56\u0f57\u0007\t\u0000\u0000\u0f57\u0f58\u0007"+ - "\b\u0000\u0000\u0f58\u0f59\u0007\t\u0000\u0000\u0f59\u0f5a\u0007\u0011"+ - "\u0000\u0000\u0f5a\u0f5b\u0007\f\u0000\u0000\u0f5b\u02c4\u0001\u0000\u0000"+ - "\u0000\u0f5c\u0f5d\u0007\t\u0000\u0000\u0f5d\u0f5e\u0007\b\u0000\u0000"+ - "\u0f5e\u0f5f\u0007\t\u0000\u0000\u0f5f\u0f60\u0007\u0010\u0000\u0000\u0f60"+ - "\u0f61\u0007\n\u0000\u0000\u0f61\u0f62\u0007\u000f\u0000\u0000\u0f62\u02c6"+ - "\u0001\u0000\u0000\u0000\u0f63\u0f64\u0007\u0010\u0000\u0000\u0f64\u0f65"+ - "\u0007\u0005\u0000\u0000\u0f65\u0f66\u0007\u0012\u0000\u0000\u0f66\u0f67"+ - "\u0007\u0006\u0000\u0000\u0f67\u0f68\u0007\n\u0000\u0000\u0f68\u0f69\u0007"+ - "\t\u0000\u0000\u0f69\u02c8\u0001\u0000\u0000\u0000\u0f6a\u0f6b\u0007\u000b"+ - "\u0000\u0000\u0f6b\u0f6c\u0007\u0010\u0000\u0000\u0f6c\u0f6d\u0007\u0005"+ - "\u0000\u0000\u0f6d\u0f6e\u0007\u0012\u0000\u0000\u0f6e\u0f6f\u0007\u0006"+ - "\u0000\u0000\u0f6f\u0f70\u0007\n\u0000\u0000\u0f70\u0f71\u0007\t\u0000"+ - "\u0000\u0f71\u02ca\u0001\u0000\u0000\u0000\u0f72\u0f73\u0007\u0010\u0000"+ - "\u0000\u0f73\u0f74\u0007\u0005\u0000\u0000\u0f74\u0f75\u0007\u0012\u0000"+ - "\u0000\u0f75\u0f76\u0007\u0006\u0000\u0000\u0f76\u0f77\u0007\n\u0000\u0000"+ - "\u0f77\u0f78\u0007\t\u0000\u0000\u0f78\u0f79\u0007\u0018\u0000\u0000\u0f79"+ - "\u0f7a\u0007\u0005\u0000\u0000\u0f7a\u0f7b\u0007\u000e\u0000\u0000\u0f7b"+ - "\u0f7c\u0007\n\u0000\u0000\u0f7c\u02cc\u0001\u0000\u0000\u0000\u0f7d\u0f7e"+ - "\u0007\u0010\u0000\u0000\u0f7e\u0f7f\u0007\n\u0000\u0000\u0f7f\u0f80\u0007"+ - "\u000f\u0000\u0000\u0f80\u0f81\u0007\u0018\u0000\u0000\u0f81\u02ce\u0001"+ - "\u0000\u0000\u0000\u0f82\u0f83\u0007\u0010\u0000\u0000\u0f83\u0f84\u0007"+ - "\n\u0000\u0000\u0f84\u0f85\u0007\u000f\u0000\u0000\u0f85\u0f86\u0007\u0018"+ - "\u0000\u0000\u0f86\u0f87\u0007\u0006\u0000\u0000\u0f87\u0f88\u0007\u0005"+ - "\u0000\u0000\u0f88\u0f89\u0007\u0010\u0000\u0000\u0f89\u0f8a\u0007\n\u0000"+ - "\u0000\u0f8a\u02d0\u0001\u0000\u0000\u0000\u0f8b\u0f8c\u0007\u0010\u0000"+ - "\u0000\u0f8c\u0f8d\u0007\n\u0000\u0000\u0f8d\u0f8e\u0007\u000f\u0000\u0000"+ - "\u0f8e\u0f8f\u0007\u0018\u0000\u0000\u0f8f\u0f90\u0007\u0013\u0000\u0000"+ - "\u0f90\u0f91\u0007\r\u0000\u0000\u0f91\u0f92\u0007\u0005\u0000\u0000\u0f92"+ - "\u0f93\u0007\r\u0000\u0000\u0f93\u0f94\u0007\b\u0000\u0000\u0f94\u02d2"+ - "\u0001\u0000\u0000\u0000\u0f95\u0f96\u0007\u0010\u0000\u0000\u0f96\u0f97"+ - "\u0007\n\u0000\u0000\u0f97\u0f98\u0007\u001a\u0000\u0000\u0f98\u0f99\u0007"+ - "\u0010\u0000\u0000\u0f99\u02d4\u0001\u0000\u0000\u0000\u0f9a\u0f9b\u0007"+ - "\u0010\u0000\u0000\u0f9b\u0f9c\u0007\r\u0000\u0000\u0f9c\u0f9d\u0007\u0005"+ - "\u0000\u0000\u0f9d\u0f9e\u0007\u0007\u0000\u0000\u0f9e\u0f9f\u0007\t\u0000"+ - "\u0000\u0f9f\u0fa0\u0007\u0005\u0000\u0000\u0fa0\u0fa1\u0007\u000e\u0000"+ - "\u0000\u0fa1\u0fa2\u0007\u0010\u0000\u0000\u0fa2\u0fa3\u0007\u0011\u0000"+ - "\u0000\u0fa3\u0fa4\u0007\u0013\u0000\u0000\u0fa4\u0fa5\u0007\u0007\u0000"+ - "\u0000\u0fa5\u02d6\u0001\u0000\u0000\u0000\u0fa6\u0fa7\u0007\u0010\u0000"+ - "\u0000\u0fa7\u0fa8\u0007\r\u0000\u0000\u0fa8\u0fa9\u0007\u0011\u0000\u0000"+ - "\u0fa9\u0faa\u0007\u0017\u0000\u0000\u0faa\u0fab\u0007\u0017\u0000\u0000"+ - "\u0fab\u0fac\u0007\n\u0000\u0000\u0fac\u0fad\u0007\r\u0000\u0000\u0fad"+ - "\u02d8\u0001\u0000\u0000\u0000\u0fae\u0faf\u0007\u0010\u0000\u0000\u0faf"+ - "\u0fb0\u0007\r\u0000\u0000\u0fb0\u0fb1\u0007\u0016\u0000\u0000\u0fb1\u0fb2"+ - "\u0007\u0007\u0000\u0000\u0fb2\u0fb3\u0007\u000e\u0000\u0000\u0fb3\u0fb4"+ - "\u0007\u0005\u0000\u0000\u0fb4\u0fb5\u0007\u0010\u0000\u0000\u0fb5\u0fb6"+ - "\u0007\n\u0000\u0000\u0fb6\u02da\u0001\u0000\u0000\u0000\u0fb7\u0fb8\u0007"+ - "\u0010\u0000\u0000\u0fb8\u0fb9\u0007\r\u0000\u0000\u0fb9\u0fba\u0007\u0016"+ - "\u0000\u0000\u0fba\u0fbb\u0007\t\u0000\u0000\u0fbb\u0fbc\u0007\u0010\u0000"+ - "\u0000\u0fbc\u0fbd\u0007\n\u0000\u0000\u0fbd\u0fbe\u0007\f\u0000\u0000"+ - "\u0fbe\u02dc\u0001\u0000\u0000\u0000\u0fbf\u0fc0\u0007\u0010\u0000\u0000"+ - "\u0fc0\u0fc1\u0007\b\u0000\u0000\u0fc1\u0fc2\u0007\u0018\u0000\u0000\u0fc2"+ - "\u0fc3\u0007\n\u0000\u0000\u0fc3\u02de\u0001\u0000\u0000\u0000\u0fc4\u0fc5"+ - "\u0007\u0010\u0000\u0000\u0fc5\u0fc6\u0007\b\u0000\u0000\u0fc6\u0fc7\u0007"+ - "\u0018\u0000\u0000\u0fc7\u0fc8\u0007\n\u0000\u0000\u0fc8\u0fc9\u0007\t"+ - "\u0000\u0000\u0fc9\u02e0\u0001\u0000\u0000\u0000\u0fca\u0fcb\u0007\u0016"+ - "\u0000\u0000\u0fcb\u0fcc\u0007\u0007\u0000\u0000\u0fcc\u0fcd\u0007\u0012"+ - "\u0000\u0000\u0fcd\u0fce\u0007\u0013\u0000\u0000\u0fce\u0fcf\u0007\u0016"+ - "\u0000\u0000\u0fcf\u0fd0\u0007\u0007\u0000\u0000\u0fd0\u0fd1\u0007\f\u0000"+ - "\u0000\u0fd1\u0fd2\u0007\n\u0000\u0000\u0fd2\u0fd3\u0007\f\u0000\u0000"+ - "\u0fd3\u02e2\u0001\u0000\u0000\u0000\u0fd4\u0fd5\u0007\u0016\u0000\u0000"+ - "\u0fd5\u0fd6\u0007\u0007\u0000\u0000\u0fd6\u0fd7\u0007\u000e\u0000\u0000"+ - "\u0fd7\u0fd8\u0007\u0013\u0000\u0000\u0fd8\u0fd9\u0007\u000f\u0000\u0000"+ - "\u0fd9\u0fda\u0007\u000f\u0000\u0000\u0fda\u0fdb\u0007\u0011\u0000\u0000"+ - "\u0fdb\u0fdc\u0007\u0010\u0000\u0000\u0fdc\u0fdd\u0007\u0010\u0000\u0000"+ - "\u0fdd\u0fde\u0007\n\u0000\u0000\u0fde\u0fdf\u0007\f\u0000\u0000\u0fdf"+ - "\u02e4\u0001\u0000\u0000\u0000\u0fe0\u0fe1\u0007\u0016\u0000\u0000\u0fe1"+ - "\u0fe2\u0007\u0007\u0000\u0000\u0fe2\u0fe3\u0007\n\u0000\u0000\u0fe3\u0fe4"+ - "\u0007\u0007\u0000\u0000\u0fe4\u0fe5\u0007\u000e\u0000\u0000\u0fe5\u0fe6"+ - "\u0007\r\u0000\u0000\u0fe6\u0fe7\u0007\b\u0000\u0000\u0fe7\u0fe8\u0007"+ - "\u0018\u0000\u0000\u0fe8\u0fe9\u0007\u0010\u0000\u0000\u0fe9\u0fea\u0007"+ - "\n\u0000\u0000\u0fea\u0feb\u0007\f\u0000\u0000\u0feb\u02e6\u0001\u0000"+ - "\u0000\u0000\u0fec\u0fed\u0007\u0016\u0000\u0000\u0fed\u0fee\u0007\u0007"+ - "\u0000\u0000\u0fee\u0fef\u0007\u0015\u0000\u0000\u0fef\u0ff0\u0007\u0007"+ - "\u0000\u0000\u0ff0\u0ff1\u0007\u0013\u0000\u0000\u0ff1\u0ff2\u0007\u001c"+ - "\u0000\u0000\u0ff2\u0ff3\u0007\u0007\u0000\u0000\u0ff3\u02e8\u0001\u0000"+ - "\u0000\u0000\u0ff4\u0ff5\u0007\u0016\u0000\u0000\u0ff5\u0ff6\u0007\u0007"+ - "\u0000\u0000\u0ff6\u0ff7\u0007\u0006\u0000\u0000\u0ff7\u0ff8\u0007\u0011"+ - "\u0000\u0000\u0ff8\u0ff9\u0007\t\u0000\u0000\u0ff9\u0ffa\u0007\u0010\u0000"+ - "\u0000\u0ffa\u0ffb\u0007\n\u0000\u0000\u0ffb\u0ffc\u0007\u0007\u0000\u0000"+ - "\u0ffc\u02ea\u0001\u0000\u0000\u0000\u0ffd\u0ffe\u0007\u0016\u0000\u0000"+ - "\u0ffe\u0fff\u0007\u0007\u0000\u0000\u0fff\u1000\u0007\u0006\u0000\u0000"+ - "\u1000\u1001\u0007\u0013\u0000\u0000\u1001\u1002\u0007\u0017\u0000\u0000"+ - "\u1002\u1003\u0007\u0017\u0000\u0000\u1003\u1004\u0007\n\u0000\u0000\u1004"+ - "\u1005\u0007\f\u0000\u0000\u1005\u02ec\u0001\u0000\u0000\u0000\u1006\u1007"+ - "\u0007\u0016\u0000\u0000\u1007\u1008\u0007\u0007\u0000\u0000\u1008\u1009"+ - "\u0007\u0010\u0000\u0000\u1009\u100a\u0007\u0011\u0000\u0000\u100a\u100b"+ - "\u0007\u0006\u0000\u0000\u100b\u02ee\u0001\u0000\u0000\u0000\u100c\u100d"+ - "\u0007\u0016\u0000\u0000\u100d\u100e\u0007\u0018\u0000\u0000\u100e\u100f"+ - "\u0007\f\u0000\u0000\u100f\u1010\u0007\u0005\u0000\u0000\u1010\u1011\u0007"+ - "\u0010\u0000\u0000\u1011\u1012\u0007\n\u0000\u0000\u1012\u02f0\u0001\u0000"+ - "\u0000\u0000\u1013\u1014\u0007\u001b\u0000\u0000\u1014\u1015\u0007\u0005"+ - "\u0000\u0000\u1015\u1016\u0007\u000e\u0000\u0000\u1016\u1017\u0007\u0016"+ - "\u0000\u0000\u1017\u1018\u0007\u0016\u0000\u0000\u1018\u1019\u0007\u000f"+ - "\u0000\u0000\u1019\u02f2\u0001\u0000\u0000\u0000\u101a\u101b\u0007\u001b"+ - "\u0000\u0000\u101b\u101c\u0007\u0005\u0000\u0000\u101c\u101d\u0007\u0006"+ - "\u0000\u0000\u101d\u101e\u0007\u0011\u0000\u0000\u101e\u101f\u0007\f\u0000"+ - "\u0000\u101f\u02f4\u0001\u0000\u0000\u0000\u1020\u1021\u0007\u001b\u0000"+ - "\u0000\u1021\u1022\u0007\u0005\u0000\u0000\u1022\u1023\u0007\u0006\u0000"+ - "\u0000\u1023\u1024\u0007\u0011\u0000\u0000\u1024\u1025\u0007\f\u0000\u0000"+ - "\u1025\u1026\u0007\u0005\u0000\u0000\u1026\u1027\u0007\u0010\u0000\u0000"+ - "\u1027\u1028\u0007\n\u0000\u0000\u1028\u02f6\u0001\u0000\u0000\u0000\u1029"+ - "\u102a\u0007\u001b\u0000\u0000\u102a\u102b\u0007\u0005\u0000\u0000\u102b"+ - "\u102c\u0007\u0006\u0000\u0000\u102c\u102d\u0007\u0011\u0000\u0000\u102d"+ - "\u102e\u0007\f\u0000\u0000\u102e\u102f\u0007\u0005\u0000\u0000\u102f\u1030"+ - "\u0007\u0010\u0000\u0000\u1030\u1031\u0007\u0013\u0000\u0000\u1031\u1032"+ - "\u0007\r\u0000\u0000\u1032\u02f8\u0001\u0000\u0000\u0000\u1033\u1034\u0007"+ - "\u001b\u0000\u0000\u1034\u1035\u0007\u0005\u0000\u0000\u1035\u1036\u0007"+ - "\r\u0000\u0000\u1036\u1037\u0007\b\u0000\u0000\u1037\u1038\u0007\u0011"+ - "\u0000\u0000\u1038\u1039\u0007\u0007\u0000\u0000\u1039\u103a\u0007\u0017"+ - "\u0000\u0000\u103a\u02fa\u0001\u0000\u0000\u0000\u103b\u103c\u0007\u001b"+ - "\u0000\u0000\u103c\u103d\u0007\n\u0000\u0000\u103d\u103e\u0007\r\u0000"+ - "\u0000\u103e\u103f\u0007\t\u0000\u0000\u103f\u1040\u0007\u0011\u0000\u0000"+ - "\u1040\u1041\u0007\u0013\u0000\u0000\u1041\u1042\u0007\u0007\u0000\u0000"+ - "\u1042\u02fc\u0001\u0000\u0000\u0000\u1043\u1044\u0007\u001b\u0000\u0000"+ - "\u1044\u1045\u0007\u0011\u0000\u0000\u1045\u1046\u0007\n\u0000\u0000\u1046"+ - "\u1047\u0007\u001c\u0000\u0000\u1047\u02fe\u0001\u0000\u0000\u0000\u1048"+ - "\u1049\u0007\u001b\u0000\u0000\u1049\u104a\u0007\u0013\u0000\u0000\u104a"+ - "\u104b\u0007\u0006\u0000\u0000\u104b\u104c\u0007\u0005\u0000\u0000\u104c"+ - "\u104d\u0007\u0010\u0000\u0000\u104d\u104e\u0007\u0011\u0000\u0000\u104e"+ - "\u104f\u0007\u0006\u0000\u0000\u104f\u1050\u0007\n\u0000\u0000\u1050\u0300"+ - "\u0001\u0000\u0000\u0000\u1051\u1052\u0007\u001c\u0000\u0000\u1052\u1053"+ - "\u0007\u0014\u0000\u0000\u1053\u1054\u0007\u0011\u0000\u0000\u1054\u1055"+ - "\u0007\u0010\u0000\u0000\u1055\u1056\u0007\n\u0000\u0000\u1056\u1057\u0007"+ - "\t\u0000\u0000\u1057\u1058\u0007\u0018\u0000\u0000\u1058\u1059\u0007\u0005"+ - "\u0000\u0000\u1059\u105a\u0007\u000e\u0000\u0000\u105a\u105b\u0007\n\u0000"+ - "\u0000\u105b\u0302\u0001\u0000\u0000\u0000\u105c\u105d\u0007\u001c\u0000"+ - "\u0000\u105d\u105e\u0007\u0011\u0000\u0000\u105e\u105f\u0007\u0010\u0000"+ - "\u0000\u105f\u1060\u0007\u0014\u0000\u0000\u1060\u1061\u0007\u0013\u0000"+ - "\u0000\u1061\u1062\u0007\u0016\u0000\u0000\u1062\u1063\u0007\u0010\u0000"+ - "\u0000\u1063\u0304\u0001\u0000\u0000\u0000\u1064\u1065\u0007\u001c\u0000"+ - "\u0000\u1065\u1066\u0007\u0013\u0000\u0000\u1066\u1067\u0007\r\u0000\u0000"+ - "\u1067\u1068\u0007\u0015\u0000\u0000\u1068\u0306\u0001\u0000\u0000\u0000"+ - "\u1069\u106a\u0007\u001c\u0000\u0000\u106a\u106b\u0007\r\u0000\u0000\u106b"+ - "\u106c\u0007\u0005\u0000\u0000\u106c\u106d\u0007\u0018\u0000\u0000\u106d"+ - "\u106e\u0007\u0018\u0000\u0000\u106e\u106f\u0007\n\u0000\u0000\u106f\u1070"+ - "\u0007\r\u0000\u0000\u1070\u0308\u0001\u0000\u0000\u0000\u1071\u1072\u0007"+ - "\u001c\u0000\u0000\u1072\u1073\u0007\r\u0000\u0000\u1073\u1074\u0007\u0011"+ - "\u0000\u0000\u1074\u1075\u0007\u0010\u0000\u0000\u1075\u1076\u0007\n\u0000"+ - "\u0000\u1076\u030a\u0001\u0000\u0000\u0000\u1077\u1078\u0007\u001a\u0000"+ - "\u0000\u1078\u1079\u0007\u000f\u0000\u0000\u1079\u107a\u0007\u0006\u0000"+ - "\u0000\u107a\u030c\u0001\u0000\u0000\u0000\u107b\u107c\u0007\b\u0000\u0000"+ - "\u107c\u107d\u0007\n\u0000\u0000\u107d\u107e\u0007\u0005\u0000\u0000\u107e"+ - "\u107f\u0007\r\u0000\u0000\u107f\u030e\u0001\u0000\u0000\u0000\u1080\u1081"+ - "\u0007\b\u0000\u0000\u1081\u1082\u0007\n\u0000\u0000\u1082\u1083\u0007"+ - "\t\u0000\u0000\u1083\u0310\u0001\u0000\u0000\u0000\u1084\u1085\u0007\u000b"+ - "\u0000\u0000\u1085\u1086\u0007\u0013\u0000\u0000\u1086\u1087\u0007\u0007"+ - "\u0000\u0000\u1087\u1088\u0007\n\u0000\u0000\u1088\u0312\u0001\u0000\u0000"+ - "\u0000\u1089\u108a\u0007\u0012\u0000\u0000\u108a\u108b\u0007\n\u0000\u0000"+ - "\u108b\u108c\u0007\u0010\u0000\u0000\u108c\u108d\u0007\u001c\u0000\u0000"+ - "\u108d\u108e\u0007\n\u0000\u0000\u108e\u108f\u0007\n\u0000\u0000\u108f"+ - "\u1090\u0007\u0007\u0000\u0000\u1090\u0314\u0001\u0000\u0000\u0000\u1091"+ - "\u1092\u0007\u0012\u0000\u0000\u1092\u1093\u0007\u0011\u0000\u0000\u1093"+ - "\u1094\u0007\u0017\u0000\u0000\u1094\u1095\u0007\u0011\u0000\u0000\u1095"+ - "\u1096\u0007\u0007\u0000\u0000\u1096\u1097\u0007\u0010\u0000\u0000\u1097"+ - "\u0316\u0001\u0000\u0000\u0000\u1098\u1099\u0007\u0012\u0000\u0000\u1099"+ - "\u109a\u0007\u0011\u0000\u0000\u109a\u109b\u0007\u0010\u0000\u0000\u109b"+ - "\u0318\u0001\u0000\u0000\u0000\u109c\u109d\u0007\u0012\u0000\u0000\u109d"+ - "\u109e\u0007\u0013\u0000\u0000\u109e\u109f\u0007\u0013\u0000\u0000\u109f"+ - "\u10a0\u0007\u0006\u0000\u0000\u10a0\u10a1\u0007\n\u0000\u0000\u10a1\u10a2"+ - "\u0007\u0005\u0000\u0000\u10a2\u10a3\u0007\u0007\u0000\u0000\u10a3\u031a"+ - "\u0001\u0000\u0000\u0000\u10a4\u10a5\u0007\u000e\u0000\u0000\u10a5\u10a6"+ - "\u0007\u0014\u0000\u0000\u10a6\u10a7\u0007\u0005\u0000\u0000\u10a7\u10a8"+ - "\u0007\r\u0000\u0000\u10a8\u031c\u0001\u0000\u0000\u0000\u10a9\u10aa\u0007"+ - "\u000e\u0000\u0000\u10aa\u10ab\u0007\u0014\u0000\u0000\u10ab\u10ac\u0007"+ - "\u0005\u0000\u0000\u10ac\u10ad\u0007\r\u0000\u0000\u10ad\u10ae\u0007\u0005"+ - "\u0000\u0000\u10ae\u10af\u0007\u000e\u0000\u0000\u10af\u10b0\u0007\u0010"+ - "\u0000\u0000\u10b0\u10b1\u0007\n\u0000\u0000\u10b1\u10b2\u0007\r\u0000"+ - "\u0000\u10b2\u031e\u0001\u0000\u0000\u0000\u10b3\u10b4\u0007\u000e\u0000"+ - "\u0000\u10b4\u10b5\u0007\u0013\u0000\u0000\u10b5\u10b6\u0007\u0005\u0000"+ - "\u0000\u10b6\u10b7\u0007\u0006\u0000\u0000\u10b7\u10b8\u0007\n\u0000\u0000"+ - "\u10b8\u10b9\u0007\t\u0000\u0000\u10b9\u10ba\u0007\u000e\u0000\u0000\u10ba"+ - "\u10bb\u0007\n\u0000\u0000\u10bb\u0320\u0001\u0000\u0000\u0000\u10bc\u10bd"+ - "\u0007\f\u0000\u0000\u10bd\u10be\u0007\n\u0000\u0000\u10be\u10bf\u0007"+ - "\u000e\u0000\u0000\u10bf\u0322\u0001\u0000\u0000\u0000\u10c0\u10c1\u0007"+ - "\f\u0000\u0000\u10c1\u10c2\u0007\n\u0000\u0000\u10c2\u10c3\u0007\u000e"+ - "\u0000\u0000\u10c3\u10c4\u0007\u0011\u0000\u0000\u10c4\u10c5\u0007\u000f"+ - "\u0000\u0000\u10c5\u10c6\u0007\u0005\u0000\u0000\u10c6\u10c7\u0007\u0006"+ - "\u0000\u0000\u10c7\u0324\u0001\u0000\u0000\u0000\u10c8\u10c9\u0007\n\u0000"+ - "\u0000\u10c9\u10ca\u0007\u001a\u0000\u0000\u10ca\u10cb\u0007\u0011\u0000"+ - "\u0000\u10cb\u10cc\u0007\t\u0000\u0000\u10cc\u10cd\u0007\u0010\u0000\u0000"+ - "\u10cd\u10ce\u0007\t\u0000\u0000\u10ce\u0326\u0001\u0000\u0000\u0000\u10cf"+ - "\u10d0\u0007\n\u0000\u0000\u10d0\u10d1\u0007\u001a\u0000\u0000\u10d1\u10d2"+ - "\u0007\u0010\u0000\u0000\u10d2\u10d3\u0007\r\u0000\u0000\u10d3\u10d4\u0007"+ - "\u0005\u0000\u0000\u10d4\u10d5\u0007\u000e\u0000\u0000\u10d5\u10d6\u0007"+ - "\u0010\u0000\u0000\u10d6\u0328\u0001\u0000\u0000\u0000\u10d7\u10d8\u0007"+ - "\u0019\u0000\u0000\u10d8\u10d9\u0007\u0006\u0000\u0000\u10d9\u10da\u0007"+ - "\u0013\u0000\u0000\u10da\u10db\u0007\u0005\u0000\u0000\u10db\u10dc\u0007"+ - "\u0010\u0000\u0000\u10dc\u032a\u0001\u0000\u0000\u0000\u10dd\u10de\u0007"+ - "\u0017\u0000\u0000\u10de\u10df\u0007\r\u0000\u0000\u10df\u10e0\u0007\n"+ - "\u0000\u0000\u10e0\u10e1\u0007\u0005\u0000\u0000\u10e1\u10e2\u0007\u0010"+ - "\u0000\u0000\u10e2\u10e3\u0007\n\u0000\u0000\u10e3\u10e4\u0007\t\u0000"+ - "\u0000\u10e4\u10e5\u0007\u0010\u0000\u0000\u10e5\u032c\u0001\u0000\u0000"+ - "\u0000\u10e6\u10e7\u0007\u0011\u0000\u0000\u10e7\u10e8\u0007\u0007\u0000"+ - "\u0000\u10e8\u10e9\u0007\u0013\u0000\u0000\u10e9\u10ea\u0007\u0016\u0000"+ - "\u0000\u10ea\u10eb\u0007\u0010\u0000\u0000\u10eb\u032e\u0001\u0000\u0000"+ - "\u0000\u10ec\u10ed\u0007\u0011\u0000\u0000\u10ed\u10ee\u0007\u0007\u0000"+ - "\u0000\u10ee\u10ef\u0007\u0010\u0000\u0000\u10ef\u0330\u0001\u0000\u0000"+ - "\u0000\u10f0\u10f1\u0007\u0011\u0000\u0000\u10f1\u10f2\u0007\u0007\u0000"+ - "\u0000\u10f2\u10f3\u0007\u0010\u0000\u0000\u10f3\u10f4\u0007\n\u0000\u0000"+ - "\u10f4\u10f5\u0007\u0017\u0000\u0000\u10f5\u10f6\u0007\n\u0000\u0000\u10f6"+ - "\u10f7\u0007\r\u0000\u0000\u10f7\u0332\u0001\u0000\u0000\u0000\u10f8\u10f9"+ - "\u0007\u0011\u0000\u0000\u10f9\u10fa\u0007\u0007\u0000\u0000\u10fa\u10fb"+ - "\u0007\u0010\u0000\u0000\u10fb\u10fc\u0007\n\u0000\u0000\u10fc\u10fd\u0007"+ - "\r\u0000\u0000\u10fd\u10fe\u0007\u001b\u0000\u0000\u10fe\u10ff\u0007\u0005"+ - "\u0000\u0000\u10ff\u1100\u0007\u0006\u0000\u0000\u1100\u0334\u0001\u0000"+ - "\u0000\u0000\u1101\u1102\u0007\u0006\u0000\u0000\u1102\u1103\u0007\n\u0000"+ - "\u0000\u1103\u1104\u0007\u0005\u0000\u0000\u1104\u1105\u0007\t\u0000\u0000"+ - "\u1105\u1106\u0007\u0010\u0000\u0000\u1106\u0336\u0001\u0000\u0000\u0000"+ - "\u1107\u1108\u0007\u0007\u0000\u0000\u1108\u1109\u0007\u0005\u0000\u0000"+ - "\u1109\u110a\u0007\u0010\u0000\u0000\u110a\u110b\u0007\u0011\u0000\u0000"+ - "\u110b\u110c\u0007\u0013\u0000\u0000\u110c\u110d\u0007\u0007\u0000\u0000"+ - "\u110d\u110e\u0007\u0005\u0000\u0000\u110e\u110f\u0007\u0006\u0000\u0000"+ - "\u110f\u0338\u0001\u0000\u0000\u0000\u1110\u1111\u0007\u0007\u0000\u0000"+ - "\u1111\u1112\u0007\u000e\u0000\u0000\u1112\u1113\u0007\u0014\u0000\u0000"+ - "\u1113\u1114\u0007\u0005\u0000\u0000\u1114\u1115\u0007\r\u0000\u0000\u1115"+ - "\u033a\u0001\u0000\u0000\u0000\u1116\u1117\u0007\u0007\u0000\u0000\u1117"+ - "\u1118\u0007\u0013\u0000\u0000\u1118\u1119\u0007\u0007\u0000\u0000\u1119"+ - "\u111a\u0007\n\u0000\u0000\u111a\u033c\u0001\u0000\u0000\u0000\u111b\u111c"+ - "\u0007\u0007\u0000\u0000\u111c\u111d\u0007\u0016\u0000\u0000\u111d\u111e"+ - "\u0007\u0006\u0000\u0000\u111e\u111f\u0007\u0006\u0000\u0000\u111f\u1120"+ - "\u0007\u0011\u0000\u0000\u1120\u1121\u0007\u0019\u0000\u0000\u1121\u033e"+ - "\u0001\u0000\u0000\u0000\u1122\u1123\u0007\u0007\u0000\u0000\u1123\u1124"+ - "\u0007\u0016\u0000\u0000\u1124\u1125\u0007\u000f\u0000\u0000\u1125\u1126"+ - "\u0007\n\u0000\u0000\u1126\u1127\u0007\r\u0000\u0000\u1127\u1128\u0007"+ - "\u0011\u0000\u0000\u1128\u1129\u0007\u000e\u0000\u0000\u1129\u0340\u0001"+ - "\u0000\u0000\u0000\u112a\u112b\u0007\u0013\u0000\u0000\u112b\u112c\u0007"+ - "\u001b\u0000\u0000\u112c\u112d\u0007\n\u0000\u0000\u112d\u112e\u0007\r"+ - "\u0000\u0000\u112e\u112f\u0007\u0006\u0000\u0000\u112f\u1130\u0007\u0005"+ - "\u0000\u0000\u1130\u1131\u0007\b\u0000\u0000\u1131\u0342\u0001\u0000\u0000"+ - "\u0000\u1132\u1133\u0007\u0018\u0000\u0000\u1133\u1134\u0007\u0013\u0000"+ - "\u0000\u1134\u1135\u0007\t\u0000\u0000\u1135\u1136\u0007\u0011\u0000\u0000"+ - "\u1136\u1137\u0007\u0010\u0000\u0000\u1137\u1138\u0007\u0011\u0000\u0000"+ - "\u1138\u1139\u0007\u0013\u0000\u0000\u1139\u113a\u0007\u0007\u0000\u0000"+ - "\u113a\u0344\u0001\u0000\u0000\u0000\u113b\u113c\u0007\u0018\u0000\u0000"+ - "\u113c\u113d\u0007\r\u0000\u0000\u113d\u113e\u0007\n\u0000\u0000\u113e"+ - "\u113f\u0007\u000e\u0000\u0000\u113f\u1140\u0007\u0011\u0000\u0000\u1140"+ - "\u1141\u0007\t\u0000\u0000\u1141\u1142\u0007\u0011\u0000\u0000\u1142\u1143"+ - "\u0007\u0013\u0000\u0000\u1143\u1144\u0007\u0007\u0000\u0000\u1144\u0346"+ - "\u0001\u0000\u0000\u0000\u1145\u1146\u0007\r\u0000\u0000\u1146\u1147\u0007"+ - "\n\u0000\u0000\u1147\u1148\u0007\u0005\u0000\u0000\u1148\u1149\u0007\u0006"+ - "\u0000\u0000\u1149\u0348\u0001\u0000\u0000\u0000\u114a\u114b\u0007\r\u0000"+ - "\u0000\u114b\u114c\u0007\u0013\u0000\u0000\u114c\u114d\u0007\u001c\u0000"+ - "\u0000\u114d\u034a\u0001\u0000\u0000\u0000\u114e\u114f\u0007\t\u0000\u0000"+ - "\u114f\u1150\u0007\n\u0000\u0000\u1150\u1151\u0007\u0010\u0000\u0000\u1151"+ - "\u1152\u0007\u0013\u0000\u0000\u1152\u1153\u0007\u0019\u0000\u0000\u1153"+ - "\u034c\u0001\u0000\u0000\u0000\u1154\u1155\u0007\t\u0000\u0000\u1155\u1156"+ - "\u0007\u000f\u0000\u0000\u1156\u1157\u0007\u0005\u0000\u0000\u1157\u1158"+ - "\u0007\u0006\u0000\u0000\u1158\u1159\u0007\u0006\u0000\u0000\u1159\u115a"+ - "\u0007\u0011\u0000\u0000\u115a\u115b\u0007\u0007\u0000\u0000\u115b\u115c"+ - "\u0007\u0010\u0000\u0000\u115c\u034e\u0001\u0000\u0000\u0000\u115d\u115e"+ - "\u0007\t\u0000\u0000\u115e\u115f\u0007\u0016\u0000\u0000\u115f\u1160\u0007"+ - "\u0012\u0000\u0000\u1160\u1161\u0007\t\u0000\u0000\u1161\u1162\u0007\u0010"+ - "\u0000\u0000\u1162\u1163\u0007\r\u0000\u0000\u1163\u1164\u0007\u0011\u0000"+ - "\u0000\u1164\u1165\u0007\u0007\u0000\u0000\u1165\u1166\u0007\u0017\u0000"+ - "\u0000\u1166\u0350\u0001\u0000\u0000\u0000\u1167\u1168\u0007\u0010\u0000"+ - "\u0000\u1168\u1169\u0007\u0011\u0000\u0000\u1169\u116a\u0007\u000f\u0000"+ - "\u0000\u116a\u116b\u0007\n\u0000\u0000\u116b\u0352\u0001\u0000\u0000\u0000"+ - "\u116c\u116d\u0007\u0010\u0000\u0000\u116d\u116e\u0007\u0011\u0000\u0000"+ - "\u116e\u116f\u0007\u000f\u0000\u0000\u116f\u1170\u0007\n\u0000\u0000\u1170"+ - "\u1171\u0007\t\u0000\u0000\u1171\u1172\u0007\u0010\u0000\u0000\u1172\u1173"+ - "\u0007\u0005\u0000\u0000\u1173\u1174\u0007\u000f\u0000\u0000\u1174\u1175"+ - "\u0007\u0018\u0000\u0000\u1175\u0354\u0001\u0000\u0000\u0000\u1176\u1177"+ - "\u0007\u0010\u0000\u0000\u1177\u1178\u0007\r\u0000\u0000\u1178\u1179\u0007"+ - "\n\u0000\u0000\u1179\u117a\u0007\u0005\u0000\u0000\u117a\u117b\u0007\u0010"+ - "\u0000\u0000\u117b\u0356\u0001\u0000\u0000\u0000\u117c\u117d\u0007\u0010"+ - "\u0000\u0000\u117d\u117e\u0007\r\u0000\u0000\u117e\u117f\u0007\u0011\u0000"+ - "\u0000\u117f\u1180\u0007\u000f\u0000\u0000\u1180\u0358\u0001\u0000\u0000"+ - "\u0000\u1181\u1182\u0007\u001b\u0000\u0000\u1182\u1183\u0007\u0005\u0000"+ - "\u0000\u1183\u1184\u0007\u0006\u0000\u0000\u1184\u1185\u0007\u0016\u0000"+ - "\u0000\u1185\u1186\u0007\n\u0000\u0000\u1186\u1187\u0007\t\u0000\u0000"+ - "\u1187\u035a\u0001\u0000\u0000\u0000\u1188\u1189\u0007\u001b\u0000\u0000"+ - "\u1189\u118a\u0007\u0005\u0000\u0000\u118a\u118b\u0007\r\u0000\u0000\u118b"+ - "\u118c\u0007\u000e\u0000\u0000\u118c\u118d\u0007\u0014\u0000\u0000\u118d"+ - "\u118e\u0007\u0005\u0000\u0000\u118e\u118f\u0007\r\u0000\u0000\u118f\u035c"+ - "\u0001\u0000\u0000\u0000\u1190\u1191\u0007\u001a\u0000\u0000\u1191\u1192"+ - "\u0007\u000f\u0000\u0000\u1192\u1193\u0007\u0006\u0000\u0000\u1193\u1194"+ - "\u0007\u0005\u0000\u0000\u1194\u1195\u0007\u0010\u0000\u0000\u1195\u1196"+ - "\u0007\u0010\u0000\u0000\u1196\u1197\u0007\r\u0000\u0000\u1197\u1198\u0007"+ - "\u0011\u0000\u0000\u1198\u1199\u0007\u0012\u0000\u0000\u1199\u119a\u0007"+ - "\u0016\u0000\u0000\u119a\u119b\u0007\u0010\u0000\u0000\u119b\u119c\u0007"+ - "\n\u0000\u0000\u119c\u119d\u0007\t\u0000\u0000\u119d\u035e\u0001\u0000"+ - "\u0000\u0000\u119e\u119f\u0007\u001a\u0000\u0000\u119f\u11a0\u0007\u000f"+ - "\u0000\u0000\u11a0\u11a1\u0007\u0006\u0000\u0000\u11a1\u11a2\u0007\u000e"+ - "\u0000\u0000\u11a2\u11a3\u0007\u0013\u0000\u0000\u11a3\u11a4\u0007\u000f"+ - "\u0000\u0000\u11a4\u11a5\u0007\u000f\u0000\u0000\u11a5\u11a6\u0007\n\u0000"+ - "\u0000\u11a6\u11a7\u0007\u0007\u0000\u0000\u11a7\u11a8\u0007\u0010\u0000"+ - "\u0000\u11a8\u0360\u0001\u0000\u0000\u0000\u11a9\u11aa\u0007\u001a\u0000"+ - "\u0000\u11aa\u11ab\u0007\u000f\u0000\u0000\u11ab\u11ac\u0007\u0006\u0000"+ - "\u0000\u11ac\u11ad\u0007\u0005\u0000\u0000\u11ad\u11ae\u0007\u0017\u0000"+ - "\u0000\u11ae\u11af\u0007\u0017\u0000\u0000\u11af\u0362\u0001\u0000\u0000"+ - "\u0000\u11b0\u11b1\u0007\u001a\u0000\u0000\u11b1\u11b2\u0007\u000f\u0000"+ - "\u0000\u11b2\u11b3\u0007\u0006\u0000\u0000\u11b3\u11b4\u0005_\u0000\u0000"+ - "\u11b4\u11b5\u0007\u0011\u0000\u0000\u11b5\u11b6\u0007\t\u0000\u0000\u11b6"+ - "\u11b7\u0005_\u0000\u0000\u11b7\u11b8\u0007\u001c\u0000\u0000\u11b8\u11b9"+ - "\u0007\n\u0000\u0000\u11b9\u11ba\u0007\u0006\u0000\u0000\u11ba\u11bb\u0007"+ - "\u0006\u0000\u0000\u11bb\u11bc\u0005_\u0000\u0000\u11bc\u11bd\u0007\u0019"+ - "\u0000\u0000\u11bd\u11be\u0007\u0013\u0000\u0000\u11be\u11bf\u0007\r\u0000"+ - "\u0000\u11bf\u11c0\u0007\u000f\u0000\u0000\u11c0\u11c1\u0007\n\u0000\u0000"+ - "\u11c1\u11c2\u0007\f\u0000\u0000\u11c2\u0364\u0001\u0000\u0000\u0000\u11c3"+ - "\u11c4\u0007\u001a\u0000\u0000\u11c4\u11c5\u0007\u000f\u0000\u0000\u11c5"+ - "\u11c6\u0007\u0006\u0000\u0000\u11c6\u11c7\u0005_\u0000\u0000\u11c7\u11c8"+ - "\u0007\u0011\u0000\u0000\u11c8\u11c9\u0007\t\u0000\u0000\u11c9\u11ca\u0005"+ - "_\u0000\u0000\u11ca\u11cb\u0007\u001c\u0000\u0000\u11cb\u11cc\u0007\n"+ - "\u0000\u0000\u11cc\u11cd\u0007\u0006\u0000\u0000\u11cd\u11ce\u0007\u0006"+ - "\u0000\u0000\u11ce\u11cf\u0005_\u0000\u0000\u11cf\u11d0\u0007\u0019\u0000"+ - "\u0000\u11d0\u11d1\u0007\u0013\u0000\u0000\u11d1\u11d2\u0007\r\u0000\u0000"+ - "\u11d2\u11d3\u0007\u000f\u0000\u0000\u11d3\u11d4\u0007\n\u0000\u0000\u11d4"+ - "\u11d5\u0007\f\u0000\u0000\u11d5\u11d6\u0005_\u0000\u0000\u11d6\u11d7"+ - "\u0007\f\u0000\u0000\u11d7\u11d8\u0007\u0013\u0000\u0000\u11d8\u11d9\u0007"+ - "\u000e\u0000\u0000\u11d9\u11da\u0007\u0016\u0000\u0000\u11da\u11db\u0007"+ - "\u000f\u0000\u0000\u11db\u11dc\u0007\n\u0000\u0000\u11dc\u11dd\u0007\u0007"+ - "\u0000\u0000\u11dd\u11de\u0007\u0010\u0000\u0000\u11de\u0366\u0001\u0000"+ - "\u0000\u0000\u11df\u11e0\u0007\u001a\u0000\u0000\u11e0\u11e1\u0007\u000f"+ - "\u0000\u0000\u11e1\u11e2\u0007\u0006\u0000\u0000\u11e2\u11e3\u0005_\u0000"+ - "\u0000\u11e3\u11e4\u0007\u0011\u0000\u0000\u11e4\u11e5\u0007\t\u0000\u0000"+ - "\u11e5\u11e6\u0005_\u0000\u0000\u11e6\u11e7\u0007\u001c\u0000\u0000\u11e7"+ - "\u11e8\u0007\n\u0000\u0000\u11e8\u11e9\u0007\u0006\u0000\u0000\u11e9\u11ea"+ - "\u0007\u0006\u0000\u0000\u11ea\u11eb\u0005_\u0000\u0000\u11eb\u11ec\u0007"+ - "\u0019\u0000\u0000\u11ec\u11ed\u0007\u0013\u0000\u0000\u11ed\u11ee\u0007"+ - "\r\u0000\u0000\u11ee\u11ef\u0007\u000f\u0000\u0000\u11ef\u11f0\u0007\n"+ - "\u0000\u0000\u11f0\u11f1\u0007\f\u0000\u0000\u11f1\u11f2\u0005_\u0000"+ - "\u0000\u11f2\u11f3\u0007\u000e\u0000\u0000\u11f3\u11f4\u0007\u0013\u0000"+ - "\u0000\u11f4\u11f5\u0007\u0007\u0000\u0000\u11f5\u11f6\u0007\u0010\u0000"+ - "\u0000\u11f6\u11f7\u0007\n\u0000\u0000\u11f7\u11f8\u0007\u0007\u0000\u0000"+ - "\u11f8\u11f9\u0007\u0010\u0000\u0000\u11f9\u0368\u0001\u0000\u0000\u0000"+ - "\u11fa\u11fb\u0007\u001a\u0000\u0000\u11fb\u11fc\u0007\u0018\u0000\u0000"+ - "\u11fc\u11fd\u0007\u0005\u0000\u0000\u11fd\u11fe\u0007\u0010\u0000\u0000"+ - "\u11fe\u11ff\u0007\u0014\u0000\u0000\u11ff\u036a\u0001\u0000\u0000\u0000"+ - "\u1200\u1201\u0007\u001a\u0000\u0000\u1201\u1202\u0007\u0018\u0000\u0000"+ - "\u1202\u1203\u0007\u0005\u0000\u0000\u1203\u1204\u0007\u0010\u0000\u0000"+ - "\u1204\u1205\u0007\u0014\u0000\u0000\u1205\u1206\u0005_\u0000\u0000\u1206"+ - "\u1207\u0007\n\u0000\u0000\u1207\u1208\u0007\u001a\u0000\u0000\u1208\u1209"+ - "\u0007\u0011\u0000\u0000\u1209\u120a\u0007\t\u0000\u0000\u120a\u120b\u0007"+ - "\u0010\u0000\u0000\u120b\u120c\u0007\t\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\u000e"+ - "\u0000\u0000\u1211\u1212\u0007\u0013\u0000\u0000\u1212\u1213\u0007\u0007"+ - "\u0000\u0000\u1213\u1214\u0007\u000e\u0000\u0000\u1214\u1215\u0007\u0005"+ - "\u0000\u0000\u1215\u1216\u0007\u0010\u0000\u0000\u1216\u036e\u0001\u0000"+ - "\u0000\u0000\u1217\u1218\u0007\u001a\u0000\u0000\u1218\u1219\u0007\u000f"+ - "\u0000\u0000\u1219\u121a\u0007\u0006\u0000\u0000\u121a\u121b\u0007\n\u0000"+ - "\u0000\u121b\u121c\u0007\u0006\u0000\u0000\u121c\u121d\u0007\n\u0000\u0000"+ - "\u121d\u121e\u0007\u000f\u0000\u0000\u121e\u121f\u0007\n\u0000\u0000\u121f"+ - "\u1220\u0007\u0007\u0000\u0000\u1220\u1221\u0007\u0010\u0000\u0000\u1221"+ - "\u0370\u0001\u0000\u0000\u0000\u1222\u1223\u0007\u001a\u0000\u0000\u1223"+ - "\u1224\u0007\u000f\u0000\u0000\u1224\u1225\u0007\u0006\u0000\u0000\u1225"+ - "\u1226\u0007\n\u0000\u0000\u1226\u1227\u0007\u001a\u0000\u0000\u1227\u1228"+ - "\u0007\u0011\u0000\u0000\u1228\u1229\u0007\t\u0000\u0000\u1229\u122a\u0007"+ - "\u0010\u0000\u0000\u122a\u122b\u0007\t\u0000\u0000\u122b\u0372\u0001\u0000"+ - "\u0000\u0000\u122c\u122d\u0007\u001a\u0000\u0000\u122d\u122e\u0007\u000f"+ - "\u0000\u0000\u122e\u122f\u0007\u0006\u0000\u0000\u122f\u1230\u0007\u0019"+ - "\u0000\u0000\u1230\u1231\u0007\u0013\u0000\u0000\u1231\u1232\u0007\r\u0000"+ - "\u0000\u1232\u1233\u0007\n\u0000\u0000\u1233\u1234\u0007\t\u0000\u0000"+ - "\u1234\u1235\u0007\u0010\u0000\u0000\u1235\u0374\u0001\u0000\u0000\u0000"+ - "\u1236\u1237\u0007\u001a\u0000\u0000\u1237\u1238\u0007\u000f\u0000\u0000"+ - "\u1238\u1239\u0007\u0006\u0000\u0000\u1239\u123a\u0007\u0018\u0000\u0000"+ - "\u123a\u123b\u0007\u0005\u0000\u0000\u123b\u123c\u0007\r\u0000\u0000\u123c"+ - "\u123d\u0007\t\u0000\u0000\u123d\u123e\u0007\n\u0000\u0000\u123e\u0376"+ - "\u0001\u0000\u0000\u0000\u123f\u1240\u0007\u001a\u0000\u0000\u1240\u1241"+ - "\u0007\u000f\u0000\u0000\u1241\u1242\u0007\u0006\u0000\u0000\u1242\u1243"+ - "\u0007\u0018\u0000\u0000\u1243\u1244\u0007\u0011\u0000\u0000\u1244\u0378"+ - "\u0001\u0000\u0000\u0000\u1245\u1246\u0007\u001a\u0000\u0000\u1246\u1247"+ - "\u0007\u000f\u0000\u0000\u1247\u1248\u0007\u0006\u0000\u0000\u1248\u1249"+ - "\u0007\r\u0000\u0000\u1249\u124a\u0007"; - private static final String _serializedATNSegment2 = - "\u0013\u0000\u0000\u124a\u124b\u0007\u0013\u0000\u0000\u124b\u124c\u0007"+ - "\u0010\u0000\u0000\u124c\u037a\u0001\u0000\u0000\u0000\u124d\u124e\u0007"+ - "\u001a\u0000\u0000\u124e\u124f\u0007\u000f\u0000\u0000\u124f\u1250\u0007"+ - "\u0006\u0000\u0000\u1250\u1251\u0007\t\u0000\u0000\u1251\u1252\u0007\n"+ - "\u0000\u0000\u1252\u1253\u0007\r\u0000\u0000\u1253\u1254\u0007\u0011\u0000"+ - "\u0000\u1254\u1255\u0007\u0005\u0000\u0000\u1255\u1256\u0007\u0006\u0000"+ - "\u0000\u1256\u1257\u0007\u0011\u0000\u0000\u1257\u1258\u0007\u000b\u0000"+ - "\u0000\u1258\u1259\u0007\n\u0000\u0000\u1259\u037c\u0001\u0000\u0000\u0000"+ - "\u125a\u125b\u0007\u000e\u0000\u0000\u125b\u125c\u0007\u0005\u0000\u0000"+ - "\u125c\u125d\u0007\u0006\u0000\u0000\u125d\u125e\u0007\u0006\u0000\u0000"+ - "\u125e\u037e\u0001\u0000\u0000\u0000\u125f\u1260\u0007\u000e\u0000\u0000"+ - "\u1260\u1261\u0007\u0016\u0000\u0000\u1261\u1262\u0007\r\u0000\u0000\u1262"+ - "\u1263\u0007\r\u0000\u0000\u1263\u1264\u0007\n\u0000\u0000\u1264\u1265"+ - "\u0007\u0007\u0000\u0000\u1265\u1266\u0007\u0010\u0000\u0000\u1266\u0380"+ - "\u0001\u0000\u0000\u0000\u1267\u1268\u0007\u0005\u0000\u0000\u1268\u1269"+ - "\u0007\u0010\u0000\u0000\u1269\u126a\u0007\u0010\u0000\u0000\u126a\u126b"+ - "\u0007\u0005\u0000\u0000\u126b\u126c\u0007\u000e\u0000\u0000\u126c\u126d"+ - "\u0007\u0014\u0000\u0000\u126d\u0382\u0001\u0000\u0000\u0000\u126e\u126f"+ - "\u0007\f\u0000\u0000\u126f\u1270\u0007\n\u0000\u0000\u1270\u1271\u0007"+ - "\u0010\u0000\u0000\u1271\u1272\u0007\u0005\u0000\u0000\u1272\u1273\u0007"+ - "\u000e\u0000\u0000\u1273\u1274\u0007\u0014\u0000\u0000\u1274\u0384\u0001"+ - "\u0000\u0000\u0000\u1275\u1276\u0007\n\u0000\u0000\u1276\u1277\u0007\u001a"+ - "\u0000\u0000\u1277\u1278\u0007\u0018\u0000\u0000\u1278\u1279\u0007\r\u0000"+ - "\u0000\u1279\u127a\u0007\n\u0000\u0000\u127a\u127b\u0007\t\u0000\u0000"+ - "\u127b\u127c\u0007\t\u0000\u0000\u127c\u127d\u0007\u0011\u0000\u0000\u127d"+ - "\u127e\u0007\u0013\u0000\u0000\u127e\u127f\u0007\u0007\u0000\u0000\u127f"+ - "\u0386\u0001\u0000\u0000\u0000\u1280\u1281\u0007\u0017\u0000\u0000\u1281"+ - "\u1282\u0007\n\u0000\u0000\u1282\u1283\u0007\u0007\u0000\u0000\u1283\u1284"+ - "\u0007\n\u0000\u0000\u1284\u1285\u0007\r\u0000\u0000\u1285\u1286\u0007"+ - "\u0005\u0000\u0000\u1286\u1287\u0007\u0010\u0000\u0000\u1287\u1288\u0007"+ - "\n\u0000\u0000\u1288\u1289\u0007\f\u0000\u0000\u1289\u0388\u0001\u0000"+ - "\u0000\u0000\u128a\u128b\u0007\u0006\u0000\u0000\u128b\u128c\u0007\u0013"+ - "\u0000\u0000\u128c\u128d\u0007\u0017\u0000\u0000\u128d\u128e\u0007\u0017"+ - "\u0000\u0000\u128e\u128f\u0007\n\u0000\u0000\u128f\u1290\u0007\f\u0000"+ - "\u0000\u1290\u038a\u0001\u0000\u0000\u0000\u1291\u1292\u0007\t\u0000\u0000"+ - "\u1292\u1293\u0007\u0010\u0000\u0000\u1293\u1294\u0007\u0013\u0000\u0000"+ - "\u1294\u1295\u0007\r\u0000\u0000\u1295\u1296\u0007\n\u0000\u0000\u1296"+ - "\u1297\u0007\f\u0000\u0000\u1297\u038c\u0001\u0000\u0000\u0000\u1298\u1299"+ - "\u0007\u0011\u0000\u0000\u1299\u129a\u0007\u0007\u0000\u0000\u129a\u129b"+ - "\u0007\u000e\u0000\u0000\u129b\u129c\u0007\u0006\u0000\u0000\u129c\u129d"+ - "\u0007\u0016\u0000\u0000\u129d\u129e\u0007\f\u0000\u0000\u129e\u129f\u0007"+ - "\n\u0000\u0000\u129f\u038e\u0001\u0000\u0000\u0000\u12a0\u12a1\u0007\r"+ - "\u0000\u0000\u12a1\u12a2\u0007\u0013\u0000\u0000\u12a2\u12a3\u0007\u0016"+ - "\u0000\u0000\u12a3\u12a4\u0007\u0010\u0000\u0000\u12a4\u12a5\u0007\u0011"+ - "\u0000\u0000\u12a5\u12a6\u0007\u0007\u0000\u0000\u12a6\u12a7\u0007\n\u0000"+ - "\u0000\u12a7\u0390\u0001\u0000\u0000\u0000\u12a8\u12a9\u0007\u0010\u0000"+ - "\u0000\u12a9\u12aa\u0007\r\u0000\u0000\u12aa\u12ab\u0007\u0005\u0000\u0000"+ - "\u12ab\u12ac\u0007\u0007\u0000\u0000\u12ac\u12ad\u0007\t\u0000\u0000\u12ad"+ - "\u12ae\u0007\u0019\u0000\u0000\u12ae\u12af\u0007\u0013\u0000\u0000\u12af"+ - "\u12b0\u0007\r\u0000\u0000\u12b0\u12b1\u0007\u000f\u0000\u0000\u12b1\u0392"+ - "\u0001\u0000\u0000\u0000\u12b2\u12b3\u0007\u0011\u0000\u0000\u12b3\u12b4"+ - "\u0007\u000f\u0000\u0000\u12b4\u12b5\u0007\u0018\u0000\u0000\u12b5\u12b6"+ - "\u0007\u0013\u0000\u0000\u12b6\u12b7\u0007\r\u0000\u0000\u12b7\u12b8\u0007"+ - "\u0010\u0000\u0000\u12b8\u0394\u0001\u0000\u0000\u0000\u12b9\u12ba\u0007"+ - "\u0018\u0000\u0000\u12ba\u12bb\u0007\u0013\u0000\u0000\u12bb\u12bc\u0007"+ - "\u0006\u0000\u0000\u12bc\u12bd\u0007\u0011\u0000\u0000\u12bd\u12be\u0007"+ - "\u000e\u0000\u0000\u12be\u12bf\u0007\b\u0000\u0000\u12bf\u0396\u0001\u0000"+ - "\u0000\u0000\u12c0\u12c1\u0007\u000f\u0000\u0000\u12c1\u12c2\u0007\n\u0000"+ - "\u0000\u12c2\u12c3\u0007\u0010\u0000\u0000\u12c3\u12c4\u0007\u0014\u0000"+ - "\u0000\u12c4\u12c5\u0007\u0013\u0000\u0000\u12c5\u12c6\u0007\f\u0000\u0000"+ - "\u12c6\u0398\u0001\u0000\u0000\u0000\u12c7\u12c8\u0007\r\u0000\u0000\u12c8"+ - "\u12c9\u0007\n\u0000\u0000\u12c9\u12ca\u0007\u0019\u0000\u0000\u12ca\u12cb"+ - "\u0007\n\u0000\u0000\u12cb\u12cc\u0007\r\u0000\u0000\u12cc\u12cd\u0007"+ - "\n\u0000\u0000\u12cd\u12ce\u0007\u0007\u0000\u0000\u12ce\u12cf\u0007\u000e"+ - "\u0000\u0000\u12cf\u12d0\u0007\u0011\u0000\u0000\u12d0\u12d1\u0007\u0007"+ - "\u0000\u0000\u12d1\u12d2\u0007\u0017\u0000\u0000\u12d2\u039a\u0001\u0000"+ - "\u0000\u0000\u12d3\u12d4\u0007\u0007\u0000\u0000\u12d4\u12d5\u0007\n\u0000"+ - "\u0000\u12d5\u12d6\u0007\u001c\u0000\u0000\u12d6\u039c\u0001\u0000\u0000"+ - "\u0000\u12d7\u12d8\u0007\u0013\u0000\u0000\u12d8\u12d9\u0007\u0006\u0000"+ - "\u0000\u12d9\u12da\u0007\f\u0000\u0000\u12da\u039e\u0001\u0000\u0000\u0000"+ - "\u12db\u12dc\u0007\u001b\u0000\u0000\u12dc\u12dd\u0007\u0005\u0000\u0000"+ - "\u12dd\u12de\u0007\u0006\u0000\u0000\u12de\u12df\u0007\u0016\u0000\u0000"+ - "\u12df\u12e0\u0007\n\u0000\u0000\u12e0\u03a0\u0001\u0000\u0000\u0000\u12e1"+ - "\u12e2\u0007\t\u0000\u0000\u12e2\u12e3\u0007\u0016\u0000\u0000\u12e3\u12e4"+ - "\u0007\u0012\u0000\u0000\u12e4\u12e5\u0007\t\u0000\u0000\u12e5\u12e6\u0007"+ - "\u000e\u0000\u0000\u12e6\u12e7\u0007\r\u0000\u0000\u12e7\u12e8\u0007\u0011"+ - "\u0000\u0000\u12e8\u12e9\u0007\u0018\u0000\u0000\u12e9\u12ea\u0007\u0010"+ - "\u0000\u0000\u12ea\u12eb\u0007\u0011\u0000\u0000\u12eb\u12ec\u0007\u0013"+ - "\u0000\u0000\u12ec\u12ed\u0007\u0007\u0000\u0000\u12ed\u03a2\u0001\u0000"+ - "\u0000\u0000\u12ee\u12ef\u0007\u0018\u0000\u0000\u12ef\u12f0\u0007\u0016"+ - "\u0000\u0000\u12f0\u12f1\u0007\u0012\u0000\u0000\u12f1\u12f2\u0007\u0006"+ - "\u0000\u0000\u12f2\u12f3\u0007\u0011\u0000\u0000\u12f3\u12f4\u0007\u000e"+ - "\u0000\u0000\u12f4\u12f5\u0007\u0005\u0000\u0000\u12f5\u12f6\u0007\u0010"+ - "\u0000\u0000\u12f6\u12f7\u0007\u0011\u0000\u0000\u12f7\u12f8\u0007\u0013"+ - "\u0000\u0000\u12f8\u12f9\u0007\u0007\u0000\u0000\u12f9\u03a4\u0001\u0000"+ - "\u0000\u0000\u12fa\u12fb\u0007\u0013\u0000\u0000\u12fb\u12fc\u0007\u0016"+ - "\u0000\u0000\u12fc\u12fd\u0007\u0010\u0000\u0000\u12fd\u03a6\u0001\u0000"+ - "\u0000\u0000\u12fe\u12ff\u0007\n\u0000\u0000\u12ff\u1300\u0007\u0007\u0000"+ - "\u0000\u1300\u1301\u0007\f\u0000\u0000\u1301\u03a8\u0001\u0000\u0000\u0000"+ - "\u1302\u1303\u0007\r\u0000\u0000\u1303\u1304\u0007\u0013\u0000\u0000\u1304"+ - "\u1305\u0007\u0016\u0000\u0000\u1305\u1306\u0007\u0010\u0000\u0000\u1306"+ - "\u1307\u0007\u0011\u0000\u0000\u1307\u1308\u0007\u0007\u0000\u0000\u1308"+ - "\u1309\u0007\n\u0000\u0000\u1309\u130a\u0007\t\u0000\u0000\u130a\u03aa"+ - "\u0001\u0000\u0000\u0000\u130b\u130c\u0007\t\u0000\u0000\u130c\u130d\u0007"+ - "\u000e\u0000\u0000\u130d\u130e\u0007\u0014\u0000\u0000\u130e\u130f\u0007"+ - "\n\u0000\u0000\u130f\u1310\u0007\u000f\u0000\u0000\u1310\u1311\u0007\u0005"+ - "\u0000\u0000\u1311\u1312\u0007\t\u0000\u0000\u1312\u03ac\u0001\u0000\u0000"+ - "\u0000\u1313\u1314\u0007\u0018\u0000\u0000\u1314\u1315\u0007\r\u0000\u0000"+ - "\u1315\u1316\u0007\u0013\u0000\u0000\u1316\u1317\u0007\u000e\u0000\u0000"+ - "\u1317\u1318\u0007\n\u0000\u0000\u1318\u1319\u0007\f\u0000\u0000\u1319"+ - "\u131a\u0007\u0016\u0000\u0000\u131a\u131b\u0007\r\u0000\u0000\u131b\u131c"+ - "\u0007\n\u0000\u0000\u131c\u131d\u0007\t\u0000\u0000\u131d\u03ae\u0001"+ - "\u0000\u0000\u0000\u131e\u131f\u0007\u0011\u0000\u0000\u131f\u1320\u0007"+ - "\u0007\u0000\u0000\u1320\u1321\u0007\u0018\u0000\u0000\u1321\u1322\u0007"+ - "\u0016\u0000\u0000\u1322\u1323\u0007\u0010\u0000\u0000\u1323\u03b0\u0001"+ - "\u0000\u0000\u0000\u1324\u1325\u0007\t\u0000\u0000\u1325\u1326\u0007\u0016"+ - "\u0000\u0000\u1326\u1327\u0007\u0018\u0000\u0000\u1327\u1328\u0007\u0018"+ - "\u0000\u0000\u1328\u1329\u0007\u0013\u0000\u0000\u1329\u132a\u0007\r\u0000"+ - "\u0000\u132a\u132b\u0007\u0010\u0000\u0000\u132b\u03b2\u0001\u0000\u0000"+ - "\u0000\u132c\u132d\u0007\u0018\u0000\u0000\u132d\u132e\u0007\u0005\u0000"+ - "\u0000\u132e\u132f\u0007\r\u0000\u0000\u132f\u1330\u0007\u0005\u0000\u0000"+ - "\u1330\u1331\u0007\u0006\u0000\u0000\u1331\u1332\u0007\u0006\u0000\u0000"+ - "\u1332\u1333\u0007\n\u0000\u0000\u1333\u1334\u0007\u0006\u0000\u0000\u1334"+ - "\u03b4\u0001\u0000\u0000\u0000\u1335\u1336\u0007\t\u0000\u0000\u1336\u1337"+ - "\u0007\u001d\u0000\u0000\u1337\u1338\u0007\u0006\u0000\u0000\u1338\u03b6"+ - "\u0001\u0000\u0000\u0000\u1339\u133a\u0007\f\u0000\u0000\u133a\u133b\u0007"+ - "\n\u0000\u0000\u133b\u133c\u0007\u0018\u0000\u0000\u133c\u133d\u0007\n"+ - "\u0000\u0000\u133d\u133e\u0007\u0007\u0000\u0000\u133e\u133f\u0007\f\u0000"+ - "\u0000\u133f\u1340\u0007\t\u0000\u0000\u1340\u03b8\u0001\u0000\u0000\u0000"+ - "\u1341\u1342\u0007\u0013\u0000\u0000\u1342\u1343\u0007\u001b\u0000\u0000"+ - "\u1343\u1344\u0007\n\u0000\u0000\u1344\u1345\u0007\r\u0000\u0000\u1345"+ - "\u1346\u0007\r\u0000\u0000\u1346\u1347\u0007\u0011\u0000\u0000\u1347\u1348"+ - "\u0007\f\u0000\u0000\u1348\u1349\u0007\u0011\u0000\u0000\u1349\u134a\u0007"+ - "\u0007\u0000\u0000\u134a\u134b\u0007\u0017\u0000\u0000\u134b\u03ba\u0001"+ - "\u0000\u0000\u0000\u134c\u134d\u0007\u000e\u0000\u0000\u134d\u134e\u0007"+ - "\u0013\u0000\u0000\u134e\u134f\u0007\u0007\u0000\u0000\u134f\u1350\u0007"+ - "\u0019\u0000\u0000\u1350\u1351\u0007\u0006\u0000\u0000\u1351\u1352\u0007"+ - "\u0011\u0000\u0000\u1352\u1353\u0007\u000e\u0000\u0000\u1353\u1354\u0007"+ - "\u0010\u0000\u0000\u1354\u03bc\u0001\u0000\u0000\u0000\u1355\u1356\u0007"+ - "\t\u0000\u0000\u1356\u1357\u0007\u0015\u0000\u0000\u1357\u1358\u0007\u0011"+ - "\u0000\u0000\u1358\u1359\u0007\u0018\u0000\u0000\u1359\u03be\u0001\u0000"+ - "\u0000\u0000\u135a\u135b\u0007\u0006\u0000\u0000\u135b\u135c\u0007\u0013"+ - "\u0000\u0000\u135c\u135d\u0007\u000e\u0000\u0000\u135d\u135e\u0007\u0015"+ - "\u0000\u0000\u135e\u135f\u0007\n\u0000\u0000\u135f\u1360\u0007\f\u0000"+ - "\u0000\u1360\u03c0\u0001\u0000\u0000\u0000\u1361\u1362\u0007\u0010\u0000"+ - "\u0000\u1362\u1363\u0007\u0011\u0000\u0000\u1363\u1364\u0007\n\u0000\u0000"+ - "\u1364\u1365\u0007\t\u0000\u0000\u1365\u03c2\u0001\u0000\u0000\u0000\u1366"+ - "\u1367\u0007\r\u0000\u0000\u1367\u1368\u0007\u0013\u0000\u0000\u1368\u1369"+ - "\u0007\u0006\u0000\u0000\u1369\u136a\u0007\u0006\u0000\u0000\u136a\u136b"+ - "\u0007\u0016\u0000\u0000\u136b\u136c\u0007\u0018\u0000\u0000\u136c\u03c4"+ - "\u0001\u0000\u0000\u0000\u136d\u136e\u0007\u000e\u0000\u0000\u136e\u136f"+ - "\u0007\u0016\u0000\u0000\u136f\u1370\u0007\u0012\u0000\u0000\u1370\u1371"+ - "\u0007\n\u0000\u0000\u1371\u03c6\u0001\u0000\u0000\u0000\u1372\u1373\u0007"+ - "\u0017\u0000\u0000\u1373\u1374\u0007\r\u0000\u0000\u1374\u1375\u0007\u0013"+ - "\u0000\u0000\u1375\u1376\u0007\u0016\u0000\u0000\u1376\u1377\u0007\u0018"+ - "\u0000\u0000\u1377\u1378\u0007\u0011\u0000\u0000\u1378\u1379\u0007\u0007"+ - "\u0000\u0000\u1379\u137a\u0007\u0017\u0000\u0000\u137a\u03c8\u0001\u0000"+ - "\u0000\u0000\u137b\u137c\u0007\t\u0000\u0000\u137c\u137d\u0007\n\u0000"+ - "\u0000\u137d\u137e\u0007\u0010\u0000\u0000\u137e\u137f\u0007\t\u0000\u0000"+ - "\u137f\u03ca\u0001\u0000\u0000\u0000\u1380\u1381\u0007\u0010\u0000\u0000"+ - "\u1381\u1382\u0007\u0005\u0000\u0000\u1382\u1383\u0007\u0012\u0000\u0000"+ - "\u1383\u1384\u0007\u0006\u0000\u0000\u1384\u1385\u0007\n\u0000\u0000\u1385"+ - "\u1386\u0007\t\u0000\u0000\u1386\u1387\u0007\u0005\u0000\u0000\u1387\u1388"+ - "\u0007\u000f\u0000\u0000\u1388\u1389\u0007\u0018\u0000\u0000\u1389\u138a"+ - "\u0007\u0006\u0000\u0000\u138a\u138b\u0007\n\u0000\u0000\u138b\u03cc\u0001"+ - "\u0000\u0000\u0000\u138c\u138d\u0007\u0013\u0000\u0000\u138d\u138e\u0007"+ - "\r\u0000\u0000\u138e\u138f\u0007\f\u0000\u0000\u138f\u1390\u0007\u0011"+ - "\u0000\u0000\u1390\u1391\u0007\u0007\u0000\u0000\u1391\u1392\u0007\u0005"+ - "\u0000\u0000\u1392\u1393\u0007\u0006\u0000\u0000\u1393\u1394\u0007\u0011"+ - "\u0000\u0000\u1394\u1395\u0007\u0010\u0000\u0000\u1395\u1396\u0007\b\u0000"+ - "\u0000\u1396\u03ce\u0001\u0000\u0000\u0000\u1397\u1398\u0007\u001a\u0000"+ - "\u0000\u1398\u1399\u0007\u000f\u0000\u0000\u1399\u139a\u0007\u0006\u0000"+ - "\u0000\u139a\u139b\u0007\u0010\u0000\u0000\u139b\u139c\u0007\u0005\u0000"+ - "\u0000\u139c\u139d\u0007\u0012\u0000\u0000\u139d\u139e\u0007\u0006\u0000"+ - "\u0000\u139e\u139f\u0007\n\u0000\u0000\u139f\u03d0\u0001\u0000\u0000\u0000"+ - "\u13a0\u13a1\u0007\u000e\u0000\u0000\u13a1\u13a2\u0007\u0013\u0000\u0000"+ - "\u13a2\u13a3\u0007\u0006\u0000\u0000\u13a3\u13a4\u0007\u0016\u0000\u0000"+ - "\u13a4\u13a5\u0007\u000f\u0000\u0000\u13a5\u13a6\u0007\u0007\u0000\u0000"+ - "\u13a6\u13a7\u0007\t\u0000\u0000\u13a7\u03d2\u0001\u0000\u0000\u0000\u13a8"+ - "\u13a9\u0007\u001a\u0000\u0000\u13a9\u13aa\u0007\u000f\u0000\u0000\u13aa"+ - "\u13ab\u0007\u0006\u0000\u0000\u13ab\u13ac\u0007\u0007\u0000\u0000\u13ac"+ - "\u13ad\u0007\u0005\u0000\u0000\u13ad\u13ae\u0007\u000f\u0000\u0000\u13ae"+ - "\u13af\u0007\n\u0000\u0000\u13af\u13b0\u0007\t\u0000\u0000\u13b0\u13b1"+ - "\u0007\u0018\u0000\u0000\u13b1\u13b2\u0007\u0005\u0000\u0000\u13b2\u13b3"+ - "\u0007\u000e\u0000\u0000\u13b3\u13b4\u0007\n\u0000\u0000\u13b4\u13b5\u0007"+ - "\t\u0000\u0000\u13b5\u03d4\u0001\u0000\u0000\u0000\u13b6\u13b7\u0007\r"+ - "\u0000\u0000\u13b7\u13b8\u0007\u0013\u0000\u0000\u13b8\u13b9\u0007\u001c"+ - "\u0000\u0000\u13b9\u13ba\u0007\u0010\u0000\u0000\u13ba\u13bb\u0007\b\u0000"+ - "\u0000\u13bb\u13bc\u0007\u0018\u0000\u0000\u13bc\u13bd\u0007\n\u0000\u0000"+ - "\u13bd\u03d6\u0001\u0000\u0000\u0000\u13be\u13bf\u0007\u0007\u0000\u0000"+ - "\u13bf\u13c0\u0007\u0013\u0000\u0000\u13c0\u13c1\u0007\r\u0000\u0000\u13c1"+ - "\u13c2\u0007\u000f\u0000\u0000\u13c2\u13c3\u0007\u0005\u0000\u0000\u13c3"+ - "\u13c4\u0007\u0006\u0000\u0000\u13c4\u13c5\u0007\u0011\u0000\u0000\u13c5"+ - "\u13c6\u0007\u000b\u0000\u0000\u13c6\u13c7\u0007\n\u0000\u0000\u13c7\u13c8"+ - "\u0007\f\u0000\u0000\u13c8\u03d8\u0001\u0000\u0000\u0000\u13c9\u13ca\u0007"+ - "\u001c\u0000\u0000\u13ca\u13cb\u0007\u0011\u0000\u0000\u13cb\u13cc\u0007"+ - "\u0010\u0000\u0000\u13cc\u13cd\u0007\u0014\u0000\u0000\u13cd\u13ce\u0007"+ - "\u0011\u0000\u0000\u13ce\u13cf\u0007\u0007\u0000\u0000\u13cf\u03da\u0001"+ - "\u0000\u0000\u0000\u13d0\u13d1\u0007\u0019\u0000\u0000\u13d1\u13d2\u0007"+ - "\u0011\u0000\u0000\u13d2\u13d3\u0007\u0006\u0000\u0000\u13d3\u13d4\u0007"+ - "\u0010\u0000\u0000\u13d4\u13d5\u0007\n\u0000\u0000\u13d5\u13d6\u0007\r"+ - "\u0000\u0000\u13d6\u03dc\u0001\u0000\u0000\u0000\u13d7\u13d8\u0007\u0017"+ - "\u0000\u0000\u13d8\u13d9\u0007\r\u0000\u0000\u13d9\u13da\u0007\u0013\u0000"+ - "\u0000\u13da\u13db\u0007\u0016\u0000\u0000\u13db\u13dc\u0007\u0018\u0000"+ - "\u0000\u13dc\u13dd\u0007\t\u0000\u0000\u13dd\u03de\u0001\u0000\u0000\u0000"+ - "\u13de\u13df\u0007\u0013\u0000\u0000\u13df\u13e0\u0007\u0010\u0000\u0000"+ - "\u13e0\u13e1\u0007\u0014\u0000\u0000\u13e1\u13e2\u0007\n\u0000\u0000\u13e2"+ - "\u13e3\u0007\r\u0000\u0000\u13e3\u13e4\u0007\t\u0000\u0000\u13e4\u03e0"+ - "\u0001\u0000\u0000\u0000\u13e5\u13e6\u0007\u0007\u0000\u0000\u13e6\u13e7"+ - "\u0007\u0019\u0000\u0000\u13e7\u13e8\u0007\u000e\u0000\u0000\u13e8\u03e2"+ - "\u0001\u0000\u0000\u0000\u13e9\u13ea\u0007\u0007\u0000\u0000\u13ea\u13eb"+ - "\u0007\u0019\u0000\u0000\u13eb\u13ec\u0007\f\u0000\u0000\u13ec\u03e4\u0001"+ - "\u0000\u0000\u0000\u13ed\u13ee\u0007\u0007\u0000\u0000\u13ee\u13ef\u0007"+ - "\u0019\u0000\u0000\u13ef\u13f0\u0007\u0015\u0000\u0000\u13f0\u13f1\u0007"+ - "\u000e\u0000\u0000\u13f1\u03e6\u0001\u0000\u0000\u0000\u13f2\u13f3\u0007"+ - "\u0007\u0000\u0000\u13f3\u13f4\u0007\u0019\u0000\u0000\u13f4\u13f5\u0007"+ - "\u0015\u0000\u0000\u13f5\u13f6\u0007\f\u0000\u0000\u13f6\u03e8\u0001\u0000"+ - "\u0000\u0000\u13f7\u13f8\u0007\u0016\u0000\u0000\u13f8\u13f9\u0007\n\u0000"+ - "\u0000\u13f9\u13fa\u0007\t\u0000\u0000\u13fa\u13fb\u0007\u000e\u0000\u0000"+ - "\u13fb\u13fc\u0007\u0005\u0000\u0000\u13fc\u13fd\u0007\u0018\u0000\u0000"+ - "\u13fd\u13fe\u0007\n\u0000\u0000\u13fe\u03ea\u0001\u0000\u0000\u0000\u13ff"+ - "\u1400\u0007\u001b\u0000\u0000\u1400\u1401\u0007\u0011\u0000\u0000\u1401"+ - "\u1402\u0007\n\u0000\u0000\u1402\u1403\u0007\u001c\u0000\u0000\u1403\u1404"+ - "\u0007\t\u0000\u0000\u1404\u03ec\u0001\u0000\u0000\u0000\u1405\u1406\u0007"+ - "\u0007\u0000\u0000\u1406\u1407\u0007\u0013\u0000\u0000\u1407\u1408\u0007"+ - "\r\u0000\u0000\u1408\u1409\u0007\u000f\u0000\u0000\u1409\u140a\u0007\u0005"+ - "\u0000\u0000\u140a\u140b\u0007\u0006\u0000\u0000\u140b\u140c\u0007\u0011"+ - "\u0000\u0000\u140c\u140d\u0007\u000b\u0000\u0000\u140d\u140e\u0007\n\u0000"+ - "\u0000\u140e\u03ee\u0001\u0000\u0000\u0000\u140f\u1410\u0007\f\u0000\u0000"+ - "\u1410\u1411\u0007\u0016\u0000\u0000\u1411\u1412\u0007\u000f\u0000\u0000"+ - "\u1412\u1413\u0007\u0018\u0000\u0000\u1413\u03f0\u0001\u0000\u0000\u0000"+ - "\u1414\u1415\u0007\u0018\u0000\u0000\u1415\u1416\u0007\r\u0000\u0000\u1416"+ - "\u1417\u0007\u0011\u0000\u0000\u1417\u1418\u0007\u0007\u0000\u0000\u1418"+ - "\u1419\u0007\u0010\u0000\u0000\u1419\u141a\u0005_\u0000\u0000\u141a\u141b"+ - "\u0007\t\u0000\u0000\u141b\u141c\u0007\u0010\u0000\u0000\u141c\u141d\u0007"+ - "\r\u0000\u0000\u141d\u141e\u0007\u0011\u0000\u0000\u141e\u141f\u0007\u000e"+ - "\u0000\u0000\u141f\u1420\u0007\u0010\u0000\u0000\u1420\u1421\u0005_\u0000"+ - "\u0000\u1421\u1422\u0007\u0018\u0000\u0000\u1422\u1423\u0007\u0005\u0000"+ - "\u0000\u1423\u1424\u0007\r\u0000\u0000\u1424\u1425\u0007\u0005\u0000\u0000"+ - "\u1425\u1426\u0007\u000f\u0000\u0000\u1426\u1427\u0007\t\u0000\u0000\u1427"+ - "\u03f2\u0001\u0000\u0000\u0000\u1428\u1429\u0007\u001b\u0000\u0000\u1429"+ - "\u142a\u0007\u0005\u0000\u0000\u142a\u142b\u0007\r\u0000\u0000\u142b\u142c"+ - "\u0007\u0011\u0000\u0000\u142c\u142d\u0007\u0005\u0000\u0000\u142d\u142e"+ - "\u0007\u0012\u0000\u0000\u142e\u142f\u0007\u0006\u0000\u0000\u142f\u1430"+ - "\u0007\n\u0000\u0000\u1430\u1431\u0005_\u0000\u0000\u1431\u1432\u0007"+ - "\u000e\u0000\u0000\u1432\u1433\u0007\u0013\u0000\u0000\u1433\u1434\u0007"+ - "\u0007\u0000\u0000\u1434\u1435\u0007\u0019\u0000\u0000\u1435\u1436\u0007"+ - "\u0006\u0000\u0000\u1436\u1437\u0007\u0011\u0000\u0000\u1437\u1438\u0007"+ - "\u000e\u0000\u0000\u1438\u1439\u0007\u0010\u0000\u0000\u1439\u03f4\u0001"+ - "\u0000\u0000\u0000\u143a\u143b\u0007\n\u0000\u0000\u143b\u143c\u0007\r"+ - "\u0000\u0000\u143c\u143d\u0007\r\u0000\u0000\u143d\u143e\u0007\u0013\u0000"+ - "\u0000\u143e\u143f\u0007\r\u0000\u0000\u143f\u03f6\u0001\u0000\u0000\u0000"+ - "\u1440\u1441\u0007\u0016\u0000\u0000\u1441\u1442\u0007\t\u0000\u0000\u1442"+ - "\u1443\u0007\n\u0000\u0000\u1443\u1444\u0005_\u0000\u0000\u1444\u1445"+ - "\u0007\u001b\u0000\u0000\u1445\u1446\u0007\u0005\u0000\u0000\u1446\u1447"+ - "\u0007\r\u0000\u0000\u1447\u1448\u0007\u0011\u0000\u0000\u1448\u1449\u0007"+ - "\u0005\u0000\u0000\u1449\u144a\u0007\u0012\u0000\u0000\u144a\u144b\u0007"+ - "\u0006\u0000\u0000\u144b\u144c\u0007\n\u0000\u0000\u144c\u03f8\u0001\u0000"+ - "\u0000\u0000\u144d\u144e\u0007\u0016\u0000\u0000\u144e\u144f\u0007\t\u0000"+ - "\u0000\u144f\u1450\u0007\n\u0000\u0000\u1450\u1451\u0005_\u0000\u0000"+ - "\u1451\u1452\u0007\u000e\u0000\u0000\u1452\u1453\u0007\u0013\u0000\u0000"+ - "\u1453\u1454\u0007\u0006\u0000\u0000\u1454\u1455\u0007\u0016\u0000\u0000"+ - "\u1455\u1456\u0007\u000f\u0000\u0000\u1456\u1457\u0007\u0007\u0000\u0000"+ - "\u1457\u03fa\u0001\u0000\u0000\u0000\u1458\u1459\u0007\u0005\u0000\u0000"+ - "\u1459\u145a\u0007\u0006\u0000\u0000\u145a\u145b\u0007\u0011\u0000\u0000"+ - "\u145b\u145c\u0007\u0005\u0000\u0000\u145c\u145d\u0007\t\u0000\u0000\u145d"+ - "\u03fc\u0001\u0000\u0000\u0000\u145e\u145f\u0007\u000e\u0000\u0000\u145f"+ - "\u1460\u0007\u0013\u0000\u0000\u1460\u1461\u0007\u0007\u0000\u0000\u1461"+ - "\u1462\u0007\t\u0000\u0000\u1462\u1463\u0007\u0010\u0000\u0000\u1463\u1464"+ - "\u0007\u0005\u0000\u0000\u1464\u1465\u0007\u0007\u0000\u0000\u1465\u1466"+ - "\u0007\u0010\u0000\u0000\u1466\u03fe\u0001\u0000\u0000\u0000\u1467\u1468"+ - "\u0007\u0018\u0000\u0000\u1468\u1469\u0007\n\u0000\u0000\u1469\u146a\u0007"+ - "\r\u0000\u0000\u146a\u146b\u0007\u0019\u0000\u0000\u146b\u146c\u0007\u0013"+ - "\u0000\u0000\u146c\u146d\u0007\r\u0000\u0000\u146d\u146e\u0007\u000f\u0000"+ - "\u0000\u146e\u0400\u0001\u0000\u0000\u0000\u146f\u1470\u0007\u0017\u0000"+ - "\u0000\u1470\u1471\u0007\n\u0000\u0000\u1471\u1472\u0007\u0010\u0000\u0000"+ - "\u1472\u0402\u0001\u0000\u0000\u0000\u1473\u1474\u0007\f\u0000\u0000\u1474"+ - "\u1475\u0007\u0011\u0000\u0000\u1475\u1476\u0007\u0005\u0000\u0000\u1476"+ - "\u1477\u0007\u0017\u0000\u0000\u1477\u1478\u0007\u0007\u0000\u0000\u1478"+ - "\u1479\u0007\u0013\u0000\u0000\u1479\u147a\u0007\t\u0000\u0000\u147a\u147b"+ - "\u0007\u0010\u0000\u0000\u147b\u147c\u0007\u0011\u0000\u0000\u147c\u147d"+ - "\u0007\u000e\u0000\u0000\u147d\u147e\u0007\t\u0000\u0000\u147e\u0404\u0001"+ - "\u0000\u0000\u0000\u147f\u1480\u0007\t\u0000\u0000\u1480\u1481\u0007\u0010"+ - "\u0000\u0000\u1481\u1482\u0007\u0005\u0000\u0000\u1482\u1483\u0007\u000e"+ - "\u0000\u0000\u1483\u1484\u0007\u0015\u0000\u0000\u1484\u1485\u0007\n\u0000"+ - "\u0000\u1485\u1486\u0007\f\u0000\u0000\u1486\u0406\u0001\u0000\u0000\u0000"+ - "\u1487\u1488\u0007\n\u0000\u0000\u1488\u1489\u0007\u0006\u0000\u0000\u1489"+ - "\u148a\u0007\t\u0000\u0000\u148a\u148b\u0007\u0011\u0000\u0000\u148b\u148c"+ - "\u0007\u0019\u0000\u0000\u148c\u0408\u0001\u0000\u0000\u0000\u148d\u148e"+ - "\u0007\u001c\u0000\u0000\u148e\u148f\u0007\u0014\u0000\u0000\u148f\u1490"+ - "\u0007\u0011\u0000\u0000\u1490\u1491\u0007\u0006\u0000\u0000\u1491\u1492"+ - "\u0007\n\u0000\u0000\u1492\u040a\u0001\u0000\u0000\u0000\u1493\u1494\u0007"+ - "\r\u0000\u0000\u1494\u1495\u0007\n\u0000\u0000\u1495\u1496\u0007\u001b"+ - "\u0000\u0000\u1496\u1497\u0007\n\u0000\u0000\u1497\u1498\u0007\r\u0000"+ - "\u0000\u1498\u1499\u0007\t\u0000\u0000\u1499\u149a\u0007\n\u0000\u0000"+ - "\u149a\u040c\u0001\u0000\u0000\u0000\u149b\u149c\u0007\u0019\u0000\u0000"+ - "\u149c\u149d\u0007\u0013\u0000\u0000\u149d\u149e\u0007\r\u0000\u0000\u149e"+ - "\u149f\u0007\n\u0000\u0000\u149f\u14a0\u0007\u0005\u0000\u0000\u14a0\u14a1"+ - "\u0007\u000e\u0000\u0000\u14a1\u14a2\u0007\u0014\u0000\u0000\u14a2\u040e"+ - "\u0001\u0000\u0000\u0000\u14a3\u14a4\u0007\t\u0000\u0000\u14a4\u14a5\u0007"+ - "\u0006\u0000\u0000\u14a5\u14a6\u0007\u0011\u0000\u0000\u14a6\u14a7\u0007"+ - "\u000e\u0000\u0000\u14a7\u14a8\u0007\n\u0000\u0000\u14a8\u0410\u0001\u0000"+ - "\u0000\u0000\u14a9\u14aa\u0007\n\u0000\u0000\u14aa\u14ab\u0007\u001a\u0000"+ - "\u0000\u14ab\u14ac\u0007\u0011\u0000\u0000\u14ac\u14ad\u0007\u0010\u0000"+ - "\u0000\u14ad\u0412\u0001\u0000\u0000\u0000\u14ae\u14af\u0007\r\u0000\u0000"+ - "\u14af\u14b0\u0007\n\u0000\u0000\u14b0\u14b1\u0007\u0010\u0000\u0000\u14b1"+ - "\u14b2\u0007\u0016\u0000\u0000\u14b2\u14b3\u0007\r\u0000\u0000\u14b3\u14b4"+ - "\u0007\u0007\u0000\u0000\u14b4\u0414\u0001\u0000\u0000\u0000\u14b5\u14b6"+ - "\u0007\u001d\u0000\u0000\u14b6\u14b7\u0007\u0016\u0000\u0000\u14b7\u14b8"+ - "\u0007\n\u0000\u0000\u14b8\u14b9\u0007\r\u0000\u0000\u14b9\u14ba\u0007"+ - "\b\u0000\u0000\u14ba\u0416\u0001\u0000\u0000\u0000\u14bb\u14bc\u0007\r"+ - "\u0000\u0000\u14bc\u14bd\u0007\u0005\u0000\u0000\u14bd\u14be\u0007\u0011"+ - "\u0000\u0000\u14be\u14bf\u0007\t\u0000\u0000\u14bf\u14c0\u0007\n\u0000"+ - "\u0000\u14c0\u0418\u0001\u0000\u0000\u0000\u14c1\u14c2\u0007\t\u0000\u0000"+ - "\u14c2\u14c3\u0007\u001d\u0000\u0000\u14c3\u14c4\u0007\u0006\u0000\u0000"+ - "\u14c4\u14c5\u0007\t\u0000\u0000\u14c5\u14c6\u0007\u0010\u0000\u0000\u14c6"+ - "\u14c7\u0007\u0005\u0000\u0000\u14c7\u14c8\u0007\u0010\u0000\u0000\u14c8"+ - "\u14c9\u0007\n\u0000\u0000\u14c9\u041a\u0001\u0000\u0000\u0000\u14ca\u14cb"+ - "\u0007\f\u0000\u0000\u14cb\u14cc\u0007\n\u0000\u0000\u14cc\u14cd\u0007"+ - "\u0012\u0000\u0000\u14cd\u14ce\u0007\u0016\u0000\u0000\u14ce\u14cf\u0007"+ - "\u0017\u0000\u0000\u14cf\u041c\u0001\u0000\u0000\u0000\u14d0\u14d1\u0007"+ - "\u0006\u0000\u0000\u14d1\u14d2\u0007\u0013\u0000\u0000\u14d2\u14d3\u0007"+ - "\u0017\u0000\u0000\u14d3\u041e\u0001\u0000\u0000\u0000\u14d4\u14d5\u0007"+ - "\u0011\u0000\u0000\u14d5\u14d6\u0007\u0007\u0000\u0000\u14d6\u14d7\u0007"+ - "\u0019\u0000\u0000\u14d7\u14d8\u0007\u0013\u0000\u0000\u14d8\u0420\u0001"+ - "\u0000\u0000\u0000\u14d9\u14da\u0007\u0007\u0000\u0000\u14da\u14db\u0007"+ - "\u0013\u0000\u0000\u14db\u14dc\u0007\u0010\u0000\u0000\u14dc\u14dd\u0007"+ - "\u0011\u0000\u0000\u14dd\u14de\u0007\u000e\u0000\u0000\u14de\u14df\u0007"+ - "\n\u0000\u0000\u14df\u0422\u0001\u0000\u0000\u0000\u14e0\u14e1\u0007\u001c"+ - "\u0000\u0000\u14e1\u14e2\u0007\u0005\u0000\u0000\u14e2\u14e3\u0007\r\u0000"+ - "\u0000\u14e3\u14e4\u0007\u0007\u0000\u0000\u14e4\u14e5\u0007\u0011\u0000"+ - "\u0000\u14e5\u14e6\u0007\u0007\u0000\u0000\u14e6\u14e7\u0007\u0017\u0000"+ - "\u0000\u14e7\u0424\u0001\u0000\u0000\u0000\u14e8\u14e9\u0007\n\u0000\u0000"+ - "\u14e9\u14ea\u0007\u001a\u0000\u0000\u14ea\u14eb\u0007\u000e\u0000\u0000"+ - "\u14eb\u14ec\u0007\n\u0000\u0000\u14ec\u14ed\u0007\u0018\u0000\u0000\u14ed"+ - "\u14ee\u0007\u0010\u0000\u0000\u14ee\u14ef\u0007\u0011\u0000\u0000\u14ef"+ - "\u14f0\u0007\u0013\u0000\u0000\u14f0\u14f1\u0007\u0007\u0000\u0000\u14f1"+ - "\u0426\u0001\u0000\u0000\u0000\u14f2\u14f3\u0007\u0005\u0000\u0000\u14f3"+ - "\u14f4\u0007\t\u0000\u0000\u14f4\u14f5\u0007\t\u0000\u0000\u14f5\u14f6"+ - "\u0007\n\u0000\u0000\u14f6\u14f7\u0007\r\u0000\u0000\u14f7\u14f8\u0007"+ - "\u0010\u0000\u0000\u14f8\u0428\u0001\u0000\u0000\u0000\u14f9\u14fa\u0007"+ - "\u0006\u0000\u0000\u14fa\u14fb\u0007\u0013\u0000\u0000\u14fb\u14fc\u0007"+ - "\u0013\u0000\u0000\u14fc\u14fd\u0007\u0018\u0000\u0000\u14fd\u042a\u0001"+ - "\u0000\u0000\u0000\u14fe\u14ff\u0007\u0013\u0000\u0000\u14ff\u1500\u0007"+ - "\u0018\u0000\u0000\u1500\u1501\u0007\n\u0000\u0000\u1501\u1502\u0007\u0007"+ - "\u0000\u0000\u1502\u042c\u0001\u0000\u0000\u0000\u1503\u1504\u0007\u0005"+ - "\u0000\u0000\u1504\u1505\u0007\u0012\u0000\u0000\u1505\u1506\u0007\t\u0000"+ - "\u0000\u1506\u042e\u0001\u0000\u0000\u0000\u1507\u1508\u0007\u000e\u0000"+ - "\u0000\u1508\u1509\u0007\u0012\u0000\u0000\u1509\u150a\u0007\r\u0000\u0000"+ - "\u150a\u150b\u0007\u0010\u0000\u0000\u150b\u0430\u0001\u0000\u0000\u0000"+ - "\u150c\u150d\u0007\u000e\u0000\u0000\u150d\u150e\u0007\n\u0000\u0000\u150e"+ - "\u150f\u0007\u0011\u0000\u0000\u150f\u1510\u0007\u0006\u0000\u0000\u1510"+ - "\u0432\u0001\u0000\u0000\u0000\u1511\u1512\u0007\u000e\u0000\u0000\u1512"+ - "\u1513\u0007\n\u0000\u0000\u1513\u1514\u0007\u0011\u0000\u0000\u1514\u1515"+ - "\u0007\u0006\u0000\u0000\u1515\u1516\u0007\u0011\u0000\u0000\u1516\u1517"+ - "\u0007\u0007\u0000\u0000\u1517\u1518\u0007\u0017\u0000\u0000\u1518\u0434"+ - "\u0001\u0000\u0000\u0000\u1519\u151a\u0007\f\u0000\u0000\u151a\u151b\u0007"+ - "\n\u0000\u0000\u151b\u151c\u0007\u0017\u0000\u0000\u151c\u151d\u0007\r"+ - "\u0000\u0000\u151d\u151e\u0007\n\u0000\u0000\u151e\u151f\u0007\n\u0000"+ - "\u0000\u151f\u1520\u0007\t\u0000\u0000\u1520\u0436\u0001\u0000\u0000\u0000"+ - "\u1521\u1522\u0007\f\u0000\u0000\u1522\u1523\u0007\u0011\u0000\u0000\u1523"+ - "\u1524\u0007\u001b\u0000\u0000\u1524\u0438\u0001\u0000\u0000\u0000\u1525"+ - "\u1526\u0007\n\u0000\u0000\u1526\u1527\u0007\u001a\u0000\u0000\u1527\u1528"+ - "\u0007\u0018\u0000\u0000\u1528\u043a\u0001\u0000\u0000\u0000\u1529\u152a"+ - "\u0007\u0019\u0000\u0000\u152a\u152b\u0007\u0005\u0000\u0000\u152b\u152c"+ - "\u0007\u000e\u0000\u0000\u152c\u152d\u0007\u0010\u0000\u0000\u152d\u152e"+ - "\u0007\u0013\u0000\u0000\u152e\u152f\u0007\r\u0000\u0000\u152f\u1530\u0007"+ - "\u0011\u0000\u0000\u1530\u1531\u0007\u0005\u0000\u0000\u1531\u1532\u0007"+ - "\u0006\u0000\u0000\u1532\u043c\u0001\u0000\u0000\u0000\u1533\u1534\u0007"+ - "\u0019\u0000\u0000\u1534\u1535\u0007\u0006\u0000\u0000\u1535\u1536\u0007"+ - "\u0013\u0000\u0000\u1536\u1537\u0007\u0013\u0000\u0000\u1537\u1538\u0007"+ - "\r\u0000\u0000\u1538\u043e\u0001\u0000\u0000\u0000\u1539\u153a\u0007\u0017"+ - "\u0000\u0000\u153a\u153b\u0007\u000e\u0000\u0000\u153b\u153c\u0007\f\u0000"+ - "\u0000\u153c\u0440\u0001\u0000\u0000\u0000\u153d\u153e\u0007\u0006\u0000"+ - "\u0000\u153e\u153f\u0007\u000e\u0000\u0000\u153f\u1540\u0007\u000f\u0000"+ - "\u0000\u1540\u0442\u0001\u0000\u0000\u0000\u1541\u1542\u0007\u0006\u0000"+ - "\u0000\u1542\u1543\u0007\u0007\u0000\u0000\u1543\u0444\u0001\u0000\u0000"+ - "\u0000\u1544\u1545\u0007\u0006\u0000\u0000\u1545\u1546\u0007\u0013\u0000"+ - "\u0000\u1546\u1547\u0007\u0017\u0000\u0000\u1547\u1548\u00051\u0000\u0000"+ - "\u1548\u1549\u00050\u0000\u0000\u1549\u0446\u0001\u0000\u0000\u0000\u154a"+ - "\u154b\u0007\u000f\u0000\u0000\u154b\u154c\u0007\u0011\u0000\u0000\u154c"+ - "\u154d\u0007\u0007\u0000\u0000\u154d\u154e\u0005_\u0000\u0000\u154e\u154f"+ - "\u0007\t\u0000\u0000\u154f\u1550\u0007\u000e\u0000\u0000\u1550\u1551\u0007"+ - "\u0005\u0000\u0000\u1551\u1552\u0007\u0006\u0000\u0000\u1552\u1553\u0007"+ - "\n\u0000\u0000\u1553\u0448\u0001\u0000\u0000\u0000\u1554\u1555\u0007\u000f"+ - "\u0000\u0000\u1555\u1556\u0007\u0013\u0000\u0000\u1556\u1557\u0007\f\u0000"+ - "\u0000\u1557\u044a\u0001\u0000\u0000\u0000\u1558\u1559\u0007\u0018\u0000"+ - "\u0000\u1559\u155a\u0007\u0011\u0000\u0000\u155a\u044c\u0001\u0000\u0000"+ - "\u0000\u155b\u155c\u0007\u0018\u0000\u0000\u155c\u155d\u0007\u0013\u0000"+ - "\u0000\u155d\u155e\u0007\u001c\u0000\u0000\u155e\u155f\u0007\n\u0000\u0000"+ - "\u155f\u1560\u0007\r\u0000\u0000\u1560\u044e\u0001\u0000\u0000\u0000\u1561"+ - "\u1562\u0007\r\u0000\u0000\u1562\u1563\u0007\u0005\u0000\u0000\u1563\u1564"+ - "\u0007\f\u0000\u0000\u1564\u1565\u0007\u0011\u0000\u0000\u1565\u1566\u0007"+ - "\u0005\u0000\u0000\u1566\u1567\u0007\u0007\u0000\u0000\u1567\u1568\u0007"+ - "\t\u0000\u0000\u1568\u0450\u0001\u0000\u0000\u0000\u1569\u156a\u0007\r"+ - "\u0000\u0000\u156a\u156b\u0007\u0013\u0000\u0000\u156b\u156c\u0007\u0016"+ - "\u0000\u0000\u156c\u156d\u0007\u0007\u0000\u0000\u156d\u156e\u0007\f\u0000"+ - "\u0000\u156e\u0452\u0001\u0000\u0000\u0000\u156f\u1570\u0007\t\u0000\u0000"+ - "\u1570\u1571\u0007\u000e\u0000\u0000\u1571\u1572\u0007\u0005\u0000\u0000"+ - "\u1572\u1573\u0007\u0006\u0000\u0000\u1573\u1574\u0007\n\u0000\u0000\u1574"+ - "\u0454\u0001\u0000\u0000\u0000\u1575\u1576\u0007\t\u0000\u0000\u1576\u1577"+ - "\u0007\u0011\u0000\u0000\u1577\u1578\u0007\u0017\u0000\u0000\u1578\u1579"+ - "\u0007\u0007\u0000\u0000\u1579\u0456\u0001\u0000\u0000\u0000\u157a\u157b"+ - "\u0007\t\u0000\u0000\u157b\u157c\u0007\u001d\u0000\u0000\u157c\u157d\u0007"+ - "\r\u0000\u0000\u157d\u157e\u0007\u0010\u0000\u0000\u157e\u0458\u0001\u0000"+ - "\u0000\u0000\u157f\u1580\u0007\u0010\u0000\u0000\u1580\u1581\u0007\r\u0000"+ - "\u0000\u1581\u1582\u0007\u0011\u0000\u0000\u1582\u1583\u0007\u000f\u0000"+ - "\u0000\u1583\u1584\u0005_\u0000\u0000\u1584\u1585\u0007\t\u0000\u0000"+ - "\u1585\u1586\u0007\u000e\u0000\u0000\u1586\u1587\u0007\u0005\u0000\u0000"+ - "\u1587\u1588\u0007\u0006\u0000\u0000\u1588\u1589\u0007\n\u0000\u0000\u1589"+ - "\u045a\u0001\u0000\u0000\u0000\u158a\u158b\u0007\u0010\u0000\u0000\u158b"+ - "\u158c\u0007\r\u0000\u0000\u158c\u158d\u0007\u0016\u0000\u0000\u158d\u158e"+ - "\u0007\u0007\u0000\u0000\u158e\u158f\u0007\u000e\u0000\u0000\u158f\u045c"+ - "\u0001\u0000\u0000\u0000\u1590\u1591\u0007\u001c\u0000\u0000\u1591\u1592"+ - "\u0007\u0011\u0000\u0000\u1592\u1593\u0007\f\u0000\u0000\u1593\u1594\u0007"+ - "\u0010\u0000\u0000\u1594\u1595\u0007\u0014\u0000\u0000\u1595\u1596\u0005"+ - "_\u0000\u0000\u1596\u1597\u0007\u0012\u0000\u0000\u1597\u1598\u0007\u0016"+ - "\u0000\u0000\u1598\u1599\u0007\u000e\u0000\u0000\u1599\u159a\u0007\u0015"+ - "\u0000\u0000\u159a\u159b\u0007\n\u0000\u0000\u159b\u159c\u0007\u0010\u0000"+ - "\u0000\u159c\u045e\u0001\u0000\u0000\u0000\u159d\u159e\u0007\r\u0000\u0000"+ - "\u159e\u159f\u0007\u0005\u0000\u0000\u159f\u15a0\u0007\u0007\u0000\u0000"+ - "\u15a0\u15a1\u0007\f\u0000\u0000\u15a1\u15a2\u0007\u0013\u0000\u0000\u15a2"+ - "\u15a3\u0007\u000f\u0000\u0000\u15a3\u0460\u0001\u0000\u0000\u0000\u15a4"+ - "\u15a5\u0007\t\u0000\u0000\u15a5\u15a6\u0007\n\u0000\u0000\u15a6\u15a7"+ - "\u0007\u0010\u0000\u0000\u15a7\u15a8\u0007\t\u0000\u0000\u15a8\u15a9\u0007"+ - "\n\u0000\u0000\u15a9\u15aa\u0007\n\u0000\u0000\u15aa\u15ab\u0007\f\u0000"+ - "\u0000\u15ab\u0462\u0001\u0000\u0000\u0000\u15ac\u15ad\u0007\u0005\u0000"+ - "\u0000\u15ad\u15ae\u0007\u000e\u0000\u0000\u15ae\u15af\u0007\u0013\u0000"+ - "\u0000\u15af\u15b0\u0007\t\u0000\u0000\u15b0\u0464\u0001\u0000\u0000\u0000"+ - "\u15b1\u15b2\u0007\u0005\u0000\u0000\u15b2\u15b3\u0007\u000e\u0000\u0000"+ - "\u15b3\u15b4\u0007\u0013\u0000\u0000\u15b4\u15b5\u0007\t\u0000\u0000\u15b5"+ - "\u15b6\u0007\f\u0000\u0000\u15b6\u0466\u0001\u0000\u0000\u0000\u15b7\u15b8"+ - "\u0007\u0005\u0000\u0000\u15b8\u15b9\u0007\t\u0000\u0000\u15b9\u15ba\u0007"+ - "\u0011\u0000\u0000\u15ba\u15bb\u0007\u0007\u0000\u0000\u15bb\u0468\u0001"+ - "\u0000\u0000\u0000\u15bc\u15bd\u0007\u0005\u0000\u0000\u15bd\u15be\u0007"+ - "\t\u0000\u0000\u15be\u15bf\u0007\u0011\u0000\u0000\u15bf\u15c0\u0007\u0007"+ - "\u0000\u0000\u15c0\u15c1\u0007\f\u0000\u0000\u15c1\u046a\u0001\u0000\u0000"+ - "\u0000\u15c2\u15c3\u0007\u0005\u0000\u0000\u15c3\u15c4\u0007\u0010\u0000"+ - "\u0000\u15c4\u15c5\u0007\u0005\u0000\u0000\u15c5\u15c6\u0007\u0007\u0000"+ - "\u0000\u15c6\u046c\u0001\u0000\u0000\u0000\u15c7\u15c8\u0007\u0005\u0000"+ - "\u0000\u15c8\u15c9\u0007\u0010\u0000\u0000\u15c9\u15ca\u0007\u0005\u0000"+ - "\u0000\u15ca\u15cb\u0007\u0007\u0000\u0000\u15cb\u15cc\u0007\f\u0000\u0000"+ - "\u15cc\u046e\u0001\u0000\u0000\u0000\u15cd\u15ce\u0007\u0005\u0000\u0000"+ - "\u15ce\u15cf\u0007\u0010\u0000\u0000\u15cf\u15d0\u0007\u0005\u0000\u0000"+ - "\u15d0\u15d1\u0007\u0007\u0000\u0000\u15d1\u15d2\u00052\u0000\u0000\u15d2"+ - "\u0470\u0001\u0000\u0000\u0000\u15d3\u15d4\u0007\u0005\u0000\u0000\u15d4"+ - "\u15d5\u0007\u0010\u0000\u0000\u15d5\u15d6\u0007\u0005\u0000\u0000\u15d6"+ - "\u15d7\u0007\u0007\u0000\u0000\u15d7\u15d8\u00052\u0000\u0000\u15d8\u15d9"+ - "\u0007\f\u0000\u0000\u15d9\u0472\u0001\u0000\u0000\u0000\u15da\u15db\u0007"+ - "\u000e\u0000\u0000\u15db\u15dc\u0007\u0013\u0000\u0000\u15dc\u15dd\u0007"+ - "\t\u0000\u0000\u15dd\u0474\u0001\u0000\u0000\u0000\u15de\u15df\u0007\u000e"+ - "\u0000\u0000\u15df\u15e0\u0007\u0013\u0000\u0000\u15e0\u15e1\u0007\t\u0000"+ - "\u0000\u15e1\u15e2\u0007\f\u0000\u0000\u15e2\u0476\u0001\u0000\u0000\u0000"+ - "\u15e3\u15e4\u0007\u000e\u0000\u0000\u15e4\u15e5\u0007\u0013\u0000\u0000"+ - "\u15e5\u15e6\u0007\u0010\u0000\u0000\u15e6\u0478\u0001\u0000\u0000\u0000"+ - "\u15e7\u15e8\u0007\u000e\u0000\u0000\u15e8\u15e9\u0007\u0013\u0000\u0000"+ - "\u15e9\u15ea\u0007\u0010\u0000\u0000\u15ea\u15eb\u0007\f\u0000\u0000\u15eb"+ - "\u047a\u0001\u0000\u0000\u0000\u15ec\u15ed\u0007\t\u0000\u0000\u15ed\u15ee"+ - "\u0007\u0011\u0000\u0000\u15ee\u15ef\u0007\u0007\u0000\u0000\u15ef\u047c"+ - "\u0001\u0000\u0000\u0000\u15f0\u15f1\u0007\t\u0000\u0000\u15f1\u15f2\u0007"+ - "\u0011\u0000\u0000\u15f2\u15f3\u0007\u0007\u0000\u0000\u15f3\u15f4\u0007"+ - "\f\u0000\u0000\u15f4\u047e\u0001\u0000\u0000\u0000\u15f5\u15f6\u0007\u0010"+ - "\u0000\u0000\u15f6\u15f7\u0007\u0005\u0000\u0000\u15f7\u15f8\u0007\u0007"+ - "\u0000\u0000\u15f8\u0480\u0001\u0000\u0000\u0000\u15f9\u15fa\u0007\u0010"+ - "\u0000\u0000\u15fa\u15fb\u0007\u0005\u0000\u0000\u15fb\u15fc\u0007\u0007"+ - "\u0000\u0000\u15fc\u15fd\u0007\f\u0000\u0000\u15fd\u0482\u0001\u0000\u0000"+ - "\u0000\u15fe\u15ff\u0007\t\u0000\u0000\u15ff\u1600\u0007\u0011\u0000\u0000"+ - "\u1600\u1601\u0007\u0007\u0000\u0000\u1601\u1602\u0007\u0014\u0000\u0000"+ - "\u1602\u0484\u0001\u0000\u0000\u0000\u1603\u1604\u0007\u000e\u0000\u0000"+ - "\u1604\u1605\u0007\u0013\u0000\u0000\u1605\u1606\u0007\t\u0000\u0000\u1606"+ - "\u1607\u0007\u0014\u0000\u0000\u1607\u0486\u0001\u0000\u0000\u0000\u1608"+ - "\u1609\u0007\u0010\u0000\u0000\u1609\u160a\u0007\u0005\u0000\u0000\u160a"+ - "\u160b\u0007\u0007\u0000\u0000\u160b\u160c\u0007\u0014\u0000\u0000\u160c"+ - "\u0488\u0001\u0000\u0000\u0000\u160d\u160e\u0007\u0005\u0000\u0000\u160e"+ - "\u160f\u0007\t\u0000\u0000\u160f\u1610\u0007\u0011\u0000\u0000\u1610\u1611"+ - "\u0007\u0007\u0000\u0000\u1611\u1612\u0007\u0014\u0000\u0000\u1612\u048a"+ - "\u0001\u0000\u0000\u0000\u1613\u1614\u0007\u0005\u0000\u0000\u1614\u1615"+ - "\u0007\u000e\u0000\u0000\u1615\u1616\u0007\u0013\u0000\u0000\u1616\u1617"+ - "\u0007\t\u0000\u0000\u1617\u1618\u0007\u0014\u0000\u0000\u1618\u048c\u0001"+ - "\u0000\u0000\u0000\u1619\u161a\u0007\u0005\u0000\u0000\u161a\u161b\u0007"+ - "\u0010\u0000\u0000\u161b\u161c\u0007\u0005\u0000\u0000\u161c\u161d\u0007"+ - "\u0007\u0000\u0000\u161d\u161e\u0007\u0014\u0000\u0000\u161e\u048e\u0001"+ - "\u0000\u0000\u0000\u161f\u1620\u0007\u0012\u0000\u0000\u1620\u1621\u0007"+ - "\u0011\u0000\u0000\u1621\u1622\u0007\u0010\u0000\u0000\u1622\u1623\u0005"+ - "_\u0000\u0000\u1623\u1624\u0007\u0006\u0000\u0000\u1624\u1625\u0007\n"+ - "\u0000\u0000\u1625\u1626\u0007\u0007\u0000\u0000\u1626\u1627\u0007\u0017"+ - "\u0000\u0000\u1627\u1628\u0007\u0010\u0000\u0000\u1628\u1629\u0007\u0014"+ - "\u0000\u0000\u1629\u0490\u0001\u0000\u0000\u0000\u162a\u162b\u0007\u000e"+ - "\u0000\u0000\u162b\u162c\u0007\u0014\u0000\u0000\u162c\u162d\u0007\u0005"+ - "\u0000\u0000\u162d\u162e\u0007\r\u0000\u0000\u162e\u162f\u0005_\u0000"+ - "\u0000\u162f\u1630\u0007\u0006\u0000\u0000\u1630\u1631\u0007\n\u0000\u0000"+ - "\u1631\u1632\u0007\u0007\u0000\u0000\u1632\u1633\u0007\u0017\u0000\u0000"+ - "\u1633\u1634\u0007\u0010\u0000\u0000\u1634\u1635\u0007\u0014\u0000\u0000"+ - "\u1635\u0492\u0001\u0000\u0000\u0000\u1636\u1637\u0007\u000e\u0000\u0000"+ - "\u1637\u1638\u0007\u0014\u0000\u0000\u1638\u1639\u0007\u0005\u0000\u0000"+ - "\u1639\u163a\u0007\r\u0000\u0000\u163a\u163b\u0007\u0005\u0000\u0000\u163b"+ - "\u163c\u0007\u000e\u0000\u0000\u163c\u163d\u0007\u0010\u0000\u0000\u163d"+ - "\u163e\u0007\n\u0000\u0000\u163e\u163f\u0007\r\u0000\u0000\u163f\u1640"+ - "\u0005_\u0000\u0000\u1640\u1641\u0007\u0006\u0000\u0000\u1641\u1642\u0007"+ - "\n\u0000\u0000\u1642\u1643\u0007\u0007\u0000\u0000\u1643\u1644\u0007\u0017"+ - "\u0000\u0000\u1644\u1645\u0007\u0010\u0000\u0000\u1645\u1646\u0007\u0014"+ - "\u0000\u0000\u1646\u0494\u0001\u0000\u0000\u0000\u1647\u1648\u0007\u0006"+ - "\u0000\u0000\u1648\u1649\u0007\u0013\u0000\u0000\u1649\u164a\u0007\u001c"+ - "\u0000\u0000\u164a\u164b\u0007\n\u0000\u0000\u164b\u164c\u0007\r\u0000"+ - "\u0000\u164c\u0496\u0001\u0000\u0000\u0000\u164d\u164e\u0007\u0013\u0000"+ - "\u0000\u164e\u164f\u0007\u000e\u0000\u0000\u164f\u1650\u0007\u0010\u0000"+ - "\u0000\u1650\u1651\u0007\n\u0000\u0000\u1651\u1652\u0007\u0010\u0000\u0000"+ - "\u1652\u1653\u0005_\u0000\u0000\u1653\u1654\u0007\u0006\u0000\u0000\u1654"+ - "\u1655\u0007\n\u0000\u0000\u1655\u1656\u0007\u0007\u0000\u0000\u1656\u1657"+ - "\u0007\u0017\u0000\u0000\u1657\u1658\u0007\u0010\u0000\u0000\u1658\u1659"+ - "\u0007\u0014\u0000\u0000\u1659\u0498\u0001\u0000\u0000\u0000\u165a\u165b"+ - "\u0007\u0016\u0000\u0000\u165b\u165c\u0007\u0018\u0000\u0000\u165c\u165d"+ - "\u0007\u0018\u0000\u0000\u165d\u165e\u0007\n\u0000\u0000\u165e\u165f\u0007"+ - "\r\u0000\u0000\u165f\u049a\u0001\u0000\u0000\u0000\u1660\u1661\u0007\u0005"+ - "\u0000\u0000\u1661\u1662\u0007\t\u0000\u0000\u1662\u1663\u0007\u000e\u0000"+ - "\u0000\u1663\u1664\u0007\u0011\u0000\u0000\u1664\u1665\u0007\u0011\u0000"+ - "\u0000\u1665\u049c\u0001\u0000\u0000\u0000\u1666\u1667\u0007\u0012\u0000"+ - "\u0000\u1667\u1668\u0007\u0010\u0000\u0000\u1668\u1669\u0007\r\u0000\u0000"+ - "\u1669\u166a\u0007\u0011\u0000\u0000\u166a\u166b\u0007\u000f\u0000\u0000"+ - "\u166b\u049e\u0001\u0000\u0000\u0000\u166c\u166d\u0007\u000e\u0000\u0000"+ - "\u166d\u166e\u0007\u0014\u0000\u0000\u166e\u166f\u0007\r\u0000\u0000\u166f"+ - "\u04a0\u0001\u0000\u0000\u0000\u1670\u1671\u0007\u000e\u0000\u0000\u1671"+ - "\u1672\u0007\u0013\u0000\u0000\u1672\u1673\u0007\u0007\u0000\u0000\u1673"+ - "\u1674\u0007\u000e\u0000\u0000\u1674\u1675\u0007\u0005\u0000\u0000\u1675"+ - "\u1676\u0007\u0010\u0000\u0000\u1676\u04a2\u0001\u0000\u0000\u0000\u1677"+ - "\u1678\u0007\u000e\u0000\u0000\u1678\u1679\u0007\u0013\u0000\u0000\u1679"+ - "\u167a\u0007\u0007\u0000\u0000\u167a\u167b\u0007\u000e\u0000\u0000\u167b"+ - "\u167c\u0007\u0005\u0000\u0000\u167c\u167d\u0007\u0010\u0000\u0000\u167d"+ - "\u167e\u0005_\u0000\u0000\u167e\u167f\u0007\u001c\u0000\u0000\u167f\u1680"+ - "\u0007\t\u0000\u0000\u1680\u04a4\u0001\u0000\u0000\u0000\u1681\u1682\u0007"+ - "\u0019\u0000\u0000\u1682\u1683\u0007\u0013\u0000\u0000\u1683\u1684\u0007"+ - "\r\u0000\u0000\u1684\u1685\u0007\u000f\u0000\u0000\u1685\u1686\u0007\u0005"+ - "\u0000\u0000\u1686\u1687\u0007\u0010\u0000\u0000\u1687\u04a6\u0001\u0000"+ - "\u0000\u0000\u1688\u1689\u0007\u0011\u0000\u0000\u1689\u168a\u0007\u0007"+ - "\u0000\u0000\u168a\u168b\u0007\u0011\u0000\u0000\u168b\u168c\u0007\u0010"+ - "\u0000\u0000\u168c\u168d\u0007\u000e\u0000\u0000\u168d\u168e\u0007\u0005"+ - "\u0000\u0000\u168e\u168f\u0007\u0018\u0000\u0000\u168f\u04a8\u0001\u0000"+ - "\u0000\u0000\u1690\u1691\u0007\u0006\u0000\u0000\u1691\u1692\u0007\n\u0000"+ - "\u0000\u1692\u1693\u0007\u0007\u0000\u0000\u1693\u1694\u0007\u0017\u0000"+ - "\u0000\u1694\u1695\u0007\u0010\u0000\u0000\u1695\u1696\u0007\u0014\u0000"+ - "\u0000\u1696\u04aa\u0001\u0000\u0000\u0000\u1697\u1698\u0007\u0006\u0000"+ - "\u0000\u1698\u1699\u0007\u0018\u0000\u0000\u1699\u169a\u0007\u0005\u0000"+ - "\u0000\u169a\u169b\u0007\f\u0000\u0000\u169b\u04ac\u0001\u0000\u0000\u0000"+ - "\u169c\u169d\u0007\u0006\u0000\u0000\u169d\u169e\u0007\u0010\u0000\u0000"+ - "\u169e\u169f\u0007\r\u0000\u0000\u169f\u16a0\u0007\u0011\u0000\u0000\u16a0"+ - "\u16a1\u0007\u000f\u0000\u0000\u16a1\u04ae\u0001\u0000\u0000\u0000\u16a2"+ - "\u16a3\u0007\u000f\u0000\u0000\u16a3\u16a4\u0007\f\u0000\u0000\u16a4\u16a5"+ - "\u00055\u0000\u0000\u16a5\u04b0\u0001\u0000\u0000\u0000\u16a6\u16a7\u0007"+ - "\u0018\u0000\u0000\u16a7\u16a8\u0007\u0005\u0000\u0000\u16a8\u16a9\u0007"+ - "\r\u0000\u0000\u16a9\u16aa\u0007\t\u0000\u0000\u16aa\u16ab\u0007\n\u0000"+ - "\u0000\u16ab\u16ac\u0005_\u0000\u0000\u16ac\u16ad\u0007\u0011\u0000\u0000"+ - "\u16ad\u16ae\u0007\f\u0000\u0000\u16ae\u16af\u0007\n\u0000\u0000\u16af"+ - "\u16b0\u0007\u0007\u0000\u0000\u16b0\u16b1\u0007\u0010\u0000\u0000\u16b1"+ - "\u04b2\u0001\u0000\u0000\u0000\u16b2\u16b3\u0007\u0018\u0000\u0000\u16b3"+ - "\u16b4\u0007\u0017\u0000\u0000\u16b4\u16b5\u0005_\u0000\u0000\u16b5\u16b6"+ - "\u0007\u000e\u0000\u0000\u16b6\u16b7\u0007\u0006\u0000\u0000\u16b7\u16b8"+ - "\u0007\u0011\u0000\u0000\u16b8\u16b9\u0007\n\u0000\u0000\u16b9\u16ba\u0007"+ - "\u0007\u0000\u0000\u16ba\u16bb\u0007\u0010\u0000\u0000\u16bb\u16bc\u0005"+ - "_\u0000\u0000\u16bc\u16bd\u0007\n\u0000\u0000\u16bd\u16be\u0007\u0007"+ - "\u0000\u0000\u16be\u16bf\u0007\u000e\u0000\u0000\u16bf\u16c0\u0007\u0013"+ - "\u0000\u0000\u16c0\u16c1\u0007\f\u0000\u0000\u16c1\u16c2\u0007\u0011\u0000"+ - "\u0000\u16c2\u16c3\u0007\u0007\u0000\u0000\u16c3\u16c4\u0007\u0017\u0000"+ - "\u0000\u16c4\u04b4\u0001\u0000\u0000\u0000\u16c5\u16c6\u0007\u001d\u0000"+ - "\u0000\u16c6\u16c7\u0007\u0016\u0000\u0000\u16c7\u16c8\u0007\u0013\u0000"+ - "\u0000\u16c8\u16c9\u0007\u0010\u0000\u0000\u16c9\u16ca\u0007\n\u0000\u0000"+ - "\u16ca\u16cb\u0005_\u0000\u0000\u16cb\u16cc\u0007\u0011\u0000\u0000\u16cc"+ - "\u16cd\u0007\f\u0000\u0000\u16cd\u16ce\u0007\n\u0000\u0000\u16ce\u16cf"+ - "\u0007\u0007\u0000\u0000\u16cf\u16d0\u0007\u0010\u0000\u0000\u16d0\u04b6"+ - "\u0001\u0000\u0000\u0000\u16d1\u16d2\u0007\u001d\u0000\u0000\u16d2\u16d3"+ - "\u0007\u0016\u0000\u0000\u16d3\u16d4\u0007\u0013\u0000\u0000\u16d4\u16d5"+ - "\u0007\u0010\u0000\u0000\u16d5\u16d6\u0007\n\u0000\u0000\u16d6\u16d7\u0005"+ - "_\u0000\u0000\u16d7\u16d8\u0007\u0006\u0000\u0000\u16d8\u16d9\u0007\u0011"+ - "\u0000\u0000\u16d9\u16da\u0007\u0010\u0000\u0000\u16da\u16db\u0007\n\u0000"+ - "\u0000\u16db\u16dc\u0007\r\u0000\u0000\u16dc\u16dd\u0007\u0005\u0000\u0000"+ - "\u16dd\u16de\u0007\u0006\u0000\u0000\u16de\u04b8\u0001\u0000\u0000\u0000"+ - "\u16df\u16e0\u0007\u001d\u0000\u0000\u16e0\u16e1\u0007\u0016\u0000\u0000"+ - "\u16e1\u16e2\u0007\u0013\u0000\u0000\u16e2\u16e3\u0007\u0010\u0000\u0000"+ - "\u16e3\u16e4\u0007\n\u0000\u0000\u16e4\u16e5\u0005_\u0000\u0000\u16e5"+ - "\u16e6\u0007\u0007\u0000\u0000\u16e6\u16e7\u0007\u0016\u0000\u0000\u16e7"+ - "\u16e8\u0007\u0006\u0000\u0000\u16e8\u16e9\u0007\u0006\u0000\u0000\u16e9"+ - "\u16ea\u0007\u0005\u0000\u0000\u16ea\u16eb\u0007\u0012\u0000\u0000\u16eb"+ - "\u16ec\u0007\u0006\u0000\u0000\u16ec\u16ed\u0007\n\u0000\u0000\u16ed\u04ba"+ - "\u0001\u0000\u0000\u0000\u16ee\u16ef\u0007\r\u0000\u0000\u16ef\u16f0\u0007"+ - "\n\u0000\u0000\u16f0\u16f1\u0007\u0017\u0000\u0000\u16f1\u16f2\u0007\n"+ - "\u0000\u0000\u16f2\u16f3\u0007\u001a\u0000\u0000\u16f3\u16f4\u0007\u0018"+ - "\u0000\u0000\u16f4\u16f5\u0005_\u0000\u0000\u16f5\u16f6\u0007\u000e\u0000"+ - "\u0000\u16f6\u16f7\u0007\u0013\u0000\u0000\u16f7\u16f8\u0007\u0016\u0000"+ - "\u0000\u16f8\u16f9\u0007\u0007\u0000\u0000\u16f9\u16fa\u0007\u0010\u0000"+ - "\u0000\u16fa\u04bc\u0001\u0000\u0000\u0000\u16fb\u16fc\u0007\r\u0000\u0000"+ - "\u16fc\u16fd\u0007\n\u0000\u0000\u16fd\u16fe\u0007\u0017\u0000\u0000\u16fe"+ - "\u16ff\u0007\n\u0000\u0000\u16ff\u1700\u0007\u001a\u0000\u0000\u1700\u1701"+ - "\u0007\u0018\u0000\u0000\u1701\u1702\u0005_\u0000\u0000\u1702\u1703\u0007"+ - "\u0011\u0000\u0000\u1703\u1704\u0007\u0007\u0000\u0000\u1704\u1705\u0007"+ - "\t\u0000\u0000\u1705\u1706\u0007\u0010\u0000\u0000\u1706\u1707\u0007\r"+ - "\u0000\u0000\u1707\u04be\u0001\u0000\u0000\u0000\u1708\u1709\u0007\r\u0000"+ - "\u0000\u1709\u170a\u0007\n\u0000\u0000\u170a\u170b\u0007\u0017\u0000\u0000"+ - "\u170b\u170c\u0007\n\u0000\u0000\u170c\u170d\u0007\u001a\u0000\u0000\u170d"+ - "\u170e\u0007\u0018\u0000\u0000\u170e\u170f\u0005_\u0000\u0000\u170f\u1710"+ - "\u0007\u0006\u0000\u0000\u1710\u1711\u0007\u0011\u0000\u0000\u1711\u1712"+ - "\u0007\u0015\u0000\u0000\u1712\u1713\u0007\n\u0000\u0000\u1713\u04c0\u0001"+ - "\u0000\u0000\u0000\u1714\u1715\u0007\r\u0000\u0000\u1715\u1716\u0007\n"+ - "\u0000\u0000\u1716\u1717\u0007\u0017\u0000\u0000\u1717\u1718\u0007\n\u0000"+ - "\u0000\u1718\u1719\u0007\u001a\u0000\u0000\u1719\u171a\u0007\u0018\u0000"+ - "\u0000\u171a\u171b\u0005_\u0000\u0000\u171b\u171c\u0007\u000f\u0000\u0000"+ - "\u171c\u171d\u0007\u0005\u0000\u0000\u171d\u171e\u0007\u0010\u0000\u0000"+ - "\u171e\u171f\u0007\u000e\u0000\u0000\u171f\u1720\u0007\u0014\u0000\u0000"+ - "\u1720\u04c2\u0001\u0000\u0000\u0000\u1721\u1722\u0007\r\u0000\u0000\u1722"+ - "\u1723\u0007\n\u0000\u0000\u1723\u1724\u0007\u0017\u0000\u0000\u1724\u1725"+ - "\u0007\n\u0000\u0000\u1725\u1726\u0007\u001a\u0000\u0000\u1726\u1727\u0007"+ - "\u0018\u0000\u0000\u1727\u1728\u0005_\u0000\u0000\u1728\u1729\u0007\u000f"+ - "\u0000\u0000\u1729\u172a\u0007\u0005\u0000\u0000\u172a\u172b\u0007\u0010"+ - "\u0000\u0000\u172b\u172c\u0007\u000e\u0000\u0000\u172c\u172d\u0007\u0014"+ - "\u0000\u0000\u172d\u172e\u0007\n\u0000\u0000\u172e\u172f\u0007\t\u0000"+ - "\u0000\u172f\u04c4\u0001\u0000\u0000\u0000\u1730\u1731\u0007\r\u0000\u0000"+ - "\u1731\u1732\u0007\n\u0000\u0000\u1732\u1733\u0007\u0017\u0000\u0000\u1733"+ - "\u1734\u0007\n\u0000\u0000\u1734\u1735\u0007\u001a\u0000\u0000\u1735\u1736"+ - "\u0007\u0018\u0000\u0000\u1736\u1737\u0005_\u0000\u0000\u1737\u1738\u0007"+ - "\r\u0000\u0000\u1738\u1739\u0007\n\u0000\u0000\u1739\u173a\u0007\u0018"+ - "\u0000\u0000\u173a\u173b\u0007\u0006\u0000\u0000\u173b\u173c\u0007\u0005"+ - "\u0000\u0000\u173c\u173d\u0007\u000e\u0000\u0000\u173d\u173e\u0007\n\u0000"+ - "\u0000\u173e\u04c6\u0001\u0000\u0000\u0000\u173f\u1740\u0007\r\u0000\u0000"+ - "\u1740\u1741\u0007\n\u0000\u0000\u1741\u1742\u0007\u0017\u0000\u0000\u1742"+ - "\u1743\u0007\n\u0000\u0000\u1743\u1744\u0007\u001a\u0000\u0000\u1744\u1745"+ - "\u0007\u0018\u0000\u0000\u1745\u1746\u0005_\u0000\u0000\u1746\u1747\u0007"+ - "\t\u0000\u0000\u1747\u1748\u0007\u0018\u0000\u0000\u1748\u1749\u0007\u0006"+ - "\u0000\u0000\u1749\u174a\u0007\u0011\u0000\u0000\u174a\u174b\u0007\u0010"+ - "\u0000\u0000\u174b\u174c\u0005_\u0000\u0000\u174c\u174d\u0007\u0010\u0000"+ - "\u0000\u174d\u174e\u0007\u0013\u0000\u0000\u174e\u174f\u0005_\u0000\u0000"+ - "\u174f\u1750\u0007\u0005\u0000\u0000\u1750\u1751\u0007\r\u0000\u0000\u1751"+ - "\u1752\u0007\r\u0000\u0000\u1752\u1753\u0007\u0005\u0000\u0000\u1753\u1754"+ - "\u0007\b\u0000\u0000\u1754\u04c8\u0001\u0000\u0000\u0000\u1755\u1756\u0007"+ - "\r\u0000\u0000\u1756\u1757\u0007\n\u0000\u0000\u1757\u1758\u0007\u0017"+ - "\u0000\u0000\u1758\u1759\u0007\n\u0000\u0000\u1759\u175a\u0007\u001a\u0000"+ - "\u0000\u175a\u175b\u0007\u0018\u0000\u0000\u175b\u175c\u0005_\u0000\u0000"+ - "\u175c\u175d\u0007\t\u0000\u0000\u175d\u175e\u0007\u0018\u0000\u0000\u175e"+ - "\u175f\u0007\u0006\u0000\u0000\u175f\u1760\u0007\u0011\u0000\u0000\u1760"+ - "\u1761\u0007\u0010\u0000\u0000\u1761\u1762\u0005_\u0000\u0000\u1762\u1763"+ - "\u0007\u0010\u0000\u0000\u1763\u1764\u0007\u0013\u0000\u0000\u1764\u1765"+ - "\u0005_\u0000\u0000\u1765\u1766\u0007\u0010\u0000\u0000\u1766\u1767\u0007"+ - "\u0005\u0000\u0000\u1767\u1768\u0007\u0012\u0000\u0000\u1768\u1769\u0007"+ - "\u0006\u0000\u0000\u1769\u176a\u0007\n\u0000\u0000\u176a\u04ca\u0001\u0000"+ - "\u0000\u0000\u176b\u176c\u0007\r\u0000\u0000\u176c\u176d\u0007\n\u0000"+ - "\u0000\u176d\u176e\u0007\u0017\u0000\u0000\u176e\u176f\u0007\n\u0000\u0000"+ - "\u176f\u1770\u0007\u001a\u0000\u0000\u1770\u1771\u0007\u0018\u0000\u0000"+ - "\u1771\u1772\u0005_\u0000\u0000\u1772\u1773\u0007\t\u0000\u0000\u1773"+ - "\u1774\u0007\u0016\u0000\u0000\u1774\u1775\u0007\u0012\u0000\u0000\u1775"+ - "\u1776\u0007\t\u0000\u0000\u1776\u1777\u0007\u0010\u0000\u0000\u1777\u1778"+ - "\u0007\r\u0000\u0000\u1778\u04cc\u0001\u0000\u0000\u0000\u1779\u177a\u0007"+ - "\r\u0000\u0000\u177a\u177b\u0007\n\u0000\u0000\u177b\u177c\u0007\u0018"+ - "\u0000\u0000\u177c\u177d\u0007\n\u0000\u0000\u177d\u177e\u0007\u0005\u0000"+ - "\u0000\u177e\u177f\u0007\u0010\u0000\u0000\u177f\u04ce\u0001\u0000\u0000"+ - "\u0000\u1780\u1781\u0007\r\u0000\u0000\u1781\u1782\u0007\u0018\u0000\u0000"+ - "\u1782\u1783\u0007\u0005\u0000\u0000\u1783\u1784\u0007\f\u0000\u0000\u1784"+ - "\u04d0\u0001\u0000\u0000\u0000\u1785\u1786\u0007\r\u0000\u0000\u1786\u1787"+ - "\u0007\u0010\u0000\u0000\u1787\u1788\u0007\r\u0000\u0000\u1788\u1789\u0007"+ - "\u0011\u0000\u0000\u1789\u178a\u0007\u000f\u0000\u0000\u178a\u04d2\u0001"+ - "\u0000\u0000\u0000\u178b\u178c\u0007\t\u0000\u0000\u178c\u178d\u0007\u0018"+ - "\u0000\u0000\u178d\u178e\u0007\u0006\u0000\u0000\u178e\u178f\u0007\u0011"+ - "\u0000\u0000\u178f\u1790\u0007\u0010\u0000\u0000\u1790\u1791\u0005_\u0000"+ - "\u0000\u1791\u1792\u0007\u0018\u0000\u0000\u1792\u1793\u0007\u0005\u0000"+ - "\u0000\u1793\u1794\u0007\r\u0000\u0000\u1794\u1795\u0007\u0010\u0000\u0000"+ - "\u1795\u04d4\u0001\u0000\u0000\u0000\u1796\u1797\u0007\t\u0000\u0000\u1797"+ - "\u1798\u0007\u0010\u0000\u0000\u1798\u1799\u0007\u0005\u0000\u0000\u1799"+ - "\u179a\u0007\r\u0000\u0000\u179a\u179b\u0007\u0010\u0000\u0000\u179b\u179c"+ - "\u0007\t\u0000\u0000\u179c\u179d\u0005_\u0000\u0000\u179d\u179e\u0007"+ - "\u001c\u0000\u0000\u179e\u179f\u0007\u0011\u0000\u0000\u179f\u17a0\u0007"+ - "\u0010\u0000\u0000\u17a0\u17a1\u0007\u0014\u0000\u0000\u17a1\u04d6\u0001"+ - "\u0000\u0000\u0000\u17a2\u17a3\u0007\t\u0000\u0000\u17a3\u17a4\u0007\u0010"+ - "\u0000\u0000\u17a4\u17a5\u0007\r\u0000\u0000\u17a5\u17a6\u0007\u0011\u0000"+ - "\u0000\u17a6\u17a7\u0007\u0007\u0000\u0000\u17a7\u17a8\u0007\u0017\u0000"+ - "\u0000\u17a8\u17a9\u0005_\u0000\u0000\u17a9\u17aa\u0007\u0010\u0000\u0000"+ - "\u17aa\u17ab\u0007\u0013\u0000\u0000\u17ab\u17ac\u0005_\u0000\u0000\u17ac"+ - "\u17ad\u0007\u0005\u0000\u0000\u17ad\u17ae\u0007\r\u0000\u0000\u17ae\u17af"+ - "\u0007\r\u0000\u0000\u17af\u17b0\u0007\u0005\u0000\u0000\u17b0\u17b1\u0007"+ - "\b\u0000\u0000\u17b1\u04d8\u0001\u0000\u0000\u0000\u17b2\u17b3\u0007\t"+ - "\u0000\u0000\u17b3\u17b4\u0007\u0010\u0000\u0000\u17b4\u17b5\u0007\r\u0000"+ - "\u0000\u17b5\u17b6\u0007\u0011\u0000\u0000\u17b6\u17b7\u0007\u0007\u0000"+ - "\u0000\u17b7\u17b8\u0007\u0017\u0000\u0000\u17b8\u17b9\u0005_\u0000\u0000"+ - "\u17b9\u17ba\u0007\u0010\u0000\u0000\u17ba\u17bb\u0007\u0013\u0000\u0000"+ - "\u17bb\u17bc\u0005_\u0000\u0000\u17bc\u17bd\u0007\u0010\u0000\u0000\u17bd"+ - "\u17be\u0007\u0005\u0000\u0000\u17be\u17bf\u0007\u0012\u0000\u0000\u17bf"+ - "\u17c0\u0007\u0006\u0000\u0000\u17c0\u17c1\u0007\n\u0000\u0000\u17c1\u04da"+ - "\u0001\u0000\u0000\u0000\u17c2\u17c3\u0007\t\u0000\u0000\u17c3\u17c4\u0007"+ - "\u0010\u0000\u0000\u17c4\u17c5\u0007\r\u0000\u0000\u17c5\u17c6\u0007\u0018"+ - "\u0000\u0000\u17c6\u17c7\u0007\u0013\u0000\u0000\u17c7\u17c8\u0007\t\u0000"+ - "\u0000\u17c8\u04dc\u0001\u0000\u0000\u0000\u17c9\u17ca\u0007\t\u0000\u0000"+ - "\u17ca\u17cb\u0007\u0016\u0000\u0000\u17cb\u17cc\u0007\u0012\u0000\u0000"+ - "\u17cc\u17cd\u0007\t\u0000\u0000\u17cd\u17ce\u0007\u0010\u0000\u0000\u17ce"+ - "\u17cf\u0007\r\u0000\u0000\u17cf\u04de\u0001\u0000\u0000\u0000\u17d0\u17d1"+ - "\u0007\u0010\u0000\u0000\u17d1\u17d2\u0007\u0013\u0000\u0000\u17d2\u17d3"+ - "\u0005_\u0000\u0000\u17d3\u17d4\u0007\u0005\u0000\u0000\u17d4\u17d5\u0007"+ - "\t\u0000\u0000\u17d5\u17d6\u0007\u000e\u0000\u0000\u17d6\u17d7\u0007\u0011"+ - "\u0000\u0000\u17d7\u17d8\u0007\u0011\u0000\u0000\u17d8\u04e0\u0001\u0000"+ - "\u0000\u0000\u17d9\u17da\u0007\u0010\u0000\u0000\u17da\u17db\u0007\u0013"+ - "\u0000\u0000\u17db\u17dc\u0005_\u0000\u0000\u17dc\u17dd\u0007\u0014\u0000"+ - "\u0000\u17dd\u17de\u0007\n\u0000\u0000\u17de\u17df\u0007\u001a\u0000\u0000"+ - "\u17df\u04e2\u0001\u0000\u0000\u0000\u17e0\u17e1\u0007\u0010\u0000\u0000"+ - "\u17e1\u17e2\u0007\r\u0000\u0000\u17e2\u17e3\u0007\u0005\u0000\u0000\u17e3"+ - "\u17e4\u0007\u0007\u0000\u0000\u17e4\u17e5\u0007\t\u0000\u0000\u17e5\u17e6"+ - "\u0007\u0006\u0000\u0000\u17e6\u17e7\u0007\u0005\u0000\u0000\u17e7\u17e8"+ - "\u0007\u0010\u0000\u0000\u17e8\u17e9\u0007\n\u0000\u0000\u17e9\u04e4\u0001"+ - "\u0000\u0000\u0000\u17ea\u17eb\u0007\u0016\u0000\u0000\u17eb\u17ec\u0007"+ - "\u0007\u0000\u0000\u17ec\u17ed\u0007\u0011\u0000\u0000\u17ed\u17ee\u0007"+ - "\t\u0000\u0000\u17ee\u17ef\u0007\u0010\u0000\u0000\u17ef\u17f0\u0007\r"+ - "\u0000\u0000\u17f0\u04e6\u0001\u0000\u0000\u0000\u17f1\u17f2\u0007\u0005"+ - "\u0000\u0000\u17f2\u17f3\u0007\u0017\u0000\u0000\u17f3\u17f4\u0007\n\u0000"+ - "\u0000\u17f4\u04e8\u0001\u0000\u0000\u0000\u17f5\u17f6\u0007\u000e\u0000"+ - "\u0000\u17f6\u17f7\u0007\u0006\u0000\u0000\u17f7\u17f8\u0007\u0013\u0000"+ - "\u0000\u17f8\u17f9\u0007\u000e\u0000\u0000\u17f9\u17fa\u0007\u0015\u0000"+ - "\u0000\u17fa\u17fb\u0005_\u0000\u0000\u17fb\u17fc\u0007\u0010\u0000\u0000"+ - "\u17fc\u17fd\u0007\u0011\u0000\u0000\u17fd\u17fe\u0007\u000f\u0000\u0000"+ - "\u17fe\u17ff\u0007\n\u0000\u0000\u17ff\u1800\u0007\t\u0000\u0000\u1800"+ - "\u1801\u0007\u0010\u0000\u0000\u1801\u1802\u0007\u0005\u0000\u0000\u1802"+ - "\u1803\u0007\u000f\u0000\u0000\u1803\u1804\u0007\u0018\u0000\u0000\u1804"+ - "\u04ea\u0001\u0000\u0000\u0000\u1805\u1806\u0007\f\u0000\u0000\u1806\u1807"+ - "\u0007\u0005\u0000\u0000\u1807\u1808\u0007\u0010\u0000\u0000\u1808\u1809"+ - "\u0007\n\u0000\u0000\u1809\u180a\u0005_\u0000\u0000\u180a\u180b\u0007"+ - "\u0012\u0000\u0000\u180b\u180c\u0007\u0011\u0000\u0000\u180c\u180d\u0007"+ - "\u0007\u0000\u0000\u180d\u04ec\u0001\u0000\u0000\u0000\u180e\u180f\u0007"+ - "\f\u0000\u0000\u180f\u1810\u0007\u0005\u0000\u0000\u1810\u1811\u0007\u0010"+ - "\u0000\u0000\u1811\u1812\u0007\n\u0000\u0000\u1812\u1813\u0005_\u0000"+ - "\u0000\u1813\u1814\u0007\u0018\u0000\u0000\u1814\u1815\u0007\u0005\u0000"+ - "\u0000\u1815\u1816\u0007\r\u0000\u0000\u1816\u1817\u0007\u0010\u0000\u0000"+ - "\u1817\u04ee\u0001\u0000\u0000\u0000\u1818\u1819\u0007\f\u0000\u0000\u1819"+ - "\u181a\u0007\u0005\u0000\u0000\u181a\u181b\u0007\u0010\u0000\u0000\u181b"+ - "\u181c\u0007\n\u0000\u0000\u181c\u181d\u0005_\u0000\u0000\u181d\u181e"+ - "\u0007\u0010\u0000\u0000\u181e\u181f\u0007\r\u0000\u0000\u181f\u1820\u0007"+ - "\u0016\u0000\u0000\u1820\u1821\u0007\u0007\u0000\u0000\u1821\u1822\u0007"+ - "\u000e\u0000\u0000\u1822\u04f0\u0001\u0000\u0000\u0000\u1823\u1824\u0007"+ - "\u0011\u0000\u0000\u1824\u1825\u0007\t\u0000\u0000\u1825\u1826\u0007\u0019"+ - "\u0000\u0000\u1826\u1827\u0007\u0011\u0000\u0000\u1827\u1828\u0007\u0007"+ - "\u0000\u0000\u1828\u1829\u0007\u0011\u0000\u0000\u1829\u182a\u0007\u0010"+ - "\u0000\u0000\u182a\u182b\u0007\n\u0000\u0000\u182b\u04f2\u0001\u0000\u0000"+ - "\u0000\u182c\u182d\u0007\u001e\u0000\u0000\u182d\u182e\u0007\u0016\u0000"+ - "\u0000\u182e\u182f\u0007\t\u0000\u0000\u182f\u1830\u0007\u0010\u0000\u0000"+ - "\u1830\u1831\u0007\u0011\u0000\u0000\u1831\u1832\u0007\u0019\u0000\u0000"+ - "\u1832\u1833\u0007\b\u0000\u0000\u1833\u1834\u0005_\u0000\u0000\u1834"+ - "\u1835\u0007\f\u0000\u0000\u1835\u1836\u0007\u0005\u0000\u0000\u1836\u1837"+ - "\u0007\b\u0000\u0000\u1837\u1838\u0007\t\u0000\u0000\u1838\u04f4\u0001"+ - "\u0000\u0000\u0000\u1839\u183a\u0007\u001e\u0000\u0000\u183a\u183b\u0007"+ - "\u0016\u0000\u0000\u183b\u183c\u0007\t\u0000\u0000\u183c\u183d\u0007\u0010"+ - "\u0000\u0000\u183d\u183e\u0007\u0011\u0000\u0000\u183e\u183f\u0007\u0019"+ - "\u0000\u0000\u183f\u1840\u0007\b\u0000\u0000\u1840\u1841\u0005_\u0000"+ - "\u0000\u1841\u1842\u0007\u0014\u0000\u0000\u1842\u1843\u0007\u0013\u0000"+ - "\u0000\u1843\u1844\u0007\u0016\u0000\u0000\u1844\u1845\u0007\r\u0000\u0000"+ - "\u1845\u1846\u0007\t\u0000\u0000\u1846\u04f6\u0001\u0000\u0000\u0000\u1847"+ - "\u1848\u0007\u001e\u0000\u0000\u1848\u1849\u0007\u0016\u0000\u0000\u1849"+ - "\u184a\u0007\t\u0000\u0000\u184a\u184b\u0007\u0010\u0000\u0000\u184b\u184c"+ - "\u0007\u0011\u0000\u0000\u184c\u184d\u0007\u0019\u0000\u0000\u184d\u184e"+ - "\u0007\b\u0000\u0000\u184e\u184f\u0005_\u0000\u0000\u184f\u1850\u0007"+ - "\u0011\u0000\u0000\u1850\u1851\u0007\u0007\u0000\u0000\u1851\u1852\u0007"+ - "\u0010\u0000\u0000\u1852\u1853\u0007\n\u0000\u0000\u1853\u1854\u0007\r"+ - "\u0000\u0000\u1854\u1855\u0007\u001b\u0000\u0000\u1855\u1856\u0007\u0005"+ - "\u0000\u0000\u1856\u1857\u0007\u0006\u0000\u0000\u1857\u04f8\u0001\u0000"+ - "\u0000\u0000\u1858\u1859\u0007\u000f\u0000\u0000\u1859\u185a\u0007\u0005"+ - "\u0000\u0000\u185a\u185b\u0007\u0015\u0000\u0000\u185b\u185c\u0007\n\u0000"+ - "\u0000\u185c\u185d\u0005_\u0000\u0000\u185d\u185e\u0007\f\u0000\u0000"+ - "\u185e\u185f\u0007\u0005\u0000\u0000\u185f\u1860\u0007\u0010\u0000\u0000"+ - "\u1860\u1861\u0007\n\u0000\u0000\u1861\u04fa\u0001\u0000\u0000\u0000\u1862"+ - "\u1863\u0007\u000f\u0000\u0000\u1863\u1864\u0007\u0005\u0000\u0000\u1864"+ - "\u1865\u0007\u0015\u0000\u0000\u1865\u1866\u0007\n\u0000\u0000\u1866\u1867"+ - "\u0005_\u0000\u0000\u1867\u1868\u0007\u0011\u0000\u0000\u1868\u1869\u0007"+ - "\u0007\u0000\u0000\u1869\u186a\u0007\u0010\u0000\u0000\u186a\u186b\u0007"+ - "\n\u0000\u0000\u186b\u186c\u0007\r\u0000\u0000\u186c\u186d\u0007\u001b"+ - "\u0000\u0000\u186d\u186e\u0007\u0005\u0000\u0000\u186e\u186f\u0007\u0006"+ - "\u0000\u0000\u186f\u04fc\u0001\u0000\u0000\u0000\u1870\u1871\u0007\u000f"+ - "\u0000\u0000\u1871\u1872\u0007\u0005\u0000\u0000\u1872\u1873\u0007\u0015"+ - "\u0000\u0000\u1873\u1874\u0007\n\u0000\u0000\u1874\u1875\u0005_\u0000"+ - "\u0000\u1875\u1876\u0007\u0010\u0000\u0000\u1876\u1877\u0007\u0011\u0000"+ - "\u0000\u1877\u1878\u0007\u000f\u0000\u0000\u1878\u1879\u0007\n\u0000\u0000"+ - "\u1879\u04fe\u0001\u0000\u0000\u0000\u187a\u187b\u0007\u000f\u0000\u0000"+ - "\u187b\u187c\u0007\u0005\u0000\u0000\u187c\u187d\u0007\u0015\u0000\u0000"+ - "\u187d\u187e\u0007\n\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\u0500\u0001\u0000\u0000\u0000\u1889\u188a\u0007"+ - "\u000f\u0000\u0000\u188a\u188b\u0007\u0005\u0000\u0000\u188b\u188c\u0007"+ - "\u0015\u0000\u0000\u188c\u188d\u0007\n\u0000\u0000\u188d\u188e\u0005_"+ - "\u0000\u0000\u188e\u188f\u0007\u0010\u0000\u0000\u188f\u1890\u0007\u0011"+ - "\u0000\u0000\u1890\u1891\u0007\u000f\u0000\u0000\u1891\u1892\u0007\n\u0000"+ - "\u0000\u1892\u1893\u0007\t\u0000\u0000\u1893\u1894\u0007\u0010\u0000\u0000"+ - "\u1894\u1895\u0007\u0005\u0000\u0000\u1895\u1896\u0007\u000f\u0000\u0000"+ - "\u1896\u1897\u0007\u0018\u0000\u0000\u1897\u1898\u0007\u0010\u0000\u0000"+ - "\u1898\u1899\u0007\u000b\u0000\u0000\u1899\u0502\u0001\u0000\u0000\u0000"+ - "\u189a\u189b\u0007\u0007\u0000\u0000\u189b\u189c\u0007\u0013\u0000\u0000"+ - "\u189c\u189d\u0007\u001c\u0000\u0000\u189d\u0504\u0001\u0000\u0000\u0000"+ - "\u189e\u189f\u0007\t\u0000\u0000\u189f\u18a0\u0007\u0010\u0000\u0000\u18a0"+ - "\u18a1\u0007\u0005\u0000\u0000\u18a1\u18a2\u0007\u0010\u0000\u0000\u18a2"+ - "\u18a3\u0007\n\u0000\u0000\u18a3\u18a4\u0007\u000f\u0000\u0000\u18a4\u18a5"+ - "\u0007\n\u0000\u0000\u18a5\u18a6\u0007\u0007\u0000\u0000\u18a6\u18a7\u0007"+ - "\u0010\u0000\u0000\u18a7\u18a8\u0005_\u0000\u0000\u18a8\u18a9\u0007\u0010"+ - "\u0000\u0000\u18a9\u18aa\u0007\u0011\u0000\u0000\u18aa\u18ab\u0007\u000f"+ - "\u0000\u0000\u18ab\u18ac\u0007\n\u0000\u0000\u18ac\u18ad\u0007\t\u0000"+ - "\u0000\u18ad\u18ae\u0007\u0010\u0000\u0000\u18ae\u18af\u0007\u0005\u0000"+ - "\u0000\u18af\u18b0\u0007\u000f\u0000\u0000\u18b0\u18b1\u0007\u0018\u0000"+ - "\u0000\u18b1\u0506\u0001\u0000\u0000\u0000\u18b2\u18b3\u0007\u0010\u0000"+ - "\u0000\u18b3\u18b4\u0007\u0011\u0000\u0000\u18b4\u18b5\u0007\u000f\u0000"+ - "\u0000\u18b5\u18b6\u0007\n\u0000\u0000\u18b6\u18b7\u0007\u0013\u0000\u0000"+ - "\u18b7\u18b8\u0007\u0019\u0000\u0000\u18b8\u18b9\u0007\f\u0000\u0000\u18b9"+ - "\u18ba\u0007\u0005\u0000\u0000\u18ba\u18bb\u0007\b\u0000\u0000\u18bb\u0508"+ - "\u0001\u0000\u0000\u0000\u18bc\u18bd\u0007\u0010\u0000\u0000\u18bd\u18be"+ - "\u0007\r\u0000\u0000\u18be\u18bf\u0007\u0005\u0000\u0000\u18bf\u18c0\u0007"+ - "\u0007\u0000\u0000\u18c0\u18c1\u0007\t\u0000\u0000\u18c1\u18c2\u0007\u0005"+ - "\u0000\u0000\u18c2\u18c3\u0007\u000e\u0000\u0000\u18c3\u18c4\u0007\u0010"+ - "\u0000\u0000\u18c4\u18c5\u0007\u0011\u0000\u0000\u18c5\u18c6\u0007\u0013"+ - "\u0000\u0000\u18c6\u18c7\u0007\u0007\u0000\u0000\u18c7\u18c8\u0005_\u0000"+ - "\u0000\u18c8\u18c9\u0007\u0010\u0000\u0000\u18c9\u18ca\u0007\u0011\u0000"+ - "\u0000\u18ca\u18cb\u0007\u000f\u0000\u0000\u18cb\u18cc\u0007\n\u0000\u0000"+ - "\u18cc\u18cd\u0007\t\u0000\u0000\u18cd\u18ce\u0007\u0010\u0000\u0000\u18ce"+ - "\u18cf\u0007\u0005\u0000\u0000\u18cf\u18d0\u0007\u000f\u0000\u0000\u18d0"+ - "\u18d1\u0007\u0018\u0000\u0000\u18d1\u050a\u0001\u0000\u0000\u0000\u18d2"+ - "\u18d3\u0007\u0010\u0000\u0000\u18d3\u18d4\u0007\u0013\u0000\u0000\u18d4"+ - "\u18d5\u0005_\u0000\u0000\u18d5\u18d6\u0007\u0010\u0000\u0000\u18d6\u18d7"+ - "\u0007\u0011\u0000\u0000\u18d7\u18d8\u0007\u000f\u0000\u0000\u18d8\u18d9"+ - "\u0007\n\u0000\u0000\u18d9\u18da\u0007\t\u0000\u0000\u18da\u18db\u0007"+ - "\u0010\u0000\u0000\u18db\u18dc\u0007\u0005\u0000\u0000\u18dc\u18dd\u0007"+ - "\u000f\u0000\u0000\u18dd\u18de\u0007\u0018\u0000\u0000\u18de\u050c\u0001"+ - "\u0000\u0000\u0000\u18df\u18e0\u0007\u0010\u0000\u0000\u18e0\u18e1\u0007"+ - "\u0013\u0000\u0000\u18e1\u18e2\u0005_\u0000\u0000\u18e2\u18e3\u0007\u000e"+ - "\u0000\u0000\u18e3\u18e4\u0007\u0014\u0000\u0000\u18e4\u18e5\u0007\u0005"+ - "\u0000\u0000\u18e5\u18e6\u0007\r\u0000\u0000\u18e6\u050e\u0001\u0000\u0000"+ - "\u0000\u18e7\u18e8\u0007\u0010\u0000\u0000\u18e8\u18e9\u0007\u0013\u0000"+ - "\u0000\u18e9\u18ea\u0005_\u0000\u0000\u18ea\u18eb\u0007\f\u0000\u0000"+ - "\u18eb\u18ec\u0007\u0005\u0000\u0000\u18ec\u18ed\u0007\u0010\u0000\u0000"+ - "\u18ed\u18ee\u0007\n\u0000\u0000\u18ee\u0510\u0001\u0000\u0000\u0000\u18ef"+ - "\u18f0\u0007\u0010\u0000\u0000\u18f0\u18f1\u0007\u0013\u0000\u0000\u18f1"+ - "\u18f2\u0005_\u0000\u0000\u18f2\u18f3\u0007\u0007\u0000\u0000\u18f3\u18f4"+ - "\u0007\u0016\u0000\u0000\u18f4\u18f5\u0007\u000f\u0000\u0000\u18f5\u18f6"+ - "\u0007\u0012\u0000\u0000\u18f6\u18f7\u0007\n\u0000\u0000\u18f7\u18f8\u0007"+ - "\r\u0000\u0000\u18f8\u0512\u0001\u0000\u0000\u0000\u18f9\u18fd\u0003\u0515"+ - "\u0288\u0000\u18fa\u18fc\u0003\u0517\u0289\u0000\u18fb\u18fa\u0001\u0000"+ - "\u0000\u0000\u18fc\u18ff\u0001\u0000\u0000\u0000\u18fd\u18fb\u0001\u0000"+ - "\u0000\u0000\u18fd\u18fe\u0001\u0000\u0000\u0000\u18fe\u0514\u0001\u0000"+ - "\u0000\u0000\u18ff\u18fd\u0001\u0000\u0000\u0000\u1900\u1907\u0007\u001f"+ - "\u0000\u0000\u1901\u1902\u0007 \u0000\u0000\u1902\u1907\u0004\u0288\u0006"+ - "\u0000\u1903\u1904\u0007!\u0000\u0000\u1904\u1905\u0007\"\u0000\u0000"+ - "\u1905\u1907\u0004\u0288\u0007\u0000\u1906\u1900\u0001\u0000\u0000\u0000"+ - "\u1906\u1901\u0001\u0000\u0000\u0000\u1906\u1903\u0001\u0000\u0000\u0000"+ - "\u1907\u0516\u0001\u0000\u0000\u0000\u1908\u190b\u0003\u0519\u028a\u0000"+ - "\u1909\u190b\u0005$\u0000\u0000\u190a\u1908\u0001\u0000\u0000\u0000\u190a"+ - "\u1909\u0001\u0000\u0000\u0000\u190b\u0518\u0001\u0000\u0000\u0000\u190c"+ - "\u190f\u0003\u0515\u0288\u0000\u190d\u190f\u0007\u0000\u0000\u0000\u190e"+ - "\u190c\u0001\u0000\u0000\u0000\u190e\u190d\u0001\u0000\u0000\u0000\u190f"+ - "\u051a\u0001\u0000\u0000\u0000\u1910\u1911\u0003\u051d\u028c\u0000\u1911"+ - "\u1912\u0005\"\u0000\u0000\u1912\u051c\u0001\u0000\u0000\u0000\u1913\u1919"+ - "\u0005\"\u0000\u0000\u1914\u1915\u0005\"\u0000\u0000\u1915\u1918\u0005"+ - "\"\u0000\u0000\u1916\u1918\b#\u0000\u0000\u1917\u1914\u0001\u0000\u0000"+ - "\u0000\u1917\u1916\u0001\u0000\u0000\u0000\u1918\u191b\u0001\u0000\u0000"+ - "\u0000\u1919\u1917\u0001\u0000\u0000\u0000\u1919\u191a\u0001\u0000\u0000"+ - "\u0000\u191a\u051e\u0001\u0000\u0000\u0000\u191b\u1919\u0001\u0000\u0000"+ - "\u0000\u191c\u191d\u0003\u0521\u028e\u0000\u191d\u191e\u0005\"\u0000\u0000"+ - "\u191e\u0520\u0001\u0000\u0000\u0000\u191f\u1925\u0005\"\u0000\u0000\u1920"+ - "\u1921\u0005\"\u0000\u0000\u1921\u1924\u0005\"\u0000\u0000\u1922\u1924"+ - "\b$\u0000\u0000\u1923\u1920\u0001\u0000\u0000\u0000\u1923\u1922\u0001"+ - "\u0000\u0000\u0000\u1924\u1927\u0001\u0000\u0000\u0000\u1925\u1923\u0001"+ - "\u0000\u0000\u0000\u1925\u1926\u0001\u0000\u0000\u0000\u1926\u0522\u0001"+ - "\u0000\u0000\u0000\u1927\u1925\u0001\u0000\u0000\u0000\u1928\u1929\u0007"+ - "\u0016\u0000\u0000\u1929\u192a\u0005&\u0000\u0000\u192a\u192b\u0003\u051b"+ - "\u028b\u0000\u192b\u0524\u0001\u0000\u0000\u0000\u192c\u192d\u0007\u0016"+ - "\u0000\u0000\u192d\u192e\u0005&\u0000\u0000\u192e\u192f\u0003\u051d\u028c"+ - "\u0000\u192f\u0526\u0001\u0000\u0000\u0000\u1930\u1931\u0007\u0016\u0000"+ - "\u0000\u1931\u1932\u0005&\u0000\u0000\u1932\u1933\u0003\u051f\u028d\u0000"+ - "\u1933\u0528\u0001\u0000\u0000\u0000\u1934\u1935\u0007\u0016\u0000\u0000"+ - "\u1935\u1936\u0005&\u0000\u0000\u1936\u1937\u0003\u0521\u028e\u0000\u1937"+ - "\u052a\u0001\u0000\u0000\u0000\u1938\u1939\u0003\u052d\u0294\u0000\u1939"+ - "\u193a\u0005\'\u0000\u0000\u193a\u052c\u0001\u0000\u0000\u0000\u193b\u1941"+ - "\u0005\'\u0000\u0000\u193c\u193d\u0005\'\u0000\u0000\u193d\u1940\u0005"+ - "\'\u0000\u0000\u193e\u1940\b%\u0000\u0000\u193f\u193c\u0001\u0000\u0000"+ - "\u0000\u193f\u193e\u0001\u0000\u0000\u0000\u1940\u1943\u0001\u0000\u0000"+ - "\u0000\u1941\u193f\u0001\u0000\u0000\u0000\u1941\u1942\u0001\u0000\u0000"+ - "\u0000\u1942\u052e\u0001\u0000\u0000\u0000\u1943\u1941\u0001\u0000\u0000"+ - "\u0000\u1944\u1945\u0007\n\u0000\u0000\u1945\u1946\u0005\'\u0000\u0000"+ - "\u1946\u1947\u0001\u0000\u0000\u0000\u1947\u1948\u0006\u0295\u0002\u0000"+ - "\u1948\u1949\u0006\u0295\u0003\u0000\u1949\u0530\u0001\u0000\u0000\u0000"+ - "\u194a\u194b\u0003\u0533\u0297\u0000\u194b\u194c\u0005\'\u0000\u0000\u194c"+ - "\u0532\u0001\u0000\u0000\u0000\u194d\u194e\u0007\u0016\u0000\u0000\u194e"+ - "\u194f\u0005&\u0000\u0000\u194f\u1950\u0003\u052d\u0294\u0000\u1950\u0534"+ - "\u0001\u0000\u0000\u0000\u1951\u1953\u0005$\u0000\u0000\u1952\u1954\u0003"+ - "\u0537\u0299\u0000\u1953\u1952\u0001\u0000\u0000\u0000\u1953\u1954\u0001"+ - "\u0000\u0000\u0000\u1954\u1955\u0001\u0000\u0000\u0000\u1955\u1956\u0005"+ - "$\u0000\u0000\u1956\u1957\u0006\u0298\u0004\u0000\u1957\u1958\u0001\u0000"+ - "\u0000\u0000\u1958\u1959\u0006\u0298\u0005\u0000\u1959\u0536\u0001\u0000"+ - "\u0000\u0000\u195a\u195e\u0003\u0515\u0288\u0000\u195b\u195d\u0003\u0519"+ - "\u028a\u0000\u195c\u195b\u0001\u0000\u0000\u0000\u195d\u1960\u0001\u0000"+ - "\u0000\u0000\u195e\u195c\u0001\u0000\u0000\u0000\u195e\u195f\u0001\u0000"+ - "\u0000\u0000\u195f\u0538\u0001\u0000\u0000\u0000\u1960\u195e\u0001\u0000"+ - "\u0000\u0000\u1961\u1962\u0003\u053b\u029b\u0000\u1962\u1963\u0005\'\u0000"+ - "\u0000\u1963\u053a\u0001\u0000\u0000\u0000\u1964\u1965\u0007\u0012\u0000"+ - "\u0000\u1965\u1969\u0005\'\u0000\u0000\u1966\u1968\u0007&\u0000\u0000"+ - "\u1967\u1966\u0001\u0000\u0000\u0000\u1968\u196b\u0001\u0000\u0000\u0000"+ - "\u1969\u1967\u0001\u0000\u0000\u0000\u1969\u196a\u0001\u0000\u0000\u0000"+ - "\u196a\u053c\u0001\u0000\u0000\u0000\u196b\u1969\u0001\u0000\u0000\u0000"+ - "\u196c\u196d\u0003\u053f\u029d\u0000\u196d\u196e\u0005\'\u0000\u0000\u196e"+ - "\u053e\u0001\u0000\u0000\u0000\u196f\u1970\u0007\u0012\u0000\u0000\u1970"+ - "\u1971\u0003\u052d\u0294\u0000\u1971\u0540\u0001\u0000\u0000\u0000\u1972"+ - "\u1973\u0003\u0543\u029f\u0000\u1973\u1974\u0005\'\u0000\u0000\u1974\u0542"+ - "\u0001\u0000\u0000\u0000\u1975\u1976\u0007\u001a\u0000\u0000\u1976\u197a"+ - "\u0005\'\u0000\u0000\u1977\u1979\u0007\'\u0000\u0000\u1978\u1977\u0001"+ - "\u0000\u0000\u0000\u1979\u197c\u0001\u0000\u0000\u0000\u197a\u1978\u0001"+ - "\u0000\u0000\u0000\u197a\u197b\u0001\u0000\u0000\u0000\u197b\u0544\u0001"+ - "\u0000\u0000\u0000\u197c\u197a\u0001\u0000\u0000\u0000\u197d\u197e\u0003"+ - "\u0547\u02a1\u0000\u197e\u197f\u0005\'\u0000\u0000\u197f\u0546\u0001\u0000"+ - "\u0000\u0000\u1980\u1981\u0007\u001a\u0000\u0000\u1981\u1982\u0003\u052d"+ - "\u0294\u0000\u1982\u0548\u0001\u0000\u0000\u0000\u1983\u1984\u0003\u054f"+ - "\u02a5\u0000\u1984\u054a\u0001\u0000\u0000\u0000\u1985\u1986\u0003\u054f"+ - "\u02a5\u0000\u1986\u1987\u0005.\u0000\u0000\u1987\u1988\u0005.\u0000\u0000"+ - "\u1988\u1989\u0001\u0000\u0000\u0000\u1989\u198a\u0006\u02a3\u0006\u0000"+ - "\u198a\u054c\u0001\u0000\u0000\u0000\u198b\u198c\u0003\u054f\u02a5\u0000"+ - "\u198c\u198e\u0005.\u0000\u0000\u198d\u198f\u0003\u054f\u02a5\u0000\u198e"+ - "\u198d\u0001\u0000\u0000\u0000\u198e\u198f\u0001\u0000\u0000\u0000\u198f"+ - "\u1995\u0001\u0000\u0000\u0000\u1990\u1992\u0007\n\u0000\u0000\u1991\u1993"+ - "\u0007\u0001\u0000\u0000\u1992\u1991\u0001\u0000\u0000\u0000\u1992\u1993"+ - "\u0001\u0000\u0000\u0000\u1993\u1994\u0001\u0000\u0000\u0000\u1994\u1996"+ - "\u0003\u054f\u02a5\u0000\u1995\u1990\u0001\u0000\u0000\u0000\u1995\u1996"+ - "\u0001\u0000\u0000\u0000\u1996\u19a8\u0001\u0000\u0000\u0000\u1997\u1998"+ - "\u0005.\u0000\u0000\u1998\u199e\u0003\u054f\u02a5\u0000\u1999\u199b\u0007"+ - "\n\u0000\u0000\u199a\u199c\u0007\u0001\u0000\u0000\u199b\u199a\u0001\u0000"+ - "\u0000\u0000\u199b\u199c\u0001\u0000\u0000\u0000\u199c\u199d\u0001\u0000"+ - "\u0000\u0000\u199d\u199f\u0003\u054f\u02a5\u0000\u199e\u1999\u0001\u0000"+ - "\u0000\u0000\u199e\u199f\u0001\u0000\u0000\u0000\u199f\u19a8\u0001\u0000"+ - "\u0000\u0000\u19a0\u19a1\u0003\u054f\u02a5\u0000\u19a1\u19a3\u0007\n\u0000"+ - "\u0000\u19a2\u19a4\u0007\u0001\u0000\u0000\u19a3\u19a2\u0001\u0000\u0000"+ - "\u0000\u19a3\u19a4\u0001\u0000\u0000\u0000\u19a4\u19a5\u0001\u0000\u0000"+ - "\u0000\u19a5\u19a6\u0003\u054f\u02a5\u0000\u19a6\u19a8\u0001\u0000\u0000"+ - "\u0000\u19a7\u198b\u0001\u0000\u0000\u0000\u19a7\u1997\u0001\u0000\u0000"+ - "\u0000\u19a7\u19a0\u0001\u0000\u0000\u0000\u19a8\u054e\u0001\u0000\u0000"+ - "\u0000\u19a9\u19ab\u0007\u0000\u0000\u0000\u19aa\u19a9\u0001\u0000\u0000"+ - "\u0000\u19ab\u19ac\u0001\u0000\u0000\u0000\u19ac\u19aa\u0001\u0000\u0000"+ - "\u0000\u19ac\u19ad\u0001\u0000\u0000\u0000\u19ad\u0550\u0001\u0000\u0000"+ - "\u0000\u19ae\u19af\u0005:\u0000\u0000\u19af\u19b3\u0007(\u0000\u0000\u19b0"+ - "\u19b2\u0007)\u0000\u0000\u19b1\u19b0\u0001\u0000\u0000\u0000\u19b2\u19b5"+ - "\u0001\u0000\u0000\u0000\u19b3\u19b1\u0001\u0000\u0000\u0000\u19b3\u19b4"+ - "\u0001\u0000\u0000\u0000\u19b4\u0552\u0001\u0000\u0000\u0000\u19b5\u19b3"+ - "\u0001\u0000\u0000\u0000\u19b6\u19b7\u0005:\u0000\u0000\u19b7\u19b8\u0005"+ - "\"\u0000\u0000\u19b8\u19c0\u0001\u0000\u0000\u0000\u19b9\u19ba\u0005\\"+ - "\u0000\u0000\u19ba\u19bf\t\u0000\u0000\u0000\u19bb\u19bc\u0005\"\u0000"+ - "\u0000\u19bc\u19bf\u0005\"\u0000\u0000\u19bd\u19bf\b*\u0000\u0000\u19be"+ - "\u19b9\u0001\u0000\u0000\u0000\u19be\u19bb\u0001\u0000\u0000\u0000\u19be"+ - "\u19bd\u0001\u0000\u0000\u0000\u19bf\u19c2\u0001\u0000\u0000\u0000\u19c0"+ - "\u19be\u0001\u0000\u0000\u0000\u19c0\u19c1\u0001\u0000\u0000\u0000\u19c1"+ - "\u19c3\u0001\u0000\u0000\u0000\u19c2\u19c0\u0001\u0000\u0000\u0000\u19c3"+ - "\u19c4\u0005\"\u0000\u0000\u19c4\u0554\u0001\u0000\u0000\u0000\u19c5\u19c7"+ - "\u0007+\u0000\u0000\u19c6\u19c5\u0001\u0000\u0000\u0000\u19c7\u19c8\u0001"+ - "\u0000\u0000\u0000\u19c8\u19c6\u0001\u0000\u0000\u0000\u19c8\u19c9\u0001"+ - "\u0000\u0000\u0000\u19c9\u19ca\u0001\u0000\u0000\u0000\u19ca\u19cb\u0006"+ - "\u02a8\u0007\u0000\u19cb\u0556\u0001\u0000\u0000\u0000\u19cc\u19ce\u0005"+ - "\r\u0000\u0000\u19cd\u19cf\u0005\n\u0000\u0000\u19ce\u19cd\u0001\u0000"+ - "\u0000\u0000\u19ce\u19cf\u0001\u0000\u0000\u0000\u19cf\u19d2\u0001\u0000"+ - "\u0000\u0000\u19d0\u19d2\u0005\n\u0000\u0000\u19d1\u19cc\u0001\u0000\u0000"+ - "\u0000\u19d1\u19d0\u0001\u0000\u0000\u0000\u19d2\u19d3\u0001\u0000\u0000"+ - "\u0000\u19d3\u19d4\u0006\u02a9\u0007\u0000\u19d4\u0558\u0001\u0000\u0000"+ - "\u0000\u19d5\u19d6\u0005-\u0000\u0000\u19d6\u19d7\u0005-\u0000\u0000\u19d7"+ - "\u19db\u0001\u0000\u0000\u0000\u19d8\u19da\b,\u0000\u0000\u19d9\u19d8"+ - "\u0001\u0000\u0000\u0000\u19da\u19dd\u0001\u0000\u0000\u0000\u19db\u19d9"+ - "\u0001\u0000\u0000\u0000\u19db\u19dc\u0001\u0000\u0000\u0000\u19dc\u19de"+ - "\u0001\u0000\u0000\u0000\u19dd\u19db\u0001\u0000\u0000\u0000\u19de\u19df"+ - "\u0006\u02aa\u0007\u0000\u19df\u055a\u0001\u0000\u0000\u0000\u19e0\u19e1"+ - "\u0005/\u0000\u0000\u19e1\u19e2\u0005*\u0000\u0000\u19e2\u19f9\u0001\u0000"+ - "\u0000\u0000\u19e3\u19e5\u0005/\u0000\u0000\u19e4\u19e3\u0001\u0000\u0000"+ - "\u0000\u19e5\u19e8\u0001\u0000\u0000\u0000\u19e6\u19e4\u0001\u0000\u0000"+ - "\u0000\u19e6\u19e7\u0001\u0000\u0000\u0000\u19e7\u19e9\u0001\u0000\u0000"+ - "\u0000\u19e8\u19e6\u0001\u0000\u0000\u0000\u19e9\u19f8\u0003\u055b\u02ab"+ - "\u0000\u19ea\u19f8\b-\u0000\u0000\u19eb\u19ed\u0005/\u0000\u0000\u19ec"+ - "\u19eb\u0001\u0000\u0000\u0000\u19ed\u19ee\u0001\u0000\u0000\u0000\u19ee"+ - "\u19ec\u0001\u0000\u0000\u0000\u19ee\u19ef\u0001\u0000\u0000\u0000\u19ef"+ - "\u19f0\u0001\u0000\u0000\u0000\u19f0\u19f8\b-\u0000\u0000\u19f1\u19f3"+ - "\u0005*\u0000\u0000\u19f2\u19f1\u0001\u0000\u0000\u0000\u19f3\u19f4\u0001"+ - "\u0000\u0000\u0000\u19f4\u19f2\u0001\u0000\u0000\u0000\u19f4\u19f5\u0001"+ - "\u0000\u0000\u0000\u19f5\u19f6\u0001\u0000\u0000\u0000\u19f6\u19f8\b-"+ - "\u0000\u0000\u19f7\u19e6\u0001\u0000\u0000\u0000\u19f7\u19ea\u0001\u0000"+ - "\u0000\u0000\u19f7\u19ec\u0001\u0000\u0000\u0000\u19f7\u19f2\u0001\u0000"+ - "\u0000\u0000\u19f8\u19fb\u0001\u0000\u0000\u0000\u19f9\u19f7\u0001\u0000"+ - "\u0000\u0000\u19f9\u19fa\u0001\u0000\u0000\u0000\u19fa\u19ff\u0001\u0000"+ - "\u0000\u0000\u19fb\u19f9\u0001\u0000\u0000\u0000\u19fc\u19fe\u0005*\u0000"+ - "\u0000\u19fd\u19fc\u0001\u0000\u0000\u0000\u19fe\u1a01\u0001\u0000\u0000"+ - "\u0000\u19ff\u19fd\u0001\u0000\u0000\u0000\u19ff\u1a00\u0001\u0000\u0000"+ - "\u0000\u1a00\u1a02\u0001\u0000\u0000\u0000\u1a01\u19ff\u0001\u0000\u0000"+ - "\u0000\u1a02\u1a03\u0005*\u0000\u0000\u1a03\u1a04\u0005/\u0000\u0000\u1a04"+ - "\u1a05\u0001\u0000\u0000\u0000\u1a05\u1a06\u0006\u02ab\u0007\u0000\u1a06"+ - "\u055c\u0001\u0000\u0000\u0000\u1a07\u1a08\u0005/\u0000\u0000\u1a08\u1a09"+ - "\u0005*\u0000\u0000\u1a09\u1a22\u0001\u0000\u0000\u0000\u1a0a\u1a0c\u0005"+ - "/\u0000\u0000\u1a0b\u1a0a\u0001\u0000\u0000\u0000\u1a0c\u1a0f\u0001\u0000"+ - "\u0000\u0000\u1a0d\u1a0b\u0001\u0000\u0000\u0000\u1a0d\u1a0e\u0001\u0000"+ - "\u0000\u0000\u1a0e\u1a10\u0001\u0000\u0000\u0000\u1a0f\u1a0d\u0001\u0000"+ - "\u0000\u0000\u1a10\u1a21\u0003\u055b\u02ab\u0000\u1a11\u1a21\b-\u0000"+ - "\u0000\u1a12\u1a14\u0005/\u0000\u0000\u1a13\u1a12\u0001\u0000\u0000\u0000"+ - "\u1a14\u1a15\u0001\u0000\u0000\u0000\u1a15\u1a13\u0001\u0000\u0000\u0000"+ - "\u1a15\u1a16\u0001\u0000\u0000\u0000\u1a16\u1a17\u0001\u0000\u0000\u0000"+ - "\u1a17\u1a1f\b-\u0000\u0000\u1a18\u1a1a\u0005*\u0000\u0000\u1a19\u1a18"+ - "\u0001\u0000\u0000\u0000\u1a1a\u1a1b\u0001\u0000\u0000\u0000\u1a1b\u1a19"+ - "\u0001\u0000\u0000\u0000\u1a1b\u1a1c\u0001\u0000\u0000\u0000\u1a1c\u1a1d"+ - "\u0001\u0000\u0000\u0000\u1a1d\u1a1f\b-\u0000\u0000\u1a1e\u1a13\u0001"+ - "\u0000\u0000\u0000\u1a1e\u1a19\u0001\u0000\u0000\u0000\u1a1f\u1a21\u0001"+ - "\u0000\u0000\u0000\u1a20\u1a0d\u0001\u0000\u0000\u0000\u1a20\u1a11\u0001"+ - "\u0000\u0000\u0000\u1a20\u1a1e\u0001\u0000\u0000\u0000\u1a21\u1a24\u0001"+ - "\u0000\u0000\u0000\u1a22\u1a20\u0001\u0000\u0000\u0000\u1a22\u1a23\u0001"+ - "\u0000\u0000\u0000\u1a23\u1a36\u0001\u0000\u0000\u0000\u1a24\u1a22\u0001"+ - "\u0000\u0000\u0000\u1a25\u1a27\u0005/\u0000\u0000\u1a26\u1a25\u0001\u0000"+ - "\u0000\u0000\u1a27\u1a28\u0001\u0000\u0000\u0000\u1a28\u1a26\u0001\u0000"+ - "\u0000\u0000\u1a28\u1a29\u0001\u0000\u0000\u0000\u1a29\u1a37\u0001\u0000"+ - "\u0000\u0000\u1a2a\u1a2c\u0005*\u0000\u0000\u1a2b\u1a2a\u0001\u0000\u0000"+ - "\u0000\u1a2c\u1a2d\u0001\u0000\u0000\u0000\u1a2d\u1a2b\u0001\u0000\u0000"+ - "\u0000\u1a2d\u1a2e\u0001\u0000\u0000\u0000\u1a2e\u1a37\u0001\u0000\u0000"+ - "\u0000\u1a2f\u1a31\u0005/\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\u1a35\u0001\u0000\u0000\u0000"+ - "\u1a34\u1a32\u0001\u0000\u0000\u0000\u1a35\u1a37\u0003\u055d\u02ac\u0000"+ - "\u1a36\u1a26\u0001\u0000\u0000\u0000\u1a36\u1a2b\u0001\u0000\u0000\u0000"+ - "\u1a36\u1a32\u0001\u0000\u0000\u0000\u1a36\u1a37\u0001\u0000\u0000\u0000"+ - "\u1a37\u1a38\u0001\u0000\u0000\u0000\u1a38\u1a39\u0006\u02ac\b\u0000\u1a39"+ - "\u055e\u0001\u0000\u0000\u0000\u1a3a\u1a46\u0005\\\u0000\u0000\u1a3b\u1a45"+ - "\b.\u0000\u0000\u1a3c\u1a40\u0005\"\u0000\u0000\u1a3d\u1a3f\b/\u0000\u0000"+ - "\u1a3e\u1a3d\u0001\u0000\u0000\u0000\u1a3f\u1a42\u0001\u0000\u0000\u0000"+ - "\u1a40\u1a3e\u0001\u0000\u0000\u0000\u1a40\u1a41\u0001\u0000\u0000\u0000"+ - "\u1a41\u1a43\u0001\u0000\u0000\u0000\u1a42\u1a40\u0001\u0000\u0000\u0000"+ - "\u1a43\u1a45\u0005\"\u0000\u0000\u1a44\u1a3b\u0001\u0000\u0000\u0000\u1a44"+ - "\u1a3c\u0001\u0000\u0000\u0000\u1a45\u1a48\u0001\u0000\u0000\u0000\u1a46"+ - "\u1a44\u0001\u0000\u0000\u0000\u1a46\u1a47\u0001\u0000\u0000\u0000\u1a47"+ - "\u1a50\u0001\u0000\u0000\u0000\u1a48\u1a46\u0001\u0000\u0000\u0000\u1a49"+ - "\u1a4d\u0005\"\u0000\u0000\u1a4a\u1a4c\b/\u0000\u0000\u1a4b\u1a4a\u0001"+ - "\u0000\u0000\u0000\u1a4c\u1a4f\u0001\u0000\u0000\u0000\u1a4d\u1a4b\u0001"+ - "\u0000\u0000\u0000\u1a4d\u1a4e\u0001\u0000\u0000\u0000\u1a4e\u1a51\u0001"+ - "\u0000\u0000\u0000\u1a4f\u1a4d\u0001\u0000\u0000\u0000\u1a50\u1a49\u0001"+ - "\u0000\u0000\u0000\u1a50\u1a51\u0001\u0000\u0000\u0000\u1a51\u0560\u0001"+ - "\u0000\u0000\u0000\u1a52\u1a53\u0005\\\u0000\u0000\u1a53\u1a54\u0005\\"+ - "\u0000\u0000\u1a54\u0562\u0001\u0000\u0000\u0000\u1a55\u1a56\t\u0000\u0000"+ - "\u0000\u1a56\u0564\u0001\u0000\u0000\u0000\u1a57\u1a58\u0003\u0569\u02b2"+ - "\u0000\u1a58\u1a59\u0005\'\u0000\u0000\u1a59\u1a5a\u0001\u0000\u0000\u0000"+ - "\u1a5a\u1a5b\u0006\u02b0\t\u0000\u1a5b\u0566\u0001\u0000\u0000\u0000\u1a5c"+ - "\u1a5e\u0003\u0569\u02b2\u0000\u1a5d\u1a5f\u0005\\\u0000\u0000\u1a5e\u1a5d"+ - "\u0001\u0000\u0000\u0000\u1a5e\u1a5f\u0001\u0000\u0000\u0000\u1a5f\u1a60"+ - "\u0001\u0000\u0000\u0000\u1a60\u1a61\u0005\u0000\u0000\u0001\u1a61\u0568"+ - "\u0001\u0000\u0000\u0000\u1a62\u1a63\u0005\'\u0000\u0000\u1a63\u1a7a\u0005"+ - "\'\u0000\u0000\u1a64\u1a76\u0005\\\u0000\u0000\u1a65\u1a66\u0005x\u0000"+ - "\u0000\u1a66\u1a77\u0007\'\u0000\u0000\u1a67\u1a68\u0005u\u0000\u0000"+ - "\u1a68\u1a69\u0007\'\u0000\u0000\u1a69\u1a6a\u0007\'\u0000\u0000\u1a6a"+ - "\u1a6b\u0007\'\u0000\u0000\u1a6b\u1a77\u0007\'\u0000\u0000\u1a6c\u1a6d"+ - "\u0005U\u0000\u0000\u1a6d\u1a6e\u0007\'\u0000\u0000\u1a6e\u1a6f\u0007"+ - "\'\u0000\u0000\u1a6f\u1a70\u0007\'\u0000\u0000\u1a70\u1a71\u0007\'\u0000"+ - "\u0000\u1a71\u1a72\u0007\'\u0000\u0000\u1a72\u1a73\u0007\'\u0000\u0000"+ - "\u1a73\u1a74\u0007\'\u0000\u0000\u1a74\u1a77\u0007\'\u0000\u0000\u1a75"+ - "\u1a77\b0\u0000\u0000\u1a76\u1a65\u0001\u0000\u0000\u0000\u1a76\u1a67"+ - "\u0001\u0000\u0000\u0000\u1a76\u1a6c\u0001\u0000\u0000\u0000\u1a76\u1a75"+ - "\u0001\u0000\u0000\u0000\u1a77\u1a7a\u0001\u0000\u0000\u0000\u1a78\u1a7a"+ - "\b1\u0000\u0000\u1a79\u1a62\u0001\u0000\u0000\u0000\u1a79\u1a64\u0001"+ - "\u0000\u0000\u0000\u1a79\u1a78\u0001\u0000\u0000\u0000\u1a7a\u1a7d\u0001"+ - "\u0000\u0000\u0000\u1a7b\u1a79\u0001\u0000\u0000\u0000\u1a7b\u1a7c\u0001"+ - "\u0000\u0000\u0000\u1a7c\u056a\u0001\u0000\u0000\u0000\u1a7d\u1a7b\u0001"+ - "\u0000\u0000\u0000\u1a7e\u1a7f\u0003\u056f\u02b5\u0000\u1a7f\u1a80\u0005"+ - "\'\u0000\u0000\u1a80\u1a81\u0001\u0000\u0000\u0000\u1a81\u1a82\u0006\u02b3"+ - "\t\u0000\u1a82\u056c\u0001\u0000\u0000\u0000\u1a83\u1a85\u0003\u056f\u02b5"+ - "\u0000\u1a84\u1a86\u0005\\\u0000\u0000\u1a85\u1a84\u0001\u0000\u0000\u0000"+ - "\u1a85\u1a86\u0001\u0000\u0000\u0000\u1a86\u1a87\u0001\u0000\u0000\u0000"+ - "\u1a87\u1a88\u0005\u0000\u0000\u0001\u1a88\u056e\u0001\u0000\u0000\u0000"+ - "\u1a89\u1a8a\u0005\'\u0000\u0000\u1a8a\u1a8f\u0005\'\u0000\u0000\u1a8b"+ - "\u1a8c\u0005\\\u0000\u0000\u1a8c\u1a8f\t\u0000\u0000\u0000\u1a8d\u1a8f"+ - "\b1\u0000\u0000\u1a8e\u1a89\u0001\u0000\u0000\u0000\u1a8e\u1a8b\u0001"+ - "\u0000\u0000\u0000\u1a8e\u1a8d\u0001\u0000\u0000\u0000\u1a8f\u1a92\u0001"+ - "\u0000\u0000\u0000\u1a90\u1a8e\u0001\u0000\u0000\u0000\u1a90\u1a91\u0001"+ - "\u0000\u0000\u0000\u1a91\u0570\u0001\u0000\u0000\u0000\u1a92\u1a90\u0001"+ - "\u0000\u0000\u0000\u1a93\u1a94\u0003\u0555\u02a8\u0000\u1a94\u1a95\u0001"+ - "\u0000\u0000\u0000\u1a95\u1a96\u0006\u02b6\n\u0000\u1a96\u1a97\u0006\u02b6"+ - "\u0007\u0000\u1a97\u0572\u0001\u0000\u0000\u0000\u1a98\u1a99\u0003\u0557"+ - "\u02a9\u0000\u1a99\u1a9a\u0001\u0000\u0000\u0000\u1a9a\u1a9b\u0006\u02b7"+ - "\u000b\u0000\u1a9b\u1a9c\u0006\u02b7\u0007\u0000\u1a9c\u1a9d\u0006\u02b7"+ - "\f\u0000\u1a9d\u0574\u0001\u0000\u0000\u0000\u1a9e\u1a9f\u0006\u02b8\r"+ - "\u0000\u1a9f\u1aa0\u0001\u0000\u0000\u0000\u1aa0\u1aa1\u0006\u02b8\u000e"+ - "\u0000\u1aa1\u1aa2\u0006\u02b8\u000f\u0000\u1aa2\u0576\u0001\u0000\u0000"+ - "\u0000\u1aa3\u1aa4\u0003\u0555\u02a8\u0000\u1aa4\u1aa5\u0001\u0000\u0000"+ - "\u0000\u1aa5\u1aa6\u0006\u02b9\n\u0000\u1aa6\u1aa7\u0006\u02b9\u0007\u0000"+ - "\u1aa7\u0578\u0001\u0000\u0000\u0000\u1aa8\u1aa9\u0003\u0557\u02a9\u0000"+ - "\u1aa9\u1aaa\u0001\u0000\u0000\u0000\u1aaa\u1aab\u0006\u02ba\u000b\u0000"+ - "\u1aab\u1aac\u0006\u02ba\u0007\u0000\u1aac\u057a\u0001\u0000\u0000\u0000"+ - "\u1aad\u1aae\u0005\'\u0000\u0000\u1aae\u1aaf\u0001\u0000\u0000\u0000\u1aaf"+ - "\u1ab0\u0006\u02bb\u0002\u0000\u1ab0\u1ab1\u0006\u02bb\u0010\u0000\u1ab1"+ - "\u057c\u0001\u0000\u0000\u0000\u1ab2\u1ab3\u0006\u02bc\u0011\u0000\u1ab3"+ - "\u1ab4\u0001\u0000\u0000\u0000\u1ab4\u1ab5\u0006\u02bc\u000e\u0000\u1ab5"+ - "\u1ab6\u0006\u02bc\u000f\u0000\u1ab6\u057e\u0001\u0000\u0000\u0000\u1ab7"+ - "\u1ab9\b2\u0000\u0000\u1ab8\u1ab7\u0001\u0000\u0000\u0000\u1ab9\u1aba"+ - "\u0001\u0000\u0000\u0000\u1aba\u1ab8\u0001\u0000\u0000\u0000\u1aba\u1abb"+ - "\u0001\u0000\u0000\u0000\u1abb\u1ac4\u0001\u0000\u0000\u0000\u1abc\u1ac0"+ - "\u0005$\u0000\u0000\u1abd\u1abf\b2\u0000\u0000\u1abe\u1abd\u0001\u0000"+ - "\u0000\u0000\u1abf\u1ac2\u0001\u0000\u0000\u0000\u1ac0\u1abe\u0001\u0000"+ - "\u0000\u0000\u1ac0\u1ac1\u0001\u0000\u0000\u0000\u1ac1\u1ac4\u0001\u0000"+ - "\u0000\u0000\u1ac2\u1ac0\u0001\u0000\u0000\u0000\u1ac3\u1ab8\u0001\u0000"+ - "\u0000\u0000\u1ac3\u1abc\u0001\u0000\u0000\u0000\u1ac4\u0580\u0001\u0000"+ - "\u0000\u0000\u1ac5\u1ac7\u0005$\u0000\u0000\u1ac6\u1ac8\u0003\u0537\u0299"+ - "\u0000\u1ac7\u1ac6\u0001\u0000\u0000\u0000\u1ac7\u1ac8\u0001\u0000\u0000"+ - "\u0000\u1ac8\u1ac9\u0001\u0000\u0000\u0000\u1ac9\u1aca\u0005$\u0000\u0000"+ - "\u1aca\u1acb\u0001\u0000\u0000\u0000\u1acb\u1acc\u0004\u02be\b\u0000\u1acc"+ - "\u1acd\u0006\u02be\u0012\u0000\u1acd\u1ace\u0001\u0000\u0000\u0000\u1ace"+ - "\u1acf\u0006\u02be\u000f\u0000\u1acf\u0582\u0001\u0000\u0000\u0000N\u0000"+ - "\u0001\u0002\u0003\u0004\u05c6\u05cc\u05ce\u05d3\u05d7\u05d9\u05dc\u05e5"+ - "\u05e7\u05ec\u05f1\u05f3\u18fd\u1906\u190a\u190e\u1917\u1919\u1923\u1925"+ - "\u193f\u1941\u1953\u195e\u1969\u197a\u198e\u1992\u1995\u199b\u199e\u19a3"+ - "\u19a7\u19ac\u19b3\u19be\u19c0\u19c8\u19ce\u19d1\u19db\u19e6\u19ee\u19f4"+ - "\u19f7\u19f9\u19ff\u1a0d\u1a15\u1a1b\u1a1e\u1a20\u1a22\u1a28\u1a2d\u1a32"+ - "\u1a36\u1a40\u1a44\u1a46\u1a4d\u1a50\u1a5e\u1a76\u1a79\u1a7b\u1a85\u1a8e"+ - "\u1a90\u1aba\u1ac0\u1ac3\u1ac7\u0013\u0001\u001c\u0000\u0007\u001d\u0000"+ - "\u0003\u0000\u0000\u0005\u0001\u0000\u0001\u0298\u0001\u0005\u0004\u0000"+ - "\u0001\u02a3\u0002\u0000\u0001\u0000\u0001\u02ac\u0003\u0002\u0002\u0000"+ - "\u0007\u029f\u0000\u0007\u02a0\u0000\u0002\u0003\u0000\u0001\u02b8\u0004"+ - "\u0006\u0000\u0000\u0004\u0000\u0000\u0002\u0001\u0000\u0001\u02bc\u0005"+ - "\u0001\u02be\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/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.tokens b/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.tokens deleted file mode 100644 index e6fcd4ebae..0000000000 --- a/incubator/binding-pgsql/src/main/antlr4/io/aklivity/zilla/runtime/binding/pgsql/parser/gen/PostgreSqlLexer.tokens +++ /dev/null @@ -1,1330 +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 -ZTABLE=93 -THEN=94 -TO=95 -DESCRIBE=96 -TOPIC=97 -TOPICS=98 -STREAM=99 -ZVIEW=100 -ZVIEWS=101 -TRAILING=102 -TRUE_P=103 -UNION=104 -UNIQUE=105 -USER=106 -USING=107 -VARIADIC=108 -WHEN=109 -WHERE=110 -WINDOW=111 -WITH=112 -AUTHORIZATION=113 -BINARY=114 -COLLATION=115 -CONCURRENTLY=116 -CROSS=117 -CURRENT_SCHEMA=118 -FREEZE=119 -FULL=120 -ILIKE=121 -INNER_P=122 -IS=123 -ISNULL=124 -JOIN=125 -LEFT=126 -LIKE=127 -NATURAL=128 -NOTNULL=129 -OUTER_P=130 -OVER=131 -OVERLAPS=132 -RIGHT=133 -SIMILAR=134 -VERBOSE=135 -ABORT_P=136 -ABSOLUTE_P=137 -ACCESS=138 -ACTION=139 -ADD_P=140 -ADMIN=141 -AFTER=142 -AGGREGATE=143 -ALSO=144 -ALTER=145 -ALWAYS=146 -ASSERTION=147 -ASSIGNMENT=148 -AT=149 -ATTRIBUTE=150 -BACKWARD=151 -BEFORE=152 -BEGIN_P=153 -BY=154 -CACHE=155 -CALLED=156 -CASCADE=157 -CASCADED=158 -CATALOG=159 -CHAIN=160 -CHARACTERISTICS=161 -CHECKPOINT=162 -CLASS=163 -CLOSE=164 -CLUSTER=165 -COMMENT=166 -COMMENTS=167 -COMMIT=168 -COMMITTED=169 -CONFIGURATION=170 -CONNECTION=171 -CONSTRAINTS=172 -CONTENT_P=173 -CONTINUE_P=174 -CONVERSION_P=175 -COPY=176 -COST=177 -CSV=178 -CURSOR=179 -CYCLE=180 -DATA_P=181 -DATABASE=182 -DAY_P=183 -DEALLOCATE=184 -DECLARE=185 -DEFAULTS=186 -DEFERRED=187 -DEFINER=188 -DELETE_P=189 -DELIMITER=190 -DELIMITERS=191 -DICTIONARY=192 -DISABLE_P=193 -DISCARD=194 -DOCUMENT_P=195 -DOMAIN_P=196 -DOUBLE_P=197 -DROP=198 -EACH=199 -ENABLE_P=200 -ENCODING=201 -ENCRYPTED=202 -ENUM_P=203 -ESCAPE=204 -EVENT=205 -EXCLUDE=206 -EXCLUDING=207 -EXCLUSIVE=208 -EXECUTE=209 -EXPLAIN=210 -EXTENSION=211 -EXTERNAL=212 -FAMILY=213 -FIRST_P=214 -FOLLOWING=215 -FORCE=216 -FORWARD=217 -FUNCTION=218 -FUNCTIONS=219 -GLOBAL=220 -GRANTED=221 -HANDLER=222 -HEADER_P=223 -HOLD=224 -HOUR_P=225 -IDENTITY_P=226 -IF_P=227 -IMMEDIATE=228 -IMMUTABLE=229 -IMPLICIT_P=230 -INCLUDING=231 -INCREMENT=232 -INDEX=233 -INDEXES=234 -INHERIT=235 -INHERITS=236 -INLINE_P=237 -INSENSITIVE=238 -INSERT=239 -INSTEAD=240 -INVOKER=241 -ISOLATION=242 -KEY=243 -LABEL=244 -LANGUAGE=245 -LARGE_P=246 -LAST_P=247 -LEAKPROOF=248 -LEVEL=249 -LISTEN=250 -LOAD=251 -LOCAL=252 -LOCATION=253 -LOCK_P=254 -MAPPING=255 -MATCH=256 -MATCHED=257 -MATERIALIZED=258 -MAXVALUE=259 -MERGE=260 -MINUTE_P=261 -MINVALUE=262 -MODE=263 -MONTH_P=264 -MOVE=265 -NAME_P=266 -NAMES=267 -NEXT=268 -NO=269 -NOTHING=270 -NOTIFY=271 -NOWAIT=272 -NULLS_P=273 -OBJECT_P=274 -OF=275 -OFF=276 -OIDS=277 -OPERATOR=278 -OPTION=279 -OPTIONS=280 -OWNED=281 -OWNER=282 -PARSER=283 -PARTIAL=284 -PARTITION=285 -PASSING=286 -PASSWORD=287 -PLANS=288 -PRECEDING=289 -PREPARE=290 -PREPARED=291 -PRESERVE=292 -PRIOR=293 -PRIVILEGES=294 -PROCEDURAL=295 -PROCEDURE=296 -PROGRAM=297 -QUOTE=298 -RANGE=299 -READ=300 -REASSIGN=301 -RECHECK=302 -RECURSIVE=303 -REF=304 -REFRESH=305 -REINDEX=306 -RELATIVE_P=307 -RELEASE=308 -RENAME=309 -REPEATABLE=310 -REPLACE=311 -REPLICA=312 -RESET=313 -RESTART=314 -RESTRICT=315 -RETURNS=316 -REVOKE=317 -ROLE=318 -ROLLBACK=319 -ROWS=320 -RULE=321 -SAVEPOINT=322 -SCHEMA=323 -SCROLL=324 -SEARCH=325 -SECOND_P=326 -SECURITY=327 -SEQUENCE=328 -SEQUENCES=329 -SERIALIZABLE=330 -SERVER=331 -SESSION=332 -SET=333 -SHARE=334 -SHOW=335 -SIMPLE=336 -SNAPSHOT=337 -STABLE=338 -STANDALONE_P=339 -START=340 -STATEMENT=341 -STATISTICS=342 -STDIN=343 -STDOUT=344 -STORAGE=345 -STRICT_P=346 -STRIP_P=347 -SYSID=348 -SYSTEM_P=349 -TABLES=350 -ZTABLES=351 -TABLESPACE=352 -TEMP=353 -TEMPLATE=354 -TEMPORARY=355 -TEXT_P=356 -TRANSACTION=357 -TRIGGER=358 -TRUNCATE=359 -TRUSTED=360 -TYPE_P=361 -TYPES_P=362 -UNBOUNDED=363 -UNCOMMITTED=364 -UNENCRYPTED=365 -UNKNOWN=366 -UNLISTEN=367 -UNLOGGED=368 -UNTIL=369 -UPDATE=370 -VACUUM=371 -VALID=372 -VALIDATE=373 -VALIDATOR=374 -VARYING=375 -VERSION_P=376 -VIEW=377 -VOLATILE=378 -WHITESPACE_P=379 -WITHOUT=380 -WORK=381 -WRAPPER=382 -WRITE=383 -XML_P=384 -YEAR_P=385 -YES_P=386 -ZONE=387 -BETWEEN=388 -BIGINT=389 -BIT=390 -BOOLEAN_P=391 -CHAR_P=392 -CHARACTER=393 -COALESCE=394 -DEC=395 -DECIMAL_P=396 -EXISTS=397 -EXTRACT=398 -FLOAT_P=399 -GREATEST=400 -INOUT=401 -INT_P=402 -INTEGER=403 -INTERVAL=404 -LEAST=405 -NATIONAL=406 -NCHAR=407 -NONE=408 -NULLIF=409 -NUMERIC=410 -OVERLAY=411 -POSITION=412 -PRECISION=413 -REAL=414 -ROW=415 -SETOF=416 -SMALLINT=417 -SUBSTRING=418 -TIME=419 -TIMESTAMP=420 -TREAT=421 -TRIM=422 -VALUES=423 -VARCHAR=424 -XMLATTRIBUTES=425 -XMLCOMMENT=426 -XMLAGG=427 -XML_IS_WELL_FORMED=428 -XML_IS_WELL_FORMED_DOCUMENT=429 -XML_IS_WELL_FORMED_CONTENT=430 -XPATH=431 -XPATH_EXISTS=432 -XMLCONCAT=433 -XMLELEMENT=434 -XMLEXISTS=435 -XMLFOREST=436 -XMLPARSE=437 -XMLPI=438 -XMLROOT=439 -XMLSERIALIZE=440 -CALL=441 -CURRENT_P=442 -ATTACH=443 -DETACH=444 -EXPRESSION=445 -GENERATED=446 -LOGGED=447 -STORED=448 -INCLUDE=449 -ROUTINE=450 -TRANSFORM=451 -IMPORT_P=452 -POLICY=453 -METHOD=454 -REFERENCING=455 -NEW=456 -OLD=457 -VALUE_P=458 -SUBSCRIPTION=459 -PUBLICATION=460 -OUT_P=461 -END_P=462 -ROUTINES=463 -SCHEMAS=464 -PROCEDURES=465 -INPUT_P=466 -SUPPORT=467 -PARALLEL=468 -SQL_P=469 -DEPENDS=470 -OVERRIDING=471 -CONFLICT=472 -SKIP_P=473 -LOCKED=474 -TIES=475 -ROLLUP=476 -CUBE=477 -GROUPING=478 -SETS=479 -TABLESAMPLE=480 -ORDINALITY=481 -XMLTABLE=482 -COLUMNS=483 -XMLNAMESPACES=484 -ROWTYPE=485 -NORMALIZED=486 -WITHIN=487 -FILTER=488 -GROUPS=489 -OTHERS=490 -NFC=491 -NFD=492 -NFKC=493 -NFKD=494 -UESCAPE=495 -VIEWS=496 -NORMALIZE=497 -DUMP=498 -PRINT_STRICT_PARAMS=499 -VARIABLE_CONFLICT=500 -ERROR=501 -USE_VARIABLE=502 -USE_COLUMN=503 -ALIAS=504 -CONSTANT=505 -PERFORM=506 -GET=507 -DIAGNOSTICS=508 -STACKED=509 -ELSIF=510 -WHILE=511 -REVERSE=512 -FOREACH=513 -SLICE=514 -EXIT=515 -RETURN=516 -QUERY=517 -RAISE=518 -SQLSTATE=519 -DEBUG=520 -LOG=521 -INFO=522 -NOTICE=523 -WARNING=524 -EXCEPTION=525 -ASSERT=526 -LOOP=527 -OPEN=528 -ABS=529 -CBRT=530 -CEIL=531 -CEILING=532 -DEGREES=533 -DIV=534 -EXP=535 -FACTORIAL=536 -FLOOR=537 -GCD=538 -LCM=539 -LN=540 -LOG10=541 -MIN_SCALE=542 -MOD=543 -PI=544 -POWER=545 -RADIANS=546 -ROUND=547 -SCALE=548 -SIGN=549 -SQRT=550 -TRIM_SCALE=551 -TRUNC=552 -WIDTH_BUCKET=553 -RANDOM=554 -SETSEED=555 -ACOS=556 -ACOSD=557 -ASIN=558 -ASIND=559 -ATAN=560 -ATAND=561 -ATAN2=562 -ATAN2D=563 -COS=564 -COSD=565 -COT=566 -COTD=567 -SIN=568 -SIND=569 -TAN=570 -TAND=571 -SINH=572 -COSH=573 -TANH=574 -ASINH=575 -ACOSH=576 -ATANH=577 -BIT_LENGTH=578 -CHAR_LENGTH=579 -CHARACTER_LENGTH=580 -LOWER=581 -OCTET_LENGTH=582 -UPPER=583 -ASCII=584 -BTRIM=585 -CHR=586 -CONCAT=587 -CONCAT_WS=588 -FORMAT=589 -INITCAP=590 -LENGTH=591 -LPAD=592 -LTRIM=593 -MD5=594 -PARSE_IDENT=595 -PG_CLIENT_ENCODING=596 -QUOTE_IDENT=597 -QUOTE_LITERAL=598 -QUOTE_NULLABLE=599 -REGEXP_COUNT=600 -REGEXP_INSTR=601 -REGEXP_LIKE=602 -REGEXP_MATCH=603 -REGEXP_MATCHES=604 -REGEXP_REPLACE=605 -REGEXP_SPLIT_TO_ARRAY=606 -REGEXP_SPLIT_TO_TABLE=607 -REGEXP_SUBSTR=608 -REPEAT=609 -RPAD=610 -RTRIM=611 -SPLIT_PART=612 -STARTS_WITH=613 -STRING_TO_ARRAY=614 -STRING_TO_TABLE=615 -STRPOS=616 -SUBSTR=617 -TO_ASCII=618 -TO_HEX=619 -TRANSLATE=620 -UNISTR=621 -AGE=622 -CLOCK_TIMESTAMP=623 -DATE_BIN=624 -DATE_PART=625 -DATE_TRUNC=626 -ISFINITE=627 -JUSTIFY_DAYS=628 -JUSTIFY_HOURS=629 -JUSTIFY_INTERVAL=630 -MAKE_DATE=631 -MAKE_INTERVAL=632 -MAKE_TIME=633 -MAKE_TIMESTAMP=634 -MAKE_TIMESTAMPTZ=635 -NOW=636 -STATEMENT_TIMESTAMP=637 -TIMEOFDAY=638 -TRANSACTION_TIMESTAMP=639 -TO_TIMESTAMP=640 -TO_CHAR=641 -TO_DATE=642 -TO_NUMBER=643 -Identifier=644 -QuotedIdentifier=645 -UnterminatedQuotedIdentifier=646 -InvalidQuotedIdentifier=647 -InvalidUnterminatedQuotedIdentifier=648 -UnicodeQuotedIdentifier=649 -UnterminatedUnicodeQuotedIdentifier=650 -InvalidUnicodeQuotedIdentifier=651 -InvalidUnterminatedUnicodeQuotedIdentifier=652 -StringConstant=653 -UnterminatedStringConstant=654 -UnicodeEscapeStringConstant=655 -UnterminatedUnicodeEscapeStringConstant=656 -BeginDollarStringConstant=657 -BinaryStringConstant=658 -UnterminatedBinaryStringConstant=659 -InvalidBinaryStringConstant=660 -InvalidUnterminatedBinaryStringConstant=661 -HexadecimalStringConstant=662 -UnterminatedHexadecimalStringConstant=663 -InvalidHexadecimalStringConstant=664 -InvalidUnterminatedHexadecimalStringConstant=665 -Integral=666 -NumericFail=667 -Numeric=668 -PLSQLVARIABLENAME=669 -PLSQLIDENTIFIER=670 -Whitespace=671 -Newline=672 -LineComment=673 -BlockComment=674 -UnterminatedBlockComment=675 -MetaCommand=676 -EndMetaCommand=677 -ErrorCharacter=678 -EscapeStringConstant=679 -UnterminatedEscapeStringConstant=680 -InvalidEscapeStringConstant=681 -InvalidUnterminatedEscapeStringConstant=682 -AfterEscapeStringConstantMode_NotContinued=683 -AfterEscapeStringConstantWithNewlineMode_NotContinued=684 -DollarText=685 -EndDollarStringConstant=686 -AfterEscapeStringConstantWithNewlineMode_Continued=687 -'$'=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 -'ZTABLE'=93 -'THEN'=94 -'TO'=95 -'DESCRIBE'=96 -'TOPIC'=97 -'TOPICS'=98 -'STREAM'=99 -'ZVIEW'=100 -'ZVIEWS'=101 -'TRAILING'=102 -'TRUE'=103 -'UNION'=104 -'UNIQUE'=105 -'USER'=106 -'USING'=107 -'VARIADIC'=108 -'WHEN'=109 -'WHERE'=110 -'WINDOW'=111 -'WITH'=112 -'AUTHORIZATION'=113 -'BINARY'=114 -'COLLATION'=115 -'CONCURRENTLY'=116 -'CROSS'=117 -'CURRENT_SCHEMA'=118 -'FREEZE'=119 -'FULL'=120 -'ILIKE'=121 -'INNER'=122 -'IS'=123 -'ISNULL'=124 -'JOIN'=125 -'LEFT'=126 -'LIKE'=127 -'NATURAL'=128 -'NOTNULL'=129 -'OUTER'=130 -'OVER'=131 -'OVERLAPS'=132 -'RIGHT'=133 -'SIMILAR'=134 -'VERBOSE'=135 -'ABORT'=136 -'ABSOLUTE'=137 -'ACCESS'=138 -'ACTION'=139 -'ADD'=140 -'ADMIN'=141 -'AFTER'=142 -'AGGREGATE'=143 -'ALSO'=144 -'ALTER'=145 -'ALWAYS'=146 -'ASSERTION'=147 -'ASSIGNMENT'=148 -'AT'=149 -'ATTRIBUTE'=150 -'BACKWARD'=151 -'BEFORE'=152 -'BEGIN'=153 -'BY'=154 -'CACHE'=155 -'CALLED'=156 -'CASCADE'=157 -'CASCADED'=158 -'CATALOG'=159 -'CHAIN'=160 -'CHARACTERISTICS'=161 -'CHECKPOINT'=162 -'CLASS'=163 -'CLOSE'=164 -'CLUSTER'=165 -'COMMENT'=166 -'COMMENTS'=167 -'COMMIT'=168 -'COMMITTED'=169 -'CONFIGURATION'=170 -'CONNECTION'=171 -'CONSTRAINTS'=172 -'CONTENT'=173 -'CONTINUE'=174 -'CONVERSION'=175 -'COPY'=176 -'COST'=177 -'CSV'=178 -'CURSOR'=179 -'CYCLE'=180 -'DATA'=181 -'DATABASE'=182 -'DAY'=183 -'DEALLOCATE'=184 -'DECLARE'=185 -'DEFAULTS'=186 -'DEFERRED'=187 -'DEFINER'=188 -'DELETE'=189 -'DELIMITER'=190 -'DELIMITERS'=191 -'DICTIONARY'=192 -'DISABLE'=193 -'DISCARD'=194 -'DOCUMENT'=195 -'DOMAIN'=196 -'DOUBLE'=197 -'DROP'=198 -'EACH'=199 -'ENABLE'=200 -'ENCODING'=201 -'ENCRYPTED'=202 -'ENUM'=203 -'ESCAPE'=204 -'EVENT'=205 -'EXCLUDE'=206 -'EXCLUDING'=207 -'EXCLUSIVE'=208 -'EXECUTE'=209 -'EXPLAIN'=210 -'EXTENSION'=211 -'EXTERNAL'=212 -'FAMILY'=213 -'FIRST'=214 -'FOLLOWING'=215 -'FORCE'=216 -'FORWARD'=217 -'FUNCTION'=218 -'FUNCTIONS'=219 -'GLOBAL'=220 -'GRANTED'=221 -'HANDLER'=222 -'HEADER'=223 -'HOLD'=224 -'HOUR'=225 -'IDENTITY'=226 -'IF'=227 -'IMMEDIATE'=228 -'IMMUTABLE'=229 -'IMPLICIT'=230 -'INCLUDING'=231 -'INCREMENT'=232 -'INDEX'=233 -'INDEXES'=234 -'INHERIT'=235 -'INHERITS'=236 -'INLINE'=237 -'INSENSITIVE'=238 -'INSERT'=239 -'INSTEAD'=240 -'INVOKER'=241 -'ISOLATION'=242 -'KEY'=243 -'LABEL'=244 -'LANGUAGE'=245 -'LARGE'=246 -'LAST'=247 -'LEAKPROOF'=248 -'LEVEL'=249 -'LISTEN'=250 -'LOAD'=251 -'LOCAL'=252 -'LOCATION'=253 -'LOCK'=254 -'MAPPING'=255 -'MATCH'=256 -'MATCHED'=257 -'MATERIALIZED'=258 -'MAXVALUE'=259 -'MERGE'=260 -'MINUTE'=261 -'MINVALUE'=262 -'MODE'=263 -'MONTH'=264 -'MOVE'=265 -'NAME'=266 -'NAMES'=267 -'NEXT'=268 -'NO'=269 -'NOTHING'=270 -'NOTIFY'=271 -'NOWAIT'=272 -'NULLS'=273 -'OBJECT'=274 -'OF'=275 -'OFF'=276 -'OIDS'=277 -'OPERATOR'=278 -'OPTION'=279 -'OPTIONS'=280 -'OWNED'=281 -'OWNER'=282 -'PARSER'=283 -'PARTIAL'=284 -'PARTITION'=285 -'PASSING'=286 -'PASSWORD'=287 -'PLANS'=288 -'PRECEDING'=289 -'PREPARE'=290 -'PREPARED'=291 -'PRESERVE'=292 -'PRIOR'=293 -'PRIVILEGES'=294 -'PROCEDURAL'=295 -'PROCEDURE'=296 -'PROGRAM'=297 -'QUOTE'=298 -'RANGE'=299 -'READ'=300 -'REASSIGN'=301 -'RECHECK'=302 -'RECURSIVE'=303 -'REF'=304 -'REFRESH'=305 -'REINDEX'=306 -'RELATIVE'=307 -'RELEASE'=308 -'RENAME'=309 -'REPEATABLE'=310 -'REPLACE'=311 -'REPLICA'=312 -'RESET'=313 -'RESTART'=314 -'RESTRICT'=315 -'RETURNS'=316 -'REVOKE'=317 -'ROLE'=318 -'ROLLBACK'=319 -'ROWS'=320 -'RULE'=321 -'SAVEPOINT'=322 -'SCHEMA'=323 -'SCROLL'=324 -'SEARCH'=325 -'SECOND'=326 -'SECURITY'=327 -'SEQUENCE'=328 -'SEQUENCES'=329 -'SERIALIZABLE'=330 -'SERVER'=331 -'SESSION'=332 -'SET'=333 -'SHARE'=334 -'SHOW'=335 -'SIMPLE'=336 -'SNAPSHOT'=337 -'STABLE'=338 -'STANDALONE'=339 -'START'=340 -'STATEMENT'=341 -'STATISTICS'=342 -'STDIN'=343 -'STDOUT'=344 -'STORAGE'=345 -'STRICT'=346 -'STRIP'=347 -'SYSID'=348 -'SYSTEM'=349 -'TABLES'=350 -'ZTABLES'=351 -'TABLESPACE'=352 -'TEMP'=353 -'TEMPLATE'=354 -'TEMPORARY'=355 -'TEXT'=356 -'TRANSACTION'=357 -'TRIGGER'=358 -'TRUNCATE'=359 -'TRUSTED'=360 -'TYPE'=361 -'TYPES'=362 -'UNBOUNDED'=363 -'UNCOMMITTED'=364 -'UNENCRYPTED'=365 -'UNKNOWN'=366 -'UNLISTEN'=367 -'UNLOGGED'=368 -'UNTIL'=369 -'UPDATE'=370 -'VACUUM'=371 -'VALID'=372 -'VALIDATE'=373 -'VALIDATOR'=374 -'VARYING'=375 -'VERSION'=376 -'VIEW'=377 -'VOLATILE'=378 -'WHITESPACE'=379 -'WITHOUT'=380 -'WORK'=381 -'WRAPPER'=382 -'WRITE'=383 -'XML'=384 -'YEAR'=385 -'YES'=386 -'ZONE'=387 -'BETWEEN'=388 -'BIGINT'=389 -'BIT'=390 -'BOOLEAN'=391 -'CHAR'=392 -'CHARACTER'=393 -'COALESCE'=394 -'DEC'=395 -'DECIMAL'=396 -'EXISTS'=397 -'EXTRACT'=398 -'FLOAT'=399 -'GREATEST'=400 -'INOUT'=401 -'INT'=402 -'INTEGER'=403 -'INTERVAL'=404 -'LEAST'=405 -'NATIONAL'=406 -'NCHAR'=407 -'NONE'=408 -'NULLIF'=409 -'NUMERIC'=410 -'OVERLAY'=411 -'POSITION'=412 -'PRECISION'=413 -'REAL'=414 -'ROW'=415 -'SETOF'=416 -'SMALLINT'=417 -'SUBSTRING'=418 -'TIME'=419 -'TIMESTAMP'=420 -'TREAT'=421 -'TRIM'=422 -'VALUES'=423 -'VARCHAR'=424 -'XMLATTRIBUTES'=425 -'XMLCOMMENT'=426 -'XMLAGG'=427 -'XML_IS_WELL_FORMED'=428 -'XML_IS_WELL_FORMED_DOCUMENT'=429 -'XML_IS_WELL_FORMED_CONTENT'=430 -'XPATH'=431 -'XPATH_EXISTS'=432 -'XMLCONCAT'=433 -'XMLELEMENT'=434 -'XMLEXISTS'=435 -'XMLFOREST'=436 -'XMLPARSE'=437 -'XMLPI'=438 -'XMLROOT'=439 -'XMLSERIALIZE'=440 -'CALL'=441 -'CURRENT'=442 -'ATTACH'=443 -'DETACH'=444 -'EXPRESSION'=445 -'GENERATED'=446 -'LOGGED'=447 -'STORED'=448 -'INCLUDE'=449 -'ROUTINE'=450 -'TRANSFORM'=451 -'IMPORT'=452 -'POLICY'=453 -'METHOD'=454 -'REFERENCING'=455 -'NEW'=456 -'OLD'=457 -'VALUE'=458 -'SUBSCRIPTION'=459 -'PUBLICATION'=460 -'OUT'=461 -'END'=462 -'ROUTINES'=463 -'SCHEMAS'=464 -'PROCEDURES'=465 -'INPUT'=466 -'SUPPORT'=467 -'PARALLEL'=468 -'SQL'=469 -'DEPENDS'=470 -'OVERRIDING'=471 -'CONFLICT'=472 -'SKIP'=473 -'LOCKED'=474 -'TIES'=475 -'ROLLUP'=476 -'CUBE'=477 -'GROUPING'=478 -'SETS'=479 -'TABLESAMPLE'=480 -'ORDINALITY'=481 -'XMLTABLE'=482 -'COLUMNS'=483 -'XMLNAMESPACES'=484 -'ROWTYPE'=485 -'NORMALIZED'=486 -'WITHIN'=487 -'FILTER'=488 -'GROUPS'=489 -'OTHERS'=490 -'NFC'=491 -'NFD'=492 -'NFKC'=493 -'NFKD'=494 -'UESCAPE'=495 -'VIEWS'=496 -'NORMALIZE'=497 -'DUMP'=498 -'PRINT_STRICT_PARAMS'=499 -'VARIABLE_CONFLICT'=500 -'ERROR'=501 -'USE_VARIABLE'=502 -'USE_COLUMN'=503 -'ALIAS'=504 -'CONSTANT'=505 -'PERFORM'=506 -'GET'=507 -'DIAGNOSTICS'=508 -'STACKED'=509 -'ELSIF'=510 -'WHILE'=511 -'REVERSE'=512 -'FOREACH'=513 -'SLICE'=514 -'EXIT'=515 -'RETURN'=516 -'QUERY'=517 -'RAISE'=518 -'SQLSTATE'=519 -'DEBUG'=520 -'LOG'=521 -'INFO'=522 -'NOTICE'=523 -'WARNING'=524 -'EXCEPTION'=525 -'ASSERT'=526 -'LOOP'=527 -'OPEN'=528 -'ABS'=529 -'CBRT'=530 -'CEIL'=531 -'CEILING'=532 -'DEGREES'=533 -'DIV'=534 -'EXP'=535 -'FACTORIAL'=536 -'FLOOR'=537 -'GCD'=538 -'LCM'=539 -'LN'=540 -'LOG10'=541 -'MIN_SCALE'=542 -'MOD'=543 -'PI'=544 -'POWER'=545 -'RADIANS'=546 -'ROUND'=547 -'SCALE'=548 -'SIGN'=549 -'SQRT'=550 -'TRIM_SCALE'=551 -'TRUNC'=552 -'WIDTH_BUCKET'=553 -'RANDOM'=554 -'SETSEED'=555 -'ACOS'=556 -'ACOSD'=557 -'ASIN'=558 -'ASIND'=559 -'ATAN'=560 -'ATAND'=561 -'ATAN2'=562 -'ATAN2D'=563 -'COS'=564 -'COSD'=565 -'COT'=566 -'COTD'=567 -'SIN'=568 -'SIND'=569 -'TAN'=570 -'TAND'=571 -'SINH'=572 -'COSH'=573 -'TANH'=574 -'ASINH'=575 -'ACOSH'=576 -'ATANH'=577 -'BIT_LENGTH'=578 -'CHAR_LENGTH'=579 -'CHARACTER_LENGTH'=580 -'LOWER'=581 -'OCTET_LENGTH'=582 -'UPPER'=583 -'ASCII'=584 -'BTRIM'=585 -'CHR'=586 -'CONCAT'=587 -'CONCAT_WS'=588 -'FORMAT'=589 -'INITCAP'=590 -'LENGTH'=591 -'LPAD'=592 -'LTRIM'=593 -'MD5'=594 -'PARSE_IDENT'=595 -'PG_CLIENT_ENCODING'=596 -'QUOTE_IDENT'=597 -'QUOTE_LITERAL'=598 -'QUOTE_NULLABLE'=599 -'REGEXP_COUNT'=600 -'REGEXP_INSTR'=601 -'REGEXP_LIKE'=602 -'REGEXP_MATCH'=603 -'REGEXP_MATCHES'=604 -'REGEXP_REPLACE'=605 -'REGEXP_SPLIT_TO_ARRAY'=606 -'REGEXP_SPLIT_TO_TABLE'=607 -'REGEXP_SUBSTR'=608 -'REPEAT'=609 -'RPAD'=610 -'RTRIM'=611 -'SPLIT_PART'=612 -'STARTS_WITH'=613 -'STRING_TO_ARRAY'=614 -'STRING_TO_TABLE'=615 -'STRPOS'=616 -'SUBSTR'=617 -'TO_ASCII'=618 -'TO_HEX'=619 -'TRANSLATE'=620 -'UNISTR'=621 -'AGE'=622 -'CLOCK_TIMESTAMP'=623 -'DATE_BIN'=624 -'DATE_PART'=625 -'DATE_TRUNC'=626 -'ISFINITE'=627 -'JUSTIFY_DAYS'=628 -'JUSTIFY_HOURS'=629 -'JUSTIFY_INTERVAL'=630 -'MAKE_DATE'=631 -'MAKE_INTERVAL'=632 -'MAKE_TIME'=633 -'MAKE_TIMESTAMP'=634 -'MAKE_TIMESTAMPTZ'=635 -'NOW'=636 -'STATEMENT_TIMESTAMP'=637 -'TIMEOFDAY'=638 -'TRANSACTION_TIMESTAMP'=639 -'TO_TIMESTAMP'=640 -'TO_CHAR'=641 -'TO_DATE'=642 -'TO_NUMBER'=643 -'\\\\'=677 -'\''=687 From 1fea51d1214511d703de46027d34ab41ae568997 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 2 Dec 2024 12:35:40 -0800 Subject: [PATCH 037/104] WIP --- .../binding/pgsql/parser/PostgreSqlParser.g4 | 20 ++++++- .../binding/pgsql/parser/PgsqlParser.java | 6 +- ....java => SqlAlterZtableTopicListener.java} | 4 +- .../parser/listener/SqlCommandListener.java | 10 ++-- .../SqlCreateZtableTopicListener.java | 4 +- .../binding/pgsql/parser/PgsqlParserTest.java | 60 ++++++++----------- .../client.rpt | 0 .../server.rpt | 0 .../client.rpt | 0 .../server.rpt | 0 .../client.rpt | 0 .../server.rpt | 0 .../{drop.table => drop.ztable}/client.rpt | 0 .../{drop.table => drop.ztable}/server.rpt | 0 .../client.rpt | 4 +- .../server.rpt | 4 +- .../client.rpt | 4 +- .../server.rpt | 4 +- .../client.rpt | 4 +- .../server.rpt | 4 +- .../{drop.table => drop.ztable}/client.rpt | 4 +- .../{drop.table => drop.ztable}/server.rpt | 4 +- .../query.with.multiple.statements/client.rpt | 4 +- .../query.with.multiple.statements/server.rpt | 4 +- .../config/RisingwaveCommandType.java | 6 +- .../stream/RisingwaveCompletionCommand.java | 6 +- .../stream/RisingwaveProxyFactory.java | 22 +++---- .../risingwave/internal/stream/ProxyIT.java | 28 ++++----- 28 files changed, 105 insertions(+), 101 deletions(-) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/{SqlAlterTableTopicListener.java => SqlAlterZtableTopicListener.java} (96%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{alter.table.add.column => alter.ztable.add.column}/client.rpt (100%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{alter.table.add.column => alter.ztable.add.column}/server.rpt (100%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.table.with.primary.key.and.includes => create.ztable.with.primary.key.and.includes}/client.rpt (100%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.table.with.primary.key.and.includes => create.ztable.with.primary.key.and.includes}/server.rpt (100%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.table.with.primary.key => create.ztable.with.primary.key}/client.rpt (100%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.table.with.primary.key => create.ztable.with.primary.key}/server.rpt (100%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{drop.table => drop.ztable}/client.rpt (100%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{drop.table => drop.ztable}/server.rpt (100%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{alter.table.add.column => alter.ztable.add.column}/client.rpt (94%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{alter.table.add.column => alter.ztable.add.column}/server.rpt (94%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{alter.table.modify.column.rejected => alter.ztable.modify.column.rejected}/client.rpt (94%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{alter.table.modify.column.rejected => alter.ztable.modify.column.rejected}/server.rpt (94%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.table.with.primary.key.and.includes => create.ztable.with.primary.key.and.includes}/client.rpt (95%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.table.with.primary.key.and.includes => create.ztable.with.primary.key.and.includes}/server.rpt (95%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{drop.table => drop.ztable}/client.rpt (95%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{drop.table => drop.ztable}/server.rpt (95%) 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 829aec94a9..6ab4048461 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 + | createztstmt | createstreamstmt | createsubscriptionstmt | createstatsstmt @@ -267,6 +268,7 @@ optschemaeltlist schema_stmt : createstmt | indexstmt + | createztstmt | createseqstmt | createtrigstmt | grantstmt @@ -402,6 +404,7 @@ discardstmt 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 ZTABLE (IF_P EXISTS)? relation_expr (alter_table_cmds | partition_cmd) | ALTER TOPIC (IF_P EXISTS)? relation_expr (alter_table_cmds | partition_cmd) | ALTER TOPIC 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) @@ -711,6 +714,20 @@ opt_with_stream | ; +createztstmt + : CREATE optztable_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 + opttablespace + ) + ; + +optztable_type + : ZTABLE + | TOPIC + ; + 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 @@ -722,8 +739,6 @@ createstmt opttable_type : TABLE - | ZTABLE - | TOPIC ; opttemp @@ -1655,6 +1670,7 @@ object_type_any_name | TOPIC | STREAM | ZVIEW + | ZTABLE | 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 a0de4ccbda..2f10b10d06 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,7 +23,7 @@ import org.antlr.v4.runtime.tree.ParseTreeWalker; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlAlterStreamTopicListener; -import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlAlterTableTopicListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlAlterZtableTopicListener; 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.SqlCreateStreamListener; @@ -48,7 +48,7 @@ public final class PgsqlParser private final SqlCommandListener commandListener; private final SqlCreateStreamListener createStreamListener; private final SqlCreateZtableTopicListener createTableListener; - private final SqlAlterTableTopicListener alterTableListener; + private final SqlAlterZtableTopicListener alterTableListener; private final SqlAlterStreamTopicListener alterStreamListener; private final SqlCreateFunctionListener createFunctionListener; private final SqlCreateZviewListener createMaterializedViewListener; @@ -64,7 +64,7 @@ public PgsqlParser() this.parser = new PostgreSqlParser(tokens); this.commandListener = new SqlCommandListener(tokens); this.createTableListener = new SqlCreateZtableTopicListener(tokens); - this.alterTableListener = new SqlAlterTableTopicListener(tokens); + this.alterTableListener = new SqlAlterZtableTopicListener(tokens); this.alterStreamListener = new SqlAlterStreamTopicListener(tokens); this.createStreamListener = new SqlCreateStreamListener(tokens); this.createFunctionListener = new SqlCreateFunctionListener(tokens); diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterTableTopicListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZtableTopicListener.java similarity index 96% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterTableTopicListener.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZtableTopicListener.java index 8498a01c09..c3a08ad263 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterTableTopicListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZtableTopicListener.java @@ -25,7 +25,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.model.AlterExpression; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; -public class SqlAlterTableTopicListener extends PostgreSqlParserBaseListener +public class SqlAlterZtableTopicListener extends PostgreSqlParserBaseListener { private final TokenStream tokens; @@ -33,7 +33,7 @@ public class SqlAlterTableTopicListener extends PostgreSqlParserBaseListener private String name; private final List alterExpressions = new ArrayList<>(); - public SqlAlterTableTopicListener( + public SqlAlterZtableTopicListener( TokenStream tokens) { this.tokens = tokens; 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 cbe323f002..f8570e50bb 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 @@ -44,19 +44,19 @@ public void enterRoot( } @Override - public void enterCreatestmt( - PostgreSqlParser.CreatestmtContext ctx) + public void enterCreateztstmt( + PostgreSqlParser.CreateztstmtContext ctx) { - command = "CREATE %s".formatted(ctx.opttable_type().getText()); + command = "CREATE %s".formatted(ctx.optztable_type().getText()); } @Override public void enterAltertablestmt( PostgreSqlParser.AltertablestmtContext ctx) { - if (ctx.ALTER() != null && ctx.TABLE() != null) + if (ctx.ALTER() != null && ctx.ZTABLE() != null) { - command = "ALTER TABLE"; + command = "ALTER ZTABLE"; } else if (ctx.ALTER() != null && ctx.TOPIC() != null) { diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZtableTopicListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZtableTopicListener.java index 8fd732ecb0..8abaebae0a 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZtableTopicListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZtableTopicListener.java @@ -67,8 +67,8 @@ public void enterQualified_name( } @Override - public void enterCreatestmt( - PostgreSqlParser.CreatestmtContext ctx) + public void enterCreateztstmt( + PostgreSqlParser.CreateztstmtContext ctx) { if (ctx.opttableelementlist().tableelementlist() != null) { 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 d64102057d..92ddc10bbb 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 @@ -45,7 +45,7 @@ public void setUp() @Test public void shouldParseWithPrimaryKeySql() { - String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; + String sql = "CREATE ZTABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; Table table = parser.parseCreateTable(sql); assertNotNull(table); @@ -56,7 +56,7 @@ public void shouldParseWithPrimaryKeySql() public void shouldCreateTableParseWithPrimaryKeysSql() { String sql = """ - CREATE TABLE example_table ( + CREATE ZTABLE example_table ( id INT PRIMARY KEY, name VARCHAR(100), age INT, @@ -74,7 +74,7 @@ PRIMARY KEY (id, name) @Test public void shouldParseCreateTableName() { - String sql = "CREATE TABLE test (id INT);"; + String sql = "CREATE ZTABLE test (id INT);"; Table table = parser.parseCreateTable(sql); assertEquals("test", table.name()); @@ -83,7 +83,7 @@ public void shouldParseCreateTableName() @Test public void shouldParseCreateTableNameWithDoublePrecisionTypeField() { - String sql = "CREATE TABLE test (id DOUBLE PRECISION);"; + String sql = "CREATE ZTABLE test (id DOUBLE PRECISION);"; Table table = parser.parseCreateTable(sql); assertEquals("test", table.name()); assertEquals("DOUBLE PRECISION", table.columns().get(0).type()); @@ -92,7 +92,7 @@ public void shouldParseCreateTableNameWithDoublePrecisionTypeField() @Test public void shouldParseCreateTableColumns() { - String sql = "CREATE TABLE test (id INT, name VARCHAR(100));"; + String sql = "CREATE ZTABLE test (id INT, name VARCHAR(100));"; Table table = parser.parseCreateTable(sql); assertEquals(2, table.columns().size()); @@ -103,7 +103,7 @@ public void shouldParseCreateTableColumns() @Test public void shouldParseCreatreTablePrimaryKey() { - String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; + String sql = "CREATE ZTABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; Table table = parser.parseCreateTable(sql); assertEquals(1, table.primaryKeys().size()); @@ -113,7 +113,7 @@ public void shouldParseCreatreTablePrimaryKey() @Test public void shouldParseCreateTableCompositePrimaryKey() { - String sql = "CREATE TABLE test (id INT, name VARCHAR(100), PRIMARY KEY (id, name));"; + String sql = "CREATE ZTABLE test (id INT, name VARCHAR(100), PRIMARY KEY (id, name));"; Table table = parser.parseCreateTable(sql); assertEquals(2, table.primaryKeys().size()); @@ -124,7 +124,7 @@ public void shouldParseCreateTableCompositePrimaryKey() @Test public void shouldHandleEmptyCreateTable() { - String sql = "CREATE TABLE test ();"; + String sql = "CREATE ZTABLE test ();"; Table table = parser.parseCreateTable(sql); assertEquals(0, table.columns().size()); @@ -171,14 +171,14 @@ public void shouldHandleInvalidCreateZView() @Test(expected = ParseCancellationException.class) public void shouldHandleInvalidCreateTable() { - String sql = "CREATE TABLE test"; + String sql = "CREATE ZTABLE test"; parser.parseCreateTable(sql); } @Test public void shouldParseDropSingleTable() { - String sql = "DROP TABLE test_table;"; + String sql = "DROP ZTABLE test_table;"; List drops = parser.parseDrop(sql); assertEquals(1, drops.size()); @@ -189,7 +189,7 @@ public void shouldParseDropSingleTable() @Test public void shouldParseDropMultipleTables() { - String sql = "DROP TABLE table1, table2;"; + String sql = "DROP ZTABLE table1, table2;"; List drops = parser.parseDrop(sql); assertEquals(2, drops.size()); @@ -202,7 +202,7 @@ public void shouldParseDropMultipleTables() @Test(expected = ParseCancellationException.class) public void shouldHandleEmptyDropStatement() { - String sql = "DROP TABLE;"; + String sql = "DROP ZTABLE;"; List drops = parser.parseDrop(sql); assertEquals(0, drops.size()); @@ -306,7 +306,7 @@ public void shouldHandleInvalidCreateFunction() @Test public void shouldParseCreateTableWithUniqueConstraint() { - String sql = "CREATE TABLE test (id INT UNIQUE, name VARCHAR(100));"; + String sql = "CREATE ZTABLE test (id INT UNIQUE, name VARCHAR(100));"; Table table = parser.parseCreateTable(sql); assertNotNull(table); @@ -315,22 +315,10 @@ public void shouldParseCreateTableWithUniqueConstraint() assertEquals("name", table.columns().get(1).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));"; - Table table = parser.parseCreateTable(sql); - assertNotNull(table); - assertEquals(2, table.columns().size()); - assertEquals("id", table.columns().get(0).name()); - assertEquals("name", table.columns().get(1).name()); - } - @Test public void shouldParseCreateTableWithCheckConstraint() { - String sql = "CREATE TABLE test (id INT, name VARCHAR(100), CHECK (id > 0));"; + String sql = "CREATE ZTABLE test (id INT, name VARCHAR(100), CHECK (id > 0));"; Table table = parser.parseCreateTable(sql); assertNotNull(table); @@ -342,14 +330,14 @@ public void shouldParseCreateTableWithCheckConstraint() @Test public void shouldHandleInvalidCreateTableWithMissingColumns() { - String sql = "CREATE TABLE test ();"; + String sql = "CREATE ZTABLE test ();"; parser.parseCreateTable(sql); } @Test public void shouldParseCreateTableWithDefaultValues() { - String sql = "CREATE TABLE test (id INT DEFAULT 0, name VARCHAR(100) DEFAULT 'unknown');"; + String sql = "CREATE ZTABLE test (id INT DEFAULT 0, name VARCHAR(100) DEFAULT 'unknown');"; Table table = parser.parseCreateTable(sql); assertNotNull(table); @@ -361,7 +349,7 @@ public void shouldParseCreateTableWithDefaultValues() @Test public void shouldParseCreateTableWithNotNullConstraint() { - String sql = "CREATE TABLE test (id INT NOT NULL, name VARCHAR(100) NOT NULL);"; + String sql = "CREATE ZTABLE test (id INT NOT NULL, name VARCHAR(100) NOT NULL);"; Table table = parser.parseCreateTable(sql); assertNotNull(table); @@ -373,7 +361,7 @@ public void shouldParseCreateTableWithNotNullConstraint() @Test public void shouldParseCreateTableWithMultipleConstraints() { - String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100) UNIQUE, age INT CHECK (age > 0));"; + String sql = "CREATE ZTABLE test (id INT PRIMARY KEY, name VARCHAR(100) UNIQUE, age INT CHECK (age > 0));"; Table table = parser.parseCreateTable(sql); assertNotNull(table); @@ -386,7 +374,7 @@ public void shouldParseCreateTableWithMultipleConstraints() @Test public void shouldParseAlterTableAddColumn() { - String sql = "ALTER TABLE test_table ADD COLUMN new_column INT;"; + String sql = "ALTER ZTABLE test_table ADD COLUMN new_column INT;"; Alter alter = parser.parseAlterTable(sql); assertEquals("test_table", alter.name()); @@ -412,7 +400,7 @@ public void shouldParseAlterTopicAddColumn() @Test public void shouldParseAlterTableDropColumn() { - String sql = "ALTER TABLE test_table DROP COLUMN old_column;"; + String sql = "ALTER ZTABLE test_table DROP COLUMN old_column;"; Alter alter = parser.parseAlterTable(sql); assertEquals("test_table", alter.name()); @@ -424,7 +412,7 @@ public void shouldParseAlterTableDropColumn() @Test public void shouldParseAlterTableModifyColumn() { - String sql = "ALTER TABLE test_table ALTER COLUMN existing_column TYPE VARCHAR(100);"; + String sql = "ALTER ZTABLE test_table ALTER COLUMN existing_column TYPE VARCHAR(100);"; Alter alter = parser.parseAlterTable(sql); assertEquals("test_table", alter.name()); @@ -436,15 +424,15 @@ public void shouldParseAlterTableModifyColumn() @Test(expected = ParseCancellationException.class) public void shouldHandleInvalidAlterTable() { - String sql = "ALTER TABLE"; + String sql = "ALTER ZTABLE"; parser.parseAlterTable(sql); } @Test public void shouldParseCommandForAlterTable() { - String sql = "ALTER TABLE test_table ALTER COLUMN existing_column TYPE VARCHAR(100);"; - String expectedCommand = "ALTER TABLE"; + String sql = "ALTER ZTABLE test_table ALTER COLUMN existing_column TYPE VARCHAR(100);"; + String expectedCommand = "ALTER ZTABLE"; String parsedCommand = parser.parseCommand(sql); diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.ztable.add.column/client.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.ztable.add.column/client.rpt diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.ztable.add.column/server.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.ztable.add.column/server.rpt 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.ztable.with.primary.key.and.includes/client.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/client.rpt 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.ztable.with.primary.key.and.includes/server.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key.and.includes/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/server.rpt diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/client.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/client.rpt diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/server.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/server.rpt diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/client.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/client.rpt diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/server.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/server.rpt diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.add.column/client.rpt similarity index 94% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.add.column/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.add.column/client.rpt index 426ab704cd..2436509dd2 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.add.column/client.rpt @@ -33,14 +33,14 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "ALTER TABLE cities ADD COLUMN zip INT;" +write "ALTER ZTABLE cities ADD COLUMN zip INT;" [0x00] write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("ALTER_TABLE") + .tag("ALTER_ZTABLE") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.add.column/server.rpt similarity index 94% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.add.column/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.add.column/server.rpt index 9d92c3f447..5856b538d3 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.add.column/server.rpt @@ -34,13 +34,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "ALTER TABLE cities ADD COLUMN zip INT;" +read "ALTER ZTABLE cities ADD COLUMN zip INT;" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("ALTER_TABLE") + .tag("ALTER_ZTABLE") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.modify.column.rejected/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.modify.column.rejected/client.rpt similarity index 94% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.modify.column.rejected/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.modify.column.rejected/client.rpt index 3089f09f9c..f025ed1902 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.modify.column.rejected/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.modify.column.rejected/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "ALTER TABLE cities ALTER COLUMN name TYPE VARCHAR(100);" +write "ALTER ZTABLE cities ALTER COLUMN name TYPE VARCHAR(100);" [0x00] write flush @@ -41,7 +41,7 @@ read advised zilla:flush ${pgsql:flushEx() .error() .severity("ERROR") .code("XX000") - .message("Unable to execute command because ALTER TABLE only supports ADD") + .message("Unable to execute command because ALTER ZTABLE only supports ADD") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.modify.column.rejected/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.modify.column.rejected/server.rpt similarity index 94% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.modify.column.rejected/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.modify.column.rejected/server.rpt index 51af902532..63b275ec41 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.table.modify.column.rejected/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.modify.column.rejected/server.rpt @@ -34,7 +34,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "ALTER TABLE cities ALTER COLUMN name TYPE VARCHAR(100);" +read "ALTER ZTABLE cities ALTER COLUMN name TYPE VARCHAR(100);" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -42,7 +42,7 @@ write advise zilla:flush ${pgsql:flushEx() .error() .severity("ERROR") .code("XX000") - .message("Unable to execute command because ALTER TABLE only supports ADD") + .message("Unable to execute command because ALTER ZTABLE only supports ADD") .build() .build()} 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.ztable.with.primary.key.and.includes/client.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key.and.includes/client.rpt index 2bf28eebab..054a098d74 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.ztable.with.primary.key.and.includes/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE TABLE IF NOT EXISTS cities " +write "CREATE ZTABLE IF NOT EXISTS cities " "(id VARCHAR, name VARCHAR, description VARCHAR," " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," " PRIMARY KEY (id));" @@ -43,7 +43,7 @@ write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TABLE") + .tag("CREATE_ZTABLE") .build() .build()} 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.ztable.with.primary.key.and.includes/server.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.table.with.primary.key.and.includes/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key.and.includes/server.rpt index c4adad606f..233dd3b9cf 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.ztable.with.primary.key.and.includes/server.rpt @@ -36,7 +36,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE TABLE IF NOT EXISTS cities " +read "CREATE ZTABLE IF NOT EXISTS cities " "(id VARCHAR, name VARCHAR, description VARCHAR," " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," " PRIMARY KEY (id));" @@ -45,7 +45,7 @@ read "CREATE TABLE IF NOT EXISTS cities " write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TABLE") + .tag("CREATE_ZTABLE") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.table/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.ztable/client.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.table/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.ztable/client.rpt index 593846bdfb..bf55a8066a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.table/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.ztable/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "DROP TABLE weather;" +write "DROP ZTABLE weather;" [0x00] write flush @@ -40,7 +40,7 @@ write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("DROP_TABLE") + .tag("DROP_ZTABLE") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.table/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.ztable/server.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.table/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.ztable/server.rpt index fdc6bce367..0162a2d8eb 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.table/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.ztable/server.rpt @@ -36,13 +36,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "DROP TABLE weather;" +read "DROP ZTABLE weather;" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("DROP_TABLE") + .tag("DROP_ZTABLE") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/client.rpt index 6838351c29..dac8ec54f9 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE TABLE IF NOT EXISTS cities " +write "CREATE ZTABLE IF NOT EXISTS cities " "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" "UPDATE weather SET id = 'SF';" [0x00] @@ -42,7 +42,7 @@ write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TABLE") + .tag("CREATE_ZTABLE") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/server.rpt index 742ea02bb7..e0c11cbe77 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/server.rpt @@ -36,14 +36,14 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE TABLE IF NOT EXISTS cities " +read "CREATE ZTABLE IF NOT EXISTS cities " "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" "UPDATE weather SET id = 'SF';" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_TABLE") + .tag("CREATE_ZTABLE") .build() .build()} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java index 65297a968c..67f9a30063 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java @@ -19,15 +19,15 @@ public enum RisingwaveCommandType { CREATE_TOPIC_COMMAND("CREATE TOPIC".getBytes()), - CREATE_TABLE_COMMAND("CREATE TABLE".getBytes()), + CREATE_ZTABLE_COMMAND("CREATE ZTABLE".getBytes()), CREATE_STREAM_COMMAND("CREATE STREAM".getBytes()), CREATE_ZVIEW_COMMAND("CREATE ZVIEW".getBytes()), CREATE_FUNCTION_COMMAND("CREATE FUNCTION".getBytes()), - ALTER_TABLE_COMMAND("ALTER TABLE".getBytes()), + ALTER_ZTABLE_COMMAND("ALTER ZTABLE".getBytes()), ALTER_STREAM_COMMAND("ALTER STREAM".getBytes()), ALTER_TOPIC_COMMAND("ALTER TOPIC".getBytes()), DROP_TOPIC_COMMAND("DROP TOPIC".getBytes()), - DROP_TABLE_COMMAND("DROP TABLE".getBytes()), + DROP_ZTABLE_COMMAND("DROP ZTABLE".getBytes()), DROP_STREAM_COMMAND("DROP STREAM".getBytes()), DROP_ZVIEW_COMMAND("DROP ZVIEW".getBytes()), SHOW_ZVIEWS_COMMAND("SHOW ZVIEWS".getBytes()), diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java index d13e4fc9ec..fbe8572c4b 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java @@ -17,13 +17,13 @@ public enum RisingwaveCompletionCommand { UNKNOWN_COMMAND("UNKNOWN".getBytes()), - CREATE_TABLE_COMMAND("CREATE_TABLE".getBytes()), + CREATE_ZTABLE_COMMAND("CREATE_ZTABLE".getBytes()), CREATE_ZVIEW_COMMAND("CREATE_ZVIEW".getBytes()), CREATE_STREAM_COMMAND("CREATE_STREAM".getBytes()), CREATE_FUNCTION_COMMAND("CREATE_FUNCTION".getBytes()), - ALTER_TABLE_COMMAND("ALTER_TABLE".getBytes()), + ALTER_ZTABLE_COMMAND("ALTER_ZTABLE".getBytes()), ALTER_STREAM_COMMAND("ALTER_STREAM".getBytes()), - DROP_TABLE_COMMAND("DROP_TABLE".getBytes()), + DROP_ZTABLE_COMMAND("DROP_ZTABLE".getBytes()), DROP_STREAM_COMMAND("DROP_STREAM".getBytes()), DROP_ZVIEW_COMMAND("DROP_ZVIEW".getBytes()), SHOW_COMMAND("SHOW_COMMAND".getBytes()); 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 ad26723f40..e6285557aa 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 @@ -157,14 +157,14 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory { Object2ObjectHashMap clientTransforms = new Object2ObjectHashMap<>(); - clientTransforms.put(RisingwaveCommandType.CREATE_TABLE_COMMAND, this::decodeCreateTableCommand); + clientTransforms.put(RisingwaveCommandType.CREATE_ZTABLE_COMMAND, this::decodeCreateZtableCommand); clientTransforms.put(RisingwaveCommandType.CREATE_STREAM_COMMAND, this::decodeCreateStreamCommand); clientTransforms.put(RisingwaveCommandType.CREATE_ZVIEW_COMMAND, this::decodeCreateZviewCommand); clientTransforms.put(RisingwaveCommandType.CREATE_FUNCTION_COMMAND, this::decodeCreateFunctionCommand); - clientTransforms.put(RisingwaveCommandType.ALTER_TABLE_COMMAND, this::decodeAlterTableCommand); + clientTransforms.put(RisingwaveCommandType.ALTER_ZTABLE_COMMAND, this::decodeAlterZtableCommand); clientTransforms.put(RisingwaveCommandType.ALTER_STREAM_COMMAND, this::decodeAlterStreamCommand); clientTransforms.put(RisingwaveCommandType.DROP_STREAM_COMMAND, this::decodeDropStreamCommand); - clientTransforms.put(RisingwaveCommandType.DROP_TABLE_COMMAND, this::decodeDropTableCommand); + clientTransforms.put(RisingwaveCommandType.DROP_ZTABLE_COMMAND, this::decodeDropZtableCommand); clientTransforms.put(RisingwaveCommandType.DROP_ZVIEW_COMMAND, this::decodeDropZviewCommand); clientTransforms.put(RisingwaveCommandType.SHOW_ZVIEWS_COMMAND, this::decodeShowCommand); clientTransforms.put(RisingwaveCommandType.UNKNOWN_COMMAND, this::decodeUnknownCommand); @@ -1554,7 +1554,7 @@ private void doWindow( sender.accept(window.typeId(), window.buffer(), window.offset(), window.sizeof()); } - private void decodeCreateTableCommand( + private void decodeCreateZtableCommand( PgsqlServer server, long traceId, long authorization, @@ -1564,7 +1564,7 @@ private void decodeCreateTableCommand( server.commandsProcessed == COMMAND_PROCESSED_ERRORED) { final int length = statement.length(); - server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.CREATE_TABLE_COMMAND); + server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.CREATE_ZTABLE_COMMAND); } else { @@ -1764,7 +1764,7 @@ else if (server.commandsProcessed == 1) } } - private void decodeAlterTableCommand( + private void decodeAlterZtableCommand( PgsqlServer server, long traceId, long authorization, @@ -1778,14 +1778,14 @@ private void decodeAlterTableCommand( if (!supportedOperation) { - decodeUnsupportedCommand(server, traceId, authorization, RisingwaveCompletionCommand.ALTER_TABLE_COMMAND, - statement, "ALTER TABLE only supports ADD"); + decodeUnsupportedCommand(server, traceId, authorization, RisingwaveCompletionCommand.ALTER_ZTABLE_COMMAND, + statement, "ALTER ZTABLE only supports ADD"); } else if (server.commandsProcessed == 2 || server.commandsProcessed == COMMAND_PROCESSED_ERRORED) { final int length = statement.length(); - server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.ALTER_TABLE_COMMAND); + server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.ALTER_ZTABLE_COMMAND); } else { @@ -1871,7 +1871,7 @@ private void decodeUnsupportedCommand( server.onCommandCompleted(traceId, authorization, length, command); } - private void decodeDropTableCommand( + private void decodeDropZtableCommand( PgsqlServer server, long traceId, long authorization, @@ -1880,7 +1880,7 @@ private void decodeDropTableCommand( if (server.commandsProcessed == 6) { final int length = statement.length(); - server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.DROP_TABLE_COMMAND); + server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.DROP_ZTABLE_COMMAND); } else { diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java index 2cbd735aba..8244de2ffe 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java @@ -52,9 +52,9 @@ public class ProxyIT @Test @Configuration("proxy.yaml") @Specification({ - "${pgsql}/create.table.with.primary.key/client", - "${effective}/create.table.with.primary.key/server" }) - public void shouldCreateTableWithPrimaryKey() throws Exception + "${pgsql}/create.ztable.with.primary.key/client", + "${effective}/create.ztable.with.primary.key/server" }) + public void shouldCreateZtableWithPrimaryKey() throws Exception { k3po.finish(); } @@ -195,9 +195,9 @@ public void shouldCreateStreamWithIncludes() throws Exception @Test @Configuration("proxy.yaml") @Specification({ - "${pgsql}/create.table.with.primary.key.and.includes/client", - "${effective}/create.table.with.primary.key.and.includes/server" }) - public void shouldCreateTableWithPrimaryKeyAndIncludes() throws Exception + "${pgsql}/create.ztable.with.primary.key.and.includes/client", + "${effective}/create.ztable.with.primary.key.and.includes/server" }) + public void shouldCreateZtableWithPrimaryKeyAndIncludes() throws Exception { k3po.finish(); } @@ -225,9 +225,9 @@ public void shouldDropStream() throws Exception @Test @Configuration("proxy.yaml") @Specification({ - "${pgsql}/drop.table/client", - "${effective}/drop.table/server" }) - public void shouldDropTable() throws Exception + "${pgsql}/drop.ztable/client", + "${effective}/drop.ztable/server" }) + public void shouldDropZtable() throws Exception { k3po.finish(); } @@ -245,9 +245,9 @@ public void shouldDropZview() throws Exception @Test @Configuration("proxy.yaml") @Specification({ - "${pgsql}/alter.table.add.column/client", - "${effective}/alter.table.add.column/server" }) - public void shouldAlterTableAddColumn() throws Exception + "${pgsql}/alter.ztable.add.column/client", + "${effective}/alter.ztable.add.column/server" }) + public void shouldAlterZtableAddColumn() throws Exception { k3po.finish(); } @@ -265,9 +265,9 @@ public void shouldAlterStreamAddColumn() throws Exception @Test @Configuration("proxy.yaml") @Specification({ - "${pgsql}/alter.table.modify.column.rejected/client", + "${pgsql}/alter.ztable.modify.column.rejected/client", "${effective}/client.stream.established/server" }) - public void shouldNotAlterTableModifyColumn() throws Exception + public void shouldNotAlterZtableModifyColumn() throws Exception { k3po.finish(); } From e8f5e7ed9a98c8f478a0fb2c5148841803c5210b Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 2 Dec 2024 12:56:17 -0800 Subject: [PATCH 038/104] Checkpoint --- .../binding-pgsql/gen/PostgreSqlLexer.interp | 2089 ------- .../binding-pgsql/gen/PostgreSqlLexer.java | 5276 ----------------- .../binding-pgsql/gen/PostgreSqlLexer.tokens | 1324 ----- .../effective/create.function/server.rpt | 1 - .../streams/effective/create.zview/client.rpt | 23 + .../streams/effective/create.zview/server.rpt | 22 + .../stream/RisingwaveProxyFactory.java | 12 +- 7 files changed, 53 insertions(+), 8694 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 2acc348e46..0000000000 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.interp +++ /dev/null @@ -1,2089 +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' -'TOPICS' -'STREAM' -'ZVIEW' -'ZVIEWS' -'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 -TOPICS -STREAM -ZVIEW -ZVIEWS -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 -TOPICS -STREAM -ZVIEW -ZVIEWS -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, 684, 6834, 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, 2, 697, 7, 697, 2, 698, 7, 698, 2, 699, 7, 699, 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, 1471, 8, 27, 11, 27, 12, 27, 1472, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1479, 8, 28, 11, 28, 12, 28, 1480, 1, 28, 1, 28, 1, 28, 3, 28, 1486, 8, 28, 1, 28, 1, 28, 4, 28, 1490, 8, 28, 11, 28, 12, 28, 1491, 1, 28, 3, 28, 1495, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1504, 8, 29, 10, 29, 12, 29, 1507, 9, 29, 1, 29, 1, 29, 3, 29, 1511, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1516, 8, 29, 11, 29, 12, 29, 1517, 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, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 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, 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, 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, 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, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 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, 115, 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, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 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, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 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, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 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, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 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, 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, 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, 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, 138, 1, 138, 1, 138, 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, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 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, 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, 145, 1, 145, 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, 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, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 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, 152, 1, 152, 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, 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, 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, 159, 1, 159, 1, 159, 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, 162, 1, 162, 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, 163, 1, 163, 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, 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, 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, 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, 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, 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, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 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, 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, 179, 1, 179, 1, 179, 1, 179, 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, 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, 185, 1, 185, 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, 187, 1, 187, 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, 191, 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, 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, 193, 1, 193, 1, 194, 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, 195, 1, 196, 1, 196, 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, 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, 201, 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, 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, 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, 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, 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, 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, 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, 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, 216, 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, 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, 219, 1, 219, 1, 220, 1, 220, 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, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 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, 225, 1, 225, 1, 225, 1, 225, 1, 225, 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, 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, 231, 1, 231, 1, 231, 1, 232, 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, 233, 1, 233, 1, 233, 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, 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, 237, 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, 239, 1, 239, 1, 239, 1, 239, 1, 240, 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, 242, 1, 242, 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, 243, 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, 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, 249, 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, 250, 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, 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, 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, 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, 259, 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, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 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, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 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, 273, 1, 273, 1, 273, 1, 273, 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, 277, 1, 277, 1, 277, 1, 277, 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, 279, 1, 279, 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, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 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, 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, 286, 1, 286, 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, 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, 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, 295, 1, 295, 1, 295, 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, 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, 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, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 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, 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, 304, 1, 304, 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, 307, 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, 311, 1, 311, 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, 313, 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, 315, 1, 316, 1, 316, 1, 316, 1, 316, 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, 318, 1, 318, 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, 321, 1, 321, 1, 321, 1, 321, 1, 321, 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, 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, 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, 328, 1, 329, 1, 329, 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, 330, 1, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 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, 334, 1, 334, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 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, 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, 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, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 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, 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, 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, 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, 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, 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, 355, 1, 355, 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, 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, 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, 361, 1, 361, 1, 361, 1, 361, 1, 361, 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, 363, 1, 364, 1, 364, 1, 364, 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, 365, 1, 365, 1, 365, 1, 366, 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, 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, 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, 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, 373, 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, 376, 1, 376, 1, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 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, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 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, 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, 393, 1, 393, 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, 394, 1, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 396, 1, 396, 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, 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, 400, 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, 402, 1, 402, 1, 402, 1, 402, 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, 404, 1, 404, 1, 404, 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, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 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, 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, 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, 416, 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, 418, 1, 418, 1, 418, 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, 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, 422, 1, 422, 1, 422, 1, 422, 1, 422, 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, 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, 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, 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, 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, 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, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 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, 432, 1, 432, 1, 432, 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, 434, 1, 434, 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, 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, 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, 439, 1, 440, 1, 440, 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, 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, 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, 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, 449, 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, 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, 453, 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, 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, 459, 1, 459, 1, 459, 1, 459, 1, 459, 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, 460, 1, 461, 1, 461, 1, 461, 1, 461, 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, 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, 465, 1, 465, 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, 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, 470, 1, 470, 1, 470, 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, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 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, 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, 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, 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, 482, 1, 482, 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, 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, 485, 1, 486, 1, 486, 1, 486, 1, 486, 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, 488, 1, 488, 1, 488, 1, 489, 1, 489, 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, 491, 1, 491, 1, 491, 1, 491, 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, 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, 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, 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, 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, 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, 504, 1, 504, 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, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 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, 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, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 512, 1, 512, 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, 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, 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, 518, 1, 518, 1, 519, 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, 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, 523, 1, 523, 1, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 524, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 526, 1, 526, 1, 526, 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, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 532, 1, 532, 1, 532, 1, 532, 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, 534, 1, 534, 1, 534, 1, 534, 1, 535, 1, 535, 1, 535, 1, 535, 1, 536, 1, 536, 1, 536, 1, 536, 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, 538, 1, 538, 1, 538, 1, 538, 1, 539, 1, 539, 1, 539, 1, 539, 1, 540, 1, 540, 1, 540, 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, 542, 1, 542, 1, 542, 1, 542, 1, 543, 1, 543, 1, 543, 1, 543, 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, 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, 549, 1, 549, 1, 549, 1, 549, 1, 549, 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, 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, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 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, 559, 1, 559, 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, 561, 1, 561, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 563, 1, 563, 1, 563, 1, 563, 1, 563, 1, 563, 1, 563, 1, 564, 1, 564, 1, 564, 1, 564, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 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, 569, 1, 569, 1, 569, 1, 569, 1, 569, 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, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 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, 578, 1, 578, 1, 578, 1, 578, 1, 578, 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, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 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, 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, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 586, 1, 586, 1, 586, 1, 586, 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, 588, 1, 588, 1, 588, 1, 589, 1, 589, 1, 589, 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, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 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, 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, 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, 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, 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, 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, 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, 605, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 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, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 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, 608, 1, 608, 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, 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, 613, 1, 613, 1, 613, 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, 614, 1, 614, 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, 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, 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, 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, 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, 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, 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, 628, 1, 628, 1, 628, 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, 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, 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, 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, 635, 1, 635, 1, 635, 1, 635, 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, 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, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 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, 640, 1, 640, 1, 640, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 641, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 644, 1, 644, 5, 644, 6366, 8, 644, 10, 644, 12, 644, 6369, 9, 644, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 1, 645, 3, 645, 6377, 8, 645, 1, 646, 1, 646, 3, 646, 6381, 8, 646, 1, 647, 1, 647, 3, 647, 6385, 8, 647, 1, 648, 1, 648, 1, 648, 1, 649, 1, 649, 1, 649, 1, 649, 5, 649, 6394, 8, 649, 10, 649, 12, 649, 6397, 9, 649, 1, 650, 1, 650, 1, 650, 1, 651, 1, 651, 1, 651, 1, 651, 5, 651, 6406, 8, 651, 10, 651, 12, 651, 6409, 9, 651, 1, 652, 1, 652, 1, 652, 1, 652, 1, 653, 1, 653, 1, 653, 1, 653, 1, 654, 1, 654, 1, 654, 1, 654, 1, 655, 1, 655, 1, 655, 1, 655, 1, 656, 1, 656, 1, 656, 1, 657, 1, 657, 1, 657, 1, 657, 5, 657, 6434, 8, 657, 10, 657, 12, 657, 6437, 9, 657, 1, 658, 1, 658, 1, 658, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 1, 659, 1, 660, 1, 660, 1, 660, 1, 660, 1, 661, 1, 661, 3, 661, 6454, 8, 661, 1, 661, 1, 661, 1, 661, 1, 661, 1, 661, 1, 662, 1, 662, 5, 662, 6463, 8, 662, 10, 662, 12, 662, 6466, 9, 662, 1, 663, 1, 663, 1, 663, 1, 664, 1, 664, 1, 664, 5, 664, 6474, 8, 664, 10, 664, 12, 664, 6477, 9, 664, 1, 665, 1, 665, 1, 665, 1, 666, 1, 666, 1, 666, 1, 667, 1, 667, 1, 667, 1, 668, 1, 668, 1, 668, 5, 668, 6491, 8, 668, 10, 668, 12, 668, 6494, 9, 668, 1, 669, 1, 669, 1, 669, 1, 670, 1, 670, 1, 670, 1, 671, 1, 671, 1, 672, 1, 672, 1, 672, 1, 672, 1, 672, 1, 672, 1, 673, 1, 673, 1, 673, 3, 673, 6513, 8, 673, 1, 673, 1, 673, 3, 673, 6517, 8, 673, 1, 673, 3, 673, 6520, 8, 673, 1, 673, 1, 673, 1, 673, 1, 673, 3, 673, 6526, 8, 673, 1, 673, 3, 673, 6529, 8, 673, 1, 673, 1, 673, 1, 673, 3, 673, 6534, 8, 673, 1, 673, 1, 673, 3, 673, 6538, 8, 673, 1, 674, 4, 674, 6541, 8, 674, 11, 674, 12, 674, 6542, 1, 675, 1, 675, 1, 675, 5, 675, 6548, 8, 675, 10, 675, 12, 675, 6551, 9, 675, 1, 676, 1, 676, 1, 676, 1, 676, 1, 676, 1, 676, 1, 676, 1, 676, 5, 676, 6561, 8, 676, 10, 676, 12, 676, 6564, 9, 676, 1, 676, 1, 676, 1, 677, 4, 677, 6569, 8, 677, 11, 677, 12, 677, 6570, 1, 677, 1, 677, 1, 678, 1, 678, 3, 678, 6577, 8, 678, 1, 678, 3, 678, 6580, 8, 678, 1, 678, 1, 678, 1, 679, 1, 679, 1, 679, 1, 679, 5, 679, 6588, 8, 679, 10, 679, 12, 679, 6591, 9, 679, 1, 679, 1, 679, 1, 680, 1, 680, 1, 680, 1, 680, 5, 680, 6599, 8, 680, 10, 680, 12, 680, 6602, 9, 680, 1, 680, 1, 680, 1, 680, 4, 680, 6607, 8, 680, 11, 680, 12, 680, 6608, 1, 680, 1, 680, 4, 680, 6613, 8, 680, 11, 680, 12, 680, 6614, 1, 680, 5, 680, 6618, 8, 680, 10, 680, 12, 680, 6621, 9, 680, 1, 680, 5, 680, 6624, 8, 680, 10, 680, 12, 680, 6627, 9, 680, 1, 680, 1, 680, 1, 680, 1, 680, 1, 680, 1, 681, 1, 681, 1, 681, 1, 681, 5, 681, 6638, 8, 681, 10, 681, 12, 681, 6641, 9, 681, 1, 681, 1, 681, 1, 681, 4, 681, 6646, 8, 681, 11, 681, 12, 681, 6647, 1, 681, 1, 681, 4, 681, 6652, 8, 681, 11, 681, 12, 681, 6653, 1, 681, 3, 681, 6657, 8, 681, 5, 681, 6659, 8, 681, 10, 681, 12, 681, 6662, 9, 681, 1, 681, 4, 681, 6665, 8, 681, 11, 681, 12, 681, 6666, 1, 681, 4, 681, 6670, 8, 681, 11, 681, 12, 681, 6671, 1, 681, 5, 681, 6675, 8, 681, 10, 681, 12, 681, 6678, 9, 681, 1, 681, 3, 681, 6681, 8, 681, 1, 681, 1, 681, 1, 682, 1, 682, 1, 682, 1, 682, 5, 682, 6689, 8, 682, 10, 682, 12, 682, 6692, 9, 682, 1, 682, 5, 682, 6695, 8, 682, 10, 682, 12, 682, 6698, 9, 682, 1, 682, 1, 682, 5, 682, 6702, 8, 682, 10, 682, 12, 682, 6705, 9, 682, 3, 682, 6707, 8, 682, 1, 683, 1, 683, 1, 683, 1, 684, 1, 684, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 1, 686, 1, 686, 3, 686, 6721, 8, 686, 1, 686, 1, 686, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 3, 687, 6745, 8, 687, 1, 687, 5, 687, 6748, 8, 687, 10, 687, 12, 687, 6751, 9, 687, 1, 688, 1, 688, 1, 688, 1, 688, 1, 688, 1, 689, 1, 689, 3, 689, 6760, 8, 689, 1, 689, 1, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 5, 690, 6769, 8, 690, 10, 690, 12, 690, 6772, 9, 690, 1, 691, 1, 691, 1, 691, 1, 691, 1, 691, 1, 692, 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, 1, 695, 1, 695, 1, 695, 1, 695, 1, 696, 1, 696, 1, 696, 1, 696, 1, 696, 1, 697, 1, 697, 1, 697, 1, 697, 1, 697, 1, 698, 4, 698, 6811, 8, 698, 11, 698, 12, 698, 6812, 1, 698, 1, 698, 5, 698, 6817, 8, 698, 10, 698, 12, 698, 6820, 9, 698, 3, 698, 6822, 8, 698, 1, 699, 1, 699, 3, 699, 6826, 8, 699, 1, 699, 1, 699, 1, 699, 1, 699, 1, 699, 1, 699, 1, 699, 0, 0, 700, 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, 639, 1291, 640, 1293, 641, 1295, 0, 1297, 0, 1299, 0, 1301, 642, 1303, 643, 1305, 644, 1307, 645, 1309, 646, 1311, 647, 1313, 648, 1315, 649, 1317, 650, 1319, 651, 1321, 0, 1323, 652, 1325, 653, 1327, 654, 1329, 0, 1331, 655, 1333, 656, 1335, 657, 1337, 658, 1339, 659, 1341, 660, 1343, 661, 1345, 662, 1347, 663, 1349, 664, 1351, 665, 1353, 0, 1355, 666, 1357, 667, 1359, 668, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 673, 1371, 674, 1373, 675, 1375, 676, 1377, 677, 1379, 0, 1381, 678, 1383, 679, 1385, 0, 1387, 0, 1389, 0, 1391, 680, 1393, 0, 1395, 0, 1397, 684, 1399, 681, 1401, 682, 1403, 683, 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, 87, 87, 119, 119, 2, 0, 81, 81, 113, 113, 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, 6906, 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, 1289, 1, 0, 0, 0, 0, 1291, 1, 0, 0, 0, 0, 1293, 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, 1323, 1, 0, 0, 0, 0, 1325, 1, 0, 0, 0, 0, 1327, 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, 1347, 1, 0, 0, 0, 0, 1349, 1, 0, 0, 0, 0, 1351, 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, 0, 1369, 1, 0, 0, 0, 0, 1371, 1, 0, 0, 0, 0, 1373, 1, 0, 0, 0, 1, 1375, 1, 0, 0, 0, 1, 1377, 1, 0, 0, 0, 1, 1381, 1, 0, 0, 0, 1, 1383, 1, 0, 0, 0, 2, 1387, 1, 0, 0, 0, 2, 1389, 1, 0, 0, 0, 2, 1391, 1, 0, 0, 0, 3, 1393, 1, 0, 0, 0, 3, 1395, 1, 0, 0, 0, 3, 1397, 1, 0, 0, 0, 3, 1399, 1, 0, 0, 0, 4, 1401, 1, 0, 0, 0, 4, 1403, 1, 0, 0, 0, 5, 1405, 1, 0, 0, 0, 7, 1407, 1, 0, 0, 0, 9, 1409, 1, 0, 0, 0, 11, 1411, 1, 0, 0, 0, 13, 1413, 1, 0, 0, 0, 15, 1415, 1, 0, 0, 0, 17, 1417, 1, 0, 0, 0, 19, 1419, 1, 0, 0, 0, 21, 1421, 1, 0, 0, 0, 23, 1423, 1, 0, 0, 0, 25, 1425, 1, 0, 0, 0, 27, 1427, 1, 0, 0, 0, 29, 1429, 1, 0, 0, 0, 31, 1431, 1, 0, 0, 0, 33, 1433, 1, 0, 0, 0, 35, 1435, 1, 0, 0, 0, 37, 1437, 1, 0, 0, 0, 39, 1439, 1, 0, 0, 0, 41, 1442, 1, 0, 0, 0, 43, 1445, 1, 0, 0, 0, 45, 1448, 1, 0, 0, 0, 47, 1451, 1, 0, 0, 0, 49, 1454, 1, 0, 0, 0, 51, 1457, 1, 0, 0, 0, 53, 1460, 1, 0, 0, 0, 55, 1463, 1, 0, 0, 0, 57, 1466, 1, 0, 0, 0, 59, 1468, 1, 0, 0, 0, 61, 1494, 1, 0, 0, 0, 63, 1505, 1, 0, 0, 0, 65, 1521, 1, 0, 0, 0, 67, 1523, 1, 0, 0, 0, 69, 1525, 1, 0, 0, 0, 71, 1527, 1, 0, 0, 0, 73, 1531, 1, 0, 0, 0, 75, 1539, 1, 0, 0, 0, 77, 1547, 1, 0, 0, 0, 79, 1551, 1, 0, 0, 0, 81, 1555, 1, 0, 0, 0, 83, 1561, 1, 0, 0, 0, 85, 1564, 1, 0, 0, 0, 87, 1568, 1, 0, 0, 0, 89, 1579, 1, 0, 0, 0, 91, 1584, 1, 0, 0, 0, 93, 1589, 1, 0, 0, 0, 95, 1594, 1, 0, 0, 0, 97, 1600, 1, 0, 0, 0, 99, 1608, 1, 0, 0, 0, 101, 1615, 1, 0, 0, 0, 103, 1626, 1, 0, 0, 0, 105, 1633, 1, 0, 0, 0, 107, 1649, 1, 0, 0, 0, 109, 1662, 1, 0, 0, 0, 111, 1675, 1, 0, 0, 0, 113, 1688, 1, 0, 0, 0, 115, 1706, 1, 0, 0, 0, 117, 1719, 1, 0, 0, 0, 119, 1727, 1, 0, 0, 0, 121, 1738, 1, 0, 0, 0, 123, 1743, 1, 0, 0, 0, 125, 1752, 1, 0, 0, 0, 127, 1755, 1, 0, 0, 0, 129, 1760, 1, 0, 0, 0, 131, 1767, 1, 0, 0, 0, 133, 1773, 1, 0, 0, 0, 135, 1779, 1, 0, 0, 0, 137, 1783, 1, 0, 0, 0, 139, 1791, 1, 0, 0, 0, 141, 1796, 1, 0, 0, 0, 143, 1802, 1, 0, 0, 0, 145, 1808, 1, 0, 0, 0, 147, 1815, 1, 0, 0, 0, 149, 1818, 1, 0, 0, 0, 151, 1828, 1, 0, 0, 0, 153, 1838, 1, 0, 0, 0, 155, 1843, 1, 0, 0, 0, 157, 1851, 1, 0, 0, 0, 159, 1859, 1, 0, 0, 0, 161, 1865, 1, 0, 0, 0, 163, 1875, 1, 0, 0, 0, 165, 1890, 1, 0, 0, 0, 167, 1894, 1, 0, 0, 0, 169, 1899, 1, 0, 0, 0, 171, 1906, 1, 0, 0, 0, 173, 1909, 1, 0, 0, 0, 175, 1914, 1, 0, 0, 0, 177, 1917, 1, 0, 0, 0, 179, 1923, 1, 0, 0, 0, 181, 1931, 1, 0, 0, 0, 183, 1939, 1, 0, 0, 0, 185, 1950, 1, 0, 0, 0, 187, 1960, 1, 0, 0, 0, 189, 1967, 1, 0, 0, 0, 191, 1980, 1, 0, 0, 0, 193, 1985, 1, 0, 0, 0, 195, 1995, 1, 0, 0, 0, 197, 2001, 1, 0, 0, 0, 199, 2006, 1, 0, 0, 0, 201, 2009, 1, 0, 0, 0, 203, 2015, 1, 0, 0, 0, 205, 2022, 1, 0, 0, 0, 207, 2029, 1, 0, 0, 0, 209, 2035, 1, 0, 0, 0, 211, 2042, 1, 0, 0, 0, 213, 2051, 1, 0, 0, 0, 215, 2056, 1, 0, 0, 0, 217, 2062, 1, 0, 0, 0, 219, 2069, 1, 0, 0, 0, 221, 2074, 1, 0, 0, 0, 223, 2080, 1, 0, 0, 0, 225, 2089, 1, 0, 0, 0, 227, 2094, 1, 0, 0, 0, 229, 2100, 1, 0, 0, 0, 231, 2107, 1, 0, 0, 0, 233, 2112, 1, 0, 0, 0, 235, 2126, 1, 0, 0, 0, 237, 2133, 1, 0, 0, 0, 239, 2143, 1, 0, 0, 0, 241, 2156, 1, 0, 0, 0, 243, 2162, 1, 0, 0, 0, 245, 2177, 1, 0, 0, 0, 247, 2184, 1, 0, 0, 0, 249, 2189, 1, 0, 0, 0, 251, 2195, 1, 0, 0, 0, 253, 2201, 1, 0, 0, 0, 255, 2204, 1, 0, 0, 0, 257, 2211, 1, 0, 0, 0, 259, 2216, 1, 0, 0, 0, 261, 2221, 1, 0, 0, 0, 263, 2226, 1, 0, 0, 0, 265, 2234, 1, 0, 0, 0, 267, 2242, 1, 0, 0, 0, 269, 2248, 1, 0, 0, 0, 271, 2253, 1, 0, 0, 0, 273, 2262, 1, 0, 0, 0, 275, 2268, 1, 0, 0, 0, 277, 2276, 1, 0, 0, 0, 279, 2284, 1, 0, 0, 0, 281, 2290, 1, 0, 0, 0, 283, 2299, 1, 0, 0, 0, 285, 2306, 1, 0, 0, 0, 287, 2313, 1, 0, 0, 0, 289, 2317, 1, 0, 0, 0, 291, 2323, 1, 0, 0, 0, 293, 2329, 1, 0, 0, 0, 295, 2339, 1, 0, 0, 0, 297, 2344, 1, 0, 0, 0, 299, 2350, 1, 0, 0, 0, 301, 2357, 1, 0, 0, 0, 303, 2367, 1, 0, 0, 0, 305, 2378, 1, 0, 0, 0, 307, 2381, 1, 0, 0, 0, 309, 2391, 1, 0, 0, 0, 311, 2400, 1, 0, 0, 0, 313, 2407, 1, 0, 0, 0, 315, 2413, 1, 0, 0, 0, 317, 2416, 1, 0, 0, 0, 319, 2422, 1, 0, 0, 0, 321, 2429, 1, 0, 0, 0, 323, 2437, 1, 0, 0, 0, 325, 2446, 1, 0, 0, 0, 327, 2454, 1, 0, 0, 0, 329, 2460, 1, 0, 0, 0, 331, 2476, 1, 0, 0, 0, 333, 2487, 1, 0, 0, 0, 335, 2493, 1, 0, 0, 0, 337, 2499, 1, 0, 0, 0, 339, 2507, 1, 0, 0, 0, 341, 2515, 1, 0, 0, 0, 343, 2524, 1, 0, 0, 0, 345, 2531, 1, 0, 0, 0, 347, 2541, 1, 0, 0, 0, 349, 2555, 1, 0, 0, 0, 351, 2566, 1, 0, 0, 0, 353, 2578, 1, 0, 0, 0, 355, 2586, 1, 0, 0, 0, 357, 2595, 1, 0, 0, 0, 359, 2606, 1, 0, 0, 0, 361, 2611, 1, 0, 0, 0, 363, 2616, 1, 0, 0, 0, 365, 2620, 1, 0, 0, 0, 367, 2627, 1, 0, 0, 0, 369, 2633, 1, 0, 0, 0, 371, 2638, 1, 0, 0, 0, 373, 2647, 1, 0, 0, 0, 375, 2651, 1, 0, 0, 0, 377, 2662, 1, 0, 0, 0, 379, 2670, 1, 0, 0, 0, 381, 2679, 1, 0, 0, 0, 383, 2688, 1, 0, 0, 0, 385, 2696, 1, 0, 0, 0, 387, 2703, 1, 0, 0, 0, 389, 2713, 1, 0, 0, 0, 391, 2724, 1, 0, 0, 0, 393, 2735, 1, 0, 0, 0, 395, 2743, 1, 0, 0, 0, 397, 2751, 1, 0, 0, 0, 399, 2760, 1, 0, 0, 0, 401, 2767, 1, 0, 0, 0, 403, 2774, 1, 0, 0, 0, 405, 2779, 1, 0, 0, 0, 407, 2784, 1, 0, 0, 0, 409, 2791, 1, 0, 0, 0, 411, 2800, 1, 0, 0, 0, 413, 2810, 1, 0, 0, 0, 415, 2815, 1, 0, 0, 0, 417, 2822, 1, 0, 0, 0, 419, 2828, 1, 0, 0, 0, 421, 2836, 1, 0, 0, 0, 423, 2846, 1, 0, 0, 0, 425, 2856, 1, 0, 0, 0, 427, 2864, 1, 0, 0, 0, 429, 2872, 1, 0, 0, 0, 431, 2882, 1, 0, 0, 0, 433, 2891, 1, 0, 0, 0, 435, 2898, 1, 0, 0, 0, 437, 2904, 1, 0, 0, 0, 439, 2914, 1, 0, 0, 0, 441, 2920, 1, 0, 0, 0, 443, 2928, 1, 0, 0, 0, 445, 2937, 1, 0, 0, 0, 447, 2947, 1, 0, 0, 0, 449, 2954, 1, 0, 0, 0, 451, 2962, 1, 0, 0, 0, 453, 2970, 1, 0, 0, 0, 455, 2977, 1, 0, 0, 0, 457, 2982, 1, 0, 0, 0, 459, 2987, 1, 0, 0, 0, 461, 2996, 1, 0, 0, 0, 463, 2999, 1, 0, 0, 0, 465, 3009, 1, 0, 0, 0, 467, 3019, 1, 0, 0, 0, 469, 3028, 1, 0, 0, 0, 471, 3038, 1, 0, 0, 0, 473, 3048, 1, 0, 0, 0, 475, 3054, 1, 0, 0, 0, 477, 3062, 1, 0, 0, 0, 479, 3070, 1, 0, 0, 0, 481, 3079, 1, 0, 0, 0, 483, 3086, 1, 0, 0, 0, 485, 3098, 1, 0, 0, 0, 487, 3105, 1, 0, 0, 0, 489, 3113, 1, 0, 0, 0, 491, 3121, 1, 0, 0, 0, 493, 3131, 1, 0, 0, 0, 495, 3135, 1, 0, 0, 0, 497, 3141, 1, 0, 0, 0, 499, 3150, 1, 0, 0, 0, 501, 3156, 1, 0, 0, 0, 503, 3161, 1, 0, 0, 0, 505, 3171, 1, 0, 0, 0, 507, 3177, 1, 0, 0, 0, 509, 3184, 1, 0, 0, 0, 511, 3189, 1, 0, 0, 0, 513, 3195, 1, 0, 0, 0, 515, 3204, 1, 0, 0, 0, 517, 3209, 1, 0, 0, 0, 519, 3217, 1, 0, 0, 0, 521, 3223, 1, 0, 0, 0, 523, 3231, 1, 0, 0, 0, 525, 3244, 1, 0, 0, 0, 527, 3253, 1, 0, 0, 0, 529, 3259, 1, 0, 0, 0, 531, 3266, 1, 0, 0, 0, 533, 3275, 1, 0, 0, 0, 535, 3280, 1, 0, 0, 0, 537, 3286, 1, 0, 0, 0, 539, 3291, 1, 0, 0, 0, 541, 3296, 1, 0, 0, 0, 543, 3302, 1, 0, 0, 0, 545, 3307, 1, 0, 0, 0, 547, 3310, 1, 0, 0, 0, 549, 3318, 1, 0, 0, 0, 551, 3325, 1, 0, 0, 0, 553, 3332, 1, 0, 0, 0, 555, 3338, 1, 0, 0, 0, 557, 3345, 1, 0, 0, 0, 559, 3348, 1, 0, 0, 0, 561, 3352, 1, 0, 0, 0, 563, 3357, 1, 0, 0, 0, 565, 3366, 1, 0, 0, 0, 567, 3373, 1, 0, 0, 0, 569, 3381, 1, 0, 0, 0, 571, 3387, 1, 0, 0, 0, 573, 3393, 1, 0, 0, 0, 575, 3400, 1, 0, 0, 0, 577, 3408, 1, 0, 0, 0, 579, 3418, 1, 0, 0, 0, 581, 3426, 1, 0, 0, 0, 583, 3435, 1, 0, 0, 0, 585, 3441, 1, 0, 0, 0, 587, 3451, 1, 0, 0, 0, 589, 3459, 1, 0, 0, 0, 591, 3468, 1, 0, 0, 0, 593, 3477, 1, 0, 0, 0, 595, 3483, 1, 0, 0, 0, 597, 3494, 1, 0, 0, 0, 599, 3505, 1, 0, 0, 0, 601, 3515, 1, 0, 0, 0, 603, 3523, 1, 0, 0, 0, 605, 3529, 1, 0, 0, 0, 607, 3535, 1, 0, 0, 0, 609, 3540, 1, 0, 0, 0, 611, 3549, 1, 0, 0, 0, 613, 3557, 1, 0, 0, 0, 615, 3567, 1, 0, 0, 0, 617, 3571, 1, 0, 0, 0, 619, 3579, 1, 0, 0, 0, 621, 3587, 1, 0, 0, 0, 623, 3596, 1, 0, 0, 0, 625, 3604, 1, 0, 0, 0, 627, 3611, 1, 0, 0, 0, 629, 3622, 1, 0, 0, 0, 631, 3630, 1, 0, 0, 0, 633, 3638, 1, 0, 0, 0, 635, 3644, 1, 0, 0, 0, 637, 3652, 1, 0, 0, 0, 639, 3661, 1, 0, 0, 0, 641, 3669, 1, 0, 0, 0, 643, 3676, 1, 0, 0, 0, 645, 3681, 1, 0, 0, 0, 647, 3690, 1, 0, 0, 0, 649, 3695, 1, 0, 0, 0, 651, 3700, 1, 0, 0, 0, 653, 3710, 1, 0, 0, 0, 655, 3717, 1, 0, 0, 0, 657, 3724, 1, 0, 0, 0, 659, 3731, 1, 0, 0, 0, 661, 3738, 1, 0, 0, 0, 663, 3747, 1, 0, 0, 0, 665, 3756, 1, 0, 0, 0, 667, 3766, 1, 0, 0, 0, 669, 3779, 1, 0, 0, 0, 671, 3786, 1, 0, 0, 0, 673, 3794, 1, 0, 0, 0, 675, 3798, 1, 0, 0, 0, 677, 3804, 1, 0, 0, 0, 679, 3809, 1, 0, 0, 0, 681, 3816, 1, 0, 0, 0, 683, 3825, 1, 0, 0, 0, 685, 3832, 1, 0, 0, 0, 687, 3843, 1, 0, 0, 0, 689, 3849, 1, 0, 0, 0, 691, 3859, 1, 0, 0, 0, 693, 3870, 1, 0, 0, 0, 695, 3876, 1, 0, 0, 0, 697, 3883, 1, 0, 0, 0, 699, 3891, 1, 0, 0, 0, 701, 3898, 1, 0, 0, 0, 703, 3904, 1, 0, 0, 0, 705, 3910, 1, 0, 0, 0, 707, 3917, 1, 0, 0, 0, 709, 3924, 1, 0, 0, 0, 711, 3935, 1, 0, 0, 0, 713, 3940, 1, 0, 0, 0, 715, 3949, 1, 0, 0, 0, 717, 3959, 1, 0, 0, 0, 719, 3964, 1, 0, 0, 0, 721, 3976, 1, 0, 0, 0, 723, 3984, 1, 0, 0, 0, 725, 3993, 1, 0, 0, 0, 727, 4001, 1, 0, 0, 0, 729, 4006, 1, 0, 0, 0, 731, 4012, 1, 0, 0, 0, 733, 4022, 1, 0, 0, 0, 735, 4034, 1, 0, 0, 0, 737, 4046, 1, 0, 0, 0, 739, 4054, 1, 0, 0, 0, 741, 4063, 1, 0, 0, 0, 743, 4072, 1, 0, 0, 0, 745, 4078, 1, 0, 0, 0, 747, 4085, 1, 0, 0, 0, 749, 4092, 1, 0, 0, 0, 751, 4098, 1, 0, 0, 0, 753, 4107, 1, 0, 0, 0, 755, 4117, 1, 0, 0, 0, 757, 4125, 1, 0, 0, 0, 759, 4133, 1, 0, 0, 0, 761, 4138, 1, 0, 0, 0, 763, 4147, 1, 0, 0, 0, 765, 4158, 1, 0, 0, 0, 767, 4166, 1, 0, 0, 0, 769, 4171, 1, 0, 0, 0, 771, 4179, 1, 0, 0, 0, 773, 4185, 1, 0, 0, 0, 775, 4189, 1, 0, 0, 0, 777, 4194, 1, 0, 0, 0, 779, 4198, 1, 0, 0, 0, 781, 4203, 1, 0, 0, 0, 783, 4211, 1, 0, 0, 0, 785, 4218, 1, 0, 0, 0, 787, 4222, 1, 0, 0, 0, 789, 4230, 1, 0, 0, 0, 791, 4235, 1, 0, 0, 0, 793, 4245, 1, 0, 0, 0, 795, 4254, 1, 0, 0, 0, 797, 4258, 1, 0, 0, 0, 799, 4266, 1, 0, 0, 0, 801, 4273, 1, 0, 0, 0, 803, 4281, 1, 0, 0, 0, 805, 4287, 1, 0, 0, 0, 807, 4296, 1, 0, 0, 0, 809, 4302, 1, 0, 0, 0, 811, 4306, 1, 0, 0, 0, 813, 4314, 1, 0, 0, 0, 815, 4323, 1, 0, 0, 0, 817, 4329, 1, 0, 0, 0, 819, 4338, 1, 0, 0, 0, 821, 4344, 1, 0, 0, 0, 823, 4349, 1, 0, 0, 0, 825, 4356, 1, 0, 0, 0, 827, 4364, 1, 0, 0, 0, 829, 4372, 1, 0, 0, 0, 831, 4381, 1, 0, 0, 0, 833, 4391, 1, 0, 0, 0, 835, 4396, 1, 0, 0, 0, 837, 4400, 1, 0, 0, 0, 839, 4406, 1, 0, 0, 0, 841, 4415, 1, 0, 0, 0, 843, 4425, 1, 0, 0, 0, 845, 4430, 1, 0, 0, 0, 847, 4440, 1, 0, 0, 0, 849, 4446, 1, 0, 0, 0, 851, 4451, 1, 0, 0, 0, 853, 4458, 1, 0, 0, 0, 855, 4466, 1, 0, 0, 0, 857, 4480, 1, 0, 0, 0, 859, 4491, 1, 0, 0, 0, 861, 4498, 1, 0, 0, 0, 863, 4517, 1, 0, 0, 0, 865, 4545, 1, 0, 0, 0, 867, 4572, 1, 0, 0, 0, 869, 4578, 1, 0, 0, 0, 871, 4591, 1, 0, 0, 0, 873, 4601, 1, 0, 0, 0, 875, 4612, 1, 0, 0, 0, 877, 4622, 1, 0, 0, 0, 879, 4632, 1, 0, 0, 0, 881, 4641, 1, 0, 0, 0, 883, 4647, 1, 0, 0, 0, 885, 4655, 1, 0, 0, 0, 887, 4668, 1, 0, 0, 0, 889, 4673, 1, 0, 0, 0, 891, 4681, 1, 0, 0, 0, 893, 4688, 1, 0, 0, 0, 895, 4695, 1, 0, 0, 0, 897, 4706, 1, 0, 0, 0, 899, 4716, 1, 0, 0, 0, 901, 4723, 1, 0, 0, 0, 903, 4730, 1, 0, 0, 0, 905, 4738, 1, 0, 0, 0, 907, 4746, 1, 0, 0, 0, 909, 4756, 1, 0, 0, 0, 911, 4763, 1, 0, 0, 0, 913, 4770, 1, 0, 0, 0, 915, 4777, 1, 0, 0, 0, 917, 4789, 1, 0, 0, 0, 919, 4793, 1, 0, 0, 0, 921, 4797, 1, 0, 0, 0, 923, 4803, 1, 0, 0, 0, 925, 4816, 1, 0, 0, 0, 927, 4828, 1, 0, 0, 0, 929, 4832, 1, 0, 0, 0, 931, 4836, 1, 0, 0, 0, 933, 4845, 1, 0, 0, 0, 935, 4853, 1, 0, 0, 0, 937, 4864, 1, 0, 0, 0, 939, 4870, 1, 0, 0, 0, 941, 4878, 1, 0, 0, 0, 943, 4887, 1, 0, 0, 0, 945, 4891, 1, 0, 0, 0, 947, 4899, 1, 0, 0, 0, 949, 4910, 1, 0, 0, 0, 951, 4919, 1, 0, 0, 0, 953, 4924, 1, 0, 0, 0, 955, 4931, 1, 0, 0, 0, 957, 4936, 1, 0, 0, 0, 959, 4943, 1, 0, 0, 0, 961, 4948, 1, 0, 0, 0, 963, 4957, 1, 0, 0, 0, 965, 4962, 1, 0, 0, 0, 967, 4974, 1, 0, 0, 0, 969, 4985, 1, 0, 0, 0, 971, 4994, 1, 0, 0, 0, 973, 5002, 1, 0, 0, 0, 975, 5016, 1, 0, 0, 0, 977, 5024, 1, 0, 0, 0, 979, 5035, 1, 0, 0, 0, 981, 5042, 1, 0, 0, 0, 983, 5049, 1, 0, 0, 0, 985, 5056, 1, 0, 0, 0, 987, 5063, 1, 0, 0, 0, 989, 5067, 1, 0, 0, 0, 991, 5071, 1, 0, 0, 0, 993, 5076, 1, 0, 0, 0, 995, 5081, 1, 0, 0, 0, 997, 5089, 1, 0, 0, 0, 999, 5095, 1, 0, 0, 0, 1001, 5105, 1, 0, 0, 0, 1003, 5110, 1, 0, 0, 0, 1005, 5130, 1, 0, 0, 0, 1007, 5148, 1, 0, 0, 0, 1009, 5154, 1, 0, 0, 0, 1011, 5167, 1, 0, 0, 0, 1013, 5178, 1, 0, 0, 0, 1015, 5184, 1, 0, 0, 0, 1017, 5193, 1, 0, 0, 0, 1019, 5201, 1, 0, 0, 0, 1021, 5205, 1, 0, 0, 0, 1023, 5217, 1, 0, 0, 0, 1025, 5225, 1, 0, 0, 0, 1027, 5231, 1, 0, 0, 0, 1029, 5237, 1, 0, 0, 0, 1031, 5245, 1, 0, 0, 0, 1033, 5253, 1, 0, 0, 0, 1035, 5259, 1, 0, 0, 0, 1037, 5264, 1, 0, 0, 0, 1039, 5271, 1, 0, 0, 0, 1041, 5277, 1, 0, 0, 0, 1043, 5283, 1, 0, 0, 0, 1045, 5292, 1, 0, 0, 0, 1047, 5298, 1, 0, 0, 0, 1049, 5302, 1, 0, 0, 0, 1051, 5307, 1, 0, 0, 0, 1053, 5314, 1, 0, 0, 0, 1055, 5322, 1, 0, 0, 0, 1057, 5332, 1, 0, 0, 0, 1059, 5339, 1, 0, 0, 0, 1061, 5344, 1, 0, 0, 0, 1063, 5349, 1, 0, 0, 0, 1065, 5353, 1, 0, 0, 0, 1067, 5358, 1, 0, 0, 0, 1069, 5363, 1, 0, 0, 0, 1071, 5371, 1, 0, 0, 0, 1073, 5379, 1, 0, 0, 0, 1075, 5383, 1, 0, 0, 0, 1077, 5387, 1, 0, 0, 0, 1079, 5397, 1, 0, 0, 0, 1081, 5403, 1, 0, 0, 0, 1083, 5407, 1, 0, 0, 0, 1085, 5411, 1, 0, 0, 0, 1087, 5414, 1, 0, 0, 0, 1089, 5420, 1, 0, 0, 0, 1091, 5430, 1, 0, 0, 0, 1093, 5434, 1, 0, 0, 0, 1095, 5437, 1, 0, 0, 0, 1097, 5443, 1, 0, 0, 0, 1099, 5451, 1, 0, 0, 0, 1101, 5457, 1, 0, 0, 0, 1103, 5463, 1, 0, 0, 0, 1105, 5468, 1, 0, 0, 0, 1107, 5473, 1, 0, 0, 0, 1109, 5484, 1, 0, 0, 0, 1111, 5490, 1, 0, 0, 0, 1113, 5503, 1, 0, 0, 0, 1115, 5510, 1, 0, 0, 0, 1117, 5518, 1, 0, 0, 0, 1119, 5523, 1, 0, 0, 0, 1121, 5529, 1, 0, 0, 0, 1123, 5534, 1, 0, 0, 0, 1125, 5540, 1, 0, 0, 0, 1127, 5545, 1, 0, 0, 0, 1129, 5551, 1, 0, 0, 0, 1131, 5557, 1, 0, 0, 0, 1133, 5564, 1, 0, 0, 0, 1135, 5568, 1, 0, 0, 0, 1137, 5573, 1, 0, 0, 0, 1139, 5577, 1, 0, 0, 0, 1141, 5582, 1, 0, 0, 0, 1143, 5586, 1, 0, 0, 0, 1145, 5591, 1, 0, 0, 0, 1147, 5595, 1, 0, 0, 0, 1149, 5600, 1, 0, 0, 0, 1151, 5605, 1, 0, 0, 0, 1153, 5610, 1, 0, 0, 0, 1155, 5615, 1, 0, 0, 0, 1157, 5621, 1, 0, 0, 0, 1159, 5627, 1, 0, 0, 0, 1161, 5633, 1, 0, 0, 0, 1163, 5644, 1, 0, 0, 0, 1165, 5656, 1, 0, 0, 0, 1167, 5673, 1, 0, 0, 0, 1169, 5679, 1, 0, 0, 0, 1171, 5692, 1, 0, 0, 0, 1173, 5698, 1, 0, 0, 0, 1175, 5704, 1, 0, 0, 0, 1177, 5710, 1, 0, 0, 0, 1179, 5714, 1, 0, 0, 0, 1181, 5721, 1, 0, 0, 0, 1183, 5731, 1, 0, 0, 0, 1185, 5738, 1, 0, 0, 0, 1187, 5746, 1, 0, 0, 0, 1189, 5753, 1, 0, 0, 0, 1191, 5758, 1, 0, 0, 0, 1193, 5764, 1, 0, 0, 0, 1195, 5768, 1, 0, 0, 0, 1197, 5780, 1, 0, 0, 0, 1199, 5799, 1, 0, 0, 0, 1201, 5811, 1, 0, 0, 0, 1203, 5825, 1, 0, 0, 0, 1205, 5840, 1, 0, 0, 0, 1207, 5853, 1, 0, 0, 0, 1209, 5866, 1, 0, 0, 0, 1211, 5878, 1, 0, 0, 0, 1213, 5891, 1, 0, 0, 0, 1215, 5906, 1, 0, 0, 0, 1217, 5921, 1, 0, 0, 0, 1219, 5943, 1, 0, 0, 0, 1221, 5965, 1, 0, 0, 0, 1223, 5979, 1, 0, 0, 0, 1225, 5986, 1, 0, 0, 0, 1227, 5991, 1, 0, 0, 0, 1229, 5997, 1, 0, 0, 0, 1231, 6008, 1, 0, 0, 0, 1233, 6020, 1, 0, 0, 0, 1235, 6036, 1, 0, 0, 0, 1237, 6052, 1, 0, 0, 0, 1239, 6059, 1, 0, 0, 0, 1241, 6066, 1, 0, 0, 0, 1243, 6075, 1, 0, 0, 0, 1245, 6082, 1, 0, 0, 0, 1247, 6092, 1, 0, 0, 0, 1249, 6099, 1, 0, 0, 0, 1251, 6103, 1, 0, 0, 0, 1253, 6119, 1, 0, 0, 0, 1255, 6128, 1, 0, 0, 0, 1257, 6138, 1, 0, 0, 0, 1259, 6149, 1, 0, 0, 0, 1261, 6158, 1, 0, 0, 0, 1263, 6171, 1, 0, 0, 0, 1265, 6185, 1, 0, 0, 0, 1267, 6202, 1, 0, 0, 0, 1269, 6212, 1, 0, 0, 0, 1271, 6226, 1, 0, 0, 0, 1273, 6236, 1, 0, 0, 0, 1275, 6251, 1, 0, 0, 0, 1277, 6268, 1, 0, 0, 0, 1279, 6272, 1, 0, 0, 0, 1281, 6292, 1, 0, 0, 0, 1283, 6302, 1, 0, 0, 0, 1285, 6324, 1, 0, 0, 0, 1287, 6337, 1, 0, 0, 0, 1289, 6345, 1, 0, 0, 0, 1291, 6353, 1, 0, 0, 0, 1293, 6363, 1, 0, 0, 0, 1295, 6376, 1, 0, 0, 0, 1297, 6380, 1, 0, 0, 0, 1299, 6384, 1, 0, 0, 0, 1301, 6386, 1, 0, 0, 0, 1303, 6389, 1, 0, 0, 0, 1305, 6398, 1, 0, 0, 0, 1307, 6401, 1, 0, 0, 0, 1309, 6410, 1, 0, 0, 0, 1311, 6414, 1, 0, 0, 0, 1313, 6418, 1, 0, 0, 0, 1315, 6422, 1, 0, 0, 0, 1317, 6426, 1, 0, 0, 0, 1319, 6429, 1, 0, 0, 0, 1321, 6438, 1, 0, 0, 0, 1323, 6444, 1, 0, 0, 0, 1325, 6447, 1, 0, 0, 0, 1327, 6451, 1, 0, 0, 0, 1329, 6460, 1, 0, 0, 0, 1331, 6467, 1, 0, 0, 0, 1333, 6470, 1, 0, 0, 0, 1335, 6478, 1, 0, 0, 0, 1337, 6481, 1, 0, 0, 0, 1339, 6484, 1, 0, 0, 0, 1341, 6487, 1, 0, 0, 0, 1343, 6495, 1, 0, 0, 0, 1345, 6498, 1, 0, 0, 0, 1347, 6501, 1, 0, 0, 0, 1349, 6503, 1, 0, 0, 0, 1351, 6537, 1, 0, 0, 0, 1353, 6540, 1, 0, 0, 0, 1355, 6544, 1, 0, 0, 0, 1357, 6552, 1, 0, 0, 0, 1359, 6568, 1, 0, 0, 0, 1361, 6579, 1, 0, 0, 0, 1363, 6583, 1, 0, 0, 0, 1365, 6594, 1, 0, 0, 0, 1367, 6633, 1, 0, 0, 0, 1369, 6684, 1, 0, 0, 0, 1371, 6708, 1, 0, 0, 0, 1373, 6711, 1, 0, 0, 0, 1375, 6713, 1, 0, 0, 0, 1377, 6718, 1, 0, 0, 0, 1379, 6749, 1, 0, 0, 0, 1381, 6752, 1, 0, 0, 0, 1383, 6757, 1, 0, 0, 0, 1385, 6770, 1, 0, 0, 0, 1387, 6773, 1, 0, 0, 0, 1389, 6778, 1, 0, 0, 0, 1391, 6784, 1, 0, 0, 0, 1393, 6789, 1, 0, 0, 0, 1395, 6794, 1, 0, 0, 0, 1397, 6799, 1, 0, 0, 0, 1399, 6804, 1, 0, 0, 0, 1401, 6821, 1, 0, 0, 0, 1403, 6823, 1, 0, 0, 0, 1405, 1406, 5, 36, 0, 0, 1406, 6, 1, 0, 0, 0, 1407, 1408, 5, 40, 0, 0, 1408, 8, 1, 0, 0, 0, 1409, 1410, 5, 41, 0, 0, 1410, 10, 1, 0, 0, 0, 1411, 1412, 5, 91, 0, 0, 1412, 12, 1, 0, 0, 0, 1413, 1414, 5, 93, 0, 0, 1414, 14, 1, 0, 0, 0, 1415, 1416, 5, 44, 0, 0, 1416, 16, 1, 0, 0, 0, 1417, 1418, 5, 59, 0, 0, 1418, 18, 1, 0, 0, 0, 1419, 1420, 5, 58, 0, 0, 1420, 20, 1, 0, 0, 0, 1421, 1422, 5, 42, 0, 0, 1422, 22, 1, 0, 0, 0, 1423, 1424, 5, 61, 0, 0, 1424, 24, 1, 0, 0, 0, 1425, 1426, 5, 46, 0, 0, 1426, 26, 1, 0, 0, 0, 1427, 1428, 5, 43, 0, 0, 1428, 28, 1, 0, 0, 0, 1429, 1430, 5, 45, 0, 0, 1430, 30, 1, 0, 0, 0, 1431, 1432, 5, 47, 0, 0, 1432, 32, 1, 0, 0, 0, 1433, 1434, 5, 94, 0, 0, 1434, 34, 1, 0, 0, 0, 1435, 1436, 5, 60, 0, 0, 1436, 36, 1, 0, 0, 0, 1437, 1438, 5, 62, 0, 0, 1438, 38, 1, 0, 0, 0, 1439, 1440, 5, 60, 0, 0, 1440, 1441, 5, 60, 0, 0, 1441, 40, 1, 0, 0, 0, 1442, 1443, 5, 62, 0, 0, 1443, 1444, 5, 62, 0, 0, 1444, 42, 1, 0, 0, 0, 1445, 1446, 5, 58, 0, 0, 1446, 1447, 5, 61, 0, 0, 1447, 44, 1, 0, 0, 0, 1448, 1449, 5, 60, 0, 0, 1449, 1450, 5, 61, 0, 0, 1450, 46, 1, 0, 0, 0, 1451, 1452, 5, 61, 0, 0, 1452, 1453, 5, 62, 0, 0, 1453, 48, 1, 0, 0, 0, 1454, 1455, 5, 62, 0, 0, 1455, 1456, 5, 61, 0, 0, 1456, 50, 1, 0, 0, 0, 1457, 1458, 5, 46, 0, 0, 1458, 1459, 5, 46, 0, 0, 1459, 52, 1, 0, 0, 0, 1460, 1461, 5, 60, 0, 0, 1461, 1462, 5, 62, 0, 0, 1462, 54, 1, 0, 0, 0, 1463, 1464, 5, 58, 0, 0, 1464, 1465, 5, 58, 0, 0, 1465, 56, 1, 0, 0, 0, 1466, 1467, 5, 37, 0, 0, 1467, 58, 1, 0, 0, 0, 1468, 1470, 5, 36, 0, 0, 1469, 1471, 7, 0, 0, 0, 1470, 1469, 1, 0, 0, 0, 1471, 1472, 1, 0, 0, 0, 1472, 1470, 1, 0, 0, 0, 1472, 1473, 1, 0, 0, 0, 1473, 60, 1, 0, 0, 0, 1474, 1490, 3, 65, 30, 0, 1475, 1479, 5, 43, 0, 0, 1476, 1477, 5, 45, 0, 0, 1477, 1479, 4, 28, 0, 0, 1478, 1475, 1, 0, 0, 0, 1478, 1476, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1478, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1485, 1, 0, 0, 0, 1482, 1486, 3, 65, 30, 0, 1483, 1484, 5, 47, 0, 0, 1484, 1486, 4, 28, 1, 0, 1485, 1482, 1, 0, 0, 0, 1485, 1483, 1, 0, 0, 0, 1486, 1490, 1, 0, 0, 0, 1487, 1488, 5, 47, 0, 0, 1488, 1490, 4, 28, 2, 0, 1489, 1474, 1, 0, 0, 0, 1489, 1478, 1, 0, 0, 0, 1489, 1487, 1, 0, 0, 0, 1490, 1491, 1, 0, 0, 0, 1491, 1489, 1, 0, 0, 0, 1491, 1492, 1, 0, 0, 0, 1492, 1495, 1, 0, 0, 0, 1493, 1495, 7, 1, 0, 0, 1494, 1489, 1, 0, 0, 0, 1494, 1493, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1497, 6, 28, 0, 0, 1497, 62, 1, 0, 0, 0, 1498, 1504, 3, 67, 31, 0, 1499, 1500, 5, 45, 0, 0, 1500, 1504, 4, 29, 3, 0, 1501, 1502, 5, 47, 0, 0, 1502, 1504, 4, 29, 4, 0, 1503, 1498, 1, 0, 0, 0, 1503, 1499, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1504, 1507, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1505, 1506, 1, 0, 0, 0, 1506, 1508, 1, 0, 0, 0, 1507, 1505, 1, 0, 0, 0, 1508, 1510, 3, 69, 32, 0, 1509, 1511, 3, 61, 28, 0, 1510, 1509, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1515, 1, 0, 0, 0, 1512, 1516, 5, 43, 0, 0, 1513, 1514, 5, 45, 0, 0, 1514, 1516, 4, 29, 5, 0, 1515, 1512, 1, 0, 0, 0, 1515, 1513, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1515, 1, 0, 0, 0, 1517, 1518, 1, 0, 0, 0, 1518, 1519, 1, 0, 0, 0, 1519, 1520, 6, 29, 1, 0, 1520, 64, 1, 0, 0, 0, 1521, 1522, 7, 2, 0, 0, 1522, 66, 1, 0, 0, 0, 1523, 1524, 7, 3, 0, 0, 1524, 68, 1, 0, 0, 0, 1525, 1526, 7, 4, 0, 0, 1526, 70, 1, 0, 0, 0, 1527, 1528, 7, 5, 0, 0, 1528, 1529, 7, 6, 0, 0, 1529, 1530, 7, 6, 0, 0, 1530, 72, 1, 0, 0, 0, 1531, 1532, 7, 5, 0, 0, 1532, 1533, 7, 7, 0, 0, 1533, 1534, 7, 5, 0, 0, 1534, 1535, 7, 6, 0, 0, 1535, 1536, 7, 8, 0, 0, 1536, 1537, 7, 9, 0, 0, 1537, 1538, 7, 10, 0, 0, 1538, 74, 1, 0, 0, 0, 1539, 1540, 7, 5, 0, 0, 1540, 1541, 7, 7, 0, 0, 1541, 1542, 7, 5, 0, 0, 1542, 1543, 7, 6, 0, 0, 1543, 1544, 7, 8, 0, 0, 1544, 1545, 7, 11, 0, 0, 1545, 1546, 7, 10, 0, 0, 1546, 76, 1, 0, 0, 0, 1547, 1548, 7, 5, 0, 0, 1548, 1549, 7, 7, 0, 0, 1549, 1550, 7, 12, 0, 0, 1550, 78, 1, 0, 0, 0, 1551, 1552, 7, 5, 0, 0, 1552, 1553, 7, 7, 0, 0, 1553, 1554, 7, 8, 0, 0, 1554, 80, 1, 0, 0, 0, 1555, 1556, 7, 5, 0, 0, 1556, 1557, 7, 13, 0, 0, 1557, 1558, 7, 13, 0, 0, 1558, 1559, 7, 5, 0, 0, 1559, 1560, 7, 8, 0, 0, 1560, 82, 1, 0, 0, 0, 1561, 1562, 7, 5, 0, 0, 1562, 1563, 7, 9, 0, 0, 1563, 84, 1, 0, 0, 0, 1564, 1565, 7, 5, 0, 0, 1565, 1566, 7, 9, 0, 0, 1566, 1567, 7, 14, 0, 0, 1567, 86, 1, 0, 0, 0, 1568, 1569, 7, 5, 0, 0, 1569, 1570, 7, 9, 0, 0, 1570, 1571, 7, 8, 0, 0, 1571, 1572, 7, 15, 0, 0, 1572, 1573, 7, 15, 0, 0, 1573, 1574, 7, 10, 0, 0, 1574, 1575, 7, 16, 0, 0, 1575, 1576, 7, 13, 0, 0, 1576, 1577, 7, 17, 0, 0, 1577, 1578, 7, 14, 0, 0, 1578, 88, 1, 0, 0, 0, 1579, 1580, 7, 18, 0, 0, 1580, 1581, 7, 19, 0, 0, 1581, 1582, 7, 16, 0, 0, 1582, 1583, 7, 20, 0, 0, 1583, 90, 1, 0, 0, 0, 1584, 1585, 7, 14, 0, 0, 1585, 1586, 7, 5, 0, 0, 1586, 1587, 7, 9, 0, 0, 1587, 1588, 7, 10, 0, 0, 1588, 92, 1, 0, 0, 0, 1589, 1590, 7, 14, 0, 0, 1590, 1591, 7, 5, 0, 0, 1591, 1592, 7, 9, 0, 0, 1592, 1593, 7, 16, 0, 0, 1593, 94, 1, 0, 0, 0, 1594, 1595, 7, 14, 0, 0, 1595, 1596, 7, 20, 0, 0, 1596, 1597, 7, 10, 0, 0, 1597, 1598, 7, 14, 0, 0, 1598, 1599, 7, 21, 0, 0, 1599, 96, 1, 0, 0, 0, 1600, 1601, 7, 14, 0, 0, 1601, 1602, 7, 19, 0, 0, 1602, 1603, 7, 6, 0, 0, 1603, 1604, 7, 6, 0, 0, 1604, 1605, 7, 5, 0, 0, 1605, 1606, 7, 16, 0, 0, 1606, 1607, 7, 10, 0, 0, 1607, 98, 1, 0, 0, 0, 1608, 1609, 7, 14, 0, 0, 1609, 1610, 7, 19, 0, 0, 1610, 1611, 7, 6, 0, 0, 1611, 1612, 7, 22, 0, 0, 1612, 1613, 7, 15, 0, 0, 1613, 1614, 7, 7, 0, 0, 1614, 100, 1, 0, 0, 0, 1615, 1616, 7, 14, 0, 0, 1616, 1617, 7, 19, 0, 0, 1617, 1618, 7, 7, 0, 0, 1618, 1619, 7, 9, 0, 0, 1619, 1620, 7, 16, 0, 0, 1620, 1621, 7, 13, 0, 0, 1621, 1622, 7, 5, 0, 0, 1622, 1623, 7, 17, 0, 0, 1623, 1624, 7, 7, 0, 0, 1624, 1625, 7, 16, 0, 0, 1625, 102, 1, 0, 0, 0, 1626, 1627, 7, 14, 0, 0, 1627, 1628, 7, 13, 0, 0, 1628, 1629, 7, 10, 0, 0, 1629, 1630, 7, 5, 0, 0, 1630, 1631, 7, 16, 0, 0, 1631, 1632, 7, 10, 0, 0, 1632, 104, 1, 0, 0, 0, 1633, 1634, 7, 14, 0, 0, 1634, 1635, 7, 22, 0, 0, 1635, 1636, 7, 13, 0, 0, 1636, 1637, 7, 13, 0, 0, 1637, 1638, 7, 10, 0, 0, 1638, 1639, 7, 7, 0, 0, 1639, 1640, 7, 16, 0, 0, 1640, 1641, 5, 95, 0, 0, 1641, 1642, 7, 14, 0, 0, 1642, 1643, 7, 5, 0, 0, 1643, 1644, 7, 16, 0, 0, 1644, 1645, 7, 5, 0, 0, 1645, 1646, 7, 6, 0, 0, 1646, 1647, 7, 19, 0, 0, 1647, 1648, 7, 23, 0, 0, 1648, 106, 1, 0, 0, 0, 1649, 1650, 7, 14, 0, 0, 1650, 1651, 7, 22, 0, 0, 1651, 1652, 7, 13, 0, 0, 1652, 1653, 7, 13, 0, 0, 1653, 1654, 7, 10, 0, 0, 1654, 1655, 7, 7, 0, 0, 1655, 1656, 7, 16, 0, 0, 1656, 1657, 5, 95, 0, 0, 1657, 1658, 7, 12, 0, 0, 1658, 1659, 7, 5, 0, 0, 1659, 1660, 7, 16, 0, 0, 1660, 1661, 7, 10, 0, 0, 1661, 108, 1, 0, 0, 0, 1662, 1663, 7, 14, 0, 0, 1663, 1664, 7, 22, 0, 0, 1664, 1665, 7, 13, 0, 0, 1665, 1666, 7, 13, 0, 0, 1666, 1667, 7, 10, 0, 0, 1667, 1668, 7, 7, 0, 0, 1668, 1669, 7, 16, 0, 0, 1669, 1670, 5, 95, 0, 0, 1670, 1671, 7, 13, 0, 0, 1671, 1672, 7, 19, 0, 0, 1672, 1673, 7, 6, 0, 0, 1673, 1674, 7, 10, 0, 0, 1674, 110, 1, 0, 0, 0, 1675, 1676, 7, 14, 0, 0, 1676, 1677, 7, 22, 0, 0, 1677, 1678, 7, 13, 0, 0, 1678, 1679, 7, 13, 0, 0, 1679, 1680, 7, 10, 0, 0, 1680, 1681, 7, 7, 0, 0, 1681, 1682, 7, 16, 0, 0, 1682, 1683, 5, 95, 0, 0, 1683, 1684, 7, 16, 0, 0, 1684, 1685, 7, 17, 0, 0, 1685, 1686, 7, 15, 0, 0, 1686, 1687, 7, 10, 0, 0, 1687, 112, 1, 0, 0, 0, 1688, 1689, 7, 14, 0, 0, 1689, 1690, 7, 22, 0, 0, 1690, 1691, 7, 13, 0, 0, 1691, 1692, 7, 13, 0, 0, 1692, 1693, 7, 10, 0, 0, 1693, 1694, 7, 7, 0, 0, 1694, 1695, 7, 16, 0, 0, 1695, 1696, 5, 95, 0, 0, 1696, 1697, 7, 16, 0, 0, 1697, 1698, 7, 17, 0, 0, 1698, 1699, 7, 15, 0, 0, 1699, 1700, 7, 10, 0, 0, 1700, 1701, 7, 9, 0, 0, 1701, 1702, 7, 16, 0, 0, 1702, 1703, 7, 5, 0, 0, 1703, 1704, 7, 15, 0, 0, 1704, 1705, 7, 24, 0, 0, 1705, 114, 1, 0, 0, 0, 1706, 1707, 7, 14, 0, 0, 1707, 1708, 7, 22, 0, 0, 1708, 1709, 7, 13, 0, 0, 1709, 1710, 7, 13, 0, 0, 1710, 1711, 7, 10, 0, 0, 1711, 1712, 7, 7, 0, 0, 1712, 1713, 7, 16, 0, 0, 1713, 1714, 5, 95, 0, 0, 1714, 1715, 7, 22, 0, 0, 1715, 1716, 7, 9, 0, 0, 1716, 1717, 7, 10, 0, 0, 1717, 1718, 7, 13, 0, 0, 1718, 116, 1, 0, 0, 0, 1719, 1720, 7, 12, 0, 0, 1720, 1721, 7, 10, 0, 0, 1721, 1722, 7, 25, 0, 0, 1722, 1723, 7, 5, 0, 0, 1723, 1724, 7, 22, 0, 0, 1724, 1725, 7, 6, 0, 0, 1725, 1726, 7, 16, 0, 0, 1726, 118, 1, 0, 0, 0, 1727, 1728, 7, 12, 0, 0, 1728, 1729, 7, 10, 0, 0, 1729, 1730, 7, 25, 0, 0, 1730, 1731, 7, 10, 0, 0, 1731, 1732, 7, 13, 0, 0, 1732, 1733, 7, 13, 0, 0, 1733, 1734, 7, 5, 0, 0, 1734, 1735, 7, 18, 0, 0, 1735, 1736, 7, 6, 0, 0, 1736, 1737, 7, 10, 0, 0, 1737, 120, 1, 0, 0, 0, 1738, 1739, 7, 12, 0, 0, 1739, 1740, 7, 10, 0, 0, 1740, 1741, 7, 9, 0, 0, 1741, 1742, 7, 14, 0, 0, 1742, 122, 1, 0, 0, 0, 1743, 1744, 7, 12, 0, 0, 1744, 1745, 7, 17, 0, 0, 1745, 1746, 7, 9, 0, 0, 1746, 1747, 7, 16, 0, 0, 1747, 1748, 7, 17, 0, 0, 1748, 1749, 7, 7, 0, 0, 1749, 1750, 7, 14, 0, 0, 1750, 1751, 7, 16, 0, 0, 1751, 124, 1, 0, 0, 0, 1752, 1753, 7, 12, 0, 0, 1753, 1754, 7, 19, 0, 0, 1754, 126, 1, 0, 0, 0, 1755, 1756, 7, 10, 0, 0, 1756, 1757, 7, 6, 0, 0, 1757, 1758, 7, 9, 0, 0, 1758, 1759, 7, 10, 0, 0, 1759, 128, 1, 0, 0, 0, 1760, 1761, 7, 10, 0, 0, 1761, 1762, 7, 26, 0, 0, 1762, 1763, 7, 14, 0, 0, 1763, 1764, 7, 10, 0, 0, 1764, 1765, 7, 24, 0, 0, 1765, 1766, 7, 16, 0, 0, 1766, 130, 1, 0, 0, 0, 1767, 1768, 7, 25, 0, 0, 1768, 1769, 7, 5, 0, 0, 1769, 1770, 7, 6, 0, 0, 1770, 1771, 7, 9, 0, 0, 1771, 1772, 7, 10, 0, 0, 1772, 132, 1, 0, 0, 0, 1773, 1774, 7, 25, 0, 0, 1774, 1775, 7, 10, 0, 0, 1775, 1776, 7, 16, 0, 0, 1776, 1777, 7, 14, 0, 0, 1777, 1778, 7, 20, 0, 0, 1778, 134, 1, 0, 0, 0, 1779, 1780, 7, 25, 0, 0, 1780, 1781, 7, 19, 0, 0, 1781, 1782, 7, 13, 0, 0, 1782, 136, 1, 0, 0, 0, 1783, 1784, 7, 25, 0, 0, 1784, 1785, 7, 19, 0, 0, 1785, 1786, 7, 13, 0, 0, 1786, 1787, 7, 10, 0, 0, 1787, 1788, 7, 17, 0, 0, 1788, 1789, 7, 23, 0, 0, 1789, 1790, 7, 7, 0, 0, 1790, 138, 1, 0, 0, 0, 1791, 1792, 7, 25, 0, 0, 1792, 1793, 7, 13, 0, 0, 1793, 1794, 7, 19, 0, 0, 1794, 1795, 7, 15, 0, 0, 1795, 140, 1, 0, 0, 0, 1796, 1797, 7, 23, 0, 0, 1797, 1798, 7, 13, 0, 0, 1798, 1799, 7, 5, 0, 0, 1799, 1800, 7, 7, 0, 0, 1800, 1801, 7, 16, 0, 0, 1801, 142, 1, 0, 0, 0, 1802, 1803, 7, 23, 0, 0, 1803, 1804, 7, 13, 0, 0, 1804, 1805, 7, 19, 0, 0, 1805, 1806, 7, 22, 0, 0, 1806, 1807, 7, 24, 0, 0, 1807, 144, 1, 0, 0, 0, 1808, 1809, 7, 20, 0, 0, 1809, 1810, 7, 5, 0, 0, 1810, 1811, 7, 27, 0, 0, 1811, 1812, 7, 17, 0, 0, 1812, 1813, 7, 7, 0, 0, 1813, 1814, 7, 23, 0, 0, 1814, 146, 1, 0, 0, 0, 1815, 1816, 7, 17, 0, 0, 1816, 1817, 7, 7, 0, 0, 1817, 148, 1, 0, 0, 0, 1818, 1819, 7, 17, 0, 0, 1819, 1820, 7, 7, 0, 0, 1820, 1821, 7, 17, 0, 0, 1821, 1822, 7, 16, 0, 0, 1822, 1823, 7, 17, 0, 0, 1823, 1824, 7, 5, 0, 0, 1824, 1825, 7, 6, 0, 0, 1825, 1826, 7, 6, 0, 0, 1826, 1827, 7, 8, 0, 0, 1827, 150, 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, 10, 0, 0, 1832, 1833, 7, 13, 0, 0, 1833, 1834, 7, 9, 0, 0, 1834, 1835, 7, 10, 0, 0, 1835, 1836, 7, 14, 0, 0, 1836, 1837, 7, 16, 0, 0, 1837, 152, 1, 0, 0, 0, 1838, 1839, 7, 17, 0, 0, 1839, 1840, 7, 7, 0, 0, 1840, 1841, 7, 16, 0, 0, 1841, 1842, 7, 19, 0, 0, 1842, 154, 1, 0, 0, 0, 1843, 1844, 7, 6, 0, 0, 1844, 1845, 7, 5, 0, 0, 1845, 1846, 7, 16, 0, 0, 1846, 1847, 7, 10, 0, 0, 1847, 1848, 7, 13, 0, 0, 1848, 1849, 7, 5, 0, 0, 1849, 1850, 7, 6, 0, 0, 1850, 156, 1, 0, 0, 0, 1851, 1852, 7, 6, 0, 0, 1852, 1853, 7, 10, 0, 0, 1853, 1854, 7, 5, 0, 0, 1854, 1855, 7, 12, 0, 0, 1855, 1856, 7, 17, 0, 0, 1856, 1857, 7, 7, 0, 0, 1857, 1858, 7, 23, 0, 0, 1858, 158, 1, 0, 0, 0, 1859, 1860, 7, 6, 0, 0, 1860, 1861, 7, 17, 0, 0, 1861, 1862, 7, 15, 0, 0, 1862, 1863, 7, 17, 0, 0, 1863, 1864, 7, 16, 0, 0, 1864, 160, 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, 162, 1, 0, 0, 0, 1875, 1876, 7, 6, 0, 0, 1876, 1877, 7, 19, 0, 0, 1877, 1878, 7, 14, 0, 0, 1878, 1879, 7, 5, 0, 0, 1879, 1880, 7, 6, 0, 0, 1880, 1881, 7, 16, 0, 0, 1881, 1882, 7, 17, 0, 0, 1882, 1883, 7, 15, 0, 0, 1883, 1884, 7, 10, 0, 0, 1884, 1885, 7, 9, 0, 0, 1885, 1886, 7, 16, 0, 0, 1886, 1887, 7, 5, 0, 0, 1887, 1888, 7, 15, 0, 0, 1888, 1889, 7, 24, 0, 0, 1889, 164, 1, 0, 0, 0, 1890, 1891, 7, 7, 0, 0, 1891, 1892, 7, 19, 0, 0, 1892, 1893, 7, 16, 0, 0, 1893, 166, 1, 0, 0, 0, 1894, 1895, 7, 7, 0, 0, 1895, 1896, 7, 22, 0, 0, 1896, 1897, 7, 6, 0, 0, 1897, 1898, 7, 6, 0, 0, 1898, 168, 1, 0, 0, 0, 1899, 1900, 7, 19, 0, 0, 1900, 1901, 7, 25, 0, 0, 1901, 1902, 7, 25, 0, 0, 1902, 1903, 7, 9, 0, 0, 1903, 1904, 7, 10, 0, 0, 1904, 1905, 7, 16, 0, 0, 1905, 170, 1, 0, 0, 0, 1906, 1907, 7, 19, 0, 0, 1907, 1908, 7, 7, 0, 0, 1908, 172, 1, 0, 0, 0, 1909, 1910, 7, 19, 0, 0, 1910, 1911, 7, 7, 0, 0, 1911, 1912, 7, 6, 0, 0, 1912, 1913, 7, 8, 0, 0, 1913, 174, 1, 0, 0, 0, 1914, 1915, 7, 19, 0, 0, 1915, 1916, 7, 13, 0, 0, 1916, 176, 1, 0, 0, 0, 1917, 1918, 7, 19, 0, 0, 1918, 1919, 7, 13, 0, 0, 1919, 1920, 7, 12, 0, 0, 1920, 1921, 7, 10, 0, 0, 1921, 1922, 7, 13, 0, 0, 1922, 178, 1, 0, 0, 0, 1923, 1924, 7, 24, 0, 0, 1924, 1925, 7, 6, 0, 0, 1925, 1926, 7, 5, 0, 0, 1926, 1927, 7, 14, 0, 0, 1927, 1928, 7, 17, 0, 0, 1928, 1929, 7, 7, 0, 0, 1929, 1930, 7, 23, 0, 0, 1930, 180, 1, 0, 0, 0, 1931, 1932, 7, 24, 0, 0, 1932, 1933, 7, 13, 0, 0, 1933, 1934, 7, 17, 0, 0, 1934, 1935, 7, 15, 0, 0, 1935, 1936, 7, 5, 0, 0, 1936, 1937, 7, 13, 0, 0, 1937, 1938, 7, 8, 0, 0, 1938, 182, 1, 0, 0, 0, 1939, 1940, 7, 13, 0, 0, 1940, 1941, 7, 10, 0, 0, 1941, 1942, 7, 25, 0, 0, 1942, 1943, 7, 10, 0, 0, 1943, 1944, 7, 13, 0, 0, 1944, 1945, 7, 10, 0, 0, 1945, 1946, 7, 7, 0, 0, 1946, 1947, 7, 14, 0, 0, 1947, 1948, 7, 10, 0, 0, 1948, 1949, 7, 9, 0, 0, 1949, 184, 1, 0, 0, 0, 1950, 1951, 7, 13, 0, 0, 1951, 1952, 7, 10, 0, 0, 1952, 1953, 7, 16, 0, 0, 1953, 1954, 7, 22, 0, 0, 1954, 1955, 7, 13, 0, 0, 1955, 1956, 7, 7, 0, 0, 1956, 1957, 7, 17, 0, 0, 1957, 1958, 7, 7, 0, 0, 1958, 1959, 7, 23, 0, 0, 1959, 186, 1, 0, 0, 0, 1960, 1961, 7, 9, 0, 0, 1961, 1962, 7, 10, 0, 0, 1962, 1963, 7, 6, 0, 0, 1963, 1964, 7, 10, 0, 0, 1964, 1965, 7, 14, 0, 0, 1965, 1966, 7, 16, 0, 0, 1966, 188, 1, 0, 0, 0, 1967, 1968, 7, 9, 0, 0, 1968, 1969, 7, 10, 0, 0, 1969, 1970, 7, 9, 0, 0, 1970, 1971, 7, 9, 0, 0, 1971, 1972, 7, 17, 0, 0, 1972, 1973, 7, 19, 0, 0, 1973, 1974, 7, 7, 0, 0, 1974, 1975, 5, 95, 0, 0, 1975, 1976, 7, 22, 0, 0, 1976, 1977, 7, 9, 0, 0, 1977, 1978, 7, 10, 0, 0, 1978, 1979, 7, 13, 0, 0, 1979, 190, 1, 0, 0, 0, 1980, 1981, 7, 9, 0, 0, 1981, 1982, 7, 19, 0, 0, 1982, 1983, 7, 15, 0, 0, 1983, 1984, 7, 10, 0, 0, 1984, 192, 1, 0, 0, 0, 1985, 1986, 7, 9, 0, 0, 1986, 1987, 7, 8, 0, 0, 1987, 1988, 7, 15, 0, 0, 1988, 1989, 7, 15, 0, 0, 1989, 1990, 7, 10, 0, 0, 1990, 1991, 7, 16, 0, 0, 1991, 1992, 7, 13, 0, 0, 1992, 1993, 7, 17, 0, 0, 1993, 1994, 7, 14, 0, 0, 1994, 194, 1, 0, 0, 0, 1995, 1996, 7, 16, 0, 0, 1996, 1997, 7, 5, 0, 0, 1997, 1998, 7, 18, 0, 0, 1998, 1999, 7, 6, 0, 0, 1999, 2000, 7, 10, 0, 0, 2000, 196, 1, 0, 0, 0, 2001, 2002, 7, 16, 0, 0, 2002, 2003, 7, 20, 0, 0, 2003, 2004, 7, 10, 0, 0, 2004, 2005, 7, 7, 0, 0, 2005, 198, 1, 0, 0, 0, 2006, 2007, 7, 16, 0, 0, 2007, 2008, 7, 19, 0, 0, 2008, 200, 1, 0, 0, 0, 2009, 2010, 7, 16, 0, 0, 2010, 2011, 7, 19, 0, 0, 2011, 2012, 7, 24, 0, 0, 2012, 2013, 7, 17, 0, 0, 2013, 2014, 7, 14, 0, 0, 2014, 202, 1, 0, 0, 0, 2015, 2016, 7, 16, 0, 0, 2016, 2017, 7, 19, 0, 0, 2017, 2018, 7, 24, 0, 0, 2018, 2019, 7, 17, 0, 0, 2019, 2020, 7, 14, 0, 0, 2020, 2021, 7, 9, 0, 0, 2021, 204, 1, 0, 0, 0, 2022, 2023, 7, 9, 0, 0, 2023, 2024, 7, 16, 0, 0, 2024, 2025, 7, 13, 0, 0, 2025, 2026, 7, 10, 0, 0, 2026, 2027, 7, 5, 0, 0, 2027, 2028, 7, 15, 0, 0, 2028, 206, 1, 0, 0, 0, 2029, 2030, 7, 11, 0, 0, 2030, 2031, 7, 27, 0, 0, 2031, 2032, 7, 17, 0, 0, 2032, 2033, 7, 10, 0, 0, 2033, 2034, 7, 28, 0, 0, 2034, 208, 1, 0, 0, 0, 2035, 2036, 7, 11, 0, 0, 2036, 2037, 7, 27, 0, 0, 2037, 2038, 7, 17, 0, 0, 2038, 2039, 7, 10, 0, 0, 2039, 2040, 7, 28, 0, 0, 2040, 2041, 7, 9, 0, 0, 2041, 210, 1, 0, 0, 0, 2042, 2043, 7, 16, 0, 0, 2043, 2044, 7, 13, 0, 0, 2044, 2045, 7, 5, 0, 0, 2045, 2046, 7, 17, 0, 0, 2046, 2047, 7, 6, 0, 0, 2047, 2048, 7, 17, 0, 0, 2048, 2049, 7, 7, 0, 0, 2049, 2050, 7, 23, 0, 0, 2050, 212, 1, 0, 0, 0, 2051, 2052, 7, 16, 0, 0, 2052, 2053, 7, 13, 0, 0, 2053, 2054, 7, 22, 0, 0, 2054, 2055, 7, 10, 0, 0, 2055, 214, 1, 0, 0, 0, 2056, 2057, 7, 22, 0, 0, 2057, 2058, 7, 7, 0, 0, 2058, 2059, 7, 17, 0, 0, 2059, 2060, 7, 19, 0, 0, 2060, 2061, 7, 7, 0, 0, 2061, 216, 1, 0, 0, 0, 2062, 2063, 7, 22, 0, 0, 2063, 2064, 7, 7, 0, 0, 2064, 2065, 7, 17, 0, 0, 2065, 2066, 7, 29, 0, 0, 2066, 2067, 7, 22, 0, 0, 2067, 2068, 7, 10, 0, 0, 2068, 218, 1, 0, 0, 0, 2069, 2070, 7, 22, 0, 0, 2070, 2071, 7, 9, 0, 0, 2071, 2072, 7, 10, 0, 0, 2072, 2073, 7, 13, 0, 0, 2073, 220, 1, 0, 0, 0, 2074, 2075, 7, 22, 0, 0, 2075, 2076, 7, 9, 0, 0, 2076, 2077, 7, 17, 0, 0, 2077, 2078, 7, 7, 0, 0, 2078, 2079, 7, 23, 0, 0, 2079, 222, 1, 0, 0, 0, 2080, 2081, 7, 27, 0, 0, 2081, 2082, 7, 5, 0, 0, 2082, 2083, 7, 13, 0, 0, 2083, 2084, 7, 17, 0, 0, 2084, 2085, 7, 5, 0, 0, 2085, 2086, 7, 12, 0, 0, 2086, 2087, 7, 17, 0, 0, 2087, 2088, 7, 14, 0, 0, 2088, 224, 1, 0, 0, 0, 2089, 2090, 7, 28, 0, 0, 2090, 2091, 7, 20, 0, 0, 2091, 2092, 7, 10, 0, 0, 2092, 2093, 7, 7, 0, 0, 2093, 226, 1, 0, 0, 0, 2094, 2095, 7, 28, 0, 0, 2095, 2096, 7, 20, 0, 0, 2096, 2097, 7, 10, 0, 0, 2097, 2098, 7, 13, 0, 0, 2098, 2099, 7, 10, 0, 0, 2099, 228, 1, 0, 0, 0, 2100, 2101, 7, 28, 0, 0, 2101, 2102, 7, 17, 0, 0, 2102, 2103, 7, 7, 0, 0, 2103, 2104, 7, 12, 0, 0, 2104, 2105, 7, 19, 0, 0, 2105, 2106, 7, 28, 0, 0, 2106, 230, 1, 0, 0, 0, 2107, 2108, 7, 28, 0, 0, 2108, 2109, 7, 17, 0, 0, 2109, 2110, 7, 16, 0, 0, 2110, 2111, 7, 20, 0, 0, 2111, 232, 1, 0, 0, 0, 2112, 2113, 7, 5, 0, 0, 2113, 2114, 7, 22, 0, 0, 2114, 2115, 7, 16, 0, 0, 2115, 2116, 7, 20, 0, 0, 2116, 2117, 7, 19, 0, 0, 2117, 2118, 7, 13, 0, 0, 2118, 2119, 7, 17, 0, 0, 2119, 2120, 7, 11, 0, 0, 2120, 2121, 7, 5, 0, 0, 2121, 2122, 7, 16, 0, 0, 2122, 2123, 7, 17, 0, 0, 2123, 2124, 7, 19, 0, 0, 2124, 2125, 7, 7, 0, 0, 2125, 234, 1, 0, 0, 0, 2126, 2127, 7, 18, 0, 0, 2127, 2128, 7, 17, 0, 0, 2128, 2129, 7, 7, 0, 0, 2129, 2130, 7, 5, 0, 0, 2130, 2131, 7, 13, 0, 0, 2131, 2132, 7, 8, 0, 0, 2132, 236, 1, 0, 0, 0, 2133, 2134, 7, 14, 0, 0, 2134, 2135, 7, 19, 0, 0, 2135, 2136, 7, 6, 0, 0, 2136, 2137, 7, 6, 0, 0, 2137, 2138, 7, 5, 0, 0, 2138, 2139, 7, 16, 0, 0, 2139, 2140, 7, 17, 0, 0, 2140, 2141, 7, 19, 0, 0, 2141, 2142, 7, 7, 0, 0, 2142, 238, 1, 0, 0, 0, 2143, 2144, 7, 14, 0, 0, 2144, 2145, 7, 19, 0, 0, 2145, 2146, 7, 7, 0, 0, 2146, 2147, 7, 14, 0, 0, 2147, 2148, 7, 22, 0, 0, 2148, 2149, 7, 13, 0, 0, 2149, 2150, 7, 13, 0, 0, 2150, 2151, 7, 10, 0, 0, 2151, 2152, 7, 7, 0, 0, 2152, 2153, 7, 16, 0, 0, 2153, 2154, 7, 6, 0, 0, 2154, 2155, 7, 8, 0, 0, 2155, 240, 1, 0, 0, 0, 2156, 2157, 7, 14, 0, 0, 2157, 2158, 7, 13, 0, 0, 2158, 2159, 7, 19, 0, 0, 2159, 2160, 7, 9, 0, 0, 2160, 2161, 7, 9, 0, 0, 2161, 242, 1, 0, 0, 0, 2162, 2163, 7, 14, 0, 0, 2163, 2164, 7, 22, 0, 0, 2164, 2165, 7, 13, 0, 0, 2165, 2166, 7, 13, 0, 0, 2166, 2167, 7, 10, 0, 0, 2167, 2168, 7, 7, 0, 0, 2168, 2169, 7, 16, 0, 0, 2169, 2170, 5, 95, 0, 0, 2170, 2171, 7, 9, 0, 0, 2171, 2172, 7, 14, 0, 0, 2172, 2173, 7, 20, 0, 0, 2173, 2174, 7, 10, 0, 0, 2174, 2175, 7, 15, 0, 0, 2175, 2176, 7, 5, 0, 0, 2176, 244, 1, 0, 0, 0, 2177, 2178, 7, 25, 0, 0, 2178, 2179, 7, 13, 0, 0, 2179, 2180, 7, 10, 0, 0, 2180, 2181, 7, 10, 0, 0, 2181, 2182, 7, 11, 0, 0, 2182, 2183, 7, 10, 0, 0, 2183, 246, 1, 0, 0, 0, 2184, 2185, 7, 25, 0, 0, 2185, 2186, 7, 22, 0, 0, 2186, 2187, 7, 6, 0, 0, 2187, 2188, 7, 6, 0, 0, 2188, 248, 1, 0, 0, 0, 2189, 2190, 7, 17, 0, 0, 2190, 2191, 7, 6, 0, 0, 2191, 2192, 7, 17, 0, 0, 2192, 2193, 7, 21, 0, 0, 2193, 2194, 7, 10, 0, 0, 2194, 250, 1, 0, 0, 0, 2195, 2196, 7, 17, 0, 0, 2196, 2197, 7, 7, 0, 0, 2197, 2198, 7, 7, 0, 0, 2198, 2199, 7, 10, 0, 0, 2199, 2200, 7, 13, 0, 0, 2200, 252, 1, 0, 0, 0, 2201, 2202, 7, 17, 0, 0, 2202, 2203, 7, 9, 0, 0, 2203, 254, 1, 0, 0, 0, 2204, 2205, 7, 17, 0, 0, 2205, 2206, 7, 9, 0, 0, 2206, 2207, 7, 7, 0, 0, 2207, 2208, 7, 22, 0, 0, 2208, 2209, 7, 6, 0, 0, 2209, 2210, 7, 6, 0, 0, 2210, 256, 1, 0, 0, 0, 2211, 2212, 7, 30, 0, 0, 2212, 2213, 7, 19, 0, 0, 2213, 2214, 7, 17, 0, 0, 2214, 2215, 7, 7, 0, 0, 2215, 258, 1, 0, 0, 0, 2216, 2217, 7, 6, 0, 0, 2217, 2218, 7, 10, 0, 0, 2218, 2219, 7, 25, 0, 0, 2219, 2220, 7, 16, 0, 0, 2220, 260, 1, 0, 0, 0, 2221, 2222, 7, 6, 0, 0, 2222, 2223, 7, 17, 0, 0, 2223, 2224, 7, 21, 0, 0, 2224, 2225, 7, 10, 0, 0, 2225, 262, 1, 0, 0, 0, 2226, 2227, 7, 7, 0, 0, 2227, 2228, 7, 5, 0, 0, 2228, 2229, 7, 16, 0, 0, 2229, 2230, 7, 22, 0, 0, 2230, 2231, 7, 13, 0, 0, 2231, 2232, 7, 5, 0, 0, 2232, 2233, 7, 6, 0, 0, 2233, 264, 1, 0, 0, 0, 2234, 2235, 7, 7, 0, 0, 2235, 2236, 7, 19, 0, 0, 2236, 2237, 7, 16, 0, 0, 2237, 2238, 7, 7, 0, 0, 2238, 2239, 7, 22, 0, 0, 2239, 2240, 7, 6, 0, 0, 2240, 2241, 7, 6, 0, 0, 2241, 266, 1, 0, 0, 0, 2242, 2243, 7, 19, 0, 0, 2243, 2244, 7, 22, 0, 0, 2244, 2245, 7, 16, 0, 0, 2245, 2246, 7, 10, 0, 0, 2246, 2247, 7, 13, 0, 0, 2247, 268, 1, 0, 0, 0, 2248, 2249, 7, 19, 0, 0, 2249, 2250, 7, 27, 0, 0, 2250, 2251, 7, 10, 0, 0, 2251, 2252, 7, 13, 0, 0, 2252, 270, 1, 0, 0, 0, 2253, 2254, 7, 19, 0, 0, 2254, 2255, 7, 27, 0, 0, 2255, 2256, 7, 10, 0, 0, 2256, 2257, 7, 13, 0, 0, 2257, 2258, 7, 6, 0, 0, 2258, 2259, 7, 5, 0, 0, 2259, 2260, 7, 24, 0, 0, 2260, 2261, 7, 9, 0, 0, 2261, 272, 1, 0, 0, 0, 2262, 2263, 7, 13, 0, 0, 2263, 2264, 7, 17, 0, 0, 2264, 2265, 7, 23, 0, 0, 2265, 2266, 7, 20, 0, 0, 2266, 2267, 7, 16, 0, 0, 2267, 274, 1, 0, 0, 0, 2268, 2269, 7, 9, 0, 0, 2269, 2270, 7, 17, 0, 0, 2270, 2271, 7, 15, 0, 0, 2271, 2272, 7, 17, 0, 0, 2272, 2273, 7, 6, 0, 0, 2273, 2274, 7, 5, 0, 0, 2274, 2275, 7, 13, 0, 0, 2275, 276, 1, 0, 0, 0, 2276, 2277, 7, 27, 0, 0, 2277, 2278, 7, 10, 0, 0, 2278, 2279, 7, 13, 0, 0, 2279, 2280, 7, 18, 0, 0, 2280, 2281, 7, 19, 0, 0, 2281, 2282, 7, 9, 0, 0, 2282, 2283, 7, 10, 0, 0, 2283, 278, 1, 0, 0, 0, 2284, 2285, 7, 5, 0, 0, 2285, 2286, 7, 18, 0, 0, 2286, 2287, 7, 19, 0, 0, 2287, 2288, 7, 13, 0, 0, 2288, 2289, 7, 16, 0, 0, 2289, 280, 1, 0, 0, 0, 2290, 2291, 7, 5, 0, 0, 2291, 2292, 7, 18, 0, 0, 2292, 2293, 7, 9, 0, 0, 2293, 2294, 7, 19, 0, 0, 2294, 2295, 7, 6, 0, 0, 2295, 2296, 7, 22, 0, 0, 2296, 2297, 7, 16, 0, 0, 2297, 2298, 7, 10, 0, 0, 2298, 282, 1, 0, 0, 0, 2299, 2300, 7, 5, 0, 0, 2300, 2301, 7, 14, 0, 0, 2301, 2302, 7, 14, 0, 0, 2302, 2303, 7, 10, 0, 0, 2303, 2304, 7, 9, 0, 0, 2304, 2305, 7, 9, 0, 0, 2305, 284, 1, 0, 0, 0, 2306, 2307, 7, 5, 0, 0, 2307, 2308, 7, 14, 0, 0, 2308, 2309, 7, 16, 0, 0, 2309, 2310, 7, 17, 0, 0, 2310, 2311, 7, 19, 0, 0, 2311, 2312, 7, 7, 0, 0, 2312, 286, 1, 0, 0, 0, 2313, 2314, 7, 5, 0, 0, 2314, 2315, 7, 12, 0, 0, 2315, 2316, 7, 12, 0, 0, 2316, 288, 1, 0, 0, 0, 2317, 2318, 7, 5, 0, 0, 2318, 2319, 7, 12, 0, 0, 2319, 2320, 7, 15, 0, 0, 2320, 2321, 7, 17, 0, 0, 2321, 2322, 7, 7, 0, 0, 2322, 290, 1, 0, 0, 0, 2323, 2324, 7, 5, 0, 0, 2324, 2325, 7, 25, 0, 0, 2325, 2326, 7, 16, 0, 0, 2326, 2327, 7, 10, 0, 0, 2327, 2328, 7, 13, 0, 0, 2328, 292, 1, 0, 0, 0, 2329, 2330, 7, 5, 0, 0, 2330, 2331, 7, 23, 0, 0, 2331, 2332, 7, 23, 0, 0, 2332, 2333, 7, 13, 0, 0, 2333, 2334, 7, 10, 0, 0, 2334, 2335, 7, 23, 0, 0, 2335, 2336, 7, 5, 0, 0, 2336, 2337, 7, 16, 0, 0, 2337, 2338, 7, 10, 0, 0, 2338, 294, 1, 0, 0, 0, 2339, 2340, 7, 5, 0, 0, 2340, 2341, 7, 6, 0, 0, 2341, 2342, 7, 9, 0, 0, 2342, 2343, 7, 19, 0, 0, 2343, 296, 1, 0, 0, 0, 2344, 2345, 7, 5, 0, 0, 2345, 2346, 7, 6, 0, 0, 2346, 2347, 7, 16, 0, 0, 2347, 2348, 7, 10, 0, 0, 2348, 2349, 7, 13, 0, 0, 2349, 298, 1, 0, 0, 0, 2350, 2351, 7, 5, 0, 0, 2351, 2352, 7, 6, 0, 0, 2352, 2353, 7, 28, 0, 0, 2353, 2354, 7, 5, 0, 0, 2354, 2355, 7, 8, 0, 0, 2355, 2356, 7, 9, 0, 0, 2356, 300, 1, 0, 0, 0, 2357, 2358, 7, 5, 0, 0, 2358, 2359, 7, 9, 0, 0, 2359, 2360, 7, 9, 0, 0, 2360, 2361, 7, 10, 0, 0, 2361, 2362, 7, 13, 0, 0, 2362, 2363, 7, 16, 0, 0, 2363, 2364, 7, 17, 0, 0, 2364, 2365, 7, 19, 0, 0, 2365, 2366, 7, 7, 0, 0, 2366, 302, 1, 0, 0, 0, 2367, 2368, 7, 5, 0, 0, 2368, 2369, 7, 9, 0, 0, 2369, 2370, 7, 9, 0, 0, 2370, 2371, 7, 17, 0, 0, 2371, 2372, 7, 23, 0, 0, 2372, 2373, 7, 7, 0, 0, 2373, 2374, 7, 15, 0, 0, 2374, 2375, 7, 10, 0, 0, 2375, 2376, 7, 7, 0, 0, 2376, 2377, 7, 16, 0, 0, 2377, 304, 1, 0, 0, 0, 2378, 2379, 7, 5, 0, 0, 2379, 2380, 7, 16, 0, 0, 2380, 306, 1, 0, 0, 0, 2381, 2382, 7, 5, 0, 0, 2382, 2383, 7, 16, 0, 0, 2383, 2384, 7, 16, 0, 0, 2384, 2385, 7, 13, 0, 0, 2385, 2386, 7, 17, 0, 0, 2386, 2387, 7, 18, 0, 0, 2387, 2388, 7, 22, 0, 0, 2388, 2389, 7, 16, 0, 0, 2389, 2390, 7, 10, 0, 0, 2390, 308, 1, 0, 0, 0, 2391, 2392, 7, 18, 0, 0, 2392, 2393, 7, 5, 0, 0, 2393, 2394, 7, 14, 0, 0, 2394, 2395, 7, 21, 0, 0, 2395, 2396, 7, 28, 0, 0, 2396, 2397, 7, 5, 0, 0, 2397, 2398, 7, 13, 0, 0, 2398, 2399, 7, 12, 0, 0, 2399, 310, 1, 0, 0, 0, 2400, 2401, 7, 18, 0, 0, 2401, 2402, 7, 10, 0, 0, 2402, 2403, 7, 25, 0, 0, 2403, 2404, 7, 19, 0, 0, 2404, 2405, 7, 13, 0, 0, 2405, 2406, 7, 10, 0, 0, 2406, 312, 1, 0, 0, 0, 2407, 2408, 7, 18, 0, 0, 2408, 2409, 7, 10, 0, 0, 2409, 2410, 7, 23, 0, 0, 2410, 2411, 7, 17, 0, 0, 2411, 2412, 7, 7, 0, 0, 2412, 314, 1, 0, 0, 0, 2413, 2414, 7, 18, 0, 0, 2414, 2415, 7, 8, 0, 0, 2415, 316, 1, 0, 0, 0, 2416, 2417, 7, 14, 0, 0, 2417, 2418, 7, 5, 0, 0, 2418, 2419, 7, 14, 0, 0, 2419, 2420, 7, 20, 0, 0, 2420, 2421, 7, 10, 0, 0, 2421, 318, 1, 0, 0, 0, 2422, 2423, 7, 14, 0, 0, 2423, 2424, 7, 5, 0, 0, 2424, 2425, 7, 6, 0, 0, 2425, 2426, 7, 6, 0, 0, 2426, 2427, 7, 10, 0, 0, 2427, 2428, 7, 12, 0, 0, 2428, 320, 1, 0, 0, 0, 2429, 2430, 7, 14, 0, 0, 2430, 2431, 7, 5, 0, 0, 2431, 2432, 7, 9, 0, 0, 2432, 2433, 7, 14, 0, 0, 2433, 2434, 7, 5, 0, 0, 2434, 2435, 7, 12, 0, 0, 2435, 2436, 7, 10, 0, 0, 2436, 322, 1, 0, 0, 0, 2437, 2438, 7, 14, 0, 0, 2438, 2439, 7, 5, 0, 0, 2439, 2440, 7, 9, 0, 0, 2440, 2441, 7, 14, 0, 0, 2441, 2442, 7, 5, 0, 0, 2442, 2443, 7, 12, 0, 0, 2443, 2444, 7, 10, 0, 0, 2444, 2445, 7, 12, 0, 0, 2445, 324, 1, 0, 0, 0, 2446, 2447, 7, 14, 0, 0, 2447, 2448, 7, 5, 0, 0, 2448, 2449, 7, 16, 0, 0, 2449, 2450, 7, 5, 0, 0, 2450, 2451, 7, 6, 0, 0, 2451, 2452, 7, 19, 0, 0, 2452, 2453, 7, 23, 0, 0, 2453, 326, 1, 0, 0, 0, 2454, 2455, 7, 14, 0, 0, 2455, 2456, 7, 20, 0, 0, 2456, 2457, 7, 5, 0, 0, 2457, 2458, 7, 17, 0, 0, 2458, 2459, 7, 7, 0, 0, 2459, 328, 1, 0, 0, 0, 2460, 2461, 7, 14, 0, 0, 2461, 2462, 7, 20, 0, 0, 2462, 2463, 7, 5, 0, 0, 2463, 2464, 7, 13, 0, 0, 2464, 2465, 7, 5, 0, 0, 2465, 2466, 7, 14, 0, 0, 2466, 2467, 7, 16, 0, 0, 2467, 2468, 7, 10, 0, 0, 2468, 2469, 7, 13, 0, 0, 2469, 2470, 7, 17, 0, 0, 2470, 2471, 7, 9, 0, 0, 2471, 2472, 7, 16, 0, 0, 2472, 2473, 7, 17, 0, 0, 2473, 2474, 7, 14, 0, 0, 2474, 2475, 7, 9, 0, 0, 2475, 330, 1, 0, 0, 0, 2476, 2477, 7, 14, 0, 0, 2477, 2478, 7, 20, 0, 0, 2478, 2479, 7, 10, 0, 0, 2479, 2480, 7, 14, 0, 0, 2480, 2481, 7, 21, 0, 0, 2481, 2482, 7, 24, 0, 0, 2482, 2483, 7, 19, 0, 0, 2483, 2484, 7, 17, 0, 0, 2484, 2485, 7, 7, 0, 0, 2485, 2486, 7, 16, 0, 0, 2486, 332, 1, 0, 0, 0, 2487, 2488, 7, 14, 0, 0, 2488, 2489, 7, 6, 0, 0, 2489, 2490, 7, 5, 0, 0, 2490, 2491, 7, 9, 0, 0, 2491, 2492, 7, 9, 0, 0, 2492, 334, 1, 0, 0, 0, 2493, 2494, 7, 14, 0, 0, 2494, 2495, 7, 6, 0, 0, 2495, 2496, 7, 19, 0, 0, 2496, 2497, 7, 9, 0, 0, 2497, 2498, 7, 10, 0, 0, 2498, 336, 1, 0, 0, 0, 2499, 2500, 7, 14, 0, 0, 2500, 2501, 7, 6, 0, 0, 2501, 2502, 7, 22, 0, 0, 2502, 2503, 7, 9, 0, 0, 2503, 2504, 7, 16, 0, 0, 2504, 2505, 7, 10, 0, 0, 2505, 2506, 7, 13, 0, 0, 2506, 338, 1, 0, 0, 0, 2507, 2508, 7, 14, 0, 0, 2508, 2509, 7, 19, 0, 0, 2509, 2510, 7, 15, 0, 0, 2510, 2511, 7, 15, 0, 0, 2511, 2512, 7, 10, 0, 0, 2512, 2513, 7, 7, 0, 0, 2513, 2514, 7, 16, 0, 0, 2514, 340, 1, 0, 0, 0, 2515, 2516, 7, 14, 0, 0, 2516, 2517, 7, 19, 0, 0, 2517, 2518, 7, 15, 0, 0, 2518, 2519, 7, 15, 0, 0, 2519, 2520, 7, 10, 0, 0, 2520, 2521, 7, 7, 0, 0, 2521, 2522, 7, 16, 0, 0, 2522, 2523, 7, 9, 0, 0, 2523, 342, 1, 0, 0, 0, 2524, 2525, 7, 14, 0, 0, 2525, 2526, 7, 19, 0, 0, 2526, 2527, 7, 15, 0, 0, 2527, 2528, 7, 15, 0, 0, 2528, 2529, 7, 17, 0, 0, 2529, 2530, 7, 16, 0, 0, 2530, 344, 1, 0, 0, 0, 2531, 2532, 7, 14, 0, 0, 2532, 2533, 7, 19, 0, 0, 2533, 2534, 7, 15, 0, 0, 2534, 2535, 7, 15, 0, 0, 2535, 2536, 7, 17, 0, 0, 2536, 2537, 7, 16, 0, 0, 2537, 2538, 7, 16, 0, 0, 2538, 2539, 7, 10, 0, 0, 2539, 2540, 7, 12, 0, 0, 2540, 346, 1, 0, 0, 0, 2541, 2542, 7, 14, 0, 0, 2542, 2543, 7, 19, 0, 0, 2543, 2544, 7, 7, 0, 0, 2544, 2545, 7, 25, 0, 0, 2545, 2546, 7, 17, 0, 0, 2546, 2547, 7, 23, 0, 0, 2547, 2548, 7, 22, 0, 0, 2548, 2549, 7, 13, 0, 0, 2549, 2550, 7, 5, 0, 0, 2550, 2551, 7, 16, 0, 0, 2551, 2552, 7, 17, 0, 0, 2552, 2553, 7, 19, 0, 0, 2553, 2554, 7, 7, 0, 0, 2554, 348, 1, 0, 0, 0, 2555, 2556, 7, 14, 0, 0, 2556, 2557, 7, 19, 0, 0, 2557, 2558, 7, 7, 0, 0, 2558, 2559, 7, 7, 0, 0, 2559, 2560, 7, 10, 0, 0, 2560, 2561, 7, 14, 0, 0, 2561, 2562, 7, 16, 0, 0, 2562, 2563, 7, 17, 0, 0, 2563, 2564, 7, 19, 0, 0, 2564, 2565, 7, 7, 0, 0, 2565, 350, 1, 0, 0, 0, 2566, 2567, 7, 14, 0, 0, 2567, 2568, 7, 19, 0, 0, 2568, 2569, 7, 7, 0, 0, 2569, 2570, 7, 9, 0, 0, 2570, 2571, 7, 16, 0, 0, 2571, 2572, 7, 13, 0, 0, 2572, 2573, 7, 5, 0, 0, 2573, 2574, 7, 17, 0, 0, 2574, 2575, 7, 7, 0, 0, 2575, 2576, 7, 16, 0, 0, 2576, 2577, 7, 9, 0, 0, 2577, 352, 1, 0, 0, 0, 2578, 2579, 7, 14, 0, 0, 2579, 2580, 7, 19, 0, 0, 2580, 2581, 7, 7, 0, 0, 2581, 2582, 7, 16, 0, 0, 2582, 2583, 7, 10, 0, 0, 2583, 2584, 7, 7, 0, 0, 2584, 2585, 7, 16, 0, 0, 2585, 354, 1, 0, 0, 0, 2586, 2587, 7, 14, 0, 0, 2587, 2588, 7, 19, 0, 0, 2588, 2589, 7, 7, 0, 0, 2589, 2590, 7, 16, 0, 0, 2590, 2591, 7, 17, 0, 0, 2591, 2592, 7, 7, 0, 0, 2592, 2593, 7, 22, 0, 0, 2593, 2594, 7, 10, 0, 0, 2594, 356, 1, 0, 0, 0, 2595, 2596, 7, 14, 0, 0, 2596, 2597, 7, 19, 0, 0, 2597, 2598, 7, 7, 0, 0, 2598, 2599, 7, 27, 0, 0, 2599, 2600, 7, 10, 0, 0, 2600, 2601, 7, 13, 0, 0, 2601, 2602, 7, 9, 0, 0, 2602, 2603, 7, 17, 0, 0, 2603, 2604, 7, 19, 0, 0, 2604, 2605, 7, 7, 0, 0, 2605, 358, 1, 0, 0, 0, 2606, 2607, 7, 14, 0, 0, 2607, 2608, 7, 19, 0, 0, 2608, 2609, 7, 24, 0, 0, 2609, 2610, 7, 8, 0, 0, 2610, 360, 1, 0, 0, 0, 2611, 2612, 7, 14, 0, 0, 2612, 2613, 7, 19, 0, 0, 2613, 2614, 7, 9, 0, 0, 2614, 2615, 7, 16, 0, 0, 2615, 362, 1, 0, 0, 0, 2616, 2617, 7, 14, 0, 0, 2617, 2618, 7, 9, 0, 0, 2618, 2619, 7, 27, 0, 0, 2619, 364, 1, 0, 0, 0, 2620, 2621, 7, 14, 0, 0, 2621, 2622, 7, 22, 0, 0, 2622, 2623, 7, 13, 0, 0, 2623, 2624, 7, 9, 0, 0, 2624, 2625, 7, 19, 0, 0, 2625, 2626, 7, 13, 0, 0, 2626, 366, 1, 0, 0, 0, 2627, 2628, 7, 14, 0, 0, 2628, 2629, 7, 8, 0, 0, 2629, 2630, 7, 14, 0, 0, 2630, 2631, 7, 6, 0, 0, 2631, 2632, 7, 10, 0, 0, 2632, 368, 1, 0, 0, 0, 2633, 2634, 7, 12, 0, 0, 2634, 2635, 7, 5, 0, 0, 2635, 2636, 7, 16, 0, 0, 2636, 2637, 7, 5, 0, 0, 2637, 370, 1, 0, 0, 0, 2638, 2639, 7, 12, 0, 0, 2639, 2640, 7, 5, 0, 0, 2640, 2641, 7, 16, 0, 0, 2641, 2642, 7, 5, 0, 0, 2642, 2643, 7, 18, 0, 0, 2643, 2644, 7, 5, 0, 0, 2644, 2645, 7, 9, 0, 0, 2645, 2646, 7, 10, 0, 0, 2646, 372, 1, 0, 0, 0, 2647, 2648, 7, 12, 0, 0, 2648, 2649, 7, 5, 0, 0, 2649, 2650, 7, 8, 0, 0, 2650, 374, 1, 0, 0, 0, 2651, 2652, 7, 12, 0, 0, 2652, 2653, 7, 10, 0, 0, 2653, 2654, 7, 5, 0, 0, 2654, 2655, 7, 6, 0, 0, 2655, 2656, 7, 6, 0, 0, 2656, 2657, 7, 19, 0, 0, 2657, 2658, 7, 14, 0, 0, 2658, 2659, 7, 5, 0, 0, 2659, 2660, 7, 16, 0, 0, 2660, 2661, 7, 10, 0, 0, 2661, 376, 1, 0, 0, 0, 2662, 2663, 7, 12, 0, 0, 2663, 2664, 7, 10, 0, 0, 2664, 2665, 7, 14, 0, 0, 2665, 2666, 7, 6, 0, 0, 2666, 2667, 7, 5, 0, 0, 2667, 2668, 7, 13, 0, 0, 2668, 2669, 7, 10, 0, 0, 2669, 378, 1, 0, 0, 0, 2670, 2671, 7, 12, 0, 0, 2671, 2672, 7, 10, 0, 0, 2672, 2673, 7, 25, 0, 0, 2673, 2674, 7, 5, 0, 0, 2674, 2675, 7, 22, 0, 0, 2675, 2676, 7, 6, 0, 0, 2676, 2677, 7, 16, 0, 0, 2677, 2678, 7, 9, 0, 0, 2678, 380, 1, 0, 0, 0, 2679, 2680, 7, 12, 0, 0, 2680, 2681, 7, 10, 0, 0, 2681, 2682, 7, 25, 0, 0, 2682, 2683, 7, 10, 0, 0, 2683, 2684, 7, 13, 0, 0, 2684, 2685, 7, 13, 0, 0, 2685, 2686, 7, 10, 0, 0, 2686, 2687, 7, 12, 0, 0, 2687, 382, 1, 0, 0, 0, 2688, 2689, 7, 12, 0, 0, 2689, 2690, 7, 10, 0, 0, 2690, 2691, 7, 25, 0, 0, 2691, 2692, 7, 17, 0, 0, 2692, 2693, 7, 7, 0, 0, 2693, 2694, 7, 10, 0, 0, 2694, 2695, 7, 13, 0, 0, 2695, 384, 1, 0, 0, 0, 2696, 2697, 7, 12, 0, 0, 2697, 2698, 7, 10, 0, 0, 2698, 2699, 7, 6, 0, 0, 2699, 2700, 7, 10, 0, 0, 2700, 2701, 7, 16, 0, 0, 2701, 2702, 7, 10, 0, 0, 2702, 386, 1, 0, 0, 0, 2703, 2704, 7, 12, 0, 0, 2704, 2705, 7, 10, 0, 0, 2705, 2706, 7, 6, 0, 0, 2706, 2707, 7, 17, 0, 0, 2707, 2708, 7, 15, 0, 0, 2708, 2709, 7, 17, 0, 0, 2709, 2710, 7, 16, 0, 0, 2710, 2711, 7, 10, 0, 0, 2711, 2712, 7, 13, 0, 0, 2712, 388, 1, 0, 0, 0, 2713, 2714, 7, 12, 0, 0, 2714, 2715, 7, 10, 0, 0, 2715, 2716, 7, 6, 0, 0, 2716, 2717, 7, 17, 0, 0, 2717, 2718, 7, 15, 0, 0, 2718, 2719, 7, 17, 0, 0, 2719, 2720, 7, 16, 0, 0, 2720, 2721, 7, 10, 0, 0, 2721, 2722, 7, 13, 0, 0, 2722, 2723, 7, 9, 0, 0, 2723, 390, 1, 0, 0, 0, 2724, 2725, 7, 12, 0, 0, 2725, 2726, 7, 17, 0, 0, 2726, 2727, 7, 14, 0, 0, 2727, 2728, 7, 16, 0, 0, 2728, 2729, 7, 17, 0, 0, 2729, 2730, 7, 19, 0, 0, 2730, 2731, 7, 7, 0, 0, 2731, 2732, 7, 5, 0, 0, 2732, 2733, 7, 13, 0, 0, 2733, 2734, 7, 8, 0, 0, 2734, 392, 1, 0, 0, 0, 2735, 2736, 7, 12, 0, 0, 2736, 2737, 7, 17, 0, 0, 2737, 2738, 7, 9, 0, 0, 2738, 2739, 7, 5, 0, 0, 2739, 2740, 7, 18, 0, 0, 2740, 2741, 7, 6, 0, 0, 2741, 2742, 7, 10, 0, 0, 2742, 394, 1, 0, 0, 0, 2743, 2744, 7, 12, 0, 0, 2744, 2745, 7, 17, 0, 0, 2745, 2746, 7, 9, 0, 0, 2746, 2747, 7, 14, 0, 0, 2747, 2748, 7, 5, 0, 0, 2748, 2749, 7, 13, 0, 0, 2749, 2750, 7, 12, 0, 0, 2750, 396, 1, 0, 0, 0, 2751, 2752, 7, 12, 0, 0, 2752, 2753, 7, 19, 0, 0, 2753, 2754, 7, 14, 0, 0, 2754, 2755, 7, 22, 0, 0, 2755, 2756, 7, 15, 0, 0, 2756, 2757, 7, 10, 0, 0, 2757, 2758, 7, 7, 0, 0, 2758, 2759, 7, 16, 0, 0, 2759, 398, 1, 0, 0, 0, 2760, 2761, 7, 12, 0, 0, 2761, 2762, 7, 19, 0, 0, 2762, 2763, 7, 15, 0, 0, 2763, 2764, 7, 5, 0, 0, 2764, 2765, 7, 17, 0, 0, 2765, 2766, 7, 7, 0, 0, 2766, 400, 1, 0, 0, 0, 2767, 2768, 7, 12, 0, 0, 2768, 2769, 7, 19, 0, 0, 2769, 2770, 7, 22, 0, 0, 2770, 2771, 7, 18, 0, 0, 2771, 2772, 7, 6, 0, 0, 2772, 2773, 7, 10, 0, 0, 2773, 402, 1, 0, 0, 0, 2774, 2775, 7, 12, 0, 0, 2775, 2776, 7, 13, 0, 0, 2776, 2777, 7, 19, 0, 0, 2777, 2778, 7, 24, 0, 0, 2778, 404, 1, 0, 0, 0, 2779, 2780, 7, 10, 0, 0, 2780, 2781, 7, 5, 0, 0, 2781, 2782, 7, 14, 0, 0, 2782, 2783, 7, 20, 0, 0, 2783, 406, 1, 0, 0, 0, 2784, 2785, 7, 10, 0, 0, 2785, 2786, 7, 7, 0, 0, 2786, 2787, 7, 5, 0, 0, 2787, 2788, 7, 18, 0, 0, 2788, 2789, 7, 6, 0, 0, 2789, 2790, 7, 10, 0, 0, 2790, 408, 1, 0, 0, 0, 2791, 2792, 7, 10, 0, 0, 2792, 2793, 7, 7, 0, 0, 2793, 2794, 7, 14, 0, 0, 2794, 2795, 7, 19, 0, 0, 2795, 2796, 7, 12, 0, 0, 2796, 2797, 7, 17, 0, 0, 2797, 2798, 7, 7, 0, 0, 2798, 2799, 7, 23, 0, 0, 2799, 410, 1, 0, 0, 0, 2800, 2801, 7, 10, 0, 0, 2801, 2802, 7, 7, 0, 0, 2802, 2803, 7, 14, 0, 0, 2803, 2804, 7, 13, 0, 0, 2804, 2805, 7, 8, 0, 0, 2805, 2806, 7, 24, 0, 0, 2806, 2807, 7, 16, 0, 0, 2807, 2808, 7, 10, 0, 0, 2808, 2809, 7, 12, 0, 0, 2809, 412, 1, 0, 0, 0, 2810, 2811, 7, 10, 0, 0, 2811, 2812, 7, 7, 0, 0, 2812, 2813, 7, 22, 0, 0, 2813, 2814, 7, 15, 0, 0, 2814, 414, 1, 0, 0, 0, 2815, 2816, 7, 10, 0, 0, 2816, 2817, 7, 9, 0, 0, 2817, 2818, 7, 14, 0, 0, 2818, 2819, 7, 5, 0, 0, 2819, 2820, 7, 24, 0, 0, 2820, 2821, 7, 10, 0, 0, 2821, 416, 1, 0, 0, 0, 2822, 2823, 7, 10, 0, 0, 2823, 2824, 7, 27, 0, 0, 2824, 2825, 7, 10, 0, 0, 2825, 2826, 7, 7, 0, 0, 2826, 2827, 7, 16, 0, 0, 2827, 418, 1, 0, 0, 0, 2828, 2829, 7, 10, 0, 0, 2829, 2830, 7, 26, 0, 0, 2830, 2831, 7, 14, 0, 0, 2831, 2832, 7, 6, 0, 0, 2832, 2833, 7, 22, 0, 0, 2833, 2834, 7, 12, 0, 0, 2834, 2835, 7, 10, 0, 0, 2835, 420, 1, 0, 0, 0, 2836, 2837, 7, 10, 0, 0, 2837, 2838, 7, 26, 0, 0, 2838, 2839, 7, 14, 0, 0, 2839, 2840, 7, 6, 0, 0, 2840, 2841, 7, 22, 0, 0, 2841, 2842, 7, 12, 0, 0, 2842, 2843, 7, 17, 0, 0, 2843, 2844, 7, 7, 0, 0, 2844, 2845, 7, 23, 0, 0, 2845, 422, 1, 0, 0, 0, 2846, 2847, 7, 10, 0, 0, 2847, 2848, 7, 26, 0, 0, 2848, 2849, 7, 14, 0, 0, 2849, 2850, 7, 6, 0, 0, 2850, 2851, 7, 22, 0, 0, 2851, 2852, 7, 9, 0, 0, 2852, 2853, 7, 17, 0, 0, 2853, 2854, 7, 27, 0, 0, 2854, 2855, 7, 10, 0, 0, 2855, 424, 1, 0, 0, 0, 2856, 2857, 7, 10, 0, 0, 2857, 2858, 7, 26, 0, 0, 2858, 2859, 7, 10, 0, 0, 2859, 2860, 7, 14, 0, 0, 2860, 2861, 7, 22, 0, 0, 2861, 2862, 7, 16, 0, 0, 2862, 2863, 7, 10, 0, 0, 2863, 426, 1, 0, 0, 0, 2864, 2865, 7, 10, 0, 0, 2865, 2866, 7, 26, 0, 0, 2866, 2867, 7, 24, 0, 0, 2867, 2868, 7, 6, 0, 0, 2868, 2869, 7, 5, 0, 0, 2869, 2870, 7, 17, 0, 0, 2870, 2871, 7, 7, 0, 0, 2871, 428, 1, 0, 0, 0, 2872, 2873, 7, 10, 0, 0, 2873, 2874, 7, 26, 0, 0, 2874, 2875, 7, 16, 0, 0, 2875, 2876, 7, 10, 0, 0, 2876, 2877, 7, 7, 0, 0, 2877, 2878, 7, 9, 0, 0, 2878, 2879, 7, 17, 0, 0, 2879, 2880, 7, 19, 0, 0, 2880, 2881, 7, 7, 0, 0, 2881, 430, 1, 0, 0, 0, 2882, 2883, 7, 10, 0, 0, 2883, 2884, 7, 26, 0, 0, 2884, 2885, 7, 16, 0, 0, 2885, 2886, 7, 10, 0, 0, 2886, 2887, 7, 13, 0, 0, 2887, 2888, 7, 7, 0, 0, 2888, 2889, 7, 5, 0, 0, 2889, 2890, 7, 6, 0, 0, 2890, 432, 1, 0, 0, 0, 2891, 2892, 7, 25, 0, 0, 2892, 2893, 7, 5, 0, 0, 2893, 2894, 7, 15, 0, 0, 2894, 2895, 7, 17, 0, 0, 2895, 2896, 7, 6, 0, 0, 2896, 2897, 7, 8, 0, 0, 2897, 434, 1, 0, 0, 0, 2898, 2899, 7, 25, 0, 0, 2899, 2900, 7, 17, 0, 0, 2900, 2901, 7, 13, 0, 0, 2901, 2902, 7, 9, 0, 0, 2902, 2903, 7, 16, 0, 0, 2903, 436, 1, 0, 0, 0, 2904, 2905, 7, 25, 0, 0, 2905, 2906, 7, 19, 0, 0, 2906, 2907, 7, 6, 0, 0, 2907, 2908, 7, 6, 0, 0, 2908, 2909, 7, 19, 0, 0, 2909, 2910, 7, 28, 0, 0, 2910, 2911, 7, 17, 0, 0, 2911, 2912, 7, 7, 0, 0, 2912, 2913, 7, 23, 0, 0, 2913, 438, 1, 0, 0, 0, 2914, 2915, 7, 25, 0, 0, 2915, 2916, 7, 19, 0, 0, 2916, 2917, 7, 13, 0, 0, 2917, 2918, 7, 14, 0, 0, 2918, 2919, 7, 10, 0, 0, 2919, 440, 1, 0, 0, 0, 2920, 2921, 7, 25, 0, 0, 2921, 2922, 7, 19, 0, 0, 2922, 2923, 7, 13, 0, 0, 2923, 2924, 7, 28, 0, 0, 2924, 2925, 7, 5, 0, 0, 2925, 2926, 7, 13, 0, 0, 2926, 2927, 7, 12, 0, 0, 2927, 442, 1, 0, 0, 0, 2928, 2929, 7, 25, 0, 0, 2929, 2930, 7, 22, 0, 0, 2930, 2931, 7, 7, 0, 0, 2931, 2932, 7, 14, 0, 0, 2932, 2933, 7, 16, 0, 0, 2933, 2934, 7, 17, 0, 0, 2934, 2935, 7, 19, 0, 0, 2935, 2936, 7, 7, 0, 0, 2936, 444, 1, 0, 0, 0, 2937, 2938, 7, 25, 0, 0, 2938, 2939, 7, 22, 0, 0, 2939, 2940, 7, 7, 0, 0, 2940, 2941, 7, 14, 0, 0, 2941, 2942, 7, 16, 0, 0, 2942, 2943, 7, 17, 0, 0, 2943, 2944, 7, 19, 0, 0, 2944, 2945, 7, 7, 0, 0, 2945, 2946, 7, 9, 0, 0, 2946, 446, 1, 0, 0, 0, 2947, 2948, 7, 23, 0, 0, 2948, 2949, 7, 6, 0, 0, 2949, 2950, 7, 19, 0, 0, 2950, 2951, 7, 18, 0, 0, 2951, 2952, 7, 5, 0, 0, 2952, 2953, 7, 6, 0, 0, 2953, 448, 1, 0, 0, 0, 2954, 2955, 7, 23, 0, 0, 2955, 2956, 7, 13, 0, 0, 2956, 2957, 7, 5, 0, 0, 2957, 2958, 7, 7, 0, 0, 2958, 2959, 7, 16, 0, 0, 2959, 2960, 7, 10, 0, 0, 2960, 2961, 7, 12, 0, 0, 2961, 450, 1, 0, 0, 0, 2962, 2963, 7, 20, 0, 0, 2963, 2964, 7, 5, 0, 0, 2964, 2965, 7, 7, 0, 0, 2965, 2966, 7, 12, 0, 0, 2966, 2967, 7, 6, 0, 0, 2967, 2968, 7, 10, 0, 0, 2968, 2969, 7, 13, 0, 0, 2969, 452, 1, 0, 0, 0, 2970, 2971, 7, 20, 0, 0, 2971, 2972, 7, 10, 0, 0, 2972, 2973, 7, 5, 0, 0, 2973, 2974, 7, 12, 0, 0, 2974, 2975, 7, 10, 0, 0, 2975, 2976, 7, 13, 0, 0, 2976, 454, 1, 0, 0, 0, 2977, 2978, 7, 20, 0, 0, 2978, 2979, 7, 19, 0, 0, 2979, 2980, 7, 6, 0, 0, 2980, 2981, 7, 12, 0, 0, 2981, 456, 1, 0, 0, 0, 2982, 2983, 7, 20, 0, 0, 2983, 2984, 7, 19, 0, 0, 2984, 2985, 7, 22, 0, 0, 2985, 2986, 7, 13, 0, 0, 2986, 458, 1, 0, 0, 0, 2987, 2988, 7, 17, 0, 0, 2988, 2989, 7, 12, 0, 0, 2989, 2990, 7, 10, 0, 0, 2990, 2991, 7, 7, 0, 0, 2991, 2992, 7, 16, 0, 0, 2992, 2993, 7, 17, 0, 0, 2993, 2994, 7, 16, 0, 0, 2994, 2995, 7, 8, 0, 0, 2995, 460, 1, 0, 0, 0, 2996, 2997, 7, 17, 0, 0, 2997, 2998, 7, 25, 0, 0, 2998, 462, 1, 0, 0, 0, 2999, 3000, 7, 17, 0, 0, 3000, 3001, 7, 15, 0, 0, 3001, 3002, 7, 15, 0, 0, 3002, 3003, 7, 10, 0, 0, 3003, 3004, 7, 12, 0, 0, 3004, 3005, 7, 17, 0, 0, 3005, 3006, 7, 5, 0, 0, 3006, 3007, 7, 16, 0, 0, 3007, 3008, 7, 10, 0, 0, 3008, 464, 1, 0, 0, 0, 3009, 3010, 7, 17, 0, 0, 3010, 3011, 7, 15, 0, 0, 3011, 3012, 7, 15, 0, 0, 3012, 3013, 7, 22, 0, 0, 3013, 3014, 7, 16, 0, 0, 3014, 3015, 7, 5, 0, 0, 3015, 3016, 7, 18, 0, 0, 3016, 3017, 7, 6, 0, 0, 3017, 3018, 7, 10, 0, 0, 3018, 466, 1, 0, 0, 0, 3019, 3020, 7, 17, 0, 0, 3020, 3021, 7, 15, 0, 0, 3021, 3022, 7, 24, 0, 0, 3022, 3023, 7, 6, 0, 0, 3023, 3024, 7, 17, 0, 0, 3024, 3025, 7, 14, 0, 0, 3025, 3026, 7, 17, 0, 0, 3026, 3027, 7, 16, 0, 0, 3027, 468, 1, 0, 0, 0, 3028, 3029, 7, 17, 0, 0, 3029, 3030, 7, 7, 0, 0, 3030, 3031, 7, 14, 0, 0, 3031, 3032, 7, 6, 0, 0, 3032, 3033, 7, 22, 0, 0, 3033, 3034, 7, 12, 0, 0, 3034, 3035, 7, 17, 0, 0, 3035, 3036, 7, 7, 0, 0, 3036, 3037, 7, 23, 0, 0, 3037, 470, 1, 0, 0, 0, 3038, 3039, 7, 17, 0, 0, 3039, 3040, 7, 7, 0, 0, 3040, 3041, 7, 14, 0, 0, 3041, 3042, 7, 13, 0, 0, 3042, 3043, 7, 10, 0, 0, 3043, 3044, 7, 15, 0, 0, 3044, 3045, 7, 10, 0, 0, 3045, 3046, 7, 7, 0, 0, 3046, 3047, 7, 16, 0, 0, 3047, 472, 1, 0, 0, 0, 3048, 3049, 7, 17, 0, 0, 3049, 3050, 7, 7, 0, 0, 3050, 3051, 7, 12, 0, 0, 3051, 3052, 7, 10, 0, 0, 3052, 3053, 7, 26, 0, 0, 3053, 474, 1, 0, 0, 0, 3054, 3055, 7, 17, 0, 0, 3055, 3056, 7, 7, 0, 0, 3056, 3057, 7, 12, 0, 0, 3057, 3058, 7, 10, 0, 0, 3058, 3059, 7, 26, 0, 0, 3059, 3060, 7, 10, 0, 0, 3060, 3061, 7, 9, 0, 0, 3061, 476, 1, 0, 0, 0, 3062, 3063, 7, 17, 0, 0, 3063, 3064, 7, 7, 0, 0, 3064, 3065, 7, 20, 0, 0, 3065, 3066, 7, 10, 0, 0, 3066, 3067, 7, 13, 0, 0, 3067, 3068, 7, 17, 0, 0, 3068, 3069, 7, 16, 0, 0, 3069, 478, 1, 0, 0, 0, 3070, 3071, 7, 17, 0, 0, 3071, 3072, 7, 7, 0, 0, 3072, 3073, 7, 20, 0, 0, 3073, 3074, 7, 10, 0, 0, 3074, 3075, 7, 13, 0, 0, 3075, 3076, 7, 17, 0, 0, 3076, 3077, 7, 16, 0, 0, 3077, 3078, 7, 9, 0, 0, 3078, 480, 1, 0, 0, 0, 3079, 3080, 7, 17, 0, 0, 3080, 3081, 7, 7, 0, 0, 3081, 3082, 7, 6, 0, 0, 3082, 3083, 7, 17, 0, 0, 3083, 3084, 7, 7, 0, 0, 3084, 3085, 7, 10, 0, 0, 3085, 482, 1, 0, 0, 0, 3086, 3087, 7, 17, 0, 0, 3087, 3088, 7, 7, 0, 0, 3088, 3089, 7, 9, 0, 0, 3089, 3090, 7, 10, 0, 0, 3090, 3091, 7, 7, 0, 0, 3091, 3092, 7, 9, 0, 0, 3092, 3093, 7, 17, 0, 0, 3093, 3094, 7, 16, 0, 0, 3094, 3095, 7, 17, 0, 0, 3095, 3096, 7, 27, 0, 0, 3096, 3097, 7, 10, 0, 0, 3097, 484, 1, 0, 0, 0, 3098, 3099, 7, 17, 0, 0, 3099, 3100, 7, 7, 0, 0, 3100, 3101, 7, 9, 0, 0, 3101, 3102, 7, 10, 0, 0, 3102, 3103, 7, 13, 0, 0, 3103, 3104, 7, 16, 0, 0, 3104, 486, 1, 0, 0, 0, 3105, 3106, 7, 17, 0, 0, 3106, 3107, 7, 7, 0, 0, 3107, 3108, 7, 9, 0, 0, 3108, 3109, 7, 16, 0, 0, 3109, 3110, 7, 10, 0, 0, 3110, 3111, 7, 5, 0, 0, 3111, 3112, 7, 12, 0, 0, 3112, 488, 1, 0, 0, 0, 3113, 3114, 7, 17, 0, 0, 3114, 3115, 7, 7, 0, 0, 3115, 3116, 7, 27, 0, 0, 3116, 3117, 7, 19, 0, 0, 3117, 3118, 7, 21, 0, 0, 3118, 3119, 7, 10, 0, 0, 3119, 3120, 7, 13, 0, 0, 3120, 490, 1, 0, 0, 0, 3121, 3122, 7, 17, 0, 0, 3122, 3123, 7, 9, 0, 0, 3123, 3124, 7, 19, 0, 0, 3124, 3125, 7, 6, 0, 0, 3125, 3126, 7, 5, 0, 0, 3126, 3127, 7, 16, 0, 0, 3127, 3128, 7, 17, 0, 0, 3128, 3129, 7, 19, 0, 0, 3129, 3130, 7, 7, 0, 0, 3130, 492, 1, 0, 0, 0, 3131, 3132, 7, 21, 0, 0, 3132, 3133, 7, 10, 0, 0, 3133, 3134, 7, 8, 0, 0, 3134, 494, 1, 0, 0, 0, 3135, 3136, 7, 6, 0, 0, 3136, 3137, 7, 5, 0, 0, 3137, 3138, 7, 18, 0, 0, 3138, 3139, 7, 10, 0, 0, 3139, 3140, 7, 6, 0, 0, 3140, 496, 1, 0, 0, 0, 3141, 3142, 7, 6, 0, 0, 3142, 3143, 7, 5, 0, 0, 3143, 3144, 7, 7, 0, 0, 3144, 3145, 7, 23, 0, 0, 3145, 3146, 7, 22, 0, 0, 3146, 3147, 7, 5, 0, 0, 3147, 3148, 7, 23, 0, 0, 3148, 3149, 7, 10, 0, 0, 3149, 498, 1, 0, 0, 0, 3150, 3151, 7, 6, 0, 0, 3151, 3152, 7, 5, 0, 0, 3152, 3153, 7, 13, 0, 0, 3153, 3154, 7, 23, 0, 0, 3154, 3155, 7, 10, 0, 0, 3155, 500, 1, 0, 0, 0, 3156, 3157, 7, 6, 0, 0, 3157, 3158, 7, 5, 0, 0, 3158, 3159, 7, 9, 0, 0, 3159, 3160, 7, 16, 0, 0, 3160, 502, 1, 0, 0, 0, 3161, 3162, 7, 6, 0, 0, 3162, 3163, 7, 10, 0, 0, 3163, 3164, 7, 5, 0, 0, 3164, 3165, 7, 21, 0, 0, 3165, 3166, 7, 24, 0, 0, 3166, 3167, 7, 13, 0, 0, 3167, 3168, 7, 19, 0, 0, 3168, 3169, 7, 19, 0, 0, 3169, 3170, 7, 25, 0, 0, 3170, 504, 1, 0, 0, 0, 3171, 3172, 7, 6, 0, 0, 3172, 3173, 7, 10, 0, 0, 3173, 3174, 7, 27, 0, 0, 3174, 3175, 7, 10, 0, 0, 3175, 3176, 7, 6, 0, 0, 3176, 506, 1, 0, 0, 0, 3177, 3178, 7, 6, 0, 0, 3178, 3179, 7, 17, 0, 0, 3179, 3180, 7, 9, 0, 0, 3180, 3181, 7, 16, 0, 0, 3181, 3182, 7, 10, 0, 0, 3182, 3183, 7, 7, 0, 0, 3183, 508, 1, 0, 0, 0, 3184, 3185, 7, 6, 0, 0, 3185, 3186, 7, 19, 0, 0, 3186, 3187, 7, 5, 0, 0, 3187, 3188, 7, 12, 0, 0, 3188, 510, 1, 0, 0, 0, 3189, 3190, 7, 6, 0, 0, 3190, 3191, 7, 19, 0, 0, 3191, 3192, 7, 14, 0, 0, 3192, 3193, 7, 5, 0, 0, 3193, 3194, 7, 6, 0, 0, 3194, 512, 1, 0, 0, 0, 3195, 3196, 7, 6, 0, 0, 3196, 3197, 7, 19, 0, 0, 3197, 3198, 7, 14, 0, 0, 3198, 3199, 7, 5, 0, 0, 3199, 3200, 7, 16, 0, 0, 3200, 3201, 7, 17, 0, 0, 3201, 3202, 7, 19, 0, 0, 3202, 3203, 7, 7, 0, 0, 3203, 514, 1, 0, 0, 0, 3204, 3205, 7, 6, 0, 0, 3205, 3206, 7, 19, 0, 0, 3206, 3207, 7, 14, 0, 0, 3207, 3208, 7, 21, 0, 0, 3208, 516, 1, 0, 0, 0, 3209, 3210, 7, 15, 0, 0, 3210, 3211, 7, 5, 0, 0, 3211, 3212, 7, 24, 0, 0, 3212, 3213, 7, 24, 0, 0, 3213, 3214, 7, 17, 0, 0, 3214, 3215, 7, 7, 0, 0, 3215, 3216, 7, 23, 0, 0, 3216, 518, 1, 0, 0, 0, 3217, 3218, 7, 15, 0, 0, 3218, 3219, 7, 5, 0, 0, 3219, 3220, 7, 16, 0, 0, 3220, 3221, 7, 14, 0, 0, 3221, 3222, 7, 20, 0, 0, 3222, 520, 1, 0, 0, 0, 3223, 3224, 7, 15, 0, 0, 3224, 3225, 7, 5, 0, 0, 3225, 3226, 7, 16, 0, 0, 3226, 3227, 7, 14, 0, 0, 3227, 3228, 7, 20, 0, 0, 3228, 3229, 7, 10, 0, 0, 3229, 3230, 7, 12, 0, 0, 3230, 522, 1, 0, 0, 0, 3231, 3232, 7, 15, 0, 0, 3232, 3233, 7, 5, 0, 0, 3233, 3234, 7, 16, 0, 0, 3234, 3235, 7, 10, 0, 0, 3235, 3236, 7, 13, 0, 0, 3236, 3237, 7, 17, 0, 0, 3237, 3238, 7, 5, 0, 0, 3238, 3239, 7, 6, 0, 0, 3239, 3240, 7, 17, 0, 0, 3240, 3241, 7, 11, 0, 0, 3241, 3242, 7, 10, 0, 0, 3242, 3243, 7, 12, 0, 0, 3243, 524, 1, 0, 0, 0, 3244, 3245, 7, 15, 0, 0, 3245, 3246, 7, 5, 0, 0, 3246, 3247, 7, 26, 0, 0, 3247, 3248, 7, 27, 0, 0, 3248, 3249, 7, 5, 0, 0, 3249, 3250, 7, 6, 0, 0, 3250, 3251, 7, 22, 0, 0, 3251, 3252, 7, 10, 0, 0, 3252, 526, 1, 0, 0, 0, 3253, 3254, 7, 15, 0, 0, 3254, 3255, 7, 10, 0, 0, 3255, 3256, 7, 13, 0, 0, 3256, 3257, 7, 23, 0, 0, 3257, 3258, 7, 10, 0, 0, 3258, 528, 1, 0, 0, 0, 3259, 3260, 7, 15, 0, 0, 3260, 3261, 7, 17, 0, 0, 3261, 3262, 7, 7, 0, 0, 3262, 3263, 7, 22, 0, 0, 3263, 3264, 7, 16, 0, 0, 3264, 3265, 7, 10, 0, 0, 3265, 530, 1, 0, 0, 0, 3266, 3267, 7, 15, 0, 0, 3267, 3268, 7, 17, 0, 0, 3268, 3269, 7, 7, 0, 0, 3269, 3270, 7, 27, 0, 0, 3270, 3271, 7, 5, 0, 0, 3271, 3272, 7, 6, 0, 0, 3272, 3273, 7, 22, 0, 0, 3273, 3274, 7, 10, 0, 0, 3274, 532, 1, 0, 0, 0, 3275, 3276, 7, 15, 0, 0, 3276, 3277, 7, 19, 0, 0, 3277, 3278, 7, 12, 0, 0, 3278, 3279, 7, 10, 0, 0, 3279, 534, 1, 0, 0, 0, 3280, 3281, 7, 15, 0, 0, 3281, 3282, 7, 19, 0, 0, 3282, 3283, 7, 7, 0, 0, 3283, 3284, 7, 16, 0, 0, 3284, 3285, 7, 20, 0, 0, 3285, 536, 1, 0, 0, 0, 3286, 3287, 7, 15, 0, 0, 3287, 3288, 7, 19, 0, 0, 3288, 3289, 7, 27, 0, 0, 3289, 3290, 7, 10, 0, 0, 3290, 538, 1, 0, 0, 0, 3291, 3292, 7, 7, 0, 0, 3292, 3293, 7, 5, 0, 0, 3293, 3294, 7, 15, 0, 0, 3294, 3295, 7, 10, 0, 0, 3295, 540, 1, 0, 0, 0, 3296, 3297, 7, 7, 0, 0, 3297, 3298, 7, 5, 0, 0, 3298, 3299, 7, 15, 0, 0, 3299, 3300, 7, 10, 0, 0, 3300, 3301, 7, 9, 0, 0, 3301, 542, 1, 0, 0, 0, 3302, 3303, 7, 7, 0, 0, 3303, 3304, 7, 10, 0, 0, 3304, 3305, 7, 26, 0, 0, 3305, 3306, 7, 16, 0, 0, 3306, 544, 1, 0, 0, 0, 3307, 3308, 7, 7, 0, 0, 3308, 3309, 7, 19, 0, 0, 3309, 546, 1, 0, 0, 0, 3310, 3311, 7, 7, 0, 0, 3311, 3312, 7, 19, 0, 0, 3312, 3313, 7, 16, 0, 0, 3313, 3314, 7, 20, 0, 0, 3314, 3315, 7, 17, 0, 0, 3315, 3316, 7, 7, 0, 0, 3316, 3317, 7, 23, 0, 0, 3317, 548, 1, 0, 0, 0, 3318, 3319, 7, 7, 0, 0, 3319, 3320, 7, 19, 0, 0, 3320, 3321, 7, 16, 0, 0, 3321, 3322, 7, 17, 0, 0, 3322, 3323, 7, 25, 0, 0, 3323, 3324, 7, 8, 0, 0, 3324, 550, 1, 0, 0, 0, 3325, 3326, 7, 7, 0, 0, 3326, 3327, 7, 19, 0, 0, 3327, 3328, 7, 28, 0, 0, 3328, 3329, 7, 5, 0, 0, 3329, 3330, 7, 17, 0, 0, 3330, 3331, 7, 16, 0, 0, 3331, 552, 1, 0, 0, 0, 3332, 3333, 7, 7, 0, 0, 3333, 3334, 7, 22, 0, 0, 3334, 3335, 7, 6, 0, 0, 3335, 3336, 7, 6, 0, 0, 3336, 3337, 7, 9, 0, 0, 3337, 554, 1, 0, 0, 0, 3338, 3339, 7, 19, 0, 0, 3339, 3340, 7, 18, 0, 0, 3340, 3341, 7, 30, 0, 0, 3341, 3342, 7, 10, 0, 0, 3342, 3343, 7, 14, 0, 0, 3343, 3344, 7, 16, 0, 0, 3344, 556, 1, 0, 0, 0, 3345, 3346, 7, 19, 0, 0, 3346, 3347, 7, 25, 0, 0, 3347, 558, 1, 0, 0, 0, 3348, 3349, 7, 19, 0, 0, 3349, 3350, 7, 25, 0, 0, 3350, 3351, 7, 25, 0, 0, 3351, 560, 1, 0, 0, 0, 3352, 3353, 7, 19, 0, 0, 3353, 3354, 7, 17, 0, 0, 3354, 3355, 7, 12, 0, 0, 3355, 3356, 7, 9, 0, 0, 3356, 562, 1, 0, 0, 0, 3357, 3358, 7, 19, 0, 0, 3358, 3359, 7, 24, 0, 0, 3359, 3360, 7, 10, 0, 0, 3360, 3361, 7, 13, 0, 0, 3361, 3362, 7, 5, 0, 0, 3362, 3363, 7, 16, 0, 0, 3363, 3364, 7, 19, 0, 0, 3364, 3365, 7, 13, 0, 0, 3365, 564, 1, 0, 0, 0, 3366, 3367, 7, 19, 0, 0, 3367, 3368, 7, 24, 0, 0, 3368, 3369, 7, 16, 0, 0, 3369, 3370, 7, 17, 0, 0, 3370, 3371, 7, 19, 0, 0, 3371, 3372, 7, 7, 0, 0, 3372, 566, 1, 0, 0, 0, 3373, 3374, 7, 19, 0, 0, 3374, 3375, 7, 24, 0, 0, 3375, 3376, 7, 16, 0, 0, 3376, 3377, 7, 17, 0, 0, 3377, 3378, 7, 19, 0, 0, 3378, 3379, 7, 7, 0, 0, 3379, 3380, 7, 9, 0, 0, 3380, 568, 1, 0, 0, 0, 3381, 3382, 7, 19, 0, 0, 3382, 3383, 7, 28, 0, 0, 3383, 3384, 7, 7, 0, 0, 3384, 3385, 7, 10, 0, 0, 3385, 3386, 7, 12, 0, 0, 3386, 570, 1, 0, 0, 0, 3387, 3388, 7, 19, 0, 0, 3388, 3389, 7, 28, 0, 0, 3389, 3390, 7, 7, 0, 0, 3390, 3391, 7, 10, 0, 0, 3391, 3392, 7, 13, 0, 0, 3392, 572, 1, 0, 0, 0, 3393, 3394, 7, 24, 0, 0, 3394, 3395, 7, 5, 0, 0, 3395, 3396, 7, 13, 0, 0, 3396, 3397, 7, 9, 0, 0, 3397, 3398, 7, 10, 0, 0, 3398, 3399, 7, 13, 0, 0, 3399, 574, 1, 0, 0, 0, 3400, 3401, 7, 24, 0, 0, 3401, 3402, 7, 5, 0, 0, 3402, 3403, 7, 13, 0, 0, 3403, 3404, 7, 16, 0, 0, 3404, 3405, 7, 17, 0, 0, 3405, 3406, 7, 5, 0, 0, 3406, 3407, 7, 6, 0, 0, 3407, 576, 1, 0, 0, 0, 3408, 3409, 7, 24, 0, 0, 3409, 3410, 7, 5, 0, 0, 3410, 3411, 7, 13, 0, 0, 3411, 3412, 7, 16, 0, 0, 3412, 3413, 7, 17, 0, 0, 3413, 3414, 7, 16, 0, 0, 3414, 3415, 7, 17, 0, 0, 3415, 3416, 7, 19, 0, 0, 3416, 3417, 7, 7, 0, 0, 3417, 578, 1, 0, 0, 0, 3418, 3419, 7, 24, 0, 0, 3419, 3420, 7, 5, 0, 0, 3420, 3421, 7, 9, 0, 0, 3421, 3422, 7, 9, 0, 0, 3422, 3423, 7, 17, 0, 0, 3423, 3424, 7, 7, 0, 0, 3424, 3425, 7, 23, 0, 0, 3425, 580, 1, 0, 0, 0, 3426, 3427, 7, 24, 0, 0, 3427, 3428, 7, 5, 0, 0, 3428, 3429, 7, 9, 0, 0, 3429, 3430, 7, 9, 0, 0, 3430, 3431, 7, 28, 0, 0, 3431, 3432, 7, 19, 0, 0, 3432, 3433, 7, 13, 0, 0, 3433, 3434, 7, 12, 0, 0, 3434, 582, 1, 0, 0, 0, 3435, 3436, 7, 24, 0, 0, 3436, 3437, 7, 6, 0, 0, 3437, 3438, 7, 5, 0, 0, 3438, 3439, 7, 7, 0, 0, 3439, 3440, 7, 9, 0, 0, 3440, 584, 1, 0, 0, 0, 3441, 3442, 7, 24, 0, 0, 3442, 3443, 7, 13, 0, 0, 3443, 3444, 7, 10, 0, 0, 3444, 3445, 7, 14, 0, 0, 3445, 3446, 7, 10, 0, 0, 3446, 3447, 7, 12, 0, 0, 3447, 3448, 7, 17, 0, 0, 3448, 3449, 7, 7, 0, 0, 3449, 3450, 7, 23, 0, 0, 3450, 586, 1, 0, 0, 0, 3451, 3452, 7, 24, 0, 0, 3452, 3453, 7, 13, 0, 0, 3453, 3454, 7, 10, 0, 0, 3454, 3455, 7, 24, 0, 0, 3455, 3456, 7, 5, 0, 0, 3456, 3457, 7, 13, 0, 0, 3457, 3458, 7, 10, 0, 0, 3458, 588, 1, 0, 0, 0, 3459, 3460, 7, 24, 0, 0, 3460, 3461, 7, 13, 0, 0, 3461, 3462, 7, 10, 0, 0, 3462, 3463, 7, 24, 0, 0, 3463, 3464, 7, 5, 0, 0, 3464, 3465, 7, 13, 0, 0, 3465, 3466, 7, 10, 0, 0, 3466, 3467, 7, 12, 0, 0, 3467, 590, 1, 0, 0, 0, 3468, 3469, 7, 24, 0, 0, 3469, 3470, 7, 13, 0, 0, 3470, 3471, 7, 10, 0, 0, 3471, 3472, 7, 9, 0, 0, 3472, 3473, 7, 10, 0, 0, 3473, 3474, 7, 13, 0, 0, 3474, 3475, 7, 27, 0, 0, 3475, 3476, 7, 10, 0, 0, 3476, 592, 1, 0, 0, 0, 3477, 3478, 7, 24, 0, 0, 3478, 3479, 7, 13, 0, 0, 3479, 3480, 7, 17, 0, 0, 3480, 3481, 7, 19, 0, 0, 3481, 3482, 7, 13, 0, 0, 3482, 594, 1, 0, 0, 0, 3483, 3484, 7, 24, 0, 0, 3484, 3485, 7, 13, 0, 0, 3485, 3486, 7, 17, 0, 0, 3486, 3487, 7, 27, 0, 0, 3487, 3488, 7, 17, 0, 0, 3488, 3489, 7, 6, 0, 0, 3489, 3490, 7, 10, 0, 0, 3490, 3491, 7, 23, 0, 0, 3491, 3492, 7, 10, 0, 0, 3492, 3493, 7, 9, 0, 0, 3493, 596, 1, 0, 0, 0, 3494, 3495, 7, 24, 0, 0, 3495, 3496, 7, 13, 0, 0, 3496, 3497, 7, 19, 0, 0, 3497, 3498, 7, 14, 0, 0, 3498, 3499, 7, 10, 0, 0, 3499, 3500, 7, 12, 0, 0, 3500, 3501, 7, 22, 0, 0, 3501, 3502, 7, 13, 0, 0, 3502, 3503, 7, 5, 0, 0, 3503, 3504, 7, 6, 0, 0, 3504, 598, 1, 0, 0, 0, 3505, 3506, 7, 24, 0, 0, 3506, 3507, 7, 13, 0, 0, 3507, 3508, 7, 19, 0, 0, 3508, 3509, 7, 14, 0, 0, 3509, 3510, 7, 10, 0, 0, 3510, 3511, 7, 12, 0, 0, 3511, 3512, 7, 22, 0, 0, 3512, 3513, 7, 13, 0, 0, 3513, 3514, 7, 10, 0, 0, 3514, 600, 1, 0, 0, 0, 3515, 3516, 7, 24, 0, 0, 3516, 3517, 7, 13, 0, 0, 3517, 3518, 7, 19, 0, 0, 3518, 3519, 7, 23, 0, 0, 3519, 3520, 7, 13, 0, 0, 3520, 3521, 7, 5, 0, 0, 3521, 3522, 7, 15, 0, 0, 3522, 602, 1, 0, 0, 0, 3523, 3524, 7, 29, 0, 0, 3524, 3525, 7, 22, 0, 0, 3525, 3526, 7, 19, 0, 0, 3526, 3527, 7, 16, 0, 0, 3527, 3528, 7, 10, 0, 0, 3528, 604, 1, 0, 0, 0, 3529, 3530, 7, 13, 0, 0, 3530, 3531, 7, 5, 0, 0, 3531, 3532, 7, 7, 0, 0, 3532, 3533, 7, 23, 0, 0, 3533, 3534, 7, 10, 0, 0, 3534, 606, 1, 0, 0, 0, 3535, 3536, 7, 13, 0, 0, 3536, 3537, 7, 10, 0, 0, 3537, 3538, 7, 5, 0, 0, 3538, 3539, 7, 12, 0, 0, 3539, 608, 1, 0, 0, 0, 3540, 3541, 7, 13, 0, 0, 3541, 3542, 7, 10, 0, 0, 3542, 3543, 7, 5, 0, 0, 3543, 3544, 7, 9, 0, 0, 3544, 3545, 7, 9, 0, 0, 3545, 3546, 7, 17, 0, 0, 3546, 3547, 7, 23, 0, 0, 3547, 3548, 7, 7, 0, 0, 3548, 610, 1, 0, 0, 0, 3549, 3550, 7, 13, 0, 0, 3550, 3551, 7, 10, 0, 0, 3551, 3552, 7, 14, 0, 0, 3552, 3553, 7, 20, 0, 0, 3553, 3554, 7, 10, 0, 0, 3554, 3555, 7, 14, 0, 0, 3555, 3556, 7, 21, 0, 0, 3556, 612, 1, 0, 0, 0, 3557, 3558, 7, 13, 0, 0, 3558, 3559, 7, 10, 0, 0, 3559, 3560, 7, 14, 0, 0, 3560, 3561, 7, 22, 0, 0, 3561, 3562, 7, 13, 0, 0, 3562, 3563, 7, 9, 0, 0, 3563, 3564, 7, 17, 0, 0, 3564, 3565, 7, 27, 0, 0, 3565, 3566, 7, 10, 0, 0, 3566, 614, 1, 0, 0, 0, 3567, 3568, 7, 13, 0, 0, 3568, 3569, 7, 10, 0, 0, 3569, 3570, 7, 25, 0, 0, 3570, 616, 1, 0, 0, 0, 3571, 3572, 7, 13, 0, 0, 3572, 3573, 7, 10, 0, 0, 3573, 3574, 7, 25, 0, 0, 3574, 3575, 7, 13, 0, 0, 3575, 3576, 7, 10, 0, 0, 3576, 3577, 7, 9, 0, 0, 3577, 3578, 7, 20, 0, 0, 3578, 618, 1, 0, 0, 0, 3579, 3580, 7, 13, 0, 0, 3580, 3581, 7, 10, 0, 0, 3581, 3582, 7, 17, 0, 0, 3582, 3583, 7, 7, 0, 0, 3583, 3584, 7, 12, 0, 0, 3584, 3585, 7, 10, 0, 0, 3585, 3586, 7, 26, 0, 0, 3586, 620, 1, 0, 0, 0, 3587, 3588, 7, 13, 0, 0, 3588, 3589, 7, 10, 0, 0, 3589, 3590, 7, 6, 0, 0, 3590, 3591, 7, 5, 0, 0, 3591, 3592, 7, 16, 0, 0, 3592, 3593, 7, 17, 0, 0, 3593, 3594, 7, 27, 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, 6, 0, 0, 3599, 3600, 7, 10, 0, 0, 3600, 3601, 7, 5, 0, 0, 3601, 3602, 7, 9, 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, 7, 0, 0, 3607, 3608, 7, 5, 0, 0, 3608, 3609, 7, 15, 0, 0, 3609, 3610, 7, 10, 0, 0, 3610, 626, 1, 0, 0, 0, 3611, 3612, 7, 13, 0, 0, 3612, 3613, 7, 10, 0, 0, 3613, 3614, 7, 24, 0, 0, 3614, 3615, 7, 10, 0, 0, 3615, 3616, 7, 5, 0, 0, 3616, 3617, 7, 16, 0, 0, 3617, 3618, 7, 5, 0, 0, 3618, 3619, 7, 18, 0, 0, 3619, 3620, 7, 6, 0, 0, 3620, 3621, 7, 10, 0, 0, 3621, 628, 1, 0, 0, 0, 3622, 3623, 7, 13, 0, 0, 3623, 3624, 7, 10, 0, 0, 3624, 3625, 7, 24, 0, 0, 3625, 3626, 7, 6, 0, 0, 3626, 3627, 7, 5, 0, 0, 3627, 3628, 7, 14, 0, 0, 3628, 3629, 7, 10, 0, 0, 3629, 630, 1, 0, 0, 0, 3630, 3631, 7, 13, 0, 0, 3631, 3632, 7, 10, 0, 0, 3632, 3633, 7, 24, 0, 0, 3633, 3634, 7, 6, 0, 0, 3634, 3635, 7, 17, 0, 0, 3635, 3636, 7, 14, 0, 0, 3636, 3637, 7, 5, 0, 0, 3637, 632, 1, 0, 0, 0, 3638, 3639, 7, 13, 0, 0, 3639, 3640, 7, 10, 0, 0, 3640, 3641, 7, 9, 0, 0, 3641, 3642, 7, 10, 0, 0, 3642, 3643, 7, 16, 0, 0, 3643, 634, 1, 0, 0, 0, 3644, 3645, 7, 13, 0, 0, 3645, 3646, 7, 10, 0, 0, 3646, 3647, 7, 9, 0, 0, 3647, 3648, 7, 16, 0, 0, 3648, 3649, 7, 5, 0, 0, 3649, 3650, 7, 13, 0, 0, 3650, 3651, 7, 16, 0, 0, 3651, 636, 1, 0, 0, 0, 3652, 3653, 7, 13, 0, 0, 3653, 3654, 7, 10, 0, 0, 3654, 3655, 7, 9, 0, 0, 3655, 3656, 7, 16, 0, 0, 3656, 3657, 7, 13, 0, 0, 3657, 3658, 7, 17, 0, 0, 3658, 3659, 7, 14, 0, 0, 3659, 3660, 7, 16, 0, 0, 3660, 638, 1, 0, 0, 0, 3661, 3662, 7, 13, 0, 0, 3662, 3663, 7, 10, 0, 0, 3663, 3664, 7, 16, 0, 0, 3664, 3665, 7, 22, 0, 0, 3665, 3666, 7, 13, 0, 0, 3666, 3667, 7, 7, 0, 0, 3667, 3668, 7, 9, 0, 0, 3668, 640, 1, 0, 0, 0, 3669, 3670, 7, 13, 0, 0, 3670, 3671, 7, 10, 0, 0, 3671, 3672, 7, 27, 0, 0, 3672, 3673, 7, 19, 0, 0, 3673, 3674, 7, 21, 0, 0, 3674, 3675, 7, 10, 0, 0, 3675, 642, 1, 0, 0, 0, 3676, 3677, 7, 13, 0, 0, 3677, 3678, 7, 19, 0, 0, 3678, 3679, 7, 6, 0, 0, 3679, 3680, 7, 10, 0, 0, 3680, 644, 1, 0, 0, 0, 3681, 3682, 7, 13, 0, 0, 3682, 3683, 7, 19, 0, 0, 3683, 3684, 7, 6, 0, 0, 3684, 3685, 7, 6, 0, 0, 3685, 3686, 7, 18, 0, 0, 3686, 3687, 7, 5, 0, 0, 3687, 3688, 7, 14, 0, 0, 3688, 3689, 7, 21, 0, 0, 3689, 646, 1, 0, 0, 0, 3690, 3691, 7, 13, 0, 0, 3691, 3692, 7, 19, 0, 0, 3692, 3693, 7, 28, 0, 0, 3693, 3694, 7, 9, 0, 0, 3694, 648, 1, 0, 0, 0, 3695, 3696, 7, 13, 0, 0, 3696, 3697, 7, 22, 0, 0, 3697, 3698, 7, 6, 0, 0, 3698, 3699, 7, 10, 0, 0, 3699, 650, 1, 0, 0, 0, 3700, 3701, 7, 9, 0, 0, 3701, 3702, 7, 5, 0, 0, 3702, 3703, 7, 27, 0, 0, 3703, 3704, 7, 10, 0, 0, 3704, 3705, 7, 24, 0, 0, 3705, 3706, 7, 19, 0, 0, 3706, 3707, 7, 17, 0, 0, 3707, 3708, 7, 7, 0, 0, 3708, 3709, 7, 16, 0, 0, 3709, 652, 1, 0, 0, 0, 3710, 3711, 7, 9, 0, 0, 3711, 3712, 7, 14, 0, 0, 3712, 3713, 7, 20, 0, 0, 3713, 3714, 7, 10, 0, 0, 3714, 3715, 7, 15, 0, 0, 3715, 3716, 7, 5, 0, 0, 3716, 654, 1, 0, 0, 0, 3717, 3718, 7, 9, 0, 0, 3718, 3719, 7, 14, 0, 0, 3719, 3720, 7, 13, 0, 0, 3720, 3721, 7, 19, 0, 0, 3721, 3722, 7, 6, 0, 0, 3722, 3723, 7, 6, 0, 0, 3723, 656, 1, 0, 0, 0, 3724, 3725, 7, 9, 0, 0, 3725, 3726, 7, 10, 0, 0, 3726, 3727, 7, 5, 0, 0, 3727, 3728, 7, 13, 0, 0, 3728, 3729, 7, 14, 0, 0, 3729, 3730, 7, 20, 0, 0, 3730, 658, 1, 0, 0, 0, 3731, 3732, 7, 9, 0, 0, 3732, 3733, 7, 10, 0, 0, 3733, 3734, 7, 14, 0, 0, 3734, 3735, 7, 19, 0, 0, 3735, 3736, 7, 7, 0, 0, 3736, 3737, 7, 12, 0, 0, 3737, 660, 1, 0, 0, 0, 3738, 3739, 7, 9, 0, 0, 3739, 3740, 7, 10, 0, 0, 3740, 3741, 7, 14, 0, 0, 3741, 3742, 7, 22, 0, 0, 3742, 3743, 7, 13, 0, 0, 3743, 3744, 7, 17, 0, 0, 3744, 3745, 7, 16, 0, 0, 3745, 3746, 7, 8, 0, 0, 3746, 662, 1, 0, 0, 0, 3747, 3748, 7, 9, 0, 0, 3748, 3749, 7, 10, 0, 0, 3749, 3750, 7, 29, 0, 0, 3750, 3751, 7, 22, 0, 0, 3751, 3752, 7, 10, 0, 0, 3752, 3753, 7, 7, 0, 0, 3753, 3754, 7, 14, 0, 0, 3754, 3755, 7, 10, 0, 0, 3755, 664, 1, 0, 0, 0, 3756, 3757, 7, 9, 0, 0, 3757, 3758, 7, 10, 0, 0, 3758, 3759, 7, 29, 0, 0, 3759, 3760, 7, 22, 0, 0, 3760, 3761, 7, 10, 0, 0, 3761, 3762, 7, 7, 0, 0, 3762, 3763, 7, 14, 0, 0, 3763, 3764, 7, 10, 0, 0, 3764, 3765, 7, 9, 0, 0, 3765, 666, 1, 0, 0, 0, 3766, 3767, 7, 9, 0, 0, 3767, 3768, 7, 10, 0, 0, 3768, 3769, 7, 13, 0, 0, 3769, 3770, 7, 17, 0, 0, 3770, 3771, 7, 5, 0, 0, 3771, 3772, 7, 6, 0, 0, 3772, 3773, 7, 17, 0, 0, 3773, 3774, 7, 11, 0, 0, 3774, 3775, 7, 5, 0, 0, 3775, 3776, 7, 18, 0, 0, 3776, 3777, 7, 6, 0, 0, 3777, 3778, 7, 10, 0, 0, 3778, 668, 1, 0, 0, 0, 3779, 3780, 7, 9, 0, 0, 3780, 3781, 7, 10, 0, 0, 3781, 3782, 7, 13, 0, 0, 3782, 3783, 7, 27, 0, 0, 3783, 3784, 7, 10, 0, 0, 3784, 3785, 7, 13, 0, 0, 3785, 670, 1, 0, 0, 0, 3786, 3787, 7, 9, 0, 0, 3787, 3788, 7, 10, 0, 0, 3788, 3789, 7, 9, 0, 0, 3789, 3790, 7, 9, 0, 0, 3790, 3791, 7, 17, 0, 0, 3791, 3792, 7, 19, 0, 0, 3792, 3793, 7, 7, 0, 0, 3793, 672, 1, 0, 0, 0, 3794, 3795, 7, 9, 0, 0, 3795, 3796, 7, 10, 0, 0, 3796, 3797, 7, 16, 0, 0, 3797, 674, 1, 0, 0, 0, 3798, 3799, 7, 9, 0, 0, 3799, 3800, 7, 20, 0, 0, 3800, 3801, 7, 5, 0, 0, 3801, 3802, 7, 13, 0, 0, 3802, 3803, 7, 10, 0, 0, 3803, 676, 1, 0, 0, 0, 3804, 3805, 7, 9, 0, 0, 3805, 3806, 7, 20, 0, 0, 3806, 3807, 7, 19, 0, 0, 3807, 3808, 7, 28, 0, 0, 3808, 678, 1, 0, 0, 0, 3809, 3810, 7, 9, 0, 0, 3810, 3811, 7, 17, 0, 0, 3811, 3812, 7, 15, 0, 0, 3812, 3813, 7, 24, 0, 0, 3813, 3814, 7, 6, 0, 0, 3814, 3815, 7, 10, 0, 0, 3815, 680, 1, 0, 0, 0, 3816, 3817, 7, 9, 0, 0, 3817, 3818, 7, 7, 0, 0, 3818, 3819, 7, 5, 0, 0, 3819, 3820, 7, 24, 0, 0, 3820, 3821, 7, 9, 0, 0, 3821, 3822, 7, 20, 0, 0, 3822, 3823, 7, 19, 0, 0, 3823, 3824, 7, 16, 0, 0, 3824, 682, 1, 0, 0, 0, 3825, 3826, 7, 9, 0, 0, 3826, 3827, 7, 16, 0, 0, 3827, 3828, 7, 5, 0, 0, 3828, 3829, 7, 18, 0, 0, 3829, 3830, 7, 6, 0, 0, 3830, 3831, 7, 10, 0, 0, 3831, 684, 1, 0, 0, 0, 3832, 3833, 7, 9, 0, 0, 3833, 3834, 7, 16, 0, 0, 3834, 3835, 7, 5, 0, 0, 3835, 3836, 7, 7, 0, 0, 3836, 3837, 7, 12, 0, 0, 3837, 3838, 7, 5, 0, 0, 3838, 3839, 7, 6, 0, 0, 3839, 3840, 7, 19, 0, 0, 3840, 3841, 7, 7, 0, 0, 3841, 3842, 7, 10, 0, 0, 3842, 686, 1, 0, 0, 0, 3843, 3844, 7, 9, 0, 0, 3844, 3845, 7, 16, 0, 0, 3845, 3846, 7, 5, 0, 0, 3846, 3847, 7, 13, 0, 0, 3847, 3848, 7, 16, 0, 0, 3848, 688, 1, 0, 0, 0, 3849, 3850, 7, 9, 0, 0, 3850, 3851, 7, 16, 0, 0, 3851, 3852, 7, 5, 0, 0, 3852, 3853, 7, 16, 0, 0, 3853, 3854, 7, 10, 0, 0, 3854, 3855, 7, 15, 0, 0, 3855, 3856, 7, 10, 0, 0, 3856, 3857, 7, 7, 0, 0, 3857, 3858, 7, 16, 0, 0, 3858, 690, 1, 0, 0, 0, 3859, 3860, 7, 9, 0, 0, 3860, 3861, 7, 16, 0, 0, 3861, 3862, 7, 5, 0, 0, 3862, 3863, 7, 16, 0, 0, 3863, 3864, 7, 17, 0, 0, 3864, 3865, 7, 9, 0, 0, 3865, 3866, 7, 16, 0, 0, 3866, 3867, 7, 17, 0, 0, 3867, 3868, 7, 14, 0, 0, 3868, 3869, 7, 9, 0, 0, 3869, 692, 1, 0, 0, 0, 3870, 3871, 7, 9, 0, 0, 3871, 3872, 7, 16, 0, 0, 3872, 3873, 7, 12, 0, 0, 3873, 3874, 7, 17, 0, 0, 3874, 3875, 7, 7, 0, 0, 3875, 694, 1, 0, 0, 0, 3876, 3877, 7, 9, 0, 0, 3877, 3878, 7, 16, 0, 0, 3878, 3879, 7, 12, 0, 0, 3879, 3880, 7, 19, 0, 0, 3880, 3881, 7, 22, 0, 0, 3881, 3882, 7, 16, 0, 0, 3882, 696, 1, 0, 0, 0, 3883, 3884, 7, 9, 0, 0, 3884, 3885, 7, 16, 0, 0, 3885, 3886, 7, 19, 0, 0, 3886, 3887, 7, 13, 0, 0, 3887, 3888, 7, 5, 0, 0, 3888, 3889, 7, 23, 0, 0, 3889, 3890, 7, 10, 0, 0, 3890, 698, 1, 0, 0, 0, 3891, 3892, 7, 9, 0, 0, 3892, 3893, 7, 16, 0, 0, 3893, 3894, 7, 13, 0, 0, 3894, 3895, 7, 17, 0, 0, 3895, 3896, 7, 14, 0, 0, 3896, 3897, 7, 16, 0, 0, 3897, 700, 1, 0, 0, 0, 3898, 3899, 7, 9, 0, 0, 3899, 3900, 7, 16, 0, 0, 3900, 3901, 7, 13, 0, 0, 3901, 3902, 7, 17, 0, 0, 3902, 3903, 7, 24, 0, 0, 3903, 702, 1, 0, 0, 0, 3904, 3905, 7, 9, 0, 0, 3905, 3906, 7, 8, 0, 0, 3906, 3907, 7, 9, 0, 0, 3907, 3908, 7, 17, 0, 0, 3908, 3909, 7, 12, 0, 0, 3909, 704, 1, 0, 0, 0, 3910, 3911, 7, 9, 0, 0, 3911, 3912, 7, 8, 0, 0, 3912, 3913, 7, 9, 0, 0, 3913, 3914, 7, 16, 0, 0, 3914, 3915, 7, 10, 0, 0, 3915, 3916, 7, 15, 0, 0, 3916, 706, 1, 0, 0, 0, 3917, 3918, 7, 16, 0, 0, 3918, 3919, 7, 5, 0, 0, 3919, 3920, 7, 18, 0, 0, 3920, 3921, 7, 6, 0, 0, 3921, 3922, 7, 10, 0, 0, 3922, 3923, 7, 9, 0, 0, 3923, 708, 1, 0, 0, 0, 3924, 3925, 7, 16, 0, 0, 3925, 3926, 7, 5, 0, 0, 3926, 3927, 7, 18, 0, 0, 3927, 3928, 7, 6, 0, 0, 3928, 3929, 7, 10, 0, 0, 3929, 3930, 7, 9, 0, 0, 3930, 3931, 7, 24, 0, 0, 3931, 3932, 7, 5, 0, 0, 3932, 3933, 7, 14, 0, 0, 3933, 3934, 7, 10, 0, 0, 3934, 710, 1, 0, 0, 0, 3935, 3936, 7, 16, 0, 0, 3936, 3937, 7, 10, 0, 0, 3937, 3938, 7, 15, 0, 0, 3938, 3939, 7, 24, 0, 0, 3939, 712, 1, 0, 0, 0, 3940, 3941, 7, 16, 0, 0, 3941, 3942, 7, 10, 0, 0, 3942, 3943, 7, 15, 0, 0, 3943, 3944, 7, 24, 0, 0, 3944, 3945, 7, 6, 0, 0, 3945, 3946, 7, 5, 0, 0, 3946, 3947, 7, 16, 0, 0, 3947, 3948, 7, 10, 0, 0, 3948, 714, 1, 0, 0, 0, 3949, 3950, 7, 16, 0, 0, 3950, 3951, 7, 10, 0, 0, 3951, 3952, 7, 15, 0, 0, 3952, 3953, 7, 24, 0, 0, 3953, 3954, 7, 19, 0, 0, 3954, 3955, 7, 13, 0, 0, 3955, 3956, 7, 5, 0, 0, 3956, 3957, 7, 13, 0, 0, 3957, 3958, 7, 8, 0, 0, 3958, 716, 1, 0, 0, 0, 3959, 3960, 7, 16, 0, 0, 3960, 3961, 7, 10, 0, 0, 3961, 3962, 7, 26, 0, 0, 3962, 3963, 7, 16, 0, 0, 3963, 718, 1, 0, 0, 0, 3964, 3965, 7, 16, 0, 0, 3965, 3966, 7, 13, 0, 0, 3966, 3967, 7, 5, 0, 0, 3967, 3968, 7, 7, 0, 0, 3968, 3969, 7, 9, 0, 0, 3969, 3970, 7, 5, 0, 0, 3970, 3971, 7, 14, 0, 0, 3971, 3972, 7, 16, 0, 0, 3972, 3973, 7, 17, 0, 0, 3973, 3974, 7, 19, 0, 0, 3974, 3975, 7, 7, 0, 0, 3975, 720, 1, 0, 0, 0, 3976, 3977, 7, 16, 0, 0, 3977, 3978, 7, 13, 0, 0, 3978, 3979, 7, 17, 0, 0, 3979, 3980, 7, 23, 0, 0, 3980, 3981, 7, 23, 0, 0, 3981, 3982, 7, 10, 0, 0, 3982, 3983, 7, 13, 0, 0, 3983, 722, 1, 0, 0, 0, 3984, 3985, 7, 16, 0, 0, 3985, 3986, 7, 13, 0, 0, 3986, 3987, 7, 22, 0, 0, 3987, 3988, 7, 7, 0, 0, 3988, 3989, 7, 14, 0, 0, 3989, 3990, 7, 5, 0, 0, 3990, 3991, 7, 16, 0, 0, 3991, 3992, 7, 10, 0, 0, 3992, 724, 1, 0, 0, 0, 3993, 3994, 7, 16, 0, 0, 3994, 3995, 7, 13, 0, 0, 3995, 3996, 7, 22, 0, 0, 3996, 3997, 7, 9, 0, 0, 3997, 3998, 7, 16, 0, 0, 3998, 3999, 7, 10, 0, 0, 3999, 4000, 7, 12, 0, 0, 4000, 726, 1, 0, 0, 0, 4001, 4002, 7, 16, 0, 0, 4002, 4003, 7, 8, 0, 0, 4003, 4004, 7, 24, 0, 0, 4004, 4005, 7, 10, 0, 0, 4005, 728, 1, 0, 0, 0, 4006, 4007, 7, 16, 0, 0, 4007, 4008, 7, 8, 0, 0, 4008, 4009, 7, 24, 0, 0, 4009, 4010, 7, 10, 0, 0, 4010, 4011, 7, 9, 0, 0, 4011, 730, 1, 0, 0, 0, 4012, 4013, 7, 22, 0, 0, 4013, 4014, 7, 7, 0, 0, 4014, 4015, 7, 18, 0, 0, 4015, 4016, 7, 19, 0, 0, 4016, 4017, 7, 22, 0, 0, 4017, 4018, 7, 7, 0, 0, 4018, 4019, 7, 12, 0, 0, 4019, 4020, 7, 10, 0, 0, 4020, 4021, 7, 12, 0, 0, 4021, 732, 1, 0, 0, 0, 4022, 4023, 7, 22, 0, 0, 4023, 4024, 7, 7, 0, 0, 4024, 4025, 7, 14, 0, 0, 4025, 4026, 7, 19, 0, 0, 4026, 4027, 7, 15, 0, 0, 4027, 4028, 7, 15, 0, 0, 4028, 4029, 7, 17, 0, 0, 4029, 4030, 7, 16, 0, 0, 4030, 4031, 7, 16, 0, 0, 4031, 4032, 7, 10, 0, 0, 4032, 4033, 7, 12, 0, 0, 4033, 734, 1, 0, 0, 0, 4034, 4035, 7, 22, 0, 0, 4035, 4036, 7, 7, 0, 0, 4036, 4037, 7, 10, 0, 0, 4037, 4038, 7, 7, 0, 0, 4038, 4039, 7, 14, 0, 0, 4039, 4040, 7, 13, 0, 0, 4040, 4041, 7, 8, 0, 0, 4041, 4042, 7, 24, 0, 0, 4042, 4043, 7, 16, 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, 21, 0, 0, 4049, 4050, 7, 7, 0, 0, 4050, 4051, 7, 19, 0, 0, 4051, 4052, 7, 28, 0, 0, 4052, 4053, 7, 7, 0, 0, 4053, 738, 1, 0, 0, 0, 4054, 4055, 7, 22, 0, 0, 4055, 4056, 7, 7, 0, 0, 4056, 4057, 7, 6, 0, 0, 4057, 4058, 7, 17, 0, 0, 4058, 4059, 7, 9, 0, 0, 4059, 4060, 7, 16, 0, 0, 4060, 4061, 7, 10, 0, 0, 4061, 4062, 7, 7, 0, 0, 4062, 740, 1, 0, 0, 0, 4063, 4064, 7, 22, 0, 0, 4064, 4065, 7, 7, 0, 0, 4065, 4066, 7, 6, 0, 0, 4066, 4067, 7, 19, 0, 0, 4067, 4068, 7, 23, 0, 0, 4068, 4069, 7, 23, 0, 0, 4069, 4070, 7, 10, 0, 0, 4070, 4071, 7, 12, 0, 0, 4071, 742, 1, 0, 0, 0, 4072, 4073, 7, 22, 0, 0, 4073, 4074, 7, 7, 0, 0, 4074, 4075, 7, 16, 0, 0, 4075, 4076, 7, 17, 0, 0, 4076, 4077, 7, 6, 0, 0, 4077, 744, 1, 0, 0, 0, 4078, 4079, 7, 22, 0, 0, 4079, 4080, 7, 24, 0, 0, 4080, 4081, 7, 12, 0, 0, 4081, 4082, 7, 5, 0, 0, 4082, 4083, 7, 16, 0, 0, 4083, 4084, 7, 10, 0, 0, 4084, 746, 1, 0, 0, 0, 4085, 4086, 7, 27, 0, 0, 4086, 4087, 7, 5, 0, 0, 4087, 4088, 7, 14, 0, 0, 4088, 4089, 7, 22, 0, 0, 4089, 4090, 7, 22, 0, 0, 4090, 4091, 7, 15, 0, 0, 4091, 748, 1, 0, 0, 0, 4092, 4093, 7, 27, 0, 0, 4093, 4094, 7, 5, 0, 0, 4094, 4095, 7, 6, 0, 0, 4095, 4096, 7, 17, 0, 0, 4096, 4097, 7, 12, 0, 0, 4097, 750, 1, 0, 0, 0, 4098, 4099, 7, 27, 0, 0, 4099, 4100, 7, 5, 0, 0, 4100, 4101, 7, 6, 0, 0, 4101, 4102, 7, 17, 0, 0, 4102, 4103, 7, 12, 0, 0, 4103, 4104, 7, 5, 0, 0, 4104, 4105, 7, 16, 0, 0, 4105, 4106, 7, 10, 0, 0, 4106, 752, 1, 0, 0, 0, 4107, 4108, 7, 27, 0, 0, 4108, 4109, 7, 5, 0, 0, 4109, 4110, 7, 6, 0, 0, 4110, 4111, 7, 17, 0, 0, 4111, 4112, 7, 12, 0, 0, 4112, 4113, 7, 5, 0, 0, 4113, 4114, 7, 16, 0, 0, 4114, 4115, 7, 19, 0, 0, 4115, 4116, 7, 13, 0, 0, 4116, 754, 1, 0, 0, 0, 4117, 4118, 7, 27, 0, 0, 4118, 4119, 7, 5, 0, 0, 4119, 4120, 7, 13, 0, 0, 4120, 4121, 7, 8, 0, 0, 4121, 4122, 7, 17, 0, 0, 4122, 4123, 7, 7, 0, 0, 4123, 4124, 7, 23, 0, 0, 4124, 756, 1, 0, 0, 0, 4125, 4126, 7, 27, 0, 0, 4126, 4127, 7, 10, 0, 0, 4127, 4128, 7, 13, 0, 0, 4128, 4129, 7, 9, 0, 0, 4129, 4130, 7, 17, 0, 0, 4130, 4131, 7, 19, 0, 0, 4131, 4132, 7, 7, 0, 0, 4132, 758, 1, 0, 0, 0, 4133, 4134, 7, 27, 0, 0, 4134, 4135, 7, 17, 0, 0, 4135, 4136, 7, 10, 0, 0, 4136, 4137, 7, 28, 0, 0, 4137, 760, 1, 0, 0, 0, 4138, 4139, 7, 27, 0, 0, 4139, 4140, 7, 19, 0, 0, 4140, 4141, 7, 6, 0, 0, 4141, 4142, 7, 5, 0, 0, 4142, 4143, 7, 16, 0, 0, 4143, 4144, 7, 17, 0, 0, 4144, 4145, 7, 6, 0, 0, 4145, 4146, 7, 10, 0, 0, 4146, 762, 1, 0, 0, 0, 4147, 4148, 7, 28, 0, 0, 4148, 4149, 7, 20, 0, 0, 4149, 4150, 7, 17, 0, 0, 4150, 4151, 7, 16, 0, 0, 4151, 4152, 7, 10, 0, 0, 4152, 4153, 7, 9, 0, 0, 4153, 4154, 7, 24, 0, 0, 4154, 4155, 7, 5, 0, 0, 4155, 4156, 7, 14, 0, 0, 4156, 4157, 7, 10, 0, 0, 4157, 764, 1, 0, 0, 0, 4158, 4159, 7, 28, 0, 0, 4159, 4160, 7, 17, 0, 0, 4160, 4161, 7, 16, 0, 0, 4161, 4162, 7, 20, 0, 0, 4162, 4163, 7, 19, 0, 0, 4163, 4164, 7, 22, 0, 0, 4164, 4165, 7, 16, 0, 0, 4165, 766, 1, 0, 0, 0, 4166, 4167, 7, 28, 0, 0, 4167, 4168, 7, 19, 0, 0, 4168, 4169, 7, 13, 0, 0, 4169, 4170, 7, 21, 0, 0, 4170, 768, 1, 0, 0, 0, 4171, 4172, 7, 28, 0, 0, 4172, 4173, 7, 13, 0, 0, 4173, 4174, 7, 5, 0, 0, 4174, 4175, 7, 24, 0, 0, 4175, 4176, 7, 24, 0, 0, 4176, 4177, 7, 10, 0, 0, 4177, 4178, 7, 13, 0, 0, 4178, 770, 1, 0, 0, 0, 4179, 4180, 7, 28, 0, 0, 4180, 4181, 7, 13, 0, 0, 4181, 4182, 7, 17, 0, 0, 4182, 4183, 7, 16, 0, 0, 4183, 4184, 7, 10, 0, 0, 4184, 772, 1, 0, 0, 0, 4185, 4186, 7, 26, 0, 0, 4186, 4187, 7, 15, 0, 0, 4187, 4188, 7, 6, 0, 0, 4188, 774, 1, 0, 0, 0, 4189, 4190, 7, 8, 0, 0, 4190, 4191, 7, 10, 0, 0, 4191, 4192, 7, 5, 0, 0, 4192, 4193, 7, 13, 0, 0, 4193, 776, 1, 0, 0, 0, 4194, 4195, 7, 8, 0, 0, 4195, 4196, 7, 10, 0, 0, 4196, 4197, 7, 9, 0, 0, 4197, 778, 1, 0, 0, 0, 4198, 4199, 7, 11, 0, 0, 4199, 4200, 7, 19, 0, 0, 4200, 4201, 7, 7, 0, 0, 4201, 4202, 7, 10, 0, 0, 4202, 780, 1, 0, 0, 0, 4203, 4204, 7, 18, 0, 0, 4204, 4205, 7, 10, 0, 0, 4205, 4206, 7, 16, 0, 0, 4206, 4207, 7, 28, 0, 0, 4207, 4208, 7, 10, 0, 0, 4208, 4209, 7, 10, 0, 0, 4209, 4210, 7, 7, 0, 0, 4210, 782, 1, 0, 0, 0, 4211, 4212, 7, 18, 0, 0, 4212, 4213, 7, 17, 0, 0, 4213, 4214, 7, 23, 0, 0, 4214, 4215, 7, 17, 0, 0, 4215, 4216, 7, 7, 0, 0, 4216, 4217, 7, 16, 0, 0, 4217, 784, 1, 0, 0, 0, 4218, 4219, 7, 18, 0, 0, 4219, 4220, 7, 17, 0, 0, 4220, 4221, 7, 16, 0, 0, 4221, 786, 1, 0, 0, 0, 4222, 4223, 7, 18, 0, 0, 4223, 4224, 7, 19, 0, 0, 4224, 4225, 7, 19, 0, 0, 4225, 4226, 7, 6, 0, 0, 4226, 4227, 7, 10, 0, 0, 4227, 4228, 7, 5, 0, 0, 4228, 4229, 7, 7, 0, 0, 4229, 788, 1, 0, 0, 0, 4230, 4231, 7, 14, 0, 0, 4231, 4232, 7, 20, 0, 0, 4232, 4233, 7, 5, 0, 0, 4233, 4234, 7, 13, 0, 0, 4234, 790, 1, 0, 0, 0, 4235, 4236, 7, 14, 0, 0, 4236, 4237, 7, 20, 0, 0, 4237, 4238, 7, 5, 0, 0, 4238, 4239, 7, 13, 0, 0, 4239, 4240, 7, 5, 0, 0, 4240, 4241, 7, 14, 0, 0, 4241, 4242, 7, 16, 0, 0, 4242, 4243, 7, 10, 0, 0, 4243, 4244, 7, 13, 0, 0, 4244, 792, 1, 0, 0, 0, 4245, 4246, 7, 14, 0, 0, 4246, 4247, 7, 19, 0, 0, 4247, 4248, 7, 5, 0, 0, 4248, 4249, 7, 6, 0, 0, 4249, 4250, 7, 10, 0, 0, 4250, 4251, 7, 9, 0, 0, 4251, 4252, 7, 14, 0, 0, 4252, 4253, 7, 10, 0, 0, 4253, 794, 1, 0, 0, 0, 4254, 4255, 7, 12, 0, 0, 4255, 4256, 7, 10, 0, 0, 4256, 4257, 7, 14, 0, 0, 4257, 796, 1, 0, 0, 0, 4258, 4259, 7, 12, 0, 0, 4259, 4260, 7, 10, 0, 0, 4260, 4261, 7, 14, 0, 0, 4261, 4262, 7, 17, 0, 0, 4262, 4263, 7, 15, 0, 0, 4263, 4264, 7, 5, 0, 0, 4264, 4265, 7, 6, 0, 0, 4265, 798, 1, 0, 0, 0, 4266, 4267, 7, 10, 0, 0, 4267, 4268, 7, 26, 0, 0, 4268, 4269, 7, 17, 0, 0, 4269, 4270, 7, 9, 0, 0, 4270, 4271, 7, 16, 0, 0, 4271, 4272, 7, 9, 0, 0, 4272, 800, 1, 0, 0, 0, 4273, 4274, 7, 10, 0, 0, 4274, 4275, 7, 26, 0, 0, 4275, 4276, 7, 16, 0, 0, 4276, 4277, 7, 13, 0, 0, 4277, 4278, 7, 5, 0, 0, 4278, 4279, 7, 14, 0, 0, 4279, 4280, 7, 16, 0, 0, 4280, 802, 1, 0, 0, 0, 4281, 4282, 7, 25, 0, 0, 4282, 4283, 7, 6, 0, 0, 4283, 4284, 7, 19, 0, 0, 4284, 4285, 7, 5, 0, 0, 4285, 4286, 7, 16, 0, 0, 4286, 804, 1, 0, 0, 0, 4287, 4288, 7, 23, 0, 0, 4288, 4289, 7, 13, 0, 0, 4289, 4290, 7, 10, 0, 0, 4290, 4291, 7, 5, 0, 0, 4291, 4292, 7, 16, 0, 0, 4292, 4293, 7, 10, 0, 0, 4293, 4294, 7, 9, 0, 0, 4294, 4295, 7, 16, 0, 0, 4295, 806, 1, 0, 0, 0, 4296, 4297, 7, 17, 0, 0, 4297, 4298, 7, 7, 0, 0, 4298, 4299, 7, 19, 0, 0, 4299, 4300, 7, 22, 0, 0, 4300, 4301, 7, 16, 0, 0, 4301, 808, 1, 0, 0, 0, 4302, 4303, 7, 17, 0, 0, 4303, 4304, 7, 7, 0, 0, 4304, 4305, 7, 16, 0, 0, 4305, 810, 1, 0, 0, 0, 4306, 4307, 7, 17, 0, 0, 4307, 4308, 7, 7, 0, 0, 4308, 4309, 7, 16, 0, 0, 4309, 4310, 7, 10, 0, 0, 4310, 4311, 7, 23, 0, 0, 4311, 4312, 7, 10, 0, 0, 4312, 4313, 7, 13, 0, 0, 4313, 812, 1, 0, 0, 0, 4314, 4315, 7, 17, 0, 0, 4315, 4316, 7, 7, 0, 0, 4316, 4317, 7, 16, 0, 0, 4317, 4318, 7, 10, 0, 0, 4318, 4319, 7, 13, 0, 0, 4319, 4320, 7, 27, 0, 0, 4320, 4321, 7, 5, 0, 0, 4321, 4322, 7, 6, 0, 0, 4322, 814, 1, 0, 0, 0, 4323, 4324, 7, 6, 0, 0, 4324, 4325, 7, 10, 0, 0, 4325, 4326, 7, 5, 0, 0, 4326, 4327, 7, 9, 0, 0, 4327, 4328, 7, 16, 0, 0, 4328, 816, 1, 0, 0, 0, 4329, 4330, 7, 7, 0, 0, 4330, 4331, 7, 5, 0, 0, 4331, 4332, 7, 16, 0, 0, 4332, 4333, 7, 17, 0, 0, 4333, 4334, 7, 19, 0, 0, 4334, 4335, 7, 7, 0, 0, 4335, 4336, 7, 5, 0, 0, 4336, 4337, 7, 6, 0, 0, 4337, 818, 1, 0, 0, 0, 4338, 4339, 7, 7, 0, 0, 4339, 4340, 7, 14, 0, 0, 4340, 4341, 7, 20, 0, 0, 4341, 4342, 7, 5, 0, 0, 4342, 4343, 7, 13, 0, 0, 4343, 820, 1, 0, 0, 0, 4344, 4345, 7, 7, 0, 0, 4345, 4346, 7, 19, 0, 0, 4346, 4347, 7, 7, 0, 0, 4347, 4348, 7, 10, 0, 0, 4348, 822, 1, 0, 0, 0, 4349, 4350, 7, 7, 0, 0, 4350, 4351, 7, 22, 0, 0, 4351, 4352, 7, 6, 0, 0, 4352, 4353, 7, 6, 0, 0, 4353, 4354, 7, 17, 0, 0, 4354, 4355, 7, 25, 0, 0, 4355, 824, 1, 0, 0, 0, 4356, 4357, 7, 7, 0, 0, 4357, 4358, 7, 22, 0, 0, 4358, 4359, 7, 15, 0, 0, 4359, 4360, 7, 10, 0, 0, 4360, 4361, 7, 13, 0, 0, 4361, 4362, 7, 17, 0, 0, 4362, 4363, 7, 14, 0, 0, 4363, 826, 1, 0, 0, 0, 4364, 4365, 7, 19, 0, 0, 4365, 4366, 7, 27, 0, 0, 4366, 4367, 7, 10, 0, 0, 4367, 4368, 7, 13, 0, 0, 4368, 4369, 7, 6, 0, 0, 4369, 4370, 7, 5, 0, 0, 4370, 4371, 7, 8, 0, 0, 4371, 828, 1, 0, 0, 0, 4372, 4373, 7, 24, 0, 0, 4373, 4374, 7, 19, 0, 0, 4374, 4375, 7, 9, 0, 0, 4375, 4376, 7, 17, 0, 0, 4376, 4377, 7, 16, 0, 0, 4377, 4378, 7, 17, 0, 0, 4378, 4379, 7, 19, 0, 0, 4379, 4380, 7, 7, 0, 0, 4380, 830, 1, 0, 0, 0, 4381, 4382, 7, 24, 0, 0, 4382, 4383, 7, 13, 0, 0, 4383, 4384, 7, 10, 0, 0, 4384, 4385, 7, 14, 0, 0, 4385, 4386, 7, 17, 0, 0, 4386, 4387, 7, 9, 0, 0, 4387, 4388, 7, 17, 0, 0, 4388, 4389, 7, 19, 0, 0, 4389, 4390, 7, 7, 0, 0, 4390, 832, 1, 0, 0, 0, 4391, 4392, 7, 13, 0, 0, 4392, 4393, 7, 10, 0, 0, 4393, 4394, 7, 5, 0, 0, 4394, 4395, 7, 6, 0, 0, 4395, 834, 1, 0, 0, 0, 4396, 4397, 7, 13, 0, 0, 4397, 4398, 7, 19, 0, 0, 4398, 4399, 7, 28, 0, 0, 4399, 836, 1, 0, 0, 0, 4400, 4401, 7, 9, 0, 0, 4401, 4402, 7, 10, 0, 0, 4402, 4403, 7, 16, 0, 0, 4403, 4404, 7, 19, 0, 0, 4404, 4405, 7, 25, 0, 0, 4405, 838, 1, 0, 0, 0, 4406, 4407, 7, 9, 0, 0, 4407, 4408, 7, 15, 0, 0, 4408, 4409, 7, 5, 0, 0, 4409, 4410, 7, 6, 0, 0, 4410, 4411, 7, 6, 0, 0, 4411, 4412, 7, 17, 0, 0, 4412, 4413, 7, 7, 0, 0, 4413, 4414, 7, 16, 0, 0, 4414, 840, 1, 0, 0, 0, 4415, 4416, 7, 9, 0, 0, 4416, 4417, 7, 22, 0, 0, 4417, 4418, 7, 18, 0, 0, 4418, 4419, 7, 9, 0, 0, 4419, 4420, 7, 16, 0, 0, 4420, 4421, 7, 13, 0, 0, 4421, 4422, 7, 17, 0, 0, 4422, 4423, 7, 7, 0, 0, 4423, 4424, 7, 23, 0, 0, 4424, 842, 1, 0, 0, 0, 4425, 4426, 7, 16, 0, 0, 4426, 4427, 7, 17, 0, 0, 4427, 4428, 7, 15, 0, 0, 4428, 4429, 7, 10, 0, 0, 4429, 844, 1, 0, 0, 0, 4430, 4431, 7, 16, 0, 0, 4431, 4432, 7, 17, 0, 0, 4432, 4433, 7, 15, 0, 0, 4433, 4434, 7, 10, 0, 0, 4434, 4435, 7, 9, 0, 0, 4435, 4436, 7, 16, 0, 0, 4436, 4437, 7, 5, 0, 0, 4437, 4438, 7, 15, 0, 0, 4438, 4439, 7, 24, 0, 0, 4439, 846, 1, 0, 0, 0, 4440, 4441, 7, 16, 0, 0, 4441, 4442, 7, 13, 0, 0, 4442, 4443, 7, 10, 0, 0, 4443, 4444, 7, 5, 0, 0, 4444, 4445, 7, 16, 0, 0, 4445, 848, 1, 0, 0, 0, 4446, 4447, 7, 16, 0, 0, 4447, 4448, 7, 13, 0, 0, 4448, 4449, 7, 17, 0, 0, 4449, 4450, 7, 15, 0, 0, 4450, 850, 1, 0, 0, 0, 4451, 4452, 7, 27, 0, 0, 4452, 4453, 7, 5, 0, 0, 4453, 4454, 7, 6, 0, 0, 4454, 4455, 7, 22, 0, 0, 4455, 4456, 7, 10, 0, 0, 4456, 4457, 7, 9, 0, 0, 4457, 852, 1, 0, 0, 0, 4458, 4459, 7, 27, 0, 0, 4459, 4460, 7, 5, 0, 0, 4460, 4461, 7, 13, 0, 0, 4461, 4462, 7, 14, 0, 0, 4462, 4463, 7, 20, 0, 0, 4463, 4464, 7, 5, 0, 0, 4464, 4465, 7, 13, 0, 0, 4465, 854, 1, 0, 0, 0, 4466, 4467, 7, 26, 0, 0, 4467, 4468, 7, 15, 0, 0, 4468, 4469, 7, 6, 0, 0, 4469, 4470, 7, 5, 0, 0, 4470, 4471, 7, 16, 0, 0, 4471, 4472, 7, 16, 0, 0, 4472, 4473, 7, 13, 0, 0, 4473, 4474, 7, 17, 0, 0, 4474, 4475, 7, 18, 0, 0, 4475, 4476, 7, 22, 0, 0, 4476, 4477, 7, 16, 0, 0, 4477, 4478, 7, 10, 0, 0, 4478, 4479, 7, 9, 0, 0, 4479, 856, 1, 0, 0, 0, 4480, 4481, 7, 26, 0, 0, 4481, 4482, 7, 15, 0, 0, 4482, 4483, 7, 6, 0, 0, 4483, 4484, 7, 14, 0, 0, 4484, 4485, 7, 19, 0, 0, 4485, 4486, 7, 15, 0, 0, 4486, 4487, 7, 15, 0, 0, 4487, 4488, 7, 10, 0, 0, 4488, 4489, 7, 7, 0, 0, 4489, 4490, 7, 16, 0, 0, 4490, 858, 1, 0, 0, 0, 4491, 4492, 7, 26, 0, 0, 4492, 4493, 7, 15, 0, 0, 4493, 4494, 7, 6, 0, 0, 4494, 4495, 7, 5, 0, 0, 4495, 4496, 7, 23, 0, 0, 4496, 4497, 7, 23, 0, 0, 4497, 860, 1, 0, 0, 0, 4498, 4499, 7, 26, 0, 0, 4499, 4500, 7, 15, 0, 0, 4500, 4501, 7, 6, 0, 0, 4501, 4502, 5, 95, 0, 0, 4502, 4503, 7, 17, 0, 0, 4503, 4504, 7, 9, 0, 0, 4504, 4505, 5, 95, 0, 0, 4505, 4506, 7, 28, 0, 0, 4506, 4507, 7, 10, 0, 0, 4507, 4508, 7, 6, 0, 0, 4508, 4509, 7, 6, 0, 0, 4509, 4510, 5, 95, 0, 0, 4510, 4511, 7, 25, 0, 0, 4511, 4512, 7, 19, 0, 0, 4512, 4513, 7, 13, 0, 0, 4513, 4514, 7, 15, 0, 0, 4514, 4515, 7, 10, 0, 0, 4515, 4516, 7, 12, 0, 0, 4516, 862, 1, 0, 0, 0, 4517, 4518, 7, 26, 0, 0, 4518, 4519, 7, 15, 0, 0, 4519, 4520, 7, 6, 0, 0, 4520, 4521, 5, 95, 0, 0, 4521, 4522, 7, 17, 0, 0, 4522, 4523, 7, 9, 0, 0, 4523, 4524, 5, 95, 0, 0, 4524, 4525, 7, 28, 0, 0, 4525, 4526, 7, 10, 0, 0, 4526, 4527, 7, 6, 0, 0, 4527, 4528, 7, 6, 0, 0, 4528, 4529, 5, 95, 0, 0, 4529, 4530, 7, 25, 0, 0, 4530, 4531, 7, 19, 0, 0, 4531, 4532, 7, 13, 0, 0, 4532, 4533, 7, 15, 0, 0, 4533, 4534, 7, 10, 0, 0, 4534, 4535, 7, 12, 0, 0, 4535, 4536, 5, 95, 0, 0, 4536, 4537, 7, 12, 0, 0, 4537, 4538, 7, 19, 0, 0, 4538, 4539, 7, 14, 0, 0, 4539, 4540, 7, 22, 0, 0, 4540, 4541, 7, 15, 0, 0, 4541, 4542, 7, 10, 0, 0, 4542, 4543, 7, 7, 0, 0, 4543, 4544, 7, 16, 0, 0, 4544, 864, 1, 0, 0, 0, 4545, 4546, 7, 26, 0, 0, 4546, 4547, 7, 15, 0, 0, 4547, 4548, 7, 6, 0, 0, 4548, 4549, 5, 95, 0, 0, 4549, 4550, 7, 17, 0, 0, 4550, 4551, 7, 9, 0, 0, 4551, 4552, 5, 95, 0, 0, 4552, 4553, 7, 28, 0, 0, 4553, 4554, 7, 10, 0, 0, 4554, 4555, 7, 6, 0, 0, 4555, 4556, 7, 6, 0, 0, 4556, 4557, 5, 95, 0, 0, 4557, 4558, 7, 25, 0, 0, 4558, 4559, 7, 19, 0, 0, 4559, 4560, 7, 13, 0, 0, 4560, 4561, 7, 15, 0, 0, 4561, 4562, 7, 10, 0, 0, 4562, 4563, 7, 12, 0, 0, 4563, 4564, 5, 95, 0, 0, 4564, 4565, 7, 14, 0, 0, 4565, 4566, 7, 19, 0, 0, 4566, 4567, 7, 7, 0, 0, 4567, 4568, 7, 16, 0, 0, 4568, 4569, 7, 10, 0, 0, 4569, 4570, 7, 7, 0, 0, 4570, 4571, 7, 16, 0, 0, 4571, 866, 1, 0, 0, 0, 4572, 4573, 7, 26, 0, 0, 4573, 4574, 7, 24, 0, 0, 4574, 4575, 7, 5, 0, 0, 4575, 4576, 7, 16, 0, 0, 4576, 4577, 7, 20, 0, 0, 4577, 868, 1, 0, 0, 0, 4578, 4579, 7, 26, 0, 0, 4579, 4580, 7, 24, 0, 0, 4580, 4581, 7, 5, 0, 0, 4581, 4582, 7, 16, 0, 0, 4582, 4583, 7, 20, 0, 0, 4583, 4584, 5, 95, 0, 0, 4584, 4585, 7, 10, 0, 0, 4585, 4586, 7, 26, 0, 0, 4586, 4587, 7, 17, 0, 0, 4587, 4588, 7, 9, 0, 0, 4588, 4589, 7, 16, 0, 0, 4589, 4590, 7, 9, 0, 0, 4590, 870, 1, 0, 0, 0, 4591, 4592, 7, 26, 0, 0, 4592, 4593, 7, 15, 0, 0, 4593, 4594, 7, 6, 0, 0, 4594, 4595, 7, 14, 0, 0, 4595, 4596, 7, 19, 0, 0, 4596, 4597, 7, 7, 0, 0, 4597, 4598, 7, 14, 0, 0, 4598, 4599, 7, 5, 0, 0, 4599, 4600, 7, 16, 0, 0, 4600, 872, 1, 0, 0, 0, 4601, 4602, 7, 26, 0, 0, 4602, 4603, 7, 15, 0, 0, 4603, 4604, 7, 6, 0, 0, 4604, 4605, 7, 10, 0, 0, 4605, 4606, 7, 6, 0, 0, 4606, 4607, 7, 10, 0, 0, 4607, 4608, 7, 15, 0, 0, 4608, 4609, 7, 10, 0, 0, 4609, 4610, 7, 7, 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, 10, 0, 0, 4616, 4617, 7, 26, 0, 0, 4617, 4618, 7, 17, 0, 0, 4618, 4619, 7, 9, 0, 0, 4619, 4620, 7, 16, 0, 0, 4620, 4621, 7, 9, 0, 0, 4621, 876, 1, 0, 0, 0, 4622, 4623, 7, 26, 0, 0, 4623, 4624, 7, 15, 0, 0, 4624, 4625, 7, 6, 0, 0, 4625, 4626, 7, 25, 0, 0, 4626, 4627, 7, 19, 0, 0, 4627, 4628, 7, 13, 0, 0, 4628, 4629, 7, 10, 0, 0, 4629, 4630, 7, 9, 0, 0, 4630, 4631, 7, 16, 0, 0, 4631, 878, 1, 0, 0, 0, 4632, 4633, 7, 26, 0, 0, 4633, 4634, 7, 15, 0, 0, 4634, 4635, 7, 6, 0, 0, 4635, 4636, 7, 24, 0, 0, 4636, 4637, 7, 5, 0, 0, 4637, 4638, 7, 13, 0, 0, 4638, 4639, 7, 9, 0, 0, 4639, 4640, 7, 10, 0, 0, 4640, 880, 1, 0, 0, 0, 4641, 4642, 7, 26, 0, 0, 4642, 4643, 7, 15, 0, 0, 4643, 4644, 7, 6, 0, 0, 4644, 4645, 7, 24, 0, 0, 4645, 4646, 7, 17, 0, 0, 4646, 882, 1, 0, 0, 0, 4647, 4648, 7, 26, 0, 0, 4648, 4649, 7, 15, 0, 0, 4649, 4650, 7, 6, 0, 0, 4650, 4651, 7, 13, 0, 0, 4651, 4652, 7, 19, 0, 0, 4652, 4653, 7, 19, 0, 0, 4653, 4654, 7, 16, 0, 0, 4654, 884, 1, 0, 0, 0, 4655, 4656, 7, 26, 0, 0, 4656, 4657, 7, 15, 0, 0, 4657, 4658, 7, 6, 0, 0, 4658, 4659, 7, 9, 0, 0, 4659, 4660, 7, 10, 0, 0, 4660, 4661, 7, 13, 0, 0, 4661, 4662, 7, 17, 0, 0, 4662, 4663, 7, 5, 0, 0, 4663, 4664, 7, 6, 0, 0, 4664, 4665, 7, 17, 0, 0, 4665, 4666, 7, 11, 0, 0, 4666, 4667, 7, 10, 0, 0, 4667, 886, 1, 0, 0, 0, 4668, 4669, 7, 14, 0, 0, 4669, 4670, 7, 5, 0, 0, 4670, 4671, 7, 6, 0, 0, 4671, 4672, 7, 6, 0, 0, 4672, 888, 1, 0, 0, 0, 4673, 4674, 7, 14, 0, 0, 4674, 4675, 7, 22, 0, 0, 4675, 4676, 7, 13, 0, 0, 4676, 4677, 7, 13, 0, 0, 4677, 4678, 7, 10, 0, 0, 4678, 4679, 7, 7, 0, 0, 4679, 4680, 7, 16, 0, 0, 4680, 890, 1, 0, 0, 0, 4681, 4682, 7, 5, 0, 0, 4682, 4683, 7, 16, 0, 0, 4683, 4684, 7, 16, 0, 0, 4684, 4685, 7, 5, 0, 0, 4685, 4686, 7, 14, 0, 0, 4686, 4687, 7, 20, 0, 0, 4687, 892, 1, 0, 0, 0, 4688, 4689, 7, 12, 0, 0, 4689, 4690, 7, 10, 0, 0, 4690, 4691, 7, 16, 0, 0, 4691, 4692, 7, 5, 0, 0, 4692, 4693, 7, 14, 0, 0, 4693, 4694, 7, 20, 0, 0, 4694, 894, 1, 0, 0, 0, 4695, 4696, 7, 10, 0, 0, 4696, 4697, 7, 26, 0, 0, 4697, 4698, 7, 24, 0, 0, 4698, 4699, 7, 13, 0, 0, 4699, 4700, 7, 10, 0, 0, 4700, 4701, 7, 9, 0, 0, 4701, 4702, 7, 9, 0, 0, 4702, 4703, 7, 17, 0, 0, 4703, 4704, 7, 19, 0, 0, 4704, 4705, 7, 7, 0, 0, 4705, 896, 1, 0, 0, 0, 4706, 4707, 7, 23, 0, 0, 4707, 4708, 7, 10, 0, 0, 4708, 4709, 7, 7, 0, 0, 4709, 4710, 7, 10, 0, 0, 4710, 4711, 7, 13, 0, 0, 4711, 4712, 7, 5, 0, 0, 4712, 4713, 7, 16, 0, 0, 4713, 4714, 7, 10, 0, 0, 4714, 4715, 7, 12, 0, 0, 4715, 898, 1, 0, 0, 0, 4716, 4717, 7, 6, 0, 0, 4717, 4718, 7, 19, 0, 0, 4718, 4719, 7, 23, 0, 0, 4719, 4720, 7, 23, 0, 0, 4720, 4721, 7, 10, 0, 0, 4721, 4722, 7, 12, 0, 0, 4722, 900, 1, 0, 0, 0, 4723, 4724, 7, 9, 0, 0, 4724, 4725, 7, 16, 0, 0, 4725, 4726, 7, 19, 0, 0, 4726, 4727, 7, 13, 0, 0, 4727, 4728, 7, 10, 0, 0, 4728, 4729, 7, 12, 0, 0, 4729, 902, 1, 0, 0, 0, 4730, 4731, 7, 17, 0, 0, 4731, 4732, 7, 7, 0, 0, 4732, 4733, 7, 14, 0, 0, 4733, 4734, 7, 6, 0, 0, 4734, 4735, 7, 22, 0, 0, 4735, 4736, 7, 12, 0, 0, 4736, 4737, 7, 10, 0, 0, 4737, 904, 1, 0, 0, 0, 4738, 4739, 7, 13, 0, 0, 4739, 4740, 7, 19, 0, 0, 4740, 4741, 7, 22, 0, 0, 4741, 4742, 7, 16, 0, 0, 4742, 4743, 7, 17, 0, 0, 4743, 4744, 7, 7, 0, 0, 4744, 4745, 7, 10, 0, 0, 4745, 906, 1, 0, 0, 0, 4746, 4747, 7, 16, 0, 0, 4747, 4748, 7, 13, 0, 0, 4748, 4749, 7, 5, 0, 0, 4749, 4750, 7, 7, 0, 0, 4750, 4751, 7, 9, 0, 0, 4751, 4752, 7, 25, 0, 0, 4752, 4753, 7, 19, 0, 0, 4753, 4754, 7, 13, 0, 0, 4754, 4755, 7, 15, 0, 0, 4755, 908, 1, 0, 0, 0, 4756, 4757, 7, 17, 0, 0, 4757, 4758, 7, 15, 0, 0, 4758, 4759, 7, 24, 0, 0, 4759, 4760, 7, 19, 0, 0, 4760, 4761, 7, 13, 0, 0, 4761, 4762, 7, 16, 0, 0, 4762, 910, 1, 0, 0, 0, 4763, 4764, 7, 24, 0, 0, 4764, 4765, 7, 19, 0, 0, 4765, 4766, 7, 6, 0, 0, 4766, 4767, 7, 17, 0, 0, 4767, 4768, 7, 14, 0, 0, 4768, 4769, 7, 8, 0, 0, 4769, 912, 1, 0, 0, 0, 4770, 4771, 7, 15, 0, 0, 4771, 4772, 7, 10, 0, 0, 4772, 4773, 7, 16, 0, 0, 4773, 4774, 7, 20, 0, 0, 4774, 4775, 7, 19, 0, 0, 4775, 4776, 7, 12, 0, 0, 4776, 914, 1, 0, 0, 0, 4777, 4778, 7, 13, 0, 0, 4778, 4779, 7, 10, 0, 0, 4779, 4780, 7, 25, 0, 0, 4780, 4781, 7, 10, 0, 0, 4781, 4782, 7, 13, 0, 0, 4782, 4783, 7, 10, 0, 0, 4783, 4784, 7, 7, 0, 0, 4784, 4785, 7, 14, 0, 0, 4785, 4786, 7, 17, 0, 0, 4786, 4787, 7, 7, 0, 0, 4787, 4788, 7, 23, 0, 0, 4788, 916, 1, 0, 0, 0, 4789, 4790, 7, 7, 0, 0, 4790, 4791, 7, 10, 0, 0, 4791, 4792, 7, 28, 0, 0, 4792, 918, 1, 0, 0, 0, 4793, 4794, 7, 19, 0, 0, 4794, 4795, 7, 6, 0, 0, 4795, 4796, 7, 12, 0, 0, 4796, 920, 1, 0, 0, 0, 4797, 4798, 7, 27, 0, 0, 4798, 4799, 7, 5, 0, 0, 4799, 4800, 7, 6, 0, 0, 4800, 4801, 7, 22, 0, 0, 4801, 4802, 7, 10, 0, 0, 4802, 922, 1, 0, 0, 0, 4803, 4804, 7, 9, 0, 0, 4804, 4805, 7, 22, 0, 0, 4805, 4806, 7, 18, 0, 0, 4806, 4807, 7, 9, 0, 0, 4807, 4808, 7, 14, 0, 0, 4808, 4809, 7, 13, 0, 0, 4809, 4810, 7, 17, 0, 0, 4810, 4811, 7, 24, 0, 0, 4811, 4812, 7, 16, 0, 0, 4812, 4813, 7, 17, 0, 0, 4813, 4814, 7, 19, 0, 0, 4814, 4815, 7, 7, 0, 0, 4815, 924, 1, 0, 0, 0, 4816, 4817, 7, 24, 0, 0, 4817, 4818, 7, 22, 0, 0, 4818, 4819, 7, 18, 0, 0, 4819, 4820, 7, 6, 0, 0, 4820, 4821, 7, 17, 0, 0, 4821, 4822, 7, 14, 0, 0, 4822, 4823, 7, 5, 0, 0, 4823, 4824, 7, 16, 0, 0, 4824, 4825, 7, 17, 0, 0, 4825, 4826, 7, 19, 0, 0, 4826, 4827, 7, 7, 0, 0, 4827, 926, 1, 0, 0, 0, 4828, 4829, 7, 19, 0, 0, 4829, 4830, 7, 22, 0, 0, 4830, 4831, 7, 16, 0, 0, 4831, 928, 1, 0, 0, 0, 4832, 4833, 7, 10, 0, 0, 4833, 4834, 7, 7, 0, 0, 4834, 4835, 7, 12, 0, 0, 4835, 930, 1, 0, 0, 0, 4836, 4837, 7, 13, 0, 0, 4837, 4838, 7, 19, 0, 0, 4838, 4839, 7, 22, 0, 0, 4839, 4840, 7, 16, 0, 0, 4840, 4841, 7, 17, 0, 0, 4841, 4842, 7, 7, 0, 0, 4842, 4843, 7, 10, 0, 0, 4843, 4844, 7, 9, 0, 0, 4844, 932, 1, 0, 0, 0, 4845, 4846, 7, 9, 0, 0, 4846, 4847, 7, 14, 0, 0, 4847, 4848, 7, 20, 0, 0, 4848, 4849, 7, 10, 0, 0, 4849, 4850, 7, 15, 0, 0, 4850, 4851, 7, 5, 0, 0, 4851, 4852, 7, 9, 0, 0, 4852, 934, 1, 0, 0, 0, 4853, 4854, 7, 24, 0, 0, 4854, 4855, 7, 13, 0, 0, 4855, 4856, 7, 19, 0, 0, 4856, 4857, 7, 14, 0, 0, 4857, 4858, 7, 10, 0, 0, 4858, 4859, 7, 12, 0, 0, 4859, 4860, 7, 22, 0, 0, 4860, 4861, 7, 13, 0, 0, 4861, 4862, 7, 10, 0, 0, 4862, 4863, 7, 9, 0, 0, 4863, 936, 1, 0, 0, 0, 4864, 4865, 7, 17, 0, 0, 4865, 4866, 7, 7, 0, 0, 4866, 4867, 7, 24, 0, 0, 4867, 4868, 7, 22, 0, 0, 4868, 4869, 7, 16, 0, 0, 4869, 938, 1, 0, 0, 0, 4870, 4871, 7, 9, 0, 0, 4871, 4872, 7, 22, 0, 0, 4872, 4873, 7, 24, 0, 0, 4873, 4874, 7, 24, 0, 0, 4874, 4875, 7, 19, 0, 0, 4875, 4876, 7, 13, 0, 0, 4876, 4877, 7, 16, 0, 0, 4877, 940, 1, 0, 0, 0, 4878, 4879, 7, 24, 0, 0, 4879, 4880, 7, 5, 0, 0, 4880, 4881, 7, 13, 0, 0, 4881, 4882, 7, 5, 0, 0, 4882, 4883, 7, 6, 0, 0, 4883, 4884, 7, 6, 0, 0, 4884, 4885, 7, 10, 0, 0, 4885, 4886, 7, 6, 0, 0, 4886, 942, 1, 0, 0, 0, 4887, 4888, 7, 9, 0, 0, 4888, 4889, 7, 29, 0, 0, 4889, 4890, 7, 6, 0, 0, 4890, 944, 1, 0, 0, 0, 4891, 4892, 7, 12, 0, 0, 4892, 4893, 7, 10, 0, 0, 4893, 4894, 7, 24, 0, 0, 4894, 4895, 7, 10, 0, 0, 4895, 4896, 7, 7, 0, 0, 4896, 4897, 7, 12, 0, 0, 4897, 4898, 7, 9, 0, 0, 4898, 946, 1, 0, 0, 0, 4899, 4900, 7, 19, 0, 0, 4900, 4901, 7, 27, 0, 0, 4901, 4902, 7, 10, 0, 0, 4902, 4903, 7, 13, 0, 0, 4903, 4904, 7, 13, 0, 0, 4904, 4905, 7, 17, 0, 0, 4905, 4906, 7, 12, 0, 0, 4906, 4907, 7, 17, 0, 0, 4907, 4908, 7, 7, 0, 0, 4908, 4909, 7, 23, 0, 0, 4909, 948, 1, 0, 0, 0, 4910, 4911, 7, 14, 0, 0, 4911, 4912, 7, 19, 0, 0, 4912, 4913, 7, 7, 0, 0, 4913, 4914, 7, 25, 0, 0, 4914, 4915, 7, 6, 0, 0, 4915, 4916, 7, 17, 0, 0, 4916, 4917, 7, 14, 0, 0, 4917, 4918, 7, 16, 0, 0, 4918, 950, 1, 0, 0, 0, 4919, 4920, 7, 9, 0, 0, 4920, 4921, 7, 21, 0, 0, 4921, 4922, 7, 17, 0, 0, 4922, 4923, 7, 24, 0, 0, 4923, 952, 1, 0, 0, 0, 4924, 4925, 7, 6, 0, 0, 4925, 4926, 7, 19, 0, 0, 4926, 4927, 7, 14, 0, 0, 4927, 4928, 7, 21, 0, 0, 4928, 4929, 7, 10, 0, 0, 4929, 4930, 7, 12, 0, 0, 4930, 954, 1, 0, 0, 0, 4931, 4932, 7, 16, 0, 0, 4932, 4933, 7, 17, 0, 0, 4933, 4934, 7, 10, 0, 0, 4934, 4935, 7, 9, 0, 0, 4935, 956, 1, 0, 0, 0, 4936, 4937, 7, 13, 0, 0, 4937, 4938, 7, 19, 0, 0, 4938, 4939, 7, 6, 0, 0, 4939, 4940, 7, 6, 0, 0, 4940, 4941, 7, 22, 0, 0, 4941, 4942, 7, 24, 0, 0, 4942, 958, 1, 0, 0, 0, 4943, 4944, 7, 14, 0, 0, 4944, 4945, 7, 22, 0, 0, 4945, 4946, 7, 18, 0, 0, 4946, 4947, 7, 10, 0, 0, 4947, 960, 1, 0, 0, 0, 4948, 4949, 7, 23, 0, 0, 4949, 4950, 7, 13, 0, 0, 4950, 4951, 7, 19, 0, 0, 4951, 4952, 7, 22, 0, 0, 4952, 4953, 7, 24, 0, 0, 4953, 4954, 7, 17, 0, 0, 4954, 4955, 7, 7, 0, 0, 4955, 4956, 7, 23, 0, 0, 4956, 962, 1, 0, 0, 0, 4957, 4958, 7, 9, 0, 0, 4958, 4959, 7, 10, 0, 0, 4959, 4960, 7, 16, 0, 0, 4960, 4961, 7, 9, 0, 0, 4961, 964, 1, 0, 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, 4968, 7, 9, 0, 0, 4968, 4969, 7, 5, 0, 0, 4969, 4970, 7, 15, 0, 0, 4970, 4971, 7, 24, 0, 0, 4971, 4972, 7, 6, 0, 0, 4972, 4973, 7, 10, 0, 0, 4973, 966, 1, 0, 0, 0, 4974, 4975, 7, 19, 0, 0, 4975, 4976, 7, 13, 0, 0, 4976, 4977, 7, 12, 0, 0, 4977, 4978, 7, 17, 0, 0, 4978, 4979, 7, 7, 0, 0, 4979, 4980, 7, 5, 0, 0, 4980, 4981, 7, 6, 0, 0, 4981, 4982, 7, 17, 0, 0, 4982, 4983, 7, 16, 0, 0, 4983, 4984, 7, 8, 0, 0, 4984, 968, 1, 0, 0, 0, 4985, 4986, 7, 26, 0, 0, 4986, 4987, 7, 15, 0, 0, 4987, 4988, 7, 6, 0, 0, 4988, 4989, 7, 16, 0, 0, 4989, 4990, 7, 5, 0, 0, 4990, 4991, 7, 18, 0, 0, 4991, 4992, 7, 6, 0, 0, 4992, 4993, 7, 10, 0, 0, 4993, 970, 1, 0, 0, 0, 4994, 4995, 7, 14, 0, 0, 4995, 4996, 7, 19, 0, 0, 4996, 4997, 7, 6, 0, 0, 4997, 4998, 7, 22, 0, 0, 4998, 4999, 7, 15, 0, 0, 4999, 5000, 7, 7, 0, 0, 5000, 5001, 7, 9, 0, 0, 5001, 972, 1, 0, 0, 0, 5002, 5003, 7, 26, 0, 0, 5003, 5004, 7, 15, 0, 0, 5004, 5005, 7, 6, 0, 0, 5005, 5006, 7, 7, 0, 0, 5006, 5007, 7, 5, 0, 0, 5007, 5008, 7, 15, 0, 0, 5008, 5009, 7, 10, 0, 0, 5009, 5010, 7, 9, 0, 0, 5010, 5011, 7, 24, 0, 0, 5011, 5012, 7, 5, 0, 0, 5012, 5013, 7, 14, 0, 0, 5013, 5014, 7, 10, 0, 0, 5014, 5015, 7, 9, 0, 0, 5015, 974, 1, 0, 0, 0, 5016, 5017, 7, 13, 0, 0, 5017, 5018, 7, 19, 0, 0, 5018, 5019, 7, 28, 0, 0, 5019, 5020, 7, 16, 0, 0, 5020, 5021, 7, 8, 0, 0, 5021, 5022, 7, 24, 0, 0, 5022, 5023, 7, 10, 0, 0, 5023, 976, 1, 0, 0, 0, 5024, 5025, 7, 7, 0, 0, 5025, 5026, 7, 19, 0, 0, 5026, 5027, 7, 13, 0, 0, 5027, 5028, 7, 15, 0, 0, 5028, 5029, 7, 5, 0, 0, 5029, 5030, 7, 6, 0, 0, 5030, 5031, 7, 17, 0, 0, 5031, 5032, 7, 11, 0, 0, 5032, 5033, 7, 10, 0, 0, 5033, 5034, 7, 12, 0, 0, 5034, 978, 1, 0, 0, 0, 5035, 5036, 7, 28, 0, 0, 5036, 5037, 7, 17, 0, 0, 5037, 5038, 7, 16, 0, 0, 5038, 5039, 7, 20, 0, 0, 5039, 5040, 7, 17, 0, 0, 5040, 5041, 7, 7, 0, 0, 5041, 980, 1, 0, 0, 0, 5042, 5043, 7, 25, 0, 0, 5043, 5044, 7, 17, 0, 0, 5044, 5045, 7, 6, 0, 0, 5045, 5046, 7, 16, 0, 0, 5046, 5047, 7, 10, 0, 0, 5047, 5048, 7, 13, 0, 0, 5048, 982, 1, 0, 0, 0, 5049, 5050, 7, 23, 0, 0, 5050, 5051, 7, 13, 0, 0, 5051, 5052, 7, 19, 0, 0, 5052, 5053, 7, 22, 0, 0, 5053, 5054, 7, 24, 0, 0, 5054, 5055, 7, 9, 0, 0, 5055, 984, 1, 0, 0, 0, 5056, 5057, 7, 19, 0, 0, 5057, 5058, 7, 16, 0, 0, 5058, 5059, 7, 20, 0, 0, 5059, 5060, 7, 10, 0, 0, 5060, 5061, 7, 13, 0, 0, 5061, 5062, 7, 9, 0, 0, 5062, 986, 1, 0, 0, 0, 5063, 5064, 7, 7, 0, 0, 5064, 5065, 7, 25, 0, 0, 5065, 5066, 7, 14, 0, 0, 5066, 988, 1, 0, 0, 0, 5067, 5068, 7, 7, 0, 0, 5068, 5069, 7, 25, 0, 0, 5069, 5070, 7, 12, 0, 0, 5070, 990, 1, 0, 0, 0, 5071, 5072, 7, 7, 0, 0, 5072, 5073, 7, 25, 0, 0, 5073, 5074, 7, 21, 0, 0, 5074, 5075, 7, 14, 0, 0, 5075, 992, 1, 0, 0, 0, 5076, 5077, 7, 7, 0, 0, 5077, 5078, 7, 25, 0, 0, 5078, 5079, 7, 21, 0, 0, 5079, 5080, 7, 12, 0, 0, 5080, 994, 1, 0, 0, 0, 5081, 5082, 7, 22, 0, 0, 5082, 5083, 7, 10, 0, 0, 5083, 5084, 7, 9, 0, 0, 5084, 5085, 7, 14, 0, 0, 5085, 5086, 7, 5, 0, 0, 5086, 5087, 7, 24, 0, 0, 5087, 5088, 7, 10, 0, 0, 5088, 996, 1, 0, 0, 0, 5089, 5090, 7, 27, 0, 0, 5090, 5091, 7, 17, 0, 0, 5091, 5092, 7, 10, 0, 0, 5092, 5093, 7, 28, 0, 0, 5093, 5094, 7, 9, 0, 0, 5094, 998, 1, 0, 0, 0, 5095, 5096, 7, 7, 0, 0, 5096, 5097, 7, 19, 0, 0, 5097, 5098, 7, 13, 0, 0, 5098, 5099, 7, 15, 0, 0, 5099, 5100, 7, 5, 0, 0, 5100, 5101, 7, 6, 0, 0, 5101, 5102, 7, 17, 0, 0, 5102, 5103, 7, 11, 0, 0, 5103, 5104, 7, 10, 0, 0, 5104, 1000, 1, 0, 0, 0, 5105, 5106, 7, 12, 0, 0, 5106, 5107, 7, 22, 0, 0, 5107, 5108, 7, 15, 0, 0, 5108, 5109, 7, 24, 0, 0, 5109, 1002, 1, 0, 0, 0, 5110, 5111, 7, 24, 0, 0, 5111, 5112, 7, 13, 0, 0, 5112, 5113, 7, 17, 0, 0, 5113, 5114, 7, 7, 0, 0, 5114, 5115, 7, 16, 0, 0, 5115, 5116, 5, 95, 0, 0, 5116, 5117, 7, 9, 0, 0, 5117, 5118, 7, 16, 0, 0, 5118, 5119, 7, 13, 0, 0, 5119, 5120, 7, 17, 0, 0, 5120, 5121, 7, 14, 0, 0, 5121, 5122, 7, 16, 0, 0, 5122, 5123, 5, 95, 0, 0, 5123, 5124, 7, 24, 0, 0, 5124, 5125, 7, 5, 0, 0, 5125, 5126, 7, 13, 0, 0, 5126, 5127, 7, 5, 0, 0, 5127, 5128, 7, 15, 0, 0, 5128, 5129, 7, 9, 0, 0, 5129, 1004, 1, 0, 0, 0, 5130, 5131, 7, 27, 0, 0, 5131, 5132, 7, 5, 0, 0, 5132, 5133, 7, 13, 0, 0, 5133, 5134, 7, 17, 0, 0, 5134, 5135, 7, 5, 0, 0, 5135, 5136, 7, 18, 0, 0, 5136, 5137, 7, 6, 0, 0, 5137, 5138, 7, 10, 0, 0, 5138, 5139, 5, 95, 0, 0, 5139, 5140, 7, 14, 0, 0, 5140, 5141, 7, 19, 0, 0, 5141, 5142, 7, 7, 0, 0, 5142, 5143, 7, 25, 0, 0, 5143, 5144, 7, 6, 0, 0, 5144, 5145, 7, 17, 0, 0, 5145, 5146, 7, 14, 0, 0, 5146, 5147, 7, 16, 0, 0, 5147, 1006, 1, 0, 0, 0, 5148, 5149, 7, 10, 0, 0, 5149, 5150, 7, 13, 0, 0, 5150, 5151, 7, 13, 0, 0, 5151, 5152, 7, 19, 0, 0, 5152, 5153, 7, 13, 0, 0, 5153, 1008, 1, 0, 0, 0, 5154, 5155, 7, 22, 0, 0, 5155, 5156, 7, 9, 0, 0, 5156, 5157, 7, 10, 0, 0, 5157, 5158, 5, 95, 0, 0, 5158, 5159, 7, 27, 0, 0, 5159, 5160, 7, 5, 0, 0, 5160, 5161, 7, 13, 0, 0, 5161, 5162, 7, 17, 0, 0, 5162, 5163, 7, 5, 0, 0, 5163, 5164, 7, 18, 0, 0, 5164, 5165, 7, 6, 0, 0, 5165, 5166, 7, 10, 0, 0, 5166, 1010, 1, 0, 0, 0, 5167, 5168, 7, 22, 0, 0, 5168, 5169, 7, 9, 0, 0, 5169, 5170, 7, 10, 0, 0, 5170, 5171, 5, 95, 0, 0, 5171, 5172, 7, 14, 0, 0, 5172, 5173, 7, 19, 0, 0, 5173, 5174, 7, 6, 0, 0, 5174, 5175, 7, 22, 0, 0, 5175, 5176, 7, 15, 0, 0, 5176, 5177, 7, 7, 0, 0, 5177, 1012, 1, 0, 0, 0, 5178, 5179, 7, 5, 0, 0, 5179, 5180, 7, 6, 0, 0, 5180, 5181, 7, 17, 0, 0, 5181, 5182, 7, 5, 0, 0, 5182, 5183, 7, 9, 0, 0, 5183, 1014, 1, 0, 0, 0, 5184, 5185, 7, 14, 0, 0, 5185, 5186, 7, 19, 0, 0, 5186, 5187, 7, 7, 0, 0, 5187, 5188, 7, 9, 0, 0, 5188, 5189, 7, 16, 0, 0, 5189, 5190, 7, 5, 0, 0, 5190, 5191, 7, 7, 0, 0, 5191, 5192, 7, 16, 0, 0, 5192, 1016, 1, 0, 0, 0, 5193, 5194, 7, 24, 0, 0, 5194, 5195, 7, 10, 0, 0, 5195, 5196, 7, 13, 0, 0, 5196, 5197, 7, 25, 0, 0, 5197, 5198, 7, 19, 0, 0, 5198, 5199, 7, 13, 0, 0, 5199, 5200, 7, 15, 0, 0, 5200, 1018, 1, 0, 0, 0, 5201, 5202, 7, 23, 0, 0, 5202, 5203, 7, 10, 0, 0, 5203, 5204, 7, 16, 0, 0, 5204, 1020, 1, 0, 0, 0, 5205, 5206, 7, 12, 0, 0, 5206, 5207, 7, 17, 0, 0, 5207, 5208, 7, 5, 0, 0, 5208, 5209, 7, 23, 0, 0, 5209, 5210, 7, 7, 0, 0, 5210, 5211, 7, 19, 0, 0, 5211, 5212, 7, 9, 0, 0, 5212, 5213, 7, 16, 0, 0, 5213, 5214, 7, 17, 0, 0, 5214, 5215, 7, 14, 0, 0, 5215, 5216, 7, 9, 0, 0, 5216, 1022, 1, 0, 0, 0, 5217, 5218, 7, 9, 0, 0, 5218, 5219, 7, 16, 0, 0, 5219, 5220, 7, 5, 0, 0, 5220, 5221, 7, 14, 0, 0, 5221, 5222, 7, 21, 0, 0, 5222, 5223, 7, 10, 0, 0, 5223, 5224, 7, 12, 0, 0, 5224, 1024, 1, 0, 0, 0, 5225, 5226, 7, 10, 0, 0, 5226, 5227, 7, 6, 0, 0, 5227, 5228, 7, 9, 0, 0, 5228, 5229, 7, 17, 0, 0, 5229, 5230, 7, 25, 0, 0, 5230, 1026, 1, 0, 0, 0, 5231, 5232, 7, 28, 0, 0, 5232, 5233, 7, 20, 0, 0, 5233, 5234, 7, 17, 0, 0, 5234, 5235, 7, 6, 0, 0, 5235, 5236, 7, 10, 0, 0, 5236, 1028, 1, 0, 0, 0, 5237, 5238, 7, 13, 0, 0, 5238, 5239, 7, 10, 0, 0, 5239, 5240, 7, 27, 0, 0, 5240, 5241, 7, 10, 0, 0, 5241, 5242, 7, 13, 0, 0, 5242, 5243, 7, 9, 0, 0, 5243, 5244, 7, 10, 0, 0, 5244, 1030, 1, 0, 0, 0, 5245, 5246, 7, 25, 0, 0, 5246, 5247, 7, 19, 0, 0, 5247, 5248, 7, 13, 0, 0, 5248, 5249, 7, 10, 0, 0, 5249, 5250, 7, 5, 0, 0, 5250, 5251, 7, 14, 0, 0, 5251, 5252, 7, 20, 0, 0, 5252, 1032, 1, 0, 0, 0, 5253, 5254, 7, 9, 0, 0, 5254, 5255, 7, 6, 0, 0, 5255, 5256, 7, 17, 0, 0, 5256, 5257, 7, 14, 0, 0, 5257, 5258, 7, 10, 0, 0, 5258, 1034, 1, 0, 0, 0, 5259, 5260, 7, 10, 0, 0, 5260, 5261, 7, 26, 0, 0, 5261, 5262, 7, 17, 0, 0, 5262, 5263, 7, 16, 0, 0, 5263, 1036, 1, 0, 0, 0, 5264, 5265, 7, 13, 0, 0, 5265, 5266, 7, 10, 0, 0, 5266, 5267, 7, 16, 0, 0, 5267, 5268, 7, 22, 0, 0, 5268, 5269, 7, 13, 0, 0, 5269, 5270, 7, 7, 0, 0, 5270, 1038, 1, 0, 0, 0, 5271, 5272, 7, 29, 0, 0, 5272, 5273, 7, 22, 0, 0, 5273, 5274, 7, 10, 0, 0, 5274, 5275, 7, 13, 0, 0, 5275, 5276, 7, 8, 0, 0, 5276, 1040, 1, 0, 0, 0, 5277, 5278, 7, 13, 0, 0, 5278, 5279, 7, 5, 0, 0, 5279, 5280, 7, 17, 0, 0, 5280, 5281, 7, 9, 0, 0, 5281, 5282, 7, 10, 0, 0, 5282, 1042, 1, 0, 0, 0, 5283, 5284, 7, 9, 0, 0, 5284, 5285, 7, 29, 0, 0, 5285, 5286, 7, 6, 0, 0, 5286, 5287, 7, 9, 0, 0, 5287, 5288, 7, 16, 0, 0, 5288, 5289, 7, 5, 0, 0, 5289, 5290, 7, 16, 0, 0, 5290, 5291, 7, 10, 0, 0, 5291, 1044, 1, 0, 0, 0, 5292, 5293, 7, 12, 0, 0, 5293, 5294, 7, 10, 0, 0, 5294, 5295, 7, 18, 0, 0, 5295, 5296, 7, 22, 0, 0, 5296, 5297, 7, 23, 0, 0, 5297, 1046, 1, 0, 0, 0, 5298, 5299, 7, 6, 0, 0, 5299, 5300, 7, 19, 0, 0, 5300, 5301, 7, 23, 0, 0, 5301, 1048, 1, 0, 0, 0, 5302, 5303, 7, 17, 0, 0, 5303, 5304, 7, 7, 0, 0, 5304, 5305, 7, 25, 0, 0, 5305, 5306, 7, 19, 0, 0, 5306, 1050, 1, 0, 0, 0, 5307, 5308, 7, 7, 0, 0, 5308, 5309, 7, 19, 0, 0, 5309, 5310, 7, 16, 0, 0, 5310, 5311, 7, 17, 0, 0, 5311, 5312, 7, 14, 0, 0, 5312, 5313, 7, 10, 0, 0, 5313, 1052, 1, 0, 0, 0, 5314, 5315, 7, 28, 0, 0, 5315, 5316, 7, 5, 0, 0, 5316, 5317, 7, 13, 0, 0, 5317, 5318, 7, 7, 0, 0, 5318, 5319, 7, 17, 0, 0, 5319, 5320, 7, 7, 0, 0, 5320, 5321, 7, 23, 0, 0, 5321, 1054, 1, 0, 0, 0, 5322, 5323, 7, 10, 0, 0, 5323, 5324, 7, 26, 0, 0, 5324, 5325, 7, 14, 0, 0, 5325, 5326, 7, 10, 0, 0, 5326, 5327, 7, 24, 0, 0, 5327, 5328, 7, 16, 0, 0, 5328, 5329, 7, 17, 0, 0, 5329, 5330, 7, 19, 0, 0, 5330, 5331, 7, 7, 0, 0, 5331, 1056, 1, 0, 0, 0, 5332, 5333, 7, 5, 0, 0, 5333, 5334, 7, 9, 0, 0, 5334, 5335, 7, 9, 0, 0, 5335, 5336, 7, 10, 0, 0, 5336, 5337, 7, 13, 0, 0, 5337, 5338, 7, 16, 0, 0, 5338, 1058, 1, 0, 0, 0, 5339, 5340, 7, 6, 0, 0, 5340, 5341, 7, 19, 0, 0, 5341, 5342, 7, 19, 0, 0, 5342, 5343, 7, 24, 0, 0, 5343, 1060, 1, 0, 0, 0, 5344, 5345, 7, 19, 0, 0, 5345, 5346, 7, 24, 0, 0, 5346, 5347, 7, 10, 0, 0, 5347, 5348, 7, 7, 0, 0, 5348, 1062, 1, 0, 0, 0, 5349, 5350, 7, 5, 0, 0, 5350, 5351, 7, 18, 0, 0, 5351, 5352, 7, 9, 0, 0, 5352, 1064, 1, 0, 0, 0, 5353, 5354, 7, 14, 0, 0, 5354, 5355, 7, 18, 0, 0, 5355, 5356, 7, 13, 0, 0, 5356, 5357, 7, 16, 0, 0, 5357, 1066, 1, 0, 0, 0, 5358, 5359, 7, 14, 0, 0, 5359, 5360, 7, 10, 0, 0, 5360, 5361, 7, 17, 0, 0, 5361, 5362, 7, 6, 0, 0, 5362, 1068, 1, 0, 0, 0, 5363, 5364, 7, 14, 0, 0, 5364, 5365, 7, 10, 0, 0, 5365, 5366, 7, 17, 0, 0, 5366, 5367, 7, 6, 0, 0, 5367, 5368, 7, 17, 0, 0, 5368, 5369, 7, 7, 0, 0, 5369, 5370, 7, 23, 0, 0, 5370, 1070, 1, 0, 0, 0, 5371, 5372, 7, 12, 0, 0, 5372, 5373, 7, 10, 0, 0, 5373, 5374, 7, 23, 0, 0, 5374, 5375, 7, 13, 0, 0, 5375, 5376, 7, 10, 0, 0, 5376, 5377, 7, 10, 0, 0, 5377, 5378, 7, 9, 0, 0, 5378, 1072, 1, 0, 0, 0, 5379, 5380, 7, 12, 0, 0, 5380, 5381, 7, 17, 0, 0, 5381, 5382, 7, 27, 0, 0, 5382, 1074, 1, 0, 0, 0, 5383, 5384, 7, 10, 0, 0, 5384, 5385, 7, 26, 0, 0, 5385, 5386, 7, 24, 0, 0, 5386, 1076, 1, 0, 0, 0, 5387, 5388, 7, 25, 0, 0, 5388, 5389, 7, 5, 0, 0, 5389, 5390, 7, 14, 0, 0, 5390, 5391, 7, 16, 0, 0, 5391, 5392, 7, 19, 0, 0, 5392, 5393, 7, 13, 0, 0, 5393, 5394, 7, 17, 0, 0, 5394, 5395, 7, 5, 0, 0, 5395, 5396, 7, 6, 0, 0, 5396, 1078, 1, 0, 0, 0, 5397, 5398, 7, 25, 0, 0, 5398, 5399, 7, 6, 0, 0, 5399, 5400, 7, 19, 0, 0, 5400, 5401, 7, 19, 0, 0, 5401, 5402, 7, 13, 0, 0, 5402, 1080, 1, 0, 0, 0, 5403, 5404, 7, 23, 0, 0, 5404, 5405, 7, 14, 0, 0, 5405, 5406, 7, 12, 0, 0, 5406, 1082, 1, 0, 0, 0, 5407, 5408, 7, 6, 0, 0, 5408, 5409, 7, 14, 0, 0, 5409, 5410, 7, 15, 0, 0, 5410, 1084, 1, 0, 0, 0, 5411, 5412, 7, 6, 0, 0, 5412, 5413, 7, 7, 0, 0, 5413, 1086, 1, 0, 0, 0, 5414, 5415, 7, 6, 0, 0, 5415, 5416, 7, 19, 0, 0, 5416, 5417, 7, 23, 0, 0, 5417, 5418, 5, 49, 0, 0, 5418, 5419, 5, 48, 0, 0, 5419, 1088, 1, 0, 0, 0, 5420, 5421, 7, 15, 0, 0, 5421, 5422, 7, 17, 0, 0, 5422, 5423, 7, 7, 0, 0, 5423, 5424, 5, 95, 0, 0, 5424, 5425, 7, 9, 0, 0, 5425, 5426, 7, 14, 0, 0, 5426, 5427, 7, 5, 0, 0, 5427, 5428, 7, 6, 0, 0, 5428, 5429, 7, 10, 0, 0, 5429, 1090, 1, 0, 0, 0, 5430, 5431, 7, 15, 0, 0, 5431, 5432, 7, 19, 0, 0, 5432, 5433, 7, 12, 0, 0, 5433, 1092, 1, 0, 0, 0, 5434, 5435, 7, 24, 0, 0, 5435, 5436, 7, 17, 0, 0, 5436, 1094, 1, 0, 0, 0, 5437, 5438, 7, 24, 0, 0, 5438, 5439, 7, 19, 0, 0, 5439, 5440, 7, 28, 0, 0, 5440, 5441, 7, 10, 0, 0, 5441, 5442, 7, 13, 0, 0, 5442, 1096, 1, 0, 0, 0, 5443, 5444, 7, 13, 0, 0, 5444, 5445, 7, 5, 0, 0, 5445, 5446, 7, 12, 0, 0, 5446, 5447, 7, 17, 0, 0, 5447, 5448, 7, 5, 0, 0, 5448, 5449, 7, 7, 0, 0, 5449, 5450, 7, 9, 0, 0, 5450, 1098, 1, 0, 0, 0, 5451, 5452, 7, 13, 0, 0, 5452, 5453, 7, 19, 0, 0, 5453, 5454, 7, 22, 0, 0, 5454, 5455, 7, 7, 0, 0, 5455, 5456, 7, 12, 0, 0, 5456, 1100, 1, 0, 0, 0, 5457, 5458, 7, 9, 0, 0, 5458, 5459, 7, 14, 0, 0, 5459, 5460, 7, 5, 0, 0, 5460, 5461, 7, 6, 0, 0, 5461, 5462, 7, 10, 0, 0, 5462, 1102, 1, 0, 0, 0, 5463, 5464, 7, 9, 0, 0, 5464, 5465, 7, 17, 0, 0, 5465, 5466, 7, 23, 0, 0, 5466, 5467, 7, 7, 0, 0, 5467, 1104, 1, 0, 0, 0, 5468, 5469, 7, 9, 0, 0, 5469, 5470, 7, 29, 0, 0, 5470, 5471, 7, 13, 0, 0, 5471, 5472, 7, 16, 0, 0, 5472, 1106, 1, 0, 0, 0, 5473, 5474, 7, 16, 0, 0, 5474, 5475, 7, 13, 0, 0, 5475, 5476, 7, 17, 0, 0, 5476, 5477, 7, 15, 0, 0, 5477, 5478, 5, 95, 0, 0, 5478, 5479, 7, 9, 0, 0, 5479, 5480, 7, 14, 0, 0, 5480, 5481, 7, 5, 0, 0, 5481, 5482, 7, 6, 0, 0, 5482, 5483, 7, 10, 0, 0, 5483, 1108, 1, 0, 0, 0, 5484, 5485, 7, 16, 0, 0, 5485, 5486, 7, 13, 0, 0, 5486, 5487, 7, 22, 0, 0, 5487, 5488, 7, 7, 0, 0, 5488, 5489, 7, 14, 0, 0, 5489, 1110, 1, 0, 0, 0, 5490, 5491, 7, 28, 0, 0, 5491, 5492, 7, 17, 0, 0, 5492, 5493, 7, 12, 0, 0, 5493, 5494, 7, 16, 0, 0, 5494, 5495, 7, 20, 0, 0, 5495, 5496, 5, 95, 0, 0, 5496, 5497, 7, 18, 0, 0, 5497, 5498, 7, 22, 0, 0, 5498, 5499, 7, 14, 0, 0, 5499, 5500, 7, 21, 0, 0, 5500, 5501, 7, 10, 0, 0, 5501, 5502, 7, 16, 0, 0, 5502, 1112, 1, 0, 0, 0, 5503, 5504, 7, 13, 0, 0, 5504, 5505, 7, 5, 0, 0, 5505, 5506, 7, 7, 0, 0, 5506, 5507, 7, 12, 0, 0, 5507, 5508, 7, 19, 0, 0, 5508, 5509, 7, 15, 0, 0, 5509, 1114, 1, 0, 0, 0, 5510, 5511, 7, 9, 0, 0, 5511, 5512, 7, 10, 0, 0, 5512, 5513, 7, 16, 0, 0, 5513, 5514, 7, 9, 0, 0, 5514, 5515, 7, 10, 0, 0, 5515, 5516, 7, 10, 0, 0, 5516, 5517, 7, 12, 0, 0, 5517, 1116, 1, 0, 0, 0, 5518, 5519, 7, 5, 0, 0, 5519, 5520, 7, 14, 0, 0, 5520, 5521, 7, 19, 0, 0, 5521, 5522, 7, 9, 0, 0, 5522, 1118, 1, 0, 0, 0, 5523, 5524, 7, 5, 0, 0, 5524, 5525, 7, 14, 0, 0, 5525, 5526, 7, 19, 0, 0, 5526, 5527, 7, 9, 0, 0, 5527, 5528, 7, 12, 0, 0, 5528, 1120, 1, 0, 0, 0, 5529, 5530, 7, 5, 0, 0, 5530, 5531, 7, 9, 0, 0, 5531, 5532, 7, 17, 0, 0, 5532, 5533, 7, 7, 0, 0, 5533, 1122, 1, 0, 0, 0, 5534, 5535, 7, 5, 0, 0, 5535, 5536, 7, 9, 0, 0, 5536, 5537, 7, 17, 0, 0, 5537, 5538, 7, 7, 0, 0, 5538, 5539, 7, 12, 0, 0, 5539, 1124, 1, 0, 0, 0, 5540, 5541, 7, 5, 0, 0, 5541, 5542, 7, 16, 0, 0, 5542, 5543, 7, 5, 0, 0, 5543, 5544, 7, 7, 0, 0, 5544, 1126, 1, 0, 0, 0, 5545, 5546, 7, 5, 0, 0, 5546, 5547, 7, 16, 0, 0, 5547, 5548, 7, 5, 0, 0, 5548, 5549, 7, 7, 0, 0, 5549, 5550, 7, 12, 0, 0, 5550, 1128, 1, 0, 0, 0, 5551, 5552, 7, 5, 0, 0, 5552, 5553, 7, 16, 0, 0, 5553, 5554, 7, 5, 0, 0, 5554, 5555, 7, 7, 0, 0, 5555, 5556, 5, 50, 0, 0, 5556, 1130, 1, 0, 0, 0, 5557, 5558, 7, 5, 0, 0, 5558, 5559, 7, 16, 0, 0, 5559, 5560, 7, 5, 0, 0, 5560, 5561, 7, 7, 0, 0, 5561, 5562, 5, 50, 0, 0, 5562, 5563, 7, 12, 0, 0, 5563, 1132, 1, 0, 0, 0, 5564, 5565, 7, 14, 0, 0, 5565, 5566, 7, 19, 0, 0, 5566, 5567, 7, 9, 0, 0, 5567, 1134, 1, 0, 0, 0, 5568, 5569, 7, 14, 0, 0, 5569, 5570, 7, 19, 0, 0, 5570, 5571, 7, 9, 0, 0, 5571, 5572, 7, 12, 0, 0, 5572, 1136, 1, 0, 0, 0, 5573, 5574, 7, 14, 0, 0, 5574, 5575, 7, 19, 0, 0, 5575, 5576, 7, 16, 0, 0, 5576, 1138, 1, 0, 0, 0, 5577, 5578, 7, 14, 0, 0, 5578, 5579, 7, 19, 0, 0, 5579, 5580, 7, 16, 0, 0, 5580, 5581, 7, 12, 0, 0, 5581, 1140, 1, 0, 0, 0, 5582, 5583, 7, 9, 0, 0, 5583, 5584, 7, 17, 0, 0, 5584, 5585, 7, 7, 0, 0, 5585, 1142, 1, 0, 0, 0, 5586, 5587, 7, 9, 0, 0, 5587, 5588, 7, 17, 0, 0, 5588, 5589, 7, 7, 0, 0, 5589, 5590, 7, 12, 0, 0, 5590, 1144, 1, 0, 0, 0, 5591, 5592, 7, 16, 0, 0, 5592, 5593, 7, 5, 0, 0, 5593, 5594, 7, 7, 0, 0, 5594, 1146, 1, 0, 0, 0, 5595, 5596, 7, 16, 0, 0, 5596, 5597, 7, 5, 0, 0, 5597, 5598, 7, 7, 0, 0, 5598, 5599, 7, 12, 0, 0, 5599, 1148, 1, 0, 0, 0, 5600, 5601, 7, 9, 0, 0, 5601, 5602, 7, 17, 0, 0, 5602, 5603, 7, 7, 0, 0, 5603, 5604, 7, 20, 0, 0, 5604, 1150, 1, 0, 0, 0, 5605, 5606, 7, 14, 0, 0, 5606, 5607, 7, 19, 0, 0, 5607, 5608, 7, 9, 0, 0, 5608, 5609, 7, 20, 0, 0, 5609, 1152, 1, 0, 0, 0, 5610, 5611, 7, 16, 0, 0, 5611, 5612, 7, 5, 0, 0, 5612, 5613, 7, 7, 0, 0, 5613, 5614, 7, 20, 0, 0, 5614, 1154, 1, 0, 0, 0, 5615, 5616, 7, 5, 0, 0, 5616, 5617, 7, 9, 0, 0, 5617, 5618, 7, 17, 0, 0, 5618, 5619, 7, 7, 0, 0, 5619, 5620, 7, 20, 0, 0, 5620, 1156, 1, 0, 0, 0, 5621, 5622, 7, 5, 0, 0, 5622, 5623, 7, 14, 0, 0, 5623, 5624, 7, 19, 0, 0, 5624, 5625, 7, 9, 0, 0, 5625, 5626, 7, 20, 0, 0, 5626, 1158, 1, 0, 0, 0, 5627, 5628, 7, 5, 0, 0, 5628, 5629, 7, 16, 0, 0, 5629, 5630, 7, 5, 0, 0, 5630, 5631, 7, 7, 0, 0, 5631, 5632, 7, 20, 0, 0, 5632, 1160, 1, 0, 0, 0, 5633, 5634, 7, 18, 0, 0, 5634, 5635, 7, 17, 0, 0, 5635, 5636, 7, 16, 0, 0, 5636, 5637, 5, 95, 0, 0, 5637, 5638, 7, 6, 0, 0, 5638, 5639, 7, 10, 0, 0, 5639, 5640, 7, 7, 0, 0, 5640, 5641, 7, 23, 0, 0, 5641, 5642, 7, 16, 0, 0, 5642, 5643, 7, 20, 0, 0, 5643, 1162, 1, 0, 0, 0, 5644, 5645, 7, 14, 0, 0, 5645, 5646, 7, 20, 0, 0, 5646, 5647, 7, 5, 0, 0, 5647, 5648, 7, 13, 0, 0, 5648, 5649, 5, 95, 0, 0, 5649, 5650, 7, 6, 0, 0, 5650, 5651, 7, 10, 0, 0, 5651, 5652, 7, 7, 0, 0, 5652, 5653, 7, 23, 0, 0, 5653, 5654, 7, 16, 0, 0, 5654, 5655, 7, 20, 0, 0, 5655, 1164, 1, 0, 0, 0, 5656, 5657, 7, 14, 0, 0, 5657, 5658, 7, 20, 0, 0, 5658, 5659, 7, 5, 0, 0, 5659, 5660, 7, 13, 0, 0, 5660, 5661, 7, 5, 0, 0, 5661, 5662, 7, 14, 0, 0, 5662, 5663, 7, 16, 0, 0, 5663, 5664, 7, 10, 0, 0, 5664, 5665, 7, 13, 0, 0, 5665, 5666, 5, 95, 0, 0, 5666, 5667, 7, 6, 0, 0, 5667, 5668, 7, 10, 0, 0, 5668, 5669, 7, 7, 0, 0, 5669, 5670, 7, 23, 0, 0, 5670, 5671, 7, 16, 0, 0, 5671, 5672, 7, 20, 0, 0, 5672, 1166, 1, 0, 0, 0, 5673, 5674, 7, 6, 0, 0, 5674, 5675, 7, 19, 0, 0, 5675, 5676, 7, 28, 0, 0, 5676, 5677, 7, 10, 0, 0, 5677, 5678, 7, 13, 0, 0, 5678, 1168, 1, 0, 0, 0, 5679, 5680, 7, 19, 0, 0, 5680, 5681, 7, 14, 0, 0, 5681, 5682, 7, 16, 0, 0, 5682, 5683, 7, 10, 0, 0, 5683, 5684, 7, 16, 0, 0, 5684, 5685, 5, 95, 0, 0, 5685, 5686, 7, 6, 0, 0, 5686, 5687, 7, 10, 0, 0, 5687, 5688, 7, 7, 0, 0, 5688, 5689, 7, 23, 0, 0, 5689, 5690, 7, 16, 0, 0, 5690, 5691, 7, 20, 0, 0, 5691, 1170, 1, 0, 0, 0, 5692, 5693, 7, 22, 0, 0, 5693, 5694, 7, 24, 0, 0, 5694, 5695, 7, 24, 0, 0, 5695, 5696, 7, 10, 0, 0, 5696, 5697, 7, 13, 0, 0, 5697, 1172, 1, 0, 0, 0, 5698, 5699, 7, 5, 0, 0, 5699, 5700, 7, 9, 0, 0, 5700, 5701, 7, 14, 0, 0, 5701, 5702, 7, 17, 0, 0, 5702, 5703, 7, 17, 0, 0, 5703, 1174, 1, 0, 0, 0, 5704, 5705, 7, 18, 0, 0, 5705, 5706, 7, 16, 0, 0, 5706, 5707, 7, 13, 0, 0, 5707, 5708, 7, 17, 0, 0, 5708, 5709, 7, 15, 0, 0, 5709, 1176, 1, 0, 0, 0, 5710, 5711, 7, 14, 0, 0, 5711, 5712, 7, 20, 0, 0, 5712, 5713, 7, 13, 0, 0, 5713, 1178, 1, 0, 0, 0, 5714, 5715, 7, 14, 0, 0, 5715, 5716, 7, 19, 0, 0, 5716, 5717, 7, 7, 0, 0, 5717, 5718, 7, 14, 0, 0, 5718, 5719, 7, 5, 0, 0, 5719, 5720, 7, 16, 0, 0, 5720, 1180, 1, 0, 0, 0, 5721, 5722, 7, 14, 0, 0, 5722, 5723, 7, 19, 0, 0, 5723, 5724, 7, 7, 0, 0, 5724, 5725, 7, 14, 0, 0, 5725, 5726, 7, 5, 0, 0, 5726, 5727, 7, 16, 0, 0, 5727, 5728, 5, 95, 0, 0, 5728, 5729, 7, 28, 0, 0, 5729, 5730, 7, 9, 0, 0, 5730, 1182, 1, 0, 0, 0, 5731, 5732, 7, 25, 0, 0, 5732, 5733, 7, 19, 0, 0, 5733, 5734, 7, 13, 0, 0, 5734, 5735, 7, 15, 0, 0, 5735, 5736, 7, 5, 0, 0, 5736, 5737, 7, 16, 0, 0, 5737, 1184, 1, 0, 0, 0, 5738, 5739, 7, 17, 0, 0, 5739, 5740, 7, 7, 0, 0, 5740, 5741, 7, 17, 0, 0, 5741, 5742, 7, 16, 0, 0, 5742, 5743, 7, 14, 0, 0, 5743, 5744, 7, 5, 0, 0, 5744, 5745, 7, 24, 0, 0, 5745, 1186, 1, 0, 0, 0, 5746, 5747, 7, 6, 0, 0, 5747, 5748, 7, 10, 0, 0, 5748, 5749, 7, 7, 0, 0, 5749, 5750, 7, 23, 0, 0, 5750, 5751, 7, 16, 0, 0, 5751, 5752, 7, 20, 0, 0, 5752, 1188, 1, 0, 0, 0, 5753, 5754, 7, 6, 0, 0, 5754, 5755, 7, 24, 0, 0, 5755, 5756, 7, 5, 0, 0, 5756, 5757, 7, 12, 0, 0, 5757, 1190, 1, 0, 0, 0, 5758, 5759, 7, 6, 0, 0, 5759, 5760, 7, 16, 0, 0, 5760, 5761, 7, 13, 0, 0, 5761, 5762, 7, 17, 0, 0, 5762, 5763, 7, 15, 0, 0, 5763, 1192, 1, 0, 0, 0, 5764, 5765, 7, 15, 0, 0, 5765, 5766, 7, 12, 0, 0, 5766, 5767, 5, 53, 0, 0, 5767, 1194, 1, 0, 0, 0, 5768, 5769, 7, 24, 0, 0, 5769, 5770, 7, 5, 0, 0, 5770, 5771, 7, 13, 0, 0, 5771, 5772, 7, 9, 0, 0, 5772, 5773, 7, 10, 0, 0, 5773, 5774, 5, 95, 0, 0, 5774, 5775, 7, 17, 0, 0, 5775, 5776, 7, 12, 0, 0, 5776, 5777, 7, 10, 0, 0, 5777, 5778, 7, 7, 0, 0, 5778, 5779, 7, 16, 0, 0, 5779, 1196, 1, 0, 0, 0, 5780, 5781, 7, 24, 0, 0, 5781, 5782, 7, 23, 0, 0, 5782, 5783, 5, 95, 0, 0, 5783, 5784, 7, 14, 0, 0, 5784, 5785, 7, 6, 0, 0, 5785, 5786, 7, 17, 0, 0, 5786, 5787, 7, 10, 0, 0, 5787, 5788, 7, 7, 0, 0, 5788, 5789, 7, 16, 0, 0, 5789, 5790, 5, 95, 0, 0, 5790, 5791, 7, 10, 0, 0, 5791, 5792, 7, 7, 0, 0, 5792, 5793, 7, 14, 0, 0, 5793, 5794, 7, 19, 0, 0, 5794, 5795, 7, 12, 0, 0, 5795, 5796, 7, 17, 0, 0, 5796, 5797, 7, 7, 0, 0, 5797, 5798, 7, 23, 0, 0, 5798, 1198, 1, 0, 0, 0, 5799, 5800, 7, 29, 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, 17, 0, 0, 5806, 5807, 7, 12, 0, 0, 5807, 5808, 7, 10, 0, 0, 5808, 5809, 7, 7, 0, 0, 5809, 5810, 7, 16, 0, 0, 5810, 1200, 1, 0, 0, 0, 5811, 5812, 7, 29, 0, 0, 5812, 5813, 7, 22, 0, 0, 5813, 5814, 7, 19, 0, 0, 5814, 5815, 7, 16, 0, 0, 5815, 5816, 7, 10, 0, 0, 5816, 5817, 5, 95, 0, 0, 5817, 5818, 7, 6, 0, 0, 5818, 5819, 7, 17, 0, 0, 5819, 5820, 7, 16, 0, 0, 5820, 5821, 7, 10, 0, 0, 5821, 5822, 7, 13, 0, 0, 5822, 5823, 7, 5, 0, 0, 5823, 5824, 7, 6, 0, 0, 5824, 1202, 1, 0, 0, 0, 5825, 5826, 7, 29, 0, 0, 5826, 5827, 7, 22, 0, 0, 5827, 5828, 7, 19, 0, 0, 5828, 5829, 7, 16, 0, 0, 5829, 5830, 7, 10, 0, 0, 5830, 5831, 5, 95, 0, 0, 5831, 5832, 7, 7, 0, 0, 5832, 5833, 7, 22, 0, 0, 5833, 5834, 7, 6, 0, 0, 5834, 5835, 7, 6, 0, 0, 5835, 5836, 7, 5, 0, 0, 5836, 5837, 7, 18, 0, 0, 5837, 5838, 7, 6, 0, 0, 5838, 5839, 7, 10, 0, 0, 5839, 1204, 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, 14, 0, 0, 5848, 5849, 7, 19, 0, 0, 5849, 5850, 7, 22, 0, 0, 5850, 5851, 7, 7, 0, 0, 5851, 5852, 7, 16, 0, 0, 5852, 1206, 1, 0, 0, 0, 5853, 5854, 7, 13, 0, 0, 5854, 5855, 7, 10, 0, 0, 5855, 5856, 7, 23, 0, 0, 5856, 5857, 7, 10, 0, 0, 5857, 5858, 7, 26, 0, 0, 5858, 5859, 7, 24, 0, 0, 5859, 5860, 5, 95, 0, 0, 5860, 5861, 7, 17, 0, 0, 5861, 5862, 7, 7, 0, 0, 5862, 5863, 7, 9, 0, 0, 5863, 5864, 7, 16, 0, 0, 5864, 5865, 7, 13, 0, 0, 5865, 1208, 1, 0, 0, 0, 5866, 5867, 7, 13, 0, 0, 5867, 5868, 7, 10, 0, 0, 5868, 5869, 7, 23, 0, 0, 5869, 5870, 7, 10, 0, 0, 5870, 5871, 7, 26, 0, 0, 5871, 5872, 7, 24, 0, 0, 5872, 5873, 5, 95, 0, 0, 5873, 5874, 7, 6, 0, 0, 5874, 5875, 7, 17, 0, 0, 5875, 5876, 7, 21, 0, 0, 5876, 5877, 7, 10, 0, 0, 5877, 1210, 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, 15, 0, 0, 5886, 5887, 7, 5, 0, 0, 5887, 5888, 7, 16, 0, 0, 5888, 5889, 7, 14, 0, 0, 5889, 5890, 7, 20, 0, 0, 5890, 1212, 1, 0, 0, 0, 5891, 5892, 7, 13, 0, 0, 5892, 5893, 7, 10, 0, 0, 5893, 5894, 7, 23, 0, 0, 5894, 5895, 7, 10, 0, 0, 5895, 5896, 7, 26, 0, 0, 5896, 5897, 7, 24, 0, 0, 5897, 5898, 5, 95, 0, 0, 5898, 5899, 7, 15, 0, 0, 5899, 5900, 7, 5, 0, 0, 5900, 5901, 7, 16, 0, 0, 5901, 5902, 7, 14, 0, 0, 5902, 5903, 7, 20, 0, 0, 5903, 5904, 7, 10, 0, 0, 5904, 5905, 7, 9, 0, 0, 5905, 1214, 1, 0, 0, 0, 5906, 5907, 7, 13, 0, 0, 5907, 5908, 7, 10, 0, 0, 5908, 5909, 7, 23, 0, 0, 5909, 5910, 7, 10, 0, 0, 5910, 5911, 7, 26, 0, 0, 5911, 5912, 7, 24, 0, 0, 5912, 5913, 5, 95, 0, 0, 5913, 5914, 7, 13, 0, 0, 5914, 5915, 7, 10, 0, 0, 5915, 5916, 7, 24, 0, 0, 5916, 5917, 7, 6, 0, 0, 5917, 5918, 7, 5, 0, 0, 5918, 5919, 7, 14, 0, 0, 5919, 5920, 7, 10, 0, 0, 5920, 1216, 1, 0, 0, 0, 5921, 5922, 7, 13, 0, 0, 5922, 5923, 7, 10, 0, 0, 5923, 5924, 7, 23, 0, 0, 5924, 5925, 7, 10, 0, 0, 5925, 5926, 7, 26, 0, 0, 5926, 5927, 7, 24, 0, 0, 5927, 5928, 5, 95, 0, 0, 5928, 5929, 7, 9, 0, 0, 5929, 5930, 7, 24, 0, 0, 5930, 5931, 7, 6, 0, 0, 5931, 5932, 7, 17, 0, 0, 5932, 5933, 7, 16, 0, 0, 5933, 5934, 5, 95, 0, 0, 5934, 5935, 7, 16, 0, 0, 5935, 5936, 7, 19, 0, 0, 5936, 5937, 5, 95, 0, 0, 5937, 5938, 7, 5, 0, 0, 5938, 5939, 7, 13, 0, 0, 5939, 5940, 7, 13, 0, 0, 5940, 5941, 7, 5, 0, 0, 5941, 5942, 7, 8, 0, 0, 5942, 1218, 1, 0, 0, 0, 5943, 5944, 7, 13, 0, 0, 5944, 5945, 7, 10, 0, 0, 5945, 5946, 7, 23, 0, 0, 5946, 5947, 7, 10, 0, 0, 5947, 5948, 7, 26, 0, 0, 5948, 5949, 7, 24, 0, 0, 5949, 5950, 5, 95, 0, 0, 5950, 5951, 7, 9, 0, 0, 5951, 5952, 7, 24, 0, 0, 5952, 5953, 7, 6, 0, 0, 5953, 5954, 7, 17, 0, 0, 5954, 5955, 7, 16, 0, 0, 5955, 5956, 5, 95, 0, 0, 5956, 5957, 7, 16, 0, 0, 5957, 5958, 7, 19, 0, 0, 5958, 5959, 5, 95, 0, 0, 5959, 5960, 7, 16, 0, 0, 5960, 5961, 7, 5, 0, 0, 5961, 5962, 7, 18, 0, 0, 5962, 5963, 7, 6, 0, 0, 5963, 5964, 7, 10, 0, 0, 5964, 1220, 1, 0, 0, 0, 5965, 5966, 7, 13, 0, 0, 5966, 5967, 7, 10, 0, 0, 5967, 5968, 7, 23, 0, 0, 5968, 5969, 7, 10, 0, 0, 5969, 5970, 7, 26, 0, 0, 5970, 5971, 7, 24, 0, 0, 5971, 5972, 5, 95, 0, 0, 5972, 5973, 7, 9, 0, 0, 5973, 5974, 7, 22, 0, 0, 5974, 5975, 7, 18, 0, 0, 5975, 5976, 7, 9, 0, 0, 5976, 5977, 7, 16, 0, 0, 5977, 5978, 7, 13, 0, 0, 5978, 1222, 1, 0, 0, 0, 5979, 5980, 7, 13, 0, 0, 5980, 5981, 7, 10, 0, 0, 5981, 5982, 7, 24, 0, 0, 5982, 5983, 7, 10, 0, 0, 5983, 5984, 7, 5, 0, 0, 5984, 5985, 7, 16, 0, 0, 5985, 1224, 1, 0, 0, 0, 5986, 5987, 7, 13, 0, 0, 5987, 5988, 7, 24, 0, 0, 5988, 5989, 7, 5, 0, 0, 5989, 5990, 7, 12, 0, 0, 5990, 1226, 1, 0, 0, 0, 5991, 5992, 7, 13, 0, 0, 5992, 5993, 7, 16, 0, 0, 5993, 5994, 7, 13, 0, 0, 5994, 5995, 7, 17, 0, 0, 5995, 5996, 7, 15, 0, 0, 5996, 1228, 1, 0, 0, 0, 5997, 5998, 7, 9, 0, 0, 5998, 5999, 7, 24, 0, 0, 5999, 6000, 7, 6, 0, 0, 6000, 6001, 7, 17, 0, 0, 6001, 6002, 7, 16, 0, 0, 6002, 6003, 5, 95, 0, 0, 6003, 6004, 7, 24, 0, 0, 6004, 6005, 7, 5, 0, 0, 6005, 6006, 7, 13, 0, 0, 6006, 6007, 7, 16, 0, 0, 6007, 1230, 1, 0, 0, 0, 6008, 6009, 7, 9, 0, 0, 6009, 6010, 7, 16, 0, 0, 6010, 6011, 7, 5, 0, 0, 6011, 6012, 7, 13, 0, 0, 6012, 6013, 7, 16, 0, 0, 6013, 6014, 7, 9, 0, 0, 6014, 6015, 5, 95, 0, 0, 6015, 6016, 7, 28, 0, 0, 6016, 6017, 7, 17, 0, 0, 6017, 6018, 7, 16, 0, 0, 6018, 6019, 7, 20, 0, 0, 6019, 1232, 1, 0, 0, 0, 6020, 6021, 7, 9, 0, 0, 6021, 6022, 7, 16, 0, 0, 6022, 6023, 7, 13, 0, 0, 6023, 6024, 7, 17, 0, 0, 6024, 6025, 7, 7, 0, 0, 6025, 6026, 7, 23, 0, 0, 6026, 6027, 5, 95, 0, 0, 6027, 6028, 7, 16, 0, 0, 6028, 6029, 7, 19, 0, 0, 6029, 6030, 5, 95, 0, 0, 6030, 6031, 7, 5, 0, 0, 6031, 6032, 7, 13, 0, 0, 6032, 6033, 7, 13, 0, 0, 6033, 6034, 7, 5, 0, 0, 6034, 6035, 7, 8, 0, 0, 6035, 1234, 1, 0, 0, 0, 6036, 6037, 7, 9, 0, 0, 6037, 6038, 7, 16, 0, 0, 6038, 6039, 7, 13, 0, 0, 6039, 6040, 7, 17, 0, 0, 6040, 6041, 7, 7, 0, 0, 6041, 6042, 7, 23, 0, 0, 6042, 6043, 5, 95, 0, 0, 6043, 6044, 7, 16, 0, 0, 6044, 6045, 7, 19, 0, 0, 6045, 6046, 5, 95, 0, 0, 6046, 6047, 7, 16, 0, 0, 6047, 6048, 7, 5, 0, 0, 6048, 6049, 7, 18, 0, 0, 6049, 6050, 7, 6, 0, 0, 6050, 6051, 7, 10, 0, 0, 6051, 1236, 1, 0, 0, 0, 6052, 6053, 7, 9, 0, 0, 6053, 6054, 7, 16, 0, 0, 6054, 6055, 7, 13, 0, 0, 6055, 6056, 7, 24, 0, 0, 6056, 6057, 7, 19, 0, 0, 6057, 6058, 7, 9, 0, 0, 6058, 1238, 1, 0, 0, 0, 6059, 6060, 7, 9, 0, 0, 6060, 6061, 7, 22, 0, 0, 6061, 6062, 7, 18, 0, 0, 6062, 6063, 7, 9, 0, 0, 6063, 6064, 7, 16, 0, 0, 6064, 6065, 7, 13, 0, 0, 6065, 1240, 1, 0, 0, 0, 6066, 6067, 7, 16, 0, 0, 6067, 6068, 7, 19, 0, 0, 6068, 6069, 5, 95, 0, 0, 6069, 6070, 7, 5, 0, 0, 6070, 6071, 7, 9, 0, 0, 6071, 6072, 7, 14, 0, 0, 6072, 6073, 7, 17, 0, 0, 6073, 6074, 7, 17, 0, 0, 6074, 1242, 1, 0, 0, 0, 6075, 6076, 7, 16, 0, 0, 6076, 6077, 7, 19, 0, 0, 6077, 6078, 5, 95, 0, 0, 6078, 6079, 7, 20, 0, 0, 6079, 6080, 7, 10, 0, 0, 6080, 6081, 7, 26, 0, 0, 6081, 1244, 1, 0, 0, 0, 6082, 6083, 7, 16, 0, 0, 6083, 6084, 7, 13, 0, 0, 6084, 6085, 7, 5, 0, 0, 6085, 6086, 7, 7, 0, 0, 6086, 6087, 7, 9, 0, 0, 6087, 6088, 7, 6, 0, 0, 6088, 6089, 7, 5, 0, 0, 6089, 6090, 7, 16, 0, 0, 6090, 6091, 7, 10, 0, 0, 6091, 1246, 1, 0, 0, 0, 6092, 6093, 7, 22, 0, 0, 6093, 6094, 7, 7, 0, 0, 6094, 6095, 7, 17, 0, 0, 6095, 6096, 7, 9, 0, 0, 6096, 6097, 7, 16, 0, 0, 6097, 6098, 7, 13, 0, 0, 6098, 1248, 1, 0, 0, 0, 6099, 6100, 7, 5, 0, 0, 6100, 6101, 7, 23, 0, 0, 6101, 6102, 7, 10, 0, 0, 6102, 1250, 1, 0, 0, 0, 6103, 6104, 7, 14, 0, 0, 6104, 6105, 7, 6, 0, 0, 6105, 6106, 7, 19, 0, 0, 6106, 6107, 7, 14, 0, 0, 6107, 6108, 7, 21, 0, 0, 6108, 6109, 5, 95, 0, 0, 6109, 6110, 7, 16, 0, 0, 6110, 6111, 7, 17, 0, 0, 6111, 6112, 7, 15, 0, 0, 6112, 6113, 7, 10, 0, 0, 6113, 6114, 7, 9, 0, 0, 6114, 6115, 7, 16, 0, 0, 6115, 6116, 7, 5, 0, 0, 6116, 6117, 7, 15, 0, 0, 6117, 6118, 7, 24, 0, 0, 6118, 1252, 1, 0, 0, 0, 6119, 6120, 7, 12, 0, 0, 6120, 6121, 7, 5, 0, 0, 6121, 6122, 7, 16, 0, 0, 6122, 6123, 7, 10, 0, 0, 6123, 6124, 5, 95, 0, 0, 6124, 6125, 7, 18, 0, 0, 6125, 6126, 7, 17, 0, 0, 6126, 6127, 7, 7, 0, 0, 6127, 1254, 1, 0, 0, 0, 6128, 6129, 7, 12, 0, 0, 6129, 6130, 7, 5, 0, 0, 6130, 6131, 7, 16, 0, 0, 6131, 6132, 7, 10, 0, 0, 6132, 6133, 5, 95, 0, 0, 6133, 6134, 7, 24, 0, 0, 6134, 6135, 7, 5, 0, 0, 6135, 6136, 7, 13, 0, 0, 6136, 6137, 7, 16, 0, 0, 6137, 1256, 1, 0, 0, 0, 6138, 6139, 7, 12, 0, 0, 6139, 6140, 7, 5, 0, 0, 6140, 6141, 7, 16, 0, 0, 6141, 6142, 7, 10, 0, 0, 6142, 6143, 5, 95, 0, 0, 6143, 6144, 7, 16, 0, 0, 6144, 6145, 7, 13, 0, 0, 6145, 6146, 7, 22, 0, 0, 6146, 6147, 7, 7, 0, 0, 6147, 6148, 7, 14, 0, 0, 6148, 1258, 1, 0, 0, 0, 6149, 6150, 7, 17, 0, 0, 6150, 6151, 7, 9, 0, 0, 6151, 6152, 7, 25, 0, 0, 6152, 6153, 7, 17, 0, 0, 6153, 6154, 7, 7, 0, 0, 6154, 6155, 7, 17, 0, 0, 6155, 6156, 7, 16, 0, 0, 6156, 6157, 7, 10, 0, 0, 6157, 1260, 1, 0, 0, 0, 6158, 6159, 7, 30, 0, 0, 6159, 6160, 7, 22, 0, 0, 6160, 6161, 7, 9, 0, 0, 6161, 6162, 7, 16, 0, 0, 6162, 6163, 7, 17, 0, 0, 6163, 6164, 7, 25, 0, 0, 6164, 6165, 7, 8, 0, 0, 6165, 6166, 5, 95, 0, 0, 6166, 6167, 7, 12, 0, 0, 6167, 6168, 7, 5, 0, 0, 6168, 6169, 7, 8, 0, 0, 6169, 6170, 7, 9, 0, 0, 6170, 1262, 1, 0, 0, 0, 6171, 6172, 7, 30, 0, 0, 6172, 6173, 7, 22, 0, 0, 6173, 6174, 7, 9, 0, 0, 6174, 6175, 7, 16, 0, 0, 6175, 6176, 7, 17, 0, 0, 6176, 6177, 7, 25, 0, 0, 6177, 6178, 7, 8, 0, 0, 6178, 6179, 5, 95, 0, 0, 6179, 6180, 7, 20, 0, 0, 6180, 6181, 7, 19, 0, 0, 6181, 6182, 7, 22, 0, 0, 6182, 6183, 7, 13, 0, 0, 6183, 6184, 7, 9, 0, 0, 6184, 1264, 1, 0, 0, 0, 6185, 6186, 7, 30, 0, 0, 6186, 6187, 7, 22, 0, 0, 6187, 6188, 7, 9, 0, 0, 6188, 6189, 7, 16, 0, 0, 6189, 6190, 7, 17, 0, 0, 6190, 6191, 7, 25, 0, 0, 6191, 6192, 7, 8, 0, 0, 6192, 6193, 5, 95, 0, 0, 6193, 6194, 7, 17, 0, 0, 6194, 6195, 7, 7, 0, 0, 6195, 6196, 7, 16, 0, 0, 6196, 6197, 7, 10, 0, 0, 6197, 6198, 7, 13, 0, 0, 6198, 6199, 7, 27, 0, 0, 6199, 6200, 7, 5, 0, 0, 6200, 6201, 7, 6, 0, 0, 6201, 1266, 1, 0, 0, 0, 6202, 6203, 7, 15, 0, 0, 6203, 6204, 7, 5, 0, 0, 6204, 6205, 7, 21, 0, 0, 6205, 6206, 7, 10, 0, 0, 6206, 6207, 5, 95, 0, 0, 6207, 6208, 7, 12, 0, 0, 6208, 6209, 7, 5, 0, 0, 6209, 6210, 7, 16, 0, 0, 6210, 6211, 7, 10, 0, 0, 6211, 1268, 1, 0, 0, 0, 6212, 6213, 7, 15, 0, 0, 6213, 6214, 7, 5, 0, 0, 6214, 6215, 7, 21, 0, 0, 6215, 6216, 7, 10, 0, 0, 6216, 6217, 5, 95, 0, 0, 6217, 6218, 7, 17, 0, 0, 6218, 6219, 7, 7, 0, 0, 6219, 6220, 7, 16, 0, 0, 6220, 6221, 7, 10, 0, 0, 6221, 6222, 7, 13, 0, 0, 6222, 6223, 7, 27, 0, 0, 6223, 6224, 7, 5, 0, 0, 6224, 6225, 7, 6, 0, 0, 6225, 1270, 1, 0, 0, 0, 6226, 6227, 7, 15, 0, 0, 6227, 6228, 7, 5, 0, 0, 6228, 6229, 7, 21, 0, 0, 6229, 6230, 7, 10, 0, 0, 6230, 6231, 5, 95, 0, 0, 6231, 6232, 7, 16, 0, 0, 6232, 6233, 7, 17, 0, 0, 6233, 6234, 7, 15, 0, 0, 6234, 6235, 7, 10, 0, 0, 6235, 1272, 1, 0, 0, 0, 6236, 6237, 7, 15, 0, 0, 6237, 6238, 7, 5, 0, 0, 6238, 6239, 7, 21, 0, 0, 6239, 6240, 7, 10, 0, 0, 6240, 6241, 5, 95, 0, 0, 6241, 6242, 7, 16, 0, 0, 6242, 6243, 7, 17, 0, 0, 6243, 6244, 7, 15, 0, 0, 6244, 6245, 7, 10, 0, 0, 6245, 6246, 7, 9, 0, 0, 6246, 6247, 7, 16, 0, 0, 6247, 6248, 7, 5, 0, 0, 6248, 6249, 7, 15, 0, 0, 6249, 6250, 7, 24, 0, 0, 6250, 1274, 1, 0, 0, 0, 6251, 6252, 7, 15, 0, 0, 6252, 6253, 7, 5, 0, 0, 6253, 6254, 7, 21, 0, 0, 6254, 6255, 7, 10, 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, 6266, 7, 16, 0, 0, 6266, 6267, 7, 11, 0, 0, 6267, 1276, 1, 0, 0, 0, 6268, 6269, 7, 7, 0, 0, 6269, 6270, 7, 19, 0, 0, 6270, 6271, 7, 28, 0, 0, 6271, 1278, 1, 0, 0, 0, 6272, 6273, 7, 9, 0, 0, 6273, 6274, 7, 16, 0, 0, 6274, 6275, 7, 5, 0, 0, 6275, 6276, 7, 16, 0, 0, 6276, 6277, 7, 10, 0, 0, 6277, 6278, 7, 15, 0, 0, 6278, 6279, 7, 10, 0, 0, 6279, 6280, 7, 7, 0, 0, 6280, 6281, 7, 16, 0, 0, 6281, 6282, 5, 95, 0, 0, 6282, 6283, 7, 16, 0, 0, 6283, 6284, 7, 17, 0, 0, 6284, 6285, 7, 15, 0, 0, 6285, 6286, 7, 10, 0, 0, 6286, 6287, 7, 9, 0, 0, 6287, 6288, 7, 16, 0, 0, 6288, 6289, 7, 5, 0, 0, 6289, 6290, 7, 15, 0, 0, 6290, 6291, 7, 24, 0, 0, 6291, 1280, 1, 0, 0, 0, 6292, 6293, 7, 16, 0, 0, 6293, 6294, 7, 17, 0, 0, 6294, 6295, 7, 15, 0, 0, 6295, 6296, 7, 10, 0, 0, 6296, 6297, 7, 19, 0, 0, 6297, 6298, 7, 25, 0, 0, 6298, 6299, 7, 12, 0, 0, 6299, 6300, 7, 5, 0, 0, 6300, 6301, 7, 8, 0, 0, 6301, 1282, 1, 0, 0, 0, 6302, 6303, 7, 16, 0, 0, 6303, 6304, 7, 13, 0, 0, 6304, 6305, 7, 5, 0, 0, 6305, 6306, 7, 7, 0, 0, 6306, 6307, 7, 9, 0, 0, 6307, 6308, 7, 5, 0, 0, 6308, 6309, 7, 14, 0, 0, 6309, 6310, 7, 16, 0, 0, 6310, 6311, 7, 17, 0, 0, 6311, 6312, 7, 19, 0, 0, 6312, 6313, 7, 7, 0, 0, 6313, 6314, 5, 95, 0, 0, 6314, 6315, 7, 16, 0, 0, 6315, 6316, 7, 17, 0, 0, 6316, 6317, 7, 15, 0, 0, 6317, 6318, 7, 10, 0, 0, 6318, 6319, 7, 9, 0, 0, 6319, 6320, 7, 16, 0, 0, 6320, 6321, 7, 5, 0, 0, 6321, 6322, 7, 15, 0, 0, 6322, 6323, 7, 24, 0, 0, 6323, 1284, 1, 0, 0, 0, 6324, 6325, 7, 16, 0, 0, 6325, 6326, 7, 19, 0, 0, 6326, 6327, 5, 95, 0, 0, 6327, 6328, 7, 16, 0, 0, 6328, 6329, 7, 17, 0, 0, 6329, 6330, 7, 15, 0, 0, 6330, 6331, 7, 10, 0, 0, 6331, 6332, 7, 9, 0, 0, 6332, 6333, 7, 16, 0, 0, 6333, 6334, 7, 5, 0, 0, 6334, 6335, 7, 15, 0, 0, 6335, 6336, 7, 24, 0, 0, 6336, 1286, 1, 0, 0, 0, 6337, 6338, 7, 16, 0, 0, 6338, 6339, 7, 19, 0, 0, 6339, 6340, 5, 95, 0, 0, 6340, 6341, 7, 14, 0, 0, 6341, 6342, 7, 20, 0, 0, 6342, 6343, 7, 5, 0, 0, 6343, 6344, 7, 13, 0, 0, 6344, 1288, 1, 0, 0, 0, 6345, 6346, 7, 16, 0, 0, 6346, 6347, 7, 19, 0, 0, 6347, 6348, 5, 95, 0, 0, 6348, 6349, 7, 12, 0, 0, 6349, 6350, 7, 5, 0, 0, 6350, 6351, 7, 16, 0, 0, 6351, 6352, 7, 10, 0, 0, 6352, 1290, 1, 0, 0, 0, 6353, 6354, 7, 16, 0, 0, 6354, 6355, 7, 19, 0, 0, 6355, 6356, 5, 95, 0, 0, 6356, 6357, 7, 7, 0, 0, 6357, 6358, 7, 22, 0, 0, 6358, 6359, 7, 15, 0, 0, 6359, 6360, 7, 18, 0, 0, 6360, 6361, 7, 10, 0, 0, 6361, 6362, 7, 13, 0, 0, 6362, 1292, 1, 0, 0, 0, 6363, 6367, 3, 1295, 645, 0, 6364, 6366, 3, 1297, 646, 0, 6365, 6364, 1, 0, 0, 0, 6366, 6369, 1, 0, 0, 0, 6367, 6365, 1, 0, 0, 0, 6367, 6368, 1, 0, 0, 0, 6368, 1294, 1, 0, 0, 0, 6369, 6367, 1, 0, 0, 0, 6370, 6377, 7, 31, 0, 0, 6371, 6372, 7, 32, 0, 0, 6372, 6377, 4, 645, 6, 0, 6373, 6374, 7, 33, 0, 0, 6374, 6375, 7, 34, 0, 0, 6375, 6377, 4, 645, 7, 0, 6376, 6370, 1, 0, 0, 0, 6376, 6371, 1, 0, 0, 0, 6376, 6373, 1, 0, 0, 0, 6377, 1296, 1, 0, 0, 0, 6378, 6381, 3, 1299, 647, 0, 6379, 6381, 5, 36, 0, 0, 6380, 6378, 1, 0, 0, 0, 6380, 6379, 1, 0, 0, 0, 6381, 1298, 1, 0, 0, 0, 6382, 6385, 3, 1295, 645, 0, 6383, 6385, 7, 0, 0, 0, 6384, 6382, 1, 0, 0, 0, 6384, 6383, 1, 0, 0, 0, 6385, 1300, 1, 0, 0, 0, 6386, 6387, 3, 1303, 649, 0, 6387, 6388, 5, 34, 0, 0, 6388, 1302, 1, 0, 0, 0, 6389, 6395, 5, 34, 0, 0, 6390, 6391, 5, 34, 0, 0, 6391, 6394, 5, 34, 0, 0, 6392, 6394, 8, 35, 0, 0, 6393, 6390, 1, 0, 0, 0, 6393, 6392, 1, 0, 0, 0, 6394, 6397, 1, 0, 0, 0, 6395, 6393, 1, 0, 0, 0, 6395, 6396, 1, 0, 0, 0, 6396, 1304, 1, 0, 0, 0, 6397, 6395, 1, 0, 0, 0, 6398, 6399, 3, 1307, 651, 0, 6399, 6400, 5, 34, 0, 0, 6400, 1306, 1, 0, 0, 0, 6401, 6407, 5, 34, 0, 0, 6402, 6403, 5, 34, 0, 0, 6403, 6406, 5, 34, 0, 0, 6404, 6406, 8, 36, 0, 0, 6405, 6402, 1, 0, 0, 0, 6405, 6404, 1, 0, 0, 0, 6406, 6409, 1, 0, 0, 0, 6407, 6405, 1, 0, 0, 0, 6407, 6408, 1, 0, 0, 0, 6408, 1308, 1, 0, 0, 0, 6409, 6407, 1, 0, 0, 0, 6410, 6411, 7, 22, 0, 0, 6411, 6412, 5, 38, 0, 0, 6412, 6413, 3, 1301, 648, 0, 6413, 1310, 1, 0, 0, 0, 6414, 6415, 7, 22, 0, 0, 6415, 6416, 5, 38, 0, 0, 6416, 6417, 3, 1303, 649, 0, 6417, 1312, 1, 0, 0, 0, 6418, 6419, 7, 22, 0, 0, 6419, 6420, 5, 38, 0, 0, 6420, 6421, 3, 1305, 650, 0, 6421, 1314, 1, 0, 0, 0, 6422, 6423, 7, 22, 0, 0, 6423, 6424, 5, 38, 0, 0, 6424, 6425, 3, 1307, 651, 0, 6425, 1316, 1, 0, 0, 0, 6426, 6427, 3, 1319, 657, 0, 6427, 6428, 5, 39, 0, 0, 6428, 1318, 1, 0, 0, 0, 6429, 6435, 5, 39, 0, 0, 6430, 6431, 5, 39, 0, 0, 6431, 6434, 5, 39, 0, 0, 6432, 6434, 8, 37, 0, 0, 6433, 6430, 1, 0, 0, 0, 6433, 6432, 1, 0, 0, 0, 6434, 6437, 1, 0, 0, 0, 6435, 6433, 1, 0, 0, 0, 6435, 6436, 1, 0, 0, 0, 6436, 1320, 1, 0, 0, 0, 6437, 6435, 1, 0, 0, 0, 6438, 6439, 7, 10, 0, 0, 6439, 6440, 5, 39, 0, 0, 6440, 6441, 1, 0, 0, 0, 6441, 6442, 6, 658, 2, 0, 6442, 6443, 6, 658, 3, 0, 6443, 1322, 1, 0, 0, 0, 6444, 6445, 3, 1325, 660, 0, 6445, 6446, 5, 39, 0, 0, 6446, 1324, 1, 0, 0, 0, 6447, 6448, 7, 22, 0, 0, 6448, 6449, 5, 38, 0, 0, 6449, 6450, 3, 1319, 657, 0, 6450, 1326, 1, 0, 0, 0, 6451, 6453, 5, 36, 0, 0, 6452, 6454, 3, 1329, 662, 0, 6453, 6452, 1, 0, 0, 0, 6453, 6454, 1, 0, 0, 0, 6454, 6455, 1, 0, 0, 0, 6455, 6456, 5, 36, 0, 0, 6456, 6457, 6, 661, 4, 0, 6457, 6458, 1, 0, 0, 0, 6458, 6459, 6, 661, 5, 0, 6459, 1328, 1, 0, 0, 0, 6460, 6464, 3, 1295, 645, 0, 6461, 6463, 3, 1299, 647, 0, 6462, 6461, 1, 0, 0, 0, 6463, 6466, 1, 0, 0, 0, 6464, 6462, 1, 0, 0, 0, 6464, 6465, 1, 0, 0, 0, 6465, 1330, 1, 0, 0, 0, 6466, 6464, 1, 0, 0, 0, 6467, 6468, 3, 1333, 664, 0, 6468, 6469, 5, 39, 0, 0, 6469, 1332, 1, 0, 0, 0, 6470, 6471, 7, 18, 0, 0, 6471, 6475, 5, 39, 0, 0, 6472, 6474, 7, 38, 0, 0, 6473, 6472, 1, 0, 0, 0, 6474, 6477, 1, 0, 0, 0, 6475, 6473, 1, 0, 0, 0, 6475, 6476, 1, 0, 0, 0, 6476, 1334, 1, 0, 0, 0, 6477, 6475, 1, 0, 0, 0, 6478, 6479, 3, 1337, 666, 0, 6479, 6480, 5, 39, 0, 0, 6480, 1336, 1, 0, 0, 0, 6481, 6482, 7, 18, 0, 0, 6482, 6483, 3, 1319, 657, 0, 6483, 1338, 1, 0, 0, 0, 6484, 6485, 3, 1341, 668, 0, 6485, 6486, 5, 39, 0, 0, 6486, 1340, 1, 0, 0, 0, 6487, 6488, 7, 26, 0, 0, 6488, 6492, 5, 39, 0, 0, 6489, 6491, 7, 39, 0, 0, 6490, 6489, 1, 0, 0, 0, 6491, 6494, 1, 0, 0, 0, 6492, 6490, 1, 0, 0, 0, 6492, 6493, 1, 0, 0, 0, 6493, 1342, 1, 0, 0, 0, 6494, 6492, 1, 0, 0, 0, 6495, 6496, 3, 1345, 670, 0, 6496, 6497, 5, 39, 0, 0, 6497, 1344, 1, 0, 0, 0, 6498, 6499, 7, 26, 0, 0, 6499, 6500, 3, 1319, 657, 0, 6500, 1346, 1, 0, 0, 0, 6501, 6502, 3, 1353, 674, 0, 6502, 1348, 1, 0, 0, 0, 6503, 6504, 3, 1353, 674, 0, 6504, 6505, 5, 46, 0, 0, 6505, 6506, 5, 46, 0, 0, 6506, 6507, 1, 0, 0, 0, 6507, 6508, 6, 672, 6, 0, 6508, 1350, 1, 0, 0, 0, 6509, 6510, 3, 1353, 674, 0, 6510, 6512, 5, 46, 0, 0, 6511, 6513, 3, 1353, 674, 0, 6512, 6511, 1, 0, 0, 0, 6512, 6513, 1, 0, 0, 0, 6513, 6519, 1, 0, 0, 0, 6514, 6516, 7, 10, 0, 0, 6515, 6517, 7, 1, 0, 0, 6516, 6515, 1, 0, 0, 0, 6516, 6517, 1, 0, 0, 0, 6517, 6518, 1, 0, 0, 0, 6518, 6520, 3, 1353, 674, 0, 6519, 6514, 1, 0, 0, 0, 6519, 6520, 1, 0, 0, 0, 6520, 6538, 1, 0, 0, 0, 6521, 6522, 5, 46, 0, 0, 6522, 6528, 3, 1353, 674, 0, 6523, 6525, 7, 10, 0, 0, 6524, 6526, 7, 1, 0, 0, 6525, 6524, 1, 0, 0, 0, 6525, 6526, 1, 0, 0, 0, 6526, 6527, 1, 0, 0, 0, 6527, 6529, 3, 1353, 674, 0, 6528, 6523, 1, 0, 0, 0, 6528, 6529, 1, 0, 0, 0, 6529, 6538, 1, 0, 0, 0, 6530, 6531, 3, 1353, 674, 0, 6531, 6533, 7, 10, 0, 0, 6532, 6534, 7, 1, 0, 0, 6533, 6532, 1, 0, 0, 0, 6533, 6534, 1, 0, 0, 0, 6534, 6535, 1, 0, 0, 0, 6535, 6536, 3, 1353, 674, 0, 6536, 6538, 1, 0, 0, 0, 6537, 6509, 1, 0, 0, 0, 6537, 6521, 1, 0, 0, 0, 6537, 6530, 1, 0, 0, 0, 6538, 1352, 1, 0, 0, 0, 6539, 6541, 7, 0, 0, 0, 6540, 6539, 1, 0, 0, 0, 6541, 6542, 1, 0, 0, 0, 6542, 6540, 1, 0, 0, 0, 6542, 6543, 1, 0, 0, 0, 6543, 1354, 1, 0, 0, 0, 6544, 6545, 5, 58, 0, 0, 6545, 6549, 7, 40, 0, 0, 6546, 6548, 7, 41, 0, 0, 6547, 6546, 1, 0, 0, 0, 6548, 6551, 1, 0, 0, 0, 6549, 6547, 1, 0, 0, 0, 6549, 6550, 1, 0, 0, 0, 6550, 1356, 1, 0, 0, 0, 6551, 6549, 1, 0, 0, 0, 6552, 6553, 5, 58, 0, 0, 6553, 6554, 5, 34, 0, 0, 6554, 6562, 1, 0, 0, 0, 6555, 6556, 5, 92, 0, 0, 6556, 6561, 9, 0, 0, 0, 6557, 6558, 5, 34, 0, 0, 6558, 6561, 5, 34, 0, 0, 6559, 6561, 8, 42, 0, 0, 6560, 6555, 1, 0, 0, 0, 6560, 6557, 1, 0, 0, 0, 6560, 6559, 1, 0, 0, 0, 6561, 6564, 1, 0, 0, 0, 6562, 6560, 1, 0, 0, 0, 6562, 6563, 1, 0, 0, 0, 6563, 6565, 1, 0, 0, 0, 6564, 6562, 1, 0, 0, 0, 6565, 6566, 5, 34, 0, 0, 6566, 1358, 1, 0, 0, 0, 6567, 6569, 7, 43, 0, 0, 6568, 6567, 1, 0, 0, 0, 6569, 6570, 1, 0, 0, 0, 6570, 6568, 1, 0, 0, 0, 6570, 6571, 1, 0, 0, 0, 6571, 6572, 1, 0, 0, 0, 6572, 6573, 6, 677, 7, 0, 6573, 1360, 1, 0, 0, 0, 6574, 6576, 5, 13, 0, 0, 6575, 6577, 5, 10, 0, 0, 6576, 6575, 1, 0, 0, 0, 6576, 6577, 1, 0, 0, 0, 6577, 6580, 1, 0, 0, 0, 6578, 6580, 5, 10, 0, 0, 6579, 6574, 1, 0, 0, 0, 6579, 6578, 1, 0, 0, 0, 6580, 6581, 1, 0, 0, 0, 6581, 6582, 6, 678, 7, 0, 6582, 1362, 1, 0, 0, 0, 6583, 6584, 5, 45, 0, 0, 6584, 6585, 5, 45, 0, 0, 6585, 6589, 1, 0, 0, 0, 6586, 6588, 8, 44, 0, 0, 6587, 6586, 1, 0, 0, 0, 6588, 6591, 1, 0, 0, 0, 6589, 6587, 1, 0, 0, 0, 6589, 6590, 1, 0, 0, 0, 6590, 6592, 1, 0, 0, 0, 6591, 6589, 1, 0, 0, 0, 6592, 6593, 6, 679, 7, 0, 6593, 1364, 1, 0, 0, 0, 6594, 6595, 5, 47, 0, 0, 6595, 6596, 5, 42, 0, 0, 6596, 6619, 1, 0, 0, 0, 6597, 6599, 5, 47, 0, 0, 6598, 6597, 1, 0, 0, 0, 6599, 6602, 1, 0, 0, 0, 6600, 6598, 1, 0, 0, 0, 6600, 6601, 1, 0, 0, 0, 6601, 6603, 1, 0, 0, 0, 6602, 6600, 1, 0, 0, 0, 6603, 6618, 3, 1365, 680, 0, 6604, 6618, 8, 45, 0, 0, 6605, 6607, 5, 47, 0, 0, 6606, 6605, 1, 0, 0, 0, 6607, 6608, 1, 0, 0, 0, 6608, 6606, 1, 0, 0, 0, 6608, 6609, 1, 0, 0, 0, 6609, 6610, 1, 0, 0, 0, 6610, 6618, 8, 45, 0, 0, 6611, 6613, 5, 42, 0, 0, 6612, 6611, 1, 0, 0, 0, 6613, 6614, 1, 0, 0, 0, 6614, 6612, 1, 0, 0, 0, 6614, 6615, 1, 0, 0, 0, 6615, 6616, 1, 0, 0, 0, 6616, 6618, 8, 45, 0, 0, 6617, 6600, 1, 0, 0, 0, 6617, 6604, 1, 0, 0, 0, 6617, 6606, 1, 0, 0, 0, 6617, 6612, 1, 0, 0, 0, 6618, 6621, 1, 0, 0, 0, 6619, 6617, 1, 0, 0, 0, 6619, 6620, 1, 0, 0, 0, 6620, 6625, 1, 0, 0, 0, 6621, 6619, 1, 0, 0, 0, 6622, 6624, 5, 42, 0, 0, 6623, 6622, 1, 0, 0, 0, 6624, 6627, 1, 0, 0, 0, 6625, 6623, 1, 0, 0, 0, 6625, 6626, 1, 0, 0, 0, 6626, 6628, 1, 0, 0, 0, 6627, 6625, 1, 0, 0, 0, 6628, 6629, 5, 42, 0, 0, 6629, 6630, 5, 47, 0, 0, 6630, 6631, 1, 0, 0, 0, 6631, 6632, 6, 680, 7, 0, 6632, 1366, 1, 0, 0, 0, 6633, 6634, 5, 47, 0, 0, 6634, 6635, 5, 42, 0, 0, 6635, 6660, 1, 0, 0, 0, 6636, 6638, 5, 47, 0, 0, 6637, 6636, 1, 0, 0, 0, 6638, 6641, 1, 0, 0, 0, 6639, 6637, 1, 0, 0, 0, 6639, 6640, 1, 0, 0, 0, 6640, 6642, 1, 0, 0, 0, 6641, 6639, 1, 0, 0, 0, 6642, 6659, 3, 1365, 680, 0, 6643, 6659, 8, 45, 0, 0, 6644, 6646, 5, 47, 0, 0, 6645, 6644, 1, 0, 0, 0, 6646, 6647, 1, 0, 0, 0, 6647, 6645, 1, 0, 0, 0, 6647, 6648, 1, 0, 0, 0, 6648, 6649, 1, 0, 0, 0, 6649, 6657, 8, 45, 0, 0, 6650, 6652, 5, 42, 0, 0, 6651, 6650, 1, 0, 0, 0, 6652, 6653, 1, 0, 0, 0, 6653, 6651, 1, 0, 0, 0, 6653, 6654, 1, 0, 0, 0, 6654, 6655, 1, 0, 0, 0, 6655, 6657, 8, 45, 0, 0, 6656, 6645, 1, 0, 0, 0, 6656, 6651, 1, 0, 0, 0, 6657, 6659, 1, 0, 0, 0, 6658, 6639, 1, 0, 0, 0, 6658, 6643, 1, 0, 0, 0, 6658, 6656, 1, 0, 0, 0, 6659, 6662, 1, 0, 0, 0, 6660, 6658, 1, 0, 0, 0, 6660, 6661, 1, 0, 0, 0, 6661, 6680, 1, 0, 0, 0, 6662, 6660, 1, 0, 0, 0, 6663, 6665, 5, 47, 0, 0, 6664, 6663, 1, 0, 0, 0, 6665, 6666, 1, 0, 0, 0, 6666, 6664, 1, 0, 0, 0, 6666, 6667, 1, 0, 0, 0, 6667, 6681, 1, 0, 0, 0, 6668, 6670, 5, 42, 0, 0, 6669, 6668, 1, 0, 0, 0, 6670, 6671, 1, 0, 0, 0, 6671, 6669, 1, 0, 0, 0, 6671, 6672, 1, 0, 0, 0, 6672, 6681, 1, 0, 0, 0, 6673, 6675, 5, 47, 0, 0, 6674, 6673, 1, 0, 0, 0, 6675, 6678, 1, 0, 0, 0, 6676, 6674, 1, 0, 0, 0, 6676, 6677, 1, 0, 0, 0, 6677, 6679, 1, 0, 0, 0, 6678, 6676, 1, 0, 0, 0, 6679, 6681, 3, 1367, 681, 0, 6680, 6664, 1, 0, 0, 0, 6680, 6669, 1, 0, 0, 0, 6680, 6676, 1, 0, 0, 0, 6680, 6681, 1, 0, 0, 0, 6681, 6682, 1, 0, 0, 0, 6682, 6683, 6, 681, 8, 0, 6683, 1368, 1, 0, 0, 0, 6684, 6696, 5, 92, 0, 0, 6685, 6695, 8, 46, 0, 0, 6686, 6690, 5, 34, 0, 0, 6687, 6689, 8, 47, 0, 0, 6688, 6687, 1, 0, 0, 0, 6689, 6692, 1, 0, 0, 0, 6690, 6688, 1, 0, 0, 0, 6690, 6691, 1, 0, 0, 0, 6691, 6693, 1, 0, 0, 0, 6692, 6690, 1, 0, 0, 0, 6693, 6695, 5, 34, 0, 0, 6694, 6685, 1, 0, 0, 0, 6694, 6686, 1, 0, 0, 0, 6695, 6698, 1, 0, 0, 0, 6696, 6694, 1, 0, 0, 0, 6696, 6697, 1, 0, 0, 0, 6697, 6706, 1, 0, 0, 0, 6698, 6696, 1, 0, 0, 0, 6699, 6703, 5, 34, 0, 0, 6700, 6702, 8, 47, 0, 0, 6701, 6700, 1, 0, 0, 0, 6702, 6705, 1, 0, 0, 0, 6703, 6701, 1, 0, 0, 0, 6703, 6704, 1, 0, 0, 0, 6704, 6707, 1, 0, 0, 0, 6705, 6703, 1, 0, 0, 0, 6706, 6699, 1, 0, 0, 0, 6706, 6707, 1, 0, 0, 0, 6707, 1370, 1, 0, 0, 0, 6708, 6709, 5, 92, 0, 0, 6709, 6710, 5, 92, 0, 0, 6710, 1372, 1, 0, 0, 0, 6711, 6712, 9, 0, 0, 0, 6712, 1374, 1, 0, 0, 0, 6713, 6714, 3, 1379, 687, 0, 6714, 6715, 5, 39, 0, 0, 6715, 6716, 1, 0, 0, 0, 6716, 6717, 6, 685, 9, 0, 6717, 1376, 1, 0, 0, 0, 6718, 6720, 3, 1379, 687, 0, 6719, 6721, 5, 92, 0, 0, 6720, 6719, 1, 0, 0, 0, 6720, 6721, 1, 0, 0, 0, 6721, 6722, 1, 0, 0, 0, 6722, 6723, 5, 0, 0, 1, 6723, 1378, 1, 0, 0, 0, 6724, 6725, 5, 39, 0, 0, 6725, 6748, 5, 39, 0, 0, 6726, 6744, 5, 92, 0, 0, 6727, 6728, 5, 120, 0, 0, 6728, 6745, 7, 39, 0, 0, 6729, 6730, 5, 117, 0, 0, 6730, 6731, 7, 39, 0, 0, 6731, 6732, 7, 39, 0, 0, 6732, 6733, 7, 39, 0, 0, 6733, 6745, 7, 39, 0, 0, 6734, 6735, 5, 85, 0, 0, 6735, 6736, 7, 39, 0, 0, 6736, 6737, 7, 39, 0, 0, 6737, 6738, 7, 39, 0, 0, 6738, 6739, 7, 39, 0, 0, 6739, 6740, 7, 39, 0, 0, 6740, 6741, 7, 39, 0, 0, 6741, 6742, 7, 39, 0, 0, 6742, 6745, 7, 39, 0, 0, 6743, 6745, 8, 48, 0, 0, 6744, 6727, 1, 0, 0, 0, 6744, 6729, 1, 0, 0, 0, 6744, 6734, 1, 0, 0, 0, 6744, 6743, 1, 0, 0, 0, 6745, 6748, 1, 0, 0, 0, 6746, 6748, 8, 49, 0, 0, 6747, 6724, 1, 0, 0, 0, 6747, 6726, 1, 0, 0, 0, 6747, 6746, 1, 0, 0, 0, 6748, 6751, 1, 0, 0, 0, 6749, 6747, 1, 0, 0, 0, 6749, 6750, 1, 0, 0, 0, 6750, 1380, 1, 0, 0, 0, 6751, 6749, 1, 0, 0, 0, 6752, 6753, 3, 1385, 690, 0, 6753, 6754, 5, 39, 0, 0, 6754, 6755, 1, 0, 0, 0, 6755, 6756, 6, 688, 9, 0, 6756, 1382, 1, 0, 0, 0, 6757, 6759, 3, 1385, 690, 0, 6758, 6760, 5, 92, 0, 0, 6759, 6758, 1, 0, 0, 0, 6759, 6760, 1, 0, 0, 0, 6760, 6761, 1, 0, 0, 0, 6761, 6762, 5, 0, 0, 1, 6762, 1384, 1, 0, 0, 0, 6763, 6764, 5, 39, 0, 0, 6764, 6769, 5, 39, 0, 0, 6765, 6766, 5, 92, 0, 0, 6766, 6769, 9, 0, 0, 0, 6767, 6769, 8, 49, 0, 0, 6768, 6763, 1, 0, 0, 0, 6768, 6765, 1, 0, 0, 0, 6768, 6767, 1, 0, 0, 0, 6769, 6772, 1, 0, 0, 0, 6770, 6768, 1, 0, 0, 0, 6770, 6771, 1, 0, 0, 0, 6771, 1386, 1, 0, 0, 0, 6772, 6770, 1, 0, 0, 0, 6773, 6774, 3, 1359, 677, 0, 6774, 6775, 1, 0, 0, 0, 6775, 6776, 6, 691, 10, 0, 6776, 6777, 6, 691, 7, 0, 6777, 1388, 1, 0, 0, 0, 6778, 6779, 3, 1361, 678, 0, 6779, 6780, 1, 0, 0, 0, 6780, 6781, 6, 692, 11, 0, 6781, 6782, 6, 692, 7, 0, 6782, 6783, 6, 692, 12, 0, 6783, 1390, 1, 0, 0, 0, 6784, 6785, 6, 693, 13, 0, 6785, 6786, 1, 0, 0, 0, 6786, 6787, 6, 693, 14, 0, 6787, 6788, 6, 693, 15, 0, 6788, 1392, 1, 0, 0, 0, 6789, 6790, 3, 1359, 677, 0, 6790, 6791, 1, 0, 0, 0, 6791, 6792, 6, 694, 10, 0, 6792, 6793, 6, 694, 7, 0, 6793, 1394, 1, 0, 0, 0, 6794, 6795, 3, 1361, 678, 0, 6795, 6796, 1, 0, 0, 0, 6796, 6797, 6, 695, 11, 0, 6797, 6798, 6, 695, 7, 0, 6798, 1396, 1, 0, 0, 0, 6799, 6800, 5, 39, 0, 0, 6800, 6801, 1, 0, 0, 0, 6801, 6802, 6, 696, 2, 0, 6802, 6803, 6, 696, 16, 0, 6803, 1398, 1, 0, 0, 0, 6804, 6805, 6, 697, 17, 0, 6805, 6806, 1, 0, 0, 0, 6806, 6807, 6, 697, 14, 0, 6807, 6808, 6, 697, 15, 0, 6808, 1400, 1, 0, 0, 0, 6809, 6811, 8, 50, 0, 0, 6810, 6809, 1, 0, 0, 0, 6811, 6812, 1, 0, 0, 0, 6812, 6810, 1, 0, 0, 0, 6812, 6813, 1, 0, 0, 0, 6813, 6822, 1, 0, 0, 0, 6814, 6818, 5, 36, 0, 0, 6815, 6817, 8, 50, 0, 0, 6816, 6815, 1, 0, 0, 0, 6817, 6820, 1, 0, 0, 0, 6818, 6816, 1, 0, 0, 0, 6818, 6819, 1, 0, 0, 0, 6819, 6822, 1, 0, 0, 0, 6820, 6818, 1, 0, 0, 0, 6821, 6810, 1, 0, 0, 0, 6821, 6814, 1, 0, 0, 0, 6822, 1402, 1, 0, 0, 0, 6823, 6825, 5, 36, 0, 0, 6824, 6826, 3, 1329, 662, 0, 6825, 6824, 1, 0, 0, 0, 6825, 6826, 1, 0, 0, 0, 6826, 6827, 1, 0, 0, 0, 6827, 6828, 5, 36, 0, 0, 6828, 6829, 1, 0, 0, 0, 6829, 6830, 4, 699, 8, 0, 6830, 6831, 6, 699, 18, 0, 6831, 6832, 1, 0, 0, 0, 6832, 6833, 6, 699, 15, 0, 6833, 1404, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1472, 1478, 1480, 1485, 1489, 1491, 1494, 1503, 1505, 1510, 1515, 1517, 6367, 6376, 6380, 6384, 6393, 6395, 6405, 6407, 6433, 6435, 6453, 6464, 6475, 6492, 6512, 6516, 6519, 6525, 6528, 6533, 6537, 6542, 6549, 6560, 6562, 6570, 6576, 6579, 6589, 6600, 6608, 6614, 6617, 6619, 6625, 6639, 6647, 6653, 6656, 6658, 6660, 6666, 6671, 6676, 6680, 6690, 6694, 6696, 6703, 6706, 6720, 6744, 6747, 6749, 6759, 6768, 6770, 6812, 6818, 6821, 6825, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 661, 1, 5, 4, 0, 1, 672, 2, 0, 1, 0, 1, 681, 3, 2, 2, 0, 7, 668, 0, 7, 669, 0, 2, 3, 0, 1, 693, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 697, 5, 1, 699, 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 1b20a09961..0000000000 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.java +++ /dev/null @@ -1,5276 +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.2 - - -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.2", 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, TOPICS=96, STREAM=97, - ZVIEW=98, ZVIEWS=99, TRAILING=100, TRUE_P=101, UNION=102, UNIQUE=103, - USER=104, USING=105, VARIADIC=106, WHEN=107, WHERE=108, WINDOW=109, WITH=110, - AUTHORIZATION=111, BINARY=112, COLLATION=113, CONCURRENTLY=114, CROSS=115, - CURRENT_SCHEMA=116, FREEZE=117, FULL=118, ILIKE=119, INNER_P=120, IS=121, - ISNULL=122, JOIN=123, LEFT=124, LIKE=125, NATURAL=126, NOTNULL=127, OUTER_P=128, - OVER=129, OVERLAPS=130, RIGHT=131, SIMILAR=132, VERBOSE=133, ABORT_P=134, - ABSOLUTE_P=135, ACCESS=136, ACTION=137, ADD_P=138, ADMIN=139, AFTER=140, - AGGREGATE=141, ALSO=142, ALTER=143, ALWAYS=144, ASSERTION=145, ASSIGNMENT=146, - AT=147, ATTRIBUTE=148, BACKWARD=149, BEFORE=150, BEGIN_P=151, BY=152, - CACHE=153, CALLED=154, CASCADE=155, CASCADED=156, CATALOG=157, CHAIN=158, - CHARACTERISTICS=159, CHECKPOINT=160, CLASS=161, CLOSE=162, CLUSTER=163, - COMMENT=164, COMMENTS=165, COMMIT=166, COMMITTED=167, CONFIGURATION=168, - CONNECTION=169, CONSTRAINTS=170, CONTENT_P=171, CONTINUE_P=172, CONVERSION_P=173, - COPY=174, COST=175, CSV=176, CURSOR=177, CYCLE=178, DATA_P=179, DATABASE=180, - DAY_P=181, DEALLOCATE=182, DECLARE=183, DEFAULTS=184, DEFERRED=185, DEFINER=186, - DELETE_P=187, DELIMITER=188, DELIMITERS=189, DICTIONARY=190, DISABLE_P=191, - DISCARD=192, DOCUMENT_P=193, DOMAIN_P=194, DOUBLE_P=195, DROP=196, EACH=197, - ENABLE_P=198, ENCODING=199, ENCRYPTED=200, ENUM_P=201, ESCAPE=202, EVENT=203, - EXCLUDE=204, EXCLUDING=205, EXCLUSIVE=206, EXECUTE=207, EXPLAIN=208, EXTENSION=209, - EXTERNAL=210, FAMILY=211, FIRST_P=212, FOLLOWING=213, FORCE=214, FORWARD=215, - FUNCTION=216, FUNCTIONS=217, GLOBAL=218, GRANTED=219, HANDLER=220, HEADER_P=221, - HOLD=222, HOUR_P=223, IDENTITY_P=224, IF_P=225, IMMEDIATE=226, IMMUTABLE=227, - IMPLICIT_P=228, INCLUDING=229, INCREMENT=230, INDEX=231, INDEXES=232, - INHERIT=233, INHERITS=234, INLINE_P=235, INSENSITIVE=236, INSERT=237, - INSTEAD=238, INVOKER=239, ISOLATION=240, KEY=241, LABEL=242, LANGUAGE=243, - LARGE_P=244, LAST_P=245, LEAKPROOF=246, LEVEL=247, LISTEN=248, LOAD=249, - LOCAL=250, LOCATION=251, LOCK_P=252, MAPPING=253, MATCH=254, MATCHED=255, - MATERIALIZED=256, MAXVALUE=257, MERGE=258, MINUTE_P=259, MINVALUE=260, - MODE=261, MONTH_P=262, MOVE=263, NAME_P=264, NAMES=265, NEXT=266, NO=267, - NOTHING=268, NOTIFY=269, NOWAIT=270, NULLS_P=271, OBJECT_P=272, OF=273, - OFF=274, OIDS=275, OPERATOR=276, OPTION=277, OPTIONS=278, OWNED=279, OWNER=280, - PARSER=281, PARTIAL=282, PARTITION=283, PASSING=284, PASSWORD=285, PLANS=286, - PRECEDING=287, PREPARE=288, PREPARED=289, PRESERVE=290, PRIOR=291, PRIVILEGES=292, - PROCEDURAL=293, PROCEDURE=294, PROGRAM=295, QUOTE=296, RANGE=297, READ=298, - REASSIGN=299, RECHECK=300, RECURSIVE=301, REF=302, REFRESH=303, REINDEX=304, - RELATIVE_P=305, RELEASE=306, RENAME=307, REPEATABLE=308, REPLACE=309, - REPLICA=310, RESET=311, RESTART=312, RESTRICT=313, RETURNS=314, REVOKE=315, - ROLE=316, ROLLBACK=317, ROWS=318, RULE=319, SAVEPOINT=320, SCHEMA=321, - SCROLL=322, SEARCH=323, SECOND_P=324, SECURITY=325, SEQUENCE=326, SEQUENCES=327, - SERIALIZABLE=328, SERVER=329, SESSION=330, SET=331, SHARE=332, SHOW=333, - SIMPLE=334, SNAPSHOT=335, STABLE=336, STANDALONE_P=337, START=338, STATEMENT=339, - STATISTICS=340, STDIN=341, STDOUT=342, STORAGE=343, STRICT_P=344, STRIP_P=345, - SYSID=346, SYSTEM_P=347, TABLES=348, TABLESPACE=349, TEMP=350, TEMPLATE=351, - TEMPORARY=352, TEXT_P=353, TRANSACTION=354, TRIGGER=355, TRUNCATE=356, - TRUSTED=357, TYPE_P=358, TYPES_P=359, UNBOUNDED=360, UNCOMMITTED=361, - UNENCRYPTED=362, UNKNOWN=363, UNLISTEN=364, UNLOGGED=365, UNTIL=366, UPDATE=367, - VACUUM=368, VALID=369, VALIDATE=370, VALIDATOR=371, VARYING=372, VERSION_P=373, - VIEW=374, VOLATILE=375, WHITESPACE_P=376, WITHOUT=377, WORK=378, WRAPPER=379, - WRITE=380, XML_P=381, YEAR_P=382, YES_P=383, ZONE=384, BETWEEN=385, BIGINT=386, - BIT=387, BOOLEAN_P=388, CHAR_P=389, CHARACTER=390, COALESCE=391, DEC=392, - DECIMAL_P=393, EXISTS=394, EXTRACT=395, FLOAT_P=396, GREATEST=397, INOUT=398, - INT_P=399, INTEGER=400, INTERVAL=401, LEAST=402, NATIONAL=403, NCHAR=404, - NONE=405, NULLIF=406, NUMERIC=407, OVERLAY=408, POSITION=409, PRECISION=410, - REAL=411, ROW=412, SETOF=413, SMALLINT=414, SUBSTRING=415, TIME=416, TIMESTAMP=417, - TREAT=418, TRIM=419, VALUES=420, VARCHAR=421, XMLATTRIBUTES=422, XMLCOMMENT=423, - XMLAGG=424, XML_IS_WELL_FORMED=425, XML_IS_WELL_FORMED_DOCUMENT=426, XML_IS_WELL_FORMED_CONTENT=427, - XPATH=428, XPATH_EXISTS=429, XMLCONCAT=430, XMLELEMENT=431, XMLEXISTS=432, - XMLFOREST=433, XMLPARSE=434, XMLPI=435, XMLROOT=436, XMLSERIALIZE=437, - CALL=438, CURRENT_P=439, ATTACH=440, DETACH=441, EXPRESSION=442, GENERATED=443, - LOGGED=444, STORED=445, INCLUDE=446, ROUTINE=447, TRANSFORM=448, IMPORT_P=449, - POLICY=450, METHOD=451, REFERENCING=452, NEW=453, OLD=454, VALUE_P=455, - SUBSCRIPTION=456, PUBLICATION=457, OUT_P=458, END_P=459, ROUTINES=460, - SCHEMAS=461, PROCEDURES=462, INPUT_P=463, SUPPORT=464, PARALLEL=465, SQL_P=466, - DEPENDS=467, OVERRIDING=468, CONFLICT=469, SKIP_P=470, LOCKED=471, TIES=472, - ROLLUP=473, CUBE=474, GROUPING=475, SETS=476, TABLESAMPLE=477, ORDINALITY=478, - XMLTABLE=479, COLUMNS=480, XMLNAMESPACES=481, ROWTYPE=482, NORMALIZED=483, - WITHIN=484, FILTER=485, GROUPS=486, OTHERS=487, NFC=488, NFD=489, NFKC=490, - NFKD=491, UESCAPE=492, VIEWS=493, NORMALIZE=494, DUMP=495, PRINT_STRICT_PARAMS=496, - VARIABLE_CONFLICT=497, ERROR=498, USE_VARIABLE=499, USE_COLUMN=500, ALIAS=501, - CONSTANT=502, PERFORM=503, GET=504, DIAGNOSTICS=505, STACKED=506, ELSIF=507, - WHILE=508, REVERSE=509, FOREACH=510, SLICE=511, EXIT=512, RETURN=513, - QUERY=514, RAISE=515, SQLSTATE=516, DEBUG=517, LOG=518, INFO=519, NOTICE=520, - WARNING=521, EXCEPTION=522, ASSERT=523, LOOP=524, OPEN=525, ABS=526, CBRT=527, - CEIL=528, CEILING=529, DEGREES=530, DIV=531, EXP=532, FACTORIAL=533, FLOOR=534, - GCD=535, LCM=536, LN=537, LOG10=538, MIN_SCALE=539, MOD=540, PI=541, POWER=542, - RADIANS=543, ROUND=544, SCALE=545, SIGN=546, SQRT=547, TRIM_SCALE=548, - TRUNC=549, WIDTH_BUCKET=550, RANDOM=551, SETSEED=552, ACOS=553, ACOSD=554, - ASIN=555, ASIND=556, ATAN=557, ATAND=558, ATAN2=559, ATAN2D=560, COS=561, - COSD=562, COT=563, COTD=564, SIN=565, SIND=566, TAN=567, TAND=568, SINH=569, - COSH=570, TANH=571, ASINH=572, ACOSH=573, ATANH=574, BIT_LENGTH=575, CHAR_LENGTH=576, - CHARACTER_LENGTH=577, LOWER=578, OCTET_LENGTH=579, UPPER=580, ASCII=581, - BTRIM=582, CHR=583, CONCAT=584, CONCAT_WS=585, FORMAT=586, INITCAP=587, - LENGTH=588, LPAD=589, LTRIM=590, MD5=591, PARSE_IDENT=592, PG_CLIENT_ENCODING=593, - QUOTE_IDENT=594, QUOTE_LITERAL=595, QUOTE_NULLABLE=596, REGEXP_COUNT=597, - REGEXP_INSTR=598, REGEXP_LIKE=599, REGEXP_MATCH=600, REGEXP_MATCHES=601, - REGEXP_REPLACE=602, REGEXP_SPLIT_TO_ARRAY=603, REGEXP_SPLIT_TO_TABLE=604, - REGEXP_SUBSTR=605, REPEAT=606, RPAD=607, RTRIM=608, SPLIT_PART=609, STARTS_WITH=610, - STRING_TO_ARRAY=611, STRING_TO_TABLE=612, STRPOS=613, SUBSTR=614, TO_ASCII=615, - TO_HEX=616, TRANSLATE=617, UNISTR=618, AGE=619, CLOCK_TIMESTAMP=620, DATE_BIN=621, - DATE_PART=622, DATE_TRUNC=623, ISFINITE=624, JUSTIFY_DAYS=625, JUSTIFY_HOURS=626, - JUSTIFY_INTERVAL=627, MAKE_DATE=628, MAKE_INTERVAL=629, MAKE_TIME=630, - MAKE_TIMESTAMP=631, MAKE_TIMESTAMPTZ=632, NOW=633, STATEMENT_TIMESTAMP=634, - TIMEOFDAY=635, TRANSACTION_TIMESTAMP=636, TO_TIMESTAMP=637, TO_CHAR=638, - TO_DATE=639, TO_NUMBER=640, Identifier=641, QuotedIdentifier=642, UnterminatedQuotedIdentifier=643, - InvalidQuotedIdentifier=644, InvalidUnterminatedQuotedIdentifier=645, - UnicodeQuotedIdentifier=646, UnterminatedUnicodeQuotedIdentifier=647, - InvalidUnicodeQuotedIdentifier=648, InvalidUnterminatedUnicodeQuotedIdentifier=649, - StringConstant=650, UnterminatedStringConstant=651, UnicodeEscapeStringConstant=652, - UnterminatedUnicodeEscapeStringConstant=653, BeginDollarStringConstant=654, - BinaryStringConstant=655, UnterminatedBinaryStringConstant=656, InvalidBinaryStringConstant=657, - InvalidUnterminatedBinaryStringConstant=658, HexadecimalStringConstant=659, - UnterminatedHexadecimalStringConstant=660, InvalidHexadecimalStringConstant=661, - InvalidUnterminatedHexadecimalStringConstant=662, Integral=663, NumericFail=664, - Numeric=665, PLSQLVARIABLENAME=666, PLSQLIDENTIFIER=667, Whitespace=668, - Newline=669, LineComment=670, BlockComment=671, UnterminatedBlockComment=672, - MetaCommand=673, EndMetaCommand=674, ErrorCharacter=675, EscapeStringConstant=676, - UnterminatedEscapeStringConstant=677, InvalidEscapeStringConstant=678, - InvalidUnterminatedEscapeStringConstant=679, AfterEscapeStringConstantMode_NotContinued=680, - AfterEscapeStringConstantWithNewlineMode_NotContinued=681, DollarText=682, - EndDollarStringConstant=683, AfterEscapeStringConstantWithNewlineMode_Continued=684; - 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", "TOPICS", "STREAM", "ZVIEW", "ZVIEWS", "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'", "'TOPICS'", - "'STREAM'", "'ZVIEW'", "'ZVIEWS'", "'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", "TOPICS", "STREAM", "ZVIEW", "ZVIEWS", "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 661: - BeginDollarStringConstant_action((RuleContext)_localctx, actionIndex); - break; - case 672: - NumericFail_action((RuleContext)_localctx, actionIndex); - break; - case 681: - UnterminatedBlockComment_action((RuleContext)_localctx, actionIndex); - break; - case 693: - AfterEscapeStringConstantMode_NotContinued_action((RuleContext)_localctx, actionIndex); - break; - case 697: - AfterEscapeStringConstantWithNewlineMode_NotContinued_action((RuleContext)_localctx, actionIndex); - break; - case 699: - 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 645: - return IdentifierStartChar_sempred((RuleContext)_localctx, predIndex); - case 699: - 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\u02ac\u1ab2\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\u0002\u02b9\u0007\u02b9"+ - "\u0002\u02ba\u0007\u02ba\u0002\u02bb\u0007\u02bb\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\u05bf\b\u001b\u000b\u001b\f\u001b\u05c0\u0001\u001c\u0001"+ - "\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05c7\b\u001c\u000b\u001c\f"+ - "\u001c\u05c8\u0001\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u05ce\b\u001c"+ - "\u0001\u001c\u0001\u001c\u0004\u001c\u05d2\b\u001c\u000b\u001c\f\u001c"+ - "\u05d3\u0001\u001c\u0003\u001c\u05d7\b\u001c\u0001\u001c\u0001\u001c\u0001"+ - "\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0005\u001d\u05e0"+ - "\b\u001d\n\u001d\f\u001d\u05e3\t\u001d\u0001\u001d\u0001\u001d\u0003\u001d"+ - "\u05e7\b\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0004\u001d\u05ec\b"+ - "\u001d\u000b\u001d\f\u001d\u05ed\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\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001f\u0001f\u0001f\u0001"+ - "f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001g\u0001g\u0001g\u0001g\u0001"+ - "g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001i\u0001i\u0001"+ - "i\u0001i\u0001i\u0001i\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\u0001m\u0001"+ - "m\u0001n\u0001n\u0001n\u0001n\u0001n\u0001o\u0001o\u0001o\u0001o\u0001"+ - "o\u0001o\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001q\u0001"+ - "q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001"+ - "r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001"+ - "s\u0001s\u0001s\u0001s\u0001s\u0001t\u0001t\u0001t\u0001t\u0001t\u0001"+ - "t\u0001t\u0001t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001u\u0001"+ - "u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001v\u0001v\u0001"+ - "v\u0001v\u0001v\u0001v\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001"+ - "w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001x\u0001"+ - "x\u0001x\u0001x\u0001x\u0001x\u0001x\u0001y\u0001y\u0001y\u0001y\u0001"+ - "y\u0001z\u0001z\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\u007f\u0001\u007f"+ - "\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u0080\u0001\u0080\u0001\u0080"+ - "\u0001\u0080\u0001\u0080\u0001\u0081\u0001\u0081\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\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\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\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\u008a\u0001\u008a\u0001\u008a\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\u008c\u0001\u008c\u0001\u008d"+ - "\u0001\u008d\u0001\u008d\u0001\u008d\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\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\u0091\u0001\u0091"+ - "\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\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\u0095\u0001\u0095\u0001\u0096\u0001\u0096"+ - "\u0001\u0096\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\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\u0098\u0001\u0098\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\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\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\u009f\u0001\u009f\u0001\u009f"+ - "\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\u00a2\u0001\u00a2\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\u00a3\u0001\u00a3\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\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\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\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\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\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\u00ad"+ - "\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae"+ - "\u0001\u00ae\u0001\u00ae\u0001\u00af\u0001\u00af\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\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\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3"+ - "\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\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\u00b9\u0001\u00b9\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\u00bb\u0001\u00bb\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\u00bf"+ - "\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\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\u00c1"+ - "\u0001\u00c1\u0001\u00c2\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\u00c3\u0001\u00c4"+ - "\u0001\u00c4\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\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\u00c9\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\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\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\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\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\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\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\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\u00d8\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\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\u00db\u0001\u00db\u0001\u00dc"+ - "\u0001\u00dc\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\u00de\u0001\u00de\u0001\u00de"+ - "\u0001\u00df\u0001\u00df\u0001\u00df\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\u00e1\u0001\u00e1\u0001\u00e1"+ - "\u0001\u00e1\u0001\u00e1\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\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\u00e7\u0001\u00e7\u0001\u00e7"+ - "\u0001\u00e8\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\u00e9"+ - "\u0001\u00e9\u0001\u00e9\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\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\u00ed\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\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00f0\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\u00f2\u0001\u00f2\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\u00f3\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\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\u00f9\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\u00fa\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\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\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\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\u0103\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\u0105\u0001\u0106\u0001\u0106\u0001\u0106"+ - "\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0107\u0001\u0107"+ - "\u0001\u0107\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\u0109\u0001\u0109\u0001\u0109"+ - "\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010b"+ - "\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010c\u0001\u010c"+ - "\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010d\u0001\u010d"+ - "\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010e\u0001\u010e\u0001\u010e"+ - "\u0001\u010f\u0001\u010f\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\u0111\u0001\u0111\u0001\u0111\u0001\u0111\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\u0115\u0001\u0115\u0001\u0115\u0001\u0115"+ - "\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\u0117\u0001\u0117\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\u011a"+ - "\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\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\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\u011e\u0001\u011e"+ - "\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\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\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\u0127"+ - "\u0001\u0127\u0001\u0127\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\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\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\u012c\u0001\u012c\u0001\u012c"+ - "\u0001\u012c\u0001\u012c\u0001\u012c\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\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\u0130\u0001\u0130\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\u0133\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\u0137\u0001\u0137\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\u0139\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\u013b"+ - "\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\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\u013e"+ - "\u0001\u013e\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\u0141\u0001\u0141\u0001\u0141\u0001\u0141"+ - "\u0001\u0141\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\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\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\u0148\u0001\u0149"+ - "\u0001\u0149\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\u014a\u0001\u014a"+ - "\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b"+ - "\u0001\u014b\u0001\u014b\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\u014e\u0001\u014e"+ - "\u0001\u014e\u0001\u014e\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f"+ - "\u0001\u014f\u0001\u014f\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\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\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\u0156\u0001\u0156\u0001\u0156\u0001\u0157\u0001\u0157\u0001\u0157"+ - "\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\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\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\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\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\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\u0163\u0001\u0163\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\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\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\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169"+ - "\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\u016b\u0001\u016c\u0001\u016c"+ - "\u0001\u016c\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\u016d\u0001\u016d\u0001\u016d\u0001\u016e\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\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\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\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\u0175\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\u0178\u0001\u0178"+ - "\u0001\u0178\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179"+ - "\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\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\u017b"+ - "\u0001\u017b\u0001\u017b\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c"+ - "\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017d\u0001\u017d"+ - "\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017e\u0001\u017e\u0001\u017e"+ - "\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017f"+ - "\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u0180"+ - "\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0181\u0001\u0181\u0001\u0181"+ - "\u0001\u0181\u0001\u0181\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\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\u0189\u0001\u0189\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\u018a\u0001\u018a\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b"+ - "\u0001\u018c\u0001\u018c\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\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\u0190"+ - "\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\u0192\u0001\u0192\u0001\u0192\u0001\u0192"+ - "\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\u0194\u0001\u0194\u0001\u0194\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\u0196\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197"+ - "\u0001\u0197\u0001\u0197\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\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\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\u01a0\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\u01a2\u0001\u01a2\u0001\u01a2\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\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\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6"+ - "\u0001\u01a6\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\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\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\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\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\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\u01ae\u0001\u01ae\u0001\u01ae"+ - "\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\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\u01b0\u0001\u01b0\u0001\u01b0\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\u01b2\u0001\u01b2"+ - "\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\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\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\u01b7\u0001\u01b8\u0001\u01b8\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\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\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\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\u01c1"+ - "\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\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\u01c5\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\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\u01cb"+ - "\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb\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\u01cc"+ - "\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\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\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\u01d1\u0001\u01d1"+ - "\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\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\u01d6\u0001\u01d6\u0001\u01d6"+ - "\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\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d8\u0001\u01d8"+ - "\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8"+ - "\u0001\u01d8\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9"+ - "\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da"+ - "\u0001\u01da\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\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\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\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\u01e2\u0001\u01e2\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\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\u01e5\u0001\u01e6\u0001\u01e6"+ - "\u0001\u01e6\u0001\u01e6\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\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e9"+ - "\u0001\u01e9\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\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\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\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\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\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\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\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\u01f8\u0001\u01f8\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\u01fa"+ - "\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa"+ - "\u0001\u01fa\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\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\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff"+ - "\u0001\u01ff\u0001\u0200\u0001\u0200\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\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\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\u0206\u0001\u0206\u0001\u0207"+ - "\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\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\u020b\u0001\u020b"+ - "\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c"+ - "\u0001\u020c\u0001\u020c\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d"+ - "\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d"+ - "\u0001\u020e\u0001\u020e\u0001\u020e\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\u0212\u0001\u0212\u0001\u0212"+ - "\u0001\u0212\u0001\u0212\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213"+ - "\u0001\u0213\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\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\u0216"+ - "\u0001\u0216\u0001\u0216\u0001\u0216\u0001\u0217\u0001\u0217\u0001\u0217"+ - "\u0001\u0217\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218\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\u021a"+ - "\u0001\u021a\u0001\u021a\u0001\u021a\u0001\u021b\u0001\u021b\u0001\u021b"+ - "\u0001\u021b\u0001\u021c\u0001\u021c\u0001\u021c\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\u021e\u0001\u021e"+ - "\u0001\u021e\u0001\u021e\u0001\u021f\u0001\u021f\u0001\u021f\u0001\u021f"+ - "\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\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\u0225"+ - "\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0225\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\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\u0229\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u0229"+ - "\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u022a\u0001\u022a\u0001\u022a"+ - "\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022b\u0001\u022b"+ - "\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b"+ - "\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\u022f\u0001\u022f"+ - "\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\u0231\u0001\u0231\u0001\u0232\u0001\u0232\u0001\u0232"+ - "\u0001\u0232\u0001\u0232\u0001\u0232\u0001\u0233\u0001\u0233\u0001\u0233"+ - "\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0234\u0001\u0234"+ - "\u0001\u0234\u0001\u0234\u0001\u0235\u0001\u0235\u0001\u0235\u0001\u0235"+ - "\u0001\u0235\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\u0239\u0001\u0239\u0001\u0239\u0001\u0239"+ - "\u0001\u0239\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\u023d\u0001\u023d\u0001\u023d"+ - "\u0001\u023d\u0001\u023d\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e"+ - "\u0001\u023e\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\u0242\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0242"+ - "\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\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244"+ - "\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\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\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\u0248\u0001\u0248\u0001\u0248\u0001\u0248\u0001\u0248\u0001\u0248"+ - "\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249"+ - "\u0001\u024a\u0001\u024a\u0001\u024a\u0001\u024a\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\u024c\u0001\u024c\u0001\u024c\u0001\u024d\u0001\u024d\u0001\u024d"+ - "\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\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f"+ - "\u0001\u024f\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250"+ - "\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251"+ - "\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\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\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\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\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\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\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\u025d\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e"+ - "\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e"+ - "\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\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\u025f\u0001\u025f"+ - "\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u025f\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\u0260\u0001\u0260\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\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\u0265\u0001\u0265"+ - "\u0001\u0265\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\u0266"+ - "\u0001\u0266\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\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\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\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\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\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\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\u0274\u0001\u0274"+ - "\u0001\u0274\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\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\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\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\u027b\u0001\u027b\u0001\u027b\u0001\u027b"+ - "\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\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"+ - "\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f"+ - "\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u027f"+ - "\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\u0280\u0001\u0280\u0001\u0280\u0001\u0281\u0001\u0281\u0001\u0281"+ - "\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0281\u0001\u0282"+ - "\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282\u0001\u0282"+ - "\u0001\u0282\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283"+ - "\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0283\u0001\u0284"+ - "\u0001\u0284\u0005\u0284\u18de\b\u0284\n\u0284\f\u0284\u18e1\t\u0284\u0001"+ - "\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0001\u0285\u0003"+ - "\u0285\u18e9\b\u0285\u0001\u0286\u0001\u0286\u0003\u0286\u18ed\b\u0286"+ - "\u0001\u0287\u0001\u0287\u0003\u0287\u18f1\b\u0287\u0001\u0288\u0001\u0288"+ - "\u0001\u0288\u0001\u0289\u0001\u0289\u0001\u0289\u0001\u0289\u0005\u0289"+ - "\u18fa\b\u0289\n\u0289\f\u0289\u18fd\t\u0289\u0001\u028a\u0001\u028a\u0001"+ - "\u028a\u0001\u028b\u0001\u028b\u0001\u028b\u0001\u028b\u0005\u028b\u1906"+ - "\b\u028b\n\u028b\f\u028b\u1909\t\u028b\u0001\u028c\u0001\u028c\u0001\u028c"+ - "\u0001\u028c\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028e"+ - "\u0001\u028e\u0001\u028e\u0001\u028e\u0001\u028f\u0001\u028f\u0001\u028f"+ - "\u0001\u028f\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0291\u0001\u0291"+ - "\u0001\u0291\u0001\u0291\u0005\u0291\u1922\b\u0291\n\u0291\f\u0291\u1925"+ - "\t\u0291\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0292\u0001"+ - "\u0292\u0001\u0293\u0001\u0293\u0001\u0293\u0001\u0294\u0001\u0294\u0001"+ - "\u0294\u0001\u0294\u0001\u0295\u0001\u0295\u0003\u0295\u1936\b\u0295\u0001"+ - "\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0296\u0001"+ - "\u0296\u0005\u0296\u193f\b\u0296\n\u0296\f\u0296\u1942\t\u0296\u0001\u0297"+ - "\u0001\u0297\u0001\u0297\u0001\u0298\u0001\u0298\u0001\u0298\u0005\u0298"+ - "\u194a\b\u0298\n\u0298\f\u0298\u194d\t\u0298\u0001\u0299\u0001\u0299\u0001"+ - "\u0299\u0001\u029a\u0001\u029a\u0001\u029a\u0001\u029b\u0001\u029b\u0001"+ - "\u029b\u0001\u029c\u0001\u029c\u0001\u029c\u0005\u029c\u195b\b\u029c\n"+ - "\u029c\f\u029c\u195e\t\u029c\u0001\u029d\u0001\u029d\u0001\u029d\u0001"+ - "\u029e\u0001\u029e\u0001\u029e\u0001\u029f\u0001\u029f\u0001\u02a0\u0001"+ - "\u02a0\u0001\u02a0\u0001\u02a0\u0001\u02a0\u0001\u02a0\u0001\u02a1\u0001"+ - "\u02a1\u0001\u02a1\u0003\u02a1\u1971\b\u02a1\u0001\u02a1\u0001\u02a1\u0003"+ - "\u02a1\u1975\b\u02a1\u0001\u02a1\u0003\u02a1\u1978\b\u02a1\u0001\u02a1"+ - "\u0001\u02a1\u0001\u02a1\u0001\u02a1\u0003\u02a1\u197e\b\u02a1\u0001\u02a1"+ - "\u0003\u02a1\u1981\b\u02a1\u0001\u02a1\u0001\u02a1\u0001\u02a1\u0003\u02a1"+ - "\u1986\b\u02a1\u0001\u02a1\u0001\u02a1\u0003\u02a1\u198a\b\u02a1\u0001"+ - "\u02a2\u0004\u02a2\u198d\b\u02a2\u000b\u02a2\f\u02a2\u198e\u0001\u02a3"+ - "\u0001\u02a3\u0001\u02a3\u0005\u02a3\u1994\b\u02a3\n\u02a3\f\u02a3\u1997"+ - "\t\u02a3\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0001"+ - "\u02a4\u0001\u02a4\u0001\u02a4\u0005\u02a4\u19a1\b\u02a4\n\u02a4\f\u02a4"+ - "\u19a4\t\u02a4\u0001\u02a4\u0001\u02a4\u0001\u02a5\u0004\u02a5\u19a9\b"+ - "\u02a5\u000b\u02a5\f\u02a5\u19aa\u0001\u02a5\u0001\u02a5\u0001\u02a6\u0001"+ - "\u02a6\u0003\u02a6\u19b1\b\u02a6\u0001\u02a6\u0003\u02a6\u19b4\b\u02a6"+ - "\u0001\u02a6\u0001\u02a6\u0001\u02a7\u0001\u02a7\u0001\u02a7\u0001\u02a7"+ - "\u0005\u02a7\u19bc\b\u02a7\n\u02a7\f\u02a7\u19bf\t\u02a7\u0001\u02a7\u0001"+ - "\u02a7\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0005\u02a8\u19c7"+ - "\b\u02a8\n\u02a8\f\u02a8\u19ca\t\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a8"+ - "\u0004\u02a8\u19cf\b\u02a8\u000b\u02a8\f\u02a8\u19d0\u0001\u02a8\u0001"+ - "\u02a8\u0004\u02a8\u19d5\b\u02a8\u000b\u02a8\f\u02a8\u19d6\u0001\u02a8"+ - "\u0005\u02a8\u19da\b\u02a8\n\u02a8\f\u02a8\u19dd\t\u02a8\u0001\u02a8\u0005"+ - "\u02a8\u19e0\b\u02a8\n\u02a8\f\u02a8\u19e3\t\u02a8\u0001\u02a8\u0001\u02a8"+ - "\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a9\u0001\u02a9\u0001\u02a9"+ - "\u0001\u02a9\u0005\u02a9\u19ee\b\u02a9\n\u02a9\f\u02a9\u19f1\t\u02a9\u0001"+ - "\u02a9\u0001\u02a9\u0001\u02a9\u0004\u02a9\u19f6\b\u02a9\u000b\u02a9\f"+ - "\u02a9\u19f7\u0001\u02a9\u0001\u02a9\u0004\u02a9\u19fc\b\u02a9\u000b\u02a9"+ - "\f\u02a9\u19fd\u0001\u02a9\u0003\u02a9\u1a01\b\u02a9\u0005\u02a9\u1a03"+ - "\b\u02a9\n\u02a9\f\u02a9\u1a06\t\u02a9\u0001\u02a9\u0004\u02a9\u1a09\b"+ - "\u02a9\u000b\u02a9\f\u02a9\u1a0a\u0001\u02a9\u0004\u02a9\u1a0e\b\u02a9"+ - "\u000b\u02a9\f\u02a9\u1a0f\u0001\u02a9\u0005\u02a9\u1a13\b\u02a9\n\u02a9"+ - "\f\u02a9\u1a16\t\u02a9\u0001\u02a9\u0003\u02a9\u1a19\b\u02a9\u0001\u02a9"+ - "\u0001\u02a9\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0005\u02aa"+ - "\u1a21\b\u02aa\n\u02aa\f\u02aa\u1a24\t\u02aa\u0001\u02aa\u0005\u02aa\u1a27"+ - "\b\u02aa\n\u02aa\f\u02aa\u1a2a\t\u02aa\u0001\u02aa\u0001\u02aa\u0005\u02aa"+ - "\u1a2e\b\u02aa\n\u02aa\f\u02aa\u1a31\t\u02aa\u0003\u02aa\u1a33\b\u02aa"+ - "\u0001\u02ab\u0001\u02ab\u0001\u02ab\u0001\u02ac\u0001\u02ac\u0001\u02ad"+ - "\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ae\u0001\u02ae"+ - "\u0003\u02ae\u1a41\b\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02af\u0001\u02af"+ - "\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af"+ - "\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af"+ - "\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02af"+ - "\u0003\u02af\u1a59\b\u02af\u0001\u02af\u0005\u02af\u1a5c\b\u02af\n\u02af"+ - "\f\u02af\u1a5f\t\u02af\u0001\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b0"+ - "\u0001\u02b0\u0001\u02b1\u0001\u02b1\u0003\u02b1\u1a68\b\u02b1\u0001\u02b1"+ - "\u0001\u02b1\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2"+ - "\u0005\u02b2\u1a71\b\u02b2\n\u02b2\f\u02b2\u1a74\t\u02b2\u0001\u02b3\u0001"+ - "\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b4\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\u0001\u02b7\u0001\u02b7\u0001\u02b7\u0001"+ - "\u02b7\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001\u02b8\u0001"+ - "\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02ba\u0004"+ - "\u02ba\u1a9b\b\u02ba\u000b\u02ba\f\u02ba\u1a9c\u0001\u02ba\u0001\u02ba"+ - "\u0005\u02ba\u1aa1\b\u02ba\n\u02ba\f\u02ba\u1aa4\t\u02ba\u0003\u02ba\u1aa6"+ - "\b\u02ba\u0001\u02bb\u0001\u02bb\u0003\u02bb\u1aaa\b\u02bb\u0001\u02bb"+ - "\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0001\u02bb"+ - "\u0000\u0000\u02bc\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\u027f\u050b\u0280\u050d\u0281\u050f\u0000"+ - "\u0511\u0000\u0513\u0000\u0515\u0282\u0517\u0283\u0519\u0284\u051b\u0285"+ - "\u051d\u0286\u051f\u0287\u0521\u0288\u0523\u0289\u0525\u028a\u0527\u028b"+ - "\u0529\u0000\u052b\u028c\u052d\u028d\u052f\u028e\u0531\u0000\u0533\u028f"+ - "\u0535\u0290\u0537\u0291\u0539\u0292\u053b\u0293\u053d\u0294\u053f\u0295"+ - "\u0541\u0296\u0543\u0297\u0545\u0298\u0547\u0299\u0549\u0000\u054b\u029a"+ - "\u054d\u029b\u054f\u029c\u0551\u029d\u0553\u029e\u0555\u029f\u0557\u02a0"+ - "\u0559\u02a1\u055b\u02a2\u055d\u02a3\u055f\u02a4\u0561\u02a5\u0563\u0000"+ - "\u0565\u02a6\u0567\u02a7\u0569\u0000\u056b\u0000\u056d\u0000\u056f\u02a8"+ - "\u0571\u0000\u0573\u0000\u0575\u02ac\u0577\u02a9\u0579\u02aa\u057b\u02ab"+ - "\u0005\u0000\u0001\u0002\u0003\u00043\u0001\u000009\u0002\u0000++--\t"+ - "\u0000!!##%&**<@^^``||~~\u0002\u0000*+<>\b\u0000!!##%&?@^^``||~~\u0002"+ - "\u0000AAaa\u0002\u0000LLll\u0002\u0000NNnn\u0002\u0000YYyy\u0002\u0000"+ - "SSss\u0002\u0000EEee\u0002\u0000ZZzz\u0002\u0000DDdd\u0002\u0000RRrr\u0002"+ - "\u0000CCcc\u0002\u0000MMmm\u0002\u0000TTtt\u0002\u0000IIii\u0002\u0000"+ - "BBbb\u0002\u0000OOoo\u0002\u0000HHhh\u0002\u0000KKkk\u0002\u0000UUuu\u0002"+ - "\u0000GGgg\u0002\u0000PPpp\u0002\u0000FFff\u0002\u0000XXxx\u0002\u0000"+ - "VVvv\u0002\u0000WWww\u0002\u0000QQqq\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$"+ - "$\u1afa\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\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\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\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\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\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\u0509\u0001\u0000\u0000\u0000\u0000\u050b"+ - "\u0001\u0000\u0000\u0000\u0000\u050d\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\u052b\u0001\u0000\u0000\u0000\u0000\u052d"+ - "\u0001\u0000\u0000\u0000\u0000\u052f\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\u0543"+ - "\u0001\u0000\u0000\u0000\u0000\u0545\u0001\u0000\u0000\u0000\u0000\u0547"+ - "\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\u0000\u0559"+ - "\u0001\u0000\u0000\u0000\u0000\u055b\u0001\u0000\u0000\u0000\u0000\u055d"+ - "\u0001\u0000\u0000\u0000\u0001\u055f\u0001\u0000\u0000\u0000\u0001\u0561"+ - "\u0001\u0000\u0000\u0000\u0001\u0565\u0001\u0000\u0000\u0000\u0001\u0567"+ - "\u0001\u0000\u0000\u0000\u0002\u056b\u0001\u0000\u0000\u0000\u0002\u056d"+ - "\u0001\u0000\u0000\u0000\u0002\u056f\u0001\u0000\u0000\u0000\u0003\u0571"+ - "\u0001\u0000\u0000\u0000\u0003\u0573\u0001\u0000\u0000\u0000\u0003\u0575"+ - "\u0001\u0000\u0000\u0000\u0003\u0577\u0001\u0000\u0000\u0000\u0004\u0579"+ - "\u0001\u0000\u0000\u0000\u0004\u057b\u0001\u0000\u0000\u0000\u0005\u057d"+ - "\u0001\u0000\u0000\u0000\u0007\u057f\u0001\u0000\u0000\u0000\t\u0581\u0001"+ - "\u0000\u0000\u0000\u000b\u0583\u0001\u0000\u0000\u0000\r\u0585\u0001\u0000"+ - "\u0000\u0000\u000f\u0587\u0001\u0000\u0000\u0000\u0011\u0589\u0001\u0000"+ - "\u0000\u0000\u0013\u058b\u0001\u0000\u0000\u0000\u0015\u058d\u0001\u0000"+ - "\u0000\u0000\u0017\u058f\u0001\u0000\u0000\u0000\u0019\u0591\u0001\u0000"+ - "\u0000\u0000\u001b\u0593\u0001\u0000\u0000\u0000\u001d\u0595\u0001\u0000"+ - "\u0000\u0000\u001f\u0597\u0001\u0000\u0000\u0000!\u0599\u0001\u0000\u0000"+ - "\u0000#\u059b\u0001\u0000\u0000\u0000%\u059d\u0001\u0000\u0000\u0000\'"+ - "\u059f\u0001\u0000\u0000\u0000)\u05a2\u0001\u0000\u0000\u0000+\u05a5\u0001"+ - "\u0000\u0000\u0000-\u05a8\u0001\u0000\u0000\u0000/\u05ab\u0001\u0000\u0000"+ - "\u00001\u05ae\u0001\u0000\u0000\u00003\u05b1\u0001\u0000\u0000\u00005"+ - "\u05b4\u0001\u0000\u0000\u00007\u05b7\u0001\u0000\u0000\u00009\u05ba\u0001"+ - "\u0000\u0000\u0000;\u05bc\u0001\u0000\u0000\u0000=\u05d6\u0001\u0000\u0000"+ - "\u0000?\u05e1\u0001\u0000\u0000\u0000A\u05f1\u0001\u0000\u0000\u0000C"+ - "\u05f3\u0001\u0000\u0000\u0000E\u05f5\u0001\u0000\u0000\u0000G\u05f7\u0001"+ - "\u0000\u0000\u0000I\u05fb\u0001\u0000\u0000\u0000K\u0603\u0001\u0000\u0000"+ - "\u0000M\u060b\u0001\u0000\u0000\u0000O\u060f\u0001\u0000\u0000\u0000Q"+ - "\u0613\u0001\u0000\u0000\u0000S\u0619\u0001\u0000\u0000\u0000U\u061c\u0001"+ - "\u0000\u0000\u0000W\u0620\u0001\u0000\u0000\u0000Y\u062b\u0001\u0000\u0000"+ - "\u0000[\u0630\u0001\u0000\u0000\u0000]\u0635\u0001\u0000\u0000\u0000_"+ - "\u063a\u0001\u0000\u0000\u0000a\u0640\u0001\u0000\u0000\u0000c\u0648\u0001"+ - "\u0000\u0000\u0000e\u064f\u0001\u0000\u0000\u0000g\u065a\u0001\u0000\u0000"+ - "\u0000i\u0661\u0001\u0000\u0000\u0000k\u0671\u0001\u0000\u0000\u0000m"+ - "\u067e\u0001\u0000\u0000\u0000o\u068b\u0001\u0000\u0000\u0000q\u0698\u0001"+ - "\u0000\u0000\u0000s\u06aa\u0001\u0000\u0000\u0000u\u06b7\u0001\u0000\u0000"+ - "\u0000w\u06bf\u0001\u0000\u0000\u0000y\u06ca\u0001\u0000\u0000\u0000{"+ - "\u06cf\u0001\u0000\u0000\u0000}\u06d8\u0001\u0000\u0000\u0000\u007f\u06db"+ - "\u0001\u0000\u0000\u0000\u0081\u06e0\u0001\u0000\u0000\u0000\u0083\u06e7"+ - "\u0001\u0000\u0000\u0000\u0085\u06ed\u0001\u0000\u0000\u0000\u0087\u06f3"+ - "\u0001\u0000\u0000\u0000\u0089\u06f7\u0001\u0000\u0000\u0000\u008b\u06ff"+ - "\u0001\u0000\u0000\u0000\u008d\u0704\u0001\u0000\u0000\u0000\u008f\u070a"+ - "\u0001\u0000\u0000\u0000\u0091\u0710\u0001\u0000\u0000\u0000\u0093\u0717"+ - "\u0001\u0000\u0000\u0000\u0095\u071a\u0001\u0000\u0000\u0000\u0097\u0724"+ - "\u0001\u0000\u0000\u0000\u0099\u072e\u0001\u0000\u0000\u0000\u009b\u0733"+ - "\u0001\u0000\u0000\u0000\u009d\u073b\u0001\u0000\u0000\u0000\u009f\u0743"+ - "\u0001\u0000\u0000\u0000\u00a1\u0749\u0001\u0000\u0000\u0000\u00a3\u0753"+ - "\u0001\u0000\u0000\u0000\u00a5\u0762\u0001\u0000\u0000\u0000\u00a7\u0766"+ - "\u0001\u0000\u0000\u0000\u00a9\u076b\u0001\u0000\u0000\u0000\u00ab\u0772"+ - "\u0001\u0000\u0000\u0000\u00ad\u0775\u0001\u0000\u0000\u0000\u00af\u077a"+ - "\u0001\u0000\u0000\u0000\u00b1\u077d\u0001\u0000\u0000\u0000\u00b3\u0783"+ - "\u0001\u0000\u0000\u0000\u00b5\u078b\u0001\u0000\u0000\u0000\u00b7\u0793"+ - "\u0001\u0000\u0000\u0000\u00b9\u079e\u0001\u0000\u0000\u0000\u00bb\u07a8"+ - "\u0001\u0000\u0000\u0000\u00bd\u07af\u0001\u0000\u0000\u0000\u00bf\u07bc"+ - "\u0001\u0000\u0000\u0000\u00c1\u07c1\u0001\u0000\u0000\u0000\u00c3\u07cb"+ - "\u0001\u0000\u0000\u0000\u00c5\u07d1\u0001\u0000\u0000\u0000\u00c7\u07d6"+ - "\u0001\u0000\u0000\u0000\u00c9\u07d9\u0001\u0000\u0000\u0000\u00cb\u07df"+ - "\u0001\u0000\u0000\u0000\u00cd\u07e6\u0001\u0000\u0000\u0000\u00cf\u07ed"+ - "\u0001\u0000\u0000\u0000\u00d1\u07f3\u0001\u0000\u0000\u0000\u00d3\u07fa"+ - "\u0001\u0000\u0000\u0000\u00d5\u0803\u0001\u0000\u0000\u0000\u00d7\u0808"+ - "\u0001\u0000\u0000\u0000\u00d9\u080e\u0001\u0000\u0000\u0000\u00db\u0815"+ - "\u0001\u0000\u0000\u0000\u00dd\u081a\u0001\u0000\u0000\u0000\u00df\u0820"+ - "\u0001\u0000\u0000\u0000\u00e1\u0829\u0001\u0000\u0000\u0000\u00e3\u082e"+ - "\u0001\u0000\u0000\u0000\u00e5\u0834\u0001\u0000\u0000\u0000\u00e7\u083b"+ - "\u0001\u0000\u0000\u0000\u00e9\u0840\u0001\u0000\u0000\u0000\u00eb\u084e"+ - "\u0001\u0000\u0000\u0000\u00ed\u0855\u0001\u0000\u0000\u0000\u00ef\u085f"+ - "\u0001\u0000\u0000\u0000\u00f1\u086c\u0001\u0000\u0000\u0000\u00f3\u0872"+ - "\u0001\u0000\u0000\u0000\u00f5\u0881\u0001\u0000\u0000\u0000\u00f7\u0888"+ - "\u0001\u0000\u0000\u0000\u00f9\u088d\u0001\u0000\u0000\u0000\u00fb\u0893"+ - "\u0001\u0000\u0000\u0000\u00fd\u0899\u0001\u0000\u0000\u0000\u00ff\u089c"+ - "\u0001\u0000\u0000\u0000\u0101\u08a3\u0001\u0000\u0000\u0000\u0103\u08a8"+ - "\u0001\u0000\u0000\u0000\u0105\u08ad\u0001\u0000\u0000\u0000\u0107\u08b2"+ - "\u0001\u0000\u0000\u0000\u0109\u08ba\u0001\u0000\u0000\u0000\u010b\u08c2"+ - "\u0001\u0000\u0000\u0000\u010d\u08c8\u0001\u0000\u0000\u0000\u010f\u08cd"+ - "\u0001\u0000\u0000\u0000\u0111\u08d6\u0001\u0000\u0000\u0000\u0113\u08dc"+ - "\u0001\u0000\u0000\u0000\u0115\u08e4\u0001\u0000\u0000\u0000\u0117\u08ec"+ - "\u0001\u0000\u0000\u0000\u0119\u08f2\u0001\u0000\u0000\u0000\u011b\u08fb"+ - "\u0001\u0000\u0000\u0000\u011d\u0902\u0001\u0000\u0000\u0000\u011f\u0909"+ - "\u0001\u0000\u0000\u0000\u0121\u090d\u0001\u0000\u0000\u0000\u0123\u0913"+ - "\u0001\u0000\u0000\u0000\u0125\u0919\u0001\u0000\u0000\u0000\u0127\u0923"+ - "\u0001\u0000\u0000\u0000\u0129\u0928\u0001\u0000\u0000\u0000\u012b\u092e"+ - "\u0001\u0000\u0000\u0000\u012d\u0935\u0001\u0000\u0000\u0000\u012f\u093f"+ - "\u0001\u0000\u0000\u0000\u0131\u094a\u0001\u0000\u0000\u0000\u0133\u094d"+ - "\u0001\u0000\u0000\u0000\u0135\u0957\u0001\u0000\u0000\u0000\u0137\u0960"+ - "\u0001\u0000\u0000\u0000\u0139\u0967\u0001\u0000\u0000\u0000\u013b\u096d"+ - "\u0001\u0000\u0000\u0000\u013d\u0970\u0001\u0000\u0000\u0000\u013f\u0976"+ - "\u0001\u0000\u0000\u0000\u0141\u097d\u0001\u0000\u0000\u0000\u0143\u0985"+ - "\u0001\u0000\u0000\u0000\u0145\u098e\u0001\u0000\u0000\u0000\u0147\u0996"+ - "\u0001\u0000\u0000\u0000\u0149\u099c\u0001\u0000\u0000\u0000\u014b\u09ac"+ - "\u0001\u0000\u0000\u0000\u014d\u09b7\u0001\u0000\u0000\u0000\u014f\u09bd"+ - "\u0001\u0000\u0000\u0000\u0151\u09c3\u0001\u0000\u0000\u0000\u0153\u09cb"+ - "\u0001\u0000\u0000\u0000\u0155\u09d3\u0001\u0000\u0000\u0000\u0157\u09dc"+ - "\u0001\u0000\u0000\u0000\u0159\u09e3\u0001\u0000\u0000\u0000\u015b\u09ed"+ - "\u0001\u0000\u0000\u0000\u015d\u09fb\u0001\u0000\u0000\u0000\u015f\u0a06"+ - "\u0001\u0000\u0000\u0000\u0161\u0a12\u0001\u0000\u0000\u0000\u0163\u0a1a"+ - "\u0001\u0000\u0000\u0000\u0165\u0a23\u0001\u0000\u0000\u0000\u0167\u0a2e"+ - "\u0001\u0000\u0000\u0000\u0169\u0a33\u0001\u0000\u0000\u0000\u016b\u0a38"+ - "\u0001\u0000\u0000\u0000\u016d\u0a3c\u0001\u0000\u0000\u0000\u016f\u0a43"+ - "\u0001\u0000\u0000\u0000\u0171\u0a49\u0001\u0000\u0000\u0000\u0173\u0a4e"+ - "\u0001\u0000\u0000\u0000\u0175\u0a57\u0001\u0000\u0000\u0000\u0177\u0a5b"+ - "\u0001\u0000\u0000\u0000\u0179\u0a66\u0001\u0000\u0000\u0000\u017b\u0a6e"+ - "\u0001\u0000\u0000\u0000\u017d\u0a77\u0001\u0000\u0000\u0000\u017f\u0a80"+ - "\u0001\u0000\u0000\u0000\u0181\u0a88\u0001\u0000\u0000\u0000\u0183\u0a8f"+ - "\u0001\u0000\u0000\u0000\u0185\u0a99\u0001\u0000\u0000\u0000\u0187\u0aa4"+ - "\u0001\u0000\u0000\u0000\u0189\u0aaf\u0001\u0000\u0000\u0000\u018b\u0ab7"+ - "\u0001\u0000\u0000\u0000\u018d\u0abf\u0001\u0000\u0000\u0000\u018f\u0ac8"+ - "\u0001\u0000\u0000\u0000\u0191\u0acf\u0001\u0000\u0000\u0000\u0193\u0ad6"+ - "\u0001\u0000\u0000\u0000\u0195\u0adb\u0001\u0000\u0000\u0000\u0197\u0ae0"+ - "\u0001\u0000\u0000\u0000\u0199\u0ae7\u0001\u0000\u0000\u0000\u019b\u0af0"+ - "\u0001\u0000\u0000\u0000\u019d\u0afa\u0001\u0000\u0000\u0000\u019f\u0aff"+ - "\u0001\u0000\u0000\u0000\u01a1\u0b06\u0001\u0000\u0000\u0000\u01a3\u0b0c"+ - "\u0001\u0000\u0000\u0000\u01a5\u0b14\u0001\u0000\u0000\u0000\u01a7\u0b1e"+ - "\u0001\u0000\u0000\u0000\u01a9\u0b28\u0001\u0000\u0000\u0000\u01ab\u0b30"+ - "\u0001\u0000\u0000\u0000\u01ad\u0b38\u0001\u0000\u0000\u0000\u01af\u0b42"+ - "\u0001\u0000\u0000\u0000\u01b1\u0b4b\u0001\u0000\u0000\u0000\u01b3\u0b52"+ - "\u0001\u0000\u0000\u0000\u01b5\u0b58\u0001\u0000\u0000\u0000\u01b7\u0b62"+ - "\u0001\u0000\u0000\u0000\u01b9\u0b68\u0001\u0000\u0000\u0000\u01bb\u0b70"+ - "\u0001\u0000\u0000\u0000\u01bd\u0b79\u0001\u0000\u0000\u0000\u01bf\u0b83"+ - "\u0001\u0000\u0000\u0000\u01c1\u0b8a\u0001\u0000\u0000\u0000\u01c3\u0b92"+ - "\u0001\u0000\u0000\u0000\u01c5\u0b9a\u0001\u0000\u0000\u0000\u01c7\u0ba1"+ - "\u0001\u0000\u0000\u0000\u01c9\u0ba6\u0001\u0000\u0000\u0000\u01cb\u0bab"+ - "\u0001\u0000\u0000\u0000\u01cd\u0bb4\u0001\u0000\u0000\u0000\u01cf\u0bb7"+ - "\u0001\u0000\u0000\u0000\u01d1\u0bc1\u0001\u0000\u0000\u0000\u01d3\u0bcb"+ - "\u0001\u0000\u0000\u0000\u01d5\u0bd4\u0001\u0000\u0000\u0000\u01d7\u0bde"+ - "\u0001\u0000\u0000\u0000\u01d9\u0be8\u0001\u0000\u0000\u0000\u01db\u0bee"+ - "\u0001\u0000\u0000\u0000\u01dd\u0bf6\u0001\u0000\u0000\u0000\u01df\u0bfe"+ - "\u0001\u0000\u0000\u0000\u01e1\u0c07\u0001\u0000\u0000\u0000\u01e3\u0c0e"+ - "\u0001\u0000\u0000\u0000\u01e5\u0c1a\u0001\u0000\u0000\u0000\u01e7\u0c21"+ - "\u0001\u0000\u0000\u0000\u01e9\u0c29\u0001\u0000\u0000\u0000\u01eb\u0c31"+ - "\u0001\u0000\u0000\u0000\u01ed\u0c3b\u0001\u0000\u0000\u0000\u01ef\u0c3f"+ - "\u0001\u0000\u0000\u0000\u01f1\u0c45\u0001\u0000\u0000\u0000\u01f3\u0c4e"+ - "\u0001\u0000\u0000\u0000\u01f5\u0c54\u0001\u0000\u0000\u0000\u01f7\u0c59"+ - "\u0001\u0000\u0000\u0000\u01f9\u0c63\u0001\u0000\u0000\u0000\u01fb\u0c69"+ - "\u0001\u0000\u0000\u0000\u01fd\u0c70\u0001\u0000\u0000\u0000\u01ff\u0c75"+ - "\u0001\u0000\u0000\u0000\u0201\u0c7b\u0001\u0000\u0000\u0000\u0203\u0c84"+ - "\u0001\u0000\u0000\u0000\u0205\u0c89\u0001\u0000\u0000\u0000\u0207\u0c91"+ - "\u0001\u0000\u0000\u0000\u0209\u0c97\u0001\u0000\u0000\u0000\u020b\u0c9f"+ - "\u0001\u0000\u0000\u0000\u020d\u0cac\u0001\u0000\u0000\u0000\u020f\u0cb5"+ - "\u0001\u0000\u0000\u0000\u0211\u0cbb\u0001\u0000\u0000\u0000\u0213\u0cc2"+ - "\u0001\u0000\u0000\u0000\u0215\u0ccb\u0001\u0000\u0000\u0000\u0217\u0cd0"+ - "\u0001\u0000\u0000\u0000\u0219\u0cd6\u0001\u0000\u0000\u0000\u021b\u0cdb"+ - "\u0001\u0000\u0000\u0000\u021d\u0ce0\u0001\u0000\u0000\u0000\u021f\u0ce6"+ - "\u0001\u0000\u0000\u0000\u0221\u0ceb\u0001\u0000\u0000\u0000\u0223\u0cee"+ - "\u0001\u0000\u0000\u0000\u0225\u0cf6\u0001\u0000\u0000\u0000\u0227\u0cfd"+ - "\u0001\u0000\u0000\u0000\u0229\u0d04\u0001\u0000\u0000\u0000\u022b\u0d0a"+ - "\u0001\u0000\u0000\u0000\u022d\u0d11\u0001\u0000\u0000\u0000\u022f\u0d14"+ - "\u0001\u0000\u0000\u0000\u0231\u0d18\u0001\u0000\u0000\u0000\u0233\u0d1d"+ - "\u0001\u0000\u0000\u0000\u0235\u0d26\u0001\u0000\u0000\u0000\u0237\u0d2d"+ - "\u0001\u0000\u0000\u0000\u0239\u0d35\u0001\u0000\u0000\u0000\u023b\u0d3b"+ - "\u0001\u0000\u0000\u0000\u023d\u0d41\u0001\u0000\u0000\u0000\u023f\u0d48"+ - "\u0001\u0000\u0000\u0000\u0241\u0d50\u0001\u0000\u0000\u0000\u0243\u0d5a"+ - "\u0001\u0000\u0000\u0000\u0245\u0d62\u0001\u0000\u0000\u0000\u0247\u0d6b"+ - "\u0001\u0000\u0000\u0000\u0249\u0d71\u0001\u0000\u0000\u0000\u024b\u0d7b"+ - "\u0001\u0000\u0000\u0000\u024d\u0d83\u0001\u0000\u0000\u0000\u024f\u0d8c"+ - "\u0001\u0000\u0000\u0000\u0251\u0d95\u0001\u0000\u0000\u0000\u0253\u0d9b"+ - "\u0001\u0000\u0000\u0000\u0255\u0da6\u0001\u0000\u0000\u0000\u0257\u0db1"+ - "\u0001\u0000\u0000\u0000\u0259\u0dbb\u0001\u0000\u0000\u0000\u025b\u0dc3"+ - "\u0001\u0000\u0000\u0000\u025d\u0dc9\u0001\u0000\u0000\u0000\u025f\u0dcf"+ - "\u0001\u0000\u0000\u0000\u0261\u0dd4\u0001\u0000\u0000\u0000\u0263\u0ddd"+ - "\u0001\u0000\u0000\u0000\u0265\u0de5\u0001\u0000\u0000\u0000\u0267\u0def"+ - "\u0001\u0000\u0000\u0000\u0269\u0df3\u0001\u0000\u0000\u0000\u026b\u0dfb"+ - "\u0001\u0000\u0000\u0000\u026d\u0e03\u0001\u0000\u0000\u0000\u026f\u0e0c"+ - "\u0001\u0000\u0000\u0000\u0271\u0e14\u0001\u0000\u0000\u0000\u0273\u0e1b"+ - "\u0001\u0000\u0000\u0000\u0275\u0e26\u0001\u0000\u0000\u0000\u0277\u0e2e"+ - "\u0001\u0000\u0000\u0000\u0279\u0e36\u0001\u0000\u0000\u0000\u027b\u0e3c"+ - "\u0001\u0000\u0000\u0000\u027d\u0e44\u0001\u0000\u0000\u0000\u027f\u0e4d"+ - "\u0001\u0000\u0000\u0000\u0281\u0e55\u0001\u0000\u0000\u0000\u0283\u0e5c"+ - "\u0001\u0000\u0000\u0000\u0285\u0e61\u0001\u0000\u0000\u0000\u0287\u0e6a"+ - "\u0001\u0000\u0000\u0000\u0289\u0e6f\u0001\u0000\u0000\u0000\u028b\u0e74"+ - "\u0001\u0000\u0000\u0000\u028d\u0e7e\u0001\u0000\u0000\u0000\u028f\u0e85"+ - "\u0001\u0000\u0000\u0000\u0291\u0e8c\u0001\u0000\u0000\u0000\u0293\u0e93"+ - "\u0001\u0000\u0000\u0000\u0295\u0e9a\u0001\u0000\u0000\u0000\u0297\u0ea3"+ - "\u0001\u0000\u0000\u0000\u0299\u0eac\u0001\u0000\u0000\u0000\u029b\u0eb6"+ - "\u0001\u0000\u0000\u0000\u029d\u0ec3\u0001\u0000\u0000\u0000\u029f\u0eca"+ - "\u0001\u0000\u0000\u0000\u02a1\u0ed2\u0001\u0000\u0000\u0000\u02a3\u0ed6"+ - "\u0001\u0000\u0000\u0000\u02a5\u0edc\u0001\u0000\u0000\u0000\u02a7\u0ee1"+ - "\u0001\u0000\u0000\u0000\u02a9\u0ee8\u0001\u0000\u0000\u0000\u02ab\u0ef1"+ - "\u0001\u0000\u0000\u0000\u02ad\u0ef8\u0001\u0000\u0000\u0000\u02af\u0f03"+ - "\u0001\u0000\u0000\u0000\u02b1\u0f09\u0001\u0000\u0000\u0000\u02b3\u0f13"+ - "\u0001\u0000\u0000\u0000\u02b5\u0f1e\u0001\u0000\u0000\u0000\u02b7\u0f24"+ - "\u0001\u0000\u0000\u0000\u02b9\u0f2b\u0001\u0000\u0000\u0000\u02bb\u0f33"+ - "\u0001\u0000\u0000\u0000\u02bd\u0f3a\u0001\u0000\u0000\u0000\u02bf\u0f40"+ - "\u0001\u0000\u0000\u0000\u02c1\u0f46\u0001\u0000\u0000\u0000\u02c3\u0f4d"+ - "\u0001\u0000\u0000\u0000\u02c5\u0f54\u0001\u0000\u0000\u0000\u02c7\u0f5f"+ - "\u0001\u0000\u0000\u0000\u02c9\u0f64\u0001\u0000\u0000\u0000\u02cb\u0f6d"+ - "\u0001\u0000\u0000\u0000\u02cd\u0f77\u0001\u0000\u0000\u0000\u02cf\u0f7c"+ - "\u0001\u0000\u0000\u0000\u02d1\u0f88\u0001\u0000\u0000\u0000\u02d3\u0f90"+ - "\u0001\u0000\u0000\u0000\u02d5\u0f99\u0001\u0000"; - private static final String _serializedATNSegment1 = - "\u0000\u0000\u02d7\u0fa1\u0001\u0000\u0000\u0000\u02d9\u0fa6\u0001\u0000"+ - "\u0000\u0000\u02db\u0fac\u0001\u0000\u0000\u0000\u02dd\u0fb6\u0001\u0000"+ - "\u0000\u0000\u02df\u0fc2\u0001\u0000\u0000\u0000\u02e1\u0fce\u0001\u0000"+ - "\u0000\u0000\u02e3\u0fd6\u0001\u0000\u0000\u0000\u02e5\u0fdf\u0001\u0000"+ - "\u0000\u0000\u02e7\u0fe8\u0001\u0000\u0000\u0000\u02e9\u0fee\u0001\u0000"+ - "\u0000\u0000\u02eb\u0ff5\u0001\u0000\u0000\u0000\u02ed\u0ffc\u0001\u0000"+ - "\u0000\u0000\u02ef\u1002\u0001\u0000\u0000\u0000\u02f1\u100b\u0001\u0000"+ - "\u0000\u0000\u02f3\u1015\u0001\u0000\u0000\u0000\u02f5\u101d\u0001\u0000"+ - "\u0000\u0000\u02f7\u1025\u0001\u0000\u0000\u0000\u02f9\u102a\u0001\u0000"+ - "\u0000\u0000\u02fb\u1033\u0001\u0000\u0000\u0000\u02fd\u103e\u0001\u0000"+ - "\u0000\u0000\u02ff\u1046\u0001\u0000\u0000\u0000\u0301\u104b\u0001\u0000"+ - "\u0000\u0000\u0303\u1053\u0001\u0000\u0000\u0000\u0305\u1059\u0001\u0000"+ - "\u0000\u0000\u0307\u105d\u0001\u0000\u0000\u0000\u0309\u1062\u0001\u0000"+ - "\u0000\u0000\u030b\u1066\u0001\u0000\u0000\u0000\u030d\u106b\u0001\u0000"+ - "\u0000\u0000\u030f\u1073\u0001\u0000\u0000\u0000\u0311\u107a\u0001\u0000"+ - "\u0000\u0000\u0313\u107e\u0001\u0000\u0000\u0000\u0315\u1086\u0001\u0000"+ - "\u0000\u0000\u0317\u108b\u0001\u0000\u0000\u0000\u0319\u1095\u0001\u0000"+ - "\u0000\u0000\u031b\u109e\u0001\u0000\u0000\u0000\u031d\u10a2\u0001\u0000"+ - "\u0000\u0000\u031f\u10aa\u0001\u0000\u0000\u0000\u0321\u10b1\u0001\u0000"+ - "\u0000\u0000\u0323\u10b9\u0001\u0000\u0000\u0000\u0325\u10bf\u0001\u0000"+ - "\u0000\u0000\u0327\u10c8\u0001\u0000\u0000\u0000\u0329\u10ce\u0001\u0000"+ - "\u0000\u0000\u032b\u10d2\u0001\u0000\u0000\u0000\u032d\u10da\u0001\u0000"+ - "\u0000\u0000\u032f\u10e3\u0001\u0000\u0000\u0000\u0331\u10e9\u0001\u0000"+ - "\u0000\u0000\u0333\u10f2\u0001\u0000\u0000\u0000\u0335\u10f8\u0001\u0000"+ - "\u0000\u0000\u0337\u10fd\u0001\u0000\u0000\u0000\u0339\u1104\u0001\u0000"+ - "\u0000\u0000\u033b\u110c\u0001\u0000\u0000\u0000\u033d\u1114\u0001\u0000"+ - "\u0000\u0000\u033f\u111d\u0001\u0000\u0000\u0000\u0341\u1127\u0001\u0000"+ - "\u0000\u0000\u0343\u112c\u0001\u0000\u0000\u0000\u0345\u1130\u0001\u0000"+ - "\u0000\u0000\u0347\u1136\u0001\u0000\u0000\u0000\u0349\u113f\u0001\u0000"+ - "\u0000\u0000\u034b\u1149\u0001\u0000\u0000\u0000\u034d\u114e\u0001\u0000"+ - "\u0000\u0000\u034f\u1158\u0001\u0000\u0000\u0000\u0351\u115e\u0001\u0000"+ - "\u0000\u0000\u0353\u1163\u0001\u0000\u0000\u0000\u0355\u116a\u0001\u0000"+ - "\u0000\u0000\u0357\u1172\u0001\u0000\u0000\u0000\u0359\u1180\u0001\u0000"+ - "\u0000\u0000\u035b\u118b\u0001\u0000\u0000\u0000\u035d\u1192\u0001\u0000"+ - "\u0000\u0000\u035f\u11a5\u0001\u0000\u0000\u0000\u0361\u11c1\u0001\u0000"+ - "\u0000\u0000\u0363\u11dc\u0001\u0000\u0000\u0000\u0365\u11e2\u0001\u0000"+ - "\u0000\u0000\u0367\u11ef\u0001\u0000\u0000\u0000\u0369\u11f9\u0001\u0000"+ - "\u0000\u0000\u036b\u1204\u0001\u0000\u0000\u0000\u036d\u120e\u0001\u0000"+ - "\u0000\u0000\u036f\u1218\u0001\u0000\u0000\u0000\u0371\u1221\u0001\u0000"+ - "\u0000\u0000\u0373\u1227\u0001\u0000\u0000\u0000\u0375\u122f\u0001\u0000"+ - "\u0000\u0000\u0377\u123c\u0001\u0000\u0000\u0000\u0379\u1241\u0001\u0000"+ - "\u0000\u0000\u037b\u1249\u0001\u0000\u0000\u0000\u037d\u1250\u0001\u0000"+ - "\u0000\u0000\u037f\u1257\u0001\u0000\u0000\u0000\u0381\u1262\u0001\u0000"+ - "\u0000\u0000\u0383\u126c\u0001\u0000\u0000\u0000\u0385\u1273\u0001\u0000"+ - "\u0000\u0000\u0387\u127a\u0001\u0000\u0000\u0000\u0389\u1282\u0001\u0000"+ - "\u0000\u0000\u038b\u128a\u0001\u0000\u0000\u0000\u038d\u1294\u0001\u0000"+ - "\u0000\u0000\u038f\u129b\u0001\u0000\u0000\u0000\u0391\u12a2\u0001\u0000"+ - "\u0000\u0000\u0393\u12a9\u0001\u0000\u0000\u0000\u0395\u12b5\u0001\u0000"+ - "\u0000\u0000\u0397\u12b9\u0001\u0000\u0000\u0000\u0399\u12bd\u0001\u0000"+ - "\u0000\u0000\u039b\u12c3\u0001\u0000\u0000\u0000\u039d\u12d0\u0001\u0000"+ - "\u0000\u0000\u039f\u12dc\u0001\u0000\u0000\u0000\u03a1\u12e0\u0001\u0000"+ - "\u0000\u0000\u03a3\u12e4\u0001\u0000\u0000\u0000\u03a5\u12ed\u0001\u0000"+ - "\u0000\u0000\u03a7\u12f5\u0001\u0000\u0000\u0000\u03a9\u1300\u0001\u0000"+ - "\u0000\u0000\u03ab\u1306\u0001\u0000\u0000\u0000\u03ad\u130e\u0001\u0000"+ - "\u0000\u0000\u03af\u1317\u0001\u0000\u0000\u0000\u03b1\u131b\u0001\u0000"+ - "\u0000\u0000\u03b3\u1323\u0001\u0000\u0000\u0000\u03b5\u132e\u0001\u0000"+ - "\u0000\u0000\u03b7\u1337\u0001\u0000\u0000\u0000\u03b9\u133c\u0001\u0000"+ - "\u0000\u0000\u03bb\u1343\u0001\u0000\u0000\u0000\u03bd\u1348\u0001\u0000"+ - "\u0000\u0000\u03bf\u134f\u0001\u0000\u0000\u0000\u03c1\u1354\u0001\u0000"+ - "\u0000\u0000\u03c3\u135d\u0001\u0000\u0000\u0000\u03c5\u1362\u0001\u0000"+ - "\u0000\u0000\u03c7\u136e\u0001\u0000\u0000\u0000\u03c9\u1379\u0001\u0000"+ - "\u0000\u0000\u03cb\u1382\u0001\u0000\u0000\u0000\u03cd\u138a\u0001\u0000"+ - "\u0000\u0000\u03cf\u1398\u0001\u0000\u0000\u0000\u03d1\u13a0\u0001\u0000"+ - "\u0000\u0000\u03d3\u13ab\u0001\u0000\u0000\u0000\u03d5\u13b2\u0001\u0000"+ - "\u0000\u0000\u03d7\u13b9\u0001\u0000\u0000\u0000\u03d9\u13c0\u0001\u0000"+ - "\u0000\u0000\u03db\u13c7\u0001\u0000\u0000\u0000\u03dd\u13cb\u0001\u0000"+ - "\u0000\u0000\u03df\u13cf\u0001\u0000\u0000\u0000\u03e1\u13d4\u0001\u0000"+ - "\u0000\u0000\u03e3\u13d9\u0001\u0000\u0000\u0000\u03e5\u13e1\u0001\u0000"+ - "\u0000\u0000\u03e7\u13e7\u0001\u0000\u0000\u0000\u03e9\u13f1\u0001\u0000"+ - "\u0000\u0000\u03eb\u13f6\u0001\u0000\u0000\u0000\u03ed\u140a\u0001\u0000"+ - "\u0000\u0000\u03ef\u141c\u0001\u0000\u0000\u0000\u03f1\u1422\u0001\u0000"+ - "\u0000\u0000\u03f3\u142f\u0001\u0000\u0000\u0000\u03f5\u143a\u0001\u0000"+ - "\u0000\u0000\u03f7\u1440\u0001\u0000\u0000\u0000\u03f9\u1449\u0001\u0000"+ - "\u0000\u0000\u03fb\u1451\u0001\u0000\u0000\u0000\u03fd\u1455\u0001\u0000"+ - "\u0000\u0000\u03ff\u1461\u0001\u0000\u0000\u0000\u0401\u1469\u0001\u0000"+ - "\u0000\u0000\u0403\u146f\u0001\u0000\u0000\u0000\u0405\u1475\u0001\u0000"+ - "\u0000\u0000\u0407\u147d\u0001\u0000\u0000\u0000\u0409\u1485\u0001\u0000"+ - "\u0000\u0000\u040b\u148b\u0001\u0000\u0000\u0000\u040d\u1490\u0001\u0000"+ - "\u0000\u0000\u040f\u1497\u0001\u0000\u0000\u0000\u0411\u149d\u0001\u0000"+ - "\u0000\u0000\u0413\u14a3\u0001\u0000\u0000\u0000\u0415\u14ac\u0001\u0000"+ - "\u0000\u0000\u0417\u14b2\u0001\u0000\u0000\u0000\u0419\u14b6\u0001\u0000"+ - "\u0000\u0000\u041b\u14bb\u0001\u0000\u0000\u0000\u041d\u14c2\u0001\u0000"+ - "\u0000\u0000\u041f\u14ca\u0001\u0000\u0000\u0000\u0421\u14d4\u0001\u0000"+ - "\u0000\u0000\u0423\u14db\u0001\u0000\u0000\u0000\u0425\u14e0\u0001\u0000"+ - "\u0000\u0000\u0427\u14e5\u0001\u0000\u0000\u0000\u0429\u14e9\u0001\u0000"+ - "\u0000\u0000\u042b\u14ee\u0001\u0000\u0000\u0000\u042d\u14f3\u0001\u0000"+ - "\u0000\u0000\u042f\u14fb\u0001\u0000\u0000\u0000\u0431\u1503\u0001\u0000"+ - "\u0000\u0000\u0433\u1507\u0001\u0000\u0000\u0000\u0435\u150b\u0001\u0000"+ - "\u0000\u0000\u0437\u1515\u0001\u0000\u0000\u0000\u0439\u151b\u0001\u0000"+ - "\u0000\u0000\u043b\u151f\u0001\u0000\u0000\u0000\u043d\u1523\u0001\u0000"+ - "\u0000\u0000\u043f\u1526\u0001\u0000\u0000\u0000\u0441\u152c\u0001\u0000"+ - "\u0000\u0000\u0443\u1536\u0001\u0000\u0000\u0000\u0445\u153a\u0001\u0000"+ - "\u0000\u0000\u0447\u153d\u0001\u0000\u0000\u0000\u0449\u1543\u0001\u0000"+ - "\u0000\u0000\u044b\u154b\u0001\u0000\u0000\u0000\u044d\u1551\u0001\u0000"+ - "\u0000\u0000\u044f\u1557\u0001\u0000\u0000\u0000\u0451\u155c\u0001\u0000"+ - "\u0000\u0000\u0453\u1561\u0001\u0000\u0000\u0000\u0455\u156c\u0001\u0000"+ - "\u0000\u0000\u0457\u1572\u0001\u0000\u0000\u0000\u0459\u157f\u0001\u0000"+ - "\u0000\u0000\u045b\u1586\u0001\u0000\u0000\u0000\u045d\u158e\u0001\u0000"+ - "\u0000\u0000\u045f\u1593\u0001\u0000\u0000\u0000\u0461\u1599\u0001\u0000"+ - "\u0000\u0000\u0463\u159e\u0001\u0000\u0000\u0000\u0465\u15a4\u0001\u0000"+ - "\u0000\u0000\u0467\u15a9\u0001\u0000\u0000\u0000\u0469\u15af\u0001\u0000"+ - "\u0000\u0000\u046b\u15b5\u0001\u0000\u0000\u0000\u046d\u15bc\u0001\u0000"+ - "\u0000\u0000\u046f\u15c0\u0001\u0000\u0000\u0000\u0471\u15c5\u0001\u0000"+ - "\u0000\u0000\u0473\u15c9\u0001\u0000\u0000\u0000\u0475\u15ce\u0001\u0000"+ - "\u0000\u0000\u0477\u15d2\u0001\u0000\u0000\u0000\u0479\u15d7\u0001\u0000"+ - "\u0000\u0000\u047b\u15db\u0001\u0000\u0000\u0000\u047d\u15e0\u0001\u0000"+ - "\u0000\u0000\u047f\u15e5\u0001\u0000\u0000\u0000\u0481\u15ea\u0001\u0000"+ - "\u0000\u0000\u0483\u15ef\u0001\u0000\u0000\u0000\u0485\u15f5\u0001\u0000"+ - "\u0000\u0000\u0487\u15fb\u0001\u0000\u0000\u0000\u0489\u1601\u0001\u0000"+ - "\u0000\u0000\u048b\u160c\u0001\u0000\u0000\u0000\u048d\u1618\u0001\u0000"+ - "\u0000\u0000\u048f\u1629\u0001\u0000\u0000\u0000\u0491\u162f\u0001\u0000"+ - "\u0000\u0000\u0493\u163c\u0001\u0000\u0000\u0000\u0495\u1642\u0001\u0000"+ - "\u0000\u0000\u0497\u1648\u0001\u0000\u0000\u0000\u0499\u164e\u0001\u0000"+ - "\u0000\u0000\u049b\u1652\u0001\u0000\u0000\u0000\u049d\u1659\u0001\u0000"+ - "\u0000\u0000\u049f\u1663\u0001\u0000\u0000\u0000\u04a1\u166a\u0001\u0000"+ - "\u0000\u0000\u04a3\u1672\u0001\u0000\u0000\u0000\u04a5\u1679\u0001\u0000"+ - "\u0000\u0000\u04a7\u167e\u0001\u0000\u0000\u0000\u04a9\u1684\u0001\u0000"+ - "\u0000\u0000\u04ab\u1688\u0001\u0000\u0000\u0000\u04ad\u1694\u0001\u0000"+ - "\u0000\u0000\u04af\u16a7\u0001\u0000\u0000\u0000\u04b1\u16b3\u0001\u0000"+ - "\u0000\u0000\u04b3\u16c1\u0001\u0000\u0000\u0000\u04b5\u16d0\u0001\u0000"+ - "\u0000\u0000\u04b7\u16dd\u0001\u0000\u0000\u0000\u04b9\u16ea\u0001\u0000"+ - "\u0000\u0000\u04bb\u16f6\u0001\u0000\u0000\u0000\u04bd\u1703\u0001\u0000"+ - "\u0000\u0000\u04bf\u1712\u0001\u0000\u0000\u0000\u04c1\u1721\u0001\u0000"+ - "\u0000\u0000\u04c3\u1737\u0001\u0000\u0000\u0000\u04c5\u174d\u0001\u0000"+ - "\u0000\u0000\u04c7\u175b\u0001\u0000\u0000\u0000\u04c9\u1762\u0001\u0000"+ - "\u0000\u0000\u04cb\u1767\u0001\u0000\u0000\u0000\u04cd\u176d\u0001\u0000"+ - "\u0000\u0000\u04cf\u1778\u0001\u0000\u0000\u0000\u04d1\u1784\u0001\u0000"+ - "\u0000\u0000\u04d3\u1794\u0001\u0000\u0000\u0000\u04d5\u17a4\u0001\u0000"+ - "\u0000\u0000\u04d7\u17ab\u0001\u0000\u0000\u0000\u04d9\u17b2\u0001\u0000"+ - "\u0000\u0000\u04db\u17bb\u0001\u0000\u0000\u0000\u04dd\u17c2\u0001\u0000"+ - "\u0000\u0000\u04df\u17cc\u0001\u0000\u0000\u0000\u04e1\u17d3\u0001\u0000"+ - "\u0000\u0000\u04e3\u17d7\u0001\u0000\u0000\u0000\u04e5\u17e7\u0001\u0000"+ - "\u0000\u0000\u04e7\u17f0\u0001\u0000\u0000\u0000\u04e9\u17fa\u0001\u0000"+ - "\u0000\u0000\u04eb\u1805\u0001\u0000\u0000\u0000\u04ed\u180e\u0001\u0000"+ - "\u0000\u0000\u04ef\u181b\u0001\u0000\u0000\u0000\u04f1\u1829\u0001\u0000"+ - "\u0000\u0000\u04f3\u183a\u0001\u0000\u0000\u0000\u04f5\u1844\u0001\u0000"+ - "\u0000\u0000\u04f7\u1852\u0001\u0000\u0000\u0000\u04f9\u185c\u0001\u0000"+ - "\u0000\u0000\u04fb\u186b\u0001\u0000\u0000\u0000\u04fd\u187c\u0001\u0000"+ - "\u0000\u0000\u04ff\u1880\u0001\u0000\u0000\u0000\u0501\u1894\u0001\u0000"+ - "\u0000\u0000\u0503\u189e\u0001\u0000\u0000\u0000\u0505\u18b4\u0001\u0000"+ - "\u0000\u0000\u0507\u18c1\u0001\u0000\u0000\u0000\u0509\u18c9\u0001\u0000"+ - "\u0000\u0000\u050b\u18d1\u0001\u0000\u0000\u0000\u050d\u18db\u0001\u0000"+ - "\u0000\u0000\u050f\u18e8\u0001\u0000\u0000\u0000\u0511\u18ec\u0001\u0000"+ - "\u0000\u0000\u0513\u18f0\u0001\u0000\u0000\u0000\u0515\u18f2\u0001\u0000"+ - "\u0000\u0000\u0517\u18f5\u0001\u0000\u0000\u0000\u0519\u18fe\u0001\u0000"+ - "\u0000\u0000\u051b\u1901\u0001\u0000\u0000\u0000\u051d\u190a\u0001\u0000"+ - "\u0000\u0000\u051f\u190e\u0001\u0000\u0000\u0000\u0521\u1912\u0001\u0000"+ - "\u0000\u0000\u0523\u1916\u0001\u0000\u0000\u0000\u0525\u191a\u0001\u0000"+ - "\u0000\u0000\u0527\u191d\u0001\u0000\u0000\u0000\u0529\u1926\u0001\u0000"+ - "\u0000\u0000\u052b\u192c\u0001\u0000\u0000\u0000\u052d\u192f\u0001\u0000"+ - "\u0000\u0000\u052f\u1933\u0001\u0000\u0000\u0000\u0531\u193c\u0001\u0000"+ - "\u0000\u0000\u0533\u1943\u0001\u0000\u0000\u0000\u0535\u1946\u0001\u0000"+ - "\u0000\u0000\u0537\u194e\u0001\u0000\u0000\u0000\u0539\u1951\u0001\u0000"+ - "\u0000\u0000\u053b\u1954\u0001\u0000\u0000\u0000\u053d\u1957\u0001\u0000"+ - "\u0000\u0000\u053f\u195f\u0001\u0000\u0000\u0000\u0541\u1962\u0001\u0000"+ - "\u0000\u0000\u0543\u1965\u0001\u0000\u0000\u0000\u0545\u1967\u0001\u0000"+ - "\u0000\u0000\u0547\u1989\u0001\u0000\u0000\u0000\u0549\u198c\u0001\u0000"+ - "\u0000\u0000\u054b\u1990\u0001\u0000\u0000\u0000\u054d\u1998\u0001\u0000"+ - "\u0000\u0000\u054f\u19a8\u0001\u0000\u0000\u0000\u0551\u19b3\u0001\u0000"+ - "\u0000\u0000\u0553\u19b7\u0001\u0000\u0000\u0000\u0555\u19c2\u0001\u0000"+ - "\u0000\u0000\u0557\u19e9\u0001\u0000\u0000\u0000\u0559\u1a1c\u0001\u0000"+ - "\u0000\u0000\u055b\u1a34\u0001\u0000\u0000\u0000\u055d\u1a37\u0001\u0000"+ - "\u0000\u0000\u055f\u1a39\u0001\u0000\u0000\u0000\u0561\u1a3e\u0001\u0000"+ - "\u0000\u0000\u0563\u1a5d\u0001\u0000\u0000\u0000\u0565\u1a60\u0001\u0000"+ - "\u0000\u0000\u0567\u1a65\u0001\u0000\u0000\u0000\u0569\u1a72\u0001\u0000"+ - "\u0000\u0000\u056b\u1a75\u0001\u0000\u0000\u0000\u056d\u1a7a\u0001\u0000"+ - "\u0000\u0000\u056f\u1a80\u0001\u0000\u0000\u0000\u0571\u1a85\u0001\u0000"+ - "\u0000\u0000\u0573\u1a8a\u0001\u0000\u0000\u0000\u0575\u1a8f\u0001\u0000"+ - "\u0000\u0000\u0577\u1a94\u0001\u0000\u0000\u0000\u0579\u1aa5\u0001\u0000"+ - "\u0000\u0000\u057b\u1aa7\u0001\u0000\u0000\u0000\u057d\u057e\u0005$\u0000"+ - "\u0000\u057e\u0006\u0001\u0000\u0000\u0000\u057f\u0580\u0005(\u0000\u0000"+ - "\u0580\b\u0001\u0000\u0000\u0000\u0581\u0582\u0005)\u0000\u0000\u0582"+ - "\n\u0001\u0000\u0000\u0000\u0583\u0584\u0005[\u0000\u0000\u0584\f\u0001"+ - "\u0000\u0000\u0000\u0585\u0586\u0005]\u0000\u0000\u0586\u000e\u0001\u0000"+ - "\u0000\u0000\u0587\u0588\u0005,\u0000\u0000\u0588\u0010\u0001\u0000\u0000"+ - "\u0000\u0589\u058a\u0005;\u0000\u0000\u058a\u0012\u0001\u0000\u0000\u0000"+ - "\u058b\u058c\u0005:\u0000\u0000\u058c\u0014\u0001\u0000\u0000\u0000\u058d"+ - "\u058e\u0005*\u0000\u0000\u058e\u0016\u0001\u0000\u0000\u0000\u058f\u0590"+ - "\u0005=\u0000\u0000\u0590\u0018\u0001\u0000\u0000\u0000\u0591\u0592\u0005"+ - ".\u0000\u0000\u0592\u001a\u0001\u0000\u0000\u0000\u0593\u0594\u0005+\u0000"+ - "\u0000\u0594\u001c\u0001\u0000\u0000\u0000\u0595\u0596\u0005-\u0000\u0000"+ - "\u0596\u001e\u0001\u0000\u0000\u0000\u0597\u0598\u0005/\u0000\u0000\u0598"+ - " \u0001\u0000\u0000\u0000\u0599\u059a\u0005^\u0000\u0000\u059a\"\u0001"+ - "\u0000\u0000\u0000\u059b\u059c\u0005<\u0000\u0000\u059c$\u0001\u0000\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\u05a7,\u0001\u0000\u0000\u0000\u05a8\u05a9\u0005"+ - "<\u0000\u0000\u05a9\u05aa\u0005=\u0000\u0000\u05aa.\u0001\u0000\u0000"+ - "\u0000\u05ab\u05ac\u0005=\u0000\u0000\u05ac\u05ad\u0005>\u0000\u0000\u05ad"+ - "0\u0001\u0000\u0000\u0000\u05ae\u05af\u0005>\u0000\u0000\u05af\u05b0\u0005"+ - "=\u0000\u0000\u05b02\u0001\u0000\u0000\u0000\u05b1\u05b2\u0005.\u0000"+ - "\u0000\u05b2\u05b3\u0005.\u0000\u0000\u05b34\u0001\u0000\u0000\u0000\u05b4"+ - "\u05b5\u0005<\u0000\u0000\u05b5\u05b6\u0005>\u0000\u0000\u05b66\u0001"+ - "\u0000\u0000\u0000\u05b7\u05b8\u0005:\u0000\u0000\u05b8\u05b9\u0005:\u0000"+ - "\u0000\u05b98\u0001\u0000\u0000\u0000\u05ba\u05bb\u0005%\u0000\u0000\u05bb"+ - ":\u0001\u0000\u0000\u0000\u05bc\u05be\u0005$\u0000\u0000\u05bd\u05bf\u0007"+ - "\u0000\u0000\u0000\u05be\u05bd\u0001\u0000\u0000\u0000\u05bf\u05c0\u0001"+ - "\u0000\u0000\u0000\u05c0\u05be\u0001\u0000\u0000\u0000\u05c0\u05c1\u0001"+ - "\u0000\u0000\u0000\u05c1<\u0001\u0000\u0000\u0000\u05c2\u05d2\u0003A\u001e"+ - "\u0000\u05c3\u05c7\u0005+\u0000\u0000\u05c4\u05c5\u0005-\u0000\u0000\u05c5"+ - "\u05c7\u0004\u001c\u0000\u0000\u05c6\u05c3\u0001\u0000\u0000\u0000\u05c6"+ - "\u05c4\u0001\u0000\u0000\u0000\u05c7\u05c8\u0001\u0000\u0000\u0000\u05c8"+ - "\u05c6\u0001\u0000\u0000\u0000\u05c8\u05c9\u0001\u0000\u0000\u0000\u05c9"+ - "\u05cd\u0001\u0000\u0000\u0000\u05ca\u05ce\u0003A\u001e\u0000\u05cb\u05cc"+ - "\u0005/\u0000\u0000\u05cc\u05ce\u0004\u001c\u0001\u0000\u05cd\u05ca\u0001"+ - "\u0000\u0000\u0000\u05cd\u05cb\u0001\u0000\u0000\u0000\u05ce\u05d2\u0001"+ - "\u0000\u0000\u0000\u05cf\u05d0\u0005/\u0000\u0000\u05d0\u05d2\u0004\u001c"+ - "\u0002\u0000\u05d1\u05c2\u0001\u0000\u0000\u0000\u05d1\u05c6\u0001\u0000"+ - "\u0000\u0000\u05d1\u05cf\u0001\u0000\u0000\u0000\u05d2\u05d3\u0001\u0000"+ - "\u0000\u0000\u05d3\u05d1\u0001\u0000\u0000\u0000\u05d3\u05d4\u0001\u0000"+ - "\u0000\u0000\u05d4\u05d7\u0001\u0000\u0000\u0000\u05d5\u05d7\u0007\u0001"+ - "\u0000\u0000\u05d6\u05d1\u0001\u0000\u0000\u0000\u05d6\u05d5\u0001\u0000"+ - "\u0000\u0000\u05d7\u05d8\u0001\u0000\u0000\u0000\u05d8\u05d9\u0006\u001c"+ - "\u0000\u0000\u05d9>\u0001\u0000\u0000\u0000\u05da\u05e0\u0003C\u001f\u0000"+ - "\u05db\u05dc\u0005-\u0000\u0000\u05dc\u05e0\u0004\u001d\u0003\u0000\u05dd"+ - "\u05de\u0005/\u0000\u0000\u05de\u05e0\u0004\u001d\u0004\u0000\u05df\u05da"+ - "\u0001\u0000\u0000\u0000\u05df\u05db\u0001\u0000\u0000\u0000\u05df\u05dd"+ - "\u0001\u0000\u0000\u0000\u05e0\u05e3\u0001\u0000\u0000\u0000\u05e1\u05df"+ - "\u0001\u0000\u0000\u0000\u05e1\u05e2\u0001\u0000\u0000\u0000\u05e2\u05e4"+ - "\u0001\u0000\u0000\u0000\u05e3\u05e1\u0001\u0000\u0000\u0000\u05e4\u05e6"+ - "\u0003E \u0000\u05e5\u05e7\u0003=\u001c\u0000\u05e6\u05e5\u0001\u0000"+ - "\u0000\u0000\u05e6\u05e7\u0001\u0000\u0000\u0000\u05e7\u05eb\u0001\u0000"+ - "\u0000\u0000\u05e8\u05ec\u0005+\u0000\u0000\u05e9\u05ea\u0005-\u0000\u0000"+ - "\u05ea\u05ec\u0004\u001d\u0005\u0000\u05eb\u05e8\u0001\u0000\u0000\u0000"+ - "\u05eb\u05e9\u0001\u0000\u0000\u0000\u05ec\u05ed\u0001\u0000\u0000\u0000"+ - "\u05ed\u05eb\u0001\u0000\u0000\u0000\u05ed\u05ee\u0001\u0000\u0000\u0000"+ - "\u05ee\u05ef\u0001\u0000\u0000\u0000\u05ef\u05f0\u0006\u001d\u0001\u0000"+ - "\u05f0@\u0001\u0000\u0000\u0000\u05f1\u05f2\u0007\u0002\u0000\u0000\u05f2"+ - "B\u0001\u0000\u0000\u0000\u05f3\u05f4\u0007\u0003\u0000\u0000\u05f4D\u0001"+ - "\u0000\u0000\u0000\u05f5\u05f6\u0007\u0004\u0000\u0000\u05f6F\u0001\u0000"+ - "\u0000\u0000\u05f7\u05f8\u0007\u0005\u0000\u0000\u05f8\u05f9\u0007\u0006"+ - "\u0000\u0000\u05f9\u05fa\u0007\u0006\u0000\u0000\u05faH\u0001\u0000\u0000"+ - "\u0000\u05fb\u05fc\u0007\u0005\u0000\u0000\u05fc\u05fd\u0007\u0007\u0000"+ - "\u0000\u05fd\u05fe\u0007\u0005\u0000\u0000\u05fe\u05ff\u0007\u0006\u0000"+ - "\u0000\u05ff\u0600\u0007\b\u0000\u0000\u0600\u0601\u0007\t\u0000\u0000"+ - "\u0601\u0602\u0007\n\u0000\u0000\u0602J\u0001\u0000\u0000\u0000\u0603"+ - "\u0604\u0007\u0005\u0000\u0000\u0604\u0605\u0007\u0007\u0000\u0000\u0605"+ - "\u0606\u0007\u0005\u0000\u0000\u0606\u0607\u0007\u0006\u0000\u0000\u0607"+ - "\u0608\u0007\b\u0000\u0000\u0608\u0609\u0007\u000b\u0000\u0000\u0609\u060a"+ - "\u0007\n\u0000\u0000\u060aL\u0001\u0000\u0000\u0000\u060b\u060c\u0007"+ - "\u0005\u0000\u0000\u060c\u060d\u0007\u0007\u0000\u0000\u060d\u060e\u0007"+ - "\f\u0000\u0000\u060eN\u0001\u0000\u0000\u0000\u060f\u0610\u0007\u0005"+ - "\u0000\u0000\u0610\u0611\u0007\u0007\u0000\u0000\u0611\u0612\u0007\b\u0000"+ - "\u0000\u0612P\u0001\u0000\u0000\u0000\u0613\u0614\u0007\u0005\u0000\u0000"+ - "\u0614\u0615\u0007\r\u0000\u0000\u0615\u0616\u0007\r\u0000\u0000\u0616"+ - "\u0617\u0007\u0005\u0000\u0000\u0617\u0618\u0007\b\u0000\u0000\u0618R"+ - "\u0001\u0000\u0000\u0000\u0619\u061a\u0007\u0005\u0000\u0000\u061a\u061b"+ - "\u0007\t\u0000\u0000\u061bT\u0001\u0000\u0000\u0000\u061c\u061d\u0007"+ - "\u0005\u0000\u0000\u061d\u061e\u0007\t\u0000\u0000\u061e\u061f\u0007\u000e"+ - "\u0000\u0000\u061fV\u0001\u0000\u0000\u0000\u0620\u0621\u0007\u0005\u0000"+ - "\u0000\u0621\u0622\u0007\t\u0000\u0000\u0622\u0623\u0007\b\u0000\u0000"+ - "\u0623\u0624\u0007\u000f\u0000\u0000\u0624\u0625\u0007\u000f\u0000\u0000"+ - "\u0625\u0626\u0007\n\u0000\u0000\u0626\u0627\u0007\u0010\u0000\u0000\u0627"+ - "\u0628\u0007\r\u0000\u0000\u0628\u0629\u0007\u0011\u0000\u0000\u0629\u062a"+ - "\u0007\u000e\u0000\u0000\u062aX\u0001\u0000\u0000\u0000\u062b\u062c\u0007"+ - "\u0012\u0000\u0000\u062c\u062d\u0007\u0013\u0000\u0000\u062d\u062e\u0007"+ - "\u0010\u0000\u0000\u062e\u062f\u0007\u0014\u0000\u0000\u062fZ\u0001\u0000"+ - "\u0000\u0000\u0630\u0631\u0007\u000e\u0000\u0000\u0631\u0632\u0007\u0005"+ - "\u0000\u0000\u0632\u0633\u0007\t\u0000\u0000\u0633\u0634\u0007\n\u0000"+ - "\u0000\u0634\\\u0001\u0000\u0000\u0000\u0635\u0636\u0007\u000e\u0000\u0000"+ - "\u0636\u0637\u0007\u0005\u0000\u0000\u0637\u0638\u0007\t\u0000\u0000\u0638"+ - "\u0639\u0007\u0010\u0000\u0000\u0639^\u0001\u0000\u0000\u0000\u063a\u063b"+ - "\u0007\u000e\u0000\u0000\u063b\u063c\u0007\u0014\u0000\u0000\u063c\u063d"+ - "\u0007\n\u0000\u0000\u063d\u063e\u0007\u000e\u0000\u0000\u063e\u063f\u0007"+ - "\u0015\u0000\u0000\u063f`\u0001\u0000\u0000\u0000\u0640\u0641\u0007\u000e"+ - "\u0000\u0000\u0641\u0642\u0007\u0013\u0000\u0000\u0642\u0643\u0007\u0006"+ - "\u0000\u0000\u0643\u0644\u0007\u0006\u0000\u0000\u0644\u0645\u0007\u0005"+ - "\u0000\u0000\u0645\u0646\u0007\u0010\u0000\u0000\u0646\u0647\u0007\n\u0000"+ - "\u0000\u0647b\u0001\u0000\u0000\u0000\u0648\u0649\u0007\u000e\u0000\u0000"+ - "\u0649\u064a\u0007\u0013\u0000\u0000\u064a\u064b\u0007\u0006\u0000\u0000"+ - "\u064b\u064c\u0007\u0016\u0000\u0000\u064c\u064d\u0007\u000f\u0000\u0000"+ - "\u064d\u064e\u0007\u0007\u0000\u0000\u064ed\u0001\u0000\u0000\u0000\u064f"+ - "\u0650\u0007\u000e\u0000\u0000\u0650\u0651\u0007\u0013\u0000\u0000\u0651"+ - "\u0652\u0007\u0007\u0000\u0000\u0652\u0653\u0007\t\u0000\u0000\u0653\u0654"+ - "\u0007\u0010\u0000\u0000\u0654\u0655\u0007\r\u0000\u0000\u0655\u0656\u0007"+ - "\u0005\u0000\u0000\u0656\u0657\u0007\u0011\u0000\u0000\u0657\u0658\u0007"+ - "\u0007\u0000\u0000\u0658\u0659\u0007\u0010\u0000\u0000\u0659f\u0001\u0000"+ - "\u0000\u0000\u065a\u065b\u0007\u000e\u0000\u0000\u065b\u065c\u0007\r\u0000"+ - "\u0000\u065c\u065d\u0007\n\u0000\u0000\u065d\u065e\u0007\u0005\u0000\u0000"+ - "\u065e\u065f\u0007\u0010\u0000\u0000\u065f\u0660\u0007\n\u0000\u0000\u0660"+ - "h\u0001\u0000\u0000\u0000\u0661\u0662\u0007\u000e\u0000\u0000\u0662\u0663"+ - "\u0007\u0016\u0000\u0000\u0663\u0664\u0007\r\u0000\u0000\u0664\u0665\u0007"+ - "\r\u0000\u0000\u0665\u0666\u0007\n\u0000\u0000\u0666\u0667\u0007\u0007"+ - "\u0000\u0000\u0667\u0668\u0007\u0010\u0000\u0000\u0668\u0669\u0005_\u0000"+ - "\u0000\u0669\u066a\u0007\u000e\u0000\u0000\u066a\u066b\u0007\u0005\u0000"+ - "\u0000\u066b\u066c\u0007\u0010\u0000\u0000\u066c\u066d\u0007\u0005\u0000"+ - "\u0000\u066d\u066e\u0007\u0006\u0000\u0000\u066e\u066f\u0007\u0013\u0000"+ - "\u0000\u066f\u0670\u0007\u0017\u0000\u0000\u0670j\u0001\u0000\u0000\u0000"+ - "\u0671\u0672\u0007\u000e\u0000\u0000\u0672\u0673\u0007\u0016\u0000\u0000"+ - "\u0673\u0674\u0007\r\u0000\u0000\u0674\u0675\u0007\r\u0000\u0000\u0675"+ - "\u0676\u0007\n\u0000\u0000\u0676\u0677\u0007\u0007\u0000\u0000\u0677\u0678"+ - "\u0007\u0010\u0000\u0000\u0678\u0679\u0005_\u0000\u0000\u0679\u067a\u0007"+ - "\f\u0000\u0000\u067a\u067b\u0007\u0005\u0000\u0000\u067b\u067c\u0007\u0010"+ - "\u0000\u0000\u067c\u067d\u0007\n\u0000\u0000\u067dl\u0001\u0000\u0000"+ - "\u0000\u067e\u067f\u0007\u000e\u0000\u0000\u067f\u0680\u0007\u0016\u0000"+ - "\u0000\u0680\u0681\u0007\r\u0000\u0000\u0681\u0682\u0007\r\u0000\u0000"+ - "\u0682\u0683\u0007\n\u0000\u0000\u0683\u0684\u0007\u0007\u0000\u0000\u0684"+ - "\u0685\u0007\u0010\u0000\u0000\u0685\u0686\u0005_\u0000\u0000\u0686\u0687"+ - "\u0007\r\u0000\u0000\u0687\u0688\u0007\u0013\u0000\u0000\u0688\u0689\u0007"+ - "\u0006\u0000\u0000\u0689\u068a\u0007\n\u0000\u0000\u068an\u0001\u0000"+ - "\u0000\u0000\u068b\u068c\u0007\u000e\u0000\u0000\u068c\u068d\u0007\u0016"+ - "\u0000\u0000\u068d\u068e\u0007\r\u0000\u0000\u068e\u068f\u0007\r\u0000"+ - "\u0000\u068f\u0690\u0007\n\u0000\u0000\u0690\u0691\u0007\u0007\u0000\u0000"+ - "\u0691\u0692\u0007\u0010\u0000\u0000\u0692\u0693\u0005_\u0000\u0000\u0693"+ - "\u0694\u0007\u0010\u0000\u0000\u0694\u0695\u0007\u0011\u0000\u0000\u0695"+ - "\u0696\u0007\u000f\u0000\u0000\u0696\u0697\u0007\n\u0000\u0000\u0697p"+ - "\u0001\u0000\u0000\u0000\u0698\u0699\u0007\u000e\u0000\u0000\u0699\u069a"+ - "\u0007\u0016\u0000\u0000\u069a\u069b\u0007\r\u0000\u0000\u069b\u069c\u0007"+ - "\r\u0000\u0000\u069c\u069d\u0007\n\u0000\u0000\u069d\u069e\u0007\u0007"+ - "\u0000\u0000\u069e\u069f\u0007\u0010\u0000\u0000\u069f\u06a0\u0005_\u0000"+ - "\u0000\u06a0\u06a1\u0007\u0010\u0000\u0000\u06a1\u06a2\u0007\u0011\u0000"+ - "\u0000\u06a2\u06a3\u0007\u000f\u0000\u0000\u06a3\u06a4\u0007\n\u0000\u0000"+ - "\u06a4\u06a5\u0007\t\u0000\u0000\u06a5\u06a6\u0007\u0010\u0000\u0000\u06a6"+ - "\u06a7\u0007\u0005\u0000\u0000\u06a7\u06a8\u0007\u000f\u0000\u0000\u06a8"+ - "\u06a9\u0007\u0018\u0000\u0000\u06a9r\u0001\u0000\u0000\u0000\u06aa\u06ab"+ - "\u0007\u000e\u0000\u0000\u06ab\u06ac\u0007\u0016\u0000\u0000\u06ac\u06ad"+ - "\u0007\r\u0000\u0000\u06ad\u06ae\u0007\r\u0000\u0000\u06ae\u06af\u0007"+ - "\n\u0000\u0000\u06af\u06b0\u0007\u0007\u0000\u0000\u06b0\u06b1\u0007\u0010"+ - "\u0000\u0000\u06b1\u06b2\u0005_\u0000\u0000\u06b2\u06b3\u0007\u0016\u0000"+ - "\u0000\u06b3\u06b4\u0007\t\u0000\u0000\u06b4\u06b5\u0007\n\u0000\u0000"+ - "\u06b5\u06b6\u0007\r\u0000\u0000\u06b6t\u0001\u0000\u0000\u0000\u06b7"+ - "\u06b8\u0007\f\u0000\u0000\u06b8\u06b9\u0007\n\u0000\u0000\u06b9\u06ba"+ - "\u0007\u0019\u0000\u0000\u06ba\u06bb\u0007\u0005\u0000\u0000\u06bb\u06bc"+ - "\u0007\u0016\u0000\u0000\u06bc\u06bd\u0007\u0006\u0000\u0000\u06bd\u06be"+ - "\u0007\u0010\u0000\u0000\u06bev\u0001\u0000\u0000\u0000\u06bf\u06c0\u0007"+ - "\f\u0000\u0000\u06c0\u06c1\u0007\n\u0000\u0000\u06c1\u06c2\u0007\u0019"+ - "\u0000\u0000\u06c2\u06c3\u0007\n\u0000\u0000\u06c3\u06c4\u0007\r\u0000"+ - "\u0000\u06c4\u06c5\u0007\r\u0000\u0000\u06c5\u06c6\u0007\u0005\u0000\u0000"+ - "\u06c6\u06c7\u0007\u0012\u0000\u0000\u06c7\u06c8\u0007\u0006\u0000\u0000"+ - "\u06c8\u06c9\u0007\n\u0000\u0000\u06c9x\u0001\u0000\u0000\u0000\u06ca"+ - "\u06cb\u0007\f\u0000\u0000\u06cb\u06cc\u0007\n\u0000\u0000\u06cc\u06cd"+ - "\u0007\t\u0000\u0000\u06cd\u06ce\u0007\u000e\u0000\u0000\u06cez\u0001"+ - "\u0000\u0000\u0000\u06cf\u06d0\u0007\f\u0000\u0000\u06d0\u06d1\u0007\u0011"+ - "\u0000\u0000\u06d1\u06d2\u0007\t\u0000\u0000\u06d2\u06d3\u0007\u0010\u0000"+ - "\u0000\u06d3\u06d4\u0007\u0011\u0000\u0000\u06d4\u06d5\u0007\u0007\u0000"+ - "\u0000\u06d5\u06d6\u0007\u000e\u0000\u0000\u06d6\u06d7\u0007\u0010\u0000"+ - "\u0000\u06d7|\u0001\u0000\u0000\u0000\u06d8\u06d9\u0007\f\u0000\u0000"+ - "\u06d9\u06da\u0007\u0013\u0000\u0000\u06da~\u0001\u0000\u0000\u0000\u06db"+ - "\u06dc\u0007\n\u0000\u0000\u06dc\u06dd\u0007\u0006\u0000\u0000\u06dd\u06de"+ - "\u0007\t\u0000\u0000\u06de\u06df\u0007\n\u0000\u0000\u06df\u0080\u0001"+ - "\u0000\u0000\u0000\u06e0\u06e1\u0007\n\u0000\u0000\u06e1\u06e2\u0007\u001a"+ - "\u0000\u0000\u06e2\u06e3\u0007\u000e\u0000\u0000\u06e3\u06e4\u0007\n\u0000"+ - "\u0000\u06e4\u06e5\u0007\u0018\u0000\u0000\u06e5\u06e6\u0007\u0010\u0000"+ - "\u0000\u06e6\u0082\u0001\u0000\u0000\u0000\u06e7\u06e8\u0007\u0019\u0000"+ - "\u0000\u06e8\u06e9\u0007\u0005\u0000\u0000\u06e9\u06ea\u0007\u0006\u0000"+ - "\u0000\u06ea\u06eb\u0007\t\u0000\u0000\u06eb\u06ec\u0007\n\u0000\u0000"+ - "\u06ec\u0084\u0001\u0000\u0000\u0000\u06ed\u06ee\u0007\u0019\u0000\u0000"+ - "\u06ee\u06ef\u0007\n\u0000\u0000\u06ef\u06f0\u0007\u0010\u0000\u0000\u06f0"+ - "\u06f1\u0007\u000e\u0000\u0000\u06f1\u06f2\u0007\u0014\u0000\u0000\u06f2"+ - "\u0086\u0001\u0000\u0000\u0000\u06f3\u06f4\u0007\u0019\u0000\u0000\u06f4"+ - "\u06f5\u0007\u0013\u0000\u0000\u06f5\u06f6\u0007\r\u0000\u0000\u06f6\u0088"+ - "\u0001\u0000\u0000\u0000\u06f7\u06f8\u0007\u0019\u0000\u0000\u06f8\u06f9"+ - "\u0007\u0013\u0000\u0000\u06f9\u06fa\u0007\r\u0000\u0000\u06fa\u06fb\u0007"+ - "\n\u0000\u0000\u06fb\u06fc\u0007\u0011\u0000\u0000\u06fc\u06fd\u0007\u0017"+ - "\u0000\u0000\u06fd\u06fe\u0007\u0007\u0000\u0000\u06fe\u008a\u0001\u0000"+ - "\u0000\u0000\u06ff\u0700\u0007\u0019\u0000\u0000\u0700\u0701\u0007\r\u0000"+ - "\u0000\u0701\u0702\u0007\u0013\u0000\u0000\u0702\u0703\u0007\u000f\u0000"+ - "\u0000\u0703\u008c\u0001\u0000\u0000\u0000\u0704\u0705\u0007\u0017\u0000"+ - "\u0000\u0705\u0706\u0007\r\u0000\u0000\u0706\u0707\u0007\u0005\u0000\u0000"+ - "\u0707\u0708\u0007\u0007\u0000\u0000\u0708\u0709\u0007\u0010\u0000\u0000"+ - "\u0709\u008e\u0001\u0000\u0000\u0000\u070a\u070b\u0007\u0017\u0000\u0000"+ - "\u070b\u070c\u0007\r\u0000\u0000\u070c\u070d\u0007\u0013\u0000\u0000\u070d"+ - "\u070e\u0007\u0016\u0000\u0000\u070e\u070f\u0007\u0018\u0000\u0000\u070f"+ - "\u0090\u0001\u0000\u0000\u0000\u0710\u0711\u0007\u0014\u0000\u0000\u0711"+ - "\u0712\u0007\u0005\u0000\u0000\u0712\u0713\u0007\u001b\u0000\u0000\u0713"+ - "\u0714\u0007\u0011\u0000\u0000\u0714\u0715\u0007\u0007\u0000\u0000\u0715"+ - "\u0716\u0007\u0017\u0000\u0000\u0716\u0092\u0001\u0000\u0000\u0000\u0717"+ - "\u0718\u0007\u0011\u0000\u0000\u0718\u0719\u0007\u0007\u0000\u0000\u0719"+ - "\u0094\u0001\u0000\u0000\u0000\u071a\u071b\u0007\u0011\u0000\u0000\u071b"+ - "\u071c\u0007\u0007\u0000\u0000\u071c\u071d\u0007\u0011\u0000\u0000\u071d"+ - "\u071e\u0007\u0010\u0000\u0000\u071e\u071f\u0007\u0011\u0000\u0000\u071f"+ - "\u0720\u0007\u0005\u0000\u0000\u0720\u0721\u0007\u0006\u0000\u0000\u0721"+ - "\u0722\u0007\u0006\u0000\u0000\u0722\u0723\u0007\b\u0000\u0000\u0723\u0096"+ - "\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\n\u0000\u0000\u0728\u0729\u0007\r\u0000\u0000\u0729\u072a\u0007"+ - "\t\u0000\u0000\u072a\u072b\u0007\n\u0000\u0000\u072b\u072c\u0007\u000e"+ - "\u0000\u0000\u072c\u072d\u0007\u0010\u0000\u0000\u072d\u0098\u0001\u0000"+ - "\u0000\u0000\u072e\u072f\u0007\u0011\u0000\u0000\u072f\u0730\u0007\u0007"+ - "\u0000\u0000\u0730\u0731\u0007\u0010\u0000\u0000\u0731\u0732\u0007\u0013"+ - "\u0000\u0000\u0732\u009a\u0001\u0000\u0000\u0000\u0733\u0734\u0007\u0006"+ - "\u0000\u0000\u0734\u0735\u0007\u0005\u0000\u0000\u0735\u0736\u0007\u0010"+ - "\u0000\u0000\u0736\u0737\u0007\n\u0000\u0000\u0737\u0738\u0007\r\u0000"+ - "\u0000\u0738\u0739\u0007\u0005\u0000\u0000\u0739\u073a\u0007\u0006\u0000"+ - "\u0000\u073a\u009c\u0001\u0000\u0000\u0000\u073b\u073c\u0007\u0006\u0000"+ - "\u0000\u073c\u073d\u0007\n\u0000\u0000\u073d\u073e\u0007\u0005\u0000\u0000"+ - "\u073e\u073f\u0007\f\u0000\u0000\u073f\u0740\u0007\u0011\u0000\u0000\u0740"+ - "\u0741\u0007\u0007\u0000\u0000\u0741\u0742\u0007\u0017\u0000\u0000\u0742"+ - "\u009e\u0001\u0000\u0000\u0000\u0743\u0744\u0007\u0006\u0000\u0000\u0744"+ - "\u0745\u0007\u0011\u0000\u0000\u0745\u0746\u0007\u000f\u0000\u0000\u0746"+ - "\u0747\u0007\u0011\u0000\u0000\u0747\u0748\u0007\u0010\u0000\u0000\u0748"+ - "\u00a0\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\u00a2"+ - "\u0001\u0000\u0000\u0000\u0753\u0754\u0007\u0006\u0000\u0000\u0754\u0755"+ - "\u0007\u0013\u0000\u0000\u0755\u0756\u0007\u000e\u0000\u0000\u0756\u0757"+ - "\u0007\u0005\u0000\u0000\u0757\u0758\u0007\u0006\u0000\u0000\u0758\u0759"+ - "\u0007\u0010\u0000\u0000\u0759\u075a\u0007\u0011\u0000\u0000\u075a\u075b"+ - "\u0007\u000f\u0000\u0000\u075b\u075c\u0007\n\u0000\u0000\u075c\u075d\u0007"+ - "\t\u0000\u0000\u075d\u075e\u0007\u0010\u0000\u0000\u075e\u075f\u0007\u0005"+ - "\u0000\u0000\u075f\u0760\u0007\u000f\u0000\u0000\u0760\u0761\u0007\u0018"+ - "\u0000\u0000\u0761\u00a4\u0001\u0000\u0000\u0000\u0762\u0763\u0007\u0007"+ - "\u0000\u0000\u0763\u0764\u0007\u0013\u0000\u0000\u0764\u0765\u0007\u0010"+ - "\u0000\u0000\u0765\u00a6\u0001\u0000\u0000\u0000\u0766\u0767\u0007\u0007"+ - "\u0000\u0000\u0767\u0768\u0007\u0016\u0000\u0000\u0768\u0769\u0007\u0006"+ - "\u0000\u0000\u0769\u076a\u0007\u0006\u0000\u0000\u076a\u00a8\u0001\u0000"+ - "\u0000\u0000\u076b\u076c\u0007\u0013\u0000\u0000\u076c\u076d\u0007\u0019"+ - "\u0000\u0000\u076d\u076e\u0007\u0019\u0000\u0000\u076e\u076f\u0007\t\u0000"+ - "\u0000\u076f\u0770\u0007\n\u0000\u0000\u0770\u0771\u0007\u0010\u0000\u0000"+ - "\u0771\u00aa\u0001\u0000\u0000\u0000\u0772\u0773\u0007\u0013\u0000\u0000"+ - "\u0773\u0774\u0007\u0007\u0000\u0000\u0774\u00ac\u0001\u0000\u0000\u0000"+ - "\u0775\u0776\u0007\u0013\u0000\u0000\u0776\u0777\u0007\u0007\u0000\u0000"+ - "\u0777\u0778\u0007\u0006\u0000\u0000\u0778\u0779\u0007\b\u0000\u0000\u0779"+ - "\u00ae\u0001\u0000\u0000\u0000\u077a\u077b\u0007\u0013\u0000\u0000\u077b"+ - "\u077c\u0007\r\u0000\u0000\u077c\u00b0\u0001\u0000\u0000\u0000\u077d\u077e"+ - "\u0007\u0013\u0000\u0000\u077e\u077f\u0007\r\u0000\u0000\u077f\u0780\u0007"+ - "\f\u0000\u0000\u0780\u0781\u0007\n\u0000\u0000\u0781\u0782\u0007\r\u0000"+ - "\u0000\u0782\u00b2\u0001\u0000\u0000\u0000\u0783\u0784\u0007\u0018\u0000"+ - "\u0000\u0784\u0785\u0007\u0006\u0000\u0000\u0785\u0786\u0007\u0005\u0000"+ - "\u0000\u0786\u0787\u0007\u000e\u0000\u0000\u0787\u0788\u0007\u0011\u0000"+ - "\u0000\u0788\u0789\u0007\u0007\u0000\u0000\u0789\u078a\u0007\u0017\u0000"+ - "\u0000\u078a\u00b4\u0001\u0000\u0000\u0000\u078b\u078c\u0007\u0018\u0000"+ - "\u0000\u078c\u078d\u0007\r\u0000\u0000\u078d\u078e\u0007\u0011\u0000\u0000"+ - "\u078e\u078f\u0007\u000f\u0000\u0000\u078f\u0790\u0007\u0005\u0000\u0000"+ - "\u0790\u0791\u0007\r\u0000\u0000\u0791\u0792\u0007\b\u0000\u0000\u0792"+ - "\u00b6\u0001\u0000\u0000\u0000\u0793\u0794\u0007\r\u0000\u0000\u0794\u0795"+ - "\u0007\n\u0000\u0000\u0795\u0796\u0007\u0019\u0000\u0000\u0796\u0797\u0007"+ - "\n\u0000\u0000\u0797\u0798\u0007\r\u0000\u0000\u0798\u0799\u0007\n\u0000"+ - "\u0000\u0799\u079a\u0007\u0007\u0000\u0000\u079a\u079b\u0007\u000e\u0000"+ - "\u0000\u079b\u079c\u0007\n\u0000\u0000\u079c\u079d\u0007\t\u0000\u0000"+ - "\u079d\u00b8\u0001\u0000\u0000\u0000\u079e\u079f\u0007\r\u0000\u0000\u079f"+ - "\u07a0\u0007\n\u0000\u0000\u07a0\u07a1\u0007\u0010\u0000\u0000\u07a1\u07a2"+ - "\u0007\u0016\u0000\u0000\u07a2\u07a3\u0007\r\u0000\u0000\u07a3\u07a4\u0007"+ - "\u0007\u0000\u0000\u07a4\u07a5\u0007\u0011\u0000\u0000\u07a5\u07a6\u0007"+ - "\u0007\u0000\u0000\u07a6\u07a7\u0007\u0017\u0000\u0000\u07a7\u00ba\u0001"+ - "\u0000\u0000\u0000\u07a8\u07a9\u0007\t\u0000\u0000\u07a9\u07aa\u0007\n"+ - "\u0000\u0000\u07aa\u07ab\u0007\u0006\u0000\u0000\u07ab\u07ac\u0007\n\u0000"+ - "\u0000\u07ac\u07ad\u0007\u000e\u0000\u0000\u07ad\u07ae\u0007\u0010\u0000"+ - "\u0000\u07ae\u00bc\u0001\u0000\u0000\u0000\u07af\u07b0\u0007\t\u0000\u0000"+ - "\u07b0\u07b1\u0007\n\u0000\u0000\u07b1\u07b2\u0007\t\u0000\u0000\u07b2"+ - "\u07b3\u0007\t\u0000\u0000\u07b3\u07b4\u0007\u0011\u0000\u0000\u07b4\u07b5"+ - "\u0007\u0013\u0000\u0000\u07b5\u07b6\u0007\u0007\u0000\u0000\u07b6\u07b7"+ - "\u0005_\u0000\u0000\u07b7\u07b8\u0007\u0016\u0000\u0000\u07b8\u07b9\u0007"+ - "\t\u0000\u0000\u07b9\u07ba\u0007\n\u0000\u0000\u07ba\u07bb\u0007\r\u0000"+ - "\u0000\u07bb\u00be\u0001\u0000\u0000\u0000\u07bc\u07bd\u0007\t\u0000\u0000"+ - "\u07bd\u07be\u0007\u0013\u0000\u0000\u07be\u07bf\u0007\u000f\u0000\u0000"+ - "\u07bf\u07c0\u0007\n\u0000\u0000\u07c0\u00c0\u0001\u0000\u0000\u0000\u07c1"+ - "\u07c2\u0007\t\u0000\u0000\u07c2\u07c3\u0007\b\u0000\u0000\u07c3\u07c4"+ - "\u0007\u000f\u0000\u0000\u07c4\u07c5\u0007\u000f\u0000\u0000\u07c5\u07c6"+ - "\u0007\n\u0000\u0000\u07c6\u07c7\u0007\u0010\u0000\u0000\u07c7\u07c8\u0007"+ - "\r\u0000\u0000\u07c8\u07c9\u0007\u0011\u0000\u0000\u07c9\u07ca\u0007\u000e"+ - "\u0000\u0000\u07ca\u00c2\u0001\u0000\u0000\u0000\u07cb\u07cc\u0007\u0010"+ - "\u0000\u0000\u07cc\u07cd\u0007\u0005\u0000\u0000\u07cd\u07ce\u0007\u0012"+ - "\u0000\u0000\u07ce\u07cf\u0007\u0006\u0000\u0000\u07cf\u07d0\u0007\n\u0000"+ - "\u0000\u07d0\u00c4\u0001\u0000\u0000\u0000\u07d1\u07d2\u0007\u0010\u0000"+ - "\u0000\u07d2\u07d3\u0007\u0014\u0000\u0000\u07d3\u07d4\u0007\n\u0000\u0000"+ - "\u07d4\u07d5\u0007\u0007\u0000\u0000\u07d5\u00c6\u0001\u0000\u0000\u0000"+ - "\u07d6\u07d7\u0007\u0010\u0000\u0000\u07d7\u07d8\u0007\u0013\u0000\u0000"+ - "\u07d8\u00c8\u0001\u0000\u0000\u0000\u07d9\u07da\u0007\u0010\u0000\u0000"+ - "\u07da\u07db\u0007\u0013\u0000\u0000\u07db\u07dc\u0007\u0018\u0000\u0000"+ - "\u07dc\u07dd\u0007\u0011\u0000\u0000\u07dd\u07de\u0007\u000e\u0000\u0000"+ - "\u07de\u00ca\u0001\u0000\u0000\u0000\u07df\u07e0\u0007\u0010\u0000\u0000"+ - "\u07e0\u07e1\u0007\u0013\u0000\u0000\u07e1\u07e2\u0007\u0018\u0000\u0000"+ - "\u07e2\u07e3\u0007\u0011\u0000\u0000\u07e3\u07e4\u0007\u000e\u0000\u0000"+ - "\u07e4\u07e5\u0007\t\u0000\u0000\u07e5\u00cc\u0001\u0000\u0000\u0000\u07e6"+ - "\u07e7\u0007\t\u0000\u0000\u07e7\u07e8\u0007\u0010\u0000\u0000\u07e8\u07e9"+ - "\u0007\r\u0000\u0000\u07e9\u07ea\u0007\n\u0000\u0000\u07ea\u07eb\u0007"+ - "\u0005\u0000\u0000\u07eb\u07ec\u0007\u000f\u0000\u0000\u07ec\u00ce\u0001"+ - "\u0000\u0000\u0000\u07ed\u07ee\u0007\u000b\u0000\u0000\u07ee\u07ef\u0007"+ - "\u001b\u0000\u0000\u07ef\u07f0\u0007\u0011\u0000\u0000\u07f0\u07f1\u0007"+ - "\n\u0000\u0000\u07f1\u07f2\u0007\u001c\u0000\u0000\u07f2\u00d0\u0001\u0000"+ - "\u0000\u0000\u07f3\u07f4\u0007\u000b\u0000\u0000\u07f4\u07f5\u0007\u001b"+ - "\u0000\u0000\u07f5\u07f6\u0007\u0011\u0000\u0000\u07f6\u07f7\u0007\n\u0000"+ - "\u0000\u07f7\u07f8\u0007\u001c\u0000\u0000\u07f8\u07f9\u0007\t\u0000\u0000"+ - "\u07f9\u00d2\u0001\u0000\u0000\u0000\u07fa\u07fb\u0007\u0010\u0000\u0000"+ - "\u07fb\u07fc\u0007\r\u0000\u0000\u07fc\u07fd\u0007\u0005\u0000\u0000\u07fd"+ - "\u07fe\u0007\u0011\u0000\u0000\u07fe\u07ff\u0007\u0006\u0000\u0000\u07ff"+ - "\u0800\u0007\u0011\u0000\u0000\u0800\u0801\u0007\u0007\u0000\u0000\u0801"+ - "\u0802\u0007\u0017\u0000\u0000\u0802\u00d4\u0001\u0000\u0000\u0000\u0803"+ - "\u0804\u0007\u0010\u0000\u0000\u0804\u0805\u0007\r\u0000\u0000\u0805\u0806"+ - "\u0007\u0016\u0000\u0000\u0806\u0807\u0007\n\u0000\u0000\u0807\u00d6\u0001"+ - "\u0000\u0000\u0000\u0808\u0809\u0007\u0016\u0000\u0000\u0809\u080a\u0007"+ - "\u0007\u0000\u0000\u080a\u080b\u0007\u0011\u0000\u0000\u080b\u080c\u0007"+ - "\u0013\u0000\u0000\u080c\u080d\u0007\u0007\u0000\u0000\u080d\u00d8\u0001"+ - "\u0000\u0000\u0000\u080e\u080f\u0007\u0016\u0000\u0000\u080f\u0810\u0007"+ - "\u0007\u0000\u0000\u0810\u0811\u0007\u0011\u0000\u0000\u0811\u0812\u0007"+ - "\u001d\u0000\u0000\u0812\u0813\u0007\u0016\u0000\u0000\u0813\u0814\u0007"+ - "\n\u0000\u0000\u0814\u00da\u0001\u0000\u0000\u0000\u0815\u0816\u0007\u0016"+ - "\u0000\u0000\u0816\u0817\u0007\t\u0000\u0000\u0817\u0818\u0007\n\u0000"+ - "\u0000\u0818\u0819\u0007\r\u0000\u0000\u0819\u00dc\u0001\u0000\u0000\u0000"+ - "\u081a\u081b\u0007\u0016\u0000\u0000\u081b\u081c\u0007\t\u0000\u0000\u081c"+ - "\u081d\u0007\u0011\u0000\u0000\u081d\u081e\u0007\u0007\u0000\u0000\u081e"+ - "\u081f\u0007\u0017\u0000\u0000\u081f\u00de\u0001\u0000\u0000\u0000\u0820"+ - "\u0821\u0007\u001b\u0000\u0000\u0821\u0822\u0007\u0005\u0000\u0000\u0822"+ - "\u0823\u0007\r\u0000\u0000\u0823\u0824\u0007\u0011\u0000\u0000\u0824\u0825"+ - "\u0007\u0005\u0000\u0000\u0825\u0826\u0007\f\u0000\u0000\u0826\u0827\u0007"+ - "\u0011\u0000\u0000\u0827\u0828\u0007\u000e\u0000\u0000\u0828\u00e0\u0001"+ - "\u0000\u0000\u0000\u0829\u082a\u0007\u001c\u0000\u0000\u082a\u082b\u0007"+ - "\u0014\u0000\u0000\u082b\u082c\u0007\n\u0000\u0000\u082c\u082d\u0007\u0007"+ - "\u0000\u0000\u082d\u00e2\u0001\u0000\u0000\u0000\u082e\u082f\u0007\u001c"+ - "\u0000\u0000\u082f\u0830\u0007\u0014\u0000\u0000\u0830\u0831\u0007\n\u0000"+ - "\u0000\u0831\u0832\u0007\r\u0000\u0000\u0832\u0833\u0007\n\u0000\u0000"+ - "\u0833\u00e4\u0001\u0000\u0000\u0000\u0834\u0835\u0007\u001c\u0000\u0000"+ - "\u0835\u0836\u0007\u0011\u0000\u0000\u0836\u0837\u0007\u0007\u0000\u0000"+ - "\u0837\u0838\u0007\f\u0000\u0000\u0838\u0839\u0007\u0013\u0000\u0000\u0839"+ - "\u083a\u0007\u001c\u0000\u0000\u083a\u00e6\u0001\u0000\u0000\u0000\u083b"+ - "\u083c\u0007\u001c\u0000\u0000\u083c\u083d\u0007\u0011\u0000\u0000\u083d"+ - "\u083e\u0007\u0010\u0000\u0000\u083e\u083f\u0007\u0014\u0000\u0000\u083f"+ - "\u00e8\u0001\u0000\u0000\u0000\u0840\u0841\u0007\u0005\u0000\u0000\u0841"+ - "\u0842\u0007\u0016\u0000\u0000\u0842\u0843\u0007\u0010\u0000\u0000\u0843"+ - "\u0844\u0007\u0014\u0000\u0000\u0844\u0845\u0007\u0013\u0000\u0000\u0845"+ - "\u0846\u0007\r\u0000\u0000\u0846\u0847\u0007\u0011\u0000\u0000\u0847\u0848"+ - "\u0007\u000b\u0000\u0000\u0848\u0849\u0007\u0005\u0000\u0000\u0849\u084a"+ - "\u0007\u0010\u0000\u0000\u084a\u084b\u0007\u0011\u0000\u0000\u084b\u084c"+ - "\u0007\u0013\u0000\u0000\u084c\u084d\u0007\u0007\u0000\u0000\u084d\u00ea"+ - "\u0001\u0000\u0000\u0000\u084e\u084f\u0007\u0012\u0000\u0000\u084f\u0850"+ - "\u0007\u0011\u0000\u0000\u0850\u0851\u0007\u0007\u0000\u0000\u0851\u0852"+ - "\u0007\u0005\u0000\u0000\u0852\u0853\u0007\r\u0000\u0000\u0853\u0854\u0007"+ - "\b\u0000\u0000\u0854\u00ec\u0001\u0000\u0000\u0000\u0855\u0856\u0007\u000e"+ - "\u0000\u0000\u0856\u0857\u0007\u0013\u0000\u0000\u0857\u0858\u0007\u0006"+ - "\u0000\u0000\u0858\u0859\u0007\u0006\u0000\u0000\u0859\u085a\u0007\u0005"+ - "\u0000\u0000\u085a\u085b\u0007\u0010\u0000\u0000\u085b\u085c\u0007\u0011"+ - "\u0000\u0000\u085c\u085d\u0007\u0013\u0000\u0000\u085d\u085e\u0007\u0007"+ - "\u0000\u0000\u085e\u00ee\u0001\u0000\u0000\u0000\u085f\u0860\u0007\u000e"+ - "\u0000\u0000\u0860\u0861\u0007\u0013\u0000\u0000\u0861\u0862\u0007\u0007"+ - "\u0000\u0000\u0862\u0863\u0007\u000e\u0000\u0000\u0863\u0864\u0007\u0016"+ - "\u0000\u0000\u0864\u0865\u0007\r\u0000\u0000\u0865\u0866\u0007\r\u0000"+ - "\u0000\u0866\u0867\u0007\n\u0000\u0000\u0867\u0868\u0007\u0007\u0000\u0000"+ - "\u0868\u0869\u0007\u0010\u0000\u0000\u0869\u086a\u0007\u0006\u0000\u0000"+ - "\u086a\u086b\u0007\b\u0000\u0000\u086b\u00f0\u0001\u0000\u0000\u0000\u086c"+ - "\u086d\u0007\u000e\u0000\u0000\u086d\u086e\u0007\r\u0000\u0000\u086e\u086f"+ - "\u0007\u0013\u0000\u0000\u086f\u0870\u0007\t\u0000\u0000\u0870\u0871\u0007"+ - "\t\u0000\u0000\u0871\u00f2\u0001\u0000\u0000\u0000\u0872\u0873\u0007\u000e"+ - "\u0000\u0000\u0873\u0874\u0007\u0016\u0000\u0000\u0874\u0875\u0007\r\u0000"+ - "\u0000\u0875\u0876\u0007\r\u0000\u0000\u0876\u0877\u0007\n\u0000\u0000"+ - "\u0877\u0878\u0007\u0007\u0000\u0000\u0878\u0879\u0007\u0010\u0000\u0000"+ - "\u0879\u087a\u0005_\u0000\u0000\u087a\u087b\u0007\t\u0000\u0000\u087b"+ - "\u087c\u0007\u000e\u0000\u0000\u087c\u087d\u0007\u0014\u0000\u0000\u087d"+ - "\u087e\u0007\n\u0000\u0000\u087e\u087f\u0007\u000f\u0000\u0000\u087f\u0880"+ - "\u0007\u0005\u0000\u0000\u0880\u00f4\u0001\u0000\u0000\u0000\u0881\u0882"+ - "\u0007\u0019\u0000\u0000\u0882\u0883\u0007\r\u0000\u0000\u0883\u0884\u0007"+ - "\n\u0000\u0000\u0884\u0885\u0007\n\u0000\u0000\u0885\u0886\u0007\u000b"+ - "\u0000\u0000\u0886\u0887\u0007\n\u0000\u0000\u0887\u00f6\u0001\u0000\u0000"+ - "\u0000\u0888\u0889\u0007\u0019\u0000\u0000\u0889\u088a\u0007\u0016\u0000"+ - "\u0000\u088a\u088b\u0007\u0006\u0000\u0000\u088b\u088c\u0007\u0006\u0000"+ - "\u0000\u088c\u00f8\u0001\u0000\u0000\u0000\u088d\u088e\u0007\u0011\u0000"+ - "\u0000\u088e\u088f\u0007\u0006\u0000\u0000\u088f\u0890\u0007\u0011\u0000"+ - "\u0000\u0890\u0891\u0007\u0015\u0000\u0000\u0891\u0892\u0007\n\u0000\u0000"+ - "\u0892\u00fa\u0001\u0000\u0000\u0000\u0893\u0894\u0007\u0011\u0000\u0000"+ - "\u0894\u0895\u0007\u0007\u0000\u0000\u0895\u0896\u0007\u0007\u0000\u0000"+ - "\u0896\u0897\u0007\n\u0000\u0000\u0897\u0898\u0007\r\u0000\u0000\u0898"+ - "\u00fc\u0001\u0000\u0000\u0000\u0899\u089a\u0007\u0011\u0000\u0000\u089a"+ - "\u089b\u0007\t\u0000\u0000\u089b\u00fe\u0001\u0000\u0000\u0000\u089c\u089d"+ - "\u0007\u0011\u0000\u0000\u089d\u089e\u0007\t\u0000\u0000\u089e\u089f\u0007"+ - "\u0007\u0000\u0000\u089f\u08a0\u0007\u0016\u0000\u0000\u08a0\u08a1\u0007"+ - "\u0006\u0000\u0000\u08a1\u08a2\u0007\u0006\u0000\u0000\u08a2\u0100\u0001"+ - "\u0000\u0000\u0000\u08a3\u08a4\u0007\u001e\u0000\u0000\u08a4\u08a5\u0007"+ - "\u0013\u0000\u0000\u08a5\u08a6\u0007\u0011\u0000\u0000\u08a6\u08a7\u0007"+ - "\u0007\u0000\u0000\u08a7\u0102\u0001\u0000\u0000\u0000\u08a8\u08a9\u0007"+ - "\u0006\u0000\u0000\u08a9\u08aa\u0007\n\u0000\u0000\u08aa\u08ab\u0007\u0019"+ - "\u0000\u0000\u08ab\u08ac\u0007\u0010\u0000\u0000\u08ac\u0104\u0001\u0000"+ - "\u0000\u0000\u08ad\u08ae\u0007\u0006\u0000\u0000\u08ae\u08af\u0007\u0011"+ - "\u0000\u0000\u08af\u08b0\u0007\u0015\u0000\u0000\u08b0\u08b1\u0007\n\u0000"+ - "\u0000\u08b1\u0106\u0001\u0000\u0000\u0000\u08b2\u08b3\u0007\u0007\u0000"+ - "\u0000\u08b3\u08b4\u0007\u0005\u0000\u0000\u08b4\u08b5\u0007\u0010\u0000"+ - "\u0000\u08b5\u08b6\u0007\u0016\u0000\u0000\u08b6\u08b7\u0007\r\u0000\u0000"+ - "\u08b7\u08b8\u0007\u0005\u0000\u0000\u08b8\u08b9\u0007\u0006\u0000\u0000"+ - "\u08b9\u0108\u0001\u0000\u0000\u0000\u08ba\u08bb\u0007\u0007\u0000\u0000"+ - "\u08bb\u08bc\u0007\u0013\u0000\u0000\u08bc\u08bd\u0007\u0010\u0000\u0000"+ - "\u08bd\u08be\u0007\u0007\u0000\u0000\u08be\u08bf\u0007\u0016\u0000\u0000"+ - "\u08bf\u08c0\u0007\u0006\u0000\u0000\u08c0\u08c1\u0007\u0006\u0000\u0000"+ - "\u08c1\u010a\u0001\u0000\u0000\u0000\u08c2\u08c3\u0007\u0013\u0000\u0000"+ - "\u08c3\u08c4\u0007\u0016\u0000\u0000\u08c4\u08c5\u0007\u0010\u0000\u0000"+ - "\u08c5\u08c6\u0007\n\u0000\u0000\u08c6\u08c7\u0007\r\u0000\u0000\u08c7"+ - "\u010c\u0001\u0000\u0000\u0000\u08c8\u08c9\u0007\u0013\u0000\u0000\u08c9"+ - "\u08ca\u0007\u001b\u0000\u0000\u08ca\u08cb\u0007\n\u0000\u0000\u08cb\u08cc"+ - "\u0007\r\u0000\u0000\u08cc\u010e\u0001\u0000\u0000\u0000\u08cd\u08ce\u0007"+ - "\u0013\u0000\u0000\u08ce\u08cf\u0007\u001b\u0000\u0000\u08cf\u08d0\u0007"+ - "\n\u0000\u0000\u08d0\u08d1\u0007\r\u0000\u0000\u08d1\u08d2\u0007\u0006"+ - "\u0000\u0000\u08d2\u08d3\u0007\u0005\u0000\u0000\u08d3\u08d4\u0007\u0018"+ - "\u0000\u0000\u08d4\u08d5\u0007\t\u0000\u0000\u08d5\u0110\u0001\u0000\u0000"+ - "\u0000\u08d6\u08d7\u0007\r\u0000\u0000\u08d7\u08d8\u0007\u0011\u0000\u0000"+ - "\u08d8\u08d9\u0007\u0017\u0000\u0000\u08d9\u08da\u0007\u0014\u0000\u0000"+ - "\u08da\u08db\u0007\u0010\u0000\u0000\u08db\u0112\u0001\u0000\u0000\u0000"+ - "\u08dc\u08dd\u0007\t\u0000\u0000\u08dd\u08de\u0007\u0011\u0000\u0000\u08de"+ - "\u08df\u0007\u000f\u0000\u0000\u08df\u08e0\u0007\u0011\u0000\u0000\u08e0"+ - "\u08e1\u0007\u0006\u0000\u0000\u08e1\u08e2\u0007\u0005\u0000\u0000\u08e2"+ - "\u08e3\u0007\r\u0000\u0000\u08e3\u0114\u0001\u0000\u0000\u0000\u08e4\u08e5"+ - "\u0007\u001b\u0000\u0000\u08e5\u08e6\u0007\n\u0000\u0000\u08e6\u08e7\u0007"+ - "\r\u0000\u0000\u08e7\u08e8\u0007\u0012\u0000\u0000\u08e8\u08e9\u0007\u0013"+ - "\u0000\u0000\u08e9\u08ea\u0007\t\u0000\u0000\u08ea\u08eb\u0007\n\u0000"+ - "\u0000\u08eb\u0116\u0001\u0000\u0000\u0000\u08ec\u08ed\u0007\u0005\u0000"+ - "\u0000\u08ed\u08ee\u0007\u0012\u0000\u0000\u08ee\u08ef\u0007\u0013\u0000"+ - "\u0000\u08ef\u08f0\u0007\r\u0000\u0000\u08f0\u08f1\u0007\u0010\u0000\u0000"+ - "\u08f1\u0118\u0001\u0000\u0000\u0000\u08f2\u08f3\u0007\u0005\u0000\u0000"+ - "\u08f3\u08f4\u0007\u0012\u0000\u0000\u08f4\u08f5\u0007\t\u0000\u0000\u08f5"+ - "\u08f6\u0007\u0013\u0000\u0000\u08f6\u08f7\u0007\u0006\u0000\u0000\u08f7"+ - "\u08f8\u0007\u0016\u0000\u0000\u08f8\u08f9\u0007\u0010\u0000\u0000\u08f9"+ - "\u08fa\u0007\n\u0000\u0000\u08fa\u011a\u0001\u0000\u0000\u0000\u08fb\u08fc"+ - "\u0007\u0005\u0000\u0000\u08fc\u08fd\u0007\u000e\u0000\u0000\u08fd\u08fe"+ - "\u0007\u000e\u0000\u0000\u08fe\u08ff\u0007\n\u0000\u0000\u08ff\u0900\u0007"+ - "\t\u0000\u0000\u0900\u0901\u0007\t\u0000\u0000\u0901\u011c\u0001\u0000"+ - "\u0000\u0000\u0902\u0903\u0007\u0005\u0000\u0000\u0903\u0904\u0007\u000e"+ - "\u0000\u0000\u0904\u0905\u0007\u0010\u0000\u0000\u0905\u0906\u0007\u0011"+ - "\u0000\u0000\u0906\u0907\u0007\u0013\u0000\u0000\u0907\u0908\u0007\u0007"+ - "\u0000\u0000\u0908\u011e\u0001\u0000\u0000\u0000\u0909\u090a\u0007\u0005"+ - "\u0000\u0000\u090a\u090b\u0007\f\u0000\u0000\u090b\u090c\u0007\f\u0000"+ - "\u0000\u090c\u0120\u0001\u0000\u0000\u0000\u090d\u090e\u0007\u0005\u0000"+ - "\u0000\u090e\u090f\u0007\f\u0000\u0000\u090f\u0910\u0007\u000f\u0000\u0000"+ - "\u0910\u0911\u0007\u0011\u0000\u0000\u0911\u0912\u0007\u0007\u0000\u0000"+ - "\u0912\u0122\u0001\u0000\u0000\u0000\u0913\u0914\u0007\u0005\u0000\u0000"+ - "\u0914\u0915\u0007\u0019\u0000\u0000\u0915\u0916\u0007\u0010\u0000\u0000"+ - "\u0916\u0917\u0007\n\u0000\u0000\u0917\u0918\u0007\r\u0000\u0000\u0918"+ - "\u0124\u0001\u0000\u0000\u0000\u0919\u091a\u0007\u0005\u0000\u0000\u091a"+ - "\u091b\u0007\u0017\u0000\u0000\u091b\u091c\u0007\u0017\u0000\u0000\u091c"+ - "\u091d\u0007\r\u0000\u0000\u091d\u091e\u0007\n\u0000\u0000\u091e\u091f"+ - "\u0007\u0017\u0000\u0000\u091f\u0920\u0007\u0005\u0000\u0000\u0920\u0921"+ - "\u0007\u0010\u0000\u0000\u0921\u0922\u0007\n\u0000\u0000\u0922\u0126\u0001"+ - "\u0000\u0000\u0000\u0923\u0924\u0007\u0005\u0000\u0000\u0924\u0925\u0007"+ - "\u0006\u0000\u0000\u0925\u0926\u0007\t\u0000\u0000\u0926\u0927\u0007\u0013"+ - "\u0000\u0000\u0927\u0128\u0001\u0000\u0000\u0000\u0928\u0929\u0007\u0005"+ - "\u0000\u0000\u0929\u092a\u0007\u0006\u0000\u0000\u092a\u092b\u0007\u0010"+ - "\u0000\u0000\u092b\u092c\u0007\n\u0000\u0000\u092c\u092d\u0007\r\u0000"+ - "\u0000\u092d\u012a\u0001\u0000\u0000\u0000\u092e\u092f\u0007\u0005\u0000"+ - "\u0000\u092f\u0930\u0007\u0006\u0000\u0000\u0930\u0931\u0007\u001c\u0000"+ - "\u0000\u0931\u0932\u0007\u0005\u0000\u0000\u0932\u0933\u0007\b\u0000\u0000"+ - "\u0933\u0934\u0007\t\u0000\u0000\u0934\u012c\u0001\u0000\u0000\u0000\u0935"+ - "\u0936\u0007\u0005\u0000\u0000\u0936\u0937\u0007\t\u0000\u0000\u0937\u0938"+ - "\u0007\t\u0000\u0000\u0938\u0939\u0007\n\u0000\u0000\u0939\u093a\u0007"+ - "\r\u0000\u0000\u093a\u093b\u0007\u0010\u0000\u0000\u093b\u093c\u0007\u0011"+ - "\u0000\u0000\u093c\u093d\u0007\u0013\u0000\u0000\u093d\u093e\u0007\u0007"+ - "\u0000\u0000\u093e\u012e\u0001\u0000\u0000\u0000\u093f\u0940\u0007\u0005"+ - "\u0000\u0000\u0940\u0941\u0007\t\u0000\u0000\u0941\u0942\u0007\t\u0000"+ - "\u0000\u0942\u0943\u0007\u0011\u0000\u0000\u0943\u0944\u0007\u0017\u0000"+ - "\u0000\u0944\u0945\u0007\u0007\u0000\u0000\u0945\u0946\u0007\u000f\u0000"+ - "\u0000\u0946\u0947\u0007\n\u0000\u0000\u0947\u0948\u0007\u0007\u0000\u0000"+ - "\u0948\u0949\u0007\u0010\u0000\u0000\u0949\u0130\u0001\u0000\u0000\u0000"+ - "\u094a\u094b\u0007\u0005\u0000\u0000\u094b\u094c\u0007\u0010\u0000\u0000"+ - "\u094c\u0132\u0001\u0000\u0000\u0000\u094d\u094e\u0007\u0005\u0000\u0000"+ - "\u094e\u094f\u0007\u0010\u0000\u0000\u094f\u0950\u0007\u0010\u0000\u0000"+ - "\u0950\u0951\u0007\r\u0000\u0000\u0951\u0952\u0007\u0011\u0000\u0000\u0952"+ - "\u0953\u0007\u0012\u0000\u0000\u0953\u0954\u0007\u0016\u0000\u0000\u0954"+ - "\u0955\u0007\u0010\u0000\u0000\u0955\u0956\u0007\n\u0000\u0000\u0956\u0134"+ - "\u0001\u0000\u0000\u0000\u0957\u0958\u0007\u0012\u0000\u0000\u0958\u0959"+ - "\u0007\u0005\u0000\u0000\u0959\u095a\u0007\u000e\u0000\u0000\u095a\u095b"+ - "\u0007\u0015\u0000\u0000\u095b\u095c\u0007\u001c\u0000\u0000\u095c\u095d"+ - "\u0007\u0005\u0000\u0000\u095d\u095e\u0007\r\u0000\u0000\u095e\u095f\u0007"+ - "\f\u0000\u0000\u095f\u0136\u0001\u0000\u0000\u0000\u0960\u0961\u0007\u0012"+ - "\u0000\u0000\u0961\u0962\u0007\n\u0000\u0000\u0962\u0963\u0007\u0019\u0000"+ - "\u0000\u0963\u0964\u0007\u0013\u0000\u0000\u0964\u0965\u0007\r\u0000\u0000"+ - "\u0965\u0966\u0007\n\u0000\u0000\u0966\u0138\u0001\u0000\u0000\u0000\u0967"+ - "\u0968\u0007\u0012\u0000\u0000\u0968\u0969\u0007\n\u0000\u0000\u0969\u096a"+ - "\u0007\u0017\u0000\u0000\u096a\u096b\u0007\u0011\u0000\u0000\u096b\u096c"+ - "\u0007\u0007\u0000\u0000\u096c\u013a\u0001\u0000\u0000\u0000\u096d\u096e"+ - "\u0007\u0012\u0000\u0000\u096e\u096f\u0007\b\u0000\u0000\u096f\u013c\u0001"+ - "\u0000\u0000\u0000\u0970\u0971\u0007\u000e\u0000\u0000\u0971\u0972\u0007"+ - "\u0005\u0000\u0000\u0972\u0973\u0007\u000e\u0000\u0000\u0973\u0974\u0007"+ - "\u0014\u0000\u0000\u0974\u0975\u0007\n\u0000\u0000\u0975\u013e\u0001\u0000"+ - "\u0000\u0000\u0976\u0977\u0007\u000e\u0000\u0000\u0977\u0978\u0007\u0005"+ - "\u0000\u0000\u0978\u0979\u0007\u0006\u0000\u0000\u0979\u097a\u0007\u0006"+ - "\u0000\u0000\u097a\u097b\u0007\n\u0000\u0000\u097b\u097c\u0007\f\u0000"+ - "\u0000\u097c\u0140\u0001\u0000\u0000\u0000\u097d\u097e\u0007\u000e\u0000"+ - "\u0000\u097e\u097f\u0007\u0005\u0000\u0000\u097f\u0980\u0007\t\u0000\u0000"+ - "\u0980\u0981\u0007\u000e\u0000\u0000\u0981\u0982\u0007\u0005\u0000\u0000"+ - "\u0982\u0983\u0007\f\u0000\u0000\u0983\u0984\u0007\n\u0000\u0000\u0984"+ - "\u0142\u0001\u0000\u0000\u0000\u0985\u0986\u0007\u000e\u0000\u0000\u0986"+ - "\u0987\u0007\u0005\u0000\u0000\u0987\u0988\u0007\t\u0000\u0000\u0988\u0989"+ - "\u0007\u000e\u0000\u0000\u0989\u098a\u0007\u0005\u0000\u0000\u098a\u098b"+ - "\u0007\f\u0000\u0000\u098b\u098c\u0007\n\u0000\u0000\u098c\u098d\u0007"+ - "\f\u0000\u0000\u098d\u0144\u0001\u0000\u0000\u0000\u098e\u098f\u0007\u000e"+ - "\u0000\u0000\u098f\u0990\u0007\u0005\u0000\u0000\u0990\u0991\u0007\u0010"+ - "\u0000\u0000\u0991\u0992\u0007\u0005\u0000\u0000\u0992\u0993\u0007\u0006"+ - "\u0000\u0000\u0993\u0994\u0007\u0013\u0000\u0000\u0994\u0995\u0007\u0017"+ - "\u0000\u0000\u0995\u0146\u0001\u0000\u0000\u0000\u0996\u0997\u0007\u000e"+ - "\u0000\u0000\u0997\u0998\u0007\u0014\u0000\u0000\u0998\u0999\u0007\u0005"+ - "\u0000\u0000\u0999\u099a\u0007\u0011\u0000\u0000\u099a\u099b\u0007\u0007"+ - "\u0000\u0000\u099b\u0148\u0001\u0000\u0000\u0000\u099c\u099d\u0007\u000e"+ - "\u0000\u0000\u099d\u099e\u0007\u0014\u0000\u0000\u099e\u099f\u0007\u0005"+ - "\u0000\u0000\u099f\u09a0\u0007\r\u0000\u0000\u09a0\u09a1\u0007\u0005\u0000"+ - "\u0000\u09a1\u09a2\u0007\u000e\u0000\u0000\u09a2\u09a3\u0007\u0010\u0000"+ - "\u0000\u09a3\u09a4\u0007\n\u0000\u0000\u09a4\u09a5\u0007\r\u0000\u0000"+ - "\u09a5\u09a6\u0007\u0011\u0000\u0000\u09a6\u09a7\u0007\t\u0000\u0000\u09a7"+ - "\u09a8\u0007\u0010\u0000\u0000\u09a8\u09a9\u0007\u0011\u0000\u0000\u09a9"+ - "\u09aa\u0007\u000e\u0000\u0000\u09aa\u09ab\u0007\t\u0000\u0000\u09ab\u014a"+ - "\u0001\u0000\u0000\u0000\u09ac\u09ad\u0007\u000e\u0000\u0000\u09ad\u09ae"+ - "\u0007\u0014\u0000\u0000\u09ae\u09af\u0007\n\u0000\u0000\u09af\u09b0\u0007"+ - "\u000e\u0000\u0000\u09b0\u09b1\u0007\u0015\u0000\u0000\u09b1\u09b2\u0007"+ - "\u0018\u0000\u0000\u09b2\u09b3\u0007\u0013\u0000\u0000\u09b3\u09b4\u0007"+ - "\u0011\u0000\u0000\u09b4\u09b5\u0007\u0007\u0000\u0000\u09b5\u09b6\u0007"+ - "\u0010\u0000\u0000\u09b6\u014c\u0001\u0000\u0000\u0000\u09b7\u09b8\u0007"+ - "\u000e\u0000\u0000\u09b8\u09b9\u0007\u0006\u0000\u0000\u09b9\u09ba\u0007"+ - "\u0005\u0000\u0000\u09ba\u09bb\u0007\t\u0000\u0000\u09bb\u09bc\u0007\t"+ - "\u0000\u0000\u09bc\u014e\u0001\u0000\u0000\u0000\u09bd\u09be\u0007\u000e"+ - "\u0000\u0000\u09be\u09bf\u0007\u0006\u0000\u0000\u09bf\u09c0\u0007\u0013"+ - "\u0000\u0000\u09c0\u09c1\u0007\t\u0000\u0000\u09c1\u09c2\u0007\n\u0000"+ - "\u0000\u09c2\u0150\u0001\u0000\u0000\u0000\u09c3\u09c4\u0007\u000e\u0000"+ - "\u0000\u09c4\u09c5\u0007\u0006\u0000\u0000\u09c5\u09c6\u0007\u0016\u0000"+ - "\u0000\u09c6\u09c7\u0007\t\u0000\u0000\u09c7\u09c8\u0007\u0010\u0000\u0000"+ - "\u09c8\u09c9\u0007\n\u0000\u0000\u09c9\u09ca\u0007\r\u0000\u0000\u09ca"+ - "\u0152\u0001\u0000\u0000\u0000\u09cb\u09cc\u0007\u000e\u0000\u0000\u09cc"+ - "\u09cd\u0007\u0013\u0000\u0000\u09cd\u09ce\u0007\u000f\u0000\u0000\u09ce"+ - "\u09cf\u0007\u000f\u0000\u0000\u09cf\u09d0\u0007\n\u0000\u0000\u09d0\u09d1"+ - "\u0007\u0007\u0000\u0000\u09d1\u09d2\u0007\u0010\u0000\u0000\u09d2\u0154"+ - "\u0001\u0000\u0000\u0000\u09d3\u09d4\u0007\u000e\u0000\u0000\u09d4\u09d5"+ - "\u0007\u0013\u0000\u0000\u09d5\u09d6\u0007\u000f\u0000\u0000\u09d6\u09d7"+ - "\u0007\u000f\u0000\u0000\u09d7\u09d8\u0007\n\u0000\u0000\u09d8\u09d9\u0007"+ - "\u0007\u0000\u0000\u09d9\u09da\u0007\u0010\u0000\u0000\u09da\u09db\u0007"+ - "\t\u0000\u0000\u09db\u0156\u0001\u0000\u0000\u0000\u09dc\u09dd\u0007\u000e"+ - "\u0000\u0000\u09dd\u09de\u0007\u0013\u0000\u0000\u09de\u09df\u0007\u000f"+ - "\u0000\u0000\u09df\u09e0\u0007\u000f\u0000\u0000\u09e0\u09e1\u0007\u0011"+ - "\u0000\u0000\u09e1\u09e2\u0007\u0010\u0000\u0000\u09e2\u0158\u0001\u0000"+ - "\u0000\u0000\u09e3\u09e4\u0007\u000e\u0000\u0000\u09e4\u09e5\u0007\u0013"+ - "\u0000\u0000\u09e5\u09e6\u0007\u000f\u0000\u0000\u09e6\u09e7\u0007\u000f"+ - "\u0000\u0000\u09e7\u09e8\u0007\u0011\u0000\u0000\u09e8\u09e9\u0007\u0010"+ - "\u0000\u0000\u09e9\u09ea\u0007\u0010\u0000\u0000\u09ea\u09eb\u0007\n\u0000"+ - "\u0000\u09eb\u09ec\u0007\f\u0000\u0000\u09ec\u015a\u0001\u0000\u0000\u0000"+ - "\u09ed\u09ee\u0007\u000e\u0000\u0000\u09ee\u09ef\u0007\u0013\u0000\u0000"+ - "\u09ef\u09f0\u0007\u0007\u0000\u0000\u09f0\u09f1\u0007\u0019\u0000\u0000"+ - "\u09f1\u09f2\u0007\u0011\u0000\u0000\u09f2\u09f3\u0007\u0017\u0000\u0000"+ - "\u09f3\u09f4\u0007\u0016\u0000\u0000\u09f4\u09f5\u0007\r\u0000\u0000\u09f5"+ - "\u09f6\u0007\u0005\u0000\u0000\u09f6\u09f7\u0007\u0010\u0000\u0000\u09f7"+ - "\u09f8\u0007\u0011\u0000\u0000\u09f8\u09f9\u0007\u0013\u0000\u0000\u09f9"+ - "\u09fa\u0007\u0007\u0000\u0000\u09fa\u015c\u0001\u0000\u0000\u0000\u09fb"+ - "\u09fc\u0007\u000e\u0000\u0000\u09fc\u09fd\u0007\u0013\u0000\u0000\u09fd"+ - "\u09fe\u0007\u0007\u0000\u0000\u09fe\u09ff\u0007\u0007\u0000\u0000\u09ff"+ - "\u0a00\u0007\n\u0000\u0000\u0a00\u0a01\u0007\u000e\u0000\u0000\u0a01\u0a02"+ - "\u0007\u0010\u0000\u0000\u0a02\u0a03\u0007\u0011\u0000\u0000\u0a03\u0a04"+ - "\u0007\u0013\u0000\u0000\u0a04\u0a05\u0007\u0007\u0000\u0000\u0a05\u015e"+ - "\u0001\u0000\u0000\u0000\u0a06\u0a07\u0007\u000e\u0000\u0000\u0a07\u0a08"+ - "\u0007\u0013\u0000\u0000\u0a08\u0a09\u0007\u0007\u0000\u0000\u0a09\u0a0a"+ - "\u0007\t\u0000\u0000\u0a0a\u0a0b\u0007\u0010\u0000\u0000\u0a0b\u0a0c\u0007"+ - "\r\u0000\u0000\u0a0c\u0a0d\u0007\u0005\u0000\u0000\u0a0d\u0a0e\u0007\u0011"+ - "\u0000\u0000\u0a0e\u0a0f\u0007\u0007\u0000\u0000\u0a0f\u0a10\u0007\u0010"+ - "\u0000\u0000\u0a10\u0a11\u0007\t\u0000\u0000\u0a11\u0160\u0001\u0000\u0000"+ - "\u0000\u0a12\u0a13\u0007\u000e\u0000\u0000\u0a13\u0a14\u0007\u0013\u0000"+ - "\u0000\u0a14\u0a15\u0007\u0007\u0000\u0000\u0a15\u0a16\u0007\u0010\u0000"+ - "\u0000\u0a16\u0a17\u0007\n\u0000\u0000\u0a17\u0a18\u0007\u0007\u0000\u0000"+ - "\u0a18\u0a19\u0007\u0010\u0000\u0000\u0a19\u0162\u0001\u0000\u0000\u0000"+ - "\u0a1a\u0a1b\u0007\u000e\u0000\u0000\u0a1b\u0a1c\u0007\u0013\u0000\u0000"+ - "\u0a1c\u0a1d\u0007\u0007\u0000\u0000\u0a1d\u0a1e\u0007\u0010\u0000\u0000"+ - "\u0a1e\u0a1f\u0007\u0011\u0000\u0000\u0a1f\u0a20\u0007\u0007\u0000\u0000"+ - "\u0a20\u0a21\u0007\u0016\u0000\u0000\u0a21\u0a22\u0007\n\u0000\u0000\u0a22"+ - "\u0164\u0001\u0000\u0000\u0000\u0a23\u0a24\u0007\u000e\u0000\u0000\u0a24"+ - "\u0a25\u0007\u0013\u0000\u0000\u0a25\u0a26\u0007\u0007\u0000\u0000\u0a26"+ - "\u0a27\u0007\u001b\u0000\u0000\u0a27\u0a28\u0007\n\u0000\u0000\u0a28\u0a29"+ - "\u0007\r\u0000\u0000\u0a29\u0a2a\u0007\t\u0000\u0000\u0a2a\u0a2b\u0007"+ - "\u0011\u0000\u0000\u0a2b\u0a2c\u0007\u0013\u0000\u0000\u0a2c\u0a2d\u0007"+ - "\u0007\u0000\u0000\u0a2d\u0166\u0001\u0000\u0000\u0000\u0a2e\u0a2f\u0007"+ - "\u000e\u0000\u0000\u0a2f\u0a30\u0007\u0013\u0000\u0000\u0a30\u0a31\u0007"+ - "\u0018\u0000\u0000\u0a31\u0a32\u0007\b\u0000\u0000\u0a32\u0168\u0001\u0000"+ - "\u0000\u0000\u0a33\u0a34\u0007\u000e\u0000\u0000\u0a34\u0a35\u0007\u0013"+ - "\u0000\u0000\u0a35\u0a36\u0007\t\u0000\u0000\u0a36\u0a37\u0007\u0010\u0000"+ - "\u0000\u0a37\u016a\u0001\u0000\u0000\u0000\u0a38\u0a39\u0007\u000e\u0000"+ - "\u0000\u0a39\u0a3a\u0007\t\u0000\u0000\u0a3a\u0a3b\u0007\u001b\u0000\u0000"+ - "\u0a3b\u016c\u0001\u0000\u0000\u0000\u0a3c\u0a3d\u0007\u000e\u0000\u0000"+ - "\u0a3d\u0a3e\u0007\u0016\u0000\u0000\u0a3e\u0a3f\u0007\r\u0000\u0000\u0a3f"+ - "\u0a40\u0007\t\u0000\u0000\u0a40\u0a41\u0007\u0013\u0000\u0000\u0a41\u0a42"+ - "\u0007\r\u0000\u0000\u0a42\u016e\u0001\u0000\u0000\u0000\u0a43\u0a44\u0007"+ - "\u000e\u0000\u0000\u0a44\u0a45\u0007\b\u0000\u0000\u0a45\u0a46\u0007\u000e"+ - "\u0000\u0000\u0a46\u0a47\u0007\u0006\u0000\u0000\u0a47\u0a48\u0007\n\u0000"+ - "\u0000\u0a48\u0170\u0001\u0000\u0000\u0000\u0a49\u0a4a\u0007\f\u0000\u0000"+ - "\u0a4a\u0a4b\u0007\u0005\u0000\u0000\u0a4b\u0a4c\u0007\u0010\u0000\u0000"+ - "\u0a4c\u0a4d\u0007\u0005\u0000\u0000\u0a4d\u0172\u0001\u0000\u0000\u0000"+ - "\u0a4e\u0a4f\u0007\f\u0000\u0000\u0a4f\u0a50\u0007\u0005\u0000\u0000\u0a50"+ - "\u0a51\u0007\u0010\u0000\u0000\u0a51\u0a52\u0007\u0005\u0000\u0000\u0a52"+ - "\u0a53\u0007\u0012\u0000\u0000\u0a53\u0a54\u0007\u0005\u0000\u0000\u0a54"+ - "\u0a55\u0007\t\u0000\u0000\u0a55\u0a56\u0007\n\u0000\u0000\u0a56\u0174"+ - "\u0001\u0000\u0000\u0000\u0a57\u0a58\u0007\f\u0000\u0000\u0a58\u0a59\u0007"+ - "\u0005\u0000\u0000\u0a59\u0a5a\u0007\b\u0000\u0000\u0a5a\u0176\u0001\u0000"+ - "\u0000\u0000\u0a5b\u0a5c\u0007\f\u0000\u0000\u0a5c\u0a5d\u0007\n\u0000"+ - "\u0000\u0a5d\u0a5e\u0007\u0005\u0000\u0000\u0a5e\u0a5f\u0007\u0006\u0000"+ - "\u0000\u0a5f\u0a60\u0007\u0006\u0000\u0000\u0a60\u0a61\u0007\u0013\u0000"+ - "\u0000\u0a61\u0a62\u0007\u000e\u0000\u0000\u0a62\u0a63\u0007\u0005\u0000"+ - "\u0000\u0a63\u0a64\u0007\u0010\u0000\u0000\u0a64\u0a65\u0007\n\u0000\u0000"+ - "\u0a65\u0178\u0001\u0000\u0000\u0000\u0a66\u0a67\u0007\f\u0000\u0000\u0a67"+ - "\u0a68\u0007\n\u0000\u0000\u0a68\u0a69\u0007\u000e\u0000\u0000\u0a69\u0a6a"+ - "\u0007\u0006\u0000\u0000\u0a6a\u0a6b\u0007\u0005\u0000\u0000\u0a6b\u0a6c"+ - "\u0007\r\u0000\u0000\u0a6c\u0a6d\u0007\n\u0000\u0000\u0a6d\u017a\u0001"+ - "\u0000\u0000\u0000\u0a6e\u0a6f\u0007\f\u0000\u0000\u0a6f\u0a70\u0007\n"+ - "\u0000\u0000\u0a70\u0a71\u0007\u0019\u0000\u0000\u0a71\u0a72\u0007\u0005"+ - "\u0000\u0000\u0a72\u0a73\u0007\u0016\u0000\u0000\u0a73\u0a74\u0007\u0006"+ - "\u0000\u0000\u0a74\u0a75\u0007\u0010\u0000\u0000\u0a75\u0a76\u0007\t\u0000"+ - "\u0000\u0a76\u017c\u0001\u0000\u0000\u0000\u0a77\u0a78\u0007\f\u0000\u0000"+ - "\u0a78\u0a79\u0007\n\u0000\u0000\u0a79\u0a7a\u0007\u0019\u0000\u0000\u0a7a"+ - "\u0a7b\u0007\n\u0000\u0000\u0a7b\u0a7c\u0007\r\u0000\u0000\u0a7c\u0a7d"+ - "\u0007\r\u0000\u0000\u0a7d\u0a7e\u0007\n\u0000\u0000\u0a7e\u0a7f\u0007"+ - "\f\u0000\u0000\u0a7f\u017e\u0001\u0000\u0000\u0000\u0a80\u0a81\u0007\f"+ - "\u0000\u0000\u0a81\u0a82\u0007\n\u0000\u0000\u0a82\u0a83\u0007\u0019\u0000"+ - "\u0000\u0a83\u0a84\u0007\u0011\u0000\u0000\u0a84\u0a85\u0007\u0007\u0000"+ - "\u0000\u0a85\u0a86\u0007\n\u0000\u0000\u0a86\u0a87\u0007\r\u0000\u0000"+ - "\u0a87\u0180\u0001\u0000\u0000\u0000\u0a88\u0a89\u0007\f\u0000\u0000\u0a89"+ - "\u0a8a\u0007\n\u0000\u0000\u0a8a\u0a8b\u0007\u0006\u0000\u0000\u0a8b\u0a8c"+ - "\u0007\n\u0000\u0000\u0a8c\u0a8d\u0007\u0010\u0000\u0000\u0a8d\u0a8e\u0007"+ - "\n\u0000\u0000\u0a8e\u0182\u0001\u0000\u0000\u0000\u0a8f\u0a90\u0007\f"+ - "\u0000\u0000\u0a90\u0a91\u0007\n\u0000\u0000\u0a91\u0a92\u0007\u0006\u0000"+ - "\u0000\u0a92\u0a93\u0007\u0011\u0000\u0000\u0a93\u0a94\u0007\u000f\u0000"+ - "\u0000\u0a94\u0a95\u0007\u0011\u0000\u0000\u0a95\u0a96\u0007\u0010\u0000"+ - "\u0000\u0a96\u0a97\u0007\n\u0000\u0000\u0a97\u0a98\u0007\r\u0000\u0000"+ - "\u0a98\u0184\u0001\u0000\u0000\u0000\u0a99\u0a9a\u0007\f\u0000\u0000\u0a9a"+ - "\u0a9b\u0007\n\u0000\u0000\u0a9b\u0a9c\u0007\u0006\u0000\u0000\u0a9c\u0a9d"+ - "\u0007\u0011\u0000\u0000\u0a9d\u0a9e\u0007\u000f\u0000\u0000\u0a9e\u0a9f"+ - "\u0007\u0011\u0000\u0000\u0a9f\u0aa0\u0007\u0010\u0000\u0000\u0aa0\u0aa1"+ - "\u0007\n\u0000\u0000\u0aa1\u0aa2\u0007\r\u0000\u0000\u0aa2\u0aa3\u0007"+ - "\t\u0000\u0000\u0aa3\u0186\u0001\u0000\u0000\u0000\u0aa4\u0aa5\u0007\f"+ - "\u0000\u0000\u0aa5\u0aa6\u0007\u0011\u0000\u0000\u0aa6\u0aa7\u0007\u000e"+ - "\u0000\u0000\u0aa7\u0aa8\u0007\u0010\u0000\u0000\u0aa8\u0aa9\u0007\u0011"+ - "\u0000\u0000\u0aa9\u0aaa\u0007\u0013\u0000\u0000\u0aaa\u0aab\u0007\u0007"+ - "\u0000\u0000\u0aab\u0aac\u0007\u0005\u0000\u0000\u0aac\u0aad\u0007\r\u0000"+ - "\u0000\u0aad\u0aae\u0007\b\u0000\u0000\u0aae\u0188\u0001\u0000\u0000\u0000"+ - "\u0aaf\u0ab0\u0007\f\u0000\u0000\u0ab0\u0ab1\u0007\u0011\u0000\u0000\u0ab1"+ - "\u0ab2\u0007\t\u0000\u0000\u0ab2\u0ab3\u0007\u0005\u0000\u0000\u0ab3\u0ab4"+ - "\u0007\u0012\u0000\u0000\u0ab4\u0ab5\u0007\u0006\u0000\u0000\u0ab5\u0ab6"+ - "\u0007\n\u0000\u0000\u0ab6\u018a\u0001\u0000\u0000\u0000\u0ab7\u0ab8\u0007"+ - "\f\u0000\u0000\u0ab8\u0ab9\u0007\u0011\u0000\u0000\u0ab9\u0aba\u0007\t"+ - "\u0000\u0000\u0aba\u0abb\u0007\u000e\u0000\u0000\u0abb\u0abc\u0007\u0005"+ - "\u0000\u0000\u0abc\u0abd\u0007\r\u0000\u0000\u0abd\u0abe\u0007\f\u0000"+ - "\u0000\u0abe\u018c\u0001\u0000\u0000\u0000\u0abf\u0ac0\u0007\f\u0000\u0000"+ - "\u0ac0\u0ac1\u0007\u0013\u0000\u0000\u0ac1\u0ac2\u0007\u000e\u0000\u0000"+ - "\u0ac2\u0ac3\u0007\u0016\u0000\u0000\u0ac3\u0ac4\u0007\u000f\u0000\u0000"+ - "\u0ac4\u0ac5\u0007\n\u0000\u0000\u0ac5\u0ac6\u0007\u0007\u0000\u0000\u0ac6"+ - "\u0ac7\u0007\u0010\u0000\u0000\u0ac7\u018e\u0001\u0000\u0000\u0000\u0ac8"+ - "\u0ac9\u0007\f\u0000\u0000\u0ac9\u0aca\u0007\u0013\u0000\u0000\u0aca\u0acb"+ - "\u0007\u000f\u0000\u0000\u0acb\u0acc\u0007\u0005\u0000\u0000\u0acc\u0acd"+ - "\u0007\u0011\u0000\u0000\u0acd\u0ace\u0007\u0007\u0000\u0000\u0ace\u0190"+ - "\u0001\u0000\u0000\u0000\u0acf\u0ad0\u0007\f\u0000\u0000\u0ad0\u0ad1\u0007"+ - "\u0013\u0000\u0000\u0ad1\u0ad2\u0007\u0016\u0000\u0000\u0ad2\u0ad3\u0007"+ - "\u0012\u0000\u0000\u0ad3\u0ad4\u0007\u0006\u0000\u0000\u0ad4\u0ad5\u0007"+ - "\n\u0000\u0000\u0ad5\u0192\u0001\u0000\u0000\u0000\u0ad6\u0ad7\u0007\f"+ - "\u0000\u0000\u0ad7\u0ad8\u0007\r\u0000\u0000\u0ad8\u0ad9\u0007\u0013\u0000"+ - "\u0000\u0ad9\u0ada\u0007\u0018\u0000\u0000\u0ada\u0194\u0001\u0000\u0000"+ - "\u0000\u0adb\u0adc\u0007\n\u0000\u0000\u0adc\u0add\u0007\u0005\u0000\u0000"+ - "\u0add\u0ade\u0007\u000e\u0000\u0000\u0ade\u0adf\u0007\u0014\u0000\u0000"+ - "\u0adf\u0196\u0001\u0000\u0000\u0000\u0ae0\u0ae1\u0007\n\u0000\u0000\u0ae1"+ - "\u0ae2\u0007\u0007\u0000\u0000\u0ae2\u0ae3\u0007\u0005\u0000\u0000\u0ae3"+ - "\u0ae4\u0007\u0012\u0000\u0000\u0ae4\u0ae5\u0007\u0006\u0000\u0000\u0ae5"+ - "\u0ae6\u0007\n\u0000\u0000\u0ae6\u0198\u0001\u0000\u0000\u0000\u0ae7\u0ae8"+ - "\u0007\n\u0000\u0000\u0ae8\u0ae9\u0007\u0007\u0000\u0000\u0ae9\u0aea\u0007"+ - "\u000e\u0000\u0000\u0aea\u0aeb\u0007\u0013\u0000\u0000\u0aeb\u0aec\u0007"+ - "\f\u0000\u0000\u0aec\u0aed\u0007\u0011\u0000\u0000\u0aed\u0aee\u0007\u0007"+ - "\u0000\u0000\u0aee\u0aef\u0007\u0017\u0000\u0000\u0aef\u019a\u0001\u0000"+ - "\u0000\u0000\u0af0\u0af1\u0007\n\u0000\u0000\u0af1\u0af2\u0007\u0007\u0000"+ - "\u0000\u0af2\u0af3\u0007\u000e\u0000\u0000\u0af3\u0af4\u0007\r\u0000\u0000"+ - "\u0af4\u0af5\u0007\b\u0000\u0000\u0af5\u0af6\u0007\u0018\u0000\u0000\u0af6"+ - "\u0af7\u0007\u0010\u0000\u0000\u0af7\u0af8\u0007\n\u0000\u0000\u0af8\u0af9"+ - "\u0007\f\u0000\u0000\u0af9\u019c\u0001\u0000\u0000\u0000\u0afa\u0afb\u0007"+ - "\n\u0000\u0000\u0afb\u0afc\u0007\u0007\u0000\u0000\u0afc\u0afd\u0007\u0016"+ - "\u0000\u0000\u0afd\u0afe\u0007\u000f\u0000\u0000\u0afe\u019e\u0001\u0000"+ - "\u0000\u0000\u0aff\u0b00\u0007\n\u0000\u0000\u0b00\u0b01\u0007\t\u0000"+ - "\u0000\u0b01\u0b02\u0007\u000e\u0000\u0000\u0b02\u0b03\u0007\u0005\u0000"+ - "\u0000\u0b03\u0b04\u0007\u0018\u0000\u0000\u0b04\u0b05\u0007\n\u0000\u0000"+ - "\u0b05\u01a0\u0001\u0000\u0000\u0000\u0b06\u0b07\u0007\n\u0000\u0000\u0b07"+ - "\u0b08\u0007\u001b\u0000\u0000\u0b08\u0b09\u0007\n\u0000\u0000\u0b09\u0b0a"+ - "\u0007\u0007\u0000\u0000\u0b0a\u0b0b\u0007\u0010\u0000\u0000\u0b0b\u01a2"+ - "\u0001\u0000\u0000\u0000\u0b0c\u0b0d\u0007\n\u0000\u0000\u0b0d\u0b0e\u0007"+ - "\u001a\u0000\u0000\u0b0e\u0b0f\u0007\u000e\u0000\u0000\u0b0f\u0b10\u0007"+ - "\u0006\u0000\u0000\u0b10\u0b11\u0007\u0016\u0000\u0000\u0b11\u0b12\u0007"+ - "\f\u0000\u0000\u0b12\u0b13\u0007\n\u0000\u0000\u0b13\u01a4\u0001\u0000"+ - "\u0000\u0000\u0b14\u0b15\u0007\n\u0000\u0000\u0b15\u0b16\u0007\u001a\u0000"+ - "\u0000\u0b16\u0b17\u0007\u000e\u0000\u0000\u0b17\u0b18\u0007\u0006\u0000"+ - "\u0000\u0b18\u0b19\u0007\u0016\u0000\u0000\u0b19\u0b1a\u0007\f\u0000\u0000"+ - "\u0b1a\u0b1b\u0007\u0011\u0000\u0000\u0b1b\u0b1c\u0007\u0007\u0000\u0000"+ - "\u0b1c\u0b1d\u0007\u0017\u0000\u0000\u0b1d\u01a6\u0001\u0000\u0000\u0000"+ - "\u0b1e\u0b1f\u0007\n\u0000\u0000\u0b1f\u0b20\u0007\u001a\u0000\u0000\u0b20"+ - "\u0b21\u0007\u000e\u0000\u0000\u0b21\u0b22\u0007\u0006\u0000\u0000\u0b22"+ - "\u0b23\u0007\u0016\u0000\u0000\u0b23\u0b24\u0007\t\u0000\u0000\u0b24\u0b25"+ - "\u0007\u0011\u0000\u0000\u0b25\u0b26\u0007\u001b\u0000\u0000\u0b26\u0b27"+ - "\u0007\n\u0000\u0000\u0b27\u01a8\u0001\u0000\u0000\u0000\u0b28\u0b29\u0007"+ - "\n\u0000\u0000\u0b29\u0b2a\u0007\u001a\u0000\u0000\u0b2a\u0b2b\u0007\n"+ - "\u0000\u0000\u0b2b\u0b2c\u0007\u000e\u0000\u0000\u0b2c\u0b2d\u0007\u0016"+ - "\u0000\u0000\u0b2d\u0b2e\u0007\u0010\u0000\u0000\u0b2e\u0b2f\u0007\n\u0000"+ - "\u0000\u0b2f\u01aa\u0001\u0000\u0000\u0000\u0b30\u0b31\u0007\n\u0000\u0000"+ - "\u0b31\u0b32\u0007\u001a\u0000\u0000\u0b32\u0b33\u0007\u0018\u0000\u0000"+ - "\u0b33\u0b34\u0007\u0006\u0000\u0000\u0b34\u0b35\u0007\u0005\u0000\u0000"+ - "\u0b35\u0b36\u0007\u0011\u0000\u0000\u0b36\u0b37\u0007\u0007\u0000\u0000"+ - "\u0b37\u01ac\u0001\u0000\u0000\u0000\u0b38\u0b39\u0007\n\u0000\u0000\u0b39"+ - "\u0b3a\u0007\u001a\u0000\u0000\u0b3a\u0b3b\u0007\u0010\u0000\u0000\u0b3b"+ - "\u0b3c\u0007\n\u0000\u0000\u0b3c\u0b3d\u0007\u0007\u0000\u0000\u0b3d\u0b3e"+ - "\u0007\t\u0000\u0000\u0b3e\u0b3f\u0007\u0011\u0000\u0000\u0b3f\u0b40\u0007"+ - "\u0013\u0000\u0000\u0b40\u0b41\u0007\u0007\u0000\u0000\u0b41\u01ae\u0001"+ - "\u0000\u0000\u0000\u0b42\u0b43\u0007\n\u0000\u0000\u0b43\u0b44\u0007\u001a"+ - "\u0000\u0000\u0b44\u0b45\u0007\u0010\u0000\u0000\u0b45\u0b46\u0007\n\u0000"+ - "\u0000\u0b46\u0b47\u0007\r\u0000\u0000\u0b47\u0b48\u0007\u0007\u0000\u0000"+ - "\u0b48\u0b49\u0007\u0005\u0000\u0000\u0b49\u0b4a\u0007\u0006\u0000\u0000"+ - "\u0b4a\u01b0\u0001\u0000\u0000\u0000\u0b4b\u0b4c\u0007\u0019\u0000\u0000"+ - "\u0b4c\u0b4d\u0007\u0005\u0000\u0000\u0b4d\u0b4e\u0007\u000f\u0000\u0000"+ - "\u0b4e\u0b4f\u0007\u0011\u0000\u0000\u0b4f\u0b50\u0007\u0006\u0000\u0000"+ - "\u0b50\u0b51\u0007\b\u0000\u0000\u0b51\u01b2\u0001\u0000\u0000\u0000\u0b52"+ - "\u0b53\u0007\u0019\u0000\u0000\u0b53\u0b54\u0007\u0011\u0000\u0000\u0b54"+ - "\u0b55\u0007\r\u0000\u0000\u0b55\u0b56\u0007\t\u0000\u0000\u0b56\u0b57"+ - "\u0007\u0010\u0000\u0000\u0b57\u01b4\u0001\u0000\u0000\u0000\u0b58\u0b59"+ - "\u0007\u0019\u0000\u0000\u0b59\u0b5a\u0007\u0013\u0000\u0000\u0b5a\u0b5b"+ - "\u0007\u0006\u0000\u0000\u0b5b\u0b5c\u0007\u0006\u0000\u0000\u0b5c\u0b5d"+ - "\u0007\u0013\u0000\u0000\u0b5d\u0b5e\u0007\u001c\u0000\u0000\u0b5e\u0b5f"+ - "\u0007\u0011\u0000\u0000\u0b5f\u0b60\u0007\u0007\u0000\u0000\u0b60\u0b61"+ - "\u0007\u0017\u0000\u0000\u0b61\u01b6\u0001\u0000\u0000\u0000\u0b62\u0b63"+ - "\u0007\u0019\u0000\u0000\u0b63\u0b64\u0007\u0013\u0000\u0000\u0b64\u0b65"+ - "\u0007\r\u0000\u0000\u0b65\u0b66\u0007\u000e\u0000\u0000\u0b66\u0b67\u0007"+ - "\n\u0000\u0000\u0b67\u01b8\u0001\u0000\u0000\u0000\u0b68\u0b69\u0007\u0019"+ - "\u0000\u0000\u0b69\u0b6a\u0007\u0013\u0000\u0000\u0b6a\u0b6b\u0007\r\u0000"+ - "\u0000\u0b6b\u0b6c\u0007\u001c\u0000\u0000\u0b6c\u0b6d\u0007\u0005\u0000"+ - "\u0000\u0b6d\u0b6e\u0007\r\u0000\u0000\u0b6e\u0b6f\u0007\f\u0000\u0000"+ - "\u0b6f\u01ba\u0001\u0000\u0000\u0000\u0b70\u0b71\u0007\u0019\u0000\u0000"+ - "\u0b71\u0b72\u0007\u0016\u0000\u0000\u0b72\u0b73\u0007\u0007\u0000\u0000"+ - "\u0b73\u0b74\u0007\u000e\u0000\u0000\u0b74\u0b75\u0007\u0010\u0000\u0000"+ - "\u0b75\u0b76\u0007\u0011\u0000\u0000\u0b76\u0b77\u0007\u0013\u0000\u0000"+ - "\u0b77\u0b78\u0007\u0007\u0000\u0000\u0b78\u01bc\u0001\u0000\u0000\u0000"+ - "\u0b79\u0b7a\u0007\u0019\u0000\u0000\u0b7a\u0b7b\u0007\u0016\u0000\u0000"+ - "\u0b7b\u0b7c\u0007\u0007\u0000\u0000\u0b7c\u0b7d\u0007\u000e\u0000\u0000"+ - "\u0b7d\u0b7e\u0007\u0010\u0000\u0000\u0b7e\u0b7f\u0007\u0011\u0000\u0000"+ - "\u0b7f\u0b80\u0007\u0013\u0000\u0000\u0b80\u0b81\u0007\u0007\u0000\u0000"+ - "\u0b81\u0b82\u0007\t\u0000\u0000\u0b82\u01be\u0001\u0000\u0000\u0000\u0b83"+ - "\u0b84\u0007\u0017\u0000\u0000\u0b84\u0b85\u0007\u0006\u0000\u0000\u0b85"+ - "\u0b86\u0007\u0013\u0000\u0000\u0b86\u0b87\u0007\u0012\u0000\u0000\u0b87"+ - "\u0b88\u0007\u0005\u0000\u0000\u0b88\u0b89\u0007\u0006\u0000\u0000\u0b89"+ - "\u01c0\u0001\u0000\u0000\u0000\u0b8a\u0b8b\u0007\u0017\u0000\u0000\u0b8b"+ - "\u0b8c\u0007\r\u0000\u0000\u0b8c\u0b8d\u0007\u0005\u0000\u0000\u0b8d\u0b8e"+ - "\u0007\u0007\u0000\u0000\u0b8e\u0b8f\u0007\u0010\u0000\u0000\u0b8f\u0b90"+ - "\u0007\n\u0000\u0000\u0b90\u0b91\u0007\f\u0000\u0000\u0b91\u01c2\u0001"+ - "\u0000\u0000\u0000\u0b92\u0b93\u0007\u0014\u0000\u0000\u0b93\u0b94\u0007"+ - "\u0005\u0000\u0000\u0b94\u0b95\u0007\u0007\u0000\u0000\u0b95\u0b96\u0007"+ - "\f\u0000\u0000\u0b96\u0b97\u0007\u0006\u0000\u0000\u0b97\u0b98\u0007\n"+ - "\u0000\u0000\u0b98\u0b99\u0007\r\u0000\u0000\u0b99\u01c4\u0001\u0000\u0000"+ - "\u0000\u0b9a\u0b9b\u0007\u0014\u0000\u0000\u0b9b\u0b9c\u0007\n\u0000\u0000"+ - "\u0b9c\u0b9d\u0007\u0005\u0000\u0000\u0b9d\u0b9e\u0007\f\u0000\u0000\u0b9e"+ - "\u0b9f\u0007\n\u0000\u0000\u0b9f\u0ba0\u0007\r\u0000\u0000\u0ba0\u01c6"+ - "\u0001\u0000\u0000\u0000\u0ba1\u0ba2\u0007\u0014\u0000\u0000\u0ba2\u0ba3"+ - "\u0007\u0013\u0000\u0000\u0ba3\u0ba4\u0007\u0006\u0000\u0000\u0ba4\u0ba5"+ - "\u0007\f\u0000\u0000\u0ba5\u01c8\u0001\u0000\u0000\u0000\u0ba6\u0ba7\u0007"+ - "\u0014\u0000\u0000\u0ba7\u0ba8\u0007\u0013\u0000\u0000\u0ba8\u0ba9\u0007"+ - "\u0016\u0000\u0000\u0ba9\u0baa\u0007\r\u0000\u0000\u0baa\u01ca\u0001\u0000"+ - "\u0000\u0000\u0bab\u0bac\u0007\u0011\u0000\u0000\u0bac\u0bad\u0007\f\u0000"+ - "\u0000\u0bad\u0bae\u0007\n\u0000\u0000\u0bae\u0baf\u0007\u0007\u0000\u0000"+ - "\u0baf\u0bb0\u0007\u0010\u0000\u0000\u0bb0\u0bb1\u0007\u0011\u0000\u0000"+ - "\u0bb1\u0bb2\u0007\u0010\u0000\u0000\u0bb2\u0bb3\u0007\b\u0000\u0000\u0bb3"+ - "\u01cc\u0001\u0000\u0000\u0000\u0bb4\u0bb5\u0007\u0011\u0000\u0000\u0bb5"+ - "\u0bb6\u0007\u0019\u0000\u0000\u0bb6\u01ce\u0001\u0000\u0000\u0000\u0bb7"+ - "\u0bb8\u0007\u0011\u0000\u0000\u0bb8\u0bb9\u0007\u000f\u0000\u0000\u0bb9"+ - "\u0bba\u0007\u000f\u0000\u0000\u0bba\u0bbb\u0007\n\u0000\u0000\u0bbb\u0bbc"+ - "\u0007\f\u0000\u0000\u0bbc\u0bbd\u0007\u0011\u0000\u0000\u0bbd\u0bbe\u0007"+ - "\u0005\u0000\u0000\u0bbe\u0bbf\u0007\u0010\u0000\u0000\u0bbf\u0bc0\u0007"+ - "\n\u0000\u0000\u0bc0\u01d0\u0001\u0000\u0000\u0000\u0bc1\u0bc2\u0007\u0011"+ - "\u0000\u0000\u0bc2\u0bc3\u0007\u000f\u0000\u0000\u0bc3\u0bc4\u0007\u000f"+ - "\u0000\u0000\u0bc4\u0bc5\u0007\u0016\u0000\u0000\u0bc5\u0bc6\u0007\u0010"+ - "\u0000\u0000\u0bc6\u0bc7\u0007\u0005\u0000\u0000\u0bc7\u0bc8\u0007\u0012"+ - "\u0000\u0000\u0bc8\u0bc9\u0007\u0006\u0000\u0000\u0bc9\u0bca\u0007\n\u0000"+ - "\u0000\u0bca\u01d2\u0001\u0000\u0000\u0000\u0bcb\u0bcc\u0007\u0011\u0000"+ - "\u0000\u0bcc\u0bcd\u0007\u000f\u0000\u0000\u0bcd\u0bce\u0007\u0018\u0000"+ - "\u0000\u0bce\u0bcf\u0007\u0006\u0000\u0000\u0bcf\u0bd0\u0007\u0011\u0000"+ - "\u0000\u0bd0\u0bd1\u0007\u000e\u0000\u0000\u0bd1\u0bd2\u0007\u0011\u0000"+ - "\u0000\u0bd2\u0bd3\u0007\u0010\u0000\u0000\u0bd3\u01d4\u0001\u0000\u0000"+ - "\u0000\u0bd4\u0bd5\u0007\u0011\u0000\u0000\u0bd5\u0bd6\u0007\u0007\u0000"+ - "\u0000\u0bd6\u0bd7\u0007\u000e\u0000\u0000\u0bd7\u0bd8\u0007\u0006\u0000"+ - "\u0000\u0bd8\u0bd9\u0007\u0016\u0000\u0000\u0bd9\u0bda\u0007\f\u0000\u0000"+ - "\u0bda\u0bdb\u0007\u0011\u0000\u0000\u0bdb\u0bdc\u0007\u0007\u0000\u0000"+ - "\u0bdc\u0bdd\u0007\u0017\u0000\u0000\u0bdd\u01d6\u0001\u0000\u0000\u0000"+ - "\u0bde\u0bdf\u0007\u0011\u0000\u0000\u0bdf\u0be0\u0007\u0007\u0000\u0000"+ - "\u0be0\u0be1\u0007\u000e\u0000\u0000\u0be1\u0be2\u0007\r\u0000\u0000\u0be2"+ - "\u0be3\u0007\n\u0000\u0000\u0be3\u0be4\u0007\u000f\u0000\u0000\u0be4\u0be5"+ - "\u0007\n\u0000\u0000\u0be5\u0be6\u0007\u0007\u0000\u0000\u0be6\u0be7\u0007"+ - "\u0010\u0000\u0000\u0be7\u01d8\u0001\u0000\u0000\u0000\u0be8\u0be9\u0007"+ - "\u0011\u0000\u0000\u0be9\u0bea\u0007\u0007\u0000\u0000\u0bea\u0beb\u0007"+ - "\f\u0000\u0000\u0beb\u0bec\u0007\n\u0000\u0000\u0bec\u0bed\u0007\u001a"+ - "\u0000\u0000\u0bed\u01da\u0001\u0000\u0000\u0000\u0bee\u0bef\u0007\u0011"+ - "\u0000\u0000\u0bef\u0bf0\u0007\u0007\u0000\u0000\u0bf0\u0bf1\u0007\f\u0000"+ - "\u0000\u0bf1\u0bf2\u0007\n\u0000\u0000\u0bf2\u0bf3\u0007\u001a\u0000\u0000"+ - "\u0bf3\u0bf4\u0007\n\u0000\u0000\u0bf4\u0bf5\u0007\t\u0000\u0000\u0bf5"+ - "\u01dc\u0001\u0000\u0000\u0000\u0bf6\u0bf7\u0007\u0011\u0000\u0000\u0bf7"+ - "\u0bf8\u0007\u0007\u0000\u0000\u0bf8\u0bf9\u0007\u0014\u0000\u0000\u0bf9"+ - "\u0bfa\u0007\n\u0000\u0000\u0bfa\u0bfb\u0007\r\u0000\u0000\u0bfb\u0bfc"+ - "\u0007\u0011\u0000\u0000\u0bfc\u0bfd\u0007\u0010\u0000\u0000\u0bfd\u01de"+ - "\u0001\u0000\u0000\u0000\u0bfe\u0bff\u0007\u0011\u0000\u0000\u0bff\u0c00"+ - "\u0007\u0007\u0000\u0000\u0c00\u0c01\u0007\u0014\u0000\u0000\u0c01\u0c02"+ - "\u0007\n\u0000\u0000\u0c02\u0c03\u0007\r\u0000\u0000\u0c03\u0c04\u0007"+ - "\u0011\u0000\u0000\u0c04\u0c05\u0007\u0010\u0000\u0000\u0c05\u0c06\u0007"+ - "\t\u0000\u0000\u0c06\u01e0\u0001\u0000\u0000\u0000\u0c07\u0c08\u0007\u0011"+ - "\u0000\u0000\u0c08\u0c09\u0007\u0007\u0000\u0000\u0c09\u0c0a\u0007\u0006"+ - "\u0000\u0000\u0c0a\u0c0b\u0007\u0011\u0000\u0000\u0c0b\u0c0c\u0007\u0007"+ - "\u0000\u0000\u0c0c\u0c0d\u0007\n\u0000\u0000\u0c0d\u01e2\u0001\u0000\u0000"+ - "\u0000\u0c0e\u0c0f\u0007\u0011\u0000\u0000\u0c0f\u0c10\u0007\u0007\u0000"+ - "\u0000\u0c10\u0c11\u0007\t\u0000\u0000\u0c11\u0c12\u0007\n\u0000\u0000"+ - "\u0c12\u0c13\u0007\u0007\u0000\u0000\u0c13\u0c14\u0007\t\u0000\u0000\u0c14"+ - "\u0c15\u0007\u0011\u0000\u0000\u0c15\u0c16\u0007\u0010\u0000\u0000\u0c16"+ - "\u0c17\u0007\u0011\u0000\u0000\u0c17\u0c18\u0007\u001b\u0000\u0000\u0c18"+ - "\u0c19\u0007\n\u0000\u0000\u0c19\u01e4\u0001\u0000\u0000\u0000\u0c1a\u0c1b"+ - "\u0007\u0011\u0000\u0000\u0c1b\u0c1c\u0007\u0007\u0000\u0000\u0c1c\u0c1d"+ - "\u0007\t\u0000\u0000\u0c1d\u0c1e\u0007\n\u0000\u0000\u0c1e\u0c1f\u0007"+ - "\r\u0000\u0000\u0c1f\u0c20\u0007\u0010\u0000\u0000\u0c20\u01e6\u0001\u0000"+ - "\u0000\u0000\u0c21\u0c22\u0007\u0011\u0000\u0000\u0c22\u0c23\u0007\u0007"+ - "\u0000\u0000\u0c23\u0c24\u0007\t\u0000\u0000\u0c24\u0c25\u0007\u0010\u0000"+ - "\u0000\u0c25\u0c26\u0007\n\u0000\u0000\u0c26\u0c27\u0007\u0005\u0000\u0000"+ - "\u0c27\u0c28\u0007\f\u0000\u0000\u0c28\u01e8\u0001\u0000\u0000\u0000\u0c29"+ - "\u0c2a\u0007\u0011\u0000\u0000\u0c2a\u0c2b\u0007\u0007\u0000\u0000\u0c2b"+ - "\u0c2c\u0007\u001b\u0000\u0000\u0c2c\u0c2d\u0007\u0013\u0000\u0000\u0c2d"+ - "\u0c2e\u0007\u0015\u0000\u0000\u0c2e\u0c2f\u0007\n\u0000\u0000\u0c2f\u0c30"+ - "\u0007\r\u0000\u0000\u0c30\u01ea\u0001\u0000\u0000\u0000\u0c31\u0c32\u0007"+ - "\u0011\u0000\u0000\u0c32\u0c33\u0007\t\u0000\u0000\u0c33\u0c34\u0007\u0013"+ - "\u0000\u0000\u0c34\u0c35\u0007\u0006\u0000\u0000\u0c35\u0c36\u0007\u0005"+ - "\u0000\u0000\u0c36\u0c37\u0007\u0010\u0000\u0000\u0c37\u0c38\u0007\u0011"+ - "\u0000\u0000\u0c38\u0c39\u0007\u0013\u0000\u0000\u0c39\u0c3a\u0007\u0007"+ - "\u0000\u0000\u0c3a\u01ec\u0001\u0000\u0000\u0000\u0c3b\u0c3c\u0007\u0015"+ - "\u0000\u0000\u0c3c\u0c3d\u0007\n\u0000\u0000\u0c3d\u0c3e\u0007\b\u0000"+ - "\u0000\u0c3e\u01ee\u0001\u0000\u0000\u0000\u0c3f\u0c40\u0007\u0006\u0000"+ - "\u0000\u0c40\u0c41\u0007\u0005\u0000\u0000\u0c41\u0c42\u0007\u0012\u0000"+ - "\u0000\u0c42\u0c43\u0007\n\u0000\u0000\u0c43\u0c44\u0007\u0006\u0000\u0000"+ - "\u0c44\u01f0\u0001\u0000\u0000\u0000\u0c45\u0c46\u0007\u0006\u0000\u0000"+ - "\u0c46\u0c47\u0007\u0005\u0000\u0000\u0c47\u0c48\u0007\u0007\u0000\u0000"+ - "\u0c48\u0c49\u0007\u0017\u0000\u0000\u0c49\u0c4a\u0007\u0016\u0000\u0000"+ - "\u0c4a\u0c4b\u0007\u0005\u0000\u0000\u0c4b\u0c4c\u0007\u0017\u0000\u0000"+ - "\u0c4c\u0c4d\u0007\n\u0000\u0000\u0c4d\u01f2\u0001\u0000\u0000\u0000\u0c4e"+ - "\u0c4f\u0007\u0006\u0000\u0000\u0c4f\u0c50\u0007\u0005\u0000\u0000\u0c50"+ - "\u0c51\u0007\r\u0000\u0000\u0c51\u0c52\u0007\u0017\u0000\u0000\u0c52\u0c53"+ - "\u0007\n\u0000\u0000\u0c53\u01f4\u0001\u0000\u0000\u0000\u0c54\u0c55\u0007"+ - "\u0006\u0000\u0000\u0c55\u0c56\u0007\u0005\u0000\u0000\u0c56\u0c57\u0007"+ - "\t\u0000\u0000\u0c57\u0c58\u0007\u0010\u0000\u0000\u0c58\u01f6\u0001\u0000"+ - "\u0000\u0000\u0c59\u0c5a\u0007\u0006\u0000\u0000\u0c5a\u0c5b\u0007\n\u0000"+ - "\u0000\u0c5b\u0c5c\u0007\u0005\u0000\u0000\u0c5c\u0c5d\u0007\u0015\u0000"+ - "\u0000\u0c5d\u0c5e\u0007\u0018\u0000\u0000\u0c5e\u0c5f\u0007\r\u0000\u0000"+ - "\u0c5f\u0c60\u0007\u0013\u0000\u0000\u0c60\u0c61\u0007\u0013\u0000\u0000"+ - "\u0c61\u0c62\u0007\u0019\u0000\u0000\u0c62\u01f8\u0001\u0000\u0000\u0000"+ - "\u0c63\u0c64\u0007\u0006\u0000\u0000\u0c64\u0c65\u0007\n\u0000\u0000\u0c65"+ - "\u0c66\u0007\u001b\u0000\u0000\u0c66\u0c67\u0007\n\u0000\u0000\u0c67\u0c68"+ - "\u0007\u0006\u0000\u0000\u0c68\u01fa\u0001\u0000\u0000\u0000\u0c69\u0c6a"+ - "\u0007\u0006\u0000\u0000\u0c6a\u0c6b\u0007\u0011\u0000\u0000\u0c6b\u0c6c"+ - "\u0007\t\u0000\u0000\u0c6c\u0c6d\u0007\u0010\u0000\u0000\u0c6d\u0c6e\u0007"+ - "\n\u0000\u0000\u0c6e\u0c6f\u0007\u0007\u0000\u0000\u0c6f\u01fc\u0001\u0000"+ - "\u0000\u0000\u0c70\u0c71\u0007\u0006\u0000\u0000\u0c71\u0c72\u0007\u0013"+ - "\u0000\u0000\u0c72\u0c73\u0007\u0005\u0000\u0000\u0c73\u0c74\u0007\f\u0000"+ - "\u0000\u0c74\u01fe\u0001\u0000\u0000\u0000\u0c75\u0c76\u0007\u0006\u0000"+ - "\u0000\u0c76\u0c77\u0007\u0013\u0000\u0000\u0c77\u0c78\u0007\u000e\u0000"+ - "\u0000\u0c78\u0c79\u0007\u0005\u0000\u0000\u0c79\u0c7a\u0007\u0006\u0000"+ - "\u0000\u0c7a\u0200\u0001\u0000\u0000\u0000\u0c7b\u0c7c\u0007\u0006\u0000"+ - "\u0000\u0c7c\u0c7d\u0007\u0013\u0000\u0000\u0c7d\u0c7e\u0007\u000e\u0000"+ - "\u0000\u0c7e\u0c7f\u0007\u0005\u0000\u0000\u0c7f\u0c80\u0007\u0010\u0000"+ - "\u0000\u0c80\u0c81\u0007\u0011\u0000\u0000\u0c81\u0c82\u0007\u0013\u0000"+ - "\u0000\u0c82\u0c83\u0007\u0007\u0000\u0000\u0c83\u0202\u0001\u0000\u0000"+ - "\u0000\u0c84\u0c85\u0007\u0006\u0000\u0000\u0c85\u0c86\u0007\u0013\u0000"+ - "\u0000\u0c86\u0c87\u0007\u000e\u0000\u0000\u0c87\u0c88\u0007\u0015\u0000"+ - "\u0000\u0c88\u0204\u0001\u0000\u0000\u0000\u0c89\u0c8a\u0007\u000f\u0000"+ - "\u0000\u0c8a\u0c8b\u0007\u0005\u0000\u0000\u0c8b\u0c8c\u0007\u0018\u0000"+ - "\u0000\u0c8c\u0c8d\u0007\u0018\u0000\u0000\u0c8d\u0c8e\u0007\u0011\u0000"+ - "\u0000\u0c8e\u0c8f\u0007\u0007\u0000\u0000\u0c8f\u0c90\u0007\u0017\u0000"+ - "\u0000\u0c90\u0206\u0001\u0000\u0000\u0000\u0c91\u0c92\u0007\u000f\u0000"+ - "\u0000\u0c92\u0c93\u0007\u0005\u0000\u0000\u0c93\u0c94\u0007\u0010\u0000"+ - "\u0000\u0c94\u0c95\u0007\u000e\u0000\u0000\u0c95\u0c96\u0007\u0014\u0000"+ - "\u0000\u0c96\u0208\u0001\u0000\u0000\u0000\u0c97\u0c98\u0007\u000f\u0000"+ - "\u0000\u0c98\u0c99\u0007\u0005\u0000\u0000\u0c99\u0c9a\u0007\u0010\u0000"+ - "\u0000\u0c9a\u0c9b\u0007\u000e\u0000\u0000\u0c9b\u0c9c\u0007\u0014\u0000"+ - "\u0000\u0c9c\u0c9d\u0007\n\u0000\u0000\u0c9d\u0c9e\u0007\f\u0000\u0000"+ - "\u0c9e\u020a\u0001\u0000\u0000\u0000\u0c9f\u0ca0\u0007\u000f\u0000\u0000"+ - "\u0ca0\u0ca1\u0007\u0005\u0000\u0000\u0ca1\u0ca2\u0007\u0010\u0000\u0000"+ - "\u0ca2\u0ca3\u0007\n\u0000\u0000\u0ca3\u0ca4\u0007\r\u0000\u0000\u0ca4"+ - "\u0ca5\u0007\u0011\u0000\u0000\u0ca5\u0ca6\u0007\u0005\u0000\u0000\u0ca6"+ - "\u0ca7\u0007\u0006\u0000\u0000\u0ca7\u0ca8\u0007\u0011\u0000\u0000\u0ca8"+ - "\u0ca9\u0007\u000b\u0000\u0000\u0ca9\u0caa\u0007\n\u0000\u0000\u0caa\u0cab"+ - "\u0007\f\u0000\u0000\u0cab\u020c\u0001\u0000\u0000\u0000\u0cac\u0cad\u0007"+ - "\u000f\u0000\u0000\u0cad\u0cae\u0007\u0005\u0000\u0000\u0cae\u0caf\u0007"+ - "\u001a\u0000\u0000\u0caf\u0cb0\u0007\u001b\u0000\u0000\u0cb0\u0cb1\u0007"+ - "\u0005\u0000\u0000\u0cb1\u0cb2\u0007\u0006\u0000\u0000\u0cb2\u0cb3\u0007"+ - "\u0016\u0000\u0000\u0cb3\u0cb4\u0007\n\u0000\u0000\u0cb4\u020e\u0001\u0000"+ - "\u0000\u0000\u0cb5\u0cb6\u0007\u000f\u0000\u0000\u0cb6\u0cb7\u0007\n\u0000"+ - "\u0000\u0cb7\u0cb8\u0007\r\u0000\u0000\u0cb8\u0cb9\u0007\u0017\u0000\u0000"+ - "\u0cb9\u0cba\u0007\n\u0000\u0000\u0cba\u0210\u0001\u0000\u0000\u0000\u0cbb"+ - "\u0cbc\u0007\u000f\u0000\u0000\u0cbc\u0cbd\u0007\u0011\u0000\u0000\u0cbd"+ - "\u0cbe\u0007\u0007\u0000\u0000\u0cbe\u0cbf\u0007\u0016\u0000\u0000\u0cbf"+ - "\u0cc0\u0007\u0010\u0000\u0000\u0cc0\u0cc1\u0007\n\u0000\u0000\u0cc1\u0212"+ - "\u0001\u0000\u0000\u0000\u0cc2\u0cc3\u0007\u000f\u0000\u0000\u0cc3\u0cc4"+ - "\u0007\u0011\u0000\u0000\u0cc4\u0cc5\u0007\u0007\u0000\u0000\u0cc5\u0cc6"+ - "\u0007\u001b\u0000\u0000\u0cc6\u0cc7\u0007\u0005\u0000\u0000\u0cc7\u0cc8"+ - "\u0007\u0006\u0000\u0000\u0cc8\u0cc9\u0007\u0016\u0000\u0000\u0cc9\u0cca"+ - "\u0007\n\u0000\u0000\u0cca\u0214\u0001\u0000\u0000\u0000\u0ccb\u0ccc\u0007"+ - "\u000f\u0000\u0000\u0ccc\u0ccd\u0007\u0013\u0000\u0000\u0ccd\u0cce\u0007"+ - "\f\u0000\u0000\u0cce\u0ccf\u0007\n\u0000\u0000\u0ccf\u0216\u0001\u0000"+ - "\u0000\u0000\u0cd0\u0cd1\u0007\u000f\u0000\u0000\u0cd1\u0cd2\u0007\u0013"+ - "\u0000\u0000\u0cd2\u0cd3\u0007\u0007\u0000\u0000\u0cd3\u0cd4\u0007\u0010"+ - "\u0000\u0000\u0cd4\u0cd5\u0007\u0014\u0000\u0000\u0cd5\u0218\u0001\u0000"+ - "\u0000\u0000\u0cd6\u0cd7\u0007\u000f\u0000\u0000\u0cd7\u0cd8\u0007\u0013"+ - "\u0000\u0000\u0cd8\u0cd9\u0007\u001b\u0000\u0000\u0cd9\u0cda\u0007\n\u0000"+ - "\u0000\u0cda\u021a\u0001\u0000\u0000\u0000\u0cdb\u0cdc\u0007\u0007\u0000"+ - "\u0000\u0cdc\u0cdd\u0007\u0005\u0000\u0000\u0cdd\u0cde\u0007\u000f\u0000"+ - "\u0000\u0cde\u0cdf\u0007\n\u0000\u0000\u0cdf\u021c\u0001\u0000\u0000\u0000"+ - "\u0ce0\u0ce1\u0007\u0007\u0000\u0000\u0ce1\u0ce2\u0007\u0005\u0000\u0000"+ - "\u0ce2\u0ce3\u0007\u000f\u0000\u0000\u0ce3\u0ce4\u0007\n\u0000\u0000\u0ce4"+ - "\u0ce5\u0007\t\u0000\u0000\u0ce5\u021e\u0001\u0000\u0000\u0000\u0ce6\u0ce7"+ - "\u0007\u0007\u0000\u0000\u0ce7\u0ce8\u0007\n\u0000\u0000\u0ce8\u0ce9\u0007"+ - "\u001a\u0000\u0000\u0ce9\u0cea\u0007\u0010\u0000\u0000\u0cea\u0220\u0001"+ - "\u0000\u0000\u0000\u0ceb\u0cec\u0007\u0007\u0000\u0000\u0cec\u0ced\u0007"+ - "\u0013\u0000\u0000\u0ced\u0222\u0001\u0000\u0000\u0000\u0cee\u0cef\u0007"+ - "\u0007\u0000\u0000\u0cef\u0cf0\u0007\u0013\u0000\u0000\u0cf0\u0cf1\u0007"+ - "\u0010\u0000\u0000\u0cf1\u0cf2\u0007\u0014\u0000\u0000\u0cf2\u0cf3\u0007"+ - "\u0011\u0000\u0000\u0cf3\u0cf4\u0007\u0007\u0000\u0000\u0cf4\u0cf5\u0007"+ - "\u0017\u0000\u0000\u0cf5\u0224\u0001\u0000\u0000\u0000\u0cf6\u0cf7\u0007"+ - "\u0007\u0000\u0000\u0cf7\u0cf8\u0007\u0013\u0000\u0000\u0cf8\u0cf9\u0007"+ - "\u0010\u0000\u0000\u0cf9\u0cfa\u0007\u0011\u0000\u0000\u0cfa\u0cfb\u0007"+ - "\u0019\u0000\u0000\u0cfb\u0cfc\u0007\b\u0000\u0000\u0cfc\u0226\u0001\u0000"+ - "\u0000\u0000\u0cfd\u0cfe\u0007\u0007\u0000\u0000\u0cfe\u0cff\u0007\u0013"+ - "\u0000\u0000\u0cff\u0d00\u0007\u001c\u0000\u0000\u0d00\u0d01\u0007\u0005"+ - "\u0000\u0000\u0d01\u0d02\u0007\u0011\u0000\u0000\u0d02\u0d03\u0007\u0010"+ - "\u0000\u0000\u0d03\u0228\u0001\u0000\u0000\u0000\u0d04\u0d05\u0007\u0007"+ - "\u0000\u0000\u0d05\u0d06\u0007\u0016\u0000\u0000\u0d06\u0d07\u0007\u0006"+ - "\u0000\u0000\u0d07\u0d08\u0007\u0006\u0000\u0000\u0d08\u0d09\u0007\t\u0000"+ - "\u0000\u0d09\u022a\u0001\u0000\u0000\u0000\u0d0a\u0d0b\u0007\u0013\u0000"+ - "\u0000\u0d0b\u0d0c\u0007\u0012\u0000\u0000\u0d0c\u0d0d\u0007\u001e\u0000"+ - "\u0000\u0d0d\u0d0e\u0007\n\u0000\u0000\u0d0e\u0d0f\u0007\u000e\u0000\u0000"+ - "\u0d0f\u0d10\u0007\u0010\u0000\u0000\u0d10\u022c\u0001\u0000\u0000\u0000"+ - "\u0d11\u0d12\u0007\u0013\u0000\u0000\u0d12\u0d13\u0007\u0019\u0000\u0000"+ - "\u0d13\u022e\u0001\u0000\u0000\u0000\u0d14\u0d15\u0007\u0013\u0000\u0000"+ - "\u0d15\u0d16\u0007\u0019\u0000\u0000\u0d16\u0d17\u0007\u0019\u0000\u0000"+ - "\u0d17\u0230\u0001\u0000\u0000\u0000\u0d18\u0d19\u0007\u0013\u0000\u0000"+ - "\u0d19\u0d1a\u0007\u0011\u0000\u0000\u0d1a\u0d1b\u0007\f\u0000\u0000\u0d1b"+ - "\u0d1c\u0007\t\u0000\u0000\u0d1c\u0232\u0001\u0000\u0000\u0000\u0d1d\u0d1e"+ - "\u0007\u0013\u0000\u0000\u0d1e\u0d1f\u0007\u0018\u0000\u0000\u0d1f\u0d20"+ - "\u0007\n\u0000\u0000\u0d20\u0d21\u0007\r\u0000\u0000\u0d21\u0d22\u0007"+ - "\u0005\u0000\u0000\u0d22\u0d23\u0007\u0010\u0000\u0000\u0d23\u0d24\u0007"+ - "\u0013\u0000\u0000\u0d24\u0d25\u0007\r\u0000\u0000\u0d25\u0234\u0001\u0000"+ - "\u0000\u0000\u0d26\u0d27\u0007\u0013\u0000\u0000\u0d27\u0d28\u0007\u0018"+ - "\u0000\u0000\u0d28\u0d29\u0007\u0010\u0000\u0000\u0d29\u0d2a\u0007\u0011"+ - "\u0000\u0000\u0d2a\u0d2b\u0007\u0013\u0000\u0000\u0d2b\u0d2c\u0007\u0007"+ - "\u0000\u0000\u0d2c\u0236\u0001\u0000\u0000\u0000\u0d2d\u0d2e\u0007\u0013"+ - "\u0000\u0000\u0d2e\u0d2f\u0007\u0018\u0000\u0000\u0d2f\u0d30\u0007\u0010"+ - "\u0000\u0000\u0d30\u0d31\u0007\u0011\u0000\u0000\u0d31\u0d32\u0007\u0013"+ - "\u0000\u0000\u0d32\u0d33\u0007\u0007\u0000\u0000\u0d33\u0d34\u0007\t\u0000"+ - "\u0000\u0d34\u0238\u0001\u0000\u0000\u0000\u0d35\u0d36\u0007\u0013\u0000"+ - "\u0000\u0d36\u0d37\u0007\u001c\u0000\u0000\u0d37\u0d38\u0007\u0007\u0000"+ - "\u0000\u0d38\u0d39\u0007\n\u0000\u0000\u0d39\u0d3a\u0007\f\u0000\u0000"+ - "\u0d3a\u023a\u0001\u0000\u0000\u0000\u0d3b\u0d3c\u0007\u0013\u0000\u0000"+ - "\u0d3c\u0d3d\u0007\u001c\u0000\u0000\u0d3d\u0d3e\u0007\u0007\u0000\u0000"+ - "\u0d3e\u0d3f\u0007\n\u0000\u0000\u0d3f\u0d40\u0007\r\u0000\u0000\u0d40"+ - "\u023c\u0001\u0000\u0000\u0000\u0d41\u0d42\u0007\u0018\u0000\u0000\u0d42"+ - "\u0d43\u0007\u0005\u0000\u0000\u0d43\u0d44\u0007\r\u0000\u0000\u0d44\u0d45"+ - "\u0007\t\u0000\u0000\u0d45\u0d46\u0007\n\u0000\u0000\u0d46\u0d47\u0007"+ - "\r\u0000\u0000\u0d47\u023e\u0001\u0000\u0000\u0000\u0d48\u0d49\u0007\u0018"+ - "\u0000\u0000\u0d49\u0d4a\u0007\u0005\u0000\u0000\u0d4a\u0d4b\u0007\r\u0000"+ - "\u0000\u0d4b\u0d4c\u0007\u0010\u0000\u0000\u0d4c\u0d4d\u0007\u0011\u0000"+ - "\u0000\u0d4d\u0d4e\u0007\u0005\u0000\u0000\u0d4e\u0d4f\u0007\u0006\u0000"+ - "\u0000\u0d4f\u0240\u0001\u0000\u0000\u0000\u0d50\u0d51\u0007\u0018\u0000"+ - "\u0000\u0d51\u0d52\u0007\u0005\u0000\u0000\u0d52\u0d53\u0007\r\u0000\u0000"+ - "\u0d53\u0d54\u0007\u0010\u0000\u0000\u0d54\u0d55\u0007\u0011\u0000\u0000"+ - "\u0d55\u0d56\u0007\u0010\u0000\u0000\u0d56\u0d57\u0007\u0011\u0000\u0000"+ - "\u0d57\u0d58\u0007\u0013\u0000\u0000\u0d58\u0d59\u0007\u0007\u0000\u0000"+ - "\u0d59\u0242\u0001\u0000\u0000\u0000\u0d5a\u0d5b\u0007\u0018\u0000\u0000"+ - "\u0d5b\u0d5c\u0007\u0005\u0000\u0000\u0d5c\u0d5d\u0007\t\u0000\u0000\u0d5d"+ - "\u0d5e\u0007\t\u0000\u0000\u0d5e\u0d5f\u0007\u0011\u0000\u0000\u0d5f\u0d60"+ - "\u0007\u0007\u0000\u0000\u0d60\u0d61\u0007\u0017\u0000\u0000\u0d61\u0244"+ - "\u0001\u0000\u0000\u0000\u0d62\u0d63\u0007\u0018\u0000\u0000\u0d63\u0d64"+ - "\u0007\u0005\u0000\u0000\u0d64\u0d65\u0007\t\u0000\u0000\u0d65\u0d66\u0007"+ - "\t\u0000\u0000\u0d66\u0d67\u0007\u001c\u0000\u0000\u0d67\u0d68\u0007\u0013"+ - "\u0000\u0000\u0d68\u0d69\u0007\r\u0000\u0000\u0d69\u0d6a\u0007\f\u0000"+ - "\u0000\u0d6a\u0246\u0001\u0000\u0000\u0000\u0d6b\u0d6c\u0007\u0018\u0000"+ - "\u0000\u0d6c\u0d6d\u0007\u0006\u0000\u0000\u0d6d\u0d6e\u0007\u0005\u0000"+ - "\u0000\u0d6e\u0d6f\u0007\u0007\u0000\u0000\u0d6f\u0d70\u0007\t\u0000\u0000"+ - "\u0d70\u0248\u0001\u0000\u0000\u0000\u0d71\u0d72\u0007\u0018\u0000\u0000"+ - "\u0d72\u0d73\u0007\r\u0000\u0000\u0d73\u0d74\u0007\n\u0000\u0000\u0d74"+ - "\u0d75\u0007\u000e\u0000\u0000\u0d75\u0d76\u0007\n\u0000\u0000\u0d76\u0d77"+ - "\u0007\f\u0000\u0000\u0d77\u0d78\u0007\u0011\u0000\u0000\u0d78\u0d79\u0007"+ - "\u0007\u0000\u0000\u0d79\u0d7a\u0007\u0017\u0000\u0000\u0d7a\u024a\u0001"+ - "\u0000\u0000\u0000\u0d7b\u0d7c\u0007\u0018\u0000\u0000\u0d7c\u0d7d\u0007"+ - "\r\u0000\u0000\u0d7d\u0d7e\u0007\n\u0000\u0000\u0d7e\u0d7f\u0007\u0018"+ - "\u0000\u0000\u0d7f\u0d80\u0007\u0005\u0000\u0000\u0d80\u0d81\u0007\r\u0000"+ - "\u0000\u0d81\u0d82\u0007\n\u0000\u0000\u0d82\u024c\u0001\u0000\u0000\u0000"+ - "\u0d83\u0d84\u0007\u0018\u0000\u0000\u0d84\u0d85\u0007\r\u0000\u0000\u0d85"+ - "\u0d86\u0007\n\u0000\u0000\u0d86\u0d87\u0007\u0018\u0000\u0000\u0d87\u0d88"+ - "\u0007\u0005\u0000\u0000\u0d88\u0d89\u0007\r\u0000\u0000\u0d89\u0d8a\u0007"+ - "\n\u0000\u0000\u0d8a\u0d8b\u0007\f\u0000\u0000\u0d8b\u024e\u0001\u0000"+ - "\u0000\u0000\u0d8c\u0d8d\u0007\u0018\u0000\u0000\u0d8d\u0d8e\u0007\r\u0000"+ - "\u0000\u0d8e\u0d8f\u0007\n\u0000\u0000\u0d8f\u0d90\u0007\t\u0000\u0000"+ - "\u0d90\u0d91\u0007\n\u0000\u0000\u0d91\u0d92\u0007\r\u0000\u0000\u0d92"+ - "\u0d93\u0007\u001b\u0000\u0000\u0d93\u0d94\u0007\n\u0000\u0000\u0d94\u0250"+ - "\u0001\u0000\u0000\u0000\u0d95\u0d96\u0007\u0018\u0000\u0000\u0d96\u0d97"+ - "\u0007\r\u0000\u0000\u0d97\u0d98\u0007\u0011\u0000\u0000\u0d98\u0d99\u0007"+ - "\u0013\u0000\u0000\u0d99\u0d9a\u0007\r\u0000\u0000\u0d9a\u0252\u0001\u0000"+ - "\u0000\u0000\u0d9b\u0d9c\u0007\u0018\u0000\u0000\u0d9c\u0d9d\u0007\r\u0000"+ - "\u0000\u0d9d\u0d9e\u0007\u0011\u0000\u0000\u0d9e\u0d9f\u0007\u001b\u0000"+ - "\u0000\u0d9f\u0da0\u0007\u0011\u0000\u0000\u0da0\u0da1\u0007\u0006\u0000"+ - "\u0000\u0da1\u0da2\u0007\n\u0000\u0000\u0da2\u0da3\u0007\u0017\u0000\u0000"+ - "\u0da3\u0da4\u0007\n\u0000\u0000\u0da4\u0da5\u0007\t\u0000\u0000\u0da5"+ - "\u0254\u0001\u0000\u0000\u0000\u0da6\u0da7\u0007\u0018\u0000\u0000\u0da7"+ - "\u0da8\u0007\r\u0000\u0000\u0da8\u0da9\u0007\u0013\u0000\u0000\u0da9\u0daa"+ - "\u0007\u000e\u0000\u0000\u0daa\u0dab\u0007\n\u0000\u0000\u0dab\u0dac\u0007"+ - "\f\u0000\u0000\u0dac\u0dad\u0007\u0016\u0000\u0000\u0dad\u0dae\u0007\r"+ - "\u0000\u0000\u0dae\u0daf\u0007\u0005\u0000\u0000\u0daf\u0db0\u0007\u0006"+ - "\u0000\u0000\u0db0\u0256\u0001\u0000\u0000\u0000\u0db1\u0db2\u0007\u0018"+ - "\u0000\u0000\u0db2\u0db3\u0007\r\u0000\u0000\u0db3\u0db4\u0007\u0013\u0000"+ - "\u0000\u0db4\u0db5\u0007\u000e\u0000\u0000\u0db5\u0db6\u0007\n\u0000\u0000"+ - "\u0db6\u0db7\u0007\f\u0000\u0000\u0db7\u0db8\u0007\u0016\u0000\u0000\u0db8"+ - "\u0db9\u0007\r\u0000\u0000\u0db9\u0dba\u0007\n\u0000\u0000\u0dba\u0258"+ - "\u0001\u0000\u0000\u0000\u0dbb\u0dbc\u0007\u0018\u0000\u0000\u0dbc\u0dbd"+ - "\u0007\r\u0000\u0000\u0dbd\u0dbe\u0007\u0013\u0000\u0000\u0dbe\u0dbf\u0007"+ - "\u0017\u0000\u0000\u0dbf\u0dc0\u0007\r\u0000\u0000\u0dc0\u0dc1\u0007\u0005"+ - "\u0000\u0000\u0dc1\u0dc2\u0007\u000f\u0000\u0000\u0dc2\u025a\u0001\u0000"+ - "\u0000\u0000\u0dc3\u0dc4\u0007\u001d\u0000\u0000\u0dc4\u0dc5\u0007\u0016"+ - "\u0000\u0000\u0dc5\u0dc6\u0007\u0013\u0000\u0000\u0dc6\u0dc7\u0007\u0010"+ - "\u0000\u0000\u0dc7\u0dc8\u0007\n\u0000\u0000\u0dc8\u025c\u0001\u0000\u0000"+ - "\u0000\u0dc9\u0dca\u0007\r\u0000\u0000\u0dca\u0dcb\u0007\u0005\u0000\u0000"+ - "\u0dcb\u0dcc\u0007\u0007\u0000\u0000\u0dcc\u0dcd\u0007\u0017\u0000\u0000"+ - "\u0dcd\u0dce\u0007\n\u0000\u0000\u0dce\u025e\u0001\u0000\u0000\u0000\u0dcf"+ - "\u0dd0\u0007\r\u0000\u0000\u0dd0\u0dd1\u0007\n\u0000\u0000\u0dd1\u0dd2"+ - "\u0007\u0005\u0000\u0000\u0dd2\u0dd3\u0007\f\u0000\u0000\u0dd3\u0260\u0001"+ - "\u0000\u0000\u0000\u0dd4\u0dd5\u0007\r\u0000\u0000\u0dd5\u0dd6\u0007\n"+ - "\u0000\u0000\u0dd6\u0dd7\u0007\u0005\u0000\u0000\u0dd7\u0dd8\u0007\t\u0000"+ - "\u0000\u0dd8\u0dd9\u0007\t\u0000\u0000\u0dd9\u0dda\u0007\u0011\u0000\u0000"+ - "\u0dda\u0ddb\u0007\u0017\u0000\u0000\u0ddb\u0ddc\u0007\u0007\u0000\u0000"+ - "\u0ddc\u0262\u0001\u0000\u0000\u0000\u0ddd\u0dde\u0007\r\u0000\u0000\u0dde"+ - "\u0ddf\u0007\n\u0000\u0000\u0ddf\u0de0\u0007\u000e\u0000\u0000\u0de0\u0de1"+ - "\u0007\u0014\u0000\u0000\u0de1\u0de2\u0007\n\u0000\u0000\u0de2\u0de3\u0007"+ - "\u000e\u0000\u0000\u0de3\u0de4\u0007\u0015\u0000\u0000\u0de4\u0264\u0001"+ - "\u0000\u0000\u0000\u0de5\u0de6\u0007\r\u0000\u0000\u0de6\u0de7\u0007\n"+ - "\u0000\u0000\u0de7\u0de8\u0007\u000e\u0000\u0000\u0de8\u0de9\u0007\u0016"+ - "\u0000\u0000\u0de9\u0dea\u0007\r\u0000\u0000\u0dea\u0deb\u0007\t\u0000"+ - "\u0000\u0deb\u0dec\u0007\u0011\u0000\u0000\u0dec\u0ded\u0007\u001b\u0000"+ - "\u0000\u0ded\u0dee\u0007\n\u0000\u0000\u0dee\u0266\u0001\u0000\u0000\u0000"+ - "\u0def\u0df0\u0007\r\u0000\u0000\u0df0\u0df1\u0007\n\u0000\u0000\u0df1"+ - "\u0df2\u0007\u0019\u0000\u0000\u0df2\u0268\u0001\u0000\u0000\u0000\u0df3"+ - "\u0df4\u0007\r\u0000\u0000\u0df4\u0df5\u0007\n\u0000\u0000\u0df5\u0df6"+ - "\u0007\u0019\u0000\u0000\u0df6\u0df7\u0007\r\u0000\u0000\u0df7\u0df8\u0007"+ - "\n\u0000\u0000\u0df8\u0df9\u0007\t\u0000\u0000\u0df9\u0dfa\u0007\u0014"+ - "\u0000\u0000\u0dfa\u026a\u0001\u0000\u0000\u0000\u0dfb\u0dfc\u0007\r\u0000"+ - "\u0000\u0dfc\u0dfd\u0007\n\u0000\u0000\u0dfd\u0dfe\u0007\u0011\u0000\u0000"+ - "\u0dfe\u0dff\u0007\u0007\u0000\u0000\u0dff\u0e00\u0007\f\u0000\u0000\u0e00"+ - "\u0e01\u0007\n\u0000\u0000\u0e01\u0e02\u0007\u001a\u0000\u0000\u0e02\u026c"+ - "\u0001\u0000\u0000\u0000\u0e03\u0e04\u0007\r\u0000\u0000\u0e04\u0e05\u0007"+ - "\n\u0000\u0000\u0e05\u0e06\u0007\u0006\u0000\u0000\u0e06\u0e07\u0007\u0005"+ - "\u0000\u0000\u0e07\u0e08\u0007\u0010\u0000\u0000\u0e08\u0e09\u0007\u0011"+ - "\u0000\u0000\u0e09\u0e0a\u0007\u001b\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\u0006\u0000\u0000\u0e0f"+ - "\u0e10\u0007\n\u0000\u0000\u0e10\u0e11\u0007\u0005\u0000\u0000\u0e11\u0e12"+ - "\u0007\t\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\u0007\u0000\u0000\u0e17\u0e18\u0007\u0005"+ - "\u0000\u0000\u0e18\u0e19\u0007\u000f\u0000\u0000\u0e19\u0e1a\u0007\n\u0000"+ - "\u0000\u0e1a\u0272\u0001\u0000\u0000\u0000\u0e1b\u0e1c\u0007\r\u0000\u0000"+ - "\u0e1c\u0e1d\u0007\n\u0000\u0000\u0e1d\u0e1e\u0007\u0018\u0000\u0000\u0e1e"+ - "\u0e1f\u0007\n\u0000\u0000\u0e1f\u0e20\u0007\u0005\u0000\u0000\u0e20\u0e21"+ - "\u0007\u0010\u0000\u0000\u0e21\u0e22\u0007\u0005\u0000\u0000\u0e22\u0e23"+ - "\u0007\u0012\u0000\u0000\u0e23\u0e24\u0007\u0006\u0000\u0000\u0e24\u0e25"+ - "\u0007\n\u0000\u0000\u0e25\u0274\u0001\u0000\u0000\u0000\u0e26\u0e27\u0007"+ - "\r\u0000\u0000\u0e27\u0e28\u0007\n\u0000\u0000\u0e28\u0e29\u0007\u0018"+ - "\u0000\u0000\u0e29\u0e2a\u0007\u0006\u0000\u0000\u0e2a\u0e2b\u0007\u0005"+ - "\u0000\u0000\u0e2b\u0e2c\u0007\u000e\u0000\u0000\u0e2c\u0e2d\u0007\n\u0000"+ - "\u0000\u0e2d\u0276\u0001\u0000\u0000\u0000\u0e2e\u0e2f\u0007\r\u0000\u0000"+ - "\u0e2f\u0e30\u0007\n\u0000\u0000\u0e30\u0e31\u0007\u0018\u0000\u0000\u0e31"+ - "\u0e32\u0007\u0006\u0000\u0000\u0e32\u0e33\u0007\u0011\u0000\u0000\u0e33"+ - "\u0e34\u0007\u000e\u0000\u0000\u0e34\u0e35\u0007\u0005\u0000\u0000\u0e35"+ - "\u0278\u0001\u0000\u0000\u0000\u0e36\u0e37\u0007\r\u0000\u0000\u0e37\u0e38"+ - "\u0007\n\u0000\u0000\u0e38\u0e39\u0007\t\u0000\u0000\u0e39\u0e3a\u0007"+ - "\n\u0000\u0000\u0e3a\u0e3b\u0007\u0010\u0000\u0000\u0e3b\u027a\u0001\u0000"+ - "\u0000\u0000\u0e3c\u0e3d\u0007\r\u0000\u0000\u0e3d\u0e3e\u0007\n\u0000"+ - "\u0000\u0e3e\u0e3f\u0007\t\u0000\u0000\u0e3f\u0e40\u0007\u0010\u0000\u0000"+ - "\u0e40\u0e41\u0007\u0005\u0000\u0000\u0e41\u0e42\u0007\r\u0000\u0000\u0e42"+ - "\u0e43\u0007\u0010\u0000\u0000\u0e43\u027c\u0001\u0000\u0000\u0000\u0e44"+ - "\u0e45\u0007\r\u0000\u0000\u0e45\u0e46\u0007\n\u0000\u0000\u0e46\u0e47"+ - "\u0007\t\u0000\u0000\u0e47\u0e48\u0007\u0010\u0000\u0000\u0e48\u0e49\u0007"+ - "\r\u0000\u0000\u0e49\u0e4a\u0007\u0011\u0000\u0000\u0e4a\u0e4b\u0007\u000e"+ - "\u0000\u0000\u0e4b\u0e4c\u0007\u0010\u0000\u0000\u0e4c\u027e\u0001\u0000"+ - "\u0000\u0000\u0e4d\u0e4e\u0007\r\u0000\u0000\u0e4e\u0e4f\u0007\n\u0000"+ - "\u0000\u0e4f\u0e50\u0007\u0010\u0000\u0000\u0e50\u0e51\u0007\u0016\u0000"+ - "\u0000\u0e51\u0e52\u0007\r\u0000\u0000\u0e52\u0e53\u0007\u0007\u0000\u0000"+ - "\u0e53\u0e54\u0007\t\u0000\u0000\u0e54\u0280\u0001\u0000\u0000\u0000\u0e55"+ - "\u0e56\u0007\r\u0000\u0000\u0e56\u0e57\u0007\n\u0000\u0000\u0e57\u0e58"+ - "\u0007\u001b\u0000\u0000\u0e58\u0e59\u0007\u0013\u0000\u0000\u0e59\u0e5a"+ - "\u0007\u0015\u0000\u0000\u0e5a\u0e5b\u0007\n\u0000\u0000\u0e5b\u0282\u0001"+ - "\u0000\u0000\u0000\u0e5c\u0e5d\u0007\r\u0000\u0000\u0e5d\u0e5e\u0007\u0013"+ - "\u0000\u0000\u0e5e\u0e5f\u0007\u0006\u0000\u0000\u0e5f\u0e60\u0007\n\u0000"+ - "\u0000\u0e60\u0284\u0001\u0000\u0000\u0000\u0e61\u0e62\u0007\r\u0000\u0000"+ - "\u0e62\u0e63\u0007\u0013\u0000\u0000\u0e63\u0e64\u0007\u0006\u0000\u0000"+ - "\u0e64\u0e65\u0007\u0006\u0000\u0000\u0e65\u0e66\u0007\u0012\u0000\u0000"+ - "\u0e66\u0e67\u0007\u0005\u0000\u0000\u0e67\u0e68\u0007\u000e\u0000\u0000"+ - "\u0e68\u0e69\u0007\u0015\u0000\u0000\u0e69\u0286\u0001\u0000\u0000\u0000"+ - "\u0e6a\u0e6b\u0007\r\u0000\u0000\u0e6b\u0e6c\u0007\u0013\u0000\u0000\u0e6c"+ - "\u0e6d\u0007\u001c\u0000\u0000\u0e6d\u0e6e\u0007\t\u0000\u0000\u0e6e\u0288"+ - "\u0001\u0000\u0000\u0000\u0e6f\u0e70\u0007\r\u0000\u0000\u0e70\u0e71\u0007"+ - "\u0016\u0000\u0000\u0e71\u0e72\u0007\u0006\u0000\u0000\u0e72\u0e73\u0007"+ - "\n\u0000\u0000\u0e73\u028a\u0001\u0000\u0000\u0000\u0e74\u0e75\u0007\t"+ - "\u0000\u0000\u0e75\u0e76\u0007\u0005\u0000\u0000\u0e76\u0e77\u0007\u001b"+ - "\u0000\u0000\u0e77\u0e78\u0007\n\u0000\u0000\u0e78\u0e79\u0007\u0018\u0000"+ - "\u0000\u0e79\u0e7a\u0007\u0013\u0000\u0000\u0e7a\u0e7b\u0007\u0011\u0000"+ - "\u0000\u0e7b\u0e7c\u0007\u0007\u0000\u0000\u0e7c\u0e7d\u0007\u0010\u0000"+ - "\u0000\u0e7d\u028c\u0001\u0000\u0000\u0000\u0e7e\u0e7f\u0007\t\u0000\u0000"+ - "\u0e7f\u0e80\u0007\u000e\u0000\u0000\u0e80\u0e81\u0007\u0014\u0000\u0000"+ - "\u0e81\u0e82\u0007\n\u0000\u0000\u0e82\u0e83\u0007\u000f\u0000\u0000\u0e83"+ - "\u0e84\u0007\u0005\u0000\u0000\u0e84\u028e\u0001\u0000\u0000\u0000\u0e85"+ - "\u0e86\u0007\t\u0000\u0000\u0e86\u0e87\u0007\u000e\u0000\u0000\u0e87\u0e88"+ - "\u0007\r\u0000\u0000\u0e88\u0e89\u0007\u0013\u0000\u0000\u0e89\u0e8a\u0007"+ - "\u0006\u0000\u0000\u0e8a\u0e8b\u0007\u0006\u0000\u0000\u0e8b\u0290\u0001"+ - "\u0000\u0000\u0000\u0e8c\u0e8d\u0007\t\u0000\u0000\u0e8d\u0e8e\u0007\n"+ - "\u0000\u0000\u0e8e\u0e8f\u0007\u0005\u0000\u0000\u0e8f\u0e90\u0007\r\u0000"+ - "\u0000\u0e90\u0e91\u0007\u000e\u0000\u0000\u0e91\u0e92\u0007\u0014\u0000"+ - "\u0000\u0e92\u0292\u0001\u0000\u0000\u0000\u0e93\u0e94\u0007\t\u0000\u0000"+ - "\u0e94\u0e95\u0007\n\u0000\u0000\u0e95\u0e96\u0007\u000e\u0000\u0000\u0e96"+ - "\u0e97\u0007\u0013\u0000\u0000\u0e97\u0e98\u0007\u0007\u0000\u0000\u0e98"+ - "\u0e99\u0007\f\u0000\u0000\u0e99\u0294\u0001\u0000\u0000\u0000\u0e9a\u0e9b"+ - "\u0007\t\u0000\u0000\u0e9b\u0e9c\u0007\n\u0000\u0000\u0e9c\u0e9d\u0007"+ - "\u000e\u0000\u0000\u0e9d\u0e9e\u0007\u0016\u0000\u0000\u0e9e\u0e9f\u0007"+ - "\r\u0000\u0000\u0e9f\u0ea0\u0007\u0011\u0000\u0000\u0ea0\u0ea1\u0007\u0010"+ - "\u0000\u0000\u0ea1\u0ea2\u0007\b\u0000\u0000\u0ea2\u0296\u0001\u0000\u0000"+ - "\u0000\u0ea3\u0ea4\u0007\t\u0000\u0000\u0ea4\u0ea5\u0007\n\u0000\u0000"+ - "\u0ea5\u0ea6\u0007\u001d\u0000\u0000\u0ea6\u0ea7\u0007\u0016\u0000\u0000"+ - "\u0ea7\u0ea8\u0007\n\u0000\u0000\u0ea8\u0ea9\u0007\u0007\u0000\u0000\u0ea9"+ - "\u0eaa\u0007\u000e\u0000\u0000\u0eaa\u0eab\u0007\n\u0000\u0000\u0eab\u0298"+ - "\u0001\u0000\u0000\u0000\u0eac\u0ead\u0007\t\u0000\u0000\u0ead\u0eae\u0007"+ - "\n\u0000\u0000\u0eae\u0eaf\u0007\u001d\u0000\u0000\u0eaf\u0eb0\u0007\u0016"+ - "\u0000\u0000\u0eb0\u0eb1\u0007\n\u0000\u0000\u0eb1\u0eb2\u0007\u0007\u0000"+ - "\u0000\u0eb2\u0eb3\u0007\u000e\u0000\u0000\u0eb3\u0eb4\u0007\n\u0000\u0000"+ - "\u0eb4\u0eb5\u0007\t\u0000\u0000\u0eb5\u029a\u0001\u0000\u0000\u0000\u0eb6"+ - "\u0eb7\u0007\t\u0000\u0000\u0eb7\u0eb8\u0007\n\u0000\u0000\u0eb8\u0eb9"+ - "\u0007\r\u0000\u0000\u0eb9\u0eba\u0007\u0011\u0000\u0000\u0eba\u0ebb\u0007"+ - "\u0005\u0000\u0000\u0ebb\u0ebc\u0007\u0006\u0000\u0000\u0ebc\u0ebd\u0007"+ - "\u0011\u0000\u0000\u0ebd\u0ebe\u0007\u000b\u0000\u0000\u0ebe\u0ebf\u0007"+ - "\u0005\u0000\u0000\u0ebf\u0ec0\u0007\u0012\u0000\u0000\u0ec0\u0ec1\u0007"+ - "\u0006\u0000\u0000\u0ec1\u0ec2\u0007\n\u0000\u0000\u0ec2\u029c\u0001\u0000"+ - "\u0000\u0000\u0ec3\u0ec4\u0007\t\u0000\u0000\u0ec4\u0ec5\u0007\n\u0000"+ - "\u0000\u0ec5\u0ec6\u0007\r\u0000\u0000\u0ec6\u0ec7\u0007\u001b\u0000\u0000"+ - "\u0ec7\u0ec8\u0007\n\u0000\u0000\u0ec8\u0ec9\u0007\r\u0000\u0000\u0ec9"+ - "\u029e\u0001\u0000\u0000\u0000\u0eca\u0ecb\u0007\t\u0000\u0000\u0ecb\u0ecc"+ - "\u0007\n\u0000\u0000\u0ecc\u0ecd\u0007\t\u0000\u0000\u0ecd\u0ece\u0007"+ - "\t\u0000\u0000\u0ece\u0ecf\u0007\u0011\u0000\u0000\u0ecf\u0ed0\u0007\u0013"+ - "\u0000\u0000\u0ed0\u0ed1\u0007\u0007\u0000\u0000\u0ed1\u02a0\u0001\u0000"+ - "\u0000\u0000\u0ed2\u0ed3\u0007\t\u0000\u0000\u0ed3\u0ed4\u0007\n\u0000"+ - "\u0000\u0ed4\u0ed5\u0007\u0010\u0000\u0000\u0ed5\u02a2\u0001\u0000\u0000"+ - "\u0000\u0ed6\u0ed7\u0007\t\u0000\u0000\u0ed7\u0ed8\u0007\u0014\u0000\u0000"+ - "\u0ed8\u0ed9\u0007\u0005\u0000\u0000\u0ed9\u0eda\u0007\r\u0000\u0000\u0eda"+ - "\u0edb\u0007\n\u0000\u0000\u0edb\u02a4\u0001\u0000\u0000\u0000\u0edc\u0edd"+ - "\u0007\t\u0000\u0000\u0edd\u0ede\u0007\u0014\u0000\u0000\u0ede\u0edf\u0007"+ - "\u0013\u0000\u0000\u0edf\u0ee0\u0007\u001c\u0000\u0000\u0ee0\u02a6\u0001"+ - "\u0000\u0000\u0000\u0ee1\u0ee2\u0007\t\u0000\u0000\u0ee2\u0ee3\u0007\u0011"+ - "\u0000\u0000\u0ee3\u0ee4\u0007\u000f\u0000\u0000\u0ee4\u0ee5\u0007\u0018"+ - "\u0000\u0000\u0ee5\u0ee6\u0007\u0006\u0000\u0000\u0ee6\u0ee7\u0007\n\u0000"+ - "\u0000\u0ee7\u02a8\u0001\u0000\u0000\u0000\u0ee8\u0ee9\u0007\t\u0000\u0000"+ - "\u0ee9\u0eea\u0007\u0007\u0000\u0000\u0eea\u0eeb\u0007\u0005\u0000\u0000"+ - "\u0eeb\u0eec\u0007\u0018\u0000\u0000\u0eec\u0eed\u0007\t\u0000\u0000\u0eed"+ - "\u0eee\u0007\u0014\u0000\u0000\u0eee\u0eef\u0007\u0013\u0000\u0000\u0eef"+ - "\u0ef0\u0007\u0010\u0000\u0000\u0ef0\u02aa\u0001\u0000\u0000\u0000\u0ef1"+ - "\u0ef2\u0007\t\u0000\u0000\u0ef2\u0ef3\u0007\u0010\u0000\u0000\u0ef3\u0ef4"+ - "\u0007\u0005\u0000\u0000\u0ef4\u0ef5\u0007\u0012\u0000\u0000\u0ef5\u0ef6"+ - "\u0007\u0006\u0000\u0000\u0ef6\u0ef7\u0007\n\u0000\u0000\u0ef7\u02ac\u0001"+ - "\u0000\u0000\u0000\u0ef8\u0ef9\u0007\t\u0000\u0000\u0ef9\u0efa\u0007\u0010"+ - "\u0000\u0000\u0efa\u0efb\u0007\u0005\u0000\u0000\u0efb\u0efc\u0007\u0007"+ - "\u0000\u0000\u0efc\u0efd\u0007\f\u0000\u0000\u0efd\u0efe\u0007\u0005\u0000"+ - "\u0000\u0efe\u0eff\u0007\u0006\u0000\u0000\u0eff\u0f00\u0007\u0013\u0000"+ - "\u0000\u0f00\u0f01\u0007\u0007\u0000\u0000\u0f01\u0f02\u0007\n\u0000\u0000"+ - "\u0f02\u02ae\u0001\u0000\u0000\u0000\u0f03\u0f04\u0007\t\u0000\u0000\u0f04"+ - "\u0f05\u0007\u0010\u0000\u0000\u0f05\u0f06\u0007\u0005\u0000\u0000\u0f06"+ - "\u0f07\u0007\r\u0000\u0000\u0f07\u0f08\u0007\u0010\u0000\u0000\u0f08\u02b0"+ - "\u0001\u0000\u0000\u0000\u0f09\u0f0a\u0007\t\u0000\u0000\u0f0a\u0f0b\u0007"+ - "\u0010\u0000\u0000\u0f0b\u0f0c\u0007\u0005\u0000\u0000\u0f0c\u0f0d\u0007"+ - "\u0010\u0000\u0000\u0f0d\u0f0e\u0007\n\u0000\u0000\u0f0e\u0f0f\u0007\u000f"+ - "\u0000\u0000\u0f0f\u0f10\u0007\n\u0000\u0000\u0f10\u0f11\u0007\u0007\u0000"+ - "\u0000\u0f11\u0f12\u0007\u0010\u0000\u0000\u0f12\u02b2\u0001\u0000\u0000"+ - "\u0000\u0f13\u0f14\u0007\t\u0000\u0000\u0f14\u0f15\u0007\u0010\u0000\u0000"+ - "\u0f15\u0f16\u0007\u0005\u0000\u0000\u0f16\u0f17\u0007\u0010\u0000\u0000"+ - "\u0f17\u0f18\u0007\u0011\u0000\u0000\u0f18\u0f19\u0007\t\u0000\u0000\u0f19"+ - "\u0f1a\u0007\u0010\u0000\u0000\u0f1a\u0f1b\u0007\u0011\u0000\u0000\u0f1b"+ - "\u0f1c\u0007\u000e\u0000\u0000\u0f1c\u0f1d\u0007\t\u0000\u0000\u0f1d\u02b4"+ - "\u0001\u0000\u0000\u0000\u0f1e\u0f1f\u0007\t\u0000\u0000\u0f1f\u0f20\u0007"+ - "\u0010\u0000\u0000\u0f20\u0f21\u0007\f\u0000\u0000\u0f21\u0f22\u0007\u0011"+ - "\u0000\u0000\u0f22\u0f23\u0007\u0007\u0000\u0000\u0f23\u02b6\u0001\u0000"+ - "\u0000\u0000\u0f24\u0f25\u0007\t\u0000\u0000\u0f25\u0f26\u0007\u0010\u0000"+ - "\u0000\u0f26\u0f27\u0007\f\u0000\u0000\u0f27\u0f28\u0007\u0013\u0000\u0000"+ - "\u0f28\u0f29\u0007\u0016\u0000\u0000\u0f29\u0f2a\u0007\u0010\u0000\u0000"+ - "\u0f2a\u02b8\u0001\u0000\u0000\u0000\u0f2b\u0f2c\u0007\t\u0000\u0000\u0f2c"+ - "\u0f2d\u0007\u0010\u0000\u0000\u0f2d\u0f2e\u0007\u0013\u0000\u0000\u0f2e"+ - "\u0f2f\u0007\r\u0000\u0000\u0f2f\u0f30\u0007\u0005\u0000\u0000\u0f30\u0f31"+ - "\u0007\u0017\u0000\u0000\u0f31\u0f32\u0007\n\u0000\u0000\u0f32\u02ba\u0001"+ - "\u0000\u0000\u0000\u0f33\u0f34\u0007\t\u0000\u0000\u0f34\u0f35\u0007\u0010"+ - "\u0000\u0000\u0f35\u0f36\u0007\r\u0000\u0000\u0f36\u0f37\u0007\u0011\u0000"+ - "\u0000\u0f37\u0f38\u0007\u000e\u0000\u0000\u0f38\u0f39\u0007\u0010\u0000"+ - "\u0000\u0f39\u02bc\u0001\u0000\u0000\u0000\u0f3a\u0f3b\u0007\t\u0000\u0000"+ - "\u0f3b\u0f3c\u0007\u0010\u0000\u0000\u0f3c\u0f3d\u0007\r\u0000\u0000\u0f3d"+ - "\u0f3e\u0007\u0011\u0000\u0000\u0f3e\u0f3f\u0007\u0018\u0000\u0000\u0f3f"+ - "\u02be\u0001\u0000\u0000\u0000\u0f40\u0f41\u0007\t\u0000\u0000\u0f41\u0f42"+ - "\u0007\b\u0000\u0000\u0f42\u0f43\u0007\t\u0000\u0000\u0f43\u0f44\u0007"+ - "\u0011\u0000\u0000\u0f44\u0f45\u0007\f\u0000\u0000\u0f45\u02c0\u0001\u0000"+ - "\u0000\u0000\u0f46\u0f47\u0007\t\u0000\u0000\u0f47\u0f48\u0007\b\u0000"+ - "\u0000\u0f48\u0f49\u0007\t\u0000\u0000\u0f49\u0f4a\u0007\u0010\u0000\u0000"+ - "\u0f4a\u0f4b\u0007\n\u0000\u0000\u0f4b\u0f4c\u0007\u000f\u0000\u0000\u0f4c"+ - "\u02c2\u0001\u0000\u0000\u0000\u0f4d\u0f4e\u0007\u0010\u0000\u0000\u0f4e"+ - "\u0f4f\u0007\u0005\u0000\u0000\u0f4f\u0f50\u0007\u0012\u0000\u0000\u0f50"+ - "\u0f51\u0007\u0006\u0000\u0000\u0f51\u0f52\u0007\n\u0000\u0000\u0f52\u0f53"+ - "\u0007\t\u0000\u0000\u0f53\u02c4\u0001\u0000\u0000\u0000\u0f54\u0f55\u0007"+ - "\u0010\u0000\u0000\u0f55\u0f56\u0007\u0005\u0000\u0000\u0f56\u0f57\u0007"+ - "\u0012\u0000\u0000\u0f57\u0f58\u0007\u0006\u0000\u0000\u0f58\u0f59\u0007"+ - "\n\u0000\u0000\u0f59\u0f5a\u0007\t\u0000\u0000\u0f5a\u0f5b\u0007\u0018"+ - "\u0000\u0000\u0f5b\u0f5c\u0007\u0005\u0000\u0000\u0f5c\u0f5d\u0007\u000e"+ - "\u0000\u0000\u0f5d\u0f5e\u0007\n\u0000\u0000\u0f5e\u02c6\u0001\u0000\u0000"+ - "\u0000\u0f5f\u0f60\u0007\u0010\u0000\u0000\u0f60\u0f61\u0007\n\u0000\u0000"+ - "\u0f61\u0f62\u0007\u000f\u0000\u0000\u0f62\u0f63\u0007\u0018\u0000\u0000"+ - "\u0f63\u02c8\u0001\u0000\u0000\u0000\u0f64\u0f65\u0007\u0010\u0000\u0000"+ - "\u0f65\u0f66\u0007\n\u0000\u0000\u0f66\u0f67\u0007\u000f\u0000\u0000\u0f67"+ - "\u0f68\u0007\u0018\u0000\u0000\u0f68\u0f69\u0007\u0006\u0000\u0000\u0f69"+ - "\u0f6a\u0007\u0005\u0000\u0000\u0f6a\u0f6b\u0007\u0010\u0000\u0000\u0f6b"+ - "\u0f6c\u0007\n\u0000\u0000\u0f6c\u02ca\u0001\u0000\u0000\u0000\u0f6d\u0f6e"+ - "\u0007\u0010\u0000\u0000\u0f6e\u0f6f\u0007\n\u0000\u0000\u0f6f\u0f70\u0007"+ - "\u000f\u0000\u0000\u0f70\u0f71\u0007\u0018\u0000\u0000\u0f71\u0f72\u0007"+ - "\u0013\u0000\u0000\u0f72\u0f73\u0007\r\u0000\u0000\u0f73\u0f74\u0007\u0005"+ - "\u0000\u0000\u0f74\u0f75\u0007\r\u0000\u0000\u0f75\u0f76\u0007\b\u0000"+ - "\u0000\u0f76\u02cc\u0001\u0000\u0000\u0000\u0f77\u0f78\u0007\u0010\u0000"+ - "\u0000\u0f78\u0f79\u0007\n\u0000\u0000\u0f79\u0f7a\u0007\u001a\u0000\u0000"+ - "\u0f7a\u0f7b\u0007\u0010\u0000\u0000\u0f7b\u02ce\u0001\u0000\u0000\u0000"+ - "\u0f7c\u0f7d\u0007\u0010\u0000\u0000\u0f7d\u0f7e\u0007\r\u0000\u0000\u0f7e"+ - "\u0f7f\u0007\u0005\u0000\u0000\u0f7f\u0f80\u0007\u0007\u0000\u0000\u0f80"+ - "\u0f81\u0007\t\u0000\u0000\u0f81\u0f82\u0007\u0005\u0000\u0000\u0f82\u0f83"+ - "\u0007\u000e\u0000\u0000\u0f83\u0f84\u0007\u0010\u0000\u0000\u0f84\u0f85"+ - "\u0007\u0011\u0000\u0000\u0f85\u0f86\u0007\u0013\u0000\u0000\u0f86\u0f87"+ - "\u0007\u0007\u0000\u0000\u0f87\u02d0\u0001\u0000\u0000\u0000\u0f88\u0f89"+ - "\u0007\u0010\u0000\u0000\u0f89\u0f8a\u0007\r\u0000\u0000\u0f8a\u0f8b\u0007"+ - "\u0011\u0000\u0000\u0f8b\u0f8c\u0007\u0017\u0000\u0000\u0f8c\u0f8d\u0007"+ - "\u0017\u0000\u0000\u0f8d\u0f8e\u0007\n\u0000\u0000\u0f8e\u0f8f\u0007\r"+ - "\u0000\u0000\u0f8f\u02d2\u0001\u0000\u0000\u0000\u0f90\u0f91\u0007\u0010"+ - "\u0000\u0000\u0f91\u0f92\u0007\r\u0000\u0000\u0f92\u0f93\u0007\u0016\u0000"+ - "\u0000\u0f93\u0f94\u0007\u0007\u0000\u0000\u0f94\u0f95\u0007\u000e\u0000"+ - "\u0000\u0f95\u0f96\u0007\u0005\u0000\u0000\u0f96\u0f97\u0007\u0010\u0000"+ - "\u0000\u0f97\u0f98\u0007\n\u0000\u0000\u0f98\u02d4\u0001\u0000\u0000\u0000"+ - "\u0f99\u0f9a\u0007\u0010\u0000\u0000\u0f9a\u0f9b\u0007\r\u0000\u0000\u0f9b"+ - "\u0f9c\u0007\u0016\u0000\u0000\u0f9c\u0f9d\u0007\t\u0000\u0000\u0f9d\u0f9e"+ - "\u0007\u0010\u0000\u0000\u0f9e\u0f9f\u0007\n\u0000\u0000\u0f9f\u0fa0\u0007"+ - "\f\u0000\u0000\u0fa0\u02d6\u0001\u0000\u0000\u0000\u0fa1\u0fa2\u0007\u0010"+ - "\u0000\u0000\u0fa2\u0fa3\u0007\b\u0000\u0000\u0fa3\u0fa4\u0007\u0018\u0000"+ - "\u0000\u0fa4\u0fa5\u0007\n\u0000\u0000\u0fa5\u02d8\u0001\u0000\u0000\u0000"+ - "\u0fa6\u0fa7\u0007\u0010\u0000\u0000\u0fa7\u0fa8\u0007\b\u0000\u0000\u0fa8"+ - "\u0fa9\u0007\u0018\u0000\u0000\u0fa9\u0faa\u0007\n\u0000\u0000\u0faa\u0fab"+ - "\u0007\t\u0000\u0000\u0fab\u02da\u0001\u0000\u0000\u0000\u0fac\u0fad\u0007"+ - "\u0016\u0000\u0000\u0fad\u0fae\u0007\u0007\u0000\u0000\u0fae\u0faf\u0007"+ - "\u0012\u0000\u0000\u0faf\u0fb0\u0007\u0013\u0000\u0000\u0fb0\u0fb1\u0007"+ - "\u0016\u0000\u0000\u0fb1\u0fb2\u0007\u0007\u0000\u0000\u0fb2\u0fb3\u0007"+ - "\f\u0000\u0000\u0fb3\u0fb4\u0007\n\u0000\u0000\u0fb4\u0fb5\u0007\f\u0000"+ - "\u0000\u0fb5\u02dc\u0001\u0000\u0000\u0000\u0fb6\u0fb7\u0007\u0016\u0000"+ - "\u0000\u0fb7\u0fb8\u0007\u0007\u0000\u0000\u0fb8\u0fb9\u0007\u000e\u0000"+ - "\u0000\u0fb9\u0fba\u0007\u0013\u0000\u0000\u0fba\u0fbb\u0007\u000f\u0000"+ - "\u0000\u0fbb\u0fbc\u0007\u000f\u0000\u0000\u0fbc\u0fbd\u0007\u0011\u0000"+ - "\u0000\u0fbd\u0fbe\u0007\u0010\u0000\u0000\u0fbe\u0fbf\u0007\u0010\u0000"+ - "\u0000\u0fbf\u0fc0\u0007\n\u0000\u0000\u0fc0\u0fc1\u0007\f\u0000\u0000"+ - "\u0fc1\u02de\u0001\u0000\u0000\u0000\u0fc2\u0fc3\u0007\u0016\u0000\u0000"+ - "\u0fc3\u0fc4\u0007\u0007\u0000\u0000\u0fc4\u0fc5\u0007\n\u0000\u0000\u0fc5"+ - "\u0fc6\u0007\u0007\u0000\u0000\u0fc6\u0fc7\u0007\u000e\u0000\u0000\u0fc7"+ - "\u0fc8\u0007\r\u0000\u0000\u0fc8\u0fc9\u0007\b\u0000\u0000\u0fc9\u0fca"+ - "\u0007\u0018\u0000\u0000\u0fca\u0fcb\u0007\u0010\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\u0015\u0000\u0000\u0fd1\u0fd2\u0007"+ - "\u0007\u0000\u0000\u0fd2\u0fd3\u0007\u0013\u0000\u0000\u0fd3\u0fd4\u0007"+ - "\u001c\u0000\u0000\u0fd4\u0fd5\u0007\u0007\u0000\u0000\u0fd5\u02e2\u0001"+ - "\u0000\u0000\u0000\u0fd6\u0fd7\u0007\u0016\u0000\u0000\u0fd7\u0fd8\u0007"+ - "\u0007\u0000\u0000\u0fd8\u0fd9\u0007\u0006\u0000\u0000\u0fd9\u0fda\u0007"+ - "\u0011\u0000\u0000\u0fda\u0fdb\u0007\t\u0000\u0000\u0fdb\u0fdc\u0007\u0010"+ - "\u0000\u0000\u0fdc\u0fdd\u0007\n\u0000\u0000\u0fdd\u0fde\u0007\u0007\u0000"+ - "\u0000\u0fde\u02e4\u0001\u0000\u0000\u0000\u0fdf\u0fe0\u0007\u0016\u0000"+ - "\u0000\u0fe0\u0fe1\u0007\u0007\u0000\u0000\u0fe1\u0fe2\u0007\u0006\u0000"+ - "\u0000\u0fe2\u0fe3\u0007\u0013\u0000\u0000\u0fe3\u0fe4\u0007\u0017\u0000"+ - "\u0000\u0fe4\u0fe5\u0007\u0017\u0000\u0000\u0fe5\u0fe6\u0007\n\u0000\u0000"+ - "\u0fe6\u0fe7\u0007\f\u0000\u0000\u0fe7\u02e6\u0001\u0000\u0000\u0000\u0fe8"+ - "\u0fe9\u0007\u0016\u0000\u0000\u0fe9\u0fea\u0007\u0007\u0000\u0000\u0fea"+ - "\u0feb\u0007\u0010\u0000\u0000\u0feb\u0fec\u0007\u0011\u0000\u0000\u0fec"+ - "\u0fed\u0007\u0006\u0000\u0000\u0fed\u02e8\u0001\u0000\u0000\u0000\u0fee"+ - "\u0fef\u0007\u0016\u0000\u0000\u0fef\u0ff0\u0007\u0018\u0000\u0000\u0ff0"+ - "\u0ff1\u0007\f\u0000\u0000\u0ff1\u0ff2\u0007\u0005\u0000\u0000\u0ff2\u0ff3"+ - "\u0007\u0010\u0000\u0000\u0ff3\u0ff4\u0007\n\u0000\u0000\u0ff4\u02ea\u0001"+ - "\u0000\u0000\u0000\u0ff5\u0ff6\u0007\u001b\u0000\u0000\u0ff6\u0ff7\u0007"+ - "\u0005\u0000\u0000\u0ff7\u0ff8\u0007\u000e\u0000\u0000\u0ff8\u0ff9\u0007"+ - "\u0016\u0000\u0000\u0ff9\u0ffa\u0007\u0016\u0000\u0000\u0ffa\u0ffb\u0007"+ - "\u000f\u0000\u0000\u0ffb\u02ec\u0001\u0000\u0000\u0000\u0ffc\u0ffd\u0007"+ - "\u001b\u0000\u0000\u0ffd\u0ffe\u0007\u0005\u0000\u0000\u0ffe\u0fff\u0007"+ - "\u0006\u0000\u0000\u0fff\u1000\u0007\u0011\u0000\u0000\u1000\u1001\u0007"+ - "\f\u0000\u0000\u1001\u02ee\u0001\u0000\u0000\u0000\u1002\u1003\u0007\u001b"+ - "\u0000\u0000\u1003\u1004\u0007\u0005\u0000\u0000\u1004\u1005\u0007\u0006"+ - "\u0000\u0000\u1005\u1006\u0007\u0011\u0000\u0000\u1006\u1007\u0007\f\u0000"+ - "\u0000\u1007\u1008\u0007\u0005\u0000\u0000\u1008\u1009\u0007\u0010\u0000"+ - "\u0000\u1009\u100a\u0007\n\u0000\u0000\u100a\u02f0\u0001\u0000\u0000\u0000"+ - "\u100b\u100c\u0007\u001b\u0000\u0000\u100c\u100d\u0007\u0005\u0000\u0000"+ - "\u100d\u100e\u0007\u0006\u0000\u0000\u100e\u100f\u0007\u0011\u0000\u0000"+ - "\u100f\u1010\u0007\f\u0000\u0000\u1010\u1011\u0007\u0005\u0000\u0000\u1011"+ - "\u1012\u0007\u0010\u0000\u0000\u1012\u1013\u0007\u0013\u0000\u0000\u1013"+ - "\u1014\u0007\r\u0000\u0000\u1014\u02f2\u0001\u0000\u0000\u0000\u1015\u1016"+ - "\u0007\u001b\u0000\u0000\u1016\u1017\u0007\u0005\u0000\u0000\u1017\u1018"+ - "\u0007\r\u0000\u0000\u1018\u1019\u0007\b\u0000\u0000\u1019\u101a\u0007"+ - "\u0011\u0000\u0000\u101a\u101b\u0007\u0007\u0000\u0000\u101b\u101c\u0007"+ - "\u0017\u0000\u0000\u101c\u02f4\u0001\u0000\u0000\u0000\u101d\u101e\u0007"+ - "\u001b\u0000\u0000\u101e\u101f\u0007\n\u0000\u0000\u101f\u1020\u0007\r"+ - "\u0000\u0000\u1020\u1021\u0007\t\u0000\u0000\u1021\u1022\u0007\u0011\u0000"+ - "\u0000\u1022\u1023\u0007\u0013\u0000\u0000\u1023\u1024\u0007\u0007\u0000"+ - "\u0000\u1024\u02f6\u0001\u0000\u0000\u0000\u1025\u1026\u0007\u001b\u0000"+ - "\u0000\u1026\u1027\u0007\u0011\u0000\u0000\u1027\u1028\u0007\n\u0000\u0000"+ - "\u1028\u1029\u0007\u001c\u0000\u0000\u1029\u02f8\u0001\u0000\u0000\u0000"+ - "\u102a\u102b\u0007\u001b\u0000\u0000\u102b\u102c\u0007\u0013\u0000\u0000"+ - "\u102c\u102d\u0007\u0006\u0000\u0000\u102d\u102e\u0007\u0005\u0000\u0000"+ - "\u102e\u102f\u0007\u0010\u0000\u0000\u102f\u1030\u0007\u0011\u0000\u0000"+ - "\u1030\u1031\u0007\u0006\u0000\u0000\u1031\u1032\u0007\n\u0000\u0000\u1032"+ - "\u02fa\u0001\u0000\u0000\u0000\u1033\u1034\u0007\u001c\u0000\u0000\u1034"+ - "\u1035\u0007\u0014\u0000\u0000\u1035\u1036\u0007\u0011\u0000\u0000\u1036"+ - "\u1037\u0007\u0010\u0000\u0000\u1037\u1038\u0007\n\u0000\u0000\u1038\u1039"+ - "\u0007\t\u0000\u0000\u1039\u103a\u0007\u0018\u0000\u0000\u103a\u103b\u0007"+ - "\u0005\u0000\u0000\u103b\u103c\u0007\u000e\u0000\u0000\u103c\u103d\u0007"+ - "\n\u0000\u0000\u103d\u02fc\u0001\u0000\u0000\u0000\u103e\u103f\u0007\u001c"+ - "\u0000\u0000\u103f\u1040\u0007\u0011\u0000\u0000\u1040\u1041\u0007\u0010"+ - "\u0000\u0000\u1041\u1042\u0007\u0014\u0000\u0000\u1042\u1043\u0007\u0013"+ - "\u0000\u0000\u1043\u1044\u0007\u0016\u0000\u0000\u1044\u1045\u0007\u0010"+ - "\u0000\u0000\u1045\u02fe\u0001\u0000\u0000\u0000\u1046\u1047\u0007\u001c"+ - "\u0000\u0000\u1047\u1048\u0007\u0013\u0000\u0000\u1048\u1049\u0007\r\u0000"+ - "\u0000\u1049\u104a\u0007\u0015\u0000\u0000\u104a\u0300\u0001\u0000\u0000"+ - "\u0000\u104b\u104c\u0007\u001c\u0000\u0000\u104c\u104d\u0007\r\u0000\u0000"+ - "\u104d\u104e\u0007\u0005\u0000\u0000\u104e\u104f\u0007\u0018\u0000\u0000"+ - "\u104f\u1050\u0007\u0018\u0000\u0000\u1050\u1051\u0007\n\u0000\u0000\u1051"+ - "\u1052\u0007\r\u0000\u0000\u1052\u0302\u0001\u0000\u0000\u0000\u1053\u1054"+ - "\u0007\u001c\u0000\u0000\u1054\u1055\u0007\r\u0000\u0000\u1055\u1056\u0007"+ - "\u0011\u0000\u0000\u1056\u1057\u0007\u0010\u0000\u0000\u1057\u1058\u0007"+ - "\n\u0000\u0000\u1058\u0304\u0001\u0000\u0000\u0000\u1059\u105a\u0007\u001a"+ - "\u0000\u0000\u105a\u105b\u0007\u000f\u0000\u0000\u105b\u105c\u0007\u0006"+ - "\u0000\u0000\u105c\u0306\u0001\u0000\u0000\u0000\u105d\u105e\u0007\b\u0000"+ - "\u0000\u105e\u105f\u0007\n\u0000\u0000\u105f\u1060\u0007\u0005\u0000\u0000"+ - "\u1060\u1061\u0007\r\u0000\u0000\u1061\u0308\u0001\u0000\u0000\u0000\u1062"+ - "\u1063\u0007\b\u0000\u0000\u1063\u1064\u0007\n\u0000\u0000\u1064\u1065"+ - "\u0007\t\u0000\u0000\u1065\u030a\u0001\u0000\u0000\u0000\u1066\u1067\u0007"+ - "\u000b\u0000\u0000\u1067\u1068\u0007\u0013\u0000\u0000\u1068\u1069\u0007"+ - "\u0007\u0000\u0000\u1069\u106a\u0007\n\u0000\u0000\u106a\u030c\u0001\u0000"+ - "\u0000\u0000\u106b\u106c\u0007\u0012\u0000\u0000\u106c\u106d\u0007\n\u0000"+ - "\u0000\u106d\u106e\u0007\u0010\u0000\u0000\u106e\u106f\u0007\u001c\u0000"+ - "\u0000\u106f\u1070\u0007\n\u0000\u0000\u1070\u1071\u0007\n\u0000\u0000"+ - "\u1071\u1072\u0007\u0007\u0000\u0000\u1072\u030e\u0001\u0000\u0000\u0000"+ - "\u1073\u1074\u0007\u0012\u0000\u0000\u1074\u1075\u0007\u0011\u0000\u0000"+ - "\u1075\u1076\u0007\u0017\u0000\u0000\u1076\u1077\u0007\u0011\u0000\u0000"+ - "\u1077\u1078\u0007\u0007\u0000\u0000\u1078\u1079\u0007\u0010\u0000\u0000"+ - "\u1079\u0310\u0001\u0000\u0000\u0000\u107a\u107b\u0007\u0012\u0000\u0000"+ - "\u107b\u107c\u0007\u0011\u0000\u0000\u107c\u107d\u0007\u0010\u0000\u0000"+ - "\u107d\u0312\u0001\u0000\u0000\u0000\u107e\u107f\u0007\u0012\u0000\u0000"+ - "\u107f\u1080\u0007\u0013\u0000\u0000\u1080\u1081\u0007\u0013\u0000\u0000"+ - "\u1081\u1082\u0007\u0006\u0000\u0000\u1082\u1083\u0007\n\u0000\u0000\u1083"+ - "\u1084\u0007\u0005\u0000\u0000\u1084\u1085\u0007\u0007\u0000\u0000\u1085"+ - "\u0314\u0001\u0000\u0000\u0000\u1086\u1087\u0007\u000e\u0000\u0000\u1087"+ - "\u1088\u0007\u0014\u0000\u0000\u1088\u1089\u0007\u0005\u0000\u0000\u1089"+ - "\u108a\u0007\r\u0000\u0000\u108a\u0316\u0001\u0000\u0000\u0000\u108b\u108c"+ - "\u0007\u000e\u0000\u0000\u108c\u108d\u0007\u0014\u0000\u0000\u108d\u108e"+ - "\u0007\u0005\u0000\u0000\u108e\u108f\u0007\r\u0000\u0000\u108f\u1090\u0007"+ - "\u0005\u0000\u0000\u1090\u1091\u0007\u000e\u0000\u0000\u1091\u1092\u0007"+ - "\u0010\u0000\u0000\u1092\u1093\u0007\n\u0000\u0000\u1093\u1094\u0007\r"+ - "\u0000\u0000\u1094\u0318\u0001\u0000\u0000\u0000\u1095\u1096\u0007\u000e"+ - "\u0000\u0000\u1096\u1097\u0007\u0013\u0000\u0000\u1097\u1098\u0007\u0005"+ - "\u0000\u0000\u1098\u1099\u0007\u0006\u0000\u0000\u1099\u109a\u0007\n\u0000"+ - "\u0000\u109a\u109b\u0007\t\u0000\u0000\u109b\u109c\u0007\u000e\u0000\u0000"+ - "\u109c\u109d\u0007\n\u0000\u0000\u109d\u031a\u0001\u0000\u0000\u0000\u109e"+ - "\u109f\u0007\f\u0000\u0000\u109f\u10a0\u0007\n\u0000\u0000\u10a0\u10a1"+ - "\u0007\u000e\u0000\u0000\u10a1\u031c\u0001\u0000\u0000\u0000\u10a2\u10a3"+ - "\u0007\f\u0000\u0000\u10a3\u10a4\u0007\n\u0000\u0000\u10a4\u10a5\u0007"+ - "\u000e\u0000\u0000\u10a5\u10a6\u0007\u0011\u0000\u0000\u10a6\u10a7\u0007"+ - "\u000f\u0000\u0000\u10a7\u10a8\u0007\u0005\u0000\u0000\u10a8\u10a9\u0007"+ - "\u0006\u0000\u0000\u10a9\u031e\u0001\u0000\u0000\u0000\u10aa\u10ab\u0007"+ - "\n\u0000\u0000\u10ab\u10ac\u0007\u001a\u0000\u0000\u10ac\u10ad\u0007\u0011"+ - "\u0000\u0000\u10ad\u10ae\u0007\t\u0000\u0000\u10ae\u10af\u0007\u0010\u0000"+ - "\u0000\u10af\u10b0\u0007\t\u0000\u0000\u10b0\u0320\u0001\u0000\u0000\u0000"+ - "\u10b1\u10b2\u0007\n\u0000\u0000\u10b2\u10b3\u0007\u001a\u0000\u0000\u10b3"+ - "\u10b4\u0007\u0010\u0000\u0000\u10b4\u10b5\u0007\r\u0000\u0000\u10b5\u10b6"+ - "\u0007\u0005\u0000\u0000\u10b6\u10b7\u0007\u000e\u0000\u0000\u10b7\u10b8"+ - "\u0007\u0010\u0000\u0000\u10b8\u0322\u0001\u0000\u0000\u0000\u10b9\u10ba"+ - "\u0007\u0019\u0000\u0000\u10ba\u10bb\u0007\u0006\u0000\u0000\u10bb\u10bc"+ - "\u0007\u0013\u0000\u0000\u10bc\u10bd\u0007\u0005\u0000\u0000\u10bd\u10be"+ - "\u0007\u0010\u0000\u0000\u10be\u0324\u0001\u0000\u0000\u0000\u10bf\u10c0"+ - "\u0007\u0017\u0000\u0000\u10c0\u10c1\u0007\r\u0000\u0000\u10c1\u10c2\u0007"+ - "\n\u0000\u0000\u10c2\u10c3\u0007\u0005\u0000\u0000\u10c3\u10c4\u0007\u0010"+ - "\u0000\u0000\u10c4\u10c5\u0007\n\u0000\u0000\u10c5\u10c6\u0007\t\u0000"+ - "\u0000\u10c6\u10c7\u0007\u0010\u0000\u0000\u10c7\u0326\u0001\u0000\u0000"+ - "\u0000\u10c8\u10c9\u0007\u0011\u0000\u0000\u10c9\u10ca\u0007\u0007\u0000"+ - "\u0000\u10ca\u10cb\u0007\u0013\u0000\u0000\u10cb\u10cc\u0007\u0016\u0000"+ - "\u0000\u10cc\u10cd\u0007\u0010\u0000\u0000\u10cd\u0328\u0001\u0000\u0000"+ - "\u0000\u10ce\u10cf\u0007\u0011\u0000\u0000\u10cf\u10d0\u0007\u0007\u0000"+ - "\u0000\u10d0\u10d1\u0007\u0010\u0000\u0000\u10d1\u032a\u0001\u0000\u0000"+ - "\u0000\u10d2\u10d3\u0007\u0011\u0000\u0000\u10d3\u10d4\u0007\u0007\u0000"+ - "\u0000\u10d4\u10d5\u0007\u0010\u0000\u0000\u10d5\u10d6\u0007\n\u0000\u0000"+ - "\u10d6\u10d7\u0007\u0017\u0000\u0000\u10d7\u10d8\u0007\n\u0000\u0000\u10d8"+ - "\u10d9\u0007\r\u0000\u0000\u10d9\u032c\u0001\u0000\u0000\u0000\u10da\u10db"+ - "\u0007\u0011\u0000\u0000\u10db\u10dc\u0007\u0007\u0000\u0000\u10dc\u10dd"+ - "\u0007\u0010\u0000\u0000\u10dd\u10de\u0007\n\u0000\u0000\u10de\u10df\u0007"+ - "\r\u0000\u0000\u10df\u10e0\u0007\u001b\u0000\u0000\u10e0\u10e1\u0007\u0005"+ - "\u0000\u0000\u10e1\u10e2\u0007\u0006\u0000\u0000\u10e2\u032e\u0001\u0000"+ - "\u0000\u0000\u10e3\u10e4\u0007\u0006\u0000\u0000\u10e4\u10e5\u0007\n\u0000"+ - "\u0000\u10e5\u10e6\u0007\u0005\u0000\u0000\u10e6\u10e7\u0007\t\u0000\u0000"+ - "\u10e7\u10e8\u0007\u0010\u0000\u0000\u10e8\u0330\u0001\u0000\u0000\u0000"+ - "\u10e9\u10ea\u0007\u0007\u0000\u0000\u10ea\u10eb\u0007\u0005\u0000\u0000"+ - "\u10eb\u10ec\u0007\u0010\u0000\u0000\u10ec\u10ed\u0007\u0011\u0000\u0000"+ - "\u10ed\u10ee\u0007\u0013\u0000\u0000\u10ee\u10ef\u0007\u0007\u0000\u0000"+ - "\u10ef\u10f0\u0007\u0005\u0000\u0000\u10f0\u10f1\u0007\u0006\u0000\u0000"+ - "\u10f1\u0332\u0001\u0000\u0000\u0000\u10f2\u10f3\u0007\u0007\u0000\u0000"+ - "\u10f3\u10f4\u0007\u000e\u0000\u0000\u10f4\u10f5\u0007\u0014\u0000\u0000"+ - "\u10f5\u10f6\u0007\u0005\u0000\u0000\u10f6\u10f7\u0007\r\u0000\u0000\u10f7"+ - "\u0334\u0001\u0000\u0000\u0000\u10f8\u10f9\u0007\u0007\u0000\u0000\u10f9"+ - "\u10fa\u0007\u0013\u0000\u0000\u10fa\u10fb\u0007\u0007\u0000\u0000\u10fb"+ - "\u10fc\u0007\n\u0000\u0000\u10fc\u0336\u0001\u0000\u0000\u0000\u10fd\u10fe"+ - "\u0007\u0007\u0000\u0000\u10fe\u10ff\u0007\u0016\u0000\u0000\u10ff\u1100"+ - "\u0007\u0006\u0000\u0000\u1100\u1101\u0007\u0006\u0000\u0000\u1101\u1102"+ - "\u0007\u0011\u0000\u0000\u1102\u1103\u0007\u0019\u0000\u0000\u1103\u0338"+ - "\u0001\u0000\u0000\u0000\u1104\u1105\u0007\u0007\u0000\u0000\u1105\u1106"+ - "\u0007\u0016\u0000\u0000\u1106\u1107\u0007\u000f\u0000\u0000\u1107\u1108"+ - "\u0007\n\u0000\u0000\u1108\u1109\u0007\r\u0000\u0000\u1109\u110a\u0007"+ - "\u0011\u0000\u0000\u110a\u110b\u0007\u000e\u0000\u0000\u110b\u033a\u0001"+ - "\u0000\u0000\u0000\u110c\u110d\u0007\u0013\u0000\u0000\u110d\u110e\u0007"+ - "\u001b\u0000\u0000\u110e\u110f\u0007\n\u0000\u0000\u110f\u1110\u0007\r"+ - "\u0000\u0000\u1110\u1111\u0007\u0006\u0000\u0000\u1111\u1112\u0007\u0005"+ - "\u0000\u0000\u1112\u1113\u0007\b\u0000\u0000\u1113\u033c\u0001\u0000\u0000"+ - "\u0000\u1114\u1115\u0007\u0018\u0000\u0000\u1115\u1116\u0007\u0013\u0000"+ - "\u0000\u1116\u1117\u0007\t\u0000\u0000\u1117\u1118\u0007\u0011\u0000\u0000"+ - "\u1118\u1119\u0007\u0010\u0000\u0000\u1119\u111a\u0007\u0011\u0000\u0000"+ - "\u111a\u111b\u0007\u0013\u0000\u0000\u111b\u111c\u0007\u0007\u0000\u0000"+ - "\u111c\u033e\u0001\u0000\u0000\u0000\u111d\u111e\u0007\u0018\u0000\u0000"+ - "\u111e\u111f\u0007\r\u0000\u0000\u111f\u1120\u0007\n\u0000\u0000\u1120"+ - "\u1121\u0007\u000e\u0000\u0000\u1121\u1122\u0007\u0011\u0000\u0000\u1122"+ - "\u1123\u0007\t\u0000\u0000\u1123\u1124\u0007\u0011\u0000\u0000\u1124\u1125"+ - "\u0007\u0013\u0000\u0000\u1125\u1126\u0007\u0007\u0000\u0000\u1126\u0340"+ - "\u0001\u0000\u0000\u0000\u1127\u1128\u0007\r\u0000\u0000\u1128\u1129\u0007"+ - "\n\u0000\u0000\u1129\u112a\u0007\u0005\u0000\u0000\u112a\u112b\u0007\u0006"+ - "\u0000\u0000\u112b\u0342\u0001\u0000\u0000\u0000\u112c\u112d\u0007\r\u0000"+ - "\u0000\u112d\u112e\u0007\u0013\u0000\u0000\u112e\u112f\u0007\u001c\u0000"+ - "\u0000\u112f\u0344\u0001\u0000\u0000\u0000\u1130\u1131\u0007\t\u0000\u0000"+ - "\u1131\u1132\u0007\n\u0000\u0000\u1132\u1133\u0007\u0010\u0000\u0000\u1133"+ - "\u1134\u0007\u0013\u0000\u0000\u1134\u1135\u0007\u0019\u0000\u0000\u1135"+ - "\u0346\u0001\u0000\u0000\u0000\u1136\u1137\u0007\t\u0000\u0000\u1137\u1138"+ - "\u0007\u000f\u0000\u0000\u1138\u1139\u0007\u0005\u0000\u0000\u1139\u113a"+ - "\u0007\u0006\u0000\u0000\u113a\u113b\u0007\u0006\u0000\u0000\u113b\u113c"+ - "\u0007\u0011\u0000\u0000\u113c\u113d\u0007\u0007\u0000\u0000\u113d\u113e"+ - "\u0007\u0010\u0000\u0000\u113e\u0348\u0001\u0000\u0000\u0000\u113f\u1140"+ - "\u0007\t\u0000\u0000\u1140\u1141\u0007\u0016\u0000\u0000\u1141\u1142\u0007"+ - "\u0012\u0000\u0000\u1142\u1143\u0007\t\u0000\u0000\u1143\u1144\u0007\u0010"+ - "\u0000\u0000\u1144\u1145\u0007\r\u0000\u0000\u1145\u1146\u0007\u0011\u0000"+ - "\u0000\u1146\u1147\u0007\u0007\u0000\u0000\u1147\u1148\u0007\u0017\u0000"+ - "\u0000\u1148\u034a\u0001\u0000\u0000\u0000\u1149\u114a\u0007\u0010\u0000"+ - "\u0000\u114a\u114b\u0007\u0011\u0000\u0000\u114b\u114c\u0007\u000f\u0000"+ - "\u0000\u114c\u114d\u0007\n\u0000\u0000\u114d\u034c\u0001\u0000\u0000\u0000"+ - "\u114e\u114f\u0007\u0010\u0000\u0000\u114f\u1150\u0007\u0011\u0000\u0000"+ - "\u1150\u1151\u0007\u000f\u0000\u0000\u1151\u1152\u0007\n\u0000\u0000\u1152"+ - "\u1153\u0007\t\u0000\u0000\u1153\u1154\u0007\u0010\u0000\u0000\u1154\u1155"+ - "\u0007\u0005\u0000\u0000\u1155\u1156\u0007\u000f\u0000\u0000\u1156\u1157"+ - "\u0007\u0018\u0000\u0000\u1157\u034e\u0001\u0000\u0000\u0000\u1158\u1159"+ - "\u0007\u0010\u0000\u0000\u1159\u115a\u0007\r\u0000\u0000\u115a\u115b\u0007"+ - "\n\u0000\u0000\u115b\u115c\u0007\u0005\u0000\u0000\u115c\u115d\u0007\u0010"+ - "\u0000\u0000\u115d\u0350\u0001\u0000\u0000\u0000\u115e\u115f\u0007\u0010"+ - "\u0000\u0000\u115f\u1160\u0007\r\u0000\u0000\u1160\u1161\u0007\u0011\u0000"+ - "\u0000\u1161\u1162\u0007\u000f\u0000\u0000\u1162\u0352\u0001\u0000\u0000"+ - "\u0000\u1163\u1164\u0007\u001b\u0000\u0000\u1164\u1165\u0007\u0005\u0000"+ - "\u0000\u1165\u1166\u0007\u0006\u0000\u0000\u1166\u1167\u0007\u0016\u0000"+ - "\u0000\u1167\u1168\u0007\n\u0000\u0000\u1168\u1169\u0007\t\u0000\u0000"+ - "\u1169\u0354\u0001\u0000\u0000\u0000\u116a\u116b\u0007\u001b\u0000\u0000"+ - "\u116b\u116c\u0007\u0005\u0000\u0000\u116c\u116d\u0007\r\u0000\u0000\u116d"+ - "\u116e\u0007\u000e\u0000\u0000\u116e\u116f\u0007\u0014\u0000\u0000\u116f"+ - "\u1170\u0007\u0005\u0000\u0000\u1170\u1171\u0007\r\u0000\u0000\u1171\u0356"+ - "\u0001\u0000\u0000\u0000\u1172\u1173\u0007\u001a\u0000\u0000\u1173\u1174"+ - "\u0007\u000f\u0000\u0000\u1174\u1175\u0007\u0006\u0000\u0000\u1175\u1176"+ - "\u0007\u0005\u0000\u0000\u1176\u1177\u0007\u0010\u0000\u0000\u1177\u1178"+ - "\u0007\u0010\u0000\u0000\u1178\u1179\u0007\r\u0000\u0000\u1179\u117a\u0007"+ - "\u0011\u0000\u0000\u117a\u117b\u0007\u0012\u0000\u0000\u117b\u117c\u0007"+ - "\u0016\u0000\u0000\u117c\u117d\u0007\u0010\u0000\u0000\u117d\u117e\u0007"+ - "\n\u0000\u0000\u117e\u117f\u0007\t\u0000\u0000\u117f\u0358\u0001\u0000"+ - "\u0000\u0000\u1180\u1181\u0007\u001a\u0000\u0000\u1181\u1182\u0007\u000f"+ - "\u0000\u0000\u1182\u1183\u0007\u0006\u0000\u0000\u1183\u1184\u0007\u000e"+ - "\u0000\u0000\u1184\u1185\u0007\u0013\u0000\u0000\u1185\u1186\u0007\u000f"+ - "\u0000\u0000\u1186\u1187\u0007\u000f\u0000\u0000\u1187\u1188\u0007\n\u0000"+ - "\u0000\u1188\u1189\u0007\u0007\u0000\u0000\u1189\u118a\u0007\u0010\u0000"+ - "\u0000\u118a\u035a\u0001\u0000\u0000\u0000\u118b\u118c\u0007\u001a\u0000"+ - "\u0000\u118c\u118d\u0007\u000f\u0000\u0000\u118d\u118e\u0007\u0006\u0000"+ - "\u0000\u118e\u118f\u0007\u0005\u0000\u0000\u118f\u1190\u0007\u0017\u0000"+ - "\u0000\u1190\u1191\u0007\u0017\u0000\u0000\u1191\u035c\u0001\u0000\u0000"+ - "\u0000\u1192\u1193\u0007\u001a\u0000\u0000\u1193\u1194\u0007\u000f\u0000"+ - "\u0000\u1194\u1195\u0007\u0006\u0000\u0000\u1195\u1196\u0005_\u0000\u0000"+ - "\u1196\u1197\u0007\u0011\u0000\u0000\u1197\u1198\u0007\t\u0000\u0000\u1198"+ - "\u1199\u0005_\u0000\u0000\u1199\u119a\u0007\u001c\u0000\u0000\u119a\u119b"+ - "\u0007\n\u0000\u0000\u119b\u119c\u0007\u0006\u0000\u0000\u119c\u119d\u0007"+ - "\u0006\u0000\u0000\u119d\u119e\u0005_\u0000\u0000\u119e\u119f\u0007\u0019"+ - "\u0000\u0000\u119f\u11a0\u0007\u0013\u0000\u0000\u11a0\u11a1\u0007\r\u0000"+ - "\u0000\u11a1\u11a2\u0007\u000f\u0000\u0000\u11a2\u11a3\u0007\n\u0000\u0000"+ - "\u11a3\u11a4\u0007\f\u0000\u0000\u11a4\u035e\u0001\u0000\u0000\u0000\u11a5"+ - "\u11a6\u0007\u001a\u0000\u0000\u11a6\u11a7\u0007\u000f\u0000\u0000\u11a7"+ - "\u11a8\u0007\u0006\u0000\u0000\u11a8\u11a9\u0005_\u0000\u0000\u11a9\u11aa"+ - "\u0007\u0011\u0000\u0000\u11aa\u11ab\u0007\t\u0000\u0000\u11ab\u11ac\u0005"+ - "_\u0000\u0000\u11ac\u11ad\u0007\u001c\u0000\u0000\u11ad\u11ae\u0007\n"+ - "\u0000\u0000\u11ae\u11af\u0007\u0006\u0000\u0000\u11af\u11b0\u0007\u0006"+ - "\u0000\u0000\u11b0\u11b1\u0005_\u0000\u0000\u11b1\u11b2\u0007\u0019\u0000"+ - "\u0000\u11b2\u11b3\u0007\u0013\u0000\u0000\u11b3\u11b4\u0007\r\u0000\u0000"+ - "\u11b4\u11b5\u0007\u000f\u0000\u0000\u11b5\u11b6\u0007\n\u0000\u0000\u11b6"+ - "\u11b7\u0007\f\u0000\u0000\u11b7\u11b8\u0005_\u0000\u0000\u11b8\u11b9"+ - "\u0007\f\u0000\u0000\u11b9\u11ba\u0007\u0013\u0000\u0000\u11ba\u11bb\u0007"+ - "\u000e\u0000\u0000\u11bb\u11bc\u0007\u0016\u0000\u0000\u11bc\u11bd\u0007"+ - "\u000f\u0000\u0000\u11bd\u11be\u0007\n\u0000\u0000\u11be\u11bf\u0007\u0007"+ - "\u0000\u0000\u11bf\u11c0\u0007\u0010\u0000\u0000\u11c0\u0360\u0001\u0000"+ - "\u0000\u0000\u11c1\u11c2\u0007\u001a\u0000\u0000\u11c2\u11c3\u0007\u000f"+ - "\u0000\u0000\u11c3\u11c4\u0007\u0006\u0000\u0000\u11c4\u11c5\u0005_\u0000"+ - "\u0000\u11c5\u11c6\u0007\u0011\u0000\u0000\u11c6\u11c7\u0007\t\u0000\u0000"+ - "\u11c7\u11c8\u0005_\u0000\u0000\u11c8\u11c9\u0007\u001c\u0000\u0000\u11c9"+ - "\u11ca\u0007\n\u0000\u0000\u11ca\u11cb\u0007\u0006\u0000\u0000\u11cb\u11cc"+ - "\u0007\u0006\u0000\u0000\u11cc\u11cd\u0005_\u0000\u0000\u11cd\u11ce\u0007"+ - "\u0019\u0000\u0000\u11ce\u11cf\u0007\u0013\u0000\u0000\u11cf\u11d0\u0007"+ - "\r\u0000\u0000\u11d0\u11d1\u0007\u000f\u0000\u0000\u11d1\u11d2\u0007\n"+ - "\u0000\u0000\u11d2\u11d3\u0007\f\u0000\u0000\u11d3\u11d4\u0005_\u0000"+ - "\u0000\u11d4\u11d5\u0007\u000e\u0000\u0000\u11d5\u11d6\u0007\u0013\u0000"+ - "\u0000\u11d6\u11d7\u0007\u0007\u0000\u0000\u11d7\u11d8\u0007\u0010\u0000"+ - "\u0000\u11d8\u11d9\u0007\n\u0000\u0000\u11d9\u11da\u0007\u0007\u0000\u0000"+ - "\u11da\u11db\u0007\u0010\u0000\u0000\u11db\u0362\u0001\u0000\u0000\u0000"+ - "\u11dc\u11dd\u0007\u001a\u0000\u0000\u11dd\u11de\u0007\u0018\u0000\u0000"+ - "\u11de\u11df\u0007\u0005\u0000\u0000\u11df\u11e0\u0007\u0010\u0000\u0000"+ - "\u11e0\u11e1\u0007\u0014\u0000\u0000\u11e1\u0364\u0001\u0000\u0000\u0000"+ - "\u11e2\u11e3\u0007\u001a\u0000\u0000\u11e3\u11e4\u0007\u0018\u0000\u0000"+ - "\u11e4\u11e5\u0007\u0005\u0000\u0000\u11e5\u11e6\u0007\u0010\u0000\u0000"+ - "\u11e6\u11e7\u0007\u0014\u0000\u0000\u11e7\u11e8\u0005_\u0000\u0000\u11e8"+ - "\u11e9\u0007\n\u0000\u0000\u11e9\u11ea\u0007\u001a\u0000\u0000\u11ea\u11eb"+ - "\u0007\u0011\u0000\u0000\u11eb\u11ec\u0007\t\u0000\u0000\u11ec\u11ed\u0007"+ - "\u0010\u0000\u0000\u11ed\u11ee\u0007\t\u0000\u0000\u11ee\u0366\u0001\u0000"+ - "\u0000\u0000\u11ef\u11f0\u0007\u001a\u0000\u0000\u11f0\u11f1\u0007\u000f"+ - "\u0000\u0000\u11f1\u11f2\u0007\u0006\u0000\u0000\u11f2\u11f3\u0007\u000e"+ - "\u0000\u0000\u11f3\u11f4\u0007\u0013\u0000\u0000\u11f4\u11f5\u0007\u0007"+ - "\u0000\u0000\u11f5\u11f6\u0007\u000e\u0000\u0000\u11f6\u11f7\u0007\u0005"+ - "\u0000\u0000\u11f7\u11f8\u0007\u0010\u0000\u0000\u11f8\u0368\u0001\u0000"+ - "\u0000\u0000\u11f9\u11fa\u0007\u001a\u0000\u0000\u11fa\u11fb\u0007\u000f"+ - "\u0000\u0000\u11fb\u11fc\u0007\u0006\u0000\u0000\u11fc\u11fd\u0007\n\u0000"+ - "\u0000\u11fd\u11fe\u0007\u0006\u0000\u0000\u11fe\u11ff\u0007\n\u0000\u0000"+ - "\u11ff\u1200\u0007\u000f\u0000\u0000\u1200\u1201\u0007\n\u0000\u0000\u1201"+ - "\u1202\u0007\u0007\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\n\u0000\u0000\u1208\u1209\u0007\u001a\u0000\u0000\u1209\u120a"+ - "\u0007\u0011\u0000\u0000\u120a\u120b\u0007\t\u0000\u0000\u120b\u120c\u0007"+ - "\u0010\u0000\u0000\u120c\u120d\u0007\t\u0000\u0000\u120d\u036c\u0001\u0000"+ - "\u0000\u0000\u120e\u120f\u0007\u001a\u0000\u0000\u120f\u1210\u0007\u000f"+ - "\u0000\u0000\u1210\u1211\u0007\u0006\u0000\u0000\u1211\u1212\u0007\u0019"+ - "\u0000\u0000\u1212\u1213\u0007\u0013\u0000\u0000\u1213\u1214\u0007\r\u0000"+ - "\u0000\u1214\u1215\u0007\n\u0000\u0000\u1215\u1216\u0007\t\u0000\u0000"+ - "\u1216\u1217\u0007\u0010\u0000\u0000\u1217\u036e\u0001\u0000\u0000\u0000"+ - "\u1218\u1219\u0007\u001a\u0000\u0000\u1219\u121a\u0007\u000f\u0000\u0000"+ - "\u121a\u121b\u0007\u0006\u0000\u0000\u121b\u121c\u0007\u0018\u0000\u0000"+ - "\u121c\u121d\u0007\u0005\u0000\u0000\u121d\u121e\u0007\r\u0000\u0000\u121e"+ - "\u121f\u0007\t\u0000\u0000\u121f\u1220\u0007\n\u0000\u0000\u1220\u0370"+ - "\u0001\u0000\u0000\u0000\u1221\u1222\u0007\u001a\u0000\u0000\u1222\u1223"+ - "\u0007\u000f\u0000\u0000\u1223\u1224\u0007\u0006\u0000\u0000\u1224\u1225"+ - "\u0007\u0018\u0000\u0000\u1225\u1226\u0007\u0011\u0000\u0000\u1226\u0372"+ - "\u0001\u0000\u0000\u0000\u1227\u1228\u0007\u001a\u0000\u0000\u1228\u1229"+ - "\u0007\u000f\u0000\u0000\u1229\u122a\u0007\u0006\u0000\u0000\u122a\u122b"+ - "\u0007\r\u0000\u0000\u122b\u122c\u0007\u0013\u0000\u0000\u122c\u122d\u0007"+ - "\u0013\u0000\u0000\u122d\u122e\u0007\u0010\u0000\u0000\u122e\u0374\u0001"+ - "\u0000\u0000\u0000\u122f\u1230\u0007\u001a\u0000\u0000\u1230\u1231\u0007"+ - "\u000f\u0000\u0000\u1231\u1232\u0007\u0006\u0000\u0000\u1232\u1233\u0007"+ - "\t\u0000\u0000\u1233\u1234\u0007\n\u0000\u0000\u1234\u1235\u0007\r\u0000"+ - "\u0000\u1235\u1236\u0007\u0011\u0000\u0000\u1236\u1237\u0007\u0005\u0000"+ - "\u0000\u1237\u1238\u0007\u0006\u0000\u0000\u1238\u1239\u0007\u0011\u0000"+ - "\u0000\u1239\u123a\u0007\u000b\u0000\u0000\u123a\u123b\u0007\n\u0000\u0000"+ - "\u123b\u0376\u0001\u0000\u0000\u0000\u123c\u123d\u0007\u000e\u0000\u0000"+ - "\u123d\u123e\u0007\u0005\u0000\u0000\u123e\u123f\u0007\u0006\u0000\u0000"+ - "\u123f\u1240\u0007\u0006\u0000\u0000\u1240\u0378\u0001\u0000\u0000\u0000"+ - "\u1241\u1242\u0007\u000e\u0000\u0000\u1242\u1243\u0007\u0016\u0000\u0000"+ - "\u1243\u1244\u0007\r\u0000\u0000\u1244\u1245\u0007\r\u0000\u0000\u1245"+ - "\u1246\u0007\n\u0000\u0000\u1246\u1247\u0007\u0007\u0000\u0000\u1247\u1248"+ - "\u0007\u0010\u0000\u0000\u1248\u037a\u0001\u0000\u0000\u0000\u1249\u124a"+ - "\u0007\u0005\u0000\u0000\u124a\u124b\u0007\u0010\u0000\u0000\u124b\u124c"+ - "\u0007\u0010\u0000\u0000\u124c\u124d\u0007\u0005\u0000\u0000\u124d\u124e"+ - "\u0007\u000e\u0000\u0000\u124e\u124f\u0007\u0014\u0000\u0000\u124f\u037c"+ - "\u0001\u0000\u0000\u0000\u1250\u1251\u0007\f\u0000\u0000\u1251\u1252\u0007"+ - "\n\u0000\u0000\u1252\u1253\u0007\u0010\u0000\u0000\u1253\u1254\u0007\u0005"+ - "\u0000\u0000\u1254\u1255\u0007"; - private static final String _serializedATNSegment2 = - "\u000e\u0000\u0000\u1255\u1256\u0007\u0014\u0000\u0000\u1256\u037e\u0001"+ - "\u0000\u0000\u0000\u1257\u1258\u0007\n\u0000\u0000\u1258\u1259\u0007\u001a"+ - "\u0000\u0000\u1259\u125a\u0007\u0018\u0000\u0000\u125a\u125b\u0007\r\u0000"+ - "\u0000\u125b\u125c\u0007\n\u0000\u0000\u125c\u125d\u0007\t\u0000\u0000"+ - "\u125d\u125e\u0007\t\u0000\u0000\u125e\u125f\u0007\u0011\u0000\u0000\u125f"+ - "\u1260\u0007\u0013\u0000\u0000\u1260\u1261\u0007\u0007\u0000\u0000\u1261"+ - "\u0380\u0001\u0000\u0000\u0000\u1262\u1263\u0007\u0017\u0000\u0000\u1263"+ - "\u1264\u0007\n\u0000\u0000\u1264\u1265\u0007\u0007\u0000\u0000\u1265\u1266"+ - "\u0007\n\u0000\u0000\u1266\u1267\u0007\r\u0000\u0000\u1267\u1268\u0007"+ - "\u0005\u0000\u0000\u1268\u1269\u0007\u0010\u0000\u0000\u1269\u126a\u0007"+ - "\n\u0000\u0000\u126a\u126b\u0007\f\u0000\u0000\u126b\u0382\u0001\u0000"+ - "\u0000\u0000\u126c\u126d\u0007\u0006\u0000\u0000\u126d\u126e\u0007\u0013"+ - "\u0000\u0000\u126e\u126f\u0007\u0017\u0000\u0000\u126f\u1270\u0007\u0017"+ - "\u0000\u0000\u1270\u1271\u0007\n\u0000\u0000\u1271\u1272\u0007\f\u0000"+ - "\u0000\u1272\u0384\u0001\u0000\u0000\u0000\u1273\u1274\u0007\t\u0000\u0000"+ - "\u1274\u1275\u0007\u0010\u0000\u0000\u1275\u1276\u0007\u0013\u0000\u0000"+ - "\u1276\u1277\u0007\r\u0000\u0000\u1277\u1278\u0007\n\u0000\u0000\u1278"+ - "\u1279\u0007\f\u0000\u0000\u1279\u0386\u0001\u0000\u0000\u0000\u127a\u127b"+ - "\u0007\u0011\u0000\u0000\u127b\u127c\u0007\u0007\u0000\u0000\u127c\u127d"+ - "\u0007\u000e\u0000\u0000\u127d\u127e\u0007\u0006\u0000\u0000\u127e\u127f"+ - "\u0007\u0016\u0000\u0000\u127f\u1280\u0007\f\u0000\u0000\u1280\u1281\u0007"+ - "\n\u0000\u0000\u1281\u0388\u0001\u0000\u0000\u0000\u1282\u1283\u0007\r"+ - "\u0000\u0000\u1283\u1284\u0007\u0013\u0000\u0000\u1284\u1285\u0007\u0016"+ - "\u0000\u0000\u1285\u1286\u0007\u0010\u0000\u0000\u1286\u1287\u0007\u0011"+ - "\u0000\u0000\u1287\u1288\u0007\u0007\u0000\u0000\u1288\u1289\u0007\n\u0000"+ - "\u0000\u1289\u038a\u0001\u0000\u0000\u0000\u128a\u128b\u0007\u0010\u0000"+ - "\u0000\u128b\u128c\u0007\r\u0000\u0000\u128c\u128d\u0007\u0005\u0000\u0000"+ - "\u128d\u128e\u0007\u0007\u0000\u0000\u128e\u128f\u0007\t\u0000\u0000\u128f"+ - "\u1290\u0007\u0019\u0000\u0000\u1290\u1291\u0007\u0013\u0000\u0000\u1291"+ - "\u1292\u0007\r\u0000\u0000\u1292\u1293\u0007\u000f\u0000\u0000\u1293\u038c"+ - "\u0001\u0000\u0000\u0000\u1294\u1295\u0007\u0011\u0000\u0000\u1295\u1296"+ - "\u0007\u000f\u0000\u0000\u1296\u1297\u0007\u0018\u0000\u0000\u1297\u1298"+ - "\u0007\u0013\u0000\u0000\u1298\u1299\u0007\r\u0000\u0000\u1299\u129a\u0007"+ - "\u0010\u0000\u0000\u129a\u038e\u0001\u0000\u0000\u0000\u129b\u129c\u0007"+ - "\u0018\u0000\u0000\u129c\u129d\u0007\u0013\u0000\u0000\u129d\u129e\u0007"+ - "\u0006\u0000\u0000\u129e\u129f\u0007\u0011\u0000\u0000\u129f\u12a0\u0007"+ - "\u000e\u0000\u0000\u12a0\u12a1\u0007\b\u0000\u0000\u12a1\u0390\u0001\u0000"+ - "\u0000\u0000\u12a2\u12a3\u0007\u000f\u0000\u0000\u12a3\u12a4\u0007\n\u0000"+ - "\u0000\u12a4\u12a5\u0007\u0010\u0000\u0000\u12a5\u12a6\u0007\u0014\u0000"+ - "\u0000\u12a6\u12a7\u0007\u0013\u0000\u0000\u12a7\u12a8\u0007\f\u0000\u0000"+ - "\u12a8\u0392\u0001\u0000\u0000\u0000\u12a9\u12aa\u0007\r\u0000\u0000\u12aa"+ - "\u12ab\u0007\n\u0000\u0000\u12ab\u12ac\u0007\u0019\u0000\u0000\u12ac\u12ad"+ - "\u0007\n\u0000\u0000\u12ad\u12ae\u0007\r\u0000\u0000\u12ae\u12af\u0007"+ - "\n\u0000\u0000\u12af\u12b0\u0007\u0007\u0000\u0000\u12b0\u12b1\u0007\u000e"+ - "\u0000\u0000\u12b1\u12b2\u0007\u0011\u0000\u0000\u12b2\u12b3\u0007\u0007"+ - "\u0000\u0000\u12b3\u12b4\u0007\u0017\u0000\u0000\u12b4\u0394\u0001\u0000"+ - "\u0000\u0000\u12b5\u12b6\u0007\u0007\u0000\u0000\u12b6\u12b7\u0007\n\u0000"+ - "\u0000\u12b7\u12b8\u0007\u001c\u0000\u0000\u12b8\u0396\u0001\u0000\u0000"+ - "\u0000\u12b9\u12ba\u0007\u0013\u0000\u0000\u12ba\u12bb\u0007\u0006\u0000"+ - "\u0000\u12bb\u12bc\u0007\f\u0000\u0000\u12bc\u0398\u0001\u0000\u0000\u0000"+ - "\u12bd\u12be\u0007\u001b\u0000\u0000\u12be\u12bf\u0007\u0005\u0000\u0000"+ - "\u12bf\u12c0\u0007\u0006\u0000\u0000\u12c0\u12c1\u0007\u0016\u0000\u0000"+ - "\u12c1\u12c2\u0007\n\u0000\u0000\u12c2\u039a\u0001\u0000\u0000\u0000\u12c3"+ - "\u12c4\u0007\t\u0000\u0000\u12c4\u12c5\u0007\u0016\u0000\u0000\u12c5\u12c6"+ - "\u0007\u0012\u0000\u0000\u12c6\u12c7\u0007\t\u0000\u0000\u12c7\u12c8\u0007"+ - "\u000e\u0000\u0000\u12c8\u12c9\u0007\r\u0000\u0000\u12c9\u12ca\u0007\u0011"+ - "\u0000\u0000\u12ca\u12cb\u0007\u0018\u0000\u0000\u12cb\u12cc\u0007\u0010"+ - "\u0000\u0000\u12cc\u12cd\u0007\u0011\u0000\u0000\u12cd\u12ce\u0007\u0013"+ - "\u0000\u0000\u12ce\u12cf\u0007\u0007\u0000\u0000\u12cf\u039c\u0001\u0000"+ - "\u0000\u0000\u12d0\u12d1\u0007\u0018\u0000\u0000\u12d1\u12d2\u0007\u0016"+ - "\u0000\u0000\u12d2\u12d3\u0007\u0012\u0000\u0000\u12d3\u12d4\u0007\u0006"+ - "\u0000\u0000\u12d4\u12d5\u0007\u0011\u0000\u0000\u12d5\u12d6\u0007\u000e"+ - "\u0000\u0000\u12d6\u12d7\u0007\u0005\u0000\u0000\u12d7\u12d8\u0007\u0010"+ - "\u0000\u0000\u12d8\u12d9\u0007\u0011\u0000\u0000\u12d9\u12da\u0007\u0013"+ - "\u0000\u0000\u12da\u12db\u0007\u0007\u0000\u0000\u12db\u039e\u0001\u0000"+ - "\u0000\u0000\u12dc\u12dd\u0007\u0013\u0000\u0000\u12dd\u12de\u0007\u0016"+ - "\u0000\u0000\u12de\u12df\u0007\u0010\u0000\u0000\u12df\u03a0\u0001\u0000"+ - "\u0000\u0000\u12e0\u12e1\u0007\n\u0000\u0000\u12e1\u12e2\u0007\u0007\u0000"+ - "\u0000\u12e2\u12e3\u0007\f\u0000\u0000\u12e3\u03a2\u0001\u0000\u0000\u0000"+ - "\u12e4\u12e5\u0007\r\u0000\u0000\u12e5\u12e6\u0007\u0013\u0000\u0000\u12e6"+ - "\u12e7\u0007\u0016\u0000\u0000\u12e7\u12e8\u0007\u0010\u0000\u0000\u12e8"+ - "\u12e9\u0007\u0011\u0000\u0000\u12e9\u12ea\u0007\u0007\u0000\u0000\u12ea"+ - "\u12eb\u0007\n\u0000\u0000\u12eb\u12ec\u0007\t\u0000\u0000\u12ec\u03a4"+ - "\u0001\u0000\u0000\u0000\u12ed\u12ee\u0007\t\u0000\u0000\u12ee\u12ef\u0007"+ - "\u000e\u0000\u0000\u12ef\u12f0\u0007\u0014\u0000\u0000\u12f0\u12f1\u0007"+ - "\n\u0000\u0000\u12f1\u12f2\u0007\u000f\u0000\u0000\u12f2\u12f3\u0007\u0005"+ - "\u0000\u0000\u12f3\u12f4\u0007\t\u0000\u0000\u12f4\u03a6\u0001\u0000\u0000"+ - "\u0000\u12f5\u12f6\u0007\u0018\u0000\u0000\u12f6\u12f7\u0007\r\u0000\u0000"+ - "\u12f7\u12f8\u0007\u0013\u0000\u0000\u12f8\u12f9\u0007\u000e\u0000\u0000"+ - "\u12f9\u12fa\u0007\n\u0000\u0000\u12fa\u12fb\u0007\f\u0000\u0000\u12fb"+ - "\u12fc\u0007\u0016\u0000\u0000\u12fc\u12fd\u0007\r\u0000\u0000\u12fd\u12fe"+ - "\u0007\n\u0000\u0000\u12fe\u12ff\u0007\t\u0000\u0000\u12ff\u03a8\u0001"+ - "\u0000\u0000\u0000\u1300\u1301\u0007\u0011\u0000\u0000\u1301\u1302\u0007"+ - "\u0007\u0000\u0000\u1302\u1303\u0007\u0018\u0000\u0000\u1303\u1304\u0007"+ - "\u0016\u0000\u0000\u1304\u1305\u0007\u0010\u0000\u0000\u1305\u03aa\u0001"+ - "\u0000\u0000\u0000\u1306\u1307\u0007\t\u0000\u0000\u1307\u1308\u0007\u0016"+ - "\u0000\u0000\u1308\u1309\u0007\u0018\u0000\u0000\u1309\u130a\u0007\u0018"+ - "\u0000\u0000\u130a\u130b\u0007\u0013\u0000\u0000\u130b\u130c\u0007\r\u0000"+ - "\u0000\u130c\u130d\u0007\u0010\u0000\u0000\u130d\u03ac\u0001\u0000\u0000"+ - "\u0000\u130e\u130f\u0007\u0018\u0000\u0000\u130f\u1310\u0007\u0005\u0000"+ - "\u0000\u1310\u1311\u0007\r\u0000\u0000\u1311\u1312\u0007\u0005\u0000\u0000"+ - "\u1312\u1313\u0007\u0006\u0000\u0000\u1313\u1314\u0007\u0006\u0000\u0000"+ - "\u1314\u1315\u0007\n\u0000\u0000\u1315\u1316\u0007\u0006\u0000\u0000\u1316"+ - "\u03ae\u0001\u0000\u0000\u0000\u1317\u1318\u0007\t\u0000\u0000\u1318\u1319"+ - "\u0007\u001d\u0000\u0000\u1319\u131a\u0007\u0006\u0000\u0000\u131a\u03b0"+ - "\u0001\u0000\u0000\u0000\u131b\u131c\u0007\f\u0000\u0000\u131c\u131d\u0007"+ - "\n\u0000\u0000\u131d\u131e\u0007\u0018\u0000\u0000\u131e\u131f\u0007\n"+ - "\u0000\u0000\u131f\u1320\u0007\u0007\u0000\u0000\u1320\u1321\u0007\f\u0000"+ - "\u0000\u1321\u1322\u0007\t\u0000\u0000\u1322\u03b2\u0001\u0000\u0000\u0000"+ - "\u1323\u1324\u0007\u0013\u0000\u0000\u1324\u1325\u0007\u001b\u0000\u0000"+ - "\u1325\u1326\u0007\n\u0000\u0000\u1326\u1327\u0007\r\u0000\u0000\u1327"+ - "\u1328\u0007\r\u0000\u0000\u1328\u1329\u0007\u0011\u0000\u0000\u1329\u132a"+ - "\u0007\f\u0000\u0000\u132a\u132b\u0007\u0011\u0000\u0000\u132b\u132c\u0007"+ - "\u0007\u0000\u0000\u132c\u132d\u0007\u0017\u0000\u0000\u132d\u03b4\u0001"+ - "\u0000\u0000\u0000\u132e\u132f\u0007\u000e\u0000\u0000\u132f\u1330\u0007"+ - "\u0013\u0000\u0000\u1330\u1331\u0007\u0007\u0000\u0000\u1331\u1332\u0007"+ - "\u0019\u0000\u0000\u1332\u1333\u0007\u0006\u0000\u0000\u1333\u1334\u0007"+ - "\u0011\u0000\u0000\u1334\u1335\u0007\u000e\u0000\u0000\u1335\u1336\u0007"+ - "\u0010\u0000\u0000\u1336\u03b6\u0001\u0000\u0000\u0000\u1337\u1338\u0007"+ - "\t\u0000\u0000\u1338\u1339\u0007\u0015\u0000\u0000\u1339\u133a\u0007\u0011"+ - "\u0000\u0000\u133a\u133b\u0007\u0018\u0000\u0000\u133b\u03b8\u0001\u0000"+ - "\u0000\u0000\u133c\u133d\u0007\u0006\u0000\u0000\u133d\u133e\u0007\u0013"+ - "\u0000\u0000\u133e\u133f\u0007\u000e\u0000\u0000\u133f\u1340\u0007\u0015"+ - "\u0000\u0000\u1340\u1341\u0007\n\u0000\u0000\u1341\u1342\u0007\f\u0000"+ - "\u0000\u1342\u03ba\u0001\u0000\u0000\u0000\u1343\u1344\u0007\u0010\u0000"+ - "\u0000\u1344\u1345\u0007\u0011\u0000\u0000\u1345\u1346\u0007\n\u0000\u0000"+ - "\u1346\u1347\u0007\t\u0000\u0000\u1347\u03bc\u0001\u0000\u0000\u0000\u1348"+ - "\u1349\u0007\r\u0000\u0000\u1349\u134a\u0007\u0013\u0000\u0000\u134a\u134b"+ - "\u0007\u0006\u0000\u0000\u134b\u134c\u0007\u0006\u0000\u0000\u134c\u134d"+ - "\u0007\u0016\u0000\u0000\u134d\u134e\u0007\u0018\u0000\u0000\u134e\u03be"+ - "\u0001\u0000\u0000\u0000\u134f\u1350\u0007\u000e\u0000\u0000\u1350\u1351"+ - "\u0007\u0016\u0000\u0000\u1351\u1352\u0007\u0012\u0000\u0000\u1352\u1353"+ - "\u0007\n\u0000\u0000\u1353\u03c0\u0001\u0000\u0000\u0000\u1354\u1355\u0007"+ - "\u0017\u0000\u0000\u1355\u1356\u0007\r\u0000\u0000\u1356\u1357\u0007\u0013"+ - "\u0000\u0000\u1357\u1358\u0007\u0016\u0000\u0000\u1358\u1359\u0007\u0018"+ - "\u0000\u0000\u1359\u135a\u0007\u0011\u0000\u0000\u135a\u135b\u0007\u0007"+ - "\u0000\u0000\u135b\u135c\u0007\u0017\u0000\u0000\u135c\u03c2\u0001\u0000"+ - "\u0000\u0000\u135d\u135e\u0007\t\u0000\u0000\u135e\u135f\u0007\n\u0000"+ - "\u0000\u135f\u1360\u0007\u0010\u0000\u0000\u1360\u1361\u0007\t\u0000\u0000"+ - "\u1361\u03c4\u0001\u0000\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"+ - "\u1368\u0007\t\u0000\u0000\u1368\u1369\u0007\u0005\u0000\u0000\u1369\u136a"+ - "\u0007\u000f\u0000\u0000\u136a\u136b\u0007\u0018\u0000\u0000\u136b\u136c"+ - "\u0007\u0006\u0000\u0000\u136c\u136d\u0007\n\u0000\u0000\u136d\u03c6\u0001"+ - "\u0000\u0000\u0000\u136e\u136f\u0007\u0013\u0000\u0000\u136f\u1370\u0007"+ - "\r\u0000\u0000\u1370\u1371\u0007\f\u0000\u0000\u1371\u1372\u0007\u0011"+ - "\u0000\u0000\u1372\u1373\u0007\u0007\u0000\u0000\u1373\u1374\u0007\u0005"+ - "\u0000\u0000\u1374\u1375\u0007\u0006\u0000\u0000\u1375\u1376\u0007\u0011"+ - "\u0000\u0000\u1376\u1377\u0007\u0010\u0000\u0000\u1377\u1378\u0007\b\u0000"+ - "\u0000\u1378\u03c8\u0001\u0000\u0000\u0000\u1379\u137a\u0007\u001a\u0000"+ - "\u0000\u137a\u137b\u0007\u000f\u0000\u0000\u137b\u137c\u0007\u0006\u0000"+ - "\u0000\u137c\u137d\u0007\u0010\u0000\u0000\u137d\u137e\u0007\u0005\u0000"+ - "\u0000\u137e\u137f\u0007\u0012\u0000\u0000\u137f\u1380\u0007\u0006\u0000"+ - "\u0000\u1380\u1381\u0007\n\u0000\u0000\u1381\u03ca\u0001\u0000\u0000\u0000"+ - "\u1382\u1383\u0007\u000e\u0000\u0000\u1383\u1384\u0007\u0013\u0000\u0000"+ - "\u1384\u1385\u0007\u0006\u0000\u0000\u1385\u1386\u0007\u0016\u0000\u0000"+ - "\u1386\u1387\u0007\u000f\u0000\u0000\u1387\u1388\u0007\u0007\u0000\u0000"+ - "\u1388\u1389\u0007\t\u0000\u0000\u1389\u03cc\u0001\u0000\u0000\u0000\u138a"+ - "\u138b\u0007\u001a\u0000\u0000\u138b\u138c\u0007\u000f\u0000\u0000\u138c"+ - "\u138d\u0007\u0006\u0000\u0000\u138d\u138e\u0007\u0007\u0000\u0000\u138e"+ - "\u138f\u0007\u0005\u0000\u0000\u138f\u1390\u0007\u000f\u0000\u0000\u1390"+ - "\u1391\u0007\n\u0000\u0000\u1391\u1392\u0007\t\u0000\u0000\u1392\u1393"+ - "\u0007\u0018\u0000\u0000\u1393\u1394\u0007\u0005\u0000\u0000\u1394\u1395"+ - "\u0007\u000e\u0000\u0000\u1395\u1396\u0007\n\u0000\u0000\u1396\u1397\u0007"+ - "\t\u0000\u0000\u1397\u03ce\u0001\u0000\u0000\u0000\u1398\u1399\u0007\r"+ - "\u0000\u0000\u1399\u139a\u0007\u0013\u0000\u0000\u139a\u139b\u0007\u001c"+ - "\u0000\u0000\u139b\u139c\u0007\u0010\u0000\u0000\u139c\u139d\u0007\b\u0000"+ - "\u0000\u139d\u139e\u0007\u0018\u0000\u0000\u139e\u139f\u0007\n\u0000\u0000"+ - "\u139f\u03d0\u0001\u0000\u0000\u0000\u13a0\u13a1\u0007\u0007\u0000\u0000"+ - "\u13a1\u13a2\u0007\u0013\u0000\u0000\u13a2\u13a3\u0007\r\u0000\u0000\u13a3"+ - "\u13a4\u0007\u000f\u0000\u0000\u13a4\u13a5\u0007\u0005\u0000\u0000\u13a5"+ - "\u13a6\u0007\u0006\u0000\u0000\u13a6\u13a7\u0007\u0011\u0000\u0000\u13a7"+ - "\u13a8\u0007\u000b\u0000\u0000\u13a8\u13a9\u0007\n\u0000\u0000\u13a9\u13aa"+ - "\u0007\f\u0000\u0000\u13aa\u03d2\u0001\u0000\u0000\u0000\u13ab\u13ac\u0007"+ - "\u001c\u0000\u0000\u13ac\u13ad\u0007\u0011\u0000\u0000\u13ad\u13ae\u0007"+ - "\u0010\u0000\u0000\u13ae\u13af\u0007\u0014\u0000\u0000\u13af\u13b0\u0007"+ - "\u0011\u0000\u0000\u13b0\u13b1\u0007\u0007\u0000\u0000\u13b1\u03d4\u0001"+ - "\u0000\u0000\u0000\u13b2\u13b3\u0007\u0019\u0000\u0000\u13b3\u13b4\u0007"+ - "\u0011\u0000\u0000\u13b4\u13b5\u0007\u0006\u0000\u0000\u13b5\u13b6\u0007"+ - "\u0010\u0000\u0000\u13b6\u13b7\u0007\n\u0000\u0000\u13b7\u13b8\u0007\r"+ - "\u0000\u0000\u13b8\u03d6\u0001\u0000\u0000\u0000\u13b9\u13ba\u0007\u0017"+ - "\u0000\u0000\u13ba\u13bb\u0007\r\u0000\u0000\u13bb\u13bc\u0007\u0013\u0000"+ - "\u0000\u13bc\u13bd\u0007\u0016\u0000\u0000\u13bd\u13be\u0007\u0018\u0000"+ - "\u0000\u13be\u13bf\u0007\t\u0000\u0000\u13bf\u03d8\u0001\u0000\u0000\u0000"+ - "\u13c0\u13c1\u0007\u0013\u0000\u0000\u13c1\u13c2\u0007\u0010\u0000\u0000"+ - "\u13c2\u13c3\u0007\u0014\u0000\u0000\u13c3\u13c4\u0007\n\u0000\u0000\u13c4"+ - "\u13c5\u0007\r\u0000\u0000\u13c5\u13c6\u0007\t\u0000\u0000\u13c6\u03da"+ - "\u0001\u0000\u0000\u0000\u13c7\u13c8\u0007\u0007\u0000\u0000\u13c8\u13c9"+ - "\u0007\u0019\u0000\u0000\u13c9\u13ca\u0007\u000e\u0000\u0000\u13ca\u03dc"+ - "\u0001\u0000\u0000\u0000\u13cb\u13cc\u0007\u0007\u0000\u0000\u13cc\u13cd"+ - "\u0007\u0019\u0000\u0000\u13cd\u13ce\u0007\f\u0000\u0000\u13ce\u03de\u0001"+ - "\u0000\u0000\u0000\u13cf\u13d0\u0007\u0007\u0000\u0000\u13d0\u13d1\u0007"+ - "\u0019\u0000\u0000\u13d1\u13d2\u0007\u0015\u0000\u0000\u13d2\u13d3\u0007"+ - "\u000e\u0000\u0000\u13d3\u03e0\u0001\u0000\u0000\u0000\u13d4\u13d5\u0007"+ - "\u0007\u0000\u0000\u13d5\u13d6\u0007\u0019\u0000\u0000\u13d6\u13d7\u0007"+ - "\u0015\u0000\u0000\u13d7\u13d8\u0007\f\u0000\u0000\u13d8\u03e2\u0001\u0000"+ - "\u0000\u0000\u13d9\u13da\u0007\u0016\u0000\u0000\u13da\u13db\u0007\n\u0000"+ - "\u0000\u13db\u13dc\u0007\t\u0000\u0000\u13dc\u13dd\u0007\u000e\u0000\u0000"+ - "\u13dd\u13de\u0007\u0005\u0000\u0000\u13de\u13df\u0007\u0018\u0000\u0000"+ - "\u13df\u13e0\u0007\n\u0000\u0000\u13e0\u03e4\u0001\u0000\u0000\u0000\u13e1"+ - "\u13e2\u0007\u001b\u0000\u0000\u13e2\u13e3\u0007\u0011\u0000\u0000\u13e3"+ - "\u13e4\u0007\n\u0000\u0000\u13e4\u13e5\u0007\u001c\u0000\u0000\u13e5\u13e6"+ - "\u0007\t\u0000\u0000\u13e6\u03e6\u0001\u0000\u0000\u0000\u13e7\u13e8\u0007"+ - "\u0007\u0000\u0000\u13e8\u13e9\u0007\u0013\u0000\u0000\u13e9\u13ea\u0007"+ - "\r\u0000\u0000\u13ea\u13eb\u0007\u000f\u0000\u0000\u13eb\u13ec\u0007\u0005"+ - "\u0000\u0000\u13ec\u13ed\u0007\u0006\u0000\u0000\u13ed\u13ee\u0007\u0011"+ - "\u0000\u0000\u13ee\u13ef\u0007\u000b\u0000\u0000\u13ef\u13f0\u0007\n\u0000"+ - "\u0000\u13f0\u03e8\u0001\u0000\u0000\u0000\u13f1\u13f2\u0007\f\u0000\u0000"+ - "\u13f2\u13f3\u0007\u0016\u0000\u0000\u13f3\u13f4\u0007\u000f\u0000\u0000"+ - "\u13f4\u13f5\u0007\u0018\u0000\u0000\u13f5\u03ea\u0001\u0000\u0000\u0000"+ - "\u13f6\u13f7\u0007\u0018\u0000\u0000\u13f7\u13f8\u0007\r\u0000\u0000\u13f8"+ - "\u13f9\u0007\u0011\u0000\u0000\u13f9\u13fa\u0007\u0007\u0000\u0000\u13fa"+ - "\u13fb\u0007\u0010\u0000\u0000\u13fb\u13fc\u0005_\u0000\u0000\u13fc\u13fd"+ - "\u0007\t\u0000\u0000\u13fd\u13fe\u0007\u0010\u0000\u0000\u13fe\u13ff\u0007"+ - "\r\u0000\u0000\u13ff\u1400\u0007\u0011\u0000\u0000\u1400\u1401\u0007\u000e"+ - "\u0000\u0000\u1401\u1402\u0007\u0010\u0000\u0000\u1402\u1403\u0005_\u0000"+ - "\u0000\u1403\u1404\u0007\u0018\u0000\u0000\u1404\u1405\u0007\u0005\u0000"+ - "\u0000\u1405\u1406\u0007\r\u0000\u0000\u1406\u1407\u0007\u0005\u0000\u0000"+ - "\u1407\u1408\u0007\u000f\u0000\u0000\u1408\u1409\u0007\t\u0000\u0000\u1409"+ - "\u03ec\u0001\u0000\u0000\u0000\u140a\u140b\u0007\u001b\u0000\u0000\u140b"+ - "\u140c\u0007\u0005\u0000\u0000\u140c\u140d\u0007\r\u0000\u0000\u140d\u140e"+ - "\u0007\u0011\u0000\u0000\u140e\u140f\u0007\u0005\u0000\u0000\u140f\u1410"+ - "\u0007\u0012\u0000\u0000\u1410\u1411\u0007\u0006\u0000\u0000\u1411\u1412"+ - "\u0007\n\u0000\u0000\u1412\u1413\u0005_\u0000\u0000\u1413\u1414\u0007"+ - "\u000e\u0000\u0000\u1414\u1415\u0007\u0013\u0000\u0000\u1415\u1416\u0007"+ - "\u0007\u0000\u0000\u1416\u1417\u0007\u0019\u0000\u0000\u1417\u1418\u0007"+ - "\u0006\u0000\u0000\u1418\u1419\u0007\u0011\u0000\u0000\u1419\u141a\u0007"+ - "\u000e\u0000\u0000\u141a\u141b\u0007\u0010\u0000\u0000\u141b\u03ee\u0001"+ - "\u0000\u0000\u0000\u141c\u141d\u0007\n\u0000\u0000\u141d\u141e\u0007\r"+ - "\u0000\u0000\u141e\u141f\u0007\r\u0000\u0000\u141f\u1420\u0007\u0013\u0000"+ - "\u0000\u1420\u1421\u0007\r\u0000\u0000\u1421\u03f0\u0001\u0000\u0000\u0000"+ - "\u1422\u1423\u0007\u0016\u0000\u0000\u1423\u1424\u0007\t\u0000\u0000\u1424"+ - "\u1425\u0007\n\u0000\u0000\u1425\u1426\u0005_\u0000\u0000\u1426\u1427"+ - "\u0007\u001b\u0000\u0000\u1427\u1428\u0007\u0005\u0000\u0000\u1428\u1429"+ - "\u0007\r\u0000\u0000\u1429\u142a\u0007\u0011\u0000\u0000\u142a\u142b\u0007"+ - "\u0005\u0000\u0000\u142b\u142c\u0007\u0012\u0000\u0000\u142c\u142d\u0007"+ - "\u0006\u0000\u0000\u142d\u142e\u0007\n\u0000\u0000\u142e\u03f2\u0001\u0000"+ - "\u0000\u0000\u142f\u1430\u0007\u0016\u0000\u0000\u1430\u1431\u0007\t\u0000"+ - "\u0000\u1431\u1432\u0007\n\u0000\u0000\u1432\u1433\u0005_\u0000\u0000"+ - "\u1433\u1434\u0007\u000e\u0000\u0000\u1434\u1435\u0007\u0013\u0000\u0000"+ - "\u1435\u1436\u0007\u0006\u0000\u0000\u1436\u1437\u0007\u0016\u0000\u0000"+ - "\u1437\u1438\u0007\u000f\u0000\u0000\u1438\u1439\u0007\u0007\u0000\u0000"+ - "\u1439\u03f4\u0001\u0000\u0000\u0000\u143a\u143b\u0007\u0005\u0000\u0000"+ - "\u143b\u143c\u0007\u0006\u0000\u0000\u143c\u143d\u0007\u0011\u0000\u0000"+ - "\u143d\u143e\u0007\u0005\u0000\u0000\u143e\u143f\u0007\t\u0000\u0000\u143f"+ - "\u03f6\u0001\u0000\u0000\u0000\u1440\u1441\u0007\u000e\u0000\u0000\u1441"+ - "\u1442\u0007\u0013\u0000\u0000\u1442\u1443\u0007\u0007\u0000\u0000\u1443"+ - "\u1444\u0007\t\u0000\u0000\u1444\u1445\u0007\u0010\u0000\u0000\u1445\u1446"+ - "\u0007\u0005\u0000\u0000\u1446\u1447\u0007\u0007\u0000\u0000\u1447\u1448"+ - "\u0007\u0010\u0000\u0000\u1448\u03f8\u0001\u0000\u0000\u0000\u1449\u144a"+ - "\u0007\u0018\u0000\u0000\u144a\u144b\u0007\n\u0000\u0000\u144b\u144c\u0007"+ - "\r\u0000\u0000\u144c\u144d\u0007\u0019\u0000\u0000\u144d\u144e\u0007\u0013"+ - "\u0000\u0000\u144e\u144f\u0007\r\u0000\u0000\u144f\u1450\u0007\u000f\u0000"+ - "\u0000\u1450\u03fa\u0001\u0000\u0000\u0000\u1451\u1452\u0007\u0017\u0000"+ - "\u0000\u1452\u1453\u0007\n\u0000\u0000\u1453\u1454\u0007\u0010\u0000\u0000"+ - "\u1454\u03fc\u0001\u0000\u0000\u0000\u1455\u1456\u0007\f\u0000\u0000\u1456"+ - "\u1457\u0007\u0011\u0000\u0000\u1457\u1458\u0007\u0005\u0000\u0000\u1458"+ - "\u1459\u0007\u0017\u0000\u0000\u1459\u145a\u0007\u0007\u0000\u0000\u145a"+ - "\u145b\u0007\u0013\u0000\u0000\u145b\u145c\u0007\t\u0000\u0000\u145c\u145d"+ - "\u0007\u0010\u0000\u0000\u145d\u145e\u0007\u0011\u0000\u0000\u145e\u145f"+ - "\u0007\u000e\u0000\u0000\u145f\u1460\u0007\t\u0000\u0000\u1460\u03fe\u0001"+ - "\u0000\u0000\u0000\u1461\u1462\u0007\t\u0000\u0000\u1462\u1463\u0007\u0010"+ - "\u0000\u0000\u1463\u1464\u0007\u0005\u0000\u0000\u1464\u1465\u0007\u000e"+ - "\u0000\u0000\u1465\u1466\u0007\u0015\u0000\u0000\u1466\u1467\u0007\n\u0000"+ - "\u0000\u1467\u1468\u0007\f\u0000\u0000\u1468\u0400\u0001\u0000\u0000\u0000"+ - "\u1469\u146a\u0007\n\u0000\u0000\u146a\u146b\u0007\u0006\u0000\u0000\u146b"+ - "\u146c\u0007\t\u0000\u0000\u146c\u146d\u0007\u0011\u0000\u0000\u146d\u146e"+ - "\u0007\u0019\u0000\u0000\u146e\u0402\u0001\u0000\u0000\u0000\u146f\u1470"+ - "\u0007\u001c\u0000\u0000\u1470\u1471\u0007\u0014\u0000\u0000\u1471\u1472"+ - "\u0007\u0011\u0000\u0000\u1472\u1473\u0007\u0006\u0000\u0000\u1473\u1474"+ - "\u0007\n\u0000\u0000\u1474\u0404\u0001\u0000\u0000\u0000\u1475\u1476\u0007"+ - "\r\u0000\u0000\u1476\u1477\u0007\n\u0000\u0000\u1477\u1478\u0007\u001b"+ - "\u0000\u0000\u1478\u1479\u0007\n\u0000\u0000\u1479\u147a\u0007\r\u0000"+ - "\u0000\u147a\u147b\u0007\t\u0000\u0000\u147b\u147c\u0007\n\u0000\u0000"+ - "\u147c\u0406\u0001\u0000\u0000\u0000\u147d\u147e\u0007\u0019\u0000\u0000"+ - "\u147e\u147f\u0007\u0013\u0000\u0000\u147f\u1480\u0007\r\u0000\u0000\u1480"+ - "\u1481\u0007\n\u0000\u0000\u1481\u1482\u0007\u0005\u0000\u0000\u1482\u1483"+ - "\u0007\u000e\u0000\u0000\u1483\u1484\u0007\u0014\u0000\u0000\u1484\u0408"+ - "\u0001\u0000\u0000\u0000\u1485\u1486\u0007\t\u0000\u0000\u1486\u1487\u0007"+ - "\u0006\u0000\u0000\u1487\u1488\u0007\u0011\u0000\u0000\u1488\u1489\u0007"+ - "\u000e\u0000\u0000\u1489\u148a\u0007\n\u0000\u0000\u148a\u040a\u0001\u0000"+ - "\u0000\u0000\u148b\u148c\u0007\n\u0000\u0000\u148c\u148d\u0007\u001a\u0000"+ - "\u0000\u148d\u148e\u0007\u0011\u0000\u0000\u148e\u148f\u0007\u0010\u0000"+ - "\u0000\u148f\u040c\u0001\u0000\u0000\u0000\u1490\u1491\u0007\r\u0000\u0000"+ - "\u1491\u1492\u0007\n\u0000\u0000\u1492\u1493\u0007\u0010\u0000\u0000\u1493"+ - "\u1494\u0007\u0016\u0000\u0000\u1494\u1495\u0007\r\u0000\u0000\u1495\u1496"+ - "\u0007\u0007\u0000\u0000\u1496\u040e\u0001\u0000\u0000\u0000\u1497\u1498"+ - "\u0007\u001d\u0000\u0000\u1498\u1499\u0007\u0016\u0000\u0000\u1499\u149a"+ - "\u0007\n\u0000\u0000\u149a\u149b\u0007\r\u0000\u0000\u149b\u149c\u0007"+ - "\b\u0000\u0000\u149c\u0410\u0001\u0000\u0000\u0000\u149d\u149e\u0007\r"+ - "\u0000\u0000\u149e\u149f\u0007\u0005\u0000\u0000\u149f\u14a0\u0007\u0011"+ - "\u0000\u0000\u14a0\u14a1\u0007\t\u0000\u0000\u14a1\u14a2\u0007\n\u0000"+ - "\u0000\u14a2\u0412\u0001\u0000\u0000\u0000\u14a3\u14a4\u0007\t\u0000\u0000"+ - "\u14a4\u14a5\u0007\u001d\u0000\u0000\u14a5\u14a6\u0007\u0006\u0000\u0000"+ - "\u14a6\u14a7\u0007\t\u0000\u0000\u14a7\u14a8\u0007\u0010\u0000\u0000\u14a8"+ - "\u14a9\u0007\u0005\u0000\u0000\u14a9\u14aa\u0007\u0010\u0000\u0000\u14aa"+ - "\u14ab\u0007\n\u0000\u0000\u14ab\u0414\u0001\u0000\u0000\u0000\u14ac\u14ad"+ - "\u0007\f\u0000\u0000\u14ad\u14ae\u0007\n\u0000\u0000\u14ae\u14af\u0007"+ - "\u0012\u0000\u0000\u14af\u14b0\u0007\u0016\u0000\u0000\u14b0\u14b1\u0007"+ - "\u0017\u0000\u0000\u14b1\u0416\u0001\u0000\u0000\u0000\u14b2\u14b3\u0007"+ - "\u0006\u0000\u0000\u14b3\u14b4\u0007\u0013\u0000\u0000\u14b4\u14b5\u0007"+ - "\u0017\u0000\u0000\u14b5\u0418\u0001\u0000\u0000\u0000\u14b6\u14b7\u0007"+ - "\u0011\u0000\u0000\u14b7\u14b8\u0007\u0007\u0000\u0000\u14b8\u14b9\u0007"+ - "\u0019\u0000\u0000\u14b9\u14ba\u0007\u0013\u0000\u0000\u14ba\u041a\u0001"+ - "\u0000\u0000\u0000\u14bb\u14bc\u0007\u0007\u0000\u0000\u14bc\u14bd\u0007"+ - "\u0013\u0000\u0000\u14bd\u14be\u0007\u0010\u0000\u0000\u14be\u14bf\u0007"+ - "\u0011\u0000\u0000\u14bf\u14c0\u0007\u000e\u0000\u0000\u14c0\u14c1\u0007"+ - "\n\u0000\u0000\u14c1\u041c\u0001\u0000\u0000\u0000\u14c2\u14c3\u0007\u001c"+ - "\u0000\u0000\u14c3\u14c4\u0007\u0005\u0000\u0000\u14c4\u14c5\u0007\r\u0000"+ - "\u0000\u14c5\u14c6\u0007\u0007\u0000\u0000\u14c6\u14c7\u0007\u0011\u0000"+ - "\u0000\u14c7\u14c8\u0007\u0007\u0000\u0000\u14c8\u14c9\u0007\u0017\u0000"+ - "\u0000\u14c9\u041e\u0001\u0000\u0000\u0000\u14ca\u14cb\u0007\n\u0000\u0000"+ - "\u14cb\u14cc\u0007\u001a\u0000\u0000\u14cc\u14cd\u0007\u000e\u0000\u0000"+ - "\u14cd\u14ce\u0007\n\u0000\u0000\u14ce\u14cf\u0007\u0018\u0000\u0000\u14cf"+ - "\u14d0\u0007\u0010\u0000\u0000\u14d0\u14d1\u0007\u0011\u0000\u0000\u14d1"+ - "\u14d2\u0007\u0013\u0000\u0000\u14d2\u14d3\u0007\u0007\u0000\u0000\u14d3"+ - "\u0420\u0001\u0000\u0000\u0000\u14d4\u14d5\u0007\u0005\u0000\u0000\u14d5"+ - "\u14d6\u0007\t\u0000\u0000\u14d6\u14d7\u0007\t\u0000\u0000\u14d7\u14d8"+ - "\u0007\n\u0000\u0000\u14d8\u14d9\u0007\r\u0000\u0000\u14d9\u14da\u0007"+ - "\u0010\u0000\u0000\u14da\u0422\u0001\u0000\u0000\u0000\u14db\u14dc\u0007"+ - "\u0006\u0000\u0000\u14dc\u14dd\u0007\u0013\u0000\u0000\u14dd\u14de\u0007"+ - "\u0013\u0000\u0000\u14de\u14df\u0007\u0018\u0000\u0000\u14df\u0424\u0001"+ - "\u0000\u0000\u0000\u14e0\u14e1\u0007\u0013\u0000\u0000\u14e1\u14e2\u0007"+ - "\u0018\u0000\u0000\u14e2\u14e3\u0007\n\u0000\u0000\u14e3\u14e4\u0007\u0007"+ - "\u0000\u0000\u14e4\u0426\u0001\u0000\u0000\u0000\u14e5\u14e6\u0007\u0005"+ - "\u0000\u0000\u14e6\u14e7\u0007\u0012\u0000\u0000\u14e7\u14e8\u0007\t\u0000"+ - "\u0000\u14e8\u0428\u0001\u0000\u0000\u0000\u14e9\u14ea\u0007\u000e\u0000"+ - "\u0000\u14ea\u14eb\u0007\u0012\u0000\u0000\u14eb\u14ec\u0007\r\u0000\u0000"+ - "\u14ec\u14ed\u0007\u0010\u0000\u0000\u14ed\u042a\u0001\u0000\u0000\u0000"+ - "\u14ee\u14ef\u0007\u000e\u0000\u0000\u14ef\u14f0\u0007\n\u0000\u0000\u14f0"+ - "\u14f1\u0007\u0011\u0000\u0000\u14f1\u14f2\u0007\u0006\u0000\u0000\u14f2"+ - "\u042c\u0001\u0000\u0000\u0000\u14f3\u14f4\u0007\u000e\u0000\u0000\u14f4"+ - "\u14f5\u0007\n\u0000\u0000\u14f5\u14f6\u0007\u0011\u0000\u0000\u14f6\u14f7"+ - "\u0007\u0006\u0000\u0000\u14f7\u14f8\u0007\u0011\u0000\u0000\u14f8\u14f9"+ - "\u0007\u0007\u0000\u0000\u14f9\u14fa\u0007\u0017\u0000\u0000\u14fa\u042e"+ - "\u0001\u0000\u0000\u0000\u14fb\u14fc\u0007\f\u0000\u0000\u14fc\u14fd\u0007"+ - "\n\u0000\u0000\u14fd\u14fe\u0007\u0017\u0000\u0000\u14fe\u14ff\u0007\r"+ - "\u0000\u0000\u14ff\u1500\u0007\n\u0000\u0000\u1500\u1501\u0007\n\u0000"+ - "\u0000\u1501\u1502\u0007\t\u0000\u0000\u1502\u0430\u0001\u0000\u0000\u0000"+ - "\u1503\u1504\u0007\f\u0000\u0000\u1504\u1505\u0007\u0011\u0000\u0000\u1505"+ - "\u1506\u0007\u001b\u0000\u0000\u1506\u0432\u0001\u0000\u0000\u0000\u1507"+ - "\u1508\u0007\n\u0000\u0000\u1508\u1509\u0007\u001a\u0000\u0000\u1509\u150a"+ - "\u0007\u0018\u0000\u0000\u150a\u0434\u0001\u0000\u0000\u0000\u150b\u150c"+ - "\u0007\u0019\u0000\u0000\u150c\u150d\u0007\u0005\u0000\u0000\u150d\u150e"+ - "\u0007\u000e\u0000\u0000\u150e\u150f\u0007\u0010\u0000\u0000\u150f\u1510"+ - "\u0007\u0013\u0000\u0000\u1510\u1511\u0007\r\u0000\u0000\u1511\u1512\u0007"+ - "\u0011\u0000\u0000\u1512\u1513\u0007\u0005\u0000\u0000\u1513\u1514\u0007"+ - "\u0006\u0000\u0000\u1514\u0436\u0001\u0000\u0000\u0000\u1515\u1516\u0007"+ - "\u0019\u0000\u0000\u1516\u1517\u0007\u0006\u0000\u0000\u1517\u1518\u0007"+ - "\u0013\u0000\u0000\u1518\u1519\u0007\u0013\u0000\u0000\u1519\u151a\u0007"+ - "\r\u0000\u0000\u151a\u0438\u0001\u0000\u0000\u0000\u151b\u151c\u0007\u0017"+ - "\u0000\u0000\u151c\u151d\u0007\u000e\u0000\u0000\u151d\u151e\u0007\f\u0000"+ - "\u0000\u151e\u043a\u0001\u0000\u0000\u0000\u151f\u1520\u0007\u0006\u0000"+ - "\u0000\u1520\u1521\u0007\u000e\u0000\u0000\u1521\u1522\u0007\u000f\u0000"+ - "\u0000\u1522\u043c\u0001\u0000\u0000\u0000\u1523\u1524\u0007\u0006\u0000"+ - "\u0000\u1524\u1525\u0007\u0007\u0000\u0000\u1525\u043e\u0001\u0000\u0000"+ - "\u0000\u1526\u1527\u0007\u0006\u0000\u0000\u1527\u1528\u0007\u0013\u0000"+ - "\u0000\u1528\u1529\u0007\u0017\u0000\u0000\u1529\u152a\u00051\u0000\u0000"+ - "\u152a\u152b\u00050\u0000\u0000\u152b\u0440\u0001\u0000\u0000\u0000\u152c"+ - "\u152d\u0007\u000f\u0000\u0000\u152d\u152e\u0007\u0011\u0000\u0000\u152e"+ - "\u152f\u0007\u0007\u0000\u0000\u152f\u1530\u0005_\u0000\u0000\u1530\u1531"+ - "\u0007\t\u0000\u0000\u1531\u1532\u0007\u000e\u0000\u0000\u1532\u1533\u0007"+ - "\u0005\u0000\u0000\u1533\u1534\u0007\u0006\u0000\u0000\u1534\u1535\u0007"+ - "\n\u0000\u0000\u1535\u0442\u0001\u0000\u0000\u0000\u1536\u1537\u0007\u000f"+ - "\u0000\u0000\u1537\u1538\u0007\u0013\u0000\u0000\u1538\u1539\u0007\f\u0000"+ - "\u0000\u1539\u0444\u0001\u0000\u0000\u0000\u153a\u153b\u0007\u0018\u0000"+ - "\u0000\u153b\u153c\u0007\u0011\u0000\u0000\u153c\u0446\u0001\u0000\u0000"+ - "\u0000\u153d\u153e\u0007\u0018\u0000\u0000\u153e\u153f\u0007\u0013\u0000"+ - "\u0000\u153f\u1540\u0007\u001c\u0000\u0000\u1540\u1541\u0007\n\u0000\u0000"+ - "\u1541\u1542\u0007\r\u0000\u0000\u1542\u0448\u0001\u0000\u0000\u0000\u1543"+ - "\u1544\u0007\r\u0000\u0000\u1544\u1545\u0007\u0005\u0000\u0000\u1545\u1546"+ - "\u0007\f\u0000\u0000\u1546\u1547\u0007\u0011\u0000\u0000\u1547\u1548\u0007"+ - "\u0005\u0000\u0000\u1548\u1549\u0007\u0007\u0000\u0000\u1549\u154a\u0007"+ - "\t\u0000\u0000\u154a\u044a\u0001\u0000\u0000\u0000\u154b\u154c\u0007\r"+ - "\u0000\u0000\u154c\u154d\u0007\u0013\u0000\u0000\u154d\u154e\u0007\u0016"+ - "\u0000\u0000\u154e\u154f\u0007\u0007\u0000\u0000\u154f\u1550\u0007\f\u0000"+ - "\u0000\u1550\u044c\u0001\u0000\u0000\u0000\u1551\u1552\u0007\t\u0000\u0000"+ - "\u1552\u1553\u0007\u000e\u0000\u0000\u1553\u1554\u0007\u0005\u0000\u0000"+ - "\u1554\u1555\u0007\u0006\u0000\u0000\u1555\u1556\u0007\n\u0000\u0000\u1556"+ - "\u044e\u0001\u0000\u0000\u0000\u1557\u1558\u0007\t\u0000\u0000\u1558\u1559"+ - "\u0007\u0011\u0000\u0000\u1559\u155a\u0007\u0017\u0000\u0000\u155a\u155b"+ - "\u0007\u0007\u0000\u0000\u155b\u0450\u0001\u0000\u0000\u0000\u155c\u155d"+ - "\u0007\t\u0000\u0000\u155d\u155e\u0007\u001d\u0000\u0000\u155e\u155f\u0007"+ - "\r\u0000\u0000\u155f\u1560\u0007\u0010\u0000\u0000\u1560\u0452\u0001\u0000"+ - "\u0000\u0000\u1561\u1562\u0007\u0010\u0000\u0000\u1562\u1563\u0007\r\u0000"+ - "\u0000\u1563\u1564\u0007\u0011\u0000\u0000\u1564\u1565\u0007\u000f\u0000"+ - "\u0000\u1565\u1566\u0005_\u0000\u0000\u1566\u1567\u0007\t\u0000\u0000"+ - "\u1567\u1568\u0007\u000e\u0000\u0000\u1568\u1569\u0007\u0005\u0000\u0000"+ - "\u1569\u156a\u0007\u0006\u0000\u0000\u156a\u156b\u0007\n\u0000\u0000\u156b"+ - "\u0454\u0001\u0000\u0000\u0000\u156c\u156d\u0007\u0010\u0000\u0000\u156d"+ - "\u156e\u0007\r\u0000\u0000\u156e\u156f\u0007\u0016\u0000\u0000\u156f\u1570"+ - "\u0007\u0007\u0000\u0000\u1570\u1571\u0007\u000e\u0000\u0000\u1571\u0456"+ - "\u0001\u0000\u0000\u0000\u1572\u1573\u0007\u001c\u0000\u0000\u1573\u1574"+ - "\u0007\u0011\u0000\u0000\u1574\u1575\u0007\f\u0000\u0000\u1575\u1576\u0007"+ - "\u0010\u0000\u0000\u1576\u1577\u0007\u0014\u0000\u0000\u1577\u1578\u0005"+ - "_\u0000\u0000\u1578\u1579\u0007\u0012\u0000\u0000\u1579\u157a\u0007\u0016"+ - "\u0000\u0000\u157a\u157b\u0007\u000e\u0000\u0000\u157b\u157c\u0007\u0015"+ - "\u0000\u0000\u157c\u157d\u0007\n\u0000\u0000\u157d\u157e\u0007\u0010\u0000"+ - "\u0000\u157e\u0458\u0001\u0000\u0000\u0000\u157f\u1580\u0007\r\u0000\u0000"+ - "\u1580\u1581\u0007\u0005\u0000\u0000\u1581\u1582\u0007\u0007\u0000\u0000"+ - "\u1582\u1583\u0007\f\u0000\u0000\u1583\u1584\u0007\u0013\u0000\u0000\u1584"+ - "\u1585\u0007\u000f\u0000\u0000\u1585\u045a\u0001\u0000\u0000\u0000\u1586"+ - "\u1587\u0007\t\u0000\u0000\u1587\u1588\u0007\n\u0000\u0000\u1588\u1589"+ - "\u0007\u0010\u0000\u0000\u1589\u158a\u0007\t\u0000\u0000\u158a\u158b\u0007"+ - "\n\u0000\u0000\u158b\u158c\u0007\n\u0000\u0000\u158c\u158d\u0007\f\u0000"+ - "\u0000\u158d\u045c\u0001\u0000\u0000\u0000\u158e\u158f\u0007\u0005\u0000"+ - "\u0000\u158f\u1590\u0007\u000e\u0000\u0000\u1590\u1591\u0007\u0013\u0000"+ - "\u0000\u1591\u1592\u0007\t\u0000\u0000\u1592\u045e\u0001\u0000\u0000\u0000"+ - "\u1593\u1594\u0007\u0005\u0000\u0000\u1594\u1595\u0007\u000e\u0000\u0000"+ - "\u1595\u1596\u0007\u0013\u0000\u0000\u1596\u1597\u0007\t\u0000\u0000\u1597"+ - "\u1598\u0007\f\u0000\u0000\u1598\u0460\u0001\u0000\u0000\u0000\u1599\u159a"+ - "\u0007\u0005\u0000\u0000\u159a\u159b\u0007\t\u0000\u0000\u159b\u159c\u0007"+ - "\u0011\u0000\u0000\u159c\u159d\u0007\u0007\u0000\u0000\u159d\u0462\u0001"+ - "\u0000\u0000\u0000\u159e\u159f\u0007\u0005\u0000\u0000\u159f\u15a0\u0007"+ - "\t\u0000\u0000\u15a0\u15a1\u0007\u0011\u0000\u0000\u15a1\u15a2\u0007\u0007"+ - "\u0000\u0000\u15a2\u15a3\u0007\f\u0000\u0000\u15a3\u0464\u0001\u0000\u0000"+ - "\u0000\u15a4\u15a5\u0007\u0005\u0000\u0000\u15a5\u15a6\u0007\u0010\u0000"+ - "\u0000\u15a6\u15a7\u0007\u0005\u0000\u0000\u15a7\u15a8\u0007\u0007\u0000"+ - "\u0000\u15a8\u0466\u0001\u0000\u0000\u0000\u15a9\u15aa\u0007\u0005\u0000"+ - "\u0000\u15aa\u15ab\u0007\u0010\u0000\u0000\u15ab\u15ac\u0007\u0005\u0000"+ - "\u0000\u15ac\u15ad\u0007\u0007\u0000\u0000\u15ad\u15ae\u0007\f\u0000\u0000"+ - "\u15ae\u0468\u0001\u0000\u0000\u0000\u15af\u15b0\u0007\u0005\u0000\u0000"+ - "\u15b0\u15b1\u0007\u0010\u0000\u0000\u15b1\u15b2\u0007\u0005\u0000\u0000"+ - "\u15b2\u15b3\u0007\u0007\u0000\u0000\u15b3\u15b4\u00052\u0000\u0000\u15b4"+ - "\u046a\u0001\u0000\u0000\u0000\u15b5\u15b6\u0007\u0005\u0000\u0000\u15b6"+ - "\u15b7\u0007\u0010\u0000\u0000\u15b7\u15b8\u0007\u0005\u0000\u0000\u15b8"+ - "\u15b9\u0007\u0007\u0000\u0000\u15b9\u15ba\u00052\u0000\u0000\u15ba\u15bb"+ - "\u0007\f\u0000\u0000\u15bb\u046c\u0001\u0000\u0000\u0000\u15bc\u15bd\u0007"+ - "\u000e\u0000\u0000\u15bd\u15be\u0007\u0013\u0000\u0000\u15be\u15bf\u0007"+ - "\t\u0000\u0000\u15bf\u046e\u0001\u0000\u0000\u0000\u15c0\u15c1\u0007\u000e"+ - "\u0000\u0000\u15c1\u15c2\u0007\u0013\u0000\u0000\u15c2\u15c3\u0007\t\u0000"+ - "\u0000\u15c3\u15c4\u0007\f\u0000\u0000\u15c4\u0470\u0001\u0000\u0000\u0000"+ - "\u15c5\u15c6\u0007\u000e\u0000\u0000\u15c6\u15c7\u0007\u0013\u0000\u0000"+ - "\u15c7\u15c8\u0007\u0010\u0000\u0000\u15c8\u0472\u0001\u0000\u0000\u0000"+ - "\u15c9\u15ca\u0007\u000e\u0000\u0000\u15ca\u15cb\u0007\u0013\u0000\u0000"+ - "\u15cb\u15cc\u0007\u0010\u0000\u0000\u15cc\u15cd\u0007\f\u0000\u0000\u15cd"+ - "\u0474\u0001\u0000\u0000\u0000\u15ce\u15cf\u0007\t\u0000\u0000\u15cf\u15d0"+ - "\u0007\u0011\u0000\u0000\u15d0\u15d1\u0007\u0007\u0000\u0000\u15d1\u0476"+ - "\u0001\u0000\u0000\u0000\u15d2\u15d3\u0007\t\u0000\u0000\u15d3\u15d4\u0007"+ - "\u0011\u0000\u0000\u15d4\u15d5\u0007\u0007\u0000\u0000\u15d5\u15d6\u0007"+ - "\f\u0000\u0000\u15d6\u0478\u0001\u0000\u0000\u0000\u15d7\u15d8\u0007\u0010"+ - "\u0000\u0000\u15d8\u15d9\u0007\u0005\u0000\u0000\u15d9\u15da\u0007\u0007"+ - "\u0000\u0000\u15da\u047a\u0001\u0000\u0000\u0000\u15db\u15dc\u0007\u0010"+ - "\u0000\u0000\u15dc\u15dd\u0007\u0005\u0000\u0000\u15dd\u15de\u0007\u0007"+ - "\u0000\u0000\u15de\u15df\u0007\f\u0000\u0000\u15df\u047c\u0001\u0000\u0000"+ - "\u0000\u15e0\u15e1\u0007\t\u0000\u0000\u15e1\u15e2\u0007\u0011\u0000\u0000"+ - "\u15e2\u15e3\u0007\u0007\u0000\u0000\u15e3\u15e4\u0007\u0014\u0000\u0000"+ - "\u15e4\u047e\u0001\u0000\u0000\u0000\u15e5\u15e6\u0007\u000e\u0000\u0000"+ - "\u15e6\u15e7\u0007\u0013\u0000\u0000\u15e7\u15e8\u0007\t\u0000\u0000\u15e8"+ - "\u15e9\u0007\u0014\u0000\u0000\u15e9\u0480\u0001\u0000\u0000\u0000\u15ea"+ - "\u15eb\u0007\u0010\u0000\u0000\u15eb\u15ec\u0007\u0005\u0000\u0000\u15ec"+ - "\u15ed\u0007\u0007\u0000\u0000\u15ed\u15ee\u0007\u0014\u0000\u0000\u15ee"+ - "\u0482\u0001\u0000\u0000\u0000\u15ef\u15f0\u0007\u0005\u0000\u0000\u15f0"+ - "\u15f1\u0007\t\u0000\u0000\u15f1\u15f2\u0007\u0011\u0000\u0000\u15f2\u15f3"+ - "\u0007\u0007\u0000\u0000\u15f3\u15f4\u0007\u0014\u0000\u0000\u15f4\u0484"+ - "\u0001\u0000\u0000\u0000\u15f5\u15f6\u0007\u0005\u0000\u0000\u15f6\u15f7"+ - "\u0007\u000e\u0000\u0000\u15f7\u15f8\u0007\u0013\u0000\u0000\u15f8\u15f9"+ - "\u0007\t\u0000\u0000\u15f9\u15fa\u0007\u0014\u0000\u0000\u15fa\u0486\u0001"+ - "\u0000\u0000\u0000\u15fb\u15fc\u0007\u0005\u0000\u0000\u15fc\u15fd\u0007"+ - "\u0010\u0000\u0000\u15fd\u15fe\u0007\u0005\u0000\u0000\u15fe\u15ff\u0007"+ - "\u0007\u0000\u0000\u15ff\u1600\u0007\u0014\u0000\u0000\u1600\u0488\u0001"+ - "\u0000\u0000\u0000\u1601\u1602\u0007\u0012\u0000\u0000\u1602\u1603\u0007"+ - "\u0011\u0000\u0000\u1603\u1604\u0007\u0010\u0000\u0000\u1604\u1605\u0005"+ - "_\u0000\u0000\u1605\u1606\u0007\u0006\u0000\u0000\u1606\u1607\u0007\n"+ - "\u0000\u0000\u1607\u1608\u0007\u0007\u0000\u0000\u1608\u1609\u0007\u0017"+ - "\u0000\u0000\u1609\u160a\u0007\u0010\u0000\u0000\u160a\u160b\u0007\u0014"+ - "\u0000\u0000\u160b\u048a\u0001\u0000\u0000\u0000\u160c\u160d\u0007\u000e"+ - "\u0000\u0000\u160d\u160e\u0007\u0014\u0000\u0000\u160e\u160f\u0007\u0005"+ - "\u0000\u0000\u160f\u1610\u0007\r\u0000\u0000\u1610\u1611\u0005_\u0000"+ - "\u0000\u1611\u1612\u0007\u0006\u0000\u0000\u1612\u1613\u0007\n\u0000\u0000"+ - "\u1613\u1614\u0007\u0007\u0000\u0000\u1614\u1615\u0007\u0017\u0000\u0000"+ - "\u1615\u1616\u0007\u0010\u0000\u0000\u1616\u1617\u0007\u0014\u0000\u0000"+ - "\u1617\u048c\u0001\u0000\u0000\u0000\u1618\u1619\u0007\u000e\u0000\u0000"+ - "\u1619\u161a\u0007\u0014\u0000\u0000\u161a\u161b\u0007\u0005\u0000\u0000"+ - "\u161b\u161c\u0007\r\u0000\u0000\u161c\u161d\u0007\u0005\u0000\u0000\u161d"+ - "\u161e\u0007\u000e\u0000\u0000\u161e\u161f\u0007\u0010\u0000\u0000\u161f"+ - "\u1620\u0007\n\u0000\u0000\u1620\u1621\u0007\r\u0000\u0000\u1621\u1622"+ - "\u0005_\u0000\u0000\u1622\u1623\u0007\u0006\u0000\u0000\u1623\u1624\u0007"+ - "\n\u0000\u0000\u1624\u1625\u0007\u0007\u0000\u0000\u1625\u1626\u0007\u0017"+ - "\u0000\u0000\u1626\u1627\u0007\u0010\u0000\u0000\u1627\u1628\u0007\u0014"+ - "\u0000\u0000\u1628\u048e\u0001\u0000\u0000\u0000\u1629\u162a\u0007\u0006"+ - "\u0000\u0000\u162a\u162b\u0007\u0013\u0000\u0000\u162b\u162c\u0007\u001c"+ - "\u0000\u0000\u162c\u162d\u0007\n\u0000\u0000\u162d\u162e\u0007\r\u0000"+ - "\u0000\u162e\u0490\u0001\u0000\u0000\u0000\u162f\u1630\u0007\u0013\u0000"+ - "\u0000\u1630\u1631\u0007\u000e\u0000\u0000\u1631\u1632\u0007\u0010\u0000"+ - "\u0000\u1632\u1633\u0007\n\u0000\u0000\u1633\u1634\u0007\u0010\u0000\u0000"+ - "\u1634\u1635\u0005_\u0000\u0000\u1635\u1636\u0007\u0006\u0000\u0000\u1636"+ - "\u1637\u0007\n\u0000\u0000\u1637\u1638\u0007\u0007\u0000\u0000\u1638\u1639"+ - "\u0007\u0017\u0000\u0000\u1639\u163a\u0007\u0010\u0000\u0000\u163a\u163b"+ - "\u0007\u0014\u0000\u0000\u163b\u0492\u0001\u0000\u0000\u0000\u163c\u163d"+ - "\u0007\u0016\u0000\u0000\u163d\u163e\u0007\u0018\u0000\u0000\u163e\u163f"+ - "\u0007\u0018\u0000\u0000\u163f\u1640\u0007\n\u0000\u0000\u1640\u1641\u0007"+ - "\r\u0000\u0000\u1641\u0494\u0001\u0000\u0000\u0000\u1642\u1643\u0007\u0005"+ - "\u0000\u0000\u1643\u1644\u0007\t\u0000\u0000\u1644\u1645\u0007\u000e\u0000"+ - "\u0000\u1645\u1646\u0007\u0011\u0000\u0000\u1646\u1647\u0007\u0011\u0000"+ - "\u0000\u1647\u0496\u0001\u0000\u0000\u0000\u1648\u1649\u0007\u0012\u0000"+ - "\u0000\u1649\u164a\u0007\u0010\u0000\u0000\u164a\u164b\u0007\r\u0000\u0000"+ - "\u164b\u164c\u0007\u0011\u0000\u0000\u164c\u164d\u0007\u000f\u0000\u0000"+ - "\u164d\u0498\u0001\u0000\u0000\u0000\u164e\u164f\u0007\u000e\u0000\u0000"+ - "\u164f\u1650\u0007\u0014\u0000\u0000\u1650\u1651\u0007\r\u0000\u0000\u1651"+ - "\u049a\u0001\u0000\u0000\u0000\u1652\u1653\u0007\u000e\u0000\u0000\u1653"+ - "\u1654\u0007\u0013\u0000\u0000\u1654\u1655\u0007\u0007\u0000\u0000\u1655"+ - "\u1656\u0007\u000e\u0000\u0000\u1656\u1657\u0007\u0005\u0000\u0000\u1657"+ - "\u1658\u0007\u0010\u0000\u0000\u1658\u049c\u0001\u0000\u0000\u0000\u1659"+ - "\u165a\u0007\u000e\u0000\u0000\u165a\u165b\u0007\u0013\u0000\u0000\u165b"+ - "\u165c\u0007\u0007\u0000\u0000\u165c\u165d\u0007\u000e\u0000\u0000\u165d"+ - "\u165e\u0007\u0005\u0000\u0000\u165e\u165f\u0007\u0010\u0000\u0000\u165f"+ - "\u1660\u0005_\u0000\u0000\u1660\u1661\u0007\u001c\u0000\u0000\u1661\u1662"+ - "\u0007\t\u0000\u0000\u1662\u049e\u0001\u0000\u0000\u0000\u1663\u1664\u0007"+ - "\u0019\u0000\u0000\u1664\u1665\u0007\u0013\u0000\u0000\u1665\u1666\u0007"+ - "\r\u0000\u0000\u1666\u1667\u0007\u000f\u0000\u0000\u1667\u1668\u0007\u0005"+ - "\u0000\u0000\u1668\u1669\u0007\u0010\u0000\u0000\u1669\u04a0\u0001\u0000"+ - "\u0000\u0000\u166a\u166b\u0007\u0011\u0000\u0000\u166b\u166c\u0007\u0007"+ - "\u0000\u0000\u166c\u166d\u0007\u0011\u0000\u0000\u166d\u166e\u0007\u0010"+ - "\u0000\u0000\u166e\u166f\u0007\u000e\u0000\u0000\u166f\u1670\u0007\u0005"+ - "\u0000\u0000\u1670\u1671\u0007\u0018\u0000\u0000\u1671\u04a2\u0001\u0000"+ - "\u0000\u0000\u1672\u1673\u0007\u0006\u0000\u0000\u1673\u1674\u0007\n\u0000"+ - "\u0000\u1674\u1675\u0007\u0007\u0000\u0000\u1675\u1676\u0007\u0017\u0000"+ - "\u0000\u1676\u1677\u0007\u0010\u0000\u0000\u1677\u1678\u0007\u0014\u0000"+ - "\u0000\u1678\u04a4\u0001\u0000\u0000\u0000\u1679\u167a\u0007\u0006\u0000"+ - "\u0000\u167a\u167b\u0007\u0018\u0000\u0000\u167b\u167c\u0007\u0005\u0000"+ - "\u0000\u167c\u167d\u0007\f\u0000\u0000\u167d\u04a6\u0001\u0000\u0000\u0000"+ - "\u167e\u167f\u0007\u0006\u0000\u0000\u167f\u1680\u0007\u0010\u0000\u0000"+ - "\u1680\u1681\u0007\r\u0000\u0000\u1681\u1682\u0007\u0011\u0000\u0000\u1682"+ - "\u1683\u0007\u000f\u0000\u0000\u1683\u04a8\u0001\u0000\u0000\u0000\u1684"+ - "\u1685\u0007\u000f\u0000\u0000\u1685\u1686\u0007\f\u0000\u0000\u1686\u1687"+ - "\u00055\u0000\u0000\u1687\u04aa\u0001\u0000\u0000\u0000\u1688\u1689\u0007"+ - "\u0018\u0000\u0000\u1689\u168a\u0007\u0005\u0000\u0000\u168a\u168b\u0007"+ - "\r\u0000\u0000\u168b\u168c\u0007\t\u0000\u0000\u168c\u168d\u0007\n\u0000"+ - "\u0000\u168d\u168e\u0005_\u0000\u0000\u168e\u168f\u0007\u0011\u0000\u0000"+ - "\u168f\u1690\u0007\f\u0000\u0000\u1690\u1691\u0007\n\u0000\u0000\u1691"+ - "\u1692\u0007\u0007\u0000\u0000\u1692\u1693\u0007\u0010\u0000\u0000\u1693"+ - "\u04ac\u0001\u0000\u0000\u0000\u1694\u1695\u0007\u0018\u0000\u0000\u1695"+ - "\u1696\u0007\u0017\u0000\u0000\u1696\u1697\u0005_\u0000\u0000\u1697\u1698"+ - "\u0007\u000e\u0000\u0000\u1698\u1699\u0007\u0006\u0000\u0000\u1699\u169a"+ - "\u0007\u0011\u0000\u0000\u169a\u169b\u0007\n\u0000\u0000\u169b\u169c\u0007"+ - "\u0007\u0000\u0000\u169c\u169d\u0007\u0010\u0000\u0000\u169d\u169e\u0005"+ - "_\u0000\u0000\u169e\u169f\u0007\n\u0000\u0000\u169f\u16a0\u0007\u0007"+ - "\u0000\u0000\u16a0\u16a1\u0007\u000e\u0000\u0000\u16a1\u16a2\u0007\u0013"+ - "\u0000\u0000\u16a2\u16a3\u0007\f\u0000\u0000\u16a3\u16a4\u0007\u0011\u0000"+ - "\u0000\u16a4\u16a5\u0007\u0007\u0000\u0000\u16a5\u16a6\u0007\u0017\u0000"+ - "\u0000\u16a6\u04ae\u0001\u0000\u0000\u0000\u16a7\u16a8\u0007\u001d\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\u0011\u0000\u0000\u16ae"+ - "\u16af\u0007\f\u0000\u0000\u16af\u16b0\u0007\n\u0000\u0000\u16b0\u16b1"+ - "\u0007\u0007\u0000\u0000\u16b1\u16b2\u0007\u0010\u0000\u0000\u16b2\u04b0"+ - "\u0001\u0000\u0000\u0000\u16b3\u16b4\u0007\u001d\u0000\u0000\u16b4\u16b5"+ - "\u0007\u0016\u0000\u0000\u16b5\u16b6\u0007\u0013\u0000\u0000\u16b6\u16b7"+ - "\u0007\u0010\u0000\u0000\u16b7\u16b8\u0007\n\u0000\u0000\u16b8\u16b9\u0005"+ - "_\u0000\u0000\u16b9\u16ba\u0007\u0006\u0000\u0000\u16ba\u16bb\u0007\u0011"+ - "\u0000\u0000\u16bb\u16bc\u0007\u0010\u0000\u0000\u16bc\u16bd\u0007\n\u0000"+ - "\u0000\u16bd\u16be\u0007\r\u0000\u0000\u16be\u16bf\u0007\u0005\u0000\u0000"+ - "\u16bf\u16c0\u0007\u0006\u0000\u0000\u16c0\u04b2\u0001\u0000\u0000\u0000"+ - "\u16c1\u16c2\u0007\u001d\u0000\u0000\u16c2\u16c3\u0007\u0016\u0000\u0000"+ - "\u16c3\u16c4\u0007\u0013\u0000\u0000\u16c4\u16c5\u0007\u0010\u0000\u0000"+ - "\u16c5\u16c6\u0007\n\u0000\u0000\u16c6\u16c7\u0005_\u0000\u0000\u16c7"+ - "\u16c8\u0007\u0007\u0000\u0000\u16c8\u16c9\u0007\u0016\u0000\u0000\u16c9"+ - "\u16ca\u0007\u0006\u0000\u0000\u16ca\u16cb\u0007\u0006\u0000\u0000\u16cb"+ - "\u16cc\u0007\u0005\u0000\u0000\u16cc\u16cd\u0007\u0012\u0000\u0000\u16cd"+ - "\u16ce\u0007\u0006\u0000\u0000\u16ce\u16cf\u0007\n\u0000\u0000\u16cf\u04b4"+ - "\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\u000e\u0000"+ - "\u0000\u16d8\u16d9\u0007\u0013\u0000\u0000\u16d9\u16da\u0007\u0016\u0000"+ - "\u0000\u16da\u16db\u0007\u0007\u0000\u0000\u16db\u16dc\u0007\u0010\u0000"+ - "\u0000\u16dc\u04b6\u0001\u0000\u0000\u0000\u16dd\u16de\u0007\r\u0000\u0000"+ - "\u16de\u16df\u0007\n\u0000\u0000\u16df\u16e0\u0007\u0017\u0000\u0000\u16e0"+ - "\u16e1\u0007\n\u0000\u0000\u16e1\u16e2\u0007\u001a\u0000\u0000\u16e2\u16e3"+ - "\u0007\u0018\u0000\u0000\u16e3\u16e4\u0005_\u0000\u0000\u16e4\u16e5\u0007"+ - "\u0011\u0000\u0000\u16e5\u16e6\u0007\u0007\u0000\u0000\u16e6\u16e7\u0007"+ - "\t\u0000\u0000\u16e7\u16e8\u0007\u0010\u0000\u0000\u16e8\u16e9\u0007\r"+ - "\u0000\u0000\u16e9\u04b8\u0001\u0000\u0000\u0000\u16ea\u16eb\u0007\r\u0000"+ - "\u0000\u16eb\u16ec\u0007\n\u0000\u0000\u16ec\u16ed\u0007\u0017\u0000\u0000"+ - "\u16ed\u16ee\u0007\n\u0000\u0000\u16ee\u16ef\u0007\u001a\u0000\u0000\u16ef"+ - "\u16f0\u0007\u0018\u0000\u0000\u16f0\u16f1\u0005_\u0000\u0000\u16f1\u16f2"+ - "\u0007\u0006\u0000\u0000\u16f2\u16f3\u0007\u0011\u0000\u0000\u16f3\u16f4"+ - "\u0007\u0015\u0000\u0000\u16f4\u16f5\u0007\n\u0000\u0000\u16f5\u04ba\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\u000f\u0000\u0000"+ - "\u16fe\u16ff\u0007\u0005\u0000\u0000\u16ff\u1700\u0007\u0010\u0000\u0000"+ - "\u1700\u1701\u0007\u000e\u0000\u0000\u1701\u1702\u0007\u0014\u0000\u0000"+ - "\u1702\u04bc\u0001\u0000\u0000\u0000\u1703\u1704\u0007\r\u0000\u0000\u1704"+ - "\u1705\u0007\n\u0000\u0000\u1705\u1706\u0007\u0017\u0000\u0000\u1706\u1707"+ - "\u0007\n\u0000\u0000\u1707\u1708\u0007\u001a\u0000\u0000\u1708\u1709\u0007"+ - "\u0018\u0000\u0000\u1709\u170a\u0005_\u0000\u0000\u170a\u170b\u0007\u000f"+ - "\u0000\u0000\u170b\u170c\u0007\u0005\u0000\u0000\u170c\u170d\u0007\u0010"+ - "\u0000\u0000\u170d\u170e\u0007\u000e\u0000\u0000\u170e\u170f\u0007\u0014"+ - "\u0000\u0000\u170f\u1710\u0007\n\u0000\u0000\u1710\u1711\u0007\t\u0000"+ - "\u0000\u1711\u04be\u0001\u0000\u0000\u0000\u1712\u1713\u0007\r\u0000\u0000"+ - "\u1713\u1714\u0007\n\u0000\u0000\u1714\u1715\u0007\u0017\u0000\u0000\u1715"+ - "\u1716\u0007\n\u0000\u0000\u1716\u1717\u0007\u001a\u0000\u0000\u1717\u1718"+ - "\u0007\u0018\u0000\u0000\u1718\u1719\u0005_\u0000\u0000\u1719\u171a\u0007"+ - "\r\u0000\u0000\u171a\u171b\u0007\n\u0000\u0000\u171b\u171c\u0007\u0018"+ - "\u0000\u0000\u171c\u171d\u0007\u0006\u0000\u0000\u171d\u171e\u0007\u0005"+ - "\u0000\u0000\u171e\u171f\u0007\u000e\u0000\u0000\u171f\u1720\u0007\n\u0000"+ - "\u0000\u1720\u04c0\u0001\u0000\u0000\u0000\u1721\u1722\u0007\r\u0000\u0000"+ - "\u1722\u1723\u0007\n\u0000\u0000\u1723\u1724\u0007\u0017\u0000\u0000\u1724"+ - "\u1725\u0007\n\u0000\u0000\u1725\u1726\u0007\u001a\u0000\u0000\u1726\u1727"+ - "\u0007\u0018\u0000\u0000\u1727\u1728\u0005_\u0000\u0000\u1728\u1729\u0007"+ - "\t\u0000\u0000\u1729\u172a\u0007\u0018\u0000\u0000\u172a\u172b\u0007\u0006"+ - "\u0000\u0000\u172b\u172c\u0007\u0011\u0000\u0000\u172c\u172d\u0007\u0010"+ - "\u0000\u0000\u172d\u172e\u0005_\u0000\u0000\u172e\u172f\u0007\u0010\u0000"+ - "\u0000\u172f\u1730\u0007\u0013\u0000\u0000\u1730\u1731\u0005_\u0000\u0000"+ - "\u1731\u1732\u0007\u0005\u0000\u0000\u1732\u1733\u0007\r\u0000\u0000\u1733"+ - "\u1734\u0007\r\u0000\u0000\u1734\u1735\u0007\u0005\u0000\u0000\u1735\u1736"+ - "\u0007\b\u0000\u0000\u1736\u04c2\u0001\u0000\u0000\u0000\u1737\u1738\u0007"+ - "\r\u0000\u0000\u1738\u1739\u0007\n\u0000\u0000\u1739\u173a\u0007\u0017"+ - "\u0000\u0000\u173a\u173b\u0007\n\u0000\u0000\u173b\u173c\u0007\u001a\u0000"+ - "\u0000\u173c\u173d\u0007\u0018\u0000\u0000\u173d\u173e\u0005_\u0000\u0000"+ - "\u173e\u173f\u0007\t\u0000\u0000\u173f\u1740\u0007\u0018\u0000\u0000\u1740"+ - "\u1741\u0007\u0006\u0000\u0000\u1741\u1742\u0007\u0011\u0000\u0000\u1742"+ - "\u1743\u0007\u0010\u0000\u0000\u1743\u1744\u0005_\u0000\u0000\u1744\u1745"+ - "\u0007\u0010\u0000\u0000\u1745\u1746\u0007\u0013\u0000\u0000\u1746\u1747"+ - "\u0005_\u0000\u0000\u1747\u1748\u0007\u0010\u0000\u0000\u1748\u1749\u0007"+ - "\u0005\u0000\u0000\u1749\u174a\u0007\u0012\u0000\u0000\u174a\u174b\u0007"+ - "\u0006\u0000\u0000\u174b\u174c\u0007\n\u0000\u0000\u174c\u04c4\u0001\u0000"+ - "\u0000\u0000\u174d\u174e\u0007\r\u0000\u0000\u174e\u174f\u0007\n\u0000"+ - "\u0000\u174f\u1750\u0007\u0017\u0000\u0000\u1750\u1751\u0007\n\u0000\u0000"+ - "\u1751\u1752\u0007\u001a\u0000\u0000\u1752\u1753\u0007\u0018\u0000\u0000"+ - "\u1753\u1754\u0005_\u0000\u0000\u1754\u1755\u0007\t\u0000\u0000\u1755"+ - "\u1756\u0007\u0016\u0000\u0000\u1756\u1757\u0007\u0012\u0000\u0000\u1757"+ - "\u1758\u0007\t\u0000\u0000\u1758\u1759\u0007\u0010\u0000\u0000\u1759\u175a"+ - "\u0007\r\u0000\u0000\u175a\u04c6\u0001\u0000\u0000\u0000\u175b\u175c\u0007"+ - "\r\u0000\u0000\u175c\u175d\u0007\n\u0000\u0000\u175d\u175e\u0007\u0018"+ - "\u0000\u0000\u175e\u175f\u0007\n\u0000\u0000\u175f\u1760\u0007\u0005\u0000"+ - "\u0000\u1760\u1761\u0007\u0010\u0000\u0000\u1761\u04c8\u0001\u0000\u0000"+ - "\u0000\u1762\u1763\u0007\r\u0000\u0000\u1763\u1764\u0007\u0018\u0000\u0000"+ - "\u1764\u1765\u0007\u0005\u0000\u0000\u1765\u1766\u0007\f\u0000\u0000\u1766"+ - "\u04ca\u0001\u0000\u0000\u0000\u1767\u1768\u0007\r\u0000\u0000\u1768\u1769"+ - "\u0007\u0010\u0000\u0000\u1769\u176a\u0007\r\u0000\u0000\u176a\u176b\u0007"+ - "\u0011\u0000\u0000\u176b\u176c\u0007\u000f\u0000\u0000\u176c\u04cc\u0001"+ - "\u0000\u0000\u0000\u176d\u176e\u0007\t\u0000\u0000\u176e\u176f\u0007\u0018"+ - "\u0000\u0000\u176f\u1770\u0007\u0006\u0000\u0000\u1770\u1771\u0007\u0011"+ - "\u0000\u0000\u1771\u1772\u0007\u0010\u0000\u0000\u1772\u1773\u0005_\u0000"+ - "\u0000\u1773\u1774\u0007\u0018\u0000\u0000\u1774\u1775\u0007\u0005\u0000"+ - "\u0000\u1775\u1776\u0007\r\u0000\u0000\u1776\u1777\u0007\u0010\u0000\u0000"+ - "\u1777\u04ce\u0001\u0000\u0000\u0000\u1778\u1779\u0007\t\u0000\u0000\u1779"+ - "\u177a\u0007\u0010\u0000\u0000\u177a\u177b\u0007\u0005\u0000\u0000\u177b"+ - "\u177c\u0007\r\u0000\u0000\u177c\u177d\u0007\u0010\u0000\u0000\u177d\u177e"+ - "\u0007\t\u0000\u0000\u177e\u177f\u0005_\u0000\u0000\u177f\u1780\u0007"+ - "\u001c\u0000\u0000\u1780\u1781\u0007\u0011\u0000\u0000\u1781\u1782\u0007"+ - "\u0010\u0000\u0000\u1782\u1783\u0007\u0014\u0000\u0000\u1783\u04d0\u0001"+ - "\u0000\u0000\u0000\u1784\u1785\u0007\t\u0000\u0000\u1785\u1786\u0007\u0010"+ - "\u0000\u0000\u1786\u1787\u0007\r\u0000\u0000\u1787\u1788\u0007\u0011\u0000"+ - "\u0000\u1788\u1789\u0007\u0007\u0000\u0000\u1789\u178a\u0007\u0017\u0000"+ - "\u0000\u178a\u178b\u0005_\u0000\u0000\u178b\u178c\u0007\u0010\u0000\u0000"+ - "\u178c\u178d\u0007\u0013\u0000\u0000\u178d\u178e\u0005_\u0000\u0000\u178e"+ - "\u178f\u0007\u0005\u0000\u0000\u178f\u1790\u0007\r\u0000\u0000\u1790\u1791"+ - "\u0007\r\u0000\u0000\u1791\u1792\u0007\u0005\u0000\u0000\u1792\u1793\u0007"+ - "\b\u0000\u0000\u1793\u04d2\u0001\u0000\u0000\u0000\u1794\u1795\u0007\t"+ - "\u0000\u0000\u1795\u1796\u0007\u0010\u0000\u0000\u1796\u1797\u0007\r\u0000"+ - "\u0000\u1797\u1798\u0007\u0011\u0000\u0000\u1798\u1799\u0007\u0007\u0000"+ - "\u0000\u1799\u179a\u0007\u0017\u0000\u0000\u179a\u179b\u0005_\u0000\u0000"+ - "\u179b\u179c\u0007\u0010\u0000\u0000\u179c\u179d\u0007\u0013\u0000\u0000"+ - "\u179d\u179e\u0005_\u0000\u0000\u179e\u179f\u0007\u0010\u0000\u0000\u179f"+ - "\u17a0\u0007\u0005\u0000\u0000\u17a0\u17a1\u0007\u0012\u0000\u0000\u17a1"+ - "\u17a2\u0007\u0006\u0000\u0000\u17a2\u17a3\u0007\n\u0000\u0000\u17a3\u04d4"+ - "\u0001\u0000\u0000\u0000\u17a4\u17a5\u0007\t\u0000\u0000\u17a5\u17a6\u0007"+ - "\u0010\u0000\u0000\u17a6\u17a7\u0007\r\u0000\u0000\u17a7\u17a8\u0007\u0018"+ - "\u0000\u0000\u17a8\u17a9\u0007\u0013\u0000\u0000\u17a9\u17aa\u0007\t\u0000"+ - "\u0000\u17aa\u04d6\u0001\u0000\u0000\u0000\u17ab\u17ac\u0007\t\u0000\u0000"+ - "\u17ac\u17ad\u0007\u0016\u0000\u0000\u17ad\u17ae\u0007\u0012\u0000\u0000"+ - "\u17ae\u17af\u0007\t\u0000\u0000\u17af\u17b0\u0007\u0010\u0000\u0000\u17b0"+ - "\u17b1\u0007\r\u0000\u0000\u17b1\u04d8\u0001\u0000\u0000\u0000\u17b2\u17b3"+ - "\u0007\u0010\u0000\u0000\u17b3\u17b4\u0007\u0013\u0000\u0000\u17b4\u17b5"+ - "\u0005_\u0000\u0000\u17b5\u17b6\u0007\u0005\u0000\u0000\u17b6\u17b7\u0007"+ - "\t\u0000\u0000\u17b7\u17b8\u0007\u000e\u0000\u0000\u17b8\u17b9\u0007\u0011"+ - "\u0000\u0000\u17b9\u17ba\u0007\u0011\u0000\u0000\u17ba\u04da\u0001\u0000"+ - "\u0000\u0000\u17bb\u17bc\u0007\u0010\u0000\u0000\u17bc\u17bd\u0007\u0013"+ - "\u0000\u0000\u17bd\u17be\u0005_\u0000\u0000\u17be\u17bf\u0007\u0014\u0000"+ - "\u0000\u17bf\u17c0\u0007\n\u0000\u0000\u17c0\u17c1\u0007\u001a\u0000\u0000"+ - "\u17c1\u04dc\u0001\u0000\u0000\u0000\u17c2\u17c3\u0007\u0010\u0000\u0000"+ - "\u17c3\u17c4\u0007\r\u0000\u0000\u17c4\u17c5\u0007\u0005\u0000\u0000\u17c5"+ - "\u17c6\u0007\u0007\u0000\u0000\u17c6\u17c7\u0007\t\u0000\u0000\u17c7\u17c8"+ - "\u0007\u0006\u0000\u0000\u17c8\u17c9\u0007\u0005\u0000\u0000\u17c9\u17ca"+ - "\u0007\u0010\u0000\u0000\u17ca\u17cb\u0007\n\u0000\u0000\u17cb\u04de\u0001"+ - "\u0000\u0000\u0000\u17cc\u17cd\u0007\u0016\u0000\u0000\u17cd\u17ce\u0007"+ - "\u0007\u0000\u0000\u17ce\u17cf\u0007\u0011\u0000\u0000\u17cf\u17d0\u0007"+ - "\t\u0000\u0000\u17d0\u17d1\u0007\u0010\u0000\u0000\u17d1\u17d2\u0007\r"+ - "\u0000\u0000\u17d2\u04e0\u0001\u0000\u0000\u0000\u17d3\u17d4\u0007\u0005"+ - "\u0000\u0000\u17d4\u17d5\u0007\u0017\u0000\u0000\u17d5\u17d6\u0007\n\u0000"+ - "\u0000\u17d6\u04e2\u0001\u0000\u0000\u0000\u17d7\u17d8\u0007\u000e\u0000"+ - "\u0000\u17d8\u17d9\u0007\u0006\u0000\u0000\u17d9\u17da\u0007\u0013\u0000"+ - "\u0000\u17da\u17db\u0007\u000e\u0000\u0000\u17db\u17dc\u0007\u0015\u0000"+ - "\u0000\u17dc\u17dd\u0005_\u0000\u0000\u17dd\u17de\u0007\u0010\u0000\u0000"+ - "\u17de\u17df\u0007\u0011\u0000\u0000\u17df\u17e0\u0007\u000f\u0000\u0000"+ - "\u17e0\u17e1\u0007\n\u0000\u0000\u17e1\u17e2\u0007\t\u0000\u0000\u17e2"+ - "\u17e3\u0007\u0010\u0000\u0000\u17e3\u17e4\u0007\u0005\u0000\u0000\u17e4"+ - "\u17e5\u0007\u000f\u0000\u0000\u17e5\u17e6\u0007\u0018\u0000\u0000\u17e6"+ - "\u04e4\u0001\u0000\u0000\u0000\u17e7\u17e8\u0007\f\u0000\u0000\u17e8\u17e9"+ - "\u0007\u0005\u0000\u0000\u17e9\u17ea\u0007\u0010\u0000\u0000\u17ea\u17eb"+ - "\u0007\n\u0000\u0000\u17eb\u17ec\u0005_\u0000\u0000\u17ec\u17ed\u0007"+ - "\u0012\u0000\u0000\u17ed\u17ee\u0007\u0011\u0000\u0000\u17ee\u17ef\u0007"+ - "\u0007\u0000\u0000\u17ef\u04e6\u0001\u0000\u0000\u0000\u17f0\u17f1\u0007"+ - "\f\u0000\u0000\u17f1\u17f2\u0007\u0005\u0000\u0000\u17f2\u17f3\u0007\u0010"+ - "\u0000\u0000\u17f3\u17f4\u0007\n\u0000\u0000\u17f4\u17f5\u0005_\u0000"+ - "\u0000\u17f5\u17f6\u0007\u0018\u0000\u0000\u17f6\u17f7\u0007\u0005\u0000"+ - "\u0000\u17f7\u17f8\u0007\r\u0000\u0000\u17f8\u17f9\u0007\u0010\u0000\u0000"+ - "\u17f9\u04e8\u0001\u0000\u0000\u0000\u17fa\u17fb\u0007\f\u0000\u0000\u17fb"+ - "\u17fc\u0007\u0005\u0000\u0000\u17fc\u17fd\u0007\u0010\u0000\u0000\u17fd"+ - "\u17fe\u0007\n\u0000\u0000\u17fe\u17ff\u0005_\u0000\u0000\u17ff\u1800"+ - "\u0007\u0010\u0000\u0000\u1800\u1801\u0007\r\u0000\u0000\u1801\u1802\u0007"+ - "\u0016\u0000\u0000\u1802\u1803\u0007\u0007\u0000\u0000\u1803\u1804\u0007"+ - "\u000e\u0000\u0000\u1804\u04ea\u0001\u0000\u0000\u0000\u1805\u1806\u0007"+ - "\u0011\u0000\u0000\u1806\u1807\u0007\t\u0000\u0000\u1807\u1808\u0007\u0019"+ - "\u0000\u0000\u1808\u1809\u0007\u0011\u0000\u0000\u1809\u180a\u0007\u0007"+ - "\u0000\u0000\u180a\u180b\u0007\u0011\u0000\u0000\u180b\u180c\u0007\u0010"+ - "\u0000\u0000\u180c\u180d\u0007\n\u0000\u0000\u180d\u04ec\u0001\u0000\u0000"+ - "\u0000\u180e\u180f\u0007\u001e\u0000\u0000\u180f\u1810\u0007\u0016\u0000"+ - "\u0000\u1810\u1811\u0007\t\u0000\u0000\u1811\u1812\u0007\u0010\u0000\u0000"+ - "\u1812\u1813\u0007\u0011\u0000\u0000\u1813\u1814\u0007\u0019\u0000\u0000"+ - "\u1814\u1815\u0007\b\u0000\u0000\u1815\u1816\u0005_\u0000\u0000\u1816"+ - "\u1817\u0007\f\u0000\u0000\u1817\u1818\u0007\u0005\u0000\u0000\u1818\u1819"+ - "\u0007\b\u0000\u0000\u1819\u181a\u0007\t\u0000\u0000\u181a\u04ee\u0001"+ - "\u0000\u0000\u0000\u181b\u181c\u0007\u001e\u0000\u0000\u181c\u181d\u0007"+ - "\u0016\u0000\u0000\u181d\u181e\u0007\t\u0000\u0000\u181e\u181f\u0007\u0010"+ - "\u0000\u0000\u181f\u1820\u0007\u0011\u0000\u0000\u1820\u1821\u0007\u0019"+ - "\u0000\u0000\u1821\u1822\u0007\b\u0000\u0000\u1822\u1823\u0005_\u0000"+ - "\u0000\u1823\u1824\u0007\u0014\u0000\u0000\u1824\u1825\u0007\u0013\u0000"+ - "\u0000\u1825\u1826\u0007\u0016\u0000\u0000\u1826\u1827\u0007\r\u0000\u0000"+ - "\u1827\u1828\u0007\t\u0000\u0000\u1828\u04f0\u0001\u0000\u0000\u0000\u1829"+ - "\u182a\u0007\u001e\u0000\u0000\u182a\u182b\u0007\u0016\u0000\u0000\u182b"+ - "\u182c\u0007\t\u0000\u0000\u182c\u182d\u0007\u0010\u0000\u0000\u182d\u182e"+ - "\u0007\u0011\u0000\u0000\u182e\u182f\u0007\u0019\u0000\u0000\u182f\u1830"+ - "\u0007\b\u0000\u0000\u1830\u1831\u0005_\u0000\u0000\u1831\u1832\u0007"+ - "\u0011\u0000\u0000\u1832\u1833\u0007\u0007\u0000\u0000\u1833\u1834\u0007"+ - "\u0010\u0000\u0000\u1834\u1835\u0007\n\u0000\u0000\u1835\u1836\u0007\r"+ - "\u0000\u0000\u1836\u1837\u0007\u001b\u0000\u0000\u1837\u1838\u0007\u0005"+ - "\u0000\u0000\u1838\u1839\u0007\u0006\u0000\u0000\u1839\u04f2\u0001\u0000"+ - "\u0000\u0000\u183a\u183b\u0007\u000f\u0000\u0000\u183b\u183c\u0007\u0005"+ - "\u0000\u0000\u183c\u183d\u0007\u0015\u0000\u0000\u183d\u183e\u0007\n\u0000"+ - "\u0000\u183e\u183f\u0005_\u0000\u0000\u183f\u1840\u0007\f\u0000\u0000"+ - "\u1840\u1841\u0007\u0005\u0000\u0000\u1841\u1842\u0007\u0010\u0000\u0000"+ - "\u1842\u1843\u0007\n\u0000\u0000\u1843\u04f4\u0001\u0000\u0000\u0000\u1844"+ - "\u1845\u0007\u000f\u0000\u0000\u1845\u1846\u0007\u0005\u0000\u0000\u1846"+ - "\u1847\u0007\u0015\u0000\u0000\u1847\u1848\u0007\n\u0000\u0000\u1848\u1849"+ - "\u0005_\u0000\u0000\u1849\u184a\u0007\u0011\u0000\u0000\u184a\u184b\u0007"+ - "\u0007\u0000\u0000\u184b\u184c\u0007\u0010\u0000\u0000\u184c\u184d\u0007"+ - "\n\u0000\u0000\u184d\u184e\u0007\r\u0000\u0000\u184e\u184f\u0007\u001b"+ - "\u0000\u0000\u184f\u1850\u0007\u0005\u0000\u0000\u1850\u1851\u0007\u0006"+ - "\u0000\u0000\u1851\u04f6\u0001\u0000\u0000\u0000\u1852\u1853\u0007\u000f"+ - "\u0000\u0000\u1853\u1854\u0007\u0005\u0000\u0000\u1854\u1855\u0007\u0015"+ - "\u0000\u0000\u1855\u1856\u0007\n\u0000\u0000\u1856\u1857\u0005_\u0000"+ - "\u0000\u1857\u1858\u0007\u0010\u0000\u0000\u1858\u1859\u0007\u0011\u0000"+ - "\u0000\u1859\u185a\u0007\u000f\u0000\u0000\u185a\u185b\u0007\n\u0000\u0000"+ - "\u185b\u04f8\u0001\u0000\u0000\u0000\u185c\u185d\u0007\u000f\u0000\u0000"+ - "\u185d\u185e\u0007\u0005\u0000\u0000\u185e\u185f\u0007\u0015\u0000\u0000"+ - "\u185f\u1860\u0007\n\u0000\u0000\u1860\u1861\u0005_\u0000\u0000\u1861"+ - "\u1862\u0007\u0010\u0000\u0000\u1862\u1863\u0007\u0011\u0000\u0000\u1863"+ - "\u1864\u0007\u000f\u0000\u0000\u1864\u1865\u0007\n\u0000\u0000\u1865\u1866"+ - "\u0007\t\u0000\u0000\u1866\u1867\u0007\u0010\u0000\u0000\u1867\u1868\u0007"+ - "\u0005\u0000\u0000\u1868\u1869\u0007\u000f\u0000\u0000\u1869\u186a\u0007"+ - "\u0018\u0000\u0000\u186a\u04fa\u0001\u0000\u0000\u0000\u186b\u186c\u0007"+ - "\u000f\u0000\u0000\u186c\u186d\u0007\u0005\u0000\u0000\u186d\u186e\u0007"+ - "\u0015\u0000\u0000\u186e\u186f\u0007\n\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\u187a\u0007\u0010\u0000\u0000"+ - "\u187a\u187b\u0007\u000b\u0000\u0000\u187b\u04fc\u0001\u0000\u0000\u0000"+ - "\u187c\u187d\u0007\u0007\u0000\u0000\u187d\u187e\u0007\u0013\u0000\u0000"+ - "\u187e\u187f\u0007\u001c\u0000\u0000\u187f\u04fe\u0001\u0000\u0000\u0000"+ - "\u1880\u1881\u0007\t\u0000\u0000\u1881\u1882\u0007\u0010\u0000\u0000\u1882"+ - "\u1883\u0007\u0005\u0000\u0000\u1883\u1884\u0007\u0010\u0000\u0000\u1884"+ - "\u1885\u0007\n\u0000\u0000\u1885\u1886\u0007\u000f\u0000\u0000\u1886\u1887"+ - "\u0007\n\u0000\u0000\u1887\u1888\u0007\u0007\u0000\u0000\u1888\u1889\u0007"+ - "\u0010\u0000\u0000\u1889\u188a\u0005_\u0000\u0000\u188a\u188b\u0007\u0010"+ - "\u0000\u0000\u188b\u188c\u0007\u0011\u0000\u0000\u188c\u188d\u0007\u000f"+ - "\u0000\u0000\u188d\u188e\u0007\n\u0000\u0000\u188e\u188f\u0007\t\u0000"+ - "\u0000\u188f\u1890\u0007\u0010\u0000\u0000\u1890\u1891\u0007\u0005\u0000"+ - "\u0000\u1891\u1892\u0007\u000f\u0000\u0000\u1892\u1893\u0007\u0018\u0000"+ - "\u0000\u1893\u0500\u0001\u0000\u0000\u0000\u1894\u1895\u0007\u0010\u0000"+ - "\u0000\u1895\u1896\u0007\u0011\u0000\u0000\u1896\u1897\u0007\u000f\u0000"+ - "\u0000\u1897\u1898\u0007\n\u0000\u0000\u1898\u1899\u0007\u0013\u0000\u0000"+ - "\u1899\u189a\u0007\u0019\u0000\u0000\u189a\u189b\u0007\f\u0000\u0000\u189b"+ - "\u189c\u0007\u0005\u0000\u0000\u189c\u189d\u0007\b\u0000\u0000\u189d\u0502"+ - "\u0001\u0000\u0000\u0000\u189e\u189f\u0007\u0010\u0000\u0000\u189f\u18a0"+ - "\u0007\r\u0000\u0000\u18a0\u18a1\u0007\u0005\u0000\u0000\u18a1\u18a2\u0007"+ - "\u0007\u0000\u0000\u18a2\u18a3\u0007\t\u0000\u0000\u18a3\u18a4\u0007\u0005"+ - "\u0000\u0000\u18a4\u18a5\u0007\u000e\u0000\u0000\u18a5\u18a6\u0007\u0010"+ - "\u0000\u0000\u18a6\u18a7\u0007\u0011\u0000\u0000\u18a7\u18a8\u0007\u0013"+ - "\u0000\u0000\u18a8\u18a9\u0007\u0007\u0000\u0000\u18a9\u18aa\u0005_\u0000"+ - "\u0000\u18aa\u18ab\u0007\u0010\u0000\u0000\u18ab\u18ac\u0007\u0011\u0000"+ - "\u0000\u18ac\u18ad\u0007\u000f\u0000\u0000\u18ad\u18ae\u0007\n\u0000\u0000"+ - "\u18ae\u18af\u0007\t\u0000\u0000\u18af\u18b0\u0007\u0010\u0000\u0000\u18b0"+ - "\u18b1\u0007\u0005\u0000\u0000\u18b1\u18b2\u0007\u000f\u0000\u0000\u18b2"+ - "\u18b3\u0007\u0018\u0000\u0000\u18b3\u0504\u0001\u0000\u0000\u0000\u18b4"+ - "\u18b5\u0007\u0010\u0000\u0000\u18b5\u18b6\u0007\u0013\u0000\u0000\u18b6"+ - "\u18b7\u0005_\u0000\u0000\u18b7\u18b8\u0007\u0010\u0000\u0000\u18b8\u18b9"+ - "\u0007\u0011\u0000\u0000\u18b9\u18ba\u0007\u000f\u0000\u0000\u18ba\u18bb"+ - "\u0007\n\u0000\u0000\u18bb\u18bc\u0007\t\u0000\u0000\u18bc\u18bd\u0007"+ - "\u0010\u0000\u0000\u18bd\u18be\u0007\u0005\u0000\u0000\u18be\u18bf\u0007"+ - "\u000f\u0000\u0000\u18bf\u18c0\u0007\u0018\u0000\u0000\u18c0\u0506\u0001"+ - "\u0000\u0000\u0000\u18c1\u18c2\u0007\u0010\u0000\u0000\u18c2\u18c3\u0007"+ - "\u0013\u0000\u0000\u18c3\u18c4\u0005_\u0000\u0000\u18c4\u18c5\u0007\u000e"+ - "\u0000\u0000\u18c5\u18c6\u0007\u0014\u0000\u0000\u18c6\u18c7\u0007\u0005"+ - "\u0000\u0000\u18c7\u18c8\u0007\r\u0000\u0000\u18c8\u0508\u0001\u0000\u0000"+ - "\u0000\u18c9\u18ca\u0007\u0010\u0000\u0000\u18ca\u18cb\u0007\u0013\u0000"+ - "\u0000\u18cb\u18cc\u0005_\u0000\u0000\u18cc\u18cd\u0007\f\u0000\u0000"+ - "\u18cd\u18ce\u0007\u0005\u0000\u0000\u18ce\u18cf\u0007\u0010\u0000\u0000"+ - "\u18cf\u18d0\u0007\n\u0000\u0000\u18d0\u050a\u0001\u0000\u0000\u0000\u18d1"+ - "\u18d2\u0007\u0010\u0000\u0000\u18d2\u18d3\u0007\u0013\u0000\u0000\u18d3"+ - "\u18d4\u0005_\u0000\u0000\u18d4\u18d5\u0007\u0007\u0000\u0000\u18d5\u18d6"+ - "\u0007\u0016\u0000\u0000\u18d6\u18d7\u0007\u000f\u0000\u0000\u18d7\u18d8"+ - "\u0007\u0012\u0000\u0000\u18d8\u18d9\u0007\n\u0000\u0000\u18d9\u18da\u0007"+ - "\r\u0000\u0000\u18da\u050c\u0001\u0000\u0000\u0000\u18db\u18df\u0003\u050f"+ - "\u0285\u0000\u18dc\u18de\u0003\u0511\u0286\u0000\u18dd\u18dc\u0001\u0000"+ - "\u0000\u0000\u18de\u18e1\u0001\u0000\u0000\u0000\u18df\u18dd\u0001\u0000"+ - "\u0000\u0000\u18df\u18e0\u0001\u0000\u0000\u0000\u18e0\u050e\u0001\u0000"+ - "\u0000\u0000\u18e1\u18df\u0001\u0000\u0000\u0000\u18e2\u18e9\u0007\u001f"+ - "\u0000\u0000\u18e3\u18e4\u0007 \u0000\u0000\u18e4\u18e9\u0004\u0285\u0006"+ - "\u0000\u18e5\u18e6\u0007!\u0000\u0000\u18e6\u18e7\u0007\"\u0000\u0000"+ - "\u18e7\u18e9\u0004\u0285\u0007\u0000\u18e8\u18e2\u0001\u0000\u0000\u0000"+ - "\u18e8\u18e3\u0001\u0000\u0000\u0000\u18e8\u18e5\u0001\u0000\u0000\u0000"+ - "\u18e9\u0510\u0001\u0000\u0000\u0000\u18ea\u18ed\u0003\u0513\u0287\u0000"+ - "\u18eb\u18ed\u0005$\u0000\u0000\u18ec\u18ea\u0001\u0000\u0000\u0000\u18ec"+ - "\u18eb\u0001\u0000\u0000\u0000\u18ed\u0512\u0001\u0000\u0000\u0000\u18ee"+ - "\u18f1\u0003\u050f\u0285\u0000\u18ef\u18f1\u0007\u0000\u0000\u0000\u18f0"+ - "\u18ee\u0001\u0000\u0000\u0000\u18f0\u18ef\u0001\u0000\u0000\u0000\u18f1"+ - "\u0514\u0001\u0000\u0000\u0000\u18f2\u18f3\u0003\u0517\u0289\u0000\u18f3"+ - "\u18f4\u0005\"\u0000\u0000\u18f4\u0516\u0001\u0000\u0000\u0000\u18f5\u18fb"+ - "\u0005\"\u0000\u0000\u18f6\u18f7\u0005\"\u0000\u0000\u18f7\u18fa\u0005"+ - "\"\u0000\u0000\u18f8\u18fa\b#\u0000\u0000\u18f9\u18f6\u0001\u0000\u0000"+ - "\u0000\u18f9\u18f8\u0001\u0000\u0000\u0000\u18fa\u18fd\u0001\u0000\u0000"+ - "\u0000\u18fb\u18f9\u0001\u0000\u0000\u0000\u18fb\u18fc\u0001\u0000\u0000"+ - "\u0000\u18fc\u0518\u0001\u0000\u0000\u0000\u18fd\u18fb\u0001\u0000\u0000"+ - "\u0000\u18fe\u18ff\u0003\u051b\u028b\u0000\u18ff\u1900\u0005\"\u0000\u0000"+ - "\u1900\u051a\u0001\u0000\u0000\u0000\u1901\u1907\u0005\"\u0000\u0000\u1902"+ - "\u1903\u0005\"\u0000\u0000\u1903\u1906\u0005\"\u0000\u0000\u1904\u1906"+ - "\b$\u0000\u0000\u1905\u1902\u0001\u0000\u0000\u0000\u1905\u1904\u0001"+ - "\u0000\u0000\u0000\u1906\u1909\u0001\u0000\u0000\u0000\u1907\u1905\u0001"+ - "\u0000\u0000\u0000\u1907\u1908\u0001\u0000\u0000\u0000\u1908\u051c\u0001"+ - "\u0000\u0000\u0000\u1909\u1907\u0001\u0000\u0000\u0000\u190a\u190b\u0007"+ - "\u0016\u0000\u0000\u190b\u190c\u0005&\u0000\u0000\u190c\u190d\u0003\u0515"+ - "\u0288\u0000\u190d\u051e\u0001\u0000\u0000\u0000\u190e\u190f\u0007\u0016"+ - "\u0000\u0000\u190f\u1910\u0005&\u0000\u0000\u1910\u1911\u0003\u0517\u0289"+ - "\u0000\u1911\u0520\u0001\u0000\u0000\u0000\u1912\u1913\u0007\u0016\u0000"+ - "\u0000\u1913\u1914\u0005&\u0000\u0000\u1914\u1915\u0003\u0519\u028a\u0000"+ - "\u1915\u0522\u0001\u0000\u0000\u0000\u1916\u1917\u0007\u0016\u0000\u0000"+ - "\u1917\u1918\u0005&\u0000\u0000\u1918\u1919\u0003\u051b\u028b\u0000\u1919"+ - "\u0524\u0001\u0000\u0000\u0000\u191a\u191b\u0003\u0527\u0291\u0000\u191b"+ - "\u191c\u0005\'\u0000\u0000\u191c\u0526\u0001\u0000\u0000\u0000\u191d\u1923"+ - "\u0005\'\u0000\u0000\u191e\u191f\u0005\'\u0000\u0000\u191f\u1922\u0005"+ - "\'\u0000\u0000\u1920\u1922\b%\u0000\u0000\u1921\u191e\u0001\u0000\u0000"+ - "\u0000\u1921\u1920\u0001\u0000\u0000\u0000\u1922\u1925\u0001\u0000\u0000"+ - "\u0000\u1923\u1921\u0001\u0000\u0000\u0000\u1923\u1924\u0001\u0000\u0000"+ - "\u0000\u1924\u0528\u0001\u0000\u0000\u0000\u1925\u1923\u0001\u0000\u0000"+ - "\u0000\u1926\u1927\u0007\n\u0000\u0000\u1927\u1928\u0005\'\u0000\u0000"+ - "\u1928\u1929\u0001\u0000\u0000\u0000\u1929\u192a\u0006\u0292\u0002\u0000"+ - "\u192a\u192b\u0006\u0292\u0003\u0000\u192b\u052a\u0001\u0000\u0000\u0000"+ - "\u192c\u192d\u0003\u052d\u0294\u0000\u192d\u192e\u0005\'\u0000\u0000\u192e"+ - "\u052c\u0001\u0000\u0000\u0000\u192f\u1930\u0007\u0016\u0000\u0000\u1930"+ - "\u1931\u0005&\u0000\u0000\u1931\u1932\u0003\u0527\u0291\u0000\u1932\u052e"+ - "\u0001\u0000\u0000\u0000\u1933\u1935\u0005$\u0000\u0000\u1934\u1936\u0003"+ - "\u0531\u0296\u0000\u1935\u1934\u0001\u0000\u0000\u0000\u1935\u1936\u0001"+ - "\u0000\u0000\u0000\u1936\u1937\u0001\u0000\u0000\u0000\u1937\u1938\u0005"+ - "$\u0000\u0000\u1938\u1939\u0006\u0295\u0004\u0000\u1939\u193a\u0001\u0000"+ - "\u0000\u0000\u193a\u193b\u0006\u0295\u0005\u0000\u193b\u0530\u0001\u0000"+ - "\u0000\u0000\u193c\u1940\u0003\u050f\u0285\u0000\u193d\u193f\u0003\u0513"+ - "\u0287\u0000\u193e\u193d\u0001\u0000\u0000\u0000\u193f\u1942\u0001\u0000"+ - "\u0000\u0000\u1940\u193e\u0001\u0000\u0000\u0000\u1940\u1941\u0001\u0000"+ - "\u0000\u0000\u1941\u0532\u0001\u0000\u0000\u0000\u1942\u1940\u0001\u0000"+ - "\u0000\u0000\u1943\u1944\u0003\u0535\u0298\u0000\u1944\u1945\u0005\'\u0000"+ - "\u0000\u1945\u0534\u0001\u0000\u0000\u0000\u1946\u1947\u0007\u0012\u0000"+ - "\u0000\u1947\u194b\u0005\'\u0000\u0000\u1948\u194a\u0007&\u0000\u0000"+ - "\u1949\u1948\u0001\u0000\u0000\u0000\u194a\u194d\u0001\u0000\u0000\u0000"+ - "\u194b\u1949\u0001\u0000\u0000\u0000\u194b\u194c\u0001\u0000\u0000\u0000"+ - "\u194c\u0536\u0001\u0000\u0000\u0000\u194d\u194b\u0001\u0000\u0000\u0000"+ - "\u194e\u194f\u0003\u0539\u029a\u0000\u194f\u1950\u0005\'\u0000\u0000\u1950"+ - "\u0538\u0001\u0000\u0000\u0000\u1951\u1952\u0007\u0012\u0000\u0000\u1952"+ - "\u1953\u0003\u0527\u0291\u0000\u1953\u053a\u0001\u0000\u0000\u0000\u1954"+ - "\u1955\u0003\u053d\u029c\u0000\u1955\u1956\u0005\'\u0000\u0000\u1956\u053c"+ - "\u0001\u0000\u0000\u0000\u1957\u1958\u0007\u001a\u0000\u0000\u1958\u195c"+ - "\u0005\'\u0000\u0000\u1959\u195b\u0007\'\u0000\u0000\u195a\u1959\u0001"+ - "\u0000\u0000\u0000\u195b\u195e\u0001\u0000\u0000\u0000\u195c\u195a\u0001"+ - "\u0000\u0000\u0000\u195c\u195d\u0001\u0000\u0000\u0000\u195d\u053e\u0001"+ - "\u0000\u0000\u0000\u195e\u195c\u0001\u0000\u0000\u0000\u195f\u1960\u0003"+ - "\u0541\u029e\u0000\u1960\u1961\u0005\'\u0000\u0000\u1961\u0540\u0001\u0000"+ - "\u0000\u0000\u1962\u1963\u0007\u001a\u0000\u0000\u1963\u1964\u0003\u0527"+ - "\u0291\u0000\u1964\u0542\u0001\u0000\u0000\u0000\u1965\u1966\u0003\u0549"+ - "\u02a2\u0000\u1966\u0544\u0001\u0000\u0000\u0000\u1967\u1968\u0003\u0549"+ - "\u02a2\u0000\u1968\u1969\u0005.\u0000\u0000\u1969\u196a\u0005.\u0000\u0000"+ - "\u196a\u196b\u0001\u0000\u0000\u0000\u196b\u196c\u0006\u02a0\u0006\u0000"+ - "\u196c\u0546\u0001\u0000\u0000\u0000\u196d\u196e\u0003\u0549\u02a2\u0000"+ - "\u196e\u1970\u0005.\u0000\u0000\u196f\u1971\u0003\u0549\u02a2\u0000\u1970"+ - "\u196f\u0001\u0000\u0000\u0000\u1970\u1971\u0001\u0000\u0000\u0000\u1971"+ - "\u1977\u0001\u0000\u0000\u0000\u1972\u1974\u0007\n\u0000\u0000\u1973\u1975"+ - "\u0007\u0001\u0000\u0000\u1974\u1973\u0001\u0000\u0000\u0000\u1974\u1975"+ - "\u0001\u0000\u0000\u0000\u1975\u1976\u0001\u0000\u0000\u0000\u1976\u1978"+ - "\u0003\u0549\u02a2\u0000\u1977\u1972\u0001\u0000\u0000\u0000\u1977\u1978"+ - "\u0001\u0000\u0000\u0000\u1978\u198a\u0001\u0000\u0000\u0000\u1979\u197a"+ - "\u0005.\u0000\u0000\u197a\u1980\u0003\u0549\u02a2\u0000\u197b\u197d\u0007"+ - "\n\u0000\u0000\u197c\u197e\u0007\u0001\u0000\u0000\u197d\u197c\u0001\u0000"+ - "\u0000\u0000\u197d\u197e\u0001\u0000\u0000\u0000\u197e\u197f\u0001\u0000"+ - "\u0000\u0000\u197f\u1981\u0003\u0549\u02a2\u0000\u1980\u197b\u0001\u0000"+ - "\u0000\u0000\u1980\u1981\u0001\u0000\u0000\u0000\u1981\u198a\u0001\u0000"+ - "\u0000\u0000\u1982\u1983\u0003\u0549\u02a2\u0000\u1983\u1985\u0007\n\u0000"+ - "\u0000\u1984\u1986\u0007\u0001\u0000\u0000\u1985\u1984\u0001\u0000\u0000"+ - "\u0000\u1985\u1986\u0001\u0000\u0000\u0000\u1986\u1987\u0001\u0000\u0000"+ - "\u0000\u1987\u1988\u0003\u0549\u02a2\u0000\u1988\u198a\u0001\u0000\u0000"+ - "\u0000\u1989\u196d\u0001\u0000\u0000\u0000\u1989\u1979\u0001\u0000\u0000"+ - "\u0000\u1989\u1982\u0001\u0000\u0000\u0000\u198a\u0548\u0001\u0000\u0000"+ - "\u0000\u198b\u198d\u0007\u0000\u0000\u0000\u198c\u198b\u0001\u0000\u0000"+ - "\u0000\u198d\u198e\u0001\u0000\u0000\u0000\u198e\u198c\u0001\u0000\u0000"+ - "\u0000\u198e\u198f\u0001\u0000\u0000\u0000\u198f\u054a\u0001\u0000\u0000"+ - "\u0000\u1990\u1991\u0005:\u0000\u0000\u1991\u1995\u0007(\u0000\u0000\u1992"+ - "\u1994\u0007)\u0000\u0000\u1993\u1992\u0001\u0000\u0000\u0000\u1994\u1997"+ - "\u0001\u0000\u0000\u0000\u1995\u1993\u0001\u0000\u0000\u0000\u1995\u1996"+ - "\u0001\u0000\u0000\u0000\u1996\u054c\u0001\u0000\u0000\u0000\u1997\u1995"+ - "\u0001\u0000\u0000\u0000\u1998\u1999\u0005:\u0000\u0000\u1999\u199a\u0005"+ - "\"\u0000\u0000\u199a\u19a2\u0001\u0000\u0000\u0000\u199b\u199c\u0005\\"+ - "\u0000\u0000\u199c\u19a1\t\u0000\u0000\u0000\u199d\u199e\u0005\"\u0000"+ - "\u0000\u199e\u19a1\u0005\"\u0000\u0000\u199f\u19a1\b*\u0000\u0000\u19a0"+ - "\u199b\u0001\u0000\u0000\u0000\u19a0\u199d\u0001\u0000\u0000\u0000\u19a0"+ - "\u199f\u0001\u0000\u0000\u0000\u19a1\u19a4\u0001\u0000\u0000\u0000\u19a2"+ - "\u19a0\u0001\u0000\u0000\u0000\u19a2\u19a3\u0001\u0000\u0000\u0000\u19a3"+ - "\u19a5\u0001\u0000\u0000\u0000\u19a4\u19a2\u0001\u0000\u0000\u0000\u19a5"+ - "\u19a6\u0005\"\u0000\u0000\u19a6\u054e\u0001\u0000\u0000\u0000\u19a7\u19a9"+ - "\u0007+\u0000\u0000\u19a8\u19a7\u0001\u0000\u0000\u0000\u19a9\u19aa\u0001"+ - "\u0000\u0000\u0000\u19aa\u19a8\u0001\u0000\u0000\u0000\u19aa\u19ab\u0001"+ - "\u0000\u0000\u0000\u19ab\u19ac\u0001\u0000\u0000\u0000\u19ac\u19ad\u0006"+ - "\u02a5\u0007\u0000\u19ad\u0550\u0001\u0000\u0000\u0000\u19ae\u19b0\u0005"+ - "\r\u0000\u0000\u19af\u19b1\u0005\n\u0000\u0000\u19b0\u19af\u0001\u0000"+ - "\u0000\u0000\u19b0\u19b1\u0001\u0000\u0000\u0000\u19b1\u19b4\u0001\u0000"+ - "\u0000\u0000\u19b2\u19b4\u0005\n\u0000\u0000\u19b3\u19ae\u0001\u0000\u0000"+ - "\u0000\u19b3\u19b2\u0001\u0000\u0000\u0000\u19b4\u19b5\u0001\u0000\u0000"+ - "\u0000\u19b5\u19b6\u0006\u02a6\u0007\u0000\u19b6\u0552\u0001\u0000\u0000"+ - "\u0000\u19b7\u19b8\u0005-\u0000\u0000\u19b8\u19b9\u0005-\u0000\u0000\u19b9"+ - "\u19bd\u0001\u0000\u0000\u0000\u19ba\u19bc\b,\u0000\u0000\u19bb\u19ba"+ - "\u0001\u0000\u0000\u0000\u19bc\u19bf\u0001\u0000\u0000\u0000\u19bd\u19bb"+ - "\u0001\u0000\u0000\u0000\u19bd\u19be\u0001\u0000\u0000\u0000\u19be\u19c0"+ - "\u0001\u0000\u0000\u0000\u19bf\u19bd\u0001\u0000\u0000\u0000\u19c0\u19c1"+ - "\u0006\u02a7\u0007\u0000\u19c1\u0554\u0001\u0000\u0000\u0000\u19c2\u19c3"+ - "\u0005/\u0000\u0000\u19c3\u19c4\u0005*\u0000\u0000\u19c4\u19db\u0001\u0000"+ - "\u0000\u0000\u19c5\u19c7\u0005/\u0000\u0000\u19c6\u19c5\u0001\u0000\u0000"+ - "\u0000\u19c7\u19ca\u0001\u0000\u0000\u0000\u19c8\u19c6\u0001\u0000\u0000"+ - "\u0000\u19c8\u19c9\u0001\u0000\u0000\u0000\u19c9\u19cb\u0001\u0000\u0000"+ - "\u0000\u19ca\u19c8\u0001\u0000\u0000\u0000\u19cb\u19da\u0003\u0555\u02a8"+ - "\u0000\u19cc\u19da\b-\u0000\u0000\u19cd\u19cf\u0005/\u0000\u0000\u19ce"+ - "\u19cd\u0001\u0000\u0000\u0000\u19cf\u19d0\u0001\u0000\u0000\u0000\u19d0"+ - "\u19ce\u0001\u0000\u0000\u0000\u19d0\u19d1\u0001\u0000\u0000\u0000\u19d1"+ - "\u19d2\u0001\u0000\u0000\u0000\u19d2\u19da\b-\u0000\u0000\u19d3\u19d5"+ - "\u0005*\u0000\u0000\u19d4\u19d3\u0001\u0000\u0000\u0000\u19d5\u19d6\u0001"+ - "\u0000\u0000\u0000\u19d6\u19d4\u0001\u0000\u0000\u0000\u19d6\u19d7\u0001"+ - "\u0000\u0000\u0000\u19d7\u19d8\u0001\u0000\u0000\u0000\u19d8\u19da\b-"+ - "\u0000\u0000\u19d9\u19c8\u0001\u0000\u0000\u0000\u19d9\u19cc\u0001\u0000"+ - "\u0000\u0000\u19d9\u19ce\u0001\u0000\u0000\u0000\u19d9\u19d4\u0001\u0000"+ - "\u0000\u0000\u19da\u19dd\u0001\u0000\u0000\u0000\u19db\u19d9\u0001\u0000"+ - "\u0000\u0000\u19db\u19dc\u0001\u0000\u0000\u0000\u19dc\u19e1\u0001\u0000"+ - "\u0000\u0000\u19dd\u19db\u0001\u0000\u0000\u0000\u19de\u19e0\u0005*\u0000"+ - "\u0000\u19df\u19de\u0001\u0000\u0000\u0000\u19e0\u19e3\u0001\u0000\u0000"+ - "\u0000\u19e1\u19df\u0001\u0000\u0000\u0000\u19e1\u19e2\u0001\u0000\u0000"+ - "\u0000\u19e2\u19e4\u0001\u0000\u0000\u0000\u19e3\u19e1\u0001\u0000\u0000"+ - "\u0000\u19e4\u19e5\u0005*\u0000\u0000\u19e5\u19e6\u0005/\u0000\u0000\u19e6"+ - "\u19e7\u0001\u0000\u0000\u0000\u19e7\u19e8\u0006\u02a8\u0007\u0000\u19e8"+ - "\u0556\u0001\u0000\u0000\u0000\u19e9\u19ea\u0005/\u0000\u0000\u19ea\u19eb"+ - "\u0005*\u0000\u0000\u19eb\u1a04\u0001\u0000\u0000\u0000\u19ec\u19ee\u0005"+ - "/\u0000\u0000\u19ed\u19ec\u0001\u0000\u0000\u0000\u19ee\u19f1\u0001\u0000"+ - "\u0000\u0000\u19ef\u19ed\u0001\u0000\u0000\u0000\u19ef\u19f0\u0001\u0000"+ - "\u0000\u0000\u19f0\u19f2\u0001\u0000\u0000\u0000\u19f1\u19ef\u0001\u0000"+ - "\u0000\u0000\u19f2\u1a03\u0003\u0555\u02a8\u0000\u19f3\u1a03\b-\u0000"+ - "\u0000\u19f4\u19f6\u0005/\u0000\u0000\u19f5\u19f4\u0001\u0000\u0000\u0000"+ - "\u19f6\u19f7\u0001\u0000\u0000\u0000\u19f7\u19f5\u0001\u0000\u0000\u0000"+ - "\u19f7\u19f8\u0001\u0000\u0000\u0000\u19f8\u19f9\u0001\u0000\u0000\u0000"+ - "\u19f9\u1a01\b-\u0000\u0000\u19fa\u19fc\u0005*\u0000\u0000\u19fb\u19fa"+ - "\u0001\u0000\u0000\u0000\u19fc\u19fd\u0001\u0000\u0000\u0000\u19fd\u19fb"+ - "\u0001\u0000\u0000\u0000\u19fd\u19fe\u0001\u0000\u0000\u0000\u19fe\u19ff"+ - "\u0001\u0000\u0000\u0000\u19ff\u1a01\b-\u0000\u0000\u1a00\u19f5\u0001"+ - "\u0000\u0000\u0000\u1a00\u19fb\u0001\u0000\u0000\u0000\u1a01\u1a03\u0001"+ - "\u0000\u0000\u0000\u1a02\u19ef\u0001\u0000\u0000\u0000\u1a02\u19f3\u0001"+ - "\u0000\u0000\u0000\u1a02\u1a00\u0001\u0000\u0000\u0000\u1a03\u1a06\u0001"+ - "\u0000\u0000\u0000\u1a04\u1a02\u0001\u0000\u0000\u0000\u1a04\u1a05\u0001"+ - "\u0000\u0000\u0000\u1a05\u1a18\u0001\u0000\u0000\u0000\u1a06\u1a04\u0001"+ - "\u0000\u0000\u0000\u1a07\u1a09\u0005/\u0000\u0000\u1a08\u1a07\u0001\u0000"+ - "\u0000\u0000\u1a09\u1a0a\u0001\u0000\u0000\u0000\u1a0a\u1a08\u0001\u0000"+ - "\u0000\u0000\u1a0a\u1a0b\u0001\u0000\u0000\u0000\u1a0b\u1a19\u0001\u0000"+ - "\u0000\u0000\u1a0c\u1a0e\u0005*\u0000\u0000\u1a0d\u1a0c\u0001\u0000\u0000"+ - "\u0000\u1a0e\u1a0f\u0001\u0000\u0000\u0000\u1a0f\u1a0d\u0001\u0000\u0000"+ - "\u0000\u1a0f\u1a10\u0001\u0000\u0000\u0000\u1a10\u1a19\u0001\u0000\u0000"+ - "\u0000\u1a11\u1a13\u0005/\u0000\u0000\u1a12\u1a11\u0001\u0000\u0000\u0000"+ - "\u1a13\u1a16\u0001\u0000\u0000\u0000\u1a14\u1a12\u0001\u0000\u0000\u0000"+ - "\u1a14\u1a15\u0001\u0000\u0000\u0000\u1a15\u1a17\u0001\u0000\u0000\u0000"+ - "\u1a16\u1a14\u0001\u0000\u0000\u0000\u1a17\u1a19\u0003\u0557\u02a9\u0000"+ - "\u1a18\u1a08\u0001\u0000\u0000\u0000\u1a18\u1a0d\u0001\u0000\u0000\u0000"+ - "\u1a18\u1a14\u0001\u0000\u0000\u0000\u1a18\u1a19\u0001\u0000\u0000\u0000"+ - "\u1a19\u1a1a\u0001\u0000\u0000\u0000\u1a1a\u1a1b\u0006\u02a9\b\u0000\u1a1b"+ - "\u0558\u0001\u0000\u0000\u0000\u1a1c\u1a28\u0005\\\u0000\u0000\u1a1d\u1a27"+ - "\b.\u0000\u0000\u1a1e\u1a22\u0005\"\u0000\u0000\u1a1f\u1a21\b/\u0000\u0000"+ - "\u1a20\u1a1f\u0001\u0000\u0000\u0000\u1a21\u1a24\u0001\u0000\u0000\u0000"+ - "\u1a22\u1a20\u0001\u0000\u0000\u0000\u1a22\u1a23\u0001\u0000\u0000\u0000"+ - "\u1a23\u1a25\u0001\u0000\u0000\u0000\u1a24\u1a22\u0001\u0000\u0000\u0000"+ - "\u1a25\u1a27\u0005\"\u0000\u0000\u1a26\u1a1d\u0001\u0000\u0000\u0000\u1a26"+ - "\u1a1e\u0001\u0000\u0000\u0000\u1a27\u1a2a\u0001\u0000\u0000\u0000\u1a28"+ - "\u1a26\u0001\u0000\u0000\u0000\u1a28\u1a29\u0001\u0000\u0000\u0000\u1a29"+ - "\u1a32\u0001\u0000\u0000\u0000\u1a2a\u1a28\u0001\u0000\u0000\u0000\u1a2b"+ - "\u1a2f\u0005\"\u0000\u0000\u1a2c\u1a2e\b/\u0000\u0000\u1a2d\u1a2c\u0001"+ - "\u0000\u0000\u0000\u1a2e\u1a31\u0001\u0000\u0000\u0000\u1a2f\u1a2d\u0001"+ - "\u0000\u0000\u0000\u1a2f\u1a30\u0001\u0000\u0000\u0000\u1a30\u1a33\u0001"+ - "\u0000\u0000\u0000\u1a31\u1a2f\u0001\u0000\u0000\u0000\u1a32\u1a2b\u0001"+ - "\u0000\u0000\u0000\u1a32\u1a33\u0001\u0000\u0000\u0000\u1a33\u055a\u0001"+ - "\u0000\u0000\u0000\u1a34\u1a35\u0005\\\u0000\u0000\u1a35\u1a36\u0005\\"+ - "\u0000\u0000\u1a36\u055c\u0001\u0000\u0000\u0000\u1a37\u1a38\t\u0000\u0000"+ - "\u0000\u1a38\u055e\u0001\u0000\u0000\u0000\u1a39\u1a3a\u0003\u0563\u02af"+ - "\u0000\u1a3a\u1a3b\u0005\'\u0000\u0000\u1a3b\u1a3c\u0001\u0000\u0000\u0000"+ - "\u1a3c\u1a3d\u0006\u02ad\t\u0000\u1a3d\u0560\u0001\u0000\u0000\u0000\u1a3e"+ - "\u1a40\u0003\u0563\u02af\u0000\u1a3f\u1a41\u0005\\\u0000\u0000\u1a40\u1a3f"+ - "\u0001\u0000\u0000\u0000\u1a40\u1a41\u0001\u0000\u0000\u0000\u1a41\u1a42"+ - "\u0001\u0000\u0000\u0000\u1a42\u1a43\u0005\u0000\u0000\u0001\u1a43\u0562"+ - "\u0001\u0000\u0000\u0000\u1a44\u1a45\u0005\'\u0000\u0000\u1a45\u1a5c\u0005"+ - "\'\u0000\u0000\u1a46\u1a58\u0005\\\u0000\u0000\u1a47\u1a48\u0005x\u0000"+ - "\u0000\u1a48\u1a59\u0007\'\u0000\u0000\u1a49\u1a4a\u0005u\u0000\u0000"+ - "\u1a4a\u1a4b\u0007\'\u0000\u0000\u1a4b\u1a4c\u0007\'\u0000\u0000\u1a4c"+ - "\u1a4d\u0007\'\u0000\u0000\u1a4d\u1a59\u0007\'\u0000\u0000\u1a4e\u1a4f"+ - "\u0005U\u0000\u0000\u1a4f\u1a50\u0007\'\u0000\u0000\u1a50\u1a51\u0007"+ - "\'\u0000\u0000\u1a51\u1a52\u0007\'\u0000\u0000\u1a52\u1a53\u0007\'\u0000"+ - "\u0000\u1a53\u1a54\u0007\'\u0000\u0000\u1a54\u1a55\u0007\'\u0000\u0000"+ - "\u1a55\u1a56\u0007\'\u0000\u0000\u1a56\u1a59\u0007\'\u0000\u0000\u1a57"+ - "\u1a59\b0\u0000\u0000\u1a58\u1a47\u0001\u0000\u0000\u0000\u1a58\u1a49"+ - "\u0001\u0000\u0000\u0000\u1a58\u1a4e\u0001\u0000\u0000\u0000\u1a58\u1a57"+ - "\u0001\u0000\u0000\u0000\u1a59\u1a5c\u0001\u0000\u0000\u0000\u1a5a\u1a5c"+ - "\b1\u0000\u0000\u1a5b\u1a44\u0001\u0000\u0000\u0000\u1a5b\u1a46\u0001"+ - "\u0000\u0000\u0000\u1a5b\u1a5a\u0001\u0000\u0000\u0000\u1a5c\u1a5f\u0001"+ - "\u0000\u0000\u0000\u1a5d\u1a5b\u0001\u0000\u0000\u0000\u1a5d\u1a5e\u0001"+ - "\u0000\u0000\u0000\u1a5e\u0564\u0001\u0000\u0000\u0000\u1a5f\u1a5d\u0001"+ - "\u0000\u0000\u0000\u1a60\u1a61\u0003\u0569\u02b2\u0000\u1a61\u1a62\u0005"+ - "\'\u0000\u0000\u1a62\u1a63\u0001\u0000\u0000\u0000\u1a63\u1a64\u0006\u02b0"+ - "\t\u0000\u1a64\u0566\u0001\u0000\u0000\u0000\u1a65\u1a67\u0003\u0569\u02b2"+ - "\u0000\u1a66\u1a68\u0005\\\u0000\u0000\u1a67\u1a66\u0001\u0000\u0000\u0000"+ - "\u1a67\u1a68\u0001\u0000\u0000\u0000\u1a68\u1a69\u0001\u0000\u0000\u0000"+ - "\u1a69\u1a6a\u0005\u0000\u0000\u0001\u1a6a\u0568\u0001\u0000\u0000\u0000"+ - "\u1a6b\u1a6c\u0005\'\u0000\u0000\u1a6c\u1a71\u0005\'\u0000\u0000\u1a6d"+ - "\u1a6e\u0005\\\u0000\u0000\u1a6e\u1a71\t\u0000\u0000\u0000\u1a6f\u1a71"+ - "\b1\u0000\u0000\u1a70\u1a6b\u0001\u0000\u0000\u0000\u1a70\u1a6d\u0001"+ - "\u0000\u0000\u0000\u1a70\u1a6f\u0001\u0000\u0000\u0000\u1a71\u1a74\u0001"+ - "\u0000\u0000\u0000\u1a72\u1a70\u0001\u0000\u0000\u0000\u1a72\u1a73\u0001"+ - "\u0000\u0000\u0000\u1a73\u056a\u0001\u0000\u0000\u0000\u1a74\u1a72\u0001"+ - "\u0000\u0000\u0000\u1a75\u1a76\u0003\u054f\u02a5\u0000\u1a76\u1a77\u0001"+ - "\u0000\u0000\u0000\u1a77\u1a78\u0006\u02b3\n\u0000\u1a78\u1a79\u0006\u02b3"+ - "\u0007\u0000\u1a79\u056c\u0001\u0000\u0000\u0000\u1a7a\u1a7b\u0003\u0551"+ - "\u02a6\u0000\u1a7b\u1a7c\u0001\u0000\u0000\u0000\u1a7c\u1a7d\u0006\u02b4"+ - "\u000b\u0000\u1a7d\u1a7e\u0006\u02b4\u0007\u0000\u1a7e\u1a7f\u0006\u02b4"+ - "\f\u0000\u1a7f\u056e\u0001\u0000\u0000\u0000\u1a80\u1a81\u0006\u02b5\r"+ - "\u0000\u1a81\u1a82\u0001\u0000\u0000\u0000\u1a82\u1a83\u0006\u02b5\u000e"+ - "\u0000\u1a83\u1a84\u0006\u02b5\u000f\u0000\u1a84\u0570\u0001\u0000\u0000"+ - "\u0000\u1a85\u1a86\u0003\u054f\u02a5\u0000\u1a86\u1a87\u0001\u0000\u0000"+ - "\u0000\u1a87\u1a88\u0006\u02b6\n\u0000\u1a88\u1a89\u0006\u02b6\u0007\u0000"+ - "\u1a89\u0572\u0001\u0000\u0000\u0000\u1a8a\u1a8b\u0003\u0551\u02a6\u0000"+ - "\u1a8b\u1a8c\u0001\u0000\u0000\u0000\u1a8c\u1a8d\u0006\u02b7\u000b\u0000"+ - "\u1a8d\u1a8e\u0006\u02b7\u0007\u0000\u1a8e\u0574\u0001\u0000\u0000\u0000"+ - "\u1a8f\u1a90\u0005\'\u0000\u0000\u1a90\u1a91\u0001\u0000\u0000\u0000\u1a91"+ - "\u1a92\u0006\u02b8\u0002\u0000\u1a92\u1a93\u0006\u02b8\u0010\u0000\u1a93"+ - "\u0576\u0001\u0000\u0000\u0000\u1a94\u1a95\u0006\u02b9\u0011\u0000\u1a95"+ - "\u1a96\u0001\u0000\u0000\u0000\u1a96\u1a97\u0006\u02b9\u000e\u0000\u1a97"+ - "\u1a98\u0006\u02b9\u000f\u0000\u1a98\u0578\u0001\u0000\u0000\u0000\u1a99"+ - "\u1a9b\b2\u0000\u0000\u1a9a\u1a99\u0001\u0000\u0000\u0000\u1a9b\u1a9c"+ - "\u0001\u0000\u0000\u0000\u1a9c\u1a9a\u0001\u0000\u0000\u0000\u1a9c\u1a9d"+ - "\u0001\u0000\u0000\u0000\u1a9d\u1aa6\u0001\u0000\u0000\u0000\u1a9e\u1aa2"+ - "\u0005$\u0000\u0000\u1a9f\u1aa1\b2\u0000\u0000\u1aa0\u1a9f\u0001\u0000"+ - "\u0000\u0000\u1aa1\u1aa4\u0001\u0000\u0000\u0000\u1aa2\u1aa0\u0001\u0000"+ - "\u0000\u0000\u1aa2\u1aa3\u0001\u0000\u0000\u0000\u1aa3\u1aa6\u0001\u0000"+ - "\u0000\u0000\u1aa4\u1aa2\u0001\u0000\u0000\u0000\u1aa5\u1a9a\u0001\u0000"+ - "\u0000\u0000\u1aa5\u1a9e\u0001\u0000\u0000\u0000\u1aa6\u057a\u0001\u0000"+ - "\u0000\u0000\u1aa7\u1aa9\u0005$\u0000\u0000\u1aa8\u1aaa\u0003\u0531\u0296"+ - "\u0000\u1aa9\u1aa8\u0001\u0000\u0000\u0000\u1aa9\u1aaa\u0001\u0000\u0000"+ - "\u0000\u1aaa\u1aab\u0001\u0000\u0000\u0000\u1aab\u1aac\u0005$\u0000\u0000"+ - "\u1aac\u1aad\u0001\u0000\u0000\u0000\u1aad\u1aae\u0004\u02bb\b\u0000\u1aae"+ - "\u1aaf\u0006\u02bb\u0012\u0000\u1aaf\u1ab0\u0001\u0000\u0000\u0000\u1ab0"+ - "\u1ab1\u0006\u02bb\u000f\u0000\u1ab1\u057c\u0001\u0000\u0000\u0000N\u0000"+ - "\u0001\u0002\u0003\u0004\u05c0\u05c6\u05c8\u05cd\u05d1\u05d3\u05d6\u05df"+ - "\u05e1\u05e6\u05eb\u05ed\u18df\u18e8\u18ec\u18f0\u18f9\u18fb\u1905\u1907"+ - "\u1921\u1923\u1935\u1940\u194b\u195c\u1970\u1974\u1977\u197d\u1980\u1985"+ - "\u1989\u198e\u1995\u19a0\u19a2\u19aa\u19b0\u19b3\u19bd\u19c8\u19d0\u19d6"+ - "\u19d9\u19db\u19e1\u19ef\u19f7\u19fd\u1a00\u1a02\u1a04\u1a0a\u1a0f\u1a14"+ - "\u1a18\u1a22\u1a26\u1a28\u1a2f\u1a32\u1a40\u1a58\u1a5b\u1a5d\u1a67\u1a70"+ - "\u1a72\u1a9c\u1aa2\u1aa5\u1aa9\u0013\u0001\u001c\u0000\u0007\u001d\u0000"+ - "\u0003\u0000\u0000\u0005\u0001\u0000\u0001\u0295\u0001\u0005\u0004\u0000"+ - "\u0001\u02a0\u0002\u0000\u0001\u0000\u0001\u02a9\u0003\u0002\u0002\u0000"+ - "\u0007\u029c\u0000\u0007\u029d\u0000\u0002\u0003\u0000\u0001\u02b5\u0004"+ - "\u0006\u0000\u0000\u0004\u0000\u0000\u0002\u0001\u0000\u0001\u02b9\u0005"+ - "\u0001\u02bb\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 5f0f567336..0000000000 --- a/incubator/binding-pgsql/gen/PostgreSqlLexer.tokens +++ /dev/null @@ -1,1324 +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 -TOPICS=96 -STREAM=97 -ZVIEW=98 -ZVIEWS=99 -TRAILING=100 -TRUE_P=101 -UNION=102 -UNIQUE=103 -USER=104 -USING=105 -VARIADIC=106 -WHEN=107 -WHERE=108 -WINDOW=109 -WITH=110 -AUTHORIZATION=111 -BINARY=112 -COLLATION=113 -CONCURRENTLY=114 -CROSS=115 -CURRENT_SCHEMA=116 -FREEZE=117 -FULL=118 -ILIKE=119 -INNER_P=120 -IS=121 -ISNULL=122 -JOIN=123 -LEFT=124 -LIKE=125 -NATURAL=126 -NOTNULL=127 -OUTER_P=128 -OVER=129 -OVERLAPS=130 -RIGHT=131 -SIMILAR=132 -VERBOSE=133 -ABORT_P=134 -ABSOLUTE_P=135 -ACCESS=136 -ACTION=137 -ADD_P=138 -ADMIN=139 -AFTER=140 -AGGREGATE=141 -ALSO=142 -ALTER=143 -ALWAYS=144 -ASSERTION=145 -ASSIGNMENT=146 -AT=147 -ATTRIBUTE=148 -BACKWARD=149 -BEFORE=150 -BEGIN_P=151 -BY=152 -CACHE=153 -CALLED=154 -CASCADE=155 -CASCADED=156 -CATALOG=157 -CHAIN=158 -CHARACTERISTICS=159 -CHECKPOINT=160 -CLASS=161 -CLOSE=162 -CLUSTER=163 -COMMENT=164 -COMMENTS=165 -COMMIT=166 -COMMITTED=167 -CONFIGURATION=168 -CONNECTION=169 -CONSTRAINTS=170 -CONTENT_P=171 -CONTINUE_P=172 -CONVERSION_P=173 -COPY=174 -COST=175 -CSV=176 -CURSOR=177 -CYCLE=178 -DATA_P=179 -DATABASE=180 -DAY_P=181 -DEALLOCATE=182 -DECLARE=183 -DEFAULTS=184 -DEFERRED=185 -DEFINER=186 -DELETE_P=187 -DELIMITER=188 -DELIMITERS=189 -DICTIONARY=190 -DISABLE_P=191 -DISCARD=192 -DOCUMENT_P=193 -DOMAIN_P=194 -DOUBLE_P=195 -DROP=196 -EACH=197 -ENABLE_P=198 -ENCODING=199 -ENCRYPTED=200 -ENUM_P=201 -ESCAPE=202 -EVENT=203 -EXCLUDE=204 -EXCLUDING=205 -EXCLUSIVE=206 -EXECUTE=207 -EXPLAIN=208 -EXTENSION=209 -EXTERNAL=210 -FAMILY=211 -FIRST_P=212 -FOLLOWING=213 -FORCE=214 -FORWARD=215 -FUNCTION=216 -FUNCTIONS=217 -GLOBAL=218 -GRANTED=219 -HANDLER=220 -HEADER_P=221 -HOLD=222 -HOUR_P=223 -IDENTITY_P=224 -IF_P=225 -IMMEDIATE=226 -IMMUTABLE=227 -IMPLICIT_P=228 -INCLUDING=229 -INCREMENT=230 -INDEX=231 -INDEXES=232 -INHERIT=233 -INHERITS=234 -INLINE_P=235 -INSENSITIVE=236 -INSERT=237 -INSTEAD=238 -INVOKER=239 -ISOLATION=240 -KEY=241 -LABEL=242 -LANGUAGE=243 -LARGE_P=244 -LAST_P=245 -LEAKPROOF=246 -LEVEL=247 -LISTEN=248 -LOAD=249 -LOCAL=250 -LOCATION=251 -LOCK_P=252 -MAPPING=253 -MATCH=254 -MATCHED=255 -MATERIALIZED=256 -MAXVALUE=257 -MERGE=258 -MINUTE_P=259 -MINVALUE=260 -MODE=261 -MONTH_P=262 -MOVE=263 -NAME_P=264 -NAMES=265 -NEXT=266 -NO=267 -NOTHING=268 -NOTIFY=269 -NOWAIT=270 -NULLS_P=271 -OBJECT_P=272 -OF=273 -OFF=274 -OIDS=275 -OPERATOR=276 -OPTION=277 -OPTIONS=278 -OWNED=279 -OWNER=280 -PARSER=281 -PARTIAL=282 -PARTITION=283 -PASSING=284 -PASSWORD=285 -PLANS=286 -PRECEDING=287 -PREPARE=288 -PREPARED=289 -PRESERVE=290 -PRIOR=291 -PRIVILEGES=292 -PROCEDURAL=293 -PROCEDURE=294 -PROGRAM=295 -QUOTE=296 -RANGE=297 -READ=298 -REASSIGN=299 -RECHECK=300 -RECURSIVE=301 -REF=302 -REFRESH=303 -REINDEX=304 -RELATIVE_P=305 -RELEASE=306 -RENAME=307 -REPEATABLE=308 -REPLACE=309 -REPLICA=310 -RESET=311 -RESTART=312 -RESTRICT=313 -RETURNS=314 -REVOKE=315 -ROLE=316 -ROLLBACK=317 -ROWS=318 -RULE=319 -SAVEPOINT=320 -SCHEMA=321 -SCROLL=322 -SEARCH=323 -SECOND_P=324 -SECURITY=325 -SEQUENCE=326 -SEQUENCES=327 -SERIALIZABLE=328 -SERVER=329 -SESSION=330 -SET=331 -SHARE=332 -SHOW=333 -SIMPLE=334 -SNAPSHOT=335 -STABLE=336 -STANDALONE_P=337 -START=338 -STATEMENT=339 -STATISTICS=340 -STDIN=341 -STDOUT=342 -STORAGE=343 -STRICT_P=344 -STRIP_P=345 -SYSID=346 -SYSTEM_P=347 -TABLES=348 -TABLESPACE=349 -TEMP=350 -TEMPLATE=351 -TEMPORARY=352 -TEXT_P=353 -TRANSACTION=354 -TRIGGER=355 -TRUNCATE=356 -TRUSTED=357 -TYPE_P=358 -TYPES_P=359 -UNBOUNDED=360 -UNCOMMITTED=361 -UNENCRYPTED=362 -UNKNOWN=363 -UNLISTEN=364 -UNLOGGED=365 -UNTIL=366 -UPDATE=367 -VACUUM=368 -VALID=369 -VALIDATE=370 -VALIDATOR=371 -VARYING=372 -VERSION_P=373 -VIEW=374 -VOLATILE=375 -WHITESPACE_P=376 -WITHOUT=377 -WORK=378 -WRAPPER=379 -WRITE=380 -XML_P=381 -YEAR_P=382 -YES_P=383 -ZONE=384 -BETWEEN=385 -BIGINT=386 -BIT=387 -BOOLEAN_P=388 -CHAR_P=389 -CHARACTER=390 -COALESCE=391 -DEC=392 -DECIMAL_P=393 -EXISTS=394 -EXTRACT=395 -FLOAT_P=396 -GREATEST=397 -INOUT=398 -INT_P=399 -INTEGER=400 -INTERVAL=401 -LEAST=402 -NATIONAL=403 -NCHAR=404 -NONE=405 -NULLIF=406 -NUMERIC=407 -OVERLAY=408 -POSITION=409 -PRECISION=410 -REAL=411 -ROW=412 -SETOF=413 -SMALLINT=414 -SUBSTRING=415 -TIME=416 -TIMESTAMP=417 -TREAT=418 -TRIM=419 -VALUES=420 -VARCHAR=421 -XMLATTRIBUTES=422 -XMLCOMMENT=423 -XMLAGG=424 -XML_IS_WELL_FORMED=425 -XML_IS_WELL_FORMED_DOCUMENT=426 -XML_IS_WELL_FORMED_CONTENT=427 -XPATH=428 -XPATH_EXISTS=429 -XMLCONCAT=430 -XMLELEMENT=431 -XMLEXISTS=432 -XMLFOREST=433 -XMLPARSE=434 -XMLPI=435 -XMLROOT=436 -XMLSERIALIZE=437 -CALL=438 -CURRENT_P=439 -ATTACH=440 -DETACH=441 -EXPRESSION=442 -GENERATED=443 -LOGGED=444 -STORED=445 -INCLUDE=446 -ROUTINE=447 -TRANSFORM=448 -IMPORT_P=449 -POLICY=450 -METHOD=451 -REFERENCING=452 -NEW=453 -OLD=454 -VALUE_P=455 -SUBSCRIPTION=456 -PUBLICATION=457 -OUT_P=458 -END_P=459 -ROUTINES=460 -SCHEMAS=461 -PROCEDURES=462 -INPUT_P=463 -SUPPORT=464 -PARALLEL=465 -SQL_P=466 -DEPENDS=467 -OVERRIDING=468 -CONFLICT=469 -SKIP_P=470 -LOCKED=471 -TIES=472 -ROLLUP=473 -CUBE=474 -GROUPING=475 -SETS=476 -TABLESAMPLE=477 -ORDINALITY=478 -XMLTABLE=479 -COLUMNS=480 -XMLNAMESPACES=481 -ROWTYPE=482 -NORMALIZED=483 -WITHIN=484 -FILTER=485 -GROUPS=486 -OTHERS=487 -NFC=488 -NFD=489 -NFKC=490 -NFKD=491 -UESCAPE=492 -VIEWS=493 -NORMALIZE=494 -DUMP=495 -PRINT_STRICT_PARAMS=496 -VARIABLE_CONFLICT=497 -ERROR=498 -USE_VARIABLE=499 -USE_COLUMN=500 -ALIAS=501 -CONSTANT=502 -PERFORM=503 -GET=504 -DIAGNOSTICS=505 -STACKED=506 -ELSIF=507 -WHILE=508 -REVERSE=509 -FOREACH=510 -SLICE=511 -EXIT=512 -RETURN=513 -QUERY=514 -RAISE=515 -SQLSTATE=516 -DEBUG=517 -LOG=518 -INFO=519 -NOTICE=520 -WARNING=521 -EXCEPTION=522 -ASSERT=523 -LOOP=524 -OPEN=525 -ABS=526 -CBRT=527 -CEIL=528 -CEILING=529 -DEGREES=530 -DIV=531 -EXP=532 -FACTORIAL=533 -FLOOR=534 -GCD=535 -LCM=536 -LN=537 -LOG10=538 -MIN_SCALE=539 -MOD=540 -PI=541 -POWER=542 -RADIANS=543 -ROUND=544 -SCALE=545 -SIGN=546 -SQRT=547 -TRIM_SCALE=548 -TRUNC=549 -WIDTH_BUCKET=550 -RANDOM=551 -SETSEED=552 -ACOS=553 -ACOSD=554 -ASIN=555 -ASIND=556 -ATAN=557 -ATAND=558 -ATAN2=559 -ATAN2D=560 -COS=561 -COSD=562 -COT=563 -COTD=564 -SIN=565 -SIND=566 -TAN=567 -TAND=568 -SINH=569 -COSH=570 -TANH=571 -ASINH=572 -ACOSH=573 -ATANH=574 -BIT_LENGTH=575 -CHAR_LENGTH=576 -CHARACTER_LENGTH=577 -LOWER=578 -OCTET_LENGTH=579 -UPPER=580 -ASCII=581 -BTRIM=582 -CHR=583 -CONCAT=584 -CONCAT_WS=585 -FORMAT=586 -INITCAP=587 -LENGTH=588 -LPAD=589 -LTRIM=590 -MD5=591 -PARSE_IDENT=592 -PG_CLIENT_ENCODING=593 -QUOTE_IDENT=594 -QUOTE_LITERAL=595 -QUOTE_NULLABLE=596 -REGEXP_COUNT=597 -REGEXP_INSTR=598 -REGEXP_LIKE=599 -REGEXP_MATCH=600 -REGEXP_MATCHES=601 -REGEXP_REPLACE=602 -REGEXP_SPLIT_TO_ARRAY=603 -REGEXP_SPLIT_TO_TABLE=604 -REGEXP_SUBSTR=605 -REPEAT=606 -RPAD=607 -RTRIM=608 -SPLIT_PART=609 -STARTS_WITH=610 -STRING_TO_ARRAY=611 -STRING_TO_TABLE=612 -STRPOS=613 -SUBSTR=614 -TO_ASCII=615 -TO_HEX=616 -TRANSLATE=617 -UNISTR=618 -AGE=619 -CLOCK_TIMESTAMP=620 -DATE_BIN=621 -DATE_PART=622 -DATE_TRUNC=623 -ISFINITE=624 -JUSTIFY_DAYS=625 -JUSTIFY_HOURS=626 -JUSTIFY_INTERVAL=627 -MAKE_DATE=628 -MAKE_INTERVAL=629 -MAKE_TIME=630 -MAKE_TIMESTAMP=631 -MAKE_TIMESTAMPTZ=632 -NOW=633 -STATEMENT_TIMESTAMP=634 -TIMEOFDAY=635 -TRANSACTION_TIMESTAMP=636 -TO_TIMESTAMP=637 -TO_CHAR=638 -TO_DATE=639 -TO_NUMBER=640 -Identifier=641 -QuotedIdentifier=642 -UnterminatedQuotedIdentifier=643 -InvalidQuotedIdentifier=644 -InvalidUnterminatedQuotedIdentifier=645 -UnicodeQuotedIdentifier=646 -UnterminatedUnicodeQuotedIdentifier=647 -InvalidUnicodeQuotedIdentifier=648 -InvalidUnterminatedUnicodeQuotedIdentifier=649 -StringConstant=650 -UnterminatedStringConstant=651 -UnicodeEscapeStringConstant=652 -UnterminatedUnicodeEscapeStringConstant=653 -BeginDollarStringConstant=654 -BinaryStringConstant=655 -UnterminatedBinaryStringConstant=656 -InvalidBinaryStringConstant=657 -InvalidUnterminatedBinaryStringConstant=658 -HexadecimalStringConstant=659 -UnterminatedHexadecimalStringConstant=660 -InvalidHexadecimalStringConstant=661 -InvalidUnterminatedHexadecimalStringConstant=662 -Integral=663 -NumericFail=664 -Numeric=665 -PLSQLVARIABLENAME=666 -PLSQLIDENTIFIER=667 -Whitespace=668 -Newline=669 -LineComment=670 -BlockComment=671 -UnterminatedBlockComment=672 -MetaCommand=673 -EndMetaCommand=674 -ErrorCharacter=675 -EscapeStringConstant=676 -UnterminatedEscapeStringConstant=677 -InvalidEscapeStringConstant=678 -InvalidUnterminatedEscapeStringConstant=679 -AfterEscapeStringConstantMode_NotContinued=680 -AfterEscapeStringConstantWithNewlineMode_NotContinued=681 -DollarText=682 -EndDollarStringConstant=683 -AfterEscapeStringConstantWithNewlineMode_Continued=684 -'$'=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 -'TOPICS'=96 -'STREAM'=97 -'ZVIEW'=98 -'ZVIEWS'=99 -'TRAILING'=100 -'TRUE'=101 -'UNION'=102 -'UNIQUE'=103 -'USER'=104 -'USING'=105 -'VARIADIC'=106 -'WHEN'=107 -'WHERE'=108 -'WINDOW'=109 -'WITH'=110 -'AUTHORIZATION'=111 -'BINARY'=112 -'COLLATION'=113 -'CONCURRENTLY'=114 -'CROSS'=115 -'CURRENT_SCHEMA'=116 -'FREEZE'=117 -'FULL'=118 -'ILIKE'=119 -'INNER'=120 -'IS'=121 -'ISNULL'=122 -'JOIN'=123 -'LEFT'=124 -'LIKE'=125 -'NATURAL'=126 -'NOTNULL'=127 -'OUTER'=128 -'OVER'=129 -'OVERLAPS'=130 -'RIGHT'=131 -'SIMILAR'=132 -'VERBOSE'=133 -'ABORT'=134 -'ABSOLUTE'=135 -'ACCESS'=136 -'ACTION'=137 -'ADD'=138 -'ADMIN'=139 -'AFTER'=140 -'AGGREGATE'=141 -'ALSO'=142 -'ALTER'=143 -'ALWAYS'=144 -'ASSERTION'=145 -'ASSIGNMENT'=146 -'AT'=147 -'ATTRIBUTE'=148 -'BACKWARD'=149 -'BEFORE'=150 -'BEGIN'=151 -'BY'=152 -'CACHE'=153 -'CALLED'=154 -'CASCADE'=155 -'CASCADED'=156 -'CATALOG'=157 -'CHAIN'=158 -'CHARACTERISTICS'=159 -'CHECKPOINT'=160 -'CLASS'=161 -'CLOSE'=162 -'CLUSTER'=163 -'COMMENT'=164 -'COMMENTS'=165 -'COMMIT'=166 -'COMMITTED'=167 -'CONFIGURATION'=168 -'CONNECTION'=169 -'CONSTRAINTS'=170 -'CONTENT'=171 -'CONTINUE'=172 -'CONVERSION'=173 -'COPY'=174 -'COST'=175 -'CSV'=176 -'CURSOR'=177 -'CYCLE'=178 -'DATA'=179 -'DATABASE'=180 -'DAY'=181 -'DEALLOCATE'=182 -'DECLARE'=183 -'DEFAULTS'=184 -'DEFERRED'=185 -'DEFINER'=186 -'DELETE'=187 -'DELIMITER'=188 -'DELIMITERS'=189 -'DICTIONARY'=190 -'DISABLE'=191 -'DISCARD'=192 -'DOCUMENT'=193 -'DOMAIN'=194 -'DOUBLE'=195 -'DROP'=196 -'EACH'=197 -'ENABLE'=198 -'ENCODING'=199 -'ENCRYPTED'=200 -'ENUM'=201 -'ESCAPE'=202 -'EVENT'=203 -'EXCLUDE'=204 -'EXCLUDING'=205 -'EXCLUSIVE'=206 -'EXECUTE'=207 -'EXPLAIN'=208 -'EXTENSION'=209 -'EXTERNAL'=210 -'FAMILY'=211 -'FIRST'=212 -'FOLLOWING'=213 -'FORCE'=214 -'FORWARD'=215 -'FUNCTION'=216 -'FUNCTIONS'=217 -'GLOBAL'=218 -'GRANTED'=219 -'HANDLER'=220 -'HEADER'=221 -'HOLD'=222 -'HOUR'=223 -'IDENTITY'=224 -'IF'=225 -'IMMEDIATE'=226 -'IMMUTABLE'=227 -'IMPLICIT'=228 -'INCLUDING'=229 -'INCREMENT'=230 -'INDEX'=231 -'INDEXES'=232 -'INHERIT'=233 -'INHERITS'=234 -'INLINE'=235 -'INSENSITIVE'=236 -'INSERT'=237 -'INSTEAD'=238 -'INVOKER'=239 -'ISOLATION'=240 -'KEY'=241 -'LABEL'=242 -'LANGUAGE'=243 -'LARGE'=244 -'LAST'=245 -'LEAKPROOF'=246 -'LEVEL'=247 -'LISTEN'=248 -'LOAD'=249 -'LOCAL'=250 -'LOCATION'=251 -'LOCK'=252 -'MAPPING'=253 -'MATCH'=254 -'MATCHED'=255 -'MATERIALIZED'=256 -'MAXVALUE'=257 -'MERGE'=258 -'MINUTE'=259 -'MINVALUE'=260 -'MODE'=261 -'MONTH'=262 -'MOVE'=263 -'NAME'=264 -'NAMES'=265 -'NEXT'=266 -'NO'=267 -'NOTHING'=268 -'NOTIFY'=269 -'NOWAIT'=270 -'NULLS'=271 -'OBJECT'=272 -'OF'=273 -'OFF'=274 -'OIDS'=275 -'OPERATOR'=276 -'OPTION'=277 -'OPTIONS'=278 -'OWNED'=279 -'OWNER'=280 -'PARSER'=281 -'PARTIAL'=282 -'PARTITION'=283 -'PASSING'=284 -'PASSWORD'=285 -'PLANS'=286 -'PRECEDING'=287 -'PREPARE'=288 -'PREPARED'=289 -'PRESERVE'=290 -'PRIOR'=291 -'PRIVILEGES'=292 -'PROCEDURAL'=293 -'PROCEDURE'=294 -'PROGRAM'=295 -'QUOTE'=296 -'RANGE'=297 -'READ'=298 -'REASSIGN'=299 -'RECHECK'=300 -'RECURSIVE'=301 -'REF'=302 -'REFRESH'=303 -'REINDEX'=304 -'RELATIVE'=305 -'RELEASE'=306 -'RENAME'=307 -'REPEATABLE'=308 -'REPLACE'=309 -'REPLICA'=310 -'RESET'=311 -'RESTART'=312 -'RESTRICT'=313 -'RETURNS'=314 -'REVOKE'=315 -'ROLE'=316 -'ROLLBACK'=317 -'ROWS'=318 -'RULE'=319 -'SAVEPOINT'=320 -'SCHEMA'=321 -'SCROLL'=322 -'SEARCH'=323 -'SECOND'=324 -'SECURITY'=325 -'SEQUENCE'=326 -'SEQUENCES'=327 -'SERIALIZABLE'=328 -'SERVER'=329 -'SESSION'=330 -'SET'=331 -'SHARE'=332 -'SHOW'=333 -'SIMPLE'=334 -'SNAPSHOT'=335 -'STABLE'=336 -'STANDALONE'=337 -'START'=338 -'STATEMENT'=339 -'STATISTICS'=340 -'STDIN'=341 -'STDOUT'=342 -'STORAGE'=343 -'STRICT'=344 -'STRIP'=345 -'SYSID'=346 -'SYSTEM'=347 -'TABLES'=348 -'TABLESPACE'=349 -'TEMP'=350 -'TEMPLATE'=351 -'TEMPORARY'=352 -'TEXT'=353 -'TRANSACTION'=354 -'TRIGGER'=355 -'TRUNCATE'=356 -'TRUSTED'=357 -'TYPE'=358 -'TYPES'=359 -'UNBOUNDED'=360 -'UNCOMMITTED'=361 -'UNENCRYPTED'=362 -'UNKNOWN'=363 -'UNLISTEN'=364 -'UNLOGGED'=365 -'UNTIL'=366 -'UPDATE'=367 -'VACUUM'=368 -'VALID'=369 -'VALIDATE'=370 -'VALIDATOR'=371 -'VARYING'=372 -'VERSION'=373 -'VIEW'=374 -'VOLATILE'=375 -'WHITESPACE'=376 -'WITHOUT'=377 -'WORK'=378 -'WRAPPER'=379 -'WRITE'=380 -'XML'=381 -'YEAR'=382 -'YES'=383 -'ZONE'=384 -'BETWEEN'=385 -'BIGINT'=386 -'BIT'=387 -'BOOLEAN'=388 -'CHAR'=389 -'CHARACTER'=390 -'COALESCE'=391 -'DEC'=392 -'DECIMAL'=393 -'EXISTS'=394 -'EXTRACT'=395 -'FLOAT'=396 -'GREATEST'=397 -'INOUT'=398 -'INT'=399 -'INTEGER'=400 -'INTERVAL'=401 -'LEAST'=402 -'NATIONAL'=403 -'NCHAR'=404 -'NONE'=405 -'NULLIF'=406 -'NUMERIC'=407 -'OVERLAY'=408 -'POSITION'=409 -'PRECISION'=410 -'REAL'=411 -'ROW'=412 -'SETOF'=413 -'SMALLINT'=414 -'SUBSTRING'=415 -'TIME'=416 -'TIMESTAMP'=417 -'TREAT'=418 -'TRIM'=419 -'VALUES'=420 -'VARCHAR'=421 -'XMLATTRIBUTES'=422 -'XMLCOMMENT'=423 -'XMLAGG'=424 -'XML_IS_WELL_FORMED'=425 -'XML_IS_WELL_FORMED_DOCUMENT'=426 -'XML_IS_WELL_FORMED_CONTENT'=427 -'XPATH'=428 -'XPATH_EXISTS'=429 -'XMLCONCAT'=430 -'XMLELEMENT'=431 -'XMLEXISTS'=432 -'XMLFOREST'=433 -'XMLPARSE'=434 -'XMLPI'=435 -'XMLROOT'=436 -'XMLSERIALIZE'=437 -'CALL'=438 -'CURRENT'=439 -'ATTACH'=440 -'DETACH'=441 -'EXPRESSION'=442 -'GENERATED'=443 -'LOGGED'=444 -'STORED'=445 -'INCLUDE'=446 -'ROUTINE'=447 -'TRANSFORM'=448 -'IMPORT'=449 -'POLICY'=450 -'METHOD'=451 -'REFERENCING'=452 -'NEW'=453 -'OLD'=454 -'VALUE'=455 -'SUBSCRIPTION'=456 -'PUBLICATION'=457 -'OUT'=458 -'END'=459 -'ROUTINES'=460 -'SCHEMAS'=461 -'PROCEDURES'=462 -'INPUT'=463 -'SUPPORT'=464 -'PARALLEL'=465 -'SQL'=466 -'DEPENDS'=467 -'OVERRIDING'=468 -'CONFLICT'=469 -'SKIP'=470 -'LOCKED'=471 -'TIES'=472 -'ROLLUP'=473 -'CUBE'=474 -'GROUPING'=475 -'SETS'=476 -'TABLESAMPLE'=477 -'ORDINALITY'=478 -'XMLTABLE'=479 -'COLUMNS'=480 -'XMLNAMESPACES'=481 -'ROWTYPE'=482 -'NORMALIZED'=483 -'WITHIN'=484 -'FILTER'=485 -'GROUPS'=486 -'OTHERS'=487 -'NFC'=488 -'NFD'=489 -'NFKC'=490 -'NFKD'=491 -'UESCAPE'=492 -'VIEWS'=493 -'NORMALIZE'=494 -'DUMP'=495 -'PRINT_STRICT_PARAMS'=496 -'VARIABLE_CONFLICT'=497 -'ERROR'=498 -'USE_VARIABLE'=499 -'USE_COLUMN'=500 -'ALIAS'=501 -'CONSTANT'=502 -'PERFORM'=503 -'GET'=504 -'DIAGNOSTICS'=505 -'STACKED'=506 -'ELSIF'=507 -'WHILE'=508 -'REVERSE'=509 -'FOREACH'=510 -'SLICE'=511 -'EXIT'=512 -'RETURN'=513 -'QUERY'=514 -'RAISE'=515 -'SQLSTATE'=516 -'DEBUG'=517 -'LOG'=518 -'INFO'=519 -'NOTICE'=520 -'WARNING'=521 -'EXCEPTION'=522 -'ASSERT'=523 -'LOOP'=524 -'OPEN'=525 -'ABS'=526 -'CBRT'=527 -'CEIL'=528 -'CEILING'=529 -'DEGREES'=530 -'DIV'=531 -'EXP'=532 -'FACTORIAL'=533 -'FLOOR'=534 -'GCD'=535 -'LCM'=536 -'LN'=537 -'LOG10'=538 -'MIN_SCALE'=539 -'MOD'=540 -'PI'=541 -'POWER'=542 -'RADIANS'=543 -'ROUND'=544 -'SCALE'=545 -'SIGN'=546 -'SQRT'=547 -'TRIM_SCALE'=548 -'TRUNC'=549 -'WIDTH_BUCKET'=550 -'RANDOM'=551 -'SETSEED'=552 -'ACOS'=553 -'ACOSD'=554 -'ASIN'=555 -'ASIND'=556 -'ATAN'=557 -'ATAND'=558 -'ATAN2'=559 -'ATAN2D'=560 -'COS'=561 -'COSD'=562 -'COT'=563 -'COTD'=564 -'SIN'=565 -'SIND'=566 -'TAN'=567 -'TAND'=568 -'SINH'=569 -'COSH'=570 -'TANH'=571 -'ASINH'=572 -'ACOSH'=573 -'ATANH'=574 -'BIT_LENGTH'=575 -'CHAR_LENGTH'=576 -'CHARACTER_LENGTH'=577 -'LOWER'=578 -'OCTET_LENGTH'=579 -'UPPER'=580 -'ASCII'=581 -'BTRIM'=582 -'CHR'=583 -'CONCAT'=584 -'CONCAT_WS'=585 -'FORMAT'=586 -'INITCAP'=587 -'LENGTH'=588 -'LPAD'=589 -'LTRIM'=590 -'MD5'=591 -'PARSE_IDENT'=592 -'PG_CLIENT_ENCODING'=593 -'QUOTE_IDENT'=594 -'QUOTE_LITERAL'=595 -'QUOTE_NULLABLE'=596 -'REGEXP_COUNT'=597 -'REGEXP_INSTR'=598 -'REGEXP_LIKE'=599 -'REGEXP_MATCH'=600 -'REGEXP_MATCHES'=601 -'REGEXP_REPLACE'=602 -'REGEXP_SPLIT_TO_ARRAY'=603 -'REGEXP_SPLIT_TO_TABLE'=604 -'REGEXP_SUBSTR'=605 -'REPEAT'=606 -'RPAD'=607 -'RTRIM'=608 -'SPLIT_PART'=609 -'STARTS_WITH'=610 -'STRING_TO_ARRAY'=611 -'STRING_TO_TABLE'=612 -'STRPOS'=613 -'SUBSTR'=614 -'TO_ASCII'=615 -'TO_HEX'=616 -'TRANSLATE'=617 -'UNISTR'=618 -'AGE'=619 -'CLOCK_TIMESTAMP'=620 -'DATE_BIN'=621 -'DATE_PART'=622 -'DATE_TRUNC'=623 -'ISFINITE'=624 -'JUSTIFY_DAYS'=625 -'JUSTIFY_HOURS'=626 -'JUSTIFY_INTERVAL'=627 -'MAKE_DATE'=628 -'MAKE_INTERVAL'=629 -'MAKE_TIME'=630 -'MAKE_TIMESTAMP'=631 -'MAKE_TIMESTAMPTZ'=632 -'NOW'=633 -'STATEMENT_TIMESTAMP'=634 -'TIMEOFDAY'=635 -'TRANSACTION_TIMESTAMP'=636 -'TO_TIMESTAMP'=637 -'TO_CHAR'=638 -'TO_DATE'=639 -'TO_NUMBER'=640 -'\\\\'=674 -'\''=684 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 cdab9ac648..7e011294c1 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 @@ -55,7 +55,6 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} - read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt index 75968ad335..1e0922644c 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt @@ -51,6 +51,29 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "GRANT ALL PRIVILEGES ON MATERIALIZED VIEW public.distinct_cities TO app;" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt index b5c4bbd1e8..9e8d55f15c 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt @@ -52,6 +52,28 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "GRANT ALL PRIVILEGES ON MATERIALIZED VIEW public.distinct_cities TO app;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() 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 ad26723f40..b75988f14f 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 @@ -1666,7 +1666,7 @@ private void decodeCreateZviewCommand( long authorization, String statement) { - if (server.commandsProcessed == 5 || + if (server.commandsProcessed == 6 || server.commandsProcessed == COMMAND_PROCESSED_ERRORED) { final int length = statement.length(); @@ -1689,22 +1689,26 @@ private void decodeCreateZviewCommand( newStatement = binding.createView.generate(view); } else if (server.commandsProcessed == 1) + { + newStatement = binding.grantSource.generate("MATERIALIZED VIEW", view.schema(), view.name(), server.user); + } + else if (server.commandsProcessed == 2) { newStatement = binding.describeView.generate(view); typeCommand = typeFlushCommand; dataCommand = rowDataCommand; server.columns.clear(); } - else if (server.commandsProcessed == 2) + else if (server.commandsProcessed == 3) { user = DEFAULT_USER_HASH; newStatement = binding.createTopic.generate(view, server.columns); } - else if (server.commandsProcessed == 3) + else if (server.commandsProcessed == 4) { newStatement = binding.createSink.generateOutgress(server.columns, view); } - else if (server.commandsProcessed == 4) + else if (server.commandsProcessed == 5) { newStatement = binding.catalogInsert.generate(ZVIEW_TABLE_NAME, view.name(), statement); } From 13fcdb64214ab6e43708c89705acd4126d4b1907 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 2 Dec 2024 13:25:15 -0800 Subject: [PATCH 039/104] WIP --- .gitignore | 3 +++ .../risingwave/streams/EffectiveIT.java | 24 ++++++++--------- .../binding/risingwave/streams/PgsqlIT.java | 26 +++++++++---------- 3 files changed, 28 insertions(+), 25 deletions(-) diff --git a/.gitignore b/.gitignore index 922b355567..797590a619 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,6 @@ node_modules/ *.pdf *.zshrc hs_err_pid*.log +*.interp +*.tokens +gen/ diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java index 5dfa9a0fd5..ab2cafc499 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java @@ -38,10 +38,10 @@ public class EffectiveIT @Test @Specification({ - "${app}/create.table.with.primary.key/client", - "${app}/create.table.with.primary.key/server" + "${app}/create.ztable.with.primary.key/client", + "${app}/create.ztable.with.primary.key/server" }) - public void shouldCreateTableWithPrimaryKey() throws Exception + public void shouldCreateZtableWithPrimaryKey() throws Exception { k3po.finish(); } @@ -145,9 +145,9 @@ public void shouldCreateStreamWithIncludes() throws Exception @Test @Specification({ - "${app}/create.table.with.primary.key.and.includes/client", - "${app}/create.table.with.primary.key.and.includes/server" }) - public void shouldCreateTableWithPrimaryKeyAndIncludes() throws Exception + "${app}/create.ztable.with.primary.key.and.includes/client", + "${app}/create.ztable.with.primary.key.and.includes/server" }) + public void shouldCreateZtableWithPrimaryKeyAndIncludes() throws Exception { k3po.finish(); } @@ -193,9 +193,9 @@ public void shouldSetVariable() throws Exception @Test @Specification({ - "${app}/drop.table/client", - "${app}/drop.table/server" }) - public void shouldDropTable() throws Exception + "${app}/drop.ztable/client", + "${app}/drop.ztable/server" }) + public void shouldDropZtable() throws Exception { k3po.finish(); } @@ -220,9 +220,9 @@ public void shouldDropZview() throws Exception @Test @Specification({ - "${app}/alter.table.add.column/client", - "${app}/alter.table.add.column/server" }) - public void shouldAlterTableAddColumn() throws Exception + "${app}/alter.ztable.add.column/client", + "${app}/alter.ztable.add.column/server" }) + public void shouldAlterZtableAddColumn() throws Exception { k3po.finish(); } diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java index 6c0303d11b..8348814737 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java @@ -38,10 +38,10 @@ public class PgsqlIT @Test @Specification({ - "${app}/create.table.with.primary.key/client", - "${app}/create.table.with.primary.key/server" + "${app}/create.ztable.with.primary.key/client", + "${app}/create.ztable.with.primary.key/server" }) - public void shouldCreateTableWithPrimaryKey() throws Exception + public void shouldCreateZtableWithPrimaryKey() throws Exception { k3po.finish(); } @@ -145,8 +145,8 @@ public void shouldCreateStreamWithIncludes() throws Exception @Test @Specification({ - "${app}/create.table.with.primary.key.and.includes/client", - "${app}/create.table.with.primary.key.and.includes/server" }) + "${app}/create.ztable.with.primary.key.and.includes/client", + "${app}/create.ztable.with.primary.key.and.includes/server" }) public void shouldCreateTableWithPrimaryKeyAndIncludes() throws Exception { k3po.finish(); @@ -191,9 +191,9 @@ public void shouldSetVariable() throws Exception @Test @Specification({ - "${app}/drop.table/client", - "${app}/drop.table/server" }) - public void shouldDropTable() throws Exception + "${app}/drop.ztable/client", + "${app}/drop.ztable/server" }) + public void shouldDropZtable() throws Exception { k3po.finish(); } @@ -218,8 +218,8 @@ public void shouldDropZview() throws Exception @Test @Specification({ - "${app}/alter.table.add.column/client", - "${app}/alter.table.add.column/server" }) + "${app}/alter.ztable.add.column/client", + "${app}/alter.ztable.add.column/server" }) public void shouldAlterTableAddColumn() throws Exception { k3po.finish(); @@ -236,9 +236,9 @@ public void shouldAlterStreamAddColumn() throws Exception @Test @Specification({ - "${app}/alter.table.modify.column.rejected/client", - "${app}/alter.table.modify.column.rejected/server" }) - public void shouldNotAlterTableModifyColumn() throws Exception + "${app}/alter.ztable.modify.column.rejected/client", + "${app}/alter.ztable.modify.column.rejected/server" }) + public void shouldNotAlterZtableModifyColumn() throws Exception { k3po.finish(); } From 7d8c68d9f559bdc2d7b7a51e740b095f892d6279 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 2 Dec 2024 15:12:02 -0800 Subject: [PATCH 040/104] WIP --- .../client.rpt | 23 ++++++++++++++++++ .../server.rpt | 23 ++++++++++++++++++ .../create.ztable.with.primary.key/client.rpt | 24 +++++++++++++++++++ .../create.ztable.with.primary.key/server.rpt | 23 ++++++++++++++++++ .../query.with.multiple.statements/client.rpt | 23 ++++++++++++++++++ .../query.with.multiple.statements/server.rpt | 23 ++++++++++++++++++ .../stream/RisingwaveProxyFactory.java | 13 ++++++---- 7 files changed, 148 insertions(+), 4 deletions(-) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/client.rpt index aea654d790..c506cd9b8a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/client.rpt @@ -194,6 +194,29 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "INSERT INTO zb_catalog.ztables (name, sql) VALUES " + "('cities', 'CREATE ZTABLE IF NOT EXISTS cities (id VARCHAR, name VARCHAR, description VARCHAR, zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP, PRIMARY KEY (id));');" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("INSERT 0 2") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/server.rpt index 1c08badfc6..b522a4f85b 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/server.rpt @@ -192,6 +192,29 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "INSERT INTO zb_catalog.ztables (name, sql) VALUES " + "('cities', 'CREATE ZTABLE IF NOT EXISTS cities (id VARCHAR, name VARCHAR, description VARCHAR, zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP, PRIMARY KEY (id));');" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("INSERT 0 2") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + accepted read zilla:begin.ext ${pgsql:beginEx() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/client.rpt index 8e1a9a7bbf..08b5cc23b9 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/client.rpt @@ -184,6 +184,30 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "INSERT INTO zb_catalog.ztables (name, sql) VALUES " + "('cities', 'CREATE ZTABLE IF NOT EXISTS cities (id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));');" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("INSERT 0 2") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/server.rpt index 9c73ff870c..00ca766551 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/server.rpt @@ -182,6 +182,29 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "INSERT INTO zb_catalog.ztables (name, sql) VALUES " + "('cities', 'CREATE ZTABLE IF NOT EXISTS cities (id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));');" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("INSERT 0 2") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + accepted read zilla:begin.ext ${pgsql:beginEx() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt index 6be23273f2..f3d1d47b37 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt @@ -184,6 +184,29 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "INSERT INTO zb_catalog.ztables (name, sql) VALUES " + "('cities', 'CREATE ZTABLE IF NOT EXISTS cities (id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));');" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("INSERT 0 2") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt index e46fc529b0..03add7f3f0 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt @@ -182,6 +182,29 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "INSERT INTO zb_catalog.ztables (name, sql) VALUES " + "('cities', 'CREATE ZTABLE IF NOT EXISTS cities (id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));');" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("INSERT 0 2") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + accepted read zilla:begin.ext ${pgsql:beginEx() 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 7e046b7f49..4600eee276 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 @@ -85,7 +85,8 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory private static final String ZILLABASE_USER = "zillabase\u0000"; private static final String DEFAULT_USER = "default\u0000"; - private static final String ZVIEW_TABLE_NAME = "zviews"; + private static final String ZVIEW_NAME = "zviews"; + private static final String ZTABLE_NAME = "ztables"; private static final int ZILLABASE_USER_HASH = ZILLABASE_USER.hashCode(); private static final int DEFAULT_USER_HASH = DEFAULT_USER.hashCode(); @@ -1560,7 +1561,7 @@ private void decodeCreateZtableCommand( long authorization, String statement) { - if (server.commandsProcessed == 7 || + if (server.commandsProcessed == 8 || server.commandsProcessed == COMMAND_PROCESSED_ERRORED) { final int length = statement.length(); @@ -1604,6 +1605,10 @@ else if (server.commandsProcessed == 6) { newStatement = binding.createSink.generateOutgress(table); } + else if (server.commandsProcessed == 7) + { + newStatement = binding.catalogInsert.generate(ZTABLE_NAME, table.name(), statement); + } statementBuffer.putBytes(progress, newStatement.getBytes()); progress += newStatement.length(); @@ -1710,7 +1715,7 @@ else if (server.commandsProcessed == 4) } else if (server.commandsProcessed == 5) { - newStatement = binding.catalogInsert.generate(ZVIEW_TABLE_NAME, view.name(), statement); + newStatement = binding.catalogInsert.generate(ZVIEW_NAME, view.name(), statement); } statementBuffer.putBytes(progress, newStatement.getBytes()); @@ -2007,7 +2012,7 @@ else if (server.commandsProcessed == 1) } else if (server.commandsProcessed == 2) { - newStatement = binding.catalogDelete.generate(ZVIEW_TABLE_NAME, view); + newStatement = binding.catalogDelete.generate(ZVIEW_NAME, view); } else if (server.commandsProcessed == 3) { From 8e199ba8060849bc82d0b6a7d2b0d7676a5e9a1d Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 2 Dec 2024 16:45:37 -0800 Subject: [PATCH 041/104] WIP --- .../server.rpt | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/server.rpt index b522a4f85b..5fb9669f1a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/server.rpt @@ -36,20 +36,20 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -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 zilla_timestamp_timestamp\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.cities',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] +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 zilla_timestamp_timestamp\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='public.cities',\n" + " scan.startup.mode='latest',\n" + " scan.startup.timestamp.millis='140000000'\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " schema.registry = 'http://localhost:8081'\n" + ");" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) From 1042c686b34f83cb23df51099497662bc6029c44 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 4 Dec 2024 11:18:25 -0800 Subject: [PATCH 042/104] WIP --- .../binding/pgsql/parser/PostgreSqlParser.g4 | 3 +- .../binding/pgsql/parser/PgsqlParserTest.java | 21 +++++++++ .../client.rpt | 31 ++++++++----- .../server.rpt | 29 +++++++----- .../client.rpt | 14 +++--- .../server.rpt | 11 +++-- .../statement/RisingwaveCommandTemplate.java | 4 +- ...ingwaveCreateMaterializedViewTemplate.java | 45 ++++++++++++------- .../RisingwaveCreateSourceTemplate.java | 31 ++++++++----- .../RisingwaveCreateTopicTemplate.java | 20 ++++++--- 10 files changed, 138 insertions(+), 71 deletions(-) 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 6ab4048461..c284574800 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 @@ -806,7 +806,7 @@ colconstraintelem | CHECK OPEN_PAREN a_expr CLOSE_PAREN opt_no_inherit | DEFAULT b_expr | GENERATED generated_when AS ( - IDENTITY_P optparenthesizedseqoptlist + (IDENTITY_P | NOW) optparenthesizedseqoptlist | OPEN_PAREN a_expr CLOSE_PAREN STORED ) | REFERENCES qualified_name opt_column_list key_match key_actions @@ -836,6 +836,7 @@ tablelikeoption | CONSTRAINTS | DEFAULTS | IDENTITY_P + | NOW | GENERATED | INDEXES | STATISTICS 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 92ddc10bbb..1f7e0320c7 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 @@ -52,6 +52,27 @@ public void shouldParseWithPrimaryKeySql() assertTrue(table.primaryKeys().contains("id")); } + @Test + public void shouldCreateTableParseWithGeneratedAsAlwaysSql() + { + String sql = """ + CREATE ZTABLE example_table ( + id INT, + name VARCHAR(100), + age INT, + owner_id VARCHAR GENERATED ALWAYS AS IDENTITY, + created_at TIMESTAMP GENERATED ALWAYS AS NOW, + PRIMARY KEY (id, name) + );"""; + Table table = parser.parseCreateTable(sql); + + assertNotNull(table); + assertEquals(2, table.primaryKeys().size()); + assertEquals(5, table.columns().size()); + assertTrue(table.primaryKeys().contains("id")); + assertTrue(table.primaryKeys().contains("name")); + } + @Test public void shouldCreateTableParseWithPrimaryKeysSql() { diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/client.rpt index c506cd9b8a..3667f3fd42 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/client.rpt @@ -33,9 +33,8 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} 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 zilla_timestamp_timestamp\n" + "INCLUDE header 'zilla:identity' AS owner_id_header\n" + "INCLUDE timestamp AS created_at_timestamp\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" @@ -69,9 +68,8 @@ write zilla:data.ext ${pgsql:dataEx() .build()} 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," - " COALESCE(zilla_timestamp, zilla_timestamp_timestamp::varchar) as zilla_timestamp" + " COALESCE(owner_id, owner_id_header::varchar) as owner_id," + " COALESCE(created_at, created_at_timestamp::timestamp) as created_at" " FROM cities_source;" [0x00] write flush @@ -97,7 +95,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, zilla_timestamp TIMESTAMP," + " owner_id VARCHAR, created_at TIMESTAMP," " PRIMARY KEY (id));" [0x00] write flush @@ -200,9 +198,14 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "INSERT INTO zb_catalog.ztables (name, sql) VALUES " - "('cities', 'CREATE ZTABLE IF NOT EXISTS cities (id VARCHAR, name VARCHAR, description VARCHAR, zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP, PRIMARY KEY (id));');" + "('cities', 'CREATE ZTABLE IF NOT EXISTS cities " + "(id VARCHAR, name VARCHAR, description VARCHAR, " + "owner_id VARCHAR GENERATED ALWAYS AS IDENTITY, " + "created_at TIMESTAMP GENERATED ALWAYS AS NOW, " + "PRIMARY KEY (id));');" [0x00] + read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() @@ -250,11 +253,15 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE TOPIC IF NOT EXISTS cities " - "(id VARCHAR, name VARCHAR, description VARCHAR," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," - " PRIMARY KEY (id));" +write "CREATE TOPIC IF NOT EXISTS cities (" + "id VARCHAR, " + "name VARCHAR, " + "description VARCHAR, " + "owner_id VARCHAR GENERATED ALWAYS AS IDENTITY, " + "created_at TIMESTAMP GENERATED ALWAYS AS NOW, " + "PRIMARY KEY (id));" [0x00] + write flush read advised zilla:flush ${pgsql:flushEx() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/server.rpt index 5fb9669f1a..3db29b0a50 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/server.rpt @@ -37,9 +37,8 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} 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 zilla_timestamp_timestamp\n" + "INCLUDE header 'zilla:identity' AS owner_id_header\n" + "INCLUDE timestamp AS created_at_timestamp\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" @@ -72,9 +71,8 @@ read zilla:data.ext ${pgsql:dataEx() .build()} 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," - " COALESCE(zilla_timestamp, zilla_timestamp_timestamp::varchar) as zilla_timestamp" + " COALESCE(owner_id, owner_id_header::varchar) as owner_id," + " COALESCE(created_at, created_at_timestamp::timestamp) as created_at" " FROM cities_source;" [0x00] @@ -99,7 +97,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, zilla_timestamp TIMESTAMP," + " owner_id VARCHAR, created_at TIMESTAMP," " PRIMARY KEY (id));" [0x00] @@ -198,7 +196,11 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read "INSERT INTO zb_catalog.ztables (name, sql) VALUES " - "('cities', 'CREATE ZTABLE IF NOT EXISTS cities (id VARCHAR, name VARCHAR, description VARCHAR, zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP, PRIMARY KEY (id));');" + "('cities', 'CREATE ZTABLE IF NOT EXISTS cities " + "(id VARCHAR, name VARCHAR, description VARCHAR, " + "owner_id VARCHAR GENERATED ALWAYS AS IDENTITY, " + "created_at TIMESTAMP GENERATED ALWAYS AS NOW, " + "PRIMARY KEY (id));');" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -248,10 +250,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE TOPIC IF NOT EXISTS cities " - "(id VARCHAR, name VARCHAR, description VARCHAR," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," - " PRIMARY KEY (id));" +read "CREATE TOPIC IF NOT EXISTS cities (" + "id VARCHAR, " + "name VARCHAR, " + "description VARCHAR, " + "owner_id VARCHAR GENERATED ALWAYS AS IDENTITY, " + "created_at TIMESTAMP GENERATED ALWAYS AS NOW, " + "PRIMARY KEY (id));" [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.ztable.with.primary.key.and.includes/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key.and.includes/client.rpt index 054a098d74..fb2e69eff4 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key.and.includes/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key.and.includes/client.rpt @@ -32,12 +32,14 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE ZTABLE IF NOT EXISTS cities " - "(id VARCHAR, name VARCHAR, description VARCHAR," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," - " PRIMARY KEY (id));" - [0x00] - +write "CREATE ZTABLE IF NOT EXISTS cities (" + "id VARCHAR, " + "name VARCHAR, " + "description VARCHAR, " + "owner_id VARCHAR GENERATED ALWAYS AS IDENTITY, " + "created_at TIMESTAMP GENERATED ALWAYS AS NOW, " + "PRIMARY KEY (id));" + [0x00] write flush read advised zilla:flush ${pgsql:flushEx() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key.and.includes/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key.and.includes/server.rpt index 233dd3b9cf..93877d0e24 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key.and.includes/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key.and.includes/server.rpt @@ -36,10 +36,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE ZTABLE IF NOT EXISTS cities " - "(id VARCHAR, name VARCHAR, description VARCHAR," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP," - " PRIMARY KEY (id));" +read "CREATE ZTABLE IF NOT EXISTS cities (" + "id VARCHAR, " + "name VARCHAR, " + "description VARCHAR, " + "owner_id VARCHAR GENERATED ALWAYS AS IDENTITY, " + "created_at TIMESTAMP GENERATED ALWAYS AS NOW, " + "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/RisingwaveCommandTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCommandTemplate.java index c66c075b80..5a81a58ca4 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 @@ -22,8 +22,8 @@ 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 static final String ZILLA_IDENTITY = "GENERATED ALWAYS AS IDENTITY"; + protected static final String ZILLA_TIMESTAMP = "GENERATED ALWAYS AS NOW"; protected final StringBuilder fieldBuilder = new StringBuilder(); protected final StringBuilder includeBuilder = new StringBuilder(); 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 136df60c64..4dcaf9801f 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,6 +16,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; @@ -28,7 +29,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, "; + private final String timestampFormat = "COALESCE(%s, %s_timestamp::timestamp) as %s, "; public String generate( View view) @@ -47,7 +48,8 @@ public String generate( String select = "*"; List includes = table.columns().stream() - .filter(c -> ZILLA_MAPPINGS.containsKey(c.name())) + .filter(column -> column.constraints().stream() + .anyMatch(ZILLA_MAPPINGS::containsKey)) .collect(Collectors.toCollection(ArrayList::new)); if (!includes.isEmpty()) @@ -55,22 +57,31 @@ public String generate( fieldBuilder.setLength(0); table.columns() - .stream() - .filter(c -> !ZILLA_MAPPINGS.containsKey(c.name())) - .forEach(c -> fieldBuilder.append(String.format(fieldFormat, c.name()))); - - includes.forEach(c -> - { - String columnName = c.name(); - if (ZILLA_TIMESTAMP.equals(columnName)) - { - fieldBuilder.append(String.format(timestampFormat, columnName, columnName, columnName)); - } - else + .forEach(i -> { - fieldBuilder.append(String.format(includeFormat, columnName, columnName, columnName)); - } - }); + String columnName = i.name(); + + Optional include = i.constraints().stream() + .filter(ZILLA_MAPPINGS::containsKey) + .findFirst(); + + if (include.isPresent()) + { + final String includeName = include.get(); + if (ZILLA_TIMESTAMP.equals(includeName)) + { + fieldBuilder.append(String.format(timestampFormat, columnName, columnName, columnName)); + } + else + { + fieldBuilder.append(String.format(includeFormat, columnName, columnName, columnName)); + } + } + else + { + fieldBuilder.append(String.format(fieldFormat, columnName)); + } + }); fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); select = fieldBuilder.toString(); 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 5fbcee4b4d..698531fd6f 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 @@ -82,23 +82,32 @@ public String generateTableSource( includeBuilder.setLength(0); List includes = tableInfo.columns().stream() - .filter(c -> ZILLA_MAPPINGS.containsKey(c.name())) + .filter(column -> column.constraints().stream() + .anyMatch(ZILLA_MAPPINGS::containsKey)) .collect(Collectors.toCollection(ArrayList::new)); if (!includes.isEmpty()) { includeBuilder.append("\n"); - includes.forEach(c -> + includes.forEach(i -> { - String name = c.name(); - if (ZILLA_TIMESTAMP.equals(name)) - { - includeBuilder.append(String.format(ZILLA_MAPPINGS.get(name), "%s_timestamp".formatted(name))); - } - else - { - includeBuilder.append(String.format(ZILLA_MAPPINGS.get(name), "%s_header".formatted(name))); - } + String name = i.name(); + + i.constraints().stream() + .filter(ZILLA_MAPPINGS::containsKey) + .findFirst() + .ifPresent(c -> + { + if (ZILLA_TIMESTAMP.equals(c)) + { + includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c), "%s_timestamp".formatted(name))); + } + else + { + includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c), "%s_header".formatted(name))); + } + }); + }); includeBuilder.delete(includeBuilder.length() - 1, includeBuilder.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 16db395401..70edbb7a0d 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 @@ -25,7 +25,6 @@ public class RisingwaveCreateTopicTemplate extends RisingwaveCommandTemplate private final String sqlFormat = """ CREATE TOPIC IF NOT EXISTS %s (%s%s);\u0000"""; private final String primaryKeyFormat = ", PRIMARY KEY (%s)"; - private final String fieldFormat = "%s %s, "; private final StringBuilder fieldBuilder = new StringBuilder(); private final StringBuilder primaryKeyBuilder = new StringBuilder(); @@ -40,9 +39,18 @@ public String generate( fieldBuilder.setLength(0); - table.columns() - .forEach(c -> fieldBuilder.append( - String.format(fieldFormat, c.name(), c.type()))); + table.columns().forEach(c -> + { + fieldBuilder.append(c.name()); + fieldBuilder.append(" "); + fieldBuilder.append(c.type()); + if (!c.constraints().isEmpty()) + { + fieldBuilder.append(" "); + c.constraints().forEach(fieldBuilder::append); + } + fieldBuilder.append(", "); + }); fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); @@ -61,7 +69,7 @@ public String generate( .stream() .filter(e -> !ZILLA_MAPPINGS.containsKey(e.getKey())) .forEach(e -> fieldBuilder.append( - String.format(fieldFormat, e.getKey(), e.getValue()))); + String.format("%s %s, ", e.getKey(), e.getValue()))); fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); @@ -82,7 +90,7 @@ public String generate( fieldBuilder.setLength(0); - columns.forEach((k, v) -> fieldBuilder.append(String.format(fieldFormat, k, + columns.forEach((k, v) -> fieldBuilder.append(String.format("%s %s, ", k, RisingwavePgsqlTypeMapping.typeName(v)))); fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); From 2e53b829f9c3b03525bbefdafdd455a32c7a8a45 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 4 Dec 2024 12:39:13 -0800 Subject: [PATCH 043/104] WIP --- .../streams/effective/drop.ztable/client.rpt | 23 +++++++++++++++++++ .../streams/effective/drop.ztable/server.rpt | 22 ++++++++++++++++++ .../stream/RisingwaveProxyFactory.java | 8 +++++-- 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/client.rpt index d8d5287cad..a8b52458ff 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/client.rpt @@ -96,6 +96,29 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "DELETE FROM zb_catalog.ztables WHERE name = 'weather';" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DELETE 0 1") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/server.rpt index e7c074d951..a0d14babef 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/server.rpt @@ -97,6 +97,28 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "DELETE FROM zb_catalog.ztables WHERE name = 'weather';" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DELETE 0 1") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() 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 4600eee276..ee11fd3976 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 @@ -1886,7 +1886,7 @@ private void decodeDropZtableCommand( long authorization, String statement) { - if (server.commandsProcessed == 6) + if (server.commandsProcessed == 7) { final int length = statement.length(); server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.DROP_ZTABLE_COMMAND); @@ -1919,9 +1919,13 @@ else if (server.commandsProcessed == 3) } else if (server.commandsProcessed == 4) { - newStatement = binding.dropMaterializedView.generate(table, "_view"); + newStatement = binding.catalogDelete.generate(ZTABLE_NAME, table); } else if (server.commandsProcessed == 5) + { + newStatement = binding.dropMaterializedView.generate(table, "_view"); + } + else if (server.commandsProcessed == 6) { newStatement = binding.dropSource.generate(table, "_source"); } From 76143128f8709beedb5bc578a3faa8826e8c8cf4 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 4 Dec 2024 15:00:56 -0800 Subject: [PATCH 044/104] Checkpoint --- .../binding/pgsql/parser/PostgreSqlParser.g4 | 1 + .../parser/listener/SqlCommandListener.java | 6 +- .../binding/pgsql/parser/PgsqlParserTest.java | 9 ++ .../streams/effective/show.ztables/client.rpt | 102 +++++++++++++++++ .../streams/effective/show.ztables/server.rpt | 104 ++++++++++++++++++ .../streams/effective/show.zviews/client.rpt | 2 +- .../streams/effective/show.zviews/server.rpt | 1 + .../streams/pgsql/show.ztables/client.rpt | 76 +++++++++++++ .../streams/pgsql/show.ztables/server.rpt | 79 +++++++++++++ .../config/RisingwaveCommandType.java | 1 + .../stream/RisingwaveProxyFactory.java | 1 + .../risingwave/internal/stream/ProxyIT.java | 10 ++ 12 files changed, 386 insertions(+), 6 deletions(-) create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.ztables/client.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.ztables/server.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.ztables/client.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.ztables/server.rpt 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 c284574800..ccbcb1ccfe 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 @@ -1645,6 +1645,7 @@ show_object_type_name | VIEWS | MATERIALIZED VIEWS | TOPICS + | ZTABLES | ZVIEWS ; 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 f8570e50bb..097e8d6761 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 @@ -87,11 +87,7 @@ public void enterShowstmt( PostgreSqlParser.ShowstmtContext ctx) { String type = ctx.show_object_type_name().getText(); - - if ("ZVIEWS".equals(type)) - { - command = "SHOW ZVIEWS"; - } + command = "SHOW %s".formatted(type); } @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 1f7e0320c7..7e0336b2ba 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 @@ -524,4 +524,13 @@ public void shouldParseShowZviews() assertEquals("ZVIEWS", type); } + + @Test + public void shouldParseShowZtables() + { + String sql = "SHOW ZTABLES;"; + String type = parser.parseShow(sql); + + assertEquals("ZTABLES", type); + } } diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.ztables/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.ztables/client.rpt new file mode 100644 index 0000000000..9a17fcbdd8 --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.ztables/client.rpt @@ -0,0 +1,102 @@ +# +# Copyright 2021-2024 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. +# + +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "SELECT * FROM zb_catalog.ztables;" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("sql") + .tableOid(0) + .index(0) + .typeOid(20) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +read [0x00 0x02] # Field Count + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data + [0x00 0x00 0x00 0x65] # Length + "CREATE ZTABLE IF NOT EXISTS cities " # Data + "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" + [0x00] + + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SELECT 1") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "app") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.ztables/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.ztables/server.rpt new file mode 100644 index 0000000000..53822dfaed --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.ztables/server.rpt @@ -0,0 +1,104 @@ +# +# Copyright 2021-2024 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. +# + +accept "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "SELECT * FROM zb_catalog.ztables;" +read [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("sql") + .tableOid(0) + .index(0) + .typeOid(20) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +write [0x00 0x02] # Field Count + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data + [0x00 0x00 0x00 0x65] # Length + "CREATE ZTABLE IF NOT EXISTS cities " # Data + "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" + [0x00] +write flush + + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SELECT 1") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "app") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/client.rpt index 47139b40a5..620c51f0a8 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/client.rpt @@ -70,7 +70,7 @@ read [0x00 0x02] # Field Count [0x00 0x00 0x00 0x65] # Length "CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS" # Data " SELECT id, city FROM weather GROUP BY city;" - + [0x00] read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/server.rpt index 050011cf75..74dcc7a01f 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/server.rpt @@ -72,6 +72,7 @@ write [0x00 0x02] # Field Count [0x00 0x00 0x00 0x65] # Length "CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS" # Data " SELECT id, city FROM weather GROUP BY city;" + [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.ztables/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.ztables/client.rpt new file mode 100644 index 0000000000..74f5dbe475 --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.ztables/client.rpt @@ -0,0 +1,76 @@ +# +# Copyright 2021-2024 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. +# + +connect "zilla://streams/app0" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "app") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "SHOW ZTABLES;" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("Name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(4) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +read [0x00 0x01] # Field Count + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SHOW_COMMAND") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.ztables/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.ztables/server.rpt new file mode 100644 index 0000000000..66bb7bcdab --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.ztables/server.rpt @@ -0,0 +1,79 @@ +# +# Copyright 2021-2024 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. +# + +property serverAddress "zilla://streams/app0" + +accept ${serverAddress} + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "app") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "SHOW ZTABLES;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("Name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(4) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} +write flush + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +write [0x00 0x01] # Field Count + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SHOW_COMMAND") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java index 67f9a30063..2f5209f51a 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java @@ -30,6 +30,7 @@ public enum RisingwaveCommandType DROP_ZTABLE_COMMAND("DROP ZTABLE".getBytes()), DROP_STREAM_COMMAND("DROP STREAM".getBytes()), DROP_ZVIEW_COMMAND("DROP ZVIEW".getBytes()), + SHOW_ZTABLES_COMMAND("SHOW ZTABLES".getBytes()), SHOW_ZVIEWS_COMMAND("SHOW ZVIEWS".getBytes()), UNKNOWN_COMMAND("UNKNOWN".getBytes()); 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 ee11fd3976..77da3ddbbd 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 @@ -167,6 +167,7 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory clientTransforms.put(RisingwaveCommandType.DROP_STREAM_COMMAND, this::decodeDropStreamCommand); clientTransforms.put(RisingwaveCommandType.DROP_ZTABLE_COMMAND, this::decodeDropZtableCommand); clientTransforms.put(RisingwaveCommandType.DROP_ZVIEW_COMMAND, this::decodeDropZviewCommand); + clientTransforms.put(RisingwaveCommandType.SHOW_ZTABLES_COMMAND, this::decodeShowCommand); clientTransforms.put(RisingwaveCommandType.SHOW_ZVIEWS_COMMAND, this::decodeShowCommand); clientTransforms.put(RisingwaveCommandType.UNKNOWN_COMMAND, this::decodeUnknownCommand); this.clientTransforms = clientTransforms; diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java index 8244de2ffe..866539c1e8 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java @@ -291,4 +291,14 @@ public void shouldShowZviews() throws Exception { k3po.finish(); } + + @Test + @Configuration("proxy.risingwave.yaml") + @Specification({ + "${pgsql}/show.ztables/client", + "${effective}/show.ztables/server" }) + public void shouldShowZtables() throws Exception + { + k3po.finish(); + } } From b16a5e8655ce6457263a90070198630425802ba3 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 4 Dec 2024 17:33:11 -0800 Subject: [PATCH 045/104] Checkpoint --- .../statement/RisingwaveCommandTemplate.java | 15 +++++++++------ .../statement/RisingwaveCreateSourceTemplate.java | 4 ++-- .../statement/RisingwaveCreateTopicTemplate.java | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) 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 5a81a58ca4..b2459bd3b5 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,7 +21,11 @@ public abstract class RisingwaveCommandTemplate { - protected static final String ZILLA_CORRELATION_ID = "zilla_correlation_id"; + //TODO: Remove after implementing zstream + protected static final String ZILLA_CORRELATION_ID_OLD = "zilla_correlation_id"; + protected static final String ZILLA_IDENTITY_OLD = "zilla_identity"; + protected static final String ZILLA_TIMESTAMP_OLD = "zilla_timestamp"; + protected static final String ZILLA_IDENTITY = "GENERATED ALWAYS AS IDENTITY"; protected static final String ZILLA_TIMESTAMP = "GENERATED ALWAYS AS NOW"; @@ -31,16 +35,15 @@ public abstract class RisingwaveCommandTemplate 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(ZILLA_TIMESTAMP, "INCLUDE timestamp AS %s\n"); } - protected static final Map ZILLA_INCLUDE_TYPE_MAPPINGS = new Object2ObjectHashMap<>(); + protected static final Map ZILLA_MAPPINGS_OLD = 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(ZILLA_TIMESTAMP, "TIMESTAMP"); + ZILLA_MAPPINGS_OLD.put(ZILLA_CORRELATION_ID_OLD, "INCLUDE header 'zilla:correlation-id' AS %s\n"); + ZILLA_MAPPINGS_OLD.put(ZILLA_IDENTITY_OLD, "INCLUDE header 'zilla:identity' AS %s\n"); + ZILLA_MAPPINGS_OLD.put(ZILLA_TIMESTAMP_OLD, "INCLUDE timestamp AS %s\n"); } } 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 698531fd6f..ba72d9ece1 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 @@ -60,13 +60,13 @@ public String generateStreamSource( includeBuilder.setLength(0); Map includes = stream.columns().entrySet().stream() - .filter(e -> ZILLA_MAPPINGS.containsKey(e.getKey())) + .filter(e -> ZILLA_MAPPINGS_OLD.containsKey(e.getKey())) .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), k))); + includes.forEach((k, v) -> includeBuilder.append(String.format(ZILLA_MAPPINGS_OLD.get(k), 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/RisingwaveCreateTopicTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTopicTemplate.java index 70edbb7a0d..1cabff9e67 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 @@ -67,7 +67,7 @@ public String generate( stream.columns() .entrySet() .stream() - .filter(e -> !ZILLA_MAPPINGS.containsKey(e.getKey())) + .filter(e -> !ZILLA_MAPPINGS_OLD.containsKey(e.getKey())) .forEach(e -> fieldBuilder.append( String.format("%s %s, ", e.getKey(), e.getValue()))); From 97314ac1e5abd6d572eb68168645138036a64b8d Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 5 Dec 2024 12:36:12 -0800 Subject: [PATCH 046/104] WIP --- .../kafka/config/proxy.generated.as.yaml | 36 +++++++++++ .../create.topic.with.generated.as/client.rpt | 60 ++++++++++++++++++ .../create.topic.with.generated.as/server.rpt | 61 +++++++++++++++++++ .../kafka/internal/schema/AvroField.java | 3 +- .../schema/PgsqlKafkaAvroSchemaTemplate.java | 13 ++++ .../PgsqlKafkaKeyAvroSchemaTemplate.java | 2 +- .../PgsqlKafkaValueAvroSchemaTemplate.java | 13 +++- .../pgsql/kafka/internal/stream/ProxyIT.java | 11 ++++ .../client.rpt | 0 .../server.rpt | 0 .../client.rpt | 0 .../server.rpt | 0 .../risingwave/streams/EffectiveIT.java | 6 +- .../binding/risingwave/streams/PgsqlIT.java | 6 +- .../risingwave/internal/stream/ProxyIT.java | 6 +- 15 files changed, 203 insertions(+), 14 deletions(-) create mode 100644 incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/config/proxy.generated.as.yaml create mode 100644 incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/pgsql/create.topic.with.generated.as/client.rpt create mode 100644 incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/pgsql/create.topic.with.generated.as/server.rpt rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.ztable.with.primary.key.and.includes => create.ztable.with.generated.as}/client.rpt (100%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.ztable.with.primary.key.and.includes => create.ztable.with.generated.as}/server.rpt (100%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.ztable.with.primary.key.and.includes => create.ztable.with.generated.as}/client.rpt (100%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.ztable.with.primary.key.and.includes => create.ztable.with.generated.as}/server.rpt (100%) diff --git a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/config/proxy.generated.as.yaml b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/config/proxy.generated.as.yaml new file mode 100644 index 0000000000..0039c1f2d4 --- /dev/null +++ b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/config/proxy.generated.as.yaml @@ -0,0 +1,36 @@ +# +# Copyright 2021-2024 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. +# + +--- +name: test +catalogs: + catalog0: + type: test + options: + url: http://localhost:8081 + id: 1 + schema: |- + { + "schema": "{\"fields\":[{\"name\":\"id\",\"type\":[\"null\",{\"type\":\"string\"}]},{\"name\":\"city\",\"type\":[\"null\",{\"type\":\"string\"}]},{\"name\":\"owner_id\",\"type\":[\"null\",{\"type\":\"string\"}],\"zillaType\":\"ZILLA_IDENTITY\"},{\"name\":\"created_at\",\"type\":[\"null\",{\"type\":\"long\",\"logicalType\":\"timestamp-millis\"}],\"zillaType\":\"ZILLA_TIMESTAMP\"}],\"name\":\"cities\",\"namespace\":\"public\",\"type\":\"record\"}", + "schemaType": "AVRO" + } +bindings: + app0: + type: pgsql-kafka + kind: proxy + catalog: + catalog0: + - strategy: topic + exit: app1 diff --git a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/pgsql/create.topic.with.generated.as/client.rpt b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/pgsql/create.topic.with.generated.as/client.rpt new file mode 100644 index 0000000000..4cb2b73539 --- /dev/null +++ b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/pgsql/create.topic.with.generated.as/client.rpt @@ -0,0 +1,60 @@ +# +# Copyright 2021-2024 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. +# + +connect "zilla://streams/app0" + option zilla:window 8192 + option zilla:transmission "duplex" + + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "CREATE TOPIC IF NOT EXISTS cities (" + "id VARCHAR, " + "city VARCHAR, " + "owner_id VARCHAR GENERATED ALWAYS AS IDENTITY, " + "created_at TIMESTAMP GENERATED ALWAYS AS NOW, " + "PRIMARY KEY (id, city));" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_TOPIC") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write close +read closed diff --git a/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/pgsql/create.topic.with.generated.as/server.rpt b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/pgsql/create.topic.with.generated.as/server.rpt new file mode 100644 index 0000000000..738cfc58b8 --- /dev/null +++ b/incubator/binding-pgsql-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/kafka/streams/pgsql/create.topic.with.generated.as/server.rpt @@ -0,0 +1,61 @@ +# +# Copyright 2021-2024 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. +# + +accept "zilla://streams/app0" + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "CREATE TOPIC IF NOT EXISTS cities (" + "id VARCHAR, " + "city VARCHAR, " + "owner_id VARCHAR GENERATED ALWAYS AS IDENTITY, " + "created_at TIMESTAMP GENERATED ALWAYS AS NOW, " + "PRIMARY KEY (id, city));" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_TOPIC") + .build() + .build()} + +write notify CREATE_TOPIC_COMPLETED + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} +read closed +write close diff --git a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/AvroField.java b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/AvroField.java index c2d9d8c8f6..4c69b6f2b4 100644 --- a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/AvroField.java +++ b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/AvroField.java @@ -16,6 +16,7 @@ public record AvroField( String name, - Object type) + Object type, + Object zillaType) { } diff --git a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaAvroSchemaTemplate.java b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaAvroSchemaTemplate.java index e2e485c4b2..e326bfea6f 100644 --- a/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaAvroSchemaTemplate.java +++ b/incubator/binding-pgsql-kafka/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/schema/PgsqlKafkaAvroSchemaTemplate.java @@ -15,6 +15,7 @@ package io.aklivity.zilla.runtime.binding.pgsql.kafka.internal.schema; import java.util.List; +import java.util.Map; import jakarta.json.Json; import jakarta.json.JsonArray; @@ -25,6 +26,8 @@ import jakarta.json.bind.JsonbBuilder; import jakarta.json.bind.JsonbConfig; +import org.agrona.collections.Object2ObjectHashMap; + import io.aklivity.zilla.runtime.binding.pgsql.parser.model.AlterExpression; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; @@ -32,6 +35,16 @@ public abstract class PgsqlKafkaAvroSchemaTemplate { protected static final String DATABASE_PLACEHOLDER = "{database}"; + protected static final String ZILLA_IDENTITY = "GENERATED ALWAYS AS IDENTITY"; + protected static final String ZILLA_TIMESTAMP = "GENERATED ALWAYS AS NOW"; + + protected static final Map ZILLA_MAPPINGS = new Object2ObjectHashMap<>(); + static + { + ZILLA_MAPPINGS.put(ZILLA_IDENTITY, "ZILLA_IDENTITY"); + ZILLA_MAPPINGS.put(ZILLA_TIMESTAMP, "ZILLA_TIMESTAMP"); + } + protected Jsonb jsonbFormatted = JsonbBuilder.create(new JsonbConfig().withFormatting(true)); protected Jsonb jsonb = JsonbBuilder.create(); 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 6a8faeff69..781d5535e8 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 @@ -36,7 +36,7 @@ public String generate( final String newNamespace = namespace.replace(DATABASE_PLACEHOLDER, database); List fields = table.columns().stream() - .map(column -> new AvroField(column.name(), mapSqlTypeToAvroType(column.type()))) + .map(column -> new AvroField(column.name(), mapSqlTypeToAvroType(column.type()), null)) .collect(Collectors.toList()); AvroSchema schema = new AvroSchema("record", table.name(), newNamespace, fields); 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 b78b87dc58..056022420d 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 @@ -49,12 +49,19 @@ public String generate( String columnName = column.name(); String sqlType = column.type(); Object avroType = mapSqlTypeToAvroType(sqlType); + List constraints = column.constraints(); - boolean isNullable = !column.constraints().contains("NOT NULL"); + boolean isNullable = !constraints.contains("NOT NULL"); + + String zillaType = ZILLA_MAPPINGS.entrySet().stream() + .filter(e -> constraints.contains(e.getKey())) + .map(Map.Entry::getValue) + .findFirst() + .orElse(null); return isNullable - ? new AvroField(columnName, new Object[]{"null", avroType}) - : new AvroField(columnName, avroType); + ? new AvroField(columnName, new Object[]{"null", avroType}, zillaType) + : new AvroField(columnName, avroType, zillaType); }) .collect(Collectors.toList()); diff --git a/incubator/binding-pgsql-kafka/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/stream/ProxyIT.java b/incubator/binding-pgsql-kafka/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/stream/ProxyIT.java index 012e16073b..b882c55408 100644 --- a/incubator/binding-pgsql-kafka/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/stream/ProxyIT.java +++ b/incubator/binding-pgsql-kafka/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/kafka/internal/stream/ProxyIT.java @@ -59,6 +59,17 @@ public void shouldCreateTopic() throws Exception k3po.finish(); } + @Test + @Configuration("proxy.generated.as.yaml") + @Specification({ + "${pgsql}/create.topic.with.generated.as/client", + "${kafka}/create.topic/server" + }) + public void shouldCreateTopicWithGeneratedAs() throws Exception + { + k3po.finish(); + } + @Test @Configuration("proxy.alter.yaml") @Specification({ diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.generated.as/client.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.generated.as/client.rpt diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.generated.as/server.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key.and.includes/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.generated.as/server.rpt diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key.and.includes/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.generated.as/client.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key.and.includes/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.generated.as/client.rpt diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key.and.includes/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.generated.as/server.rpt similarity index 100% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key.and.includes/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.generated.as/server.rpt diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java index ab2cafc499..90f971869a 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java @@ -145,9 +145,9 @@ public void shouldCreateStreamWithIncludes() throws Exception @Test @Specification({ - "${app}/create.ztable.with.primary.key.and.includes/client", - "${app}/create.ztable.with.primary.key.and.includes/server" }) - public void shouldCreateZtableWithPrimaryKeyAndIncludes() throws Exception + "${app}/create.ztable.with.generated.as/client", + "${app}/create.ztable.with.generated.as/server" }) + public void shouldCreateTableWithGeneratedAs() throws Exception { k3po.finish(); } diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java index 8348814737..9f9eeccdb6 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java @@ -145,9 +145,9 @@ public void shouldCreateStreamWithIncludes() throws Exception @Test @Specification({ - "${app}/create.ztable.with.primary.key.and.includes/client", - "${app}/create.ztable.with.primary.key.and.includes/server" }) - public void shouldCreateTableWithPrimaryKeyAndIncludes() throws Exception + "${app}/create.ztable.with.generated.as/client", + "${app}/create.ztable.with.generated.as/server" }) + public void shouldCreateTableWithGeneratedAs() throws Exception { k3po.finish(); } diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java index 866539c1e8..7fe9f27e6b 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java @@ -195,9 +195,9 @@ public void shouldCreateStreamWithIncludes() throws Exception @Test @Configuration("proxy.yaml") @Specification({ - "${pgsql}/create.ztable.with.primary.key.and.includes/client", - "${effective}/create.ztable.with.primary.key.and.includes/server" }) - public void shouldCreateZtableWithPrimaryKeyAndIncludes() throws Exception + "${pgsql}/create.ztable.with.generated.as/client", + "${effective}/create.ztable.with.generated.as/server" }) + public void shouldCreateTableWithGeneratedAs() throws Exception { k3po.finish(); } From 7c5db9697a82081a8cef7a628825bc3f1c22d0be Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 5 Dec 2024 15:10:53 -0800 Subject: [PATCH 047/104] Fix casting --- .../RisingwaveCreateMaterializedViewTemplate.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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 4dcaf9801f..9e3eed6fee 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 @@ -28,8 +28,8 @@ 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, %s_header::varchar) as %s, "; - private final String timestampFormat = "COALESCE(%s, %s_timestamp::timestamp) as %s, "; + private final String includeFormat = "COALESCE(%s, %s_header::%s) as %s, "; + private final String timestampFormat = "COALESCE(%s, %s_timestamp::%s) as %s, "; public String generate( View view) @@ -60,6 +60,7 @@ public String generate( .forEach(i -> { String columnName = i.name(); + String columnType = i.type().toLowerCase(); Optional include = i.constraints().stream() .filter(ZILLA_MAPPINGS::containsKey) @@ -70,11 +71,13 @@ public String generate( final String includeName = include.get(); if (ZILLA_TIMESTAMP.equals(includeName)) { - fieldBuilder.append(String.format(timestampFormat, columnName, columnName, columnName)); + fieldBuilder.append( + String.format(timestampFormat, columnName, columnName, columnType, columnName)); } else { - fieldBuilder.append(String.format(includeFormat, columnName, columnName, columnName)); + fieldBuilder.append( + String.format(includeFormat, columnName, columnName, columnType, columnName)); } } else From ef9077a9c948c81e6f2d54e741a00c1818311694 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 5 Dec 2024 18:15:03 -0800 Subject: [PATCH 048/104] WIP --- .../specs/binding/pgsql/PgsqlFunctions.java | 46 ++++++++ .../main/resources/META-INF/zilla/pgsql.idl | 9 ++ .../create.view.with.notice/client.rpt | 63 +++++++++++ .../create.view.with.notice/server.rpt | 66 ++++++++++++ .../create.view.with.notice/client.rpt | 98 +++++++++++++++++ .../create.view.with.notice/server.rpt | 100 ++++++++++++++++++ .../binding/pgsql/streams/ApplicationIT.java | 10 ++ .../binding/pgsql/streams/NetworkIT.java | 10 ++ .../streams/internal/PgsqlFunctionsTest.java | 23 ++++ .../internal/stream/PgsqlClientFactory.java | 68 +++++++++++- .../internal/stream/PgsqlServerFactory.java | 31 ++++++ .../pgsql/internal/stream/ClientIT.java | 11 ++ .../pgsql/internal/stream/ServerIT.java | 11 ++ .../stream/RisingwaveProxyFactory.java | 1 - 14 files changed, 545 insertions(+), 2 deletions(-) create mode 100644 incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/create.view.with.notice/client.rpt create mode 100644 incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/create.view.with.notice/server.rpt create mode 100644 incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/create.view.with.notice/client.rpt create mode 100644 incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/create.view.with.notice/server.rpt diff --git a/incubator/binding-pgsql.spec/src/main/java/io/aklivity/zilla/specs/binding/pgsql/PgsqlFunctions.java b/incubator/binding-pgsql.spec/src/main/java/io/aklivity/zilla/specs/binding/pgsql/PgsqlFunctions.java index d0bea41b76..9652009034 100644 --- a/incubator/binding-pgsql.spec/src/main/java/io/aklivity/zilla/specs/binding/pgsql/PgsqlFunctions.java +++ b/incubator/binding-pgsql.spec/src/main/java/io/aklivity/zilla/specs/binding/pgsql/PgsqlFunctions.java @@ -28,6 +28,7 @@ import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlFlushExFW; import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlFormat; import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlMessageType; +import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlNoticeFlushExFW; import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlQueryDataExFW; import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlReadyFlushExFW; import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlRowDataExFW; @@ -217,6 +218,13 @@ public PgsqlCompletedFlushExBuilder completion() return new PgsqlCompletedFlushExBuilder(); } + public PgsqlNoticeFlushExBuilder notice() + { + flushExRW.kind(PgsqlMessageType.NOTICE.value()); + + return new PgsqlNoticeFlushExBuilder(); + } + public PgsqlErrorFlushExBuilder error() { flushExRW.kind(PgsqlMessageType.ERROR.value()); @@ -405,6 +413,44 @@ public PgsqlFlushExBuilder build() } } + public final class PgsqlNoticeFlushExBuilder + { + private final PgsqlNoticeFlushExFW.Builder pgsqlNoticeFlushExRW = new PgsqlNoticeFlushExFW.Builder(); + + private PgsqlNoticeFlushExBuilder() + { + pgsqlNoticeFlushExRW.wrap(writeBuffer, PgsqlFlushExFW.FIELD_OFFSET_TYPE, writeBuffer.capacity()); + } + + public PgsqlNoticeFlushExBuilder severity( + String severity) + { + pgsqlNoticeFlushExRW.severity(String.format("S%s\u0000", severity)); + return this; + } + + public PgsqlNoticeFlushExBuilder code( + String code) + { + pgsqlNoticeFlushExRW.code(String.format("C%s\u0000", code)); + return this; + } + + public PgsqlNoticeFlushExBuilder message( + String message) + { + pgsqlNoticeFlushExRW.message(String.format("M%s\u0000", message)); + return this; + } + + public PgsqlFlushExBuilder build() + { + final PgsqlNoticeFlushExFW pgsqlNoticeFlushEx = pgsqlNoticeFlushExRW.build(); + flushExRO.wrap(writeBuffer, 0, pgsqlNoticeFlushEx.limit()); + return PgsqlFlushExBuilder.this; + } + } + public final class PgsqlCancelRequestFlushExBuilder { private final PgsqlCancelRequestFlushExFW.Builder pgsqlCancelREquestFlushExRW = diff --git a/incubator/binding-pgsql.spec/src/main/resources/META-INF/zilla/pgsql.idl b/incubator/binding-pgsql.spec/src/main/resources/META-INF/zilla/pgsql.idl index 0de2aaba27..843717e723 100644 --- a/incubator/binding-pgsql.spec/src/main/resources/META-INF/zilla/pgsql.idl +++ b/incubator/binding-pgsql.spec/src/main/resources/META-INF/zilla/pgsql.idl @@ -33,6 +33,7 @@ scope pgsql ROW (68), TYPE (84), COMPLETION (67), + NOTICE (78), ERROR (69), CANCEL_REQUEST (255), READY (90) @@ -60,6 +61,7 @@ scope pgsql case 84: pgsql::stream::PgsqlTypeFlushEx type; case 67: pgsql::stream::PgsqlCompletedFlushEx completion; case 69: pgsql::stream::PgsqlErrorFlushEx error; + case 78: pgsql::stream::PgsqlNoticeFlushEx notice; case 90: pgsql::stream::PgsqlReadyFlushEx ready; } @@ -103,6 +105,13 @@ scope pgsql string16 message; } + struct PgsqlNoticeFlushEx + { + string16 severity; + string16 code; + string16 message; + } + enum PgsqlStatus (uint8) { IDLE(73), diff --git a/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/create.view.with.notice/client.rpt b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/create.view.with.notice/client.rpt new file mode 100644 index 0000000000..56a6648cb5 --- /dev/null +++ b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/create.view.with.notice/client.rpt @@ -0,0 +1,63 @@ +# +# Copyright 2021-2024 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. +# + +connect "zilla://streams/app0" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "CREATE VIEW IF NOT EXISTS cities_view AS SELECT name, created_at::timestamp FROM cities;" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .notice() + .severity("NOTICE") + .code("00000") + .message("Your session timezone is UTC.") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_VIEW") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read closed +write close diff --git a/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/create.view.with.notice/server.rpt b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/create.view.with.notice/server.rpt new file mode 100644 index 0000000000..d7f06e4cd8 --- /dev/null +++ b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/create.view.with.notice/server.rpt @@ -0,0 +1,66 @@ +# +# Copyright 2021-2024 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. +# + +property serverAddress "zilla://streams/app0" + +accept ${serverAddress} + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "root") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "CREATE VIEW IF NOT EXISTS cities_view AS SELECT name, created_at::timestamp FROM cities;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .notice() + .severity("NOTICE") + .code("00000") + .message("Your session timezone is UTC.") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_VIEW") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write close +read closed diff --git a/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/create.view.with.notice/client.rpt b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/create.view.with.notice/client.rpt new file mode 100644 index 0000000000..285a12ba44 --- /dev/null +++ b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/create.view.with.notice/client.rpt @@ -0,0 +1,98 @@ +# +# Copyright 2021-2024 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. +# + +property networkConnectWindow 8192 + +connect "zilla://streams/net0" + option zilla:window ${networkConnectWindow} + option zilla:transmission "duplex" + option zilla:byteorder "network" + +connected + +write 75 # length + 3s # major version + 0s # minor version + "user" [0x00] # name + "root" [0x00] # value + "database" [0x00] # name + "dev" [0x00] # value + "application_name" [0x00] # name + "psql" [0x00] # value + "client_encoding" [0x00] # name + "UTF8" [0x00] # value + [0x00] # end of parameters + +read [0x52] # type R + 8 # length + 0 # authentication type + +read [0x4b] # type K + 12 # length + 0 # pid + 0 # key + +read [0x53] # type S + 25 # length + "client_encoding" [0x00] # name + "UTF8" [0x00] # value + +read [0x53] # type S + 35 # length + "standard_conforming_strings" [0x00] # name + [0x6f 0x6e 0x00] # value + +read [0x53] # type S + 25 # length + "server_version" [0x00] # name + "9.1.0" [0x00] # value + +read [0x53] # type S + 27 # length + "application_name" [0x00] # name + "zilla" [0x00] # value + +read [0x5a] # type Z + 5 # length + [0x49] # status + +write [0x51] # type Q + 93 # length + "CREATE VIEW IF NOT EXISTS cities_view AS SELECT name, created_at::timestamp FROM cities;" + [0x00] # End of string + +read [0x4e] # type N + 50 # length + "SNOTICE" # severity + [0x00] # end of string + "C00000" # code + [0x00] # end of string + "MYour session timezone is UTC." # code + [0x00] # end of string + +read [0x43] # type C + 16 # length + "CREATE_VIEW" # tag + [0x00] # End of string + +read [0x5a] # type Z + 5 # length + [0x49] # status + +read [0x58] # type X + 4 # length + +read closed +write close diff --git a/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/create.view.with.notice/server.rpt b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/create.view.with.notice/server.rpt new file mode 100644 index 0000000000..da1ab2633d --- /dev/null +++ b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/create.view.with.notice/server.rpt @@ -0,0 +1,100 @@ +# +# Copyright 2021-2024 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. +# + +property networkAcceptWindow 8192 + +accept "zilla://streams/net0" + option zilla:window ${networkAcceptWindow} + option zilla:transmission "duplex" + option zilla:byteorder "network" + +accepted + +connected + +read 75 # length + 3s # major version + 0s # minor version + "user" [0x00] # name + "root" [0x00] # value + "database" [0x00] # name + "dev" [0x00] # value + "application_name" [0x00] # name + "psql" [0x00] # value + "client_encoding" [0x00] # name + "UTF8" [0x00] # value + [0x00] # end of parameters + +write [0x52] # type R + 8 # length + 0 # authentication type + +write [0x4b] # type K + 12 # length + 0 # pid + 0 # key + +write [0x53] # type S + 25 # length + "client_encoding" [0x00] # name + "UTF8" [0x00] # value + +write [0x53] # type S + 35 # length + "standard_conforming_strings" [0x00] # name + [0x6f 0x6e 0x00] # value + +write [0x53] # type S + 25 # length + "server_version" [0x00] # name + "9.1.0" [0x00] # value + +write [0x53] # type S + 27 # length + "application_name" [0x00] # name + "zilla" [0x00] # value + +write [0x5a] # type Z + 5 # length + [0x49] # status + +read [0x51] # type Q + 93 # length + "CREATE VIEW IF NOT EXISTS cities_view AS SELECT name, created_at::timestamp FROM cities;" + [0x00] # End of string + +write [0x4e] # type N + 50 # length + "SNOTICE" # severity + [0x00] # end of string + "C00000" # code + [0x00] # end of string + "MYour session timezone is UTC." # code + [0x00] # end of string + +write [0x43] # type C + 16 # length + "CREATE_VIEW" # tag + [0x00] # End of string + +write [0x5a] # type Z + 5 # length + [0x49] # status + +write [0x58] # type X + 4 # length + +write close +read closed diff --git a/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/ApplicationIT.java b/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/ApplicationIT.java index 726c61118b..4874ddaf64 100644 --- a/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/ApplicationIT.java +++ b/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/ApplicationIT.java @@ -46,6 +46,16 @@ public void shouldCreateTableWithPrimaryKey() throws Exception k3po.finish(); } + @Test + @Specification({ + "${app}/create.view.with.notice/client", + "${app}/create.view.with.notice/server" + }) + public void shouldCreateViewWithNotice() throws Exception + { + k3po.finish(); + } + @Test @Specification({ "${app}/select.table/client", diff --git a/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/NetworkIT.java b/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/NetworkIT.java index 6441439911..e386a8a532 100644 --- a/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/NetworkIT.java +++ b/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/NetworkIT.java @@ -46,6 +46,16 @@ public void shouldCreateTableWithPrimaryKey() throws Exception k3po.finish(); } + @Test + @Specification({ + "${net}/create.view.with.notice/client", + "${net}/create.view.with.notice/server" + }) + public void shouldCreateViewWithNotice() throws Exception + { + k3po.finish(); + } + @Test @Specification({ "${net}/select.table/client", diff --git a/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/internal/PgsqlFunctionsTest.java b/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/internal/PgsqlFunctionsTest.java index 19fae7ba10..6deb990402 100644 --- a/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/internal/PgsqlFunctionsTest.java +++ b/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/internal/PgsqlFunctionsTest.java @@ -35,6 +35,7 @@ import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlBeginExFW; import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlDataExFW; import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlFlushExFW; +import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlNoticeFlushExFW; import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlStatus; @@ -175,6 +176,28 @@ public void shouldEncodePgsqlFlushErrorExtension() assertEquals("Failed to run the query.\u0000", flushEx.error().message().asString()); } + @Test + public void shouldEncodePgsqlFlushNoticeExtension() + { + final byte[] build = flushEx() + .typeId(0x01) + .notice() + .severity("NOTICE") + .code("0000") + .message("Failed to run the query.") + .build() + .build(); + + DirectBuffer buffer = new UnsafeBuffer(build); + PgsqlFlushExFW flushEx = new PgsqlFlushExFW().wrap(buffer, 0, buffer.capacity()); + PgsqlNoticeFlushExFW notice = flushEx.notice(); + + assertEquals(0x01, flushEx.typeId()); + assertEquals("SNOTICE\u0000", notice.severity().asString()); + assertEquals("C0000\u0000", notice.code().asString()); + assertEquals("MFailed to run the query.\u0000", notice.message().asString()); + } + @Test public void shouldEncodePgsqlFlushCancelRequestExtension() { diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/PgsqlClientFactory.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/PgsqlClientFactory.java index 966a20dafc..58ed1de46a 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/PgsqlClientFactory.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/PgsqlClientFactory.java @@ -54,6 +54,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlErrorFlushExFW; import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlFlushExFW; import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlFormat; +import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlNoticeFlushExFW; import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlQueryDataExFW; import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlStatus; import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.ResetFW; @@ -64,7 +65,6 @@ import io.aklivity.zilla.runtime.engine.buffer.BufferPool; import io.aklivity.zilla.runtime.engine.config.BindingConfig; - public final class PgsqlClientFactory implements PgsqlStreamFactory { private static final Byte MESSAGE_TYPE_TYPE = 'T'; @@ -77,6 +77,7 @@ public final class PgsqlClientFactory implements PgsqlStreamFactory private static final Byte MESSAGE_TYPE_READY = 'Z'; private static final Byte MESSAGE_TYPE_TERMINATION = 'X'; private static final Byte MESSAGE_TYPE_ERROR = 'E'; + private static final Byte MESSAGE_TYPE_NOTICE = 'N'; private static final int AUTHENTICATION_SUCCESS_CODE = 0; private static final int END_OF_FIELD = 0x00; @@ -116,6 +117,7 @@ public final class PgsqlClientFactory implements PgsqlStreamFactory private final PgsqlDataExFW.Builder dataExRW = new PgsqlDataExFW.Builder(); private final PgsqlFlushExFW.Builder flushExRW = new PgsqlFlushExFW.Builder(); private final PgsqlErrorFlushExFW.Builder flushErrorExRW = new PgsqlErrorFlushExFW.Builder(); + private final PgsqlNoticeFlushExFW.Builder flushNoticeExRW = new PgsqlNoticeFlushExFW.Builder(); private final Array32FW.Builder columnsRW = new Array32FW.Builder<>(new PgsqlColumnInfoFW.Builder(), new PgsqlColumnInfoFW()); @@ -150,6 +152,7 @@ public final class PgsqlClientFactory implements PgsqlStreamFactory private final PgsqlClientDecoder decodePgsqlReady = this::decodePgsqlMessageReady; private final PgsqlClientDecoder decodePgsqlTermination = this::decodePgsqlMessageTerminator; private final PgsqlClientDecoder decodePgsqlPayload = this::decodePgsqlMessagePayload; + private final PgsqlClientDecoder decodePgsqlNotice = this::decodePgsqlMessageNotice; private final PgsqlClientDecoder decodePgsqlError = this::decodePgsqlMessageError; private final PgsqlClientDecoder decodePgsqlIgnoreOne = this::decodePgsqlIgnoreOne; private final PgsqlClientDecoder decodePgsqlIgnoreAll = this::decodePgsqlIgnoreAll; @@ -166,6 +169,7 @@ public final class PgsqlClientFactory implements PgsqlStreamFactory decodersByType.put(MESSAGE_TYPE_COMPLETION, decodePgsqlCompletion); decodersByType.put(MESSAGE_TYPE_READY, decodePgsqlReady); decodersByType.put(MESSAGE_TYPE_TERMINATION, decodePgsqlTermination); + decodersByType.put(MESSAGE_TYPE_NOTICE, decodePgsqlNotice); decodersByType.put(MESSAGE_TYPE_ERROR, decodePgsqlError); this.decodersByType = decodersByType; } @@ -742,6 +746,39 @@ private void onDecodeMessageError( stream.doApplicationFlush(traceId, authorization, decodeSlotReserved, completionEx); } + private void onDecodeMessageNotice( + long traceId, + long authorization, + DirectBuffer buffer, + int offset, + int length) + { + int progressOffset = offset; + + PgsqlNoticeFlushExFW.Builder notice = flushNoticeExRW.wrap(extBuffer, 0, extBuffer.capacity()); + + final int severityLength = getLengthOfString(buffer, progressOffset); + notice.severity(buffer, progressOffset, severityLength); + progressOffset += severityLength; + + final int codeLength = getLengthOfString(buffer, progressOffset); + notice.code(buffer, progressOffset, codeLength); + progressOffset += codeLength; + + final int messageLength = getLengthOfString(buffer, progressOffset); + notice.message(buffer, progressOffset, messageLength); + progressOffset += messageLength; + + assert offset + length == progressOffset; + + Consumer completionEx = e -> e.set((b, o, l) -> flushExRW.wrap(b, o, l) + .typeId(pgsqlTypeId) + .notice(c -> c.set(notice.build())) + .build().sizeof()); + + stream.doApplicationFlush(traceId, authorization, decodeSlotReserved, completionEx); + } + private void onDecodeMessageReady( long traceId, long authorization, @@ -1606,6 +1643,35 @@ private int decodePgsqlMessageError( return progressOffset; } + private int decodePgsqlMessageNotice( + PgsqlClient client, + long traceId, + long authorization, + long budgetId, + DirectBuffer buffer, + int offset, + int limit) + { + int progressOffset = offset; + + final PgsqlMessageFW pgsqlNotice = messageRO.tryWrap(buffer, offset, limit); + + if (pgsqlNotice != null && + limit - offset >= pgsqlNotice.length() + Integer.BYTES) + { + progressOffset = pgsqlNotice.limit(); + + int length = pgsqlNotice.length() - Integer.BYTES; + client.onDecodeMessageNotice(traceId, authorization, buffer, progressOffset, length); + + progressOffset += length; + + client.decoder = decodePgsqlMessage; + } + + return progressOffset; + } + private int decodePgsqlMessageReady( PgsqlClient client, long traceId, diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/PgsqlServerFactory.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/PgsqlServerFactory.java index d0e646b7c8..02f07dc7df 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/PgsqlServerFactory.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/PgsqlServerFactory.java @@ -53,6 +53,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlDataExFW; import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlErrorFlushExFW; import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlFlushExFW; +import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlNoticeFlushExFW; import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlParameterFW; import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlReadyFlushExFW; import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlStatus; @@ -72,6 +73,7 @@ public final class PgsqlServerFactory implements PgsqlStreamFactory private static final Byte MESSAGE_TYPE_DATA_ROW = 'D'; private static final Byte MESSAGE_TYPE_COMPLETION = 'C'; private static final Byte MESSAGE_TYPE_ERROR = 'E'; + private static final Byte MESSAGE_TYPE_NOTICE = 'N'; private static final Byte MESSAGE_TYPE_READY = 'Z'; private static final Byte MESSAGE_TYPE_TERMINATE = 'X'; private static final Byte MESSAGE_TYPE_PARAMETER_STATUS = 'S'; @@ -911,6 +913,9 @@ private void onApplicationFlush( case PgsqlFlushExFW.KIND_ERROR: doEncodeError(traceId, authorization, pgsqlFlushEx.error()); break; + case PgsqlFlushExFW.KIND_NOTICE: + doEncodeNotice(traceId, authorization, pgsqlFlushEx.notice()); + break; case PgsqlFlushExFW.KIND_READY: doEncodeReady(traceId, authorization, pgsqlFlushEx.ready()); break; @@ -1213,6 +1218,32 @@ private void doEncodeError( server.doNetworkData(traceId, authorization, FLAGS_COMP, 0L, messageBuffer, 0, errorOffset); } + private void doEncodeNotice( + long traceId, + long authorization, + PgsqlNoticeFlushExFW notice) + { + int errorOffset = 0; + final int severityLength = notice.severity().value().capacity(); + final int codeLength = notice.code().value().capacity(); + final int messageLength = notice.message().value().capacity(); + + PgsqlMessageFW messageCompleted = messageRW.wrap(messageBuffer, 0, messageBuffer.capacity()) + .type(MESSAGE_TYPE_NOTICE) + .length(Integer.BYTES + severityLength + codeLength + messageLength) + .build(); + errorOffset += messageCompleted.limit(); + + messageBuffer.putBytes(errorOffset, notice.severity().value(), 0, severityLength); + errorOffset += severityLength; + messageBuffer.putBytes(errorOffset, notice.code().value(), 0, codeLength); + errorOffset += codeLength; + messageBuffer.putBytes(errorOffset, notice.message().value(), 0, messageLength); + errorOffset += messageLength; + + server.doNetworkData(traceId, authorization, FLAGS_COMP, 0L, messageBuffer, 0, errorOffset); + } + private void doEncodeReady( long traceId, long authorization, diff --git a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/ClientIT.java b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/ClientIT.java index 8621537a74..d1d6ea104e 100644 --- a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/ClientIT.java +++ b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/ClientIT.java @@ -58,6 +58,17 @@ public void shouldCreateTableWithPrimaryKey() throws Exception k3po.finish(); } + @Test + @Configuration("client.yaml") + @Specification({ + "${app}/create.view.with.notice/client", + "${net}/create.view.with.notice/server" + }) + public void shouldCreateViewWithNotice() throws Exception + { + k3po.finish(); + } + @Test @Configuration("client.yaml") @Specification({ diff --git a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/ServerIT.java b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/ServerIT.java index 9d301f9ca5..26ec542b52 100644 --- a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/ServerIT.java +++ b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/ServerIT.java @@ -137,4 +137,15 @@ public void shouldSelectTableWithError() throws Exception { k3po.finish(); } + + @Test + @Configuration("server.yaml") + @Specification({ + "${net}/create.view.with.notice/client", + "${app}/create.view.with.notice/server" + }) + public void shouldCreateViewWithNotice() throws Exception + { + k3po.finish(); + } } 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 77da3ddbbd..1e798af1a2 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 @@ -1001,7 +1001,6 @@ private void onAppFlush( onAppReadyFlush(traceId, authorization, pgsqlFlushEx); break; default: - assert false; break; } } From d47d74fbef52c1923751cde39116b7c253662b7c Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Fri, 6 Dec 2024 10:31:35 -0800 Subject: [PATCH 049/104] Ignore case sensitivity --- .../binding/pgsql/parser/listener/SqlCommandListener.java | 4 ++-- .../pgsql/parser/listener/SqlCreateZtableTopicListener.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) 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 097e8d6761..737da741f4 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 @@ -47,7 +47,7 @@ public void enterRoot( public void enterCreateztstmt( PostgreSqlParser.CreateztstmtContext ctx) { - command = "CREATE %s".formatted(ctx.optztable_type().getText()); + command = "CREATE %s".formatted(ctx.optztable_type().getText().toUpperCase()); } @Override @@ -87,7 +87,7 @@ public void enterShowstmt( PostgreSqlParser.ShowstmtContext ctx) { String type = ctx.show_object_type_name().getText(); - command = "SHOW %s".formatted(type); + command = "SHOW %s".formatted(type.toUpperCase()); } @Override diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZtableTopicListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZtableTopicListener.java index 8abaebae0a..60d1ebdbfb 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZtableTopicListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZtableTopicListener.java @@ -104,7 +104,7 @@ private void addColumn( } else { - constraints.add(tokens.getText(constraint.colconstraintelem())); + constraints.add(tokens.getText(constraint.colconstraintelem()).toUpperCase()); } } columns.add(new TableColumn(columnName, dataType, constraints)); From a45c87c53efffba41040927c1e3319d6444a6966 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 9 Dec 2024 10:59:05 -0800 Subject: [PATCH 050/104] WIP --- .../listener/SqlAlterStreamTopicListener.java | 10 ++- .../listener/SqlAlterTableTopicListener.java | 10 ++- .../listener/SqlCreateFunctionListener.java | 12 ++- .../listener/SqlCreateStreamListener.java | 10 ++- .../listener/SqlCreateTableTopicListener.java | 13 ++- .../listener/SqlCreateZviewListener.java | 7 +- .../parser/listener/SqlDropListener.java | 13 ++- .../binding/pgsql/parser/PgsqlParserTest.java | 81 +++++++------------ 8 files changed, 83 insertions(+), 73 deletions(-) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterStreamTopicListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterStreamTopicListener.java index ed1cd24f08..acac110246 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterStreamTopicListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterStreamTopicListener.java @@ -27,15 +27,19 @@ public class SqlAlterStreamTopicListener extends PostgreSqlParserBaseListener { + private static final String PUBLIC_SCHEMA_NAME = "public"; + private static final String SCHEMA_PATTERN = "\\."; + + private final List alterExpressions; private final TokenStream tokens; private String schema; private String name; - private final List alterExpressions = new ArrayList<>(); public SqlAlterStreamTopicListener( TokenStream tokens) { + this.alterExpressions = new ArrayList<>(); this.tokens = tokens; } @@ -58,8 +62,8 @@ public void enterQualified_name( PostgreSqlParser.Qualified_nameContext ctx) { String text = ctx.getText(); - String[] split = text.split("\\."); - schema = split.length > 1 ? split[0] : "public"; + String[] split = text.split(SCHEMA_PATTERN); + schema = split.length > 1 ? split[0] : PUBLIC_SCHEMA_NAME; name = split.length > 1 ? split[1] : text; } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterTableTopicListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterTableTopicListener.java index 8498a01c09..e38ed1fa3e 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterTableTopicListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterTableTopicListener.java @@ -27,15 +27,19 @@ public class SqlAlterTableTopicListener extends PostgreSqlParserBaseListener { + private static final String PUBLIC_SCHEMA_NAME = "public"; + private static final String SCHEMA_PATTERN = "\\."; + + private final List alterExpressions; private final TokenStream tokens; private String schema; private String name; - private final List alterExpressions = new ArrayList<>(); public SqlAlterTableTopicListener( TokenStream tokens) { + this.alterExpressions = new ArrayList<>(); this.tokens = tokens; } @@ -58,8 +62,8 @@ public void enterQualified_name( PostgreSqlParser.Qualified_nameContext ctx) { String text = ctx.getText(); - String[] split = text.split("\\."); - schema = split.length > 1 ? split[0] : "public"; + String[] split = text.split(SCHEMA_PATTERN); + schema = split.length > 1 ? split[0] : PUBLIC_SCHEMA_NAME; name = split.length > 1 ? split[1] : text; } 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 193b961d08..ab3c6c0898 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 @@ -26,9 +26,11 @@ public class SqlCreateFunctionListener extends PostgreSqlParserBaseListener { - private final List arguments = new ArrayList<>(); - private final List tables = new ArrayList<>(); + private static final String PUBLIC_SCHEMA_NAME = "public"; + private static final String SCHEMA_PATTERN = "\\."; + private final List tables; + private final List arguments; private final TokenStream tokens; private String schema; @@ -40,6 +42,8 @@ public class SqlCreateFunctionListener extends PostgreSqlParserBaseListener public SqlCreateFunctionListener( TokenStream tokens) { + this.tables = new ArrayList<>(); + this.arguments = new ArrayList<>(); this.tokens = tokens; } @@ -66,8 +70,8 @@ public void enterCreatefunctionstmt( PostgreSqlParser.CreatefunctionstmtContext ctx) { String text = ctx.func_name().getText(); - String[] split = text.split("\\."); - schema = split.length > 1 ? split[0] : "public"; + String[] split = text.split(SCHEMA_PATTERN); + schema = split.length > 1 ? split[0] : PUBLIC_SCHEMA_NAME; name = split.length > 1 ? split[1] : text; } 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 8f1a029d17..5fbfa13272 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 @@ -25,7 +25,10 @@ public class SqlCreateStreamListener extends PostgreSqlParserBaseListener { - private final Map columns = new LinkedHashMap<>(); + private static final String PUBLIC_SCHEMA_NAME = "public"; + private static final String SCHEMA_PATTERN = "\\."; + + private final Map columns; private final TokenStream tokens; private String schema; @@ -34,6 +37,7 @@ public class SqlCreateStreamListener extends PostgreSqlParserBaseListener public SqlCreateStreamListener( TokenStream tokens) { + this.columns = new LinkedHashMap<>(); this.tokens = tokens; } @@ -55,8 +59,8 @@ public void enterQualified_name( PostgreSqlParser.Qualified_nameContext ctx) { String text = ctx.getText(); - String[] split = text.split("\\."); - schema = split.length > 1 ? split[0] : "public"; + String[] split = text.split(SCHEMA_PATTERN); + schema = split.length > 1 ? split[0] : PUBLIC_SCHEMA_NAME; name = split.length > 1 ? split[1] : text; } 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 c1fa5721a7..1b400395db 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 @@ -28,8 +28,11 @@ public class SqlCreateTableTopicListener extends PostgreSqlParserBaseListener { - private final List columns = new ArrayList<>(); - private final Set primaryKeys = new ObjectHashSet<>(); + private static final String PUBLIC_SCHEMA_NAME = "public"; + private static final String SCHEMA_PATTERN = "\\."; + + private final List columns; + private final Set primaryKeys; private final TokenStream tokens; private String schema; @@ -38,6 +41,8 @@ public class SqlCreateTableTopicListener extends PostgreSqlParserBaseListener public SqlCreateTableTopicListener( TokenStream tokens) { + this.primaryKeys = new ObjectHashSet<>(); + this.columns = new ArrayList<>(); this.tokens = tokens; } @@ -61,8 +66,8 @@ public void enterQualified_name( PostgreSqlParser.Qualified_nameContext ctx) { String text = ctx.getText(); - String[] split = text.split("\\."); - schema = split.length > 1 ? split[0] : "public"; + String[] split = text.split(SCHEMA_PATTERN); + schema = split.length > 1 ? split[0] : PUBLIC_SCHEMA_NAME; name = split.length > 1 ? split[1] : text; } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZviewListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZviewListener.java index 05099b9125..93e1034ce9 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZviewListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZviewListener.java @@ -22,6 +22,9 @@ public class SqlCreateZviewListener extends PostgreSqlParserBaseListener { + private static final String PUBLIC_SCHEMA_NAME = "public"; + private static final String SCHEMA_PATTERN = "\\."; + private final TokenStream tokens; private String schema; @@ -53,8 +56,8 @@ public void enterCreatezviewstmt( PostgreSqlParser.CreatezviewstmtContext ctx) { String text = ctx.create_mv_target().qualified_name().getText(); - String[] split = text.split("\\."); - schema = split.length > 1 ? split[0] : "public"; + String[] split = text.split(SCHEMA_PATTERN); + schema = split.length > 1 ? split[0] : PUBLIC_SCHEMA_NAME; name = split.length > 1 ? split[1] : text; } 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 4b72e72c8f..9b736164f3 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 @@ -23,8 +23,15 @@ public class SqlDropListener extends PostgreSqlParserBaseListener { - private final List drops = new ArrayList<>(); + private static final String PUBLIC_SCHEMA_NAME = "public"; + private static final String SCHEMA_PATTERN = "\\."; + private final List drops; + + public SqlDropListener() + { + this.drops = new ArrayList<>(); + } public List drops() { return drops; @@ -44,8 +51,8 @@ public void enterDropstmt( ctx.any_name_list().any_name().forEach(n -> { String text = n.getText(); - String[] split = text.split("\\."); - String schema = split.length > 1 ? split[0] : "public"; + String[] split = text.split(SCHEMA_PATTERN); + String schema = split.length > 1 ? split[0] : PUBLIC_SCHEMA_NAME; String name = split.length > 1 ? split[1] : text; drops.add(new Drop(schema, name)); }); 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 d64102057d..72844d5239 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 @@ -43,7 +43,7 @@ public void setUp() } @Test - public void shouldParseWithPrimaryKeySql() + public void shouldCreateTableWithPrimaryKey() { String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; Table table = parser.parseCreateTable(sql); @@ -53,7 +53,7 @@ public void shouldParseWithPrimaryKeySql() } @Test - public void shouldCreateTableParseWithPrimaryKeysSql() + public void shouldCreateTableWithPrimaryKeyAsAggregate() { String sql = """ CREATE TABLE example_table ( @@ -72,7 +72,7 @@ PRIMARY KEY (id, name) } @Test - public void shouldParseCreateTableName() + public void shouldCreateTableName() { String sql = "CREATE TABLE test (id INT);"; Table table = parser.parseCreateTable(sql); @@ -81,7 +81,7 @@ public void shouldParseCreateTableName() } @Test - public void shouldParseCreateTableNameWithDoublePrecisionTypeField() + public void shouldCreateTableNameWithDoublePrecisionTypeField() { String sql = "CREATE TABLE test (id DOUBLE PRECISION);"; Table table = parser.parseCreateTable(sql); @@ -90,7 +90,7 @@ public void shouldParseCreateTableNameWithDoublePrecisionTypeField() } @Test - public void shouldParseCreateTableColumns() + public void shouldCreateTableColumns() { String sql = "CREATE TABLE test (id INT, name VARCHAR(100));"; Table table = parser.parseCreateTable(sql); @@ -100,27 +100,6 @@ public void shouldParseCreateTableColumns() assertEquals("VARCHAR(100)", table.columns().get(1).type()); } - @Test - public void shouldParseCreatreTablePrimaryKey() - { - String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; - Table table = parser.parseCreateTable(sql); - - assertEquals(1, table.primaryKeys().size()); - assertTrue(table.primaryKeys().contains("id")); - } - - @Test - public void shouldParseCreateTableCompositePrimaryKey() - { - String sql = "CREATE TABLE test (id INT, name VARCHAR(100), PRIMARY KEY (id, name));"; - Table table = parser.parseCreateTable(sql); - - assertEquals(2, table.primaryKeys().size()); - assertTrue(table.primaryKeys().contains("id")); - assertTrue(table.primaryKeys().contains("name")); - } - @Test public void shouldHandleEmptyCreateTable() { @@ -141,7 +120,7 @@ public void shouldHandleEmptySql() } @Test - public void shouldParseCreateZView() + public void shouldCreateZview() { String sql = "CREATE ZVIEW test_view AS SELECT * FROM test_table;"; View view = parser.parseCreateZView(sql); @@ -176,7 +155,7 @@ public void shouldHandleInvalidCreateTable() } @Test - public void shouldParseDropSingleTable() + public void shouldDropSingleTable() { String sql = "DROP TABLE test_table;"; List drops = parser.parseDrop(sql); @@ -200,7 +179,7 @@ public void shouldParseDropMultipleTables() } @Test(expected = ParseCancellationException.class) - public void shouldHandleEmptyDropStatement() + public void shouldDropTable() { String sql = "DROP TABLE;"; List drops = parser.parseDrop(sql); @@ -209,7 +188,7 @@ public void shouldHandleEmptyDropStatement() } @Test - public void shouldParseDropView() + public void shouldDropView() { String sql = "DROP VIEW test_view;"; List drops = parser.parseDrop(sql); @@ -220,7 +199,7 @@ public void shouldParseDropView() } @Test - public void shouldParseDropZview() + public void shouldDropZview() { String sql = "DROP ZVIEW test_materialized_view;"; List drops = parser.parseDrop(sql); @@ -230,7 +209,7 @@ public void shouldParseDropZview() } @Test - public void shouldParseCreateStream() + public void shouldCreateStream() { String sql = "CREATE STREAM test_stream (id INT, name VARCHAR(100));"; Stream stream = parser.parseCreateStream(sql); @@ -242,7 +221,7 @@ public void shouldParseCreateStream() } @Test - public void shouldParseCreateStreamIfNotExists() + public void shouldCreateStreamIfNotExists() { String sql = "CREATE STREAM IF NOT EXISTS test_stream (id INT, name VARCHAR(100));"; Stream stream = parser.parseCreateStream(sql); @@ -261,7 +240,7 @@ public void shouldHandleInvalidCreateStream() } @Test - public void shouldParseCreateFunction() + public void shouldCreateFunction() { String sql = "CREATE FUNCTION test_function() RETURNS INT AS $$ BEGIN RETURN 1; END $$ LANGUAGE plpgsql;"; Function function = parser.parseCreateFunction(sql); @@ -272,7 +251,7 @@ public void shouldParseCreateFunction() } @Test - public void shouldParseCreateFunctionWithLanguage() + public void shouldCreateFunctionWithLanguage() { String sql = "CREATE FUNCTION test_function(int) RETURNS TABLE (x INT) LANGUAGE python AS 'test_function';"; Function function = parser.parseCreateFunction(sql); @@ -284,7 +263,7 @@ public void shouldParseCreateFunctionWithLanguage() } @Test - public void shouldParseCreateFunctionWithStructReturnType() + public void shouldCreateFunctionWithStructReturnType() { String sql = "CREATE FUNCTION test_function(int) RETURNS struct" + " LANGUAGE python AS 'test_function';"; @@ -304,7 +283,7 @@ public void shouldHandleInvalidCreateFunction() } @Test - public void shouldParseCreateTableWithUniqueConstraint() + public void shouldCreateTableWithUniqueConstraint() { String sql = "CREATE TABLE test (id INT UNIQUE, name VARCHAR(100));"; Table table = parser.parseCreateTable(sql); @@ -316,7 +295,7 @@ public void shouldParseCreateTableWithUniqueConstraint() } @Test - public void shouldParseCreateTableWithForeignKey() + public void shouldCreateTableWithForeignKey() { String sql = "CREATE TABLE test (id INT, name VARCHAR(100), CONSTRAINT fk_name FOREIGN KEY (name)" + " REFERENCES other_table(name));"; @@ -347,7 +326,7 @@ public void shouldHandleInvalidCreateTableWithMissingColumns() } @Test - public void shouldParseCreateTableWithDefaultValues() + public void shouldCreateTableWithDefaultValues() { String sql = "CREATE TABLE test (id INT DEFAULT 0, name VARCHAR(100) DEFAULT 'unknown');"; Table table = parser.parseCreateTable(sql); @@ -359,7 +338,7 @@ public void shouldParseCreateTableWithDefaultValues() } @Test - public void shouldParseCreateTableWithNotNullConstraint() + public void shouldCreateTableWithNotNullConstraint() { String sql = "CREATE TABLE test (id INT NOT NULL, name VARCHAR(100) NOT NULL);"; Table table = parser.parseCreateTable(sql); @@ -371,7 +350,7 @@ public void shouldParseCreateTableWithNotNullConstraint() } @Test - public void shouldParseCreateTableWithMultipleConstraints() + public void shouldCreateTableWithMultipleConstraints() { String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100) UNIQUE, age INT CHECK (age > 0));"; Table table = parser.parseCreateTable(sql); @@ -384,7 +363,7 @@ public void shouldParseCreateTableWithMultipleConstraints() } @Test - public void shouldParseAlterTableAddColumn() + public void shouldAlterTableAddColumn() { String sql = "ALTER TABLE test_table ADD COLUMN new_column INT;"; Alter alter = parser.parseAlterTable(sql); @@ -397,7 +376,7 @@ public void shouldParseAlterTableAddColumn() } @Test - public void shouldParseAlterTopicAddColumn() + public void shouldAlterTopicAddColumn() { String sql = "ALTER TOPIC test_table ADD COLUMN new_column INT;"; Alter alter = parser.parseAlterTable(sql); @@ -410,7 +389,7 @@ public void shouldParseAlterTopicAddColumn() } @Test - public void shouldParseAlterTableDropColumn() + public void shouldAlterTableDropColumn() { String sql = "ALTER TABLE test_table DROP COLUMN old_column;"; Alter alter = parser.parseAlterTable(sql); @@ -422,7 +401,7 @@ public void shouldParseAlterTableDropColumn() } @Test - public void shouldParseAlterTableModifyColumn() + public void shouldAlterTableModifyColumn() { String sql = "ALTER TABLE test_table ALTER COLUMN existing_column TYPE VARCHAR(100);"; Alter alter = parser.parseAlterTable(sql); @@ -441,7 +420,7 @@ public void shouldHandleInvalidAlterTable() } @Test - public void shouldParseCommandForAlterTable() + public void shouldDetectAlterCommand() { String sql = "ALTER TABLE test_table ALTER COLUMN existing_column TYPE VARCHAR(100);"; String expectedCommand = "ALTER TABLE"; @@ -452,7 +431,7 @@ public void shouldParseCommandForAlterTable() } @Test - public void shouldParseCommandForCreateTopic() + public void shouldDetectCreateTopicCommand() { String sql = "CREATE TOPIC test (id INT UNIQUE, name VARCHAR(100));"; String expectedCommand = "CREATE TOPIC"; @@ -463,7 +442,7 @@ public void shouldParseCommandForCreateTopic() } @Test - public void shouldParseAlterStreamAddColumn() + public void shouldDetectAlterStreamAddColumn() { String sql = "ALTER STREAM test_stream ADD COLUMN new_column INT;"; Alter alter = parser.parseAlterStream(sql); @@ -476,7 +455,7 @@ public void shouldParseAlterStreamAddColumn() } @Test - public void shouldParseAlterStreamDropColumn() + public void shouldAlterStreamDropColumn() { String sql = "ALTER STREAM test_stream DROP COLUMN old_column;"; Alter alter = parser.parseAlterStream(sql); @@ -495,7 +474,7 @@ public void shouldHandleInvalidAlterStream() } @Test - public void shouldParseAlterStreamModifyColumn() + public void shouldAlterStreamModifyColumn() { String sql = "ALTER STREAM test_stream ALTER COLUMN existing_column TYPE VARCHAR(100);"; Alter alter = parser.parseAlterStream(sql); @@ -508,7 +487,7 @@ public void shouldParseAlterStreamModifyColumn() } @Test - public void shouldParseShowZviews() + public void shouldShowZviews() { String sql = "SHOW ZVIEWS;"; String type = parser.parseShow(sql); From 8a9305b04fc5ecdf8a6271ff0e54a4ed31cb3f5a Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 9 Dec 2024 13:30:26 -0800 Subject: [PATCH 051/104] WIP --- .../alter.stream.add.column/client.rpt | 2 +- .../alter.stream.add.column/server.rpt | 2 +- .../alter.table.add.column/client.rpt | 2 +- .../alter.table.add.column/server.rpt | 2 +- .../client.stream.established/client.rpt | 2 +- .../client.stream.established/server.rpt | 2 +- .../create.function.return.struct/client.rpt | 2 +- .../create.function.return.struct/server.rpt | 2 +- .../create.stream.with.includes/client.rpt | 2 +- .../create.stream.with.includes/server.rpt | 2 +- .../effective/create.stream/client.rpt | 2 +- .../effective/create.stream/server.rpt | 2 +- .../effective/create.streams/client.rpt | 2 +- .../effective/create.streams/server.rpt | 2 +- .../client.rpt | 2 +- .../server.rpt | 2 +- .../create.table.with.primary.key/client.rpt | 2 +- .../create.table.with.primary.key/server.rpt | 2 +- .../streams/effective/create.zview/client.rpt | 2 +- .../streams/effective/create.zview/server.rpt | 2 +- .../streams/effective/drop.stream/client.rpt | 2 +- .../streams/effective/drop.stream/server.rpt | 2 +- .../streams/effective/drop.table/client.rpt | 2 +- .../streams/effective/drop.table/server.rpt | 2 +- .../streams/effective/drop.zview/client.rpt | 2 +- .../streams/effective/drop.zview/server.rpt | 2 +- .../client.rpt | 2 +- .../server.rpt | 2 +- .../query.with.multiple.statements/client.rpt | 2 +- .../query.with.multiple.statements/server.rpt | 2 +- .../config/RisingwaveBindingConfig.java | 4 +- .../stream/RisingwaveProxyFactory.java | 111 +++++++----------- 32 files changed, 76 insertions(+), 99 deletions(-) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt index db81442dff..0455311153 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt @@ -47,7 +47,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt index d1b12252e0..d2d9208435 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt @@ -50,7 +50,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt index 02130cffe1..9f3fc9cff0 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/client.rpt @@ -70,7 +70,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt index 4c12efaea1..5c17e363c5 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.table.add.column/server.rpt @@ -73,7 +73,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt index 864b56fd5e..f726fcbe04 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt @@ -79,7 +79,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/server.rpt index 2c0eb87d14..f3d6688638 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/server.rpt @@ -49,7 +49,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 43bdf1b732..d06ad6b7ae 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 @@ -86,7 +86,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "app") - .parameter("database", "dev") + .parameter("database", "zillabase") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") .build()} 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 c4a5d1520b..4ee6353c0b 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 @@ -82,7 +82,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "app") - .parameter("database", "dev") + .parameter("database", "zillabase") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") .build()} 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 2a4f7d818a..3fa7f9a0b1 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 @@ -82,7 +82,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 cead1c1e0b..7fed64f580 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 @@ -85,7 +85,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt index 864b56fd5e..f726fcbe04 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt @@ -79,7 +79,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt index 8122b406e3..04e6d7901a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt @@ -82,7 +82,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt index dc61f2cea2..9ad792d198 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt @@ -111,7 +111,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt index 645d1c85d3..4d95c24cf0 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt @@ -113,7 +113,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 aea654d790..910c953dab 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 @@ -214,7 +214,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 1c08badfc6..b52f630964 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 @@ -212,7 +212,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt index 8e1a9a7bbf..793f2a2f74 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/client.rpt @@ -204,7 +204,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt index 9c73ff870c..b99cc414a5 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.table.with.primary.key/server.rpt @@ -202,7 +202,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt index 1e0922644c..79bd3ca5d2 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt @@ -242,7 +242,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt index 9e8d55f15c..7028a490f8 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt @@ -246,7 +246,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt index ce29d13d64..61fc9fc126 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt @@ -70,7 +70,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt index bd61f7ed72..0e821f3fc3 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt @@ -73,7 +73,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt index d8d5287cad..eef388d7c7 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/client.rpt @@ -162,7 +162,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt index e7c074d951..239dfb1ead 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.table/server.rpt @@ -161,7 +161,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt index b17302ad3a..bd6e1d2c2d 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt @@ -117,7 +117,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt index 72b5052705..ffa1d07358 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt @@ -116,7 +116,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt index a94ca0b89d..7beaa96ed5 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt @@ -104,7 +104,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt index 60eaa5fc85..0d49df82b6 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt @@ -106,7 +106,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt index 6be23273f2..3b272f9e07 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt @@ -227,7 +227,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt index e46fc529b0..de21ba0f49 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt @@ -224,7 +224,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java index b2de83dfd7..2043e0c73d 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java @@ -73,7 +73,7 @@ public final class RisingwaveBindingConfig public final RisingwaveDropSinkTemplate dropSink; public final RisingwaveInsertIntoCatalogTemplate catalogInsert; public final RisingwaveDeleteFromCatalogTemplate catalogDelete; - public final RisingwaveGrantToSourceTemplate grantSource; + public final RisingwaveGrantToSourceTemplate grantResource; public final RisingwaveShowTypeTemplate showType; public RisingwaveBindingConfig( @@ -118,7 +118,7 @@ public RisingwaveBindingConfig( this.createFunction = new RisingwaveCreateFunctionTemplate(options.udfs); this.catalogInsert = new RisingwaveInsertIntoCatalogTemplate(INTERNAL_SCHEMA); this.catalogDelete = new RisingwaveDeleteFromCatalogTemplate(INTERNAL_SCHEMA); - this.grantSource = new RisingwaveGrantToSourceTemplate(); + this.grantResource = new RisingwaveGrantToSourceTemplate(); this.showType = new RisingwaveShowTypeTemplate(); } 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 b75988f14f..b123df854f 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 @@ -18,10 +18,13 @@ import static java.util.Objects.requireNonNull; import java.nio.ByteOrder; +import java.util.ArrayDeque; import java.util.ArrayList; +import java.util.Deque; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Queue; import java.util.function.Consumer; import java.util.function.LongFunction; import java.util.function.LongUnaryOperator; @@ -87,9 +90,6 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory private static final String DEFAULT_USER = "default\u0000"; private static final String ZVIEW_TABLE_NAME = "zviews"; - private static final int ZILLABASE_USER_HASH = ZILLABASE_USER.hashCode(); - private static final int DEFAULT_USER_HASH = DEFAULT_USER.hashCode(); - private static final int COMMAND_PROCESSED_ERRORED = -1; private static final int COMMAND_PROCESSED_NONE = 0; @@ -251,10 +251,11 @@ public MessageConsumer newStream( private final class PgsqlServer { private final MessageConsumer app; - private final Long2ObjectHashMap streamsByRouteIds; + private final PgsqlClient userClient; + private final Long2ObjectHashMap systemClientsByRouteId; private final RisingwaveBindingConfig binding; private final Map parameters; - private final LongArrayQueue responses; + private final Deque responses; private final IntArrayQueue queries; private final List columnTypes; private final List columnDescriptions; @@ -292,7 +293,7 @@ private PgsqlServer( long originId, long routedId, long initialId, - long risingwaveRouteId, + long systemId, Map parameters) { this.app = app; @@ -307,24 +308,18 @@ private PgsqlServer( this.columns = new Object2ObjectHashMap<>(); this.columnTypes = new ArrayList<>(); this.columnDescriptions = new ArrayList<>(); - this.streamsByRouteIds = new Long2ObjectHashMap<>(); - this.responses = new LongArrayQueue(); + this.systemClientsByRouteId = new Long2ObjectHashMap<>(); + this.responses = new ArrayDeque<>(); this.queries = new IntArrayQueue(); binding.routes.forEach(r -> - { - final long clientId = r.id + DEFAULT_USER_HASH; - streamsByRouteIds.put(clientId, - new PgsqlClient(this, routedId, r.id, clientId, DEFAULT_USER)); - }); + systemClientsByRouteId.put(r.id, + new PgsqlClient(this, routedId, r.id, ZILLABASE_USER))); - final long clientId = risingwaveRouteId + ZILLABASE_USER_HASH; - streamsByRouteIds.put(clientId, - new PgsqlClient(this, routedId, risingwaveRouteId, clientId, ZILLABASE_USER)); + userClient = new PgsqlClient(this, routedId, systemId, DEFAULT_USER); String userValue = parameters.get("user\u0000"); this.user = userValue.substring(0, userValue.length() - 1); - } private void onAppMessage( @@ -379,7 +374,7 @@ private void onAppBegin( state = RisingwaveState.openingInitial(state); - streamsByRouteIds.values().forEach(c -> c.doAppBegin(traceId, authorization, affinity)); + systemClientsByRouteId.values().forEach(c -> c.doAppBegin(traceId, authorization, affinity)); doAppWindow(traceId, authorization); @@ -516,13 +511,12 @@ private void onAppWindow( if (responses.isEmpty()) { - streamsByRouteIds.values().forEach(c -> c.doAppWindow(authorization, traceId)); + systemClientsByRouteId.values().forEach(c -> c.doAppWindow(authorization, traceId)); } while (credit > 0 && !responses.isEmpty()) { - final long routeId = responses.peekLong(); - PgsqlClient client = streamsByRouteIds.get(routeId); + PgsqlClient client = responses.peek(); if (client != null) { @@ -538,7 +532,7 @@ private void onAppWindow( } } - responses.removeLong(); + responses.remove(); } } @@ -611,7 +605,7 @@ private void doAppBegin( } private void doAppData( - long clientId, + PgsqlClient client, long routeId, long traceId, long authorization, @@ -621,7 +615,7 @@ private void doAppData( int limit, Flyweight extension) { - responses.add(clientId); + responses.add(client); final int length = limit - offset; final int reserved = length + initialPad; @@ -800,7 +794,7 @@ private void cleanup( long traceId, long authorization) { - streamsByRouteIds.values().forEach(c -> c.doAppAbortAndReset(traceId, authorization)); + systemClientsByRouteId.values().forEach(c -> c.doAppAbortAndReset(traceId, authorization)); doAppAbortAndReset(traceId, authorization); @@ -826,7 +820,6 @@ private final class PgsqlClient private final long originId; private final long routedId; - private final long clientId; private final String user; private long initialId; @@ -853,13 +846,11 @@ private PgsqlClient( PgsqlServer server, long originId, long routedId, - long clientId, String user) { this.server = server; this.originId = originId; this.routedId = routedId; - this.clientId = clientId; this.user = user; this.dataCommand = proxyDataCommand; @@ -949,7 +940,7 @@ private void onAppData( final OctetsFW extension = data.extension(); final OctetsFW payload = data.payload(); - dataCommand.handle(server, clientId, routedId, traceId, authorization, flags, + dataCommand.handle(server, this, routedId, traceId, authorization, flags, payload.buffer(), payload.offset(), payload.limit(), extension); } } @@ -1574,10 +1565,8 @@ private void decodeCreateTableCommand( String newStatement = ""; int progress = 0; - int user = ZILLABASE_USER_HASH; if (server.commandsProcessed == 0) { - user = DEFAULT_USER_HASH; newStatement = binding.createTopic.generate(table); } else if (server.commandsProcessed == 1) @@ -1594,7 +1583,7 @@ else if (server.commandsProcessed == 3) } else if (server.commandsProcessed == 4) { - newStatement = binding.grantSource.generate("TABLE", table.schema(), table.name(), server.user); + newStatement = binding.grantResource.generate("TABLE", table.schema(), table.name(), server.user); } else if (server.commandsProcessed == 5) { @@ -1611,7 +1600,7 @@ else if (server.commandsProcessed == 6) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); + final PgsqlClient client = server.systemClientsByRouteId.get(route.id); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1637,10 +1626,8 @@ private void decodeCreateStreamCommand( String newStatement = ""; int progress = 0; - int user = ZILLABASE_USER_HASH; if (server.commandsProcessed == 0) { - user = DEFAULT_USER_HASH; newStatement = binding.createTopic.generate(stream); } else if (server.commandsProcessed == 1) @@ -1654,7 +1641,7 @@ else if (server.commandsProcessed == 1) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); + final PgsqlClient client = server.systemClientsByRouteId.get(route.id); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1683,14 +1670,13 @@ private void decodeCreateZviewCommand( String newStatement = ""; int progress = 0; - int user = ZILLABASE_USER_HASH; if (server.commandsProcessed == 0) { newStatement = binding.createView.generate(view); } else if (server.commandsProcessed == 1) { - newStatement = binding.grantSource.generate("MATERIALIZED VIEW", view.schema(), view.name(), server.user); + newStatement = binding.grantResource.generate("MATERIALIZED VIEW", view.schema(), view.name(), server.user); } else if (server.commandsProcessed == 2) { @@ -1701,7 +1687,6 @@ else if (server.commandsProcessed == 2) } else if (server.commandsProcessed == 3) { - user = DEFAULT_USER_HASH; newStatement = binding.createTopic.generate(view, server.columns); } else if (server.commandsProcessed == 4) @@ -1719,7 +1704,7 @@ else if (server.commandsProcessed == 5) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); + final PgsqlClient client = server.systemClientsByRouteId.get(route.id); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = typeCommand; client.dataCommand = dataCommand; @@ -1753,7 +1738,7 @@ private void decodeCreateFunctionCommand( } else if (server.commandsProcessed == 1) { - newStatement = binding.grantSource.generate("FUNCTION", function.schema(), function.name(), server.user); + newStatement = binding.grantResource.generate("FUNCTION", function.schema(), function.name(), server.user); } statementBuffer.putBytes(progress, newStatement.getBytes()); @@ -1762,7 +1747,7 @@ else if (server.commandsProcessed == 1) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); + final PgsqlClient client = server.systemClientsByRouteId.get(route.id); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1796,10 +1781,8 @@ else if (server.commandsProcessed == 2 || String newStatement = ""; int progress = 0; - int user = ZILLABASE_USER_HASH; if (server.commandsProcessed == 0) { - user = DEFAULT_USER_HASH; newStatement = binding.alterTopic.generate(alter); } else if (server.commandsProcessed == 1) @@ -1813,7 +1796,7 @@ else if (server.commandsProcessed == 1) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); + final PgsqlClient client = server.systemClientsByRouteId.get(route.id); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1853,7 +1836,7 @@ else if (server.commandsProcessed == 0) final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); + final PgsqlClient client = server.systemClientsByRouteId.get(route.id); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1894,10 +1877,8 @@ private void decodeDropTableCommand( String newStatement = ""; int progress = 0; - int user = ZILLABASE_USER_HASH; if (server.commandsProcessed == 0) { - user = DEFAULT_USER_HASH; newStatement = binding.dropTopic.generate(table); } else if (server.commandsProcessed == 1) @@ -1921,13 +1902,13 @@ else if (server.commandsProcessed == 5) newStatement = binding.dropSource.generate(table, "_source"); } - statementBuffer.putBytes(progress, newStatement.getBytes()); + statementBuffer.putStringWithoutLengthUtf8(progress, newStatement); progress += newStatement.length(); final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); + final PgsqlClient client = server.systemClientsByRouteId.get(route.id); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1952,10 +1933,8 @@ private void decodeDropStreamCommand( String newStatement = ""; int progress = 0; - int user = ZILLABASE_USER_HASH; if (server.commandsProcessed == 0) { - user = DEFAULT_USER_HASH; newStatement = binding.dropTopic.generate(stream); } else if (server.commandsProcessed == 1) @@ -1963,13 +1942,13 @@ else if (server.commandsProcessed == 1) newStatement = binding.dropSource.generate(stream); } - statementBuffer.putBytes(progress, newStatement.getBytes()); + statementBuffer.putStringWithoutLengthUtf8(progress, newStatement); progress += newStatement.length(); final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); + final PgsqlClient client = server.systemClientsByRouteId.get(route.id); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = ignoreFlushCommand; } @@ -1995,10 +1974,8 @@ private void decodeDropZviewCommand( String newStatement = ""; int progress = 0; - int user = ZILLABASE_USER_HASH; if (server.commandsProcessed == 0) { - user = DEFAULT_USER_HASH; newStatement = binding.dropTopic.generate(view); } else if (server.commandsProcessed == 1) @@ -2014,13 +1991,13 @@ else if (server.commandsProcessed == 3) newStatement = binding.dropMaterializedView.generate(view); } - statementBuffer.putBytes(progress, newStatement.getBytes()); + statementBuffer.putStringWithoutLengthUtf8(progress, newStatement); progress += newStatement.length(); final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + user); + final PgsqlClient client = server.systemClientsByRouteId.get(route.id); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.completionCommand = ignoreFlushCommand; } @@ -2045,13 +2022,13 @@ private void decodeShowCommand( int progress = 0; String newStatement = binding.showType.generate(type); - statementBuffer.putBytes(progress, newStatement.getBytes()); + statementBuffer.putStringWithoutLengthUtf8(progress, newStatement); progress += newStatement.length(); final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, progress); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + ZILLABASE_USER_HASH); + final PgsqlClient client = server.systemClientsByRouteId.get(route.id); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); client.typeCommand = showColumnFlushCommand; client.dataCommand = showColumnDataCommand; @@ -2078,7 +2055,7 @@ private void decodeUnknownCommand( final RisingwaveRouteConfig route = server.binding.resolve(authorization, statementBuffer, 0, length); - final PgsqlClient client = server.streamsByRouteIds.get(route.id + DEFAULT_USER_HASH); + final PgsqlClient client = server.userClient; client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, length); client.completionCommand = proxyFlushCommand; } @@ -2144,7 +2121,7 @@ private void showColumnFlushCommand( private void rowDataCommand( PgsqlServer server, - long clientId, + PgsqlClient client, long traceId, long authorization, long routedId, @@ -2191,7 +2168,7 @@ private void rowDataCommand( private void showColumnDataCommand( PgsqlServer server, - long clientId, + PgsqlClient client, long traceId, long authorization, long routedId, @@ -2225,14 +2202,14 @@ private void showColumnDataCommand( statementBuffer.putBytes(statementProgress, column.buffer(), column.offset(), length); statementProgress += length; - server.doAppData(clientId, routedId, traceId, authorization, flags, + server.doAppData(client, routedId, traceId, authorization, flags, statementBuffer, 0, statementProgress, dataEx); } } private void proxyDataCommand( PgsqlServer server, - long clientId, + PgsqlClient client, long traceId, long authorization, long routedId, @@ -2242,7 +2219,7 @@ private void proxyDataCommand( int limit, OctetsFW extension) { - server.doAppData(clientId, routedId, traceId, authorization, flags, buffer, offset, limit, extension); + server.doAppData(client, routedId, traceId, authorization, flags, buffer, offset, limit, extension); } public List splitStatements( @@ -2315,7 +2292,7 @@ private interface PgsqlDataCommand { void handle( PgsqlServer server, - long clientId, + PgsqlClient client, long traceId, long authorization, long routedId, From cd63668dfed01bef67fb026121e5daf37e9e9f4c Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 9 Dec 2024 13:34:34 -0800 Subject: [PATCH 052/104] Fix remaining issues --- .../streams/effective/create.function.return.struct/client.rpt | 2 +- .../streams/effective/create.function.return.struct/server.rpt | 2 +- .../risingwave/internal/stream/RisingwaveProxyFactory.java | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) 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 d06ad6b7ae..43bdf1b732 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 @@ -86,7 +86,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "app") - .parameter("database", "zillabase") + .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") .build()} 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 4ee6353c0b..c4a5d1520b 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 @@ -82,7 +82,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) .parameter("user", "app") - .parameter("database", "zillabase") + .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") .build()} 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 b123df854f..2d16a7c3c3 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 @@ -375,6 +375,7 @@ private void onAppBegin( state = RisingwaveState.openingInitial(state); systemClientsByRouteId.values().forEach(c -> c.doAppBegin(traceId, authorization, affinity)); + userClient.doAppBegin(traceId, authorization, affinity); doAppWindow(traceId, authorization); From 93126b73e06341df3d6858aa9f426a6a88450d0b Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 9 Dec 2024 16:06:31 -0800 Subject: [PATCH 053/104] WIP --- .../PgsqlKafkaKeyAvroSchemaTemplate.java | 8 +- .../PgsqlKafkaValueAvroSchemaTemplate.java | 10 +- .../stream/PgsqlKafkaProxyFactory.java | 4 +- .../binding/pgsql/parser/PgsqlParser.java | 12 +- .../listener/SqlCreateStreamListener.java | 6 +- .../listener/SqlCreateTableTopicListener.java | 6 +- .../listener/SqlCreateZviewListener.java | 6 +- .../model/{Stream.java => CreateStream.java} | 2 +- .../model/{Table.java => CreateTable.java} | 2 +- .../model/{View.java => CreateZview.java} | 2 +- .../binding/pgsql/parser/PgsqlParserTest.java | 152 +++++++++--------- ...ingwaveCreateMaterializedViewTemplate.java | 18 +-- .../RisingwaveCreateSinkTemplate.java | 22 +-- .../RisingwaveCreateSourceTemplate.java | 20 +-- .../RisingwaveCreateTableTemplate.java | 12 +- .../RisingwaveCreateTopicTemplate.java | 26 +-- .../statement/RisingwaveDescribeTemplate.java | 6 +- .../stream/RisingwaveProxyFactory.java | 44 +++-- ...ingwaveCreateCreateTableTemplateTest.java} | 16 +- ...eMaterializedCreateZviewTemplateTest.java} | 22 +-- .../RisingwaveCreateSourceTemplateTest.java | 24 +-- 21 files changed, 209 insertions(+), 211 deletions(-) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/{Stream.java => CreateStream.java} (96%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/{Table.java => CreateTable.java} (96%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/{View.java => CreateZview.java} (96%) rename incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/{RisingwaveCreateTableTemplateTest.java => RisingwaveCreateCreateTableTemplateTest.java} (85%) rename incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/{RisingwaveCreateMaterializedViewTemplateTest.java => RisingwaveCreateMaterializedCreateZviewTemplateTest.java} (79%) 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 6a8faeff69..6f0755663a 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 @@ -17,7 +17,7 @@ import java.util.List; import java.util.stream.Collectors; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; public class PgsqlKafkaKeyAvroSchemaTemplate extends PgsqlKafkaAvroSchemaTemplate { @@ -31,15 +31,15 @@ public PgsqlKafkaKeyAvroSchemaTemplate( public String generate( String database, - Table table) + CreateTable createTable) { final String newNamespace = namespace.replace(DATABASE_PLACEHOLDER, database); - List fields = table.columns().stream() + List fields = createTable.columns().stream() .map(column -> new AvroField(column.name(), mapSqlTypeToAvroType(column.type()))) .collect(Collectors.toList()); - AvroSchema schema = new AvroSchema("record", table.name(), newNamespace, fields); + AvroSchema schema = new AvroSchema("record", createTable.name(), newNamespace, fields); AvroPayload payload = new AvroPayload("AVRO", jsonb.toJson(schema)); return jsonbFormatted.toJson(payload); 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 b78b87dc58..3b2eb8f1c4 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 @@ -26,7 +26,7 @@ import jakarta.json.JsonValue; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; public class PgsqlKafkaValueAvroSchemaTemplate extends PgsqlKafkaAvroSchemaTemplate { @@ -39,11 +39,11 @@ public PgsqlKafkaValueAvroSchemaTemplate( } public String generate( - Table table) + CreateTable createTable) { - final String newNamespace = namespace.replace(DATABASE_PLACEHOLDER, table.schema()); + final String newNamespace = namespace.replace(DATABASE_PLACEHOLDER, createTable.schema()); - List fields = table.columns().stream() + List fields = createTable.columns().stream() .map(column -> { String columnName = column.name(); @@ -58,7 +58,7 @@ public String generate( }) .collect(Collectors.toList()); - AvroSchema schema = new AvroSchema("record", table.name(), newNamespace, fields); + AvroSchema schema = new AvroSchema("record", createTable.name(), newNamespace, fields); AvroPayload payload = new AvroPayload("AVRO", jsonb.toJson(schema)); return jsonbFormatted.toJson(payload); 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 3c04e747e8..d3f23fce78 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 @@ -56,7 +56,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PgsqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.engine.EngineContext; import io.aklivity.zilla.runtime.engine.binding.BindingHandler; import io.aklivity.zilla.runtime.engine.binding.function.MessageConsumer; @@ -1336,7 +1336,7 @@ private void decodeCreateTopicCommand( } else if (server.commandsProcessed == 0) { - final Table createTopic = parser.parseCreateTable(statement); + final CreateTable createTopic = parser.parseCreateTable(statement); final String schema = createTopic.schema(); final String topic = createTopic.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 d94217b133..d40e7eb358 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 @@ -32,11 +32,11 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlDropListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlShowListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Stream; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.View; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; public final class PgsqlParser { @@ -81,7 +81,7 @@ public String parseCommand( return commandListener.command(); } - public Table parseCreateTable( + public CreateTable parseCreateTable( String sql) { parser(sql, createTableListener); @@ -102,7 +102,7 @@ public Alter parseAlterStream( return alterStreamListener.alter(); } - public Stream parseCreateStream( + public CreateStream parseCreateStream( String sql) { parser(sql, createStreamListener); @@ -116,7 +116,7 @@ public Function parseCreateFunction( return createFunctionListener.function(); } - public View parseCreateZView( + public CreateZview parseCreateZView( String sql) { parser(sql, createMaterializedViewListener); 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 5fbfa13272..1663c8853e 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,7 +21,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.model.Stream; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; public class SqlCreateStreamListener extends PostgreSqlParserBaseListener { @@ -41,9 +41,9 @@ public SqlCreateStreamListener( this.tokens = tokens; } - public Stream stream() + public CreateStream stream() { - return new Stream(schema, name, columns); + return new CreateStream(schema, name, columns); } @Override 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 1b400395db..4ded45b717 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,7 +23,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.model.Table; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; public class SqlCreateTableTopicListener extends PostgreSqlParserBaseListener @@ -46,9 +46,9 @@ public SqlCreateTableTopicListener( this.tokens = tokens; } - public Table table() + public CreateTable table() { - return new Table(schema, name, columns, primaryKeys); + return new CreateTable(schema, name, columns, primaryKeys); } @Override diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZviewListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZviewListener.java index 93e1034ce9..35fd02f513 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZviewListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZviewListener.java @@ -18,7 +18,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.model.View; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; public class SqlCreateZviewListener extends PostgreSqlParserBaseListener { @@ -37,9 +37,9 @@ public SqlCreateZviewListener( this.tokens = tokens; } - public View view() + public CreateZview view() { - return new View(schema, name, select); + return new CreateZview(schema, name, select); } @Override diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Stream.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateStream.java similarity index 96% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Stream.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateStream.java index 47524e7349..8217928af8 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Stream.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateStream.java @@ -16,7 +16,7 @@ import java.util.Map; -public record Stream( +public record CreateStream( String schema, String name, Map columns) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Table.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateTable.java similarity index 96% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Table.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateTable.java index d556ad7136..203599010f 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Table.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateTable.java @@ -17,7 +17,7 @@ import java.util.List; import java.util.Set; -public record Table( +public record CreateTable( String schema, String name, List columns, diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/View.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZview.java similarity index 96% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/View.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZview.java index d03bf04542..4d683bd490 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/View.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZview.java @@ -14,7 +14,7 @@ */ package io.aklivity.zilla.runtime.binding.pgsql.parser.model; -public record View( +public record CreateZview( String schema, 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 index 72844d5239..e16d8d32a1 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 @@ -25,12 +25,12 @@ import org.junit.Test; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Stream; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.View; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; public class PgsqlParserTest { @@ -46,10 +46,10 @@ public void setUp() public void shouldCreateTableWithPrimaryKey() { String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100));"; - Table table = parser.parseCreateTable(sql); + CreateTable createTable = parser.parseCreateTable(sql); - assertNotNull(table); - assertTrue(table.primaryKeys().contains("id")); + assertNotNull(createTable); + assertTrue(createTable.primaryKeys().contains("id")); } @Test @@ -62,82 +62,82 @@ name VARCHAR(100), age INT, PRIMARY KEY (id, name) );"""; - Table table = parser.parseCreateTable(sql); + CreateTable createTable = parser.parseCreateTable(sql); - assertNotNull(table); - assertEquals(2, table.primaryKeys().size()); - assertEquals(3, table.columns().size()); - assertTrue(table.primaryKeys().contains("id")); - assertTrue(table.primaryKeys().contains("name")); + assertNotNull(createTable); + assertEquals(2, createTable.primaryKeys().size()); + assertEquals(3, createTable.columns().size()); + assertTrue(createTable.primaryKeys().contains("id")); + assertTrue(createTable.primaryKeys().contains("name")); } @Test public void shouldCreateTableName() { String sql = "CREATE TABLE test (id INT);"; - Table table = parser.parseCreateTable(sql); + CreateTable createTable = parser.parseCreateTable(sql); - assertEquals("test", table.name()); + assertEquals("test", createTable.name()); } @Test public void shouldCreateTableNameWithDoublePrecisionTypeField() { String sql = "CREATE TABLE test (id DOUBLE PRECISION);"; - Table table = parser.parseCreateTable(sql); - assertEquals("test", table.name()); - assertEquals("DOUBLE PRECISION", table.columns().get(0).type()); + CreateTable createTable = parser.parseCreateTable(sql); + assertEquals("test", createTable.name()); + assertEquals("DOUBLE PRECISION", createTable.columns().get(0).type()); } @Test public void shouldCreateTableColumns() { String sql = "CREATE TABLE test (id INT, name VARCHAR(100));"; - Table table = parser.parseCreateTable(sql); + CreateTable createTable = parser.parseCreateTable(sql); - assertEquals(2, table.columns().size()); - assertEquals("INT", table.columns().get(0).type()); - assertEquals("VARCHAR(100)", table.columns().get(1).type()); + assertEquals(2, createTable.columns().size()); + assertEquals("INT", createTable.columns().get(0).type()); + assertEquals("VARCHAR(100)", createTable.columns().get(1).type()); } @Test public void shouldHandleEmptyCreateTable() { String sql = "CREATE TABLE test ();"; - Table table = parser.parseCreateTable(sql); + CreateTable createTable = parser.parseCreateTable(sql); - assertEquals(0, table.columns().size()); - assertEquals(0, table.primaryKeys().size()); + assertEquals(0, createTable.columns().size()); + assertEquals(0, createTable.primaryKeys().size()); } @Test public void shouldHandleEmptySql() { String sql = ""; - Table table = parser.parseCreateTable(sql); + CreateTable createTable = parser.parseCreateTable(sql); - assertNotNull(table); + assertNotNull(createTable); } @Test public void shouldCreateZview() { String sql = "CREATE ZVIEW test_view AS SELECT * FROM test_table;"; - View view = parser.parseCreateZView(sql); + CreateZview createZview = parser.parseCreateZView(sql); - assertNotNull(view); - assertEquals("test_view", view.name()); - assertEquals("SELECT * FROM test_table", view.select()); + assertNotNull(createZview); + assertEquals("test_view", createZview.name()); + assertEquals("SELECT * FROM test_table", createZview.select()); } @Test(expected = ParseCancellationException.class) public void shouldHandleEmptyCreateZView() { String sql = "CREATE ZVIEW test_view AS ;"; - View view = parser.parseCreateZView(sql); + CreateZview createZview = parser.parseCreateZView(sql); - assertNotNull(view); - assertEquals("test_view", view.name()); + assertNotNull(createZview); + assertEquals("test_view", createZview.name()); } @Test(expected = ParseCancellationException.class) @@ -212,24 +212,24 @@ public void shouldDropZview() public void shouldCreateStream() { String sql = "CREATE STREAM test_stream (id INT, name VARCHAR(100));"; - Stream stream = parser.parseCreateStream(sql); - assertNotNull(stream); - assertEquals("test_stream", stream.name()); - assertEquals(2, stream.columns().size()); - assertEquals("INT", stream.columns().get("id")); - assertEquals("VARCHAR(100)", stream.columns().get("name")); + CreateStream createStream = parser.parseCreateStream(sql); + assertNotNull(createStream); + assertEquals("test_stream", createStream.name()); + assertEquals(2, createStream.columns().size()); + assertEquals("INT", createStream.columns().get("id")); + assertEquals("VARCHAR(100)", createStream.columns().get("name")); } @Test public void shouldCreateStreamIfNotExists() { String sql = "CREATE STREAM IF NOT EXISTS test_stream (id INT, name VARCHAR(100));"; - Stream stream = parser.parseCreateStream(sql); - assertNotNull(stream); - assertEquals("test_stream", stream.name()); - assertEquals(2, stream.columns().size()); - assertEquals("INT", stream.columns().get("id")); - assertEquals("VARCHAR(100)", stream.columns().get("name")); + CreateStream createStream = parser.parseCreateStream(sql); + assertNotNull(createStream); + assertEquals("test_stream", createStream.name()); + assertEquals(2, createStream.columns().size()); + assertEquals("INT", createStream.columns().get("id")); + assertEquals("VARCHAR(100)", createStream.columns().get("name")); } @Test(expected = ParseCancellationException.class) @@ -286,12 +286,12 @@ public void shouldHandleInvalidCreateFunction() public void shouldCreateTableWithUniqueConstraint() { String sql = "CREATE TABLE test (id INT UNIQUE, name VARCHAR(100));"; - Table table = parser.parseCreateTable(sql); + CreateTable createTable = parser.parseCreateTable(sql); - assertNotNull(table); - assertEquals(2, table.columns().size()); - assertEquals("id", table.columns().get(0).name()); - assertEquals("name", table.columns().get(1).name()); + assertNotNull(createTable); + assertEquals(2, createTable.columns().size()); + assertEquals("id", createTable.columns().get(0).name()); + assertEquals("name", createTable.columns().get(1).name()); } @Test @@ -299,23 +299,23 @@ public void shouldCreateTableWithForeignKey() { String sql = "CREATE TABLE test (id INT, name VARCHAR(100), CONSTRAINT fk_name FOREIGN KEY (name)" + " REFERENCES other_table(name));"; - Table table = parser.parseCreateTable(sql); - assertNotNull(table); - assertEquals(2, table.columns().size()); - assertEquals("id", table.columns().get(0).name()); - assertEquals("name", table.columns().get(1).name()); + CreateTable createTable = parser.parseCreateTable(sql); + assertNotNull(createTable); + assertEquals(2, createTable.columns().size()); + assertEquals("id", createTable.columns().get(0).name()); + assertEquals("name", createTable.columns().get(1).name()); } @Test public void shouldParseCreateTableWithCheckConstraint() { String sql = "CREATE TABLE test (id INT, name VARCHAR(100), CHECK (id > 0));"; - Table table = parser.parseCreateTable(sql); + CreateTable createTable = parser.parseCreateTable(sql); - assertNotNull(table); - assertEquals(2, table.columns().size()); - assertEquals("id", table.columns().get(0).name()); - assertEquals("name", table.columns().get(1).name()); + assertNotNull(createTable); + assertEquals(2, createTable.columns().size()); + assertEquals("id", createTable.columns().get(0).name()); + assertEquals("name", createTable.columns().get(1).name()); } @Test @@ -329,37 +329,37 @@ public void shouldHandleInvalidCreateTableWithMissingColumns() public void shouldCreateTableWithDefaultValues() { String sql = "CREATE TABLE test (id INT DEFAULT 0, name VARCHAR(100) DEFAULT 'unknown');"; - Table table = parser.parseCreateTable(sql); + CreateTable createTable = parser.parseCreateTable(sql); - assertNotNull(table); - assertEquals(2, table.columns().size()); - assertEquals("INT", table.columns().get(0).type()); - assertEquals("VARCHAR(100)", table.columns().get(1).type()); + assertNotNull(createTable); + assertEquals(2, createTable.columns().size()); + assertEquals("INT", createTable.columns().get(0).type()); + assertEquals("VARCHAR(100)", createTable.columns().get(1).type()); } @Test public void shouldCreateTableWithNotNullConstraint() { String sql = "CREATE TABLE test (id INT NOT NULL, name VARCHAR(100) NOT NULL);"; - Table table = parser.parseCreateTable(sql); + CreateTable createTable = parser.parseCreateTable(sql); - assertNotNull(table); - assertEquals(2, table.columns().size()); - assertEquals("id", table.columns().get(0).name()); - assertEquals("name", table.columns().get(1).name()); + assertNotNull(createTable); + assertEquals(2, createTable.columns().size()); + assertEquals("id", createTable.columns().get(0).name()); + assertEquals("name", createTable.columns().get(1).name()); } @Test public void shouldCreateTableWithMultipleConstraints() { String sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(100) UNIQUE, age INT CHECK (age > 0));"; - Table table = parser.parseCreateTable(sql); + CreateTable createTable = parser.parseCreateTable(sql); - assertNotNull(table); - assertEquals(3, table.columns().size()); - assertTrue(table.primaryKeys().contains("id")); - assertEquals("name", table.columns().get(1).name()); - assertEquals("age", table.columns().get(2).name()); + assertNotNull(createTable); + assertEquals(3, createTable.columns().size()); + assertTrue(createTable.primaryKeys().contains("id")); + assertEquals("name", createTable.columns().get(1).name()); + assertEquals("age", createTable.columns().get(2).name()); } @Test 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 136df60c64..8ce43f5273 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 @@ -18,9 +18,9 @@ import java.util.List; import java.util.stream.Collectors; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.View; public class RisingwaveCreateMaterializedViewTemplate extends RisingwaveCommandTemplate { @@ -31,22 +31,22 @@ public class RisingwaveCreateMaterializedViewTemplate extends RisingwaveCommandT private final String timestampFormat = "COALESCE(%s, %s_timestamp::varchar) as %s, "; public String generate( - View view) + CreateZview createZview) { - String name = view.name(); - String select = view.select(); + String name = createZview.name(); + String select = createZview.select(); return String.format(sqlFormat, name, select); } public String generate( - Table table) + CreateTable createTable) { - String name = table.name(); + String name = createTable.name(); String select = "*"; - List includes = table.columns().stream() + List includes = createTable.columns().stream() .filter(c -> ZILLA_MAPPINGS.containsKey(c.name())) .collect(Collectors.toCollection(ArrayList::new)); @@ -54,7 +54,7 @@ public String generate( { fieldBuilder.setLength(0); - table.columns() + createTable.columns() .stream() .filter(c -> !ZILLA_MAPPINGS.containsKey(c.name())) .forEach(c -> fieldBuilder.append(String.format(fieldFormat, c.name()))); 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 d44f5a3416..b1e3ef4058 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.model.Table; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.View; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; public class RisingwaveCreateSinkTemplate extends RisingwaveCommandTemplate { @@ -53,10 +53,10 @@ public RisingwaveCreateSinkTemplate( public String generateOutgress( Map columns, - View view) + CreateZview createZview) { - String topicSchema = view.schema(); - String viewName = view.name(); + String topicSchema = createZview.schema(); + String viewName = createZview.name(); Optional> primaryKeyMatch = columns.entrySet().stream() .filter(e -> "id".equalsIgnoreCase(e.getKey())) @@ -77,19 +77,19 @@ public String generateOutgress( } public String generateOutgress( - Table tableInfo) + CreateTable createTableInfo) { - String topicSchema = tableInfo.schema(); - String table = tableInfo.name(); + String topicSchema = createTableInfo.schema(); + String table = createTableInfo.name(); return String.format(sqlKafkaFormat, schema, table, table, bootstrapServer, topicSchema, table, - primaryKeyFormat.formatted(tableInfo.primaryKeys().stream().findFirst().get()), schemaRegistry); + primaryKeyFormat.formatted(createTableInfo.primaryKeys().stream().findFirst().get()), schemaRegistry); } public String generateInto( - Table tableInfo) + CreateTable createTableInfo) { - String table = tableInfo.name(); + String table = createTableInfo.name(); return String.format(sqlFormat, schema, 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 5fbcee4b4d..2197fa5592 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 @@ -20,8 +20,8 @@ import java.util.Map; import java.util.stream.Collectors; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Stream; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; public class RisingwaveCreateSourceTemplate extends RisingwaveCommandTemplate @@ -53,13 +53,13 @@ public RisingwaveCreateSourceTemplate( } public String generateStreamSource( - Stream stream) + CreateStream createStream) { - String schema = stream.schema(); - String table = stream.name(); + String schema = createStream.schema(); + String table = createStream.name(); includeBuilder.setLength(0); - Map includes = stream.columns().entrySet().stream() + Map includes = createStream.columns().entrySet().stream() .filter(e -> ZILLA_MAPPINGS.containsKey(e.getKey())) .collect(LinkedHashMap::new, (m, e) -> m.put(e.getKey(), e.getValue()), Map::putAll); @@ -74,14 +74,14 @@ public String generateStreamSource( } public String generateTableSource( - Table tableInfo) + CreateTable createTableInfo) { - String schema = tableInfo.schema(); - String table = tableInfo.name(); + String schema = createTableInfo.schema(); + String table = createTableInfo.name(); String sourceName = "%s_source".formatted(table); includeBuilder.setLength(0); - List includes = tableInfo.columns().stream() + List includes = createTableInfo.columns().stream() .filter(c -> ZILLA_MAPPINGS.containsKey(c.name())) .collect(Collectors.toCollection(ArrayList::new)); 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 1796fdf927..ea27495595 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.model.Table; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; public class RisingwaveCreateTableTemplate extends RisingwaveCommandTemplate { @@ -23,17 +23,17 @@ public class RisingwaveCreateTableTemplate extends RisingwaveCommandTemplate private final String fieldFormat = "%s %s, "; public String generate( - Table table) + CreateTable createTable) { - String topic = table.name(); + String topic = createTable.name(); String primaryKeyFormat = ", PRIMARY KEY (%s)"; - String primaryKey = !table.primaryKeys().isEmpty() - ? String.format(primaryKeyFormat, table.primaryKeys().stream().findFirst().get()) + String primaryKey = !createTable.primaryKeys().isEmpty() + ? String.format(primaryKeyFormat, createTable.primaryKeys().stream().findFirst().get()) : ""; fieldBuilder.setLength(0); - table.columns() + createTable.columns() .forEach(c -> fieldBuilder.append( String.format(fieldFormat, c.name(), c.type()))); 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 16db395401..8290439698 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.model.Stream; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.View; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; public class RisingwaveCreateTopicTemplate extends RisingwaveCommandTemplate { @@ -31,16 +31,16 @@ public class RisingwaveCreateTopicTemplate extends RisingwaveCommandTemplate private final StringBuilder primaryKeyBuilder = new StringBuilder(); public String generate( - Table table) + CreateTable createTable) { - String topic = table.name(); - String primaryKey = !table.primaryKeys().isEmpty() - ? String.format(primaryKeyFormat, table.primaryKeys().stream().findFirst().get()) + String topic = createTable.name(); + String primaryKey = !createTable.primaryKeys().isEmpty() + ? String.format(primaryKeyFormat, createTable.primaryKeys().stream().findFirst().get()) : ""; fieldBuilder.setLength(0); - table.columns() + createTable.columns() .forEach(c -> fieldBuilder.append( String.format(fieldFormat, c.name(), c.type()))); @@ -50,13 +50,13 @@ public String generate( } public String generate( - Stream stream) + CreateStream createStream) { - String topic = stream.name(); + String topic = createStream.name(); fieldBuilder.setLength(0); - stream.columns() + createStream.columns() .entrySet() .stream() .filter(e -> !ZILLA_MAPPINGS.containsKey(e.getKey())) @@ -69,10 +69,10 @@ public String generate( } public String generate( - View view, + CreateZview createZview, Map columns) { - String topic = view.name(); + String topic = createZview.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 3fcc49b4dc..f29f200c6a 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.model.View; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; public class RisingwaveDescribeTemplate extends RisingwaveCommandTemplate { @@ -22,9 +22,9 @@ public class RisingwaveDescribeTemplate extends RisingwaveCommandTemplate DESCRIBE %s;\u0000"""; public String generate( - View view) + CreateZview createZview) { - String name = view.name(); + String name = createZview.name(); return String.format(sqlFormat, name); } 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 2d16a7c3c3..c130601b87 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 @@ -24,7 +24,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Queue; import java.util.function.Consumer; import java.util.function.LongFunction; import java.util.function.LongUnaryOperator; @@ -33,18 +32,17 @@ import org.agrona.MutableDirectBuffer; import org.agrona.collections.IntArrayQueue; import org.agrona.collections.Long2ObjectHashMap; -import org.agrona.collections.LongArrayQueue; import org.agrona.collections.Object2ObjectHashMap; import org.agrona.concurrent.UnsafeBuffer; import io.aklivity.zilla.runtime.binding.pgsql.parser.PgsqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Stream; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.View; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; 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; @@ -1561,38 +1559,38 @@ private void decodeCreateTableCommand( else { final RisingwaveBindingConfig binding = server.binding; - final Table table = parser.parseCreateTable(statement); + final CreateTable createTable = parser.parseCreateTable(statement); String newStatement = ""; int progress = 0; if (server.commandsProcessed == 0) { - newStatement = binding.createTopic.generate(table); + newStatement = binding.createTopic.generate(createTable); } else if (server.commandsProcessed == 1) { - newStatement = binding.createSource.generateTableSource(table); + newStatement = binding.createSource.generateTableSource(createTable); } else if (server.commandsProcessed == 2) { - newStatement = binding.createView.generate(table); + newStatement = binding.createView.generate(createTable); } else if (server.commandsProcessed == 3) { - newStatement = binding.createTable.generate(table); + newStatement = binding.createTable.generate(createTable); } else if (server.commandsProcessed == 4) { - newStatement = binding.grantResource.generate("TABLE", table.schema(), table.name(), server.user); + newStatement = binding.grantResource.generate("TABLE", createTable.schema(), createTable.name(), server.user); } else if (server.commandsProcessed == 5) { - newStatement = binding.createSink.generateInto(table); + newStatement = binding.createSink.generateInto(createTable); } else if (server.commandsProcessed == 6) { - newStatement = binding.createSink.generateOutgress(table); + newStatement = binding.createSink.generateOutgress(createTable); } statementBuffer.putBytes(progress, newStatement.getBytes()); @@ -1622,18 +1620,18 @@ private void decodeCreateStreamCommand( else { final RisingwaveBindingConfig binding = server.binding; - final Stream stream = parser.parseCreateStream(statement); + final CreateStream createStream = parser.parseCreateStream(statement); String newStatement = ""; int progress = 0; if (server.commandsProcessed == 0) { - newStatement = binding.createTopic.generate(stream); + newStatement = binding.createTopic.generate(createStream); } else if (server.commandsProcessed == 1) { - newStatement = binding.createSource.generateStreamSource(stream); + newStatement = binding.createSource.generateStreamSource(createStream); } statementBuffer.putBytes(progress, newStatement.getBytes()); @@ -1664,7 +1662,7 @@ private void decodeCreateZviewCommand( else { final RisingwaveBindingConfig binding = server.binding; - final View view = parser.parseCreateZView(statement); + final CreateZview createZview = parser.parseCreateZView(statement); PgsqlFlushCommand typeCommand = ignoreFlushCommand; PgsqlDataCommand dataCommand = proxyDataCommand; @@ -1673,30 +1671,30 @@ private void decodeCreateZviewCommand( if (server.commandsProcessed == 0) { - newStatement = binding.createView.generate(view); + newStatement = binding.createView.generate(createZview); } else if (server.commandsProcessed == 1) { - newStatement = binding.grantResource.generate("MATERIALIZED VIEW", view.schema(), view.name(), server.user); + newStatement = binding.grantResource.generate("MATERIALIZED VIEW", createZview.schema(), createZview.name(), server.user); } else if (server.commandsProcessed == 2) { - newStatement = binding.describeView.generate(view); + newStatement = binding.describeView.generate(createZview); typeCommand = typeFlushCommand; dataCommand = rowDataCommand; server.columns.clear(); } else if (server.commandsProcessed == 3) { - newStatement = binding.createTopic.generate(view, server.columns); + newStatement = binding.createTopic.generate(createZview, server.columns); } else if (server.commandsProcessed == 4) { - newStatement = binding.createSink.generateOutgress(server.columns, view); + newStatement = binding.createSink.generateOutgress(server.columns, createZview); } else if (server.commandsProcessed == 5) { - newStatement = binding.catalogInsert.generate(ZVIEW_TABLE_NAME, view.name(), statement); + newStatement = binding.catalogInsert.generate(ZVIEW_TABLE_NAME, createZview.name(), statement); } statementBuffer.putBytes(progress, newStatement.getBytes()); 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/RisingwaveCreateCreateTableTemplateTest.java similarity index 85% rename from incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplateTest.java rename to incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateCreateTableTemplateTest.java index f77d7a7757..4a4e579fad 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/RisingwaveCreateCreateTableTemplateTest.java @@ -24,10 +24,10 @@ import org.junit.Ignore; import org.junit.Test; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; -public class RisingwaveCreateTableTemplateTest +public class RisingwaveCreateCreateTableTemplateTest { private static RisingwaveCreateTableTemplate template; @@ -44,7 +44,7 @@ public void shouldGenerateTableWithValidTableInfo() columns.add(new TableColumn("id", "INT", List.of())); columns.add(new TableColumn("name", "STRING", List.of())); - Table table = new Table( + CreateTable createTable = new CreateTable( "public", "test_table", columns, @@ -52,7 +52,7 @@ public void shouldGenerateTableWithValidTableInfo() String expectedSQL = """ CREATE TABLE IF NOT EXISTS test_table (id INT, name STRING, PRIMARY KEY (id));\u0000"""; - String actualSQL = template.generate(table); + String actualSQL = template.generate(createTable); assertEquals(expectedSQL, actualSQL); } @@ -64,7 +64,7 @@ public void shouldGenerateTableWithoutPrimaryKey() columns.add(new TableColumn("id", "INT", List.of())); columns.add(new TableColumn("name", "STRING", List.of())); - Table table = new Table( + CreateTable createTable = new CreateTable( "public", "test_table", columns, @@ -72,7 +72,7 @@ public void shouldGenerateTableWithoutPrimaryKey() String expectedSQL = """ CREATE TABLE IF NOT EXISTS test_table (id INT, name STRING);\u0000"""; - String actualSQL = template.generate(table); + String actualSQL = template.generate(createTable); assertEquals(expectedSQL, actualSQL); } @@ -85,7 +85,7 @@ public void shouldGenerateTableWithMultiplePrimaryKeys() columns.add(new TableColumn("id", "INT", List.of())); columns.add(new TableColumn("name", "STRING", List.of())); - Table table = new Table( + CreateTable createTable = new CreateTable( "public", "test_table", columns, @@ -93,7 +93,7 @@ public void shouldGenerateTableWithMultiplePrimaryKeys() String expectedSQL = """ CREATE TABLE IF NOT EXISTS test_table (id INT, name STRING, PRIMARY KEY (id));\u0000"""; - String actualSQL = template.generate(table); + String actualSQL = template.generate(createTable); assertEquals(expectedSQL, actualSQL); } 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/RisingwaveCreateMaterializedCreateZviewTemplateTest.java similarity index 79% rename from incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplateTest.java rename to incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedCreateZviewTemplateTest.java index b5bc2d3255..aabdcbc8e3 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/RisingwaveCreateMaterializedCreateZviewTemplateTest.java @@ -23,22 +23,22 @@ import org.junit.Ignore; import org.junit.Test; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.View; -public class RisingwaveCreateMaterializedViewTemplateTest +public class RisingwaveCreateMaterializedCreateZviewTemplateTest { private final RisingwaveCreateMaterializedViewTemplate template = new RisingwaveCreateMaterializedViewTemplate(); @Test public void shouldGenerateMaterializedViewWithValidViewInfo() { - View view = new View("public", "test_view", "SELECT * FROM test_table"); + CreateZview createZview = new CreateZview("public", "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(view); + String actualSQL = template.generate(createZview); assertEquals(expectedSQL, actualSQL); } @@ -47,7 +47,7 @@ public void shouldGenerateMaterializedViewWithValidViewInfo() @Test public void shouldGenerateMaterializedViewWithValidTableInfo() { - Table table = new Table( + CreateTable createTable = new CreateTable( "public", "test_table", List.of(new TableColumn("id", "INT", List.of()), @@ -56,7 +56,7 @@ public void shouldGenerateMaterializedViewWithValidTableInfo() String expectedSQL = """ CREATE MATERIALIZED VIEW IF NOT EXISTS test_table_view AS SELECT id, name FROM test_table_source;\u0000"""; - String actualSQL = template.generate(table); + String actualSQL = template.generate(createTable); assertEquals(expectedSQL, actualSQL); } @@ -64,11 +64,11 @@ public void shouldGenerateMaterializedViewWithValidTableInfo() @Test public void shouldGenerateMaterializedViewWithEmptyColumns() { - Table table = new Table("public", "empty_table", List.of(), Set.of()); + CreateTable createTable = new CreateTable("public", "empty_table", List.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(table); + String actualSQL = template.generate(createTable); assertEquals(expectedSQL, actualSQL); } @@ -82,14 +82,14 @@ public void shouldGenerateMaterializedViewWithIncludes() columns.add(new TableColumn("zilla_identity", "VARCHAR", List.of())); columns.add(new TableColumn("zilla_timestamp", "TIMESTAMP", List.of())); - Table table = new Table("public", "test_table", columns, Set.of("id")); + CreateTable createTable = new CreateTable("public", "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," + " COALESCE(zilla_timestamp, zilla_timestamp_timestamp::varchar) as zilla_timestamp" + " FROM test_table_source;\u0000"; - String actualSQL = template.generate(table); + String actualSQL = template.generate(createTable); 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 index fe5dad9500..0781dd93ad 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 @@ -25,8 +25,8 @@ import org.junit.BeforeClass; import org.junit.Test; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Stream; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Table; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; public class RisingwaveCreateSourceTemplateTest @@ -42,7 +42,7 @@ public static void setUp() @Test public void shouldGenerateStreamSourceWithValidStreamInfo() { - Stream stream = new Stream("public", "test_stream", Map.of("id", "INT", "name", "STRING")); + CreateStream createStream = new CreateStream("public", "test_stream", Map.of("id", "INT", "name", "STRING")); String expectedSQL = """ CREATE SOURCE IF NOT EXISTS test_stream (*) WITH ( @@ -55,7 +55,7 @@ CREATE SOURCE IF NOT EXISTS test_stream (*) schema.registry = 'http://localhost:8081' );\u0000"""; - String actualSQL = template.generateStreamSource(stream); + String actualSQL = template.generateStreamSource(createStream); assertEquals(expectedSQL, actualSQL); } @@ -69,7 +69,7 @@ public void shouldGenerateTableSourceWithValidTableInfoAndIncludes() columns.add(new TableColumn("zilla_identity", "VARCHAR", List.of())); columns.add(new TableColumn("zilla_timestamp", "TIMESTAMP", List.of())); - Table table = new Table( + CreateTable createTable = new CreateTable( "public", "test_table", columns, Set.of("id")); String expectedSQL = """ CREATE SOURCE IF NOT EXISTS test_table_source (*) @@ -86,7 +86,7 @@ CREATE SOURCE IF NOT EXISTS test_table_source (*) schema.registry = 'http://localhost:8081' );\u0000"""; - String actualSQL = template.generateTableSource(table); + String actualSQL = template.generateTableSource(createTable); assertEquals(expectedSQL, actualSQL); } @@ -94,7 +94,7 @@ CREATE SOURCE IF NOT EXISTS test_table_source (*) @Test public void shouldGenerateStreamSourceWithEmptyColumnsReturnsSQLWithoutIncludes() { - Stream stream = new Stream("public", "empty_stream", Map.of()); + CreateStream createStream = new CreateStream("public", "empty_stream", Map.of()); String expectedSQL = """ CREATE SOURCE IF NOT EXISTS empty_stream (*) WITH ( @@ -107,7 +107,7 @@ CREATE SOURCE IF NOT EXISTS empty_stream (*) schema.registry = 'http://localhost:8081' );\u0000"""; - String actualSQL = template.generateStreamSource(stream); + String actualSQL = template.generateStreamSource(createStream); assertEquals(expectedSQL, actualSQL); } @@ -135,9 +135,9 @@ CREATE SOURCE IF NOT EXISTS include_stream (*) ) FORMAT PLAIN ENCODE AVRO ( schema.registry = 'http://localhost:8081' );\u0000"""; - Stream stream = new Stream("public", "include_stream", columns); + CreateStream createStream = new CreateStream("public", "include_stream", columns); - String actualSQL = template.generateStreamSource(stream); + String actualSQL = template.generateStreamSource(createStream); assertEquals(expectedSQL, actualSQL); } @@ -145,7 +145,7 @@ CREATE SOURCE IF NOT EXISTS include_stream (*) @Test public void shouldGenerateTableSourceWithEmptyColumnsAndWithoutIncludes() { - Table table = new Table("public", "empty_table", List.of(), Set.of()); + CreateTable createTable = new CreateTable("public", "empty_table", List.of(), Set.of()); String expectedSQL = """ CREATE SOURCE IF NOT EXISTS empty_table_source (*) WITH ( @@ -158,7 +158,7 @@ CREATE SOURCE IF NOT EXISTS empty_table_source (*) schema.registry = 'http://localhost:8081' );\u0000"""; - String actualSQL = template.generateTableSource(table); + String actualSQL = template.generateTableSource(createTable); assertEquals(expectedSQL, actualSQL); } From 17fdc2721b163505a3834ebb0f8c85f989fe75cc Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 9 Dec 2024 16:27:45 -0800 Subject: [PATCH 054/104] Fix stylecheck errors --- .../kafka/internal/stream/PgsqlKafkaProxyFactory.java | 2 +- .../zilla/runtime/binding/pgsql/parser/PgsqlParser.java | 2 +- .../runtime/binding/pgsql/parser/PgsqlParserTest.java | 2 +- .../internal/statement/RisingwaveCreateSourceTemplate.java | 2 +- .../risingwave/internal/stream/RisingwaveProxyFactory.java | 7 ++++--- 5 files changed, 8 insertions(+), 7 deletions(-) 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 d3f23fce78..3d6bbccc59 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 @@ -55,8 +55,8 @@ 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.model.Alter; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; 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 d40e7eb358..316ed6e5ea 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 @@ -34,9 +34,9 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; public final class PgsqlParser { 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 e16d8d32a1..caa4d686b5 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 @@ -25,12 +25,12 @@ import org.junit.Test; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; public class PgsqlParserTest { 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 2197fa5592..ba97fea731 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 @@ -20,8 +20,8 @@ import java.util.Map; import java.util.stream.Collectors; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; public class RisingwaveCreateSourceTemplate 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 c130601b87..d6136e063c 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 @@ -37,12 +37,12 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PgsqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; 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; @@ -1675,7 +1675,8 @@ private void decodeCreateZviewCommand( } else if (server.commandsProcessed == 1) { - newStatement = binding.grantResource.generate("MATERIALIZED VIEW", createZview.schema(), createZview.name(), server.user); + newStatement = binding.grantResource.generate( + "MATERIALIZED VIEW", createZview.schema(), createZview.name(), server.user); } else if (server.commandsProcessed == 2) { From 9f606b40bb2cd4c2b7e3efa8d33f03f458e1e779 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 11 Dec 2024 10:42:27 -0800 Subject: [PATCH 055/104] WIP --- .../internal/macro/RisingwaveBaseMacro.java | 37 +++++ .../macro/RisingwaveCreateZtableMacro.java | 135 ++++++++++++++++++ .../macro/RisingwaveCreateZviewMarco.java | 81 +++++++++++ .../stream/RisingwaveProxyFactory.java | 22 +++ 4 files changed, 275 insertions(+) create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveBaseMacro.java create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMarco.java diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveBaseMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveBaseMacro.java new file mode 100644 index 0000000000..61d4e3f2bb --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveBaseMacro.java @@ -0,0 +1,37 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; + +import java.util.Map; + +import org.agrona.collections.Object2ObjectHashMap; + +public abstract class RisingwaveBaseMacro +{ + protected static final String ZILLA_CORRELATION_ID_OLD = "zilla_correlation_id"; + protected static final String ZILLA_IDENTITY_OLD = "zilla_identity"; + protected static final String ZILLA_TIMESTAMP_OLD = "zilla_timestamp"; + + protected static final String ZILLA_IDENTITY = "GENERATED ALWAYS AS IDENTITY"; + protected static final String ZILLA_TIMESTAMP = "GENERATED ALWAYS AS NOW"; + + protected static final Map ZILLA_MAPPINGS = new Object2ObjectHashMap<>(); + static + { + 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_MAPPINGS_OLD = new Object2ObjectHashMap<>(); + static + { + ZILLA_MAPPINGS_OLD.put(ZILLA_CORRELATION_ID_OLD, "INCLUDE header 'zilla:correlation-id' AS %s\n"); + ZILLA_MAPPINGS_OLD.put(ZILLA_IDENTITY_OLD, "INCLUDE header 'zilla:identity' AS %s\n"); + ZILLA_MAPPINGS_OLD.put(ZILLA_TIMESTAMP_OLD, "INCLUDE timestamp AS %s\n"); + } + + @FunctionalInterface + protected interface RisingwaveTemplate + { + String generate( + Object model); + } +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java new file mode 100644 index 0000000000..5af622d379 --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java @@ -0,0 +1,135 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; + +public class RisingwaveCreateZtableMacro extends RisingwaveBaseMacro +{ + private final String createTopicSqlFormat = """ + CREATE TOPIC IF NOT EXISTS %s (%s%s);\u0000"""; + private final String primaryKeyFormat = ", PRIMARY KEY (%s)"; + + private final String createSourceSqlFormat = """ + CREATE SOURCE IF NOT EXISTS %s (*)%s + WITH ( + connector='kafka', + properties.bootstrap.server='%s', + topic='%s.%s', + scan.startup.mode='latest', + scan.startup.timestamp.millis='%d' + ) FORMAT PLAIN ENCODE AVRO ( + schema.registry = '%s' + );\u0000"""; + + private final String bootstrapServer; + private final String schemaRegistry; + private final long scanStartupMil; + + private final StringBuilder fieldBuilder; + private final StringBuilder includeBuilder; + + private final RisingwaveTemplate createTopic = this::generateCreateTopic; + private final RisingwaveTemplate createSource = this::generateCreateSource; + + private RisingwaveTemplate template; + + public RisingwaveCreateZtableMacro( + String bootstrapServer, + String schemaRegistry, + long scanStartupMil) + { + this.fieldBuilder = new StringBuilder(); + this.includeBuilder = new StringBuilder(); + this.bootstrapServer = bootstrapServer; + this.schemaRegistry = schemaRegistry; + this.scanStartupMil = scanStartupMil; + this.template = createTopic; + } + + private String generate( + CreateTable createTable) + { + return template.generate(createTable); + } + + private String generateCreateTopic( + Object model) + { + CreateTable createTable = (CreateTable) model; + String topic = createTable.name(); + String primaryKey = !createTable.primaryKeys().isEmpty() + ? String.format(primaryKeyFormat, createTable.primaryKeys().stream().findFirst().get()) + : ""; + + fieldBuilder.setLength(0); + + createTable.columns().forEach(c -> + { + fieldBuilder.append(c.name()); + fieldBuilder.append(" "); + fieldBuilder.append(c.type()); + if (!c.constraints().isEmpty()) + { + fieldBuilder.append(" "); + c.constraints().forEach(fieldBuilder::append); + } + fieldBuilder.append(", "); + }); + + fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); + + this.template = createSource; + + return String.format(createTopicSqlFormat, topic, fieldBuilder, primaryKey); + } + + private String generateCreateSource( + Object model) + { + CreateTable createTable = (CreateTable) model; + String schema = createTable.schema(); + String table = createTable.name(); + String sourceName = "%s_source".formatted(table); + + includeBuilder.setLength(0); + List includes = createTable.columns().stream() + .filter(column -> column.constraints().stream() + .anyMatch(ZILLA_MAPPINGS::containsKey)) + + .collect(Collectors.toCollection(ArrayList::new)); + + if (!includes.isEmpty()) + { + includeBuilder.append("\n"); + includes.forEach(i -> + { + String name = i.name(); + + i.constraints().stream() + .filter(ZILLA_MAPPINGS::containsKey) + .findFirst() + .ifPresent(c -> + { + if (ZILLA_TIMESTAMP.equals(c)) + { + includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c), "%s_timestamp".formatted(name))); + } + else + { + includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c), "%s_header".formatted(name))); + } + }); + + }); + includeBuilder.delete(includeBuilder.length() - 1, includeBuilder.length()); + } + + return String.format(createSourceSqlFormat, sourceName, includeBuilder, bootstrapServer, + schema, table, scanStartupMil, schemaRegistry); + + } +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMarco.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMarco.java new file mode 100644 index 0000000000..e55b6b4e3a --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMarco.java @@ -0,0 +1,81 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; + +public class RisingwaveCreateZviewMarco +{ + private interface CreateZviewState + { + void handleEvent( + RisingwaveCreateZviewMarco context, + MacroEvent event); + } + + public enum MacroEvent + { + QUERY, + COMPLETED, + READY, + ERROR + } + + private CreateZviewState currentState; + + public RisingwaveCreateZviewMarco() + { + this.currentState = new CreateMaterializedVievState(); + } + + public void setState(CreateZviewState state) + { + this.currentState = state; + } + + public void handleEvent( + MacroEvent event) + { + currentState.handleEvent(this, event); + } + + + private class CreateMaterializedVievState implements CreateZviewState + { + @Override + public void handleEvent( + RisingwaveCreateZviewMarco context, + MacroEvent event) + { + switch (event) + { + case QUERY: + + context.setState(new QueryState()); + break; + case COMPLETED: + context.setState(new LockedState()); + break; + case READY: + context.setState(new LockedState()); + break; + case ERROR: + context.setState(); + break; + } + } + + private void doSendQuery() + { + //NOOP + } + } + + private class QueryState implements CreateZviewState + { + @Override + public void handleEvent( + RisingwaveCreateZviewMarco context, + MacroEvent event) + { + //NOOP + } + } + +} 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 b3dcedfad0..48af1b5d80 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 @@ -284,6 +284,7 @@ private final class PgsqlServer private int parserSlotOffset; private int state; + private MacroProgressState macroState; private int commandsProcessed = COMMAND_PROCESSED_NONE; private int queryProgressOffset; @@ -304,6 +305,7 @@ private PgsqlServer( this.initialMax = decodeMax; this.binding = bindings.get(routedId); this.parameters = parameters; + this.macroState = MacroProgressState.START; this.columns = new Object2ObjectHashMap<>(); this.columnTypes = new ArrayList<>(); @@ -1261,6 +1263,8 @@ private void doPgsqlQuery( doAppData(traceId, authorization, flags, buffer, offset, lengthMax, queryEx); messageOffset += lengthMax; + + server.macroState = MacroProgressState.IN_PROGRESS; } else { @@ -1545,6 +1549,15 @@ private void doWindow( sender.accept(window.typeId(), window.buffer(), window.offset(), window.sizeof()); } + private void decodeCreateZtableCommandTest( + PgsqlServer server, + long traceId, + long authorization, + String statement) + { + serve + } + private void decodeCreateZtableCommand( PgsqlServer server, long traceId, @@ -2311,4 +2324,13 @@ void handle( int limit, OctetsFW extension); } + + private enum RisingwaveMacroState + { + START, + PROCESSING, + PROCESSED, + ERROR, + END + } } From 34f93bfc35d4717b86f3db7bc847431b669b798e Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 12 Dec 2024 16:32:29 -0800 Subject: [PATCH 056/104] WIP --- .../macro/RisingwaveCreateZviewMacro.java | 84 ++++++++++++++++ .../macro/RisingwaveCreateZviewMarco.java | 81 ---------------- .../macro/RisingwaveMacroHandler.java | 15 +++ .../internal/macro/RisingwaveMacroState.java | 28 ++++++ .../stream/RisingwaveProxyFactory.java | 96 ++++++++++++------- 5 files changed, 190 insertions(+), 114 deletions(-) create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMarco.java create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java new file mode 100644 index 0000000000..c5c1e52d47 --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java @@ -0,0 +1,84 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; + +public class RisingwaveCreateZviewMacro +{ + private final CreateZview command; + private final RisingwaveMacroHandler handler; + + public RisingwaveCreateZviewMacro( + CreateZview command, + RisingwaveMacroHandler handler) + { + this.command = command; + this.handler = handler; + } + + public RisingwaveMacroState start() + { + CreateMaterializedVievState state = new CreateMaterializedVievState(); + state.doExecute(); + + return state; + } + + private class CreateMaterializedVievState implements RisingwaveMacroState + { + private final String sqlFormat = """ + CREATE MATERIALIZED VIEW IF NOT EXISTS %s AS %s;\u0000"""; + + private void doExecute() + { + String name = command.name(); + String select = command.select(); + + String sqlQuery = String.format(sqlFormat, name, select); + + handler.doExecute(sqlQuery); + } + + @Override + public RisingwaveMacroState onRow() + { + return this; + } + + @Override + public RisingwaveMacroState onType( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + return null; + } + + @Override + public RisingwaveMacroState onCompletion( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + return this; + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + return this; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + return this; + } + } +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMarco.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMarco.java deleted file mode 100644 index e55b6b4e3a..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMarco.java +++ /dev/null @@ -1,81 +0,0 @@ -package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; - -public class RisingwaveCreateZviewMarco -{ - private interface CreateZviewState - { - void handleEvent( - RisingwaveCreateZviewMarco context, - MacroEvent event); - } - - public enum MacroEvent - { - QUERY, - COMPLETED, - READY, - ERROR - } - - private CreateZviewState currentState; - - public RisingwaveCreateZviewMarco() - { - this.currentState = new CreateMaterializedVievState(); - } - - public void setState(CreateZviewState state) - { - this.currentState = state; - } - - public void handleEvent( - MacroEvent event) - { - currentState.handleEvent(this, event); - } - - - private class CreateMaterializedVievState implements CreateZviewState - { - @Override - public void handleEvent( - RisingwaveCreateZviewMarco context, - MacroEvent event) - { - switch (event) - { - case QUERY: - - context.setState(new QueryState()); - break; - case COMPLETED: - context.setState(new LockedState()); - break; - case READY: - context.setState(new LockedState()); - break; - case ERROR: - context.setState(); - break; - } - } - - private void doSendQuery() - { - //NOOP - } - } - - private class QueryState implements CreateZviewState - { - @Override - public void handleEvent( - RisingwaveCreateZviewMarco context, - MacroEvent event) - { - //NOOP - } - } - -} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java new file mode 100644 index 0000000000..b912628aaf --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java @@ -0,0 +1,15 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; + +public interface RisingwaveMacroHandler +{ + void doExecute( + String query); + + void doRow(); + + void doCompletion(); + + void doReady( + long traceId, + long authorization); +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java new file mode 100644 index 0000000000..61718825e7 --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java @@ -0,0 +1,28 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; + +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; + +public interface RisingwaveMacroState +{ + RisingwaveMacroState onRow(); + + RisingwaveMacroState onType( + long traceId, + long authorization, + PgsqlFlushExFW flushEx); + + RisingwaveMacroState onCompletion( + long traceId, + long authorization, + PgsqlFlushExFW flushEx); + + RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx); + + RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx); +} 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 48af1b5d80..81eb39a380 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 @@ -24,6 +24,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.Callable; import java.util.function.Consumer; import java.util.function.LongFunction; import java.util.function.LongUnaryOperator; @@ -47,6 +48,9 @@ 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.macro.RisingwaveCreateZviewMacro; +import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveMacroHandler; +import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveMacroState; 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; @@ -284,8 +288,8 @@ private final class PgsqlServer private int parserSlotOffset; private int state; - private MacroProgressState macroState; + private RisingwaveMacroState macroState; private int commandsProcessed = COMMAND_PROCESSED_NONE; private int queryProgressOffset; @@ -305,7 +309,6 @@ private PgsqlServer( this.initialMax = decodeMax; this.binding = bindings.get(routedId); this.parameters = parameters; - this.macroState = MacroProgressState.START; this.columns = new Object2ObjectHashMap<>(); this.columnTypes = new ArrayList<>(); @@ -841,9 +844,6 @@ private final class PgsqlClient private int state; private int messageOffset; - private PgsqlFlushCommand typeCommand; - private PgsqlDataCommand dataCommand; - private PgsqlFlushCommand completionCommand; private PgsqlClient( PgsqlServer server, @@ -855,10 +855,6 @@ private PgsqlClient( this.originId = originId; this.routedId = routedId; this.user = user; - - this.dataCommand = proxyDataCommand; - this.typeCommand = proxyFlushCommand; - this.completionCommand = ignoreFlushCommand; } private void onAppMessage( @@ -1062,7 +1058,7 @@ private void onAppTypeFlush( long authorization, PgsqlFlushExFW pgsqlFlushEx) { - typeCommand.handle(server, traceId, authorization, pgsqlFlushEx); + server.macroState.onType(traceId, authorization, pgsqlFlushEx); } private void onAppCompletionFlush( @@ -1071,7 +1067,7 @@ private void onAppCompletionFlush( PgsqlFlushExFW pgsqlFlushEx) { messageOffset = 0; - completionCommand.handle(server, traceId, authorization, pgsqlFlushEx); + server.macroState.onCompletion(traceId, authorization, pgsqlFlushEx); } private void onAppErrorFlush( @@ -1082,6 +1078,7 @@ private void onAppErrorFlush( messageOffset = 0; server.doAppFlush(traceId, authorization, flushEx); server.commandsProcessed = COMMAND_PROCESSED_ERRORED; + server.macroState.onError(traceId, authorization, flushEx); } private void onAppReadyFlush( @@ -1089,8 +1086,7 @@ private void onAppReadyFlush( long authorization, PgsqlFlushExFW pgsqlFlushEx) { - dataCommand = proxyDataCommand; - server.onQueryReady(traceId, authorization, pgsqlFlushEx); + server.macroState = server.macroState.onReady(traceId, authorization, pgsqlFlushEx); } private void doAppBegin( @@ -1264,7 +1260,6 @@ private void doPgsqlQuery( messageOffset += lengthMax; - server.macroState = MacroProgressState.IN_PROGRESS; } else { @@ -1549,15 +1544,6 @@ private void doWindow( sender.accept(window.typeId(), window.buffer(), window.offset(), window.sizeof()); } - private void decodeCreateZtableCommandTest( - PgsqlServer server, - long traceId, - long authorization, - String statement) - { - serve - } - private void decodeCreateZtableCommand( PgsqlServer server, long traceId, @@ -1619,7 +1605,6 @@ else if (server.commandsProcessed == 7) final PgsqlClient client = server.systemClientsByRouteId.get(route.id); client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); - client.typeCommand = ignoreFlushCommand; } } @@ -1664,6 +1649,60 @@ else if (server.commandsProcessed == 1) } } + private void decodeCreateZviewCommandTest( + PgsqlServer server, + long traceId, + long authorization, + String statement) + { + final RisingwaveBindingConfig binding = server.binding; + final CreateZview command = parser.parseCreateZView(statement); + + RisingwaveMacroHandler handler = new RisingwaveMacroHandler() + { + @Override + public void doExecute( + String query) + { + int progress = 0; + statementBuffer.putBytes(progress, query.getBytes()); + progress += query.length(); + + final RisingwaveRouteConfig route = + server.binding.resolve(authorization, statementBuffer, 0, progress); + + final PgsqlClient client = server.systemClientsByRouteId.get(route.id); + client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); + } + + @Override + public void doRow() + { + } + + @Override + public void doCompletion() + { + } + + @Override + public void doReady( + long traceId, + long authorization) + { + server.onCommandCompleted(traceId, authorization, statement.length(), + RisingwaveCompletionCommand.CREATE_ZVIEW_COMMAND); + } + }; + + if (server.macroState != null) + { + RisingwaveCreateZviewMacro machine = new RisingwaveCreateZviewMacro(command, handler); + server.macroState = machine.start(); + } + + } + private void decodeCreateZviewCommand( PgsqlServer server, long traceId, @@ -2324,13 +2363,4 @@ void handle( int limit, OctetsFW extension); } - - private enum RisingwaveMacroState - { - START, - PROCESSING, - PROCESSED, - ERROR, - END - } } From 49a754685b82e372e23e39ac70329b14995e03a5 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Fri, 13 Dec 2024 17:04:11 -0800 Subject: [PATCH 057/104] WIP --- .../config/RisingwaveBindingConfig.java | 17 +- .../internal/macro/RisingwaveBaseMacro.java | 13 +- .../macro/RisingwaveCreateZviewMacro.java | 353 +++++++++++++++++- .../macro/RisingwaveMacroHandler.java | 18 +- .../internal/macro/RisingwaveMacroState.java | 31 +- .../stream/RisingwaveProxyFactory.java | 196 ++++------ 6 files changed, 470 insertions(+), 158 deletions(-) diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java index 2043e0c73d..2f8724d76e 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java @@ -49,8 +49,8 @@ public final class RisingwaveBindingConfig { - private static final String INTERNAL_SCHEMA = "zb_catalog"; - private static final String PUBLIC_SCHEMA = "public"; + public static final String INTERNAL_SCHEMA = "zb_catalog"; + public static final String PUBLIC_SCHEMA = "public"; public final long id; public final String name; @@ -75,6 +75,8 @@ public final class RisingwaveBindingConfig public final RisingwaveDeleteFromCatalogTemplate catalogDelete; public final RisingwaveGrantToSourceTemplate grantResource; public final RisingwaveShowTypeTemplate showType; + public final String bootstrapServer; + public final String schemaRegistry; public RisingwaveBindingConfig( RisingwaveConfiguration config, @@ -88,7 +90,7 @@ public RisingwaveBindingConfig( this.routes = binding.routes.stream().map(RisingwaveRouteConfig::new).collect(toList()); String bootstrapServer = null; - String location = null; + String schemaRegistry = null; RisingwaveUdfConfig udf = null; if (options.kafka != null) @@ -98,13 +100,16 @@ public RisingwaveBindingConfig( final CatalogHandler catalogHandler = supplyCatalog.apply(cataloged.id); bootstrapServer = options.kafka.properties.bootstrapServer; - location = catalogHandler.location(); + schemaRegistry = catalogHandler.location(); } + this.bootstrapServer = bootstrapServer; + this.schemaRegistry = schemaRegistry; + this.createTable = new RisingwaveCreateTableTemplate(); this.createSource = new RisingwaveCreateSourceTemplate(bootstrapServer, - location, config.kafkaScanStartupTimestampMillis()); - this.createSink = new RisingwaveCreateSinkTemplate(INTERNAL_SCHEMA, bootstrapServer, location); + schemaRegistry, config.kafkaScanStartupTimestampMillis()); + this.createSink = new RisingwaveCreateSinkTemplate(INTERNAL_SCHEMA, bootstrapServer, schemaRegistry); this.createTopic = new RisingwaveCreateTopicTemplate(); this.createView = new RisingwaveCreateMaterializedViewTemplate(); this.alterTable = new RisingwaveAlterTableTemplate(); diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveBaseMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveBaseMacro.java index 61d4e3f2bb..85a8b9076e 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveBaseMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveBaseMacro.java @@ -1,11 +1,17 @@ package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; +import java.nio.ByteOrder; import java.util.Map; import org.agrona.collections.Object2ObjectHashMap; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.String32FW; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; + public abstract class RisingwaveBaseMacro { + protected static final int FLAGS_INIT = 0x02; + protected static final String ZILLA_CORRELATION_ID_OLD = "zilla_correlation_id"; protected static final String ZILLA_IDENTITY_OLD = "zilla_identity"; protected static final String ZILLA_TIMESTAMP_OLD = "zilla_timestamp"; @@ -27,11 +33,4 @@ public abstract class RisingwaveBaseMacro ZILLA_MAPPINGS_OLD.put(ZILLA_IDENTITY_OLD, "INCLUDE header 'zilla:identity' AS %s\n"); ZILLA_MAPPINGS_OLD.put(ZILLA_TIMESTAMP_OLD, "INCLUDE timestamp AS %s\n"); } - - @FunctionalInterface - protected interface RisingwaveTemplate - { - String generate( - Object model); - } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java index c5c1e52d47..e7da714750 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java @@ -1,57 +1,388 @@ package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; +import java.nio.ByteOrder; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import org.agrona.DirectBuffer; +import org.agrona.collections.Object2ObjectHashMap; + import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; +import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwavePgsqlTypeMapping; +import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.OctetsFW; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.String32FW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; -public class RisingwaveCreateZviewMacro +public class RisingwaveCreateZviewMacro extends RisingwaveBaseMacro { + private static final String RESOURCE = "MATERIALIZED VIEW"; + private static final String ZVIEW_NAME = "zviews"; + + private final String32FW columnRO = new String32FW(ByteOrder.BIG_ENDIAN); + + private final List columnTypes; + private final List columnDescriptions; + private final Map columns; + private final String bootstrapServer; + private final String schemaRegistry; + private final String systemSchema; + private final String user; + private final String sql; private final CreateZview command; private final RisingwaveMacroHandler handler; public RisingwaveCreateZviewMacro( + String bootstrapServer, + String schemaRegistry, + String systemSchema, + String user, + String sql, CreateZview command, RisingwaveMacroHandler handler) { + this.bootstrapServer = bootstrapServer; + this.schemaRegistry = schemaRegistry; + this.systemSchema = systemSchema; + this.user = user; + this.sql = sql; this.command = command; this.handler = handler; + + this.columnTypes = new ArrayList<>(); + this.columnDescriptions = new ArrayList<>(); + this.columns = new Object2ObjectHashMap<>(); } - public RisingwaveMacroState start() + public RisingwaveMacroState start( + long traceId, + long authorization) { - CreateMaterializedVievState state = new CreateMaterializedVievState(); - state.doExecute(); + CreateMaterializedViewState state = new CreateMaterializedViewState(); + state.doExecute(traceId, authorization); return state; } - private class CreateMaterializedVievState implements RisingwaveMacroState + private class CreateMaterializedViewState implements RisingwaveMacroState { private final String sqlFormat = """ CREATE MATERIALIZED VIEW IF NOT EXISTS %s AS %s;\u0000"""; - private void doExecute() + private void doExecute( + long traceId, + long authorization) { String name = command.name(); String select = command.select(); String sqlQuery = String.format(sqlFormat, name, select); - handler.doExecute(sqlQuery); + handler.doExecute(traceId, authorization, sqlQuery); } @Override - public RisingwaveMacroState onRow() + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) { + GrantResourceState state = new GrantResourceState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); return this; } + } + + private class GrantResourceState implements RisingwaveMacroState + { + private final String sqlFormat = """ + GRANT ALL PRIVILEGES ON %s %s.%s TO %s;\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, RESOURCE, command.schema(), command.name(), user); + + handler.doExecute(traceId, authorization, sqlQuery); + } @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + DescribeMaterializedViewState state = new DescribeMaterializedViewState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + protected class DescribeMaterializedViewState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DESCRIBE %s.%s;\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, command.schema(), command.name()); + + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override public RisingwaveMacroState onType( long traceId, long authorization, PgsqlFlushExFW flushEx) { - return null; + columnTypes.clear(); + flushEx.type().columns() + .forEach(c -> + { + String name = c.name().asString(); + name = name.substring(0, name.length() - 1); + columnTypes.add(name); + }); + + return this; + } + + @Override + public RisingwaveMacroState onRow( + long traceId, + long authorization, + long routedId, + int flags, + DirectBuffer buffer, + int offset, + int limit, + OctetsFW extension) + { + int progress = offset; + + if ((flags & FLAGS_INIT) != 0x00) + { + columnDescriptions.clear(); + progress += Short.BYTES; + } + + column: + while (progress < limit) + { + String32FW column = columnRO.tryWrap(buffer, progress, limit); + + if (column == null) + { + break column; + } + + columnDescriptions.add(column.asString()); + + progress = column.limit(); + } + + int nameIndex = columnTypes.indexOf("Name"); + int typeIndex = columnTypes.indexOf("Type"); + int isHiddenIndex = columnTypes.indexOf("Is Hidden"); + + if ("false".equals(columnDescriptions.get(isHiddenIndex))) + { + columns.put(columnDescriptions.get(nameIndex), columnDescriptions.get(typeIndex)); + } + + return this; + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + CreateTopicState state = new CreateTopicState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + protected class CreateTopicState implements RisingwaveMacroState + { + private final String sqlFormat = """ + CREATE TOPIC IF NOT EXISTS %s (%s%s);\u0000"""; + private final String primaryKeyFormat = ", PRIMARY KEY (%s)"; + + private final StringBuilder fieldBuilder = new StringBuilder(); + private final StringBuilder primaryKeyBuilder = new StringBuilder(); + + + private void doExecute( + long traceId, + long authorization) + { + String topic = command.name(); + + primaryKeyBuilder.setLength(0); + columns.keySet().forEach(k -> primaryKeyBuilder.append(k).append(", ")); + primaryKeyBuilder.delete(primaryKeyBuilder.length() - 2, primaryKeyBuilder.length()); + + String primaryKey = String.format(primaryKeyFormat, primaryKeyBuilder); + + fieldBuilder.setLength(0); + + columns.forEach((k, v) -> fieldBuilder.append(String.format("%s %s, ", k, + RisingwavePgsqlTypeMapping.typeName(v)))); + fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); + + String sqlQuery = String.format(sqlFormat, topic, fieldBuilder, primaryKey); + + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + CreateSinkState state = new CreateSinkState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + protected class CreateSinkState implements RisingwaveMacroState + { + private final String sqlKafkaFormat = """ + CREATE SINK %s.%s_sink + FROM %s + WITH ( + connector='kafka', + properties.bootstrap.server='%s', + topic='%s.%s'%s + ) FORMAT UPSERT ENCODE AVRO ( + schema.registry='%s' + ) KEY ENCODE TEXT;\u0000"""; + + private final StringBuilder fieldBuilder = new StringBuilder(); + private final StringBuilder primaryKeyBuilder = new StringBuilder(); + + + private void doExecute( + long traceId, + long authorization) + { + String topicSchema = command.schema(); + String viewName = command.name(); + + Optional> primaryKeyMatch = columns.entrySet().stream() + .filter(e -> "id".equalsIgnoreCase(e.getKey())) + .findFirst(); + + if (primaryKeyMatch.isEmpty()) + { + primaryKeyMatch = columns.entrySet().stream() + .filter(e -> e.getKey().toLowerCase().contains("id")) + .findFirst(); + } + + String textPrimaryKey = primaryKeyMatch.map(Map.Entry::getKey).orElse(null); + String primaryKey = textPrimaryKey != null ? ",\n primary_key='%s'".formatted(textPrimaryKey) : ""; + + String sqlQuery = String.format(sqlKafkaFormat, systemSchema, viewName, viewName, bootstrapServer, + topicSchema, viewName, primaryKey, schemaRegistry); + + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + InsertIntoCatalogState state = new InsertIntoCatalogState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private class InsertIntoCatalogState implements RisingwaveMacroState + { + private final String sqlFormat = """ + INSERT INTO %s.%s (name, sql) VALUES ('%s', '%s');\u0000"""; + private void doExecute( + long traceId, + long authorization) + { + String name = command.name(); + String schema = command.schema(); + + String newSql = sql.replace("ZVIEW", "MATERIALIZED VIEW") + .replace("\u0000", ""); + String sqlQuery = String.format(sqlFormat, systemSchema, schema, name, newSql); + + handler.doExecute(traceId, authorization, sqlQuery); } @Override @@ -60,6 +391,7 @@ public RisingwaveMacroState onCompletion( long authorization, PgsqlFlushExFW flushEx) { + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.CREATE_ZVIEW_COMMAND); return this; } @@ -69,6 +401,7 @@ public RisingwaveMacroState onReady( long authorization, PgsqlFlushExFW flushEx) { + handler.doReady(traceId, authorization, sql.length()); return this; } @@ -78,7 +411,9 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { + handler.doError(traceId, authorization, flushEx); return this; } } + } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java index b912628aaf..47f8a97396 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java @@ -1,15 +1,29 @@ package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; +import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; + public interface RisingwaveMacroHandler { void doExecute( + long traceId, + long authorization, String query); void doRow(); - void doCompletion(); + void doCompletion( + long traceId, + long authorization, + RisingwaveCompletionCommand command); + + void doError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx); void doReady( long traceId, - long authorization); + long authorization, + int progress); } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java index 61718825e7..94a366a7b1 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java @@ -1,20 +1,41 @@ package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; +import org.agrona.DirectBuffer; + +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.OctetsFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; public interface RisingwaveMacroState { - RisingwaveMacroState onRow(); + default RisingwaveMacroState onRow( + long traceId, + long authorization, + long routedId, + int flags, + DirectBuffer buffer, + int offset, + int limit, + OctetsFW extension) + { + return this; + } - RisingwaveMacroState onType( + default RisingwaveMacroState onType( long traceId, long authorization, - PgsqlFlushExFW flushEx); + PgsqlFlushExFW flushEx) + { + return this; + } - RisingwaveMacroState onCompletion( + default RisingwaveMacroState onCompletion( long traceId, long authorization, - PgsqlFlushExFW flushEx); + PgsqlFlushExFW flushEx) + { + return this; + } + RisingwaveMacroState onReady( long traceId, 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 0384868bfa..300fa010a0 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 @@ -24,7 +24,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.Callable; import java.util.function.Consumer; import java.util.function.LongFunction; import java.util.function.LongUnaryOperator; @@ -115,8 +114,6 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory private final AbortFW.Builder abortRW = new AbortFW.Builder(); private final FlushFW.Builder flushRW = new FlushFW.Builder(); - private final String32FW columnRO = new String32FW(ByteOrder.BIG_ENDIAN); - private final ResetFW resetRO = new ResetFW(); private final WindowFW windowRO = new WindowFW(); @@ -261,10 +258,8 @@ private final class PgsqlServer private final Map parameters; private final Deque responses; private final IntArrayQueue queries; - private final List columnTypes; - private final List columnDescriptions; - private final Map columns; private final String user; + private final RisingwaveMacroDefaultHandler macroHandler; private final long initialId; private final long replyId; @@ -290,7 +285,6 @@ private final class PgsqlServer private int state; private RisingwaveMacroState macroState; - private int commandsProcessed = COMMAND_PROCESSED_NONE; private int queryProgressOffset; private PgsqlServer( @@ -310,12 +304,10 @@ private PgsqlServer( this.binding = bindings.get(routedId); this.parameters = parameters; - this.columns = new Object2ObjectHashMap<>(); - this.columnTypes = new ArrayList<>(); - this.columnDescriptions = new ArrayList<>(); this.systemClientsByRouteId = new Long2ObjectHashMap<>(); this.responses = new ArrayDeque<>(); this.queries = new IntArrayQueue(); + this.macroHandler = new RisingwaveMacroDefaultHandler(); binding.routes.forEach(r -> systemClientsByRouteId.put(r.id, @@ -545,18 +537,11 @@ private void onAppWindow( private void onCommandCompleted( long traceId, long authorization, - int progress, - RisingwaveCompletionCommand command) + int progress) { final MutableDirectBuffer parserBuffer = bufferPool.buffer(parserSlot); - if (commandsProcessed != COMMAND_PROCESSED_ERRORED) - { - doCommandCompletion(traceId, authorization, command); - } - parserSlotOffset -= progress; - commandsProcessed = COMMAND_PROCESSED_NONE; parserBuffer.putBytes(0, parserBuffer, progress, parserSlotOffset); @@ -816,6 +801,58 @@ private void cleanupParserSlotIfNecessary() parserSlotOffset = 0; } } + + private final class RisingwaveMacroDefaultHandler implements RisingwaveMacroHandler + { + @Override + public void doExecute( + long traceId, + long authorization, + String query) + { + int progress = 0; + statementBuffer.putBytes(progress, query.getBytes()); + progress += query.length(); + + final RisingwaveRouteConfig route = + binding.resolve(authorization, statementBuffer, 0, progress); + + final PgsqlClient client = systemClientsByRouteId.get(route.id); + client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); + } + + @Override + public void doRow() + { + } + + @Override + public void doError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + doAppFlush(traceId, authorization, flushEx); + } + + @Override + public void doCompletion( + long traceId, + long authorization, + RisingwaveCompletionCommand command) + { + doCommandCompletion(traceId, authorization, command); + } + + @Override + public void doReady( + long traceId, + long authorization, + int progress) + { + onCommandCompleted(traceId, authorization, progress); + } + }; } private final class PgsqlClient @@ -1650,124 +1687,25 @@ else if (server.commandsProcessed == 1) } } - private void decodeCreateZviewCommandTest( - PgsqlServer server, - long traceId, - long authorization, - String statement) - { - final RisingwaveBindingConfig binding = server.binding; - final CreateZview command = parser.parseCreateZView(statement); - - RisingwaveMacroHandler handler = new RisingwaveMacroHandler() - { - @Override - public void doExecute( - String query) - { - int progress = 0; - statementBuffer.putBytes(progress, query.getBytes()); - progress += query.length(); - - final RisingwaveRouteConfig route = - server.binding.resolve(authorization, statementBuffer, 0, progress); - - final PgsqlClient client = server.systemClientsByRouteId.get(route.id); - client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); - } - - @Override - public void doRow() - { - } - - @Override - public void doCompletion() - { - } - - @Override - public void doReady( - long traceId, - long authorization) - { - server.onCommandCompleted(traceId, authorization, statement.length(), - RisingwaveCompletionCommand.CREATE_ZVIEW_COMMAND); - } - }; - - if (server.macroState != null) - { - RisingwaveCreateZviewMacro machine = new RisingwaveCreateZviewMacro(command, handler); - server.macroState = machine.start(); - } - - } - private void decodeCreateZviewCommand( PgsqlServer server, long traceId, long authorization, String statement) { - if (server.commandsProcessed == 6 || - server.commandsProcessed == COMMAND_PROCESSED_ERRORED) - { - final int length = statement.length(); - server.onCommandCompleted(traceId, authorization, length, - RisingwaveCompletionCommand.CREATE_ZVIEW_COMMAND); - } - else - { - final RisingwaveBindingConfig binding = server.binding; - final CreateZview createZview = parser.parseCreateZView(statement); - PgsqlFlushCommand typeCommand = ignoreFlushCommand; - PgsqlDataCommand dataCommand = proxyDataCommand; - - String newStatement = ""; - int progress = 0; - - if (server.commandsProcessed == 0) - { - newStatement = binding.createView.generate(createZview); - } - else if (server.commandsProcessed == 1) - { - newStatement = binding.grantResource.generate( - "MATERIALIZED VIEW", createZview.schema(), createZview.name(), server.user); - } - else if (server.commandsProcessed == 2) - { - newStatement = binding.describeView.generate(createZview); - typeCommand = typeFlushCommand; - dataCommand = rowDataCommand; - server.columns.clear(); - } - else if (server.commandsProcessed == 3) - { - newStatement = binding.createTopic.generate(createZview, server.columns); - } - else if (server.commandsProcessed == 4) - { - newStatement = binding.createSink.generateOutgress(server.columns, createZview); - } - else if (server.commandsProcessed == 5) - { - newStatement = binding.catalogInsert.generate(ZVIEW_NAME, createZview.name(), statement); - } - - statementBuffer.putBytes(progress, newStatement.getBytes()); - progress += newStatement.length(); - - final RisingwaveRouteConfig route = - server.binding.resolve(authorization, statementBuffer, 0, progress); + final CreateZview command = parser.parseCreateZView(statement); - final PgsqlClient client = server.systemClientsByRouteId.get(route.id); - client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); - client.typeCommand = typeCommand; - client.dataCommand = dataCommand; - client.completionCommand = ignoreFlushCommand; - } + RisingwaveBindingConfig binding = server.binding; + + RisingwaveCreateZviewMacro machine = new RisingwaveCreateZviewMacro( + binding.bootstrapServer, + binding.schemaRegistry, + RisingwaveBindingConfig.INTERNAL_SCHEMA, + server.user, + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); } private void decodeCreateFunctionCommand( From e32253cea88242368e4c96d352b14e0b372baf71 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Fri, 13 Dec 2024 18:08:22 -0800 Subject: [PATCH 058/104] WIP --- .../internal/macro/RisingwaveBaseMacro.java | 2 - .../macro/RisingwaveCreateStreamMacro.java | 125 ++++ .../macro/RisingwaveCreateZtableMacro.java | 547 +++++++++++++++--- .../macro/RisingwaveCreateZviewMacro.java | 17 +- .../stream/RisingwaveProxyFactory.java | 161 +----- 5 files changed, 636 insertions(+), 216 deletions(-) create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveBaseMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveBaseMacro.java index 85a8b9076e..5f7ddabc95 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveBaseMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveBaseMacro.java @@ -10,8 +10,6 @@ public abstract class RisingwaveBaseMacro { - protected static final int FLAGS_INIT = 0x02; - protected static final String ZILLA_CORRELATION_ID_OLD = "zilla_correlation_id"; protected static final String ZILLA_IDENTITY_OLD = "zilla_identity"; protected static final String ZILLA_TIMESTAMP_OLD = "zilla_timestamp"; diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java new file mode 100644 index 0000000000..d61a613b59 --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java @@ -0,0 +1,125 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; + +import java.util.Map; + +import org.agrona.collections.Object2ObjectHashMap; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; +import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; + +public class RisingwaveCreateStreamMacro +{ + private final String bootstrapServer; + private final String schemaRegistry; + + private final String systemSchema; + private final String user; + private final String sql; + private final CreateStream command; + private final RisingwaveMacroHandler handler; + + public RisingwaveCreateStreamMacro( + String bootstrapServer, + String schemaRegistry, + String systemSchema, + String user, + String sql, + CreateStream command, + RisingwaveMacroHandler handler) + { + this.systemSchema = systemSchema; + this.user = user; + this.sql = sql; + this.command = command; + this.handler = handler; + + this.bootstrapServer = bootstrapServer; + this.schemaRegistry = schemaRegistry; + } + + + public RisingwaveMacroState start( + long traceId, + long authorization) + { + CreateTopicState state = new CreateTopicState(); + state.doExecute(traceId, authorization); + + return state; + } + + private class CreateTopicState implements RisingwaveMacroState + { + private final String sqlFormat = """ + CREATE TOPIC IF NOT EXISTS %s (%s%s);\u0000"""; + + //TODO: Remove after implementing zstream + protected static final String ZILLA_CORRELATION_ID_OLD = "zilla_correlation_id"; + protected static final String ZILLA_IDENTITY_OLD = "zilla_identity"; + protected static final String ZILLA_TIMESTAMP_OLD = "zilla_timestamp"; + + protected static final Map ZILLA_MAPPINGS_OLD = new Object2ObjectHashMap<>(); + static + { + ZILLA_MAPPINGS_OLD.put(ZILLA_CORRELATION_ID_OLD, "INCLUDE header 'zilla:correlation-id' AS %s\n"); + ZILLA_MAPPINGS_OLD.put(ZILLA_IDENTITY_OLD, "INCLUDE header 'zilla:identity' AS %s\n"); + ZILLA_MAPPINGS_OLD.put(ZILLA_TIMESTAMP_OLD, "INCLUDE timestamp AS %s\n"); + } + + private final StringBuilder fieldBuilder = new StringBuilder(); + + private void doExecute( + long traceId, + long authorization) + { + String topic = command.name(); + + fieldBuilder.setLength(0); + + command.columns() + .entrySet() + .stream() + .filter(e -> !ZILLA_MAPPINGS_OLD.containsKey(e.getKey())) + .forEach(e -> fieldBuilder.append( + String.format("%s %s, ", e.getKey(), e.getValue()))); + + fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); + + String sqlQuery = String.format(sqlFormat, topic, fieldBuilder, ""); + + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onCompletion( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.CREATE_STREAM_COMMAND); + return this; + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doReady(traceId, authorization, sql.length()); + return this; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java index 5af622d379..05a5517c7b 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java @@ -2,28 +2,30 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; +import org.agrona.collections.Object2ObjectHashMap; + import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; +import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; -public class RisingwaveCreateZtableMacro extends RisingwaveBaseMacro +public class RisingwaveCreateZtableMacro { - private final String createTopicSqlFormat = """ - CREATE TOPIC IF NOT EXISTS %s (%s%s);\u0000"""; - private final String primaryKeyFormat = ", PRIMARY KEY (%s)"; - - private final String createSourceSqlFormat = """ - CREATE SOURCE IF NOT EXISTS %s (*)%s - WITH ( - connector='kafka', - properties.bootstrap.server='%s', - topic='%s.%s', - scan.startup.mode='latest', - scan.startup.timestamp.millis='%d' - ) FORMAT PLAIN ENCODE AVRO ( - schema.registry = '%s' - );\u0000"""; + private static final String ZTABLE_NAME = "ztables"; + private static final String TABLE_NAME = "tables"; + private static final String ZILLA_IDENTITY = "GENERATED ALWAYS AS IDENTITY"; + private static final String ZILLA_TIMESTAMP = "GENERATED ALWAYS AS NOW"; + + private static final Map ZILLA_MAPPINGS = new Object2ObjectHashMap<>(); + static + { + ZILLA_MAPPINGS.put(ZILLA_IDENTITY, "INCLUDE header 'zilla:identity' AS %s\n"); + ZILLA_MAPPINGS.put(ZILLA_TIMESTAMP, "INCLUDE timestamp AS %s\n"); + } private final String bootstrapServer; private final String schemaRegistry; @@ -31,105 +33,508 @@ public class RisingwaveCreateZtableMacro extends RisingwaveBaseMacro private final StringBuilder fieldBuilder; private final StringBuilder includeBuilder; - - private final RisingwaveTemplate createTopic = this::generateCreateTopic; - private final RisingwaveTemplate createSource = this::generateCreateSource; - - private RisingwaveTemplate template; + private final String systemSchema; + private final String user; + private final String sql; + private final CreateTable command; + private final RisingwaveMacroHandler handler; public RisingwaveCreateZtableMacro( String bootstrapServer, String schemaRegistry, - long scanStartupMil) + long scanStartupMil, + String systemSchema, + String user, + String sql, + CreateTable command, + RisingwaveMacroHandler handler) { + this.systemSchema = systemSchema; + this.user = user; + this.sql = sql; + this.command = command; + this.handler = handler; this.fieldBuilder = new StringBuilder(); this.includeBuilder = new StringBuilder(); + this.bootstrapServer = bootstrapServer; this.schemaRegistry = schemaRegistry; this.scanStartupMil = scanStartupMil; - this.template = createTopic; } - private String generate( - CreateTable createTable) + public RisingwaveMacroState start( + long traceId, + long authorization) { - return template.generate(createTable); + CreateTopicState state = new CreateTopicState(); + state.doExecute(traceId, authorization); + + return state; } - private String generateCreateTopic( - Object model) + private class CreateTopicState implements RisingwaveMacroState { - CreateTable createTable = (CreateTable) model; - String topic = createTable.name(); - String primaryKey = !createTable.primaryKeys().isEmpty() - ? String.format(primaryKeyFormat, createTable.primaryKeys().stream().findFirst().get()) - : ""; + private final String sqlFormat = """ + CREATE TOPIC IF NOT EXISTS %s (%s%s);\u0000"""; + private final String primaryKeyFormat = ", PRIMARY KEY (%s)"; - fieldBuilder.setLength(0); + private final StringBuilder fieldBuilder = new StringBuilder(); - createTable.columns().forEach(c -> + private void doExecute( + long traceId, + long authorization) { - fieldBuilder.append(c.name()); - fieldBuilder.append(" "); - fieldBuilder.append(c.type()); - if (!c.constraints().isEmpty()) + String topic = command.name(); + String primaryKey = !command.primaryKeys().isEmpty() + ? String.format(primaryKeyFormat, command.primaryKeys().stream().findFirst().get()) + : ""; + + fieldBuilder.setLength(0); + + command.columns().forEach(c -> { + fieldBuilder.append(c.name()); fieldBuilder.append(" "); - c.constraints().forEach(fieldBuilder::append); + fieldBuilder.append(c.type()); + if (!c.constraints().isEmpty()) + { + fieldBuilder.append(" "); + c.constraints().forEach(fieldBuilder::append); + } + fieldBuilder.append(", "); + }); + + fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); + + String sqlQuery = String.format(sqlFormat, topic, fieldBuilder, primaryKey); + + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + CreateSourceState state = new CreateSourceState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private class CreateSourceState implements RisingwaveMacroState + { + private final String sqlFormat = """ + CREATE SOURCE IF NOT EXISTS %s (*)%s + WITH ( + connector='kafka', + properties.bootstrap.server='%s', + topic='%s.%s', + scan.startup.mode='latest', + scan.startup.timestamp.millis='%d' + ) FORMAT PLAIN ENCODE AVRO ( + schema.registry = '%s' + );\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String schema = command.schema(); + String table = command.name(); + String sourceName = "%s_source".formatted(table); + + includeBuilder.setLength(0); + List includes = command.columns().stream() + .filter(column -> column.constraints().stream() + .anyMatch(ZILLA_MAPPINGS::containsKey)) + .collect(Collectors.toCollection(ArrayList::new)); + + if (!includes.isEmpty()) + { + includeBuilder.append("\n"); + includes.forEach(i -> + { + String name = i.name(); + + i.constraints().stream() + .filter(ZILLA_MAPPINGS::containsKey) + .findFirst() + .ifPresent(c -> + { + if (ZILLA_TIMESTAMP.equals(c)) + { + includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c), "%s_timestamp".formatted(name))); + } + else + { + includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c), "%s_header".formatted(name))); + } + }); + + }); + includeBuilder.delete(includeBuilder.length() - 1, includeBuilder.length()); } - fieldBuilder.append(", "); - }); - fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); + String sqlQuery = String.format(sqlFormat, sourceName, includeBuilder, bootstrapServer, + schema, table, scanStartupMil, schemaRegistry); - this.template = createSource; + handler.doExecute(traceId, authorization, sqlQuery); + } - return String.format(createTopicSqlFormat, topic, fieldBuilder, primaryKey); + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + CreateMaterializedViewState state = new CreateMaterializedViewState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } } - private String generateCreateSource( - Object model) + private class CreateMaterializedViewState implements RisingwaveMacroState { - CreateTable createTable = (CreateTable) model; - String schema = createTable.schema(); - String table = createTable.name(); - String sourceName = "%s_source".formatted(table); + private final String sqlFormat = """ + CREATE MATERIALIZED VIEW IF NOT EXISTS %s AS %s;\u0000"""; - includeBuilder.setLength(0); - List includes = createTable.columns().stream() - .filter(column -> column.constraints().stream() - .anyMatch(ZILLA_MAPPINGS::containsKey)) + private final String includeFormat = "COALESCE(%s, %s_header::%s) as %s, "; + private final String timestampFormat = "COALESCE(%s, %s_timestamp::%s) as %s, "; - .collect(Collectors.toCollection(ArrayList::new)); - if (!includes.isEmpty()) + private void doExecute( + long traceId, + long authorization) { - includeBuilder.append("\n"); - includes.forEach(i -> + String name = command.name(); + + String select = "*"; + List includes = command.columns().stream() + .filter(column -> column.constraints().stream() + .anyMatch(ZILLA_MAPPINGS::containsKey)) + .collect(Collectors.toCollection(ArrayList::new)); + + if (!includes.isEmpty()) { - String name = i.name(); + fieldBuilder.setLength(0); - i.constraints().stream() - .filter(ZILLA_MAPPINGS::containsKey) - .findFirst() - .ifPresent(c -> + command.columns() + .forEach(i -> { - if (ZILLA_TIMESTAMP.equals(c)) + String columnName = i.name(); + String columnType = i.type().toLowerCase(); + + Optional include = i.constraints().stream() + .filter(ZILLA_MAPPINGS::containsKey) + .findFirst(); + + if (include.isPresent()) { - includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c), "%s_timestamp".formatted(name))); + final String includeName = include.get(); + if (ZILLA_TIMESTAMP.equals(includeName)) + { + fieldBuilder.append( + String.format(timestampFormat, columnName, columnName, columnType, columnName)); + } + else + { + fieldBuilder.append( + String.format(includeFormat, columnName, columnName, columnType, columnName)); + } } else { - includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c), "%s_header".formatted(name))); + fieldBuilder.append("%s, ".formatted(columnName)); } }); - }); - includeBuilder.delete(includeBuilder.length() - 1, includeBuilder.length()); + fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); + select = fieldBuilder.toString(); + } + + String sqlQuery = String.format(sqlFormat, "%s_view".formatted(name), "SELECT %s FROM %s_source".formatted(select, name)); + + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + CreateTableState state = new CreateTableState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private class CreateTableState implements RisingwaveMacroState + { + private final String sqlFormat = """ + CREATE TABLE IF NOT EXISTS %s (%s%s);\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String topic = command.name(); + String primaryKeyFormat = ", PRIMARY KEY (%s)"; + String primaryKey = !command.primaryKeys().isEmpty() + ? String.format(primaryKeyFormat, command.primaryKeys().stream().findFirst().get()) + : ""; + + fieldBuilder.setLength(0); + + command.columns() + .forEach(c -> fieldBuilder.append( + String.format("%s %s, ", c.name(), c.type()))); + + fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); + + String sqlQuery = String.format(sqlFormat, topic, fieldBuilder, primaryKey); + + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + GrantResourceState state = new GrantResourceState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private class GrantResourceState implements RisingwaveMacroState + { + private final String sqlFormat = """ + GRANT ALL PRIVILEGES ON %s %s.%s TO %s;\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, "TABLE", command.schema(), command.name(), user); + + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + CreateSinkIntoState state = new CreateSinkIntoState(); + state.doExecute(traceId, authorization); + + return state; } - return String.format(createSourceSqlFormat, sourceName, includeBuilder, bootstrapServer, - schema, table, scanStartupMil, schemaRegistry); + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private class CreateSinkIntoState implements RisingwaveMacroState + { + private final String sqlFormat = """ + CREATE SINK %s.%s_view_sink INTO %s FROM %s_view;\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String name = command.name(); + String sqlQuery = String.format(sqlFormat, systemSchema, name, name, name); + + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + CreateSinkState state = new CreateSinkState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } } + + private class CreateSinkState implements RisingwaveMacroState + { + private final String sqlKafkaFormat = """ + CREATE SINK %s.%s_sink + FROM %s + WITH ( + connector='kafka', + properties.bootstrap.server='%s', + topic='%s.%s'%s + ) FORMAT UPSERT ENCODE AVRO ( + schema.registry='%s' + ) KEY ENCODE TEXT;\u0000"""; + + + private void doExecute( + long traceId, + long authorization) + { + String topicSchema = command.schema(); + String table = command.name(); + + String sqlQuery = String.format(sqlKafkaFormat, + systemSchema, + table, + table, + bootstrapServer, + topicSchema, + table, + ",\n primary_key='%s'".formatted(command.primaryKeys().stream().findFirst().get()), schemaRegistry); + + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + InsertIntoCatalogState state = new InsertIntoCatalogState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + + private class InsertIntoCatalogState implements RisingwaveMacroState + { + private final String sqlFormat = """ + INSERT INTO %s.%s (name, sql) VALUES ('%s', '%s');\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String name = command.name(); + String schema = command.schema(); + + String newSql = sql.replace(ZTABLE_NAME, TABLE_NAME) + .replace("\u0000", ""); + String sqlQuery = String.format(sqlFormat, systemSchema, schema, name, newSql); + + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onCompletion( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.CREATE_ZTABLE_COMMAND); + return this; + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doReady(traceId, authorization, sql.length()); + return this; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + } + } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java index e7da714750..431ebb4f4a 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java @@ -16,9 +16,11 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.types.String32FW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; -public class RisingwaveCreateZviewMacro extends RisingwaveBaseMacro +public class RisingwaveCreateZviewMacro { - private static final String RESOURCE = "MATERIALIZED VIEW"; + protected static final int FLAGS_INIT = 0x02; + + private static final String MATERIALIZED_VIEW_NAME = "MATERIALIZED VIEW"; private static final String ZVIEW_NAME = "zviews"; private final String32FW columnRO = new String32FW(ByteOrder.BIG_ENDIAN); @@ -115,7 +117,7 @@ private void doExecute( long traceId, long authorization) { - String sqlQuery = String.format(sqlFormat, RESOURCE, command.schema(), command.name(), user); + String sqlQuery = String.format(sqlFormat, MATERIALIZED_VIEW_NAME, command.schema(), command.name(), user); handler.doExecute(traceId, authorization, sqlQuery); } @@ -143,7 +145,7 @@ public RisingwaveMacroState onError( } } - protected class DescribeMaterializedViewState implements RisingwaveMacroState + private class DescribeMaterializedViewState implements RisingwaveMacroState { private final String sqlFormat = """ DESCRIBE %s.%s;\u0000"""; @@ -244,7 +246,7 @@ public RisingwaveMacroState onError( } } - protected class CreateTopicState implements RisingwaveMacroState + private class CreateTopicState implements RisingwaveMacroState { private final String sqlFormat = """ CREATE TOPIC IF NOT EXISTS %s (%s%s);\u0000"""; @@ -300,7 +302,7 @@ public RisingwaveMacroState onError( } } - protected class CreateSinkState implements RisingwaveMacroState + private class CreateSinkState implements RisingwaveMacroState { private final String sqlKafkaFormat = """ CREATE SINK %s.%s_sink @@ -371,6 +373,7 @@ private class InsertIntoCatalogState implements RisingwaveMacroState { private final String sqlFormat = """ INSERT INTO %s.%s (name, sql) VALUES ('%s', '%s');\u0000"""; + private void doExecute( long traceId, long authorization) @@ -378,7 +381,7 @@ private void doExecute( String name = command.name(); String schema = command.schema(); - String newSql = sql.replace("ZVIEW", "MATERIALIZED VIEW") + String newSql = sql.replace(ZVIEW_NAME, MATERIALIZED_VIEW_NAME) .replace("\u0000", ""); String sqlQuery = String.format(sqlFormat, systemSchema, schema, name, newSql); 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 300fa010a0..85ab66a0b2 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 @@ -47,6 +47,8 @@ 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.macro.RisingwaveCreateStreamMacro; +import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZtableMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZviewMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveMacroHandler; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveMacroState; @@ -89,11 +91,7 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory private static final String ZILLABASE_USER = "zillabase\u0000"; private static final String DEFAULT_USER = "default\u0000"; - private static final String ZVIEW_NAME = "zviews"; - private static final String ZTABLE_NAME = "ztables"; - private static final int COMMAND_PROCESSED_ERRORED = -1; - private static final int COMMAND_PROCESSED_NONE = 0; private static final DirectBuffer EMPTY_BUFFER = new UnsafeBuffer(new byte[0]); private static final OctetsFW EMPTY_OCTETS = new OctetsFW().wrap(EMPTY_BUFFER, 0, 0); @@ -1588,62 +1586,20 @@ private void decodeCreateZtableCommand( long authorization, String statement) { - if (server.commandsProcessed == 8 || - server.commandsProcessed == COMMAND_PROCESSED_ERRORED) - { - final int length = statement.length(); - server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.CREATE_ZTABLE_COMMAND); - } - else - { - final RisingwaveBindingConfig binding = server.binding; - final CreateTable createTable = parser.parseCreateTable(statement); - - String newStatement = ""; - int progress = 0; - - if (server.commandsProcessed == 0) - { - newStatement = binding.createTopic.generate(createTable); - } - else if (server.commandsProcessed == 1) - { - newStatement = binding.createSource.generateTableSource(createTable); - } - else if (server.commandsProcessed == 2) - { - newStatement = binding.createView.generate(createTable); - } - else if (server.commandsProcessed == 3) - { - newStatement = binding.createTable.generate(createTable); - } - else if (server.commandsProcessed == 4) - { - newStatement = binding.grantResource.generate("TABLE", createTable.schema(), createTable.name(), server.user); - } - else if (server.commandsProcessed == 5) - { - newStatement = binding.createSink.generateInto(createTable); - } - else if (server.commandsProcessed == 6) - { - newStatement = binding.createSink.generateOutgress(createTable); - } - else if (server.commandsProcessed == 7) - { - newStatement = binding.catalogInsert.generate(ZTABLE_NAME, createTable.name(), statement); - } + final CreateTable command = parser.parseCreateTable(statement); - statementBuffer.putBytes(progress, newStatement.getBytes()); - progress += newStatement.length(); - - final RisingwaveRouteConfig route = - server.binding.resolve(authorization, statementBuffer, 0, progress); + RisingwaveBindingConfig binding = server.binding; - final PgsqlClient client = server.systemClientsByRouteId.get(route.id); - client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); - } + RisingwaveCreateZtableMacro machine = new RisingwaveCreateZtableMacro( + binding.bootstrapServer, + binding.schemaRegistry, + config.kafkaScanStartupTimestampMillis(), + RisingwaveBindingConfig.INTERNAL_SCHEMA, + server.user, + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); } private void decodeCreateStreamCommand( @@ -1652,39 +1608,19 @@ private void decodeCreateStreamCommand( long authorization, 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 CreateStream createStream = parser.parseCreateStream(statement); + final CreateStream command = parser.parseCreateStream(statement); - String newStatement = ""; - int progress = 0; - - if (server.commandsProcessed == 0) - { - newStatement = binding.createTopic.generate(createStream); - } - else if (server.commandsProcessed == 1) - { - newStatement = binding.createSource.generateStreamSource(createStream); - } - - statementBuffer.putBytes(progress, newStatement.getBytes()); - progress += newStatement.length(); - - final RisingwaveRouteConfig route = - server.binding.resolve(authorization, statementBuffer, 0, progress); + RisingwaveBindingConfig binding = server.binding; - final PgsqlClient client = server.systemClientsByRouteId.get(route.id); - client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); - client.typeCommand = ignoreFlushCommand; - } + RisingwaveCreateStreamMacro machine = new RisingwaveCreateStreamMacro( + binding.bootstrapServer, + binding.schemaRegistry, + RisingwaveBindingConfig.INTERNAL_SCHEMA, + server.user, + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); } private void decodeCreateZviewCommand( @@ -2119,53 +2055,6 @@ private void showColumnFlushCommand( server.doAppFlush(traceId, authorization, descriptionEx); } - private void rowDataCommand( - PgsqlServer server, - PgsqlClient client, - long traceId, - long authorization, - long routedId, - int flags, - DirectBuffer buffer, - int offset, - int limit, - OctetsFW extension) - { - int progress = offset; - - final List columnDescriptions = server.columnDescriptions; - - if ((flags & FLAGS_INIT) != 0x00) - { - columnDescriptions.clear(); - progress += Short.BYTES; - } - - column: - while (progress < limit) - { - String32FW column = columnRO.tryWrap(buffer, progress, limit); - - if (column == null) - { - break column; - } - - columnDescriptions.add(column.asString()); - - progress = column.limit(); - } - - int nameIndex = server.columnTypes.indexOf("Name"); - int typeIndex = server.columnTypes.indexOf("Type"); - int isHiddenIndex = server.columnTypes.indexOf("Is Hidden"); - - if ("false".equals(columnDescriptions.get(isHiddenIndex))) - { - server.columns.put(columnDescriptions.get(nameIndex), columnDescriptions.get(typeIndex)); - } - } - private void showColumnDataCommand( PgsqlServer server, PgsqlClient client, From da9a880552df5ec491f4c6bb00c6d983e6ba9c8e Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 16 Dec 2024 12:28:09 -0800 Subject: [PATCH 059/104] WIP all marros --- .../macro/RisingwaveAlterStreamMacro.java | 89 ++++ .../macro/RisingwaveAlterZtableMacro.java | 135 +++++ .../macro/RisingwaveCreateFunctionMacro.java | 198 ++++++++ .../macro/RisingwaveCreateStreamMacro.java | 2 +- .../macro/RisingwaveDropStreamMacro.java | 113 +++++ .../macro/RisingwaveDropZtableMacro.java | 296 +++++++++++ .../macro/RisingwaveDropZviewMacro.java | 187 +++++++ .../macro/RisingwaveShowCommandMacro.java | 150 ++++++ .../macro/RisingwaveUnknownMacro.java | 79 +++ .../stream/RisingwaveProxyFactory.java | 477 +++--------------- 10 files changed, 1321 insertions(+), 405 deletions(-) create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java new file mode 100644 index 0000000000..2f0485e99e --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java @@ -0,0 +1,89 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; +import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; + +public class RisingwaveAlterStreamMacro +{ + private final StringBuilder fieldBuilder; + private final String sql; + private final Alter command; + private final RisingwaveMacroHandler handler; + + public RisingwaveAlterStreamMacro( + String sql, + Alter command, + RisingwaveMacroHandler handler) + { + this.sql = sql; + this.command = command; + this.handler = handler; + this.fieldBuilder = new StringBuilder(); + } + + public RisingwaveMacroState start( + long traceId, + long authorization) + { + AlterTopicState state = new AlterTopicState(); + state.doExecute(traceId, authorization); + + return state; + } + + private class AlterTopicState implements RisingwaveMacroState + { + private final String sqlFormat = """ + ALTER TOPIC %s %s;\u0000"""; + private final String fieldFormat = "%s COLUMN %s %s, "; + + private void doExecute( + long traceId, + long authorization) + { + String topic = command.name(); + fieldBuilder.setLength(0); + + command.expressions() + .forEach(c -> fieldBuilder.append( + String.format(fieldFormat, c.operation().name(), c.columnName(), c.columnType()))); + + fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); + + String sqlQuery = String.format(sqlFormat, topic, fieldBuilder); + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onCompletion( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.ALTER_ZTABLE_COMMAND); + return this; + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doReady(traceId, authorization, sql.length()); + return this; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java new file mode 100644 index 0000000000..795ea29a7f --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java @@ -0,0 +1,135 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; +import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; + +public class RisingwaveAlterZtableMacro +{ + private final StringBuilder fieldBuilder; + private final String sql; + private final Alter command; + private final RisingwaveMacroHandler handler; + + public RisingwaveAlterZtableMacro( + String sql, + Alter command, + RisingwaveMacroHandler handler) + { + this.sql = sql; + this.command = command; + this.handler = handler; + this.fieldBuilder = new StringBuilder(); + } + + public RisingwaveMacroState start( + long traceId, + long authorization) + { + AlterTopicState state = new AlterTopicState(); + state.doExecute(traceId, authorization); + + return state; + } + + private class AlterTopicState implements RisingwaveMacroState + { + private final String sqlFormat = """ + ALTER TOPIC %s %s;\u0000"""; + private final String fieldFormat = "%s COLUMN %s %s, "; + + private void doExecute( + long traceId, + long authorization) + { + String topic = command.name(); + fieldBuilder.setLength(0); + + command.expressions() + .forEach(c -> fieldBuilder.append( + String.format(fieldFormat, c.operation().name(), c.columnName(), c.columnType()))); + + fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); + + String sqlQuery = String.format(sqlFormat, topic, fieldBuilder); + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + AlterTableState state = new AlterTableState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private class AlterTableState implements RisingwaveMacroState + { + private final String sqlFormat = """ + ALTER TABLE %s %s;\u0000"""; + private final String fieldFormat = "%s COLUMN %s %s, "; + + private void doExecute( + long traceId, + long authorization) + { + String topic = command.name(); + fieldBuilder.setLength(0); + + command.expressions() + .forEach(c -> fieldBuilder.append( + String.format(fieldFormat, c.operation().name(), c.columnName(), c.columnType()))); + + fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); + + String sqlQuery = String.format(sqlFormat, topic, fieldBuilder); + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onCompletion( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.ALTER_STREAM_COMMAND); + return this; + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doReady(traceId, authorization, sql.length()); + return this; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java new file mode 100644 index 0000000000..7625a656a9 --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java @@ -0,0 +1,198 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; + +import java.util.List; +import java.util.Map; + +import org.agrona.collections.Object2ObjectHashMap; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionArgument; +import io.aklivity.zilla.runtime.binding.risingwave.config.RisingwaveUdfConfig; +import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; + +public class RisingwaveCreateFunctionMacro +{ + private static final String FUNCTION_NAME = "FUNCTION"; + + private final String javaServer; + private final String pythonServer; + + private final String systemSchema; + private final String user; + private final String sql; + private final Function command; + private final RisingwaveMacroHandler handler; + private final StringBuilder fieldBuilder; + + public RisingwaveCreateFunctionMacro( + List udfs, + String systemSchema, + String user, + String sql, + Function command, + RisingwaveMacroHandler handler) + { + String javaServer = null; + String pythonServer = null; + + if (udfs != null && !udfs.isEmpty()) + { + for (RisingwaveUdfConfig udf : udfs) + { + if (udf.language.equalsIgnoreCase("java")) + { + javaServer = udf.server; + } + else if (udf.language.equalsIgnoreCase("python")) + { + pythonServer = udf.server; + } + } + } + + this.javaServer = javaServer; + this.pythonServer = pythonServer; + this.systemSchema = systemSchema; + this.user = user; + this.sql = sql; + this.command = command; + this.handler = handler; + this.fieldBuilder = new StringBuilder(); + } + + + public RisingwaveMacroState start( + long traceId, + long authorization) + { + CreateFunctionState state = new CreateFunctionState(); + state.doExecute(traceId, authorization); + + return state; + } + + private class CreateFunctionState implements RisingwaveMacroState + { + private final String sqlFormat = """ + CREATE FUNCTION %s(%s) + RETURNS %s + AS %s + LANGUAGE %s + USING LINK '%s';\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String functionName = command.name(); + String asFunction = command.asFunction(); + List arguments = command.arguments(); + List tables = command.tables(); + + fieldBuilder.setLength(0); + + arguments + .forEach(arg -> fieldBuilder.append( + arg.name() != null + ? "%s %s, ".formatted(arg.name(), arg.type()) + : "%s, ".formatted(arg.type()))); + + if (!arguments.isEmpty()) + { + fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); + } + String funcArguments = fieldBuilder.toString(); + + String language = command.language() != null ? command.language() : "java"; + String server = "python".equalsIgnoreCase(language) ? pythonServer : javaServer; + + String returnType = command.returnType(); + if (!tables.isEmpty()) + { + 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(); + } + + String sqlQuery = sqlFormat.formatted(functionName, funcArguments, returnType, asFunction, language, server); + + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + GrantResourceState state = new GrantResourceState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private class GrantResourceState implements RisingwaveMacroState + { + private final String sqlFormat = """ + GRANT ALL PRIVILEGES ON %s %s.%s TO %s;\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, FUNCTION_NAME, command.schema(), command.name(), user); + + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onCompletion( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.CREATE_FUNCTION_COMMAND); + return this; + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doReady(traceId, authorization, sql.length()); + return this; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java index d61a613b59..061f1231e6 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java @@ -1,11 +1,11 @@ package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; +import java.util.List; import java.util.Map; import org.agrona.collections.Object2ObjectHashMap; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java new file mode 100644 index 0000000000..401cd84050 --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java @@ -0,0 +1,113 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; +import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; + +public class RisingwaveDropStreamMacro +{ + private final String sql; + private final Drop command; + private final RisingwaveMacroHandler handler; + + public RisingwaveDropStreamMacro( + String sql, + Drop command, + RisingwaveMacroHandler handler) + { + this.sql = sql; + this.command = command; + this.handler = handler; + } + + public RisingwaveMacroState start( + long traceId, + long authorization) + { + DropTopicState state = new DropTopicState(); + state.doExecute(traceId, authorization); + + return state; + } + + private class DropTopicState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DROP TOPIC %s;\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, command.name()); + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + DropSourceState state = new DropSourceState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private class DropSourceState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DROP SOURCE %s;\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, command.name()); + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onCompletion( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.DROP_STREAM_COMMAND); + return this; + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doReady(traceId, authorization, sql.length()); + return this; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java new file mode 100644 index 0000000000..5ddd77d006 --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java @@ -0,0 +1,296 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; +import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; + +public class RisingwaveDropZtableMacro +{ + private final String systemSchema; + private final String sql; + private final Drop command; + private final RisingwaveMacroHandler handler; + + public RisingwaveDropZtableMacro( + String systemSchema, + String sql, + Drop command, + RisingwaveMacroHandler handler) + { + this.systemSchema = systemSchema; + this.sql = sql; + this.command = command; + this.handler = handler; + } + + public RisingwaveMacroState start( + long traceId, + long authorization) + { + DropTopicState state = new DropTopicState(); + state.doExecute(traceId, authorization); + + return state; + } + + private class DropTopicState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DROP TOPIC %s;\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, command.name()); + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + DropSinkState state = new DropSinkState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private class DropSinkState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DROP SINK %s.%s_sink;\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, systemSchema, command.name()); + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + DropTableSinkState state = new DropTableSinkState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private class DropTableSinkState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DROP SINK %s.%s_view_sink;\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, systemSchema, command.name()); + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + DropTableState state = new DropTableState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private class DropTableState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DROP TABLE %s;\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, systemSchema, command.name()); + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + DeleteFromCatalogState state = new DeleteFromCatalogState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private class DeleteFromCatalogState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DELETE FROM %s.ztables WHERE name = '%s';\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, systemSchema, command.name()); + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + DropMaterializedViewState state = new DropMaterializedViewState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private class DropMaterializedViewState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DROP MATERIALIZED VIEW %s_view;\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, command.name()); + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + DropSourceState state = new DropSourceState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private class DropSourceState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DROP SOURCE %s_source;\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, command.name()); + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onCompletion( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.DROP_ZTABLE_COMMAND); + return this; + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doReady(traceId, authorization, sql.length()); + return this; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java new file mode 100644 index 0000000000..03128adbcf --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java @@ -0,0 +1,187 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; +import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; + +public class RisingwaveDropZviewMacro +{ + private final String systemSchema; + private final String sql; + private final Drop command; + private final RisingwaveMacroHandler handler; + + public RisingwaveDropZviewMacro( + String systemSchema, + String sql, + Drop command, + RisingwaveMacroHandler handler) + { + this.systemSchema = systemSchema; + this.sql = sql; + this.command = command; + this.handler = handler; + } + + public RisingwaveMacroState start( + long traceId, + long authorization) + { + DropTopicState state = new DropTopicState(); + state.doExecute(traceId, authorization); + + return state; + } + + private class DropTopicState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DROP TOPIC %s;\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, command.name()); + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + DropSinkState state = new DropSinkState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private class DropSinkState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DROP SINK %s.%s_sink;\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, systemSchema, command.name()); + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + DeleteFromCatalogState state = new DeleteFromCatalogState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private class DeleteFromCatalogState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DELETE FROM %s.zviews WHERE name = '%s';\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, systemSchema, command.name()); + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + DropMaterializedViewState state = new DropMaterializedViewState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private class DropMaterializedViewState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DROP MATERIALIZED VIEW %s_view;\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, command.name()); + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onCompletion( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.DROP_ZTABLE_COMMAND); + return this; + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doReady(traceId, authorization, sql.length()); + return this; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java new file mode 100644 index 0000000000..4708e090e7 --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java @@ -0,0 +1,150 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; + +import java.nio.ByteOrder; + +import org.agrona.DirectBuffer; + +import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.OctetsFW; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.String32FW; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlDataExFW; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFormat; + +public class RisingwaveShowCommandMacro +{ + private final String systemSchema; + private final String user; + private final String sql; + private final String command; + private final RisingwaveMacroHandler handler; + + public RisingwaveShowCommandMacro( + String systemSchema, + String user, + String sql, + String command, + RisingwaveMacroHandler handler) + { + this.systemSchema = systemSchema; + this.user = user; + this.sql = sql; + this.command = command; + this.handler = handler; + } + + + public RisingwaveMacroState start( + long traceId, + long authorization) + { + ShowCommandState state = new ShowCommandState(); + state.doExecute(traceId, authorization); + + return state; + } + + private class ShowCommandState implements RisingwaveMacroState + { + private final String sqlFormat = """ + SELECT * FROM zb_catalog.%s;\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, command.toLowerCase()); + + handler.doExecute(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onRow( + long traceId, + long authorization, + long routedId, + int flags, + DirectBuffer buffer, + int offset, + int limit, + OctetsFW extension) + { + String32FW column = columnRO.tryWrap(buffer, progress, limit); + + if (column != null) + { + PgsqlDataExFW dataEx = dataExRW.wrap(extBuffer, 0, extBuffer.capacity()) + .typeId(pgsqlTypeId) + .row(q -> q.deferred(0)) + .build(); + + final int length = column.sizeof(); + + int statementProgress = 0; + statementBuffer.putShort(statementProgress, (short) 1, ByteOrder.BIG_ENDIAN); + statementProgress += Short.BYTES; + statementBuffer.putBytes(statementProgress, column.buffer(), column.offset(), length); + statementProgress += length; + + server.doAppData(client, routedId, traceId, authorization, flags, + statementBuffer, 0, statementProgress, dataEx); + } + } + + @Override + public RisingwaveMacroState onType( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + PgsqlFlushExFW descriptionEx = flushExRW.wrap(extBuffer, 0, extBuffer.capacity()) + .typeId(pgsqlTypeId) + .type(t -> t + .columns(c -> c + .item(s -> s + .name("Name\u0000") + .tableOid(0) + .index((short) 0) + .typeOid(701) + .length((short) 4) + .modifier(-1) + .format(f -> f.set(PgsqlFormat.TEXT)) + ))) + .build(); + + handler.doAppFlush(traceId, authorization, descriptionEx); + + return this; + } + + @Override + public RisingwaveMacroState onCompletion( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.SHOW_COMMAND); + return this; + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doReady(traceId, authorization, sql.length()); + return this; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java new file mode 100644 index 0000000000..b49b38533b --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java @@ -0,0 +1,79 @@ +package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; + +import java.util.Map; + +import org.agrona.collections.Object2ObjectHashMap; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; +import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; + +public class RisingwaveUnknownMacro +{ + private final String systemSchema; + private final String user; + private final String sql; + private final RisingwaveMacroHandler handler; + + public RisingwaveUnknownMacro( + String systemSchema, + String user, + String sql, + RisingwaveMacroHandler handler) + { + this.systemSchema = systemSchema; + this.user = user; + this.sql = sql; + this.handler = handler; + } + + + public RisingwaveMacroState start( + long traceId, + long authorization) + { + UnknownState state = new UnknownState(); + state.doExecute(traceId, authorization); + + return state; + } + + private class UnknownState implements RisingwaveMacroState + { + private void doExecute( + long traceId, + long authorization) + { + handler.doExecute(traceId, authorization, sql); + } + + @Override + public RisingwaveMacroState onCompletion( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + return this; + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doReady(traceId, authorization, sql.length()); + return this; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } +} 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 85ab66a0b2..a06787c904 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 @@ -47,11 +47,18 @@ 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.macro.RisingwaveAlterZtableMacro; +import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateFunctionMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateStreamMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZtableMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZviewMacro; +import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveDropStreamMacro; +import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveDropZtableMacro; +import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveDropZviewMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveMacroHandler; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveMacroState; +import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveShowCommandMacro; +import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveUnknownMacro; 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; @@ -142,15 +149,6 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory private final Long2ObjectHashMap bindings; private final int pgsqlTypeId; - private final PgsqlFlushCommand showColumnFlushCommand = this::showColumnFlushCommand; - private final PgsqlFlushCommand typeFlushCommand = this::typeFlushCommand; - private final PgsqlFlushCommand proxyFlushCommand = this::proxyFlushCommand; - private final PgsqlFlushCommand ignoreFlushCommand = this::ignoreFlushCommand; - - private final PgsqlDataCommand proxyDataCommand = this::proxyDataCommand; - private final PgsqlDataCommand rowDataCommand = this::rowDataCommand; - private final PgsqlDataCommand showColumnDataCommand = this::showColumnDataCommand; - private final Object2ObjectHashMap clientTransforms; { Object2ObjectHashMap clientTransforms = @@ -564,25 +562,6 @@ private void onCommandCompleted( doAppWindow(traceId, authorization); } - private void onQueryReady( - long traceId, - long authorization, - PgsqlFlushExFW pgsqlFlushEx) - { - PgsqlStatus pgsqlStatus = pgsqlFlushEx.ready().status().get(); - if (pgsqlStatus == PgsqlStatus.IDLE) - { - commandsProcessed = commandsProcessed != COMMAND_PROCESSED_ERRORED - ? commandsProcessed + 1 - : COMMAND_PROCESSED_ERRORED; - doParseQuery(traceId, authorization); - } - else - { - cleanup(traceId, authorization); - } - } - private void doAppBegin( long traceId, long authorization) @@ -975,7 +954,7 @@ private void onAppData( final OctetsFW extension = data.extension(); final OctetsFW payload = data.payload(); - dataCommand.handle(server, this, routedId, traceId, authorization, flags, + server.state.o(server, this, routedId, traceId, authorization, flags, payload.buffer(), payload.offset(), payload.limit(), extension); } } @@ -1112,8 +1091,6 @@ private void onAppErrorFlush( PgsqlFlushExFW flushEx) { messageOffset = 0; - server.doAppFlush(traceId, authorization, flushEx); - server.commandsProcessed = COMMAND_PROCESSED_ERRORED; server.macroState.onError(traceId, authorization, flushEx); } @@ -1650,39 +1627,18 @@ private void decodeCreateFunctionCommand( long authorization, String statement) { - if (server.commandsProcessed == 2 || - 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 Function function = parser.parseCreateFunction(statement); - - String newStatement = ""; - int progress = 0; + final Function command = parser.parseCreateFunction(statement); - if (server.commandsProcessed == 0) - { - newStatement = binding.createFunction.generate(function); - } - else if (server.commandsProcessed == 1) - { - newStatement = binding.grantResource.generate("FUNCTION", function.schema(), function.name(), server.user); - } - - statementBuffer.putBytes(progress, newStatement.getBytes()); - progress += newStatement.length(); - - final RisingwaveRouteConfig route = - server.binding.resolve(authorization, statementBuffer, 0, progress); + RisingwaveBindingConfig binding = server.binding; - final PgsqlClient client = server.systemClientsByRouteId.get(route.id); - client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); - client.typeCommand = ignoreFlushCommand; - } + RisingwaveCreateFunctionMacro machine = new RisingwaveCreateFunctionMacro( + binding.options.udfs, + RisingwaveBindingConfig.INTERNAL_SCHEMA, + server.user, + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); } private void decodeAlterZtableCommand( @@ -1691,10 +1647,9 @@ private void decodeAlterZtableCommand( long authorization, String statement) { - final RisingwaveBindingConfig binding = server.binding; - final Alter alter = parser.parseAlterTable(statement); + final Alter command = parser.parseAlterTable(statement); - boolean supportedOperation = alter.expressions().stream() + boolean supportedOperation = command.expressions().stream() .noneMatch(c -> c.operation() != Operation.ADD); if (!supportedOperation) @@ -1702,35 +1657,13 @@ private void decodeAlterZtableCommand( decodeUnsupportedCommand(server, traceId, authorization, RisingwaveCompletionCommand.ALTER_ZTABLE_COMMAND, statement, "ALTER ZTABLE only supports ADD"); } - else if (server.commandsProcessed == 2 || - server.commandsProcessed == COMMAND_PROCESSED_ERRORED) - { - final int length = statement.length(); - server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.ALTER_ZTABLE_COMMAND); - } else { - String newStatement = ""; - int progress = 0; - - if (server.commandsProcessed == 0) - { - newStatement = binding.alterTopic.generate(alter); - } - else if (server.commandsProcessed == 1) - { - newStatement = binding.alterTable.generate(alter); - } - - statementBuffer.putBytes(progress, newStatement.getBytes()); - progress += newStatement.length(); - - final RisingwaveRouteConfig route = - server.binding.resolve(authorization, statementBuffer, 0, progress); - - final PgsqlClient client = server.systemClientsByRouteId.get(route.id); - client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); - client.typeCommand = ignoreFlushCommand; + RisingwaveAlterZtableMacro machine = new RisingwaveAlterZtableMacro( + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); } } @@ -1740,10 +1673,9 @@ private void decodeAlterStreamCommand( long authorization, String statement) { - final RisingwaveBindingConfig binding = server.binding; - final Alter alter = parser.parseAlterStream(statement); + final Alter command = parser.parseAlterStream(statement); - boolean supportedOperation = alter.expressions().stream() + boolean supportedOperation = command.expressions().stream() .noneMatch(c -> c.operation() != Operation.ADD); if (!supportedOperation) @@ -1751,26 +1683,13 @@ private void decodeAlterStreamCommand( decodeUnsupportedCommand(server, traceId, authorization, RisingwaveCompletionCommand.ALTER_STREAM_COMMAND, statement, "ALTER STREAM only supports ADD"); } - else if (server.commandsProcessed == 1 || - server.commandsProcessed == COMMAND_PROCESSED_ERRORED) + else { - final int length = statement.length(); - server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.ALTER_STREAM_COMMAND); - } - else if (server.commandsProcessed == 0) - { - int progress = 0; - String newStatement = binding.alterTopic.generate(alter); - - statementBuffer.putBytes(progress, newStatement.getBytes()); - progress += newStatement.length(); - - final RisingwaveRouteConfig route = - server.binding.resolve(authorization, statementBuffer, 0, progress); - - final PgsqlClient client = server.systemClientsByRouteId.get(route.id); - client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); - client.typeCommand = ignoreFlushCommand; + RisingwaveAlterZtableMacro machine = new RisingwaveAlterZtableMacro( + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); } } @@ -1784,10 +1703,11 @@ private void decodeUnsupportedCommand( { server.doCommandError(traceId, authorization, SEVERITY_ERROR, CODE_XX000, "Unable to execute command because %s\u0000".formatted(reason)); - server.commandsProcessed = COMMAND_PROCESSED_ERRORED; + + server.macroHandler.doCompletion(traceId, authorization, command); final int length = statement.length(); - server.onCommandCompleted(traceId, authorization, length, command); + server.onCommandCompleted(traceId, authorization, length); } private void decodeDropZtableCommand( @@ -1796,58 +1716,14 @@ private void decodeDropZtableCommand( long authorization, String statement) { - if (server.commandsProcessed == 7) - { - final int length = statement.length(); - server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.DROP_ZTABLE_COMMAND); - } - else - { - final RisingwaveBindingConfig binding = server.binding; - final Drop table = parser.parseDrop(statement).get(0); - - String newStatement = ""; - int progress = 0; + // TODO: Enhance multiple streams + final Drop command = parser.parseDrop(statement).get(0); - if (server.commandsProcessed == 0) - { - newStatement = binding.dropTopic.generate(table); - } - else if (server.commandsProcessed == 1) - { - newStatement = binding.dropSink.generate(table); - } - else if (server.commandsProcessed == 2) - { - newStatement = binding.dropSink.generate(table, "_view_sink"); - } - else if (server.commandsProcessed == 3) - { - newStatement = binding.dropTable.generate(table); - } - else if (server.commandsProcessed == 4) - { - newStatement = binding.catalogDelete.generate(ZTABLE_NAME, table); - } - else if (server.commandsProcessed == 5) - { - newStatement = binding.dropMaterializedView.generate(table, "_view"); - } - else if (server.commandsProcessed == 6) - { - newStatement = binding.dropSource.generate(table, "_source"); - } - - statementBuffer.putStringWithoutLengthUtf8(progress, newStatement); - progress += newStatement.length(); - - final RisingwaveRouteConfig route = - server.binding.resolve(authorization, statementBuffer, 0, progress); - - final PgsqlClient client = server.systemClientsByRouteId.get(route.id); - client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); - client.typeCommand = ignoreFlushCommand; - } + RisingwaveDropStreamMacro machine = new RisingwaveDropStreamMacro( + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); } private void decodeDropStreamCommand( @@ -1856,38 +1732,15 @@ private void decodeDropStreamCommand( long authorization, String statement) { - if (server.commandsProcessed == 2) - { - final int length = statement.length(); - server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.DROP_STREAM_COMMAND); - } - else - { - final RisingwaveBindingConfig binding = server.binding; - final Drop stream = parser.parseDrop(statement).get(0); - - String newStatement = ""; - int progress = 0; - - if (server.commandsProcessed == 0) - { - newStatement = binding.dropTopic.generate(stream); - } - else if (server.commandsProcessed == 1) - { - newStatement = binding.dropSource.generate(stream); - } + // TODO: Enhance multiple streams + final Drop command = parser.parseDrop(statement).get(0); - statementBuffer.putStringWithoutLengthUtf8(progress, newStatement); - progress += newStatement.length(); - - final RisingwaveRouteConfig route = - server.binding.resolve(authorization, statementBuffer, 0, progress); - - final PgsqlClient client = server.systemClientsByRouteId.get(route.id); - client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); - client.typeCommand = ignoreFlushCommand; - } + RisingwaveDropZtableMacro machine = new RisingwaveDropZtableMacro( + RisingwaveBindingConfig.INTERNAL_SCHEMA, + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); } private void decodeDropZviewCommand( @@ -1896,47 +1749,15 @@ private void decodeDropZviewCommand( long authorization, String statement) { - if (server.commandsProcessed == 4) - { - final int length = statement.length(); - server.onCommandCompleted(traceId, authorization, length, - RisingwaveCompletionCommand.DROP_ZVIEW_COMMAND); - } - else - { - final RisingwaveBindingConfig binding = server.binding; - final Drop view = parser.parseDrop(statement).get(0); - - String newStatement = ""; - int progress = 0; + // TODO: Enhance multiple streams + final Drop command = parser.parseDrop(statement).get(0); - if (server.commandsProcessed == 0) - { - newStatement = binding.dropTopic.generate(view); - } - else if (server.commandsProcessed == 1) - { - newStatement = binding.dropSink.generate(view); - } - else if (server.commandsProcessed == 2) - { - newStatement = binding.catalogDelete.generate(ZVIEW_NAME, view); - } - else if (server.commandsProcessed == 3) - { - newStatement = binding.dropMaterializedView.generate(view); - } - - statementBuffer.putStringWithoutLengthUtf8(progress, newStatement); - progress += newStatement.length(); - - final RisingwaveRouteConfig route = - server.binding.resolve(authorization, statementBuffer, 0, progress); - - final PgsqlClient client = server.systemClientsByRouteId.get(route.id); - client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); - client.completionCommand = ignoreFlushCommand; - } + RisingwaveDropZviewMacro machine = new RisingwaveDropZviewMacro( + RisingwaveBindingConfig.INTERNAL_SCHEMA, + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); } private void decodeShowCommand( @@ -1945,30 +1766,15 @@ private void decodeShowCommand( long authorization, String statement) { - if (server.commandsProcessed == 1) - { - final int length = statement.length(); - server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.SHOW_COMMAND); - } - else - { - final RisingwaveBindingConfig binding = server.binding; - final String type = parser.parseShow(statement); + final String command = parser.parseShow(statement); - int progress = 0; - String newStatement = binding.showType.generate(type); - - statementBuffer.putStringWithoutLengthUtf8(progress, newStatement); - progress += newStatement.length(); - - final RisingwaveRouteConfig route = - server.binding.resolve(authorization, statementBuffer, 0, progress); - - final PgsqlClient client = server.systemClientsByRouteId.get(route.id); - client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); - client.typeCommand = showColumnFlushCommand; - client.dataCommand = showColumnDataCommand; - } + RisingwaveShowCommandMacro machine = new RisingwaveShowCommandMacro( + RisingwaveBindingConfig.INTERNAL_SCHEMA, + server.user, + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); } private void decodeUnknownCommand( @@ -1977,123 +1783,12 @@ private void decodeUnknownCommand( long authorization, String statement) { - final int length = statement.length(); - - if (server.commandsProcessed == 1 || - server.commandsProcessed == COMMAND_PROCESSED_ERRORED) - { - server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.UNKNOWN_COMMAND); - } - else - { - statementBuffer.putBytes(0, statement.getBytes()); - - final RisingwaveRouteConfig route = - server.binding.resolve(authorization, statementBuffer, 0, length); - - final PgsqlClient client = server.userClient; - client.doPgsqlQuery(traceId, authorization, statementBuffer, 0, length); - client.completionCommand = proxyFlushCommand; - } - } - - private void ignoreFlushCommand( - PgsqlServer server, - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - //NOOP - } - - private void proxyFlushCommand( - PgsqlServer server, - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - server.doAppFlush(traceId, authorization, flushEx); - } - - private void typeFlushCommand( - PgsqlServer server, - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - server.columnTypes.clear(); - flushEx.type().columns() - .forEach(c -> - { - String name = c.name().asString(); - name = name.substring(0, name.length() - 1); - server.columnTypes.add(name); - }); - } - - private void showColumnFlushCommand( - PgsqlServer server, - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - PgsqlFlushExFW descriptionEx = flushExRW.wrap(extBuffer, 0, extBuffer.capacity()) - .typeId(pgsqlTypeId) - .type(t -> t - .columns(c -> c - .item(s -> s - .name("Name\u0000") - .tableOid(0) - .index((short) 0) - .typeOid(701) - .length((short) 4) - .modifier(-1) - .format(f -> f.set(PgsqlFormat.TEXT)) - ))) - .build(); - - server.doAppFlush(traceId, authorization, descriptionEx); - } - - private void showColumnDataCommand( - PgsqlServer server, - PgsqlClient client, - long traceId, - long authorization, - long routedId, - int flags, - DirectBuffer buffer, - int offset, - int limit, - OctetsFW extension) - { - int progress = offset; - - if ((flags & FLAGS_INIT) != 0x00) - { - progress += Short.BYTES; - } - - String32FW column = columnRO.tryWrap(buffer, progress, limit); - - if (column != null) - { - PgsqlDataExFW dataEx = dataExRW.wrap(extBuffer, 0, extBuffer.capacity()) - .typeId(pgsqlTypeId) - .row(q -> q.deferred(0)) - .build(); - - final int length = column.sizeof(); - - int statementProgress = 0; - statementBuffer.putShort(statementProgress, (short) 1, ByteOrder.BIG_ENDIAN); - statementProgress += Short.BYTES; - statementBuffer.putBytes(statementProgress, column.buffer(), column.offset(), length); - statementProgress += length; - - server.doAppData(client, routedId, traceId, authorization, flags, - statementBuffer, 0, statementProgress, dataEx); - } + RisingwaveUnknownMacro machine = new RisingwaveUnknownMacro( + RisingwaveBindingConfig.INTERNAL_SCHEMA, + server.user, + statement, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); } private void proxyDataCommand( @@ -2165,30 +1860,4 @@ void transform( long authorization, String statement); } - - @FunctionalInterface - private interface PgsqlFlushCommand - { - void handle( - PgsqlServer server, - long traceId, - long authorization, - PgsqlFlushExFW flushEx); - } - - @FunctionalInterface - private interface PgsqlDataCommand - { - void handle( - PgsqlServer server, - PgsqlClient client, - long traceId, - long authorization, - long routedId, - int flags, - DirectBuffer buffer, - int offset, - int limit, - OctetsFW extension); - } } From e8324c7cea9ccb7b45b3ed77b9c0a5adb422d047 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 16 Dec 2024 12:29:28 -0800 Subject: [PATCH 060/104] WIP remove statements --- .../config/RisingwaveBindingConfig.java | 56 ------ .../RisingwaveAlterTableTemplate.java | 39 ---- .../RisingwaveAlterTopicTemplate.java | 39 ---- .../statement/RisingwaveCommandTemplate.java | 49 ----- .../RisingwaveCreateFunctionTemplate.java | 102 ---------- ...ingwaveCreateMaterializedViewTemplate.java | 94 --------- .../RisingwaveCreateSinkTemplate.java | 96 --------- .../RisingwaveCreateSourceTemplate.java | 118 ----------- .../RisingwaveCreateTableTemplate.java | 44 ----- .../RisingwaveCreateTopicTemplate.java | 99 ---------- .../RisingwaveDeleteFromCatalogTemplate.java | 37 ---- .../statement/RisingwaveDescribeTemplate.java | 31 --- ...isingwaveDropMaterializedViewTemplate.java | 38 ---- .../statement/RisingwaveDropSinkTemplate.java | 43 ---- .../RisingwaveDropSourceTemplate.java | 38 ---- .../RisingwaveDropTableTemplate.java | 29 --- .../RisingwaveDropTopicTemplate.java | 29 --- .../RisingwaveGrantToSourceTemplate.java | 30 --- .../RisingwaveInsertIntoCatalogTemplate.java | 38 ---- .../statement/RisingwavePgsqlTypeMapping.java | 46 ----- .../statement/RisingwaveShowTypeTemplate.java | 27 --- ...singwaveCreateCreateTableTemplateTest.java | 100 ---------- .../RisingwaveCreateFunctionTemplateTest.java | 183 ------------------ ...teMaterializedCreateZviewTemplateTest.java | 96 --------- .../RisingwaveCreateSourceTemplateTest.java | 165 ---------------- 25 files changed, 1666 deletions(-) delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveAlterTableTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveAlterTopicTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCommandTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSinkTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTopicTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDeleteFromCatalogTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDescribeTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropMaterializedViewTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSinkTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSourceTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropTableTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropTopicTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveGrantToSourceTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveInsertIntoCatalogTemplate.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwavePgsqlTypeMapping.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveShowTypeTemplate.java delete mode 100644 incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateCreateTableTemplateTest.java delete mode 100644 incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplateTest.java delete mode 100644 incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedCreateZviewTemplateTest.java delete mode 100644 incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java index 2f8724d76e..d1fd0d5cb1 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveBindingConfig.java @@ -24,24 +24,6 @@ import io.aklivity.zilla.runtime.binding.risingwave.config.RisingwaveOptionsConfig; import io.aklivity.zilla.runtime.binding.risingwave.config.RisingwaveUdfConfig; import io.aklivity.zilla.runtime.binding.risingwave.internal.RisingwaveConfiguration; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveAlterTableTemplate; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveAlterTopicTemplate; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveCreateFunctionTemplate; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveCreateMaterializedViewTemplate; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveCreateSinkTemplate; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveCreateSourceTemplate; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveCreateTableTemplate; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveCreateTopicTemplate; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDeleteFromCatalogTemplate; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDescribeTemplate; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDropMaterializedViewTemplate; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDropSinkTemplate; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDropSourceTemplate; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDropTableTemplate; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveDropTopicTemplate; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveGrantToSourceTemplate; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveInsertIntoCatalogTemplate; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwaveShowTypeTemplate; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; import io.aklivity.zilla.runtime.engine.config.BindingConfig; import io.aklivity.zilla.runtime.engine.config.CatalogedConfig; @@ -57,24 +39,6 @@ public final class RisingwaveBindingConfig public final RisingwaveOptionsConfig options; public final KindConfig kind; public final List routes; - public final RisingwaveCreateTopicTemplate createTopic; - public final RisingwaveCreateMaterializedViewTemplate createView; - public final RisingwaveDescribeTemplate describeView; - public final RisingwaveCreateTableTemplate createTable; - public final RisingwaveCreateSourceTemplate createSource; - public final RisingwaveCreateSinkTemplate createSink; - public final RisingwaveCreateFunctionTemplate createFunction; - public final RisingwaveAlterTableTemplate alterTable; - public final RisingwaveAlterTopicTemplate alterTopic; - public final RisingwaveDropTableTemplate dropTable; - public final RisingwaveDropSourceTemplate dropSource; - public final RisingwaveDropTopicTemplate dropTopic; - public final RisingwaveDropMaterializedViewTemplate dropMaterializedView; - public final RisingwaveDropSinkTemplate dropSink; - public final RisingwaveInsertIntoCatalogTemplate catalogInsert; - public final RisingwaveDeleteFromCatalogTemplate catalogDelete; - public final RisingwaveGrantToSourceTemplate grantResource; - public final RisingwaveShowTypeTemplate showType; public final String bootstrapServer; public final String schemaRegistry; @@ -105,26 +69,6 @@ public RisingwaveBindingConfig( this.bootstrapServer = bootstrapServer; this.schemaRegistry = schemaRegistry; - - this.createTable = new RisingwaveCreateTableTemplate(); - this.createSource = new RisingwaveCreateSourceTemplate(bootstrapServer, - schemaRegistry, config.kafkaScanStartupTimestampMillis()); - this.createSink = new RisingwaveCreateSinkTemplate(INTERNAL_SCHEMA, bootstrapServer, schemaRegistry); - this.createTopic = new RisingwaveCreateTopicTemplate(); - this.createView = new RisingwaveCreateMaterializedViewTemplate(); - this.alterTable = new RisingwaveAlterTableTemplate(); - this.alterTopic = new RisingwaveAlterTopicTemplate(); - this.describeView = new RisingwaveDescribeTemplate(); - this.dropTopic = new RisingwaveDropTopicTemplate(); - this.dropTable = new RisingwaveDropTableTemplate(); - this.dropSource = new RisingwaveDropSourceTemplate(); - this.dropMaterializedView = new RisingwaveDropMaterializedViewTemplate(); - this.dropSink = new RisingwaveDropSinkTemplate(INTERNAL_SCHEMA); - this.createFunction = new RisingwaveCreateFunctionTemplate(options.udfs); - this.catalogInsert = new RisingwaveInsertIntoCatalogTemplate(INTERNAL_SCHEMA); - this.catalogDelete = new RisingwaveDeleteFromCatalogTemplate(INTERNAL_SCHEMA); - this.grantResource = new RisingwaveGrantToSourceTemplate(); - this.showType = new RisingwaveShowTypeTemplate(); } public RisingwaveRouteConfig resolve( diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveAlterTableTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveAlterTableTemplate.java deleted file mode 100644 index 6ae793ae4c..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveAlterTableTemplate.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2021-2024 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 io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; - -public class RisingwaveAlterTableTemplate extends RisingwaveCommandTemplate -{ - private final String sqlFormat = """ - ALTER TABLE %s %s;\u0000"""; - private final String fieldFormat = "%s COLUMN %s %s, "; - - public String generate( - Alter alter) - { - String topic = alter.name(); - fieldBuilder.setLength(0); - - alter.expressions() - .forEach(c -> fieldBuilder.append( - String.format(fieldFormat, c.operation().name(), c.columnName(), c.columnType()))); - - fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); - - return String.format(sqlFormat, topic, fieldBuilder); - } -} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveAlterTopicTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveAlterTopicTemplate.java deleted file mode 100644 index 01772ff4c9..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveAlterTopicTemplate.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2021-2024 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 io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; - -public class RisingwaveAlterTopicTemplate extends RisingwaveCommandTemplate -{ - private final String sqlFormat = """ - ALTER TOPIC %s %s;\u0000"""; - private final String fieldFormat = "%s COLUMN %s %s, "; - - public String generate( - Alter alter) - { - String topic = alter.name(); - fieldBuilder.setLength(0); - - alter.expressions() - .forEach(c -> fieldBuilder.append( - String.format(fieldFormat, c.operation().name(), c.columnName(), c.columnType()))); - - fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); - - return String.format(sqlFormat, topic, fieldBuilder); - } -} 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 deleted file mode 100644 index b2459bd3b5..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCommandTemplate.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2021-2024 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.util.Map; - -import org.agrona.collections.Object2ObjectHashMap; - - -public abstract class RisingwaveCommandTemplate -{ - //TODO: Remove after implementing zstream - protected static final String ZILLA_CORRELATION_ID_OLD = "zilla_correlation_id"; - protected static final String ZILLA_IDENTITY_OLD = "zilla_identity"; - protected static final String ZILLA_TIMESTAMP_OLD = "zilla_timestamp"; - - protected static final String ZILLA_IDENTITY = "GENERATED ALWAYS AS IDENTITY"; - protected static final String ZILLA_TIMESTAMP = "GENERATED ALWAYS AS NOW"; - - 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_IDENTITY, "INCLUDE header 'zilla:identity' AS %s\n"); - ZILLA_MAPPINGS.put(ZILLA_TIMESTAMP, "INCLUDE timestamp AS %s\n"); - } - - protected static final Map ZILLA_MAPPINGS_OLD = new Object2ObjectHashMap<>(); - static - { - ZILLA_MAPPINGS_OLD.put(ZILLA_CORRELATION_ID_OLD, "INCLUDE header 'zilla:correlation-id' AS %s\n"); - ZILLA_MAPPINGS_OLD.put(ZILLA_IDENTITY_OLD, "INCLUDE header 'zilla:identity' AS %s\n"); - ZILLA_MAPPINGS_OLD.put(ZILLA_TIMESTAMP_OLD, "INCLUDE timestamp AS %s\n"); - } -} 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 deleted file mode 100644 index 2706048100..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplate.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2021-2024 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.util.List; - -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionArgument; -import io.aklivity.zilla.runtime.binding.risingwave.config.RisingwaveUdfConfig; - -public class RisingwaveCreateFunctionTemplate extends RisingwaveCommandTemplate -{ - private final String sqlFormat = """ - CREATE FUNCTION %s(%s) - RETURNS %s - AS %s - LANGUAGE %s - USING LINK '%s';\u0000"""; - - private final String javaServer; - private final String pythonServer; - - public RisingwaveCreateFunctionTemplate( - List udfs) - { - String javaServer = null; - String pythonServer = null; - - if (udfs != null && !udfs.isEmpty()) - { - for (RisingwaveUdfConfig udf : udfs) - { - if (udf.language.equalsIgnoreCase("java")) - { - javaServer = udf.server; - } - else if (udf.language.equalsIgnoreCase("python")) - { - pythonServer = udf.server; - } - } - } - - this.javaServer = javaServer; - this.pythonServer = pythonServer; - } - - public String generate( - Function function) - { - String functionName = function.name(); - String asFunction = function.asFunction(); - List arguments = function.arguments(); - List tables = function.tables(); - - fieldBuilder.setLength(0); - - arguments - .forEach(arg -> fieldBuilder.append( - arg.name() != null - ? "%s %s, ".formatted(arg.name(), arg.type()) - : "%s, ".formatted(arg.type()))); - - if (!arguments.isEmpty()) - { - fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); - } - String funcArguments = fieldBuilder.toString(); - - String language = function.language() != null ? function.language() : "java"; - String server = "python".equalsIgnoreCase(language) ? pythonServer : javaServer; - - String returnType = function.returnType(); - if (!tables.isEmpty()) - { - 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 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/RisingwaveCreateMaterializedViewTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java deleted file mode 100644 index 5eb2bc42d0..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedViewTemplate.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2021-2024 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.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; - -public class RisingwaveCreateMaterializedViewTemplate extends RisingwaveCommandTemplate -{ - 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, %s_header::%s) as %s, "; - private final String timestampFormat = "COALESCE(%s, %s_timestamp::%s) as %s, "; - - public String generate( - CreateZview createZview) - { - String name = createZview.name(); - String select = createZview.select(); - - return String.format(sqlFormat, name, select); - } - - public String generate( - CreateTable createTable) - { - String name = createTable.name(); - - String select = "*"; - List includes = createTable.columns().stream() - .filter(column -> column.constraints().stream() - .anyMatch(ZILLA_MAPPINGS::containsKey)) - .collect(Collectors.toCollection(ArrayList::new)); - - if (!includes.isEmpty()) - { - fieldBuilder.setLength(0); - - createTable.columns() - .forEach(i -> - { - String columnName = i.name(); - String columnType = i.type().toLowerCase(); - - Optional include = i.constraints().stream() - .filter(ZILLA_MAPPINGS::containsKey) - .findFirst(); - - if (include.isPresent()) - { - final String includeName = include.get(); - if (ZILLA_TIMESTAMP.equals(includeName)) - { - fieldBuilder.append( - String.format(timestampFormat, columnName, columnName, columnType, columnName)); - } - else - { - fieldBuilder.append( - String.format(includeFormat, columnName, columnName, columnType, columnName)); - } - } - else - { - fieldBuilder.append(String.format(fieldFormat, columnName)); - } - }); - - fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); - select = fieldBuilder.toString(); - } - - return String.format(sqlFormat, "%s_view".formatted(name), "SELECT %s FROM %s_source".formatted(select, name)); - } -} 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 deleted file mode 100644 index b1e3ef4058..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSinkTemplate.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2021-2024 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.util.Map; -import java.util.Optional; - -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; - -public class RisingwaveCreateSinkTemplate extends RisingwaveCommandTemplate -{ - private final String sqlFormat = """ - CREATE SINK %s.%s_view_sink INTO %s FROM %s_view;\u0000"""; - private final String sqlKafkaFormat = """ - CREATE SINK %s.%s_sink - FROM %s - WITH ( - connector='kafka', - properties.bootstrap.server='%s', - topic='%s.%s'%s - ) FORMAT UPSERT ENCODE AVRO ( - schema.registry='%s' - ) KEY ENCODE TEXT;\u0000"""; - - private final String primaryKeyFormat = ",\n primary_key='%s'"; - - private final String schema; - private final String bootstrapServer; - private final String schemaRegistry; - - public RisingwaveCreateSinkTemplate( - String schema, - String bootstrapServer, - String schemaRegistry) - { - this.schema = schema; - this.bootstrapServer = bootstrapServer; - this.schemaRegistry = schemaRegistry; - } - - public String generateOutgress( - Map columns, - CreateZview createZview) - { - String topicSchema = createZview.schema(); - String viewName = createZview.name(); - - Optional> primaryKeyMatch = columns.entrySet().stream() - .filter(e -> "id".equalsIgnoreCase(e.getKey())) - .findFirst(); - - if (primaryKeyMatch.isEmpty()) - { - primaryKeyMatch = columns.entrySet().stream() - .filter(e -> e.getKey().toLowerCase().contains("id")) - .findFirst(); - } - - String textPrimaryKey = primaryKeyMatch.map(Map.Entry::getKey).orElse(null); - String primaryKey = textPrimaryKey != null ? primaryKeyFormat.formatted(textPrimaryKey) : ""; - - return String.format(sqlKafkaFormat, schema, viewName, viewName, bootstrapServer, - topicSchema, viewName, primaryKey, schemaRegistry); - } - - public String generateOutgress( - CreateTable createTableInfo) - { - String topicSchema = createTableInfo.schema(); - String table = createTableInfo.name(); - - return String.format(sqlKafkaFormat, schema, table, table, bootstrapServer, topicSchema, table, - primaryKeyFormat.formatted(createTableInfo.primaryKeys().stream().findFirst().get()), schemaRegistry); - } - - public String generateInto( - CreateTable createTableInfo) - { - String table = createTableInfo.name(); - - return String.format(sqlFormat, schema, 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 deleted file mode 100644 index 0e253f9bd2..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplate.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright 2021-2024 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.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; - -public class RisingwaveCreateSourceTemplate extends RisingwaveCommandTemplate -{ - private final String sqlFormat = """ - CREATE SOURCE IF NOT EXISTS %s (*)%s - WITH ( - connector='kafka', - properties.bootstrap.server='%s', - topic='%s.%s', - scan.startup.mode='latest', - scan.startup.timestamp.millis='%d' - ) FORMAT PLAIN ENCODE AVRO ( - schema.registry = '%s' - );\u0000"""; - - private final String bootstrapServer; - private final String schemaRegistry; - private final long scanStartupMil; - - public RisingwaveCreateSourceTemplate( - String bootstrapServer, - String schemaRegistry, - long scanStartupMil) - { - this.bootstrapServer = bootstrapServer; - this.schemaRegistry = schemaRegistry; - this.scanStartupMil = scanStartupMil; - } - - public String generateStreamSource( - CreateStream createStream) - { - String schema = createStream.schema(); - String table = createStream.name(); - - includeBuilder.setLength(0); - Map includes = createStream.columns().entrySet().stream() - .filter(e -> ZILLA_MAPPINGS_OLD.containsKey(e.getKey())) - .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_OLD.get(k), k))); - includeBuilder.delete(includeBuilder.length() - 1, includeBuilder.length()); - } - - return String.format(sqlFormat, table, includeBuilder, bootstrapServer, schema, table, scanStartupMil, schemaRegistry); - } - - public String generateTableSource( - CreateTable createTable) - { - String schema = createTable.schema(); - String table = createTable.name(); - String sourceName = "%s_source".formatted(table); - - includeBuilder.setLength(0); - List includes = createTable.columns().stream() - .filter(column -> column.constraints().stream() - .anyMatch(ZILLA_MAPPINGS::containsKey)) - .collect(Collectors.toCollection(ArrayList::new)); - - if (!includes.isEmpty()) - { - includeBuilder.append("\n"); - includes.forEach(i -> - { - String name = i.name(); - - i.constraints().stream() - .filter(ZILLA_MAPPINGS::containsKey) - .findFirst() - .ifPresent(c -> - { - if (ZILLA_TIMESTAMP.equals(c)) - { - includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c), "%s_timestamp".formatted(name))); - } - else - { - includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c), "%s_header".formatted(name))); - } - }); - - }); - includeBuilder.delete(includeBuilder.length() - 1, includeBuilder.length()); - } - - return String.format(sqlFormat, sourceName, includeBuilder, bootstrapServer, - schema, table, scanStartupMil, schemaRegistry); - } -} 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 deleted file mode 100644 index ea27495595..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTableTemplate.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2021-2024 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 io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; - -public class RisingwaveCreateTableTemplate extends RisingwaveCommandTemplate -{ - private final String sqlFormat = """ - CREATE TABLE IF NOT EXISTS %s (%s%s);\u0000"""; - private final String fieldFormat = "%s %s, "; - - public String generate( - CreateTable createTable) - { - String topic = createTable.name(); - String primaryKeyFormat = ", PRIMARY KEY (%s)"; - String primaryKey = !createTable.primaryKeys().isEmpty() - ? String.format(primaryKeyFormat, createTable.primaryKeys().stream().findFirst().get()) - : ""; - - fieldBuilder.setLength(0); - - createTable.columns() - .forEach(c -> fieldBuilder.append( - String.format(fieldFormat, c.name(), c.type()))); - - 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/statement/RisingwaveCreateTopicTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTopicTemplate.java deleted file mode 100644 index 739e57c80a..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateTopicTemplate.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2021-2024 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.util.Map; - -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; - -public class RisingwaveCreateTopicTemplate extends RisingwaveCommandTemplate -{ - private final String sqlFormat = """ - CREATE TOPIC IF NOT EXISTS %s (%s%s);\u0000"""; - private final String primaryKeyFormat = ", PRIMARY KEY (%s)"; - - private final StringBuilder fieldBuilder = new StringBuilder(); - private final StringBuilder primaryKeyBuilder = new StringBuilder(); - - public String generate( - CreateTable createTable) - { - String topic = createTable.name(); - String primaryKey = !createTable.primaryKeys().isEmpty() - ? String.format(primaryKeyFormat, createTable.primaryKeys().stream().findFirst().get()) - : ""; - - fieldBuilder.setLength(0); - - createTable.columns().forEach(c -> - { - fieldBuilder.append(c.name()); - fieldBuilder.append(" "); - fieldBuilder.append(c.type()); - if (!c.constraints().isEmpty()) - { - fieldBuilder.append(" "); - c.constraints().forEach(fieldBuilder::append); - } - fieldBuilder.append(", "); - }); - - fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); - - return String.format(sqlFormat, topic, fieldBuilder, primaryKey); - } - - public String generate( - CreateStream createStream) - { - String topic = createStream.name(); - - fieldBuilder.setLength(0); - - createStream.columns() - .entrySet() - .stream() - .filter(e -> !ZILLA_MAPPINGS_OLD.containsKey(e.getKey())) - .forEach(e -> fieldBuilder.append( - String.format("%s %s, ", e.getKey(), e.getValue()))); - - fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); - - return String.format(sqlFormat, topic, fieldBuilder, ""); - } - - public String generate( - CreateZview createZview, - Map columns) - { - String topic = createZview.name(); - - primaryKeyBuilder.setLength(0); - columns.keySet().forEach(k -> primaryKeyBuilder.append(k).append(", ")); - primaryKeyBuilder.delete(primaryKeyBuilder.length() - 2, primaryKeyBuilder.length()); - - String primaryKey = String.format(primaryKeyFormat, primaryKeyBuilder); - - fieldBuilder.setLength(0); - - columns.forEach((k, v) -> fieldBuilder.append(String.format("%s %s, ", k, - RisingwavePgsqlTypeMapping.typeName(v)))); - 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/statement/RisingwaveDeleteFromCatalogTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDeleteFromCatalogTemplate.java deleted file mode 100644 index 6a9a7b07ac..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDeleteFromCatalogTemplate.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2021-2024 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 io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; - -public class RisingwaveDeleteFromCatalogTemplate extends RisingwaveCommandTemplate -{ - private final String sqlFormat = """ - DELETE FROM %s.%s WHERE name = '%s';\u0000"""; - private final String schema; - - public RisingwaveDeleteFromCatalogTemplate( - String schema) - { - this.schema = schema; - } - - public String generate( - String catalog, - Drop drop) - { - return String.format(sqlFormat, schema, catalog, drop.name()); - } -} 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 deleted file mode 100644 index f29f200c6a..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDescribeTemplate.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2021-2024 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 io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; - -public class RisingwaveDescribeTemplate extends RisingwaveCommandTemplate -{ - private final String sqlFormat = """ - DESCRIBE %s;\u0000"""; - - public String generate( - CreateZview createZview) - { - String name = createZview.name(); - - return String.format(sqlFormat, name); - } -} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropMaterializedViewTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropMaterializedViewTemplate.java deleted file mode 100644 index 174aa94fb6..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropMaterializedViewTemplate.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2021-2024 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 io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; - -public class RisingwaveDropMaterializedViewTemplate extends RisingwaveCommandTemplate -{ - private final String sqlFormat = """ - DROP MATERIALIZED VIEW %s;\u0000"""; - - public String generate( - Drop drop) - { - return generate(drop, ""); - } - - public String generate( - Drop drop, - String suffix) - { - String source = "%s%s".formatted(drop.name(), suffix); - - return String.format(sqlFormat, source); - } -} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSinkTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSinkTemplate.java deleted file mode 100644 index caf291b932..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSinkTemplate.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2021-2024 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 io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; - -public class RisingwaveDropSinkTemplate extends RisingwaveCommandTemplate -{ - private final String sqlFormat = """ - DROP SINK %s.%s%s;\u0000"""; - private final String schema; - - public RisingwaveDropSinkTemplate( - String schema) - { - this.schema = schema; - } - - public String generate( - Drop drop) - { - return generate(drop, "_sink"); - } - - public String generate( - Drop drop, - String suffix) - { - return String.format(sqlFormat, schema, drop.name(), suffix); - } -} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSourceTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSourceTemplate.java deleted file mode 100644 index 0e880f291d..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropSourceTemplate.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2021-2024 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 io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; - -public class RisingwaveDropSourceTemplate extends RisingwaveCommandTemplate -{ - private final String sqlFormat = """ - DROP SOURCE %s;\u0000"""; - - public String generate( - Drop drop) - { - return generate(drop, ""); - } - - public String generate( - Drop drop, - String suffix) - { - String source = "%s%s".formatted(drop.name(), suffix); - - return String.format(sqlFormat, source); - } -} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropTableTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropTableTemplate.java deleted file mode 100644 index 05e506dc3d..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropTableTemplate.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2021-2024 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 io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; - -public class RisingwaveDropTableTemplate extends RisingwaveCommandTemplate -{ - private final String sqlFormat = """ - DROP TABLE %s;\u0000"""; - - public String generate( - Drop drop) - { - return String.format(sqlFormat, drop.name()); - } -} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropTopicTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropTopicTemplate.java deleted file mode 100644 index 0f6c9f9531..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveDropTopicTemplate.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2021-2024 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 io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; - -public class RisingwaveDropTopicTemplate extends RisingwaveCommandTemplate -{ - private final String sqlFormat = """ - DROP TOPIC %s;\u0000"""; - - public String generate( - Drop drop) - { - return String.format(sqlFormat, drop.name()); - } -} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveGrantToSourceTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveGrantToSourceTemplate.java deleted file mode 100644 index 963281df2c..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveGrantToSourceTemplate.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2021-2024 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; - -public class RisingwaveGrantToSourceTemplate extends RisingwaveCommandTemplate -{ - private final String sqlFormat = """ - GRANT ALL PRIVILEGES ON %s %s.%s TO %s;\u0000"""; - - public String generate( - String source, - String schema, - String name, - String user) - { - return String.format(sqlFormat, source, schema, name, user); - } -} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveInsertIntoCatalogTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveInsertIntoCatalogTemplate.java deleted file mode 100644 index 772b921f3d..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveInsertIntoCatalogTemplate.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2021-2024 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; - -public class RisingwaveInsertIntoCatalogTemplate extends RisingwaveCommandTemplate -{ - private final String sqlFormat = """ - INSERT INTO %s.%s (name, sql) VALUES ('%s', '%s');\u0000"""; - private final String schema; - - public RisingwaveInsertIntoCatalogTemplate( - String schema) - { - this.schema = schema; - } - - public String generate( - String catalog, - String name, - String statement) - { - statement = statement.replace("ZVIEW", "MATERIALIZED VIEW"); - statement = statement.replace("\u0000", ""); - return String.format(sqlFormat, schema, catalog, name, statement); - } -} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwavePgsqlTypeMapping.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwavePgsqlTypeMapping.java deleted file mode 100644 index 866d2eb842..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwavePgsqlTypeMapping.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2021-2024 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.util.Map; - -import org.agrona.collections.Object2ObjectHashMap; - -public final class RisingwavePgsqlTypeMapping -{ - private static final Map TYPE_MAPPINGS = new Object2ObjectHashMap<>(); - - static - { - TYPE_MAPPINGS.put("character varying", "VARCHAR"); - TYPE_MAPPINGS.put("integer", "INT"); - TYPE_MAPPINGS.put("boolean", "BOOL"); - TYPE_MAPPINGS.put("character", "CHAR"); - TYPE_MAPPINGS.put("timestamp without time zone", "TIMESTAMP"); - TYPE_MAPPINGS.put("timestamp with time zone", "TIMESTAMPZ"); - TYPE_MAPPINGS.put("double precision", "DOUBLE"); - TYPE_MAPPINGS.put("numeric", "NUMERIC"); - } - - private RisingwavePgsqlTypeMapping() - { - } - - public static String typeName( - String type) - { - return TYPE_MAPPINGS.get(type); - } -} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveShowTypeTemplate.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveShowTypeTemplate.java deleted file mode 100644 index e911054200..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveShowTypeTemplate.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2021-2024 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; - -public class RisingwaveShowTypeTemplate extends RisingwaveCommandTemplate -{ - private final String sqlFormat = """ - SELECT * FROM zb_catalog.%s;\u0000"""; - - public String generate( - String type) - { - return String.format(sqlFormat, type.toLowerCase()); - } -} diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateCreateTableTemplateTest.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateCreateTableTemplateTest.java deleted file mode 100644 index 4a4e579fad..0000000000 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateCreateTableTemplateTest.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2021-2024 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; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import org.junit.BeforeClass; -import org.junit.Ignore; -import org.junit.Test; - -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; - -public class RisingwaveCreateCreateTableTemplateTest -{ - private static RisingwaveCreateTableTemplate template; - - @BeforeClass - public static void setUp() - { - template = new RisingwaveCreateTableTemplate(); - } - - @Test - public void shouldGenerateTableWithValidTableInfo() - { - List columns = new ArrayList<>(); - columns.add(new TableColumn("id", "INT", List.of())); - columns.add(new TableColumn("name", "STRING", List.of())); - - CreateTable createTable = new CreateTable( - "public", - "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(createTable); - - assertEquals(expectedSQL, actualSQL); - } - - @Test - public void shouldGenerateTableWithoutPrimaryKey() - { - List columns = new ArrayList<>(); - columns.add(new TableColumn("id", "INT", List.of())); - columns.add(new TableColumn("name", "STRING", List.of())); - - CreateTable createTable = new CreateTable( - "public", - "test_table", - columns, - Set.of()); - String expectedSQL = """ - CREATE TABLE IF NOT EXISTS test_table (id INT, name STRING);\u0000"""; - - String actualSQL = template.generate(createTable); - - assertEquals(expectedSQL, actualSQL); - } - - @Ignore("TODO") - @Test - public void shouldGenerateTableWithMultiplePrimaryKeys() - { - List columns = new ArrayList<>(); - columns.add(new TableColumn("id", "INT", List.of())); - columns.add(new TableColumn("name", "STRING", List.of())); - - CreateTable createTable = new CreateTable( - "public", - "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(createTable); - - assertEquals(expectedSQL, actualSQL); - } -} 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 deleted file mode 100644 index 9ee286699f..0000000000 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateFunctionTemplateTest.java +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright 2021-2024 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; - -import java.util.List; - -import org.junit.BeforeClass; -import org.junit.Test; - -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionArgument; -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() - { - Function function = new Function( - "public", - "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(function); - - assertEquals(expectedSQL, actualSQL); - } - - @Test - public void shouldGenerateFunctionWithTableReturnType() - { - Function functionInfo = new Function( - "public", - "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() - { - Function functionInfo = new Function( - "public", - "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() - { - Function function = new Function( - "public", - "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(function); - - assertEquals(expectedSQL, actualSQL); - } - - @Test - public void shouldGenerateFunctionWithUnnamedArguments() - { - Function function = new Function( - "public", - "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(function); - - assertEquals(expectedSQL, actualSQL); - } - - @Test - public void shouldGenerateFunctionWithEmptyArguments() - { - Function function = new Function( - "public", - "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(function); - - assertEquals(expectedSQL, actualSQL); - } - -} diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedCreateZviewTemplateTest.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedCreateZviewTemplateTest.java deleted file mode 100644 index aabdcbc8e3..0000000000 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateMaterializedCreateZviewTemplateTest.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2021-2024 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; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import org.junit.Ignore; -import org.junit.Test; - -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; - -public class RisingwaveCreateMaterializedCreateZviewTemplateTest -{ - private final RisingwaveCreateMaterializedViewTemplate template = new RisingwaveCreateMaterializedViewTemplate(); - - @Test - public void shouldGenerateMaterializedViewWithValidViewInfo() - { - CreateZview createZview = new CreateZview("public", "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(createZview); - - assertEquals(expectedSQL, actualSQL); - } - - @Ignore("TODO") - @Test - public void shouldGenerateMaterializedViewWithValidTableInfo() - { - CreateTable createTable = new CreateTable( - "public", - "test_table", - List.of(new TableColumn("id", "INT", List.of()), - new TableColumn("name", "STRING", List.of())), - 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(createTable); - - assertEquals(expectedSQL, actualSQL); - } - - @Test - public void shouldGenerateMaterializedViewWithEmptyColumns() - { - CreateTable createTable = new CreateTable("public", "empty_table", List.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(createTable); - - assertEquals(expectedSQL, actualSQL); - } - - @Test - public void shouldGenerateMaterializedViewWithIncludes() - { - List columns = new ArrayList<>(); - columns.add(new TableColumn("id", "INT", List.of())); - columns.add(new TableColumn("zilla_correlation_id", "VARCHAR", List.of())); - columns.add(new TableColumn("zilla_identity", "VARCHAR", List.of())); - columns.add(new TableColumn("zilla_timestamp", "TIMESTAMP", List.of())); - - CreateTable createTable = new CreateTable("public", "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," + - " COALESCE(zilla_timestamp, zilla_timestamp_timestamp::varchar) as zilla_timestamp" + - " FROM test_table_source;\u0000"; - - String actualSQL = template.generate(createTable); - - 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 deleted file mode 100644 index 0781dd93ad..0000000000 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/statement/RisingwaveCreateSourceTemplateTest.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright 2021-2024 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; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.junit.BeforeClass; -import org.junit.Test; - -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; - -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() - { - CreateStream createStream = new CreateStream("public", "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='public.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(createStream); - - assertEquals(expectedSQL, actualSQL); - } - - @Test - public void shouldGenerateTableSourceWithValidTableInfoAndIncludes() - { - List columns = new ArrayList<>(); - columns.add(new TableColumn("id", "INT", List.of())); - columns.add(new TableColumn("zilla_correlation_id", "VARCHAR", List.of())); - columns.add(new TableColumn("zilla_identity", "VARCHAR", List.of())); - columns.add(new TableColumn("zilla_timestamp", "TIMESTAMP", List.of())); - - CreateTable createTable = new CreateTable( - "public", "test_table", columns, Set.of("id")); - String expectedSQL = """ - 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 zilla_timestamp_timestamp - WITH ( - connector='kafka', - properties.bootstrap.server='localhost:9092', - topic='public.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(createTable); - - assertEquals(expectedSQL, actualSQL); - } - - @Test - public void shouldGenerateStreamSourceWithEmptyColumnsReturnsSQLWithoutIncludes() - { - CreateStream createStream = new CreateStream("public", "empty_stream", Map.of()); - String expectedSQL = """ - CREATE SOURCE IF NOT EXISTS empty_stream (*) - WITH ( - connector='kafka', - properties.bootstrap.server='localhost:9092', - topic='public.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(createStream); - - 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='public.include_stream', - scan.startup.mode='latest', - scan.startup.timestamp.millis='1627846260000' - ) FORMAT PLAIN ENCODE AVRO ( - schema.registry = 'http://localhost:8081' - );\u0000"""; - CreateStream createStream = new CreateStream("public", "include_stream", columns); - - String actualSQL = template.generateStreamSource(createStream); - - assertEquals(expectedSQL, actualSQL); - } - - @Test - public void shouldGenerateTableSourceWithEmptyColumnsAndWithoutIncludes() - { - CreateTable createTable = new CreateTable("public", "empty_table", List.of(), Set.of()); - String expectedSQL = """ - CREATE SOURCE IF NOT EXISTS empty_table_source (*) - WITH ( - connector='kafka', - properties.bootstrap.server='localhost:9092', - topic='public.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(createTable); - - assertEquals(expectedSQL, actualSQL); - } -} From e5532e57e19a9db25a285df50da87e5f86865a04 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 16 Dec 2024 13:44:00 -0800 Subject: [PATCH 061/104] WIP --- .../macro/RisingwaveCreateZviewMacro.java | 1 - .../macro/RisingwaveMacroHandler.java | 16 +++- .../internal/macro/RisingwaveMacroState.java | 16 ++-- .../macro/RisingwaveShowCommandMacro.java | 54 ++---------- .../stream/RisingwaveProxyFactory.java | 84 +++++++++++++------ 5 files changed, 87 insertions(+), 84 deletions(-) diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java index 431ebb4f4a..92a608a8d6 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java @@ -10,7 +10,6 @@ import org.agrona.collections.Object2ObjectHashMap; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; -import io.aklivity.zilla.runtime.binding.risingwave.internal.statement.RisingwavePgsqlTypeMapping; import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.OctetsFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.String32FW; diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java index 47f8a97396..e015b492c3 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java @@ -1,5 +1,7 @@ package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; +import org.agrona.DirectBuffer; + import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; @@ -10,7 +12,19 @@ void doExecute( long authorization, String query); - void doRow(); + void doDescription( + long traceId, + long authorization, + String name); + + void doRow( + T client, + long traceId, + long authorization, + int flags, + DirectBuffer buffer, + int offset, + int limit); void doCompletion( long traceId, diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java index 94a366a7b1..75bc53268f 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java @@ -7,15 +7,15 @@ public interface RisingwaveMacroState { - default RisingwaveMacroState onRow( + default RisingwaveMacroState onRow( + T client, long traceId, - long authorization, - long routedId, - int flags, - DirectBuffer buffer, - int offset, - int limit, - OctetsFW extension) + long authorization, + int flags, + DirectBuffer buffer, + int offset, + int limit, + OctetsFW extension) { return this; } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java index 4708e090e7..0d5a9967b9 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java @@ -1,33 +1,23 @@ package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; -import java.nio.ByteOrder; - import org.agrona.DirectBuffer; import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.OctetsFW; -import io.aklivity.zilla.runtime.binding.risingwave.internal.types.String32FW; -import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlDataExFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFormat; public class RisingwaveShowCommandMacro { - private final String systemSchema; - private final String user; private final String sql; private final String command; private final RisingwaveMacroHandler handler; public RisingwaveShowCommandMacro( - String systemSchema, - String user, String sql, String command, RisingwaveMacroHandler handler) { - this.systemSchema = systemSchema; - this.user = user; this.sql = sql; this.command = command; this.handler = handler; @@ -59,36 +49,18 @@ private void doExecute( } @Override - public RisingwaveMacroState onRow( + public RisingwaveMacroState onRow( + T client, long traceId, long authorization, - long routedId, int flags, DirectBuffer buffer, int offset, int limit, OctetsFW extension) { - String32FW column = columnRO.tryWrap(buffer, progress, limit); - - if (column != null) - { - PgsqlDataExFW dataEx = dataExRW.wrap(extBuffer, 0, extBuffer.capacity()) - .typeId(pgsqlTypeId) - .row(q -> q.deferred(0)) - .build(); - - final int length = column.sizeof(); - - int statementProgress = 0; - statementBuffer.putShort(statementProgress, (short) 1, ByteOrder.BIG_ENDIAN); - statementProgress += Short.BYTES; - statementBuffer.putBytes(statementProgress, column.buffer(), column.offset(), length); - statementProgress += length; - - server.doAppData(client, routedId, traceId, authorization, flags, - statementBuffer, 0, statementProgress, dataEx); - } + handler.doRow(client, traceId, authorization, flags, buffer, offset, limit); + return this; } @Override @@ -97,23 +69,7 @@ public RisingwaveMacroState onType( long authorization, PgsqlFlushExFW flushEx) { - PgsqlFlushExFW descriptionEx = flushExRW.wrap(extBuffer, 0, extBuffer.capacity()) - .typeId(pgsqlTypeId) - .type(t -> t - .columns(c -> c - .item(s -> s - .name("Name\u0000") - .tableOid(0) - .index((short) 0) - .typeOid(701) - .length((short) 4) - .modifier(-1) - .format(f -> f.set(PgsqlFormat.TEXT)) - ))) - .build(); - - handler.doAppFlush(traceId, authorization, descriptionEx); - + handler.doDescription(traceId, authorization, "Name"); return this; } 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 a06787c904..9d63a69f62 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 @@ -47,6 +47,7 @@ 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.macro.RisingwaveAlterStreamMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveAlterZtableMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateFunctionMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateStreamMacro; @@ -99,7 +100,6 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory private static final String ZILLABASE_USER = "zillabase\u0000"; private static final String DEFAULT_USER = "default\u0000"; - 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 -> {}; @@ -126,6 +126,7 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory private final PgsqlBeginExFW pgsqlBeginExRO = new PgsqlBeginExFW(); private final PgsqlDataExFW pgsqlDataExRO = new PgsqlDataExFW(); private final PgsqlFlushExFW pgsqlFlushExRO = new PgsqlFlushExFW(); + private final String32FW columnRO = new String32FW(ByteOrder.BIG_ENDIAN); private final PgsqlBeginExFW.Builder beginExRW = new PgsqlBeginExFW.Builder(); private final PgsqlDataExFW.Builder dataExRW = new PgsqlDataExFW.Builder(); @@ -572,9 +573,8 @@ private void doAppBegin( state = RisingwaveState.openingReply(state); } - private void doAppData( - PgsqlClient client, - long routeId, + private void doAppData( + T client, long traceId, long authorization, int flags, @@ -583,7 +583,7 @@ private void doAppData( int limit, Flyweight extension) { - responses.add(client); + responses.add((PgsqlClient) client); final int length = limit - offset; final int reserved = length + initialPad; @@ -799,8 +799,59 @@ public void doExecute( } @Override - public void doRow() + public void doDescription( + long traceId, + long authorization, + String name) { + PgsqlFlushExFW descriptionEx = flushExRW.wrap(extBuffer, 0, extBuffer.capacity()) + .typeId(pgsqlTypeId) + .type(t -> t + .columns(c -> c + .item(s -> s + .name("%s\u0000".formatted(name)) + .tableOid(0) + .index((short) 0) + .typeOid(701) + .length((short) name.length()) + .modifier(-1) + .format(f -> f.set(PgsqlFormat.TEXT)) + ))) + .build(); + + doAppFlush(traceId, authorization, descriptionEx); + } + + @Override + public void doRow( + T client, + long traceId, + long authorization, + int flags, + DirectBuffer buffer, + int offset, + int limit) + { + String32FW column = columnRO.tryWrap(buffer, offset, limit); + + if (column != null) + { + PgsqlDataExFW dataEx = dataExRW.wrap(extBuffer, 0, extBuffer.capacity()) + .typeId(pgsqlTypeId) + .row(q -> q.deferred(0)) + .build(); + + final int length = column.sizeof(); + + int statementProgress = 0; + statementBuffer.putShort(statementProgress, (short) 1, ByteOrder.BIG_ENDIAN); + statementProgress += Short.BYTES; + statementBuffer.putBytes(statementProgress, column.buffer(), column.offset(), length); + statementProgress += length; + + doAppData(client, traceId, authorization, flags, + statementBuffer, 0, statementProgress, dataEx); + } } @Override @@ -954,7 +1005,7 @@ private void onAppData( final OctetsFW extension = data.extension(); final OctetsFW payload = data.payload(); - server.state.o(server, this, routedId, traceId, authorization, flags, + server.macroState.onRow(this, traceId, authorization, flags, payload.buffer(), payload.offset(), payload.limit(), extension); } } @@ -1685,7 +1736,7 @@ private void decodeAlterStreamCommand( } else { - RisingwaveAlterZtableMacro machine = new RisingwaveAlterZtableMacro( + RisingwaveAlterStreamMacro machine = new RisingwaveAlterStreamMacro( statement, command, server.macroHandler); @@ -1769,8 +1820,6 @@ private void decodeShowCommand( final String command = parser.parseShow(statement); RisingwaveShowCommandMacro machine = new RisingwaveShowCommandMacro( - RisingwaveBindingConfig.INTERNAL_SCHEMA, - server.user, statement, command, server.macroHandler); @@ -1791,21 +1840,6 @@ private void decodeUnknownCommand( server.macroState = machine.start(traceId, authorization); } - private void proxyDataCommand( - PgsqlServer server, - PgsqlClient client, - long traceId, - long authorization, - long routedId, - int flags, - DirectBuffer buffer, - int offset, - int limit, - OctetsFW extension) - { - server.doAppData(client, routedId, traceId, authorization, flags, buffer, offset, limit, extension); - } - public List splitStatements( String sql) { From 5546db933ba2748512f9095a11bd7c149ec027b0 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 16 Dec 2024 15:11:58 -0800 Subject: [PATCH 062/104] WIP --- .../macro/RisingwaveAlterStreamMacro.java | 20 ++++++-- .../macro/RisingwaveAlterZtableMacro.java | 20 ++++++-- .../internal/macro/RisingwaveBaseMacro.java | 34 -------------- .../macro/RisingwaveCreateFunctionMacro.java | 22 ++++++--- .../macro/RisingwaveCreateStreamMacro.java | 25 +++++++--- .../macro/RisingwaveCreateZtableMacro.java | 33 +++++++++---- .../macro/RisingwaveCreateZviewMacro.java | 33 +++++++++---- .../macro/RisingwaveDropStreamMacro.java | 22 +++++++-- .../macro/RisingwaveDropZtableMacro.java | 32 +++++++++---- .../macro/RisingwaveDropZviewMacro.java | 24 ++++++++-- .../macro/RisingwaveMacroHandler.java | 14 ++++++ .../internal/macro/RisingwaveMacroState.java | 14 ++++++ .../macro/RisingwavePgsqlTypeMapping.java | 46 +++++++++++++++++++ .../macro/RisingwaveShowCommandMacro.java | 17 ++++++- .../macro/RisingwaveUnknownMacro.java | 22 ++++++--- .../stream/RisingwaveProxyFactory.java | 26 +++++------ .../apache/avro/io/CanonicalJsonDecoder.java | 19 ++++---- .../java/org/apache/avro/io/JsonDecoder.java | 14 +++--- 18 files changed, 309 insertions(+), 128 deletions(-) delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveBaseMacro.java create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwavePgsqlTypeMapping.java diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java index 2f0485e99e..6b534ccb00 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2024 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.macro; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; @@ -22,7 +36,7 @@ public RisingwaveAlterStreamMacro( this.fieldBuilder = new StringBuilder(); } - public RisingwaveMacroState start( + public RisingwaveMacroState start( long traceId, long authorization) { @@ -32,7 +46,7 @@ public RisingwaveMacroState start( return state; } - private class AlterTopicState implements RisingwaveMacroState + private final class AlterTopicState implements RisingwaveMacroState { private final String sqlFormat = """ ALTER TOPIC %s %s;\u0000"""; @@ -55,7 +69,7 @@ private void doExecute( handler.doExecute(traceId, authorization, sqlQuery); } - @Override + @Override public RisingwaveMacroState onCompletion( long traceId, long authorization, diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java index 795ea29a7f..16f5385530 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2024 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.macro; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; @@ -22,7 +36,7 @@ public RisingwaveAlterZtableMacro( this.fieldBuilder = new StringBuilder(); } - public RisingwaveMacroState start( + public RisingwaveMacroState start( long traceId, long authorization) { @@ -32,7 +46,7 @@ public RisingwaveMacroState start( return state; } - private class AlterTopicState implements RisingwaveMacroState + private final class AlterTopicState implements RisingwaveMacroState { private final String sqlFormat = """ ALTER TOPIC %s %s;\u0000"""; @@ -78,7 +92,7 @@ public RisingwaveMacroState onError( } } - private class AlterTableState implements RisingwaveMacroState + private final class AlterTableState implements RisingwaveMacroState { private final String sqlFormat = """ ALTER TABLE %s %s;\u0000"""; diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveBaseMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveBaseMacro.java deleted file mode 100644 index 5f7ddabc95..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveBaseMacro.java +++ /dev/null @@ -1,34 +0,0 @@ -package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; - -import java.nio.ByteOrder; -import java.util.Map; - -import org.agrona.collections.Object2ObjectHashMap; - -import io.aklivity.zilla.runtime.binding.risingwave.internal.types.String32FW; -import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; - -public abstract class RisingwaveBaseMacro -{ - protected static final String ZILLA_CORRELATION_ID_OLD = "zilla_correlation_id"; - protected static final String ZILLA_IDENTITY_OLD = "zilla_identity"; - protected static final String ZILLA_TIMESTAMP_OLD = "zilla_timestamp"; - - protected static final String ZILLA_IDENTITY = "GENERATED ALWAYS AS IDENTITY"; - protected static final String ZILLA_TIMESTAMP = "GENERATED ALWAYS AS NOW"; - - protected static final Map ZILLA_MAPPINGS = new Object2ObjectHashMap<>(); - static - { - 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_MAPPINGS_OLD = new Object2ObjectHashMap<>(); - static - { - ZILLA_MAPPINGS_OLD.put(ZILLA_CORRELATION_ID_OLD, "INCLUDE header 'zilla:correlation-id' AS %s\n"); - ZILLA_MAPPINGS_OLD.put(ZILLA_IDENTITY_OLD, "INCLUDE header 'zilla:identity' AS %s\n"); - ZILLA_MAPPINGS_OLD.put(ZILLA_TIMESTAMP_OLD, "INCLUDE timestamp AS %s\n"); - } -} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java index 7625a656a9..e6cc5d16d9 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java @@ -1,11 +1,21 @@ +/* + * Copyright 2021-2024 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.macro; import java.util.List; -import java.util.Map; -import org.agrona.collections.Object2ObjectHashMap; - -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionArgument; import io.aklivity.zilla.runtime.binding.risingwave.config.RisingwaveUdfConfig; @@ -73,7 +83,7 @@ public RisingwaveMacroState start( return state; } - private class CreateFunctionState implements RisingwaveMacroState + private final class CreateFunctionState implements RisingwaveMacroState { private final String sqlFormat = """ CREATE FUNCTION %s(%s) @@ -151,7 +161,7 @@ public RisingwaveMacroState onError( } } - private class GrantResourceState implements RisingwaveMacroState + private final class GrantResourceState implements RisingwaveMacroState { private final String sqlFormat = """ GRANT ALL PRIVILEGES ON %s %s.%s TO %s;\u0000"""; diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java index 061f1231e6..0fb3e02699 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java @@ -1,6 +1,19 @@ +/* + * Copyright 2021-2024 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.macro; -import java.util.List; import java.util.Map; import org.agrona.collections.Object2ObjectHashMap; @@ -50,17 +63,17 @@ public RisingwaveMacroState start( return state; } - private class CreateTopicState implements RisingwaveMacroState + private final class CreateTopicState implements RisingwaveMacroState { private final String sqlFormat = """ CREATE TOPIC IF NOT EXISTS %s (%s%s);\u0000"""; //TODO: Remove after implementing zstream - protected static final String ZILLA_CORRELATION_ID_OLD = "zilla_correlation_id"; - protected static final String ZILLA_IDENTITY_OLD = "zilla_identity"; - protected static final String ZILLA_TIMESTAMP_OLD = "zilla_timestamp"; + private static final String ZILLA_CORRELATION_ID_OLD = "zilla_correlation_id"; + private static final String ZILLA_IDENTITY_OLD = "zilla_identity"; + private static final String ZILLA_TIMESTAMP_OLD = "zilla_timestamp"; - protected static final Map ZILLA_MAPPINGS_OLD = new Object2ObjectHashMap<>(); + private static final Map ZILLA_MAPPINGS_OLD = new Object2ObjectHashMap<>(); static { ZILLA_MAPPINGS_OLD.put(ZILLA_CORRELATION_ID_OLD, "INCLUDE header 'zilla:correlation-id' AS %s\n"); diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java index 05a5517c7b..41e37c9480 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2024 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.macro; import java.util.ArrayList; @@ -62,7 +76,7 @@ public RisingwaveCreateZtableMacro( this.scanStartupMil = scanStartupMil; } - public RisingwaveMacroState start( + public RisingwaveMacroState start( long traceId, long authorization) { @@ -72,7 +86,7 @@ public RisingwaveMacroState start( return state; } - private class CreateTopicState implements RisingwaveMacroState + private final class CreateTopicState implements RisingwaveMacroState { private final String sqlFormat = """ CREATE TOPIC IF NOT EXISTS %s (%s%s);\u0000"""; @@ -134,7 +148,7 @@ public RisingwaveMacroState onError( } } - private class CreateSourceState implements RisingwaveMacroState + private final class CreateSourceState implements RisingwaveMacroState { private final String sqlFormat = """ CREATE SOURCE IF NOT EXISTS %s (*)%s @@ -217,7 +231,7 @@ public RisingwaveMacroState onError( } } - private class CreateMaterializedViewState implements RisingwaveMacroState + private final class CreateMaterializedViewState implements RisingwaveMacroState { private final String sqlFormat = """ CREATE MATERIALIZED VIEW IF NOT EXISTS %s AS %s;\u0000"""; @@ -276,7 +290,8 @@ private void doExecute( select = fieldBuilder.toString(); } - String sqlQuery = String.format(sqlFormat, "%s_view".formatted(name), "SELECT %s FROM %s_source".formatted(select, name)); + String sqlQuery = String.format(sqlFormat, "%s_view".formatted(name), + "SELECT %s FROM %s_source".formatted(select, name)); handler.doExecute(traceId, authorization, sqlQuery); } @@ -304,7 +319,7 @@ public RisingwaveMacroState onError( } } - private class CreateTableState implements RisingwaveMacroState + private final class CreateTableState implements RisingwaveMacroState { private final String sqlFormat = """ CREATE TABLE IF NOT EXISTS %s (%s%s);\u0000"""; @@ -355,7 +370,7 @@ public RisingwaveMacroState onError( } } - private class GrantResourceState implements RisingwaveMacroState + private final class GrantResourceState implements RisingwaveMacroState { private final String sqlFormat = """ GRANT ALL PRIVILEGES ON %s %s.%s TO %s;\u0000"""; @@ -431,7 +446,7 @@ public RisingwaveMacroState onError( } } - private class CreateSinkState implements RisingwaveMacroState + private final class CreateSinkState implements RisingwaveMacroState { private final String sqlKafkaFormat = """ CREATE SINK %s.%s_sink @@ -486,7 +501,7 @@ public RisingwaveMacroState onError( return this; } - private class InsertIntoCatalogState implements RisingwaveMacroState + private final class InsertIntoCatalogState implements RisingwaveMacroState { private final String sqlFormat = """ INSERT INTO %s.%s (name, sql) VALUES ('%s', '%s');\u0000"""; diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java index 92a608a8d6..0a273ef1b7 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2024 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.macro; import java.nio.ByteOrder; @@ -67,7 +81,7 @@ public RisingwaveMacroState start( return state; } - private class CreateMaterializedViewState implements RisingwaveMacroState + private final class CreateMaterializedViewState implements RisingwaveMacroState { private final String sqlFormat = """ CREATE MATERIALIZED VIEW IF NOT EXISTS %s AS %s;\u0000"""; @@ -107,7 +121,7 @@ public RisingwaveMacroState onError( } } - private class GrantResourceState implements RisingwaveMacroState + private final class GrantResourceState implements RisingwaveMacroState { private final String sqlFormat = """ GRANT ALL PRIVILEGES ON %s %s.%s TO %s;\u0000"""; @@ -144,7 +158,7 @@ public RisingwaveMacroState onError( } } - private class DescribeMaterializedViewState implements RisingwaveMacroState + private final class DescribeMaterializedViewState implements RisingwaveMacroState { private final String sqlFormat = """ DESCRIBE %s.%s;\u0000"""; @@ -158,7 +172,7 @@ private void doExecute( handler.doExecute(traceId, authorization, sqlQuery); } - @Override + @Override public RisingwaveMacroState onType( long traceId, long authorization, @@ -177,10 +191,10 @@ public RisingwaveMacroState onType( } @Override - public RisingwaveMacroState onRow( + public RisingwaveMacroState onRow( + T client, long traceId, long authorization, - long routedId, int flags, DirectBuffer buffer, int offset, @@ -245,7 +259,7 @@ public RisingwaveMacroState onError( } } - private class CreateTopicState implements RisingwaveMacroState + private final class CreateTopicState implements RisingwaveMacroState { private final String sqlFormat = """ CREATE TOPIC IF NOT EXISTS %s (%s%s);\u0000"""; @@ -301,7 +315,7 @@ public RisingwaveMacroState onError( } } - private class CreateSinkState implements RisingwaveMacroState + private final class CreateSinkState implements RisingwaveMacroState { private final String sqlKafkaFormat = """ CREATE SINK %s.%s_sink @@ -368,7 +382,7 @@ public RisingwaveMacroState onError( } } - private class InsertIntoCatalogState implements RisingwaveMacroState + private final class InsertIntoCatalogState implements RisingwaveMacroState { private final String sqlFormat = """ INSERT INTO %s.%s (name, sql) VALUES ('%s', '%s');\u0000"""; @@ -417,5 +431,4 @@ public RisingwaveMacroState onError( return this; } } - } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java index 401cd84050..cc92cb1b20 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2024 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.macro; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; @@ -20,7 +34,7 @@ public RisingwaveDropStreamMacro( this.handler = handler; } - public RisingwaveMacroState start( + public RisingwaveMacroState start( long traceId, long authorization) { @@ -30,7 +44,7 @@ public RisingwaveMacroState start( return state; } - private class DropTopicState implements RisingwaveMacroState + private final class DropTopicState implements RisingwaveMacroState { private final String sqlFormat = """ DROP TOPIC %s;\u0000"""; @@ -66,7 +80,7 @@ public RisingwaveMacroState onError( } } - private class DropSourceState implements RisingwaveMacroState + private final class DropSourceState implements RisingwaveMacroState { private final String sqlFormat = """ DROP SOURCE %s;\u0000"""; @@ -79,7 +93,7 @@ private void doExecute( handler.doExecute(traceId, authorization, sqlQuery); } - @Override + @Override public RisingwaveMacroState onCompletion( long traceId, long authorization, diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java index 5ddd77d006..f5c5401856 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2024 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.macro; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; @@ -23,7 +37,7 @@ public RisingwaveDropZtableMacro( this.handler = handler; } - public RisingwaveMacroState start( + public RisingwaveMacroState start( long traceId, long authorization) { @@ -33,7 +47,7 @@ public RisingwaveMacroState start( return state; } - private class DropTopicState implements RisingwaveMacroState + private final class DropTopicState implements RisingwaveMacroState { private final String sqlFormat = """ DROP TOPIC %s;\u0000"""; @@ -69,7 +83,7 @@ public RisingwaveMacroState onError( } } - private class DropSinkState implements RisingwaveMacroState + private final class DropSinkState implements RisingwaveMacroState { private final String sqlFormat = """ DROP SINK %s.%s_sink;\u0000"""; @@ -105,7 +119,7 @@ public RisingwaveMacroState onError( } } - private class DropTableSinkState implements RisingwaveMacroState + private final class DropTableSinkState implements RisingwaveMacroState { private final String sqlFormat = """ DROP SINK %s.%s_view_sink;\u0000"""; @@ -141,7 +155,7 @@ public RisingwaveMacroState onError( } } - private class DropTableState implements RisingwaveMacroState + private final class DropTableState implements RisingwaveMacroState { private final String sqlFormat = """ DROP TABLE %s;\u0000"""; @@ -177,7 +191,7 @@ public RisingwaveMacroState onError( } } - private class DeleteFromCatalogState implements RisingwaveMacroState + private final class DeleteFromCatalogState implements RisingwaveMacroState { private final String sqlFormat = """ DELETE FROM %s.ztables WHERE name = '%s';\u0000"""; @@ -213,7 +227,7 @@ public RisingwaveMacroState onError( } } - private class DropMaterializedViewState implements RisingwaveMacroState + private final class DropMaterializedViewState implements RisingwaveMacroState { private final String sqlFormat = """ DROP MATERIALIZED VIEW %s_view;\u0000"""; @@ -249,7 +263,7 @@ public RisingwaveMacroState onError( } } - private class DropSourceState implements RisingwaveMacroState + private final class DropSourceState implements RisingwaveMacroState { private final String sqlFormat = """ DROP SOURCE %s_source;\u0000"""; @@ -262,7 +276,7 @@ private void doExecute( handler.doExecute(traceId, authorization, sqlQuery); } - @Override + @Override public RisingwaveMacroState onCompletion( long traceId, long authorization, diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java index 03128adbcf..8d31a4a017 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2024 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.macro; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; @@ -33,7 +47,7 @@ public RisingwaveMacroState start( return state; } - private class DropTopicState implements RisingwaveMacroState + private final class DropTopicState implements RisingwaveMacroState { private final String sqlFormat = """ DROP TOPIC %s;\u0000"""; @@ -69,7 +83,7 @@ public RisingwaveMacroState onError( } } - private class DropSinkState implements RisingwaveMacroState + private final class DropSinkState implements RisingwaveMacroState { private final String sqlFormat = """ DROP SINK %s.%s_sink;\u0000"""; @@ -105,7 +119,7 @@ public RisingwaveMacroState onError( } } - private class DeleteFromCatalogState implements RisingwaveMacroState + private final class DeleteFromCatalogState implements RisingwaveMacroState { private final String sqlFormat = """ DELETE FROM %s.zviews WHERE name = '%s';\u0000"""; @@ -141,7 +155,7 @@ public RisingwaveMacroState onError( } } - private class DropMaterializedViewState implements RisingwaveMacroState + private final class DropMaterializedViewState implements RisingwaveMacroState { private final String sqlFormat = """ DROP MATERIALIZED VIEW %s_view;\u0000"""; @@ -154,7 +168,7 @@ private void doExecute( handler.doExecute(traceId, authorization, sqlQuery); } - @Override + @Override public RisingwaveMacroState onCompletion( long traceId, long authorization, diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java index e015b492c3..bed423875f 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2024 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.macro; import org.agrona.DirectBuffer; diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java index 75bc53268f..a08e6c3ba0 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2024 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.macro; import org.agrona.DirectBuffer; diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwavePgsqlTypeMapping.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwavePgsqlTypeMapping.java new file mode 100644 index 0000000000..142960fa90 --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwavePgsqlTypeMapping.java @@ -0,0 +1,46 @@ +/* + * Copyright 2021-2024 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.macro; + +import java.util.Map; + +import org.agrona.collections.Object2ObjectHashMap; + +public final class RisingwavePgsqlTypeMapping +{ + private static final Map TYPE_MAPPINGS = new Object2ObjectHashMap<>(); + + static + { + TYPE_MAPPINGS.put("character varying", "VARCHAR"); + TYPE_MAPPINGS.put("integer", "INT"); + TYPE_MAPPINGS.put("boolean", "BOOL"); + TYPE_MAPPINGS.put("character", "CHAR"); + TYPE_MAPPINGS.put("timestamp without time zone", "TIMESTAMP"); + TYPE_MAPPINGS.put("timestamp with time zone", "TIMESTAMPZ"); + TYPE_MAPPINGS.put("double precision", "DOUBLE"); + TYPE_MAPPINGS.put("numeric", "NUMERIC"); + } + + private RisingwavePgsqlTypeMapping() + { + } + + public static String typeName( + String type) + { + return TYPE_MAPPINGS.get(type); + } +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java index 0d5a9967b9..bfa9dedd46 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java @@ -1,3 +1,17 @@ +/* + * Copyright 2021-2024 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.macro; import org.agrona.DirectBuffer; @@ -5,7 +19,6 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.OctetsFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; -import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFormat; public class RisingwaveShowCommandMacro { @@ -34,7 +47,7 @@ public RisingwaveMacroState start( return state; } - private class ShowCommandState implements RisingwaveMacroState + private final class ShowCommandState implements RisingwaveMacroState { private final String sqlFormat = """ SELECT * FROM zb_catalog.%s;\u0000"""; diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java index b49b38533b..eebf9b0cc0 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java @@ -1,11 +1,19 @@ +/* + * Copyright 2021-2024 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.macro; -import java.util.Map; - -import org.agrona.collections.Object2ObjectHashMap; - -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; -import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; public class RisingwaveUnknownMacro @@ -38,7 +46,7 @@ public RisingwaveMacroState start( return state; } - private class UnknownState implements RisingwaveMacroState + private final class UnknownState implements RisingwaveMacroState { private void doExecute( long traceId, 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 9d63a69f62..8d374c6b94 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 @@ -805,19 +805,19 @@ public void doDescription( String name) { PgsqlFlushExFW descriptionEx = flushExRW.wrap(extBuffer, 0, extBuffer.capacity()) - .typeId(pgsqlTypeId) - .type(t -> t - .columns(c -> c - .item(s -> s - .name("%s\u0000".formatted(name)) - .tableOid(0) - .index((short) 0) - .typeOid(701) - .length((short) name.length()) - .modifier(-1) - .format(f -> f.set(PgsqlFormat.TEXT)) - ))) - .build(); + .typeId(pgsqlTypeId) + .type(t -> t + .columns(c -> c + .item(s -> s + .name("%s\u0000".formatted(name)) + .tableOid(0) + .index((short) 0) + .typeOid(701) + .length((short) name.length()) + .modifier(-1) + .format(f -> f.set(PgsqlFormat.TEXT)) + ))) + .build(); doAppFlush(traceId, authorization, descriptionEx); } diff --git a/runtime/model-avro/src/main/java/org/apache/avro/io/CanonicalJsonDecoder.java b/runtime/model-avro/src/main/java/org/apache/avro/io/CanonicalJsonDecoder.java index fd08d9836d..3656e1d44d 100644 --- a/runtime/model-avro/src/main/java/org/apache/avro/io/CanonicalJsonDecoder.java +++ b/runtime/model-avro/src/main/java/org/apache/avro/io/CanonicalJsonDecoder.java @@ -26,14 +26,6 @@ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ - -import org.apache.avro.AvroTypeException; -import org.apache.avro.Schema; -import org.apache.avro.io.parsing.Symbol; - -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; - import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; @@ -43,6 +35,13 @@ import java.nio.charset.Charset; import java.util.List; +import org.apache.avro.AvroTypeException; +import org.apache.avro.Schema; +import org.apache.avro.io.parsing.Symbol; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; + public final class CanonicalJsonDecoder extends JsonDecoder { private static final Method ADVANCE; @@ -112,8 +111,8 @@ else if (CanonicalJsonEncoder.isNullableSingle(a)) { label = CanonicalJsonEncoder.getNullableSingle(a); } - else if (currentToken == JsonToken.START_OBJECT - && lin.nextToken() == JsonToken.FIELD_NAME) + else if (currentToken == JsonToken.START_OBJECT && + lin.nextToken() == JsonToken.FIELD_NAME) { label = lin.getText(); lin.nextToken(); diff --git a/runtime/model-avro/src/main/java/org/apache/avro/io/JsonDecoder.java b/runtime/model-avro/src/main/java/org/apache/avro/io/JsonDecoder.java index 37f15568b4..9de5203574 100644 --- a/runtime/model-avro/src/main/java/org/apache/avro/io/JsonDecoder.java +++ b/runtime/model-avro/src/main/java/org/apache/avro/io/JsonDecoder.java @@ -26,6 +26,13 @@ import java.util.Map; import java.util.Stack; +import org.apache.avro.AvroTypeException; +import org.apache.avro.Schema; +import org.apache.avro.io.parsing.JsonGrammarGenerator; +import org.apache.avro.io.parsing.Parser; +import org.apache.avro.io.parsing.Symbol; +import org.apache.avro.util.Utf8; + import com.fasterxml.jackson.core.Base64Variant; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonLocation; @@ -35,13 +42,6 @@ import com.fasterxml.jackson.core.ObjectCodec; import com.fasterxml.jackson.core.Version; -import org.apache.avro.AvroTypeException; -import org.apache.avro.Schema; -import org.apache.avro.io.parsing.JsonGrammarGenerator; -import org.apache.avro.io.parsing.Parser; -import org.apache.avro.io.parsing.Symbol; -import org.apache.avro.util.Utf8; - /** A {@link Decoder} for Avro's JSON data encoding. *

* Construct using {@link DecoderFactory}. From c4ad8f502d66ad2f5ac20e761077c4d81f608a22 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 16 Dec 2024 15:44:49 -0800 Subject: [PATCH 063/104] WIP --- .../streams/effective/create.zview/client.rpt | 4 +- .../streams/effective/create.zview/server.rpt | 4 +- .../macro/RisingwaveCreateZviewMacro.java | 3 +- .../stream/RisingwaveProxyFactory.java | 217 ++++++++++-------- 4 files changed, 125 insertions(+), 103 deletions(-) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt index 79bd3ca5d2..1c90ec237d 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt @@ -79,7 +79,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "DESCRIBE distinct_cities;" +write "DESCRIBE public.distinct_cities;" [0x00] read advised zilla:flush ${pgsql:flushEx() @@ -204,7 +204,7 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "INSERT INTO zb_catalog.zviews (name, sql) VALUES " - "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;');" + "('distinct_cities', 'CREATE ZVIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;');" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt index 7028a490f8..410066dfc8 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt @@ -79,7 +79,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "DESCRIBE distinct_cities;" +read "DESCRIBE public.distinct_cities;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -208,7 +208,7 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read "INSERT INTO zb_catalog.zviews (name, sql) VALUES " - "('distinct_cities', 'CREATE MATERIALIZED VIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;');" + "('distinct_cities', 'CREATE ZVIEW IF NOT EXISTS distinct_cities AS SELECT id, city FROM weather GROUP BY city;');" [0x00] write advise zilla:flush ${pgsql:flushEx() diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java index 0a273ef1b7..09622ca1a5 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java @@ -392,11 +392,10 @@ private void doExecute( long authorization) { String name = command.name(); - String schema = command.schema(); String newSql = sql.replace(ZVIEW_NAME, MATERIALIZED_VIEW_NAME) .replace("\u0000", ""); - String sqlQuery = String.format(sqlFormat, systemSchema, schema, name, newSql); + String sqlQuery = String.format(sqlFormat, systemSchema, ZVIEW_NAME, name, newSql); handler.doExecute(traceId, authorization, sqlQuery); } 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 8d374c6b94..403d7f3196 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 @@ -546,6 +546,7 @@ private void onCommandCompleted( queryProgressOffset += progress; if (queryLength == queryProgressOffset) { + macroState = null; queryProgressOffset = 0; queries.removeInt(); doQueryReady(traceId, authorization); @@ -860,6 +861,7 @@ public void doError( long authorization, PgsqlFlushExFW flushEx) { + macroState = null; doAppFlush(traceId, authorization, flushEx); } @@ -1323,11 +1325,6 @@ private void doPgsqlQuery( doAppData(traceId, authorization, flags, buffer, offset, lengthMax, queryEx); messageOffset += lengthMax; - - } - else - { - doAppBegin(traceId, authorization, server.affinity); } } } @@ -1614,20 +1611,22 @@ private void decodeCreateZtableCommand( long authorization, String statement) { - final CreateTable command = parser.parseCreateTable(statement); - - RisingwaveBindingConfig binding = server.binding; - - RisingwaveCreateZtableMacro machine = new RisingwaveCreateZtableMacro( - binding.bootstrapServer, - binding.schemaRegistry, - config.kafkaScanStartupTimestampMillis(), - RisingwaveBindingConfig.INTERNAL_SCHEMA, - server.user, - statement, - command, - server.macroHandler); - server.macroState = machine.start(traceId, authorization); + if (server.macroState == null) + { + final CreateTable command = parser.parseCreateTable(statement); + + RisingwaveBindingConfig binding = server.binding; + RisingwaveCreateZtableMacro machine = new RisingwaveCreateZtableMacro( + binding.bootstrapServer, + binding.schemaRegistry, + config.kafkaScanStartupTimestampMillis(), + RisingwaveBindingConfig.INTERNAL_SCHEMA, + server.user, + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); + } } private void decodeCreateStreamCommand( @@ -1636,19 +1635,22 @@ private void decodeCreateStreamCommand( long authorization, String statement) { - final CreateStream command = parser.parseCreateStream(statement); - - RisingwaveBindingConfig binding = server.binding; - - RisingwaveCreateStreamMacro machine = new RisingwaveCreateStreamMacro( - binding.bootstrapServer, - binding.schemaRegistry, - RisingwaveBindingConfig.INTERNAL_SCHEMA, - server.user, - statement, - command, - server.macroHandler); - server.macroState = machine.start(traceId, authorization); + if (server.macroState == null) + { + final CreateStream command = parser.parseCreateStream(statement); + + RisingwaveBindingConfig binding = server.binding; + + RisingwaveCreateStreamMacro machine = new RisingwaveCreateStreamMacro( + binding.bootstrapServer, + binding.schemaRegistry, + RisingwaveBindingConfig.INTERNAL_SCHEMA, + server.user, + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); + } } private void decodeCreateZviewCommand( @@ -1657,19 +1659,22 @@ private void decodeCreateZviewCommand( long authorization, String statement) { - final CreateZview command = parser.parseCreateZView(statement); - - RisingwaveBindingConfig binding = server.binding; - - RisingwaveCreateZviewMacro machine = new RisingwaveCreateZviewMacro( - binding.bootstrapServer, - binding.schemaRegistry, - RisingwaveBindingConfig.INTERNAL_SCHEMA, - server.user, - statement, - command, - server.macroHandler); - server.macroState = machine.start(traceId, authorization); + if (server.macroState == null) + { + final CreateZview command = parser.parseCreateZView(statement); + + RisingwaveBindingConfig binding = server.binding; + + RisingwaveCreateZviewMacro machine = new RisingwaveCreateZviewMacro( + binding.bootstrapServer, + binding.schemaRegistry, + RisingwaveBindingConfig.INTERNAL_SCHEMA, + server.user, + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); + } } private void decodeCreateFunctionCommand( @@ -1678,18 +1683,21 @@ private void decodeCreateFunctionCommand( long authorization, String statement) { - final Function command = parser.parseCreateFunction(statement); - - RisingwaveBindingConfig binding = server.binding; - - RisingwaveCreateFunctionMacro machine = new RisingwaveCreateFunctionMacro( - binding.options.udfs, - RisingwaveBindingConfig.INTERNAL_SCHEMA, - server.user, - statement, - command, - server.macroHandler); - server.macroState = machine.start(traceId, authorization); + if (server.macroState == null) + { + final Function command = parser.parseCreateFunction(statement); + + RisingwaveBindingConfig binding = server.binding; + + RisingwaveCreateFunctionMacro machine = new RisingwaveCreateFunctionMacro( + binding.options.udfs, + RisingwaveBindingConfig.INTERNAL_SCHEMA, + server.user, + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); + } } private void decodeAlterZtableCommand( @@ -1708,7 +1716,7 @@ private void decodeAlterZtableCommand( decodeUnsupportedCommand(server, traceId, authorization, RisingwaveCompletionCommand.ALTER_ZTABLE_COMMAND, statement, "ALTER ZTABLE only supports ADD"); } - else + else if (server.macroState == null) { RisingwaveAlterZtableMacro machine = new RisingwaveAlterZtableMacro( statement, @@ -1734,7 +1742,7 @@ private void decodeAlterStreamCommand( decodeUnsupportedCommand(server, traceId, authorization, RisingwaveCompletionCommand.ALTER_STREAM_COMMAND, statement, "ALTER STREAM only supports ADD"); } - else + else if (server.macroState == null) { RisingwaveAlterStreamMacro machine = new RisingwaveAlterStreamMacro( statement, @@ -1767,14 +1775,17 @@ private void decodeDropZtableCommand( long authorization, String statement) { - // TODO: Enhance multiple streams - final Drop command = parser.parseDrop(statement).get(0); - - RisingwaveDropStreamMacro machine = new RisingwaveDropStreamMacro( - statement, - command, - server.macroHandler); - server.macroState = machine.start(traceId, authorization); + if (server.macroState == null) + { + // TODO: Enhance multiple streams + final Drop command = parser.parseDrop(statement).get(0); + + RisingwaveDropStreamMacro machine = new RisingwaveDropStreamMacro( + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); + } } private void decodeDropStreamCommand( @@ -1783,15 +1794,18 @@ private void decodeDropStreamCommand( long authorization, String statement) { - // TODO: Enhance multiple streams - final Drop command = parser.parseDrop(statement).get(0); - - RisingwaveDropZtableMacro machine = new RisingwaveDropZtableMacro( - RisingwaveBindingConfig.INTERNAL_SCHEMA, - statement, - command, - server.macroHandler); - server.macroState = machine.start(traceId, authorization); + if (server.macroState == null) + { + // TODO: Enhance multiple streams + final Drop command = parser.parseDrop(statement).get(0); + + RisingwaveDropZtableMacro machine = new RisingwaveDropZtableMacro( + RisingwaveBindingConfig.INTERNAL_SCHEMA, + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); + } } private void decodeDropZviewCommand( @@ -1800,15 +1814,18 @@ private void decodeDropZviewCommand( long authorization, String statement) { - // TODO: Enhance multiple streams - final Drop command = parser.parseDrop(statement).get(0); - - RisingwaveDropZviewMacro machine = new RisingwaveDropZviewMacro( - RisingwaveBindingConfig.INTERNAL_SCHEMA, - statement, - command, - server.macroHandler); - server.macroState = machine.start(traceId, authorization); + if (server.macroState == null) + { + // TODO: Enhance multiple streams + final Drop command = parser.parseDrop(statement).get(0); + + RisingwaveDropZviewMacro machine = new RisingwaveDropZviewMacro( + RisingwaveBindingConfig.INTERNAL_SCHEMA, + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); + } } private void decodeShowCommand( @@ -1817,13 +1834,16 @@ private void decodeShowCommand( long authorization, String statement) { - final String command = parser.parseShow(statement); + if (server.macroState == null) + { + final String command = parser.parseShow(statement); - RisingwaveShowCommandMacro machine = new RisingwaveShowCommandMacro( - statement, - command, - server.macroHandler); - server.macroState = machine.start(traceId, authorization); + RisingwaveShowCommandMacro machine = new RisingwaveShowCommandMacro( + statement, + command, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); + } } private void decodeUnknownCommand( @@ -1832,12 +1852,15 @@ private void decodeUnknownCommand( long authorization, String statement) { - RisingwaveUnknownMacro machine = new RisingwaveUnknownMacro( - RisingwaveBindingConfig.INTERNAL_SCHEMA, - server.user, - statement, - server.macroHandler); - server.macroState = machine.start(traceId, authorization); + if (server.macroState == null) + { + RisingwaveUnknownMacro machine = new RisingwaveUnknownMacro( + RisingwaveBindingConfig.INTERNAL_SCHEMA, + server.user, + statement, + server.macroHandler); + server.macroState = machine.start(traceId, authorization); + } } public List splitStatements( From 57fb1d52935cb29455638a225d4ef52eebee1306 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 16 Dec 2024 15:47:47 -0800 Subject: [PATCH 064/104] WIP --- .../risingwave/internal/macro/RisingwaveCreateZtableMacro.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java index 41e37c9480..2cfc7e45fb 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java @@ -511,11 +511,10 @@ private void doExecute( long authorization) { String name = command.name(); - String schema = command.schema(); String newSql = sql.replace(ZTABLE_NAME, TABLE_NAME) .replace("\u0000", ""); - String sqlQuery = String.format(sqlFormat, systemSchema, schema, name, newSql); + String sqlQuery = String.format(sqlFormat, systemSchema, ZTABLE_NAME, name, newSql); handler.doExecute(traceId, authorization, sqlQuery); } From e87bc763d674ac598876982133eb0c9828f411a1 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 16 Dec 2024 15:59:13 -0800 Subject: [PATCH 065/104] WIP --- .../macro/RisingwaveCreateStreamMacro.java | 96 ++++++++++++++++--- .../macro/RisingwaveCreateZtableMacro.java | 2 +- .../stream/RisingwaveProxyFactory.java | 1 + 3 files changed, 83 insertions(+), 16 deletions(-) diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java index 0fb3e02699..b3615b8424 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java @@ -14,6 +14,7 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; +import java.util.LinkedHashMap; import java.util.Map; import org.agrona.collections.Object2ObjectHashMap; @@ -24,9 +25,26 @@ public class RisingwaveCreateStreamMacro { + //TODO: Remove after implementing zstream + private static final String ZILLA_CORRELATION_ID_OLD = "zilla_correlation_id"; + private static final String ZILLA_IDENTITY_OLD = "zilla_identity"; + private static final String ZILLA_TIMESTAMP_OLD = "zilla_timestamp"; + + private static final Map ZILLA_MAPPINGS_OLD = new Object2ObjectHashMap<>(); + static + { + ZILLA_MAPPINGS_OLD.put(ZILLA_CORRELATION_ID_OLD, "INCLUDE header 'zilla:correlation-id' AS %s\n"); + ZILLA_MAPPINGS_OLD.put(ZILLA_IDENTITY_OLD, "INCLUDE header 'zilla:identity' AS %s\n"); + ZILLA_MAPPINGS_OLD.put(ZILLA_TIMESTAMP_OLD, "INCLUDE timestamp AS %s\n"); + } + + protected final StringBuilder fieldBuilder = new StringBuilder(); + protected final StringBuilder includeBuilder = new StringBuilder(); + private final String bootstrapServer; private final String schemaRegistry; + private final long scanStartupMil; private final String systemSchema; private final String user; private final String sql; @@ -36,12 +54,14 @@ public class RisingwaveCreateStreamMacro public RisingwaveCreateStreamMacro( String bootstrapServer, String schemaRegistry, + long scanStartupMil, String systemSchema, String user, String sql, CreateStream command, RisingwaveMacroHandler handler) { + this.scanStartupMil = scanStartupMil; this.systemSchema = systemSchema; this.user = user; this.sql = sql; @@ -68,21 +88,6 @@ private final class CreateTopicState implements RisingwaveMacroState private final String sqlFormat = """ CREATE TOPIC IF NOT EXISTS %s (%s%s);\u0000"""; - //TODO: Remove after implementing zstream - private static final String ZILLA_CORRELATION_ID_OLD = "zilla_correlation_id"; - private static final String ZILLA_IDENTITY_OLD = "zilla_identity"; - private static final String ZILLA_TIMESTAMP_OLD = "zilla_timestamp"; - - private static final Map ZILLA_MAPPINGS_OLD = new Object2ObjectHashMap<>(); - static - { - ZILLA_MAPPINGS_OLD.put(ZILLA_CORRELATION_ID_OLD, "INCLUDE header 'zilla:correlation-id' AS %s\n"); - ZILLA_MAPPINGS_OLD.put(ZILLA_IDENTITY_OLD, "INCLUDE header 'zilla:identity' AS %s\n"); - ZILLA_MAPPINGS_OLD.put(ZILLA_TIMESTAMP_OLD, "INCLUDE timestamp AS %s\n"); - } - - private final StringBuilder fieldBuilder = new StringBuilder(); - private void doExecute( long traceId, long authorization) @@ -105,6 +110,67 @@ private void doExecute( handler.doExecute(traceId, authorization, sqlQuery); } + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + CreateSourceState state = new CreateSourceState(); + state.doExecute(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doError(traceId, authorization, flushEx); + return this; + } + } + + private final class CreateSourceState implements RisingwaveMacroState + { + private final String sqlFormat = """ + CREATE SOURCE IF NOT EXISTS %s (*)%s + WITH ( + connector='kafka', + properties.bootstrap.server='%s', + topic='%s.%s', + scan.startup.mode='latest', + scan.startup.timestamp.millis='%d' + ) FORMAT PLAIN ENCODE AVRO ( + schema.registry = '%s' + );\u0000"""; + + private void doExecute( + long traceId, + long authorization) + { + String schema = command.schema(); + String table = command.name(); + + includeBuilder.setLength(0); + Map includes = command.columns().entrySet().stream() + .filter(e -> ZILLA_MAPPINGS_OLD.containsKey(e.getKey())) + .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_OLD.get(k), k))); + includeBuilder.delete(includeBuilder.length() - 1, includeBuilder.length()); + } + + String sqlQuery = String.format(sqlFormat, table, includeBuilder, bootstrapServer, schema, + table, scanStartupMil, schemaRegistry); + handler.doExecute(traceId, authorization, sqlQuery); + } + @Override public RisingwaveMacroState onCompletion( long traceId, diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java index 2cfc7e45fb..a19735a965 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java @@ -407,7 +407,7 @@ public RisingwaveMacroState onError( } } - private class CreateSinkIntoState implements RisingwaveMacroState + private final class CreateSinkIntoState implements RisingwaveMacroState { private final String sqlFormat = """ CREATE SINK %s.%s_view_sink INTO %s FROM %s_view;\u0000"""; 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 403d7f3196..616910f3e5 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 @@ -1644,6 +1644,7 @@ private void decodeCreateStreamCommand( RisingwaveCreateStreamMacro machine = new RisingwaveCreateStreamMacro( binding.bootstrapServer, binding.schemaRegistry, + config.kafkaScanStartupTimestampMillis(), RisingwaveBindingConfig.INTERNAL_SCHEMA, server.user, statement, From 2cff03239680c01f7a902c73acbead5f637fc828 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 16 Dec 2024 16:45:48 -0800 Subject: [PATCH 066/104] WIP --- .../internal/macro/RisingwaveAlterStreamMacro.java | 2 +- .../internal/macro/RisingwaveAlterZtableMacro.java | 2 +- .../internal/macro/RisingwaveCreateFunctionMacro.java | 2 +- .../internal/macro/RisingwaveCreateStreamMacro.java | 2 +- .../internal/macro/RisingwaveCreateZtableMacro.java | 2 +- .../internal/macro/RisingwaveCreateZviewMacro.java | 2 +- .../internal/macro/RisingwaveDropStreamMacro.java | 2 +- .../internal/macro/RisingwaveDropZtableMacro.java | 2 +- .../internal/macro/RisingwaveDropZviewMacro.java | 2 +- .../internal/macro/RisingwaveShowCommandMacro.java | 2 +- .../internal/macro/RisingwaveUnknownMacro.java | 2 +- .../internal/stream/RisingwaveProxyFactory.java | 11 +++++------ 12 files changed, 16 insertions(+), 17 deletions(-) diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java index 6b534ccb00..e8cbfbd081 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java @@ -86,7 +86,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { handler.doReady(traceId, authorization, sql.length()); - return this; + return null; } @Override diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java index 16f5385530..f91ac65d64 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java @@ -132,7 +132,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { handler.doReady(traceId, authorization, sql.length()); - return this; + return null; } @Override diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java index e6cc5d16d9..ec258cda83 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java @@ -192,7 +192,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { handler.doReady(traceId, authorization, sql.length()); - return this; + return null; } @Override diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java index b3615b8424..743efd9523 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java @@ -188,7 +188,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { handler.doReady(traceId, authorization, sql.length()); - return this; + return null; } @Override diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java index a19735a965..39376d4814 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java @@ -536,7 +536,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { handler.doReady(traceId, authorization, sql.length()); - return this; + return null; } @Override diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java index 09622ca1a5..2e4c94a805 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java @@ -417,7 +417,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { handler.doReady(traceId, authorization, sql.length()); - return this; + return null; } @Override diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java index cc92cb1b20..f1925c335e 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java @@ -110,7 +110,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { handler.doReady(traceId, authorization, sql.length()); - return this; + return null; } @Override diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java index f5c5401856..3b550c6ad7 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java @@ -293,7 +293,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { handler.doReady(traceId, authorization, sql.length()); - return this; + return null; } @Override diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java index 8d31a4a017..5c88f05e3a 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java @@ -185,7 +185,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { handler.doReady(traceId, authorization, sql.length()); - return this; + return null; } @Override diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java index bfa9dedd46..8202794502 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java @@ -103,7 +103,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { handler.doReady(traceId, authorization, sql.length()); - return this; + return null; } @Override diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java index eebf9b0cc0..e6dd1185c6 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java @@ -71,7 +71,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { handler.doReady(traceId, authorization, sql.length()); - return this; + return null; } @Override 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 616910f3e5..226a2a2620 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 @@ -531,7 +531,7 @@ private void onAppWindow( } } - private void onCommandCompleted( + private void onCommandReady( long traceId, long authorization, int progress) @@ -539,19 +539,19 @@ private void onCommandCompleted( final MutableDirectBuffer parserBuffer = bufferPool.buffer(parserSlot); parserSlotOffset -= progress; - parserBuffer.putBytes(0, parserBuffer, progress, parserSlotOffset); final int queryLength = queries.peekInt(); queryProgressOffset += progress; if (queryLength == queryProgressOffset) { - macroState = null; queryProgressOffset = 0; queries.removeInt(); doQueryReady(traceId, authorization); } + macroState = null; + if (parserSlotOffset == 0) { cleanupParserSlotIfNecessary(); @@ -861,7 +861,6 @@ public void doError( long authorization, PgsqlFlushExFW flushEx) { - macroState = null; doAppFlush(traceId, authorization, flushEx); } @@ -880,7 +879,7 @@ public void doReady( long authorization, int progress) { - onCommandCompleted(traceId, authorization, progress); + onCommandReady(traceId, authorization, progress); } }; } @@ -1767,7 +1766,7 @@ private void decodeUnsupportedCommand( server.macroHandler.doCompletion(traceId, authorization, command); final int length = statement.length(); - server.onCommandCompleted(traceId, authorization, length); + server.onCommandReady(traceId, authorization, length); } private void decodeDropZtableCommand( From 6f9409bde8936064b0b8d6fa6677b7088309cfaa Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 16 Dec 2024 17:08:13 -0800 Subject: [PATCH 067/104] WIP --- .../show.tables.with.newline/server.rpt | 2 - .../macro/RisingwaveAlterStreamMacro.java | 4 +- .../macro/RisingwaveAlterZtableMacro.java | 8 +-- .../macro/RisingwaveCreateFunctionMacro.java | 8 +-- .../macro/RisingwaveCreateStreamMacro.java | 8 +-- .../macro/RisingwaveCreateZtableMacro.java | 32 ++++----- .../macro/RisingwaveCreateZviewMacro.java | 24 +++---- .../macro/RisingwaveDropStreamMacro.java | 8 +-- .../macro/RisingwaveDropZtableMacro.java | 28 ++++---- .../macro/RisingwaveDropZviewMacro.java | 16 ++--- .../macro/RisingwaveMacroHandler.java | 24 +++++-- .../macro/RisingwaveShowCommandMacro.java | 4 +- .../macro/RisingwaveUnknownMacro.java | 39 ++++++++--- .../stream/RisingwaveProxyFactory.java | 69 +++++++++++++------ 14 files changed, 168 insertions(+), 106 deletions(-) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/server.rpt index 3d55f1cf56..862fe0eb97 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/server.rpt @@ -72,8 +72,6 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} -write notify CREATE_TOPIC_COMPLETED - write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .ready() diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java index e8cbfbd081..7380f848b3 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java @@ -66,7 +66,7 @@ private void doExecute( fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); String sqlQuery = String.format(sqlFormat, topic, fieldBuilder); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -95,7 +95,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java index f91ac65d64..386e7847f4 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java @@ -66,7 +66,7 @@ private void doExecute( fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); String sqlQuery = String.format(sqlFormat, topic, fieldBuilder); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -87,7 +87,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -112,7 +112,7 @@ private void doExecute( fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); String sqlQuery = String.format(sqlFormat, topic, fieldBuilder); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -141,7 +141,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java index ec258cda83..328e9a00bd 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java @@ -135,7 +135,7 @@ private void doExecute( String sqlQuery = sqlFormat.formatted(functionName, funcArguments, returnType, asFunction, language, server); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -156,7 +156,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -172,7 +172,7 @@ private void doExecute( { String sqlQuery = String.format(sqlFormat, FUNCTION_NAME, command.schema(), command.name(), user); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -201,7 +201,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java index 743efd9523..78f3ccd187 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java @@ -107,7 +107,7 @@ private void doExecute( String sqlQuery = String.format(sqlFormat, topic, fieldBuilder, ""); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -128,7 +128,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -168,7 +168,7 @@ private void doExecute( String sqlQuery = String.format(sqlFormat, table, includeBuilder, bootstrapServer, schema, table, scanStartupMil, schemaRegistry); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -197,7 +197,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java index 39376d4814..7b4b6f7d4d 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java @@ -122,7 +122,7 @@ private void doExecute( String sqlQuery = String.format(sqlFormat, topic, fieldBuilder, primaryKey); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -143,7 +143,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -205,7 +205,7 @@ private void doExecute( String sqlQuery = String.format(sqlFormat, sourceName, includeBuilder, bootstrapServer, schema, table, scanStartupMil, schemaRegistry); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -226,7 +226,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -293,7 +293,7 @@ private void doExecute( String sqlQuery = String.format(sqlFormat, "%s_view".formatted(name), "SELECT %s FROM %s_source".formatted(select, name)); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -314,7 +314,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -344,7 +344,7 @@ private void doExecute( String sqlQuery = String.format(sqlFormat, topic, fieldBuilder, primaryKey); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -365,7 +365,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -381,7 +381,7 @@ private void doExecute( { String sqlQuery = String.format(sqlFormat, "TABLE", command.schema(), command.name(), user); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -402,7 +402,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -420,7 +420,7 @@ private void doExecute( String name = command.name(); String sqlQuery = String.format(sqlFormat, systemSchema, name, name, name); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -441,7 +441,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -476,7 +476,7 @@ private void doExecute( table, ",\n primary_key='%s'".formatted(command.primaryKeys().stream().findFirst().get()), schemaRegistry); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -497,7 +497,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } @@ -516,7 +516,7 @@ private void doExecute( .replace("\u0000", ""); String sqlQuery = String.format(sqlFormat, systemSchema, ZTABLE_NAME, name, newSql); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -545,7 +545,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java index 2e4c94a805..887923e002 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java @@ -95,7 +95,7 @@ private void doExecute( String sqlQuery = String.format(sqlFormat, name, select); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -116,7 +116,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -132,7 +132,7 @@ private void doExecute( { String sqlQuery = String.format(sqlFormat, MATERIALIZED_VIEW_NAME, command.schema(), command.name(), user); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -153,7 +153,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -169,7 +169,7 @@ private void doExecute( { String sqlQuery = String.format(sqlFormat, command.schema(), command.name()); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -254,7 +254,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -289,7 +289,7 @@ private void doExecute( String sqlQuery = String.format(sqlFormat, topic, fieldBuilder, primaryKey); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -310,7 +310,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -356,7 +356,7 @@ private void doExecute( String sqlQuery = String.format(sqlKafkaFormat, systemSchema, viewName, viewName, bootstrapServer, topicSchema, viewName, primaryKey, schemaRegistry); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -377,7 +377,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -397,7 +397,7 @@ private void doExecute( .replace("\u0000", ""); String sqlQuery = String.format(sqlFormat, systemSchema, ZVIEW_NAME, name, newSql); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -426,7 +426,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java index f1925c335e..da2ed705d4 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java @@ -54,7 +54,7 @@ private void doExecute( long authorization) { String sqlQuery = String.format(sqlFormat, command.name()); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -75,7 +75,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -90,7 +90,7 @@ private void doExecute( long authorization) { String sqlQuery = String.format(sqlFormat, command.name()); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -119,7 +119,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java index 3b550c6ad7..cb012a7f34 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java @@ -57,7 +57,7 @@ private void doExecute( long authorization) { String sqlQuery = String.format(sqlFormat, command.name()); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -78,7 +78,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -93,7 +93,7 @@ private void doExecute( long authorization) { String sqlQuery = String.format(sqlFormat, systemSchema, command.name()); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -114,7 +114,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -129,7 +129,7 @@ private void doExecute( long authorization) { String sqlQuery = String.format(sqlFormat, systemSchema, command.name()); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -150,7 +150,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -165,7 +165,7 @@ private void doExecute( long authorization) { String sqlQuery = String.format(sqlFormat, systemSchema, command.name()); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -186,7 +186,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -201,7 +201,7 @@ private void doExecute( long authorization) { String sqlQuery = String.format(sqlFormat, systemSchema, command.name()); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -222,7 +222,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -237,7 +237,7 @@ private void doExecute( long authorization) { String sqlQuery = String.format(sqlFormat, command.name()); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -258,7 +258,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -273,7 +273,7 @@ private void doExecute( long authorization) { String sqlQuery = String.format(sqlFormat, command.name()); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -302,7 +302,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java index 5c88f05e3a..a183f68f13 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java @@ -57,7 +57,7 @@ private void doExecute( long authorization) { String sqlQuery = String.format(sqlFormat, command.name()); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -78,7 +78,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -93,7 +93,7 @@ private void doExecute( long authorization) { String sqlQuery = String.format(sqlFormat, systemSchema, command.name()); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -114,7 +114,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -129,7 +129,7 @@ private void doExecute( long authorization) { String sqlQuery = String.format(sqlFormat, systemSchema, command.name()); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -150,7 +150,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } @@ -165,7 +165,7 @@ private void doExecute( long authorization) { String sqlQuery = String.format(sqlFormat, command.name()); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -194,7 +194,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java index bed423875f..6eba7deb94 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java @@ -17,11 +17,17 @@ import org.agrona.DirectBuffer; import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.OctetsFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; public interface RisingwaveMacroHandler { - void doExecute( + void doExecuteUserClient( + long traceId, + long authorization, + String query); + + void doExecuteSystemClient( long traceId, long authorization, String query); @@ -45,13 +51,23 @@ void doCompletion( long authorization, RisingwaveCompletionCommand command); - void doError( + void doReady( + long traceId, + long authorization, + int progress); + + void doFlushProxy( long traceId, long authorization, PgsqlFlushExFW flushEx); - void doReady( + void doDataProxy( + T client, long traceId, long authorization, - int progress); + int flags, + DirectBuffer buffer, + int offset, + int length, + OctetsFW extension); } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java index 8202794502..ac88ef88af 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java @@ -58,7 +58,7 @@ private void doExecute( { String sqlQuery = String.format(sqlFormat, command.toLowerCase()); - handler.doExecute(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @Override @@ -112,7 +112,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java index e6dd1185c6..2f216d5854 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java @@ -14,23 +14,20 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; +import org.agrona.DirectBuffer; + +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.OctetsFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; public class RisingwaveUnknownMacro { - private final String systemSchema; - private final String user; private final String sql; private final RisingwaveMacroHandler handler; public RisingwaveUnknownMacro( - String systemSchema, - String user, String sql, RisingwaveMacroHandler handler) { - this.systemSchema = systemSchema; - this.user = user; this.sql = sql; this.handler = handler; } @@ -52,7 +49,32 @@ private void doExecute( long traceId, long authorization) { - handler.doExecute(traceId, authorization, sql); + handler.doExecuteUserClient(traceId, authorization, sql); + } + + @Override + public RisingwaveMacroState onRow( + T client, + long traceId, + long authorization, + int flags, + DirectBuffer buffer, + int offset, + int length, + OctetsFW extension) + { + handler.doDataProxy(client, traceId, authorization, flags, buffer, offset, length, extension); + return this; + } + + @Override + public RisingwaveMacroState onType( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doFlushProxy(traceId, authorization, flushEx); + return this; } @Override @@ -61,6 +83,7 @@ public RisingwaveMacroState onCompletion( long authorization, PgsqlFlushExFW flushEx) { + handler.doFlushProxy(traceId, authorization, flushEx); return this; } @@ -80,7 +103,7 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - handler.doError(traceId, authorization, flushEx); + handler.doFlushProxy(traceId, authorization, flushEx); return this; } } 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 226a2a2620..ec8249f20c 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 @@ -410,7 +410,7 @@ private void onAppData( final ExtensionFW dataEx = extension.get(extensionRO::tryWrap); final PgsqlDataExFW pgsqlDataEx = dataEx != null && dataEx.typeId() == pgsqlTypeId ? - extension.get(pgsqlDataExRO::tryWrap) : null; + extension.get(pgsqlDataExRO::tryWrap) : null; if (pgsqlDataEx != null && pgsqlDataEx.kind() == PgsqlDataExFW.KIND_QUERY) @@ -493,7 +493,7 @@ private void onAppWindow( assert acknowledge >= replyAck; assert maximum + acknowledge >= replyMax + replyAck; - int credit = (int)(acknowledge - replyAck) + (maximum - replyMax); + int credit = (int) (acknowledge - replyAck) + (maximum - replyMax); replyBudgetId = budgetId; replyAck = acknowledge; @@ -519,7 +519,7 @@ private void onAppWindow( client.doAppWindow(authorization, traceId); - credit = Math.max(credit - (int)(client.replyAck - streamAckSnapshot), 0); + credit = Math.max(credit - (int) (client.replyAck - streamAckSnapshot), 0); if (client.replyAck != client.replySeq) { @@ -689,7 +689,7 @@ private void doAppFlush( int reserved = (int) replySeq; doFlush(app, originId, routedId, replyId, replySeq, replyAck, replyMax, traceId, - authorization, replyBudgetId, reserved, extension); + authorization, replyBudgetId, reserved, extension); replySeq += reserved; } @@ -702,7 +702,7 @@ private void doAppFlush( int reserved = (int) replySeq; doFlush(app, originId, routedId, replyId, replySeq, replyAck, replyMax, traceId, - authorization, replyBudgetId, reserved, extension); + authorization, replyBudgetId, reserved, extension); replySeq += reserved; } @@ -719,7 +719,7 @@ private void doCommandCompletion( Consumer completionEx = e -> e.set((b, o, l) -> flushExRW.wrap(b, o, l) .typeId(pgsqlTypeId) - .completion(c -> c.tag(extBuffer, 0, command.value().length + 1)) + .completion(c -> c.tag(extBuffer, 0, command.value().length + 1)) .build().sizeof()); doAppFlush(traceId, authorization, completionEx); @@ -731,9 +731,9 @@ private void doQueryReady( long authorization) { Consumer readyEx = e -> e.set((b, o, l) -> flushExRW.wrap(b, o, l) - .typeId(pgsqlTypeId) - .ready(r -> r.status(s -> s.set(PgsqlStatus.IDLE))) - .build().sizeof()); + .typeId(pgsqlTypeId) + .ready(r -> r.status(s -> s.set(PgsqlStatus.IDLE))) + .build().sizeof()); doAppFlush(traceId, authorization, readyEx); } @@ -783,7 +783,20 @@ private void cleanupParserSlotIfNecessary() private final class RisingwaveMacroDefaultHandler implements RisingwaveMacroHandler { @Override - public void doExecute( + public void doExecuteUserClient( + long traceId, + long authorization, + String query) + { + int progress = 0; + statementBuffer.putBytes(progress, query.getBytes()); + progress += query.length(); + + userClient.doPgsqlQuery(traceId, authorization, statementBuffer, 0, progress); + } + + @Override + public void doExecuteSystemClient( long traceId, long authorization, String query) @@ -855,15 +868,6 @@ public void doRow( } } - @Override - public void doError( - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - doAppFlush(traceId, authorization, flushEx); - } - @Override public void doCompletion( long traceId, @@ -881,7 +885,30 @@ public void doReady( { onCommandReady(traceId, authorization, progress); } - }; + + @Override + public void doFlushProxy( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + doAppFlush(traceId, authorization, flushEx); + } + + @Override + public void doDataProxy( + T client, + long traceId, + long authorization, + int flags, + DirectBuffer buffer, + int offset, + int length, + OctetsFW extension) + { + doAppData(client, traceId, authorization, flags, buffer, offset, length, extension); + } + } } private final class PgsqlClient @@ -1855,8 +1882,6 @@ private void decodeUnknownCommand( if (server.macroState == null) { RisingwaveUnknownMacro machine = new RisingwaveUnknownMacro( - RisingwaveBindingConfig.INTERNAL_SCHEMA, - server.user, statement, server.macroHandler); server.macroState = machine.start(traceId, authorization); From 9928d02dba27c86768718ab4141f5e99e7b5f92f Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 16 Dec 2024 17:10:57 -0800 Subject: [PATCH 068/104] WIP --- .../query.with.multiple.statements/client.rpt | 14 -------------- .../query.with.multiple.statements/server.rpt | 12 ------------ .../internal/macro/RisingwaveMacroState.java | 1 - 3 files changed, 27 deletions(-) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt index 8183735c29..ea8e69de7b 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt @@ -184,20 +184,6 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "app") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt index 59ac88a870..dbcfad596d 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt @@ -182,18 +182,6 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "app") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java index a08e6c3ba0..59f852d47c 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java @@ -50,7 +50,6 @@ default RisingwaveMacroState onCompletion( return this; } - RisingwaveMacroState onReady( long traceId, long authorization, From bd9e9c124a50e3cfedc31fa4cebd905b3f7f0e2c Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 16 Dec 2024 17:31:42 -0800 Subject: [PATCH 069/104] Checkpoint --- .../streams/effective/drop.stream/client.rpt | 2 +- .../streams/effective/drop.stream/server.rpt | 2 +- .../macro/RisingwaveAlterStreamMacro.java | 2 +- .../macro/RisingwaveAlterZtableMacro.java | 2 +- .../macro/RisingwaveDropStreamMacro.java | 7 +++++-- .../macro/RisingwaveDropZtableMacro.java | 2 +- .../internal/macro/RisingwaveDropZviewMacro.java | 4 ++-- .../internal/stream/RisingwaveProxyFactory.java | 16 +++++++++++----- 8 files changed, 23 insertions(+), 14 deletions(-) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt index 61fc9fc126..d935fd213b 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "DROP SOURCE weather;" +write "DROP SOURCE zb_catalog.weather;" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt index 0e821f3fc3..bc1152dfd1 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt @@ -36,7 +36,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "DROP SOURCE weather;" +read "DROP SOURCE zb_catalog.weather;" [0x00] write advise zilla:flush ${pgsql:flushEx() diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java index 7380f848b3..b5daa0da82 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java @@ -75,7 +75,7 @@ public RisingwaveMacroState onCompletion( long authorization, PgsqlFlushExFW flushEx) { - handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.ALTER_ZTABLE_COMMAND); + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.ALTER_STREAM_COMMAND); return this; } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java index 386e7847f4..8f2218c29b 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java @@ -121,7 +121,7 @@ public RisingwaveMacroState onCompletion( long authorization, PgsqlFlushExFW flushEx) { - handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.ALTER_STREAM_COMMAND); + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.ALTER_ZTABLE_COMMAND); return this; } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java index da2ed705d4..3902096395 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java @@ -20,15 +20,18 @@ public class RisingwaveDropStreamMacro { + private final String systemSchema; private final String sql; private final Drop command; private final RisingwaveMacroHandler handler; public RisingwaveDropStreamMacro( + String systemSchema, String sql, Drop command, RisingwaveMacroHandler handler) { + this.systemSchema = systemSchema; this.sql = sql; this.command = command; this.handler = handler; @@ -83,13 +86,13 @@ public RisingwaveMacroState onError( private final class DropSourceState implements RisingwaveMacroState { private final String sqlFormat = """ - DROP SOURCE %s;\u0000"""; + DROP SOURCE %s.%s;\u0000"""; private void doExecute( long traceId, long authorization) { - String sqlQuery = String.format(sqlFormat, command.name()); + String sqlQuery = String.format(sqlFormat, systemSchema, command.name()); handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java index cb012a7f34..99cef11ba5 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java @@ -164,7 +164,7 @@ private void doExecute( long traceId, long authorization) { - String sqlQuery = String.format(sqlFormat, systemSchema, command.name()); + String sqlQuery = String.format(sqlFormat, command.name()); handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java index a183f68f13..fe740fd40f 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java @@ -158,7 +158,7 @@ public RisingwaveMacroState onError( private final class DropMaterializedViewState implements RisingwaveMacroState { private final String sqlFormat = """ - DROP MATERIALIZED VIEW %s_view;\u0000"""; + DROP MATERIALIZED VIEW %s;\u0000"""; private void doExecute( long traceId, @@ -174,7 +174,7 @@ public RisingwaveMacroState onCompletion( long authorization, PgsqlFlushExFW flushEx) { - handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.DROP_ZTABLE_COMMAND); + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.DROP_ZVIEW_COMMAND); return this; } 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 ec8249f20c..cdafeaad60 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 @@ -846,7 +846,14 @@ public void doRow( int offset, int limit) { - String32FW column = columnRO.tryWrap(buffer, offset, limit); + int progress = offset; + + if ((flags & FLAGS_INIT) != 0x00) + { + progress += Short.BYTES; + } + + String32FW column = columnRO.tryWrap(buffer, progress, limit); if (column != null) { @@ -1790,8 +1797,6 @@ private void decodeUnsupportedCommand( server.doCommandError(traceId, authorization, SEVERITY_ERROR, CODE_XX000, "Unable to execute command because %s\u0000".formatted(reason)); - server.macroHandler.doCompletion(traceId, authorization, command); - final int length = statement.length(); server.onCommandReady(traceId, authorization, length); } @@ -1807,7 +1812,8 @@ private void decodeDropZtableCommand( // TODO: Enhance multiple streams final Drop command = parser.parseDrop(statement).get(0); - RisingwaveDropStreamMacro machine = new RisingwaveDropStreamMacro( + RisingwaveDropZtableMacro machine = new RisingwaveDropZtableMacro( + RisingwaveBindingConfig.INTERNAL_SCHEMA, statement, command, server.macroHandler); @@ -1826,7 +1832,7 @@ private void decodeDropStreamCommand( // TODO: Enhance multiple streams final Drop command = parser.parseDrop(statement).get(0); - RisingwaveDropZtableMacro machine = new RisingwaveDropZtableMacro( + RisingwaveDropStreamMacro machine = new RisingwaveDropStreamMacro( RisingwaveBindingConfig.INTERNAL_SCHEMA, statement, command, From f26c2cc1798e181426820e26e787198696f7b6d4 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 16 Dec 2024 19:08:32 -0800 Subject: [PATCH 070/104] WIP --- .../macro/RisingwaveAlterStreamMacro.java | 5 +- .../macro/RisingwaveAlterZtableMacro.java | 10 ++-- .../macro/RisingwaveCreateFunctionMacro.java | 10 ++-- .../macro/RisingwaveCreateStreamMacro.java | 11 +++-- .../macro/RisingwaveCreateZtableMacro.java | 49 ++++++++++--------- .../macro/RisingwaveCreateZviewMacro.java | 30 +++++++----- .../macro/RisingwaveDropStreamMacro.java | 10 ++-- .../macro/RisingwaveDropZtableMacro.java | 35 +++++++------ .../macro/RisingwaveDropZviewMacro.java | 20 +++++--- .../internal/macro/RisingwaveMacroState.java | 4 ++ .../macro/RisingwaveShowCommandMacro.java | 5 +- .../macro/RisingwaveUnknownMacro.java | 5 +- .../stream/RisingwaveProxyFactory.java | 8 ++- 13 files changed, 120 insertions(+), 82 deletions(-) diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java index b5daa0da82..7cd0638fe1 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java @@ -41,7 +41,7 @@ public RisingwaveMacroState start( long authorization) { AlterTopicState state = new AlterTopicState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -52,7 +52,8 @@ private final class AlterTopicState implements RisingwaveMacroState ALTER TOPIC %s %s;\u0000"""; private final String fieldFormat = "%s COLUMN %s %s, "; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java index 8f2218c29b..d58f12111f 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java @@ -41,7 +41,7 @@ public RisingwaveMacroState start( long authorization) { AlterTopicState state = new AlterTopicState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -52,7 +52,8 @@ private final class AlterTopicState implements RisingwaveMacroState ALTER TOPIC %s %s;\u0000"""; private final String fieldFormat = "%s COLUMN %s %s, "; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -76,7 +77,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { AlterTableState state = new AlterTableState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -98,7 +99,8 @@ private final class AlterTableState implements RisingwaveMacroState ALTER TABLE %s %s;\u0000"""; private final String fieldFormat = "%s COLUMN %s %s, "; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java index 328e9a00bd..6ee20be7f9 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java @@ -78,7 +78,7 @@ public RisingwaveMacroState start( long authorization) { CreateFunctionState state = new CreateFunctionState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -92,7 +92,8 @@ private final class CreateFunctionState implements RisingwaveMacroState LANGUAGE %s USING LINK '%s';\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -145,7 +146,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { GrantResourceState state = new GrantResourceState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -166,7 +167,8 @@ private final class GrantResourceState implements RisingwaveMacroState private final String sqlFormat = """ GRANT ALL PRIVILEGES ON %s %s.%s TO %s;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java index 78f3ccd187..8d66420f57 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java @@ -72,13 +72,12 @@ public RisingwaveCreateStreamMacro( this.schemaRegistry = schemaRegistry; } - public RisingwaveMacroState start( long traceId, long authorization) { CreateTopicState state = new CreateTopicState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -88,7 +87,8 @@ private final class CreateTopicState implements RisingwaveMacroState private final String sqlFormat = """ CREATE TOPIC IF NOT EXISTS %s (%s%s);\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -117,7 +117,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { CreateSourceState state = new CreateSourceState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -147,7 +147,8 @@ private final class CreateSourceState implements RisingwaveMacroState schema.registry = '%s' );\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java index 7b4b6f7d4d..169c3cb602 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java @@ -76,14 +76,9 @@ public RisingwaveCreateZtableMacro( this.scanStartupMil = scanStartupMil; } - public RisingwaveMacroState start( - long traceId, - long authorization) + public RisingwaveMacroState start() { - CreateTopicState state = new CreateTopicState(); - state.doExecute(traceId, authorization); - - return state; + return new CreateTopicState(); } private final class CreateTopicState implements RisingwaveMacroState @@ -94,7 +89,8 @@ private final class CreateTopicState implements RisingwaveMacroState private final StringBuilder fieldBuilder = new StringBuilder(); - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -132,7 +128,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { CreateSourceState state = new CreateSourceState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -162,7 +158,8 @@ private final class CreateSourceState implements RisingwaveMacroState schema.registry = '%s' );\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -215,7 +212,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { CreateMaterializedViewState state = new CreateMaterializedViewState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -239,8 +236,8 @@ private final class CreateMaterializedViewState implements RisingwaveMacroState private final String includeFormat = "COALESCE(%s, %s_header::%s) as %s, "; private final String timestampFormat = "COALESCE(%s, %s_timestamp::%s) as %s, "; - - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -303,7 +300,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { CreateTableState state = new CreateTableState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -324,7 +321,8 @@ private final class CreateTableState implements RisingwaveMacroState private final String sqlFormat = """ CREATE TABLE IF NOT EXISTS %s (%s%s);\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -354,7 +352,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { GrantResourceState state = new GrantResourceState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -375,7 +373,8 @@ private final class GrantResourceState implements RisingwaveMacroState private final String sqlFormat = """ GRANT ALL PRIVILEGES ON %s %s.%s TO %s;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -391,7 +390,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { CreateSinkIntoState state = new CreateSinkIntoState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -412,8 +411,8 @@ private final class CreateSinkIntoState implements RisingwaveMacroState private final String sqlFormat = """ CREATE SINK %s.%s_view_sink INTO %s FROM %s_view;\u0000"""; - - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -430,7 +429,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { CreateSinkState state = new CreateSinkState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -460,7 +459,8 @@ private final class CreateSinkState implements RisingwaveMacroState ) KEY ENCODE TEXT;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -486,7 +486,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { InsertIntoCatalogState state = new InsertIntoCatalogState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -506,7 +506,8 @@ private final class InsertIntoCatalogState implements RisingwaveMacroState private final String sqlFormat = """ INSERT INTO %s.%s (name, sql) VALUES ('%s', '%s');\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java index 887923e002..354c1edbdf 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java @@ -76,7 +76,7 @@ public RisingwaveMacroState start( long authorization) { CreateMaterializedViewState state = new CreateMaterializedViewState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -86,7 +86,8 @@ private final class CreateMaterializedViewState implements RisingwaveMacroState private final String sqlFormat = """ CREATE MATERIALIZED VIEW IF NOT EXISTS %s AS %s;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -105,7 +106,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { GrantResourceState state = new GrantResourceState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -126,7 +127,8 @@ private final class GrantResourceState implements RisingwaveMacroState private final String sqlFormat = """ GRANT ALL PRIVILEGES ON %s %s.%s TO %s;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -142,7 +144,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { DescribeMaterializedViewState state = new DescribeMaterializedViewState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -163,7 +165,8 @@ private final class DescribeMaterializedViewState implements RisingwaveMacroStat private final String sqlFormat = """ DESCRIBE %s.%s;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -243,7 +246,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { CreateTopicState state = new CreateTopicState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -269,7 +272,8 @@ private final class CreateTopicState implements RisingwaveMacroState private final StringBuilder primaryKeyBuilder = new StringBuilder(); - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -299,7 +303,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { CreateSinkState state = new CreateSinkState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -332,7 +336,8 @@ private final class CreateSinkState implements RisingwaveMacroState private final StringBuilder primaryKeyBuilder = new StringBuilder(); - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -366,7 +371,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { InsertIntoCatalogState state = new InsertIntoCatalogState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -387,7 +392,8 @@ private final class InsertIntoCatalogState implements RisingwaveMacroState private final String sqlFormat = """ INSERT INTO %s.%s (name, sql) VALUES ('%s', '%s');\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java index 3902096395..6dcba06e54 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java @@ -42,7 +42,7 @@ public RisingwaveMacroState start( long authorization) { DropTopicState state = new DropTopicState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -52,7 +52,8 @@ private final class DropTopicState implements RisingwaveMacroState private final String sqlFormat = """ DROP TOPIC %s;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -67,7 +68,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { DropSourceState state = new DropSourceState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -88,7 +89,8 @@ private final class DropSourceState implements RisingwaveMacroState private final String sqlFormat = """ DROP SOURCE %s.%s;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java index 99cef11ba5..7bbd56e8c0 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java @@ -42,7 +42,7 @@ public RisingwaveMacroState start( long authorization) { DropTopicState state = new DropTopicState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -52,7 +52,8 @@ private final class DropTopicState implements RisingwaveMacroState private final String sqlFormat = """ DROP TOPIC %s;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -67,7 +68,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { DropSinkState state = new DropSinkState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -88,7 +89,8 @@ private final class DropSinkState implements RisingwaveMacroState private final String sqlFormat = """ DROP SINK %s.%s_sink;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -103,7 +105,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { DropTableSinkState state = new DropTableSinkState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -124,7 +126,8 @@ private final class DropTableSinkState implements RisingwaveMacroState private final String sqlFormat = """ DROP SINK %s.%s_view_sink;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -139,7 +142,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { DropTableState state = new DropTableState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -160,7 +163,8 @@ private final class DropTableState implements RisingwaveMacroState private final String sqlFormat = """ DROP TABLE %s;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -175,7 +179,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { DeleteFromCatalogState state = new DeleteFromCatalogState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -196,7 +200,8 @@ private final class DeleteFromCatalogState implements RisingwaveMacroState private final String sqlFormat = """ DELETE FROM %s.ztables WHERE name = '%s';\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -211,7 +216,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { DropMaterializedViewState state = new DropMaterializedViewState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -232,7 +237,8 @@ private final class DropMaterializedViewState implements RisingwaveMacroState private final String sqlFormat = """ DROP MATERIALIZED VIEW %s_view;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -247,7 +253,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { DropSourceState state = new DropSourceState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -268,7 +274,8 @@ private final class DropSourceState implements RisingwaveMacroState private final String sqlFormat = """ DROP SOURCE %s_source;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java index fe740fd40f..9988b50792 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java @@ -42,7 +42,7 @@ public RisingwaveMacroState start( long authorization) { DropTopicState state = new DropTopicState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -52,7 +52,8 @@ private final class DropTopicState implements RisingwaveMacroState private final String sqlFormat = """ DROP TOPIC %s;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -67,7 +68,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { DropSinkState state = new DropSinkState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -88,7 +89,8 @@ private final class DropSinkState implements RisingwaveMacroState private final String sqlFormat = """ DROP SINK %s.%s_sink;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -103,7 +105,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { DeleteFromCatalogState state = new DeleteFromCatalogState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -124,7 +126,8 @@ private final class DeleteFromCatalogState implements RisingwaveMacroState private final String sqlFormat = """ DELETE FROM %s.zviews WHERE name = '%s';\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { @@ -139,7 +142,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { DropMaterializedViewState state = new DropMaterializedViewState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -160,7 +163,8 @@ private final class DropMaterializedViewState implements RisingwaveMacroState private final String sqlFormat = """ DROP MATERIALIZED VIEW %s;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java index 59f852d47c..849fcd64fb 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java @@ -21,6 +21,10 @@ public interface RisingwaveMacroState { + void onStarted( + long traceId, + long authorization); + default RisingwaveMacroState onRow( T client, long traceId, diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java index ac88ef88af..7753f18c55 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java @@ -42,7 +42,7 @@ public RisingwaveMacroState start( long authorization) { ShowCommandState state = new ShowCommandState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } @@ -52,7 +52,8 @@ private final class ShowCommandState implements RisingwaveMacroState private final String sqlFormat = """ SELECT * FROM zb_catalog.%s;\u0000"""; - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java index 2f216d5854..f61046875b 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java @@ -38,14 +38,15 @@ public RisingwaveMacroState start( long authorization) { UnknownState state = new UnknownState(); - state.doExecute(traceId, authorization); + state.onStarted(traceId, authorization); return state; } private final class UnknownState implements RisingwaveMacroState { - private void doExecute( + @Override + public void onStarted( long traceId, long authorization) { 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 cdafeaad60..770e4c1377 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 @@ -1359,6 +1359,10 @@ private void doPgsqlQuery( messageOffset += lengthMax; } + else + { + doAppBegin(traceId, authorization, server.affinity); + } } } @@ -1658,8 +1662,10 @@ private void decodeCreateZtableCommand( statement, command, server.macroHandler); - server.macroState = machine.start(traceId, authorization); + server.macroState = machine.start(); } + + server.macroState.onStarted(traceId, authorization); } private void decodeCreateStreamCommand( From fa2197a5016f4ff3b1a6bc8538a43a8255682d03 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 16 Dec 2024 20:14:07 -0800 Subject: [PATCH 071/104] WIP --- .../macro/RisingwaveAlterStreamMacro.java | 9 +-- .../macro/RisingwaveAlterZtableMacro.java | 9 +-- .../macro/RisingwaveCreateFunctionMacro.java | 9 +-- .../macro/RisingwaveCreateStreamMacro.java | 9 +-- .../macro/RisingwaveCreateZtableMacro.java | 1 + .../macro/RisingwaveCreateZviewMacro.java | 10 +-- .../macro/RisingwaveDropStreamMacro.java | 9 +-- .../macro/RisingwaveDropZtableMacro.java | 9 +-- .../macro/RisingwaveDropZviewMacro.java | 9 +-- .../macro/RisingwaveShowCommandMacro.java | 9 +-- .../macro/RisingwaveUnknownMacro.java | 9 +-- .../stream/RisingwaveProxyFactory.java | 66 +++++++++++++------ 12 files changed, 68 insertions(+), 90 deletions(-) diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java index 7cd0638fe1..c955de313b 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java @@ -36,14 +36,9 @@ public RisingwaveAlterStreamMacro( this.fieldBuilder = new StringBuilder(); } - public RisingwaveMacroState start( - long traceId, - long authorization) + public RisingwaveMacroState start() { - AlterTopicState state = new AlterTopicState(); - state.onStarted(traceId, authorization); - - return state; + return new AlterTopicState(); } private final class AlterTopicState implements RisingwaveMacroState diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java index d58f12111f..df78166fa8 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java @@ -36,14 +36,9 @@ public RisingwaveAlterZtableMacro( this.fieldBuilder = new StringBuilder(); } - public RisingwaveMacroState start( - long traceId, - long authorization) + public RisingwaveMacroState start() { - AlterTopicState state = new AlterTopicState(); - state.onStarted(traceId, authorization); - - return state; + return new AlterTopicState(); } private final class AlterTopicState implements RisingwaveMacroState diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java index 6ee20be7f9..86e9f87ae3 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java @@ -73,14 +73,9 @@ else if (udf.language.equalsIgnoreCase("python")) } - public RisingwaveMacroState start( - long traceId, - long authorization) + public RisingwaveMacroState start() { - CreateFunctionState state = new CreateFunctionState(); - state.onStarted(traceId, authorization); - - return state; + return new CreateFunctionState(); } private final class CreateFunctionState implements RisingwaveMacroState diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java index 8d66420f57..357c02593b 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java @@ -72,14 +72,9 @@ public RisingwaveCreateStreamMacro( this.schemaRegistry = schemaRegistry; } - public RisingwaveMacroState start( - long traceId, - long authorization) + public RisingwaveMacroState start() { - CreateTopicState state = new CreateTopicState(); - state.onStarted(traceId, authorization); - - return state; + return new CreateTopicState(); } private final class CreateTopicState implements RisingwaveMacroState diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java index 169c3cb602..47e7e32809 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java @@ -515,6 +515,7 @@ public void onStarted( String newSql = sql.replace(ZTABLE_NAME, TABLE_NAME) .replace("\u0000", ""); + newSql = newSql.replaceAll("'", "''"); String sqlQuery = String.format(sqlFormat, systemSchema, ZTABLE_NAME, name, newSql); handler.doExecuteSystemClient(traceId, authorization, sqlQuery); diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java index 354c1edbdf..eb027b7b27 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java @@ -71,14 +71,9 @@ public RisingwaveCreateZviewMacro( this.columns = new Object2ObjectHashMap<>(); } - public RisingwaveMacroState start( - long traceId, - long authorization) + public RisingwaveMacroState start() { - CreateMaterializedViewState state = new CreateMaterializedViewState(); - state.onStarted(traceId, authorization); - - return state; + return new CreateMaterializedViewState(); } private final class CreateMaterializedViewState implements RisingwaveMacroState @@ -401,6 +396,7 @@ public void onStarted( String newSql = sql.replace(ZVIEW_NAME, MATERIALIZED_VIEW_NAME) .replace("\u0000", ""); + newSql = newSql.replaceAll("'", "''"); String sqlQuery = String.format(sqlFormat, systemSchema, ZVIEW_NAME, name, newSql); handler.doExecuteSystemClient(traceId, authorization, sqlQuery); diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java index 6dcba06e54..7883d32bd8 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java @@ -37,14 +37,9 @@ public RisingwaveDropStreamMacro( this.handler = handler; } - public RisingwaveMacroState start( - long traceId, - long authorization) + public RisingwaveMacroState start() { - DropTopicState state = new DropTopicState(); - state.onStarted(traceId, authorization); - - return state; + return new DropTopicState(); } private final class DropTopicState implements RisingwaveMacroState diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java index 7bbd56e8c0..a09f19a9af 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java @@ -37,14 +37,9 @@ public RisingwaveDropZtableMacro( this.handler = handler; } - public RisingwaveMacroState start( - long traceId, - long authorization) + public RisingwaveMacroState start() { - DropTopicState state = new DropTopicState(); - state.onStarted(traceId, authorization); - - return state; + return new DropTopicState(); } private final class DropTopicState implements RisingwaveMacroState diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java index 9988b50792..01a91a1fc8 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java @@ -37,14 +37,9 @@ public RisingwaveDropZviewMacro( this.handler = handler; } - public RisingwaveMacroState start( - long traceId, - long authorization) + public RisingwaveMacroState start() { - DropTopicState state = new DropTopicState(); - state.onStarted(traceId, authorization); - - return state; + return new DropTopicState(); } private final class DropTopicState implements RisingwaveMacroState diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java index 7753f18c55..2c05f24b75 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java @@ -37,14 +37,9 @@ public RisingwaveShowCommandMacro( } - public RisingwaveMacroState start( - long traceId, - long authorization) + public RisingwaveMacroState start() { - ShowCommandState state = new ShowCommandState(); - state.onStarted(traceId, authorization); - - return state; + return new ShowCommandState(); } private final class ShowCommandState implements RisingwaveMacroState diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java index f61046875b..5abf948c8b 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveUnknownMacro.java @@ -33,14 +33,9 @@ public RisingwaveUnknownMacro( } - public RisingwaveMacroState start( - long traceId, - long authorization) + public RisingwaveMacroState start() { - UnknownState state = new UnknownState(); - state.onStarted(traceId, authorization); - - return state; + return new UnknownState(); } private final class UnknownState implements RisingwaveMacroState 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 770e4c1377..3da5e893c6 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 @@ -1689,8 +1689,10 @@ private void decodeCreateStreamCommand( statement, command, server.macroHandler); - server.macroState = machine.start(traceId, authorization); + server.macroState = machine.start(); } + + server.macroState.onStarted(traceId, authorization); } private void decodeCreateZviewCommand( @@ -1713,8 +1715,10 @@ private void decodeCreateZviewCommand( statement, command, server.macroHandler); - server.macroState = machine.start(traceId, authorization); + server.macroState = machine.start(); } + + server.macroState.onStarted(traceId, authorization); } private void decodeCreateFunctionCommand( @@ -1736,8 +1740,10 @@ private void decodeCreateFunctionCommand( statement, command, server.macroHandler); - server.macroState = machine.start(traceId, authorization); + server.macroState = machine.start(); } + + server.macroState.onStarted(traceId, authorization); } private void decodeAlterZtableCommand( @@ -1756,13 +1762,18 @@ private void decodeAlterZtableCommand( decodeUnsupportedCommand(server, traceId, authorization, RisingwaveCompletionCommand.ALTER_ZTABLE_COMMAND, statement, "ALTER ZTABLE only supports ADD"); } - else if (server.macroState == null) + else { - RisingwaveAlterZtableMacro machine = new RisingwaveAlterZtableMacro( - statement, - command, - server.macroHandler); - server.macroState = machine.start(traceId, authorization); + if (server.macroState == null) + { + RisingwaveAlterZtableMacro machine = new RisingwaveAlterZtableMacro( + statement, + command, + server.macroHandler); + server.macroState = machine.start(); + } + + server.macroState.onStarted(traceId, authorization); } } @@ -1782,13 +1793,18 @@ private void decodeAlterStreamCommand( decodeUnsupportedCommand(server, traceId, authorization, RisingwaveCompletionCommand.ALTER_STREAM_COMMAND, statement, "ALTER STREAM only supports ADD"); } - else if (server.macroState == null) + else { - RisingwaveAlterStreamMacro machine = new RisingwaveAlterStreamMacro( - statement, - command, - server.macroHandler); - server.macroState = machine.start(traceId, authorization); + if (server.macroState == null) + { + RisingwaveAlterStreamMacro machine = new RisingwaveAlterStreamMacro( + statement, + command, + server.macroHandler); + server.macroState = machine.start(); + } + + server.macroState.onStarted(traceId, authorization); } } @@ -1823,8 +1839,10 @@ private void decodeDropZtableCommand( statement, command, server.macroHandler); - server.macroState = machine.start(traceId, authorization); + server.macroState = machine.start(); } + + server.macroState.onStarted(traceId, authorization); } private void decodeDropStreamCommand( @@ -1843,8 +1861,10 @@ private void decodeDropStreamCommand( statement, command, server.macroHandler); - server.macroState = machine.start(traceId, authorization); + server.macroState = machine.start(); } + + server.macroState.onStarted(traceId, authorization); } private void decodeDropZviewCommand( @@ -1863,8 +1883,10 @@ private void decodeDropZviewCommand( statement, command, server.macroHandler); - server.macroState = machine.start(traceId, authorization); + server.macroState = machine.start(); } + + server.macroState.onStarted(traceId, authorization); } private void decodeShowCommand( @@ -1881,8 +1903,10 @@ private void decodeShowCommand( statement, command, server.macroHandler); - server.macroState = machine.start(traceId, authorization); + server.macroState = machine.start(); } + + server.macroState.onStarted(traceId, authorization); } private void decodeUnknownCommand( @@ -1896,8 +1920,10 @@ private void decodeUnknownCommand( RisingwaveUnknownMacro machine = new RisingwaveUnknownMacro( statement, server.macroHandler); - server.macroState = machine.start(traceId, authorization); + server.macroState = machine.start(); } + + server.macroState.onStarted(traceId, authorization); } public List splitStatements( From 11f3e09f55faf3d6ba8a99c7a89feefb4ecfbd90 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 17 Dec 2024 10:38:00 -0800 Subject: [PATCH 072/104] WIP --- .../streams/effective/alter.stream.add.column/client.rpt | 6 +++--- .../streams/effective/alter.stream.add.column/server.rpt | 6 +++--- .../streams/effective/alter.ztable.add.column/client.rpt | 6 +++--- .../streams/effective/alter.ztable.add.column/server.rpt | 6 +++--- .../effective/client.stream.established/client.rpt | 6 +++--- .../effective/client.stream.established/server.rpt | 6 +++--- .../effective/create.function.embedded.python/client.rpt | 4 ++-- .../effective/create.function.embedded.python/server.rpt | 4 ++-- .../streams/effective/create.function.embedded/client.rpt | 4 ++-- .../streams/effective/create.function.embedded/server.rpt | 4 ++-- .../streams/effective/create.function.python/client.rpt | 6 +++--- .../streams/effective/create.function.python/server.rpt | 6 +++--- .../effective/create.function.return.struct/client.rpt | 6 +++--- .../effective/create.function.return.struct/server.rpt | 6 +++--- .../effective/create.function.return.table/client.rpt | 6 +++--- .../effective/create.function.return.table/server.rpt | 6 +++--- .../streams/effective/create.function/client.rpt | 6 +++--- .../streams/effective/create.function/server.rpt | 6 +++--- .../effective/create.stream.with.includes/client.rpt | 6 +++--- .../effective/create.stream.with.includes/server.rpt | 6 +++--- .../risingwave/streams/effective/create.stream/client.rpt | 6 +++--- .../risingwave/streams/effective/create.stream/server.rpt | 6 +++--- .../streams/effective/create.streams/client.rpt | 6 +++--- .../streams/effective/create.streams/server.rpt | 6 +++--- .../effective/create.ztable.with.generated.as/client.rpt | 8 ++++---- .../effective/create.ztable.with.generated.as/server.rpt | 8 ++++---- .../effective/create.ztable.with.primary.key/client.rpt | 8 ++++---- .../effective/create.ztable.with.primary.key/server.rpt | 8 ++++---- .../risingwave/streams/effective/create.zview/client.rpt | 8 ++++---- .../risingwave/streams/effective/create.zview/server.rpt | 8 ++++---- .../risingwave/streams/effective/drop.stream/client.rpt | 6 +++--- .../risingwave/streams/effective/drop.stream/server.rpt | 6 +++--- .../risingwave/streams/effective/drop.ztable/client.rpt | 6 +++--- .../risingwave/streams/effective/drop.ztable/server.rpt | 6 +++--- .../risingwave/streams/effective/drop.zview/client.rpt | 6 +++--- .../risingwave/streams/effective/drop.zview/server.rpt | 6 +++--- .../query.with.multiple.statements.errored/client.rpt | 6 +++--- .../query.with.multiple.statements.errored/server.rpt | 6 +++--- .../effective/query.with.multiple.statements/client.rpt | 8 ++++---- .../effective/query.with.multiple.statements/server.rpt | 8 ++++---- .../risingwave/streams/effective/set.variable/client.rpt | 4 ++-- .../risingwave/streams/effective/set.variable/server.rpt | 4 ++-- .../streams/effective/show.tables.with.newline/client.rpt | 4 ++-- .../streams/effective/show.tables.with.newline/server.rpt | 4 ++-- .../risingwave/streams/effective/show.ztables/client.rpt | 4 ++-- .../risingwave/streams/effective/show.ztables/server.rpt | 4 ++-- .../risingwave/streams/effective/show.zviews/client.rpt | 4 ++-- .../risingwave/streams/effective/show.zviews/server.rpt | 4 ++-- .../streams/pgsql/alter.stream.add.column/client.rpt | 2 +- .../streams/pgsql/alter.stream.add.column/server.rpt | 2 +- .../pgsql/alter.stream.modify.column.rejected/client.rpt | 2 +- .../pgsql/alter.stream.modify.column.rejected/server.rpt | 2 +- .../streams/pgsql/alter.ztable.add.column/client.rpt | 2 +- .../streams/pgsql/alter.ztable.add.column/server.rpt | 2 +- .../pgsql/alter.ztable.modify.column.rejected/client.rpt | 2 +- .../pgsql/alter.ztable.modify.column.rejected/server.rpt | 2 +- .../pgsql/create.function.embedded.python/client.rpt | 2 +- .../pgsql/create.function.embedded.python/server.rpt | 2 +- .../streams/pgsql/create.function.embedded/client.rpt | 2 +- .../streams/pgsql/create.function.embedded/server.rpt | 2 +- .../streams/pgsql/create.function.python/client.rpt | 2 +- .../streams/pgsql/create.function.python/server.rpt | 2 +- .../pgsql/create.function.return.struct/client.rpt | 2 +- .../pgsql/create.function.return.struct/server.rpt | 2 +- .../streams/pgsql/create.function.return.table/client.rpt | 2 +- .../streams/pgsql/create.function.return.table/server.rpt | 2 +- .../risingwave/streams/pgsql/create.function/client.rpt | 2 +- .../risingwave/streams/pgsql/create.function/server.rpt | 2 +- .../streams/pgsql/create.stream.with.includes/client.rpt | 2 +- .../streams/pgsql/create.stream.with.includes/server.rpt | 2 +- .../risingwave/streams/pgsql/create.stream/client.rpt | 2 +- .../risingwave/streams/pgsql/create.stream/server.rpt | 2 +- .../risingwave/streams/pgsql/create.streams/client.rpt | 2 +- .../risingwave/streams/pgsql/create.streams/server.rpt | 2 +- .../pgsql/create.ztable.with.generated.as/client.rpt | 2 +- .../pgsql/create.ztable.with.generated.as/server.rpt | 2 +- .../pgsql/create.ztable.with.primary.key/client.rpt | 2 +- .../pgsql/create.ztable.with.primary.key/server.rpt | 2 +- .../risingwave/streams/pgsql/create.zview/client.rpt | 2 +- .../risingwave/streams/pgsql/create.zview/server.rpt | 2 +- .../risingwave/streams/pgsql/drop.stream/client.rpt | 2 +- .../risingwave/streams/pgsql/drop.stream/server.rpt | 2 +- .../risingwave/streams/pgsql/drop.ztable/client.rpt | 2 +- .../risingwave/streams/pgsql/drop.ztable/server.rpt | 2 +- .../risingwave/streams/pgsql/drop.zview/client.rpt | 2 +- .../risingwave/streams/pgsql/drop.zview/server.rpt | 2 +- .../query.with.multiple.statements.errored/client.rpt | 2 +- .../query.with.multiple.statements.errored/server.rpt | 2 +- .../pgsql/query.with.multiple.statements/client.rpt | 2 +- .../pgsql/query.with.multiple.statements/server.rpt | 2 +- .../risingwave/streams/pgsql/set.variable/client.rpt | 2 +- .../risingwave/streams/pgsql/set.variable/server.rpt | 2 +- .../streams/pgsql/show.tables.with.newline/client.rpt | 2 +- .../streams/pgsql/show.tables.with.newline/server.rpt | 2 +- .../risingwave/streams/pgsql/show.ztables/client.rpt | 2 +- .../risingwave/streams/pgsql/show.ztables/server.rpt | 2 +- .../risingwave/streams/pgsql/show.zviews/client.rpt | 2 +- .../risingwave/streams/pgsql/show.zviews/server.rpt | 2 +- .../internal/stream/RisingwaveProxyFactory.java | 6 +++--- 99 files changed, 193 insertions(+), 193 deletions(-) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt index 0455311153..1e251dd878 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -33,7 +33,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -47,7 +47,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt index d2d9208435..71ac5af89b 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -33,7 +33,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -50,7 +50,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.ztable.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.ztable.add.column/client.rpt index 9f3fc9cff0..2c0b6e5b8f 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.ztable.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.ztable.add.column/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -56,7 +56,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -70,7 +70,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.ztable.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.ztable.add.column/server.rpt index 5c17e363c5..09aa9d10a2 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.ztable.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.ztable.add.column/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -57,7 +57,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -73,7 +73,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt index f726fcbe04..aa3e32b15d 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -65,7 +65,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -79,7 +79,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/server.rpt index f3d6688638..76fa395b2a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/client.stream.established/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -33,7 +33,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -49,7 +49,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/client.rpt index 15d845c9d9..0fd5bcdf9c 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -33,7 +33,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/server.rpt index ec8efafccc..6011c85e8f 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded.python/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -33,7 +33,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/client.rpt index 3811b7a5ab..39ba5c1b0e 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -33,7 +33,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/server.rpt index 87c83e01fc..db7785a36e 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.function.embedded/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -33,7 +33,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 a1aef923d1..5956e260fe 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 @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -61,7 +61,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO app;" +write "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO zillabase;" [0x00] write flush @@ -85,7 +85,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 8a6e6d8b70..9e425ea2a6 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 @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -60,7 +60,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO app;" +read "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO zillabase;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -81,7 +81,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 43bdf1b732..5d3eb9c697 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 @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -61,7 +61,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "GRANT ALL PRIVILEGES ON FUNCTION public.key_value TO app;" +write "GRANT ALL PRIVILEGES ON FUNCTION public.key_value TO zillabase;" [0x00] write flush @@ -85,7 +85,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 c4a5d1520b..ed7ddf6ab0 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 @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -60,7 +60,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "GRANT ALL PRIVILEGES ON FUNCTION public.key_value TO app;" +read "GRANT ALL PRIVILEGES ON FUNCTION public.key_value TO zillabase;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -81,7 +81,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 577eab5609..ce005c0162 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 @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -59,7 +59,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "GRANT ALL PRIVILEGES ON FUNCTION public.series TO app;" +write "GRANT ALL PRIVILEGES ON FUNCTION public.series TO zillabase;" [0x00] write flush @@ -83,7 +83,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 c5a0bfab9f..5601ebd9e7 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 @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -60,7 +60,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "GRANT ALL PRIVILEGES ON FUNCTION public.series TO app;" +read "GRANT ALL PRIVILEGES ON FUNCTION public.series TO zillabase;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -81,7 +81,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 543513a4ef..2f3d0cd35b 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 @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -60,7 +60,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO app;" +write "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO zillabase;" [0x00] write flush @@ -84,7 +84,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 7e011294c1..fe18ee3861 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 @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -60,7 +60,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO app;" +read "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO zillabase;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -81,7 +81,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 3fa7f9a0b1..f07cd8149d 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 @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -68,7 +68,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -82,7 +82,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 7fed64f580..1fba41cac1 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 @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -69,7 +69,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -85,7 +85,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt index f726fcbe04..aa3e32b15d 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -65,7 +65,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -79,7 +79,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt index 04e6d7901a..e9c734965b 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -66,7 +66,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -82,7 +82,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt index 9ad792d198..2e82761219 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -97,7 +97,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -111,7 +111,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt index 4d95c24cf0..af5cd0f689 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -97,7 +97,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -113,7 +113,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.generated.as/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.generated.as/client.rpt index c625f6767d..52b32d6449 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.generated.as/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.generated.as/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -119,7 +119,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "GRANT ALL PRIVILEGES ON TABLE public.cities TO app;" +write "GRANT ALL PRIVILEGES ON TABLE public.cities TO zillabase;" [0x00] write flush @@ -226,7 +226,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -240,7 +240,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.generated.as/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.generated.as/server.rpt index 6c2163a475..bbcf29657a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.generated.as/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.generated.as/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -120,7 +120,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "GRANT ALL PRIVILEGES ON TABLE public.cities TO app;" +read "GRANT ALL PRIVILEGES ON TABLE public.cities TO zillabase;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -221,7 +221,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -237,7 +237,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/client.rpt index 5f08388738..4943ea8eb9 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -111,7 +111,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "GRANT ALL PRIVILEGES ON TABLE public.cities TO app;" +write "GRANT ALL PRIVILEGES ON TABLE public.cities TO zillabase;" [0x00] write flush @@ -214,7 +214,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -228,7 +228,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/server.rpt index 65c9eb6d96..cff56e6277 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.ztable.with.primary.key/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -112,7 +112,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "GRANT ALL PRIVILEGES ON TABLE public.cities TO app;" +read "GRANT ALL PRIVILEGES ON TABLE public.cities TO zillabase;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -209,7 +209,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -225,7 +225,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt index 1c90ec237d..1edd5d3faf 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -56,7 +56,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "GRANT ALL PRIVILEGES ON MATERIALIZED VIEW public.distinct_cities TO app;" +write "GRANT ALL PRIVILEGES ON MATERIALIZED VIEW public.distinct_cities TO zillabase;" [0x00] write flush @@ -228,7 +228,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -242,7 +242,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt index 410066dfc8..b130e58c42 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zview/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -57,7 +57,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "GRANT ALL PRIVILEGES ON MATERIALIZED VIEW public.distinct_cities TO app;" +read "GRANT ALL PRIVILEGES ON MATERIALIZED VIEW public.distinct_cities TO zillabase;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -230,7 +230,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -246,7 +246,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt index d935fd213b..9af567a8d8 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -56,7 +56,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -70,7 +70,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt index bc1152dfd1..f374ef1099 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -57,7 +57,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -73,7 +73,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/client.rpt index e2787afc7d..081bbf5bc7 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -171,7 +171,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -185,7 +185,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/server.rpt index 35264febb8..e9a7bb2eff 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.ztable/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -167,7 +167,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -183,7 +183,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt index bd6e1d2c2d..29925cbddc 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -103,7 +103,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -117,7 +117,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt index ffa1d07358..6ea1be4803 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zview/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -100,7 +100,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -116,7 +116,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt index 7beaa96ed5..d3fc8a8516 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -67,7 +67,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -104,7 +104,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt index 0d49df82b6..a26fed89d4 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -68,7 +68,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -106,7 +106,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt index ea8e69de7b..96a790603a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -111,7 +111,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "GRANT ALL PRIVILEGES ON TABLE public.cities TO app;" +write "GRANT ALL PRIVILEGES ON TABLE public.cities TO zillabase;" [0x00] write flush @@ -213,7 +213,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -250,7 +250,7 @@ connect "zilla://streams/app2" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt index dbcfad596d..81923bfa3b 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -112,7 +112,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "GRANT ALL PRIVILEGES ON TABLE public.cities TO app;" +read "GRANT ALL PRIVILEGES ON TABLE public.cities TO zillabase;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -209,7 +209,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -247,7 +247,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/client.rpt index c953e14921..05ed3e2ebf 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -33,7 +33,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/server.rpt index 413947e6a0..bd11cbdb4a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/set.variable/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -33,7 +33,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/client.rpt index 973ef5e4ab..687e504752 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -33,7 +33,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/server.rpt index 862fe0eb97..f5be0060df 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.tables.with.newline/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -33,7 +33,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.ztables/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.ztables/client.rpt index 9a17fcbdd8..183c87362f 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.ztables/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.ztables/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -93,7 +93,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.ztables/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.ztables/server.rpt index 53822dfaed..c407fc66ee 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.ztables/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.ztables/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -94,7 +94,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/client.rpt index 2102f78f01..a87203a830 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -93,7 +93,7 @@ connect "zilla://streams/app1" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/server.rpt index a051c2d64a..1d6af65ec3 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zviews/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") + .parameter("user", "postgres") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") @@ -95,7 +95,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/client.rpt index c5718e47ff..874e48db35 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/client.rpt @@ -20,7 +20,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt index 2135e6de29..8cf47f30b7 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt index d3ac322ab9..c92417c41a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt index c4e764908a..6545acb336 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.add.column/client.rpt index 2436509dd2..5d24fafc09 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.add.column/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.add.column/client.rpt @@ -20,7 +20,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.add.column/server.rpt index 5856b538d3..7187c2ddbc 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.add.column/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.add.column/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.modify.column.rejected/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.modify.column.rejected/client.rpt index f025ed1902..1c43d6863b 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.modify.column.rejected/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.modify.column.rejected/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.modify.column.rejected/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.modify.column.rejected/server.rpt index 63b275ec41..adbe13da2e 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.modify.column.rejected/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.ztable.modify.column.rejected/server.rpt @@ -21,7 +21,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded.python/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded.python/client.rpt index d5bd599d07..335e271f7a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded.python/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded.python/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded.python/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded.python/server.rpt index 443f0a0789..54f9582bba 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded.python/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded.python/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded/client.rpt index da966e7de3..347f459fd4 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded/server.rpt index 61f02331cb..506c18cb76 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.function.embedded/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 5743663f5b..4072ec2141 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 @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 17a18c0a37..33c2481860 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 @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 ecb1a85122..195b4b32a2 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 @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 e935a29277..d9f0266ddb 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 @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 2994e3e31a..cb05af0956 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 @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 1a41a2beb6..8d202fda35 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 @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 602e61dc72..5114f0b3f2 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 @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 a7a67bb86e..426679a572 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 @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 d6e72191a1..ae34f2e2d4 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 @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 2f6ace88dc..6df251e227 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 @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/client.rpt index ddf2c5c990..d8b4ff2531 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/server.rpt index 81cbbcfd7f..c21726633a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/client.rpt index da276503e5..dd9738c83a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/server.rpt index 952efb6b8a..c5efb2d291 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.generated.as/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.generated.as/client.rpt index fb2e69eff4..0c839c34a9 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.generated.as/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.generated.as/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.generated.as/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.generated.as/server.rpt index 93877d0e24..a6b83f0482 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.generated.as/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.generated.as/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key/client.rpt index 7eca180e9e..5c753fd7f5 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key/server.rpt index e3e5d02b44..3304e9deb3 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.ztable.with.primary.key/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/client.rpt index a47f3d74b2..0fecebe6a5 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/server.rpt index a001a3e0a5..732f8c0713 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zview/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/client.rpt index 4fa3fc1ef3..4f5f97fa98 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/server.rpt index 60c210249c..fa03d1578d 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.ztable/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.ztable/client.rpt index bf55a8066a..ea92248810 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.ztable/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.ztable/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.ztable/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.ztable/server.rpt index 0162a2d8eb..1b94af8ae2 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.ztable/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.ztable/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/client.rpt index 51142ae4ae..a68a6f2a94 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/server.rpt index f61c2b2d6f..554b669f8f 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zview/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/client.rpt index aebeed5450..33ea204516 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/server.rpt index de6655efd6..dba2134d4a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/client.rpt index dac8ec54f9..831810e2cb 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/server.rpt index e0c11cbe77..a325b1923c 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/set.variable/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/set.variable/client.rpt index 47da738c0e..62231364d7 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/set.variable/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/set.variable/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/set.variable/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/set.variable/server.rpt index bc89f126ce..0adcb52382 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/set.variable/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/set.variable/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.tables.with.newline/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.tables.with.newline/client.rpt index 0c739d5226..270b9b4247 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.tables.with.newline/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.tables.with.newline/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.tables.with.newline/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.tables.with.newline/server.rpt index f0d34142f6..66dfd41845 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.tables.with.newline/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.tables.with.newline/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.ztables/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.ztables/client.rpt index 74f5dbe475..ee41dddaf1 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.ztables/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.ztables/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.ztables/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.ztables/server.rpt index 66bb7bcdab..9ac7e754f2 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.ztables/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.ztables/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/client.rpt index 6a7a998074..4f701af13b 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/client.rpt @@ -19,7 +19,7 @@ connect "zilla://streams/app0" write zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/server.rpt index cd25c522eb..5f42c02f56 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zviews/server.rpt @@ -23,7 +23,7 @@ accepted read zilla:begin.ext ${pgsql:beginEx() .typeId(zilla:id("pgsql")) - .parameter("user", "app") + .parameter("user", "zillabase") .parameter("database", "dev") .parameter("application_name", "psql") .parameter("client_encoding", "UTF8") 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 3da5e893c6..2ca70503ea 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 @@ -97,7 +97,7 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory private static final String SEVERITY_WARNING = "WARNING\u0000"; private static final String CODE_XX000 = "XX000\u0000"; - private static final String ZILLABASE_USER = "zillabase\u0000"; + private static final String POSTGRES_USER = "postgres\u0000"; private static final String DEFAULT_USER = "default\u0000"; private static final DirectBuffer EMPTY_BUFFER = new UnsafeBuffer(new byte[0]); @@ -308,7 +308,7 @@ private PgsqlServer( binding.routes.forEach(r -> systemClientsByRouteId.put(r.id, - new PgsqlClient(this, routedId, r.id, ZILLABASE_USER))); + new PgsqlClient(this, routedId, r.id, POSTGRES_USER))); userClient = new PgsqlClient(this, routedId, systemId, DEFAULT_USER); @@ -1207,7 +1207,7 @@ private void doAppBegin( .typeId(pgsqlTypeId) .parameters(p -> server.parameters.forEach((k, v) -> { - if (k.contains("user") && user.equals(ZILLABASE_USER)) + if (k.contains("user") && user.equals(POSTGRES_USER)) { p.item(i -> i.name(k).value(user)); } From 661a4bfe615fea6d73d09ec2d029b1c16a1457a5 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 17 Dec 2024 12:25:18 -0800 Subject: [PATCH 073/104] Catch exception --- .../binding/pgsql/parser/PgsqlParser.java | 26 ++++++++++++------- .../stream/RisingwaveProxyFactory.java | 4 ++- 2 files changed, 19 insertions(+), 11 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 f4712b31d6..4155dff887 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 @@ -141,15 +141,21 @@ private void parser( String sql, PostgreSqlParserBaseListener listener) { - sql = sql.replace("\u0000", ""); - - CharStream input = CharStreams.fromString(sql); - lexer.reset(); - lexer.setInputStream(input); - - tokens.setTokenSource(lexer); - parser.setTokenStream(tokens); - - walker.walk(listener, parser.root()); + try + { + sql = sql.replace("\u0000", ""); + + CharStream input = CharStreams.fromString(sql); + lexer.reset(); + lexer.setInputStream(input); + + tokens.setTokenSource(lexer); + parser.setTokenStream(tokens); + + walker.walk(listener, parser.root()); + } + catch (Exception ignore) + { + } } } 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 2ca70503ea..52eccf9cf6 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 @@ -753,7 +753,9 @@ private void doParseQuery( .ifPresent(statement -> { String command = parser.parseCommand(statement); - final PgsqlTransform transform = clientTransforms.get(RisingwaveCommandType.valueOf(command.getBytes())); + final PgsqlTransform transform = command == null + ? clientTransforms.get(RisingwaveCommandType.UNKNOWN_COMMAND) + : clientTransforms.get(RisingwaveCommandType.valueOf(command.getBytes())); transform.transform(this, traceId, authorizationId, statement); }); } From bf4ee6ce3e0f09b845ae1d1551fa3b18c757ac3f Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 17 Dec 2024 12:33:37 -0800 Subject: [PATCH 074/104] Fix tests --- .../binding/pgsql/parser/PgsqlParserTest.java | 43 ++++++++++++------- 1 file changed, 28 insertions(+), 15 deletions(-) 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 df188122fa..244f48fbb7 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 @@ -16,6 +16,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.util.List; @@ -164,28 +165,32 @@ public void shouldCreateZview() assertEquals("SELECT * FROM test_table", createZview.select()); } - @Test(expected = ParseCancellationException.class) + @Test public void shouldHandleEmptyCreateZView() { String sql = "CREATE ZVIEW test_view AS ;"; CreateZview createZview = parser.parseCreateZView(sql); assertNotNull(createZview); - assertEquals("test_view", createZview.name()); + assertNull(createZview.name()); } - @Test(expected = ParseCancellationException.class) + @Test public void shouldHandleInvalidCreateZView() { String sql = "CREATE ZVIEW test_view"; - parser.parseCreateZView(sql); + CreateZview createZview = parser.parseCreateZView(sql); + + assertNull(createZview.name()); } - @Test(expected = ParseCancellationException.class) + @Test public void shouldHandleInvalidZCreateZtable() { String sql = "CREATE ZTABLE test"; - parser.parseCreateTable(sql); + CreateTable createTable = parser.parseCreateTable(sql); + + assertNull(createTable.name()); } @Test @@ -213,7 +218,7 @@ public void shouldDropMultipleZtables() assertEquals("table2", drops.get(1).name()); } - @Test(expected = ParseCancellationException.class) + @Test public void shouldDropZtable() { String sql = "DROP ZTABLE;"; @@ -267,11 +272,13 @@ public void shouldCreateStreamIfNotExists() assertEquals("VARCHAR(100)", createStream.columns().get("name")); } - @Test(expected = ParseCancellationException.class) + @Test public void shouldHandleInvalidCreateStream() { String sql = "CREATE STREAM test_stream"; - parser.parseCreateStream(sql); + CreateStream createStream = parser.parseCreateStream(sql); + + assertNull(createStream.name()); } @Test @@ -310,11 +317,13 @@ public void shouldCreateFunctionWithStructReturnType() assertEquals("python", function.language()); } - @Test(expected = ParseCancellationException.class) + @Test public void shouldHandleInvalidCreateFunction() { String sql = "CREATE FUNCTION test_function()"; - parser.parseCreateFunction(sql); + Function function = parser.parseCreateFunction(sql); + + assertNull(function.name()); } @Test @@ -435,11 +444,13 @@ public void shouldAlterZtableModifyColumn() assertEquals("existing_column", alter.expressions().get(0).columnName()); } - @Test(expected = ParseCancellationException.class) + @Test public void shouldHandleInvalidAlterZtable() { String sql = "ALTER ZTABLE"; - parser.parseAlterTable(sql); + Alter alter = parser.parseAlterTable(sql); + + assertNull(alter.name()); } @Test @@ -489,11 +500,13 @@ public void shouldAlterStreamDropColumn() assertEquals("old_column", alter.expressions().get(0).columnName()); } - @Test(expected = ParseCancellationException.class) + @Test public void shouldHandleInvalidAlterStream() { String sql = "ALTER STREAM"; - parser.parseAlterStream(sql); + Alter alter = parser.parseAlterStream(sql); + + assertNull(alter.name()); } @Test From 41be9ead6325098f94b23b334829207937373deb Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 17 Dec 2024 13:31:27 -0800 Subject: [PATCH 075/104] WIP --- .../binding/pgsql/parser/PostgreSqlLexer.g4 | 2 + .../binding/pgsql/parser/PostgreSqlParser.g4 | 7 ++ .../binding/pgsql/parser/PgsqlParser.java | 10 ++ .../listener/SqlCreateZfunctionListener.java | 116 ++++++++++++++++++ .../binding/pgsql/parser/PgsqlParserTest.java | 35 +++++- pom.xml | 1 + 6 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZfunctionListener.java 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 334384e3b3..a1e08711d1 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 @@ -548,6 +548,8 @@ FUNCTION: 'FUNCTION'; FUNCTIONS: 'FUNCTIONS'; +ZFUNCTION: 'ZFUNCTION'; + GLOBAL: 'GLOBAL'; GRANTED: 'GRANTED'; 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 1fe3739b0c..c675aad8b9 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 @@ -93,6 +93,7 @@ stmt | createforeignserverstmt | createforeigntablestmt | createfunctionstmt + | createzfunctionstmt | creategroupstmt | creatematviewstmt | createzviewstmt @@ -2010,6 +2011,12 @@ opt_nulls_order | ; +createzfunctionstmt + : CREATE opt_or_replace ZFUNCTION func_name func_args_with_defaults ( + RETURNS (func_return | TABLE OPEN_PAREN table_func_column_list CLOSE_PAREN) + )? createfunc_opt_list + ; + 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) 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 4155dff887..514129a727 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 @@ -27,6 +27,7 @@ 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.SqlCreateStreamListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateZfunctionListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateZtableTopicListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateZviewListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlDropListener; @@ -51,6 +52,7 @@ public final class PgsqlParser private final SqlAlterZtableTopicListener alterTableListener; private final SqlAlterStreamTopicListener alterStreamListener; private final SqlCreateFunctionListener createFunctionListener; + private final SqlCreateZfunctionListener createZfunctionListener; private final SqlCreateZviewListener createMaterializedViewListener; private final SqlShowListener showListener; private final SqlDropListener dropListener; @@ -68,6 +70,7 @@ public PgsqlParser() this.alterStreamListener = new SqlAlterStreamTopicListener(tokens); this.createStreamListener = new SqlCreateStreamListener(tokens); this.createFunctionListener = new SqlCreateFunctionListener(tokens); + this.createZfunctionListener = new SqlCreateZfunctionListener(tokens); this.createMaterializedViewListener = new SqlCreateZviewListener(tokens); this.dropListener = new SqlDropListener(); this.showListener = new SqlShowListener(); @@ -116,6 +119,13 @@ public Function parseCreateFunction( return createFunctionListener.function(); } + public Function parseCreateZfunction( + String sql) + { + parser(sql, createZfunctionListener); + return createZfunctionListener.function(); + } + public CreateZview parseCreateZView( String sql) { diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZfunctionListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZfunctionListener.java new file mode 100644 index 0000000000..4ccef89b2e --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZfunctionListener.java @@ -0,0 +1,116 @@ +/* + * Copyright 2021-2024 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 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.model.Function; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionArgument; + +public class SqlCreateZfunctionListener extends PostgreSqlParserBaseListener +{ + private static final String PUBLIC_SCHEMA_NAME = "public"; + private static final String SCHEMA_PATTERN = "\\."; + + private final List tables; + private final List arguments; + private final TokenStream tokens; + + private String schema; + private String name; + private String returnType; + private String asFunction; + private String language; + + public SqlCreateZfunctionListener( + TokenStream tokens) + { + this.tables = new ArrayList<>(); + this.arguments = new ArrayList<>(); + this.tokens = tokens; + } + + public Function function() + { + return new Function(schema, name, arguments, returnType, tables, asFunction, language); + } + + @Override + public void enterRoot( + PostgreSqlParser.RootContext ctx) + { + schema = null; + name = null; + returnType = null; + asFunction = null; + language = null; + arguments.clear(); + tables.clear(); + } + + @Override + public void enterCreatefunctionstmt( + PostgreSqlParser.CreatefunctionstmtContext ctx) + { + String text = ctx.func_name().getText(); + String[] split = text.split(SCHEMA_PATTERN); + schema = split.length > 1 ? split[0] : PUBLIC_SCHEMA_NAME; + name = split.length > 1 ? split[1] : text; + } + + @Override + public void enterFunc_arg( + PostgreSqlParser.Func_argContext ctx) + { + String argName = ctx.param_name() != null ? ctx.param_name().getText() : null; + String argType = tokens.getText(ctx.func_type()); + 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 + public void enterFunc_type( + PostgreSqlParser.Func_typeContext ctx) + { + returnType = tokens.getText(ctx.typename()); + } + + @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/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 244f48fbb7..2645f9b309 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 @@ -21,7 +21,6 @@ import java.util.List; -import org.antlr.v4.runtime.misc.ParseCancellationException; import org.junit.Before; import org.junit.Test; @@ -539,4 +538,38 @@ public void shouldParseShowZtables() assertEquals("ZTABLES", type); } + + @Test + public void shouldParseCreateZfunctionWithTableReturnType() + { + String sql = """ + CREATE ZFUNCTION send_payment_handler( + type VARCHAR, + user_id VARCHAR, + random VARCHAR, + amount DOUBLE PRECISION, + notes VARCHAR) + RETURNS TABLE( + type VARCHAR, + user_id VARCHAR, + request_id VARCHAR, + amount DOUBLE PRECISION, + notes VARCHAR) + LANGUAGE SQL AS $$ + SELECT + CASE + WHEN balance >= amount THEN "PaymentSent" + ELSE "PaymentDeclined" + END AS type, + user_id, + request_id, + amount, + balance, + notes + FROM balance as b WHERE b.user_id = user_id; + $$ + """; + Function function = parser.parseCreateZfunction(sql); + assertNotNull(function); + } } diff --git a/pom.xml b/pom.xml index 64b033f4e8..a4bcb9e3d0 100644 --- a/pom.xml +++ b/pom.xml @@ -305,6 +305,7 @@ src/conf/** src/**/*.btm + src/**/gen/* SLASHSTAR_STYLE From 56e4d34afe24bfc63f33f384de3726565ed18684 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 17 Dec 2024 13:31:45 -0800 Subject: [PATCH 076/104] Fix checkstyle --- .../zilla/runtime/binding/pgsql/parser/PgsqlParserTest.java | 1 - 1 file changed, 1 deletion(-) 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 244f48fbb7..b1ecebca4e 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 @@ -21,7 +21,6 @@ import java.util.List; -import org.antlr.v4.runtime.misc.ParseCancellationException; import org.junit.Before; import org.junit.Test; From 80103c006a7949e8d4324a6e0aee646c4f6d332c Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 17 Dec 2024 13:45:14 -0800 Subject: [PATCH 077/104] WIP --- .../binding/pgsql/parser/PgsqlParser.java | 9 +++-- .../listener/SqlCreateFunctionListener.java | 6 +-- .../listener/SqlCreateZfunctionListener.java | 29 +++++--------- .../{Function.java => CreateFunction.java} | 2 +- .../pgsql/parser/model/CreateZfunction.java | 27 +++++++++++++ .../binding/pgsql/parser/PgsqlParserTest.java | 38 ++++++++++++++++--- .../macro/RisingwaveCreateFunctionMacro.java | 6 +-- .../stream/RisingwaveProxyFactory.java | 4 +- 8 files changed, 83 insertions(+), 38 deletions(-) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/{Function.java => CreateFunction.java} (96%) create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZfunction.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 514129a727..81e69d8ac5 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 @@ -35,9 +35,10 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZfunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateFunction; public final class PgsqlParser { @@ -112,18 +113,18 @@ public CreateStream parseCreateStream( return createStreamListener.stream(); } - public Function parseCreateFunction( + public CreateFunction parseCreateFunction( String sql) { parser(sql, createFunctionListener); return createFunctionListener.function(); } - public Function parseCreateZfunction( + public CreateZfunction parseCreateZfunction( String sql) { parser(sql, createZfunctionListener); - return createZfunctionListener.function(); + return createZfunctionListener.zfunction(); } public CreateZview parseCreateZView( 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 ab3c6c0898..2750ad0aca 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,7 +21,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.model.Function; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateFunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionArgument; public class SqlCreateFunctionListener extends PostgreSqlParserBaseListener @@ -47,9 +47,9 @@ public SqlCreateFunctionListener( this.tokens = tokens; } - public Function function() + public CreateFunction function() { - return new Function(schema, name, arguments, returnType, tables, asFunction, language); + return new CreateFunction(schema, name, arguments, returnType, tables, asFunction, language); } @Override diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZfunctionListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZfunctionListener.java index 4ccef89b2e..cbd3886319 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZfunctionListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZfunctionListener.java @@ -21,7 +21,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.model.Function; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZfunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionArgument; public class SqlCreateZfunctionListener extends PostgreSqlParserBaseListener @@ -29,27 +29,26 @@ public class SqlCreateZfunctionListener extends PostgreSqlParserBaseListener private static final String PUBLIC_SCHEMA_NAME = "public"; private static final String SCHEMA_PATTERN = "\\."; - private final List tables; + private final List returnTypes; private final List arguments; private final TokenStream tokens; private String schema; private String name; - private String returnType; private String asFunction; private String language; public SqlCreateZfunctionListener( TokenStream tokens) { - this.tables = new ArrayList<>(); + this.returnTypes = new ArrayList<>(); this.arguments = new ArrayList<>(); this.tokens = tokens; } - public Function function() + public CreateZfunction zfunction() { - return new Function(schema, name, arguments, returnType, tables, asFunction, language); + return new CreateZfunction(schema, name, arguments, returnTypes, asFunction, language); } @Override @@ -58,16 +57,15 @@ public void enterRoot( { schema = null; name = null; - returnType = null; asFunction = null; language = null; arguments.clear(); - tables.clear(); + returnTypes.clear(); } @Override - public void enterCreatefunctionstmt( - PostgreSqlParser.CreatefunctionstmtContext ctx) + public void enterCreatezfunctionstmt( + PostgreSqlParser.CreatezfunctionstmtContext ctx) { String text = ctx.func_name().getText(); String[] split = text.split(SCHEMA_PATTERN); @@ -89,15 +87,8 @@ 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 - public void enterFunc_type( - PostgreSqlParser.Func_typeContext ctx) - { - returnType = tokens.getText(ctx.typename()); + String argType = tokens.getText(ctx.func_type()); + returnTypes.add(new FunctionArgument(argName, argType)); } @Override diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Function.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateFunction.java similarity index 96% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Function.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateFunction.java index 2c3d96fa76..dfbe06f070 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Function.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateFunction.java @@ -16,7 +16,7 @@ import java.util.List; -public record Function( +public record CreateFunction( String schema, String name, List arguments, diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZfunction.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZfunction.java new file mode 100644 index 0000000000..9be3efdff8 --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZfunction.java @@ -0,0 +1,27 @@ +/* + * Copyright 2021-2024 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.model; + +import java.util.List; + +public record CreateZfunction( + String schema, + String name, + List arguments, + List returnTypes, + 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 2645f9b309..e31ca20eb4 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 @@ -27,9 +27,10 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZfunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateFunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; public class PgsqlParserTest @@ -284,7 +285,7 @@ public void shouldHandleInvalidCreateStream() public void shouldCreateFunction() { String sql = "CREATE FUNCTION test_function() RETURNS INT AS $$ BEGIN RETURN 1; END $$ LANGUAGE plpgsql;"; - Function function = parser.parseCreateFunction(sql); + CreateFunction function = parser.parseCreateFunction(sql); assertNotNull(function); assertEquals("test_function", function.name()); @@ -295,7 +296,7 @@ public void shouldCreateFunction() public void shouldCreateFunctionWithLanguage() { String sql = "CREATE FUNCTION test_function(int) RETURNS TABLE (x INT) LANGUAGE python AS 'test_function';"; - Function function = parser.parseCreateFunction(sql); + CreateFunction function = parser.parseCreateFunction(sql); assertNotNull(function); assertEquals("test_function", function.name()); @@ -308,7 +309,7 @@ public void shouldCreateFunctionWithStructReturnType() { String sql = "CREATE FUNCTION test_function(int) RETURNS struct" + " LANGUAGE python AS 'test_function';"; - Function function = parser.parseCreateFunction(sql); + CreateFunction function = parser.parseCreateFunction(sql); assertNotNull(function); assertEquals("test_function", function.name()); @@ -320,7 +321,7 @@ public void shouldCreateFunctionWithStructReturnType() public void shouldHandleInvalidCreateFunction() { String sql = "CREATE FUNCTION test_function()"; - Function function = parser.parseCreateFunction(sql); + CreateFunction function = parser.parseCreateFunction(sql); assertNull(function.name()); } @@ -569,7 +570,32 @@ RETURNS TABLE( FROM balance as b WHERE b.user_id = user_id; $$ """; - Function function = parser.parseCreateZfunction(sql); + CreateZfunction function = parser.parseCreateZfunction(sql); assertNotNull(function); + + assertEquals("send_payment_handler", function.name()); + assertEquals(5, function.arguments().size()); + assertEquals("type", function.arguments().get(0).name()); + assertEquals("VARCHAR", function.arguments().get(0).type()); + assertEquals("user_id", function.arguments().get(1).name()); + assertEquals("VARCHAR", function.arguments().get(1).type()); + assertEquals("random", function.arguments().get(2).name()); + assertEquals("VARCHAR", function.arguments().get(2).type()); + assertEquals("amount", function.arguments().get(3).name()); + assertEquals("DOUBLE PRECISION", function.arguments().get(3).type()); + assertEquals("notes", function.arguments().get(4).name()); + assertEquals("VARCHAR", function.arguments().get(4).type()); + + assertEquals(5, function.returnTypes().size()); + assertEquals("type", function.returnTypes().get(0).name()); + assertEquals("VARCHAR", function.returnTypes().get(0).type()); + assertEquals("user_id", function.returnTypes().get(1).name()); + assertEquals("VARCHAR", function.returnTypes().get(1).type()); + assertEquals("request_id", function.returnTypes().get(2).name()); + assertEquals("VARCHAR", function.returnTypes().get(2).type()); + assertEquals("amount", function.returnTypes().get(3).name()); + assertEquals("DOUBLE PRECISION", function.returnTypes().get(3).type()); + assertEquals("notes", function.returnTypes().get(4).name()); + assertEquals("VARCHAR", function.returnTypes().get(4).type()); } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java index 86e9f87ae3..3b16e1966e 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java @@ -16,7 +16,7 @@ import java.util.List; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateFunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionArgument; import io.aklivity.zilla.runtime.binding.risingwave.config.RisingwaveUdfConfig; import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; @@ -32,7 +32,7 @@ public class RisingwaveCreateFunctionMacro private final String systemSchema; private final String user; private final String sql; - private final Function command; + private final CreateFunction command; private final RisingwaveMacroHandler handler; private final StringBuilder fieldBuilder; @@ -41,7 +41,7 @@ public RisingwaveCreateFunctionMacro( String systemSchema, String user, String sql, - Function command, + CreateFunction command, RisingwaveMacroHandler handler) { String javaServer = null; 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 52eccf9cf6..dc4f755fa6 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 @@ -41,7 +41,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Function; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateFunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; import io.aklivity.zilla.runtime.binding.risingwave.internal.RisingwaveConfiguration; import io.aklivity.zilla.runtime.binding.risingwave.internal.config.RisingwaveBindingConfig; @@ -1731,7 +1731,7 @@ private void decodeCreateFunctionCommand( { if (server.macroState == null) { - final Function command = parser.parseCreateFunction(statement); + final CreateFunction command = parser.parseCreateFunction(statement); RisingwaveBindingConfig binding = server.binding; From 1da5fa4e0335277d7cd80641b3e127ff974f6873 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 17 Dec 2024 15:41:37 -0800 Subject: [PATCH 078/104] WIP --- .../binding/pgsql/parser/PostgreSqlParser.g4 | 1 + .../parser/listener/SqlCommandListener.java | 7 + .../effective/create.zfunction/client.rpt | 90 ++++++++++++ .../effective/create.zfunction/server.rpt | 90 ++++++++++++ .../effective/show.zfunctions/client.rpt | 124 +++++++++++++++++ .../effective/show.zfunctions/server.rpt | 128 ++++++++++++++++++ .../streams/pgsql/create.zfunction/client.rpt | 77 +++++++++++ .../streams/pgsql/create.zfunction/server.rpt | 78 +++++++++++ .../streams/pgsql/show.zfunctions/client.rpt | 76 +++++++++++ .../streams/pgsql/show.zfunctions/server.rpt | 79 +++++++++++ .../risingwave/streams/EffectiveIT.java | 9 ++ .../binding/risingwave/streams/PgsqlIT.java | 9 ++ .../config/RisingwaveCommandType.java | 2 + .../macro/RisingwaveCreateZfunctionMacro.java | 100 ++++++++++++++ .../stream/RisingwaveCompletionCommand.java | 1 + .../stream/RisingwaveProxyFactory.java | 29 +++- .../risingwave/internal/stream/ProxyIT.java | 10 ++ 17 files changed, 908 insertions(+), 2 deletions(-) create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zfunction/client.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zfunction/server.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zfunctions/client.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zfunctions/server.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zfunction/client.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zfunction/server.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/client.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/server.rpt create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZfunctionMacro.java 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 c675aad8b9..b402a02428 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 @@ -1649,6 +1649,7 @@ show_object_type_name | HEAD | ZTABLES | ZVIEWS + | ZFUNCTIONS ; dropstmt 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 737da741f4..68a4ad9128 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 @@ -102,6 +102,13 @@ public void enterCreatefunctionstmt( } } + @Override + public void enterCreatezfunctionstmt( + PostgreSqlParser.CreatezfunctionstmtContext ctx) + { + command = "CREATE ZFUNCTION"; + } + @Override public void enterDropstmt( PostgreSqlParser.DropstmtContext ctx) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zfunction/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zfunction/client.rpt new file mode 100644 index 0000000000..0aa6276c81 --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zfunction/client.rpt @@ -0,0 +1,90 @@ +# +# Copyright 2021-2024 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. +# + +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "postgres") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "INSERT INTO zb_catalog.zfunctions (name, sql) VALUES ('send_payment_handler', 'CREATE ZFUNCTION send_payment_handler(\n" + " type VARCHAR,\n" + " user_id VARCHAR,\n" + " random VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR)\n" + "RETURNS TABLE(\n" + " type VARCHAR,\n" + " user_id VARCHAR,\n" + " request_id VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR)\n" + "LANGUAGE SQL AS $$\n" + " SELECT\n" + " CASE\n" + " WHEN balance >= amount THEN \"PaymentSent\"\n" + " ELSE \"PaymentDeclined\"\n" + " END AS type,\n" + " user_id,\n" + " request_id,\n" + " amount,\n" + " balance,\n" + " notes\n" + " FROM balance as b WHERE b.user_id = user_id;\n" + "$$');" + [0x00] + +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("INSERT 0 2") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zfunction/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zfunction/server.rpt new file mode 100644 index 0000000000..96690328fd --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zfunction/server.rpt @@ -0,0 +1,90 @@ +# +# Copyright 2021-2024 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. +# + +accept "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "postgres") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "INSERT INTO zb_catalog.zfunctions (name, sql) VALUES ('send_payment_handler', 'CREATE ZFUNCTION send_payment_handler(\n" + " type VARCHAR,\n" + " user_id VARCHAR,\n" + " random VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR)\n" + "RETURNS TABLE(\n" + " type VARCHAR,\n" + " user_id VARCHAR,\n" + " request_id VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR)\n" + "LANGUAGE SQL AS $$\n" + " SELECT\n" + " CASE\n" + " WHEN balance >= amount THEN \"PaymentSent\"\n" + " ELSE \"PaymentDeclined\"\n" + " END AS type,\n" + " user_id,\n" + " request_id,\n" + " amount,\n" + " balance,\n" + " notes\n" + " FROM balance as b WHERE b.user_id = user_id;\n" + "$$');" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("INSERT 0 2") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +accepted + + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zfunctions/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zfunctions/client.rpt new file mode 100644 index 0000000000..0b3ef369c8 --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zfunctions/client.rpt @@ -0,0 +1,124 @@ +# +# Copyright 2021-2024 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. +# + +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "postgres") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "SELECT * FROM zb_catalog.zfunctions;" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("sql") + .tableOid(0) + .index(0) + .typeOid(20) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +read [0x00 0x02] # Field Count + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data + [0x00 0x00 0x02 0x43] # Length + "CREATE ZFUNCTION send_payment_handler(\n" # Data + " type VARCHAR,\n" + " user_id VARCHAR,\n" + " random VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR)\n" + "RETURNS TABLE(\n" + " type VARCHAR,\n" + " user_id VARCHAR,\n" + " request_id VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR)\n" + "LANGUAGE SQL AS $$\n" + " SELECT\n" + " CASE\n" + " WHEN balance >= amount THEN \"PaymentSent\"\n" + " ELSE \"PaymentDeclined\"\n" + " END AS type,\n" + " user_id,\n" + " request_id,\n" + " amount,\n" + " balance,\n" + " notes\n" + " FROM balance as b WHERE b.user_id = user_id;\n" + "$$" + + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SELECT 1") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zfunctions/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zfunctions/server.rpt new file mode 100644 index 0000000000..752ad3cc64 --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zfunctions/server.rpt @@ -0,0 +1,128 @@ +# +# Copyright 2021-2024 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. +# + +accept "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "postgres") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "SELECT * FROM zb_catalog.zfunctions;" +read [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("sql") + .tableOid(0) + .index(0) + .typeOid(20) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +write [0x00 0x02] # Field Count + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data + [0x00 0x00 0x02 0x43] # Length + "CREATE ZFUNCTION send_payment_handler(\n" # Data + " type VARCHAR,\n" + " user_id VARCHAR,\n" + " random VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR)\n" + "RETURNS TABLE(\n" + " type VARCHAR,\n" + " user_id VARCHAR,\n" + " request_id VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR)\n" + "LANGUAGE SQL AS $$\n" + " SELECT\n" + " CASE\n" + " WHEN balance >= amount THEN \"PaymentSent\"\n" + " ELSE \"PaymentDeclined\"\n" + " END AS type,\n" + " user_id,\n" + " request_id,\n" + " amount,\n" + " balance,\n" + " notes\n" + " FROM balance as b WHERE b.user_id = user_id;\n" + "$$" + [0x00] + +write flush + + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SELECT 1") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zfunction/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zfunction/client.rpt new file mode 100644 index 0000000000..ddfc1801bf --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zfunction/client.rpt @@ -0,0 +1,77 @@ +# +# Copyright 2021-2024 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. +# + +connect "zilla://streams/app0" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "CREATE ZFUNCTION send_payment_handler(\n" + " type VARCHAR,\n" + " user_id VARCHAR,\n" + " random VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR)\n" + "RETURNS TABLE(\n" + " type VARCHAR,\n" + " user_id VARCHAR,\n" + " request_id VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR)\n" + "LANGUAGE SQL AS $$\n" + " SELECT\n" + " CASE\n" + " WHEN balance >= amount THEN \"PaymentSent\"\n" + " ELSE \"PaymentDeclined\"\n" + " END AS type,\n" + " user_id,\n" + " request_id,\n" + " amount,\n" + " balance,\n" + " notes\n" + " FROM balance as b WHERE b.user_id = user_id;\n" + "$$" + [0x00] + +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_ZFUNCTION") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zfunction/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zfunction/server.rpt new file mode 100644 index 0000000000..aa734eae80 --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zfunction/server.rpt @@ -0,0 +1,78 @@ +# +# Copyright 2021-2024 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. +# + +property serverAddress "zilla://streams/app0" + +accept ${serverAddress} + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "CREATE ZFUNCTION send_payment_handler(\n" + " type VARCHAR,\n" + " user_id VARCHAR,\n" + " random VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR)\n" + "RETURNS TABLE(\n" + " type VARCHAR,\n" + " user_id VARCHAR,\n" + " request_id VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR)\n" + "LANGUAGE SQL AS $$\n" + " SELECT\n" + " CASE\n" + " WHEN balance >= amount THEN \"PaymentSent\"\n" + " ELSE \"PaymentDeclined\"\n" + " END AS type,\n" + " user_id,\n" + " request_id,\n" + " amount,\n" + " balance,\n" + " notes\n" + " FROM balance as b WHERE b.user_id = user_id;\n" + "$$" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_ZFUNCTION") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/client.rpt new file mode 100644 index 0000000000..2632b6845d --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/client.rpt @@ -0,0 +1,76 @@ +# +# Copyright 2021-2024 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. +# + +connect "zilla://streams/app0" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "SHOW ZFUNCTIONS;" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("Name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(4) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +read [0x00 0x01] # Field Count + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SHOW_COMMAND") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/server.rpt new file mode 100644 index 0000000000..7cb6d1c3b5 --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/server.rpt @@ -0,0 +1,79 @@ +# +# Copyright 2021-2024 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. +# + +property serverAddress "zilla://streams/app0" + +accept ${serverAddress} + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "SHOW ZFUNCTIONS;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("Name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(4) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} +write flush + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +write [0x00 0x01] # Field Count + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SHOW_COMMAND") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java index 90f971869a..1d8dc7b334 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java @@ -244,4 +244,13 @@ public void shouldShowZviews() throws Exception { k3po.finish(); } + + @Test + @Specification({ + "${app}/create.zfunction/client", + "${app}/create.zfunction/server" }) + public void shouldCreateZfunction() throws Exception + { + k3po.finish(); + } } diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java index 9f9eeccdb6..661f68bb6c 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java @@ -260,4 +260,13 @@ public void shouldShowZviews() throws Exception { k3po.finish(); } + + @Test + @Specification({ + "${app}/create.zfunction/client", + "${app}/create.zfunction/server" }) + public void shouldCreateZfunction() throws Exception + { + k3po.finish(); + } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java index 2f5209f51a..cf4723bd0c 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java @@ -23,6 +23,7 @@ public enum RisingwaveCommandType CREATE_STREAM_COMMAND("CREATE STREAM".getBytes()), CREATE_ZVIEW_COMMAND("CREATE ZVIEW".getBytes()), CREATE_FUNCTION_COMMAND("CREATE FUNCTION".getBytes()), + CREATE_ZFUNCTION_COMMAND("CREATE ZFUNCTION".getBytes()), ALTER_ZTABLE_COMMAND("ALTER ZTABLE".getBytes()), ALTER_STREAM_COMMAND("ALTER STREAM".getBytes()), ALTER_TOPIC_COMMAND("ALTER TOPIC".getBytes()), @@ -32,6 +33,7 @@ public enum RisingwaveCommandType DROP_ZVIEW_COMMAND("DROP ZVIEW".getBytes()), SHOW_ZTABLES_COMMAND("SHOW ZTABLES".getBytes()), SHOW_ZVIEWS_COMMAND("SHOW ZVIEWS".getBytes()), + SHOW_ZFUNCTIONS_COMMAND("SHOW ZFUNCTIONS".getBytes()), UNKNOWN_COMMAND("UNKNOWN".getBytes()); private final byte[] value; diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZfunctionMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZfunctionMacro.java new file mode 100644 index 0000000000..5e9b629a64 --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZfunctionMacro.java @@ -0,0 +1,100 @@ +/* + * Copyright 2021-2024 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.macro; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZfunction; +import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; + +public class RisingwaveCreateZfunctionMacro +{ + private static final String ZFUNCTION_NAME = "zfunctions"; + + private final String systemSchema; + private final String user; + private final String sql; + private final CreateZfunction command; + private final RisingwaveMacroHandler handler; + + public RisingwaveCreateZfunctionMacro( + String systemSchema, + String user, + String sql, + CreateZfunction command, + RisingwaveMacroHandler handler) + { + this.systemSchema = systemSchema; + this.user = user; + this.sql = sql; + this.command = command; + this.handler = handler; + } + + public RisingwaveMacroState start() + { + return new InsertIntoCatalogState(); + } + + + private final class InsertIntoCatalogState implements RisingwaveMacroState + { + private final String sqlFormat = """ + INSERT INTO %s.%s (name, sql) VALUES ('%s', '%s');\u0000"""; + + @Override + public void onStarted( + long traceId, + long authorization) + { + String name = command.name(); + + String newSql = sql.replace("\u0000", ""); + newSql = newSql.replaceAll("'", "''"); + String sqlQuery = String.format(sqlFormat, systemSchema, ZFUNCTION_NAME, name, newSql); + + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onCompletion( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.CREATE_ZFUNCTION_COMMAND); + return this; + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doReady(traceId, authorization, sql.length()); + return null; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doFlushProxy(traceId, authorization, flushEx); + return this; + } + } +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java index fbe8572c4b..839a92e939 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java @@ -21,6 +21,7 @@ public enum RisingwaveCompletionCommand CREATE_ZVIEW_COMMAND("CREATE_ZVIEW".getBytes()), CREATE_STREAM_COMMAND("CREATE_STREAM".getBytes()), CREATE_FUNCTION_COMMAND("CREATE_FUNCTION".getBytes()), + CREATE_ZFUNCTION_COMMAND("CREATE_ZFUNCTION".getBytes()), ALTER_ZTABLE_COMMAND("ALTER_ZTABLE".getBytes()), ALTER_STREAM_COMMAND("ALTER_STREAM".getBytes()), DROP_ZTABLE_COMMAND("DROP_ZTABLE".getBytes()), 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 dc4f755fa6..05a912bb2a 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 @@ -37,11 +37,12 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PgsqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateFunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZfunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateFunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; import io.aklivity.zilla.runtime.binding.risingwave.internal.RisingwaveConfiguration; import io.aklivity.zilla.runtime.binding.risingwave.internal.config.RisingwaveBindingConfig; @@ -51,6 +52,7 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveAlterZtableMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateFunctionMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateStreamMacro; +import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZfunctionMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZtableMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZviewMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveDropStreamMacro; @@ -158,13 +160,14 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory clientTransforms.put(RisingwaveCommandType.CREATE_STREAM_COMMAND, this::decodeCreateStreamCommand); clientTransforms.put(RisingwaveCommandType.CREATE_ZVIEW_COMMAND, this::decodeCreateZviewCommand); clientTransforms.put(RisingwaveCommandType.CREATE_FUNCTION_COMMAND, this::decodeCreateFunctionCommand); + clientTransforms.put(RisingwaveCommandType.CREATE_ZFUNCTION_COMMAND, this::decodeCreateZfunctionCommand); clientTransforms.put(RisingwaveCommandType.ALTER_ZTABLE_COMMAND, this::decodeAlterZtableCommand); clientTransforms.put(RisingwaveCommandType.ALTER_STREAM_COMMAND, this::decodeAlterStreamCommand); clientTransforms.put(RisingwaveCommandType.DROP_STREAM_COMMAND, this::decodeDropStreamCommand); clientTransforms.put(RisingwaveCommandType.DROP_ZTABLE_COMMAND, this::decodeDropZtableCommand); clientTransforms.put(RisingwaveCommandType.DROP_ZVIEW_COMMAND, this::decodeDropZviewCommand); clientTransforms.put(RisingwaveCommandType.SHOW_ZTABLES_COMMAND, this::decodeShowCommand); - clientTransforms.put(RisingwaveCommandType.SHOW_ZVIEWS_COMMAND, this::decodeShowCommand); + clientTransforms.put(RisingwaveCommandType.SHOW_ZFUNCTIONS_COMMAND, this::decodeShowCommand); clientTransforms.put(RisingwaveCommandType.UNKNOWN_COMMAND, this::decodeUnknownCommand); this.clientTransforms = clientTransforms; } @@ -1748,6 +1751,28 @@ private void decodeCreateFunctionCommand( server.macroState.onStarted(traceId, authorization); } + private void decodeCreateZfunctionCommand( + PgsqlServer server, + long traceId, + long authorization, + String statement) + { + if (server.macroState == null) + { + final CreateZfunction command = parser.parseCreateZfunction(statement); + + RisingwaveCreateZfunctionMacro machine = new RisingwaveCreateZfunctionMacro( + RisingwaveBindingConfig.INTERNAL_SCHEMA, + server.user, + statement, + command, + server.macroHandler); + server.macroState = machine.start(); + } + + server.macroState.onStarted(traceId, authorization); + } + private void decodeAlterZtableCommand( PgsqlServer server, long traceId, diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java index 7fe9f27e6b..83b242ba7f 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java @@ -301,4 +301,14 @@ public void shouldShowZtables() throws Exception { k3po.finish(); } + + @Test + @Configuration("proxy.risingwave.yaml") + @Specification({ + "${pgsql}/create.zfunction/client", + "${effective}/create.zfunction/server" }) + public void shouldCreateZfunction() throws Exception + { + k3po.finish(); + } } From 10801a1adf6bae77704b497f9f01f755c734f703 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 17 Dec 2024 18:23:16 -0800 Subject: [PATCH 079/104] WIP --- .../binding/pgsql/parser/PostgreSqlLexer.g4 | 11 ++- .../binding/pgsql/parser/PostgreSqlParser.g4 | 66 ++++++++++---- .../binding/pgsql/parser/PgsqlParser.java | 19 ++-- ...java => SqlAlterZstreamTopicListener.java} | 10 +-- .../parser/listener/SqlCommandListener.java | 10 +-- ...ner.java => SqlCreateZstreamListener.java} | 58 ++++++++---- .../pgsql/parser/model/CreateZstream.java | 26 ++++++ .../{CreateStream.java => ZstreamColumn.java} | 8 +- .../binding/pgsql/parser/PgsqlParserTest.java | 90 +++++++++++-------- .../macro/RisingwaveCreateStreamMacro.java | 6 +- .../stream/RisingwaveProxyFactory.java | 4 +- 11 files changed, 206 insertions(+), 102 deletions(-) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/{SqlAlterStreamTopicListener.java => SqlAlterZstreamTopicListener.java} (91%) rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/{SqlCreateStreamListener.java => SqlCreateZstreamListener.java} (51%) create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZstream.java rename incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/{CreateStream.java => ZstreamColumn.java} (86%) 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 a1e08711d1..e6faacc4fc 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 @@ -58,6 +58,9 @@ STAR: '*'; EQUAL: '='; +OPEN_CURLY : '{'; +CLOSE_CURLY : '}'; + DOT: '.'; //NamedArgument : ':='; @@ -295,7 +298,7 @@ TOPIC: 'TOPIC'; TOPICS: 'TOPICS'; -STREAM: 'STREAM'; +ZSTREAM: 'ZSTREAM'; ZVIEW: 'ZVIEW'; @@ -550,6 +553,10 @@ FUNCTIONS: 'FUNCTIONS'; ZFUNCTION: 'ZFUNCTION'; +ZFUNCTIONS: 'ZFUNCTIONS'; + +COMMAND_FUNCTIONS: 'command_functions'; + GLOBAL: 'GLOBAL'; GRANTED: 'GRANTED'; @@ -564,6 +571,8 @@ HOUR_P: 'HOUR'; IDENTITY_P: 'IDENTITY'; +DISPATCH_P: 'DISPATCH'; + IF_P: 'IF'; IMMEDIATE: 'IMMEDIATE'; 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 b402a02428..e2e9d71141 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 @@ -107,7 +107,7 @@ stmt | createseqstmt | createstmt | createztstmt - | createstreamstmt + | createzstreamstmt | createsubscriptionstmt | createstatsstmt | createtablespacestmt @@ -415,15 +415,15 @@ altertablestmt | 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 STREAM (IF_P EXISTS)? relation_expr alter_stream_cmds + | ALTER ZSTREAM (IF_P EXISTS)? relation_expr alter_zstream_cmds | ALTER ZVIEW (IF_P EXISTS)? qualified_name alter_table_cmds ; -alter_stream_cmds - : alter_stream_cmd (COMMA alter_stream_cmd)* +alter_zstream_cmds + : alter_zstream_cmd (COMMA alter_zstream_cmd)* ; -alter_stream_cmd +alter_zstream_cmd : ADD_P columnDef | ADD_P IF_P NOT EXISTS columnDef | ADD_P COLUMN columnDef @@ -694,25 +694,57 @@ copy_generic_opt_arg_list_item : opt_boolean_or_string ; -createstreamstmt - : CREATE STREAM (IF_P NOT EXISTS)? stream_name OPEN_PAREN stream_columns CLOSE_PAREN opt_with_stream +createzstreamstmt + : CREATE ZSTREAM (IF_P NOT EXISTS)? zstream_name OPEN_PAREN zstream_columns CLOSE_PAREN opt_with_zstream ; -stream_name +zstream_name : qualified_name ; -stream_columns - : stream_column (COMMA stream_column)* +// Updated stream_columns to include GENERATED ALWAYS AS with various options +zstream_columns + : zstream_column (COMMA zstream_column)* ; -stream_column - : colid typename +zstream_column + : colid typename opt_generated_always ; -opt_with_stream - : WITH reloptions - | +opt_generated_always + : | GENERATED ALWAYS AS generation_type + ; + +generation_type + : IDENTITY_P + | DISPATCH_P + | TIMESTAMP + ; + +opt_with_zstream + : WITH OPEN_PAREN zreloptions CLOSE_PAREN + | // Empty option if WITH is not used + ; + +zreloptions + : zreloption_elem (COMMA reloption_elem)* + ; + +zreloption_elem + : collabel EQUAL def_arg + | COMMAND_FUNCTIONS EQUAL OPEN_CURLY command_function_mappings CLOSE_CURLY + ; + +command_function_mappings + : command_function_mapping (COMMA command_function_mapping)* + ; + +command_function_mapping + : sconst EQUAL function_name + ; + +function_name + : sconst ; createztstmt @@ -1646,7 +1678,6 @@ show_object_type_name | VIEWS | MATERIALIZED VIEWS | TOPICS - | HEAD | ZTABLES | ZVIEWS | ZFUNCTIONS @@ -1673,9 +1704,8 @@ object_type_any_name | VIEW | MATERIALIZED VIEW | TOPIC - | STREAM + | ZSTREAM | ZVIEW - | HEAD | ZTABLE | INDEX | FOREIGN TABLE 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 81e69d8ac5..28c6c4a95c 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,23 +22,23 @@ import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.tree.ParseTreeWalker; -import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlAlterStreamTopicListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlAlterZstreamTopicListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlAlterZtableTopicListener; 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.SqlCreateStreamListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateZfunctionListener; +import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateZstreamListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateZtableTopicListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlCreateZviewListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlDropListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlShowListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateFunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZfunction; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZstream; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateFunction; public final class PgsqlParser { @@ -48,10 +48,10 @@ public final class PgsqlParser private final CommonTokenStream tokens; private final PostgreSqlParser parser; private final SqlCommandListener commandListener; - private final SqlCreateStreamListener createStreamListener; + private final SqlCreateZstreamListener createStreamListener; private final SqlCreateZtableTopicListener createTableListener; private final SqlAlterZtableTopicListener alterTableListener; - private final SqlAlterStreamTopicListener alterStreamListener; + private final SqlAlterZstreamTopicListener alterStreamListener; private final SqlCreateFunctionListener createFunctionListener; private final SqlCreateZfunctionListener createZfunctionListener; private final SqlCreateZviewListener createMaterializedViewListener; @@ -68,8 +68,8 @@ public PgsqlParser() this.commandListener = new SqlCommandListener(tokens); this.createTableListener = new SqlCreateZtableTopicListener(tokens); this.alterTableListener = new SqlAlterZtableTopicListener(tokens); - this.alterStreamListener = new SqlAlterStreamTopicListener(tokens); - this.createStreamListener = new SqlCreateStreamListener(tokens); + this.alterStreamListener = new SqlAlterZstreamTopicListener(tokens); + this.createStreamListener = new SqlCreateZstreamListener(tokens); this.createFunctionListener = new SqlCreateFunctionListener(tokens); this.createZfunctionListener = new SqlCreateZfunctionListener(tokens); this.createMaterializedViewListener = new SqlCreateZviewListener(tokens); @@ -106,7 +106,7 @@ public Alter parseAlterStream( return alterStreamListener.alter(); } - public CreateStream parseCreateStream( + public CreateZstream parseCreateStream( String sql) { parser(sql, createStreamListener); @@ -167,6 +167,7 @@ private void parser( } catch (Exception ignore) { + ignore.printStackTrace(); } } } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterStreamTopicListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZstreamTopicListener.java similarity index 91% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterStreamTopicListener.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZstreamTopicListener.java index acac110246..04de903d41 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterStreamTopicListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlAlterZstreamTopicListener.java @@ -25,7 +25,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.model.AlterExpression; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; -public class SqlAlterStreamTopicListener extends PostgreSqlParserBaseListener +public class SqlAlterZstreamTopicListener extends PostgreSqlParserBaseListener { private static final String PUBLIC_SCHEMA_NAME = "public"; private static final String SCHEMA_PATTERN = "\\."; @@ -36,7 +36,7 @@ public class SqlAlterStreamTopicListener extends PostgreSqlParserBaseListener private String schema; private String name; - public SqlAlterStreamTopicListener( + public SqlAlterZstreamTopicListener( TokenStream tokens) { this.alterExpressions = new ArrayList<>(); @@ -68,10 +68,10 @@ public void enterQualified_name( } @Override - public void enterAlter_stream_cmds( - PostgreSqlParser.Alter_stream_cmdsContext ctx) + public void enterAlter_zstream_cmds( + PostgreSqlParser.Alter_zstream_cmdsContext ctx) { - for (PostgreSqlParser.Alter_stream_cmdContext alterStreamCmdCtx : ctx.alter_stream_cmd()) + for (PostgreSqlParser.Alter_zstream_cmdContext alterStreamCmdCtx : ctx.alter_zstream_cmd()) { if (alterStreamCmdCtx.ADD_P() != null) { 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 68a4ad9128..8e5663db95 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 @@ -62,17 +62,17 @@ else if (ctx.ALTER() != null && ctx.TOPIC() != null) { command = "ALTER TOPIC"; } - else if (ctx.ALTER() != null && ctx.STREAM() != null) + else if (ctx.ALTER() != null && ctx.ZSTREAM() != null) { - command = "ALTER STREAM"; + command = "ALTER ZSTREAM"; } } @Override - public void enterCreatestreamstmt( - PostgreSqlParser.CreatestreamstmtContext ctx) + public void enterCreatezstreamstmt( + PostgreSqlParser.CreatezstreamstmtContext ctx) { - command = "CREATE STREAM"; + command = "CREATE ZSTREAM"; } @Override 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/SqlCreateZstreamListener.java similarity index 51% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateStreamListener.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZstreamListener.java index 1663c8853e..b1a9156ec0 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/SqlCreateZstreamListener.java @@ -14,44 +14,51 @@ */ package io.aklivity.zilla.runtime.binding.pgsql.parser.listener; +import java.util.ArrayList; import java.util.LinkedHashMap; +import java.util.List; 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.model.CreateStream; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZstream; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.ZstreamColumn; -public class SqlCreateStreamListener extends PostgreSqlParserBaseListener +public class SqlCreateZstreamListener extends PostgreSqlParserBaseListener { private static final String PUBLIC_SCHEMA_NAME = "public"; private static final String SCHEMA_PATTERN = "\\."; - private final Map columns; + private final List columns; + private final Map commandHandlers; private final TokenStream tokens; private String schema; private String name; - public SqlCreateStreamListener( + public SqlCreateZstreamListener( TokenStream tokens) { - this.columns = new LinkedHashMap<>(); + this.columns = new ArrayList<>(); + this.commandHandlers = new LinkedHashMap<>(); this.tokens = tokens; } - public CreateStream stream() + public CreateZstream stream() { - return new CreateStream(schema, name, columns); + return new CreateZstream(schema, name, columns, commandHandlers); } @Override public void enterRoot( PostgreSqlParser.RootContext ctx) { + schema = null; name = null; columns.clear(); + commandHandlers.clear(); } @Override @@ -65,17 +72,38 @@ public void enterQualified_name( } @Override - public void enterCreatestreamstmt( - PostgreSqlParser.CreatestreamstmtContext ctx) + public void enterZstream_columns( + PostgreSqlParser.Zstream_columnsContext ctx) { - if (ctx.stream_columns() != null) + ctx.zstream_column().forEach(c -> { - for (PostgreSqlParser.Stream_columnContext streamElement : ctx.stream_columns().stream_column()) + String name = c.colid().getText(); + String type = tokens.getText(c.typename()); + String generatedAlways = tokens.getText(c.opt_generated_always()); + + columns.add(new ZstreamColumn(name, type, generatedAlways)); + }); + } + + @Override + public void enterCommand_function_mappings( + PostgreSqlParser.Command_function_mappingsContext ctx) + { + ctx.command_function_mapping().forEach(c -> + { + String dispatch = c.sconst().getText(); + if (dispatch != null && dispatch.length() > 1) { - String columnName = streamElement.colid().getText(); - String dataType = tokens.getText(streamElement.typename()); - columns.put(columnName, dataType); + dispatch = dispatch.substring(1, dispatch.length() - 1); } - } + String handler = c.function_name().getText(); + + if (handler != null && handler.length() > 1) + { + handler = handler.substring(1, handler.length() - 1); + } + + commandHandlers.put(dispatch, handler); + }); } } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZstream.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZstream.java new file mode 100644 index 0000000000..30bc8beb25 --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZstream.java @@ -0,0 +1,26 @@ +/* + * Copyright 2021-2024 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.model; + +import java.util.List; +import java.util.Map; + +public record CreateZstream( + String schema, + String name, + List columns, + Map commandHandlers) +{ +} diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateStream.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/ZstreamColumn.java similarity index 86% rename from incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateStream.java rename to incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/ZstreamColumn.java index 8217928af8..37b20f78c4 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateStream.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/ZstreamColumn.java @@ -14,11 +14,9 @@ */ package io.aklivity.zilla.runtime.binding.pgsql.parser.model; -import java.util.Map; - -public record CreateStream( - String schema, +public record ZstreamColumn( String name, - Map columns) + String type, + String generatedAlways) { } 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 e31ca20eb4..e6fb9b4159 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 @@ -25,12 +25,12 @@ import org.junit.Test; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateFunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZfunction; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZstream; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateFunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; public class PgsqlParserTest @@ -248,39 +248,6 @@ public void shouldDropZview() assertTrue(drops.get(0).name().equals("test_materialized_view")); } - @Test - public void shouldCreateStream() - { - String sql = "CREATE STREAM test_stream (id INT, name VARCHAR(100));"; - CreateStream createStream = parser.parseCreateStream(sql); - assertNotNull(createStream); - assertEquals("test_stream", createStream.name()); - assertEquals(2, createStream.columns().size()); - assertEquals("INT", createStream.columns().get("id")); - assertEquals("VARCHAR(100)", createStream.columns().get("name")); - } - - @Test - public void shouldCreateStreamIfNotExists() - { - String sql = "CREATE STREAM IF NOT EXISTS test_stream (id INT, name VARCHAR(100));"; - CreateStream createStream = parser.parseCreateStream(sql); - assertNotNull(createStream); - assertEquals("test_stream", createStream.name()); - assertEquals(2, createStream.columns().size()); - assertEquals("INT", createStream.columns().get("id")); - assertEquals("VARCHAR(100)", createStream.columns().get("name")); - } - - @Test - public void shouldHandleInvalidCreateStream() - { - String sql = "CREATE STREAM test_stream"; - CreateStream createStream = parser.parseCreateStream(sql); - - assertNull(createStream.name()); - } - @Test public void shouldCreateFunction() { @@ -360,7 +327,7 @@ public void shouldHandleInvalidCreateTableWithMissingColumns() @Test public void shouldCreateZtableWithDefaultValues() { - String sql = "CREATE ZTABLE test (id INT DEFAULT 0, name VARCHAR(100) DEFAULT 'unknown');"; + String sql = "CREATE ZTABLE test (id INT DEFAULT 0, name VARCHAR(100));"; CreateTable createTable = parser.parseCreateTable(sql); assertNotNull(createTable); @@ -478,7 +445,7 @@ public void shouldDetectCreateTopicCommand() @Test public void shouldDetectAlterStreamAddColumn() { - String sql = "ALTER STREAM test_stream ADD COLUMN new_column INT;"; + String sql = "ALTER ZSTREAM test_stream ADD COLUMN new_column INT;"; Alter alter = parser.parseAlterStream(sql); assertEquals("test_stream", alter.name()); @@ -491,7 +458,7 @@ public void shouldDetectAlterStreamAddColumn() @Test public void shouldAlterStreamDropColumn() { - String sql = "ALTER STREAM test_stream DROP COLUMN old_column;"; + String sql = "ALTER ZSTREAM test_stream DROP COLUMN old_column;"; Alter alter = parser.parseAlterStream(sql); assertEquals("test_stream", alter.name()); @@ -512,7 +479,7 @@ public void shouldHandleInvalidAlterStream() @Test public void shouldAlterStreamModifyColumn() { - String sql = "ALTER STREAM test_stream ALTER COLUMN existing_column TYPE VARCHAR(100);"; + String sql = "ALTER ZSTREAM test_stream ALTER COLUMN existing_column TYPE VARCHAR(100);"; Alter alter = parser.parseAlterStream(sql); assertEquals("test_stream", alter.name()); @@ -598,4 +565,49 @@ RETURNS TABLE( assertEquals("notes", function.returnTypes().get(4).name()); assertEquals("VARCHAR", function.returnTypes().get(4).type()); } + + @Test + public void shouldCreateZstream() + { + String sql = """ + CREATE ZSTREAM app_events( + type VARCHAR GENERATED ALWAYS AS DISPATCH, + user_id VARCHAR, + request_id VARCHAR, + amount DOUBLE PRECISION, + notes VARCHAR, + owner_id VARCHAR GENERATED ALWAYS AS IDENTITY, + created_at TIMESTAMP GENERATED ALWAYS AS TIMESTAMP + ) + WITH ( + command_functions = { + 'SendPayment' = 'send_payment_handler', + 'RequestPayment' = 'request_payment_handler', + 'RejectPayment' = 'reject_payment_handler' + } + );"""; + + CreateZstream createStream = parser.parseCreateStream(sql); + + assertEquals("app_events", createStream.name()); + assertEquals("type", createStream.columns().get(0).name()); + assertEquals("VARCHAR", createStream.columns().get(0).type()); + assertEquals("user_id", createStream.columns().get(1).name()); + assertEquals("VARCHAR", createStream.columns().get(1).type()); + assertEquals("request_id", createStream.columns().get(2).name()); + assertEquals("VARCHAR", createStream.columns().get(2).type()); + assertEquals("amount", createStream.columns().get(3).name()); + assertEquals("DOUBLE PRECISION", createStream.columns().get(3).type()); + assertEquals("notes", createStream.columns().get(4).name()); + assertEquals("VARCHAR", createStream.columns().get(4).type()); + assertEquals("owner_id", createStream.columns().get(5).name()); + assertEquals("VARCHAR", createStream.columns().get(5).type()); + assertEquals("created_at", createStream.columns().get(6).name()); + assertEquals("TIMESTAMP", createStream.columns().get(6).type()); + + assertEquals(3, createStream.commandHandlers().size()); + assertEquals("send_payment_handler", createStream.commandHandlers().get("SendPayment")); + assertEquals("request_payment_handler", createStream.commandHandlers().get("RequestPayment")); + assertEquals("reject_payment_handler", createStream.commandHandlers().get("RejectPayment")); + } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java index 357c02593b..56153e08a1 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java @@ -19,7 +19,7 @@ import org.agrona.collections.Object2ObjectHashMap; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZstream; import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; @@ -48,7 +48,7 @@ public class RisingwaveCreateStreamMacro private final String systemSchema; private final String user; private final String sql; - private final CreateStream command; + private final CreateZstream command; private final RisingwaveMacroHandler handler; public RisingwaveCreateStreamMacro( @@ -58,7 +58,7 @@ public RisingwaveCreateStreamMacro( String systemSchema, String user, String sql, - CreateStream command, + CreateZstream command, RisingwaveMacroHandler handler) { this.scanStartupMil = scanStartupMil; 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 05a912bb2a..9838fd5f06 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 @@ -38,7 +38,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PgsqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateFunction; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZstream; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZfunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; @@ -1681,7 +1681,7 @@ private void decodeCreateStreamCommand( { if (server.macroState == null) { - final CreateStream command = parser.parseCreateStream(statement); + final CreateZstream command = parser.parseCreateStream(statement); RisingwaveBindingConfig binding = server.binding; From d45ae9275c59bfa5b299d6b70db3f32b6d2aa0a3 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 17 Dec 2024 18:29:45 -0800 Subject: [PATCH 080/104] WIP --- .../aklivity/zilla/runtime/binding/pgsql/parser/PgsqlParser.java | 1 - 1 file changed, 1 deletion(-) 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 28c6c4a95c..0e89cba8f0 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 @@ -167,7 +167,6 @@ private void parser( } catch (Exception ignore) { - ignore.printStackTrace(); } } } From ec564d123dc04d06817ab65a5ed14de0fb7ff8fc Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 17 Dec 2024 19:32:07 -0800 Subject: [PATCH 081/104] WIP --- .../binding/pgsql/parser/PgsqlParserTest.java | 75 +++++++++++++++++++ .../create.stream.with.includes/client.rpt | 23 ++++++ .../create.stream.with.includes/server.rpt | 22 ++++++ .../effective/create.stream/client.rpt | 23 ++++++ .../effective/create.stream/server.rpt | 22 ++++++ .../effective/create.streams/client.rpt | 46 ++++++++++++ .../effective/create.streams/server.rpt | 44 +++++++++++ .../macro/RisingwaveCreateStreamMacro.java | 50 +++++++++++++ 8 files changed, 305 insertions(+) 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 b1ecebca4e..dc18e9b38c 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 @@ -164,6 +164,81 @@ public void shouldCreateZview() assertEquals("SELECT * FROM test_table", createZview.select()); } + @Test + public void shouldCreateZviewFromLargeQuery() + { + String sql = """ + CREATE ZVIEW test_view AS + SELECT + generate_unique_id()::varchar AS id, + 'PaymentSent' AS eventName, + encode(sc.zilla_identity, 'escape') AS from_user_id, + fu.username AS from_username, + sc.user_id AS to_user_id, + tu.username AS to_username, + -sc.amount AS amount, + CAST(extract(epoch FROM sc.zilla_timestamp) AS FLOAT) * 1000 AS timestamp + FROM + streampay_commands AS sc + LEFT JOIN streampay_users fu ON encode(sc.zilla_identity, 'escape') = fu.id + LEFT JOIN streampay_users tu ON sc.user_id = tu.id + WHERE + sc.type = 'SendPayment' + UNION ALL + SELECT + generate_unique_id()::varchar AS id, + 'PaymentReceived' AS eventName, + encode(sc.zilla_identity, 'escape') AS from_user_id, + fu.username AS from_username, + sc.user_id AS to_user_id, + tu.username AS to_username, + sc.amount AS amount, + CAST(extract(epoch FROM sc.zilla_timestamp) AS FLOAT) * 1000 AS timestamp + FROM + streampay_commands AS sc + LEFT JOIN streampay_users fu ON encode(sc.zilla_identity, 'escape') = fu.id + LEFT JOIN streampay_users tu ON sc.user_id = tu.id + WHERE + sc.type = 'SendPayment' + UNION ALL + SELECT + generate_unique_id()::varchar AS id, + 'PaymentRequested' AS eventName, + encode(sc.zilla_identity, 'escape') AS from_user_id, + fu.username AS from_username, + sc.user_id AS to_user_id, + tu.username AS to_username, + sc.amount, + CAST(extract(epoch FROM sc.zilla_timestamp) AS FLOAT) * 1000 AS timestamp + FROM + streampay_commands sc + LEFT JOIN streampay_users fu ON encode(sc.zilla_identity, 'escape') = fu.id + LEFT JOIN streampay_users tu ON sc.user_id = tu.id + WHERE + sc.type = 'RequestPayment'; + SELECT + generate_unique_id()::varchar AS id, + 'PaymentRejected' AS eventName, + encode(sc.zilla_identity, 'escape') AS from_user_id, + fu.username AS from_username, + sc.user_id AS to_user_id, + tu.username AS to_username, + sc.amount, + CAST(extract(epoch FROM sc.zilla_timestamp) AS FLOAT) * 1000 AS timestamp + FROM + streampay_commands sc + LEFT JOIN streampay_users fu ON encode(sc.zilla_identity, 'escape') = fu.id + LEFT JOIN streampay_users tu ON sc.user_id = tu.id + WHERE + sc.type = 'RejectRequest'; + """; + CreateZview createZview = parser.parseCreateZView(sql); + + assertNotNull(createZview); + assertEquals("test_view", createZview.name()); + assertEquals("SELECT * FROM test_table", createZview.select()); + } + @Test public void shouldHandleEmptyCreateZView() { 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 f07cd8149d..c86d68aafa 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 @@ -62,6 +62,29 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "GRANT ALL PRIVILEGES ON SOURCE public.weather TO zillabase;" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" 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 1fba41cac1..351844ae5c 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 @@ -65,6 +65,28 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "GRANT ALL PRIVILEGES ON SOURCE public.weather TO zillabase;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + accepted read zilla:begin.ext ${pgsql:beginEx() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt index aa3e32b15d..286cd15792 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt @@ -59,6 +59,29 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "GRANT ALL PRIVILEGES ON SOURCE public.weather TO zillabase;" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt index e9c734965b..19ae4c7a09 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt @@ -62,6 +62,28 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "GRANT ALL PRIVILEGES ON SOURCE public.weather TO zillabase;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + accepted read zilla:begin.ext ${pgsql:beginEx() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt index 2e82761219..2838e04dd1 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt @@ -59,6 +59,29 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "GRANT ALL PRIVILEGES ON SOURCE public.weather_c TO zillabase;" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -91,6 +114,29 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "GRANT ALL PRIVILEGES ON SOURCE public.weather_f TO zillabase;" + [0x00] +write flush + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt index af5cd0f689..f6536341cd 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt @@ -62,6 +62,28 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "GRANT ALL PRIVILEGES ON SOURCE public.weather_c TO zillabase;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() @@ -93,6 +115,28 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "GRANT ALL PRIVILEGES ON SOURCE public.weather_f TO zillabase;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + accepted read zilla:begin.ext ${pgsql:beginEx() diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java index 357c02593b..5587fdc958 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java @@ -142,6 +142,8 @@ private final class CreateSourceState implements RisingwaveMacroState schema.registry = '%s' );\u0000"""; + private boolean errored; + @Override public void onStarted( long traceId, @@ -167,6 +169,54 @@ public void onStarted( handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + GrantResourceState state = null; + if (!errored) + { + state = new GrantResourceState(); + state.onStarted(traceId, authorization); + } + else + { + handler.doReady(traceId, authorization, sql.length()); + } + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + // TODO: Handle error across all macro states + errored = true; + handler.doFlushProxy(traceId, authorization, flushEx); + return this; + } + } + + private final class GrantResourceState implements RisingwaveMacroState + { + private final String sqlFormat = """ + GRANT ALL PRIVILEGES ON SOURCE %s.%s TO %s;\u0000"""; + + @Override + public void onStarted( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, command.schema(), command.name(), user); + + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + } + @Override public RisingwaveMacroState onCompletion( long traceId, From 5da213034b2a932aef5fa7d664bab8cad9014c7d Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 17 Dec 2024 23:55:56 -0800 Subject: [PATCH 082/104] WIP --- .../binding/pgsql/parser/PgsqlParserTest.java | 75 ------------------- .../create.function.python/client.rpt | 23 ------ .../create.function.python/server.rpt | 22 ------ .../create.function.return.struct/client.rpt | 24 ------ .../create.function.return.struct/server.rpt | 22 ------ .../create.function.return.table/client.rpt | 23 ------ .../create.function.return.table/server.rpt | 22 ------ .../effective/create.function/client.rpt | 23 ------ .../effective/create.function/server.rpt | 22 ------ .../macro/RisingwaveCreateFunctionMacro.java | 40 ---------- 10 files changed, 296 deletions(-) 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 dc18e9b38c..b1ecebca4e 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 @@ -164,81 +164,6 @@ public void shouldCreateZview() assertEquals("SELECT * FROM test_table", createZview.select()); } - @Test - public void shouldCreateZviewFromLargeQuery() - { - String sql = """ - CREATE ZVIEW test_view AS - SELECT - generate_unique_id()::varchar AS id, - 'PaymentSent' AS eventName, - encode(sc.zilla_identity, 'escape') AS from_user_id, - fu.username AS from_username, - sc.user_id AS to_user_id, - tu.username AS to_username, - -sc.amount AS amount, - CAST(extract(epoch FROM sc.zilla_timestamp) AS FLOAT) * 1000 AS timestamp - FROM - streampay_commands AS sc - LEFT JOIN streampay_users fu ON encode(sc.zilla_identity, 'escape') = fu.id - LEFT JOIN streampay_users tu ON sc.user_id = tu.id - WHERE - sc.type = 'SendPayment' - UNION ALL - SELECT - generate_unique_id()::varchar AS id, - 'PaymentReceived' AS eventName, - encode(sc.zilla_identity, 'escape') AS from_user_id, - fu.username AS from_username, - sc.user_id AS to_user_id, - tu.username AS to_username, - sc.amount AS amount, - CAST(extract(epoch FROM sc.zilla_timestamp) AS FLOAT) * 1000 AS timestamp - FROM - streampay_commands AS sc - LEFT JOIN streampay_users fu ON encode(sc.zilla_identity, 'escape') = fu.id - LEFT JOIN streampay_users tu ON sc.user_id = tu.id - WHERE - sc.type = 'SendPayment' - UNION ALL - SELECT - generate_unique_id()::varchar AS id, - 'PaymentRequested' AS eventName, - encode(sc.zilla_identity, 'escape') AS from_user_id, - fu.username AS from_username, - sc.user_id AS to_user_id, - tu.username AS to_username, - sc.amount, - CAST(extract(epoch FROM sc.zilla_timestamp) AS FLOAT) * 1000 AS timestamp - FROM - streampay_commands sc - LEFT JOIN streampay_users fu ON encode(sc.zilla_identity, 'escape') = fu.id - LEFT JOIN streampay_users tu ON sc.user_id = tu.id - WHERE - sc.type = 'RequestPayment'; - SELECT - generate_unique_id()::varchar AS id, - 'PaymentRejected' AS eventName, - encode(sc.zilla_identity, 'escape') AS from_user_id, - fu.username AS from_username, - sc.user_id AS to_user_id, - tu.username AS to_username, - sc.amount, - CAST(extract(epoch FROM sc.zilla_timestamp) AS FLOAT) * 1000 AS timestamp - FROM - streampay_commands sc - LEFT JOIN streampay_users fu ON encode(sc.zilla_identity, 'escape') = fu.id - LEFT JOIN streampay_users tu ON sc.user_id = tu.id - WHERE - sc.type = 'RejectRequest'; - """; - CreateZview createZview = parser.parseCreateZView(sql); - - assertNotNull(createZview); - assertEquals("test_view", createZview.name()); - assertEquals("SELECT * FROM test_table", createZview.select()); - } - @Test public void shouldHandleEmptyCreateZView() { 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 5956e260fe..7d5ed1d55c 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 @@ -56,29 +56,6 @@ read advised zilla:flush ${pgsql:flushEx() .build()} -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO zillabase;" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("GRANT_PRIVILEGES") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" 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 9e425ea2a6..db40a088c5 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 @@ -55,28 +55,6 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO zillabase;" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("GRANT_PRIVILEGES") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - accepted read zilla:begin.ext ${pgsql:beginEx() 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 5d3eb9c697..d978396b14 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 @@ -55,30 +55,6 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "GRANT ALL PRIVILEGES ON FUNCTION public.key_value TO zillabase;" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("GRANT_PRIVILEGES") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" 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 ed7ddf6ab0..9e1a2232b1 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 @@ -55,28 +55,6 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "GRANT ALL PRIVILEGES ON FUNCTION public.key_value TO zillabase;" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("GRANT_PRIVILEGES") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - accepted read zilla:begin.ext ${pgsql:beginEx() 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 ce005c0162..f15e365b04 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 @@ -54,29 +54,6 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "GRANT ALL PRIVILEGES ON FUNCTION public.series TO zillabase;" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("GRANT_PRIVILEGES") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" 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 5601ebd9e7..1f5ffe6051 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 @@ -55,28 +55,6 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "GRANT ALL PRIVILEGES ON FUNCTION public.series TO zillabase;" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("GRANT_PRIVILEGES") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - accepted read zilla:begin.ext ${pgsql:beginEx() 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 2f3d0cd35b..84bb2a91ff 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 @@ -55,29 +55,6 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO zillabase;" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("GRANT_PRIVILEGES") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" 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 fe18ee3861..93b4dee857 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 @@ -55,28 +55,6 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "GRANT ALL PRIVILEGES ON FUNCTION public.gcd TO zillabase;" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("GRANT_PRIVILEGES") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - accepted read zilla:begin.ext ${pgsql:beginEx() diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java index 86e9f87ae3..1a88e83ce5 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java @@ -24,8 +24,6 @@ public class RisingwaveCreateFunctionMacro { - private static final String FUNCTION_NAME = "FUNCTION"; - private final String javaServer; private final String pythonServer; @@ -134,44 +132,6 @@ public void onStarted( handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } - @Override - public RisingwaveMacroState onReady( - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - GrantResourceState state = new GrantResourceState(); - state.onStarted(traceId, authorization); - - return state; - } - - @Override - public RisingwaveMacroState onError( - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - handler.doFlushProxy(traceId, authorization, flushEx); - return this; - } - } - - private final class GrantResourceState implements RisingwaveMacroState - { - private final String sqlFormat = """ - GRANT ALL PRIVILEGES ON %s %s.%s TO %s;\u0000"""; - - @Override - public void onStarted( - long traceId, - long authorization) - { - String sqlQuery = String.format(sqlFormat, FUNCTION_NAME, command.schema(), command.name(), user); - - handler.doExecuteSystemClient(traceId, authorization, sqlQuery); - } - @Override public RisingwaveMacroState onCompletion( long traceId, From 469afdd632ca58f7d929c7db835c2982c54d283d Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 17 Dec 2024 23:56:28 -0800 Subject: [PATCH 083/104] Terminate transition on error --- .../macro/RisingwaveCreateStreamMacro.java | 57 ++++++++++++------- .../macro/RisingwaveOnReadyHandler.java | 24 ++++++++ 2 files changed, 62 insertions(+), 19 deletions(-) create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveOnReadyHandler.java diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java index 5587fdc958..02ccfba8af 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java @@ -50,6 +50,7 @@ public class RisingwaveCreateStreamMacro private final String sql; private final CreateStream command; private final RisingwaveMacroHandler handler; + private final RisingwaveOnReadyHandler terminateState = this::terminateState; public RisingwaveCreateStreamMacro( String bootstrapServer, @@ -77,11 +78,32 @@ public RisingwaveMacroState start() return new CreateTopicState(); } + private RisingwaveMacroState terminateState( + long traceId, + long authorization) + { + handler.doReady(traceId, authorization, sql.length()); + + return null; + } + private final class CreateTopicState implements RisingwaveMacroState { private final String sqlFormat = """ CREATE TOPIC IF NOT EXISTS %s (%s%s);\u0000"""; + private RisingwaveOnReadyHandler onReadyHandler = this::transition; + + private RisingwaveMacroState transition( + long traceId, + long authorization) + { + CreateSourceState state = new CreateSourceState(); + state.onStarted(traceId, authorization); + + return state; + } + @Override public void onStarted( long traceId, @@ -111,10 +133,7 @@ public RisingwaveMacroState onReady( long authorization, PgsqlFlushExFW flushEx) { - CreateSourceState state = new CreateSourceState(); - state.onStarted(traceId, authorization); - - return state; + return onReadyHandler.onReady(traceId, authorization); } @Override @@ -124,6 +143,8 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); + onReadyHandler = terminateState; + return this; } } @@ -142,7 +163,17 @@ private final class CreateSourceState implements RisingwaveMacroState schema.registry = '%s' );\u0000"""; - private boolean errored; + private RisingwaveOnReadyHandler onReadyHandler = this::transition; + + private RisingwaveMacroState transition( + long traceId, + long authorization) + { + GrantResourceState state = new GrantResourceState(); + state.onStarted(traceId, authorization); + + return state; + } @Override public void onStarted( @@ -175,18 +206,7 @@ public RisingwaveMacroState onReady( long authorization, PgsqlFlushExFW flushEx) { - GrantResourceState state = null; - if (!errored) - { - state = new GrantResourceState(); - state.onStarted(traceId, authorization); - } - else - { - handler.doReady(traceId, authorization, sql.length()); - } - - return state; + return onReadyHandler.onReady(traceId, authorization); } @Override @@ -195,9 +215,8 @@ public RisingwaveMacroState onError( long authorization, PgsqlFlushExFW flushEx) { - // TODO: Handle error across all macro states - errored = true; handler.doFlushProxy(traceId, authorization, flushEx); + onReadyHandler = terminateState; return this; } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveOnReadyHandler.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveOnReadyHandler.java new file mode 100644 index 0000000000..14e819fc3a --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveOnReadyHandler.java @@ -0,0 +1,24 @@ +/* + * Copyright 2021-2024 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.macro; + +@FunctionalInterface +public interface RisingwaveOnReadyHandler +{ + RisingwaveMacroState onReady( + long traceId, + long authorization + ); +} From b63aef54b55dea06394f306ac18da211d67b76ea Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 18 Dec 2024 09:53:29 -0800 Subject: [PATCH 084/104] Terminate state on error --- .../macro/RisingwaveAlterStreamMacro.java | 8 +-- .../macro/RisingwaveAlterZtableMacro.java | 12 ++-- .../macro/RisingwaveCreateFunctionMacro.java | 6 +- .../macro/RisingwaveCreateStreamMacro.java | 58 +++++-------------- .../macro/RisingwaveCreateZtableMacro.java | 23 ++++---- .../macro/RisingwaveCreateZviewMacro.java | 22 +++---- .../macro/RisingwaveDropStreamMacro.java | 11 ++-- .../macro/RisingwaveDropZtableMacro.java | 21 +++---- .../macro/RisingwaveDropZviewMacro.java | 14 ++--- .../internal/macro/RisingwaveMacroBase.java | 49 ++++++++++++++++ .../internal/macro/RisingwaveMacroState.java | 13 +++-- .../macro/RisingwaveOnReadyHandler.java | 24 -------- .../stream/RisingwaveProxyFactory.java | 2 +- 13 files changed, 120 insertions(+), 143 deletions(-) create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroBase.java delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveOnReadyHandler.java diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java index c955de313b..919bfd561c 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java @@ -18,21 +18,19 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; -public class RisingwaveAlterStreamMacro +public class RisingwaveAlterStreamMacro extends RisingwaveMacroBase { private final StringBuilder fieldBuilder; - private final String sql; private final Alter command; - private final RisingwaveMacroHandler handler; public RisingwaveAlterStreamMacro( String sql, Alter command, RisingwaveMacroHandler handler) { - this.sql = sql; + super(sql, handler); + this.command = command; - this.handler = handler; this.fieldBuilder = new StringBuilder(); } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java index df78166fa8..d5740d9699 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZtableMacro.java @@ -18,21 +18,19 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; -public class RisingwaveAlterZtableMacro +public class RisingwaveAlterZtableMacro extends RisingwaveMacroBase { private final StringBuilder fieldBuilder; - private final String sql; private final Alter command; - private final RisingwaveMacroHandler handler; public RisingwaveAlterZtableMacro( String sql, Alter command, RisingwaveMacroHandler handler) { - this.sql = sql; + super(sql, handler); + this.command = command; - this.handler = handler; this.fieldBuilder = new StringBuilder(); } @@ -84,7 +82,8 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + + return errorState(); } } @@ -142,5 +141,4 @@ public RisingwaveMacroState onError( return this; } } - } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java index 1a88e83ce5..3459e9ac07 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateFunctionMacro.java @@ -22,7 +22,7 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; -public class RisingwaveCreateFunctionMacro +public class RisingwaveCreateFunctionMacro extends RisingwaveMacroBase { private final String javaServer; private final String pythonServer; @@ -31,7 +31,6 @@ public class RisingwaveCreateFunctionMacro private final String user; private final String sql; private final Function command; - private final RisingwaveMacroHandler handler; private final StringBuilder fieldBuilder; public RisingwaveCreateFunctionMacro( @@ -42,6 +41,8 @@ public RisingwaveCreateFunctionMacro( Function command, RisingwaveMacroHandler handler) { + super(sql, handler); + String javaServer = null; String pythonServer = null; @@ -66,7 +67,6 @@ else if (udf.language.equalsIgnoreCase("python")) this.user = user; this.sql = sql; this.command = command; - this.handler = handler; this.fieldBuilder = new StringBuilder(); } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java index 02ccfba8af..ae9e05536b 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java @@ -23,7 +23,7 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; -public class RisingwaveCreateStreamMacro +public class RisingwaveCreateStreamMacro extends RisingwaveMacroBase { //TODO: Remove after implementing zstream private static final String ZILLA_CORRELATION_ID_OLD = "zilla_correlation_id"; @@ -47,10 +47,7 @@ public class RisingwaveCreateStreamMacro private final long scanStartupMil; private final String systemSchema; private final String user; - private final String sql; private final CreateStream command; - private final RisingwaveMacroHandler handler; - private final RisingwaveOnReadyHandler terminateState = this::terminateState; public RisingwaveCreateStreamMacro( String bootstrapServer, @@ -62,12 +59,12 @@ public RisingwaveCreateStreamMacro( CreateStream command, RisingwaveMacroHandler handler) { + super(sql, handler); + this.scanStartupMil = scanStartupMil; this.systemSchema = systemSchema; this.user = user; - this.sql = sql; this.command = command; - this.handler = handler; this.bootstrapServer = bootstrapServer; this.schemaRegistry = schemaRegistry; @@ -78,32 +75,11 @@ public RisingwaveMacroState start() return new CreateTopicState(); } - private RisingwaveMacroState terminateState( - long traceId, - long authorization) - { - handler.doReady(traceId, authorization, sql.length()); - - return null; - } - private final class CreateTopicState implements RisingwaveMacroState { private final String sqlFormat = """ CREATE TOPIC IF NOT EXISTS %s (%s%s);\u0000"""; - private RisingwaveOnReadyHandler onReadyHandler = this::transition; - - private RisingwaveMacroState transition( - long traceId, - long authorization) - { - CreateSourceState state = new CreateSourceState(); - state.onStarted(traceId, authorization); - - return state; - } - @Override public void onStarted( long traceId, @@ -133,7 +109,10 @@ public RisingwaveMacroState onReady( long authorization, PgsqlFlushExFW flushEx) { - return onReadyHandler.onReady(traceId, authorization); + CreateSourceState state = new CreateSourceState(); + state.onStarted(traceId, authorization); + + return state; } @Override @@ -143,9 +122,8 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - onReadyHandler = terminateState; - return this; + return errorState(); } } @@ -163,18 +141,6 @@ private final class CreateSourceState implements RisingwaveMacroState schema.registry = '%s' );\u0000"""; - private RisingwaveOnReadyHandler onReadyHandler = this::transition; - - private RisingwaveMacroState transition( - long traceId, - long authorization) - { - GrantResourceState state = new GrantResourceState(); - state.onStarted(traceId, authorization); - - return state; - } - @Override public void onStarted( long traceId, @@ -206,7 +172,10 @@ public RisingwaveMacroState onReady( long authorization, PgsqlFlushExFW flushEx) { - return onReadyHandler.onReady(traceId, authorization); + GrantResourceState state = new GrantResourceState(); + state.onStarted(traceId, authorization); + + return state; } @Override @@ -216,8 +185,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - onReadyHandler = terminateState; - return this; + return errorState(); } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java index 47e7e32809..3b96f90fe9 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java @@ -27,7 +27,7 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; -public class RisingwaveCreateZtableMacro +public class RisingwaveCreateZtableMacro extends RisingwaveMacroBase { private static final String ZTABLE_NAME = "ztables"; private static final String TABLE_NAME = "tables"; @@ -49,9 +49,7 @@ public class RisingwaveCreateZtableMacro private final StringBuilder includeBuilder; private final String systemSchema; private final String user; - private final String sql; private final CreateTable command; - private final RisingwaveMacroHandler handler; public RisingwaveCreateZtableMacro( String bootstrapServer, @@ -63,11 +61,11 @@ public RisingwaveCreateZtableMacro( CreateTable command, RisingwaveMacroHandler handler) { + super(sql, handler); + this.systemSchema = systemSchema; this.user = user; - this.sql = sql; this.command = command; - this.handler = handler; this.fieldBuilder = new StringBuilder(); this.includeBuilder = new StringBuilder(); @@ -140,7 +138,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -224,7 +222,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -312,7 +310,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -364,7 +362,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -402,7 +400,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -441,7 +439,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -498,7 +496,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } private final class InsertIntoCatalogState implements RisingwaveMacroState @@ -552,5 +550,4 @@ public RisingwaveMacroState onError( } } } - } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java index eb027b7b27..be1e5bd531 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZviewMacro.java @@ -29,7 +29,7 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.types.String32FW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; -public class RisingwaveCreateZviewMacro +public class RisingwaveCreateZviewMacro extends RisingwaveMacroBase { protected static final int FLAGS_INIT = 0x02; @@ -45,9 +45,7 @@ public class RisingwaveCreateZviewMacro private final String schemaRegistry; private final String systemSchema; private final String user; - private final String sql; private final CreateZview command; - private final RisingwaveMacroHandler handler; public RisingwaveCreateZviewMacro( String bootstrapServer, @@ -58,13 +56,13 @@ public RisingwaveCreateZviewMacro( CreateZview command, RisingwaveMacroHandler handler) { + super(sql, handler); + this.bootstrapServer = bootstrapServer; this.schemaRegistry = schemaRegistry; this.systemSchema = systemSchema; this.user = user; - this.sql = sql; this.command = command; - this.handler = handler; this.columnTypes = new ArrayList<>(); this.columnDescriptions = new ArrayList<>(); @@ -113,7 +111,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -151,7 +149,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -253,7 +251,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -310,7 +308,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -327,10 +325,6 @@ private final class CreateSinkState implements RisingwaveMacroState schema.registry='%s' ) KEY ENCODE TEXT;\u0000"""; - private final StringBuilder fieldBuilder = new StringBuilder(); - private final StringBuilder primaryKeyBuilder = new StringBuilder(); - - @Override public void onStarted( long traceId, @@ -378,7 +372,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java index 7883d32bd8..2f5dd4c094 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java @@ -18,12 +18,10 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; -public class RisingwaveDropStreamMacro +public class RisingwaveDropStreamMacro extends RisingwaveMacroBase { private final String systemSchema; - private final String sql; private final Drop command; - private final RisingwaveMacroHandler handler; public RisingwaveDropStreamMacro( String systemSchema, @@ -31,10 +29,10 @@ public RisingwaveDropStreamMacro( Drop command, RisingwaveMacroHandler handler) { + super(sql, handler); + this.systemSchema = systemSchema; - this.sql = sql; this.command = command; - this.handler = handler; } public RisingwaveMacroState start() @@ -75,7 +73,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -123,5 +121,4 @@ public RisingwaveMacroState onError( return this; } } - } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java index a09f19a9af..4a4e16523e 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZtableMacro.java @@ -18,12 +18,10 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; -public class RisingwaveDropZtableMacro +public class RisingwaveDropZtableMacro extends RisingwaveMacroBase { private final String systemSchema; - private final String sql; private final Drop command; - private final RisingwaveMacroHandler handler; public RisingwaveDropZtableMacro( String systemSchema, @@ -31,10 +29,10 @@ public RisingwaveDropZtableMacro( Drop command, RisingwaveMacroHandler handler) { + super(sql, handler); + this.systemSchema = systemSchema; - this.sql = sql; this.command = command; - this.handler = handler; } public RisingwaveMacroState start() @@ -75,7 +73,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -112,7 +110,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -149,7 +147,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -186,7 +184,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -223,7 +221,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -260,7 +258,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -308,5 +306,4 @@ public RisingwaveMacroState onError( return this; } } - } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java index 01a91a1fc8..2a15d76a08 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZviewMacro.java @@ -18,12 +18,10 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; -public class RisingwaveDropZviewMacro +public class RisingwaveDropZviewMacro extends RisingwaveMacroBase { private final String systemSchema; - private final String sql; private final Drop command; - private final RisingwaveMacroHandler handler; public RisingwaveDropZviewMacro( String systemSchema, @@ -31,10 +29,10 @@ public RisingwaveDropZviewMacro( Drop command, RisingwaveMacroHandler handler) { + super(sql, handler); + this.systemSchema = systemSchema; - this.sql = sql; this.command = command; - this.handler = handler; } public RisingwaveMacroState start() @@ -75,7 +73,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -112,7 +110,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } @@ -149,7 +147,7 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroBase.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroBase.java new file mode 100644 index 0000000000..e32af81d28 --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroBase.java @@ -0,0 +1,49 @@ +/* + * Copyright 2021-2024 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.macro; + +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; + +public abstract class RisingwaveMacroBase +{ + protected final RisingwaveMacroHandler handler; + protected final String sql; + + public RisingwaveMacroBase( + String sql, + RisingwaveMacroHandler handler) + { + this.sql = sql; + this.handler = handler; + } + + protected RisingwaveMacroState errorState() + { + return new ErrorState(); + } + + protected final class ErrorState implements RisingwaveMacroState + { + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doReady(traceId, authorization, sql.length()); + return null; + } + } +} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java index 849fcd64fb..fcc843f462 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroState.java @@ -21,9 +21,11 @@ public interface RisingwaveMacroState { - void onStarted( + default void onStarted( long traceId, - long authorization); + long authorization) + { + } default RisingwaveMacroState onRow( T client, @@ -59,8 +61,11 @@ RisingwaveMacroState onReady( long authorization, PgsqlFlushExFW flushEx); - RisingwaveMacroState onError( + default RisingwaveMacroState onError( long traceId, long authorization, - PgsqlFlushExFW flushEx); + PgsqlFlushExFW flushEx) + { + return this; + } } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveOnReadyHandler.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveOnReadyHandler.java deleted file mode 100644 index 14e819fc3a..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveOnReadyHandler.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2021-2024 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.macro; - -@FunctionalInterface -public interface RisingwaveOnReadyHandler -{ - RisingwaveMacroState onReady( - long traceId, - long authorization - ); -} 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 52eccf9cf6..d5396991fd 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 @@ -1179,7 +1179,7 @@ private void onAppErrorFlush( PgsqlFlushExFW flushEx) { messageOffset = 0; - server.macroState.onError(traceId, authorization, flushEx); + server.macroState = server.macroState.onError(traceId, authorization, flushEx); } private void onAppReadyFlush( From f67b6ca14c4a7dda115c06ca06a4e1c34411c95c Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 18 Dec 2024 11:43:04 -0800 Subject: [PATCH 085/104] WIP --- .../macro/RisingwaveMacroHandler.java | 6 +- .../macro/RisingwaveShowCommandMacro.java | 6 +- .../RisingwaveShowZfunctionCommandMacro.java | 118 ++++++++++++++++++ .../stream/RisingwaveProxyFactory.java | 23 ++-- 4 files changed, 138 insertions(+), 15 deletions(-) create mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowZfunctionCommandMacro.java diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java index 6eba7deb94..42c4f107b9 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java @@ -14,6 +14,8 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; +import java.util.List; + import org.agrona.DirectBuffer; import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; @@ -35,9 +37,9 @@ void doExecuteSystemClient( void doDescription( long traceId, long authorization, - String name); + List columns); - void doRow( + void doColumn( T client, long traceId, long authorization, diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java index 2c05f24b75..9e5ddcd08c 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowCommandMacro.java @@ -14,6 +14,8 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; +import java.util.List; + import org.agrona.DirectBuffer; import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; @@ -68,7 +70,7 @@ public RisingwaveMacroState onRow( int limit, OctetsFW extension) { - handler.doRow(client, traceId, authorization, flags, buffer, offset, limit); + handler.doColumn(client, traceId, authorization, flags, buffer, offset, limit); return this; } @@ -78,7 +80,7 @@ public RisingwaveMacroState onType( long authorization, PgsqlFlushExFW flushEx) { - handler.doDescription(traceId, authorization, "Name"); + handler.doDescription(traceId, authorization, List.of("Name")); return this; } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowZfunctionCommandMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowZfunctionCommandMacro.java new file mode 100644 index 0000000000..ffb0545304 --- /dev/null +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowZfunctionCommandMacro.java @@ -0,0 +1,118 @@ +/* + * Copyright 2021-2024 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.macro; + +import java.util.List; + +import org.agrona.DirectBuffer; + +import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.OctetsFW; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; + +public class RisingwaveShowZfunctionCommandMacro +{ + private final String sql; + private final String command; + private final RisingwaveMacroHandler handler; + + private final List columns = List.of("Name", "Arguments", "Return Type", "Language", "Link"); + + public RisingwaveShowZfunctionCommandMacro( + String sql, + String command, + RisingwaveMacroHandler handler) + { + this.sql = sql; + this.command = command; + this.handler = handler; + } + + public RisingwaveMacroState start() + { + return new ShowCommandState(); + } + + private final class ShowCommandState implements RisingwaveMacroState + { + private final String sqlFormat = """ + SELECT * FROM zb_catalog.zfunctions;\u0000"""; + + @Override + public void onStarted( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, command.toLowerCase()); + + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onRow( + T client, + long traceId, + long authorization, + int flags, + DirectBuffer buffer, + int offset, + int limit, + OctetsFW extension) + { + handler.doColumn(client, traceId, authorization, flags, buffer, offset, limit); + return this; + } + + @Override + public RisingwaveMacroState onType( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doDescription(traceId, authorization, columns); + return this; + } + + @Override + public RisingwaveMacroState onCompletion( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.SHOW_COMMAND); + return this; + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doReady(traceId, authorization, sql.length()); + return null; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doFlushProxy(traceId, authorization, flushEx); + return this; + } + } +} 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 df27d9bae9..fde6572813 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 @@ -38,9 +38,9 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PgsqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateFunction; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZstream; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZfunction; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZstream; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; @@ -821,20 +821,21 @@ public void doExecuteSystemClient( public void doDescription( long traceId, long authorization, - String name) + List columns) { PgsqlFlushExFW descriptionEx = flushExRW.wrap(extBuffer, 0, extBuffer.capacity()) .typeId(pgsqlTypeId) .type(t -> t .columns(c -> c - .item(s -> s - .name("%s\u0000".formatted(name)) - .tableOid(0) - .index((short) 0) - .typeOid(701) - .length((short) name.length()) - .modifier(-1) - .format(f -> f.set(PgsqlFormat.TEXT)) + .item(s -> columns.forEach( + cm -> s + .name("%s\u0000".formatted(cm)) + .tableOid(0) + .index((short) 0) + .typeOid(701) + .length((short) cm.length()) + .modifier(-1) + .format(f -> f.set(PgsqlFormat.TEXT))) ))) .build(); @@ -842,7 +843,7 @@ public void doDescription( } @Override - public void doRow( + public void doColumn( T client, long traceId, long authorization, From cf02955809f947541ecd8a1183cc6acf9e24ccbd Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 18 Dec 2024 17:05:53 -0800 Subject: [PATCH 086/104] Checkpoint show zfunctions --- .../effective/show.zfunctions/client.rpt | 60 +++++++------- .../effective/show.zfunctions/server.rpt | 7 +- .../streams/pgsql/show.zfunctions/client.rpt | 51 +++++++++++- .../streams/pgsql/show.zfunctions/server.rpt | 79 +++++++++++++++---- .../risingwave/streams/EffectiveIT.java | 9 +++ .../binding/risingwave/streams/PgsqlIT.java | 9 +++ incubator/binding-risingwave/pom.xml | 2 +- .../macro/RisingwaveMacroHandler.java | 7 ++ .../RisingwaveShowZfunctionCommandMacro.java | 32 ++++++-- ...java => RisingwaveZcreateStreamMacro.java} | 4 +- .../stream/RisingwaveProxyFactory.java | 68 ++++++++++++++-- .../src/main/zilla/protocol.idl | 31 ++++++++ .../risingwave/internal/stream/ProxyIT.java | 10 +++ 13 files changed, 300 insertions(+), 69 deletions(-) rename incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/{RisingwaveCreateStreamMacro.java => RisingwaveZcreateStreamMacro.java} (98%) create mode 100644 incubator/binding-risingwave/src/main/zilla/protocol.idl diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zfunctions/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zfunctions/client.rpt index 0b3ef369c8..c9f5a33479 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zfunctions/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zfunctions/client.rpt @@ -52,7 +52,7 @@ read advised zilla:flush ${pgsql:flushEx() .tableOid(0) .index(0) .typeOid(20) - .length(8) + .length(3) .modifier(-1) .format("TEXT") .build() @@ -64,35 +64,35 @@ read zilla:data.ext ${pgsql:dataEx() .row() .build() .build()} -read [0x00 0x02] # Field Count - [0x00 0x00 0x00 0x06] # Length - [0x63 0x69 0x74 0x69 0x65 0x73] # Data - [0x00 0x00 0x02 0x43] # Length - "CREATE ZFUNCTION send_payment_handler(\n" # Data - " type VARCHAR,\n" - " user_id VARCHAR,\n" - " random VARCHAR,\n" - " amount DOUBLE PRECISION,\n" - " notes VARCHAR)\n" - "RETURNS TABLE(\n" - " type VARCHAR,\n" - " user_id VARCHAR,\n" - " request_id VARCHAR,\n" - " amount DOUBLE PRECISION,\n" - " notes VARCHAR)\n" - "LANGUAGE SQL AS $$\n" - " SELECT\n" - " CASE\n" - " WHEN balance >= amount THEN \"PaymentSent\"\n" - " ELSE \"PaymentDeclined\"\n" - " END AS type,\n" - " user_id,\n" - " request_id,\n" - " amount,\n" - " balance,\n" - " notes\n" - " FROM balance as b WHERE b.user_id = user_id;\n" - "$$" +read [0x00 0x02] # Field Count + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data + [0x00 0x00 0x01 0xda] # Length + "CREATE ZFUNCTION test_command(\n" # Data + " user_id VARCHAR,\n" + " random VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR)\n" + "RETURNS TABLE(\n" + " type VARCHAR,\n" + " user_id VARCHAR,\n" + " request_id VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR)\n" + "LANGUAGE SQL AS $$\n" + " SELECT\n" + " CASE\n" + " WHEN balance >= amount THEN \"PaymentSent\"\n" + " ELSE \"PaymentDeclined\"\n" + " END AS type,\n" + " user_id,\n" + " request_id,\n" + " amount,\n" + " balance,\n" + " notes\n" + " FROM balance as b WHERE b.user_id = user_id;\n" + "$$" + [0x00] read advised zilla:flush ${pgsql:flushEx() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zfunctions/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zfunctions/server.rpt index 752ad3cc64..cd087b99c4 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zfunctions/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zfunctions/server.rpt @@ -54,7 +54,7 @@ write advise zilla:flush ${pgsql:flushEx() .tableOid(0) .index(0) .typeOid(20) - .length(8) + .length(3) .modifier(-1) .format("TEXT") .build() @@ -69,9 +69,8 @@ write zilla:data.ext ${pgsql:dataEx() write [0x00 0x02] # Field Count [0x00 0x00 0x00 0x06] # Length [0x63 0x69 0x74 0x69 0x65 0x73] # Data - [0x00 0x00 0x02 0x43] # Length - "CREATE ZFUNCTION send_payment_handler(\n" # Data - " type VARCHAR,\n" + [0x00 0x00 0x01 0xda] # Length + "CREATE ZFUNCTION test_command(\n" # Data " user_id VARCHAR,\n" " random VARCHAR,\n" " amount DOUBLE PRECISION,\n" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/client.rpt index 2632b6845d..13a1585cf7 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/client.rpt @@ -48,6 +48,42 @@ read advised zilla:flush ${pgsql:flushEx() .modifier(-1) .format("TEXT") .build() + .column() + .name("Arguments") + .tableOid(0) + .index(0) + .typeOid(701) + .length(9) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("Return Type") + .tableOid(0) + .index(0) + .typeOid(701) + .length(11) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("Language") + .tableOid(0) + .index(0) + .typeOid(701) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("Link") + .tableOid(0) + .index(0) + .typeOid(701) + .length(4) + .modifier(-1) + .format("TEXT") + .build() .build() .build()} @@ -56,9 +92,18 @@ read zilla:data.ext ${pgsql:dataEx() .row() .build() .build()} -read [0x00 0x01] # Field Count - [0x00 0x00 0x00 0x06] # Length - [0x63 0x69 0x74 0x69 0x65 0x73] # Data +read [0x00 0x05] # Field Count + [0x00 0x00 0x00 0x0c] # Length + "test_command" # Data + [0x00 0x00 0x00 0x47] # Length + "user_id VARCHAR, random VARCHAR, " # Data + "amount DOUBLE PRECISION, notes VARCHAR" + [0x00 0x00 0x00 0x59] # Length + "type VARCHAR, user_id VARCHAR, request_id VARCHAR, " # Data + "amount DOUBLE PRECISION, notes VARCHAR" + [0x00 0x00 0x00 0x03] # Length + "SQL" # Data + [0xff 0xff 0xff 0xff] # Length read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/server.rpt index 7cb6d1c3b5..b1f0694a20 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/server.rpt @@ -40,19 +40,55 @@ read "SHOW ZFUNCTIONS;" [0x00] write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .type() - .column() - .name("Name") - .tableOid(0) - .index(0) - .typeOid(701) - .length(4) - .modifier(-1) - .format("TEXT") - .build() - .build() - .build()} + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("Name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(4) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("Arguments") + .tableOid(0) + .index(0) + .typeOid(701) + .length(9) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("Return Type") + .tableOid(0) + .index(0) + .typeOid(701) + .length(11) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("Language") + .tableOid(0) + .index(0) + .typeOid(701) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("Link") + .tableOid(0) + .index(0) + .typeOid(701) + .length(4) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} write flush write zilla:data.ext ${pgsql:dataEx() @@ -60,9 +96,20 @@ write zilla:data.ext ${pgsql:dataEx() .row() .build() .build()} -write [0x00 0x01] # Field Count - [0x00 0x00 0x00 0x06] # Length - [0x63 0x69 0x74 0x69 0x65 0x73] # Data +write [0x00 0x05] # Field Count + [0x00 0x00 0x00 0x0c] # Length + "test_command" # Data + [0x00 0x00 0x00 0x47] # Length + "user_id VARCHAR, random VARCHAR, " # Data + "amount DOUBLE PRECISION, notes VARCHAR" + [0x00 0x00 0x00 0x59] # Length + "type VARCHAR, user_id VARCHAR, request_id VARCHAR, " # Data + "amount DOUBLE PRECISION, notes VARCHAR" + [0x00 0x00 0x00 0x03] # Length + "SQL" # Data + [0xff 0xff 0xff 0xff] # Length + +write flush write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java index 1d8dc7b334..20ccfe0765 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java @@ -253,4 +253,13 @@ public void shouldCreateZfunction() throws Exception { k3po.finish(); } + + @Test + @Specification({ + "${app}/show.zfunctions/client", + "${app}/show.zfunctions/server" }) + public void shouldShowZfunctions() throws Exception + { + k3po.finish(); + } } diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java index 661f68bb6c..e2c9e89a17 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java @@ -269,4 +269,13 @@ public void shouldCreateZfunction() throws Exception { k3po.finish(); } + + @Test + @Specification({ + "${app}/show.zfunctions/client", + "${app}/show.zfunctions/server" }) + public void shouldShowZfunctions() throws Exception + { + k3po.finish(); + } } diff --git a/incubator/binding-risingwave/pom.xml b/incubator/binding-risingwave/pom.xml index a087cd9681..40224a7ec0 100644 --- a/incubator/binding-risingwave/pom.xml +++ b/incubator/binding-risingwave/pom.xml @@ -100,7 +100,7 @@ flyweight-maven-plugin ${project.version} - core pgsql + core pgsql protocol io.aklivity.zilla.runtime.binding.risingwave.internal.types diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java index 42c4f107b9..3c70cc93f9 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroHandler.java @@ -18,6 +18,7 @@ import org.agrona.DirectBuffer; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZfunction; import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.OctetsFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; @@ -48,6 +49,12 @@ void doColumn( int offset, int limit); + void doZfunctionRow( + T client, + long traceId, + long authorization, + CreateZfunction command); + void doCompletion( long traceId, long authorization, diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowZfunctionCommandMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowZfunctionCommandMacro.java index ffb0545304..95c0e2f5bc 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowZfunctionCommandMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveShowZfunctionCommandMacro.java @@ -14,29 +14,32 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; +import java.nio.ByteOrder; import java.util.List; import org.agrona.DirectBuffer; +import io.aklivity.zilla.runtime.binding.pgsql.parser.PgsqlParser; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZfunction; import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.OctetsFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; public class RisingwaveShowZfunctionCommandMacro { + private final PgsqlParser parser; private final String sql; - private final String command; private final RisingwaveMacroHandler handler; private final List columns = List.of("Name", "Arguments", "Return Type", "Language", "Link"); public RisingwaveShowZfunctionCommandMacro( + PgsqlParser parser, String sql, - String command, RisingwaveMacroHandler handler) { + this.parser = parser; this.sql = sql; - this.command = command; this.handler = handler; } @@ -55,9 +58,7 @@ public void onStarted( long traceId, long authorization) { - String sqlQuery = String.format(sqlFormat, command.toLowerCase()); - - handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + handler.doExecuteSystemClient(traceId, authorization, sqlFormat); } @Override @@ -71,7 +72,24 @@ public RisingwaveMacroState onRow( int limit, OctetsFW extension) { - handler.doColumn(client, traceId, authorization, flags, buffer, offset, limit); + int progress = offset; + + short fields = buffer.getShort(progress, ByteOrder.BIG_ENDIAN); + progress += Short.BYTES; + + assert fields == 2; + + int nameLength = buffer.getInt(progress, ByteOrder.BIG_ENDIAN); + progress += Integer.BYTES + nameLength; + + int sqlLength = buffer.getInt(progress, ByteOrder.BIG_ENDIAN); + progress += Integer.BYTES; + + String statement = buffer.getStringWithoutLengthAscii(progress, sqlLength); + CreateZfunction command = parser.parseCreateZfunction(statement); + + handler.doZfunctionRow(client, traceId, authorization, command); + return this; } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveZcreateStreamMacro.java similarity index 98% rename from incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java rename to incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveZcreateStreamMacro.java index d5c6cda7df..94f9741323 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveZcreateStreamMacro.java @@ -23,7 +23,7 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; -public class RisingwaveCreateStreamMacro extends RisingwaveMacroBase +public class RisingwaveZcreateStreamMacro extends RisingwaveMacroBase { //TODO: Remove after implementing zstream private static final String ZILLA_CORRELATION_ID_OLD = "zilla_correlation_id"; @@ -49,7 +49,7 @@ public class RisingwaveCreateStreamMacro extends RisingwaveMacroBase private final String user; private final CreateZstream command; - public RisingwaveCreateStreamMacro( + public RisingwaveZcreateStreamMacro( String bootstrapServer, String schemaRegistry, long scanStartupMil, 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 fde6572813..80d2025e6b 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 @@ -27,6 +27,7 @@ import java.util.function.Consumer; import java.util.function.LongFunction; import java.util.function.LongUnaryOperator; +import java.util.stream.Collectors; import org.agrona.DirectBuffer; import org.agrona.MutableDirectBuffer; @@ -51,7 +52,6 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveAlterStreamMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveAlterZtableMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateFunctionMacro; -import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateStreamMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZfunctionMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZtableMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZviewMacro; @@ -61,10 +61,13 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveMacroHandler; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveMacroState; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveShowCommandMacro; +import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveShowZfunctionCommandMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveUnknownMacro; +import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveZcreateStreamMacro; 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; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.codec.RisingwaveShowZfunctionsRowFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.AbortFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.BeginFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.DataFW; @@ -134,6 +137,8 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory private final PgsqlDataExFW.Builder dataExRW = new PgsqlDataExFW.Builder(); private final PgsqlFlushExFW.Builder flushExRW = new PgsqlFlushExFW.Builder(); + private final RisingwaveShowZfunctionsRowFW.Builder zfunctionsRowRW = new RisingwaveShowZfunctionsRowFW.Builder(); + private final ResetFW.Builder resetRW = new ResetFW.Builder(); private final WindowFW.Builder windowRW = new WindowFW.Builder(); @@ -167,7 +172,7 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory clientTransforms.put(RisingwaveCommandType.DROP_ZTABLE_COMMAND, this::decodeDropZtableCommand); clientTransforms.put(RisingwaveCommandType.DROP_ZVIEW_COMMAND, this::decodeDropZviewCommand); clientTransforms.put(RisingwaveCommandType.SHOW_ZTABLES_COMMAND, this::decodeShowCommand); - clientTransforms.put(RisingwaveCommandType.SHOW_ZFUNCTIONS_COMMAND, this::decodeShowCommand); + clientTransforms.put(RisingwaveCommandType.SHOW_ZFUNCTIONS_COMMAND, this::decodeShowZfunctionCommand); clientTransforms.put(RisingwaveCommandType.UNKNOWN_COMMAND, this::decodeUnknownCommand); this.clientTransforms = clientTransforms; } @@ -826,9 +831,9 @@ public void doDescription( PgsqlFlushExFW descriptionEx = flushExRW.wrap(extBuffer, 0, extBuffer.capacity()) .typeId(pgsqlTypeId) .type(t -> t - .columns(c -> c - .item(s -> columns.forEach( - cm -> s + .columns(c -> + columns.forEach(cm -> c + .item(s -> s .name("%s\u0000".formatted(cm)) .tableOid(0) .index((short) 0) @@ -881,6 +886,39 @@ public void doColumn( } } + @Override + public void doZfunctionRow( + T client, + long traceId, + long authorization, + CreateZfunction command) + { + PgsqlDataExFW dataEx = dataExRW.wrap(extBuffer, 0, extBuffer.capacity()) + .typeId(pgsqlTypeId) + .row(q -> q.deferred(0)) + .build(); + + String name = command.name(); + String arguments = command.arguments().stream() + .map(arg -> arg.name() + " " + arg.type()) + .collect(Collectors.joining(", ")); + String returnType = command.returnTypes().stream() + .map(arg -> arg.name() + " " + arg.type()) + .collect(Collectors.joining(", ")); + String language = command.language(); + + RisingwaveShowZfunctionsRowFW row = zfunctionsRowRW.wrap(statementBuffer, 0, statementBuffer.capacity()) + .fields((short) 5) + .name(name) + .arguments(arguments) + .returnType(returnType) + .language(language) + .build(); + + doAppData(client, traceId, authorization, FLAGS_COMP, + statementBuffer, 0, row.limit(), dataEx); + } + @Override public void doCompletion( long traceId, @@ -1686,7 +1724,7 @@ private void decodeCreateStreamCommand( RisingwaveBindingConfig binding = server.binding; - RisingwaveCreateStreamMacro machine = new RisingwaveCreateStreamMacro( + RisingwaveZcreateStreamMacro machine = new RisingwaveZcreateStreamMacro( binding.bootstrapServer, binding.schemaRegistry, config.kafkaScanStartupTimestampMillis(), @@ -1937,6 +1975,24 @@ private void decodeShowCommand( server.macroState.onStarted(traceId, authorization); } + private void decodeShowZfunctionCommand( + PgsqlServer server, + long traceId, + long authorization, + String statement) + { + if (server.macroState == null) + { + RisingwaveShowZfunctionCommandMacro machine = new RisingwaveShowZfunctionCommandMacro( + parser, + statement, + server.macroHandler); + server.macroState = machine.start(); + } + + server.macroState.onStarted(traceId, authorization); + } + private void decodeUnknownCommand( PgsqlServer server, long traceId, diff --git a/incubator/binding-risingwave/src/main/zilla/protocol.idl b/incubator/binding-risingwave/src/main/zilla/protocol.idl new file mode 100644 index 0000000000..5d83d81c92 --- /dev/null +++ b/incubator/binding-risingwave/src/main/zilla/protocol.idl @@ -0,0 +1,31 @@ +/* + * Copyright 2021-2024 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. + */ +scope protocol +{ + option byteorder network; + + scope codec + { + struct RisingwaveShowZfunctionsRow + { + int16 fields; + string32 name; + string32 arguments; + string32 returnType; + string32 language; + string32 link = null; + } + } +} diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java index 83b242ba7f..0329ca1ac8 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java @@ -311,4 +311,14 @@ public void shouldCreateZfunction() throws Exception { k3po.finish(); } + + @Test + @Configuration("proxy.risingwave.yaml") + @Specification({ + "${pgsql}/show.zfunctions/client", + "${effective}/show.zfunctions/server" }) + public void shouldShowZfunctions() throws Exception + { + k3po.finish(); + } } From f51d6b8301e0293c2d4c1e8ca1989968d66a3926 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 18 Dec 2024 18:14:29 -0800 Subject: [PATCH 087/104] WIP --- .../binding/pgsql/parser/PostgreSqlLexer.g4 | 4 +- .../binding/pgsql/parser/PostgreSqlParser.g4 | 33 ++- .../listener/SqlCreateZstreamListener.java | 11 +- .../pgsql/parser/model/CreateZstream.java | 1 + .../binding/pgsql/parser/PgsqlParserTest.java | 18 +- .../config/RisingwaveCommandType.java | 2 +- ....java => RisingwaveAlterZstreamMacro.java} | 4 +- .../macro/RisingwaveCreateStreamMacro.java | 237 ------------------ ...java => RisingwaveCreateZstreamMacro.java} | 4 +- ...o.java => RisingwaveDropZstreamMacro.java} | 4 +- .../stream/RisingwaveProxyFactory.java | 16 +- 11 files changed, 56 insertions(+), 278 deletions(-) rename incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/{RisingwaveAlterStreamMacro.java => RisingwaveAlterZstreamMacro.java} (96%) delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java rename incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/{RisingwaveZcreateStreamMacro.java => RisingwaveCreateZstreamMacro.java} (98%) rename incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/{RisingwaveDropStreamMacro.java => RisingwaveDropZstreamMacro.java} (97%) 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 e6faacc4fc..3d515c48ec 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 @@ -571,8 +571,6 @@ HOUR_P: 'HOUR'; IDENTITY_P: 'IDENTITY'; -DISPATCH_P: 'DISPATCH'; - IF_P: 'IF'; IMMEDIATE: 'IMMEDIATE'; @@ -1123,6 +1121,8 @@ UESCAPE: 'UESCAPE'; VIEWS: 'VIEWS'; +HEAD: 'HEAD'; + NORMALIZE: 'NORMALIZE'; DUMP: 'DUMP'; 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 ccfda37c8e..fe589623b2 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 @@ -702,49 +702,48 @@ zstream_name : qualified_name ; -// Updated stream_columns to include GENERATED ALWAYS AS with various options zstream_columns + : standard_columns zstream_generated_columns + ; + +standard_columns : zstream_column (COMMA zstream_column)* ; -zstream_column - : colid typename opt_generated_always +zstream_generated_columns + : colid typename GENERATED ALWAYS AS generation_type + colid typename GENERATED ALWAYS AS generation_type ; -opt_generated_always - : | GENERATED ALWAYS AS generation_type +zstream_column + : colid typename ; generation_type : IDENTITY_P - | DISPATCH_P | TIMESTAMP ; opt_with_zstream : WITH OPEN_PAREN zreloptions CLOSE_PAREN - | // Empty option if WITH is not used + | /* Empty */ ; zreloptions - : zreloption_elem (COMMA reloption_elem)* + : zreloption_elem (COMMA zreloption_elem)* ; zreloption_elem : collabel EQUAL def_arg - | COMMAND_FUNCTIONS EQUAL OPEN_CURLY command_function_mappings CLOSE_CURLY - ; - -command_function_mappings - : command_function_mapping (COMMA command_function_mapping)* + | collabel EQUAL OPEN_PAREN handler_mappings CLOSE_PAREN ; -command_function_mapping - : sconst EQUAL function_name +handler_mappings + : handler_mapping (COMMA handler_mapping)* ; -function_name - : sconst +handler_mapping + : sconst TO sconst ; createztstmt diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZstreamListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZstreamListener.java index b1a9156ec0..ad1f4476d3 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZstreamListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZstreamListener.java @@ -37,6 +37,7 @@ public class SqlCreateZstreamListener extends PostgreSqlParserBaseListener private String schema; private String name; + private String dispatchOn; public SqlCreateZstreamListener( TokenStream tokens) @@ -48,7 +49,7 @@ public SqlCreateZstreamListener( public CreateZstream stream() { - return new CreateZstream(schema, name, columns, commandHandlers); + return new CreateZstream(schema, name, columns, dispatchOn, commandHandlers); } @Override @@ -57,6 +58,7 @@ public void enterRoot( { schema = null; name = null; + dispatchOn = null; columns.clear(); commandHandlers.clear(); } @@ -71,6 +73,13 @@ public void enterQualified_name( name = split.length > 1 ? split[1] : text; } + @Override + public void enterZreloption_elem( + PostgreSqlParser.Zreloption_elemContext ctx) + { + dispatchOn = ctx.collabel().getText(); + } + @Override public void enterZstream_columns( PostgreSqlParser.Zstream_columnsContext ctx) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZstream.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZstream.java index 30bc8beb25..a7dd5f0597 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZstream.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZstream.java @@ -21,6 +21,7 @@ public record CreateZstream( String schema, String name, List columns, + String dispatchOn, Map commandHandlers) { } 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 e6fb9b4159..65fbff3ef9 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 @@ -571,7 +571,7 @@ public void shouldCreateZstream() { String sql = """ CREATE ZSTREAM app_events( - type VARCHAR GENERATED ALWAYS AS DISPATCH, + event VARCHAR, user_id VARCHAR, request_id VARCHAR, amount DOUBLE PRECISION, @@ -580,12 +580,16 @@ CREATE ZSTREAM app_events( created_at TIMESTAMP GENERATED ALWAYS AS TIMESTAMP ) WITH ( - command_functions = { - 'SendPayment' = 'send_payment_handler', - 'RequestPayment' = 'request_payment_handler', - 'RejectPayment' = 'reject_payment_handler' + commands = { + dispatch_on = 'command', + handlers = { + 'SendPayment' = 'send_payment_handler', + 'RequestPayment' = 'request_payment_handler', + 'RejectPayment' = 'reject_payment_handler' + } } - );"""; + ); + """; CreateZstream createStream = parser.parseCreateStream(sql); @@ -605,6 +609,8 @@ CREATE ZSTREAM app_events( assertEquals("created_at", createStream.columns().get(6).name()); assertEquals("TIMESTAMP", createStream.columns().get(6).type()); + assertEquals("commands", createStream.dispatchOn()); + assertEquals(3, createStream.commandHandlers().size()); assertEquals("send_payment_handler", createStream.commandHandlers().get("SendPayment")); assertEquals("request_payment_handler", createStream.commandHandlers().get("RequestPayment")); diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java index cf4723bd0c..252a8c7f81 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java @@ -20,7 +20,7 @@ public enum RisingwaveCommandType { CREATE_TOPIC_COMMAND("CREATE TOPIC".getBytes()), CREATE_ZTABLE_COMMAND("CREATE ZTABLE".getBytes()), - CREATE_STREAM_COMMAND("CREATE STREAM".getBytes()), + CREATE_ZSTREAM_COMMAND("CREATE ZSTREAM".getBytes()), CREATE_ZVIEW_COMMAND("CREATE ZVIEW".getBytes()), CREATE_FUNCTION_COMMAND("CREATE FUNCTION".getBytes()), CREATE_ZFUNCTION_COMMAND("CREATE ZFUNCTION".getBytes()), diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZstreamMacro.java similarity index 96% rename from incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java rename to incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZstreamMacro.java index 919bfd561c..dc90a248da 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZstreamMacro.java @@ -18,12 +18,12 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; -public class RisingwaveAlterStreamMacro extends RisingwaveMacroBase +public class RisingwaveAlterZstreamMacro extends RisingwaveMacroBase { private final StringBuilder fieldBuilder; private final Alter command; - public RisingwaveAlterStreamMacro( + public RisingwaveAlterZstreamMacro( String sql, Alter command, RisingwaveMacroHandler handler) diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java deleted file mode 100644 index ae9e05536b..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateStreamMacro.java +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Copyright 2021-2024 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.macro; - -import java.util.LinkedHashMap; -import java.util.Map; - -import org.agrona.collections.Object2ObjectHashMap; - -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateStream; -import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; -import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; - -public class RisingwaveCreateStreamMacro extends RisingwaveMacroBase -{ - //TODO: Remove after implementing zstream - private static final String ZILLA_CORRELATION_ID_OLD = "zilla_correlation_id"; - private static final String ZILLA_IDENTITY_OLD = "zilla_identity"; - private static final String ZILLA_TIMESTAMP_OLD = "zilla_timestamp"; - - private static final Map ZILLA_MAPPINGS_OLD = new Object2ObjectHashMap<>(); - static - { - ZILLA_MAPPINGS_OLD.put(ZILLA_CORRELATION_ID_OLD, "INCLUDE header 'zilla:correlation-id' AS %s\n"); - ZILLA_MAPPINGS_OLD.put(ZILLA_IDENTITY_OLD, "INCLUDE header 'zilla:identity' AS %s\n"); - ZILLA_MAPPINGS_OLD.put(ZILLA_TIMESTAMP_OLD, "INCLUDE timestamp AS %s\n"); - } - - protected final StringBuilder fieldBuilder = new StringBuilder(); - protected final StringBuilder includeBuilder = new StringBuilder(); - - private final String bootstrapServer; - private final String schemaRegistry; - - private final long scanStartupMil; - private final String systemSchema; - private final String user; - private final CreateStream command; - - public RisingwaveCreateStreamMacro( - String bootstrapServer, - String schemaRegistry, - long scanStartupMil, - String systemSchema, - String user, - String sql, - CreateStream command, - RisingwaveMacroHandler handler) - { - super(sql, handler); - - this.scanStartupMil = scanStartupMil; - this.systemSchema = systemSchema; - this.user = user; - this.command = command; - - this.bootstrapServer = bootstrapServer; - this.schemaRegistry = schemaRegistry; - } - - public RisingwaveMacroState start() - { - return new CreateTopicState(); - } - - private final class CreateTopicState implements RisingwaveMacroState - { - private final String sqlFormat = """ - CREATE TOPIC IF NOT EXISTS %s (%s%s);\u0000"""; - - @Override - public void onStarted( - long traceId, - long authorization) - { - String topic = command.name(); - - fieldBuilder.setLength(0); - - command.columns() - .entrySet() - .stream() - .filter(e -> !ZILLA_MAPPINGS_OLD.containsKey(e.getKey())) - .forEach(e -> fieldBuilder.append( - String.format("%s %s, ", e.getKey(), e.getValue()))); - - fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); - - String sqlQuery = String.format(sqlFormat, topic, fieldBuilder, ""); - - handler.doExecuteSystemClient(traceId, authorization, sqlQuery); - } - - @Override - public RisingwaveMacroState onReady( - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - CreateSourceState state = new CreateSourceState(); - state.onStarted(traceId, authorization); - - return state; - } - - @Override - public RisingwaveMacroState onError( - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - handler.doFlushProxy(traceId, authorization, flushEx); - - return errorState(); - } - } - - private final class CreateSourceState implements RisingwaveMacroState - { - private final String sqlFormat = """ - CREATE SOURCE IF NOT EXISTS %s (*)%s - WITH ( - connector='kafka', - properties.bootstrap.server='%s', - topic='%s.%s', - scan.startup.mode='latest', - scan.startup.timestamp.millis='%d' - ) FORMAT PLAIN ENCODE AVRO ( - schema.registry = '%s' - );\u0000"""; - - @Override - public void onStarted( - long traceId, - long authorization) - { - String schema = command.schema(); - String table = command.name(); - - includeBuilder.setLength(0); - Map includes = command.columns().entrySet().stream() - .filter(e -> ZILLA_MAPPINGS_OLD.containsKey(e.getKey())) - .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_OLD.get(k), k))); - includeBuilder.delete(includeBuilder.length() - 1, includeBuilder.length()); - } - - String sqlQuery = String.format(sqlFormat, table, includeBuilder, bootstrapServer, schema, - table, scanStartupMil, schemaRegistry); - handler.doExecuteSystemClient(traceId, authorization, sqlQuery); - } - - @Override - public RisingwaveMacroState onReady( - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - GrantResourceState state = new GrantResourceState(); - state.onStarted(traceId, authorization); - - return state; - } - - @Override - public RisingwaveMacroState onError( - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - handler.doFlushProxy(traceId, authorization, flushEx); - return errorState(); - } - } - - private final class GrantResourceState implements RisingwaveMacroState - { - private final String sqlFormat = """ - GRANT ALL PRIVILEGES ON SOURCE %s.%s TO %s;\u0000"""; - - @Override - public void onStarted( - long traceId, - long authorization) - { - String sqlQuery = String.format(sqlFormat, command.schema(), command.name(), user); - - handler.doExecuteSystemClient(traceId, authorization, sqlQuery); - } - - @Override - public RisingwaveMacroState onCompletion( - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.CREATE_STREAM_COMMAND); - return this; - } - - @Override - public RisingwaveMacroState onReady( - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - handler.doReady(traceId, authorization, sql.length()); - return null; - } - - @Override - public RisingwaveMacroState onError( - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - handler.doFlushProxy(traceId, authorization, flushEx); - return this; - } - } -} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveZcreateStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java similarity index 98% rename from incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveZcreateStreamMacro.java rename to incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java index 94f9741323..14183ad5a4 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveZcreateStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java @@ -23,7 +23,7 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; -public class RisingwaveZcreateStreamMacro extends RisingwaveMacroBase +public class RisingwaveCreateZstreamMacro extends RisingwaveMacroBase { //TODO: Remove after implementing zstream private static final String ZILLA_CORRELATION_ID_OLD = "zilla_correlation_id"; @@ -49,7 +49,7 @@ public class RisingwaveZcreateStreamMacro extends RisingwaveMacroBase private final String user; private final CreateZstream command; - public RisingwaveZcreateStreamMacro( + public RisingwaveCreateZstreamMacro( String bootstrapServer, String schemaRegistry, long scanStartupMil, diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZstreamMacro.java similarity index 97% rename from incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java rename to incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZstreamMacro.java index 2f5dd4c094..b034701279 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropStreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZstreamMacro.java @@ -18,12 +18,12 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; -public class RisingwaveDropStreamMacro extends RisingwaveMacroBase +public class RisingwaveDropZstreamMacro extends RisingwaveMacroBase { private final String systemSchema; private final Drop command; - public RisingwaveDropStreamMacro( + public RisingwaveDropZstreamMacro( String systemSchema, String sql, Drop command, 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 80d2025e6b..5565069aea 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 @@ -49,13 +49,14 @@ 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.macro.RisingwaveAlterStreamMacro; +import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveAlterZstreamMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveAlterZtableMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateFunctionMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZfunctionMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZtableMacro; +import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZstreamMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZviewMacro; -import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveDropStreamMacro; +import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveDropZstreamMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveDropZtableMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveDropZviewMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveMacroHandler; @@ -63,7 +64,6 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveShowCommandMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveShowZfunctionCommandMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveUnknownMacro; -import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveZcreateStreamMacro; 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; @@ -162,7 +162,7 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory Object2ObjectHashMap clientTransforms = new Object2ObjectHashMap<>(); clientTransforms.put(RisingwaveCommandType.CREATE_ZTABLE_COMMAND, this::decodeCreateZtableCommand); - clientTransforms.put(RisingwaveCommandType.CREATE_STREAM_COMMAND, this::decodeCreateStreamCommand); + clientTransforms.put(RisingwaveCommandType.CREATE_ZSTREAM_COMMAND, this::decodeCreateZstreamCommand); clientTransforms.put(RisingwaveCommandType.CREATE_ZVIEW_COMMAND, this::decodeCreateZviewCommand); clientTransforms.put(RisingwaveCommandType.CREATE_FUNCTION_COMMAND, this::decodeCreateFunctionCommand); clientTransforms.put(RisingwaveCommandType.CREATE_ZFUNCTION_COMMAND, this::decodeCreateZfunctionCommand); @@ -1712,7 +1712,7 @@ private void decodeCreateZtableCommand( server.macroState.onStarted(traceId, authorization); } - private void decodeCreateStreamCommand( + private void decodeCreateZstreamCommand( PgsqlServer server, long traceId, long authorization, @@ -1724,7 +1724,7 @@ private void decodeCreateStreamCommand( RisingwaveBindingConfig binding = server.binding; - RisingwaveZcreateStreamMacro machine = new RisingwaveZcreateStreamMacro( + RisingwaveCreateZstreamMacro machine = new RisingwaveCreateZstreamMacro( binding.bootstrapServer, binding.schemaRegistry, config.kafkaScanStartupTimestampMillis(), @@ -1863,7 +1863,7 @@ private void decodeAlterStreamCommand( { if (server.macroState == null) { - RisingwaveAlterStreamMacro machine = new RisingwaveAlterStreamMacro( + RisingwaveAlterZstreamMacro machine = new RisingwaveAlterZstreamMacro( statement, command, server.macroHandler); @@ -1922,7 +1922,7 @@ private void decodeDropStreamCommand( // TODO: Enhance multiple streams final Drop command = parser.parseDrop(statement).get(0); - RisingwaveDropStreamMacro machine = new RisingwaveDropStreamMacro( + RisingwaveDropZstreamMacro machine = new RisingwaveDropZstreamMacro( RisingwaveBindingConfig.INTERNAL_SCHEMA, statement, command, From c7207432513b2c63fbb22d2f451813d99ee1296a Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 18 Dec 2024 19:26:33 -0800 Subject: [PATCH 088/104] WIP --- .../binding/pgsql/parser/PostgreSqlLexer.g4 | 5 ++- .../binding/pgsql/parser/PostgreSqlParser.g4 | 25 ++++++------- .../binding/pgsql/parser/PgsqlParser.java | 19 ++++++++++ .../listener/SqlCreateZstreamListener.java | 37 +++++++++---------- .../binding/pgsql/parser/PgsqlParserTest.java | 20 +++++----- 5 files changed, 61 insertions(+), 45 deletions(-) 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 3d515c48ec..726378eeb2 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 @@ -58,8 +58,9 @@ STAR: '*'; EQUAL: '='; -OPEN_CURLY : '{'; -CLOSE_CURLY : '}'; +DISPATCH_ON: 'DISPATCH_ON'; + +HANDLERS: 'HANDLERS'; DOT: '.'; //NamedArgument : ':='; 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 fe589623b2..5551151833 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 @@ -703,20 +703,16 @@ zstream_name ; zstream_columns - : standard_columns zstream_generated_columns - ; - -standard_columns : zstream_column (COMMA zstream_column)* ; -zstream_generated_columns - : colid typename GENERATED ALWAYS AS generation_type - colid typename GENERATED ALWAYS AS generation_type +zstream_column + : colid typename opt_generated_clause ; -zstream_column - : colid typename +opt_generated_clause + : GENERATED ALWAYS AS generation_type + | /* Empty */ ; generation_type @@ -726,7 +722,6 @@ generation_type opt_with_zstream : WITH OPEN_PAREN zreloptions CLOSE_PAREN - | /* Empty */ ; zreloptions @@ -734,8 +729,8 @@ zreloptions ; zreloption_elem - : collabel EQUAL def_arg - | collabel EQUAL OPEN_PAREN handler_mappings CLOSE_PAREN + : DISPATCH_ON EQUAL sconst + | HANDLERS EQUAL OPEN_PAREN handler_mappings CLOSE_PAREN ; handler_mappings @@ -743,7 +738,11 @@ handler_mappings ; handler_mapping - : sconst TO sconst + : sconst TO function_name + ; + +function_name + : sconst ; createztstmt 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 0e89cba8f0..58f58cff91 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,6 +20,11 @@ import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.CharStreams; import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.InputMismatchException; +import org.antlr.v4.runtime.Parser; +import org.antlr.v4.runtime.RecognitionException; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.misc.ParseCancellationException; import org.antlr.v4.runtime.tree.ParseTreeWalker; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlAlterZstreamTopicListener; @@ -162,6 +167,7 @@ private void parser( tokens.setTokenSource(lexer); parser.setTokenStream(tokens); + parser.setErrorHandler(new DebuggingErrorStrategy()); walker.walk(listener, parser.root()); } @@ -169,4 +175,17 @@ private void parser( { } } + + private final class DebuggingErrorStrategy extends BailErrorStrategy + { + @Override + public Token recoverInline(Parser recognizer) + throws RecognitionException + { + InputMismatchException e = new InputMismatchException(recognizer); + Token currentToken = recognizer.getCurrentToken(); + System.err.println("Mismatched token: " + currentToken.getText()); + throw new ParseCancellationException(e); + } + } } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZstreamListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZstreamListener.java index ad1f4476d3..1ff10f6d1d 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZstreamListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZstreamListener.java @@ -73,13 +73,6 @@ public void enterQualified_name( name = split.length > 1 ? split[1] : text; } - @Override - public void enterZreloption_elem( - PostgreSqlParser.Zreloption_elemContext ctx) - { - dispatchOn = ctx.collabel().getText(); - } - @Override public void enterZstream_columns( PostgreSqlParser.Zstream_columnsContext ctx) @@ -88,31 +81,37 @@ public void enterZstream_columns( { String name = c.colid().getText(); String type = tokens.getText(c.typename()); - String generatedAlways = tokens.getText(c.opt_generated_always()); + String generatedAlways = tokens.getText(c.opt_generated_clause()); columns.add(new ZstreamColumn(name, type, generatedAlways)); }); } @Override - public void enterCommand_function_mappings( - PostgreSqlParser.Command_function_mappingsContext ctx) + public void enterZreloptions( + PostgreSqlParser.ZreloptionsContext ctx) { - ctx.command_function_mapping().forEach(c -> + ctx.zreloption_elem().forEach(o -> { - String dispatch = c.sconst().getText(); - if (dispatch != null && dispatch.length() > 1) + if (o.sconst() != null) { - dispatch = dispatch.substring(1, dispatch.length() - 1); + String quotedText = o.sconst().getText(); + dispatchOn = quotedText.substring(1, quotedText.length() - 1); } - String handler = c.function_name().getText(); - if (handler != null && handler.length() > 1) + if (o.handler_mappings() != null) { - handler = handler.substring(1, handler.length() - 1); + o.handler_mappings().handler_mapping().forEach(m -> + { + // TODO: Improve getting fields value without substring + String name = m.sconst().getText(); + name = name.substring(1, name.length() - 1); + String handler = m.function_name().getText(); + handler = handler.substring(1, handler.length() - 1); + commandHandlers.put(name, handler); + }); } - - commandHandlers.put(dispatch, handler); }); } + } 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 65fbff3ef9..8c9041526b 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 @@ -570,7 +570,7 @@ RETURNS TABLE( public void shouldCreateZstream() { String sql = """ - CREATE ZSTREAM app_events( + CREATE ZSTREAM app_events ( event VARCHAR, user_id VARCHAR, request_id VARCHAR, @@ -580,21 +580,19 @@ CREATE ZSTREAM app_events( created_at TIMESTAMP GENERATED ALWAYS AS TIMESTAMP ) WITH ( - commands = { - dispatch_on = 'command', - handlers = { - 'SendPayment' = 'send_payment_handler', - 'RequestPayment' = 'request_payment_handler', - 'RejectPayment' = 'reject_payment_handler' - } - } + DISPATCH_ON = 'command', + HANDLERS = ( + 'SendPayment' TO 'send_payment_handler', + 'RequestPayment' TO 'request_payment_handler', + 'RejectPayment' TO 'reject_payment_handler' + ) ); """; CreateZstream createStream = parser.parseCreateStream(sql); assertEquals("app_events", createStream.name()); - assertEquals("type", createStream.columns().get(0).name()); + assertEquals("event", createStream.columns().get(0).name()); assertEquals("VARCHAR", createStream.columns().get(0).type()); assertEquals("user_id", createStream.columns().get(1).name()); assertEquals("VARCHAR", createStream.columns().get(1).type()); @@ -609,7 +607,7 @@ CREATE ZSTREAM app_events( assertEquals("created_at", createStream.columns().get(6).name()); assertEquals("TIMESTAMP", createStream.columns().get(6).type()); - assertEquals("commands", createStream.dispatchOn()); + assertEquals("command", createStream.dispatchOn()); assertEquals(3, createStream.commandHandlers().size()); assertEquals("send_payment_handler", createStream.commandHandlers().get("SendPayment")); From 275f35ec44ef9e9b2bb58e706cce69040f8ce9bf Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 18 Dec 2024 20:08:13 -0800 Subject: [PATCH 089/104] WIP --- .../macro/RisingwaveCreateZstreamMacro.java | 93 ++++++++++++++++++- .../stream/RisingwaveProxyFactory.java | 2 +- 2 files changed, 93 insertions(+), 2 deletions(-) diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java index 14183ad5a4..7393caf075 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java @@ -14,13 +14,17 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; +import java.nio.ByteOrder; import java.util.LinkedHashMap; import java.util.Map; +import java.util.stream.Collectors; +import org.agrona.DirectBuffer; import org.agrona.collections.Object2ObjectHashMap; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZstream; import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.OctetsFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; public class RisingwaveCreateZstreamMacro extends RisingwaveMacroBase @@ -72,7 +76,94 @@ public RisingwaveCreateZstreamMacro( public RisingwaveMacroState start() { - return new CreateTopicState(); + return new SelectZfunctionsCommandState(); + } + + private final class SelectZfunctionsCommandState implements RisingwaveMacroState + { + private final String sqlFormat = """ + SELECT * FROM zb_catalog.zfunctions; WHERE name IN (%s);\u0000"""; + + @Override + public void onStarted( + long traceId, + long authorization) + { + String handlers = command.commandHandlers().keySet().stream() + .map(value -> "'" + value + "'") + .collect(Collectors.joining(", ")); + String sqlQuery = String.format(sqlFormat, handlers); + + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onRow( + T client, + long traceId, + long authorization, + int flags, + DirectBuffer buffer, + int offset, + int limit, + OctetsFW extension) + { + int progress = offset; + + short fields = buffer.getShort(progress, ByteOrder.BIG_ENDIAN); + progress += Short.BYTES; + + assert fields == 2; + + int nameLength = buffer.getInt(progress, ByteOrder.BIG_ENDIAN); + progress += Integer.BYTES + nameLength; + + int sqlLength = buffer.getInt(progress, ByteOrder.BIG_ENDIAN); + progress += Integer.BYTES; + + String statement = buffer.getStringWithoutLengthAscii(progress, sqlLength); + + return this; + } + + @Override + public RisingwaveMacroState onType( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + return this; + } + + @Override + public RisingwaveMacroState onCompletion( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.SHOW_COMMAND); + return this; + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doReady(traceId, authorization, sql.length()); + return null; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doFlushProxy(traceId, authorization, flushEx); + return this; + } } private final class CreateTopicState implements RisingwaveMacroState 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 5565069aea..3896ce67ee 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 @@ -53,8 +53,8 @@ import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveAlterZtableMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateFunctionMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZfunctionMacro; -import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZtableMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZstreamMacro; +import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZtableMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZviewMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveDropZstreamMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveDropZtableMacro; From de7d310b0b1d65aed45b77620e1363033c42aa92 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 18 Dec 2024 22:40:28 -0800 Subject: [PATCH 090/104] WIP till morning --- .../effective/create.stream/client.rpt | 137 ------- .../effective/create.stream/server.rpt | 139 ------- .../effective/create.zstream/client.rpt | 354 +++++++++++++++++ .../effective/create.zstream/server.rpt | 357 ++++++++++++++++++ .../client.rpt | 18 +- .../server.rpt | 17 +- .../risingwave/streams/EffectiveIT.java | 6 +- .../binding/risingwave/streams/PgsqlIT.java | 6 +- 8 files changed, 745 insertions(+), 289 deletions(-) delete mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt delete mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.stream => create.zstream}/client.rpt (78%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.stream => create.zstream}/server.rpt (79%) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt deleted file mode 100644 index 286cd15792..0000000000 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/client.rpt +++ /dev/null @@ -1,137 +0,0 @@ -# -# Copyright 2021-2024 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. -# - -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "CREATE SOURCE IF NOT EXISTS weather (*)\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.weather',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_SOURCE") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "GRANT ALL PRIVILEGES ON SOURCE public.weather TO zillabase;" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("GRANT_PRIVILEGES") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -connect "zilla://streams/app2" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "CREATE TOPIC IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE);" - [0x00] - -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_TOPIC") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt deleted file mode 100644 index 19ae4c7a09..0000000000 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream/server.rpt +++ /dev/null @@ -1,139 +0,0 @@ -# -# Copyright 2021-2024 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. -# - -accept "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read await CREATE_TOPIC_COMPLETED - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "CREATE SOURCE IF NOT EXISTS weather (*)\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.weather',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_SOURCE") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "GRANT ALL PRIVILEGES ON SOURCE public.weather TO zillabase;" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("GRANT_PRIVILEGES") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -accept "zilla://streams/app2" - option zilla:window 8192 - option zilla:transmission "duplex" - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "CREATE TOPIC IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE);" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_TOPIC") - .build() - .build()} - -write notify CREATE_TOPIC_COMPLETED - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt new file mode 100644 index 0000000000..856016aea2 --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt @@ -0,0 +1,354 @@ +# +# Copyright 2021-2024 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. +# + +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "postgres") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "SELECT * FROM zb_catalog.zfunctions WHERE sql IN ('send_payment_handler');" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("sql") + .tableOid(0) + .index(0) + .typeOid(20) + .length(3) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +read [0x00 0x02] # Field Count + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data + [0x00 0x00 0x01 0x73] # Length + "CREATE ZFUNCTION send_payment_handler(\n" # Data + " user_id VARCHAR,\n" + " amount DOUBLE PRECISION\n" + "RETURNS TABLE(\n" + " event VARCHAR,\n" + " user_id VARCHAR,\n" + " amount DOUBLE PRECISION)\n" + "LANGUAGE SQL AS $$\n" + " SELECT\n" + " CASE\n" + " WHEN balance >= amount THEN \"PaymentSent\"\n" + " ELSE \"PaymentDeclined\"\n" + " END AS event,\n" + " user_id,\n" + " amount,\n" + " FROM balance as b WHERE b.user_id = user_id;\n" + "$$" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SELECT 1") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write notify CREATE_TOPIC_COMPLETED + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "CREATE SOURCE IF NOT EXISTS app_events_commands (*)\n" + "INCLUDE header 'zilla:correlation-id' VARCHAR AS correlation_id\n" + "INCLUDE header 'zilla:identity' VARCHAR AS owner_id\n" + "INCLUDE timestamp AS created_at\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='app_events_commands',\n" + " scan.startup.mode='latest',\n" + " scan.startup.timestamp.millis='140000000'\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " schema.registry = 'http://localhost:8081'\n" + ");" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_SOURCE") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "CREATE MATERIALIZED VIEW send_payment_handler AS\n" + " SELECT\n" + " c.correlation_id,\n" + " CASE\n" + " WHEN b.balance >= c.amount THEN 'PaymentSent'\n" + " ELSE 'PaymentDeclined'\n" + " END AS event,\n" + " c.user_id,\n" + " c.amount\n" + " FROM streampay_events_commands c\n" + " JOIN streampay_balances b\n" + " ON c.user_id = b.user_id\n" + " WHERE c.type = 'SendPayment'; + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_MATERIALIZED_VIEW") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "CREATE MATERIALIZED VIEW app_events AS\n" + " SELECT * FROM send_payment_handler;" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_MATERIALIZED_VIEW") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "GRANT ALL PRIVILEGES ON MATERIALIZED VIEW public.app_events TO zillabase;" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "CREATE MATERIALIZED VIEW app_events_reply_handler AS\n" + " SELECT\n" + " '200' AS status,\n" + " correlation_id\n" + " FROM app_events;" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_MATERIALIZED_VIEW") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "CREATE SINK IF NOT EXISTS app_events_replies_sink\n" + "AS SELECT\n" + " COALESCE(r.status, '400') AS status,\n" + " c.correlation_id\n" + " FROM streampay_events_commands c\n" + " LEFT JOIN app_events_reply_handler r\n" + " ON c.correlation_id = r.correlation_id\n" + "WITH (\n" + " connector = 'kafka',\n" + " topic = 'public.app_events_replies',\n" + " properties.bootstrap.server = 'localhost:9092',\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " force_append_only='true',\n" + " schema.registry = 'http://localhost:8081'\n" + "); + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_SINK") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +connect "zilla://streams/app2" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "postgres") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "CREATE TOPIC IF NOT EXISTS app_events_commands " + "(user_id VARCHAR, amount DOUBLE PRECISION);" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_TOPIC") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "CREATE TOPIC IF NOT EXISTS app_events_replies_sink " + "(status VARCHAR, correlation_id VARCHAR);" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_TOPIC") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt new file mode 100644 index 0000000000..3fb06a9947 --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt @@ -0,0 +1,357 @@ +# +# Copyright 2021-2024 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. +# + +accept "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "postgres") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "SELECT * FROM zb_catalog.zfunctions WHERE sql IN ('send_payment_handler');" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("sql") + .tableOid(0) + .index(0) + .typeOid(20) + .length(3) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +write [0x00 0x02] # Field Count + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data + [0x00 0x00 0x01 0x73] # Length + "CREATE ZFUNCTION send_payment_handler(\n" # Data + " user_id VARCHAR,\n" + " amount DOUBLE PRECISION\n" + "RETURNS TABLE(\n" + " event VARCHAR,\n" + " user_id VARCHAR,\n" + " amount DOUBLE PRECISION)\n" + "LANGUAGE SQL AS $$\n" + " SELECT\n" + " CASE\n" + " WHEN balance >= amount THEN \"PaymentSent\"\n" + " ELSE \"PaymentDeclined\"\n" + " END AS event,\n" + " user_id,\n" + " amount,\n" + " FROM balance as b WHERE b.user_id = user_id;\n" + "$$" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SELECT 1") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read await CREATE_TOPIC_COMPLETED + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "CREATE SOURCE IF NOT EXISTS app_events_commands (*)\n" + "INCLUDE header 'zilla:correlation-id' VARCHAR AS correlation_id\n" + "INCLUDE header 'zilla:identity' VARCHAR AS owner_id\n" + "INCLUDE timestamp AS created_at\n" + "WITH (\n" + " connector='kafka',\n" + " properties.bootstrap.server='localhost:9092',\n" + " topic='app_events_commands',\n" + " scan.startup.mode='latest',\n" + " scan.startup.timestamp.millis='140000000'\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " schema.registry = 'http://localhost:8081'\n" + ");" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_SOURCE") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "CREATE MATERIALIZED VIEW send_payment_handler AS\n" + " SELECT\n" + " c.correlation_id,\n" + " CASE\n" + " WHEN b.balance >= c.amount THEN 'PaymentSent'\n" + " ELSE 'PaymentDeclined'\n" + " END AS event,\n" + " c.user_id,\n" + " c.amount\n" + " FROM streampay_events_commands c\n" + " JOIN streampay_balances b\n" + " ON c.user_id = b.user_id\n" + " WHERE c.type = 'SendPayment'; + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_MATERIALIZED_VIEW") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "CREATE MATERIALIZED VIEW app_events AS\n" + " SELECT * FROM send_payment_handler;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_MATERIALIZED_VIEW") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "GRANT ALL PRIVILEGES ON MATERIALIZED VIEW public.app_events TO zillabase;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("GRANT_PRIVILEGES") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "CREATE MATERIALIZED VIEW app_events_reply_handler AS\n" + " SELECT\n" + " '200' AS status,\n" + " correlation_id\n" + " FROM app_events;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_MATERIALIZED_VIEW") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "CREATE SINK IF NOT EXISTS app_events_replies_sink\n" + "AS SELECT\n" + " COALESCE(r.status, '400') AS status,\n" + " c.correlation_id\n" + " FROM streampay_events_commands c\n" + " LEFT JOIN app_events_reply_handler r\n" + " ON c.correlation_id = r.correlation_id\n" + "WITH (\n" + " connector = 'kafka',\n" + " topic = 'public.app_events_replies',\n" + " properties.bootstrap.server = 'localhost:9092',\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " force_append_only='true',\n" + " schema.registry = 'http://localhost:8081'\n" + "); + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_SINK") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accept "zilla://streams/app2" + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "postgres") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "CREATE TOPIC IF NOT EXISTS app_events_commands " + "(user_id VARCHAR, amount DOUBLE PRECISION);" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_TOPIC") + .build() + .build()} + +write notify CREATE_TOPIC_COMPLETED + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "CREATE TOPIC IF NOT EXISTS app_events_replies_sink " + "(status VARCHAR, correlation_id VARCHAR);" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("CREATE_TOPIC") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/client.rpt similarity index 78% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/client.rpt index d8b4ff2531..d339223b13 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/client.rpt @@ -32,8 +32,19 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE STREAM IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE);" +write "CREATE ZSTREAM app_events (\n" + " event VARCHAR,\n" + " user_id VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " owner_id VARCHAR GENERATED ALWAYS AS IDENTITY,\n" + " created_at TIMESTAMP GENERATED ALWAYS AS TIMESTAMP\n" + ")\n" + "WITH (\n" + " DISPATCH_ON = 'command',\n" + " HANDLERS = (\n" + " 'SendPayment' TO 'send_payment_handler',\n" + " ) + ");" [0x00] write flush @@ -41,7 +52,7 @@ write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_STREAM") + .tag("CREATE_ZSTREAM") .build() .build()} @@ -51,4 +62,3 @@ read advised zilla:flush ${pgsql:flushEx() .status("IDLE") .build() .build()} - diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/server.rpt similarity index 79% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/server.rpt index c21726633a..686fc9a67a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/server.rpt @@ -36,14 +36,25 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE STREAM IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE);" +read "CREATE ZSTREAM app_events (\n" + " event VARCHAR,\n" + " user_id VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " owner_id VARCHAR GENERATED ALWAYS AS IDENTITY,\n" + " created_at TIMESTAMP GENERATED ALWAYS AS TIMESTAMP\n" + ")\n" + "WITH (\n" + " DISPATCH_ON = 'command',\n" + " HANDLERS = (\n" + " 'SendPayment' TO 'send_payment_handler',\n" + " ) + ");" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_STREAM") + .tag("CREATE_ZSTREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java index 20ccfe0765..a90bc4cfcb 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java @@ -48,10 +48,10 @@ public void shouldCreateZtableWithPrimaryKey() throws Exception @Test @Specification({ - "${app}/create.stream/client", - "${app}/create.stream/server" + "${app}/create.zstream/client", + "${app}/create.zstream/server" }) - public void shouldCreateStream() throws Exception + public void shouldCreateZstream() throws Exception { k3po.finish(); } diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java index e2c9e89a17..0304c8f898 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java @@ -48,10 +48,10 @@ public void shouldCreateZtableWithPrimaryKey() throws Exception @Test @Specification({ - "${app}/create.stream/client", - "${app}/create.stream/server" + "${app}/create.zstream/client", + "${app}/create.zstream/server" }) - public void shouldCreateStream() throws Exception + public void shouldCreateZstream() throws Exception { k3po.finish(); } From 477e95018112eeaa91c7ef3ca05e21b2d9ba2de6 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 19 Dec 2024 23:43:51 -0800 Subject: [PATCH 091/104] WIP --- .../effective/create.zstream/client.rpt | 35 +++++++++++++++++++ .../effective/create.zstream/server.rpt | 35 +++++++++++++++++++ .../macro/RisingwaveCreateZstreamMacro.java | 15 ++++++-- 3 files changed, 82 insertions(+), 3 deletions(-) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt index 856016aea2..3113d95e3a 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt @@ -278,6 +278,41 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "INSERT INTO zb_catalog.zstreams (name, sql) VALUES " + "('cities', 'CREATE ZSTREAM app_events (\n" + " event VARCHAR,\n" + " user_id VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " owner_id VARCHAR GENERATED ALWAYS AS IDENTITY,\n" + " created_at TIMESTAMP GENERATED ALWAYS AS TIMESTAMP\n" + ")\n" + "WITH (\n" + " DISPATCH_ON = 'command',\n" + " HANDLERS = (\n" + " 'SendPayment' TO 'send_payment_handler',\n" + " ) + ");');" + + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("INSERT 0 2") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + connect "zilla://streams/app1" option zilla:window 8192 option zilla:transmission "duplex" diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt index 3fb06a9947..84f6ebf5cc 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt @@ -280,6 +280,41 @@ write advise zilla:flush ${pgsql:flushEx() .build() .build()} +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "INSERT INTO zb_catalog.zstreams (name, sql) VALUES " + "('cities', 'CREATE ZSTREAM app_events (\n" + " event VARCHAR,\n" + " user_id VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " owner_id VARCHAR GENERATED ALWAYS AS IDENTITY,\n" + " created_at TIMESTAMP GENERATED ALWAYS AS TIMESTAMP\n" + ")\n" + "WITH (\n" + " DISPATCH_ON = 'command',\n" + " HANDLERS = (\n" + " 'SendPayment' TO 'send_payment_handler',\n" + " ) + ");');" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("INSERT 0 2") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + accepted read zilla:begin.ext ${pgsql:beginEx() diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java index 7393caf075..bbbfccd0d8 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java @@ -22,6 +22,8 @@ import org.agrona.DirectBuffer; import org.agrona.collections.Object2ObjectHashMap; +import io.aklivity.zilla.runtime.binding.pgsql.parser.PgsqlParser; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZfunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZstream; import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.OctetsFW; @@ -42,11 +44,12 @@ public class RisingwaveCreateZstreamMacro extends RisingwaveMacroBase ZILLA_MAPPINGS_OLD.put(ZILLA_TIMESTAMP_OLD, "INCLUDE timestamp AS %s\n"); } - protected final StringBuilder fieldBuilder = new StringBuilder(); - protected final StringBuilder includeBuilder = new StringBuilder(); + private final StringBuilder fieldBuilder = new StringBuilder(); + private final StringBuilder includeBuilder = new StringBuilder(); private final String bootstrapServer; private final String schemaRegistry; + private final PgsqlParser parser; private final long scanStartupMil; private final String systemSchema; @@ -61,7 +64,8 @@ public RisingwaveCreateZstreamMacro( String user, String sql, CreateZstream command, - RisingwaveMacroHandler handler) + RisingwaveMacroHandler handler, + PgsqlParser parser) { super(sql, handler); @@ -72,6 +76,7 @@ public RisingwaveCreateZstreamMacro( this.bootstrapServer = bootstrapServer; this.schemaRegistry = schemaRegistry; + this.parser = parser; } public RisingwaveMacroState start() @@ -123,6 +128,10 @@ public RisingwaveMacroState onRow( String statement = buffer.getStringWithoutLengthAscii(progress, sqlLength); + CreateZfunction createZfunction = parser.parseCreateZfunction(statement); + + handler.doZfunctionRow(client, traceId, authorization, createZfunction); + return this; } From ceea46f8f3f0e7f471585d9970a64d24a0e0feb9 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Sun, 22 Dec 2024 08:33:09 -0800 Subject: [PATCH 092/104] WIP --- .../binding/pgsql/parser/PostgreSqlLexer.g4 | 2 + .../binding/pgsql/parser/PostgreSqlParser.g4 | 5 +- .../listener/SqlCreateZfunctionListener.java | 91 +++++++++-- .../pgsql/parser/model/CreateZfunction.java | 3 +- .../binding/pgsql/parser/model/Select.java | 28 ++++ .../binding/pgsql/parser/PgsqlParserTest.java | 72 ++++----- .../effective/create.zstream/server.rpt | 10 +- .../macro/RisingwaveCreateZstreamMacro.java | 145 ++++++++++-------- .../macro/RisingwaveCreateZtableMacro.java | 17 +- .../internal/macro/RisingwaveMacroBase.java | 14 ++ .../stream/RisingwaveProxyFactory.java | 3 +- 11 files changed, 244 insertions(+), 146 deletions(-) create mode 100644 incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Select.java 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 726378eeb2..7cb76228ae 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 @@ -40,6 +40,8 @@ options { Dollar: '$'; +ZFUNCTION_S: '$$'; + OPEN_PAREN: '('; CLOSE_PAREN: ')'; 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 5551151833..cef3ab5f32 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 @@ -2043,9 +2043,8 @@ opt_nulls_order ; createzfunctionstmt - : CREATE opt_or_replace ZFUNCTION func_name func_args_with_defaults ( - RETURNS (func_return | TABLE OPEN_PAREN table_func_column_list CLOSE_PAREN) - )? createfunc_opt_list + : CREATE ZFUNCTION func_name func_args_with_defaults + RETURNS TABLE OPEN_PAREN table_func_column_list CLOSE_PAREN LANGUAGE SQL_P AS ZFUNCTION_S selectstmt SEMI ZFUNCTION_S ; createfunctionstmt diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZfunctionListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZfunctionListener.java index cbd3886319..a02c58442c 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZfunctionListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZfunctionListener.java @@ -23,6 +23,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZfunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionArgument; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Select; public class SqlCreateZfunctionListener extends PostgreSqlParserBaseListener { @@ -33,22 +34,46 @@ public class SqlCreateZfunctionListener extends PostgreSqlParserBaseListener private final List arguments; private final TokenStream tokens; + private final List columns = new ArrayList<>(); + + private String table; + private String whereClause; + private String groupByClause; + private String orderByClause; + private String limitClause; + private String offsetClause; + private String schema; private String name; - private String asFunction; - private String language; public SqlCreateZfunctionListener( TokenStream tokens) { this.returnTypes = new ArrayList<>(); this.arguments = new ArrayList<>(); + + this.columns.clear(); + this.tokens = tokens; } public CreateZfunction zfunction() { - return new CreateZfunction(schema, name, arguments, returnTypes, asFunction, language); + final Select select = new Select( + columns, + table, + whereClause, + groupByClause, + orderByClause, + limitClause, + offsetClause); + + return new CreateZfunction( + schema, + name, + arguments, + returnTypes, + select); } @Override @@ -57,10 +82,16 @@ public void enterRoot( { schema = null; name = null; - asFunction = null; - language = null; arguments.clear(); returnTypes.clear(); + + columns.clear(); + table = null; + whereClause = null; + groupByClause = null; + orderByClause = null; + limitClause = null; + offsetClause = null; } @Override @@ -92,16 +123,54 @@ public void enterTable_func_column( } @Override - public void enterFunc_as( - PostgreSqlParser.Func_asContext ctx) + public void enterTarget_list( + PostgreSqlParser.Target_listContext ctx) + { + ctx.target_el().forEach(c -> columns.add(c.getText())); + } + + @Override + public void enterFrom_clause( + PostgreSqlParser.From_clauseContext ctx) + { + if (ctx.from_list() != null) + { + table = ctx.from_list().getText(); + } + } + + @Override + public void enterWhere_clause( + PostgreSqlParser.Where_clauseContext ctx) + { + whereClause = ctx.getText(); + } + + @Override + public void enterGroup_clause( + PostgreSqlParser.Group_clauseContext ctx) + { + groupByClause = ctx.getText(); + } + + @Override + public void enterSort_clause( + PostgreSqlParser.Sort_clauseContext ctx) + { + orderByClause = ctx.getText(); + } + + @Override + public void enterLimit_clause( + PostgreSqlParser.Limit_clauseContext ctx) { - asFunction = ctx.getText(); + limitClause = ctx.getText(); } @Override - public void enterNonreservedword_or_sconst( - PostgreSqlParser.Nonreservedword_or_sconstContext ctx) + public void enterOffset_clause( + PostgreSqlParser.Offset_clauseContext ctx) { - language = ctx.getText(); + offsetClause = ctx.getText(); } } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZfunction.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZfunction.java index 9be3efdff8..d385a4d182 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZfunction.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/CreateZfunction.java @@ -21,7 +21,6 @@ public record CreateZfunction( String name, List arguments, List returnTypes, - String asFunction, - String language) + Select select) { } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Select.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Select.java new file mode 100644 index 0000000000..ec19b701a0 --- /dev/null +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Select.java @@ -0,0 +1,28 @@ +/* + * Copyright 2021-2024 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.model; + +import java.util.List; + +public record Select( + List columns, + String table, + String whereClause, + String groupByClause, + String orderByClause, + String limitClause, + String offsetClause) +{ +} 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 8c9041526b..cfb3aef7bd 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 @@ -511,59 +511,41 @@ public void shouldParseShowZtables() public void shouldParseCreateZfunctionWithTableReturnType() { String sql = """ - CREATE ZFUNCTION send_payment_handler( - type VARCHAR, - user_id VARCHAR, - random VARCHAR, - amount DOUBLE PRECISION, - notes VARCHAR) - RETURNS TABLE( - type VARCHAR, - user_id VARCHAR, - request_id VARCHAR, - amount DOUBLE PRECISION, - notes VARCHAR) - LANGUAGE SQL AS $$ - SELECT - CASE - WHEN balance >= amount THEN "PaymentSent" - ELSE "PaymentDeclined" - END AS type, - user_id, - request_id, - amount, - balance, - notes - FROM balance as b WHERE b.user_id = user_id; - $$ - """; + CREATE ZFUNCTION send_payment_handler( + user_id VARCHAR, + amount DOUBLE PRECISION) + RETURNS TABLE( + event VARCHAR, + user_id VARCHAR, + amount DOUBLE PRECISION) + LANGUAGE SQL AS $$ + SELECT + CASE + WHEN balance >= args.amount THEN "PaymentSent" + ELSE "PaymentDeclined" + END AS event, + args.user_id, + args.amount + FROM balance WHERE user_id = args.user_id; + $$ + """; CreateZfunction function = parser.parseCreateZfunction(sql); assertNotNull(function); assertEquals("send_payment_handler", function.name()); - assertEquals(5, function.arguments().size()); - assertEquals("type", function.arguments().get(0).name()); + assertEquals(2, function.arguments().size()); + assertEquals("user_id", function.arguments().get(0).name()); assertEquals("VARCHAR", function.arguments().get(0).type()); - assertEquals("user_id", function.arguments().get(1).name()); - assertEquals("VARCHAR", function.arguments().get(1).type()); - assertEquals("random", function.arguments().get(2).name()); - assertEquals("VARCHAR", function.arguments().get(2).type()); - assertEquals("amount", function.arguments().get(3).name()); - assertEquals("DOUBLE PRECISION", function.arguments().get(3).type()); - assertEquals("notes", function.arguments().get(4).name()); - assertEquals("VARCHAR", function.arguments().get(4).type()); - - assertEquals(5, function.returnTypes().size()); - assertEquals("type", function.returnTypes().get(0).name()); + assertEquals("amount", function.arguments().get(1).name()); + assertEquals("DOUBLE PRECISION", function.arguments().get(1).type()); + + assertEquals(3, function.returnTypes().size()); + assertEquals("event", function.returnTypes().get(0).name()); assertEquals("VARCHAR", function.returnTypes().get(0).type()); assertEquals("user_id", function.returnTypes().get(1).name()); assertEquals("VARCHAR", function.returnTypes().get(1).type()); - assertEquals("request_id", function.returnTypes().get(2).name()); - assertEquals("VARCHAR", function.returnTypes().get(2).type()); - assertEquals("amount", function.returnTypes().get(3).name()); - assertEquals("DOUBLE PRECISION", function.returnTypes().get(3).type()); - assertEquals("notes", function.returnTypes().get(4).name()); - assertEquals("VARCHAR", function.returnTypes().get(4).type()); + assertEquals("amount", function.returnTypes().get(2).name()); + assertEquals("DOUBLE PRECISION", function.returnTypes().get(2).type()); } @Test diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt index 84f6ebf5cc..ff0468e880 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt @@ -69,7 +69,7 @@ write zilla:data.ext ${pgsql:dataEx() write [0x00 0x02] # Field Count [0x00 0x00 0x00 0x06] # Length [0x63 0x69 0x74 0x69 0x65 0x73] # Data - [0x00 0x00 0x01 0x73] # Length + [0x00 0x00 0x01 0x80] # Length "CREATE ZFUNCTION send_payment_handler(\n" # Data " user_id VARCHAR,\n" " amount DOUBLE PRECISION\n" @@ -80,12 +80,12 @@ write [0x00 0x02] # Field Count "LANGUAGE SQL AS $$\n" " SELECT\n" " CASE\n" - " WHEN balance >= amount THEN \"PaymentSent\"\n" + " WHEN balance >= args.amount THEN \"PaymentSent\"\n" " ELSE \"PaymentDeclined\"\n" " END AS event,\n" - " user_id,\n" - " amount,\n" - " FROM balance as b WHERE b.user_id = user_id;\n" + " args.user_id,\n" + " args.amount,\n" + " FROM balance WHERE user_id = args.user_id;\n" "$$" [0x00] diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java index bbbfccd0d8..81cf349f29 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java @@ -15,37 +15,27 @@ package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; import java.nio.ByteOrder; -import java.util.LinkedHashMap; -import java.util.Map; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; import java.util.stream.Collectors; import org.agrona.DirectBuffer; -import org.agrona.collections.Object2ObjectHashMap; import io.aklivity.zilla.runtime.binding.pgsql.parser.PgsqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZfunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZstream; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.ZstreamColumn; import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.OctetsFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; public class RisingwaveCreateZstreamMacro extends RisingwaveMacroBase { - //TODO: Remove after implementing zstream - private static final String ZILLA_CORRELATION_ID_OLD = "zilla_correlation_id"; - private static final String ZILLA_IDENTITY_OLD = "zilla_identity"; - private static final String ZILLA_TIMESTAMP_OLD = "zilla_timestamp"; - private static final Map ZILLA_MAPPINGS_OLD = new Object2ObjectHashMap<>(); - static - { - ZILLA_MAPPINGS_OLD.put(ZILLA_CORRELATION_ID_OLD, "INCLUDE header 'zilla:correlation-id' AS %s\n"); - ZILLA_MAPPINGS_OLD.put(ZILLA_IDENTITY_OLD, "INCLUDE header 'zilla:identity' AS %s\n"); - ZILLA_MAPPINGS_OLD.put(ZILLA_TIMESTAMP_OLD, "INCLUDE timestamp AS %s\n"); - } - - private final StringBuilder fieldBuilder = new StringBuilder(); - private final StringBuilder includeBuilder = new StringBuilder(); + private final List functions; // + private final StringBuilder fieldBuilder; + private final StringBuilder includeBuilder; private final String bootstrapServer; private final String schemaRegistry; @@ -56,6 +46,8 @@ public class RisingwaveCreateZstreamMacro extends RisingwaveMacroBase private final String user; private final CreateZstream command; + private Iterator zfunctionInterator; + public RisingwaveCreateZstreamMacro( String bootstrapServer, String schemaRegistry, @@ -77,6 +69,10 @@ public RisingwaveCreateZstreamMacro( this.bootstrapServer = bootstrapServer; this.schemaRegistry = schemaRegistry; this.parser = parser; + + this.functions = new ArrayList<>(); + this.fieldBuilder = new StringBuilder(); + this.includeBuilder = new StringBuilder(); } public RisingwaveMacroState start() @@ -130,38 +126,21 @@ public RisingwaveMacroState onRow( CreateZfunction createZfunction = parser.parseCreateZfunction(statement); - handler.doZfunctionRow(client, traceId, authorization, createZfunction); + functions.add(createZfunction); return this; } - @Override - public RisingwaveMacroState onType( - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - return this; - } - - @Override - public RisingwaveMacroState onCompletion( - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.SHOW_COMMAND); - return this; - } - @Override public RisingwaveMacroState onReady( long traceId, long authorization, PgsqlFlushExFW flushEx) { - handler.doReady(traceId, authorization, sql.length()); - return null; + CreateSourceTopicState state = new CreateSourceTopicState(); + state.onStarted(traceId, authorization); + + return state; } @Override @@ -171,14 +150,14 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); - return this; + return errorState(); } } - private final class CreateTopicState implements RisingwaveMacroState + private final class CreateSourceTopicState implements RisingwaveMacroState { private final String sqlFormat = """ - CREATE TOPIC IF NOT EXISTS %s (%s%s);\u0000"""; + CREATE TOPIC IF NOT EXISTS %s_commands (%s);\u0000"""; @Override public void onStarted( @@ -189,15 +168,13 @@ public void onStarted( fieldBuilder.setLength(0); - command.columns() - .stream() - .filter(e -> !ZILLA_MAPPINGS_OLD.containsKey(e.name())) - .forEach(e -> fieldBuilder.append( - String.format("%s %s, ", e.name(), e.type()))); + CreateZfunction zfunction = functions.getFirst(); - fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); + String arguments = zfunction.arguments().stream() + .map(arg -> arg.name() + " " + arg.type()) + .collect(Collectors.joining(", ")); - String sqlQuery = String.format(sqlFormat, topic, fieldBuilder, ""); + String sqlQuery = String.format(sqlFormat, topic, arguments); handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @@ -229,11 +206,13 @@ public RisingwaveMacroState onError( private final class CreateSourceState implements RisingwaveMacroState { private final String sqlFormat = """ - CREATE SOURCE IF NOT EXISTS %s (*)%s + CREATE SOURCE IF NOT EXISTS %s (*) + INCLUDE header 'zilla:correlation-id' VARCHAR AS correlation_id + %s WITH ( connector='kafka', properties.bootstrap.server='%s', - topic='%s.%s', + topic='%s.%s_commands', scan.startup.mode='latest', scan.startup.timestamp.millis='%d' ) FORMAT PLAIN ENCODE AVRO ( @@ -249,20 +228,25 @@ public void onStarted( String table = command.name(); includeBuilder.setLength(0); - Map includes = command.columns().stream() - .filter(e -> ZILLA_MAPPINGS_OLD.containsKey(e.name())) - .collect(LinkedHashMap::new, - (m, e) -> m.put(e.name(), e.type()), Map::putAll); - if (!includes.isEmpty()) - { - includeBuilder.append("\n"); - includes.forEach((k, v) -> includeBuilder.append(String.format(ZILLA_MAPPINGS_OLD.get(k), k))); - includeBuilder.delete(includeBuilder.length() - 1, includeBuilder.length()); - } + command.columns().stream() + .filter(c -> ZILLA_MAPPINGS.containsKey(c.generatedAlways())) + .forEach(c -> + { + if (ZILLA_TIMESTAMP.equals(c.generatedAlways())) + { + includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c.generatedAlways()), c.name())); + } + else + { + includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c), c.name())); + } + includeBuilder.append("\n"); + }); + + String sqlQuery = String.format(sqlFormat, table, includeBuilder, bootstrapServer, + schema, table, scanStartupMil, schemaRegistry); - String sqlQuery = String.format(sqlFormat, table, includeBuilder, bootstrapServer, schema, - table, scanStartupMil, schemaRegistry); handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @@ -272,7 +256,7 @@ public RisingwaveMacroState onReady( long authorization, PgsqlFlushExFW flushEx) { - GrantResourceState state = new GrantResourceState(); + CreateMaterializedViewState state = new CreateMaterializedViewState(); state.onStarted(traceId, authorization); return state; @@ -289,6 +273,39 @@ public RisingwaveMacroState onError( } } + private final class CreateMaterializedViewState implements RisingwaveMacroState + { + @Override + public void onStarted( + long traceId, + long authorization) + { + if (zfunctionInterator == null) + { + zfunctionInterator = functions.iterator(); + } + + CreateZfunction zfunction = functions.iterator().next(); + + + handler.doExecuteSystemClient(traceId, authorization, sql); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + RisingwaveMacroState state = zfunctionInterator.hasNext() + ? new CreateMaterializedViewState() + : new GrantResourceState(); + state.onStarted(traceId, authorization); + + return state; + } + } + private final class GrantResourceState implements RisingwaveMacroState { private final String sqlFormat = """ diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java index 3b96f90fe9..b8eae76b1d 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java @@ -16,12 +16,9 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; -import org.agrona.collections.Object2ObjectHashMap; - import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; @@ -31,15 +28,6 @@ public class RisingwaveCreateZtableMacro extends RisingwaveMacroBase { private static final String ZTABLE_NAME = "ztables"; private static final String TABLE_NAME = "tables"; - private static final String ZILLA_IDENTITY = "GENERATED ALWAYS AS IDENTITY"; - private static final String ZILLA_TIMESTAMP = "GENERATED ALWAYS AS NOW"; - - private static final Map ZILLA_MAPPINGS = new Object2ObjectHashMap<>(); - static - { - ZILLA_MAPPINGS.put(ZILLA_IDENTITY, "INCLUDE header 'zilla:identity' AS %s\n"); - ZILLA_MAPPINGS.put(ZILLA_TIMESTAMP, "INCLUDE timestamp AS %s\n"); - } private final String bootstrapServer; private final String schemaRegistry; @@ -145,7 +133,7 @@ public RisingwaveMacroState onError( private final class CreateSourceState implements RisingwaveMacroState { private final String sqlFormat = """ - CREATE SOURCE IF NOT EXISTS %s (*)%s + CREATE SOURCE IF NOT EXISTS %s_source (*)%s WITH ( connector='kafka', properties.bootstrap.server='%s', @@ -163,7 +151,6 @@ public void onStarted( { String schema = command.schema(); String table = command.name(); - String sourceName = "%s_source".formatted(table); includeBuilder.setLength(0); List includes = command.columns().stream() @@ -197,7 +184,7 @@ public void onStarted( includeBuilder.delete(includeBuilder.length() - 1, includeBuilder.length()); } - String sqlQuery = String.format(sqlFormat, sourceName, includeBuilder, bootstrapServer, + String sqlQuery = String.format(sqlFormat, table, includeBuilder, bootstrapServer, schema, table, scanStartupMil, schemaRegistry); handler.doExecuteSystemClient(traceId, authorization, sqlQuery); diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroBase.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroBase.java index e32af81d28..5253b4ea32 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroBase.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroBase.java @@ -14,10 +14,24 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; +import java.util.Map; + +import org.agrona.collections.Object2ObjectHashMap; + import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; public abstract class RisingwaveMacroBase { + protected static final String ZILLA_IDENTITY = "GENERATED ALWAYS AS IDENTITY"; + protected static final String ZILLA_TIMESTAMP = "GENERATED ALWAYS AS NOW"; + + protected static final Map ZILLA_MAPPINGS = new Object2ObjectHashMap<>(); + static + { + ZILLA_MAPPINGS.put(ZILLA_IDENTITY, "INCLUDE header 'zilla:identity' AS %s_header\n"); + ZILLA_MAPPINGS.put(ZILLA_TIMESTAMP, "INCLUDE timestamp AS %s_timestamp\n"); + } + protected final RisingwaveMacroHandler handler; protected final String sql; 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 3896ce67ee..a1a1934e34 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 @@ -1732,7 +1732,8 @@ private void decodeCreateZstreamCommand( server.user, statement, command, - server.macroHandler); + server.macroHandler, + parser); server.macroState = machine.start(); } From b8888e25b183f20fbc7052d2af9a3f8cee981616 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Mon, 23 Dec 2024 07:01:42 -0800 Subject: [PATCH 093/104] Add test --- .../listener/SqlCreateZfunctionListener.java | 25 +++++++++---------- .../binding/pgsql/parser/model/Select.java | 2 +- .../binding/pgsql/parser/PgsqlParserTest.java | 13 ++++++++++ 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZfunctionListener.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZfunctionListener.java index a02c58442c..6dd8048975 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZfunctionListener.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/listener/SqlCreateZfunctionListener.java @@ -34,9 +34,9 @@ public class SqlCreateZfunctionListener extends PostgreSqlParserBaseListener private final List arguments; private final TokenStream tokens; - private final List columns = new ArrayList<>(); + private final List columns; - private String table; + private String from; private String whereClause; private String groupByClause; private String orderByClause; @@ -51,8 +51,7 @@ public SqlCreateZfunctionListener( { this.returnTypes = new ArrayList<>(); this.arguments = new ArrayList<>(); - - this.columns.clear(); + this.columns = new ArrayList<>(); this.tokens = tokens; } @@ -61,7 +60,7 @@ public CreateZfunction zfunction() { final Select select = new Select( columns, - table, + from, whereClause, groupByClause, orderByClause, @@ -86,7 +85,7 @@ public void enterRoot( returnTypes.clear(); columns.clear(); - table = null; + from = null; whereClause = null; groupByClause = null; orderByClause = null; @@ -126,7 +125,7 @@ public void enterTable_func_column( public void enterTarget_list( PostgreSqlParser.Target_listContext ctx) { - ctx.target_el().forEach(c -> columns.add(c.getText())); + ctx.target_el().forEach(c -> columns.add(tokens.getText(c))); } @Override @@ -135,7 +134,7 @@ public void enterFrom_clause( { if (ctx.from_list() != null) { - table = ctx.from_list().getText(); + from = tokens.getText(ctx.from_list()); } } @@ -143,34 +142,34 @@ public void enterFrom_clause( public void enterWhere_clause( PostgreSqlParser.Where_clauseContext ctx) { - whereClause = ctx.getText(); + whereClause = tokens.getText(ctx); } @Override public void enterGroup_clause( PostgreSqlParser.Group_clauseContext ctx) { - groupByClause = ctx.getText(); + groupByClause = tokens.getText(ctx); } @Override public void enterSort_clause( PostgreSqlParser.Sort_clauseContext ctx) { - orderByClause = ctx.getText(); + orderByClause = tokens.getText(ctx); } @Override public void enterLimit_clause( PostgreSqlParser.Limit_clauseContext ctx) { - limitClause = ctx.getText(); + limitClause = tokens.getText(ctx); } @Override public void enterOffset_clause( PostgreSqlParser.Offset_clauseContext ctx) { - offsetClause = ctx.getText(); + offsetClause = tokens.getText(ctx); } } diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Select.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Select.java index ec19b701a0..c6f705d6b5 100644 --- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Select.java +++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/parser/model/Select.java @@ -18,7 +18,7 @@ public record Select( List columns, - String table, + String from, String whereClause, String groupByClause, String orderByClause, 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 cfb3aef7bd..ca0b19e179 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 @@ -32,6 +32,7 @@ import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZview; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Operation; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Select; public class PgsqlParserTest { @@ -546,6 +547,18 @@ RETURNS TABLE( assertEquals("VARCHAR", function.returnTypes().get(1).type()); assertEquals("amount", function.returnTypes().get(2).name()); assertEquals("DOUBLE PRECISION", function.returnTypes().get(2).type()); + + Select select = function.select(); + assertNotNull(select); + assertEquals(3, select.columns().size()); + assertEquals("CASE\n" + + " WHEN balance >= args.amount THEN \"PaymentSent\"\n" + + " ELSE \"PaymentDeclined\"\n" + + " END AS event", select.columns().get(0)); + assertEquals("args.user_id", select.columns().get(1)); + assertEquals("args.amount", select.columns().get(2)); + assertEquals("balance", select.from()); + assertEquals("WHERE user_id = args.user_id", select.whereClause()); } @Test From c80aacac066af644f4646e1a083ffc70b06c0ed5 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 24 Dec 2024 10:07:34 -0800 Subject: [PATCH 094/104] WIP --- .../binding/pgsql/parser/PostgreSqlParser.g4 | 2 +- .../binding/pgsql/parser/PgsqlParserTest.java | 4 +- .../create.stream.with.includes/server.rpt | 142 ------- .../effective/create.streams/client.rpt | 217 ----------- .../effective/create.streams/server.rpt | 217 ----------- .../effective/create.zstream/client.rpt | 141 ++++--- .../effective/create.zstream/server.rpt | 92 +++-- .../client.rpt | 110 ++---- .../effective/show.zstreams/server.rpt | 116 ++++++ .../pgsql/alter.stream.add.column/client.rpt | 55 --- .../pgsql/alter.stream.add.column/server.rpt | 56 --- .../client.rpt | 56 --- .../server.rpt | 56 --- .../create.stream.with.includes/client.rpt | 54 --- .../create.stream.with.includes/server.rpt | 57 --- .../streams/pgsql/create.zstream/client.rpt | 7 +- .../streams/pgsql/create.zstream/server.rpt | 6 +- .../client.rpt | 38 +- .../server.rpt | 32 +- .../risingwave/streams/EffectiveIT.java | 20 - .../binding/risingwave/streams/PgsqlIT.java | 36 -- .../macro/RisingwaveCreateZstreamMacro.java | 362 ++++++++++++++++-- .../macro/RisingwaveCreateZtableMacro.java | 10 + .../internal/macro/RisingwaveMacroBase.java | 11 - .../stream/RisingwaveCompletionCommand.java | 2 +- .../stream/RisingwaveProxyFactory.java | 3 +- .../risingwave/internal/stream/ProxyIT.java | 6 +- 27 files changed, 655 insertions(+), 1253 deletions(-) delete mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/server.rpt delete mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt delete mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/{create.stream.with.includes => show.zstreams}/client.rpt (51%) create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zstreams/server.rpt delete mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/client.rpt delete mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt delete mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt delete mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt delete mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/client.rpt delete mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/server.rpt rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.streams => show.zstreams}/client.rpt (71%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{create.streams => show.zstreams}/server.rpt (71%) 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 cef3ab5f32..a3070c99c1 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 @@ -717,7 +717,7 @@ opt_generated_clause generation_type : IDENTITY_P - | TIMESTAMP + | NOW ; opt_with_zstream 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 ca0b19e179..6f003577c0 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 @@ -529,7 +529,7 @@ RETURNS TABLE( args.amount FROM balance WHERE user_id = args.user_id; $$ - """; + """; CreateZfunction function = parser.parseCreateZfunction(sql); assertNotNull(function); @@ -572,7 +572,7 @@ CREATE ZSTREAM app_events ( amount DOUBLE PRECISION, notes VARCHAR, owner_id VARCHAR GENERATED ALWAYS AS IDENTITY, - created_at TIMESTAMP GENERATED ALWAYS AS TIMESTAMP + created_at TIMESTAMP GENERATED ALWAYS AS NOW ) WITH ( DISPATCH_ON = 'command', 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 deleted file mode 100644 index 351844ae5c..0000000000 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/server.rpt +++ /dev/null @@ -1,142 +0,0 @@ -# -# Copyright 2021-2024 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. -# - -accept "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read await CREATE_TOPIC_COMPLETED - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -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 zilla_timestamp\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.weather',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_SOURCE") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "GRANT ALL PRIVILEGES ON SOURCE public.weather TO zillabase;" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("GRANT_PRIVILEGES") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -accept "zilla://streams/app2" - option zilla:window 8192 - option zilla:transmission "duplex" - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "CREATE TOPIC IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE);" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_TOPIC") - .build() - .build()} - -write notify CREATE_TOPIC_COMPLETED - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt deleted file mode 100644 index 2838e04dd1..0000000000 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/client.rpt +++ /dev/null @@ -1,217 +0,0 @@ -# -# Copyright 2021-2024 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. -# - -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "CREATE SOURCE IF NOT EXISTS weather_c (*)\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.weather_c',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_SOURCE") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "GRANT ALL PRIVILEGES ON SOURCE public.weather_c TO zillabase;" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("GRANT_PRIVILEGES") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "CREATE SOURCE IF NOT EXISTS weather_f (*)\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.weather_f',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_SOURCE") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "GRANT ALL PRIVILEGES ON SOURCE public.weather_f TO zillabase;" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("GRANT_PRIVILEGES") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -connect "zilla://streams/app2" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "CREATE TOPIC IF NOT EXISTS weather_c " - "(city VARCHAR, temperature DOUBLE, date DATE);" - [0x00] - -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_TOPIC") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "CREATE TOPIC IF NOT EXISTS weather_f " - "(city VARCHAR, temperature DOUBLE, date DATE);" - [0x00] - -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_TOPIC") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt deleted file mode 100644 index f6536341cd..0000000000 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.streams/server.rpt +++ /dev/null @@ -1,217 +0,0 @@ -# -# Copyright 2021-2024 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. -# - -accept "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read await CREATE_TOPIC_COMPLETED - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "CREATE SOURCE IF NOT EXISTS weather_c (*)\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.weather_c',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_SOURCE") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "GRANT ALL PRIVILEGES ON SOURCE public.weather_c TO zillabase;" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("GRANT_PRIVILEGES") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "CREATE SOURCE IF NOT EXISTS weather_f (*)\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.weather_f',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_SOURCE") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "GRANT ALL PRIVILEGES ON SOURCE public.weather_f TO zillabase;" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("GRANT_PRIVILEGES") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -accept "zilla://streams/app2" - option zilla:window 8192 - option zilla:transmission "duplex" - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "CREATE TOPIC IF NOT EXISTS weather_c " - "(city VARCHAR, temperature DOUBLE, date DATE);" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_TOPIC") - .build() - .build()} - -write notify CREATE_TOPIC_COMPLETED - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "CREATE TOPIC IF NOT EXISTS weather_f " - "(city VARCHAR, temperature DOUBLE, date DATE);" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_TOPIC") - .build() - .build()} - -write notify CREATE_TOPIC_COMPLETED - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt index 3113d95e3a..fc914d8051 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "SELECT * FROM zb_catalog.zfunctions WHERE sql IN ('send_payment_handler');" +write "SELECT * FROM zb_catalog.zfunctions WHERE name IN ('send_payment_handler');" [0x00] read advised zilla:flush ${pgsql:flushEx() @@ -64,28 +64,28 @@ read zilla:data.ext ${pgsql:dataEx() .row() .build() .build()} -read [0x00 0x02] # Field Count - [0x00 0x00 0x00 0x06] # Length - [0x63 0x69 0x74 0x69 0x65 0x73] # Data - [0x00 0x00 0x01 0x73] # Length - "CREATE ZFUNCTION send_payment_handler(\n" # Data - " user_id VARCHAR,\n" - " amount DOUBLE PRECISION\n" - "RETURNS TABLE(\n" - " event VARCHAR,\n" - " user_id VARCHAR,\n" - " amount DOUBLE PRECISION)\n" - "LANGUAGE SQL AS $$\n" - " SELECT\n" - " CASE\n" - " WHEN balance >= amount THEN \"PaymentSent\"\n" - " ELSE \"PaymentDeclined\"\n" - " END AS event,\n" - " user_id,\n" - " amount,\n" - " FROM balance as b WHERE b.user_id = user_id;\n" - "$$" - [0x00] +read [0x00 0x02] # Field Count + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data + [0x00 0x00 0x01 0x80] # Length + "CREATE ZFUNCTION send_payment_handler(\n" # Data + " user_id VARCHAR,\n" + " amount DOUBLE PRECISION)\n" + "RETURNS TABLE(\n" + " event VARCHAR,\n" + " user_id VARCHAR,\n" + " amount DOUBLE PRECISION)\n" + "LANGUAGE SQL AS $$\n" + " SELECT\n" + " CASE\n" + " WHEN balance >= args.amount THEN 'PaymentSent'\n" + " ELSE 'PaymentDeclined'\n" + " END AS event,\n" + " args.user_id,\n" + " args.amount\n" + " FROM balance WHERE user_id = args.user_id;\n" + "$$" + [0x00] read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) @@ -101,21 +101,21 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} -write notify CREATE_TOPIC_COMPLETED +read notify CREATE_TOPIC_COMPLETED write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) .query() .build() .build()} -write "CREATE SOURCE IF NOT EXISTS app_events_commands (*)\n" +write "CREATE SOURCE app_events_commands (*)\n" "INCLUDE header 'zilla:correlation-id' VARCHAR AS correlation_id\n" "INCLUDE header 'zilla:identity' VARCHAR AS owner_id\n" "INCLUDE timestamp AS created_at\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='app_events_commands',\n" + " topic='public.app_events_commands',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" @@ -143,18 +143,15 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "CREATE MATERIALIZED VIEW send_payment_handler AS\n" - " SELECT\n" - " c.correlation_id,\n" - " CASE\n" - " WHEN b.balance >= c.amount THEN 'PaymentSent'\n" - " ELSE 'PaymentDeclined'\n" - " END AS event,\n" - " c.user_id,\n" - " c.amount\n" - " FROM streampay_events_commands c\n" - " JOIN streampay_balances b\n" - " ON c.user_id = b.user_id\n" - " WHERE c.type = 'SendPayment'; + " SELECT\n" + " c.correlation_id,\n" + " CASE\n" + " WHEN balance >= c.amount THEN 'PaymentSent'\n" + " ELSE 'PaymentDeclined'\n" + " END AS event, c.user_id, c.amount\n" + " FROM app_events_commands c\n" + " JOIN balance ON WHERE user_id = c.user_id\n" + " WHERE c.command = 'SendPayment';" [0x00] read advised zilla:flush ${pgsql:flushEx() @@ -177,7 +174,7 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "CREATE MATERIALIZED VIEW app_events AS\n" - " SELECT * FROM send_payment_handler;" + " SELECT * FROM send_payment_handler;" [0x00] read advised zilla:flush ${pgsql:flushEx() @@ -222,11 +219,11 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "CREATE MATERIALIZED VIEW app_events_reply_handler AS\n" - " SELECT\n" - " '200' AS status,\n" - " correlation_id\n" - " FROM app_events;" - [0x00] + " SELECT\n" + " '200' AS status,\n" + " correlation_id\n" + " FROM public.app_events;" + [0x00] read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) @@ -247,22 +244,22 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK IF NOT EXISTS app_events_replies_sink\n" - "AS SELECT\n" - " COALESCE(r.status, '400') AS status,\n" - " c.correlation_id\n" - " FROM streampay_events_commands c\n" - " LEFT JOIN app_events_reply_handler r\n" - " ON c.correlation_id = r.correlation_id\n" - "WITH (\n" - " connector = 'kafka',\n" - " topic = 'public.app_events_replies',\n" - " properties.bootstrap.server = 'localhost:9092',\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " force_append_only='true',\n" - " schema.registry = 'http://localhost:8081'\n" - "); - [0x00] +write "CREATE SINK app_events_replies_sink AS\n" + " SELECT\n" + " COALESCE(r.status, '400') AS status,\n" + " c.correlation_id\n" + " FROM app_events_commands c\n" + " LEFT JOIN app_events_reply_handler r\n" + " ON c.correlation_id = r.correlation_id\n" + "WITH (\n" + " connector = 'kafka',\n" + " topic = 'public.app_events_replies',\n" + " properties.bootstrap.server = 'localhost:9092',\n" + ") FORMAT PLAIN ENCODE AVRO (\n" + " force_append_only='true',\n" + " schema.registry = 'http://localhost:8081'\n" + ");" + [0x00] read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) @@ -283,21 +280,20 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "INSERT INTO zb_catalog.zstreams (name, sql) VALUES " - "('cities', 'CREATE ZSTREAM app_events (\n" +write "INSERT INTO zb_catalog.zstreams (name, sql) VALUES ('app_events', 'CREATE ZSTREAM app_events (\n" " event VARCHAR,\n" " user_id VARCHAR,\n" " amount DOUBLE PRECISION,\n" " owner_id VARCHAR GENERATED ALWAYS AS IDENTITY,\n" - " created_at TIMESTAMP GENERATED ALWAYS AS TIMESTAMP\n" + " created_at TIMESTAMP GENERATED ALWAYS AS NOW\n" ")\n" "WITH (\n" - " DISPATCH_ON = 'command',\n" + " DISPATCH_ON = ''command'',\n" " HANDLERS = (\n" - " 'SendPayment' TO 'send_payment_handler',\n" - " ) + " ''SendPayment'' TO ''send_payment_handler''\n" + " )\n" ");');" - + [0x00] read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) @@ -346,8 +342,8 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE TOPIC IF NOT EXISTS app_events_commands " - "(user_id VARCHAR, amount DOUBLE PRECISION);" +write "CREATE TOPIC app_events_commands " + "(command VARCHAR, user_id VARCHAR, amount DOUBLE PRECISION);" [0x00] read advised zilla:flush ${pgsql:flushEx() @@ -369,9 +365,9 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE TOPIC IF NOT EXISTS app_events_replies_sink " - "(status VARCHAR, correlation_id VARCHAR);" - [0x00] +write "CREATE TOPIC app_events_replies_sink " + "(status VARCHAR, correlation_id VARCHAR);" + [0x00] read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) @@ -387,3 +383,4 @@ read advised zilla:flush ${pgsql:flushEx() .build() .build()} + diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt index ff0468e880..2fc9560d11 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt @@ -34,7 +34,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "SELECT * FROM zb_catalog.zfunctions WHERE sql IN ('send_payment_handler');" +read "SELECT * FROM zb_catalog.zfunctions WHERE name IN ('send_payment_handler');" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -72,7 +72,7 @@ write [0x00 0x02] # Field Count [0x00 0x00 0x01 0x80] # Length "CREATE ZFUNCTION send_payment_handler(\n" # Data " user_id VARCHAR,\n" - " amount DOUBLE PRECISION\n" + " amount DOUBLE PRECISION)\n" "RETURNS TABLE(\n" " event VARCHAR,\n" " user_id VARCHAR,\n" @@ -80,11 +80,11 @@ write [0x00 0x02] # Field Count "LANGUAGE SQL AS $$\n" " SELECT\n" " CASE\n" - " WHEN balance >= args.amount THEN \"PaymentSent\"\n" - " ELSE \"PaymentDeclined\"\n" + " WHEN balance >= args.amount THEN 'PaymentSent'\n" + " ELSE 'PaymentDeclined'\n" " END AS event,\n" " args.user_id,\n" - " args.amount,\n" + " args.amount\n" " FROM balance WHERE user_id = args.user_id;\n" "$$" [0x00] @@ -110,14 +110,14 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SOURCE IF NOT EXISTS app_events_commands (*)\n" +read "CREATE SOURCE app_events_commands (*)\n" "INCLUDE header 'zilla:correlation-id' VARCHAR AS correlation_id\n" "INCLUDE header 'zilla:identity' VARCHAR AS owner_id\n" "INCLUDE timestamp AS created_at\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" - " topic='app_events_commands',\n" + " topic='public.app_events_commands',\n" " scan.startup.mode='latest',\n" " scan.startup.timestamp.millis='140000000'\n" ") FORMAT PLAIN ENCODE AVRO (\n" @@ -145,18 +145,15 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read "CREATE MATERIALIZED VIEW send_payment_handler AS\n" - " SELECT\n" - " c.correlation_id,\n" - " CASE\n" - " WHEN b.balance >= c.amount THEN 'PaymentSent'\n" - " ELSE 'PaymentDeclined'\n" - " END AS event,\n" - " c.user_id,\n" - " c.amount\n" - " FROM streampay_events_commands c\n" - " JOIN streampay_balances b\n" - " ON c.user_id = b.user_id\n" - " WHERE c.type = 'SendPayment'; + " SELECT\n" + " c.correlation_id,\n" + " CASE\n" + " WHEN balance >= c.amount THEN 'PaymentSent'\n" + " ELSE 'PaymentDeclined'\n" + " END AS event, c.user_id, c.amount\n" + " FROM app_events_commands c\n" + " JOIN balance ON WHERE user_id = c.user_id\n" + " WHERE c.command = 'SendPayment';" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -179,7 +176,7 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read "CREATE MATERIALIZED VIEW app_events AS\n" - " SELECT * FROM send_payment_handler;" + " SELECT * FROM send_payment_handler;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -225,9 +222,9 @@ read zilla:data.ext ${pgsql:dataEx() .build()} read "CREATE MATERIALIZED VIEW app_events_reply_handler AS\n" " SELECT\n" - " '200' AS status,\n" - " correlation_id\n" - " FROM app_events;" + " '200' AS status,\n" + " correlation_id\n" + " FROM public.app_events;" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -249,13 +246,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK IF NOT EXISTS app_events_replies_sink\n" - "AS SELECT\n" - " COALESCE(r.status, '400') AS status,\n" - " c.correlation_id\n" - " FROM streampay_events_commands c\n" - " LEFT JOIN app_events_reply_handler r\n" - " ON c.correlation_id = r.correlation_id\n" +read "CREATE SINK app_events_replies_sink AS\n" + " SELECT\n" + " COALESCE(r.status, '400') AS status,\n" + " c.correlation_id\n" + " FROM app_events_commands c\n" + " LEFT JOIN app_events_reply_handler r\n" + " ON c.correlation_id = r.correlation_id\n" "WITH (\n" " connector = 'kafka',\n" " topic = 'public.app_events_replies',\n" @@ -263,7 +260,7 @@ read "CREATE SINK IF NOT EXISTS app_events_replies_sink\n" ") FORMAT PLAIN ENCODE AVRO (\n" " force_append_only='true',\n" " schema.registry = 'http://localhost:8081'\n" - "); + ");" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -285,20 +282,19 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "INSERT INTO zb_catalog.zstreams (name, sql) VALUES " - "('cities', 'CREATE ZSTREAM app_events (\n" - " event VARCHAR,\n" - " user_id VARCHAR,\n" - " amount DOUBLE PRECISION,\n" - " owner_id VARCHAR GENERATED ALWAYS AS IDENTITY,\n" - " created_at TIMESTAMP GENERATED ALWAYS AS TIMESTAMP\n" - ")\n" - "WITH (\n" - " DISPATCH_ON = 'command',\n" - " HANDLERS = (\n" - " 'SendPayment' TO 'send_payment_handler',\n" - " ) - ");');" +read "INSERT INTO zb_catalog.zstreams (name, sql) VALUES ('app_events', 'CREATE ZSTREAM app_events (\n" + " event VARCHAR,\n" + " user_id VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " owner_id VARCHAR GENERATED ALWAYS AS IDENTITY,\n" + " created_at TIMESTAMP GENERATED ALWAYS AS NOW\n" + ")\n" + "WITH (\n" + " DISPATCH_ON = ''command'',\n" + " HANDLERS = (\n" + " ''SendPayment'' TO ''send_payment_handler''\n" + " )\n" + ");');" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -348,8 +344,8 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE TOPIC IF NOT EXISTS app_events_commands " - "(user_id VARCHAR, amount DOUBLE PRECISION);" +read "CREATE TOPIC app_events_commands " + "(command VARCHAR, user_id VARCHAR, amount DOUBLE PRECISION);" [0x00] write advise zilla:flush ${pgsql:flushEx() @@ -373,7 +369,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE TOPIC IF NOT EXISTS app_events_replies_sink " +read "CREATE TOPIC app_events_replies_sink " "(status VARCHAR, correlation_id VARCHAR);" [0x00] 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/show.zstreams/client.rpt similarity index 51% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.stream.with.includes/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zstreams/client.rpt index c86d68aafa..6fd0953bac 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/show.zstreams/client.rpt @@ -32,49 +32,63 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -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 zilla_timestamp\n" - "WITH (\n" - " connector='kafka',\n" - " properties.bootstrap.server='localhost:9092',\n" - " topic='public.weather',\n" - " scan.startup.mode='latest',\n" - " scan.startup.timestamp.millis='140000000'\n" - ") FORMAT PLAIN ENCODE AVRO (\n" - " schema.registry = 'http://localhost:8081'\n" - ");" +write "SELECT * FROM zb_catalog.zstreams;" [0x00] -write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_SOURCE") + .type() + .column() + .name("name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("sql") + .tableOid(0) + .index(0) + .typeOid(20) + .length(8) + .modifier(-1) + .format("TEXT") + .build() .build() .build()} -read advised zilla:flush ${pgsql:flushEx() +read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") + .row() .build() .build()} +read [0x00 0x02] # Field Count + [0x00 0x00 0x00 0x06] # Length + "app_events" # Data + [0x00 0x00 0x00 0x7c] # Length + "CREATE ZSTREAM app_events (\n" # Data + " event VARCHAR,\n" + " user_id VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR,\n" + " owner_id VARCHAR GENERATED ALWAYS AS IDENTITY,\n" + " created_at TIMESTAMP GENERATED ALWAYS AS NOW\n" + ")\n" + "WITH (\n" + " DISPATCH_ON = 'command',\n" + " HANDLERS = (\n" + " 'RequestPayment' TO 'request_payment_handler'\n" + " )\n" + "); + [0x00] -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "GRANT ALL PRIVILEGES ON SOURCE public.weather TO zillabase;" - [0x00] -write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("GRANT_PRIVILEGES") + .tag("SELECT 1") .build() .build()} @@ -98,43 +112,3 @@ write zilla:begin.ext ${pgsql:beginEx() .build()} connected - -connect "zilla://streams/app2" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "CREATE TOPIC IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE);" - [0x00] - -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_TOPIC") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zstreams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zstreams/server.rpt new file mode 100644 index 0000000000..5253ed6481 --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zstreams/server.rpt @@ -0,0 +1,116 @@ +# +# Copyright 2021-2024 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. +# + +accept "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "postgres") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "SELECT * FROM zb_catalog.zstreams;" +read [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("sql") + .tableOid(0) + .index(0) + .typeOid(20) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +write [0x00 0x02] # Field Count + [0x00 0x00 0x00 0x06] # Length + "app_events" # Data + [0x00 0x00 0x00 0x7c] # Length + "CREATE ZSTREAM app_events (\n" # Data + " event VARCHAR,\n" + " user_id VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR,\n" + " owner_id VARCHAR GENERATED ALWAYS AS IDENTITY,\n" + " created_at TIMESTAMP GENERATED ALWAYS AS NOW\n" + ")\n" + "WITH (\n" + " DISPATCH_ON = 'command',\n" + " HANDLERS = (\n" + " 'RequestPayment' TO 'request_payment_handler'\n" + " )\n" + "); + [0x00] +write flush + + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SELECT 1") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/client.rpt deleted file mode 100644 index 874e48db35..0000000000 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/client.rpt +++ /dev/null @@ -1,55 +0,0 @@ -# -# Copyright 2021-2024 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. -# - -connect "zilla://streams/app0" - option zilla:window 8192 - option zilla:transmission "duplex" - - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "ALTER STREAM cities ADD COLUMN zip INT;" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("ALTER_STREAM") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -write close -read closed diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt deleted file mode 100644 index 8cf47f30b7..0000000000 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.add.column/server.rpt +++ /dev/null @@ -1,56 +0,0 @@ -# -# Copyright 2021-2024 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. -# - -accept "zilla://streams/app0" - option zilla:window 8192 - option zilla:transmission "duplex" - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "ALTER STREAM cities ADD COLUMN zip INT;" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("ALTER_STREAM") - .build() - .build()} - -write notify CREATE_TOPIC_COMPLETED - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} -read closed -write close diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt deleted file mode 100644 index c92417c41a..0000000000 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/client.rpt +++ /dev/null @@ -1,56 +0,0 @@ -# -# Copyright 2021-2024 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. -# - -connect "zilla://streams/app0" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "ALTER STREAM cities ALTER COLUMN name TYPE VARCHAR(100);" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .error() - .severity("ERROR") - .code("XX000") - .message("Unable to execute command because ALTER STREAM only supports ADD") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -write close -read closed diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt deleted file mode 100644 index 6545acb336..0000000000 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/alter.stream.modify.column.rejected/server.rpt +++ /dev/null @@ -1,56 +0,0 @@ -# -# Copyright 2021-2024 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. -# - -accept "zilla://streams/app0" - option zilla:window 8192 - option zilla:transmission "duplex" - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "ALTER STREAM cities ALTER COLUMN name TYPE VARCHAR(100);" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .error() - .severity("ERROR") - .code("XX000") - .message("Unable to execute command because ALTER STREAM only supports ADD") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} -read closed -write close 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 deleted file mode 100644 index ae34f2e2d4..0000000000 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/client.rpt +++ /dev/null @@ -1,54 +0,0 @@ -# -# Copyright 2021-2024 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. -# - -connect "zilla://streams/app0" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "CREATE STREAM IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP);" - [0x00] - -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_STREAM") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} 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 deleted file mode 100644 index 6df251e227..0000000000 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.stream.with.includes/server.rpt +++ /dev/null @@ -1,57 +0,0 @@ -# -# Copyright 2021-2024 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. -# - -property serverAddress "zilla://streams/app0" - -accept ${serverAddress} - option zilla:window 8192 - option zilla:transmission "duplex" - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "CREATE STREAM IF NOT EXISTS weather " - "(city VARCHAR, temperature DOUBLE, date DATE," - " zilla_correlation_id VARCHAR, zilla_identity VARCHAR, zilla_timestamp TIMESTAMP);" - [0x00] - - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_STREAM") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/client.rpt index d339223b13..68b77e37dc 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/client.rpt @@ -37,16 +37,15 @@ write "CREATE ZSTREAM app_events (\n" " user_id VARCHAR,\n" " amount DOUBLE PRECISION,\n" " owner_id VARCHAR GENERATED ALWAYS AS IDENTITY,\n" - " created_at TIMESTAMP GENERATED ALWAYS AS TIMESTAMP\n" + " created_at TIMESTAMP GENERATED ALWAYS AS NOW\n" ")\n" "WITH (\n" " DISPATCH_ON = 'command',\n" " HANDLERS = (\n" - " 'SendPayment' TO 'send_payment_handler',\n" - " ) + " 'SendPayment' TO 'send_payment_handler'\n" + " )\n" ");" [0x00] - write flush read advised zilla:flush ${pgsql:flushEx() diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/server.rpt index 686fc9a67a..1dca7c028e 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.zstream/server.rpt @@ -41,13 +41,13 @@ read "CREATE ZSTREAM app_events (\n" " user_id VARCHAR,\n" " amount DOUBLE PRECISION,\n" " owner_id VARCHAR GENERATED ALWAYS AS IDENTITY,\n" - " created_at TIMESTAMP GENERATED ALWAYS AS TIMESTAMP\n" + " created_at TIMESTAMP GENERATED ALWAYS AS NOW\n" ")\n" "WITH (\n" " DISPATCH_ON = 'command',\n" " HANDLERS = (\n" - " 'SendPayment' TO 'send_payment_handler',\n" - " ) + " 'SendPayment' TO 'send_payment_handler'\n" + " )\n" ");" [0x00] diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/client.rpt similarity index 71% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/client.rpt index dd9738c83a..3cd22e5902 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/client.rpt @@ -32,41 +32,38 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE STREAM IF NOT EXISTS weather_c " - "(city VARCHAR, temperature DOUBLE, date DATE);" +write "SHOW ZSTREAMS;" [0x00] - write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_STREAM") + .type() + .column() + .name("Name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(4) + .modifier(-1) + .format("TEXT") + .build() .build() .build()} -read advised zilla:flush ${pgsql:flushEx() +read zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") + .row() .build() .build()} - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "CREATE STREAM IF NOT EXISTS weather_f " - "(city VARCHAR, temperature DOUBLE, date DATE);" - [0x00] - -write flush +read [0x00 0x01] # Field Count + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_STREAM") + .tag("SHOW_COMMAND") .build() .build()} @@ -76,3 +73,4 @@ read advised zilla:flush ${pgsql:flushEx() .status("IDLE") .build() .build()} + diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/server.rpt similarity index 71% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/server.rpt index c5efb2d291..1e561ed245 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/create.streams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/server.rpt @@ -36,32 +36,38 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE STREAM IF NOT EXISTS weather_c " - "(city VARCHAR, temperature DOUBLE, date DATE);" - [0x00] +read "SHOW ZSTREAMS;" + [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) - .completion() - .tag("CREATE_STREAM") + .type() + .column() + .name("Name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(4) + .modifier(-1) + .format("TEXT") + .build() .build() .build()} +write flush -write advise zilla:flush ${pgsql:flushEx() +write zilla:data.ext ${pgsql:dataEx() .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") + .row() .build() .build()} - -read "CREATE STREAM IF NOT EXISTS weather_f " - "(city VARCHAR, temperature DOUBLE, date DATE);" - [0x00] +write [0x00 0x01] # Field Count + [0x00 0x00 0x00 0x06] # Length + [0x63 0x69 0x74 0x69 0x65 0x73] # Data write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("CREATE_STREAM") + .tag("SHOW_COMMAND") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java index a90bc4cfcb..fb3e479ac6 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java @@ -134,15 +134,6 @@ public void shouldCreateFunctionEmbedded() throws Exception k3po.finish(); } - @Test - @Specification({ - "${app}/create.stream.with.includes/client", - "${app}/create.stream.with.includes/server" }) - public void shouldCreateStreamWithIncludes() throws Exception - { - k3po.finish(); - } - @Test @Specification({ "${app}/create.ztable.with.generated.as/client", @@ -161,17 +152,6 @@ public void shouldShowTablesWithNewline() throws Exception k3po.finish(); } - @Test - @Specification({ - "${app}/create.streams/client", - "${app}/create.streams/server" }) - public void shouldCreateStreams() throws Exception - { - k3po.finish(); - } - - - @Test @Specification({ "${app}/query.with.multiple.statements.errored/client", diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java index 0304c8f898..4f8528e72e 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java @@ -134,15 +134,6 @@ public void shouldCreateFunctionEmbedded() throws Exception k3po.finish(); } - @Test - @Specification({ - "${app}/create.stream.with.includes/client", - "${app}/create.stream.with.includes/server" }) - public void shouldCreateStreamWithIncludes() throws Exception - { - k3po.finish(); - } - @Test @Specification({ "${app}/create.ztable.with.generated.as/client", @@ -161,15 +152,6 @@ public void shouldShowTablesWithNewline() throws Exception k3po.finish(); } - @Test - @Specification({ - "${app}/create.streams/client", - "${app}/create.streams/server" }) - public void shouldCreateStreams() throws Exception - { - k3po.finish(); - } - @Test @Specification({ "${app}/query.with.multiple.statements.errored/client", @@ -225,15 +207,6 @@ public void shouldAlterTableAddColumn() throws Exception k3po.finish(); } - @Test - @Specification({ - "${app}/alter.stream.add.column/client", - "${app}/alter.stream.add.column/server" }) - public void shouldAlterStreamAddColumn() throws Exception - { - k3po.finish(); - } - @Test @Specification({ "${app}/alter.ztable.modify.column.rejected/client", @@ -243,15 +216,6 @@ public void shouldNotAlterZtableModifyColumn() throws Exception k3po.finish(); } - @Test - @Specification({ - "${app}/alter.stream.modify.column.rejected/client", - "${app}/alter.stream.modify.column.rejected/server" }) - public void shouldNotAlterStreamModifyColumn() throws Exception - { - k3po.finish(); - } - @Test @Specification({ "${app}/show.zviews/client", diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java index 81cf349f29..8c96aa435c 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java @@ -18,24 +18,32 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import org.agrona.DirectBuffer; +import org.agrona.collections.Object2ObjectHashMap; import io.aklivity.zilla.runtime.binding.pgsql.parser.PgsqlParser; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZfunction; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZstream; -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.ZstreamColumn; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Select; import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.OctetsFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; public class RisingwaveCreateZstreamMacro extends RisingwaveMacroBase { + private static final String ZSTREAM_NAME = "zstreams"; + + private static final Map ZILLA_MAPPINGS = new Object2ObjectHashMap<>(); + static + { + ZILLA_MAPPINGS.put(ZILLA_IDENTITY, "INCLUDE header 'zilla:identity' VARCHAR AS %s"); + ZILLA_MAPPINGS.put(ZILLA_TIMESTAMP, "INCLUDE timestamp AS %s"); + } private final List functions; // - private final StringBuilder fieldBuilder; - private final StringBuilder includeBuilder; private final String bootstrapServer; private final String schemaRegistry; @@ -47,6 +55,7 @@ public class RisingwaveCreateZstreamMacro extends RisingwaveMacroBase private final CreateZstream command; private Iterator zfunctionInterator; + private CreateZfunction lastZfunction; public RisingwaveCreateZstreamMacro( String bootstrapServer, @@ -71,8 +80,6 @@ public RisingwaveCreateZstreamMacro( this.parser = parser; this.functions = new ArrayList<>(); - this.fieldBuilder = new StringBuilder(); - this.includeBuilder = new StringBuilder(); } public RisingwaveMacroState start() @@ -83,14 +90,14 @@ public RisingwaveMacroState start() private final class SelectZfunctionsCommandState implements RisingwaveMacroState { private final String sqlFormat = """ - SELECT * FROM zb_catalog.zfunctions; WHERE name IN (%s);\u0000"""; + SELECT * FROM zb_catalog.zfunctions WHERE name IN (%s);\u0000"""; @Override public void onStarted( long traceId, long authorization) { - String handlers = command.commandHandlers().keySet().stream() + String handlers = command.commandHandlers().values().stream() .map(value -> "'" + value + "'") .collect(Collectors.joining(", ")); String sqlQuery = String.format(sqlFormat, handlers); @@ -157,7 +164,7 @@ public RisingwaveMacroState onError( private final class CreateSourceTopicState implements RisingwaveMacroState { private final String sqlFormat = """ - CREATE TOPIC IF NOT EXISTS %s_commands (%s);\u0000"""; + CREATE TOPIC %s_commands (%s);\u0000"""; @Override public void onStarted( @@ -166,15 +173,14 @@ public void onStarted( { String topic = command.name(); - fieldBuilder.setLength(0); - - CreateZfunction zfunction = functions.getFirst(); + CreateZfunction zfunction = functions.stream().findFirst().get(); String arguments = zfunction.arguments().stream() .map(arg -> arg.name() + " " + arg.type()) .collect(Collectors.joining(", ")); + String fields = "%s VARCHAR, %s".formatted(command.dispatchOn(), arguments); - String sqlQuery = String.format(sqlFormat, topic, arguments); + String sqlQuery = String.format(sqlFormat, topic, fields); handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @@ -206,7 +212,7 @@ public RisingwaveMacroState onError( private final class CreateSourceState implements RisingwaveMacroState { private final String sqlFormat = """ - CREATE SOURCE IF NOT EXISTS %s (*) + CREATE SOURCE %s_commands (*) INCLUDE header 'zilla:correlation-id' VARCHAR AS correlation_id %s WITH ( @@ -227,24 +233,17 @@ public void onStarted( String schema = command.schema(); String table = command.name(); - includeBuilder.setLength(0); - - command.columns().stream() + String include = command.columns().stream() .filter(c -> ZILLA_MAPPINGS.containsKey(c.generatedAlways())) - .forEach(c -> + .map(c -> { - if (ZILLA_TIMESTAMP.equals(c.generatedAlways())) - { - includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c.generatedAlways()), c.name())); - } - else - { - includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c), c.name())); - } - includeBuilder.append("\n"); - }); + String name = c.name(); + String generated = c.generatedAlways(); + return String.format(ZILLA_MAPPINGS.get(generated), name); + }) + .collect(Collectors.joining("\n")); - String sqlQuery = String.format(sqlFormat, table, includeBuilder, bootstrapServer, + String sqlQuery = String.format(sqlFormat, table, include, bootstrapServer, schema, table, scanStartupMil, schemaRegistry); handler.doExecuteSystemClient(traceId, authorization, sqlQuery); @@ -256,7 +255,7 @@ public RisingwaveMacroState onReady( long authorization, PgsqlFlushExFW flushEx) { - CreateMaterializedViewState state = new CreateMaterializedViewState(); + CreateHandlerMaterializedViewState state = new CreateHandlerMaterializedViewState(); state.onStarted(traceId, authorization); return state; @@ -273,22 +272,62 @@ public RisingwaveMacroState onError( } } - private final class CreateMaterializedViewState implements RisingwaveMacroState + private final class CreateHandlerMaterializedViewState implements RisingwaveMacroState { + private final String sqlFormat = """ + CREATE MATERIALIZED VIEW %s AS + SELECT + c.correlation_id, + %s + FROM %s_commands c + %s + WHERE %s;\u0000"""; + @Override public void onStarted( long traceId, long authorization) { - if (zfunctionInterator == null) + if (lastZfunction == null) { - zfunctionInterator = functions.iterator(); - } + if (zfunctionInterator == null) + { + zfunctionInterator = functions.iterator(); + } + + lastZfunction = zfunctionInterator.next(); + Select select = lastZfunction.select(); - CreateZfunction zfunction = functions.iterator().next(); + String columns = select.columns().stream() + .map(c -> c.replace("args", "c")) + .collect(Collectors.joining(", ")); + String name = lastZfunction.name(); + String from = command.name(); - handler.doExecuteSystemClient(traceId, authorization, sql); + String join = ""; + if (select.from() != null) + { + join = "JOIN %s".formatted(select.from()); + + if (select.whereClause() != null) + { + join = String.format("%s ON %s", join, select.whereClause().replace("args", "c")); + } + } + + String commandName = command.commandHandlers().entrySet().stream() + .filter(e -> e.getValue().equals(name)) + .map(Map.Entry::getKey) + .findFirst() + .get(); + + String where = "c.%s = '%s'".formatted(command.dispatchOn(), commandName); + + String sqlQuery = String.format(sqlFormat, name, columns, from, join, where); + + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + } } @Override @@ -297,19 +336,76 @@ public RisingwaveMacroState onReady( long authorization, PgsqlFlushExFW flushEx) { + lastZfunction = null; + RisingwaveMacroState state = zfunctionInterator.hasNext() - ? new CreateMaterializedViewState() - : new GrantResourceState(); + ? new CreateHandlerMaterializedViewState() + : new CreateStreamMaterializedViewState(); state.onStarted(traceId, authorization); return state; } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doFlushProxy(traceId, authorization, flushEx); + + return errorState(); + } + } + + private final class CreateStreamMaterializedViewState implements RisingwaveMacroState + { + private final String sqlFormat = """ + CREATE MATERIALIZED VIEW %s AS + %s;\u0000"""; + + @Override + public void onStarted( + long traceId, + long authorization) + { + String selects = command.commandHandlers().values().stream() + .map("SELECT * FROM %s"::formatted) + .collect(Collectors.joining("UNION ALL\n")); + + String sqlQuery = String.format(sqlFormat, command.name(), selects); + + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + GrantResourceState state = new GrantResourceState(); + state.onStarted(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doFlushProxy(traceId, authorization, flushEx); + + return errorState(); + } } private final class GrantResourceState implements RisingwaveMacroState { private final String sqlFormat = """ - GRANT ALL PRIVILEGES ON SOURCE %s.%s TO %s;\u0000"""; + GRANT ALL PRIVILEGES ON MATERIALIZED VIEW %s.%s TO %s;\u0000"""; @Override public void onStarted( @@ -321,13 +417,201 @@ public void onStarted( handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + CreateReplyMaterializedViewState state = new CreateReplyMaterializedViewState(); + state.onStarted(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doFlushProxy(traceId, authorization, flushEx); + + return errorState(); + } + } + + private final class CreateReplyMaterializedViewState implements RisingwaveMacroState + { + private final String sqlFormat = """ + CREATE MATERIALIZED VIEW %s_reply_handler AS + SELECT + '200' AS status, + correlation_id + FROM %s.%s;\u0000"""; + + @Override + public void onStarted( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, command.name(), command.schema(), command.name()); + + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + } + + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + CreateSinkTopicState state = new CreateSinkTopicState(); + state.onStarted(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doFlushProxy(traceId, authorization, flushEx); + + return errorState(); + } + } + + private final class CreateSinkTopicState implements RisingwaveMacroState + { + private final String sqlFormat = """ + CREATE TOPIC %s_replies_sink (status VARCHAR, correlation_id VARCHAR);\u0000"""; + + @Override + public void onStarted( + long traceId, + long authorization) + { + String topic = command.name(); + + CreateZfunction zfunction = functions.stream().findFirst().get(); + + String arguments = zfunction.arguments().stream() + .map(arg -> arg.name() + " " + arg.type()) + .collect(Collectors.joining(", ")); + + String sqlQuery = String.format(sqlFormat, topic, arguments); + + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + CreateReplySink state = new CreateReplySink(); + state.onStarted(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doFlushProxy(traceId, authorization, flushEx); + + return errorState(); + } + } + + private final class CreateReplySink implements RisingwaveMacroState + { + private final String sqlFormat = """ + CREATE SINK %s_replies_sink AS + SELECT + COALESCE(r.status, '400') AS status, + c.correlation_id + FROM %s_commands c + LEFT JOIN %s_reply_handler r + ON c.correlation_id = r.correlation_id + WITH ( + connector = 'kafka', + topic = '%s.%s_replies', + properties.bootstrap.server = '%s', + ) FORMAT PLAIN ENCODE AVRO ( + force_append_only='true', + schema.registry = '%s' + );\u0000"""; + + @Override + public void onStarted( + long traceId, + long authorization) + { + String name = command.name(); + String schema = command.schema(); + + String sqlQuery = String.format(sqlFormat, name, name, name, schema, name, bootstrapServer, schemaRegistry); + + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + InsertIntoCatalogState state = new InsertIntoCatalogState(); + state.onStarted(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + return errorState(); + } + } + + private final class InsertIntoCatalogState implements RisingwaveMacroState + { + private final String sqlFormat = """ + INSERT INTO %s.%s (name, sql) VALUES ('%s', '%s');\u0000"""; + + @Override + public void onStarted( + long traceId, + long authorization) + { + String name = command.name(); + + String newSql = sql.replace("\u0000", ""); + newSql = newSql.replaceAll("'", "''"); + String sqlQuery = String.format(sqlFormat, systemSchema, ZSTREAM_NAME, name, newSql); + + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + } + @Override public RisingwaveMacroState onCompletion( long traceId, long authorization, PgsqlFlushExFW flushEx) { - handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.CREATE_STREAM_COMMAND); + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.CREATE_ZSTREAM_COMMAND); return this; } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java index b8eae76b1d..c913127478 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java @@ -16,9 +16,12 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; +import org.agrona.collections.Object2ObjectHashMap; + import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateTable; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.TableColumn; import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; @@ -29,6 +32,13 @@ public class RisingwaveCreateZtableMacro extends RisingwaveMacroBase private static final String ZTABLE_NAME = "ztables"; private static final String TABLE_NAME = "tables"; + private static final Map ZILLA_MAPPINGS = new Object2ObjectHashMap<>(); + static + { + ZILLA_MAPPINGS.put(ZILLA_IDENTITY, "INCLUDE header 'zilla:identity' AS %s_header\n"); + ZILLA_MAPPINGS.put(ZILLA_TIMESTAMP, "INCLUDE timestamp AS %s_timestamp\n"); + } + private final String bootstrapServer; private final String schemaRegistry; private final long scanStartupMil; diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroBase.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroBase.java index 5253b4ea32..a8191c6fcd 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroBase.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveMacroBase.java @@ -14,10 +14,6 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; -import java.util.Map; - -import org.agrona.collections.Object2ObjectHashMap; - import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; public abstract class RisingwaveMacroBase @@ -25,13 +21,6 @@ public abstract class RisingwaveMacroBase protected static final String ZILLA_IDENTITY = "GENERATED ALWAYS AS IDENTITY"; protected static final String ZILLA_TIMESTAMP = "GENERATED ALWAYS AS NOW"; - protected static final Map ZILLA_MAPPINGS = new Object2ObjectHashMap<>(); - static - { - ZILLA_MAPPINGS.put(ZILLA_IDENTITY, "INCLUDE header 'zilla:identity' AS %s_header\n"); - ZILLA_MAPPINGS.put(ZILLA_TIMESTAMP, "INCLUDE timestamp AS %s_timestamp\n"); - } - protected final RisingwaveMacroHandler handler; protected final String sql; diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java index 839a92e939..83b256f061 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java @@ -19,7 +19,7 @@ public enum RisingwaveCompletionCommand UNKNOWN_COMMAND("UNKNOWN".getBytes()), CREATE_ZTABLE_COMMAND("CREATE_ZTABLE".getBytes()), CREATE_ZVIEW_COMMAND("CREATE_ZVIEW".getBytes()), - CREATE_STREAM_COMMAND("CREATE_STREAM".getBytes()), + CREATE_ZSTREAM_COMMAND("CREATE_ZSTREAM".getBytes()), CREATE_FUNCTION_COMMAND("CREATE_FUNCTION".getBytes()), CREATE_ZFUNCTION_COMMAND("CREATE_ZFUNCTION".getBytes()), ALTER_ZTABLE_COMMAND("ALTER_ZTABLE".getBytes()), 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 a1a1934e34..6dd782cd8b 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 @@ -905,14 +905,13 @@ public void doZfunctionRow( String returnType = command.returnTypes().stream() .map(arg -> arg.name() + " " + arg.type()) .collect(Collectors.joining(", ")); - String language = command.language(); RisingwaveShowZfunctionsRowFW row = zfunctionsRowRW.wrap(statementBuffer, 0, statementBuffer.capacity()) .fields((short) 5) .name(name) .arguments(arguments) .returnType(returnType) - .language(language) + .language("SQL") .build(); doAppData(client, traceId, authorization, FLAGS_COMP, diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java index 0329ca1ac8..dd9be9e887 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java @@ -62,9 +62,9 @@ public void shouldCreateZtableWithPrimaryKey() throws Exception @Test @Configuration("proxy.yaml") @Specification({ - "${pgsql}/create.stream/client", - "${effective}/create.stream/server" }) - public void shouldCreateStream() throws Exception + "${pgsql}/create.zstream/client", + "${effective}/create.zstream/server" }) + public void shouldCreateZstream() throws Exception { k3po.finish(); } From c88fb0122094b63b0cd4a5ebff7de731ea174e6e Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 24 Dec 2024 10:22:42 -0800 Subject: [PATCH 095/104] Support SHOW ZSTREAMS --- .../runtime/binding/pgsql/parser/PostgreSqlLexer.g4 | 2 ++ .../runtime/binding/pgsql/parser/PostgreSqlParser.g4 | 1 + .../streams/effective/show.zstreams/client.rpt | 2 +- .../streams/effective/show.zstreams/server.rpt | 2 +- .../risingwave/streams/pgsql/show.zstreams/client.rpt | 4 ++-- .../risingwave/streams/pgsql/show.zstreams/server.rpt | 4 ++-- .../internal/config/RisingwaveCommandType.java | 1 + .../internal/stream/RisingwaveProxyFactory.java | 1 + .../binding/risingwave/internal/stream/ProxyIT.java | 10 ++++++++++ 9 files changed, 21 insertions(+), 6 deletions(-) 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 7cb76228ae..51c8600243 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 @@ -558,6 +558,8 @@ ZFUNCTION: 'ZFUNCTION'; ZFUNCTIONS: 'ZFUNCTIONS'; +ZSTREAMS: 'ZSTREAMS'; + COMMAND_FUNCTIONS: 'command_functions'; GLOBAL: 'GLOBAL'; 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 a3070c99c1..514bec80c1 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 @@ -1680,6 +1680,7 @@ show_object_type_name | ZTABLES | ZVIEWS | ZFUNCTIONS + | ZSTREAMS ; dropstmt diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zstreams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zstreams/client.rpt index 6fd0953bac..4b9b96995b 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zstreams/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zstreams/client.rpt @@ -65,7 +65,7 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read [0x00 0x02] # Field Count - [0x00 0x00 0x00 0x06] # Length + [0x00 0x00 0x00 0x0a] # Length "app_events" # Data [0x00 0x00 0x00 0x7c] # Length "CREATE ZSTREAM app_events (\n" # Data diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zstreams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zstreams/server.rpt index 5253ed6481..2b0d29f450 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zstreams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/show.zstreams/server.rpt @@ -67,7 +67,7 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write [0x00 0x02] # Field Count - [0x00 0x00 0x00 0x06] # Length + [0x00 0x00 0x00 0x0a] # Length "app_events" # Data [0x00 0x00 0x00 0x7c] # Length "CREATE ZSTREAM app_events (\n" # Data diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/client.rpt index 3cd22e5902..063cb82996 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/client.rpt @@ -57,8 +57,8 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read [0x00 0x01] # Field Count - [0x00 0x00 0x00 0x06] # Length - [0x63 0x69 0x74 0x69 0x65 0x73] # Data + [0x00 0x00 0x00 0x0a] # Length + "app_events" # Data read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/server.rpt index 1e561ed245..6e045db89d 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/server.rpt @@ -61,8 +61,8 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write [0x00 0x01] # Field Count - [0x00 0x00 0x00 0x06] # Length - [0x63 0x69 0x74 0x69 0x65 0x73] # Data + [0x00 0x00 0x00 0x0a] # Length + "app_events" # Data write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java index 252a8c7f81..5744c2cfca 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java @@ -32,6 +32,7 @@ public enum RisingwaveCommandType DROP_STREAM_COMMAND("DROP STREAM".getBytes()), DROP_ZVIEW_COMMAND("DROP ZVIEW".getBytes()), SHOW_ZTABLES_COMMAND("SHOW ZTABLES".getBytes()), + SHOW_ZSTREAMS_COMMAND("SHOW ZSTREAMS".getBytes()), SHOW_ZVIEWS_COMMAND("SHOW ZVIEWS".getBytes()), SHOW_ZFUNCTIONS_COMMAND("SHOW ZFUNCTIONS".getBytes()), UNKNOWN_COMMAND("UNKNOWN".getBytes()); 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 6dd782cd8b..9b5bde2397 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 @@ -171,6 +171,7 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory clientTransforms.put(RisingwaveCommandType.DROP_STREAM_COMMAND, this::decodeDropStreamCommand); clientTransforms.put(RisingwaveCommandType.DROP_ZTABLE_COMMAND, this::decodeDropZtableCommand); clientTransforms.put(RisingwaveCommandType.DROP_ZVIEW_COMMAND, this::decodeDropZviewCommand); + clientTransforms.put(RisingwaveCommandType.SHOW_ZSTREAMS_COMMAND, this::decodeShowCommand); clientTransforms.put(RisingwaveCommandType.SHOW_ZTABLES_COMMAND, this::decodeShowCommand); clientTransforms.put(RisingwaveCommandType.SHOW_ZFUNCTIONS_COMMAND, this::decodeShowZfunctionCommand); clientTransforms.put(RisingwaveCommandType.UNKNOWN_COMMAND, this::decodeUnknownCommand); diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java index dd9be9e887..963cc8ee00 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java @@ -321,4 +321,14 @@ public void shouldShowZfunctions() throws Exception { k3po.finish(); } + + @Test + @Configuration("proxy.risingwave.yaml") + @Specification({ + "${pgsql}/show.zstreams/client", + "${effective}/show.zstreams/server" }) + public void shouldShowZstreams() throws Exception + { + k3po.finish(); + } } From 42221047d0ceb8fd212314b518ca7724fbe75caf Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Tue, 24 Dec 2024 13:08:38 -0800 Subject: [PATCH 096/104] Checkpoint --- .../binding/pgsql/parser/PgsqlParser.java | 2 +- .../binding/pgsql/parser/PgsqlParserTest.java | 2 +- .../effective/create.zstream/client.rpt | 14 +- .../effective/create.zstream/server.rpt | 14 +- .../streams/effective/drop.stream/client.rpt | 104 ------ .../streams/effective/drop.stream/server.rpt | 107 ------ .../streams/effective/drop.zstream/client.rpt | 305 +++++++++++++++ .../streams/effective/drop.zstream/server.rpt | 307 +++++++++++++++ .../client.rpt | 4 +- .../server.rpt | 4 +- .../{drop.stream => drop.zstream}/client.rpt | 4 +- .../{drop.stream => drop.zstream}/server.rpt | 4 +- .../client.rpt | 4 +- .../server.rpt | 4 +- .../risingwave/streams/EffectiveIT.java | 6 +- .../binding/risingwave/streams/PgsqlIT.java | 6 +- .../config/RisingwaveCommandType.java | 3 +- .../macro/RisingwaveAlterZstreamMacro.java | 97 ----- .../macro/RisingwaveCreateZstreamMacro.java | 32 +- .../macro/RisingwaveCreateZtableMacro.java | 4 +- .../macro/RisingwaveDropZstreamMacro.java | 350 +++++++++++++++++- .../stream/RisingwaveCompletionCommand.java | 3 +- .../stream/RisingwaveProxyFactory.java | 43 +-- .../risingwave/internal/stream/ProxyIT.java | 46 +-- 24 files changed, 1018 insertions(+), 451 deletions(-) delete mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt delete mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/client.rpt create mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/server.rpt rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{drop.stream => drop.zstream}/client.rpt (95%) rename incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/{drop.stream => drop.zstream}/server.rpt (95%) delete mode 100644 incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZstreamMacro.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 58f58cff91..a5582d6f17 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 @@ -111,7 +111,7 @@ public Alter parseAlterStream( return alterStreamListener.alter(); } - public CreateZstream parseCreateStream( + public CreateZstream parseCreateZstream( String sql) { parser(sql, createStreamListener); 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 6f003577c0..2a1d7625c1 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 @@ -584,7 +584,7 @@ CREATE ZSTREAM app_events ( ); """; - CreateZstream createStream = parser.parseCreateStream(sql); + CreateZstream createStream = parser.parseCreateZstream(sql); assertEquals("app_events", createStream.name()); assertEquals("event", createStream.columns().get(0).name()); diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt index fc914d8051..2119a63375 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/client.rpt @@ -108,7 +108,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SOURCE app_events_commands (*)\n" +write "CREATE SOURCE zb_catalog.app_events_commands (*)\n" "INCLUDE header 'zilla:correlation-id' VARCHAR AS correlation_id\n" "INCLUDE header 'zilla:identity' VARCHAR AS owner_id\n" "INCLUDE timestamp AS created_at\n" @@ -142,7 +142,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE MATERIALIZED VIEW send_payment_handler AS\n" +write "CREATE MATERIALIZED VIEW zb_catalog.send_payment_handler AS\n" " SELECT\n" " c.correlation_id,\n" " CASE\n" @@ -173,7 +173,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE MATERIALIZED VIEW app_events AS\n" +write "CREATE MATERIALIZED VIEW public.app_events AS\n" " SELECT * FROM send_payment_handler;" [0x00] @@ -218,7 +218,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE MATERIALIZED VIEW app_events_reply_handler AS\n" +write "CREATE MATERIALIZED VIEW zb_catalog.app_events_reply_handler AS\n" " SELECT\n" " '200' AS status,\n" " correlation_id\n" @@ -244,7 +244,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SINK app_events_replies_sink AS\n" +write "CREATE SINK zb_catalog.app_events_replies_sink AS\n" " SELECT\n" " COALESCE(r.status, '400') AS status,\n" " c.correlation_id\n" @@ -342,7 +342,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE TOPIC app_events_commands " +write "CREATE TOPIC public.app_events_commands " "(command VARCHAR, user_id VARCHAR, amount DOUBLE PRECISION);" [0x00] @@ -365,7 +365,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE TOPIC app_events_replies_sink " +write "CREATE TOPIC public.app_events_replies_sink " "(status VARCHAR, correlation_id VARCHAR);" [0x00] diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt index 2fc9560d11..23f6ee11ad 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/create.zstream/server.rpt @@ -110,7 +110,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SOURCE app_events_commands (*)\n" +read "CREATE SOURCE zb_catalog.app_events_commands (*)\n" "INCLUDE header 'zilla:correlation-id' VARCHAR AS correlation_id\n" "INCLUDE header 'zilla:identity' VARCHAR AS owner_id\n" "INCLUDE timestamp AS created_at\n" @@ -144,7 +144,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE MATERIALIZED VIEW send_payment_handler AS\n" +read "CREATE MATERIALIZED VIEW zb_catalog.send_payment_handler AS\n" " SELECT\n" " c.correlation_id,\n" " CASE\n" @@ -175,7 +175,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE MATERIALIZED VIEW app_events AS\n" +read "CREATE MATERIALIZED VIEW public.app_events AS\n" " SELECT * FROM send_payment_handler;" [0x00] @@ -220,7 +220,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE MATERIALIZED VIEW app_events_reply_handler AS\n" +read "CREATE MATERIALIZED VIEW zb_catalog.app_events_reply_handler AS\n" " SELECT\n" " '200' AS status,\n" " correlation_id\n" @@ -246,7 +246,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SINK app_events_replies_sink AS\n" +read "CREATE SINK zb_catalog.app_events_replies_sink AS\n" " SELECT\n" " COALESCE(r.status, '400') AS status,\n" " c.correlation_id\n" @@ -344,7 +344,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE TOPIC app_events_commands " +read "CREATE TOPIC public.app_events_commands " "(command VARCHAR, user_id VARCHAR, amount DOUBLE PRECISION);" [0x00] @@ -369,7 +369,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE TOPIC app_events_replies_sink " +read "CREATE TOPIC public.app_events_replies_sink " "(status VARCHAR, correlation_id VARCHAR);" [0x00] diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt deleted file mode 100644 index 9af567a8d8..0000000000 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/client.rpt +++ /dev/null @@ -1,104 +0,0 @@ -# -# Copyright 2021-2024 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. -# - -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "DROP SOURCE zb_catalog.weather;" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("DROP_SOURCE") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -connect "zilla://streams/app2" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "DROP TOPIC weather;" - [0x00] - -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("DROP_TOPIC") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt deleted file mode 100644 index f374ef1099..0000000000 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.stream/server.rpt +++ /dev/null @@ -1,107 +0,0 @@ -# -# Copyright 2021-2024 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. -# - -accept "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read await CREATE_TOPIC_COMPLETED - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "DROP SOURCE zb_catalog.weather;" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("DROP_SOURCE") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -accept "zilla://streams/app2" - option zilla:window 8192 - option zilla:transmission "duplex" - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "DROP TOPIC weather;" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("DROP_TOPIC") - .build() - .build()} - -write notify CREATE_TOPIC_COMPLETED - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} - diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/client.rpt new file mode 100644 index 0000000000..abde5a86fe --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/client.rpt @@ -0,0 +1,305 @@ +# +# Copyright 2021-2024 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. +# + +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "postgres") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "SELECT * FROM zb_catalog.zstreams WHERE name = 'app_events';" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("sql") + .tableOid(0) + .index(0) + .typeOid(20) + .length(3) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +read [0x00 0x02] # Field Count + [0x00 0x00 0x00 0x0a] # Length + "app_events" # Data + [0x00 0x00 0x01 0x4d] # Length + "CREATE ZSTREAM app_events (\n" # Data + " event VARCHAR,\n" + " user_id VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR,\n" + " owner_id VARCHAR GENERATED ALWAYS AS IDENTITY,\n" + " created_at TIMESTAMP GENERATED ALWAYS AS NOW\n" + ")\n" + "WITH (\n" + " DISPATCH_ON = 'command',\n" + " HANDLERS = (\n" + " 'RequestPayment' TO 'request_payment_handler'\n" + " )\n" + ");" + [0x00] + + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SELECT 1") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "DELETE FROM zb_catalog.zstreams WHERE name = 'app_events';" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DELETE 0 1") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "DROP SINK zb_catalog.app_events_replies_sink;" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DROP_SINK") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "DROP MATERIALIZED VIEW zb_catalog.app_events_reply_handler;" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DROP_MATERIALIZED_VIEW") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "DROP MATERIALIZED VIEW public.app_events;" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DROP_MATERIALIZED_VIEW") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "DROP MATERIALIZED VIEW zb_catalog.request_payment_handler;" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DROP_MATERIALIZED_VIEW") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "DROP SOURCE zb_catalog.app_events_commands;" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DROP_SOURCE") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +connect "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +connect "zilla://streams/app2" + option zilla:window 8192 + option zilla:transmission "duplex" + +write zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "postgres") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "DROP TOPIC public.app_events_replies_sink;" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DROP_TOPIC") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +write "DROP TOPIC public.app_events_commands;" + [0x00] + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DROP_TOPIC") + .build() + .build()} + +read advised zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/server.rpt new file mode 100644 index 0000000000..02a2243e20 --- /dev/null +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/drop.zstream/server.rpt @@ -0,0 +1,307 @@ +# +# Copyright 2021-2024 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. +# + +accept "zilla://streams/app1" + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "postgres") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "SELECT * FROM zb_catalog.zstreams WHERE name = 'app_events';" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .type() + .column() + .name("name") + .tableOid(0) + .index(0) + .typeOid(701) + .length(8) + .modifier(-1) + .format("TEXT") + .build() + .column() + .name("sql") + .tableOid(0) + .index(0) + .typeOid(20) + .length(3) + .modifier(-1) + .format("TEXT") + .build() + .build() + .build()} + +write zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .row() + .build() + .build()} +write [0x00 0x02] # Field Count + [0x00 0x00 0x00 0x0a] # Length + "app_events" # Data + [0x00 0x00 0x01 0x4d] # Length + "CREATE ZSTREAM app_events (\n" # Data + " event VARCHAR,\n" + " user_id VARCHAR,\n" + " amount DOUBLE PRECISION,\n" + " notes VARCHAR,\n" + " owner_id VARCHAR GENERATED ALWAYS AS IDENTITY,\n" + " created_at TIMESTAMP GENERATED ALWAYS AS NOW\n" + ")\n" + "WITH (\n" + " DISPATCH_ON = 'command',\n" + " HANDLERS = (\n" + " 'RequestPayment' TO 'request_payment_handler'\n" + " )\n" + ");" + [0x00] +write flush + + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("SELECT 1") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "DELETE FROM zb_catalog.zstreams WHERE name = 'app_events';" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DELETE 0 1") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "DROP SINK zb_catalog.app_events_replies_sink;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DROP_SINK") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "DROP MATERIALIZED VIEW zb_catalog.app_events_reply_handler;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DROP_MATERIALIZED_VIEW") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "DROP MATERIALIZED VIEW public.app_events;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DROP_MATERIALIZED_VIEW") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "DROP MATERIALIZED VIEW zb_catalog.request_payment_handler;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DROP_MATERIALIZED_VIEW") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "DROP SOURCE zb_catalog.app_events_commands;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DROP_SOURCE") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "zillabase") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +accept "zilla://streams/app2" + option zilla:window 8192 + option zilla:transmission "duplex" + +accepted + +read zilla:begin.ext ${pgsql:beginEx() + .typeId(zilla:id("pgsql")) + .parameter("user", "postgres") + .parameter("database", "dev") + .parameter("application_name", "psql") + .parameter("client_encoding", "UTF8") + .build()} + +connected + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "DROP TOPIC public.app_events_replies_sink;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DROP_TOPIC") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} + +read zilla:data.ext ${pgsql:dataEx() + .typeId(zilla:id("pgsql")) + .query() + .build() + .build()} +read "DROP TOPIC public.app_events_commands;" + [0x00] + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .completion() + .tag("DROP_TOPIC") + .build() + .build()} + +write advise zilla:flush ${pgsql:flushEx() + .typeId(zilla:id("pgsql")) + .ready() + .status("IDLE") + .build() + .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt index d3fc8a8516..0707991bf9 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE SOURCE IF NOT EXISTS cities (*)\n" +write "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" @@ -118,7 +118,7 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "CREATE TOPIC IF NOT EXISTS cities " - "(id VARCHAR, name VARCHAR, description VARCHAR);" + "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY(id));" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt index a26fed89d4..da8f27facc 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt @@ -36,7 +36,7 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE SOURCE IF NOT EXISTS cities (*)\n" +read "CREATE SOURCE IF NOT EXISTS cities_source (*)\n" "WITH (\n" " connector='kafka',\n" " properties.bootstrap.server='localhost:9092',\n" @@ -120,7 +120,7 @@ read zilla:data.ext ${pgsql:dataEx() .build() .build()} read "CREATE TOPIC IF NOT EXISTS cities " - "(id VARCHAR, name VARCHAR, description VARCHAR);" + "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" [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/drop.stream/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/client.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/client.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/client.rpt index 4f5f97fa98..bda4c0b3fd 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/client.rpt @@ -32,7 +32,7 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "DROP STREAM weather;" +write "DROP ZSTREAM app_events;" [0x00] write flush @@ -40,7 +40,7 @@ write flush read advised zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("DROP_STREAM") + .tag("DROP_ZSTREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/server.rpt similarity index 95% rename from incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/server.rpt rename to incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/server.rpt index fa03d1578d..0b90a76681 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.stream/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/drop.zstream/server.rpt @@ -36,13 +36,13 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "DROP STREAM weather;" +read "DROP ZSTREAM app_events;" [0x00] write advise zilla:flush ${pgsql:flushEx() .typeId(zilla:id("pgsql")) .completion() - .tag("DROP_STREAM") + .tag("DROP_ZSTREAM") .build() .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/client.rpt index 33ea204516..86fe64907f 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/client.rpt @@ -32,8 +32,8 @@ write zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -write "CREATE STREAM cities " - "(id VARCHAR, name VARCHAR, description VARCHAR);" +write "CREATE ZTABLE cities " + "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" "UPDATE weather SET id = 'SF';" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/server.rpt index dba2134d4a..d73c538046 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/server.rpt @@ -36,8 +36,8 @@ read zilla:data.ext ${pgsql:dataEx() .query() .build() .build()} -read "CREATE STREAM cities " - "(id VARCHAR, name VARCHAR, description VARCHAR);" +read "CREATE ZTABLE cities " + "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" "UPDATE weather SET id = 'SF';" [0x00] diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java index fb3e479ac6..59cf6f26b7 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java @@ -182,9 +182,9 @@ public void shouldDropZtable() throws Exception @Test @Specification({ - "${app}/drop.stream/client", - "${app}/drop.stream/server" }) - public void shouldDropStream() throws Exception + "${app}/drop.zstream/client", + "${app}/drop.zstream/server" }) + public void shouldDropZstream() throws Exception { k3po.finish(); } diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java index 4f8528e72e..19ec9f9bd5 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java @@ -182,9 +182,9 @@ public void shouldDropZtable() throws Exception @Test @Specification({ - "${app}/drop.stream/client", - "${app}/drop.stream/server" }) - public void shouldDropStream() throws Exception + "${app}/drop.zstream/client", + "${app}/drop.zstream/server" }) + public void shouldDropZstream() throws Exception { k3po.finish(); } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java index 5744c2cfca..418132314e 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/config/RisingwaveCommandType.java @@ -25,11 +25,10 @@ public enum RisingwaveCommandType CREATE_FUNCTION_COMMAND("CREATE FUNCTION".getBytes()), CREATE_ZFUNCTION_COMMAND("CREATE ZFUNCTION".getBytes()), ALTER_ZTABLE_COMMAND("ALTER ZTABLE".getBytes()), - ALTER_STREAM_COMMAND("ALTER STREAM".getBytes()), ALTER_TOPIC_COMMAND("ALTER TOPIC".getBytes()), DROP_TOPIC_COMMAND("DROP TOPIC".getBytes()), DROP_ZTABLE_COMMAND("DROP ZTABLE".getBytes()), - DROP_STREAM_COMMAND("DROP STREAM".getBytes()), + DROP_ZSTREAM_COMMAND("DROP ZSTREAM".getBytes()), DROP_ZVIEW_COMMAND("DROP ZVIEW".getBytes()), SHOW_ZTABLES_COMMAND("SHOW ZTABLES".getBytes()), SHOW_ZSTREAMS_COMMAND("SHOW ZSTREAMS".getBytes()), diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZstreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZstreamMacro.java deleted file mode 100644 index dc90a248da..0000000000 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveAlterZstreamMacro.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2021-2024 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.macro; - -import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Alter; -import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; -import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; - -public class RisingwaveAlterZstreamMacro extends RisingwaveMacroBase -{ - private final StringBuilder fieldBuilder; - private final Alter command; - - public RisingwaveAlterZstreamMacro( - String sql, - Alter command, - RisingwaveMacroHandler handler) - { - super(sql, handler); - - this.command = command; - this.fieldBuilder = new StringBuilder(); - } - - public RisingwaveMacroState start() - { - return new AlterTopicState(); - } - - private final class AlterTopicState implements RisingwaveMacroState - { - private final String sqlFormat = """ - ALTER TOPIC %s %s;\u0000"""; - private final String fieldFormat = "%s COLUMN %s %s, "; - - @Override - public void onStarted( - long traceId, - long authorization) - { - String topic = command.name(); - fieldBuilder.setLength(0); - - command.expressions() - .forEach(c -> fieldBuilder.append( - String.format(fieldFormat, c.operation().name(), c.columnName(), c.columnType()))); - - fieldBuilder.delete(fieldBuilder.length() - 2, fieldBuilder.length()); - - String sqlQuery = String.format(sqlFormat, topic, fieldBuilder); - handler.doExecuteSystemClient(traceId, authorization, sqlQuery); - } - - @Override - public RisingwaveMacroState onCompletion( - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.ALTER_STREAM_COMMAND); - return this; - } - - @Override - public RisingwaveMacroState onReady( - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - handler.doReady(traceId, authorization, sql.length()); - return null; - } - - @Override - public RisingwaveMacroState onError( - long traceId, - long authorization, - PgsqlFlushExFW flushEx) - { - handler.doFlushProxy(traceId, authorization, flushEx); - return this; - } - } - -} diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java index 8c96aa435c..d20bf63ab4 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZstreamMacro.java @@ -43,7 +43,7 @@ public class RisingwaveCreateZstreamMacro extends RisingwaveMacroBase ZILLA_MAPPINGS.put(ZILLA_TIMESTAMP, "INCLUDE timestamp AS %s"); } - private final List functions; // + private final List functions; private final String bootstrapServer; private final String schemaRegistry; @@ -164,7 +164,7 @@ public RisingwaveMacroState onError( private final class CreateSourceTopicState implements RisingwaveMacroState { private final String sqlFormat = """ - CREATE TOPIC %s_commands (%s);\u0000"""; + CREATE TOPIC %s.%s_commands (%s);\u0000"""; @Override public void onStarted( @@ -180,7 +180,7 @@ public void onStarted( .collect(Collectors.joining(", ")); String fields = "%s VARCHAR, %s".formatted(command.dispatchOn(), arguments); - String sqlQuery = String.format(sqlFormat, topic, fields); + String sqlQuery = String.format(sqlFormat, command.schema(), topic, fields); handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @@ -212,7 +212,7 @@ public RisingwaveMacroState onError( private final class CreateSourceState implements RisingwaveMacroState { private final String sqlFormat = """ - CREATE SOURCE %s_commands (*) + CREATE SOURCE %s.%s_commands (*) INCLUDE header 'zilla:correlation-id' VARCHAR AS correlation_id %s WITH ( @@ -243,7 +243,7 @@ public void onStarted( }) .collect(Collectors.joining("\n")); - String sqlQuery = String.format(sqlFormat, table, include, bootstrapServer, + String sqlQuery = String.format(sqlFormat, systemSchema, table, include, bootstrapServer, schema, table, scanStartupMil, schemaRegistry); handler.doExecuteSystemClient(traceId, authorization, sqlQuery); @@ -275,7 +275,7 @@ public RisingwaveMacroState onError( private final class CreateHandlerMaterializedViewState implements RisingwaveMacroState { private final String sqlFormat = """ - CREATE MATERIALIZED VIEW %s AS + CREATE MATERIALIZED VIEW %s.%s AS SELECT c.correlation_id, %s @@ -324,7 +324,7 @@ public void onStarted( String where = "c.%s = '%s'".formatted(command.dispatchOn(), commandName); - String sqlQuery = String.format(sqlFormat, name, columns, from, join, where); + String sqlQuery = String.format(sqlFormat, systemSchema, name, columns, from, join, where); handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @@ -361,7 +361,7 @@ public RisingwaveMacroState onError( private final class CreateStreamMaterializedViewState implements RisingwaveMacroState { private final String sqlFormat = """ - CREATE MATERIALIZED VIEW %s AS + CREATE MATERIALIZED VIEW %s.%s AS %s;\u0000"""; @Override @@ -373,7 +373,7 @@ public void onStarted( .map("SELECT * FROM %s"::formatted) .collect(Collectors.joining("UNION ALL\n")); - String sqlQuery = String.format(sqlFormat, command.name(), selects); + String sqlQuery = String.format(sqlFormat, command.schema(), command.name(), selects); handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @@ -444,7 +444,7 @@ public RisingwaveMacroState onError( private final class CreateReplyMaterializedViewState implements RisingwaveMacroState { private final String sqlFormat = """ - CREATE MATERIALIZED VIEW %s_reply_handler AS + CREATE MATERIALIZED VIEW %s.%s_reply_handler AS SELECT '200' AS status, correlation_id @@ -455,12 +455,11 @@ public void onStarted( long traceId, long authorization) { - String sqlQuery = String.format(sqlFormat, command.name(), command.schema(), command.name()); + String sqlQuery = String.format(sqlFormat, systemSchema, command.name(), command.schema(), command.name()); handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } - @Override public RisingwaveMacroState onReady( long traceId, @@ -488,7 +487,7 @@ public RisingwaveMacroState onError( private final class CreateSinkTopicState implements RisingwaveMacroState { private final String sqlFormat = """ - CREATE TOPIC %s_replies_sink (status VARCHAR, correlation_id VARCHAR);\u0000"""; + CREATE TOPIC %s.%s_replies_sink (status VARCHAR, correlation_id VARCHAR);\u0000"""; @Override public void onStarted( @@ -503,7 +502,7 @@ public void onStarted( .map(arg -> arg.name() + " " + arg.type()) .collect(Collectors.joining(", ")); - String sqlQuery = String.format(sqlFormat, topic, arguments); + String sqlQuery = String.format(sqlFormat, command.schema(), topic, arguments); handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @@ -535,7 +534,7 @@ public RisingwaveMacroState onError( private final class CreateReplySink implements RisingwaveMacroState { private final String sqlFormat = """ - CREATE SINK %s_replies_sink AS + CREATE SINK %s.%s_replies_sink AS SELECT COALESCE(r.status, '400') AS status, c.correlation_id @@ -559,7 +558,8 @@ public void onStarted( String name = command.name(); String schema = command.schema(); - String sqlQuery = String.format(sqlFormat, name, name, name, schema, name, bootstrapServer, schemaRegistry); + String sqlQuery = String.format(sqlFormat, systemSchema, name, name, name, + schema, name, bootstrapServer, schemaRegistry); handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java index c913127478..0700b90d45 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveCreateZtableMacro.java @@ -182,11 +182,11 @@ public void onStarted( { if (ZILLA_TIMESTAMP.equals(c)) { - includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c), "%s_timestamp".formatted(name))); + includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c), name)); } else { - includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c), "%s_header".formatted(name))); + includeBuilder.append(String.format(ZILLA_MAPPINGS.get(c), name)); } }); diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZstreamMacro.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZstreamMacro.java index b034701279..fed7b79f52 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZstreamMacro.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/macro/RisingwaveDropZstreamMacro.java @@ -14,36 +14,52 @@ */ package io.aklivity.zilla.runtime.binding.risingwave.internal.macro; +import java.nio.ByteOrder; +import java.util.Iterator; + +import org.agrona.DirectBuffer; + +import io.aklivity.zilla.runtime.binding.pgsql.parser.PgsqlParser; +import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZstream; import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Drop; import io.aklivity.zilla.runtime.binding.risingwave.internal.stream.RisingwaveCompletionCommand; +import io.aklivity.zilla.runtime.binding.risingwave.internal.types.OctetsFW; import io.aklivity.zilla.runtime.binding.risingwave.internal.types.stream.PgsqlFlushExFW; public class RisingwaveDropZstreamMacro extends RisingwaveMacroBase { private final String systemSchema; private final Drop command; + private final PgsqlParser parser; + + private CreateZstream createZstream; + + private String lastHandler; + private Iterator zstreamInterator; public RisingwaveDropZstreamMacro( String systemSchema, String sql, Drop command, - RisingwaveMacroHandler handler) + RisingwaveMacroHandler handler, + PgsqlParser parser) { super(sql, handler); this.systemSchema = systemSchema; this.command = command; + this.parser = parser; } public RisingwaveMacroState start() { - return new DropTopicState(); + return new SelectZstreamsCommandState(); } - private final class DropTopicState implements RisingwaveMacroState + private final class SelectZstreamsCommandState implements RisingwaveMacroState { private final String sqlFormat = """ - DROP TOPIC %s;\u0000"""; + SELECT * FROM zb_catalog.zstreams WHERE name = '%s';\u0000"""; @Override public void onStarted( @@ -51,6 +67,115 @@ public void onStarted( long authorization) { String sqlQuery = String.format(sqlFormat, command.name()); + + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onRow( + T client, + long traceId, + long authorization, + int flags, + DirectBuffer buffer, + int offset, + int limit, + OctetsFW extension) + { + int progress = offset; + + short fields = buffer.getShort(progress, ByteOrder.BIG_ENDIAN); + progress += Short.BYTES; + + assert fields == 2; + + int nameLength = buffer.getInt(progress, ByteOrder.BIG_ENDIAN); + progress += Integer.BYTES + nameLength; + + int sqlLength = buffer.getInt(progress, ByteOrder.BIG_ENDIAN); + progress += Integer.BYTES; + + String statement = buffer.getStringWithoutLengthAscii(progress, sqlLength); + + createZstream = parser.parseCreateZstream(statement); + + return this; + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + DeleteIntoCatalogState state = new DeleteIntoCatalogState(); + state.onStarted(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doFlushProxy(traceId, authorization, flushEx); + return errorState(); + } + } + + private final class DeleteIntoCatalogState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DELETE FROM %s.zstreams WHERE name = '%s';\u0000"""; + + @Override + public void onStarted( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, systemSchema, command.name()); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + DropReplySink state = new DropReplySink(); + state.onStarted(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doFlushProxy(traceId, authorization, flushEx); + return errorState(); + } + } + + private final class DropReplySink implements RisingwaveMacroState + { + private final String sqlFormat = """ + DROP SINK %s.%s_replies_sink;\u0000"""; + + @Override + public void onStarted( + long traceId, + long authorization) + { + String name = command.name(); + + String sqlQuery = String.format(sqlFormat, systemSchema, name); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @@ -60,7 +185,46 @@ public RisingwaveMacroState onReady( long authorization, PgsqlFlushExFW flushEx) { - DropSourceState state = new DropSourceState(); + DropSinkTopicState state = new DropSinkTopicState(); + state.onStarted(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + return errorState(); + } + } + + private final class DropSinkTopicState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DROP TOPIC %s.%s_replies_sink;\u0000"""; + + @Override + public void onStarted( + long traceId, + long authorization) + { + String topic = command.name(); + + String sqlQuery = String.format(sqlFormat, command.schema(), topic); + + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + DropReplyMaterializedViewState state = new DropReplyMaterializedViewState(); state.onStarted(traceId, authorization); return state; @@ -73,6 +237,138 @@ public RisingwaveMacroState onError( PgsqlFlushExFW flushEx) { handler.doFlushProxy(traceId, authorization, flushEx); + + return errorState(); + } + } + + private final class DropReplyMaterializedViewState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DROP MATERIALIZED VIEW %s.%s_reply_handler;\u0000"""; + + @Override + public void onStarted( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, systemSchema, command.name()); + + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + DropStreamMaterializedViewState state = new DropStreamMaterializedViewState(); + state.onStarted(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doFlushProxy(traceId, authorization, flushEx); + + return errorState(); + } + } + + private final class DropStreamMaterializedViewState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DROP MATERIALIZED VIEW %s.%s;\u0000"""; + + @Override + public void onStarted( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, command.schema(), command.name()); + + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + DropHandlerMaterializedViewState state = new DropHandlerMaterializedViewState(); + state.onStarted(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doFlushProxy(traceId, authorization, flushEx); + + return errorState(); + } + } + + private final class DropHandlerMaterializedViewState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DROP MATERIALIZED VIEW %s.%s;\u0000"""; + + @Override + public void onStarted( + long traceId, + long authorization) + { + if (lastHandler == null) + { + if (zstreamInterator == null) + { + zstreamInterator = createZstream.commandHandlers().values().iterator(); + } + + lastHandler = zstreamInterator.next(); + + String sqlQuery = String.format(sqlFormat, systemSchema, lastHandler); + + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + } + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + lastHandler = null; + + RisingwaveMacroState state = zstreamInterator.hasNext() + ? new DropHandlerMaterializedViewState() + : new DropSourceState(); + state.onStarted(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doFlushProxy(traceId, authorization, flushEx); + return errorState(); } } @@ -80,7 +376,7 @@ public RisingwaveMacroState onError( private final class DropSourceState implements RisingwaveMacroState { private final String sqlFormat = """ - DROP SOURCE %s.%s;\u0000"""; + DROP SOURCE %s.%s_commands;\u0000"""; @Override public void onStarted( @@ -88,6 +384,45 @@ public void onStarted( long authorization) { String sqlQuery = String.format(sqlFormat, systemSchema, command.name()); + + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); + } + + @Override + public RisingwaveMacroState onReady( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + DropSourceTopicState state = new DropSourceTopicState(); + state.onStarted(traceId, authorization); + + return state; + } + + @Override + public RisingwaveMacroState onError( + long traceId, + long authorization, + PgsqlFlushExFW flushEx) + { + handler.doFlushProxy(traceId, authorization, flushEx); + return errorState(); + } + } + + private final class DropSourceTopicState implements RisingwaveMacroState + { + private final String sqlFormat = """ + DROP TOPIC %s.%s_commands;\u0000"""; + + @Override + public void onStarted( + long traceId, + long authorization) + { + String sqlQuery = String.format(sqlFormat, command.schema(), command.name()); + handler.doExecuteSystemClient(traceId, authorization, sqlQuery); } @@ -97,7 +432,7 @@ public RisingwaveMacroState onCompletion( long authorization, PgsqlFlushExFW flushEx) { - handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.DROP_STREAM_COMMAND); + handler.doCompletion(traceId, authorization, RisingwaveCompletionCommand.DROP_ZSTREAM_COMMAND); return this; } @@ -108,6 +443,7 @@ public RisingwaveMacroState onReady( PgsqlFlushExFW flushEx) { handler.doReady(traceId, authorization, sql.length()); + return null; } diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java index 83b256f061..5158d5a6bd 100644 --- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java +++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveCompletionCommand.java @@ -23,9 +23,8 @@ public enum RisingwaveCompletionCommand CREATE_FUNCTION_COMMAND("CREATE_FUNCTION".getBytes()), CREATE_ZFUNCTION_COMMAND("CREATE_ZFUNCTION".getBytes()), ALTER_ZTABLE_COMMAND("ALTER_ZTABLE".getBytes()), - ALTER_STREAM_COMMAND("ALTER_STREAM".getBytes()), DROP_ZTABLE_COMMAND("DROP_ZTABLE".getBytes()), - DROP_STREAM_COMMAND("DROP_STREAM".getBytes()), + DROP_ZSTREAM_COMMAND("DROP_ZSTREAM".getBytes()), DROP_ZVIEW_COMMAND("DROP_ZVIEW".getBytes()), SHOW_COMMAND("SHOW_COMMAND".getBytes()); 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 9b5bde2397..a780bbd9aa 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 @@ -49,7 +49,6 @@ 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.macro.RisingwaveAlterZstreamMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveAlterZtableMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateFunctionMacro; import io.aklivity.zilla.runtime.binding.risingwave.internal.macro.RisingwaveCreateZfunctionMacro; @@ -167,12 +166,12 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory clientTransforms.put(RisingwaveCommandType.CREATE_FUNCTION_COMMAND, this::decodeCreateFunctionCommand); clientTransforms.put(RisingwaveCommandType.CREATE_ZFUNCTION_COMMAND, this::decodeCreateZfunctionCommand); clientTransforms.put(RisingwaveCommandType.ALTER_ZTABLE_COMMAND, this::decodeAlterZtableCommand); - clientTransforms.put(RisingwaveCommandType.ALTER_STREAM_COMMAND, this::decodeAlterStreamCommand); - clientTransforms.put(RisingwaveCommandType.DROP_STREAM_COMMAND, this::decodeDropStreamCommand); + clientTransforms.put(RisingwaveCommandType.DROP_ZSTREAM_COMMAND, this::decodeDropZstreamCommand); clientTransforms.put(RisingwaveCommandType.DROP_ZTABLE_COMMAND, this::decodeDropZtableCommand); clientTransforms.put(RisingwaveCommandType.DROP_ZVIEW_COMMAND, this::decodeDropZviewCommand); clientTransforms.put(RisingwaveCommandType.SHOW_ZSTREAMS_COMMAND, this::decodeShowCommand); clientTransforms.put(RisingwaveCommandType.SHOW_ZTABLES_COMMAND, this::decodeShowCommand); + clientTransforms.put(RisingwaveCommandType.SHOW_ZVIEWS_COMMAND, this::decodeShowCommand); clientTransforms.put(RisingwaveCommandType.SHOW_ZFUNCTIONS_COMMAND, this::decodeShowZfunctionCommand); clientTransforms.put(RisingwaveCommandType.UNKNOWN_COMMAND, this::decodeUnknownCommand); this.clientTransforms = clientTransforms; @@ -1720,7 +1719,7 @@ private void decodeCreateZstreamCommand( { if (server.macroState == null) { - final CreateZstream command = parser.parseCreateStream(statement); + final CreateZstream command = parser.parseCreateZstream(statement); RisingwaveBindingConfig binding = server.binding; @@ -1844,37 +1843,6 @@ private void decodeAlterZtableCommand( } } - private void decodeAlterStreamCommand( - PgsqlServer server, - long traceId, - long authorization, - String statement) - { - final Alter command = parser.parseAlterStream(statement); - - boolean supportedOperation = command.expressions().stream() - .noneMatch(c -> c.operation() != Operation.ADD); - - if (!supportedOperation) - { - decodeUnsupportedCommand(server, traceId, authorization, RisingwaveCompletionCommand.ALTER_STREAM_COMMAND, - statement, "ALTER STREAM only supports ADD"); - } - else - { - if (server.macroState == null) - { - RisingwaveAlterZstreamMacro machine = new RisingwaveAlterZstreamMacro( - statement, - command, - server.macroHandler); - server.macroState = machine.start(); - } - - server.macroState.onStarted(traceId, authorization); - } - } - private void decodeUnsupportedCommand( PgsqlServer server, long traceId, @@ -1912,7 +1880,7 @@ private void decodeDropZtableCommand( server.macroState.onStarted(traceId, authorization); } - private void decodeDropStreamCommand( + private void decodeDropZstreamCommand( PgsqlServer server, long traceId, long authorization, @@ -1927,7 +1895,8 @@ private void decodeDropStreamCommand( RisingwaveBindingConfig.INTERNAL_SCHEMA, statement, command, - server.macroHandler); + server.macroHandler, + parser); server.macroState = machine.start(); } diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java index 963cc8ee00..d65f370f72 100644 --- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java +++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java @@ -69,16 +69,6 @@ public void shouldCreateZstream() throws Exception k3po.finish(); } - @Test - @Configuration("proxy.yaml") - @Specification({ - "${pgsql}/create.streams/client", - "${effective}/create.streams/server" }) - public void shouldCreateStreams() throws Exception - { - k3po.finish(); - } - @Test @Configuration("proxy.risingwave.yaml") @Specification({ @@ -182,16 +172,6 @@ public void shouldCreateFunctionEmbedded() throws Exception k3po.finish(); } - @Test - @Configuration("proxy.yaml") - @Specification({ - "${pgsql}/create.stream.with.includes/client", - "${effective}/create.stream.with.includes/server" }) - public void shouldCreateStreamWithIncludes() throws Exception - { - k3po.finish(); - } - @Test @Configuration("proxy.yaml") @Specification({ @@ -215,9 +195,9 @@ public void shouldSetVariable() throws Exception @Test @Configuration("proxy.yaml") @Specification({ - "${pgsql}/drop.stream/client", - "${effective}/drop.stream/server" }) - public void shouldDropStream() throws Exception + "${pgsql}/drop.zstream/client", + "${effective}/drop.zstream/server" }) + public void shouldDropZstream() throws Exception { k3po.finish(); } @@ -252,16 +232,6 @@ public void shouldAlterZtableAddColumn() throws Exception k3po.finish(); } - @Test - @Configuration("proxy.yaml") - @Specification({ - "${pgsql}/alter.stream.add.column/client", - "${effective}/alter.stream.add.column/server" }) - public void shouldAlterStreamAddColumn() throws Exception - { - k3po.finish(); - } - @Test @Configuration("proxy.yaml") @Specification({ @@ -272,16 +242,6 @@ public void shouldNotAlterZtableModifyColumn() throws Exception k3po.finish(); } - @Test - @Configuration("proxy.yaml") - @Specification({ - "${pgsql}/alter.stream.modify.column.rejected/client", - "${effective}/client.stream.established/server" }) - public void shouldNotAlterStreamModifyColumn() throws Exception - { - k3po.finish(); - } - @Test @Configuration("proxy.risingwave.yaml") @Specification({ From 44b7d64e6402743b75e879948af7cff6559360f4 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Wed, 25 Dec 2024 13:55:53 -0800 Subject: [PATCH 097/104] WIP --- .../zilla/runtime/binding/pgsql/parser/PostgreSqlLexer.g4 | 4 ---- .../zilla/runtime/binding/pgsql/parser/PostgreSqlParser.g4 | 2 -- .../zilla/runtime/binding/pgsql/parser/PgsqlParser.java | 1 + 3 files changed, 1 insertion(+), 6 deletions(-) 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 51c8600243..1687947a43 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 @@ -560,8 +560,6 @@ ZFUNCTIONS: 'ZFUNCTIONS'; ZSTREAMS: 'ZSTREAMS'; -COMMAND_FUNCTIONS: 'command_functions'; - GLOBAL: 'GLOBAL'; GRANTED: 'GRANTED'; @@ -1126,8 +1124,6 @@ UESCAPE: 'UESCAPE'; VIEWS: 'VIEWS'; -HEAD: 'HEAD'; - NORMALIZE: 'NORMALIZE'; DUMP: 'DUMP'; 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 514bec80c1..ec030ab8a1 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 @@ -1676,7 +1676,6 @@ show_object_type_name | VIEWS | MATERIALIZED VIEWS | TOPICS - | HEAD | ZTABLES | ZVIEWS | ZFUNCTIONS @@ -1706,7 +1705,6 @@ object_type_any_name | TOPIC | ZSTREAM | ZVIEW - | HEAD | ZTABLE | INDEX | FOREIGN TABLE 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 a5582d6f17..a3df404fc0 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 @@ -184,6 +184,7 @@ public Token recoverInline(Parser recognizer) { InputMismatchException e = new InputMismatchException(recognizer); Token currentToken = recognizer.getCurrentToken(); + //Only for debugging System.err.println("Mismatched token: " + currentToken.getText()); throw new ParseCancellationException(e); } From a56c07a6dfc9eef817e8ce71ef12c1e4553ed431 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 26 Dec 2024 10:06:54 -0800 Subject: [PATCH 098/104] WIP --- .../zilla/runtime/binding/pgsql/parser/PostgreSqlLexer.g4 | 4 ++++ .../runtime/binding/pgsql/parser/PostgreSqlParser.g4 | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) 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 1687947a43..d510415398 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 @@ -50,6 +50,10 @@ OPEN_BRACKET: '['; CLOSE_BRACKET: ']'; +OPEN_ANGLE_BRACKET: '<'; + +CLOSE_ANGLE_BRACKET: '>'; + COMMA: ','; SEMI: ';'; 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 ec030ab8a1..e13e181572 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 @@ -93,7 +93,7 @@ stmt | createforeignserverstmt | createforeigntablestmt | createfunctionstmt - | createzfunctionstmt + |createzfunctionstmt | creategroupstmt | creatematviewstmt | createzviewstmt @@ -2053,7 +2053,7 @@ createfunctionstmt ; opt_type_parameters - : '<' type_parameters '>' + : OPEN_ANGLE_BRACKET type_parameters CLOSE_ANGLE_BRACKET | ; @@ -4492,6 +4492,8 @@ unreserved_keyword | FORWARD | FUNCTION | FUNCTIONS + | ZFUNCTION + | ZFUNCTIONS | GENERATED | GLOBAL | GRANTED @@ -4654,6 +4656,7 @@ unreserved_keyword | SYSID | SYSTEM_P | TABLES + | ZTABLES | TABLESPACE | TEMP | TEMPLATE @@ -4848,6 +4851,7 @@ from pl_gram.y, line ~2982 | SOME | SYMMETRIC | TABLE + | ZTABLE | THEN | TO | TRAILING From 767c4c193f67ac628592c38bc27464fd770ccf0e Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 26 Dec 2024 11:09:19 -0800 Subject: [PATCH 099/104] WIP --- .../runtime/binding/pgsql/parser/PostgreSqlLexer.g4 | 8 +++----- .../runtime/binding/pgsql/parser/PostgreSqlParser.g4 | 6 +++--- .../runtime/binding/pgsql/parser/PgsqlParserTest.java | 11 ----------- 3 files changed, 6 insertions(+), 19 deletions(-) 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 d510415398..67282d4061 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 @@ -40,7 +40,7 @@ options { Dollar: '$'; -ZFUNCTION_S: '$$'; +DOLLAR_DELIMITER: '$$'; OPEN_PAREN: '('; @@ -50,10 +50,6 @@ OPEN_BRACKET: '['; CLOSE_BRACKET: ']'; -OPEN_ANGLE_BRACKET: '<'; - -CLOSE_ANGLE_BRACKET: '>'; - COMMA: ','; SEMI: ';'; @@ -323,6 +319,8 @@ USER: 'USER'; USING: 'USING'; +LINK: 'LINK'; + VARIADIC: 'VARIADIC'; WHEN: 'WHEN'; 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 e13e181572..fc089dfcf8 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 @@ -93,7 +93,7 @@ stmt | createforeignserverstmt | createforeigntablestmt | createfunctionstmt - |createzfunctionstmt + | createzfunctionstmt | creategroupstmt | creatematviewstmt | createzviewstmt @@ -2043,7 +2043,7 @@ opt_nulls_order createzfunctionstmt : CREATE ZFUNCTION func_name func_args_with_defaults - RETURNS TABLE OPEN_PAREN table_func_column_list CLOSE_PAREN LANGUAGE SQL_P AS ZFUNCTION_S selectstmt SEMI ZFUNCTION_S + RETURNS TABLE OPEN_PAREN table_func_column_list CLOSE_PAREN LANGUAGE SQL_P AS DOLLAR_DELIMITER selectstmt SEMI DOLLAR_DELIMITER ; createfunctionstmt @@ -2053,7 +2053,7 @@ createfunctionstmt ; opt_type_parameters - : OPEN_ANGLE_BRACKET type_parameters CLOSE_ANGLE_BRACKET + : LT type_parameters GT | ; 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 2a1d7625c1..5a79dc3b16 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 @@ -249,17 +249,6 @@ public void shouldDropZview() assertTrue(drops.get(0).name().equals("test_materialized_view")); } - @Test - public void shouldCreateFunction() - { - String sql = "CREATE FUNCTION test_function() RETURNS INT AS $$ BEGIN RETURN 1; END $$ LANGUAGE plpgsql;"; - CreateFunction function = parser.parseCreateFunction(sql); - - assertNotNull(function); - assertEquals("test_function", function.name()); - assertEquals("INT", function.returnType()); - } - @Test public void shouldCreateFunctionWithLanguage() { From a4445976fcb2b0c06acc84f4392375b554fb1fe5 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 26 Dec 2024 11:09:48 -0800 Subject: [PATCH 100/104] WIP --- .../alter.stream.add.column/client.rpt | 79 ------------------ .../alter.stream.add.column/server.rpt | 81 ------------------- 2 files changed, 160 deletions(-) delete mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt delete mode 100644 incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt deleted file mode 100644 index 1e251dd878..0000000000 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/client.rpt +++ /dev/null @@ -1,79 +0,0 @@ -# -# Copyright 2021-2024 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. -# - -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -connect "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -connect "zilla://streams/app2" - option zilla:window 8192 - option zilla:transmission "duplex" - -write zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -write zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -write "ALTER TOPIC cities ADD COLUMN zip INT;" - [0x00] -write flush - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("ALTER_TOPIC") - .build() - .build()} - -read advised zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt deleted file mode 100644 index 71ac5af89b..0000000000 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/alter.stream.add.column/server.rpt +++ /dev/null @@ -1,81 +0,0 @@ -# -# Copyright 2021-2024 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. -# - -accept "zilla://streams/app1" - option zilla:window 8192 - option zilla:transmission "duplex" - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "zillabase") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - - -accept "zilla://streams/app2" - option zilla:window 8192 - option zilla:transmission "duplex" - -accepted - -read zilla:begin.ext ${pgsql:beginEx() - .typeId(zilla:id("pgsql")) - .parameter("user", "postgres") - .parameter("database", "dev") - .parameter("application_name", "psql") - .parameter("client_encoding", "UTF8") - .build()} - -connected - -read zilla:data.ext ${pgsql:dataEx() - .typeId(zilla:id("pgsql")) - .query() - .build() - .build()} -read "ALTER TOPIC cities ADD COLUMN zip INT;" - [0x00] - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .completion() - .tag("ALTER_TOPIC") - .build() - .build()} - -write advise zilla:flush ${pgsql:flushEx() - .typeId(zilla:id("pgsql")) - .ready() - .status("IDLE") - .build() - .build()} From 604ca6741692d51c44393d21790c1ab10d9e150d Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 26 Dec 2024 11:22:02 -0800 Subject: [PATCH 101/104] Clean up --- .../runtime/binding/pgsql/parser/PgsqlParser.java | 4 ++-- .../query.with.multiple.statements.errored/client.rpt | 2 +- .../streams/pgsql/show.zfunctions/client.rpt | 10 +++++----- .../streams/pgsql/show.zfunctions/server.rpt | 10 +++++----- .../risingwave/streams/pgsql/show.zstreams/client.rpt | 2 +- .../risingwave/streams/pgsql/show.zstreams/server.rpt | 2 +- .../specs/binding/risingwave/streams/EffectiveIT.java | 9 --------- 7 files changed, 15 insertions(+), 24 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 a3df404fc0..561d73d6e6 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 @@ -183,9 +183,9 @@ public Token recoverInline(Parser recognizer) throws RecognitionException { InputMismatchException e = new InputMismatchException(recognizer); - Token currentToken = recognizer.getCurrentToken(); //Only for debugging - System.err.println("Mismatched token: " + currentToken.getText()); + //Token currentToken = recognizer.getCurrentToken(); + //System.err.println("Mismatched token: " + currentToken.getText()); throw new ParseCancellationException(e); } } diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt index 0707991bf9..bca1b2f627 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt @@ -118,7 +118,7 @@ write zilla:data.ext ${pgsql:dataEx() .build() .build()} write "CREATE TOPIC IF NOT EXISTS cities " - "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY(id));" + "(id VARCHAR, name VARCHAR, description VARCHAR, PRIMARY KEY (id));" [0x00] write flush diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/client.rpt index 13a1585cf7..084e854178 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/client.rpt @@ -43,7 +43,7 @@ read advised zilla:flush ${pgsql:flushEx() .name("Name") .tableOid(0) .index(0) - .typeOid(701) + .typeOid(1043) .length(4) .modifier(-1) .format("TEXT") @@ -52,7 +52,7 @@ read advised zilla:flush ${pgsql:flushEx() .name("Arguments") .tableOid(0) .index(0) - .typeOid(701) + .typeOid(1043) .length(9) .modifier(-1) .format("TEXT") @@ -61,7 +61,7 @@ read advised zilla:flush ${pgsql:flushEx() .name("Return Type") .tableOid(0) .index(0) - .typeOid(701) + .typeOid(1043) .length(11) .modifier(-1) .format("TEXT") @@ -70,7 +70,7 @@ read advised zilla:flush ${pgsql:flushEx() .name("Language") .tableOid(0) .index(0) - .typeOid(701) + .typeOid(1043) .length(8) .modifier(-1) .format("TEXT") @@ -79,7 +79,7 @@ read advised zilla:flush ${pgsql:flushEx() .name("Link") .tableOid(0) .index(0) - .typeOid(701) + .typeOid(1043) .length(4) .modifier(-1) .format("TEXT") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/server.rpt index b1f0694a20..d76cfe68f9 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zfunctions/server.rpt @@ -46,7 +46,7 @@ write advise zilla:flush ${pgsql:flushEx() .name("Name") .tableOid(0) .index(0) - .typeOid(701) + .typeOid(1043) .length(4) .modifier(-1) .format("TEXT") @@ -55,7 +55,7 @@ write advise zilla:flush ${pgsql:flushEx() .name("Arguments") .tableOid(0) .index(0) - .typeOid(701) + .typeOid(1043) .length(9) .modifier(-1) .format("TEXT") @@ -64,7 +64,7 @@ write advise zilla:flush ${pgsql:flushEx() .name("Return Type") .tableOid(0) .index(0) - .typeOid(701) + .typeOid(1043) .length(11) .modifier(-1) .format("TEXT") @@ -73,7 +73,7 @@ write advise zilla:flush ${pgsql:flushEx() .name("Language") .tableOid(0) .index(0) - .typeOid(701) + .typeOid(1043) .length(8) .modifier(-1) .format("TEXT") @@ -82,7 +82,7 @@ write advise zilla:flush ${pgsql:flushEx() .name("Link") .tableOid(0) .index(0) - .typeOid(701) + .typeOid(1043) .length(4) .modifier(-1) .format("TEXT") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/client.rpt index 063cb82996..a80bf49be8 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/client.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/client.rpt @@ -43,7 +43,7 @@ read advised zilla:flush ${pgsql:flushEx() .name("Name") .tableOid(0) .index(0) - .typeOid(701) + .typeOid(1043) .length(4) .modifier(-1) .format("TEXT") diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/server.rpt index 6e045db89d..340df4d6bc 100644 --- a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/server.rpt +++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/show.zstreams/server.rpt @@ -46,7 +46,7 @@ write advise zilla:flush ${pgsql:flushEx() .name("Name") .tableOid(0) .index(0) - .typeOid(701) + .typeOid(1043) .length(4) .modifier(-1) .format("TEXT") diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java index 59cf6f26b7..a3f6049da1 100644 --- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java +++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java @@ -207,15 +207,6 @@ public void shouldAlterZtableAddColumn() throws Exception k3po.finish(); } - @Test - @Specification({ - "${app}/alter.stream.add.column/client", - "${app}/alter.stream.add.column/server" }) - public void shouldAlterStreamAddColumn() throws Exception - { - k3po.finish(); - } - @Test @Specification({ "${app}/show.zviews/client", From 491dec0b258ac7cfe284c374e9de7dfd4187ffa5 Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 26 Dec 2024 11:40:19 -0800 Subject: [PATCH 102/104] Remove error printing --- .../binding/pgsql/parser/PgsqlParser.java | 23 +++---------------- 1 file changed, 3 insertions(+), 20 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 561d73d6e6..448c097be0 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,11 +20,6 @@ import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.CharStreams; import org.antlr.v4.runtime.CommonTokenStream; -import org.antlr.v4.runtime.InputMismatchException; -import org.antlr.v4.runtime.Parser; -import org.antlr.v4.runtime.RecognitionException; -import org.antlr.v4.runtime.Token; -import org.antlr.v4.runtime.misc.ParseCancellationException; import org.antlr.v4.runtime.tree.ParseTreeWalker; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlAlterZstreamTopicListener; @@ -167,7 +162,9 @@ private void parser( tokens.setTokenSource(lexer); parser.setTokenStream(tokens); - parser.setErrorHandler(new DebuggingErrorStrategy()); + + lexer.removeErrorListeners(); + parser.removeErrorListeners(); walker.walk(listener, parser.root()); } @@ -175,18 +172,4 @@ private void parser( { } } - - private final class DebuggingErrorStrategy extends BailErrorStrategy - { - @Override - public Token recoverInline(Parser recognizer) - throws RecognitionException - { - InputMismatchException e = new InputMismatchException(recognizer); - //Only for debugging - //Token currentToken = recognizer.getCurrentToken(); - //System.err.println("Mismatched token: " + currentToken.getText()); - throw new ParseCancellationException(e); - } - } } From de5b9248c022146f37a5d43f8a6e6a12c24f178b Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 26 Dec 2024 11:53:00 -0800 Subject: [PATCH 103/104] disable logging --- .../binding/pgsql/parser/PgsqlParser.java | 64 ++++++++++++++++++- 1 file changed, 61 insertions(+), 3 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 448c097be0..c3588bdfe2 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,12 +14,19 @@ */ package io.aklivity.zilla.runtime.binding.pgsql.parser; +import java.util.BitSet; import java.util.List; +import org.antlr.v4.runtime.ANTLRErrorListener; 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.Parser; +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; import org.antlr.v4.runtime.tree.ParseTreeWalker; import io.aklivity.zilla.runtime.binding.pgsql.parser.listener.SqlAlterZstreamTopicListener; @@ -46,6 +53,7 @@ public final class PgsqlParser private final BailErrorStrategy errorStrategy; private final PostgreSqlLexer lexer; private final CommonTokenStream tokens; + private final ParserErrorListener errorListener; private final PostgreSqlParser parser; private final SqlCommandListener commandListener; private final SqlCreateZstreamListener createStreamListener; @@ -62,9 +70,12 @@ public PgsqlParser() { this.walker = new ParseTreeWalker(); this.errorStrategy = new BailErrorStrategy(); + this.errorListener = new ParserErrorListener(); this.lexer = new PostgreSqlLexer(null); this.tokens = new CommonTokenStream(lexer); this.parser = new PostgreSqlParser(tokens); + this.parser.removeErrorListeners(); + this.parser.addErrorListener(errorListener); this.commandListener = new SqlCommandListener(tokens); this.createTableListener = new SqlCreateZtableTopicListener(tokens); this.alterTableListener = new SqlAlterZtableTopicListener(tokens); @@ -163,13 +174,60 @@ private void parser( tokens.setTokenSource(lexer); parser.setTokenStream(tokens); - lexer.removeErrorListeners(); - parser.removeErrorListeners(); - walker.walk(listener, parser.root()); } catch (Exception ignore) { } } + + private final class ParserErrorListener implements ANTLRErrorListener + { + @Override + public void syntaxError( + Recognizer recognizer, + Object offendingSymbol, + int line, + int charPositionInLine, + String msg, + RecognitionException e) + { + //Only for debugging + //System.err.println("Syntax error at line " + line + ":" + charPositionInLine + " " + msg); + } + + @Override + public void reportAmbiguity( + Parser recognizer, + DFA dfa, + int startIndex, + int stopIndex, + boolean exact, + BitSet ambigAlts, + ATNConfigSet configs) + { + } + + @Override + public void reportAttemptingFullContext( + Parser recognizer, + DFA dfa, + int startIndex, + int stopIndex, + BitSet conflictingAlts, + ATNConfigSet configs) + { + } + + @Override + public void reportContextSensitivity( + Parser recognizer, + DFA dfa, + int startIndex, + int stopIndex, + int prediction, + ATNConfigSet configs) + { + } + } } From b9e7f11029fd38a837b3a07740616ade7cee5a6e Mon Sep 17 00:00:00 2001 From: Akram Yakubov Date: Thu, 26 Dec 2024 11:57:10 -0800 Subject: [PATCH 104/104] WIP --- .../zilla/runtime/binding/pgsql/parser/PgsqlParser.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 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 c3588bdfe2..34040c5f73 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 @@ -50,10 +50,8 @@ public final class PgsqlParser { private final ParseTreeWalker walker; - private final BailErrorStrategy errorStrategy; private final PostgreSqlLexer lexer; private final CommonTokenStream tokens; - private final ParserErrorListener errorListener; private final PostgreSqlParser parser; private final SqlCommandListener commandListener; private final SqlCreateZstreamListener createStreamListener; @@ -69,13 +67,15 @@ public final class PgsqlParser public PgsqlParser() { this.walker = new ParseTreeWalker(); - this.errorStrategy = new BailErrorStrategy(); - this.errorListener = new ParserErrorListener(); + BailErrorStrategy errorStrategy = new BailErrorStrategy(); + ParserErrorListener errorListener = new ParserErrorListener(); this.lexer = new PostgreSqlLexer(null); this.tokens = new CommonTokenStream(lexer); this.parser = new PostgreSqlParser(tokens); this.parser.removeErrorListeners(); this.parser.addErrorListener(errorListener); + this.parser.setErrorHandler(errorStrategy); + this.commandListener = new SqlCommandListener(tokens); this.createTableListener = new SqlCreateZtableTopicListener(tokens); this.alterTableListener = new SqlAlterZtableTopicListener(tokens); @@ -86,7 +86,6 @@ public PgsqlParser() this.createMaterializedViewListener = new SqlCreateZviewListener(tokens); this.dropListener = new SqlDropListener(); this.showListener = new SqlShowListener(); - parser.setErrorHandler(errorStrategy); } public String parseCommand(